addfile ./GLUT.conf.in adddir ./Graphics adddir ./Graphics/UI adddir ./Graphics/UI/GLUT addfile ./Graphics/UI/GLUT.hs addfile ./Graphics/UI/GLUT/Dummy.hs addfile ./LICENSE addfile ./Makefile hunk ./GLUT.conf.in 1 +Package { + name = "GLUT", +#ifdef INSTALLING + import_dirs = [ "$libdir/imports/GLUT" ], +#else + import_dirs = [ "$libdir/libraries/GLUT" ], +#endif + source_dirs = [], +#ifdef INSTALLING + library_dirs = [ "$libdir" ], +#else + library_dirs = [ "$libdir/libraries/GLUT" ], +#endif + hs_libraries = [ "HSGLUT" ], + extra_libraries = [], + include_dirs = [], + c_includes = [ "GL/glut.h" ], + package_deps = [ "OpenGL" ], + extra_ghc_opts = [], + extra_cc_opts = [ "" GL_CFLAGS ], + extra_ld_opts = [ "" GL_LIBS ] +} hunk ./Graphics/UI/GLUT/Dummy.hs 1 +module Graphics.UI.GLUT.Dummy where hunk ./Graphics/UI/GLUT.hs 1 +----------------------------------------------------------------------------- +-- +-- Module : Graphics.UI.GLUT +-- Copyright : (c) Sven Panne 2002 +-- License : BSD-style (see the file libraries/GLUT/LICENSE) +-- +-- Maintainer : sven_panne@yahoo.com +-- Stability : experimental +-- Portability : portable +-- +-- $Id: GLUT.hs,v 1.1 2002/02/24 17:18:02 panne Exp $ +-- +-- A Haskell binding for GLUT, the OpenGL Utility Toolkit, a window system +-- independent toolkit for writing OpenGL programs. +-- +----------------------------------------------------------------------------- + +module Graphics.UI.GLUT ( + module Graphics.UI.GLUT.Dummy +) where + +import Graphics.UI.GLUT.Dummy hunk ./LICENSE 1 +Copyright (c) 2002, Sven Panne +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name of the Author nor the names of its contributors may be + used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. hunk ./Makefile 1 +# ----------------------------------------------------------------------------- +# $Id: Makefile,v 1.1 2002/02/24 17:18:02 panne Exp $ + +TOP=.. +include $(TOP)/mk/boilerplate.mk + +# ----------------------------------------------------------------------------- + +ALL_DIRS = \ + Graphics/UI \ + Graphics/UI/GLUT + +PACKAGE = GLUT + +SRC_HC_OPTS += -fglasgow-exts '-\#include ' + +# yeuch, have to get GL_CFLAGS & GL_LIBS in through CPP to GLUT.conf.in +comma = , +PACKAGE_CPP_OPTS += -DGL_CFLAGS='$(patsubst %,$(comma)"%",$(GL_CFLAGS))' +PACKAGE_CPP_OPTS += -DGL_LIBS='$(patsubst %,$(comma)"%",$(GL_LIBS))' + +# ----------------------------------------------------------------------------- +# Per-module flags + +# ----------------------------------------------------------------------------- + +include $(TOP)/mk/target.mk hunk ./Makefile 2 -# $Id: Makefile,v 1.1 2002/02/24 17:18:02 panne Exp $ +# $Id: Makefile,v 1.2 2002/02/24 19:02:45 panne Exp $ hunk ./Makefile 4 -TOP=.. +TOP = .. addfile ./Graphics/UI/GLUT/Begin.hs addfile ./Graphics/UI/GLUT/Colormap.hs addfile ./Graphics/UI/GLUT/Constants.hs addfile ./Graphics/UI/GLUT/Initialization.hs addfile ./Graphics/UI/GLUT/Window.hs hunk ./Graphics/UI/GLUT/Begin.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Graphics.UI.GLUT.Begin +-- Copyright : (c) Sven Panne 2002 +-- License : BSD-style (see the file libraries/GLUT/LICENSE) +-- +-- Maintainer : sven_panne@yahoo.com +-- Stability : experimental +-- Portability : portable +-- +-- After a GLUT program has done initial setup such as creating windows and +-- menus, GLUT programs enter the GLUT event processing loop by calling +-- 'mainLoop'. +-- +----------------------------------------------------------------------------- + +module Graphics.UI.GLUT.Begin ( + -- * Functions + mainLoop +) where + +-- | Enter the GLUT event processing loop. This routine should be called at +-- most once in a GLUT program. Once called, this routine will never return. +-- It will call as necessary any callbacks that have been registered. +foreign import ccall safe "glutMainLoop" mainLoop :: IO () hunk ./Graphics/UI/GLUT/Colormap.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Graphics.UI.GLUT.Colormap +-- Copyright : (c) Sven Panne 2002 +-- License : BSD-style (see the file libraries/GLUT/LICENSE) +-- +-- Maintainer : sven_panne@yahoo.com +-- Stability : experimental +-- Portability : portable +-- +-- OpenGL supports both RGBA and color index rendering. The RGBA mode is +-- generally preferable to color index because more OpenGL rendering +-- capabilities are available and color index mode requires the loading +-- of colormap entries. +-- +-- The GLUT color index routines are used to write and read entries in a +-- window\'s color index colormap. Every GLUT color index window has its +-- own logical color index colormap. The size of a window\'s colormap can +-- be determined by calling @'get' 'WindowColormapSize'@. +-- +-- GLUT color index windows within a program can attempt to share +-- colormap resources by copying a single color index colormap to +-- multiple windows using 'copyColormap'. If possible GLUT will attempt +-- to share the actual colormap. While copying colormaps using +-- 'copyColormap' can potentially allow sharing of physical colormap +-- resources, logically each window has its own colormap. So changing a +-- copied colormap of a window will force the duplication of the +-- colormap. For this reason, color index programs should generally load +-- a single color index colormap, copy it to all color index windows +-- within the program, and then not modify any colormap cells. +-- +-- Use of multiple colormaps is likely to result in colormap installation +-- problems where some windows are displayed with an incorrect colormap +-- due to limitations on colormap resources. +-- +----------------------------------------------------------------------------- + +module Graphics.UI.GLUT.Colormap ( + -- * Functions + setColor, + getColor, + copyColormap +) where + +import Foreign.C.Types ( CInt ) +import Graphics.Rendering.OpenGL.GL.BasicTypes ( GLfloat ) +import Graphics.Rendering.OpenGL.GL.VertexSpec ( Color3(..), ColorIndex ) +import Graphics.UI.GLUT.Constants +import Graphics.UI.GLUT.Window ( Window ) +import Data.Maybe ( Maybe(..) ) -- for Haddock only + +-- | Set the cell color index colormap entry of the /current window/\'s +-- logical colormap for the /layer in use/ with the specified color. The +-- /layer in use/ of the /current window/ should be a color index window. +-- The color index should be zero or greater and less than the total +-- number of colormap entries for the window. If the /layer in use/\'s +-- colormap was copied by reference, a 'setColor' call will force the +-- duplication of the colormap. Do not attempt to set the color of an +-- overlay\'s transparent index. +setColor :: ColorIndex CInt + -> Color3 GLfloat + -> IO () +setColor cell (Color3 r g b) = glutSetColor cell r g b + +foreign import ccall unsafe "glutSetColor" glutSetColor :: + ColorIndex CInt -> GLfloat -> GLfloat -> GLfloat -> IO () + +-- | Retrieve the entry for a given color index colormap entry for the +-- /current window/\'s logical colormap. The /current window/ should be a +-- color index window. The index should be zero or greater and less than +-- the total number of colormap entries for the window. For valid color +-- indices, the value returned is 'Just' a color with floating point component +-- values between 0.0 and 1.0 inclusive. 'getColor' will return 'Nothing' +-- if the color index specified is an overlay\'s transparent index, less +-- than zero, or greater or equal to the value returned by @'get' +-- 'WindowColormapSize'@, that is if the color index is transparent or +-- outside the valid range of color indices. +getColor :: ColorIndex CInt + -> IO (Maybe (Color3 GLfloat)) +getColor cell = do + r <- glutGetColor cell glut_RED + g <- glutGetColor cell glut_GREEN + b <- glutGetColor cell glut_BLUE + return $ if r < 0.0 then Nothing else Just (Color3 r g b) + +foreign import ccall unsafe "glutGetColor" glutGetColor :: + ColorIndex CInt -> CInt -> IO GLfloat + +-- | Copy (lazily if possible to promote sharing) the logical colormap +-- from a specified window to the /current window/\'s /layer in use/. +-- The copy will be from the normal plane to the normal plane; or from +-- the overlay to the overlay (never across different layers). Once a +-- colormap has been copied, avoid setting cells in the colormap with +-- 'setColor' since that will force an actual copy of the colormap if it +-- was previously copied by reference. 'copyColormap' should only be +-- called when both the /current window/ and the specified window are +-- color index windows. +foreign import ccall unsafe "glutCopyColormap" copyColormap :: + Window -> IO () hunk ./Graphics/UI/GLUT/Constants.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Graphics.UI.GLUT.Constants +-- Copyright : (c) Sven Panne 2002 +-- License : BSD-style (see the file libraries/GLUT/LICENSE) +-- +-- Maintainer : sven_panne@yahoo.com +-- Stability : experimental +-- Portability : portable +-- +-- This purely internal module defines all numeric GLUT constants. +-- +----------------------------------------------------------------------------- + +module Graphics.UI.GLUT.Constants where + +import Foreign.C.Types ( CInt, CUInt) + +----------------------------------------------------------------------------- +-- * Display mode bit masks +glut_RGB, glut_RGBA, glut_INDEX, glut_SINGLE, glut_DOUBLE, glut_ACCUM, + glut_ALPHA, glut_DEPTH, glut_STENCIL, glut_MULTISAMPLE, glut_STEREO, + glut_LUMINANCE :: CUInt +glut_RGB = 0x0000 +glut_RGBA = glut_RGB +glut_INDEX = 0x0001 +glut_SINGLE = 0x0000 +glut_DOUBLE = 0x0002 +glut_ACCUM = 0x0004 +glut_ALPHA = 0x0008 +glut_DEPTH = 0x0010 +glut_STENCIL = 0x0020 +glut_MULTISAMPLE = 0x0080 +glut_STEREO = 0x0100 +glut_LUMINANCE = 0x0200 + +----------------------------------------------------------------------------- +-- * Mouse buttons +glut_LEFT_BUTTON, glut_MIDDLE_BUTTON, glut_RIGHT_BUTTON :: CInt +glut_LEFT_BUTTON = 0 +glut_MIDDLE_BUTTON = 1 +glut_RIGHT_BUTTON = 2 + +----------------------------------------------------------------------------- +-- * Mouse button state +glut_DOWN, glut_UP :: CInt +glut_DOWN = 0 +glut_UP = 1 + +----------------------------------------------------------------------------- +-- * Function keys +glut_KEY_F1, glut_KEY_F2, glut_KEY_F3, glut_KEY_F4, glut_KEY_F5, glut_KEY_F6, + glut_KEY_F7, glut_KEY_F8, glut_KEY_F9, glut_KEY_F10, glut_KEY_F11, + glut_KEY_F12 :: CInt +glut_KEY_F1 = 1 +glut_KEY_F2 = 2 +glut_KEY_F3 = 3 +glut_KEY_F4 = 4 +glut_KEY_F5 = 5 +glut_KEY_F6 = 6 +glut_KEY_F7 = 7 +glut_KEY_F8 = 8 +glut_KEY_F9 = 9 +glut_KEY_F10 = 10 +glut_KEY_F11 = 11 +glut_KEY_F12 = 12 + +----------------------------------------------------------------------------- +-- * Directional Keys +glut_KEY_LEFT, glut_KEY_UP, glut_KEY_RIGHT, glut_KEY_DOWN, glut_KEY_PAGE_UP, + glut_KEY_PAGE_DOWN, glut_KEY_HOME, glut_KEY_END, glut_KEY_INSERT :: CInt +glut_KEY_LEFT = 100 +glut_KEY_UP = 101 +glut_KEY_RIGHT = 102 +glut_KEY_DOWN = 103 +glut_KEY_PAGE_UP = 104 +glut_KEY_PAGE_DOWN = 105 +glut_KEY_HOME = 106 +glut_KEY_END = 107 +glut_KEY_INSERT = 108 + +----------------------------------------------------------------------------- +-- * Entry\/exit state +glut_LEFT, glut_ENTERED :: CInt +glut_LEFT = 0 +glut_ENTERED = 1 + +----------------------------------------------------------------------------- +-- * Menu usage state +glut_MENU_NOT_IN_USE, glut_MENU_IN_USE :: CInt +glut_MENU_NOT_IN_USE = 0 +glut_MENU_IN_USE = 1 + +----------------------------------------------------------------------------- +-- * Visibility state +glut_NOT_VISIBLE, glut_VISIBLE :: CInt +glut_NOT_VISIBLE = 0 +glut_VISIBLE = 1 + +----------------------------------------------------------------------------- +-- * Window status state +glut_HIDDEN, glut_FULLY_RETAINED, glut_PARTIALLY_RETAINED, + glut_FULLY_COVERED :: CInt +glut_HIDDEN = 0 +glut_FULLY_RETAINED = 1 +glut_PARTIALLY_RETAINED = 2 +glut_FULLY_COVERED = 3 + +----------------------------------------------------------------------------- +-- * Color index component selection values +glut_RED, glut_GREEN, glut_BLUE :: CInt +glut_RED = 0 +glut_GREEN = 1 +glut_BLUE = 2 + +----------------------------------------------------------------------------- +-- * Layers in use +glut_NORMAL, glut_OVERLAY :: CInt +glut_NORMAL = 0 +glut_OVERLAY = 1 + +----------------------------------------------------------------------------- +-- * @glutGet@ parameters + +glut_WINDOW_X, glut_WINDOW_Y, glut_WINDOW_WIDTH, glut_WINDOW_HEIGHT, + glut_WINDOW_BUFFER_SIZE, glut_WINDOW_STENCIL_SIZE, glut_WINDOW_DEPTH_SIZE, + glut_WINDOW_RED_SIZE, glut_WINDOW_GREEN_SIZE, glut_WINDOW_BLUE_SIZE, + glut_WINDOW_ALPHA_SIZE, glut_WINDOW_ACCUM_RED_SIZE, + glut_WINDOW_ACCUM_GREEN_SIZE, glut_WINDOW_ACCUM_BLUE_SIZE, + glut_WINDOW_ACCUM_ALPHA_SIZE, glut_WINDOW_DOUBLEBUFFER, glut_WINDOW_RGBA, + glut_WINDOW_PARENT, glut_WINDOW_NUM_CHILDREN, glut_WINDOW_COLORMAP_SIZE, + glut_WINDOW_NUM_SAMPLES, glut_WINDOW_STEREO, glut_WINDOW_CURSOR, + glut_SCREEN_WIDTH, glut_SCREEN_HEIGHT, glut_SCREEN_WIDTH_MM, + glut_SCREEN_HEIGHT_MM, glut_MENU_NUM_ITEMS, glut_DISPLAY_MODE_POSSIBLE, + glut_INIT_WINDOW_X, glut_INIT_WINDOW_Y, glut_INIT_WINDOW_WIDTH, + glut_INIT_WINDOW_HEIGHT, glut_INIT_DISPLAY_MODE, glut_ELAPSED_TIME, + glut_WINDOW_FORMAT_ID :: CInt +glut_WINDOW_X = 100 +glut_WINDOW_Y = 101 +glut_WINDOW_WIDTH = 102 +glut_WINDOW_HEIGHT = 103 +glut_WINDOW_BUFFER_SIZE = 104 +glut_WINDOW_STENCIL_SIZE = 105 +glut_WINDOW_DEPTH_SIZE = 106 +glut_WINDOW_RED_SIZE = 107 +glut_WINDOW_GREEN_SIZE = 108 +glut_WINDOW_BLUE_SIZE = 109 +glut_WINDOW_ALPHA_SIZE = 110 +glut_WINDOW_ACCUM_RED_SIZE = 111 +glut_WINDOW_ACCUM_GREEN_SIZE = 112 +glut_WINDOW_ACCUM_BLUE_SIZE = 113 +glut_WINDOW_ACCUM_ALPHA_SIZE = 114 +glut_WINDOW_DOUBLEBUFFER = 115 +glut_WINDOW_RGBA = 116 +glut_WINDOW_PARENT = 117 +glut_WINDOW_NUM_CHILDREN = 118 +glut_WINDOW_COLORMAP_SIZE = 119 +glut_WINDOW_NUM_SAMPLES = 120 +glut_WINDOW_STEREO = 121 +glut_WINDOW_CURSOR = 122 +glut_SCREEN_WIDTH = 200 +glut_SCREEN_HEIGHT = 201 +glut_SCREEN_WIDTH_MM = 202 +glut_SCREEN_HEIGHT_MM = 203 +glut_MENU_NUM_ITEMS = 300 +glut_DISPLAY_MODE_POSSIBLE = 400 +glut_INIT_WINDOW_X = 500 +glut_INIT_WINDOW_Y = 501 +glut_INIT_WINDOW_WIDTH = 502 +glut_INIT_WINDOW_HEIGHT = 503 +glut_INIT_DISPLAY_MODE = 504 +glut_ELAPSED_TIME = 700 +glut_WINDOW_FORMAT_ID = 123 + +----------------------------------------------------------------------------- +-- * @glutDeviceGet@ parameters +glut_HAS_KEYBOARD, glut_HAS_MOUSE, glut_HAS_SPACEBALL, + glut_HAS_DIAL_AND_BUTTON_BOX, glut_HAS_TABLET, glut_NUM_MOUSE_BUTTONS, + glut_NUM_SPACEBALL_BUTTONS, glut_NUM_BUTTON_BOX_BUTTONS, glut_NUM_DIALS, + glut_NUM_TABLET_BUTTONS, glut_DEVICE_IGNORE_KEY_REPEAT, + glut_DEVICE_KEY_REPEAT, glut_HAS_JOYSTICK, glut_OWNS_JOYSTICK, + glut_JOYSTICK_BUTTONS, glut_JOYSTICK_AXES, glut_JOYSTICK_POLL_RATE :: CInt +glut_HAS_KEYBOARD = 600 +glut_HAS_MOUSE = 601 +glut_HAS_SPACEBALL = 602 +glut_HAS_DIAL_AND_BUTTON_BOX = 603 +glut_HAS_TABLET = 604 +glut_NUM_MOUSE_BUTTONS = 605 +glut_NUM_SPACEBALL_BUTTONS = 606 +glut_NUM_BUTTON_BOX_BUTTONS = 607 +glut_NUM_DIALS = 608 +glut_NUM_TABLET_BUTTONS = 609 +glut_DEVICE_IGNORE_KEY_REPEAT = 610 +glut_DEVICE_KEY_REPEAT = 611 +glut_HAS_JOYSTICK = 612 +glut_OWNS_JOYSTICK = 613 +glut_JOYSTICK_BUTTONS = 614 +glut_JOYSTICK_AXES = 615 +glut_JOYSTICK_POLL_RATE = 616 + +----------------------------------------------------------------------------- +-- * @glutLayerGet@ parameters +glut_OVERLAY_POSSIBLE, glut_LAYER_IN_USE, glut_HAS_OVERLAY, + glut_TRANSPARENT_INDEX, glut_NORMAL_DAMAGED, glut_OVERLAY_DAMAGED :: CInt + +glut_OVERLAY_POSSIBLE = 800 +glut_LAYER_IN_USE = 801 +glut_HAS_OVERLAY = 802 +glut_TRANSPARENT_INDEX = 803 +glut_NORMAL_DAMAGED = 804 +glut_OVERLAY_DAMAGED = 805 + +----------------------------------------------------------------------------- +-- * @glutVideoResizeGet@ parameters +glut_VIDEO_RESIZE_POSSIBLE, glut_VIDEO_RESIZE_IN_USE, + glut_VIDEO_RESIZE_X_DELTA, glut_VIDEO_RESIZE_Y_DELTA, + glut_VIDEO_RESIZE_WIDTH_DELTA, glut_VIDEO_RESIZE_HEIGHT_DELTA, + glut_VIDEO_RESIZE_X, glut_VIDEO_RESIZE_Y, glut_VIDEO_RESIZE_WIDTH, + glut_VIDEO_RESIZE_HEIGHT :: CInt +glut_VIDEO_RESIZE_POSSIBLE = 900 +glut_VIDEO_RESIZE_IN_USE = 901 +glut_VIDEO_RESIZE_X_DELTA = 902 +glut_VIDEO_RESIZE_Y_DELTA = 903 +glut_VIDEO_RESIZE_WIDTH_DELTA = 904 +glut_VIDEO_RESIZE_HEIGHT_DELTA = 905 +glut_VIDEO_RESIZE_X = 906 +glut_VIDEO_RESIZE_Y = 907 +glut_VIDEO_RESIZE_WIDTH = 908 +glut_VIDEO_RESIZE_HEIGHT = 909 + +----------------------------------------------------------------------------- +-- * @glutGetModifiers@ return mask +glut_ACTIVE_SHIFT, glut_ACTIVE_CTRL, glut_ACTIVE_ALT :: CInt +glut_ACTIVE_SHIFT = 0x01 +glut_ACTIVE_CTRL = 0x02 +glut_ACTIVE_ALT = 0x04 + +----------------------------------------------------------------------------- +-- * @glutSetCursor@ parameters +glut_CURSOR_RIGHT_ARROW, glut_CURSOR_LEFT_ARROW, glut_CURSOR_INFO, + glut_CURSOR_DESTROY, glut_CURSOR_HELP, glut_CURSOR_CYCLE, + glut_CURSOR_SPRAY, glut_CURSOR_WAIT, glut_CURSOR_TEXT, + glut_CURSOR_CROSSHAIR, glut_CURSOR_UP_DOWN, glut_CURSOR_LEFT_RIGHT, + glut_CURSOR_TOP_SIDE, glut_CURSOR_BOTTOM_SIDE, glut_CURSOR_LEFT_SIDE, + glut_CURSOR_RIGHT_SIDE, glut_CURSOR_TOP_LEFT_CORNER, + glut_CURSOR_TOP_RIGHT_CORNER, glut_CURSOR_BOTTOM_RIGHT_CORNER, + glut_CURSOR_BOTTOM_LEFT_CORNER, glut_CURSOR_INHERIT, glut_CURSOR_NONE, + glut_CURSOR_FULL_CROSSHAIR :: CInt +glut_CURSOR_RIGHT_ARROW = 0 +glut_CURSOR_LEFT_ARROW = 1 +glut_CURSOR_INFO = 2 +glut_CURSOR_DESTROY = 3 +glut_CURSOR_HELP = 4 +glut_CURSOR_CYCLE = 5 +glut_CURSOR_SPRAY = 6 +glut_CURSOR_WAIT = 7 +glut_CURSOR_TEXT = 8 +glut_CURSOR_CROSSHAIR = 9 +glut_CURSOR_UP_DOWN = 10 +glut_CURSOR_LEFT_RIGHT = 11 +glut_CURSOR_TOP_SIDE = 12 +glut_CURSOR_BOTTOM_SIDE = 13 +glut_CURSOR_LEFT_SIDE = 14 +glut_CURSOR_RIGHT_SIDE = 15 +glut_CURSOR_TOP_LEFT_CORNER = 16 +glut_CURSOR_TOP_RIGHT_CORNER = 17 +glut_CURSOR_BOTTOM_RIGHT_CORNER = 18 +glut_CURSOR_BOTTOM_LEFT_CORNER = 19 +glut_CURSOR_INHERIT = 100 +glut_CURSOR_NONE = 101 +glut_CURSOR_FULL_CROSSHAIR = 102 + +----------------------------------------------------------------------------- +-- * @glutSetKeyRepeat@ modes +glut_KEY_REPEAT_OFF, glut_KEY_REPEAT_ON, glut_KEY_REPEAT_DEFAULT :: CInt +glut_KEY_REPEAT_OFF = 0 +glut_KEY_REPEAT_ON = 1 +glut_KEY_REPEAT_DEFAULT = 2 + +----------------------------------------------------------------------------- +-- * Joystick button masks +glut_JOYSTICK_BUTTON_A, glut_JOYSTICK_BUTTON_B, glut_JOYSTICK_BUTTON_C, + glut_JOYSTICK_BUTTON_D :: CUInt +glut_JOYSTICK_BUTTON_A = 0x01 +glut_JOYSTICK_BUTTON_B = 0x02 +glut_JOYSTICK_BUTTON_C = 0x04 +glut_JOYSTICK_BUTTON_D = 0x08 + +----------------------------------------------------------------------------- +-- @glutGameModeGet@ parameters +glut_GAME_MODE_ACTIVE, glut_GAME_MODE_POSSIBLE, glut_GAME_MODE_WIDTH, + glut_GAME_MODE_HEIGHT, glut_GAME_MODE_PIXEL_DEPTH, + glut_GAME_MODE_REFRESH_RATE, glut_GAME_MODE_DISPLAY_CHANGED :: CInt +glut_GAME_MODE_ACTIVE = 0 +glut_GAME_MODE_POSSIBLE = 1 +glut_GAME_MODE_WIDTH = 2 +glut_GAME_MODE_HEIGHT = 3 +glut_GAME_MODE_PIXEL_DEPTH = 4 +glut_GAME_MODE_REFRESH_RATE = 5 +glut_GAME_MODE_DISPLAY_CHANGED = 6 hunk ./Graphics/UI/GLUT/Dummy.hs 1 -module Graphics.UI.GLUT.Dummy where rmfile ./Graphics/UI/GLUT/Dummy.hs hunk ./Graphics/UI/GLUT/Initialization.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Graphics.UI.GLUT.Initialization +-- Copyright : (c) Sven Panne 2002 +-- License : BSD-style (see the file libraries/GLUT/LICENSE) +-- +-- Maintainer : sven_panne@yahoo.com +-- Stability : experimental +-- Portability : portable +-- +-- Actions beginning with the @init@ prefix are used to initialize GLUT +-- state. The primary initialization routine is 'init' that should only be +-- called exactly once in a GLUT program. No non-@init@-prefixed GLUT or +-- OpenGL actions should be called before 'init'. +-- +-- The other @init@-actions may be called before 'init'. The reason is these +-- actions can be used to set default window initialization state that might +-- be modified by the command processing done in 'init'. For example, +-- @'initWindowSize' ('WindowSize' 400 400)@ can be called before 'init' to +-- indicate 400 by 400 is the program\'s default window size. Setting the +-- initial window size or position before 'init' allows the GLUT program user +-- to specify the initial size or position using command line arguments. +-- +----------------------------------------------------------------------------- + +module Graphics.UI.GLUT.Initialization ( + -- * Primary initialization + init, initArgs, + + -- * Setting the initial window geometry + WindowPosition(..), initWindowPosition, + WindowSize(..), initWindowSize, + + -- * Setting the initial window mode + DisplayMode(..), initDisplayMode, initDisplayString +) where + +import Prelude hiding ( init ) +import Data.Bits ( Bits((.|.)) ) +import Data.List ( genericLength, intersperse ) +import Foreign.C.String ( CString, withCString, peekCString ) +import Foreign.C.Types ( CInt, CUInt ) +import Foreign.Marshal.Array ( withArray0, peekArray ) +import Foreign.Marshal.Utils ( withObject, withMany ) +import Foreign.Ptr ( Ptr, nullPtr ) +import Foreign.Storable ( Storable(..) ) +import System.Environment ( getProgName, getArgs ) +import Graphics.UI.GLUT.Constants + +----------------------------------------------------------------------------- +-- | Given the program name and command line arguments, initialize the GLUT +-- library and negotiate a session with the window system. During this +-- process, 'init' may cause the termination of the GLUT program with an +-- error message to the user if GLUT cannot be properly initialized. +-- Examples of this situation include the failure to connect to the window +-- system, the lack of window system support for OpenGL, and invalid command +-- line options. +-- +-- 'init' also processes command line options, but the specific options +-- parsed are window system dependent. Any command line arguments which are +-- not GLUT-specific are returned. +-- +-- X Implementation Notes: The X Window System specific options parsed by +-- 'init' are as follows: +-- +-- * @-display /DISPLAY/@: Specify the X server to connect to. If not specified, +-- the value of the @DISPLAY@ environment variable is used. +-- +-- * @-geometry /WxH+X+Y/@: Determines where windows should be created on the +-- screen. The parameter following @-geometry@ should be formatted as a +-- standard X geometry specification. The effect of using this option is to +-- change the GLUT initial size and initial position the same as if +-- 'initWindowSize' or 'initWindowPosition' were called directly. +-- +-- * @-iconic@: Requests all top-level windows be created in an iconic state. +-- +-- * @-indirect@: Force the use of indirect OpenGL rendering contexts. +-- +-- * @-direct@: Force the use of direct OpenGL rendering contexts (not all GLX +-- implementations support direct rendering contexts). A fatal error is +-- generated if direct rendering is not supported by the OpenGL +-- implementation. If neither @-indirect@ or @-direct@ are used to force a +-- particular behavior, GLUT will attempt to use direct rendering if +-- possible and otherwise fallback to indirect rendering. +-- +-- * @-gldebug@: After processing callbacks and\/or events, check if there +-- are any OpenGL errors by calling 'getError'. If an error is reported, +-- print out a warning by looking up the error code with 'errorString'. +-- Using this option is helpful in detecting OpenGL run-time errors. +-- +-- * @-sync@: Enable synchronous X protocol transactions. This option makes +-- it easier to track down potential X protocol errors. + +init :: String -- @ The program name. + -> [String] -- @ The command line arguments + -> IO [String] -- @ Non-GLUT command line arguments +init prog args = + withObject (1 + genericLength args) $ \argcBuf -> + withMany withCString (prog : args) $ \argvPtrs -> + withArray0 nullPtr argvPtrs $ \argvBuf -> do + glutInit argcBuf argvBuf + newArgc <- peek argcBuf + newArgvPtrs <- peekArray (fromIntegral newArgc) argvBuf + newArgv <- mapM peekCString argvPtrs + return $ tail newArgv + +foreign import ccall unsafe "glutInit" glutInit :: + Ptr CInt -> Ptr CString -> IO () + +-- | Convenience action: Initialize GLUT, returning the program name and any +-- non-GLUT command line arguments. + +initArgs :: IO (String, [String]) +initArgs = do + prog <- getProgName + args <- getArgs + nonGLUTArgs <- init prog args + return (prog, nonGLUTArgs) + +----------------------------------------------------------------------------- + +-- | Window position, measured in pixels. +data WindowPosition = WindowPosition CInt CInt + +-- | Set the /initial window position/. Windows created by +-- 'Graphics.UI.GLUT.Window.createWindow' will be requested to be created with +-- the current /initial window position/. The initial value of the /initial +-- window position/ GLUT state is @'WindowPosition' (-1) (-1)@. If either the +-- X or Y component of the /initial window position/ is negative, the actual +-- window position is left to the window system to determine. +-- +-- The intent of the /initial window position/ is to provide a suggestion to +-- the window system for a window\'s initial position. The window system is +-- not obligated to use this information. Therefore, GLUT programs should not +-- assume the window was created at the specified position. + +initWindowPosition :: WindowPosition -> IO () +initWindowPosition (WindowPosition x y) = glutInitWindowPosition x y + +foreign import ccall unsafe "glutInitWindowPosition" glutInitWindowPosition + :: CInt -> CInt -> IO () + +-- | Window size, measured in pixels. +data WindowSize = WindowSize CInt CInt + +-- | Set the /initial window size/. Windows created by +-- 'Graphics.UI.GLUT.Window.createWindow' will be requested to be created with +-- the current /initial window size/. The initial value of the /initial window +-- size/ GLUT state is @'WindowPosition' 300 300@. The /initial window size/ +-- components must be greater than zero. +-- +-- The intent of the /initial window size/ is to provide a suggestion to the +-- window system for a window\'s initial size. The window system is not +-- obligated to use this information. Therefore, GLUT programs should not +-- assume the window was created at the specified size. A GLUT program should +-- use the window\'s reshape callback to determine the true size of the +-- window. + +initWindowSize :: WindowSize -> IO () +initWindowSize (WindowSize w h) = glutInitWindowSize w h + +foreign import ccall unsafe "glutInitWindowSize" glutInitWindowSize :: + CInt -> CInt -> IO () + +----------------------------------------------------------------------------- + +-- | A single aspect of a window which is to be created. +data DisplayMode + = Rgba -- ^ Select an RGBA mode window. This is the default if neither 'Rgba' nor 'Index' are specified. + | Rgb -- ^ An alias for 'Rgba'. + | Index -- ^ Select a color index mode window. This overrides 'Rgba' if it is also specified. + | Single -- ^ Select a single buffered window. This is the default if neither 'Double' nor 'Single' are specified. + | Double -- ^ Select a double buffered window. This overrides 'Single' if it is also specified. + | Accum -- ^ Select a window with an accumulation buffer. + | Alpha -- ^ Select a window with an alpha component to the color buffer(s). + | Depth -- ^ Select a window with a depth buffer. + | Stencil -- ^ Select a window with a stencil buffer. + | Multisample -- ^ Select a window with multisampling support. If multisampling is not available, a non-multisampling + -- window will automatically be chosen. Note: both the OpenGL client-side and server-side implementations + -- must support the @GLX_SAMPLE_SGIS@ extension for multisampling to be available. + | Stereo -- ^ Select A Stereo Window. + | Luminance -- ^ Select a window with a \"luminance\" color model. This model provides the functionality of OpenGL\'s + -- RGBA color model, but the green and blue components are not maintained in the frame buffer. Instead + -- each pixel\'s red component is converted to an index between zero and @'get' 'WindowColormapSize' -1@ + -- and looked up in a per-window color map to determine the color of pixels within the window. The initial + -- colormap of 'Luminance' windows is initialized to be a linear gray ramp, but can be modified with GLUT\'s + -- colormap actions. Implementation Notes: 'Luminance' is not supported on most OpenGL platforms. + deriving ( Eq, Ord ) + +marshalDisplayMode :: DisplayMode -> CUInt +marshalDisplayMode m = case m of + Rgba -> glut_RGBA + Rgb -> glut_RGB + Index -> glut_INDEX + Single -> glut_SINGLE + Double -> glut_DOUBLE + Accum -> glut_ACCUM + Alpha -> glut_ALPHA + Depth -> glut_DEPTH + Stencil -> glut_STENCIL + Multisample -> glut_MULTISAMPLE + Stereo -> glut_STEREO + Luminance -> glut_LUMINANCE + +-- | Set the /initial display mode/ used when creating top-level windows, +-- subwindows, and overlays to determine the OpenGL display mode for the +-- to-be-created window or overlay. +-- +-- Note that 'Rgba' selects the RGBA color model, but it does not request any +-- bits of alpha (sometimes called an /alpha buffer/ or /destination alpha/) +-- be allocated. To request alpha, specify 'Alpha'. The same applies to +-- 'Luminance'. + +initDisplayMode :: [DisplayMode] -> IO () +initDisplayMode = glutInitDisplayMode . toBitfield marshalDisplayMode + +toBitfield :: (Bits b) => (a -> b) -> [a] -> b +toBitfield marshal = foldl (.|.) 0 . map marshal + +foreign import ccall unsafe "glutInitDisplayMode" glutInitDisplayMode :: + CUInt -> IO () + +-- | Set the /initial display mode description string/. It is used when +-- creating top-level windows, subwindows, and overlays to determine the +-- OpenGL display mode for the to-be-created window or overlay. The string is +-- a list of zero or more capability descriptions separated by spaces and +-- tabs. Each capability description is a capability name that is optionally +-- followed by a comparator and a numeric value. For example, @\"double\"@ +-- and @\"depth>=12\"@ are both valid criteria. The capability descriptions +-- are translated into a set of criteria used to select the appropriate frame +-- buffer configuration. The criteria are matched in strict left to right +-- order of precdence. That is, the first specified criteria (leftmost) takes +-- precedence over the later criteria for non-exact criteria (greater than, +-- less than, etc. comparators). Exact criteria (equal, not equal +-- comparators) must match exactly so precedence is not relevant. The numeric +-- value is an integer that is parsed according to ANSI C\'s @strtol@ +-- behavior. This means that decimal, octal (leading @0@), and hexadecimal +-- values (leading @0x@) are accepeted. The valid comparators are: +-- +-- * @=@: Equal. +-- +-- * @!=@: Not equal. +-- +-- * @\<@: Less than and preferring larger difference (the least is best). +-- +-- * @>@: Greater than and preferring larger differences (the most is best). +-- +-- * @\<=@: Less than or equal and preferring larger difference (the least is +-- best). +-- +-- * @>=@: Greater than or equal and preferring more instead of less. This +-- comparator is useful for allocating resources like color precision or +-- depth buffer precision where the maximum precision is generally +-- preferred. Contrast with the tilde (@~@) comparator. +-- +-- * @~@: Greater than or equal but preferring less instead of more. This +-- comparator is useful for allocating resources such as stencil bits or +-- auxillary color buffers where you would rather not over-allocate. When +-- the comparator and numeric value are not specified, each capability name +-- has a different default (one default is to require a a comparator and +-- numeric value). +-- +-- The valid capability names are: +-- +-- * @rgba@: Number of bits of red, green, blue, and alpha in the RGBA color +-- buffer. Default is @\">=1\"@ for red, green, blue, and alpha +-- capabilities, and @\"=1\"@ for the RGBA color model capability. +-- +-- * @rgb@: Number of bits of red, green, and blue in the RGBA color buffer +-- and zero bits of alpha color buffer precision. Default is @\">=1\"@ for +-- the red, green, and blue capabilities, and @\"~0\"@ for alpha +-- capability, and @\"=1\"@ for the RGBA color model capability. +-- +-- * @red@: Red color buffer precision in bits. Default is @\">=1\"@. +-- +-- * @green@: Green color buffer precision in bits. Default is @\">=1\"@. +-- +-- * @blue@: Blue color buffer precision in bits. Default is @\">=1\"@. +-- +-- * @alpha@: Alpha color buffer precision in bits. Default is @\">=1\"@. +-- +-- * @index@: Boolean if the color model is color index or not. True is color +-- index. Default is @\">=1\"@. +-- +-- * @buffer@: Number of bits in the color index color buffer. Default is +-- @\">=1\"@. +-- +-- * @acca@: Red, green, blue, and alpha accumulation buffer precision in +-- bits. Default is @\">=1\"@ for red, green, blue, and alpha capabilities. +-- +-- * @acc@: Red, green, and green accumulation buffer precision in bits and +-- zero bits of alpha accumulation buffer precision. Default is @\">=1\"@ +-- for red, green, and blue capabilities, and @\"~0\"@ for the alpha +-- capability. +-- +-- * @depth@: Number of bits of precsion in the depth buffer. Default is +-- @\">=12\"@. +-- +-- * @stencil@: Number of bits in the stencil buffer. +-- +-- * @luminance@: Number of bits of red in the RGBA and zero bits of green, +-- blue (alpha not specified) of color buffer precision. Default is +-- @\">=1\" for the red capabilitis, and @\"=0\" for the green and blue +-- capabilities, and @\"=1\" for the RGBA color model capability, and, for +-- X11, @\"=1\" for the @StaticGray@ (@\"xstaticgray\"@) capability. SGI +-- InfiniteReality (and other future machines) support a 16-bit luminance +-- (single channel) display mode (an additional 16-bit alpha channel can +-- also be requested). The red channel maps to gray scale and green and +-- blue channels are not available. A 16-bit precision luminance display +-- mode is often appropriate for medical imaging applications. Do not +-- expect many machines to support extended precision luminance display +-- modes. +-- +-- * @single@: Boolean indicate the color buffer is single buffered. Double +-- buffer capability @\"=1\"@. +-- +-- * @double@: Boolean indicating if the color buffer is double buffered. +-- Default is @\"=1\"@. +-- +-- * @stereo@: Boolean indicating the color buffer is supports OpenGL-style +-- stereo. Default is @\"=1\"@. +-- +-- * @samples@: Indicates the number of multisamples to use based on GLX\'s +-- @SGIS_multisample@ extension (for antialiasing). Default is @\"\<=4\"@. +-- This default means that a GLUT application can request multisampling if +-- available by simply specifying @\"samples\"@. +-- +-- * @num@: A special capability name indicating where the value represents +-- the Nth frame buffer configuration matching the description string. When +-- not specified, 'initDisplayString' also returns the first (best +-- matching) configuration. @num@ requires a comparator and numeric value. +-- +-- * @conformant@: Boolean indicating if the frame buffer configuration is +-- conformant or not. Conformance information is based on GLX\'s +-- @EXT_visual_rating@ extension if supported. If the extension is not +-- supported, all visuals are assumed conformat. Default is @\"=1\"@. +-- +-- * @slow@: Boolean indicating if the frame buffer configuration is slow or +-- not. Slowness information is based on GLX\'s @EXT_visual_rating@ +-- extension if supported. If the extension is not supported, all visuals +-- are assumed fast. Note that slowness is a relative designation relative +-- to other frame buffer configurations available. The intent of the slow +-- capability is to help programs avoid frame buffer configurations that +-- are slower (but perhaps higher precision) for the current machine. +-- Default is @\">=0\"@. This default means that slow visuals are used in +-- preference to fast visuals, but fast visuals will still be allowed. +-- +-- * @win32pfd@: Only recognized on GLUT implementations for Win32, this +-- capability name matches the Win32 Pixel Format Descriptor by number. +-- @win32pfd@ requires a comparator and numeric value. +-- +-- * @xvisual@: Only recongized on GLUT implementations for the X Window +-- System, this capability name matches the X visual ID by number. +-- @xvisual@ requires a comparator and numeric value. +-- +-- * @xstaticgray@: Only recongized on GLUT implementations for the X Window +-- System, boolean indicating if the frame buffer configuration\'s X visual +-- is of type @StaticGray@. Default is @\"=1\"@. +-- +-- * @xgrayscale@: Only recongized on GLUT implementations for the X Window +-- System, boolean indicating if the frame buffer configuration\'s X visual +-- is of type @GrayScale@. Default is @\"=1\"@. +-- +-- * @xstaticcolor@: Only recongized on GLUT implementations for the X Window +-- System, boolean indicating if the frame buffer configuration\'s X visual +-- is of type @StaticColor@. Default is @\"=1\"@. +-- +-- * @xpseudocolor@: Only recongized on GLUT implementations for the X Window +-- System, boolean indicating if the frame buffer configuration\'s X visual +-- is of type @PsuedoColor@. Default is @\"=1\"@. +-- +-- * @xtruecolor@: Only recongized on GLUT implementations for the X Window +-- System, boolean indicating if the frame buffer configuration\'s X visual +-- is of type @TrueColor@. Default is @\"=1\"@. +-- +-- * @xdirectcolor@: Only recongized on GLUT implementations for the X Window +-- System, boolean indicating if the frame buffer configuration\'s X visual +-- is of type @DirectColor@. Default is @\"=1\"@. +-- +-- Unspecified capability descriptions will result in unspecified criteria +-- being generated. These unspecified criteria help 'initDisplayString' +-- behave sensibly with terse display mode description strings. +-- +-- Here is an example using 'initDisplayString': +-- +-- @ 'initDisplayString' \"stencil~2 rgb double depth>=16 samples\"@ +-- +-- The above call requests a window with an RGBA color model (but requesting +-- no bits of alpha), a depth buffer with at least 16 bits of precision but +-- preferring more, multisampling if available, and at least 2 bits of +-- stencil (favoring less stencil to more as long as 2 bits are available). + +initDisplayString :: String -> IO () +initDisplayString s = withCString s glutInitDisplayString + +foreign import ccall unsafe "glutInitDisplayString" glutInitDisplayString :: + CString -> IO () hunk ./Graphics/UI/GLUT/Window.hs 1 +----------------------------------------------------------------------------- +-- | +-- Module : Graphics.UI.GLUT.Window +-- Copyright : (c) Sven Panne 2002 +-- License : BSD-style (see the file libraries/GLUT/LICENSE) +-- +-- Maintainer : sven_panne@yahoo.com +-- Stability : experimental +-- Portability : portable +-- +-- GLUT supports two types of windows: top-level windows and subwindows. Both +-- types support OpenGL rendering and GLUT callbacks. There is a single +-- identifier space for both types of windows. +-- +----------------------------------------------------------------------------- + +module Graphics.UI.GLUT.Window ( + -- * Data types + Window, + + -- * Functions + createWindow, createSubWindow +) where + +import Foreign.C.String ( CString, withCString ) +import Foreign.C.Types ( CInt ) +import Graphics.UI.GLUT.Initialization ( WindowPosition(..), WindowSize(..) ) + +-- | An opaque identifier for a top-level window or a subwindow. +newtype Window = Window CInt deriving ( Eq, Ord ) + +-- | Create a top-level window. The given name will be provided to the window +-- system as the window\'s name. The intent is that the window system will +-- label the window with the name. +-- +-- Implicitly, the /current window/ is set to the newly created window. +-- +-- Each created window has a unique associated OpenGL context. State +-- changes to a window\'s associated OpenGL context can be done +-- immediately after the window is created. +-- +-- The /display state/ of a window is initially for the window to be +-- shown. But the window\'s /display state/ is not actually acted upon +-- until 'Graphics.UI.GLUT.Begin.mainLoop' is entered. This means until +-- 'Graphics.UI.GLUT.Begin.mainLoop' is called, rendering to a created +-- window is ineffective because the window can not yet be displayed. +-- +-- The value returned is a unique identifier for the window, which can be +-- used when calling 'setWindow'. +-- +-- X Implementation Notes: The proper X Inter-Client Communication +-- Conventions Manual (ICCCM) top-level properties are established. The +-- @WM_COMMAND@ property that lists the command line used to invoke the +-- GLUT program is only established for the first window created. + +createWindow + :: String -- @ The window name + -> IO Window -- @ The identifier for the newly created window +createWindow name = withCString name glutCreateWindow + +foreign import ccall unsafe "glutCreateWindow" glutCreateWindow :: + CString -> IO Window + +-- | Create a subwindow of the identified window with the given relative +-- position and size. Implicitly, the /current window/ is set to the +-- newly created subwindow. +-- +-- Each created window has a unique associated OpenGL context. State +-- changes to a window\'s associated OpenGL context can be done +-- immediately after the window is created. +-- +-- The /display state/ of a window is initially for the window to be +-- shown. But the window\'s /display state/ is not actually acted upon +-- until 'Graphics.UI.GLUT.Begin.mainLoop' is entered. This means until +-- 'Graphics.UI.GLUT.Begin.mainLoop' is called, rendering to a created +-- window is ineffective. Subwindows can not be iconified. +-- +-- Subwindows can be nested arbitrarily deep. + +createSubWindow + :: Window -- @ Identifier of the subwindow\'s parent window. + -> WindowPosition -- @ Window position in pixels relative to parent window\'s origin. + -> WindowSize -- @ Window size in pixels + -> IO Window -- @ The identifier for the newly created subwindow +createSubWindow win (WindowPosition x y) (WindowSize w h) = + glutCreateSubWindow win x y w h + +foreign import ccall unsafe "glutCreateSubWindow" glutCreateSubWindow :: + Window -> CInt -> CInt -> CInt -> CInt -> IO Window hunk ./Graphics/UI/GLUT.hs 2 --- +-- | hunk ./Graphics/UI/GLUT.hs 11 --- $Id: GLUT.hs,v 1.1 2002/02/24 17:18:02 panne Exp $ --- hunk ./Graphics/UI/GLUT.hs 17 - module Graphics.UI.GLUT.Dummy -) where + -- * Legal stuff + + -- $LegalStuff + + -- * Introduction + + -- $Introduction + + -- ** Background + + -- $Background + + -- ** Design Philosophy + + -- $DesignPhilosophy + + -- ** API Versions + + -- $APIVersions + + -- ** Conventions + + -- $Conventions + + -- ** Terminology + + -- $Terminology + + module Graphics.UI.GLUT.Initialization, + module Graphics.UI.GLUT.Begin, + module Graphics.UI.GLUT.Window, + module Graphics.UI.GLUT.Colormap +) where + +import Graphics.UI.GLUT.Initialization +import Graphics.UI.GLUT.Begin +import Graphics.UI.GLUT.Window ( Window, createWindow ) +import Graphics.UI.GLUT.Colormap + +----------------------------------------------------------------------------- +-- $LegalStuff +-- The original documentation, on which this one is very heavily based, is +-- Copyright (c) 1994, 1995, 1996 by Mark J. Kilgard, Silicon Graphics, +-- Inc., and is available at +-- . +-- No part of this documentation may be reproduced, in any form or by any +-- means, without permission in writing from the original author. +-- +-- OpenGL is a trademark of Silicon Graphics, Inc. +-- X Window System is a trademark of X Consortium, Inc. +-- Spaceball is a registered trademark of Spatial Systems, Inc. +-- +-- The author has taken care in preparation of this documentation but makes +-- no expressed or implied warranty of any kind and assumes no responsibility +-- for errors or omissions. No liability is assumed for incidental or +-- consequential damages in connection with or arising from the use of +-- information or programs contained herein. + +----------------------------------------------------------------------------- +-- $Introduction +-- The OpenGL Utility Toolkit (GLUT) is a programming interface for writing +-- window system independent OpenGL programs. Currently there are +-- implementations for the X Window System, the Windows family, OS\/2, and Mac. +-- The toolkit supports the following functionality: +-- +-- * Multiple windows for OpenGL rendering. +-- +-- * Callback driven event processing. +-- +-- * Sophisticated input devices. +-- +-- * An /idle/ routine and timers. +-- +-- * A simple, cascading pop-up menu facility. +-- +-- * Utility routines to generate various solid and wire frame objects. +-- +-- * Support for bitmap and stroke fonts. +-- +-- * Miscellaneous window management functions, including managing overlays. +-- +-- This documentation serves as both a specification and a programming guide. +-- If you are interested in a brief introduction to programming with GLUT, +-- have a look at the relevant parts of and the vast +-- amount of books on OpenGL, most of them use GLUT. +-- +-- The remainder of this section describes GLUT\'s design philosophy and +-- usage model. The following sections specify the GLUT routines, grouped by +-- functionality. The final sections discuss usage advice and the logical +-- programmer visible state maintained by GLUT. + +----------------------------------------------------------------------------- +-- $Background +-- One of the major accomplishments in the specification of OpenGL was +-- the isolation of window system dependencies from OpenGL\'s rendering +-- model. The result is that OpenGL is window system independent. +-- +-- Window system operations such as the creation of a rendering window and the +-- handling of window system events are left to the native window system to +-- define. Necessary interactions between OpenGL and the window system such as +-- creating and binding an OpenGL context to a window are described separately +-- from the OpenGL specification in a window system dependent specification. For +-- example, the GLX specification describes the standard by which OpenGL +-- interacts with the X Window System. +-- +-- The predecessor to OpenGL is IRIS GL. Unlike OpenGL, IRIS GL /does/ +-- specify how rendering windows are created and manipulated. IRIS GL\'s +-- windowing interface is reasonably popular largely because it is simple to +-- use. IRIS GL programmers can worry about graphics programming without needing +-- to be an expert in programming the native window system. Experience also +-- demonstrated that IRIS GL\'s windowing interface was high-level enough that it +-- could be retargeted to different window systems. Silicon Graphics migrated +-- from NeWS to the X Window System without any major changes to IRIS GL\'s basic +-- windowing interface. +-- +-- Removing window system operations from OpenGL is a sound decision because it +-- allows the OpenGL graphics system to be retargeted to various systems +-- including powerful but expensive graphics workstations as well as +-- mass-production graphics systems like video games, set-top boxes for +-- interactive television, and PCs. +-- +-- Unfortunately, the lack of a window system interface for OpenGL is a gap in +-- OpenGL\'s utility. Learning native window system APIs such as the X Window +-- System\'s Xlib or Motif can be daunting. Even those familiar with +-- native window system APIs need to understand the interface that binds OpenGL +-- to the native window system. And when an OpenGL program is written using the +-- native window system interface, despite the portability of the program\'s +-- OpenGL rendering code, the program itself will be window system dependent. +-- +-- Testing and documenting OpenGL\'s functionality lead to the development of the +-- @tk@ and @aux@ toolkits. The @aux@ toolkit is used in the examples found in the +-- /OpenGL Programming Guide/. Unfortunately, @aux@ has numerous limitations and +-- its utility is largely limited to toy programs. The @tk@ library has more +-- functionality than @aux@ but was developed in an /ad hoc/ fashion and still lacks +-- much important functionality that IRIS GL programmers expect, like pop-up +-- menus and overlays. +-- +-- GLUT is designed to fill the need for a window system independent programming +-- interface for OpenGL programs. The interface is designed to be simple yet +-- still meet the needs of useful OpenGL programs. Features from the IRIS GL, +-- @aux@, and @tk@ interfaces are included to make it easy for programmers used to +-- these interfaces to develop programs for GLUT. hunk ./Graphics/UI/GLUT.hs 160 -import Graphics.UI.GLUT.Dummy +----------------------------------------------------------------------------- +-- $DesignPhilosophy +-- GLUT simplifies the implementation of programs using OpenGL rendering. The +-- GLUT application programming interface (API) requires very few routines to +-- display a graphics scene rendered using OpenGL. The GLUT API (like the OpenGL +-- API) is stateful. Most initial GLUT state is defined and the initial state is +-- reasonable for simple programs. The GLUT routines also take relatively few +-- parameters. +-- +-- The GLUT API is (as much as reasonable) window system independent. For this +-- reason, GLUT does not return /any/ native window system handles, pointers, or +-- other data structures. More subtle window system dependencies such as +-- reliance on window system dependent fonts are avoided by GLUT; instead, GLUT +-- supplies its own (limited) set of fonts. +-- +-- For programming ease, GLUT provides a simple menu sub-API. While the menuing +-- support is designed to be implemented as pop-up menus, GLUT gives window +-- system leeway to support the menu functionality in another manner (pull-down +-- menus for example). +-- +-- Two of the most important pieces of GLUT state are the /current window/ and +-- /current menu/. Most window and menu routines affect the /current window/ or +-- /menu/ respectively. Most callbacks implicitly set the /current window/ and +-- /menu/ to the appropriate window or menu responsible for the callback. GLUT +-- is designed so that a program with only a single window and\/or menu will not +-- need to keep track of any window or menu identifiers. This greatly simplifies +-- very simple GLUT programs. +-- +-- GLUT is designed for simple to moderately complex programs focused on OpenGL +-- rendering. GLUT implements its own event loop. For this reason, mixing GLUT +-- with other APIs that demand their own event handling structure may be +-- difficult. The advantage of a builtin event dispatch loop is simplicity. +-- +-- GLUT contains routines for rendering fonts and geometric objects, however +-- GLUT makes no claims on the OpenGL display list name space. For this reason, +-- none of the GLUT rendering routines use OpenGL display lists. It is up to the +-- GLUT programmer to compile the output from GLUT rendering routines into +-- display lists if this is desired. +-- +-- GLUT routines are logically organized into several sub-APIs according to +-- their functionality. The sub-APIs are: +-- +-- * /Initialization:/ Command line processing, window system initialization, +-- and initial window creation state are controlled by these routines. +-- +-- * /Beginning Event Processing:/ This routine enters GLUT\'s event processing +-- loop. This routine never returns, and it continuously calls GLUT callbacks +-- as necessary. +-- +-- * /Window Management:/ These routines create and control windows. +-- +-- * /Overlay Management:/ These routines establish and manage overlays for +-- windows. +-- +-- * /Menu Management:/ These routines create and control pop-up menus. +-- +-- * /Callback Registration:/ These routines register callbacks to be called by +-- the GLUT event processing loop. +-- +-- * /Color Index Colormap Management:/ These routines allow the manipulation +-- of color index colormaps for windows. +-- +-- * /State Retrieval:/ These routines allows programs to retrieve state from +-- GLUT. +-- +-- * /Font Rendering:/ These routines allow rendering of stroke and bitmap fonts. +-- +-- * /Geometric Shape Rendering:/ These routines allow the rendering of 3D +-- geometric objects including spheres, cones, icosahedrons, and teapots. +-- +-- * /Video Resizing:/ These routines provide a means for doing swap or frame +-- synchronous resizing\/panning of the area that is to be magnified (or passed +-- through) to the output video resolution. +-- +-- * /Debugging:/ This routine reports any pending GL errors. +-- +-- * /Device Control:/ These routines allow setting the key repeat and polling +-- the joystick. +-- +-- * /Game Mode:/ These routines allow programs to enter\/leave a full-screen +-- mode with specified properties. + +----------------------------------------------------------------------------- +-- $APIVersions +-- The GLUT API has undergone several revisions with increasing functionality. +-- This Haskell binding provides access to everything in API version 4, +-- although it is not yet officially finalized. Nevertheless, it provides very +-- useful things like handling full-screen modes and special keys. + +----------------------------------------------------------------------------- +-- $Conventions +-- GLUT window and screen coordinates are expressed in pixels. The upper +-- left hand corner of the screen or a window is (0,0). X coordinates +-- increase in a rightward direction; Y coordinates increase in a +-- downward direction. Note: This is inconsistent with OpenGL\'s +-- coordinate scheme that generally considers the lower left hand +-- coordinate of a window to be at (0,0) but is consistent with most +-- popular window systems. + +----------------------------------------------------------------------------- +-- $Terminology +-- A number of terms are used in a GLUT-specific manner throughout this +-- document. The GLUT meaning of these terms is independent of the window +-- system GLUT is used with. Here are GLUT-specific meanings for the +-- following GLUT-specific terms: +-- +-- * /Callback:/ A programmer specified routine that can be registered with +-- GLUT to be called in response to a specific type of event. Also used to +-- refer to a specific callback routine being called. +-- +-- * /Colormap:/ A mapping of pixel values to RGB color values. Used by color +-- index windows. +-- +-- * /Dials and button box:/ A sophisticated input device consisting of a pad +-- of buttons and an array of rotating dials, often used by computer-aided +-- design programs. +-- +-- * /Display mode:/ A set of OpenGL frame buffer capabilities that can be +-- attributed to a window. +-- +-- * /Idle:/ A state when no window system events are received for processing +-- as callbacks and the idle callback, if one is registered, is called. +-- +-- * /Layer in use:/ Either the normal plane or overlay. This per-window state +-- determines what frame buffer layer OpenGL commands affect. +-- +-- * /Menu entry:/ A menu item that the user can select to trigger the menu +-- callback for the menu entry\'s value. +-- +-- * /Menu item:/ Either a menu entry or a sub-menu trigger. +-- +-- * /Modifiers:/ The Shift, Ctrl, and Alt keys that can be held down +-- simultaneously with a key or mouse button being pressed or released. +-- +-- * /Multisampling:/ A technique for hardware antialiasing generally available +-- only on expensive 3D graphics hardware. Each pixel is composed of a number +-- of samples (each containing color and depth information). The samples are +-- averaged to determine the displayed pixel color value. Multisampling is +-- supported as an extension to OpenGL. +-- +-- * /Normal plane:/ The default frame buffer layer where GLUT window state +-- resides; as opposed to the /overlay/. +-- +-- * /Overlay:/ A frame buffer layer that can be displayed preferentially to +-- the /normal plane/ and supports transparency to display through to the +-- /normal plane/. Overlays are useful for rubber-banding effects, text +-- annotation, and other operations, to avoid damaging the normal plane frame +-- buffer state. Overlays require hardware support not present on all systems. +-- +-- * /Pop:/ The act of forcing a window to the top of the stacking order for +-- sibling windows. +-- +-- * /Pop-up menu:/ A menu that can be set to appear when a specified mouse +-- button is pressed in a window. A pop-menu consists of multiple menu items. +-- +-- * /Push:/ The act of forcing a window to the bottom of the stacking order +-- for sibling windows. +-- +-- * /Reshape:/ The act of changing the size or shape of the window. +-- +-- * /Spaceball:/ A sophisticated 3D input device that provides six degrees of +-- freedom, three axes of rotation and three axes of translation. It also +-- supports a number of buttons. The device is a hand-sized ball attached to +-- a base. By cupping the ball with one\'s hand and applying torsional or +-- directional force on the ball, rotations and translationsare generated. +-- +-- * /Stereo:/ A frame buffer capability providing left and right color buffers +-- for creating stereoscopic renderings. Typically, the user wears LCD +-- shuttered goggles synchronized with the alternating display on the screen +-- of the left and right color buffers. +-- +-- * /Sub-menu:/ A menu cascaded from some sub-menu trigger. +-- +-- * /Sub-menu trigger:/ A menu item that the user can enter to cascade another +-- pop-up menu. +-- +-- * /Subwindow:/ A type of window that is the child window of a top-level +-- window or other subwindow. The drawing and visible region of a subwindow +-- is limited by its parent window. +-- +-- * /Tablet:/ A precise 2D input device. Like a mouse, 2D coordinates are +-- returned. The absolute position of the tablet \"puck\" on the tablet is +-- returned. Tablets also support a number of buttons. +-- +-- * /Timer:/ A callback that can be scheduled to be called in a specified +-- interval of time. +-- +-- * /Top-level window:/ A window that can be placed, moved, resized, etc. +-- independently from other top-level windows by the user. Subwindows may +-- reside within a top-level window. +-- +-- * /Window:/ A rectangular area for OpenGL rendering. +-- +-- * /Window display state:/ One of shown, hidden, or iconified. A shown window +-- is potentially visible on the screen (it may be obscured by other windows +-- and not actually visible). A hidden window will never be visible. An +-- iconified window is not visible but could be made visible in response to +-- some user action like clicking on the window\'s corresponding icon. +-- +-- * /Window system:/ A broad notion that refers to both the mechanism and +-- policy of the window system. For example, in the X Window System both the +-- window manager and the X server are integral to what GLUT considers the +-- window system. hunk ./Makefile 2 -# $Id: Makefile,v 1.2 2002/02/24 19:02:45 panne Exp $ +# $Id: Makefile,v 1.3 2002/05/19 11:43:40 panne Exp $ hunk ./Makefile 15 -SRC_HC_OPTS += -fglasgow-exts '-\#include ' +SRC_HC_OPTS += -fglasgow-exts '-\#include ' -package OpenGL hunk ./Graphics/UI/GLUT/Initialization.hs 44 -import Foreign.Marshal.Utils ( withObject, withMany ) +import Foreign.Marshal.Utils ( with, withMany ) hunk ./Graphics/UI/GLUT/Initialization.hs 98 - withObject (1 + genericLength args) $ \argcBuf -> + with (1 + genericLength args) $ \argcBuf -> hunk ./Graphics/UI/GLUT/Initialization.hs 1 ------------------------------------------------------------------------------ +-------------------------------------------------------------------------------- hunk ./Graphics/UI/GLUT/Initialization.hs 24 ------------------------------------------------------------------------------ +-------------------------------------------------------------------------------- hunk ./Graphics/UI/GLUT/Initialization.hs 34 - -- * Setting the initial window mode - DisplayMode(..), initDisplayMode, initDisplayString + -- * Setting the initial window mode (I) + DisplayMode(..), initDisplayMode, + + -- * Setting the initial window mode (II) + Capability(..), Relation(..), CapabilityDescription(..), initDisplay hunk ./Graphics/UI/GLUT/Initialization.hs 53 ------------------------------------------------------------------------------ +-------------------------------------------------------------------------------- hunk ./Graphics/UI/GLUT/Initialization.hs 123 ------------------------------------------------------------------------------ +-------------------------------------------------------------------------------- hunk ./Graphics/UI/GLUT/Initialization.hs 168 ------------------------------------------------------------------------------ +-------------------------------------------------------------------------------- hunk ./Graphics/UI/GLUT/Initialization.hs 170 --- | A single aspect of a window which is to be created. +-- | A single aspect of a window which is to be created, used in conjunction +-- with 'initDisplayMode'. hunk ./Graphics/UI/GLUT/Initialization.hs 173 - = Rgba -- ^ Select an RGBA mode window. This is the default if neither 'Rgba' nor 'Index' are specified. - | Rgb -- ^ An alias for 'Rgba'. - | Index -- ^ Select a color index mode window. This overrides 'Rgba' if it is also specified. + = RGBA -- ^ Select an RGBA mode window. This is the default if neither 'RGBA' nor 'Index' are specified. + | RGB -- ^ An alias for 'RGBA'. + | Index -- ^ Select a color index mode window. This overrides 'RGBA' if it is also specified. hunk ./Graphics/UI/GLUT/Initialization.hs 196 - Rgba -> glut_RGBA - Rgb -> glut_RGB + RGBA -> glut_RGBA + RGB -> glut_RGB hunk ./Graphics/UI/GLUT/Initialization.hs 213 --- Note that 'Rgba' selects the RGBA color model, but it does not request any +-- Note that 'RGBA' selects the RGBA color model, but it does not request any hunk ./Graphics/UI/GLUT/Initialization.hs 227 --- | Set the /initial display mode description string/. It is used when --- creating top-level windows, subwindows, and overlays to determine the --- OpenGL display mode for the to-be-created window or overlay. The string is --- a list of zero or more capability descriptions separated by spaces and --- tabs. Each capability description is a capability name that is optionally --- followed by a comparator and a numeric value. For example, @\"double\"@ --- and @\"depth>=12\"@ are both valid criteria. The capability descriptions --- are translated into a set of criteria used to select the appropriate frame --- buffer configuration. The criteria are matched in strict left to right --- order of precdence. That is, the first specified criteria (leftmost) takes --- precedence over the later criteria for non-exact criteria (greater than, --- less than, etc. comparators). Exact criteria (equal, not equal --- comparators) must match exactly so precedence is not relevant. The numeric --- value is an integer that is parsed according to ANSI C\'s @strtol@ --- behavior. This means that decimal, octal (leading @0@), and hexadecimal --- values (leading @0x@) are accepeted. The valid comparators are: --- --- * @=@: Equal. --- --- * @!=@: Not equal. --- --- * @\<@: Less than and preferring larger difference (the least is best). --- --- * @>@: Greater than and preferring larger differences (the most is best). --- --- * @\<=@: Less than or equal and preferring larger difference (the least is --- best). --- --- * @>=@: Greater than or equal and preferring more instead of less. This --- comparator is useful for allocating resources like color precision or --- depth buffer precision where the maximum precision is generally --- preferred. Contrast with the tilde (@~@) comparator. --- --- * @~@: Greater than or equal but preferring less instead of more. This --- comparator is useful for allocating resources such as stencil bits or --- auxillary color buffers where you would rather not over-allocate. When --- the comparator and numeric value are not specified, each capability name --- has a different default (one default is to require a a comparator and --- numeric value). --- --- The valid capability names are: --- --- * @rgba@: Number of bits of red, green, blue, and alpha in the RGBA color --- buffer. Default is @\">=1\"@ for red, green, blue, and alpha --- capabilities, and @\"=1\"@ for the RGBA color model capability. --- --- * @rgb@: Number of bits of red, green, and blue in the RGBA color buffer --- and zero bits of alpha color buffer precision. Default is @\">=1\"@ for --- the red, green, and blue capabilities, and @\"~0\"@ for alpha --- capability, and @\"=1\"@ for the RGBA color model capability. --- --- * @red@: Red color buffer precision in bits. Default is @\">=1\"@. --- --- * @green@: Green color buffer precision in bits. Default is @\">=1\"@. --- --- * @blue@: Blue color buffer precision in bits. Default is @\">=1\"@. --- --- * @alpha@: Alpha color buffer precision in bits. Default is @\">=1\"@. --- --- * @index@: Boolean if the color model is color index or not. True is color --- index. Default is @\">=1\"@. --- --- * @buffer@: Number of bits in the color index color buffer. Default is --- @\">=1\"@. --- --- * @acca@: Red, green, blue, and alpha accumulation buffer precision in --- bits. Default is @\">=1\"@ for red, green, blue, and alpha capabilities. --- --- * @acc@: Red, green, and green accumulation buffer precision in bits and --- zero bits of alpha accumulation buffer precision. Default is @\">=1\"@ --- for red, green, and blue capabilities, and @\"~0\"@ for the alpha --- capability. --- --- * @depth@: Number of bits of precsion in the depth buffer. Default is --- @\">=12\"@. --- --- * @stencil@: Number of bits in the stencil buffer. --- --- * @luminance@: Number of bits of red in the RGBA and zero bits of green, --- blue (alpha not specified) of color buffer precision. Default is --- @\">=1\" for the red capabilitis, and @\"=0\" for the green and blue --- capabilities, and @\"=1\" for the RGBA color model capability, and, for --- X11, @\"=1\" for the @StaticGray@ (@\"xstaticgray\"@) capability. SGI --- InfiniteReality (and other future machines) support a 16-bit luminance --- (single channel) display mode (an additional 16-bit alpha channel can --- also be requested). The red channel maps to gray scale and green and --- blue channels are not available. A 16-bit precision luminance display --- mode is often appropriate for medical imaging applications. Do not --- expect many machines to support extended precision luminance display --- modes. --- --- * @single@: Boolean indicate the color buffer is single buffered. Double --- buffer capability @\"=1\"@. --- --- * @double@: Boolean indicating if the color buffer is double buffered. --- Default is @\"=1\"@. --- --- * @stereo@: Boolean indicating the color buffer is supports OpenGL-style --- stereo. Default is @\"=1\"@. --- --- * @samples@: Indicates the number of multisamples to use based on GLX\'s --- @SGIS_multisample@ extension (for antialiasing). Default is @\"\<=4\"@. --- This default means that a GLUT application can request multisampling if --- available by simply specifying @\"samples\"@. --- --- * @num@: A special capability name indicating where the value represents --- the Nth frame buffer configuration matching the description string. When --- not specified, 'initDisplayString' also returns the first (best --- matching) configuration. @num@ requires a comparator and numeric value. --- --- * @conformant@: Boolean indicating if the frame buffer configuration is --- conformant or not. Conformance information is based on GLX\'s --- @EXT_visual_rating@ extension if supported. If the extension is not --- supported, all visuals are assumed conformat. Default is @\"=1\"@. --- --- * @slow@: Boolean indicating if the frame buffer configuration is slow or --- not. Slowness information is based on GLX\'s @EXT_visual_rating@ --- extension if supported. If the extension is not supported, all visuals --- are assumed fast. Note that slowness is a relative designation relative --- to other frame buffer configurations available. The intent of the slow --- capability is to help programs avoid frame buffer configurations that --- are slower (but perhaps higher precision) for the current machine. --- Default is @\">=0\"@. This default means that slow visuals are used in --- preference to fast visuals, but fast visuals will still be allowed. --- --- * @win32pfd@: Only recognized on GLUT implementations for Win32, this --- capability name matches the Win32 Pixel Format Descriptor by number. --- @win32pfd@ requires a comparator and numeric value. --- --- * @xvisual@: Only recongized on GLUT implementations for the X Window --- System, this capability name matches the X visual ID by number. --- @xvisual@ requires a comparator and numeric value. --- --- * @xstaticgray@: Only recongized on GLUT implementations for the X Window --- System, boolean indicating if the frame buffer configuration\'s X visual --- is of type @StaticGray@. Default is @\"=1\"@. --- --- * @xgrayscale@: Only recongized on GLUT implementations for the X Window --- System, boolean indicating if the frame buffer configuration\'s X visual --- is of type @GrayScale@. Default is @\"=1\"@. --- --- * @xstaticcolor@: Only recongized on GLUT implementations for the X Window --- System, boolean indicating if the frame buffer configuration\'s X visual --- is of type @StaticColor@. Default is @\"=1\"@. --- --- * @xpseudocolor@: Only recongized on GLUT implementations for the X Window --- System, boolean indicating if the frame buffer configuration\'s X visual --- is of type @PsuedoColor@. Default is @\"=1\"@. --- --- * @xtruecolor@: Only recongized on GLUT implementations for the X Window --- System, boolean indicating if the frame buffer configuration\'s X visual --- is of type @TrueColor@. Default is @\"=1\"@. --- --- * @xdirectcolor@: Only recongized on GLUT implementations for the X Window --- System, boolean indicating if the frame buffer configuration\'s X visual --- is of type @DirectColor@. Default is @\"=1\"@. +-------------------------------------------------------------------------------- + +-- Internal class for leaving Show instances untouched +class ToString a where + toString :: a -> String + +-- | Capabilities for 'initDisplay', most of them are extensions of +-- 'DisplayMode'\'s constructors. +data Capability + = RGBA' -- ^ Number of bits of red, green, blue, and alpha in the RGBA + -- color buffer. Default is \"'IsAtLeast' @1@\" for red, + -- green, blue, and alpha capabilities, and \"'IsEqualTo' + -- @1@\" for the RGBA color model capability. + | RGB' -- ^ Number of bits of red, green, and blue in the RGBA color + -- buffer and zero bits of alpha color buffer precision. + -- Default is \"'IsAtLeast' @1@\" for the red, green, and + -- blue capabilities, and \"'IsNotLessThan' @0@\" for alpha + -- capability, and \"'IsEqualTo' @1@\" for the RGBA color + -- model capability. + | Red -- ^ Red color buffer precision in bits. Default is + -- \"'IsAtLeast' @1@\". + | Green -- ^ Green color buffer precision in bits. Default is + -- \"'IsAtLeast' @1@\". + | Blue -- ^ Blue color buffer precision in bits. Default is + -- \"'IsAtLeast' @1@\". + | Index' -- ^ Boolean if the color model is color index or not. True is + -- color index. Default is \"'IsAtLeast' @1@\". + | Buffer -- ^ Number of bits in the color index color buffer. Default + -- is \"'IsAtLeast' @1@\". + | Single' -- ^ Boolean indicate the color buffer is single buffered. + -- Defaultis \"'IsEqualTo' @1@\". + | Double' -- ^ Boolean indicating if the color buffer is double + -- buffered. Default is \"'IsEqualTo' @1@\". + | AccA -- ^ Red, green, blue, and alpha accumulation buffer precision + -- in bits. Default is \"'IsAtLeast' @1@\" for red, green, + -- blue, and alpha capabilities. + | Acc -- ^ Red, green, and green accumulation buffer precision in + -- bits and zero bits of alpha accumulation buffer precision. + -- Default is \"'IsAtLeast' @1@\" for red, green, and blue + -- capabilities, and \"'IsNotLessThan' @0@\" for the alpha + -- capability. + | Alpha' -- ^ Alpha color buffer precision in bits. Default is + -- \"'IsAtLeast' @1@\". + | Depth' -- ^ Number of bits of precsion in the depth buffer. Default + -- is \"'IsAtLeast' @12@\". + | Stencil' -- ^ Number of bits in the stencil buffer. Default is + -- \"'IsNotLessThan' @1@\". + | Samples -- ^ Indicates the number of multisamples to use based on + -- GLX\'s @SGIS_multisample@ extension (for antialiasing). + -- Default is \"'IsNotGreaterThan' @4@\". This default means + -- that a GLUT application can request multisampling if + -- available by simply specifying \"'With' 'Samples'\". + | Stereo' -- ^ Boolean indicating the color buffer is supports + -- OpenGL-style stereo. Default is \"'IsEqualTo' @1@\". + | Luminance' -- ^ Number of bits of red in the RGBA and zero bits of green, + -- blue (alpha not specified) of color buffer precision. + -- Default is \"'IsAtLeast' @1@\" for the red capabilitis, + -- and \"'IsEqualTo' @0@\" for the green and blue + -- capabilities, and \"'IsEqualTo' @1@\" for the RGBA color + -- model capability, and, for X11, \"'IsEqualTo' @1@\" for + -- the 'XStaticGray' capability. SGI InfiniteReality (and + -- other future machines) support a 16-bit luminance (single + -- channel) display mode (an additional 16-bit alpha channel + -- can also be requested). The red channel maps to gray + -- scale and green and blue channels are not available. A + -- 16-bit precision luminance display mode is often + -- appropriate for medical imaging applications. Do not + -- expect many machines to support extended precision + -- luminance display modes. + | Num -- ^ A special capability name indicating where the value + -- represents the Nth frame buffer configuration matching + -- the description string. When not specified, + -- 'initDisplayString' also returns the first (best + -- matching) configuration. 'Num' requires a relation and + -- numeric value. + | Conformant -- ^ Boolean indicating if the frame buffer configuration is + -- conformant or not. Conformance information is based on + -- GLX\'s @EXT_visual_rating@ extension if supported. If the + -- extension is not supported, all visuals are assumed + -- conformant. Default is \"'IsEqualTo' @1@\". + | Slow -- ^ Boolean indicating if the frame buffer configuration is + -- slow or not. Slowness information is based on GLX\'s + -- @EXT_visual_rating@ extension if supported. If the + -- extension is not supported, all visuals are assumed fast. + -- Note that slowness is a relative designation relative to + -- other frame buffer configurations available. The intent + -- of the slow capability is to help programs avoid frame + -- buffer configurations that are slower (but perhaps higher + -- precision) for the current machine. Default is + -- \"'IsAtLeast' @0@\". This default means that slow visuals + -- are used in preference to fast visuals, but fast visuals + -- will still be allowed. + | Win32PFD -- ^ Only recognized on GLUT implementations for Win32, this + -- capability name matches the Win32 Pixel Format Descriptor + -- by number. 'Win32PFD' can only be used with 'Where'. + | XVisual -- ^ Only recongized on GLUT implementations for the X Window + -- System, this capability name matches the X visual ID by + -- number. 'XVisual' requires a relation and numeric value. + | XStaticGray -- ^ Only recongized on GLUT implementations for the X Window + -- System, boolean indicating if the frame buffer + -- configuration\'s X visual is of type @StaticGray@. + -- Default is \"'IsEqualTo' @1@\". + | XGrayScale -- ^ Only recongized on GLUT implementations for the X Window + -- System, boolean indicating if the frame buffer + -- configuration\'s X visual is of type @GrayScale@. Default + -- is \"'IsEqualTo' @1@\". + | XStaticColor -- ^ Only recongized on GLUT implementations for the X Window + -- System, boolean indicating if the frame buffer + -- configuration\'s X visual is of type @StaticColor@. + -- Default is \"'IsEqualTo' @1@\". + | XPseudoColor -- ^ Only recongized on GLUT implementations for the X Window + -- System, boolean indicating if the frame buffer + -- configuration\'s X visual is of type @PsuedoColor@. + -- Default is \"'IsEqualTo' @1@\". + | XTrueColor -- ^ Only recongized on GLUT implementations for the X Window + -- System, boolean indicating if the frame buffer + -- configuration\'s X visual is of type @TrueColor@. Default + -- is \"'IsEqualTo' @1@\". + | XDirectColor -- ^ Only recongized on GLUT implementations for the X Window + -- System, boolean indicating if the frame buffer + -- configuration\'s X visual is of type @DirectColor@. + -- Default is \"'IsEqualTo' @1@\". + deriving ( Eq, Ord ) + +instance ToString Capability where + toString RGBA' = "rgba" + toString RGB' = "rgb" + toString Red = "red" + toString Green = "green" + toString Blue = "blue" + toString Index' = "index" + toString Buffer = "buffer" + toString Single' = "single" + toString Double' = "double" + toString AccA = "acca" + toString Acc = "acc" + toString Alpha' = "alpha" + toString Depth' = "depth" + toString Stencil' = "stencil" + toString Samples = "samples" + toString Stereo' = "stereo" + toString Luminance' = "luminance" + toString Num = "num" + toString Conformant = "conformant" + toString Slow = "slow" + toString Win32PFD = "win32pfd" + toString XVisual = "xvisual" + toString XStaticGray = "xstaticgray" + toString XGrayScale = "xgrayscale" + toString XStaticColor = "xstaticcolor" + toString XPseudoColor = "xpseudocolor" + toString XTrueColor = "xtruecolor" + toString XDirectColor = "xdirectcolor" + +-- | Relation between a 'Capability' and a numeric value. +data Relation + = IsEqualTo -- ^ Equal. + | IsNotEqualTo -- ^ Not equal. + | IsLessThan -- ^ Less than and preferring larger difference (the least + -- is best). + | IsNotGreaterThan -- ^ Less than or equal and preferring larger difference + -- (the least is best). + | IsGreaterThan -- ^ Greater than and preferring larger differences (the + -- most is best). + | IsAtLeast -- ^ Greater than or equal and preferring more instead of + -- less. This relation is useful for allocating + -- resources like color precision or depth buffer + -- precision where the maximum precision is generally + -- preferred. Contrast with 'IsNotLessThan' relation. + | IsNotLessThan -- ^ Greater than or equal but preferring less instead of + -- more. This relation is useful for allocating + -- resources such as stencil bits or auxillary color + -- buffers where you would rather not over-allocate. + deriving ( Eq, Ord ) + +instance ToString Relation where + toString IsEqualTo = "=" + toString IsNotEqualTo = "!=" + toString IsLessThan = "<" + toString IsNotGreaterThan = "<=" + toString IsGreaterThan = ">" + toString IsAtLeast = ">=" + toString IsNotLessThan = "~" + +-- | A single capability description for 'initDisplay'. +data CapabilityDescription + = Where Capability Relation Int -- ^ A description of a capability with a + -- specific relation to a numeric value. + | With Capability -- ^ When the relation and numeric value are + -- not specified, each capability has a + -- different default, see the different + -- constructors of 'Capability'. + deriving ( Eq, Ord ) + +instance ToString CapabilityDescription where + toString (Where c r i) = toString c ++ toString r ++ show i + toString (With c) = toString c + +-- | Set the /initial display mode/ used when creating top-level windows, +-- subwindows, and overlays to determine the OpenGL display mode for the +-- to-be-created window or overlay. It is described by a list of zero or more +-- capability descriptions, which are translated into a set of criteria used to +-- select the appropriate frame buffer configuration. The criteria are matched +-- in strict left to right order of precdence. That is, the first specified +-- criterion (leftmost) takes precedence over the later criteria for non-exact +-- criteria ('IsGreaterThan', 'IsLessThan', etc.). Exact criteria ('IsEqualTo', +-- 'IsNotEqualTo') must match exactly so precedence is not relevant. hunk ./Graphics/UI/GLUT/Initialization.hs 435 --- Unspecified capability descriptions will result in unspecified criteria --- being generated. These unspecified criteria help 'initDisplayString' --- behave sensibly with terse display mode description strings. +-- Unspecified capability descriptions will result in unspecified criteria being +-- generated. These unspecified criteria help 'initDisplay' behave sensibly with +-- terse display mode descriptions. hunk ./Graphics/UI/GLUT/Initialization.hs 439 --- Here is an example using 'initDisplayString': +-- Here is an example using 'initDisplay': hunk ./Graphics/UI/GLUT/Initialization.hs 441 --- @ 'initDisplayString' \"stencil~2 rgb double depth>=16 samples\"@ +-- @ +-- initDisplay [ With RGB\', +-- Where Depth\' IsAtLeast 16, +-- With Samples, +-- Where Stencil\' IsNotLessThan 2, +-- With Double\' ] +-- @ hunk ./Graphics/UI/GLUT/Initialization.hs 451 --- preferring more, multisampling if available, and at least 2 bits of --- stencil (favoring less stencil to more as long as 2 bits are available). +-- preferring more, multisampling if available, at least 2 bits of stencil +-- (favoring less stencil to more as long as 2 bits are available), and double +-- buffering. hunk ./Graphics/UI/GLUT/Initialization.hs 455 -initDisplayString :: String -> IO () -initDisplayString s = withCString s glutInitDisplayString +initDisplay :: [CapabilityDescription] -> IO () +initDisplay settings = + withCString (concat . intersperse " " . map toString $ settings) + glutInitDisplayString hunk ./Graphics/UI/GLUT/Constants.hs 1 +-- #hide hunk ./Graphics/UI/GLUT/Initialization.hs 90 --- are any OpenGL errors by calling 'getError'. If an error is reported, --- print out a warning by looking up the error code with 'errorString'. --- Using this option is helpful in detecting OpenGL run-time errors. +-- are any OpenGL errors by calling 'Graphics.Rendering.OpenGL.getError'. +-- If an error is reported, print out a warning by looking up the error +-- code with 'Graphics.Rendering.OpenGL.errorString'. Using this option +-- is helpful in detecting OpenGL run-time errors. hunk ./Graphics/UI/GLUT/Window.hs 1 ------------------------------------------------------------------------------ +-------------------------------------------------------------------------------- hunk ./Graphics/UI/GLUT/Window.hs 15 ------------------------------------------------------------------------------ +-------------------------------------------------------------------------------- hunk ./Graphics/UI/GLUT/Window.hs 18 - -- * Data types + -- * Window identifiers hunk ./Graphics/UI/GLUT/Window.hs 21 - -- * Functions - createWindow, createSubWindow + -- * Creating and destroying (sub-)windows + + -- $CreatingAndDestroyingSubWindows + createWindow, createSubWindow, destroyWindow, + + -- * Manipulating the /current window/ + setWindow, getWindow, + + -- * Re-displaying and double buffer management + postRedisplay, swapBuffers, + + -- * Changing the window geometry + + -- $ChangingTheWindowGeometry + positionWindow, reshapeWindow, fullScreen, + + -- * Manipulating the stacking order + + -- $ManipulatingTheStackingOrder + pushWindow, popWindow, + + -- * Managing the display status + + -- $ManagingTheDisplayStatus + showWindow, hideWindow, iconifyWindow, + + -- * Changing the window\/icon title + + -- $ChangingTheWindowIconTitle + setWindowTitle, setIconTitle, + + -- * Cursor management + Cursor(..), setCursor hunk ./Graphics/UI/GLUT/Window.hs 59 +import Graphics.UI.GLUT.Constants + +-------------------------------------------------------------------------------- hunk ./Graphics/UI/GLUT/Window.hs 64 + hunk ./Graphics/UI/GLUT/Window.hs 67 --- | Create a top-level window. The given name will be provided to the window --- system as the window\'s name. The intent is that the window system will --- label the window with the name. --- --- Implicitly, the /current window/ is set to the newly created window. --- --- Each created window has a unique associated OpenGL context. State --- changes to a window\'s associated OpenGL context can be done --- immediately after the window is created. +-------------------------------------------------------------------------------- + +-- $CreatingAndDestroyingSubWindows +-- Each created window has a unique associated OpenGL context. State changes to +-- a window\'s associated OpenGL context can be done immediately after the +-- window is created. hunk ./Graphics/UI/GLUT/Window.hs 74 --- The /display state/ of a window is initially for the window to be --- shown. But the window\'s /display state/ is not actually acted upon --- until 'Graphics.UI.GLUT.Begin.mainLoop' is entered. This means until --- 'Graphics.UI.GLUT.Begin.mainLoop' is called, rendering to a created --- window is ineffective because the window can not yet be displayed. +-- The /display state/ of a window is initially for the window to be shown. But +-- the window\'s /display state/ is not actually acted upon until +-- 'Graphics.UI.GLUT.Begin.mainLoop' is entered. This means until +-- 'Graphics.UI.GLUT.Begin.mainLoop' is called, rendering to a created window is +-- ineffective because the window can not yet be displayed. hunk ./Graphics/UI/GLUT/Window.hs 80 --- The value returned is a unique identifier for the window, which can be --- used when calling 'setWindow'. +-- The value returned by 'createWindow' and 'createSubWindow' is a unique +-- identifier for the window, which can be used when calling 'setWindow'. + +-- | Create a top-level window. The given name will be provided to the window +-- system as the window\'s name. The intent is that the window system will label +-- the window with the name.Implicitly, the /current window/ is set to the newly +-- created window. hunk ./Graphics/UI/GLUT/Window.hs 88 --- X Implementation Notes: The proper X Inter-Client Communication --- Conventions Manual (ICCCM) top-level properties are established. The --- @WM_COMMAND@ property that lists the command line used to invoke the --- GLUT program is only established for the first window created. +-- /X Implementation Notes:/ The proper X Inter-Client Communication Conventions +-- Manual (ICCCM) top-level properties are established. The @WM_COMMAND@ +-- property that lists the command line used to invoke the GLUT program is only +-- established for the first window created. hunk ./Graphics/UI/GLUT/Window.hs 103 --- newly created subwindow. --- --- Each created window has a unique associated OpenGL context. State --- changes to a window\'s associated OpenGL context can be done --- immediately after the window is created. --- --- The /display state/ of a window is initially for the window to be --- shown. But the window\'s /display state/ is not actually acted upon --- until 'Graphics.UI.GLUT.Begin.mainLoop' is entered. This means until --- 'Graphics.UI.GLUT.Begin.mainLoop' is called, rendering to a created --- window is ineffective. Subwindows can not be iconified. --- --- Subwindows can be nested arbitrarily deep. +-- newly created subwindow. Subwindows can be nested arbitrarily deep. hunk ./Graphics/UI/GLUT/Window.hs 116 +-- | Destroy the specified window and the window\'s associated OpenGL context, +-- logical colormap (if the window is color index), and overlay and related +-- state (if an overlay has been established). Any subwindows of the destroyed +-- window are also destroyed by 'destroyWindow'. If the specified window was the +-- /current window/, the /current window/ becomes invalid ('getWindow' will +-- return 'Nothing'). + +foreign import ccall unsafe "glutDestroyWindow" destroyWindow :: Window -> IO () + +-------------------------------------------------------------------------------- + +-- | Set the /current window/. It does /not/ change the /layer in use/ for the +-- window; this is done using 'useLayer'. + +foreign import ccall unsafe "glutSetWindow" setWindow :: Window -> IO () + +-- | Return 'Just' the identifier of the /current window/. If no windows exist +-- or thepreviously /current window/ was destroyed, 'Nothing' is returned. + +getWindow :: IO (Maybe Window) +getWindow = do + w <- glutGetWindow + return $ if w == Window 0 then Nothing else Just w + +foreign import ccall unsafe "glutGetWindow" glutGetWindow :: IO Window + +-------------------------------------------------------------------------------- + +-- | Mark the normal plane of /current window/ as needing to be redisplayed. +-- The next iteration through 'Graphics.UI.GLUT.mainLoop', the window\'s display +-- callback will be called to redisplay the window\'s normal plane. Multiple +-- calls to 'postRedisplay' before the next display callback opportunity +-- generates only a single redisplay callback. 'postRedisplay' may be called +-- within a window\'s display or overlay display callback to re-mark that window +-- for redisplay. +-- +-- Logically, normal plane damage notification for a window is treated as a +-- 'postRedisplay' on the damaged window. Unlike damage reported by the window +-- system, 'postRedisplay' will /not/ set to true the normal plane\'s damaged +-- status (returned by @'LayerGet' 'NormalDamaged'@). +-- +-- Also, see 'Graphics.UI.GLUT.Overlay.postOverlayRedisplay'. + +foreign import ccall unsafe "glutPostRedisplay" postRedisplay :: IO () + +-- | Perform a buffer swap on the /layer in use/ for the /current window/. +-- Specifically, 'swapBuffers' promotes the contents of the back buffer of the +-- /layer in use/ of the /current window/ to become the contents of the front +-- buffer. The contents of the back buffer then become undefined. The update +-- typically takes place during the vertical retrace of the monitor, rather than +-- immediately after 'swapBuffers' is called. +-- +-- An implicit 'Graphics.Rendering.OpenGL.flush' is done by 'swapBuffers' before +-- it returns. Subsequent OpenGL commands can be issued immediately after +-- calling 'swapBuffers', but are not executed until the buffer exchange is +-- completed. +-- +-- If the /layer in use/ is not double buffered, 'swapBuffers' has no effect. + +foreign import ccall unsafe "glutSwapBuffers" swapBuffers :: IO () + +-------------------------------------------------------------------------------- + +-- $ChangingTheWindowGeometry +-- Note that the requests by 'positionWindow', 'reshapeWindow', and 'fullScreen' +-- are not processed immediately. A request is executed after returning to the +-- main event loop. This allows multiple requests to the same window to be +-- coalesced. +-- +-- 'reshapeWindow' and 'positionWindow' requests on a window will disable the +-- full screen status of the window. + +-- | Request a change in the position of the /current window/. For top-level +-- windows, parameters of 'WindowPosition' are pixel offsets from the screen +-- origin. For subwindows, the parameters are pixel offsets from the window\'s +-- parent window origin. +-- +-- In the case of top-level windows, a 'positionWindow' call is considered only +-- a request for positioning the window. The window system is free to apply its +-- own policies to top-level window placement. The intent is that top-level +-- windows should be repositioned according 'positionWindow'\'s parameter. + +positionWindow :: WindowPosition -> IO () +positionWindow (WindowPosition x y) = glutPositionWindow x y + +foreign import ccall unsafe "glutPositionWindow" glutPositionWindow :: + CInt -> CInt -> IO () + +-- | Request a change in the size of the /current window/. The parameters of +-- 'WindowSize' are size extents in pixels. The width and height must be +-- positive values. +-- +-- In the case of top-level windows, a 'reshapeWindow' call is considered only a +-- request for sizing the window. The window system is free to apply its own +-- policies to top-level window sizing. The intent is that top-level windows +-- should be reshaped according 'reshapeWindow'\'s parameters. Whether a +-- reshape actually takes effect and, if so, the reshaped dimensions are +-- reported to the program by a reshape callback. + +reshapeWindow :: WindowSize -> IO () +reshapeWindow (WindowSize w h) = glutReshapeWindow w h + +foreign import ccall unsafe "glutReshapeWindow" glutReshapeWindow :: + CInt -> CInt -> IO () + +-- | Request that the /current window/ be made full screen. The exact semantics +-- of what full screen means may vary by window system. The intent is to make +-- the window as large as possible and disable any window decorations or borders +-- added the window system. The window width and height are not guaranteed to be +-- the same as the screen width and height, but that is the intent of making a +-- window full screen. +-- +-- 'fullScreen' is defined to work only on top-level windows. +-- +-- /X Implementation Notes:/ In the X implementation of GLUT, full screen is +-- implemented by sizing and positioning the window to cover the entire screen +-- and posting the @_MOTIF_WM_HINTS@ property on the window requesting +-- absolutely no decorations. Non-Motif window managers may not respond to +-- @_MOTIF_WM_HINTS@. + +foreign import ccall unsafe "glutFullScreen" fullScreen :: IO () + +-------------------------------------------------------------------------------- + +-- $ManipulatingTheStackingOrder +-- 'pushWindow' and 'popWindow' work on both top-level windows and subwindows. +-- The effect of pushing and popping windows does not take place immediately. +-- Instead the push or pop is saved for execution upon return to the GLUT event +-- loop. Subsequent pop or push requests on a window replace the previously +-- saved request for that window. The effect of pushing and popping top-level +-- windows is subject to the window system\'s policy for restacking windows. + +-- | Change the stacking order of the /current window/ relative to its siblings +-- (lowering it). + +foreign import ccall unsafe "glutPushWindow" pushWindow :: IO () + +-- | Change the stacking order of the /current window/ relative to its siblings, +-- bringing the /current window/ closer to the top. + +foreign import ccall unsafe "glutPopWindow" popWindow :: IO () + +-------------------------------------------------------------------------------- + +-- $ManagingTheDisplayStatus +-- Note that the effect of showing, hiding, and iconifying windows does not take +-- place immediately. Instead the requests are saved for execution upon return +-- to the GLUT event loop. Subsequent show, hide, or iconification requests on a +-- window replace the previously saved request for that window. The effect of +-- hiding, showing, or iconifying top-level windows is subject to the window +-- system\'s policy for displaying windows. + + +-- | Show the /current window/ (though it may still not be visible if obscured by +-- other shown windows). + +foreign import ccall unsafe "glutShowWindow" showWindow :: IO () + +-- | Hide the /current window/. + +foreign import ccall unsafe "glutHideWindow" hideWindow :: IO () + +-- | Iconify a top-level window. Note that GLUT prohibits iconification of a +-- subwindow. + +foreign import ccall unsafe "glutIconifyWindow" iconifyWindow :: IO () + +-------------------------------------------------------------------------------- + +-- $ChangingTheWindowIconTitle +-- 'setWindowTitle' and 'setIconTitle' should be called only when the /current +-- window/ is a top-level window. Upon creation of a top-level window, the +-- window and icon names are determined by the name given to 'createWindow'. +-- Once created, 'setWindowTitle' and 'setIconTitle' can change the window and +-- icon names respectively of top-level windows. Each call requests the window +-- system change the title appropriately. Requests are not buffered or +-- coalesced. The policy by which the window and icon name are displayed is +-- window system dependent. + +-- | Set the window title of the /current top-level window/. + +setWindowTitle :: String -> IO () +setWindowTitle name = withCString name glutSetWindowTitle + +foreign import ccall unsafe "glutSetWindowTitle" glutSetWindowTitle :: + CString -> IO () + +-- | Set the icon title of the /current top-level window/. + +setIconTitle :: String -> IO () +setIconTitle name = withCString name glutSetIconTitle + +foreign import ccall unsafe "glutSetIconTitle" glutSetIconTitle :: + CString -> IO () + +-------------------------------------------------------------------------------- + +-- | +data Cursor + = CursorRightArrow -- ^ Arrow pointing up and to the right. + | CursorLeftArrow -- ^ Arrow pointing up and to the left. + | CursorInfo -- ^ Pointing hand. + | CursorDestroy -- ^ Skull & cross bones. + | CursorHelp -- ^ Question mark. + | CursorCycle -- ^ Arrows rotating in a circle. + | CursorSpray -- ^ Spray can. + | CursorWait -- ^ Wrist watch. + | CursorText -- ^ Insertion point cursor for text. + | CursorCrosshair -- ^ Simple cross-hair. + | CursorUpDown -- ^ Bi-directional pointing up & down. + | CursorLeftRight -- ^ Bi-directional pointing left & right. + | CursorTopSide -- ^ Arrow pointing to top side. + | CursorBottomSide -- ^ Arrow pointing to bottom side. + | CursorLeftSide -- ^ Arrow pointing to left side. + | CursorRightSide -- ^ Arrow pointing to right side. + | CursorTopLeftCorner -- ^ Arrow pointing to top-left corner. + | CursorTopRightCorner -- ^ Arrow pointing to top-right corner. + | CursorBottomRightCorner -- ^ Arrow pointing to bottom-left corner. + | CursorBottomLeftCorner -- ^ Arrow pointing to bottom-right corner. + | CursorInherit -- ^ Use parent\'s cursor. + | CursorNone -- ^ Invisible cursor. + | CursorFullCrosshair -- ^ Full-screen cross-hair cursor (if possible, otherwise 'CursorCrosshair'). + deriving ( Eq, Ord ) + +marshalCursor :: Cursor -> CInt +marshalCursor c = case c of + CursorRightArrow -> glut_CURSOR_RIGHT_ARROW + CursorLeftArrow -> glut_CURSOR_LEFT_ARROW + CursorInfo -> glut_CURSOR_INFO + CursorDestroy -> glut_CURSOR_DESTROY + CursorHelp -> glut_CURSOR_HELP + CursorCycle -> glut_CURSOR_CYCLE + CursorSpray -> glut_CURSOR_SPRAY + CursorWait -> glut_CURSOR_WAIT + CursorText -> glut_CURSOR_TEXT + CursorCrosshair -> glut_CURSOR_CROSSHAIR + CursorUpDown -> glut_CURSOR_UP_DOWN + CursorLeftRight -> glut_CURSOR_LEFT_RIGHT + CursorTopSide -> glut_CURSOR_TOP_SIDE + CursorBottomSide -> glut_CURSOR_BOTTOM_SIDE + CursorLeftSide -> glut_CURSOR_LEFT_SIDE + CursorRightSide -> glut_CURSOR_RIGHT_SIDE + CursorTopLeftCorner -> glut_CURSOR_TOP_LEFT_CORNER + CursorTopRightCorner -> glut_CURSOR_TOP_RIGHT_CORNER + CursorBottomRightCorner -> glut_CURSOR_BOTTOM_RIGHT_CORNER + CursorBottomLeftCorner -> glut_CURSOR_BOTTOM_LEFT_CORNER + CursorInherit -> glut_CURSOR_INHERIT + CursorNone -> glut_CURSOR_NONE + CursorFullCrosshair -> glut_CURSOR_FULL_CROSSHAIR + +-- | Change the cursor image of the /current window/. Each call requests the +-- window system change the cursor appropriately. The cursor image when a window +-- is created is 'CursorInherit'. The exact cursor images used are +-- implementation dependent. The intent is for the image to convey the meaning +-- of the cursor name. For a top-level window, 'CursorInherit' uses the default +-- window system cursor. +-- +-- /X Implementation Notes:/ GLUT for X uses SGI\'s @_SGI_CROSSHAIR_CURSOR@ +-- convention to access a full-screen cross-hair cursor if possible. + +setCursor :: Cursor -> IO () +setCursor = glutSetCursor . marshalCursor + +foreign import ccall unsafe "glutSetCursor" glutSetCursor :: CInt -> IO () + hunk ./Graphics/UI/GLUT/Window.hs 30 - postRedisplay, swapBuffers, + postRedisplay, postWindowRedisplay, swapBuffers, hunk ./Graphics/UI/GLUT/Window.hs 53 - Cursor(..), setCursor + Cursor(..), setCursor, warpPointer hunk ./Graphics/UI/GLUT/Window.hs 161 +-- | Mark the normal plane of the given window as needing to be redisplayed, +-- otherwise the same as 'postRedisplay'. +-- +-- The advantage of this routine is that it saves the cost of a 'setWindow' call +-- (entailing an expensive OpenGL context switch), which is particularly useful +-- when multiple windows need redisplays posted at the same time. +-- +-- Also, see 'Graphics.UI.GLUT.Overlay.postWindowOverlayRedisplay'. + +foreign import ccall unsafe "glutPostWindowRedisplay" postWindowRedisplay :: + Window -> IO () + hunk ./Graphics/UI/GLUT/Window.hs 393 +-- | Warp the window system\'s pointer to a new location relative to the origin +-- of the /current window/ by the specified pixel offset, which may be negative. +-- The warp is done immediately. +-- +-- If the pointer would be warped outside the screen\'s frame buffer region, the +-- location will be clamped to the nearest screen edge. The window system is +-- allowed to further constrain the pointer\'s location in window system +-- dependent ways. +-- +-- Good advice from Xlib\'s @XWarpPointer@ man page: \"There is seldom any +-- reason for calling this function. The pointer should normally be left to the +-- user.\" + +warpPointer :: WindowPosition -> IO () +warpPointer (WindowPosition x y) = glutWarpPointer x y + +foreign import ccall unsafe "glutWarpPointer" glutWarpPointer :: + CInt -> CInt -> IO () + hunk ./Graphics/UI/GLUT/Begin.hs 1 ------------------------------------------------------------------------------ +-------------------------------------------------------------------------------- hunk ./Graphics/UI/GLUT/Begin.hs 15 ------------------------------------------------------------------------------ +-------------------------------------------------------------------------------- hunk ./Graphics/UI/GLUT/Begin.hs 22 --- | Enter the GLUT event processing loop. This routine should be called at --- most once in a GLUT program. Once called, this routine will never return. --- It will call as necessary any callbacks that have been registered. +-- | Enter the GLUT event processing loop. This routine should be called at most +-- once in a GLUT program. Once called, this routine will never return. It will +-- call as necessary any callbacks that have been registered. + addfile ./Graphics/UI/GLUT/Objects.hs hunk ./Graphics/UI/GLUT/Objects.hs 1 +-------------------------------------------------------------------------------- +-- | +-- Module : Graphics.UI.GLUT.Objects +-- Copyright : (c) Sven Panne 2002 +-- License : BSD-style (see the file libraries/GLUT/LICENSE) +-- +-- Maintainer : sven_panne@yahoo.com +-- Stability : experimental +-- Portability : portable +-- +-- GLUT includes a number of routines for generating easily recognizable 3D +-- geometric objects. These routines reflect functionality available in the +-- @aux@ toolkit described in the /OpenGL Programmer\'s Guide/ and are included +-- in GLUT to allow the construction of simple GLUT programs that render +-- recognizable objects. These routines can be implemented as pure OpenGL +-- rendering routines. The routines do not generate display lists for the +-- objects they create. The routines generate normals appropriate for lighting +-- but do not generate texture coordinates (except for the teapot). +-- +-------------------------------------------------------------------------------- + +module Graphics.UI.GLUT.Objects ( + -- * Platonic solids + + -- $PlatonicSolids + solidCube, wireCube, + solidDodecahedron, wireDodecahedron, + solidIcosahedron, wireIcosahedron, + solidOctahedron, wireOctahedron, + solidTetrahedron, wireTetrahedron, + + -- * Rounded objects + solidSphere, wireSphere, + solidCone, wireCone, + solidTorus, wireTorus, + + -- * Newell\'s teapot + + -- $NewellsTeapot + solidTeapot, wireTeapot +) where + +import Graphics.Rendering.OpenGL.GL.BasicTypes ( GLdouble, GLint ) + +-------------------------------------------------------------------------------- +-- $PlatonicSolids +-- The following routines render the five Platonic solids (see +-- ), either in solid or +-- wireframe form. + +-------------------------------------------------------------------------------- + +-- | Render a solid cube centered at the modeling coordinates origin with sides +-- of the given length. + +foreign import ccall unsafe "glutSolidCube" solidCube + :: GLdouble -- ^ Length of the cube sides + -> IO () + +-- | Render a wireframe cube centered at the modeling coordinates origin with sides +-- of the given length. + +foreign import ccall unsafe "glutWireCube" wireCube + :: GLdouble -- ^ Length of the cube sides + -> IO () + +-------------------------------------------------------------------------------- + +-- | Render a solid dodecahedron (12-sided regular solid) centered at the +-- modeling coordinates origin with a radius of @sqrt 3@. + +foreign import ccall unsafe "glutSolidDodecahedron" solidDodecahedron :: IO () + +-- | Render a wireframe dodecahedron (12-sided regular solid) centered at the +-- modeling coordinates origin with a radius of @sqrt 3@. + +foreign import ccall unsafe "glutWireDodecahedron" wireDodecahedron :: IO () + +-------------------------------------------------------------------------------- + +-- | Render a solid icosahedron (20-sided regular solid) centered at the +-- modeling coordinates origin with a radius of 1.0. + +foreign import ccall unsafe "glutWireIcosahedron" wireIcosahedron :: IO () + +-- | Render a wireframe icosahedron (20-sided regular solid) centered at the +-- modeling coordinates origin with a radius of 1.0. + +foreign import ccall unsafe "glutSolidIcosahedron" solidIcosahedron :: IO () + +-------------------------------------------------------------------------------- + +-- | Render a solid octahedron (8-sided regular solid) centered at the modeling +-- coordinates origin with a radius of 1.0. + +foreign import ccall unsafe "glutSolidOctahedron" solidOctahedron :: IO () + +-- | Render a wireframe octahedron (8-sided regular solid) centered at the +-- modeling coordinates origin with a radius of 1.0. + +foreign import ccall unsafe "glutWireOctahedron" wireOctahedron :: IO () + +-------------------------------------------------------------------------------- + +-- | Render a solid tetrahedron (4-sided regular solid) centered at the modeling +-- coordinates origin with a radius of @sqrt 3@. + +foreign import ccall unsafe "glutWireTetrahedron" wireTetrahedron :: IO () + +-- | Render a wireframe tetrahedron (4-sided regular solid) centered at the +-- modeling coordinates origin with a radius of @sqrt 3@. + +foreign import ccall unsafe "glutSolidTetrahedron" solidTetrahedron :: IO () + +-------------------------------------------------------------------------------- + +-- | Render a solid sphere centered at the modeling coordinates origin of the +-- specified radius. The sphere is subdivided around the Z axis into slices +-- and along the Z axis into stacks. + +foreign import ccall unsafe "glutSolidSphere" solidSphere + :: GLdouble -- ^ Radius of the sphere. + -> GLint -- ^ Number of subdivisions (slices) around the Z axis, similar to lines of longitude. + -> GLint -- ^ The number of subdivisions (stacks) along the Z axis, similar to lines of latitude. + -> IO () + +-- | Render a wireframe sphere centered at the modeling coordinates origin of the +-- specified radius. The sphere is subdivided around the Z axis into slices +-- and along the Z axis into stacks. + +foreign import ccall unsafe "glutWireSphere" wireSphere + :: GLdouble -- ^ Radius of the sphere. + -> GLint -- ^ Number of subdivisions (slices) around the Z axis, similar to lines of longitude. + -> GLint -- ^ The number of subdivisions (stacks) along the Z axis, similar to lines of latitude. + -> IO () + +-------------------------------------------------------------------------------- + +-- | Render a solid cone oriented along the Z axis. The base of the cone is +-- placed at Z = 0, and the top at Z = height. The cone is subdivided around the +-- Z axis into slices, and along the Z axis into stacks. + +foreign import ccall unsafe "glutSolidCone" solidCone + :: GLdouble -- ^ Radius of the base of the cone. + -> GLdouble -- ^ Height of the cone. + -> GLint -- ^ Number of subdivisions around the Z axis. + -> GLint -- ^ The number of subdivisions along the Z axis. + -> IO () + +-- | Render a wireframe cone oriented along the Z axis. The base of the cone is +-- placed at Z = 0, and the top at Z = height. The cone is subdivided around the +-- Z axis into slices, and along the Z axis into stacks. + +foreign import ccall unsafe "glutWireCone" wireCone + :: GLdouble -- ^ Radius of the base of the cone. + -> GLdouble -- ^ Height of the cone. + -> GLint -- ^ Number of subdivisions around the Z axis. + -> GLint -- ^ The number of subdivisions along the Z axis. + -> IO () + +-------------------------------------------------------------------------------- + +-- | Render a solid torus (doughnut) centered at the modeling coordinates origin +-- whose axis is aligned with the Z axis. + +foreign import ccall unsafe "glutSolidTorus" solidTorus + :: GLdouble -- ^ Inner radius of the torus. + -> GLdouble -- ^ Outer radius of the torus. + -> GLint -- ^ Number of sides for each radial section. + -> GLint -- ^ Number of radial divisions for the torus. + -> IO () + +-- | Render a wireframe torus (doughnut) centered at the modeling coordinates +-- origin whose axis is aligned with the Z axis. + +foreign import ccall unsafe "glutWireTorus" wireTorus + :: GLdouble -- ^ Inner radius of the torus. + -> GLdouble -- ^ Outer radius of the torus. + -> GLint -- ^ Number of sides for each radial section. + -> GLint -- ^ Number of radial divisions for the torus. + -> IO () + +-------------------------------------------------------------------------------- +-- $NewellsTeapot +-- The following routines render the classic teapot modeled by Martin Newell in +-- 1975. Both surface normals and texture coordinates for the teapot are +-- generated. The teapot is generated with OpenGL evaluators. + +-- | Render a solid teapot. + +foreign import ccall unsafe "glutSolidTeapot" solidTeapot + :: GLdouble -- ^ Relative size of the teapot + -> IO () + +-- | Render a wireframe teapot. + +foreign import ccall unsafe "glutWireTeapot" wireTeapot + :: GLdouble -- ^ Relative size of the teapot + -> IO () hunk ./Graphics/UI/GLUT.hs 48 - module Graphics.UI.GLUT.Colormap + module Graphics.UI.GLUT.Colormap, + module Graphics.UI.GLUT.Objects hunk ./Graphics/UI/GLUT.hs 54 -import Graphics.UI.GLUT.Window ( Window, createWindow ) +import Graphics.UI.GLUT.Window hunk ./Graphics/UI/GLUT.hs 56 +import Graphics.UI.GLUT.Objects hunk ./Graphics/UI/GLUT/Initialization.hs 98 -init :: String -- @ The program name. - -> [String] -- @ The command line arguments - -> IO [String] -- @ Non-GLUT command line arguments +init :: String -- ^ The program name. + -> [String] -- ^ The command line arguments + -> IO [String] -- ^ Non-GLUT command line arguments hunk ./Graphics/UI/GLUT/Window.hs 94 - :: String -- @ The window name - -> IO Window -- @ The identifier for the newly created window + :: String -- ^ The window name + -> IO Window -- ^ The identifier for the newly created window hunk ./Graphics/UI/GLUT/Window.hs 106 - :: Window -- @ Identifier of the subwindow\'s parent window. - -> WindowPosition -- @ Window position in pixels relative to parent window\'s origin. - -> WindowSize -- @ Window size in pixels - -> IO Window -- @ The identifier for the newly created subwindow + :: Window -- ^ Identifier of the subwindow\'s parent window. + -> WindowPosition -- ^ Window position in pixels relative to parent window\'s origin. + -> WindowSize -- ^ Window size in pixels + -> IO Window -- ^ The identifier for the newly created subwindow hunk ./Graphics/UI/GLUT/Window.hs 155 --- status (returned by @'LayerGet' 'NormalDamaged'@). +-- status (returned by @'layerGet' 'NormalDamaged'@). hunk ./Graphics/UI/GLUT/Window.hs 325 --- | +-- | The different cursor images GLUT supports. hunk ./Graphics/UI/GLUT/Constants.hs 19 +import Graphics.Rendering.OpenGL.GL.BasicTypes ( GLenum ) hunk ./Graphics/UI/GLUT/Constants.hs 120 -glut_NORMAL, glut_OVERLAY :: CInt +glut_NORMAL, glut_OVERLAY :: GLenum addfile ./Graphics/UI/GLUT/Overlay.hs hunk ./Graphics/UI/GLUT/Overlay.hs 1 +-------------------------------------------------------------------------------- +-- | +-- Module : Graphics.UI.GLUT.Overlay +-- Copyright : (c) Sven Panne 2002 +-- License : BSD-style (see the file libraries/GLUT/LICENSE) +-- +-- Maintainer : sven_panne@yahoo.com +-- Stability : experimental +-- Portability : portable +-- +-- When overlay hardware is available, GLUT provides a set of routines for +-- establishing, using, and removing an overlay for GLUT windows. When an +-- overlay is established, a separate OpenGL context is also established. A +-- window\'s overlay OpenGL state is kept distinct from the normal planes OpenGL +-- state. +-- +-------------------------------------------------------------------------------- + +module Graphics.UI.GLUT.Overlay ( + -- * Overlay creation and destruction + establishOverlay, removeOverlay, + + -- * Changing the /layer in use/ + Layer(..), useLayer, + + -- * Re-displaying + postOverlayRedisplay, + + -- * Showing and hiding an overlay + + -- $ShowingAndHidingAnOverlay + showOverlay, hideOverlay +) where + +import Graphics.Rendering.OpenGL.GL.BasicTypes ( GLenum ) +import Graphics.UI.GLUT.Constants + +-------------------------------------------------------------------------------- + +-- | Establish an overlay (if possible) for the /current window/. The requested +-- display mode for the overlay is determined by the /initial display mode/. +-- @'layerGet' 'OverlayPossible'@ can be called to determine if an overlay is +-- possible for the /current window/ with the current /initial display mode/. Do +-- not attempt to establish an overlay when one is not possible; GLUT will +-- terminate the program. +-- +-- If 'establishOverlay' is called when an overlay already exists, the existing +-- overlay is first removed, and then a new overlay is established. The state of +-- the old overlay\'s OpenGL context is discarded. +-- +-- The initial display state of an overlay is shown, however the overlay is only +-- actually shown if the overlay\'s window is shown. +-- +-- Implicitly, the window\'s /layer in use/ changes to the overlay immediately +-- after the overlay is established. +-- +-- /X Implementation Notes:/ GLUT for X uses the @SERVER_OVERLAY_VISUALS@ +-- convention to determine if overlay visuals are available. While the +-- convention allows for opaque overlays (no transparency) and overlays with the +-- transparency specified as a bitmask, GLUT overlay management only provides +-- access to transparent pixel overlays. +-- +-- Until RGBA overlays are better understood, GLUT only supports color index +-- overlays. + +foreign import ccall safe "glutEstablishOverlay" establishOverlay :: IO () + +-- | Remove the overlay (if one exists). It is safe to call 'removeOverlay' even +-- if no overlay is currently established, it does nothing in this case. +-- Implicitly, the window\'s /layer in use/ changes to the normal plane +-- immediately once the overlay is removed. +-- +-- If the program intends to re-establish the overlay later, it is typically +-- faster and less resource intensive to use 'hideOverlay' and 'showOverlay' to +-- simply change the display status of the overlay. + +foreign import ccall safe "glutRemoveOverlay" removeOverlay :: IO () + +-------------------------------------------------------------------------------- + +-- | The /layer in use/. +data Layer + = Normal -- ^ The normal plane. + | Overlay -- ^ The overlay. + deriving ( Eq, Ord ) + +marshalLayer :: Layer -> GLenum +marshalLayer l = case l of + Normal -> glut_NORMAL + Overlay -> glut_OVERLAY + +-- | Change the per-window /layer in use/ for the /current window/, selecting +-- either the normal plane or overlay. The overlay should only be specified if +-- an overlay exists, however windows without an overlay may still call +-- @'useLayer' 'Normal'@. OpenGL commands for the window are directed to the +-- current /layer in use/. +-- +-- To query the /layer in use/ for a window, call @'layerGet' 'LayerInUse'@. + +useLayer :: Layer -> IO () +useLayer = glutUseLayer . marshalLayer + +foreign import ccall safe "glutUseLayer" glutUseLayer :: GLenum -> IO () + +-------------------------------------------------------------------------------- + +-- | Mark the overlay of the /current window/ as needing to be redisplayed. The +-- next iteration through 'Graphics.UI.GLUT.Begin.mainLoop', the window\'s +-- overlay display callback (or simply the display callback if no overlay +-- display callback is registered) will be called to redisplay the window\'s +-- overlay plane. Multiple calls to 'postOverlayRedisplay' before the next +-- display callback opportunity (or overlay display callback opportunity if one +-- is registered) generate only a single redisplay. 'postOverlayRedisplay' may +-- be called within a window\'s display or overlay display callback to re-mark +-- that window for redisplay. +-- +-- Logically, overlay damage notification for a window is treated as a +-- 'postOverlayRedisplay' on the damaged window. Unlike damage reported by the +-- window system, 'postOverlayRedisplay' will not set to true the overlay\'s +-- damaged status (returned by @'layerGet' 'OverlayDamaged'@). +-- +-- Also, see 'Graphics.UI.GLUT.Window.postRedisplay'. + +foreign import ccall safe "glutPostOverlayRedisplay" postOverlayRedisplay :: + IO () + +-------------------------------------------------------------------------------- + +-- $ShowingAndHidingAnOverlay +-- The effect of showing or hiding an overlay takes place immediately. Note that +-- 'showOverlay' will not actually display the overlay unless the window is also +-- shown (and even a shown window may be obscured by other windows, thereby +-- obscuring the overlay). It is typically faster and less resource intensive to +-- use the routines below to control the display status of an overlay as opposed +-- to removing and re-establishing the overlay. + +-- | Show the overlay of the /current window/. + +foreign import ccall safe "glutShowOverlay" showOverlay :: IO () + +-- | Hide the overlay of the /current window/. + +foreign import ccall safe "glutHideOverlay" hideOverlay :: IO () hunk ./Graphics/UI/GLUT.hs 48 + module Graphics.UI.GLUT.Overlay, hunk ./Graphics/UI/GLUT.hs 56 +import Graphics.UI.GLUT.Overlay hunk ./Graphics/UI/GLUT/Window.hs 327 - = CursorRightArrow -- ^ Arrow pointing up and to the right. - | CursorLeftArrow -- ^ Arrow pointing up and to the left. - | CursorInfo -- ^ Pointing hand. - | CursorDestroy -- ^ Skull & cross bones. - | CursorHelp -- ^ Question mark. - | CursorCycle -- ^ Arrows rotating in a circle. - | CursorSpray -- ^ Spray can. - | CursorWait -- ^ Wrist watch. - | CursorText -- ^ Insertion point cursor for text. - | CursorCrosshair -- ^ Simple cross-hair. - | CursorUpDown -- ^ Bi-directional pointing up & down. - | CursorLeftRight -- ^ Bi-directional pointing left & right. - | CursorTopSide -- ^ Arrow pointing to top side. - | CursorBottomSide -- ^ Arrow pointing to bottom side. - | CursorLeftSide -- ^ Arrow pointing to left side. - | CursorRightSide -- ^ Arrow pointing to right side. - | CursorTopLeftCorner -- ^ Arrow pointing to top-left corner. - | CursorTopRightCorner -- ^ Arrow pointing to top-right corner. - | CursorBottomRightCorner -- ^ Arrow pointing to bottom-left corner. - | CursorBottomLeftCorner -- ^ Arrow pointing to bottom-right corner. - | CursorInherit -- ^ Use parent\'s cursor. - | CursorNone -- ^ Invisible cursor. - | CursorFullCrosshair -- ^ Full-screen cross-hair cursor (if possible, otherwise 'CursorCrosshair'). + = RightArrow -- ^ Arrow pointing up and to the right. + | LeftArrow -- ^ Arrow pointing up and to the left. + | Info -- ^ Pointing hand. + | Destroy -- ^ Skull & cross bones. + | Help -- ^ Question mark. + | Cycle -- ^ Arrows rotating in a circle. + | Spray -- ^ Spray can. + | Wait -- ^ Wrist watch. + | Text -- ^ Insertion point cursor for text. + | Crosshair -- ^ Simple cross-hair. + | UpDown -- ^ Bi-directional pointing up & down. + | LeftRight -- ^ Bi-directional pointing left & right. + | TopSide -- ^ Arrow pointing to top side. + | BottomSide -- ^ Arrow pointing to bottom side. + | LeftSide -- ^ Arrow pointing to left side. + | RightSide -- ^ Arrow pointing to right side. + | TopLeftCorner -- ^ Arrow pointing to top-left corner. + | TopRightCorner -- ^ Arrow pointing to top-right corner. + | BottomRightCorner -- ^ Arrow pointing to bottom-left corner. + | BottomLeftCorner -- ^ Arrow pointing to bottom-right corner. + | Inherit -- ^ Use parent\'s cursor. + | None -- ^ Invisible cursor. + | FullCrosshair -- ^ Full-screen cross-hair cursor (if possible, otherwise 'Crosshair'). hunk ./Graphics/UI/GLUT/Window.hs 354 - CursorRightArrow -> glut_CURSOR_RIGHT_ARROW - CursorLeftArrow -> glut_CURSOR_LEFT_ARROW - CursorInfo -> glut_CURSOR_INFO - CursorDestroy -> glut_CURSOR_DESTROY - CursorHelp -> glut_CURSOR_HELP - CursorCycle -> glut_CURSOR_CYCLE - CursorSpray -> glut_CURSOR_SPRAY - CursorWait -> glut_CURSOR_WAIT - CursorText -> glut_CURSOR_TEXT - CursorCrosshair -> glut_CURSOR_CROSSHAIR - CursorUpDown -> glut_CURSOR_UP_DOWN - CursorLeftRight -> glut_CURSOR_LEFT_RIGHT - CursorTopSide -> glut_CURSOR_TOP_SIDE - CursorBottomSide -> glut_CURSOR_BOTTOM_SIDE - CursorLeftSide -> glut_CURSOR_LEFT_SIDE - CursorRightSide -> glut_CURSOR_RIGHT_SIDE - CursorTopLeftCorner -> glut_CURSOR_TOP_LEFT_CORNER - CursorTopRightCorner -> glut_CURSOR_TOP_RIGHT_CORNER - CursorBottomRightCorner -> glut_CURSOR_BOTTOM_RIGHT_CORNER - CursorBottomLeftCorner -> glut_CURSOR_BOTTOM_LEFT_CORNER - CursorInherit -> glut_CURSOR_INHERIT - CursorNone -> glut_CURSOR_NONE - CursorFullCrosshair -> glut_CURSOR_FULL_CROSSHAIR + RightArrow -> glut_CURSOR_RIGHT_ARROW + LeftArrow -> glut_CURSOR_LEFT_ARROW + Info -> glut_CURSOR_INFO + Destroy -> glut_CURSOR_DESTROY + Help -> glut_CURSOR_HELP + Cycle -> glut_CURSOR_CYCLE + Spray -> glut_CURSOR_SPRAY + Wait -> glut_CURSOR_WAIT + Text -> glut_CURSOR_TEXT + Crosshair -> glut_CURSOR_CROSSHAIR + UpDown -> glut_CURSOR_UP_DOWN + LeftRight -> glut_CURSOR_LEFT_RIGHT + TopSide -> glut_CURSOR_TOP_SIDE + BottomSide -> glut_CURSOR_BOTTOM_SIDE + LeftSide -> glut_CURSOR_LEFT_SIDE + RightSide -> glut_CURSOR_RIGHT_SIDE + TopLeftCorner -> glut_CURSOR_TOP_LEFT_CORNER + TopRightCorner -> glut_CURSOR_TOP_RIGHT_CORNER + BottomRightCorner -> glut_CURSOR_BOTTOM_RIGHT_CORNER + BottomLeftCorner -> glut_CURSOR_BOTTOM_LEFT_CORNER + Inherit -> glut_CURSOR_INHERIT + None -> glut_CURSOR_NONE + FullCrosshair -> glut_CURSOR_FULL_CROSSHAIR hunk ./Graphics/UI/GLUT/Window.hs 380 --- is created is 'CursorInherit'. The exact cursor images used are --- implementation dependent. The intent is for the image to convey the meaning --- of the cursor name. For a top-level window, 'CursorInherit' uses the default --- window system cursor. +-- is created is 'Inherit'. The exact cursor images used are implementation +-- dependent. The intent is for the image to convey the meaning of the cursor +-- name. For a top-level window, 'Inherit' uses the default window system +-- cursor. addfile ./Graphics/UI/GLUT/Fonts.hs adddir ./cbits addfile ./cbits/HsGLUT.c addfile ./cbits/Makefile adddir ./include addfile ./include/HsGLUT.h addfile ./include/Makefile hunk ./GLUT.conf.in 12 - library_dirs = [ "$libdir/libraries/GLUT" ], + library_dirs = [ "$libdir/libraries/GLUT" + , "$libdir/libraries/GLUT/cbits" ], hunk ./GLUT.conf.in 16 - extra_libraries = [], + extra_libraries = [ "HSGLUT_cbits"], +#ifdef INSTALLING hunk ./GLUT.conf.in 19 +#else + include_dirs = [ "$libdir/libraries/GLUT/include" ], +#endif hunk ./Graphics/UI/GLUT/Fonts.hs 1 +-------------------------------------------------------------------------------- +-- | +-- Module : Graphics.UI.GLUT.Fonts +-- Copyright : (c) Sven Panne 2002 +-- License : BSD-style (see the file libraries/GLUT/LICENSE) +-- +-- Maintainer : sven_panne@yahoo.com +-- Stability : experimental +-- Portability : portable +-- +-- GLUT supports two type of font rendering: stroke fonts, meaning each +-- character is rendered as a set of line segments; and bitmap fonts, where each +-- character is a bitmap generated with 'Graphics.Rendering.OpenGL.GL.bitmap'. +-- Stroke fonts have the advantage that because they are geometry, they can be +-- arbitrarily scale and rendered. Bitmap fonts are less flexible since they are +-- rendered as bitmaps but are usually faster than stroke fonts. +-- +-------------------------------------------------------------------------------- + +module Graphics.UI.GLUT.Fonts ( + -- * Bitmap fonts + BitmapFont(..), bitmapCharacter, bitmapWidth, + -- * Stroke fonts + StrokeFont(..), strokeCharacter, strokeWidth +) where + +import Foreign.C.Types ( CInt ) +import Foreign.Ptr ( Ptr ) + +-------------------------------------------------------------------------------- + +-- | The bitmap fonts available in GLUT. The exact bitmap to be used is +-- defined by the standard X glyph bitmaps for the X font with the given name. + +data BitmapFont + = Fixed8By13 -- ^ A fixed width font with every character fitting in an 8 + -- by 13 pixel rectangle. + -- (@-misc-fixed-medium-r-normal--13-120-75-75-C-80-iso8859-1@) + | Fixed9By15 -- ^ A fixed width font with every character fitting in an 9 + -- by 15 pixel rectangle. + -- (@-misc-fixed-medium-r-normal--15-140-75-75-C-90-iso8859-1@) + | TimesRoman10 -- ^ A 10-point proportional spaced Times Roman font. + -- (@-adobe-times-medium-r-normal--10-100-75-75-p-54-iso8859-1@) + | TimesRoman24 -- ^ A 24-point proportional spaced Times Roman font. + -- (@-adobe-times-medium-r-normal--24-240-75-75-p-124-iso8859-1@) + | Helvetica10 -- ^ A 10-point proportional spaced Helvetica font. + -- (@-adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1@) + | Helvetica12 -- ^ A 12-point proportional spaced Helvetica font. + -- (@-adobe-helvetica-medium-r-normal--12-120-75-75-p-67-iso8859-1@) + | Helvetica18 -- ^ A 18-point proportional spaced Helvetica font. + -- (@-adobe-helvetica-medium-r-normal--18-180-75-75-p-98-iso8859-1@) + deriving ( Eq, Ord ) + +-- Alas, fonts in GLUT are not denoted by some integral value, but by opaque +-- pointers on the C side. Even worse: For WinDoze, they are simply small ints, +-- casted to void*, for other platforms addresses of global variables are used. +-- And all is done via ugly #ifdef-ed #defines... Aaaaargl! So the only portable +-- way is using integers on the Haskell side and doing the marshaling via some +-- small C wrappers around those macros. *sigh* +type GLUTbitmapFont = Ptr () + +foreign import ccall "HsGLUT.h hOpenGL_marshalBitmapFont" + hOpenGL_marshalBitmapFont :: CInt -> IO GLUTbitmapFont + +marhshalBitmapFont :: BitmapFont -> IO GLUTbitmapFont +marhshalBitmapFont f = case f of + Fixed8By13 -> hOpenGL_marshalBitmapFont 0 + Fixed9By15 -> hOpenGL_marshalBitmapFont 1 + TimesRoman10 -> hOpenGL_marshalBitmapFont 2 + TimesRoman24 -> hOpenGL_marshalBitmapFont 3 + Helvetica10 -> hOpenGL_marshalBitmapFont 4 + Helvetica12 -> hOpenGL_marshalBitmapFont 5 + Helvetica18 -> hOpenGL_marshalBitmapFont 6 + +-- | Render the character in the named bitmap font, without using any display +-- lists. Rendering a nonexistent character has no effect. 'bitmapCharacter' +-- automatically sets the OpenGL unpack pixel storage modes it needs +-- appropriately and saves and restores the previous modes before returning. +-- The generated call to 'Graphics.Rendering.OpenGL.GL.bitmap' will adjust the +-- current raster position based on the width of the character. + +bitmapCharacter :: BitmapFont -- ^ Bitmap font to use. + -> CInt -- ^ Character to return width of (not confined to + -- 8 bits). + -> IO () +bitmapCharacter f c = flip glutBitmapCharacter c =<< marhshalBitmapFont f + +foreign import ccall "glutBitmapCharacter" glutBitmapCharacter :: + GLUTbitmapFont -> CInt -> IO () + +-- | Return the width in pixels of a bitmap character in a supported bitmap +-- font. While the width of characters in a font may vary (though fixed width +-- fonts do not vary), the maximum height characteristics of a particular font +-- are fixed. + +bitmapWidth :: BitmapFont -- ^ Bitmap font to use. + -> CInt -- ^ Character to render (not confined to 8 bits). + -> IO CInt -- ^ Width in pixels. +bitmapWidth f c = flip glutBitmapWidth c =<< marhshalBitmapFont f + +foreign import ccall "glutBitmapWidth" glutBitmapWidth :: + GLUTbitmapFont -> CInt -> IO CInt + +-------------------------------------------------------------------------------- + +data StrokeFont + = Roman -- ^ A proportionally spaced Roman Simplex font for ASCII + -- characters 32 through 127. The maximum top character in the + -- font is 119.05 units; the bottom descends 33.33 units. + | MonoRoman -- ^ A mono-spaced spaced Roman Simplex font (same characters as + -- 'Roman') for ASCII characters 32 through 127. The maximum + -- top character in the font is 119.05 units; the bottom + -- descends 33.33 units. Each character is 104.76 units wide. + deriving ( Eq, Ord ) + + +-- Same remarks as for GLUTstrokeFont +type GLUTstrokeFont = Ptr () + +foreign import ccall "HsGLUT.h hOpenGL_marshalStrokeFont" + hOpenGL_marshalStrokeFont :: CInt -> IO GLUTstrokeFont + +marhshalStrokeFont :: StrokeFont -> IO GLUTstrokeFont +marhshalStrokeFont f = case f of + Roman -> hOpenGL_marshalStrokeFont 0 + MonoRoman -> hOpenGL_marshalStrokeFont 1 + +-- | Render the character in the named stroke font, without using any display +-- lists. Rendering a nonexistent character has no effect. A +-- 'Graphics.Rendering.OpenGL.GL.translatef' is used to translate the current +-- model view matrix to advance the width of the character. + +strokeCharacter :: StrokeFont -- ^ Stroke font to use. + -> CInt -- ^ Character to render (not confined to 8 bits). + -> IO () +strokeCharacter f i = flip glutStrokeCharacter i =<< marhshalStrokeFont f + +foreign import ccall "glutStrokeCharacter" glutStrokeCharacter :: + GLUTstrokeFont -> CInt -> IO () + +-- | Return the width in pixels of a stroke character in a supported stroke +-- font. While the width of characters in a font may vary (though fixed width +-- fonts do not vary), the maximum height characteristics of a particular font +-- are fixed. + +strokeWidth :: StrokeFont -- ^ Stroke font to use. + -> CInt -- ^ Character to return width of (not confined to 8 + -- bits). + -> IO CInt -- ^ Width in pixels. +strokeWidth f c = flip glutStrokeWidth c =<< marhshalStrokeFont f + +foreign import ccall "glutStrokeWidth" glutStrokeWidth :: + GLUTstrokeFont -> CInt -> IO CInt hunk ./Graphics/UI/GLUT.hs 50 + module Graphics.UI.GLUT.Fonts, hunk ./Graphics/UI/GLUT.hs 59 +import Graphics.UI.GLUT.Fonts hunk ./Makefile 2 -# $Id: Makefile,v 1.3 2002/05/19 11:43:40 panne Exp $ +# $Id: Makefile,v 1.4 2002/05/26 19:46:13 panne Exp $ hunk ./Makefile 9 +SUBDIRS = cbits include + hunk ./Makefile 17 -SRC_HC_OPTS += -fglasgow-exts '-\#include ' -package OpenGL +SRC_HC_OPTS += -fglasgow-exts '-\#include ' -package OpenGL -Iinclude hunk ./cbits/HsGLUT.c 1 +/* ----------------------------------------------------------------------------- + * + * Module : C support for Graphics.UI.GLUT.Fonts + * Copyright : (c) Sven Panne 2002 + * License : BSD-style (see the file libraries/GLUT/LICENSE) + * + * Maintainer : sven_panne@yahoo.com + * Stability : experimental + * Portability : portable + * + * -------------------------------------------------------------------------- */ + +#include +#include "HsGLUT.h" + +void* +hOpenGL_marshalBitmapFont(int fontID) +{ + switch (fontID) { + case 0 : return GLUT_BITMAP_8_BY_13; + case 1 : return GLUT_BITMAP_9_BY_15; + case 2 : return GLUT_BITMAP_TIMES_ROMAN_10; + case 3 : return GLUT_BITMAP_TIMES_ROMAN_24; + case 4 : return GLUT_BITMAP_HELVETICA_10; + case 5 : return GLUT_BITMAP_HELVETICA_12; + case 6 : return GLUT_BITMAP_HELVETICA_18; + } + return (void*)0; +} + +void* +hOpenGL_marshalStrokeFont(int fontID) +{ + switch (fontID) { + case 0 : return GLUT_STROKE_ROMAN; + case 1 : return GLUT_STROKE_MONO_ROMAN; + } + return (void*)0; +} hunk ./cbits/Makefile 1 +# ----------------------------------------------------------------------------- +# $Id: Makefile,v 1.1 2002/05/26 19:46:14 panne Exp $ + +TOP = ../.. +include $(TOP)/mk/boilerplate.mk + +# ----------------------------------------------------------------------------- + +SRC_CC_OPTS += -Wall -I../include + +LIBRARY = libHSGLUT_cbits.a +LIBOBJS = $(C_OBJS) + +# ----------------------------------------------------------------------------- +# Per-module flags + +# ----------------------------------------------------------------------------- + +include $(TOP)/mk/target.mk hunk ./include/HsGLUT.h 1 +/* ----------------------------------------------------------------------------- + * + * Module : C support for Graphics.UI.GLUT.Fonts + * Copyright : (c) Sven Panne 2002 + * License : BSD-style (see the file libraries/GLUT/LICENSE) + * + * Maintainer : sven_panne@yahoo.com + * Stability : experimental + * Portability : portable + * + * -------------------------------------------------------------------------- */ + +#ifndef HSGLUT_H +#define HSGLUT_H + +extern void* hOpenGL_marshalBitmapFont(int fontID); +extern void* hOpenGL_marshalStrokeFont(int fontID); + +#endif hunk ./include/Makefile 1 +# ----------------------------------------------------------------------------- +# $Id: Makefile,v 1.1 2002/05/26 19:46:14 panne Exp $ + +TOP = ../.. +include $(TOP)/mk/boilerplate.mk + +# ----------------------------------------------------------------------------- + +H_FILES = $(wildcard *.h) + +override datadir:=$(libdir)/include +INSTALL_DATAS = $(H_FILES) + +# ----------------------------------------------------------------------------- +# Per-module flags + +# ----------------------------------------------------------------------------- + +include $(TOP)/mk/target.mk hunk ./Graphics/UI/GLUT/Window.hs 128 --- window; this is done using 'useLayer'. +-- window; this is done using 'Graphics.UI.GLUT.Overlay.useLayer'. hunk ./Graphics/UI/GLUT/Overlay.hs 27 - postOverlayRedisplay, + postOverlayRedisplay, postWindowOverlayRedisplay, hunk ./Graphics/UI/GLUT/Overlay.hs 37 +import Graphics.UI.GLUT.Window ( Window ) hunk ./Graphics/UI/GLUT/Overlay.hs 128 +-- | Mark the overlay of the given window as needing to be redisplayed, +-- otherwise the same as 'postOverlayRedisplay'. +-- +-- If the window you want to post an overlay redisplay on is not already the +-- /current window/ (and you do not require it to be immediately made current), +-- using 'postWindowOverlayRedisplay' is more efficient than calling +-- 'Graphics.UI.GLUT.Window.setWindow' to the desired window and then calling +-- 'postOverlayRedisplay'. +-- +-- Also, see 'Graphics.UI.GLUT.Window.postWindowRedisplay'. + +foreign import ccall safe "glutPostWindowOverlayRedisplay" + postWindowOverlayRedisplay :: Window -> IO () + hunk ./Graphics/UI/GLUT/Objects.hs 23 - -- * Platonic solids + -- * Rendering flavour + Flavour(..), hunk ./Graphics/UI/GLUT/Objects.hs 26 - -- $PlatonicSolids - solidCube, wireCube, - solidDodecahedron, wireDodecahedron, - solidIcosahedron, wireIcosahedron, - solidOctahedron, wireOctahedron, - solidTetrahedron, wireTetrahedron, + -- * Object description + Object(..), hunk ./Graphics/UI/GLUT/Objects.hs 29 - -- * Rounded objects - solidSphere, wireSphere, - solidCone, wireCone, - solidTorus, wireTorus, + -- * Type synonyms + Radius, Height, Slices, Stacks, Sides, Rings, hunk ./Graphics/UI/GLUT/Objects.hs 32 - -- * Newell\'s teapot - - -- $NewellsTeapot - solidTeapot, wireTeapot + -- * Rendering + renderObject hunk ./Graphics/UI/GLUT/Objects.hs 39 --- $PlatonicSolids --- The following routines render the five Platonic solids (see --- ), either in solid or --- wireframe form. + +-- | Flavour of object rendering + +data Flavour + = -- | Object is rendered as a solid with shading and surface normals. + Solid + | -- | Object is rendered as a wireframe without surface normals. + Wireframe + deriving ( Eq, Ord ) + +-------------------------------------------------------------------------------- + +-- | GLUT offers three types of objects: +-- +-- * The five Platonic solids, see +-- . +-- +-- * Approximations to rounded objects. +-- +-- * The classic teapot modeled by Martin Newell in 1975. Both surface normals +-- and texture coordinates for the teapot are generated. The teapot is +-- generated with OpenGL evaluators. + +data Object + = -- | A cube centered at the modeling coordinates origin with sides of the + -- given length. + Cube Height + | -- | A dodecahedron (12-sided regular solid) centered at the modeling + -- coordinates origin with a radius of @sqrt 3@. + Dodecahedron + | -- | A icosahedron (20-sided regular solid) centered at the modeling + -- coordinates origin with a radius of 1.0. + Icosahedron + | -- | Render a solid octahedron (8-sided regular solid) centered at the + -- modeling coordinates origin with a radius of 1.0. + Octahedron + | -- | Render a solid tetrahedron (4-sided regular solid) centered at the + -- modeling coordinates origin with a radius of @sqrt 3@. + Tetrahedron + | -- | A sphere centered at the modeling coordinates origin of the specified + -- radius. The sphere is subdivided around the Z axis into slices + -- (similar to lines of longitude) and along the Z axis into stacks + -- (similar to lines of latitude). + Sphere Radius Slices Stacks + | -- | A cone oriented along the Z axis. The base of the cone is placed at Z + -- = 0, and the top at Z = the given height. The cone is subdivided + -- around the Z axis into slices, and along the Z axis into stacks. + Cone Radius Height Slices Stacks + | -- | A torus (doughnut) centered at the modeling coordinates origin + -- whose axis is aligned with the Z axis. The torus is described by its + -- inner and outer radius, the number of sides for each radial section, + -- and the number of radial divisions (rings). + Torus Radius Radius Sides Rings + | -- | A teapot with a given relative size. + Teapot Height + deriving ( Eq, Ord ) + +-------------------------------------------------------------------------------- + +type Radius = GLdouble +type Height = GLdouble +type Slices = GLint +type Stacks = GLint +type Sides = GLint +type Rings = GLint + +-------------------------------------------------------------------------------- + +-- | Render an object in the given flavour. + +renderObject :: Flavour -> Object -> IO () +renderObject Solid (Cube h) = solidCube h +renderObject Wireframe (Cube h) = wireCube h +renderObject Solid Dodecahedron = solidDodecahedron +renderObject Wireframe Dodecahedron = wireDodecahedron +renderObject Solid Icosahedron = solidIcosahedron +renderObject Wireframe Icosahedron = wireIcosahedron +renderObject Solid Octahedron = solidOctahedron +renderObject Wireframe Octahedron = wireOctahedron +renderObject Solid Tetrahedron = solidTetrahedron +renderObject Wireframe Tetrahedron = wireTetrahedron +renderObject Solid (Sphere r s t) = solidSphere r s t +renderObject Wireframe (Sphere r s t) = wireSphere r s t +renderObject Solid (Cone r h s t) = solidCone r h s t +renderObject Wireframe (Cone r h s t) = wireCone r h s t +renderObject Solid (Torus i o s r) = solidTorus i o s r +renderObject Wireframe (Torus i o s r) = wireTorus i o s r +renderObject Solid (Teapot h) = solidTeapot h +renderObject Wireframe (Teapot h) = wireTeapot h hunk ./Graphics/UI/GLUT/Objects.hs 135 - :: GLdouble -- ^ Length of the cube sides + :: Height -- ^ Length of the cube sides hunk ./Graphics/UI/GLUT/Objects.hs 142 - :: GLdouble -- ^ Length of the cube sides + :: Height -- ^ Length of the cube sides hunk ./Graphics/UI/GLUT/Objects.hs 200 - :: GLdouble -- ^ Radius of the sphere. - -> GLint -- ^ Number of subdivisions (slices) around the Z axis, similar to lines of longitude. - -> GLint -- ^ The number of subdivisions (stacks) along the Z axis, similar to lines of latitude. + :: Radius -- ^ Radius of the sphere. + -> Slices -- ^ Number of subdivisions (slices) around the Z axis, similar to lines of longitude. + -> Stacks -- ^ The number of subdivisions (stacks) along the Z axis, similar to lines of latitude. hunk ./Graphics/UI/GLUT/Objects.hs 210 - :: GLdouble -- ^ Radius of the sphere. - -> GLint -- ^ Number of subdivisions (slices) around the Z axis, similar to lines of longitude. - -> GLint -- ^ The number of subdivisions (stacks) along the Z axis, similar to lines of latitude. + :: Radius -- ^ Radius of the sphere. + -> Slices -- ^ Number of subdivisions (slices) around the Z axis, similar to lines of longitude. + -> Stacks -- ^ The number of subdivisions (stacks) along the Z axis, similar to lines of latitude. hunk ./Graphics/UI/GLUT/Objects.hs 222 - :: GLdouble -- ^ Radius of the base of the cone. - -> GLdouble -- ^ Height of the cone. - -> GLint -- ^ Number of subdivisions around the Z axis. - -> GLint -- ^ The number of subdivisions along the Z axis. + :: Radius -- ^ Radius of the base of the cone. + -> Height -- ^ Height of the cone. + -> Slices -- ^ Number of subdivisions around the Z axis. + -> Stacks -- ^ The number of subdivisions along the Z axis. hunk ./Graphics/UI/GLUT/Objects.hs 233 - :: GLdouble -- ^ Radius of the base of the cone. - -> GLdouble -- ^ Height of the cone. - -> GLint -- ^ Number of subdivisions around the Z axis. - -> GLint -- ^ The number of subdivisions along the Z axis. + :: Radius -- ^ Radius of the base of the cone. + -> Height -- ^ Height of the cone. + -> Slices -- ^ Number of subdivisions around the Z axis. + -> Stacks -- ^ The number of subdivisions along the Z axis. hunk ./Graphics/UI/GLUT/Objects.hs 245 - :: GLdouble -- ^ Inner radius of the torus. - -> GLdouble -- ^ Outer radius of the torus. - -> GLint -- ^ Number of sides for each radial section. - -> GLint -- ^ Number of radial divisions for the torus. + :: Radius -- ^ Inner radius of the torus. + -> Radius -- ^ Outer radius of the torus. + -> Slices -- ^ Number of sides for each radial section. + -> Stacks -- ^ Number of radial divisions for the torus. hunk ./Graphics/UI/GLUT/Objects.hs 255 - :: GLdouble -- ^ Inner radius of the torus. - -> GLdouble -- ^ Outer radius of the torus. - -> GLint -- ^ Number of sides for each radial section. - -> GLint -- ^ Number of radial divisions for the torus. + :: Radius -- ^ Inner radius of the torus. + -> Radius -- ^ Outer radius of the torus. + -> Slices -- ^ Number of sides for each radial section. + -> Stacks -- ^ Number of radial divisions for the torus. hunk ./Graphics/UI/GLUT/Objects.hs 262 --- $NewellsTeapot --- The following routines render the classic teapot modeled by Martin Newell in --- 1975. Both surface normals and texture coordinates for the teapot are --- generated. The teapot is generated with OpenGL evaluators. hunk ./Graphics/UI/GLUT/Objects.hs 266 - :: GLdouble -- ^ Relative size of the teapot + :: Height -- ^ Relative size of the teapot hunk ./Graphics/UI/GLUT/Objects.hs 272 - :: GLdouble -- ^ Relative size of the teapot + :: Height -- ^ Relative size of the teapot hunk ./GLUT.conf.in 22 - c_includes = [ "GL/glut.h" ], + c_includes = [ "HsGLUT.h" ], hunk ./Graphics/UI/GLUT/Fonts.hs 62 -foreign import ccall "HsGLUT.h hOpenGL_marshalBitmapFont" - hOpenGL_marshalBitmapFont :: CInt -> IO GLUTbitmapFont +foreign import ccall "hOpenGL_marshalBitmapFont" hOpenGL_marshalBitmapFont :: + CInt -> IO GLUTbitmapFont hunk ./Graphics/UI/GLUT/Fonts.hs 120 -foreign import ccall "HsGLUT.h hOpenGL_marshalStrokeFont" - hOpenGL_marshalStrokeFont :: CInt -> IO GLUTstrokeFont +foreign import ccall "hOpenGL_marshalStrokeFont" hOpenGL_marshalStrokeFont :: + CInt -> IO GLUTstrokeFont hunk ./Makefile 2 -# $Id: Makefile,v 1.4 2002/05/26 19:46:13 panne Exp $ +# $Id: Makefile,v 1.5 2002/05/27 18:24:28 panne Exp $ hunk ./Makefile 17 -SRC_HC_OPTS += -fglasgow-exts '-\#include ' -package OpenGL -Iinclude +SRC_HC_OPTS += -fglasgow-exts -Iinclude '-\#include "HsGLUT.h"' -package OpenGL hunk ./cbits/HsGLUT.c 13 -#include hunk ./include/HsGLUT.h 15 + +#include hunk ./Makefile 2 -# $Id: Makefile,v 1.5 2002/05/27 18:24:28 panne Exp $ +# $Id: Makefile,v 1.6 2002/05/27 20:31:37 panne Exp $ hunk ./Makefile 17 -SRC_HC_OPTS += -fglasgow-exts -Iinclude '-\#include "HsGLUT.h"' -package OpenGL +SRC_HC_OPTS += -Wall -fglasgow-exts -package OpenGL \ + -Iinclude '-\#include "HsGLUT.h"' hunk ./Graphics/UI/GLUT/Fonts.hs 11 --- GLUT supports two type of font rendering: stroke fonts, meaning each +-- GLUT supports two types of font rendering: stroke fonts, meaning each hunk ./Graphics/UI/GLUT/Fonts.hs 21 - -- * Bitmap fonts - BitmapFont(..), bitmapCharacter, bitmapWidth, - -- * Stroke fonts - StrokeFont(..), strokeCharacter, strokeWidth + -- * Fonts + Font(..), BitmapFont(..), StrokeFont(..), + + -- * Text representation + Text(..), + + -- * Rendering and measuring text + renderText, textWidth hunk ./Graphics/UI/GLUT/Fonts.hs 31 +import Data.Char ( ord ) +import Foreign.C.String ( CString, withCString ) hunk ./Graphics/UI/GLUT/Fonts.hs 38 +data Font + = BitmapFont BitmapFont + | StrokeFont StrokeFont + deriving ( Eq, Ord ) + +-------------------------------------------------------------------------------- + hunk ./Graphics/UI/GLUT/Fonts.hs 88 +-------------------------------------------------------------------------------- + +data StrokeFont + = Roman -- ^ A proportionally spaced Roman Simplex font for ASCII + -- characters 32 through 127. The maximum top character in the + -- font is 119.05 units; the bottom descends 33.33 units. + | MonoRoman -- ^ A mono-spaced spaced Roman Simplex font (same characters as + -- 'Roman') for ASCII characters 32 through 127. The maximum + -- top character in the font is 119.05 units; the bottom + -- descends 33.33 units. Each character is 104.76 units wide. + deriving ( Eq, Ord ) + +-- Same remarks as for GLUTstrokeFont +type GLUTstrokeFont = Ptr () + +foreign import ccall "hOpenGL_marshalStrokeFont" hOpenGL_marshalStrokeFont :: + CInt -> IO GLUTstrokeFont + +marhshalStrokeFont :: StrokeFont -> IO GLUTstrokeFont +marhshalStrokeFont f = case f of + Roman -> hOpenGL_marshalStrokeFont 0 + MonoRoman -> hOpenGL_marshalStrokeFont 1 + +-------------------------------------------------------------------------------- + +data Text + = Char Char + | String String + deriving ( Eq, Ord ) + +withChar :: Char -> (CInt -> IO a) -> IO a +withChar c f = f . fromIntegral . ord $ c + +-------------------------------------------------------------------------------- + +renderText :: Font -> Text -> IO () +renderText (BitmapFont f) (Char c) = bitmapCharacter f c +renderText (BitmapFont f) (String s) = bitmapString f s +renderText (StrokeFont f) (Char c) = strokeCharacter f c +renderText (StrokeFont f) (String s) = strokeString f s + +-------------------------------------------------------------------------------- + +textWidth :: Font -> Text -> IO CInt +textWidth (BitmapFont f) (Char c) = bitmapWidth f c +textWidth (BitmapFont f) (String s) = bitmapLength f s +textWidth (StrokeFont f) (Char c) = strokeWidth f c +textWidth (StrokeFont f) (String s) = strokeLength f s + +-------------------------------------------------------------------------------- + hunk ./Graphics/UI/GLUT/Fonts.hs 147 - -> CInt -- ^ Character to return width of (not confined to + -> Char -- ^ Character to return width of (not confined to hunk ./Graphics/UI/GLUT/Fonts.hs 150 -bitmapCharacter f c = flip glutBitmapCharacter c =<< marhshalBitmapFont f +bitmapCharacter f c = do + i <- marhshalBitmapFont f + withChar c (glutBitmapCharacter i) hunk ./Graphics/UI/GLUT/Fonts.hs 157 +-------------------------------------------------------------------------------- + +bitmapString :: BitmapFont -> String -> IO () +bitmapString f s = do + i <- marhshalBitmapFont f + mapM_ (\c -> withChar c (glutBitmapCharacter i)) s + +-------------------------------------------------------------------------------- + hunk ./Graphics/UI/GLUT/Fonts.hs 172 - -> CInt -- ^ Character to render (not confined to 8 bits). + -> Char -- ^ Character to return width of (not confined to 8 + -- bits). hunk ./Graphics/UI/GLUT/Fonts.hs 175 -bitmapWidth f c = flip glutBitmapWidth c =<< marhshalBitmapFont f +bitmapWidth f c = do + i <- marhshalBitmapFont f + withChar c (glutBitmapWidth i) hunk ./Graphics/UI/GLUT/Fonts.hs 184 -data StrokeFont - = Roman -- ^ A proportionally spaced Roman Simplex font for ASCII - -- characters 32 through 127. The maximum top character in the - -- font is 119.05 units; the bottom descends 33.33 units. - | MonoRoman -- ^ A mono-spaced spaced Roman Simplex font (same characters as - -- 'Roman') for ASCII characters 32 through 127. The maximum - -- top character in the font is 119.05 units; the bottom - -- descends 33.33 units. Each character is 104.76 units wide. - deriving ( Eq, Ord ) - +bitmapLength :: BitmapFont -- ^ Bitmap font to use. + -> String -- ^ String to return width of (not confined to 8 + -- bits). + -> IO CInt -- ^ Width in pixels. +bitmapLength f s = do + i <- marhshalBitmapFont f + withCString s (glutBitmapLength i) hunk ./Graphics/UI/GLUT/Fonts.hs 192 --- Same remarks as for GLUTstrokeFont -type GLUTstrokeFont = Ptr () - -foreign import ccall "hOpenGL_marshalStrokeFont" hOpenGL_marshalStrokeFont :: - CInt -> IO GLUTstrokeFont +foreign import ccall "glutBitmapLength" glutBitmapLength :: + GLUTbitmapFont -> CString -> IO CInt hunk ./Graphics/UI/GLUT/Fonts.hs 195 -marhshalStrokeFont :: StrokeFont -> IO GLUTstrokeFont -marhshalStrokeFont f = case f of - Roman -> hOpenGL_marshalStrokeFont 0 - MonoRoman -> hOpenGL_marshalStrokeFont 1 +-------------------------------------------------------------------------------- hunk ./Graphics/UI/GLUT/Fonts.hs 203 - -> CInt -- ^ Character to render (not confined to 8 bits). + -> Char -- ^ Character to render (not confined to 8 bits). hunk ./Graphics/UI/GLUT/Fonts.hs 205 -strokeCharacter f i = flip glutStrokeCharacter i =<< marhshalStrokeFont f +strokeCharacter f c = do + i <- marhshalStrokeFont f + withChar c (glutStrokeCharacter i) hunk ./Graphics/UI/GLUT/Fonts.hs 212 +-------------------------------------------------------------------------------- + +strokeString :: StrokeFont -> String -> IO () +strokeString f s = do + i <- marhshalStrokeFont f + mapM_ (\c -> withChar c (glutStrokeCharacter i)) s + +-------------------------------------------------------------------------------- + hunk ./Graphics/UI/GLUT/Fonts.hs 227 - -> CInt -- ^ Character to return width of (not confined to 8 + -> Char -- ^ Character to return width of (not confined to 8 hunk ./Graphics/UI/GLUT/Fonts.hs 230 -strokeWidth f c = flip glutStrokeWidth c =<< marhshalStrokeFont f +strokeWidth f c = do + i <- marhshalStrokeFont f + withChar c (glutStrokeWidth i) hunk ./Graphics/UI/GLUT/Fonts.hs 237 +-------------------------------------------------------------------------------- + +strokeLength :: StrokeFont -- ^ Stroke font to use. + -> String -- ^ String to return width of (not confined to 8 + -- bits). + -> IO CInt -- ^ Width in pixels. +strokeLength f s = do + i <- marhshalStrokeFont f + withCString s (glutStrokeLength i) + +foreign import ccall "glutStrokeLength" glutStrokeLength :: + GLUTstrokeFont -> CString -> IO CInt + hunk ./Graphics/UI/GLUT/Fonts.hs 24 - -- * Text representation - Text(..), - - -- * Rendering and measuring text - renderText, textWidth + -- * Rendering and measuring Strings + renderString, stringWidth hunk ./Graphics/UI/GLUT/Fonts.hs 35 +-- | A GLUT font is either a bitmap font or a stroke font. hunk ./Graphics/UI/GLUT/Fonts.hs 88 +-- | The stroke fonts available in GLUT. hunk ./Graphics/UI/GLUT/Fonts.hs 99 --- Same remarks as for GLUTstrokeFont +-- Same remarks as for GLUTbitmapFont hunk ./Graphics/UI/GLUT/Fonts.hs 112 -data Text - = Char Char - | String String - deriving ( Eq, Ord ) - -withChar :: Char -> (CInt -> IO a) -> IO a -withChar c f = f . fromIntegral . ord $ c - --------------------------------------------------------------------------------- +-- | Render the string in the named font, without using any display lists. +-- Rendering a nonexistent character has no effect. +-- +-- If the font is a bitmap font, 'renderString' automatically sets the OpenGL +-- unpack pixel storage modes it needs appropriately and saves and restores the +-- previous modes before returning. The generated call to +-- 'Graphics.Rendering.OpenGL.GL.bitmap' will adjust the current raster position +-- based on the width of the string. +-- +-- If the font is a stroke font, 'Graphics.Rendering.OpenGL.GL.translatef' is +-- used to translate the current model view matrix to advance the width of the +-- string. hunk ./Graphics/UI/GLUT/Fonts.hs 125 -renderText :: Font -> Text -> IO () -renderText (BitmapFont f) (Char c) = bitmapCharacter f c -renderText (BitmapFont f) (String s) = bitmapString f s -renderText (StrokeFont f) (Char c) = strokeCharacter f c -renderText (StrokeFont f) (String s) = strokeString f s +renderString :: Font -> String -> IO () +renderString (BitmapFont f) s = bitmapString f s +renderString (StrokeFont f) s = strokeString f s hunk ./Graphics/UI/GLUT/Fonts.hs 131 -textWidth :: Font -> Text -> IO CInt -textWidth (BitmapFont f) (Char c) = bitmapWidth f c -textWidth (BitmapFont f) (String s) = bitmapLength f s -textWidth (StrokeFont f) (Char c) = strokeWidth f c -textWidth (StrokeFont f) (String s) = strokeLength f s - --------------------------------------------------------------------------------- - --- | Render the character in the named bitmap font, without using any display --- lists. Rendering a nonexistent character has no effect. 'bitmapCharacter' --- automatically sets the OpenGL unpack pixel storage modes it needs --- appropriately and saves and restores the previous modes before returning. --- The generated call to 'Graphics.Rendering.OpenGL.GL.bitmap' will adjust the --- current raster position based on the width of the character. - -bitmapCharacter :: BitmapFont -- ^ Bitmap font to use. - -> Char -- ^ Character to return width of (not confined to - -- 8 bits). - -> IO () -bitmapCharacter f c = do +bitmapString :: BitmapFont -> String -> IO () +bitmapString f s = do hunk ./Graphics/UI/GLUT/Fonts.hs 134 - withChar c (glutBitmapCharacter i) + mapM_ (\c -> withChar c (glutBitmapCharacter i)) s + +withChar :: Char -> (CInt -> IO a) -> IO a +withChar c f = f . fromIntegral . ord $ c hunk ./Graphics/UI/GLUT/Fonts.hs 144 -bitmapString :: BitmapFont -> String -> IO () -bitmapString f s = do - i <- marhshalBitmapFont f - mapM_ (\c -> withChar c (glutBitmapCharacter i)) s +strokeString :: StrokeFont -> String -> IO () +strokeString f s = do + i <- marhshalStrokeFont f + mapM_ (\c -> withChar c (glutStrokeCharacter i)) s hunk ./Graphics/UI/GLUT/Fonts.hs 149 --------------------------------------------------------------------------------- +foreign import ccall "glutStrokeCharacter" glutStrokeCharacter :: + GLUTstrokeFont -> CInt -> IO () hunk ./Graphics/UI/GLUT/Fonts.hs 152 --- | Return the width in pixels of a bitmap character in a supported bitmap --- font. While the width of characters in a font may vary (though fixed width --- fonts do not vary), the maximum height characteristics of a particular font --- are fixed. +-------------------------------------------------------------------------------- hunk ./Graphics/UI/GLUT/Fonts.hs 154 -bitmapWidth :: BitmapFont -- ^ Bitmap font to use. - -> Char -- ^ Character to return width of (not confined to 8 - -- bits). - -> IO CInt -- ^ Width in pixels. -bitmapWidth f c = do - i <- marhshalBitmapFont f - withChar c (glutBitmapWidth i) +-- | Return the width in pixels of a string in a supported font. While the width +-- of characters in a font may vary (though fixed width fonts do not vary), the +-- maximum height characteristics of a particular font are fixed. hunk ./Graphics/UI/GLUT/Fonts.hs 158 -foreign import ccall "glutBitmapWidth" glutBitmapWidth :: - GLUTbitmapFont -> CInt -> IO CInt +stringWidth :: Font -> String -> IO CInt +stringWidth (BitmapFont f) s = bitmapLength f s +stringWidth (StrokeFont f) s = strokeLength f s hunk ./Graphics/UI/GLUT/Fonts.hs 175 --------------------------------------------------------------------------------- - --- | Render the character in the named stroke font, without using any display --- lists. Rendering a nonexistent character has no effect. A --- 'Graphics.Rendering.OpenGL.GL.translatef' is used to translate the current --- model view matrix to advance the width of the character. - -strokeCharacter :: StrokeFont -- ^ Stroke font to use. - -> Char -- ^ Character to render (not confined to 8 bits). - -> IO () -strokeCharacter f c = do - i <- marhshalStrokeFont f - withChar c (glutStrokeCharacter i) - -foreign import ccall "glutStrokeCharacter" glutStrokeCharacter :: - GLUTstrokeFont -> CInt -> IO () - --------------------------------------------------------------------------------- - -strokeString :: StrokeFont -> String -> IO () -strokeString f s = do - i <- marhshalStrokeFont f - mapM_ (\c -> withChar c (glutStrokeCharacter i)) s - --------------------------------------------------------------------------------- - --- | Return the width in pixels of a stroke character in a supported stroke --- font. While the width of characters in a font may vary (though fixed width --- fonts do not vary), the maximum height characteristics of a particular font --- are fixed. - -strokeWidth :: StrokeFont -- ^ Stroke font to use. - -> Char -- ^ Character to return width of (not confined to 8 - -- bits). - -> IO CInt -- ^ Width in pixels. -strokeWidth f c = do - i <- marhshalStrokeFont f - withChar c (glutStrokeWidth i) - -foreign import ccall "glutStrokeWidth" glutStrokeWidth :: - GLUTstrokeFont -> CInt -> IO CInt - hunk ./Graphics/UI/GLUT/Colormap.hs 50 -import Data.Maybe ( Maybe(..) ) -- for Haddock only addfile ./Graphics/UI/GLUT/State.hs hunk ./Graphics/UI/GLUT/Constants.hs 206 - glut_TRANSPARENT_INDEX, glut_NORMAL_DAMAGED, glut_OVERLAY_DAMAGED :: CInt + glut_TRANSPARENT_INDEX, glut_NORMAL_DAMAGED, glut_OVERLAY_DAMAGED :: GLenum hunk ./Graphics/UI/GLUT/Overlay.hs 1 +-- #prune hunk ./Graphics/UI/GLUT/Overlay.hs 26 + unmarshalLayer, -- used only internally hunk ./Graphics/UI/GLUT/Overlay.hs 95 +unmarshalLayer :: GLenum -> Layer +unmarshalLayer l + | l == glut_NORMAL = Normal + | l == glut_OVERLAY = Overlay + | otherwise = error "unmarshalLayer" + hunk ./Graphics/UI/GLUT/State.hs 1 +-------------------------------------------------------------------------------- +-- | +-- Module : Graphics.UI.GLUT.State +-- Copyright : (c) Sven Panne 2002 +-- License : BSD-style (see the file libraries/GLUT/LICENSE) +-- +-- Maintainer : sven_panne@yahoo.com +-- Stability : experimental +-- Portability : portable +-- +-- GLUT maintains a considerable amount of programmer visible state. Some (but +-- not all) of this state may be directly retrieved. +-- +-------------------------------------------------------------------------------- + +module Graphics.UI.GLUT.State ( + -- * GLUT state pertaining to the layers of the current window + isOverlayPossible, getLayerInUse, isOverlayEstablished, getTransparentIndex, + isLayerDamaged +) where + +import Control.Monad (liftM) +import Foreign.C.Types ( CInt ) +import Graphics.Rendering.OpenGL.GL.BasicTypes ( GLenum ) +import Graphics.Rendering.OpenGL.GL.VertexSpec ( ColorIndex(..) ) +import Graphics.UI.GLUT.Constants +import Graphics.UI.GLUT.Overlay ( Layer(..), unmarshalLayer ) + +-------------------------------------------------------------------------------- + +isOverlayPossible :: IO Bool +isOverlayPossible = liftM i2b (layerGet glut_OVERLAY_POSSIBLE) + +getLayerInUse :: IO Layer +getLayerInUse = + liftM (unmarshalLayer . fromIntegral) (layerGet glut_LAYER_IN_USE) + +isOverlayEstablished :: IO Bool +isOverlayEstablished = liftM i2b (layerGet glut_HAS_OVERLAY) + +getTransparentIndex :: IO (Maybe (ColorIndex CInt)) +getTransparentIndex = liftM i2c (layerGet glut_TRANSPARENT_INDEX) + where i2c i = if i < 0 then Nothing else Just (ColorIndex i) + +isLayerDamaged :: Layer -> IO Bool +isLayerDamaged Normal = liftM i2b (layerGet glut_NORMAL_DAMAGED) +isLayerDamaged Overlay = liftM i2b (layerGet glut_OVERLAY_DAMAGED) + +foreign import ccall unsafe "glutLayerGet" layerGet :: GLenum -> IO CInt + +-------------------------------------------------------------------------------- + +i2b :: CInt -> Bool +i2b i = i /= 0 hunk ./Graphics/UI/GLUT.hs 50 + module Graphics.UI.GLUT.State, hunk ./Graphics/UI/GLUT.hs 58 -import Graphics.UI.GLUT.Overlay +import Graphics.UI.GLUT.Overlay hiding ( unmarshalLayer ) hunk ./Graphics/UI/GLUT.hs 60 +import Graphics.UI.GLUT.State hunk ./Graphics/UI/GLUT/Colormap.hs 19 --- be determined by calling @'get' 'WindowColormapSize'@. +-- be determined by calling 'Graphics.UI.GLUT.State.getNumColormapEntries'. hunk ./Graphics/UI/GLUT/Constants.hs 139 - glut_WINDOW_FORMAT_ID :: CInt + glut_WINDOW_FORMAT_ID :: GLenum hunk ./Graphics/UI/GLUT/Constants.hs 184 - glut_JOYSTICK_BUTTONS, glut_JOYSTICK_AXES, glut_JOYSTICK_POLL_RATE :: CInt + glut_JOYSTICK_BUTTONS, glut_JOYSTICK_AXES, glut_JOYSTICK_POLL_RATE :: GLenum hunk ./Graphics/UI/GLUT/Initialization.hs 1 +-- #prune hunk ./Graphics/UI/GLUT/Initialization.hs 37 + marshalDisplayMode, -- used only internally hunk ./Graphics/UI/GLUT/Initialization.hs 56 + hunk ./Graphics/UI/GLUT/Initialization.hs 176 + hunk ./Graphics/UI/GLUT/Initialization.hs 193 - -- each pixel\'s red component is converted to an index between zero and @'get' 'WindowColormapSize' -1@ + -- each pixel\'s red component is converted to an index between zero and 'Graphics.UI.GLUT.State.getNumColormapEntries' hunk ./Graphics/UI/GLUT/Initialization.hs 197 - deriving ( Eq, Ord ) + deriving ( Eq, Ord, Enum, Bounded ) hunk ./Graphics/UI/GLUT/Initialization.hs 235 + hunk ./Graphics/UI/GLUT/Initialization.hs 241 + hunk ./Graphics/UI/GLUT/Initialization.hs 389 + hunk ./Graphics/UI/GLUT/Initialization.hs 420 + hunk ./Graphics/UI/GLUT/Initialization.hs 422 - = Where Capability Relation Int -- ^ A description of a capability with a - -- specific relation to a numeric value. - | With Capability -- ^ When the relation and numeric value are - -- not specified, each capability has a - -- different default, see the different - -- constructors of 'Capability'. + = Where Capability Relation CInt -- ^ A description of a capability with a + -- specific relation to a numeric value. + | With Capability -- ^ When the relation and numeric value are + -- not specified, each capability has a + -- different default, see the different + -- constructors of 'Capability'. hunk ./Graphics/UI/GLUT/Overlay.hs 26 - unmarshalLayer, -- used only internally hunk ./Graphics/UI/GLUT/Overlay.hs 44 --- @'layerGet' 'OverlayPossible'@ can be called to determine if an overlay is --- possible for the /current window/ with the current /initial display mode/. Do --- not attempt to establish an overlay when one is not possible; GLUT will --- terminate the program. +-- 'Graphics.UI.GLUT.State.isOverlayPossible' can be called to determine if an +-- overlay is possible for the /current window/ with the current /initial +-- display mode/. Do not attempt to establish an overlay when one is not +-- possible; GLUT will terminate the program. hunk ./Graphics/UI/GLUT/Overlay.hs 94 -unmarshalLayer :: GLenum -> Layer -unmarshalLayer l - | l == glut_NORMAL = Normal - | l == glut_OVERLAY = Overlay - | otherwise = error "unmarshalLayer" - hunk ./Graphics/UI/GLUT/State.hs 17 - -- * GLUT state pertaining to the layers of the current window + -- * Type synonyms + NumChildren, NumSamples, NumBits, NumButtons, NumDials, NumAxes, PollRate, + + -- * Initial window parameters + getInitWindowPosition, getInitWindowSize, getInitDisplayMode, + isDisplayModePossible, + + -- * State of the /current window/ + getWindowPosition, getWindowSize, + getParent, getNumChildren, + getCursor, + isRGBA, getNumColorBits, + getNumBufferBits, getNumColormapEntries, + isDoubleBuffered, isStereo, + getNumAccumBits, getNumDepthBits, getNumStencilBits, + getNumSamples, getFormatID, + + -- * Elapsed time + getElapsedTime, + + -- * GLUT state pertaining to the layers of the /current window/ hunk ./Graphics/UI/GLUT/State.hs 39 - isLayerDamaged + isNormalDamaged, isOverlayDamaged, + + -- * Device information + + -- $DeviceInformation + + -- ** Screen information + ScreenInfo(..), getScreenInfo, + + -- ** Keyboard information + KeyRepeat(..), KeyboardInfo(..), getKeyboardInfo, + + -- ** Mouse information + MouseInfo(..), getMouseInfo, + + -- ** Spaceball information + SpaceballInfo(..), getSpaceballInfo, + + -- ** Dial and button box information + DialAndButtonBoxInfo(..), getDialAndButtonBoxInfo, + + -- ** Tablet information + TabletInfo(..), getTabletInfo, + + -- ** Joystick information + JoystickInfo(..), getJoystickInfo hunk ./Graphics/UI/GLUT/State.hs 67 -import Control.Monad (liftM) +import Control.Monad ( liftM ) +import Data.Bits ( Bits((.&.)) ) hunk ./Graphics/UI/GLUT/State.hs 73 -import Graphics.UI.GLUT.Overlay ( Layer(..), unmarshalLayer ) +import Graphics.UI.GLUT.Overlay ( Layer(..) ) +import Graphics.UI.GLUT.Initialization ( WindowPosition(..), WindowSize(..), + DisplayMode(..), marshalDisplayMode ) +import Graphics.UI.GLUT.Window ( Window(..), Cursor(..) ) + +-------------------------------------------------------------------------------- + +-- | Number of children of a window + +type NumChildren = CInt + +-- | Number of samples for multisampling + +type NumSamples = CInt + +-- | Bit depth of a buffer + +type NumBits = CInt + +-- | Number of buttons of an input device + +type NumButtons = CInt + +-- | Number of dials of a dial and button box + +type NumDials = CInt + +-- | Number of axes of a joystick + +type NumAxes = CInt + +-- | The a rate at which a joystick is polled + +type PollRate = CInt + +-------------------------------------------------------------------------------- + +-- | Return the /initial window position./ +getInitWindowPosition :: IO WindowPosition +getInitWindowPosition = do + x <- get id glut_INIT_WINDOW_X + y <- get id glut_INIT_WINDOW_Y + return $ WindowPosition x y + +-- | Return the /initial window size./ + +getInitWindowSize :: IO WindowSize +getInitWindowSize = do + w <- get id glut_INIT_WINDOW_WIDTH + h <- get id glut_INIT_WINDOW_HEIGHT + return $ WindowSize w h + +-- | Return the /initial display mode./ + +getInitDisplayMode :: IO [DisplayMode] +getInitDisplayMode = + get i2dms glut_INIT_DISPLAY_MODE + +-- | Test whether the /current display mode/ is supported or not. + +isDisplayModePossible :: IO Bool +isDisplayModePossible = get i2b glut_DISPLAY_MODE_POSSIBLE + +-------------------------------------------------------------------------------- + +-- | Return the location of the /current window,/ measured in pixels relative to +-- the screen origin. + +getWindowPosition :: IO WindowPosition +getWindowPosition = do + x <- get id glut_WINDOW_X + y <- get id glut_WINDOW_Y + return $ WindowPosition x y + +-- | Return the size of the /current window,/ measured in pixels. + +getWindowSize :: IO WindowSize +getWindowSize = do + w <- get id glut_WINDOW_WIDTH + h <- get id glut_WINDOW_HEIGHT + return $ WindowSize w h + +-- | Return 'Just' the /current window\'s/ parent or 'Nothing' if the /current +-- window/ is a top-level window. + +getParent :: IO (Maybe Window) +getParent = do + w <- get Window glut_WINDOW_PARENT + return $ if w == Window 0 then Nothing else Just w + +-- | Return the number of subwindows the /current window/ has, not counting +-- children of children. + +getNumChildren :: IO NumChildren +getNumChildren = get id glut_WINDOW_NUM_CHILDREN + +-- | Return the current cursor for the /current window./ + +getCursor :: IO Cursor +getCursor = get unmarshalCursor glut_WINDOW_CURSOR + +-- | Test whether the current layer of the /current window/ is in RGBA mode. +-- 'False' means color index mode. + +isRGBA :: IO Bool +isRGBA = get i2b glut_WINDOW_RGBA + +-- | Return the number of red, green, blue, and alpha bits in the color buffer +-- of the /current window\'s/ current layer (0 in color index mode). + +getNumColorBits :: IO (NumBits, NumBits, NumBits, NumBits) +getNumColorBits = do + r <- get id glut_WINDOW_RED_SIZE + g <- get id glut_WINDOW_GREEN_SIZE + b <- get id glut_WINDOW_BLUE_SIZE + a <- get id glut_WINDOW_ALPHA_SIZE + return (r, g, b, a) + +-- | Return the total number of bits in the color buffer of the /current +-- window\'s/ current layer. For an RGBA layer, this is the sum of the red, +-- green, blue, and alpha bits. For an color index layer, this is the number +-- of bits of the color indexes. + +getNumBufferBits :: IO NumBits +getNumBufferBits = get id glut_WINDOW_BUFFER_SIZE + +-- | Return the number of entries in the colormap of the /current window\'s/ +-- current layer (0 in RGBA mode). + +getNumColormapEntries :: IO (ColorIndex CInt) +getNumColormapEntries = get ColorIndex glut_WINDOW_COLORMAP_SIZE + +-- | Test whether the current layer of the /current window/ is double buffered. + +isDoubleBuffered :: IO Bool +isDoubleBuffered = get i2b glut_WINDOW_DOUBLEBUFFER + +-- | Test whether the current layer of the /current window/ is stereo. + +isStereo :: IO Bool +isStereo = get i2b glut_WINDOW_STEREO + +-- | Return the number of red, green, blue, and alpha bits in the accumulation +-- buffer of the /current window\'s/ current layer (0 in color index mode). + +getNumAccumBits :: IO (NumBits, NumBits, NumBits, NumBits) +getNumAccumBits = do + r <- get id glut_WINDOW_ACCUM_RED_SIZE + g <- get id glut_WINDOW_ACCUM_GREEN_SIZE + b <- get id glut_WINDOW_ACCUM_BLUE_SIZE + a <- get id glut_WINDOW_ACCUM_ALPHA_SIZE + return (r, g, b, a) + +-- | Return the number of bits in the depth buffer of the /current window\'s/ +-- current layer. + +getNumDepthBits :: IO NumBits +getNumDepthBits = get id glut_WINDOW_DEPTH_SIZE + +-- | Return the number of bits in the stencil buffer of the /current window\'s/ +-- current layer. + +getNumStencilBits :: IO NumBits +getNumStencilBits = get id glut_WINDOW_STENCIL_SIZE + +-- | Return the number of samples for multisampling for the /current window./ + +getNumSamples :: IO NumSamples +getNumSamples = get id glut_WINDOW_NUM_SAMPLES + +-- | Return the window system dependent format ID for the current layer of the +-- /current window/. On X11 GLUT implementations, this is the X visual ID. On +-- Win32 GLUT implementations, this is the Win32 Pixel Format Descriptor number. +-- This value is returned for debugging, benchmarking, and testing ease. + +getFormatID :: IO CInt +getFormatID = get id glut_WINDOW_FORMAT_ID hunk ./Graphics/UI/GLUT/State.hs 253 +-- | Return the number of milliseconds since +-- 'Graphics.UI.GLUT.Initialization.init' was called (or first call to +-- 'getElapsedTime'). + +getElapsedTime :: IO CInt +getElapsedTime = get id glut_ELAPSED_TIME + +-------------------------------------------------------------------------------- + +-- | Test whether an overlay could be established for the /current window/ given +-- the current /initial display mode/. If 'False', +-- 'Graphics.UI.GLUT.Overlay.establishOverlay' will fail with a fatal error if +-- called. + hunk ./Graphics/UI/GLUT/State.hs 268 -isOverlayPossible = liftM i2b (layerGet glut_OVERLAY_POSSIBLE) +isOverlayPossible = layerGet i2b glut_OVERLAY_POSSIBLE + +-- | Return the /layer in use/ of the /current window/ (normal plane or +-- overlay). hunk ./Graphics/UI/GLUT/State.hs 274 -getLayerInUse = - liftM (unmarshalLayer . fromIntegral) (layerGet glut_LAYER_IN_USE) +getLayerInUse = layerGet i2l glut_LAYER_IN_USE + +-- | Test if the /current window/ has an overlay established. hunk ./Graphics/UI/GLUT/State.hs 279 -isOverlayEstablished = liftM i2b (layerGet glut_HAS_OVERLAY) +isOverlayEstablished = layerGet i2b glut_HAS_OVERLAY + +-- | Return 'Just' the transparent color index of the overlay of the /current +-- window/; 'Nothing' is returned if no overlay is in use. hunk ./Graphics/UI/GLUT/State.hs 285 -getTransparentIndex = liftM i2c (layerGet glut_TRANSPARENT_INDEX) - where i2c i = if i < 0 then Nothing else Just (ColorIndex i) +getTransparentIndex = layerGet i2c glut_TRANSPARENT_INDEX + +-- | Test if the normal plane of the /current window/ has been damaged (by +-- window system activity) since the last display callback was triggered. +-- Calling 'Graphics.UI.GLUT.Window.postRedisplay' will not set this 'True'. + +isNormalDamaged :: IO Bool +isNormalDamaged = layerGet i2b glut_NORMAL_DAMAGED + +-- | Test if the overlay plane of the /current window/ has been damaged (by +-- window system activity) since the last display callback was triggered. +-- Calling 'Graphics.UI.GLUT.Window.postRedisplay' or +-- 'Graphics.UI.GLUT.Overlay.postOverlayRedisplay' will not set this 'True'. +-- Return 'Nothing' if no overlay is in use. + +isOverlayDamaged :: IO (Maybe Bool) +isOverlayDamaged = layerGet i2mb glut_OVERLAY_DAMAGED + +-------------------------------------------------------------------------------- + +-- $DeviceInformation +-- If a device is not available, the following routines return 'Nothing', +-- otherwise they return 'Just' the specific device information. + +-------------------------------------------------------------------------------- +-- Although technically this belongs to "Simple GLUT state", it is more +-- appropriate here... + +-- | The size of the screen in pixels and millimeters + +data ScreenInfo = ScreenInfo WindowSize WindowSize + +-- | /Note:/ A screen is always assumed, so there is no 'Maybe' here. + +getScreenInfo :: IO ScreenInfo +getScreenInfo = do + wpx <- get id glut_SCREEN_WIDTH + hpx <- get id glut_SCREEN_HEIGHT + wmm <- get id glut_SCREEN_WIDTH_MM + hmm <- get id glut_SCREEN_HEIGHT_MM + return $ ScreenInfo (WindowSize wpx hpx) (WindowSize wmm hmm) + +-------------------------------------------------------------------------------- + +data KeyRepeat + = KeyRepeatOn + | KeyRepeatOff + | KeyRepeatDefault + deriving ( Eq, Ord ) + +unmarshalKeyRepeat :: CInt -> KeyRepeat +unmarshalKeyRepeat r + | r == glut_KEY_REPEAT_ON = KeyRepeatOn + | r == glut_KEY_REPEAT_OFF = KeyRepeatOff + | r == glut_KEY_REPEAT_DEFAULT = KeyRepeatDefault + | otherwise = error "unmarshalKeyRepeat" + +data KeyboardInfo = KeyboardInfo KeyRepeat Bool + deriving ( Eq, Ord ) + +getKeyboardInfo :: IO (Maybe KeyboardInfo) +getKeyboardInfo = getDeviceInfo glut_HAS_KEYBOARD $ do + r <- deviceGet unmarshalKeyRepeat glut_DEVICE_KEY_REPEAT + i <- deviceGet i2b glut_DEVICE_IGNORE_KEY_REPEAT + return $ KeyboardInfo r i + +getDeviceInfo :: GLenum -> IO a -> IO (Maybe a) +getDeviceInfo dev act = do + hasDevice <- deviceGet i2b dev + if hasDevice then liftM Just act else return Nothing + +-------------------------------------------------------------------------------- hunk ./Graphics/UI/GLUT/State.hs 358 -isLayerDamaged :: Layer -> IO Bool -isLayerDamaged Normal = liftM i2b (layerGet glut_NORMAL_DAMAGED) -isLayerDamaged Overlay = liftM i2b (layerGet glut_OVERLAY_DAMAGED) +newtype MouseInfo = MouseInfo NumButtons + deriving ( Eq, Ord ) hunk ./Graphics/UI/GLUT/State.hs 361 -foreign import ccall unsafe "glutLayerGet" layerGet :: GLenum -> IO CInt +getMouseInfo :: IO (Maybe MouseInfo) +getMouseInfo = getDeviceInfo glut_HAS_MOUSE $ + deviceGet MouseInfo glut_NUM_MOUSE_BUTTONS hunk ./Graphics/UI/GLUT/State.hs 367 +newtype SpaceballInfo = SpaceballInfo NumButtons + deriving ( Eq, Ord ) + +getSpaceballInfo :: IO (Maybe SpaceballInfo) +getSpaceballInfo = getDeviceInfo glut_HAS_SPACEBALL $ + deviceGet SpaceballInfo glut_NUM_SPACEBALL_BUTTONS + +-------------------------------------------------------------------------------- + +data DialAndButtonBoxInfo = DialAndButtonBoxInfo NumButtons NumDials + deriving ( Eq, Ord ) + +getDialAndButtonBoxInfo :: IO (Maybe DialAndButtonBoxInfo) +getDialAndButtonBoxInfo = getDeviceInfo glut_HAS_DIAL_AND_BUTTON_BOX $ do + b <- deviceGet id glut_NUM_BUTTON_BOX_BUTTONS + d <- deviceGet id glut_NUM_DIALS + return $ DialAndButtonBoxInfo b d + +-------------------------------------------------------------------------------- + +newtype TabletInfo = TabletInfo NumButtons + deriving ( Eq, Ord ) + +getTabletInfo :: IO (Maybe TabletInfo) +getTabletInfo = getDeviceInfo glut_HAS_TABLET $ + deviceGet TabletInfo glut_NUM_TABLET_BUTTONS + +-------------------------------------------------------------------------------- + +data JoystickInfo = JoystickInfo NumButtons PollRate NumAxes + deriving ( Eq, Ord ) + +getJoystickInfo :: IO (Maybe JoystickInfo) +getJoystickInfo = getDeviceInfo glut_HAS_JOYSTICK $ do + b <- deviceGet id glut_JOYSTICK_BUTTONS + r <- deviceGet id glut_JOYSTICK_POLL_RATE + a <- deviceGet id glut_JOYSTICK_AXES + return $ JoystickInfo b r a + +-------------------------------------------------------------------------------- +-- Convenience unmarshalers + hunk ./Graphics/UI/GLUT/State.hs 410 -i2b i = i /= 0 +i2b = (/= 0) + +i2l :: CInt -> Layer +i2l = unmarshalLayer . fromIntegral + +i2c :: CInt -> Maybe (ColorIndex CInt) +i2c i = if i < 0 then Nothing else Just (ColorIndex i) + +i2mb :: CInt -> Maybe Bool +i2mb i = if i < 0 then Nothing else Just (i /= 0) + +i2dms :: CInt -> [DisplayMode] +i2dms = fromBitfield marshalDisplayMode . fromIntegral + +fromBitfield :: (Enum a, Bounded a, Bits b) => (a -> b) -> b -> [a] +fromBitfield marshal bitfield = + [ c | c <- [ minBound .. maxBound ], (bitfield .&. marshal c) /= 0 ] + +-------------------------------------------------------------------------------- + +-- marshaler is in Graphics.UI.GLUT.Window + +unmarshalCursor :: CInt -> Cursor +unmarshalCursor c + | c == glut_CURSOR_RIGHT_ARROW = RightArrow + | c == glut_CURSOR_LEFT_ARROW = LeftArrow + | c == glut_CURSOR_INFO = Info + | c == glut_CURSOR_DESTROY = Destroy + | c == glut_CURSOR_HELP = Help + | c == glut_CURSOR_CYCLE = Cycle + | c == glut_CURSOR_SPRAY = Spray + | c == glut_CURSOR_WAIT = Wait + | c == glut_CURSOR_TEXT = Text + | c == glut_CURSOR_CROSSHAIR = Crosshair + | c == glut_CURSOR_UP_DOWN = UpDown + | c == glut_CURSOR_LEFT_RIGHT = LeftRight + | c == glut_CURSOR_TOP_SIDE = TopSide + | c == glut_CURSOR_BOTTOM_SIDE = BottomSide + | c == glut_CURSOR_LEFT_SIDE = LeftSide + | c == glut_CURSOR_RIGHT_SIDE = RightSide + | c == glut_CURSOR_TOP_LEFT_CORNER = TopLeftCorner + | c == glut_CURSOR_TOP_RIGHT_CORNER = TopRightCorner + | c == glut_CURSOR_BOTTOM_RIGHT_CORNER = BottomRightCorner + | c == glut_CURSOR_BOTTOM_LEFT_CORNER = BottomLeftCorner + | c == glut_CURSOR_INHERIT = Inherit + | c == glut_CURSOR_NONE = None + | c == glut_CURSOR_FULL_CROSSHAIR = FullCrosshair + | otherwise = error "unmarshalCursor" + +-- marshaler is in Graphics.UI.GLUT.Overlay + +unmarshalLayer :: GLenum -> Layer +unmarshalLayer l + | l == glut_NORMAL = Normal + | l == glut_OVERLAY = Overlay + | otherwise = error "unmarshalLayer" + +-------------------------------------------------------------------------------- + +-- Convenience wrappers for primitive getters + +type PrimGetter = GLenum -> IO CInt +type Getter a = (CInt -> a) -> GLenum -> IO a + +makeGetter :: PrimGetter -> Getter a +makeGetter g f = liftM f . g + +get, layerGet, deviceGet :: Getter a +get = makeGetter glutGet +layerGet = makeGetter glutLayerGet +deviceGet = makeGetter glutDeviceGet + +foreign import ccall unsafe "glutGet" glutGet :: PrimGetter +foreign import ccall unsafe "glutLayerGet" glutLayerGet :: PrimGetter +foreign import ccall unsafe "glutDeviceGet" glutDeviceGet :: PrimGetter hunk ./Graphics/UI/GLUT/Window.hs 19 - Window, + Window(..), -- contructor used only internally hunk ./Graphics/UI/GLUT/Window.hs 155 --- status (returned by @'layerGet' 'NormalDamaged'@). +-- status (returned by 'Graphics.UI.GLUT.State.isNormalDamaged'). hunk ./Graphics/UI/GLUT/Window.hs 326 + hunk ./Graphics/UI/GLUT.hs 55 -import Graphics.UI.GLUT.Initialization +import Graphics.UI.GLUT.Initialization hiding ( marshalDisplayMode ) hunk ./Graphics/UI/GLUT.hs 57 -import Graphics.UI.GLUT.Window -import Graphics.UI.GLUT.Overlay hiding ( unmarshalLayer ) +import Graphics.UI.GLUT.Window hiding ( Window ) +import Graphics.UI.GLUT.Window ( Window ) +import Graphics.UI.GLUT.Overlay hunk ./Graphics/UI/GLUT/Initialization.hs 69 --- X Implementation Notes: The X Window System specific options parsed by +-- /X Implementation Notes:/ The X Window System specific options parsed by hunk ./Graphics/UI/GLUT/Initialization.hs 196 - -- colormap actions. Implementation Notes: 'Luminance' is not supported on most OpenGL platforms. + -- colormap actions. /Implementation Notes:/ 'Luminance' is not supported on most OpenGL platforms. hunk ./Graphics/UI/GLUT/State.hs 34 - -- * Elapsed time - getElapsedTime, + -- * Miscellaneous + getElapsedTime, getNumMenuItems, hunk ./Graphics/UI/GLUT/State.hs 260 +-- | Return the number of menu items in the /current menu./ + +getNumMenuItems :: IO CInt +getNumMenuItems = get id glut_MENU_NUM_ITEMS + addfile ./Graphics/UI/GLUT/Menu.hs hunk ./Graphics/UI/GLUT/Menu.hs 1 +-------------------------------------------------------------------------------- +-- | +-- Module : Graphics.UI.GLUT.Menu +-- Copyright : (c) Sven Panne 2002 +-- License : BSD-style (see the file libraries/GLUT/LICENSE) +-- +-- Maintainer : sven_panne@yahoo.com +-- Stability : experimental +-- Portability : portable +-- +-- GLUT supports simple cascading pop-up menus. They are designed to let a user +-- select various modes within a program. The functionality is simple and +-- minimalistic and is meant to be that way. Do not mistake GLUT\'s pop-up menu +-- facility with an attempt to create a full-featured user interface. +-- +-- It is illegal to create or destroy menus, or change, add, or remove menu +-- items while a menu (and any cascaded sub-menus) are in use (that is, popped +-- up). +-- +-------------------------------------------------------------------------------- + +module Graphics.UI.GLUT.Menu ( + MenuCB, + createMenu, destroyMenu, + setMenu, getMenu, + addMenuEntry, addSubMenu, + changeToMenuEntry, changeToSubMenu, + removeMenuItem, + attachMenu, detachMenu +) where + +import Foreign.C.String ( CString, withCString ) +import Foreign.C.Types ( CInt ) +import Foreign.Ptr ( FunPtr ) +import Control.Monad ( liftM ) + +-------------------------------------------------------------------------------- + +-- | The type of a menu callback action that is called when a menu entry from a +-- menu is selected. The value passed to the callback is determined by the value +-- for the selected menu entry. + +type MenuCB = CInt -> IO () + +type MenuCBPtr = FunPtr MenuCB + +type MenuID = CInt +type Button = CInt +type Value = CInt +type Item = CInt + +-------------------------------------------------------------------------------- + +-- | Create a new pop-up menu and return a unique identifier for it, which can +-- be used when calling 'setMenu'. Implicitly, the /current menu/ is set to the +-- newly created menu. +-- +-- When the menu callback is called because a menu entry is selected for the +-- menu, the /current menu/ will be implicitly set to the menu with the selected +-- entry before the callback is made. +-- +-- /X Implementation Notes:/ If available, GLUT for X will take advantage of +-- overlay planes for implementing pop-up menus. The use of overlay planes can +-- eliminate display callbacks when pop-up menus are deactivated. The +-- @SERVER_OVERLAY_VISUALS@ convention is used to determine if overlay visuals +-- are available. + +foreign import ccall unsafe "glutCreateMenu" createMenu :: MenuCBPtr -> IO MenuID + +-- | Destroy the specified menu. If it was the /current menu/, the /current +-- menu/ becomes invalid and 'getMenu' will return 'Nothing'. + +foreign import ccall unsafe "glutDestroyMenu" destroyMenu :: MenuID -> IO () + +-- | Set the /current menu./ + +foreign import ccall unsafe "glutSetMenu" setMenu :: MenuID -> IO () + +-- | Return 'Just' the identifier of the /current menu./ 'Nothing' is returned +-- if no menus exist or the previous /current menu/ was destroyed. + +getMenu :: IO (Maybe MenuID) +getMenu = liftM (\i -> if i == 0 then Nothing else Just i) glutGetMenu + +foreign import ccall unsafe "glutGetMenu" glutGetMenu :: IO MenuID + +-- | Add a menu entry to the bottom of the /current menu./ The given string will +-- be displayed for the newly added menu entry. If the menu entry is selected by +-- the user, the menu\'s callback will be called passing the given value as the +-- callback\'s parameter. + +addMenuEntry :: String -> Value -> IO () +addMenuEntry name value = withCString name $ \n -> glutAddMenuEntry n value + +foreign import ccall unsafe "glutAddMenuEntry" glutAddMenuEntry :: CString -> Value -> IO () + +-- | Add a sub-menu trigger to the bottom of the /current menu./ The given +-- string will be displayed for the newly added sub-menu trigger. If the +-- sub-menu trigger is entered, the sub-menu specified by the given menu +-- identifier will be cascaded, allowing sub-menu menu items to be selected. + +addSubMenu :: String -> MenuID -> IO () +addSubMenu name menuID = withCString name $ \n -> glutAddSubMenu n menuID + +foreign import ccall unsafe "glutAddSubMenu" glutAddSubMenu :: CString -> MenuID -> IO () + +-- | Change the specified menu entry in the /current menu/ into a menu entry. +-- The given position determines which menu item should be changed and must be +-- between 1 (the topmost menu item) and +-- 'Graphics.UI.GLUT.State.getNumMenuItems' inclusive. The menu item to change +-- does not have to be a menu entry already. The given string will be displayed +-- for the newly changed menu entry. The given value will be returned to the +-- menu\'s callback if this menu entry is selected. + +foreign import ccall unsafe "glutChangeToMenuEntry" changeToMenuEntry :: Item -> CString -> Value -> IO () + +-- | Change the specified menu item in the /current menu/ into a sub-menu +-- trigger. The given position determines which menu item should be changed and +-- must be between 1 and 'Graphics.UI.GLUT.State.getNumMenuItems' inclusive. The +-- menu item to change does not have to be a sub-menu trigger already. The +-- given name will be displayed for the newly changed sub-menu trigger. The +-- given menu identifier names the sub-menu to cascade from the newly added +-- sub-menu trigger. + +foreign import ccall unsafe "glutChangeToSubMenu" changeToSubMenu :: Item -> CString -> MenuID -> IO () + +-- | Remove the menu item at the given position, regardless of whether it is a +-- menu entry or sub-menu trigger. The position must be between 1 (the topmost +-- menu item) and 'Graphics.UI.GLUT.State.getNumMenuItems' inclusive. Menu items +-- below the removed menu item are renumbered. + +foreign import ccall unsafe "glutRemoveMenuItem" removeMenuItem :: Item -> IO () + +-- | Attach a mouse button for the /current window/ to the identifier of the +-- /current menu./ By attaching a menu identifier to a button, the named menu +-- will be popped up when the user presses the specified button. Note that the +-- menu is attached to the button by identifier, not by reference. + +foreign import ccall unsafe "glutAttachMenu" attachMenu :: Button -> IO () + +-- | Detach an attached mouse button from the /current window./ +foreign import ccall unsafe "glutDetachMenu" detachMenu :: Button -> IO () hunk ./Graphics/UI/GLUT.hs 49 + module Graphics.UI.GLUT.Menu, hunk ./Graphics/UI/GLUT.hs 61 +import Graphics.UI.GLUT.Menu adddir ./Graphics/UI/GLUT/Callbacks addfile ./Graphics/UI/GLUT/Callbacks.hs addfile ./Graphics/UI/GLUT/Callbacks/Global.hs addfile ./Graphics/UI/GLUT/Callbacks/Window.hs hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 1 +-------------------------------------------------------------------------------- +-- | +-- Module : Graphics.UI.GLUT.Callbacks.Global +-- Copyright : (c) Sven Panne 2002 +-- License : BSD-style (see the file libraries/GLUT/LICENSE) +-- +-- Maintainer : sven_panne@yahoo.com +-- Stability : experimental +-- Portability : portable +-- +-------------------------------------------------------------------------------- + +module Graphics.UI.GLUT.Callbacks.Global ( + -- * Menu status callback + MenuUsage(..), MenuStatusCallback, setMenuStatusCallback, + + -- * Idle callback + IdleCallback, setIdleCallback, + + -- * Timer callbacks + Timeout, TimerCallback, setTimerCallback +) where + +import Control.Monad.Fix ( MonadFix(..) ) +import Foreign.C.Types ( CInt, CUInt ) +import Foreign.Ptr ( FunPtr, nullFunPtr, freeHaskellFunPtr ) +import Graphics.UI.GLUT.Constants +import Graphics.UI.GLUT.Initialization ( WindowPosition(..) ) + +-------------------------------------------------------------------------------- + +-- TODO +trackGlobalCallback :: + (a -> IO (FunPtr b)) -> (FunPtr b -> IO ()) -> Maybe a -> IO () +trackGlobalCallback makeCB registerCB mbAct = do + funPtr <- case mbAct of + Nothing -> return nullFunPtr + Just act -> makeCB act + registerCB funPtr + +-------------------------------------------------------------------------------- + +data MenuUsage + = NotInUse + | InUse + deriving ( Eq, Ord ) + +unmarshalMenuUsage :: CInt -> MenuUsage +unmarshalMenuUsage u + | u == glut_MENU_NOT_IN_USE = NotInUse + | u == glut_MENU_IN_USE = InUse + | otherwise = error "unmarshalMenuUsage" + +type MenuStatusCallback = MenuUsage -> WindowPosition -> IO () + +type MenuStatusCallback' = CInt -> CInt -> CInt -> IO () + +-- | Set the global menu status callback so a GLUT program can determine when a +-- menu is in use or not. When a menu status callback is registered, it will be +-- called with the value 'InUse' when pop-up menus are in use by the user; and +-- the callback will be called with the value 'NotInUse' when pop-up menus are +-- no longer in use. Additionally, the location in window coordinates of the +-- button press that caused the menu to go into use, or the location where the +-- menu was released (maybe outside the window). Other callbacks continue to +-- operate (except mouse motion callbacks) when pop-up menus are in use so the +-- menu status callback allows a program to suspend animation or other tasks +-- when menus are in use. The cascading and unmapping of sub-menus from an +-- initial pop-up menu does not generate menu status callbacks. There is a +-- single menu status callback for GLUT. +-- +-- When the menu status callback is called, the /current menu/ will be set to +-- the initial pop-up menu in both the 'InUse' and 'NotInUse' cases. The +-- /current window/ will be set to the window from which the initial menu was +-- popped up from, also in both cases. +-- +-- Passing 'Nothing' to 'setMenuStatusCallback' disables the generation of the +-- menu status callback. + +setMenuStatusCallback :: Maybe MenuStatusCallback -> IO () +setMenuStatusCallback = + trackGlobalCallback (makeMenuStatusCallback . unmarshal) glutMenuStatusFunc + where unmarshal cb s x y = cb (unmarshalMenuUsage s) (WindowPosition x y) + +foreign import ccall "wrapper" makeMenuStatusCallback :: + MenuStatusCallback' -> IO (FunPtr MenuStatusCallback') + +foreign import ccall unsafe "glutMenuStatusFunc" glutMenuStatusFunc :: + FunPtr MenuStatusCallback' -> IO () + +-------------------------------------------------------------------------------- + +type IdleCallback = IO () + +-- | Set the global idle callback so a GLUT program can perform background +-- processing tasks or continuous animation when window system events are not +-- being received. If enabled, the idle callback is continuously called when +-- events are not being received. The /current window/ and /current menu/ will +-- not be changed before the idle callback. Programs with multiple windows +-- and\/or menus should explicitly set the /current window/ and\/or /current +-- menu/ and not rely on its current setting. +-- +-- The amount of computation and rendering done in an idle callback should be +-- minimized to avoid affecting the program\'s interactive response. In general, +-- not more than a single frame of rendering should be done in an idle callback. +-- +-- Passing 'Nothing' to 'setIdleCallback' disables the generation of the idle +-- callback. + +setIdleCallback :: Maybe IdleCallback -> IO () +setIdleCallback = trackGlobalCallback makeIdleCallback glutIdleFunc + +foreign import ccall "wrapper" makeIdleCallback :: + IdleCallback -> IO (FunPtr IdleCallback) + +foreign import ccall unsafe "glutIdleFunc" glutIdleFunc :: + FunPtr IdleCallback -> IO () + +-------------------------------------------------------------------------------- + +-- | Timeout for the timer callback in milliseconds +type Timeout = CUInt + +type TimerCallback = IO () + +type TimerCallback' = CInt -> IO () + +-- | Register a one-shot timer callback to be triggered after at least the given +-- amount of time. Multiple timer callbacks at same or differing times may be +-- registered simultaneously. There is no support for canceling a registered +-- callback. +-- +-- The number of milliseconds is a lower bound on the time before the callback +-- is generated. GLUT attempts to deliver the timer callback as soon as possible +-- after the expiration of the callback\'s time interval. + +setTimerCallback :: Timeout -> TimerCallback -> IO () +setTimerCallback msecs timerCallback = do + ptr <- mfix (\self -> makeTimerCallback (\_ -> do freeHaskellFunPtr self + timerCallback)) + glutTimerFunc msecs ptr 0 + +foreign import ccall "wrapper" makeTimerCallback :: + TimerCallback' -> IO (FunPtr TimerCallback') + +foreign import ccall unsafe "glutTimerFunc" glutTimerFunc :: + Timeout -> FunPtr TimerCallback' -> CInt -> IO () hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 1 +-------------------------------------------------------------------------------- +-- | +-- Module : Graphics.UI.GLUT.Callbacks.Window +-- Copyright : (c) Sven Panne 2002 +-- License : BSD-style (see the file libraries/GLUT/LICENSE) +-- +-- Maintainer : sven_panne@yahoo.com +-- Stability : experimental +-- Portability : portable +-- +-------------------------------------------------------------------------------- + +module Graphics.UI.GLUT.Callbacks.Window ( + DisplayCallback, setDisplayCallback +) where + +import Foreign.Ptr ( FunPtr, nullFunPtr ) + +-------------------------------------------------------------------------------- + +-- TODO +trackWindowCallback :: + (a -> IO (FunPtr b)) -> (FunPtr b -> IO ()) -> Maybe a -> IO () +trackWindowCallback makeCB registerCB mbAct = do + funPtr <- case mbAct of + Nothing -> return nullFunPtr + Just act -> makeCB act + registerCB funPtr + +-------------------------------------------------------------------------------- + +type DisplayCallback = IO () + +-- | Set the display callback for the /current window./ When GLUT determines +-- that the normal plane for the window needs to be redisplayed, the display +-- callback for the window is called. Before the callback, the /current window/ +-- is set to the window needing to be redisplayed and (if no overlay display +-- callback is registered) the /layer in use/ is set to the normal plane. The +-- display callback is called with no parameters. The entire normal plane region +-- should be redisplayed in response to the callback (this includes ancillary +-- buffers if your program depends on their state). +-- +-- GLUT determines when the display callback should be triggered based on the +-- window\'s redisplay state. The redisplay state for a window can be either set +-- explicitly by calling 'Graphics.UI.GLUT.Window.postRedisplay' or implicitly +-- as the result of window damage reported by the window system. Multiple posted +-- redisplays for a window are coalesced by GLUT to minimize the number of +-- display callbacks called. +-- +-- When an overlay is established for a window, but there is no overlay display +-- callback registered, the display callback is used for redisplaying both the +-- overlay and normal plane (that is, it will be called if either the redisplay +-- state or overlay redisplay state is set). In this case, the /layer in use/ is +-- not implicitly changed on entry to the display callback. +-- +-- See 'setOverlayDisplayCallback' to understand how distinct callbacks for the +-- overlay and normal plane of a window may be established. +-- +-- When a window is created, no display callback exists for the window. It is +-- the responsibility of the programmer to install a display callback for the +-- window before the window is shown. A display callback must be registered for +-- any window that is shown. If a window becomes displayed without a display +-- callback being registered, a fatal error occurs. There is no way to +-- \"deregister\" a display callback (though another callback routine can always +-- be registered). +-- +-- Upon return from the display callback, the normal damaged state of the window +-- (returned by calling 'Graphics.UI.GLUT.State.isNormalDamaged') is cleared. If +-- there is no overlay display callback registered the overlay damaged state of +-- the window (returned by calling 'Graphics.UI.GLUT.State.isOverlayDamaged') is +-- also cleared. + +setDisplayCallback :: DisplayCallback -> IO () +setDisplayCallback = + trackWindowCallback makeDisplayCallback glutDisplayCallback . Just + +foreign import ccall "wrapper" makeDisplayCallback :: + DisplayCallback -> IO (FunPtr DisplayCallback) + +foreign import ccall unsafe "glutDisplayCallback" glutDisplayCallback :: + FunPtr DisplayCallback -> IO () + +-------------------------------------------------------------------------------- hunk ./Graphics/UI/GLUT/Callbacks.hs 1 +-------------------------------------------------------------------------------- +-- | +-- Module : Graphics.UI.GLUT.Callbacks +-- Copyright : (c) Sven Panne 2002 +-- License : BSD-style (see the file libraries/GLUT/LICENSE) +-- +-- Maintainer : sven_panne@yahoo.com +-- Stability : experimental +-- Portability : portable +-- +-- +-- GLUT supports a number of callbacks to respond to events. There are three +-- types of callbacks: window, menu, and global. Window callbacks indicate when +-- to redisplay or reshape a window, when the visibility of the window changes, +-- and when input is available for the window. The menu callback is set by the +-- 'Graphics.UI.GLUT.Menu.createMenu' call described already. The global +-- callbacks manage the passing of time and menu usage. The calling order of +-- callbacks between different windows is undefined. +-- +-- Callbacks for input events should be delivered to the window the event occurs +-- in. Events should not propagate to parent windows. +-- +-- /X Implementation Notes:/ The X GLUT implementation uses the X Input +-- extension to support sophisticated input devices: Spaceball, dial & button +-- box, and digitizing tablet. Because the X Input extension does not mandate +-- how particular types of devices are advertised through the extension, it is +-- possible GLUT for X may not correctly support input devices that would +-- otherwise be of the correct type. The X GLUT implementation will support the +-- Silicon Graphics Spaceball, dial & button box, and digitizing tablet as +-- advertised through the X Input extension. +-- +-------------------------------------------------------------------------------- + +module Graphics.UI.GLUT.Callbacks ( + module Graphics.UI.GLUT.Callbacks.Window, + module Graphics.UI.GLUT.Callbacks.Global +) where + +import Graphics.UI.GLUT.Callbacks.Window +import Graphics.UI.GLUT.Callbacks.Global hunk ./Graphics/UI/GLUT.hs 50 + module Graphics.UI.GLUT.Callbacks, hunk ./Graphics/UI/GLUT.hs 63 +import Graphics.UI.GLUT.Callbacks hunk ./Makefile 2 -# $Id: Makefile,v 1.6 2002/05/27 20:31:37 panne Exp $ +# $Id: Makefile,v 1.7 2002/06/16 19:53:24 panne Exp $ hunk ./Makefile 13 - Graphics/UI/GLUT + Graphics/UI/GLUT \ + Graphics/UI/GLUT/Callbacks hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 75 - trackWindowCallback makeDisplayCallback glutDisplayCallback . Just + trackWindowCallback makeDisplayCallback glutDisplayFunc . Just hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 80 -foreign import ccall unsafe "glutDisplayCallback" glutDisplayCallback :: +foreign import ccall unsafe "glutDisplayFunc" glutDisplayFunc :: hunk ./Makefile 2 -# $Id: Makefile,v 1.7 2002/06/16 19:53:24 panne Exp $ +# $Id: Makefile,v 1.8 2002/06/16 20:07:08 panne Exp $ hunk ./Makefile 27 -# Per-module flags + +STUBOBJS += \ + Graphics/UI/GLUT/Callbacks/Window_stub.$(way_)o \ + Graphics/UI/GLUT/Callbacks/Global_stub.$(way_)o + +CLEAN_FILES += $(STUBOBJS) \ + Graphics/UI/GLUT/Callbacks/Window_stub.[ch] \ + Graphics/UI/GLUT/Callbacks/Global_stub.[ch] hunk ./include/Makefile 2 -# $Id: Makefile,v 1.1 2002/05/26 19:46:14 panne Exp $ +# $Id: Makefile,v 1.2 2002/06/20 16:13:33 simonmar Exp $ hunk ./include/Makefile 7 -# ----------------------------------------------------------------------------- - hunk ./include/Makefile 9 -override datadir:=$(libdir)/include -INSTALL_DATAS = $(H_FILES) - -# ----------------------------------------------------------------------------- -# Per-module flags - -# ----------------------------------------------------------------------------- +includedir = $(libdir)/include +INSTALL_INCLUDES = $(H_FILES) hunk ./Graphics/UI/GLUT/Window.hs 133 --- or thepreviously /current window/ was destroyed, 'Nothing' is returned. +-- or the previously /current window/ was destroyed, 'Nothing' is returned. addfile ./Graphics/UI/GLUT/Callbacks/Registration.hs hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 26 -import Foreign.Ptr ( FunPtr, nullFunPtr, freeHaskellFunPtr ) +import Foreign.Ptr ( FunPtr ) hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 29 - --------------------------------------------------------------------------------- - --- TODO -trackGlobalCallback :: - (a -> IO (FunPtr b)) -> (FunPtr b -> IO ()) -> Maybe a -> IO () -trackGlobalCallback makeCB registerCB mbAct = do - funPtr <- case mbAct of - Nothing -> return nullFunPtr - Just act -> makeCB act - registerCB funPtr +import Graphics.UI.GLUT.Callbacks.Registration ( CallbackType(..), setCallback, + registerForCleanup ) hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 71 -setMenuStatusCallback = - trackGlobalCallback (makeMenuStatusCallback . unmarshal) glutMenuStatusFunc +setMenuStatusCallback = setCallback MenuStatusCB glutMenuStatusFunc + (makeMenuStatusCallback . unmarshal) hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 101 -setIdleCallback = trackGlobalCallback makeIdleCallback glutIdleFunc +setIdleCallback = setCallback IdleCB glutIdleFunc makeIdleCallback hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 129 - ptr <- mfix (\self -> makeTimerCallback (\_ -> do freeHaskellFunPtr self - timerCallback)) - glutTimerFunc msecs ptr 0 + funPtr <- mfix (\self -> makeTimerCallback (\_ -> do registerForCleanup self + timerCallback)) + glutTimerFunc msecs funPtr 0 hunk ./Graphics/UI/GLUT/Callbacks/Registration.hs 1 - +-------------------------------------------------------------------------------- +-- | +-- Module : Graphics.UI.GLUT.Callbacks.Registration +-- Copyright : (c) Sven Panne 2002 +-- License : BSD-style (see the file libraries/GLUT/LICENSE) +-- +-- Maintainer : sven_panne@yahoo.com +-- Stability : experimental +-- Portability : portable +-- +-------------------------------------------------------------------------------- + +module Graphics.UI.GLUT.Callbacks.Registration ( + CallbackType(..), registerForCleanup, setCallback +) where + +-------------------------------------------------------------------------------- + +import Control.Monad ( liftM, when ) +import Data.FiniteMap ( FiniteMap, emptyFM, lookupFM, addToFM, delFromFM ) +import Data.IORef ( IORef, newIORef, readIORef, writeIORef, modifyIORef ) +import Foreign.C.Types ( CInt, CUInt ) +import Foreign.Ptr ( FunPtr, nullFunPtr, freeHaskellFunPtr ) +import System.IO.Unsafe ( unsafePerformIO ) +import Graphics.UI.GLUT.Window ( Window, getWindow ) + +-------------------------------------------------------------------------------- +-- No timer callback here, because they are one-shot and "self destroy" + +data CallbackType + = DisplayCB | OverlayDisplayCB | ReshapeCB + | KeyboardCB | KeyboardUpCB | MouseCB + | MotionCB | PassiveMotionCB | EntryExitCB + | VisibilityCB | WindowStatusCB | SpecialCB + | SpecialUpCB | SpaceballMotionCB | SpaceballRotateCB + | SpaceballButtonCB | ButtonBoxCB | DialsCB + | TabletMotionCB | TabletButtonCB | JoystickCB + | MenuStatusCB | IdleCB + deriving ( Eq, Ord ) + +isGlobal :: CallbackType -> Bool +isGlobal MenuStatusCB = True +isGlobal IdleCB = True +isGlobal _ = False + +-------------------------------------------------------------------------------- +-- To uniquely identify a particular callback, the associated window is needed +-- for window callbacks. + +data CallbackID = CallbackID (Maybe Window) CallbackType deriving (Eq, Ord) + +getCallbackID :: CallbackType -> IO CallbackID +getCallbackID callbackType = do + maybeWindow <- if isGlobal callbackType then return Nothing else getWindow + return $ CallbackID maybeWindow callbackType + +-------------------------------------------------------------------------------- +-- This seems to be a common Haskell hack nowadays: A plain old global variable +-- with an associated mutator. Perhaps some language/library support is needed? + +{-# notInline theCallbackTable #-} +theCallbackTable :: IORef (CallbackTable a) +theCallbackTable = unsafePerformIO (newIORef emptyCallbackTable) + +getCallbackTable :: IO (CallbackTable a) +getCallbackTable = readIORef theCallbackTable + +modifyCallbackTable :: (CallbackTable a -> CallbackTable a) -> IO () +modifyCallbackTable = modifyIORef theCallbackTable + +-------------------------------------------------------------------------------- + +type CallbackTable a = FiniteMap CallbackID (FunPtr a) + +emptyCallbackTable :: CallbackTable a +emptyCallbackTable = emptyFM + +lookupInCallbackTable :: CallbackID -> IO (Maybe (FunPtr a)) +lookupInCallbackTable callbackID = + liftM (flip lookupFM callbackID) getCallbackTable + +deleteFromCallbackTable :: CallbackID -> IO () +deleteFromCallbackTable callbackID = + modifyCallbackTable (flip delFromFM callbackID) + +addToCallbackTable :: CallbackID -> FunPtr a -> IO () +addToCallbackTable callbackID funPtr = + modifyCallbackTable (\table -> addToFM table callbackID funPtr) + +-------------------------------------------------------------------------------- +-- Another global mutable variable: The list of function pointers ready to be +-- freed by freeHaskellFunPtr + +{-# notInline theCleanupList #-} +theCleanupList :: IORef [FunPtr a] +theCleanupList = unsafePerformIO (newIORef []) + +getCleanupList :: IO [FunPtr a] +getCleanupList = readIORef theCleanupList + +setCleanupList :: [FunPtr a] -> IO () +setCleanupList = writeIORef theCleanupList + +-------------------------------------------------------------------------------- +-- And yet another mutable (write-once) variable: A function pointer to a +-- callback which frees all function pointers on the cleanup list. + +{-# notInline theScavenger #-} +theScavenger :: IORef (FunPtr TimerCallback) +theScavenger = unsafePerformIO (newIORef =<< makeTimerCallback (\_ -> do + cleanupList <- getCleanupList + mapM_ freeHaskellFunPtr cleanupList + setCleanupList [])) + +getScavenger :: IO (FunPtr TimerCallback) +getScavenger = readIORef theScavenger + +-- More or less copied from Global.hs to avoid mutual dependencies + +type TimerCallback = CInt -> IO () + +foreign import ccall "wrapper" makeTimerCallback :: + TimerCallback -> IO (FunPtr TimerCallback) + +foreign import ccall unsafe "glutTimerFunc" glutTimerFunc :: + CUInt -> FunPtr TimerCallback -> CInt -> IO () + +-------------------------------------------------------------------------------- +-- Here is the really cunning stuff: If an element is added to the cleanup list +-- when it is empty, register an immediate callback at GLUT to free the list as +-- soon as possible. + +registerForCleanup :: FunPtr a -> IO () +registerForCleanup funPtr = do + oldCleanupList <- getCleanupList + setCleanupList (funPtr : oldCleanupList) + when (null oldCleanupList) $ do + scavenger <- getScavenger + glutTimerFunc 0 scavenger 0 + +-------------------------------------------------------------------------------- + +setCallback :: CallbackType -> (FunPtr a -> IO ()) -> (b -> IO (FunPtr a)) + -> Maybe b -> IO () +setCallback callbackType registerAtGLUT makeCallback maybeCallback = do + callbackID <- getCallbackID callbackType + maybeOldFunPtr <- lookupInCallbackTable callbackID + case maybeOldFunPtr of + Nothing -> return () + Just oldFunPtr -> do registerForCleanup oldFunPtr + deleteFromCallbackTable callbackID + case maybeCallback of + Nothing -> registerAtGLUT nullFunPtr + Just callback -> do newFunPtr <- makeCallback callback + addToCallbackTable callbackID newFunPtr + registerAtGLUT newFunPtr + hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 17 -import Foreign.Ptr ( FunPtr, nullFunPtr ) - --------------------------------------------------------------------------------- - --- TODO -trackWindowCallback :: - (a -> IO (FunPtr b)) -> (FunPtr b -> IO ()) -> Maybe a -> IO () -trackWindowCallback makeCB registerCB mbAct = do - funPtr <- case mbAct of - Nothing -> return nullFunPtr - Just act -> makeCB act - registerCB funPtr +import Foreign.Ptr ( FunPtr ) +import Graphics.UI.GLUT.Callbacks.Registration ( CallbackType(..), setCallback ) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 65 - trackWindowCallback makeDisplayCallback glutDisplayFunc . Just + setCallback DisplayCB glutDisplayFunc makeDisplayCallback . Just hunk ./Makefile 2 -# $Id: Makefile,v 1.8 2002/06/16 20:07:08 panne Exp $ +# $Id: Makefile,v 1.9 2002/06/30 20:59:59 panne Exp $ hunk ./Makefile 29 - Graphics/UI/GLUT/Callbacks/Window_stub.$(way_)o \ - Graphics/UI/GLUT/Callbacks/Global_stub.$(way_)o + Graphics/UI/GLUT/Callbacks/Global_stub.$(way_)o \ + Graphics/UI/GLUT/Callbacks/Registration_stub.$(way_)o \ + Graphics/UI/GLUT/Callbacks/Window_stub.$(way_)o hunk ./Makefile 34 - Graphics/UI/GLUT/Callbacks/Window_stub.[ch] \ - Graphics/UI/GLUT/Callbacks/Global_stub.[ch] + Graphics/UI/GLUT/Callbacks/Global_stub.[ch] \ + Graphics/UI/GLUT/Callbacks/Registration_stub.[ch] \ + Graphics/UI/GLUT/Callbacks/Window_stub.[ch] hunk ./Makefile 2 -# $Id: Makefile,v 1.9 2002/06/30 20:59:59 panne Exp $ +# $Id: Makefile,v 1.10 2002/07/08 17:44:26 panne Exp $ hunk ./Makefile 17 +PACKAGE_DEPS = base OpenGL hunk ./Makefile 22 +SRC_HADDOCK_OPTS += -t "HOpenGL Libraries (GLUT package)" + hunk ./Graphics/UI/GLUT/Callbacks/Registration.hs 33 - | MotionCB | PassiveMotionCB | EntryExitCB + | MotionCB | PassiveMotionCB | CrossingCB hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 66 --- --- Passing 'Nothing' to 'setMenuStatusCallback' disables the generation of the --- menu status callback. hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 70 - where unmarshal cb s x y = cb (unmarshalMenuUsage s) (WindowPosition x y) + where unmarshal cb s x y = cb (unmarshalMenuUsage s) (WindowPosition x y) hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 93 --- --- Passing 'Nothing' to 'setIdleCallback' disables the generation of the idle --- callback. hunk ./Graphics/UI/GLUT/Callbacks.hs 22 +-- +-- A callback of type @Foo@ can registered by passing 'Just' the callback to +-- @setFooCallback@. Almost all callbacks can be de-registered by passing +-- 'Nothing' to the corresponding @setFooCallback@, the only exceptions being +-- 'Graphics.UI.GLUT.Callbacks.Window.DisplayCallback' (can only be +-- re-registered) and 'Graphics.UI.GLUT.Callbacks.Global.TimerCallback' (can\'t +-- be unregistered). hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 14 - DisplayCallback, setDisplayCallback + -- * Redisplay callbacks + DisplayCallback, setDisplayCallback, setOverlayDisplayCallback, + + -- * Reshape callback + ReshapeCallback, setReshapeCallback, + + -- * Callback for visibility changes + Visibility(..), VisibilityCallback, setVisibilityCallback, + + -- * Keyboard and mouse input callback + Key(..), SpecialKey(..), MouseButton(..), KeyState(..), Modifier(..), + KeyboardMouseCallback, setKeyboardMouseCallback, + + -- * Mouse movement callbacks + MotionCallback, setMotionCallback, setPassiveMotionCallback, + Crossing(..), CrossingCallback, setCrossingCallback, + + -- * Callbacks for special input devices + SpaceballCallback, setSpaceballCallback, + ButtonBoxCallback, setButtonBoxCallback, + DialsCallback, setDialsCallback, + TabletCallback, setTabletCallback hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 38 +import Control.Monad ( liftM ) +import Data.Bits ( Bits((.&.)) ) +import Data.Char ( chr ) +import Foreign.C.Types ( CInt, CUChar ) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 44 +import Graphics.UI.GLUT.Initialization ( WindowSize(..), WindowPosition(..) ) +import Graphics.UI.GLUT.Constants hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 56 --- display callback is called with no parameters. The entire normal plane region --- should be redisplayed in response to the callback (this includes ancillary --- buffers if your program depends on their state). +-- entire normal plane region should be redisplayed in response to the callback +-- (this includes ancillary buffers if your program depends on their state). hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 101 +-- | Set the overlay display callback for the /current window./ The overlay +-- display callback is functionally the same as the window\'s display callback +-- except that the overlay display callback is used to redisplay the window\'s +-- overlay. +-- +-- When GLUT determines that the overlay plane for the window needs to be +-- redisplayed, the overlay display callback for the window is called. Before +-- the callback, the /current window/ is set to the window needing to be +-- redisplayed and the /layer in use/ is set to the overlay. The entire overlay +-- region should be redisplayed in response to the callback (this includes +-- ancillary buffers if your program depends on their state). +-- +-- GLUT determines when the overlay display callback should be triggered based +-- on the window\'s overlay redisplay state. The overlay redisplay state for a +-- window can be either set explicitly by calling +-- 'Graphics.UI.GLUT.Overlay.postOverlayRedisplay' or implicitly as the result +-- of window damage reported by the window system. Multiple posted overlay +-- redisplays for a window are coalesced by GLUT to minimize the number of +-- overlay display callbacks called. +-- +-- Upon return from the overlay display callback, the overlay damaged state of +-- the window (returned by calling 'Graphics.UI.GLUT.State.isOverlayDamaged') +-- is cleared. +-- +-- Initially there is no overlay display callback registered when an overlay is +-- established. See 'setDisplayCallback' to understand how the display callback +-- alone is used if an overlay display callback is not registered. + +setOverlayDisplayCallback :: Maybe DisplayCallback -> IO () +setOverlayDisplayCallback = + setCallback OverlayDisplayCB glutOverlayDisplayFunc makeDisplayCallback + +foreign import ccall unsafe "glutOverlayDisplayFunc" glutOverlayDisplayFunc :: + FunPtr DisplayCallback -> IO () + +-------------------------------------------------------------------------------- + +type ReshapeCallback = WindowSize -> IO () + +type ReshapeCallback' = CInt -> CInt -> IO () + +-- | Set the reshape callback for the /current window./ The reshape callback is +-- triggered when a window is reshaped. A reshape callback is also triggered +-- immediately before a window\'s first display callback after a window is +-- created or whenever an overlay for the window is established. The parameter +-- of the callback specifies the new window size in pixels. Before the callback, +-- the /current window/ is set to the window that has been reshaped. +-- +-- If a reshape callback is not registered for a window or 'Nothing' is passed +-- to setReshapeCallback (to deregister a previously registered callback), the +-- default reshape callback is used. This default callback will simply call +-- +-- @ +-- 'viewport' ('Graphics.UI.GLUT.Initialization.WindowPosition' 0 0) ('Graphics.UI.GLUT.Initialization.WindowSize' /width/ /height/) +-- @ +-- +-- on the normal plane (and on the overlay if one exists). +-- +-- If an overlay is established for the window, a single reshape callback is +-- generated. It is the callback\'s responsibility to update both the normal +-- plane and overlay for the window (changing the layer in use as necessary). +-- +-- When a top-level window is reshaped, subwindows are not reshaped. It is up to +-- the GLUT program to manage the size and positions of subwindows within a +-- top-level window. Still, reshape callbacks will be triggered for subwindows +-- when their size is changed using 'Graphics.UI.GLUT.Window.reshapeWindow'. + +setReshapeCallback :: Maybe ReshapeCallback -> IO () +setReshapeCallback = + setCallback ReshapeCB glutReshapeFunc (makeReshapeCallback . unmarshal) + where unmarshal cb w h = cb (WindowSize w h) + +foreign import ccall "wrapper" makeReshapeCallback :: + ReshapeCallback' -> IO (FunPtr ReshapeCallback') + +foreign import ccall unsafe "glutReshapeFunc" glutReshapeFunc :: + FunPtr ReshapeCallback' -> IO () + +-------------------------------------------------------------------------------- + +-- | The visibility state of the /current window/ + +data Visibility + = NotVisible -- ^ The /current window/ is totally or partially visible. GLUT + -- considers a window visible if any pixel of the window is + -- visible or any pixel of any descendant window is visible on + -- the screen. + | Visible -- ^ No part of the /current window/ is visible, i.e., until the + -- window\'s visibility changes, all further rendering to the + -- window is discarded. + deriving ( Eq, Ord ) + +unmarshalVisibility :: CInt -> Visibility +unmarshalVisibility v + | v == glut_NOT_VISIBLE = NotVisible + | v == glut_VISIBLE = Visible + | otherwise = error "unmarshalVisibility" + +-------------------------------------------------------------------------------- + +type VisibilityCallback = Visibility -> IO () + +type VisibilityCallback' = CInt -> IO () + +-- | Set the visibility callback for the /current window./ The visibility +-- callback for a window is called when the visibility of a window changes. +-- +-- If the visibility callback for a window is disabled and later re-enabled, the +-- visibility status of the window is undefined; any change in window visibility +-- will be reported, that is if you disable a visibility callback and re-enable +-- the callback, you are guaranteed the next visibility change will be reported. + +setVisibilityCallback :: Maybe VisibilityCallback -> IO () +setVisibilityCallback = setCallback VisibilityCB glutVisibilityFunc + (makeVisibilityCallback . unmarshal) + where unmarshal cb = cb . unmarshalVisibility + +foreign import ccall "wrapper" makeVisibilityCallback :: + VisibilityCallback' -> IO (FunPtr VisibilityCallback') + +foreign import ccall unsafe "glutVisibilityFunc" glutVisibilityFunc :: + FunPtr VisibilityCallback' -> IO () + +-------------------------------------------------------------------------------- + +type KeyboardCallback = Char -> WindowPosition -> IO () + +type KeyboardCallback' = CUChar -> CInt -> CInt -> IO () + +setKeyboardCallback :: Maybe KeyboardCallback -> IO () +setKeyboardCallback = + setCallback KeyboardCB glutKeyboardFunc (makeKeyboardCallback . unmarshal) + where unmarshal cb c x y = cb (chr (fromIntegral c)) (WindowPosition x y) + +foreign import ccall "wrapper" makeKeyboardCallback :: + KeyboardCallback' -> IO (FunPtr KeyboardCallback') + +foreign import ccall unsafe "glutKeyboardFunc" glutKeyboardFunc :: + FunPtr KeyboardCallback' -> IO () + +-------------------------------------------------------------------------------- + +setKeyboardUpCallback :: Maybe KeyboardCallback -> IO () +setKeyboardUpCallback = + setCallback KeyboardUpCB glutKeyboardUpFunc (makeKeyboardCallback . unmarshal) + where unmarshal cb c x y = cb (chr (fromIntegral c)) (WindowPosition x y) + +foreign import ccall unsafe "glutKeyboardUpFunc" glutKeyboardUpFunc :: + FunPtr KeyboardCallback' -> IO () + +-------------------------------------------------------------------------------- + +data SpecialKey + = KeyF1 + | KeyF2 + | KeyF3 + | KeyF4 + | KeyF5 + | KeyF6 + | KeyF7 + | KeyF8 + | KeyF9 + | KeyF10 + | KeyF11 + | KeyF12 + | KeyLeft + | KeyUp + | KeyRight + | KeyDown + | KeyPageUp + | KeyPageDown + | KeyHome + | KeyEnd + | KeyInsert + deriving ( Eq, Ord ) + +unmarshalSpecialKey :: CInt -> SpecialKey +unmarshalSpecialKey k + | k == glut_KEY_F1 = KeyF1 + | k == glut_KEY_F2 = KeyF2 + | k == glut_KEY_F3 = KeyF3 + | k == glut_KEY_F4 = KeyF4 + | k == glut_KEY_F5 = KeyF5 + | k == glut_KEY_F6 = KeyF6 + | k == glut_KEY_F7 = KeyF7 + | k == glut_KEY_F8 = KeyF8 + | k == glut_KEY_F9 = KeyF9 + | k == glut_KEY_F10 = KeyF10 + | k == glut_KEY_F11 = KeyF11 + | k == glut_KEY_F12 = KeyF12 + | k == glut_KEY_LEFT = KeyLeft + | k == glut_KEY_UP = KeyUp + | k == glut_KEY_RIGHT = KeyRight + | k == glut_KEY_DOWN = KeyDown + | k == glut_KEY_PAGE_UP = KeyPageUp + | k == glut_KEY_PAGE_DOWN = KeyPageDown + | k == glut_KEY_HOME = KeyHome + | k == glut_KEY_END = KeyEnd + | k == glut_KEY_INSERT = KeyInsert + | otherwise = error "unmarshalSpecialKey" + +-------------------------------------------------------------------------------- + +type SpecialCallback = SpecialKey -> WindowPosition -> IO () + +type SpecialCallback' = CInt -> CInt -> CInt -> IO () + +setSpecialCallback :: Maybe SpecialCallback -> IO () +setSpecialCallback = + setCallback SpecialCB glutSpecialFunc (makeSpecialCallback . unmarshal) + where unmarshal cb k x y = cb (unmarshalSpecialKey k) (WindowPosition x y) + +foreign import ccall "wrapper" makeSpecialCallback :: + SpecialCallback' -> IO (FunPtr SpecialCallback') + +foreign import ccall unsafe "glutSpecialFunc" glutSpecialFunc :: + FunPtr SpecialCallback' -> IO () + +-------------------------------------------------------------------------------- + +setSpecialUpCallback :: Maybe SpecialCallback -> IO () +setSpecialUpCallback = + setCallback SpecialUpCB glutSpecialUpFunc (makeSpecialCallback . unmarshal) + where unmarshal cb k x y = cb (unmarshalSpecialKey k) (WindowPosition x y) + +foreign import ccall unsafe "glutSpecialUpFunc" glutSpecialUpFunc :: + FunPtr SpecialCallback' -> IO () + +-------------------------------------------------------------------------------- + +data MouseButton + = LeftButton + | MiddleButton + | RightButton + deriving ( Eq, Ord ) + +unmarshalMouseButton :: CInt -> MouseButton +unmarshalMouseButton b + | b == glut_LEFT_BUTTON = LeftButton + | b == glut_MIDDLE_BUTTON = MiddleButton + | b == glut_RIGHT_BUTTON = RightButton + | otherwise = error "unmarshalMouseButton" + +-------------------------------------------------------------------------------- + +data KeyState + = Down + | Up + deriving ( Eq, Ord ) + +unmarshalKeyState :: CInt -> KeyState +unmarshalKeyState s + | s == glut_DOWN = Down + | s == glut_UP = Up + | otherwise = error "unmarshalKeyState" + +-------------------------------------------------------------------------------- + +type MouseCallback = MouseButton -> KeyState -> WindowPosition -> IO () + +type MouseCallback' = CInt -> CInt -> CInt -> CInt -> IO () + +setMouseCallback :: Maybe MouseCallback -> IO () +setMouseCallback = + setCallback MouseCB glutMouseFunc (makeMouseCallback . unmarshal) + where unmarshal cb b s x y = cb (unmarshalMouseButton b) + (unmarshalKeyState s) (WindowPosition x y) + +foreign import ccall "wrapper" makeMouseCallback :: + MouseCallback' -> IO (FunPtr MouseCallback') + +foreign import ccall unsafe "glutMouseFunc" glutMouseFunc :: + FunPtr MouseCallback' -> IO () + +-------------------------------------------------------------------------------- + +data Modifier + = Shift + | Ctrl + | Alt + deriving ( Eq, Ord ) + +-- Could use fromBitfield + Enum/Bounded instances + marshalModifier instead... +unmarshalModifiers :: CInt -> [Modifier] +unmarshalModifiers m = + (if (m .&. glut_ACTIVE_SHIFT) /= 0 then (Shift :) else id) . + (if (m .&. glut_ACTIVE_CTRL ) /= 0 then (Ctrl :) else id) . + (if (m .&. glut_ACTIVE_ALT ) /= 0 then (Alt :) else id) $ [] + +getModifiers :: IO [Modifier] +getModifiers = liftM unmarshalModifiers glutGetModifiers + +foreign import ccall unsafe "glutGetModifiers" glutGetModifiers :: IO CInt + +-------------------------------------------------------------------------------- + +data Key + = Char Char + | SpecialKey SpecialKey + | MouseButton MouseButton + deriving ( Eq, Ord ) + +type KeyboardMouseCallback = + Key -> KeyState -> [Modifier] -> WindowPosition -> IO () + +setKeyboardMouseCallback :: Maybe KeyboardMouseCallback -> IO () +setKeyboardMouseCallback Nothing = do + setKeyboardCallback Nothing + setKeyboardUpCallback Nothing + setSpecialCallback Nothing + setSpecialUpCallback Nothing + setMouseCallback Nothing +setKeyboardMouseCallback (Just cb) = do + setKeyboardCallback (Just (\c p -> do m <- getModifiers + cb (Char c) Down m p)) + setKeyboardUpCallback (Just (\c p -> do m <- getModifiers + cb (Char c) Up m p)) + setSpecialCallback (Just (\s p -> do m <- getModifiers + cb (SpecialKey s) Down m p)) + setSpecialUpCallback (Just (\s p -> do m <- getModifiers + cb (SpecialKey s) Up [] p)) + setMouseCallback (Just (\b s p -> do m <- getModifiers + cb (MouseButton b) s [] p)) + +-------------------------------------------------------------------------------- + +type MotionCallback = WindowPosition -> IO () + +type MotionCallback' = CInt -> CInt -> IO () + +-- | Set the motion callback for the /current window./ The motion callback for a +-- window is called when the mouse moves within the window while one or more +-- mouse buttons are pressed. The callback parameter indicates the mouse +-- location in window relative coordinates. + +setMotionCallback :: Maybe MotionCallback -> IO () +setMotionCallback = + setCallback MotionCB glutMotionFunc (makeMotionCallback . unmarshal) + where unmarshal cb x y = cb (WindowPosition x y) + +foreign import ccall "wrapper" makeMotionCallback :: + MotionCallback' -> IO (FunPtr MotionCallback') + +foreign import ccall unsafe "glutMotionFunc" glutMotionFunc :: + FunPtr MotionCallback' -> IO () + +-------------------------------------------------------------------------------- + +-- | Set the passive motion callback for the /current window./ The passive +-- motion callback for a window is called when the mouse moves within the window +-- while /no/ mouse buttons are pressed. The callback parameter indicates the +-- mouse location in window relative coordinates. + +setPassiveMotionCallback :: Maybe MotionCallback -> IO () +setPassiveMotionCallback = + setCallback MotionCB glutPassiveMotionFunc (makeMotionCallback . unmarshal) + where unmarshal cb x y = cb (WindowPosition x y) + +foreign import ccall unsafe "glutPassiveMotionFunc" glutPassiveMotionFunc :: + FunPtr MotionCallback' -> IO () + + +-------------------------------------------------------------------------------- + +data Crossing + = WindowLeft -- ^ The mouse pointer has left the /current window./ + | WindowEntered -- ^ The mouse pointer has entered the /current window./ + deriving ( Eq, Ord ) + +unmarshalCrossing :: CInt -> Crossing +unmarshalCrossing c + | c == glut_LEFT = WindowLeft + | c == glut_ENTERED = WindowEntered + | otherwise = error "unmarshalCrossing" + +-------------------------------------------------------------------------------- + +type CrossingCallback = Crossing -> IO () + +type CrossingCallback' = CInt -> IO () + +-- | Set the mouse enter\/leave callback for the /current window./ Note that +-- some window systems may not generate accurate enter\/leave callbacks. +-- +-- /X Implementation Notes:/ An X implementation of GLUT should generate +-- accurate enter\/leave callbacks. + +setCrossingCallback :: Maybe CrossingCallback -> IO () +setCrossingCallback = + setCallback CrossingCB glutEntryFunc (makeCrossingCallback . unmarshal) + where unmarshal cb = cb . unmarshalCrossing + +foreign import ccall "wrapper" makeCrossingCallback :: + CrossingCallback' -> IO (FunPtr CrossingCallback') + +foreign import ccall unsafe "glutEntryFunc" glutEntryFunc :: + FunPtr CrossingCallback' -> IO () + +-------------------------------------------------------------------------------- + +type SpaceballCallback = IO () + +setSpaceballCallback :: Maybe SpaceballCallback -> IO () +setSpaceballCallback _ = return () + +-------------------------------------------------------------------------------- + +type ButtonBoxCallback = IO () + +setButtonBoxCallback :: Maybe ButtonBoxCallback -> IO () +setButtonBoxCallback _ = return () + +-------------------------------------------------------------------------------- + +type DialsCallback = IO () + +setDialsCallback :: Maybe DialsCallback -> IO () +setDialsCallback _ = return () + +-------------------------------------------------------------------------------- + +type TabletCallback = IO () + +setTabletCallback :: Maybe TabletCallback -> IO () +setTabletCallback _ = return () + hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 24 - Key(..), SpecialKey(..), MouseButton(..), KeyState(..), Modifier(..), + Key(..), SpecialKey(..), MouseButton(..), KeyState(..), Modifiers(..), hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 377 -data Modifier - = Shift - | Ctrl - | Alt - deriving ( Eq, Ord ) +data Modifiers = Modifiers { shift, ctrl, alt :: Bool } deriving ( Eq, Ord ) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 380 -unmarshalModifiers :: CInt -> [Modifier] -unmarshalModifiers m = - (if (m .&. glut_ACTIVE_SHIFT) /= 0 then (Shift :) else id) . - (if (m .&. glut_ACTIVE_CTRL ) /= 0 then (Ctrl :) else id) . - (if (m .&. glut_ACTIVE_ALT ) /= 0 then (Alt :) else id) $ [] +unmarshalModifiers :: CInt -> Modifiers +unmarshalModifiers m = Modifiers { + shift = (m .&. glut_ACTIVE_SHIFT) /= 0, + ctrl = (m .&. glut_ACTIVE_CTRL ) /= 0, + alt = (m .&. glut_ACTIVE_ALT ) /= 0 } hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 386 -getModifiers :: IO [Modifier] +getModifiers :: IO Modifiers hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 400 - Key -> KeyState -> [Modifier] -> WindowPosition -> IO () + Key -> KeyState -> Modifiers -> WindowPosition -> IO () hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 417 - cb (SpecialKey s) Up [] p)) + cb (SpecialKey s) Up m p)) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 419 - cb (MouseButton b) s [] p)) + cb (MouseButton b) s m p)) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 335 + | WheelUp + | WheelDown hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 344 + | b == glut_WHEEL_UP = WheelUp + | b == glut_WHEEL_DOWN = WheelDown hunk ./Graphics/UI/GLUT/Constants.hs 41 -glut_LEFT_BUTTON, glut_MIDDLE_BUTTON, glut_RIGHT_BUTTON :: CInt +glut_LEFT_BUTTON, glut_MIDDLE_BUTTON, glut_RIGHT_BUTTON, glut_WHEEL_UP, + glut_WHEEL_DOWN :: CInt hunk ./Graphics/UI/GLUT/Constants.hs 46 +glut_WHEEL_UP = 3 +glut_WHEEL_DOWN = 4 hunk ./Graphics/UI/GLUT/Callbacks/Registration.hs 1 +-- #hide hunk ./Graphics/UI/GLUT/Initialization.hs 111 - newArgv <- mapM peekCString argvPtrs + newArgv <- mapM peekCString newArgvPtrs hunk ./Graphics/UI/GLUT/Fonts.hs 154 --- | Return the width in pixels of a string in a supported font. While the width --- of characters in a font may vary (though fixed width fonts do not vary), the --- maximum height characteristics of a particular font are fixed. +-- | For a bitmap font, return the width in pixels of a string. For a stroke +-- font, return the width in units. While the width of characters in a font may +-- vary (though fixed width fonts do not vary), the maximum height +-- characteristics of a particular font are fixed. hunk ./Graphics/UI/GLUT/Fonts.hs 181 - -> IO CInt -- ^ Width in pixels. + -> IO CInt -- ^ Width in units. hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 31 - -- * Callbacks for special input devices + -- * Spaceball callback + SpaceballMotion, SpaceballRotation, SpaceballInput(..), hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 34 - ButtonBoxCallback, setButtonBoxCallback, - DialsCallback, setDialsCallback, - TabletCallback, setTabletCallback + + -- * Dial & button box callback + DialAndButtonBoxInput(..), + DialAndButtonBoxCallback, setDialAndButtonBoxCallback, + + -- * Tablet callback + TabletPosition(..), TabletInput(..), TabletCallback, setTabletCallback hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 50 +import Graphics.UI.GLUT.State ( NumButtons, NumDials ) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 507 -type SpaceballCallback = IO () +-- | Translation of the Spaceball along one axis, normalized to be in the range +-- of -1000 to +1000 inclusive +type SpaceballMotion = CInt + +-- | Rotation of the Spaceball along one axis, normalized to be in the range +-- of -1800 .. +1800 inclusive +type SpaceballRotation = CInt + +data SpaceballInput + = SpaceballMotion SpaceballMotion SpaceballMotion SpaceballMotion + | SpaceballRotation SpaceballRotation SpaceballRotation SpaceballRotation + | SpaceballButton NumButtons KeyState + +type SpaceballCallback = SpaceballInput -> IO () + +-- | Set the Spaceball callback for the /current window./ The Spaceball callback +-- for a window is called when the window has Spaceball input focus (normally, +-- when the mouse is in the window) and the user generates Spaceball +-- translations, rotations, or button presses. The number of available Spaceball +-- buttons can be determined with 'Graphics.UI.GLUT.State.getSpaceballInfo'. +-- +-- Registering a Spaceball callback when a Spaceball device is not available has +-- no effect and is not an error. In this case, no Spaceball callbacks will be +-- generated. hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 533 -setSpaceballCallback _ = return () +setSpaceballCallback Nothing = do + setSpaceballMotionCallback Nothing + setSpaceballRotationCallback Nothing + setSpaceballButtonCallback Nothing +setSpaceballCallback (Just cb) = do + setSpaceballMotionCallback (Just (\x y z -> cb (SpaceballMotion x y z))) + setSpaceballRotationCallback (Just (\x y z -> cb (SpaceballRotation x y z))) + setSpaceballButtonCallback (Just (\b s -> cb (SpaceballButton b s))) + +-------------------------------------------------------------------------------- + +type SpaceballMotionCallback = + SpaceballMotion -> SpaceballMotion -> SpaceballMotion -> IO () + +setSpaceballMotionCallback :: Maybe SpaceballMotionCallback -> IO () +setSpaceballMotionCallback = + setCallback SpaceballMotionCB glutSpaceballMotionFunc + (makeSpaceballMotionCallback . unmarshal) + where unmarshal cb x y z = cb x y z + +foreign import ccall "wrapper" makeSpaceballMotionCallback :: + SpaceballMotionCallback -> IO (FunPtr SpaceballMotionCallback) + +foreign import ccall unsafe "glutSpaceballMotionFunc" glutSpaceballMotionFunc :: + FunPtr SpaceballMotionCallback -> IO () + +-------------------------------------------------------------------------------- + +type SpaceballRotationCallback = + SpaceballRotation -> SpaceballRotation -> SpaceballRotation -> IO () + +setSpaceballRotationCallback :: Maybe SpaceballRotationCallback -> IO () +setSpaceballRotationCallback = + setCallback SpaceballRotateCB glutSpaceballRotateFunc + (makeSpaceballRotationCallback . unmarshal) + where unmarshal cb x y z = cb x y z + +foreign import ccall "wrapper" makeSpaceballRotationCallback :: + SpaceballRotationCallback -> IO (FunPtr SpaceballRotationCallback) + +foreign import ccall unsafe "glutSpaceballRotateFunc" glutSpaceballRotateFunc :: + FunPtr SpaceballRotationCallback -> IO () + +-------------------------------------------------------------------------------- + +type SpaceballButtonCallback = NumButtons -> KeyState -> IO () + +type SpaceballButtonCallback' = CInt -> CInt -> IO () + +setSpaceballButtonCallback :: Maybe SpaceballButtonCallback -> IO () +setSpaceballButtonCallback = + setCallback SpaceballButtonCB glutSpaceballButtonFunc + (makeSpaceballButtonCallback . unmarshal) + where unmarshal cb b s = cb b (unmarshalKeyState s) + +foreign import ccall "wrapper" makeSpaceballButtonCallback :: + SpaceballButtonCallback' -> IO (FunPtr SpaceballButtonCallback') + +foreign import ccall unsafe "glutSpaceballButtonFunc" + glutSpaceballButtonFunc :: FunPtr SpaceballButtonCallback' -> IO () + +-------------------------------------------------------------------------------- + +data DialAndButtonBoxInput + = DialAndButtonBoxButton NumButtons KeyState + | DialAndButtonBoxDial NumDials CInt + deriving ( Eq, Ord ) + +type DialAndButtonBoxCallback = DialAndButtonBoxInput -> IO () + +-- | Set the dial & button box callback for the /current window./ The dial & +-- button box button callback for a window is called when the window has dial & +-- button box input focus (normally, when the mouse is in the window) and the +-- user generates dial & button box button presses or dial changes. The number +-- of available dial & button box buttons and dials can be determined with +-- 'Graphics.UI.GLUT.State.getDialAndButtonBoxInfo'. +-- +-- Registering a dial & button box callback when a dial & button box device is +-- not available is ineffectual and not an error. In this case, no dial & button +-- box button will be generated. + + +setDialAndButtonBoxCallback :: Maybe DialAndButtonBoxCallback -> IO () +setDialAndButtonBoxCallback Nothing = do + setButtonBoxCallback Nothing + setDialsCallback Nothing +setDialAndButtonBoxCallback (Just cb) = do + setButtonBoxCallback (Just (\b s -> cb (DialAndButtonBoxButton b s))) + setDialsCallback (Just (\d x -> cb (DialAndButtonBoxDial d x))) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 625 -type ButtonBoxCallback = IO () +type ButtonBoxCallback = NumButtons -> KeyState -> IO () + +type ButtonBoxCallback' = CInt -> CInt -> IO () hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 630 -setButtonBoxCallback _ = return () +setButtonBoxCallback = + setCallback ButtonBoxCB glutButtonBoxFunc (makeButtonBoxFunc . unmarshal) + where unmarshal cb b s = cb b (unmarshalKeyState s) + +foreign import ccall "wrapper" makeButtonBoxFunc :: + ButtonBoxCallback' -> IO (FunPtr ButtonBoxCallback') + +foreign import ccall unsafe "glutButtonBoxFunc" glutButtonBoxFunc :: + FunPtr ButtonBoxCallback' -> IO () hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 642 -type DialsCallback = IO () +type DialsCallback = NumDials -> CInt -> IO () hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 645 -setDialsCallback _ = return () +setDialsCallback = + setCallback DialsCB glutDialsFunc (makeDialsFunc . unmarshal) + where unmarshal cb d x = cb d x + +foreign import ccall "wrapper" makeDialsFunc :: + DialsCallback -> IO (FunPtr DialsCallback) + +foreign import ccall unsafe "glutDialsFunc" glutDialsFunc :: + FunPtr DialsCallback -> IO () hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 657 -type TabletCallback = IO () +-- | Absolute tablet position, with coordinates normalized to be in the range of +-- 0 to 2000 inclusive +data TabletPosition = TabletPosition CInt CInt + +data TabletInput + = TabletMotion + | TabletButton NumButtons KeyState + +type TabletCallback = TabletInput -> TabletPosition -> IO () + +-- | Set the tablet callback for the /current window./ The tablet callback for a +-- window is called when the window has tablet input focus (normally, when the +-- mouse is in the window) and the user generates tablet motion or button +-- presses. The number of available tablet buttons can be determined with +-- 'Graphics.UI.GLUT.State.getTabletInfo'. +-- +-- Registering a tablet callback when a tablet device is not available is +-- ineffectual and not an error. In this case, no tablet callbacks will be +-- generated. hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 678 -setTabletCallback _ = return () +setTabletCallback Nothing = do + setTabletMotionCallback Nothing + setTabletButtonCallback Nothing +setTabletCallback (Just cb) = do + setTabletMotionCallback (Just (\p -> cb TabletMotion p)) + setTabletButtonCallback (Just (\b s p -> cb (TabletButton b s) p)) + +-------------------------------------------------------------------------------- + +type TabletMotionCallback = TabletPosition -> IO () + +type TabletMotionCallback' = CInt -> CInt -> IO () + +setTabletMotionCallback :: Maybe TabletMotionCallback -> IO () +setTabletMotionCallback = + setCallback TabletMotionCB glutTabletMotionFunc + (makeTabletMotionFunc . unmarshal) + where unmarshal cb x y = cb (TabletPosition x y) + +foreign import ccall "wrapper" makeTabletMotionFunc :: + TabletMotionCallback' -> IO (FunPtr TabletMotionCallback') + +foreign import ccall unsafe "glutTabletMotionFunc" glutTabletMotionFunc :: + FunPtr TabletMotionCallback' -> IO () + +-------------------------------------------------------------------------------- + +type TabletButtonCallback = NumButtons -> KeyState -> TabletPosition -> IO () + +type TabletButtonCallback' = CInt -> CInt -> CInt -> CInt -> IO () + +setTabletButtonCallback :: Maybe TabletButtonCallback -> IO () +setTabletButtonCallback = + setCallback TabletButtonCB glutTabletButtonFunc + (makeTabletButtonFunc . unmarshal) + where unmarshal cb b s x y = cb b (unmarshalKeyState s) (TabletPosition x y) + +foreign import ccall "wrapper" makeTabletButtonFunc :: + TabletButtonCallback' -> IO (FunPtr TabletButtonCallback') + +foreign import ccall unsafe "glutTabletButtonFunc" glutTabletButtonFunc :: + FunPtr TabletButtonCallback' -> IO () addfile ./prologue.txt hunk ./Makefile 2 -# $Id: Makefile,v 1.10 2002/07/08 17:44:26 panne Exp $ +# $Id: Makefile,v 1.11 2002/08/10 21:11:26 panne Exp $ hunk ./Makefile 22 -SRC_HADDOCK_OPTS += -t "HOpenGL Libraries (GLUT package)" +SRC_HADDOCK_OPTS += -t "HOpenGL Libraries (GLUT package)" -p prologue.txt hunk ./prologue.txt 1 +The @GLUT@ package contains a Haskell binding for the OpenGL Utility Toolkit, a +window system independent toolkit for writing OpenGL programs. For more +information about the C library on which this binding is based, please see: +. hunk ./Makefile 2 -# $Id: Makefile,v 1.11 2002/08/10 21:11:26 panne Exp $ +# $Id: Makefile,v 1.12 2002/08/11 16:34:36 panne Exp $ hunk ./Makefile 32 + Graphics/UI/GLUT/Menu_stub.$(way_)o \ hunk ./Makefile 38 + Graphics/UI/GLUT/Menu_stub.[ch] \ hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 26 + marshalMouseButton, -- used only internally hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 346 +marshalMouseButton :: MouseButton -> CInt +marshalMouseButton LeftButton = glut_LEFT_BUTTON +marshalMouseButton MiddleButton = glut_MIDDLE_BUTTON +marshalMouseButton RightButton = glut_RIGHT_BUTTON +marshalMouseButton WheelUp = glut_WHEEL_UP +marshalMouseButton WheelDown = glut_WHEEL_DOWN + hunk ./Graphics/UI/GLUT/Callbacks.hs 46 -import Graphics.UI.GLUT.Callbacks.Window +import Graphics.UI.GLUT.Callbacks.Window hiding ( marshalMouseButton ) hunk ./Graphics/UI/GLUT/Menu.hs 16 --- It is illegal to create or destroy menus, or change, add, or remove menu --- items while a menu (and any cascaded sub-menus) are in use (that is, popped --- up). --- hunk ./Graphics/UI/GLUT/Menu.hs 19 - MenuCB, - createMenu, destroyMenu, - setMenu, getMenu, - addMenuEntry, addSubMenu, - changeToMenuEntry, changeToSubMenu, - removeMenuItem, - attachMenu, detachMenu + Menu(..), MenuItem(..), MenuCallback, attachMenu hunk ./Graphics/UI/GLUT/Menu.hs 22 +import Data.Array ( listArray, (!) ) +import Data.FiniteMap ( FiniteMap, emptyFM, lookupFM, addToFM, delFromFM ) +import Data.IORef ( IORef, newIORef, readIORef, modifyIORef ) +import Data.Maybe ( fromJust ) hunk ./Graphics/UI/GLUT/Menu.hs 28 -import Foreign.Ptr ( FunPtr ) -import Control.Monad ( liftM ) +import Foreign.Ptr ( FunPtr, freeHaskellFunPtr ) +import Control.Monad ( liftM, unless, zipWithM ) +import System.IO.Unsafe ( unsafePerformIO ) +import Graphics.UI.GLUT.Callbacks.Window ( MouseButton, marshalMouseButton ) +import Graphics.UI.GLUT.Window ( Window, getWindow ) hunk ./Graphics/UI/GLUT/Menu.hs 36 --- | The type of a menu callback action that is called when a menu entry from a --- menu is selected. The value passed to the callback is determined by the value --- for the selected menu entry. +-- | A menu is simply a list of menu items. +newtype Menu = Menu [MenuItem] + +-- | A single item within a menu can either be a plain menu entry or a sub-menu +-- entry, allowing for arbitrarily deep nested menus. +data MenuItem + = MenuEntry String MenuCallback -- ^ A plain menu entry with an associated + -- callback, which is triggered when the + -- user selects the entry + | SubMenu String Menu -- ^ A sub-menu, which is cascaded when the + -- user selects the entry, allowing + -- sub-menu entries to be selected + +type MenuCallback = IO () + +-- | Create a new pop-up menu for the /current window,/ attaching it to the +-- given mouse button. A previously attached menu (if any), is detached before +-- and won\'t receive callbacks anymore. +-- +-- It is illegal to call 'attachMenu' while any (sub-)menu is in use, i.e. +-- popped up. +-- +-- /X Implementation Notes:/ If available, GLUT for X will take advantage of +-- overlay planes for implementing pop-up menus. The use of overlay planes can +-- eliminate display callbacks when pop-up menus are deactivated. The +-- @SERVER_OVERLAY_VISUALS@ convention is used to determine if overlay visuals +-- are available. + +attachMenu :: MouseButton -> Menu -> IO () +attachMenu mouseButton menu@(Menu items) = do + maybeWindow <- getWindow + let hook = MenuHook (fromJust maybeWindow) mouseButton + detachMenu hook + unless (null items) $ do + (menuID, destructor) <- traverseMenu menu + addToMenuTable hook destructor + attachMenu_ mouseButton + +detachMenu :: MenuHook -> IO () +detachMenu hook@(MenuHook _ mouseButton) = do + maybeDestructor <- lookupInMenuTable hook + case maybeDestructor of + Nothing -> return () + Just destructor -> do detachMenu_ mouseButton + destructor + deleteFromMenuTable hook + +traverseMenu :: Menu -> IO (MenuID, Destructor) +traverseMenu (Menu items) = do + let callbackArray = listArray (1, length items) (map makeCallback items) + cb <- makeMenuFunc (\i -> callbackArray ! (fromIntegral i)) + menuID <- glutCreateMenu cb + destructors <- zipWithM addMenuItem items [1..] + let destructor = do sequence_ destructors + glutDestroyMenu menuID + freeHaskellFunPtr cb + return (menuID, destructor) + +makeCallback :: MenuItem -> MenuCallback +makeCallback (MenuEntry _ cb) = cb +makeCallback _ = error "shouldn't receive a callback for submenus" + +addMenuItem :: MenuItem -> Value -> IO Destructor +addMenuItem (MenuEntry s _) v = do + addMenuEntry s v + return $ glutRemoveMenuItem 1 +addMenuItem (SubMenu s m) _ = do + (menuID, destructor) <- saveExcursion (traverseMenu m) + addSubMenu s menuID + return $ do glutRemoveMenuItem 1 + destructor + +-- Perform an action, saving/restoring the current menu around it +saveExcursion :: IO a -> IO a +saveExcursion act = do + maybeMenuID <- getMenu + returnValue <- act + maybe (return ()) setMenu maybeMenuID -- Hmmm, a bit to lenient? + return returnValue + +-------------------------------------------------------------------------------- +-- This seems to be a common Haskell hack nowadays: A plain old global variable +-- with an associated mutator. Perhaps some language/library support is needed? + +{-# notInline theMenuTable #-} +theMenuTable :: IORef MenuTable +theMenuTable = unsafePerformIO (newIORef emptyMenuTable) + +getMenuTable :: IO MenuTable +getMenuTable = readIORef theMenuTable + +modifyMenuTable :: (MenuTable -> MenuTable) -> IO () +modifyMenuTable = modifyIORef theMenuTable + +-------------------------------------------------------------------------------- +-- To facilitate cleanup, we have to keep track how to destroy menus which are +-- currently attached in a window to a mouse button. hunk ./Graphics/UI/GLUT/Menu.hs 134 -type MenuCB = CInt -> IO () +data MenuHook = MenuHook Window MouseButton deriving ( Eq, Ord ) hunk ./Graphics/UI/GLUT/Menu.hs 136 -type MenuCBPtr = FunPtr MenuCB +type Destructor = IO () + +type MenuTable = FiniteMap MenuHook Destructor + +emptyMenuTable :: MenuTable +emptyMenuTable = emptyFM + +lookupInMenuTable :: MenuHook -> IO (Maybe Destructor) +lookupInMenuTable callbackID = + liftM (flip lookupFM callbackID) getMenuTable + +deleteFromMenuTable :: MenuHook -> IO () +deleteFromMenuTable callbackID = + modifyMenuTable (flip delFromFM callbackID) + +addToMenuTable :: MenuHook -> Destructor -> IO () +addToMenuTable callbackID funPtr = + modifyMenuTable (\table -> addToFM table callbackID funPtr) + +-------------------------------------------------------------------------------- hunk ./Graphics/UI/GLUT/Menu.hs 158 -type Button = CInt hunk ./Graphics/UI/GLUT/Menu.hs 163 +-- | The type of a menu callback action that is called when a menu entry from a +-- menu is selected. The value passed to the callback is determined by the value +-- for the selected menu entry. + +type MenuCB = CInt -> IO () + hunk ./Graphics/UI/GLUT/Menu.hs 183 -foreign import ccall unsafe "glutCreateMenu" createMenu :: MenuCBPtr -> IO MenuID +foreign import ccall unsafe "glutCreateMenu" glutCreateMenu :: + FunPtr MenuCB -> IO MenuID + +foreign import ccall "wrapper" makeMenuFunc :: MenuCB -> IO (FunPtr MenuCB) hunk ./Graphics/UI/GLUT/Menu.hs 191 -foreign import ccall unsafe "glutDestroyMenu" destroyMenu :: MenuID -> IO () +foreign import ccall unsafe "glutDestroyMenu" glutDestroyMenu :: + MenuID -> IO () + +-------------------------------------------------------------------------------- hunk ./Graphics/UI/GLUT/Menu.hs 208 +-------------------------------------------------------------------------------- + hunk ./Graphics/UI/GLUT/Menu.hs 218 -foreign import ccall unsafe "glutAddMenuEntry" glutAddMenuEntry :: CString -> Value -> IO () +foreign import ccall unsafe "glutAddMenuEntry" glutAddMenuEntry :: + CString -> Value -> IO () hunk ./Graphics/UI/GLUT/Menu.hs 229 -foreign import ccall unsafe "glutAddSubMenu" glutAddSubMenu :: CString -> MenuID -> IO () +foreign import ccall unsafe "glutAddSubMenu" glutAddSubMenu :: + CString -> MenuID -> IO () hunk ./Graphics/UI/GLUT/Menu.hs 232 +-------------------------------------------------------------------------------- + +{- UNUSED hunk ./Graphics/UI/GLUT/Menu.hs 243 -foreign import ccall unsafe "glutChangeToMenuEntry" changeToMenuEntry :: Item -> CString -> Value -> IO () +foreign import ccall unsafe "glutChangeToMenuEntry" glutChangeToMenuEntry :: + Item -> CString -> Value -> IO () hunk ./Graphics/UI/GLUT/Menu.hs 254 -foreign import ccall unsafe "glutChangeToSubMenu" changeToSubMenu :: Item -> CString -> MenuID -> IO () +foreign import ccall unsafe "glutChangeToSubMenu" glutChangeToSubMenu :: + Item -> CString -> MenuID -> IO () +-} + +-------------------------------------------------------------------------------- hunk ./Graphics/UI/GLUT/Menu.hs 265 -foreign import ccall unsafe "glutRemoveMenuItem" removeMenuItem :: Item -> IO () +foreign import ccall unsafe "glutRemoveMenuItem" glutRemoveMenuItem :: + Item -> IO () + +-------------------------------------------------------------------------------- hunk ./Graphics/UI/GLUT/Menu.hs 275 -foreign import ccall unsafe "glutAttachMenu" attachMenu :: Button -> IO () + +attachMenu_ :: MouseButton -> IO () +attachMenu_ = glutAttachMenu . marshalMouseButton + +foreign import ccall unsafe "glutAttachMenu" glutAttachMenu :: CInt -> IO () hunk ./Graphics/UI/GLUT/Menu.hs 282 -foreign import ccall unsafe "glutDetachMenu" detachMenu :: Button -> IO () + +detachMenu_ :: MouseButton -> IO () +detachMenu_ = glutDetachMenu . marshalMouseButton + +foreign import ccall unsafe "glutDetachMenu" glutDetachMenu :: CInt -> IO () addfile ./Graphics/UI/GLUT/GameMode.hs hunk ./Graphics/UI/GLUT/Constants.hs 298 - glut_GAME_MODE_REFRESH_RATE, glut_GAME_MODE_DISPLAY_CHANGED :: CInt + glut_GAME_MODE_REFRESH_RATE, glut_GAME_MODE_DISPLAY_CHANGED :: GLenum hunk ./Graphics/UI/GLUT/GameMode.hs 1 +-------------------------------------------------------------------------------- +-- | +-- Module : Graphics.UI.GLUT.GameMode +-- Copyright : (c) Sven Panne 2002 +-- License : BSD-style (see the file libraries/GLUT/LICENSE) +-- +-- Maintainer : sven_panne@yahoo.com +-- Stability : experimental +-- Portability : portable +-- +-------------------------------------------------------------------------------- + +module Graphics.UI.GLUT.GameMode ( + GameModeInfo(..), BitsPerPlane, RefreshRate, + Capability'(..), CapabilityDescription'(..), + initGameMode, enterGameMode, leaveGameMode, isGameModeActive +) where + +import Control.Monad ( liftM ) +import Data.List ( intersperse ) +import Foreign.C.String ( CString, withCString ) +import Foreign.C.Types ( CInt ) +import Graphics.Rendering.OpenGL.GL.BasicTypes ( GLenum ) +import Graphics.UI.GLUT.Constants +import Graphics.UI.GLUT.Initialization ( WindowSize(..), Relation, + ToString(..) ) +import Graphics.UI.GLUT.Window ( Window(..) ) + +-------------------------------------------------------------------------------- + +type BitsPerPlane = CInt + +type RefreshRate = CInt + +data GameModeInfo = GameModeInfo WindowSize BitsPerPlane RefreshRate + +-------------------------------------------------------------------------------- + +data Capability' + = Width + | Height + | BitsPerPlane + | RefreshRate + | Num' -- BETTER NAME! + deriving ( Eq, Ord ) + +instance ToString Capability' where + toString Width = "width" + toString Height = "height" + toString BitsPerPlane = "bpp" + toString RefreshRate = "hertz" + toString Num' = "num" + +data CapabilityDescription' = Where' Capability' Relation CInt + deriving ( Eq, Ord ) + +instance ToString CapabilityDescription' where + toString (Where' c r i) = toString c ++ toString r ++ show i + +initGameMode :: [CapabilityDescription'] -> IO (Maybe GameModeInfo) +initGameMode settings = do + withCString (concat . intersperse " " . map toString $ settings) + glutGameModeString + p <- getBool glut_GAME_MODE_POSSIBLE + if p + then do w <- glutGameModeGet glut_GAME_MODE_WIDTH + h <- glutGameModeGet glut_GAME_MODE_HEIGHT + b <- glutGameModeGet glut_GAME_MODE_PIXEL_DEPTH + r <- glutGameModeGet glut_GAME_MODE_REFRESH_RATE + return $ Just $ GameModeInfo (WindowSize w h) b r + else return Nothing + +foreign import ccall unsafe "glutGameModeString" glutGameModeString :: + CString -> IO () + +-------------------------------------------------------------------------------- + +enterGameMode :: IO (Window, Bool) +enterGameMode = do + w <- glutEnterGameMode + c <- getBool glut_GAME_MODE_DISPLAY_CHANGED + return (Window w, c) + +foreign import ccall unsafe "glutEnterGameMode" glutEnterGameMode :: IO CInt + +-------------------------------------------------------------------------------- + +foreign import ccall unsafe "glutLeaveGameMode" leaveGameMode :: IO () + +-------------------------------------------------------------------------------- + +isGameModeActive :: IO Bool +isGameModeActive = getBool glut_GAME_MODE_ACTIVE + +getBool :: GLenum -> IO Bool +getBool = liftM (/= 0) . glutGameModeGet + +foreign import ccall unsafe "glutGameModeGet" glutGameModeGet :: + GLenum -> IO CInt hunk ./Graphics/UI/GLUT/Initialization.hs 40 + ToString(..), -- used only internally hunk ./Graphics/UI/GLUT.hs 54 - module Graphics.UI.GLUT.Objects + module Graphics.UI.GLUT.Objects, + module Graphics.UI.GLUT.GameMode hunk ./Graphics/UI/GLUT.hs 58 -import Graphics.UI.GLUT.Initialization hiding ( marshalDisplayMode ) +import Graphics.UI.GLUT.Initialization hiding ( ToString(..), marshalDisplayMode ) hunk ./Graphics/UI/GLUT.hs 69 +import Graphics.UI.GLUT.GameMode hunk ./Graphics/UI/GLUT/GameMode.hs 11 +-- In addition to the functionality offered by +-- 'Graphics.UI.GLUT.Window.fullScreen', GLUT offers an sub-API to change the +-- screen resolution, color depth, and refresh rate of the display for a single +-- full screen window. This mode of operation is called /game mode/, and is +-- restricted in various ways: No pop-up menus are allowed for this full screen +-- window, no other (sub-)windows can be created, and all other applications are +-- hidden. +-- +-- /X Implementation Notes:/ Note that game mode is not fully supported in +-- GLUT for X, it is essentially the same as using +-- 'Graphics.UI.GLUT.Window.fullScreen', with the additional restrictions +-- mentioned above. +-- hunk ./Graphics/UI/GLUT/GameMode.hs 27 - GameModeInfo(..), BitsPerPlane, RefreshRate, - Capability'(..), CapabilityDescription'(..), - initGameMode, enterGameMode, leaveGameMode, isGameModeActive + Capability'(..), CapabilityDescription'(..), initGameMode, + enterGameMode, leaveGameMode, + BitsPerPlane, RefreshRate, GameModeInfo(..), getGameModeInfo, + isGameModeActive hunk ./Graphics/UI/GLUT/GameMode.hs 45 -type BitsPerPlane = CInt - -type RefreshRate = CInt - -data GameModeInfo = GameModeInfo WindowSize BitsPerPlane RefreshRate - --------------------------------------------------------------------------------- +-- | Capabilities for 'initGameMode' hunk ./Graphics/UI/GLUT/GameMode.hs 48 - = Width - | Height - | BitsPerPlane - | RefreshRate - | Num' -- BETTER NAME! + = Width -- ^ Width of the screen resolution in pixels + | Height -- ^ Height of the screen resolution in pixels + | BitsPerPlane -- ^ Color depth of the screen in bits + | RefreshRate -- ^ Refresh rate in Hertz + | Num' -- ^ Match the Nth fram buffer configuration compatible with + -- with the give capabilities (numbering starts at 1) hunk ./Graphics/UI/GLUT/GameMode.hs 63 +-- | A single capability description for 'initGameMode'. + hunk ./Graphics/UI/GLUT/GameMode.hs 71 -initGameMode :: [CapabilityDescription'] -> IO (Maybe GameModeInfo) -initGameMode settings = do +-------------------------------------------------------------------------------- + +-- | Set the /game mode/ to be used when 'enterGameMode' is called. It is +-- described by a list of zero or more capability descriptions, which are +-- translated into a set of criteria used to select the appropriate screen +-- configuration. The criteria are matched in strict left to right order of +-- precdence. That is, the first specified criterion (leftmost) takes precedence +-- over the later criteria for non-exact criteria +-- ('Graphics.UI.GLUT.Initialization.IsGreaterThan', +-- 'Graphics.UI.GLUT.Initialization.IsLessThan', etc.). Exact criteria +-- ('Graphics.UI.GLUT.Initialization.IsEqualTo', +-- 'Graphics.UI.GLUT.Initialization.IsNotEqualTo') must match exactly so +-- precedence is not relevant. +-- +-- To determine which configuration will actually be tried by 'enterGameMode' +-- (if any), use 'getGameModeInfo'. +-- +-- Note that even for game mode previous calls to +-- 'Graphics.UI.GLUT.Initialization.initDisplayMode'or +-- 'Graphics.UI.GLUT.Initialization.initDisplay' will determine which buffers +-- are available, if double buffering is used or not, etc. + +initGameMode :: [CapabilityDescription'] -> IO () +initGameMode settings = hunk ./Graphics/UI/GLUT/GameMode.hs 97 - p <- getBool glut_GAME_MODE_POSSIBLE - if p - then do w <- glutGameModeGet glut_GAME_MODE_WIDTH - h <- glutGameModeGet glut_GAME_MODE_HEIGHT - b <- glutGameModeGet glut_GAME_MODE_PIXEL_DEPTH - r <- glutGameModeGet glut_GAME_MODE_REFRESH_RATE - return $ Just $ GameModeInfo (WindowSize w h) b r - else return Nothing hunk ./Graphics/UI/GLUT/GameMode.hs 103 +-- | Enter /game mode/, trying to change resolution, refresh rate, etc., as +-- specified by the last call to 'initGameMode'. An identifier for the game +-- mode window and a flag, indicating if the display mode actually changed, are +-- returned. The game mode window is made the /current window/. +-- +-- Re-entering /game mode/ is allowed, the previous game mode window gets +-- destroyed by this, and a new one is created. +-- +-- /X Implementation Notes:/ GLUT for X never changes the display mode, but +-- simply creates a full screen window, requesting absolutely no decorations +-- from the window manager. + hunk ./Graphics/UI/GLUT/GameMode.hs 125 +-- | Leave /game mode/, restoring the old display mode and destroying the game +-- mode window. + hunk ./Graphics/UI/GLUT/GameMode.hs 132 -isGameModeActive :: IO Bool -isGameModeActive = getBool glut_GAME_MODE_ACTIVE +-- | The color depth of the screen, measured in bits (e.g. 8, 16, 24, 32, ...) + +type BitsPerPlane = CInt + +-- | The refresh rate of the screen, measured in Hertz (e.g. 60, 75, 100, ...) + +type RefreshRate = CInt + +data GameModeInfo = GameModeInfo WindowSize BitsPerPlane RefreshRate + +-------------------------------------------------------------------------------- + +-- | Return 'Just' the mode which would be tried by the next call to +-- 'enterGameMode'. Returns 'Nothing' if the mode requested by the last call to +-- 'initGameMode' is not possible, in which case 'enterGameMode' would simply +-- create a full screen window using the current mode. +-- +-- /X Implementation Notes:/ GLUT for X will always return 'Nothing'. + +getGameModeInfo :: IO (Maybe GameModeInfo) +getGameModeInfo = do + possible <- getBool glut_GAME_MODE_POSSIBLE + if possible + then do w <- glutGameModeGet glut_GAME_MODE_WIDTH + h <- glutGameModeGet glut_GAME_MODE_HEIGHT + b <- glutGameModeGet glut_GAME_MODE_PIXEL_DEPTH + r <- glutGameModeGet glut_GAME_MODE_REFRESH_RATE + return $ Just $ GameModeInfo (WindowSize w h) b r + else return Nothing hunk ./Graphics/UI/GLUT/GameMode.hs 168 +-------------------------------------------------------------------------------- + +-- | Test whether /game mode/ is active or not. + +isGameModeActive :: IO Bool +isGameModeActive = getBool glut_GAME_MODE_ACTIVE + hunk ./Graphics/UI/GLUT/GameMode.hs 40 - ToString(..) ) + relationToString ) hunk ./Graphics/UI/GLUT/GameMode.hs 56 -instance ToString Capability' where - toString Width = "width" - toString Height = "height" - toString BitsPerPlane = "bpp" - toString RefreshRate = "hertz" - toString Num' = "num" +capabilityToString :: Capability' -> String +capabilityToString Width = "width" +capabilityToString Height = "height" +capabilityToString BitsPerPlane = "bpp" +capabilityToString RefreshRate = "hertz" +capabilityToString Num' = "num" hunk ./Graphics/UI/GLUT/GameMode.hs 68 -instance ToString CapabilityDescription' where - toString (Where' c r i) = toString c ++ toString r ++ show i +capabilityDescriptionToString :: CapabilityDescription' -> String +capabilityDescriptionToString (Where' c r i) = + capabilityToString c ++ relationToString r ++ show i hunk ./Graphics/UI/GLUT/GameMode.hs 96 - withCString (concat . intersperse " " . map toString $ settings) - glutGameModeString + withCString + (concat . intersperse " " . map capabilityDescriptionToString $ settings) + glutGameModeString hunk ./Graphics/UI/GLUT/Initialization.hs 40 - ToString(..), -- used only internally + relationToString, -- used only internally hunk ./Graphics/UI/GLUT/Initialization.hs 235 --- Internal class for leaving Show instances untouched - -class ToString a where - toString :: a -> String - hunk ./Graphics/UI/GLUT/Initialization.hs 354 -instance ToString Capability where - toString RGBA' = "rgba" - toString RGB' = "rgb" - toString Red = "red" - toString Green = "green" - toString Blue = "blue" - toString Index' = "index" - toString Buffer = "buffer" - toString Single' = "single" - toString Double' = "double" - toString AccA = "acca" - toString Acc = "acc" - toString Alpha' = "alpha" - toString Depth' = "depth" - toString Stencil' = "stencil" - toString Samples = "samples" - toString Stereo' = "stereo" - toString Luminance' = "luminance" - toString Num = "num" - toString Conformant = "conformant" - toString Slow = "slow" - toString Win32PFD = "win32pfd" - toString XVisual = "xvisual" - toString XStaticGray = "xstaticgray" - toString XGrayScale = "xgrayscale" - toString XStaticColor = "xstaticcolor" - toString XPseudoColor = "xpseudocolor" - toString XTrueColor = "xtruecolor" - toString XDirectColor = "xdirectcolor" +capabilityToString :: Capability -> String +capabilityToString RGBA' = "rgba" +capabilityToString RGB' = "rgb" +capabilityToString Red = "red" +capabilityToString Green = "green" +capabilityToString Blue = "blue" +capabilityToString Index' = "index" +capabilityToString Buffer = "buffer" +capabilityToString Single' = "single" +capabilityToString Double' = "double" +capabilityToString AccA = "acca" +capabilityToString Acc = "acc" +capabilityToString Alpha' = "alpha" +capabilityToString Depth' = "depth" +capabilityToString Stencil' = "stencil" +capabilityToString Samples = "samples" +capabilityToString Stereo' = "stereo" +capabilityToString Luminance' = "luminance" +capabilityToString Num = "num" +capabilityToString Conformant = "conformant" +capabilityToString Slow = "slow" +capabilityToString Win32PFD = "win32pfd" +capabilityToString XVisual = "xvisual" +capabilityToString XStaticGray = "xstaticgray" +capabilityToString XGrayScale = "xgrayscale" +capabilityToString XStaticColor = "xstaticcolor" +capabilityToString XPseudoColor = "xpseudocolor" +capabilityToString XTrueColor = "xtruecolor" +capabilityToString XDirectColor = "xdirectcolor" hunk ./Graphics/UI/GLUT/Initialization.hs 406 -instance ToString Relation where - toString IsEqualTo = "=" - toString IsNotEqualTo = "!=" - toString IsLessThan = "<" - toString IsNotGreaterThan = "<=" - toString IsGreaterThan = ">" - toString IsAtLeast = ">=" - toString IsNotLessThan = "~" +relationToString :: Relation -> String +relationToString IsEqualTo = "=" +relationToString IsNotEqualTo = "!=" +relationToString IsLessThan = "<" +relationToString IsNotGreaterThan = "<=" +relationToString IsGreaterThan = ">" +relationToString IsAtLeast = ">=" +relationToString IsNotLessThan = "~" hunk ./Graphics/UI/GLUT/Initialization.hs 426 -instance ToString CapabilityDescription where - toString (Where c r i) = toString c ++ toString r ++ show i - toString (With c) = toString c +capabilityDescriptionToString :: CapabilityDescription -> String +capabilityDescriptionToString (Where c r i) = + capabilityToString c ++ relationToString r ++ show i +capabilityDescriptionToString (With c) = capabilityToString c hunk ./Graphics/UI/GLUT/Initialization.hs 463 - withCString (concat . intersperse " " . map toString $ settings) - glutInitDisplayString + withCString + (concat . intersperse " " . map capabilityDescriptionToString $ settings) + glutInitDisplayString hunk ./Graphics/UI/GLUT.hs 58 -import Graphics.UI.GLUT.Initialization hiding ( ToString(..), marshalDisplayMode ) +import Graphics.UI.GLUT.Initialization hiding ( marshalDisplayMode, + relationToString ) hunk ./Graphics/UI/GLUT.hs 246 --- * /Video Resizing:/ These routines provide a means for doing swap or frame --- synchronous resizing\/panning of the area that is to be magnified (or passed --- through) to the output video resolution. --- hunk ./Graphics/UI/GLUT.hs 254 +-- Note that the following item has been left out intentionally, its +-- implementation is too SGI-specific: +-- * /Video Resizing:/ These routines provide a means for doing swap or frame +-- synchronous resizing\/panning of the area that is to be magnified (or passed +-- through) to the output video resolution. + addfile ./Graphics/UI/GLUT/Debugging.hs hunk ./Graphics/UI/GLUT/Debugging.hs 1 +-------------------------------------------------------------------------------- +-- | +-- Module : Graphics.UI.GLUT.Debugging +-- Copyright : (c) Sven Panne 2002 +-- License : BSD-style (see the file libraries/GLUT/LICENSE) +-- +-- Maintainer : sven_panne@yahoo.com +-- Stability : experimental +-- Portability : portable +-- +-- This module contains a simple utility routine to report any pending GL +-- errors. +-- +-------------------------------------------------------------------------------- + +module Graphics.UI.GLUT.Debugging ( + reportErrors +) where + +-- | Report any pending GL errors to stderr (which is typically the console). +-- If there are no pending errors, this routine does nothing. + +foreign import ccall unsafe "glutReportErrors" reportErrors :: IO () hunk ./Graphics/UI/GLUT.hs 55 + module Graphics.UI.GLUT.Debugging, hunk ./Graphics/UI/GLUT.hs 71 +import Graphics.UI.GLUT.Debugging hunk ./Graphics/UI/GLUT/Begin.hs 26 -foreign import ccall safe "glutMainLoop" mainLoop :: IO () +foreign import CALLCONV safe "glutMainLoop" mainLoop :: IO () hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 75 -foreign import ccall unsafe "glutMenuStatusFunc" glutMenuStatusFunc :: +foreign import CALLCONV unsafe "glutMenuStatusFunc" glutMenuStatusFunc :: hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 100 -foreign import ccall unsafe "glutIdleFunc" glutIdleFunc :: +foreign import CALLCONV unsafe "glutIdleFunc" glutIdleFunc :: hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 130 -foreign import ccall unsafe "glutTimerFunc" glutTimerFunc :: +foreign import CALLCONV unsafe "glutTimerFunc" glutTimerFunc :: hunk ./Graphics/UI/GLUT/Callbacks/Registration.hs 126 -foreign import ccall unsafe "glutTimerFunc" glutTimerFunc :: +foreign import CALLCONV unsafe "glutTimerFunc" glutTimerFunc :: hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 103 -foreign import ccall unsafe "glutDisplayFunc" glutDisplayFunc :: +foreign import CALLCONV unsafe "glutDisplayFunc" glutDisplayFunc :: hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 140 -foreign import ccall unsafe "glutOverlayDisplayFunc" glutOverlayDisplayFunc :: +foreign import CALLCONV unsafe "glutOverlayDisplayFunc" glutOverlayDisplayFunc :: hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 183 -foreign import ccall unsafe "glutReshapeFunc" glutReshapeFunc :: +foreign import CALLCONV unsafe "glutReshapeFunc" glutReshapeFunc :: hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 228 -foreign import ccall unsafe "glutVisibilityFunc" glutVisibilityFunc :: +foreign import CALLCONV unsafe "glutVisibilityFunc" glutVisibilityFunc :: hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 245 -foreign import ccall unsafe "glutKeyboardFunc" glutKeyboardFunc :: +foreign import CALLCONV unsafe "glutKeyboardFunc" glutKeyboardFunc :: hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 255 -foreign import ccall unsafe "glutKeyboardUpFunc" glutKeyboardUpFunc :: +foreign import CALLCONV unsafe "glutKeyboardUpFunc" glutKeyboardUpFunc :: hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 323 -foreign import ccall unsafe "glutSpecialFunc" glutSpecialFunc :: +foreign import CALLCONV unsafe "glutSpecialFunc" glutSpecialFunc :: hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 333 -foreign import ccall unsafe "glutSpecialUpFunc" glutSpecialUpFunc :: +foreign import CALLCONV unsafe "glutSpecialUpFunc" glutSpecialUpFunc :: hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 390 -foreign import ccall unsafe "glutMouseFunc" glutMouseFunc :: +foreign import CALLCONV unsafe "glutMouseFunc" glutMouseFunc :: hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 407 -foreign import ccall unsafe "glutGetModifiers" glutGetModifiers :: IO CInt +foreign import CALLCONV unsafe "glutGetModifiers" glutGetModifiers :: IO CInt hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 458 -foreign import ccall unsafe "glutMotionFunc" glutMotionFunc :: +foreign import CALLCONV unsafe "glutMotionFunc" glutMotionFunc :: hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 473 -foreign import ccall unsafe "glutPassiveMotionFunc" glutPassiveMotionFunc :: +foreign import CALLCONV unsafe "glutPassiveMotionFunc" glutPassiveMotionFunc :: hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 510 -foreign import ccall unsafe "glutEntryFunc" glutEntryFunc :: +foreign import CALLCONV unsafe "glutEntryFunc" glutEntryFunc :: hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 564 -foreign import ccall unsafe "glutSpaceballMotionFunc" glutSpaceballMotionFunc :: +foreign import CALLCONV unsafe "glutSpaceballMotionFunc" glutSpaceballMotionFunc :: hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 581 -foreign import ccall unsafe "glutSpaceballRotateFunc" glutSpaceballRotateFunc :: +foreign import CALLCONV unsafe "glutSpaceballRotateFunc" glutSpaceballRotateFunc :: hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 599 -foreign import ccall unsafe "glutSpaceballButtonFunc" +foreign import CALLCONV unsafe "glutSpaceballButtonFunc" hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 645 -foreign import ccall unsafe "glutButtonBoxFunc" glutButtonBoxFunc :: +foreign import CALLCONV unsafe "glutButtonBoxFunc" glutButtonBoxFunc :: hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 660 -foreign import ccall unsafe "glutDialsFunc" glutDialsFunc :: +foreign import CALLCONV unsafe "glutDialsFunc" glutDialsFunc :: hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 708 -foreign import ccall unsafe "glutTabletMotionFunc" glutTabletMotionFunc :: +foreign import CALLCONV unsafe "glutTabletMotionFunc" glutTabletMotionFunc :: hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 726 -foreign import ccall unsafe "glutTabletButtonFunc" glutTabletButtonFunc :: +foreign import CALLCONV unsafe "glutTabletButtonFunc" glutTabletButtonFunc :: hunk ./Graphics/UI/GLUT/Colormap.hs 64 -foreign import ccall unsafe "glutSetColor" glutSetColor :: +foreign import CALLCONV unsafe "glutSetColor" glutSetColor :: hunk ./Graphics/UI/GLUT/Colormap.hs 85 -foreign import ccall unsafe "glutGetColor" glutGetColor :: +foreign import CALLCONV unsafe "glutGetColor" glutGetColor :: hunk ./Graphics/UI/GLUT/Colormap.hs 97 -foreign import ccall unsafe "glutCopyColormap" copyColormap :: +foreign import CALLCONV unsafe "glutCopyColormap" copyColormap :: hunk ./Graphics/UI/GLUT/Debugging.hs 23 -foreign import ccall unsafe "glutReportErrors" reportErrors :: IO () +foreign import CALLCONV unsafe "glutReportErrors" reportErrors :: IO () hunk ./Graphics/UI/GLUT/Fonts.hs 73 -foreign import ccall "hOpenGL_marshalBitmapFont" hOpenGL_marshalBitmapFont :: - CInt -> IO GLUTbitmapFont +foreign import ccall unsafe "hOpenGL_marshalBitmapFont" + hOpenGL_marshalBitmapFont :: CInt -> IO GLUTbitmapFont hunk ./Graphics/UI/GLUT/Fonts.hs 102 -foreign import ccall "hOpenGL_marshalStrokeFont" hOpenGL_marshalStrokeFont :: - CInt -> IO GLUTstrokeFont +foreign import ccall unsafe "hOpenGL_marshalStrokeFont" + hOpenGL_marshalStrokeFont :: CInt -> IO GLUTstrokeFont hunk ./Graphics/UI/GLUT/Fonts.hs 139 -foreign import ccall "glutBitmapCharacter" glutBitmapCharacter :: +foreign import CALLCONV "glutBitmapCharacter" glutBitmapCharacter :: hunk ./Graphics/UI/GLUT/Fonts.hs 149 -foreign import ccall "glutStrokeCharacter" glutStrokeCharacter :: +foreign import CALLCONV unsafe "glutStrokeCharacter" glutStrokeCharacter :: hunk ./Graphics/UI/GLUT/Fonts.hs 173 -foreign import ccall "glutBitmapLength" glutBitmapLength :: +foreign import CALLCONV unsafe "glutBitmapLength" glutBitmapLength :: hunk ./Graphics/UI/GLUT/Fonts.hs 186 -foreign import ccall "glutStrokeLength" glutStrokeLength :: +foreign import CALLCONV unsafe "glutStrokeLength" glutStrokeLength :: hunk ./Graphics/UI/GLUT/GameMode.hs 100 -foreign import ccall unsafe "glutGameModeString" glutGameModeString :: +foreign import CALLCONV unsafe "glutGameModeString" glutGameModeString :: hunk ./Graphics/UI/GLUT/GameMode.hs 123 -foreign import ccall unsafe "glutEnterGameMode" glutEnterGameMode :: IO CInt +foreign import CALLCONV unsafe "glutEnterGameMode" glutEnterGameMode :: IO CInt hunk ./Graphics/UI/GLUT/GameMode.hs 130 -foreign import ccall unsafe "glutLeaveGameMode" leaveGameMode :: IO () +foreign import CALLCONV unsafe "glutLeaveGameMode" leaveGameMode :: IO () hunk ./Graphics/UI/GLUT/GameMode.hs 167 -foreign import ccall unsafe "glutGameModeGet" glutGameModeGet :: +foreign import CALLCONV unsafe "glutGameModeGet" glutGameModeGet :: hunk ./Graphics/UI/GLUT/Initialization.hs 115 -foreign import ccall unsafe "glutInit" glutInit :: +foreign import CALLCONV unsafe "glutInit" glutInit :: hunk ./Graphics/UI/GLUT/Initialization.hs 148 -foreign import ccall unsafe "glutInitWindowPosition" glutInitWindowPosition +foreign import CALLCONV unsafe "glutInitWindowPosition" glutInitWindowPosition hunk ./Graphics/UI/GLUT/Initialization.hs 170 -foreign import ccall unsafe "glutInitWindowSize" glutInitWindowSize :: +foreign import CALLCONV unsafe "glutInitWindowSize" glutInitWindowSize :: hunk ./Graphics/UI/GLUT/Initialization.hs 230 -foreign import ccall unsafe "glutInitDisplayMode" glutInitDisplayMode :: +foreign import CALLCONV unsafe "glutInitDisplayMode" glutInitDisplayMode :: hunk ./Graphics/UI/GLUT/Initialization.hs 467 -foreign import ccall unsafe "glutInitDisplayString" glutInitDisplayString :: +foreign import CALLCONV unsafe "glutInitDisplayString" glutInitDisplayString :: hunk ./Graphics/UI/GLUT/Menu.hs 183 -foreign import ccall unsafe "glutCreateMenu" glutCreateMenu :: +foreign import CALLCONV unsafe "glutCreateMenu" glutCreateMenu :: hunk ./Graphics/UI/GLUT/Menu.hs 191 -foreign import ccall unsafe "glutDestroyMenu" glutDestroyMenu :: +foreign import CALLCONV unsafe "glutDestroyMenu" glutDestroyMenu :: hunk ./Graphics/UI/GLUT/Menu.hs 198 -foreign import ccall unsafe "glutSetMenu" setMenu :: MenuID -> IO () +foreign import CALLCONV unsafe "glutSetMenu" setMenu :: MenuID -> IO () hunk ./Graphics/UI/GLUT/Menu.hs 206 -foreign import ccall unsafe "glutGetMenu" glutGetMenu :: IO MenuID +foreign import CALLCONV unsafe "glutGetMenu" glutGetMenu :: IO MenuID hunk ./Graphics/UI/GLUT/Menu.hs 218 -foreign import ccall unsafe "glutAddMenuEntry" glutAddMenuEntry :: +foreign import CALLCONV unsafe "glutAddMenuEntry" glutAddMenuEntry :: hunk ./Graphics/UI/GLUT/Menu.hs 229 -foreign import ccall unsafe "glutAddSubMenu" glutAddSubMenu :: +foreign import CALLCONV unsafe "glutAddSubMenu" glutAddSubMenu :: hunk ./Graphics/UI/GLUT/Menu.hs 243 -foreign import ccall unsafe "glutChangeToMenuEntry" glutChangeToMenuEntry :: +foreign import CALLCONV unsafe "glutChangeToMenuEntry" glutChangeToMenuEntry :: hunk ./Graphics/UI/GLUT/Menu.hs 254 -foreign import ccall unsafe "glutChangeToSubMenu" glutChangeToSubMenu :: +foreign import CALLCONV unsafe "glutChangeToSubMenu" glutChangeToSubMenu :: hunk ./Graphics/UI/GLUT/Menu.hs 265 -foreign import ccall unsafe "glutRemoveMenuItem" glutRemoveMenuItem :: +foreign import CALLCONV unsafe "glutRemoveMenuItem" glutRemoveMenuItem :: hunk ./Graphics/UI/GLUT/Menu.hs 279 -foreign import ccall unsafe "glutAttachMenu" glutAttachMenu :: CInt -> IO () +foreign import CALLCONV unsafe "glutAttachMenu" glutAttachMenu :: CInt -> IO () hunk ./Graphics/UI/GLUT/Menu.hs 286 -foreign import ccall unsafe "glutDetachMenu" glutDetachMenu :: CInt -> IO () +foreign import CALLCONV unsafe "glutDetachMenu" glutDetachMenu :: CInt -> IO () hunk ./Graphics/UI/GLUT/Objects.hs 134 -foreign import ccall unsafe "glutSolidCube" solidCube +foreign import CALLCONV unsafe "glutSolidCube" solidCube hunk ./Graphics/UI/GLUT/Objects.hs 141 -foreign import ccall unsafe "glutWireCube" wireCube +foreign import CALLCONV unsafe "glutWireCube" wireCube hunk ./Graphics/UI/GLUT/Objects.hs 150 -foreign import ccall unsafe "glutSolidDodecahedron" solidDodecahedron :: IO () +foreign import CALLCONV unsafe "glutSolidDodecahedron" solidDodecahedron :: IO () hunk ./Graphics/UI/GLUT/Objects.hs 155 -foreign import ccall unsafe "glutWireDodecahedron" wireDodecahedron :: IO () +foreign import CALLCONV unsafe "glutWireDodecahedron" wireDodecahedron :: IO () hunk ./Graphics/UI/GLUT/Objects.hs 162 -foreign import ccall unsafe "glutWireIcosahedron" wireIcosahedron :: IO () +foreign import CALLCONV unsafe "glutWireIcosahedron" wireIcosahedron :: IO () hunk ./Graphics/UI/GLUT/Objects.hs 167 -foreign import ccall unsafe "glutSolidIcosahedron" solidIcosahedron :: IO () +foreign import CALLCONV unsafe "glutSolidIcosahedron" solidIcosahedron :: IO () hunk ./Graphics/UI/GLUT/Objects.hs 174 -foreign import ccall unsafe "glutSolidOctahedron" solidOctahedron :: IO () +foreign import CALLCONV unsafe "glutSolidOctahedron" solidOctahedron :: IO () hunk ./Graphics/UI/GLUT/Objects.hs 179 -foreign import ccall unsafe "glutWireOctahedron" wireOctahedron :: IO () +foreign import CALLCONV unsafe "glutWireOctahedron" wireOctahedron :: IO () hunk ./Graphics/UI/GLUT/Objects.hs 186 -foreign import ccall unsafe "glutWireTetrahedron" wireTetrahedron :: IO () +foreign import CALLCONV unsafe "glutWireTetrahedron" wireTetrahedron :: IO () hunk ./Graphics/UI/GLUT/Objects.hs 191 -foreign import ccall unsafe "glutSolidTetrahedron" solidTetrahedron :: IO () +foreign import CALLCONV unsafe "glutSolidTetrahedron" solidTetrahedron :: IO () hunk ./Graphics/UI/GLUT/Objects.hs 199 -foreign import ccall unsafe "glutSolidSphere" solidSphere +foreign import CALLCONV unsafe "glutSolidSphere" solidSphere hunk ./Graphics/UI/GLUT/Objects.hs 209 -foreign import ccall unsafe "glutWireSphere" wireSphere +foreign import CALLCONV unsafe "glutWireSphere" wireSphere hunk ./Graphics/UI/GLUT/Objects.hs 221 -foreign import ccall unsafe "glutSolidCone" solidCone +foreign import CALLCONV unsafe "glutSolidCone" solidCone hunk ./Graphics/UI/GLUT/Objects.hs 232 -foreign import ccall unsafe "glutWireCone" wireCone +foreign import CALLCONV unsafe "glutWireCone" wireCone hunk ./Graphics/UI/GLUT/Objects.hs 244 -foreign import ccall unsafe "glutSolidTorus" solidTorus +foreign import CALLCONV unsafe "glutSolidTorus" solidTorus hunk ./Graphics/UI/GLUT/Objects.hs 254 -foreign import ccall unsafe "glutWireTorus" wireTorus +foreign import CALLCONV unsafe "glutWireTorus" wireTorus hunk ./Graphics/UI/GLUT/Objects.hs 265 -foreign import ccall unsafe "glutSolidTeapot" solidTeapot +foreign import CALLCONV unsafe "glutSolidTeapot" solidTeapot hunk ./Graphics/UI/GLUT/Objects.hs 271 -foreign import ccall unsafe "glutWireTeapot" wireTeapot +foreign import CALLCONV unsafe "glutWireTeapot" wireTeapot hunk ./Graphics/UI/GLUT/State.hs 487 -foreign import ccall unsafe "glutGet" glutGet :: PrimGetter -foreign import ccall unsafe "glutLayerGet" glutLayerGet :: PrimGetter -foreign import ccall unsafe "glutDeviceGet" glutDeviceGet :: PrimGetter +foreign import CALLCONV unsafe "glutGet" glutGet :: PrimGetter +foreign import CALLCONV unsafe "glutLayerGet" glutLayerGet :: PrimGetter +foreign import CALLCONV unsafe "glutDeviceGet" glutDeviceGet :: PrimGetter hunk ./Graphics/UI/GLUT/Window.hs 98 -foreign import ccall unsafe "glutCreateWindow" glutCreateWindow :: +foreign import CALLCONV unsafe "glutCreateWindow" glutCreateWindow :: hunk ./Graphics/UI/GLUT/Window.hs 113 -foreign import ccall unsafe "glutCreateSubWindow" glutCreateSubWindow :: +foreign import CALLCONV unsafe "glutCreateSubWindow" glutCreateSubWindow :: hunk ./Graphics/UI/GLUT/Window.hs 123 -foreign import ccall unsafe "glutDestroyWindow" destroyWindow :: Window -> IO () +foreign import CALLCONV unsafe "glutDestroyWindow" destroyWindow :: Window -> IO () hunk ./Graphics/UI/GLUT/Window.hs 130 -foreign import ccall unsafe "glutSetWindow" setWindow :: Window -> IO () +foreign import CALLCONV unsafe "glutSetWindow" setWindow :: Window -> IO () hunk ./Graphics/UI/GLUT/Window.hs 140 -foreign import ccall unsafe "glutGetWindow" glutGetWindow :: IO Window +foreign import CALLCONV unsafe "glutGetWindow" glutGetWindow :: IO Window hunk ./Graphics/UI/GLUT/Window.hs 159 -foreign import ccall unsafe "glutPostRedisplay" postRedisplay :: IO () +foreign import CALLCONV unsafe "glutPostRedisplay" postRedisplay :: IO () hunk ./Graphics/UI/GLUT/Window.hs 170 -foreign import ccall unsafe "glutPostWindowRedisplay" postWindowRedisplay :: +foreign import CALLCONV unsafe "glutPostWindowRedisplay" postWindowRedisplay :: hunk ./Graphics/UI/GLUT/Window.hs 187 -foreign import ccall unsafe "glutSwapBuffers" swapBuffers :: IO () +foreign import CALLCONV unsafe "glutSwapBuffers" swapBuffers :: IO () hunk ./Graphics/UI/GLUT/Window.hs 213 -foreign import ccall unsafe "glutPositionWindow" glutPositionWindow :: +foreign import CALLCONV unsafe "glutPositionWindow" glutPositionWindow :: hunk ./Graphics/UI/GLUT/Window.hs 230 -foreign import ccall unsafe "glutReshapeWindow" glutReshapeWindow :: +foreign import CALLCONV unsafe "glutReshapeWindow" glutReshapeWindow :: hunk ./Graphics/UI/GLUT/Window.hs 248 -foreign import ccall unsafe "glutFullScreen" fullScreen :: IO () +foreign import CALLCONV unsafe "glutFullScreen" fullScreen :: IO () hunk ./Graphics/UI/GLUT/Window.hs 263 -foreign import ccall unsafe "glutPushWindow" pushWindow :: IO () +foreign import CALLCONV unsafe "glutPushWindow" pushWindow :: IO () hunk ./Graphics/UI/GLUT/Window.hs 268 -foreign import ccall unsafe "glutPopWindow" popWindow :: IO () +foreign import CALLCONV unsafe "glutPopWindow" popWindow :: IO () hunk ./Graphics/UI/GLUT/Window.hs 284 -foreign import ccall unsafe "glutShowWindow" showWindow :: IO () +foreign import CALLCONV unsafe "glutShowWindow" showWindow :: IO () hunk ./Graphics/UI/GLUT/Window.hs 288 -foreign import ccall unsafe "glutHideWindow" hideWindow :: IO () +foreign import CALLCONV unsafe "glutHideWindow" hideWindow :: IO () hunk ./Graphics/UI/GLUT/Window.hs 293 -foreign import ccall unsafe "glutIconifyWindow" iconifyWindow :: IO () +foreign import CALLCONV unsafe "glutIconifyWindow" iconifyWindow :: IO () hunk ./Graphics/UI/GLUT/Window.hs 312 -foreign import ccall unsafe "glutSetWindowTitle" glutSetWindowTitle :: +foreign import CALLCONV unsafe "glutSetWindowTitle" glutSetWindowTitle :: hunk ./Graphics/UI/GLUT/Window.hs 320 -foreign import ccall unsafe "glutSetIconTitle" glutSetIconTitle :: +foreign import CALLCONV unsafe "glutSetIconTitle" glutSetIconTitle :: hunk ./Graphics/UI/GLUT/Window.hs 392 -foreign import ccall unsafe "glutSetCursor" glutSetCursor :: CInt -> IO () +foreign import CALLCONV unsafe "glutSetCursor" glutSetCursor :: CInt -> IO () hunk ./Graphics/UI/GLUT/Window.hs 410 -foreign import ccall unsafe "glutWarpPointer" glutWarpPointer :: +foreign import CALLCONV unsafe "glutWarpPointer" glutWarpPointer :: hunk ./Makefile 2 -# $Id: Makefile,v 1.12 2002/08/11 16:34:36 panne Exp $ +# $Id: Makefile,v 1.13 2002/08/27 20:03:31 panne Exp $ hunk ./Makefile 20 - -Iinclude '-\#include "HsGLUT.h"' + -Iinclude '-\#include "HsGLUT.h"' -cpp + +# WinDoze DLL hell +ifeq "$(TARGETPLATFORM)" "i386-unknown-mingw32" +SRC_HC_OPTS += -DCALLCONV=stdcall +else +SRC_HC_OPTS += -DCALLCONV=ccall +endif hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 140 -foreign import CALLCONV unsafe "glutOverlayDisplayFunc" glutOverlayDisplayFunc :: - FunPtr DisplayCallback -> IO () +foreign import CALLCONV unsafe "glutOverlayDisplayFunc" glutOverlayDisplayFunc + :: FunPtr DisplayCallback -> IO () hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 252 - setCallback KeyboardUpCB glutKeyboardUpFunc (makeKeyboardCallback . unmarshal) + setCallback KeyboardUpCB glutKeyboardUpFunc + (makeKeyboardCallback . unmarshal) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 565 -foreign import CALLCONV unsafe "glutSpaceballMotionFunc" glutSpaceballMotionFunc :: - FunPtr SpaceballMotionCallback -> IO () +foreign import CALLCONV unsafe "glutSpaceballMotionFunc" glutSpaceballMotionFunc + :: FunPtr SpaceballMotionCallback -> IO () hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 582 -foreign import CALLCONV unsafe "glutSpaceballRotateFunc" glutSpaceballRotateFunc :: - FunPtr SpaceballRotationCallback -> IO () +foreign import CALLCONV unsafe "glutSpaceballRotateFunc" glutSpaceballRotateFunc + :: FunPtr SpaceballRotationCallback -> IO () hunk ./Graphics/UI/GLUT/Objects.hs 138 --- | Render a wireframe cube centered at the modeling coordinates origin with sides --- of the given length. +-- | Render a wireframe cube centered at the modeling coordinates origin with +-- sides of the given length. hunk ./Graphics/UI/GLUT/Objects.hs 150 -foreign import CALLCONV unsafe "glutSolidDodecahedron" solidDodecahedron :: IO () +foreign import CALLCONV unsafe "glutSolidDodecahedron" solidDodecahedron :: + IO () hunk ./Graphics/UI/GLUT/Objects.hs 187 -foreign import CALLCONV unsafe "glutWireTetrahedron" wireTetrahedron :: IO () +foreign import CALLCONV unsafe "glutWireTetrahedron" wireTetrahedron :: IO () hunk ./Graphics/UI/GLUT/Objects.hs 192 -foreign import CALLCONV unsafe "glutSolidTetrahedron" solidTetrahedron :: IO () +foreign import CALLCONV unsafe "glutSolidTetrahedron" solidTetrahedron :: IO () hunk ./Graphics/UI/GLUT/Objects.hs 202 - -> Slices -- ^ Number of subdivisions (slices) around the Z axis, similar to lines of longitude. - -> Stacks -- ^ The number of subdivisions (stacks) along the Z axis, similar to lines of latitude. + -> Slices -- ^ Number of subdivisions (slices) around the Z axis, similar + -- to lines of longitude. + -> Stacks -- ^ The number of subdivisions (stacks) along the Z axis, + -- similar to lines of latitude. hunk ./Graphics/UI/GLUT/Objects.hs 208 --- | Render a wireframe sphere centered at the modeling coordinates origin of the --- specified radius. The sphere is subdivided around the Z axis into slices +-- | Render a wireframe sphere centered at the modeling coordinates origin of +-- the specified radius. The sphere is subdivided around the Z axis into slices hunk ./Graphics/UI/GLUT/Objects.hs 214 - -> Slices -- ^ Number of subdivisions (slices) around the Z axis, similar to lines of longitude. - -> Stacks -- ^ The number of subdivisions (stacks) along the Z axis, similar to lines of latitude. + -> Slices -- ^ Number of subdivisions (slices) around the Z axis, similar + -- to lines of longitude. + -> Stacks -- ^ The number of subdivisions (stacks) along the Z axis, + -- similar to lines of latitude. hunk ./Graphics/UI/GLUT/Window.hs 107 - -> WindowPosition -- ^ Window position in pixels relative to parent window\'s origin. + -> WindowPosition -- ^ Window position in pixels relative to parent window\'s + -- origin. hunk ./Graphics/UI/GLUT/Window.hs 124 -foreign import CALLCONV unsafe "glutDestroyWindow" destroyWindow :: Window -> IO () +foreign import CALLCONV unsafe "glutDestroyWindow" destroyWindow :: + Window -> IO () hunk ./Graphics/UI/GLUT/Window.hs 283 --- | Show the /current window/ (though it may still not be visible if obscured by --- other shown windows). +-- | Show the /current window/ (though it may still not be visible if obscured +-- by other shown windows). hunk ./Graphics/UI/GLUT.hs 145 --- demonstrated that IRIS GL\'s windowing interface was high-level enough that it --- could be retargeted to different window systems. Silicon Graphics migrated --- from NeWS to the X Window System without any major changes to IRIS GL\'s basic --- windowing interface. +-- demonstrated that IRIS GL\'s windowing interface was high-level enough that +-- it could be retargeted to different window systems. Silicon Graphics migrated +-- from NeWS to the X Window System without any major changes to IRIS GL\'s +-- basic windowing interface. hunk ./Graphics/UI/GLUT.hs 164 --- Testing and documenting OpenGL\'s functionality lead to the development of the --- @tk@ and @aux@ toolkits. The @aux@ toolkit is used in the examples found in the --- /OpenGL Programming Guide/. Unfortunately, @aux@ has numerous limitations and --- its utility is largely limited to toy programs. The @tk@ library has more --- functionality than @aux@ but was developed in an /ad hoc/ fashion and still lacks --- much important functionality that IRIS GL programmers expect, like pop-up --- menus and overlays. +-- Testing and documenting OpenGL\'s functionality lead to the development of +-- the @tk@ and @aux@ toolkits. The @aux@ toolkit is used in the examples found +-- in the /OpenGL Programming Guide/. Unfortunately, @aux@ has numerous +-- limitations and its utility is largely limited to toy programs. The @tk@ +-- library has more functionality than @aux@ but was developed in an /ad hoc/ +-- fashion and still lacks much important functionality that IRIS GL programmers +-- expect, like pop-up menus and overlays. hunk ./Graphics/UI/GLUT.hs 175 --- @aux@, and @tk@ interfaces are included to make it easy for programmers used to --- these interfaces to develop programs for GLUT. +-- @aux@, and @tk@ interfaces are included to make it easy for programmers used +-- to these interfaces to develop programs for GLUT. hunk ./Graphics/UI/GLUT.hs 243 --- * /Font Rendering:/ These routines allow rendering of stroke and bitmap fonts. +-- * /Font Rendering:/ These routines allow rendering of stroke and bitmap +-- fonts. hunk ./Graphics/UI/GLUT.hs 260 --- synchronous resizing\/panning of the area that is to be magnified (or passed --- through) to the output video resolution. +-- synchronous resizing\/panning of the area that is to be magnified (or +-- passed through) to the output video resolution. hunk ./Graphics/UI/GLUT/State.hs 104 --- | The a rate at which a joystick is polled +-- | The a rate at which a joystick is polled (in milliseconds) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 41 - TabletPosition(..), TabletInput(..), TabletCallback, setTabletCallback + TabletPosition(..), TabletInput(..), TabletCallback, setTabletCallback, + + -- * Joystick callback + JoystickButtons(..), JoystickPosition(..), setJoystickCallback, + forceJoystickCallback hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 51 -import Foreign.C.Types ( CInt, CUChar ) +import Foreign.C.Types ( CInt, CUInt, CUChar ) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 55 -import Graphics.UI.GLUT.State ( NumButtons, NumDials ) +import Graphics.UI.GLUT.State ( NumButtons, NumDials, PollRate ) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 734 +-------------------------------------------------------------------------------- + +data JoystickButtons = JoystickButtons { + joystickButtonA, joystickButtonB, joystickButtonC, joystickButtonD :: Bool + } deriving ( Eq, Ord ) + +-- Could use fromBitfield + Enum/Bounded instances + unmarshalJoystickButton +-- instead... +unmarshalJoystickButtons :: CUInt -> JoystickButtons +unmarshalJoystickButtons m = JoystickButtons { + joystickButtonA = (m .&. glut_JOYSTICK_BUTTON_A) /= 0, + joystickButtonB = (m .&. glut_JOYSTICK_BUTTON_B) /= 0, + joystickButtonC = (m .&. glut_JOYSTICK_BUTTON_C) /= 0, + joystickButtonD = (m .&. glut_JOYSTICK_BUTTON_D) /= 0 } + +-------------------------------------------------------------------------------- + +-- | Absolute joystick position, with coordinates normalized to be in the range +-- of -1000 to 1000 inclusive. The signs of the three axes mean the following: +-- +-- * negative = left, positive = right +-- +-- * negative = towards player, positive = away +-- +-- * if available (e.g. rudder): negative = down, positive = up + +data JoystickPosition = JoystickPosition CInt CInt CInt deriving ( Eq, Ord ) + +-------------------------------------------------------------------------------- + +type JoystickCallback = JoystickButtons -> JoystickPosition -> IO () + +type JoystickCallback' = CUInt -> CInt -> CInt -> CInt -> IO () + +-- | Set the joystick callback for the /current window./ The joystick callback +-- is called either due to polling of the joystick at the uniform timer interval +-- specified (if > 0) or in response to an explicit call of +-- 'forceJoystickCallback'. + +setJoystickCallback :: Maybe JoystickCallback -> PollRate -> IO () +setJoystickCallback c rate = + setCallback JoystickCB (\f -> glutJoystickFunc f rate) + (makeJoystickFunc . unmarshal) c + where unmarshal cb b x y z = cb (unmarshalJoystickButtons b) + (JoystickPosition x y z) + +foreign import ccall "wrapper" makeJoystickFunc :: + JoystickCallback' -> IO (FunPtr JoystickCallback') + +foreign import CALLCONV unsafe "glutJoystickFunc" glutJoystickFunc :: + FunPtr JoystickCallback' -> CInt -> IO () + +-- | Execute the joystick callback once (if one exists). This is done in a +-- synchronous fashion within the current context, i.e. when +-- 'forceJoystickCallback' returns, the callback will have already happened. + +foreign import CALLCONV unsafe "glutForceJoystickFunc" forceJoystickCallback :: + IO () + hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 772 +-- +-- /X Implementation Notes:/ Currently GLUT has no joystick support for X11. hunk ./Graphics/UI/GLUT/State.hs 49 - KeyRepeat(..), KeyboardInfo(..), getKeyboardInfo, + GlobalKeyRepeat(..), PerWindowKeyRepeat(..), KeyboardInfo(..), + getKeyboardInfo, hunk ./Graphics/UI/GLUT/State.hs 335 -data KeyRepeat - = KeyRepeatOn - | KeyRepeatOff - | KeyRepeatDefault +data GlobalKeyRepeat + = GlobalKeyRepeatOff + | GlobalKeyRepeatOn + | GlobalKeyRepeatDefault hunk ./Graphics/UI/GLUT/State.hs 341 -unmarshalKeyRepeat :: CInt -> KeyRepeat -unmarshalKeyRepeat r - | r == glut_KEY_REPEAT_ON = KeyRepeatOn - | r == glut_KEY_REPEAT_OFF = KeyRepeatOff - | r == glut_KEY_REPEAT_DEFAULT = KeyRepeatDefault - | otherwise = error "unmarshalKeyRepeat" +unmarshalGlobalKeyRepeat :: CInt -> GlobalKeyRepeat +unmarshalGlobalKeyRepeat r + | r == glut_KEY_REPEAT_OFF = GlobalKeyRepeatOff + | r == glut_KEY_REPEAT_ON = GlobalKeyRepeatOn + | r == glut_KEY_REPEAT_DEFAULT = GlobalKeyRepeatDefault + | otherwise = error "unmarshalGlobalKeyRepeat" hunk ./Graphics/UI/GLUT/State.hs 348 -data KeyboardInfo = KeyboardInfo KeyRepeat Bool +-------------------------------------------------------------------------------- + +data PerWindowKeyRepeat + = PerWindowKeyRepeatOff + | PerWindowKeyRepeatOn + deriving ( Eq, Ord ) + +unmarshalPerWindowKeyRepeat :: CInt -> PerWindowKeyRepeat +unmarshalPerWindowKeyRepeat 0 = PerWindowKeyRepeatOff +unmarshalPerWindowKeyRepeat _ = PerWindowKeyRepeatOn + +-------------------------------------------------------------------------------- + +data KeyboardInfo = KeyboardInfo GlobalKeyRepeat PerWindowKeyRepeat hunk ./Graphics/UI/GLUT/State.hs 366 - r <- deviceGet unmarshalKeyRepeat glut_DEVICE_KEY_REPEAT - i <- deviceGet i2b glut_DEVICE_IGNORE_KEY_REPEAT + r <- deviceGet unmarshalGlobalKeyRepeat glut_DEVICE_KEY_REPEAT + i <- deviceGet unmarshalPerWindowKeyRepeat glut_DEVICE_IGNORE_KEY_REPEAT addfile ./Graphics/UI/GLUT/DeviceControl.hs hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 44 - JoystickButtons(..), JoystickPosition(..), setJoystickCallback, - forceJoystickCallback + JoystickButtons(..), JoystickPosition(..), setJoystickCallback hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 770 --- 'forceJoystickCallback'. +-- 'Graphics.UI.GLUT.DeviceControl.forceJoystickCallback'. hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 787 --- | Execute the joystick callback once (if one exists). This is done in a --- synchronous fashion within the current context, i.e. when --- 'forceJoystickCallback' returns, the callback will have already happened. - -foreign import CALLCONV unsafe "glutForceJoystickFunc" forceJoystickCallback :: - IO () - hunk ./Graphics/UI/GLUT/DeviceControl.hs 1 +-------------------------------------------------------------------------------- +-- | +-- Module : Graphics.UI.GLUT.DeviceControl +-- Copyright : (c) Sven Panne 2002 +-- License : BSD-style (see the file libraries/GLUT/LICENSE) +-- +-- Maintainer : sven_panne@yahoo.com +-- Stability : experimental +-- Portability : portable +-- +-- GLUT offers some routines for setting the key repeat and polling the +-- joystick. +-- +-------------------------------------------------------------------------------- + +module Graphics.UI.GLUT.DeviceControl ( + setGlobalKeyRepeat, setPerWindowKeyRepeat, + forceJoystickCallback +) where + +import Foreign.C.Types ( CInt ) +import Graphics.UI.GLUT.State ( GlobalKeyRepeat, marshalGlobalKeyRepeat, + PerWindowKeyRepeat, marshalPerWindowKeyRepeat ) + +-------------------------------------------------------------------------------- + +-- | Set the key repeat mode for the window system on a global basis if +-- possible. If supported by the window system, the key repeat can either be +-- disabled, enabled, or set to the window system\'s default key repeat state. +-- +-- /X Implementation Notes:/ X11 sends @KeyPress@ events repeatedly when the +-- window system\'s global auto repeat is enabled. 'setPerWindowKeyRepeat' can +-- prevent these auto repeated keystrokes from being reported as keyboard or +-- special callbacks, but there is still some minimal overhead by the X server +-- to continually stream @KeyPress@ events to the GLUT application. The +-- 'setGlobalKeyRepeat' routine can be used to actually disable the global +-- sending of auto repeated @KeyPress@ events. Note that 'setGlobalKeyRepeat' +-- affects the global window system auto repeat state so other applications +-- will not auto repeat if you disable auto repeat globally through +-- 'setGlobalKeyRepeat'. GLUT applications using the X11 GLUT implementation +-- should disable key repeat with glutSetKeyRepeat to disable key repeats most +-- efficiently, but are responsible for explicitly restoring the default key +-- repeat state on exit. +-- +-- /Win32 Implementation Notes:/ The Win32 implementation of 'setGlobalKeyRepeat' +-- does nothing. The 'setPerWindowKeyRepeat' can be used in the Win32 GLUT +-- implementation to ignore repeated keys on a per-window basis without changing +-- the global window system key repeat. + +setGlobalKeyRepeat :: GlobalKeyRepeat -> IO () +setGlobalKeyRepeat = glutSetKeyRepeat . marshalGlobalKeyRepeat + +foreign import CALLCONV unsafe "glutSetKeyRepeat" glutSetKeyRepeat :: + CInt -> IO () + +-------------------------------------------------------------------------------- + +-- | Determine if auto repeat keystrokes are reported to the /current window./ +-- The ignore auto repeat state of a window can be queried with +-- 'Graphics.UI.GLUT.State.getKeyboardInfo'. Ignoring auto repeated keystrokes +-- is generally done in conjunction with using the +-- 'Graphics.UI.GLUT.Callbacks.Window.setKeyboardMouseCallback'. If you do +-- not ignore auto repeated keystrokes, your GLUT application will experience +-- repeated release\/press callbacks. Games using the keyboard will typically +-- want to ignore key repeat. + +setPerWindowKeyRepeat :: PerWindowKeyRepeat -> IO () +setPerWindowKeyRepeat = glutIgnoreKeyRepeat . marshalPerWindowKeyRepeat + +foreign import CALLCONV unsafe "glutIgnoreKeyRepeat" glutIgnoreKeyRepeat :: + CInt -> IO () + +-------------------------------------------------------------------------------- + +-- | Execute the joystick callback set by +-- 'Graphics.UI.GLUT.Callbacks.Window.setJoystickCallback' once (if one exists). +-- This is done in a synchronous fashion within the current context, i.e. when +-- 'forceJoystickCallback' returns, the callback will have already happened. + +foreign import CALLCONV unsafe "glutForceJoystickFunc" forceJoystickCallback :: + IO () hunk ./Graphics/UI/GLUT/State.hs 49 - GlobalKeyRepeat(..), PerWindowKeyRepeat(..), KeyboardInfo(..), - getKeyboardInfo, + GlobalKeyRepeat(..), + marshalGlobalKeyRepeat, -- used only internally + PerWindowKeyRepeat(..), + marshalPerWindowKeyRepeat, -- used only internally + KeyboardInfo(..), getKeyboardInfo, hunk ./Graphics/UI/GLUT/State.hs 344 +marshalGlobalKeyRepeat :: GlobalKeyRepeat -> CInt +marshalGlobalKeyRepeat GlobalKeyRepeatOff = glut_KEY_REPEAT_OFF +marshalGlobalKeyRepeat GlobalKeyRepeatOn = glut_KEY_REPEAT_ON +marshalGlobalKeyRepeat GlobalKeyRepeatDefault = glut_KEY_REPEAT_DEFAULT + hunk ./Graphics/UI/GLUT/State.hs 363 +marshalPerWindowKeyRepeat :: PerWindowKeyRepeat -> CInt +marshalPerWindowKeyRepeat PerWindowKeyRepeatOff = 0 +marshalPerWindowKeyRepeat PerWindowKeyRepeatOn = 1 + hunk ./Graphics/UI/GLUT.hs 56 + module Graphics.UI.GLUT.DeviceControl, hunk ./Graphics/UI/GLUT.hs 69 -import Graphics.UI.GLUT.State +import Graphics.UI.GLUT.State hiding ( marshalGlobalKeyRepeat, + marshalPerWindowKeyRepeat ) hunk ./Graphics/UI/GLUT.hs 74 +import Graphics.UI.GLUT.DeviceControl hunk ./Graphics/UI/GLUT/Menu.hs 70 - (menuID, destructor) <- traverseMenu menu + (_, destructor) <- traverseMenu menu hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 1 +-- #prune hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 60 +-- | A display callback + hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 151 +-- | A reshape callback + hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 216 +-- | A visibilty callback + hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 271 +-- | Special keys + hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 351 +-- | Mouse buttons, including a wheel + hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 379 +-- | The current state of a key or button + hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 412 -data Modifiers = Modifiers { shift, ctrl, alt :: Bool } deriving ( Eq, Ord ) +-- | The state of the keyboard modifiers + +data Modifiers = Modifiers { shift, ctrl, alt :: KeyState } deriving ( Eq, Ord ) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 419 - shift = (m .&. glut_ACTIVE_SHIFT) /= 0, - ctrl = (m .&. glut_ACTIVE_CTRL ) /= 0, - alt = (m .&. glut_ACTIVE_ALT ) /= 0 } + shift = if (m .&. glut_ACTIVE_SHIFT) /= 0 then Down else Up, + ctrl = if (m .&. glut_ACTIVE_CTRL ) /= 0 then Down else Up, + alt = if (m .&. glut_ACTIVE_ALT ) /= 0 then Down else Up } hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 430 +-- | A generalized view of keys + hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 438 +-- | A keyboard\/mouse callback + hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 443 +-- | Set the keyboard\/mouse callback for the /current window./ The +-- keyboard\/mouse callback for a window is called when the state of a key or +-- mouse button changes. The callback parameters indicate the new state of the +-- key\/button, the state of the keyboard modifiers, and the mouse location in +-- window relative coordinates. + hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 470 +-- | A motion callback + hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 510 +-- | The relation between the mouse pointer and the /current window/ has +-- changed. + hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 526 +-- | An enter\/leave callback + hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 553 + hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 558 + hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 561 +-- | The state of the Spaceball has changed. + hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 568 +-- | A SpaceballButton callback + hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 646 +-- | The dial & button box state has changed. + hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 653 +-- | A dial & button box callback + hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 668 - hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 712 + hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 715 +-- | The table state has changed. + hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 721 +-- | A tablet callback + hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 781 +-- | The state of the joystick buttons + hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 784 - joystickButtonA, joystickButtonB, joystickButtonC, joystickButtonD :: Bool + joystickButtonA, joystickButtonB, + joystickButtonC, joystickButtonD :: KeyState hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 792 - joystickButtonA = (m .&. glut_JOYSTICK_BUTTON_A) /= 0, - joystickButtonB = (m .&. glut_JOYSTICK_BUTTON_B) /= 0, - joystickButtonC = (m .&. glut_JOYSTICK_BUTTON_C) /= 0, - joystickButtonD = (m .&. glut_JOYSTICK_BUTTON_D) /= 0 } + joystickButtonA = if (m .&. glut_JOYSTICK_BUTTON_A) /= 0 then Down else Up, + joystickButtonB = if (m .&. glut_JOYSTICK_BUTTON_B) /= 0 then Down else Up, + joystickButtonC = if (m .&. glut_JOYSTICK_BUTTON_C) /= 0 then Down else Up, + joystickButtonD = if (m .&. glut_JOYSTICK_BUTTON_D) /= 0 then Down else Up } hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 812 +-- | A joystick callback + hunk ./Graphics/UI/GLUT/State.hs 1 +-- #prune hunk ./Graphics/UI/GLUT/State.hs 339 +-- | The state of the global key repeat + hunk ./Graphics/UI/GLUT/State.hs 361 +-- | The state of the per-window key repeat + hunk ./Graphics/UI/GLUT/State.hs 378 +-- | The key repeat state + hunk ./Graphics/UI/GLUT/State.hs 383 +-- | Return the current key repeat state. + hunk ./Graphics/UI/GLUT/State.hs 398 +-- | The number of buttons of a mouse + hunk ./Graphics/UI/GLUT/State.hs 403 +-- | Return 'Just' the number of buttons of an attached mouse or 'Nothing' if +-- there is none. + hunk ./Graphics/UI/GLUT/State.hs 412 +-- | The number of buttons of a Spaceball + hunk ./Graphics/UI/GLUT/State.hs 417 +-- | Return 'Just' the number of buttons of the attached Spaceball or 'Nothing' +-- if there is none. + hunk ./Graphics/UI/GLUT/State.hs 426 -data DialAndButtonBoxInfo = DialAndButtonBoxInfo NumButtons NumDials +-- | The number of dials and buttons of a dial & button box + +data DialAndButtonBoxInfo = DialAndButtonBoxInfo NumDials NumButtons hunk ./Graphics/UI/GLUT/State.hs 431 +-- | Return 'Just' the number of dials and buttons of an attached dial & button +-- box or 'Nothing' if there is none. + hunk ./Graphics/UI/GLUT/State.hs 436 - b <- deviceGet id glut_NUM_BUTTON_BOX_BUTTONS hunk ./Graphics/UI/GLUT/State.hs 437 - return $ DialAndButtonBoxInfo b d + b <- deviceGet id glut_NUM_BUTTON_BOX_BUTTONS + return $ DialAndButtonBoxInfo d b hunk ./Graphics/UI/GLUT/State.hs 442 +-- | The number of buttons of a tablet + hunk ./Graphics/UI/GLUT/State.hs 447 +-- | Return 'Just' the number of buttons of an attached tablet or 'Nothing' if +-- there is none. + hunk ./Graphics/UI/GLUT/State.hs 456 +-- | Information about a joystick + hunk ./Graphics/UI/GLUT/State.hs 461 +-- | Return 'Just' some information about an attached joystick or 'Nothing' if +-- there is none. + hunk ./Graphics/UI/GLUT/GameMode.hs 41 -import Graphics.UI.GLUT.Window ( Window(..) ) +import Graphics.UI.GLUT.Window ( Window, makeWindow ) hunk ./Graphics/UI/GLUT/GameMode.hs 121 - return (Window w, c) + return (makeWindow w, c) hunk ./Graphics/UI/GLUT/State.hs 81 -import Graphics.UI.GLUT.Window ( Window(..), Cursor(..) ) +import Graphics.UI.GLUT.Window ( Window, makeWindow, Cursor(..) ) hunk ./Graphics/UI/GLUT/State.hs 165 - w <- get Window glut_WINDOW_PARENT - return $ if w == Window 0 then Nothing else Just w + w <- get makeWindow glut_WINDOW_PARENT + return $ if w == makeWindow 0 then Nothing else Just w hunk ./Graphics/UI/GLUT/Window.hs 1 +-- #prune hunk ./Graphics/UI/GLUT/Window.hs 20 - Window(..), -- contructor used only internally + Window, + makeWindow, -- used only internally hunk ./Graphics/UI/GLUT/Window.hs 69 +makeWindow :: CInt -> Window +makeWindow = Window + hunk ./Graphics/UI/GLUT.hs 63 -import Graphics.UI.GLUT.Window hiding ( Window ) -import Graphics.UI.GLUT.Window ( Window ) +import Graphics.UI.GLUT.Window hiding ( makeWindow ) hunk ./GLUT.conf.in 1 +#include "config.h" + hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 55 -import Graphics.UI.GLUT.State ( NumButtons, NumDials, PollRate ) +import Graphics.UI.GLUT.State ( ButtonIndex, DialIndex, PollRate ) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 566 - | SpaceballButton NumButtons KeyState + | SpaceballButton ButtonIndex KeyState hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 628 -type SpaceballButtonCallback = NumButtons -> KeyState -> IO () +type SpaceballButtonCallback = ButtonIndex -> KeyState -> IO () hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 649 - = DialAndButtonBoxButton NumButtons KeyState - | DialAndButtonBoxDial NumDials CInt + = DialAndButtonBoxButton ButtonIndex KeyState + | DialAndButtonBoxDial DialIndex CInt hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 678 -type ButtonBoxCallback = NumButtons -> KeyState -> IO () +type ButtonBoxCallback = ButtonIndex -> KeyState -> IO () hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 695 -type DialsCallback = NumDials -> CInt -> IO () +type DialsCallback = DialIndex -> CInt -> IO () hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 719 - | TabletButton NumButtons KeyState + | TabletButton ButtonIndex KeyState hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 763 -type TabletButtonCallback = NumButtons -> KeyState -> TabletPosition -> IO () +type TabletButtonCallback = ButtonIndex -> KeyState -> TabletPosition -> IO () hunk ./Graphics/UI/GLUT/Initialization.hs 20 --- @'initWindowSize' ('WindowSize' 400 400)@ can be called before 'init' to --- indicate 400 by 400 is the program\'s default window size. Setting the +-- @'setInitialWindowSize' ('WindowSize' 400 400)@ can be called before 'init' +-- to indicate 400 by 400 is the program\'s default window size. Setting the hunk ./Graphics/UI/GLUT/Initialization.hs 32 - WindowPosition(..), initWindowPosition, - WindowSize(..), initWindowSize, + WindowPosition(..), setInitialWindowPosition, + WindowSize(..), setInitialWindowSize, hunk ./Graphics/UI/GLUT/Initialization.hs 36 - DisplayMode(..), initDisplayMode, + DisplayMode(..), setInitialDisplayMode, hunk ./Graphics/UI/GLUT/Initialization.hs 41 - Capability(..), Relation(..), CapabilityDescription(..), initDisplay + Capability(..), Relation(..), CapabilityDescription(..), + setInitialDisplayCapabilities hunk ./Graphics/UI/GLUT/Initialization.hs 81 --- 'initWindowSize' or 'initWindowPosition' were called directly. +-- 'setInitialWindowSize' or 'setInitialWindowPosition' were called directly. hunk ./Graphics/UI/GLUT/Initialization.hs 146 -initWindowPosition :: WindowPosition -> IO () -initWindowPosition (WindowPosition x y) = glutInitWindowPosition x y +setInitialWindowPosition :: WindowPosition -> IO () +setInitialWindowPosition (WindowPosition x y) = glutInitWindowPosition x y hunk ./Graphics/UI/GLUT/Initialization.hs 168 -initWindowSize :: WindowSize -> IO () -initWindowSize (WindowSize w h) = glutInitWindowSize w h +setInitialWindowSize :: WindowSize -> IO () +setInitialWindowSize (WindowSize w h) = glutInitWindowSize w h hunk ./Graphics/UI/GLUT/Initialization.hs 177 --- with 'initDisplayMode'. +-- with 'setInitialDisplayMode'. hunk ./Graphics/UI/GLUT/Initialization.hs 225 -initDisplayMode :: [DisplayMode] -> IO () -initDisplayMode = glutInitDisplayMode . toBitfield marshalDisplayMode +setInitialDisplayMode :: [DisplayMode] -> IO () +setInitialDisplayMode = glutInitDisplayMode . toBitfield marshalDisplayMode hunk ./Graphics/UI/GLUT/Initialization.hs 236 --- | Capabilities for 'initDisplay', most of them are extensions of +-- | Capabilities for 'setInitialDisplayCapabilities', most of them are extensions of hunk ./Graphics/UI/GLUT/Initialization.hs 303 - -- 'initDisplayString' also returns the first (best + -- 'setInitialDisplayCapabilitiesString' also returns the first (best hunk ./Graphics/UI/GLUT/Initialization.hs 416 --- | A single capability description for 'initDisplay'. +-- | A single capability description for 'setInitialDisplayCapabilities'. hunk ./Graphics/UI/GLUT/Initialization.hs 443 --- generated. These unspecified criteria help 'initDisplay' behave sensibly with --- terse display mode descriptions. +-- generated. These unspecified criteria help 'setInitialDisplayCapabilities' +-- behave sensibly with terse display mode descriptions. hunk ./Graphics/UI/GLUT/Initialization.hs 446 --- Here is an example using 'initDisplay': +-- Here is an example using 'setInitialDisplayCapabilities': hunk ./Graphics/UI/GLUT/Initialization.hs 449 --- initDisplay [ With RGB\', --- Where Depth\' IsAtLeast 16, --- With Samples, --- Where Stencil\' IsNotLessThan 2, --- With Double\' ] +-- setInitialDisplayCapabilities [ With RGB\', +-- Where Depth\' IsAtLeast 16, +-- With Samples, +-- Where Stencil\' IsNotLessThan 2, +-- With Double\' ] hunk ./Graphics/UI/GLUT/Initialization.hs 462 -initDisplay :: [CapabilityDescription] -> IO () -initDisplay settings = +setInitialDisplayCapabilities :: [CapabilityDescription] -> IO () +setInitialDisplayCapabilities settings = hunk ./Graphics/UI/GLUT/State.hs 19 - NumChildren, NumSamples, NumBits, NumButtons, NumDials, NumAxes, PollRate, + SubWindowCount, SampleCount, BufferDepth, ButtonCount, ButtonIndex, DialCount, + DialIndex, AxisCount, PollRate, hunk ./Graphics/UI/GLUT/State.hs 28 - getParent, getNumChildren, + getParent, getSubWindowCount, hunk ./Graphics/UI/GLUT/State.hs 30 - isRGBA, getNumColorBits, - getNumBufferBits, getNumColormapEntries, + isRGBA, getRGBABufferDepths, + getColorBufferDepth, getColormapEntryCount, hunk ./Graphics/UI/GLUT/State.hs 33 - getNumAccumBits, getNumDepthBits, getNumStencilBits, - getNumSamples, getFormatID, + getAccumBufferDepths, getDepthBufferDepth, getStencilBufferDepth, + getSampleCount, getFormatID, hunk ./Graphics/UI/GLUT/State.hs 37 - getElapsedTime, getNumMenuItems, + getElapsedTime, getMenuItemCount, hunk ./Graphics/UI/GLUT/State.hs 39 - -- * GLUT state pertaining to the layers of the /current window/ + -- * GLUT state pertaining to the layers of the /current window/ hunk ./Graphics/UI/GLUT/State.hs 88 -type NumChildren = CInt +type SubWindowCount = CInt hunk ./Graphics/UI/GLUT/State.hs 92 -type NumSamples = CInt +type SampleCount = CInt hunk ./Graphics/UI/GLUT/State.hs 96 -type NumBits = CInt +type BufferDepth = CInt hunk ./Graphics/UI/GLUT/State.hs 100 -type NumButtons = CInt +type ButtonCount = CInt + +-- | The index of a specific buttons of an input device + +type ButtonIndex = CInt hunk ./Graphics/UI/GLUT/State.hs 108 -type NumDials = CInt +type DialCount = CInt + +-- | The index of a specific dial of a dial and button box + +type DialIndex = CInt hunk ./Graphics/UI/GLUT/State.hs 116 -type NumAxes = CInt +type AxisCount = CInt hunk ./Graphics/UI/GLUT/State.hs 180 -getNumChildren :: IO NumChildren -getNumChildren = get id glut_WINDOW_NUM_CHILDREN +getSubWindowCount :: IO SubWindowCount +getSubWindowCount = get id glut_WINDOW_NUM_CHILDREN hunk ./Graphics/UI/GLUT/State.hs 197 -getNumColorBits :: IO (NumBits, NumBits, NumBits, NumBits) -getNumColorBits = do +getRGBABufferDepths :: IO (BufferDepth, BufferDepth, BufferDepth, BufferDepth) +getRGBABufferDepths = do hunk ./Graphics/UI/GLUT/State.hs 210 -getNumBufferBits :: IO NumBits -getNumBufferBits = get id glut_WINDOW_BUFFER_SIZE +getColorBufferDepth :: IO BufferDepth +getColorBufferDepth = get id glut_WINDOW_BUFFER_SIZE hunk ./Graphics/UI/GLUT/State.hs 216 -getNumColormapEntries :: IO (ColorIndex CInt) -getNumColormapEntries = get ColorIndex glut_WINDOW_COLORMAP_SIZE +getColormapEntryCount :: IO CInt +getColormapEntryCount = get id glut_WINDOW_COLORMAP_SIZE hunk ./Graphics/UI/GLUT/State.hs 232 -getNumAccumBits :: IO (NumBits, NumBits, NumBits, NumBits) -getNumAccumBits = do +getAccumBufferDepths :: IO (BufferDepth, BufferDepth, BufferDepth, BufferDepth) +getAccumBufferDepths = do hunk ./Graphics/UI/GLUT/State.hs 243 -getNumDepthBits :: IO NumBits -getNumDepthBits = get id glut_WINDOW_DEPTH_SIZE +getDepthBufferDepth :: IO BufferDepth +getDepthBufferDepth = get id glut_WINDOW_DEPTH_SIZE hunk ./Graphics/UI/GLUT/State.hs 249 -getNumStencilBits :: IO NumBits -getNumStencilBits = get id glut_WINDOW_STENCIL_SIZE +getStencilBufferDepth :: IO BufferDepth +getStencilBufferDepth = get id glut_WINDOW_STENCIL_SIZE hunk ./Graphics/UI/GLUT/State.hs 254 -getNumSamples :: IO NumSamples -getNumSamples = get id glut_WINDOW_NUM_SAMPLES +getSampleCount :: IO SampleCount +getSampleCount = get id glut_WINDOW_NUM_SAMPLES hunk ./Graphics/UI/GLUT/State.hs 276 -getNumMenuItems :: IO CInt -getNumMenuItems = get id glut_MENU_NUM_ITEMS +getMenuItemCount :: IO CInt +getMenuItemCount = get id glut_MENU_NUM_ITEMS hunk ./Graphics/UI/GLUT/State.hs 409 -newtype MouseInfo = MouseInfo NumButtons +newtype MouseInfo = MouseInfo ButtonCount hunk ./Graphics/UI/GLUT/State.hs 423 -newtype SpaceballInfo = SpaceballInfo NumButtons +newtype SpaceballInfo = SpaceballInfo ButtonCount hunk ./Graphics/UI/GLUT/State.hs 437 -data DialAndButtonBoxInfo = DialAndButtonBoxInfo NumDials NumButtons +data DialAndButtonBoxInfo = DialAndButtonBoxInfo DialCount ButtonCount hunk ./Graphics/UI/GLUT/State.hs 453 -newtype TabletInfo = TabletInfo NumButtons +newtype TabletInfo = TabletInfo ButtonCount hunk ./Graphics/UI/GLUT/State.hs 467 -data JoystickInfo = JoystickInfo NumButtons PollRate NumAxes +data JoystickInfo = JoystickInfo ButtonCount PollRate AxisCount hunk ./Graphics/UI/GLUT/Initialization.hs 12 --- Actions beginning with the @init@ prefix are used to initialize GLUT --- state. The primary initialization routine is 'init' that should only be --- called exactly once in a GLUT program. No non-@init@-prefixed GLUT or --- OpenGL actions should be called before 'init'. +-- Actions in this module are used to initialize GLUT state. The primary +-- initialization routine is 'initialize', which should only be called exactly +-- once in a GLUT program. No other GLUT or OpenGL actions should be called +-- before 'initialize', apart from the other actions in this module. hunk ./Graphics/UI/GLUT/Initialization.hs 17 --- The other @init@-actions may be called before 'init'. The reason is these --- actions can be used to set default window initialization state that might --- be modified by the command processing done in 'init'. For example, --- @'setInitialWindowSize' ('WindowSize' 400 400)@ can be called before 'init' --- to indicate 400 by 400 is the program\'s default window size. Setting the --- initial window size or position before 'init' allows the GLUT program user --- to specify the initial size or position using command line arguments. +-- The reason is that these actions below can be used to set default window +-- initialization state that might be modified by the command processing done in +-- 'initialize'. For example, @'setInitialWindowSize' ('WindowSize' 400 400)@ +-- can be called before 'initialize' to indicate 400 by 400 is the program\'s +-- default window size. Setting the initial window size or position before +-- 'initialize' allows the GLUT program user to specify the initial size or +-- position using command line arguments. hunk ./Graphics/UI/GLUT/Initialization.hs 29 - init, initArgs, + initialize, getArgsAndInitialize, hunk ./Graphics/UI/GLUT/Initialization.hs 35 - -- * Setting the initial window mode (I) + -- * Setting the initial display mode (I) hunk ./Graphics/UI/GLUT/Initialization.hs 39 - -- * Setting the initial window mode (II) + -- * Setting the initial display mode (II) hunk ./Graphics/UI/GLUT/Initialization.hs 45 -import Prelude hiding ( init ) hunk ./Graphics/UI/GLUT/Initialization.hs 60 --- process, 'init' may cause the termination of the GLUT program with an +-- process, 'initialize' may cause the termination of the GLUT program with an hunk ./Graphics/UI/GLUT/Initialization.hs 66 --- 'init' also processes command line options, but the specific options +-- 'initialized.' also processes command line options, but the specific options hunk ./Graphics/UI/GLUT/Initialization.hs 71 --- 'init' are as follows: +-- 'initialize' are as follows: hunk ./Graphics/UI/GLUT/Initialization.hs 102 -init :: String -- ^ The program name. - -> [String] -- ^ The command line arguments - -> IO [String] -- ^ Non-GLUT command line arguments -init prog args = +initialize :: String -- ^ The program name. + -> [String] -- ^ The command line arguments + -> IO [String] -- ^ Non-GLUT command line arguments +initialize prog args = hunk ./Graphics/UI/GLUT/Initialization.hs 121 -initArgs :: IO (String, [String]) -initArgs = do +getArgsAndInitialize :: IO (String, [String]) +getArgsAndInitialize = do hunk ./Graphics/UI/GLUT/Initialization.hs 125 - nonGLUTArgs <- init prog args + nonGLUTArgs <- initialize prog args hunk ./Graphics/UI/GLUT/State.hs 23 - getInitWindowPosition, getInitWindowSize, getInitDisplayMode, + getInitialWindowPosition, getInitialWindowSize, getInitialDisplayMode, hunk ./Graphics/UI/GLUT/State.hs 125 -getInitWindowPosition :: IO WindowPosition -getInitWindowPosition = do +getInitialWindowPosition :: IO WindowPosition +getInitialWindowPosition = do hunk ./Graphics/UI/GLUT/State.hs 133 -getInitWindowSize :: IO WindowSize -getInitWindowSize = do +getInitialWindowSize :: IO WindowSize +getInitialWindowSize = do hunk ./Graphics/UI/GLUT/State.hs 141 -getInitDisplayMode :: IO [DisplayMode] -getInitDisplayMode = +getInitialDisplayMode :: IO [DisplayMode] +getInitialDisplayMode = hunk ./Graphics/UI/GLUT/State.hs 268 --- 'Graphics.UI.GLUT.Initialization.init' was called (or first call to +-- 'Graphics.UI.GLUT.Initialization.initialize' was called (or first call to hunk ./LICENSE 4 -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: hunk ./LICENSE 7 - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. +1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. hunk ./LICENSE 10 - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. hunk ./LICENSE 14 - * Neither the name of the Author nor the names of its contributors may be - used to endorse or promote products derived from this software without - specific prior written permission. +3. Neither the name of the author nor the names of its contributors may be + used to endorse or promote products derived from this software without + specific prior written permission. hunk ./LICENSE 18 -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. hunk ./Graphics/UI/GLUT/GameMode.hs 27 - Capability'(..), CapabilityDescription'(..), initGameMode, + Capability'(..), CapabilityDescription'(..), setGameModeCapabilities, hunk ./Graphics/UI/GLUT/GameMode.hs 45 --- | Capabilities for 'initGameMode' +-- | Capabilities for 'setGameModeCapabilities' hunk ./Graphics/UI/GLUT/GameMode.hs 63 --- | A single capability description for 'initGameMode'. +-- | A single capability description for 'setGameModeCapabilities'. hunk ./Graphics/UI/GLUT/GameMode.hs 90 --- 'Graphics.UI.GLUT.Initialization.initDisplayMode'or --- 'Graphics.UI.GLUT.Initialization.initDisplay' will determine which buffers --- are available, if double buffering is used or not, etc. +-- 'Graphics.UI.GLUT.Initialization.setInitialDisplayMode'or +-- 'Graphics.UI.GLUT.Initialization.setInitialDisplayCapabilities' will +-- determine which buffers are available, if double buffering is used or not, +-- etc. hunk ./Graphics/UI/GLUT/GameMode.hs 95 -initGameMode :: [CapabilityDescription'] -> IO () -initGameMode settings = +setGameModeCapabilities :: [CapabilityDescription'] -> IO () +setGameModeCapabilities settings = hunk ./Graphics/UI/GLUT/GameMode.hs 107 --- specified by the last call to 'initGameMode'. An identifier for the game --- mode window and a flag, indicating if the display mode actually changed, are --- returned. The game mode window is made the /current window/. +-- specified by the last call to 'setGameModeCapabilities'. An identifier for +-- the game mode window and a flag, indicating if the display mode actually +-- changed, are returned. The game mode window is made the /current window/. hunk ./Graphics/UI/GLUT/GameMode.hs 149 --- 'initGameMode' is not possible, in which case 'enterGameMode' would simply --- create a full screen window using the current mode. +-- 'setGameModeCapabilities' is not possible, in which case 'enterGameMode' +-- would simply create a full screen window using the current mode. hunk ./Graphics/UI/GLUT/GameMode.hs 52 - | Num' -- ^ Match the Nth fram buffer configuration compatible with - -- with the give capabilities (numbering starts at 1) + | Num' -- ^ Match the Nth frame buffer configuration compatible with + -- the given capabilities (numbering starts at 1) hunk ./Graphics/UI/GLUT/Constants.hs 18 -import Foreign.C.Types ( CInt, CUInt) +import Foreign.C.Types ( CInt, CUInt ) hunk ./Makefile 2 -# $Id: Makefile,v 1.13 2002/08/27 20:03:31 panne Exp $ +# $Id: Makefile,v 1.14 2003/01/23 18:57:32 panne Exp $ hunk ./Makefile 19 -SRC_HC_OPTS += -Wall -fglasgow-exts -package OpenGL \ - -Iinclude '-\#include "HsGLUT.h"' -cpp +SRC_HC_OPTS += -Wall -fffi -Iinclude '-\#include "HsGLUT.h"' -cpp hunk ./GLUT.conf.in 5 + auto = True, hunk ./GLUT.conf.in 26 - package_deps = [ "OpenGL" ], + package_deps = [ "base", "OpenGL" ], hunk ./Graphics/UI/GLUT/Colormap.hs 47 -import Graphics.Rendering.OpenGL.GL.VertexSpec ( Color3(..), ColorIndex ) +import Graphics.Rendering.OpenGL.GL.VertexSpec ( Color3(..), Index1 ) hunk ./Graphics/UI/GLUT/Colormap.hs 59 -setColor :: ColorIndex CInt +setColor :: Index1 CInt hunk ./Graphics/UI/GLUT/Colormap.hs 65 - ColorIndex CInt -> GLfloat -> GLfloat -> GLfloat -> IO () + Index1 CInt -> GLfloat -> GLfloat -> GLfloat -> IO () hunk ./Graphics/UI/GLUT/Colormap.hs 77 -getColor :: ColorIndex CInt +getColor :: Index1 CInt hunk ./Graphics/UI/GLUT/Colormap.hs 86 - ColorIndex CInt -> CInt -> IO GLfloat + Index1 CInt -> CInt -> IO GLfloat hunk ./Graphics/UI/GLUT/State.hs 77 -import Graphics.Rendering.OpenGL.GL.VertexSpec ( ColorIndex(..) ) +import Graphics.Rendering.OpenGL.GL.VertexSpec ( Index1(..) ) hunk ./Graphics/UI/GLUT/State.hs 303 -getTransparentIndex :: IO (Maybe (ColorIndex CInt)) +getTransparentIndex :: IO (Maybe (Index1 CInt)) hunk ./Graphics/UI/GLUT/State.hs 489 -i2c :: CInt -> Maybe (ColorIndex CInt) -i2c i = if i < 0 then Nothing else Just (ColorIndex i) +i2c :: CInt -> Maybe (Index1 CInt) +i2c i = if i < 0 then Nothing else Just (Index1 i) adddir ./examples addfile ./examples/Makefile adddir ./examples/RedBook addfile ./examples/RedBook/Hello.hs addfile ./examples/RedBook/Makefile hunk ./Makefile 2 -# $Id: Makefile,v 1.14 2003/01/23 18:57:32 panne Exp $ +# $Id: Makefile,v 1.15 2003/03/02 19:30:20 panne Exp $ hunk ./Makefile 49 +# ----------------------------------------------------------------------------- + +.PHONY: examples + +examples: + $(MAKE) -C examples + hunk ./examples/Makefile 1 +# ----------------------------------------------------------------------------- +# $Id: Makefile,v 1.1 2003/03/02 19:30:20 panne Exp $ + +TOP = ../.. +include $(TOP)/mk/boilerplate.mk + +# ----------------------------------------------------------------------------- + +SUBDIRS = RedBook + +# ----------------------------------------------------------------------------- + +include $(TOP)/mk/target.mk hunk ./examples/RedBook/Hello.hs 1 +{- + Hello.hs (adapted from hello.c which is (c) Silicon Graphics, Inc.) + Copyright (c) Sven Panne 2003 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This is a simple, introductory OpenGL program. +-} + +import Graphics.Rendering.OpenGL +import Graphics.UI.GLUT as GLUT + +display :: DisplayCallback +display = do + -- clear all pixels + clear [ ColorBuffer ] + + -- draw white polygon (rectangle) with corners at + -- (0.25, 0.25, 0.0) and (0.75, 0.75, 0.0) + color (Color3 1.0 1.0 (1.0 :: GLfloat)) + withBeginMode Polygon $ mapM_ vertex [ + Vertex3 0.25 0.25 0.0, + Vertex3 0.75 0.25 0.0, + Vertex3 0.75 0.75 0.0, + Vertex3 0.25 0.75 (0.0 :: GLfloat)] + + -- don't wait! + -- start processing buffered OpenGL routines + flush + +myInit :: IO () +myInit = do + -- select clearing color + clearColor $= Color4 0.0 0.0 0.0 0.0 + + -- initialize viewing values + matrixMode $= Projection + loadIdentity + ortho 0.0 1.0 0.0 1.0 (-1.0) 1.0 + +{- + Declare initial window size, position, and display mode + (single buffer and RGBA). Open window with "hello" + in its title bar. Call initialization routines. + Register callback function to display graphics. + Enter main loop and process events. +-} +main :: IO () +main = do + getArgsAndInitialize + setInitialDisplayMode [ Single, GLUT.RGB ] + setInitialWindowSize (WindowSize 250 250) + setInitialWindowPosition (WindowPosition 100 100) + createWindow "hello" + myInit + setDisplayCallback display + mainLoop hunk ./examples/RedBook/Makefile 1 +# ----------------------------------------------------------------------------- +# $Id: Makefile,v 1.1 2003/03/02 19:30:20 panne Exp $ + +TOP = ../../.. +include $(TOP)/mk/boilerplate.mk + +# ----------------------------------------------------------------------------- + +EXAMPLES := $(wildcard *.hs) +BINS := $(EXAMPLES:.hs=) +CLEAN_FILES += $(addsuffix $(exeext), $(BINS)) + +HC = $(GHC_INPLACE) +SRC_HC_OPTS += -package GLUT + +all:: $(BINS) + +$(BINS): %$(exeext): %.o + $(HC) -o $@ $(HC_OPTS) $(LD_OPTS) $(HS_OBJS) + +# ----------------------------------------------------------------------------- + +include $(TOP)/mk/target.mk hunk ./examples/RedBook/Makefile 2 -# $Id: Makefile,v 1.1 2003/03/02 19:30:20 panne Exp $ +# $Id: Makefile,v 1.2 2003/03/07 18:50:37 panne Exp $ hunk ./examples/RedBook/Makefile 19 - $(HC) -o $@ $(HC_OPTS) $(LD_OPTS) $(HS_OBJS) + $(HC) -o $@ $(HC_OPTS) $(LD_OPTS) $< hunk ./examples/RedBook/Hello.hs 34 - clearColor $= Color4 0.0 0.0 0.0 0.0 + clearColor $= Color4 0 0 0 0 hunk ./examples/RedBook/Hello.hs 39 - ortho 0.0 1.0 0.0 1.0 (-1.0) 1.0 + ortho 0 1 0 1 (-1) 1 hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 70 - where unmarshal cb s x y = cb (unmarshalMenuUsage s) (WindowPosition x y) + where unmarshal cb s x y = + cb (unmarshalMenuUsage s) + (WindowPosition (fromIntegral x) (fromIntegral y)) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 186 - where unmarshal cb w h = cb (WindowSize w h) + where unmarshal cb w h = cb (WindowSize (fromIntegral w) (fromIntegral h)) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 250 - where unmarshal cb c x y = cb (chr (fromIntegral c)) (WindowPosition x y) + where unmarshal cb c x y = + cb (chr (fromIntegral c)) + (WindowPosition (fromIntegral x) (fromIntegral y)) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 266 - where unmarshal cb c x y = cb (chr (fromIntegral c)) (WindowPosition x y) + where unmarshal cb c x y = + cb (chr (fromIntegral c)) + (WindowPosition (fromIntegral x) (fromIntegral y)) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 335 - where unmarshal cb k x y = cb (unmarshalSpecialKey k) (WindowPosition x y) + where unmarshal cb k x y = + cb (unmarshalSpecialKey k) + (WindowPosition (fromIntegral x) (fromIntegral y)) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 350 - where unmarshal cb k x y = cb (unmarshalSpecialKey k) (WindowPosition x y) + where unmarshal cb k x y = + cb (unmarshalSpecialKey k) + (WindowPosition (fromIntegral x) (fromIntegral y)) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 409 - where unmarshal cb b s x y = cb (unmarshalMouseButton b) - (unmarshalKeyState s) (WindowPosition x y) + where unmarshal cb b s x y = + cb (unmarshalMouseButton b) + (unmarshalKeyState s) + (WindowPosition (fromIntegral x) (fromIntegral y)) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 494 - where unmarshal cb x y = cb (WindowPosition x y) + where unmarshal cb x y = + cb (WindowPosition (fromIntegral x) (fromIntegral y)) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 513 - where unmarshal cb x y = cb (WindowPosition x y) + where unmarshal cb x y = + cb (WindowPosition (fromIntegral x) (fromIntegral y)) hunk ./Graphics/UI/GLUT/GameMode.hs 160 + let size = WindowSize (fromIntegral w) (fromIntegral h) hunk ./Graphics/UI/GLUT/GameMode.hs 163 - return $ Just $ GameModeInfo (WindowSize w h) b r + return $ Just $ GameModeInfo size b r hunk ./Graphics/UI/GLUT/Initialization.hs 54 +import Graphics.Rendering.OpenGL.GL.BasicTypes ( GLint, GLsizei ) hunk ./Graphics/UI/GLUT/Initialization.hs 132 -data WindowPosition = WindowPosition CInt CInt +data WindowPosition = WindowPosition GLint GLint hunk ./Graphics/UI/GLUT/Initialization.hs 147 -setInitialWindowPosition (WindowPosition x y) = glutInitWindowPosition x y +setInitialWindowPosition (WindowPosition x y) = + glutInitWindowPosition (fromIntegral x) (fromIntegral y) hunk ./Graphics/UI/GLUT/Initialization.hs 154 -data WindowSize = WindowSize CInt CInt +data WindowSize = WindowSize GLsizei GLsizei hunk ./Graphics/UI/GLUT/Initialization.hs 170 -setInitialWindowSize (WindowSize w h) = glutInitWindowSize w h +setInitialWindowSize (WindowSize w h) = + glutInitWindowSize (fromIntegral w) (fromIntegral h) hunk ./Graphics/UI/GLUT/State.hs 127 - x <- get id glut_INIT_WINDOW_X - y <- get id glut_INIT_WINDOW_Y + x <- get fromIntegral glut_INIT_WINDOW_X + y <- get fromIntegral glut_INIT_WINDOW_Y hunk ./Graphics/UI/GLUT/State.hs 135 - w <- get id glut_INIT_WINDOW_WIDTH - h <- get id glut_INIT_WINDOW_HEIGHT + w <- get fromIntegral glut_INIT_WINDOW_WIDTH + h <- get fromIntegral glut_INIT_WINDOW_HEIGHT hunk ./Graphics/UI/GLUT/State.hs 157 - x <- get id glut_WINDOW_X - y <- get id glut_WINDOW_Y + x <- get fromIntegral glut_WINDOW_X + y <- get fromIntegral glut_WINDOW_Y hunk ./Graphics/UI/GLUT/State.hs 165 - w <- get id glut_WINDOW_WIDTH - h <- get id glut_WINDOW_HEIGHT + w <- get fromIntegral glut_WINDOW_WIDTH + h <- get fromIntegral glut_WINDOW_HEIGHT hunk ./Graphics/UI/GLUT/State.hs 340 - wpx <- get id glut_SCREEN_WIDTH - hpx <- get id glut_SCREEN_HEIGHT - wmm <- get id glut_SCREEN_WIDTH_MM - hmm <- get id glut_SCREEN_HEIGHT_MM + wpx <- get fromIntegral glut_SCREEN_WIDTH + hpx <- get fromIntegral glut_SCREEN_HEIGHT + wmm <- get fromIntegral glut_SCREEN_WIDTH_MM + hmm <- get fromIntegral glut_SCREEN_HEIGHT_MM hunk ./Graphics/UI/GLUT/Window.hs 117 - glutCreateSubWindow win x y w h + glutCreateSubWindow win + (fromIntegral x) (fromIntegral y) + (fromIntegral w) (fromIntegral h) hunk ./Graphics/UI/GLUT/Window.hs 220 -positionWindow (WindowPosition x y) = glutPositionWindow x y +positionWindow (WindowPosition x y) = + glutPositionWindow (fromIntegral x) (fromIntegral y) hunk ./Graphics/UI/GLUT/Window.hs 238 -reshapeWindow (WindowSize w h) = glutReshapeWindow w h +reshapeWindow (WindowSize w h) = + glutReshapeWindow (fromIntegral w) (fromIntegral h) hunk ./Graphics/UI/GLUT/Window.hs 419 -warpPointer (WindowPosition x y) = glutWarpPointer x y +warpPointer (WindowPosition x y) = + glutWarpPointer (fromIntegral x) (fromIntegral y) addfile ./examples/RedBook/Smooth.hs hunk ./examples/RedBook/Smooth.hs 1 +{- + Smooth.hs (adapted from smooth.c which is (c) Silicon Graphics, Inc.) + Copyright (c) Sven Panne 2003 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program demonstrates smooth shading. + A smooth shaded polygon is drawn in a 2-D projection. +-} + +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) + +import Graphics.Rendering.OpenGL +import Graphics.UI.GLUT as GLUT + +myInit :: IO () +myInit = do + clearColor $= Color4 0 0 0 0 + shadeModel $= Smooth + +triangle :: IO () +triangle = + withBeginMode Triangles $ do + color (Color3 1 0 (0 :: GLfloat)) + vertex (Vertex2 5 (5 :: GLfloat)) + color (Color3 0 1 (0 :: GLfloat)) + vertex (Vertex2 25 (5 :: GLfloat)) + color (Color3 0 0 (1 :: GLfloat)) + vertex (Vertex2 5 (25 :: GLfloat)) + +display :: DisplayCallback +display = do + clear [ ColorBuffer ] + triangle + flush + +reshape :: ReshapeCallback +reshape (WindowSize w h) = do + viewport $= ((0, 0), (w, h)) + matrixMode $= Projection + loadIdentity + let wf = fromIntegral w + hf = fromIntegral h + if (w <= h) + then ortho2D 0 30 0 (30 * hf/wf) + else ortho2D 0 (30 * wf/hf) 0 30 + matrixMode $= Modelview 0 + +keyboard :: KeyboardMouseCallback +keyboard (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard _ _ _ _ = return () + +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + setInitialDisplayMode [ Single, GLUT.RGB ] + setInitialWindowSize (WindowSize 500 500) + setInitialWindowPosition (WindowPosition 100 100) + createWindow progName + myInit + setDisplayCallback display + setReshapeCallback (Just reshape) + setKeyboardMouseCallback (Just keyboard) + mainLoop hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 27 +import Graphics.Rendering.OpenGL.GL.CoordTrans ( Position(..) ) hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 29 -import Graphics.UI.GLUT.Initialization ( WindowPosition(..) ) hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 45 -type MenuStatusCallback = MenuUsage -> WindowPosition -> IO () +type MenuStatusCallback = MenuUsage -> Position -> IO () hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 72 - (WindowPosition (fromIntegral x) (fromIntegral y)) + (Position (fromIntegral x) (fromIntegral y)) hunk ./Graphics/UI/GLUT/Callbacks/Registration.hs 26 -import Graphics.UI.GLUT.Window ( Window, getWindow ) +import Graphics.Rendering.OpenGL.GL.StateVar ( HasGetter(get) ) +import Graphics.UI.GLUT.Window ( Window, currentWindow ) hunk ./Graphics/UI/GLUT/Callbacks/Registration.hs 56 - maybeWindow <- if isGlobal callbackType then return Nothing else getWindow + maybeWindow <- if isGlobal callbackType + then return Nothing + else liftM Just $ get currentWindow hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 53 +import Graphics.Rendering.OpenGL.GL.CoordTrans ( Position(..), Size(..) ) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 55 -import Graphics.UI.GLUT.Initialization ( WindowSize(..), WindowPosition(..) ) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 153 -type ReshapeCallback = WindowSize -> IO () +type ReshapeCallback = Size -> IO () hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 169 --- 'viewport' ('Graphics.UI.GLUT.Initialization.WindowPosition' 0 0) ('Graphics.UI.GLUT.Initialization.WindowSize' /width/ /height/) +-- 'viewport' ('Graphics.Rendering.OpenGL.GL.CoordTrans.Position' 0 0) ('Graphics.Rendering.OpenGL.GL.CoordTrans.Size' /width/ /height/) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 186 - where unmarshal cb w h = cb (WindowSize (fromIntegral w) (fromIntegral h)) + where unmarshal cb w h = cb (Size (fromIntegral w) (fromIntegral h)) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 243 -type KeyboardCallback = Char -> WindowPosition -> IO () +type KeyboardCallback = Char -> Position -> IO () hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 250 - where unmarshal cb c x y = - cb (chr (fromIntegral c)) - (WindowPosition (fromIntegral x) (fromIntegral y)) + where unmarshal cb c x y = cb (chr (fromIntegral c)) + (Position (fromIntegral x) (fromIntegral y)) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 265 - where unmarshal cb c x y = - cb (chr (fromIntegral c)) - (WindowPosition (fromIntegral x) (fromIntegral y)) + where unmarshal cb c x y = cb (chr (fromIntegral c)) + (Position (fromIntegral x) (fromIntegral y)) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 326 -type SpecialCallback = SpecialKey -> WindowPosition -> IO () +type SpecialCallback = SpecialKey -> Position -> IO () hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 333 - where unmarshal cb k x y = - cb (unmarshalSpecialKey k) - (WindowPosition (fromIntegral x) (fromIntegral y)) + where unmarshal cb k x y = cb (unmarshalSpecialKey k) + (Position (fromIntegral x) (fromIntegral y)) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 347 - where unmarshal cb k x y = - cb (unmarshalSpecialKey k) - (WindowPosition (fromIntegral x) (fromIntegral y)) + where unmarshal cb k x y = cb (unmarshalSpecialKey k) + (Position (fromIntegral x) (fromIntegral y)) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 398 -type MouseCallback = MouseButton -> KeyState -> WindowPosition -> IO () +type MouseCallback = MouseButton -> KeyState -> Position -> IO () hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 405 - where unmarshal cb b s x y = - cb (unmarshalMouseButton b) - (unmarshalKeyState s) - (WindowPosition (fromIntegral x) (fromIntegral y)) + where unmarshal cb b s x y = cb (unmarshalMouseButton b) + (unmarshalKeyState s) + (Position (fromIntegral x) (fromIntegral y)) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 446 - Key -> KeyState -> Modifiers -> WindowPosition -> IO () + Key -> KeyState -> Modifiers -> Position -> IO () hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 477 -type MotionCallback = WindowPosition -> IO () +type MotionCallback = Position -> IO () hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 489 - where unmarshal cb x y = - cb (WindowPosition (fromIntegral x) (fromIntegral y)) + where unmarshal cb x y = cb (Position (fromIntegral x) (fromIntegral y)) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 507 - where unmarshal cb x y = - cb (WindowPosition (fromIntegral x) (fromIntegral y)) + where unmarshal cb x y = cb (Position (fromIntegral x) (fromIntegral y)) hunk ./Graphics/UI/GLUT/GameMode.hs 38 +import Graphics.Rendering.OpenGL.GL.CoordTrans ( Size(..) ) hunk ./Graphics/UI/GLUT/GameMode.hs 40 -import Graphics.UI.GLUT.Initialization ( WindowSize(..), Relation, - relationToString ) +import Graphics.UI.GLUT.Initialization ( Relation, relationToString ) hunk ./Graphics/UI/GLUT/GameMode.hs 89 --- Note that even for game mode previous calls to --- 'Graphics.UI.GLUT.Initialization.setInitialDisplayMode'or --- 'Graphics.UI.GLUT.Initialization.setInitialDisplayCapabilities' will +-- Note that even for game mode the current values of +-- 'Graphics.UI.GLUT.Initialization.initialDisplayMode'or +-- 'Graphics.UI.GLUT.Initialization.initialDisplayCapabilities' will hunk ./Graphics/UI/GLUT/GameMode.hs 143 -data GameModeInfo = GameModeInfo WindowSize BitsPerPlane RefreshRate +data GameModeInfo = GameModeInfo Size BitsPerPlane RefreshRate hunk ./Graphics/UI/GLUT/GameMode.hs 160 - let size = WindowSize (fromIntegral w) (fromIntegral h) + let size = Size (fromIntegral w) (fromIntegral h) hunk ./Graphics/UI/GLUT/Initialization.hs 31 - -- * Setting the initial window geometry - WindowPosition(..), setInitialWindowPosition, - WindowSize(..), setInitialWindowSize, + -- * Initial window geometry + initialWindowPosition, initialWindowSize, hunk ./Graphics/UI/GLUT/Initialization.hs 35 - DisplayMode(..), setInitialDisplayMode, - marshalDisplayMode, -- used only internally + DisplayMode(..), initialDisplayMode, isDisplayModePossible, hunk ./Graphics/UI/GLUT/Initialization.hs 40 - setInitialDisplayCapabilities + initialDisplayCapabilities hunk ./Graphics/UI/GLUT/Initialization.hs 43 -import Data.Bits ( Bits((.|.)) ) +import Data.Bits ( Bits((.|.),(.&.)) ) hunk ./Graphics/UI/GLUT/Initialization.hs 52 -import Graphics.Rendering.OpenGL.GL.BasicTypes ( GLint, GLsizei ) +import Graphics.Rendering.OpenGL.GL.CoordTrans ( Position(..), Size(..) ) +import Graphics.Rendering.OpenGL.GL.StateVar ( + SettableStateVar, makeSettableStateVar, StateVar, makeStateVar ) hunk ./Graphics/UI/GLUT/Initialization.hs 56 +import Graphics.UI.GLUT.State ( simpleGet ) hunk ./Graphics/UI/GLUT/Initialization.hs 82 --- 'setInitialWindowSize' or 'setInitialWindowPosition' were called directly. +-- 'initialWindowSize' or 'initialWindowPosition' were modified directly. hunk ./Graphics/UI/GLUT/Initialization.hs 132 --- | Window position, measured in pixels. -data WindowPosition = WindowPosition GLint GLint - --- | Set the /initial window position/. Windows created by +-- | Controls the /initial window position/. Windows created by hunk ./Graphics/UI/GLUT/Initialization.hs 135 --- window position/ GLUT state is @'WindowPosition' (-1) (-1)@. If either the --- X or Y component of the /initial window position/ is negative, the actual --- window position is left to the window system to determine. +-- window position/ GLUT state is @'Size' (-1) (-1)@. If either the X or Y +-- component of the /initial window position/ is negative, the actual window +-- position is left to the window system to determine. hunk ./Graphics/UI/GLUT/Initialization.hs 144 -setInitialWindowPosition :: WindowPosition -> IO () -setInitialWindowPosition (WindowPosition x y) = +initialWindowPosition :: StateVar Position +initialWindowPosition = + makeStateVar getInitialWindowPosition setInitialWindowPosition + +getInitialWindowPosition :: IO Position +getInitialWindowPosition = do + x <- simpleGet fromIntegral glut_INIT_WINDOW_X + y <- simpleGet fromIntegral glut_INIT_WINDOW_Y + return $ Position x y + +setInitialWindowPosition :: Position -> IO () +setInitialWindowPosition (Position x y) = hunk ./Graphics/UI/GLUT/Initialization.hs 161 --- | Window size, measured in pixels. -data WindowSize = WindowSize GLsizei GLsizei +-------------------------------------------------------------------------------- hunk ./Graphics/UI/GLUT/Initialization.hs 163 --- | Set the /initial window size/. Windows created by +-- | Controls the /initial window size/. Windows created by hunk ./Graphics/UI/GLUT/Initialization.hs 166 --- size/ GLUT state is @'WindowPosition' 300 300@. The /initial window size/ --- components must be greater than zero. +-- size/ GLUT state is @'Size' 300 300@. If either the width or the height +-- component of the /initial window size/ is non-positive, the actual window +-- size is left to the window system to determine. hunk ./Graphics/UI/GLUT/Initialization.hs 177 -setInitialWindowSize :: WindowSize -> IO () -setInitialWindowSize (WindowSize w h) = +initialWindowSize :: StateVar Size +initialWindowSize = makeStateVar getInitialWindowSize setInitialWindowSize + +getInitialWindowSize :: IO Size +getInitialWindowSize = do + w <- simpleGet fromIntegral glut_INIT_WINDOW_WIDTH + h <- simpleGet fromIntegral glut_INIT_WINDOW_HEIGHT + return $ Size w h + +setInitialWindowSize :: Size -> IO () +setInitialWindowSize (Size w h) = hunk ./Graphics/UI/GLUT/Initialization.hs 235 --- | Set the /initial display mode/ used when creating top-level windows, +-------------------------------------------------------------------------------- + +-- | Controls the /initial display mode/ used when creating top-level windows, hunk ./Graphics/UI/GLUT/Initialization.hs 246 +initialDisplayMode :: StateVar [DisplayMode] +initialDisplayMode = makeStateVar getInitialDisplayMode setInitialDisplayMode + +getInitialDisplayMode :: IO [DisplayMode] +getInitialDisplayMode = simpleGet i2dms glut_INIT_DISPLAY_MODE + +i2dms :: CInt -> [DisplayMode] +i2dms = fromBitfield marshalDisplayMode . fromIntegral + +fromBitfield :: (Enum a, Bounded a, Bits b) => (a -> b) -> b -> [a] +fromBitfield marshal bitfield = + [ c | c <- [ minBound .. maxBound ], (bitfield .&. marshal c) /= 0 ] + hunk ./Graphics/UI/GLUT/Initialization.hs 268 +-- | Test whether the /current display mode/ is supported or not. + +isDisplayModePossible :: IO Bool +isDisplayModePossible = simpleGet (/= 0) glut_DISPLAY_MODE_POSSIBLE + hunk ./Graphics/UI/GLUT/Initialization.hs 471 --- | Set the /initial display mode/ used when creating top-level windows, +-- | Controls the /initial display mode/ used when creating top-level windows, hunk ./Graphics/UI/GLUT/Initialization.hs 501 -setInitialDisplayCapabilities :: [CapabilityDescription] -> IO () -setInitialDisplayCapabilities settings = - withCString - (concat . intersperse " " . map capabilityDescriptionToString $ settings) - glutInitDisplayString +initialDisplayCapabilities :: SettableStateVar [CapabilityDescription] +initialDisplayCapabilities = + makeSettableStateVar $ \caps -> + withCString + (concat . intersperse " " . map capabilityDescriptionToString $ caps) + glutInitDisplayString hunk ./Graphics/UI/GLUT/Menu.hs 25 -import Data.Maybe ( fromJust ) hunk ./Graphics/UI/GLUT/Menu.hs 28 -import Control.Monad ( liftM, unless, zipWithM ) +import Control.Monad ( liftM, unless, zipWithM, when ) hunk ./Graphics/UI/GLUT/Menu.hs 30 +import Graphics.Rendering.OpenGL.GL.StateVar ( + HasGetter(get), HasSetter(($=)), StateVar, makeStateVar ) hunk ./Graphics/UI/GLUT/Menu.hs 33 -import Graphics.UI.GLUT.Window ( Window, getWindow ) +import Graphics.UI.GLUT.Window ( Window, currentWindow ) hunk ./Graphics/UI/GLUT/Menu.hs 67 - maybeWindow <- getWindow - let hook = MenuHook (fromJust maybeWindow) mouseButton + win <- get currentWindow + let hook = MenuHook win mouseButton hunk ./Graphics/UI/GLUT/Menu.hs 112 - maybeMenuID <- getMenu + menuID <- get currentMenu hunk ./Graphics/UI/GLUT/Menu.hs 114 - maybe (return ()) setMenu maybeMenuID -- Hmmm, a bit to lenient? + when (isRealMenu menuID) $ + currentMenu $= menuID hunk ./Graphics/UI/GLUT/Menu.hs 198 --- | Set the /current menu./ +-- | Controls the /current menu./ If no menus exist or the previous /current +-- menu/ was destroyed, a pseudo menu is returned, see 'isRealMenu'. hunk ./Graphics/UI/GLUT/Menu.hs 201 -foreign import CALLCONV unsafe "glutSetMenu" setMenu :: MenuID -> IO () +currentMenu :: StateVar MenuID +currentMenu = makeStateVar glutGetMenu glutSetMenu hunk ./Graphics/UI/GLUT/Menu.hs 204 --- | Return 'Just' the identifier of the /current menu./ 'Nothing' is returned --- if no menus exist or the previous /current menu/ was destroyed. - -getMenu :: IO (Maybe MenuID) -getMenu = liftM (\i -> if i == 0 then Nothing else Just i) glutGetMenu +foreign import CALLCONV unsafe "glutSetMenu" glutSetMenu :: MenuID -> IO () hunk ./Graphics/UI/GLUT/Menu.hs 208 +-- | Returns 'True' if the given menu identifier refers to a real menu, not +-- a pseudo one. + +isRealMenu :: MenuID -> Bool +isRealMenu = (/= 0) + hunk ./Graphics/UI/GLUT/State.hs 22 - -- * Initial window parameters - getInitialWindowPosition, getInitialWindowSize, getInitialDisplayMode, - isDisplayModePossible, - hunk ./Graphics/UI/GLUT/State.hs 66 - JoystickInfo(..), getJoystickInfo + JoystickInfo(..), getJoystickInfo, + + simpleGet -- used only internally hunk ./Graphics/UI/GLUT/State.hs 72 -import Data.Bits ( Bits((.&.)) ) hunk ./Graphics/UI/GLUT/State.hs 74 +import Graphics.Rendering.OpenGL.GL.CoordTrans ( Position(..), Size(..) ) hunk ./Graphics/UI/GLUT/State.hs 78 -import Graphics.UI.GLUT.Initialization ( WindowPosition(..), WindowSize(..), - DisplayMode(..), marshalDisplayMode ) hunk ./Graphics/UI/GLUT/State.hs 120 --- | Return the /initial window position./ -getInitialWindowPosition :: IO WindowPosition -getInitialWindowPosition = do - x <- get fromIntegral glut_INIT_WINDOW_X - y <- get fromIntegral glut_INIT_WINDOW_Y - return $ WindowPosition x y - --- | Return the /initial window size./ - -getInitialWindowSize :: IO WindowSize -getInitialWindowSize = do - w <- get fromIntegral glut_INIT_WINDOW_WIDTH - h <- get fromIntegral glut_INIT_WINDOW_HEIGHT - return $ WindowSize w h - --- | Return the /initial display mode./ - -getInitialDisplayMode :: IO [DisplayMode] -getInitialDisplayMode = - get i2dms glut_INIT_DISPLAY_MODE - --- | Test whether the /current display mode/ is supported or not. - -isDisplayModePossible :: IO Bool -isDisplayModePossible = get i2b glut_DISPLAY_MODE_POSSIBLE - --------------------------------------------------------------------------------- - hunk ./Graphics/UI/GLUT/State.hs 123 -getWindowPosition :: IO WindowPosition +getWindowPosition :: IO Position hunk ./Graphics/UI/GLUT/State.hs 125 - x <- get fromIntegral glut_WINDOW_X - y <- get fromIntegral glut_WINDOW_Y - return $ WindowPosition x y + x <- simpleGet fromIntegral glut_WINDOW_X + y <- simpleGet fromIntegral glut_WINDOW_Y + return $ Position x y hunk ./Graphics/UI/GLUT/State.hs 131 -getWindowSize :: IO WindowSize +getWindowSize :: IO Size hunk ./Graphics/UI/GLUT/State.hs 133 - w <- get fromIntegral glut_WINDOW_WIDTH - h <- get fromIntegral glut_WINDOW_HEIGHT - return $ WindowSize w h + w <- simpleGet fromIntegral glut_WINDOW_WIDTH + h <- simpleGet fromIntegral glut_WINDOW_HEIGHT + return $ Size w h hunk ./Graphics/UI/GLUT/State.hs 142 - w <- get makeWindow glut_WINDOW_PARENT + w <- simpleGet makeWindow glut_WINDOW_PARENT hunk ./Graphics/UI/GLUT/State.hs 149 -getSubWindowCount = get id glut_WINDOW_NUM_CHILDREN +getSubWindowCount = simpleGet id glut_WINDOW_NUM_CHILDREN hunk ./Graphics/UI/GLUT/State.hs 154 -getCursor = get unmarshalCursor glut_WINDOW_CURSOR +getCursor = simpleGet unmarshalCursor glut_WINDOW_CURSOR hunk ./Graphics/UI/GLUT/State.hs 160 -isRGBA = get i2b glut_WINDOW_RGBA +isRGBA = simpleGet i2b glut_WINDOW_RGBA hunk ./Graphics/UI/GLUT/State.hs 167 - r <- get id glut_WINDOW_RED_SIZE - g <- get id glut_WINDOW_GREEN_SIZE - b <- get id glut_WINDOW_BLUE_SIZE - a <- get id glut_WINDOW_ALPHA_SIZE + r <- simpleGet id glut_WINDOW_RED_SIZE + g <- simpleGet id glut_WINDOW_GREEN_SIZE + b <- simpleGet id glut_WINDOW_BLUE_SIZE + a <- simpleGet id glut_WINDOW_ALPHA_SIZE hunk ./Graphics/UI/GLUT/State.hs 179 -getColorBufferDepth = get id glut_WINDOW_BUFFER_SIZE +getColorBufferDepth = simpleGet id glut_WINDOW_BUFFER_SIZE hunk ./Graphics/UI/GLUT/State.hs 185 -getColormapEntryCount = get id glut_WINDOW_COLORMAP_SIZE +getColormapEntryCount = simpleGet id glut_WINDOW_COLORMAP_SIZE hunk ./Graphics/UI/GLUT/State.hs 190 -isDoubleBuffered = get i2b glut_WINDOW_DOUBLEBUFFER +isDoubleBuffered = simpleGet i2b glut_WINDOW_DOUBLEBUFFER hunk ./Graphics/UI/GLUT/State.hs 195 -isStereo = get i2b glut_WINDOW_STEREO +isStereo = simpleGet i2b glut_WINDOW_STEREO hunk ./Graphics/UI/GLUT/State.hs 202 - r <- get id glut_WINDOW_ACCUM_RED_SIZE - g <- get id glut_WINDOW_ACCUM_GREEN_SIZE - b <- get id glut_WINDOW_ACCUM_BLUE_SIZE - a <- get id glut_WINDOW_ACCUM_ALPHA_SIZE + r <- simpleGet id glut_WINDOW_ACCUM_RED_SIZE + g <- simpleGet id glut_WINDOW_ACCUM_GREEN_SIZE + b <- simpleGet id glut_WINDOW_ACCUM_BLUE_SIZE + a <- simpleGet id glut_WINDOW_ACCUM_ALPHA_SIZE hunk ./Graphics/UI/GLUT/State.hs 212 -getDepthBufferDepth = get id glut_WINDOW_DEPTH_SIZE +getDepthBufferDepth = simpleGet id glut_WINDOW_DEPTH_SIZE hunk ./Graphics/UI/GLUT/State.hs 218 -getStencilBufferDepth = get id glut_WINDOW_STENCIL_SIZE +getStencilBufferDepth = simpleGet id glut_WINDOW_STENCIL_SIZE hunk ./Graphics/UI/GLUT/State.hs 223 -getSampleCount = get id glut_WINDOW_NUM_SAMPLES +getSampleCount = simpleGet id glut_WINDOW_NUM_SAMPLES hunk ./Graphics/UI/GLUT/State.hs 231 -getFormatID = get id glut_WINDOW_FORMAT_ID +getFormatID = simpleGet id glut_WINDOW_FORMAT_ID hunk ./Graphics/UI/GLUT/State.hs 240 -getElapsedTime = get id glut_ELAPSED_TIME +getElapsedTime = simpleGet id glut_ELAPSED_TIME hunk ./Graphics/UI/GLUT/State.hs 245 -getMenuItemCount = get id glut_MENU_NUM_ITEMS +getMenuItemCount = simpleGet id glut_MENU_NUM_ITEMS hunk ./Graphics/UI/GLUT/State.hs 302 -data ScreenInfo = ScreenInfo WindowSize WindowSize +data ScreenInfo = ScreenInfo Size Size hunk ./Graphics/UI/GLUT/State.hs 308 - wpx <- get fromIntegral glut_SCREEN_WIDTH - hpx <- get fromIntegral glut_SCREEN_HEIGHT - wmm <- get fromIntegral glut_SCREEN_WIDTH_MM - hmm <- get fromIntegral glut_SCREEN_HEIGHT_MM - return $ ScreenInfo (WindowSize wpx hpx) (WindowSize wmm hmm) + wpx <- simpleGet fromIntegral glut_SCREEN_WIDTH + hpx <- simpleGet fromIntegral glut_SCREEN_HEIGHT + wmm <- simpleGet fromIntegral glut_SCREEN_WIDTH_MM + hmm <- simpleGet fromIntegral glut_SCREEN_HEIGHT_MM + return $ ScreenInfo (Size wpx hpx) (Size wmm hmm) hunk ./Graphics/UI/GLUT/State.hs 463 -i2dms :: CInt -> [DisplayMode] -i2dms = fromBitfield marshalDisplayMode . fromIntegral - -fromBitfield :: (Enum a, Bounded a, Bits b) => (a -> b) -> b -> [a] -fromBitfield marshal bitfield = - [ c | c <- [ minBound .. maxBound ], (bitfield .&. marshal c) /= 0 ] - hunk ./Graphics/UI/GLUT/State.hs 512 -get, layerGet, deviceGet :: Getter a -get = makeGetter glutGet +simpleGet, layerGet, deviceGet :: Getter a +simpleGet = makeGetter glutGet hunk ./Graphics/UI/GLUT/Window.hs 29 - setWindow, getWindow, + currentWindow, isRealWindow, hunk ./Graphics/UI/GLUT/Window.hs 60 -import Graphics.UI.GLUT.Initialization ( WindowPosition(..), WindowSize(..) ) +import Graphics.Rendering.OpenGL.GL.CoordTrans ( Position(..), Size(..) ) +import Graphics.Rendering.OpenGL.GL.StateVar ( StateVar, makeStateVar ) hunk ./Graphics/UI/GLUT/Window.hs 112 - :: Window -- ^ Identifier of the subwindow\'s parent window. - -> WindowPosition -- ^ Window position in pixels relative to parent window\'s - -- origin. - -> WindowSize -- ^ Window size in pixels - -> IO Window -- ^ The identifier for the newly created subwindow -createSubWindow win (WindowPosition x y) (WindowSize w h) = + :: Window -- ^ Identifier of the subwindow\'s parent window. + -> Position -- ^ Window position in pixels relative to parent window\'s + -- origin. + -> Size -- ^ Window size in pixels + -> IO Window -- ^ The identifier for the newly created subwindow +createSubWindow win (Position x y) (Size w h) = hunk ./Graphics/UI/GLUT/Window.hs 137 --- | Set the /current window/. It does /not/ change the /layer in use/ for the --- window; this is done using 'Graphics.UI.GLUT.Overlay.useLayer'. +-- | Controls the /current window/. It does /not/ affect the /layer in use/ for +-- the window; this is done using 'Graphics.UI.GLUT.Overlay.useLayer'. If no +-- windows exist or the previously /current window/ was destroyed, a pseudo +-- window is returned, see 'isRealWindow'. hunk ./Graphics/UI/GLUT/Window.hs 142 -foreign import CALLCONV unsafe "glutSetWindow" setWindow :: Window -> IO () +currentWindow :: StateVar Window +currentWindow = makeStateVar glutGetWindow glutSetWindow hunk ./Graphics/UI/GLUT/Window.hs 145 --- | Return 'Just' the identifier of the /current window/. If no windows exist --- or the previously /current window/ was destroyed, 'Nothing' is returned. - -getWindow :: IO (Maybe Window) -getWindow = do - w <- glutGetWindow - return $ if w == Window 0 then Nothing else Just w +foreign import CALLCONV unsafe "glutSetWindow" glutSetWindow :: Window -> IO () hunk ./Graphics/UI/GLUT/Window.hs 149 +-- | Returns 'True' if the given window identifier refers to a real window, not +-- a pseudo one. + +isRealWindow :: Window -> Bool +isRealWindow (Window w) = w /= 0 + hunk ./Graphics/UI/GLUT/Window.hs 214 --- windows, parameters of 'WindowPosition' are pixel offsets from the screen --- origin. For subwindows, the parameters are pixel offsets from the window\'s --- parent window origin. +-- windows, parameters of 'Position' are pixel offsets from the screen origin. +-- For subwindows, the parameters are pixel offsets from the window\'s parent +-- window origin. hunk ./Graphics/UI/GLUT/Window.hs 223 -positionWindow :: WindowPosition -> IO () -positionWindow (WindowPosition x y) = +positionWindow :: Position -> IO () +positionWindow (Position x y) = hunk ./Graphics/UI/GLUT/Window.hs 231 --- 'WindowSize' are size extents in pixels. The width and height must be --- positive values. +-- 'Size' are size extents in pixels. The width and height must be positive +-- values. hunk ./Graphics/UI/GLUT/Window.hs 241 -reshapeWindow :: WindowSize -> IO () -reshapeWindow (WindowSize w h) = - glutReshapeWindow (fromIntegral w) (fromIntegral h) +reshapeWindow :: Size -> IO () +reshapeWindow (Size w h) = glutReshapeWindow (fromIntegral w) (fromIntegral h) hunk ./Graphics/UI/GLUT/Window.hs 421 -warpPointer :: WindowPosition -> IO () -warpPointer (WindowPosition x y) = +warpPointer :: Position -> IO () +warpPointer (Position x y) = hunk ./Graphics/UI/GLUT.hs 60 -import Graphics.UI.GLUT.Initialization hiding ( marshalDisplayMode, - relationToString ) +import Graphics.UI.GLUT.Initialization hiding ( relationToString ) hunk ./Graphics/UI/GLUT.hs 67 -import Graphics.UI.GLUT.State hiding ( marshalGlobalKeyRepeat, - marshalPerWindowKeyRepeat ) +import Graphics.UI.GLUT.State hiding ( + marshalGlobalKeyRepeat, marshalPerWindowKeyRepeat, simpleGet ) hunk ./examples/RedBook/Hello.hs 51 - setInitialDisplayMode [ Single, GLUT.RGB ] - setInitialWindowSize (WindowSize 250 250) - setInitialWindowPosition (WindowPosition 100 100) + initialDisplayMode $= [ Single, GLUT.RGB ] + initialWindowSize $= Size 250 250 + initialWindowPosition $= Position 100 100 hunk ./examples/RedBook/Smooth.hs 38 -reshape (WindowSize w h) = do - viewport $= ((0, 0), (w, h)) +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) hunk ./examples/RedBook/Smooth.hs 56 - setInitialDisplayMode [ Single, GLUT.RGB ] - setInitialWindowSize (WindowSize 500 500) - setInitialWindowPosition (WindowPosition 100 100) + initialDisplayMode $= [ Single, GLUT.RGB ] + initialWindowSize $= Size 500 500 + initialWindowPosition $= Position 100 100 hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 45 - JoystickButtons(..), JoystickPosition(..), setJoystickCallback + JoystickButtons(..), JoystickPosition(..), + JoystickCallback, setJoystickCallback hunk ./Graphics/UI/GLUT/Initialization.hs 12 --- Actions in this module are used to initialize GLUT state. The primary --- initialization routine is 'initialize', which should only be called exactly --- once in a GLUT program. No other GLUT or OpenGL actions should be called --- before 'initialize', apart from the other actions in this module. +-- Actions and state variables in this module are used to initialize GLUT state. +-- The primary initialization routine is 'initialize', which should only be +-- called exactly once in a GLUT program. No other GLUT or OpenGL actions should +-- be called before 'initialize', apart from getting or setting the state +-- variables in this module. hunk ./Graphics/UI/GLUT/Initialization.hs 18 --- The reason is that these actions below can be used to set default window +-- The reason is that these state variables can be used to set default window hunk ./Graphics/UI/GLUT/Initialization.hs 20 --- 'initialize'. For example, @'setInitialWindowSize' ('WindowSize' 400 400)@ --- can be called before 'initialize' to indicate 400 by 400 is the program\'s --- default window size. Setting the initial window size or position before --- 'initialize' allows the GLUT program user to specify the initial size or --- position using command line arguments. +-- 'initialize'. For example, 'initialWindowSize' can be set to @('WindowSize' +-- 400 400)@ before 'initialize' is called to indicate 400 by 400 is the +-- program\'s default window size. Setting the initial window size or position +-- before 'initialize' allows the GLUT program user to specify the initial size +-- or position using command line arguments. hunk ./Graphics/UI/GLUT/Initialization.hs 197 --- with 'setInitialDisplayMode'. +-- with 'initialDisplayMode'. hunk ./Graphics/UI/GLUT/Initialization.hs 276 --- | Capabilities for 'setInitialDisplayCapabilities', most of them are extensions of --- 'DisplayMode'\'s constructors. +-- | Capabilities for 'initialDisplayCapabilities', most of them are extensions +-- of 'DisplayMode'\'s constructors. hunk ./Graphics/UI/GLUT/Initialization.hs 343 - -- 'setInitialDisplayCapabilitiesString' also returns the first (best - -- matching) configuration. 'Num' requires a relation and - -- numeric value. + -- 'initialDisplayCapabilitiesString' also returns the first + -- (best matching) configuration. 'Num' requires a relation + -- and numeric value. hunk ./Graphics/UI/GLUT/Initialization.hs 456 --- | A single capability description for 'setInitialDisplayCapabilities'. +-- | A single capability description for 'initialDisplayCapabilities'. hunk ./Graphics/UI/GLUT/Initialization.hs 483 --- generated. These unspecified criteria help 'setInitialDisplayCapabilities' +-- generated. These unspecified criteria help 'initialDisplayCapabilities' hunk ./Graphics/UI/GLUT/Initialization.hs 486 --- Here is an example using 'setInitialDisplayCapabilities': +-- Here is an example using 'initialDisplayCapabilities': hunk ./Graphics/UI/GLUT/Initialization.hs 489 --- setInitialDisplayCapabilities [ With RGB\', +-- initialDisplayCapabilities $= [ With RGB\', hunk ./Graphics/UI/GLUT/Callbacks.hs 15 --- and when input is available for the window. The menu callback is set by the --- 'Graphics.UI.GLUT.Menu.createMenu' call described already. The global --- callbacks manage the passing of time and menu usage. The calling order of --- callbacks between different windows is undefined. +-- and when input is available for the window. Menu callbacks are described in +-- "Graphics.UI.GLUT.Menu". The global callbacks manage the passing of time and +-- menu usage. The calling order of callbacks between different windows is +-- undefined. hunk ./Graphics/UI/GLUT/Colormap.hs 19 --- be determined by calling 'Graphics.UI.GLUT.State.getNumColormapEntries'. +-- be determined by calling 'Graphics.UI.GLUT.State.getColormapEntryCount'. hunk ./Graphics/UI/GLUT/Initialization.hs 215 - -- each pixel\'s red component is converted to an index between zero and 'Graphics.UI.GLUT.State.getNumColormapEntries' + -- each pixel\'s red component is converted to an index between zero and 'Graphics.UI.GLUT.State.getColormapEntryCount' hunk ./Graphics/UI/GLUT/Window.hs 158 --- The next iteration through 'Graphics.UI.GLUT.mainLoop', the window\'s display --- callback will be called to redisplay the window\'s normal plane. Multiple --- calls to 'postRedisplay' before the next display callback opportunity --- generates only a single redisplay callback. 'postRedisplay' may be called --- within a window\'s display or overlay display callback to re-mark that window --- for redisplay. +-- The next iteration through 'Graphics.UI.GLUT.Begin.mainLoop', the window\'s +-- display callback will be called to redisplay the window\'s normal plane. +-- Multiple calls to 'postRedisplay' before the next display callback +-- opportunity generates only a single redisplay callback. 'postRedisplay' may +-- be called within a window\'s display or overlay display callback to re-mark +-- that window for redisplay. hunk ./Graphics/UI/GLUT/Debugging.hs 21 --- If there are no pending errors, this routine does nothing. +-- If there are no pending errors, this routine does nothing. Note that the +-- error flags are reset after this action, i.e. there are no pending errors +-- left afterwards. hunk ./Graphics/UI/GLUT/Initialization.hs 96 --- * @-gldebug@: After processing callbacks and\/or events, check if there --- are any OpenGL errors by calling 'Graphics.Rendering.OpenGL.getError'. --- If an error is reported, print out a warning by looking up the error --- code with 'Graphics.Rendering.OpenGL.errorString'. Using this option --- is helpful in detecting OpenGL run-time errors. +-- * @-gldebug@: After processing callbacks and\/or events, call +-- 'Graphics.UI.GLUT.Debugging.reportErrors' to check if there are any pending +-- OpenGL errors. Using this option is helpful in detecting OpenGL run-time +-- errors. hunk ./Graphics/UI/GLUT/Window.hs 193 --- An implicit 'Graphics.Rendering.OpenGL.flush' is done by 'swapBuffers' before --- it returns. Subsequent OpenGL commands can be issued immediately after --- calling 'swapBuffers', but are not executed until the buffer exchange is --- completed. +-- An implicit 'Graphics.Rendering.OpenGL.FlushFinish.flush' is done by +-- 'swapBuffers' before it returns. Subsequent OpenGL commands can be issued +-- immediately after calling 'swapBuffers', but are not executed until the +-- buffer exchange is completed. addfile ./Graphics/UI/GLUT/QueryUtils.hs hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 57 -import Graphics.UI.GLUT.Constants +import Graphics.UI.GLUT.Constants ( + glut_NOT_VISIBLE, glut_VISIBLE, + glut_KEY_F1, glut_KEY_F2, glut_KEY_F3, glut_KEY_F4, glut_KEY_F5, glut_KEY_F6, + glut_KEY_F7, glut_KEY_F8, glut_KEY_F9, glut_KEY_F10, glut_KEY_F11, + glut_KEY_F12, glut_KEY_LEFT, glut_KEY_UP, glut_KEY_RIGHT, glut_KEY_DOWN, + glut_KEY_PAGE_UP, glut_KEY_PAGE_DOWN, glut_KEY_HOME, glut_KEY_END, + glut_KEY_INSERT, + glut_LEFT_BUTTON, glut_MIDDLE_BUTTON, glut_RIGHT_BUTTON, + glut_WHEEL_UP, glut_WHEEL_DOWN, + glut_DOWN, glut_UP, + glut_ACTIVE_SHIFT, glut_ACTIVE_CTRL, glut_ACTIVE_ALT, + glut_LEFT, glut_ENTERED, + glut_JOYSTICK_BUTTON_A, glut_JOYSTICK_BUTTON_B, + glut_JOYSTICK_BUTTON_C, glut_JOYSTICK_BUTTON_D ) hunk ./Graphics/UI/GLUT/Colormap.hs 48 -import Graphics.UI.GLUT.Constants +import Graphics.UI.GLUT.Constants ( glut_RED, glut_BLUE, glut_GREEN ) hunk ./Graphics/UI/GLUT/Colormap.hs 51 +----------------------------------------------------------------------------- + hunk ./Graphics/UI/GLUT/DeviceControl.hs 11 --- GLUT offers some routines for setting the key repeat and polling the +-- GLUT offers some routines for controlling the key repeat and polling the hunk ./Graphics/UI/GLUT/DeviceControl.hs 17 - setGlobalKeyRepeat, setPerWindowKeyRepeat, + GlobalKeyRepeat(..), globalKeyRepeat, + PerWindowKeyRepeat(..), perWindowKeyRepeat, hunk ./Graphics/UI/GLUT/DeviceControl.hs 23 -import Graphics.UI.GLUT.State ( GlobalKeyRepeat, marshalGlobalKeyRepeat, - PerWindowKeyRepeat, marshalPerWindowKeyRepeat ) +import Graphics.Rendering.OpenGL.GL.StateVar ( StateVar, makeStateVar ) +import Graphics.UI.GLUT.Constants ( + glut_KEY_REPEAT_OFF, glut_KEY_REPEAT_ON, glut_KEY_REPEAT_DEFAULT, + glut_DEVICE_KEY_REPEAT, glut_DEVICE_IGNORE_KEY_REPEAT ) +import Graphics.UI.GLUT.QueryUtils ( deviceGet ) hunk ./Graphics/UI/GLUT/DeviceControl.hs 31 --- | Set the key repeat mode for the window system on a global basis if +-- | The state of the global key repeat + +data GlobalKeyRepeat + = GlobalKeyRepeatOff + | GlobalKeyRepeatOn + | GlobalKeyRepeatDefault + deriving ( Eq, Ord, Show ) + +marshalGlobalKeyRepeat :: GlobalKeyRepeat -> CInt +marshalGlobalKeyRepeat GlobalKeyRepeatOff = glut_KEY_REPEAT_OFF +marshalGlobalKeyRepeat GlobalKeyRepeatOn = glut_KEY_REPEAT_ON +marshalGlobalKeyRepeat GlobalKeyRepeatDefault = glut_KEY_REPEAT_DEFAULT + +unmarshalGlobalKeyRepeat :: CInt -> GlobalKeyRepeat +unmarshalGlobalKeyRepeat r + | r == glut_KEY_REPEAT_OFF = GlobalKeyRepeatOff + | r == glut_KEY_REPEAT_ON = GlobalKeyRepeatOn + | r == glut_KEY_REPEAT_DEFAULT = GlobalKeyRepeatDefault + | otherwise = error "unmarshalGlobalKeyRepeat" + +-------------------------------------------------------------------------------- + +-- | Controls the key repeat mode for the window system on a global basis if hunk ./Graphics/UI/GLUT/DeviceControl.hs 58 --- window system\'s global auto repeat is enabled. 'setPerWindowKeyRepeat' can +-- window system\'s global auto repeat is enabled. 'perWindowKeyRepeat' can hunk ./Graphics/UI/GLUT/DeviceControl.hs 62 --- 'setGlobalKeyRepeat' routine can be used to actually disable the global --- sending of auto repeated @KeyPress@ events. Note that 'setGlobalKeyRepeat' +-- 'globalKeyRepeat' state variable can be used to actually disable the global +-- sending of auto repeated @KeyPress@ events. Note that 'globalKeyRepeat' hunk ./Graphics/UI/GLUT/DeviceControl.hs 66 --- 'setGlobalKeyRepeat'. GLUT applications using the X11 GLUT implementation --- should disable key repeat with glutSetKeyRepeat to disable key repeats most +-- 'globalKeyRepeat'. GLUT applications using the X11 GLUT implementation +-- should disable key repeat with 'globalKeyRepeat' to disable key repeats most hunk ./Graphics/UI/GLUT/DeviceControl.hs 71 --- /Win32 Implementation Notes:/ The Win32 implementation of 'setGlobalKeyRepeat' --- does nothing. The 'setPerWindowKeyRepeat' can be used in the Win32 GLUT +-- /Win32 Implementation Notes:/ The Win32 implementation of 'globalKeyRepeat' +-- does nothing. The 'perWindowKeyRepeat' can be used in the Win32 GLUT hunk ./Graphics/UI/GLUT/DeviceControl.hs 76 -setGlobalKeyRepeat :: GlobalKeyRepeat -> IO () -setGlobalKeyRepeat = glutSetKeyRepeat . marshalGlobalKeyRepeat +globalKeyRepeat :: StateVar GlobalKeyRepeat +globalKeyRepeat = + makeStateVar (deviceGet unmarshalGlobalKeyRepeat glut_DEVICE_KEY_REPEAT) + (glutSetKeyRepeat . marshalGlobalKeyRepeat) hunk ./Graphics/UI/GLUT/DeviceControl.hs 86 --- | Determine if auto repeat keystrokes are reported to the /current window./ --- The ignore auto repeat state of a window can be queried with --- 'Graphics.UI.GLUT.State.getKeyboardInfo'. Ignoring auto repeated keystrokes --- is generally done in conjunction with using the --- 'Graphics.UI.GLUT.Callbacks.Window.setKeyboardMouseCallback'. If you do +-- | The state of the per-window key repeat + +data PerWindowKeyRepeat + = PerWindowKeyRepeatOff + | PerWindowKeyRepeatOn + deriving ( Eq, Ord, Show ) + +marshalPerWindowKeyRepeat :: PerWindowKeyRepeat -> CInt +marshalPerWindowKeyRepeat PerWindowKeyRepeatOff = 0 +marshalPerWindowKeyRepeat PerWindowKeyRepeatOn = 1 + +unmarshalPerWindowKeyRepeat :: CInt -> PerWindowKeyRepeat +unmarshalPerWindowKeyRepeat 0 = PerWindowKeyRepeatOff +unmarshalPerWindowKeyRepeat _ = PerWindowKeyRepeatOn + +-------------------------------------------------------------------------------- + +-- | Controls if auto repeat keystrokes are reported to the /current window./ +-- Ignoring auto repeated keystrokes is generally done in conjunction with using +-- the 'Graphics.UI.GLUT.Callbacks.Window.setKeyboardMouseCallback'. If you do hunk ./Graphics/UI/GLUT/DeviceControl.hs 110 -setPerWindowKeyRepeat :: PerWindowKeyRepeat -> IO () -setPerWindowKeyRepeat = glutIgnoreKeyRepeat . marshalPerWindowKeyRepeat +perWindowKeyRepeat :: StateVar PerWindowKeyRepeat +perWindowKeyRepeat = + makeStateVar + (deviceGet unmarshalPerWindowKeyRepeat glut_DEVICE_IGNORE_KEY_REPEAT) + (glutIgnoreKeyRepeat . marshalPerWindowKeyRepeat) hunk ./Graphics/UI/GLUT/GameMode.hs 39 -import Graphics.UI.GLUT.Constants +import Graphics.UI.GLUT.Constants ( + glut_GAME_MODE_DISPLAY_CHANGED, glut_GAME_MODE_POSSIBLE, + glut_GAME_MODE_WIDTH, glut_GAME_MODE_HEIGHT, + glut_GAME_MODE_PIXEL_DEPTH, glut_GAME_MODE_REFRESH_RATE, + glut_GAME_MODE_ACTIVE ) hunk ./Graphics/UI/GLUT/Initialization.hs 56 -import Graphics.UI.GLUT.Constants -import Graphics.UI.GLUT.State ( simpleGet ) +import Graphics.UI.GLUT.Constants ( + glut_INIT_WINDOW_X, glut_INIT_WINDOW_Y, + glut_INIT_WINDOW_WIDTH, glut_INIT_WINDOW_HEIGHT, + glut_RGBA, glut_RGB, glut_INDEX, glut_SINGLE, glut_DOUBLE, glut_ACCUM, + glut_ALPHA, glut_DEPTH, glut_STENCIL, glut_MULTISAMPLE, glut_STEREO, + glut_LUMINANCE, + glut_INIT_DISPLAY_MODE, + glut_DISPLAY_MODE_POSSIBLE ) +import Graphics.UI.GLUT.QueryUtils ( simpleGet ) hunk ./Graphics/UI/GLUT/Overlay.hs 37 -import Graphics.UI.GLUT.Constants +import Graphics.UI.GLUT.Constants ( glut_NORMAL, glut_OVERLAY ) hunk ./Graphics/UI/GLUT/QueryUtils.hs 1 +-- #hide +-------------------------------------------------------------------------------- +-- | +-- Module : Graphics.UI.GLUT.QueryUtils +-- Copyright : (c) Sven Panne 2002 +-- License : BSD-style (see the file libraries/GLUT/LICENSE) +-- +-- Maintainer : sven_panne@yahoo.com +-- Stability : experimental +-- Portability : portable +-- +-- This is a purely internal module with utilities to query GLUT state. +-- +-------------------------------------------------------------------------------- + +module Graphics.UI.GLUT.QueryUtils ( + Getter, simpleGet, layerGet, deviceGet +) where + +import Control.Monad ( liftM ) +import Foreign.C.Types ( CInt ) +import Graphics.Rendering.OpenGL.GL.BasicTypes ( GLenum ) + +-------------------------------------------------------------------------------- + +type PrimGetter = GLenum -> IO CInt +type Getter a = (CInt -> a) -> GLenum -> IO a + +makeGetter :: PrimGetter -> Getter a +makeGetter g f = liftM f . g + +simpleGet, layerGet, deviceGet :: Getter a +simpleGet = makeGetter glutGet +layerGet = makeGetter glutLayerGet +deviceGet = makeGetter glutDeviceGet + +foreign import CALLCONV unsafe "glutGet" glutGet :: PrimGetter +foreign import CALLCONV unsafe "glutLayerGet" glutLayerGet :: PrimGetter +foreign import CALLCONV unsafe "glutDeviceGet" glutDeviceGet :: PrimGetter hunk ./Graphics/UI/GLUT/State.hs 46 - -- ** Keyboard information - GlobalKeyRepeat(..), - marshalGlobalKeyRepeat, -- used only internally - PerWindowKeyRepeat(..), - marshalPerWindowKeyRepeat, -- used only internally - KeyboardInfo(..), getKeyboardInfo, - hunk ./Graphics/UI/GLUT/State.hs 59 - JoystickInfo(..), getJoystickInfo, - - simpleGet -- used only internally + JoystickInfo(..), getJoystickInfo hunk ./Graphics/UI/GLUT/State.hs 67 -import Graphics.UI.GLUT.Constants +import Graphics.UI.GLUT.Constants ( + glut_WINDOW_X, glut_WINDOW_Y, glut_WINDOW_WIDTH, glut_WINDOW_HEIGHT, + glut_WINDOW_PARENT, glut_WINDOW_NUM_CHILDREN, + glut_WINDOW_CURSOR, glut_WINDOW_RGBA, + glut_WINDOW_RED_SIZE, glut_WINDOW_GREEN_SIZE, glut_WINDOW_BLUE_SIZE, + glut_WINDOW_ALPHA_SIZE, + glut_WINDOW_BUFFER_SIZE, glut_WINDOW_COLORMAP_SIZE, + glut_WINDOW_DOUBLEBUFFER, glut_WINDOW_STEREO, + glut_WINDOW_ACCUM_RED_SIZE, glut_WINDOW_ACCUM_GREEN_SIZE, + glut_WINDOW_ACCUM_BLUE_SIZE, glut_WINDOW_ACCUM_ALPHA_SIZE, + glut_WINDOW_DEPTH_SIZE, glut_WINDOW_STENCIL_SIZE, glut_WINDOW_NUM_SAMPLES, + glut_WINDOW_FORMAT_ID, glut_ELAPSED_TIME, glut_MENU_NUM_ITEMS, + glut_OVERLAY_POSSIBLE, glut_LAYER_IN_USE, glut_HAS_OVERLAY, + glut_TRANSPARENT_INDEX, + glut_NORMAL_DAMAGED, glut_OVERLAY_DAMAGED, + glut_SCREEN_WIDTH, glut_SCREEN_HEIGHT, + glut_SCREEN_WIDTH_MM, glut_SCREEN_HEIGHT_MM, + glut_HAS_MOUSE, glut_NUM_MOUSE_BUTTONS, + glut_HAS_SPACEBALL, glut_NUM_SPACEBALL_BUTTONS, + glut_HAS_DIAL_AND_BUTTON_BOX, glut_NUM_DIALS, glut_NUM_BUTTON_BOX_BUTTONS, + glut_HAS_TABLET, glut_NUM_TABLET_BUTTONS, + glut_HAS_JOYSTICK, glut_JOYSTICK_BUTTONS, glut_JOYSTICK_POLL_RATE, + glut_JOYSTICK_AXES, + glut_CURSOR_RIGHT_ARROW, glut_CURSOR_LEFT_ARROW, glut_CURSOR_INFO, + glut_CURSOR_DESTROY, glut_CURSOR_HELP, glut_CURSOR_CYCLE, glut_CURSOR_SPRAY, + glut_CURSOR_WAIT, glut_CURSOR_TEXT, glut_CURSOR_CROSSHAIR, + glut_CURSOR_UP_DOWN, glut_CURSOR_LEFT_RIGHT, glut_CURSOR_TOP_SIDE, + glut_CURSOR_BOTTOM_SIDE, glut_CURSOR_LEFT_SIDE, glut_CURSOR_RIGHT_SIDE, + glut_CURSOR_TOP_LEFT_CORNER, glut_CURSOR_TOP_RIGHT_CORNER, + glut_CURSOR_BOTTOM_RIGHT_CORNER, glut_CURSOR_BOTTOM_LEFT_CORNER, + glut_CURSOR_INHERIT, glut_CURSOR_NONE, glut_CURSOR_FULL_CROSSHAIR, + glut_NORMAL, glut_OVERLAY ) hunk ./Graphics/UI/GLUT/State.hs 100 +import Graphics.UI.GLUT.QueryUtils ( simpleGet, layerGet, deviceGet ) hunk ./Graphics/UI/GLUT/State.hs 339 --- | The state of the global key repeat - -data GlobalKeyRepeat - = GlobalKeyRepeatOff - | GlobalKeyRepeatOn - | GlobalKeyRepeatDefault - deriving ( Eq, Ord ) - -marshalGlobalKeyRepeat :: GlobalKeyRepeat -> CInt -marshalGlobalKeyRepeat GlobalKeyRepeatOff = glut_KEY_REPEAT_OFF -marshalGlobalKeyRepeat GlobalKeyRepeatOn = glut_KEY_REPEAT_ON -marshalGlobalKeyRepeat GlobalKeyRepeatDefault = glut_KEY_REPEAT_DEFAULT - -unmarshalGlobalKeyRepeat :: CInt -> GlobalKeyRepeat -unmarshalGlobalKeyRepeat r - | r == glut_KEY_REPEAT_OFF = GlobalKeyRepeatOff - | r == glut_KEY_REPEAT_ON = GlobalKeyRepeatOn - | r == glut_KEY_REPEAT_DEFAULT = GlobalKeyRepeatDefault - | otherwise = error "unmarshalGlobalKeyRepeat" - --------------------------------------------------------------------------------- - --- | The state of the per-window key repeat - -data PerWindowKeyRepeat - = PerWindowKeyRepeatOff - | PerWindowKeyRepeatOn - deriving ( Eq, Ord ) - -marshalPerWindowKeyRepeat :: PerWindowKeyRepeat -> CInt -marshalPerWindowKeyRepeat PerWindowKeyRepeatOff = 0 -marshalPerWindowKeyRepeat PerWindowKeyRepeatOn = 1 - -unmarshalPerWindowKeyRepeat :: CInt -> PerWindowKeyRepeat -unmarshalPerWindowKeyRepeat 0 = PerWindowKeyRepeatOff -unmarshalPerWindowKeyRepeat _ = PerWindowKeyRepeatOn - --------------------------------------------------------------------------------- - --- | The key repeat state - -data KeyboardInfo = KeyboardInfo GlobalKeyRepeat PerWindowKeyRepeat - deriving ( Eq, Ord ) - --- | Return the current key repeat state. - -getKeyboardInfo :: IO (Maybe KeyboardInfo) -getKeyboardInfo = getDeviceInfo glut_HAS_KEYBOARD $ do - r <- deviceGet unmarshalGlobalKeyRepeat glut_DEVICE_KEY_REPEAT - i <- deviceGet unmarshalPerWindowKeyRepeat glut_DEVICE_IGNORE_KEY_REPEAT - return $ KeyboardInfo r i - hunk ./Graphics/UI/GLUT/State.hs 473 --------------------------------------------------------------------------------- - --- Convenience wrappers for primitive getters - -type PrimGetter = GLenum -> IO CInt -type Getter a = (CInt -> a) -> GLenum -> IO a - -makeGetter :: PrimGetter -> Getter a -makeGetter g f = liftM f . g - -simpleGet, layerGet, deviceGet :: Getter a -simpleGet = makeGetter glutGet -layerGet = makeGetter glutLayerGet -deviceGet = makeGetter glutDeviceGet - -foreign import CALLCONV unsafe "glutGet" glutGet :: PrimGetter -foreign import CALLCONV unsafe "glutLayerGet" glutLayerGet :: PrimGetter -foreign import CALLCONV unsafe "glutDeviceGet" glutDeviceGet :: PrimGetter - hunk ./Graphics/UI/GLUT/Window.hs 62 -import Graphics.UI.GLUT.Constants +import Graphics.UI.GLUT.Constants ( + glut_CURSOR_RIGHT_ARROW, glut_CURSOR_LEFT_ARROW, glut_CURSOR_INFO, + glut_CURSOR_DESTROY, glut_CURSOR_HELP, glut_CURSOR_CYCLE, glut_CURSOR_SPRAY, + glut_CURSOR_WAIT, glut_CURSOR_TEXT, glut_CURSOR_CROSSHAIR, + glut_CURSOR_UP_DOWN, glut_CURSOR_LEFT_RIGHT, glut_CURSOR_TOP_SIDE, + glut_CURSOR_BOTTOM_SIDE, glut_CURSOR_LEFT_SIDE, glut_CURSOR_RIGHT_SIDE, + glut_CURSOR_TOP_LEFT_CORNER, glut_CURSOR_TOP_RIGHT_CORNER, + glut_CURSOR_BOTTOM_RIGHT_CORNER, glut_CURSOR_BOTTOM_LEFT_CORNER, + glut_CURSOR_INHERIT, glut_CURSOR_NONE, glut_CURSOR_FULL_CROSSHAIR ) hunk ./Graphics/UI/GLUT/Window.hs 201 --- An implicit 'Graphics.Rendering.OpenGL.FlushFinish.flush' is done by +-- An implicit 'Graphics.Rendering.OpenGL.GL.FlushFinish.flush' is done by hunk ./Graphics/UI/GLUT.hs 67 -import Graphics.UI.GLUT.State hiding ( - marshalGlobalKeyRepeat, marshalPerWindowKeyRepeat, simpleGet ) +import Graphics.UI.GLUT.State addfile ./Graphics/UI/GLUT/Types.hs hunk ./Graphics/UI/GLUT/Begin.hs 4 --- Copyright : (c) Sven Panne 2002 +-- Copyright : (c) Sven Panne 2003 hunk ./Graphics/UI/GLUT/Begin.hs 8 --- Stability : experimental +-- Stability : provisional hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 4 --- Copyright : (c) Sven Panne 2002 +-- Copyright : (c) Sven Panne 2003 hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 8 --- Stability : experimental +-- Stability : provisional hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 15 - MenuUsage(..), MenuStatusCallback, setMenuStatusCallback, + MenuUsage(..), MenuStatusCallback, menuStatusCallback, hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 18 - IdleCallback, setIdleCallback, + IdleCallback, idleCallback, hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 21 - Timeout, TimerCallback, setTimerCallback + Timeout, TimerCallback, addTimerCallback hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 28 -import Graphics.UI.GLUT.Constants -import Graphics.UI.GLUT.Callbacks.Registration ( CallbackType(..), setCallback, - registerForCleanup ) +import Graphics.Rendering.OpenGL.GL.StateVar ( + SettableStateVar, makeSettableStateVar ) +import Graphics.UI.GLUT.Constants ( glut_MENU_NOT_IN_USE, glut_MENU_IN_USE ) +import Graphics.UI.GLUT.Callbacks.Registration ( + CallbackType(..), setCallback, registerForCleanup ) hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 39 - deriving ( Eq, Ord ) + deriving ( Eq, Ord, Show ) hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 51 --- | Set the global menu status callback so a GLUT program can determine when a --- menu is in use or not. When a menu status callback is registered, it will be --- called with the value 'InUse' when pop-up menus are in use by the user; and --- the callback will be called with the value 'NotInUse' when pop-up menus are --- no longer in use. Additionally, the location in window coordinates of the --- button press that caused the menu to go into use, or the location where the --- menu was released (maybe outside the window). Other callbacks continue to +-- | Controls the global menu status callback so a GLUT program can determine +-- when a menu is in use or not. When a menu status callback is registered, it +-- will be called with the value 'InUse' when pop-up menus are in use by the +-- user; and the callback will be called with the value 'NotInUse' when pop-up +-- menus are no longer in use. Additionally, the location in window coordinates +-- of the button press that caused the menu to go into use, or the location where +-- the menu was released (maybe outside the window). Other callbacks continue to hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 69 -setMenuStatusCallback :: Maybe MenuStatusCallback -> IO () -setMenuStatusCallback = setCallback MenuStatusCB glutMenuStatusFunc - (makeMenuStatusCallback . unmarshal) +menuStatusCallback :: SettableStateVar (Maybe MenuStatusCallback) +menuStatusCallback = + makeSettableStateVar $ + setCallback MenuStatusCB glutMenuStatusFunc + (makeMenuStatusCallback . unmarshal) hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 88 --- | Set the global idle callback so a GLUT program can perform background +-- | Controls the global idle callback so a GLUT program can perform background hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 100 -setIdleCallback :: Maybe IdleCallback -> IO () -setIdleCallback = setCallback IdleCB glutIdleFunc makeIdleCallback +idleCallback :: SettableStateVar (Maybe IdleCallback) +idleCallback = + makeSettableStateVar $ setCallback IdleCB glutIdleFunc makeIdleCallback hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 128 -setTimerCallback :: Timeout -> TimerCallback -> IO () -setTimerCallback msecs timerCallback = do +addTimerCallback :: Timeout -> TimerCallback -> IO () +addTimerCallback msecs timerCallback = do hunk ./Graphics/UI/GLUT/Callbacks/Registration.hs 5 --- Copyright : (c) Sven Panne 2002 +-- Copyright : (c) Sven Panne 2003 hunk ./Graphics/UI/GLUT/Callbacks/Registration.hs 9 --- Stability : experimental +-- Stability : provisional hunk ./Graphics/UI/GLUT/Callbacks/Registration.hs 41 - deriving ( Eq, Ord ) + deriving ( Eq, Ord, Show ) hunk ./Graphics/UI/GLUT/Callbacks/Registration.hs 52 -data CallbackID = CallbackID (Maybe Window) CallbackType deriving (Eq, Ord) +data CallbackID = CallbackID (Maybe Window) CallbackType + deriving ( Eq, Ord, Show ) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 1 --- #prune hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 4 --- Copyright : (c) Sven Panne 2002 +-- Copyright : (c) Sven Panne 2003 hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 8 --- Stability : experimental +-- Stability : provisional hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 15 - DisplayCallback, setDisplayCallback, setOverlayDisplayCallback, + DisplayCallback, displayCallback, overlayDisplayCallback, hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 18 - ReshapeCallback, setReshapeCallback, + ReshapeCallback, reshapeCallback, hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 21 - Visibility(..), VisibilityCallback, setVisibilityCallback, + Visibility(..), VisibilityCallback, visibilityCallback, hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 25 - KeyboardMouseCallback, setKeyboardMouseCallback, - marshalMouseButton, -- used only internally + KeyboardMouseCallback, keyboardMouseCallback, hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 28 - MotionCallback, setMotionCallback, setPassiveMotionCallback, - Crossing(..), CrossingCallback, setCrossingCallback, + MotionCallback, motionCallback, passiveMotionCallback, + Crossing(..), CrossingCallback, crossingCallback, hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 32 - SpaceballMotion, SpaceballRotation, SpaceballInput(..), - SpaceballCallback, setSpaceballCallback, + SpaceballMotion, SpaceballRotation, ButtonIndex, SpaceballInput(..), + SpaceballCallback, spaceballCallback, hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 36 - DialAndButtonBoxInput(..), - DialAndButtonBoxCallback, setDialAndButtonBoxCallback, + DialAndButtonBoxInput(..), DialIndex, + DialAndButtonBoxCallback, dialAndButtonBoxCallback, hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 40 - TabletPosition(..), TabletInput(..), TabletCallback, setTabletCallback, + TabletPosition(..), TabletInput(..), TabletCallback, tabletCallback, hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 44 - JoystickCallback, setJoystickCallback + JoystickCallback, joystickCallback hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 53 +import Graphics.Rendering.OpenGL.GL.StateVar ( + SettableStateVar, makeSettableStateVar ) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 56 -import Graphics.UI.GLUT.State ( ButtonIndex, DialIndex, PollRate ) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 63 - glut_LEFT_BUTTON, glut_MIDDLE_BUTTON, glut_RIGHT_BUTTON, - glut_WHEEL_UP, glut_WHEEL_DOWN, hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 68 +import Graphics.UI.GLUT.State ( PollRate ) +import Graphics.UI.GLUT.Types ( MouseButton(..), unmarshalMouseButton ) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 77 --- | Set the display callback for the /current window./ When GLUT determines +-- | Controls the display callback for the /current window./ When GLUT determines hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 98 --- See 'setOverlayDisplayCallback' to understand how distinct callbacks for the +-- See 'overlayDisplayCallback' to understand how distinct callbacks for the hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 115 -setDisplayCallback :: DisplayCallback -> IO () -setDisplayCallback = +displayCallback :: SettableStateVar DisplayCallback +displayCallback = makeSettableStateVar $ hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 127 --- | Set the overlay display callback for the /current window./ The overlay +-- | Controls the overlay display callback for the /current window./ The overlay hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 152 --- established. See 'setDisplayCallback' to understand how the display callback +-- established. See 'displayCallback' to understand how the display callback hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 155 -setOverlayDisplayCallback :: Maybe DisplayCallback -> IO () -setOverlayDisplayCallback = +overlayDisplayCallback :: SettableStateVar (Maybe DisplayCallback) +overlayDisplayCallback = makeSettableStateVar $ hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 170 --- | Set the reshape callback for the /current window./ The reshape callback is --- triggered when a window is reshaped. A reshape callback is also triggered +-- | Controls the reshape callback for the /current window./ The reshape callback +-- is triggered when a window is reshaped. A reshape callback is also triggered hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 194 --- when their size is changed using 'Graphics.UI.GLUT.Window.reshapeWindow'. +-- when their size is changed using 'Graphics.UI.GLUT.Window.windowSize'. hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 196 -setReshapeCallback :: Maybe ReshapeCallback -> IO () -setReshapeCallback = +reshapeCallback :: SettableStateVar (Maybe ReshapeCallback) +reshapeCallback = makeSettableStateVar $ hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 219 - deriving ( Eq, Ord ) + deriving ( Eq, Ord, Show ) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 235 --- | Set the visibility callback for the /current window./ The visibility +-- | Controls the visibility callback for the /current window./ The visibility hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 243 -setVisibilityCallback :: Maybe VisibilityCallback -> IO () -setVisibilityCallback = setCallback VisibilityCB glutVisibilityFunc - (makeVisibilityCallback . unmarshal) +visibilityCallback :: SettableStateVar (Maybe VisibilityCallback) +visibilityCallback = makeSettableStateVar $ + setCallback VisibilityCB glutVisibilityFunc + (makeVisibilityCallback . unmarshal) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 311 - deriving ( Eq, Ord ) + deriving ( Eq, Ord, Show ) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 369 --- | Mouse buttons, including a wheel - -data MouseButton - = LeftButton - | MiddleButton - | RightButton - | WheelUp - | WheelDown - deriving ( Eq, Ord ) - -marshalMouseButton :: MouseButton -> CInt -marshalMouseButton LeftButton = glut_LEFT_BUTTON -marshalMouseButton MiddleButton = glut_MIDDLE_BUTTON -marshalMouseButton RightButton = glut_RIGHT_BUTTON -marshalMouseButton WheelUp = glut_WHEEL_UP -marshalMouseButton WheelDown = glut_WHEEL_DOWN - -unmarshalMouseButton :: CInt -> MouseButton -unmarshalMouseButton b - | b == glut_LEFT_BUTTON = LeftButton - | b == glut_MIDDLE_BUTTON = MiddleButton - | b == glut_RIGHT_BUTTON = RightButton - | b == glut_WHEEL_UP = WheelUp - | b == glut_WHEEL_DOWN = WheelDown - | otherwise = error "unmarshalMouseButton" - --------------------------------------------------------------------------------- - hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 374 - deriving ( Eq, Ord ) + deriving ( Eq, Ord, Show ) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 405 -data Modifiers = Modifiers { shift, ctrl, alt :: KeyState } deriving ( Eq, Ord ) +data Modifiers = Modifiers { shift, ctrl, alt :: KeyState } + deriving ( Eq, Ord, Show ) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 428 - deriving ( Eq, Ord ) + deriving ( Eq, Ord, Show ) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 435 --- | Set the keyboard\/mouse callback for the /current window./ The +-- | Controls the keyboard\/mouse callback for the /current window./ The hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 441 +keyboardMouseCallback :: SettableStateVar (Maybe KeyboardMouseCallback) +keyboardMouseCallback = makeSettableStateVar setKeyboardMouseCallback + hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 471 --- | Set the motion callback for the /current window./ The motion callback for a --- window is called when the mouse moves within the window while one or more --- mouse buttons are pressed. The callback parameter indicates the mouse +-- | Controls the motion callback for the /current window./ The motion callback +-- for a window is called when the mouse moves within the window while one or +-- more mouse buttons are pressed. The callback parameter indicates the mouse hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 476 -setMotionCallback :: Maybe MotionCallback -> IO () -setMotionCallback = +motionCallback :: SettableStateVar (Maybe MotionCallback) +motionCallback = makeSettableStateVar $ hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 489 --- | Set the passive motion callback for the /current window./ The passive +-- | Controls the passive motion callback for the /current window./ The passive hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 494 -setPassiveMotionCallback :: Maybe MotionCallback -> IO () -setPassiveMotionCallback = +passiveMotionCallback :: SettableStateVar (Maybe MotionCallback) +passiveMotionCallback = makeSettableStateVar $ hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 511 - deriving ( Eq, Ord ) + deriving ( Eq, Ord, Show ) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 527 --- | Set the mouse enter\/leave callback for the /current window./ Note that --- some window systems may not generate accurate enter\/leave callbacks. +-- | Controls the mouse enter\/leave callback for the /current window./ Note +-- that some window systems may not generate accurate enter\/leave callbacks. hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 533 -setCrossingCallback :: Maybe CrossingCallback -> IO () -setCrossingCallback = +crossingCallback :: SettableStateVar (Maybe CrossingCallback) +crossingCallback = makeSettableStateVar $ hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 556 +-- | The index of a specific buttons of an input device. + +type ButtonIndex = CInt + hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 571 --- | Set the Spaceball callback for the /current window./ The Spaceball callback --- for a window is called when the window has Spaceball input focus (normally, --- when the mouse is in the window) and the user generates Spaceball +-- | Controls the Spaceball callback for the /current window./ The Spaceball +-- callback for a window is called when the window has Spaceball input focus +-- (normally, when the mouse is in the window) and the user generates Spaceball hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 575 --- buttons can be determined with 'Graphics.UI.GLUT.State.getSpaceballInfo'. +-- buttons can be determined with 'Graphics.UI.GLUT.State.numSpaceballButtons'. hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 581 +spaceballCallback :: SettableStateVar (Maybe SpaceballCallback) +spaceballCallback = makeSettableStateVar setSpaceballCallback + hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 648 +-- | The index of a specific dial of a dial and button box. + +type DialIndex = CInt + hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 657 - deriving ( Eq, Ord ) + deriving ( Eq, Ord, Show ) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 663 --- | Set the dial & button box callback for the /current window./ The dial & --- button box button callback for a window is called when the window has dial & --- button box input focus (normally, when the mouse is in the window) and the +-- | Controls the dial & button box callback for the /current window./ The dial +-- & button box button callback for a window is called when the window has dial +-- & button box input focus (normally, when the mouse is in the window) and the hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 668 --- 'Graphics.UI.GLUT.State.getDialAndButtonBoxInfo'. +-- 'Graphics.UI.GLUT.State.numDialsAndButtons'. hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 674 +dialAndButtonBoxCallback :: SettableStateVar (Maybe DialAndButtonBoxCallback) +dialAndButtonBoxCallback = makeSettableStateVar setDialAndButtonBoxCallback + hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 734 --- | Set the tablet callback for the /current window./ The tablet callback for a --- window is called when the window has tablet input focus (normally, when the --- mouse is in the window) and the user generates tablet motion or button +-- | Controls the tablet callback for the /current window./ The tablet callback +-- for a window is called when the window has tablet input focus (normally, when +-- the mouse is in the window) and the user generates tablet motion or button hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 738 --- 'Graphics.UI.GLUT.State.getTabletInfo'. +-- 'Graphics.UI.GLUT.State.numTabletButtons'. hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 744 +tabletCallback :: SettableStateVar (Maybe TabletCallback) +tabletCallback = makeSettableStateVar setTabletCallback + hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 797 - joystickButtonC, joystickButtonD :: KeyState - } deriving ( Eq, Ord ) + joystickButtonC, joystickButtonD :: KeyState } + deriving ( Eq, Ord, Show ) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 820 -data JoystickPosition = JoystickPosition CInt CInt CInt deriving ( Eq, Ord ) +data JoystickPosition = JoystickPosition CInt CInt CInt + deriving ( Eq, Ord, Show ) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 831 --- | Set the joystick callback for the /current window./ The joystick callback --- is called either due to polling of the joystick at the uniform timer interval --- specified (if > 0) or in response to an explicit call of +-- | Controls the joystick callback for the /current window./ The joystick +-- callback is called either due to polling of the joystick at the uniform timer +-- interval specified (if > 0) or in response to an explicit call of hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 838 -setJoystickCallback :: Maybe JoystickCallback -> PollRate -> IO () -setJoystickCallback c rate = +joystickCallback :: SettableStateVar (Maybe JoystickCallback, PollRate) +joystickCallback = makeSettableStateVar $ \(c, rate) -> hunk ./Graphics/UI/GLUT/Callbacks.hs 4 --- Copyright : (c) Sven Panne 2002 +-- Copyright : (c) Sven Panne 2003 hunk ./Graphics/UI/GLUT/Callbacks.hs 8 --- Stability : experimental +-- Stability : provisional hunk ./Graphics/UI/GLUT/Callbacks.hs 23 --- A callback of type @Foo@ can registered by passing 'Just' the callback to --- @setFooCallback@. Almost all callbacks can be de-registered by passing --- 'Nothing' to the corresponding @setFooCallback@, the only exceptions being +-- A callback of type @Foo@ can registered by setting @fooCallback@ to 'Just' +-- the callback. Almost all callbacks can be de-registered by setting +-- the corresponding @fooCallback@ to 'Nothing', the only exceptions being hunk ./Graphics/UI/GLUT/Callbacks.hs 46 -import Graphics.UI.GLUT.Callbacks.Window hiding ( marshalMouseButton ) +import Graphics.UI.GLUT.Callbacks.Window hunk ./Graphics/UI/GLUT/Colormap.hs 1 ------------------------------------------------------------------------------ +-------------------------------------------------------------------------------- hunk ./Graphics/UI/GLUT/Colormap.hs 4 --- Copyright : (c) Sven Panne 2002 +-- Copyright : (c) Sven Panne 2003 hunk ./Graphics/UI/GLUT/Colormap.hs 8 --- Stability : experimental +-- Stability : provisional hunk ./Graphics/UI/GLUT/Colormap.hs 13 --- capabilities are available and color index mode requires the loading --- of colormap entries. +-- capabilities are available and color index mode requires the loading of +-- colormap entries. hunk ./Graphics/UI/GLUT/Colormap.hs 16 --- The GLUT color index routines are used to write and read entries in a --- window\'s color index colormap. Every GLUT color index window has its --- own logical color index colormap. The size of a window\'s colormap can --- be determined by calling 'Graphics.UI.GLUT.State.getColormapEntryCount'. +-- The GLUT color index state variables are used to read and write entries in a +-- window\'s color index colormap. Every GLUT color index window has its own +-- logical color index colormap. The size of a window\'s colormap can be +-- determined by reading 'numColorMapEntries'. hunk ./Graphics/UI/GLUT/Colormap.hs 21 --- GLUT color index windows within a program can attempt to share --- colormap resources by copying a single color index colormap to --- multiple windows using 'copyColormap'. If possible GLUT will attempt --- to share the actual colormap. While copying colormaps using --- 'copyColormap' can potentially allow sharing of physical colormap --- resources, logically each window has its own colormap. So changing a --- copied colormap of a window will force the duplication of the --- colormap. For this reason, color index programs should generally load --- a single color index colormap, copy it to all color index windows --- within the program, and then not modify any colormap cells. +-- GLUT color index windows within a program can attempt to share colormap +-- resources by copying a single color index colormap to multiple windows using +-- 'copyColormap'. If possible GLUT will attempt to share the actual colormap. +-- While copying colormaps using 'copyColormap' can potentially allow sharing of +-- physical colormap resources, logically each window has its own colormap. So +-- changing a copied colormap of a window will force the duplication of the +-- colormap. For this reason, color index programs should generally load a +-- single color index colormap, copy it to all color index windows within the +-- program, and then not modify any colormap cells. hunk ./Graphics/UI/GLUT/Colormap.hs 32 --- problems where some windows are displayed with an incorrect colormap --- due to limitations on colormap resources. +-- problems where some windows are displayed with an incorrect colormap due to +-- limitations on colormap resources. hunk ./Graphics/UI/GLUT/Colormap.hs 35 ------------------------------------------------------------------------------ +-------------------------------------------------------------------------------- hunk ./Graphics/UI/GLUT/Colormap.hs 38 - -- * Functions - setColor, - getColor, - copyColormap + colorMapEntry, + copyColormap, + numColorMapEntries, + transparentIndex hunk ./Graphics/UI/GLUT/Colormap.hs 45 -import Graphics.Rendering.OpenGL.GL.BasicTypes ( GLfloat ) -import Graphics.Rendering.OpenGL.GL.VertexSpec ( Color3(..), Index1 ) -import Graphics.UI.GLUT.Constants ( glut_RED, glut_BLUE, glut_GREEN ) +import Graphics.Rendering.OpenGL.GL.BasicTypes ( GLint, GLfloat ) +import Graphics.Rendering.OpenGL.GL.StateVar ( + GettableStateVar, makeGettableStateVar, StateVar, makeStateVar ) +import Graphics.Rendering.OpenGL.GL.VertexSpec ( Color3(..), Index1(..) ) +import Graphics.UI.GLUT.Constants ( + glut_RED, glut_GREEN, glut_BLUE, + glut_WINDOW_COLORMAP_SIZE, glut_TRANSPARENT_INDEX ) +import Graphics.UI.GLUT.QueryUtils ( simpleGet, layerGet ) hunk ./Graphics/UI/GLUT/Colormap.hs 55 ------------------------------------------------------------------------------ +-------------------------------------------------------------------------------- hunk ./Graphics/UI/GLUT/Colormap.hs 57 --- | Set the cell color index colormap entry of the /current window/\'s --- logical colormap for the /layer in use/ with the specified color. The --- /layer in use/ of the /current window/ should be a color index window. --- The color index should be zero or greater and less than the total --- number of colormap entries for the window. If the /layer in use/\'s --- colormap was copied by reference, a 'setColor' call will force the --- duplication of the colormap. Do not attempt to set the color of an --- overlay\'s transparent index. -setColor :: Index1 CInt - -> Color3 GLfloat - -> IO () -setColor cell (Color3 r g b) = glutSetColor cell r g b +-- | Controls the color index colormap entry of the /current window/\'s logical +-- colormap for the /layer in use/. The /layer in use/ of the /current window/ +-- should be a color index window. The color index should be zero or greater and +-- less than the total number of colormap entries for the window (see +-- 'numColorMapEntries') and different from an overlay\'s transparent index (see +-- 'transparentIndex'). +-- +-- If the /layer in use/\'s colormap was copied by reference, setting a colormap +-- entry will force the duplication of the colormap. + +colorMapEntry :: Index1 GLint -> StateVar (Color3 GLfloat) +colorMapEntry (Index1 cell) = + makeStateVar (getColorMapEntry (fromIntegral cell)) + (setColorMapEntry (fromIntegral cell)) + +setColorMapEntry :: CInt -> Color3 GLfloat -> IO () +setColorMapEntry cell (Color3 r g b) = glutSetColor cell r g b hunk ./Graphics/UI/GLUT/Colormap.hs 76 - Index1 CInt -> GLfloat -> GLfloat -> GLfloat -> IO () + CInt -> GLfloat -> GLfloat -> GLfloat -> IO () hunk ./Graphics/UI/GLUT/Colormap.hs 78 --- | Retrieve the entry for a given color index colormap entry for the --- /current window/\'s logical colormap. The /current window/ should be a --- color index window. The index should be zero or greater and less than --- the total number of colormap entries for the window. For valid color --- indices, the value returned is 'Just' a color with floating point component --- values between 0.0 and 1.0 inclusive. 'getColor' will return 'Nothing' --- if the color index specified is an overlay\'s transparent index, less --- than zero, or greater or equal to the value returned by @'get' --- 'WindowColormapSize'@, that is if the color index is transparent or --- outside the valid range of color indices. -getColor :: Index1 CInt - -> IO (Maybe (Color3 GLfloat)) -getColor cell = do +getColorMapEntry :: CInt -> IO (Color3 GLfloat) +getColorMapEntry cell = do hunk ./Graphics/UI/GLUT/Colormap.hs 83 - return $ if r < 0.0 then Nothing else Just (Color3 r g b) + return $ Color3 r g b hunk ./Graphics/UI/GLUT/Colormap.hs 86 - Index1 CInt -> CInt -> IO GLfloat + CInt -> CInt -> IO GLfloat + +-------------------------------------------------------------------------------- + +-- | Copy (lazily if possible to promote sharing) the logical colormap from a +-- specified window to the /current window/\'s /layer in use/. The copy will be +-- from the normal plane to the normal plane; or from the overlay to the overlay +-- (never across different layers). Once a colormap has been copied, avoid +-- setting cells in the colormap via 'coloMapEntry' since that will force an +-- actual copy of the colormap if it was previously copied by reference. +-- 'copyColormap' should only be called when both the /current window/ and the +-- specified window are color index windows. hunk ./Graphics/UI/GLUT/Colormap.hs 99 --- | Copy (lazily if possible to promote sharing) the logical colormap --- from a specified window to the /current window/\'s /layer in use/. --- The copy will be from the normal plane to the normal plane; or from --- the overlay to the overlay (never across different layers). Once a --- colormap has been copied, avoid setting cells in the colormap with --- 'setColor' since that will force an actual copy of the colormap if it --- was previously copied by reference. 'copyColormap' should only be --- called when both the /current window/ and the specified window are --- color index windows. hunk ./Graphics/UI/GLUT/Colormap.hs 102 +-------------------------------------------------------------------------------- + +-- | Contains the number of entries in the colormap of the /current window/\'s +-- current layer (0 in RGBA mode). + +numColorMapEntries :: GettableStateVar GLint +numColorMapEntries = + makeGettableStateVar $ simpleGet fromIntegral glut_WINDOW_COLORMAP_SIZE + +-------------------------------------------------------------------------------- + +-- | Contains the transparent color index of the overlay of the /current window/ +-- or -1 if no overlay is in use. + +transparentIndex :: GettableStateVar (Index1 GLint) +transparentIndex = + makeGettableStateVar $ + layerGet (Index1 . fromIntegral) glut_TRANSPARENT_INDEX + hunk ./Graphics/UI/GLUT/Constants.hs 5 --- Copyright : (c) Sven Panne 2002 +-- Copyright : (c) Sven Panne 2003 hunk ./Graphics/UI/GLUT/Constants.hs 9 --- Stability : experimental +-- Stability : provisional hunk ./Graphics/UI/GLUT/Debugging.hs 4 --- Copyright : (c) Sven Panne 2002 +-- Copyright : (c) Sven Panne 2003 hunk ./Graphics/UI/GLUT/Debugging.hs 8 --- Stability : experimental +-- Stability : provisional hunk ./Graphics/UI/GLUT/DeviceControl.hs 4 --- Copyright : (c) Sven Panne 2002 +-- Copyright : (c) Sven Panne 2003 hunk ./Graphics/UI/GLUT/DeviceControl.hs 8 --- Stability : experimental +-- Stability : provisional hunk ./Graphics/UI/GLUT/DeviceControl.hs 105 --- the 'Graphics.UI.GLUT.Callbacks.Window.setKeyboardMouseCallback'. If you do +-- the 'Graphics.UI.GLUT.Callbacks.Window.keyboardMouseCallback'. If you do hunk ./Graphics/UI/GLUT/DeviceControl.hs 122 --- 'Graphics.UI.GLUT.Callbacks.Window.setJoystickCallback' once (if one exists). +-- 'Graphics.UI.GLUT.Callbacks.Window.joystickCallback' once (if one exists). hunk ./Graphics/UI/GLUT/Fonts.hs 4 --- Copyright : (c) Sven Panne 2002 +-- Copyright : (c) Sven Panne 2003 hunk ./Graphics/UI/GLUT/Fonts.hs 8 --- Stability : experimental +-- Stability : provisional hunk ./Graphics/UI/GLUT/Fonts.hs 21 - -- * Fonts hunk ./Graphics/UI/GLUT/Fonts.hs 22 - - -- * Rendering and measuring Strings - renderString, stringWidth hunk ./Graphics/UI/GLUT/Fonts.hs 24 +import Control.Monad ( liftM ) hunk ./Graphics/UI/GLUT/Fonts.hs 29 +import Graphics.Rendering.OpenGL.GL.BasicTypes ( GLint ) hunk ./Graphics/UI/GLUT/Fonts.hs 33 --- | A GLUT font is either a bitmap font or a stroke font. -data Font - = BitmapFont BitmapFont - | StrokeFont StrokeFont - deriving ( Eq, Ord ) +class Font a where + -- | Render the string in the named font, without using any display lists. + -- Rendering a nonexistent character has no effect. + -- + -- If the font is a bitmap font, 'renderString' automatically sets the OpenGL + -- unpack pixel storage modes it needs appropriately and saves and restores + -- the previous modes before returning. The generated call to + -- 'Graphics.Rendering.OpenGL.GL.bitmap' will adjust the current raster + -- position based on the width of the string. + -- If the font is a stroke font, 'Graphics.Rendering.OpenGL.GL.translatef' is + -- used to translate the current model view matrix to advance the width of + -- the string. + + renderString :: a -> String -> IO () + + -- | For a bitmap font, return the width in pixels of a string. For a stroke + -- font, return the width in units. While the width of characters in a font + -- may vary (though fixed width fonts do not vary), the maximum height + -- characteristics of a particular font are fixed. + + stringWidth :: a -> String -> IO GLint + + +instance Font BitmapFont where + renderString = bitmapString + stringWidth f = liftM fromIntegral . bitmapLength f + + +instance Font StrokeFont where + renderString = strokeString + stringWidth f = liftM fromIntegral . strokeLength f hunk ./Graphics/UI/GLUT/Fonts.hs 87 - deriving ( Eq, Ord ) + deriving ( Eq, Ord, Show ) hunk ./Graphics/UI/GLUT/Fonts.hs 121 - deriving ( Eq, Ord ) + deriving ( Eq, Ord, Show ) hunk ./Graphics/UI/GLUT/Fonts.hs 136 --- | Render the string in the named font, without using any display lists. --- Rendering a nonexistent character has no effect. --- --- If the font is a bitmap font, 'renderString' automatically sets the OpenGL --- unpack pixel storage modes it needs appropriately and saves and restores the --- previous modes before returning. The generated call to --- 'Graphics.Rendering.OpenGL.GL.bitmap' will adjust the current raster position --- based on the width of the string. --- --- If the font is a stroke font, 'Graphics.Rendering.OpenGL.GL.translatef' is --- used to translate the current model view matrix to advance the width of the --- string. - -renderString :: Font -> String -> IO () -renderString (BitmapFont f) s = bitmapString f s -renderString (StrokeFont f) s = strokeString f s - --------------------------------------------------------------------------------- - hunk ./Graphics/UI/GLUT/Fonts.hs 157 --------------------------------------------------------------------------------- - --- | For a bitmap font, return the width in pixels of a string. For a stroke --- font, return the width in units. While the width of characters in a font may --- vary (though fixed width fonts do not vary), the maximum height --- characteristics of a particular font are fixed. - -stringWidth :: Font -> String -> IO CInt -stringWidth (BitmapFont f) s = bitmapLength f s -stringWidth (StrokeFont f) s = strokeLength f s - hunk ./Graphics/UI/GLUT/GameMode.hs 4 --- Copyright : (c) Sven Panne 2002 +-- Copyright : (c) Sven Panne 2003 hunk ./Graphics/UI/GLUT/GameMode.hs 8 --- Stability : experimental +-- Stability : provisional hunk ./Graphics/UI/GLUT/GameMode.hs 44 -import Graphics.UI.GLUT.Initialization ( Relation, relationToString ) -import Graphics.UI.GLUT.Window ( Window, makeWindow ) +import Graphics.UI.GLUT.Initialization ( Relation ) +import Graphics.UI.GLUT.Types ( makeWindow, relationToString ) +import Graphics.UI.GLUT.Window ( Window ) hunk ./Graphics/UI/GLUT/GameMode.hs 59 - deriving ( Eq, Ord ) + deriving ( Eq, Ord, Show ) hunk ./Graphics/UI/GLUT/GameMode.hs 71 - deriving ( Eq, Ord ) + deriving ( Eq, Ord, Show ) hunk ./Graphics/UI/GLUT/Initialization.hs 1 --- #prune hunk ./Graphics/UI/GLUT/Initialization.hs 4 --- Copyright : (c) Sven Panne 2002 +-- Copyright : (c) Sven Panne 2003 hunk ./Graphics/UI/GLUT/Initialization.hs 8 --- Stability : experimental +-- Stability : provisional hunk ./Graphics/UI/GLUT/Initialization.hs 38 - relationToString, -- used only internally hunk ./Graphics/UI/GLUT/Initialization.hs 63 +import Graphics.UI.GLUT.Types ( Relation(..), relationToString ) hunk ./Graphics/UI/GLUT/Initialization.hs 220 - -- each pixel\'s red component is converted to an index between zero and 'Graphics.UI.GLUT.State.getColormapEntryCount' + -- each pixel\'s red component is converted to an index between zero and 'Graphics.UI.GLUT.Colormap.numColorMapEntries' hunk ./Graphics/UI/GLUT/Initialization.hs 224 - deriving ( Eq, Ord, Enum, Bounded ) + deriving ( Eq, Ord, Show ) hunk ./Graphics/UI/GLUT/Initialization.hs 259 -i2dms = fromBitfield marshalDisplayMode . fromIntegral - -fromBitfield :: (Enum a, Bounded a, Bits b) => (a -> b) -> b -> [a] -fromBitfield marshal bitfield = - [ c | c <- [ minBound .. maxBound ], (bitfield .&. marshal c) /= 0 ] +i2dms bitfield = + [ c | c <- [ RGBA, RGB, Index, Single, Double, Accum, Alpha, + Depth, Stencil, Multisample, Stereo, Luminance ] + , (fromIntegral bitfield .&. marshalDisplayMode c) /= 0 ] hunk ./Graphics/UI/GLUT/Initialization.hs 397 - deriving ( Eq, Ord ) + deriving ( Eq, Ord, Show ) hunk ./Graphics/UI/GLUT/Initialization.hs 429 --- | Relation between a 'Capability' and a numeric value. - -data Relation - = IsEqualTo -- ^ Equal. - | IsNotEqualTo -- ^ Not equal. - | IsLessThan -- ^ Less than and preferring larger difference (the least - -- is best). - | IsNotGreaterThan -- ^ Less than or equal and preferring larger difference - -- (the least is best). - | IsGreaterThan -- ^ Greater than and preferring larger differences (the - -- most is best). - | IsAtLeast -- ^ Greater than or equal and preferring more instead of - -- less. This relation is useful for allocating - -- resources like color precision or depth buffer - -- precision where the maximum precision is generally - -- preferred. Contrast with 'IsNotLessThan' relation. - | IsNotLessThan -- ^ Greater than or equal but preferring less instead of - -- more. This relation is useful for allocating - -- resources such as stencil bits or auxillary color - -- buffers where you would rather not over-allocate. - deriving ( Eq, Ord ) - -relationToString :: Relation -> String -relationToString IsEqualTo = "=" -relationToString IsNotEqualTo = "!=" -relationToString IsLessThan = "<" -relationToString IsNotGreaterThan = "<=" -relationToString IsGreaterThan = ">" -relationToString IsAtLeast = ">=" -relationToString IsNotLessThan = "~" - hunk ./Graphics/UI/GLUT/Initialization.hs 438 - deriving ( Eq, Ord ) + deriving ( Eq, Ord, Show ) hunk ./Graphics/UI/GLUT/Menu.hs 4 --- Copyright : (c) Sven Panne 2002 +-- Copyright : (c) Sven Panne 2003 hunk ./Graphics/UI/GLUT/Menu.hs 8 --- Stability : experimental +-- Stability : provisional hunk ./Graphics/UI/GLUT/Menu.hs 19 - Menu(..), MenuItem(..), MenuCallback, attachMenu + Menu(..), MenuItem(..), MenuCallback, attachMenu, + numMenuItems hunk ./Graphics/UI/GLUT/Menu.hs 32 - HasGetter(get), HasSetter(($=)), StateVar, makeStateVar ) -import Graphics.UI.GLUT.Callbacks.Window ( MouseButton, marshalMouseButton ) + HasGetter(get), HasSetter(($=)), + GettableStateVar, makeGettableStateVar, + StateVar, makeStateVar ) +import Graphics.UI.GLUT.Callbacks.Window ( MouseButton ) +import Graphics.UI.GLUT.Constants ( glut_MENU_NUM_ITEMS ) +import Graphics.UI.GLUT.QueryUtils ( simpleGet ) +import Graphics.UI.GLUT.Types ( marshalMouseButton ) hunk ./Graphics/UI/GLUT/Menu.hs 142 -data MenuHook = MenuHook Window MouseButton deriving ( Eq, Ord ) +data MenuHook = MenuHook Window MouseButton + deriving ( Eq, Ord, Show ) hunk ./Graphics/UI/GLUT/Menu.hs 301 +-------------------------------------------------------------------------------- + +-- | Contains the number of menu items in the /current menu./ + +numMenuItems :: GettableStateVar Int +numMenuItems = makeGettableStateVar $ simpleGet fromIntegral glut_MENU_NUM_ITEMS + hunk ./Graphics/UI/GLUT/Objects.hs 4 --- Copyright : (c) Sven Panne 2002 +-- Copyright : (c) Sven Panne 2003 hunk ./Graphics/UI/GLUT/Objects.hs 8 --- Stability : experimental +-- Stability : provisional hunk ./Graphics/UI/GLUT/Objects.hs 47 - deriving ( Eq, Ord ) + deriving ( Eq, Ord, Show ) hunk ./Graphics/UI/GLUT/Objects.hs 94 - deriving ( Eq, Ord ) + deriving ( Eq, Ord, Show ) hunk ./Graphics/UI/GLUT/Overlay.hs 1 --- #prune hunk ./Graphics/UI/GLUT/Overlay.hs 4 --- Copyright : (c) Sven Panne 2002 +-- Copyright : (c) Sven Panne 2003 hunk ./Graphics/UI/GLUT/Overlay.hs 8 --- Stability : experimental +-- Stability : provisional hunk ./Graphics/UI/GLUT/Overlay.hs 14 --- window\'s overlay OpenGL state is kept distinct from the normal planes OpenGL --- state. +-- window\'s overlay OpenGL state is kept distinct from the normal planes\' +-- OpenGL state. hunk ./Graphics/UI/GLUT/Overlay.hs 21 - establishOverlay, removeOverlay, + hasOverlay, overlayPossible, + + -- * Showing and hiding an overlay + overlayVisible, hunk ./Graphics/UI/GLUT/Overlay.hs 27 - Layer(..), useLayer, + Layer(..), layerInUse, hunk ./Graphics/UI/GLUT/Overlay.hs 30 - postOverlayRedisplay, postWindowOverlayRedisplay, - - -- * Showing and hiding an overlay - - -- $ShowingAndHidingAnOverlay - showOverlay, hideOverlay + postOverlayRedisplay hunk ./Graphics/UI/GLUT/Overlay.hs 34 -import Graphics.UI.GLUT.Constants ( glut_NORMAL, glut_OVERLAY ) +import Graphics.Rendering.OpenGL.GL.StateVar ( + GettableStateVar, makeGettableStateVar, + SettableStateVar, makeSettableStateVar, + StateVar, makeStateVar ) +import Graphics.UI.GLUT.Constants ( + glut_OVERLAY_POSSIBLE, glut_HAS_OVERLAY, glut_NORMAL, glut_OVERLAY, + glut_LAYER_IN_USE ) +import Graphics.UI.GLUT.QueryUtils ( layerGet ) hunk ./Graphics/UI/GLUT/Overlay.hs 46 --- | Establish an overlay (if possible) for the /current window/. The requested --- display mode for the overlay is determined by the /initial display mode/. --- 'Graphics.UI.GLUT.State.isOverlayPossible' can be called to determine if an --- overlay is possible for the /current window/ with the current /initial --- display mode/. Do not attempt to establish an overlay when one is not --- possible; GLUT will terminate the program. +-- | Controls the overlay for the /current window/. The requested display mode +-- for the overlay is determined by the /initial display mode/. +-- 'overlayPossible' can be used to determine if an overlay is possible for the +-- /current window/ with the current /initial display mode/. Do not attempt to +-- establish an overlay when one is not possible; GLUT will terminate the +-- program. hunk ./Graphics/UI/GLUT/Overlay.hs 53 --- If 'establishOverlay' is called when an overlay already exists, the existing --- overlay is first removed, and then a new overlay is established. The state of --- the old overlay\'s OpenGL context is discarded. +-- When 'hasOverlay' is set to 'True' when an overlay already exists, the +-- existing overlay is first removed, and then a new overlay is established. The +-- state of the old overlay\'s OpenGL context is discarded. Implicitly, the +-- window\'s /layer in use/ changes to the overlay immediately after the overlay +-- is established. hunk ./Graphics/UI/GLUT/Overlay.hs 62 --- Implicitly, the window\'s /layer in use/ changes to the overlay immediately --- after the overlay is established. +-- Setting 'hasOverlay' to 'False' is safe even if no overlay is currently +-- established, nothing happens in this case. Implicitly, the window\'s /layer +-- in use/ changes to the normal plane immediately once the overlay is removed. +-- +-- If the program intends to re-establish the overlay later, it is typically +-- faster and less resource intensive to use 'overlayVisible' to simply change +-- the display status of the overlay. hunk ./Graphics/UI/GLUT/Overlay.hs 75 --- +-- hunk ./Graphics/UI/GLUT/Overlay.hs 79 -foreign import ccall safe "glutEstablishOverlay" establishOverlay :: IO () +hasOverlay :: StateVar Bool +hasOverlay = makeStateVar getHasOverlay setHasOverlay + +setHasOverlay :: Bool -> IO () +setHasOverlay False = glutRemoveOverlay +setHasOverlay True = glutEstablishOverlay + +foreign import CALLCONV safe "glutRemoveOverlay" glutRemoveOverlay :: IO () + +foreign import CALLCONV safe "glutEstablishOverlay" glutEstablishOverlay :: IO () + +getHasOverlay :: IO Bool +getHasOverlay = layerGet (/= 0) glut_HAS_OVERLAY hunk ./Graphics/UI/GLUT/Overlay.hs 93 --- | Remove the overlay (if one exists). It is safe to call 'removeOverlay' even --- if no overlay is currently established, it does nothing in this case. --- Implicitly, the window\'s /layer in use/ changes to the normal plane --- immediately once the overlay is removed. +-------------------------------------------------------------------------------- + +-- | Contains 'True' if an overlay could be established for the /current window/ +-- given the current /initial display mode/. If it contains 'False', +-- 'establishOverlay' will fail with a fatal error if called. + +overlayPossible :: GettableStateVar Bool +overlayPossible = makeGettableStateVar $ layerGet (/= 0) glut_OVERLAY_POSSIBLE + +-------------------------------------------------------------------------------- + +-- | Controls the visibility of the overlay of the /current window/. hunk ./Graphics/UI/GLUT/Overlay.hs 106 --- If the program intends to re-establish the overlay later, it is typically --- faster and less resource intensive to use 'hideOverlay' and 'showOverlay' to --- simply change the display status of the overlay. +-- The effect of showing or hiding an overlay takes place immediately. Note that +-- 'showOverlay' will not actually display the overlay unless the window is also +-- shown (and even a shown window may be obscured by other windows, thereby +-- obscuring the overlay). It is typically faster and less resource intensive to +-- use the routines below to control the display status of an overlay as opposed +-- to removing and re-establishing the overlay. + + +overlayVisible :: SettableStateVar Bool +overlayVisible = + makeSettableStateVar $ \flag -> + if flag then glutShowOverlay else glutHideOverlay + +foreign import CALLCONV safe "glutShowOverlay" glutShowOverlay :: IO () hunk ./Graphics/UI/GLUT/Overlay.hs 121 -foreign import ccall safe "glutRemoveOverlay" removeOverlay :: IO () +foreign import CALLCONV safe "glutHideOverlay" glutHideOverlay :: IO () hunk ./Graphics/UI/GLUT/Overlay.hs 136 --- | Change the per-window /layer in use/ for the /current window/, selecting --- either the normal plane or overlay. The overlay should only be specified if --- an overlay exists, however windows without an overlay may still call --- @'useLayer' 'Normal'@. OpenGL commands for the window are directed to the --- current /layer in use/. --- --- To query the /layer in use/ for a window, call @'layerGet' 'LayerInUse'@. +unmarshalLayer :: GLenum -> Layer +unmarshalLayer l + | l == glut_NORMAL = Normal + | l == glut_OVERLAY = Overlay + | otherwise = error "unmarshalLayer" + +-------------------------------------------------------------------------------- hunk ./Graphics/UI/GLUT/Overlay.hs 144 -useLayer :: Layer -> IO () -useLayer = glutUseLayer . marshalLayer +-- | Controls the per-window /layer in use/ for the /current window/, which can +-- either be the normal plane or the overlay. Selecting the overlay should only +-- be done if an overlay exists, however windows without an overlay may still +-- set the /layer in use/ to 'Normal'. OpenGL commands for the window are +-- directed to the current /layer in use/. hunk ./Graphics/UI/GLUT/Overlay.hs 150 -foreign import ccall safe "glutUseLayer" glutUseLayer :: GLenum -> IO () +layerInUse :: StateVar Layer +layerInUse = + makeStateVar getLayerInUse setLayerInUse + +setLayerInUse :: Layer -> IO () +setLayerInUse = glutUseLayer . marshalLayer + +foreign import CALLCONV safe "glutUseLayer" glutUseLayer :: GLenum -> IO () + +getLayerInUse :: IO Layer +getLayerInUse = layerGet (unmarshalLayer . fromIntegral) glut_LAYER_IN_USE hunk ./Graphics/UI/GLUT/Overlay.hs 164 --- | Mark the overlay of the /current window/ as needing to be redisplayed. The --- next iteration through 'Graphics.UI.GLUT.Begin.mainLoop', the window\'s --- overlay display callback (or simply the display callback if no overlay --- display callback is registered) will be called to redisplay the window\'s --- overlay plane. Multiple calls to 'postOverlayRedisplay' before the next --- display callback opportunity (or overlay display callback opportunity if one --- is registered) generate only a single redisplay. 'postOverlayRedisplay' may --- be called within a window\'s display or overlay display callback to re-mark --- that window for redisplay. +-- | Mark the overlay of the given window (or the /current window/, if none is +-- supplied) as needing to be redisplayed. The next iteration through +-- 'Graphics.UI.GLUT.Begin.mainLoop', the window\'s overlay display callback +-- (or simply the display callback if no overlay display callback is registered) +-- will be called to redisplay the window\'s overlay plane. Multiple calls to +-- 'postOverlayRedisplay' before the next display callback opportunity (or +-- overlay display callback opportunity if one is registered) generate only a +-- single redisplay. 'postOverlayRedisplay' may be called within a window\'s +-- display or overlay display callback to re-mark that window for redisplay. hunk ./Graphics/UI/GLUT/Overlay.hs 177 --- damaged status (returned by @'layerGet' 'OverlayDamaged'@). +-- damaged status (see 'Graphics.UI.GLUT.State.isOverlayDamaged'). hunk ./Graphics/UI/GLUT/Overlay.hs 181 -foreign import ccall safe "glutPostOverlayRedisplay" postOverlayRedisplay :: - IO () - --- | Mark the overlay of the given window as needing to be redisplayed, --- otherwise the same as 'postOverlayRedisplay'. --- --- If the window you want to post an overlay redisplay on is not already the --- /current window/ (and you do not require it to be immediately made current), --- using 'postWindowOverlayRedisplay' is more efficient than calling --- 'Graphics.UI.GLUT.Window.setWindow' to the desired window and then calling --- 'postOverlayRedisplay'. --- --- Also, see 'Graphics.UI.GLUT.Window.postWindowRedisplay'. - -foreign import ccall safe "glutPostWindowOverlayRedisplay" - postWindowOverlayRedisplay :: Window -> IO () - --------------------------------------------------------------------------------- - --- $ShowingAndHidingAnOverlay --- The effect of showing or hiding an overlay takes place immediately. Note that --- 'showOverlay' will not actually display the overlay unless the window is also --- shown (and even a shown window may be obscured by other windows, thereby --- obscuring the overlay). It is typically faster and less resource intensive to --- use the routines below to control the display status of an overlay as opposed --- to removing and re-establishing the overlay. - --- | Show the overlay of the /current window/. - -foreign import ccall safe "glutShowOverlay" showOverlay :: IO () +postOverlayRedisplay :: Maybe Window -> IO () +postOverlayRedisplay = + maybe glutPostOverlayRedisplay glutPostWindowOverlayRedisplay hunk ./Graphics/UI/GLUT/Overlay.hs 185 --- | Hide the overlay of the /current window/. +foreign import CALLCONV safe "glutPostOverlayRedisplay" + glutPostOverlayRedisplay :: IO () hunk ./Graphics/UI/GLUT/Overlay.hs 188 -foreign import ccall safe "glutHideOverlay" hideOverlay :: IO () +foreign import CALLCONV safe "glutPostWindowOverlayRedisplay" + glutPostWindowOverlayRedisplay :: Window -> IO () hunk ./Graphics/UI/GLUT/QueryUtils.hs 5 --- Copyright : (c) Sven Panne 2002 +-- Copyright : (c) Sven Panne 2003 hunk ./Graphics/UI/GLUT/QueryUtils.hs 9 --- Stability : experimental +-- Stability : provisional hunk ./Graphics/UI/GLUT/State.hs 1 --- #prune hunk ./Graphics/UI/GLUT/State.hs 4 --- Copyright : (c) Sven Panne 2002 +-- Copyright : (c) Sven Panne 2003 hunk ./Graphics/UI/GLUT/State.hs 8 --- Stability : experimental +-- Stability : provisional hunk ./Graphics/UI/GLUT/State.hs 17 - -- * Type synonyms - SubWindowCount, SampleCount, BufferDepth, ButtonCount, ButtonIndex, DialCount, - DialIndex, AxisCount, PollRate, - hunk ./Graphics/UI/GLUT/State.hs 18 - getWindowPosition, getWindowSize, - getParent, getSubWindowCount, - getCursor, - isRGBA, getRGBABufferDepths, - getColorBufferDepth, getColormapEntryCount, + isRGBA, + BufferDepth, getRGBABufferDepths, getColorBufferDepth, hunk ./Graphics/UI/GLUT/State.hs 22 - getSampleCount, getFormatID, + SampleCount, getSampleCount, getFormatID, hunk ./Graphics/UI/GLUT/State.hs 24 - -- * Miscellaneous - getElapsedTime, getMenuItemCount, + -- * Timing + elapsedTime, hunk ./Graphics/UI/GLUT/State.hs 28 - isOverlayPossible, getLayerInUse, isOverlayEstablished, getTransparentIndex, hunk ./Graphics/UI/GLUT/State.hs 33 - - -- ** Screen information - ScreenInfo(..), getScreenInfo, - - -- ** Mouse information - MouseInfo(..), getMouseInfo, - - -- ** Spaceball information - SpaceballInfo(..), getSpaceballInfo, - - -- ** Dial and button box information - DialAndButtonBoxInfo(..), getDialAndButtonBoxInfo, - - -- ** Tablet information - TabletInfo(..), getTabletInfo, - - -- ** Joystick information - JoystickInfo(..), getJoystickInfo + screenSize, screenSizeMM, + hasKeyboard, + ButtonCount, numMouseButtons, + numSpaceballButtons, + DialCount, numDialsAndButtons, + numTabletButtons, + AxisCount, PollRate, joystickInfo hunk ./Graphics/UI/GLUT/State.hs 45 -import Graphics.Rendering.OpenGL.GL.CoordTrans ( Position(..), Size(..) ) -import Graphics.Rendering.OpenGL.GL.VertexSpec ( Index1(..) ) +import Graphics.Rendering.OpenGL.GL.CoordTrans ( Size(..) ) +import Graphics.Rendering.OpenGL.GL.StateVar ( + GettableStateVar, makeGettableStateVar ) hunk ./Graphics/UI/GLUT/State.hs 49 - glut_WINDOW_X, glut_WINDOW_Y, glut_WINDOW_WIDTH, glut_WINDOW_HEIGHT, - glut_WINDOW_PARENT, glut_WINDOW_NUM_CHILDREN, - glut_WINDOW_CURSOR, glut_WINDOW_RGBA, + glut_WINDOW_RGBA, hunk ./Graphics/UI/GLUT/State.hs 51 - glut_WINDOW_ALPHA_SIZE, - glut_WINDOW_BUFFER_SIZE, glut_WINDOW_COLORMAP_SIZE, + glut_WINDOW_ALPHA_SIZE, glut_WINDOW_BUFFER_SIZE, hunk ./Graphics/UI/GLUT/State.hs 56 - glut_WINDOW_FORMAT_ID, glut_ELAPSED_TIME, glut_MENU_NUM_ITEMS, - glut_OVERLAY_POSSIBLE, glut_LAYER_IN_USE, glut_HAS_OVERLAY, - glut_TRANSPARENT_INDEX, + glut_WINDOW_FORMAT_ID, glut_ELAPSED_TIME, hunk ./Graphics/UI/GLUT/State.hs 60 + glut_HAS_KEYBOARD, hunk ./Graphics/UI/GLUT/State.hs 66 - glut_JOYSTICK_AXES, - glut_CURSOR_RIGHT_ARROW, glut_CURSOR_LEFT_ARROW, glut_CURSOR_INFO, - glut_CURSOR_DESTROY, glut_CURSOR_HELP, glut_CURSOR_CYCLE, glut_CURSOR_SPRAY, - glut_CURSOR_WAIT, glut_CURSOR_TEXT, glut_CURSOR_CROSSHAIR, - glut_CURSOR_UP_DOWN, glut_CURSOR_LEFT_RIGHT, glut_CURSOR_TOP_SIDE, - glut_CURSOR_BOTTOM_SIDE, glut_CURSOR_LEFT_SIDE, glut_CURSOR_RIGHT_SIDE, - glut_CURSOR_TOP_LEFT_CORNER, glut_CURSOR_TOP_RIGHT_CORNER, - glut_CURSOR_BOTTOM_RIGHT_CORNER, glut_CURSOR_BOTTOM_LEFT_CORNER, - glut_CURSOR_INHERIT, glut_CURSOR_NONE, glut_CURSOR_FULL_CROSSHAIR, - glut_NORMAL, glut_OVERLAY ) -import Graphics.UI.GLUT.Overlay ( Layer(..) ) + glut_JOYSTICK_AXES ) hunk ./Graphics/UI/GLUT/State.hs 68 -import Graphics.UI.GLUT.Window ( Window, makeWindow, Cursor(..) ) hunk ./Graphics/UI/GLUT/State.hs 71 --- | Number of children of a window - -type SubWindowCount = CInt - --- | Number of samples for multisampling - -type SampleCount = CInt - --- | Bit depth of a buffer - -type BufferDepth = CInt - --- | Number of buttons of an input device - -type ButtonCount = CInt - --- | The index of a specific buttons of an input device - -type ButtonIndex = CInt - --- | Number of dials of a dial and button box - -type DialCount = CInt - --- | The index of a specific dial of a dial and button box - -type DialIndex = CInt - --- | Number of axes of a joystick - -type AxisCount = CInt - --- | The a rate at which a joystick is polled (in milliseconds) - -type PollRate = CInt - --------------------------------------------------------------------------------- - --- | Return the location of the /current window,/ measured in pixels relative to --- the screen origin. - -getWindowPosition :: IO Position -getWindowPosition = do - x <- simpleGet fromIntegral glut_WINDOW_X - y <- simpleGet fromIntegral glut_WINDOW_Y - return $ Position x y - --- | Return the size of the /current window,/ measured in pixels. - -getWindowSize :: IO Size -getWindowSize = do - w <- simpleGet fromIntegral glut_WINDOW_WIDTH - h <- simpleGet fromIntegral glut_WINDOW_HEIGHT - return $ Size w h - --- | Return 'Just' the /current window\'s/ parent or 'Nothing' if the /current --- window/ is a top-level window. - -getParent :: IO (Maybe Window) -getParent = do - w <- simpleGet makeWindow glut_WINDOW_PARENT - return $ if w == makeWindow 0 then Nothing else Just w - --- | Return the number of subwindows the /current window/ has, not counting --- children of children. - -getSubWindowCount :: IO SubWindowCount -getSubWindowCount = simpleGet id glut_WINDOW_NUM_CHILDREN - --- | Return the current cursor for the /current window./ - -getCursor :: IO Cursor -getCursor = simpleGet unmarshalCursor glut_WINDOW_CURSOR - hunk ./Graphics/UI/GLUT/State.hs 77 +-- | Bit depth of a buffer + +type BufferDepth = CInt + hunk ./Graphics/UI/GLUT/State.hs 100 --- | Return the number of entries in the colormap of the /current window\'s/ --- current layer (0 in RGBA mode). - -getColormapEntryCount :: IO CInt -getColormapEntryCount = simpleGet id glut_WINDOW_COLORMAP_SIZE - hunk ./Graphics/UI/GLUT/State.hs 133 +-- | Number of samples for multisampling + +type SampleCount = CInt + hunk ./Graphics/UI/GLUT/State.hs 152 --- | Return the number of milliseconds since --- 'Graphics.UI.GLUT.Initialization.initialize' was called (or first call to --- 'getElapsedTime'). - -getElapsedTime :: IO CInt -getElapsedTime = simpleGet id glut_ELAPSED_TIME +-- | Contains the number of milliseconds since +-- 'Graphics.UI.GLUT.Initialization.initialize' was called. hunk ./Graphics/UI/GLUT/State.hs 155 --- | Return the number of menu items in the /current menu./ - -getMenuItemCount :: IO CInt -getMenuItemCount = simpleGet id glut_MENU_NUM_ITEMS +elapsedTime :: GettableStateVar Int +elapsedTime = makeGettableStateVar $ simpleGet fromIntegral glut_ELAPSED_TIME hunk ./Graphics/UI/GLUT/State.hs 160 --- | Test whether an overlay could be established for the /current window/ given --- the current /initial display mode/. If 'False', --- 'Graphics.UI.GLUT.Overlay.establishOverlay' will fail with a fatal error if --- called. - -isOverlayPossible :: IO Bool -isOverlayPossible = layerGet i2b glut_OVERLAY_POSSIBLE - --- | Return the /layer in use/ of the /current window/ (normal plane or --- overlay). - -getLayerInUse :: IO Layer -getLayerInUse = layerGet i2l glut_LAYER_IN_USE - --- | Test if the /current window/ has an overlay established. - -isOverlayEstablished :: IO Bool -isOverlayEstablished = layerGet i2b glut_HAS_OVERLAY - --- | Return 'Just' the transparent color index of the overlay of the /current --- window/; 'Nothing' is returned if no overlay is in use. - -getTransparentIndex :: IO (Maybe (Index1 CInt)) -getTransparentIndex = layerGet i2c glut_TRANSPARENT_INDEX - hunk ./Graphics/UI/GLUT/State.hs 179 --- If a device is not available, the following routines return 'Nothing', --- otherwise they return 'Just' the specific device information. +-- If a device is not available, the following state variables contain +-- 'Nothing', otherwise they return 'Just' the specific device information. +-- Only a screen is always assumed. hunk ./Graphics/UI/GLUT/State.hs 184 --- Although technically this belongs to "Simple GLUT state", it is more --- appropriate here... hunk ./Graphics/UI/GLUT/State.hs 185 --- | The size of the screen in pixels and millimeters +-- | The size of the screen in pixels. hunk ./Graphics/UI/GLUT/State.hs 187 -data ScreenInfo = ScreenInfo Size Size +screenSize :: GettableStateVar Size +screenSize = + makeGettableStateVar $ do + wpx <- simpleGet fromIntegral glut_SCREEN_WIDTH + hpx <- simpleGet fromIntegral glut_SCREEN_HEIGHT + return $ Size wpx hpx hunk ./Graphics/UI/GLUT/State.hs 194 --- | /Note:/ A screen is always assumed, so there is no 'Maybe' here. +-- | The size of the screen in millimeters. hunk ./Graphics/UI/GLUT/State.hs 196 -getScreenInfo :: IO ScreenInfo -getScreenInfo = do - wpx <- simpleGet fromIntegral glut_SCREEN_WIDTH - hpx <- simpleGet fromIntegral glut_SCREEN_HEIGHT - wmm <- simpleGet fromIntegral glut_SCREEN_WIDTH_MM - hmm <- simpleGet fromIntegral glut_SCREEN_HEIGHT_MM - return $ ScreenInfo (Size wpx hpx) (Size wmm hmm) +screenSizeMM :: GettableStateVar Size +screenSizeMM = + makeGettableStateVar $ do + wmm <- simpleGet fromIntegral glut_SCREEN_WIDTH_MM + hmm <- simpleGet fromIntegral glut_SCREEN_HEIGHT_MM + return $ Size wmm hmm hunk ./Graphics/UI/GLUT/State.hs 205 -getDeviceInfo :: GLenum -> IO a -> IO (Maybe a) -getDeviceInfo dev act = do - hasDevice <- deviceGet i2b dev - if hasDevice then liftM Just act else return Nothing +-- | Contains 'True' if a keyboard is present, 'False' otherwise. + +hasKeyboard :: GettableStateVar Bool +hasKeyboard = makeGettableStateVar $ deviceGet i2b glut_HAS_KEYBOARD hunk ./Graphics/UI/GLUT/State.hs 212 --- | The number of buttons of a mouse +-- | Number of buttons of an input device hunk ./Graphics/UI/GLUT/State.hs 214 -newtype MouseInfo = MouseInfo ButtonCount - deriving ( Eq, Ord ) +type ButtonCount = CInt hunk ./Graphics/UI/GLUT/State.hs 216 --- | Return 'Just' the number of buttons of an attached mouse or 'Nothing' if +-- | Contains 'Just' the number of buttons of an attached mouse or 'Nothing' if hunk ./Graphics/UI/GLUT/State.hs 219 -getMouseInfo :: IO (Maybe MouseInfo) -getMouseInfo = getDeviceInfo glut_HAS_MOUSE $ - deviceGet MouseInfo glut_NUM_MOUSE_BUTTONS +numMouseButtons :: GettableStateVar (Maybe ButtonCount) +numMouseButtons = + getDeviceInfo glut_HAS_MOUSE $ + deviceGet id glut_NUM_MOUSE_BUTTONS hunk ./Graphics/UI/GLUT/State.hs 226 --- | The number of buttons of a Spaceball - -newtype SpaceballInfo = SpaceballInfo ButtonCount - deriving ( Eq, Ord ) - --- | Return 'Just' the number of buttons of the attached Spaceball or 'Nothing' +-- | Contains 'Just' the number of buttons of the attached Spaceball or 'Nothing' hunk ./Graphics/UI/GLUT/State.hs 229 -getSpaceballInfo :: IO (Maybe SpaceballInfo) -getSpaceballInfo = getDeviceInfo glut_HAS_SPACEBALL $ - deviceGet SpaceballInfo glut_NUM_SPACEBALL_BUTTONS +numSpaceballButtons :: GettableStateVar (Maybe ButtonCount) +numSpaceballButtons = + getDeviceInfo glut_HAS_SPACEBALL $ + deviceGet id glut_NUM_SPACEBALL_BUTTONS hunk ./Graphics/UI/GLUT/State.hs 236 --- | The number of dials and buttons of a dial & button box +-- | Number of dials of a dial and button box hunk ./Graphics/UI/GLUT/State.hs 238 -data DialAndButtonBoxInfo = DialAndButtonBoxInfo DialCount ButtonCount - deriving ( Eq, Ord ) +type DialCount = CInt hunk ./Graphics/UI/GLUT/State.hs 240 --- | Return 'Just' the number of dials and buttons of an attached dial & button --- box or 'Nothing' if there is none. +-- | Contains 'Just' the number of dials and buttons of an attached dial & +-- button box or 'Nothing' if there is none. hunk ./Graphics/UI/GLUT/State.hs 243 -getDialAndButtonBoxInfo :: IO (Maybe DialAndButtonBoxInfo) -getDialAndButtonBoxInfo = getDeviceInfo glut_HAS_DIAL_AND_BUTTON_BOX $ do - d <- deviceGet id glut_NUM_DIALS - b <- deviceGet id glut_NUM_BUTTON_BOX_BUTTONS - return $ DialAndButtonBoxInfo d b +numDialsAndButtons :: GettableStateVar (Maybe (DialCount, ButtonCount)) +numDialsAndButtons = + getDeviceInfo glut_HAS_DIAL_AND_BUTTON_BOX $ do + d <- deviceGet id glut_NUM_DIALS + b <- deviceGet id glut_NUM_BUTTON_BOX_BUTTONS + return (d, b) hunk ./Graphics/UI/GLUT/State.hs 252 --- | The number of buttons of a tablet - -newtype TabletInfo = TabletInfo ButtonCount - deriving ( Eq, Ord ) - --- | Return 'Just' the number of buttons of an attached tablet or 'Nothing' if +-- | Contains 'Just' the number of buttons of an attached tablet or 'Nothing' if hunk ./Graphics/UI/GLUT/State.hs 255 -getTabletInfo :: IO (Maybe TabletInfo) -getTabletInfo = getDeviceInfo glut_HAS_TABLET $ - deviceGet TabletInfo glut_NUM_TABLET_BUTTONS +numTabletButtons :: GettableStateVar (Maybe ButtonCount) +numTabletButtons = + getDeviceInfo glut_HAS_TABLET $ + deviceGet id glut_NUM_TABLET_BUTTONS hunk ./Graphics/UI/GLUT/State.hs 262 --- | Information about a joystick +-- | Number of axes of a joystick + +type AxisCount = CInt + +-- | The a rate at which a joystick is polled (in milliseconds) hunk ./Graphics/UI/GLUT/State.hs 268 -data JoystickInfo = JoystickInfo ButtonCount PollRate AxisCount - deriving ( Eq, Ord ) +type PollRate = CInt hunk ./Graphics/UI/GLUT/State.hs 270 --- | Return 'Just' some information about an attached joystick or 'Nothing' if --- there is none. +-- | Contains 'Just' the number of buttons of an attached joystick, the number +-- of joystick axes, and the rate at which the joystick is polled. Contains +-- 'Nothing' if there is no joystick attached. hunk ./Graphics/UI/GLUT/State.hs 274 -getJoystickInfo :: IO (Maybe JoystickInfo) -getJoystickInfo = getDeviceInfo glut_HAS_JOYSTICK $ do - b <- deviceGet id glut_JOYSTICK_BUTTONS - r <- deviceGet id glut_JOYSTICK_POLL_RATE - a <- deviceGet id glut_JOYSTICK_AXES - return $ JoystickInfo b r a +joystickInfo :: GettableStateVar (Maybe (ButtonCount, PollRate, AxisCount)) +joystickInfo = + getDeviceInfo glut_HAS_JOYSTICK $ do + b <- deviceGet id glut_JOYSTICK_BUTTONS + a <- deviceGet id glut_JOYSTICK_AXES + r <- deviceGet id glut_JOYSTICK_POLL_RATE + return (b, a, r) hunk ./Graphics/UI/GLUT/State.hs 288 -i2l :: CInt -> Layer -i2l = unmarshalLayer . fromIntegral - -i2c :: CInt -> Maybe (Index1 CInt) -i2c i = if i < 0 then Nothing else Just (Index1 i) - hunk ./Graphics/UI/GLUT/State.hs 293 --- marshaler is in Graphics.UI.GLUT.Window - -unmarshalCursor :: CInt -> Cursor -unmarshalCursor c - | c == glut_CURSOR_RIGHT_ARROW = RightArrow - | c == glut_CURSOR_LEFT_ARROW = LeftArrow - | c == glut_CURSOR_INFO = Info - | c == glut_CURSOR_DESTROY = Destroy - | c == glut_CURSOR_HELP = Help - | c == glut_CURSOR_CYCLE = Cycle - | c == glut_CURSOR_SPRAY = Spray - | c == glut_CURSOR_WAIT = Wait - | c == glut_CURSOR_TEXT = Text - | c == glut_CURSOR_CROSSHAIR = Crosshair - | c == glut_CURSOR_UP_DOWN = UpDown - | c == glut_CURSOR_LEFT_RIGHT = LeftRight - | c == glut_CURSOR_TOP_SIDE = TopSide - | c == glut_CURSOR_BOTTOM_SIDE = BottomSide - | c == glut_CURSOR_LEFT_SIDE = LeftSide - | c == glut_CURSOR_RIGHT_SIDE = RightSide - | c == glut_CURSOR_TOP_LEFT_CORNER = TopLeftCorner - | c == glut_CURSOR_TOP_RIGHT_CORNER = TopRightCorner - | c == glut_CURSOR_BOTTOM_RIGHT_CORNER = BottomRightCorner - | c == glut_CURSOR_BOTTOM_LEFT_CORNER = BottomLeftCorner - | c == glut_CURSOR_INHERIT = Inherit - | c == glut_CURSOR_NONE = None - | c == glut_CURSOR_FULL_CROSSHAIR = FullCrosshair - | otherwise = error "unmarshalCursor" - --- marshaler is in Graphics.UI.GLUT.Overlay - -unmarshalLayer :: GLenum -> Layer -unmarshalLayer l - | l == glut_NORMAL = Normal - | l == glut_OVERLAY = Overlay - | otherwise = error "unmarshalLayer" +getDeviceInfo :: GLenum -> IO a -> GettableStateVar (Maybe a) +getDeviceInfo dev act = + makeGettableStateVar $ do + hasDevice <- deviceGet i2b dev + if hasDevice then liftM Just act else return Nothing hunk ./Graphics/UI/GLUT/Types.hs 1 +-- #hide +-------------------------------------------------------------------------------- +-- | +-- Module : Graphics.UI.GLUT.Types +-- Copyright : (c) Sven Panne 2003 +-- License : BSD-style (see the file libraries/GLUT/LICENSE) +-- +-- Maintainer : sven_panne@yahoo.com +-- Stability : provisional +-- Portability : portable +-- +-- This is a purely internal module with miscellaneous types which don\'t really +-- have a good place elsewhere. +-- +-------------------------------------------------------------------------------- + +module Graphics.UI.GLUT.Types ( + Window, -- constructor used only internally + makeWindow, -- used only internally + Relation(..), + relationToString, -- used only internally + MouseButton(..), + marshalMouseButton, unmarshalMouseButton -- used only internally +) where + +import Foreign.C.Types ( CInt ) +import Graphics.UI.GLUT.Constants ( + glut_LEFT_BUTTON, glut_MIDDLE_BUTTON, glut_RIGHT_BUTTON, + glut_WHEEL_UP, glut_WHEEL_DOWN ) + +-------------------------------------------------------------------------------- + +-- | An opaque identifier for a top-level window or a subwindow. + +newtype Window = Window CInt + deriving ( Eq, Ord, Show ) + +makeWindow :: CInt -> Window +makeWindow = Window + +-------------------------------------------------------------------------------- + +-- | A relation between a 'Graphics.UI.GLUT.Initialization.Capability' and a +-- numeric value. + +data Relation + = IsEqualTo -- ^ Equal. + | IsNotEqualTo -- ^ Not equal. + | IsLessThan -- ^ Less than and preferring larger difference (the least + -- is best). + | IsNotGreaterThan -- ^ Less than or equal and preferring larger difference + -- (the least is best). + | IsGreaterThan -- ^ Greater than and preferring larger differences (the + -- most is best). + | IsAtLeast -- ^ Greater than or equal and preferring more instead of + -- less. This relation is useful for allocating + -- resources like color precision or depth buffer + -- precision where the maximum precision is generally + -- preferred. Contrast with 'IsNotLessThan' relation. + | IsNotLessThan -- ^ Greater than or equal but preferring less instead of + -- more. This relation is useful for allocating + -- resources such as stencil bits or auxillary color + -- buffers where you would rather not over-allocate. + deriving ( Eq, Ord, Show ) + +relationToString :: Relation -> String +relationToString IsEqualTo = "=" +relationToString IsNotEqualTo = "!=" +relationToString IsLessThan = "<" +relationToString IsNotGreaterThan = "<=" +relationToString IsGreaterThan = ">" +relationToString IsAtLeast = ">=" +relationToString IsNotLessThan = "~" + +-------------------------------------------------------------------------------- + +-- | Mouse buttons, including a wheel + +data MouseButton + = LeftButton + | MiddleButton + | RightButton + | WheelUp + | WheelDown + deriving ( Eq, Ord, Show ) + +marshalMouseButton :: MouseButton -> CInt +marshalMouseButton LeftButton = glut_LEFT_BUTTON +marshalMouseButton MiddleButton = glut_MIDDLE_BUTTON +marshalMouseButton RightButton = glut_RIGHT_BUTTON +marshalMouseButton WheelUp = glut_WHEEL_UP +marshalMouseButton WheelDown = glut_WHEEL_DOWN + +unmarshalMouseButton :: CInt -> MouseButton +unmarshalMouseButton b + | b == glut_LEFT_BUTTON = LeftButton + | b == glut_MIDDLE_BUTTON = MiddleButton + | b == glut_RIGHT_BUTTON = RightButton + | b == glut_WHEEL_UP = WheelUp + | b == glut_WHEEL_DOWN = WheelDown + | otherwise = error "unmarshalMouseButton" hunk ./Graphics/UI/GLUT/Window.hs 1 --- #prune hunk ./Graphics/UI/GLUT/Window.hs 4 --- Copyright : (c) Sven Panne 2002 +-- Copyright : (c) Sven Panne 2003 hunk ./Graphics/UI/GLUT/Window.hs 8 --- Stability : experimental +-- Stability : provisional hunk ./Graphics/UI/GLUT/Window.hs 20 - makeWindow, -- used only internally hunk ./Graphics/UI/GLUT/Window.hs 25 + parentWindow, numSubWindows, hunk ./Graphics/UI/GLUT/Window.hs 31 - postRedisplay, postWindowRedisplay, swapBuffers, + postRedisplay, swapBuffers, hunk ./Graphics/UI/GLUT/Window.hs 36 - positionWindow, reshapeWindow, fullScreen, + windowPosition, windowSize, fullScreen, hunk ./Graphics/UI/GLUT/Window.hs 43 - -- * Managing the display status - - -- $ManagingTheDisplayStatus - showWindow, hideWindow, iconifyWindow, + -- * Managing a window\'s display status + WindowStatus(..), windowStatus, hunk ./Graphics/UI/GLUT/Window.hs 49 - setWindowTitle, setIconTitle, + windowTitle, iconTitle, hunk ./Graphics/UI/GLUT/Window.hs 52 - Cursor(..), setCursor, warpPointer + Cursor(..), cursor, pointerPosition hunk ./Graphics/UI/GLUT/Window.hs 58 -import Graphics.Rendering.OpenGL.GL.StateVar ( StateVar, makeStateVar ) +import Graphics.Rendering.OpenGL.GL.StateVar ( + GettableStateVar, makeGettableStateVar, + SettableStateVar, makeSettableStateVar, + StateVar, makeStateVar ) hunk ./Graphics/UI/GLUT/Window.hs 63 + glut_WINDOW_PARENT, glut_WINDOW_NUM_CHILDREN, + glut_WINDOW_X, glut_WINDOW_Y, glut_WINDOW_WIDTH, glut_WINDOW_HEIGHT, hunk ./Graphics/UI/GLUT/Window.hs 72 - glut_CURSOR_INHERIT, glut_CURSOR_NONE, glut_CURSOR_FULL_CROSSHAIR ) - --------------------------------------------------------------------------------- - --- | An opaque identifier for a top-level window or a subwindow. - -newtype Window = Window CInt deriving ( Eq, Ord ) - -makeWindow :: CInt -> Window -makeWindow = Window + glut_CURSOR_INHERIT, glut_CURSOR_NONE, glut_CURSOR_FULL_CROSSHAIR, + glut_WINDOW_CURSOR ) +import Graphics.UI.GLUT.QueryUtils ( simpleGet ) +import Graphics.UI.GLUT.Types ( Window, makeWindow ) hunk ./Graphics/UI/GLUT/Window.hs 111 +-------------------------------------------------------------------------------- + hunk ./Graphics/UI/GLUT/Window.hs 131 +-------------------------------------------------------------------------------- + +-- | Contains the /current window\'s/ parent. If the /current window/ is a +-- top-level window, a pseudo window is returned, see 'isRealWindow'. + +parentWindow :: GettableStateVar Window +parentWindow = + makeGettableStateVar $ + simpleGet makeWindow glut_WINDOW_PARENT + +-------------------------------------------------------------------------------- + +-- | Contains the number of subwindows the /current window/ has, not counting +-- children of children. + +numSubWindows :: GettableStateVar Int +numSubWindows = + makeGettableStateVar $ + simpleGet fromIntegral glut_WINDOW_NUM_CHILDREN + +-------------------------------------------------------------------------------- + hunk ./Graphics/UI/GLUT/Window.hs 166 --- the window; this is done using 'Graphics.UI.GLUT.Overlay.useLayer'. If no +-- the window; this is done using 'Graphics.UI.GLUT.Overlay.layerInUse'. If no hunk ./Graphics/UI/GLUT/Window.hs 181 -isRealWindow (Window w) = w /= 0 +isRealWindow = (/= makeWindow 0) hunk ./Graphics/UI/GLUT/Window.hs 185 --- | Mark the normal plane of /current window/ as needing to be redisplayed. --- The next iteration through 'Graphics.UI.GLUT.Begin.mainLoop', the window\'s --- display callback will be called to redisplay the window\'s normal plane. --- Multiple calls to 'postRedisplay' before the next display callback --- opportunity generates only a single redisplay callback. 'postRedisplay' may --- be called within a window\'s display or overlay display callback to re-mark --- that window for redisplay. +-- | Mark the normal plane of given window (or the /current window/, if none +-- is supplied) as needing to be redisplayed. The next iteration through +-- 'Graphics.UI.GLUT.Begin.mainLoop', the window\'s display callback will be +-- called to redisplay the window\'s normal plane. Multiple calls to +-- 'postRedisplay' before the next display callback opportunity generates only a +-- single redisplay callback. 'postRedisplay' may be called within a window\'s +-- display or overlay display callback to re-mark that window for redisplay. hunk ./Graphics/UI/GLUT/Window.hs 200 -foreign import CALLCONV unsafe "glutPostRedisplay" postRedisplay :: IO () +postRedisplay :: Maybe Window -> IO () +postRedisplay = maybe glutPostRedisplay glutPostWindowRedisplay + +foreign import CALLCONV unsafe "glutPostRedisplay" glutPostRedisplay :: IO () hunk ./Graphics/UI/GLUT/Window.hs 211 --- --- Also, see 'Graphics.UI.GLUT.Overlay.postWindowOverlayRedisplay'. hunk ./Graphics/UI/GLUT/Window.hs 212 -foreign import CALLCONV unsafe "glutPostWindowRedisplay" postWindowRedisplay :: - Window -> IO () +foreign import CALLCONV unsafe "glutPostWindowRedisplay" + glutPostWindowRedisplay :: Window -> IO () + +-------------------------------------------------------------------------------- hunk ./Graphics/UI/GLUT/Window.hs 236 --- Note that the requests by 'positionWindow', 'reshapeWindow', and 'fullScreen' +-- Note that the requests by 'windowPosition', 'windowSize', and 'fullScreen' hunk ./Graphics/UI/GLUT/Window.hs 241 --- 'reshapeWindow' and 'positionWindow' requests on a window will disable the --- full screen status of the window. +-- 'windowPosition' and 'windowSize' requests on a window will disable the full +-- screen status of the window. hunk ./Graphics/UI/GLUT/Window.hs 244 --- | Request a change in the position of the /current window/. For top-level --- windows, parameters of 'Position' are pixel offsets from the screen origin. --- For subwindows, the parameters are pixel offsets from the window\'s parent --- window origin. +-------------------------------------------------------------------------------- + +-- | Controls the position of the /current window/. For top-level windows, +-- parameters of 'Position' are pixel offsets from the screen origin. For +-- subwindows, the parameters are pixel offsets from the window\'s parent window +-- origin. hunk ./Graphics/UI/GLUT/Window.hs 251 --- In the case of top-level windows, a 'positionWindow' call is considered only +-- In the case of top-level windows, setting 'windowPosition' is considered only hunk ./Graphics/UI/GLUT/Window.hs 254 --- windows should be repositioned according 'positionWindow'\'s parameter. +-- windows should be repositioned according 'windowPosition'\'s value. + +windowPosition :: StateVar Position +windowPosition = makeStateVar getWindowPosition setWindowPosition hunk ./Graphics/UI/GLUT/Window.hs 259 -positionWindow :: Position -> IO () -positionWindow (Position x y) = +setWindowPosition :: Position -> IO () +setWindowPosition (Position x y) = hunk ./Graphics/UI/GLUT/Window.hs 266 --- | Request a change in the size of the /current window/. The parameters of --- 'Size' are size extents in pixels. The width and height must be positive --- values. +getWindowPosition :: IO Position +getWindowPosition = do + x <- simpleGet fromIntegral glut_WINDOW_X + y <- simpleGet fromIntegral glut_WINDOW_Y + return $ Position x y + +-------------------------------------------------------------------------------- + +-- | Controls the size of the /current window/. The parameters of 'Size' are +-- size extents in pixels. The width and height must be positive values. hunk ./Graphics/UI/GLUT/Window.hs 277 --- In the case of top-level windows, a 'reshapeWindow' call is considered only a +-- In the case of top-level windows, setting 'windowSize' is considered only a hunk ./Graphics/UI/GLUT/Window.hs 280 --- should be reshaped according 'reshapeWindow'\'s parameters. Whether a --- reshape actually takes effect and, if so, the reshaped dimensions are --- reported to the program by a reshape callback. +-- should be reshaped according 'windowSize'\'s value. Whether a reshape +-- actually takes effect and, if so, the reshaped dimensions are reported to the +-- program by a reshape callback. hunk ./Graphics/UI/GLUT/Window.hs 284 -reshapeWindow :: Size -> IO () -reshapeWindow (Size w h) = glutReshapeWindow (fromIntegral w) (fromIntegral h) +windowSize :: StateVar Size +windowSize = makeStateVar getWindowSize setWindowSize + +setWindowSize :: Size -> IO () +setWindowSize (Size w h) = + glutReshapeWindow (fromIntegral w) (fromIntegral h) hunk ./Graphics/UI/GLUT/Window.hs 294 +getWindowSize :: IO Size +getWindowSize = do + w <- simpleGet fromIntegral glut_WINDOW_WIDTH + h <- simpleGet fromIntegral glut_WINDOW_HEIGHT + return $ Size w h + +-------------------------------------------------------------------------------- + hunk ./Graphics/UI/GLUT/Window.hs 341 --- $ManagingTheDisplayStatus +-- | The display status of a window. + +data WindowStatus + = Shown + | Hidden + | Iconified + deriving ( Eq, Ord, Show ) + +-- | Controls the display status of the /current window/. +-- hunk ./Graphics/UI/GLUT/Window.hs 356 --- system\'s policy for displaying windows. - - --- | Show the /current window/ (though it may still not be visible if obscured --- by other shown windows). +-- system\'s policy for displaying windows. Subwindows can\'t be iconified. hunk ./Graphics/UI/GLUT/Window.hs 358 -foreign import CALLCONV unsafe "glutShowWindow" showWindow :: IO () +windowStatus :: SettableStateVar WindowStatus +windowStatus = makeSettableStateVar setStatus + where setStatus Shown = glutShowWindow + setStatus Hidden = glutHideWindow + setStatus Iconified = glutIconifyWindow hunk ./Graphics/UI/GLUT/Window.hs 364 --- | Hide the /current window/. +foreign import CALLCONV unsafe "glutShowWindow" glutShowWindow :: IO () hunk ./Graphics/UI/GLUT/Window.hs 366 -foreign import CALLCONV unsafe "glutHideWindow" hideWindow :: IO () +foreign import CALLCONV unsafe "glutHideWindow" glutHideWindow :: IO () hunk ./Graphics/UI/GLUT/Window.hs 368 --- | Iconify a top-level window. Note that GLUT prohibits iconification of a --- subwindow. - -foreign import CALLCONV unsafe "glutIconifyWindow" iconifyWindow :: IO () +foreign import CALLCONV unsafe "glutIconifyWindow" glutIconifyWindow :: IO () hunk ./Graphics/UI/GLUT/Window.hs 373 --- 'setWindowTitle' and 'setIconTitle' should be called only when the /current +-- 'windowTitle' and 'iconTitle' should be set only when the /current hunk ./Graphics/UI/GLUT/Window.hs 376 --- Once created, 'setWindowTitle' and 'setIconTitle' can change the window and +-- Once created, setting 'windowTitle' and 'iconTitle' can change the window and hunk ./Graphics/UI/GLUT/Window.hs 382 --- | Set the window title of the /current top-level window/. +-- | Controls the window title of the /current top-level window/. hunk ./Graphics/UI/GLUT/Window.hs 384 -setWindowTitle :: String -> IO () -setWindowTitle name = withCString name glutSetWindowTitle +windowTitle :: SettableStateVar String +windowTitle = + makeSettableStateVar $ \name -> + withCString name glutSetWindowTitle hunk ./Graphics/UI/GLUT/Window.hs 392 --- | Set the icon title of the /current top-level window/. +-- | Controls the icon title of the /current top-level window/. hunk ./Graphics/UI/GLUT/Window.hs 394 -setIconTitle :: String -> IO () -setIconTitle name = withCString name glutSetIconTitle +iconTitle :: SettableStateVar String +iconTitle = + makeSettableStateVar $ \name -> + withCString name glutSetIconTitle hunk ./Graphics/UI/GLUT/Window.hs 430 - deriving ( Eq, Ord ) + deriving ( Eq, Ord, Show ) hunk ./Graphics/UI/GLUT/Window.hs 458 +unmarshalCursor :: CInt -> Cursor +unmarshalCursor c + | c == glut_CURSOR_RIGHT_ARROW = RightArrow + | c == glut_CURSOR_LEFT_ARROW = LeftArrow + | c == glut_CURSOR_INFO = Info + | c == glut_CURSOR_DESTROY = Destroy + | c == glut_CURSOR_HELP = Help + | c == glut_CURSOR_CYCLE = Cycle + | c == glut_CURSOR_SPRAY = Spray + | c == glut_CURSOR_WAIT = Wait + | c == glut_CURSOR_TEXT = Text + | c == glut_CURSOR_CROSSHAIR = Crosshair + | c == glut_CURSOR_UP_DOWN = UpDown + | c == glut_CURSOR_LEFT_RIGHT = LeftRight + | c == glut_CURSOR_TOP_SIDE = TopSide + | c == glut_CURSOR_BOTTOM_SIDE = BottomSide + | c == glut_CURSOR_LEFT_SIDE = LeftSide + | c == glut_CURSOR_RIGHT_SIDE = RightSide + | c == glut_CURSOR_TOP_LEFT_CORNER = TopLeftCorner + | c == glut_CURSOR_TOP_RIGHT_CORNER = TopRightCorner + | c == glut_CURSOR_BOTTOM_RIGHT_CORNER = BottomRightCorner + | c == glut_CURSOR_BOTTOM_LEFT_CORNER = BottomLeftCorner + | c == glut_CURSOR_INHERIT = Inherit + | c == glut_CURSOR_NONE = None + | c == glut_CURSOR_FULL_CROSSHAIR = FullCrosshair + | otherwise = error "unmarshalCursor" + +-------------------------------------------------------------------------------- + hunk ./Graphics/UI/GLUT/Window.hs 497 +cursor :: StateVar Cursor +cursor = makeStateVar getCursor setCursor + hunk ./Graphics/UI/GLUT/Window.hs 505 --- | Warp the window system\'s pointer to a new location relative to the origin --- of the /current window/ by the specified pixel offset, which may be negative. --- The warp is done immediately. +getCursor :: IO Cursor +getCursor = simpleGet unmarshalCursor glut_WINDOW_CURSOR + +-------------------------------------------------------------------------------- + +-- | Setting 'pointerPosition' warps the window system\'s pointer to a new +-- location relative to the origin of the /current window/ by the specified +-- pixel offset, which may be negative. The warp is done immediately. hunk ./Graphics/UI/GLUT/Window.hs 523 -warpPointer :: Position -> IO () -warpPointer (Position x y) = - glutWarpPointer (fromIntegral x) (fromIntegral y) +pointerPosition :: SettableStateVar Position +pointerPosition = + makeSettableStateVar $ \(Position x y) -> + glutWarpPointer (fromIntegral x) (fromIntegral y) hunk ./Graphics/UI/GLUT.hs 4 --- Copyright : (c) Sven Panne 2002 +-- Copyright : (c) Sven Panne 2003 hunk ./Graphics/UI/GLUT.hs 8 --- Stability : experimental +-- Stability : provisional hunk ./Graphics/UI/GLUT.hs 60 -import Graphics.UI.GLUT.Initialization hiding ( relationToString ) +import Graphics.UI.GLUT.Initialization hunk ./Graphics/UI/GLUT.hs 62 -import Graphics.UI.GLUT.Window hiding ( makeWindow ) +import Graphics.UI.GLUT.Window hunk ./examples/RedBook/Hello.hs 56 - setDisplayCallback display + displayCallback $= display hunk ./examples/RedBook/Smooth.hs 61 - setDisplayCallback display - setReshapeCallback (Just reshape) - setKeyboardMouseCallback (Just keyboard) + displayCallback $= display + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just keyboard hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 113 -type Timeout = CUInt +type Timeout = Int hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 132 - glutTimerFunc msecs funPtr 0 + glutTimerFunc (fromIntegral msecs) funPtr 0 hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 138 - Timeout -> FunPtr TimerCallback' -> CInt -> IO () + CUInt -> FunPtr TimerCallback' -> CInt -> IO () hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 50 +import Data.Maybe ( fromJust ) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 111 --- (returned by calling 'Graphics.UI.GLUT.State.isNormalDamaged') is cleared. If --- there is no overlay display callback registered the overlay damaged state of --- the window (returned by calling 'Graphics.UI.GLUT.State.isOverlayDamaged') is --- also cleared. +-- (see 'Graphics.UI.GLUT.State.damaged') is cleared. If there is no overlay +-- display callback registered the overlay damaged state of the window (see +-- 'Graphics.UI.GLUT.State.damaged') is also cleared. hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 148 --- the window (returned by calling 'Graphics.UI.GLUT.State.isOverlayDamaged') --- is cleared. +-- the window (see 'Graphics.UI.GLUT.State.damaged') is cleared. hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 176 --- If a reshape callback is not registered for a window or 'Nothing' is passed --- to setReshapeCallback (to deregister a previously registered callback), the +-- If a reshape callback is not registered for a window or 'reshapeCallback' is +-- set to 'Nothing' (to deregister a previously registered callback), the hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 548 -type SpaceballMotion = CInt +type SpaceballMotion = Int hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 553 -type SpaceballRotation = CInt +type SpaceballRotation = Int hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 557 -type ButtonIndex = CInt +type ButtonIndex = Int hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 602 - where unmarshal cb x y z = cb x y z + where unmarshal cb x y z = + cb (fromIntegral x) (fromIntegral y) (fromIntegral z) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 620 - where unmarshal cb x y z = cb x y z + where unmarshal cb x y z = + cb (fromIntegral x) (fromIntegral y) (fromIntegral z) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 639 - where unmarshal cb b s = cb b (unmarshalKeyState s) + where unmarshal cb b s = cb (fromIntegral b) (unmarshalKeyState s) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 651 -type DialIndex = CInt +type DialIndex = Int hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 657 - | DialAndButtonBoxDial DialIndex CInt + | DialAndButtonBoxDial DialIndex Int hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 695 - where unmarshal cb b s = cb b (unmarshalKeyState s) + where unmarshal cb b s = cb (fromIntegral b) (unmarshalKeyState s) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 705 -type DialsCallback = DialIndex -> CInt -> IO () +type DialsCallback = DialIndex -> Int -> IO () + +type DialsCallback' = CInt -> CInt -> IO () hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 712 - where unmarshal cb d x = cb d x + where unmarshal cb d x = cb (fromIntegral d) (fromIntegral x) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 715 - DialsCallback -> IO (FunPtr DialsCallback) + DialsCallback -> IO (FunPtr DialsCallback') hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 718 - FunPtr DialsCallback -> IO () + FunPtr DialsCallback' -> IO () hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 725 -data TabletPosition = TabletPosition CInt CInt +data TabletPosition = TabletPosition Int Int hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 768 - where unmarshal cb x y = cb (TabletPosition x y) + where unmarshal cb x y = + cb (TabletPosition (fromIntegral x) (fromIntegral y)) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 787 - where unmarshal cb b s x y = cb b (unmarshalKeyState s) (TabletPosition x y) + where unmarshal cb b s x y = + cb (fromIntegral b) (unmarshalKeyState s) + (TabletPosition (fromIntegral x) (fromIntegral y)) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 826 -data JoystickPosition = JoystickPosition CInt CInt CInt +data JoystickPosition = JoystickPosition Int Int Int hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 844 -joystickCallback :: SettableStateVar (Maybe JoystickCallback, PollRate) -joystickCallback = makeSettableStateVar $ \(c, rate) -> - setCallback JoystickCB (\f -> glutJoystickFunc f rate) - (makeJoystickFunc . unmarshal) c +-- joystickCallback :: SettableStateVar (Maybe JoystickCallback, PollRate) +joystickCallback :: SettableStateVar (Maybe (JoystickCallback, PollRate)) +joystickCallback = + makeSettableStateVar $ \maybeCBAndRate -> + setCallback JoystickCB + (\f -> glutJoystickFunc f (fromIntegral (snd (fromJust maybeCBAndRate)))) + (makeJoystickFunc . unmarshal) + (fmap fst maybeCBAndRate) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 853 - (JoystickPosition x y z) + (JoystickPosition (fromIntegral x) + (fromIntegral y) + (fromIntegral z)) hunk ./Graphics/UI/GLUT/Fonts.hs 42 - -- If the font is a stroke font, 'Graphics.Rendering.OpenGL.GL.translatef' is - -- used to translate the current model view matrix to advance the width of - -- the string. + -- If the font is a stroke font, + -- 'Graphics.Rendering.OpenGL.GL.CoordTrans.translate' is used to translate + -- the current model view matrix to advance the width of the string. hunk ./Graphics/UI/GLUT/GameMode.hs 27 - Capability'(..), CapabilityDescription'(..), setGameModeCapabilities, + Capability'(..), CapabilityDescription'(..), gameModeCapabilities, hunk ./Graphics/UI/GLUT/GameMode.hs 29 - BitsPerPlane, RefreshRate, GameModeInfo(..), getGameModeInfo, - isGameModeActive + BitsPerPlane, RefreshRate, GameModeInfo(..), gameModeInfo, + gameModeActive hunk ./Graphics/UI/GLUT/GameMode.hs 39 +import Graphics.Rendering.OpenGL.GL.StateVar ( + GettableStateVar, makeGettableStateVar, + SettableStateVar, makeSettableStateVar ) hunk ./Graphics/UI/GLUT/GameMode.hs 53 --- | Capabilities for 'setGameModeCapabilities' +-- | Capabilities for 'gameModeCapabilities' hunk ./Graphics/UI/GLUT/GameMode.hs 71 --- | A single capability description for 'setGameModeCapabilities'. +-- | A single capability description for 'gameModeCapabilities'. hunk ./Graphics/UI/GLUT/GameMode.hs 73 -data CapabilityDescription' = Where' Capability' Relation CInt +data CapabilityDescription' = Where' Capability' Relation Int hunk ./Graphics/UI/GLUT/GameMode.hs 82 --- | Set the /game mode/ to be used when 'enterGameMode' is called. It is +-- | Controls the /game mode/ to be used when 'enterGameMode' is called. It is hunk ./Graphics/UI/GLUT/GameMode.hs 95 --- (if any), use 'getGameModeInfo'. +-- (if any), use 'gameModeInfo'. hunk ./Graphics/UI/GLUT/GameMode.hs 103 -setGameModeCapabilities :: [CapabilityDescription'] -> IO () -setGameModeCapabilities settings = +gameModeCapabilities :: SettableStateVar [CapabilityDescription'] +gameModeCapabilities = makeSettableStateVar $ \settings -> hunk ./Graphics/UI/GLUT/GameMode.hs 115 --- specified by the last call to 'setGameModeCapabilities'. An identifier for +-- specified by the current value of 'gameModeCapabilities'. An identifier for hunk ./Graphics/UI/GLUT/GameMode.hs 145 -type BitsPerPlane = CInt +type BitsPerPlane = Int hunk ./Graphics/UI/GLUT/GameMode.hs 149 -type RefreshRate = CInt +type RefreshRate = Int hunk ./Graphics/UI/GLUT/GameMode.hs 156 --- 'enterGameMode'. Returns 'Nothing' if the mode requested by the last call to --- 'setGameModeCapabilities' is not possible, in which case 'enterGameMode' +-- 'enterGameMode'. Returns 'Nothing' if the mode requested by the current value +-- of 'gameModeCapabilities' is not possible, in which case 'enterGameMode' hunk ./Graphics/UI/GLUT/GameMode.hs 162 -getGameModeInfo :: IO (Maybe GameModeInfo) -getGameModeInfo = do +gameModeInfo :: GettableStateVar (Maybe GameModeInfo) +gameModeInfo = makeGettableStateVar $ do hunk ./Graphics/UI/GLUT/GameMode.hs 166 - then do w <- glutGameModeGet glut_GAME_MODE_WIDTH - h <- glutGameModeGet glut_GAME_MODE_HEIGHT - let size = Size (fromIntegral w) (fromIntegral h) - b <- glutGameModeGet glut_GAME_MODE_PIXEL_DEPTH - r <- glutGameModeGet glut_GAME_MODE_REFRESH_RATE - return $ Just $ GameModeInfo size b r + then do + w <- glutGameModeGet glut_GAME_MODE_WIDTH + h <- glutGameModeGet glut_GAME_MODE_HEIGHT + let size = Size (fromIntegral w) (fromIntegral h) + b <- glutGameModeGet glut_GAME_MODE_PIXEL_DEPTH + r <- glutGameModeGet glut_GAME_MODE_REFRESH_RATE + return $ Just $ GameModeInfo size (fromIntegral b) (fromIntegral r) hunk ./Graphics/UI/GLUT/GameMode.hs 183 --- | Test whether /game mode/ is active or not. +-- | Contains 'True' when the /game mode/ is active, 'False' otherwise. hunk ./Graphics/UI/GLUT/GameMode.hs 185 -isGameModeActive :: IO Bool -isGameModeActive = getBool glut_GAME_MODE_ACTIVE +gameModeActive :: GettableStateVar Bool +gameModeActive = makeGettableStateVar $ getBool glut_GAME_MODE_ACTIVE hunk ./Graphics/UI/GLUT/Initialization.hs 432 - = Where Capability Relation CInt -- ^ A description of a capability with a - -- specific relation to a numeric value. - | With Capability -- ^ When the relation and numeric value are - -- not specified, each capability has a - -- different default, see the different - -- constructors of 'Capability'. + = Where Capability Relation Int -- ^ A description of a capability with a + -- specific relation to a numeric value. + | With Capability -- ^ When the relation and numeric value are + -- not specified, each capability has a + -- different default, see the different + -- constructors of 'Capability'. hunk ./Graphics/UI/GLUT/Overlay.hs 177 --- damaged status (see 'Graphics.UI.GLUT.State.isOverlayDamaged'). +-- damaged status (see 'Graphics.UI.GLUT.State.damaged'). hunk ./Graphics/UI/GLUT/State.hs 18 - isRGBA, - BufferDepth, getRGBABufferDepths, getColorBufferDepth, - isDoubleBuffered, isStereo, - getAccumBufferDepths, getDepthBufferDepth, getStencilBufferDepth, - SampleCount, getSampleCount, getFormatID, + rgba, + BufferDepth, rgbaBufferDepths, colorBufferDepth, + doubleBuffered, stereo, + accumBufferDepths, depthBufferDepth, stencilBufferDepth, + SampleCount, sampleCount, formatID, hunk ./Graphics/UI/GLUT/State.hs 28 - isNormalDamaged, isOverlayDamaged, + damaged, hunk ./Graphics/UI/GLUT/State.hs 67 +import Graphics.UI.GLUT.Overlay ( Layer(..) ) hunk ./Graphics/UI/GLUT/State.hs 72 --- | Test whether the current layer of the /current window/ is in RGBA mode. --- 'False' means color index mode. +-- | Contains 'True' when the current layer of the /current window/ is in RGBA +-- mode, 'False' means color index mode. hunk ./Graphics/UI/GLUT/State.hs 75 -isRGBA :: IO Bool -isRGBA = simpleGet i2b glut_WINDOW_RGBA +rgba :: GettableStateVar Bool +rgba = makeGettableStateVar$ simpleGet i2b glut_WINDOW_RGBA hunk ./Graphics/UI/GLUT/State.hs 80 -type BufferDepth = CInt +type BufferDepth = Int hunk ./Graphics/UI/GLUT/State.hs 82 --- | Return the number of red, green, blue, and alpha bits in the color buffer +-- | Contains the number of red, green, blue, and alpha bits in the color buffer hunk ./Graphics/UI/GLUT/State.hs 85 -getRGBABufferDepths :: IO (BufferDepth, BufferDepth, BufferDepth, BufferDepth) -getRGBABufferDepths = do - r <- simpleGet id glut_WINDOW_RED_SIZE - g <- simpleGet id glut_WINDOW_GREEN_SIZE - b <- simpleGet id glut_WINDOW_BLUE_SIZE - a <- simpleGet id glut_WINDOW_ALPHA_SIZE +rgbaBufferDepths :: + GettableStateVar (BufferDepth, BufferDepth, BufferDepth, BufferDepth) +rgbaBufferDepths = makeGettableStateVar $ do + r <- simpleGet fromIntegral glut_WINDOW_RED_SIZE + g <- simpleGet fromIntegral glut_WINDOW_GREEN_SIZE + b <- simpleGet fromIntegral glut_WINDOW_BLUE_SIZE + a <- simpleGet fromIntegral glut_WINDOW_ALPHA_SIZE hunk ./Graphics/UI/GLUT/State.hs 94 --- | Return the total number of bits in the color buffer of the /current +-- | Contains the total number of bits in the color buffer of the /current hunk ./Graphics/UI/GLUT/State.hs 99 -getColorBufferDepth :: IO BufferDepth -getColorBufferDepth = simpleGet id glut_WINDOW_BUFFER_SIZE +colorBufferDepth :: GettableStateVar BufferDepth +colorBufferDepth = + makeGettableStateVar $ simpleGet fromIntegral glut_WINDOW_BUFFER_SIZE hunk ./Graphics/UI/GLUT/State.hs 103 --- | Test whether the current layer of the /current window/ is double buffered. +-- | Contains 'True' when the current layer of the /current window/ is double +-- buffered, 'False' otherwise. hunk ./Graphics/UI/GLUT/State.hs 106 -isDoubleBuffered :: IO Bool -isDoubleBuffered = simpleGet i2b glut_WINDOW_DOUBLEBUFFER +doubleBuffered :: GettableStateVar Bool +doubleBuffered = makeGettableStateVar $ simpleGet i2b glut_WINDOW_DOUBLEBUFFER hunk ./Graphics/UI/GLUT/State.hs 109 --- | Test whether the current layer of the /current window/ is stereo. +-- | Contains 'True' when the current layer of the /current window/ is stereo, +-- 'False' otherwise. hunk ./Graphics/UI/GLUT/State.hs 112 -isStereo :: IO Bool -isStereo = simpleGet i2b glut_WINDOW_STEREO +stereo :: GettableStateVar Bool +stereo = makeGettableStateVar $ simpleGet i2b glut_WINDOW_STEREO hunk ./Graphics/UI/GLUT/State.hs 115 --- | Return the number of red, green, blue, and alpha bits in the accumulation +-- | Contains the number of red, green, blue, and alpha bits in the accumulation hunk ./Graphics/UI/GLUT/State.hs 118 -getAccumBufferDepths :: IO (BufferDepth, BufferDepth, BufferDepth, BufferDepth) -getAccumBufferDepths = do - r <- simpleGet id glut_WINDOW_ACCUM_RED_SIZE - g <- simpleGet id glut_WINDOW_ACCUM_GREEN_SIZE - b <- simpleGet id glut_WINDOW_ACCUM_BLUE_SIZE - a <- simpleGet id glut_WINDOW_ACCUM_ALPHA_SIZE +accumBufferDepths :: + GettableStateVar (BufferDepth, BufferDepth, BufferDepth, BufferDepth) +accumBufferDepths = makeGettableStateVar $ do + r <- simpleGet fromIntegral glut_WINDOW_ACCUM_RED_SIZE + g <- simpleGet fromIntegral glut_WINDOW_ACCUM_GREEN_SIZE + b <- simpleGet fromIntegral glut_WINDOW_ACCUM_BLUE_SIZE + a <- simpleGet fromIntegral glut_WINDOW_ACCUM_ALPHA_SIZE hunk ./Graphics/UI/GLUT/State.hs 127 --- | Return the number of bits in the depth buffer of the /current window\'s/ +-- | Contains the number of bits in the depth buffer of the /current window\'s/ hunk ./Graphics/UI/GLUT/State.hs 130 -getDepthBufferDepth :: IO BufferDepth -getDepthBufferDepth = simpleGet id glut_WINDOW_DEPTH_SIZE +depthBufferDepth :: GettableStateVar BufferDepth +depthBufferDepth = + makeGettableStateVar $ simpleGet fromIntegral glut_WINDOW_DEPTH_SIZE hunk ./Graphics/UI/GLUT/State.hs 134 --- | Return the number of bits in the stencil buffer of the /current window\'s/ --- current layer. +-- | Contains the number of bits in the stencil buffer of the /current +-- window\'s/ current layer. hunk ./Graphics/UI/GLUT/State.hs 137 -getStencilBufferDepth :: IO BufferDepth -getStencilBufferDepth = simpleGet id glut_WINDOW_STENCIL_SIZE +stencilBufferDepth :: GettableStateVar BufferDepth +stencilBufferDepth = + makeGettableStateVar $ simpleGet fromIntegral glut_WINDOW_STENCIL_SIZE hunk ./Graphics/UI/GLUT/State.hs 143 -type SampleCount = CInt +type SampleCount = Int hunk ./Graphics/UI/GLUT/State.hs 145 --- | Return the number of samples for multisampling for the /current window./ +-- | Contains the number of samples for multisampling for the /current window./ hunk ./Graphics/UI/GLUT/State.hs 147 -getSampleCount :: IO SampleCount -getSampleCount = simpleGet id glut_WINDOW_NUM_SAMPLES +sampleCount :: GettableStateVar SampleCount +sampleCount = + makeGettableStateVar $ simpleGet fromIntegral glut_WINDOW_NUM_SAMPLES hunk ./Graphics/UI/GLUT/State.hs 151 --- | Return the window system dependent format ID for the current layer of the +-- | Contains the window system dependent format ID for the current layer of the hunk ./Graphics/UI/GLUT/State.hs 156 -getFormatID :: IO CInt -getFormatID = simpleGet id glut_WINDOW_FORMAT_ID +formatID :: GettableStateVar Int +formatID = makeGettableStateVar $ simpleGet fromIntegral glut_WINDOW_FORMAT_ID hunk ./Graphics/UI/GLUT/State.hs 169 --- | Test if the normal plane of the /current window/ has been damaged (by --- window system activity) since the last display callback was triggered. --- Calling 'Graphics.UI.GLUT.Window.postRedisplay' will not set this 'True'. - -isNormalDamaged :: IO Bool -isNormalDamaged = layerGet i2b glut_NORMAL_DAMAGED - --- | Test if the overlay plane of the /current window/ has been damaged (by --- window system activity) since the last display callback was triggered. --- Calling 'Graphics.UI.GLUT.Window.postRedisplay' or +-- | Contains 'True' if the given plane of the /current window/ has been +-- damaged (by window system activity) since the last display callback was +-- triggered. Calling 'Graphics.UI.GLUT.Window.postRedisplay' or hunk ./Graphics/UI/GLUT/State.hs 173 --- Return 'Nothing' if no overlay is in use. hunk ./Graphics/UI/GLUT/State.hs 174 -isOverlayDamaged :: IO (Maybe Bool) -isOverlayDamaged = layerGet i2mb glut_OVERLAY_DAMAGED +damaged :: Layer -> GettableStateVar Bool +damaged l = makeGettableStateVar $ layerGet isDamaged (marshalDamagedLayer l) + where isDamaged d = d /= 0 && d /= -1 + marshalDamagedLayer Normal = glut_NORMAL_DAMAGED + marshalDamagedLayer Overlay = glut_OVERLAY_DAMAGED hunk ./Graphics/UI/GLUT/State.hs 218 -type ButtonCount = CInt +type ButtonCount = Int hunk ./Graphics/UI/GLUT/State.hs 226 - deviceGet id glut_NUM_MOUSE_BUTTONS + deviceGet fromIntegral glut_NUM_MOUSE_BUTTONS hunk ./Graphics/UI/GLUT/State.hs 236 - deviceGet id glut_NUM_SPACEBALL_BUTTONS + deviceGet fromIntegral glut_NUM_SPACEBALL_BUTTONS hunk ./Graphics/UI/GLUT/State.hs 242 -type DialCount = CInt +type DialCount = Int hunk ./Graphics/UI/GLUT/State.hs 250 - d <- deviceGet id glut_NUM_DIALS - b <- deviceGet id glut_NUM_BUTTON_BOX_BUTTONS + d <- deviceGet fromIntegral glut_NUM_DIALS + b <- deviceGet fromIntegral glut_NUM_BUTTON_BOX_BUTTONS hunk ./Graphics/UI/GLUT/State.hs 262 - deviceGet id glut_NUM_TABLET_BUTTONS + deviceGet fromIntegral glut_NUM_TABLET_BUTTONS hunk ./Graphics/UI/GLUT/State.hs 268 -type AxisCount = CInt +type AxisCount = Int hunk ./Graphics/UI/GLUT/State.hs 272 -type PollRate = CInt +type PollRate = Int hunk ./Graphics/UI/GLUT/State.hs 281 - b <- deviceGet id glut_JOYSTICK_BUTTONS - a <- deviceGet id glut_JOYSTICK_AXES - r <- deviceGet id glut_JOYSTICK_POLL_RATE + b <- deviceGet fromIntegral glut_JOYSTICK_BUTTONS + a <- deviceGet fromIntegral glut_JOYSTICK_AXES + r <- deviceGet fromIntegral glut_JOYSTICK_POLL_RATE hunk ./Graphics/UI/GLUT/State.hs 292 -i2mb :: CInt -> Maybe Bool -i2mb i = if i < 0 then Nothing else Just (i /= 0) - hunk ./Graphics/UI/GLUT/Window.hs 196 --- status (returned by 'Graphics.UI.GLUT.State.isNormalDamaged'). +-- status (see 'Graphics.UI.GLUT.State.damaged'). hunk ./Graphics/UI/GLUT.hs 76 --- The original documentation, on which this one is very heavily based, is --- Copyright (c) 1994, 1995, 1996 by Mark J. Kilgard, Silicon Graphics, --- Inc., and is available at --- . --- No part of this documentation may be reproduced, in any form or by any --- means, without permission in writing from the original author. +-- This documentation is heavily based on the man pages of Mark J. Kilgard\'s +-- GLUT library. hunk ./examples/RedBook/Hello.hs 21 - withBeginMode Polygon $ mapM_ vertex [ + renderPrimitive Polygon $ mapM_ vertex [ hunk ./examples/RedBook/Smooth.hs 23 - withBeginMode Triangles $ do + renderPrimitive Triangles $ do hunk ./examples/RedBook/Hello.hs 21 - renderPrimitive Polygon $ mapM_ vertex [ + -- resolve overloading, not needed in "real" programs + let vertex3f = vertex :: Vertex3 GLfloat -> IO () + renderPrimitive Polygon $ mapM_ vertex3f [ hunk ./examples/RedBook/Hello.hs 27 - Vertex3 0.25 0.75 (0.0 :: GLfloat)] + Vertex3 0.25 0.75 0.0] hunk ./examples/RedBook/Hello.hs 53 - initialDisplayMode $= [ Single, GLUT.RGB ] - initialWindowSize $= Size 250 250 + initialDisplayMode $= [ Single, GLUT.RGB ] + initialWindowSize $= Size 250 250 hunk ./examples/RedBook/Smooth.hs 23 - renderPrimitive Triangles $ do - color (Color3 1 0 (0 :: GLfloat)) - vertex (Vertex2 5 (5 :: GLfloat)) - color (Color3 0 1 (0 :: GLfloat)) - vertex (Vertex2 25 (5 :: GLfloat)) - color (Color3 0 0 (1 :: GLfloat)) - vertex (Vertex2 5 (25 :: GLfloat)) + -- resolve overloading, not needed in "real" programs + let vertex2f = vertex :: Vertex2 GLfloat -> IO () + color3f = color :: Color3 GLfloat -> IO () + in renderPrimitive Triangles $ do + color3f (Color3 1 0 0) + vertex2f (Vertex2 5 5) + color3f (Color3 0 1 0) + vertex2f (Vertex2 25 5) + color3f (Color3 0 0 1) + vertex2f (Vertex2 5 25) hunk ./examples/RedBook/Smooth.hs 47 - if (w <= h) + if w <= h hunk ./examples/RedBook/Smooth.hs 59 - initialDisplayMode $= [ Single, GLUT.RGB ] - initialWindowSize $= Size 500 500 + initialDisplayMode $= [ Single, GLUT.RGB ] + initialWindowSize $= Size 500 500 hunk ./examples/RedBook/Smooth.hs 64 - displayCallback $= display - reshapeCallback $= Just reshape + displayCallback $= display + reshapeCallback $= Just reshape hunk ./LICENSE 1 -Copyright (c) 2002, Sven Panne +Copyright (c) 2003, Sven Panne hunk ./examples/RedBook/Makefile 2 -# $Id: Makefile,v 1.2 2003/03/07 18:50:37 panne Exp $ +# $Id: Makefile,v 1.3 2003/05/11 20:36:55 panne Exp $ hunk ./examples/RedBook/Makefile 14 -SRC_HC_OPTS += -package GLUT +SRC_HC_OPTS += -Wall -O -package GLUT addfile ./examples/RedBook/Fog.hs hunk ./examples/RedBook/Fog.hs 1 +{- + Fog.hs (adapted from fog.c which is (c) Silicon Graphics, Inc) + Copyright (c) Sven Panne 2003 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program draws 5 red spheres, each at a different + z distance from the eye, in different types of fog. + Pressing the f key chooses between 3 types of + fog: exponential, exponential squared, and linear. + In this program, there is a fixed density value, as well + as fixed start and end values for the linear fog. +-} + +import Data.Char ( toLower ) +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) + +import Graphics.Rendering.OpenGL +import Graphics.UI.GLUT as GLUT + +myInit :: IO () +myInit = do + depthTest $= True + + position (Light 0) $= Vertex4 0.5 0.5 3.0 0.0 + lighting $= True + lightEnabled (Light 0) $= True + + -- NOTE: The alpha values are missing from fog.c! + materialAmbient Front $= Color4 0.1745 0.01175 0.01175 1.0 + materialDiffuse Front $= Color4 0.61424 0.04136 0.04136 1.0 + materialSpecular Front $= Color4 0.727811 0.626959 0.626959 1.0 + materialShininess Front $= 0.6 * 128 + + fog $= True + let c = Color4 0.5 0.5 0.5 1.0 + fogMode $= Exp 0.35 + fogColor $= c + fogHint $= DontCare + clearColor $= c + +renderSpehere :: Vector3 GLfloat -> IO () +renderSpehere xyz = + matrixExcursion $ do + translate xyz + renderObject Solid (GLUT.Sphere 0.4 16 16) + +-- display draws 5 spheres at different z positions. +display :: DisplayCallback +display = do + clear [ ColorBuffer, DepthBuffer ] + mapM_ renderSpehere [ Vector3 x (-0.5) (-3 - x) | x <- [-2 .. 2] ] + flush + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + let wf = fromIntegral w + hf = fromIntegral h + if w <= h + then ortho (-2.5) 2.5 (-2.5*hf/wf) (2.5*hf/wf) (-10.0) 10.0 + else ortho (-2.5*wf/hf) (2.5*wf/hf) (-2.5) 2.5 (-10.0) 10.0 + matrixMode $= Modelview 0 + loadIdentity + +keyboard :: KeyboardMouseCallback +keyboard (Char c) Down _ _ = case toLower c of + 'f' -> do + mode <- get fogMode + case mode of + Linear _ _ -> do fogMode $= Exp 0.35; putStrLn "Fog mode is Exp" + Exp _ -> do fogMode $= Exp2 0.35; putStrLn "Fog mode is Exp2" + Exp2 _ -> do fogMode $= Linear 1 5; putStrLn "Fog mode is Linear" + FogCoordinate -> error "Huh?" + postRedisplay Nothing + '\27' -> exitWith ExitSuccess + _ -> return () +keyboard _ _ _ _ = return () + +-- Main Loop +-- Open window with initial window size, title bar, +-- RGBA display mode, depth buffer, and handle input events. +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ Single, GLUT.RGB, Depth ] + initialWindowSize $= Size 500 500 + createWindow progName + myInit + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just keyboard + displayCallback $= display + mainLoop hunk ./Makefile 2 -# $Id: Makefile,v 1.15 2003/03/02 19:30:20 panne Exp $ hunk ./cbits/Makefile 2 -# $Id: Makefile,v 1.1 2002/05/26 19:46:14 panne Exp $ hunk ./examples/Makefile 2 -# $Id: Makefile,v 1.1 2003/03/02 19:30:20 panne Exp $ hunk ./examples/RedBook/Makefile 2 -# $Id: Makefile,v 1.3 2003/05/11 20:36:55 panne Exp $ hunk ./include/Makefile 2 -# $Id: Makefile,v 1.2 2002/06/20 16:13:33 simonmar Exp $ adddir ./examples/Misc addfile ./examples/Misc/FogCoordinate.hs addfile ./examples/Misc/Makefile hunk ./examples/Makefile 8 -SUBDIRS = RedBook +SUBDIRS = RedBook Misc hunk ./examples/Misc/FogCoordinate.hs 1 +{- + FogCoordinat.hs (adapted from smooth.c which is (c) Silicon Graphics, Inc.) + Copyright (c) Sven Panne 2003 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program demonstrates per-vertex fog coordinates. +-} + +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) + +import Graphics.Rendering.OpenGL +import Graphics.UI.GLUT as GLUT + +myInit :: IO () +myInit = do + let c = Color4 0.5 0.5 0.5 1.0 + clearColor $= c + fogColor $= c + fog $= True + fogMode $= FogCoordinate + shadeModel $= Smooth + +triangle :: IO () +triangle = + -- resolve overloading, not needed in "real" programs + let vertex2f = vertex :: Vertex2 GLfloat -> IO () + fogCoordf = fogCoord :: FogCoord1 GLfloat -> IO () + color3f = color :: Color3 GLfloat -> IO () + in renderPrimitive Triangles $ do + color3f (Color3 1 0 0) + fogCoordf (FogCoord1 0.0) + vertex2f (Vertex2 5 5) + color3f (Color3 0 1 0) + fogCoordf (FogCoord1 0.5) + vertex2f (Vertex2 25 5) + color3f (Color3 0 0 1) + fogCoordf (FogCoord1 1.0) + vertex2f (Vertex2 5 25) + +display :: DisplayCallback +display = do + clear [ ColorBuffer ] + triangle + flush + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + let wf = fromIntegral w + hf = fromIntegral h + if w <= h + then ortho2D 0 30 0 (30 * hf/wf) + else ortho2D 0 (30 * wf/hf) 0 30 + matrixMode $= Modelview 0 + +keyboard :: KeyboardMouseCallback +keyboard (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard _ _ _ _ = return () + +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ Single, GLUT.RGB ] + initialWindowSize $= Size 500 500 + initialWindowPosition $= Position 100 100 + createWindow progName + myInit + displayCallback $= display + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just keyboard + mainLoop hunk ./examples/Misc/Makefile 1 +# ----------------------------------------------------------------------------- + +TOP = ../../.. +include $(TOP)/mk/boilerplate.mk + +# ----------------------------------------------------------------------------- + +EXAMPLES := $(wildcard *.hs) +BINS := $(EXAMPLES:.hs=) +CLEAN_FILES += $(addsuffix $(exeext), $(BINS)) + +HC = $(GHC_INPLACE) +SRC_HC_OPTS += -Wall -O -package GLUT + +all:: $(BINS) + +$(BINS): %$(exeext): %.o + $(HC) -o $@ $(HC_OPTS) $(LD_OPTS) $< + +# ----------------------------------------------------------------------------- + +include $(TOP)/mk/target.mk hunk ./Graphics/UI/GLUT/Initialization.hs 35 - DisplayMode(..), initialDisplayMode, isDisplayModePossible, + DisplayMode(..), initialDisplayMode, displayModePossible, hunk ./Graphics/UI/GLUT/Initialization.hs 53 - SettableStateVar, makeSettableStateVar, StateVar, makeStateVar ) + GettableStateVar, makeGettableStateVar, + SettableStateVar, makeSettableStateVar, + StateVar, makeStateVar ) hunk ./Graphics/UI/GLUT/Initialization.hs 275 --- | Test whether the /current display mode/ is supported or not. +-- | Contains 'True' if the /current display mode/ is supported, 'False' +-- otherwise. hunk ./Graphics/UI/GLUT/Initialization.hs 278 -isDisplayModePossible :: IO Bool -isDisplayModePossible = simpleGet (/= 0) glut_DISPLAY_MODE_POSSIBLE +displayModePossible :: GettableStateVar Bool +displayModePossible = + makeGettableStateVar $ simpleGet (/= 0) glut_DISPLAY_MODE_POSSIBLE hunk ./examples/RedBook/Fog.hs 76 - FogCoordinate -> error "Huh?" hunk ./examples/Misc/FogCoordinate.hs 20 - fog $= True - fogMode $= FogCoordinate + fogMode $= Exp2 0.4; + fogCoordinateSource $= FogCoordinate hunk ./examples/Misc/FogCoordinate.hs 32 - fogCoordf (FogCoord1 0.0) + fogCoordf (FogCoord1 0) hunk ./examples/Misc/FogCoordinate.hs 35 - fogCoordf (FogCoord1 0.5) - vertex2f (Vertex2 25 5) + fogCoordf (FogCoord1 3) + vertex2f (Vertex2 12.5 5) hunk ./examples/Misc/FogCoordinate.hs 38 - fogCoordf (FogCoord1 1.0) + fogCoordf (FogCoord1 7) hunk ./examples/Misc/FogCoordinate.hs 44 + fog $= False hunk ./examples/Misc/FogCoordinate.hs 46 + matrixExcursion $ do + let translatef = translate :: Vector3 GLfloat -> IO () + translatef (Vector3 12.5 0 0) + fog $= True + triangle hunk ./examples/Misc/FogCoordinate.hs 2 - FogCoordinat.hs (adapted from smooth.c which is (c) Silicon Graphics, Inc.) + FogCoordinate.hs (adapted from smooth.c which is (c) Silicon Graphics, Inc.) hunk ./GLUT.conf.in 7 - import_dirs = [ "$libdir/imports/GLUT" ], + import_dirs = [ "$libdir/imports" ], addfile ./package.conf.in hunk ./GLUT.conf.in 1 -#include "config.h" - -Package { - name = "GLUT", - auto = True, -#ifdef INSTALLING - import_dirs = [ "$libdir/imports" ], -#else - import_dirs = [ "$libdir/libraries/GLUT" ], -#endif - source_dirs = [], -#ifdef INSTALLING - library_dirs = [ "$libdir" ], -#else - library_dirs = [ "$libdir/libraries/GLUT" - , "$libdir/libraries/GLUT/cbits" ], -#endif - hs_libraries = [ "HSGLUT" ], - extra_libraries = [ "HSGLUT_cbits"], -#ifdef INSTALLING - include_dirs = [], -#else - include_dirs = [ "$libdir/libraries/GLUT/include" ], -#endif - c_includes = [ "HsGLUT.h" ], - package_deps = [ "base", "OpenGL" ], - extra_ghc_opts = [], - extra_cc_opts = [ "" GL_CFLAGS ], - extra_ld_opts = [ "" GL_LIBS ] -} rmfile ./GLUT.conf.in hunk ./package.conf.in 1 +#include "config.h" + +Package { + name = "GLUT", + auto = True, +#ifdef INSTALLING + import_dirs = [ "$libdir/imports" ], +#else + import_dirs = [ "$libdir/libraries/GLUT" ], +#endif + source_dirs = [], +#ifdef INSTALLING + library_dirs = [ "$libdir" ], +#else + library_dirs = [ "$libdir/libraries/GLUT" + , "$libdir/libraries/GLUT/cbits" ], +#endif + hs_libraries = [ "HSGLUT" ], + extra_libraries = [ "HSGLUT_cbits"], +#ifdef INSTALLING + include_dirs = [], +#else + include_dirs = [ "$libdir/libraries/GLUT/include" ], +#endif + c_includes = [ "HsGLUT.h" ], + package_deps = [ "base", "OpenGL" ], + extra_ghc_opts = [], + extra_cc_opts = [ "" GL_CFLAGS ], + extra_ld_opts = [ "" GL_LIBS ] +} hunk ./Makefile 29 -# yeuch, have to get GL_CFLAGS & GL_LIBS in through CPP to GLUT.conf.in +# yeuch, have to get GL_CFLAGS & GL_LIBS in through CPP to package.conf.in hunk ./examples/RedBook/Fog.hs 27 - lightEnabled (Light 0) $= True + light (Light 0) $= True hunk ./Makefile 28 - -# yeuch, have to get GL_CFLAGS & GL_LIBS in through CPP to package.conf.in -comma = , -PACKAGE_CPP_OPTS += -DGL_CFLAGS='$(patsubst %,$(comma)"%",$(GL_CFLAGS))' -PACKAGE_CPP_OPTS += -DGL_LIBS='$(patsubst %,$(comma)"%",$(GL_LIBS))' hunk ./package.conf.in 28 - extra_cc_opts = [ "" GL_CFLAGS ], - extra_ld_opts = [ "" GL_LIBS ] + extra_cc_opts = [], + extra_ld_opts = [] hunk ./examples/Misc/Makefile 9 -BINS := $(EXAMPLES:.hs=) -CLEAN_FILES += $(addsuffix $(exeext), $(BINS)) +BINS := $(addsuffix $(exeext),$(EXAMPLES:.hs=)) +CLEAN_FILES += $(BINS) hunk ./examples/RedBook/Makefile 9 -BINS := $(EXAMPLES:.hs=) -CLEAN_FILES += $(addsuffix $(exeext), $(BINS)) +BINS := $(addsuffix $(exeext),$(EXAMPLES:.hs=)) +CLEAN_FILES += $(BINS) hunk ./cbits/HsGLUT.c 4 - * Copyright : (c) Sven Panne 2002 + * Copyright : (c) Sven Panne 2003 hunk ./cbits/HsGLUT.c 8 - * Stability : experimental + * Stability : provisional hunk ./include/HsGLUT.h 4 - * Copyright : (c) Sven Panne 2002 + * Copyright : (c) Sven Panne 2003 hunk ./include/HsGLUT.h 8 - * Stability : experimental + * Stability : provisional hunk ./examples/RedBook/Fog.hs 23 - depthTest $= True + depthFunc $= Just Less hunk ./examples/RedBook/Fog.hs 39 - fogHint $= DontCare + hint Fog $= DontCare addfile ./examples/RedBook/Select.hs hunk ./examples/RedBook/Select.hs 1 +{- + Select.hs (adapted from select.c which is (c) Silicon Graphics, Inc.) + Copyright (c) Sven Panne 2003 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This is an illustration of the selection mode and name stack, which detects + whether objects which collide with a viewing volume. First, four triangles + and a rectangular box representing a viewing volume are drawn (drawScene + routine). The green triangle and yellow triangles appear to lie within the + viewing volume, but the red triangle appears to lie outside it. Then the + selection mode is entered (selectObjects routine). Drawing to the screen + ceases. To see if any collisions occur, the four triangles are called. In + this example, the green triangle causes one hit with the name 1, and the + yellow triangles cause one hit with the name 3. +-} + +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) + +import Graphics.Rendering.OpenGL +import Graphics.UI.GLUT as GLUT + +-- draw a triangle with vertices at (x1, y1), (x2, y2) and (x3, y3) at z units +-- away from the origin. +drawTriangle :: + Vertex2 GLfloat -> Vertex2 GLfloat -> Vertex2 GLfloat -> GLfloat -> IO () +drawTriangle (Vertex2 x1 y1) (Vertex2 x2 y2) (Vertex2 x3 y3) z = do + renderPrimitive Triangles $ mapM_ vertex [ + Vertex3 x1 y1 z, + Vertex3 x2 y2 z, + Vertex3 x3 y3 z] + +-- draw a rectangular box with these outer x, y, and z values +drawViewVolume :: Vertex3 GLfloat -> Vertex3 GLfloat -> IO () +drawViewVolume (Vertex3 x1 y1 z1) (Vertex3 x2 y2 z2) = do + -- resolve overloading, not needed in "real" programs + let color3f = color :: Color3 GLfloat -> IO () + color3f (Color3 1 1 1) + renderPrimitive LineLoop $ mapM_ vertex [ + Vertex3 x1 y1 (-z1), + Vertex3 x2 y1 (-z1), + Vertex3 x2 y2 (-z1), + Vertex3 x1 y2 (-z1)] + + renderPrimitive LineLoop $ mapM_ vertex [ + Vertex3 x1 y1 (-z2), + Vertex3 x2 y1 (-z2), + Vertex3 x2 y2 (-z2), + Vertex3 x1 y2 (-z2)] + + renderPrimitive Lines $ mapM_ vertex [ -- 4 lines + Vertex3 x1 y1 (-z1), + Vertex3 x1 y1 (-z2), + Vertex3 x1 y2 (-z1), + Vertex3 x1 y2 (-z2), + Vertex3 x2 y1 (-z1), + Vertex3 x2 y1 (-z2), + Vertex3 x2 y2 (-z1), + Vertex3 x2 y2 (-z2)] + +-- drawScene draws 4 triangles and a wire frame which represents the viewing +-- volume. +drawScene :: IO () +drawScene = do + matrixMode $= Projection + loadIdentity + perspective 40 (4/3) 1 100 + + matrixMode $= Modelview 0 + loadIdentity + lookAt (Vertex3 7.5 7.5 12.5) (Vertex3 2.5 2.5 (-5)) (Vector3 0 1 0) + -- resolve overloading, not needed in "real" programs + let color3f = color :: Color3 GLfloat -> IO () + color3f (Color3 0 1 0) -- green triangle + drawTriangle (Vertex2 2 2) (Vertex2 3 2) (Vertex2 2.5 3) (-5) + color3f (Color3 1 0 0) -- red triangle + drawTriangle (Vertex2 2 7) (Vertex2 3 7) (Vertex2 2.5 8) (-5) + color3f (Color3 1 1 0) -- yellow triangles + drawTriangle (Vertex2 2 2) (Vertex2 3 2) (Vertex2 2.5 3) (-1) + drawTriangle (Vertex2 2 2) (Vertex2 3 2) (Vertex2 2.5 3) (-9) + drawViewVolume (Vertex3 0 0 0) (Vertex3 5 5 10) + +processHits :: Maybe [HitRecord] -> IO () +processHits Nothing = putStrLn "selection buffer overflow" +processHits (Just hitRecords) = do + putStrLn ("hits = " ++ show (length hitRecords)) + mapM_ (\(HitRecord z1 z2 names) -> do + putStrLn (" number of names for hit = " ++ show (length names)) + putStr (" z1 is " ++ show z1) + putStrLn ("; z2 is " ++ show z2) + putStr " the name is" + sequence_ [ putStr (" " ++ show n) | SelectionName n <- names ] + putChar '\n') + hitRecords + +-- selectObjects "draws" the triangles in selection mode, assigning names for +-- the triangles. Note that the third and fourth triangles share one name, so +-- that if either or both triangles intersects the viewing/clipping volume, +-- only one hit will be registered. + +bufSize :: GLsizei +bufSize = 512 + +selectObjects :: IO () +selectObjects = do + (_, maybeHitRecords) <- withSelection bufSize $ do + withName (SelectionName 0) $ do + matrixExcursion $ do + matrixMode $= Projection + loadIdentity + ortho 0 5 0 5 0 10 + matrixMode $= Modelview 0 + loadIdentity + loadName (SelectionName 1) + drawTriangle (Vertex2 2 2) (Vertex2 3 2) (Vertex2 2.5 3) (-5) + loadName (SelectionName 2) + drawTriangle (Vertex2 2 7) (Vertex2 3 7) (Vertex2 2.5 8) (-5) + loadName (SelectionName 3) + drawTriangle (Vertex2 2 2) (Vertex2 3 2) (Vertex2 2.5 3) (-1) + drawTriangle (Vertex2 2 2) (Vertex2 3 2) (Vertex2 2.5 3) (-9) + flush + processHits maybeHitRecords + +myInit :: IO () +myInit = do + depthFunc $= Just Less + shadeModel $= Flat + +display :: DisplayCallback +display = do + clearColor $= Color4 0 0 0 0 + clear [ ColorBuffer, DepthBuffer ] + drawScene + selectObjects + flush + +keyboard :: KeyboardMouseCallback +keyboard (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard _ _ _ _ = return () + +-- Main Loop +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ Single, GLUT.RGB, Depth ] + initialWindowSize $= Size 200 200 + initialWindowPosition $= Position 100 100 + createWindow progName + myInit + displayCallback $= display + keyboardMouseCallback $= Just keyboard + mainLoop hunk ./examples/RedBook/Fog.hs 7 - This program draws 5 red spheres, each at a different - z distance from the eye, in different types of fog. - Pressing the f key chooses between 3 types of - fog: exponential, exponential squared, and linear. - In this program, there is a fixed density value, as well - as fixed start and end values for the linear fog. + This program draws 5 red spheres, each at a different z distance from the + eye, in different types of fog. Pressing the f key chooses between 3 types + of fog: exponential, exponential squared, and linear. In this program, there + is a fixed density value, as well as fixed start and end values for the + linear fog. hunk ./examples/RedBook/Fog.hs 80 --- Main Loop --- Open window with initial window size, title bar, --- RGBA display mode, depth buffer, and handle input events. +-- Main Loop: Open window with initial window size, title bar, RGBA display +-- mode, depth buffer, and handle input events. hunk ./examples/RedBook/Hello.hs 43 -{- - Declare initial window size, position, and display mode - (single buffer and RGBA). Open window with "hello" - in its title bar. Call initialization routines. - Register callback function to display graphics. - Enter main loop and process events. --} + +-- Declare initial window size, position, and display mode (single buffer and +-- RGBA). Open window with "hello" in its title bar. Call initialization +-- routines. Register callback function to display graphics. Enter main loop and +-- process events. hunk ./examples/RedBook/Smooth.hs 7 - This program demonstrates smooth shading. - A smooth shaded polygon is drawn in a 2-D projection. + This program demonstrates smooth shading. A smooth shaded polygon is drawn in + a 2-D projection. addfile ./examples/RedBook/PickDepth.hs addfile ./examples/RedBook/PickSquare.hs hunk ./examples/RedBook/PickDepth.hs 1 +{- + PickDepth.hs (adapted from pickdepth.c which is (c) Silicon Graphics, Inc.) + Copyright (c) Sven Panne 2003 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + Picking is demonstrated in this program. In rendering mode, three + overlapping rectangles are drawn. When the left mouse button is pressed, + selection mode is entered with the picking matrix. Rectangles which are drawn + under the cursor position are "picked." Pay special attention to the depth + value range, which is returned. +-} + +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) + +import Graphics.Rendering.OpenGL +import Graphics.UI.GLUT as GLUT + +myInit :: IO () +myInit = do + clearColor $= Color4 0 0 0 0 + depthFunc $= Just Less + shadeModel $= Flat + depthRange $= (0, 1) -- The default z mapping + +-- The nine squares are drawn. Each square is given two names: one for the row +-- and the other for the column on the grid. The color of each square is +-- determined by its position on the grid, and the value in the board array. +-- Note: In contrast to the the original example, we always give names to +-- squares, regardless of the render mode. This simplifies the code a bit and +-- is even suggested by the Red Book. + +-- The three rectangles are drawn, each with a different name. Note that each +-- rectangle is drawn with a different z value. Note: In contrast to the the +-- original example, we always give names to squares, regardless of the render +-- mode. This simplifies the code a bit and is even suggested by the Red Book. +drawRects :: IO () +drawRects = do + -- resolve overloading, not needed in "real" programs + let color3 = color :: Color3 GLfloat -> IO () + vertex3 = vertex :: Vertex3 GLint -> IO () + loadName (SelectionName 1) + renderPrimitive Quads $ do + color3 (Color3 1.0 1.0 0.0) + vertex3 (Vertex3 2 0 0) + vertex3 (Vertex3 2 6 0) + vertex3 (Vertex3 6 6 0) + vertex3 (Vertex3 6 0 0) + loadName (SelectionName 2) + renderPrimitive Quads $ do + color3 (Color3 0.0 1.0 1.0) + vertex3 (Vertex3 3 2 (-1)) + vertex3 (Vertex3 3 8 (-1)) + vertex3 (Vertex3 8 8 (-1)) + vertex3 (Vertex3 8 2 (-1)) + loadName (SelectionName 3) + renderPrimitive Quads $ do + color3 (Color3 1.0 0.0 1.0) + vertex3 (Vertex3 0 2 (-2)) + vertex3 (Vertex3 0 7 (-2)) + vertex3 (Vertex3 5 7 (-2)) + vertex3 (Vertex3 5 2 (-2)) + +-- processHits prints the hit records. +processHits :: Maybe[HitRecord] -> IO () +processHits Nothing = putStrLn "selection buffer overflow" +processHits (Just hitRecords) = do + putStrLn ("hits = " ++ show (length hitRecords)) + mapM_ (\(HitRecord z1 z2 names) -> do + putStrLn (" number of names for hit = " ++ show (length names)) + putStr (" z1 is " ++ show z1) + putStrLn ("; z2 is " ++ show z2) + putStr " the name is" + sequence_ [ putStr (" " ++ show n) | SelectionName n <- names ] + putChar '\n') + hitRecords + +-- pickRects() sets up selection mode, name stack, and projection matrix for +-- picking. Then the objects are drawn. + +bufSize :: GLsizei +bufSize = 512 + +pickRects :: KeyboardMouseCallback +pickRects (MouseButton LeftButton) Down _ (Position x y) = do + vp@(_, (Size _ height)) <- get viewport + (_, maybeHitRecords) <- withSelection bufSize $ + withName (SelectionName 0) $ do + matrixMode $= Projection + matrixExcursion $ do + loadIdentity + -- create 5x5 pixel picking region near cursor location + pickMatrix (fromIntegral x, fromIntegral height - fromIntegral y) (5, 5) vp + ortho 0 8 0 8 (-0.5) 2.5 + drawRects + flush + processHits maybeHitRecords + postRedisplay Nothing +pickRects (Char '\27') Down _ _ = exitWith ExitSuccess +pickRects _ _ _ _ = return () + +display :: DisplayCallback +display = do + clear [ ColorBuffer, DepthBuffer ] + drawRects + flush + +reshape :: ReshapeCallback +reshape size = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + ortho 0 8 0 8 (-0.5) 2.5 + matrixMode $= Modelview 0 + loadIdentity + +-- Main Loop +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ Single, GLUT.RGB, Depth ] + initialWindowSize $= Size 200 200 + initialWindowPosition $= Position 100 100 + createWindow progName + myInit + reshapeCallback $= Just reshape + displayCallback $= display + keyboardMouseCallback $= Just pickRects + mainLoop hunk ./examples/RedBook/PickSquare.hs 1 +{- + PickSquare.hs (adapted from picksquare.c which is (c) Silicon Graphics, Inc.) + Copyright (c) Sven Panne 2003 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + Use of multiple names and picking are demonstrated. A 3x3 grid of squares is + drawn. When the left mouse button is pressed, all squares under the cursor + position have their color changed. +-} + +import Data.Array ( Array, listArray, (!) ) +import Data.IORef ( IORef, newIORef, readIORef, modifyIORef ) +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) + +import Graphics.Rendering.OpenGL +import Graphics.UI.GLUT as GLUT + +type Board = Array (GLint,GLint) (IORef Int) + +-- Clear color value for every square on the board +myInit :: IO Board +myInit = do + clearColor $= Color4 0 0 0 0 + refs <- sequence . replicate 9 . newIORef $ 0 + return $ listArray ((0,0),(2,2)) refs + +-- The nine squares are drawn. Each square is given two names: one for the row +-- and the other for the column on the grid. The color of each square is +-- determined by its position on the grid, and the value in the board array. +-- Note: In contrast to the the original example, we always give names to +-- squares, regardless of the render mode. This simplifies the code a bit and +-- is even suggested by the Red Book. +drawSquares :: Board -> IO () +drawSquares board = + mapM_ (\i -> do + loadName (SelectionName (fromIntegral i)) + mapM_ (\j -> + withName (SelectionName (fromIntegral j)) $ do + val <- readIORef (board ! (i,j)) + -- resolve overloading, not needed in "real" programs + let color3f = color :: Color3 GLfloat -> IO () + color3f (Color3 (fromIntegral i / 3.0) + (fromIntegral j / 3.0) + (fromIntegral val / 3.0)) + rect (Vertex2 i j) (Vertex2 (i + 1) (j + 1))) + [ 0 .. 2 ]) + [ 0 .. 2 ] + +-- processHits prints the hit records and updates the board array. +processHits :: Maybe[HitRecord] -> Board -> IO () +processHits Nothing _ = putStrLn "selection buffer overflow" +processHits (Just hitRecords) board = do + putStrLn ("hits = " ++ show (length hitRecords)) + mapM_ (\(HitRecord z1 z2 names) -> do + putStrLn (" number of names for this hit = " ++ show (length names)) + putStr (" z1 is " ++ show z1) + putStrLn ("; z2 is " ++ show z2) + putStr " names are" + sequence_ [ putStr (" " ++ show n) | SelectionName n <- names ] + putChar '\n' + let [i, j] = [ fromIntegral n | SelectionName n <- names ] + modifyIORef (board ! (i,j)) (\x -> (x + 1) `mod` 3)) + hitRecords + +-- pickSquares sets up selection mode, name stack, and projection matrix for +-- picking. Then the objects are drawn. + +bufSize :: GLsizei +bufSize = 512 + +pickSquares :: Board -> KeyboardMouseCallback +pickSquares board (MouseButton LeftButton) Down _ (Position x y) = do + vp@(_, (Size _ height)) <- get viewport + (_, maybeHitRecords) <- withSelection bufSize $ + withName (SelectionName 0) $ do + matrixMode $= Projection + matrixExcursion $ do + loadIdentity + -- create 5x5 pixel picking region near cursor location + pickMatrix (fromIntegral x, fromIntegral height - fromIntegral y) (5, 5) vp + ortho2D 0 3 0 3 + drawSquares board + flush + processHits maybeHitRecords board + postRedisplay Nothing +pickSquares _ (Char '\27') Down _ _ = exitWith ExitSuccess +pickSquares _ _ _ _ _ = return () + +display :: Board -> DisplayCallback +display board = do + clear [ ColorBuffer ] + drawSquares board + flush + +reshape :: ReshapeCallback +reshape size = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + ortho2D 0 3 0 3 + matrixMode $= Modelview 0 + loadIdentity + +-- Main Loop +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ Single, GLUT.RGB ] + initialWindowSize $= Size 100 100 + initialWindowPosition $= Position 100 100 + createWindow progName + board <- myInit + reshapeCallback $= Just reshape + displayCallback $= display board + keyboardMouseCallback $= Just (pickSquares board) + mainLoop hunk ./examples/Misc/FogCoordinate.hs 44 - fog $= False + fog $= Disabled hunk ./examples/Misc/FogCoordinate.hs 49 - fog $= True + fog $= Enabled hunk ./examples/RedBook/Fog.hs 25 - lighting $= True - light (Light 0) $= True + lighting $= Enabled + light (Light 0) $= Enabled hunk ./examples/RedBook/Fog.hs 34 - fog $= True + fog $= Enabled hunk ./examples/RedBook/PickDepth.hs 42 - loadName (SelectionName 1) + loadName (Name 1) hunk ./examples/RedBook/PickDepth.hs 49 - loadName (SelectionName 2) + loadName (Name 2) hunk ./examples/RedBook/PickDepth.hs 56 - loadName (SelectionName 3) + loadName (Name 3) hunk ./examples/RedBook/PickDepth.hs 74 - sequence_ [ putStr (" " ++ show n) | SelectionName n <- names ] + sequence_ [ putStr (" " ++ show n) | Name n <- names ] hunk ./examples/RedBook/PickDepth.hs 87 - (_, maybeHitRecords) <- withSelection bufSize $ - withName (SelectionName 0) $ do + (_, maybeHitRecords) <- getHitRecords bufSize $ + pushName (Name 0) $ do hunk ./examples/RedBook/PickSquare.hs 37 - loadName (SelectionName (fromIntegral i)) + loadName (Name (fromIntegral i)) hunk ./examples/RedBook/PickSquare.hs 39 - withName (SelectionName (fromIntegral j)) $ do + pushName (Name (fromIntegral j)) $ do hunk ./examples/RedBook/PickSquare.hs 60 - sequence_ [ putStr (" " ++ show n) | SelectionName n <- names ] + sequence_ [ putStr (" " ++ show n) | Name n <- names ] hunk ./examples/RedBook/PickSquare.hs 62 - let [i, j] = [ fromIntegral n | SelectionName n <- names ] + let [i, j] = [ fromIntegral n | Name n <- names ] hunk ./examples/RedBook/PickSquare.hs 75 - (_, maybeHitRecords) <- withSelection bufSize $ - withName (SelectionName 0) $ do + (_, maybeHitRecords) <- getHitRecords bufSize $ + pushName (Name 0) $ do hunk ./examples/RedBook/Select.hs 92 - sequence_ [ putStr (" " ++ show n) | SelectionName n <- names ] + sequence_ [ putStr (" " ++ show n) | Name n <- names ] hunk ./examples/RedBook/Select.hs 106 - (_, maybeHitRecords) <- withSelection bufSize $ do - withName (SelectionName 0) $ do + (_, maybeHitRecords) <- getHitRecords bufSize $ do + pushName (Name 0) $ do hunk ./examples/RedBook/Select.hs 114 - loadName (SelectionName 1) + loadName (Name 1) hunk ./examples/RedBook/Select.hs 116 - loadName (SelectionName 2) + loadName (Name 2) hunk ./examples/RedBook/Select.hs 118 - loadName (SelectionName 3) + loadName (Name 3) addfile ./examples/RedBook/Feedback.hs hunk ./examples/RedBook/Feedback.hs 1 +{- + Feedback.hs (adapted from feedback.c which is (c) Silicon Graphics, Inc.) + Copyright (c) Sven Panne 2003 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program demonstrates use of OpenGL feedback. First, a lighting + environment is set up and a few lines are drawn. Then feedback mode is + entered, and the same lines are drawn. The results in the feedback buffer are + printed. +-} + +import Control.Monad ( when ) +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) + +import Graphics.Rendering.OpenGL +import Graphics.UI.GLUT as GLUT + +-- Initialize lighting. +myInit :: IO () +myInit = do + lighting $= Enabled + light (Light 0) $= Enabled + +-- Draw a few lines and two points, one of which will be clipped. If in feedback +-- mode, a passthrough token is issued between each primitive +drawGeometry :: IO () +drawGeometry = do + mode <- get renderMode + -- resolve overloading, not needed in "real" programs + let normal3f = normal :: Normal3 GLfloat -> IO () + vertex3f = vertex :: Vertex3 GLfloat -> IO () + renderPrimitive LineStrip $ do + normal3f (Normal3 0 0 1) + vertex3f (Vertex3 30 30 0) + vertex3f (Vertex3 50 60 0) + vertex3f (Vertex3 70 40 0) + when (mode == Feedback) $ + passThrough (PassThroughValue 1) + renderPrimitive Points $ + vertex3f (Vertex3 (-100) (-100) (-100)) -- will be clipped + when (mode == Feedback) $ + passThrough (PassThroughValue 2) + renderPrimitive Points $ do + normal3f (Normal3 0 0 1) + vertex3f (Vertex3 50 50 0) + flush -- not in original example + +printBuffer :: Maybe [FeedbackToken] -> IO () +printBuffer = maybe (putStrLn "feedback buffer overflow") (mapM_ print) + +display :: DisplayCallback +display = do + matrixMode $= Projection + loadIdentity + ortho 0 100 0 100 0 1 + + clearColor $= Color4 0 0 0 0 + clear [ ColorBuffer ] + drawGeometry + + (_, tokens) <- getFeedbackTokens 1024 ThreeDColor drawGeometry + printBuffer tokens + +keyboard :: KeyboardMouseCallback +keyboard (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard _ _ _ _ = return () + +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ Single, GLUT.RGB ] + initialWindowSize $= Size 100 100 + initialWindowPosition $= Position 100 100 + createWindow progName + myInit + displayCallback $= display + keyboardMouseCallback $= Just keyboard + mainLoop hunk ./examples/RedBook/Select.hs 97 --- the triangles. Note that the third and fourth triangles share one name, so +-- the triangles. Note that the third and fourth triangles share one name, so addfile ./examples/RedBook/Tess.hs hunk ./examples/RedBook/Tess.hs 1 +{- + Tess.hs (adapted from tess.c which is (c) Silicon Graphics, Inc) + Copyright (c) Sven Panne 2003 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program demonstrates polygon tessellation. Two tesselated objects are + drawn. The first is a rectangle with a triangular hole. The second is a + smooth shaded, self-intersecting star. + + Note the exterior rectangle is drawn with its vertices in counter-clockwise + order, but its interior clockwise. Note the combineCallback is needed for the + self-intersecting star. Also note that removing the TessProperty for the + star will make the interior unshaded (TessWindingOdd). +-} + +import Data.Either ( Either(..) ) +import Foreign.Storable ( Storable ) +import System.Exit ( exitWith, ExitCode(ExitSuccess), exitFailure ) + +import Graphics.Rendering.OpenGL +import Graphics.UI.GLUT as GLUT + +display :: [DisplayList] -> DisplayCallback +display displayLists = do + clear [ ColorBuffer ] + -- resolve overloading, not needed in "real" programs + let color3f = color :: Color3 GLfloat -> IO () + color3f (Color3 1 1 1) + mapM callList displayLists + flush + +-- 'Float' is a dummy, any marshalable type would do +type DontCare = Float + +rectangle :: ComplexContour DontCare +rectangle = ComplexContour [ + AnnotatedVertex (Vertex3 50 50 0) 0, + AnnotatedVertex (Vertex3 200 50 0) 0, + AnnotatedVertex (Vertex3 200 200 0) 0, + AnnotatedVertex (Vertex3 50 200 0) 0 ] + +tri :: ComplexContour DontCare +tri = ComplexContour [ + AnnotatedVertex (Vertex3 75 75 0) 0, + AnnotatedVertex (Vertex3 125 175 0) 0, + AnnotatedVertex (Vertex3 175 75 0) 0 ] + +rectAndTri :: ComplexPolygon DontCare +rectAndTri = ComplexPolygon [ rectangle, tri ] + +noOpCombiner :: Combiner DontCare +noOpCombiner _newVertex _weightedProperties = 0 + +star :: ComplexPolygon (Color3 GLclampf) +star = ComplexPolygon [ + ComplexContour [ + AnnotatedVertex (Vertex3 250 50 0) (Color3 1 0 1), + AnnotatedVertex (Vertex3 325 200 0) (Color3 1 1 0), + AnnotatedVertex (Vertex3 400 50 0) (Color3 0 1 1), + AnnotatedVertex (Vertex3 250 150 0) (Color3 1 0 0), + AnnotatedVertex (Vertex3 400 150 0) (Color3 0 1 0) ] ] + +combineColors :: Combiner (Color3 GLclampf) +combineColors + _newVertex + (WeightedProperties + (w0, Color3 r0 g0 b0) + (w1, Color3 r1 g1 b1) + (w2, Color3 r2 g2 b2) + (w3, Color3 r3 g3 b3)) = + Color3 (w0*r0 + w1*r1 + w2*r2 + w3*r3) + (w0*g0 + w1*g1 + w2*g2 + w3*g3) + (w0*b0 + w1*b1 + w2*b2 + w3*b3) + +myInit :: IO [DisplayList] +myInit = do + clearColor $= Color4 0 0 0 0 + + rectAndTriList <- defineNewList Compile $ + drawSimplePolygon (\_ -> return ()) =<< + simpleTessellator TessWindingOdd noOpCombiner rectAndTri + + starList <- defineNewList Compile $ + drawSimplePolygon color =<< + simpleTessellator TessWindingPositive combineColors star + + return [ rectAndTriList, starList ] + +simpleTessellator :: + Storable v => + TessWinding -> Combiner v -> ComplexPolygon v -> IO (SimplePolygon v) +simpleTessellator windingRule combiner complexPolygon = + checkForError $ + tessellate windingRule 0 (Normal3 0 0 0) combiner complexPolygon + +checkForError :: IO (Either Error (SimplePolygon v)) -> IO (SimplePolygon v) +checkForError action = do + errorOrContours <- action + case errorOrContours of + Left (Error _category description) -> do + putStrLn description + exitFailure + Right contours -> + return contours + +drawSimplePolygon :: (v -> IO ()) -> SimplePolygon v -> IO () +drawSimplePolygon colorHandler (SimplePolygon primitives) = + flip mapM_ primitives $ \(Primitive primitiveMode vertices) -> + renderPrimitive primitiveMode $ + flip mapM_ vertices $ \(AnnotatedVertex plainVertex col) -> do + colorHandler col + vertex plainVertex + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + ortho2D 0 (fromIntegral w) 0 (fromIntegral h) + matrixMode $= Modelview 0 + loadIdentity + +keyboard :: KeyboardMouseCallback +keyboard (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard _ _ _ _ = return () + +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ Single, GLUT.RGB ] + initialWindowSize $= Size 500 500 + createWindow progName + displayLists <- myInit + displayCallback $= display displayLists + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just keyboard + mainLoop addfile ./examples/Misc/ExtractContours.hs addfile ./examples/Misc/Triangulate.hs addfile ./examples/RedBook/TessWind.hs hunk ./examples/Misc/ExtractContours.hs 1 +{- + ExtractContours.hs (adapted from tess.c which is (c) Silicon Graphics, Inc) + Copyright (c) Sven Panne 2003 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program demonstrates contour extraction. Two tesselated objects are + drawn. The first is a rectangle with a triangular hole. The second is a + smooth shaded, self-intersecting star. + + Note the exterior rectangle is drawn with its vertices in counter-clockwise + order, but its interior clockwise. Note the combineCallback is needed for the + self-intersecting star. Also note that removing the TessProperty for the + star will make the interior unshaded (TessWindingOdd). +-} + +import Data.Either ( Either(..) ) +import Foreign.Storable ( Storable ) +import System.Exit ( exitWith, ExitCode(ExitSuccess), exitFailure ) + +import Graphics.Rendering.OpenGL +import Graphics.UI.GLUT as GLUT + +display :: [DisplayList] -> DisplayCallback +display displayLists = do + clear [ ColorBuffer ] + -- resolve overloading, not needed in "real" programs + let color3f = color :: Color3 GLfloat -> IO () + color3f (Color3 1 1 1) + mapM callList displayLists + flush + +-- 'Float' is a dummy, any marshalable type would do +type DontCare = Float + +rectangle :: ComplexContour DontCare +rectangle = ComplexContour [ + AnnotatedVertex (Vertex3 50 50 0) 0, + AnnotatedVertex (Vertex3 200 50 0) 0, + AnnotatedVertex (Vertex3 200 200 0) 0, + AnnotatedVertex (Vertex3 50 200 0) 0 ] + +tri :: ComplexContour DontCare +tri = ComplexContour [ + AnnotatedVertex (Vertex3 75 75 0) 0, + AnnotatedVertex (Vertex3 125 175 0) 0, + AnnotatedVertex (Vertex3 175 75 0) 0 ] + +rectAndTri :: ComplexPolygon DontCare +rectAndTri = ComplexPolygon [ rectangle, tri ] + +noOpCombiner :: Combiner DontCare +noOpCombiner _newVertex _weightedProperties = 0 + +star :: ComplexPolygon (Color3 GLclampf) +star = ComplexPolygon [ + ComplexContour [ + AnnotatedVertex (Vertex3 250 50 0) (Color3 1 0 1), + AnnotatedVertex (Vertex3 325 200 0) (Color3 1 1 0), + AnnotatedVertex (Vertex3 400 50 0) (Color3 0 1 1), + AnnotatedVertex (Vertex3 250 150 0) (Color3 1 0 0), + AnnotatedVertex (Vertex3 400 150 0) (Color3 0 1 0) ] ] + +combineColors :: Combiner (Color3 GLclampf) +combineColors + _newVertex + (WeightedProperties + (w0, Color3 r0 g0 b0) + (w1, Color3 r1 g1 b1) + (w2, Color3 r2 g2 b2) + (w3, Color3 r3 g3 b3)) = + Color3 (w0*r0 + w1*r1 + w2*r2 + w3*r3) + (w0*g0 + w1*g1 + w2*g2 + w3*g3) + (w0*b0 + w1*b1 + w2*b2 + w3*b3) + +myInit :: IO [DisplayList] +myInit = do + clearColor $= Color4 0 0 0 0 + + rectAndTriList <- defineNewList Compile $ + drawPolygonContours (\_ -> return ()) =<< + simpleContourExtractor TessWindingOdd noOpCombiner rectAndTri + + starList <- defineNewList Compile $ + drawPolygonContours color =<< + simpleContourExtractor TessWindingPositive combineColors star + + return [ rectAndTriList, starList ] + +simpleContourExtractor :: + Storable v => + TessWinding -> Combiner v -> ComplexPolygon v -> IO (PolygonContours v) +simpleContourExtractor windingRule combiner complexPolygon = + checkForError $ + extractContours windingRule 0 (Normal3 0 0 0) combiner complexPolygon + +checkForError :: IO (Either Error (PolygonContours v)) -> IO (PolygonContours v) +checkForError action = do + errorOrContours <- action + case errorOrContours of + Left (Error _category description) -> do + putStrLn description + exitFailure + Right contours -> + return contours + +drawPolygonContours :: (v -> IO ()) -> PolygonContours v -> IO () +drawPolygonContours colorHandler (PolygonContours simpleContours) = + flip mapM_ simpleContours $ \(SimpleContour vertices) -> + renderPrimitive LineLoop $ + flip mapM_ vertices $ \(AnnotatedVertex plainVertex col) -> do + colorHandler col + vertex plainVertex + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + ortho2D 0 (fromIntegral w) 0 (fromIntegral h) + matrixMode $= Modelview 0 + loadIdentity + +keyboard :: KeyboardMouseCallback +keyboard (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard _ _ _ _ = return () + +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ Single, GLUT.RGB ] + initialWindowSize $= Size 500 500 + createWindow progName + displayLists <- myInit + displayCallback $= display displayLists + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just keyboard + mainLoop hunk ./examples/Misc/Triangulate.hs 1 +{- + Triangulate.hs (adapted from tess.c which is (c) Silicon Graphics, Inc) + Copyright (c) Sven Panne 2003 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program demonstrates polygon triangulation. Two tesselated objects are + drawn. The first is a rectangle with a triangular hole. The second is a + smooth shaded, self-intersecting star. + + Note the exterior rectangle is drawn with its vertices in counter-clockwise + order, but its interior clockwise. Note the combineCallback is needed for the + self-intersecting star. Also note that removing the TessProperty for the + star will make the interior unshaded (TessWindingOdd). +-} + +import Data.Either ( Either(..) ) +import System.Exit ( exitWith, ExitCode(ExitSuccess), exitFailure ) +import System.Random ( randomIO ) + +import Graphics.Rendering.OpenGL +import Graphics.UI.GLUT as GLUT + +display :: [DisplayList] -> DisplayCallback +display displayLists = do + clear [ ColorBuffer ] + -- resolve overloading, not needed in "real" programs + let color3f = color :: Color3 GLfloat -> IO () + color3f (Color3 1 1 1) + mapM callList displayLists + flush + +-- 'Float' is a dummy, any marshalable type would do +type DontCare = Float + +rectangle :: ComplexContour DontCare +rectangle = ComplexContour [ + AnnotatedVertex (Vertex3 50 50 0) 0, + AnnotatedVertex (Vertex3 200 50 0) 0, + AnnotatedVertex (Vertex3 200 200 0) 0, + AnnotatedVertex (Vertex3 50 200 0) 0 ] + +tri :: ComplexContour DontCare +tri = ComplexContour [ + AnnotatedVertex (Vertex3 75 75 0) 0, + AnnotatedVertex (Vertex3 125 175 0) 0, + AnnotatedVertex (Vertex3 175 75 0) 0 ] + +rectAndTri :: ComplexPolygon DontCare +rectAndTri = ComplexPolygon [ rectangle, tri ] + +star :: ComplexPolygon DontCare +star = ComplexPolygon [ + ComplexContour [ + AnnotatedVertex (Vertex3 250 50 0) 0, + AnnotatedVertex (Vertex3 325 200 0) 0, + AnnotatedVertex (Vertex3 400 50 0) 0, + AnnotatedVertex (Vertex3 250 150 0) 0, + AnnotatedVertex (Vertex3 400 150 0) 0 ] ] + +myInit :: IO [DisplayList] +myInit = do + clearColor $= Color4 0 0 0 0 + rectAndTriList <- compileNewList TessWindingOdd rectAndTri + starList <- compileNewList TessWindingPositive star + return [ rectAndTriList, starList ] + +compileNewList :: TessWinding -> ComplexPolygon DontCare -> IO DisplayList +compileNewList windingRule complexPolygon = + defineNewList Compile $ do + triangulation <- + checkForError $ + triangulate windingRule 0 (Normal3 0 0 0) noOpCombiner complexPolygon + drawTriangulation triangulation + +checkForError :: + IO (Either Error (Triangulation DontCare)) -> IO (Triangulation DontCare) +checkForError action = do + errorOrContours <- action + case errorOrContours of + Left (Error _category description) -> do + putStrLn description + exitFailure + Right contours -> + return contours + +noOpCombiner :: Combiner DontCare +noOpCombiner _newVertex _weightedProperties = 0 + +drawTriangulation :: Triangulation DontCare -> IO () +drawTriangulation (Triangulation triangles) = + renderPrimitive Triangles $ + flip mapM_ triangles $ \(Triangle tv1 tv2 tv3) -> do + randomColor + drawTriangleVertex tv1 + drawTriangleVertex tv2 + drawTriangleVertex tv3 + +randomColor :: IO () +randomColor = do + r <- randomIO + g <- randomIO + b <- randomIO + -- resolve overloading, not needed in "real" programs + let color3f = color :: Color3 GLfloat -> IO () + color3f (Color3 r g b) + +drawTriangleVertex :: TriangleVertex DontCare -> IO () +drawTriangleVertex (AnnotatedVertex plainVertex (_, e)) = do + edgeFlag $= e + vertex plainVertex + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + ortho2D 0 (fromIntegral w) 0 (fromIntegral h) + matrixMode $= Modelview 0 + loadIdentity + +keyboard :: KeyboardMouseCallback +keyboard (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard _ _ _ _ = return () + +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ Single, GLUT.RGB ] + initialWindowSize $= Size 500 500 + createWindow progName + displayLists <- myInit + displayCallback $= display displayLists + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just keyboard + mainLoop hunk ./examples/RedBook/TessWind.hs 1 +{- + TessWind.hs (adapted from tesswind.c which is (c) Silicon Graphics, Inc) + Copyright (c) Sven Panne 2003 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program demonstrates the winding rule polygon tessellation property. + Four tessellated objects are drawn, each with very different contours. When + the w key is pressed, the objects are drawn with a different winding rule. +-} + +import Data.Char ( toLower ) +import Data.Either ( Either(..) ) +import Data.IORef ( IORef, newIORef, readIORef, modifyIORef ) +import System.Exit ( exitWith, ExitCode(ExitSuccess), exitFailure ) + +import Graphics.Rendering.OpenGL +import Graphics.UI.GLUT as GLUT + +type DisplayLists = (DisplayList, DisplayList, DisplayList, DisplayList) + +-- 'Float' is a dummy, any marshalable type would do +type DontCare = Float + +rect1 :: ComplexContour DontCare +rect1 = ComplexContour [ + AnnotatedVertex (Vertex3 50 50 0) 0, + AnnotatedVertex (Vertex3 300 50 0) 0, + AnnotatedVertex (Vertex3 300 300 0) 0, + AnnotatedVertex (Vertex3 50 300 0) 0 ] + +rect2 :: ComplexContour DontCare +rect2 = ComplexContour [ + AnnotatedVertex (Vertex3 100 100 0) 0, + AnnotatedVertex (Vertex3 250 100 0) 0, + AnnotatedVertex (Vertex3 250 250 0) 0, + AnnotatedVertex (Vertex3 100 250 0) 0 ] + +rect3 :: ComplexContour DontCare +rect3 = ComplexContour [ + AnnotatedVertex (Vertex3 150 150 0) 0, + AnnotatedVertex (Vertex3 200 150 0) 0, + AnnotatedVertex (Vertex3 200 200 0) 0, + AnnotatedVertex (Vertex3 150 200 0) 0 ] + +rects1 :: ComplexPolygon DontCare +rects1 = ComplexPolygon [ rect1, rect2, rect3 ] + +rects2 :: ComplexPolygon DontCare +rects2 = ComplexPolygon [ + rect1, reverseComplexContour rect2, reverseComplexContour rect3 ] + +spiral :: ComplexPolygon DontCare +spiral = ComplexPolygon [ + ComplexContour [ + AnnotatedVertex (Vertex3 400 250 0) 0, + AnnotatedVertex (Vertex3 400 50 0) 0, + AnnotatedVertex (Vertex3 50 50 0) 0, + AnnotatedVertex (Vertex3 50 400 0) 0, + AnnotatedVertex (Vertex3 350 400 0) 0, + AnnotatedVertex (Vertex3 350 100 0) 0, + AnnotatedVertex (Vertex3 100 100 0) 0, + AnnotatedVertex (Vertex3 100 350 0) 0, + AnnotatedVertex (Vertex3 300 350 0) 0, + AnnotatedVertex (Vertex3 300 150 0) 0, + AnnotatedVertex (Vertex3 150 150 0) 0, + AnnotatedVertex (Vertex3 150 300 0) 0, + AnnotatedVertex (Vertex3 250 300 0) 0, + AnnotatedVertex (Vertex3 250 200 0) 0, + AnnotatedVertex (Vertex3 200 200 0) 0, + AnnotatedVertex (Vertex3 200 250 0) 0 ] ] + +quad1 :: ComplexContour DontCare +quad1 = ComplexContour [ + AnnotatedVertex (Vertex3 50 150 0) 0, + AnnotatedVertex (Vertex3 350 150 0) 0, + AnnotatedVertex (Vertex3 350 200 0) 0, + AnnotatedVertex (Vertex3 50 200 0) 0 ] + +quad2 :: ComplexContour DontCare +quad2 = ComplexContour [ + AnnotatedVertex (Vertex3 100 100 0) 0, + AnnotatedVertex (Vertex3 300 100 0) 0, + AnnotatedVertex (Vertex3 300 350 0) 0, + AnnotatedVertex (Vertex3 100 350 0) 0 ] + +tri :: ComplexContour DontCare +tri = ComplexContour [ + AnnotatedVertex (Vertex3 200 50 0) 0, + AnnotatedVertex (Vertex3 250 300 0) 0, + AnnotatedVertex (Vertex3 150 300 0) 0 ] + +quadsAndTri :: ComplexPolygon DontCare +quadsAndTri = ComplexPolygon [ quad1, quad2, tri ] + +reverseComplexContour :: ComplexContour DontCare -> ComplexContour DontCare +reverseComplexContour (ComplexContour avs) = ComplexContour (reverse avs) + +makeNewLists :: IORef TessWinding -> DisplayLists -> IO () +makeNewLists currentWindingRule (dl1, dl2, dl3, dl4) = do + windingRule <- readIORef currentWindingRule + print windingRule -- not in original program, but useful + compileList windingRule dl1 rects1 + compileList windingRule dl2 rects2 + compileList windingRule dl3 spiral + compileList windingRule dl4 quadsAndTri + +compileList :: TessWinding -> DisplayList -> ComplexPolygon DontCare -> IO () +compileList windingRule displayList complexPolygon = + defineList displayList Compile $ do + simplePolygon <- checkForError $ + tessellate windingRule 0 (Normal3 0 0 0) noOpCombiner complexPolygon + drawSimplePolygon simplePolygon + +checkForError :: + IO (Either Error (SimplePolygon DontCare)) -> IO (SimplePolygon DontCare) +checkForError action = do + errorOrContours <- action + case errorOrContours of + Left (Error _category description) -> do + putStrLn description + exitFailure + Right contours -> + return contours + +noOpCombiner :: Combiner DontCare +noOpCombiner _newVertex _weightedProperties = 0 + +drawSimplePolygon :: SimplePolygon DontCare -> IO () +drawSimplePolygon (SimplePolygon primitives) = + flip mapM_ primitives $ \(Primitive primitiveMode vertices) -> + renderPrimitive primitiveMode $ + flip mapM_ vertices $ \(AnnotatedVertex plainVertex _) -> + vertex plainVertex + +display :: DisplayLists -> DisplayCallback +display (dl1, dl2, dl3, dl4) = do + clear [ ColorBuffer ] + -- resolve overloading, not needed in "real" programs + let color3f = color :: Color3 GLfloat -> IO () + translatef = translate :: Vector3 GLfloat -> IO () + color3f (Color3 1 1 1) + matrixExcursion $ do + callList dl1 + translatef (Vector3 0 500 0) + callList dl2 + translatef (Vector3 500 (-500) 0) + callList dl3 + translatef (Vector3 0 500 0) + callList dl4 + flush + +myInit :: IORef TessWinding -> IO DisplayLists +myInit currentWindingRule = do + clearColor $= Color4 0 0 0 0 + shadeModel $= Flat + [dl1, dl2, dl3, dl4] <- genLists 4 + let displayLists = (dl1, dl2, dl3, dl4) + makeNewLists currentWindingRule displayLists + return displayLists + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + let wf = fromIntegral w + hf = fromIntegral h + if w <= h + then ortho2D 0 1000 0 (1000 * hf/wf) + else ortho2D 0 (1000 * wf/hf) 0 1000 + matrixMode $= Modelview 0 + loadIdentity + +keyboard :: IORef TessWinding -> DisplayLists -> KeyboardMouseCallback +keyboard currentWindingRule displayLists (Char c) Down _ _ = case toLower c of + 'w' -> do modifyIORef currentWindingRule nextWindingRule + makeNewLists currentWindingRule displayLists + postRedisplay Nothing + '\27' -> exitWith ExitSuccess + _ -> return () +keyboard _ _ _ _ _ _ = return () + +nextWindingRule :: TessWinding -> TessWinding +nextWindingRule r = case r of + TessWindingOdd -> TessWindingNonzero + TessWindingNonzero -> TessWindingPositive + TessWindingPositive -> TessWindingNegative + TessWindingNegative -> TessWindingAbsGeqTwo + TessWindingAbsGeqTwo -> TessWindingOdd + +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ Single, GLUT.RGB ] + initialWindowSize $= Size 500 500 + createWindow progName + currentWindingRule <- newIORef TessWindingOdd + displayLists <- myInit currentWindingRule + displayCallback $= display displayLists + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just (keyboard currentWindingRule displayLists) + mainLoop hunk ./examples/RedBook/PickDepth.hs 69 - mapM_ (\(HitRecord z1 z2 names) -> do + flip mapM_ hitRecords $ \(HitRecord z1 z2 names) -> do hunk ./examples/RedBook/PickDepth.hs 75 - putChar '\n') - hitRecords + putChar '\n' hunk ./examples/RedBook/PickSquare.hs 36 - mapM_ (\i -> do + flip mapM_ [ 0 .. 2 ] $ \i -> do hunk ./examples/RedBook/PickSquare.hs 38 - mapM_ (\j -> + flip mapM_ [ 0 .. 2 ] $ \j -> hunk ./examples/RedBook/PickSquare.hs 46 - rect (Vertex2 i j) (Vertex2 (i + 1) (j + 1))) - [ 0 .. 2 ]) - [ 0 .. 2 ] + rect (Vertex2 i j) (Vertex2 (i + 1) (j + 1)) hunk ./Graphics/UI/GLUT/Fonts.hs 30 + +#ifdef __HUGS__ +{-# CBITS HsGLUT.c #-} +#endif hunk ./Makefile 28 + +# yeuch, have to get GL_CFLAGS & GLUT_LIBS in through CPP to package.conf.in +comma = , +PACKAGE_CPP_OPTS += -DGL_CFLAGS='$(patsubst %,$(comma)"%",$(GL_CFLAGS))' +PACKAGE_CPP_OPTS += -DGLUT_LIBS='$(patsubst %,$(comma)"%",$(GLUT_LIBS))' hunk ./package.conf.in 28 - extra_cc_opts = [], - extra_ld_opts = [] + extra_cc_opts = [ "" GL_CFLAGS ], + extra_ld_opts = [ "" GLUT_LIBS ] hunk ./Graphics/UI/GLUT/GameMode.hs 47 -import Graphics.UI.GLUT.Initialization ( Relation ) hunk ./Graphics/UI/GLUT/GameMode.hs 49 +import Graphics.UI.GLUT.Initialization ( Relation(..) ) hunk ./Graphics/UI/GLUT/Menu.hs 35 -import Graphics.UI.GLUT.Callbacks.Window ( MouseButton ) hunk ./Graphics/UI/GLUT/Menu.hs 39 +import Graphics.UI.GLUT.Callbacks.Window ( MouseButton ) hunk ./cbits/Makefile 8 -SRC_CC_OPTS += -Wall -I../include +SRC_CC_OPTS += -Wall -I$(GHC_INCLUDE_DIR) -I../include hunk ./include/HsGLUT.h 16 +#include "config.h" + +#ifdef USE_QUARTZ_OPENGL /* Mac OS X only */ +#include +#else hunk ./include/HsGLUT.h 22 +#endif hunk ./package.conf.in 19 +#ifdef USE_QUARTZ_OPENGL + extra_libraries = [ "HSGLUT_cbits", "objc" ], +#else hunk ./package.conf.in 23 +#endif hunk ./package.conf.in 33 +#ifdef USE_QUARTZ_OPENGL + extra_frameworks = [ "GLUT" ], +#endif hunk ./Graphics/UI/GLUT/GameMode.hs 27 - Capability'(..), CapabilityDescription'(..), gameModeCapabilities, - enterGameMode, leaveGameMode, + GameModeCapability(..), GameModeCapabilityDescription(..), + gameModeCapabilities, enterGameMode, leaveGameMode, hunk ./Graphics/UI/GLUT/GameMode.hs 55 -data Capability' +data GameModeCapability hunk ./Graphics/UI/GLUT/GameMode.hs 64 -capabilityToString :: Capability' -> String -capabilityToString Width = "width" -capabilityToString Height = "height" -capabilityToString BitsPerPlane = "bpp" -capabilityToString RefreshRate = "hertz" -capabilityToString Num' = "num" +gameModeCapabilityToString :: GameModeCapability -> String +gameModeCapabilityToString x = case x of + Width -> "width" + Height -> "height" + BitsPerPlane -> "bpp" + RefreshRate -> "hertz" + Num' -> "num" hunk ./Graphics/UI/GLUT/GameMode.hs 74 -data CapabilityDescription' = Where' Capability' Relation Int +data GameModeCapabilityDescription = Where' GameModeCapability Relation Int hunk ./Graphics/UI/GLUT/GameMode.hs 77 -capabilityDescriptionToString :: CapabilityDescription' -> String -capabilityDescriptionToString (Where' c r i) = - capabilityToString c ++ relationToString r ++ show i +gameModeCapabilityDescriptionToString :: GameModeCapabilityDescription -> String +gameModeCapabilityDescriptionToString (Where' c r i) = + gameModeCapabilityToString c ++ relationToString r ++ show i hunk ./Graphics/UI/GLUT/GameMode.hs 104 -gameModeCapabilities :: SettableStateVar [CapabilityDescription'] +gameModeCapabilities :: SettableStateVar [GameModeCapabilityDescription] hunk ./Graphics/UI/GLUT/GameMode.hs 107 - (concat . intersperse " " . map capabilityDescriptionToString $ settings) + (concat . intersperse " " . map gameModeCapabilityDescriptionToString $ + settings) hunk ./Graphics/UI/GLUT/Initialization.hs 38 - Capability(..), Relation(..), CapabilityDescription(..), + DisplayCapability(..), Relation(..), DisplayCapabilityDescription(..), hunk ./Graphics/UI/GLUT/Initialization.hs 287 -data Capability +data DisplayCapability hunk ./Graphics/UI/GLUT/Initialization.hs 403 -capabilityToString :: Capability -> String -capabilityToString RGBA' = "rgba" -capabilityToString RGB' = "rgb" -capabilityToString Red = "red" -capabilityToString Green = "green" -capabilityToString Blue = "blue" -capabilityToString Index' = "index" -capabilityToString Buffer = "buffer" -capabilityToString Single' = "single" -capabilityToString Double' = "double" -capabilityToString AccA = "acca" -capabilityToString Acc = "acc" -capabilityToString Alpha' = "alpha" -capabilityToString Depth' = "depth" -capabilityToString Stencil' = "stencil" -capabilityToString Samples = "samples" -capabilityToString Stereo' = "stereo" -capabilityToString Luminance' = "luminance" -capabilityToString Num = "num" -capabilityToString Conformant = "conformant" -capabilityToString Slow = "slow" -capabilityToString Win32PFD = "win32pfd" -capabilityToString XVisual = "xvisual" -capabilityToString XStaticGray = "xstaticgray" -capabilityToString XGrayScale = "xgrayscale" -capabilityToString XStaticColor = "xstaticcolor" -capabilityToString XPseudoColor = "xpseudocolor" -capabilityToString XTrueColor = "xtruecolor" -capabilityToString XDirectColor = "xdirectcolor" +displayCapabilityToString :: DisplayCapability -> String +displayCapabilityToString x = case x of + RGBA' -> "rgba" + RGB' -> "rgb" + Red -> "red" + Green -> "green" + Blue -> "blue" + Index' -> "index" + Buffer -> "buffer" + Single' -> "single" + Double' -> "double" + AccA -> "acca" + Acc -> "acc" + Alpha' -> "alpha" + Depth' -> "depth" + Stencil' -> "stencil" + Samples -> "samples" + Stereo' -> "stereo" + Luminance' -> "luminance" + Num -> "num" + Conformant -> "conformant" + Slow -> "slow" + Win32PFD -> "win32pfd" + XVisual -> "xvisual" + XStaticGray -> "xstaticgray" + XGrayScale -> "xgrayscale" + XStaticColor -> "xstaticcolor" + XPseudoColor -> "xpseudocolor" + XTrueColor -> "xtruecolor" + XDirectColor -> "xdirectcolor" hunk ./Graphics/UI/GLUT/Initialization.hs 436 -data CapabilityDescription - = Where Capability Relation Int -- ^ A description of a capability with a - -- specific relation to a numeric value. - | With Capability -- ^ When the relation and numeric value are - -- not specified, each capability has a - -- different default, see the different - -- constructors of 'Capability'. +data DisplayCapabilityDescription + = Where DisplayCapability Relation Int + -- ^ A description of a capability with a specific relation to a numeric + -- value. + | With DisplayCapability + -- ^ When the relation and numeric value are not specified, each capability + -- has a different default, see the different constructors of + -- 'DisplayCapability'. hunk ./Graphics/UI/GLUT/Initialization.hs 446 -capabilityDescriptionToString :: CapabilityDescription -> String -capabilityDescriptionToString (Where c r i) = - capabilityToString c ++ relationToString r ++ show i -capabilityDescriptionToString (With c) = capabilityToString c +displayCapabilityDescriptionToString :: DisplayCapabilityDescription -> String +displayCapabilityDescriptionToString (Where c r i) = + displayCapabilityToString c ++ relationToString r ++ show i +displayCapabilityDescriptionToString (With c) = displayCapabilityToString c hunk ./Graphics/UI/GLUT/Initialization.hs 481 -initialDisplayCapabilities :: SettableStateVar [CapabilityDescription] +initialDisplayCapabilities :: SettableStateVar [DisplayCapabilityDescription] hunk ./Graphics/UI/GLUT/Initialization.hs 485 - (concat . intersperse " " . map capabilityDescriptionToString $ caps) + (concat . intersperse " " . map displayCapabilityDescriptionToString $ + caps) hunk ./Graphics/UI/GLUT/Objects.hs 30 - Radius, Height, Slices, Stacks, Sides, Rings, + Sides, Rings, hunk ./Graphics/UI/GLUT/Objects.hs 36 -import Graphics.Rendering.OpenGL.GL.BasicTypes ( GLdouble, GLint ) +import Graphics.Rendering.OpenGL.GL.BasicTypes ( GLint ) +import Graphics.Rendering.OpenGL.GLU.Quadrics ( Radius, Height, Slices, Stacks ) hunk ./Graphics/UI/GLUT/Objects.hs 83 - Sphere Radius Slices Stacks + Sphere' Radius Slices Stacks hunk ./Graphics/UI/GLUT/Objects.hs 99 -type Radius = GLdouble -type Height = GLdouble -type Slices = GLint -type Stacks = GLint hunk ./Graphics/UI/GLUT/Objects.hs 117 -renderObject Solid (Sphere r s t) = solidSphere r s t -renderObject Wireframe (Sphere r s t) = wireSphere r s t +renderObject Solid (Sphere' r s t) = solidSphere r s t +renderObject Wireframe (Sphere' r s t) = wireSphere r s t hunk ./examples/RedBook/Fog.hs 45 - renderObject Solid (GLUT.Sphere 0.4 16 16) + renderObject Solid (Sphere' 0.4 16 16) hunk ./Graphics/UI/GLUT/GameMode.hs 56 - = Width -- ^ Width of the screen resolution in pixels - | Height -- ^ Height of the screen resolution in pixels - | BitsPerPlane -- ^ Color depth of the screen in bits - | RefreshRate -- ^ Refresh rate in Hertz - | Num' -- ^ Match the Nth frame buffer configuration compatible with - -- the given capabilities (numbering starts at 1) + = GameModeWidth -- ^ Width of the screen resolution in pixels + | GameModeHeight -- ^ Height of the screen resolution in pixels + | GameModeBitsPerPlane -- ^ Color depth of the screen in bits + | GameModeRefreshRate -- ^ Refresh rate in Hertz + | GameModeNum -- ^ Match the Nth frame buffer configuration + -- compatible with the given capabilities + -- (numbering starts at 1) hunk ./Graphics/UI/GLUT/GameMode.hs 67 - Width -> "width" - Height -> "height" - BitsPerPlane -> "bpp" - RefreshRate -> "hertz" - Num' -> "num" + GameModeWidth -> "width" + GameModeHeight -> "height" + GameModeBitsPerPlane -> "bpp" + GameModeRefreshRate -> "hertz" + GameModeNum -> "num" hunk ./Graphics/UI/GLUT/Initialization.hs 207 - = RGBA -- ^ Select an RGBA mode window. This is the default if neither 'RGBA' nor 'Index' are specified. - | RGB -- ^ An alias for 'RGBA'. - | Index -- ^ Select a color index mode window. This overrides 'RGBA' if it is also specified. - | Single -- ^ Select a single buffered window. This is the default if neither 'Double' nor 'Single' are specified. - | Double -- ^ Select a double buffered window. This overrides 'Single' if it is also specified. - | Accum -- ^ Select a window with an accumulation buffer. - | Alpha -- ^ Select a window with an alpha component to the color buffer(s). - | Depth -- ^ Select a window with a depth buffer. - | Stencil -- ^ Select a window with a stencil buffer. - | Multisample -- ^ Select a window with multisampling support. If multisampling is not available, a non-multisampling - -- window will automatically be chosen. Note: both the OpenGL client-side and server-side implementations - -- must support the @GLX_SAMPLE_SGIS@ extension for multisampling to be available. - | Stereo -- ^ Select A Stereo Window. - | Luminance -- ^ Select a window with a \"luminance\" color model. This model provides the functionality of OpenGL\'s - -- RGBA color model, but the green and blue components are not maintained in the frame buffer. Instead - -- each pixel\'s red component is converted to an index between zero and 'Graphics.UI.GLUT.Colormap.numColorMapEntries' - -- and looked up in a per-window color map to determine the color of pixels within the window. The initial - -- colormap of 'Luminance' windows is initialized to be a linear gray ramp, but can be modified with GLUT\'s - -- colormap actions. /Implementation Notes:/ 'Luminance' is not supported on most OpenGL platforms. + = RGBAMode -- ^ Select an RGBA mode window. This is the default if neither 'RGBAMode' nor 'IndexMode' are specified. + | RGBMode -- ^ An alias for 'RGBAMode'. + | IndexMode -- ^ Select a color index mode window. This overrides 'RGBAMode' if it is also specified. + | LuminanceMode -- ^ Select a window with a \"luminance\" color model. This model provides the functionality of OpenGL\'s + -- RGBA color model, but the green and blue components are not maintained in the frame buffer. Instead + -- each pixel\'s red component is converted to an index between zero and 'Graphics.UI.GLUT.Colormap.numColorMapEntries' + -- and looked up in a per-window color map to determine the color of pixels within the window. The initial + -- colormap of 'LuminanceMode' windows is initialized to be a linear gray ramp, but can be modified with GLUT\'s + -- colormap actions. /Implementation Notes:/ 'LuminanceMode' is not supported on most OpenGL platforms. + | WithAlphaComponent -- ^ Select a window with an alpha component to the color buffer(s). + | WithAccumBuffer -- ^ Select a window with an accumulation buffer. + | WithDepthBuffer -- ^ Select a window with a depth buffer. + | WithStencilBuffer -- ^ Select a window with a stencil buffer. + | SingleBuffered -- ^ Select a single buffered window. This is the default if neither 'DoubleBuffered' nor 'SingleBuffered' are specified. + | DoubleBuffered -- ^ Select a double buffered window. This overrides 'SingleBuffered' if it is also specified. + | Multisampling -- ^ Select a window with multisampling support. If multisampling is not available, a non-multisampling + -- window will automatically be chosen. Note: both the OpenGL client-side and server-side implementations + -- must support the @GLX_SAMPLE_SGIS@ extension for multisampling to be available. + | Stereoscopic -- ^ Select A Stereo Window. hunk ./Graphics/UI/GLUT/Initialization.hs 230 - RGBA -> glut_RGBA - RGB -> glut_RGB - Index -> glut_INDEX - Single -> glut_SINGLE - Double -> glut_DOUBLE - Accum -> glut_ACCUM - Alpha -> glut_ALPHA - Depth -> glut_DEPTH - Stencil -> glut_STENCIL - Multisample -> glut_MULTISAMPLE - Stereo -> glut_STEREO - Luminance -> glut_LUMINANCE + RGBAMode -> glut_RGBA + RGBMode -> glut_RGB + IndexMode -> glut_INDEX + SingleBuffered -> glut_SINGLE + DoubleBuffered -> glut_DOUBLE + WithAccumBuffer -> glut_ACCUM + WithAlphaComponent -> glut_ALPHA + WithDepthBuffer -> glut_DEPTH + WithStencilBuffer -> glut_STENCIL + Multisampling -> glut_MULTISAMPLE + Stereoscopic -> glut_STEREO + LuminanceMode -> glut_LUMINANCE hunk ./Graphics/UI/GLUT/Initialization.hs 249 --- Note that 'RGBA' selects the RGBA color model, but it does not request any +-- Note that 'RGBAMode' selects the RGBA color model, but it does not request any hunk ./Graphics/UI/GLUT/Initialization.hs 251 --- be allocated. To request alpha, specify 'Alpha'. The same applies to --- 'Luminance'. +-- be allocated. To request alpha, specify 'WithAlphaComponent'. The same +-- applies to 'LuminanceMode'. hunk ./Graphics/UI/GLUT/Initialization.hs 262 - [ c | c <- [ RGBA, RGB, Index, Single, Double, Accum, Alpha, - Depth, Stencil, Multisample, Stereo, Luminance ] + [ c | c <- [ RGBAMode, RGBMode, IndexMode, SingleBuffered, DoubleBuffered, + WithAccumBuffer, WithAlphaComponent, WithDepthBuffer, + WithStencilBuffer, Multisampling, Stereoscopic, LuminanceMode ] hunk ./Graphics/UI/GLUT/Initialization.hs 289 - = RGBA' -- ^ Number of bits of red, green, blue, and alpha in the RGBA + = DisplayRGBA -- ^ Number of bits of red, green, blue, and alpha in the RGBA hunk ./Graphics/UI/GLUT/Initialization.hs 293 - | RGB' -- ^ Number of bits of red, green, and blue in the RGBA color + | DisplayRGB -- ^ Number of bits of red, green, and blue in the RGBA color hunk ./Graphics/UI/GLUT/Initialization.hs 299 - | Red -- ^ Red color buffer precision in bits. Default is + | DisplayRed -- ^ Red color buffer precision in bits. Default is hunk ./Graphics/UI/GLUT/Initialization.hs 301 - | Green -- ^ Green color buffer precision in bits. Default is + | DisplayGreen -- ^ Green color buffer precision in bits. Default is hunk ./Graphics/UI/GLUT/Initialization.hs 303 - | Blue -- ^ Blue color buffer precision in bits. Default is + | DisplayBlue -- ^ Blue color buffer precision in bits. Default is hunk ./Graphics/UI/GLUT/Initialization.hs 305 - | Index' -- ^ Boolean if the color model is color index or not. True is + | DisplayIndex -- ^ Boolean if the color model is color index or not. True is hunk ./Graphics/UI/GLUT/Initialization.hs 307 - | Buffer -- ^ Number of bits in the color index color buffer. Default + | DisplayBuffer -- ^ Number of bits in the color index color buffer. Default hunk ./Graphics/UI/GLUT/Initialization.hs 309 - | Single' -- ^ Boolean indicate the color buffer is single buffered. - -- Defaultis \"'IsEqualTo' @1@\". - | Double' -- ^ Boolean indicating if the color buffer is double + | DisplaySingle -- ^ Boolean indicate the color buffer is single buffered. + -- Default is \"'IsEqualTo' @1@\". + | DisplayDouble -- ^ Boolean indicating if the color buffer is double hunk ./Graphics/UI/GLUT/Initialization.hs 313 - | AccA -- ^ Red, green, blue, and alpha accumulation buffer precision + | DisplayAccA -- ^ Red, green, blue, and alpha accumulation buffer precision hunk ./Graphics/UI/GLUT/Initialization.hs 316 - | Acc -- ^ Red, green, and green accumulation buffer precision in + | DisplayAcc -- ^ Red, green, and green accumulation buffer precision in hunk ./Graphics/UI/GLUT/Initialization.hs 321 - | Alpha' -- ^ Alpha color buffer precision in bits. Default is + | DisplayAlpha -- ^ Alpha color buffer precision in bits. Default is hunk ./Graphics/UI/GLUT/Initialization.hs 323 - | Depth' -- ^ Number of bits of precsion in the depth buffer. Default + | DisplayDepth -- ^ Number of bits of precsion in the depth buffer. Default hunk ./Graphics/UI/GLUT/Initialization.hs 325 - | Stencil' -- ^ Number of bits in the stencil buffer. Default is + | DisplayStencil -- ^ Number of bits in the stencil buffer. Default is hunk ./Graphics/UI/GLUT/Initialization.hs 327 - | Samples -- ^ Indicates the number of multisamples to use based on + | DisplaySamples -- ^ Indicates the number of multisamples to use based on hunk ./Graphics/UI/GLUT/Initialization.hs 332 - | Stereo' -- ^ Boolean indicating the color buffer is supports + | DisplayStereo -- ^ Boolean indicating the color buffer is supports hunk ./Graphics/UI/GLUT/Initialization.hs 334 - | Luminance' -- ^ Number of bits of red in the RGBA and zero bits of green, + | DisplayLuminance -- ^ Number of bits of red in the RGBA and zero bits of green, hunk ./Graphics/UI/GLUT/Initialization.hs 349 - | Num -- ^ A special capability name indicating where the value + | DisplayNum -- ^ A special capability name indicating where the value hunk ./Graphics/UI/GLUT/Initialization.hs 355 - | Conformant -- ^ Boolean indicating if the frame buffer configuration is + | DisplayConformant -- ^ Boolean indicating if the frame buffer configuration is hunk ./Graphics/UI/GLUT/Initialization.hs 360 - | Slow -- ^ Boolean indicating if the frame buffer configuration is + | DisplaySlow -- ^ Boolean indicating if the frame buffer configuration is hunk ./Graphics/UI/GLUT/Initialization.hs 372 - | Win32PFD -- ^ Only recognized on GLUT implementations for Win32, this + | DisplayWin32PFD -- ^ Only recognized on GLUT implementations for Win32, this hunk ./Graphics/UI/GLUT/Initialization.hs 375 - | XVisual -- ^ Only recongized on GLUT implementations for the X Window + | DisplayXVisual -- ^ Only recongized on GLUT implementations for the X Window hunk ./Graphics/UI/GLUT/Initialization.hs 378 - | XStaticGray -- ^ Only recongized on GLUT implementations for the X Window + | DisplayXStaticGray -- ^ Only recongized on GLUT implementations for the X Window hunk ./Graphics/UI/GLUT/Initialization.hs 382 - | XGrayScale -- ^ Only recongized on GLUT implementations for the X Window + | DisplayXGrayScale -- ^ Only recongized on GLUT implementations for the X Window hunk ./Graphics/UI/GLUT/Initialization.hs 386 - | XStaticColor -- ^ Only recongized on GLUT implementations for the X Window + | DisplayXStaticColor -- ^ Only recongized on GLUT implementations for the X Window hunk ./Graphics/UI/GLUT/Initialization.hs 390 - | XPseudoColor -- ^ Only recongized on GLUT implementations for the X Window + | DisplayXPseudoColor -- ^ Only recongized on GLUT implementations for the X Window hunk ./Graphics/UI/GLUT/Initialization.hs 394 - | XTrueColor -- ^ Only recongized on GLUT implementations for the X Window + | DisplayXTrueColor -- ^ Only recongized on GLUT implementations for the X Window hunk ./Graphics/UI/GLUT/Initialization.hs 398 - | XDirectColor -- ^ Only recongized on GLUT implementations for the X Window + | DisplayXDirectColor -- ^ Only recongized on GLUT implementations for the X Window hunk ./Graphics/UI/GLUT/Initialization.hs 406 - RGBA' -> "rgba" - RGB' -> "rgb" - Red -> "red" - Green -> "green" - Blue -> "blue" - Index' -> "index" - Buffer -> "buffer" - Single' -> "single" - Double' -> "double" - AccA -> "acca" - Acc -> "acc" - Alpha' -> "alpha" - Depth' -> "depth" - Stencil' -> "stencil" - Samples -> "samples" - Stereo' -> "stereo" - Luminance' -> "luminance" - Num -> "num" - Conformant -> "conformant" - Slow -> "slow" - Win32PFD -> "win32pfd" - XVisual -> "xvisual" - XStaticGray -> "xstaticgray" - XGrayScale -> "xgrayscale" - XStaticColor -> "xstaticcolor" - XPseudoColor -> "xpseudocolor" - XTrueColor -> "xtruecolor" - XDirectColor -> "xdirectcolor" + DisplayRGBA -> "rgba" + DisplayRGB -> "rgb" + DisplayRed -> "red" + DisplayGreen -> "green" + DisplayBlue -> "blue" + DisplayIndex -> "index" + DisplayBuffer -> "buffer" + DisplaySingle -> "single" + DisplayDouble -> "double" + DisplayAccA -> "acca" + DisplayAcc -> "acc" + DisplayAlpha -> "alpha" + DisplayDepth -> "depth" + DisplayStencil -> "stencil" + DisplaySamples -> "samples" + DisplayStereo -> "stereo" + DisplayLuminance -> "luminance" + DisplayNum -> "num" + DisplayConformant -> "conformant" + DisplaySlow -> "slow" + DisplayWin32PFD -> "win32pfd" + DisplayXVisual -> "xvisual" + DisplayXStaticGray -> "xstaticgray" + DisplayXGrayScale -> "xgrayscale" + DisplayXStaticColor -> "xstaticcolor" + DisplayXPseudoColor -> "xpseudocolor" + DisplayXTrueColor -> "xtruecolor" + DisplayXDirectColor -> "xdirectcolor" hunk ./Graphics/UI/GLUT/Initialization.hs 469 --- initialDisplayCapabilities $= [ With RGB\', --- Where Depth\' IsAtLeast 16, --- With Samples, --- Where Stencil\' IsNotLessThan 2, --- With Double\' ] +-- initialDisplayCapabilities $= [ With DisplayRGB, +-- Where DisplayDepth IsAtLeast 16, +-- With DisplaySamples, +-- Where DisplayStencil IsNotLessThan 2, +-- With DisplayDouble ] hunk ./Graphics/UI/GLUT/Types.hs 43 --- | A relation between a 'Graphics.UI.GLUT.Initialization.Capability' and a --- numeric value. +-- | A relation between a 'Graphics.UI.GLUT.Initialization.DisplayCapability' +-- and a numeric value. hunk ./Graphics/UI/GLUT.hs 45 + module Graphics.Rendering.OpenGL, + hunk ./Graphics/UI/GLUT.hs 62 +import Graphics.Rendering.OpenGL + hunk ./examples/Misc/ExtractContours.hs 20 - -import Graphics.Rendering.OpenGL -import Graphics.UI.GLUT as GLUT +import Graphics.UI.GLUT hunk ./examples/Misc/ExtractContours.hs 129 - initialDisplayMode $= [ Single, GLUT.RGB ] + initialDisplayMode $= [ SingleBuffered, RGBMode ] hunk ./examples/Misc/FogCoordinate.hs 11 - -import Graphics.Rendering.OpenGL -import Graphics.UI.GLUT as GLUT +import Graphics.UI.GLUT hunk ./examples/Misc/FogCoordinate.hs 70 - initialDisplayMode $= [ Single, GLUT.RGB ] + initialDisplayMode $= [ SingleBuffered, RGBMode ] hunk ./examples/Misc/Triangulate.hs 20 - -import Graphics.Rendering.OpenGL -import Graphics.UI.GLUT as GLUT +import Graphics.UI.GLUT hunk ./examples/Misc/Triangulate.hs 127 - initialDisplayMode $= [ Single, GLUT.RGB ] + initialDisplayMode $= [ SingleBuffered, RGBMode ] hunk ./examples/RedBook/Feedback.hs 15 - -import Graphics.Rendering.OpenGL -import Graphics.UI.GLUT as GLUT +import Graphics.UI.GLUT hunk ./examples/RedBook/Feedback.hs 70 - initialDisplayMode $= [ Single, GLUT.RGB ] + initialDisplayMode $= [ SingleBuffered, RGBMode ] hunk ./examples/RedBook/Fog.hs 16 - -import Graphics.Rendering.OpenGL -import Graphics.UI.GLUT as GLUT +import Graphics.UI.GLUT hunk ./examples/RedBook/Fog.hs 83 - initialDisplayMode $= [ Single, GLUT.RGB, Depth ] + initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] hunk ./examples/RedBook/Hello.hs 10 -import Graphics.Rendering.OpenGL -import Graphics.UI.GLUT as GLUT +import Graphics.UI.GLUT hunk ./examples/RedBook/Hello.hs 50 - initialDisplayMode $= [ Single, GLUT.RGB ] + initialDisplayMode $= [ SingleBuffered, RGBMode ] hunk ./examples/RedBook/PickDepth.hs 15 - -import Graphics.Rendering.OpenGL -import Graphics.UI.GLUT as GLUT +import Graphics.UI.GLUT hunk ./examples/RedBook/PickDepth.hs 118 - initialDisplayMode $= [ Single, GLUT.RGB, Depth ] + initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] hunk ./examples/RedBook/PickSquare.hs 15 - -import Graphics.Rendering.OpenGL -import Graphics.UI.GLUT as GLUT +import Graphics.UI.GLUT hunk ./examples/RedBook/PickSquare.hs 105 - initialDisplayMode $= [ Single, GLUT.RGB ] + initialDisplayMode $= [ SingleBuffered, RGBMode ] hunk ./examples/RedBook/Select.hs 19 - -import Graphics.Rendering.OpenGL -import Graphics.UI.GLUT as GLUT +import Graphics.UI.GLUT hunk ./examples/RedBook/Select.hs 143 - initialDisplayMode $= [ Single, GLUT.RGB, Depth ] + initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] hunk ./examples/RedBook/Smooth.hs 12 - -import Graphics.Rendering.OpenGL -import Graphics.UI.GLUT as GLUT +import Graphics.UI.GLUT hunk ./examples/RedBook/Smooth.hs 57 - initialDisplayMode $= [ Single, GLUT.RGB ] + initialDisplayMode $= [ SingleBuffered, RGBMode ] hunk ./examples/RedBook/Tess.hs 20 - -import Graphics.Rendering.OpenGL -import Graphics.UI.GLUT as GLUT +import Graphics.UI.GLUT hunk ./examples/RedBook/Tess.hs 129 - initialDisplayMode $= [ Single, GLUT.RGB ] + initialDisplayMode $= [ SingleBuffered, RGBMode ] hunk ./examples/RedBook/TessWind.hs 16 - -import Graphics.Rendering.OpenGL -import Graphics.UI.GLUT as GLUT +import Graphics.UI.GLUT hunk ./examples/RedBook/TessWind.hs 193 - initialDisplayMode $= [ Single, GLUT.RGB ] + initialDisplayMode $= [ SingleBuffered, RGBMode ] addfile ./examples/RedBook/BezCurve.hs addfile ./examples/RedBook/BezMesh.hs addfile ./examples/RedBook/BezSurf.hs hunk ./examples/RedBook/BezCurve.hs 1 +{- + BezCurve.hs (adapted from fog.c which is (c) Silicon Graphics, Inc) + Copyright (c) Sven Panne 2003 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program uses evaluators to draw a Bezier curve. +-} + +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +ctrlPoints :: [Vertex3 GLfloat] +ctrlPoints = [ Vertex3 (-4)(-4) 0, Vertex3 (-2) 4 0, + Vertex3 2 (-4) 0, Vertex3 4 4 0 ] + +myInit :: IO () +myInit = do + clearColor $= Color4 0 0 0 0 + shadeModel $= Flat + m <- newMap1 (0, 1) ctrlPoints + map1 $= Just (m :: GLmap1 Vertex3 GLfloat) + +display :: DisplayCallback +display = do + clear [ ColorBuffer ] + -- resolve overloading, not needed in "real" programs + let color3f = color :: Color3 GLfloat -> IO () + color3f (Color3 1 1 1) + renderPrimitive LineStrip $ + mapM_ evalCoord1 [ i/30.0 :: GLfloat | i <- [0..30] ] + -- The following code displays the control points as dots. + pointSize $= 5 + color3f (Color3 1 1 0) + renderPrimitive Points $ + mapM_ vertex ctrlPoints + flush + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + let wf = fromIntegral w + hf = fromIntegral h + if w <= h + then ortho (-5.0) 5.0 (-5.0*hf/wf) (5.0*hf/wf) (-5.0) 5.0 + else ortho (-5.0*wf/hf) (5.0*wf/hf) (-5.0) 5.0 (-5.0) 5.0 + matrixMode $= Modelview 0 + loadIdentity + +keyboard :: KeyboardMouseCallback +keyboard (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard _ _ _ _ = return () + +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, RGBMode ] + initialWindowSize $= Size 500 500 + initialWindowPosition $= Position 100 100 + createWindow progName + myInit + displayCallback $= display + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just keyboard + mainLoop hunk ./examples/RedBook/BezMesh.hs 1 +{- + BezCurve.hs (adapted from fog.c which is (c) Silicon Graphics, Inc) + Copyright (c) Sven Panne 2003 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program renders a lighted, filled Bezier surface, using two-dimensional + evaluators. +-} + +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Data.List ( transpose ) +import Graphics.UI.GLUT + +ctrlPoints :: [[Vertex3 GLfloat]] +ctrlPoints = [ + [ Vertex3 (-1.5) (-1.5) 4.0, Vertex3 (-0.5) (-1.5) 2.0, + Vertex3 0.5 (-1.5) (-1.0), Vertex3 1.5 (-1.5) 2.0 ], + [ Vertex3 (-1.5) (-0.5) 1.0, Vertex3 (-0.5) (-0.5) 3.0, + Vertex3 0.5 (-0.5) 0.0, Vertex3 1.5 (-0.5) (-1.0) ], + [ Vertex3 (-1.5) 0.5 4.0, Vertex3 (-0.5) 0.5 0.0, + Vertex3 0.5 0.5 3.0, Vertex3 1.5 0.5 4.0 ], + [ Vertex3 (-1.5) 1.5 (-2.0), Vertex3 (-0.5) 1.5 (-2.0), + Vertex3 0.5 1.5 0.0, Vertex3 1.5 1.5 (-1.0) ]] + +initlights :: IO () +initlights = do + lighting $= Enabled + light (Light 0) $= Enabled + + ambient (Light 0) $= Color4 0.2 0.2 0.2 1.0 + position (Light 0) $= Vertex4 0 0 2 1 + + materialDiffuse Front $= Color4 0.6 0.6 0.6 1.0 + materialSpecular Front $= Color4 1.0 1.0 1.0 1.0 + materialShininess Front $= 50 + +display :: DisplayCallback +display = do + clear [ ColorBuffer, DepthBuffer ] + matrixExcursion $ do + rotate (85 :: GLfloat) (Vector3 1 1 1) + evalMesh2 Fill (0, 20) (0, 20) + flush + +myInit :: IO () +myInit = do + clearColor $= Color4 0 0 0 0 + depthFunc $= Just Less + m <- newMap2 (0, 1) (0, 1) (transpose ctrlPoints) + map2 $= Just (m :: GLmap2 Vertex3 GLfloat) + autoNormal $= Enabled + mapGrid2 $= ((20, (0, 1)), (20, (0, 1 :: GLfloat))) + initlights -- for lighted version only + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + let wf = fromIntegral w + hf = fromIntegral h + if w <= h + then ortho (-4.0) 4.0 (-4.0*hf/wf) (4.0*hf/wf) (-4.0) 4.0 + else ortho (-4.0*wf/hf) (4.0*wf/hf) (-4.0) 4.0 (-4.0) 4.0 + matrixMode $= Modelview 0 + loadIdentity + +keyboard :: KeyboardMouseCallback +keyboard (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard _ _ _ _ = return () + +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] + initialWindowSize $= Size 500 500 + initialWindowPosition $= Position 100 100 + createWindow progName + myInit + reshapeCallback $= Just reshape + displayCallback $= display + keyboardMouseCallback $= Just keyboard + mainLoop hunk ./examples/RedBook/BezSurf.hs 1 +{- + BezCurve.hs (adapted from fog.c which is (c) Silicon Graphics, Inc) + Copyright (c) Sven Panne 2003 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program renders a wireframe Bezier surface, using two-dimensional + evaluators. +-} + +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +ctrlPoints :: [[Vertex3 GLfloat]] +ctrlPoints = [ + [ Vertex3 (-1.5) (-1.5) 4.0, Vertex3 (-0.5) (-1.5) 2.0, + Vertex3 0.5 (-1.5) (-1.0), Vertex3 1.5 (-1.5) 2.0 ], + [ Vertex3 (-1.5) (-0.5) 1.0, Vertex3 (-0.5) (-0.5) 3.0, + Vertex3 0.5 (-0.5) 0.0, Vertex3 1.5 (-0.5) (-1.0) ], + [ Vertex3 (-1.5) 0.5 4.0, Vertex3 (-0.5) 0.5 0.0, + Vertex3 0.5 0.5 3.0, Vertex3 1.5 0.5 4.0 ], + [ Vertex3 (-1.5) 1.5 (-2.0), Vertex3 (-0.5) 1.5 (-2.0), + Vertex3 0.5 1.5 0.0, Vertex3 1.5 1.5 (-1.0) ]] + +-- Hey mom, look, it's C! ;-) +for :: GLfloat -> GLfloat -> (GLfloat -> IO ()) -> IO () +for s e f = mapM_ f [ i | i <- [ s, if s <= e then s + 1 else s - 1 .. e ] ] + +display :: DisplayCallback +display = do + clear [ ColorBuffer, DepthBuffer ] + color (Color3 1 1 1 :: Color3 GLfloat) + matrixExcursion $ do + rotate (85 :: GLfloat) (Vector3 1 1 1) + for 0 8 $ \j -> do + renderPrimitive LineStrip $ do + for 0 30 $ \i -> evalCoord2 (i/30, j/ 8) + renderPrimitive LineStrip $ do + for 0 30 $ \i -> evalCoord2 (j/ 8, i/30) + flush + +myInit :: IO () +myInit = do + clearColor $= Color4 0 0 0 0 + m <- newMap2 (0, 1) (0, 1) ctrlPoints + map2 $= Just (m :: GLmap2 Vertex3 GLfloat) + mapGrid2 $= ((20, (0, 1)), (20, (0, 1 :: GLfloat))) + depthFunc $= Just Less + shadeModel $= Flat + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + let wf = fromIntegral w + hf = fromIntegral h + if w <= h + then ortho (-4.0) 4.0 (-4.0*hf/wf) (4.0*hf/wf) (-4.0) 4.0 + else ortho (-4.0*wf/hf) (4.0*wf/hf) (-4.0) 4.0 (-4.0) 4.0 + matrixMode $= Modelview 0 + loadIdentity + +keyboard :: KeyboardMouseCallback +keyboard (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard _ _ _ _ = return () + +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] + initialWindowSize $= Size 500 500 + initialWindowPosition $= Position 100 100 + createWindow progName + myInit + displayCallback $= display + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just keyboard + mainLoop hunk ./examples/Misc/FogCoordinate.hs 44 - matrixExcursion $ do + preservingMatrix $ do hunk ./examples/RedBook/BezMesh.hs 41 - matrixExcursion $ do + preservingMatrix $ do hunk ./examples/RedBook/BezSurf.hs 33 - matrixExcursion $ do + preservingMatrix $ do hunk ./examples/RedBook/Fog.hs 41 - matrixExcursion $ do + preservingMatrix $ do hunk ./examples/RedBook/PickDepth.hs 85 - pushName (Name 0) $ do + withName (Name 0) $ do hunk ./examples/RedBook/PickDepth.hs 87 - matrixExcursion $ do + preservingMatrix $ do hunk ./examples/RedBook/PickSquare.hs 37 - pushName (Name (fromIntegral j)) $ do + withName (Name (fromIntegral j)) $ do hunk ./examples/RedBook/PickSquare.hs 72 - pushName (Name 0) $ do + withName (Name 0) $ do hunk ./examples/RedBook/PickSquare.hs 74 - matrixExcursion $ do + preservingMatrix $ do hunk ./examples/RedBook/Select.hs 105 - pushName (Name 0) $ do - matrixExcursion $ do + withName (Name 0) $ do + preservingMatrix $ do hunk ./examples/RedBook/TessWind.hs 141 - matrixExcursion $ do + preservingMatrix $ do hunk ./examples/Misc/FogCoordinate.hs 19 - fogCoordinateSource $= FogCoordinate + fogCoordSrc $= FogCoord hunk ./Makefile 27 -SRC_HADDOCK_OPTS += -t "HOpenGL Libraries (GLUT package)" -p prologue.txt +SRC_HADDOCK_OPTS += -t "HOpenGL Libraries (GLUT package)" hunk ./prologue.txt 1 -The @GLUT@ package contains a Haskell binding for the OpenGL Utility Toolkit, a -window system independent toolkit for writing OpenGL programs. For more -information about the C library on which this binding is based, please see: -. rmfile ./prologue.txt addfile ./prologue.txt hunk ./prologue.txt 1 +The @GLUT@ package contains a Haskell binding for the OpenGL Utility Toolkit, a +window system independent toolkit for writing OpenGL programs. For more +information about the C library on which this binding is based, please see: +. hunk ./Makefile 29 -# yeuch, have to get GL_CFLAGS & GLUT_LIBS in through CPP to package.conf.in +# yeuch, have to get GLUT_CFLAGS & GLUT_LIBS in through CPP to package.conf.in hunk ./Makefile 31 -PACKAGE_CPP_OPTS += -DGL_CFLAGS='$(patsubst %,$(comma)"%",$(GL_CFLAGS))' +PACKAGE_CPP_OPTS += -DGLUT_CFLAGS='$(patsubst %,$(comma)"%",$(GLUT_CFLAGS))' hunk ./package.conf.in 32 - extra_cc_opts = [ "" GL_CFLAGS ], + extra_cc_opts = [ "" GLUT_CFLAGS ], hunk ./include/HsGLUT.h 21 +#if HAVE_WINDOWS_H +#include +#endif +#if HAVE_GL_GLUT_H hunk ./include/HsGLUT.h 26 +#else +#include "glut_local.h" +#endif hunk ./Graphics/UI/GLUT/Begin.hs 7 --- Maintainer : sven_panne@yahoo.com +-- Maintainer : sven.panne@aedion.de hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 7 --- Maintainer : sven_panne@yahoo.com +-- Maintainer : sven.panne@aedion.de hunk ./Graphics/UI/GLUT/Callbacks/Registration.hs 8 --- Maintainer : sven_panne@yahoo.com +-- Maintainer : sven.panne@aedion.de hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 7 --- Maintainer : sven_panne@yahoo.com +-- Maintainer : sven.panne@aedion.de hunk ./Graphics/UI/GLUT/Callbacks.hs 7 --- Maintainer : sven_panne@yahoo.com +-- Maintainer : sven.panne@aedion.de hunk ./Graphics/UI/GLUT/Colormap.hs 7 --- Maintainer : sven_panne@yahoo.com +-- Maintainer : sven.panne@aedion.de hunk ./Graphics/UI/GLUT/Constants.hs 8 --- Maintainer : sven_panne@yahoo.com +-- Maintainer : sven.panne@aedion.de hunk ./Graphics/UI/GLUT/Debugging.hs 7 --- Maintainer : sven_panne@yahoo.com +-- Maintainer : sven.panne@aedion.de hunk ./Graphics/UI/GLUT/DeviceControl.hs 7 --- Maintainer : sven_panne@yahoo.com +-- Maintainer : sven.panne@aedion.de hunk ./Graphics/UI/GLUT/Fonts.hs 7 --- Maintainer : sven_panne@yahoo.com +-- Maintainer : sven.panne@aedion.de hunk ./Graphics/UI/GLUT/GameMode.hs 7 --- Maintainer : sven_panne@yahoo.com +-- Maintainer : sven.panne@aedion.de hunk ./Graphics/UI/GLUT/Initialization.hs 7 --- Maintainer : sven_panne@yahoo.com +-- Maintainer : sven.panne@aedion.de hunk ./Graphics/UI/GLUT/Menu.hs 7 --- Maintainer : sven_panne@yahoo.com +-- Maintainer : sven.panne@aedion.de hunk ./Graphics/UI/GLUT/Objects.hs 7 --- Maintainer : sven_panne@yahoo.com +-- Maintainer : sven.panne@aedion.de hunk ./Graphics/UI/GLUT/Overlay.hs 7 --- Maintainer : sven_panne@yahoo.com +-- Maintainer : sven.panne@aedion.de hunk ./Graphics/UI/GLUT/QueryUtils.hs 8 --- Maintainer : sven_panne@yahoo.com +-- Maintainer : sven.panne@aedion.de hunk ./Graphics/UI/GLUT/State.hs 7 --- Maintainer : sven_panne@yahoo.com +-- Maintainer : sven.panne@aedion.de hunk ./Graphics/UI/GLUT/Types.hs 8 --- Maintainer : sven_panne@yahoo.com +-- Maintainer : sven.panne@aedion.de hunk ./Graphics/UI/GLUT/Window.hs 7 --- Maintainer : sven_panne@yahoo.com +-- Maintainer : sven.panne@aedion.de hunk ./Graphics/UI/GLUT.hs 7 --- Maintainer : sven_panne@yahoo.com +-- Maintainer : sven.panne@aedion.de hunk ./cbits/HsGLUT.c 7 - * Maintainer : sven_panne@yahoo.com + * Maintainer : sven.panne@aedion.de hunk ./examples/Misc/ExtractContours.hs 3 - Copyright (c) Sven Panne 2003 + Copyright (c) Sven Panne 2003 hunk ./examples/Misc/FogCoordinate.hs 3 - Copyright (c) Sven Panne 2003 + Copyright (c) Sven Panne 2003 hunk ./examples/Misc/Triangulate.hs 3 - Copyright (c) Sven Panne 2003 + Copyright (c) Sven Panne 2003 hunk ./examples/RedBook/BezCurve.hs 3 - Copyright (c) Sven Panne 2003 + Copyright (c) Sven Panne 2003 hunk ./examples/RedBook/BezMesh.hs 3 - Copyright (c) Sven Panne 2003 + Copyright (c) Sven Panne 2003 hunk ./examples/RedBook/BezSurf.hs 3 - Copyright (c) Sven Panne 2003 + Copyright (c) Sven Panne 2003 hunk ./examples/RedBook/Feedback.hs 3 - Copyright (c) Sven Panne 2003 + Copyright (c) Sven Panne 2003 hunk ./examples/RedBook/Fog.hs 3 - Copyright (c) Sven Panne 2003 + Copyright (c) Sven Panne 2003 hunk ./examples/RedBook/Hello.hs 3 - Copyright (c) Sven Panne 2003 + Copyright (c) Sven Panne 2003 hunk ./examples/RedBook/PickDepth.hs 3 - Copyright (c) Sven Panne 2003 + Copyright (c) Sven Panne 2003 hunk ./examples/RedBook/PickSquare.hs 3 - Copyright (c) Sven Panne 2003 + Copyright (c) Sven Panne 2003 hunk ./examples/RedBook/Select.hs 3 - Copyright (c) Sven Panne 2003 + Copyright (c) Sven Panne 2003 hunk ./examples/RedBook/Smooth.hs 3 - Copyright (c) Sven Panne 2003 + Copyright (c) Sven Panne 2003 hunk ./examples/RedBook/Tess.hs 3 - Copyright (c) Sven Panne 2003 + Copyright (c) Sven Panne 2003 hunk ./examples/RedBook/TessWind.hs 3 - Copyright (c) Sven Panne 2003 + Copyright (c) Sven Panne 2003 hunk ./include/HsGLUT.h 7 - * Maintainer : sven_panne@yahoo.com + * Maintainer : sven.panne@aedion.de hunk ./examples/Misc/ExtractContours.hs 17 -import Data.Either ( Either(..) ) hunk ./examples/Misc/Triangulate.hs 17 -import Data.Either ( Either(..) ) hunk ./examples/RedBook/Tess.hs 17 -import Data.Either ( Either(..) ) hunk ./examples/RedBook/TessWind.hs 13 -import Data.Either ( Either(..) ) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 495 - setCallback MotionCB glutPassiveMotionFunc (makeMotionCallback . unmarshal) + setCallback PassiveMotionCB glutPassiveMotionFunc + (makeMotionCallback . unmarshal) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 502 - hunk ./examples/RedBook/TessWind.hs 154 - [dl1, dl2, dl3, dl4] <- genLists 4 + [dl1, dl2, dl3, dl4] <- genObjectNames 4 addfile ./examples/RedBook/DList.hs hunk ./examples/RedBook/DList.hs 1 +{- + DList.hs (adapted from list.c which is (c) Silicon Graphics, Inc) + Copyright (c) Sven Panne 2003 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program demonstrates how to make and execute a + display list. Note that attributes, such as current + color and matrix, are changed. +-} + +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +myInit :: IO DisplayList +myInit = do + [listName] <- genObjectNames 1 + -- resolve overloading, not needed in "real" programs + let color3f = color :: Color3 GLfloat -> IO () + vertex2f = vertex :: Vertex2 GLfloat -> IO () + translatef = translate :: Vector3 GLfloat -> IO () + defineList listName Compile $ do + color3f (Color3 1 0 0) -- current color red + renderPrimitive Triangles $ do + vertex2f (Vertex2 0 0) + vertex2f (Vertex2 1 0) + vertex2f (Vertex2 0 1) + translatef (Vector3 1.5 0.0 0.0) -- move position + shadeModel $= Flat + return listName + +drawLine :: IO () +drawLine = do + -- resolve overloading, not needed in "real" programs + let vertex2f = vertex :: Vertex2 GLfloat -> IO () + renderPrimitive Lines $ do + vertex2f (Vertex2 0.0 0.5) + vertex2f (Vertex2 15.0 0.5) + +display :: DisplayList -> DisplayCallback +display listName = do + -- NOTE: The following 'loadIdentity' is missing in the original + -- example, but without it the translatef calls accumulate and + -- the graphics wander out of the window after a few redraws... + loadIdentity + + clear [ ColorBuffer ] + -- resolve overloading, not needed in "real" programs + let color3f = color :: Color3 GLfloat -> IO () + color3f (Color3 0 1 0) -- current color green + sequence_ (replicate 10 (callList listName)) -- draw 10 triangles + drawLine -- is this line green? NO! + -- where is the line drawn? + flush + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + let wf = fromIntegral w + hf = fromIntegral h + if (w <= h) + then ortho2D 0.0 2.0 (-0.5*hf/wf) (1.5*hf/wf) + else ortho2D 0.0 (2.0*wf/hf) (-0.5) 1.5 + matrixMode $= Modelview 0 + loadIdentity + +keyboard :: KeyboardMouseCallback +keyboard (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard _ _ _ _ = return () + +-- Open window with initial window size, title bar, +-- RGBA display mode, and handle input events. +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, RGBMode ] + initialWindowSize $= Size 650 50 + createWindow progName + listName <- myInit + reshapeCallback $= Just reshape + displayCallback $= display listName + keyboardMouseCallback $= Just keyboard + mainLoop addfile ./examples/RedBook/00-README hunk ./examples/RedBook/00-README 1 +This file lists the programs that are referenced in the OpenGL Programming +Guide, Fourth Edition, by chapter. For each program, the version of OpenGL +that is required is listed with the program. + +Chapter 1: Introduction to OpenGL + + Hello.hs (1.0) + Double.hs (1.0) + +Chapter 2: State Management and Drawing Geometric Objects + + Lines.hs (1.0) + Polys.hs (1.0) + VArray.hs (1.1) + MVarray.hs (1.4) + +Chapter 3: Viewing + + Cube.hs (1.0) + Model.hs (1.0) + Clip.hs (1.0) + Planet.hs (1.0) + Robot.hs (1.0) + Unproject.hs (1.1) + +Chapter 4: Color + + Smooth.hs (1.0) + +Chapter 5: Lighting + + Light.hs (1.0) + Movelight.hs (1.0) + Material.hs (1.0) + ColorMat.hs (1.1) + Scene.hs (1.0) + +qChapter 6: Blending, Antialiasing, Fog, and Polygon Offset + + BlendEqn.hs (1.3 or ARB_imaging_subset) + Alpha.hs (1.0) + Alpha3D.hs (1.1) + AARGB.hs (1.1) + AAIndex.hs (1.1) + Multisamp.hs (1.3) + Fog.hs (1.0) + FogIndex.hs (1.0) + FogCoord.hs (1.4) + PointP.hs (1.4) + PolyOff.hs (1.1) + +Chapter 7: Display Lists + + Torus.hs (1.0) + DList.hs (1.0) + Stroke.hs (1.0) + +Chapter 8: Drawing Pixels, Bitmaps, Fonts, and Images + + Drawf.hs (1.0) + Font.hs (1.0) + Image.hs (1.1) + ColorTable.hs (ARB_imaging_subset) + Convolution.hs (ARB_imaging_subset) + ColorMatrix.hs (ARB_imaging_subset) + Histogram.hs (ARB_imaging_subset) + MinMax.hs (ARB_imaging_subset) + +Chapter 9: Texture Mapping + + Checker.hs (1.0) + Texsub.hs (1.1) + Texture3D.hs (1.2) + Mipmap.hs (1.0) + TexBind.hs (1.1) + TexGen.hs (1.1) + CubeMap.hs (1.3) + MultiTex.hs (1.3 or ARB_multitexture) + Combiner.hs (1.3) + ShadowMap.hs (1.4) + Wrap.hs (1.0) + TexProx.hs (1.1) + +Chapter 10: The Framebuffer + + Stencil.hs (1.0) + AccPersp.hs (1.0) + AccAnti.hs (1.0) + DOF.hs (1.0) + +Chapter 11: Tessellators and Quadrics + + Tess.hs (1.1) + TessWind.hs (1.1) + Quadric.hs (1.1) + +Chapter 12: Evaluators and NURBS + + BezCurve.hs (1.1) + BezSurf.hs (1.1) + BezMesh.hs (1.1) + Texturesurf.hs (1.1) + Surface.hs (1.1) + SurfPoints.hs (1.2) + Trim.hs (1.1) + +Chapter 13: Selection and Feedback + + Select.hs (1.1) + PickSquare.hs (1.0) + PickDepth.hs (1.0) + Feedback.hs (1.0) + +Chapter 14: Now That You Know + + + +Color Plates: + + Teapots.hs (1.1) hunk ./Graphics/UI/GLUT/Begin.hs 4 --- Copyright : (c) Sven Panne 2003 +-- Copyright : (c) Sven Panne 2002-2004 hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 4 --- Copyright : (c) Sven Panne 2003 +-- Copyright : (c) Sven Panne 2002-2004 hunk ./Graphics/UI/GLUT/Callbacks/Registration.hs 5 --- Copyright : (c) Sven Panne 2003 +-- Copyright : (c) Sven Panne 2002-2004 hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 4 --- Copyright : (c) Sven Panne 2003 +-- Copyright : (c) Sven Panne 2002-2004 hunk ./Graphics/UI/GLUT/Callbacks.hs 4 --- Copyright : (c) Sven Panne 2003 +-- Copyright : (c) Sven Panne 2002-2004 hunk ./Graphics/UI/GLUT/Colormap.hs 4 --- Copyright : (c) Sven Panne 2003 +-- Copyright : (c) Sven Panne 2002-2004 hunk ./Graphics/UI/GLUT/Constants.hs 5 --- Copyright : (c) Sven Panne 2003 +-- Copyright : (c) Sven Panne 2002-2004 hunk ./Graphics/UI/GLUT/Debugging.hs 4 --- Copyright : (c) Sven Panne 2003 +-- Copyright : (c) Sven Panne 2002-2004 hunk ./Graphics/UI/GLUT/DeviceControl.hs 4 --- Copyright : (c) Sven Panne 2003 +-- Copyright : (c) Sven Panne 2002-2004 hunk ./Graphics/UI/GLUT/Fonts.hs 4 --- Copyright : (c) Sven Panne 2003 +-- Copyright : (c) Sven Panne 2002-2004 hunk ./Graphics/UI/GLUT/GameMode.hs 4 --- Copyright : (c) Sven Panne 2003 +-- Copyright : (c) Sven Panne 2002-2004 hunk ./Graphics/UI/GLUT/Initialization.hs 4 --- Copyright : (c) Sven Panne 2003 +-- Copyright : (c) Sven Panne 2002-2004 hunk ./Graphics/UI/GLUT/Menu.hs 4 --- Copyright : (c) Sven Panne 2003 +-- Copyright : (c) Sven Panne 2002-2004 hunk ./Graphics/UI/GLUT/Objects.hs 4 --- Copyright : (c) Sven Panne 2003 +-- Copyright : (c) Sven Panne 2002-2004 hunk ./Graphics/UI/GLUT/Overlay.hs 4 --- Copyright : (c) Sven Panne 2003 +-- Copyright : (c) Sven Panne 2002-2004 hunk ./Graphics/UI/GLUT/QueryUtils.hs 5 --- Copyright : (c) Sven Panne 2003 +-- Copyright : (c) Sven Panne 2002-2004 hunk ./Graphics/UI/GLUT/State.hs 4 --- Copyright : (c) Sven Panne 2003 +-- Copyright : (c) Sven Panne 2002-2004 hunk ./Graphics/UI/GLUT/Types.hs 5 --- Copyright : (c) Sven Panne 2003 +-- Copyright : (c) Sven Panne 2002-2004 hunk ./Graphics/UI/GLUT/Window.hs 4 --- Copyright : (c) Sven Panne 2003 +-- Copyright : (c) Sven Panne 2002-2004 hunk ./Graphics/UI/GLUT.hs 4 --- Copyright : (c) Sven Panne 2003 +-- Copyright : (c) Sven Panne 2002-2004 hunk ./LICENSE 1 -Copyright (c) 2003, Sven Panne +Copyright (c) 2002-2004, Sven Panne hunk ./cbits/HsGLUT.c 4 - * Copyright : (c) Sven Panne 2003 + * Copyright : (c) Sven Panne 2002-2004 hunk ./examples/Misc/ExtractContours.hs 3 - Copyright (c) Sven Panne 2003 + Copyright (c) Sven Panne 2002-2004 hunk ./examples/Misc/FogCoordinate.hs 3 - Copyright (c) Sven Panne 2003 + Copyright (c) Sven Panne 2002-2004 hunk ./examples/Misc/Triangulate.hs 3 - Copyright (c) Sven Panne 2003 + Copyright (c) Sven Panne 2002-2004 hunk ./examples/RedBook/BezCurve.hs 3 - Copyright (c) Sven Panne 2003 + Copyright (c) Sven Panne 2002-2004 hunk ./examples/RedBook/BezMesh.hs 3 - Copyright (c) Sven Panne 2003 + Copyright (c) Sven Panne 2002-2004 hunk ./examples/RedBook/BezSurf.hs 3 - Copyright (c) Sven Panne 2003 + Copyright (c) Sven Panne 2002-2004 hunk ./examples/RedBook/DList.hs 3 - Copyright (c) Sven Panne 2003 + Copyright (c) Sven Panne 2002-2004 hunk ./examples/RedBook/Feedback.hs 3 - Copyright (c) Sven Panne 2003 + Copyright (c) Sven Panne 2002-2004 hunk ./examples/RedBook/Fog.hs 3 - Copyright (c) Sven Panne 2003 + Copyright (c) Sven Panne 2002-2004 hunk ./examples/RedBook/Hello.hs 3 - Copyright (c) Sven Panne 2003 + Copyright (c) Sven Panne 2002-2004 hunk ./examples/RedBook/PickDepth.hs 3 - Copyright (c) Sven Panne 2003 + Copyright (c) Sven Panne 2002-2004 hunk ./examples/RedBook/PickSquare.hs 3 - Copyright (c) Sven Panne 2003 + Copyright (c) Sven Panne 2002-2004 hunk ./examples/RedBook/Select.hs 3 - Copyright (c) Sven Panne 2003 + Copyright (c) Sven Panne 2002-2004 hunk ./examples/RedBook/Smooth.hs 3 - Copyright (c) Sven Panne 2003 + Copyright (c) Sven Panne 2002-2004 hunk ./examples/RedBook/Tess.hs 3 - Copyright (c) Sven Panne 2003 + Copyright (c) Sven Panne 2002-2004 hunk ./examples/RedBook/TessWind.hs 3 - Copyright (c) Sven Panne 2003 + Copyright (c) Sven Panne 2002-2004 hunk ./include/HsGLUT.h 4 - * Copyright : (c) Sven Panne 2003 + * Copyright : (c) Sven Panne 2002-2004 addfile ./examples/RedBook/Polys.hs hunk ./examples/RedBook/Polys.hs 1 +{- + Polys.hs (adapted from polys.c which is (c) Silicon Graphics, Inc) + Copyright (c) Sven Panne 2002-2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program demonstrates polygon stippling. +-} + +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +fly :: PolygonStipple +fly = makePolygonStipple $ [ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x80, 0x01, 0xC0, 0x06, 0xC0, 0x03, 0x60, + 0x04, 0x60, 0x06, 0x20, 0x04, 0x30, 0x0C, 0x20, + 0x04, 0x18, 0x18, 0x20, 0x04, 0x0C, 0x30, 0x20, + 0x04, 0x06, 0x60, 0x20, 0x44, 0x03, 0xC0, 0x22, + 0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22, + 0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22, + 0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22, + 0x66, 0x01, 0x80, 0x66, 0x33, 0x01, 0x80, 0xCC, + 0x19, 0x81, 0x81, 0x98, 0x0C, 0xC1, 0x83, 0x30, + 0x07, 0xe1, 0x87, 0xe0, 0x03, 0x3f, 0xfc, 0xc0, + 0x03, 0x31, 0x8c, 0xc0, 0x03, 0x33, 0xcc, 0xc0, + 0x06, 0x64, 0x26, 0x60, 0x0c, 0xcc, 0x33, 0x30, + 0x18, 0xcc, 0x33, 0x18, 0x10, 0xc4, 0x23, 0x08, + 0x10, 0x63, 0xC6, 0x08, 0x10, 0x30, 0x0c, 0x08, + 0x10, 0x18, 0x18, 0x08, 0x10, 0x00, 0x00, 0x08] + +halftone :: PolygonStipple +halftone = makePolygonStipple . take 128 . cycle $ [ + 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55] + +display :: DisplayCallback +display = do + clear [ ColorBuffer ] + -- resolve overloading, not needed in "real" programs + let color3f = color :: Color3 GLfloat -> IO () + rectf = rect :: Vertex2 GLfloat -> Vertex2 GLfloat -> IO () + color3f (Color3 1 1 1) + + -- draw one solid, unstippled rectangle, + -- then two stippled rectangles + rectf (Vertex2 25 25) (Vertex2 125 125) + polygonStipple $= Just fly + rectf (Vertex2 125 25) (Vertex2 225 125) + polygonStipple $= Just halftone + rectf (Vertex2 225 25) (Vertex2 325 125) + polygonStipple $= Nothing + + flush + +myInit :: IO () +myInit = do + clearColor $= Color4 0 0 0 0 + shadeModel $= Flat + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + ortho2D 0.0 (fromIntegral w) 0.0 (fromIntegral h) + +keyboard :: KeyboardMouseCallback +keyboard (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard _ _ _ _ = return () + +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, RGBMode ] + initialWindowSize $= Size 350 150 + createWindow progName + myInit + displayCallback $= display + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just keyboard + mainLoop hunk ./prologue.txt 4 -. +. hunk ./Graphics/UI/GLUT/Fonts.hs 13 --- character is a bitmap generated with 'Graphics.Rendering.OpenGL.GL.bitmap'. --- Stroke fonts have the advantage that because they are geometry, they can be --- arbitrarily scale and rendered. Bitmap fonts are less flexible since they are --- rendered as bitmaps but are usually faster than stroke fonts. +-- character is a bitmap generated with +-- 'Graphics.Rendering.OpenGL.GL.Bitmaps.bitmap'. Stroke fonts have the +-- advantage that because they are geometry, they can be arbitrarily scale and +-- rendered. Bitmap fonts are less flexible since they are rendered as bitmaps +-- but are usually faster than stroke fonts. addfile ./examples/RedBook/DrawF.hs addfile ./examples/RedBook/Font.hs addfile ./examples/RedBook/Image.hs hunk ./examples/RedBook/00-README 60 - Drawf.hs (1.0) + DrawF.hs (1.0) hunk ./examples/RedBook/DrawF.hs 1 +{- + DrawF.hs (adapted from drawf.c which is (c) Silicon Graphics, Inc) + Copyright (c) Sven Panne 2002-2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + Draws the bitmapped letter F on the screen (several times). + This demonstrates use of the bitmap call. +-} + +import Foreign ( Ptr, newArray ) +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +myInit :: IO (Ptr GLubyte) +myInit = do + rowAlignment Unpack $= 1 + clearColor $= Color4 0 0 0 0 + newArray [ + 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, + 0xff, 0x00, 0xff, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, + 0xff, 0xc0, 0xff, 0xc0 ] + +display :: Ptr GLubyte -> DisplayCallback +display rasters = do + clear [ ColorBuffer ] + -- resolve overloading, not needed in "real" programs + let color3f = color :: Color3 GLfloat -> IO () + rasterPos2i = rasterPos :: Vertex2 GLint -> IO () + color3f (Color3 1 1 1) + rasterPos2i (Vertex2 20 20) + sequence_ $ replicate 3 $ + bitmap (Size 10 12) (Vertex2 0 0) (Vector2 11 0) rasters + flush + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + ortho 0 (fromIntegral w) 0 (fromIntegral h) (-1) 1 + matrixMode $= Modelview 0 + +keyboard :: KeyboardMouseCallback +keyboard (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard _ _ _ _ = return () + +-- Main Loop +-- Open window with initial window size, title bar, +-- RGBA display mode, and handle input events. +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, RGBMode ] + initialWindowSize $= Size 100 100 + initialWindowPosition $= Position 100 100 + createWindow progName + rasters <- myInit + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just keyboard + displayCallback $= display rasters + mainLoop hunk ./examples/RedBook/Font.hs 1 +{- + Font.hs (adapted from font.c which is (c) Silicon Graphics, Inc) + Copyright (c) Sven Panne 2002-2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + Draws some text in a bitmapped font. Uses bitmap and other pixel + routines. Also demonstrates use of display lists. +-} + +import Control.Monad ( zipWithM_ ) +import Data.Char ( ord ) +import Data.List ( genericLength ) +import Foreign ( withArray ) +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +space :: [GLubyte] +space = [ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ] + +letters :: [[GLubyte]] +letters = [ + [ 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, 0xff, 0xc3, 0xc3, 0xc3, 0x66, 0x3c, 0x18 ], + [ 0x00, 0x00, 0xfe, 0xc7, 0xc3, 0xc3, 0xc7, 0xfe, 0xc7, 0xc3, 0xc3, 0xc7, 0xfe ], + [ 0x00, 0x00, 0x7e, 0xe7, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xe7, 0x7e ], + [ 0x00, 0x00, 0xfc, 0xce, 0xc7, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc7, 0xce, 0xfc ], + [ 0x00, 0x00, 0xff, 0xc0, 0xc0, 0xc0, 0xc0, 0xfc, 0xc0, 0xc0, 0xc0, 0xc0, 0xff ], + [ 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xfc, 0xc0, 0xc0, 0xc0, 0xff ], + [ 0x00, 0x00, 0x7e, 0xe7, 0xc3, 0xc3, 0xcf, 0xc0, 0xc0, 0xc0, 0xc0, 0xe7, 0x7e ], + [ 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xff, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3 ], + [ 0x00, 0x00, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7e ], + [ 0x00, 0x00, 0x7c, 0xee, 0xc6, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 ], + [ 0x00, 0x00, 0xc3, 0xc6, 0xcc, 0xd8, 0xf0, 0xe0, 0xf0, 0xd8, 0xcc, 0xc6, 0xc3 ], + [ 0x00, 0x00, 0xff, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0 ], + [ 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xdb, 0xff, 0xff, 0xe7, 0xc3 ], + [ 0x00, 0x00, 0xc7, 0xc7, 0xcf, 0xcf, 0xdf, 0xdb, 0xfb, 0xf3, 0xf3, 0xe3, 0xe3 ], + [ 0x00, 0x00, 0x7e, 0xe7, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xe7, 0x7e ], + [ 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xfe, 0xc7, 0xc3, 0xc3, 0xc7, 0xfe ], + [ 0x00, 0x00, 0x3f, 0x6e, 0xdf, 0xdb, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x66, 0x3c ], + [ 0x00, 0x00, 0xc3, 0xc6, 0xcc, 0xd8, 0xf0, 0xfe, 0xc7, 0xc3, 0xc3, 0xc7, 0xfe ], + [ 0x00, 0x00, 0x7e, 0xe7, 0x03, 0x03, 0x07, 0x7e, 0xe0, 0xc0, 0xc0, 0xe7, 0x7e ], + [ 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff ], + [ 0x00, 0x00, 0x7e, 0xe7, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3 ], + [ 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x66, 0x66, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3 ], + [ 0x00, 0x00, 0xc3, 0xe7, 0xff, 0xff, 0xdb, 0xdb, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3 ], + [ 0x00, 0x00, 0xc3, 0x66, 0x66, 0x3c, 0x3c, 0x18, 0x3c, 0x3c, 0x66, 0x66, 0xc3 ], + [ 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x3c, 0x66, 0x66, 0xc3 ], + [ 0x00, 0x00, 0xff, 0xc0, 0xc0, 0x60, 0x30, 0x7e, 0x0c, 0x06, 0x03, 0x03, 0xff ]] + +makeRasterFont :: IO DisplayList +makeRasterFont = do + rowAlignment Unpack $= 1 + + fontDisplayLists@(fontOffset:_) <- genObjectNames 128 + let listsStartingWith ch = drop (ord ch) fontDisplayLists + makeLetter dl letter = + defineList dl Compile $ + withArray letter $ + bitmap (Size 8 13) (Vertex2 0 2) (Vector2 10 0) + + zipWithM_ makeLetter (listsStartingWith 'A') letters + makeLetter (head (listsStartingWith ' ')) space + return fontOffset + +myInit :: IO DisplayList +myInit = do + shadeModel $= Flat + makeRasterFont + +printString :: DisplayList -> String -> IO () +printString fontOffset s = + preservingAttrib [ ListAttributes ] $ do + listBase $= fontOffset + withArray (stringToGLubytes s) $ + callLists (genericLength s) UnsignedByte + +stringToGLubytes :: String -> [GLubyte] +stringToGLubytes = map (fromIntegral . ord) + +-- Everything above this line could be in a library +-- that defines a font. To make it work, you've got +-- to call makeRasterFont before you start making +-- calls to printString. +display :: DisplayList -> DisplayCallback +display fontOffset = do + let white = Color3 1 1 1 + + clear [ ColorBuffer ] + -- resolve overloading, not needed in "real" programs + let color3f = color :: Color3 GLfloat -> IO () + rasterPos2i = rasterPos :: Vertex2 GLint -> IO () + color3f white + + rasterPos2i (Vertex2 20 60) + printString fontOffset "THE QUICK BROWN FOX JUMPS" + rasterPos2i (Vertex2 20 40) + printString fontOffset "OVER A LAZY DOG" + flush + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + ortho 0 (fromIntegral w) 0 (fromIntegral h) (-1) 1 + matrixMode $= Modelview 0 + +keyboard :: KeyboardMouseCallback +keyboard (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard _ _ _ _ = return () + +-- Main Loop +-- Open window with initial window size, title bar, +-- RGBA display mode, and handle input events. +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, RGBMode ] + initialWindowSize $= Size 300 100 + initialWindowPosition $= Position 100 100 + createWindow progName + fontOffset <- myInit + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just keyboard + displayCallback $= display fontOffset + mainLoop hunk ./examples/RedBook/Image.hs 1 +{- + Image.hs (adapted from image.c which is (c) Silicon Graphics, Inc) + Copyright (c) Sven Panne 2002-2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program demonstrates drawing pixels and shows the effect of + drawPixels, copyPixels, and pixelZoom. + + Interaction: moving the mouse while pressing the mouse button will copy + the image in the lower-left corner of the window to the mouse position, + using the current pixel zoom factors. There is no attempt to prevent you + from drawing over the original image. If you press the 'r' key, the + original image and zoom factors are reset. If you press the 'z' or 'Z' + keys, you change the zoom factors. +-} + +import Data.IORef ( IORef, newIORef, readIORef, writeIORef, modifyIORef ) +import Foreign ( Ptr, newArray, (.&.) ) +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +-- Create checkerboard image +checkImageSize :: Size +checkImageSize = Size 64 64 + +type PixelDescriptor = (PixelFormat, DataType, Ptr (Color3 GLubyte)) + +makeCheckImage :: IO PixelDescriptor +makeCheckImage = do + let Size w h = checkImageSize + buf <- newArray [ Color3 c c c | + i <- [ 0 .. w - 1 ], + j <- [ 0 .. h - 1 ], + let c | (i .&. 0x8) == (j .&. 0x8) = 0 + | otherwise = 255 ] + return (RGB, UnsignedByte, buf) + +myInit :: IO PixelDescriptor +myInit = do + clearColor $= Color4 0 0 0 0 + shadeModel $= Flat + rowAlignment Unpack $= 1 + makeCheckImage + +display :: PixelDescriptor -> DisplayCallback +display (format, dataType, ptr) = do + clear [ ColorBuffer ] + -- resolve overloading, not needed in "real" programs + let rasterPos2i = rasterPos :: Vertex2 GLint -> IO () + rasterPos2i (Vertex2 0 0) + drawPixels checkImageSize format dataType ptr + flush + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + ortho2D 0 (fromIntegral w) 0 (fromIntegral h) + matrixMode $= Modelview 0 + loadIdentity + +motion :: IORef GLfloat -> MotionCallback +motion zoomFactor (Position x y) = do + Size _ height <- get windowSize + let screenY = height - y + -- resolve overloading, not needed in "real" programs + let rasterPos2i = rasterPos :: Vertex2 GLint -> IO () + rasterPos2i (Vertex2 x screenY) + z <- readIORef zoomFactor + pixelZoom $= (z, z) + copyPixels (Position 0 0) checkImageSize CopyColor + pixelZoom $= (1, 1) + flush + +resetZoomFactor :: IORef GLfloat -> IO () +resetZoomFactor zoomFactor = do + writeIORef zoomFactor 1.0 + postRedisplay Nothing + putStrLn "zoomFactor reset to 1.0" + +incZoomFactor :: IORef GLfloat -> GLfloat -> IO () +incZoomFactor zoomFactor inc = do + modifyIORef zoomFactor (max 0.5 . min 3.0 . (+ inc)) + readIORef zoomFactor >>= putStrLn . ("zoomFactor is now " ++) . show + +keyboard :: IORef GLfloat -> KeyboardMouseCallback +keyboard zoomFactor (Char 'r') Down _ _ = resetZoomFactor zoomFactor +keyboard zoomFactor (Char 'R') Down _ _ = resetZoomFactor zoomFactor +keyboard zoomFactor (Char 'z') Down _ _ = incZoomFactor zoomFactor 0.5 +keyboard zoomFactor (Char 'Z') Down _ _ = incZoomFactor zoomFactor (-0.5) +keyboard _ (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard _ _ _ _ _ = return () + +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, RGBMode ] + initialWindowSize $= Size 250 250 + initialWindowPosition $= Position 100 100 + createWindow progName + checkImage <- myInit + displayCallback $= display checkImage + reshapeCallback $= Just reshape + zoomFactor <- newIORef 1.0 + keyboardMouseCallback $= Just (keyboard zoomFactor) + motionCallback $= Just (motion zoomFactor) + mainLoop hunk ./examples/RedBook/Polys.hs 13 -fly :: PolygonStipple -fly = makePolygonStipple $ [ +fly :: IO GLpolygonstipple +fly = newPolygonStipple [ hunk ./examples/RedBook/Polys.hs 32 -halftone :: PolygonStipple -halftone = makePolygonStipple . take 128 . cycle $ [ +halftone :: IO GLpolygonstipple +halftone = newPolygonStipple . take 128 . cycle $ [ hunk ./examples/RedBook/Polys.hs 36 -display :: DisplayCallback -display = do +display :: (GLpolygonstipple, GLpolygonstipple) -> DisplayCallback +display (flyStipple, halftoneStipple) = do hunk ./examples/RedBook/Polys.hs 47 - polygonStipple $= Just fly + polygonStipple $= Just flyStipple hunk ./examples/RedBook/Polys.hs 49 - polygonStipple $= Just halftone + polygonStipple $= Just halftoneStipple hunk ./examples/RedBook/Polys.hs 51 - polygonStipple $= Nothing + polygonStipple $= (Nothing :: Maybe GLpolygonstipple) hunk ./examples/RedBook/Polys.hs 55 -myInit :: IO () +myInit :: IO (GLpolygonstipple, GLpolygonstipple) hunk ./examples/RedBook/Polys.hs 59 + flyStipple <- fly + halftoneStipple <- halftone + return (flyStipple, halftoneStipple) hunk ./examples/RedBook/Polys.hs 80 - myInit - displayCallback $= display + stipples <- myInit + displayCallback $= display stipples hunk ./Graphics/UI/GLUT/Callbacks/Registration.hs 15 - CallbackType(..), registerForCleanup, setCallback + CallbackType(..), registerForCleanup, setCallback, getCurrentWindow hunk ./Graphics/UI/GLUT/Callbacks/Registration.hs 59 - else liftM Just $ get currentWindow + else liftM Just $ getCurrentWindow "getCallbackID" hunk ./Graphics/UI/GLUT/Callbacks/Registration.hs 62 +getCurrentWindow :: String -> IO Window +getCurrentWindow func = do + win <- get currentWindow + maybe (error (func ++ ": no current window")) return win + hunk ./Graphics/UI/GLUT/Menu.hs 38 -import Graphics.UI.GLUT.Window ( Window, currentWindow ) +import Graphics.UI.GLUT.Window ( Window ) +import Graphics.UI.GLUT.Callbacks.Registration ( getCurrentWindow ) hunk ./Graphics/UI/GLUT/Menu.hs 74 - win <- get currentWindow + win <- getCurrentWindow "attachMenu" hunk ./Graphics/UI/GLUT/Window.hs 28 - currentWindow, isRealWindow, + currentWindow, hunk ./Graphics/UI/GLUT/Window.hs 134 --- top-level window, a pseudo window is returned, see 'isRealWindow'. +-- top-level window, 'Nothing' is returned. hunk ./Graphics/UI/GLUT/Window.hs 136 -parentWindow :: GettableStateVar Window +parentWindow :: GettableStateVar (Maybe Window) hunk ./Graphics/UI/GLUT/Window.hs 139 - simpleGet makeWindow glut_WINDOW_PARENT + getWindow (simpleGet makeWindow glut_WINDOW_PARENT) hunk ./Graphics/UI/GLUT/Window.hs 157 --- /current window/, the /current window/ becomes invalid ('getWindow' will --- return 'Nothing'). +-- /current window/, the /current window/ becomes invalid ('currentWindow' will +-- contain 'Nothing'). hunk ./Graphics/UI/GLUT/Window.hs 166 --- the window; this is done using 'Graphics.UI.GLUT.Overlay.layerInUse'. If no --- windows exist or the previously /current window/ was destroyed, a pseudo --- window is returned, see 'isRealWindow'. +-- the window; this is done using 'Graphics.UI.GLUT.Overlay.layerInUse'. +-- Contains 'Nothing' if no windows exist or the previously /current window/ was +-- destroyed. Setting the /current window/ to 'Nothing' is a no-op. hunk ./Graphics/UI/GLUT/Window.hs 170 -currentWindow :: StateVar Window -currentWindow = makeStateVar glutGetWindow glutSetWindow +currentWindow :: StateVar (Maybe Window) +currentWindow = + makeStateVar (getWindow glutGetWindow) (maybe (return ()) glutSetWindow) + +getWindow :: IO Window -> IO (Maybe Window) +getWindow act = do + win <- act + return $ if win == makeWindow 0 then Nothing else Just win hunk ./Graphics/UI/GLUT/Window.hs 183 --- | Returns 'True' if the given window identifier refers to a real window, not --- a pseudo one. - -isRealWindow :: Window -> Bool -isRealWindow = (/= makeWindow 0) - hunk ./Graphics/UI/GLUT/Callbacks/Registration.hs 71 -{-# notInline theCallbackTable #-} +{-# NOINLINE theCallbackTable #-} hunk ./Graphics/UI/GLUT/Callbacks/Registration.hs 104 -{-# notInline theCleanupList #-} +{-# NOINLINE theCleanupList #-} hunk ./Graphics/UI/GLUT/Callbacks/Registration.hs 118 -{-# notInline theScavenger #-} +{-# NOINLINE theScavenger #-} hunk ./Graphics/UI/GLUT/Menu.hs 129 -{-# notInline theMenuTable #-} +{-# NOINLINE theMenuTable #-} hunk ./Graphics/UI/GLUT/Debugging.hs 20 +import System.Environment ( getProgName ) +import System.IO ( hPutStrLn, stderr ) +import Graphics.Rendering.OpenGL.GL.StateVar ( get ) +import Graphics.Rendering.OpenGL.GLU.Errors ( Error(..), errors ) + +-------------------------------------------------------------------------------- + hunk ./Graphics/UI/GLUT/Debugging.hs 32 -foreign import CALLCONV unsafe "glutReportErrors" reportErrors :: IO () +reportErrors :: IO () +reportErrors = get errors >>= mapM_ reportError + +reportError :: Error -> IO () +reportError (Error _ msg) = do + pn <- getProgName + hPutStrLn stderr ("GLUT: Warning in " ++ pn ++ ": GL error: " ++ msg) hunk ./examples/Misc/ExtractContours.hs 17 -import Foreign.Storable ( Storable ) -import System.Exit ( exitWith, ExitCode(ExitSuccess), exitFailure ) +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) hunk ./examples/Misc/ExtractContours.hs 78 - simpleContourExtractor TessWindingOdd noOpCombiner rectAndTri + extractContours TessWindingOdd 0 (Normal3 0 0 0) noOpCombiner rectAndTri hunk ./examples/Misc/ExtractContours.hs 82 - simpleContourExtractor TessWindingPositive combineColors star + extractContours TessWindingPositive 0 (Normal3 0 0 0) combineColors star hunk ./examples/Misc/ExtractContours.hs 86 -simpleContourExtractor :: - Storable v => - TessWinding -> Combiner v -> ComplexPolygon v -> IO (PolygonContours v) -simpleContourExtractor windingRule combiner complexPolygon = - checkForError $ - extractContours windingRule 0 (Normal3 0 0 0) combiner complexPolygon - -checkForError :: IO (Either Error (PolygonContours v)) -> IO (PolygonContours v) -checkForError action = do - errorOrContours <- action - case errorOrContours of - Left (Error _category description) -> do - putStrLn description - exitFailure - Right contours -> - return contours - hunk ./examples/Misc/Triangulate.hs 17 -import System.Exit ( exitWith, ExitCode(ExitSuccess), exitFailure ) +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) hunk ./examples/Misc/Triangulate.hs 67 - defineNewList Compile $ do - triangulation <- - checkForError $ - triangulate windingRule 0 (Normal3 0 0 0) noOpCombiner complexPolygon - drawTriangulation triangulation - -checkForError :: - IO (Either Error (Triangulation DontCare)) -> IO (Triangulation DontCare) -checkForError action = do - errorOrContours <- action - case errorOrContours of - Left (Error _category description) -> do - putStrLn description - exitFailure - Right contours -> - return contours + defineNewList Compile $ + drawTriangulation =<< + triangulate windingRule 0 (Normal3 0 0 0) noOpCombiner complexPolygon hunk ./examples/RedBook/Tess.hs 17 -import Foreign.Storable ( Storable ) -import System.Exit ( exitWith, ExitCode(ExitSuccess), exitFailure ) +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) hunk ./examples/RedBook/Tess.hs 78 - simpleTessellator TessWindingOdd noOpCombiner rectAndTri + tessellate TessWindingOdd 0 (Normal3 0 0 0) noOpCombiner rectAndTri hunk ./examples/RedBook/Tess.hs 82 - simpleTessellator TessWindingPositive combineColors star + tessellate TessWindingPositive 0 (Normal3 0 0 0) combineColors star hunk ./examples/RedBook/Tess.hs 86 -simpleTessellator :: - Storable v => - TessWinding -> Combiner v -> ComplexPolygon v -> IO (SimplePolygon v) -simpleTessellator windingRule combiner complexPolygon = - checkForError $ - tessellate windingRule 0 (Normal3 0 0 0) combiner complexPolygon - -checkForError :: IO (Either Error (SimplePolygon v)) -> IO (SimplePolygon v) -checkForError action = do - errorOrContours <- action - case errorOrContours of - Left (Error _category description) -> do - putStrLn description - exitFailure - Right contours -> - return contours - hunk ./examples/RedBook/TessWind.hs 14 -import System.Exit ( exitWith, ExitCode(ExitSuccess), exitFailure ) +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) hunk ./examples/RedBook/TessWind.hs 107 - defineList displayList Compile $ do - simplePolygon <- checkForError $ + defineList displayList Compile $ + drawSimplePolygon =<< hunk ./examples/RedBook/TessWind.hs 110 - drawSimplePolygon simplePolygon - -checkForError :: - IO (Either Error (SimplePolygon DontCare)) -> IO (SimplePolygon DontCare) -checkForError action = do - errorOrContours <- action - case errorOrContours of - Left (Error _category description) -> do - putStrLn description - exitFailure - Right contours -> - return contours hunk ./examples/RedBook/Image.hs 18 +import Data.Bits ( (.&.) ) hunk ./examples/RedBook/Image.hs 20 -import Foreign ( Ptr, newArray, (.&.) ) +import Foreign.Marshal.Array ( newArray ) hunk ./examples/RedBook/Image.hs 28 -type PixelDescriptor = (PixelFormat, DataType, Ptr (Color3 GLubyte)) - -makeCheckImage :: IO PixelDescriptor +makeCheckImage :: IO (PixelData (Color3 GLubyte)) hunk ./examples/RedBook/Image.hs 36 - return (RGB, UnsignedByte, buf) + return $ PixelData RGB UnsignedByte buf hunk ./examples/RedBook/Image.hs 38 -myInit :: IO PixelDescriptor +myInit :: IO (PixelData (Color3 GLubyte)) hunk ./examples/RedBook/Image.hs 45 -display :: PixelDescriptor -> DisplayCallback -display (format, dataType, ptr) = do +display :: PixelData a -> DisplayCallback +display pixelData = do hunk ./examples/RedBook/Image.hs 51 - drawPixels checkImageSize format dataType ptr + drawPixels checkImageSize pixelData hunk ./examples/RedBook/00-README 38 -qChapter 6: Blending, Antialiasing, Fog, and Polygon Offset +Chapter 6: Blending, Antialiasing, Fog, and Polygon Offset addfile ./examples/RedBook/ColorTable.hs adddir ./examples/RedBook/Data addfile ./examples/RedBook/Data/leeds.bin addfile ./examples/RedBook/ReadImage.hs hunk ./examples/RedBook/ColorTable.hs 1 +{- + ColorTable.hs (adapted from colortable.c which is (c) Silicon Graphics, Inc.) + Copyright (c) Sven Panne 2002-2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + Invert a passed block of pixels. This program illustrates the use of the + colorTable function. +-} + +import Foreign.Marshal.Array ( withArray ) +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT +import ReadImage + +myInit :: IO () +myInit = do + rowAlignment Unpack $= 1 + clearColor $= Color4 0 0 0 0 + -- Set up an inverse color table + let tableSize = 256 + t = fromIntegral (tableSize - 1) :: GLubyte + withArray [ Color3 i i i | i <- [ t, t - 1 .. 0 ] ] $ \buf -> + colorTable NoProxy ColorTable RGB' tableSize (PixelData RGB UnsignedByte buf) + colorTableStage ColorTableStage $= Enabled + +display :: Size -> PixelData a -> DisplayCallback +display size pixels = do + clear [ ColorBuffer ] + -- resolve overloading, not needed in "real" programs + let rasterPos2i = rasterPos :: Vertex2 GLint -> IO () + rasterPos2i (Vertex2 1 1) + drawPixels size pixels + flush + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + ortho 0 (fromIntegral w) 0 (fromIntegral h) (-1) 1 + matrixMode $= Modelview 0 + +keyboard :: KeyboardMouseCallback +keyboard (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard _ _ _ _ = return () + +-- Main Loop: Open window with initial window size, title bar, RGBA display +-- mode, and handle input events. +main :: IO () +main = do + (progName, args) <- getArgsAndInitialize + (size, pixels) <- readImage (if null args then "Data/leeds.bin" else head args) + initialDisplayMode $= [ SingleBuffered, RGBMode ] + initialWindowSize $= size + initialWindowPosition $= Position 100 100 + createWindow progName + myInit + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just keyboard + displayCallback $= display size pixels + mainLoop binary ./examples/RedBook/Data/leeds.bin oldhex * newhex *0000025700000191cdd9dcd0dbdcc0d6d393af736da567629d646fa76f73a56a70a57080b18281 *b07d87b18281b08287b68c82b48b87bd918aba8f8dbd9698be9b98c4a398c1a2a0c6aaa0c5aaa4 *cbaba4c9aca6cbafa8cdb4a9cdb3aeccb8b0cfbbb0d1bfb7d2c2b7d6c6bad8c8bbd7c9bcdbcbbd *dbcfbddccfbedbcebdd7ccbbd6cabed8cec3dfd6c3ddd5c4ded5c3ddd6c7dfd8c2dcd1cce3ddcb *e1dac6e2dcc9e2dbc9e2ddcae4dfcbe3e1cee3dfcae0ddcfe0ddcfe3e0cfe6e2d1e5e3d0e2e0d4 *e6e6d6e7e6d3e4e5d4e7e6d5e8ead6eae8d6e8e9d8e9e9d8eae9d7e7e8d6e7e8dae7eadbe7eadc *e8ead9e8eadbeaeadbeaeadbeaead9e6ead9e7eadceaecdde9ecdce9ebdbeaeadceaecddeaecdd *eaecddeaeddeeaece1eaebdfeaebdeecebddeaecdfeeeddeececdeebeddeeaede0eaede0eaece0 *ecf0deebeedfebf0dee9edddebeddde9ecdde9eae0ebecdeeaebe0ebebdceaecdeebeadeebecde *ebebdfeaeedee8ede0eaede0eaede0eaeddee9ecdeeaefdee9eedeeaeddeeaeddfeaecdfeaebe0 *eaebddeaecddebeee0eaeedeeaeeddebecdfebecdfeceee0e9eadfeaebdfeceddfebecdfeaeedd *eaefdeebecdeeceadfeaebe0e8eae0e9eadeeaecdee9eddee9eedceaecdde8eadeeae9dfe9e8df *e8eadfe9ebddeaeddeeaeeddebeedfeaebdfe9ebdee8ebdee8ebdfe8e9e0e9ebdee8ecdee8ecde *e9ecdee8eadfe8eadee8e8e0e7e8e0e7e9dfe8eddde8ecdde9ecdee9ecdee8e8dee8eae0e8e9e0 *eaebe0e9ebdee9ecdee9ebdee9ecdeeaeadfeaeadee8e8dee7eadee8eadee9eadde7eadee7eade *e7eadde9e8dde8e7dde7e9dfe7e9dde7e8dde7e9dde8e8dce7eadde7e8dde7e7dce7e6dde7e7de *e6e8dee7e8dce6e8dce6e9dde7eadde7e8dde8e7dde7e7dde7e6dde7e7dee6e8dde7e8dee6e9de *e7eadce8e8dbe7e7dbe6e8dce7e9dfe7e6dee6e7dde7e9dde7eadde8e9dde7e8dce7e7dde7e6dd *e6e6dee5e7dde6e5dce6e8dbe7e8dde7e8dde7e7dce7e6dce6e6dde6e6dde6e6dde6e8dce7e9dc *e7e9dce7e7dde7e5dce7e7dce6e6dde5e5dce7e6dde6e7dce6e8dce5e7dce6e6dce7e7dce5e6dc *e6e6dce7e6dce5e7dde6e6dce7e7dbe6e6dbe5e6dbe7e7dbe5e7dbe5e6dbe5e5dbe6e6dbe6e7dd *e6e7dbe6e8dce7e6dce7e6dde6e5dbe6e5dce6e8dde5e7dce6e6dde6e7dce6e7dbe4e6dce5e6db *e5e7dce5e7dbe5e5dae5e7dbe5e7dbe5e7dbe5e5dbe6e5d9e5e6dbe6e6dbe5e6dce4e6dbe4e5db *e6e6dae5e6dae6e7dbe5e6dce6e6dce6e7dde5e7dce5e6dce5e8dbe5e6dce6e7dbe6e7dbe6e7dc *e6e7dbe5e6dde6e5dde5e7dce6e7dbe5e8dce7e8dbe7e6dde6e6dce5e8dde7e7dbe5e8dce6e7de *e6e7dce7e9dde6e9dce6e8dde7e8dce6e7dde6e7dce6e7dde6e6dde6e8dae7e8dbe7e7dbe6e8db *e6e9dbe5e7dae5e7dce6e7dbe5e7dbe6e8dbe6e7dbe6e9dbe7e8dde6e9dde7e8dce5e8dde6e8dc *e7e8dce7e8dbe6e8dde6e8dae5e8d8e3e5dbe5e8dbe7e7dde7e7dce6e8dde6e6dce7e7dbe7e8dd *e8e8dbe5e7dce6e8dde6e9dde7e8dde8eadde6eadbe6e9dde6e9dce6e9dce6e8dde7e9dde7e9dc *e6e9dce6e9dce7e9dbe7e8dce7e9dae5e5dde6e8dde6e9dde7e9dde7e9dde7e9dce7e9dde7eadd *e7ebdee8eadde8e8dee6e9dee7eadee7eadde8eaddeaecdde8eadfe8eadee8eadde8ecdee9eadd *e8e8dee8eadce9eadde8eadee8eadee9eadee9ebdee8ecdfe7ece0e8ecdfe7eadee7eadde9ebdd *e8ecdee8eadee8eae0e8ebe0e8eadfe9eadee9eadde9eadde8ebdee9ebdee9eadee8e9dee8eadf *e9eae0e9eadee9eadde9eadfe9ecdee8ecdfe8eadeeaebdfeceae0eaeadfe8e9dde8eadee9ebdf *eaeddee9eadeeaebdee9eadde8eae0eaeae0eaece0e9ece0eaece0ebecdeeaecdeebecdeeaeae2 *e9ece0e9ece0eaece0e8ecdfebecdfe9ecdfeaecdfeaecdfeaebdfeaebe0eaebe1eaecdfe9ece0 *ebeedeebecdeecece1ebebe0eaece1e9ece1e9ece1eaede0eaece0ebede2eceddfececdfeaece0 *e8ebe2e9eae2e9ecdfeaecdeeaeedeeceddfeceee0ecece0eaebe1eaeae0e8eae0e8ecdeebeee0 *ebeddfe9ede0ebecdfeaede0e9ecdfe9ece0e8ebdfe9eddeeaeddee9ecdee8ecddeaebdde9e9de *e8e9dfe8ebe0eaebdee9edddeaecddeaecddeaebdfebeddfe9ebdfe8ecdfe8ebdeeaecdeebeade *eaeddbe9eee1ebecdfeaeddee8ece1eaece0e9ebe0e8eddee9edddeaecdeeaeedeeaebdeecebdf *ebebdfe9eae0e7eadee8eadee8eddfeaeedfeaecdeebebdde9ecdeeaecdde9ebdfe8ebdfe8ebdf *e9eddeeaedddeaedddeaecdeeaeadde8e9dee9eadee8ebdce6eadee9ecdeebecdfebecdeebeade *e9ebdee8ebdee8eadee9ecdee9ebdee8ebdee9eddfeaecdfeaecdee9e9dee8ebdde8ebdde8eade *e8ecdeeaebdee8eadee7eadde8eadde7eadde8e8dee8eadde7eadde8eadde7ecdde8ebdde7e9dd *e7e8dde6eadee6eadce7e8dce6eadde6e9dde7eadce6eadde6e8dde7e8dbe7e8dbe6e7dbe6e9dc *e4e6dbe5e9dbe5e7d8e4e6ccd6dcccd6dbbfccc56d845a686b2e606f2e7070375f53275e67344c *552e4f5a323d481c3b42215c5a2164672b454c1e4f522d5f5f385d58255251295b4a1f484e1e4c *4e20464e203e4f254e4e2649502760542b4b4d2346491f4c4e24465a275e682e555b2c4f5d2d57 *552847542a4559254361263755325a5a2a414f254d4d2d43572d425d2e42683a435c2d3d5d2533 *4f2222401e2a46212e4921394b2643542b354d2736522b315d30456a313257292e5025284b233e *56293a512e304f2d264e212346201e471d254b1e29441f2a43263148233c542f39562a3d522634 *5024356136315a2a3048283350292c46232f4524244122274a242d5725274b25344d2634502931 *40233c4c2c434f2c3a4f273e57283e5125445f2e385f3647623c3b5f344863374c623440632a3b *642f35612d3d5a2e3c5d323c562f30503128462d3752334260372e482831542c3e653243642f34 *522c3c5a354360403e6235355d344565354b7340496b3d4e76414665455b774c4a683d3f603534 *57323e603b45583a42644341603e48654343633e3b58353e60403e563d486d43345a373558363f *58423d5c3f465f425478524e6a4d3a6447557d56607d53496c4d395b403b5e534b6a58446c504a *7450497254466a4f5f7d595b7a4d65835f6181616f856c6a896c5f836560896f5d866b597f686f *8c7162826551715f4f6e60597c6a54805f4b75624265604b6a6961816f5881695e7d725b7c6758 *846e5f7f6f678c8061807865877b78927b89a59266907f5d8672678c856c93855d858060898564 *85806386856484846e8e8768908b6f8e8a688b886c938e72908c6e928f729696668c956a94976b *929b70989a6c979b789a9f7c9da27a9da17a9ea682a4ab84a4ab7da3aa86a6ab8babaf8aaab37f *a4af8badb486a5b080a6b287a6b297b1b694b1ba9ab3baa4bbc19fb9bd9cb6bf9eb6be9fb2c0a0 *b6c1a6bdc79db7c698b4c198b2c298b6c699b6c59eb6c3a1b8c6a5bcc8a7bdc8a6bcc9a2bac8a2 *bac9aac1caabc2ccaac0cbabc0cdacc1cbafc4cfaec6d1aec6d2afc6d2aec4d2b2c8d5afc7d3b0 *c7d5b2c7d3b6cbd6b6ccd6b8cbd6b2c9d6b4c8d6b6cbd8b7cdd6b6ccd9b8cfdab9cedcb9ccdcbb *ceddbdd1ddbdd1e0bfd1e0c1d3e2c1d4e1c0d3e0c1d3e2c2d3e1c6d8e5c3d8e3c3d8e2c2d7e3c4 *d8e3c3d7e3c5d6e3c6d7e3c6d8e4c7dae6c6dae4c7dbe4c8dde6c8dbe7c9dde8cadce8cbdde7ca *dce7cce0e9c9dde7cde0ebccdfebcee1ebcee0eccee0ead1e1eccfe2ebd2e5ecd1e5ecd2e5edd3 *e5eed3e4eed3e6f0d5e7efd6e7eed8e7eed8e8eedaeaeed9e9efd9e8efdbeaf1d9eaf0dbe8edda *ebecdeecf0ddedf1deecf0dde9f0deebf2dcebefddebf0ddedefdeedf0deedf0deeeefdfedf0e0 *ecf0e0ecf0e0edf1e0eef1deefeedfefeee1efeedfeff0e0eef1e0f0f1e2eef1e2eff1e0eff0de *eeeedeecede1eef0e2f0f0e3eef0e0edf0e2ecefe3eef1e2efeee2f1f0e3f0f1e2eff0e2eeeee2 *f0f0e4eef3e3eff1e3eff3e3eef0e2f1efe2f2f1e2f1f0e1eff3e2eef0e1edefe2edf0e3edf1e2 *f0f0e4f0f0e3f1f2e1f0f0e1eeefe4f0f0e4eef0e6eff3e5f0f1e4f1f2e4f1f1e3f3f3e4f1f2e5 *f1f1e5f1f1e6f1f1e7f2f3e5f1f0e5f1f3e6f2f2e4f1f0e5f3f2e6f1f4e6f0f4e7f2f4e7f3f4e5 *f2f1e3f1f0e3f1f1e3f1f0e4f0f1e6f1f1e5f1f3e6f2f4e5f1f3e5f1f0e3f1efe5f1f0e5f2f2e4 *f2f2e5f1f4e7f2f3e7f2f3e5f3f3e6f3f1e5f3f2e5f2f3e5f2f1e5f0f2e6f0f3e5f1f3e5f0f3e4 *f2f1e5f1f1e4f1f1e5f2f1e5f2f0e5f2f1e6f0f1e5f1f1e5f1f5e5f2f3e4f2f3e5f0f1dbe9e3e5 *f1f1e6f3f1e5f3f3e6f2f4e6f1f4e5f2f0e5f1f3e6f3f3e5f3f3e6f1f4e6f3f3e6f2f2e6f1f3e5 *f1f3e5f3f2e5f3f1e5f2f1e5f2f2e5f1f1e6f2f2e6f2f3e7f2f3e5f2f1e6f2f2e5f3f3e4f3f2e5 *f3f2e4f2f3e6f2f2e6f2f3e6f1f3e5f2f3e5f3f3e5f3f2e5f4f2e4f2f1e5f2f3e6f3f1e6f1f1e8 *f1f3e4f3f3e6f4f3e6f4f1e5f3f3e5f3f3e5f3f2e6f1f3e4f1f2e5f3f3e6f4f2e6f3f1e5f2f1e4 *f1f2e5f2f2e6f1f3e6f2f3e5f1f3e5f1f3e4f3f2e4f3f1e5f1f2e4f3f2e3f1f2e4f0f4e4eff1e5 *f1f1e3f0f1e4f2f3e5f2f2e4f2f2e5f2f3e6f1f3e5f1f3e5f1f5e4f0f4e6f1f1e3f0f0e5f1f2e5 *f1f3e5f3f1e4f1f2e5f0f2e5f1f2e5f0f3e4f0f3e6f2f3e5f2f3e5f1f3e5f1f3e5f1f2e4f1f3e5 *f0f3e6f1f3e7f1f4e5f0f2e4f1f3e5f1f3e5f1f4e6f1f3e4f0f3e4f1f2e5f1f2e5f0f2e5eff3e4 *f0f2e5f1f3e6f1f4e5f0f3e5f0f4e5eff3e5f1f3e5f1f3e6f2f3e6f3f3e3f2f2e4f2f1e6f1f3e6 *f1f4e5f1f3e5f1f4e4f0f2e5f1f3e3f1f1e3f0f2e3f0f1e6f2f2e5f1f2e0e4f0e2f0f3e3f1f4e5 *f2f2e5f2f3e5f2f3e5f1f3e6f0f1e6eff1e6f0f2e5f1f3e3f0eee4eff1e3f0f0e3f0f0e4f0f3e2 *eef2e3f0f1e5f0f3e5f0f2e3eff0e2eef0e3eeefe3f0efe3eef0e3eef0e3eeefe3eff1e2f0f1e2 *f0f0e4eeefe2edeedde6e9d9e3e6ced6d8ccd6d7bec6b9687a4668722e697d38729043707f2975 *692b6e6129736e2a684e2265642a5f652a5d5e2860621d6564226a551c6f5a22706f2c6c702a6a *6d276e742e6c6b2662551f5f6b226a7223635c1e6561246e6c2b625b285e6128685e265c531e66 *5423605f235f56225852246059246050265f6531565825484e23675722575c245f4b244c4d2442 *4b244d52266870365b4d235a46224d4c1e474f2150521e474a225a5725505d2a484b2b5a562755 *54214d431e39451e39471e2f3f1b2d401d4f47213f4d24394c233f54303b4e1f5555244c501f49 *5226475826485a2b47562646481d414f21394922494e2238511d325121414721494e2b3a412432 *452032451e474d29374e21404a2144502731481e2b451c475221435722425a2d38532547632d5c *65324a51243f5b32415c2c3e5b263c5121365c282d4f273250232f4e21233f1d354f264b672b4f *6125425b283f652f48622b4e62274465274e6733465c284e5c274a56225d58254e59254d5a2942 *5e2d405e2b324a1e3f54243f52233d56223950213e4b222c441d415f28395724424b233e4f242c *4b1e2c4b1a3850213b4c23425c2c4357223a4f25465a2532451d33431e24391d304c213a57253e *602646692a405d233a4f1f3a58243d56243e59244e57275a6429475722445822414f204745214b *442049471e38481d36481c565c216668295d5e255256273f572c4153295d6a335b683147572762 *67334b5f2b5c592b4453264b4820695d26536a2a55602045431d3a542540492046482038441c49 *50254f592258572e4e5524576127616530605d2a495324485b294f5c285567334f5a284b602740 *5324414a216d6b2a505f2944602b45612c3c582c587036586c29535f2350662c7371356c763f53 *6d356b6c316574436a763c706f36617b4261783a6f7a3f898b4d828d517b854479884a69824079 *87406c7e3e677b394e682f455e23425f2a4f703f46592759723b6077376d7f43536a2e758b645d *69366f733d566a35646d2f5056205c68335b703159662b495b2b6167306b68365a612d6765296f *78307c7a357f77307970306a75397367356d69335d6a35646d2a7d7537807c357479366e763e72 *754084783d758042607d3d657a3c678040817d3e7984486f753d6073416c74437d743d7d814372 *7c3c687b4277823f7f893f7384437c86417e844668783f63723376833e7c7c3a73803e69723d5f *783b5d73346b7d3f6a7c3f848a44697e42757c37867d3d778b4c869350747e4277854a7e85477c *884a70864a708542758546678146677c3d7685477a8646697f3b657b366a7c38778c436a7c3551 *723b627f425c74447886476e8442687d3e5a6e2b5d6e2f627d3b59773859763c586e305a793659 *783a5c7032667d3a627234556528657d40687f44617a3c62793e69803f5b72345d76335c6b2b68 *7f3a627837657e3c5d7a3965813b6a83415e793b677e3f697a38627c395a783f678542597b3f57 *702c4d692f4c562649642e546f344c682d667f386b85395f7f3d5f7f3f5872333f572558713a5f *783b5873354b70315f7b3c62813c5876325d7d3b5f7e405e7835647d3b5f7d3b637b3e68844456 *783c5d763b667e41618146758b4a6381465f8042648042647d3d64813d6485486a8a476084465a *7e4268813b6c8640527c3f688c4f658b507c9657819b50759048778d4b718f4c688c4e6a874369 *804165884d5982495c8241618c4d699151688e545e864a63884f6a8a535b81455c80486d894864 *8b5062844867894e6080486f894c56784556804c618551588b505f8b4b6c96566a8a566a944f77 *985f709253678d52578550658b49678c4f658d537c99606181537a9b5d65905875935b7d9d5e79 *99616992596d966175995e6f945a6288585f875c6289595e8d605e8655517d4c5f874b6c95607d *945a7a9e647c9a6474965a6f8f57698c4f6b92547693576b845464874e6c9254799e6572925e6f *99656c975c82a2677d9a5f76906174956072955f708e527095576a89506892526c9254658c5262 *85596e8a50718e616c925c74975270945c708f5375985e678e64618d65658e645f86534d724665 *89526b925d6e9461648d60688e62688b617994606f91617096636a915d79996a718f5c6f925e70 *94696c905d72976475926c709360678b5b71925d7b975c7e986668885e6e966c799669608a666c *9261698f606b885c72976073916462805659826269855c628a626a8b5a719a6a80975f79976780 *9c6589a072879d69869a668297617c9960728d5a879d5c7b9c6880a17377966b87a4707c9e7474 *9361839d658ca1668da5698aa2728aa4798ea478849d777d9b6b839a63809e62849f678c9f6981 *986383996a779b726d8d637697637e966479996475965f708e648a9a65729a727a9a65799a657d *9767738d5f8ca16c79996b7d98676e9162719064739169769a687195676a8b626f90626b8b5e68 *865e5f835a6d8756829166b5c0a3d8e1e3cbd5d8c9d3d6b6bfaa6b6738666a2a696821696c3072 *653172602266571f5e50225c531e6557286c6930696325545c20585e1e5f5a2269672867572168 *582a6056215c541a5b532066621f6155204f501e5b4c215f571e67621f6856206d672264642b54 *541e48471a555320594b205d4e23545226625523696222494d1c54411e5247225255295249214a *4b1e525e34575f264f5323434f1f364a22544d17363717504b21424d1f554e1e51522558502350 *491d454d1d3f431b3e3c173a421f3a4321404c1d42511f52551f444a194147193f4c19303d172d *451a33391b485020454f1a3e4e18364a1a3d461b374822455f2f455b285655294551203e572839 *4e1d494c1f3f4b1d334a1d40532632402130431e30451a33431c3e491d39491e4254203e441d3f *4e23475f335353234c5f20385e273b5c1f37561e3b4f1e4362284c5f2a3e5a2c3a5c273b5a1f43 *5e2052571e414d1a3b59234052244b5d25455f23344f1a394f1a4a5b1c3e48183f4e1e405a2749 *6227455826314f1c3a501f314e1d3a511c32461f33461a3140174f4f21414b1e475d1f3b491e34 *3b183f51183a4a1d37521e2c491e3b4c1f3d572548501f293d142b4215314e1f3851244f571e41 *5f255365255a662748531d2f4414364a1434511f415d1d545920535a244d471d4b482047431a4a *3810403c0e424214474c1e454a16484e1d49501d584e1c535528454f25575b1d69783240502143 *54254557284f5434394420444c1e45401547471b49551e4e61243e4e1e4858294d502548461840 *4a1c4f5d215757215c694058643a6a6a3670795260672a5d5f2a586c326b6c2e666f305d6b2d61 *693164662d5c6129555e2a686c2a506227536125495b22506b284a5c2267763a647034777c3e70 *7d3564793574732d797d3579772f686d2b6f7530706e35798445767e3c7c823f7f792f6a782978 *782f5d73345a733c687c3c76782c5b6e305c6622556224636c3267742d4e5e25566f2f5a693369 *7e317a81406e7a3d607435586a2e586e2c5f713657622b57653357662d6069297673316e75386c *773c70703a65682c84762f83762e737d2d79733672762d6d5e216f722a836d2b756c2c75752a7e *722c7c6c24766a2b6e6c267e7b328685427f7f4b826d2e7f7d3b6d6d34757d3d82763e655b2563 *6126656a2c6d723671783f787d377e7b3a7c893f8a90437985437d7f3e90853e7f803d6a722a5a *6d266577376c7a3a67792d6b762d7a85446f7b3e70793875793b7676357b7841778644787e347e *87427d853f737935646a295c7835757a3a5e793f67803f798a4474823a637844717d4172843d5f *6f2c6d7c3b6a7e3f65763b677d3d64823b6380415e7b3c4f703d62763958783d59653064783c5e *763766803c51652f5a71305d702c6a7b38697a395d7a3b637c3b637a315a7940648041647c3b60 *713866783f697c38607d40678033627f295968285364275863264f5c234c5d1f4a61245b691e64 *6b275c74325978344a652f557333607e3a55722a5d732d576d265e722a5b702d52662750692949 *6c2d48672c4a602857732c647a3266803b5c7c2f64833658762d5672365e76376a823b5a742a60 *72285d77375b79325f772e5a79385d752e6075326a7e3a6c7f2d647a2d5c74285a7524647e3866 *85415e793e6b84426a883f5778336984385f813b6684345c7b2f697f3d6482436d8234637b2b60 *7c295e7c315975355671295d7a335c712e5e773a61763f607f3a5b7a345d722e4a64235564245b *74365c742d51723749692e4d662856752c54762e597d365980414f743a48652b5976315f792d5f *762c5d75385265245c7d2d4e6d3459782d5f7b3259773c576f2b516b2e506a264760235d723169 *7c335e79405776335e753b5d803c5b773d5f763a6685435c7b4258743a5f78394d672b46662e53 *722f5a72365775385f753b5d762e66823f57723349682b58702b5870295a703260823b60833a5b *76385c75325f80415a7331537639596e3358732753742d51702b496e2d496d2a4e693051642c53 *692d5e6d2e59792d5d76295c762e647d3a4e6a345d6f325f7a3d51672750692b59733548663748 *6b304d6e30536f345c76375d76354e67275b76335c79334a712a4f6e2a4d682548652b4463264e *5e285d772c55742d58742a63812e52702850742e4c662752632b5f813e57783c435c294d6c2643 *662d405d264863274461263e5e303c4f23425b1f4360284c632348682c436726506a2948612846 *61274c632555662654692d506a2d4a692b48692a4a6020566f2445651f4b6c2a506a285f752851 *712a526d315d7a30486829516b2d5a6d325871315e732e5e6f2d537334536f2f4d6d29556c2852 *702f5872365a762c5f7b2f526b244d6f264f72344b6f34516d2e4b662f5472344465294d6a2f56 *742c5475324865264c6a2d4c6a2e455e28485f274865274861204a66283f5828445f2543622e3c *4e22405c29425e2e4b602949612d779063cfdadbccd6dbc9d2d6b1b8a86d6c2b647a29615b255f *5f246d6d2b5e5d2556532355531d505a235d551e58561f6a601e584f1c4e50255452256469285b *4e1d675c1e675f205d581d5d5222575c2c5e5c275f5d265b521e4f521a5a5e1d5f62205d6b244d *531e5c6222534d1e5151205165255f571e5f5c1a4f541f534b1853471e4a4b1f43531e4655254c *55255b57264b55255c6024485d24495529546825535826364e253f5723426025486127645d264f *5f26494e224849203f4d1e3f4617375522374f212f4c1a2937124345173f491b30481e41451e2f *431c253d14373e1130440f3740162b44183a4b21475623454b2558501d595521444b194a5c1f47 *5f23405425465c2a304a1f37481e5259213b5c273459214269272742183d481e365125414d2424 *3e1c2d421b40602752612748652a5c6429374f1d3f5428324b1f364b17304a143a5f213b57203a *581d334d1b3643152d3915434819404b1b3e4d173248142947162c461b2c43172d401925431d2d *4b1f3b521e394c172c41182d4e1c394e1d384d1a3a501d2f501835451a2c4c1a2e481543561f48 *4a1942571d3b5021415b29435c24405f244262243a59254a6c3146571e42561d425e2549642e32 *491d31561e48541e3950143b521a324a172944153c4e1a30451731471b3b4c1e3b4e1f39431b3f *4818615d214a451941521c35471a3546203a4f1b3d44173a4c19495c214b651f43622452652443 *561f4969294f6434304c1a4f531e4b5c204354204755284d5b226570315369295872336e7b3d59 *672c606429676e2f68692f6e7f406f793664732d717c31847a35747d396577345f72335a722c64 *76306e773568702f6175315e76336372295a6d285d722c6374335f76326f732a5b7430646e2a5f *7d42617a3763763a717c406a6a2d4c5f234c5e2258652750692e5e73306f66295f6f27657a336a *813372732e4a692f52763a536c2b637330576a2d5f7833696d2b606f2d4f6128465e2250692d52 *60255967245d72276576296c7e36617835666e3060763565803b6b803c6477317f833c72783767 *7d40687038666f3258692e72732f5f6d2a776c2a6d7f3c696c316970266a692c5c692d6e723166 *60257d752c7e703064732b79792f79803d7d80376c612c77824380783c7b80347c6c296e66264f *60295c67317a7c3b84864072804278823f81863a76823d6f833d72833b787f387a7b356e7f385d *722c65773269772d6974276264224f5d2064733168783563752f72813d6e833c758a497c8c4973 *7a31727c35797e3e63783a6380436977326a7f3c6378327686436c8243627e395b6a2e657c3763 *74325f72276b803b647d2d6f833f677e39607b3a5d6e2f5f793b647a3e6e7f3d68853d7682385c *7b3b5e783655752d597535617b395e783255762c58772e4d6521556e255b7632526d305973375b *703963753560733365803760762660752d60762c5a6d265973304f652a445d1f4b5d1a5972245c *692276823d62763a66782e5b7832546f284d6a21586f235768235567225c772e647c365c732a60 *732c677c2e536c235574295c7e2d58752f617e3567823a647b3156742c5c752a57792753732155 *76285468256379314f6e2b5a7b335a7c3754752a5970275875296582335d792a6482365c792d58 *742a5875275976275f7629536c1f53721d607d26647e3a5971296b864059722b6584396077295f *7a2e59742d58742f5b76355770305e7a3c627e385771276079296886366a7e3a63742e50682751 *6a294f6f284f6f265d77295a7a375b73265f762c5e742d5a75265a76304e692d4d6b2b5976384a *672f59712a556c245d782f5a7a2757732f536f28536b2251692458732759743350692346612447 *612458753a5e7c3e5d772f5f78395c75325b722f5b752d607e37667c3a51723c4f6724556f2854 *722962772c5a732e5772254c6b29587033506c2f53722c516d285b742d5f762a5c74284a672753 *6a2b577435536b3350682c5a6e28546e2c667d34637930668536526f314c6f30526d2c647d315d *7932607d2e5e7b2e526a285273274e6c2a5974344a672a4c6b245870364663255e6f2f5d742f4f *763c4d67274e692e586f305568296a7b2b55722d4f6c29526e29435f24425a203e5d1e3b5d2240 *5c1f4663275165235f6f304b63264a6829485e1e496222405c1e4a65275267264c5f2b475e254d *66294c65264a682a4d65254e6c2d465c22415d243a481d4b5d1e4c65234f67274966274d6a2a42 *5e27526b2654682b546a294560254563223f5a2335521d35511532521d415e1f436225436b2c4c *6c2a4766285d732e4c6a30556c2a566d365c6b255f762f5d72276779345a75394e692d50732f5f *7028516a2851733052732f426a254564215066273e56223f5b23485c1d4768264a6a273d5a2243 *581e465c25435d25415d22536f2a415721425e1c466124445f1c435e283b5d2b405521425c2240 *5826334d1d3d541a3b5c2535532a3f5a26768863cfd9dbcbd5ddc8d1d6aeb8ac64542a605d2c67 *6d2b6d512165542951552b5a4c265c53225f601f5c682864692359581f605423605e295d512d5d *593065592b5c571e3843215952234f53294c47215d5b26554c23535422544c1d4f4e1f4c4a1e52 *5321484c1e474922575a275149225b5d2949512556542454622d5b5421534b225c5728545b2648 *552c506232655b2341552646531c495d25605d27535b264e481e4c502d455b2b4b62263d55233e *4e1e3f4b1e464422534f33414a2736462a4f4a2552421c363b202940123c4b254145233e4c2440 *4620393d1e4336173638192e40162e44182b4118394d1c424f234149243e4b29455121344b1c53 *5f27405920314e2b3c522a3550243b5b2d46602a475827526b364865303543162f4a1f2e4b2837 *582e344c1f2e4019284b1f3c50234f5c2442562746562b213a182d471e32512530431a233f1936 *51222d4b202c4b1e2643172a4a1b3e5422414a1b3742123540142c411c35471c2a411828441826 *411b364c1f2a441d37491f37481f2e491d2c461b2a4a1d213f16354b1f2b401b304c1d3d5c2747 *5623445b254c612642541f304d1e3f57243e5b26314d212d4d1e3f5721435c273c57234660273f *58243e50243c5b283a5c252d471d334e1f394b1e474f1d3c56213e591f42572149642942572557 *5d245d5c224c5521515e2a42561c425a22455e253d511d3e521d526b2d5f682d4e642b416b324e *6d355a72334c672b586d355f733b516f2c55723162763b6d6e2f5f6c3165754061753c56672e66 *733c72763a6177355b69296c682c68742963733b5c753b5f6d376c753a5e75345e6d3460672a64 *712e6a71355970355c713a656b33646c3158692c6a79386d7d3c6878376a7f4060672c50612f55 *642a556226575b245f6a335a6c2f516e344c632b5669355069324e642e5d6e2c536528526d2c53 *6c26607631697131697e3d5d75356b813e5e752f6473315b6d2a6180426a76325467325b6a3359 *6e3465772e5b6d2a727c3a62722d6b742c626b295464285c6e305d703270742c646826666f2c70 *6e2e697d3f727b436d743c5f70336d6c2d616d2e697a305769266265296a732f7b6727605d2849 *47224c4f23606b2f645f2766682e6c783e6c7a3e6e723b7376356373335c6a2c6d6a2a57692c74 *7531707530747131606d2b7a834181813d747f396c7f3b6b7f3b6975346a702e6a732f66743264 *76396072305b682b5b672c6467275a76336272325a713164733866763c627b405b763267783963 *7331637d3a58783a5b72346075416579444e602c546a2f5d74346d783667753a64763c56643358 *70396179425e7a4078824865813e6d80435e69305e6c32636c355f6d37566d3855692a6076355d *7236667c416d7e3b657d3c667e406376365a703c5f732c5b7236556c2c586f2f566b31566b3156 *6d306478395e793c60762e60702c506b2b5a7c3363732e6679395f733164752d596b2c5a70295d *76326b823b62763268792e627a326c793e617534536927526a245773305572305065265d732b5e *722f59621f536a254765254c66204f6e244c6e265b752e4a6428576e2f516929435c2451662645 *6922507027547326596f2a54722a53702b516c2752712e5370265771275c7930607e2e54762b5e *782957752a5f762b607d2e5a762959732959792c5b783262783c5d6d2c5d76345a6e2f6c7d3964 *7e455877395b6a265e773d5f753953672d62752a61762f5d7b366a7d3a627a3a6f81425971314b *682c526b27475d1d4e601f5163265c6f2e586c2f566d2e5872325a6f2d5e7938576e315977305d *79394c6521597234486a315070315c79344c672b59732f50652a61753c4f642d465f2743501f46 *612a436432556a304e652d5f783d50672a515f265d722f5e70345c773d617e3c50692d47662a4f *6d36415e234862245565224e682a3c562042521f3e5b2540622f4a642e57692a445e27536a2852 *69274865274b653147603142612649652950672857713a516a2c4e642a4d64284c70304c6a2d59 *6f35516c2b5575354e5b2552662c59753a415a284c6931426531546b2d4d6e33577234596d2956 *69324a6b2d49672f4462293e5d2a3a55224a5f1f465e254058214055203e4e16435b203e531e3e *541d486429455a294c5f224d5d1d485f2840591e4d642441612a445f294a662851682a405f224c *632547682c485c245a6c2f4e69314d5e30374c1e40612b516a2c4e6823506b2e5c682d56682649 *64304a5e2f55692d53692b405f29445f2447652c4456244052283c5329335227445a204a65254a *65264d6a255068264d65294c66264659254553204f67224964295664204c6426506c2b4653234d *642c4d64284a692b48672c4a642941571e446328394c1e354d1c354d1f435b27405c2348643638 *5a263f5d243f4d1a39501f4455213f57233d542439511f4359214c642a415d27425d2d3b59283e *59243b5a273d502241632e3e532544632e415a2c76926cced8dbc8d3d7c7d1d5a5b6a957532b52 *4f29514922534a23654c20645f255d541d5b5128605e266065286058235d522157471e53452452 *4f22524f1f48431d554b1e535125524b1e524f244d4e23444e1e414b2052502a5062265350215c *5629575f2a54602f5e63305c5e235b5c233f542358542654622d616a2f47602a4d52243e56235d *6432495928414d203a46172f42134a481f3d451d3a4b1f404d1a4051204854223d541b4a4f1d41 *561f444a224342245f5c2c4f4319333612414118472d10483f1c4a3b1a343a182f41213e401f48 *452642361525260f2732132e4114324e222b421b2f4924394f203851203f4f1c47522139461a3d *4d1f3d491d3c3e182c431f38521e30471941601e2e4d1d2b4c1e2f50233f5c294257302e4c153d *5d2432501f2e4a162c47162d4c17344b1e27421a243e1a2643182540172c471a27441c26471a3e *5a282d4e1d304d1d324c1f294b1828491a37511b2a451833461635431828461a2d4b1f334b172d *4712294012253c122145152c471b2743152a4b2336502131551e2c4d1e304d183f5821425a243a *57214461233c5e253b521d325a1e304f1a3b4f1d405929345a233457252c4d1e395e24394b1838 *4f1f374b1a455c2243602740521e3a55203a53223655244d5d2746612d4660254f5f22435a1f3f *5520425b265e6b2c4563294c71334f6b2c527431516d2d4a6b2e4a6b326c83485b74334d6c3058 *76355d722967843463793256733b63844162772e5e77366f833e5d7f415d793363712f5d6e294a *702e616f2e607536627835647a32576f2f5f692f61733356612c525f2656612f4c633266773b58 *6a30526a2f697735546f29586d29586a2c4257213f5824485d255067285b682f5b733851692b5a *6c295b6f2e586b2d576e304f72314f642b4e642d52652c5658214960245c7539676729687b3a56 *6e3a5a7329566a2b61732e5c79395c74346878355264286172335d753a6e792d6d86407281415f *7f3f5e7d39637d326178306174306c7c3168793862772d6f752f5369275369245365205867235b *6d2c606e305c692b5e712f6571295e7636536525546b2f696d2c586a2c506425616127525b2667 *6c326a6435655b295e6a345860335858247976347180336f753b677d3d6778366572325c75355e *712f6777356c7b395c7432667536717632717e327b8940727b33758039687b2e64722d5666275f *6f286b773b62733563753161783361722f69803b707e3e6d7b365a722e596e2c637f395b73385b *6b325c692c5c7536617b3a587634797d3d647933617333566d30627937657b39547432576d3058 *6c2e6d7b385e75325b78305e6d2e596d2e4f65284e5f224f6a254a6024455925445e244660264e *65245a73325973355a712b60782d59732d4a60243c511d495f224a5e224b66254d67254363294d *682c506b2a5b76345775325b742d546a29546c2d6371335976284f68215d6d2957702a586f225e *77305a73255b752a5d6f2b526824576c2758662558752c526f235b7c325b7731586d275c75315c *702d5f732d5a6f245469265f6d2b56763757772f5c7839536c2b566f26516a264c6421536c2450 *6e295974265477355a7a3b5271294c6e2a4e6d26466421445f21536a1e5f7e2c5b7c325e762b5c *752455701f4a641b3d581a3d59184c6a23576c295b732d60792f637a276470215b71244e5f235e *732657702d4863254e65284f6425556c284d6a255d69225769245c7428637c3b5d772f5e76355f *772f58762e526e28517131557129536d285e752d5f7931516a2f4a6424586d2c55702d51743152 *6e2a5e76395469244964204f6b2756762c4f72354e722d4f6b254a6422576d2f4257213a4a192b *36124857244b682a455f214860274d6729486824446126486b2d4361294c65205672274c662552 *6f35536320496d2e516a2b4d66284d6b294364264863264a6626435d213f6028405d283a50263e *581f35522035561d38511c264d2032551c3f4f1e405b20446628496d2e4a601e526a24526d2e5a *782f496a254f702c4f7235455c214d6a2c4f6f364665285c782f527030516e305165254b632945 *59244c63284b5b243655244d6827455a1f456327435b293f5b283e61343a5423385a23415d2442 *602643652a3f5f26435a2a2c471e42531e465e1e445f2152672743571f3e521d3751192b4d1e4c *61224763284c65214059204360264a662a49642c425c21546c2e4c642c4b6427516c2c52682551 *6b274a692b506c2a44602d4d612a516e39526b2f48652c3d4d1b33492043582442663238551c3e *5b234663223d591f435a1c415e213b592042561f334116304b1c3653213b541e3d541d36531d40 *4e1e3752193e51184764264361263b4d1742581e3e5f2c3e541d385322324917374f1b35521d3b *5d23405220416024395f2044561e3d531e334b192e4517395c23415424455a204b6523405a213f *5c1f4860223d5a274259273c5b2841562049601f4b68287a9b6ecddadbcad4d8c6d0d2a4b1aa53 *492c494926444420494d1a4a551f4d481457451f5754255d5a2b505f2a5248204d4d1d4748145d *4c1b4f531d4a5a2a5053245c5529464e24444d1f4745154952224c501e4c49245d552850562a4f *59224a56224c53205658244a52224149134e4e1b554e1c5458234f4e1e4e511e40481b3543134c *451a324f274653213743173e4d1e38481b31491f36401b3a4e1f415222454f1d474a1d42471c53 *4f1c3d4b193047123f471f4d632e42471f3a461c434016221d0a11130719150e2c251921120835 *1b0a42461b464d234143172c391e213a10375423465d234b5e2533552035541f3d551b3f5a2039 *5323355021365c27304a1c3e4a1940521e435c233f5727354b19304d212a4a222b4517334b1628 *3e0e28440f314b16283c0d2e45182c471e2d4e1c2b48122a4c182b4b172c43172b431228421830 *49182d4c1e315124273b13263b0f223f152b46182e4917384c193c551b2c4d1d3043172d491831 *4815394e1a36491a2340122e49172e501c31511f3d5d2c436129405c1e3d4e1a3e582235541a3a *511c2f481a27491d3f551e32461b31581f425f224764263d571f3b58242d4c1e2f502138562133 *56193d55173a5c263c501b4b58213956213b55234f60264a5b2546622249682457692852672a50 *6624637538556a2d4e66285d78335d792d5e72205f7125617427667b2c576c295969235b712a57 *6d2762742c606e2a607a30647b2858712258732b587229506d2a667e3b5b7d3c5c6c2f5d682a5d *5d1f626b28556e29546d275060215069236a722f5f73285e7932626c2b5a74315c732a58752e61 *75265266225766265a6d325a6f3152743c496a2b516828435d27405b1f5069295163285368265c *60205a64245769275e732f5a732c5d7b366a783751662f6676365866346270346976324d632842 *591d495f1d5869265f6d275969246376345771265472315972335b7635526c25597c3f657b3366 *8034637f2d687f33607834647d355d742a687f32687c2d687f316976336175345f772e61772c5e *732c617c2e5b712c576a28606e30606e2f65742e5465215b7022627a2e70843676762f677c3569 *783460742c69783469772e737e3f637b31647435586e2b6a7a36697a36676f2c767c3a5c7b3e5d *732e63692b5265245e6d225d742c69782773813277873f77893c6e7f387280396b7a305b6c265d *69255f752965722d6b762f576a256278355d712a66752f686a2b57722d586f285d71265c772c58 *6c22536926657839506524586f2d5770295773314d6c326472315d6c2e4c662a4f6a306275304d *64214f6623556420586c284a5d214a5c214b5f214f5d2058732c5263244c581b486026455d2147 *6222405b1f5a7634616e3362742d455a1a495e2049642842581f3e561f425f24476623485e1f4b *601e4f652860712f6073295b7a2f617b3257722e5f6d24596b254d6a224c642258712f5a6d2863 *7d345c7630678233687a3d6a8138566921546a27586f285772285b722a5d762b586c2b4b642252 *69214d621d557021596d1e5269214e6520536b205372345871294e68224b6b28537639566f2952 *6a20425c1a425a1c52703446621f4b642942591a405c2148601e394b163f5716576d2045602241 *591e4d692748621e42591b43621e415d1e3d591c476624405e1f465f1b4c68235866185d732a41 *53184a5f204c62244d5e204c6d2953732a557125526a22586e2664792c60782c5c732e65823a61 *7d2f5f6f235a7426586e29667b32546d274b5c1f516b265f79355b77394d672258672652631f5d *74305b702c4d69224a6722506921485f2353691e506c2b455b1f55691f455318454f1d424c1d3d *571f3953173b54173c5922425c1e425e2355601f4d64224c662b4c67285a7028475d1d59742b4d *642555702b486222496829455823425e224b682b4c6b2b3f5d1d4d631e475c1f415c203d5d2044 *62273f571d3b581d304d1a40581f3f5e253a5a22395721425d213f5f20456728405c1c4f6d2044 *622148651e2c4312405d1d436023465f1e415c1e4d65264f60214e64214a5c1e4e641f4b6b2b43 *62243d5d213f53184d6527495e1d485e1e4961224d601e425d1d495f253b541d39501d374c1b40 *531e475b22435a21425e233e5920405917405d1e47581b40571e374f1a2d4715334614314c1a35 *5112445f1d3e531b3a4f1c36521d455f1e36571e4763214d6b2c425e243e541a3e4c184a5f2244 *5a2a475121485b23576925506730425c2a475d244560304057283e5123435e242d441b354c1d3c *571c3f5a24344f203c5624364e193c55233e5525364f2036501d3f571f2e4818364917435d1a37 *511d404b1c42541f424b1635491638501a334c1c2f48172e47182a3f11435c2235491d2c482225 *3c192d42193f591f3550202a4312344d1a2e4c1d3455202c47153c551b3b56233b5d2537542041 *5821334a143e4d1635501d3a59203a5b1e4462214b6323465f287b966ecdd8d9cad6d9c6d1cfa4 *b1a24f502e64532a535025494e225352224a481e4d4c23575221594f2d5f58265a5529504c2252 *441e5d6023414d1d524e1e49481d4e4a20524f21584d23495027485a294f5b294f5625475e2746 *532648452046481e3632133f4b1e445125304b1e31491e41411a3f38194f4b23494721444b1f4d *4d212e411b424419354b1e52421e3943203e4e23554c1e4b51223a591f345621424e2046522139 *431c2e37123e431c353f17394b1f33461b3343192e3e192e451f243c1a33391d2b33174952332d *43202431153f461d3c41153143163d45194250243d51224b4e1c3e56262e491d375828405d213e *5b22435c253f56263c531d314b1c3f531e2e501d44662a3e5c2630531c2643194155222c441237 *4f1f34531c2a491827481730581f2a451d3b582d354c1f3b4c173446162a471531561d2746182a *4c1c2e4d1d2e4a1d3e5923355520284818254d1d2e50202c4c1c2c4b1a27441b30512030501b2d *42122b46173d571b3b541e32521e385b264064293e5922475f243c5d1f314e183b5820445c243f *521e365221415a213c571f40501c38501e395d233d5b224364294466304e6e424e6e374863254e *672b4e66274c692b546e2e4860275877395870304f6c2f59743866742c526c2a526e2e4f642847 *642d4660214b642450672d536f2e4c662564793362712f5b742d52722d576e285173325d742d66 *702b6273296779325c762750732b49732c5e7f394d6d3350753a5069304d6d3365783263792c53 *6d2c5c74325c783a425d2746642b536e3661722b5c6c2561762e5a752f546e324a662c4a5f2851 *5e24566a294d62235376384e652b627438526f3a5d753d5c672f4b61224e682562742c4e6a2850 *6d2d5c7433567a445a76395c702f4a6824586f26586b2b60732b6874335f75305a6e2b5c733352 *6b2b4b6525576e2c607d36596e2b566f2c59753b5c742f5b723359742e5067215e772c5773324f *6f3254753b4e6626596f2b5c71366c7f3f657d385c75315e783357753257752c5d782f5f7a3563 *7331576b2660762b60712d52642762722b616d2b638241677d386477306376327279356a7c3866 *7c3471843a637d3b627d3f5e763c61783d6375356f7f3b63782e617f3b647a32767f336d813184 *752f5f72305f6f2e58692b58531e55612463732b616a215d6e2861742f68772e5d6c2555642152 *63204a6824576f2962752762742d5e7531677f315e742d61772f5d712c526c254a6d2b4e6f294d *6628576c2f536a255d6d2a556c2e566a296078334f6a2c586928475c22496527546f2c5d732e57 *6b2d54702b5a712b5565264f6d245064224f66274f61234a6422556b244c622550672b596f2b4c *672958622a485b245565285973304b66264e6a284f6f295875304c672c4861284d6c2a5d7a334f *6b2c4c63214964234f6c264b69245b72245e6d275b752c63762d5a6d2e56762c57792954712755 *6d244f61215c7130667d335f7b34566a28526924456021527124537127546b295d752c5b682455 *6c29516c244c6b22506e265775274e6f2e4d672a5673305a753252672348611b536b244f692752 *6c263f5c213e5a1e415d204b611f3f5d1e4163223c591d415c204561213b591a46621e4b692846 *5a1a4b662250651d475d1e465f1a4d671e49652746551c43561d445b1d455d2042561643591b4d *64263d5b244f6d2e5765264b5a1d4a5c1b4e6427516b264264225269235269285a6f2a5d712f5d *77275b72215c6e2359681e5b6d245c6c2f4a5e1f43581d557435556b25485d1c49622447571c56 *651e4e6424486b274b63214a601f47611f48621a46611b5065204260215066284a571e4d662648 *632048621f405e1f405d1f4b5f233d581e4058204c64274662253f63224d6722445f1c475f2147 *5c1e4763254a642d3e5b21405f2441591647622248642845632446622045621d485e20425e2044 *5e204865223f601d405e1e426325506522537438506e2c46652545692a49611f435a204c65214c *6927485d1e3e5d1a2f551a4864224869294c68223d5b18436822476d235f7531476c2851692c48 *5f203e5821374c193a612658702b47682e4b6c29566e284b692b334c1c324a182f4d1937581938 *5b20445e1e44651e4968263e5c1e31511d3b581e2f511a364c173a4d173c521f284c232d471c2e *4b1d3f531a465920435d1e3f5b1a425b1f3f5c1f405921465d21465c243f5c274054233c4c1b44 *521d446124466c3731491f3f4f1e43622e3d4f2141511d4b63284a622f3c58264f65314660203a *58303d4c1d354a1c4a5b273d4b1f2f4014344d1a3e571f3c632b2f5023384d1b415a1c3b511a33 *4918354c23354c192c4f1c2b4d1e2e461a33441733471a3b521c314a1a315118394f1e304b1832 *4d22324f1e405c243f551d314f202d47192e4c16455420365a232f521c334b1a43561f40531842 *6020365f223d531e3f5d233f5d21445b254151214760205b66214d67247b926bccd9dac9d4d8c6 *d0d1a1b0965c5e2f484c254c4e274f53265850233847204250264855235a652a46502544481f48 *53263d52233351204848224d491f54522333482138491e3a4b1c3b481f4a4f2542491e354c1f31 *5121454f1e575223484d234e4b26445f2c414d244a5c27444e20405e253c53263d5d25435d294f *5c283f51262d4a1f434f22375b263252242d532133471d29421c2c4b1e31552141531d3f582135 *4f1d2d421a2a481f3f51212f4d1d23421c2c4c1d2f511e2b4d1e22451c27411a2a4e26334f2233 *4d1f426024456b294d65283a461a2b451724451f405f2b475c2540592542632637561d304a1c3a *59262e4f1d274d202d491e355219284f1a3d571b2b501b335722325220294a1928471b2d532327 *4c143257192c531c1e401823421034481e2a441a335a24284c1b365722315d212a4b1b3d612630 *4f1d3a5b232e4f1c20411c314f1d4060223d5d21436526405f273d58233d581f2d512127491d23 *491c1f411425481846662c3e5e223d541b3a5723375d29325e292f4d1b315a1d3a5e1d3a5b214a *6b29486c2d3c5f2c3c64313e5f283c5f21476f3247722c5277355375375f76325a733264793760 *7c425f7d3666843662762d63793159783556743143652556723a55772d506d244f6927526b2253 *712a526b2f4e672c46692f4664295475285171254e712b4e692a5c6f31576c2f576a28556d3c5b *7931556f2b536e29617d2a607f3a5d73306284425a78365d8140507333496b2a476e28496a2c57 *6e3c6583446f843e567736486f35506f2c577c3a58773055762d596b27556d3447632842643449 *622c516f315471314868244769294d6d3a4d6e30435c284d713b4a662d4c6a2d556d2a547c3657 *762e5e772f5f7f3b628042536e2c5c772e59792c51753561792d667b2c57682b667d376080384f *74355378355c7e3a6081346a89395c78305c722d6481495f7d3b607937557834576c2e5f793557 *752d516a2759793a4c733048662d516e2d5b7b3a55742b4c6d254769234d6a294465264d682f50 *6a2d395d213d5b184865204e6e296780385874374e69295a712d5c7231576e275e7d336c893f64 *80325e773c7682436078345c6a2a516928516b25576e2b55763c56782a576f295d742b677b3351 *732f637f36637b3657753152722b5f783e5f742958773448672b3a551d406023587431486b2b4a *662244601e4d68245a7a2665823c587a2e4e6b254c6a245168254c6a26445e203c5c1f4161234e *63294a64284462294d65254f6f2644692243622549632355702f526c2c4a6423405d1c4365224b *6d2d4965264c6c2b58772b586c285e7c365a782e5f74325b712b657d39586726506a2b4e5e2854 *632b4f6a29546b2b506f26526e2a5870294c6f294766265165245067244b692447652241611f4e *6e2a456322445d1d415c20476c2355712d3c5a1e4763214d6a2251762f4f71285877334f681f50 *6f2a49602149642559783562792b5370245277384c6924516f26577129536b224e6a24455f2048 *652344652253662043611d4c67235870254e6d2543641e4768214c6a244b601a44621a3f631b3c *5c1c3f5d1b415a1c385b1f49662443611f405b1e4262203e5f1f2e531b4160244767284a652439 *5f1f445c1d4369274066234c671e4a61244b632047642b435c2149641f4864213d5a1d44601c3d *581f3a531c485c204c6524526924435b1c41601d40591a3b571b405e1c5166214e6320536c2449 *7029587425576f2545652041601f4f5e1f55672a4e6c304866264e67284a621f4b652346641e3b *5b1b4e66214d6223466022435f1d4c69283e621d4268214d6d324a60223f601e4c602343601f40 *5d233b5720476225294a14385c1c496a24576a274a61224967314d6c2d406024466a2747652046 *5d1c445d22476122364d1b395c253d5d2630561e3f65203f62242e541a3950173b581d445d2047 *652c43612842631c47631b3c63203f6627546920606f29506c2b406327445e253f62223d5f2045 *641d3c5c20355119425e2543602343622243651d3e651c405d1a4d702550672160792e546e2842 *622641571e3f5a1c385d203862273e6023415d244d69293e5e214a63263f5c23305b243863203d *6120426a204361204661253e6326395a204067223a5a203658203a5b1e3a581e37501831501a2c *4d1833521d3f5c1e3f5e1f40601e47662141531d4a5d214d63283e5e243b5a2743592029522631 *511c3b5c234059224d612a36582735521e37501b3b5019415d152a4f1830511f2f5126405a2247 *6a3036552733521c385820274512314c162c4d162c4e17344f1c3254203055223d5b1c38612036 *5f262d53132b481434501c2b5320284316385016304e22284c1930571928501830501e38551d40 *4e1d405f283d5b2430561f3d5c234162213a541f2c491c36591d2c4d192648182e4f1b3e621d2d *551c3c5b22364f1e2c481637551e405e273960273054243f501d3d5d214e64266f9267ccd9d9c9 *d3d6c5cfce9caf8257562d4c47243c48255242204f431f50432143401536481a543e184f471e54 *401534411c473d1843471b384a1a424218394c1c434312374922524c2051431d484f23364a1f40 *4c1b4c48163f441642451845481d3a4a1c454b1c37501f2c4a1927421048582142501b3e562340 *521b33511e3a52254654243b522a4659213d5114425023434a1936481b4f5629364e1d243c1729 *39102c481724440f3447172b3c11314c18213b162840162b421d2f481935551e324e1b2f48102e *4918263e162c4c1d3250213c52233d561d354f15314711424e1a3b4d1734511a2e461b394d1f2b *4a1e3350123453133b541e4662283d551f2548182842172f4c1d3f5d202e50172c501a354f1b2a *48182d451633502035521d394a152c4d1b385318426122344f18334a183c4f1f24390e2a471b2a *40172d4c1a3f501533420e2943113b5b1f3d5c203954202f4e193d5f2a37571d435f223e5c1f2c *450f3a56202e53262c4b1d446529385e213248143e5e1f3e551b3a501e486223445f2344602649 *672c4a6524596b22536f24586f2749601e4363244e67294c652a51652a4d682d5d752a5469214e *66205969255465265b5c255559214b59204c67214b641f5b772c5d7b315c74295e79335f77355e *7531516d2f4e712d4e682257742e4e6c2a556a23566a2b4759244a62265e722972712655642356 *6a2460732a55692965772f58682e5e7a335a80345d7527526a275f7f35516f2b435f235b743457 *74305d7a3c59772f52773353732e4d6320557530586e335a763a5f7e3a5875334c672353612a48 *5f24597034526d28586b2c526d34506b2c5570304b6c2b4a6c2e4a63224d6726546e326073305d *6d285c7330627d3b5b722d5e6f265268235d782b516f264d621f535f1f5266265165285a6d2c57 *762d4c65205d752b5d6f2a6a8543597731647b3364792a5e762e61792d697e35647c3660793165 *7531576a225c6a264f6e23556e275d77364f6c264e63224c66294462224e6b274c6d265571354a *71314c66234a6b244b61205569224f6a255c773351743258712c52642a56692c576d295c732c5e *6e265575355d773a6b7c306a7f3765752e5e7339576d2d63753b5061215272224766224563224f *712a4f69265c7c32617433546b2557732e5369274f6a25475d1d53631f5e74275b792a60732a54 *6a28506b295e742a567531556f2f5d79305c7126546e224966204e63235c6b295a6527475e1f42 *5c1d4e68224661214d5a1c495f20516626415a18405a1e4762204b5f20536a2348672250611c55 *66285a712f4f6628475a1f415e1e4c6120425c1e435e1d41551b4d622757672756683262702d5c *6d2d5d712b56691c516b245266294c62214e6926465e1f5169263f5b1b42611d425b1a5768234d *67233f5c194860213c531c435c20476728435d1b46601c4c642550641d596a264f6d24516c264d *672448622049601d50641e566f244c6018435f1e4d6922495f1f48622151631e4d68214c601e5b *6c284c601d5065244b611e4b5c214d611f425d1a425211384c0e3f5415435d1a475e193f581a40 *5c1e405c1b3f5f164f6d224b64254e681f4a5f1c486525466522486021455c1a46631c486c2140 *59124a621f4c611e47611c4765214c652148611b4e671e47661d495f1d475f1c4c641f54662c3e *571d485b265a7327536b244f6727596c275469255068264e6020445d1f45621f4f6b224462204a *5d165a68225b6a27566b284f60205266274b6b295b782e5d7020586f27627427596a26475b1957 *6d2a4a66274a6c2a40641f4a62204d6923475c1341571a4966204766264c70234c672157701e41 *6120435a17495e1242602041561e3a5920476222546d254d6a24506a1f5272275b6d294c68274f *6b295367284e67274668224664264562243e5d2243561a4c6622425e233a551e41581d45621f42 *632244611a46581f465e2045561f3e5b1e506928596f2b43641f4d72264c6e23506c274762273c *5c243f5e2339511d3b4d0e3d54143a5817426126425c1e455e1e435e1f34561c3a5f204769264d *6a2342652144581d44591e466129385122445c1e435d24426120446d3044611e405d1b3c521b3d *5d1d46622040591b385517425e1e395519345719475f1b4d64264059224962273e5a2342662945 *602343612744611d495b1e4c69234c692a5069254a6c2a496423445f1d46641d3e4d21485f2443 *5c214457253c4c1a334f223c531d3d53183e5325394c1c3d4d1e304c1b293e103f552433521e3c *53232f4b1336521538561e2f49182f4b19334d18415e1d3f5b1e3c551836591e3f5c1c3c531e36 *4d1c38522142601e40571d3b571a41581d345c1e3a572239501e40571d45581d40541e39521c3b *5d1c435d1b3d5d26425a2445541d4e61214867273d592144551d486b28405c1e3e57213c50224a *5f224d65284d61204a66273f612c416126435a1e41561d495d204b682f4a6023435b23718c62cc *d9d8c7d3d6c2cccf80a06a3348233a3f153b471b454d1e25401d2c40234c4f2840421d39421e27 *38112b33113b3e11462f1429391c3e4a1d424a1f43431d4a431c3b4c1b344916404f203b451c50 *49174153203c4e1d4252233a502128552239541e284c1640461744471c2b4a1d2f4d1f273f1b40 *521e2f4a15355a1f2f4e1838501b32521c2e461d34471a31481d1f3817344b1b274d1c29481032 *4a182f511e2f4e1d23471e344e1d2e4610284711274a1c2140122e4e1f324c1a2436101e2d1629 *3f1b263d0f3147142b491535511a384f1b334d20395d251f4718204218314a142d4c152e511d36 *4e1d2e501d3855222f4e1e27481d214517294f16234d142043152b4f1b2d47152b441821401624 *491c2d5117234810314f113c5216254d1b314a15304d18325b2535521f3452112d561c2f511825 *481e354e24374e1d243d101f4214234b17244d1941621c2b48102d4f14415a18334f192b501c3c *5d2c30501c3a5b1c4367234167214c62214f672241631f4063264a6e31456a2e3f6221456d274d *732e4f70314a67244c6c2d4d732b436b263e5d1c4269284c6c27476921415f293d591e45631e3f *6323425d1a43632040581d3f571d31400d2b4015273e0d38521d35481d5870315069205176305b *7c325c763456712e556c2b546e2d57742e4f6c284966254a723057793053702e5a752c5a712e63 *83386e86376d8a446c83395d742c5270264b6526526c26577930607c3859752f5b7b3a50753150 *7532506d324c692b496425475f203f6126496d2c4e7b34466727546c2a57723055752f526e3753 *732f527930597a375c8137597c2e5a7b3757752f53783c5d7b395479354c6f2d56722a5c77385b *6d274e64224e66244c64224f722857752b5271294f6d274f712d56772d576c275e762a58712a4b *66264d6a294a6727567028506824566d235064205268225e753347642350702c4c6e3151753255 *792f58722a506f2a58753a5770265675365677334a64234b6b2b4e70354e6d25516a2652691f55 *712b4565214d67264963244a652c50772a4a6821516a27506c2f51692e4b67274d622b58692c64 *7c3b4c64294a68225d75305a71274b682f64792e556f25496d315975314e6b23527b2e47691a54 *6b23486829495f21436220435d203857183f601e426422435e1e4f6a2649641e516f2251742758 *752f547327516b2057772d5f73255b722d4c68264a65213a5821425f22506e2648631c546c2b43 *611c40581a4760203f5a194961213d5b1f4e691e43631d426625406225496a2a52722f556a2c47 *6323435f1e35470f405d1c3e53153f59194d6826586b2b506b264d61224a621f47641c5f7b285e *722a505f205468263b4b1a39511a344d1a3f4c0f3a5214474f1442591b4a5d1e3f5920415d1f47 *5a1f53631a51681e4a6322405c22455e254255194059143a581c37501a45591b3f5f1d4a5d1a50 *681e4463213e5518496728455f1e47641f5373224c70225a70275a6a1f4d661f48601e4e672352 *6d284a6f2e55762d496b21506c1e556e20465d1b435e1d445e1e425e1d3f561445641f4c6e2445 *601b48621f4a641d526a214e6b29456328566d2445662145621a4e682245601d4d601a3d5d2336 *551a375c1b436a1e43651d44641e46651f4f722c546d264f73344d773b50732a516c2a5a79315f *80414c601c4f722a566b244d73274a7234486e2c506a21577428556d22506a2450672253702a45 *672142601d47631f4a6219547431546b2755651e52641c4f6a25506621506a274864204766224b *6b2347611f496425485d1b4c5e1e4a64224664244263184a6c2448621e4765214c6e264b65224c *6724405a223f601a4c6a2642621c4064213a5b1e405b1f43642b4a6a2d4a6d33496c2a556c2a4d *69244c6d21485c1d4967223d6024446825486a2946682b50722a4a661f4c6b2b46652e47642341 *5c22416425395d1f3f62224464214a69284a6c1e4f6f254e66275367204462263c5c1c4266214b *6925476e2641611f476122455d1f395c1c42611e3a4f173c5f2042631e4a69203f63223b581d3d *5e22415c1f4765204262203d632147621b46601c4161203d591d4c66264468213e611e3d602041 *5e1d3c5a18445b1e385917305315475e164463222f4f1836561830511a2750213d581d49632043 *5d213f5c1e4064203253213a4f174a67253457223c601f3a541e3d581f375a183e5e1e40612336 *501c41571c475f1e3e551a40531935591e365817344c1c3d4e1a43611c3e5f213a5a21395c243c *531f415d203c5c22355622325a2539501c35541a3755174a681e3d591c3956173a5c20385d2039 *571d3b5c1e40621c415d1a46601b4e63183e5e1e3d5a1d42571c475d204365204965293b581742 *5e214565204365233e602542531f3f591c3e54153b521a3a5b1e425f283e541b4c66204d662c41 *602a405627446221466923376022425b1e3d5d283a5821465e224c622b4662264d6c2250702a79 *9663cdd8d7cbd3d5c3cccc7390542a3e1e2a371c3c321c45431e533f1a31421e40521e36421d2c *3e1c363e1a41482137371d464c254b431c49401c3c4f1e483e1b33350f283f1d3a351638421d36 *44203f4f1f343b0f3a4c1a384b1c404d1b2c451a384d1e41471e3f491e34431732441229421123 *330c344a1d2f4917344e1d3d5a2a344e2043501e2635122e491d314817223312304e1b3d4c1d34 *451d324d202a4313334e1d3242122c4312334918304c1c213c13263b122a401d334b18374a1c2e *3e123a48173e4a1f465622364b20374f1f334c204159223b531d3a4e192b4816324f1f3a511e3a *542131512328491c304c1e334616334b172a4a172f461831501e2b48162d441d314818434d1731 *4a1634581d38501c3a581f405f25284d1e2f4c1b39541d2a4e162941123d44173244183d5d2237 *531c29471d384e1f37581d314c183a52213a52192d4e21405a233d58234a6326455f23405c2242 *5d1e425b204c641e50621b4b67234e662a4765294a601b4d6a2b516d294e682651621e47621b49 *6a294662234764274b642743612445612446611e40562040562952692b5063214c67274a642147 *68244c682651611e5b6e2a4964254f6a2a657d3f516c325b794a53753c4a61254d5f27404d1548 *5d24576a26526926536f30647f3c5a7025596f265263254d6b2b516c2b5a7335566f2d5f742e5d *71285471275b6d2960722b5a6f31526d2e4d65274f6a31536a2360803f5d752b506a2c56662e5c *742e6179325b732c5072354a6320476728516b2859722850742f4e73305a773c6478414f642950 *712f5c783b5c6f295f6e2b56722c576a2a4f6c2c4c692f5774324966264b6a26536d295b743062 *793458702d54712f566f2a57702f56742b586e24575f1f5a702d5769275c722d6175345f77345f *722f5272325f732b52662260782e647d3b48682657742c5e762b61793a58752c5776274f6e2e5b *72294c6c285a732f5a783a556e315d73275868215d6b235e6b2952702c536f335e6d2e576c285b *76304f6d27566c2847602246541d40581f41561f485f25475f214761255b702d5673324a5e2659 *6d305366264860216c76305f6c2c5f6f2a57682a56722a5f6d2956712a5c6c2c566a245b6f2756 *6923506d265464254d65273f551d3f561a4155184964254867265366214d6a2c49642253652653 *6527566a294c5f215365245064215a722a4b62254f682a4e6021495a1d4964254b6427506b2b48 *6324436420506b214b5e18475e1d4d60225963244f61224661253f591d4a61254d622355722a4f *66234d62204f652548602344591e53601d475f1e46621d4a671c4e631c4d601e404f13465a1a45 *5a1a353d0e2c3a103b470e3a4b12394b1341591f4755154b5b18425b1d445820485f205066214f *621e445f204961225068284c5e2342551d4a5921425918435f19425a174d601b4b5f1b54641f55 *611e596a255c722d4c6a224d692348601e4e601d4e67244c62235562234f68275d773254661e52 *671d5364204b65294d641f53671f465918496320465f224c611f4d6622485e1d49621d566a2452 *69244e6e2e586f2a53702d4e61205564235d712a5e762e4f66264b67205b6e2c516122435b1c3e *4c143f5c1d45691e4d6a244f6721476525476024485f234d641f4d66225e6d20586d285c6e2d53 *6c275c722a536a2b58733362752857732a536b1d5c72264f661f5871294c61204a6b2b506c2749 *64204b591d5367205267215373335a722c5673305d7a405b6e264d6923526a225768255565285a *692d4e65244b62215567204f65254e5e1e425c1c485f1e485f1e4566264f67245d7434516d2e4c *621e475d18465a20384d1641581a49581b476525476024526b2450682b4d5e1d536825596e275f *6f314e6f2b46652a49652a425e24485b1d5167234e63274d5e1d4d641e4b61204c5f234b5c274e *6a294c611f4e6826415b1b4a5d1f4d6324496229445d264a65264867255465204d612547612347 *5c1d3f5f22455f2a3750212e481a495c1b4363204a6425476021485c2a3f5d264c612a2e451747 *5f2a4d6424475b1e5065215069234b6624486120496325435b223b55173f59184b661e435a1b3c *5019415b20425d20475f243f6021425e1b5169223d5b1f42551b425e1d3e561f33591f44612748 *69264260214e69284862274a622b435c23435e1e4160253f60283e57203f5815415d1e3d5d1f44 *5d1d3f5f204768294562273f4d1c4a5f1e4457164f63214d64224f5f204a662441591f46592248 *693b3d522c3f511e41541d394d153d4b133951193e55202c4f1c39581f414c1c3a531e3d531950 *5b19495e223656233d5c213a4b18435c20485b1a3e53183d53163e531e3d4f17314a16455a2145 *62224d5a1f3f4e18425d1d445b28374e213656264253253f50242f51113d521c3e551b40612149 *602342531e4a61254a5f294a5d263f542832481742591d4359204b6428435e233d4e1c3d4f1c4e *5d20778961ccd7d7c8d3d5c1cccc729b5b3a47232d3d1f37471e3c502035421530401d2a3e1f2c *4522334d1e435e2e4757213b4f253b4f1a2c471e284821375527475e2b344c142d44182e49112e *4a1d2f4d1f334a1e2c451e2b431c2e491f384e1c3d4b19303e12485328435218354a1a334a1c3f *4f1f29471c2a4e1a2e501c354f15324d21324f1b304a1b294c1d1e451a26451625431126400f31 *4a1e31541f305116304d1827461f274a20233f13274218314b12314c18344d1a374f1b3b5d213a *571f2f4f1e3a59203c58204b62213758212c4c1932491b2c4f212d4f252c421b2f4a1a2e4f1931 *4b153e541b374e1b2d4e1b2e4c1843632238541c354e19395016334f19445d2750672f3d5c233b *5e24405b202d4f1d3b582248682f405c203f521a3d521c3b58232b4d193157203b5b24566c2d57 *75284e6a2951692c4b682b4765294a6125506c234767274061244e773f52712c4c5d2443612142 *5f224160213f591b4f6d295b792e5b782d4965225b773550702c4a6b27415e20496a2a5a803e44 *6b284b6b2b4a64244d69274b6b294160214b6d275076324a6b2453732c5973284c6c2d5067284d *6a2a4e6c2d4769244e702d516a2649641f566f2b585f1b6985454f6a2651763b4c6e2c4d672c4b *6d2d567228526920496120516a2551712853752c5476305e7f365a79306277285a6b245c763053 *742b61782d5c78345f7b3c5e7329587427597b3a4c6829506d2f5b7633617a335a742d56793661 *792752722a5a73325a772e4f732e58742f58712f5d8041627c34607b295b752d5b7b3c69803f5f *7c405f79306582455d753c59773b56752d4c6e27627a36647d335676324d68294365273859214d *67274e6d25465f254664254e6c2e55782d59732c58753449632a496a274e6f2748652652682a58 *6c265a722661752b617c2e55772e5678305d792f43601d4c6b264e67214f722c4d6c284e682559 *732d49631d45611a42632747621e4d621e576721566d2254742c5878315e7b2f5a70255b732656 *782b4e6c275a713152652650622852702a4e631d4e6a1f50651c4f62243e551a455f2647591a53 *6929546b295d7b284e5c1b4c60285e6e2b4c5d1f4f5e24596d324d68274f72265b72215b6c2665 *7b30587227546d2a47612a4f6a2c47561c546a274f672352742a456a223e5f1f415c1f4a662751 *6d2d566f2c4f6d25496529556a2849641d4e641d4763204d6320476025476728435b1e485c2045 *6223466023485f1f4f6a21466b274d6420465d1d4d671d48611d48651e5875274f762c57752c4d *6c2b5c75315b742c5372274c671e53681e4e671d4e6a23496521425f1e4d62224a68224c5c193f *581a476119415a17405b1a3f5e1d4e61214e692645631a435e19566e274b651e5f72284865264d *6d29435a22465b154e681f51681e516a214c5f1e455b1a3f591c405c204e69294763234b712748 *671a576d25556e24586624566f2a536c2458752b537229516f214e641e536a2059681d586b1f54 *691f5b702456712a5f6b23526928536e2850601853661d4d681f5269204b6923476e2151732653 *74255375264b63204a65224865225271294d6e305270264f69215267214f661f50631f4c621f4c *631b466926476421536c28586f245b76294c6823475d1c4964233e5f1d506a2653732549692448 *63234b682749671a52702b476f2b5d7629667b3448732f5775235674274d6d21586b204e6c2847 *641d526f254c6b2856762e50732752742b547227567634536b2d4d642250691f516a25445b1b4d *6822416424455e1c4769284b5f21425f1d445e1f526a24617a324d752d4f7229576d2354712d45 *63213e571a42611b3e601f48601d48641f4c651f4357184c6420486722405b27445f224869273f *621d556e274b67284b61244d6222526e284667274d702d506e284f6a25415c254f6a294b62244e *6a2f5069245a74284a682946601e557633516b2764702e5d6f2d54732a4f6e2a4c6c2b47642c4e *6a295275264c6d24485c1c495d1d4e6a2c4d6a2940611d46672148652142611c3e59264b622143 *622048682a5a72264c6524516d234c6d2a435f224968243b5b1e45611e4863224361204667233d *611f40651b45601a4d681f445f1d44621943611b3a5a1d3f5a20435e1d45681d4c69204c621f42 *5d1d3e60214463243e591f405f24405e25345819445c1a415b1e3e601e3d5c1a426121506f2b3d *5f23436122416320466521485f1d485c23476020445e214964263b582344551d46602039501548 *581942511739561d496328425f253d5a224262273c591f52702f41632f4a66214c632941551c38 *5a2b384e1b435c1839531a45611a405a1f38591f455d1c395a1f425f23405e22415c1c43581441 *5f1c40571c314e18406222446525445c29465a204167223f5e1d31501736521c34541c34511d40 *5b1a436022475c1f4560233b5c1f4961203d5320414f1d465c203f4e1b455d204665214e66223e *642144652d789366cbd8d7c9d1d2c3c9cb6b8d52395432395127334c26405025374b26364b1f3b *4d1f36471f23441e32482039492838502731441e2f4d22414d213c5224334c212e4f233550243d *4f24544e283b3f182c3f1a2b47142c491d2a4a172a451623431835471d344c1f364f1d2c45172d *4214233b1128432032512130501f3b4f203b582a304c19254013263e0d1d311124481d213d1321 *40142e451d273f122b420d2f4717324111304d1e29431a294017374e223e5d2439522338542642 *561d354d1e3f4b1c465528405a1e374d212f4e20304d1b314b1c31491c3b5120364c1a34491b41 *54223855292b491e2d42142c461a31471a3c4b20384b193244172d3f1832471c2f47162b451035 *4d12364b163e52193b480e384b1d4257214257213f4e1c445f22395317475a214458234d632949 *62254e652e546e2e50692144621f536e2942622247612144622647642a546e2f4a65314d672a4c *6e2340622048672749672749612a485d214661274b65274b712d4b6827556b264e672c4d6a2d44 *692f425d284b62264f67264f692144662350732d4062285268245f75324a662147602346642142 *5c183e591c485f1d435c1d476127506a2347662c59632357762d537327516a264f62274e5f254c *5f2057662d607f3a54773a5173315a712f60752e5f772e4c672e5e702c647731647c385e7d3365 *7631668039687f335c66265d702a516825506a2c51692f475c274f6b2b596f2b5c75335d7b3451 *6f34657e354d7136577435647c3a58722b5e75335e7531677f3a607836507330527435586f3152 *6c30516b215b763759733650652b51682c5470364e682e5a6d2b4b702b4a6c2b405d224d63224a *692b3c5c264c612849642c4f632d556d2f49602257712d4f65275b6a2355682a516924506e2d56 *712b536e30485d1e4d5d1d4956203f521b485e254d69283e5121445f263a581c4059204c682548 *5f214f66295065274a6625465c214b66284965234d6a264d6125546426556a2847662651642152 *6622445c1f4a6521455416414a14505c2141581f435c27496227425a234a571d41571b3a531b40 *4f1c4e5d1c42581f3f4a124955193b4d1c465c20465f1f42591e4d5d2440551c484f1d47571e44 *5a1d47541c475e1d576c28566729556223556c324c682e5168265162225366244866264b5e244e *67235f7835506b2e40591d4965284860265567244d6522445e21405524495f254e6a2f5467254a *5e23445c20455f20475b1b485f2051692553722f52611f4e6524485f214962204a5d2042591d4f *66244b5b1c465a17475f1844641e5469254e68275572285672345770394f712a5664224f6a2a53 *6c314c6b2c566d264b6a274e67285c6924596b2950712b496b27486f2f47612a4a682b4f612242 *591a405919435d1d4e6a244566263d551e435e25425d2a425c1f414c123c481640591f5c703457 *6e3c383a1450581f4c611f4c611e405a1b496825465e1d4a622448641e46571b55632259631e58 *67216777285c6821525f1e576c274764235365294a641f4d642548621e55651e4e64234965244c *641f48601b50662453692648621f4467224d67204e652349652852702d5873335d742c596f2a57 *6c275c6a2365742b5161204e6424516b214c6927506a274d6c2a435d1e455d15556b224d66244d *601e4d64274e6c234e7432506d304a6621536a27405a1e364f1d445b1b496322475d26465e2346 *662348671b45621f4c5e214362264a62274d622a576e2d4e70374c6c274d682342571a3e551934 *521a455c1e475c2239571d3a561d3d5716475c1e3c591752641f587238526523465d234561254b *6222465d1f515f224c64263e602a3a532143532343581f405e234667244d681f4864224d5a2048 *5f21486324486428365120425e1e405e20405c21415c22425a1d405820405d1e45581e41541d4c *6021446323486625425e1e49601f4d6622486c2c48642654752c4e75374c601e436924465e2342 *5a25405d1e4a6a3142642d495f224f69264d6725465d20475e20445820455a1e45652d4d673a48 *633047621f3c571a485f20425c1d43601e2b4a1930461743612c3551263d5a193f601c415c1e3c *5917485f1949652643561d495c203e5a243e5e194a5f19425e1e4862224661223d591c36591d29 *562235531a3a571d435e1f3f521d43571f465629465b2b3157263250223a5920374f1f36521a37 *58264857203e581e435a1c3b54203c501e445a1e3c581f43642a3f5b223a461a44571c435d283e *59253958222b4e1b34541b3959243d522035501835541d35561f466828485e234a5e21405c1d3d *4f19324718333e12314b18314e1a425319425b1f3a521a435e25425c1c4a5f22425b1d3e602537 *602a41581c495e1d4a62283f5d23354d1d3f551a385d24415a1d3f53193146183e551e495f1c33 *501d3f571b3d5a21405f24355926395c23415e204c62224d6322455e21506324485d25475f243f *5a2447571f4c612b7f9064cad5d5c7d1d1c1c9ca658a4b43582e3a4f213649193e592549542630 *4d224d4d233b5226344f1a3d4c1b3547183a581e43511d314a152c46122e461c304e1c3655203e *521d3c521e314f1a2b47132e46183e572332491b3d56183149102f411027491a2d491c2f4e1a3b *44163b531b31511b38511c394e112f410a2f50172d4c1a2644172640122a3d162c45112b420825 *400a334c182b4a18223c112948193a511c3a521c294810334c0a2d450f2d4711384c1634502041 *4c1d4f6020435f1e3e5517445216354a1b2f45122b431a3f521f394f162b4514324a1634581c37 *541d3d511c364f19445a1f36551c425b1e425c2445672539561842591843551a4f67234a612343 *5c1d4f64244a6929445c1a566d2759722b526d21526a2e5f7229516a2b4d6e234965225d6f1f5e *78255c6d244b641e4c6d204d661f4f70324f6e335977325b6f1f4b691e566e264f6b205472214f *6d2649682a4766234867234c5d154a5f1d455d1b425f1b425f1e4d66294461234d68294b601d4a *6b2c4d6a274c6b284f6a1e577327556f1f536e244a6a295a7026657c2d687e2a5c6f214f6a2350 *722b43631e4f6e2d4b6723526d244d75225d7b285172235e6e285f73276373235d762b5f76275a *752b657c305266224d6d2a4d6324546c2757762f617b2b5c782b617b2d637e34617c3053712b5f *742f6d7f3267782c5a793262813a617f2e547524546c204c692652692959742c50722f59742d56 *6c1f58732a50722f58722e6680406082405c722b586d295873315c732c5a76265b752d5c782a5a *6d2d495f1d4f6a2553732f52742a47671f4a621b4a5d1f556924496825516d314c6b2f4662284e *6f244d6e293f5b1a4153195d6c3753692e44662c4e65255c6523506f244666215c7629617d2858 *73295f793b5a702d576d2150661e49651e56762257691d50651c42621e425f1e44602051762d42 *5a1e4c6d2e4f6e23586d284f6f255169214c5f1649601e516a2c526a23466a2451702557702649 *6621435e1b486115476217405b11415610435e183e51124353134a591644561b4b672343611d47 *672754722b506d204556174a5d16475f173b581641641f3f6020465e1d3e581a45591d50642049 *611e4a661f4b6421576e2b5770234a61204d651d5f6b2150722b54671e526b224f65205266224b *69244e6a215e72245b712250621a56641e525f195a75245c722359752a4f64215467275d6b205f *6f234f6425445a1a526a264c5e1b4960164b5c1444641a40611d4c6c2851702c455f1e42672256 *6a20495f1d576e24526a21536c2544591d405d1d496425486b234b691f506824476a204d5f1a49 *651f536a2354651d5471224a671e4b6320586d27566a22546a204f6d23495c1a42551146621b48 *5e1b4a621e455d20415c1a3e56124458174a5d1a58681e44631d43611d3f581c455c1e475c194c *5e14445c20546d2b6f874a42601f496527466228455d21405716475c164a5e184a5f0f435e174d *631b4c681f4c601a405f174a5b144b651754601b4d5e14405e1d475d1554661c5068224b5f1f42 *5f174e681a48611d425f1e465d1842550f3e5d1a45641f40641d436722566c22516d2548672244 *641e50681c526a204f5f1b485c124a66164d661a3c561735501437571b42591a465f184e67234c *631b54671d46591d495d1545671d4f6a22435d1c385d1d3d5b1a2e490e3b5a134b601e48611745 *6522536c1e46641c435d1a3d5f154c6a1f485f164359134a6318415c1a4159153d591d405c2042 *5d174a641c465e1a3c5c20365514405e1e4a611c475f20435f1e4f6c2b41641e3d510c41591244 *641c40601f4c672745612542602243671f435b20475e1e405515425c1b4967275767204e67264b *652346652348681f3a5415415f25435e1f485e1e4a59174e6424455b183c591c3956143f612242 *5f21445d1e455e1d3b571d43591c4a681d45681f4d6a264c6523465f183e551a4a5f1f3e5f1f41 *602448632141661f475f214860214b6424485a1846642548602340652345611947601a4a68204f *6c2548500f47651a3f5714475816405718395311405c14486b2249672e4052184b68224161253d *571c3b5b1b425d143d5c163d5917445a19315213365a15415e193d5b1d465a0f425a1246601936 *561932531c364f1a4c631d485f1e455d1a3b541542571a3b521f335012445f23405f202c4f1d3a *4d15475e1d465c17475f1a3f591d3552153c52103b59173e581d355a1b364d173f521c425b1844 *521c45551e435d1f3e5a1b345519425c222f4e1638581a395b1d445e1c435c1c2f4d1537531833 *541a2b4c172e511b33591a40581c3b511a354f1034511533521140581c2d521c344d183e57153a *4f184257163f581e44602148661f3f5d1c274e18334d1b405619405a153f55152c4d173756173f *5b1c3e5518435c1a415b1b40601e4562204b661b3f61223e6120406423405c1f4c5a1e4e5c2049 *621e45612047551d465e24768c61cbd5d5c6d1d2bdc9cb5c824743522d3e5326355029425b294b *54263353292e4c2336572b3d4f25534e212a3f1d3a50252e451e31451f2c4f272f4d2238582535 *52222a481d3a5c292e4b202b4c1d26451e3252222e4a1d2b4c1d2144142c53202c4f24294c1c29 *491d28441c2f491a2140172c481e3954212c4e2337561f2b4b1f364c1e2e4d1d2955272b511e1e *43182f4b162443162c4e1d2f5022385827324f2230521d41632c3f56233459263a5d2136521f3a *582a3e5222395d21294113222f0f253e112a4018364e19334e1f45601f33532035511f2a4c1f32 *4c1f30511d425c213455213b541f456525475e22416429456a2a4c6a314d6b2f44612856773555 *6e2a546e2b626f2a627134586a2a647a33647f3f64833a697f34607b395d7933567e3464824557 *722a5a7e3d57762a56742a497029547628506f2f3f611f556a274f69294666214f6f2f4966295b *7933516a26466120536c274a6d2d4a6c273d5e20445e244762273f5e253c521c4f61223b591d48 *6629466729506c2e4d6f304466244861214c622d4d6a274e672a5b763652742e587c3758783758 *75324e6d2e4d6c2a5c6e304d69264e6d2b47672a56783c5d762f5872284c68234f6a275f702852 *6925647d3c64823c617b325577314f712c5b7b3257722f5d78325a772b58782d4b6f2a53762c57 *7b3a56732f5e6d245e752e6279355d732d507028496f2a4c652a4e712e4c6624506c2c4c6c2e4b *612a4d6422486f303f5d2553723461813f53752f576f2a5a722f5b772e5677335b7a305579344e *6c31516b315b723348662949672d406627425b1a40612143642c476e30576f284d6a2e495f2942 *643047622649682b42612843622b4463274c5e1d49611f546d255c752656752e5b793b61803c5b *7c315a792e617d35647736647d30586e3058762d4e732b5377354a6c294665234b612254681e55 *6a26466a294e712a5275364f732c567830486a204765234f682338571f3b5e233f59204465294a *6e2a466328496221466220496a2837551f3f591e415b1d43642c435e214f6a284b6c3046612556 *6c2a50661f5069264a6e2a4f6927486626405b1e4861205062254c63224a682c4c6928435e1d3a *5a1d3e571d43612448622a5669234965284464254c6a224c64264a7134445e26546b28576d2560 *74285970285468264c6c22486220435f23516c25506a2348632144561c455d204b68264a622838 *5924445e214966274b62234f6b2f576c2c49642c516720516720486c2f4b652c4e5f204a692344 *65224a6b284b6a284d6d2b4b6926436520496f2f46642242631d4264254161264664254b67254d *672254672348662b506d2d4a6825496725486624465f1d435b1a46621f425c1a3f5b1e4f702c4c *63214c61224a621e536725415c1b4768244a662c47662e526524556b2550642448601f48602146 *6123456221415f22495d1f4d6726506d26486523435418456021556f253d60244660263e5b2348 *5d1c4e601a53691f4d6923435c1e405c1c3d5c24475d1b536d3044641d49601c46601d5064203f *5617435b1f3d591e40581f445e1e506f2b485f21435b1d415f2139501d446125546b2c4c632452 *6d224e6b254663214868244e642345622440581c536a234863243e5f1c4c67233d5a1e415c174d *6c2859752d5d7a39567030526c2a4e73205a73284f702a4a661f4a6824425a1d4361214d6e244d *6a29476a2c4262214461214f62214b61204a621f4c5f1d4f6c23506b28435b1b51611c586c234f *6f2e465f1d49631d425b223c5c244d6e3241591e465e204f61174d69284b67294763295c7c414f *6c284c71274e6a2d45642748672151681f416321405d21435d254c6220476a2a4b6e305a6d2651 *72334f6d294a64244f6b2f5b752d556f2559722c546b244767245d752b527a36446b3244692a45 *61254f6d274560224f6725546f2f4c672a556f2e5072284c6c2b466b2b436b254d6e264d6d2a43 *642048692d4d6c2e4766254364294f752e526c255776294b692a4d66244e712f4d6e2e51762846 *6a294d732a49662347642547672852773141632154722a5170254c6f27496b29466a2857772c4f *6e23506d2846662544671e486c254c6d274a6d2d44551c41581c48631f4a6b293d642848652540 *5f1f345c212f501d38531a4361213f5c2138582042631f43632e3a5b2b3f602a3b531c4c632940 *62244c6d30486a3441632d486826405d213a58183b5d1e445f20465c243d5b21415e233e5c223e *5c203a5b244663214661223c591d38552037551d3b55194765213e642b3550193a5a1e415f213a *5f31364f1d3d5d21315b213352193d5921355725384f1a40571f44652238521e415d1e385b2240 *6222354e1734581c3f622136501e374f1c364b122d541f364f183f5c173053203b5d21365d1e3f *5d1d516a253f631e3f65253f5e1e4061234461244a6822435d2442531f53682746622b395e2a49 *6523405f294159224966284c6b2f739166cbd8d7c7d0d1bdc7c75d7b3d394f2b42583641582b43 *5f284354264a5d22425d2a4150202b4c1d2e4e1d29401533451d33481a304c19364e1f324c2239 *5227414e222e471d3d4d192f42122b481a2b4a1c324d1c3f521c244112263e12294c1e274a1e36 *54212b4516263e132a42122c420f2e4a1b2f4b10233d13304d1a264717234019254313395f2529 *3c0e293f0b2a47102b431131471d3a5f273a492338471741551d4a5e2344611f3d4d173e521c35 *5721355221304e1a2534081f34081c2d07162f08243f0f3c4f1e33511f304e172c4414344e173c *501c41571d476022465e1d4c6628526b2959723252671f506b2a4e6d264565213d5b1b435b2246 *5f22485a215265224b642454732f506c24546e2e526828566e2957762f566d25556e2459762f54 *712a4c62255d6f2a60712656691e4a621e4e66274d682257691e576e285268264d6a23576d2656 *6829596c255470325874296681385c7c2d54722d516b264b692a48662345632a45642d49662251 *69264f661e4f6924506e274664243b59203e5e2447612646581a4c6a21475d1b4c61234d601b51 *6a255c792d536d304e65284c6526506d224c6a214a64214d6823526929526e30516d27506f265d *752b5d79305d7329516c285b6d2858732e627a2c617b375a772e58752a5d7d335e74235a742953 *672c5d733059722c5a722c5977355b762d5c762a5164225166224965254b62274e62214d642244 *5d1849591648631e46581d526928546b2e5b76375c7836586d285e7a2f627c2f5f6c2a4e611e56 *7630586826607535587227576e2e4f6c25526c285060275464255567274a65265474325c783751 *6d29546a245c6f266071294c65204f6720526a264c6b2e4f6c32516a244e672260753060732952 *6d25576f2d506823536925486a255272215066184868254a621e526b26496623516a2651652954 *722c506e26475e1a57691f536b25516a214a651f4f6822526a1e4e671e45571c485b1a5666224b *6923455d1c42591b455f1f465c1c455c1c4d671d455b1d475515465b19415d18435d1c4f61204f *5e1d445515465811545f1d4c5b1d48571b3f4e14455f20536a294c6c274b6921506d28435d2747 *5f1e435b213b541d455e21475f244d68214d662350652351622a506623505d1e5469225f792c66 *76315f6e2b5669274e6726536527475d1f50672443501947591d435d1b455b1c3f5517414c1845 *531b42581a3c501b3e53174258183c571a4f612452672750621d4a60164f69255770254b652649 *662249631f4b6518546d294e68234e6523475f1e4f651d4f661d4d621e4d631d4a65254a601f57 *6e314e6d245b71255b6726586825506720556c21516c26556b214d621e465f2147622344652443 *6120495b1843581c465d1854681f50661d426121465e20415f25426121435b1d506b2c475d1f49 *5b21475d1f5069272f4d1c435d13486018445c1e49611c485a1a4855154a5e1a536221445d1c40 *5f234b5818465b1f47581f4e67185b71214d6923485d1c475b1642591b455f244863234c5e214e *5f1b50651e4e611d405a1944611a54682149612545601d4a5d23536420445e223e58204a672055 *6f2150632445581e5066285c7e4267782b6c7d2b7387375f783458712d61772d5f76345d71285a *661e556c215969215e732b58652366752a5870245b752f5c70315c722a4c632455682349682451 *6a246073295264225566235e6c265b732854712a57692851621a5861195e6b2359662657692259 *6d215c722b5b7832485b1e575e1c4a5f21546d286279365d76385972305576315969275c6c2455 *6e275e75266178325d7a3d617c3851721f5a792e5b6f215c6e2f4e611e4f652b5d73345466254e *692262722560752e69772f586d295d75295b752c4a642f526c374f6b2c5b762d516e2a4a6a2350 *6c2c4c6323476520516626536a274e6a2454732b5a6f334c63244a5f20546b255065254d692350 *622250661a536d21576d264f642049642c5a6a22556c275a7328596d2c576d225b6d1f4f691e5f *6c1f546c254d5f26445f21547326496a204b6a1e60782963702c476123526721445d204d6b2950 *712e526d2255701f5672264f651d5674245a7325516c2a53712a4c6921586c1f546f214f6b294c *621f536b2153702b465d27425d264568364e65264f6b274f6c2645601d3e5d22476b304b602348 *692d4c66215b70324c6f3d5468325467204a6b224f6e244f6c314b6a2a516c2c4c67295065214e *64213e5d274c65285d712b4b652547642d4d65274c621f516a234d68214d65234d662449622451 *6b294b66265565205872234e6c31536e2b475f204e6b214c6e2b4460244f652351672557702654 *67255069244a6626526d2e556f315069284d67254a6a2448621e4b621e485e214a6b234d672447 *651d4b6a2e5770225a6d244f6b2b4f6b2e5a6b275b7134607134576d2d4d6b33596e28556f2a55 *6e2f4d6a2c526b2e5f72305d6c2a4f6f35779567ccd7d6c7d0d2bfc8ca67753c4c5429454d2342 *4e2142572337441d3e522948603139491f2d481d364c1e30441826431a1d3f1c23401e2c4a2324 *411d23421d284b152c4e1d304c1c364d1f314e1e2f4517283f162c5022294216304d18304d1c29 *360e3451202c431328481c233f142c441c284b16335921314e1c30481a38521d28441a354c2332 *4a1e29461c2c46112643163e5b1e2e481834542134511c384b204c65293958203d541a354d123a *501a344a182340101e3d13182d0e2845122442122947163f622c3f5b1e3c531a3f58204f5f214e *642b47682f526f2846591b496326526925596e27526c2a4d6c2a49672b4d66274967244d6a2c4f *6a2c476d2d4c6d344e6a304b672a6073354e67265b6820576f254f6925576b234b6722496a2b50 *6a2956783d526d2c5b71275f6d24556d205265204e66254d6d2d465f22536a27566a2254722c62 *7b286378335b782d5f7532526c306275335f7a3658702755662658793c617a395d712453672349 *6229516e335b772d4e6e275b78325a72304a6a2641511d3f481a415b23496e31506a2e46622053 *6d32586f2d5675336476304e6c294f69244a621f425f24466c2c50671e506d2c50762457732e52 *762b53742b5877345c772f5d6b25516922506c235a772c5877294f702c566e2e5074324d6c2d56 *6d2460752c51752f4967264a65244e6b28546e2e536f30526d28587838526e244c6d28506b304d *69274866253e62223e55214c68214969285169274c6b294b65243e61264f6a27536a2b50672649 *67265b763455602043601e4a601e4f62244a65204a66234c6d2758742b44601f4b63284b642744 *63214b5d1e536f295975334e702a4a6525435f20506e284f67225669244f6a224969274a62284c *6023516d26526521436829506d27586f285373274d6d255a6d25445820434f14405d1d3e4f1a45 *611f4d6921496521465f214f6a224d65295766204c5f1d48662355702b47621d435f214a64234a *68253f571a49692448611d3c57184364214c69284d6522567835546c2b536b2655762b5e772b51 *6d29536a215367294d68294763255469264d622151651e475f1e506c204a60205472314f642442 *57264d64234a66234966255171324d67294f6429475e204c64224048173f511b4a5f1e5b682760 *6f315b692c4d672a4f64234a5e225363244d5d1e4e66224e622a4a602046581b4f621f4a611e40 *551b415d254b672a435c223b53193d5615455b1b4a61204f611e4a5c1d4e68255770285c6e2957 *60214e672547601f4e672340581d4362274b6426485f1d627b35465f1c3b5f1d3d5c1e3f531640 *5c234b69264e6b2841561a50601d4b5f1c4c5c1a4e6724415a1f47622249642545621f3f581b4b *5f194d6221486126435f224c662748682852672153762a4460203f5d20445c183e5616415c1b47 *612044571f415919475c143a5a19405b1c425c174460204c581b475d204d5e214760234b641a4d *5b1a5b722d496722546f2a596523455b1e40501f3f5415476128405c235867255468244e5c204e *60205564254b66254c631e3f4f14445a1b49632a4f611f596924566c29586f2d5e752c526e295f *752d63742a5b7528586d2561732b77823976893f65833a62752d6473246a762e6e8240767e3964 *7827697a2b6b782c6c7c3070812d64782c6c79286676295e782f6476305b722b646c2d5b6a255e *70235a72286273266578275b77265b75275c6a255268215e6e2260712168772c6a792f5e732f61 *772b6f7e3d6375336075354e65234e661c5a6d235e702d5f71265e7b395e7f39647a2f647f3466 *7c325372246c772a657b2d60742d5f752952651f465b1d60732a526a22495f1b526e2748632157 *72245d7228607c325a73315f7d386084436c7c30667c306b803659783159742f62792a5a712d5b *7737536e28506a2a5a7b2d4b682653742b5674265f762a5f702b58732d647b30657935586d2a52 *6d305c7a3357763158793b5273355b73295a68224d682b5370274f6d214b652350662549662358 *6c266478255367225266224e6a20475e1d4e69234863224d712b4c64244e6b2a526c225369264a *6c2b4d63224766244f6f30536a21546f2c5a742d5d7026567428586f264b5c1754671a546e2251 *71245d76266377295c7127536c2c4d6c2f4a60225f782e53742d6c7526627e39596f2c53622653 *6a28516b2756752955752c5f762c657b36697e3562783a62752d566f2f517029546b2b576f284d *6c2e5b6f2a556d29626d28676f2b64722854702c66772a5f80345b732a5e782b5e702659712f61 *77345f742e5d762d617d3e55712a637e2c5b702b546c2757642268752f687933597d375c723065 *762e6e803f5a7a3c697e336c7d356c7d2f6974336883366a7f3c567132637328657b2f4e6d3650 *68275d6b2660722c6b853a67783c66813a6a823b66813363762e5b722e5d6b2c556b2b60732f5c *71366174376e7b3a6c82466078395d6d32657433809767cbd5d5c6cfd0bbc7c8526f363e5b2e39 *592635592b4e592d4e58232a5025405627364f2131532b2b4d282b4c232d4c1e3353212f451d26 *4214233914254c1f2c4c1f2c451a2742182a390f2a451825451529471a25411323350f1e3d131d *3a0f1a340e22431a243615284a1c203f10243f142e4a1f3e5a2d3a4d1a2b47192a42133c4d182b *471e223c181f411c2946122446162e4d1c344f203a541f2b3d15274817364f1e324c2129461637 *552130511d243e1126481c27411d3351283f5a212b4211415c29486939526f2d4b62214c612550 *6b2e4d6b3247672a51682b4761254a652c59722e4a6324445d1e4f6f2a47632750682748672647 *682e43622a4968244363244b5e274c66264c6a2e4f6d32526e2f4c6a2f526e29486824475b2248 *6026506c3051692b445c204b692f4e72394f73304964205369284d68295473314c6a304f6f2b53 *712e4d6f2d5b702c567230586f2b5d7a385c77365a7d3c516b30576e32597444536c2a566f355c *7e3c58752e5e7c3c52702e627e385c772f587a354f6c295b68285c6b224d6c2d5c7831586f2a58 *7537567734516b284f74325c79354e6b294b6126516d2b465d21506b2c56732a4a6b2b4467263c *5e1e496f364d6f2e5b762d4d6c2a5875335a78345579385e7c324c67244d6a2a516e2549602446 *682844652a446729425b20405e224160224462254a5c22496020455e1e4c601e4f6a29556c2648 *602646652747682556732e56732e46682552661f4e6428496026445d1f42612746642646642b49 *61274c612641602444662b4a6a2e506827526528405819395b22446522465d1f415a1f425d273f *581e425d1d425c21415b205060284e682948652d4258214e6928426021446320516a2a4c692447 *64224b67214d6c2b426123425d21435e1e425e1e44601e3e5c21486723486322526d284f6f2a4a *68295672385e78334d6a29526e2e517130456022506f3358783c4e6c2a5173324b672049692248 *5d1a415e1a4360233d5a1e405b24354f173f601e405d1947651f446a244e6f2a48652246672752 *68245266275769215e6c23526c2345601f4660204f69214362265065265372344e6b2549601e3f *5e1d3a531a3e582044561e435d21465a213c4f1549631d405d1e435f214a6121486626435d2f49 *5822485e24475a1f4a62224f63225267274c67224c682a465d203b4f2044561b4d682256702651 *6d2c4d63284d642a4c6726475e23425e223e571b445f264e5d1f435a1c51641e4c6723455f1e4c *6724476626496424405f1e4b6725496324406028405d234e6b29486527425d2350672948642543 *591b436520486e274768285370345d7a355673364d6420426419566a21526c264c672445662743 *6023455f214b6927506d2358722a4f5e21566d24556d24526821506528465620506d2248682251 *6a255673265068284c63263e501655682942632e4f6929465d1e4f65264e62204c61244b612b48 *60274d62215b67295267235b65214c5f264c62213f5a1f4d6a285770245c6b26465d1d54651e54 *602250622049662a4c63285e6c2a52692453732b5e72256476295e732d4f6b295a6a225068235b *742f5d742f647b315e782f65813a6e7d32607e3369843f667a31586f27516d21576d28647c3561 *7a39657728697b2b6d81396c8c435a752c607a2b5b762e627b3b5d71306c7d2d5d702757682965 *7d2f6077295a752d6078335c7b315f762a516e2858752d536d295269225d73285d782a5b732a54 *69275e70296a7e37717c37626d2b5e722c6274315b73315e742e637d335e783c566a2652712e56 *7335566e2e5069205774305f7f316180375878335d732d496a32486422516c284a67234d6d325d *7b326984446e8745677530647e3a55702b5a74385b7e404d6a2e55773457772d66814060772e54 *672358772f4f7634597937557a3954752d53772d4e6f295f81495c7937617c365574305d79314e *76364e74365276335975355a6e29526c2b5776324f6f2d586b2c5b7a325273274e6a2f4c642348 *6723506822536c2a586e2652752f5873364f6f2b506c2a4f72275e7e3b5c7b37586d2758763050 *6f324c6c2e4e662549612257682153722f5073315177325e73315c783a59782e5570256384405f *78375d7c346885426484446982445a793e5c803f5c6f30697a31536c2e5e7b2e54763767792f60 *773470874662823f657f36506f2f617c3f5d81315a7a3069863b6a86425c803650712862763252 *682a5065225d6d2d5f7a3d5d7a37687e36667a3c69843f688034627a2c6a7d356784446a833a64 *803b62803b637d315e7b3a61782d56762d5f742f4d6e2f557032677d336d803f667c395d7d2b64 *8048667d3d6b813f7088456587486a82426685455f7a3a6c8835546f2e5d7532627e38557d3755 *793e5f73336a863e6c81406c813975843571893d66833f72883c6e85437385457388477180406f *87425f7d416a8342658248627e46607d44647f3f6c7a388b9a6dcbd6d4c5cdcebdc6c659703241 *5322404f1d3049213b5b2a3460262c4b163b521f2f4e252e49142b421032481a2e471a3a532343 *571e3a521c2f421439511e364d1e2c430e29391232501f2b4d1e344f1d26441026380b26400d21 *320c24431716330c1d38112a39193049122b47163a4c1233460f2f48163c501a304113334f1b3a *521b3b54192d410e27411235521b2e4c132e44173a5219344d1c364911344d1d42531d5066314e *642a516c314f64263f571e334d1a4d642e53601e52632048611f52692c586a29536b2e58702959 *6b22445f2346621f495d23556824536328475e1e4e631c4c5c235471325078334e6b2752682b55 *6d2f5363284a62224b64284a611f4a5e1d536b2a3c50123749153c501c3f4d14405716415c1853 *703756763456732e657a36576c305f722f536a2e4e6729506a295367205264254e642b4c622252 *60215671364760254c6c2a4d6726566b2a5664254d6523596c2c5e7731657f415373334f6d2e5a *702b5f7529586e2b566826577137586b284f6c21556e285e762d5d763c65813e6381405d762d5a *732761792d57742f557326506d29567328537532576e30506729516c2658752a4d6927486b2947 *5f204e6e364065283f5e2247611d41581a516c2b455f1d4c641c57702457732d5e783848692b44 *6222425b1947611a435f1d44641f4a611b334f17496220415b1b4b632049642450601c4a5d1a44 *641f405d22486c2f436422456427576a225065214b60254a651d586723436022415f21455a2345 *53164c5b16465e1b4156164a67224d682647642255712e3f5d2341632247601d4c5a1b425e1e40 *53173c4f193f4f193c4c1b3a4e1d455c1c5464214560213e531c476525556b2b5d73335b722e60 *7728556b1e596b25485d1b506c274869284a5e1f4f6726526c25647622587b324e6d2451651d53 *6b245c752b5e79335c6f29526c25576e2256621c5565255b72264c6121475d174c65235e712c55 *611e495a144a5f1e495e204b631d4f652146621d4e6621415d1a3d56134c5e184c621c475e1d4b *631e4e65224962204f6b204d631e56682c667a3f55621f4b6622485c1d48621e4d6a255064224f *67265466225869254a5d205064224355143e58243e571c41581e435e1d465f1a3d54173f4e1c42 *5a1e435717465a1e446423405d22435c1d54682049611f4e64224e601f3f5918394f19425e214f *6a284d6f2a425f1c4e6622526c2d476727415b1d49631f465c174f5f1d4e5f1956692055661e50 *69224566244e642868793b53702f4d6d2a4c63214d6623576724455d204b642347641e445d1d4c *631c55661d4f65204b5f1b5165204a6625485d1f4e5a1c4e60244e5f1e57651a5a6e2257661f59 *621f59671b4c641d5b62226268245f7029596a1e58661e59671f63752461671f5666265166204f *6b1e48682146662154641f5c641d455c18496720485f124e641c4d5d1f56611e5e702a646f2c58 *671e67762e57702d53692a50602357662447631d4b5918515716586c2957601f4b64274749135b *6f2a5e752e58732b5e732c6473265b72274e66275b6f285a70235c71275d7c315f7b2c607b3563 *7b3a5e6e28697c2f6375275c773061782c647a2f70813b62782f617d3a5d762a5f772c5f792e64 *7e34626e245e75335f6a1f657629667a2b64762c6b8340646e29657b245e76315d772960722664 *76315a71235f78256781385f7a305769226077304d681e50692758773467762a64783166793458 *69235b7024577126596d246476315f7224647a2867802f587736617c3366803b607d4957762a5b *762652722e60702857732b465f1e4f6d24495f1e4d5d244c6523445b1e56651b52722b57753f5a *6c245f80446a79336d803d6780325f7c39577a3b50783a5d7f4055783453733057772b5f7a2e58 *762d547729516d2a4f6d294d6c204f641f506c26516b274f6c295d732f6177265f712d566d2a61 *7726647f39617d376376365d7f405e762c607626596e2e65752a60762f5c772e687d345278314d *6e304c68204c621d48651f5067244b66225c75364d6b2b506d2c4c65254e6e22586c255773304f *672f5a762b547a2f5775354a6e31526923596d2a61752a5670275f762c5c77405d7d3f647c3c6b *87476d803e657834677d39687c35678042667e4262803f637e375f7d3b687d366f7d2d6f7b3c66 *78326c823673823a6581415f7d3b65803a5e7c2f5e6f2469781e64803f62813763804069803d70 *82426d823862813c60712d677e31627a315d793264823c5e7a2f6885406d8432778a4370813d71 *813366813f576c2864722f61773362703064812f5f722a6077335c722f5f6a2665752c697a356f *86436d82406d7e2f6b7f3d607535637f3b5e803f58732f5d6f2a67843d607a2e5c6c285c6a285f *722e5f6c276577325b772e61792a658035627f377487416e85446e7f3571874771894262824567 *7e426f8548697e396479386a74336775336882406079435b733c899b6ccbd6d5c4cecfbdc6c74a *662f395a2d355124334a1c3e4a1e374c1d21411b2e4a1d3a532325461a2b481b28481d2941112a *42182f50224458232f4d1f34572934531e2d4c202e491a2e4f1b385125405a213c541a2f4d1a2a *4e1d2d48182b4a1d30491a3d541a2e48132e491935541f32521a2a47122444192f4b132d441029 *3d0e264516213d16365a213f6035385c2540572448632d526629435f223b58254364284d6e2f59 *73305972396073294e66274552194867233b5f295c73384b672b4f6b274c6c2f516c2e516b2956 *7638506a304f682c4968314c6e314e662e5067273f5f20455e1f4c6426435822415c2139541840 *5e22536e264f6921485e1d535f21526c275272344c6b25415d2643612c4d6d3040631c3f581d42 *5e21455f264b67284d6e2a486728516d235476364e692a4f661e4a5e205d73304c6b24465d1f4e *692a4b6c2847611f4c6c2a456525526f2b5a6c2460752c4e77355a7230587632527834607d3567 *8135566e2a537734617c3158772c50692a5e712a526a224e6d2157722261762c4a68295277315e *763153742e4b72285170264e6925536b2d5b6b2d5b6f2c5970324b692d4c69284a6b265b742651 *6d27506c2a556d2b4a69244f6e3247682b536d274c6f2a4c6624466425526e2d556c2b56703059 *722b507330476725405c1c476b24435b18496121415e1c425a22405e2341602551692250691d4e *6c235667234f671d41601e4862274c68264c6b235267225b792b5c7b34586d26566b20586c2147 *6620506d2a506c26435e1e3860224b661c4a6728486426486024586b26526f2b50762b49682148 *6624485c1f4555184b5d1f536a304a662650712e5b78314b68224c651f4767244e6721566b2251 *6d255d742a5c793c5f793055732956722a546929526c21526b22466526576c2b5d782e4b6b1f47 *65244d65224e6d26566a264b612459632651692b486a264c73284e7229536c224b601d5b762f58 *6d28506a224f6721506121576b235372285169214f651f4a611f42611f4f6d2c4d6c2c4d6f2942 *601c4568254b65264d68255a732958712c5366264e6624546820485b1a455f1c4d5f1e4b662249 *571c3f51164b5e1f4d69274d6c22435f1c41591b476020425c1b395317384c14324917314f1d2b *400c2e4713415519465d2131430d395217304614304d1b3f5c223e5b1e3f60194362223f521d45 *5b1a4559183d5b1b425a1f4c6726506a214b631c4c651f516923496321506625526625566f2c4e *722b47601e4e6d255774355973285c74254e652a576a25435a1c4f69274e6621546f264f6c234c *5c1d4c5f1c3b581b4b631f4b692a48662543621e4c60204f6c2c55702854691f4d66214f632360 *722a5d702b577225657b2e6172296474295e6c20546b215a6e215d762854722867792a70853f60 *762b5c74285f732b5868205b6b1d5b6e2a5566264e6a1d50621c465b1d425d1f5d6c2459733364 *7e3457722d5872295767245365255663265b6a2e5d762e516a234c682a475f1c525f215665225a *6d26586a2b576e245573296584415b742954712a64762c4869265d772b5d6f234d692858752c57 *6b275f752a5b7837566d2b5a6a2257712a667e326580315b73285e7931657b2b6277295b7d3764 *7b31617d2e6279316b803a5a782b5b732373842e778734708945677c3081893b6c8640687d335f *823960732e53712a5e8438647b335c75215772285e7b2860742758712d526b295774295a782864 *772a63752b626e2754752b5e79325f752d617c3d5b70335a6f315c722d617c2f57773059762b58 *762d5a792b567327587428507626507224566d295b6e1e4d74325d732d57722c4b6d314a73284f *722d577a2e5d752f576c205c7a2b617b3a617a396282445b6c27597c304b6a28556f295c762c54 *732a54763659772e6074325b793754702d536e2658732d5c79334e7430597f3d4e6c2c596e2859 *712658772b627e3b5c7b3b607e3b5775335e7f415e75364d6a25628130516c235b6c2658702b50 *6a225064274765244a682141692845611e4766264d682a576c26516a2c4b6026546e374f6b2b5a *7627627e39546c2a52661f4b6724557536496a33506d314b69244a69214a6e2957733256733160 *762b5b722b647b2e60804a5d7c2f687a2f69813c5f7e3e60793c627b336c8035677d365d7b3a5c *7b3c5d7d3765793c5f762d5773355d7b3d617d2e5875325e7a325c782b5c76276178296c843661 *7e3064762e60702c5b762e687932677e305f7d32667a2c6a7a2c657a2d60762f617b31657a3766 *80375b7b2d65813258742d657b315f793d6378325f7d2e6584406a863b5f83446684416f853f70 *894a6f824767804d68803f6981395c79355d7a3058763158783563773357733a59753757723055 *7d3f5f7e346b823a6a813867863a65813c67813c6f823d76843c6a83476887406e8a4567813c69 *793c6e7e3a6a7d3f5f7b41658043688144688238687b326b81336072408da070cbd7d5c6cecfbb *c6c64b65344567323a5f2c324f21345723334c1a2c48142a47232c451b29391a26401e2b432829 *491c2142162941122c37112b3711263714244018234121324a1e304b1d293f112134122f3e152e *461f2d4c22314b1e304d224457264158242e47183550232d48142644182144181f3e182a491e31 *4c1d2a451232542535562547642e5b6e3b516a35597d4055733b476020466f2a435b2240581e48 *602148632145642a4964294c66344c662e4f75365a6f2d5c7938435d27536f304764285e783b4f *6d385e70305b6f2f516a2a4a68254d6c2c4e6d31506829445e2847622236541d3b4e194357203b *4e1d44572345562041622c40572343612c4b68254f67254f641f47652e4865334c622847632440 *5e2a4c6925395b25426a2b4d67244b64284e692742632b4c662f4e582147622e516e30526b2b40 *5f2844622c43622e4e61275b74314d6c2b5b783152722c4d6e335b72364f692d5c732e506a3051 *6d365877355d7b3a5b7c345375315b6f33566e345768315877384f72304e712c4e682d42682953 *662e526f2c526829547328536b285369205b7a2e61773151722e4f67245d752a5d7a37536d2b57 *702b516e33526b325d78365d74354d6324475c204d61265266254e6a2f4667274d672453672050 *702c4d68264c6a295c72334d692b3b6021496724496c2e526e2d5a772e4b652750662a485e224d *69263f5a1c425d1a4a6425576a28586d22586222475e1e4e6b32567636486425475f204e68234e *6f284b64254b6425546c2e5268244d6f2a576f2f617b334e752a506c2b4a6b29586c2b59652855 *6b285a6c295372314a6e2f5972265a712a52692d536f365167254d67274465264c6a2a556f275b *70275169245b6b2463752b5a6f23506a2257742d53732f58742a5166215165214f672250641e51 *6a1e51702d57732c5f81414b6d2c556d225e68215a74274a6024405b204c6027556a284865294b *651f4b5d204964215a6f2953712651661f526624587031596c2a536d2a4a69234b5f1a44571e3c *571b3d4b184860274965234c6620586d24617e326273274e6b274e67254f65234b5d204b60224b *6526485d1447621f42571b4b571e44561a3b4e1c3f571e3d581d3b521c435b1d425b1a42551842 *5f224765253b4d1645571e435c22465f1d435b1e48601f4f5c1c50652347672340511842592147 *60224d632244591a425f1f4a5e1e4760224861254d65254f67275c6e245061204a5f245567264e *64245565224d661e53622251612b5674284461204e621a4c6524506c274f692b53642445602948 *5f224d6d2b4b6a284666274c60204a65224b6823405b1c3c6029435b1e4a5e1d48651d55642168 *7934647b32617d395b6e305e773162722b516c28526720586f2a6577264f6723576e2b5f722862 *743263712a62772b667f336b7a3567793d62793c5f7031627531566a2956752b516a255d732a57 *6c2a5c652147591d56692b5a65275767255c772d5d792e5f78345f72315f73345c702e5c6a2b60 *762d6079385e752f5c752a5d76305f742f616c244a6422596a266071305a742862792769803157 *6e28556c2e5d763c62742c5f732f617836657d3c697d2d687e30647b34657c3a5c763263752a63 *72335b753364782e5c6a275f762e73864457743a5d79325f823f7484407587406a7d2d69812d60 *782a5e7d3c5a77335d7634637f385778305f7d3161803c5a772c57752a4d672055762f526a264c *6b2e63732c627b2f536e2553782a637c315f723d5a78356878305e7b3f597730546c234b6a2550 *722b586d264f6a285676225d7533668031637b305275265674255c7933667e325c74305978335e *752e5976304c6a274c692657732c5d7a2e5e7d325c783b5c793457733064813b5e7c36586f2b5a *7831607a3753712d6579325d77335469285a74315c73305c782f61782f607029667a3265813c55 *7133516f375d7833667d2e59722c50763a6374325c763b5d6d325e762c62783a5d7c3a5d7b335b *7d3a607f3663762d596d2b5b6d2f51642f5573335373365e78305478305f79285770306b7f396d *8548697b2f6278375b762d58722957712c556a295a6c304f682d48591e435e1c4a6526405a2652 *6d2d546a28577332617735617b325675384e69285a6e2d5b752b54793b6078324a6321516c2957 *71244f6c2c5f7c345b7e3a607734677d344f682a61712d6c823465793f6077335c7732566e2b5f *7a385c73336478325e6e2b5d712a5b782a607b33687e3d68803f6a854469853d657e326676356a *762c637b345c763260793255672e566c2b5a6f2b617c37677c345e7b32658342637d396787486c *803a637b3a647e3e6e813a6972336d7d2e667c3967844a59804559723d6c843d7186466b813867 *84486c7f3a697e406677366a813f65833e6882386381416c7d3c707e34677f4a5579464d6a3657 *6a32567c444f612c51692a637a355f733b57723a5f733f6474345a6d3660753e88a071cbd7d5c4 *cdccbbc7c34d6731415c283a562231401a35512c314c2026441d224210243f1330471c2e471d30 *451c354b1a26381427491c213f0e2c400f1f350d22360d274313232d0d1a26091b22081a29092a *461334501d4262243450162f4b173d561a395a2435531a3d581d3a5024455e21334d153b551f3d *6027476227476225536d244865223b591d4369214663274e62223e5f24435b22486327455f2049 *651f4562234c65233e5a1d526e3650682c526e2a4967224c6525495d1b43531e556e2f4b6c2653 *7029566c2961732c5a6c265466234c6424586d2b586c2a566e2d475e214e722e49631d46601f4e *6724536e2f5b702950661d50692149602545682d4d6f2e5072324765214b6b235069295069254e *6c2350712746601d4d6a224c6d2d4d6d2b5065254f722f4a64214b651d546b325d782f57763f52 *752f5a7337647c374c6f245c7628546e215e712b4d6b2c53692b547434546c2d51722d4f712e5d *7b335b71335e7a355478354a6e2e4e6d2a4c6b2c5676314b692a46632247631e48682150703551 *732b546d284a63214767224f6b2157762d55652156732d52702d506c29486c2d647b27526d2658 *6a2152691e526823586c265d732d4d6d2f596d294d68205b6f25506c244f6d2e5675334a682655 *6c24516c2b5067224e6a1f4b692258661b5263185466224f63224c642453692556702a54782d4f *641c5e6b235b6a1c5b752b4d69214f67254d6a295c6f2b5c6c235f7621526b2852631d4d6a1f57 *723966803f54652348631c47611d435f1b46621c4d6e2d5c732655722c5a742e5a6c255d7d3159 *731f5a72205e74275c671e5b75285d7a325472264f64254c661e536f1d506d27546c285972295b *6c21596c20546f275f7a285d7c275e761d60792169802d58752d4d71234c6d2257763153681f5b *72205a6f1c526d2258732649601d506720556f265d792f4d6a22475b1c3d5519475b1d55691d48 *621a49691d4366214d67214d641d526f225c7b3050691c47621f4d681e4761224b60194a661d4b *651e50752b436223465e1b49641e47601f4b5c1d4c65234d6525465c1845641b47611c4a591450 *682640571f3b571a415c1e475e184c6923526a205064224b66214d641e48611e48631e47581855 *651c4f62174b601c4863234f6a275069224a631d536d27435f2447642247611e546a2051621d49 *5e194e621b445d1d4d621d42591c54692559691f5067235065215b691f597120516a21506c264f *67255e7226637e2c586a20596b20597b32576a234d6828506a294f6521536c2648641d526c254c *621d566a235c702c6082434f6a205d763254692350631d50651c48672251712756783550691f4c *671d4e6a25557735617f3c61762d647a2c627e365c732854682859702e5c7732597027637e2d52 *6e26617b31687c2e5f793261782e6e812a6e7827647529617e2e657d295e78306079385f792d57 *6e2a60712a5c762c5a6c2655722b627a3f6178305672265e732a697e2d6f893c737c2a62793362 *772e5d712663722753671d6276285c73265e7a2e56732b617c2e63762964772b657e326b813962 *7b2658772d547229627b376480325c7729627a2c667e3265802f64812f6473205f772b5b74245f *7d2e6b8038607b3068802d6b853d5b772f6d782576802b647c2b65823a687926687e396d82346c *843a6d893d5d78385d81405d7d315f7836577625677e2d69843d6175295a772d5e7b305c77244e *6b1c4f6c215d72285e762e576a2655722d59702c5a6d2b5b76265c7527647e296c7e285c792a4c *6f265f792d587a385374264c6c27607d2f667f2f546c254f753141682355772a6b7e2c50762e60 *7929587d325a742a5b691c5d78335d713050702e608038617b2b5f813b647c2a5f7b2b5d772c5c *702658752b567a31536424546e27516a27546a1f61782b5f752c5d76286580365e79315d782f64 *7b2f5c772d5b7028536b295d7126536b2347652a57722b576f2d546a205674245977324e5f2258 *702b5275334b702b4f6e244c6b2a617c2d5d732754782c547328536f2b45692a526827506a2259 *76265d712660782b5a762e566f2e4f712d516e2d4d68254e6a254a662840591a455d154c621b4f *6e2c4e6a275066204b6a25536d20586c1d526f26526b2560682055651d5575234f6d2a486c2759 *6f2a5e772b5374286579285c6e224a5f205c7b314d6a2d5a76376a822f547330647a2a6d813356 *7534506d245d78325e7e2e65823e5a7a2c68883968822e6d812e6a803d6581316c822d6d843466 *7c2e687e2a697f295e79295d742a56752e56732b667e36697b3567853b5c7a356983326b86386d *853f6886386a8134648141758a406e8442748c4272873f6281384e763066843a6073386b81385c *793360793251732b58712758752b6578306882326a83365e71326c7e34657c326380345c7b384e *7136506929526d2d566f2e586c3059723356702b6a803b677d3767804164803b687d31889d6dcb *d6d4c4ceccb9c5c33d56333d5f2b334f282b471c304919253a11213e121f391724421d2c481d2b *42222f431d334b1d2f3b0b26380f2c44142744151d3a1426421a263e17234114253e14233b0e1a *350d263b102b4c1d2b461a27451b27421e2a45112a420f364e1b2c4314405a234961283f5e2743 *5f2a576c2f4964214863214d65254a6a25325622334f1e3a54203f552635541c495c1a475d2051 *69294c682650702d50702b526e32617033536a264c6a274a601d485e224b642c4b5b1d4e662842 *5421455d1e485f22444d1346531d506522576524596f2f5d6c304f67284b64245163214d612244 *5d26465f254d642750662c57702b557439486e2f506a244d6c2b5370285372304b68244d672a4d *662a4f692c5670324a682a56722f4e6e2b4f6c2b456327506e31516f2f4d692a4e6f2f607d3751 *6c2b546f2e4f6e29485c264f6c345e6b33577431576e234e712a506020496628526924536c2749 *6e32526c25496a2c4260204c6a26435c1e3f5b1c3753183a5a1f5164224f6c284a6a21466d274e *6f2d5c6c285368224863244f6c27486824586e23425c214f6923506e2d4961215668235c6e264b *62214e64254f732a51722856732850682b4c692e4c65244b67234263253b5f2748682d5a6a2c50 *6a1e5266224b601e495d1d486121475f1d536523506b264f6e2a546a2a536323586e215e6e2d58 *6c29526e2e536b2b5c732a67823458752e4f6f2e566a26536a225f762e526f28536f2551722367 *7c2d5d792b5f792e637c36506a2156702d4f69204865204867204c6a1e4a66214f652651712547 *65244c6722556b1f60843b4263234f6f264d651c4d5e1f546f28485f224563284d652444642449 *621e4d6a205b7527616f2a5d77304d672348601e3e5f1f526d294a6f22527122516a2748631f5a *7a2b48631e4f6d274c6d294f6b25526e2750652145641d485e1e4d641e46611f3f5c23405b1e41 *5f1d4b5e1f465f274e62254f65294d60245165264c6625485e1e4e69245d70295768234d62204a *6925536c24486327556924526f225c772657732355671f4a6423546f2b4965234a67295d712f55 *6f29495e1e435c1a4f5e20435d21556b285a6e305465225767244f6625536c2c5f6e2c596e255d *702b55722e5f7529556d27566d285975315a6c1e5d72285975235b712e59722d4f662c556a2d56 *722f617731577025586c27556a274f6b284d6d2b5a732c4e662a4a6129586c2d5a7229596f315a *752f5c772e5470255a6d235e762c5d782c55722b61742a5e732a557025476528556d224a712f54 *732e5a702f53752b5f78355d72255567244b6b275f793a4e7226506e2a577433546c314a69245b *6d204e6a285566215a7027566d275b7333596a28576f215d74275d772c64712858793055732f4f *6c2955642854723059782857732860823e5e7a30597630556c275c6c2a647a2f5d782957712764 *752d587e3a566a24657e335f75336681406c8141657b335f792d58742d5c772e6b83346a7d3259 *742a657e2e64792c657d2d65793259732a5f772d647a285a77335d712a5b6c2761732c60762761 *7a2b5d7e355e752b59762a5d7323556b245d793159752b667c2e607a29587b2c5974265c6b2265 *782c697a3c697e335d6c2063762d637f2b587932657b2b65803365813077843864803a6d86386c *79246e8534607c2a5f772a647c2a5b813b63813a597c3b6d812f6782395e7d326376265d76325a *742e587a32556c2861752a5f742557772a597027586e254d6121596f325e7a3d6377315d732a5a *75255778294b73265b74255369274b6327586d2d4c5a1e4b6725567326486a2858692d59752a59 *6c234b622249662a5667274b651f5c72215572355f752b566f285873255c6d1f59742d576c274f *6c2557762b607930576f2b5c722f4663284b692a5b79335a792e57772c516f27556d2661742d60 *772b60732c55732e5c7633587737537a38576e2c5877345b762c65792c50722e5173276079335d *762c52752b607d314e691e5f75235d7c2f506b2559772e47682a566c21536b224e722c516d2254 *6d234b6f2c5d742f4f6d2e5873294f68274e6c2c4f69254b61214264234d6523434f1645621a50 *6b204f702c5372345a733353763462772c586e29516b255b7831506b25607d2d5f72284c6a2b4f *6a21516c28436a2b52752b5c70244c6a204d6c2551681f4e61264a6928506b314e6b225a6b2257 *762b5676265470285c7028546d2c5d6f26627024607b265a77265d762764802e677d3767783460 *7c3065813261782b6a8740617e3b55753264813a607c3761793c63772c647b316b8133657d2e65 *7e2f587b376082376c81346a7d2a627e3a597c2f4f632a527539506c2f4e6e2d4c6c2c5365244d *69283b5c20375d2646672e3b5d21384f1f394d1d4d5f1c4863243f6023455b22435e24445d2446 *61214a67255268275c6f2e5c6c2a4f652852672b4f642d536b34556d2b59712d4f5f29646d268a *9966cbd5d4c3cdcdbbc3c33b49232c401a2231131e301e28402322331826401927361428441a23 *461c253812203c1429491f23421b263f141f330b31480f384b152748102d4c1a2a40132c431825 *431f2d4f2036541b304510263f18334d18395a263b602938552649642d4e672a4b63204c652249 *631e4161274060264160284662264a581d445d2033531c4856254666234257223a5b243e562345 *5e21435f285168254c631e525f1d406423496126526d2e5b72334b6a324861244d6c244153173f *4f1d2f4810314c1442521e4556244055284d69253e561a4b62274c6226445c213e5322556b354f *6a29465d2444682e495f22546a2e4c6a2e546b2b46601f496121496528476522436726506c2e56 *702a495c284d6c344b6d31466731476c2e526a304a67294c692c4d6a2f5a793d536c1f56762d5d *7632506d2c5d752a4e69254c69274d632c4a6321526629526d33536f285069254e69243d5c2546 *632b4a601e4a6622476125495d284a65254568264c6d27415c2146621e4e6c2a4c6d2d4e6d2c40 *6321435e1e46641f4262214260214969294d6521576c274c661e4c612343611d4b67214e672b4d *6c2c5a6a274d69284d6c2a4e6a2752621f4c64264d6b2646611d516d284f69215676314d6a2459 *6f2b5771274f6f254c661f4d6a254b6f2f4e6120495e214f671f5b762a5e7a2f526e265e752d57 *6e2451692a4f67255567205969265269254b69275c70274c68244c6c22587533637f2d607b275b *772a5a772c59762c5268274d732b536d234d68295668255370335d6f26445f16486f2c4b652543 *65233d561b3a4b15455e1d456220405d1f476225465e1c4a611f5a77315d733057722649632247 *63214666213d60204a68224b6624536a234463204b651e465c1f425f1f465a1d4c69284b66284a *68214d6e2452651f4e65205873274a681e51671f496d254c70296073335e742c5e742b526c2757 *6e2a526c2352662248601e506021606a265f6e28657a31596d2760792c5c6620556827516c2b52 *722f4e6824546f235e75276176296275254c6a2255732859772f576e324e65274c66266372275c *73315c6e2f52712a566f28536b2c5b6f325b743357792d556f2b57712c5576336083415b7b3c5e *7b39697e3a667d3f596c2f5f752e6078356079385773275c722752732f5a70265f782c5b77305a *752e5f772a608034647c34647e36536e2d5a78315f722462752759742c526f2d53712854692e51 *712d516d275b7a3565772f63762e677927506d20536c255a71275872305c79355f752b57692256 *70325c723058702c4f6b245773275b732f6981336075275c772e4e631f4a601d456c2757793550 *692a5c743266773264742b5569245a722760752b627a315b7930667e37627c39647c3759712757 *6c27526a225e74305d722b637d33687d3e6b81406e86396a802d758334566b2758752963792e4d *65234d6b304b682e516a275a702363722d58702b57733252712e6079325a7b3a5d772a5c772b60 *792a63762956773058783364793a74853a647b37647c3a637e33657e2e5f77315c742d5f79325e *762a627d305c7b2b52762b5e7a2e677e3b65803e60783962793055722d66853e6283406080325d *72265c6c2862742f62772a63762c5a762f5a6f205f7d2a69873c68823065803366793356722f5f *7930687e316b7c3359792f4d6d215f762b56722f4d7225597628557525577f2f5a7d3156722d56 *71265970255d7a2b5a782c5e7828647525526f235875244a6b21536a245868205a6a24516b214e *6926617026576e22495d1c4d66215169284d641e4e6c2a48642145561744601a446521476b2246 *601e4964255a752d52722d536f2f52722a587d395a7531596d28647e355c73305a722e56703260 *80415a752f61803c57783656782f5a7b30526e2f5078344864224667224f65214a6a225672275b *732d5a7028566e2c5667244f6622516a224e65265975314c6e2a4b6b23576f2454692543602050 *6c24486b2551662047672155742e466623405c1a526f25526f2c4a60254761205061225d772d4e *6d2a586e224d6d28596c21576e28526c32506a23526f2b4c6a294a6d2b536a2351692a51611f53 *6c264a6a21536d264561244e68294d641e4b6725495a18415f1a4d641d3e5c1d47602247672347 *651e4b6c2e4f6d27566c244f63214c5f1c4c6d233d5f20435a1a476923466b2843611d586f2352 *6a27546d2044661e4d6a29436723506a295476284f70245f661e5b75296277285b792c5a772a55 *7236617d3a5d7f304d6d2b5b772c58742f537631576e294b732e456e2d486829516e255f752754 *6826576c2457702c57702952722b506a2c4f6e3543692a536625576a284d6d354a6925506e314a *66334f6d35475f25526e2a5d733256742e4f6630486325405b234a66284d692e506422576d2447 *5d24455d1e43672a4b6c29516a2853632d4b61264b5d2452692161722d4d662c526f2f53703450 *71337d9067c9d4d4c3ceccbac5c335502325482123411c27421b2e4a1b273e1d254018233f0f23 *3e18253e152b48232e471a2d4d1d264414223f122c44172a440f2d4c233b571d374d21354e1a31 *451231491036511b3b5f22374e1936511e4d6b304d6b2f4e6c38526e2d475d2249652e5b6c2954 *712c4565274d6b2c455f264d6b294f632045601f3b5e1f3c652d4b622343501b4b5d1d3e581e47 *5b2036531c4560234f6c32435a20516a23485e214b65284a6c2f5a6d2f5069254d6228475e2d40 *5f294864284c66274b6524425f224a6826415f20425b254769313e5822455c22405b1f3e5d2545 *63244560254d662b4b5e274f6931466530496a344e6c274f6928516d2948642348662848622652 *6926546e2d4a6826547532506b2e58702e607a3457763555722e4b6625486b2e4c6a24566c2043 *6c3552692e5270334d62224f6a2b4c6e3044672d5a752d52752d57722c536c2750672257732b54 *712a4e692a45622d4e6e27536e24516d26546f2759712a516d294f6825506928506b294a69224e *713156772a42621d4a651e4a5d223f5e2047622244652249702d466425485f214c64224f6c283d *5f1f3c5c1d4665244c621c4d73334c66233e5c1f4861264f6626536c3057732a516b204f721f49 *6622456525546e2452742752742f52732c4d6d265e7e325e7b2a4f702a506a275169265f7a3558 *77335b7f2f6183445b7e355c772e5c7523607e335871275d6c2453682564732b526e284c712652 *75254e5f24526c26576d26516e2b4a6a21476e234c69265370274c601c4a6426506a245b692c4c *631f456323435e2049651e4f6f264e60204c69324d6b26647d31536e2e55782e4b6b2e4e742f57 *7932486320496c2a4e6621516b2b5571325a762e4f732c4e75294b651f5066234d6c2758732f5f *7b305b7e3263813f6f884263812e6782325c762c5a6d254966204f6520647932618236677e335f *803060843e5e853f648038657e3061792a5e76266a813e718a416883315a782b5c792a516e2f59 *6b27657a2f5d752e58772d5370295878315976324f6c2c54732c51702b4963213c5d2543602c50 *742f4c6c2a57692a5b732d5b76274e692d6685435d7d3650722a50702853793555732c59792b5b *782d647f3d50692758793e58732e57783163752861792c5c6c255567235c6a2365843e56722652 *70275e77285b6e26556d2b4d6a254a67234c5e1e4860234b682253753551712a57722c59732e5d *732e5c782e667b305b7c2d628035647b2e6e7f2e657f3b64792f59722c5e792c61782e58782c57 *762858762c5c742757722b58752e5b70276981345d7b276274275c772c5b752a50691e5a752a58 *753065762e697c31717f2e5d772a6a7f376e7b34677c355c772b5775345d762b5a753062752763 *7f3b5d78295b76246a752d596c2865752e697b306d83416686406e843471803c697b396e813263 *7d2c6878275f75326e7e3165813a5c722e60762b5d742e4f6b225971236575305f72245a732757 *702a57722f5c7a305c742e5e752f5c79295c75335f75275f742d5f752e5f732664762a5c7b3565 *762d698133657d2f5c823557782e5a75265b733064782c687925627b2c627c316173265f7a2f55 *6b285f7b3960742f647931617d385a78275f7e324d6828586a236373275d7333617b2a4c6b214d *6920577325647e2e697c2e607428436520517224446a24506e235c752e507025516d26516d235d *782f55752f5e763366802d5c792b61732658742853702057772c647b2b55732f667e2e5c782f56 *75275a72215874255a76285c74324e64265673395879335875235b79244f69205b72234d661e50 *6b2a576d28586a2559752660782d5a78245d79275971245a7a37526f2952732c5f742b54723257 *71274f73274d671e5873294a5c1d48662e415b20496525365a213d651f3c5a1b465f234c5f2452 *5f24445a223d6220486524496c2547661c516d214f6c27485f1e46612839591f536f3539532043 *65224d692a4867275066234962254464244360203a5c244054184a611649691e43641d45601a4e *69254c5a154c691e4b65224d641f526d214f6a2b415c1e4d631b4c682548621d4267254361294b *6624426a254c60204861224d641b59682152691e526f274a64244c611e53783645622347651e37 *5a1d5465234f70315c773650702c4d69224e68185b701d5a70214c6c294f67215370304e722d5a *66235171295772235e752b5f7f39576d294a642358712a5b722c5f7a2b5f7f30667a2b5c772e62 *7934657c30637f365975315073325880384f6d27506c234c6d2c4f6a2c556a2c526f2a52703654 *71274f70294f6b22516b26506a234e6428526b264f6c2c4e6c2a4d6e2f4e6f284d692b4f6a2357 *6c2f4564243c5a2b495d23526c324a71335270264d64224f652552661e57691e53691e4c69284d *68294162244a65294864234f63244b63254d631f445b1f455f214059274965275169265165254f *672a50682b769765c9d4d2c4cbccbac3c1354c2930452a344b24314f2535522137572a3545152c *391126381213291a27421b24391022390c3648132c4518384d29334b1847612a3d522340562545 *5e234660234a672b4d672c576b374f6627466328506529576d334965254b672435521d3e502455 *6626516e264f68284d662b4d65284c6325496028455718445f1d445d2149591f4e672657722d49 *6f2e4f6723435b224c6425536524445e1d4960253f4e2042612a47612b43541b4f672750652047 *5f213a4d2a4f67323f5e29435d2743541a3c5019475a1b405f293e5c243e5f1c3d581e3d571a41 *5b24556a21556a294f6c254b6c2f51702d4760244f672b536c30546d305072324a622a476c3553 *722c5c7835506e284c6128596c2f4d60234e6a274b68284864204262293f5322445f254760274b *5f264c67244a6b2d4c6a234866274f7537466a334e6d315a74355c70345677375c7f40607d2d61 *7d325a742e596b255873325972305d7a395c7a3059752f5f7328556e24526620506422526c2750 *692a5b6c27617a2f627a305c7b31556b27627b2c607a33687b305a7e3b5f6e34507228516f214f *691e3f5c18485f1a576d225165245c6f2e5774364c71285a6c26536c204d6422526a2144631e4d *5f22546c264b6527587127466a28456621455d1d486223506526627529526d2852632056762e5b *7029576f24556c29536e2960792f566f264e722d4d70254b6c215067204f6c245b6f2b5a6e2e52 *6823536a2652712b4b6c26576b2550722748602552682e536d2a576a2b67792d5e7d386781394d *7630516e2b67813e5875284c63174b68205371244e69264e6822517028556c2b4d652349682755 *6d2a4e682b435e21516a244e6f27597c3c5f79316477275c762b5d73275e77375877315075315b *73284f762b5b783458732a69833551732d5e7726667e2c5671275272335c7326506c2959732e57 *73305c6d255d6b2756773150722e4f6c216483316a822e5a77255f6d25627c325e7e365f81355f *7e365f7729617d2e566f294e64245a6f2e466227455d224660264c6b274a65204c6a2b576b2f56 *68344d6932435f264465284f6a2c516c275369255d7530576b2a64813b677a335a783158733251 *70305475215a793451702a5971295b6d255d7c305b78305f7237768a4067833e5978255e793258 *722d6078305d7b33567e355a7a33526f27546f2856702c5575295e793256772d526f2d4b692a57 *6f2d5c752a667c36687c30677e2f6c8235617c31627e35637e38547b42597c3a637b315f7b2d52 *722a5b772b64783257753657773260772a5d7b345873224d702657661d595f156576275a7c3369 *7c32697d2c73802d627c2973863b667e36657a3b5e7c3b6b81385f762a617929657c2f5f7a2f5c *792c6e7527677c326b7f346475285a773d73813969823b7a8b3c728b3d738038667a39617a2d64 *762c637e306279266382356d7d335d6c275c702c647b2d556e265d762f69813263792a6a76215b *6d245b6e234f64235770284f65235272335a6c205773274f6b266173226372245872275974276c *7b3767793a6076295e7c33617e32698137667a32617735667c3662772c536f2b5c74276a803562 *7f335f772c7684305e752953752f5e71275d6c22617a2e6075295c7c39617530546a285a743248 *672a4e63255d72266680386a7a2d5870275f732b5c722d597333546923536a295b7224637d2f54 *7b295a6c225a742856732c537634517426596f28576e255a772e547b325276385970295a753355 *6a284f6b245875354c6e2156742653752d5d72255b7026586c2858762f4b6724536a2053762456 *792f5a833455752c5c792d5f7b2c597c2b507724556e2651672246661f52651f5d782c596f2361 *7521607625647b2c5e762a5770284c6c2242571c435b195b742e44581f536d2946641c4f6d2d53 *6a244967244a69244c64234c64224a60244d6426536a28566e254563214866224a65215a6d2e4e *5f22536521506c2955692750773e4c6b2c527028516c225069255a7026617d2e546e264d752748 *691e4d691e4c6d2b51722a6474275e762c516f2b53762d566f284c6a284568294665254766284d *652c4562224961224d6b244c6b2a4a70295e7d2d596f2b617a376078326878345b80405c7c365c *7b2d5878306a8037687e3c6f853f6881385c6d2a5b712f6581396280405b7229647627677d3c62 *7531657a305d803c5c722e687f325c7731577a2d627c316a7d3778873b6f81376f8a4275884368 *803b637c375a7227576d275f762b5d77286077324c6d2d4a682945652a506e284f651e49652051 *67224b67264f6c2b526924506c2d607a2f5b732d496722485f1c566a254c662845692a4f6a2c4f *68294a6928516a2149561e5361244c6a2a4b642c566d2a4d6a2953672c59722d57732f607b2e65 *712d606f2e576529536b2d516c36556c304f6425597333556f33516a2c546d2d56733254702c5d *7230517236566c2f809769c9d3d1c1cbccb8c2be4352253b562935481f39562a47582e2d49242d *461d344b1d2847132943142a481c2a41182c43152c48214356263753273c5a224c67204966254b *6a27486a33526a324f6930546e32526828536e254b6b27526c2c546f33596c355a702f536b304b *6132627935516c29536c2c546f31495f244957284356263a4b20445b253b561c445f2238561d48 *58213d481d4a5c1c536b3a49652b3e5f2653691e526a274f6726465c23475b1d3a521d48642449 *612341561d374f1d495f2b4c6827506b2a42591e495f2248652f43672f3d622743581e4163253c *5c224a692d526e384b662a486931486b30456225486426435c2149662d4a672657703755723653 *6d2e466c33475f23526a2d4d6b2a53722f557840566e2a5977384b66264261264360234e69284f *6f324f6d26506d2b49672f4f6c2d436024576d29476d2953702c4f74335f7832667c345b752b57 *76345d7d3f5b762a587a30587b30526c27507229647a325a7635557132536b2b4a601b4767224c *6121516820536923576e214c69216377295f7d335472286478295d773066792f68803158763560 *81385f813252783b5c7c3659752b5370264b6f2c50681b42621d506f2e5075284d6d275a753060 *762a50681d5672254e6c2754722452691e506824546f2e57682451723056752d5e7a2a526c244b *621f55712b4961204d66204968234c6a2553762d516b254f6c2748662c51762a5e783461793164 *823c627a2d6589425d7a34617f3d5f7e335c77325d7d3053772e5b742c6a843b6e833a66793b65 *7b2d648034637d326c813c577c325779395b7e34637f3c5f763d587235506422425e2a5068274e *69255772285871315872295e722c5f7d305c7c325c762d5b7a3d66803e617f2d5c7b35647f3758 *6f27587227576a275d762c5f7d4059792d5b6f2464792c687e3b5e752f5771315a742958763352 *6c275472275b75275a72205d6c2558752e4661265775335b79355c7534627b30667c346a7f2e65 *7b2f566f25546f295b6e28516e36587b3e59742e5e742a62772c536c2a526c28536724516c2e4d *6a2e5060265d7f3c58793559752c4f692d5d713353612652693652672457763468853f5976325a *782d647c3d5979334f6c264760245a752f576e29566921526f2b54712c5b7831586f285a753058 *732b58752a617f35537126596e264e661f4e6a263f5f1f48631f516e2a47682341601a5069254a *62204b5e225a692158692258712559752f5d742d6a7d2c6074275e70255468205367225a6b244f *712e5c73325973295b78316075215e782a5b74255f77265a77335270305e752c667f385e7e3564 *752e5c78296480315b7226687e3e70853c648337708b3b71873b74893a64772b5c7326627c345d *7a355e732f62752960792d5f74205b7b2a60792d6a7b34737d2f7982356c85386a863a6b8b3f5c *7d3d60752c546d2359762a59733067792b5f723059732a6074316472265d76295f772d5f752a64 *762b607b2f5c753055762a5a742f5b73265b6821637c2b6c7c2e677c365c7a2f627b2c5972215e *7a2c5e782f5c7a325e722862773659793056702c56712e4d6a2a55772e5f712356702b55702b5f *762d627c326a792f5d78275f78285072324d70255370245578294f7538516c2a5d6c2758622058 *7130567232465e1a556c2c516b265264245574304e73235c7c264d74295b7526506d2657702653 *6f28547a2d5775335b752b4f6e2a4d6c1f5d75245971265b763467813a5a772f4f732f567e3e4c *752d5b783954732b5a7b3259732d5e6d265975275d792c587a3456732a557328526c2353732d62 *792d5e7b2b59792856742f5c762866833c64812f617c2e5c762f627f305a7c3255772a61853e6a *873d718a3d67822e6f893a6b873f6782395c7e3159742d59763762803854752f5e772e5e732855 *703059742a517129546e2657743251752b65782a637f355c773457712e4e702b587b32617d365f *69296380345a75325c80345170275f7933537231576d255b78324e6b2a4862224a6c2c586f2661 *752a6076304d6c274e6a27627d3a6a7d2e5d8334608134627f31627933506c2a466829506e2a59 *702c5071304b6b284468224964234b6b2356722e4d6721576a20667c365a762d637b3163792d60 *7b3060772b607b3068833168823867833c607e2e66792b657e346d823772812d6883416f863f6a *85435f7e3967854064803b668434687f2e6b81316180326875276579386d873f6786436c883f70 *853b6e813e667d3e687c3b57733c576a2d526a2962722551712e58732f556f2f5a783851713259 *6e2f4c70364e692a6178275d752d5e762c547533496f39536e34536d324d6825596a22586f2d56 *722a5b6f2b616c276372345e7936587d4264743262792a58732e63792a63722e6a7f395f723a6b *7c345f7039687a32637e32627d416580475a7638607b35607c3b667c46687f3f5e6d2a5e702e62 *79355e703167793b5b773f8c9f73cad4d5bfcbcbb6c3bd4c64363b57303a542a3a512949642c3b *5021475f282b4b14264120264a1d3551263e582840572540531d4f63254860244d6d2e4a5f2a52 *67294c66235c6d305d682e50632451652a486426516c27587138566d2c50692c54642950622560 *722f566b2b4461264d631e436020435a213f60244c6d314360213e5216394a1c3f5b22395b1e40 *5d26415e264254204b683549652c4c6825455f274a64255566214a6a304b6d2b4e6c274b64334e *69284b6c2d4765214365284b682b49692f446933476e313b5a203b571d48561b3b551e40602645 *6c2f5573305571315874334d632c4f6d2c4d6724476a234663274f733b506b2948682e4c6e3747 *62225878404765274b632e435f28334819405c2b42642a566f355c702f4e6c28415d1c40561f4d *6a254a69224053164864204c692c405e224c6624405c1f4664284468274d6b2c608041567b2f51 *6f264d6b1d49601f4e68245a6a22526f2c4e6f294e6a284965264b6d244d6920506f234e6f264d *6b285f7a2c5d782e577529627f335f7d30556f264d661f5972244d69225c6f2460813a4f743159 *783659793058772e58732a51752d597b3054752c537a314467294e7831597e2f586e224c732865 *7e335c77264d6f2a51702e5b7b34557737506c235370254f7022557b30516c1f4f68265275295d *712a5b7126536922506e3048621f5776335678385875336581385f7e33587529577933597b2b60 *803660762f5c803b627d2e6684405f803066873a5a7a2a657e355880466c893f65843b63782c6c *813a5d7933608039607930647e31566a255375325b772e697f365e7631617e325e7827607d3e5f *803e63783a6179295d7a2f587b3a57743358782c5376276179355f732b6079356380365e762852 *75295a81385e7a2e546b2657753b587734526a24506e225c75295c7533587a305578305a7a2f63 *7f3c61803e5f722853772958762f55732c5c7b335b7b37546823506a2540601d475d1a566a2355 *68214b641f4d5f195366214f66295e74305968215a732f597326667d2f637d3c6579315c74284a *63224964204b6126476421455d1e5071284d6c295a762d607b314d65264d7135597a3658783253 *692549652251692654752b536b23566d2a5e6f2259742c4b6c2a4e722b5271275876304f742751 *6b25607927527128587f3c5d78365c76334e6c294d6c2951702e4f6e26506b2652742755772256 *7323516b2055752c57722d5d752d557026667b2c51732b54772f5d7b2b5e7d2b50752d56743057 *7322576d234e6c2a52773156782a56772f607a2c607b2b5878335f7829607c276080295773234f *682058762a4d732b546a254c6a29526c2056702059762666823d68833d6a8a3d6781366074295b *722a556b1b5271294c67205a782c5a71255372295e7834647f366882365d7c2665812b64803260 *77275b74275f7931526d2c4d67234b69265d78285b70285b6d215b76265973235c7528596f2c5e *702a5f81345a73235f772e58752e59742d4d6d274d6b2360762b6d7f316a7e3b62772354722348 *6d264e6e275a7c335671284b6b2b5c752b536c244f6d23455f1d47602459722855732d5e792c62 *793a5f722661772c5f732a5671264f69215072285070334f6d385d782e5b782451752c43631e63 *7c3456752b446524536e3152752d5c7937567837557b3857793157792f546e255878314c732f4e *722f5672275a7c295e7c2b617c325b7a385e7e36517a36597935597a38617f305d7f325e7e365b *7f3a597e3a5e833f5e7e365b772d5d7d2d6082325c7c315f732852732b5d7e346381325b7e3960 *844063823762823354752c4c722d567b346081355171234e712851772a55792f52782d516b2651 *722a6285325b80315f7e2d587c395c7d3858763e5f7d2d63792d5f7c2e698037637e395f7b2a62 *7d325278375a792d65802f5c773464772a637b2c5a7a2c577636607d31637d3060843562813470 *82386d8033637e3965863d64823b617a326a8c406481366986396e84355c7a285376295c7b2f4f *6f225b793362772c4b731d53782c627f396a812f58783c4f6927526d2b546b2855722b5e7d2659 *71265676265c6d28526c295668285e712e617f385b75245876295774345a742b6781345b7d345f *7b326582386d833f6e893c6483376d82356881306a83357b8b426e88436c8a4270893b69853f66 *7f426a80376c8a406c833d6a7d346480346e85426a854866833a6c8a406d85376c8443637e3565 *823c678038657f365b7a3562712765762c60732a59712a55702b5c7229527233536d325670314e *682c556d2650712e50702f516f2a476528526d2c637d31597032577328515f21506a22536f3355 *69285f6f335f732d62783175822d6a7939697e46617e3955753454752e55732b506b255272315e *7a3756782d526f2a606f2e63773666792d647a2c627a3365752d667d31637e3a67803d6a813b6a *7d376a7f3763823e617433657f327d9d72c9d5d3c2cbc9b7c2bb5470313b4f1f37521739491942 *59214e5724566e3d425e24466026394c183b4e1f424d18415b233b5724426022475a204d662b50 *65254e5b1f435925496527546f334a6427425419415a1e49682142601d4a5f225a6b285e6e2b5a *6b255f73365a74295568244e6421415a1e415d23445b1e486226485a23415c224c682a4d6c244f *64184764224c5d22405018425322435716465a1942521d4562234f621f4e60264b5c204a61254c *5c1f47622441551c475c194a65224f642757642050622046621e4967253c591d3c5e234560244b *5f2148602254651e5260234a67285271324c682a4f6a234e6723516520516824424e1740501a36 *54183450164d754540581c30440c425c203c53174a5c1e486121556b23526d28526c264a682646 *62254c67204f6022415b1d3f511e425a1e466027496c2a435a1f47661d49601f4f5d1d4a5a1e45 *591b4c57225d6c2a556d2859722f5a6b1f526b215a6c204e621f536e29567631546b2b506b2956 *79315d8031547028627d325c742c5a7a2c5f7a2c4f6e2c516e2a53752b567526405a13415c175c *6821587527517330536f2c5d7e3c5f813b5976234a5c1a4d6a2157772f52742d51752647692357 *743b5b762f5d7026596f205069215977335b76275779325273305c7e344e792f5b752b55753363 *762d5e79385277345b7a3865823a647d2d5f772c62782b607c38627d3b5e813b647d3265822f57 *7c365c7e3a627e2e5e75216281325f772a5e7327697b2f657128677c316f89396a7923667e306e *86426b85355d7a2a6a813a6a854368803f70873e69853171873c6c873d758a3d6a7c3662783a65 *792c6d7e3166792c667b266a8039627a316b823869803662752c687732607b326a864065833f5b *762c5773266377285f712252752d49672c496d2f4d68264e6322485e1d4863254e6f2e5e792e48 *6d2757763a4f6d2e507128506e26596a22596b1e47602255772d586f244f672a5b72284d6a215c *71225b6b244d66224f641e4d69234f6a23617934677b2f5a7a2c5f7b3367804068762c5e73285a *7428596d2660782a5f71265f6f295a73235c6f21656b1e5b73265467224a652058762857752649 *601c4d6821506820516a284c7331527232497031556c1f4c6d22516c21546b1e54651f54671f53 *6f2e5e71275d792b5d76275e7829687b25647b316578325e792a5775295a752a5b782e5e7f375e *7a2859792b546521586d26547026586d234e6d244d692250621b5c6d25576f204c5d1d4f681d4a *691e556f274863214b73233f641a587b2f52691e52691f536f22546d22536d204369245a742e55 *751e5c7123576e1f536a234262204c692b5768225d712e5b742a5268255d68215870255c772a5d *78324e611c536922576a254c712755691d52641f546d24596d234c68224f68244e651f506a2048 *691c4c6520576a1f58662052621e4d6a1e596d2465722565782b5e7a235f77245a70265b732e5b *752d5b73265c74275b76225174285e782d5d7c2f5d75275d732860762c5b6c2652722a57732850 *702654742b59772b60792c5a773049682453691d526f21596f245774265d792f5e73245d75255e *77295077275c712b667b2f64802d667f2b6a7e2e737e2356661c5771235e6921597c2e59711f63 *813a607e30687b2a5872235c6c265b762c5e712a63732859752b5c752b5a7f2e677d3458753361 *742a5b763157723065813b627d326c863f657e2d5c7b2f62762d5e762c5e78325e7c2d697f3262 *8030627c295a7324526b2160792d586f2760712262792e5c7b39607e2c60792d617b315d70225b *78305f78294e69245d7a315f772a6073315f7328587b275d7a345d762459732461772f62813a5b *803556762e60802b617c2f637b2b667e35607c3561772c63792a65833267863d6e8944637a2d60 *782c5f7a37697f30637e3a6481366d8643688237667e2d657f346e823b647d2f6c823a6b85366d *822d667d355a782b5f7d335f762a6e8134657e27677e2d6079336b79356b7d2e6982326d844674 *863a637c29647d306b84356b7d3368844471874171863763823b6e812d6a8038627d3d5577395c *773657743356732754762556742a57733358742e56772b687d2760783161752f617c2e5c7b2d66 *8032627e2d667b35687b34617b3365873c6e8b37758e4a7e90476d843a70822d6b843e53742d6a *803d5e7e4061782f6883316c7b30758635698040677c34677d2c5f762e6c843f5e8040666f2853 *7d41677d326e8037667a2c5e71315a712a6177335f772f556b275a75255c7c36697b325c7d3b4e *702c5e7735627c3d5b742e536d22617d2f5e752c697b2c5f7c2c65782f6472346c8139667e2964 *7c325b702460702557702a5b70255e722a6277295c6d305b7126556e2a656e215d792a596a294b *6a2a4e69274861224d64284450155369255f6c2a6271295c712d5c77305c7032586a2b5d6e265d *742d5c7327677e30687f38586f32637235809567c9d4d2c1c9c9b6c0bb4e623341572757662d4f *6c2d5067324f602759642e526d3d4d65304b60264f6e35536f39465e21435d2a45541c49581e40 *5a2d4c5e2c41551f42632352612944531f495e2f4f672b45612b4561254a6825435f234c612242 *521649591e4f672a536d24516a23435e27465b264c672b4c66214f63295266284f692b4d64314d *67254b60254e642b455e2b456027465f21485f33475c214762244f622b50652a556c2d516a2e51 *6626455d274a69324c632e4d642e4b612543642b52622b4965324a6a334a62244d64294a5f284f *6528496220466329466b274e66254f692d5470334d6a2950692a5d6b2d5470324e692a47602c4c *652640591d3b4e164353234f65284b6023445d27475e224262294a6a2f496326566e28506c2950 *682947682c4b652a4b69344f642a5c702d556f295465284f5b1e475b21476525476a30566a285c *703953682e576d33587030607a406e844555743d516528556e30566d20546e2b597b305a7b3358 *6c2e4c6d2b486830546d2d5f7f3a5674306480346182376077295e7d3b68753150702d5c6b234c *682850652358722d496426506b245475294f73274f6c28506e334c6522446425526c26586e2649 *69265378325d793a597229456e2b4967265874285c7e3b5f7a305b742b4d681e53702b58772e5d *772d5e7930677a2e62833c5b722b556e25516a24556c29516f2c60793a596c285f6c2969782b6c *8235667e32677e346c7f316a7e366d7b316b862d6d802c6b82426782445e7d3e62813c617d3a63 *6d2d55622269742a6f823c637b2d62782e668132627936667e3d6f843d6c843d71833b78833d72 *8232647f2f697e3f6e803a6a803b78863a6e8133738436758334677c33607d3c6c823d65833e5c *77335971324f6c2b527429577628567b30597b364e6e2f4f67264867294a65274e72275773255d *74304f682d596a2658732d5972325b6d2b4c723d4f6e2b556d285570364a6b284f64204c67254e *692b4c6d32597d36527126526926435f1e44501646611e4c63255069225f74315764265b682763 *702862763260742b596f2e5372315b753c5d6a27546f2a5f782a63782f546c2a526721667d3554 *793156742a4e632056662357682050652e4c64234d67285772335f752a5d7127476729586b2954 *6c255768205c732c55712b516425566c235e7327546d205670284c6721516d254f6b2b5b742c5f *752c4f6a27536a26576e2049651e4d6c27607a354d6a28476528476524567229476827475e1a48 *6a214c67204c6b245775264a671e4a58174b571953712a546d2857692361752e586e22425f1c4c *69274964245c75265b70215472274f6d24516b2a5c73235d7c31516c264566215d742859792e55 *762c577630516a2558712762762e5f752951732e586e255971275a76255b712960742a5371265d *7425667a2e5a76335f7b2e5a752d5e74285a6d285c6d2e6c78345c723061712e66793061762b5f *7e3b5f77275a762e5d73305b6f295f742a63793b60772f657b2e576d284e551c5369215470255d *7225526f254f6e254e6e28627a315c7b2c5d70235f78305e79355a79335a752f677f395d75275b *72285b762d566e275f772c687e3760813a6979246582396e812e6f84316c7e2e6a8239677e396e *81386c7c2f667d3c71823a7d8c3c728b5167782d5d732c6e7927677f3b5e81405f79416278335b *703059792e6b7f2f62762e6c7d2867752a667f396a7c2e5f77355d7a3465812e6b7c3770863874 *8b446e873f6d824060783b667d38647a3c617a3168803b627f345e78315d7d335773295872294e *6b285a79285d7a3462762b5671255d732a6475256d833e647d3d607d3968813d657f3b657f3a6a *86426a803c6e87406f8a4a64782c68813c6d843b657a356c7a2d63772d68792d637e3d697f376d *843e71843c607e2f647e2f5878326781376f8741697c347086427692496e894771873c75843a75 *803b6b894268893e69813e6d85446c833f72853c667e31718342687b3a6f823a6c883f6e8a4169 *8135728c4069853e6a802e79843f6b7f2e69813d70813e6a803f6d814269864467833d6375346a *7a305e74305a6b275972325372314f6e2e586f34596e2f67742a637329606e255e7e3959782f55 *6f2f5a6f27677b30767d37597230586e33687b32677c33647e37627b356775326377386478365a *7c345e762e68792c5f7c3d627231657d32667e37627f3c6c7b2d6e813f65782b507a34526a2856 *6d2e576d2363732d63742b5f752e657a2d576a284d66274f6a2b526a22526d2c5e752c6d782f64 *76355a6c285f732d61782e657f3767803d68793c64793a60742e5e7029686f34607232656d2760 *763266833d57783c5e722e62723562733a60762d5f772e5475315e742f4a67304a651f486a2459 *702e53682649652d49672b4865264e5f26546e2b4d6932526a2e5f6d285b6c315e7434596d335c *763362733065753b637833627e36637e376c84418c9f72c9d5d3c1c9cab5c0b653643250673152 *6d325365305b5f22525f2c6e753662662b4f60234d64285c6d33576c3850682a4d6d2d48692651 *712b496a2d4551224768304b68333353253653264266314c67284f61254a622247622546612744 *652f49622a4357214e6b314b63294860244b6023495c203b54203a5520415d2a4863264a672554 *6f2a45672e52692e5273334c653948662f4763334d61244e6b305269305060294862294b6e3659 *6b294c642c4863274861234d65284f672546541c43642541602f4d6a2e46632d4e6c325573334e *69294d6d314d68294d69294461224b6225516e33516f33517029546b2a516c3143652946602844 *5b21486529496633526a2b5065284b6a3e566b2a486227466627546d3156703452773659752e44 *631d4a6823455f26465d2c47652d4f6b2f4e6f315f752e5d7328617c376676364c6a364f702e4c *692e62752f4c6629536d2b51702e4f671f496628415e1e4f6c37607d404e6e2d5e82414a6b294a *6d304f712b516a233e60254361224667274d6e285070295b7a355574335875334b6a325d6d2652 *763b506b2953752c526a305c6f2e547227426d214a6e274c682c476e364b6629576a2555782a56 *732e5b742e5378305b7b295775324f702b4b6f2653702f5474305976214e742b51752d53702f55 *72335e712861742b557124506f2b5e7f3b5d762d5b79345c763c5073365a722e607b315e793060 *7d2f60843b6080386e824069833b6a85426581356e883a67802c5e83385e7e33657c2f627d3367 *7f33687f326b803a758c45648746516a225c75345f792d63803b5f82436a82386b86396b823766 *7e33637e34708436667e305d7a2b5a6d224d6721526d2b56722b627d336687426a7f386c863965 *7c38657c325e7b3d647f3e527b3c57742b5e7d3b657e3656772f53743b486b2f49672951753448 *682c3f5824405f203e561c4a551a3f551e4a5f1c3a5f1e406425446023476928436a214a652434 *5525425e2843652642551a3e5a1c4e6422476823566c21536b24577834546b254d611f445c1f4c *6d24475b1f404b10495d17546321586e2b616f2d566b2153752e59783d5373285d732c656f2a62 *752d566a265063254a68244c641e5f7229586d275568225c752d60793e5d732c5c7a32536e2755 *6b1d516c2b5e772d557528486d265d732f5f7533607a2e55732b5b7731607b35627d2f536f2654 *6924526f235170274d6d2c4562214c69284a66286985414e6c255571235d77295d763156713152 *69265c792c6279335d7e31567a2d506f245c7a33587b3255763053742f5e792f60762b5f762560 *7c295c7e32547531617d2c61792954762d59782a4f72295f78295d752c5571254f6d265a7a2e5b *7c2e52752e56702c5272285e7b2a667c275d742456732a59752a52722a5c8032638038657b3064 *7a2a6377296578265a782b627b2d5b722f59722a536a2a526a22586c215769244c531566722661 *782a5e783a7083406581415f702a51712b567225607b3459792c607c325c7b2f59722b58712b60 *7a34607b31607a3756772b587b3551722b556f285c752f5a73235d6d2460792a5f722757773061 *7a2c607d3859793066813a667f326a852f6a8134697b2f75863b6d813c6d84387584426e843b6a *82396d7c2e6e7e2a5f792d6587426c7b387582346a7f3b72863e798b496a81436d853e74874080 *8c43617d415f7939627f36637f3a67854665813d6e88456c7d31687c32798640718a3e708c4b6d *87456e844570883b6982336c7f306b853e6183435e7d365d7d366182365e7d30678844607e3a5f *78325a7d2e50722653712c5e7a3c5f7a265d8035637e2a6c853b5d823a68833d70863c6f853d67 *863d6a86336d86406d863d78874069843f668339607a34678033647f3565823068883d5d773662 *782f5f793368843968853b6281305f7f3965813c647d3c677f3a72863c6e883f6f86456b854364 *7e32697a2f718b407387346a7e3a6a782a6179356f833d7487427c8e43758739687f2d6373325b *7a3268803363792e5f80336e874368853a5f7d2c61813a5f76306c813f6c7c325b7a3c63732d63 *7c3c5c7b365d75285f7a30536e2e4e6e3155712e5c733052762b526f28577327627b3263802e65 *7c34627433697d3b5e78335e782e5f792d6180375d813f5f77345f7733506e386d7f3656763c58 *72254d6c284b66225e7930677d37717d316c793b607a3b5870315e6f27657a3263782b5e753152 *6d30607931607d2f697e365f74335c722c5976304e75395876364f6e2d5b712f526f345c752e5c *772b67753a6a803d607d385f7a3257702a5f743251702e4f6c314c6a2b52742f5b7c3c6a7d3459 *743859732f5e79325b743258722d60792f4970324e702c5172295d6f265769265673364c672c55 *752f4b703f48682d4162234761214c6322526c304c6c274e692a4a62294564274e6424566d2d5b *72295f702d617730627737577834567c37627f406576468c9f6cc9d5d0bfc8c9b6bfb653693352 *6230565b274c612b4c662c5b733952652e4f582b4d5e243d50174458235465394d682d506f3a58 *6d324b65264d662849672d4d6a3b546c2d5469294365274c66284f63274f672d4865273e5d1f43 *551c42582142561d3d501b47572043632347601c4a682b4868265476384a68253f61264461234c *6a2d5775324a6a30506f3453702b53692b4d5d25476631506b2a4765294d6c315d6f34627b3457 *7637516c2b536d295872305669275e722f516e2f516e2c516e254964274d6c344d652246602850 *682b4d642a536f3a5470355f7632587e365a7328596d2b4e6a32586c2e4f6c2e526422536b264e *641d46641f455d1c4556164f6421455f1f566e36536a2e5872285d762d5d7a36536c315269264c *6023435a1e54601f587230506a2a496a26546c244a652e5775374f6e2a4c6b2f4e682b4e682a56 *782c536e2b607a37637e3b5a7428597b324c651f4566214668273e5a1d4c6a23486523445e1d42 *60243f6023426322476b28466c2d4c6d2549631d526f2849682541662b547c345c7c3351753349 *6a26526d22576f2a506827485f1d44602352742d5a772e4772344c6f2c506f265c6f2c4f672351 *66225c6e23566f2c58642459762c617f2c6a8542577028536e2a607b3760772f567b385b7c3b5a *7f3b627e2e62792a5f7226637e3150782f5b79385c752d627730667d33667f2c6e8635677e3459 *7b2a677d32617c3c55722e5367335c7d3573833b667d34697e3b577631647d3a6079365c783252 *73365d73265b792c657c3866772a4f6c2760752a64762e5c7c37627930607d31637c2b6682405e *7a2f657d305c7f376781355d79306179365073255a752661772c5e762f58782f5b7b3353762c56 *6e2c5f792d57742c5e763057743246651d506925536e264f682538561d466525415f2147571a43 *56174666273e58203b5a1f4b68254f6623566c26435f1c4c692256772d4c6b274c672b4868234b *68234667264b67284d6625536d29556a2a4b6f29576d2b536b345f7430556b255069235a742a4e *6c324e65274761243f5d1f455c1d53702959752e586c2660772f627d3562813e5c7e355f7a2c65 *792f657530597732617a2a626f2555702764792e5c6c2460762c647d365c722e5f7529697a3066 *792e597727657a30647a2d5d7b2d596d21577733637c31607d2c5e782e617d345b792e56722757 *762c66792d667b3056782e5f782a5e752c54712857773157752e587833566f31506d2a536c214f *6d255a6f264869274d75285a752f5879304c6c23576b225d7d3159742d5e792f57762c50742c5d *7935607c2e60803a5d79366c843464803b5c803b637c365f803b5f7d2f5e78275c7628597b3b60 *7d365e7a2d628139607f3666863d607e385c7431667a2a677f33637e37667d316c833466843e72 *85376b83396e873e667b2e6d853c7382315e7d3861803a626c274b68234c6829556d215a722657 *6f2352651f677d3161702962792d64792f576f2b566a295a70286a792e57722a687f3a68782f6d *843c61762a6480396e803662803b607e326b843c647e2e7585305f7d2c557027607f3a5c7b355d *7931657d375f782254762d5f7c3a5d7a32627b2f738a3f72873d6681336e7a206e832f6f85366a *7f34657e2a5f72235b7931638437697c2b768733788b41758f468093477c8e47778e457e924773 *90476e87316a8839657b306b7f426b823b75894175863d6f833d7081357586327586357a893f7a *8b48728b4076884171854274883b7086387d8d42798c416a78296d843f6b8135647e325f7d3c6a *843f618132788d427c9043818c3f75843b6f8b42607e385c762965833b6179306c842d6f7b266d *813364843a68853c6783396c843e78893f677d28647d295b752d5c722b668032607b2a5e7c3661 *7e376580405f802d5e782f5c7c37587630486e264d742e576f2c5b783758722d5b7e305c772a66 *7f366f7f386c813a6b82317d8d476b803e738a426a883c6b843a6c7e28637b3168813a6878346d *82375a702d5f7c356681315e7c3469792a6b8433697d35657b2e667f35648136687d2d70813c6f *833d6a7d34577b385f7d3165792b5d7a385b792c546d2253792e4c69275c702655732e5671265a *792d6b853c657f3e69863e69812b6d7e2d68853c657b2d667c2e647e3e546e2b62823e566f2953 *6826536e2d537328516d284e702b526f2b62753162792a687622636426657531697e3170803769 *752e58732d5c762b5b70206276255d702d536b234b5e1846621b4f6b23586d27506925556d2465 *77276c7b2f65732957783859762a61772e6378315b72305b762d5c7a345979315773266682355b *7a35607038617c3a5a6f31607a3759752f5a6f29556f224d6623526f27596b22506b29516e324b *66244d68214e62213556183f6520405b1c3552164666244b61294d5f274d62284460254a5f2152 *6f324f69304e67265c6f2d596e31606f264e6a2a5e7532526d327c8f63c7d5d0bec9c9b3bfb75b *713d53743d506a2f50692d586e3365744059713b5873354e6f3255672e4b5f274d612b4f602d51 *692a4a622645602740582e42642d3d5b303b5d20415a2150662a495f26405c2842602247612539 *5e244c6b33476a27516526516924495f234f6b2942642c43653041592542652c476a2f446a324f *683147652f48682f5070334f662d4e6a294e642149692e47652a48673145612448692d56723b4b *68275372345170325266295068364c6e324662254766264465243f68304d6a2f4760244d63254b *601d455b1e495f1f455b21476226446124476a224f70314c682f5d763055703556712e4465294e *682c566d2e405b2a5069304b68265972284e7028557538526f32566a2c576f3058783162763a51 *6c23586e2f5772354f732d506d2c4f7237476b2b3b5f2d4b6a30495f2b5475374a6525486b2850 *6c2c536c275970305070354f6c2b506f274965244b6d28496a24466c25456123406226476f2b4d *752c426f2a405f27476f2952773a4a6c2a486d2c44672b537533486b2b4264283c6026425f2442 *6020445d1d486d24537534547532456f24466921547837607a2e597a2c658136607e305a7c346d *7e376c7c34697c335974284c68235273365d732c54702c4d6a2c4d722853712b5978335e752a57 *723154722c547d3e5973295e783264762b52722a5e793355742d5077335673335b7b354a703262 *7c375e7d33577b3a657f3c5980365b7e425e7d42627c3661783053742b546e235279324e682a52 *6524576c2b5a793658763a556f2850661e4f6e29607f3f5e732a5c7c2a657a335d7c37607c2e60 *81346080385c803d5d7a32627e36647b3e6477315f752f617d35547b305575275e7f3250732758 *762d5669214661204c6324496a2c4c76354f6c2448651b48581e4c68264e72324966264d6f3258 *763b5d803c527c30567a31547d3b5f7a3956753557762b5973315c7e46526e24486a224e67244d *6523496b214a652245692a4f6e264a67234a67204d691f4c651c4e68214c6628506a2c566c3152 *6a2a5166275a732d52732c506a295e6d2a5c7431536e315975285a6d27576e3062782759752959 *762e556a2b5c742e5d792d607d33607b32648234607a3069863f6482426d86366b863b73883e6b *843d647d31647c2e4f772e638035697a3161792e6a792f66813e607f375d7f3b5f7a2c63843b62 *7a365c78316083376b833e647f3c668437637e3a6683365d752b5f7428657d366b82396d803163 *78366d8136697a305e762660813058772b647c2e607c335d6c27667b315e763957732457712255 *72265e79345973324d712d5a7c3c5d7b2c677f3c5f79346e842c6e853b6d823d617c3858763468 *7e345e7b3575893f7a90477185356d86396b813e6d893c74884265833a6688416a803c647f3071 *853c74823773863e6a813b667e2b647f33687831677d396c81335d7d2f617327576c2660783362 *762d63813d65792d68793263742962793072883f6f843b697f3168823a638241657f346a8a4766 *823c697f336883376887406a813b6884416581386c802f5e7725566f265d753261762b5c74255f *7b345e7c305f7e346580366a843d6581366f7d346279336b873d6886406a853b617e3a727c3073 *8a406c87486c85446782396f85396c8b406b873a6d864b718b4673873f71863873873275863876 *8639788e41768b466b82406a7a386d85476a833a6f86377f8d3d6d884179873b7488427c8e4275 *7d2e798f456e8739788f416d84426f853467853e62823763843f6788406a85426583365e753260 *7c2b6d82336a822d6d883c7d904c7994476c873b738c386d853e7587366d84336585416d8b4170 *873f78873c6f84366a873a6c85406e883e68833f657d3b6786475f803d5f7c366b8440617d3365 *772b6d7f34627e3d5d773959733156743765843c667f385b752b5a762a5d792f576f2f54773560 *783f667f38648039587b366681316c873c5d803f6b853b6079345b7d3b6385356a843c708e4369 *853a5f84425871315c773a65813e60803d5f7c2f5d772b5c79306079305c6c2558703154742f64 *7c2e677b365d782c5e7b285970255975305d702c4f7427496a1e4a6a28506c24526d22566e2854 *732e55722b5e782b617d2d5376355178315e7e29617b28607f28667f2863752a616f2952702d4d *69274562284867234d5f1c42621d61712c576f2d66752c68792b62793e65803c6e8a4a7186396a *853a717d2d6882406c7c355b7a315678365b75325f76255f7c2e5e752862732e6b7e3d68833969 *7f386d844266843f6e8b4765813f6a7f3370833e6f853d68813d64813564803467873764802f60 *782f5a722d667c3366813259732e5c78315d75316480336481355c732f6679285d6e2c5d712c55 *7236576c2c4d70304f6c27446f2c4a6929506c294c6827546b294761264c65275c702c4e6c2c4f *6d26566d2b596629506b31526b3258693161762d5c7b3e5d7637587433809267cbd3d2bfc7c9b2 *bdae5668295c75384e70395a804e58733f5f79315e783a5c652d58712e586e28536a2c556b3858 *6f3853692e50622c525f2a5770355068214d5d2147642e54692f4f6d384d652a41602551642453 *69264a662e486625476a35476a424a67354d6b2f516b2948611d3d5a23586d364c642f4864234c *6429546c2f516628506222425b1c475d25586a2d4462204d6528506b2e43692946672853702d58 *70324f67214f622743652946601e39521d40622c586626456125556b274f67284a6a234d67264d *6a2b476428496326546c2743611f52611d495a1d4563284b62203f5c21486127465f2b4762214a *65234f69255669284c60284d6e3658712e577737536f2a5476345a6c2a587832476c254a5f214b *65283e5a1f516b304e6920455c1c465d1d4c6228476528416426435e2a4262255368264f641f58 *732a476a235270234e6d2f576c2b4767274c69234e6e264969294c6826446222455e2041632340 *5f23406424445a1c44612440591a4a6c2744631c4463254562274d7032486321496a283a5b2248 *60214466224b6824465e2843642a4d6a274d6d294d6f26506928507635496a24596d245a682655 *6b1d5f782b5979325d7b32536d27506d2952742d506926526824597136506b2b536f2b4a63214e *672552702d586a2c4f67244a612057722b5d7c3255722d5d7a2f56702c4b64224c6e305a712557 *7225566f2c4c6425566e2b4d68275c6d27506c2e526a2b496c2c5a71334c6e2e5b763154732d4d *6e324f6c2e59763651662557773b5e73364d6c2c4d65344a6f34557127566e25527229597e3551 *73325f7730576a2e51642f4f6f31567a355f782f5b6e2857742d4a6b294d65254b692d536c2a4b *6e2f5071335a7b384b6c2b4f6326526922647e336479385874294f67214f6720456522455d1d5f *73305c69245f732f526f284c642347672e506f265866255d732253692052691f4864234c621e5a *732a496d2b4e6f2c5266205c71284e6922526a214e6a214a632057742c57752f5f72285d74275a *67225e6e295c6f2b52692a516b2f597336586c2850681d4b692a59712d5969275a742e6074265f *6e285f7028707c286d8232677f35607b276a7c2c64752e59752e61813a6c813c75863670873e6a *80316b8036758541677d3b587b395c7936687e345d7824768739677b306682365c7c355e763067 *793272833d6683416e8843637b335e732a6a7f2b717f2d6b843a6e823e6c833e74863e5d7b3073 *833c737d2d73844272863e6687436d8d43778d4675863a6f85425f783469752a5e752b5f7a3459 *7a3a5e7b3b5f79315573296472275d7323697a356a7c266786406d82406d853d76883d69803666 *823f74843d7384366f873c667f3c677c346d823a66813e6b7f3175873d7b89346e863d7a863b72 *823773833475803b747d34687a295973296572265b76265b702863793c606c2b60732c5e72275b *7124617a2f607d306479326b8036717f336d823e758035637c29677e2f607522697b2c607a2860 *7b3463813c71863a6c80356f8637638130658031607a306e7e2e70874662772a6a762d677e3270 *823b6a802b687f3762772d60752a5273365e773368802f637f316a853065803a677c32667b316c *834167853f68833965844161742c5f752d5c7e3d74813369863f6a813167874b76863a6e83407f *924885903f7b9048758740778d4365823a6c8237607a285f82306d8128738a367384336d812e73 *904c708b3d6789426a8339788c42758840748b3a7786347689436d7f36637e3a6a82386e823e6d *81346384386b8a43728b3c738c46758c3f72864069823d728d397892496c8d4769813168853b6f *894167863b637931627c395b7e375b7c295f752b5e8239657c3b69843e647b35607d37697a2d5e *782e647e2f5d7d3d5b7b34526c2a62732c576d2b4f702d567535546f365b7b395b7632546a2968 *7b3b627634657e3c546e35586b2c58752f577429627a2f60803a577532576f334f6b2b52732b5e *7935516c31526c2553702f50682a5d7a294966234f692a4d681e4d60224867265674234f6f3562 *7a2b65853d677c32637c35576f2d516824586e255367245567204665214568294f6726516c2758 *6f2f5869226377275e7b2c5f772f67762f607e386a7f356480386c8538657c336d7b36576e285d *75325c712b677d36627c365f73286b7e355f7d2e6c7d2c73853e6c7e337182356a7d317b8a366f *80347e8a386e843573843e697e3769824170873e7085416b863b70864271863f6b80396a7e306d *84426f84386d8233667b387487406a8345647b3b6b793565783761732d647730656f295278345f *753d637e355a6c265e732a667b3168792e56631e5571255e782f556c315a752c667b315f742a64 *7e2d63792f5e7b2e6375264d7231607b32607a37657d325f733269762460792b61742b677b3367 *7d355c7936697f35647b3a62792f6a81316f854563783a627e43637a3e647a3f8b9768c8d2cfbd *cbc7b3bfb15e793b58703658723b4e672d4f6b324c6c324a672956753c58682950692a5c6e3456 *6c28536f345d732f5665315872325d752e59702e5a6f36586c355a662047622446652c446a384e *65274b6a295872314c6b2d4f6b284c6228486026496a2c4e6e374d6a2f4b60294e682953672251 *6b2f4d66264b63264b65254f64284b652648702a586d2a506f25536d264d6d314f65274c682c53 *6d2b57702f496826456225597530496a2e3a521747682f576123465c274c61264f642a4a662046 *631b3e5b1d46591d47601f445a1b3e5c204c68244665244e6921576825426124445f24465d1f41 *642b4a6927475f27485f1e425e274a66264d6d2f486221435c174a64214b6425496126445e2354 *6e244867234867265c7a394c6424496a2d40672d3e6733416524496b2a516a23446a2547662247 *6e2844622336591e475f214e671f48631e445e1f495b1b445c1a3f60244869244a63254165234f *6b224e6928435d1d3d5b1d3c552046652946652a486a2747691e486922476925476620486a294c *601f435d2150662a4e6f2a4b69214f6a22576d2f4c66234765235b7931536f29486323395a1b4a *661a46661c587528476123455e1f54712d5e7630587326486226517226486a274b6e2950682345 *611e5064244e6a2c618038516f264f752f476c285c7c2d4d6c225371274d6d234967235679325a *772b446c255072274669264f5f1f4d742f475f2142602458722c4c692146692352651d45621a45 *6a2557702a54773d5b75335b792d556c25576d235169224d73394b6a25406322486d354a662a51 *6f335b7c2d59782d637f365a7b3660813d5d7f3f607a3e507132547a32567627536c234f6b2c61 *7b324c6e2e51722f516f2d58762e4c6d2a4d6d265b752c526a244c6c2f536d2a5c722c4d6f3657 *732e50702a56752b5d7b3b5d762c56763158753a6079306f823c6a833a5f77256a812c59752b5c *7126516622586d25546e26617d3257722e546822617a2d5d6d205d782951722b5c71225b783168 *7a3165772d657e2d607c29597a305b6f275f7e3754762b4b6725566f2858752d596e296a7f3b6c *81395f7b2a5372275b6f2b617a305d762d647e25697b2c5d752c627c39648131697d2b63843a6f *873a65752b657a306a7e3066842b617b265c7421617a26607a29617b2b5c7f34657c2d647e2e54 *7c2e617e30667d30678130667b2f5e74266a822c6b873776873574843c6b843b6e833a67792d61 *7b316a8841627f2d5f752c67792e6a8130647d295d803462823d6482346886446581296481326c *8a47607831557124657e3b708433667f336a85336985407286397682326680306a863a7485306e *812e627b3070823265812f647b2d5477335672385c7c3a657c33697f3c708a4072853c72802c7b *8c3771853472823167853d6d883d71893f6c84355e7830728b4273883873892e717c287c8c3c6e *8034688139687e3163792c57722763802d5c75245c76265a75265c78265a7325587927587f3160 *833373872b67813572853b6a80316782336c802b6c7f2f6d83396e89346985336c7d2d69833269 *87367289356d81386d813766813c6f883e677f346484396584366d833564813969813968823375 *8d406d8c3b66802a6880306a8234607b2d637e2c637e346b8b3e698539688433697f2d788a3a71 *893a6a874171843e687f3d7788426382306d893e61803c67813660823569823069853770894369 *863d718f3e758b3c6c873e708d447b8f46758c42749043768c42708a3a6e89396a823e69853964 *84365a7d335d7c346783396f8b4b73873c808a3468823d6a873b738b4273863a6f843e70864073 *894269873d61792b5d74285f762769762a4f6e256c84416a763065813a68863a6786315f792f64 *7d2e688337698139637a2c5d7a2d567a32648037587630627d4059732b627833657b3a61762d6c *7f3b6080326a852f6780325b7a3463803f637d3a6c8740658540607a36637e3c65803c61782d5d *792e6b7e2e718a49647e3c6379346782466c803a6b7c3252752f4b6c2f4d6e2758702a5c773964 *7f346d803764853a6e7f3570803a6874325d762a5f742863752a5977335c7a334f651e6277276f *83346c863f6e7f3b6f7d3176883e798b456f85396a89446d833a7486377d8c4067813a6980386f *803569874370873e7489436c8436687e3271843564813572803b768a427383446d813b72863c6e *82316b813e6d853b707f396d81336d80316b80396d833c7b8a4472873a7d863874853671874376 *883a6d84396f843d678233617830637a2b647f345e7b2b52692a4d6a2d617a31607d356b823c69 *803e6b813560752c59712d6984366880396583336b883c6d843f73853d6a85406785366983416a *7e396a82406b81416584436f863372823877862d6b802a5f7d266a7d2b637a266976285f6e266b *79276c7a2d6a7f346a813367772e6976375f7c326b7f33738037687c38596e2e5669317f9768c8 *d2d0bcc7c8abbbb1607d4553783e527033536b34597c43597b3d56703a5d7b3a57753542612b4a *6d304c7037537433576c2c5367255475385777315c793c5d7b4460803e54773a52793b52713345 *6a374f6f2e4162274a682b476227476629466d364d6e344b6b354b672b49692c4864224f70334d *712f4c692e4f6f305c77305770334d672f4d672c406325335f2a4b753152733a506f2a566a2749 *642243622340561d375d27405f254e6c2c466529425f1f51722f4c65214766284d692b3a5f283a *5e253c5c1e446b2f3d5d1b415e1f4261233f5e223c5a23486a2f445e254268314e642945662c47 *5e254362213c63253f5f26315a22345e233f602242642640601e445d1f385e294263213f5d2240 *6020304f1b20491e2b48173f5f203e5018304e172e521531531a4a66283f5f243d62273c5c1e2f *56233d642a3b582633581d3261283a5b1f3e622c3e5f263f6229435c233d5e1f385f22325e1c3e *5e204663214469323c602436591c39531d3c51143659212b4b192c501e37581d405e213e5d2245 *6224415d183f602140641d3d5b1d4263263f622b436e2d53732b517c4658722458752d57763347 *69264f6b284e7333496c2f486424466c2b4d66224c7530476d2c54752c3d6927466c2d4068294a *6c2d58773256753046682e436e274e7a304f75304f772f5277334669274a682b4b6a2c4c773554 *783956742e537a3f5675354a6b304360254061255376313d682a41662e4765265074324a6c2a4c *70255a7a2d4e7a304f793647702e4c7333466d30436b2c476e2f4765274461214b65274c6a2a3d *5a1c4b6d2d4a74294d722c5b7c38537b39637d3b627f3b637f39587d3a527f3e53793955783a58 *7e485076395a7e3e5b783a567c3a537d3951772b5679304a6e274d6d2c4b6d2b5d6f285d722853 *6c28496c2848692d48692c506d31557a3250752e55722658762f5b80346a813b71843a6a873f6a *81335878365776346b84435d7b3f647c3d648040647d3d64762c6980375e7e3653742e536b2558 *762c63792b53722650762a627c32547d3953742a51762c556e25576d255476325f742a5d79315a *793d5c782a5577304b6a26526f2d6a7b3c5567244f732b50732654762e5a74305f7c3166813b5e *79305c742b5b7e365e7d2f647c2c63823f5d7e365b7b325c782c658132627e2f5a81305d82355a *7b3451752b5b7c36567f335a7e325c7f2c5e78305c7d37637f3c68893f6c8134698b3e6584396c *833c68863c647f365c7a335a7e3a5f762b5e7c355f8140698635728c40768a3f718a4063813b66 *86416e843565863e68812f637b2f5c782b5670295c792e5c782f647932667f2d6b8b4166893a66 *87416e873f6585426281365f7d376e833a59813a5780405f7e3e5b762d5c752e59702762813b63 *7b3a62823d6280355c7e31647f356f853a69833d6a84336d8b4060843462833363833c6c8b3e6e *893e627e2d5971214f742656762d4d75304f742850742b53722858792f5d7a2e55782c5375274e *782c5f79315b80335d813a5c7b2d587029627b2a5e7d275e7b2963803864822f6683386e803571 *863877873c7b8b47748c42758d466e89446a8e496e8d5365823d6483395f7e3a6582346f85395f *82335c8534728d3a6a863a63863365844269853e6687426a86396c8c4768853a5a814160813b6a *83346284346b843d6985396d82386a863b67812d6e86426d8b4663813666812f62812e6781395f *7c37587d345e823b6082365a813c64823269833f6d853a6c863769894561884362833d6b8e4c64 *86476487455d8542627e326c8a426b9149798c3b75904a76965b6c8c44819951788e3e839a5b6a *9046739048728d41698142769248708d3b6b863b67833b6181356a873b6c8b4073883b65843c6c *873d6e883b728b45617f3a5f82436286425f813c62833a5e7c325e823d5f7b2865863f6984396a *844166833c5b813d678340617a3b527031677b2c5e7e3f647a3560843564813f68833c64854367 *833962813c61843d7088406c884560813a6186406a833e5f85405f85436580345e7e34617d3a63 *80346d843c677f41658035618438708a3d6c873e67854169823a70833b73883f6b863d64853a63 *833d6c863672893e718c4a6e854166833669843c64853c5f7e3e668133627e2d768d3a768a406b *803b738e47798b3d738942818d3f758d4c7a904273914b758842819253768a44798a40718a486b *86406e863c73924371873d6d8742738836738b377089436c8040738a437e904a6e8a476b873c64 *7f395e793965833d688138507732567630607e38617f375f7c3560712c647f386d833d627d3369 *80356d813e6585445e7e3946652d5d712e6476326e7e3169833f67843f6d8a416f8840708d426d *883f6a8540607b3a6d8739758b406d86406f883f708c4365813561823f658239607c2b5b6f3068 *7f34697e4270834171884872823f7185457184406786496a7d3b5f7231657f3f657f3f627b358f *a273c6d2d0c0c9c6b5bbab5d733653692f425829516a34566d30576a31526739596a2a52692d5a *702e4b692f485a28506e2e47693247653547632556672553703252612c586e35526b294f763f57 *7030536d355061264a64294c692c44672b4f692544622f49672f526d354f6d314a6d2f54702754 *723757722f59753a4f6d30536330586b3554612b50613151642b526620536c2f446022455f2251 *72354965275169254d662a4a622542521d48571d405e22435c1f495f28415d2c445c264c5c1f44 *65273a581f3d541b4360244a63274664294a6829445e20475d2552622846511744592444591e3c *5d254257244058254754203b511d39521e3755252a4a1b364e2342501f485f2f4f6e2c48682440 *5e23364f1839511b3656233d581d32501d4860243f5a1d405c1c435c2049631f405b1e4458204b *61234761243756263b57203d581c324917425a1d3f5d203f612a3b58233d591e314b1c435c2142 *64254b6627496625465d1d4e67264e6122485d224664234961204860204d6b29415b1f485b223e *5a22435b224a622b44581f44602048652442591d425a1f4763284461264b672452642357752e4f *69214f6e225e813e606f28556b294e692a576a293e642c44682d4e6a28506b284c65224e6d2b50 *733356712e4c6c284f6d2a4e6c23527126496c29546c2d49652957702d506e2c55733761793254 *7228516e24506528576b2a5167254f68274c6120486725596a2052681e46591c475e1e3c581e44 *5c265166255c752b5c6d274c68264462254d6426526c274f69254f6d2c52732a4f722c53732e4f *6f294f742c5776375e6b2e496a2b54692b4e6e2f48632a4a682a5878325c72256b85375f742a4c *682a55722c5775305e80365e7e365971295b72235665224b621e41631f47611a526c1f49612258 *742c5d73265c7d3557743360793a5e7c3666813661773b617b3664813e6a8543747e30707f3469 *853b5f7a3052722d5f74295c7631727d2f6c8234657d35647c316a7e30637a325f772d60742e69 *803f647e335b7a34697f3452722d657d32657b36627c325c6e2c546c2656772f5e78355b6f2c5a *6e295873315f77335e762f647b316786455e71285574324f67205573264f6d215875264e6f2653 *6b254f6b29587a33536d2c54712d55722964762b5f723157722f5773314e6a2953712c4f692352 *6e274d68244562244766244e6c285c6a215d7c336e8533647c2c697c29647f3366843a69843e63 *7f35627b386282346b833b65823b617d2a657b255670265f72286076296a792f6a793264772b69 *75226177275f792c5d793358773560792c5f79395d7f3d6779306480366d853b6882346681346a *772a5f722d647d3c677d3b55732c59772b617a355b742f4f71335b732f61743368823d607b286c *7b296c7f3d6580376980305f7a2d627a2e6d7f3168813968863e6d813c6a7e3c77853f7788426c *8440637d315d833d5d762a677d3d536f28576b27557d326074235b7d2e607d30647b32667d3b6f *84315d7c2f667f336d843377853476893474873d67843e728740697d2e6b863e758b3b66843e65 *8338738a3f71863b79833e758636748836708841708a3f6a89466e864068813f6b834069803978 *85396b85327386327d8d3f6f8b4073863b6381406c8238697b2c687d27618630607d30617c3660 *7c3a788a3972823470874070853b738239768d42758e486f8b417c8b4073853c6680326e874064 *7f2d637e3669843f677c3471883c6a8636758e3b7c8d4273884474832e668136728b3e74843d76 *853c6c7c3369854063884272873c6c893c6f863c7b8c3c6d812a6c833870873f76873f6f8c4361 *8240677d33738335758c407187406e85416e8b4d63823a6e863f66874663813371803284873b7b *8e4568883f6c822f6b833a7182396982356c843b6981316e7e366a7e30697e376c7f3d73843d72 *873e69803475853d717f3a6f843f6a8135607432647e40657f35607d3964803d6a813b697f356a *81407084396f853e78894176873c808e51798a4574873b6f8544677d3f6c81445b773a5c7b3c5d *7c3b69843f67853f6c823f76864f70864571883e7e8a3d78843e7787417588327e8f44768a4a7d *89417988427285467a863f70813a66813659792d5571316a823a607f416d88407d8b45788f447a *8e4a7b833e778945738636858b417d90507e914d74853e738d447088437b8e4a7585347c863881 *8a4075833873844373823466863e7389456b85366b81316d7f3a6a81355f7b396f8641697c3c68 *7d366b7c3d677635697b356a7a2c6c772565792e617b3a647a386b7e3c5a722e686b2459732f66 *77285c672164732565732e527034596f2a567132607a366f8641617a34647b3966772f61783062 *7c3d6d71357380386e812b6e73346279395c732f5e7a2f65762a6178326c7f385f7b38657c336a *7b316a81357179396f7f3d6f85417180326a854175864570843e627132667a316d74326773316c *793981986ec8d2d1bdc7c9b3bbaa5e793b577538607d3e5d77484f6729526d2d4b692d50653147 *622e4c622a5f6a2552683144592043602744602a506b344a6e395d76304f69234b60235273384a *6a274f672a5b7933586c2e5a7731536e374c652646692b4760214d69214e67264b62234d61224f *6a2c4d6a2a536e276279385875355f6f32576f35566c35445e29536a3654712b4d6927526c293f *5b2249692c47642649642148652747682b486028465f2247602247662544611f4a6738435b234f *6a2a48662a405516465c1e475d2252672545622a4569284c621f4967234e6626556c2d435c2238 *521e3e5b243d5f213f571b2e4a18304c1c34581e36531b3655202e4c1d405523435a1e4862233f *5d2a3d5c214061234464253b521a3e5b294c6a364d67244969294d6f2f466a2b4c6a2d4d6c2b43 *652f304b22324f1a34501d31551d4660243a581d3c5c233151142c4f192d4518364d203e5f263a *551c435c1f3d541e3d571f405a1e4263264f6b29475d1c435f2544611f446123516f27506f2d4d *66265673335474294c6f2b506d2b62834d54752d556f2a536d284c6722576a236676324e74324f *75384f6a1e536c275d85444c6c2853762f5b78324c6d2d486b27516d28506f35496d28426a2a47 *6f2a516c2852682b4b622344631e48691f46642355753156722f546c2b556f265370325d78345f *7c3a5a752b52722a4b6c2c4d69264967254c75314d6d224c73285678356376335c813e527d3557 *7636537533486e2d5672244f773d486d2852743b52762b567431557f364b6d275073365978314a *712e5d7e3b536e246c853762762b5878354d72365a793259742c557333496d2b4b6b27657f3e62 *813663803661813d64833665802e5d7b2f5a782c56793c4a642a536c2a4f753a5b7937617f2b57 *7e365f803f6b823f61813e6d8c4966823b647f2f6079316180316c7e2f67853b6684406a7d3a64 *8140678030627831627f334a72274c691e576f2958782f56682a4f6d265c7a31647b3055722d4b *6e2d516e255b78384f6d2d536d2a56712c5e7b325c702557752b4c6520546e2d5a752c4d682953 *7437516f2a657d2b597b2c5c7c2d5f7d315478355c76335d752c5b792d6080305b75264d72324f *6e28486a2a577632587032596a2759742c627830687d305f7f3c5e7d3a5177305f7a32566f2759 *762d536d2450691d4a6a2652732a486a244a68274a692c55772f5a7f395d7a306a873e6682386a *7f335f8137637f3a667f2e62833b60793163823664803360782f5d7d3464792e6a873b6a873f67 *8740758d4d7c913d81903c6a8b316484396e85305d7d3d69823c75883f6c873973893f7186356f *803568822e5d782b5b752e5978405d79395a75336179306079365b712f61762a687d34647f3a67 *7f3a5d7a3659742d6376285e762a58742e5c752b536f2b53742c60803e647e3d5c762b5f7e376a *833d5f813f60853f6480315c793969833c657e345d792b577b306078305d7c30657731637e3269 *7c2d6a7d2e748230798d42728d42708c476f863d6f8b3e768e39738d426a823660803a64864071 *863c6b843e6d873f71863d6e88427986386f85356f874273854067823f738337707d32627d3170 *853970853f738630758f428196446f863e6d833068863d68823f648333658b3c68853b69853f77 *84386b84327c8e40789040798e42799143778b437d96467b93427b8c37768e476f883e718b3a6e *863f6b883e6b8a3c64883d6b8d456c863d76883d6a823c798b3f7f8a457a88456e82396f894075 *8c3d6b8b446b813467803769803464813b6d7d2e6c83356d7f2d6c873a768943657d317589436e *7e3367843666863a788f496b84406a853a6d8540758d47788d487f913f7a863e748e4274893482 *904773864370843c6881387a8941717f3d6d833a637d3d6c89447287426d833f6e884275883d78 *8a426e8943708a48738b3a6f8a3a70883f668140627d3960762b6b833a63803e6d873b7186426d *894075883e6a80376a81307790427d92437e934c8097546f8a456d813c677f2f687936647d3d62 *773166833f6b873f62813b6f823e6486476c803e70873d708f4972884075802d677e2e7b893c77 *883e78893e6c8b3f68853d667b2e697d2d667b2a5e732856732a5d732f5e782b648130717f2d5a *7e326582336c782e7281355f7e3b657e3369792c6b7d2f7381316f80336e802d738a3e6f863c6e *84336379346a82336d842c6a8135697d2d6d82405f79355c6d2d5a712e5b722c5d742c767e3359 *6e2559712c647428657a305e75336379386b7d31647124606e2965752c5c6d215d712657733159 *702d4f70335e732b577529607f3460793358762c5c6f315b723961753162742d6d7f326a7f3359 *723563742f5d78305f75346a7e3a647f396f7e316d7c34697e30647523657d34677b326879376d *8130708943667f3d708440697f36677e3453702e516a2f66733256702f5e722f5e6f296a7d3165 *782f617c3f839865c8d3d1bdc6c7b0b8a3606b3d5c753c506a3651693454672e4c66294b56274a *5d254a62274d642e475f234e652d4a632d44602a4b692d4d661d4558234f6d2e44643051642146 *5e2a4258214b5a224c6122455d23405a1e414f1f4050204a662f4262314a66285266234f642742 *5b23465d26496028415b2d506a365a743e5568285369294966284561223f542450672b45602347 *682d44612c445d18364e1d405821415e253d56273f5e24485b294b642c4c68234e64264d5f354f *682554692b445d20415d23475f214a6929486325445b274e682e45652a4963274c5c22465d2352 *6a2d46652b4263244a5b26435a1d425d1d456022476426455b1d425e2946622b46571e415d1f46 *5f1d3e5e21426022475f20496426476d29406029475d234d66213e591f485f2242631e4c6d2d45 *632a426429496b29475a1e455d22425923445d1e3e561c3f5b243d4f1d3e5c23436025435b214d *5e1d4b6723476a264865274b662d486426536d3049672851682c4b63245e6f304d6729506b2c4c *6a2e526e274d722c546c244f6d2d4e6b2b496c294e6e2c556c304f6420586f274d72305573305e *792d6080405f7a2d5f7633547835526c2b647d425171304d6c2b49662458732b476926586c2b50 *6a2850662752733354773651702e5169274d6b22486a2347682846672451733352763b58742f58 *772e5a7d385c7a35607c346c85415c7c386780376187455b793a5f772e6381345c7b2c50722555 *742b4d6e2c4d6d334c67254d6825587936587c30526f2e4d69284c6b27506f244f66294b6c324e *692c506c2b50753c4c692b5a753264833e5d7a416a83445572315a7a345a7733597430516d255b *762f5c7a34586e295c742d5f783b657a34637f345a79305e78365b7b34506f285a6c2a5d722a60 *7a335e732a5e7c3462782e58742d58742f647e3868803d6e853b63792d56733351752c647a3362 *772a637d3850742a58732a5d792b596e30586d2b5d783b5772334f6f304d6c2758773b5a6c2f5c *743051732e4e6d225574345677325d7a2e5f793155792d5c7a2c62834064792d627a35617b2f60 *7e3a63813f577d3a60813b577535597529597731586f2751722a50712f4566234f6d25576e2d44 *62225d7e384e713056732f5d7a395672345a6d2f51742d5e7b306582356d8634608136627b326a *833c637f3564823e5d7c3259752e57773059722957722b5b72285577335c7c2f60762f607b3266 *80325f822d6581355e7c2f5f743262793159752863813a607c30718a426e854263803c69843e6a *85496b803960752f6e883e728b4164843b64813f607b3d647532628135727e316f873a71853f6d *843b7e883a6f89476c8133667d3759722d4c6b284b6b294c692157712d4a66234e6f2858732a65 *7d325c7a2855702760772c647d3c6b7837677d2f637f2f506f23607427647d325e79295c702d5d *79346a792d7884397281395c8138637b2b5c73266370276071345475325d783a647e38607a2e60 *7931647d38657e3b68863a6d85346e81397884336f7a2b74813571843f697e386f873d6a80376b *8137697f3b728c4a7a853b78823e7f8c407f8a357a894074803776873d6c843c708b457b904374 *823173873a71863365813b7a89336d8d3c728b43809452708b41778c4e7a8a4475853a788d4578 *934d798c4b7b893f788d3e7b8e40798c4783964e8991447e8d407d9146879752809142748a446d *8b446c8a45698639728d3f72863f6f85426e853a72893c748a3f798b3e7b8b3d808e3e8196557d *9455788d477a8b4b6e8c4d74853d69863b6f853f6d863c7b8d4867813f68863f7b853f75894977 *8b3f72863a69853e6f8c477f8d4880883f78813b768c48778743737a31708a4773843c697e3c75 *86407d8b3e7e863b73853a758a3f6f843371873d67803e7083327c8b3873873c71833a6b863f71 *8a447286357c8d407a8c447a884172894771873f637f3a74843d697b326b813c647d2d5f813b6f *823d6a85407186336a81356180336a85357a8531708436738a41687c3665772e688139637a3364 *7c366b813b6379325f792e587d366a8036607f3a5b772f6278335e743769762964782d667b2f61 *78315673265c7732697c336a7c2e6f83346f7b29637b325d7b34597a33667f355d753b65772770 *81356882375b702e60752a5f763162782d637626677e326a7b2f64702870813465792a5f792871 *8031606e2d61712c62793061752c6178265c783562772f686f2e6076355f712a606e3561732a5e *752b59702d62782b6a7b326578346878346a7c30738035677a2a676f275b76355f7130576a255e *712b62742d6b81366c7f3a60782b68813d5e79315573325773325f69205e6e2a647630687f325f *783665742d59743162702a6576336e85426d813f6c8440637d356b8136707f356f803a6c7d3961 *7f35658038647e41627f3b6978326a7a385972385a6c325a77345272374c67275470395a72315f *732c61722f5e6c3286946dc7d0cfbdc6c6a9b1924f5c283d5b2d4e652f596d365d723b5d753d53 *6b31536c2d4e6c32576d2e516a2f4e6a2c385d234d692b4d68344c5e22475d1f48642742592548 *60273b53273c5023415c274259244758224658244b5b25476527456326475f2549652e49602947 *5b2144582548652743662848662544601f34531d3350203756233c5e2b3f64243f562840642d44 *642437501f2d521f3856244052203b5820466029425a1e426229466327434f1c455a1e44601e4c *5f254b66204b62204f6a213e5e23485e255166233f572143602d425e294d65234b65264b612440 *60214b62254d6b2b47682842622b4a652a46692d415f20476123405924395823425a1d4a662b42 *5f214a6a2b486d2f506b3a4c672855712f516f3156712c5068204b682849642b506e2b57753755 *75344261235269204d6523506b305d77384364295770364f672e4a6d2d4c65274a692b44632c4c *6028475d20394c1938541c3e541f4765284e6226546626516c324c6e32496a2b57722e55672551 *6d2f5979364b73344a692e4d773f4d732d4f6e274e79364d6e2e52783b566c2646692a57732c4d *6f284b743052732e61772d648142537a3e4a68294d7537567332516a2b4f743055733551732860 *762a49692d587336607f385e7a3159793261772d5b80425b752d53682652712c486e304e692b57 *773d4e6e2c506927516e2f59672d566f2d5f753058762e67823b5c7f3c5f823f5f7f3d5f7c335f *78345e7c33566e2d5c78295174305177344f75305f7e3950702b5e733056773e455d163b5d1e49 *6e3a557a355d7d405a7836647931667f3b708039627d3d607b335f7b31617e345b722d55752a58 *742b5f732a4e712a4a6d2a507b3f547a3c5d79386381405e762f6a82335e772c5d77296f83386b *803a647e3f607d3d5676365b76345e84395e7f33577a335678335a7a4152722d5a77335873364f *6d28667e3358772f637c2b5d7d34657e425c773066813c7b935560783a6c833f5e7934667d3559 *772b657b30617f3755762c506d2159752a51742c536c25506c2556752f57722c5b743357762f62 *7b3d6380335c7a365f7a3a5f742d4c692553782d53732e5373255c782e5e6c2a5a7b3068823f5f *7f31627a35507b335e7d3b55732f5c79315d742a61773357733459782e617b2c718d4465854375 *8a3b6b833c6a8a406b83375e7f3b627f356382415a7a375c742d5a6d2c5a762c5e7631516a2552 *6c265268215179375c7a3050732c5f75295c742c607b315b792967813859793c59793672863c72 *853a678532788934647f2d67833c66853e667d336b813c637d35738335627f4173812f72863e65 *7e34708434768b48788c4873893f7387406e85365c7c35567438597527577a2c58772a67833f64 *7f37677f365c752c677a325e7c2f758837748b3d738b43738d486a8c456e843a6779326b7e3067 *84396d8734728b3a7588337b8e3f76873c73873b67762a5d732b5b6f245f803b5d7730607e405d *7935758b3e6581396273275f792a61752d607f3a6781346d7f316e843b6a833e6c843a6c7d2966 *8334698138667f376e833a70883f7283357c8d407c883a7f8e42778e407e934874863e72873a6c *883f7c8d4171863f6f8337667c3175893c718a3f788c3a6d8533708b397d9240778b3c73853a71 *8b3b768e447e8c436a80397084417687437d8f4b7e9244778b40768c4772863c7b8c3e6d863f6e *833a75894874893c6d8d477088406e80386e853b6a843a677f2e64853e647f3865803a73844071 *823877873f8392497889446b8c4871863f798e3f748f4676904469823b768d4b778c3f73864273 *823d6e86406f8d466c8639748b3778853d6f83336f853c76843b7082346681356a86407388446e *813a71873f6c8335698748718a4270803a708842677d406676286f812f5a78345d7a2a657c315e *70255d7d346c822e6e7c326981355c772a65752d5b7637627f3a64772c687c2c667f3164853b68 *8130687e395b7026576d275f6b246a7e2f647d3061782d687c3d637d3265762c5c6f255e75295d *732c586b2d5f79365870265f7729586c2c5d6a2f5b6c2a576b215d772759772a5d762956742561 *7a3064762e6574265a702c63772c617931627b326a7c306b7c2f5d76265f712c687d3567792d62 *742565843558782d62723168793365702d68712e5f7530526d25566d2b5c6f295f7a3856773262 *80355e6d256979326171275870225e722460782c5f773264752d65772a6d7d2e6f813062763169 *7c346079366e8537788639818e4783873a7c853f7081336e822e7489456d864763803b5c793468 *803d6b803164803371823f60722a5d71335f75265d7a32647d32667e3666772c6a7f38577d4263 *792f59732b506c33607a2d58794060803970823d676d2f627a2a5c7b36507332586f29586d2c4a *6c2e556d2a596d2a5b6c2a516c275e70305373305e7736536f385c7631536d2d526b2d566c2d5a *6c2a687c30637e3264814387a176c7d2d1bdc6caa8b3935873364e69364c6434596d314d66334b *652e3c582c425d2e446139586c3153642c3d5d2b485e2b44602e3d5f314a64284f64353b582147 *672b466b344259263b5a25405f28355221475f2643622a4262273c5623486626436128435d233a *511f354d1e3954273e561e4361223a5320405a2b445d29445d20394f1e32532648632c34522942 *5d1e425c20526827466329415d2248591c4e61294d69274c672f4d611d49511c48602349602852 *6c324c6c3047652c5375405771355873315a6a294e64264661253f562045632e415e2c5069324c *68275069285a6e3a4e702e4e66274e6c2d45652a4a6838546b2c55712f4b682747622b4f692c43 *5b244c662c48632c4a642d506b36526e2c4a6028475e2b51642a5067244d682c52642a65712f60 *692e5575336582406685445d6f3569814459813c5674365a7d465c762d657b2c5b76314c6c2f54 *7536586b2f4258264a6937426428476523466428485f2c4d64304d6a2b516725536a28556b314c *682945602548692e4c67253f5c274a662b47692b486928496b314e732b4a6a2a47652549702d53 *752d4f762a516e274d6e32546d2a5b79424f834656732f52742c537a35567d3d52742e51723256 *6d2d506f315a763557702f59702a5b7a3567844068803a637d3957743066803e53763b5e7a3c65 *7c3057742f51732e4a6c2a61772e607d3665813a5b7a325e743059783e607c3d5c844069813c6a *7e3664833c6a802f697f365e7c36647e345c7c31597b295c7f416a823a6584466a813d5c793447 *5c204a6930475d26476228576c2c4c67294e6922597e36526b2f546832556f3654712855792f5d *7f485c824260813e5e7d3b5d7c3361772c67792c637a366e7f32607f3b6a853c657f356b844469 *823b6b803b798c496b853b5e782c52732d4f773d607d3f53762c51732e6178315c733a54763355 *783e506c283e6428546b225d73285b6c295f792c506f376a863b6a84416b843d6d87456c823c62 *7f375d79314f67225768294e6e2a506927567742566d305e753a5c7831516b2a516c314f723157 *6e2e58753b627d3a697e336a863b607f4059742f4c6d2a475d1d5575295c76335f844565864866 *87406c843a667d3b647e2f647a2f6281406883365e7e3f5f844066813f637d3469813066853e72 *843b6a8a43708a456c8c486e8c40728b3b677d2b678441637934677c326182486083426582426c *833d5f7d3b5f7b34607b345f7c36597b395a7333627c3c628136627935607524677a376b833578 *873f6a8a40718b3f7b9149758f436c863a6a78325b793a617e3154703a637d366b813469853a6a *8b357c8d4c76873475873a6c8c48698c48728d46728c416a833d6f8c4d70843c7b8b416c81346f *8d4567853e64803e688740718843748b40768e3f768942738b3f68853c6985426788456b813a68 *7f3f6c8b3f72873b7285336d8c3f6a864476863c688132728a426785466686456f833974833d59 *6d2c55742866813b5e803a707e366a8a446b8437627e38657d3366813165834463833c637e396b *84366b88417184386e7b2b6e89396982327489407c924968873d748b4471873f758d47798b4c7a *8c3c718a477a914c79915178904d738c4d82923d849244778c3871853967843268803f677b3165 *823356782e66823a71863f6c873a788740728c4672863f78924e738b3d74904c7d85427486446e *8b4573843d6b7f3a67803664793372853f778c497585426e823d6a7d32697d33697e3668803c6b *853c718c406f8a3e748940798a3d6a8245748a3d7187417085406d812e63803a6c83336885446a *8a446d863b728c41728c4d6f874776843a74884162833a6c863b69813d70893f77863b758c4073 *853f628132708c515e7f3f6b813065833a617730657c3363793658763b5e7c3c5f7e3c5d702e66 *79306476296779325d793360782f587430567832657b3162782b617a2c627728677c2f5f762f64 *78326481336c8036697e396c7f335f7c3c6577255e782d5965204b6d32657e356276357180346c *86356d7e2e61762f607d31617d3362803b687c3d5d773658713563753366772c63792b697d2c71 *823b657a326980386784426d843e64793359702c5c762d667426627427677c2b657f39697e3765 *79356a78266a81306a7e2d657d3264782d6a7a2b5c6d2a64793369782d6c7b31667023576e2960 *772e697c346c85456f81327684356d85316f81386a8137617c2c66793065813a5673356081425b *80386e81336f813b6980346982317085406f823b6e8344607b3f6a7f346b7a2c5c6f2d5f712e61 *742a6b823e687a3961783164752e5f75285269235a6b225a722d566f2a55703263742e607d3f61 *752d536f27657b335973316c823f6a8340657b37697c37657e375f763359722f4f6c2a60773560 *7b31657c2f56773e5d76335676315a77285a6f32556a2d5b62245662284c69284e662f4f67285c *7131637e3b627035656d30676d2988986dc7d0d1bec6c6a4ae8450693a507846526d2e4c673453 *6c30536f2e4f642f425f2949652e48602d3f5f293f562348662645612e48591f4b57284360273a *5a233b5727395b2a4163233a521f3955264a642a425a26506c2e4a6526405a254865294a632c46 *6522496328485d2543612a436a294b682b4d6a2a50692e50682847642349661f3f5526425b2643 *642b4153203f5f224562223a5a234a652946642a43551d435b23486123506c254867224c6c2a4f *682c567531566927556c27506e2b517938516d2c526f3f4f6b314e6c2f4e60274e63274d621d48 *612249692d55672748632e4b6b2e5b6f2f6177325c6b2848642b57783b6079334a6b2c4e6b324d *652e556e2e5871306177325071365c73334f6f2f648040637d385f833f57692c657a3d6b793373 *8b4653722b5e7c39566f35536527526e2a596d2a5c7325486427476f3c65813d516f295e71355b *732750712d51702e5b732d586d293f64254f662f526b2e4c62264c6622516f305b7a304a682847 *68264561203b5d26426533486a2b4867285069265579334f6c2739581d3a5a243f612b4d6c2953 *6f2f4e6e27567a354c73244f66244b6c374b6c2b4869274968274a65203c5f1f3b5d2250772d5c *77335a7d3a648a46608544607e38668746637f325b7d2d57792f5f813e597b3460792b5676335f *7b34678333637a335c772e537224557a31628239667d3052682b5e7c3565853b577c306c883a59 *813b64874864874363853c60833d6986356d8b3e668b476d8d476b8a486d843a647e3a5a763a5c *7e365378275177314e6b244e6b2456762b4f6a2b4e732850692b52632048661e5976284e6b295a *75315772305c79375e7a395d7f416a833069834368853e748a3c64792b63792b566d265a77315f *7a396b84336084356985375e6f215d732b65742a5f742a5e732d57722a58783059792f526e2847 *5f23456420445e1e4f6a345b752f4d75345b722a576c2a486e2b566721576c28617b336d823268 *853c6f8b46607b30567329607b2c587e345d742c617b375978315a78375878325a792e597a2e5d *712b6066265e713158762c5e7c346a804159753a667a3561813461813e5d8030637e3161772e63 *823a64834161823c6481305f8440678335688542748b426b7d3c6e7e41617d345f7e355d803069 *812f6c883f6d833e6e8340607d3a64823a5e7f3a6480285b7e30617d2b648640678439677c3b70 *86396d833e63833a577d345f7e3f5d79345e7e395d80405f7d3a607b356a8440628232597f2f69 *86316989416883346b86366f8f46708b436e8a406b8132637d325a7d2b6b81356b8d426b82355e *81326383326a853c64853b63802b68873b6682356a7a3a6d82306c833561823a6985386c8b3e69 *853866853b627b30657d345b782e617f3664803366823b64762a6883316185385d7f37617b2c6d *81356d813262823c5c823b6788425f812f667d2f6a7f3363823a60762a5d752f627f3455792d5f *7f3a6078325e7829577c3667772a688032557f396d802f547b2d587d2d60772b5b712f607e3564 *7d30607b2d637b2b6478305d7b335b7c37657f34617e32758338677c2f67823a6a80396e7f3379 *8935687f37647a337484327084317b8e3b758d3f6a83386e802e7694477287316581336d84316b *7f3058782e576e255874315e7c3f66823f657b32697b2a6d8339708b40759148758b477b8e4776 *8b3e637f3a69843a6e86386c7d31738937748a407087436d833772883f788b3e809241758a3b76 *85366c883a658245667b39607c38698341637f305a7f2f687d34607d385c7725628234657e2e62 *7e3659782f587b3263812c73843c6c792b657e2b617d346d803c6c802d6c8338677c2e5e802c76 *823c63783457782f607c2e607c3d64722b60752a667e34647d34667326698138677f3264833869 *80326d894269833b618237557b305b762c627a335e7e3462792f5c7d32617c3d6a82326f873f68 *7e36626b265e74245e762250732f5b6828455e1e5d77245f7d2d667c2c63833569853a6d7f346d *843d6c893f678030607a29607e3161812a697d2d6a8233607e33647c3466813e677e316c86396f *822e737e347082376778316c854361803e5f8036607c2d647f325c74275b712d5b702664782b63 *792b707f31667b355f79236a822d7382377081316c7f3065792e6f843a728038687f345c732e6a *82356d7c326c85316e81407e853871853f6980336684305f802a6b81325b782f647a325d732866 *772e61742961763065792e627830657a2c5f752c6471295e723259702e58722d53792c607b275a *752b60802f6782376982315e783456742d597034576a2b5e782e69812a658137666f22697f385e *70314d69265e722e607123506c21697e36637d386573326478365f7531516d2d5f722b637c2f57 *6c2059701e58722355772d5e6f28556c2b5c7b2c667d2e5f792f6e8133667e3c627c376277335c *72395a743160803660732f667d37607832889d65c7d1cfbcc4c3a1ae80607840607032536c3c55 *763b5a7a485972384f6a305578394e6830526e354d5f274d5720425b244762264e622959692a4a *672d4257243a4d214158243b5e284c642a3c5e2b445d2a3e5b204f6d2b4b6b2f47662b466c3147 *602237501f3b52223d521f3c511f47642649601f3e5b21466026425a2544521e475e253b5d203f *5c284a6424486025395322495d214360224a662d4c6225475d203f5e214a682f4564304f642745 *5e2553682c4865264e6f2b506b255d7a344d6d24486328516b2d425f29425a1e4761264662284d *66264767254a6a324a652e4a62304a682c5166294b66284f69274a6b2e5369224b632d5465275c *6c2e536b2959712c587a395e712c64813e647b2f5d762f69813d647d396c8649617e395c783158 *6e355b7932536a28667f3756783a647b395a6f2a4e6d30587631425a224e6c2b526f2d4f6d2b52 *6c2a556a2b4f682a4f70345777374f6c28426a26456b2c42652c4a6a2f4c692749652c496b2b46 *6d314970314a6823436025436024466a2b4d692849632b516b273b5d20406b2842652346652b5b *753653692c4d6a354a75334b6a27466424436c2e4360223b521d39511e4c672d526c2b4e68294f *7639597d3b507a3a4f752b5e762f4f76314a712e4c6f274e79304a6d2e497634527629627f3766 *853e638039728d576480386487455981485f834354813967823d617d2e627d3968782e6081324f *7c345a7a354c722a4f732a4a6e26557c2f537b365079375c783a4c6e2e5a7b2e587b325070265a *793f5f7d2f65813a62823a5c773051732e59763159762f60792d5a7c35516c2c5c793961793859 *7537627c36617d33627e3f687d3260712963772c5c72305c75345a79325e7b2f6a81385b823864 *853d6984396d7f30677d355a7b3064823659803a687e366d863f5f7d326b87455e7f365f7f375e *7933587a376581395d7c365a762d64803565843c6a843b577a3b58823c647f3e678032697f2f62 *80316a853567833b5b74355e75366583415c773862813a69833e648443637a34697d305d7d305b *7d34617b336f8a4b657d35667e3167813a617d2a67802f6b8b4764823660813b5b7e3564824065 *833c617e2c5d813164792f6e833b5c7c3b617d3d647d315e7d3b6583355378335c7c33617d3664 *81356981355b7936657f34647f3d638130687f3560772d5e783163772b587a3c617c3259792954 *752a5a7f38577c3853763259783052773157762c607e38647b33617b296682345e7a296075225f *7c33577125647e354d7025506c22526a255066215e75226e7d2f5f7b3365813a63804065843260 *7f2d68862f6684326e84345871285b75256a812d5f7c2d6c883a6e8c3e718833698434768c416a *843c64792b5a762e5979375b742d5972275b792a617627637c3661732c5e792d6583455f813b69 *82365f7e3b5f76295a6c254f6b275f722551742f5a702563772b6481385573284f6b1f5675274f *72245c783058763559762e5f7c3055792f58712d5f7d2c5d7a2f67812e677d2f65803364782f66 *803f627d33607b29667f30637930627c3c66813b5d7e3454752e55742360802f677a2773813769 *7a33697d2e6c85396c813a6d7f2c6b8130628538698e486b7c2f6a82306581326d8b42788d4a64 *83446e813778883c697f346d823c7284407183386d854069843a667d3c5b823e63853f6780386e *823c6c813b69823f698647647d3f69853d728b436c82346d823b667a30647c30687f2972873a7c *8e447d8837758d4064843b6681355f7d32637d3b687f3c6181386785326a792a5e792e6582336a *82336d863d667e3c778641657e386781396c80336079265d782e6a813a62782a5a7a2e60793969 *813561782d627f345d7d3367803b5e78335e7730566f2a556c2d5a78365d732d607b2f6581295e *7e2e667d296f8432647d3b637d3a5b782f6a83376a873d647f2b6e7e2d677b2f677b2f52712858 *6e23516c2a53722f516f265b762c627c39485c1e5c6c205d6d215d7d365e7e2e5e7d30697d3b68 *80336d842d6583337184306482366177355f772e72873f637d2b61782c6481425b74325c753563 *82346384415d7d33667f31637a2b4d6a255c74256079295b742f6077336b80385a753d657c3160 *7c33647a2e6c8231687e3b667831698241657c36627d336a7e31667b2764752b6b873c5e743465 *7b32636f2b6c7e376c832e697c2e6e8134737e266a813173823a57762d5f77335f803f637c3659 *6e2d57722e5971236470256b762d617b325a783862813d57722c61732e607b2963732965763163 *722a5e70275f7c345373324b71345e722a5467225e762556752d5f74256375315a6f2659722a60 *6e27537027597028667e2b5f722b5e7631668039607c38647a2c627923556e246279266c822856 *732f60752a5a72285870245e701d577225687a236d7e266b792675802f6c853d6f86435f753761 *722c5971356071325c6e265c7130697534647e43899c6fc5cfcfbcc2c69fa97965723a59773f55 *6c2b4d6a3d536a3b59723a5d703c5a6f394f67344e6a3f4a622c4e66314b672f40572342471b4e *5726425221475e3940572941501a345623405323445e294862294a652c3b6334455d303b5c2d42 *672e4969284f6c2a476529455e2447662d3d5a213a6121456022425e2245642547622a47602144 *5d2246652e4660283a5b273f612a48672e4b6725425d2d455a2247511d47602d4c682b47642f4d *6d314a68244568274e6e3b597234597631557940536e2f567132577e3b557a3e49652947632b4d *672c46693148622244602749652d486b2d486836516e3543683245652c50692d57702b5376325a *793c59713358692f56662946652c496629486831475f234f713947642c506a2a5e7536586b2b4e *672e4c6327517134466d2a536f2f54692d4e7532566b315472325e753546672e426b32476a2e52 *6f294c71374e6e2d5c7a315b77315a7336556f2b4e6f324e702c476a3343682e43692f49692551 *6f304a6c275871304b66385a653445632a486b26426a2d4b6d2b3c4d1e46642d4e76334865304c *682f4d6a2a5572325a76334c7634466f324c6e34496c3c496d2d3b5e264264265271344d73315d *7e41607c375d7c37536e2d597b3b536f2c547739486d2950733552743050712a54772e58742e58 *793d57804353783b5b7c385e7631587a334c6f2b496c2a4d702f546826516c2a5d7a2d5e7e3d5c *803a5670346480345c7d426c813955732c476b2d5771274f6d2845601d385c155273294c6c2856 *7b3e587333617c416786416682406d87426177345e7b39657e355975274d713450743c556e2556 *74275e7b2e63803365803e68804465804164773662723168853e60792f66813b64772c6379365f *7a305b752955702e6d81356a7e2f657d3d63823d56793057772f5c783558742f607d3966813361 *7f3d537229596e26627d33658230607c34608242657d3062823b617d315c7b3d6581446b86406c *89416e8643697f3a6c884461813d6b88455f7e385875275f742e5f7d4168813e59773162813e60 *7a2d62792d5d732a657c3d607a325a7a3e5e80385c7d324e6d2a5f782a556e2556752e5e7c2f64 *7e406983425d803f587c2f64823661812e5a842e607d305f752d647b30687d364d73315e7d3659 *7f336c842f5f80315d7a2a6a85325c7b3a5e7938617935667c316480305377395876314c66234b *63205368294c65204b652653732e5278306182375c7e3c617f3d667d3b5d7435607b346175265e *7c33547d37517026547029576927546a285c763462772e5d792f5d793058762b658033637b3266 *823569813c597f356c843a73863b6b883d628233667d2e5f803f687f2a75853a6284426c894562 *78245c7c2c68843368863a6e803674873f637d2f618035657f335274295d772f5e7a29647f3c64 *7e306a813265813f59823f5f7c3b5f7a395d7d2f60782d5a76295d7c325a75395b763859723254 *783a506d254e6e265875325575336075355a712f597b3a5f7e35648039577b2f5d8132657e2d64 *7e3575843a617f3857762c567f3e5d8240627e396d823c6078335d792f5e772d5d722e60772b6b *84395f7f36617e31607d396a803c6a83435976316c7e326b86426b843f6382335d7c2a66863d5f *843d658544697e34687f43668740657f336f863a6b8440637f3e61813b6987476b813a728b4a67 *863f6d8b43698b4972893e6c85467087437a8a41748d4c788f44809347788e46708b44698b385d *81416680396c85406a813b65864264762f5f7c395a7e38637932607f326182396d863e67833e6c *904c78873c647f38596d2963823d5c72275a7b32637c34697a385f783b5f7b2d637228657d345f *8134637732607a3c5f7e4068813a4f683161733059782962792c5e7b315a7d3c657c3168823f61 *813d6782326e83386f8c4467864061853d647c2d697e30657e3466833e647d2967853b6f853a69 *813c6780306e87406c82476a7b306d7e3b61864368824370803b6c853c6a7c356f853a6f803067 *81355e772f677e3a637e3b53752f627e366f8435607c2c627d3c637831697e3b5d6f3160733261 *7c2c57742b61792c647b2b56733a5f7937607a315c7f3e5d752e557128687f3b6c7d30667d346b *7b33657b3d5279375e7a3a556b23526a26546d26506d2660732673813c6277305266264c60265c *6e285376314966244c6b2c5769264c6b2d5d7732526d285d6c205369235478354c6c23586d2556 *6a305d6c265e6a285e6b2d546b2d546926536a205873295c712a5e7233677c36637d3264762b62 *7b2e58763057702a57742d4f6b2d5672295d762e537130507436476a27536e255b75274a611f55 *68234e6a254b63224457224d66205876245975285e792957712463732a5f752f65813248682f48 *531d4f531d4c621c657a255d6e2b627c355f7635667d326375335c702e636f276174315c69305f *712c54743c586f36627b42627f44586c30606f2a5b7334849964c5d0d0bbc3c4a3ab746d804c65 *844d5f7543516f39536d33536d314c692f436d394462325467344d5a234e642d41602d536e2e45 *59264f6d314d5e244d6b2f5064255c602141522548562c3754223d5f243b531a455e24405d243f *551f4a612d4162324061273e5d2a445f2749632844602648642648622b49662b4867344e662a45 *652c46612245602939531b435b20415a2249652c41643146642a46672751692653702e5676385b *76305f71315669355470385675384f6f314a6e28466020415e254e62234d68234c6a2948652d4f *662b4a63264d671f4c6b27495f254d622b4663294d662b3753213a5f254361294c622654612453 *693452713a5e7432577a405c7b3c4c702f57792c547f41607735537237576f3757713450783858 *762c54712b51712b50682752712b52702a526d2f3f5b2d44662d4b662149642940612446692244 *5f2a4a67294b6a344762294f6f3255712c4f6c254e64234c68294f6d23536f2a526f2e4d6b2c42 *632a4b6b2d45662843652b506f2a67804f607830546e2e476c2b486529456e304e752e48692c48 *712a5074375f7b41596d2c435c2849682b4e722d52773b4f6627527334516f3456703558753255 *7c3b59753a5e7430537a364d813253752f56793f557332596f2a4d72345e73255175334f6f294d *6f265375304e72305c782f5e7f3b63792f617f355a7b325a77305e782d5c7d3b617833607d3b56 *772f4e722c5c773c58813f647d336885405f81396484476c86495f8043587f415f853c58792e5f *853f5f7b3657702d637c366484415a7e326681415f7b3d6b7d3164813e6586415d7c2e59813c5c *7b38597c3d5f7f3e65803d6f8138698c486d874175873e758c48728c416c864b6c7f3c6b86446f *8b476e8e437f8e40758e4f7a8b4a6f8c45698b436e8a416a863e718c4c6a873b6a915a67843b68 *8442638143577436597631637f3b5e79335f7b2e5b762e56662c597a3064752f58793b64803b63 *792e6380365f7a36637e3861792f5c6f285e713163772d5d752a5b7a2d637d33587a3559722a6b *81336477325b772e5b6d2a677e375e6c285e772c5b722961762e65753363742958722e5470305a *73255c7c3766833457762a5f7631657d31577b395a793060793c587a335177356485355a7d3c66 *7f335979355e7b2d5f7b3a5e7b2a6985335d7a2c5572284e641d4c68245d722e5b742f5b793457 *753060782a557d375a7e2e52722c5c7429546925537230617f306582385d7b2b617c2d64813169 *80305d742c5e743258753370822d607b275d7f2d5d862f657b306b782a6681346180355e7e3359 *7c326583365b843c577e3a5c7e305c742c60793964823a65863f638539607f2e6587446a843b74 *8a4072833970873f668a3e6788406a84386985326b8832688637607f2e607a325f7d356381375e *7e3663833d6587376f8b426a8842688b4169813b68853d6080335c824168863a5d854063843b5a *7c3352783156752e5d753a55722b5b772e5782395c7c32607225647b296f8240717e2d68813a55 *752d50762e607d38627e38697d2d5e7a325f79395c783c60722756752e5477295b7b325d7e3f5f *813c6a8643638a49628346658b4d718c446e833f67803c6179275d7b345c722a5d742a58772b68 *7b3260812a677e2e6378226c863d6a7e2a6782306f823872853c6b873f668a426481396b864060 *84436d8a4c74893b758f407e914678914c7d9049889956808c42808f4381924b7b8a416984425c *7f3f62853d5e7e2a5f7f2d5e7b2f5f7d306480335d742760702754752c5c7932607e356a863c69 *863a63803d6b823b6785406a844269813f5d792f677a395f7b2c6b8238697d29657b2d6c843473 *823c6a843c647b3d6a83356c88346d893a6b863c5f8340607c396881355a7a37687d316c80306c *863e728d41738a3e7b893e76874369813768843c6781395e7c37627c335d80315e762d6e83386e *82415e7f3565813660792e5e7e2e62833d728a3a6f863c6d813068833b748a4077853a707f346e *7f3067813a697b35737c2b6381405f7835687d3161782f638041637b34697f3761792b5a6f2c60 *782f647e37607d335f7b355a7629658038687d365f782661782d5e76315c6b2961752e586b2d4d *6221546b264d6a24566b295b7428627c2e5274275c6b2462752d5b6d2b5f76335d6f23566a2269 *7732545f25536c294362294c68224e571c486122526920596d245260225e601f4b6927576f2758 *6d255c772c526a245c6d284c692c4f6a28556b2e53662b4f672d5367294f6720526e255f732a5b *6f29546f325c6f30566b265468295a6f2959742a587633566f254e642652712657702c526b264f *6a224f5e17536d20566b264864234d6c2b465f21607023667c326c7e36697b26707c335f752c64 *792f5f732c66732c4f641d6370316175296780305f7c306270275c64215f6f245f702c657a375c *6b34627939546c2562782b5e752c606d32647231617640636c3a7d8f64c5d0ceb7c2c697a5725d *74375b73354e6d3352652f475e2e46693153743e42642c4f6b39516c3d5273355572384a6f3853 *713d4f70304f70374f6a2d486831526c30527033506f3250784b50713f5170283659213d5a2946 *622d3f571c3258263a561e3b61224263273e5a283854213659203f60213d5f1f33592a3f612244 *5f253a5a23395b23405c292d562235552a4b672842622532541e3c5e2c42652c4a6b264364264a *6d34446029436b363e5e2a4c662b3d682c496a314d6c2c4d6f2e456c2745632b41632147662a4c *672751712d4464264866274b6926416d3145672f465d224c652d5164264464274c6a3049662a54 *6b2c4964244c662b4e66214264274a69304d6a2c536e304c6f2f46652f4d6b304a703e4e692a4d *6c2d446e2e4d6825537031456d284e692b4867334c7232476e344f6d36527031536e2d405f284f *6c31476a2b486b2b51763c4867244f6f2b506c2a59712f556c315278334a732a466f3748753a50 *762b52702653702c4c722f45733353753d4e78434e75374f7c42517d35587e3b5a803c48703751 *75324c702d426535476e2e5b74244d722b4164264c6f2f5a79375776424e7a37507c42486f3050 *7b3248742f52762f5078354f75365f793663844058824857813c6989446281385a7c386282475e *7b3c4f7b3a58783a5d7a335b7d305c823968803b6b7f3f667f3e5984415e864660813d6b874361 *833e6385435a74305067285f762c5e793d5f7d3d5f803b607c3b5e81444b712a4c69284d682544 *68264568204c6d3556783e58813562823e6180315c7b30607f4067814157783b50762d4f732847 *6f274569275270275875305f772f517a33607e3c53723660773962803966843e647f3f72844168 *7c365c7436617f395a7f455b7836648840768e426b81426d89436689486188445e84495d7d3d63 *853862853a6b893f617933587a3a6782436178355b763857723e5772394d5d255063255a6c3452 *65264a5f284f69285e74355d79335672245c792c5a762c5e752c637d3b52712d527134647b3665 *854164833b56762c5d7b2a5c712c607a2f60782e5c763a5d7b385873294b75275277324f6d264e *6c2d4e69285e7935557736587b3b54712a5c7b2d536c265775265c732d58722c627f345c813c5f *75325a7f33657f3a637f2f58753158752e59772b4e6b284e7338537635607d2e5a792e647d2e5d *7e3754792a5c772d617e2f5c7f3b587b315b803658782a4a702b537a2e62853c587b30697e3369 *833961813f6381365d8036577e3a557b2f587d395b78305d752c658642677e2f5a783062832f57 *752c55732b576d2862742b55772f5676334a6a23577e3e5a7e3c5d7e3d58732e5b7f3765803665 *833665864368823a66823561873c68873e62843565843e5c7e3a6384395d7f3b608442607b3260 *843d5c7f386486366489425d8b47688b436c813965874060833f5679315a782f5b7b2e5c7f3e58 *7e3d5b7631597024587e364c74305a752d4d702b55803a557b3d51793d5275395d7f405d84475d *803f58762b5876295d79325a793851763055783356773160782c6780315e7d2c627c2f607e3468 *7d386587476989496f8c4f68833d5f864676904b7c9052718d4a69833f6983436e864a648b4962 *8440658d4a668c486a87426d87446b8443708e446487405d7c2c6b873c70863c6080395876286d *873c7087406b823a758d436b8b3878944377924982984b8c91497a8e4879954b7e95487c924a81 *984f80964f8396437b8f46738b436688466e8a47788940738e456c8c476c8c446984386b85436c *7d3966824264833d6e7f3d5f813e6480316582396581385e84406a8741687d3d65813b68864469 *873b6a873d769044738a4071863a6e863a617e30637e3f728440627a32687e2d6686376a83356f *833e5b7a3c657e3b678640647f356f833767833b637930597a376779305473305678326377326f *843b6383396e8837738e4466853d5f8541708740739249608042658844798e437f8d3a738a4274 *8a417686406c813c65792e618133617e29577b2753782f5f7526708132697b315d763060803f64 *783460802f5f7a2a5c7f3966742b647a3865803b677f3466813d5f7d32667c2d5f7e35617c3867 *7a336278295c75285b7e3156752f53752c4b6d2c5a7f375e76315776285477334f6f2760732d5b *763d5e762752772e506f2c506e26506b2c4d6a3457702e6177315b722c5374265f72295c782358 *78295d752b547a404b692b4f6b2d4b692e4d69224b67254a6925536d2648642345612148601e47 *6928506c264c6d2d446a254f6e2b4b6525506f2d51692a5068274c6627526c235171235273284f *6c2d4d702b4f6e2f53702a5a752b5f7a2f67823671862d779145798b367386456a7f3366743967 *7936697e39637d395e7330647e356580435f6e336078286b853d688441637e32687f3468884558 *7c3962722c6379355b7d3b537136607a346c88405e7937547033516a27789266c4d0cfb9c2c185 *9b5d5266305d72435f7333506a33475f324962234e652a4262204e62273f5a2e4f68304f622648 *642d4763284a5c224c642a425d2a4c622543602e4a5f21496127426732495d284e6e2d4b662c5a *6e3051672755682b3f5b2946632d48612f435e2542632b4e6327425e1c495f234c62274a6b2a42 *5a2448612b476125385c2a3f5b1d3d5d26465e1d4863233a5b223a5e2631592e394d1d39541f47 *6027415317394b1d435d2847642541602e475821396127405c1f4c652a4e642750672d4d68304b *6c3247622c546e32688137526f2e57712d506a2a4d6d2c4e6f3c4d6a3145632b4c64254562254f *662c52682b4f6626445d2447692746642a5568294d652f5365284b631f4b64234963254f64285a *68325270335171304d66274766264b68275370244f6d2a4d6a28506e33506f294a6b29566c255f *7a355270325269205c7635556a2f4e6d32516c2c4d692948642e4a6d3b536e264f783353793955 *7733587940597b3c4c612651743554722d5872274b67264e6e2a4f752d53782f62803753782e52 *6f2d52722e4b6b27537842496b2e4f6b31476633526f304d7032577a305778375f833b587b3767 *7d40637d37617d3e5f7c376a7f335f81405b792d69812d5173335e804267824263813861843d6a *87476781366380315d79335f782c57723163833b6a813c65853f5f7836577731607b3a657f3c69 *7f3a607736678339657f32677e366579326b803d5c762f5f7e3361792e677e2a62813a607f3e5f *7a3b637e305c79315e7c3e607a365e7b3a5d773f547730587c3a58803a63833d6284415278345a *762d59732c50753a516a285b7830566f304e6c2955742f5a79375369275870305b6f2c5976305a *7e406281465b752b5e7c2c516e2a66813e5e762e5e7e384c75394f6d2757732c678040687c3a5b *75305e73245c6e264f6f285a7a34556d305d6f2e5b782964752d5f6d24596c335e6e3465763f61 *7d41697e3f68772b667e31637c316779316d7f37586f2f5d732b5f75305d6b2a4e6d25647e306d *85396f843e6e8741607c2f6d843e6a823c66812b677727697c2b64792f647e3560843c5d7a2e62 *782f5f813f667d2a5c7d35647e3658702964792c5d8035617c38617d335a7033617d3b5174305f *762a62792c58742f5c7426637d2e627e345d792f536e2755752c61752f60792963792953772e54 *76335376325c782c5d7a2c59722360782d5d782c5c792d5777315b7e405d7a2b587a2f5b7b2d5c *762b57782d617e2f5d7b2e56722b5f7e3a5c7b3a67833b5c762855752a627c33637e3460753160 *7b315d772e5c79366077295e8031667c325c78355e7627637d345f742f55722a6477306784326c *83316b802f6d81367187407891567187356a864062803c5f7c305b773d5c7b2e647f2f6380375d *792f65782e718a426b843b607e3e657f3e6284416481406d8943738e435d8242657f3e647c3960 *782e5d782f687d2e658039658642638140608443617d3f6487416e8b4768854268823775874269 *7e33728c437287496883466b833a69823d6f85396b843d7085397389486f87456782416b87426c *8b4275883c728c45738b476d8843738542728b4571894a7e8f44768b4179934c6b843f778a476a *813a7585396f8544708942778c487b914c6f8739748b42697e376a7e36698543808b47728d4975 *8a397d913981963d749242728d426e8c4d728b3f6c843c7e924785964a859a4c8b97498f9c5b90 *9a508a9658868e4a86934f88944d82974f819149808e42838c36818e447e914f899756798e4685 *995287964b8ea0587d8e3f808f447f893f788c40738a427d8d4867843c6781306b8d3a6c88497d *9040778c48748b40788f4b6680446b88407b8636708e4077894b6f873d6d8c4e758b4c728e486f *8a48728b4769823d6581376b7e326e822f7089407a863f7785396780396f843b6b843c607b3170 *85377180346c85396d833c6a8332698c4a6c8d3f7589396d803058733076813077863e6c803969 *81356987447086376881326a813c6d76275f762658671f58722765792666803363722a61742a60 *752b5e762e5a6e285d75255e7b346284395e7e3563833759722b6b7d2f60772665762a577a3563 *7d4265762f66772b627323667a2c5f75356171295c7b30537a33506d284d762955712759792f66 *763363762e62722d67843a6584424c6d29506e2b5a6f305c712258722956671e637122616b2268 *7a3062812d647d2f617329536e2a5e6b27566c235065204460214d69224863214a6a2345662052 *6f22465d224c66245b6f2553712c5a6f26616a264e65254c662d4c6622496b295d773d5d6d285d *7c2f6073305e7d3d76843a76882e788232798c3f6f80336c873d6c863a608345687e336f812b67 *8037697f2f678136667e365a743374823c6a83426881385f7b2f67823a64843f657f40647d3955 *78315874345d7635637d3b5c763160742453702c586f2b4e702c5e7c365b733a7b9268c6cfceb5 *c2c189a05d586936536f39526f30486733536b344a6d35586e3a5771304f6c2f54713856723a58 *702a556e2e476e284e67294a7234456129446b3045662a526c2e496a32466c2e4e6423486b2b4c *6f354c672c4a672d4a6627516c264f672a4d6a2b456323435c1e3d5a28435f2a39592449692649 *652746682d486330396229365e2426471c335e242e521c3557272d531e3f5d1e455d242e4d1e3a *602c48642939652c4867264764244967274e6a34476c27516c304867274c783b53753b4d6c2c4f *692b51722b4c65234c6e314c6b285b69314d6d314968274e6a305674325d732b597228566e2a5c *742f5978354e70355a7b345270284e732a516a2c4e7134567236577d415c793857743e506d2447 *6a2f4c74304c6821587b3d5671315376325d79335674324d79394b722a4d732f4f78365477445d *7a325274325270305e814364873f5777274f70305e7f3f61834160813c5f83405c803b5e833f54 *813957792c63823c567d3753752d557839567932598349527830597f32577d3761813a54782c5e *7d3265803b698035597d385c854762843f61864b657e3f69813c638034567a3b4f6f2c55702e5e *7b2c657d2f648036566c284f7a2f5f7c315d7d324d732a5a772c4e6d24517c364b6f2c4a652155 *702f63803163803568853a577a2e5d7927587b2c5c7932596e274e662a5b7033597836587e3560 *803365843e6a7f316981396f8c44738a476d8643647f3a6481406c883b62813458762c576e275b *6c2d698136698842536d2e5c7c3b4d6f3a567a3333360b4740165c632649662558753756752d50 *7d405c7b31527d355e7d3a66803e6a7f3566853f557628466a2b57772e617c2f5f803253752959 *7225536e264e6e2d577831567d335a7526506f275c772b65802b5a762b577226527936486c3443 *6a32576d2b5a782e5a802e5c732a5973305d6a235e6d22617f335e792d58783160752559742663 *7a2b6a813a587b365f813d5f7d32657e346b8433698b3d6b83376485417488436d8641597f3d5c *80315d7e2e617f316b8a426b82376280306782346e893a6680356b863a6a85415f854256752d5c *782b607e2f577a396281316182355d823b5c823e64863b5878315b722a5f80394c77364d722d61 *7f3c577a394c752e536e255a7c3c56762f5379325d7d335d792b5a7b2f557d3457782c60823d5a *7a3057732c617f2c587c2d557423597836587e3665854353783154773257782e597d2d62863d5a *7d315c7d3260803357792a5f813264802f738a3f768c366a863c66843b597e355c7e32667e2e68 *7f2d65863b65853565883e6c8d3c658444688443728a3e69813464843463813a63813263863969 *81397b91446e893d64813a748a3f74893c738a37798d3c75924a6c8844718b476c8a406c8b4770 *863b69843d798d43718c44758f476e8b3d778d456d883f76853f738d3b6e8c3b68873b6f8b4273 *8d4765823f6a8b3f63864764893e718e42778c406c813465813b748b40738d43728d486b8b4369 *8c4068874162802b69803d76873b788b3a6b8c447389447091527f944c7d9246789044728d4771 *8d44638439698341738f5269863d6b90466d8c44768947768b476e8c4e708c4675925068894665 *8c485c80386a86337c8d3f5c7d2d6b853f668d47648b4976874a72874176934b708d40788e436c *8843768a3c748d4276904f7291496c873c72883b798d3f7f8f3e69873b778c3e758d467f944b7c *9140829a3e77954681954d8a9a5c879957829447809347859456879b5d859c548c9b51859a527d *994e7e924c83974e87964b7c95507d9647758542758b427d91427287417d93476c8c476a8b3f6c *8c45728d436a8433758d436c8b3f6d8b3e6a88436b85417689417686425c833e68843f6e813c67 *843565813b6e8442657f2e658443607d3d5f843b688636708a406984366b833c698b4166874374 *8f4567823966803a5e7e355a803b657e2a607b2a5f7c3358762f627529597c2e66853162833969 *7e33758535748e46768d3b738e406d8a425c7f366d873468873b6c7f317280336d894662823e6a *86356d873e648233638239647f2e64833c5f763659752b627e37577936667d2d64852e6684395e *7a27677a33698036607c2d5877325f7c314e73294c6e225675245470244c6b285067244b702e5f *7530577a3a4d772a5e7b294f7628546a244d6520416023566f2a4e65364067264c72295c6f275f *762b5869205c70295c7828466726507230486e28456a244e71264b6a22527127546b21496a1e43 *69244d6e2f4465273f661f5b792e5a722b5c7027516a25446526445e21324d1947611c4a6b214c *742f5f752a6384455a6d2b59772d517731566c30466b2b4561203e5d1e46621d47601e37581d4c *5e1f4861234c6624557b2856752c526f28586c2f46641e4165284b6a1f4d6d30546d2a4e672142 *602746612a445f204862264c67244a63253e63274969264b6d354c6b364e662d516c2b869c6bc4 *d1cfbac1c1849051546b364f6d3256733150672e5067305364265664305266264a58234f653047 *602a49592e4e622847652b5368324e6526435d26516d3948612a46692a4c5f254b64303f602755 *67264b6220475c20486227486b34485f2149692f4665294c68254a662c4055253b54212e51223a *5822334c1c30512438551f3a4f1b2e531e3151163551223e5b1e405f2a466728466b3d4b6b313a *4f284f652649642c5064264861264d6a3b4c642c516c2c5c7330556b2a5570284c6d315371304f *6d2e53703a3e5b24446024506827556827586c274b6426556f26546f2d5375386882425e7e395f *742c5c732f65752852692659722a55753755773a57702e536d305a6d27586c2a4e692e506e2f55 *752d43642d4c672950683358783165812d5c78304f72355576364e70384e743d476b314b643152 *6c294c682c4461224a6b32496f2e51763657773a5778415a7b3d527b3e49712e4f6d2f4b622d4e *6b2c4266284c6f315072335373395c7b2d577c366280365c76375c793c5773355179375d7f3d54 *78365e8135647a32617e3f6a85435e7b36617c3e5a7e415f7a3a6081335d84385f81305d7a315a *7531647a285d752a5b7b2f4c712d5076376387365779326477325c7026496c274b6d2b55753c54 *722c4e6c28506f28577934596d27596d2a506c305a7937648147648137587b2c5d7d2f64793161 *7a31667c38607532637f3a60813d6a833a6a8a426c914666813f6f83356385456486405f73335d *743d5a6d2c5f7c2e5d7b3a5e6a24586d324a6826566f2c576e2a65813a5c75295a7931607c2f5e *763b52773a5d743052753057732d5e7a2e627c245e823a6381415d7a2e697f375f823b697f3b63 *833f58773950782e5f7b335e7b355b742e677f326f84406686425f7e355c752a5e813e51782c52 *6f2750682a57753a58752c577327617c3d4f732f60782f5f75275f7a3259762e6a7c3361753664 *82365f752f5f7b2b5c752b5b752b5f7f37617d355b7c375d75295a75355d7c345574295a762b54 *742d657b3363783163813c6a89456d864564803267813c6c85396e874365834066803e647d3a5f *7d3b5d7a2f54722d5c7f306685375d792f5d7b345a792f4d6a31607d2c59772e4d753052763257 *762f54762d5d722c5a6b2660804061752c658136658940657d347086456b7d35687d2f627f365b *772a5e7629687f2f718e3b6b863d68853766873e70883f7582365d76326382305e7f3360833a5d *7f3a5b782c607c3a62813c627d325c7d305f82346584336a8c406086426c853b52702c5a782c64 *863c6c853e68843f6b8740698240627d3a7086376f8645768948738c426e8c4767853f7390466f *8e4570853974853c6e833c7084446785426a843c6782356b8837738d4074812e6d823d71863675 *89386f894372904b6b833d738a4b6a7f3a6e813f727d3473874f6c813b64813c738b436f8b486a *85427186406886357883337085416b823c65833d6e81336c844169803b69823372823f75894670 *853c6a83336f85406c8d4d768a3f71883f73853b78893f788e47738941708b426c854066833f62 *813d69823869854067813b6f7e39657e396580405e823e6b8245677d40637d3c5a7739657e4264 *7d2b59793257793c5d752e6485445f802b587123727d2965823d68893e748d3e768c4675934d76 *8e44768740748b3c75873f7b873d758c48698a46798945748d437a9047769041748e416b813877 *8d3f838e3d80944c7b925385944f81934c79934c789146718b437a8d447c8d457a8e4a8393437a *8e457c8e477d8c427e914180913f7e904e748c427d934a7a904b758d47768b4a7590406e893a6e *8847748b3e70904b7a8f406f8c43758b3d6f87327692436a8a456b87436c813d69834570883f76 *833d637b27687c2b6a883b698136697c376a7d396d83426e8537688033617f30607a2f6686386b *802f6d7e2e5f7a36577330637739637e3d6581345c7f2f65812e6a752e6479305a792958753057 *712f536b2b5f7f336d7d286483305e79285f752e5d782a6d8647617c3a6083346b853265843865 *83476b822f5b782c637d34597431557835597430587427527b3752773a5272344c6522526c294a *6a264b6c284e732b4f6a2047602341591c48601f446320465721394f1b476022485e1a46621f47 *631f4e6a284f622a435e27495c2247692b5264234d69283f621d4c5f1d4b60224f661b52702d4c *62234461234b5d224e601f526e1e43511847591a40511a415f23445e223653214262234662213e *581b43611f4154184257164f601f5b6f2b4d662f607330536b2e606e295a6c2748651d4c651f4d *63234060204f6c294d6a2a476e28556f2149601d466528355d24415e214f6c25406528485e173d *561a3e57184a5e2444632244652149641e4660265e70254c6f2a4669244660204762204d60243f *4f1b4b62234a5e1c415d264c6b2e4f67294c60294d61275666285b6c2e4b652e4e682d5a6d2f88 *9d6cc4d1d0b8c3c28196525b733352672a4f682a4b68284c692c4d6c2f4f6d3451672b4f6e2b4c *5e1f446a254c581e3e52224c64235b70394f6f3d51753e576827526b1e4a6b2c4d65264d6f3a3f *5c2950692d53642f4c672a4f68244a672449682c4a6a2a48612842642c45693343642d4563264b *6b2445662346632542652944652c4c6e344a672d436421446925476420516a234565254d6c304e *70314f6929556f3057722d4f6c2c50762e556d295575415d814c5c773753702d55773e577a3949 *6e27526e28516d284f72324d6e28517330556f2e4e72325a7d365c7430526f25577327516d2159 *762c5670295d7531627d2f4c6e28536c264f6420576a2355742b4769274965224c6b2c4f6b2d4e *6b264c6926435f204b6a264c611f5272294a6c2c4c6f304b6b2b3e5d245075344965254e6d2a43 *672f4c763f476e33486e2b4c6c2d486c27526e285c7e315f7b304e76315275324d6e3352703656 *77315b7028587d3a557e40547738506f295c7d404f722d55782e5e813b5379345d7f3a61803e55 *752d5c7a2c6080315b783159773355762e527933597c3f557537587534547432537630647e385e *7d2d69884266813a517029607a2d5d7c365e7e2f60834265823a668442687e31647e3a687d375b *793c4e6d2b5a782b5775275a7c345d7c405f7f3d667d2a6681306b81346685325e792f68802c5e *82345d803060803268843466813c65823e65812e5f813b63802e6d803b6581316f82336a824468 *823e61863a6184406f894472863a6985426f823a647930798a3f5d7c325d7e2f668130576b2b4f *5f225b7c41527c314d732356752b527629547934617c325c7c315c7d395f7f326681346a853b6a *7f32627b305c80335d772a5c78375b793568833e6880316a84346f863e6f8938627f366387405e *7c325f7e3561782d6076215d8039587b305d7e2d5a7a325c7d355d7d35527d3457763363853c6b *802a5b7128597733597627466d2c4f6d29476925537530607b2a4e75275e7c305579325a7c3f58 *7732597a335e7e355d812b5678265b7b2c55792f5d7d2f667f3361803e647d3c678033547a2d63 *812a668439678332688e4679924c7288416981376d853063843a607d3164853f65853568843a62 *7e3465843f6380406483405f78257083345d79366a81326e853f748539728836748a416e8c4068 *8c3b6b8b3a5f82375d8135677e3269843f72853d728a3d7290426e903b628436667f2e697a2a6d *81305b792e5e7c2c638136627c2f6a8b47578031587f3f6a853a6685426c883d6886426586466c *8b3b748d3c748d3c7d914b738e46798e426a8b45748d48728b44748f486b8b446e8b3d79904378 *925072914d6a8645748c437793416b8e456e8d3f7891436c86406a8e43759147768c42708f4375 *93457892497d93446e8e437c92487a8c467d9146788e43788b4472883f7d96567693527992446b *8c496e8845638443648243798d427c8c43728d44708c3e698a4c738940778b3d6986436c844170 *883b577e33607e3468813a66793565793269813666803965843e6b894367893f738a34728a3b67 *8a3f607f3967863b61823966843d63803172873b6a844567853b5a803c5e7e36587b3d54712d61 *7d295b7d285d7926698b3b60812b607c2d65872d627d3b677e316b7e3871842b7081326b812f71 *86386a8639738537718a49738b426a853c758c44799249808d41698c467791457d974d7f94507e *996280985480923f808f3f7a92497e94467b914d7b904b7c904a748841788c407a8c4071853a78 *8e3f6b883765883c71873d758c44768d4a7084406a883b6b8b44788d3f6a873b7b974c78934b79 *8f406a8c3a76934a778e437e95437d944b7b924e7a9147748f436889436a813163833a64813f69 *813f678036687f2f657d2a647c2b58772959772c646e2460752e57792f55762b54793048712e57 *7124576f266179285c74255c782d60792a5d78385c782c697c28607d2e60742a647a2b59752a57 *6a22526b20486a1f4d6a22527025486b274c6f2a5270215f782c557e2e55783054773163802d5d *7e3151752e516a244d70284d6b254d682147621a4e70204f6d2d4c6c285b7b2c60782b4d692447 *661d4d6a1e4b66174e6b1e4e691e455f1e4c5f1a4d642249641c4e661d49621f4f6c1d546f234d *6a235669224b6a21486624526a1d517027647620537c2f516c21606c21546f2750712f5f72265c *73214d6b22506d2758661d5f70245970275e722745612947641f516f274f67284e6b1f516d244f *6d224d6b2556732e4e6e2d5e75294f6d285c7223607624586e23647f31506c295f7232516e2a63 *78275c782853701e5d782c58742a526f2a536d2a557030476a3451692450601d526d264f6e234d *68234a692c536f2f55692b4e6c33466420506d1f5d732a53744157702f607a3c566c2e5e732c54 *6e33596f27577328516a2b4b652a526627516f314d672c516a2e5b78336a863a5a7a346077336a *7430859865c6cfcfb8c2c1729255556a38495f2e456a3c4a5e2d48682a465f263e5d253b622d37 *60253759243655274658233a532244531d495a1e455b263b5e2d4065264b6b2b506534496a2940 *6c2d4c6629425c294e6e3049702e4d6c2d496c304c6b303e6125436427446430365e2544682a49 *6b2f476e2d3c5f23415f23406b2939581d4361244864224066244765273e5f2744672a496a314a *753b4b692d476c2f4e6b394d6d374a6f374f6e26476e3051702c4e6c2c5c7930455f2b4d70304b *723149692b4c642748611f526b214e6e30546b2d4f6b2e546929516b314e6b284e69214a662755 *6b295c783657752d547034506b2a546f274868275172314a6d2943672d476b2d4e723e496f284d *6c2a4c702949712d4062294a6d335b7936526d2a54783e4a6c2b496d2a3e602c4a702b40642944 *6a31496a2e4364224c702c4a6c32436c28466a2a3f6527406129476e2e507027526d305270344f *6d274a6a3150752a4e72304e73324b75354b6c2a536e2953722e476e2a4d70334f6b2e50742f4d *74305576395c7e2e55772e607d355275365674294e7637486c2d53793b58732d607c364a723058 *72295b763356752d647c3f5d783a57752d5979365278305078375b79305d783167843d5c7c346a *8432527a32607e355974325b762e61782c55772f58722b61783053712f5f803b5d803c577a3c58 *7e3c5b7c345c7f3665893d6484406b8c415e833e66823c63813e69853b66813666823467823b65 *8c4d5a84485b8645657d355a843c587c355c80336681356785436182405f7e325b823c64824058 *7835587d355a7c3e5b7a364b6f3251793d5b7b3c4a6e2351772f5f7a2f4e6d2565772b65793055 *722a556f2a4f76324b722b5a77305b7e3155783256742866813d6382386485476b8737587e334b *6e266281326d8640637932587d435d7d3556793b517d325e7933657c31567431647d33627e355f *7e31587e3a62823c66813d5c77304b6a2d53762f5071304e7436496f324e783756703145692955 *7934627a285d762d59782e557e385a7b30617e3858773459782b6781376880345d7c375a7f3a65 *8139627d3c65804073863a657e356a88376b8a426b8c4373903d7490426b843b728b405e853962 *843a5c7d2f5c7c2f65843e5f803e6f86416e854160843c5778306b853b708e406a862e6e873a62 *843c5d833d6984376680335d7f375c833e57792d597e2c5580385c803c6685405f813e53742c65 *833e61813757772f5f7f3752804564853e64834062813d64813c76914f647c2f72874060843c64 *7c2f69843b688a426a8b465e823c65833a6c8b4065863c728d48677e407288416a88476d8f4f6b *8845758d466a863e738d42708c386a8a3b6d873d688944738c446c863d68843b6e8c45708c405f *844461803a63843f6b8c4069883c6f863b798f4a788b4c6e8541768c41728c4778934f728c4176 *8d3b7a8a3b7e914577904575935479904a759048798b436887466f854267833b74883f6585425f *7d31677e3a5d7e325f7c326d8a4362843c6d8041627e3f6579325e7b3a69813a62843c657d3764 *7f356c7e3e6b853d68813b648545627d3c5a7b345f7e3c617b396c7f3265863f66823f5e772a52 *722655752f5f793b5c7534668039637c2c577c3b62802d56742e557b38607f44687b33647e2f5f *84385d7b33657e376d853f7385396984346a863b728d407b90437592466a8b46738d4171873e78 *8a4179944d718c447285386b8339738a3b78863d6b843d7789436f8a36758c447188396a863c6b *883c738535748c42698332647f34657f3b6c823d6d82406c8d426d8e426e86387b843b748d4373 *8c4267873a678b3a7188436b853b658a41668440758e476a864360823d6a803a6c803e687e3762 *7f34627a33697c346a863f6c873c62844065843c6f8945627c335f783559782c5377325a7e345b *7c3c59752d648034607f385d7a3762843f668642688b425f772869823b7286456281306281405f *7c355e79334e7736577f3b51722b4f6f2a4c66215c78295f782f5f7d3766843f637e33617e2f55 *6b1e58732d61792958702559782f61803d637932537537617930697a33657f3c5c7a3168803666 *813c5c7a38607934627b2d5e7b265e7024506423566b285e7933526f2e537635607d336f7e316d *812f5c7730698132607e366a803d657e3c677934697e3268842a6c81346071285c712c697c2a63 *7c2e52713157722e627d3c66812e5c6b285f753262762d4c6c2d547e3764782f5c783863772959 *7c2d506e28576b295c7026506b23536b2555712f526a29556d274f6d2963782864762a536c275a *702953712c4e79315d74295d7e3a6a782e61722460752f647f2a4c6f2851732f536e315f72355f *712a62742d5775306375236075305576304c6c2f5f7b365b793d617b3d6280405f7530627c325a *7d36476833546d30586c33506c33576f2e4e6a335b793b556d33506d344e6c2b4e6c3a5271375c *753f647b36879a69c5cfceb7c2be7482454f682f445f2746643451693039582746652856763f47 *5a223c571e3459273957273f602345652c4363264b672336531e476226486026415d1c3a602747 *5f25436526395b24415a283755243c5720486428375c1f3b571d3453173b521b3d5e2943672b41 *6524405b22446123436219406422395e224561254562234565274768274e6a204c60204468294b *642e4f652243672a47652f525f245167264c65293e602038602c556a294a672b486d304a69324d *7338496b2b516a2d536f3244601f425f213a531c44662a495d2750672453651e455f1e425a1d3c *571f4a6427405d224862244564284e72244a68244561203e65214768284264234d702a48681f3c *662b42621e4b6526526d2958752b50742951712957792f4d69284466233f63244461274c652242 *611f40652a4d782b3f611f4d6d35526a234f67244d642247631c516f2e49702f4b72324a6e3141 *672b4a6d2c4f6e2948672a4f6e274d732f4e722f4d6b2a426d2f486d2a4c722a516d2245652348 *661c4b68284a692649702d476d29486f2d5376305b742d4b68264669304d702b50752d55752e52 *78324772275a762c5a7b315d803a5c7d306386485881446485416286415d823b587a2d43612054 *6b2757722f527534657f34617e34658441648234627c325e7c3f5878345d792d64833a617e305f *7d3b5d752f597323647a3750783b617f3360813864803f66803066873c6e8d3f5b7e3d627d3360 *7e2b607d2e63843360833a4e75295e7e3651742d516e315b7b40506d2c54752d58752a57762f5a *78365877344f732950722c567527526f29547730567c3b507a365c7c335d7c3e637c366d813c69 *813c5e772d56752c58772d5f78295d752e5c793b5b77325b762e627b2d6b823a667d3568833c63 *83356081376a863b65812e5e8032607a2d637b305e752f66863c64813c63873e76873b60813a64 *843d647427597a3164792b6d802d60762865812f698a41587d355f7f376280375e7c37607e395a *7b306b87426e843c74883f778c43708a3e6f8a426f833d64782e5f762c6079305f7528617d3456 *70295d7a33647f2f5a782e587b335d792d62843d68813265863e728a3c738c3f758b3b728d406b *893d6c8432688a3569843a6c852c67832f617e2a67822a5f7f3364852960822f6885375f7f2f63 *81305e74255b7d2e5f7f2b5475265d792d647f365c7728647b2b647c31647c336e842e69822e6c *87405f7d33677f2b647f326d8a466e83316e873a6b833262843e7482346981366a812b697b3266 *8239798d3b798d4377873c768c48738b3f768d52738943708f49798b3b7690477e8f3e758e4275 *964f788d3f809450798f4d778a3f738c41758e42778f4b788e44758c4083904777924776924986 *9851869751839349798b3f7891427c91487e92448295537f904a79924b8190457a9045768e4087 *974779914379954f789649859a5684934c86994f8a934280904c7c904c728a3c768e5070854379 *873c809143718b40788d43748a446a8740738d4d738d43758a4569854171893c6c853a6e863574 *8e3e718e446c853f6982406e8b41728b456b8a437584357488416e7e30728c4265823467823a6f *89446f853c67822e68802a5e7d2f5d7423607e36627c355d7c3364843e64833874863b75854377 *8742627e2d67863c6d873d7b8a40718b3975904773863b7487436a863b788d447d8e4777904776 *9044859854778d4476883c72812e6c81366f833f677d35788d467e8c417a9045768e3f83914a85 *944585923f85954481954577914c788c45748b45788d48798c486d8a48748e4165874071843273 *8d40768e436d8c406d893b789243788d3c718b3f6c853b69874764853a75863a738834777b266e *81435867245a652067813069863f74894370893c6b832b71833b6b7b2a617c3b67833b65824163 *7f2d6e82386b8234698436697f3467863f6388406e843e6d84386982406a8440708535607d3068 *7d3267802f637d307085336d8d456d8c4374873f708b4969873f6b81346582366c863f5c7b3360 *792b5f813b667d33748435677e36697a3163813e68823b667d3761823d63823b5c7e41667c2e71 *802e657a2a638237667c2b6d8233618534647e2a617f32627f2c5c7a356b76285e7b2b6e82366d *7e2d6b803568863b6f8833808b3880863167823f6e7d227084406586396d86325e8133647c335c *7228576a24617723586f20647e2872802d69843167842c6585386a722e6578306482345d7a355a *772e556e26527227566d205c74245d79295d782d64803963722c5b732f61772c5f7f325a7c2d5f *7f2c60762c55742b60772755752a5d75295f7128618137577039586b235c722c536e2a5b762d58 *7029637d26667e3b5c823d637b385f7c376783345f7928647322576f2951732d526d295772285e *7a2b5d6f31526d27506b254a67234a69284b65264b6720516f2b5c702c576c2d596c28597a3369 *8039596d2c507231859766c4cfcdb6c3c1748a445372314f7035506f2d526929495a2a435b2847 *6428445e254f6b284d63203c5f27455f2d4e6b334f73374e64224d6b284e6e2d47652247672547 *6a25426b254d6c2a4b67234968254b661e3d68233f5f264564233e60294765253e5e2241611f3d *5c223e632a3a59254165243c6126406327435e2242551d475f1e4166234462223d5f224960234f *69264366284d68294c6b2a4f63204769254c67263a5e243f67304b67264a6a31486c2e44692b45 *6626426432476735476a304f733158722b527022466d2a4c78345377314f702a4f662345662a41 *5d1f49611947621d4b63214b6927426021436222406225405b2545652141661a4869233a5f1f4c *6d2847642a486d2f50712c436125446725425e1e456429406427486424476926476c2b4f70304d *712c426a284d6a2a547126476d2d4e763252752e4a6f34466b263b6424526f2d496124445f1f4d *733a526f2e45682a456c2b486e2c4a6f29507430506c2664823f557125587b344b6c275c742d4e *7835537a2f5c7b2e4c6d2c4f752a566f29506a284363274f6d3055772d4d7c30577d37526d2658 *77354d6c2a4f73345878344e76354e7a3a4f753263823f617432647c30577d38557e415379344f *782d637e34608233617e3654762f5a7e2f6574255a7e3c5d783764823d5e833f63833e62823468 *8237688030667b3062843f61853f6a863566833d607f3c6a843868812d62863a638031667f2e6d *86456b874263832e687d2e5a7c3669823f64803d617d3156773b5e7d33607d2a507d306188315b *7e3d5c76306780355d7e366583405884415d7f3262813d5a7e365e83476784336f863b6b873a6b *86436180335f833b5f8032658130668436638237617c37627d305d7d35618035647f2c5c793256 *7430658330627e3464863b6485436c863b6f8e407288336b87366985406a873669894060803c66 *813c6082436b81335f7e3460803b6c8a3f69883f5b79325979284f7d3d597c2f5778256583306c *853d608036647a2a5f7f355d7f3d6c8a486b863c6a8b41748d3e70883a6b8c4265853769823969 *88436889416e7f2b617c25627d2770852c68803a6d8d3e698233738d3d6e8d416e8635728d3b69 *8c44758c457f8e3a6a8b3f6c8b416e93467592486d8631798f34758f3972903e748d3a7895496f *8e49769045688a466b863c77924a7c914e768c3e728c3a778f47738f497591497e954f80914683 *92428096467f944a7992487c924781994c82985387984c85975082914889994e85964a859b5682 *9f608c9c5c889a4b879b4f87974f8c9949899c537f964b81984b8398478497478b99477d92477a *9243829748798f3d82944d8496477c93497b9047778d3c728d4183964483944a8399517997507d *944a8094467e95507d98557e954f879949889a4c7f9146788e477c924c7792468193497e954f7d *934782943e8292478193458293488b95408c9a4c8096467e933f8996528597488292448396537f *9247788e487c954779934879935172924c75914b788f4c768d3f78924b8094497a893e7d8c3f7d *9346758e3e758f41768b41768d497590436e8941788b436686435c742c607e33617c2961782a76 *8c3c6c8d446f863971822c758b487690476c8d446f853966813860802f6583416d8d4a67874677 *8d42738b40738b34758b3f768b3b728c39758939758f4b6b853a648b3f608331708c376681426d *85316f8b48728e3f758f467a924b738a417088397b9141869c5b82904380893d798e44778d4671 *8e467594457291487a9444799147789044798d427c9545798d48788f497f8c3e779543778d2e75 *8c3d7381387b914c758d426c8b4172893f79913d7d923d798d3c7c8d43788e3f8096438497427a *934a79974f708e40768f417d8f416a84416f894366853d607f3772833a708a3e6c843667803970 *843c65843f73883e6f88436b884069833a6c893760792e6c84366984396a853d6b8541627d316a *8534667c35677f2e677e2d65832a69843d6c85386d833d6e7e2a7183316e874465803567863569 *88436680356d8941708842738836708740708b3a7c8a3b68893b668030628338617d3b65823a63 *803366863b677f2e6886336481366382336d832e667d326a7f3562813865853d6d86337084326b *893d6585406c7f306a823a627e306e822e6083376d873c617f2c6f893367822c6f802e6c7f3464 *803962793669844450712e667b296b7f2e6a8135687730647d37617d40587e3568822f6b86396a *87366e893a697f305274335c772a55782d5d7a375f7f2e5572295471295c7428586e265a762a57 *792f5473235874255a7228586f2553722a456e2f54702857803b51712e556e2c5974325773284f *74265b72255773245d742a5570284c732f6a7a2e5d6c2a50712d4e6a28537331576427536a2a4f *732d4f6d244f6923576d24465e224466245b6f2d617a3557733256722c537832637a32677a385c *76396f813a657b40637335839868c3cfceb7c3be6f86434e632c4e672f47682e527237435f253d *5f23456c374861265170344367274d652a43643443662d5871324f6a2b4e6f26426928526f294e *6e3b52702a496c2e556a1d4c6d284a6a2646692343641f4b682943692744602445622f44652149 *662546621e44621e335017405e1e425c2249682c4b6e33476928476826495e1e45621d47681c45 *672d506d2e546c2b536d2b496e294d702c53681d4c6c294b66264a6121475e1f4663213a5c224a *6c304b6c29485c214f6a2648672f4c6b2b3f642b3e63243a5c1d4467244a69274d6b29536b2955 *6e29455d1a3a5f2b3e5c224161223f5b1a44652541652047682744692949682b4365223f672846 *6820456426456520466a26455d1f3f5c1e3e642f3c6125476d29486e2556782a4a68244e6a2a4c *703750782f536d2d486c2c587a384f792a577e355a752e53712a526f24486d334f6e3745682457 *6d25456e284a6a264a6b2d41632542682852703143672b4b763057772f4c70254d6c2a4f6a2b4d *732b5e77315d7e35687f375f7e345d7e2d4f77305e77325c6e276483405a70275a7b3253773053 *7c326382375d7e2d6084336d7d35637f31637f3e6d83366688475c7c2f5a7d2b6c874a687e3c68 *803267843f6b8942688441758a436c80375f803b6e833569812e648439627c31688036627c3265 *823b62833e5e8139758c4172853e69823560823369853662823c5e813e608130698a41768b437a *8f46758d4b768e4a6f88427284366c883a6184395c78315d722a58772c5a783952752c4d763159 *802f5177254f782e5b7d2c67813261803d6486415e7d34658744698435607c3363864068853768 *853966843a61854063813d577c315e7f396b8c4465874264853b647c325e8239698a3f6b8b4369 *8f476387426f8d436c8c356c873b647d2d6783335f772e5f7b2b5b8039517636567331597e3261 *782b5c762e5d7f405c7e355b7d2c52752a59792e56772a627c2f647a2e5f72275474295a6a2063 *772b62802e6b85386d8837718b477087426e8d3f709149708a47768e416c894078883d798f4880 *974e808b3d7c924779914d788c43778d447a8d48738f40778d3f7d8c427d904380914382954d7b *96488093458492487a924882984a819741778c3c7b9241749143778c41779649798e3c75913f7b *91428193447a913e7a91407f944683994e889a5084984683985085994c83994c859b598497428a *984c8094448397478c97447a964d79944480974a8193438699498aa150859f5c89a15988a15687 *9f4c8da04f8ea0518c9e5a8d9d4e889c4d899a52869a4d889f598da15893a451909d4386934389 *9d5c8b9b588b9c50889c4e8899528d9d4f8fa051899949899b4e8494428a96468094478391427e *953f7b954580913c7b91448195467891438898457f97467d95447e8f3d8298497790427d955281 *93418297487c954b85953f809641809748829b4d849a528899568d9e508a9b4c809a4e85984c87 *974578964b899f5784995281954a82944579913d83954877964a7a954375965175924b69853a7e *8e448291468392487892537694497892427a92438195467e9549758e47728e496c8b426a7f346a *873d7187356f8c41738939718d476b8d476c8a3e688c4d748c376a88436181336e84386d8b3c79 *8b3e7c8c49778d4c77924670894b6c863f738e476d8a437589406c8c446d8132768a4169874569 *8c4069823a74903e74904475914b788b3a788d4d768c44759053748d4c7a944b7991477a8d4674 *8d40708b43708c427d9050718a41738e42668d3e6d90437d924e808f487a8d4e79914879924b76 *8c3d78924c748f476e8c43798a44758d3978863a79994a859451748d3f748f3d688c3f6a853b75 *8a426b863e68863f788a3e73964c78944d758b447f954670883867832c6f87367a8b416f873d65 *864260813c68893b7a8a3f7d964c7d934e758e4a749149778f4b7c964f6f8c48698d3f7688346a *823a6c863f6c8c416d7e336883396e863f6a863a6c873c718b41778a3572853c6d853a6c894067 *7b39768a406f873d7892497f90467c8f506985316d81366a7e2e648129658532798f397b914365 *863f6a853273854272873c6a8849667c305b7c31557c316781325e7f35647c37687a34687e3663 *7f2e698333677d3568822b658941647d345b7a335b6d2a527128506c2062772856732d60762b62 *79326682386a7c31687e40617936617e335d7d2e617625647b2761813c5f7a2e688332607d3965 *7f375f81415e7833647d28627b2b6a77296a792c5d7d2c628031607b3359782d566e23576e234e *6e2a5a6f21597c2b55712f5370274e6b2a546d2856792a5d6d235f732a516f2b607525506e3053 *752c5773324e6c2c556d2c5d762651752c576f254f712d5971244a64205673345469245970285b *7527647a3a506c245f722b58732651713659712a5170305878365678355e6d2557733363772e63 *7d36647e3f697a365072385b78378b9d6bc6cfcdb7c1bf688347546d31536f314b642d4f713448 *652a4c713f566b2f4c6d304f75394f6f2d5672324e652d5070394b703a53773d506a2d42651f3b *501537521f42611e406228526c2948662a516a2d4d65283e60224a6c1f4c6b274668263b58233d *5b22455f2d3a5922435e20455f1f456a2743611c47642547642d4660284e67284d6d27506c2455 *702c5f6d2a4f6d3b4c652d50692d4a6a2c4f70314e6b2b4d6d29546f23496b29596d2653622450 *70304662214b5d203f5d1e4366233f6427435e213c5c1e4b6521405e24415f294c6a314866244e *732c4a732f4268294667264768283e65313f6128345e263d652237662a466f2a456a2d456b2641 *6221456c2f3d653046663042662c54722c446627446b2c455b2144622739613251703b466e3a48 *7131506d345069244c6c2c4f67254d6a2f5772366a7b3753783b4d74365e80386180345b7d3751 *732f56773555763751772f496a26496727446a26576c295e70295a742c5e82454f783d587f4567 *803458752a4f752e5c7e3a546e29637d405c7c345a7a356d8140628136618645677d37537a414e *692d5a7834608148678c546d8940537c335f854361813268792f697d3c5f803e63843f5d783e68 *81366a80366982416a823f69813f627a28627837637b315e7f3f66813c687f305f8133637e2c6a *823c69853d61833867843a7a8d44718f4674904a7189406883396f84416587466b7e3f6a844468 *8643708a426f8d416f863d668c417f9248718e495f7e3361813c5f75365e7c3c68853a62844064 *833a6a813e65863f6481395f843c617a2d59783467873d5f7a395c7e37597c335b813f5c7a3861 *7e315e804060823a507c315d80385c7836617b305f792c5d7e3d66833f618142597d3268803767 *7d376b853864843d69823b65863f5e86476c8a42728c3d698e4b66844263814863824263873e5d *76295d7d3a5571276685396e89446b893f6d89476585406886456d762f9c8f247f91456e8b4176 *8c407c934f718e4c738e4a7695527493597d954e798b42768d446d8e45738a42758a3e728f426e *8c46718d4a8195508098527f984d80984d86994f81984e859e588496537f975084995883975185 *9a4683954885984d879b4e869b578d9f4e8d9a598e9f598c9c54899b5283985284944b7e914082 *985d899759859f5d829a507c994e899b508b9d558f9e5a829347889b5287954e889c5c889a4f84 *99458b9c497e9a517f95477d8e3e7688406e90497391487c8a3a7a8e3a829a538d97468b9a428e *a04d95a2558c994f869847859a5482984a869743869a4a8596477d8c3b8b984889a160909f5a87 *9c5b8da25591a053919d5c8c9b51879b508fa15a8ca05c929b46919f548b9c4f899e5d91a25c8c *9b498e9c518fa15f94a46994a15d8d9e628d9e4c94a15c8ea05c899d58879a5a8999518297518d *9947899b4f82923b8296458598507e93448b9a4f86954c859547859642869e588096478499497c *964c8da0528d9c4b8d9a5392a0578c9e4c829d518497487d9246759144849e5981954d80934d84 *934580923f7b954883974d8193497f944778904579934b849c508394436f8a3e788c436c8d4670 *8a3f79934e758c49748d447b8d397e9347698c426d8b34758c4781924a758f4678904c86994b78 *8e4e7f9242779448768e3f7b8d436a873a738c45738c446682326c89396b8c3e789141768b3a72 *8c40818b3e7b8d4a708c4972914d6c894068832f6f8d3d7e90447a8f4575904a778c417b8c4785 *8f43748f4c6d883b6d8f3e7585357e8d497d9046748e44768c3d789147829344808e507b904374 *8e4b77894e758c4a6d84417a95508598517d924282974c78965a7f92507d8b487690466d914e7e *934b718e40758c436a8c497b914776914a7f934978924782944778924a759147748d427b8d456e *8943799047758c467a9043768e3f7690447c93437893507c92487e91487a904675914d738d4a71 *8c44729250798c3a818a3f7d944a758c4981913d77893d6d8e4e647d3b6e87406f873d798e4374 *8735808d3f7e934c85994c758f467b8d3f6b843c708a4078934867843366833072873769853f62 *7a33607d38768b40708a436f863f6a7d366a8235677e365c7f34587c325c71285d752a59743758 *773466813964823b4f7b3e5b70285b7c31567b305d782b5581405c7d335f753c556c2b5b6e2850 *712b627a2d5a793b627b2c617e385a6b29626f2b567530526c2e5d792e56722b5d782a62782d60 *7d2f5f793257762d59752c577b314f762c627f3163792d5e792a647f35647f325e74276171255a *77345a772c57732f58712f576c2b6171225f762b647a33567326546b1f58712f5d6c29617b3360 *712d617d335d7d315f6f36647b2b6785465e7f3a5f7a37526b2a577b3e647e3958742e5d74374c *6c30516b34506b2d4f6d2b5a6f2b56722f566c2a536a29596f2d5a722e566f2f5c712e5a702f5b *6c2f65782d627c32667233607b3d5e7a3b81996fc4cfcfb5c1c16e8c5052793d476938556c315f *7330536f374f6c2e5677395c7b334f72354d69284a6d324e6d28566d2649682649682d4d722651 *651e4364294c6d35577330526f2a4d7034567432526e325171263e632942632845602b4b642544 *62274765233c611e4a69274869254564284a6b294e672c4865224967204e6c254d6e274d6e234d *6f3a4f6c2b4a6d2b526a2a4c692b445c1f46631f41662b486525536626486821436726475d1d47 *60204966254469284965224a6327466421436627456a344869214567244871334d6f2552702a49 *6f304962274967294f7134416925446a2c4c6e3444672e476a2553732c4d6d2c436b2b446d3348 *69294f70264d75304c6a274d6d304c6e2e4c672c4e70384c702f48692858732c4f7330637d3a52 *752f55783957702f5f79375f752d506e2c547c335f823e54752b5a6e265c7a305a7a32576f2d52 *7c405475385b7d315a722e4e733150762f55702c4d7131536f3054692b53742b5879375177355b *7c38617e3f60844069854267833260813b6987406f853d647c2c4e752e597a3c62792b526e2d5f *82424e75324f6c2a527531577c3f5c813b5e833765844062813b5670265d75285a7a325c7d335c *7d3660782c516d305074325e813552722d5d7b3c607d3c6177365a762d6080335e802f5d80396a *893b617f335d8034668233647f3b618036557726627e355e80305a7a36698130617e3163742e5e *772c6c83395867275c752e5f783d627d305d7c315f823a6a8840587c34547735607d355e80315f *823b688643658540768d477a8a3f76883b6d85396a893b67863f65853c6483396382386387375e *813f65853e6380406f8a496585406483376d853c67833f69834275883e66843a6b823862823d6a *873e6788486e89406b8a406a863e69833f597e366787425c7934607d356a87456a853b66843d74 *8e4c65803a65813c65823a5d793563813e6c873f69823a6a8739748a377b8f4580924071893c78 *8c40768f44768a417794487591457d914980974a818e4085984977955478975478964e829a5584 *99527d97507e985077954d829a5b83974a8199558697488b9d528b9d558e9f598d9d5c8799538d *9d558c9c48899e5b95a35b919c508d9848899d4d81974e8297508d9b528193497e954f8d994186 *9648929f4f8ba05389a154829f5f859c4e8fa2568c9b488a99448c9f4e8597488499428c9c518b *9d4f84994d81974b86944381954885944180923f80934486984a839848919c5187974785984f8d *9c478d9f4c8f994a85983f879d518899478d974581904387994882903681923a7e913f81934376 *903d8696477b934280903e808f3d889a48899238879b4587964089994c889847879b4d8095468b *9e57939f52909d4f8fa04e8d9c498a9c498f9a4e8f9e51919b509098438e9d548b9846869a4a88 *98458c99467a985284984c79934486913c82984c809437899c43819c5385974785974d86944785 *9847758b3f6f8c417c8e387e8b407e9238779243789346768f49728d3f7494497b934382944379 *9040758f447f8d3f7f92477f9147758b3e7e994979913c7c934b7e9548798f437b945280934f7c *94517693487e954c799345778a3e798e3f7d9241778d3f6f8d4481943c73914478904e818d3484 *9547869347798c3a819249839658819543768e407890407985337e8a3c81913d7f984d7d924779 *8f487f96438190427e98477e974f78904878914b68893d738f45738e3f7b944e7a954c79934a71 *914a819145718d45778f4269863c6e854174863a778e3f6d883c6a853b7d8c4268853f778a477a *9148728d4276873871893f7b8f3f728a3974903d7b8b3772894b6b843f708c3f7989407e8f4175 *964f8192427e8e4d7a8947798f417c913e7f994881934884903e7d914279883c77944e718d4873 *8c47788f427b903c738e41778e3c768e466f87456d88436a873e7188457693436e87386d8d4577 *8a47768b41728d3c7191467d964a748b3f778c3d7a8d456c8e4673883d708a44768b3b7b924771 *90426b8b476e88406d853a7d8b3f798d3c7b8d3d6d863a6c87376a7f356a812b6a81326a863c6a *842565802f5e79326280325a7f3a5f7c386b81375b803859712c4d6d294a6e22496b2755712e55 *6f234d732c5274295c73275372224f71265f6f294a6d2d486222576d294c6e314a663055762e5e *7b2d5c702054782d4f6d264b6f31496321506f294f6f2356712a4f7a2d53762e5668285877314c *6722506e23536922576d29536d24537729516c284f6c244f6e245b6a215371274e662264792859 *702e566d234b69255d6d264f6725536e294c6a2857712b5772314d6f254c692e536c2a42642065 *812f59793761712a5a702a57703357601a526d26637f3d4f6b244e6d2f4869284e6b3351612b55 *68234c6c2c4f6e274f7429556c2b506e2450632345692a6577344d6a2a526f2e5f732b5571284d *6a2e4d6225495f234e652e4b622f445b1f475c2174875bc4cfccb8c1c1788c57607d4b53712f5f *72384e6c32576e2d5272315b6e335d6f31566d33506d304c662a44672d47612b47693042662e4e *6a2e4c6a2e43642c4c69264e753254723755723352722c4c6b294e66284f6926445e1e42642549 *6a314b682e435c254863254e672a556d2c4d5f264567274266294a6b2c4d7135546a294e71334c *652a576525526b34506e284d702a506825586c384b632054712e58772f576e294c6d2c436b2b4a *652a47692d4b6a2a52712c5d712f5069214e70274b752a537936527c3f496f324e6e31526f374f *7130506d2f4c6b30496d2b48682b466c284b6127537136476b3659772e57762f536d2d45642a49 *6b2d436a345679334c702f4b723753752f53722b536c2a5272344e75375e7f37647d3367853b66 *7d2f5878285d7e345e762d5571285978325c793656793660813e577b3d5f7f3e627e404e753246 *6d245276345f803f4f7a3e4e70375176324e702751702a50763f5c772e557c3950712e556e3053 *6c335476345a7c385c722e51732f5d77325e7f3f6985486486425c7d355a782e4e76295374345a *6e325c793b51722f4f6c28516d32486d275472274a6b2351732b4d6626526f3155712d55733046 *60284c5f1e43692e4a6f32596c2862732d596e2b5b6d27546e2855723450712a6378265c752a62 *78305a792e67813e687c337f8b467381346d8437637e336b7f326581396a8135698032758c4568 *86426b85427a8d4265833f718d486a8c4569874f72853f768c495f8037527e3e5d813a65803d5c *782a657e34587a35677830687d3e60814d5f7c2c6987426281435b793158752f58743a5d783a51 *773c597a3f607f3c5d7e3b637b306b8031577d3b687c2e5c783c5c76335b793761792766823f62 *80395f7f34637a37678237627d3b65804268813b6a8437758c48758942758b446d894868823f75 *893e7286416a8c426c8d436e904c6f873b72823b658442637f4170823f667f3b6b863f748b4171 *853d748a437d924c7a945780914875914a7f96537b8f467e91478592447d96538094487e93456e *8d44718d4c7b944b7a8d4380914676904d8093438593477e964282964274934880965086995590 *9d5889965186984c86974d819950839b55859b597e924c8192457d91448f984c8c974885954794 *a14f869d5b8b9f5491a1628d9d4e93a0568c9c518197477d934b748d42778b386f9047708f3f7b *923f829c50859d5a829749819b5a849955859a58859b52829b51859b558c9b548aa0618ea2648f *9e54939a4e94a45295a45b969f4891a2628f9b51879f5f8b9e4d86984e8b975386974e839c5186 *954c8b9a4f889b5e8da15b8d9c59959d4c8e99538999488f9b528b9e4d909e53929d488f9f4d8a *a15c8e9f598fa25f8ea05992a35c919e548d9b46919d5989994e889547889a4a83974b8c9d548a *9c4b8f9b5489984c8693438398467d95437a964781964b84953a879749858e3d86954889995287 *9a4985953c87944386994c7b9041818b3b7d8b3a798b36728b3871853075863d76863f73803972 *883b6e80357386386d853a728b30788f3e6a8c3f6d88407690456d863d7783376b8b3f748b3d74 *90476f8b45758940718a3e688d456b8741728e49768a436c7f2f62843f608030748d407e924882 *8c3a6d853b728d32768b39738c40708b4a8693467c8c477e92577995588096527d92487c904879 *9049768e3e7e964d7593577890437b924c768e4878904b728b466a90466d8837768e4478893879 *904a758946788a3f758c437c9141798e446f8d4a738b3f758f3e6f8c46608c496a8a47708d4075 *8c396d863c68873d6c86416d853463854267864366874067893b7990476a87406582456f853d74 *8746738e4577924b6a8c506b883b70834061834368863f688648698545788a428ba06c6f8a5165 *7e336d833e647d38687a34608342697f3c728945738843688340667f3b6e883669823568813b6c *7f3b6b85426b89466b803c6886426c853668792d6b8a45768a437d9141728948788b4471934e7b *9041768d4c6d853b74833672864681924b798a396d873a67894270863d6d8034697c31697f3065 *7e346282375d7f36617e365d7d325f79355e752a6776276380345f7f395b772e5f7c2e5f803466 *8036697e2f5f772a607a326078345c7b3e50773561792b4f6e2850651a4a6423506c2654762653 *69275270315c712b56722e5271285775256271275072314964274e68264561284f6c2b4f692850 *722a566b2347642b5674374a642c506b30516b2b4f6b2d566d2d546d225f712855732f62753058 *7936606f305f6f2c526e2a597126627b3065772e5b733462762e5e71345373354f6d2f597e405a *702c64712a546c285a702b5174285d7e2e5e7731557a3f5c7a39586d246679316076314e682b55 *69254f6e294962274966244c5f1e5368245268244b5e204c6423566a294f6e2c4c68354d682d4e *662e4d66294f6a2b4d672c5e7434516f284e6c32596e3181946ac5cecdb7c1c281873d6f7e3f5f *75305a73334c602b506c30354c1d415824466833436430566a324d642e4661284d6a294b6d354c *6d2d577039576d2f53723652733153703a5b6f325574364c6f3354722c516d295575324b6a2e5a *79365b6e28546b254b6424506b2c4f692b4a6929506926516b27506d2f5e742b4d6a2a4d67234e *692148662b445e254e692e4d682a506d2653702b496c284b692a4d6922506f2e536b264c723151 *7236516d294d703450723a50742d50723655752e53752e537c415c70305f7b375774324b703254 *77334e733c506d33446629506f354f743a5178325a7a3b517333537b40607a2f647f3b506d2f4f *70345274364c70295a783550783a54772f5e7d37577d3f5b762c57752d4d6d2f547a3e587d3f57 *79475875284c713250753351752c52752d4c752e537536496c3352753b53702f506b284a753551 *773d5774305c7a3c5f7a2e5e75346077345d793b577c2f5279385572345475315576324c6e2d56 *7a345c782e58762e688337718336667a316180386a772b68833a71844265823e6a813c6b874466 *85467089436d8843758a4467823c64802d5d7f356f8038697835607e3f5d8131638141637d415c *7932677b34647c3d6273376e874267864270853a6b813772884874823a6e843f72853c718c4d74 *87406888406d843b6e843375853b7884397586377a8544718a46758d4a6983446d89466d8a4879 *89446d873d798d4c758d477291486f8d456789457186437083427b90487691446a874167813f67 *87416b88486a823a6d8131768b4468853f5e85405981406f8b46668c4e678a4d6f8b3c7089436b *853b6d853c6b8d456a88446a8746718d4675914b7187417f92507c8a42768c4377904f748f496d *8b4c688b436e8f4f798b45738a426d823b6a88437590447390497992527990476f8e43718c4470 *8b36748d416b85436a863f728b42698845658545708c4273914e768d48758c455d85436982426a *823d64853b688544788c416e82326784436d8b42798f44778f467290458191427c904684964887 *974f85934979924e82974b7e974779964d859647809b4f899f4c8e984c869b50869c4f859c4f8e *a25d88995f839547929a4f8f9b508c9c51919f5495a0628d9d4e90a15492a05291a1568da0528f *994e97a2588f9e4da0aa749ea96f8da05491a04e8f98548996497b8a3d788f466f8a436984396f *8c47698736658a3f7690467e8b3b7691447490407189337790467591467f974d899a4b7e9a5282 *9b5c95a35c869f578da05c8d9e4e939f60909f5d939f558e9f55969c51909e578b9f558c9c518b *a05c8a9a5495a25691a3538d9c51909c5292a061959a53919d4f909b4991a25e93a26497a45c9a *a55b99a35f93a16191a15d959f6096a36095a05b98a15392a252939e55959e5993a55e8da25b92 *9e4f909e4f819b51909c4c859c4c84974873873f7f954482964480923f81974e879b4986974282 *9b4c919c4e92a15b8f9d59869d5281994a8b9a4c8499538a9a4c7f954877904c81914b7f904576 *90457a9345779145798f43729045718e4a768d436e8e407b8f3e768a3972904975874071833a70 *8a3f75873b7188417d9144748a356d8a3f748842748a436c8a3e758d47798a3d62832f6b8d3e7a *9149788b3c7c8d3c758c317891427b8e3e728d48728a3c7a8e438091437e8d447d94507e97497b *904d7c9652788d3d82924076924c7f9144728d3b798c3e71873f738b3d6e8941718c437483336e *8a3d6e8435748e3f7a8d3d788c427889496d864e768a3e6a844465843b68823a66823a6f8c4170 *8b466d8b3b6b8744728c44758c2f7184335d802f6c86356a8b43768d3c7386407784386a834365 *79356d86396f86356d87406681426187456e823c698440657e337580306e8444778d40708b4870 *8741788f476c8b476c863e6d893d697f2e6a88446986456887446580416a8944657c395d782c5f *7c36617b39597736647e3265844364823b6a7f336d86417d8e406f853c6f853a788e4f6d8d4878 *8b47779045728d42748f3e7e8e3f858c47738a3f65783a60792c72863e6a843f68803c6b8a4768 *7e3c647e3668823160772d607a2b5b78365f7d3a5e7d335a76316678286e80366b803d697f3a5d *742c6a863c608245607d345a763162782b52742e52762c536b265470305170364c692d5f78335a *70275e702d5e78395a6e2c5d792c5c80346386335f79365a782d5c6f28626c245d6f2362782d61 *6a2f6281345e7d35606f325f712f67702c566b27546f2a4c662956682a6273325e7a375f733054 *6d2762782c6475345d78375b6f366673336a8241738540687c2f6576296a7c3767813c65783a5e *7336536f2e56762c59783260843f657d31667b3f596e2c516c2a5271306475286e7e3c6172325d *7226566d365968214d6731506524526d2f697430657f3b607732516f3057723057692d536d354f *672c547031516f42516d37536e38607b3c6476345d73355e763c7e9366c4ceceb6c0c15b833d59 *794c5c752b476a2e58763d4869355567274d672b476d3247672e47682b48682b567534466d3152 *6a274e6e2942692d3d643044632b4565274763254c7230536e294e7337456e2f456b3140682d50 *6d2d4e6f2c54712e526d2d516e2e55712f4c682a4c6829576d2a4b67204b6626485e1f4765244b *70314e6c254e6f2a4c6924416c3a496a295372264a702d4b732f466a2c406227415d224b60294c *692b4b733141672b4762254c6d2f5a793053702e4e6a2d506e2b4d6f394c6d254c7531476e3051 *733554773a50742f4f79375678354f773446703650733a54773e486f2f4d71325175385f7c2f4b *6f2c5a7c3d497332487033496b2b507236517838597c364c6d2b4f70324c71324d773657793756 *7233587d34597b3452774047703654752e527c434b75385782415078314e79335778344f793f64 *803e5c803f5681456586425d833b5f8348627e3b5e7d3d61864b6283356380376b8848607e3f5c *823e5d82355e7935608240607f3b5c73345b78314b5f1f526e33506324627e3b5d7330697b326d *82346d88426781426587436c8d4758792b60813f5d7a3666842d68833b547b3456782f53762b4f *793f52773462803e627d355d793467843f607e34607b3b6385466987406c8b417790437b904972 *8d416e8f456d915d6d8945748f507390497f995478954b82974e7d944c74954f718f4d6f8e537b *924a6d8c466d95466d8e467591486a914b70853e6e914774914a738b447a8f4572934672924878 *8c446789446987445b843f6a8642758e426e91406c8e48648444658d4d648c44658a4c68884164 *8940668a486b90476f934a6c89456d8a41718c416f8c3e6387406d8d476d8f45688e436988406b *8c416483375f844257813f5d7c3461853f58813666842f6a8c4370894b79925d688540617f2e65 *86426a8a3f6a8b4273924c6e8a44778b3f69874264854161843b5a7d3b6a8235668033698d4873 *8c436d904c65884d6788426c8e496789436c904b78954c869a4b83994e839b54839a51819b5079 *99577a9c587f9b4b849c5691a15090a45c84a26389a15c8ca05b839f6c839944829b5381995684 *9b4c93a4648ca57292a05c90a45c87a45d92a46598a85c92a5608a9b5291a25e92a25791a45b93 *a1548c9f548da1588f9e49a1aa67a0a75e93a15d97a25795a26093a14d8ea05a8d9e59879c597e *964f83964f7c934685944c76934d748c487d954d7490447a8f3e7b934781964d81984e899a4a8d *a35a8da25390a35c92a3608ca15a91a055a2b07e8da4708b9f5c869e558ba15a8ba25487a15c8c *9b508497488a984b8797498da2518ca25c89a0588ea358939f4d93a35c96a25893a4598a9d5092 *a15895a15a92a55f96a45494a45d8fa0578d9a4c8e9d518b9d508ea15090a1548f9c5396a35b8f *a2558fa15a919f568c9f5694a35e919d5296a25391a2568da25891a258899b50929d538f9f538b *9c5a869b518b9d58889a4e899e4887a061879f5b899a587d964c7c9347799347738c43768e417d *99486f8d406f8d42728e407c924080944d6c8a456f863a6f8a3b6e893f6c8c49698c4569833c79 *9245789348758f3d76944e749049748e49718a43728e4274853b72823d748c3f7d8f46768d477a *904272914c748634758e40738f49758d437e934c7e91507d8f43788d428297517e914385985680 *944785984f829952809a5781974f83974e81974d78924676914c79944b7d8d447a914a7b934a80 *9349758c457993447691498093437f9343748f48748735758c40728b49658a4567863d69843469 *863f738b436a8744647f3a65823f69834265863a5b87436881426c843465833467854267874267 *833f6885436e8c41658a3e698c4060833460834465833e60803b5d793c69854067813b6c8b396d *8641638033617f2e5c8033657f44577630527a3a587c2f557a36647a4057753a5b783559763156 *7434577b4160742d6d7d2c66813f6785355c7e3168863a61803c627c3b5976325a7f3a62813a60 *80325c79356281365c81406984327087446c883e73904260853a5875316c8030637f3564843a69 *833a68844167853e5d78305a7b345f772f5f772f5c762d586d2f5d732f597535567c3f63782755 *72275f732f647b30587c31617e3d5e762e5d7a384f793b50752b50763b557534487130526e285b *6f2b5d7626647a37728b396b8c446c8743698541627d365a783e6c853c6181426c86366981366a *792c5f7c34698136637b3f577d2f617d3762803e5c8044617c345f79316b8235657e316478305e *7d3659763a577f4155732c506e285b6f2c55723254742e57772e53763a5f81435c7d30607d3265 *8332606d29556e295777345b792b5a7d3d597f3f5e72386283386b7c326e863d616d2d657e305f *76315f7b404f6f3d5a712d59702d596d2e576f26566c3156752d5b792b55723457733157713062 *7d3b5473375c70324969314c69385171345870354f6b374f6b314d6a307f976cc4cdcdb7bfbe60 *71334f68313c5c2b4765244c6d364667334f662a465f2b4e69314a5225445f273655214267243e *5b214166223b5e23456327425f1f4369214567263964273a6423415e293a6024415e234566224d *6524446325536b28607e3e5b743753722f55712a566f304e6d2a576d26546f3150703251732f4b *6b26506b25546d2d546f2a566f30526e2c42672b506f2d497240526b2450722f4d6f32516e3056 *6e2c5972385375305c7638607d3660813c5c793a55752f4f6c2e537a3853722d4e6a2a4b6c2d48 *642e436728456e314f7b3f557f40597a386080415a763e627e3a5e813d59763456793654702b56 *7230627c385d7c4256793d5c823b5a752b597f3c5678345d7e3f537133587e3a607e2f5981425e *844364824061864d6587436984475779366c813e5e8543617f3f527f425d7e355f844261813953 *7434677e36687f3f5d762e5e7831627f455f83455e7f426887486587446583375d7c335d844162 *84445d813b5a7e3b61824165834167853b5a83476c874262833b6c833269854572843c668c4c70 *8e4f6f8d4872934a6f8f4c6e8a47728d476d8a416585436d8f49728c40728b426f8b506c85436a *8b4f6b88426e8d476e89426b8a4669893764894a66813f627931537a3e5c772b5c7b366783405d *83426a8a406d8e476d883c698e46678441798c466885436a8e466e8b446c8c3f69883d6c863c6b *8b4970914976914e678540618c4b6a89416989416e8a406d893f6f874069853c62854269853a5d *853c61823a68833a6686425d833d647f3461823660823e5c7d4066823e658130668c406d8a3e5d *7f365e7b315b7d3b577e3460843b6882436c8e3f5f80366a8e496d8c47738c4f6f8f48658a4668 *89446b91496b934f788f4076903d718d41768838798f4c6b85456c89416a8237728b3e6f884073 *914a75904b708a4473893b698d4c6c924c739248789042788d4f78934d7889427a9253758d4e77 *934f728c4273893d75924276923e78995d7e9a597c9851859e58849c55839a57859f54859d5486 *9b4f879d58859b52829c5f7f98518d9e528a9c56859f51859c4c849a4a8aa160869d548d9d538b *a15c8ba1598ea25e8da4658c9f56929b5085994e879b518b9e588aa05385995481984c8a9b4c7f *9e5a869749899956859a538fa35c8da4648d9a5c8ea46691a056889d568c9846899a52828d437d *8c4679934a6f924a7e953b809a4d8599478897467e924275944c7899557d98547e934580974f79 *93487d96488295448ba053819745849b5a7e9650819b5386a05a859a4e7d9750798f487a8d4079 *904781964781985184994c7f96478697438a9a4a78954c81994b85994681974a819849889d4b8a *9b4e8d9c4e8d9a4d8a9c4a89a35891a05b8e9f4a8da2618d9f5197a56096a15095a35c96a4608c *9c548c9d5593a87195a6738c9f54939b4f909b4790a25292a35090a2539aa55c97a15a8d9a4c8c *995a879848849a497d944d7894427e944d779145738d3f69873c6c9244798a3a7e9345748b3d77 *9547758c3b75904678934a6e8f447292466a8b48728b41768e416f8d3e758a4071873a7088356d *873e7490457b8e437e8b417d8f417c8c3c7d8f42728d4278913f7f924882985189974982944787 *974886995086964d7e96507e9549728d467a914485923b80974b7e95487b92407c91438a954a84 *975083924e7d8d3c81974a808e407c964680974b81944683994e77944e77924b7f95467c91457f *8f467e924a819a558398537b9252889a557f91427a90427f92477b944e738c4b6f904c728a3e7c *944c6f8e407e92426d8e486b8c4a6b853a6485466a863f6c81366c843e6883406d873b657f3364 *833d64853d6d823b657d3162843a6284346c8b3b637f345b752e5f773b6c8845718c4571894081 *93477a934b758e45768f4d7691476b8b456f8e4f798d446c914e6a8e3f6d8a3f768e486a853961 *78316784416885406b89416c8a4e72894b798843769145758b3b6b863c72853d67873b5d7f356a *8d46648544638749627e346b863e597d2f5e7a2a6475296c82366e7c2e6d7f36657e2d697c2d67 *7d37697e3d66762f657a2c6a7e3665762a5f752d6b7e2b688134618230617e2b5f7a2e65813a63 *823f647e37647a2a627f305a772f647b2d5e7830637636556e245c72314f71295d702e53712c60 *7d2e576e2d5f7d325f7132677b31647b345f72285f7a26617e346e792e7079356b7e2b6a84386e *81356682386d824263792a5c6f2768782a586a1f5d6d2e6a762f667430657e37647730566d2760 *7a335a76394f6f325d6f24657e2f70803966804261793456722f55722e5877315d72335675344a *6e335f7a3c57782f667f2f607d32697e30536e2f5b742c60732e6081385e76385e813a667a345f *7030697c3053692b5e6e2f5d722b576c2e506c295c6a2c526d28496527576a206a783560784058 *7135566a334860314e5e264861264c682f556c2d5463274b61294b58274b6a357b8e6bc3cdccb5 *c1c05a724052692c4f763549673253702d4863295371324c69304663274e5f274463314258233c *5f2d4766263c602b3d622e40602d496729466532576a2a486c2749642543611f4c6325446b3353 *6d2b4c6d2b576d2c5b712a677a31677e4a677a3d5f752f5f773a59793b5e75345d712b5a753760 *782e526b2958763260793259733a5a7a3a60753161752b52722e62713653702b5b7331586b2d52 *66275d722b64732f5f7531697a4263793a61804268813859783a6072375c752e608241567d3659 *7d325e713150743a54753152712c4b71344c6f2e4e6d3056713153793753722d5a7a3b4e6f3c5b *72334f6f2c5d7c34527c3f5d79385778445f7a395f7c395d7f4367863e63824357783a5f87426a *833e6b87445f82416e8a42768b447387436d8a4969844473914c6c834372843e6f833e64874254 *782b5e814766813d5e81466b86436e8942677f385d82456d8334648a4f6e853d648037607f3d6c *813d6f82336d8647698540728a486e8a497089487688426383446e8c4874914464803c607c426c *813f6d8240738c41799248718c4f7694556e884976904d718d45829547828f4281914e788e4e6d *8b46637c33657e475a7a376681375f753c5d78315c81375b7931597327617d325b80395a793553 *7b3b597638617b2e6786465f813e63874262813669874663853c6b8a446785405f77375d783165 *82345e7a2f61874860824761843c6a85437a954c7a9146708e4673934d7892426e8c4476934972 *8e4170904a6592536d914f78985c7b92486b8a406c8d4c6c8e4f708a407891507b974d7a914b6b *88437c8f457885367486387a8e437d8e42778e43788e43738a4b728a427e924080914477914973 *904977914881984b7a9146798f4883944b778f42839a4e81974881924c768c4886984f80965c7a *914b78924b78934c7f974a7f974f8698557d9b64809b55869a4d7f974f8695487896447892506f *89417b9047728e46748e4b789047879d56839b6384964d829953889c547e9d4c7b94477a974e78 *934c819857869e62899f53849c5e8c9b51859a4e85954a7e9751798e427c944a728f40768e4470 *8c407d933f7c984e829c5081995880985b859e52859f51889b528d9a4e829b577b904281954f78 *934e7590487990467e91447d914589994e889e53869e5c92a25e8c99508c9c598b9c488f9b4489 *9d50849a5a889a55859b56859c5689995389984c8a984c859a4e7d96488498497d984f7f984e89 *9a50859d5f8199538798428b9e5282944b80944881924789984985984a85984d82974b83994882 *9a4d8897477d924283984d7b92487d9048869b4a7e92427d8d347f944e7b8d437e954087985083 *9b5983964a8b994a87984b8d9945939f4d8e9e4d8d9e4f91a048859b548a9a527d984f8d9c558c *a0548e9f5a8c9f5288985186984b87954581944b8091527e944f899848899b4b889748859b5085 *97447a913c7d923c799148768d3a7e9242788c3e7b954c6f8c456a893a5f854357762e64803a59 *792c62823a6d84326585396e86377088426a8a4078954c80913e7b8f44778e487e8f447d904071 *92477089407d924e7a8f40778c427f924b808f407f944d7e9549809545788b3d7e99508c9c5c91 *9642879857899649889a58929d5c959f5c86914e87985189984685984b8992438a953f8d9b578b *96588d9a558b9d5f94a15685994a899a51879541818e4283964385964b8a984e8298517a904988 *8f4780944a81914b808f4689995c83944c76934682924b7f8f417a8e45678635647f39677b3062 *7a2f6a8c43627e386e873f798d458093427991447b91477892486f8a3f6b8c43748744798d4276 *8c477e90487b8b3e79843975873b6c843b6e88426a843c768e44708b3c75853d6f8c4276883b79 *8f4a80904a7e93567a904a7891467b9350798938748b497a8848788f507a8f42778d43718d4c6e *874267823f6784356b8b36748a4377883677914a788e497d92457f924d7e8e40759551718a486f *854163844277823370854b7181366876335f752c6c853267813a7487356b7f3670843375914773 *8e4175924d7285326b883f75853d6e873c6e8c416a83406d803e6f88446d8a44778b477887386b *813a808d40728b4875843172823970864078853e6d8232677c336f88426a82355f813b70823772 *843e6c8842607d3a6b8032526d295c6d225f71245d76275e75284d6b2954732c536d2d556f2453 *75266380365f773454783360732b6470266b7d347281315e7e326278326a7f386b7f355a7c3865 *7f365f71345b72356071306584396071266980396a8241697a3263773364762857793457742864 *7a29688038647a2f6481326b803d5f7d3f597f376682356c8233657b2c5a733667833763833d68 *7b2f6a7e396471345e7034566d294965214e6c2652722a4c672859662a697530536b2d5b6d2959 *742b64752f5a6d2b4b682a526d284e622b59692c5d6c2f5d6d2b52672b616b29606d2b7f946ac5 *cfceb3c1bd526c334a6b30526f32526f304d6934506d2e4e692a4e6b2b4065344c642d516d3749 *6f364e6d35476a2d476b32526a2f4e6b29486b2e527336597533536a304d6e34516e3247682b53 *712c4b69274b6d2548672646723c517739597937577d3c5878325473385a7a3362813755783556 *7636607c39607b3450763956793e54763b5674385b803257743a577c424a763a527d425f7d3569 *823967823a5f7e365c7c36607f37567e39607e3a577a3862834766833f5d82365c85415a864561 *83405a7d42568048557836557b3b557c334a753950783b4f7c4464823e6382405d803859854364 *88425e803069803c6184495c823c6685426b86476a8745618544608548648646637d4269874b6a *8543648040577d36698847738b486e8c426d874e607a3d5b7b376683435e7d3e60853f6c8a4c6b *894b658a42698c496e8b3f6586456e863f6a88486281366082385b77345a7d3b5e7c3e5f823f69 *853d6681405a824562823c69813e61824467873e6d8942638749607f3a6a874663814265854966 *8643698b4d6f843b68863b6886476288485e8340687939698837738a476e8d43758f4c79944b75 *8d4c758a446d864461874c6e8b466a8c4c5f86476d86475e7e3a6183415a803a768e466a823c69 *8a4366864268853f708a4b6b833c5b81445e7c38617e3e6a813e6987456b8a426384476a803c6d *8a406a883d69833965853c6f925c688e54748c3b6d8e4c768d4875924d7d945071914776924875 *97507297507295466784356e8d40597e3a788e40638a3f7590456d934d74974a7893458093487d *964a6f914479964e7f964b7e934b88995383994f89994e8591447a964e829c6284a0597b98597a *924b7e964f7e9a59829c557f974d7c9954809f65819b5f819a60859c647e98507a97436e914585 *994f8495497696517e985281995e829e5a80994f869d5182995383965679995f889a537a9c5e80 *9a517d9956799c577d975374914c7c9752799a5a7290466f924f77924d7a90476f91457891437e *8f4678954e708f487488436d89487295536e924a6f94507c915979924a758e4375935073914869 *8845658c4c778e406c9043708e4f6f884a879b5a849c547d9a5286a059849f58869c528ba05081 *9547829a5880954a8a995085964186a060879f67869d508f9f558b9d588ca1568ca25f8aa15892 *a15291a35b8b9f608d9c5d95a0578ba15783994f8b9d4f8d9a4a8192417c91478192428898478b *9a4b849444899a4f89995681944581974f71934f849747829c5277974c839b5a8398448292488a *9c53839951859a4c8a9c528fa1608e9c4f819545829a5d8b9c538ca0518f9c5089964d91a15592 *a55f92a150839d518da25b929c4d93a25691a56491a05c93a159939f4f8e9c4e8fa0568ea15090 *a15c95a15c919f568e9d588c9b4c899b4e86994b889b50849648869343849a4b859c5087a15c89 *9b4c8697527e8c3c7b91467991437d904985974b7f934b859d5e7a944f789045768f497190426a *8539708731708d43769047738a3f6f8e3f6888417b8e3a78914a779042718d45768a3a728b416d *88406881356b853770853d6e883c75883b687f366380376d87426886376e8a42738c3c728d4383 *91478396487e93478b9a50829b58879a4c7b964f7e9343788a348b974884974a82944c869b508e *9e58829f5b869a5287a15f8d9c598b985d7e964c7d99507a974787984b879f5d82994c86985387 *984d819851859d5d7d9656839b5e8a9957809a5b7c914a7f8e45768b4276863d6986426b89466d *8a4177954a748f4967883c7293487a8d3e798d4d7b914a6e8b40698f4c738e436f863e60802d71 *85347a9040798c3b778d46788c47799249748f477b933c778c3d698743718d3f7e924b748f497b *8d4182904080964981984d86934d768f447d90427991487d924782954a8192407b93417a904878 *8d44738b4d78914d718b496f8841728a43829241768d416a8545718e40708549657f3d6484435d *7d485e7b2f6d8d43739140708a3b708a406a873a6882346b884165833562843861833a69873c72 *8d4272853b7d9041698440698641698a466e8a436b813c778a4168803a6a83346e893d6b88426e *88406b83406e89446a84396f813a6b7d3365803c6680396f843b5f7831627f35677e306881336d *863f667b32577e385f7d38677e315f7c3656783b5b722e546f1d64803154712d57752e4f763455 *72385373315269284e6a2461762d57712a52732d607a2d6277335c76375e7a355f742f6a833470 *83375d782d59783a59732e64803b5d7f3a52733167873d6a852f6b7c2a5d80316382385f78305e *7f3168823566833f577d396583326082406282455a6a315e7a3b5e752f5f783652743a67803364 *753459752f52702f5670275175396777315f84475b7b3157732c52712e506a2f526d28506a2f55 *6c23526f2f53712e5b6b265e702a5f78345f742b59712b59792c566e38566d3052713456662b81 *9261c5ceceb5c0bd687d434369384c6a375570355a73384c6f304f713b53783c537338546d2e44 *6a2b4867344e6e3853723b52773f4f733b64843657763f53733a4d744053763a50703250733e52 *76384b74354871334c6731597434557337577433567639507239566f375d7a3a5e762e57753a5f *7a3a5a7232637c3f627935647e3e567a3b4e703a516a40537132516f2f5f7d435874344f7b3f4f *7937577a3f4c7038506d2b5a7b3658722e6476305f79365b7b365a763256793a557b2d4d753a47 *6c304b70324969295673355b803c4f794354733850753e50773b62813f5a7f4555783c59773c64 *8038627f3e547836637e38617c3b637f46637f455a7a3c64773e5b7d42527f43628338567f4364 *7e3f5475375e813e5a7c3a5c81435d7f446283405c7e3d6282415c81446f8d4868854a667a3e63 *823a5d80405778436483476a8a50768f5075914d648b4b5f8640688d4c688b4867894a738d3f6e *8e4969883f6c8a48708d43718f4a6d8a3d6c884761884a667e3b657d416f83466f86446882426a *833a6882466a8d4f698d48708848708c4a72935270924f75904380995d7c994f81985281974c80 *955c849a5e82994e8a9a478498556f93527a904b7c9868839052718b4f728c4e81904666884665 *8741668a486e86356b89407b8e4977904c7b924e8297507e9861829b5c778f4a7f945779894a78 *8f4a7e96607f995476945778914e7e954e7e924c7f92448498508a94497687487b93467f924681 *9750839545768f536b89416d853f7593527d914f6c924b759253678a4364803a7285437b92487a *9147759043758f427c9146778e467690497b95507d8e4c78934a6f8b44798f486f8e4a768f507c *944c728f477a92466c8d486f924d73934f6e8f49718e446d8d4d7d98587f95526c904e71914f6a *8746718c48768e406c89406e87447090447e91437991557f954d7e9a5c7c954f7698586f8e466e *863e7a9652708d4975944b6c8c467c904b7f964f7593456e8e4c71904e72914b78955776914d7c *95568199577b96577b93537591507a8f4a70914f778c4a6d8d4f8299537b944c7b924a7b93527b *9759778d4c768b427a9047688446728b4a64844263853f6c873f68853f798e4b7a96528698518c *a065849c67869a478e9a548c99508a98508d9b60959c4e8ea363879f5d8ba4678aa15c88984d8a *a05c8d9a4e8f9a4f8d9e56929f6192a262879a5d8999558d9d5c8ba05d869b5a8a9f6180984d89 *a15d8c9e528e9c4d8d9a498b9d5084a05d8e9a52879a578b9f5e84974d8497568397568091488b *9a598a9e538c9b638c9f5f81995087974f8d995786984d87994e869b4d8c9d4f8a9d4d8d984f83 *984c90a362869a4a8a9b4b8b9a4a8fa05b8fa4638fa05d8e9f608d9e5f84984f8c984d8b9d508b *9f558a9b4e8d9e5f929f568b9b528d9a548b9a54939f5887a06593a25d8da06991a15f87994b8e *9c4c8d9f65909b49879643838d437e90477a914b7e945288944888994c8197528a9a4c85964988 *97517f93578097507e9147808c497b904884924885944f7e9a527f945081944b83944a7e923c7d *9349768e456d8c47768639738940828a3d7c883c768c467b8d4466873e6984427588416a823969 *822f6c8b477e8c467c92497991498693477e91497685427a92477e8e437b8738748c417e8b4378 *8d4c8196567a9146859b537c93448091448493427b954d7d9146778e4f7c8f427088427a8e4276 *8e407890457d8c3d6f8d486e853d798d3e72883c798c41778b426c8b447189426888496a844174 *8c49658b415d86446283415e813b708b436c853c758734728d436484436a81325d803765803562 *7f346980426b84397386387e8b448293487b924b758c487f914f768c487b8f4879914a79924576 *904e779446708f476b8e47718a4b7287416c87447a8d44788d43768b4a6d8040728a4f6d8b4072 *8f49768e48798b468997497a904a73924a79924f809150849553718748778b416e8b466d8c4064 *843e6781416f863d7c93537c8d477c90496c87416d86416f894a78904a64864375863a6e873b6d *863a65732d62813f6584466081426d88496584476a80396c85456c813d6f8d4671883f7c91456c *8b445d83436d85435e803c5d75375c78386680326b884268833e6477375f722c637b3261793564 *7d3a6d863f577438577234566c2a576f3150703a5c79374f7635617b31627e43566f33506e2d52 *6828596a27527538507d38526727627c346581385d793060782f62813e68833d6884405c813d6f *833c667b2e617931627c3067803c657f385e732d506b30556a27516f3555722e537439587b355c *732b58743560732a687d2e677a376a873d6985396c87396e863f677c35607b2f647c3158713160 *7f3a5e753556752d536e2f5871285776355c7936597433526d2a5e7532526d32556c315d762b5e *7131566933596f34557033516c345e71315d7a405a783d5271394c6b2f47682f46662a4e5f2a4e *602984936dc4cdcfb6c1c15c7d4353743a53773c5474315a723466823b56794058804558823e4f *733f536f3b536f3b5570295679406a77336083435a7b3c53753a52783a567a4056794450733a5b *72305773395676334c713c586e3656723159732c5675305a742c4f6f2b4866264f6c3053732c55 *763a52712e51743058722b536a2a506e2f4c6d2d586d285479354d733258713750703155783c5c *7e3b5872335a77345a78374f7039617d3a517d37537b37688141657b32697d305b7f2d607b2e62 *823b5f7d285c7b326078365d73315e7a385e7f364b7531527a3d527e3f557f425e8445617a3961 *79346881416181425f7e3c597c3c5077355e81405f7a3a5d7a34617d3f5e7f3f5c76395d7e3850 *6e2b5380446486405e874d64844b70884863884c6482486a8b4f6b86495c7d3c75884d6f844070 *8741788e42678b436b93476c8d4b6a8a4c7a94506c893d64833b668642557d3c5e894b608b4d67 *8a466a8c43708f4a788f49728842758b4a6382405d824569854a6b8341667f356d81406d854868 *8b48728d4a6a864c70883f607c3369854064813e6485406481426e8e4f728a407791486f924a76 *924e77954a8193447e8e3e698a3f79934a8597538f994c81974a819b4f83994b7d995682924b7b *91487c90467f954672904a7e964e7e994c8697497b964b6e8e4770914480934682964e7a964f86 *9c5a829a55849c5f879a537b9750819958829b587e97457b9752899b4f8493487e974e80974b7c *98508192447e953e758f41768d4278934181974e82924c80945082944d7392496c8d4a6c8c4a6a *82446a88436f8a41748a3d769046758f44768b407f904169863a6a8640678444698a436e8c4d6a *8d486588406a873d6c89466b8940698435708e4e6e8d4b769551728f4b708d4378925269874377 *8c4973904c6a8f5175955575924f74975177924880954d86974f85924a72914d7e91487f924b70 *8e446d89406e86426f884668863d63803c6687436b8b42789248819a4e809b5681985082975586 *9e5a8295487c924380944f83995a819e5e8a9d5a849a4f889a5e7f955080934f83964e7f975e79 *944f78964d7f96508b9d5982995284984a7d964481994c7a93507f984f7895517e985e7b935081 *994c809b567f965b7a924d80985b85944c899b5389974c8c9b5f90a469859c59869c5183985882 *985481954c8796457f8e427f925081954b7c964b89994a7a974d7d954f7e9442718e4d71873777 *92446f8c3f798f4a829149848f47748942758c3d7d873b808e417d913c818d3c798c44778e4a7f *914d728b4a7c9246798f427b8e466a854068843c6c863e718c4274914a81995381974a73904a76 *8c4075893f69863f6d89376a8e456c874372823c67812d698741778e447a8f44829148848f4b83 *934f7c965f7a98508599557e9449788d42768e427c944685984c829350829a5a8399537e954281 *94448696467c995380924e86954b7990438195498193438495497e9450859049849045818e4884 *994e8c994e8898518c9e537a925090974c8b954c7f92497c944e8495457a903f83934783974a7f *8f427e924a7b8b4273904b728c3f728c41798e417e934c7f9443708d46788e427d8f417e943e83 *924481924781994d8b974688995a8e984880974d8090408192427a934b7d954a7e8f3c7a913a82 *9249869343869246829951869e4f85974c859a5880964c8c994485943d8193458193457d954086 *974b83974d84994c82974385984b8292487f934b7891437b944c778d43768a43798c4474893e81 *934582964f80954a799654718e4b7d9659718e3c809145708a3c74944f7b92447e8d407993487f *914179974d7d93487d944879904d8492588292528a92477e974d6e8d427c954f758e4882924887 *97478396577e944b7b914b718d4a7088447186416f8c427290477387416a81406f873e6680326e *823b668134678039738837748c447283417b8a497f8b3e7b8f4d758a43768a42838c4281934881 *904a78884074884074853b6c873b718a35727f30728b3d7089455c7d3e7991486c7e2e6582326d *853a587a3a5f7c36657f3269813e697a3f66792f5f742a5e7a345d7c34627d366b81376e823671 *863e69873a648334657d2f58702a596a2d54712c5575364b6a265472314e6225697f3062742b57 *75335672295e74245d6a2b6a803060844364803c5c782d7179305c762c6579305f7d3f6181395c *803b5a71314e6f275570294d661e536a204e7535607c3d6583456c8939627c37668238677d316e *7c286e8432657e2f6a7e306c833c728441688340647939657128526c29516d2b47692f4866244b *60235171345f7f3c5f7b35636f2c657b326a7b3276853d707f356c8745647a3d5f7c3a71812e71 *85415c792f607d33647d466c813765864767834265843f5a7a3f5f7d3b547a32567435597c395f *7933627a425b7a3c5f7b3f547137537330567b3e4e6f30546c2f54743a6076385d7a3960783c5c *79346174348b9f6bc4cdcdb4bebd6e853f59793b57823953803658753f587f345d74315778385c *84395676395d73395b803f5e77385380476580335270315c79386379354e6f2f567e395279355b *773e64833c657b3b607e3d608338537f40557a3e56753665803f64813f677e36617b3753793660 *793764853c648236598041557e41547e305b742e55742d647e436984396b854965844160814564 *813b70874469843f577a345b71385c7b33526c2b5375376c813f668541738b4071893b6c84375c *752b697a33587a3561833f5881366582406b86416785415f7f405c844761834363864758813b6e *854664874a5f813f5f803b5f7739628643688b496181386286475e8237648543577e3865823464 *86405d813a4e7d3556864362874865884273924d688b50728f43698546718c4c70914b6c8f466b *8a4866894c6c8e546782406d8f516e8f496b884c5f8a3f6b86415d863d5882424b78375075365f *7732536f2559752e5b742b60803d6a863b61823c5f7a3a5e7f3c587f425f823f5f834266833a6d *854064885167905271904e6f883c708b3f6a8647738a43658545698c416d823b728c487991456c *934e70904f6c8d4d75924c6f823a6f8a4763843d6e8341658743758e4773944d859a548199437c *98527095467a94456995496a8f486e8f4d788e457a8f467c944c8294477d954c73914e7792497c *9444819747869548859b548299507d93407990407e924c7293437f994c829955869641839b5c80 *974c7f984e80954c7d9349809b50849849809449709251769451819552799650798e437d934d78 *924c778c3e7d96547a904a759550658d466f8a426a87407e9a5d7e984f82964b7a92477d934f78 *965a7586446a8c4a648745648d43708d41708d48718c48718e466d883a75934479934876934c81 *964d729441768f4a7e8f42718d4261844270924c7692447d9653779a527f8e45728b4581994c7c *9c5f7d96516f8f477a894a73904d779647798c4b7887407389427791537c964a7c97477a95497c *995585994d8399538097567d975d7c975a849c5983995b839c61869b5787995b8093487b8f4a7c *904a78924b7d955578964f839550758b3c78954e808f487b8e4c8192477c985276934a7286406f *8a41768c3b7993476e814175833a77924879904e809453818c417e934d7f994e7d8c4281954b81 *9148768c457b8f417e8f447a904c7d944c8194457f9241758d39758f43769048708c476f884462 *89496a893967873b70873f6c89447d8e426e904f7790407b925078914a6887446a813c728a4072 *863d6a8a3d72863a6c833a6a863f64873c65813c658541617e3863823a5e85426487426d873d74 *8c427489436e8b43647f3a6b85406d823d6c80366d873d67863760853b728c416a883c68843c74 *8942788a3e7a8e437186386b8f4c6b8c476a893e6e84376c883b77893c788b436083426b80396d *843a63834260843d6d893f7d8d43688233758938657b326072276077295f722e4f5e185d712c65 *7e33677b2c6c853470863c738e42778d486a85458290467d8d3e7d9044738c3c7d93488194477e *91407a8b437d904c7c923e7a892f6e7d2d697a285d7f2d677a2a61752a6079375d7f3b6e813c69 *823162823a7e944089974786914287964d879952869c588ba0508d9b4195a05886954378913f73 *9447819b5f81914487954e879c588c9742909c5188994c859b4f8e9b488c994c819643889a4d8c *9f4e919e4b90a05591a36785994a8594438493468e9a4786964085954784974b89963c7a94447e *923d8497467c8e3d79914779934d62904d718d417491497592506c8b447e8d3c7d934b7c923f7d *924082984e7c9344849743849447899a4a859748859749829647819348768e446f883e798a3876 *8e4685934373853b7389396b88405e802d647e306b7f3468853b668536698030637f3066823367 *7e386c7e3b5e7e3e5e7d386a81376a883e6b87426983306f8e3c6c8934668335778a386c7e3269 *833a74862f6e84347e90446f863a7b90437787357b8b3d7b8e4376873f70853a6e873671853658 *7c315478345c7e3365823d60802f5f7d2b62802f6d8a3e6b8a4962843168873b65843c63792e63 *7d39658134677e2d6a843c64863b627f316c833c617b2e63762d61793465803d687e2d6d833768 *8647708a3b6e843e536c2b587932647b3767792a647d32547634647b314e6f2b697c26647d2b65 *7e39607d356c80306678296580306a782c5c7c3057782d5d7d3456732e5371214e6d23567e3358 *742f5a7a325b7d336277326b823571844166843e6c843b6f873f66813e6581425e7f366178335a *722f5973245c7f305f793550723f607c39637a3a6e8741617c346c7e2f6d803a6281406287476d *86416a89486c914f718a3f69894b70873e5f823d5f7a2f597f37587e4065833960854a587c3264 *78366579345779385c773f677d365377414f72405b793b5771385b743353692553753a547a3f61 *7f406e81397185408da170c4cecdb5c1bb657d3a597936537635486d2f5d7b445c7834506f3860 *782959752e5279395d78355c78325d794765853f6e8b3f5c803a68853f68823f6c83335d782a6a *792a6d81316376386280385a7d385f782c637e336879306b853f6f843f6d8b5072864670883b68 *7f33687c3566823668823b5d7a3a627d35537b3b55702c5e7b385d7a3267854269782c6a814260 *763a6380316582456982436982407c8b44738c477d9547708b406783436d894c6c85426a883a6b *8745678437597c2d617e376d813b68833767854766823e6f8944698541647e3a68853763853965 *843c6987415f7d3e63844058803963853962803767853a5f7e40607e38607b31647e41647e3676 *8141658443537e385f7e2f657e30597a3451752f5d7d3456772559803064813772843668823e68 *813a64843769864c6d8a4b68803e67885560844763863e5c7e2e6d88456e843c61743067874a61 *7931648444708a446a82335c7e336c81386c88396e884266843f658139688541678441678a486c *863f6d89446a853d6f8d41698a40788a4b708c50798f4480964c799048728d437d9143838c4080 *8e4881924c7f93538295456a904a73903e829247798b3d708f47798c3f818b387995487f954784 *994d8496488095497f954f6e8e417592496f8e437a933c8098417e9244829a4f8a974b88954a88 *954f89984c8a994c899f4e8aa35c8ea160919f54909e518d9c52879a4791a158869e518ba0508a *984e8091438f9a5087994a899b508a9b4e8496457f9345829843869341809142829246869b4e7e *984381984d8493468197517e95437b98497f944973924b739245778c4d6e8a46748b466d893f75 *8b3e6c8337798a3b778c3e6e8e49748b416f874271874072893c6e853472893b6e89416f8d426f *8533768d4370985b708f476b8a3b67812b69843270873a708c4078914579873d728d4575884077 *903d7591477e924d748c446984316f8d546c854d748747758e477f92447f9340798c35768f3e7a *92527c954e7990458293467f91407f9041778e487a91467d8e47818f4082934881914b7d8e4683 *94467e8e407a914e7a9143748a41728b456d8a486c863c7f954881964085923686944080934876 *924b758d3b698b426c8f4d6b8736768c3f7f954f778b46758f42798e4480944c80994d748f4875 *8f44748d3f7c8f3a758e477992417492467c9550819644819449819447798a3c7c8f37698b456a *86416e8c497289406d8c4474904f6f8e4e7186396f883e6d8b3a60814261834469853f73823272 *863e6a8434768d3c69813c76873b697b2c66812d5d812b607d3a5a7e3959762d687b2f5f7c356a *81396c833e648241798f486f8940698d48758c3b738b3e71893e788c3671863a6282365d7b3768 *822e6a8134738e40718e42788b3c75893763813e668236748a3c6e8d3a758d3e758b40788b3b71 *8d3d7991506d812c6885316381327b873864813c6581296784335e752a7086346e823875893e6f *85306f8538687d26708534748b3b728b4070843f858c337f853a79823175863c788e437e95436c *8b3d798d407c8e42759048798e3c859245809143788b3f6f852f7a85367d812b7383356b843872 *812b647e3b76822e768c37808e2f81923c84913c8a96478097447c8b3a819140798b3f778f3473 *84317e943f79954d79893c8292477586406d92457b95478496417d924385923a8c98448591387f *9140879c508d9d518a97428f9c438597408298448491428b954189954681913e8491437b944879 *923f82913f80933f7e913d7e8d3d6b893e7e8f3f6c8b438190427c96436d8b3b768533738a3e73 *863f7d914e7c974f7e9246799241758b447c8d407991487f964e7a945278863a738a3a7681276d *863b6c8b3178873076883b6e842f6484326e853a6b822b6483376d832672883076893766822e61 *7e3267813e6c863f66813d648233678535718837697c317688337a8b3e818e3c7685417f8e3f7d *86326c7e287187337783346f82327c87416c873a6e843c6b833070833f778430677f35647e2e61 *7f3a5f7d3166813164762c6f80226c862d70843172832d6a833c728a3f748c44738c3e748d4077 *91457c8b4772812d818838778a366e873d658639627d325e8041678035647c276b8131617c3461 *7d366483385d78326d7f3366813e6d802c70802c647d2e7180315d7d2a617e2e7183416676275b *7a295c752a637623647a2a5c7a2668853c6f8235637f3768802f647d306079295d702c51732745 *6d2b4e6f2a4a6a2654783260792a57792b5f7b2d697c306b80375b742a5773305f722e5876295c *74284e6d254d6521616d23536c2b4c6a2e4867295a793253733f636f3063723363722d617b335f *732f5d752e5a732c577141546c2e4f7329486c224e67285068264a671f5d702557722e61722762 *7a305b763062752e6272295e6f2f536e275871274f692f49692f4b5f2553671d516c255d702d63 *803b69803a6e832f77853a97a574c5cdcdb3bebc576d374d6933556630506f3845703254764858 *774b6b863951773f4f79435a78405d7f395573375c713b50753f556e2c6478385d803e5d7e3c58 *7f3a64863968824363813f5e7f4a557b47537c3b597c38587b4564823e6a8540648236637f3a68 *8448617e3b637f3a6883476b8b4e71894f6c823f69804268854563823b5671345b783c55784662 *77354e703b6080375a7635617e405a7c33526f33557d39668037637f4265803a597a3a567a2d60 *7b34618040677e395f712e577435578143698a4769893f6886475881356282406178385f824657 *7b3b687f355780456a85476685405e813b6689465b7e3b628239627b355b7b3b67833c5d7c3460 *7f3d648344718c4b627f375773336c8c4d5f854e5e7f395b813d6080336484476982446f875079 *89476c914d758a446c89476d8b4e61854a65844572904b71925475924f688c597593536c8a4369 *89496b8d446a89436788406c8a3f738d416e9048699052709248739349708f4d74925175914d73 *8e516c9058708b4a7a94516d8b436c925b6c8b4d7d8e47688546708a437491457c91427e96497e *985d72904f79935067894e7c934b6f8e4b728e4f80964e7f96548299587c934b7a955b7c965888 *9d60859c6584965583965084994e8397587592486e8c426f8e3f788d46678a4d738c467e924c73 *8f478196498298528497568196578798527e915188974d869a5281994c81984c859a4e879b5686 *964d8597508099537188487b91446e8c477c8d4487995086974f84974d789248798c466e8d4474 *843a70823a68853a6a8c4a798a41788c436d853c6682445f83455e7f3f5f712f66682a6c77326b *823a617c355a7634688136587a34607f326b82316a7b3071893e7287406c843d6b89456a8c466d *89447592477e90497c9247748a357486426c894c6a854267834363813d6c8a3566833e6e894572 *803b7084356f853b788c3f6e8b45718d44657e3c608137638944638545778b467b8d4f79945377 *8b47708d417e9049778b427c92517e9250778f49798f4b73884169833f6d8c3c7b91457890467a *965478955b8195507996537690486f853c6c873e7086437f934d7a924a7c904e89944a82935278 *9244769354738d48748f4c728b43678445698a41708b43637f3a61843d5f853f6f8c4169894269 *8a466a863a6983436384456b89496a833d6b833e68813f698a417a8d3c7a8b456b8c4c728a4776 *8f536886426f863e6f8f41688a4765843d698d4a7089436781427390466484436c833b66833c62 *874368823e628042708c497691486c8b436a89416786446584406587406b8b4e6283415f834465 *814371843d6485415f7d335f8543648641768c42789648718f4180924c79934e778f4760853b5f *89476e8c48788d437c944d7b90437690427085466c823b6d8b48728d44778f49718f466c863f74 *8e4071823a778c417995536580336483406d8b446a844968843a77914c6a8c47748c3f748c3f74 *853b6c8b3c718d40678b4465863e66853c667f3b72863a728d477b8c3d78893f728a3a718d3e7a *8f3f6b853c6a86397b8a36698839708d45778c406e8f466b88416f833a788b447a8f47778e4a77 *914d77904578924971914a7890408192467f934775944e869641768e447b944780934c6a863d71 *8b427d954b7e9143798f437c9249648a3f66853468853f798d3c748b41748d40758e387b8f4772 *8c3d728b3f7a9140758e43888f3d8191417b8f4183934b7b9045738d3e6c812f6c7f38677b2d61 *823e6884347387396d8a3e73863d708330778a3864843b667c31667e396c83344e7d385c793060 *7834657c31698b43788a41737c40657731607b396b85446f78397382397987476a843f70812f5f *7f36607a344f762f5e7832647d325d752b617d2f5c792c59783159722d5b71294f72365d722763 *7d2d7082336f823b697e30637d30627f3a61772964752c63782e61792d5f7325687a276a73306d *7f3f6d8140697f416a7935667c29687a2f5e75325c7729637d325c7b3b647a3a627c3a67813f6d *84395576285c7e3a617c306a80355c75336479376d7f36647d3f5d7d33637b2d647d3e657e3668 *843f6b7f3b6c803d6d823e6d843a5e7c2d536d2c4b692454682a5a69235d6a28676b248178225f *70295c7533637a275b6e285d7227526e30576d36546a284c6a364f642c526e2f52722e6277355c *6e2c4f6b294e6127547230526d30536826536e2b5e752752692e4f6b27436027475d244f6c274d *632a45632a4465284c64283b5b224462224865294961254a693349662d495e22466721465e213b *5e21415f264c61264d64234b6027435e22476226435c204c66253c602853672c4e6b2b4e692c4f *6d3851692a577d37596f24576d2c517138556d2e546928576e32586c2f667b34616d2b51702d4f *7429617532536f375f7c3d536f2f537230516f30506a2b5b702d566f36566a2e4e6c2f4c663257 *682f5569345a6b275c76416273368fa176c3ccceb1bdbc5f78334f682c4865354f703d58734352 *753b536f314d703d5670325572275f844352753b4c6e2e4c7e3e5c843a4d72284a713959793f55 *763055813852803853722e4c76364b7a3b5178355274304e73334c72364c6b2c4f6a2b577b3a58 *7b314e722d55752f59763057723258772c55712757702a5479315c7d325a823c5c80315b803557 *7e38567b306484446286476c863865863e4f7c3755784060812b5a8245577d31577e3464833a5d *81346281386481336981386c853358763a53783a6a8b3b64853b60863f63873d64833c607d3962 *8642627f39577b3554793064833f62853b5a78346286405d7e396781326a823a6686416b883961 *85406486486c89447b863a6b853a5f86485c834460824067813c608c4a7895527389416d8a406d *8a476f8b3c71914f6a86426c8d426e924970894c6b854c748a476f893a6d8e4d6b8a4d6f8a4769 *8742658136678a3e7486427c8945708e4e738f4873924c728f476685426481406586436c87416d *8541748d3d6f8944728f47738f486890486a873c72904873863d6788436d8a42698c4a708e4069 *894170954e7c904d71924f7b934c6a8c4f7991467a9048768c3f81934e74914f738c45778c4177 *8c3f75914b78934179944b6b914a789249809549799043818f4378904774914a7693497c8c4272 *94547d984c7c955b7d97558094457c924578954c83984d82964a86985080964c80974582984383 *92437f923f779349788d3f728c406d904571975d72883c788e417291496f8a3c71965c77924a73 *8f4c6e8c406f8e426f8942768d447b8e4a768d4273904062863663843165853e6f8d446d8c3e78 *8f47788c3b739345728937758c3c6e8e3f7c94447a92427d924682944675914a78914276904478 *95497e9548718b3f7a924a758d477d8e3f7d90346f8e4781953d768f42718e427191436d873c77 *91496c86365f7f316587385f85356582356b8b406c894771914a708d436a89367895477189406c *8e3e6d924a728f4b7696507094517a8f427b944070933f75964d6f9350698845728e4d6a8c476f *924f7a9147728c3c6f873d748c3b73894168893f6d8a46738c4a73934a7d984983974d7d975076 *9248728e457b964975934872904670904f7b914b799345768d456c8d466d8c426f8747748e456e *8c45768d3f748d4271924d799045728d3a6f8d416589466d883f718e4d6c8e4675914b6a893f69 *8e4b6f8b426983366f8841698843678439698b446d8e446a87376780336d8d426d904767834062 *87495d813661823a6b873360843b6a8c3d6a86416e8543658a4d6e8a43708f4870864168854368 *86426d8641758c486b89466380336386406886426a893d6d883d627f34647f306d894361843f6b *864166883d6e8c406d8c4465804163813c6d8133688439728b3d6f8d446d8b4569883c6c823363 *85416a86406d853969853963812e668a42638838788e3e79863f6c7e336a8a3873812a6b8a3c75 *883b718b3e68832c6885325d7b2a60812f668233678a3b668d407992407992477191476b8c3e67 *853a6b8a3b65893b678b3c7288316486376b8c3c6d8b3d6783336a83316583366a823769883f72 *8e4270914f708f42778b3a7082337992436085406989427c8e436f8e426d842d68842f728d3c70 *88336c8c3a7391426282396c85426c91426a86386c904976853a6a8a3e6c823263812e65893e65 *7b3066873f718a3d6e85367b954974883e6c843c6c873f68863d6d89376686326e8c3b66873c62 *8135638037667d2e718739667e2b677e2e68853869883b67852e64732a7682336c823a7488386a *86316a88396a893a758d3d739147788d466c86396a853b6d8f5b657f2d6b842f7a832b6d853373 *86367584326a843565792862812b60792e66832a65842c6b893471822d7986306a85365f813667 *832e6a883a6e8c3f6c853b70823071873c77823a6f863974853f74823268833c6a86416b813d7d *8c3a6d8236767f315c782f69853a7386406c812e6e7e30597730657333637f2e6d873f5c7b3e5d *7e3b637e3067772d58762960782e5f752e5a7c394e70304e632558773051803b5f83405279355e *8039708139647d3d627c385a792a5c702357772b58762b5471295172305371275374316177295d *7129526e2d56792d6a7d3258752b61792f687f3b5b6f2e506c2d4f70304b68224b6f274f712d53 *7a3c5f7e2d527534456723506b24556c2356742c476b2653722a475d24496226405d233f602652 *6d273d571c42662040652948692f426029466423495d1f425c1f3c62242a4d1a4a66224a672a42 *64274e6e2f5a70244f6c21456e304f672c4d6a254c6c29486f25485e234d6d324f6a264c6d2c50 *722f52713252733262762b66772d5977345d7335546c2a46652559762f4e733e5479305a75405a *732e4c672750692351702b486a2a5065254e67265c722a577430537235526b2f5a6b234e6a304c *6b2b4f702c566c2b5b70335473396079368c9d6dc2ceccb2bfbb4c68364a6238586f2e5d783357 *702e54713353783a527d4557752951723e5f7e3b506c2e607d355c79336a8539537e455b7e3558 *7e395a823c56853b5a7e2e5c79334d763a4b72335674305d7a2e5c752e50722b4f772e54772f51 *722852712c4e742d55733550762e5572205f7e2c57793254732a5b7f335b792c5b7933527b3755 *7d2d5373314e6d354d6e2d5a732b587025526c20547a28557a295c7f3352722c617b3960782d5b *7b366c81316a86375c7b356a802e566f25576f2658722b5f7b2b5581355d7c31577934617b2e54 *7e2d677b2f6478305c792c54702b5d75316178335a7932587b365c782f5e6f2e626f1e53722a58 *7b2a647f31637e265d7c2a647e2a507325526c225e7533677a295c8135607b357087446b863e6b *833d678442748c46718a4c6f8b406e863a728a406885426b812f6d85376880387281386385446a *82386b84396e84376385386a924d718339718a416e87366b863870853f70843b657f3066803067 *84406f8a3e6c8a4b768b3e739040718b4c7890417c954b79924678934979934b739440718d3d6e *8c417990457e954e869952819a567d99536f8c4a758c477e8f4b7e8c4281924877914d80974c7d *985683994c81965085964681975286974d81974b83984e7d96477f97467f914786964a80964884 *985887994d83934c849b4f849649819a4f8da47984954b80984985994e84934289984f85994c7d *9a4e859748869c4c85974280984e6e964378904371944b76974d6d8a347190456f8a43758f416f *8d426e853a6c8435607d2d6781346a85446989366f8e427b9142709043748738748a336582346f *8b35698e3e728d41769144768944828f3b7d8e42768930748e4072842f768c3f7d8e3879954378 *92427e923f7c935278944a81903e7291416f8f416b893b6f8c3b7b8d356e8c4778903a718d4070 *863d698a4861863e6586396e923d638536678a3b6f8d3e778b3c698948758f407b93467f924077 *9142768d4578903c7c9247808f4081954a7c8e44778d3f6c8e4675914a6f8540758b376f803b6c *8a4477914871904982954a82954185964a89974680964b8194417b9753779548899a5185974985 *9b4f889a4d85954c82944d879850869c5278934d7e964f79954f7c91478191407e904680924d7d *8d4a6d8c486c8a45668741678b4267914f6685406c883d6a8b4678964f71904775883e6c85336f *8c3d77893f6b893e5e8442607e386987466686446b8d466b8d426b883d76873665863d75863d6d *863f6a8533758a3c6f8a4267833b5c8040617c356987416c863b62863466874363813b6c843c67 *873b647f3468873f69843f71833864873a658b466b8439627d3d63843b5f7a345f7e3768822d6a *833666823661863e7592466c883c657d2e6e8535768b357b8d437c8f467c92447c8c40738c4172 *8b3c77883c667d2d6c813a68832e6a822d6a863f5f822b79913d7d8b367b8b32728c3c788e436e *90426f8534778b3f748b3f7692476883326a8b3b65803766812d72822e6c893d6f90427a96466d *8f457a8f426c89396c882f6883346a812f5b843a66852e738e3b668b3a708b3e6e873166823179 *8c3a6a8633758c3d6e8a3d798940798b3f728e376c8334738a3c738a3a7a843d76873863813367 *8a416f823a728339738530738530798c3b64803a62823060853c688633617a2d587e2a5f7d3c68 *8538597b296781335e792d5e792968833869812f7083326f8539687a28698538708338647c3064 *7a2b5f7929607b2c64802b697d2b77822c687b31637c2d5c772853792e5f81296d832d6d873062 *87386c80306a81317586336c7d386e83316e7d2a5a772e697d2e6282376e7f3176853b7a8c3b6f *8d2d77913a698a406685336a83326f7d2d6b832b6d88346c832c6183336c853569832e71883a6d *832e6c852e6c7e2b6c802e6a82316e812b6e80337189375b732c6a7c33667c2d6d8233677f3363 *792469813175873e698540798c426a85367b8f497786385d7f3c526b27617f31647c376b7a2870 *823178843570833a768a40657e2d5c6f2a647e346b823a617c2760763166762561742c61762f63 *782e617831687a2959742e4f762c4e6d25547226536b1b5e7127566e284f712b6074275d722856 *76265773254f6a21516f245b6c2453772a5d7627657f2d5b702762732c5b74225b76365e70284f *6c2f59772c5f7723647d2f59782d698030648034617222576c2151762a58702c506b3047702f4e *6a2157712d536c245170265b6929466323516e2d4c6e275576295578325166234c5c1f5262214b *662843651d55722859712f4869334a692b52671f546e25517329486c29576e2853722b5f833158 *7c295f732c5c6d265872255f752460702f5872334561255979324b69294c6a1f4d6c2d3f5a1b4e *692958722c496d2c53752c556d314e6c2b4e6c2c4c64205577325879305276374a622a53692758 *6b24526728576b29516b285870315d6e2d536f3786a16ec3ceccb3bebb46704047652933541f2e *4d1f32502237471c3a532736562b3a5526415a2c4c6d2b4e6c34486c2954722a52772f53722e50 *70385d783558793c57793950763457793347703054742e4f7930496f325576354b713541642444 *6623476f2a4f7027537d345b8340557f3b538043577a2d567f315f833860843367842f61833665 *7f396a8645597e3a577a31537d3954732e5b8130557c305d7c2e506f2959833f5c743a617a315c *7d385c803a658234637d3a567e3f66843c62782e5f80385c7e365a853a58833a5883356281305e *7a355674304f722a5373314f7f32577c2e5171254e6f274d652252702a51722d54783852783752 *762a526c1d56742a59782c5f7c2b5f7e2d6279314e712d567627537a315b7d2d557927607e345d *79305e7d33577f39607e395982405e8437658a4455813d597d346f85426c843c6080355c7c3f63 *843f6080326280336281326b8037607f37617e3b5b7d37558145577d3a5f83395a7c346287416e *873d5f823d5b80445b824167843e5f7f2e5d813d6481346a89436589416f8b4765853c6c8a316d *8d356a88365f8134688e45759357778e4575914b7b944b72904a7891497d984b698c42748c456f *8a47729259708e457890507a995e7e98467b974c6d914d718d447c914a7d934673925073924e72 *904b758f46728f4380994e7a9a547f95527e95497996487e91447990477a984d79944c7d965074 *8d3f7595477693487b914679934c7a934a72914e788f49698c45768f45708c3d738c4064844268 *8a4576914b7392507392466f87406b86426e85446f85406c8b48768f49779448729141778e3c6d *873e718c3f7b8e44728d4976924874904c78964e738e427e9545728d4382903f7d8d437a8e4474 *91447d93467e964d7999537f984a7c9344698a407a934f678d496f893d6d924a78974f79954577 *944e7f91467d93457c90457e91437694487991506d934878964874984c6e934f81974f86974c7f *944e8697487b985782995081994a7c9955849a4d83974d768e427b954a7a90427a9141839c4f86 *9b557e964f83964e86974f7f984e7c934c6d914b73965177954c7d984b7b9b4e889a5187a16181 *9a537892457f985182964c84964a7c914a7a995080954372934e76934576924c72934c7b924481 *994d7997477a8e40788a35738c4366863f60833f6589426d873e709143708e43799349748d4a6c *8c466d8a46668c4e6d88466d8a4464853f6b8238708d45798d426e8a4964833c6b85446682356d *8b43678a485f7e2e69833f63803a5e762f617b2a67853a6181396c873e6389465f82355f7c3a6d *904c64823e6380357d976465814060843a5e7f40587732678b4268823569833b5476355a793262 *7a316480355e813962833e6e8a3f748b426f8b44648a466c8d4569883c708838758d3e718a386f *8c45738f456a853b607a3965843f688540638537738b3c6a843b73883b6e8744869852768a4571 *8c406a80326a8539647d325a813a6e8533617e325c803254803b63833a5c81346589395d853963 *833270883a65884264873e6280315a8230627f2e69843c62894559813b627e2c6a883f61782a62 *81375f802f5870225a7428597c32628234697c2a6f8d3c6f8a3965832f718a3a6b8d43758b436c *8530687f396c843261863f68863167812563823961823a6d7929687c2d6c86346981326083405e *813163813b657f3265812a5f7e2e6a8437677d326881355a81395b7d35627a286c883d5d7f3759 *762b4e712a5b6c25546f265d7f33617c2c6780325e792f6080284f7c365d7c3b607327647f325e *7f30667e2d5c7a335f792d6a873d748d3c688532667f34668643687d3865823b50792d50792b5d *7a335d7b296d833a607e3c66823a64813264863b60823b608337627b2b5e792d69833857793062 *7d3468833c5d7b2e4c7826527e375a762c536c2858682757763456782d4c6e2d4f722f5778305e *7a345d803f5f772c5e79325779334f7c435b7635546d30516e2a4365284b672465823e5c813f5f *873f607d315b7e3a5c76284e793d5678304d6c235d73285f782e5d793558752b587630677e355a *752f6175254c66204d672046682a425c21466228496a2f466a20476a1d4d6e2550682450682650 *692a4f712f5066294c6e2850752c5277295879234e6b264865233b58244568275f77305d6e305b *792d5a702d50702e4d6c23546b2c64782d6180386071305879304a75295c7c2b657d33637a2e66 *883c68813c668137597c3368822a5d792d50752e547b33577a3656762d526e30506e2d4d6a265a *79264e6f2d577329607b2d5b732c5a75305f73335a78355a7d2f678136607531546c295a6c2a5d *732a586e2359702e527034486627517c2e5d82324d7c33487337496f3048692850763751794253 *6c244268214a6f2a4d6320526d2d516c294259244460294b6e3541662847631f4664244b6a2c4e *6b2e4861294b672d4b66324d6b325570345a6e29667b328ba172c3cdceaebbb74f6e3a4f703a49 *6f484d6d354b713645642d43622e3c613347632a49652b3e5e2836501e365323445f2352692a43 *602151672a5b752b547532597b3359793f53793b5f803f5674365a7d445775396180444f763b55 *7e445d83455b7c3b5b7d3a56803b5980425f834152793f5e7c42496f305674385677385b7c3c4f *723d5c7f3c5d844667884e6983486a8545597d365c7c3360823a5981375d8033517531587e3c59 *753159702a5570315775405c75335c7432547738647e3c5c803a57793c6583436481426c824266 *823d60803d647f375978305d78314a6e2e51712d5a702a58793356803d5b7e34547a38587a3261 *7a315464245b773057772f4c6f385a7728637933647e355e7d396184415f79325c762e64834361 *7f365e80305b7e3a5d7c3463813c688132617f36577c39557a38597d3f6585386489436f853d65 *7f3e6988416e884d6f86426b86456e8a496683425e804167823361782d677e3363843f6583406b *823d6c83416786436183406286426c8334658841658a4e72925372925175904a739142778d446c *8a406d8a43678c4d6e883d7491507e914f77915078934680974d819a528195528097588092557d *96538597528096477f995580934e84995784974d788f517c94558295517f934f7f964e81954c7c *94507c8b467b8e4d8696537b924b76935a779353738e477e964d7a964f83975a83975383975385 *954b8098497a97527b954c85964f7b90438196567a91498195567796577892487990506d8b4577 *8c427c8c437d9049788f4676904377904a78935073924f7091507c8b42708a42748c456c8d4770 *8946768d54748e437a95508192497d8f4b80944f788d407b904f7b90487b8d4a7c91487e924483 *96497d914683924b809142738e437691508197517e98577d9a4d81934f7895517a94577c9a5e85 *964d829857869550879e5b86994f8296468e9948849648829b597e99558b9948879d578a9b4b80 *98567f9a647f9c67859a4d839e5f8699528198507a914a7d8f3e6e8c427a955281985483984d83 *9959829b517c9a5a7e975483974e82984a8598517c944a7c90477e93487a954876995078934d79 *964f7b974f7496527992488097507690487590456e894278904b68823b6a8545708d4879924374 *8c486d8d427b8e486c90487b8d4980964f74924b709047718b3d6c8c466d8d44708c4467883c6a *883c798b3b768e4168883e799144778f4a758d44768c426d8e4671893a738c416c863760813c65 *82336d8538638945647e3466863b6a843b6b8742678b46708c3e6e8c456786506283426c844463 *824366843f698a405b813d6185425f7d3864843e678445647d3b637d325f7c2e6a82395d813f63 *83416d893c6882406984426788456a8640668543637f3a6785406583406279346c7f326a843958 *83466f8c40708f43778e47789145768d4678934f68853a6789426a8b44728438758c3b78893b6f *8c427d8c3e738d3a6f8a405f843f6183446f853469802a5f823a6076275473285e732b6581335a *783268873b72883f678d4966833967813662833f61833a668231617d335f7a365d7f3d637a3364 *752c56723557752e6085485571315676335f823d5d742e617d2c6a82326a7a32647f2e68823b6c *80336680346b822b5a802f6079326d853b6e85405d7b2e5d7937587933657d36697b2d5c7c2869 *7d2b5b79315d7c315c783160752d5c7c33697b2a5d732758752461782c64793364772767742168 *792c5f782f566b23657b2e617f2c65824066803960762d6b762c658038637b365b7b2e607c305d *7e2d5c7a2a5a6925617a316d813870803365813c6d853a6b82347688346988346a7e2f71863a69 *863c647c30657e3b5f792a5c722768802b6b80335f7f33627e39637b3667793860762b5e712258 *7a325a782c5a7028566f2355732d496329465e24496725486b2751732b4a6626566a2646653350 *68326176305e7d3259792e617d2d6084425e72266079344c692c506e2e5d6e3353692f6875295d *6f2853742a60742e646c2e5a72325c733a4b6c325467255a702755722f627d3262752d606d2d5f *6c2d4d672c4c6c3054692e4e63245167295269245469255566204b61215163254a652a556c2f56 *6a24586d2750702f556e24526d29566e2d5c7430526c2c537021476629516622536a295e662b51 *6c2a4b5f2a445728536b2e44621f4f72375f712c516c295c6d2d627830516f2c6d8237647b3266 *7928658133567c31607a2f677a3159742d5a7028536b2e62732a5377334b67254e672661732d57 *7133476a2e4e6328546a2c55772b55712a5a713258702e5e723261743565762f637b38637f3956 *7a3758722a5572304c642349692f4e55234d67214d6e3647632a4055223d5c2246631f4d6c324c *652c4b692f486935466428526926486d334f652a495e2449602749622747652a4166334c662c4d *6e344c632a4664284d682a48682952682d5a6a314e68354f632d87966cc3cecdafbbb64f783a54 *6e2f4d7a35416c2f3b6a2f405f2940642e3e5f2c3a5f2c43602746662e446c2b3c541f405d1e3c *682743642b4e732a3d5926405b263b521d3a60244a6e2e4e69233e551e3453174065253e632448 *672c57712e55722954702c4f702b4f6b2b5370285977355571315d7b34577c305a80344f773060 *7b396177335a7d3757823c677d33618749628141678543658240657b30597c2e647e3766813f57 *7c4557752e627d2d5571315d742d4f7527607f37587b32607e335b7d345a7e3a64833460833763 *803b63803e6682426b81395471345e81465d7e3664823f607d4069844563814365854160823564 *8039667d3366802d6a88386084386383366d86446687416886386c7929607d345e813a66823865 *85397285346c863e6081386d85325c783768883f7489416f863f6883397c873e728d44708e4372 *8b466a914d67924f6c90497691476f873f718c42718a3f6f8c476f883a6181376e8c4173873a73 *883c69893e758e416d8b4570904174894075904a6f8d477c934c7791467891437d934581964a7b *91486e8a386b863b5e792e6e883b67873a708d4270863e6f8f477c95477d904284974982974880 *924282994a7e9857849d517e975087954f7897458498488295457c92487b92497a8c417b975a85 *964c8898487c944a81964f86964878944a738d417591506d853f798f467992507b924a82944a86 *995278985c7d935082944778924a8196517592538099627f9653829a607b934e79904f78965272 *8f4f77965376934d768e4c7b8e447e96538093457e9147768e54708b46728f517791457c964d7b *984e73924178974b749143708b39689150728f45749249709045839749718e3b6e8e427a92467b *954c778d48788f4c799147708f46799243839742809949799247779445778e4281995574914676 *904778923f7591447a934582944478934d7c954b7991438096437b924879954d8192417893427c *9143789149768c3e6e8c3f7591407c933e7f933d778f42768938758a3a788d44728c4470893e78 *904083913e728b4078903e7b913b7d913f818f4083964f7d974d8496477a92477a8b406d8b4c76 *8e49778a406f8d4c758b47778e48788d457a8e407d904981995086994882924b7c964d7b8d3e73 *8b3b879a4d84924477954d7d9248708c3b768d3f708b3f7a9146768f4b849445798e40788f456c *8f46799143778d437f964e89984f8794458aa26178914e7e954b749651728c45708843728d4479 *8c45798c427191436c8a3f7e9249728c42818d417a8f49728641708c49798d4473923f6786436c *8c43758c3f768832778c3f6e8835728e4678944c6e9043758d44768e4d738940758a41798b496f *83396e8c47698738768c3f7684336a8942708638728337708434738943678237758c3c6f863e6c *873e657f3464803b6283386d81376c843b6e8c3f6e8d416e8b3c68842f738b3e6c863b6a883d77 *873a6b81376781316c812a6575276e84405d7f2e5c783258752d5e7f3e5d7c33637e2b5d803a6b *81355b78325b782c6376315f7e33587c345b772656762b4f641c4f6b1f4c7125627e3861772d61 *782e607f35607a305e80365c8033597f3459772b5977335b762b5d7c2f617d285d7c2b62803965 *80386d873b5d802e5a7e2d5f7d2f6e803359792f6583396a7c2f5d7629587b33617e3164834365 *782b687d3d62812a617926617539667c2f677a25687e2f5f7b2761782a5e782b677524697e3165 *812e52762b627a2c58782f627529647629677d2d65752e5b732e63782c5e7a29627f2e5d772e5c *7d31647b2762782e68852f5f732268812c6a842e6c802f6d87416e8b3c64863769803a73823276 *862e7b8c3b798e3f788c44778c4173863e6e7d3a617a3d68773064773263762e5a722d476c2052 *6f2554772c5b6e276477306f78285b71285e6f2a5973284d6428556626506526546d2e5f7e3a56 *6b2e6479387085367a85377d8a3b77883e799149758745758640738a42788c3a6e8d4378843573 *8b447685426f863f677c3d72833572874470833a68813f6b81346f7e2b71893f6a712771813c68 *7d3372843c717e32607a325e6d2e5d7230596c2c5c7636506d2d5769255a6f254d6d224a621e4a *6723475d1d44581948591d4a63274e662b4f6323536724526a20556a20546d324e652a576a274c *71354c6c2a547225506d27506d264a6b27536c2d667837606a265c6c2c566b1e487322536f1f5c *73265e7a39527336546f2d506c2b506d2858752e566f264d6e284f6828596f255e742a506c295e *732c55732f57742b576d28526829526c2b596f2d5b6c2d6879346a7c34637b34657e2c506c2b57 *6c24566b2b5d712f637129526925405f224f6f2a4e6d284c7239506c2c587328537331506d2b5f *753c586e2c507336526a2a3f5f1e546f254d6d2852682460723047622f496b36516933506b2450 *65285571305d6d354e632945672d546b2d5f7733536f3054692e5a7230859a71c2cdcdacbbb146 *612b4569364b6b2b3a58213857224364272f613533531e365d263b5721355928305222315d2f38 *592031602132602a3b5e263a622438562333542642682743632443651e456021355a213a571e40 *5d1a32581d425e233f5e214c62224a641a3e62214b6b28436626516a294b70325072294e75305a *7f375375325e7e336575354d6f35638138597027627d3669843d5f85396384385d7d285d7d3860 *813b63843664843f5b82435b7b3959733460752b5779316b823166873763823f6986385781305e *8236537f3b5a7a345b7c375c8038587b325b7c3c5d803f5681425e803a5a7e3669823f63813d5e *81405980406a834568844164883c6182315585395f82346583416b873870893a6c8234637f315a *792c58782b5f7a3458792f537a325b763452752f657e3d67853e6581416d8a436b824467823f69 *86386685366383356585416f883c708d3f708a3a7d964c6f8b486a843f698b4666853a6b8a4063 *8a3f6c8e406a8945758a446785426c842d6a873e6983386d8e47778d45788f3c6f934a7394486d *8d446790417c96476e8c437996457c97486d9154718d3b718e3f7a914d6a8b437d974879964d7e *974a7a994b8597428b9b52809648829a4c7a974a7e91418199568298477c984f7c9948879d517e *9c537d984a82994784984e8197517f954479964778934874904e6d90457b974f6f934a7997436e *8b466e955278914c7e934973934a67924a6989486e8d4d6a8b436b8c45788e42638a42798d4778 *8d415f813b6885336d863d6e893a748d40778b356d8e486082436a873f6c8d4968883d74853f75 *8a3c7b923f73904a76914a7b934a778f436c8a39718732718c497f8f457793477c904581964e80 *95418498508a9c55839946839b4f819a49859a4f839858849147859a558196427a913e7c964b82 *964681954b849a4f839851879f588d9a4c8596477a964a809748819743849c558b9b518b9a578a *9e578d9b49869c6381974b7e984a789854879949929c53939e5593a150869a4c889c50839f557f *9a4f849b588a9d5883994f84974c899c5086984c879b4f8a9b588a9747869b588199538a994b89 *a16283984d85954b81974f7e9249809446819a4d8e9c518498508da05883994985995080954a8b *964c839953819a5c81924c79955286995080985d7b995280964b82995080994c7d99518aa06081 *9a577f9a5281944a7d91458199597f974c81995a8096517797597a944d7f95497b964b728e4471 *8e486c8e49738a3b69803860813e6288446c873b7d8d448295487895457b934c7e8d4a7a935075 *90466d8d4f728e40658d41678d47778d3c768f3e788e43748b43769044779442759240758f4177 *8c3b778a447d9245708c4572883f748d42729344749342778d407084377786376a883f7188395f *843b6381326280345f762d5e7d2d6581395f803a66823b69792c6685385e8634728b3b738b416f *873b6e8a3f718c4064853f6f8540638b4767853f5e792d678b40708b41668b3f6d864069873d6a *8a416c8643647e2f5c7a325e752b607226607625657d2d5f843b607f29677e2764822b5c772f5f *7c2a5c792f5f7526557b315973334f6c234f70274b662259742e5b74265d7b2855772859742154 *71294d732a5775264e73285c793a58742b5c7a2d657f2c5d7e325d83315e7f2a5d80345d783067 *802e57732c66873463843a61803a6081385e813465842d637c28567731607b2f587b3769822f64 *85396b8331607f3168802d6781356b853b698233708b386581336080345e7c38687e3761812f6d *7d315c7d3f667a2a637e35607a2c6678235d8130678c3f67853f748335697c2d6e833a5f7b306d *8431707e2b738b3c778934748f4a66832f72812c5b772c54762a57782e6c8232667e326c7e3364 *7d2d6c7b2b627e2c6b7d296e7f2877863b6c7f3c6a76365e78316a803269802d587d3559752c55 *7027557e375e7c326282387284416e8d426584306c86356a813375853268823463812f6a83366f *8536627c3b57752d6a80316780346c7d2a69813a6d823e55712c5e792c6181335f762f6680346e *7731617e2f657f3957712e5577334b6b294f6a2b4a642a49652b496629566b274e6928526c264f *6b2b45611d405616455c1a4a66224f631c4f681d526e26556a2d546c274768274b6a285762205a *722b4b6d2b5b712853793c5f70315a792e62793b5f772a627d295479324c6a234a68264d6c2656 *75406073295876254d6b2f527a2e4b6c285c732a5a6e2d576f305b6d275c732b55702450702553 *6d2b567224557336516c28556e275a762f607e37667a265d7c3157762a586e27536f2a607d3361 *7e2e60792f61792754753357762e4b64224a692a4a6826416129576c22607326486c265c743750 *702f556c2d50652f5d7a3156652b47662a425b23506926486e295875334e6d2c57712c5571354d *6f3651682b586e284d672949662c546a2956712b60793c586b2c5a753550652d79946ac1cccdb2 *b9af5b6d33405c2f436435426028415c222c53293457253351223952243c59233c642632551f3a *5d22425f1d405f203a6530395829456628405f233b62223c571d44541d4c6022476122415a1f3b *501b48601e4a601d42632249682a4668224766214361214c6b27496323476114405e1c385e1a41 *62224167234c662c4d6a254a68304a691f465a14506f2857722b4f6a274d732a50782f53782d51 *70284f6c25607734627e345d7e3b667d32547534657725587233617d3f547d355a7b32567c2c5f *7e2e577c3057793b51753256793752753657762b5f7a2d5a7e2e5f7e3259803c607f356780355e *7e3e5872386c813c5b782f607b31627e325e7e2b61843a64874268843f64814067853a72893977 *8d456e852f627a2e687f3869844668863a627f2f6275276a7c26607d2f64702e66813970853e69 *89417084316d88446c8742738a39708e4c7489456e8a41798c416a833669893d71863670884371 *883c6a81406d883a6d853e7a893a738e41788b3e748b3f718a417d9043798a3a748b42728a367d *8d358190437a91468191427e9042768b368090407d92497991487e8f45849646829340758f3f70 *86427c94498496498d9849869b538599548397438893498c96478694418a994084944485973f8a *97448a97458a964487994b85995489954680954a80984a7c93427d924d80975b7c954981954783 *984777934c7a8c3e7e954e8596507f954b75954481934b7d90407d9547798e3b719044728e4675 *93537b9a52718e468494437b974d7b975e7796567d934a76944c7b954f7897537b92437c91457f *9242779046798e406f9148788d3f768f417c96437f95517b914284944b8591417e90427c924581 *924a7b8d41788d457a904985934d8a974a7a934d7e95468196478291457e90477e945179924583 *974487954684974b87994781994a8299498c9d4f859b4688984a909c4d86995386984680984581 *954282954385994f869c5d8797468f984982994d829b518d9d528b9c4a869e58869c588198577f *98548596418b9f5e879b588c9d538d9c548fa05c8d9e558c9f59849e5c889a4e8a9c5d849c5393 *a35391a05090a46b91a05d8fa05b8c9b57899c4f86984880984f889d6194a55f91a565889d5080 *9c64879b5b8d9b5385965577914881954c8297488692428296497a924d849d59849b5d82964b7f *98518c9847829a5a8397498299507d94577c8f47808f487b8c3d7f944c778f437791517c914c7a *8d417088396e8849698946688d506a8b4b6c8c3f718c436c853e6b823a798b40788d3f7d8d4075 *8d456a8b40758e3f758e466f8c437b913c7b92457a91437586336c8730678a3d738c4374893978 *8d3e768d3d818f3a718d407288377589346e8636778c3c73883c788e46768d498295487a8b3f76 *8d3a6e8b416b8338677d317086385f7c385d7638788b396c90575f7a3a757d316680316e86426a *85457787426a81336a833a6c893d5f80296077286c863a607c305f79356a862e6e7d2f68894266 *7e2d637d28687c276f7d25607b29647e35697d33687c26698531708535718a33688230768a3b70 *8535728b376680386b792d737e286a85375f7c2c7686436b843c7b8a4276873c6f7f31697c2f69 *852e63792663762a60782467813065812f6f7d2966793976812e617d2972823b6d8932667a2d68 *7928768b3967792b6b7b2b617c295f7927637c2e5d7c2a5b762c5670265264215c732b4f6d295f *6c1d576c1f57691e587530566f305d722c57722b5e7535536e226179275a762e5370276077225d *792f5d7b3153752d506e275773255b6e2060791d6074236a7d3160752d617e306383346c86396f *7b2e7481326f81386c7d32607c3978822f69792e6d762c5e7a31657b31757f2e6d7724707e2b69 *7e3169792461782867792867742a6b6c1e6c7c24707d2565802d627d2f5e7931677b2f5970235c *6e2160752159742c58692a5574235b752c58782e6b782b6876296d761e7879236272215e6b1d51 *7427506d2f5c7a27586b2257671d586c1e536e23506a1d5e6d21536224597b335c762a62732c4f *6520596724606b2b5a712b4c66294d672c506425486426496123485e1f455e23465e22425e1a3b *5b184b671f45661f3c5b1e4351184155183e5118364d133f52173a5a1b485c185067204f612451 *652047631f4a581a526b264d6a2a55732e596d2350762856712654682c4e5d1d425e173f531649 *64264e642252692e4b6227516327475917485c1952631a4c611750611d4c641c4b66204d682544 *561f485a1a4d5e174e6a234b67284c6b244e6820516e224b6c2350662452631d56651d576f2451 *6f29506e2647611f4d65204c5b254c5d2055601d52642048652643561e43611a485e23446a214b *632750672654682a4d5e215d6f24505f1e41591e505d1e425d1d48581e5265254761234c5e274b *5b2044591d475d2348611d455f21506726596d2b5964295268264b5f21515e224d6024899b64c4 *cdcbafbbac466c2c4c753a4d712a4b7233547530476829486d2d456f37446a30425e234d6b2949 *692e4b6024466522436933396420406b28476f3143722e3a6b243e6f24405d1c3a661d355b1d3a *662a3763244567255074314e722246732a4268294c702d456e29466a2a4e6d2547651c4369283d *6b25436826406d273f64244c69284d6f263862294665224065204f6e22425c183f5f1c3e5c192b *551e415d1d3e571e41541c3f6025425f1c73948791a98b5f78285e7a304e6f295b7c2a4d722c53 *6d1f526d1f517935516f2857752b5176295c7c28557f336084385c843553732b557b355782385b *7c3152742d547d2a6680345a8335578337667f30677e2e68833b5f853a6185356e8d4d6d8b486f *964a5f874267893c6b853865843964863f637c2e6383386a8b4367812f668230627b2e5c7c2c61 *7e3564752b64802e6786406c893c748f406e9041758e4175893f6c8a446f8d406f924d7891477d *9045799444768e37698b3f6c8a44758b457b944a8193447996507b96467a90397f913f7f8f4377 *9244809c5f81984d85985286a264859c4d869e5287a35a889d5e86974c869c657e995e849c5083 *a05e89a35a8aa56089a26b91a454859d5a8ca05f889c4c85a05f88a25e879a4888a0528e9f5d91 *9b518c9c4f8e9f54869d52859b4e90a0568b9d44899b4c8ca060849e5c879e5e879b5982974f81 *9a54869d4c7d974a7e9a51849c588697427e96467d9b4a849b527c944a7e9547819746858b317a *96467c994977994d7793427b944c7892527b97517f914d80974d7b8e3f75924581954876974a6c *91457d9340738f47799a4e79964d7c9954809a54719352779347849b5980994f80984d80984483 *995079975174934a708f437b964b77944e73944a7898417d9b577d974e81924579954e758c427e *93427c995185994686974588984d8e9b52879a5284933c8c9a51849748919c4d899e548d9c4e92 *9d5381964985984c85944383984f8da1548b9e53869b4f8a9c4a889946879748859a4f869c5188 *9d5c839d5d899d5a88a35c95a15797a15b919c508c9f52869c538b9f58899d58889d58899c4c81 *954c889f588ea3528c9d4d859d57899a5884994c859948889e538a994f8a9c508596448b9c5183 *a05e869f56859b5276974c889c5181974d839a508399497c924580965377904683974a879b517e *994d85964d88995382994f87974f829a538299508294497c954e82984c7e94477c964677954a7d *954a8197507e914479954b7d9956778d468291487c934875944b7891407e924975904364883b78 *9443778d47769148698b42768e3c6a8e47688b3d6e8e4b6083435d7e3c6e8b44768d3d78903a79 *91407b8f3d828e3b7c91417c9443738c397793477d90437a8f42698b3c658640788c3d6a873d6c *883c6a8b3e6e8635768d45778d446b8a4269843e6a7e2f6786416d8b426786406e87396e8c386e *873f6d8c467590486d8642677f2e738e4064872d6a87316a853a708d445f89496f89405680406b *82386981246f8b336b8939697f2d6b84336d873a6e883d7287336c8c3764852b678638617f3270 *81346e853771792b6e7e2d72873565843a6d81316d89406a8431758a41778f4363813a6173205d *7b286b832f6f873970822f64823f7986377e8c3e6f862f6b86406f86397a8b3865803369833065 *812e648132728a3c77863e7281306b8d42608a4162843c637d3b5e7d3162843262863969832f67 *863b6b84356484396a802d6684355f7b2d61772c6780335b7b2b607f316d87356c84356a893f67 *87386e842d62792b62853a5f81396986386a862d6b8638778f4b65863f6e84346f8a4073893b6c *8738768d3a7987347d93477c8f3c788c44788e3b7a9043788c3e87974a6c8a4478843283913972 *85347c85336378286a812f718330788d427f8b437f8c3979883a72853f7382357487336a7f3270 *84316481315a732a5f7c33657e346e80336f7b3b68782f637c3260752a586c2564772659782a66 *7726597526607527536d235073285176255f7729597223566f22535f185273285f762f66843c60 *7b365d7a325f823c627d365f7228536d2765772b60752a536b245d6d235b7a305c7d3e5c79245d *7c2a65803160823c5e7b2d547932566e2858732d5a6f2e5270214e691c576e234e7227506a274b *6d26496c2e5b783556772d5d72285c732e5c70255968214b65245c7225526d274f723156712d5c *70275d782e5c7d3764833b68843f587c345d7e305e7f336172276178255376304a732b4a6b2a4a *6c2b4e702f5a6f314f662352702649682b5a68215c6f2052722f57733158733056732e5e7c3163 *76335e792f546c2c6272285d662564722f607a32506b274e6b265a702a597322596f2c556c204b *68254c6d275275305d6a2b4f6f26546a254d692a5d793060742763813a56722f5676325f753161 *70275d702e537123556d2a51702f536f2e48662e556a2e54702f566c275d7930627c346472378c *9e72c4cccca9b7a74d70324a7239476d3c5072334a692c4870394a692b4d692f456a233b6b2a4f *7431446c2e4e7833416b2a4769263d67304a722e4f6b204c7131446f2f4c712d426d25436c2e39 *6629345a203760263762223a652c40692a426626406a2747763349742d4870264a742a436b244e *762c3a6827396522476f304c7228476a26466a25385d213d66244566313f6b2c41652b436b2b41 *5f27426d233e6320476923486e293e6b294f74304270354b702c3f65202f551943672337601a45 *622546682b45702c4c712a466e2d4c732e466b294a6a2b4b6f2b58712f547d3a4f7a30527b3158 *7633507931567d375177295578285a792b577226577f34607b2d58863c6886405b8140648a4660 *83386280375f86326486446c91476e8b476d9052708b4570874670915067873f698942638d4e68 *873f7290467d955176944d6c8b50738f4576934e6f8c446b8e4374934b7d94497f984f7791557a *965875944c8199567c9a557d9550718c407891407490437490436e8b44739242708d4c6b8f4277 *974b65924870964e7b9348688d436e974f7092407d9a54769a4f7e954a85a054809b587e975085 *9b5b789654829d578099598198527b974c7d98487a9c627f995f7c9b63849d5f81995d8aa15d88 *a36686a35f83a3598aa4628a9f5c8a9f628ba16b87a368839e637a9b5a849e58869d50839b5684 *984b86a46a7b9a54819b4c819b587d9858819f5d7d9d5c849a5f8aa16d8ba264849e57849b5086 *a35d84a35f879f4d89a157829b537f9c5386984781984e819b54859b5d85a367829d588ea06186 *a060849a557f9b4d839a53859e5d88a36485a06089a053829a4e839a4e7e924b7896587191507a *975173954e6d975076944079944a7d964c768f4576975672955376964d72964d7a964d7990417b *93407d9142798c4776944a6f8e4a7e92497e92407d993e79944075914184934182943d728c4279 *92487e99497e9848819e52829b5d7e98457d954c7d985281974e859a5673954c7d9647819c5080 *96448194397a924d7492477e9b5182995681994a849b48829547889d5b8294447f9650849b537f *9853829b50859d538b9d4c839542859958859a5385a067819c5276965c779759879b4e76994f7d *995d7991477a9649799553748f46698e52769048739348748e416d90566d8d4770884072944c7d *944c7f965076934a809444829c517f95447b96477a92487a9047819a537c954e78974f6c8e4572 *9148698b447a8f457c9149748d4e8597478091457591447c95447d964b6b924a6f913f758f4275 *8a3e7b92477a904576904076914063853a6085396a8b3a688c436a87426c8e496e8c426d8d4174 *853d768d3e6e8c477e9142778f3f6e9045648b43668d4765843a6a8b4463843c738b3976924b6e *93476d9148678a3e688c436d8a3d768d4079924c728d41758c43678b435f863d547f3d577e3669 *83346a914d778b396d8d525b7c37718c456b8c417391416e8a41608238728a3c60843c76903e6c *8a3c7493486a8d3f7a954a708f42738f437091436f8f3c778e3e718e436a8b3c728e3c658e4171 *883a698937718c32798c45748b427887406f884169833f637d376a84326f852f6f8c3c76914477 *863e72853a6c8a3b608231618132648132627e346f8c3b6c853f68843460823c67803a6681396b *893f66832c708239738a466982346a843b5e84305e803464802c58772c5476355f792857763766 *803067873e5a823a6584365e802a5f803b5b83395e874067863e718d426786376b8b386186436b *883961883c6b8c39628d3b668b3e75893a729347728e40648d405b863a738d407293407791406e *873774934373903d768d3d7a873b7d8f4c7a9547708d3477913f788c42758a3d7389477091497d *974c829547738f42668839708a43748b407a8b44718a3d6b89416e89466b8d3f6e8b316b883b6a *7e28667f325e7a2e62823d6e7d3667823d66813a64813b6b81316180306f7d35648033677a2f66 *7e356785416f8d3a5d843f6283365876376c8036607f29608033567b3f62864367843669853b72 *8b396d8232688132637d3b5d7f3c5c7d3a607836667d2e66803364782c5d792b51732647692344 *672a4d6b2256753059742e637f2f6383406083415d7c365578335e7530576f2f516f306074285b *702d5467294f6a32506c294d652b4f702d647e3f5271275a78285e6f305b6e2b64773052782e5e *7f3d50743d56763253772c6881336781326481405e843c607d385e7b366271346276295778344e *6e284d6b2e506c294b7140476828466c2d4e6b2c4e6d305873215a7426627128506425486d2c4f *682a5e722f587939537221517a306173265c6827677227647a336174305674404f70345472264a *733152732f566f3b4f642b4c733253793559782f647b335e8135638436576a2f587137516f3060 *782e617836587d3954733265874066843c667c3b5e7a384a6f335b7731547030556e335f6f3154 *7132869f73c2cdccacb6994363283559222d5a25476d2c4767293b612c4f69264a6f333d601e3c *5520375321446026455f1f3d5f2a4a5f234a6d2e496a1c436a243f62264b62204e6f2a4562214f *681d426428466a28416b2541692a496d2c486c2847631f42652b466b2d4569263d6b28476d293a *69234a6622466b2a436b273d6a28416224496c2f4568264169213f611b40641345611d426a223f *5c1d48692c486d29476420365f244764223f601e41612147642c395d23334d2241612b3f5d2540 *642b42611d425f1e476421435e1d456321415f1c4060224860204c6d1f4d67265e7e2e587a396c *7b355f7c35557d3b567b325a7b2e6282335e803d69874560823b5c7c34627c2f617b325f7e2660 *852e64812f537b2f6679315c762e5679326a7f3d5e813e6c8b416085376485426d8642798c407a *8a50778f4770914c7192426f8f477b94527e92487995547996517e964b849852859b667c924478 *934081974d85934586985082944a7e97577e964a7b94497c934c83944284974883974986964b88 *99518a994f839b5081995d7f9748899a4b78964c7d96407d954a7a92477f98427e97477e98518b *9c4a829b53859a50859a567f9859889a548e9c5e859b5d7d9a5581994f859d5a81994d7c964d7e *92487e97497d9a4c899a4a82944d849f5283994b899d53869c52899b50829953879c4c8097467e *99497d9b578898467f9c5080984a7d94497d974c78994e809858849c51819b5a879945879f557f *995184984d879e568192497e98537e974882994f89a15483944f82984c84994c7b94537a98597b *9858809c627d935178924975934e7e95518398527b96467291417b98547f93497993447e96527c *95527b91527b8f476f8d3f7793498497497c94496e8d45728d427d92477e93437e9241839a5384 *954e84974d819241849847819e5b81974f869958859a5d8c9b4d869b518d9b4c899945899a4581 *994e8b994c859c558a9b518e994b879a50879c538ba058849f4d859b4a8595457e9351859c588a *9f56879a56839a4b7f9b4b8398498394458b9a4884994a8c9a4d8b9946899d58889f548ba16088 *9a4f919d4f8e97448c98518d9d51849852869c4e829a4e899d5190a15c8d9d5e8c994d909b4f86 *995583954a78925273955a7d934f758d497b9149738f48798f42768c47778c4881954d7a92457b *8e3f798f497a924b759150748e49758c49798f4d78934b7691437893417e8d4781904785974186 *95478598507c92507891447d94488596487e95488796477e92477e9959889a538493457f904a81 *984e8196447b934273914d668b40779146769140698d497592457992447193477d95457d954773 *8c3e7d9749789148748c4a6a8644688b3e6a853a65833864843a65803166863764813268863471 *872e6789466a843769883661813668813464813567812e6281326c84326680315f7e346a7e3867 *82396b893a687f2d708b3d678a426c853b748c3d72892b6a8a3c6b883a6e8a3a6c8b4976853d77 *903f768a3a6b8c3e738a2f778d39768d3a7591446e8e487c914779913685933f788e4182934076 *93416f8b3e6983346089405f8943678a41768a3b7c8c4274833577883d6b873d6e843d688c4a7a *92536d863171904077913b728c3c7d8f43758c43759048738d41738f476e884068883f738e486a *87437690467891407a8f3c69893f7389386c8b44738c3e70893a778d3b728a396c853669843662 *7c2962813368802c6d82357586397884346f883d6d883d6a853a788a3d768c44798d4784934066 *833573833c738436789241769149798f3e7a914d85953580963c788e43738e437a8d43798e416c *90447b93438198468396477d923f7c8d43808e45708d437091416f8c3a778e3b7597487b984880 *92428293427d95466e8f438193477d90467591417994497f97458397448a9a468194458095577b *974f6c904381974f80934278913c7a94458693467a8e4372924e788e417697457e9345728e3b78 *8d3b869135798d408689357f87366d863c6b7c336f86316b842b76842d7b8f3f808d44798d4375 *893578843f69894364853d6c84346e7c2865803468813065863a647d2a62752a566b285c73245f *7628506723577029606d2b587b2f55753268874671833d65823459792e647b2e647d3556792d63 *7b375a792b6b833e5f7e41577a2c5c74296273276578375e6e2553752e62752e567a356d854161 *7c335e7e35586c2b5c7838677531668444647a425f79366a79325e7b326175315e732e5b6f3258 *6f344d6e34556d2b52692c5f702d5f782e5b6f25616a2a65723656723d62712a62763a57792f5e *6c25657b316879285c7a39606e23556a255772356576376681367083316d833a5e7933687d386c *7733667431677d3065722f61792b5f7b2f64742d787e2c768340748a3f6c8844708a476a833a65 *7e376582346b83407a8a406b813b71893c65823c6986465c7833687a335c6f2f5f742b64722c55 *6c324b642d81956bc3cdcda8bba735592f4665313e642d355a2a305f273a632d2f5e2c31632e37 *642c305a283d5f223c5f203557243865292e5d2b3e652b40631f2c501d335720385d233e6c2c38 *61203359223961263e632b45602144692d32632747712e3a6b2f3963283d6829346428385e2547 *6f2730612a345c24356538456a2d3e6d323a6223325d223a64223063292e5c1e2f65253665333f *7028356f35486f2e477231476b2b3b69273d6227406729335c1f305e21376720395c2046692a36 *5d23345f2337571e415d1f376526345b1f416426446a284265294364273a642343621e3f642039 *6222486e23496c293f6324516826476d2b587830648141567a3253782e58792958853f587f3c6b *85426885366f8e4d748c43698d476c8e4c6c8c44688b416e87466e86376e8a3f62833a69843d5c *8847648642588237618040698a447591447191566d945872955372974c7a9b537799597e985281 *974b7b8d447b944f76904e6f964c75944475974b749239798d4374934a6f88416b8c496c90487a *975379964d7e9b527293407d9547819240859b567d985076975b839c53789b5179974a7d9c507e *9b53849b4b7e9b5d879c54869d5b7e9d5e829e577e99577a96428199437e984e77975878965a7b *99607c984e74944b74914480964b7e9b5c7c964c76944f799958789b5683a15d809e4d7298497f *984b7f995c759a5d7b98587f9a527e9c54849f4f7a9c56849f4b869f61859e55849d548399537f *9e63869a5a829c5081a15a879d5a839b5a8a9c5985a460869b58809d5f85a25d809d5585a68184 *9b5f879b4c819952799b647e9f6e7c9f627c9a55869d5a7e9c5a899f58859a598b984e859e6485 *9e56819e60829a628ba36b889f58889b4f869950839d50769a5f7798557d995686a3647f994682 *9d5c8ca15d839e5a849e5f849b5a7f9d5f8ca15f8ca05d87a16196a3658da45c90a46a8aa26c90 *a05c8fa26298a35f91a1558fa5628aa35f92a05289a15b92a66c80a164839f5a819c4f82974580 *9c4a7e9c4e859d5882974f849c5a8599547d99577c9a52829f5e829b5781994e8699547e97527d *95447e934384984b7e984b849b597f995b789a53708f4b7b92487290496c90487c96507f934d7e *95477a96507f964c8197527b93457c90507692467b964e79964c6f924d829b5d8a994a849b5387 *9e5b839d587c96507e96527e9b5c81985674945371914771914c71904a748d47778d4a708d4876 *8b347f964577924077924a798f4b7c9551869959739350738e4383964e7e954276974d7e984b71 *91418096487e9a537a91427f9747748d4875964e6a8f426d8b357e8c3f688d447c8c3a7b964e6e *8d477b974f7f94486d954c7190456e8c4464883c6b8d445d853a5e823b708f406f8c3f6b893569 *823a73883e5b844068863c668a406e8e446a8d3b5e8a4272985c6c8d48738e4b738f3c7292486d *8f3b6b92447693426b8b3b7491476f8633798f3b798d40789345708b3b7e923f738f43738a3a7e *944b6c832d5f82396f914272924b6f8c406a893a6f8d40688c446a8936678538738b3f6a864566 *84356186385f863866853d6d853c6a8032728c3d5f87416b8c3e6d883a729349708e42658b396c *91496e8741728a446884396488406688475f87405c80395d81315f7b3d607e31627e3157854354 *7a345c7b2a53782b5381345c853c6782336a83395e8040687e405b8a426785385d7e2f6483335b *74265b6b235d772d6e853c778c407692486c8836738b41648a34738c4470852f789141778f437b *92446c8b43678634748a3b798c3d849147829143879a4d86943c7795427b92456a924570954778 *93437a934c758f416e934772934375964e7596507996497d98467b95457b9442859b537795526c *91466f934b6c934a7a95477097567a903f7b9548788f496d8e40658e4b7191447c9843688d3c69 *8f396684357392476f8d47718b40648c44758d457c984178943e7a96437c91417293426d8c3f7f *9852768d3f7d95487494477c95446984306d8a486f843b6b864364843a6b89436386416d924875 *934769853a72883d6d894a6a894261843f5f81306186365f7f315f83355d823e667e395a7a3857 *772d567b38547a2f5e8030597e3964813560813d577329697a315379395878355e803464853f5f *8742637e32657a2e6a782d557230567c36608132537d3956763162782a5777345c6e26526b2569 *7c26607b33557531597424607d2d547a3459702e576b2c5e722e50732c476c2d4c6f36516d2c4c *68244f6924506a274b64215b6d28677f2d4f6e2e5f742d5073315b7e355a7c3369853769823a64 *82395f7c3e62823c6b7e38678643778b36638646698d476d894d758940788d406c955277904b72 *8d3e6f8d426d8a416b86396a7e396a874d69873965834369843364823564812d6081365d7b3d65 *7a32658541548142617c3a60853e6a84366b843f678841607f426483405e7b33527d3c62762f70 *894164803c637d3693a574c4cecea8b391476c354967292e5727324f1f3560303c5f2339602535 *6228375a232b4f1a3b602c3e5224334e2242602647662b3b5f2a3c64263c672640692b40622233 *6025405f1e3b592749672b46662444652540612a4b6e2a416123416426445e2141682a42601d3e *6623486929486a29416525385f244062273962213d6525395d223b602629591e3a551e415c2246 *6a33496825426427436d2c40692349702c47702d4463233a562348672440601d3b5b21365e213f *64263e6422506c2d4766253e62234560234666264463263e612540672c3f5b1d40631e3f601f34 *5217406424466e30325621355e23385a26405e1e3d6222445f21485e22455f1e4a5e204a66284f *652a517b314c6f225d7c2860802e6981345c7e39587d3d6487476e8c455f864360833765823166 *874163813f647e3a677e34547e425f864c637e4063792e667d336f84385d833e6483476d88436b *8d4c6c8e497797517898537291497e8d4984975776985e8093567f985a7d985d7f965580954d7b *9964829856859a5382985479904c6d96527d93568798547b924880934f818f42708e4178994e81 *97477f974d82984f86994880984b8698498a9b507a924a81944680994e76934e7e944d869a4a7d *954e78955379934d7f96577a924b79924c76944e799448819a4a889852849a557f975485a06789 *a0638d9d548a9e5b869e5e849b538a9e5a8e9a5c889b5f8aa16489a36e7e9b5b839c5890a05691 *9e608da05f929d55849d5d8a9c56859b56899a5c8c9e638a9c578a9b5c879852899b4d859e6484 *9c638a9c5c899f598a9d558ba05b869a55919b5183974e78924c80994d809954819856879c5186 *9a5e8da36788a1627f9856809958849e5c869c52859a51829d59829f5785a15f869b5585975680 *994d7c99547993517e9a638396467e9750819a4d8b9858829b5c829a5c89974a7c985081955184 *9c6b8b995089994f84a05c849b46869952859c538a9e5484974995a45f8a99528f9f59899e5f7f *964d859f5d819d53819956799447869d5482994e8d9e54849d4e7f9b5785995488984c839a4f81 *984c7d984e829c588c99487e8c408694487a90457f93447e9a5f8a9746758c346f8f467f91397a *8c487f8c477b91427a90517f924e77903d7d9047788e487d8b3d77873a738a3d648543688b4766 *8a4868894169823568863f70894a738e46718f48768d427087376d8d44698747779047748f4175 *8f43749041748d3e6f8635748d417590487c9343829745799648748c3f6d8c44678c405d823f6a *8d3f6a8b41648b3d728e477b8c3a80994e7c985477944f7c95486f9148748e447293497f995380 *9650809758849a53808e45819a4b829b547e94487b95437b97517790467a96507d92467c964876 *965077944879913f79954a728e45788f4773904f7b8f40758d457a93517a8f3d7692507b934f71 *8d48799042798d4475863a8595478d9a4c7d99537d9442718f41788c437d8d3b83914080964279 *90458493407c92447b92437d975273894073893d6d853b6f883b718c387492466c8c486a883d75 *8d486f8b406b9047778d426c86417c8e476d8f47778e427a8f3e758844758f47708b436f8b3f76 *8f417e92436f85467287406787436f8a4165853f5a7e4359793b697f346482425f7e38607e2a65 *7e29657d33637b2b647f435f7d2e58793353753358782159762b607b3160762c51692750732a66 *7c2c57722a5e7c2f6081385d7a2c5c7a33708642678239728d48778c416981376c86367089356a *802a7a863677883f6b8a4964823e6a82346d863d6d853a6c85386f8a3c73883f768d4465823a75 *8c41789144728c39708e407f914077933f798d487f9245738e48768e437e964d758d3f7c8d3a80 *92407c8b3b7e9147708c3d758e3e7a8e45719047758e4172883e6d893e69833e658a3e6d883c71 *8d3f6486416d8540718d43698642718d3f7d8b36829646819646819549819244778e4881964682 *94427a8c486d85337a8c4274883e708744678644617c3062782b69802f66853f6984366481315e *772e628338637d2f617d28657e2b5d834054723b5d773f567639557430638139637c365c702c68 *82384f712e5572285d712b6a772a687f4265803b5a7e33657e3765804265762d6a74286b7e3661 *7d36617d355c77325c712e4d6927546e294c631d4b5e2356651e476128526d2b567b3462823c5f *7d315d7a306d83335c7628627e305b7d3b64732d5e78315b6a2b5970265d73314f67254c521a4e *6420496825516b27486a31536d2c526924526b1f4f6b236b7b2d667b3067844066843f65823370 *7d2c69833766823d658131687e2d6381316d84376a7e306982336884336b7e2e72853071863774 *86397289366c8437697d2d718233748231758235677e385e6e2e5c70264c642453692556743263 *7a2e587e395f7b3f5f7234576d2c5a6f2e5b6e2d5f702f5a72305872336d7b2f6f833a697f395d *7029697a356a7e3f6f783f9ba56fc4cdcca4b3853b593638622d48703639683336602d43693034 *652e355b252d5e2c2d602730622635612b3c692936602440662c3d6726385d2140632637622736 *5f2637561e3d6b2f36673c486f3239612f40632b41682e44692f44662a416721456a2e48702d4a *6f354673334170283b6f282d5b1f305921294f1d3e5e223e5b1d305f26416f313b6c33466d3a48 *73353e6f2a3f6a2b3a6c353d6526436c2d4569262e5d2540662f366430486222396522446c233e *6c24386026275c1d346022487533386b2a446f26416a2537612235642946702e3e602037632740 *6c33385b2544632040621f355e1936601f325a1d3c601f365c1d2e612330601f3b6820335f2035 *6427345f1d4063233f6b2e4169264364244a6b22436a1a48762e4e7629507826415f265177365c *8337548139577e305c7b2a5f81345f7f355980365783425f864968843b59813f61832c62843763 *8237617b365d7d3e5f76346a863c6988445984436a864066863f6d8a45709246738d4a7a95587d *97577d9c69829c5b7e9a4e7d97507f9852829646829a587196587a985274944c688f4d799a5678 *94557f9a557d9b5c7d94527c96577e934b7b9854829a5081984580975c80974981974582995d77 *9a56809c5686a066879f5a7f974a7897607b974d7b99537e975077944d7f97567c974c7e9b5d85 *9d5279995f7e985475995d809953849d6287a064859e5b8ea464889b5a849c60829a5380a16c84 *a16b829d5585a26289a1598aa360809d60819b4e829c557e9a56819e5e8399597d9653819b4e80 *9942839c51869c53849a5885a1687f9e5c89a36589a35f81a05a89a361859a51839c5c81944b7d *954f859c60809d5d7fa06085a26189a46888a05b82975c8299547f9a567c9a5584a16b839f5f81 *9a5289a1677b994f869a57889c4c77995f7b99537b9c5d78965f819d6080984f82964d79975274 *9653799965839b5c7d934c7fa0617b9d5978995e7e9c52789a5c7b974e819e6083a060819f6282 *a25b839f5b849f587e9d5580994f809a5a82a05a88a3598ca6628ca45a889d488ba35c8a9f5986 *9b58839d6483a467899f6090a3638ca45c8ea25d8da35b8da1558da56c85a468819b4f85a25576 *9c5a819c517c9949899947849c5f80974b819a4c7c9752788f43738b3a7f924f7b8e4777914679 *8f4467844361874260843b6186425780415e833f6f8c4d6a8a44708b3e6a8e466786446587406c *8742738d56738d3d60813a5e7f365981405e7f3f67853969873c71914f7f96477591446c8e4867 *873f648a3c768e3d678b41637f33628c4d708d43738d4373914d7994476c8c3d72903c5d86426d *8740748c47778e4c7092486d90457c92446b883f708c3c68873b69863f738e4172934178964b72 *944767894066874966864479964b7894507c9550849c527394506d914974934972904576924d75 *924d6d8f477a9141698a41719045819546859b537e964b7997567d9a5281965075914279944980 *9f537f964b77924d778c3f76904575965c7f9b56649346708d40668443718a456688416887415e *7f3d597f385e833d658d456785366f8b3f6d893e62883e67863f6f843668833f63823b6c8a3b6e *8331738e407891476e8c3b6c852e69924d6e8b4b7690436788466c8d47668d40638942738a3a68 *873a66883f68873c65813a69853a60853f578143647f3b65813b597a2c6884376080376a863260 *812f6c823b6c84366c843a6f88376686436c8537758e406f8c35779241668b446785406a813d73 *883c6a8135637a3770873d67842e617d335f7b35637d2d6f8b3c69863b798f44739147718a3f69 *8138728e49799041809243778d3f76904680954878924183934784973f85994c7b96438596456f *8d43778f4f82974b7992477b9a457e974679914b7f964b74893f7c91467691516a8a4572914377 *91447393497691477190477593488196507991447c9753839f517d98507d92466f8d4682994d84 *9b557e954b79984b72914d7693487f97497e92437d924280984a7e9243768c3e738e4871904970 *9146698c4275924d738e4875883f7c924b688a4369813f6785416d8b4066823f6b85407086456b *843e657f3e60823963884266893e68843671863865813d65833e5b7d335c7c3862833f67823a64 *8539688b3e6c823c647f31527935606e24667d3b658338607b356b81316a863c65793d637b3462 *783e67853d6a813558813e517630617b2d62772d5e7b365c76316a84426384337089426b894466 *8b4d65813d62792f647b3a657b33608137597b32557b395975335c7d386183375d772e5f7a2f63 *752e617a2a5e7a2c5a7d3e547d35567e396c812f577226617e2b62762f67823d667c3a687f3d6b *7d3a697d2f6080365b762f697d33608135647f38738540678740617b345d80355d7d3b59742f69 *80316a81365a7a396781386485405e772c5f7c37597c4166823d6a813d6a7a3464844072843f68 *823c61833a6a833c6c833d7382429ba977c3cece9ca871385327416029466832425c292e5a2b46 *6e3442692b3d61283b682e3a56203c5f2932552a364d26355f2f40622349662547662350712e4c *6b33436c2f41612d446333466436476e3c4d6a28456725496a243c612b47653445692d456c3348 *71344d722b4f7028416e31486a2945642c336227365820486b294d6d2e4772244366234c67274e *6a2a4865275b7235466a28475e2b41652953792d50651e4d65294464294b74314d73354766264f *772c4c7326406b2f3e662042601d45611d436a23456c29426a264060264464244c6e25506f2557 *733257732b507b374c7932587b364d7d3b4b74313d60253f601e46631f42621d40631f3b622344 *6725416a2539641d486b2947692e43681d465c164b6d26335a2141602144642a49681f43641e3d *571d425c203e652452722d536d375d79385d7f3461812f5c812e5c7d2f53782d597837667d346a *8136698440708b436e8e40708a407b944675904576873d6e89407c91476f8f4c6e89336c8e4569 *833e6e843569823f6d85436d8f4c698d486b9250738e3b748b40708d3e6c88387a904a758c4970 *905479914d73945177934f859e567f9552839a488197568096507b964780955b77914778975373 *914a718e4880954f7c93508898557b965b7f9e66899855819959839a588d9c59899a55829a5a88 *9c5b919f5f879a5d889f67829851889a4d859a5a7f914b8096537b934c77924e78934e76985282 *9a4f84974d839b52869c5a8099528a9b5d849764849d6d849b558ca253869a55889e6990a36486 *9f648da56d849b5a91a05f8aa06490a35390a46a8ba564889c60869e618fa2668ca364809e6884 *9c5989984e83944e86954a7c994d809b6286a05d8a9f5e819f63869f5b849e6280974c7a914b7a *93557f9650869953849852899c5c88995271924a80954e7e99557e9b5078995273945776935f75 *90406987466c8d4a7c93457c8e4376914b71873b7b934970904c788b3b7d9247728c3f738c456e *89386d88417591507291506e93487597527998547b9a56809854889d4e8a9e5882964b829a4d81 *924a7f92438292487d92487d964c79924677964d77964c7d953c7492447f96407b97467c964a7d *914576925675964c739040788c4a718d496e8536728a43748d42728440788d44758d516b853569 *853b6586427b8c4076843d6b843d6e83316b802e688032697d38527b32628032647d325d794056 *7636647f3761803b5b833565853d648136657c355a793369803c6c8442738b3f6a86426d8b426c *8c46638642738d3d7b914d7b8e4c788d55758f44688a4365863b728b407691417e90428492457e *8f407c8b3d7f96528392497e915275893b7c913f80903f81903f7f8e49788c4370944a79965078 *935078965081985280934682944d859a537c91478396468696468094457a934a76924a7b92447a *8e48769247718a3d768c366f883e738e45738843748a3d7d8d3f6e8d47758d46788635748b3a67 *8b4067914077904c758e407c90407a8b3c7e9147768e4b70852e6588455a7c3d5a8143607c2e6a *853a697e3d68793a6b84446880326b8d456c8b45718e4565874172863d7a8d46748a3c70853969 *7c396a87405e81416a843667803165873d65813a68813365863b607d39627830607f3a587c325d *7127657e276073256182335e7a30628c4862814260803c68813363812b64824260813b6b7b2d67 *7c2a668138678135637f396b843c677f32738d4872863c6c833e73853b6b853a6f873d6c863f69 *88416a854467813e677d376b823e71863f6985416e853772863976913f7d913b788f4c7d914d7a *92427a914b7f92437d944979873a6e8d49668e3b7b924577933f7b924e7f8d4084924373883b89 *97407a9340768d438091446c8b477a90478193497c904177934a6c8d476e8e3f68883c6e8b3e73 *864273853c6f8a4372874269893d758c45738a437f8d437483387c8c3a828f457c9141778c4182 *9042839042848e398186357584386f853a768e4a7a8540718940788d3a71873f6e813674853f7a *852d6984407d8d4e788c4e82904c8392407d8e4575924a78904b7b8f48788d4c6c8442627a3372 *8241718b44728537798e486f8841768a4c6a85426981426584416a80346c85426a7d336f823573 *7f3275823c7988387a863f6e8435607f366c82317c88357f8b437e92467b85326d84476f792e6e *7e3f7689377a8b4276853d70853d60773073842e7386366c84326d89406f86436a7d2d6e863b7b *8d3d6e87456784416680396375355e792f597526596e295d6f2f63722e58793668824064813968 *7537616e2c6274286d81346c8037697f396f863f6d7f386f833e768b4074842f6c833f75823865 *7932627d366172305d773965823466824067742e60702865732f6d732c72813569782f73823972 *802b7a8a35788c407b8b4272863f757f3b73823976853b7281416a7e386f823469813b79813671 *83447a86437b854075833d74833580894a9fac80c4cdcd8fa56b42612838612c456b2c3e652a3f *5b2142692c32652a2d5829335a2a3b622e476927325723304d1d3952204b692a4d6c33516d3b4a *69345d7533577426475723304b1e3252202e461c36511f2f53243b642d3959253c602643632238 *5f22405e233d6833466d2a3861273a68233f601c3a5914315c223d591b3c652939683042642044 *692a3f6221486c2e436e264764263f6525486d294766254e6d2d4269254c6c224b72274c6d2940 *5d20476e2a4c753644671f435f1d556f2847722f4f73254d722a436e2a547a345a762f56773556 *7d34578642567d31527d32557428537b32568041516c2a5874304d722c456e2d4c6c2645702843 *64204b70244e78244c72245072294a722d466c2448672342651f3e6521325d1d315d1c335c2641 *6629385c284769253f6426476922436a2141661e3e6322416c244367293b60234b6d214b753157 *7f385476356282375a81375c79355f823e668842778e377693417991487c9549788c4379954c72 *974e7297517b944c7890427b90316e8a3f72893f74913f6a853871924e6d8a47688a3b6d872b66 *82295b79346489456a8a3f6f873a6889427b914881974d7f9b5d81995b849a4d859c5270914f7d *975079984e7f9a5b79934882974c7e975182954f85964c869a4c8a9a50879c5e84975082985786 *995684964e86954582924a7a8a3e7f9a568199548195477a914a7a91517a984c718f4375904269 *8e476d924a728e457292407f96527d924c7f965275984b8198487f9647819247769044838e3f7f *934485934282984d81995982964a798e456f924d81974d84994f86995882974f88995087974d81 *974f7d95547b924d7c91497b964c839952829a517c944577924477955176924c76914876944479 *944d7792457e91487592447a96467a903c778c3e7992497a903c7d92407a9040768d46658d4e65 *873e7595456f924066893c7e8d427b934c78924974924d6f8d3e6d92466f8d4472924b76874874 *8f42678c3b708c3f788e45768e406791456b9045718d3d608b466b893c76873677934a708d3876 *91447b8e3d7f8c407b8b3f7b8c497a944e728a3f6386336785355e813360862e6a843a6f8e3f7c *98536c8d496c8f37618b3a60833f5f813565823d5a7632688b406586406682396d904575823869 *83316c88436084436a843c68843d64894266873c63863a5e833b627f436a80386c843d647f3763 *8335607e2e617b2f687f2e6a81386f812f6b83387b883c728a456981376e85407c8e39798b417c *8536607b336f853572883c708d4169843b698c437a8b3d6a8536718c317291486a883f708b3a74 *8b336d8a3b6e894360803a6b833369853f5f7c3d758f47708a4178924e749046718f4975914174 *8e416f8d42768d43748d47829447859b55869c567c944780944a88994e859d578498527e934c7f *94457e914b788f3f7e97497f964c7e965080964c7e94497c8d3f6e8b4069863b798e3f79904177 *9442738d406d8b418092437f934b7691447c924b799248718d3c798a436c89416c83346d833b70 *8b3f7b91507d92477790476d8c417a90496e8c426b8d4b778b3d7b8e3f758d4372863c738c366b *85437786417b8d43738a3f7b8a4176944e76904871873a6c8b386a813372873c7485327381306d *812e6182335985345f7d2f5d77275b74256081385b82385e843e647d33617f2b6e874267853862 *7e2d5e822a6b7b3368782e5e782868893e72893b6b8940678c3f708b3b70873b70883a78904b77 *8b416e893d6e8a446a833f67832f758b3b6f8d44738a3c768e397c92437e934c7e96507f93487c *944279953f7c8a347e8839728830768a3b6f863b78904a6c8d436888426f8b386f8e4d78944672 *8b487792467a904b738e4b7a9647748e43728c456e84346a863c71893a648345637c36647c2d63 *8334667f3b61782b647d3167802f75883665853d6b803273873b718a3680923b758232808c3e7e *92467e95447e8a3f8a923e7a92477d9143818f467e8635768e38728a35718b3a648031647c337d *8f337d90487f8f3f6c854679853f6a813a788233728a407386456f883e79924c82924a7e904d7c *8e4372893b6b894c728e54758c48718c437a8b3e6e873273874061843f70883c6d89407d8e427a *934284913f828c39808c3f848e3770893a6d853c75843771854479893f768a366d853173793172 *8934798c4460813773843f72873c718737738f336d8d4b74853374873c7c8a40788c43667d3768 *7e347087316d863e68853d7485406e7f386d8338657e357184377082366580375c7f406a7f2d77 *853368762c66752a697e356276316c802f6a813076883077873176843d7988356d873f718c4274 *893e778a4a5e7a3d677e36667b2863742a587030657b2f5d732e6779406f7e307b883e76872f74 *8740708428647a347d8c48818d4c758040737f376b7f366c82346c80376a823b7c8a3f7d883974 *8744718b49718233708f44748c46818d49848a3d99a87bc4cdcd94a1755c74364771343b703547 *6a3d436f363e642946642b476c354264363a683f3d64313761303a6637476d2d4d702b556d334d *6f3551733946753c4d7032476a354a67384d6d384c6d2e3e632b4c6b2b44692f4c692f325c2541 *66323664283e642a38602b405e2738632e43613043622232582a3c642b42682d3f642944642a45 *6a3231653542602936602c476b2d38693241683146702f486d2d4b672b456f2f44682c3b622741 *67294d70243e5f224266254c6a324b6f364264274d70304d6d264a703a476a26557d3a4f75324a *6d364770304d6e2b436a2944682b42692b4761224c7434446b294b742f4f773753772f53762c4e *6d284d6e2a4b6a264768274c6f2d4f6f264c6d253b601f36582a3b6626406929446e2e3c642539 *581b4366243c5f243f6325437232507037435f26416335406828425c1c3b581f3c5d233d5b223f *62244767283a61264e6d2c4d7237476c294364274368253e60203f5d2241642f5d753655803d5b *8339527531587b3761853e6b883d647d3d6883346b853f65844670894068863d6486465d854466 *88476b8a4d5d803d6a864b658740698c426d8843728e48798d437089416687406d904960854363 *853e66843c768c3d7d924d698d4f748f5079914d7e91437a94447d8f4777924c7a925079904b7c *965784944a7d97547f92487d964f7a8f4a788f49779150738e4c7994527892577e934c81974875 *964c709052778f4a6a89446e85406f8a4174915378905b70914d7d93447d92447e8c3e8697487c *944e7f9449758b48788d4879934f79945485965a77955d7b964c79965a879c64839957879b5c89 *9d63889f5d7f97507b9459839961819a5b81995d7d98557c95547d98527c98547a8d496e874063 *8644738a486f8d4c7d934c7a924578925182964279924c728a3f7e95477d934b7e914a7b8e4479 *8d496e8944688a476685486c87427c924b7692517a935079924974935375934f819245778e4973 *91487d9854709250698d4a6c914d728f477891446d8a45768c446a87426a8e4f738b4377904a76 *94527b964e80964c7d9558758f4a758f4e7a98516f92496d8b4762854867863e6d873c6582406a *82406385435d81316689496185496080405a7d315273335772335d7d3961813c5a79415a732c67 *7d3c647e2b6886425d7b365f81435e7e3e627c3c5b7a3f6a81405b7e3e607c386e8b426282405e *7f3e6379315e7c3d667e3f617c3f748b4370873a6d8740687f3c677c3f66823c6a83436e863c76 *8a3d6a8a3e6f8534768740617d3a677b3367823c658a486b8843698941648a3f6a8e4b73864268 *843e748a3f638546688a3e6c8b40698440658243657d386a7932647c2d6a82366a813967833e73 *883f6e8b4664854461864072833d67833f75914e809859698d4f738d4b7293507491447d924279 *8c3d7283357381396c7f2f667e347483317f883a75873d6f87427b893a718b3d73893b6b863f72 *833f6f833b69853f799140819046759043708b40738e486e884966823f6b7e386c853f687e3b6c *823e7489417a8e487e954e7f954b80975270924f72955171904a6c8443768e51748b47658b4966 *8842788c487488437a914e748b4777884a708a476c8a47728b3e62813f638643738c4767854475 *88406b813c6381416d863a65823362853c577c38648147668a40678442767e3875812e67803a66 *803b7188406e853f698b4073893f73924880934d80914477964f798b406d874b748f4d778c3e75 *8d427b914184924583985a7d9a5d8295487c954e7b965a7a974c8398507f98527f96587b954476 *934f7a8f4a7d955181954e8a9d5e8c9f5877975c82934c6d8e3f66843f6f8b466c8c427a8b427c *8b437c9043798f4b788f447e944b748e527b8f42738e4c74904b6f9349708b3f6c8d446c85406d *8542759140728d476e8b45748a4c7e8f3a768d3d758a3e7c8d3f78863e6e89436d8c496e793371 *8d477188476a8a4184903f788c386c8b476586446582366b84437086406b893f59854269873d72 *873d78873a728a456c883c819044798c436e89346f8d4481934a78934a6b86436f86487589486d *83427285406987416d87436a813f6e8240778849788c486f8b5069884f65823d6b833c65803468 *813a7b914a7387476c823c6f853d6985356a82336b843d72843b6881416f84386f8b426a85447a *8d485c813865854266843c6276366a7d425d75406e8442667c376d80366a80346b873b6a82396a *813f64833f607e336282376a813675854671883f708b437089457381386c8242667934657f3b65 *8143577733647e37607e306579336c80395c73305c7c386b803a73853f738745677f3c65793962 *702c5f72335874365e71356472355e70365f70335e793362702969752d6a7c326e863e718a446b *824377823a778d446c843f768a477a85366c8034717c2d658039688542748b4477893b8194497c *8b407789416c7f3c6d7e4369814972834c6880467a813b9ca979c5cdce8a9d664f70364d6b3647 *6d36486b384d72354f6f38426d354a70324b6c2c4f7747506f334b672c3962264068224a743142 *6c2a426a2345682e49702a416b263c6021395f274d6e2b4168363d5f2837592342662e3e652246 *5e1d375d243e622445733d446e2c4566234a6e2e456c263964243c64243763204263214065233f *67263a5e223b5c2a43662b3f60203c632a3869293765242e5d1f44622149692544642545621e42 *5b1e3056173a6424345c1f3f641e3f601f43651f3b6327436c2b4669264c7135366831456b2d45 *6726416626506f24476b244d6d29496f2a4467294369254e6f2f3f6e32416e28496a2e48641f45 *702648702a446e23496a2948712c52792d537e2f52772a587b33567c2c527d3d508033446d2654 *78294d75324d6e2e4f71284e6d244c712343681d486c1f477127456e1d4f7b2e4573274a712a4e *70264875245379354c792f4b7325436c2b4c76375677335074274d6f264a671d3f5e1b456a204d *752d426d2b41611f4a70294e6b1e4a631e47681d4a681c4e6c23537a2b55742b5d73296180346d *8b326a8837617d30537f3b6983425f813c68863b678d56678641728d387e913f708a406c843b5c *7b3c65843b537c306c8a415f842f5d7e3269812e647e3967843b678e4569893b6b8a3f6e8d446d *8c38728a3e779344738e477d9143768e407695487b95457894477892438392457e944b6f8b3a6e *864366893d6387416e8d476d8d46718c46748c447d934d7c924e7e974b83995482974e82965c77 *9449768d4482954f84985a76924e7a924c7993536c8c497d975778964f789143759042748f447b *92427b944e7291486e8a437288366d89346d863d6d883f748b407390527e995a79944d77934a7a *964b78934278944a7e95508a9c5d8da1658199518a9e61869a57839543859947859956809a5185 *964e80954b7b95496d9658698d427a97467a994f7a9655829149768e4476934d77954875904c75 *924173914675955077914f789140758f447b914b7593487c964675934b76964c76924676914379 *93517e913d7991467a934a718d406b84306282336b9045738e3c768d4178914874914774934576 *8f427d8f41809045748e44738d436c88407590427d924d7693566f8d4773914a768b3f6d85406c *853e69853e6d86435f8334668335628239728c446e84376c863e6b883f64803e6a85406a7f3765 *7f35678440627e2e607d3863823b617e2f6379306a7f2a66802f6f82366a7e356a812e7182306c *813471853a6585426d8a3a718a3f798d4071843b6486397a8d31778b4078914367863c748d4568 *90565e8646698a416c843f6a8e426b8d42648a3d6c8740637f3e778c3e6e8d446e8f4476904a71 *8f4571893f708b426c8a3b6a8c466f8541738d3d718f41738f446d8e406987386c822d68873773 *904f798f497185356f873a67802d6a7b276e802c6c853076883b627a327e873a7281327585376b *893b6f803366742d5f732a6d8135698233708a3f6b83316b81286e8643778a336b863c64814063 *793c66813776883a72863b788d407b9047698233799040768f3c7c8e447a8e3578893e6d85406d *823a68833a6b8139757f2f758e546d81406a88425f7f3a6b8a3f6b863b69813363843a5c844867 *853a6c8b3f60844267863e6d813170873b73853c6b813b6277255c7e3064823471823867863c79 *914c7d94487e96467697487e913e7f96487d9951809b497d9855809a457e974b7e93467c923e79 *95507c9644718d3e7893496c8836788a3c798934768b3f6c8c3a748b3e758e3e73893b798c3b78 *832d788b3a6d81385f7f2d75832a6085406f853b687c3053782862833b6d7c276d7c295f792761 *83396c8639607f39618130647b2f62772f647c235f782b5f84396c84326a8536607e3476893e76 *8d3b5f863f6a8536657f3d6f863765833b698338738e47798a467793497d98507d964d758f517a *8e497489417d8f4a6e863d6a8a3f758b4377954472823b778c47778a3c81903e8296417a954b78 *90497695477e94457e8e4475924680934a6f8c467a934485974d7e954d84914282974d7e92477d *924a728c46778b3b798f44708c407f9248809247788e4b8192447a8d427e8a41798b3b7b8d406f *8c487b914a81944583934d7b8d41748b426f86436e8237758c427e8b42728b446e853d6f8a4679 *8c3e758d406e873867853b6c81366a86406681316e843e73812b718237667d2d617e3a6f883e75 *85406c7b326184316b8131647b3571844b72874170873870864172894273873c6c83376f833f6a *762c67762861782e60792c6581385c7631647a2968832c71843a74833c72873472822f6c813760 *7c325c7b38698335667c306a7c315f7d366e7d26858a3a798a3e7a8d417d8944818a3f6a7f3477 *823a74843a7789407086427b92486f8c4b798b41658435728a4372853d6b80366e853a7f8c3e7c *8d447a8b4976863d758d4a7685416f7d426a843e788b3c7989419cad7fc3cece909f6a5f6e2f55 *78454b703956783a4c7638456d393d673853753a4f702e486c3845662f4b6f2f45692e5274374e *6b2c496b2943662642692d426a284e7130566f304a682c445f2544602d375121415a21375c253f *64273b5f1c4160223f5f253f65294365264364294267293d64273e662541662039612643642539 *6624456c2a4166214368293f65283f6a2f4b671f456a2a3a5f2a3a5c223f64283b5e1c43692637 *672a335b1f365d25436029305521345d2432542031662b40652747652a3661293f652644631f3f *662c486727456425476629406622466320456824486a27506c2c476c25466f2b4b6f2f4766223b *602738602645651d3c66233f692643682e416c2f4d76364a76374e7230507b344976334565204e *702a527324486f26516e2850742e4b67274870274671264c6a2242692941631f52702f48732d59 *814254813c6590435d863d63883a53782b4f6e2e547c305d81314f7a334b722c4e773357742c49 *6e2a577529597d304d772c486e284c762b45692d466921446b1f4d6921506b234e6c24486d2747 *681e476a234e78283f6a22507020507624557323476c234170295c732e648138688a3762854364 *813267823f6a843b6485446989486c813a67853b58752e6984406a934d698b456e8d4378944a72 *90497a91457293476c8f44708e417395447192457291487390486c893c6f8c456e8d417290426f *8b437d8c456a893e6e94516e8f46748a47638d436f924575964276964d7e934d75955f7a8d4680 *974a899d567f97547e9b5b7b944782974e8197567a93437d8f4c6f904a7e984e81995280995383 *99577a924a8195487996577b924a79944e7f94427f94547a8f4283954f878e4572904682924a7f *974b7f954a82964e85974b7f964d86994e828f477b8f468195417691477190476f8c4070924376 *91337f934881923f8591457a90467389497c95546f924c849a5d7691457887366f8d476d8e4d7f *935071894f76924f7988406f88416b863c769344718f40708c41728d436a90456a8941698c4773 *903b6a8d44809550778e44738a426b8641758e436b8f45628944728d40799347758f4a6b8d4865 *8b4473934366813364843c5c7d355e8234597e366086436f864065873d6e853e6d8b44678c416d *863e788c3961853e748c466b8d43788b406f86367084366480376683396f874174904a6d884362 *8a43658d47718d496b8a466f89427f8b436782367486406182397688376a82386e803f7184406c *7e3d697e3d647a33627f34638648708036667d2f6987376e8540738b41728b40758e45648c426c *863b69802e6b853a6d87396e873d7a8f546787466c863e6d8d486d81386881356480365f7e3d6a *863b758b4a698331748c466e883c778c43758e4576873a728b42738d3f798f3c798f417e8e4472 *89426a8b4365894274883d7991456d8435658947768d436f893e6c7c38647f3a6b853a6f823b6e *8942728c42818d3d7c89396d824171843f66783563813873833b7c8b3e758a437b8d3d778d4471 *873376863c7d8a3b798d466c863f6a8a4a6d85396f8d4378893c64873668883f66843d61813a69 *833f6680416c853d798a43768a3d788d4469873d758e46738b41748b3b738d42738a3c69833373 *8737648136768e3c7d8d3d668f49768f4362863d708c4769884365893c708d4873893c76864973 *873978964c77914c799250729047718d3e7491517a92477d924c7b8c467c8d4274873a7a8c4375 *87347291536f8d456e8d48748e43708739718f46749444688b4075924a788f45769045788d4483 *92427a934d8192426e8b477f8d448590427c85386782397386426d823965863f5c7f3c6180346c *80286c893b708c3e6e863a6d863a5a7d365c783e5a7e3a5f8335647f2f61813475873b607f3569 *873f62823b627b355c75326b873a6581326980336883346c873863863b68823e69833d6687406b *893e6b8030708b405e863c728c47778d476f8c4775863e6c823969813069813b808a417b893b6f *8333818d4478884c7d8d446e893d6f893a748448708244728c47798a486f86487e8a41738f4575 *8e427b873f7b8335758c426f853e6b843c6d87437b89427c8a4286974b7a90447e8e59788b4780 *90457f8f43768e476887476d8c476c85406b803272852e6c88376e81366f8335567b426f813a6c *823e6f86376e813475893a65843f66813f6a843d64813d7387416f81367d893c7388486d7a3e73 *853e6f87427685466a813e6c85436b874269833d7280426a823d758739687f336e85426f843a6e *833a727e2f6d82336e7e3760803960793f6373346e79366b7e376d813f6b84336d8132647a2b63 *7f366b81325f7a3967803a70813a7581416e893e6d853769802f6e7e316c7d416b85426c793665 *804275863b718635818d4764812f5e86426d874178833d728742748a41768d496e874f6379416d *834070813f697834667e3772843e6e81466d833c6d80406f843c74854393ab7fc4cdcd8ca15f44 *69363d6435386b3849733d537a353d67314b6c32477335426f32436c2d466d2e4d6c2251763250 *7f344e7634467130456d325174314b7330446c2e466c2f466f3450742a4a6d2c416f363d672735 *64283c6327476d2f4e742d4d732c4a6f234267233f62264165243e6726426723466d2a46662743 *6c243e65214367284667254267244169253d642330602338622241682d4466243b5f233f66203b *6220416c24406520426c3240682b3a5f1e436623426522425d1a3a602343622140652d49703640 *65293d6927335a1e45672747722c466a234d6e2544702a466a244d6f26436e274f6d224e772e4b *712c467437527b3362813760802d537128557e2e50782651782a4b6d2552742d4d762f446d2b57 *8036507f394e7729507b2b5175244c74263f6d265177304c76334c762b526f26486a244f732847 *732c446e2b547e385a803f57823f4c7734517d32557e2d4e7b334a722b49752d4c772c4f782856 *7e2c4b77344869224c6c2e51762a496e27557f2d51712545712c4e78324470304a772e516e2b4b *6f274f691f4a762a3d6c2348773443702a4c6f284b6e22415e184a6d2a486d3051681f48762d48 *7625506d27446a26516d24435c1a42682453792a507326527726537a2d5d843f6385366b8d3b67 *8d3c6c8e4461853769853764853c6084335c81366287316481396f8a3e69853b6e853e738d3f77 *9149728835698c3e668e3a6f89337c93467a904476914d7a93457f964673903f6d9141728d3b77 *92486d94517c9243658c43708c3d6d8b42798e406b8c426f894176924e6287436f954b7692436b *8d4074924e7b9b4f7797557f9a617b92467b944e839953839449829952889c5c879c5981995583 *9b5788984d8a9c4c869a50899b598da0638e9d5392a1568ba3668c9b47919d5a89984e7a92487e *964e889a5585994c8b9b578499527d9448789145788e427a913f738c3c6f8d4a798f496f92526d *9147738f406b91477d934577955069853c6d8e3f72934a6d863865813268873b67863e6c8c3e6a *8d46788e417d934b728f4775914c7c944a76954d6f9144738e3f758f416f8e4376964d74923e76 *93437592457d9141698c40678b40648d3a73914d768b3a768f417292457d964681984e7a954e80 *924c7e92497a92437d9549658d4d688b42738b446882316e8b3b708d467790457c8f416c8b4175 *8a4b728f4772893772873373893b6c8939657f37647e3e72833f668141738840727f3773864168 *83366b8835758b3b798b39758b3f748f4a7d913c7786307b8d3a6a853e6c8d4f6d8b44778e426d *8f446a8a406382366585406e8c4979924774843666833f71904a72914a749143718b42748c3965 *83346b8b4267873e75904b728d4683934f7f8d3e8191457c934a738e4c6a8c457990457a904575 *8d45778f466c8d3d70893b6e86387e904b7e91457d8e3e76873a7a8b427a913d6e833678883f7d *8e3c818e406f89457c924182984378924e738d42818c3f77913f7d914b81954681954884913d75 *91487c964c778d428491497c984b809a52859b4c859545829b4f70914977914a7e95476e833c68 *863e6c8f446a893d698b3d798e43758c3f7e8c427a8b3c778d3a6f8c3d7e9140708a43788c4078 *8c43748c4b71863c7e94437b9246768d407693467495437b8d49728d4c758e46788f43758a336b *81316988406d86346e914c6d924d8093457f985180974d7f9344748c437a8942798b4080934482 *9747749144798e467090437a91456e8b416d8c3c638131708a386b893a778d427a8f3e7b994e7a *974681914682914278974f8096557991428092487e924d7a943f78923d768d42768840788e416d *8b3f6a8f3b6f87416f8d3d5e883d6a853a587a365d7b296685316a8535768c49718c446c8d3e6f *8c426b883f6d8a3a7888426987386e883d69893f6e8a3f749046728a3b6b894373873f6d8a3b69 *873f6c823c6c843e68883a6989427e8d44718b3e6d85406c87406f813a7084386d8a49838f4281 *933f7c92427692496e8a34788a3d6d803660853c718a42708c416c873c78883b6681356c8a3e62 *824370863b778a3e728a3e6c843f6981336d86376b8b466d85446d88427886316f873b6b86425f *7d336a813067833d677e3c647f3265803f6a7d3e617b31627f375c803465813c6b7b2c5c742e60 *782b6a79286786326981316684355e752a687b3568842c6c863070893568842e71893d72853c7d *812e7489366f8542617d39697123637d3265792e637e33697e396b7b3474813776853f667a3061 *7f2d6787406a833564813a687e37607c326c7d2c69812a6c82376b863a6b873f6a87417085366a *813d6a803268833a59763169843357712c6274296b803868823864813f6681356c823569823669 *76316e833d5c7e3d6b863f7983356d873f6980316d89346f853d75893f6a85487186406c7b376b *803e6b8645708337647e37687b366d853e7389426f90496d87457b89487c8d4a9eae82c4cdcc8a *9c5d516f3149713e659150578042456b323d6b2c4b70384f73334368283c592545682b43652236 *652a365f234465304c6f2e4169254b6a3047653043652d3c6a3442652945652a4a682b35602744 *6727406127436629396626446b2e4368283968273559294461264d6d344b68263f602044662338 *5c233a5e1f3d65233f65253b6022476b254264233d5e22315f2230582041671e43692540652543 *6a283b69254467213a64213452152f4d1642561336631d3564273b64273a5f273f66253e682b45 *611e365d1c2e581c3b5a154268274166284966214267214065224564244a6a2248702b547b353f *6b2f49712e496d254f712b4b71234e792c527a2e4f71274e723449722f4f72284c702452762f4c *6d2348722c50762a4d6a1e4e7728567b334f78325e8946538136546f26507c324d7231557d2d4c *6e214f73285378294c752947682847712b4a713248652956712c577c3c5880375c7c27577d2658 *8132547932517b35527d2d4f73334c7b3048702c52742b4d7224426d2744772a3f671d4366274b *72214d742d507226537a2b456d22456c24426828426c264f792e4a792b497527527524476f2d52 *7735527d3053772c436a2d4064214f6f2d506f2f5276234c6e214b6e254667244f732d44691e4a *681b50732d5275254d6f224a61194d6a1b4672284b6c204c76244e732b586f2a4f76295e7f3562 *7f2e5b7f2c5e812a64852e5b782b678d3c6c8b446f8d446e8c3f708c446f91445d863f718a326b *8c3e6a8a436c873f6a8931728c3e6c8b406a8b4166893962863d6089466f8d406d92476f8d4663 *8a416a8d476d8c3f6d8e46718d40688c50728d407a92496e9348708c47728e427e8f427c914481 *974c87995c8294407395488197507e934c7d94537b924a7792497592477d954378944e79954772 *944681924a7c92497f924c758c47789149748d46739650799149788e396f8f4a73894276904779 *974d7d934081953f74893e768c457c90497690487d92497d91457f934d8196558297577f995483 *9a4e7995467d97517994467e91438393447b92407a8f3e81964d7090446b8a3d758a4277893b72 *8d436d883b718c407292426f9242648b4377914f718e4776904a7a8d4977923f7d974c7f914373 *8b3f6e8a3b748e3f73905281974f79914b76944585964978914475914882964e79914d80974c78 *944e7493527691447d9657758f4589974b7e91497e914f7b924a7a9650798f3e7992417790458a *9949858e477592427e90487d904c80975174924379924d7691427e91407a8f4b788d487991477d *91477a9046758e437b8b40708c4c758c44728d446f8b406c8c3c728f488193467e9652798e4d75 *8f447f91467d8c3e79914f7c914179924b718e426c8d45718a41728a4573843e718232718c4273 *8736678c416482336b8a436a85347289397b8a3b788d4475873a6483396c853c758b3e7d914579 *8d4773914e799148768d42719042718d42768c487792497c904784943f7e904a859147798c4475 *93436f8c397990477590447e8d417b8f467d95557d91417e98467d974d7b8d3d72863574904c6e *893e6e8b426e8f4270853c69823f708d3e738a3b738f3e748b45768d417790427b8641768c4374 *8a3d6c8a3a697f2e75853f6e86426d843d6d8a486c863971883376893f708a4072863d697e2f72 *8240798b427b8c3f788a436a863869842f6b853376903e758c4472863e677e376e8a4076852f69 *85396a85377188317a893d6f8c426e883e6a7d30637e3b6b8230698b3a6580396e853b768b3c73 *883d758c446d873474883a758e41647d347288436d823a617f41758f41748b44788d4c7c94466e *8d3d748b416b853468833d7e893f738b3b738943758c3576903d708b446a833266803969893f78 *8f447892427b9042768a3b7585306887377283316d8a3a728a42738e446e843767823f73833a76 *833c5f79356b772e6b803271883a6e8a3b607f3f6b8238677f3b6d813b6c853571873a6f843071 *863f6789426d8d4062873f698d3f6d852c5c7c365b7e2c64802b6082345e87437287446d864370 *86377a8b3a6f8434628138637d37527a346184406f833f637f37668440708a4968843e597c375d *7c3555722f5e753168843669833e677c326b813c6a80346a7d2f66803d5f762e64762d6a7d3367 *853b5d77325f6f28597d325f80385c72325976325c81356b85405c7e35698331577a3d54723066 *7b2a6a812a5e732e5879285e7329607c2e60742a65792b6b81326c84367383346f85426e843a66 *7b32617a345e7e3164792c63752c58722c65702d4d68286071346073276b77286a7d2d6d83386c *8a43667e3366722a6f812e6f873669843d5e793d5e79306b813069823d687e355f7c315f79365b *7930648032647a36617d305d74315d7a385d752a657d3261782f6c7d306d8940698134617b3364 *854265792e6a85437489416d803b6385416a8640758a486782427b863b6e824273854393a477c2 *cccc7a91524c6f334b7236426626426a284e6c214c67274a6a2f3a6c37426c2e496e3942642f4d *713149743b4871324973384e6d2643692b3b6027537234446c2d466b29325e24486d2d476d2946 *6c2a406b2639642c446b3041632a476825416a253e68274668243e62234768224665254364283a *5f1d36641f355d1f3a6328355b26386427305b2a2e602a45672d476b26376221375e1b3a602642 *6427415d1e435d2343672c356121395e203e5c132c531c365d1c376424486720406929426b2f48 *69234569244069243b60213462273b612144621b4063223e66234269243f612449651f4e6b2350 *71274a6b22406822496927547d33476f224871275376244c7734496d214e78314e7d3252822f4a *73394a792f476f264f6f23508038456a274c72214d752f48702d527c2d5b7d294c732460802564 *7f245782355d8332557f31557c32637c285270245778335483335782334f7a294a77284d73294d *7725497023547826526e224f7824486b1f4f71274d762c5479285178284b772c466d2646742947 *73224a6e2450742745631e466b1f3f6f1f47702547671e436b264169263a6f2944691f4669203d *6a243e66264e752d46732349762f4e7c3650742e5280354b78294e7d2752782a4b692451712a48 *6722446f234b7522497830496d2740652247762e4d732856793553752a566f284a7324446e2455 *7d2a537b32577a2f537329516e295178324876314a73254c75285a77235e7620526c223e64224d *72224b6d203c661f4a6e22426720527e335b792a5f7f305978255780315f82394f792c587b2f63 *873f5f8942658a406b8d416688336e94476c924369884275924176975076974b70914471914374 *903b739643708d43789448728d427c97466f913f70894775954d6f8c40688c3d6e8d427c965167 *8943758e3d78984f7991447088336a8335758d4a6b8b417e91428393447a90438497457e8e4077 *903d6d854068914d678b43658937748f477592457890467d9146819750849d5d7c97497f975080 *974a819d5683a268869b59829a59859b557a985179964f83974770914278955377914c73934d75 *914875914d76914b78954e7d98537d99496d924d7d9451809143748f4e7d9849819c4e77934977 *93477c944e7b8e40758d496a87367d8e3b6f8d417b8e407590417e974d75924d7e95488296507d *9850819c51779542788f3d748e4476954a79934e6f9544739344728c40718f4176934a748e3d77 *91447f95537f924b7c9753829a4e809a4c74913f79955c7d964b839a4a7c964572994c7b984e7e *924680924782924881984b758e437d8d3e75894068893f798e46738f44748b436e92467c8e4b79 *9247798d3f7891427b8b40738d477e9243849a4d7f964a85994a7c974d789646738e45778f487c *9553778e45768d427a8d3e6b8a3b6a873b788d3e6a843e798b4272812d5f812f688531658b4075 *8c3f6c864c6d874876914f7d9246788e477e8f35838f437e9750788f488095457d934d75863d79 *8f437b914179913c7c943f7c92447a8d40778e467e91437e91457790466c8c367b8c3c6f833a73 *8b3f5e81376a81365f7a2f677c316281346a87376781326a83356b823363803557762a67802760 *8028597f2e66802d6685347e9441708d3b798c3c6f813965813a69822a6b8a3a5c7e3a647d3269 *7b335e813f6d833a728d3c698b3960823a6782386d8b2f76863a658339598039617e365a7d3662 *813268812a6c85347b883a6f873472863d64802f5f80335f7e38597732648331667f30697e3275 *8c3e6b8645607d345a793062792f5b8340647d33687d315f803c5880385d7a2c4a6f285980395e *8433607c3264792d5f782c59793b5b7532657529768131647e296d812965772664813062772560 *7a2a637b27778532657d2f70843b6f8a3e6e873d768b3d678334647d35688240687a3271803671 *843f647f36697b2b71822d71833d73883f667a32697d3a697b2f67843d6b8a4369853f637f3159 *762676842f5c772c50792f53762b50752568853f6a883f6383306584365b782b627c2b51732a5c *77355f80425d7c376f854265803a718541607c34627b2b55782d5d81336984366f8f486b8c4076 *86337c8b3e6c82356b82306c883c6f8c4771904677944c70893b6b853c67823664802d6885386d *832d67823665863c62823d67802c607c2f5c7c2c5c6f245c7a2661833f607e36657d3d6b843564 *7b31697f2d6873346a7d2c6c8132658637617f355d81305f7e3f64752d6b7f2c617b2f617d3264 *7a2c5b782f597f345f80326783365673335a6c2756752f65792f697b2e68823f65843863833564 *7c2c7287426a86466a843e738639809041738d3d708942748c4b7488437085336083396081316b *7d355f75376481385d7e2d6489466c8137697f3967812e728c3e778938788541708a49768d456c *864c677d3c768b4374893b6d893b7a8d406f874e6b82486d87456d86355e8341617c416d7a3b98 *a878c3cdcd648b5345753b5079444c73304c773a4f762a4c71374b672a3a622434642939673039 *663336612b34531f345f2b3b662330672b39662b456c2f436d3941692b406a2c436e30436d2b36 *6226496a30456b29406a2c37602933622b365e28376725406e273a672f406b2a3c611e446c2644 *6a2744652b47762c40702b325f213161223f6922476d273e662e3a6c33416b333a5f27356f333f *6e263b6521436f2f416b25345d213b642d406f2c4268273a5e193f6d2e3861243667273f662747 *6d34426d2d426c293c6d21426d25416d274b70293e6622386024416e2b486e2c456d29496e284f *6f25406318496521446a233f652c436c28466d23426f2348702f54803b4377324270304d6c2b48 *661d426f3445772f43712e40763040722b426c2d496e2249691f406f2a5b80425b884243762541 *782b43732b486c1f4d7327547c364c7b30527b2d4e7a2a4c7a2b5a81285d822e5c8128527a2d4b *772d507d314a772b52792f547f34507a2b5c7a2451742559762a50782654753050732b4e7a294a *79274e772350762752782b507d314e7d32507e264d7925466b213e6a244267204c6f27466a2b48 *7530486c27446e2c4c752e487227597d27476e234f772a5a7d334b6a23436a204e73264674244d *772a4e762d3f722b4a782f4772264b782e577a2c4c72274a7024527a2e5c84385d7e305b813662 *83405c81405d873f5f813c548134608c495f874459823a5a7f31507e354d73205b81374c7d2947 *74283b742d52792a5781314c772c5e82385c86334b783650803e577d2c4c7c2b62813c5c7d3b68 *873a3f591540691d396a214668214a742c4c71244c74245071225472244b6d25456429416e3049 *6e24547b385178335b8136587f2f638a3e65863d5786425f8740658a3a648d3e658c426789366a *903f6d92486a9447749548668c3f6d8d43668d4065873b698a3c798f426f903e7693476f975073 *955776974871954b6e944c7297467e96478396477a934374903c759349719345829d4f7997477b *92497d96497b95466c94497a8d357f964b7390446c8d36708a387692467c923f768e3e658d4a74 *9754738d437a994b7698527492497d95447f9a4875984a849d56869f57829b527f9c5c81964976 *9849809a4d7e98518a9c55809b5f7b944b829551849d617f964c7f99537b964779944376954876 *925076955278955178964b7895497392446f913f7494457191496a904d608b4c6a8c416e93506e *974d82984a7c954c7b975384964d8197527e98517da15984a26c7c9e5a7d974673914375935573 *954d80985081974f7293477192457a97476a8e436a8e43668942748c3b798e3d6c883969853b67 *8534658135618740768b3c778a37708f4b738f407e9b5a73934d6e964971944878984f77954d78 *944b7290426c91467a9b547e974d74964685984e798e3d7c8e4276984f748d42738d43788c3a78 *904177873b738a4b667f41748d4d718b396a832d5f853f758c42748f4082924685974d91a4638a *9e5781984d758e418099527f97457690487991427e9646748d48749244748d3d738d4879934981 *974c7e954c768c3d8092497d91487d9049738b477a9044788b3e7796507e8e42768e43768a397b *8e4170873d778f47778d427c943a6c8f3f73924373893275823f768d3d759042708b3d678b3e6a *8a3c6a8a3b67792f617d3174863a6d82336a87406589475b7d2f5b82345e7c2d5f792d617a2e60 *6e22647428647e2d68802c6986377183345a752c5078374f74295a6f2944682a55742b5172305c *7229667f2d627b335976294b66265a762e5a75264e77274c7328517527587a2c5569284a6a275d *7623496a2e5f8035607e39597d2b527730657d2f5e7e2d577a2e5776274c78314a732147723252 *7c2b50793051742c657b305e732e5a742e5f7b3257732f607e3458772b607d2e5c732c5c7c345a *70295a6c26627f3b6583416581396a853d70893e6c8a4263853c6a813c6878336a7b325e7d3a62 *823466863b5d8540647d3169844563813c607c377387406b863a5f853a557e3a608029547c3664 *812f5f824468824165843563843260883d5d844357792e527534677c2a53712e66762b627c2d54 *782f627d3d66843d7081326c84337085357889476a85356b8b3b6d8e42748e4273894264853665 *863b728b3b6c82335e7d2d6f884e6285425579375c7a33536c295c792e57752b4b763154792655 *783356772d5f853660813467813b5f81345479344e7a3b5e87445c773653672a56702a5a743157 *74295b80385a762f526f2a4f713a4d7331476e3153742c647e2d5d8238647a315e742d51743652 *743651792f6681375c74316484355d854764853e678b415d7940618543658445658a4d65864564 *86426088436181365f813d5d7f346682385d7e3a5f8140618134677c335f7832677a364b723054 *7e34517636557c3c547d3a6382356a81306b80385d7a35667e2c67843c5e733351753e5e7c415f *763590a67ac2cccb6a8742456f3557783847652d4f722e486222496c2e446d3447662a43682847 *6b2943662c41682b48722f486e324b68314a72284d72314a6c3052732e536f2e4d692a50723249 *6b2e4e6e2e4d6b254667224e70264d7123496924465d244669294569254e6c2c496e28456c2848 *6b285773314e6e2a4c66234a6427547233496926456622476a25466e2746622042642545662d49 *6c324161243f5e26425e21405c213b5e1c5268254f6f2d4765253f652c48682a425d1e4b662545 *6721476728506b244c5c2c4d6d2238682d4a6729486d2b416523476c274b6d2b45611e41682b52 *7237476829496627446d2951722c49702a4c6a2d4c6e304c682955692b4d6b2b49622b4d6c2a4b *7525446c234c6927466625406526425e1e3f6826416a2548671d43651e42671d4a662455752847 *6f2a3e68263f65284c7a294f7e304c7a204d6c2362792e5b803c5d7736517934517d32527c284b *73284b7a34628337638034608340567d3856802d57833b58822e6288375d8a4160843864863d5e *863a5b843e5f84375c8431607d296785436287335d7c28577f2f697c335a7a2c4d742852792c60 *7c325a7d355f792c516a26526f224069225b803b517c3b5b85445f8130588540607d3456752e53 *78315173314971254f762d507e345b813b658c436c8c4e748d416b84415f803a62813064853b60 *83345d833c527f30537b2c4a7c3d5b7a2d587727627d2b4f7f334c7931507d2b517b3251792f4c *722a49793a51804148732e517d2d4f7f3d4d80364f772e516f275e792e5b7c2e4b7b3c4d6a2b5e *813150782b4c78285c7e345f782b5f7425617d2e50712956762e507a324a6f254e6d2448692654 *6b285a71255972234b70284c72254872294a6a204e6d1d4a661e415f1b4e6f283b5e1b4062163f *5d1b315b1e405b154f6a214f6f255b77274a5f1d4f692a506d275d72275f782f4f732f5d773069 *8540678235668a416386456e8b3c6b8b486a893e678d405f833364883e6e88426683416a8c4469 *8c44708e43768f41708a397592487e94447a934c77914a6d8d467b93467c97567c92477896496f *914c6d8e4771914275964b7c954380924a79964a77974a77924a75914778954c748b3c758f3b7c *964c73924b7990447d914576914c798f4378872f6d82346f8e486c8d4a77904a77974f8292487b *94547a9351849346879953819a58859b53859b557b914a829a4d8496518297497c914e83964e7f *964c7a944a7b9455758c46808b417e8c3e7d913e728c4b6887456e863d7a8c3f72863d7d863b75 *86307790426c863e7d914a738d46718a39758c386884397f8e3b6a873f6a8b3e7284397281326c *854274863b6f823f74904b718d43748b3d6e8e426f89437c90477c90487993487d90427b8f4475 *8e3e7a9341768843738b42768f467f8e41798c447c8f447894498196498298508093427f935087 *9449818c3d7b914d83944f809141708b41779148778b3f79893f758a427a8a4280934f85944780 *96527d954871853f718b4a71914a7b944c78924a7c9141758e407d9340788e3f6e8b3f748a4271 *8f447e9147778d4c7d99567895548296477e93477c8e42778d407e913d6d8c4168833b6787417c *8f48808f3b7a903b798b338390407f9142798c41768c3a788d4484903d8295487790486a843d64 *7c2c717e3a6b813d768740738a3f788b327380296c85396c813a7381396c814071863b6b833f79 *863074833373873869843c69833f78813e728343707f3c627d3558803a65883d66863970874072 *853d6b8238798b416d87437386427886396a8734748d4068823867813b6e83347387405d7e396c *853a68853f6e89426c853a78822d6c7c2e74822e6d863c78873a6c8940768c3f64803069802a64 *78296581346882306c7c2e6e833b6f844364803766864071883a637e307286346e83406584345e *7f39667e2f64833a617e3a6f81326f853c768b44758b4379854571834870834370823d72824178 *873a7d8e4377883b69813d66853d6380366c853760813160802e6c832d708436757c3171823067 *7d3671853a627e2a6a823a6d793b6b81356b7a3551703162702f5a74315c7029607a2a687c2c6c *7a2a5d7336616f295e6b2a60722760762959792c647b2e758437717b3168702c6a7c3466803363 *7931687e337984376d863e6f863068813470823a637d316d88436084405f7a2d6679276884385c *76216c7a3051702b6079315e7227637a3758753055702d506923506922576b27516e2c506e3151 *6f315169214c652c587023557828526f2959702c5d782b59722f54692f587633506c2a5066273c *4610516525516b2b5765264d62264d652e56672560722e617f395e75346d843f6b7a3559743a57 *7536607e3352783056722a64743262793558723363783254793f5071345c793155743356743449 *6425576e2a60732d516e2c56742e5875316071326782375577375a7635667f426e823f6b823762 *8132516c2d91a073c3cccc5f81423c6737486d34476a313e6a2a416c2e41642740623141672b37 *632f437440476e2d416c30436f314c7229456d24416d2e44743a4d722c4c703549722f4d752d4f *6f264c712b467033446d33426d2a497633486f314773314b78333f692845722d4472303c6b2b40 *692d3c6b2d466f324b762a4c732e4f7a38517b394c71344a7136426a313f702e3f6f3b42763642 *71303f732b4c7831466d2b3a6c293a642d4875343667283d5e1b416c243b682b4a712a496a284e *702548752e49733d50702c446c28436d263d6d2340702f426c283b6a2b396a2f3a672e38602443 *6929406a27436c243c64293f6826365e20436e2f426b2c4268274a6f264e7e364e7a33517d4052 *7e364d793d47732f46703446762f527d375079314c7d3a48752f47712b4362213f611d466a2849 *75254776284c8136416f2c44752f53782c567e3f517026577a29547d2c4d7b2b4575304f7b2b47 *70283f6b2c4b702a4e7d2e4b7a304b6e1f4e782c4d772d5d7e345a7f34568132517b2f46702350 *812e4b79304a7a30507e3052762d4b74325d833556813b5284405f853e5881316389426484375b *7a2d5482345b843c50823f5882354879335b844250813b61843b5c843a6589405381345c792c60 *893d5e8846638847618b495d84465a803960814167883e587f39527f3a5a813153863c527d3860 *80385e823a5278375a7f2f517e2e5081334f8030567f294e7c265284364b762f4c793c52793a59 *81344c762e4777284c74285281365d812f5c82315a843159843a517e374e7e2e517f2f58813656 *792f577b334f7626517629537c3547752e51792b4c762c4f73254f7131496f26436a2a4a6e2641 *732e4c70284a701f4670265377274e742a50792b53792a537a2a46742b456e2c517d3144792e4e *6e224d6f2a61823d5d8532507e344d78315277304e8033526f27476c2e476c2e4e733348752a4d *6d264262264874314d72255a7424496d214c6e254f6b21496623486d314a6c28465d1c4d692844 *66245176304c69263e63224467244c75344e6b294f6b27546f274d74275a7c274c7428597a3156 *7c2f64843f517b3051813c58874360813b5f813a5e7e336a8b4768914c698d4d64924b688a4960 *8e486b924c658b47648136688440758e506a8e4a67873c6f8d3b6f893f708c406f8434708a416a *8b3e668c43718f44758f4578975075944d7f9341829a54829b527d94487c96517898527b985680 *995a809b55809f5c7e985c7c9b547c965c7e974d7d944979974981974984974780934880914382 *9c5a7996597c95507590507d964b8197487e9648718e467c9547788f43679053718f41748d4675 *8b3979903a7f954c818c41758c3f7d91437591437090446d8d4075904380944a79954879975468 *8b486588496c8a426885406688427190486a914874945f7d93467c934276914679964e7591437f *984f8098507995487c9a4c7a8b42798e4d6b8c45768d3f6f8938758f436e8b4779924d71873a76 *8b447e934d76954e7f964b728f4b7995527e95477291417a914d7b8f40759147648c486c8c3e72 *93487f974c7a974a7b9246698c4a6e9044788f4278924d7c965372914377964d6b8d37738c3c72 *90446f8b3b739143698f4c68914d74964e6f9246648e456e8d44798b42728e4873863a7691496e *8d42658b476282386889406685345d7e3e6b87466e853b678b476c8f4668893b72893276964b70 *8c3e6f8a446f88446e813962813a6983366e8c3c7791476e873968853c61843a65863e6384446b *8b416b843c67873a6c8b396c8e3f768950748b3b6b8339758d3b68833464813966803268813c5f *7e3b6e7e356a853b7185346c823f738c48708a426e8e3e7c91427e8b3f788d407a934b6d8d4772 *8b38678b3467883d6586406d8b4a6486426080386182355f7a3a5d833c5a823a61843e6a833962 *82356c853c6a8334677f2f6e8a48668540657d3962844069843a718a437288436d853c6d8a4664 *81436f7f3f6f8a4570914c6b8c4c66843f6386416d874666873b6c8133688535688d417a92417a *934c6f8d4273893e788c45718e4b7991546e904770904466843f6982406986446f874573934c6c *8a476f873d708947748c405f8641617636637d3a6a7c3e7588436e813c62813a6284426c8a3f6d *853e65853b6f8c466e893d6d904e6b904c6a894a6f8c4266843e738d3f6a8338607d3e67844162 *7e2d537f37537e3f597d30657e336c833c647f376c84376d8039687a335d813d66803d6286476e *843a5b7e3f62843f6d86456983396285495d81445e7f406a802e61864162803967813d5772395e *7e3b617f3c5d7f3f66843f5d803e607d2f6a7e3562803b5c823f517e3962823962843f7184365f *87386380326b853a577d36637f3f567330637d3260763154783057772c507b2e55793965834162 *813764824158813f5e83405b823f587d3561803d557638687b38627d375877395976385d833560 *793a5073365c783d92a578c2cdcc5c8247426939456930496a39537035436c3643653238662c44 *69293f6526446d344d692d486c324569284d6c2e406530436e2b456d2e456d31456a295269273e *652a4c7434497037427037486a25425e2349662d49672a487035385a283b6028406a2c48692d42 *682942682b4a6627456d29456a2d4465224c6e2e476f2d497234466f2b4471354a6e30496f3149 *6835456e3b426f2f4364304069303e5e214465243d57224863244467324766224066254a6f2a40 *6f2b456a2343631e4d742a4f6c284269253e65253f6824446c273863243f611f3c5f25435f263f *662f41672c3e6732466628466324405f2147622033551c43672c4361254a69294262254a692a47 *6b2f4263234a6123486c2f4f77324f75314e712e537c374e703a496f2f44702c51783352742c55 *7b2f4d7c424366204e71304d7831436c28407532527a3152792c597c2b4c76364a722b51753156 *80425a8338557f2d567c32567d2f5779305a7e3260813d587a34587d345c803864823e5b7a2f6b *7d316283316784334f762f4d7634557f3b5182385d7f30557e3358782c58772f587b2b50732e4c *742c52783060812e597d356a8236527f315a8031587428527537607d305b7e31657e276081365b *7b2a5d7f3358803d6085476184456182405e7a2e5b7e345f7b2b567e315a7935587b2e5b7d2e59 *7c39527b3b6081376b873f67832f5a8232638335648037597f3a5f843d657c2c597e2a50752756 *792f617e2d587e3b6586415d85465c81355b802b6f8a3a718d31638a3c5f853d6a853a5e7c2b65 *873f67863e607f31698434748d42758a4164853865883562812e5b80305780374f7722507c2f5b *83366385375b7d285f792861833765833460843e68883c607a2d69873967843b627e2f6a8a3e5d *843b5c7f3962792e6589436284345a7f3560843a6681356c873f6a853a6186456985305a792e5f *812e5c803b608135557827587c2c5a7a295a803b5e843a65893f578034608132597d2b5b782f59 *7e3550752e54793157782b52792f557c295c7727567429517729557c3953753052742b4b732951 *7b304e773856752f50742c4d733157752a5779304f752f4d6e294d6b26436b264763254665224b *692953713254772c527b3354803b4d78275e76365d763f5d7c3b5c7b385e8141567c3c6382335d *86355f8540688b4a698947748841728f427996527899546f945070935177935176924a7e94447a *94507092557e96517f9a6073944b809b568b9f5784a05d8095508197507891437e995383964b80 *9c638d9a548a9e63829653818f46809b5e7d985b82985081965284964b81934381984d7e914e73 *8c4878924c72883f6a8f4b7e8c3a6b853c77914777852f76853970853c6b843d73873d63803362 *7a3364803c6a7f3777893c6e834064813961803767853f688241728d436e8d45728a3e758b3f6d *8b4c788d3e65853f64864075904b6d8a4275914371903f7891437f904879955075914d79934f79 *8c427f9650899a4c81964c859547829248778e4c768d3b6d8d44758e467994467d904379894473 *8b406d853e67843e768445758d46668d49698a43738b4271853c748a4272904776904676934b75 *8c4c7b8f447b8f437c8b3a7a914174893a6d904d76914e738b476e7f346b853970832d7d914472 *88426c823e708439667d3f647f3c657f3f6d7f3a6a873b6e853b6184396985406981316d863e68 *8842778b3f748b3d6f8b3d7182316c843f65823f637e375d7e3c6a843e6d84406f83396e803b69 *82417384377a8232778a437a8d4175893d7581326a8a3d71853469813466802f74822e7e8e4078 *8e46798f427c954c6b8740748d3c798932728541828d43798b427e8f3d78893e78853a7e8e4273 *833a6a8b3b73893d6d823b668845688343607d3e64803a627c326d843d62843c6380406c853c75 *8d4561803766813871823b697e2d6e87316f85326b873b728841758d437e8f49728b41758e456f *8540809243818e3c778f3f7e924276894a6f8a477b8b436b853a7386405f843a6b83336c854565 *80405c833e6f8a4a648340758e4d5f814266863f7186366b833e778a466b8d4f72874579884371 *8e456a893a70873a6a85466f7e3f698444647d3e5e824562813f76863f7188397d863a78894c6d *8749667e377586436785456080436d833e6681357e86456982376d87426b8542758a457b914e70 *874472874465803f73843b687f3d6b8540748e4b6e864070893c75883f647f3b6a814075854572 *833d637e406882416083466885476c86326d853b6f813966833575813268823b6183455c7d3264 *83386485416b85426d883b647e3e577b326b84356982436e86476786416b863f607e406a823f6e *843f697f426d80446c8b3a5f854278893c677e3570873469823a62803e5f793962803e64763169 *7b2f6d8035728b326f874b6c83435b763b5b793564803b6e85436e8744697f476682416e7f3f63 *8043637c41667a3363783e92a97cc2cdcc648239426e3342692d4f752849702d456c263a5a2142 *6f2d3565273664283a65303e71353d642a3f733a4a7333447035476d2642682a486b263a672953 *722e3c682747702741692243713048752c4c722544732f456d2d496e254471294b6d17416a2445 *67223e6a2b436c2b486b2e4b712f4b752b45722b476d1f426a2a4770244169294b732d4e753548 *7637577e2b597e304b6a2246723248742c4f6d2549702b4f7233426e2b426f29486c27446c2749 *6c2b4c6a2b476e27406c273d6424477322507f3b47651d53782a41611b44681d3e621c41692444 *69284971254b7328446d26466d2c486c27436f283d6a2a406d2b4668234d6c1f4b70243d69294e *752b456a204c752d48762f487036487a3047722a4d7f364c713158792e6585304f7c33567d3350 *7b365b7c2e527825517f285380294d782f5178304d743a4977334c7c344a71244879275179264e *77294e7a2f5f873a487a34518041537d30527e2a56853055802d52803b587e336080356488405c *823361863b5d86304f7925587e2a4f782a5e813c497630507d315274274d79264b7c295b7e2550 *732753762c597d2a43773050782e527d24507f32578029547f3560812b608335587f30537f2a4a *7b265b7a2653772050781f5c7b235a7b235870225f7d355980335c83364f7226557d3350782b62 *893a688b3763893d6283346282305c84315f863160862e6e8d385e812e5782325d852a5d852f52 *79315c87405d8630618c3c6d8e3a758e4266853c70893f6a8c3f648b3f6f923f6b903e678b316e *923e6e9242738e33668835698e456d893664893d759531739232698f3c6782305f85355e863464 *853a5f8637638f3c6c913c729044728d3e7288406b88376888426a833167853d66802861813262 *853168893f76893b83995b7792406486315d812b6f90346c8a326a852368892f647e2f64872e65 *8a3a6a873a73843b57812c67882862833067862f788e3d6e923f668d325c822d567f2a5b85375f *822c6a8b3861832d5f8636628837547a2f5c833160863158812d587f295a7d2c577b2a5f7d2b4d *74285a8034567d33557b2c4d7c2e506e265a81215376265a78365374254c7828537727647c2363 *7f31657d28577729566d205e7a2f537e324c79335169245f73283c5a1646621a43641d63681d54 *6d224b651a4e72204161214256195271293a571d53661f4865234466214a7528547c2e557d3355 *7c345c7d3d63833c5f883e64844262853a718c3f6284366b8d367c8d3f72904371904e7a925073 *91487a954b7d944879984a7b984f71924279954279903f7595487e9a52829c4c7e9a54839f527e *995a849a567d99506f9145758e3e799847718b3d78955a7d9c627a974f7d964d809547798d3b78 *9553769550708f407691466d8c3f768e427997437696427c97487d9343708a3d7f8e3a76853a71 *8a41758b457890437c933a76964e728e4376914c79925875974779924682984e7491437e984480 *9958778e4772913f7d9643849858839955829952758d477a954180934c89995b79934980984e80 *934e8298517c974a7891457c8f3e809854819543819747889c53849c567e9656829b4b7d9b4582 *923f7c904282974473914181953c7b954381934e809b4d829c4e8499447693477b8b3d788f3c78 *93437d964d7e974780974c7995437c90396a8231768a3a7f8f377a903e748f437e943f8090407b *8c3c6783377b8f3d7a9851738c3e6f8b3a6e8a3867822b6587366f84356a80366a7d3068824364 *8037638442657f30727e2d6c842b6681326980305f79296a85415a783462823f69833d6a882c72 *8a2a75883373883372873b6a823d68833e68893f69872e798c2e6f833a68822f6983335f7e3064 *852e6c853261803963864169843969863a6d893868832f607f3267853b6c883966873364852f77 *8e366781286c82327183326c80286b7f2b6185365e7f2f537b36557c2c5b792978862c758d3660 *85436a8d3e7a8d4367802f68872e7484277186366d823158752e50753457712c5d762b5e7e315d *8035728732637e2b61812e65823a5e792c617d365f81335c7f2c627e2e6a863d788b407784376f *8e42708e3f738c4a6d8942768e417088396982346e833a677d3b5f7f2f658137617c365f7d3461 *7d2a677e286882356e803064823f607e386888426a88446a88426587376a85336a813b6d842d6c *7a34657d416b812d697d2d687e33708d4868844266813d647b2e6a7a2768803270874071873d66 *843a66853664833b6a863c6d803073852e6885396a87416384406882386a822c6582336281305b *7b366382366b883b668336597c335f823160812c657e2c627b2b647d3d597e2f60842f5e82345a *782d61762a5980396484366d842e627e2861863c5c7e3a67813e6181316e83326686426a823665 *813461812b738935617c2a6082315b7d36617e2a59793060803e75863e687e365d7c3662763059 *723059752c6681315279365c753398ab7cc2cdcc6687444c7237476c3143642c4b692d50702b43 *6b2c47672a526a2a426731476a2d477231446d2e426c3149692f47662c456c2b39692a436d2a43 *662e506e2d456a3240662846672741652b41612849692b446b2a39642a416a2c436a2f4d712f44 *66294365283c66214a6f36446d30446a2a4b622a4067294166253c5e2c3d5e213a61223b65234a *692e42672647622c476f2e426725426d2c406827497136426629406a324a703b45672551722a4a *752f406c2b4e6f25536f2f4f732f4c7330486e2d476f32436a274870304a6d27446b27496e2542 *6223446d26466e2b486a294e703c4a722f467339467332476c2f4d6d2f5275385979354b702f4d *78394b702e4b6d343b6b32507236506c325a78324c7d41517d364f762a4f722c5879325985435d *7d3e4e76324f763d4a79384c7c3d4c7e39557d3f5c812e56782551752e55762c4d77315479394c *76344f7a385c7d2b5481344f752b50793654722b51702a4f7a3253792e4a7a345c8032557d3361 *7d325c7e38618437537d404f793c5479355782405a823b59802c587338556f2b50782b527d3b4f *7d36527a3558792c4d772d53782b60803f637d3061823b647c2f648636527f35568134607e2d59 *80375e804157773266792c60813765823351792d5680325b8436597a2c5a7c2c547d3b5077335c *7a3467883e6587415f84375f85396783356f893a6484435e7f35607f3467873968843d517b2363 *80324f772b5678354b793652752b5a792c5b7e3855813a668a446e842f5a7e395f803b5c7c3a55 *823d63863e618339608c426d913d65864066832d5c802a63883f5f7f3a6b8a386d8e4460842f6b *92406f8d446b8b386487426b893e7482356b85426b89406e873d7184345c7a2d5d7b335b72284f *70285f752d5a772b425e216267225576266b883c798e3c75914b6f8d426486395c8b4a62863176 *91446078257590487b8c3f718b456a8a3565823f6287426f8f3d61893b6a84306b813b617a3356 *70285c8131698b475d823d6c8a3b64863b688531607d335d7a2e627e37567d3c5c7d355b7c2f5e *7f325e80326181355c83325484434c7c304f7e305381355578335879314d6e2e556b295978305c *7c2b547b32637e35608032577d3c537d27607d2b4e722f58722a4e743158752c5079334c6f2553 *78255177305874254c712d517232516e2d4f70304a6a2b4e68244463254a64224f67284c5d1e44 *5f21415522465d1e465a213f591b49591d4b5c1c455a1d4c5217536720596c2d53621f4e6a2d4f *641e456728456526567028537a3a52762e4e7a2f6c8a426d8c476a85426b82395c7e4068854175 *8b416f8e457d964b688c45648942668b4763843d648340748e437b964c7d974b759259799a6076 *8f4d81995581954583954b7f90447f9952889d5b88995286994e869b50819c5b87994b80984e81 *9850829a5b7c96527c954b8299517d995e78853f81975b7d924e7b964d8093467d91477c975a7c *974a7f9345788c44749048799048759052779758738f47798c4b7793507e923f859949819a5784 *91467e954b80934a7d97578396437b9344808f4078904e7a90497c924983984b7c9451748f4978 *8d3f72924778924a75914774934c7b96517789407d9044798d447a9148748d43778f437991487d *8d467e8c4a7d904379914d798f437d8f477d8a4b758a41748c468293448198518192427d95497e *9243758e487e8c3f7b964e788e44768b487f8b3c7b8b3e7384377186456b88437b924a83914879 *8e41858e44848e417f924b809450718a497e934d80944c789043748a417790497e893f748a3c7a *863b738c42788c487d924f7e9041738d466a7e33748b4368873e6c864163813b68833d68893567 *8843728c4a657f3c6979316f813465853b6a823c64833e61803459772c61772b627d316f762763 *7e31617d2e5c7c2f5e8332607f33637f3770803464802f607d2c5d803064833c64813578934773 *8f3d6f8b3e6f863b6c813a6e863c7184306c833e6d8d4369863e5c7c346a81376781456e813069 *8639698944718a4a718746678a3e708b33657e3c6c802f677f366b83426a873e65824272813c76 *8d406787406f86396782376e83417189435f804565853a588036627f2e6a832d677e2e677f3668 *80315a783465782d6482386984406b8c3d6a853e6f863e71813575823f6a824a657e42687e3d6f *853872884068843b6a853675874d687d307f8e477f8646728b426c8746798e3c69853e7087407a *914d768a4c7e89517c8d4e6b894a6b87476a7f41778d4575873f7285456f87406d7c4466834779 *843f6886426a884671853f78884870853d617d3d5c7d36687830677c3f6c833f677436627d3669 *7934697e3962793f697e425f7c417289356984427e85386c7e366f81366d853e6f87436780466c *87486084426f85446f7e356a87426a884d6a864669823e6d8340628547637f40677e34667f3e6e *7d33697a3d6a82426382436c82446c80409aa978c3cccc648842426e314a773b4972354769243d *662647682849722e436e2e487231476c25396525496b2b50702f46672e496924476e2938672440 *692a3560233a5b1e3d6622436a24476c274169254367263860293a6d2a3b66283d631e3e672049 *6f29406c244467223863264063234269293a662440661f47661f406c23466b2244642546672242 *5f1930662d4f752e46752d4c702b48641e3d63294967234565233b6625476927476c26496f234c *6d2e486c233e6225476922506f234c7022507d2f547c3244722e537c3d5f7e35507727416d2c47 *74394c752c4b7a30497e444b753348722d4a702c4469263b672343692c476e2c557a3647723842 *6e36507530577f36507a3a4f7e364a723354793154813b517f2d627c365c813a597b2b54792a4e *80314f7d344b7e3c51783451792f4f7e376086445d823c4d7832456b25557b3a49792e52802260 *8230587c31507d354e7b33547f3c507c32527d2b4678314b76265a7b2d4b7c2c53792c4e7c3452 *7e33557f30597e2f4e792c517d2f537b2d5778324e7b2c5c82304f7931607f3c45702454803351 *7e2b6387375d813e54813b517f3c5e813b5079374978355181325280364c6b26466f2d4c752f51 *732f527d314d7932587e3a4e7b315d7a2d52752b5a7b335177274c782c6286385d853459833151 *7f2c608336608538668431618c435d843c63873855863a6289385c82326a893d6486405e862f65 *8f44708d3b6e93416d8d3c658c306c913d64853366823169873b5d823b648c475f873f57813369 *8c3c6a8e346d903f6d873b63843862873c5f812c5f8a42668a3b5c7f2963872c5f852c60823365 *823b68863f5e7e3d5d8135638c3c5986386c8e426c89326e8a316a8b3a61883e6f8f435d873a62 *852a5a85326e8e3c7192416f8d4571954565893d678a3b6b8e355f86306f914866883a65863768 *8733678a3a658c466c883c628740698733648c4061873b6787405d85325d81316c914f61813661 *853068862f6086305e80265f812a637e2b66833269832c5d82345d812c5a7a2c5b7f3466833260 *84335c792c5f7d30547f33547c2d62843c65813069852e5c7f28577e2b6c85335a7a315578334c *782b4d6d21587d265f82295b7e2b54793b53732a557a31567e3b4a752a547d31557929507d2b5a *802b4d762e48722c557c314f7d3055792b4e7a304c7b31547426456e2953752759802e4f7f384c *7c354e7023456e22426e2151742a5b762d576c2857732d52732d496823536d2061762a56692743 *652946611d496521496c28486c29476d2147671d506c1f46652053651d4a63204d601c3a551e38 *4b154c5d22475820576d224e641f5c8134608548638745618d446f924d7b9b4b76964a77923d72 *8f46788e417993427d9245738e3b79964e7899567c964378943c7795437b964a77975279944c7c *944d81984f7d9b4b7d994d7d994f7e92487b9141839247829342829c5e7894517d99487e95447f *984d7f964f87994879915077954c7d99537c9d518098487a934c72914d7890477d9346768d4075 *934f6a8c427e964a79964d86a05a8b9c5087994f889b508393478092427796507a944f7690417b *9045738b436e83357d8c3d788b43708d3f789148708e3e79944c7e8e4074924380914778903a77 *8c4069884071883c698d4070914b70874375864079903e7a8d3f678a3b758a3d6c8d3376964672 *923e7d96477996517d954d71934c719044668b426c8a3c7191416f8c3b7586366384376b893f71 *883484944582943f8698467f933c7d943e7c91437992497e93467b974c778d3e79904a738b3b6d *8b4273892d81975b86994f829348738d457887336f862c68823466863e6a823170843c71873967 *843b768e4079964d7d91467d95427f984c768f45718c437e8f46758b3e6a873c64883b70893b75 *8d3c66842e6983306680356b84366d8837738a3570833d6b8038678633778a3175873b768b3c75 *893f768d4272893f6e863b6a8a4975892f758f3d628035617c2962853a6085316e863b6b863472 *8d4071852b6f893c6e8c4271843a6c852e6d81346d853a6d8a40718e46758a3f738d435f833f68 *873a6d86436b83396d833e6b8b3d64863b618943627f3664863a56792d5a7f335979326378335e *7d376b884062833664843766853176883176894073873770853366822d66883a738a376b8c466a *7d366f88436681387a853b6b844c72863771893c778e42728b3e718b326c8b477889466a793266 *89436e893e7c8a3e6c8b4d728c3f6a8a486f874367854b75873c70883e708c3a6f8a4769873b69 *833d6c8039738b4675873d6e814263844365802f70853f70853270883a6d8546708a46758d4c78 *8c427f8d45718d47738b3f819037808b407d994f7e994c7d965b729153769145778a4485934673 *8e49728b3f788e40778c475e8842758b367e954f758d40728a3d758a4373893b6b833b7a893f6e *8a4c6b85486a823a6a883c6a843e70843e65843a97aa80c2cdcc57814a486c3a4f783e436b434a *6d364a783d4f722c4c6d2f4c6e2c52732c4f742e46642a4b75394b793856763556783149752e4a *63264c732a50762c4370363a6e2c4f7234456d31436a2c4c6c2a4b6e2c4a7035406e2d43753542 *7037426935456d2d3c68263f6a264169283a68263564233a682a436e2b4579364c742a4368263f *64234065293a68283f6a2a406d2f426d273f6322536d263f6820406b314c6e2b4c72344d6e2e47 *6a243f652c426a28466f214a6b2a4d6e273a6c2d416a28436a2c48702d40652a466f2c45692539 *60233e672a406727466f304c752e4d7233466e354e752f4c73315a7b324a6e27497b33517b314f *772e51762d47772f53792f4f7c354c7e3b486c255274354d7d3f5e812f487d393d692d426c2f47 *723a53823b527b314c75324d7e2f457235528134587e2f527b344f7e3652782d4d7d2c47742d55 *803c527f405682455c803f5e7d2b5884315e85325f8641557f33557a314b7735537c395a7a2348 *793a557f34537f31537c33567f3a507c36547f3e5480445c8a4c5b89485a85464e7c324d782e5f *84485a7e2f52803b507e3b59812f5385445f843e5878364d7c3f49732c56783e587b3646733555 *7c2e5f853f5b80335e8032537d405178364f7830557737527a2e527b3b557b3a55793451753452 *7d38537c3b4b75385077304e813a5c823a6384405e80314f782d537d375779314f7d364d7b305c *81374b7a2a638c3f62833a52813363843660853f678e4e628337678c415f843b58813169893b5f *853b5b863c608d456588486d853a6a8d455f873b6182286280326d8e436483315e833767883f5f *7f3560823061883b6085376285325d7f3852803e507c3b64823a577f305980366489395f802e60 *8137547e3c5b843a648a425d83345b873a5d8e426586335881396485355d7e2f567d3b5c89465d *87415f822d5b8131508340517a325076305b8131567e3a5887434e823357823e5989455d86365a *7c3053792c5c7b32577c386685415f87406684305c843c5b83396481346286445e81375281445f *813d5e843d5e83425b893a547b295b81385d81355f843a59813c547f305d853c5483404c712758 *782c5e7c32587e345f873f6084425e772e406a29517730547d2b4d76235282346085485e782a5e *7426507933547126577a325c803a537b3b5879355576364f6d2d536e3148652649752f4c79324e *7d37466b2a4d6c2f4d6f3053773152702f42652e546f234f72314f752c5b6f29577b33547e2c56 *752e4f6f2a4b742a4c702845742c4f72285d76344e71274f6e295071274c7128507326456c2647 *6922465f20506b294e733058762b4c71294c6e294a6c3a4e6422445e1c4b68224d672359782555 *76295a7d335c7e3b6f833f5c7e3b62803a6d873d61894b62884468883a64803164874474864173 *8a436d853a688b4575904c6d8d40759148788c43728c40768e4374863f819250768e42788d4679 *8f527d94417e8a42728e4879924a7c954c69914d7591407293507a9249778b4c8191487e99537f *94457e96538195557494516a8b5071924e748e487393537f9a627893577e9650758e45708a4573 *8c4d6e8a4e7990516e8b42758e427a924b728d4872823869833d688238698c46718846738f407f *96466c863b6f8b3a758e48698b446984446c8b446d8e4e76904174893a718c447787396c8d4d7c *8e3f6e8a406a874263844073884075913f708e40769047739140758c49688846618e4a61884367 *8d4d7a90497992497f964a71904a688a416487446589477b914f7e934378904776914372924767 *86496081347289476a8742798c3e738b40768c436f924d698d436a8c4966894c6586466e8b4b6f *904b759347709749769446708e4c738e48738538698941718c437387386b8d3c6e924c758d3e69 *82386888406d8b406987446a883e6a8537718b37688538608039627e35577d3669863e5f7f3960 *7a2b6381316b8844668a426c81326c823e5d7c3b6181434d7635607e2c668433627b31647d2c5f *7e2c66813262883e5a843a72853d70833b66803c607a346a843a627d3768783a61702a6075385d *793752782e647a2f5c7f315d742c5e792b51702f597c3f5f77395f7c3a5571285e80315f80345d *7830637e336179386c8543587e3a6484446d8a3f728b3c6c843f5f84366f873b5d88406a893c6e *8a45708c436d884268873864792f76873770853f739052708c50788a4c69853b6e8a48738a3e6e *8c486a8c4e748c427585406e8245697f3a6a883e6f8a456687427387486b8241667d3b63803f5e *7c4164823e7588377c9044758a46788e46708b4d6e8844738b4b7d904c758d4e7186516a88457f *904469843f778c3e738c4c768b527e8c446c8a456084406f843a678b48738a40708c5070924f69 *8c50658b4861833f738642678637607a396480326386426585426f854a6684465e864162813d69 *833a6781406a7b3b5b7e4364844367884862844367824398ac7cc1cdcc6581485a80344d793a57 *7b35497433537633526d2a547b3450792e5378234e7b36576c255576355370295278305c7f354f *7b344f76385373254d742e5373274c691e5072244d64204a6e244b7127436a28536f285074324b *6a1e4e6b2445672f466b283f693141692d4369243d622243682044641d456423426924506e2a4a *712b49752a486e2d516f2549713142631d49641f466822497026426d234b722351762d567c2853 *6f294e6a1d507224406c2b4b6c274b6c204271244a6a1d436a234a6a273f6a264e6b24436b2743 *641f4763183d62204d7226507c2d466c2a426e31466a28496e2f476e2c4c70254669215273284d *782d496a264c70274c6b244b70275f7d2f4f722450792a4f6f1f526b245a7a294f722549682251 *75325d8440557e32557a3452813d4f71284d6d2d4c6f2a4b762e4c752e4d691f4c7b3151813b52 *7834517c2e4c753052732b5c7d2b537729537928597c295e7f275072205877305a7d2c5a792458 *7b2a4d7935577d33537f314c79355476265f8439567f2f527930537d2c5e853c52802c4c6e2856 *7f34597d2858853b5f802f457732547d3e617a35577e2e597d374e7a295b7d2c57742753813b65 *84435d843b5e81356789436481366487365d7e30587c365d7c2c56762b60833f59833d54853a5b *812d577a28537d325f79305d7d2b5c7d2d567b265a7e315c80335d7d225f833262863661843352 *7925567b246082276484366887316a8d39627e31638d4361812f5f802862843963822d5f813c65 *853566863a6889425f883b638d485f873c67812d5b7d39758c4369883b6c8f3b6c8b3964873861 *86455b813260832f5e883e66853868873969892e6d883b65883d5f863765873d6288406a8f3c68 *8b3c66883b6d87326c882e6d91446d8c37618b365f87335984306484356a89305c8231647e2e66 *8127657d295d8331608133587a2a627a25607e296080275e83365981344e7c325579236b842a67 *8a435576235f7c2f5779245678214f7724537829577a2a557c38597c3055712253772d4972284a *6922446a27446c27506c2c476d283d6624466b1f496f254870314b6f234a6b22446f2d48783452 *7d3d547730477228456a1e5b6e234c6c1e4f753144692b436928506e21547a2c4776235e7e2760 *7c3555782d5078265b7d334b7b3652752d55782b5a79245d7e235a78274b6b2655701f59782656 *7726557d324f763656772961833e607a2b59752e657e344e783358762a58752d5b802766812d61 *83335e81394d783b557d2c55762d567c34486d2653782c5b78245a7d2e5475274c7325537a365d *7d3963812d647d25557a276180295c782b647d265c7b2f5f7b2a647d335d6f2c6877285a772761 *7a2a5d7d275379305873295d782c5c792d547a2a587a224e631c4558174b5e1a55691c5d732159 *73275779315d76295f792c63782a5f7c2e607e3472893f68803f6f8d3e6c812f718d46718e397b *913d708b3b78903b7e8d3a7d9350738f4c79944e6b8b41708d437e924685984b889849839a587d *96487f9549808e4081934585934e8193477c8a407a8b46708d43768a3f72904479914d7a8e437b *914a748c43758c4373924e7c8d4479914978954d729147778d40798b3c5d783a75863170884380 *8c41849d5d749352728c3f6e873b6c8b34627e39708b427d8a3f7f90477d8e4b77945284965685 *9c58879a577d9956728d3c7b92488292477c9247859c4c789646809240748f4575883a75853865 *812a7588396a8740718d3d6e8f4c769147758f40708331697a2a657f296e8d3d75924c708e4479 *94436d8f4780913d7e92467790417f923c778a3986954879924c6f8f437692507891437b8f446f *8a456a8d40768a3a6486396c8d506a8138748e3e7b8d356c893f7091476f8337728c39718b4573 *914964873b6e89367689307f8b3c73883c6c863465813e6681375e7f3b677e315c792e657a2b57 *762868852f6f8331698a3d6c91436685346c883b6c812b6c81395e7d2a6f893b65833168823a6d *853d7084357389296485366381216d822b69873f6e84336d843b6381366986347384376b84356a *7f2c69842c6885426c873f6f883970802f67752a687a256c7f2a71852f6c7f32637c345a782c6a *7b26617f356e822e7d88307885326a8c396f8b3e61843d6a84366b7f37647f38728b3f6f89387e *9148748b457089347088447186467e8a437f8a427f893d808c3b7e8830728a3e738633717f3476 *803a6a812f7386307c8c397086357483366e842c778433688134708742808734798533707d2b70 *7e37718b45848d3d7e884178904d889b4b85974982934481954c7a8e4683924a86923a768d4674 *873f85944b849245819856849850819750858d418092497687397184457b8a407990517c91437d *964a7f8b477383397989407989346d843f76863f769347768f487889426a85476b803d727f3d68 *82406a85457085406b843b6e88497189476b844274834073854598aa7cc4ccca5d815553793a4a *75394772364a6f2e4a6f304a6a344a783d4b6c2c4a7338496f2b48723547753a467035486d3151 *7339527b3b487135487936506f2a4872313e703443702a4e72305073374a712e50722f4e742e55 *81364374334f7933426e2c4a6f2c476a2d4c722f4568273c692a37612342672943612d496d3148 *693040652c44682b426b2f416a2b3d6c2842722b436b3243672443602641601d486e36366b2740 *6d3047722b4a712f4b6e25546c2852732d456e2b4f7a284c762b436d2549722e48702d49652745 *6a28516c27426a243e672a3e67243f6a27466c26456e294a6e26456e2d52732f4d7e3d46712f50 *792f4a78354a752c5077314b772d4e7836507c33467931527d334e792e4f6f2b51792b507c2c57 *7d2e476c304e6c2f4c70294e752a5372264479325376314c70324c762e567c355075304c7a384f *75285e7a314f80344c79314e7a395a823e49722d4a742d4e763452803550803358833f58834154 *7937587e3153803a4b7d31588336537c30577e305a7e2e60884462873e597e2e4d77244d7d304e *79264775264b7e344b7c3d4f73314f7f3b557e2f4d7b35587f3f5b82356682285881365883405b *7d415881365e7e2b5c863b5c822e57853e4a8347698c3e5e8a485f8645548140638c4062893b51 *81385f8a455d833f5b833958853f5a87435e823d5d863f618234537d34587a2d527c3b5c83385f *803b4f854758833a5d813161842f5a8235698d4358823a6182355b813a4c782c5b823660843458 *8036587e3558863450833e577e325f823a5885355b843a608b3b688d30678d425c8b43628c4163 *883d6289426786325e82315a7e2d5b85376089466689305d843750813b5f813761893865822d5f *87345c8338628336658a4166883d678e4b61882c60893b68914761813268802f6287425d853962 *863b5e8d4c608a425c7f3e5f7f366485395d7f3b5e803c5d843f568040718a3b6084345f8a4163 *833662873b5a813a557f2f5b843354823e597d2f5e82346085384c722f5679354d723051773648 *78344f7b3a4e6c2950732a507a304d6e2549682448692c477128486f2c4a7630487630556f2547 *733045723349672449712c4d75264d792c4974354f702a446a284767254b74344d69214d72275d *7e3a537e364874304c752e50762e5378355b80335e8334598431527a354c742d4b7433446d2a56 *72224a702846742548752f5c7c2b51742e4c793048722e58823a547d31607b2850762a5a7f365c *813a6081365a843c5f7e3d577d3f5f7f3c5682335b7e325b8646577e2f61813b5785475e7d3666 *822c5c88425a7e305f8a405d84336983335d823865853b5d813655852f5f853d5b833958823b57 *7730577a2f5e83345f7837576024536c235f752d4d6b2452681e53752852762e55772f597a345f *7d355f7d3a617b2d597f2a55732955762a58772a587c2858782f636c25606b225c6b2b4f5c1949 *621e596c24455d205373305174325369265a7e3c5375395779335881346892466f964971934c78 *91476c8b4a789047738d40819f5f859b517c9655829e57869f5c889d567d934882954e869a5280 *9e5b81974a7a944e8096567e8e407b8c3b7788437a944f70904a7a974a80984d788f4877943f81 *964f85974985964f7e994c809b5786994b7f964877975183944b7b99537896577c964b79914579 *8d437291487d964a78954c7b975078914683934280954d76934174924781974c7c964771914570 *8d406a863c6e88406a873f728c406b8036798b3b6c8a3d6a883d68853d68843a6f822f67874267 *833b6c884b6689436e8f3f738e4268864a788d406e843875833e73874065893d738f4a6a90446a *8739768640788c447c954a698a446e8e436f924b688642678b427d90447c8d487793497c934371 *9244718b48668844648441718e44708e4f7b91507b91447a944c768f406f8e416583426282336c *8c42748f456384416c8a407084356a893c698d436a8643728c436d813a69813562813b62842f62 *813b6a8634647c2f66843f6b8e3b6f8c3d78934c6b83376e89395e884859863e67853b6d86456c *863f6d863c69844271864064803e6a813b728e4071873a708439728e3e788d43758b4466843b6a *813071883d6d833e6e873e6f873f6e8c3c6f8f48718f4e6a804179843a75873b687e3b738a4262 *7d3e6a7e406e854276853d6e873f7288437e8c41779245768a42748c40728c377d934a7e935376 *86327c8b47748a4d7892486c8c43708a3e6e884168843e6b863c778d4a7d8d43779246808d3b7a *8e417490447d91467a8940738943758a3e7b8e3f72813974853f73843c6583376a86416c864b71 *873e7786357182336d8135698240738135718946798d446f853a71833b7087366a864468864071 *883768874381924e708d4b7889397c8a4773824572844372843769864a6d863e68874373874271 *88466b86466688425f7c3a5f78406172306784416687436476407585429cae80c4cdcc587e4947 *693d4b7340446b3b445f353d653e3b623444643746693751733a4d6e31426b3b45642e3a64353d *63283a613048692b4d6b2d4f704049713a446939526f314a672e4d6f334c682c4f70334e71344b *75404d6f304c6f334d7234496f3b486b36496d304d6d2d4f6d294c6a2d5478384e6e304f723650 *6d2c49712d4672334d72354872404c6c334c6f2f4f6c2f496a32486a2b43672e3f64233f5d2340 *622b48672c496c2b496a2c4e6b254b6a2c4e6d2b567d31546f285269275075354d71294c672c56 *8143497638537a2b5270274b70304a6c2d496526485b22416022426a334a682e4b6c2b456c2651 *69254c68324c702f4d6e2b4a702d4c6f34506e2f5177305276314c71344670394a702c4d733356 *783b50793b50712d507734537e334e7231667e32567c374f6f34436a2a607c333f6b2a446f2850 *772d53732c54783c516d2b4c662f4b6b2d48622a446a2946682d4e68204e6b27476b2a4b6e2d58 *793660813c59813a5379344f7e4052763b5c7b3b5c86395f824267863f5d7f36538243517c2d60 *8437557434638542587e425f7837577930527835607e2f4d783e577b30547e4e6488435b7b3566 *854765873f5e7f3b5f873d5e893d6882326083405b7d345f843b567b375c81335d82325b82475d *7e324c702b5c752d5a7a325e7f32587b3f5b79324d76355b823757823c5881395c7b2c5b803556 *7a3a6082395d7d365d80325c7930477a315a7d334c712b557b385c79334d773159803d5a7f305c *7f2b587d3c57752f5e7d2e527c3c567b33567e3f5c7e3a637c2e57792d5d823f5f82415f85445e *844465894e6183395c7f396084355e82446382415f7e2d5c7d395779304f7630496d315e81335e *823362832f5b7f2e5e7b325e7d3e5a7c36516f335380425c854850772f5c7b30587730637f3359 *813c58813954792f567d435f792c6481315c7d345877295b7630537e345778275f8033577c3055 *7e305c81375d7f32577d315d7e3c6185425c82415c7f36517d3e46702750763555793d5a79375f *7d305779324e77304b763055782c51772f4f7c3753752e5077354c6e27527939537c404b74374c *762c57763050732d436e3052692b436d3641693245692f536c274c723a49692d51793549692d55 *7339567842476d2b4c76354d7c3358853a54772f5d7d4155722f5b7c3a597a3a516f315a7c3d52 *682a4e75344d743850783f5777385e772f53772d55732b58772a4f7834486d2c466b2e5373244b *722e4e6e2e57782a57803c53793a5a82485d8549547844596a2c647b3463813c567a334b712d53 *7533456b274f73314766274f722e5b7c3050742e4e74335c80406784365884396785336b883f6b *883f64833e6184426d8f4a6186435d7f3767813f60813263813a667d395c8137567c3a62814262 *803b5d813a698438617e2f607d284f733055752f5d7b325d8539618538587c38637a2c59752956 *752a4d72295473285d71235779334d6526536b2853752c5d77265170264f661d4e67295b75334a *6630455a244a5f235266255e712466803960792f5661225c772a6b8837698b456788436e8b3f6f *8c41627f3e6a833e6c904b7b985d77924e7d9753829a52819a517a985781923f8495487a92497d *975282994e7e924e75925a7e935385954881954d7c8c3e6d874070863f7c90467791437c924383 *9753788e467f924f82914a79904482964580964d7e9653728d417892437d914782944c7f8a427d *91538093527e90477f985481914b81914a8191457f924c79904d6d87487a914f77924e798e4667 *8c526c8d417c8d4a7a8c4c79914974914c7289406486407288457384326a8a43708b3973843464 *81396d7c336885436b823c7086397890486a84406d7e32627a3d607e3e69843b61833b7a8b4073 *8a4b6c893a667d38667c3867813f68833e7184386d84416781416a873b73843a72854374874470 *833b70853f6d823c64884c6f864769873f708a3f6c7f307280396d7c356a7c3a607d3769854063 *874568893e6e853b657a336f853c698341677c316a7e3c7386387583416a833d596e2c607f376a *7f2c687c336c8245637b3a64793b627939677d33637b3971863d7a853c6980376a782c667d3d67 *7d37688037618442687c346c813b6a7b366a803c6f843e66823b72883b6e8a3c74813f6a7e3872 *7e37647435728539647e3c7281376b8139667f316e853f6a823d5f7a337178366881386682436c *7f3668763461753462823e66783a66702a6a7b3262813b6c85426f81386f8741728b4075884881 *883d788b4b708947748a45758f4e7186456f8c4c6483436f843c6b84427a88467b8a446f854470 *8b487995566c8547788b396f83406b84487085417a8847778e4a798e4d798f4b7d8d48798a446a *844277873c71823f6d84397086437b8a3d798d4670843c69854773853f6a84407f88456b874a72 *87526b83496d8444668446627f3e677d407483476e814078823a69763b6b804194a67cc3cbcc52 *80454a7b3f47713146692e4e70303b6b324f67304370343e6d333c6a33396a274b6f2c4d692e3d *642a436c2a386f3649752f456c34486b27486f2a43682f4d6c2c43753d466f313f66283e6b3142 *6d33446a30416529456726446527426a2b47732f48722e486f2b45732f4971324377324d783f4f *75304272393d6d2d4a78354f74334a742f43722f527b3a4973374f77344d7a3748752e4a722e4d *7b3746713459823b5b7c2e587e364f722e517d2f46793a5a7e2f55812e4b702a4e7d2e537d2e59 *813d52803b527d304d742a4874314e7b344d762b4a712854743750742c557b2a4a7132537d3255 *7a2e5179305578305082445780344a75304e75294c7a2f4a7c344d742f4c7a34507d3a446e334c *78364b752b4368224c782f47621e4c7028446d2d4e75204c7122476821486e2747702e496c3040 *73284c77344f7627526f2d48702b507c2c4b7c32457838446e314c7a3b527f3949762f4c78364d *7931577d385a823a4e7f36538039587f3061863952722b5e82306286395d87345c82304f7d2e5e *85325f7f315382325a7d305f7d2d5f81355c7e3f507b2d5f813e5a8033577e3858844765894466 *8a33608f3e5f853f62813565893b5c873c648c3a57884b528547668947678e475581365480335f *873f62893d5682375183366084366189376084355a823a54813659802e5d883a4f7f355a883a4d *7d30587b304e772b51813a5c842f4e7f365079334876344f752c4f7d2a48722c5f792b4f752b56 *7f354c76284f7935507b355e873a4a762e58853352792e56833a6181385c813d5080366a934e4c *84375f852e587d34507e2c51833a5780375c823c5d864257802f4d7f2d52822c50812d6482325e *85355c853f577f3154792f58883c5e87385a82314e79305c8435557d305c7e315d823a67853d4f *7b3952843c578335577d30587e305d82345c792b59813060853b528946628735547e31617b2860 *802d597a2b5a802b557936537f3d557f3757833a587c2b4c70254a69294768224364215876294f *7e3b567b2b507a2e557f3c597c2e4c782e426d2b436d2f437133456e2c48732d4976254e732746 *6621486e2643732a537c2f466e32456e275878293e6c2551783846732a54722a456a2f48732847 *71294c792b567f33507d2e5179305a853d558242577e335278315d7e3966872f5b833950752c50 *702b4e6e2951772d58803d57792c4f80335381335b7f2f507526476e2a4a7231486b2753773056 *732b587b2d406d284b7224436a274e722b4c78314372254f752c477228497029547d325774285a *7831537125407535497532567b3d4c7b4254802e5073254d79384f773054782f4a762756803252 *782d4b7327547a32547b3b4c7930497534537831577d305882395881355e843e6686375d803366 *7e376588415f863b5d823b597d2e5b7a326d863068823361802e5f81385f84295b7a3b5a7a2654 *7323537a2b5a7b255f7e255d7d2852782d567a2e5d7a2c587925577c345f74295c75284d752a4c *7831607d2a56854253783b5a7f36627933618232637f2f5c7c2d5e7b2d607d324863215673275d *742447692352762a4f6f216072205f712c546722596e23445b16475d1954641f607a2b5c7c2864 *7b274e601f5a7d2e6a7e2e6d994c7799507d9b52799948799340859c5b8b9b57809b4b819a4f7e *944686a16686a052869f5b7a92487d93427d9741688e45708f46718f43728b3b7393467b97557a *94497e954d6e8e426f8f47648f46718f4477944f758f426d8c3e798f476f8d416b8e427a974a7e *954676934779964c7c99537a93497a8c4076954876904b8097417f8d40809645799446758c4881 *94487e903f6f894765854270883f6a8d457a8d40788e4b69833b67843a718b347486356b85406e *863c6a823a6b87416e833a6e873a758e3d718d467188376e8d437b9648778d41739046718a467b *9247798b45768e4170904271873776833b6d854268883f758139728a3b728b3c76883c6f8d446a *863a69862e718d435f853e6a863b67853a65853a64842c5f7a2969843b667f30587f3b5a83426c *813b6d7e346a8941718b386e7c35617f365d7b3063803767844171843f6d893f6b882f69873365 *7f325f7b31627930627e356c853a5e7c3361812e6a823b69893d6786436a82336481366e853e75 *8b426e8a3f7087337092376a80336a853d6f8537768f3f7585397088416d86426c8b356d8d4368 *84377581397387435d7c336c81346681386f8932718b4070813b6f823c6e853d6984386b82456b *8845657d475e80366184396c842e6a8039627e376d7f2d6a873c7589416f894674893f7e933e73 *8940758a3f6d88356f89467388457a8d4974934a798a45748c41718c3774913f80954a798c4580 *934a6d8d456f883768893c69833273883d7083347190426b8a476e863a6f894765843d73894072 *883e6e883e738b416a87446d8b457c8b436f8d4f6d873a70883a69873d65824267854498ae83c2 *cccd50743f4069333e673133642c3764324972324762293d6b3a426c333965283467363c632c3c *6a343a5f3039612e396e373c64323d6d39436e2f376c2a34692a3c6c38476c3341692c3f632b39 *60242c632e416d2b3b662b3c682c406e344366303a6223416c303d692e3b6a2c38642f34622935 *6a363e6e33446a2f39672a46712f3f71313c662d42682c497235426c3247722e3f6f33436a2c48 *6d313664243f6d2c3b6a3a426f393f6a2c36632e476f25486d2c4d672a4c7229456f284f6f3252 *74294f722e476c304674344c732f4b7635476e32457036466e313e6a2b446b2c5177314c712c4c *75344e7432486c2d5077344b7637497e3d466f36447238406b2c3f6a2b3c682a426f30446b2343 *72324679364f7e3a47702c486d2e4d793a4e783d4f7e39436e2c446f2f557a3a517539506f2c54 *792b44792d5478294775365c803e537933487d3f4f7a39527a3550782b5272284f7a314a742e4a *702c4d7135457231517c2f46712644742b4573274c772f4f793748732e4d782a49722b4d79284b *76284f7d354578293f6a2b587d306d732b6869265c803a487233568029517a30587d3d58762c51 *76304d7b32527b42577f3b58824266883a5a81376486436d8b4057803f688a46628538648c405c *853566853763833e6481365a80314e7a2c597e2c507c31558034587f2f537e3047763048702655 *762e4d76304a75294b7a3150782f58873c567a325a824053813548813a5b863761813557833d49 *76295c8231638a406587474d742f5c802f5684315080334d7733587d2a567e35527a3b58802f52 *80374e7d355b853e64833b5c833d59893e568430587f3761833a55792d567f335c843d53863f5d *85405d8432568137527c3c527b3255722f4e813d517a31587b2c587a334d772d53772d5f823258 *7c2f4f7d3e4f7d2c517b2f57833b5e813565812c63813a55843a4b7940557e39537831517b334f *752f4872284c75284f712c436f2f58802b628636557c30547d31547e3b618235577f354e763152 *7d3350833e567c35587932527f324e792b587b2c547836547e394f7f3958853e5a873656813653 *75255b7d3253762e51742c4775304d742c4e6d2a587d3547792b597d3b4e7d3e446e2c57752d4e *782d4d732c487633447429436c2e4c71284e7e35577c2e4366274872314c752d40722e446b224d *782c477329527c324c702f567b34527c32517f3c4f763d466b2d5476224c74254f7732557a3047 *7934517c3e537d3b57782b5075364a742e52782a5f803c587b32587b2f4d782b51843b4d7b2c43 *6d2348752b446d2a406d2e48773a47752e4f752e436822426525416d3344733445712e486a2958 *77324e6e224e7026557427466c274574294d7b37486c264f742d446e2a4c742e426a294a712b4c *6f2f4e6d28507936547c3f437236507631547b3054772e4f7e3e51712354581d73672490873964 *773359792f4b7833577d3a5c7727597f3f56792c5b7b2e5b762d5b7527577c3f59833c59833c54 *823f5f84395a8340567a325f7b3453772d5c7d29607a2d627f3c6882325b7b2f5f7d2e5e7c355e *822f658030587b2d5c7a29608736658c416a8e475f86425a803f68863a73883d6f8d3b678b4365 *823460893f6c883f6582396f8d436385315f75265570285c70224f6b266278316180345d823b62 *813e57762f4b6f2d487a3a5f7e3c668f436b8b486d8d44688b3e769146739148738c3a6e8b3c73 *8d4473934579945375934b628c446c8939718e3c6a8e49678744718e4c7d944d7d98557b924579 *93466e92497b9049748f3e69863e728d3f799246759251758b4d718d42658a3c748c3d79914775 *8e437d944c7b95498190436f894976924e778e438395447c9249738e536c8e426f8e436c8d4775 *974d7792437e974e728d476a8b4a78924e738e477a974f7f964c7e954d7c954b7e95437c954d75 *94508195427d924a75985671924d7993437f91467a93507a9347718e4c768b3f699144778f4a6f *8e43768c4272883f66843f7688307c8e456c8b4b7d9142738f4a6381335f853e657d2a68803e65 *843c657e306286405f89476184436982406b88386f894172883e708a466f8a4568823d67843b60 *7936738436708337657a2c5d7632637c385d80345775325f7d3a627b335c7b305b7d2a5c702860 *853b6b833768873e728c3c698a486c8a3c628b43758b3f7088346a853d6481486585485a7f4265 *7c316584346586396c80366c8139657c3666894262863d6687466d894567873f6e883f60843860 *803c687f3c647d375f8443607c38598246547638557a3660772e587a3a5f7a35637e39597c3961 *7d3063813f6981335b793061843d5c8039607a3061812f5f813269873e5e834965893a66884366 *85366d883e7089486785446282405f87436481386c8a3e748740658a476b8a3d5d84426e8b4471 *8d4278944e78954872904d73884668813e698a3e678641688237577a3763803d526f32627a3a96 *ad83c1cbcc4d713441652a436928415e2943663137562d41662f4167344064264363254b62293b *5f233c5e2f3a652c2f602633642f396835335b2327582636582540652e44612d3e5d272a5e3035 *5f2c2b59232f5620385a263c5e2240662f4669263d65353a662a416530456d2c476e2c466c2b46 *63293e5825335d28405f2435612d36612b406a2a3b65274a6b2f44682b3863284f752c3f6a2b3f *6c2c38622a3b6623375f2240662b446c34476834476c2f476c2c456a275070284d6a2c486d2d50 *793a45712e52752b406f3841682f446a304563224769254b7234466d254a652449652c45682b3d *682e466b2d486f2d466f3650732e466d284b6e33486e31446b32476f394d702f43692c436c3d37 *692f3e67304b6e354c6f2e486c31456b2e47722b406d2e3c63284370344f793657722d4f7c3f47 *703a4779344e78405278385675374c74285a6a2352763746702d4d782b537c2f51762f52803c5c *7a34507729557b355879335d80364f78354d7835547f425a7c2d4b722a51752d51702b486d2a4d *74295c802a4d7a354d7a3753783251762c68842f507d375d8031577c2c4f7c2a547b3050752d53 *73285068234b6c2f4d7529577c374c76374c7c3b527d355280406083485f844165843d5d7d3460 *7e345b7c2b5c813c667f355d7e2b547e3b63823b567c27617e355a80326580355b80315e7e2e5a *7e305d8033587a2c5470265a7b2c5c7d31577d2e5f7c315c81325c7b2f577e2f5d793267853365 *7a2b5e812b5980385d853b5d803353822e50783457793763813a5b802f62832e5a7f3862823c5c *82405c833e65823a5f813565883f5c84356789425e813e608439617f375477295a7f35527a2e5f *80345c833c6585435e8141557e3e637f304f7b3056782e59772b587b2e5278334c75264c732d5b *7530566f2d5e762a587e2e58792b57752e51732c5779335e7f334c7530597e355b7c336485445b *752157772b51762f597c3e54763d507f3d587f395a7e354e793b5f823e5d7f315c7b2f66812e65 *85375e8432597a355b7d35527b364e7a2f517c325776295480415c87475784415a87415d853a5f *82335b7e365c83335a823362863560803450843f5a762f526d285778314d763050752f426d2c51 *793c5676375b81365a73315673355576365c783a4b692649733a47642c49703251702f4d702b58 *762c4d742a51792f59742b456a2e4a6b274a732d516e23466e254f6e24406523507531507b3b50 *793a4b7132446a34436a23567223476c21496b2a50712c507b2c5578364c773255712052803e55 *77354f67255770244e712a507625426c2e4a752e49782b507e30406a264e6d2756712e4c6a294f *752d50773b517c2e567a2e547b30556c21527629427331476c24496a234d6f2648742c4b722d4f *6b265c752c4c6828446125446624426524496d2c486b244d782d5075295a76306b7e296e8a3674 *8d3c637d3a4d772d58762d4c722b54793b6b7e2e627a30627b3260813060803452743051733158 *6a2858722a5575305f7e38576b24526c24586f2c5e7c3560883e6b81306c89416c85366d843167 *832e688438718742627c2e607e2c5d782a5f7a2b7186336c7d35668437799250889f7462843b66 *873363833b657f2b60853e62842a65873d649049688a4270913a5e873c728c4271863c738e4d65 *802f62812c5b7e325a81326485335d792b69812a637d2965812858722057651f54662148601f52 *6722516f265667234a6421445f1c41641f486d27587e3660843a547a3b617d316f8d436c8a3b6f *8d44749042698a3d7390457b9657748e447b904c7c92438b9d5782984d78934c768c3b76873f74 *8e4780934883994f7e924877914673884980924b7e90478096517a934b80914a758b4d7b91467e *8f4878934e7c95508298567e92517d8f44819554819651829a518598517f9952809a5279904a81 *964985974a7c974b7f99538299528095497d955579934781964f7d8e3f7d934b798e447a8a457f *87467b88407b8c457591427a9244798c487d9145798a43758d447f92466c8942738d406f873f72 *893675913c78934f7e8f496f85417c88426b85477a8836798e437d9048718f447089437283426b *863c7284396d833a6b7f386784406682366981397082396b8233617e34798942798a42738b4575 *8a396d803b75823472803b7c873f6f87416f82427085457086416d83356d8030708639677e3a6f *803664782d667f3366813a6c813b5b762b57742e647d3665792d5d7836607c3660763c5b763454 *712e517a2e547030506f2656712761742d57732d577a2d59733061742d5e752e5a75305c6c1c5c *6e2b5d6e2a546f31617227576a28557d395f7639578138607830708441657c31668440657d346c *864168823a7287385d7f43667f3e6d853f758841658947738f426d893d748d3f698a497e8e4370 *8a4969843f76883b698647638040647e336b83446d86426985407183465f782f6c84436e834367 *8a5299af86c3cccd45753e33693d3262383c6f2f376a3033642f436b3835622e345a2936603539 *5826375b2a2e5d26315d2e3058262c55272a552d2d5e343c65283658253a622b3b5f2743692e3a *652f36633035602f325e282a5b2c366733346931315f2a396c2b3c682e32642d426a313d693531 *642f396627345d293668312a54262f5a21365e24386023315b272e5b263367322c6627336c2636 *672b3c6434345f2932552834652d346a302a5c243a672931642440682537642f3f6a35436a2d4a *74373f67323d6a2f3a67233d6d38366a303f6830406b3b3f672e315f2c346a313d662637642741 *6b243b6a2a3d672930632e40692e3d6e39427131416b2e366c3a4171344a6f323f6b3e476e2b40 *642c40713f4a76393f75384b7a395080344a73334b793e5476334779384b7f443e6f2c4377344d *7b2f527e334f78333e6c344a783f4e7a464a6e2e5381414c7f3c45743e406b32476e2e496f3642 *6c2e46763841672b4777304b793552772f4e7132547f395c7d375d81384e80404e7b3453853f52 *7e345c7d2d5c823f53803e537d33517b3746793c4f812f61853d4e7d305a7e37588137507c3857 *823d57752d4e7a344978303f7433527d3455742a487734527e344f753049723453793054803b51 *792f5b82355b7b2e547e396181375c813b527b31597f354e752f517e2f5082354f7d325a7f3e62 *88494a793049773a57853f5d874557863d59813f5883335d81405a7a2e5277315a7e32507d2952 *75254d7c315a80305a7a295d813552813c577e394f7e3b5a864451833c5b81365d86395f813958 *7b3459803f4f77335783345680385685374e7d364c763b5a823d4c722b48752e5b833b56833d5c *7c264a7d2e5b7f39507c3849723751732b4c773446732b4e80364a803f4c8044477d3e5377304f *782c5d7a30507d3b537b3a588142587d284d722f49762d4d77315a7e2e547b3a4d752f52732462 *7b305780335c8235507d3956803e5a7f3e55733b5075325c84465e864755843e58793849773755 *8039537b3f58813e517b3a5179355476314b7627507c364d78344e763758772f5177334d7b3a4b *772f4778304c7e33537c2f4d782f47712e46732f4b7b38437129487432446c2d4d712c507a344f *732f536d2b517a314d7a345275334d762e446a2b58782e4d7c2f46722f53762c4c6d2848732e47 *72384878334a752c4e772c4c74264b712e4b7334447330537e343e69314a73324a742b4e722c44 *6e2b4d73264f762f4c75345073314d76334e793a4c7330416b2c47763a527c3f4d7a3957843f4d *723155813c597a2d49792f5b87364f7a254672344c752e50782943692f4c7a3a57792d527b3446 *6d1d477329426b29456c264a7336486b2b4169234267223a6225426f2840692a47692f4d6d2b4f *6f264d732a4a7434426a283c6b2d47712d54762e537a334b722752772c537c3a517a2b3f712748 *742f537e38456c3244712f4f773355833f416b28426a254d69215f7f31537a344d79325c7e3a62 *89485b85395f803a4c78335b81395b7f3b5f7f3456783f587a395c7a356a823f64853e6c893e64 *893e6888326486386985366f8840768b446387436c8f4873924068883b6c8633678a376a863c71 *7e3862863b5c81396a8d4c6a8738658d405a832e6b8c4767853b6c853a60813c668c476a7b2565 *863a648634527c2862813a607d3a5579275876275a7820597925607d2855812b5b833257792d58 *792a50742b4c742f597a2c597f304d78285b7a26537328496a295e782a51782f43742d4d6b2048 *65234268254768244a6926475d1d41591a4f651e4863214b72235a76264e73295c792a525c214b *5b1b40612051722c4a782d507a344d70315d762d63772c5d7e3164863b628132507d3c58813c6c *8c3e63853f6a863566843964843b6a823a6c834064894361873a6a85366e8f436e893d67884066 *863c7390467191466689436f90417693497894476f91477d933f7192527691426a8a4668893e64 *85316b8c4e6e95516f8d447f90477492426f8f51799146789551738e3c7897486c90476e8b4278 *8f496f8b44738e42758e4270883c6a91506d8f456d823f6a8a46708535738d497b894070864271 *8f566b894261833964823a6a7934697f336a7f336c843768803d69883b718942738b416f853771 *843b758a3b73863c718e456c84376f883b607d326986405e7d326e7d345b803266803358834150 *7b3664813470823b5d7d335e7e315d7f3c69802b667c366b7e375c7b3662834161863a69863b63 *7b2e5173305f7a3653712e637e4157803a5b7f43607d3c617f345f813f5c7d35567c384b723a5a *76315f7a305c7c2e6b813360803a68803364783a6280355f803f618241617e3850752f5580305e *752969762a69823e65804064813e628443657f3a56712d55733764782f637b2c65813169854070 *87406d8842607f3b6983376c88415d7e32678439637f396a873b688444637f3c6a853e597c3557 *79375c76338fa77dc1cccc476e3934632d35653541653a3860394569324d672c2c5a262a582340 *642849652c46622a3b64333c5d2f355d3838602a41612e3a672c36632e4065303b5b2a3c60343d *65324467333d673640682f46753a456d323e5f2740632c416427365d2c2d612d477239416a3438 *5d2343682e43662745622845653040632543672b426e303b622f3a7031416a2f416f3647713546 *6d2a456d2f3f6730406a393b6d38426a273a5e2f435f1e476221325f2234652e38662e4267252f *5e2c3f70413f642d385e2a365c29315c27395d2c335c2a2c5b28355f2d406024336234345b273c *5f30456831395f2b3c643240652a3a5e1e376127416b383f6b34416d34446c32426d2a3c62223b *6b27436e334472385172344c7237426f3c5473304d783f547a384c76404b783f52793c4375374c *783c5c79425a7e395a82444e7a3a4f83424d81464e7f3f4c7832557936577f3f547a38517f3d51 *7d36456f2d406e31456e31527c374f7b3e4d76404c7639466c294e7a37457337507e405a7f3c4b *76374f7b355a8041638a4259813c48763c587e38507e2d4f70264d7f434973345781364e813644 *753648723449732e517c3850782c568036547e3f58823b477e3e587a385a804058803a50814752 *80404f7d37537f3b567b2a557e3457823f5c81345e834252803f5584465e843d5881415e813e5e *823a5e803a517d3b48783258783a5a7834517d3d58793f5d79355c813352813b5a7e3d517d3c57 *752f4f7b3652712c4d7630577b2b4a7c2f4e773357791f4b6f2c4f7a3345763b5279424b752a40 *6d2a4d7631506f21497f3a5276305b7f335b7a305675334978394e7b314e762f517a33517f404c *773059782c537330557b34506e29507b335076305a7c374d73285e7f3144732e4e71324973364c *743546712f50752b4f6d2d4d752f527d3d507b354c722f517c3d52762a5a742658792a5f813452 *7c274c732c507331516d30527b365b7e30537c2c647d30688b3b5c833b5b7b3d5d813e5a7f445b *7d3658813b4c7b3a587e3b4b7b3d4d73314d74384d6f2e527931466b2a436d2e4a71264b752a4b *6f2a517a384f7c3a55723153793641652743702549752a497d354d79354b702f415d254d673347 *6e2f4d6f364469264e7d3b5279294d6b215c6a2b58793a4c71304e793a446b2548712f48753955 *76324f713244692c45682a44733248773c4e762f49722a51762f557831547329617e345a772b55 *782c4c732c4b712b567e40668f5a51722f44693152752e587a35547a3e618031527a2f507e3158 *7d325d813159793c6387455f8649537d3e5375335579325c85434f7a3c49712b4f723144642450 *722b4d763e5976324f722b486c224a6f254a712a4768284c74304c69224c6c284b753650682848 *652654702d4f6525526d2d576a294a6a2f445f27496c2e4f722a4f7a33507933426425415f2740 *5d1d4972213f69243665234f752d5778264f732549672448712e4d681f576a244c6f2a4165252f *571a436828415d213a602048733a5b7732557833517b3c5a7e325f7c3850752b5c79255d7d335e *7e396180315d7c2964863673904768833c6c8b3f607d3b67884168843763813c6e884467884070 *883561822a5d864064893f6a7c394f722c62782b64842f5d7e3969862f6a83385f813a64813069 *853d657c375a7f3a6a85395c6d275b7f2f5b7d346080295a782f54702857782b50712f506e264f *6e26507328567023546c24607d2c617e2f5c722e5f7b2951742b6780345978325d79315e7c3063 *8135657b2e5072295b722b547527647d2b4a72254c6a23536b2151712650732e54692c546d2e56 *712a4c6c2a4b6a233f631f42601f4365265867274e73345d752a4465204e70323f561c4f631e4c *6c2c5e782b5c7b2e55703254772c4767274c66214c651b4e681f4869254d6f244767295066244e *6a235b6d213f611f4659183e5a1748611e4053194a6222354e203d561d324f1a4364222e48183e *561a33491e3e4f214864255e792e4d77335873205476245c7b2d638b475e7b39627c2a5f833c58 *7a315f80325d823c607e3866853b68844567844467833c6c87445c84446c8b426b86366d843d67 *82466473347088446b823b67823e6f8544657f3e5d7b356b823565823b647f3d667d3f6a824165 *7f365581405f7e386a7d3b6a84426a8332727f30657f325f80426f8840728c486d834562874862 *7e345f7d385f77316a833f63803e67804366792c627d3c6f8b47587d2b6c853671863d6d853c67 *844857783862772e6a7f2d6783356884395f7f3869853e6a7f3769803a5e7737617d366277315f *7c3161822e58753661712f63742d5d7d31607e3d5d7c3960813d638638677832647839657c3660 *7c356581416d853a677d39617f3e668539667e385e712d6981436681346c852d60752e5a793059 *7d3c5d833f6986446f864072833672894868834269833e5a733b617f335c783557743363813d60 *793b5b783963823890ac7fc1cccb4970474567333a693b376a38305f2938683d3d612c3b683536 *5b283866312c593230572838642e3b6335316335396b302a52303755294063313f6931436b2a38 *602f4272344764253e5c333f652b345f2c3c643239623043672739633337662f396133466b3f40 *6a3036622a3962303a642836672b3f642a416a2b3a6a323a5e2d436a31385e273864372f5b233e *652a37613136652a355926355f2b43662b36602b3f652841603637602c37682b3a642b37653035 *5a233f652f3164314471433164303e6d29446f303e69273c6a2842692b4972363b69343e6c323c *69283d64253d6627436c2e3d642a3b683241622742682839662c406a2a3f6b284067233d682439 *6521476a353b6a3533612a406e2846702837611e3f702e426f2e446a2a426a2f4667314465263a *6f303c682b42752b466d2d43652b466b32486d2d466b35416e2d40712942702a457b3748712c45 *7132496c30446b2c466e3149722b46722e4b7738507e374e7d3c54793a4a7733467838407a4254 *7e3e4c7a3453803952814753813a607d2e52803b4f7c354e7d334f8036538135587c3a4f7b3b4e *7b38577f3c4d703042772945652649702748732a5576284f79354f7637577c3a53823f50803c49 *76404d79304b75304e7a395c7f30547835537831517d3d537f385b7c36587d3247712a52783050 *7b3c507b3c517d394e793048722e4f7b385c7e384d7e474c7c34527b2e5b7e3e507c3a5077324e *79284f7a3051782b4e843b507f30567b31537e35537e364d78334f7c34587d3d60813656793650 *763157763148753b4a733249763a437031557c2c4a732a4c6d2f4473304a7b3e4b79364c773749 *792c56813a4b782f4672314c793c557b355180386080345b843f5b813753782c45762a4871274f *7c37567830517c32486f285278345279314f793151782b4d722b56752e5d772a5c8031517d3150 *833e567f3560843d708b45577c355782415a7f3b58792b577e31557c3652712d5c7f37527c3a56 *7d325b81425e83385a803b4a743249752f4c773d4b76375f7a3345682443702a51752b4b6e284b *7133456d3141693345753a487229456522466e294a732e52722845692648762a47733153712d4f *782f4d7d304a772e4d7631496525506f2a44692358763046712548783258702a436d2b4265294c *6d274d6e2e42713c4470313c632246712c4569254770225b742d5d7e375a80374e773d5c7b3a66 *85365c81395d823a567635597833537b3e547630658348617f3a5d8a2f5e802a658a3a6081365c *7e3c587e3c5a7f345b82436080365585445d813c60853b61853a56813d59752c68793855803050 *7c2c5e82335f863c5f813b587e315c8037587933547735517430547a2c577d325478274f7a2f5c *7d33577a43536e2f52773b4d7229507d365173284d74305175294f6a2d55732e5974274c712e54 *70294f762f4b73255c79284a722858722f4f6c294a702c57782d5373245a7928527626446f2b49 *672151722e49743b53763653773d48722d4777303f692e435e224d6f294e722e58773253743456 *7c30507e3254792d4f7326577b2d4f7a32507a3e4d7431587730587e2b5b802e5f843c5883345a *7c2b61843d5c7d3460833f5e853b59843b62863c5f863a607e3269853a6d8b436b813c68803368 *8b395a762654782c467d2f607a2d63813f677f3f5c76325a7a3355732c506e294d6d2353782653 *7526567127486825557228557327557d30577423547223487026507126586f216176235e792e5e *7e36577f2c6381295d8228657f2c617d34607d2a60803b49763249762b4f7e3458791e56792c64 *7f325b73315c78335e79304a722e51772b436a254d6b2257722256782a6580316b843f5d73305b *7f3b4d6d2755722b48762b5072284a63234f642056752d627c2f60833e4f7a2e5d792f51742750 *712d53651f55681a44601f4d6d21436a2c5169204e692151762f486a2349651f415d2543601e44 *60254c6c2a43601c4f682746601c3f611f406821586a1e57621e516520546c20526c2646611a48 *6321425b1445611a475b1c4c64183f5c14475c16436425324b132c4b153147133d49143a4c1833 *4b19304c182d4412465f1d425a1f37511f3957204160284668255275314c702a4d75304670225b *7e305a7a2c58813c5f80386f853a6c863563843469823e5e802f5f823a678145717a3169834466 *7e39647a2f6a84335d752e58772c5e7c345d7732677f355f80376b853c6a86405f884064853e69 *894464854168863e6b83396a7e356683365f8139687c2f62813f5c7f3658782d56742f5f7c3562 *8042647f355e80356a83355c7e3b67863e6485396d87486e7b3462762c597e406780325b7d3a5d *7c2f5b7f3a70853e6f8741627a326381345b7e3e578134617e3462813c587931678633607d2c65 *7e35557e395d834b5a7736537c3651772b637f35537034536b285e722a5f7b3356733654783c4f *7332647d2e647f33677f3e97ac7fc2cbcc486f444a6d33526b2f4164323b672d426c3938643241 *6d3338642b34602d31643731572e41612a3d5e29315a303d693b3462333e6635325f3246602a49 *642a476c3738603043652442642938662a3c622a3f5e2d40643547612c3d642e3d69373a5f2b3f *62303d62333f69353860314a6d3641663240662f416a30466b343a6532426a2b3b612d41613046 *682a3a693549662e3d672e3f69394364293a6837406424395c23415f2643642e43692a43642943 *6a28426334436429305b2b3e62274160243f622936602a375e2742622c3b682d3b642d3e672741 *632f496b3243662a456a2c4870393c6b36446b3245692a466f3644632b486c304061233c63283f *66304369343b632733612845662a3b632c43662c3e6a2b3c662c356b2f446c2e436c2e486d2c48 *6d2f4d6f344e6f3a4770354d6c36476d3045692e466d2b466e374d7338436f3a3b6934476d3b4f *77414b743447763a4e712d4a6f284e78305f7c365480434c753d4a7137567c3849793b517a324c *77364a79404d77334b76365a7b334c7e3e517b3c507a3c53772d4d73304c753b4f7e4052772f47 *7c3b5f813c4e7a2e4c79325d7b335a782d51752c557431527635446d344d7a3b5a742e4a763252 *7c3d507c404a7433597b404f783f547433537a34587b32557b354e772d4d76375177304776354b *733a4a7640647b305b7b2f567a2d59822c5d8036617f375d804050793e61853a4f7b25597e3850 *762c4f75344f772d5e7d33577d354c733e4e722e527a3361823b5d812a6284405c7d365c7d4158 *7c3055773251752f4773366886475e8132587936547e3c4e763d5973304e76314f742e4e702b4a *6e2d476c325277384f7736476d324c7330456c2c4868264c772e4b6f31455c1f4d6722476a2d4f *762b476a2e4c73324a762a466d294d793b53772e5d7528617a355c7c3c58763557773361823665 *8641568139648740627f3f5f7e3e5d793b5f7e385982375c813b5c8136677f2d5d7f3c4e78355f *843d6283415f87405f843a537f3266883f5b853c61864063843a67823e597e415d803b5a823f5a *813b5a7d3b5275384e78364b7836547235456c3544692a4a5c23766a284d7834537a354d6c2b5c *7b3558762a54722848732e3f6d2f44732f517634506d2a54783b5f7a365f72305c81484c7a3952 *7a344c7b3a4a6e2e4766294a662a506f304a6c284a7333587b3c58803b547d3e557f37567a2f5f *7f3d60823f5f7e34598344587f34577f39547e3a5f7a37597f34678c4760833c64863d5d8a4667 *8939648a405f843a688643708c4874843c6281355d8342648a435e87404e81435a7b34618a455f *803f5e853f6087415d834558833d61863b5c853e5a7f3a62814166834157793c597f475a7e3d53 *7e3a597a31587e3b5877355d7c32587c33607c3c5f7e35517637587d455f803d5a833e5f7e3c53 *7b386582494f7c3a557c40507739547b3b567e395f802e5d7d3f64813f5c7d3361833c5c7d374d *6b2e537833587a355f8539597c3a57772e58752e566c274d7830507831547f354c7b33637a3361 *7d3b57753357732c4b6e304a762e4e7835536e24586f2c515e234e4b115c6e2b547730587a385b *7b305a803a577d325d7d29618a39597d295d78284b7632567e34597c355d79325e7e2f5f7e2a63 *843c57762a5f7d2e4d7d386081385f8a536c84397486326384386180345f7c3069843454762961 *7e2a6b843c67833d5c7c2e61843a5f8231627d346280415d7e355575385d732a56782a647e305d *77395b742959752f4d732e577628587f30617d2d71873b607c3258732063813760792b607a3363 *7d3a70813856843a5d812d6080305c792b5d73295e7b345c7433597f415a742b506b306480355b *823258803d4c6926516c214f6c2d4b722e50702e5f7827648136587c30567a3059772e4c763a56 *763155762c5f782d69843d59802c5c7a2b516c20526a2558722a5c7a305576375a74305c742f5c *7724567b325b722d5972285d70305f6f2a4d65335272276275275d6a1f526f244e661e3f65274b *6a294f6b244e6a295469225b6d20566e204e6622516b26456422516e33515e215569244b611e50 *631f446424405b1d5263285169244a62244c64253e531e415b194d5e15425d1948611f4463244d *6323475e24425723526a23405619445d2143581a484d16425e26394c1a43591d3e5a2536531a3b *5e213e5a1e4d6a284c6c295a6e335073375c7134607a4354732b607d345d772d5d712b5f74365d *78315679355f773c5777375a7b335e76285d732b5676306b81325d763557722d617332546a2d5e *732c627a3369732c5f732d6a77276b7c3358733167802f667d35647b39648437637e3364722b62 *7a3b5e79414e6c2b64742d6981364e6a265274385770284e723456763263783c576f2a5d7f3662 *82354f7338647a3958733668792e5a6c365f73366075316574317584346d834371873f6a7a4368 *7e4756713a62702e5e6f32637d389daf8ac2cbcc476a3b3a6a353a6e39396731386f3535602732 *632935653e396a3033663a3b6b32336434426d2f4369333d672b39652f3767383a7040386a3b42 *7436426f293b6c2741712e416732426b37376a3d4467272552293c6b313a682e33651f35692d41 *6a293e6d342e5f2c325e2d39682f3d6e2f446f2f3b692b3766313e66313c6a3035663733662c3f *6c2c426e283f6a2b416f31426f343660293f69344f6d32396a34396c3237682f366b33406a2c3f *6a303f64243b6d2e386a2b36652738642e31602a3f6e3b3f6d2e426b2b477033406e353a6b333a *6e373d6c2c3c692a3d6a3241682c3a672f3e692a356d3c356930456a2d39672d3b692a47722c40 *6b2a3a6e2e346830446d2e47723240783a3e6d363f6c3242712d406b2e4270263c6a2543693847 *793e547e3c47763946702b487631376b2f43703341783f426727456c284c753e4072374067253f *70324a7a37426e3141753a507f3e4a712b4d753045753250833d4277324a7637497b3a4070324b *71364377364a7b3444733353813c4e80395079374d732d4f8140557a3750864852803f5285454d *7f345c843f4b7e3f4f7a3053824a4d7736477634478142587f364b752b4c7d364f773154783751 *792f4978305382354577364c7f39507e34577f3c49752b4c77314d7e384e7e3a4a763849783055 *7f315d812d5d7f3a517a3452824f557d404c84424f783f4b7f3f5d833d4e7d314e7f354c803159 *84424f84455a843f5986475386394e823f57873050813a5d81346781365f853d5686425d864055 *7e365b8b444f8445587c2f598145597d325d813d5e7f3b5882395b8b41588032558343537c3b5c *813b507533507c37517d385981305586415f8b38587e395b8338578039517e3d5283435b864051 *7f2f52823c61813557823e4f7a40487a3a4b79374c7f39517d3b57844358853c58883e65863e5d *833c5e844445793a4d7e3e4d802f5280324f813f577e305b7a3b5574305b80355a81415a854b5a *853d5b8840608a3e5682446088425983415d853c5d853f5d88415881345b8634578135587f2d5e *834062833c567d2f587d3c5b84365986365080314f7b2f4d793253733564813e58813b4b7d4356 *8030577f3e58813a63813e59803e567e37567c334e773b4a75354f762c5b7e3054823f5580354d *7e44587d2f4c723c4c762f4e783c52803c4d7e4051783361874750753752742f476f2d48743549 *722e4b793a457730507939527c32497728567c3857803c4f7c3e5c7c2f52813b56803d4b7b394e *783f5c82325d81405b8b4c5785395f823d617e32477833587e36558139497d324d823f5e85425b *82454e833f557e2e5581395880315078304a7b3154812f507a334c772d4d7c3f467330547a3050 *742b4d782d4a732b4972354a753b4a732b4678334e732747722b4f74304a7835486e2f466c294a *70304b733b5377244f7d3b5981394c7e3f4a7f3e4e7523527739587f3a587d2c5380355b893b5b *7c3a5b833d5980315b853f5582405b813d547e364a7d3953833759792d4f722d49722e557a344e *772b587b3c54732853773552773b4e7a36577f38577f3661863c5b833f59792f5c732f597d3656 *7c345d7f345d8030617f3d5c7c3455782c568442557c325f7831557e2e6086335679325e7e3350 *76285374314e76304a762e4f7d32537d33658c40677e2e5d853c688a396081326081325d7e315a *81376b85335e803348772e597a375c7d345f843e618b42668c375f853959853b5c803269833b5e *81375f833c6184314f7b2d537e3862812c69832b647f316e853169813b657d275e8233537a286a *8e435f83385b8638547d31537526627d315f762b59782b648138608233557926586b275b742d6c *8a40637d2765813a5777324c732959732855752c677b2d63813255752f54782a446c2b426b2644 *6b205979344d722b5574255f7a245c8038637e384c7335597b364878285174224e6d1e5b75225c *7628486c224e6d2a4365224e69294d772f557827466c29466d274e70274d782c506d24456a2c42 *661e3d601e44681f4e6b21516e25516e224f7a334675314d6f244965284d631b5072244b712c58 *6d2d57773a4e6d2a486b38486b36476a26517122577b2f4c6d2854702f5670333d5c233d612243 *6220496e294a712f476c2640631f4465274764214d69273f672c3f5d1a42601234531532571a43 *5c173c5d1e36511e2b4d1c3f6a233b6829465e1a405e1d4a621844641e4c61273248153a4d1c2a *430f1c410e1e420c1e3e0f293d1226330b283c0c203d1020381126420e28401119300a203b0c2a *380b284312253e1735481928451826480f21420d2d4b0b38561c3a4e122c4211425216274e1a27 *4018314c18264d102c5616314811344b163558203048183b5b22344e1d314d153e561c31481d35 *4f16334817344217434318334f1e3e581c465d204c702c44722755772e556d2e526d2e4b733c43 *6a30355f283859233c5c204462234b6a288fa57bc1cccc527340476e3342694038632e37613c39 *63343c682f426c343d683e40643131562f46683035622c385e2a386329446f3545692e44663140 *59253a65363d6829416d3147713b446b37446d394669334368383664303c6630406632425e2c34 *5b2843662841652e426b2942652940622d3f662f44692c476931515b22466432446b2f436c273c *6c314670363e642a3a57283a60273d653341652e436c2c3a602e4266394a6527366236395c2c37 *682f416e33446a2e43642b48733a3e6a3741673a4f6834436a2d366836416e3238652e3d6d373e *622c3f65324162253f672d4264303b683c396b38456d2f4b75374c743a567b384970354a723344 *71334c70354c6e324c72394c793f4777404d6d365072344a783a466e38406d345072324e6f2d40 *6b2e4d6d34437235446c28406a294575363c693648732e456d324b75394c79394169294b702d43 *6d313d6a38466e32466c2d47733e456e2f4a71344d76394672344c7538476f3a4a76414e723946 *742d48703349713b517b3c4b77354e7c3b4d7a3e5282465582404c7833587e424e7e3e476f3048 *732d517a3c5a7a3b4978304d7729567d3b51722e4d762e52793f527e3e527a36577636537d3b5c *7b36527935537e365b823f567b3e557b325b823d54702d50782d5a7a344d7a3a5a8237597c3150 *8043567e39668238598042567d395678304f7f43577f3b608641547f47607f3f75935d597e3e4b *7c3a527d365c824d5c834073904d658845537c4054813c567e3d4c7c3b49762e607e3048782f5c *7e3a637e34527b2e5a7a33577e34557e364f7d2d52782a5977365b7c405b7f41668645547c3e66 *84376483334d7d3848733757782f5a803e4a6f30587d38567b2f538038517d325d84365c7c3b63 *843e61824658844b5f834060833c5a833a4e7c37497d3e5382425c7f40658135518440537f3f57 *843953853f58814049762e577f3e527e405b824461833d597c3e4e85425a803a5e833e63813d68 *83406384435f8c4660843c5e87415c833e6083375e853c5e813558814159824a5983414e7e3d53 *833f5f853e61863a5b813d6c884166863e698d416589435c8645598241658b4062853b698c4271 *8e41728d486a8b437a925492b1a4638d4d5a894561853167854263854258813e5b7f396485425c *8039587e315c80335f8142587630567d3f5e7938527b405b804764894b597c375b7e3c557d3d5b *7c3f527d4456793c5479395477405576394f732c5476315d78385675365073315b763354783a58 *7b36587d3b587d365c7b3b577b3659732e667d315776315b743459793c4f6f3344722a5a7a344c *72294c742d4f742f507733477638507d2e50752b47752f4a752b466c2f4e6f274a6c2c4d793655 *7c35567c3b4d78324b742d4f77354c6b2d4c5e2746642a45682e3f6531466b2e506e2d476f2e49 *6a254f742b4f7331576d2f57792e4c76344f712850743448732e4a6d284e6f2b4f6a314c682e53 *6b2b4b71304769273f6820457832426b264d702b5273314f6c2740743a4c73324d66264c76374a *712d48702f4e6f2b5b7c384c733250753253782f527831537c3366844163834962804363803a5d *82376087436987475d7f3d5b7a3c657d3d708b426a813c73893a6b8a4058803f55814368873d69 *87385d8c506e87325b81315a81375d833b5881346d833f64803c6480346b863f6784346382405e *772c4d65295f712a617a295f7e336481365b782d5c7c316c8635607d2d607e2b5e7c325b7d3560 *7f36587d2c4b67265f783666833f658139587c2e5d7e2d6180365b7f2f5a7e39667f2f6786406a *87336d843964853d637f39637e2e5d7f315e7e29678644648139597830637f3360884964844360 *7e385777325076345f75336d7c2d5975305c76326079355d7b39597b38668435637c3051732d62 *6f28577434507836536a275a6e2b5c772b59702a51742f5c762c49662e516f2b5064235d752e5c *6c285169234961234c612052762f57732b546e2e5569235b752f496d3150601c5270274c6f2252 *6a264b5f1e4f652147642252743e466626395d18546b2a4b65204c611e4861285773305c783f51 *6e294a61234d6c2b4a67285b773c5262275d692f526b334e682e42602b43581c4d6a263f5d2132 *541d4659214c642547692c4f6a2b4365274a6b27486a23516e284f6726506e2f405e234d5b2143 *5f284969294c6a244964223e6026415f2446501b4b602150662654723252702a4b68234767263f *551d42531e43571e3a4b163e5b2248632a4465213e5b20425f203b511d3b481834511b334b152d *4f1d38511c32561c3b5a1e2d49132b4f1a315015365119374d1a3d53202d4e17475311425c1d30 *5319394a1d44451835461c3c4d1a355c2334521f345e1d495e10314b152f561d37522138552735 *5221365c2235511931541a506a2d3e5a223f541d4456203d5221445c23465b22364f1b3d561b39 *571d25471635471a3b4d1e3a5321304c1f3f502086a479bfcbcb4a7037447036416e3b3b632c43 *622440692e3b652c356131406d3642642e376c3a3d6b2f46692f4c702f537231446b2e3a723335 *602e3a632e436a2a3b6b2e3b6927376329466930466b2e3d66333b6c3c376331456e2e38672f43 *642441692a4c6c34426331436c34476c30426f35476c2d48723842702e3b6f33496e373d693a3c *6a2c4072374a743846672b4b7336427031496c2d43692d406f3243652a476d2e406d34456d2f3f *6d3e4261264f7433466e36457038456d30476729406f314d754042702d426c31527531416b2b44 *6c32417037426b33416b29406b2d416b2c487736466f33497b43487134496e344a763e557a344a *702b45732d4579324d77354574374778374172403f6d39507f3c4b712c547c2e486e2f5070264e *794249773b4c7a4052783f49793a4a74304f7e314e7a3358783c4f793d4c7c4151753f527c264f *7d405486415d8138547f364c7f3850804153803e587f34558041537d365b863b5a87405c7f3d52 *80405c83485b823f5b83425c834062894465853c5e8e4c5c7c36517d3c537c335b7c2e537d3352 *7d32537e32547c375b823b5f81324e81425882355381354c7e385d7d2f587c31517d315b7f344f *7635608143427738487e3f5382315c8033527d3456853b5a863b507f304f7c38527e3a51823c54 *7e35587e305c823b6485335b7d44537b315c82335f844559813e537d31598240557f325f823658 *772a4e762f5a823b537d3c57823e5f853b53814050853c4e803353803f526e274f7e3353824554 *7d3a567f3f56772f4f792c5f843e587d4050793c4f722c5c803c5a803b5e823c57813663833c59 *7c30537c35507a3c537c32597e3361843c52843c598437578844507f364c7c38577d3161873b5e *81325985405b843b598235578c4e618b3d698e425f884960884662863c5f893f6086355a863452 *81325c853b587e2e597e3c4f7d3059832e648d4662813b5b812c56813d5c843b5f843060833f5f *853b5c863b58813b5a84415c84355b843660843256762a62863e5d823f537e334e7c3158853a5c *802f49763355772850782b4d7f34567e3e597f38568036567e2c5c833d567a2d4c742f49772c59 *7f3a517836457d3159823f6682415f85394f83474e783c537e3a5c81435e813b5f853663812f5d *89415a863e5f82405d8242577c3d5c75315d84405d8434608133587b325880385a7c354a78364d *79374f7d3c5e89425680315d833f62833d68863a59803e5d8234588344558038557f405f83395f *7a3b6a854259803658853b58823a547e335881405a833f5e843c5c853e598a4d5f873d58823952 *7e3353793b53813a4f83415b853950803357762d5b7f325b772b577825567e3f4b76394973324c *7027547829507d3154792f4b7732597b384b702b4c78314e7a345175334a71275075314d77364c *702b4f7431477039446c2b50772f4a72314f7b33547e3748772d53772f4c782b5075294c6b274a *6f2b4c6f3a496f26517e3d4f742754702d48662342732b50752f4e742a56833d527528466c284d *70324d702c4e6f2a566f2a4c6a2142702d496b27486a224f671d4673284b752d5a7c3548712652 *7830507825527a2a5c843a64822e5a833e5c7d385b833d587d28537c315f773a5b79315f824263 *884061834261833f5f8137638f425c7e3a537b325f863b5a853c5f8439597f3354824256803f60 *7a39577c2f5f813b66873a6c8d475b89465e853d5d864357803e5e82376c8e40728d4064863f61 *84355f823f60823d5d8137587b2f55792c627a325c7d2a5f80285f80305b7b2d527a2a5d7b2c5c *76206281275e812c637f265d7d2a5071265d78214e6e2b4f6e2f5c71205e752463802b5f802d65 *7f325b803e677e306780386e853b5c813b607d2e587e2d6485396480345f7d2a6480356d843766 *863b647f326284356786306b8a3a6b833564813b627f356a843c62833a5e7d2e5f7e3060792e60 *77245f6e264e6e2b50742c4d6a244f6c275870215776224d6e1b507325496a29506a234d6c254c *6b255c7c31536c225d762561812f607d375d85434d6f2752722c52763c48662848692e54722948 *6c2d41621f3b65213e64284a692452702e4561214c611747601741631b435d2142591546641d3f *571f425b17435f1a415d194a6017516a1a546a1f49702d426c2a436026516d355a752f40591e46 *5a1d4a651e4e65273b60234e5d1b465b1e47601d4364214b652340571e4258194a601c46611e48 *632045691e3d5812455a1842621f425d1c3d53212c4a174359103e561c395c1f3d581846601a46 *5a1948621f475f1b4f732e4c631b405919395a1b495e1b456120526a2742601f3d5c1c42682640 *5b25355e1c34521f405f18496826425c1737571e39521a35521e3d541642561c425d1f3b572045 *651e4865234a68273f591e4a54143e5c21436622415f1f37591f45632340591642551c3c531b40 *60213f6221315820385d1d4157214d5a1d4d5f204c5d2387a479c1cccb3b5c2e325d3529542a4e *85704b662c2a522a28502421502a224d2e1a48242b5e36376533396630315e2e33602e2a5a2930 *582e32673534623336673034662c3e653135653d335c2e376435306330305c343d65323c673138 *6933386637336636386635326230336132285a2f2d5e3240673035673131602f2f612f33663643 *6b33416f352c632b35642d31602d446933375327335b313a663a3460293f6430436527426a2e39 *643439622d3a603342683742683444692d43672e3e65323d6731436a3140692d4469383d6c3241 *652b3c6a353b66313c642a37642c366a3440672d386335446d36416c34487130486d33436c3441 *6c2f406a38416d3848794042793c426f3a4870304871404c7335436d3f3f71425271385279354c *7c37497937456f354d6f3748702b4b7b4f4b753f446d3744714047753f4a7537456f3c4d6c3c44 *732d3f70384770393a6c3a417445427736467a374a743553815f84a27e5077384d7e46597c3f58 *80445883435e83415d85455886454d844e577e435d864d5d823f5c874460844353834451803f5d *874d527e3e4f7d485181425b81464d814f577d38527a30507d364d7d3f497c415683414d7d444f *7e414a7a445480425880434d7a3a537840527e3c567b3f558240577d3c57833a567d31587e4355 *78335f813f517e38557b4056813e5f88434f8341507e3e5a7e3c5884414f81405c844059823e5a *7f3a4d793a58812f5c843c5d813b507c34597c3e6284445981485b874e527e435c7d425074304c *7d434c733350753143773c4576354b7c4250792e4c7c3f5777325176324c793345773a4b753a52 *79415a8344577e40567737567f3b4f773642793f55783a527d444f783a497738577d3e4f7f3b4a *7837537e40507f384e7a3c5281375082415b7f3c5980344e80375081435279394e7a3d587d3353 *83485580435a81345e85496386406085475884435c813b65864b5e8541587e465c813b5a79325b *81445881465b7e3d5c7e3d5e83385f89475886405e833f517c3f4f76334e7c3f4a7c3d4b71304f *712c55793547723548783546713a4d75414f793c4a7739587b3a517b3a4b773a517630537c395c *77354e7b3b4b79494a772e48783d5b83484f793750813c58813356762d527b334b6f2f517d3d58 *783b5580475881425e823f5d8145537d3d547c325e844358823c557a38577f3452783457813b63 *7c34597c2f567a39527c3a537939567e3b5f8538597b34517a345a813758813a52803b5c853e5e *833f508035578a44577b3b5c81445f80395c813b5b864a618e485382465081484f7a365b7e405c *7e3957813f507c43558140597c2e577e3a547e434d7f3f558640547d4158813e487635527b3c58 *7e32598139547f3f517f425b83445f82375d8238567a354f7531567f3f537d3e49783b557b3854 *79345b7c2b50792b507e3946703045722c4a752f507831497831486d2b53763e49712f46723a3e *693145722a4c722749732e4e733351733056833d4a73335677335d823e587730567f42587b3e52 *7b394f7b3050782f4e72305b742c577f43597e3a537c37587833557b3a507a31537d2d53793b5e *70285c7c3049733b4f742e5c7b38587b3055813b5a7c345772285b75255a7e38507d3152803e47 *733353783a5f83455e7d32587e42577d3b5a7833638142587f4a587f3b5c753456772a5780335a *793453752e5c762d4774304c71284b6c2d466d294e71274672304c66294063274a6a274a662541 *6028416524456a234c69254d6a2b4260254467294469334771354d7b3649763456803e4f7e344a *79334f7a3a6183345986485e813e61813f5d823861843465802d5d742b62792a5b733367722a51 *652250742b5b752a5770265b762e627e38577a2d5c732b5a722a57732b6381355e7d2a587a2f63 *7c2c68843c5879315c75295771275e7827597d2c617f345d7c3267833e68853f61883d5e834965 *844758803b5c8036577d355d802f5f7f326477285d762e6289405a7935518130577025687f3566 *7f2b64873f78904861853f63793d5c742a6e823c6082355e7d335c6e2e4b682a4b66253a582338 *5722495e224f6c2a5160225669264e601b476420445e22516e294361274767254667214e6b2945 *651e455c1b435f1e42611d34511b3c62284e732940581d435e1b32501b45571e3f581b47621f47 *5d203f571f4868254a6d285169273e5e23435d1d335c1d274917314e1847571c3e57244a611f41 *571e49672d406126425f27425823405c243e5528375727425a1d3a58243b531c37571e404e1941 *4f1f3b4e1d3d5620415c214f6023465d21475519475820516221425f253d5f204769254962213e *6522416633416222385519385d24425c20435d22314d1e41631c30521d30561e3f5a21495b244a *6f254c742d476d35445d223a4f1a3f4d1d3d4b1a394c1742541a445b1d4561223b562047652a4c *5f20465f213e58253d4f1e45571d425c25435827445b2d4a59248ba480c2cacc2337201e3f1a17 *31132138111d381a1c391632491a1a2a121a250f1736131e3c0d194315234c2723421e1f431812 *31101337131d3f151c4014113e141a381116310e1e41102c4b242c50261c320e0e2c1612321014 *2d0702150606260c0a260a151e0710330b0719040d230c0719021e3a1315390f183f1a2e4e2428 *44181c3511152a0a102c0b1d471c091f06102c0c031a04000f020a1a07203d162b431a334a2420 *4416294e261f401d1d390e1e35122e521e1e4520193c121a481b1e4524173611142c0a193e0f22 *491c284d1f2c4e2137531a37602c244f1b1f4f212b522628552843692c486c30325c272f5f2a31 *5e202f5c1f2857222956262c5c2437632c4061264166294c6f2d42702b40642a345b313b622c2c *5c274f6d293f6c3743682e4b692d4c752f3f602f3f633444642b3e662d426d2e406635436b2842 *652e457136456d2d436e2f416725476b2f496b2b3b683e42743f4b79424a77334e773748703151 *7d3f5780414b7a3d537d3c5a7f434f7d364f7f3750803a4f7a3a45763c6281354c7e3f4c7a415a *854654813247803d45762e4e803447783e5a815253803f4c7e405a7e43427440497a35507d3e52 *7a375779364b7c42537c355d814051813c50803e48762b4c743147773547763a4d7532496e2f52 *7c3e507533577c30557b2d467337507731537b394b7c39537a31547b35577e3a4c732a60813356 *803e67833d597d2a58823b57833f49783c587b345c7d3b4e7b305178294e7a2b5c803a5d803b58 *7c324f7a3a4f793d607e2a547a365a7f354c7930567a345e7d35567e3753763e50783358803c54 *7a2f51782c5c7d3e54793f4a702c567c384f763f4c7d3c54823c5c7c38547c335f803a597f3453 *7a39557b3e527a41608335547732567933527b2f58803e507839557830426b334f7535496f2658 *803c5983405b7c32587e425f8139517d3b5282435d7f345d843d67863862873f5681416087405f *8437637f345f8540668a426187455e85385e853f5d8230587e30597c3362813f5d813a6084395c *84385f83375780365c80336189435f863d587f3e5b83346188395479285f83385c81335c823a5b *81355b823f5e7c324e80335a812e5781305c833f5d82435c8b4a567a325782335a83415b813f58 *8234527d2c577c2b507d345c81394e763b557835567531527c385a7f35557e334d7a30547b325a *82404a752f4f78355984435e843b527f394b7b336281335b7c30557a38598543587f3e5b813f60 *7f2a5b862f577f3a507b3b5b894765854364843e5c82406687405c863b447c365e863f60863c53 *7d3a5c823a58804464853e5f7e365384415381375c813a5b7d365c8040507f415d803d67863f57 *7f2d4b7f324a762d567b4051743a4e7a31507b3e5a7e3b5c7d36568441548349607f39577f395b *813d5b8239577d365e7c3e588440577c2f567a2d537e33617b315072284c7531557a2e587a2e50 *7b2f547c3a5d7b2d577b3d4e6f2a476a324a763b4d732b5375315f773356814057742b557a3453 *7f3f5080395075305b7c365c813e547d30517b26547a2f5e83345e863f5c833f5a7e3f5a7a3756 *7b35587e34517e31567f4157803d527a37507b39597e3a5b7b336183315e8643557e335079345f *803a61803b5f833e65802d6985445e7d36617e2d4f78306077265f7e345e753150722f5b7d3357 *7b315275325a76285a77314d6b2c4d73244f72315073305477364e6d2c4b76354a70264b763a46 *712c47682248672147672348692343632247662244642240591b2e47172e45112b3a0b1c2a0a1e *2c092e430d263d15253a0c1524042747112f551a37501a32511d3f64234367234d752a668d475f *824865823c6987476d85406a863c6c8e48647b335f8034627e3365853f64833c6b802f69823765 *813562823c69823b6582385b7e355e7d355d75295d76275f803d57782b526f295b7f3a5c7d3355 *792f566f2a596b28537428627c295c7d335e78275f8032667c3060833a6182325176225378285d *7d315b802b69893f5e7f3263812f6483345e7633627e3361844065803a5c7f3a50782d61782a66 *7a2e54752d4d6e2d50712a576d284a6c2a4c6d274b6f294567254f631a536a1f4b6b224a6c244d *6d285169244f6d2c4e6e2d4e69235064175269205b7822506c244c6b294d6f2b506a2757762644 *6526465f1d485c123b581840581a42601d42541e44622a4d6222425d1740652c4d6c2042692542 *601e4d5f1640611e3e5b1e3c611e3f5a174056133c54194556154360203b5b1d40561b3a501944 *5b16425e2141611e45622041571c37561d3b561f475e23466120415217405618425e2644632138 *5a18395c1f395b1e48621f4063283f5e224a6a203f652447641f3f64214868244767283c612442 *5f24425f1e395d203b5c203d5d25374f1d3751172e4e1d385621465e1f375d1d3852193a5a1f3b *531b3554173e5421485c244f5f25435b1c39571b3b4d1634431a46551b8ca17dc0cacb4f653141 *5829303b23292c1c37431f4656364a4923415233314c2631532b486339385828324d231f3b2022 *431f1d3f1b273019212c101f321a3945234c642f525f293b5d2c2740252840240e1c0f253e1d29 *3b160b140601030416200f2230172b4a22142b0d020f03020f03060b0010180405180227431b45 *55283654291c2709030901000f0600090110200d152b16040b090304051f271623331d445b2e26 *3e181d21111a230e182b0e1d34191e46171f4013051404010d00000d01051308081d0d25341016 *210b0b230a1f41131e45251e442308250f0006020319091b30132c491b1630090c1804172e0a0b *24070519040b1b0b142a0e233d191b421720421420441f265027234b1e2b4d261f481e163f1814 *391a0c280f0b220d0e2e0c1b32160f260b1b2f0f0e2d1015240c0e11040e16001d23082b421f29 *40161e3d18284214172a0c21421e17401a1937141b40181c431c2049232953223c63282d592535 *511e414f1b425e25345a272843122a3d122b4d1e274817132c0e11250d27380d334410304f1d2a *4f192d471a29461412380f285521264f1e294a153f5d242e561f244d1c2348182d4e1d25471d2c *4d19253f141c380a162d0b1d3c1029501b183f161b3d19143a191a451e1630131c43162d501a38 *5e1f32602134632d3c622837662b2a5b2e405c221f4719224d1b3d5f28305f2c3e652b40692a3f *713442693746722f477438466c2f4e7e334574344c7a40427635437033507a3547764145793c4c *752a46763c437c394d7d40568242487f424c7940577b324a78424b73314a7836497232587d375c *843c5c8441598137567e336584345f824054803950813c4e7a3e4c7c3e577e39637f385a81354f *7930517b2f5e7f366588405c833f58844257823e5c844c5c84495e8449608643527f4259813958 *84465f8240537a3c668845608140588034507f3e5b803e5675324c762c5d813b5276365b793a4e *813d60863f5a824c5c874c66893e6481385d8540597a335b7e345880395b7f325a81315783375e *81315a7f38617e375c792c4e782b5b7d335a8344527d336182385b81315d813c55803c58843a56 *84435b85475a7d3c658a385884416081325d823d5e84406a82346086395d854363883f69873e6c *8a41618636668d3f65833f6585365a8243587e3b4f813b53803c568235547e3358762f56782f4e *79315a7c34597928547b345c823b5b8544537e435b7c355e7c33587f375183496082375484435e *7c345e8540567f3360843d6083425582345c843560833062843f5583405f873c5a81345f854159 *83365f813b597f3b547c325d7c3b63833965843b5c7e335f803b557f38507f3d5079344f7d3053 *7b364c732b547d34577529507b3653732c5680325d78294d7b2f4b752d5578326083386180365a *7934567f39528341507c38587b324b7830537a324f7b3d597c3359813c50782a607d2d4e7e3d5d *7c3d537f42597e2e5c81385c82355a7c3957813964844060804057823f5f893953803f5d7f3756 *7c36557d3a6182325e7f3b607f3962863862863c5681375e82385d7f375a82375e863152843064 *8b3c618c3d56834159813a5f833e5f813c578136508340587f37657e2c6186435786485e853f5d *7d3b63813c587f395e853b5e80315a8031598240577f3a5e82305d823e5e7b33548232607c2f58 *7b4653722d4b70334875335676315d7529577939537734597b38597b3a5877404e773a52762e4d *752b4e6f274866254d6e214c6e28456d2b456b25446d2e466c284c783a4a66224c6d2c4a6d2b3e *622040692447692440602949702d4469293b582333491b42521d274a1c1e4115172b0717350d17 *280c111e0c040c01121f051f2e121a2a0d1d2d0e1a3c1c455f214f733c4f753d55793f70893e75 *8e45748c466f8b47698c4a7492506b8643778d46768b42557f4168843b6b82386d864263803b5d *80405d824763803a55732d5d6c2f5475345e7834446829547238597931647f315c702655722652 *78335d7d2f5d843d578034637f35688443517a395375276080374f7327567336486d2553722f58 *6f285274304e7a314c67265f7c365a7d38526d214e71295879335572284c742f5172264d6e2e48 *6d275173244d651e4867225678304e6d25597228556c20537a404f681e4965264f5f174f631d4c *5f1b4f67234c61244c69254b681d4a5f1d4465204c691f42642348682451682248641f4f6a244b *67215c782a506c2258793152702c4c6d2c52692a556926586b2b546d2a47651f4b6d24455e203e *5923365a1e3f531f34491c425424354f202f4d193d591b3a5f2442581c45683143642d41522943 *591e345521334c1c3f64283f5f214164244a5f1d4a6a27455e2235531f4264203e6023537d3d2d *461e2a411725400c3d450f25470f314c162d4e122a4b1c2e501637562034531d3d581e34501e46 *591c425e213b5c2336561c37591f3e581e3d5b233d6027445f26435c1e415d228ba87dc0cbca5f *614f443b23384c3d304331405c2e657246454d3d505038404e3443503b5360522f332c3b455023 *3b2d324c383b4d313b4a23374a2d253f23495333424c2a5d61484a644b1120140c1a1220241037 *2f1139421c17170520260d404726324c212e3e272d3f1c22280c1a1b09100e0507130b16240f43 *562b434f2c2a321833351735360d0e17080412072735102a4420274824484d283241223f4d2133 *4a241c1d09020300060501151d0f173322344c301d371d12240e1115050a1b060513062c3a133f *4a1e101d0a050c0923260e2f310b150c01090600090f002935102340192748201121100c17070c *220d0002000000000412080b200d0e1f0d17260c1728141e3a1721401f23421a1e411606290b02 *1a080007020003040324110f2b10244723152b100d230e041405142211171610020a08101e083d *391626290a263a121e461b1332100f2d0f13280f0b19090216090d1504132a0a1d3c1518351310 *2c0f20421d244a251a34190c1f060c1f080b1f0b162c11294c21294417283a0f28471b22421d28 *471a2c572434431426401600160514371a0f2d101e471d0c2e0c061804172c152948171d3b0d21 *461826461d1f3e1e1f391912290e1833151c2f0d071e040015051c3e1c1231110d2e0e17311011 *2b091e4110264f2012390e1b3e181c4319203f191c39110d1b0729401e2f461543521d2343101d *3b0f07250805210c112a1027391a3b54202c4e1b2d491a224e1c18401a1939190c351d0009020b *1a08290c011d310c152a0812360d21471623481a1c3f162444172745161b300a000401000a0312 *30151c431c255023224a20234e2227491e47652928471d203617234a1e43672c47653249643626 *4926123515173f1a2b492a2e53233562283b65313e632b3767313a6e3647753f4a6d2f396b3732 *61292d693c40722f4d7a3c4c803f5782484f7e43587d3c4f793d587c3d5880305c813d5383425d *80435d8145617f3a64844060803a6180315f7d38537d3753732d597e3d56752c4f753250773a50 *772e5a7c375580395b7c325c7c3f577f3a527a3f5372395a7e3c5a7c3a4c76364f7b39587e3c55 *7939597e30577a35566d2c608436587e3562813e5e853b5c7f3e62854254763e5e83435e85445d *844162803b61803b65843a5f86455f843a5a8042577b3e60823d5d80394e7c355d782f597e3654 *80405e7d33567b315879365c803b648237587f3e61873f547d3a5a81415d7f36587e42547d4765 *7f385f833d5d7c355876346077354e783255762c5e81355f7b3462824260843e5d843661843560 *8c42567f325679345478395a7a3060803b66863f67863c5f8541597f345d824250743856814154 *762c56793651753c567731446d2a416f2d5a75335d813b5a81415e803d5d80365a7f3b50793251 *7f444d7b3b53773a4a73325a7f3d5d7d3562863e5682324f803f4c7a3a578134597a325b80404f *762d4a74385375384e782c4f803e587d3161813b588a43597d3c587f364f813950783b5b814057 *813c557b36537d34637e405d8142537d3b5b7b3457793b53762a527e33547c2b517e3f5f803759 *7e3d5c7c32638438537d2f5d7f2e6381345f8041587d4055793c5280465980406d863e4c76345c *78326085395c82425a7d3a5f85425a814365854165812e597e3a587e345b81395883425d82435c *80415d833c5c7d3947732c53792f48782f53782e53783e57773c51722a517d305876305971284e *6a23496f33476c2d5372304a71305776364f6f324f6c2a3d662a476326486827476b294c72364c *743c4a723b3e67273b652b3f6c31406e2e4b622742642c3e612f63793d40612d2f45182c421526 *4012202e08162407132107121e06071105060700060c01040e0111200a081e040311031116052c *32142d3217303d19303e1e415e2f537b44618449517d4961823f5a81416584416c863a617c3266 *813861803364832f65843f6487485f7d436776356381435f7f3952733153752c637e34567a3060 *792e57783b647e316a7e2c6d7e316b82356480335f7d3361834169863b61793a627e345f7f3664 *7b26587933607e3c5a7f3558783350752c567234526c28556e23556e215072313d5d25566c2946 *6b2844662c476216496520445f1c4769294a6723446b26516b28536d274c69244c6a244a682345 *6926435f2446651f466423355b2c436223435f24425f1d44621d506d254065264a6d1e486a235a *7d2a4f75305067335362224e6529517336305a223b4e1b33541e405e1d4c6525455f223e511832 *4e17314714344c193f531929451032561b2c4719374b19355115395a18244e19274c172d490e37 *5b1941611e3d511e3c521d44581d455f233a61233f5b1c37662945672f3c602943652240591d46 *5a1e445d1e37521a47631f3f5f1d405c1c3a5c183a5b2440541e374d21385b192d4d1c244b1537 *5519385d1e314d10304f1a33501734501d31552322491e28471030521b364c1b3753247c9d78c0 *cacb34473729363127251029252b4a50454541372e352d272928263c2b42341d3c352d303c391c *262e2c363d3441402a342718231b13200d090c04404437443323504c2c22230b010c07040f0828 *32283a45242524060f0400332816505222314a204a4d28322d0f2b290e2a2a142023082f2d1a51 *4c235d5e2b372f0e080b051c1d0b111a051514011416052537174050284a51204f4a1f3d361d4f *5d27222b0e1616020200000500001b0f0f181d0c22210b180e04110e05020b0209130629361641 *45212f3b1129260b23290f403e183e300c39451c354218383711444e1e2b4719243b1c162d0e0b *1b05000800000300020400070c0817150320240727310e354a1f2d4d222f411b243a181325120a *0e01040400000000000700061403041f0610250f1414050a1d0b1a240b1a3a11152c0b0e1d0724 *260c2d310e2d391b4b5a25293815293d0b232a0f0a1c0a10220b1f3517223917263f1712280b17 *2506232e0d1c2f0a212f0c2434130d22060b1e041a220525371451612832441626350b2c461931 *491c475922475a1a4664291a2808091601142206223f181831101225090817081c210825370c32 *491d435025425b263c410f1d1f0a0915030514040009000000000000000305010509010c16030f *230b121d081a290e2b471c29461429451d2543182e4d20264a2113200517311321441d223c180a *21050d15000b1500102504244d202d481c3f5721375d35204517162c092d3f0e2640160c240801 *19040719040f35180822080a250c172a082039083d41152b572521491e091b0602140800000002 *04000e22000e1d00272d0b1c2205304a1f33552d1b3c16091d01152f09263b0b3f5422455b213b *5222212b1307160b061e091a320d3651212d4a1a335321374e1d294018152e172e4f29243b180c *1301071100030c00101a052835130c1e0d24290d33421a203d0f152d0a2f4e2442622c40592143 *4f203c54252d3a163c59245560266582474768394b5828545f28466a384b6b37517238556b2e4c *702b47703a5a7028536f39536927446d2f49713b496f3b496e364b783e43753f426a275c733156 *763a4c732e50763a587942577c355c813e698336607e3a547b3b5d833c597a3559813b5f823661 *792d5f762a4f813560772a5c81405e803a617d365d7e3d607f3e5f8343597b2e54752f5a7a3153 *742f557b34557c345c712d557a315d883d56813b5c7f39547c3659772e587731547831537d3a5e *82345b7b2e5b7f296086356a812f6b8238718a425d8235648d475e8a3a688c43678a3a5b7e3458 *7b34577f3f61802e64863a67853a5b803b62863c5f833d577e2e5b802f6b843965843261813365 *823e5e7f365f823557833c5d84415a7a305c6e295b6d2d5b7c375b7e2b62802e62853e5f843e6a *862c6481375f8137567e3a5c833c5e823f5d82345b782a62843b6184385881395f843d607a285a *7e41597f385b7833587e355c7d315c78295a7e324c7734537a3a54793a54782e587f3c557e3f53 *7f3b55793154722b53712b4a742e4e7a32527b35527e396180315a803e597f3257782951803f5f *80345b7d364f7a30567f39537c325e88435d7f356a863c5d853a537f415e853d5f84435f823c6f *87336683406a8b475d813a6483335f85316882285c7e345b82376281345b7e33597d3861863e63 *8c426c873957843a5b874658823b5b82396181405c7d2e5e81345277335c83335d7f32607d3651 *7a2d4e732954773a4c753250762b5a7e32597e4152763841672d50702a586e25576c285c75274b *6c28516a224c6e2d4f66263b642740672450692c475d1e3e5d1d3a5f1c3d581d405d1d305a1e3a *5b203d5b203f56233d571f324a1d374717234414242f12222e0a243d081d2a091420051e25051e *290b2d3b13292d14131d081019000d19040e18050e0f020d13020515050514060c220e19381118 *2f0f31531c47641f5a7536617e3e658648678450718e476485415f84356685335b7d316d80315f *7d2960803e5f7631587d3b507632598035557526617e3b65803e5e7c2f586b2c607c3c58772e5d *7b2e697e2766782c62782e5f81375e7e37587a3358793b4f7c3959782e55782d54762d55783156 *73245471234c742c46662148611843602146661e4f682246601d466522486a2e4d6b283d632343 *6a2245641d48671d475c1d4d671f445f254165253f5f1a4c6f1b4f6b1d4d6c213f5c174965224c *65203e5f2d414f1647531e47581c445e1e3f510d3b4b103c4e194b5e1f4462224a65204c601d45 *5a1e3f5d143c5f19304f173a50182d4b1840601d485f243e5d1f334c0d345d1f3150193b561736 *51183e5f1f3554183d59213551203c5c1a304e19415b1444591e3d50174158113d4b1642562131 *5016455d163e5b212b48173d51183f5a1639501d415c1b2f4e1d354b123e5d21395c1d40511139 *4c15374e1533511a324e152348142443102c4d2128491325420f2b4416314b192e3d162c431f87 *9e79c1cbca2129280d1b23070f162f2c30372c1d29221a131b1b2518183a4043442d1f362a3529 *2c28141911212025182f3b10100f0e090b0b0c030000000e1d1835351d0f160700040100000000 *00040f1116050a0e0201080c0c0a2a311a262e13161c0f2f2e140a06020509040707061f160c44 *451e454a26544d24202c120603000300000803011d190a150f070d090536331348442158532948 *45212d2f0a130a080509070000040000030f0e061110031816040706030000000000000f0f0a19 *130a161e102b2d10313f24484a1f444421363117404126454b2a4243263d4e232834111e391817 *21111929120e1e0d0d200e272e0e1e1e0722300e363a174c5a295458333f44222d392c40462c22 *281d1e1d10010401071607081e0d21341210250e161d0a312f121d3015283b1e3a4d290f280f24 *2a112e2c103d3f1633481f464a2531401a2a3d1b3c3a161e260e22240f232813162c130b160508 *11040c1c0e1418080a1d09131f082f441d2c2a112f391625371628391d3a481e2f3f1334471f4e *672e4c6632494a20425733434c1812210b17230d21391720421a28411e2b401f33471d2236202f *451d40461b586c36575e295c5524181c081114050101000507040000000000000000000000000b *1f0d2d3e1a2c41192c35184a5a2f24401d213b18081f0a1b4120173c1d17220e2535191f3f221f *3216091c0b182f152d4b2332582b33552a395426586e40404e203949223b532345532c42441d0a *18070516030311021221080b1a070c240d07230f1d310f373f1a17270d20321207140100020000 *0000000501001505111e0c2e391b2931131d2e09283d11212c0b1e2f131c371b172b123d512742 *602b26431a161f09091507141a0712291523421f2a42242143251430180110001f281033401424 *3915021506001107000c060e240e2c381021220c2b2d0d202e09181e0a1c22113f58353c4a223f *512050622f404e214f4c21595827716c355b623f3f402a3a3f28454c2b43563c5f6a4664703d62 *663858593166613058623a3747263238171212071e1a083c2a0a1e1807141e09161e093832125c *4819453e1847401c35421746431e474e275863324c502c4a572e4a53244c50203f4d1d47592935 *461a5861316371324e5e2e74865c4e642c5c652e4d682e5c7245405a2e516431405b2d4f633448 *663f4d764a49713c53794e456636395c2b335e2d315c2e2f5d2c35622d3b632e437230476c324b *6e2a55692e6180415a7a4059793e67793c78853f667e356d803c60782b587540577d434a764040 *6d3d4974354c7732597c365e81404e71394b7035507d3d4a7a3c4f783a4d7c3c5784335a884162 *8132537a355a7a30557a3c4c75384a7732548140548340537d3d537d3c527d3f5a7e3e527f3b5b *8340507d3b4c7c384f823e587e3f4c793d4d783e58803b5579385085485b813755844056853f5d *844358803f597e3d557a3a567d3a667e3b56823d5d863f5c7d3f57844253762d5a80344a793b56 *7d3358773c47773455752d4e7b3d4c6a27466c2e456e2d4d7535416f2e5478374d74354a77314b *773a4b753c5074375678394774354a763c557c3e567b3e4f7a364d7e464c793f567a3b587b3c56 *793f58783c537e425a80425b84405f88435f83425d7d39527e425b7f3858843b5f813959823c61 *86435d844456814c55793c5e813d567a3a6285465f7f3b547b3c44702c4a733646733153752e53 *7e4251793c436c32457334476d2e567c3f4e743953763f547b3e597f46507f414c6f364f723b59 *7944597e4154772e537c3346662654702e5a783844652e446d2f49692d42642b4a6b31375d2933 *5e2837561e3d551d3d682f3d612a3f61272e5b1f405f273d5c233757223a58233c571f20431630 *4e162b4b1a26390f1c260a090d03090f040d1808071107232c1122280c0a170501020000000001 *0301010400091909020e050510040f180520260b24310e1113050713040a1d0a1d350f1d3e1c31 *60334370344f7e3e527b405f81456b833e537d456581415f813f5b793357732e5a77304d6e2d5a *7e3c4d6f3354783454763952743350722a49672646662b446628486e2d4c6b243f632747703141 *5e214263204a622048621d47672249601c3e5e2646672344692449692b43632046631e4266234d *6d214e6820496929436222436d2b4b6e2e4a69265a762d4c691f4f6b224b6724405f253f60223c *5c243d581e4365234864234c6720516728496b2d4564244e66224f6e31516b234565295c601d52 *7230476226436025496935455e23476925426723425d213e5f2445601c3a63233d5f1f395c2234 *512041602245691a3c5d204462224657223e58234b66234d6222426222335d213d61214c601b43 *5e26466025485d224d692e45652341682a3e5518394e1e3f591c3e59182e4f1a3451222e501d35 *532035501b2b4c1d364e1437551838511d2a4f212d4b1c3c4d1d4a5f22325c2032541e2f502230 *4f1b89a17ec0c9cb1e1c180b060c0c02091c1916352a20121215100909191a1d2728213c292233 *1f1f4445401d1a1d1f2c2413202324201a212737060c080e070a18151428282703050400000000 *00000000000000000100020c02042f1c132116090c09030a03032a2612030000000000180f083d *2a1f2a1f0d47391b322f160b0e0207090701020201050a050300353a282f270616100a210d0829 *210b1f1c18110e0d090000080100080000140d010b1d0900020000000000000200000002000000 *00001b13051d0f070f0f07272618352c13150f082f1d09211307342c0f160e061d201417120b05 *070715100b23221231472b414a2a424122444e2b44431f5c4e246a6b454f5331322d1e312e1c2a *311a27230e333222212a190e280e283f1e515c344d542b504c21414323464c294a5232524c3a3c *392345391760542e5c57264c4725504017261f0b2a0d09545128483f21424426343a19171c0821 *2510393e1f424a242020062120092f341e414522615f324d4d1f393a134136164e431b4a531f55 *5b286461335c592e6850225c50205758242f391a393f1b3a280c3e471d42471e2a3d1e43522f4a *522c505a236a6331726f3d49412547432626200d382715211f07171d0414170109090104040106 *0d04252d152e3117404c28615d2c4f5529263414111804040f06000503010000332b113e37183c *38103c431a2f41193f4523475c35526c3e405029474c25524d1d4752295c68333b3e184241252f *30151b1b0d0e13050a12091a301006260d11250a18210b444f20373f1520250f383a1c07130800 *07000207000706011a17043d3413474d233546203c472049562a3f4a25405d3541552b32431c36 *4a23212813060605081d1212200c0a12030b11053f4d3141441f363b1c1e1e0d0812082524103b *421a1d27081015051c1e0524320d3e481e4f4f255951304c532c5b5c264853214a4e2158622e4d *5829606430646c3c626136706e4a6357297d6a37525b33484c263e24134d3f21504e2b5d492565 *66474d49294834194d431c35250b201a0d24200c110a0419090030230708090014210a31361d45 *31105948214c471f2f22092727084b391b3b3d1838250d361d0c3f361f443917433a1841431f50 *522e2a2b105442205747294430176344274827103038262d1d123c2f1d1e2117423b262e211a27 *180b301f0f4347341e1d1637413423231a1313070c1009050100090200100a0716180e0e100d12 *120e211a0e5b53375544255d4c2267451d79693d8677407875477964335a491c4a390e4f49322e *382b160f08393d314947295d4f2e5d5f3f3f391d2d371e2b361929260f201f0c0d0904221f0c21 *2e14373d182a3413091f08080a02060b030f1005020802080903090d0400050000030000000000 *000009110a1a2c1a0d0f04120f040003020007060a17091d21090d14050f1103131b0425401845 *5b271c21071a290d1928110d1d0b243a1a41532d3744203746185d65363942203e33193d532b37 *401e405b295365344b5b2e3b4822364f21354f232843273954282c47212742182c4621294b291b *3b1e1a3a1b2e4b2a2b42212c431f304b22314a272b401d3b55332f5025293a1a273f22263e1b22 *3916264021243c1a22401b203a131f371d132f131a3f1d1a3a1814381726481d1d42231d381824 *451823421d344c262e47262e451c192f0c243918273e171e3f16173f191f431c1a401e17341a20 *3c142443181a3014122b0d192f103c582c314c273b46213951292948221f3c17263e192d37142e *3c1e3c4e22334a24344f214059244a683347662f4d723c57753b516d2d4c712c5c723154753b4f *6f2b486c2d52742b4b722c436924476c3b47682a436d2d436c344b652b4463253c50203c561c30 *5822435f24425c243f5b233a52223c5824426022405a243a5128263b152d391020280922260d12 *1d08101702171d040b1103101b03151a051618082e321b211d0d06000001000003000000000004 *0000000000000000010100030e050c14001421041c290c2c4c1c476525496a2a43602950682b46 *6936436a285975295c7432627832607f3f58793851723552753853732f49651f586b22576c254e *6d354e6d2f476426496c2b4f6a254369223f601a4a6922546c244968224b66244561244c621d44 *622b4c6f2357651e50672643601e425d1a4e63244a671f435b1e4868264462244b62174d5c1a44 *58184e65223f5817415d1a50641d4f641e51702c4f6e1e47611d52712f5069274e65254b692b45 *6323436522465f1c3e581c354e19364e17475c1d3a5d243e5b1d40541e3d5e1f3f4e114862203d *62204c6824486b34476723476220485f1d4d66213e5f20556c244c642337521f475a1e3f522042 *5f27435521335d213953163e561d32521d3b4a1741591335551a3a5615465f1c2d52193e531845 *501e384a1b384a202e3a1737502436552336551f36522236561f365023405c243a52213a501f3a *4f1d415e267fa47dc0cacc1d1d1910170f070f0d0d190c0b08061110080904000203062d2b1421 *2e1f2b2c313e3e4530322f18201f282110272f2e0d1116172537161e1f08040000050000010000 *00000000000409030102000101001719091110050a1107080800060502130c020909060a0f0419 *1607150c05090500382c0f1a12020306000003000005000000010001000503001113001f1e0216 *0e021d1000100e02120d010c0e000e1305040b0208060000000000000000000000000000000000 *00000000000915010a1302040300271706231603120b0024200b282d1e20291003010007080019 *16000406001412071d180b363b243a31233d3d304b452c4843246b693f655c3f4e4924392c1a36 *2f173b342c2729262e3b2a3f38183f3f14424f37424d2e433a17504c2f24200b3a3b1e3a300d3c *3f153f230d54411a5d4219554f27473a1a43421e2d3a141e1f044a4422554c29504d293f2c102e *1d08493a165d522a4e602a393a12434b185550236865356b642f5a582c473e1d7665316a6a3562 *5b25635e276458226b4f1e796e27644d1d6c56325f4a1c40260a7857276f6c3f5a561e3b3c1765 *6d496681556e6e447578387e703d322d0e3e371b33300a2b26102c2c17424824424820252e0920 *2c07253e153d461a4c5826362b0a505230343f1f183113181e040418050d1d07080a001d1c0546 *340d554b252521133536124d5727616b3f4e5728293212200a042d270f52432142471e40320d22 *2005171900080b07120e00191705111c0a080b05191d08424b195650214e480e3832153e3e1e1c *1f072122091a290f414a1d4b4c1d6065325c76453c4a23476031484828505531414f28344d271b *2c0f2337161a2e190f15040a0501141b08060600111b0b2743241525091f2b18292b1422280d25 *260d2d38152b320f40543151643d56723d4f5933616b436a633f58582d5f6535656f32605c2f58 *5624525d3c6c673d4f4323766b357a7e5b646c505c5b3b4450323a381831401e454c2948391266 *5a2d5c572d4440243f371e3229161921091a20041d19021a1a031b1d0731240e1412031f260a54 *532b4a461542491f3b2e0a1d1b052d1f092e2a0d212a0a2c1f062b2e0d414222312d0c2e230b37 *3f333c2e1c261f0d422c0e2c2b11301f0c423a16301f0a15140a211e0f24211c141209181b0d12 *11051a1f112426170f170a080b0513211b1a2928101c11071307010700091208122518060e040e *1305121f131b160a575930554d29514724695a338a693b816032784f22734f2d533c0f4a2f0d28 *2c0f03060108080324240f404018384936543c1a434a2b263f201a24151e3822101b0b18210c16 *16082c2e1022391c1a291808040104070100000001030000050000000004100700000000000000 *00000100000507000108000a0c00000200000500131a070b12061b1907070d0300060004080008 *0c021323130d0800191f11101b02060800263117272a0a3b4316424f24373e243f461f30381e3d *4828404424273814424720213112293e1d1a260e23200b1e210d1c2515080a07090a040b1a1413 *24170311020d1406181806111a0a080f050e170a101b1017210c151f0a1318091b230d0d0e040a *130b1115120611140f1416090f0400090202040000000000000001050000000000000000000000 *050000000000000001040012170200000000020205090711130101070000090008090005070002 *00000206001a2b0b010600071400080c00263e132d2d0f393719312d101c1d0900000001000000 *030000030004090114190a24320e1b29171425111a25173e4f211f3615141b04291e073f3d1536 *401d445a312a4a322a4e233f6a27416d3b4e77395877335f7b384c692c4f6d334778394b6a244c *69214b6b2942692045662242621f46601a425a20405f2b486a2b426d25467130476c2c425d2148 *6029485d23363f12304919294414234111223609293909343b0d180c010d0b000a1a04111e050c *1401171500141c001213000b16000c1a010911011820090d1705141c0235400c273108252f082f *3b0f201d08253a1426290d404d1c3d57183d6922416626486420516f3335603245652a4e71334f *6f264d6f2c4f732f5378315d75335c7d2f67813355782f547b395b802f5274264c6b2743691d57 *77275671284a6b205871324a6a24486c18466a1d4f7225567e3164762a51701f4c681d536a2140 *5f1c506f1e4c6e2254701d5b72265e7e264f6c1b57702247651c506b1e335f224970274f6c2151 *66174966254f641a4a651f415d1b3f55194a661b4c6f2746651f4a641f4b67203d5a204865213a *602139611548661f4d721f50722845611c41651a4c611e4c6c23385e2745662037642444681e3c *671d3f5d2342652140641f2b4c113b541d345217445c213f5814405e193d621d4553182a4d2135 *5a223853103952184364212f4f172a4815344b143646132549182d4210344c1a254b1d304a1830 *46152e43123a4f1b82a07abfcaca190e1210171e0d0709060512050b120d0e0e110b070e0f0b31 *2625231c112f262733251e39352b2a20283a2a2132231e191a1d21212627374019171b0f080a00 *00070000020001040f16080c06030c0403190a0b1a160f05000200000009000013060105000006 *00001d08050800001604063c2c1114050103010000000002020000000002000002000106000029 *1d0a1c0f090d0302110b071a12030d030003000209010205000003000000000000000000000000 *00000100000000000a03030b00000906031010080f0b060b07071b1506130e0407020106000001 *0000000000060303050103281d132d261a4334243322183c2c213b40324b5c495a50394332262f *2b282d25273b2a2531333a373b34464b4c4751433a392f3f35234a432b56431e150a082723162e *261d3e25222d1d0f533d2d573b1f4b311142311e211205131109291715504424644a263a27172e *1e0e23180e453c215a3b1a4d33193013084326137c5f3f675c2f5f47234d4622431b097056337a *653b5c41206d4d22673b1b65411d6c501d693c188065325d4a2254310f825d306c5c355d4a2645 *472465674365664369673b7057267361321e1c12312f1e251f0f27241430311d5a643f4c481d2f *301a312c1d4b502a434525434b29382a10343b1e28210d1a0f0421241615150d11130d00000100 *00002529143233162e311d362311584b224c4726403f2a282d222c1d0d1e18065042192a200d48 *350f28140b21070516000519150f1e22141b1a061f1e0d2f2513524b276a6334757e52555c3631 *351b151c05262f13454a204f622f69633d7d74466861304b4f354d53354145234d5e3f272e1628 *2c1511080836341e342b1b0b0f0c0f190d2a37191513082d2f122e3a1e26281930342539391d1f *231e2c270b2f311938472b4f5941475133586c4453603f6659335b593b4959434f57355e60395b *502a5544294f3d1e656a495e4f3655563a56523563502c523f1d2d2d1d241e102f26173a311f32 *261e4a4022433c1c4741333725133124131e1002170b08101208190c0c181209352b0d1e1e111e *1d1054492c2e351825211517060a1308081e1605131606303216272110140a053729164d3a1a28 *201344462c271d0b2719042f17052b160c2e1d112e180d1a0c0a201a1315170f222a25100f0616 *0b042111071b1a1118110b160c091311100d0b0c1813061414080507050d08080f0b0d15080b10 *06031107050704051f1d0e443d234f3d194d391e78623c806f497157336452365347203738172b *2f1a1e1a0d0f07081002031d100f231810201c13424729171604110903080c07190904180d0318 *150a171d0d1a1d0b1e28133546301a1b0c1008050401010a0b0a02020700000502010600000000 *0000010000050a040c0b05020000050000000000010000222a12161509161a0a0709050c070408 *04012f301f1d231523220e2640241d230a282c152820143f2c185f643d3f41273837204c52403a *4026505241545f4a2a3a1f53443230371b211e16383b26231d1213130913121217161414161412 *161a1913100809040f0c070f1721131c2116171a0a0f0b0a0608110a0e1105071c251c222a2115 *0c0c0701010803051207030604050c130e030b0104090700000000000100000000000000000000 *000000010403000000000000000000000000000002020104020007090200000000000000000000 *0000010000070f00000700000000101a070c0f0504050317160645482922160612120806010000 *0000000000000000050905282a1e181910182016140c072921154044222e2c1f0c04032523132f *35251a1105100b050608060a0300141707181e0c272d18313b1f3d482b303f222d4320223b2040 *5a2c3d5d2c5569325266374a642d506b324d6a29566d3160732b4f712f586e29536428425e2944 *5e264361274a6c2a4c6a244b6c3548652b455f26455b234058263e4e1f434c1e42501e3347182f *3f0e2e39143b431b3e381a24200a232b13112508232a051f320c1d1d041e2c08293c132235151f *3b172f4624334819263814394e1b3f582236481a2e44192c3c1c364d241925190a040019160142 *2d0d1f1a0b111508191d111b2211252d13415522415d2841652842602c476b3d4b682e57763256 *753e5c7b354c7433516d30607a3d4c6a355b7535506829637229546d2a5c76375370275273334f *6a24506d25496c314c65204f6e264e6a264a6a2b4e5f1a536c1e526a214d6c26466d2c495e2150 *62234363264a69224465224a5f1b48621d485f1a4f5f1f5162225467234e6424476323415f1e40 *6120445b1d48621f4960184f672b43552137521e2e521a3c5f254364253d5f2641531c384f1e4c *5e233f64273f5d23425a1540601e4653193e56283e501d36541d475e214061253a5d1d3f5c1632 *4b0f44551847521d3b521e2e451a2939173545152d4c1e2d43122444132f4618314d20394e2042 *4a1d354a1d364c1c324b21859f79c2c9c913231608100e070e0e0b0d0c110809272a2412110d17 *120e26271a161a13332b22201e1326201134201c3b321d32221e1f22160e180f13282811110f05 *0a06010300050e0404120f1b13071d1e0f2f230d302b15242a14010c010007011512071b0f0610 *0f050602001e1a0a120900130701302b0e120f021b1a080b060006010003000000030002090007 *18040a0f001d1c0b1809021a1d0d161206050502070d0302080103080000000000000001000002 *00000000000000010000000000000000000c0a0000040003000001000000000000020000000000 *0000000000000000050200050300281e1b1e22121d291825291b2d3725353f39434a3f47422d48 *4a3353442a384443232216222e262e3f34404e413f42362e2d1d323e3a39301a463b211c1c0c3f *32103b290e443f1f22150b40331a58471e2d1d0927170d27271c150c001d18063c3f1637311438 *3b2834251a210d07301d0c4634112f1c02361c034b310e857248523e174a250f4d3f1e4d391e74 *612a745c284d2e0965481b4b280d623c20653f1a5a3f1d78522d6245136b4f187560275c481e4f *47214d441d4e451e605d316e622e695d2e5f58282d300f303610181a06241d083d4029444f291a *2a161e210a36451e425c3c38341534411f29240d23210e2a2e191d220b10221109170600060000 *00000000000000000704021c2819414227202408242a0a1721070d0900110c010d0705392a1418 *0c0631200d2114022115031209001e1f0a1613062121141c1d113f260d3b310d4a55271f26064f *4b1e1e1807160d04392d1750471e5a4a19675f306b6a3774764849441f535237575532524d332a *24142129141a2710192d111f2b0e1c26141e2d12394e34252b1a26341934451a253e1c282e1131 *411d2532102d2b144d593b3c482a4e54363f4e222d401b4c57354441205f4e313c433146402043 *4526513d164a4c1b4d4421514828524c28483b1e595b3d47422a48382a2b24152224122a30162b *240c25200d3226122b230d3a2b19272018221d0d1926130e0e030f1509121a1214150f1919091e *1f0a20130736492a162004080e000a0b001614051e25121410041e2115151c13191c0f231f082a *381a423d202e24131f1f171b1309281e0d1915092f1e0710100215160a1e1b0e16150611140709 *06001509031a10020b0f07080f040c180610130a0c0a03140d06160f070608020707000a150d0a *1b12030501101715120e05505038473c21443e204c421f5c472367582d786a4a604d2a473c2220 *1306171c0f0c12060004000a0c093a301e12180d1f1f14232a1d120f0506080406130e0d1e0f14 *220d12170a221f101c14033842203a4325222e180b140a0208030b1106080c011a241001020000 *00000100000006020000000000000506000a0f030104000c0b03343e2309140b1c29170d1e0804 *09001f2f133c4d2f30401d3a41203d3c192130172a361e1e1e0c393b2049582e4a5232332f183a *3f24404a2e4d5d43404a3b23261729401d1b23141116042b3a221e1b0b110f06121209080e0911 *190f0f150a0514090a0d03050d050901000704020d1418020b06091108000807030a0008030005 *030010080410110a0a11130a1111060b070511050206000c1e050f170709040000000000000001 *010005120400000000000000000000000000000000000000000000000010150000040008100014 *14000404000201000001010000000002000715010510000000000a0d0010180615170705040300 *0000000000000000000b000209010a1d0e0805010b12060a0b0424351d3b451d272d1808120129 *1e041d1605130c03090b040d120c171a051318051a260c15220f1f1e0d3727124a4a24171e0c14 *1e0c101a07202007182607394e232d3e1f1d1b0b11100322321c3852263f552a354521405c2738 *5c4533531f45622d2f512140632a466223476e2e3d662d43632342632e4669334c7234496d2f47 *692e45652942652c496b26436324486a2a4f65263c61263b5d272c4f202d4b1a2e4a1329450935 *4d1434421536481a354513264c1e36511d2f57152a480d1f400c23410d28430b273e132f441e2b *4218272f11141e0120330c2e420a38411420310c2e3e162337112f461d32481d2231112a3a0f44 *501b4d5f26536629405a21405c233c5b24406729435f1a43661e476c224b69204c72414d692b4d *723163773350702a4c6e265c7a2857722d577637486b28496c24536b234e682548632141642940 *642242641f475f204a6620486727425d1c3f622746611e40631b446921496b253e5f1e465d1c3d *581a2e491b304c192f511134591845651b436117445b173c5e1e395a18526c254460263453183d *621d47671c48641642632147631a40541c45631f42571d315213315316305210385111305e1a43 *570f36591d26490f2f5316345a1d2f4f1c2d4c1c35541e2c43192d481630431822441b25471728 *45192f48133a4c1d304b1b3d4f1e94a986c1cacb1911141211110d151417141410181a2a261d19 *100f1e252a1d200e130e0d301f182a201d2520233a3533433f21352a1a24272011110a10162209 *141a0d1918000f11000011090608281f10372b12322c140f0b09000006010007120c0b29180c04 *00000906020600001c1306251a08221a1742361a1c0e0506060003010005020000010000000102 *0207070001070606170e0d1106020908020703010b140206000000000200000200000000000000 *000000000000000000000001000000000000000002000500000000000000000000000000000000 *000000000100000200000200010102010222281c2a2d1e1d17092722141817111f1f1c44474638 *3d2a2a2f22282e21353a2f2015164041315349363c3e4034413f2e2f2b2f2e1a392c1a32230e3d *24124d2b10403c21343a211f0b0f4132193c2c16382b102c2714231a0b150a04190c092c271c32 *231826110529170a2910054335152a18062f190b351b106d4d2f7b6438492f164d35155339174d *2d176649275f44205a412565481d5632155430146b4315603a1b72522c593c1d5a482b62462552 *442a52431f4745214d431f5c3f1d614a2d7a5f3c494b222d3e1e2e3016221b09282d164143242f *2c1b18170a2a30192c3c1c2228172e2c15161a0a1a170d1e170e080d0a1b241a040803010c0800 *03000001000000000000000c0f0b28321a353f231009040907030209070303080a05001e0d0226 *120a2217061a0c04210d01150302190d061d170d1310061c11031208005344294d3e1d3f2b1c25 *140a3c210f1f0b031707001a08002413024839175f46265e4320695c344b402444432a3f341b33 *2a152223131f1f0e0d170c1a201419210f10110c232d1432431e242d162d3a2521331f20251b2c *2614242e2338321f4d4f34515f2c4259303e4727304229313b204d4d32503b264e472b38301b2d *311d403c21453c1d4747244c412140351c493d24403f262f3120413c2f3a2a192e261a20190d1c *1d19271e133823172f23142922132023172d24122a200e1a1b0e1506050201040703030c050307 *07031504001213061f2311100e070c0a0a0504080b03031713080c07010d1308171c0a2a221a2f *291c120d0b2c261d14120a0c0600160b040b0701231a081c150d120814081213110e14091e1501 *0600100d050d130a1e1f131308090d0e0f0e0b0f080a0c090c08191b2010140f0f130814171116 *1b240d1117101a1f0a181e1110094240244346323d412e3d2c1d6a57484d3a1d55482b554d2832 *351e1c180c20252018211a130d0c2b282a18121710080b1a221e0d08040500000803030d04061c *15140502070410150610131e241b1019131d1a0f1420100b08020407070f0e0a08110922342608 *0e0a0f160d21261a090c070400020000000406070000040c08081e1e0d24331f1a23161b311f1d *2417252c1e1f240e1e2f223c4f432736185d643f29351d262b17292c153a422149472a42554227 *261c32281e303b21151e1327291f171818232f2d10110912110b282524100d0f13100b0a0d0704 *070a0a040104000108040205010402020001060303090603101106010304000304030501000203 *0208050c09040000050c0b12151308100c100d0b070406070404060d0c09160a00050404090001 *020011090c020003000000000000000000000000000000000103030a0504060509060400050201 *0303000a0401070200000000000104050012110220330e091203000202040e04060a021c180405 *010000000005080200000008180d0000000000000704001d1305090100181c05212e1707080509 *130a0c100b221d08090b001009010200001017051d1d1b0b0603030305090c05150b031f180810 *1204090c0b0300032628132f230d2323150d0f0a181f0f090d07313314393b32485247344a4a21 *35331b2b1b0b1a0b020600000400000000181c0e263025060a0902020100000000020009270f23 *320e3842153f54344b5f50567458465b40485e3d405e32476c354765413e5b37425c223b64353e *5d2e3f5f2c425d2a4762234c642c4764283d582234572333521e3e5e27365626344f2229481a2c *4214344e1f304a193346192d43182c411c2c401c2b4b1a3a4f23334a22334a1c314b1a34451d23 *3f202d3f21404c1d3b4d1e32501e3b471e36582a304c1e3757232d49233e4d203a5222465c253e *5a28425c22506c33416443475e35364d233f60274f671e4a68284e682744632253632545652b48 *713b4d642d48602c536629435c204465294e65204564284960214d5c2048672b3354223f5f2345 *6629415c1b37551e4b6627425f25405e22344f1f334d1e445e1c44652840631e405e20314b1840 *572141511e3e4f233a5020394e193f5016304d1636521833530e3e4d172f471c244a1d2a48181d *3f0a20450d274d16244310263e111e3e18243e1b243d161927101b300e1f380f2341142d451827 *39162439172e3d1e394e292e48273049208caa85bfcaca19151318170d0f150e06100f080c0d10 *0a07202727271c112c2a26382921403a1f1f1c0b3b210d3a2a1d554f2a353425181e2118242809 *151e0c1e260b1d230a0c0d0d0a100d15161f220f423f1b14120306080800010007050414070023 *1d080d0a050708040f0b031b09011e1202251f04432e0f2c1d070d0b0303000002000000000002 *0000040500171506100400110d010809030708001d08000702000c09000304001a230d0a040000 *000000000000000000000000000000000000000002000005000000000000000000000000000000 *00000000000000000000000100000100000c07000e0f070606031517091513050b100d22281e27 *22202f3221110d05100a031b14082c2a21333b3e3540224130283e4241222e20221d152f2f2130 *241649342152320d3f341b352109241b0c32240e3823142a180b271d0c2622141f130e3e220b2b *1e0944371930200629210824160843361a2b1102271b0b281907725e31705224341c064e3a1952 *34126249245c4220583d1a694e234c360b523d194d2e0f614a2158260e635a32604d21584e2152 *47164238163f3b1e4d3c1451432060461d61421e6149272d2c141b1505332e1721230f31301540 *43331e170b201f0b1f210f1e200a1212032a3b1f0f1708141204181308151808141609100e0407 *09010105010511060000000707001c27162a2a181515090e12040d08000502000502001c0b0028 *10022a1406331c063719091807003016052416040d0d010a0600251200311f065c391643330f4a *290f39250c3725051c0d001a0b001e0c0043280a5d4c26573e13533d13503f224a42243d422b27 *311d15160a1a2014181b0f121105221a0418190b0f1d0f272c172f2b1c141d0e2a3725171a0d1a *1c052d260c282b144a4f29526545576c525f5e3f2f2c173b4026242d1a444120333513443c1f2e *2610362f18403111453a1f42361e3a331e40391c392c183a2b1c332618473f1e3a271331241525 *1e0d29200b25261331270e311d0624190b2a1c102b2715221e121a1509100d0208030009050007 *00000c05030f07070b0403080d0b0c07000c0800090b00090500100b01100f051c1d0517100812 *110a212a1a25200b302916171a140b02000d0d0a150f141a222216211e12110c0d0d020c010010 *0b020f06000b020016170b161a11130b041215080f1405182824222720130d0c0c0d0f17110710 *1c11070f0a0e11091d201208090519160932321f3537292c31294637215b4d2c4947284238223b *301e26231d1d1a191e18141d230e171713262b200f1c0c1a14170c1514090f130401030400000b *0d0d0704000504000401000900000b05020d0909181406171f140809070707030b0e041314023c *442d1416041b1d1032371b1d281c19241a0b0b02040a000e11052023142e371739391d1e260f16 *201318211424210d1f2d1e24241537492a2e36166076661e1b15485029212317141b0e2223132c *2a161a170715190a1113090b13131c19131b150d2023121410031b14041d1e1312090a090c080a *0d070b05000c0904080400060a04050100040100020507030000020201020300080c0208070009 *07040000020400020606040913120710120a04030c10050801030904030b0c0b1017131b200b12 *1e05020702040a000000000b0a000000000000000000000704000000000000000c0c001917070c *0b0000070012180015200b0000000101000a0700101a04111c030401000c00000f09000d140012 *1a060201000300000100000e12020300000000000000000106021c190716200e2232170c07001a *1a05100400292d0c1b2a0a1b230814170c0d08050a09040b0b041d18050b10030512081115052d *290e1b2c170d0c011c1504303a182c2919282c2621260c2535242a27135a67414b4e4354595f24 *35400f0303070f0c0d1002172511000300171b0a4d503d364749110e06111001020700080d0015 *17021e1e05292e134850434c474843422f4d5645424f4c334724384a424a47423e4e4c424f5243 *5c5d3a4a483e4241333f36303e3c28382e334d54475c5f3b4c4d3142393e58573b4e5344514948 *604d4862513d53523c4f4d445f5a506362516b4e46594942554441544938433d4a594d3e4f5332 *3743374a3540524044564f47564f3e534d40535c3c4a5638484f3b4544425248354742333b3a35 *383724242528332b2f393d3949452d2e26363f22474c374c5c425466544c644f47544c435b4a41 *4c37445327445a2b425436374c3433514523322437471f454a2f414f2c445a2c4c6a38415d3441 *5623486124465e2245531b446c2a5072294d702b4662244560294a642447692a47642847602543 *561e43612237561a4d6c2642642339581b475b18405a1a37561c3f5d21465d1a3e5d16354e0e2c *47072c500e354e0f42591d2948183b511e31461727480c2d480c2944132e4615283c1032420f35 *4e1d233913324813334d1a3659253a501e314b1c7fa17fc0cacb1314190e20200e100f070e1a05 *080a0d090a12151a2526222924203743323a301d241e1128271539432d33362138371f191d2804 *0d13000406000a11020e12000d1c00050b040b0d0e170d0a0d0700050600030800000200050609 *0a0a0e120b0b0700030300030000131106150f042b2e1d45352120190f0d0d070a0c020b080003 *0200000200000000020001050302100a051108010d170207080100050000060000010003060306 *0e0a02000000020100010000000000000000000000000100000200000100000000000000000000 *000000000000000000000000000000000100000009130602060101040600050b01040601050b17 *2e261822262c381c1f14042515092b28161d221d2a231e2b45492b3b31313c36263a25202f2d26 *241d2e261d483f2b3e331f291d111e140a2328181d130a351d0b251c091b13033a291822180b2d *251d1a0d0631331d120d0411110634220d271105190a000e040022140a624c284b2b0e2e1e0844 *35144b311346321a533814442c1352391b32270a402a14462d10663b154e2f15513c164e492668 *5c2f3d361c2f260b57482b3f2c135c451e4f3f275448224137141a1a0a070b04181c141e1f0c18 *201314180e16120f0e1a0c1c1a0f141006191b0c151f0d0f10030e0e0614150b10170d050a0609 *1307030f0704100a010a03000301040504030a08121b0d0912080302000409000f13010a0b040d *0b021e0d08230e042d1c08251305401c0634250f1c140a12100a1e1407361f163f2d1c573c1c49 *311444390f2e21082c230d2414043929093723133028175f481f5c4a2350432455451f3f3a1e2f *321a1d1c0e16150a0e180c0c160e0c0f0b10180c08130a171f121e2f1e1a1f0c0a100907150d0b *100a09120a1f2e182a24103d402e4c53354d5c3b3a3d221b170b2c29162a1f1443422737321c2b *301f21271c2e2814332e1c3f391d302a1938281d2e321e2e2a17332c1d1f25132c301e23251723 *201717190d1c1e0f19150a232618312e1e201b0a1e1d122624141810040d09030c070103020403 *0706030406040502010100040403040704020905090301070c07050809080c090307020b120815 *19081a0c040b100522362f1a20180c0b0e171208060c03060b060708031512130b090c0b14140c *0d0f0b15180b1e1e070b050d1009191d150b100b080c07090c0b131e1a0e140d10130a09090312 *1a090f150b081009070d09151f220e14141a1a16212d20191c0c1c1f132b382b2d281c3b3f2a27 *2c1c252d281e190c1d231f1316100f1f1a0a252203100f04060b060f170a1010060a0205070300 *0002000000010000000200010804010003050401060300030502060502020401000c04070a0712 *1508263625061511050a062c3c243637241f24102e4323111b0c1b1b1523321f2a35183e554421 *371920271516250d2938182024111f3417374b2e2d391d3a54441c13091e1d190c0c0615130f19 *1e161d1a14100a07060a06161e0e13110c0a0f0c0c0f06080907050b0b1016120a0b0c0508020b *09020a0705060e090b070402090b000409020707020f0a060702040b0b01030400000000020600 *0002000104040204000400060700070501000000000b0600010501040306110c03090907140507 *1a020b0e0402130d0001020808020001030602030912071212030b1604040600000201111b0715 *230a06090400040011220c081d04000400071104030c010b15060207000d12030a0e030612050d *1c0b0a11010f1509090a020e0a02020204000000000001000904020300172517071a030916090d *10030b16050a160b111f1311200d1822181c160b1e201805150a0005070d1a0b151e0a09110632 *391a251c0e2424121e290f23200f2d372145421e2325130f190a312f1949482c606e5962666c4d *607211181a2c3c34030c0b2d3418172b30120e04445b41445e7a294259070b09070e04080b0328 *2f121f38223f3f233c4b2e2e261e41585b485c634f604e283f49312f163c433e445f623a404e3a *474f3342503f585f3b494d4955493f56603947483f4b515064794f5f65476260474f4e414b5242 *58652e48573e4f5435465e1e2d3e2832313d505c374c5a38444a2b48533f4d593c4c5b404e5c2e *3d5032383f404452354e5b2e414d314846374c4c3e4e51354c57484849354248354654454f533b *4c50313a361d2b322b392b2628262f4350252f243c3432322f273743324d5d603b48443b43483f *45443b45463242463c3d2e3543393545572e393b33453433413e29312c3336202c3a341f2c3427 *2f301e34411f35352a4236334a362c49273a5329384d2141531e3f56233b5b2338531d3f571d3f *652b3d5f20496622475d26506a29476a293a5e2c405f2837632a36612135511a2f53223c56183e *60252c50223556233c53153f571c435c1f46641e2f55212d522338542131562130481c32541e37 *581b334f193356293653263353243c6235405d2e3d572c83a581c0cacb221a0e0f0c0f0d0a0b04 *09090702061a10101a0f0a30261a31291c394028372914241e102c1c113833214639234442321d *2e2d0b110c0b0f130a111305080d102525040506020206080c0e070c0802080202000001000600 *010200000018180e2f260e140c02080900161805252004281d062110042813091b0f0a02000003 *06040103000300000400000000000600000f05000c0800040903050401030000100b0209000003 *000004030000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000201030300000000000003060100000006 *03030f0f0c1b22272b30253434243c301c433f213b2814403c2b2d342c28332a1c292b20292121 *34271a1e0c1c1e173a3b274832182c1504272929201d0a341f092d1a06371f0c271a064231182d *180c462d10241407221b040b03000e05042f25080b04001706000b0000301b06533c174c27073b *1e061c0f002912044733133d2e0e361b05614b223423063f250540200b5c38144e250b5a3b144f *2f08645221402e1047311d241b0b362f10423e1e4e3d16463b0c3d331d1e07040d0c01191d0616 *170c1610051110061211050c0b001111050d0804120c010e0b02190f000d0b02130f0208070217 *0d02101a0b0e1a090d0e07070a060c0b070509060b09040202000e12010903000f010008020008 *03001508001407002615062d1e062b15034c28093a22072922071e1202200803401f0842270a64 *57204937133a23093d18035d411c381e07261d0738271443350d58421969541d54451f5247292f *291826241211100c1215120f13081116080e0701130f040909000a0903080d07060905050d0c0c *0e060a0d02130a061a19101d18091e190e1e21142827152526131d150834402729211b393a1f3b *391e23270d2e2a182d2b18303016383a0f3c280e31240f2d2316292d182f382e23251f221f141d *1d0a171705211d0f271c0d22160921181423211a1e170e1719111d1b061715010a02000a010009 *05000c09030702000b03000602000c08000b06000c02001009020707000d0705100d0513140a18 *1b0d142115161d0d1a120b0c080217100d1313180d0d0f0f0d101a120c1214080a0d0c1309030c *0d09111a1b11140f1717141210090a1c1410160b1012100a0502080c050607050908081216170f *201e121e140b12060b05020c0b0507080511110c0b1a12111d1510181616262425190c281c0b15 *180a15130b121814050605060b0d0409080509030600000a0001060603070a0904010103030400 *00040202030404000b040004000000000000000007040906050704050402070206050003020106 *01000d0d0511190a0703000e0d07111a1141452626321f293421414733212f1e4041223e472d34 *48321f2c1a1c260a182217272520262b1b29351a182009423b24181d131010070a090014060015 *0f070905020c0a040808040a160e110f0c0a120b1717091a120f1409050f0d050e09050b0d060a *0806070c050d0e060911020906010b0501100603070a0501060001070008050002040002000005 *000003000000000000000000000002000004060402090400010001000002000009090509030009 *0b010210070407000707010c10020a09000102001016080803022324050b0d020208020403001b *1e0a0715040204000002000c0f000d1202060e00141b07080c00151a070e0f011b1e081012030c *0c010c0e020b0b010911020e0c020f0b040c08000605000103000503001a1805111d070002000d *1702201f041c160b1017070503001414020003001417042d352611140b060000191a07233c231e *250a4b573a24271f1d200a383f32454533363425464d412c3a24383c2153685f4b636b585d5861 *7276444d5340473c191c1c2e2f1e28373e0d0b043b3b2253666d455b663f4d501b1b07161e0a2f *2e1b3648311f1d10404d3357696f394242505b574e66794464792d383849584846555f485b6140 *4c543f40503d42483b4a5b465163505e6140586c3e474a454c67354d583d4c4a3f535c3f545c37 *4554414a51333b47414854344141242a26363c33434650454b4e44515e3c424a43434d3c424d37 *3e423e4b4c2c3f44424347404f5a3247563641462d3c333b474a3c46463d4d5b4750603f464840 *4957404d5d4048653f41483b3c423e50633c4a513c3f3a404c5837251e3a3a34383f3d42464d49 *505a42526f48595643525f454c5037424b3b40443f414c3e4d533646483d46462c2524282a2a28 *32361f2a39181f2410242816242f101d220f1e201a20191f1b172126201e352d293f25334b2b38 *5127434f19435f2342531e45562138501e355120425016344f192e4316314c1624501a2c49172c *4a15304d1c2e4d17394c192b481725471f324d1b2b4e153f4f1e405a26325220314d22324a1c42 *551f4f652e4a682b445f1e43591f455f284b63244c602d4a662d8ca98ac0cacb1e201d1d231d09 *0b0c111e1a131a0e26221f291c13342d1f3732223031284245274d42234d422553493044462a18 *1f1a0f272e051521030d1809141a10282001151409171e080c0e040b10000b0e00070d010b0900 *02030000000505011a1c0c25271219180b10160d15160a3b2e0f29290d291f073834182e240a0d *0302000504000301000604000103000200050400090d0111100504010004020202020309080400 *0000060f030f1d0604030000000000000000000000000000000000000000000000030000000000 *000000000000000000000000000000000000000000000000000000000000000000010100020500 *03020812090f1b0d2433290e181621302d3b37245d5c466254343a402f2237371c281c1826250d *1816222a230f150f1d1d171f180d442e1e2d1f09342e111814061f1606250c0b4a361e26251624 *1a0a3b290d2a1f0a0b11030108000b0903161007130b070a01031209041712043b38114232113b *250a44311c1a12022a1d07271d0823220b382a0e483c162b2106421f074d340b4c380f4b331052 *3b164b441553481a2924092221101d1307342c1d3e260f52320e312313130e040b11050612010b *0905241f0b1d1005120e081118150c1009131408090c030b10060d0a010b12030a0b0309090107 *0d0812120a0d1c0d13220b0d140415221212170b0c1005010c0606140d12160c191c081118041e *1506261a06231704170600211204451d0a3e250d4f44183f3f163823072c220d2b1e042a1b062c *2306433f1c413e1a48421e43310b4c36173c200a48320d442713504720504823433f1d3029142a *2a0d191a0b211f1214141008140a050a03080e0909190804190d06150d0a0f0a00040502040203 *0303030803071b0c080f0708110a1a241d161307181a0d1f2217151a0f181c0c11180c181e0d31 *301c392f1720221a261b0d29200d3838212f32172928142531262324172b291438382122150817 *1a141f1d14171b0f1a1d15191a0e201e0e1d1a111d190e261d0a1a1a101518080e1109080a030b *17090c0a02120c04090400070701010503020201010402070800100d050a09051712060c160909 *0c0b181d140c180b101a0b1118151115050c17160c0b0812150a0a0a0809090616150d0d15130d *160a111e160b110d0d08070f1009131e11151d191517131a20280f1c1e0a13080b130a10170c1c *2c2a0b1413171e1a06130d0b151705130c101615171b151617130d18140a120c0519131b1e1d1c *201c0c160d091c1809140c040f13131e23070d0d000905000b0e0003040d0b0906090b0806030b *0805091618070708000b0f01040a00000000040004060105080400020000040000000101060307 *05060e10070e1408070902050b04060c041416101a201422261b18221a30462e242c1120250e32 *3e1c232f19121b10191e110c120a0d160c3e463216260c0712092945360b150c080a0904040409 *100f040d05040b04000b040b0a04040a070b0f0805140f111a12111e1a1516050f110306180a07 *110c0e0f070c0e050c0601060b06040b0604130801080303050100000000000000000002000200 *000300000100010000010000000000000000000000000200010004050302030005060002010000 *0000050b01060602000706010c05050c050409040406001822061010050f180309120500000003 *0d032235120b1f0c0011000007000b120209100113190a060b06000105060f031117000d16020a *0e02030901111c08080d050c110718140b0c0b05040200090e000e1a021a26121a220f1a180c0b *0d042a35181d1e120c1b07182c131d180b161e0a0b1605263b1a36433d1e25140507011d2f182b *422742572d3c463224302920240e4957544e635250696a3f4635425d5a51635961787b63718355 *636d526e793d4839344a5a33371f455f6b171515424929616d66596c7a5172833c4c571f291431 *39223a444f2324194545474050464f697843647a425e683a4f5d34565b1e1d163d504f30494d43 *4d443d57613c49543b495139475145566748586546656f47617141475343585d3f586a3f52663b *4a5c4454574150593c505f43545341516143505d322e2c3544443e51533d4b513f404843515243 *464835414b31485333454e444f493d504c2c3f4e3b40422e3f4736403f34484d31383340434848 *5d602f3e44374b543a3d473f44473f4d4c26324126251e352a2124251e1c1d17282f322f251e3c *444a3b4a573540453b4a4b324850343e432f454d303f4a353c4030333322303323353522333425 *31441c2e3a18252a1620291f27261e3035101e200e13130e20200e1d18151b1e18263218231e15 *221f0e2321172c1d1e2d201d3a2722312638431c374e2931441a2d4418304d21283b16223a182c *4e2634582d283f1f354c1d334e202f4e1f3356242b4e28394d1e3a4a28384e252f4c2431502033 *4b19334b18364b1b335123335422415f294062283b5b2a3e5a29455b278da988bfcacb4b34262f *1d1d170f1d0e101d201b14332f294b2e204e453c4d2c264e4a334d402b6b535060553f464c4333 *3f3f16242c0b1b230e11230c18221622370c1c25080b13080c1207111b07080803020205070701 *030a0400040b0a1115130c1c180c31211448391a23160a2c1c0b4933182d19093220194137211a *160d15120b030300080400010102010805010000030001100d05100b0a0604000205000a02040a *05070200010700010c040803000400000300000100000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000500000200000000030200 *00020a0b0e0d0c090303070f1a200e1e241a21223b4239575847545c4425201d151616222d2827 *2e2d17242a0e14091e2b291415112f1c0b4023104843243023182017161814092c20082a1d0c21 *140a200b03331d0c35261a0d060607090a0e0c092f2208301d070d0602230b021a0a03281c0a2a *14083c1f0d3f240f1c0b011c090017100527200b3f29164d3b173e260c46230e543a1b5a45174b *2a0d4b381b5446235b471d2d20151706082323143b2909604c274f291842290d0e04040805090e *07080e060911100d0e120a1e160a09090d120c030d08060604070d0b090707080a0f090a0c060b *07020807040c0c08080c070a0b0a12110d0c11090e11080f140816130c1a1d0e1211082420172c *1a0a29180b3f2516311e0e240d002e1301452909453013593f215c4b24472f133725163b2e1633 *280330260c4439144833104f3e2250381a5129114d4018684f1c6c4a2b815d2a6b57234236201f *1d14221f1c1218161312090c130d080f070b110d1217150b070d0d090d0a030505070f04020406 *090708070d060d0d0a0805100c080d0b111311140a070a18161316120c110d0611150b0c100b31 *261e211a16222b26171f14181d172a261e272b1d21251721230f25171025221f2422171f291a15 *1e141e1c0f251e15231c0a1e1d121b171a251b141c1a14171911120f0a1816180c0c0a14110814 *0606160e0a1206060603070508070906021003060e0a080b0301090603180c091209060d120f12 *1c16080809131b1615100a15161415150a151211141813080b0c0b0d0e101b16100d0a1e1a2014 *13171211191c1f1c1d221c222f2f1d28251e1f21141e21120c0f14161c151d1e191a1b13181810 *1b160e1d1f122122131a1f1a1c2012212a14171e131a20091412111e21111d210e17140f16140e *0c130c101c0d0408050d0e031318020d1301050b04090d0f1c1f0302080707090f0c1b02081400 *000101040a000808020b0900000104000404010206030402080c00000200000704000402010001 *000103030807010305020901040c0101030205050e0e0714130a090507090e0e1820121e1e1b05 *090a162119070d09050f051d231809080a10130c0e0a090c06080909091514150a040403020006 *00010c09040d080706000504070e110f0a0a090a121809070a020c11061507090b0a091a180b09 *0d0a0a0b0c0b0706070a04080e040a0c0a0f070608020307010201000101000100000000000000 *000002000004000005000001000100000100000400010201040202000000000103000205000404 *040900050a00030700040200040b0809060a09070604001721091118090c110b09100901080502 *05000c0b011d240c060a050001020400021521130b0e080d0f02060400010000080801100b030f *0d07131f0d030003071106090800060600190603130401030204080c040e120a0602080b120b03 *0703070000262e1818140a151608232b1715161422210c2c2f183a513a20191d3a3f3e0804083a *311d3b2c1e565d484d5c484144571e1f1b46504f5669715f65755b617166727c5e718c6378855b *687d616e7c5866794b514e382a2659636053637b2e282350656b5d656f5662724f5e74303b5329 *27193f535c1f1c1c445d474861604f5d5c4f63754d5773536781494f6648636b2f3a2b4c637640 *5064415061545c5d47526c4c5e7a49576345557042546a485f7048636c3e4e54475955404a5748 *566241506b3f4f59324b5e2b434e2e3f45344d623949582d374b30384845484c43546737495c32 *3f483a48542f3c4c2d3a43352f363237482f2f3625292e3a4146353c35324545373d512637473b *404c4047524950662d3044293e533d424a2e3a43333b4835485640484f4447463c3c40353f4336 *3f433d44433548443b414c3a42503c3c49333440292d2e262f3c242f3a1c263726313528313926 *312b303d3b2e283125333116232d1c1b271c212d0d131a1012171511131b1821171e2b0d0d2210 *1e250a0d1d0a171d101711170e0f0c0b1609060c131617060e110f21210e17170f1c1d1d1d1514 *1f1a1f3022273d23233e222f4b31304b2d3850312a4c2931482a354e26384d31253b232e412233 *452633482b31482143532b3d512a3c4c244048284750332f443929342829372682a38ebfc9cb3a *473d2c362c1e29241c262a252b2d55524649492e5254435f5d3e5b604739484f2b3e4b4655482a *31432a37421f22250e202a18343f151d150e2928080f0f10231e1a251e130d0a130e110b181709 *13110a0c05010e0c11170d3331182b2415322c10322a1532230f4b340e4e3d153f2d0d453d1646 *3c151713030b06030703010303010304000104000202000701000a0600100a0008030002080003 *03000b0b000a03000307000904000d080010010005000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000002000000000000 *01000107020001000d20230b0e080c19151a1d163340323c3a2338422e27251a293c3a1e323321 *1e12303f38222417202111261f093f3a1d4d452260431e443711434318312c0f2d19073516053d *2b122613053a2a0a40330f3e2e152a2e1f0f0d000c0700231403221404180b001c0e0023180323 *16002c1a003e27073e1f063a21071e13031e1802251900564620463b153d350b3921024a2e0d4f *330f503f1a594916493c1b2a2303110d001112021f10034737134e3f163d310f3b3d180f0d000d *14051217060d110513090515150d141510191305131209121906090e030f1306141208120c060b *09010a0d03060906101206090f05090e000f1a0b120f01120e04131706181c112a362424281425 *1b07362e0a32260a4e3518574219412c0a3f2307433615533b16503a0d5e5e224b370d302b1033 *2909463a0f533f125e481a3f2a05684f21433c0d4f3f0f5c3b146a582e5f4323795c3f6557323e *412324240821210c1e200e181508121c0d131b0b0f1c18090d050a13080c1203061104060a0507 *07060e1417090a0913120e0e0e02090e010c1301101c080a0b061a1b141217060d140d11190d1e *1f0a17210b292d131814041d240e24291e2a2f212f261d21200c1f231925301b211f131e25131e *1f1d1d2515201e131e251f211c0b251d09191d121b200c1c1f111a1f0d1f190e190f011d191013 *0f000d0e021419070807001506000f08020f09070d0a090b09061512040708000d0c031b1a1518 *12071f1e0c1d23172122181e2524152620151e0f161f141a22171d1707161c101718151114190c *151612170a171b1c1b1b1412150e181d0e1b1a1718140f090d0d0e180f141808161909131d1217 *180f141816122229141b16101d1b141910131c100e160913170c11140c1514121c212212171314 *1c1c09150d0610050813040b100905060310121a0708050802000b170b060d05070b0709141000 *0000080200090d0505040505070500010000000001020001020001000007050307040001030103 *0300000400000400000603050200050703070600030400000606000b090103000a0c0203040006 *11050405000d0d01060500010600151b0e0005010308000506000304000d0c00070a0007070007 *03050205070b0200070900070602080701100b00140901100a070f12050d1105111203120d0214 *18070f16051115060a0902130d040a10040c110706070006100404040008090006010005000004 *0300000000000000000100070a0003040100040003000008010002000001000001010000010000 *0500030d000d0600090300040100010801010402070b001218041412020f16020b0a0009020009 *00000004001f2c0b060b020208000909030d0f00060902070701111907010500050600161c0213 *10001215000a0f010702000d0a001416000d09000e12030404000204000c1702121e0d0e0b020a *04000d040116160425290e1915070b1503243e1d261f0e24240a3c43413f48384647343d4b4215 *17072e300b41492d61797c636572646d7c4059673b483a58686f617571657c865b7483616c7c5b *697b6377825e7082667b8b6478874d59526474795c7178485349596d6e5f6b805b6c7a4e657331 *3a3339432d232b294c4f3a51636f505f6a5c697a586d825360674e5f5f4c585d3f5863313c243f *56534e5a6846505d44606a3048554248483f4c56394c4c475051464e4d42576731445a3e505f36 *404c414d4741585b3f4546414e584057653d4e5a2b374c34464a364245424b4c3f453e3f4f5137 *434b363f392e4142313647363d44434f493845472b3c3340484c4442603f4d4e293c4a3b424336 *3b36464d503e48523f53553a4854505a64334c60334046424349414c533d3e3b354542343b3f40 *494c40485145505f49474d41494c3a42433b484f323b3436424b33404b29314335413e3b475232 *3f3f2a392f273c302938402935392c40461d222f1822211e23261f1f24181a1c1f2220191a161e *1a181b1d171c1b1a1e242118272c1e2a2a0f121c0e140d0f181215150b21231c100d0717161113 *211e0d171721161123201e1d3122232825232518263029161a1a1d28203243403242372a292320 *2f26262914252a1c28322d222f2e2c322e282517252d251d252621272328251f2d282092a78dc1 *c8ca272d2e1a25381b2a3f091125061b331c313f28343f27384726424e40495530314822395425 *4b7325436528485e1f3d5719324322394d132a33161d350d243d0d20301226420f282b0b1b2712 *17260b0f19080e15071423001420050d1c060a0f091312393423482f1f665f3f3b2b1741321e3f *362510171902070d000205010004070606010505020407000d0d010008000a0e020b090c0e0c05 *0a06050b0702000107070b0003020c03030d040305070600000100000100000200000100000100 *000000000000000000000000010700010400000000000200000200050900000300070f020c1000 *000302131b00030b000004161e25141a1e0514131025321b20261b2836293f4b272e2728293524 *2c371e332f222f311c27211f332e4247325c532a685d4b51492f3b38284843280d140f2120213e *412e4338214233245c46275c54353c352020231e161d1e130c0b291a0f3e2b153a2c0f38280f39 *32193f29103f2a114a3c1f4e37185a3e1e4a3a152d2710413d215841233c27152d26151a0f072e *1b09422b0e644f1f53401d5447203323100d04060602080b080a21160922210e211c0c1c18080b *0b0905000b0c0c0c0d111313140a0d1815090c0d0d130d0a0d0a0b0909130e150b0d0e0f101812 *12100b100a09140a101910080b0905080b08080d06060d0b121a090c0c101c1b0509071e201710 *150c392c1d3c3b243d2b164f42264f462c42381840300f65451f6c532c6f55237c62345f4f2c38 *200d422b0e4e40186d56355d48214f331b4f3f234d442537211164462665522c3d200a6d482b65 *50341f262613181b101b1a141920121a1c0817140c18110a1412050f0f0c0e12090a110c091103 *090d08121406110e070d0c070f14090b0c08060a0510160709150d111d0418100b110c0c0e0d0a *070b161517150d171f18161d1815252a1b1f251c24392a26221d211c1e23261d231d102329251e *21222029291e2a261d22171e16151e140f202121201c18172327131717141e1e171d1a10101112 *0f0f110b0c160a080e08101114170f0c11070d080d0c071415100f101916100d110c1112151312 *1d1c10161a0d222508110e19262515110f121820171a1009171411141e0a17180b1310111e1a16 *1e201d1d2216191b121a1f171e26161c2112120f1724230b1e1e0b1d20131d241b2428191a2116 *12201622290b1f2017231f11201d12171b1a1a1f17212f1219200e1a2106151914131616252c14 *17130c0e16080b170c101e0a0b1913171e091317000d0c051614000a09070b10020b1c03060f00 *071800091001080a03020800080b00000600060b00000106000500000500040800000400000300 *000000020003060504010200030500040200000600000300000000000400030e00000305050503 *0204000002000003010104000001000002090906080707030302010004020304000402040b0a02 *03050000040503030304070a0f0b010107030b080709090b130e100b0f10090a0f0f0b0b090f05 *0d12090d0e090909090b0c0a100a0912151417190d0909080b0700000000030301010300020300 *020400000200000000020600010600010801000200010101000000000102000100000200000000 *0003020002000003020303010203040b0601040401020414160c11160407160a00060400040700 *040b000002080405070b0400000200000002020403030100000200060503110700030307050203 *00020c10070c1206000704020101020c07080a07111a090c0d0703020201000105060304090802 *0705000503080d0a171f05161a0c131214171f131a12133a3a313b322432341f4e646e46566042 *4c472e36263e3f3a2f2e29565f65505f6e63646f576479384251495c6764677f68758f5160825a *6e8a6070836472805b6f805b7084596b835e667757606d596775526c7e55667d5071815a697c4d *617639393122282c47585c4c637b4961724d6964425766515d6a49546b41556c4e546748556731 *3c3b384d533d494e3a515c4256694962764d444e454c65404c5d49536935505e435e6942576a47 *55674b526441535d4447613843523b46633d4e564054673d4a5d3c454a45535b3e566e394a5940 *47553e4c6038475a2e445437455c3b41473649553c485c2e354e37495a3b4a60314246283d3f27 *2a323a404148494c4340563c415d3b48584648623c41474247503e475d434d5d414d654248583c *485e424d5c415353364d573f4d4e4048563f44483e4a54444a522f4962334452373e492c414530 *415120292f2e3a432e3b4836475f303b4d2b3c47233542202f352629391c1d2d202e4023272c22 *2d3c22374b293f4313262e193748273a3f252e3928222f29273a1d2d391e2d390f25330b140d1f *28252733342836441e212a1d1e2716232d0c182d101d27111d291823281b202d212430302f2e26 *3248272c3a25303722333d202f322c3e4b201f322321242c36371c26352834422b324723343c87 *a394bec8ca2e434212242c1324341e3a471b292f1d2d45262b3d272e4a28394e27404831495f26 *445a304f573849622c42501f35481d3147243a491e2e391c30420e1f2a1c2d2d1e31370b1d2b12 *213510242d1225340814180b191f0a1f1e0d171d202527090c0e171f2023221f2a291324221b17 *1a0d0c1407070d0205080307100c07151e060b08010907060d0b070c04080b050a0f070205010b *120e0508090a0d0a0709050c0f050a0d0005030005040002010000000000000000000000000000 *000000020000020200050600000200000400000403010500020101030000040101080500000000 *040b070c0a030204030e1304141010202319312d090e10202d31201e1e212b3929372f1e2d3929 *3e3a1730371f3e312d2b2c1f2b2e22241e3c474f524c38332b29221f18514f423f391e2125251f *24222a271b374221453a1f63533152553b32371b171f1d1f1b15252e253a3a2660522b725b2d67 *5422654a23755f255e472061521f5949223d34152d1e0c482b13694c263e33103d3914231d0a1c *0c00351f044538104e461d644c21736438201e05070900090604070505110d061215091e1a0930 *26160a0c060d090411120d12120b121213131310141a101117131217100e130f181d0a07120b09 *0a090f0c0b1014140f141108100f05090f0a120c0b080a0c1c170f170b0d0e10040e0f0f100c14 *130c08130a1f220d3c291d513f2178673e6f53245e3f0f6d4d2c7955215d4c20665b2f79663364 *4a19533a156a552b6856275046245148273d2c18513e18534017564413584a26574a29553b2586 *6d49433e3217241f212b241b1e0c171f181a1a12131b160e15130b140f070d100b18110b100a0c *0803060f0908120d080906090c0b041110090a050c190b1417100b12090d17071b130a141a150c *1717181c0f1a19081d1e091a180d1d1c0a2a25212b3526232c2a1f221d1e1e1624281326261826 *261f24271f2825171627221e2a1d17201d202a1d1e2411231e111f1f101f1a091e1c10171b121e *1c1712150f11150a161c0c1416051c20141a231f1314140a0b0d141b1112161b08120e0f110816 *1a181d2a2e141a18241f190c0d0e141e1c1d241f19282c171d171e2020263430292e2f1d2a3117 *25281527341a252a241f182026181c2517151c141b201e1e1f1916201a2032321a242715242018 *221e171f1a252a28202320252e282238451c2324162022171c161e242316232316222715222314 *212a10212d1022290d181a0f171e121f130d221b09161e0c11170813170804080a061203100d09 *120706100d0409090404020204070004050106040002040404010a070304080900010000000000 *020700000000000102030100020002040000030002030000000000000000000101000000010000 *010000010000030000000000000005000004010200010002010006020000040007070006090007 *06000003000c0807070c080404040405000709020605040606050c0603060705080b0f0b130c11 *09010f10091511050f12081513081012070808080807030a0903020600030500050b0304020002 *00000200000000000000000000010604000206000002000000000100000b010501000400000000 *0000050600020500060701080302080400010700000000000805050b0605160400050006090404 *020200000202000009100703040400010000010000010001000003000004020000000000020004 *0200040700060b001117010201000600000b02000504010d0e060707020001000003000f0c000b *02000400001313080c0d0c1a200e17201d1f270f1a1f10302f1e362f1f313b3a3a403448585a3d *46413b4d513b464559626241432f5760625d6c7b4c6c805f688059738542525465757e5e6c7765 *7886647b915d6c7d5773804e657c596d785a71725f6d795a5e645c68655866694f5c695c6c775a *6a844f6275343a294d54415f6f835162715462735a647c535f69506e8947566d4b5d72485a6845 *5b6d485563404f5c54647b48515a48586c4d5f5b4c585343555c3f5d6c455f6d46606e4c5c6a3e *4e69415267495262415366424b504c4f5640424b414b52364354425760404656414f5c4f575f46 *515f434e543f4c5249494c404f574a616f3a4b573b42434956653e4c5344505742464d404e5345 *4e54424c4f4243563e415b4a59644b4f5f535962555f68436680526683465e684e62714752574f *504f4d666d515f6c4e5d774b5d5f43586a49597147536643535547525a4b515253606c474e533b *4e6c32414a4550604652603f47562a414c2d30432c34471e2c3e212b3b26323e2636432537441e *2729242c312134371e2733171f2a16181e232c311e242c1a22261b263426272320283a303a3f1e *28391c1e21222b3520222b2235322f3a381d2a281c272b1f23281b282e1418211a23131e333320 *28281a242e242a2c292f2c20262e333b3422293e1d25301a252621313221292a2a3f452d3a482a *2a3687a68ebfc8ca293345232b331c2d371c2f492137421d353f2d424f2a424c2838451e3f5e22 *3a4a22425f3253702a4b5f29434a2941591f3d5b263e501f324018304628394d1d35491a2e320c *2b35142c3a1b31480b1e2a0f22221227370b192209191e07141804181e0612160710160c0e190c *181e071c1d09191208161b061212061717080e0c070e0b0a0f140c120b050b0d07171706151702 *0f0a02080001090e0c0b080e130c050a0a050508030a08020b08020f0a07151700090e00070600 *050200060c00030600030e041308020a0300070300060b071411000905010308010813030c0e00 *070e04111100070b05181800090b0412180a181e1c2c322236361f2e29294b4d223b4824424731 *4449303a363346452f4142374b52334a4a283f432f42422f43471b292826322e292d321e282320 *373114292a161c1e242e25302b244c4e40292c24192e2b1a2e281d29291b2629202a2a47442d69 *58427c6d3a6652315a53346f67444840282826130f120d111312504320644c2233331930331026 *240b36270a543d1246310f54421b5d4724615b38271809040a05050b0605120a08070614120b29 *2618483d2128180e0a0b080b100d09140d151a1712190f11151317170c0a180a111d190b150d0b *141104100d0b1b18090e070d0d0d0a0608100f0a090f0e060c0508120a050e0d000d0d0a0f0c0b *0d0d0f131113151021291a1f1a145056404b573f5d4928655d3d7d6c48745a29574c256a583b78 *632f695d35605a324d51374d4b31695d353b3b2a26281d43432d5d62353e3f26462d1b6d522f85 *6a407465472427211b2014131e151421210f19130c191a0c130b0d11150f15100d100c05131105 *1713070b0d05181a081318070e0c0b1a1f0c0f0d0c100d09151105191a101d1c0c181713171518 *120a141c1e1f1f1c181f1f171e14172d2b1a1e202127232b251d21251a292d1c2a2e1a202a2422 *29292427221d2021232921202b1e1e241e1c20172122231a211f1a1e1a18211b1f1e1219271f20 *271614221d1a1c16141b11131e14191f1a181416070e10090e0d0c150d0c1211141618121a1e0c *1b18122028131e25121d18172927172927141c1c1f2321152723171e2516242a1e28291228300d *23211e37321d1f25181818151e191a24271e2f3f1f262e1b2a3a2537361e251e1826322121171a *2724131e1f1923221e2c321727281c2b2f1623261827301c24271b2c3017312e0d263115323e10 *282d0a151b0b100c1315130b1514070a0c080b15020e120315190a1e23080b0c050905060d0a02 *090f030a0d00020a03090d010809000703040a0602060202020100000003060b00000400010300 *060600070101030105000001010100000000020300020700030400020100020200000000010300 *000000000000010200010100000200050200000000000002000003050304030302080400050702 *060200080000080202000108080a05070303030501110b09110f010403070b0a0f0604060b0808 *0b04160b09030f0b11120e13120a11150809160a080c0b0a06020f090406080604050301060500 *040800090400010003070200000000020000000000000700020400050404070002060202020004 *080200040000080803060900050401010200020502040000030000000000000000000300020500 *040500030400020000000008140b00010000000000000000000200000300090201060000010000 *0101000000010000060a0309030000010200020100030000000102080402030000000000020005 *0d07000506020d040e170804060318282424241513170d2a2d2a2039322f2a1f42413042565244 *433a4f564c44494a4a483f506a7838463f4c5d645a626d5a6c7d586e885c6266505e5b5a6b6565 *717860777c576e7d4d556359646b5f747e5c67746272844f636957647157667556647e4a678057 *697f4f63795a5e624b4f404a62655362704e627c4e6379465f70526b7550586c4b5d694f606c49 *55713f4c62495f645265694f5b6c4d606c4b5f71485d654a646d344a60414b554a5f733f596847 *5c5f4253613e5163414c5d495356435c5d404a593e5159415c5e3c53664253674d5d68444d6048 *57614855644c5f704a5e6f4e5f6c525f6d52607340506a424f63445564475d67495f7042526c44 *5a6b436268475a6b3c5160475060434f62454f6044536a5365764e67734d53644f525d525f6d4c *6a7b485d62505c6f4a5c644c5c6e5361694b5a684e5d6545446046556d425c6738506a41546342 *4a543a4a53484b5642475f42586c3143562339422630372a424d2941482c383f1f29332021271d *242f22323d2036401e3333182e3e2c3b2d223a35212736171a241d2629142332212b27242e3a15 *273a13221c1e2c2c1b2434171b2614272819221e131a1e0a1a1d1d211b1a28262026251a1d2726 *2a310f172a0e1925192020182b2e1a24212b3231252e3425252922282a141c281e2931151b2519 *1b232a333082a38fbec8c7273d5122435127333124334d263a51273850273a59294f6832415322 *486d2d50742e4c61324d6d304061313f58334258304a622331481e2f4a20475822364d213a532c *385d2030431e304f1e3550182b3816313c1931461a2e41151a24212d3a1313230d192614242713 *1f22141d150e18201c212d161c1c17222a1b27361520220d191b111d2109201d080f1f0e1c230f *212b161c1c0f1c1a0e1a260c1c211521211118121a2823181d120c151b081310071016060e1503 *0b0e09151e050d080704050a12280a0f1506070904101c010c170815181214160f1a130d111911 *1817050d130711120b141b0812170b1b25212e34192226212d322f484a243b46254452324a5d2e *47523e525938525f304f49384c5530434e323e473e586b364d5f314c582940463a58682c38383b *3e3e30434b2633362836322437412b382f293233262c321d1e24222b2b323e3f2233381b2a2f2b *34293c412c3341282f3a283b392239341b16150f0706090c0f15181f1b2e311a48331845411e38 *321a2e250f4d3d1e65471d5e421f634927433b21493e173d301a130d0d120c090c08070b040517 *15104d40276a5f2e47433115170d1d150f18161a171c1c1b1f1e1218161d22231113111b1f1513 *100e16161512191e09141a1212140a120e040b0b09141a0c16101a13140c090d0a0c0811171608 *0a0a0412100d14150e140b121415120e0921161413100b1f20202a301e2f2b1f4d3f2358461e50 *503c5c49363426211e1b132e27263e3528313d351c18201911091d1e181417163025194b472e76 *6743706a4f3b432f2226261e272325251d21241a1b191a151b1813191e101b1f171c17161e2515 *161c0a11101213151012120c171a1115150a151b0e1d31131e1d101a1a0f1d1f0e1d2016191318 *23231917161f21201a171b2223161e170a2b291f33291d2a2a2c222a2a1d2c282e37272624252b *302f293027282926262f232629222d241d23281f2a2a2127262919241e1f261d1f2a2329261e20 *231f1e1f131e1819141e1c1c201d141a1417180f1b171a14140e1d161c1511130c141319282a13 *1e1c131c1a1a2728141d2111202512232e151e2b0d1e1e131e1a1d251e1c221e0d181716181e19 *222c1a1e1a111723202c3b1925291f2226292935282f362535411e253028262c22262a1e242c1f *2b2e1f33341d33322125271d272e1e282f1c24261c212a20262e171911171e1e1c25291d292718 *242b162629141c250e151e141a210b101008110d151e1b0a0b131117100c1a2504111e04070e0d *14190610130606010d171e06111404070804050803070f01000600000005060005070502030202 *030405030500000800020800010500060800050201050000000000000003000702020802010600 *0106000000000301000301000000000002010104000002000000000403020400040701050a0407 *04060707070505040302030603090b08080410030609000f06030a09050c0406100a05080c070b *0b0d0a100a110f0711130b170f0b0f06051b0904080b02080b08090d0b080b0a0a0702090e0703 *010006000103010300000102000001000000000000000003030005000005010202000000000300 *000200000200040401050005050002020204000400030300010401010002000000000000060000 *000000000001000000000303050800010200000000000000020000000100000103000000000000 *000000020100030006030207080106000002000003000206060302010105030001000003010001 *01010700010c0301070401070b00151504110b040c0d0b1c1c162b232135301e413b31474e5245 *48474a4f48464f4c4647464b57623c49524e57425f676f4c5c695d666d576c7f5a6e79586c8358 *6c7a5c6c8a626c70606a7a58687657606f4e606d596777556f7b5f66765766765d6a804d5e7348 *5b6f526e7b5767815e6773526266586378516a7b52697e525a684e657c57667a4c638053666957 *5a6c505b644e64794c647b465a6f4d63784d5e744f6580515a63485d644c5d675060695b5f7348 *576f536572525b635c606f516672415b654f606c565f6d535c795669804762724e63795762724f *64705867775063794c5e7950556541576a4f5f6e595e6a495c73434e534e5d5d4d56694d4e5653 *5a6c485c69425876464d5e3e506a4b586a464c6459536a4d5b6c55617357626d525b654a5f6f45 *5768475865505f704f646d525b6b4e64694952645c657059697347526c48505145576a4b52613c *4d5c44606e445d6f3e46592d3351262e3a303e372a3136263b4a272a29192839242a3c202f431b *2735262e2f18242a1c2d3318272f1f3041161e370f1824181a2c15141c1e2018161f240c1a1e18 *212322202c0e0d1205060c0a0a190406070e0e0a0c0c091515150f13191816211009161113250b *0e170e151d1b1f1d0e121c11161b0b0b160a0c0c171c26221d281b1d26272724242c2c1f1a211c *1a26140c1517111e859e8bbfc8cb204269254359223b6221455f2749622b4a6a2d445c2e49672d *5076254a6a2a528230537f3a547b2e4f783850762d4d722f4c72284c72264063324a7628476c24 *4060253f502547602348601b384b1d39571d36561e38561c28471839531a354b172c491730441a *36531a314a1d2d412440501f3740132f3f1c364a1f333717212d1127351b37461c2d33162e2f13 *23301a2936163045142a381835401729310c23300b1c2404161d0d1f270514210a161e07161c0e *1e26081c1f07131a0719240f22210b152004121e081b270921200715160516210b17210d202909 *16240e1c25091c210c1a2e162b351021311526372440501f3247223a55304961335165314e5931 *5867335772324f653348603b53643551652e4f5f3f4d5d3c53643f58613c5a6337596b3048663b *586b37485e30475f3246572d52672e4f653b436134464d21363f24384128404e294356222a2b29 *3534283d4323303a1d2c331b28291827280d171e0e1e270616170e22361a1f1f121b1d21221d10 *1914262827202c32564a2c6f5f366550334b3e292c3629191b1d080a13111f280a1c1a0714150b *1d2214190c1d2a352a392b1a1d22111b21121f281623231d261714292c191c1a161b200e1e1e0c *2126171e25142021172223101a1d101c19121f210c171e0511180a101c071b270f1d1e0c18130b *1a0f181b19191a1b151d1a0818180b141f15162111161e0b100f141811141d1e0b141424262115 *212517232c111b271623250c1d1e141e201c1d1f161f2214212a181a201d2d331d171a26373b1f *36333b463f39403c182d2c1f26241d2a2f162933121f201926221327260f1e201021230a1d230e *1d230b1e30061e1f0b161c0f23230f20230f1c200e1a1e1218211823330b1a1f0a1c21131f260e *232e1a2a2719292813242914222218292a18201d1f2a2e26272a28313624291e2a2f221d313124 *292d2934301f2a2a2c3128212a2b1e23222321251e29211e2a281f2c2c1b1f211b25231d231e1e *25211d211a141b1b1e1c1414211914232b171f20171f28101d271317141b282611120d191d2319 *1f23121b1c151e1b0d212b101d200c1d1d17222d141f211625361d242f17353b13273514272c21 *2d30161f261d232a1b25211e3d4520314021231e1d252e1e2e35202f3021394228303a27353c21 *34391c2b371c282a1f3d511b3342273b421d2c3b24353f253949243f45273d471827361927350e *222f0f20251023280d171f1923290f232d0513170a141e0b1a1b09121a07111509151c0c121000 *061002131a000b0f03171c07131d031017030b0d03040700000400020000030500040503070c04 *030502060500050900010700040400090600060501000201030300020300030600030300040200 *030200030300000400000200000200000200000200000100000100000203080600000103030303 *0205000004010b04020b09020703010a0607090708030401000006070806090504070a020b0c09 *0b0c06140d120b0311130c08080c100b070e110a0b0d0c0e1112080c0a06090a050a1407040208 *050403080302070d01030403070702040100040600010100000300010800000400000100020200 *010000020100010200010300000200020400000200000000030500010000070200000000000300 *020200000200000200000000020000050600000000000000000000000400000500000200020201 *010000020000010100000202030501000402000102000000010003050001020104000000000000 *00000000000300030303030002000308010711080703021f241a16080a2431242d41432118133c *423e3740433840294b5055383a32455557384142475c6a435f76555f6d495e615a6e7c556f7b5a *67835b6c7d6177805976815a72805c6a795569795a69844e6b83596c81517289586b805a6c815d *6f8d647384566b826368794a60714d6777506478575f7359667350697b536d7a5b728a536d8345 *64815c688b586e88405374495f7f4964794d6180495b6f5064704c58704a61814869854d67814c *5d7a475c6953696d586b78515e814b658052647e4f6c8b4461774d667948637d4a5d704a62834c *62804c608143607349647b506a7d47667749606a4857664d6072485e76465564536179525b6c43 *5e734d61725365684b606c4457724c5d7d4a5f734c617549637e475c724863724c687d4c646450 *60744c5d6b4a5f704a5f72445a75465c654c58635d5f643f4e643d4c613e4d573f4e62444e573a *495840515b3041442c414e2f363c28333d2030451322360d1d27131d2c1c232d21242421333e0e *1925091f32050e1e0b13211318230b0e110a090b07120f1115150c0b0f030e11080a0b010c180c *0e1e100f170f140e131d19161a220d0e1a00030e040c0e0306110e141d191d27131d200c0e150d *0d0e0b17200e23260c1c29040d170c12190d140f0c1b1c1c1a1e110f1c0d141611151d140f1519 *1e29191b2020232d2a1d268da18fbcc8ca2d426229486023435d263856234570224a783153712e *527c30456f324f732e55783259842f57782d497f2d527f2a4a782a4b6f335279335073294f7330 *517135527728496b244b6028436623465f2443621c3957183452223b5020374d1a30501a325118 *314915384a1a334b1832461e33491f364a19344b1a364b1d3040162840172b43152a431d2d3511 *28441930401c32451926341a1f371221341725260b22320e212f0e212e1a28350e203508222d06 *1c210a1b200e1f280e140e040c1a0f2b3a1623330d161f0e1f360c24370d292d0f202f142f4811 *262e1124341a3543132e3911203c273f511c2c3922394d274b5b263e5b2e4654364c5d2f4b652d *4e64485c7235506d334b643c5877475f7d3b5373355a76436383415d76365166484f61415e6d36 *5072425c76404f662b4f6b3f546f254769324c6c3452732e44512d40512c4b69284452243b4d24 *404f2c3f4b334550222f3b16353b1a29320d1e2c0d19280f141c07192e0c1b24101c260c151718 *221c111b291b1e27111f24181d1f29382d3a3a283130260c16100e0b0d0b0c0f03070d030d1d07 *1e28030d10051a1a0e191f0c1a18100e1a171d23161e2114253021304215252720282f1e252c1e *29252121280b1f27131c180b1418141d230d1c221627300c1f20121c20111a26080d100819200a *191f11131a141a2113242b1528241d1615171b1911181d0e1c200d202611262f0a162117252514 *171d0c171a0b141c0e1a1c0a17250a181a0a1a2417283115231f18181a131c2613272b1224271d *2d401e3142263a3c27352e202d2b1821231f313f132736142c31182b3515212f18283118263116 *1c1c131a191018190b20251019200b18270b13231722260c1c24101b1c161a28141c24151b201a *29320c222817293b20323b1d27261f2d2b1e232d2421201a30311b2e2b2b4254202c2f2939332a *392a2f3a3f23272e222a272736452236312b292926313a2623202230302322221f232a22222120 *2423252829161f1b1b1f1c1c221f1821171a18151d18141e2023191e2014292c18232f131f2c14 *1e1d1622271d2322111d1e142022122b3d1727311725301b1f2c23373c273b461e2a3317282811 *202915252f1b3852253a441422221228312137401f2d36172d3d26303c1e2e36172c3528394625 *283923314b222e391b323a1a2c3e1e232d2036421f33401a2c2f1b2c321d262811292a1d223819 *2d351122331527400f1b2c12222b0e1c1f08141b0c1f2b0210140a1821070f14071625010b1404 *182403141e00030b020f0f08111503101800080d02080a00070d00070d00090a03030002040800 *000002050200000000020000020500000100000000010000000100000100000000000001000000 *000400000200000000000001000000000000010100000000030800000201000200020000050200 *0000000406000001000200020600000b0400040001000303010404000002070907040404080a03 *080c080a0c0c0b0e0407030b11061015120a1413130c050a0905090a0c07020109080503040202 *050307020200020000000000000000000000000000000000000002000000000000000001000000 *000000000000000100000400000001010000020000010000000003030100020000050300010000 *000000000000000000000000000000000000000100000000000000000001000000000000000100 *000000000104050200040600000104010002000000000000000000000000000000000002000004 *00000100000100010000000001020706060301000606030b0d051309040b1104191a1314130c2f *292428383a2a2826303b3a3b412f47534e4249494b5a5d4e4d635065754a5f5c4c5f6c4e5f6c59 *656f5973815d6b80576a7a5a5c75596d805c656e5a687c56687b5f79865b6e8b5d668e5566824e *6179576c8352748a6075895766795c647b576b85506c7b5368845063754d62795d697b4d69804f *5d734f60704c5870495d72485d734962784968814c697c4e678155657e4e6164465968434d6846 *5f72475770394862485a64426081435a6a4d617c41536e415876486377436778415e734d5e694b *5d6e505f7649607649667743586d4359614052713b4d5e385161314d633546533d445d3f465436 *5366405c693c4c604857643b4c6d3b4a53435b6b4246503748504652613b5269344755374c5f36 *4c6040536840424f3b4b60404b6037506033474a2a3c4a324c55324850273940313c422b3f4625 *3548273944253840252f3e2436462036351e39401d2229151e2b151e220d112008101c101f2a05 *101c020a0c0e1b1b0909100c0d100804090b0d0e0e201d0613220a0d1e04070c0a090a0b01060b *0b12061a20040f0f03040d07060707090c0b14120d090808091000020907090e070b0c10171d0d *191e030a101f1e1c1a1b1d11151c0c161b1a1c2a16151f20262e1e212f11171c0c0b0c0905080b *0c180e141b19222c22212d231f2583a490bcc8c92c43642e42552d49752a486b2e455d26467128 *48703353712a52843652782e4d742b517a395a7d355081284c77294d712751752d5670284d7231 *4870384b6f314462324f7624496f2546701a40681e3e62244268283c55284260233353192d501b *2b481d38511d3f5518394a2037561d39571c273c223d5718364a1d324a1f394d182d4c1d27421d *3048182e461926471a2d3a233a4f1e2f402327371428361d29381b262f1e30361d2c46172c3a0e *244017364f19262a0a1d3510233510262f153047182848182b421f2d3e1926341027311729411c *2325213037203f56223b4d1220471d3d5b222b4b243b52284a742a405b2f5477364c5b34516a33 *4f732f57724258724261814459714a6c925269883f536f475d75435c6f394f6c405e71385b763f *5a6f3c57773c58743c56712a4d803b4e6e38526c39506a2746692d3f552841633147512d3e552f *40572d48622b4a5e37506423404a19293d1e2e431d243d171f2d192630101d2b0c1b230d18250e *182916283b11213214233516242b141e23131f240e212914253118252d121a230a16210c151a13 *1e300e131a0a17270b141e0e14160d1a2a091d240c1f1e171e17161918151a1c1623301d293218 *1d2d1c1e261d21201414140e1c1e0e1f231620340e1f28192126121d23141d24091c27141a200f *111a0f141b121b1a13181a1317270b18230a191d121215141f25151a1e15242c11181816211f1b *2b2c0b1f2416202c0b1721151724111b20162d320d1e260c1f28111d291821331b1c27212c3a1e *24271f1f211e2c401e362b1d30351e27221d27351e263b1c2b391f2829223233162b2d1220250f *1f280b1922151b1f1724340d2133172a2e1d2a31202d311024320f1f220a192f0e1e30181d2e1d *252e122f2d1c272719242a1e22221e2d3a212622202c2e1e3a3d1e383b2426262f383f2e3b4330 *3724293e4026373c2e3e432836352e3a3629312f222c311a24261e2e302331341e272524353126 *31391f2520292b26192c331f2e291d26241723221d27291b2225161d1f20242e202026101a1419 *25281926291c34381d29381b1d29212c2e19232c1c2e411b262d202d34101d26172a3c20323222 *3a4821363a20272f2535341b2c43182d461e34422833421e30361c2b3b1e364d1c282e20334916 *2d43161d291d2a2c1d262b1b2b412031411927321e26291b253317293619283a1620281b2b3414 *313e152e351c2b31171b240b1929112031121d240a18210c1b1f0d1318081a230d172401091701 *0c1600050d000304040508030a13020808020c09040b0b01000000000300000400000000020204 *030002040106050302000000000000000003000500000201000002000001000003030002000001 *000001000100000000000000000000000000000000000000000000000000030500020001000000 *01010004050204020602000c00020101000003010003000002010200020805050403060b090409 *0802050504100a080b07060a0b070a11081011090d13090b0f0e110c010f06000707020b030305 *020208050107030306090009030000000000000000000000000002000000000000000000000000 *000000000000000000000000000000000000000000010000000000000000000400000000000000 *000001020000000000000001000000000000000000000000000000000000000200000000000200 *000002000000000000000001000002000000010201020203000001000001000002000002000003 *000007000101010200000000020000000006000101010100000007090519181518120a2732391d *1c153b3c292b2828444947383c3a3c454c465d64485d654f5b4c505a6b52627250677e59616e5d *61705a616e556984637585606f855d769157687d53698354606c5b5d7050576a5a6b7a6477885f *62784b6179545572505a67515b6b52657b515e7d4d6876536782515f694158754e697e48607a48 *60794f607d4860765060704f5d794750724e5c6d425c7244576544566b435b70455f6e4f506152 *65814c6686495d6d4a63733f5066435375404e5e3c5264345068434d593c4c613e4a60424e5f3d *4958455b653546593c46513f515e3a48513d43543b4867313e52303f4124374a314452323e5130 *41522a3c472d3d473b3c44293f4f2833422c40443d475d22374b3c40443040482e33441f3a4323 *333f2c3b57243c4b222a392b29411e262c25252b1e20261e20262125331f343c2638401f2d4022 *2d4121293a1723311f2124121e28161b2a0f141a0c102009151e10151d0d0d1911191f12121a0a *0e1405020a060b0a08060605050f08050e04080703060909090b060a090708090e1b200f0e160d *0b0f070911060d170c0d0b070d1003000400000100010502030604000a06030d09080609060603 *060607080e0c0b150d0d1d11161c0c111811080e0b080b0b090c080a1609090a06050c05011407 *030e0504110604060a06060d070a170f14779b83bdc6c9344c753251712e5b803859752f53813f *60842d4c6b3259823b54852e4d7b3453843457823155823a598132588239637c37578229577f2d *557b2b4773294d702c4d6f2e48663055792744682b4d701f47712b466b264159193d6923486819 *3b54214267233d5a2840561d384f15365114314417374f122f4d19354a1b354b20405e172d411d *364c143154142b4616333c142e3d153558223f541a2f4d20344317374e21434f2443601c334b11 *304f162843152c43182b41263a461a304a0b26390e2b4a0d2a4e2643612135472442571f3e4f1a *3c4f1728421f3f5521465b25405f1c44682046742d4b652b465d2046682c56742d52743b5f8636 *4c793f5f802f5c8b4468884b5d7d446688435f8544679044628a45688c40678c3c5d8743596d45 *62753a5e764056793e5b812b4d703e607e3c50723359713354663c5475364b602e4e6c32485e31 *49662f4f6c2a465e273f5e25415e2333421f34441422351c3644132333112235101f2f0c223608 *21360c162011212e0f24340b1c2c0c1d26091823091e1d0e1d2616262e0e1d2d0c1c1e0a212707 *121e081e280e2a3b0d181f111d210d2024091522141c2115202516202d132f361d2724151e1d1e *2121162021152228142027191f2f18242b10252a1a272b0c1e2311192014233213212d0b202910 *2027142332122222171f20141f210c1d20112126141c251527321922290f1c17121a1b1c252218 *23261a2224111e1d1a1f2e0d1f2612252a12262e14292c1b2739111e281427361b2b3b161f241f *30331c2d2e1e383c2031461d3741262e3b21312c22323e182b2a1b313a20374219323d1f303317 *26311d252e151e1b20202410262f0d232e0e2836132c3e1327390d1d27152a3c0d1b251022320f *1e2d11222a152435142d35142a311c283722302a282c2c1b272d1a272c242a2e1f2a362b383628 *3442324246283b3d263b3f2a27252d323c253934243c41212e282e2e3524322d1e313a1c271d1d *322e1a2b2b273336242f2e252e261d272a1e252c171a1419232213211a131d1b1521201423260f *121c0a1b201625271b27361b2f4116232c1429311520251e27321e3d4919233a192a3320252d1e *2734273e521e373f16384315253e1d2d4b1f2c48192a3f1c293a172c401c2d451b26321d2b401a *314212293f1b2b3e1e222718263b1e313a13242d1629361321281722251b2932172128121f2310 *262f0e1e290c2028081d21091e1f0c1b1e0a161f0915200d1e2705152001111d08191e03112407 *111504172002090f070d0f00060a00060d010610030b14000f0d00070700070d03080802050500 *0002000004000001000303000003010d0c00100f00010400010300030400020100020300060200 *080300010100000300000300000100020200000000000100000000010100000300000400010302 *0204040304000001000402000401000306040905020a0906070203080c00060903060305060a06 *0d0f040a0a0809080b0b0a0f1007131107111507101e110f16130a100d050a0c0f0c0a0a0f0709 *0b0705110a07090300060500020302040500000300000400000000000000000000020100000200 *000300000300000000000001060200050000010200010300020300010100030400020500020300 *030000070200010200030200000001000200000600060500040500000000000000000300010000 *000000000200000200000000020101010000000002010000020100020201010302050502010102 *00010304010000000105030201010000020004060505050407020b090305140e140b061b1f1a21 *2d26181e18252d26272d2937342d3d43453c4f513840443b4a4d434f5a4b5c6647596c47626951 *64785d646f5c676d5b697c56727e4a5f7357748b5b7a8d4a647554647f4a586e495c6e4b67814a *58714b667d496475475e7248626f475a6f435a6f4b5c6e55637f4d657a4d6587435c6f40525f45 *566639586833495a495a79424d633f5a72434c603b4c67425f733f5a683c4c6442526b3e4a5d33 *3f523d4d64344c5d424f673a4c5a34414f2c4656304b542d405021374d3240482e434d2c424f24 *44522331462e3c4b303d4226384b323b49243f4f303f4729404f283a442a39441c2d3d2e3f4b1a *27361d3e431f2f3a223e3b213f4d232e3221252e21262d282b35161f36152935141f2f0f223215 *2a36212c3d202b3b2322271c2e391822240e1e270b1d240b262d242c40212a381b18201829370d *1e221d273417252f0b1e2b141d22151e201b19210d0a0f080b1302041300060e030a0c0c10180a *171d07061408090c0f0a0f07121c050c1a01020804040705060905090a0309060d17180f060c06 *0a0e01080e050e0f02080e01090e081015050d17060a0908040b00030d040209080a0e06101d09 *080e04080f0b04070c0c17070714050b10040a0e000d0d04080c030f11010912050a180c080d19 *1d2207091d03050a01070e040b11060e160a111f7f9d8bbfc7ca354b723c5978425873374f7135 *52783655893859873a5c89375785395d7f3b52773a5685344e792e4d87385185395885354f7733 *517a334d7b374f7133486c2d4c7d2e48732d4e6b2b496c21426223416b28506d203a5d243a6222 *3d581f3d591e3660203c5d1e3d511e3d4f1f384d1f325723375b243756203d5821384e1b303d1c *33461a3350223b5623334c1b3550152f501f40591a394e192f50203a4d183341233f651d35531c *3052183d571f304c2037551522391d3d61172d44223a591c2c4a1c2d471a2f49183a591f34461a *3f541f415a2439591f375a2a405e23375329425f27486d223e622d4b6e2844602e546d3a527139 *4d7c3655763e59803e5c813d5a8741658a3b5c803d53723e648b375c8946658a3c5b8c45658d44 *5d6f3f61853f6587435c7f3e58843b4f84434c6d34587735577c364c69314b5f304266284d762f *4c6e304d6937526f26415a2a466525405c2943521c33471f303d1922281625370f1c2815233213 *25340b16220e1e27161d280f1425121f26061a2a0a1b29141c29081c260a1c1a141e29131d2713 *2129161f2714171f08141708121f0d1c2d0b1c2b0d1e1f0f161d0f0c1015161f131e2e15202b14 *1f2f1e28371c29291c282d171e2314192215232d0c1c270d182b0e1f3b0917251a2533191e2414 *191b0f14160913140c181d0a1d21121d2a131d26131c1d1a232419232912212c15252b161d2418 *253b1c2836182b4213232b0e222c16233716242f0d232e1b202515273a172531161f28202b2922 *2e3426303e1e3144223b4c233b4526303c1b2c291d2e3018303f212e431c2d36141d2d13233118 *2b39192b3e14282f1b242e192c3818212e1a222212283215283a16242b1119240d1d2a1b23331d *272d191921181d261829371f2c2c18202c17242a1d2f3221303227302f282f2f2b3b3e263b422a *373d272f482a3f4d242c332c2b2e2c352d2c2f30283b45283139243133273c3f25313422212622 *26282e292329383b2028322127251d2d3712201d181e1e191c12202726181a1c101d1f101d1d10 *1a25181c2018232c1a1e231e1f1e1e221e232c321d1f2518223112272f17253a0f22301d2c3b1d *28381b1e1c201d26141f23111c27141d2618314618293913222a0c22231621261e222b141c2e17 *263a1d25361924231923341524331b20311a1e241e2027131e280e1f2f1e243914232f14232b11 *27290c232915242f16192606090c09191f0a1a280b1c290c1c28040c15000b100a160a09101704 *0208040408010105060d1001060700040800000000000100000000000000000104000203000201 *000000010500020000010300000002000000000002000100000000000002000001020003000004 *000302000000000000000000000000000000000000000000000000000000000001000000000000 *00000100000301000002000000000300000100000902020600000204020704010405050501060b *03030700030802070406051110080a0b070a110712110915120b100a0b0e05030a09080a0d0a0b *0c0407070507010202050105060001000003000001000000000000000002000000000000000004 *000001000000000000000000000100000300020000020100000102000000000000000000000300 *010300000400000001020001000000000000000000000000000000000300000200020000000000 *000002000001000000000400000000000100000002020004020102000003000000000000000000 *000000000106000001010000010006000005000101010207090b0b02000d110c0f10051a0f071d *1d121d242825313f1f1e2729302e2a3a3b3648523d505945535943464e49535e4c5e6a50607047 *58624d6a7e56607e56687248515b54647b4f5b694d5b6d5872874d658454616d445e7b48606d4d *5f6e47507744516d4151683c4f64354455394a623a49563e4a65414e5742495e425c7037495935 *48553e3f512b405631475e274958444a5c3042532a404e33444b3c444e2f486a39475c2a3f5a31 *39402f4759323f542d3b47253b50273950273a44333b4f263240242e2f2535491a233d242f3f22 *262f20304120313f27313d232b361e3540292a371921291a1a23141e2c13213419202a171e2612 *1a2611121a17131d1f1e251419231b1b2b161c21182337171f1e131a241614171e18211b2d3114 *111f171a21161e27181d231621280f19231d132018131f1a23290c1820151d230f161f0b081c0f *090f0e050a170c0f18111a1319220d1c220b101707081705020e02000607020408040705020000 *020601010b0000070300090203090402060b0a0b0b0a0f08060805060502030507060906040c08 *080c09040509030304000006040901050903010c050b10020009080003060103100f1e140b0f09 *060a07040604000207010705080e0301060909090b090a13050b0102100901070b070e08081807 *070f090a0e09070d10050914060c08050d08060e0c08107f9d8ebec7c9305b852e527533598434 *5b7934526143567a3f557a345780395788335a8a2d52813458823660843c577e39577d3a57843d *64853b52802a57803a5572305d7c2859812649782c4e6a284465244c771d3c671e3f6c1e426426 *466822436428496a28416325425a1e3d611d455d1a415b1c3c5221475724405a264055273f5324 *415e1c3a4b1a416c1f42671f3f4a1f465d1f3560263f62233f571c3b4e1f3b57273b47203e5a21 *4c641a365c1e3e561f40621a36461831481d375a1e4158193650193c561b3e530f3357233b571a *384d1f42671b3d501c496d18415c2443622b465f223f5f2e4f6f2a4569254f6e234d7030526731 *5373345a79355278315674395b773f658a3e62872c597a3c5f86425e86396287436783405f8142 *60793f577547607d3f65903358703d5d843a52643559753253792957722a4c5d32557632587233 *4f6b2a4f732e506a3954642f577128435d21445b1e3c481e40560f26331528331e293c16283a17 *2f490d1f2705181906202b13232f06223508222f0d1d230a22300e1e270518220c1c1f0a1d2608 *1d290823260b151c152225172a270d21220b203008111e061c2713212609242c14202511242617 *2524151e1d162c2711242811202a132137162d3c193135162c2c1a2a380f2030182531121c2308 *1f2b141f2a0c1f2209162712202411202b0e232817293910223117233719253211262c12242d16 *262f162027131a220b212613232f1729310b1f261620231d2e2e1725230d252e1426310c233116 *2a3f1729412337321a2a241f3f4215292e2e32331c3d43252a311e292a202d341d242f1d2c3224 *3a42182c3518232a151e2109222e12232b15242f1228200d2a390f2125101d27131e240f242e16 *1e1f152c2e1020221c211c161a1e111e1f1d27261b2632233c4a1d27291c2b2d1e3132253a332e *383a26302d2a2425282c2d252e2f1e2d2f2627311d3a3d1f312b273a331d2d2c1f27282827261f *2933212b2c2233341c2929202e2d23262221211a1e2a20161d251a1d19181d1b191e1c13201318 *2a1f121e1a121d221615111718171326300d1919131c27152d42222e2918242916232f1b242b14 *222d202f3d0f2021071c1e12211e1121281725301b26311f2f410c222c1a2f450b2c3a13222213 *354118303d0b253a101d231623360a2433122c3a0c232b1224240a21280a21311513150f151f11 *1a220820290b2129071a1e071f2705161a051724030e1b050d14061821041018000912000b0f00 *0d0900050a00000104010603050300070800040400040500040600030000000000000000000001 *000000000000000200030400000000020001000000000000000000000000000000000100000100 *000000010000000001000000000000000001000000000000000000000000000000000000000000 *000000000000000400030703060200070000060105070002050003000004040201020201060408 *04040204010608050b08000b0a0a100b090a0f0709130b0e130e0a1406091409070d0509090814 *0a07060a070a0b03060c0306070201020000000200020100000000000000000000000000000100 *000000000000000000000000000000000000000000030000000000000000030000000000000000 *060001000000000000000000030000000000000000000000000000000000010000000000000001 *010200000000000000000000000000000000000000000000000100030400000000000000020000 *01000003010005010001020000010001020400000201000406060a0e071007030303010f1d1411 *120e1a2220222d2022251e2a373f29372d242728394f54323b403743512f475341596f424b5037 *49544150633c4d5f3f5060405371425d694d6a7b435865435b67425d71445366434d5e3c485b2b *394639494d304053344759264248263d47253a50343d4b2c3d502939411e3e4926353e1e384923 *3a452d3a4d26384a2132431d2835112d471e2d3b2433481623331f303f1e2e3627393e1e334413 *33441e2a36222d401a30361d26281a282b1e232f1b272b0b0e140e213119242f202d3f171e271c *262a152322191c24181c281527351a232f13212d1220220f1f2a16262f1722261c20241a1d230e *171a0c10181612170713190d1e1d11160f1a1d22141a1d0f111b0e131f040913071215030b140d *121c0d131817202b141715161e1e060c1500080a07191b081717091d1c020c0d0b0c161514100c *0d160c181e0e1e2607121c030912040c120a0f130709130c14110b181a030c0f050e10010c1300 *0d0e000504040708050a0c05090a050b16010816000b10040812040b0e0d130d0508090406080a *0b0b090810040614080910050a0c030e110a0b0b07091606080f091216010910040a12030b1c03 *02050a0a06090b0602010105040b00020900010700000301070b03060b00040401010703010607 *010500000500020c00021100040b050d0d040d1304050a07080c7a9f8abcc8c93d5b802f48763a *4e6f3a54792e4e7a3657883d547e335d793a5a803b527f39558d3b507d2e528b385f8d315a8d2d *5c8b3955802d497f334f813652792c5e812f4f75294f72244778274866244c6a2e456b2e476c29 *44711e3f5c23466d24446f223d5c283d572237691f416b20416320416820396326446b2143621d *3a4e1f3f581c36581c3457253f5a213e5b243c5e25415e233b54213d4e233f5d1f486c20335511 *3153223b5c25425a213f5923425d233c4a2035531a3357182a45102e512134541832510f2a501f *3758223f561d3b4d1c355923436824446f23406d294465274a7123416821455e24466a28406338 *55863557853e537b3b4f75345d7f3657803b628c3f5f85426287405e853b5a843f64893f648648 *57724465834562854362853f58824356793058782e4b6c3150783e53723050783457852d4d7932 *4361294f743049672c486327476e2743632c486b34475e293d59213b4e1f27451c274118213d0d *1a311127360c202d08162510152a11152312182e0c1a25101f330a1a2a0b1e28061f2e0b202f0c *202c0820380f1d3b0c142111212a0e24330e2126112c38141f2a0d1f310d1e2c1a181e151d2611 *1f2a13202d1d29340e262f141e29131f2f141d2b1d25241e212312222a15242617263a1122320f *18251a202819262c161a1d0e1e2f1c25291b1c1e0c14231d2936151c2c131a281c1b221415160a *1e200e1b1f131d27161b2513172017222f152026162d2f1b293e111f2a0e1e2b1622300e1e2918 *2025161f231e292c25273c1e374618242815222f282d2f172633172e3d1e262b212931212a3c1a *25321221321c29301a2f3e15212c18242d182423101a241620250d1c210a1a2011182117242d11 *2121121f2b1424331a1f2b191f20141e290e202816293018262f1a28261f23211f29271e282c26 *2d3124303b2639402e3b42333c3429373424413d23282b333f42292c2c253636212b331c202b23 *27201e251e2228242123272325241d201f1a1c13161f1e14211d171e1a162624181a131d181914 *1415131d1b111e28192429171e251421211b23281a18151c212d1925361e273a0d1e2a17222915 *2731141618121e240a171e132227101d261423300d192e171f331326321623280b192b15171c0d *121b141e2a0d19270918230d151a101e1c111813101517110e100c1216080b13060d1c060f1a0b *1d29081d1d04161405101c0612180f1925030d1e050e1a030912000b0b05141100060904000602 *000604000500000400000500020400000000000000000000000300000003000000000000020300 *000600010000000000000002000000000000000200000000000300000002000000000000000000 *000002000000000000000000000400000100000000000000000000000000000000000000000300 *000600000000000000000001000002000001010501000000000400030902060204020003000000 *0005040002040005080306030505090a0b0f0f03140f0413100a0806051011090a0a0c0f080b10 *0c080a0a050a0b0306080206010201010303000300000100020000000000000000000000000000 *000001000000000000000100000000000300000000000000000000000002000000000002000001 *000100000302000001010001000400000000000005000000000000000000000000000000000000 *000000000000000000000000000000000500000300000000000000000000000001000004000000 *000000000000010000010000000101000000000004030200010200010500000305080b06080712 *0d080402040f0a0c1c1518221513131a1e1d1f1f2e38382c3a3d2737482b38473c485b272d422d *3b4a28363c39404e374857284c642d48503947542f445b3242583a43583249573445532c435428 *384c222b3f203545283246242b341e31431a293e1a2d352438431e2d3e1c2e4c1a2431242d331b *283c112535182e411c2e371d293a182a3016253c141e30171e2d19232f131c2b17212f16262c1c *263120232a20212a21272c1d152108151e121e291216251517231a121c12171d15181a18141714 *14210b0b1a0a151e0d1920161f2b0d15200a09120a090d101218181d1f0f1c270c121e0706150e *06150b111010151a0c1217121521060b110d0e110e171f0e1d27080c13141218140d141312150f *05080907160509100d0d150f13190d0d0e090c1409080f0a0e1e120c130d131505121e1322290a *0e1a050309090a100f12160c0d160e0d1203041105070e040613050a0f00040801000605000606 *0410070a0f03000800000700000803020a03010300000003000604000302000701000800080e01 *060f00060904040b04020508000604010406060f00000400000d00000800030700000500000503 *000406000500000a00000200000100000500000000000200000002000001000700000500000900 *000800000200000100000100000004000403000401000601000d02000c7ca18dbfc8c93d546f36 *50702d50782e4f7032506f3b50833146793a5a763d587e335876345e7a3c577e3b537c3f52793b *567531547e37507b3158892a537c2d50722d5276314c7232496f2f51782b5079294a6f284c7424 *486f2a476929415c28435d2440682548671f425a1e3a632540641e414f213f60283f4e2736432d *3d542241521b37561e36651e3f531e3a4d21426520374e24445a213b531a37591d35521c42651e *3750233c5d23344f1e3c4f293c6423335324426429437321445e1a3b521b37561d3251193a4f1e *4161233e611d3f601f3c601d4152213e502545691a3b592a456d2f456d224a7330496b2e527a29 *476e2d55803052743e607c3c5a843c618c34537c295079335a853b6285375f8b3c57784860823c *506f3b5f813d59773258763765793857874460772f59803e587b314d763f4d7030557737567832 *587e2b5375284d69395d7c26486c2e47642347622e49682642611a324a2043561c2d3f1d272d1b *243d141e280d1e2c082234051c2f0c1a21101e2e141d250f1d180e1f2912181d06121f0611170b *17210a202e0e1d220a171e161e221b2321181a2b0b151a0f151a11131a161d260d181d131c1a0d *1f1f191e22151d2b1722211a2a3e1e232313282913262d16201d1a1f21191d23141c2a101e2d1b *1f2a0f24381126311520210f2021161f2a1c2023161c2314191e1718220e171d14242c16222514 *1c1a0d1f1f11171e1c2224161a1d151d210e1f230d1a221223251821271114202225360d22281b *253611283c1823291e27271623211b2b3a1d292e1f2239243a351d283a21313b1d273017282b1d *29231c2324181a1a121c1e18202d14232d112329151c26202722182a2711232318252d1f273215 *1c27191d2e0b14201722261d23271626221b232d1121211f2d361b1921212a2c22333623332128 *281b242c1e2129202329262930302d2c353c36331f2e2c1f27322530311d27252327211c282a1b *2126231e1f1f28321f2520222c251f251c1f201e22211e2223231c21211d211a191d13191e1918 *190d101b1712211e1a21241a20240c0f110c1219080e150b0d0e07120d09181c0d131d0d141410 *121a0b181f09151d0d15230d181b14120c09191e1012120b060910130f06090a08090e010a0e05 *1318050d0a090906100f08120908080909030b100b131d070d110a0e060d120c0a120f02070a0c *04050b0f0c050c0f010b1603100f040e07081008090e0c06090c06060c02070f00070d020a1600 *000200060604040000030302010905040400020300030101000200030204030100000004000000 *000002000000000000000000000000000000000000000000000000000000030000000000000100 *000000000000000002000001000000000000000000020100000000000000000000000000000002 *000003000001010000010000010001010000000000040001060005080404000001050400000501 *01050603020409030403030a05020807010b08050a0a07100d091212070c0a00060f0a110a0407 *0909150d05040a0502060206090106040205000001010002010000010001000000000000000103 *000000000000000000000000000001000001000000000000000000000000000000020000030000 *000000000005000001000004000100000002040300020000000001000002000000000000000000 *000000000000000000000000000000000003000005010000000000000000000000000000020003 *030005000006000000000000000000000000000000000000000000010004040208000005070604 *07070303000b1c1a0b110f110d1216171010141a111e182026271726301b232f21373f252b2e21 *2b3923292f242e353a3f57263c41263e4b2c3c502a43581f353324373c2d31322a3d4630304420 *30391e263b1e223416293d16243b161d221c262e1f2835151a26131920131b261b1d2912222517 *2023131d26152535191c261a2228131d3112151e0d1a241422252120220a131e0c0e1714141912 *13170d171917202712202b151c1f191a150f14140f161d19130f151e240c111a0d1c1e181e2817 *181d0d20230a121c0f0d150d0f110c111e0a0f170f121a0e121b0f23291c2526101312111a2b04 *090f0913170c0a130d121b1115151a1810120f0d0e0e0c060b0f0d0e140c131e161d2214131e12 *181e1314150d13141c161c0f0e1a0a131204040f05010b07040b0a0501050a090a0c0706090c05 *060a06020c04070f06081005050b090d0b06080800040705010809071405050c01010900000500 *000003000000000000000100000100000200000000000000000000000000000001000002000000 *000004000003000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000002000000000000000100000000000000000000000000 *0000030000010000000001000005000000000000030100010000030000070003799b85bec7c93d *59823350782d537d30568b3056852e547d3a5b81305772385f7f36537c33528438567e355e8a3d *60893860892a518231547d365280214c753150732e4d7b2f517c29507d2b4f67294b7023486825 *4a6d21426a2943641f3f64214366143a591f38541e34541b3f611b3a5420406219395d1e395328 *40591d405c1b3e592039551e41541c2d5023416a21385d233f621d36581e445a213c5321426020 *3b59234060173d66213f581c345920415f2146611d3e5d1b3b552143601b325c1c3c662749711d *43760e3b571939601f3e6319415e1d3f641d44681e446e1d3a601f39691d416a2149722b4b7f2a *4d73294e792a55852e55873759812a518636608c31598031607f3f608a42648936528046618934 *5e943d668e3b60782b55733453803b587d3d5278374f7833578c2950752c567628597c345c761f *497733577e27476d324469314d6b274c6c1d3c571d405820426d27424f29324416293e12253b0d *1f320d2338051624081a2b0b141f0a1018090e1a09152507152002152706151c031e34081e2c0b *1d270a171e0912210b1d2c0d1a240c0c17061620101a1f0811150c181f131c2306141f0e172216 *1d2811181c0c24300b1c25182732121827141e290c1f30141a2b14202e0a131d0c182608151609 *191c0e1d271124320e1b2908111f0f1b1f07171d0e1c1d0e2328091d2714171f161e2c141f270e *192213232d0d1d1d132530081f2c091a190b151f071a230d1a32111b25061a160b191e05171e0a *1616142027161c1b0d1826131d261520210b1d1e11242c142e3c20304123313b1c263121252a1a *30371c2d3412243216232b10212c1025300f1f2b102127151d2610232a061b1f0b1e27121a1c0e *1d241120240b0e1e10161f0f191a141d2b112127142228142b331726280a1f230e262b1d282b1b *1e201f23261d2328232c2b26313e1c272422393a2c3126242820242c2121323d1f24231d20231b *20221622212029221e222a2f1e1c201a1711201c1d191b11111810150f0a1510081716100f0c0e *07080b141813151816171a061112041317111d1e0a15191212130b110e0f121304101a07172112 *121a080c1009141c05080d0b161e0b1619081a24081a170b1d1e041016070106060709080c0e02 *0406060c0a040a1704131c0714140913160c120c030609091018050b10020d1707162203071200 *051101061006111505161f08191e04090c020910010b1400081100060f01081403111900111600 *080e00010a00081001040900020e00020900000100000400010000020300000600000300000400 *000400000000000000000000000000000200000000000200000701000a00000000000000000000 *000000000100000000000000000200000200000000000000000000000000000000000100000100 *000400000300000000000000000000000002000000000200000003030400000402070300030400 *0303010000000206010809000308020208000608020804080c070f0b07090a05160b040a0f0805 *080e08060c03060703070601060306030007020104020204000300000300000300000000000000 *000000000000000000000000000000000100000000000000000000000000000000000100000100 *000200000000000000030000030000010000000000000200000000000000000200000000000000 *000000000000000000000000000000000200000300000000000000000000000000000002000000 *000200000000000100000000010000000000000000000000000000000000010500030400010100 *010100040000030203000503080d000407041118010c0c020a0a121518141e1d11151513141317 *1018191d1f111e2718222f1a28331127390b1e2a1023321121271f273b17202e1422280f23311a *2c350d2330141a2d161c261c223214222c0c1f2a0c213c0b1a23111f2b122830121e2e0e1b2519 *19231318240a111d071014121b210c1d1e0c1a1e0c1a22131317121d2b121415141b29091a1f0e *181f0b1818080e1707111e0e0e230c0e1d03090e0b10180d171c041618151a1d0d14180e0d1206 *1522040b0d00131f020b1500080c04131402091106030c0c090e09091201070d03080c00050900 *081000040802020b02060806081001020800010801020501061203120e060d0d030e1301000700 *000503030800090b00050f000a1000010500040606050900000200000600030a00000800000800 *000100010300000702000100000500000300000000000200000200000800000200000000000300 *000100000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000900000000000000 *000000000000000000000000000000000000000100000000000000000000000000000000000000 *0003000005000000000000000000000000000001000002000005000006000007000005799683bd *c6c840618a2e5f8634537e34507f38588a354d7b384f7534527637538033568032527c3957803c *5479355173335772335781304e772e4a762f4f6f2f536e3154742d4f7b29477536507225466d28 *496429486f22446e243f5c1e3d58213d571e3e682543631f3a541e406720415e1d4166203f5520 *38581d3a5c1f375a25455e1c3b5b1e3b571f3f5c253e5f244366283658223e6b21405229456420 *3c641c3e552046621d406621425520425d1a344c1d3d5920365a2039571c3e5e233c5c183b5b14 *37561f3b531e47651d3e5f26446f2a466e23416421426729476a264b6a1f40641f496d2c507925 *466d2b50822c4b6f365a81355b7f3656782f587d314c7b335981425c853d64843762824061773b *588442598640618e42668e3f648a38527940607f2d50762b5274284c6a2f567433516f304f7b2c *4d772a54812b50793058852344622d48682a4364243e552442601d426820394d1a28371a2d4315 *2633131e2b1021350e22310a13250819220718240a18270b1b1f0d192509131607172006161d08 *172106111d0a141d060b0d020a1508131d0c171e0a161e0715150b15190c1e260d19260a1c2813 *171f1d2323182526172222181f271d242b141e270e1b1e181f250915170e151e0613160d161d07 *141a0b12150f1c260e151c0a161a0c1a210e1c270f17190d172012141d17171c141a1a0d1a1c06 *14190f1a1c141f1d10181a131c170a152213191e121a1713202e0d1f230b1f2a171e160c171e11 *1b1d141a181720250f1e260d2028151e26151d271c2627202d35233040202a401f272b222c3a14 *2a37111f24162929172735181c23161f211c2626141b21111b200f1c250d2127121f190b13170c *141b1418190d151f090b120a101d1220280c11110f141111171d172629171a1b171a1c141c1d14 *1f1c1121231c211e1f24191d1e1f20232522242524191423252425242225241e1d251d21211c24 *251c1c1f16231d1a1d1e1d1e13191c20201920151820131d1a0e1c17181818141717150f140f0e *13110916130c18100b0e0a06070c0f0c0c161215080b160c151b10162007100e0b19150515170b *0c180b080e0d100e0a16210b191d0516200b181f0a121508151a11131311171e101e29081a200b *1116070b19080c18071315070b130b0d0c050908080909060b0d031119091628010d0f03131404 *060706071507101304040c040f1b020d1704131805130e071722050d1b02040903030602091a00 *081701081600081704090c00050703040700030501000600000500040600000800030000000300 *070600000001010000000200000400000100000100080500010000000000000100000000000000 *020100000000000000000000020100000000000000000002000000000200000000000100000000 *000000000000000000000000000100000000000000020500000100000000000000000002020100 *00010000010007030006060001000101050506070806050409070707080b0a0a0a0709140a030a *0f080f0c07050804150a070e070307080403030406030102010000000002000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000001 *000001000000000000000000000003000000000201000001000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000001000001000000000000000000000000000000000100000000000000 *0003030000000003000200010307020605060b0b050912120c0e09080b090f15021213081a1807 *1212141a1f161d25131b171d1f291e2b331e202810202e0b1425111d2516232b1a273511192a13 *1e200d1c220a1c2d0b1a2406152003132008141c0e0e170a0c0b0c0f0f0f0f15080911060f1601 *0c1a030a1008101300070b04080a0812130a0b150c131d04090f00020902070b00090d00090a01 *050e080a0f07050804070e000409000309030b0a060805040b12090b0a08081301000302020501 *070b00030500050600070602000206000101000001000105030500010700000500000300010000 *000202000400000000000100000100000500000200000000000000000000000002000000000400 *000500000800000000000000000000000000000000000000000300000100000300000000000000 *000000000000000003000100000300000100000000000000000000000000000000000000000000 *000000000100000100000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000200000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000300000400000000000000 *000000000002000101000000000000000200000600000300000000000004000004000106000481 *a08cbcc7ca374c843152833a577d2e4e7534547d34507338507e2c577b2c5681425f8b3759843a *4e7f415684375a8139648d31577f2d5c8133507a324576315781304b7533557b2c4d722b52742a *4873294d702d4a702541642d435f2e445e24456d2448671f486a1e405d223a5b213f5f1c3a5a1f *3d5d223e691d3f6219415d223c542440571d47652242622134652540632043641a426c1b425f23 *436c2144641c3e63213f6e243e5c2b3c541a3d6b1d3a521f405c2646611b42642242641b3b6422 *3b5d183b541633521e3c65204662224065254b66214066294a6e27416a2647741d416820416628 *496f2a52782b4f7a3356822d568934537b3353812e5a88395c89345a7a306181325f843760873a *5d8c3a5a8635577d435f783c5e793855702f58823253734353763c5371355d843650713a59782d *47703150752c587d2746692948702b436c2a456d1c3d5e21435f2547611f44621c30491a2a4417 *25341a25371514270a1c27081b2b091e220b1f2409140e0a101e0e0f18070a16070e19051b2100 *1516050d15060d10060808050a0b0c1110091217040d1f05121c020b0e08171b0813100a161513 *10150f111b11171d0b15180d1e1f101a1e161a1b131d2318241d141e210d1929181d2b0d181e0d *181b0515170a1e1d0812120a1219111521131c210f1b220811160d151d0b181c0c1a1814181f0e *19250c1627161d2f131a2013181d091d1a0c1c1c0a1a17090b0f0a17120c110f11161a07112108 *13190d1a190a151d0c1a1d0f1c191518181721271b1d24182823132221131e201c201e2f352e21 *26321c1e1f1b242d1a2629161b22141e1c1219180f19130e1d2409111310172115191f0e141607 *172011141904131b101811121c1b15161c16151117151208151b09141d1820230a1310181a1e1e *2014151f1a141c181f1d171620221a221d18140c271d13232a262428191f271d261f181f222929 *2e2c1b22201e27241e232423211f1b201c1a1a1d1a191c1a1a1b19141118190f17140c121d1818 *1d150c150e0c0d0e07090b06060b08080b0b120d0a14160f0c0f0a0f120a0e1a13141813171c17 *1d1a110d0d061317111f290c1d2108130f0a15170b1d1a0a0c0d06101508191a0d131f0615160c *1a2009181e0c14180e131e08121b0a0d16080d1d121116090d100913140910180e12180c0f160b *161a0d0f13000b1a000a1b01091603080d021211090e18010917010a18010516030510010f1806 *100b03090801061000020a00020c00000801030d00000600000400000000000300000000000200 *000100000000000100010400000000010100000000000000000000000000000000000000000000 *000002010000000000000000000000000000000000000000000000000000000100010100000000 *000000000000000000000000000000000000000000000000000103000002010504000201000200 *04000002000002000200010000000200000300040303050306050209050307040f0b08100b0a0e *0807140a0516160e161111060c0d080b080907011002040b060207040401000304000300010300 *000000000000000000000000000000000000000000000200000100000000000000000000000000 *000102000200000201000800000000000000030000010000000000000000000001000000000100 *000000000000000000000000000000000100000100000300000000000000010000020000000000 *000000000000000002000200000100000000000000000000000200000000000101000201000200 *000000000001000000000000000100000001000101000403010700030300050503040200070a09 *090c06030a070b15090c13000913040b110e0d18030c0c050c0c09070f020507100f1505081400 *061100060601090a00010103030606010a00030b05030a04041301020703020501050604040102 *000201000500000400000700000800000000000000030401090501010801020703030a08030a00 *000800020500010400040100060703000501000603000902000100000300000000000100000000 *000300000003000100000400000600000200000000000000010000010100000100000301000400 *000400010200000000000200000100000001000000000000000200000000000000000000000100 *000000000300000000000000000500000100000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000100000100000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000200000000 *000000000000000000000200000100000000000000000000000000000000000000000000000200 *00037da28fbdc7c9395b793b5a753058773553832e4f773050803050753b59813c5a79405d853b *578233598b355878365276315d8144577c354e79354e7c304c6433526c2b4d74314f6d274c762c *45692f486a2e466a26457221456a21455e2b466329446e27485f264568223f5d233d5b1d3d5321 *3d62223c572240591f365424374c213d591d3f59223f57213f5e223f631f425a2542521c3e6525 *3c52223f651f3b5222476a1a3c5d2346651a34531d34501f3f52233e541e4267223d58233f531a *3552173557264252223c53153a641f4266223c651d3b63203d6222476d20425f21476a20416720 *3c672443671f4160274d702d4f7130546f2f49713456753c50733d5277395c8631528a455e8445 *527e325f853653783d67883f63804264823f5585375a852b4c723a597e2e4f693a5d8432506d30 *597d334772335672384c752c506f2943541e49641e3d602a49651e3f592241572b445f21394c17 *3846192d370d26350c2227092023131c220d17220f121807151a060f1404181e030f0d05151611 *14130c110d05100e06110f030a13081210091a1d06150e070b080c15140f120f0b192408090d05 *11160313150b180f091d1a152721141e17151e1e131d2318171d0a1318161d150c1e1e0d1c1c13 *1a1412121010151918161508131c0a11190f181a0c160f0a1711101c0d0b0a0d1516140e131608 *0f130a151111130a081a170b12090e16170e171813221d0b1d1d0b151a0e180d091a1504171a14 *1a090c161d0c111d11171f091b251218160913090a1e13151913151c131c1b0f1e221e23262a18 *20281f1c17111e1d151f17162016161a0e1314100f0e121916110e181a0b14140c16181017170e *150e0d150d11100b0d08100d181a0808130b09080a160f121f1d0e100e160b09211e14171a1517 *1a1318222a243323242c1e1b24201e261618231a21262427200f251e1c2420122129171f170e20 *2a18251f0d1e1e1017171318170d16170f1417171d2012181d16202213161a0c09141418130a0f *1b1612180e0f130812160a090a031111050b0e0712090f140908120e12090f150b0e130d1a1a09 *130f091c1f10161e100c0f110b0f0911090905000310180a1e1b081c19091a1e0b0c0d0c120c10 *131b0c1117060a10070d0e091014020d0c04151d09090f0b00030a0601090d0a080d1300060605 *080806090606060005060c06030403070605060800030800030200030300050601000003030800 *000000000000000200000100000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000010000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000702020101040200000300000000000101000c0300050400050a01090d060b *150e0b0c02110d04150a030b08030b0800100a030a09070d050203030104000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000002010000000001030004010002040400000201000000000000000000000001 *000000000000000000000000000000000000000000000000000000000001000000000001000100 *000000000000000000010000000000020000000002000000000000000000000000000000000000 *000000000000000001000000000000000000000000010000020000010000000000000004000000 *000302000001020002000000010002080002020507020605000300000500000000000000020004 *010004020002000300000000000000000002000000000002000004050001030002000003000300 *020700020500000000000000000003020001000002020007000000000400000202000000000000 *010000000000000000000001000001000302000000000000000000000000000000000009000100 *000000000000000000000000000000000003000001000001000000000000000100000000000000 *000000000000000000000002000001000000000000000000000000010000000000000000000000 *000000000000000200000000000000000000000000000000000006000000000300000000000000 *000000000001000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000006000006 *00000a0001859f89bec6c83553862a48823453803a598432527e3253822a518134558335568133 *507e3b5a8b34528a30507e2e4e7932558b355784345083334f7e30527a2c4d702c4f7e2e4b7328 *4e78254a7b2c476a284e76294a702a457226476f22435e1c426d2244711a40612142621d395d1d *365b243254173660213f6922395b1634591f3b5e16306022426d24426f1d3f701e436c2342661b *375b213d5b223e64234466254473253b591a37631e3c691837671f3b701d3b5c1d3665283c6820 *425c243b571d3561163c6a14415b15336518375f1d3b661e3a6024446f223e601d3c651f426f20 *3d731f4474204879234b7a23486d2a4d77314f82284b832a4e832c5080324d75395b8b2f487f38 *56803258733b5c7d3b56803e5c853c5a8d365b7a3257803f5b7f2e4b723858863552862d466b2d *4b763348702d4b72264b70344f77294f7327427126486a27498222426c1f395b1d3e5b1f436622 *395223394b1c2e541321310b1f38061327081321081424050a13020d1807111909091902071902 *0613030b1f00071003050b03091409050d01020a09162300091a05070f090b1706050c05050c07 *110e110a080d060e06040c010b13090d0f110d1b0b1815121317181e1b0c151d06121a0e151a08 *1419080e1f0b111b0b0d0f08140f0c0e0d0918180b0b13110b0f0d0f1a070c1709080c05101710 *1310040709030b0c08070e090f120e0c180c11140b0b0a03090808110c000c09070d1607030c07 *0615050c22090a13040a0f0513160b130e0d1d181014131412180c10141011191316161523231a *1f1c1e1f201c1f1e181c25161a2815121f0d131e15151614191f0409120a0e0f0a090e070e1b0e *0c170c0a181017220f0e17030e15040b100a0f0d0b0f1307081204040a07070e120e1a1217170e *121411141416170c13110f15150f1307111d24251c170d211d141d191623211a241b0f23272728 *1e1a1e19161e1d1d181b1a1f120d1215191e1e1a2225141214181f1a171613131115140d090a13 *1310120b0b0d0f0906080d0c0e110a03080f040806080e05080e04090603060c08090d06030504 *030904020700020a00000c03000302020004000301010500020b01030901020906060f01000300 *000002080902060508030b05081005000501040900000900010500020403070b02020600000301 *000402000404020900000600000200010801020800010601000600000600000100000400000700 *000602000701000000010700000600000100000400000900000400000000000000000000000000 *000000000000000000000200000100000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000100000000000000000000000000000000 *000000000100000000000000000000000000000000000000000000000100000100000000000000 *000000000000000303000301000002000103000000000004000305000400000404020403040410 *0e070f0e0f0e0505100802110603100a0909060e0a080605000409020304000002000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000100000200000000000303020100000101000304000400000000 *000300000000000100000000000000000000000000000000000200000400000101030000000000 *000000000200000001000100000100000000000100000200000000000000000000000100000000 *000100000100000100000000000002000000000000000000000000000200000400000500000000 *000000000000000002000204000400000a00000701000102000400000103010305000000000001 *000500000a05000800000700000000000000000000000000000001000100020b01000900000701 *040a00000401030600000000000300000500000401000900000000000100000300000000000200 *000000000400000300000100000000000000000000000000000300000500000100000300000000 *000000000100000000000100000000000000000200000200000100000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000200000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000200000301000000000500000800000000000505000200000401000004000506000504000d05 *010d0300050d040b88a295bdc6c935517938587c415c8038587d34578132577c3562833957842f *52872f537d3360812b628b34638d37558031537d3158802c5084264d7230517a3457763353732a *4d702e4f722f4e76264a6d2144682d516b294b6320436625466b27446727486d1e456926496320 *466d1f3f6a1740571e4666224256204062213c5b26465a203e611533531e436922437025486d24 *4a62263f6226465c183d5c20436d1f416225466b1d3f5023456226465b1e394f1f42641c3e561a *3d59183c58163a651f405a113d581f3e5d1c3d62153757173f57153965173c651e44681a486f1e *4c7225446823385f1d476c234b6e1f466d224e7f2b537b314f772f557b38517c34537f3158852a *538b375d87416486335f883b6483345f8a436689355c852a53812a51812643752e53802d4d792e *4d6f2b53722b5877274d6e305273224a6b1c4265204a6c274c6e234860234358234162163b5521 *3e5a2341571a2e46122629101c220d1d200b192007121e000a1403091b061720010b0b02111003 *0f0705100b02060601040000030203121c01040b01070d00090805120c07090806040205040204 *070b00080f030a09020d09040d090f0d06070a091608050a140f0c130c161e1a0a16160a100d09 *170c020909090f0b0b1013031411050e090914170b11130b140a090b070e0e06090a0507080604 *090b060b0b0a0b0c070c08060a02050d0707150e090e0b0a11040d11140c0d0b01090d0a0b090a *0b0202120b0409020408030b120e07140c08151805131207130d14150f0c1c131c1a140a0d0f1a *1e17111a10181f1a192021131e1c141e14111a0b121109120d140e100b0b070708140e020e0d06 *100906160d0816100909030008060f140b0a0807050607070e070a0903050e050b120714130e14 *17120d140c0d140a11120d0609090c10050a16080d150e151409161a060e110813130c171a0814 *11060c13050f1a0a0e1108130d031309000c120e0b160e0d0e09081509070d04060c010a0f060f *0802080a06030703050403030803010300010400070b0607060208080603020400010100030004 *04020202000100000b0803040100040403000605040b05000c05000400000600010c03060d0604 *030403000101020500030501000000000400000000000001020204000002050900020000050000 *000000010000000000010100010202010000000000010002060100020000000001040400030100 *000100000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000200000001000000000300000000000303000002010202010402000502000d09010c *0b04110f050f0f07121912070c060d0b00100a010404000607000f040002020000010000000000 *000000000000000000000000000000000000000000000200000000000000000000000000000000 *000000000000000000000100020201050000040001030000020000000000000200000400000000 *000000010000000000000000000000000200020900030300000001000000010003000000000000 *000100000200010300000000010000010000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000100000000010100000000030000000001000000 *030200000300000100000000000001000004000007040004060002060600000200070a00030a00 *040306090403040207050300010100000100000000000000000000000000010000010000000000 *000000010000020300030500000200000000000000000002000000000000000100000300000100 *000100000000010000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000010002000000000000090f0806030e04000605020401020402000403030503060801030906 *09080c070d09060c0c090c84a390bdc8c8305a832e58753a55742962823052882f557931568630 *54812c55812f527f3b5e8b2753832e558534608a31587e35598731578a3153832b4d8231568430 *527a2953752c55763054762848702e4d6f2445672b4770203a6a204672274c7021476924435e22 *43672141611d3a581f3b661d43691d456b1f49601d46701f48721e3e65233d61244065203b5817 *37532443681b355d2443671d3e641a35671d406524486a204269183a601a375b1d43631a426818 *4569173b5b1e3b551e3763143e4c143959183f66143f5c123c621b40661d3b5c25425b2040611a *3e6716446d16436c1b426c1b3b5b163f642e4c6d254c782a487a2b52782f5b882c5589284e7e37 *5b8335618c335b823b5c71375d85375d83395f862952803552832b5b822f5378364c71334c722c *4b7528507627537a244c79244a781f4466244259274e752342642244681e426b1e48731941691a *466b1c405317374d152b421b253f1e283708232c06141e051423040f1c06121202090b05060d02 *081600071502040e000409000c08040404000708000408020804000a0e02070603060600070800 *0909030c0b01100f070504060807050a0a030b0d070e1707130f090e0d07120d1215101112180e *13160d100a081210000b1201080c04100902090203050507070502090602060600070605060700 *0907080e090a09070f0a0708070706040803060b05050701030602090a070c0507040710090405 *0c0500070a010c0d000a0f010c0808120a0a100a0b0d0f091a181315080912100c161b11121417 *19171017141826161a1f1d161b14171710141f1e091417030e13030c07080f05040c0305050602 *050301030400010500030500060a09080500130902080504050206000006040500030401050403 *0508050a04000808070906050505040709070808111009030b0805160d1113050c11080c0e0c17 *130b1d1e0c07110a0a160d061210120c0a1012050b0c060d0d0c0707030f080403060500080c06 *0c0c00050601060104050102050100000002020100050401020700020600010100060001010100 *000001000000040300020300000100050400000100040000030500000101040400030800000102 *030500060900060100040200020300030507050700030501000000040100070801070500040100 *040200000002000000000100000000000000010000000000000200000500000000000100000000 *000000000100000000020000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000400000300000000020002070000030300010200000000010700020103030402060a080a0b0a *0a0a12100b050d07040b050a0a090f080c0b0a0b060c09050a0800020100000001000000000000 *000000000000000000000100000000000000000000000000000000000000000100000000000100 *000100000000000000010000010000000000000400000700000700010100020001000100000200 *000100000000000100000200000600000000020200010300030400000300000700000400000400 *000000000000000000020100000001000100000000010100000500000200000000000000000000 *0000000000000000000000000004000000000000000b0400000000000000000000040300000300 *000400000300000000000000000000000000000200000000000400000400000500000000000100 *000100000000030c00000200000500000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000002000000000500000000000600 *0000000000060c1800000800000404080f00040d050d1200050701030702000305020806041303 *000707050a03030a0000030a060685a693bcc5ca415376365685304c78305479355a752d507a30 *4d7d33597a2e4c733853813c5c822b4b763b5b833a587b294e76335e7f33558233587c34517830 *547f324e7a365079344d772c4b7d274a6f2945692d496d2c496c224b6a2b487229486f1e3b6620 *416d26335d24446725445f223d5e263c55243e612240621e3b6327456d21415e1e3d5a1d3f5f1d *3b57223b5b163350193250163b5b243d621b3a651c314e1c3b522137511f405c2942652436531f *315d183c601e3e5c1c36541e4266143d66233f631129521d3b5c1635561f335a1b395a172f5617 *3c6222446b21426521416024436822426628446c23496a1b46712b4d6b2f4c712b4b712b50802f *57842e5c8b325385385779335f89284f723562852d5079375182324f71355b812f58742f537327 *4d77324f752644682b4c82334d7a1e477e284869214969263b5229425d26425329455529435323 *3b5f2241641b35521436541a2d41182a460e24390b161f091321080a1b05060e00000601080805 *0908040a0503060a030106040105030306000000050b0700040700010000050601040300010801 *00050b02020000000000000007010103000008050300090400050e06040b04080b09050b0e0e0f *0d02060a050c07080d090c0902030a0001090402040504070702040b0506060203020403010005 *03010500010406010003030105020504010006030202000a00000a05070a020003070302070301 *09000506090605030300000a02000601000505030403040608060402010714090807030c0a0709 *0e0c1d190f251e16181e13141e141a170a17170915160a0b140c0d030004020504080706030401 *020400050000030000010000000000000004000000000000000100010200020001000007010008 *05000805000b00020d070403040008130a0a12000c07000a0b0810070213080111090110060108 *07090508000c10040c0801090b02130b050900010804020c080a090c04050d030407000e040106 *02000a040008050206010006020000020401010001030000000004000001000005000000000000 *000000000000000000000000000001000000000000000000000000000000010301020001000001 *000003000004000000000000000000000000000001000002000000000000000006000000000000 *000100000000000000000000000000000003000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000003000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000100000000000000 *00000000000000000000000102000400030001040300040100020100000400000503000904000e *030309080406090b0b0b03060a050d0a04060a030b030004010304000002000100000100000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000001000000000000000000000000000002000001000100020200010000 *000000000000000000000000000000000000000000000200000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000003030400000000000000 *00000000000000000000000000000000000000000000000000000100000a000006000100000000 *00030000030100020000000000000000000603060a000005000100000401000200000008050006 *000105020303000005000103010900000100000000000000000000000000000002000203000000 *000000000100000100000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000c0e170000000500000600080600000f11220000080000070b060907040a08 *0808110e0f0703100502050b000408000a819e8dbcc7c83459892e507d27518138537630557531 *5c7d3a557737597e2a50832f5783365880294f822b50753a557b3254853657842c4d782c4c7237 *5e802c528529507b264976234a7524517e2a4e7125426c28446b1f48761c436c1a43711e446920 *42631a3e5a164260193a5a1c4263193f601e3c6b1c3d611a3d6622435f1a446e1a3e621e426720 *466c1d3b67193658213e631f3f55193b5816365b183c5a123d6a2242651a37560e3158183c6d1a *3c631b3553183a4f112f50204363153a63113b5c1f3e6a1c34590f3c561941581a405f18385317 *34611b39601b3c60153f63113c66153e681b3f67214b752043702e4872274d73264b7420507c25 *4e7027547e2a527e3059883257813558822b4e7a28507d2958852852702f577f2959842d4f782f *5176234972244c812950822657791d456c153d611f435f223f571d3c641d43642343731737581b *3755203c551d34472336421d3a4c1225400b1f3501192a06141e000a0a010d0c00050501010501 *000100000500000500000900000000000000030000030000040000000400000200000100010200 *0000000301000100010500050100000000000005030206000304000500070900030c030207040a *0c0d090105040106030309000401010b040107040103000a0e0505050200010200020400020600 *0703000602000802010a0701010101000200000000020200020500040000030000040001040002 *04000005030000010006050000030004000002000001030104040c0c0509090a04040800040907 *0b0d080906050e0a1415081a1e1b1b1a120d160e0a100a02070901030400040300040001030001 *020000000100010000000400000100000200000000020001010000000000000400000000000300 *000000020100000001070100030000000100000100000200000100000003040100080204060007 *0b04040103090504000401030303070401000505000b0509020206090604040500030500000100 *010300000100000000000200000100000000000001000000030000000000000000000000000000 *000000000000000000000000000200000000000000000000000000000000000000000000000000 *020000000000000000000000000000000000000000020300000000010100000000000000000001 *000000000000000100030100000000000300000100000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000200000100000000 *000000020000040002050003060402000200000400000200000000010000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000003000000000000000100000000000000000000020000040400050801010300010702 *020600010700000402080900000600000000000004030408080900010800000602061800020500 *000700010100060c03060702040d000005000001000509040409000003060c1002030900000403 *0609030c0c00020501000200070400000400000300020802020800000002010500010301070700 *000200000001050d00000600000000000002040800030800000200000000000500000000000000 *000000000000000200000000000000000000000000030500000400000200000000000000000200 *000000000000000000000000000000000000000400000500000300000500000000000200020601 *0309030005050a1300000a00000401010605020587a292bbc6c93a57803a587c384e853a518129 *4e7d2a5379304f81305384345d8a364f80344e743a557f395881304d7a2e51883a5a8a2c56892f *51782b517538567925487a244373214d7e264c772c4b6c25457120467324456424405b21406524 *4d761c395914355c14385f183756193c5b1a3f5b1b36591731541f3d5a12315c27406618335b1e *46651e415f1a34532040571f385822416a1f35641d3c56213f5c203f5c2344611e40591b37571a *3b5a183662102e4f183565173b621a314f1b334d1a374d172f511731571d325b1d356112386217 *375a1f3c5a173f681b426825436b18416e23416429446c1f416f224269264b6f214e78214c7c2c *50772249702c4c772a51812a53822d4d7f294f7b2e55702e5282255289325681304b783053882b *517d30598624476f265076284d6d2241662644661c406b223c65153b6a1d4267203e5c203a5426 *3257203c521a2b461d3c5e192e4719313f10242d051c21091320020b1001070801080e00000500 *000300000000020003020001010000000000000100000300000300010300000000000000000000 *000000000000000100000200000200000400000000040000000001020109040606040407050608 *06050509050c0b030508010a060409010000000404000101000102020203020002050000050001 *020200000304010101010006010101010400000001030002030006040008010100010103030500 *00020006040207000000000501000400020a000001030500020001070701040501030105050307 *04000c0d060f08080a0c090c14101a1513171c161111040a0b040707040b030104040000020000 *020500000200000200000000000001000000000000000000000000000000000000000000000000 *000000000000000002000000000100000004000000000000040000070000000006000300010000 *000101000103010001000002010104000001000000000000000000000800010404000000000000 *050400000400000002000000000000000000000000000000000000000000000001000000000000 *000000000000000000000000000000000000000000000000000000000000000000000001000000 *000000000000000000000001000000000000000000000000000000000000000004000002000000 *000000000000000000000001000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000400 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00020000010602000f090f110b061917091612170a101302010a01000500000000000000000000 *000002000009000105010400000603040c08040c040608070a0d06080603020808051004000c07 *010d06030c04050c01040100010014170b0301070000000401040000000000050003030d120d01 *0706000507000000000000000002030b140d0b0c00030600010501040409000500000300000108 *071100030c03030a0c1c2300030902060605010410070a00000200050b04050408111501060c04 *01040a03060b01030a080500030a00000906041708041503070d0d1b1d08010a06000400000600 *00010309100b131d0c1218080c14090d1402040c020000000002000309060107060104140e0b08 *05030a080903000000000102010903000304010302020c01000701000706080c07030400000800 *00050000000000040404070000000000000a080e09040a03000300000300000000000000000003 *010500000101000002000800000000000000000000000001050300000500000300000004000200 *00000000000000000000020000000a080c000000070b0b11050d01000300000000000000000403 *00080a020918171d120b1408030503010505080f07030787a897bcc5ca37577f2a4d762c4c7232 *5276355374314a6d2a487731527731527f314f7833557d39587c305a7c395889405889375a8b35 *558631568c3155762f50722c53722848693448762647792b497425426221406e2243651f466216 *3d5c1b3b67223d6421416a273e5818335c1d365a163763163a671842672542641d36560f315d1a *375e1e3e611a3e651e3c571c3e581a31531c35521a2c521d2f531e4655172e4d152a501735501e *335b153154203a621c30590f2e481035560d2d4a0e3059143d621536541a3a551e36581c315211 *305116375d0c284f112e521a36571638531d41641f3e5d25446422365d1f446d264470294c8022 *456f2852802848722d507037537b264477274f762d4f82254f822757812854742147692d527e2b *4e8933537e264a7526477024457822446e28406620436d26437521405d183e561a426420405d1b *3c5b1a3b5f1d40571935541b34501d374e162745202d400a223808172108101c000a0d04010301 *000000000000000000000000000200000300000200000000000000000000000000000000000000 *00030000000000000001000100000100000000000200000400000000040000080200030906040b *08000e06020c090705050704050205050808000103000001050104010000030202000001000000 *010203000100000102000003010000010000000000000000000001000005060200010000030200 *030000000000000000000005030000020500000400020100030104030102040203020306040507 *00040a08090e070606090007070615120a16120511120a0c0d0d02080d05010800020800000000 *060000000000000000000000000000000000000100000000000000000000000000000000000000 *000000000000000000000000000000000001000000000000000000000000010000000200000000 *010000000000000002000000000000000000000000000000020000000000000000000000000001 *000000000000000100000000000000000000000000000000000000000000000000000000000000 *000000000001000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000010000000100000000000000000000000000000000000000000000000000 *000000000004000000000000000000000000000000000000000000000000000001000000000001 *010102020603040c07091106040506060203000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000200000500000400000900000000000000000200000705040b *0604080706110d071409071105081c070713080a0400000a06030300010806020604050d04070e *00010300000b090d0605060a080401000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000060e0302050000000000000000000400000000000000000000030100030400000a *0700201e1e0a080a17191620312d20241d2f3a3a2329301622231b171c0c071000000000000000 *010403000706080e251d1c1f19150d0c0c1414120f1a23171d211217250807130a0c0e0b0a0b0f *090d081019141b1d080e10070d1c1311151e232e0d08160301000c130805060507040b12131a17 *141c0505100c0a1c01000805000106060c09060b08040a080a080408160608180b071303040802 *020604091104070b03010705040a05040907050d04030d08070f0003080205070905030a0e160d *060c0203090000070a0814080b0d0506070907080d030b06010a03020601000800010b07020f0c *080f00000008070208080f08040e0709120a061202010f00000100000004020008040e0b090d0e *0a0e060a0a02041003031004010704010707080701000100000300000a03010a03011003000804 *000304020300000004000002000201000200000300000503010f04010700020005000002000506 *000400000100000200000300000200000000000000000000000000000000000000000000000300 *000000000200000000000002000000000000000c00000602040600001100040805010603000505 *00050300030200060a071406071304040901000400000207000188a294bcc5c7395f7f2e506a2a *507f3953742d527d29507d2c4a6f3055762a5084334a75395a803855833355892a5084395a872d *4e7529527e2e55763151702d4d7823467d284b732e4a752c54752b4c6f284e6e1d456b1a3e6a24 *446522445f213d651a375822436d1f40680f365510365919375815325111315a19304e13324f1b *36571630501c365b1535551539581b3a5818375c17324e0f325311344c1a334c183b51152a4f15 *3c501a2c520e2e49172d4b172e590d354f1a34501029491825390c21420c2c4f163b5814325813 *305018315b163a6114315216304d18355d1239661e416b183c6c184260254158214063224a7125 *476f223e6c26497429497d274e792b4e722d5f892e4d6d335c833951782b4776324b8229516d29 *47743253812d5777234b692246633149682b3d5f1b3f6a1b3a5f2040651d425e153b5217365117 *2f531e375317394d143c66193b5618354e152c41142d39102a440e22320b1625010c1a00050e00 *030700000300000000000000000000000001000000000000000000000000000000030000000000 *000002000003000000010000010100020800020200000000000000000003000000000200030106 *06050b0c0a0a0704050b020607080e03030a050602030100040201020401040604030000030000 *010005010004000000000000010300000100030000000000010000000000000000000000000000 *000000000000020100010000020001000002000100000101000100000501060900040201070105 *07000503011108030906000b07030404070b0b0b09150a0c110604010000000003000000010000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000100000000 *000000000000000000000000000000000000000000000000000000000001000000000000000000 *000000000000000000000000000000000000000000000000000000000000000002020008090516 *22180f130c171a13130d0a0a090803010000000000000000000000000000000000000000000000 *00000000000000000000000000000000000000000000000000000000000000000000000e11090f *150d181f212c323637494f3a4a602f4a631d3d4d213640121a21080c1003010301000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000001 *050905101709120c0f100a111316070c130408090704040f090f1a1e1514181400000005151525 *23242a2520232c1f29262222302e1c28261f20172921131d110a140c08190f07120a0a251e171c *13141d1e1e17151224251d1c180c1a191112130b01000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000002000000000000000000 *01040302020000000005000000000000000000000000000000000000000000000000000304040f *120b05020400000300000300000101040500000303020000050000000000000005010507020701 *000200000201030b000000000000000000000000000000000000000000000001070c0b06150f00 *0100030004070307171617080b0b020407020d10010703040c1100000304050012040714060a13 *0d0e16121324373d1b2227151d23243b4a202419323b382023291f253018222b0a061001010000 *0201080301070a0f20100d2322210f1d2d151f221521281e292728292b1c11160b0709080c0b04 *030b08121e0d15270d1c250d130f222c29181e2422293d0a112207041309111e0a12161d1a1c0a *0e0c1c1a1a151413161416130b0c11060d0e101415161d171e1a08090808090d0f0b1709010508 *040e02030d01010a03071100070800030604040503050c06080d040e1705050a09080c0206090a *0c080b1a1b130c0c14101210070e0b0c090c1015060a1206050d080b0e08041009050e140f0f08 *0b0f090e1d00000305050c04090b01040809080b06040607040b06040400050506070c0c0c140b *09100b0e130f0b1009030504050a020513090a1103051502000a0100040100020d09070b09100b *0e0d01040b00000c00000601000301000003000004000505050707000104020606040404000200 *000006010702000004010304000000000400000000000000000000000000000000000300000004 *000000000200000000000000000000000205050501000e00000009050800000200000000000400 *00020000050000010000060200030500050104060103070001060303088aa596bdc6c8345c8137 *54712c527a2e577532548436526f324f762e4c792c4f78275277324b7c30557f355a8130597f33 *54832c507c2f537b36587f30496c324c6530526f2a476d284b6f2f4d73274a6c224469152e501e *3d5a213f6b1d40601a39501734561933581f3a53163150172b4d1839501333501630411d395614 *2a410f2d511834571a3b4b173a58243c591d3d4e143a4c1e344f1d3654152f4b1c39541731480f *3051113a5a1540591e365217334912304c103257102544153050112d460c324c162d4f152b4c1d *2a4d1525440e3a530a2b4c0c2b4b1d36560e2d471528471b3153162d4e1f3b511d42611c426417 *37561b41652555752d4772274a6f2a4a77214e75284a75244f782b4c782b487035586f35596b35 *527724476a274b702c5076274d6926507029475826466d1f3f631f3d631e3852243a4c1a325713 *264c2c415718334b263941223f5d193047182d4a17314c1d3042123140112639071b1c02151500 *060400030300000000000000000000000000010000010000020000000002000000000000000000 *000000020000040000040000050000000001000000020100010000020200020200050103030002 *04000f0402101101050c0301080201060701050500050002040001070002000000000003000000 *000000000000020002000000000001000000000000000000000000000000000000000000000000 *010000010000000000000000000000000000000000000000000000000000000000000000000000 *020102040001040107050000030000070000020100010104030100000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000003 *00000000000000000000000000000000000000000000000000000000000000000000001a1e2017 *231e374b533947483855621a2c2c293a2722251a151f1401000100000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000005101620 *272a2742481528261839331c3a441c323319332a0d1d1e061619152a3314303b061a2204191b00 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000001 *01000706070c0e0e0b09070c0c070a0b0a030403020804050300000000070c070804070000000d *0a0809090a0f17132929241f241b081012080f0d14151219140a1e20151f1509131707120f0d35 *2d2e222220171d1e1306021c24260b110d08130b0e18130c14090c0a0400000000000000000000 *0100020405020609030001030401040503000000010200000303000b070102000b0d05090f090b *120b080806080c0d070d08091913000205030707040b0b070c09100a0508000004010013171323 *1f1e171112100b07060c080906020000030706050607080a0c0a0310160c0a0a02020317191c0a *130e040501090e0c0c1618000002010000000000000000000100000000000000010103060b1105 *10160206070810110614190b130e111518100c0b07090909030709090b0000000000000d110d11 *16121a160f1e1113282c2b111b1f1622291220260b11141f231d1a2525293b2e2a2b3b12121a05 *0607000001050b060307090c12100f1e1b1216171a17132a3238252a2b242c30141723100d0c0a *07030305000e1114131d240d1e231d282a1f282f0e1719171f26030808090d09020b0f0a0d0e07 *1213171414171d320b0b141214161716160c0d0e0d0d1017202217251c0d14140d0b170e17150e *150f0c090a0b0b040505030104050704070d0a0d07030e0a060c080a08110e1106000509100c0e *120d0d080d0a0b0d151b250e0d190a07050a12100d110e0a0b10050408060204080408070b0d03 *0706020a0f08060a00000000020000000006040600030b02000002000000000000000008030307 *05050b060306070d070909060a0e070d080105050802010a040608040402010300000403020905 *040802020207070702010408040406060c00000200000200000300000002000105010206020002 *040001000000000300000204000503060300010000000000000000000000000000000000000100 *000000000005010000000002000000000000000000000400000200000100000100000002020003 *03020100000000010000050000040000000100000203010202030100010600088fa699bcc6c835 *536f325472344a762e4d7d2e4f802b4c78325c76315385314e7534577f39527c3a5d802a558935 *5d8534577c3158782f557f375578234c6d284978294f7c1e406d263f67284e6722456e2542611f *3f5e193a681f396420355c1b36581a42671e375d1e3857102b4b132d4d182f5618395419314f12 *2e4918334416374d0e2b520f2d4f1c365916324a172647113152172f49112e4217355010324f1a *315c1c2b48172747112b49182b4414263a10324d0a243a1724331a2d490d2131142d430b254509 *223a0725440c284a0e273c0c25420b25490f2044162f4f0b2543112d461a324c163b531f3f5c21 *3e6524415920466a27416e214672294d75274768264c6d2d50752847692e5773325279324d6d24 *4b782750732e4f72244270253f5d2e496d264b6f2945622441602744661f4a711c41621d405815 *1e401d3a60183f6d213a4e273b5f1e2f481d3c5b203c52153252193b58172f440f2a41060c1e02 *061300030a00040500010000000000000000000000000000000000000000000000000000030000 *010000000000010203000009010000010100000000000000020300000001000001030005080500 *0002020407040704070b0406070004030100000000000002000000000100030200000000000000 *000000000001000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000005000000000100000000000000000000000000000000 *00000000000000000000000000000000000000000000000000000000000100000000000501000b *00030a00000801030000030000000000000000000000000000000000000000000000000000000b *29412049612743593150642849643042571d3e53264a6224496c1f374100000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000004 *09050a160d0a1b110f170e121c15171a1f1e130e1b231b0e14130000000614110d13121016130f *1d1600010000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000090c0e131d1d060808050405070a080000000000000000000000000000000301000c *0c070c050704060a10010011120d0c1a160000000000000c12041d1c16241e1d1d1a10171a1324 *1e1c26160e0104050906010507051c1f1713191a120b0c1d191312100f080e09060c0c00000000 *060a0e090d1e1e1c161e210f0c1406060704080a0103020708060a09050a0b0b06000202000008 *070510161a091c1a09100a0c17160b0b0c01000204070410090b0a0807010004080c0e1119181c *211e12181e10171b1210141512110a1c2415131516180e121d1b171c1d161319130c100b0a1519 *15190d0e130b161408110c0c121600000010090902000100000000000002040c0000040c12170a *13130911140906090306090507131116150b0a0c11101316181b09100d171a1b0a08070703051a *0e0f1a15140d10141b1a17202b23171d1f11161e16132121232c170f1d111a2118212725313a17 *1f1e0202020301010c07060d0e170f050a04060d090809161a142837372125241a202516171e0d *080c0e0a0e0c0c10111c21120d140807090909060b0b090d05061d141e1c1c1c0a0a1200020818 *1c1f01080c08161a1d1f27110a0c1915170a0c1608070c08090a08070a130b080c0c0a0904060a *090d0a010c05020a00040b0004060004000403080d090e150b0d090c140c0f0e0c151509090e09 *080c080d080c100c0e0c090d0f1a0b030d08060c0c0b0e070508090b0808080306000104000d0a *040b04010607031006070d00000100010003040300000308010601000602000304030400020603 *070a060a0d0801030502050b06080504080b060c04000b04000806090a091613040a0801000904 *000201000401000400000101040802040801040a00000300000201000003000501000501020b0b *0d1605010104040203000206000004000102040500000300000500000007010000000000000000 *000000000003000400000000000300000000000000000200000001000000000100000400000500 *000400000000000000000000000100000200000300000605020a0300050000040100058fab9cbd *c6c8294f6f264764284c7231455d2d365d314e7c2e557f305984315982375e842d507734577837 *51812e57842e5576284865294e75294f72294a722549772d466c2137521d2e4f213f5f223e561f *344f1d3a551d3a511f3b4a1c3341172c4518324f1b293a0d243e112644142b4517324b17293a11 *2b3b101f3813253c12294414344c172d57173b582039491d3f4b2137431d2e4a1c27481c2d4012 *1f39152b4617334b1b2b451c2b40152e441834491128390c2640193b55172a440b334d10293c0b *222a0e253a0c1b38092041102e480d294b102e4d0f2844112c50102951162f5119335b13335513 *35581b35611b42651b436d204262264b6f27486f24496d264a64234c692248642d5177334f6e2b *57762a4963294c6a265471274e722c4d6b2c4867283a5927475c264562243f57234067253a4e18 *3b5c1431530e2a5019384f213b4f1a374c1d37481d3c501429410d283f1a2936112d4904151e04 *030400000000000000000000000000000000000000000000000000000000000000000000010000 *000000010000000000000000010000000000000002000000010000000000000000000100050000 *030000000000000001000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000001 *0000150d0005030000000000000002000000000000000000000000000000000000000001000000 *000000000000000000000000000001000003000000000000000000000000000000000100000000 *000000000000000000000000000000000100000000000100000000000000000000000000000005 *000002000003000104050401000000000000000000020000000000000000000100000000000000 *0000000000000000000000000000202d301d060825312e0606030000000000000000000a040103 *00000000000000000000000000000000000000000000000000000000000000000203020303050f *1c1c1e26252b3127221e10130d050d120e00000000000000000000000000000000000000000000 *0000000000050a0410140c161f1d2228241f2b2e28352e2940432a3a4019313d00000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000070d0e1f393f1f455619454f193e571e48651643590b385201132500000400000300000400 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000c0a040d1414080c0e000000040804030601000000000000000000090b0800 *000304070b0000000201000b0a030c0c04120b05150c0503050506000029271721211330270e2e *28142a2622201a120f00042018101b18121a201c161e1e1a1e15251f120e100a15150f131c1805 *02030104010305080708070f110b0303010e04030000000000000003020c120c0b111000000000 *000001060903070214171412171e10141204090e00030009140d0b160f1b17110a0b0d0f160e1f *2d250f222115161a161f250c14170b16131414182027211c202717201a20252e1f28250e180e12 *13111c15101b190e17161414160e080a1006060516181b08040102000008030116130b070a0d11 *13180f18191515180d100d1c20240b0c07111b1816130b1b110b09100d1a1e261e26221f1c2404 *0308070600040300161f1e15121c161717171b1e14171e1f292e04070506120e171d171c24222e *3637232a28110f120501060d171111191211130d1b2022171214232c311f2d36191e1e21292d1e *1f1d000000090906141d0f0f0f0f1d1f200f10100c15140b090a0a0c071c1c181d241e1c151204 *0003100c150506060500080c0c0b0d0e0d040707050a030f090612020f0a080b080b0908060908 *04050f080301030307050506020104010109050204000a09040c1213140c0b090b0d07090b0909 *0a140906090a090e0b07090f0f140c0a060c13100f150c080e0c03030209090909030301010607 *0b0c141216030803060c0804080901000603000204000307010306010301030004020000000003 *000002000005030106000107000003030304050004080000040802000105000004000605040700 *01090402030505040a0a0900000001000001000106000303000100000003050007020100010102 *000003000005000003000007030700000301000003000000000000000000000000000000000000 *000000000000000000000004000005000000000000000000000000000001000200020200000000 *010000000000000003000300000300000600000302000006020004010004000007000106000395 *ab9ebdc7c720436d274c762d50702543692a4d6927496a2a4e773750742f4c7534527e3b52841e *4480255689305d7a294f7d2f4a743447732c435f284a6f2b4d601c436927446927415b1e415724 *3e4e24335a1b3b600f2f550d233d0a284c132e570d2648142a4a18284e11214913274809284b0e *31631c3050102c441d38491a2a411629471c304d0b223b071c380e2d4c0f26421a32421127421d *3242121d45172a3f0c284a0e294d0822470f29380d253e0e273f0a1e4011263f0c214205204507 *132105142b0c284209243a071d351221451221440e2b5709214507254f1435591129430d344a08 *1d36071f3e1e345a1f3c5e173a62163655233a621d3c5c243e591f3854233f6924436c1d446625 *4c73294d711f455f1f4a69264a691f476e23435a213f5f1a3f6a1d3c60173e680e3a5c183d601f *3054182e541a2a46152c470c25430f2c400e2b540e274219324e102c4b13274313294b010f2600 *000100000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000002000106000003000001000001000004000107020303000300000000000000000000000000 *000005070401000001000000000000000000000300000100000000000000000002000008010409 *090a0d1615110c0a140d0706040000030111171401020300000000000100000000000500000000 *00000100050c0c0709000005000306040500000000000000000008000000020500020300000003 *00000000000000050000020000000300000c070307020205080800000000000100000300000100 *000100000103040600000100000000000200000200000000000303010300000000000000000000 *000000000000000000000003000000000208121011090a05111600000600000403000404000108 *0701050a0800000000000000000000000000000000000000000000000000000000000000000000 *0001000000070e110e12121b1e1f1f221900000000000000000003000203000100000000000000 *00000000000000000009060c100a051317040c0e070b0e08130e040b0b0c170f070a0a00000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000201000c0a070c0b09110a07130b0b09090b02010803000402000100000000000000 *000002000002000000000000000000000500000300000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000a0f0d1616110f0d1400000004000600000000000400000000000013 *1916130b0509000415100c08080c1c14131210140b0d0c1d1e181e13081d0f06271d181a10131f *1d1d2316142718171a16090100001f1d15181612010001000000000003151e220c080c10100e0c *0e0900000101000607010403000700000400000400000000000000000003070a12191508070e00 *000005000605060a01010006100e0d16171d2021232a2f1e1f21171d1e18222811172002041306 *0404203038130a0e1913171c1f231b1e23080a1207100c09110e1010131417171d1d2305090e0f *101417182011152008080e09100c1117150f141712070d130d0c0d060b0b060f0c1f210b181704 *070b16181708070c0c0408110503111c260f101a0d0b15040b12100b070f13171723210f0a1c0c *1118050412080d0e090811181c171d20210c171713141717070c10091404000b09030811101821 *222016211d100f0b06030c060001040105060419090c10131223090b0e080c140f11130e0f1718 *13200e131f09000409040b14100b060f13090b0b111310140a0f110e14110a0f141515172e3e0d *1a210c070905000c00040600000305020b0805040f0c140205090a0803010507090b0b08000412 *0b0905000203000609091300000506020401010608040409050a0b070d080e0e040a15080c190a *0b110907080a07090503091007020e08080b0f1907090a120c100401090a08090c11120b0d0b05 *040c05020b01031008030e00001200000a00000503020606010600000300020803081800000400 *00000000000f03000a04070300030100050702060c060804050900000303000709000301000606 *030705030800000603000401000004000100000202000702000203000600000600000400000000 *000005000305000605000502000403000600000401000000000000000000000000000000000600 *000000000000000000000001000000000100000100000200000000000000000001000500000100 *00010000010000040000040100010c010202010500000400000607000608000703010805030706 *040c90aa9dbec5c72c48582643572c4058273f5c243a5c2f3b5a27426b2e5277334f7533567734 *54792f5681314f7c3053752d4c702446671f3e681f3c611a374c1f2f481a3a52213f5b1933501c *2a4d142c3c0e213b0f27451326380e192b0d1a390a152306142d06213c071c380821430f24370d *122012181d0c162608172d15273f101e2f0914210515220d243c061c2a10212e062140051c330f *1e2d14222f121e2c0c252d111c211a2036171e370d192c0f2035031b38070f2e0814270815340b *1e2c112440081e3f011a37051a3805172f06163209183006193307193d091d45071b3c0c194108 *274c08204013224713294d112a490c25481628451a2d57122b561434571d37540f33571d385817 *41591532571f325f18395d143a59172d4a1b385a1838530a3050192a4c0e29490e26480d2a430d *21400f1f2305162602182400102800091e03070e00071600030300000300030801030600000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000000000000000000000000000040000050b08000000030203050b0605 *0c0d1c202422242a181a140200001c17130a07080c05050b05090302040000000000000d01000e *030200000001000000000100000000000300000000000000000002000000000000000000000003 *01031716110a0702121108130d0a06080102000003020008070700020100000000000000000000 *0000000000000000070b0700010300010300000000000000000000000000000000000000000000 *000100000100000000000008010008000007020204040200000000000000000000000000000001 *000000000000000000000000000001000000000001010004080500000000000000000000000000 *000000000000000000000007040004010000000000000007000100000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000003 *00011013120401020d0707110c081e0b09141b0c0000000000000202000708050402000604000b *0606010000000000000000263f5d253c4d2a415d2447622945542240522b475d2a4359203e5400 *000000000000000000000000000000000000000000000000000000000000000100000000000002 *000000000001000025313c3a587e425f8342597b415e82485e77435f8046607b40617f040c1829 *37463f5d75405c7940627e101b2100000000000000000100000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000b0c0f16110f0a080b090c0b0c0a08110404140c0913130e18 *1c151a1a1814161c130d071918161d1d121a13151708051f1b0d221c1b2c2a18231e1325221725 *1e172a151a17130b1c100e261f1e0603050000000000000a0300060200000000030001150d0b15 *110d0b0d0d0000000000000404010201010000000100000609080a0a100b03051006090f090419 *10081105030100000304061f160d110703161f211e1e1c2c343a1a21242429251c1e24191e2103 *020a07070d11181f161617121615171c1a1017240c070e11090916141a10090e0d100e0c162200 *000008080616171414101a0b070404010307070b131811080e0d141c191412100c0c0d0a090a04 *0605080809111b230303070302010b160d0c0d0d090b061918140e0b0d0c090316120a1a17151c *1c22181e1c18171d1307061e1e182d221e1b1d1c0b090e0a0609141d210b130e05070a0f0d1213 *0c0c1719220a0b0e0208080000020301020704040701040804040c0f170500010609090c0a0519 *1a13140f0c0804070e070d110a0718140903090b00000002020307050508060313130c0c080506 *00000c0008000000000000000000010002090a0a0801060800000c090c0b120c05040806070d05 *0a0706040a0403050604060a080a0e03030c121007050802030505080b080c130909120c09130a *0a08130c0d14070e0f070704040500000403050b070307150c0c140d0c07040906070904050203 *080b00000900000401020600000005000308070403010000000301000300000301000601000602 *000000000005000002000004010907080b02000502000303000006000007000007000100000001 *000102010303000502010800000002000004000002000304000000000000000005000201000600 *000000000001000101000004030500000301010300000600000000000001000000000000000000 *000000000300000000000300000000000004000002000000000000000000000000010b01000600 *00000100000300000200000101030000030100060000030100030200010600000a000009000001 *00010400058fa89cbec5c9263a571f37591d38581d314f1c385824355f1f416c123a681d456d1c *4673234772234c7a20497821406c234270213c6d1830631a3f5e152f530e273b0c284612283e0b *1e470c1c480b193b061c3e03173e051c32062041091c3d05162906173703194504122b020a2603 *1338041c3f03122f031332081a2e0b1d3f081d35041d3403203f001534041a35001d3802162b08 *232f07142c060c200821320a1e3b0d2132051c38051a320a1e2b08152c050c2403162c00142f00 *162b000824030e21000b17000f1c000c22000a2000062802123100143b000e33010d2f02092301 *1630001536000f2b000f3300153200193b041e43021f42011b3604213b062247041d42061e4003 *1f4a042042021936031b2b0412340d1d2c062035082240000c1d030e1e000a18000b1d000a1500 *0d11040e1a00030a00000900021000071500000700050f02010800050801030403050a00081100 *010600000000000000000100000000000000000307020204060303030501030700000300000000 *00000000000000010604010000000002070000010003060000060200040000010002010b060706 *0b0b030b0c0c0d10141d2601000304000316161315140d0b111013151500040600010f00030b01 *040600000000000105070400000000000000010700020800000000000100010400000500010600 *010200010600000806060c0a130d0a0f0a00010000060200000000000100000000000000000000 *000000000000000000000000000000000000000100000500000100000000000000000000000000 *00040000000000000000000000040f0c0a08121102060500000000000000000000000100000400 *000100000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000100000000000000000000000000000000000000000500000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000010004010205090c0c0e1816070a0a00010100000000000000000400000202000303 *00030004050000010000000310193b5f7b3d5e7b2b4e6f25537a3157722c5b73275178355c7726 *4d6500000300000000000000000000000000000000000000000100000000000000000000000000 *00000000020000040000031627323e5b7b39577a3a5d7442637a3e617f4663773d627a3a5a7b00 *020c19273741617946668a465d7a0b192a00000000000200000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000000000b09100e1113050e100508100c080f0c14200b0d1303 *0d0311090510080a1213121a1314181e1e11181a181f1f0a0e151c160c1e17132a21201d1e1b20 *211816121318140f21262520201a261f11150a0a11110f12060800000000000000000000000018 *1f1d0b0d070a010100000000000000000000000000000700010700020600000000000000000003 *050509090c101015140b1516171f1a1f17171416121b1f162225232e2f12191e0d151818151710 *0e0e06000512110d11161a13151e0d1012121818161723181f2310110f0c0d090b0c0e09070b09 *161d080b0d080f1613232506101a0105040f0e110a0d0f0b0d0e0e182003060c02030a0a0c1618 *151c09181e04060c030309000000040d0a0d12100406090c1a28020a0d080d0e13141013080a19 *20220c17201115181d1f2e0a15181513151d22240915110c0b0b0404080c15150d262f02060a00 *041204040c0a060909080d0700020000070000020a1416060a1701050b0004070601030403030d *0d0a1c1a1e091317070709050d160c0b0b0c07080506060f101208040b00000300010509030a00 *000803010700010500000000000000000001000306010a030309030a1105080a0508090d0b0b06 *0b0d05050800030a0001090302090104100d0b0e10140b090e0f030d0d00020707010a0807100d *0d131b1a1f070f120b0d0e030b0d03020602000300000100000602000a00000500000000000004 *070700050802000700000400000400000901080c00040800000202010501000300000200000a00 *000500000300000000000000000003000000000100000000000500000600000600000500000900 *000000000400010403020c00000400000700000900000000000200000001000401000300010700 *020900000100000700000500000100000000000000000000000000000500000000000000000000 *000000000400000300000000000000000000000000000100000000000000000000000000000900 *000900000400000100000200000301000705000b06000a00000700000000000300000500000602 *010606020504020b8eaaa3bbc7ca2a344f2030551e31501d2e53203a531a3a6a1827461d29511f *375e234073233369204072233c73163266224269183960112c531b345716244d0e224d16233e10 *23420b1e3d091c3b0a1b3104122604132805153a0d0e300a1236040c2b0b153a06133204102903 *1629041935060e2a0a0e2f040b25000c2a040a21000b1d010a1a000620000118060a210c0b1e0a *091d040b1c000d2204131e050f250a121b060f1c070b1711132509122507121f08152f010b1d00 *0a2505071100061201041702041100061d01081e01071800000f00071900051200020f01061900 *021100041e00031700041900041900001602031d01061b000720000d2900072b00031a00081902 *0818010c15021118000a1c081324040d1a0f0f1e0b12170a141c050d12030a0b060a12070f1104 *0d1a02081e090b1d0a12120c111a0a2020081c250811270b1e290917250f252e17252c11232c1a *2c3313262c00000000000000000000000000000002000404000002000003000004000302000001 *00060202030101040405090c0a0b0c08080303010300000502030a050818070d180d0b1e0c0d12 *110b080d080100031c0d09221e1b1c11131a212b222a2a2c2a25312c29151b1201000000000005 *000b06000408010401000306030400000000000000000002000000000000000000000000000000 *000003000000000000000004000107000108000202000100000000000002000000000001000000 *000000000000000000000002000300000000000000000000000004000000000000000000000000 *00000000000000000000000000000200021307080c010605000400000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000002000300030900000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000010002130c0c2225280703030d04040000000000000000000200020701000b *01010300000000000000000000001418222d48521d3d40213c4a2b4a522c425a2e435d2f3e4f27 *455f27415200000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000030000111f2f3153683c62793c5b6f3f5e7e416079405e74405d7a2e *4b6b0000050b202c3a5874395e7f385a7f12182400000002000000000100000100000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000000000000000401060402060000010c0d111214151e110f22 *090a241e151b140e0c0a0c12130e130a091312142112181f171323120e251d211b181d352a1f44 *4230353424241e1820151523180d2018162f272b1212111a1a151a110e0201020a010410010205 *0000190608120d0f06060400000000000000000001000300000502000304000201010a04000100 *000000000005020008030c1816171e1e1f19131c1a1f1f131317151f341e212708080e0b070611 *11160404090a010509020a0804110b07071115100c0b080a030a090a0b141a2114080d110b1109 *080f0a080d100f110a0b0d0a080a07010a0c00060e0c150100010302010d100609050706000215 *0c0c0c0b140e0d1504081008010b0300030806080914170806080f0d160602040b050505030b11 *080b0e0c0a1a141415171e1e161f100c1216191d04040c0b08180a091009010605020704000007 *00000802040400060b1313060a150000000300000800000a02010b0203060206110a0816020909 *00040b080a080a0b0907040a01021412140903060a0004190b08060307050c0f0100010a070c05 *050706010306040e0000010000030000000000000d0d0d03000305000301000002000409020009 *01090304060300000405080c080b0904041306080800050a00080a000803030803050803050d06 *040e0500040b000409030908030804050c04000200000000000000000004000503000607000001 *000000000000010300000000000300000600000102000009030800000300000001020500010401 *000400000000000001000002000000000001050300000300000000000100000107000001000106 *000601000300000100000100000200000000000000000000000002000300000000000000000001 *000002000001000200000000000100000000000002010300000100000000000001000003000000 *000000000000000000000000000000000000000000000000000100000300000000000400000000 *00000000050400000100000100000000000000060801060201050100010000000100000800010a *00040a010a04000703000b90ada3bcc4c7253d5a1a30471c314b173a4a112f4c142a511030591a *345b1e335b163e5e20476e1b436c1d3e5f20425a1c405f18386811335d0b264d09213e0723390d *273e031f3504142304142a000a1c02081500091d000e1d000b1000080c00091a000a1a00011300 *041100051d00081f000914000c1700040800000700030c00010b00000800010b00040b00030700 *0b0a000b0a00030b020810000815020610030b1a000b10000b0600090c000d0c00020c04081403 *0809020808000c1b00080f00080a00050400030700000500000500000801030c00041000050600 *0a0f00060700030501080900060900020900050e000b10000917001112001314000714000f1201 *131e021821081623000e1e03141c031f29071d2c02172103161d071b1d07131a0b1c2902131e00 *161c041d24001f2800151d061e2f0f202f0a1e2d00152a00122101162b06242d00152303142309 *161e0116270c1b2500000100000000000200000000000300010600000206030600010000010200 *0705010a0a000708000809000608020509050804080a09060a0b061c1d0a17120c161e181d2017 *151d0b13150507080508091c1e180f181c08090a0c0b101620202a27242f3a321c14150b0d0901 *0306151a210209080a161102000101010004000000000000000000000000000000000000000000 *00000000010000000000010e1215030e0e00040500000300000000000000000000000100000000 *000000000000000000000000000000020d05000000000100000000000000000000000000000000 *00000000000000000000000000000000020911090d0f0807060404020100000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000100000000000000 *00000000000000000209090203050100040d11110f1513161c1600000000000000000000010600 *040b0400050000020000000000000101010010171e3c4f16364b23424e2344501e3b5b21424d1d *3f56173e4719314200000000000000000000000000000000000000000100000000000000000000 *00000000000000000000000000000000000407071614171e1e1e111113181319241f1e33201221 *1b11070c0b0000000000010c0608170e0814131205030300000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000000000000000000000000000030512020b120500060b0b151c1d140c *130f17170c1b2210142116101c1d141c201e18172625221e23261e20141c2016181e182a2c1d43 *372452473b4e4b402f221e1a1d171a1c121f2612211f14161a1c15171a2318190a0b0f00000007 *0c08010201000001040b0906090b05070a03030807050700050904050501110905080204090b08 *090e070c1510121311101504070a131b1c0a181802060a050c1313110d141215181a20150b0f17 *181d0811090b090502030207080a03020a0b0004081013050b0a00050502130a101b1c060c0c04 *0b0c08050a0f090c12111c020610000504000a0700080c0204070000000400030303080b091600 *030e0305050f0a07060e0905030106080705000409060a04070c01040202070702060606090904 *08120001070002060000090000050b151e080b0c121b1607090b00071503090c05040a09060800 *0406000508040d1200020600040504050b0000000000000302020102050205060107070001060c *1213120e0a0606050605050406050b120d0006080502040d070a0a0e0c0304061405060a060812 *150a0104020b120c00010100000001000400000000000205050300020500060b00000303000300 *0505010305010004020506040205030106000003000508070a0b06151009141008091101010402 *020806071400000202010a070d14040e1100030501000600020900010500000400020b00020100 *000000000000000201000200000000000300000100000000000000000000000001010304020a00 *000000000500000100000000000000000000000000000000000100000100020c08060900000000 *000100000000000100000000000000000300000000000000000000000103030100000000000100 *000300000200000100000900000400020200000000000000000000000000000000000300000600 *000000000000000200000000000000000000000000000100000000000000000000000000000000 *000000000300000500000500000000000000000000000000000200000800000200000200000600 *020400030400010100000600000490aca0bcc5c9232f471a2b48223052172e511421482035511d *37541b2a4d17375c21374e1e2c502540702339621625440b1e3507172703153304142901030f05 *071a06030f00041100000900000700000400000400000000000600000600000600000700000000 *000000000000000000000000000100000200000300000300000000000000000000000100000200 *000300000600000706000700000500030300030300040800060801040b03020b0606140b080e02 *0713010c0d04141a02131a03121f030b2406152a060c1d07151d021627010e1f020f2102182b02 *0f22030c24081733040a2304071d000612000b1a00041100061000000900000800000c00000d00 *000400000300000300000600000000000300000600000600000500000200000200000100000200 *000200000400000500000a00000900000000000000000200000100000100000200000501000900 *000300000300000600010400000000000000000000000202000504000900000201020b00010203 *020302030c04040904000100000102020901030a0001070d14180a19180d151e171a2118111d12 *0c181412170c12130506070a0c1216171e140e1b140d0f1d1a1c21272b29332e271f200e101507 *0b100502080b080a06000500000603000500000600000300000100000400000101000300000300 *000000000100000200000001020305040300000000000000000000000000000000000000000000 *0000000003000000000003000001000000000006030007000000060a0a00000000000000000000 *000000000000000000000400000000000000000000000501040b00000800000100000000000000 *000000000000000000000300000000000000000000000000000000000000000000000000000000 *000000000200000400000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000b000004000004060b0a0201000400010a070b01040500000000000002000009 *00010d080500000000000000000000000200030c04000c180d091c1c0b190d09170c0523170d2a *220f18100f120b0e10070800000000000000000000000000000300000800000000000107050402 *00000300010000000000050000030000080000070000051b170f1811071908051808043430183c *331828231307000400000000000000010100000113140b01000200000005000500000000000100 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000100000106080d130c0b0607070d131216 *151705050a171e281c12171f1616280c0817080e1718221a1c2a221f1d12131d1e1e251b121c28 *1a134f3d3033241d2b1f1b2d2b242e211d2728251a101524080c1d171b1a1b1a14131400000109 *0906231818010003000000170c1601000000000100030900010706090f0a060e06020b06000408 *010804000401010600070d05090a181511110c1e1411180b060f0900060d111700000014121f1a *1316050b0b0200050407140a000e10031704020d090b171310070c070803070b0709120b010c0b *07190a0b14090715191e2013181f0b080c07050b05070e0b010a0b031407000605050a04020500 *050901050600000807041111141e05000e01000500020d00020b03050c05060600020803041306 *0d1a14060f0000040000000000000001010500050c000a1008100a00040500000b0c0b07080e0b *192400071300000500000b0b000f02001405041006030a0000000103060103090000050f080e0b *05091108121c1f270201060500050601040a00050500090601060f030610070a0903090a091404 *0308080d0d05020c01000800000200000100000100000300000605071005040800000100000000 *00000000010800050802090000030000040302050000010000020600090502100b030f08040b08 *060a0a0c1303040a02000803000403010307010a03000200000700000600000100000503000c01 *000901000a01000004000100000200000000000000000200000100000300000400000100000100 *000100000200000500000000000000000000000000000000000100000100000100000301000803 *000503000300000500000600000300000000000300000000000000000000000200000300000500 *000400000100000100000000000000000000000000000000000000000000000000000000000000 *000000000501000300000200000300000000000000000000000000000000000200000400000400 *000100000000000000000000000000000100000100000400000700000500000100000300000400 *000600000602000b00000d00000d02000797aaa2bcc4c90b1e31071a2c0b1d1f082230081c2b0d *22400f223f0c29400f28401229470e223c061e36071a2e021823000c15040f1e00000c00000500 *000400000000000000000000000000000200000200000100000200000600000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000100000000000000000000000000000000000201000000000100010000030000000000 *0403000203020a06040803090a0907120f020d0e030b0a00080c000a0c030b0d00090e04070c01 *090c00070b04080808040804020000000002010000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000001202900000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000010300000200000400 *0000000000020003050405050a07000a060004020308080104080809060b1315171e1a191a1d0c *0c0d0a12100a151215190e0a07090a09120c090c0a0a0e0f0e0b121d16262a2f242d302536261a *1c1b0e040412171700050500020500030402040101030100010000000000000000000301000100 *020000000000000000000000000000000001000000000000000000000000000000000000000000 *0000000000050003010002000000030602000400000000040a000002000000000300010000001c *110c0c0b0100000000000000000000000300000000000300000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000001000200000c080705070a0c0a180d161800000000000000000000 *02000405020405060801000000010000000000000000000000000002000000000a12091108060c *0d0803090303020014110000130400000000000001000502080e00040500000000000000000000 *0000090b040b120d00010404020600060700050000030000010002140a000205070e0a1621100a *140a00010000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000000000000000000000000000000000105070811110a0b0b15 *13150808070000000b0d070d1c140f13051e1e101a150c151c141a16120c0d070001000a100e1b *1c1315171c2c29294349382e39263b3325403c282b2d271d1e12242a1e23221c1d1f21070b0e00 *0000040a07111a14000000000000121412060e0d0000000000000000010607051a1d10080a0c09 *0e0b090b0b00020700000009050315110b1115170f161a1b1c1a04070b11190f0b1b180b11090d *111206080a0702030000000000040002010c15100a170e090a0f030608040c0a08090c02040903 *0808090a091222250d171a060c11090d0d04060b020509010605000207111104030b0702090701 *020600000302000504060b04020601050b01070800050503060809070705060d0003090a090903 *080a080c0b14140a00020000000000000000010207070511131c0a12110c120d0004030a0c0e04 *0305030307040003000003000000060404090d07061210070f0601000201020606020603060907 *0a08000302051107040c08010503000000070607030d0b060206000501080a08100f0a090a0906 *02010e120f05081305020a0b060c08060800050300000000000000000000000002000417050f00 *000000000000070a03030000050006010601010500000c00000401000001030600000000060600 *0b0800020700020700000a00030d000304000905020c0b01080400000000000200000200000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000100071500000200000000000000000000000000000000000000000000000000000000 *000100000000000000000000000000040500000000000000000000000000000100000000000000 *000200000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000100000000000000000000 *000000000000000000000000000000000100000000000000000000000100000400000300000600 *000400000300000300000200000400000101020492aea6bcc6c90f1c220b1019040b1f080b1e01 *091a01071d03061e05091c070c22010c2202051400011100000800000300000200000000000000 *000000000000000000000200000000000100000300000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000000000602031a09031509011f0e03240f042018071f150520 *0e0c17080b21170e3121122c1e072f1f0c150d05291a0829140a1d0c0609050711080a180e0923 *1a09200f06170f02291e0e23130a2923140b00041e1713171105060302170c091c130a1a140a21 *150b1a090502000500000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000100000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000300000500000300 *000000000001000003030908091107051305010a04060b0002090004071413081916141c24201d *242714191f0a09100e0d190a100e000a0e070c120d0b0e1d24231e1f2026201e2c302624362d2f *29231f1f1f170c0d0a03080c050608050d05010603000800000300000100000300000001000005 *000103000000000100000300000600000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000001020c000008010003120b0a1408011a040024 *150e3f3f3a28242215060f11110f07050300000100000000000000000000000000000000000400 *000100000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000400000000000000000000000000000000000000000000 *000b0000000b040501000300000000000000000100000000000000000100000000000000000000 *000000000000000001000008000500000401000302000207060a03080b05030200000000000300 *00050200070100000500030502000000000100000000000000000000020000000303002127181d *240e172214251f13202517121c1500010400000100000100000300000100010600000003000300 *000100000002000304060900000100000000000000000007000100000000000100000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000400000000000000000000000000 *00000000000000000000010000000000000100000000000000000000010000000b08130b050d06 *030a0a090a1008080000000600021f1c1d130d0b1614151d0a0e110c0c17140a0b090300000007 *00011a12151e0e161d121734251d3d271e443e2a3f2e231c04081a040519121320171721121616 *0c0d00000007050600000200000011090d1e1a1d04030b0000000000000105060508100f0d0d0a *0a110e07110c091202040f16151d1b24211e1415080b1512120a1d16130d0407180c0b12131015 *1215080b160b08090707090100000500000400040100080f0a1500000600020400000006020503 *0509100b11120b16120a0f13101b0a15220e0d0a05050704000006000305000708000900000906 *000a010005050002000003010000080004010002000009000611080b16071014020706030d1004 *07060704070c0409100c1d06060a08030300000003000408030910090d0d040613090b05061109 *040d09040800040307050900000000000200000801000703010c02030b01000000000002010603 *00030702020300070f010702010902030b07010309020200000003010304010504000404000500 *000503050604040a0901030000030b050a05030801000000000100000803010800000500000003 *000000000000000105000005080a00000600000000000100010700000001000000000008020a03 *041202010b00000100000000000005020502000407000a04020a04000800000500010700000100 *000000000000000001000400000400000100000000000000000000000000000200000000000000 *000400000300000000000100000001000000000000000000000000000000000000000000000000 *000000000100000000000304000300000800000400000000000000000000000000000002000101 *000000000400000200000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000100000000000000000000000000000001000002 *000000000100000000000000000000000000000000000000000100000000000100000300000501 *000400000300010802010703000802000700000503000a90aca5bcc6ca00000800000600000300 *000000000000000000000000000000000000000200000200000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000000000000000b0900111403090c0a140f082b3210201f0e07 *0701070803090f02150c05261c0c100d050d0f060e150c160d070e1407080901131001121b090c *10060e1303150f020f1002090904061006181a0a04060313150a00010000000000000400000200 *000100000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000060300000000000000000000000000000000000000000000000000000000000000000000 *000200000000000200000200040602070904070705090b0309050b0906080d0b0d0a0a14151714 *1d2212211d0c1d1d0a1312130d0c0d1115050b0e06111011161813292b1e1e201d1c13181c1322 *262124201b2121273c3e3b1f1f1c161310091209090e080a120a0d08060b070702060403030400 *050301040700000000000000010200000003000405030100000000030101010000000000000000 *00000000000000000000000000000000010000030000000504011415101c110f272c252c3d2e2a *1e1a2b29262d3029363b2d392b201d1f16150d0809100c00000000000000000000000200000000 *000000000000000000000000000000000000000000000001040300030000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000005000100020c00000300000000000200000000000000000000000000000000000000 *0000000000000000000000000102040a01000000000000040002161612130b0900000000000000 *040107050108050003000003030308050402010800000000000100000000000000000007140819 *2014181c1612140b1322170b16090c120301010000000000000000000000000000000000000600 *000100000304020003000200000000000000000002050902080903030101000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000040106000000040400070605120c0a0b070200030300000000000300 *00010000000000000200000501000000000000000305060000020000000000000000000b09060a *0c0a040501040b0a1413140b0808100f0b120f0b16170d12100813140d0b0a071014141511140a *070a161216161d161b221d322016463623403f3144423a5446344840273727163f412e333c3f21 *18171315150207080000000000000000010c090b131b160a0c090000000000000002020203090a *0605091016060c0906090800000010110f1116190b161a010909060d1213130f0c0b07090f0a00 *0000120c080b1b1810171604050b00030900030402020a0000000a020302000202040203050404 *010403010e0608080a0b0d090507080d0c0712130c110b0a100f01040900020401040301040408 *0e0c06080a060907000004000001000000050006020106040707040e08080c0e02091303040e0c *060e07050509120e070c0b0b12130b100a140c090c1213070a121516150f0c130c0d0a120d0905 *161609070901020a00000700000102020400000103090704030104050307040600000600000001 *00000b0407030002010200050a0400070705040802010500000001000000000000000000000005 *0a0d0408080504090401000200040a0b070402040b130d02000300030901010401020c00000000 *000000000300000000000100000000070100000000000000010300010500000000000207040304 *030100010000010400000400000000000000000500000000000000040100050005020401060c00 *000400000400000200040903020803050300000000000400000000000000000000000000000000 *000000000000000000000500000000000000000100000000000000000000000003030400000000 *000000000300000600000100000900000100010400000002000000000000000000000000000000 *000500000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000100000000000000000000000000000100000000000000000200000200000000040400000100 *000100000600000400000800000402050802080904050807020597ada4bcc5c900000100000100 *000100000200000100000200080c00000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000200000000000000000000000000 *000000000000000000000000000100000000000000000000000000000000000000000000000000 *000000000000000000000000000100000300000000000100000000000000000000000103130d00 *0004010907000001000407000000000000010002000001000001030005000001060f080e0b0508 *0f0b06130800060400040500000300000000000100040700000600000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000e1d1800000000000000000000000000000000000000000000000000000000000000000000 *000000040600000000000000000300000000000000000000000000000000000000000000000000 *000400000401000401010503020900000700030a0001060702060b0a0d05060a09080e0a10130a *0d140f1218171a201d251e12171e070c150d121a0c1213010a0b070d16131e2622202615131b14 *100f1d1a15272a281f242727211e1c1e1e191213150b070b0a0b171a2112121409091004040800 *000104010502010300000000010301020300000301000700000600000202020401010403081000 *010500040d000007000005070e0d020106040001030404000001030001151a1e25291e2e31343a *3e342e281d303a3a382f30362f33323a39454348283b3f40413d17121007040600000000000000 *000000000000000000000200000000000000000000000000000000000000020300070700000400 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000400000000000000000600000000000004000800000000000100000000000500040600000100 *000000000500000500010701000000000000000200010500000000000000000000000400000000 *00000000000000040604080709080302000502070d080904000000000000000000000008040a08 *0c091c14071112080c0700080000090b0601000000000000000303050908030500000003000800 *000500000400000300010500000600000000000000000005030400000200000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000003010500000100000000000000000500000000000000000000000003000103000103010300 *00010000040000000c02050d080e070205000000010202020c0f06060c0904000400000602030d *02040200020200010000000002050a050802060a0100050600060a020500000000000604020800 *01090709140103050d080d1e0d0a19110d100c131017161d170d120c0b080c0c060a0b0c030713 *0d121e282e16120d16160f1512152a2d284240323b29164d49494e4a3d523d2943363a3f2f2447 *2d1f2f28281614100d0a0b160d10080001000000000000040a0b04050c0000000000000606070d *08100e081206050d0000070000040000020a0a12050206020106000002170a15051013070a140a *0c1504080f070b0a0c090c0c0a1401000700000604020800000200000500000204010907000408 *030800000a03071006040501060d00080a041618060c1308091804050f06010802000500030601 *040301030e000002000004000004030001040001000105000006000009090d1100020d00000a01 *000303070b09100e06080b02010801040b0a060e1216160d050a0805040b0c1213111815131811 *141803090e09060e00041403060d01040b00000400000400000200000703040b00000300000604 *040402010505020705000806090c04030a0400040e0b1103010800000006000300000200000000 *00000000010000060004080002080a04040100040000060e121404091305000302050f00000600 *000306070a0000040000000000000600000401070100090000080000020301050000010000000c *0b0f03010500000200000502000700000300000000000000000000000100000201000a00000700 *000400000000000000000000000000000000000300000300000100000100000000000000000000 *000000000000000100000000000300000000000000000000000000000000000000000000000c00 *000700000000000100000000000000000000000000000000000300000100000000000000000100 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000100000000000300000400000000000000000000000001000000000200000600 *000600000a00000200000000000201000300000500000b01000d03020e9cb0aabcc7c800000100 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000200020200000000000000 *000000000000010004010001000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000010500000000000000000000 *0000000004000600040000030200000000000000000000000000050400080a0205120404090300 *0303030c09000f0500000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000090700000000000000000000000000000000000000000000000000000000000000 *00000000000000000e260d00000000000000000000000000000000000000000000000000000000 *000000000000000102000003000202060b0000010607030e12090a0f10070808090a07080a0b09 *0a0f120d16141c230e0d0816120b0d110a0c130f131d1f06050b07090e0d1b1e1e2322151f1411 *0c0512150d1c1d1422282125231f1e1e1d34261e221e18221d0b212219201d1714101304000106 *000008050502040800000000000000000000000000000100000002010600010303040400030103 *01010200000000000a080300000100000001000602000104000113120d221e0f26201e1c1e162e *2e2c2a29222428252829253f402b3b3f2f3d2e243e43353e3e32625a5d5247331c131303000003 *000004000000000000000000000000000000030400000100000000000000000000000000000000 *000200000000000000000000000000000000000000000000000000000000000000000000000000 *000003000003000000000000000005030800000004000604000100000000000000000001000000 *000000000000000000000400000000000001000002000002030300000000000000000000000200 *00000000000605010b01000300000000000000000503020402000400000401010000000902011e *1c09222610373b2124231514190c1512031208011e1e0c00000000000000030302000004060606 *080500000003000005000001000000000000000000000000000000000000050304040200000000 *000000000000000000000000000000000000000000000000000000000000000000030800000000 *000000000001000000000001000000000000000000000000000000000007020003060404000513 *08070604040404030407060707050907080302000400000700000b000002030802030006020011 *07030b0702090903080a020a010404000004000004020300000101030101050800000004030104 *0001020105050306000000080402120d07120d0c12120a0a0d080d070510060411150d140d0a14 *170e1b16150f11131e180d1a0f0a1a0f0a361d13362d1c4a3f294842305d443e5c453155432b59 *525157483a423e322c21211c1914120e1017191502040200000009090800000000000001000212 *0a0b0b090c0c03060b08070704040400000500000e0f0c0500040600030f0d09100d120c0e020b *0d0a0b0d0a0d0909040202100d0907070901030801040600020000000000000000000014070e0d *0c1407060e02030c0006020008070803050c08050c0a090803040e0d1105060b04020604060502 *060305050203010300000003010204000503020503000300000303000000000103020201010400 *00000402030d050c030809080a090904000604040d040009080b040d0d0d130e10090e100c1304 *030204050101080500000000000003000101000700000a00000004000001000002030202000001 *00040203060802030602070608040000000204030000000b070300000002010700000400010400 *00000000000203010600040100030400010403050d080d04010604020408080500000008020306 *090a08090712040305030800000000000000000308020801030300040803010500000200000600 *000400000002000200000000000000000001080b00000100000000000000000005000003000000 *000200000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000b00000200000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000100000100 *00000100000000050000040000040000030000010100000300030400010903049ab0a7bbc7c800 *000000000200000200000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000000000000000000000070f10040b0500000000000000000000000000 *0000000000000000000000000000000000000100000000050604050301000a01000e07000d0900 *030300000001050000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000040000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000020000000000000000000000000000 *0000000000000000000300020605060303090000040103070d1104070b060a0a02090d060a0304 *0d040809080d0907140b0c12170d141d0f0c090603080b0f160f0c160906090b130d0e1a201e1a *181a080a080a0b0a15130e151d182c2d21231d1e38382f253028181e1421221e21281f232a1b1b *211d0e120c060401010001000105000001030000000000000000010702020001000000120f0c03 *00050208060202030002000000010001000201030200070504050204050d0a0a1e19131c23241c *23202e3a252c2622332e1e413328322d22292a2729251c36403f2d2e2a685d4c7e766a26160e11 *1e2102060301040201030600000000000004020208030200000100000000000000000000000000 *000000000001000000000000000000000000000000000000000000000000000000000001000000 *000000000200020800000000000000000000000002000007000000000000000002050a00000305 *040006090401000004000000000100000100000000000001030200000000000000000006000000 *000000000000000000000004040208080002000000000001000004010300000000000000000006 *09002542162f431b2a311021260a1728100c1a06232d182a371f00000000000000000000000002 *03040101060000030707080007050103000506000d070616120a0d0a0200000000000000000100 *00020000000000000004000309000c140605080400000000000000010000000000000000000000 *000000000000000001040500000300000001050004020000000000000000000000000300000100 *000304090503020001020304080504050a02080e0505030400020502000a0b000407010200020c *020212090703050603060305080a0007060302010709030201010401010803020b060600000002 *03060101000007040001020500010701030f0b040c0c0e140d0b0c070804090309090512100c14 *090217090917110c15130c1c1b11151a15251e1535281841352c513c2b473f1d4c473a58482c5e *523f6e65536255474b4339392f2c1c1a1817191414110b0e0c0a030001070a0700000000000000 *0000010403060708070d0d0c0910070a120c09091a1710080809101007070500070b0910110e10 *131806090e100a070c150f12100412121211140b05060400000300000000000000000002030200 *040508050700000b0100000102060b0b1305030806110a050b0b020605070b0904000100000206 *080605060a010102050e0a00000001010000000101000002000001010600010400000000020300 *000200000000000003030307050a000409000004020605060a0a090b0605120e16140e0e0a0f13 *141d08060600000302090800000000000000000003000402000400000205030700000300000000 *00040001030502040300010b060704000200000100000002010001000001000004000000000000 *00000000000000000000000b0f070f07020001000300010a080a05050a00040800000102040003 *04040004020502050a040505000005000503020100000000000000000000010000000000000000 *000000000000000000000400000100050700000000000100000000000000000000000100010500 *020404090900000200000000000000000000000000000000000100000000000000000000000000 *000000000000000000000000000000000001050500000000000001000000000000000000000000 *000000000000000000000002000000000200000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000100000400000000000000000003000002000000000200000300000703020608040a9eb1a9be *c5c600000100000000000000000000000000000000000000000200000200000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000100000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000000000000000102001a220e06040004030101000000000000 *000000000000000000000000000000000000000000000000000200000500000100000000060100 *000200000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000007120c00000500000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000000000000000a0e0800000000000100000000000004090200 *000000000002000004000100000300000300030b000405020b0a0307070200040800060b060d08 *0b0d0a0d0f09050614120d14130e07070804020514140e11120b0a120e0d16160c181d0a120c14 *1a171205091605030901031619151e1f2125242629231e1d1e1729231d1f16212b2823291f1e22 *1d1c171d2a272216131a0e1717101518160c050712070405000401000101000001000001040419 *121201010300000000000003000105000004000005020114120a0c08051306061d141126201f2d *2a21211b192b2c2132352b333f2d3b3822393a2e2c28212a27243a322d3c403a6a503c85775926 *23180604060200020500020b00030c010300000000000000000000000000000000000000000001 *000000000000000000000500000000000200000000000000000000000000000000000000000004 *040407020001000300000000000000000003020803000005020809080c09000100000000000000 *00000100010100020000000000030103060000000100000000000300000000000000000e0c0f02 *0a0b0000000000000100000301020c030305000005000402000303000006000000000000000000 *000000000016210d26411e28471d1d2d17213e172640173e3d1e06070200000000000002000001 *00010501060301040000000000010000000300000000030605060100040300020805010501000f *04040400000000000000000000000a160c0e200b010b030000000d1303060a0604080700000000 *000200000600000000000008040203000001000005050400000400000300000200000003000003 *000008030107070505000308050605040a04060401000008000004000004030309040104000304 *010603040a0506080e0b010806060706060b0b090a05080c09100101070600040705090a040500 *00000302040402040500000100010609100b040609080a12100a170d1210080915080913051216 *0c0d12131314131316120a130e0e11070c20181627211834221836221e422b1e4f493b4546335c *4f3c594a315d5240818b814a4b41372c261c1815181a1312120b1a1c1d04000006000500000000 *00000000000000040000000b0709160e0f130101120d0f1a191a09050907070a08060b0b060812 *0f090d0d090d080b16081208010a0b070f13070a0d12090804041109040600060200030400020a *0008040512070107100d06161e1f03000207050702000a0a000202010907060702000400000100 *010202010401000500000200000200000600000600000300000000020000000000000000000003 *000100000503000403020904020006030403010503000000000000000002000004090c130d0c04 *070a08080e1312150804110b040c0b0b0a05090a00000a03020702070702000107000000000000 *000000000000000400010004080904080a00000201000302000209020b05050c00000300000000 *000000000000000000000000000004000005000000010500000100010404000003000306000005 *020b06000500000000000000020804010305020000000305090803000300000200000000000101 *010800000000000000000000000001000301000100000000000000000000000000000000000000 *000000000000000000000000000000000300000000000000000000000004000200000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000200000000000000000100000000000000 *000100000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000101000500000000000000 *000000000000000001000000000200000500000603020704000501000305010507000508000a99 *afa7bcc5c900000500000400000500000000000000000000000000000000000100000000000200 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000300000000000000000000000000 *000000000000000000000000000000000000000001000000000300020500010003080307150600 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000030001343b2200000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000035 *4e3705100503000000000000000400030600020406010806020a00050a00060402030600050802 *0c0a090c06060b090c03050d0d0d1210090714130307080a161619221e171c0f17110d110d0d11 *0408151d180b110e0505080108031d1a0b272d1e1f211e21241d2b251d1d21202222272520181a *1c1a21281a191e1a201e1a181518100e0c0a030a06080f06070700000004060706090505020607 *0105020104040c110706090101000001000005010808040505020e0b0b150c0c1d171518241c27 *281e2527252024212f332c333029302d212d29232f2a1a2928252b2c1d262f233a382a6c635e8a *8672403a3212121601020900000001050303080300060301000401000000000300000400000000 *000000000000000000000000000000000000000000000000000000000000000100000000000000 *000000040a0000000000050000000000000000000000000203020000000a030300000000000209 *0c0a0000000003030000000000000200040000000001070100090000000000000000000000000e *12110000000000000000000800040400000c08030508000a070002010001000001000300000300 *0001000000000000000100163617172d0f213918233c1e1e3c1710270b00000000000000000000 *010302020901040507080e0900050802000707000706010106040100040902070902051309080f *030a06040700010100000200000000000000000006170c101d0c1d2b180b200a011c0800010000 *000001000000000000000000000007000308040001000000000000000000000001000000000007 *0104000000000100020505080a040201020a0c0b07050307000402020507050603000004060206 *01000500000c0201170f0a0e0808090708090f0909070c050607080d1001060704050802040902 *030c00000400000000000000030500000100000102010408010a0708080f0a0b090c080d14180b *0b071515121515121a0d0c1413110d0607131312130f0b1e150f221e163d3d3245403c47362a4a *403351585c59584a5d5c405a57494d4840322c20211f1d19171a100a08030a0b00000000000100 *000100000000000000000004070608050c04070701030a00050605070803050504040504020103 *00000504070105080d06090c120d0a06050d0d0e07090a120f0907030405070a02020800020407 *070402040206070501020417131106091100020900000000000706080e03010405070402040600 *000000000100000000000200000000000000000001010000000500000000000000000300000100 *000000000000020200020400000003000400000800000100000300000000000000000002010408 *050806060506060e0907130a0d0f0b0b070306040a0a0503000005000409000509050c060a0e09 *070502000000000003040304010101000005020500000502040900020500040304040100000000 *000002000400000700000200000100000000000000000001000001000003010701080a00000500 *00030a0e0f000101030604060a0800000300000400000200000503010000020200010002080300 *000205000600000400000100000400000000000000000100000000000000000100000100000000 *000000000000000000000000000000000000000000000000000400000000000000000000030000 *000000000001000300000300000200000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000100000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000100000000000000000000000400000600000600000501000900000802020401040601 *05099db0a7bdc4ca03050600020200000500000200000200000600000300000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000003000106130600000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000050a041e2d13010004010002030008000109000309000203000000040e0c00060404060903 *0408040207040408090c0c050704051109131e18010a0d040304150c0d13100c0c15171c201f0a *060404090b0b140f09130d0500011e130a1615101614172e281e2127181c1f161f241d231e1628 *24202f28282626251c1a1c18171a1e251f233129131d150f110b0503040904050a030a05050a03 *04050a0c120607070607050a10101917171215180a081309000500090511120613120d15221d27 *1f1a222427222b262424272e2921202b212a2f262c2e29313b2e302d2028211d32201e3132316d *534d9295813938292c312a080c0509050a08050602020600010900000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000600000000000000 *000000000000000000000000000000000000000000000000000100000000000000010301000000 *000001000000000000000000000000000000000000000000000000000000000004040901000000 *00000000010000000000000000000605000406030c040909020802000100000001000005040100 *00000000000000000a030603000301010310290f152b102a44210c210600010001000400000500 *00040b0806130c020606011107010c080622150f24190f120e081310170a0701140b08120a0410 *0a071d1a0d020101030001060001010004020000000000000000060d03243b180a1b0a00000000 *000202000202000000000000000000000000000002000007000002000503000200000200000300 *00000200000000000703030b000609050c0b01050604030000000203010601000d020107000411 *050a07040a0403050200000d0a091009060f0f08100c0906070b09080b0d08120b0405080a0d01 *09080107050000000000040000020300020000050000000706080a080a0d10081c1e1500040901 *0001070300120705120b0a0b120f0a1b1b1a1c1516151e262722433c3a3e2d27403c3f3b302e33 *403a4642313f483d4e4340594a4361605f5d5a5243413c3939241e211c1718180f111003000002 *00000000000000000000000000000000000505050000010d0811120b0c0b060800000004070b00 *0003080403050105020209100807180d04191c1d06080e00000002030806090a00000003020500 *00030a000002000000000500000900010300000003000200000002020203060e01000705040800 *000200000100000200000200000000000100000000000000000000000100000000000000000000 *000000000000000000000100000000000000000000000000000000000000000000000000000000 *0000000000000000060b0507121208090a0c030708040602070a00000101010410121409080a07 *050803000200000204000303000400020a00000001010300060500000107020700000204010203 *0002000002000206000100020100090b0707030d03000500000e00000c00020500060502030002 *070906010205020b0a0b0d050409060411000001000100050c0700020100000006000300000204 *000400000600000100000000030500000000000200000000000400000400000100030200000000 *000000000006000200000000000000000500000100000000000000000000000000000602000000 *000700000100000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000200000100000000000000000000000000000000000000000200 *000200000000000003000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000100000000000000 *000000000000000000000000000100000400000400000000000000020400000400010804000500 *000a0806139ab0abbdc6c60804070e0c07060c0900030600000100000200000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000100000000 *000000000000000000000002010100000000000200000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000004000400000300000000 *000000000003090000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000120e0738422300000300000000000005030003080300000000000000000000000000000000 *000400000000000000000000000000000000000000000000000000000000000000000000000000 *0000131c1412160e152016020005030505030b0700070503050403040e02010a09000705030b0a *040806070b19130b12130e0a090a0a070a140d0f13180f1314160d131415130c211f141720182a *22160a04060605080000020000000000000a000404000604000229291d2f2c23252a1e2e282220 *17171d1819243328212622211f1622231f243036222b2a1e2b27191b190e070919100c15120c0e *0c0515110d130a0c0e080b0a050d10070f0406030201020000000200010000000c0d0914110d23 *222022252222211d1f262a22221e22221a2e26122d271a393825362922372010291a0a25282a29 *2a21574539928d804e3f333a362d33261d140f0b09050500000000000000000002000002000701 *000600010400000000000000000000000000000000000000000000000000000000000000000001 *00000000001d202100000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000000000000000000000000000000000000002030000000000190f0e3d *412a0a09030000000000000000000000000501030a06040300020401010200000700000500020a *0408070003000000000000000000000401020000050000131f0f0b140b00000000000004040406 *010100000011120e130f0b170b0b1e14172017141d15161d1409191e0f1d120919080f27140f20 *13081f160c180b07140e0b01020302020105000103010100000000000003000000000000000000 *000000000002000003000003000104000000000000000100000200000104000001000000000002 *00010000000300000000000203030004030607080b060707010006010110070108090900000201 *000109040507080b070100060204110609100a0a0d05050d0d09090c0b0e0e0c090b100a03070e *060905030607020a0100020000050000000000000000000000000a050709050a0b0305140a0b08 *0b0d08070707080217100e090b0c1a130f0c050b0f04071111131e2128262723231e192b1e1729 *1a2033261e3f36314238273a3f3144453c53483f5158484242374e3d33472b23281d22160a0f04 *030504050400000000000000000000000000000001000003050b08111905070a0000000300010b *06070800000801090803050406091911090f080714101206040708020008020002000000030400 *000201030702010200060000000004000400000201000700000800000500010300050701000003 *00000000000000000000000000040000050000000000000000000000000a010301000300000400 *000000000000000000000000000000000000000000000200000000000000000000000000000000 *000000000000000000000000000004030b0d040c0b0d0c03020404020705040d08070300010b0b *080d0000090000000004000100000300000000000000000400000600040700040000000000000b *08070b0604030005020103100f1105031101020902070d01020700000800000100000301000000 *000201040f01020e050b1408070800000305020602000200000307000102000100000500000000 *000003040901040900000001000300000300000800000000000000000000000000000000000000 *000000000000000100000000000000000000000000000000000000000000000000000100020200 *000000000000000000000000000300000001000000000c00000000000000000000000000000000 *000200000000000000000000000000000000000000000000000000000000000000000000000200 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000200000000000000000200000100000000000101000200000300000200 *000402020806060f99afa9bdc6ca251d121c2d1413230908150604160907080508040302030407 *080600000000000000000000000000000000000000000000000000000000000000000000000100 *000000000000000000000000000002160b00010000000000000000000000000000000000000000 *00000000000000000000000000000000000000000000000000000000000000000512040c1d0800 *070200000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000090b0000000000000504000f26111a332500000100000000030600000000000000 *000000000000000100000000000000000000000000000000000000000000000000000000000000 *000008020228351c000000000000000000010304070b09000005000006030207070e11060e1000 *070a030a0d00070b03060c14100c090d0d070607030a0601090b0a150d0c090c17131114191017 *1d101415140004000b0600010602010201090508090c0e100809150c0c232924262914181c152a *2e1c1408051a1711201d131e1e201c18181c201d1b1c150e16161e261a212925252f2822272614 *0e131f100f15140c1c1510080a0c1616100a0b0b0811110b0a08140a070c0b0c0c0c11060b0217 *131421231e1e26172023201e1f1827241d292e2732231922210f2124163239262e2f1c2f241e25 *221c3a2e264a48429a97824f4533382e243634281d150b0e08090905060a0407110a0a05070902 *05030201000503020808070505080000000000000000000000000000000000000000000b040900 *00030a040503000003020303000000000000020000020700000000000000000000000000000000 *00000000000000000000000000000000000000000000000000000000000000000000000105060e *0d0c1f2d2d1f1d2200000000000000000000000004000003000000000201000100000200000203 *010102000000000000000000000000000002000000000002000101000005000000000006070004 *00000000000000000a0d0d0d0603110d0411110d19170d1d120f0c0407140c07140d0518170d1e *140a1a140911120c15140512130702000101000002000004000000000000000001020200000000 *000000000000000004000000000000000000000000000000000000000000000000000000010100 *000000000202010000000107000007000008000307020103010002000006000201000004050004 *02010300000200000000000301000505070b080a0a0a0609090607040209070a10070607070701 *01030a02050a0605050f0c00030200000100000100000000000100000104000201000103090708 *17120101010105040703070c1113100613100a06040302000806151e131d19201d191727221b22 *261f322a262b211a423b27484e41504c4b4c43434a483b483f3944352b574a4272664946444008 *060500000000000000000000000000000000000000000000000000020000000300000100000003 *0002070407000005030a000002030100000605020a0a0a02081400000100010900000100020200 *000000000000000003000100000200000000000500000000000000000000000000030500010c00 *000103010800000000000000000000000000000000000000000104030a03000800000000000000 *000100000000000000030400000200000100000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000020a00030901000700000400000000000000 *010200030700000000000304030404020704000302010100000000000001010000000301050c00 *010903050504040602030300030300000300000000000100000000010601030905020900000000 *000300000000000000040800000802020503000300000000000100000000000000000000000000 *000000000100000300000300000000000000000000000000000000000000000100000400000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000100000200000300000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000002000000000000000000000000000000000000000100000100000000000000000000010100 *040602000502000400000a9ab0a8bcc6c82e44263b543b4254332e583c3752383642241e2c132c *37172947201e29131a210d08110902000400000000000000000000000000000000000000000000 *0002000000010000171e12192a15020c0600000000000000000000000000000000000000000000 *0000000000000000000000000000000000000000000000000000000000000000050a0714101203 *000200000100000008080500000006050403010000000000000000000003000100000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000040800000008070200000000000000000000000000 *000000000100000003000000000000000000000000000000000000000000000000000000000000 *000005060417311e0206000100000e050406030809010608010304050a02040703050900030d08 *00080a010908060e090105060102090b0e0b0b0a0003060b010812030d0a0b0f0c091612040511 *0d0d12161004010300000009080f0600040900050a03081c060a1f130c26262733342c1b131423 *1c1a3d38362521201711101d1714171712211c15211815221b171d151b2524202b2728281e1728 *262617171b12150e1c16141a1c1c251a1c1b26271e161d1e1316100c0e1b19172522171b14131a *100d24150e1f161d20161a201614201c10211b183a2d233526162a1d1431201d402f2340302730 *2825372a223f322b5f402fa4a5a64c453e463e423e3935342e2d2111121c0b0a160a0b0d0a0f12 *090f150b131f18181e16111e0b0a19110e14110e1615111d1912231c121f0b0e1e131128161520 *1a1f222121292528241a1a383a2b422821433a3a45424225201c2217140a050c13040e12030802 *000000000000000008010200000000000000000000000000000000000000000008020a0f010415 *080a1a10153b373d2a21240a040400000000000001000001000008000104010701000100000000 *000000000000000001000000000002000002000002000002000009000101000300000006000301 *0003060005050000000000060000100604120a050500000000021e0d0d1709081104000f000016 *0d091d160e180c091203061b0e070a030402000100000001000006000003000004030405000100 *000201000000000004000000000100000001000001000000000000000500000502000000000000 *00000000000000000000000300020200020700040a040105000303000208000306010309000301 *00000b0006040002050000000000010000070000090504050006130b140b080b14080a1204090a *05050901050a080c0b0d0d08060e00000500000600000000000000000000000103050605050505 *000203000a0800070700010100000b020306030501070703000306061307000c1a080f2a1a1817 *110a1e1a201d150e352a263a362f47382756423a524639482f22584f3d493b345b533f6d5c4f57 *403c1a0b1000000000000000000000000000000000000000000000000000000200000002000000 *00000000000000000906050a00060a040d0500090606070400000100010905040707080200040d *000104000002000507091808030b00000000000000000003070b02000200000200000404000400 *000200000000000000000000000000000000000003010d12131e0d0e1400000002030700000100 *000400000200000000000306020e00000100000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000301000001 *000807000b02000a0400040a000004000202000100000100000300000000000301000104000202 *000000000000000000000001000102000500000000000000000005010300000100000100000000 *000100000200000000000000000300000000000000000000000001000000000000000000000000 *000000000000000000000000000000000000000100000200000100000100000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000100000000000000000000000000000000000000000000000000 *000000000000000100000000000000000000000000000000000400000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000200000000000200 *000802000b0100070200030400019fafa9bcc4c930442917422517431e254f292951262b573035 *6035345f333156344267382f592e0d2909000800040e0217240400090100000000000203030026 *260f2e380f0e1e0300000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000000000000000000000000000000000000000204020d0e0302 *0d07000000000000000000000000000000000000000000000000050d0200000000050200000001 *0400030400020f050c1d020822060f2d090f250c122d0c0317080d210b11230c0f2d0a09250701 *160000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000000000000000000000000000030300080e06000d0400000000000000 *010000000000000000000000000000000000020000030000000000000000000000010000000000 *00000000000002000204001d220c1b2a1241412012100001030305090a0308060207040a07080f *0f121a17120c110c000b03010a06060b08090a0b0f1109090c0b0a060b0f0c0809120a06120907 *080b10150c080a0700000000000007070d0e14090b0c0304090416100841422e44381f2c231026 *211426231a3d37302123131d1d1017190a18150b15130d1f20191e1f131d140b1f1e11212e1e21 *200d201e0b2b1f192b2922262a221d1711231f131a2114221f0f1e1b0f1a1c0a2d2d2b363a2c28 *1c1728232029241a0c180b23251717271c111b15181914383a3338362c332a2238291339302536 *2f20392f1e3c3721423e2f564b52999997574d3f3f2e22302c1d343f2e2d37253b3b2e2e281929 *271f3433263021173c38252a2c1a35351e393a27383324443d294846353d3a2843482c262e182e *28142d331822220e392f2143402b4a35185247303b3a202b371e3e453527402f0c0b032d26212a *281e3d32253936253f3d263136242922131b0f010000000e110a322a241c1e1d1a17141e201c1b *2319131e16252c1c2c2a212e2b20060c0900000000000000000000000000000000000000000000 *00000000000300000000000000000000000702000303000200000400000b000002000302000007 *0100030300080400000200040000130c061609061910021508000102000704000c0b011d170923 *1a0d242310170f0c1c0b050b03000a060005060001010003000003000002000005000009010007 *060000010000000000000002000003000001000000000000000000000000000000000000000000 *00000000000000000000000000000000000001000205000000000602010906000506070b040204 *0300010200050503060700060000080603000001030200080603100a080606040105001111060e *100911170e0a020416161c0e0a06070a020000000002010002010000000000000000000200050a *08050000000002000004010003000403010504040607050c070b050402080a0909080c0c050212 *090f11180e181a12262e2b18140e2f3726393d364b482b54573c5b4e39675a43594d3b76664f6c *60546b5e4d59584f1d120f00000000000000000000000000000000000000000000000000000000 *000000000000000000000000030006010000000000000401000000000003020000030010170b0d *0c09100b0511170e0b101202060700000000000003060700000000000000000000000000000000 *000000000000000000000000000000000000000000000000000002000000000000000000000003 *030300000100000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000006 *010207060a00020800060400040100090700040200000100000301030606040609070508050000 *020000040300040000060300000000000000000000000200000100000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000010000000000000499b0abbac6c902000200000000000000000003080d06 *1d140d25131738201d3822234b26203a230b09020409040000020000060000000000000000001c *352111190600000300000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000100000000000000000000 *00000000000000000000000003010000000000000000000200010e0a040300000701010300010b *0307141d0c252a0e223e202d4326345c2b3f643844612c3a65363c62323f64333c622632602b36 *6532284a1d09170600000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000000000132c1e2b2f121a1d061d2e1c2d43251f321900000000000000 *00000007020000000000000000000000030c080b0000000000000000001b211113160624421e00 *0000000000030406000000000200080f0521291a607554424f271a0f0b10060913110d0907070f *0e08050406080c0b11131316160e0f0d0817080a1a1a181d1e1d0c121209110e0f140c13211a11 *171b16090911050613090b0103060000020804060c08080e080a211d1425140e494228403b2d32 *302720241d20180d2e373029271a281d0e1b1c1513110a13090a1318181006071d1813271e1028 *1c0e201914211b1333271d241e16231f1830251c2a291f3d3a252b24143e3d303b281b2e2a1b32 *2c252522162420142122161f271d191a13251d17291d1a27191d4341342f2d232d2a1c302a173f *2f1e3e3123483f264638203f47424c4c4795866f50503f322e272e2f263524203a252034231f1f *161422170d201c0c1d180e33301c20180b27231f422f1f3126223c262444341c3a2d1d2720141c *150d1b1c1a1f1f2330241d3c3f3c3a4233443f2b3b3a252d301d4a4727403e26302b1e2a251a39 *25262f1e182f3520373520322a1d352c213330203a2d1d2f2c253831263024181c1b171917091d *1f121c1c121e1a182219102114161d171506070600000000000001000003000000000000000000 *00010000000000000200000a00000b08040d00000700001000021808072411081a0d031407011d *0d030d04000c0004150004080002030000110b0919170a1a12050d0d0304030116030214050525 *1c0e22170c1f140a15180d13120c15110a170d06140a0c01000202000306000008000002000008 *08030b070500000101000002000008000000000000000003000000000000000000000000000000 *00030000000000000000000000000000000000010200000300000b0405100b070801030800020b *07030c04000d0d071102041a0a0a0803060200000500000e00000500000c07010e070710080612 *08090d03070600030703020e030207010007060100000400000000000000000000000000000001 *000607030403080704000602000500000400000503000306020508080d070a0b0914120b081309 *060e13080f1612131d1718100b0c1e1b182220262719165d4f396e6058645858563a34624c4167 *5b4b7674596f6254665d534f3e3503000000000000000000000000000000000000000000000000 *00000000000000030200000001000a000200000000000000000001000102010705000009030401 *0507060104070705060d0712131105080700000000000001000000000000000000000000000000 *000003000501000205000000000000000000000000000000000000000003000001000300000000 *000000000000000600000200000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000106040500040504030503020502040708061303000300000001000205000702040b04 *060902000005000202000200000000000500000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000100 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000300000000000000 *000000000000000101000603000505000803000498ada4bcc5c600000400000200000200000000 *000000000000000000000000000400000000000400000200000000040000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000000000000000000000020b0700000001050000090000000000000000 *00000000000000010000000000000000000000000000000200000505032a2b110a080816220d17 *18052b270d27270a263f1633492137643b42653b456c3a436b383f6c393c6d2f376e3736683439 *69333f693b3c6a3d103517020b0402090000000000000000000000000000000000000000000000 *000000000000000000000000000000000016120722200d00050500000000000000000000000000 *00000000000000000000000000000007000000000000000000000001000f1d120004030207060b *08020300000000000002000000000a0a031b0e054b4c293e51293b451c2e33120b0d0306090508 *06040c0c070003030b070910090a1a170c12150c0a120f0c1c1b0c0e0f0c0305120203190b0913 *0b080a07020b0c061007060d07000b05011510060b0301140c091711110b0c063032213a3b293b *3221241d0f21150d23110e29302f2c29152623162a2111231c0f1c1b0e231c0c251b0722150d28 *22132b1d10231e0d170802200b041c15081811071f12082d1f0b2e2b1a23200d2b1607211b0a1f *1a0b271e0f1d0b03190d081b11092b251a211e131e1e20241c19171a193e31253c3d223d2f1e43 *3e2a42372a372e233f462e403f2741402e433f349c9d9d4b4c4538312430251d3233262d2a183c *2f1a28220f21120a20110d2818113532203120123234213f3e2e3c36244140314538243726192e *190a2520101b130a1f160d2a251742321e3b27133f3022413a27403124443b2f43472f3338292b *291f393b2233281f2c2e263b2d1e432d1734291c3d302a38372a28301e3f3b26473b250a060605 *020807020201000013100f1e1a1e2822152b1a0e1b130505000001000012060601000000000000 *00000000000000000000000600000a00030604040000030905051c1206101104151a06110d041a *080d1c0c08130a091a08061a0c010507000000000f0c080b01051e0a08160706160a06241e1e1e *1d0d1d16132b281215160a09000006000103000009090b0909070000000000000201000b010016 *01021808030d050402000000000000010004050100000000000002000003000000000000000000 *00000000000000000000000000010800010100000201060200050500000504000806000403000b *03001004010700000304070201040c11080c0600020100050000000000050103100a0d0a080c08 *03030609030a0a03090e0e1308060a060907010807040a00000300000000000000000000000000 *000000000000000200020e00000300000000000000020000040700000502000407010604050a07 *090d06100b07110b0706050c0a141a0b0c251d18261a153c2c235f5042534e3e5342355d4f4f68 *584b55463c59574d604d3e6f5e4d6b6559170d0900000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000020000040300000000 *000000000001030700000400000500000100000000000000000000000000000000000000000200 *000400000000000206050002000000000001000000000000000200000102000002010003000100 *000000000000000101060e00000100000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000102010500000500020500020500010401000200000400000505030504 *010908050c00020500050c00000000000000000200000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000040200030001040001049cb3aabdc6ca00000000000000000000 *000000000000000000000100000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000002 *0501110f020000000000000000000003000001000000000001000000000302020b0e0701010104 *05000d0f01151a050104000000000b17060608020300000000001612051b140223270e00080000 *030016270b0c0e080d18050a09013353243a552f2f5b314368303d6734436730416229375d2d30 *5e3235642f3361353962261e461e071e0300040000000000000000000000000000000000000000 *0000000000000000000000000000000000010503010b0001080000000000000021291100000000 *00000000000000000000000000000203000000000000000000000000001e2f17070b0100000000 *0200090e01141208090c010701000706022f230e4b3f102b3a162e370f424a2242552a0d0c0508 *02021207010d0a05050601060807141d1e16251f1c28290000000c0c070202030911090909010d *0d041212071107011108030c0704120b06140c040705000a0e0e1f1e102f211d36311e29140842 *3e29212314241c0b231d0e2020122024151f160a241c0b1611021b18051f1d081d180918120720 *0d042e2618362b122621101f14091e0b06281b0f211a112b1d122c250a2b240c3931173a2d1e40 *381e3227143823142229141e1c081f1e101e1d0b0e14081618091d1c0e0d0d1115110b2b2a174b *3e262638252f361e3a413b392e1e3a3b33474034422f2b7f84814743372d3021292c20343c272d *2c1c311f162f2311271d0c26200e2923133c3f29383a1f45432b453b1f3c2d2744422c45473b39 *321e3127131f200f150e09250c04312a1e443a233931233b2e243b3a24303120393d25443b1d40 *392b3c311b3c2a193c3b273a37203b3a1c2c341c4030144c432e4d3d1e433f254640302f321f00 *0001000000010200020000190e071d2013322c21392e1d171d1704020000000009050000000000 *00000000000000000000000000000100000600000100000400000200000c00001502021e120709 *04021506010709010100000d07000900000200000400000b0b090903001715021b10031711021d *110b1b110a1308041a170c120d0c0905000a08001213030b01000a07000400000e02020800000b *0501050200140d00090c03030100020000040000130a0400000000000000000001000000000000 *000000000000000000000000000006060300000000000000000002020007010007030106020004 *00000402000805010200000c0800090b020a040104000302000005000005020004010008020009 *0801100c050506000f0a070f080807040a05040304040103040001010000000000000000000000 *000000000000000000000000000000050000000000000000000000010a07000001000000040000 *000003090500010304000811090a0a120b0a090813120c2e2d1e4046306f6f573d34214c3a2956 *584055493e584c385653415b56416e614582715760514e0b080600000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000010004040000000000000000000000000000000000000000000000000000000000 *000000000000000002000004020206050e00020700000000000000000000000000010000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000010300020300000000000203020408010301000004080902 *0c0c00040304070603070301000400000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000003000004000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000001000000000000 *000003060600000003000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000100000000000000000008 *000002010400000000000000020000040000000004000000000000000500000001000000000000 *00000000000000000000000000000000000000000000000000000000000a0903180d111b131308 *05100a09100708060a0f0e050b061217131b1a1d1e1a2329282da5b4b0bcc4c700000200000000 *000000000000000000000100000200000000000000000000000000000000000100000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00052331231b241502040000000000000000030300000000000000000000000000000000000000 *0000010a04030d0a080b010000030000070001050000011018061d1d091d20081d1d0817140505 *00000509090f1f110706000c0e01070a0318250c2d481e425c2f39643236613340602b4068363e *61333d642d335a24335b33375e3328421c10210e02100800010000000000000000000000000000 *0000000000000000000000000000000000000000000000000000000000000004000003263b231f *2410090f06000000252f210000030d0303121c0d00010200000000000000000000040000000000 *01031d231528301c4b5834384e2e1224091a1b064857351d1a0c3346291c2211313c26394a2c12 *07050e09060301030902030e03040402030500021a201f18231f0000000815100000001200000a *0103050909160d091a130f0906030b04000e05061205021402041305071213181c10111d161528 *1a0f392a1d31251538272025201e251d122e29212620231a0f0a151009160905140f051408021a *0a051b100b2524211b18151b130c1c0a0825140a1f100828190d271b0c211f0e312b20433c2d2e *271d3a35243038252e281a3b312225262034251720191e11141c17170f231f1a1e14142a21152f *2a1c343f33262326263240262e2b393d2933322940453d5d57425a5a5a4949482a33343c312a41 *42323535223728132d24183222163323173c332d171c1c1e1a22241d1819211a151816211a1925 *1813251e1b301d15241d15261f183b2615433f28422e2238231f42361f483a2241391f3a2f2643 *3324383a24292a1e493a21322c203b2a12373a204338203a2f1e483d2e503f2f4139283a46362e *231a0702040000000000040000050f141a1318131b0f0925180f2a1b0e0f060100000000000000 *000000000000000001000004000000000000000000000004000107000301000004000003000015 *0b031b13071a0d09040206040006100709040001100b03000000080b0414090a1d0f091a0d0716 *06091d18141e141717130a1404011610091f0d0a2918111509070b020002000100010102000008 *03040800020500010c05080c06090200020000000500010001030a010107000102000000000000 *000000000000000000000000000000000000000000000000000000000000000000000100000103 *00010402000d00020800040900040002080500030200000100000300000704010200000803040a *04050a04080400050702040702030a030207010506020500000700000700000200000200000600 *000000000000000000000000000000000300000a00000000000000000000000001000104000d00 *000000000000000a00000a000002000000101212110305130c0e192325232a214e595f2d342b4d *44351e070358584c53514e3a241c442a157c735c7f6f5a6364590e100a00000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000102 *000500000000000000000000000004040400000000000400000500000000000000000000000000 *000000000000000000000003010500010200000000000000000100000700000000000000000000 *000000000000000000000100000000000000000000000000000000000000000000000000000000 *00000000000000000000000000010408000c010008140300050005070000000002020400000000 *000000000000000000000000000001000300000000000002000300000002010107000000000000 *000100000001000000000000000000000000000000000000000009101707121d02030600040800 *0206000000020102050b051113011b1209120202000000000001121e14040b0101050400040103 *0701030000000000000000030310222542040803230500411a1a13000000000021160a0a07091c *11134a2f206d594a291b2001000004000000000000000000000200000501030000010000000000 *00000606000101020003010102050000040103010000000000000000000000000a040402040300 *000100000100000000000000000300000000000000010000000000000000000000000000000000 *00000d060507000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000100000000000016 *0e0c01000306050b200a0f301f2e07031000000e00030707050d07080d00000400000000000000 *00020000000000000000000000000000000000000100000b030a0200050101060300000d0a0309 *060c10070809060d02000703000903020b00000a000002000000000104a0b2aebbc5c800000000 *000000000000000000000000000000030200000000000000000000000000000000000000000000 *00000f170408170900000000000000000000000000000000000000000000000000000000000000 *000000000001000003040000000000000000000000000000000000000000000000000000000000 *00000001010000000000000000000000000000020500000100001122131f2b111e1a0a2b39100d *1a03000000080603181d0c20140c252614343413303b1d375128446338446c2f3f653439642e3f *632d4567313d622c40662d415a26375223385825213f140a200a020e0000020000000000000000 *00000000000000000000000000000000000000000000000000000000001c3c1e00000000000002 *08041a2b170a140200000008040422200c30341e47441c171e0f0000000000000000000602040d *0c030103000f18080b1c050208010302001f1c0b28311c132b180f0f02110d00382c0d352f104c *5737070b080503020301010606070506030d0c030c0c082227241d232500000009171700000005 *03020500000b09000f0d000a08050509010e08030c0d061a0b050e06020b0b0322251806030111 *120c12120431372d38312c382f234854475f665b505d56382e1e251d0b211d0c1d1405221d0e1b *1e1416120420170b474435020b110001051c1f1a241b132a231420190a2b210c3923143c2d1d3e *371d37341b3b39262a2b1c332b1e2b251d252e1e3c3b363032230d1c1a0d1519142b3b1e2b3a3a *3d3a1726262c3e31172922212b211e2d2812252f1d2d3d04131a414c603e5350172c312136360e *1b1e3e404240392c332821392b173128182f1c0c3b312c353c3800030606090e06090c00000116 *131d0000000f0d08383c26332c193f371d312f1e413b243f3b29423d2b382e1a3a311a372a1537 *2b183e3223414031464727402e2249402c3c361e3f2f144e4326463a243e2e244b453240371e1f *1a0f302d230909080000000101000001000b100c130f091c150f1916162521171505000f040007 *0100040000000000050000030304000208000502090a0601000000000004000002000000000009 *02010900020800000803000b05000807010b04000c030200000000000017080a1e170a221a0d21 *170720200c1c150821120d1e1a0f291a0c241d0d2017051f170a2b1e071d17070f060207010008 *00000600041108040503000c0907070a0500010100000105000105030405020208060104030000 *00000000000000000000000000000000000000000000000000000000000003000400010a050307 *000009110d1616150108030400000806030c05000602000b01000a00000300000100000601010a *05000d0d060402010500000d04040e05081217110a0d0a0d070306080202060900000000000000 *000000000000000000000000000000000000000000000003000000000000000000000000010208 *00000300000400000f02011706050b00001d0d0736271c43412a41351c352a1c48241e44341f50 *371f7d72586f60527556347e675781593d8f76518c7f6585755f575b40141b0d00000000020003 *010000000000000000000000000000000000000000000000000000000000000000000000000000 *00001e160b1a090312130b130d090408030102001e0b051c110717180e18160e21140b1411040b *0c090b06040b140e00010500000000000000000100000000000703050601010203010001000001 *00000e06011c1204161104050403080600070801070705090400121003070e0404090205110c07 *0b080000000506000f170810100142401d564b2a422e183a381e20230d130b0315100209040003 *00000506000b140711140504080511130d081002181605080f04050b0a070b040a080708030303 *0505090302160a0008030002000000000000000000000000000000000b244054212324221c0527 *210c100d031602002a11042d2a143a3e1c696a644d543b324c1b2d431e323a1220311315170714 *13051316091d1c060a01040900061f130f5a594e4554204f301f631d1d4739200400001a0a004b *5c348592a2a7aab4a7a9b8aaa7a84e422e3b491e3743173f4c143d47143d4a22313b0e34491539 *4e253d50213b5120374c1f39542143511a243213151f0e21261017230d171e0b0f150504070001 *0e0401000000010000000000000000000000000000000000000000000000000000000001000000 *000000000000010100050000000000000000000000000000010400000000000000000000000000 *000000000000000000000000000000000000000000000000000000000005030000030a00000000 *00030102050401070f150c30302e48546f08030c03010400000002050e04041000000400000000 *0000000000000000040402020200000000000000000301020900140e021611082a363320272107 *09120300060000090700040501000605000701000702040000010000000000019eb3afbcc6c600 *000300000000000300000400000000000000000100000000000000000000000000000000000000 *00000000050403060000000000000000000000000004092f46300b2b1100000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *01000000000508060a0b06000002000201000303000000151a0a04070104030408090405090506 *150c0000000200001710082c331e39411f4c482b51663a4b6931406437476a3543663c3d6f3c45 *66314267334667314069394062343f673d446d3842652b35532029451714190c09030200000000 *00000000000000000000000200000e120600000000000000000000000000000100000000000000 *00000000001a0808161a070c1e0f090501000000091f1517291d061409040a06090e10221e0a3f *4724202f19000401000a090005020e17080606032523111a210a060c0821381e3841295165406e *81504a58270f0d040700040504050306060404050c0d0c0b050724242724252403000007171d00 *00030605060f050b060704170c05110b0a1c120b1c100e25130d2112091c151408050b150d0d0f *05060b050518150b292614413e2b47463e59647022262d636a6c44423b2e24162219102b1a0923 *1b101c11052c1c0d2a20145861670000010000002018153a22193824153b26132d27172d2a242c *36253c39293f31253e35202a2b2026271d3a26162a2e1d3e3b353b3f3f0d0c0d05060d0000001d *11173440310000001a1e23000000161a210b101a000000100b0c000000474c5658443a00000004 *11160000043538353d2f203f331a37392835272132291b3e3d2f3b3d3f00000103070703050600 *00000d171c00000008080e4241433c2f2341311d3b2d1e4140304339294235263d382544362447 *39213b3021393b2d3f412e3a2a1a3f372a3f362550493d3b36204c452c3f2d24423127473c1e47 *3b222a2920282e230c0b0b000003020102010001130f0e12130b160b0920180e2623170f080412 *06040600020703060200020100000200010400040903040502080a02050600000c04060c090610 *0a0f0a0a0a1d160a180c0818140e1f160f212324150c121d10080c00000000001712081d120b21 *1c0f1e121220120d1f16171d140a2019080c0b070b090817160d120f081b19191c1210160e1008 *05050a02010a020109050406040302000500030504060c03010200000100000000000003000003 *000100000300000100000100000000000000000000000100000000000000000000000004000509 *06000a0200070107090f0c0700000903030200000c03031203010403000800000f00000a030102 *00010500010102040002080200040b03020b0506130f0707070b0702040303050c080500010700 *00000403080000000000000000000000000000000000000000000f02011d17171c0c073a221f3e *26272a1c1d465043463c33606758685e476f6f676d79764e5d585963614854563a47404a73793c *484b5c7e7c5e7e6f576f755d80915983944c6f83496a73415f5e2f4d471a2a1f05120c0a140c01 *0305000006010005000001010000010201040503090b0607070a050e0b00000300020309060204 *0100090d00221e101e1d091c181615161210090f100d0b1c160d18140e17130b28242121161d1e *16121b140a0604080708040000030000000000000000000000000504030403050300000e11070b *12081913024537135f4a36593c2526281c1c17071817112624190202060b08071e1a0e03000000 *000007010009040404030103090708050559492e816e5b70371f6c523f4a452e181a1218150c17 *1b0e100d060b0b0b150d04322f162f3b1d2d36162f3613334e2d1323152939162e401a2e371917 *180c19220c131709273b2a26391d26331c090402000000000000010001080f192a56523457303f *5e2d3f5c3241543146301e746d5c4b5c333a39236f6744607d6c45652b3c653c39603a4765293f *5a2944592140592438471e35220e6f5d6743332384969a516c3f4f3a1f8a3b2a6b482e15000041 *1f0860714399aeb2aebec9b0b8c4aebcc557754e4a6b344b5722556b36496b3b4b6d3051743452 *70355372374f6d305a70314b6c2f5373334a693941602e3b5e2c334b26294218263b1327461c1d *311a1a3d1d152111030d0601120400010000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000020400000000000000000000000000000000 *00000000000000000000000000000000000000000000000000000c0e0600000305060402040704 *01020906090600041100020f0e0e1b151c1708170000090100090600010400010c080800000000 *00000000000000000000000e05080c0908100a050e1304101a070d19090e171108070d09091107 *040b0902031102020d060705070c03000800000701000812100f04010c0000000000009fb3afbb *c6c600000200000200000100000000000000000100000000000000000000000000000000000000 *030a00000800000000000000000000000000000000000000000000000000000100000400000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000001020404060b030000000001000a140f0b1506081d120005040304051d221110 *14030706020609020506010e0e03383a25363c1e4044213050214c6034345c31345b2e35642b2f *6030335f2c3f672e4a6c2d466c34486d3c48713746683044683d476f3a32532513331506180900 *11040006000000000104051c291e2c412622301700030000000000000000000000000000000000 *0000050506201d0a4a582f051c09000000132e1a04070702170b061d0f172b1a030c030000000c *1d090b12060004050000000000000000000109030f190c404223242e12201e0d3e3e2125321230 *421d4c5b2d394f240e0f090102020001000401000707030806020f09081f2a251b1d2100000001 *130b000000191510161d0f1a0e060a05031a110a15140813140d201d1315130815120c05060908 *04060404050301031b170e1f1d103d3d224447374c5d670200044b63673f382931201031201427 *1c0d1f1a151a11093e352941483b455651000000000000192829445142393f2e26261e31201425 *251b2d32243a2a20342d1b4639253c3b2921251d2f27162f2e212f2c212b454204060500000600 *00001317253a4746000000081826000000050c0c0a130c00000000121800000053464865604f00 *00000912150100012d2d29444b414a4a403f4238403a2c4c4232444b3a30424600000000020600 *050a0000010d1820000000030307364944363c242d301b3a31273e362a373b2a3a382744361e42 *3816403e273b3a222d291d322e1d3b321f3b2d233e2e1c3d3e253e2613393a241e1c172b271d47 *432351553f42402b2c23150d09050000000a070600000218100d1d120b16120f22191220221208 *04020807020000000301000200000000000000000200000d0902040a070701000400000702021c *130e070b11000007080b0d110f0c080d090000000000000909080600010a06070003050807061d *15051a140616090513120d191d1120211728231820170c1c1206111608140e060d090617120914 *0f0906060b05010608000206040202000000000000000500050700000300000100000000000005 *030000000000000000000000000000000000000000000000000000000000000000000000000100 *00000000010600040500020300000601000000000200000b01000a00000800020600030a03030d *09000307030000000000010101050200030502070c080914110709070301000304040505050800 *0107000000000008000105000b0a09180e0006000000000000001110030b0f0700000300010407 *09070b090b00000300000000000002000000000200000000000000000001010004070504070310 *170701090510110a00000000000000000000000000000000000000000000000100000200000000 *000400000000000100010500000000000000000200040502020000020100030300000000000002 *000010140a1a180c0f1b0c040b0b1220180005050100050a06060a090d110b0e05000413150e22 *2714262b1a202115100a0707030300000000000000000000000000000000090402030507060c0f *0a070d0a06413e27635c436f6c527d765c271d2120140d261d122a2e260000010000000b070500 *00000000000006040703050602010600030d0d0a81795c9a958a96927c9091836d645c40313216 *14071a220e1d2713262a1231421f3b46213c572b37582746672b42562232401d44623442632c41 *5a285055383a4c1f2e4019312e142e481d2d4e281e2212100e090201000608061f1a0a35481f2b *411a254621203a182d3014705334847b8743473b32240c858d8d584d35202f1720411c1c3c1823 *472213471a1541211a411d334f2c6e684f808aa4626c53658d934568334d5627846e485661333b *150832311d486a314f6231473319646a4b56522f536d33425b2b3e662e476b2b456f364372344b *6e36456d354e6d384c6d334a65284c6d314b733e4a70374d6f30466d363e673b526c3d40662d3f *5e272a51241e3e1a06180800130500000000000000000300000000000000000000000000000000 *000100000000000100000000000000000000000000000000000000000000000100000000000000 *0000000000000000000000000000000000010201020b0b0000000002020b0e0500000404080602 *06060000040c040a0606150d0d070904030f130e0a0b0b03000000000400000303030705030c00 *0000000000000000000000000000050b0b0000050000070704040700000000000001020000010d *0206000104030709060509060609100d0b04040a000003000000000002000009000000000001a1 *b3b0bac5c600000100000000000000000000000000000000000000000200000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000000000130d031512080400000801000303000000000e0b02271d081a *13070203050000010102001f17022d260f43361249461e17230a07270b0c280e102e16173d1b2e *441e193b1c21481a284b1a2a521d335424375e314466364163324a683b446c3842652d33471a28 *3c200c1d0a0306050000000000000000000000000000020008040001030c1d16000a0600000000 *0300000000000000293c2306120500000000000001000000000000000000000001040007180c00 *00000814090702000d050100010000000000000018230a2a3218191d0e2f42282a2a1234351335 *3e0f4135115158295367301113080401020f07030b06050c08010b05010f0a09212a1e141b2300 *000000020600000017160e292009170b01120406100e011b0c0415130d17110c1a0a0411060503 *05020b0b060d02001201001d1d0f221c0f40392651554d424f510000004f4941403e24271a0931 *24122d17072f251321170a28180d2921114d58540000000000001714183a332738241a3b2e1f3c *2e173c2f1e3b331b3f2f19312d2037311e2e27162427221a1c142c2e1e2a2a223a3b3008060400 *0000000000181d2b33454d0000000d121600000002020b0b0a0d0000000708120000003a3d4d6a *6d6f000000050b0a0000003338394b443c4a423c4539274a4a434a443745463532383f00000002 *000305050500000013110f000000040405373e423c2c1e3b37253a3121443f2b3d38263e382a3b *3a2c40381e392e224230223f3c203f2313442a15644f33513f1e4a3f2a4942333d2c132d210f2c *21153f32292d231738251a2920131d130d18130b0b0d0b1005051610071a0c08201f1028281625 *22120500000700000700000000000100000200000500010e00000a06011405020b010009000008 *000022170e04000200000003000306050206070300000000000014080807000011000000000016 *09031604021008030b0201120608110505160b05190d080f0401120b060605000d0c0418090317 *090512080305010205000002000006040201000000000000000004030300000000000000000000 *000001000300000001000004000000000000000000000000000000000000000000000000000002 *00000600000703050d08030900000b05041100010700030600000c00000300000c070107010008 *00030408080a00020c07040902000d02000704020d0f0a0d0f0807020302000002000609070e11 *0707000000000000000000000000020000020203150e0a151c1622180c10100b00000000000000 *000000000004030700000000000000000000000000000300000000000000000000000207030708 *06030301050000000a040000000000000000000000000000000000000000000000000000000000 *000000000000000105040803010600000201000000000000000000000001000200000400000200 *000017100e09030417100a13120a110b080a0b1203050b0b0b0e13120f100402110605130c0b19 *0d09271e1b1f1d1f19161a0c07070300000100000000000000000000040400050b08080e161706 *080a0a08051a160a2d2b1b4751426c725b6b6b591e0b072b190a271a0d2f230d04000200000008 *020100000000000005000214160c1211070b02001f1005867b4b917e5e98876f99917aa29a8f62 *50391c270e251c0b3944234552274c6e3e4a6d37436d2e50753c466c2c4e6a384b692e4c723343 *6a39557138829b9150724155733d7c9f954c714049602d38481e20290c1c1a043045203b583643 *5e2846662f3a5c26415f203d612f3e51233f44253851281d2115070002251e0e32502a33502025 *4a2023431e23481d224924294f22304d275b7a6c495035231e0a3c482c213e182d411a4a593a26 *3c1d2d2714223c1d2239181d3d1a273f181c3c17183a1f233e1d224722274f23305825335a293f *5d2e3a61303a59203a5f2c3f643140623842673142672f4e6f3d466627496a3050672b46653647 *682e4d7042416a2e47692c4261234157270b0c0500000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000004000205000209 *010002000004020002000005000109000709020b140f110f060804010704000000000000000801 *000100000000000000000000000000000002000009010506000301000003000000000000000305 *020508030705000500000603000303030501060b02000501000404010301000600000500000000 *0000a0b2afb9c4c700000000000100000200060500000000000000000000000400000100000000 *000200010601000000000000000400000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000080700000103 *0103000001050807080a050a10000c15070f150a1e270f0c0a020a14070b0d070c0c08292e0f15 *0e070000000000000000000808011d2212322c13444423262d10020300000000000000000b0600 *130707230e0a29161d351a2349231f491a1e46191c471d1d411f254d23305428395f2c345e2a42 *5c212e441d17270d0410010000000000000000000d040302010100000000000000000000000000 *0000000000080804081c100007000200000501002a3a1c0d210d080a080b1d0c00000000030202 *0d010000000d0902252a0f283823130c05000000080e0b3f523a282b102c200b5b5d342a3e1818 *1c0c444d2f3b4d2952673845692d0d1403060400090606130e0a08080615130c140e09242d2420 *261e0000000000000000000b0c06140a05171a0f140901131810131705111d0c1d0d061c030118 *0d060503020e110c1a0d05090903110900251c0b413a2148473f3e484f00000349554742412f20 *1f152a26162e2a152d220e27210c231c06362c1d515f6a020104000000241f1f41422d38302440 *3f28373221392919312a1c26231e272717322b1d291c122420193a261429291e303d33393f310e *110d010305000000201a203847430000000a131a00000007070e1a15100000000a0b0c00000043 *46487d78700000000914140000022a34324d4c3d4440304c4433474b3d41413a40443a3b484e00 *0002020203070a050000000e151900000002050740423c4245323b3729312b1d2e2b222d291e32 *2615383224423a23453b204a331e2c2a2044361c472f1d6d65416e5d275441254d3516483a1749 *31133f391733361e2e2614261c1b23150a2315130700010003060803081b15112217081e160b1e *1e17271e110501000302000a0e050301000501000601000a00011713090a08041108040800000d *02011104002820160703080000000407050003051004040000000000001609040d080210000001 *0000070609050704160a0b22110625150c100c070b03001707061e14090807051808041a0b040a *04000c04020f06060901030e01010d04020d0301030000000000000000040d0300030000000000 *000000000004000202020004030004000000000000000000000000000000000000000000000000 *00000000000703030600050c02030905000b1007080805080101050000120a011002010b02040b *0400100300100c060703030d05040d06040e08060a0105120f10120b060e090e090807090b080b *110f0c070d03030a0000010b0b0d0a0d1109141615211e141b13191f1b141e1813181a04030800 *0000070000060b0a0403000200030000020000000000000000030000000000000000000a080b01 *040605060a02060a01000315120b0803020000000000000000000000000000000000000602030a *0607020001030000020309080808160e0a0000020500040f0205160c04110a030b0805130e0d06 *04040000001418152c2c23241e1d1e1e1d2019161a161522251a1e20131d1915121a141b1c171a *1f2435271f1e211c28221712151308030306040400000400000000000000000001020301020009 *06030102030200010903060a04070d0c072526163c3e2410080318100c27130b291d1a00000000 *0000040402000000000000020200080103140b05170b082d2827796b449387649586699c8d7fb1 *acab281c1a1718132e3818354e313a60313761273a5e2a275d353d683b31643a3f65363a694140 *6e3b43733b4c743b4a753e486b354e66304e633b4b743741703d42622b4359253f502039502536 *54253b55283455282b4d242351252a5e2b29592f274e2a28511e294b1c3e2b13374b222a532f2a *522d3d592a375a20385e252e5722264f1c2e512c28341a2b4721355429355b273b572239572330 *4a213c63353c582b2a4d233f522b335b303057272d54272d5627324d2126492922432232482726 *491b28491e2a44192a3b16253d1b26461f2142202a422022451f2c4c23284b27294a1d234e272b *4e1f3052242d4f211e46231f4c272b522e2b532c2b492809160d00000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000004010505 *02030000030002060b080509030605000303010500020203080506090906060703000403030209 *02080000010000000000000000000000000000020700000a040410030400000102020402030400 *00030000020100040507090a060c0b010304030802000800000303000008000508020107000006 *0007060006a0b4b1bcc5c800000400000100000600000400000500000000000000000000000000 *000000000505080a080f110000020000000000000000000000000000000000000000010b0a0800 *000100000000000000000000000000000000000000000000000000000000000000000000000000 *03010307040000010002060a16130815100f1b0b000000010905050903060b0508090101090803 *130e0000000000000000001f190b080c050a0e091f23113f4225101808060d0a04020200000000 *00010003010005010001010e1e1104211900160d00130b001109001e0f00281a01291606311616 *421e1b47211747241432131c331b1e35200c271301070621361d0d16080a18051521090d14040f *170a000000000000000702000505000000010d07323e261a2b10010a0800080800000000000000 *000000000000000009201228361b1f240f1e3a210006010d11074e46224349214a502b5b6c382d *2d143237174850264f5d2f49673b3564330612080103040707040603040904050b0a0502020325 *281d242c2a0000000000000000001d1513060101090c0d0908040e0d081216101e120914130c16 *11070d0c07050b0c050e0f03030600000005040320120b3c321d43382341504e0000064e575e30 *301e2a1e0d2a24193b331e2d21132a230f3020103d433e4d5f6c0000030000001c293333312834 *261730241c2f221c2f261d2e2813383721272f2528393e2b28232f2e1e2b2c262925192d2a282d *3d3c1414160000070000021a1925424547000000030a0f0000000000070b161700000008181800 *000042374378857c000000000e0f0000002631314757493c403c4b513a403e2a413b364a524931 *3e3d00000100000300090e0000000d111a00000003060a2c423f3b4949353f312d2a26302c1d30 *3022322b212c31254037253837223b29163c301e3c301a4235278479508463387861426c593a66 *553b5b482e413f273927193d32242a2d1d36352020211d1a1109070404201c14241d1325291d1f *211b25200c1e221b0e03030908020d0c060803040000020002070405090803000c02040c070b03 *00000904040b07071920180003070000000005000000010409040000000000001615140a090a0d *0908070000120c01150c090d09031a1107231a131f141311110c1a09070b0b061106021f180a17 *110a0c0e0706070416100d0603090a040618080414030206020100000100000400030800000000 *000000000100000000000000000000000200000000000000000400000000000000000000000000 *00010000000000020200010500040404090c0601030000060602000205030b0c080d0d08000402 *000400010309090310100f0a08090d07030b07051109070e0303060e0a07090905080606050508 *0505030a0d030a0c03080e0000000001090000050004080101040105061b1f211c1e20161a1c00 *00000000000000000c0b0607000000000200010400010400000000000200000000000100000005 *090601030708090e00050900000509090d00000500000000000000000000000000000000000000 *00040c0f08010006040003030204060200090e120601060e0507130509140b0b1a160c0f0c0300 *0405000001000000161a161f2a2600121b040b1600061100000a161c1700020900000201061500 *000400040d26393900000400000500000003000206050700010000000000000000000000000400 *0202000708000203000100000202020506010503090f10060e100000000605041c140b161e1100 *00000000000002040000000000000303020000020c0000351e0e1b13066c563f927c5d9b8d66a5 *9b81aaada42f1e1a1411051f210f202d183f5e33325e323d5c2b3c53263247252d411f24421b15 *371e0b2d14092e1808281404291c0d2b150f2d150d2c1a0b3321123e2611371f1d46201e4e3828 *512b295e2c2c5a2f184b291347230e4526143f1f0f351a0a2713081f0d071a0c07160900201600 *180e001e0f00221e002d1d053118073d2106381d0a2f1d0e3418143e1d13431d0d441e143a2012 *441d1a441c0d3c221a42261d47281d4a261e512825572c1e5c2a265d3a2d5a262d552828532c2b *56222e57272e542a2d582c355e31375d293759202e54253750252748261c361e0c2c140a2a160e *37180e371d1940181f3f1d103c18032b1600150d00130e000c0b00000400000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000300000400000200030500040600030700000200000000000201080709050900080d00 *060803101c000002000000000000000000000000000000000000060908090e1403030701000000 *000000000000000000000200000800010b00010a01030401010601000600000306050800000600 *020900020b03040ca2b5b1bbc5c801000001000005000301000001000000000000000000000000 *00000304000700000a0a02181404000003000000000000000000000000000000000000050f0a12 *2110201e090e1d0501000000000000020000000000000000000000000000000000000000000000 *00000000000000000300000804000d0600000000020100050400050400171d0b22250e09060100 *00000000000000000000000b06001212051513010a06002c1d052b2308201e08253a1b10181200 *000000000000000007000009030005090000000000000000000000000000000000000000000000 *0000000000000701011b0e0a230e0d321a16381e0a1b050000000002000000000002021e3a2c13 *220c050b00000001030700030300060900060a002a271a242f0f00040000000000000002000000 *00000000000000000000000000000e180a0b04000503011e1e0416180652501e443e1a42491d28 *351b3f401f4f61386873494d682e51733d45632c1b1f090a0a020508030903010d07061306010a *0300232c1e23291d000000000000000000120c04070001150e03170b002a280d1912081d120414 *12091c0c061005040d04001304001108010901001506002110042823153c2f193a423e04000040 *4e3d453e172d2008291d0b24190930210d25180a321b1037332852605706040100000020282b3b *4841372f1b302918322f1e33291031311b31261839291838301d28241b2b2e2225231c2923142b *2c1a33423b080a080000000000001312123f4c4800000007040800000004060013160c00000014 *1b1e0000003b2a2f888c7f00000012120f0000002e27264743373c342347301f393b3040403f42 *473c4042350000000000000403040000000a0c110000000602043c4133332d1929241c2c2a1629 *1d0b302615282a1e3a2d21402f22393a1a33281137250a4731183c3a277c6640785f3b79592f7c *653c86784d7a63405c442448371e3325212f21152a2c2232231a221a0b1c1201211e132c1b0e36 *291c251e141e1c0a26201c110e0a151402150a000d00000900000800000700000d0000150e0512 *0e080d07001300001600001e0905000000000000000000000000020601000000000000210d0515 *0000140b030200001211091d1309120b011d1608231508261503271c051b12051c09050a0b0919 *0b0f1a0f062615071904001808000a030005000015080410050002000100000000000000000000 *000000000000000000000001000002000008000001000000000000000000000000000000000000 *000001040400000000000007000003020405000101000002000003000005000000000000000007 *0000020001080001090200120805180d02160b04160b04160902130d080b03030b030410030209 *02000e0a030e0b050b02040900010000000000010000000000000202030f0601191b181a221e12 *1013000000000000000000060b0a0c0500090b160c090a19110f030007060108110b0c09151501 *060d11100f0c0b050f05031107051106050a02040a080800010300000000000000000000000005 *02030403050f05020904021b11141c17141a1317211a17221c0e1e1a111d130a0e02000f030008 *0200000103000000000000130b09151516000000000000000000000000090a0e00000000000004 *000100000000000037292600000000000000000001000007030302000000000000000000000000 *00000000000701000600000700000903000400000100000301000000000000000303030e0b0a1b *0d040000000000000701010300000100000403000000000700001e1b131c0b07878162a79681a8 *987bada086a89d7d3a291526220f32371e1d1e0a202906122d090926100e2c13042b0d0a311e15 *3e1819481e1e481c214f212458342f55292c4821294822213e1d1c2e0918240d121d040f1b0407 *1404060e01071306021209000a02000300000a00000800000501000802000503000001010b0600 *040300080000020000010000040000000000010000010000000100000000000000010000000000 *000000000000050000090500050100080000050000070000030000020000020000030100020000 *1304000c00001408000b03000b00021a0707210c0a2b0e0f3c181a411c174319174c281e452024 *4a1f2349213252232b4c2124421d213c1d262b0906070200000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000200000800010100020700000500020000020000000a00001105000801030a *000200000000000000000000000000000000000000000000000000000000000000000000000000 *00000300000000000000000400000000000000000500000300020300010000020000000600020a *0003050004040002040305a3b5b0bcc4c503000907020c170e0f272412221e0d06010202010000 *00000000030000060205080604032d3e1809110500040301050400000000000000000000000300 *000000000000000000030200000000000000000000000000000000000000000000000000000000 *00000000000000010807081b1d0d0f13050a1004030205191f0e191c0d08080801030a00010200 *0000000a070b0b07180a051e1404160d021f1c0817140a1e220c0c0e051e240a28311301040000 *0000000000000000000101050607050502060b0501000000000001070100090300050200000200 *00010000000000000000000000000000000000000000000000000003040016070d170b2e30161c *2810000000000000000000000000000000151e0f091d0608130a0b0d070000000000000000001a *17060b140403030000000000000000000005060512140820291920270f201e103a43264c502526 *260e3233194a4b224e6f3e49612e48642f4b6e33436a3314170e0b0708080508090908160d030c *0f0807080112120d1f25220000000000000000000501020d080317120c0c16081d1d0b1c100824 *170b160b081205050d06060d0c0b150c09120904150e051c08053923143d321f403b273a362842 *50494c432a493e263323132b1e0f2e1c0a20180b1b12052118082a2a234e5a5f0204030000001d *1b2636332032251431271c312a1f3936253834233f3822413a1d3e2d1d211b161c1c121d1e1325 *1e1c1e181930363b17130f130b0809010123241f41434705060a1c2024160d0d1d26253e403a24 *1712382d341b10164848429ca3a74646433a4d4c2a3333424b484549464e4b3942433a3e403342 *3f2c42443b363f3b171e1e0e1f231b2225070e1e1c2a36041419181c2045493c4031232d282127 *29232f311d30201b261e0f25231a3a2f1e3d28132e251c494536342012422c1578664a7977578a *805f8b8b786549357068517a644d5d431e564c2c3a33212d2b1e2d2c21202017191719160f161e *140f42332833211d2520162b271d0f0f090c09090802060d0203080100070000110300140c0a1f *170e221c140f04040e07091707061f0e0a00000000000000000500000001000300000000000113 *08061507001404010a000013151017150a190d09241a161a0b081e120c15160b140c0814070317 *0d0611080512070518160d1a170f131a0d180d091009090a080509010000000000000000000000 *000000000000000000000000000000000000000001000001000000000000000000000000000000 *00000000000000000000000700090d09090100000c070200000000000000000100000000000000 *0000010001070402070200050400060704130a0613050513100c0d0b0f12190e16130a18160d15 *100c090a100e0d1009060605020c0301050000000301010000000000030a050a0b080b0d060c0c *0808050608030300000000000000130408100605100c150d080f0d131708070d0f0a08121c1b16 *1a1f04080c1a0a07170809120f0d12130d22150b1d120612090f01000600000000000000000100 *00000001050705021c0e041c110a1f0e0a1e17101d18121e191424221b1b1615130f0c0d030012 *01001209040604050000000000001c221d0d12130000000000000000000000000b100b00000000 *0000131e1d18221d0b0804302d29000000000000000000030005120a0b0b050a00000000000000 *00000000000702010b05050d0b080803030a08050b05010e040112000003000000000000000024 *110a5d4f3f080403000000110a080a0001090002140c051614091e1e0e170d06251e126e5f3da4 *8f69a08f799f8c78a5a38d454125233117314018283a1d1e301237461d233c1626320f0b211601 *160d01150c01120a00120a000d0700080301070503100902150a042311092f1c1c462125552a2f *5e2b3259273d612e3d5f313a582d2e51272d40201e38182033140f1d0d0b170b07190a010b0400 *0b03000705000506000a0600040200050000050100040400010200000200000100010000030000 *070000020000040100010000000100010300040500000500000800020200000000000000000200 *000000000100000100030400020400000100000000000000000000000000000000000100000300 *0205000501000905000604010502000404000c0400180b00000600000300000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000001010604020d0803090b01040b06020c09040809090100050c020c06000301 *000403000501000003000200000000000000000000000000000201000202000009000008010005 *000000000102000200000602000402000600000303000005000102000500020800000501000401 *000703040a0405050202070b0207a3b5b3bcc6ca0b01080e0008110709170a0d1f211c130f0d00 *000300000500000000000000000017141504030700010600020a00000900000000000000000000 *000000000000000100000000000100000000000000000000000000000000000000000000000000 *000000000000000000000002010300050600000200000000000400000200000000000001000000 *0000000102000000100f0d1b1d16272a1b363a1d2527133a2e1a241d061c10070a000006040300 *00000000000000000000010b06011613050406020d05030e0d070908080600030507050805010c *0c06091809000001000e03000101000003000000000000000000000000000000000000060e0f03 *0c0900000200000000000000000000000000000000000000000000000007000414200f00000001 *0000020401061107232b1d0602051e1e1e3b240d2f2f1c3a3f1d3d381d48421a2d27124a3d1f5e *5f354b442052542e50663e416637476731425e314f6d3f445f360f0f0b170a0708040504010314 *07030b01041003041d1612140e150703040a0c160200000c08000605020c08081a0b0d18120f17 *130d1d160d140a051c15091c1007140c061204061306050e01051a0a0e2312143e2a1a4234172c *271740261e473a31533a22331d0e32291d20130d1b0b061b11022e1e12261c1442413f00000100 *00001a11222c181323231931231425211740291c402b1e32251d3925243f222025150f3726161f *140a1f190e211f1a36353d18202206000c0001090a11184b4c4e00000008070e0000010500061a *1822000001131725000000312d338b9790010001171f2c000004292a2f424946423c3546433047 *443d4339304b49473c3f4500000000000004090f0000001014190000000201063d3838312b232c *1e1a1e1d1b201e1e301e1d1b1b142322163b2f22403a25382d22332d1e2f231d322c235d4d4085 *81596d57356f5836613d21694224745533755935806c5058413130292131241d301d1c3226202e *1f1a2d211a2923222e2b272a1c133621120a0d060900001200010e01010100000200010b000510 *100c2417121e1b13180606120000110003120b1400000000000000000000000000000000000000 *000006070a1000001e0505080000210c08150c061603031e0c0b11070b1c06040b00001100000c *020018110a0b04060e00031701011608051306080f05080b000312000108000000000000000000 *000000000000000000000000000000000000000303000008000008000001000000000000000000 *000000000000000000000000000000000100000200000004000000000100000000000000000000 *00000000000000000800001c0d0a08040701000005000013040910040600000000000007010608 *020a0000010000000202010d01010a000400010500000001000300000200000008050a0b0d0a12 *040a1208080c05060c090e1a0c161d131207061307040014100c14060714071206010d06010a08 *0815120f16010207201c0f170806210707221b1d2d221c1d181711061302011100000000000000 *0000000000030000080204160908121010130b0f1e17112519132f150b1e0f071406041302020c *02040a000202000208000500000000000016120b0d081500000000000000000000000015110e00 *000000000009100f00000a00000223252a00000500000300000007000218090704010300000000 *00000000020000010504021b130b0504030400000a03064c3f2c4f2d201c1a1e0f061303000003 *00000900000e00000100000500004c3b240400020600001107022213050500010f04042017098b *76539b9073a2926ba7986fb4ad9e43432a211c0e101e0d08200d05150b0e28171224140a3c1f12 *3f191243231c4c29294f2e2141222a48221f39161121100d1c0a02140a001407021402010b0300 *0305000205000506000f0c04241708381d1a411e254c24295028305b34325b36385a362d5c312f *4c241b38131f280f0d130808140800040600020600010400010300040000010000000000000300 *000300000100000600000800000000000000000000000000000400000000000300000200000400 *000000000000000000000000000000000000000200000200000000000000000000000000000000 *000000000100000000000000000000000000000000000000000000000000000100000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000104000100000500000500000907030b09010c0401040903030c000204 *000505000100000200000701000700000009000005020509000103000200000300000403000506 *000503000204000402000000000206000508000401000600000503000500000303000402000100 *00050000060100040000080200050b0009a2b4b3bcc5c9120a071c15051a1d0b130f0318160d0b *000002000000000000000300000000000014210a000002000a0401000000000000000000000000 *000000000000010002000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000100000000000000000000000002000000000000000005010002 *0407000000040e001c0f001e1707362d1b21260e1f1a090c0b0b171f1720270826200d1717081a *18062b230c0508010000000000010b09000815010612021910050b0d080a0f0101050002080003 *030000040000040000000000000000020000000000000000000000000000000000000000000002 *03000f0c001d20082c3d1d102d100000000000000d07002f2e0f272e0a1c250a1a2e110203000b *0c080000010000000b0d012b43210b09050c0c033246243c431d2b3b2c4742185e64354b512656 *59305f68305b7241495e27415b2143623052743a45602a4869294663261e20090d1618010a0605 *04040d08020b0b0306050015140a090a020d100e0b110b080403120d070d040008070013110818 *0a031408061a12031c0c00120b081909020e0c030b0c030f0a030a0a041d12092e281e37301f3f *3b28403f203b2c1d3e3e254743253b230e28140528200f281f0d171504221d0a2b1f1449514502 *030200000013121a3d312128231436342026281a2f261b2720112e260b29251023200e2d201625 *1d0f1e1f142a230f2a1b0d3b46470e1d1d00000000000005080c43504900000000000600000001 *000015232700000009171f000000332e3e8a91970000001e2323000000282e294b58464847304a *3e2a392e1e372d1d43433b424c4c0101000000000308090000000a10130000000002083a3e443f *3a25342a162a22171d1c0b20190a2222172a2214372113342b1f423c242e3820322a1641301b68 *4f31766132744831745e3d6c5c347d61407a6d436e65367c74647d6b436a5d454e3f2641351d2b *29173f41313d3a27211b123c291b53412a39321f0f0a05100c0a0d06010d05000805001309051b *1a0c130706221c121e1a17150a03100c04120b000f0e0500000000000000000000000000000000 *00000000000100001204000f01000700001f1714151110101109180c042018051d0c0017040012 *030019110a0602051203080e04050d05000d0b011c200c1a170e0704031c07040e080700000000 *000004000000000000000000000000000000000000000002000004040300010000000000000000 *000000000000000000000000000000000002030003020000000010090400000000000000000000 *00000000000000000100000d000011010014060000000000010107070708060300000002010012 *05020d04030000000000000100000907080d09000405040000000603000100040000000d080507 *05090d0b09090d05071208060401202012281f180a07030400020d0d0f171d1b1c2623141d1817 *06041618142221140f13181d1616191d111711081e2419262615241e160a090d08040c00000000 *00010001040000000306070b0c0a24180d190e031308071a140e2118132e21131813081312061c *11051409071707020a08030708060000000000000f11081c130f00000000000000000000000010 *0f0b00000000000000000500000001000020292400000000000000000000030506020208030000 *0000000000000000000000010100131008000202010100110701614e3250301c230a0223090116 *01001105041803001606020e0200150400424839020000000000140c0a2d2f1f000000201c0837 *26137e66439d8d659f8e69ac9c79a9a4962f251d323a12131d0c000902000d03000505020b0300 *110a0013080010070212050012040a260f133d1d1d4a27234d21284f26344f2626411911240a06 *1505010b04010e06071403000b00000300000600000702000900001406032c111743201c472620 *48291e482325562920461c32582c254f2a2547251b3d1c172f0f0c20080a1a08031502010a0100 *070000030000080000000000000000000000000000000000000000000300000000000000000000 *000000000000000000000200000200000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000002050300000500000000000003030108030209000006020105010208060b06 *06090404080504070303000303030306090b010103030208030500040700000200000005030108 *040004000000000200000000000000000100000007040002010000000001000003000304010a00 *0007000001000000020300080200080001080307a5b6b5bcc5c9110b0f221c16130b0f20171513 *1a0e06060900000100000000030700000100000905050b000000000000060c0400000100090500 *000000000000000200010c00000000000000000000000000000000000000000200000200000200 *00000000000000000000000000000000000000000000020100050a07051a141307060605050402 *090802040201000109080b1e271c151e0d06080808130d21291811160a120e0a231d1227261d04 *01061420110c200d010b03000001030408160c0c190c0a190904171d07070b0800000100000000 *0003000203000000000000000104000d0901190d00010200000000000000000000000000000000 *0201000000030303424c31313f1f0a0301070a0507030612190c252e151e2e160d120a43432549 *5c35141f1400010514170934280e4142262a240f3c4327535a2b2e502c3d52264f603f55714647 *622e4a6b3f3c582b3a5d2d325b313459273b50243c582f445f2c416239455f31161c13060c0901 *040305030304040806040a0405040000030c060306040300030601000109000103020606020511 *0d09140c0f1c0d0d160e0b0805040b0b020300040a0b0a0d050b19150f150a0a1c110e25230f3a *39254543333e332433291d4038294437242b150c1b0e091a1102271d091a13091b0e0a20110a3c *444100000200000111121730422d282a1d231e17261a16241913332016402e1e291e18201a101e *23181b170d17140e2a1c153227244139351817200000040000000c0b0d3b474300000000000500 *00000000031a282d0000000c1a250000002822268f978d0000001825320000011e1e293e4a4f36 *3625454a324138243c2a223e4644434b53010004000000060e1000000004131a0000000001053c *4342362e292d29232a262020180b27221a262114211e1522221a2a1d183e2e2231241b3c2b2047 *4a348586809292787b5d427f573a80604b7b57397a654a6c542f82806e6661475c4c3766453176 *5d425e4a4553403b46413833241e3a33284c3c1f30271b0a02030d01060e03070903071406080a *0703130908181c192d2c28342e2417060622120b20150e0d000604000000000000000000000004 *00000000020300000a0005160d070b09040300001c180e1a04060c0404170b0708020814020a05 *06040905010b0b010907030a01040902040c0204100206140a0919100c030002181009080a0704 *050508080a0d090b0a010a0700060100000201000000000000040300050a020406000100000000 *000000000000000000000000000000000000000505000606000500000001000000000000000000 *00000000000000000000000000030703020c01000506010000000100010e07020d050600000000 *0000090b0a07030400000000000000000009060906000508010800000200030800000000000011 *0f0b100f0e100b08190c0a22190c231d171e19152023212f1f1316080514161517111a1f1c1e0f *131708030a0c0f1d0f1d2010070f0c060a1615112e221f2c28242b27241a1a1d05070d070a1800 *000100000100000200000006040a12080b231d1226201b150b0a100b0d1510101b09081e0a091d *0c070e07050901030d040413110e0102060000000000001c201d100a0e00000000000000000000 *00000c0c120000000000000000020000000100001d222600000000000200000007010803000503 *0003000001000004000001000000000101110a0c040206060409160f13665d417e726a8e816890 *866e352412200d0729120a111215000002000000261a170300020400002a170318120e0500002c *1f193924218c775ea28f87aaa28fa9a495aa9d7647311f27371d01010300000500010a00000400 *000100020100050000000400000800010500000400000500030000110301190818331b1b44251c *46251d42262545251a2f1910220b071d06021a0900140e00170f00110e00040500040900020300 *0503000c0a011d0d0823190d381c183917143b201543231e3a181d4319264a221c4c251f472318 *3d1e1e3d1d172e130a271700080400010000000000000000000000000000000100000400000300 *000000000000000000000000000000000000000000000100000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000300000300000000000000000204000505040503010301020900 *00060400080a060c01000e060009020301050306090b0a0c050600000801000300000203000b08 *000903030c00000500000000000000000000000001000302000500000400000500010600000500 *000400000600000a00000903000a030008050307020106a7b7b5bbc4c80d0d060810050e1b092f *260f35270b1707070100000b0e0d00000000040000000000000000000000000007080000000000 *04060000000000000000000000000000000000000000000000000000000f0b000e1a0700000000 *00000000000000000000000000000000000000000000000000000f0d00181d080b0d030a120407 *06000d0d002427090a0500010000000200030c030000000c04071e120a262507372607322b0e31 *37180303000c14070000000000000000000603001715050f15030d0f010a130500020000000000 *000000000000000000000000000000000000000000000000000000000000000009020000000000 *0000000000000000000100272a11252b0f2e3a1c151b05243310040903222c0f0c1302120c003f *3f1f3b3a25312e0d21280b4b4e254d5c282b411b3e5128304929283b1d1c331d21412633461b27 *3e1a0f2a0e041b0a02170506130312250922310d232d0d1e2b091a1f0522260b10100308080302 *03010001000200000403000e05000705000f0e010d0e0604020009040308010301000001000006 *01001d14010d05001201000b01000f02000d07020b04010c0a030e09040b09020d040017160928 *180e4833233c3a243a3b1f4f4c2c413b1c3b3a1c2519031e09001a070021180a1612050d01000b *06002e3020000000000000272a2d1d1c12241a101a1c0c100a061a1d0b352e143128182f240a28 *251227180a23170b1b1006181a0d22160b37331e1a1e150000000000000e050935433f00000000 *000000000000000018211d0000001d2220000000211f248f9ba2000000161d160000002f2a2758 *57494034253f392741351b3e3d2c42443c3a423300000000000003060600000003050d00000000 *00002a4240392a193730192a21152b231b271f17201e15231e0f2822092a2214392f1d3729162e *291a2e261049351e8a74528876437c5e31815f306e542e765e31776941807e6663503f75655059 *4b3264542c5f573e7b775c62634b5d472b3a261d44321b38301d06040206060307060011090012 *0c010b03001704021f150e22201c241e0e271b05150a001607000c0500190900170700140c050d *0802110c08180b011506001007002117001c04000a00002d27281e1712100200180d0020120612 *08001d0e030c04000903000a03030f06040d01001109001c11011d14031b1f150900001003010a *00010b00000c03000801000b020010050008000009010009040205000107000004000000000000 *000000000000000000000000000000000000000000000007010000000000000007000103000104 *000100000000000000000000000001000006030011000007000100000000000009030003040000 *00000000000705000501000000000000000000000800000e050004020100000002010200000000 *000211100e15140f12140f17100c18140927200e1a15071f221e2b2519140c0416101403010009 *0b0e0602001a0d080a00020504070300001a121b1308001a110516170a2b260c2f1f13190b0502 *00000000001005031407060000000100002417031b0d030d08041306031a1006170f06180e0021 *11031f1d0a1917091d0e042314091c0b0407000000000000000016160b14121200000000000000 *0000000000140d0500000001000011120c0000000c070726201d02000009030200000004000007 *0300030300000000000000040000010000070000100f090609040303001a0e026e6743968c7a9e *937c99968236180e2509001c140b120c070000000000001f18070600000f040035281d1c100415 *10073c290a261c0b8c845fa89d82a49169aa9b7daca99d45432d1a2716010b0700000000000000 *000000000000000000010000000000000000000000000000000000010000010000000300010300 *0605000f02001b0703210a092c13183d191d451e1e411d2648211b351b061a06010e00010b0000 *0904010b05010203000505000000000000000300011a020d3615183e1c1e3a0f1e48201d4b2118 *411d1c41141f3e0d143a0d16350e223d0f1a3f1d14290c0a251001160800030000010000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000200000100000000000200000000000600000600000d040004 *00000200000400000300000300000100000403000600000a030000000401030100030000000000 *000003020001000001000002000302000300010000000003000000000001020001000004000806 *0002030002010102000001000001030100070804070101070406a5b6b5bcc4ca0b0a0e0e05080c *030b1916151e17050004000000000000000000000000000000020000000000000b11111a200d00 *02000000000000000000000000000000000000000000000000000000001621160f281b00000000 *000000000000000000000000000000000000000000000100000000000000000400000100000000 *00000000000608020d1a0f0000070000010000000505000100001113033f350f38422238311728 *2717494427110c0b1f2b24000000000000041008020b0604080705030800000500000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000811022f3411263818211d09172a1c01040818160817220c23 *2c1d14260f2a3a151c210d272410354b282a3b1e213b1e1e2d0d00140c00180c00180900120700 *0707000102000000000003000300030600070802191a07181e111e1b0c211b07090f0a100e0806 *010001010300010000030006020310010416030610050b06030511130e1417120f0801090b0416 *0c08150b031207051d0c0b09070411090606010009060012180c1d13080e0705140e0a04000011 *06051f1a1239392a3833213e36273d3124443c2f4638241d1f14151a161b1c0a221c07090b0512 *05030901000a0304140a0d130e0f0d0f0b18170a19130a110d0719100b1f1511202013231b1323 *1a0f18150f0e120a181711161c1521150c1d1a1428221c181e1e00000000000000040441464200 *00000000000000000000001a24230000001223220000001a1f2395989e01000017242a00000019 *1d294e4c494d41343d403341483a44452d4a3c2f32333800000100000001060d00000002060f00 *0000000000373a3f3532242e1b15382f2623241e2b2e1f1a140a20231330311d33211937251633 *30243e3b2e282c174436207c65327e683c86663175582e7962407e6d507f6c485b62545c523b4c *412b4f3f2b614b3d6e5a458780745f695568624e615648554b2f4e3d1f0d050311090b1a0c0a10 *0506150a08150803180c032b2615322a2135281f3c2d211e0a051703001404031806001702000d *04001307011501001507091d090510070619120e0f0b030600002020171d16101e110c26170e29 *2717201e181c1d131205050a0600130d041503001b0f08200f09170807100a0d1311100502010b *0b05120b030e03000b03011a060409040605000507040304000002000005000006000006000105 *000000000100000000000000000000000000000000000000000006000500000000000302000003 *0403080b080207070903010800030b050504040b0b06080b040300000000000000000003020200 *00000000000000000100000000000000000000000000000500010a040705020800000102020403 *000104050808080512110a1c100a14080c1b14122e201c15130a181716231f140f0a020b0b0d16 *150e111415050a171c1e1e1a201d081c18101d20181d161407031408051e181318191a1e1d1818 *1d18080c1400010401020201010200000001000808040b1604011807001808001b0b03160e0420 *110a2817122518141d0e0a14140c19150a110a030306030000000000021c181e14172400000a00 *000a010307000004080b0f000b0e0000030910180000040202032b2a2400000000050900000000 *000507030600000600000000000000000000000001010219140b0a08050500030e080644412665 *5c39787b5c8781632d180e19130c22130e110709000002000000261a0d0a010230281118140f1f *12051d0b0b261e0e2a1b0d81784aa49b7da4927da59776a69f8f44311f04020600000300020900 *000200000100000200000000000000000000000100000700000400000000000000010000000000 *0000000201000001000003000002000004000102000701000d08012313103d2118392015412a24 *4524092312031404000c0500070600070600000500000000000000000300000000040300201004 *2d1e1c401f14341d203c181d33141c41170b3a1d1e422a0b36170a2a1709240f08321d0e2a0f06 *1d0f03160800060400000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000001000206020506000600000100010800000001 *03010000050703040400070600040500070000050003070000010000010000040a040600000400 *000002000200000501020701000105040303000101000505000108020704000500030700010900 *000500010301000004000303000303010701000706000b07030a090409a7b7b4bbc6c8080c0d16 *1006080a0017180f0303030000020000000300000000000001000000000000000000000600020e *1a0d0000000000000000030000000000000000000000000000000000000300000e1a0d00000000 *00000000000000000000000000000000000000000000000000000000000000000000000100000b *0300231907181a0b01040100000407090407060016140c1a16010a09020708032d351d323a1a2b *30122f351e283c150b0d0a181d1c0100000400010a060106090500010100050000000000000000 *000000000000000002000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000000000c0e05212712262d0e4051310002000000000a180c05 *1705141307323a131624090811051d210a1e2919272a0e323a1e061c0c00000000000000000000 *00000000000000000000000000000000000000000c0b031514040f1f0e2738151a3314091a0a03 *0a02080c090001000201000100000203030c090a110f06100a03100700150c04190b0623120212 *0a060c0c08140a010e0901110801170b031f0c040d04001609020d0a0308080406050609070405 *01000b0100130d0a3d2c213e3321353a2b3830254f391d2f29120902000501000d0d0711090105 *0401030004000000040504040c070f0b071108030f08051e0a02221c1222190d1f130c1a0c0321 *1508291a0c3a26132212071e0b0718130d1c1e1730221c2d2f26121e1300000000000002000041 *4c5000000000000200000200000011261d0000001b1d1600000016171e99a1a30200030c252400 *0000231b1d50463c4b463546342148432e34392f41414830393b00000000000002010200000004 *020a0000000000003c454a443d22342e1a2c2510291d15372916311e104131262d23173b2a1b3b *2e16402a123b200c3a39254d452780694d80633d8e7e527b5b2e856f427c6739826a465f4b3360 *614d64452f5e513d7b5d427864427983767875608073556a624674583665523d1d0e081a10080f *08001c1a0d21170b1f180c1b05002b2720382a272b2624292622291a051e0a001d080017060022 *0a02210b05230c051704011c0d0a1e13062019081708021c07000c07001e1710230c061408062d *200c1b0d011b09012012041811061205051e0702180b0619100a0b0b040d0a000a06001404000e *03001609020c04060b00040902010604000201000200000100000200000500000b020103000102 *000000000002000000000100000004000300000000000000000000000002000000020002010509 *07060b03000f01041609071408050c03000c0800160b031404011c0c0b04000000000000000001 *020400000000000000000000000000000000000000000000000006030107040101020000000000 *0001060000030104120d0718150c141714080f090d0f05150d072516082a1a0b2a150c11000009 *0b0c050509050b040305040a170d161a1b090808120f1119110c24170f120503140b020a040016 *050216110f01050a0000000000000000000000000001000808042314052a1505211409261c101e *170f1e1b162321111616091f1a0b171211170a0b0900000300000000000000001a1c170b141200 *000000000000000000000005080400000000000008080800000000000229242900000007000000 *00000203000200000300000000000000000000000000000100001516090806060202000d0f0429 *2e1a292218383429494f441a0e0b20170c34201319100a02000001000020170915060013141215 *09012a1f112c2118120804271005847643a59776aa9670aba284aaa78d3d494003030500010300 *020200080300000000000000000100010000000000000000000000000000000000000000000000 *000000000000000000000200000000000000000000000000010000000000000000040200090500 *0d03002110062d1b153f20193d20143623051e0f01050500040500000000000000000300000000 *000000000000030300130b00150806230808250d092b140e23150a1e0f0b29130c230a04130902 *1306000e03000d05000b0300050000050200010000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000002000403020206060000000000010200 *00000600020700020500020a040908050205080403030402000003000100000000000004040600 *00000000000000000000000700020c00000700000c030006030505040a04030404030304010301 *00000401060100000900030400090600030304020103050601030a00040e060ca8b5b3bec6c90a *080d0906080803071a0c0f0b0b090906030302050000000000040000090000000200031107070d *0a080002010000000000010000040000000000000606030b07020000001a1e1d24422b00030100 *00000000000200000806040000000000030000000000000000000000000000000000000803051b *100720241229261710130500020000000003060e0e03080b070a0000000300010a0c0c1e2b1117 *19080600020e0f0e0200000402030000020002020b160a0d150707140d00000000000000000000 *000000000000000100000001010006010006040502000200000300000300000000000000000000 *0000000000000000000000000000000000000000000401060a07091f1100010200000300000000 *02061519123c481e48643f101e0a1e32233140223d4c282d482a17402106261b000d0400000000 *000000000000000000000000000000000000000000000000000000020100000002000006080501 *00010000030000010000000000010004020903050c08081405080c07080a03070b0b0511120826 *201714140c08040718050414090612070806060d160d0608050416130b11100916080b0e07090c *050b0a000808090b1d170b2f3722393c2e33332047403046432f18070800000000000000000000 *000000000000000000000000000003000700000005000213120c201a0c2022161d120b1d0b091a *0b0b21191718140b26160b0e140c1b1d12090d0b1d171a2f2a2b3a302f181d2700000000000007 *01074345440000000000000200010400020c1a220000001a1d1e0000002016179da6aa0b010628 *222711020821242e4951524b4830463a2148371f3f2f283d2d21282b2d02000300000000000000 *00000100020000000902043e3f423e43373533233d28222f2b1f261f15291a0d38312a3b261d2c *231c2f2b2240251d28170c3a2e1a524a2679764d78653a675e3d6c5d3d817d67756546766d4d51 *43275c563b5c5a46565a5578604b6a5f4f4a4a44433a28393020343724554c4170614b1a0f0e21 *150f1006070f080c1708091f150e1d1b0a1f2719251f17201d171b150c1d0e0b1910090f01030c *03010c0101161410160c09100302190b0a15120c0a0304130a021a0d080400001d0d081e110b1b *0b061108060c07060904050b03000c02000a00030500000706010903030a020509000609040500 *000004010110020302000102000000000006020205040808020500000000000000000002000001 *00030000010100000300090000040000040000050000000000000100020300000a00060c000803 *0306040000080102160d060a05041212130c02071002091508070d0a07120a091309070b04030c *04020804020a0305140b130f06090b03010a04050c06061111140a070e0e060d0e060d04010400 *000000010300010401000108030610100c161d1413080a100205291713362f1f25221a33302408 *020308090e0600060807090908050b0f1306121a040a0f07030913170c1e140f2d140b270f0b1e *15131a1a160b0b0f00000400000000000000000100000000010407010617090724120b16160f14 *0f0b1410090e0c0c17070a1504050d01011108081e15101914120103020000000000001f13181f *1318000002000005000000000000120f140000000000000a040a0200000d000128222600000000 *000500000000000106020204000300000000000000000000000000020210110f0e04060e04050c *050713060415100c1307040c07040100000f0e0a31261f2e1c0e04000100000021150a24201e00 *00000d07062e1c1435292523140e220b078c8472a8a195aaa193aaa69fb0ab9a383c2402090b04 *080600060700020200000400000300000400010300000200000400000300000700000500000500 *000000000000000000000100000000000000000100000200000000000000000000000000000100 *0002000001000005000005000201000903001d0b052e120a371d193d25132c1a04121200030800 *0000000000000000000000000000000001000000000004000002000703031705001d0c00090800 *070502130d000c0e00060900000100000000000000010000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000700000602000801 *000b0501030400040000020a050508030708000803000a01000901000500000000000000000000 *00000000000000000000000000010000050501010300000200030000040203090c010611040b0a *040c06040600020501010c02000702000404000607020902000907030c06040a09070ba7b6b4bc *c5c8080604090705170c0446461b1914041e16070d09070b07090804040c0900000000020a0018 *1c08000000000000000000000001000000000000050d021c1e0a232f14474e260b120b0000000d *110a0d11061d21150c160700000000000000000000000000000000000000000000000003040024 *260e1516060f0d05181b0a070b0c0718130913071013082231131715021610010403000a0d0415 *0c0c252015200e01181f0d1d22090f1803040c050e0e001d2008233713080b00050c0100000000 *0000000000000000000000020001090c0d1519101511050e0a0005000000000001000008000008 *060100000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000061507202a1e05070000000000000000070000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000010002050000010000000000080c060e0e06100b050d050207070114080425 *180a22251d0c07030b07060906010503020d0d030c0900140701140a040e0b030c080606020303 *02050904020a05021408041e1c0d31321c3c331f382a2143412f484e4305040005030209060400 *000000000000000000000000000000000000000015100b0f05021a0f0b1d1b160406080d0d0719 *10071410061b0f03170b0826241515140802000009000213120f39392c31291c171a101c231d22 *221e2b352e3f4f443c382a423e29383b3337312e2225192e332c4b463a3a3b3c4c4a49959ba166 *60554a584d424b3a42463a39392f4447323e3b2d38312630322631383d2023212c231d32292237 *2f1e3d3e313540312c271f2c2e22261f1b3437291f2119231a0d1f1e1520170914170d252d231e *211d2e29111e1509180c0425201023231432291e333a2a352a1c30261c3c271a3d261839201428 *201a65472c4941233a261a43393368371d824923663d22492e195a34165225166c3923836c5324 *1610221d1019140c0e140a0e0b0506060201000000000301000204010403000000000000000000 *000000000000000000000000000000000400000000000000000000000000000000000001000004 *000000000000000000000000000000000000000000000000000000000002000005000001000000 *000005000005000000000000000000000000000001000001000001000000000000000000000000 *00000000000000000000000000000000000000000000000000000700000400000000000200000b *05000404000a02000d02010f0905050309110708150500100800130c00120b000d08030d050807 *00000a00001005020a02000c0700100f07120f0312020119140d16120e1405071007040c0b0406 *07010000000001020402050000010d0809140b061714081b1108201e0c272314281a081f0d031d *1d0e09000004030703090a05090b0a0a0809130f0f191d0101040c0b1a1b1a182a261a211e131d *1b0b2a2813231d0c0c0704000000000000000000000001000000000000070606140a07220f0519 *1006140c020e07041202001505011504001306001c10041d1a131305040300000000000000000b *140f141415000000000000050d0f0300000507040000040403040a12180206070b090423292500 *0002000001000000000000020000050200000000000000000000000000000000080d0605050401 *02030100010506000d0a040701000904020200000806042e1709472f19110402000000211d1116 *0c0d0600002d220f3d3f2919160e1b1004250d03886e3dada49aafa596a99d84a8a49531362401 *0d0700020200040000080000030000090200020100000000000500010200000000000000000000 *000000000000000000000000000300000000000000000000000000000000000000000000000000 *0000000000000000000000000000000000000000000000000004000000000300000d0005240b16 *451d15391d182c1707130900000100000000000000000000000000000000000000000000000000 *000300000000030000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000305020400000001000000 *000002060208040803000500000000000200000000000009090103040006040005000000000000 *000000000100000000000000000000000000060507000007020209080b01000700000000000000 *000000000009050308020904000501000703010c0103000002020000030504040b070a030008a7 *b7b6bbc5c80807020b0c05221d0e1e1e1121240f1f1c09130f0309050001000000000000000000 *000000000000000001000000000000000000000000000006000016170929361a070a0200000000 *00000000001e16071c250a0605020905020d080100000000000000000000000000000000000009 *0f040209030000000000000904000c01000100000000001116021d1f0d100f072017080e08000a *00001d1303252a0f272610232313161b070b0801040f0b061606050d020d0b0000040000000000 *0000000000000000000000000000010300070d060f11052c2c0f2327110b0a070000000309060c *0d051f1a0708040000000000000000000000000000000000000000000000000000000000000000 *0000000000000707000707080d0200000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000010000000000000002 *00000000000f10000a0d010106040000000000000000000000000404010000000501000000010c *0c031e1e0b171d0c0502000700010600000701000304000301000000000c100316160908020105 *00000300000d0b060400001806031e1a0b29291e3c371b352e1f43402b3536200000000d0c0e21 *2115130b012b2b1a332713332219292b21160b08241910111b1803010016171011110500000002 *01010603000100000f06060e14111216090209010301001209071a0d0a3029211625201f16141d *10090d130b061013040a0821211c24261d221d1f251f171d130d322f36433e432a32294f3f358a *8c8e4731212717171e110d231e14281f112720163b332144443b2d1d12270b05251b13463f303c *331e3e362034341d383822362b193f33223a372c3a2f22201a0d20180d2a271a1f1a0f2b2b1b3a *3f3131281d3b36235e594c5d5e4460625960665b77817898998189816c9e9c99928c8297968886 *8d82857a5d9697866e634b846f4e73694d7e7b6d837e6066654776704c7b7b68787a758c817b9c *866e36220f221c0b1a06021502011f11071101000500000c0300180f09190e06200f0a26190820 *1a0e1807011c0d0918100e372e0f2a230e36291b2d2a1a1a1a171b1812180c131008060a090817 *0b00291206231e141f0c061a0c050c0100090603100d0a1109050b0700110c00150c090e010113 *07010e06030103020303030b0501120300160a052015091815081f1c0c09130b07070507050701 *00000100000701010500000700000400000200000100000100000701000c000008000000000000 *0000070003000000160506100601100c040d0600160f050b100f100b0519020110000010060513 *06001206000c0300120b03140a08130405130507120d101a0b08150e050e09010c050014070509 *01030600010000000000010203020200000906011009070d090818100d14100e1d1b141a140b12 *1006181b0d040000010001040303070807020307080603000917000000000408160b0421120720 *1307181009180b091306040f070a0000000000000000000200010000000000000101000d02011b *0e071c0e001b0d00120b002a1c09201403140502140704170c071c191304000004000000000000 *000016190c1416120000000000000002070000000708020000000000000504070000000000041d *1f1f0000000000000000000300000000000600000000000000000000000000000000000b05070e *06031008071008060b05030903010e0202080000000000030100412613684c24150a0800000020 *17190e05030d0400412b122b2118271209231404251706948a66a69c88aea38aae9e79a89d803a *3723101302050b01000801001205000b01001407000f03000800000b04000d0500080000000000 *000100000400010000000000020000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000050000040000000000000000000000000000 *000000000000040000090200180d051c0c09260b05110800010000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000004000001000000000301 *00010100010000000c06070004070000000000000000000000000905050600020c060507050400 *00000000000000000000000000000000000000000e05090601050103000b030100000100000000 *0000000000000000100b0a0a080903030508020205000004000008030508000606040b08050d00 *0005a6b8b4bcc6c6030d06060c072c332818170b322e111d140c0c0a0a08080600000000000000 *000000000000000000000000000000000000000000000000000000030a08251300000000000000 *00000301020b0d05283a1d152e15030800000000000000000000030f0800010000000000000000 *0000000000000000000000010300060700080302070605030802080c011a13081b170c1e210b11 *0b02060400121a082a2c0f201d0e08100a111f0b233e17000000000200090a0311250c00040100 *000000000000000000000000000000000000000000060816110a2b29182d330f16130300000002 *03000104031f26140f070200000000000000000000000000000000000000000000000000000000 *0000000000000000000300000a0302140500000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000001050200020100 *00000000000002000d170604040000000300000202000000000000000000000000000000000000 *000000000000000003000000000000000000000000000000000002000000000008000004010003 *0000000000030000030205110000180d0b223728414f49464d4a3d4842282e212924140b0d000a *0b0b3636282e392a312b2031352c222724202d26282310252a2112110e1b1b1227221a2f271e2a *281d221d18221f15211f15181f1a1d211a1e1e1d1c1d1d1e1b171b1b181c1615191c152321181f *29281d1c14131d1819252232302a3e40393e41364446353938303e4b4640484c3d3f44474d4256 *5b53929291605c534d5d523f493f44453b4a453a383828484437403d2f3a34323f39253f463146 *4a43463c264b3d27463a2b423a2546422f3a3924331f11303022242414252f262a2d2022201d2d *201a2825172e2e20332f24413a20433c2739322630312042433f8987726c584191805185763e81 *6c467c5e416a5b3a5f5b385c412276665079774d6561444b45324e4628675e3b6e654e71685576 *654dafa18e5e391c3624182013062017081913102316101a0d082308041b0b06271609231a101a *13081d16081d13050207040000002b37350918181d2e2e070d0e000000020d050a010019080513 *080317170c1e19141210050d0b04150c03090a050d05021308060900020c07051310061013060a *09020a0e070b05020400010700001403010b01011508010101010002000003030000000b040b00 *000000000000000000020301050204000300010100000000000000000000000000000000000000 *00000000000803040000000c0100170100020400000000000000000000000000090400170d070b *08051408051308070d07050306050000000000010301000704030f09031e0f0a190b0b06070309 *070605080703080400000000000000000000000307060706110d1011131914111a130b181d121b *110a13080218130c00000000000400000400060400030a0000000000000000000000000b100723 *271a1d1a12151813191107170a070104050000000000000000000000020000000000000000000c *02000c0701090400100d0415140c16110d0d09040a00000d020118070112070013010001000100 *000000000013150c131d1500000000000000000000000000000500000000000000000200000000 *00001d1f1f00000000000000000000000200000001010000000000000000000000000000000003 *06050c07050c0a0a0809043d3a1f342116404029292e2000000200000000000000000000000000 *00002211080906032413053b3a2c110c0d180c0923230f30200f7d70499d8c689f8f6eaa9a86ac *a58732312b000609000400000602000301000805000b0400060400090a000d0a000903000a0400 *010000000100000000000100030000000200000300000100000000010000020000000000000000 *000000010200000200000000000000000000000000000000000100000100000200000300000000 *0000000000000000000000000000000000000001000503000e0100170600250d05200a00050100 *000100000000000100000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000100 *00030000030000000000010c0b0700000e000000000000000000000000050d0a01000200000005 *050400000100000000000000000000000000000000000003000508000202000600020600000400 *000000000000000000000005030604000703000201000401030800020700040500070a02030b0b *0513000006a8b5b6b9c5c60703050702070a060710080d170f0a121c0c0b0701070d0700000000 *000000000001000300000200000000000000000000000000000000000000000000000000000000 *0001000401000000030902343e2311120514180a0a060302000000000000000000060200000000 *00000000000000000000000000000105030304011714082e2e1d2a1e0b1f140e3a2e1033312033 *3a172d260c2c2b1340452040351d4f47212e2e1631311339431a0d1a0708100800020200000100 *0000000000000000000000000000000000000000000000030f0819110f352f1d39372416180b00 *0000000001000000040b070d190a00000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000000001070506070c070a0b04050601090604170e100a060a140f160a *03070a080b0705030d100d18160d161a171610080b070915100d130a060a100c12160915170c17 *1d0d14140d160b061302061a0e151a180f14150e181a0a39371d3c38222e1e1827251f3529220b *0408080b0e3c322430281e2e2916302618251f101f1a0d24201831231f1d1413221d132c250b2b *260e2d1c0c220b0426180d231d10271d1124181020140d24201c251e0e292314221c113029202d *251e30252433261c291f12252616312d183c4336433a2c33291c412a1e312b20474126483f2239 *2e2155452e898c8a655e4b392d2b363025464134484334453e233b3a263a2f1d312619392e1c2c *1f13382b213b312d4548383f412b3c4430363c2b40392a413f37393c29363524292722211c1623 *170d382c283d3e30322d1f2220132f20193022143020173d2c16493221857d5c6e5d3e785e3f81 *634481724691835b71603f69533476583f75562f795b3672552f4f44286b5e4c54463f62523e52 *442c716048b2a59188603b5d52362419092319102318102b1708271c08200f0613060027180a29 *1c11270f09230a062d1a0c0200000000001116150000000303060a03010000000d06081a100b25 *1d091a07011209031713051d150d1d1414130c081d080721120820120519110822130518100616 *0c0518050517080b1008080d01000a0200120f04110a081910080801030600020603040000010a *090b00000000000001000008080200000004000005000007000000000000000000000000000004 *00000000000200000806070000000d0b0a1203010c050107020000000000000000000009020213 *00000900021409010c0b050c07010702000000000000000a00001203040f07060e17111b1b0c16 *16050802030e01030200050000000000000102060003060f0e0b0e100b1409051707051009071e *130e271d12241c142b241401000000000300000000000000000000000000000000000000000007 *0908180b061f10081a0b052104021d150c00000000000000000000000000000000000000000000 *00000603030f0501171309171a141d1a10211811170b081808071600050b05020e070309070300 *000200000000000010120916100e00000000000000000000000100000000000001000002000409 *0705080209181d1e00000200000000000000000001000002000000000200000100000000000000 *00000d09061107061305041d0e1260462d41352a1d0e061c0702190f05130f071f140a2117151d *12101c09083437321906013420111f1a0818130c16070535210f291d1683643ea6967aa69870ad *9978ada9993b3828040505010807010003000004000400001507002113001a09000d0500040202 *0903000906000b0700120700070300030100040100010000000200030700000400000200000000 *020100030000000000000000000000000000000300000400000100000000000000000000000000 *000000000000000200000000000000000000000000000000000000000000000100000400000000 *0903000a02000e0300040500000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000001000000000002000303000204091304000700000000000000000003010307030c05000c09 *03070b050502010200000000000100000000000400000000000307000207080503000400000200 *00060000000000030000000300000707090c070a0a020605090d04020b01000804010703000402 *010a0e0f1a050209a8b7b7bdc4c9000100020b070408060c0d061a21120e160a121e0601070100 *000000000000020000090100050000000000000000000000000000000000000000000000000000 *0000000000000001091006232e1a2332120408001c30181e33130b230a060a001317090b1a0700 *03000000000000000000000000000000000000000909032b2310181e0d12190b111a041720062c *37182d36172a2c1d30331c2a3f20203a1820351b1e2e0d2d3e1729401900050000000000000000 *0000000000000000000000000000000000000000000000000501000b07142a1f25341f020d0100 *010000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000300000000000000010000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000000000000200000600010301010203040301030807120f0704090005 *10060e14070f1405060704070b09040b070c120b0b0c08060c000b1c030c12060207000507060b *0c040b07060d0807040801050e03090e021011051f1e163b34202c291638382132311a31382831 *2a1a000300060c0b393528292720383224251e132b211823260f252515222a131c1e0b231f1129 *2c1a2e291936362935261524281626260f29270f1c190a201e16241a0a21231c0e150c271c0c1f *200f262a18171a0c21281d242c231c251d2f2d2a3c362a3a321c3f391f27281422290f241d0c44 *413126291e443a348e8c966a736d4a4e442e3a262d32263c443a3d301c38221532272336281c24 *1b05372a12303a213536213630213e32323338382e2d25332c1e3a39202933281b200c151d0c1c *1c0e1d180b1c120b3437251f240e20270b16180d3a300f35311f1e16083f2f1475644575604269 *582f755c327d5c337966346f5d347463466c6149726c43716a496b60416a643c524a276a664568 *5740675e527c7860b4ab9c8c7751746b4419140417110223201323261b231505261d0d391d0b1e *14081e1b1222160727170335230b0000000000000c120c0000000b0d09000000000000040c011e *17061e0b03150d020b09001d14051a0b010b0902150c04171509100b031d150515140616080313 *0a040f0b010804000303000505000805010603010e0602150700150c02000707060b09040a0700 *000003070600000000000000000000000000010005080005020000000005000006040007020004 *03000000000000000003000807050000000b0500150a010f09000504000000000000000000000b *06000b0400110600190b011000000603010000020000000000000202000c090212090000000000 *00000807060704050c0f060203010000000002000103000002010c07090e0d09130a070c080310 *0d081a211219170a1e0c0514140d01000000000100000000000000000000010000000003000006 *0000070502140a06130c001d15071510000f0d0301000005000005000002000000000001000003 *03000002000d0e02170e04150d01130b061109020804010a0b001d1308161105180f020e020007 *0000000000000000000000000200090700100b05171102140b0714080810060404080a1512060d *0c040601001a0c04170d08180d0c120d0a0c060701020200000000000000000000000000000000 *00000000000f0f0b0505080b0e0617160670643f887a4a8d866b857e70391b1820140b1e1e142a *20062011020301001a120436170b362215301c0c25160e2620123732191e210f837b3d998c6da4 *9375a5976e9d99862b211c000600001001000502000902000000000000000300000503000b0400 *0c04000d0300110100080000000000070300060200130c00120500050000010000030000030000 *000000000000000000000400000000000000020000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000300010000020000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000002 *030200000100000000000200010005050000030100040500000110050501030200020000020000 *060400020200000002010100000001000000000000000000010000040000000000000000000300 *000000000000000000000000000000000001040200000600000006070801000403010305050900 *0601000200000003000004a9bab8bbc5c6120e0c1206040e03050e05091c0e0d251e10130d0300 *000000000000000000000000000000000100000300000000000000000000000004050101000000 *00000000010500011c1e093032172e3416161a09050c082c260e0603000b0d0b10140f0e130900 *04040004020000000000000000000000000000000300002e280a1e210b1e14092d260e3a1e0b2e *23122d2d1c1c1507192009080d0402060100000000000115211c1a280f11120703080300000000 *0000000002010400000000000000000000000000000000000000040a030c1508282c17232a1103 *000100000000000000000000000000000000000100010200000000000000000000000000000000 *000000000000000300090500000000000100000001030500080700000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000100 *0000000000000000000000000000000000000000030202100c0b0b0602080703050803100d0a15 *0d0d0e0a100b0814151010140f1112130b0b07040d130a1809070805010807040b010209070410 *110f0f120e1c160f1010020d07030f03021208061c100c1c1a172417102a2210261a0e2a251f21 *101429221901000009050639382e2725182424182e2413201e10241d10291b0f2f1a0e241e1e1e *1c0f2b28162b2d1a272b18352a192417122a1c1428130b3526172b20182c281f1d120a291b071e *1f142d251a362d2837221a3436301e22231d1a16393126403e3d4e473b4347353c3b384740363b *31302d292228201946443e7178695f655d51524e584a475759584f4f454a3e2e3c2a193d2f1c4b *4d3d4e4b3847453654483b5c5c5858616851585d545f54445253535d684e62644e5c67272f221f *2624372f201f1c10221a0b2d1a0d1c150f2d2b1d1b1c10332c27242c252a252749452c8c805b7e *78647d65477562497564486f4c2b7d654b806646876a516c533771593d65502f7c654272512d73 *5f425c4941635745776752b6b0a582562d795e43301b0f351d0e29170e2d211d21110b2d1e0c2b *1e0c39221225190e251007300e092814100500010000000909060000000b040000000000000014 *0909200f081f0d072112051109041712041707021207051e0d051f0d051e0b0820190c1c14061b *0f061e0c041f0e07140304170402120c070c0808040000120600160d0412110704040003040c11 *0e0f04050d06020b0000000000000400000700000900001700050d050b03000404000300000009 *02001303000900000000001100000c0506000000130905140d060f040008010100000000000000 *00000600010b0004140201110500150c0713040009020000000000000000000005020306040400 *00000000000302001209030e05030700030000000000030903020a04041e1914301f192920191a *0f0a1f090a1c1513251712200a09281e141406010f09071d0d0b1002021e03050e020023140930 *261d15110c200b031c0a0325100739241626140b2b1a0f281e0f2e1d0d2b1d152d231123140c2c *0b09220b0920140e1a06020f09051508001610041507021d07001d07021f0601210d021f150918 *08030e02020200000302030501000b05081605051405041e100c1f1a1231271425201528210b37 *220f1e19121806001c07031c100a1f110a120b0a0c090506000001000000000000000000000100 *000000000003010006090a110c060e07071a0b046e695b8f897c8b867c95887e372822210a0129 *120b2a1a0f261f270000002310094b3a230801021d14090b0d041a100a1309041c0b0a3d3c2b46 *3d2e493d3947422a827948464b3e02040500000000000000000000000000000500030000000000 *030100000100000000000000000000000200030600060400030100010000000000000000010400 *010300000000000100000000000100000000000000000000000100000500000400000000010000 *020100000000000000000000000000000200000100000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000409070600000000010000000100000300040000090400000100050901000a050508000203 *000109010702030c02000301000001000100000300000006000403000706000800000900000001 *000001000000000000000002000106000400000407000603000001000301000306020307030a0a *000908000a03000a010007030004abb9b9bbc4c8141511110e091a0f09271b0c311d0b2b211113 *040300000000000000000000000000000000000000000009080600000000000000000508100900 *000000000000000001000026331f2432150c10060000000000000106080f210600070200010207 *01000a06030000000000000000000000000403000d1203090f0a23341c262d1726301f200d0c41 *361e3535192d2b0a1818071d14070100000102000000000000000000010c1b0312210903080000 *000000000000000000000100000000000000000000000000000003000015160e1d251014312800 *060700000000000000000000000000000000010700000000000000000000000000000000000000 *000000000000000000000000000100000100000001060300040000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000002060509030109060802010710 *0a0809050c0e140b0b070214170b1a15081408060e04020e0707130c0d090a0a05090508090308 *08000e0b030e0a0616090a160604090607090706171508160d06141408271a0f3129193a241d29 *20181c1e1d1d1d151107021c1a14241f18331c0f1c130e1f1a0f2d2b23251f1a23211a2b1e1725 *1b182619122b2312362f1c3031261f241d221612291d092a1b0e2f2c1a3c2d1c201108241d0f27 *1c14261f1c221f1c2d2c1d2f3a271524230e150d0308084049493b4749415e6e42515220313d43 *59551f2e3b242e2f101e272439348e949545484928374c2638431b232a4848423b35203530213e *322937251f3a352c28241644443b272d310803051e20290803060b040b0d0b110000061c1d1b00 *00000201003d504a2b241721150d2e2014231e133b3a2d3a2c17392f1e2e2210322419473b2878 *5f4f7b5c4e7e644f6c695870603a7e5f3e61534017100f5f5c5c24120d1207055349388680666f *5d3e6c4f2e695847745a46705b4eb3aba47b51337f6e5b30120339291337220f3826122a170e33 *11083d1a0d312516291a0e1c15042013032a1c080f140c000000160d0b02000307080906070905 *00003f36212c220d2618081a09062010081a0a0810080c120504170a05230d01281c0820160918 *0d0e24190a1e140a190e04180a011c0e011510060f0903100302120201120401130d0801000100 *0000090e130308090507080200010300031f171306000000000007040305030203020107010109 *00001205021508030800020200000403030c070708030009000016050013030004000000000000 *000000000008000008000009000009030207040309050401000000000000000000000007010003 *00000000000000000000000504050b0b050604020000000301020303000b0605120c111e130c1d *1914120d0812090219181323160e2e221634261816030312030311060715100b2613051e100133 *1c0a352318210604260801250c032a15062f251133230f2620122b29152f1f172e140f1a100b1e *100b1e130e2114091e12041c0d00140200160200190702170703140603160705130a04170c040d *02001902000f00000500000a04050500040a05030706021108000f03001c180c221609150c0814 *1107160c0b12030615050013050019080227160726100310080504000500000000000000000000 *00000202000000000100000d0f0a08070a06040a130a064c45305a5b516f604c93937838252c23 *0c06331b19311f17150f0f0100002f1e0e1408090300000500000a00000f00000900001702002c *0c0061220768350c79461b876135413f33040c0800000100030200040000000000000100010000 *000100000100000600000000000000000300000000000200000200000200000300010200000200 *000000000000000000000000020300020500020500000200000000000000000000000000040400 *0a0800090500010200000500020500030200010000000000000000000000000000000100000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000004000109050800000400000303010305010004000008000303000204000a08030902 *010b05060406040703050602000002000002000400000200000200000002000000010000010207 *0f160000050f080901000605000303030400000401000204040307000400000200000300000100 *0000020001030103000306000002010005abb8b8bcc5c90d03090e0307210f103b2d1f20181c0d *0a1100000000000000000000000000000000000000000000000002010d00000300000100000000 *00000000000000000000020000070e190f1321110d150f00000000000000000000000100000705 *09130306030f1519080e070000000000000004090001020000000000000000010500000500001d *150b433520423f211d2313080a090c060a00000000000000000002070410170e1b0f0e2028171a *0e0800000000000000000000000000000000000000000000000000000000000000030600050600 *000000000000000000000000000100000100000100000000000000000000000000000000000000 *000000000000000000000000000000000000000100010700000700000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000000000000000000000000000000010401080803070c040807 *040509080a07000812071013080b150408130306140e150302090c141d08151815151d00000812 *090d11040818110e12141519160e140d090b04070a070b1906091a110d251617291e182b1f1c3e *312946413540322f38241c3417142419151d1716241d1a261715302c263d382f261b172e1d0f27 *242126201f30282e1d181d0100070d0f170000010905090d0807130e16322225301f1d22121613 *090a28181232221d3826193b373b28272a00000402000d000006423e3e1709090e02061e171d00 *00002b303600000518171a05040e11070c939196383b2b0c070e1b1c241c0d1649465642342843 *3120412f223225194333244036284f4631332e300501091e1b2105000300000606060e0000011c *213000000603000339413c211919220d0b311b1a261914321e1636231c2e1613281e1d2a2e2440 *2a26807a6788795f898463644d307d62457e4c3b4e3d2f000005484348170c090400045345327c *6c5e8276707b6f5d78634b53453b776447b6b0ab8160448e7b5b442a1632160a3e241635221b26 *1914301c112e21112e1f072c1d0b2a0f09260b091b0a0d0b061300000802030c00000008020601 *000103000312090f1000071d060a13070c1806082c171027150b2b140c1906062915142b141324 *090a1d06041a160a161105190e031c0f0a260f11220508150a0e060004120c0c0f040309080800 *00000000000000000300050600070200040400050c0d0d0000010300010d010805000108000402 *000504000306000007000000000400000000000000000000000200000503000400000100000000 *000000000101000200000101000300000304000303000008020205000000000001000103000306 *00030000020000000000000000000900050f01090a000600000100000401000403000016030615 *0c0b1806051203051c08092e1c13270c13361915180d090903001a090411000217000223100c29 *1d1321180d1e151423120e13050329150a240f0d2213121f140e23120d271a151d0a06190f0615 *09061106090e03081603041606040f00020d02021c05021303030f00031f03041600041702050c *00020800000a03050400000000000500000400021000031501030c00000e00041709081c110c1a *0a07130d041003091500031600021400031700001d090412060504040700000100000000000000 *000000000606000a0500080801051a13101105091102091a080c2f251e25191b3b2f2348403031 *1d1e1e0f062b1e103d1f151808050500002714160100070000011103041207031003031e0d0f22 *0b097d582f9e8c76a49c97a4978ba3937f36373200000600000100000000000200000300000500 *000400000000000200000300000400000200000000000400000600000100000000000000000100 *000000000000000100000300000200000000000000000000000000000000000200000100000200 *000400000000000000000000000000000300020800000400000500000100000000000000000000 *000000000000000000000000000200000000000000000000000000000000000000000000000000 *000100000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000004030706040a0700040a000309000703000702000c04010c00000002010405 *03050400030800070d000903000e00000a00000104000900000200000100000205000406000605 *000e09091804030804000601000008010601000305000603000603000802000800000200000200 *000300000204000802000b050008000007000008abb7b9bdc4c80e0c0a0b0a07232210070e0900 *0102000005000000000000000000000000000000000000000000000000050d05060c0400000000 *000000000000060000030000110400070000030800020000000000000000000000060305130104 *11022b382214240a000000000000000000000000000000000000000000000000040c031b281228 *3219030907434d293e431722260515280d22260f0109020003000305020815070d1f0a07170304 *1500020b0100050100050000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000000000000000000001000303000000000000000c0500000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000000000000000000000000000000000000010c0e081b231c0f *160c10090313100b130c05060d08050e0a040e07050d0a131c180000000b0a0b00000000090700 *00000602000d0d060e110c17231d1d1a1314090d0e0d080c110c080e05130b0511080422170b2c *28172e321d231d19292e292c371e2120131d1f0e20200914150c1b19121d2019201f12221d131e *190b19261d25281c2a2d23141610000203090b100000000101030604040a111025342d2724181f *1202261e0d17120c211d170e11091d18151b271d0000000104020000003d565c19201700010c11 *1e1c0000002e383500000001090f070305171f258a96982e3124070503131a13060e0d4651443f *3e24373e282a25143d382b332618393320413b22242a1e00030011191a00000100000304090d00 *0001161e20000000000000304341201f19271f153a381e2d2a2030281e24261325241222200b43 *494750463f999a996d6948857b5c7b6c4d796f50755c3b574931000000463c3616080400000049 *3e347066456d6145696d50655837605c4e77694eb0b0a57150388c7257361d0a3a240e36280c2f *2a0c3e2f163926104326122d180b331d10281e09231b070f0d0500000000000000000000000002 *0000000001000000000000080c011d0f050d07001d0c05221106230d0a2016071e1205251d0a1e *1604201a0c2b160a2516141d140c0f0c08181106170e001c1a050f0e0302030109030312050403 *0201000000000000000000030c04070f0509130a11120c04070b090002060300040a0009040000 *020000000000000000000102000006010000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000030000010001000306070a030007080000000000000000000300000d *0c0a110804100905090804090a001618052523151e15091c180e00000000000000000000000000 *00000203000101000805020000010600040912130a0a0206080000030000020000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000200000200000004030400030200040400020300000004000005090407 *130e0202021610073e2719391e0c120402000000191b140000000000001a17091510050a110712 *11071f120472572aa28c769f987da4916ca39d782a1f1e00000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000001000002040400030300010000010100070405010000000300000000 *000000000500000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000100000700000000000000000000000000000000000200000400 *000000000100000100000000000000060600000000040aa9bbbabbc4c817080c1e110c1e0b0609 *0203000000000000000000000000000000000000000000000000000000010a130f1c0a01020000 *000000000300000300000000000200070c0102010000000000000000000000000c0e040b120707 *180c0b090b1729170000000000000000000000000000000000000000000202071c200c1e250d15 *1903020302060003203a2024260f2f2e183130150e0d060000000600000809000c13061a220921 *261705050600000300000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000000000000000000000000403020c0600010100010500010500000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000000000000000102000000000000000000000c02031e170e0e *10090403030a0a051004080a0a080806091106040e050616080d1d170f00000000000900000206 *0b090000000a05080d0203160703121d0b080300070503181a0d13110e1203061d18121e101431 *1f193937272e2a2033362c201d122316111f140e26150f2314072618111f150c20171620191224 *2a2026241e2b221b1e13102e2726201d140001070d0f1000000000000209060610060b2c272725 *221817130f170d08230d0628211924261a2b1f1d24222000000008010600000042474e0e100f00 *000017191a000003272d350000000a04090000032a2523868a8b2e261f070208090f160c030941 *444b48422f3c3a2843382c362522393c263d2e1f37373b2b2526010000131a1b02000403000206 *0b0900000014141e00000000000043474b271f1c2a18152f22101d1a0f2e2322372e262e1f1827 *231d2f2c2c39322978765f7a6f4c6a532f6f5c45735031634b365c4635000001444341200c0502 *00003a22157a6b4e76644a7d613e725f485f574d706557b5b4ad7a53398e886d4f351c3c1d0f3b *1d09371f0c2f1b0e321c0c3a2a203b291c3c29183a190a381a10221a162603041500002407001e *04000c000010000016050629180f22120a1f080a100403160b08251506231d062917032410072d *180a26120e25150d24130313130917140c120b01170f0614090a1605081f0e0b0e000413060218 *0b010b06000b05030900010c000212080908060b09030106000007030206000009010108000305 *00030600000700050000000000000200000000000100030000030b0408090304100a0f10060714 *0602110c0c0d05040c00010c000010000008000007000006000007000506020405000000000000 *000000000002000003000001000000000000000000000000000000000000000000000000000000 *000004000401000100000000000003000301000204000302000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000004 *000002000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000100000000020100000000000000000000000000000300000700000500000700000b *00000200000b000005000001000006000007000006000005000009000010010009000000000002 *00000000000000000000000000000000000100001001000802000902000801020a00000c000309 *00020600000500000a08054d23157045202a17190000001b0b12030003030000190a041f10040d *0b001510021d080473522ba39281a38b69a088659a927c29171800000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000003000100000002000500000602000009000509000603000009 *02050000000000000000000000000f030205000200000300000000000000000005000001000000 *000000000002000001000302000400000000000000000002000000000000000102000500000200 *000003010104000001000000000002000409000a070008030008aab8b9bdc4c81810101c101325 *1c09020504000000000002000000000000000000000000000000000000000000040a0611210f0a *0a050000020000000000000000020000000410050000000000000000000102010a1b1308181809 *190f0000000102020006010000000000000000000000000000000000000100000b160408150606 *210d0910040004010404050f00032626183831192c240b0000000000000000010b1508101b0a10 *211211180b03000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000005020305010400000000000000000100000000000000000000000000 *0000000000000000000000000404000000000000000000000202000a0b00000000000000000200 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000001010100000000000000000000000002010111 *160f0d100e0708040502050c0609120a0e0b060d150d0808090d0b0e0b1e1d1601000004000a00 *00010e0f100000001305090b04030b070415130a0b0e09170c0c210a0917090b18171a170c0a21 *170f291e15311e182521193424173324163d31243c2b202c241d2c1f0c1d1c0e2b2615271d121c *140a1f1a10271d14272a22232319272922262a22010101080b0c0000000000020a090b0d060b1e *1f161e18081413071710062a1d132718162c251d40382c3237310000000302020000003841480f *110d00000112141f00000529292b000000161a1e020200293136887f8b3b281e0a000a160c160e *0407444e4a514b38483d2b48453339372c371f1b4736274f4942272829040000211a1909010102 *00020909120000001a1b23010000040201393f35332f1e381e1a3021152e17104032243c392d39 *2a182e2e1d30312840443a7d7e5f69624e7861466a66475a49306c5d4056412300000047454325 *241a13070d5c453492836f8679595e5b43695638544731684f43b1ada98560489889794d31194e *241440260c41250e4527104429163f281d2a201a3a26183a2c1e331c0c2e170a3a220d2b1f0929 *180a2312071e11091d090b1a0a0d29170b3b2815231303210c051d0c0a27160620190f1f1e1621 *0c091a14092013081c1404161608140d0914090d16090e18090a190906181004190d0511080019 *0c031a0c06130503110102110508150b07191309120b0608010108040910060b06000305000505 *00030100000200000401000001000400000100000000030600030400001008000b0600130d0517 *0a0412080c0902021906060c090c1a1009130301190b0422140b14090617150c18100a16080916 *0c07130605190f091411081a1106140b0a0d07050f0b0b0f0503110d0a09020700000002020102 *0809100f15151817161b201a12161e18192012152019162626171818131a04030d00040c060d17 *0a0c130a15180b0a1e0b052a190c241c081c0b00120604130a081d07091d130b1a110c1b120b2c *2212351b0c311910261d1727170f1e0b0a200c0b190909130a041005020c000003000204000311 *02041103041004041e161116110d0d0f080f141106030508000206000106040b251c1a1f1b150f *140c1b180e15101213110f1c110e1c1314180d0e17070615070b16070a1e110a271a0f15080a0b *04060b08090600000000000000000000000000000200040b06080c070a0b05070a070b08010409 *02030d0102040001020000010101483820695b4c2c252b05000013080b0200000b03011d1c0d1d *1305140300130b05251c0c745e33a090749f8d779d9180988976301b1e00000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000001000010081207010a00000701000100000405010705030311 *040321171a0e03040200060000000000001c160b00000000000000000000000002000306000700 *000000000000000004000018161802000000000003000000000308010801000300000000000000 *00000400001507090000000000020000070000011a0d05060104040000abbab8bcc4c800000100 *000900000300000000010300000404090700000000000100000000000000000000000406070a12 *1e1419200e0006010000000000000000000003020000000000020505061b1e0e05160700050000 *010000000000000000000000000000000000000000000000000000000000020000080503100902 *0608040707030c02000000091405112109222d1910220900010200000100000000000000000000 *0000000000000000030f08090a0b00000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000300000100000000000000060000040300010000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000100000000000000000000000000000000 *00030304080b1012080e0e0409040a0f07040a0908150e080e030909050d090527252300000100 *0004000000030e060000000104030907050700070f0a080305000d0c060c190d080b02090a051c *170d20180b3237233b2f1c2a291e272d1a2736312a272422140c28130e201f1429241523251423 *201a272e22282a1b1f201a1d25241f211b2a28271e2320000002080a0c0000000000030e121305 *100f23241e292a161b1d121b1e171f1c142125161f18133932263c3e3b1305071f211e1b0a0c38 *465c30312c1615132b393a181a10363a3f181719293031292e2c373239867a7765636046585441 *5149424b483f3f394b4f485f544154472f473d25453f29504334555e5946433824262128383a27 *302f2434372232371321251e2e3210221f101b2930353537301f1e2022221b0f261e1633352743 *402e322d2027231d2c271b4742358c80667564478178578780646d5c2b644e2e4840350200011d *1d2409070900000046432c8b86737d633c655b3d54432d63563c646150b1a7a179573c7e7b594a *2d0e583b1852341b44371c412f1a432818412f183e311a3c3111312a0e3b260c30250d221b0f23 *160d291f17301d0f221f0d1a150c1511051f14081e170f1b160914130a130b081b1c0e1a160a16 *0d0821100617070313150a130b08150d08110c030f07041106010a0602130806160b0614070409 *0006150a0a0c07020406010603000602000e07050a05040905080802040c020102000000000000 *00000000000000000000000000010000000100000000000000000000000103011308070c050510 *09090906090f0a040a08071a0a050d0c06140b05100906130b051f120e20120c1a0c0112100215 *160917130818180e191007110c0419090717100c0a0909060506120d070c090800030000000001 *0001030005060505080c0e0606060905010c080304070715160c1d1616221c1728211a10060814 *0d07221709160a04140f0621170e3b2e222b2e241a140d14130b10120a1e130a1d1f1517150519 *12091d17152820152e22162226192a1c0d211c041711051e1b0c190d0b130f0d1005070b070310 *0c080c10080f100a15130b1f1d1814100d0809070a0202070a03100b07000801040d0e17170e1c *100e16100c271d161e1408110f05150d052213071c1e0b242112170c0a1a120d2c241a25160f12 *150e0c0d0a090c090b120a0000000000010000000000010000000501030205050809030a07051f *1c122a150a29251523231f0000000000000000000400000000000000001506080c00030600011a *0b021407030004000a04001713056047219a8769a48b76a69a86a09b8b29201e00000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000004040700000500000004000000000200000003 *04070a010217161b0401000000000000000000021f2b1a00000000000000000005000003000300 *00050000000000000000000a050c10141703000200000000000000000004010000000300000000 *00000000000300010c060f0000000000000000000000000d0706010005020007adbabcbbc5ca00 *000500000900000900000200060a030a10040a0a050d0f00000200000000000000000000020900 *000407140f0e150d0d160c0000000000000000000002040000030000070e281f01020200000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000113170b14210b0001020000000000040003091d1f1601000300000000000000000000000000 *00000000000000000100030b180805010100000100000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000200000200000000000000000000 *000000000000000000000000000000000000040700070b000000000004050a0601050c00070f00 *000100000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000100000003000000000000000000000000000000000001 *00060100030603030a0307070403080a060c08090b050c0c020c08060c0a070515130e1e202000 *000000000900000100010b00000004000a0d050111020117131014160d0d0b0a09010804000415 *04081f140d2a291b3a33213d3526281d1628231d29291d261821271e1d261a1a221a0d231f1d2a *251c36332121180e281d171e151320221d1f2024271a1b29262a050608070a0e00000000000108 *080c0604112424261f1d211f150e1e130c141c172a2622392824423a343a394001000a22272604 *0000464d50262627000006080e1c00000e22213000000100000300000001000072798040352e18 *131e2120250c0208353d364841374a49404749304f4f324d4132524c444f545132383c0703030b *151c10171a0403060d0e180000041817280700070500023d4451393b30221f0f1f1d14241c1d29 *241e272524382f2a30352c373122524a408d8d82797261775a4258473c4b3f2e60503b21191300 *0000090509000910000003271c1e5e534885796669513c624e3c664d35554432ada79f80655189 *755b4c302054351d4d29133a26123f31193623173a240d3b1f143f261c2f1b0f3d1d0a351b0f1e *0a0c22160f24120b221914210b0b311d15281c17150b0d1708071a08021509041809041e090517 *0609230906180c0d1d0c141404031805031f090c180b091308061708091f0a0a15030615080616 *0c0a100304140b0a19100a0f08051401040e0103110003180a0d0a000500000406000104000500 *000305000201000000000000000100000000000100000000000000000300000008000015090a13 *0a09120b060d0404160f1309040a170907251b1723180e17090a140b09180d0d160708150b051b *1a12160f0a1c130d170c070c05080c080b1307070a040913060b11070b10070b1d0f070d010400 *0000000000000001050003130b0b16100f14140d1912141a0d131c131019170e2a1e1e201b1526 *130e27241c22140c21130b28191232181a221212200f0a1c140c1c15121f1a150f07121b050921 *140e0b0b0b1d0d081f0f0e1f160e1e13081e080423120a170f0e1f0d12231e1c1d1b1814080511 *06031b101115090f1c0e1215070d1a15171209070e02050e040509020305000207000510020b26 *1b171d191c16110917170c1d1105241a0e1d180c1c140b231e1b221115200d111a16142d262323 *1e1d160b08120a04090005130c0b00000300000100000000000000000004000105030406040810 *070f44332663524f1d08061c0a091402030a00001406051201070f00071b03044f392b13020001 *00000d05051408010203040400012d1414664d299b8569aea190a99d77a39979261e2200000000 *000000000100000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000000000000000000000000000200002f1f184742380a061900 *000000000006040428242b03000106010409000200000300000000000000000000000000000000 *000000000000000000000500000200000004000600000000000000000000000100000400000201 *000000000100000700000501000301000000000004000c0501100a0416000000020001acbabbbb *c6c90000020000000002011a290d0d1f1104070401000001000000000000000000000000000000 *0000100d0a141c0b1626140d1e0d00000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000002010613050811050302000000000000000008060b170000000000000000000000000000 *0000000000000000000000000000030e01101e0e0c0d0206020000030000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000002030007050000000408000909020d0b020c11060a0e0a061908000b0800040100 *000000000000000000000000000000000000000000000000000000000000000000000004000000 *00000000000000000000000000000000000000000300000806000c060200000101030000000007 *09000305000000000404031115111510080a0e0a0f070d110d0d1315130e0a050d0a0114140513 *180f0000000000010000000000010000000c10080a0200201d060f0d080e0b071b110409010804 *02000b0b061a0d00221608221b0f1d110e2a25233c311d201c15262c18332317281f092a210c1b *160b271f0f2523152a271c221a10251c111e1c151f1d111b22212122160001030d0e0900000000 *0000060c09010406232c1f272a1b1d1c13141514231d0c2e251e322f272221152e402600000019 *23260500034d5452222c350000060e0d0f000000252a1c000000030105000000000000696a7438 *35300e14131a29200c1009424e4f4c4a3c484f3b342f20443a2a4a45394142283d3e3030423701 *01010b0d1b0c0f10000000100d0e000000141b220208060003002a3c3e2929233c30184032222b *2417292f213730212a351d30361d42381e4438337a5c406e4f3b64472a6241224a3f29463f214a *3a200600001f1809150d090800001b110d808184887c5e6563475f51376a5842816044aeaaa081 *673f9688565f341642270b4125083f2d163c2a16432b124127163721153b291c302112381d0641 *311a371c042a18082115054841262c2614301d0d1e1101251405230b0527200c201508200c062a *160d27180d2510012e1f0c26220c21150621110a2310092924242b1f0e2a190c201a10160b0120 *1a071e1d0e1207011c0d071b16101c11061e10041f18070e0f04140f07130c07150a05160b0516 *0703130a021b0a0105000003000000000006000000000002000008030000020000000002000002 *0a0d1006040b05011c0b07170605150d0a0b0f0925271f1c201c120f061e11032014091d18081b *0907211c10211e101d1a101b0f07160a03150b041508001a110518140d13120b150d03130f0409 *08050000000000000300000a04020b0604150d0b120d0c160b0c18100b1e160d312918231c1125 *1e12281c0a261e0f1f1c0c28230b372c1f2e281d3b24182f2b1b2614071d07050f0f0b1f150e14 *05012111081d1d0c2a201625170b271a0c22160a1e0e041f0d07160903261d132e180a1c0c0226 *180a201506130d0b0e110a110f0b1b0d041709030d02010700000b00000d06000b07030a03000a *01032118092a1f0e352c1a2d281b2f240b2a25151b170c201405211917291e0c1e1c0b231d0928 *140a210a05150d040f0b090b04090704070000000000000000000000000000000602010b020111 *0b0a150b033e3115836d55836b438f774b43281b0f06043b21113c281a31201401010039280c15 *04010c00001e11061700020000000000001f10046d541ea19178aa9c82a69279a4937e2d1e2100 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000003000107000024231212211900 *00000000000100000a00000f152100000000000000030605000003020004000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000000000000000000000000000000000000000000000000000030000ac *b9babcc4c700000300000207030c05070d00000404080900010300000200000000000400000000 *0001000005141c10132a1f1d28141a250f0a070217142a00000000000000000000000000000000 *000000000000000000000000000000000300000500000000000000000000000000000000000000 *00000000000000000000000002000000000000000000000000000f1a1000000000000000000000 *0300020301070c03171d0b0a140a0000000609040b19081d2711040b0600060500000000000000 *000000000000000000000000000000000000000000000000000000000600000000000000000000 *00000000000002010000000402031d140e322c252f301a0e10080c170e0f20180c140d00040500 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000000000903010000010200001513070c0e0300020401040300 *00000b070303000100000102060912090505050810120f0c05070f070817181c1d14111c1a1318 *13131813080000000000010000000000000000001807060a0408110b090c0b030e0b04111a0b19 *120f12070b09000427140c2c230e291d0c21170a272421353123301b172b25193f332a332d2024 *1e1a30362b2a22201f2c21292820231915231e1423241b2123221114152a2d290000000a0d0802 *00010401020e0c0b000001090d10171521202016151a101a1f142924212b22213e2c1d212b2f00 *000608122100000636424b1f31300000000a0d1c00000218182100000500000600000000000052 *58622d2c270c0b131a242c05020b4a484a49443b4740273f36273d402e45413c4d3f304e4a4734 *3a4505070f0c13190303050000000f1312000000070613000001000006302d3a2c2a1727281c31 *3e223b382b2a1a142e251e3b2c1e312c23423e32473c36807655787460746a4d7c6a476b4b3a56 *3f2e63563c4c351f503a23594b2b5646365f4e426f6960837e69614d3b5d3e335e5d53656457ac *a59a79593796815e6242244c341a452b19443c2650351a4527173f27124024173527233e342a3a *2d2141352c4a30213a1f123a22152b1d092a1d0e2c1b0c3716092011092f1e1b322e1f251c0c28 *190b2e35253521142f1d142917102d1c172c1d1d3a2c22180d05271e0a23200d28271e432b2228 *19121a15131d181b160b062a160924190a1c13081e0a081505081d151015181a15020415080912 *0402130b04140905120a0f0d040901000307000310080b07050303020101000003000003000405 *000208000a0b020d0c0306180b08170602110304020000000005030002120b0c1f1512281c0d20 *1c0d14100a090810040b100d090e080b12131010170e0d1a0e0719110e1c1e1e1d1f1b1b160d11 *0908080507010003000004000001030000090404101013171313180c131505091c131526201f26 *211d1e140d1d180c291b0d2027212e2823272b26211c201e1d1b25261c232522201b0e0f0c091d *120c170f12180c0f1915182d261f2b302c25242516212419211e31281c1f191819121e24212421 *0e0b1f170c1a1209130f070f0b0b11080a13050c1703090a04070a040406000006030306000308 *04050a0a05382d29393123303a2b26312d2728162334261613141d18151f0f172116131c171d36 *352e27312d1b1f21201d1f170e0d10090c09030900000200000000000000000000000018191519 *130c150a0c1a060745331e9584758a7661a098845c3c3a1203003f31233824192f242d01000020 *12140501040200001904041d1204000000060000231009634a2aa2885eb09f96ac9c97a0987846 *3d3d00000200000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000009000004000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000100000001010008070604040a06000400 *000000000000000500051101020a00000600000008000001000102000301000204000006000300 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000100000100000000000000000000000000000000000100000400000503 *0002aebab8bcc6c800040600050304080819221107090300020000000000000300000000000000 *00000000000000000a1c0f3636181d240f0c1c09112410000903020c0701040000000000000001 *00000c190a00050400000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000001000a130100030000000001120500060400010000000000000000 *000000010001170d000907081307151e0b0515040c19011f2d0d081402070e010c1b0d00000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000000000000000061311030e0d070a09060300060603070c040d160300 *080500000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000000000000000000000003000708000d0a00040d030b090100 *000000000000050100000000000001010006030312140e0a0c0e0201030d140e12140a1d150521 *2208190f00060b05030403060000000000040406000000090d09121304170a0b180d09130b0b14 *1a0d0e0b080509070c0d041e200a2a2617302e133e30164833295b392740362b26211530290e1d *1a082c301b3f3d2e45402e2f2e1a30291b3029192f271621251d1f221a0e0a041006040600010b *03040901011305031009000606011208011d110a1508040c0906120b041e1c141c1a1637423c19 *1f18000000000000000000303836120c0f000005071215000000101d2305060500000000020700 *0000585058413b3007070b0e1a10000400363d3648492f3f2c1c403e35403e303a352a4847333c *3d252028260604050a0709050305000000080c1300000002080402070100000033434b272a212b *2016231c1431251a2a24153c3a1f27241225301e3c361e372b237877626a604676694f5d4f3b76 *75547a7664614e2d493f2660563e6d58406c65546d5d457164467e826c5b47346a584457463977 *6347aea8a28d6f479a9074664c1c563d174c381345341c523f2045270f452d153a21154a3e2745 *3d212417053b23104323155941244b3f293b251538291542351a3b301635240b3f2108503e1b33 *1e091f10063d371d402e1e31260f1c18051e19082f1c0e2a27182316081b170d18140c1b150d23 *1506231502251605281b091814091c140e120c08190f0b160a051009000b070012090015130718 *190e121812070b090703041108030707000a06000303010405030c010103000000000000000000 *00000801000c0a03120b0b1404001a0c06121008090b050000010000000000001a16071d120624 *12061e0d051714050a0602020001020000000000100a05191009170b010f08040000000003060f *0c08100f060c0402010000000000020100060602070605050f0b0d10091209030a0a041c12071f *16072215031e1107181612171c100708070003000a0b0100000001070703040c00000311140c20 *150f120b081a130d150a041b1509222225030505000002000106000000080d0700000001000013 *130d150e06190f051710091a120f15110d0d0a08120a001009021108021407031a11060c0b0900 *0000000204100d05353e282b392f222a26141416171b0f130c05140d0c14130f1f1f16201f1e16 *1c1d29262019151200000003010404090612160b12110400000000000000000000000000000002 *0503040a050405060a03032c24106e745c908d789c9b9149332d13040035311d261c0f1d140b02 *0000211a10140904020000170901150b05000000000000291f0c765a3aa39d88a48e67a19179a0 *9a9131283200000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000000000000000000000000000000000c0a000b070403030000 *010000000000000000000000000000000000000000000000030000030003040004040009040006 *06000a010000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000020000adbabcbbc6c800030c00020d04070c040b130f1811000c0b00000300000200000200 *00000000010000000000040d20181a2e1d1e2b1d040f0d06100a00000200000400000400000000 *000400000400000200000000000000000000000000000000000000000000000000000200000000 *000002010100000001060700000000060503100c00090700000000000000000000000000000000 *00000000000000010000000000000706032837270b140c11130a16241216211017231b0c1f0f00 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000300000000000000000001000100000100000103030300040600050600050500070503 *080403030502020200000200000500000100000000000000000000000000000000000000000000 *0000000002000000000000000000000000000000000002000009000006000207000b0700050200 *020100000000000000000000000000000100020d050c090d0d08060705070407100d0e16101610 *131217171a221e1217170b0e150a131610221f1e0d0d0b0a060914110d17151c11131809060412 *110d171c0e16080701000804040a1d111424201e2b220e5047346d6453858164534028221e1823 *1e1d2327241f23222f2a183538262c2c192622141f15151f151124221a24232320190e1d1d1420 *22171b1b0e161411281d1b1e1718252120272d2e13160b19220f17110a211e161e241e1e1c152f *39341b292f000005000002000003213133070d0b000208101d2200000e262a3d04081000000200 *060f0000005c55525e58490100060b101c0000051f23232e30222f2e233e3c30343020343a3136 *40343540321f20270201030203090002080002031219180300050a101109050b1309131f1f2924 *2624211f15272b1e38381d30382b3c322a3d3a353e31201d22142830206b6b5c6258394e432f58 *43327f6f557e7b6a686253756352736a5f69665678674c5e5747513e2f8671627666506b6a5966 *5940676855a8a89e91755a977a65664d2d583c204334243421164c38223e2c1544381e46391f57 *4d414039312e1e123a2a16351d16271f1635190e27160c311c09291c0e301e15392a202a261929 *221c1a10062012062d1c1724170d27130b2109081a0909271d181a160f1e1d172f342b1d17161d *1309292218231e18190e0a0a0a0c08050618161018120818151014121218120d12100f0302080c *0b120b0b0b0c0e0d04040703040c05020b0c000504000300000100000100000000000000000004 *000000000007000700000404060f110b0a040307060b0c0b0c0a0000050000030500051a100917 *120d1e160d1f120c1f170f0e080a0000020000000100000807070807080d0b060d0e0900000101 *04070d090c10080c0e080c0000020000030000020000010602030908080c06070b0b090d060711 *120c150c0310160c15170f16161316130e040002000004060c1600000300000700000700000014 *140c1418161c1318221c1b151b1c1e151816182100000900000000000300000000020700000000 *0004130d13160b0e110a08100a0817180d1a110d0f0a0e14070c02020c06050a1305070f09080e *0b0b0000020000050e090e2e2e341e2e47212b341014171622231014170c1617121e251817171c *212d1a18232c2c2e131d2100000203020409060917090714080900000500000300000300000000 *000000020502030a0100090601040a09081a191c2c2e1f595347292026040201231e1f2213101d *07090200011b1111180d0b0502001a0d0618130900000004000327211c6a4d26a49681a6a386a4 *9d8ea59f8e47433f00000400000000000000000000000000000000000000000000000000000000 *000000000300000300000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000000000000000000000000000000000000000000000000503110e070d *0907050a0900000000000000000000000000000000000000000200000106060b0a030208080505 *0a07040b060005050000000000000000001805023b242b00000000000000000100000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000203060b05020eabbabfbcc4c90002070c230e010d000a160c0d1c0d070e0307110400000000 *000000000000000000000000030209160f1f2f1a1d241a0c1a1000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000020000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000000000508090406080c0e07010501051710000000080e0600 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000001060404060208 *0b01040500010000060e0600000000000000000000000000000000000000000000000000000000 *000000000001080107040000000000000000000000000000000000000000000000000000000004 *010000000000000002010001000000000000000004010006040105020100000100030701070c07 *08050e0f041f1407160e031314080d140616170e190d0b0c0a081314031a160512130b160c0317 *150b181a0b11120611150c0002040b0b011d150a2c2317382e1a4d3e2887785e918c7f50472930 *281e2f38202e3a252c2a1e2d271b302c1c252824262b242c241721221a242620262a1e1e0f0b22 *1b19332c2b21262117150f1a160a1b1b0b1e1c12251f152821221f0c081d120c201d14101c0f1b *1e1a263126272b2a0000000000000000000a0a18050406000003070c100000002a2c3107000000 *00000800010000015a59547c715f0e050315100b03000020181331342a29282525271e1d1b1c37 *2d243d3c2e322b172f2311301e0e432a13412c18372a1b3a36253b352b2e2411271f0f2c17062a *291d271a0f241d0c251f1e1a1e152a2c192f3a2a3c3d262a221620221a3423167b5f47805c426a *503b7860447c795e624f39715e3f5c4731645443564b3f6d633f53482f5452426b664c6f634647 *39245645276d553da9a49f927a629889716d4f3058471c464027381709543b2047381d472e1b47 *331e4a442c3d331e23210e3413052d1f092516033b1c082a1e081e14061a15091f2513261b0a21 *1c0d22120a1a0c061908001e0c0a1d161116120f19100518160c1a09001d11081d10081a190c12 *160a100b06141107151809120d05070200040100030b09040607070c07030001040506020a0900 *010300000100000000000003030302010100000000000000000000000000000000000000000000 *0000000000000000030400020400140b080c04011606050c06061c12080000000000000000000a *0c031003011e12081a120b1508070a04060000000000000000000c070110080319080310090101 *0000010102060b070709010a09030000000000000200010e01010803030b040509090b06090715 *0c031f1d12291e0c1e180e1f1c1320170f1a171407010300000008120900000000000000000200 *0000110d0d121a0f211d11201b0b16180821181621171c00000001000006030800000100020700 *00000000001a190c140e031b09031807020e0a070d0a070c06040b120a05050202010008000011 *03000c03040000020000020b0b09352e2b353d321d2b281416161d251f0b0b12120b0f141d1b15 *150e253827171d13233230212323020000010000070406090a090c070000000000000000000000 *00000000000000010002050000020000000201011c12061c13092c25171d050306010232281e4f *321f4636320300002812062c11050d00001f1207301709000000030000281e0f645427a38d79a8 *947faca288a79e803a2c3600000300000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000004000000000000000006 *030009090000000000000000000000000000000000000000000000000006040503040105080300 *06000d0b020603010000000000000000000000001c0300251e2000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000001000206030fafbbbcbdc6c7040409030a100b060d09191609181100000300000000 *000000000000000000000002000418201a30381e313f221a1d0f00030200000000000000000100 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000006010005000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000000000000000500000301010f141608060602030000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000000000000000300040b0b1304010500000605000002030000 *00000606000f1306090b0900000000000000000000000000000000000000000000000000000000 *0000000000000000000a0801060200000000000000000000000000000000000000000000000000 *000000000000030201040305060109020004010000000000040202000402020305040409020405 *000205000315110e120c0a110f0b0a0c0718150e1a1c1d19130e1c0e080f120d16150f14110d18 *17171e190b16190912110b0a0700080303160904231711261c0d3f2c1c46312d86765e6f6d5543 *3022341e1334292331221625241d2f2a1d292a192825163127152d241d221c1a221818292b281e *15112818101f190b221c142015101914131e1c19231e141517161d22172421131e1504241e161c *1415271d213f35243336340a080b000000040000161e210901070800011914171b090d1c17201f *12171009091a1509121314645954a8a2958a735a675e5d4a4e4c536053273323232719221a0d1c *14122c211f323026362e322b2b2823262530342c37392b232b29271f182b2924201819291f211f *1d1d1d1a1e302e232c271f231c181e150f211a1431211e2b251f241d1e282d1e45312588887882 *725876674a7555497a73606c5d5269604a61483575654860594c5e46215d4932644e39765c4468 *5e515e4b365f5652625a46aa9e92926642967d615d402843311f2924251c09082623133924142b *2010212729231f1e1d1517160c0d1613130f09040b0a0604050507010304000000000007000004 *01060200000000000000000500000100000c00040700000400000000050000000000000600000b *00000a00000300000300000500000000020200000200000000000200000d000004000001000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000502040100051408091608060b07072214071e0c0201000004000006 *0000100409200d0a190902180b041711080f08090100000000000000011004091605021608021d *0e060200000203090a070b1303060900030000000000000200000400020800020d060700000000 *00001409091a0c0e19110918100a2117181a16181e1912070004010000100b1000000000000000 *00030000000808051e0c0620110e1a110d200b0d1a0b0a1e1b1700000400000004060900000006 *030600000000000018111022150b231810190e080d0b0b190d0b18070b13020810000812040417 *09021603000e0304000000020002090a0b2a261a1d1d201c242710110f1b1a2017101210121412 *181e100d151c1d2311090e27262a1c22240000000103030604070c050906060a05000500000000 *0000000000000000050402040100000000010000040000070001160b060e080908020009000029 *0e086d4e304428180c0000241711271b100601001310041005030000000c0000371d0f6a5f389d *917ca19684a49d79a396805d464607020a00000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000040300040100000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000001000000000005000000000000 *0000080700000000000000000000000000000000000000020000000000000000140a020905060e *0107100e071e180b0f09010000000000000000000000000a00002a050e00000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000010000aeb9bbbcc4c7030006000000010708040a0800000000000000 *00000000020000010000000000001d241a3a472c4653332c2d1c16130903060600000000000000 *00000000000000000000000000010000000000000d121600000000010000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000000000000003000001020c0b0001000109030e1d1006090500010000 *000000000000000100000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000200000000000000000000000002000000 *00000500000200000d0a0d1e1b1605050300000000000000000000000000000000000000000100 *000000000000000002070202000101000000000400000000000000000000000000000000000000 *0000000000000000000000000100070b0000000000000000000000000006020802020601020505 *0a080001010001030d05051d12091d0d04140904121208130d0e14120e1d130f120b0616120613 *120d0d090b16181d11110c19120f0001040404011d1f0d18150c1e1a0f32261d4a46367876576a *5c423a2d213a2f2a252a14272d182c1e152c231a2621222a2421373524322e172d322932342c33 *2e2f1c12141f1717211d1b28261d201c151e170f2427191e1d0c1f1711150d1115110e14110f18 *1e171a150c2a2a2025322821241c1a1d25221f2925222526241e2e31292730232a332f1e2d2532 *423f2f302f1e24212823222b2b2944413f959ca190979854514b21242e2123211c1e1f272d2521 *201c29291e2427272c2b293a3c2f3f2a22352420251e1924231f23251b211f192b281f2932262c *2e2d2f382921241f2d241c2c2b1f1e16152a25213330223841272b2e23403829372b1d4c433391 *8c727e795f6c5e44807750716c4e78725a6a6348706047755f4a695d5d6e54497e6a5c7b7c7e78 *6b5276664b6c5d4b71614c78645aa6a1a58c755984704d3f33153722112d23142e221c291f1d34 *241d251e1c3c3128372e1e2d27151a0a011e0c021b02021f07041709090900071a08041000000d *02001101000900010b00000d00010a00031a111415140e0c09060d060017110918100a1a120f1b *110f241b181c1c1c100b09171109100906170c07110e071203061106070e0e0d0f0a080f090612 *0c09150e08160b020c040405040304040504020803010000000006000004030106000002000004 *010203030605000a000003000000000000000000110b0811090912100b1d0c0c1b1c1400000101 *00000505021404072315081c180c18170f271f0e1a15120d08070903020401001a130a1e100a1c *140f1c0f0c0200030000020e09050e070508020300000000000004000204020509040815130900 *00000000000c140c26190c251e123c2d2737352727181a1e120904010000000006080b00000000 *00000000030000030810111f2016281c0f171208110603180f041b202000000000000004040d00 *00000303050000000000002519102d221b221a1722161113080a1d150b1207060a05010e050011 *03000a03020800020606070000000000000603032728210d1c170f141308060a01030802000907 *060a02000208040307121b0a120e272b2d17111a0000020000000200030a070306020000000000 *000000000000000000000004020a0606070000000000000908010d060218060512020500000000 *00003527123c25141e14070303011f0c101b05041200021d130a1f0b050000000200001e12075a *441aa49783aca08cada492a4998982635b13171d00000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000100050800010002000008 *07010c0f0602000000000000000000000000000200000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000001000002000006030009 *00000700000600010200000200000000000000000000000000000000000000000400000b0a0906 *0901030600030000000000040000000000000000000000000000130200362f2901000300000000 *000000000000000000000000000000000000000000000000000000000000000000000000000100 *0000000000000000000000000000000002b0bcbdbcc4c801000600000100030c02101400000400 *00000000010103040407080400040603071b2011333825232d141d2d230a150b01060900000000 *0000000002000000000000000000000000000000000000000000000000000002000000060f0900 *020800000000000000000006050103000000000000000000000000000000000000000000000000 *0000000000000000000000000000000001000000000000090c05010200000000030d0b00040000 *0106060d0700010000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000104 *02080701060c0e0514160a322d2a668182636568181b1700000300000200000000000000000000 *000000000000000000000000000600050900000000000000000000000000000000000000000000 *00010000030000000002000000000000000000000000000000000000000000000003030104010a *04071412110602020907081317161d231f130e0a16170f0f0e06130e101608081711060b0a0808 *090f120c0f0808100a0d0b1d1e141a140d000000040305140c091a1712332e242e2d1d4545326f *5d3f887e6c4f47363a3a2d23271e232726232620302e1f29241c1f1e17281e18302a262c2b2228 *27252d222725241e251a1824281e23221e29221b27201e2320171d222623231f211f1a11140d1d *190d181d131a1b182c26212b2c372c29262e2a281f1f171b2c261c23271d25202a2a1e2e17172e *3027545b504d554a585d4b5b6a615d676079766baeb4b6b5b6b58078713d31292728261d1e1630 *2919453f32252b251d20192d2f2a372f2b3d45452a3a38292b20322e28362e243b33273a342c36 *382a38332d28302b2d322b2c31263c372b372e273b382d3b362238261f23242227252226232244 *3b2e81776185805f736b636e4f34634c33796f576a67556c655583734e5f5f485c5d5669695e7d *665858554d4649406c6e5a76775a655034a097877b6042897159583a274630203f34233b2d1d48 *3e25483b263a201e3b38313e33292e261b3020172e20102a211d363021212518180d0a221a1721 *120c21120b201c1216160e14110b1e170d0e150b17140f1e212023231e1b0c161f120d1115180b *120e181a14241f1c220d14150c0f100a0b0c0a07160c0c121214140a0a10100e130e0b13060a12 *0d0f170b0716120b0b0e0e09070901050908040506020a02000204010109020400010500000500 *00000100060004030402060000000000000300000000000605051c0a06090807180c09210d0e00 *00020000010000011307091c100a21160a13170f24180e100c0c020000000000000001120e0a1c *130e2210081c12090a070608070f150d1317040709050800000100000003030700020404030712 *110d050002000000140b0c10100c18160f221c16222518221d12200c0a12070f0501050a0b170f *060c0710120b12150905071412092c2115241a15140f091e120d130f0a17181c02070606101110 *0d0f0103040f0c10080a0f05090c161d1d242e3121291e14130915080a140a0a1d140e110e0f14 *0f0e0e060b0b0a0a0501000601020a040a060404130d0a1c2125151113131213171d1f1412120b *0b0e261d1a150d0b211c1d15151d1c17182f363322291f090d0808050b00000007000105000200 *0005000002000003000000000000090303030003000000050105231d12422e2223231b1f312c04 *09080000000000000000000000000000002b1913180b070c0300160b031a09052007071e080828 *17136a522fa39b88a89d80aa9d709e917652424405000600000100000000000000000000000000 *000000000000000000000000000000000000000200000000000000000000000000000000000000 *01040d0f0c02040800000100000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000000000000010000020000000c030000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000001000200000400 *000000000000000000000000000000000000000100000200000800000000000000000000000000 *00000000000000000000000000000000000000000000000000000000000100000000000000000b *00040e06011a0d002819021617070c0b0500000000000000000000000000000000000000000105 *0001040300070002000004000105000000070a0600000000000105040913121c01000c00000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000000000000000000006adbdbfbcc6ca00000200000000020000050609 *0c05060a010c0a030502000006010b160a1c21132b402029381516220f1c170a0b0f0908090700 *00000000000000000000000006080000010000000000000000000000000000000000000816010c *1e0b030e030300000d0b03000200000000000000000a0200000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000010180e18 *21060e0f000a0401110e0800000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000040309190f07 *110c1101013b1a0b4a4a457e766e9ea6a67e716d756d6749473622220d151100070a0100000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000001000000000000000000010000000000000000000003000005020202 *0000010004060d140404040505010b0b060d0b0c1b120b130e0813100d14160f1319140f100506 *09060e1214110b0c1c1508120d0b13120b121d1a000000000300060b062410092b1f1727221647 *311d87816d9493876e5d4138332818160e1a221d2927172320191d21222223242c31263338262d *40322f342633332d2a31232a251c261f1e3925202d2925261c1227241a22180d1d160a1d1d191a *221e1b16131d1c162b2927262f1d2229201e1a0f1618131a11160a1214171218383a2a2b322627 *2b193d382244381d362d263c2c1e3b3b2c36323253443aa0a4a4aaaead9f9a8b5f442d363a2d2d *37292625222b2b2a2a1f1a1f1e142129192935292933352b2c22292a213131312e3529352f1f28 *2e2032301d323526292618181c162a272029261e26241e222825262c1c303c332a241b2e291d39 *2a192f2e287781784b514239362c4c593d635c446a6046483b253c2c275157474c3e2b38292336 *37253c301a47381f3a2e2132271d4130236460529b897c7964469283675440204637223d341f41 *381f4340314839274930204d452f413b1e342c21362d183d382039201239261c2f21172b201625 *1a0d2e1e102b20091a130b1d1718161310170c0e1608061e20181e22181b0d061d180917160c1a *060117150a221109140d0f1e150e17120d11100c0c110b0c0b0a140b09110905150b0915120b0a *0e0f0f0c070e0b070a0b050a0405080a0504000004010200000101000300010300000000000000 *0000040000000000020000000000000000000000000000000000050200120b08150d06180c0715 *0805000001000000040000110d081e120821140a251a0a1f10091107080000000000000000000f *0d05140d04190e091813080203040202010d09081209030803020100000000000403030a02020d *080717161002020b000000101109201813291a122f211636221418180c1e140c04050a00000008 *07070000000000020700040000000e0b0813100a160f02131a0b221608211f0f1a1a1f07000000 *0101030c0a00000000000200000000000013160c1f1b131c1107150a03150c050c0c0709090105 *05030d07080e00000d03041d0a06080a090000050101080b0b0a2a28261e1e1a26231e24241f26 *2a2f191a171d342c1d32281e2a27172926141e1e1f20211b1e2104000400000a00000009030303 *00000000000000000000000000000000000503010603040000000607023a341d5a4e35190b051c *06041504060200020700010a02000904001905006467601b120c0f0200251507241304251a0a1e *1e0d27210f60501fa49986ac987c9e9381a69e8655404600000100000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000002000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000070106030300000000000000000000000000000000 *000000000000000000000000000000000000000000000000000002000006000005000000000000 *00000100000c00001c0a00100504030100090a0002000000000000000000000000000000000000 *00000100000403000a090000000001000003000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000000000000000000000000001b1bdbcbdc5c600000502000603010908 *070f080709101d0f0d150d040d060d1712273923292d1a20251e2524182f2f1a2525110507040f *0d09132111040c0b0000020000050000000000000000000000000002000000020c130c07150f19 *150b1b270e111308111c0b020c090000000302010c130a0d150e0504070304040103020b120414 *17090e190906170c0e0e070e0b05161e0f0d1a0f07080400000000000000000000000000000000 *0000080003110b0500050000000700000100000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000005 *00021a090f8d8f927d8691989396b4bbc4b1b8c3b7bfccb1b5ba867f8e808b984d52421b251e0a *120f00000201000306050604030601080c0604070000000c170c02080000000000000100000000 *000000000200000401000000000000000000000000000104000211080803000209000503000000 *000000000000000405040a08020b06050b1a0f18180f130910160607061711081618141d161a0f *0a0e05030b11060b060506070504050c0a09080a10040b0d02060a00030b0b0d2628252c261d33 *2627624b366b714c978a6b857d6045423d1f1e242322282a24232d281f262c2122221634332732 *2c292d2c1f23242d3a393a4a40362d2721372e2035382f2433322e2d24342926221f221e1b1823 *1c1614160f26200e232b26282c281f1e2024212c1f1f280d0f180d0b0d0d0c0a20231f2f313321 *1f2722202533313921262c2323222c2723373d47362c255d58619ca1a0999a90858b8d4247462e *27242228251f1c171918141812131310150f0a0f1a1b1e1b1f2612111a1f161a0f110f10121508 *0f1200020d0d0b121a0e1a1314130e1a130a0c0b0a06080b0409110c0d231d1d21272924191933 *221c2f2e242219185232216f3b204a17106f3920602d20876a4b7a735a633a2598805397896a84 *6445836d568e8f89837e757963476756408685787a827ea4a6a2948872878b7e5341304434264e *312a4537294838254135294a4232423a364440333126262d1b25392b1f271f152425182b2c201b *1f16271e182e1e1a1c1013291d121f161b1d0a05150806090405181513211c18241a182b221a20 *0708241c16171714181716110f14130d121614170e0a0c130e0c12050b1d1c1a1d110f11090913 *0b151313171a141411050b13090c1306050a040604020b01000506010909000607010407000103 *02070000050000030000000000080000010000000000000000000900020c00011d1c1714140e16 *0a0913060c0000000000000000000c0a0b1e090e281c103a2a1c120a0709081000000201000002 *0002160708170809191413180a0907000501000511090810070911040b03000200000001010500 *00020607040f161604050b0000001e181623191326211d251f1f2e2b211e15131c13140b041500 *00061207130000000000000000010000000c0d0e171014121009230f0b1a090918070c15161800 *00010000040000040000000100070000010000011214121c181313100c0d070a1005050a000605 *01030c00050b00060a000504000106000007000202000504000713070c2f282427232b282e2d27 *2a2a1a1f2a11100d2326241b1f1f2a1e221f212a19141f1a1d20181f1e00000000000400000003 *00030600020000040000000000000000000000000304030707080000000b0209553521947c6c87 *653d9a8b706b48390f05033c1d17361a1413060f05000128190f130c070200001d0b031e100423 *130c1a0c1329100c583016998262998a6aa69b7daaa49050464c00000400000300000600000200 *000000000000000000000000000000000000000000000100000000000000000100000000000000 *000300000500000400000000000000000000000000000200000200000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000001000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000104020600000600000001000000000000000000 *000000000000000000000000000000000000000000000000000000000000000002000003000100 *00000000000000000a0200160a0401000100000007030309000200000100000000000000000000 *000002000003000303000505050d0000040a000000000400000000000000000000000000000000 *000200000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000001000001000002000000000000000001afbdbdbdc7c901000209150d0d *1f1004220d000300000c0c00000301080b1d2c1d4151311d28110d1e0a1a2414243314121a0b0b *09090f1914070d0500020000000000000000000000000000000000000000000406180b061b061a *290a1f391c193b1d0c2210000102000000000000000000000100000000000400050f010e0d041c *270e1c1e0a1b1a0a0d1704010f050b1b05010c040005030000000000050f1a1100000000000000 *07020003000a13080e1c0800000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000002021723317b95a9a7b6c4abb9cabac7d1bbc7d3b6c7d5bbc7d3a3a7ae73716c3c444c1d *242317251e1d211d151c1413220d0d1506011604000a0200000000000000010000000000000000 *000000000000000000000000000000000000000000000000000002020000030100050100020000 *000001000106010302000000000000030300050500020100020200000200000003000000000000 *000000020200000000000000000300000002000000000000020900000300030105110f0c170f15 *160a21221937271c443a2f474d3760684d34292118170e152118181d16231f15141c0f120f0b1b *1d1d1f17121f231c18221a35292339321e1b130c16190f0d090d0607080003030f0f0a221c1631 *3b2a1e1d0f0b090a0700020000020704071f1e1a1819120a080a0806050708061b1b1617181425 *2c251f1a141006062915082924154336214f41364d30206a472a6866638e816a998564a2937e76 *7564292a2325211a1914111c1a1c151b1f1b15102320112832221d201625232123252230291e13 *14111c2221141a131c231a272f2825282221211d29160f242e2431261f211d171e23192a2a2738 *3730302b2e2d30283b39298d8a859c9d9a9991857366477e775e706b3f564b3b756859898a8078 *6f5c8580768379676b56407e7a676f614e696d65665e52444b3c988c7e8c8273817e6e5241254e *3b224f4430413d233f3b273b2f203b2b224137263c33283233242b1f132c26172a170d2b2d1b11 *060805030a0b0c09251a141b1a0d201a1815150f0a0f0d0504090100031d161615150f1f170d27 *221c1c11081f1b0d1d160c271c171c1512160d160e0b0b16100a1207000b0707090e0d0d100f14 *0a0d13090b160c0a170d0611140d171615100e0a18111008090e090d150600050f1410080b0904 *0901040405000000000000000000000001000000000000000000000000181409171609130b061f *150f12080c0201070000000000000000000001001d1706251d0a1e1a0d080b0705060900000000 *0000000000080a03141407150d090f090c01000807010616110d11120505040000000000000000 *02040402030601090b0b0c0102040000001514081c1c091d261d35302e2f25222017141a140e00 *080500000004140f0000000000000000010000001006131d140a1210061215091017071616111a *141600000200000002010600000000010400000000000016150d1106041104030e03030b030301 *000003000014110e0f110a0804010b0802130c090d1010000007000106060808251d1a292a1f25 *2f272e2b2d202928171f1d2630262327212a2a291e2d2c131d1f1e211e14181c00000300000300 *000003040500000000000000000000000000000000000006040a0106070000000b09073e3d2588 *84739a8e7ba7a2996c52471604022a231e201f110c0d0400000010100c180d0b0300001c070126 *140422110221140c261d096a4c22a7a28da5987aaba49ba79e8c5d404100000100000000000000 *000000000000000000000000000000000000000000000000000000000000020100030600000200 *000000000000000000000000000000000100000000020100000000000000010600000200000000 *000100000000000000000000000000000000000000000100000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000002000001000102000000 *000000000001010002000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000010500000100050500000000000000000000000000 *000000000100000000000000000000000000000000000000000000000001000002000203000004 *00000100000801000000000300000000000500010101020300000e090300010000000000000000 *000000000005000106030007040001010001070001070600040400000000000400000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000000000000000000000000000000000000002afbcbdbcc6ca17170f0b *100d0f0b0c131a11000008000002030404181c102a43264046281d1e151c1c131f221d130e1000 *00010402030103010000020000010000000000080000040000030000000000001115090003030b *0a071c1d130a050b00000000000000000000000000000000000000000000000000000002000418 *1f100908020201000000000000020b0e0e00000200000000000000000000000000000000000007 *0603101306181e0d23331e01040400000000000000000000000000000000000000000000000300 *000200000000000300000000000000000000000000000000000100000200000000000000000000 *00000e14190501032f3b4a697fa07897b0798da891aabca1b4c69a9cb4bdc6d3b8c5d6a8b6c65f *665f3e50541d160b1e160a273324413d382426161a1d0f1b140d01000a00000408060100000005 *020007090b0000000000050000000000000000000100000809030000000603021605040f060611 *05080e0808040a0c070805090b070a090810060d100b110d0d150f1014131914121c1c171e1d18 *1c14221e1a181a181c1920160b15171c251820231a201f14262813161a120c151d1c1e1a171316 *1a1e251d1a57553e8b8a829a9573948e769f9a94636d693a2f263d3c3a2522242a2b1f2b2f3251 *58544d4d405a666a5e60504d4e443a41414c3f2d3c2e2a2e2d213730282c2e272b261f2e2c2c3c *2e38362d31372722292b26231e10151e1c1a1b202021202b2c27271f341c181d161a180d1f1322 *2a222b362837332e3d3b29433b353b312a3d3a2c3b3b303e38332d392e4a3f34a4a7abaeb2afa5 *a095675034382a27212621231e171d1e181c1b17251d1d2b26262d2e1e2d2c272124201e252023 *201c1c1f1d1c1e1827251c32261f231b1c1f1e1a2929273a3d2b372e1e3d3936252221281d1e27 *232138312f2e2b2438312243383578706191948b86877b6b63507f6f637c67506d5d4b70584085 *6f645f4b3f79685b877b6a74644f7e71635349384c3f2f49372647352c90877a79674d70695048 *3f2743321f3d2f1c3b2a1d443b222e21192e241c3a382e3e3a2b363a30261f1b31251f2b231c28 *2a200508080000001a10091e1d1c211c1e1f1519241e1814140c150409160d091e1d1815141718 *171927293341322a2d1f2227120f1d1c172116130c0d0c1712142e1d172f2d2b1f1b1e12161c0e *0f161c160e16140d070a080b0a0e140c0f1f171b1d141c1b1d1d100e132b25290a05080504060b *0b0d0303070901050c01080c171d00000900000100000000000000000003000016090f18140e17 *141616110d23160a0400000000000000000000000b01051e11131e0d11171107100c0800000002 *00000000000100000901061d0f0d23130f0a0606000000030305110e0b190c0a110b0901000200 *0002040109080a0813120c11110d0400030000001e1d1d24241f28302a3b30222a272024201614 *120c050107000000100b0d000007000004000002000000080b0c1d15131d0f0c17050c180a0a10 *050a0f0d140000000000000002050000000101070000020000000d1217130b08170901150a0313 *04020e040614090c1f0a0a1d080c10080b19171112140d100e0b0000020000000a0b1032292a2a *26292534312d29222b2b261d20232326261e222e1e2a2f2d2d33141925241f261e1e2900000000 *000000000008010409040500000400000000000000000000000007050204060700000007080b2d *1e1863594987897898917e664f430b05002a262022191913050a0900001c131b14070912010226 *1c0e241e0c1d0b02200b07250b0a674123a7957eac9780a9936daaa4915c546107000a00000300 *000000000300000500000000000400000300000000000300000000000406050b030b0b00010000 *0001000204000105000002000000000000000004020a08090a0c07060714120e04000303000803 *000700000500000500000100000000000000000000000000000000000100000500000200000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000000000000000000000000000000000000000b000002000005 *0000130f07120d021d150508040a03000300000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000200000509000001000000000000000000 *000001000000000000000000000201070200000000000000000000000000000200000000000004 *00030400000300001e0a040f00020d06080401000600000200000b01000e020607000008000104 *00000306060c0802070709100304190d0d10090708030700000300000200000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0002000000000000000000000000000000000000000000000000000002000105adbbbebcc5ca01 *010200050c00000100030302030103070809150a0f1f11182814242b222d2d22120c060f140f09 *0d0d0000000008090000050000010000000000030000000000000000000100000000000b080300 *000000000000000100000000000000000000000000000000000000000000000000000000000000 *010001040001030000000000000000000000000100000000000000000000000000000000000001 *0000090b06101e06030d0310291900000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000009 *101c1e170e06091017201b0002011f3c452c332b1d2222312632474d4f666c85abbccf93b3c870 *95b1526867576a863052670a1f26233f402e537e37587517201a0002000f1a1313181110070500 *0000131717121e260000000000000000000203000100000603040804040000000204040a0c0108 *0c0214130301030000020304070803080f0d0a12071118080f0d0c120813180b0c130b060e090e *171d0d0c0f0d16140a17130c201a1515060309050d090d0e130c11141414120d161a1d1d1e2414 *1f2015180b1d1f161d1c194f4c476a7671735f56918c8243403b1d231d1a1e181d221c2b2e2021 *2b21222c28212a252d2e2e262e2d1f241c4539204542303e3a25342c222e2f28372f27312d282b *3327273322212716292d1f21362721291c1c100d1b16131f1f1d141d13161a0d08150f13120e13 *1a1c221c172a26253c2f243a3a263e4134303b3137372130392d393e3b3b3631404242a9a399ae *aba7a8a9a29fa7a3393a2c181c161e2b21201b13191614201d1a1d26221d241725281b20211a21 *28232c2923231f1b2a2a1a262d22282a1a1a2217181d1d27282630302d2e2e21322f2d1c130d21 *1d1914291e222f272c2d1e362921373c2e65513b6b5847827e7178705b888a796e6542655d3d87 *80635c51456474657e72617b76606a5f466a6b5b4c4c355e6451443d236169617e7a6d7d6d4666 *4f3c41372626281c18211a2b2018392f273d2a173323163624223f3a262221111e1e10241e0f15 *130a28251800000000000012121023231a181f14262f1f3028171f1b0e3f302b25272b24292b25 *1d1f1b141928221875828a4e46492d2f26181b1d171313262622212020231d152e1f1613140e13 *161b0c151818130e1712110f0805070807091616131a0f14120e18160f2f2a126668612823220c *050807070c070a0f000101040804152015070805000000000000000000000000000000070c0611 *0d051f1c0c19120a1610081a170b1e170d100b0d13150a1412052417081d150c1d150b150b050d *00000100000000000000000f0b00170f031c13050c05040000000300000200020709070d0f0500 *000000000000010000020504050b131416151a101a161615190f1f1d1c282d2139362429211c15 *14150a0b08000000000000000301000000000000000003000000000000050a0a190c0c170b040a *0b080407000405080000000000000100010000000000050000010000000309021412091308010a *07030602010c0401070502120a050d08050707080801020c08020405020000000000040a080e30 *2e3b1f1e1f20271d20201d16241b1117181b1e1e172020111d1b161f150b1c1a1c25281a192600 *00000000000000000103030502000000000000000000000000000000000402030b050506010015 *10091719112b241b29201745433b3d2c210f01012e1f14291809191206010000100d0e07040604 *01001f1608351f122a1c0c231c0830260e79673ba5a384b1a697a9a393a79d9755371e110a1302 *0407010100000000000005000004000001000000000100070c0f000708000c0804080500020300 *0205060606030104090704090507020403000406030b09080d101e1c194f502e95969a58494341 *2924162134050a0b00050500010300000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000000000000000000000000000000000000000000000000000150e0124 *1f060c0a040c08021013011e1b0802000100000300000000000001030000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000300000000000000000000010003030101010000000000000100000000000204020b *0c020c09030000000000000001001108000403000601000200000c030013020103000108050105 *0600090400080b020a1508030606090603060f10090f0900000000000000000000000000000000 *000000000000000000000000000000000000000000020000000000000000000000000000000000 *0000000000000000000000000000000000000000000000000000000000000000000201b1bdbfbb *c5c804050907040800000000000003000214110e000008090b1119261e29432f0e0d110e0e1d10 *111326211d05000400000301000300000100000000000000000000000000000100000400000100 *000000000000000302010700000000000000000000000000000000000000000000000000000103 *00030500070800040d080a0c030000000000000000000003000402000000000000000400000300 *00000f1a0c17211d20311d03090909080707040d00000400050200000000000000000000000100 *000000000001000000000402040602000000000000000000000000000000000000000400000300 *00011d16145975770a132113324401020918203762777c3e4349303a40463431818c9999b2c982 *99af4857844a5e7a31465e0d1b34202020141e1e030c0e00040900000000000704061809203706 *121a00040a0a1a1d01050300000001000000000100000502000506040d1b383f00050500010004 *02010a0309150e0b15080b08040e05080e050e0e050a0d00091716141c13080e19151d10181c1d *1f210b1718140c150a111520181c14101b11121b0c0b0c080c170f0d09120d0e11171811131514 *13170b0c0e1e1813221f212f382f413f326a6256918c827b83804a48351d151a15070a1f131416 *191a1a17111d221e181d1f271e1e231f20231611413c31403e41353027342a1f2a282420211f18 *1816171c171b19151c181a1f161922252b231e161c1d191a1010201e1a1b1a1818141a23111e1e *202b1c12121b150f2c3125271f1a2b2d2a3a36253d2d2b2d2f2e2a27253842472f2e25423926a1 *a5a1b4aca4aca398756d56453d3c281d1c1d1c110d1614181516231c171e1b1b221c172828291f *191e23222325211c22241e1617171922251f1f1e1d1c191e1b2021292620201f1f241e2a272014 *1414261f22222416372b1e31242423222337242161654c75675f5f5a49756d546e634f767c6c3f *3a3169716d4744345c4c408173517b6d576a59414240353e2e25413122403226504742736c626e *675861564440341e2727232227352e2324281c1c2f201b322a26453f3634383224241e2111142e *1a181911172d1e2216100d03020112170f3d27223e292243201e3c1f1d3b372744422f4a2f2b37 *201e3a1f1c391713482a286b73857f92a551453a1c12161a181a1e16184131292b211b371f1d50 *392f371b17220c0e16060b180a12281d1632231d37201731181a1f0607220b0a5b3e396d657846 *34381a111006010605000302000305000111121d291a1606000700000000000000000000000610 *0a0e1e12101c10161d16161e1e19301712271f1a23100825100d3220152b180e29161c231d141c *140f1c1b16140e090c09081a0e13160a0e140a0d2511120e060c0d04050800010c06060e0a070a *01050000040000040c00080c030b120c061d160f1f1e19201c1c25160d251b19382e223b3a2a23 *292811131404040700000300000405010a0d000a04000303000100000000000008080c1a0f0810 *070a10040910010b02000401000400000300000100000000000001010505000b04000312030c13 *0709110301110706170d070602040600000700030500010700040f040502030400000000000000 *0203201e2313181d11151e1c1d2c0c14160d161608151a081215080c121011170609152420260d *0d1e0000000000000000000000000500000000000000000000030000000000000d0b0d0b0d0a11 *1207100d0c0d080b20181820181e2827252716110a010039261b62442c2e110c000001160d1b05 *00050000001508051f13051c110514070427120b604d319597898b918d969a83a5a1924e464209 *060b02000800000809050b02000a0000070002070001060510170d1119150c0f110b0f1d121912 *050c171d232d25246c553c505a5c2a293112182e0d070d16121117131a393230767467a3acb3b5 *c0cca39aa8583d422a151b27171b1e172117050b00000500000400000300000500000100000800 *000500000700000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000100000000000000000000000000000000000008000025 *06020d09090e07030e04001c170302020001020000000100000104000400000205000300000000 *000000000000000000000000000000000000000000000000000000000000020501010700000200 *0000000000000001030003000001000000030004090d060d0b040d08090900080a000304050604 *03040807030606070000000700010000011006040901030800030d0306230a04240e030a020404 *00010700060400000000000000000000000a0d0703060803080b00000701000100000000000000 *000000000000000000000000000000000000000000000000000000000000000200000000000000 *0000000000000000000000000000000000000000000000000001000001000001000002000007b1 *bdc0bcc6ca0f201f0e262000070901070504020113170c070a080c110a081e1c05161100000000 *000000000002000000000000000000000200000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000100b020c03020d05030c080100000000000000000000000000000000000000000002 *03020001000e0f041d230c0a0902040f02040804000000030401081b0d00000000000000000000 *000000000000000006050407070409090200000001000000000000000000000000000000000005 *030003060205192d0e2536020606000000000000141217465b744f62775f727880829693b0c67c *9bb0728ca58a9fb31a1f1e0a04092a2320191f1a00000603040a180c0f151b1500000000000000 *000000000000000000000000000000000000000004000003060107070103050202030600010200 *0000000001080300020402030402070703040605060d1002040705050c050b150e14131116160e *0f0a14110f0c08060c0a070e0d0f08090d07070707070513130b0906070d15140a0806080b0d0a *0c1015141b0d13141b17131e19193730233d3b2b6d5f4f878d7b51442f313a282a2e2717150a1c *1e121712071e1d132a2c29252d2c282d2a3131284d473c282112312d1f212519282d29171e201b *18170c0f140d101214150c22251e24251b2125161a190f130b0b221a14201f1d181e1e201e1d15 *160a161c0c171f1222231d313f3d3b372c37362a2b2e2432291837311e273d2f2f31282020212c *27259fa49bb6b6b5a8aaa37064442b3126332a1b1c201b18150f201e201c1e2124242022271c1e *21191e21131e211c161e142217102d2a22201b15181c1811180e0c13101e24151c211c201d1621 *23271719171613171115131a241f25221f1e27212e2b244539296343305d4c36595743524a3677 *6e514c3b2a655432624a2f63644c4e46376346355f4a3b675440625940382f20473e2854462e64 *5f5b5d5442494632473726312a1e0c090727271c2123182423142a241c302826332925634837a2 *9ea0aba2a09f866969806d272b1c19120d29392c546969606c595f68605b645f393a2437382681 *8d8b8a847b8c8b929c8c8995858098908c9ca4ab969da6775e4b49282045402a545c5730262343 *382746463d5c645c4b534741392f3b332b4d3a2d888685a8b6c2a4a5aca6a7a9a9a6aab1b9c4a6 *b6c76f67675a4e4a40383c544d46313530303b472e40413f555f363c411c23230c0f0b020b0e00 *000007060610100c11140f14110a1b16141914131e1a13231e141b150a181c0f242219281e1026 *1a0c231f0c1512041c160a1b15131e170e1e1510231c0d26140a1b0d05160c0a1010100e10140c *0e0e0a040400000100000009090616171015170b1618131c191416140d1f1c0e23291f423d293a *38313f393027282027281b211f1d26181722271a1d16131e140a1c101626201d1a1d1c10090711 *0c070800010b0d0a15170a1614181c15121a17151618170f170f0a0a02100d0c14110c18100c0f *0c08221b15180d0614100b160d08070204000000040000030003090403180e0b02010400000000 *00000000000b121601020a00000209090d0000000000000000030000000000020000010000011b *111708151800000000000000000000000000000000000000000000000000000000000003020407 *01030400020603040a050317150a211d1417120d10090104000026271c4e3c2624120e00000020 *1c120a07020000000000000000000000000200000a0000120200250c023f100349210c5f381e41 *3a27161418050206080b07040a0907100a0c1412100b0e130b0e1d1918231a143c31263e352864 *5f4d58432e82715eafb4b8a7aebe6d6c822840591a2d2d415857454f3a5c687494adb4b3c2ccbe *cad6c1cbd8bcc9d6b8becdadb3bd9ca1aa9f9fa27d8ea216151e070b1600000600000800000300 *020300020001010000000000030601020306070900000600000000000000000000000000000000 *00000000000000000000000000000000000000000000000000000000000000000a00041f06022d *1807130a000507000f0e022717071c17090b0c0600000000000000000000000001000100000000 *000000000000000000000300000000000000000000000000000000000200000000000102000100 *00000200000000000000000000000002080000000000000306060100000200000103010902020b *02000303010000000000000600000c04030200000408011012020b02070a06061f160c14140b04 *070204040000000000000000000000000000000000000400000200000000000000000000000000 *000000000000000000000000000000000000000000000000000003010002000006050700000700 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0101b1bec0bcc6ca0d1d140000070300030003060306100516170000060000040f1c0c08070306 *000000000000000000000000000000000200000000000000000000000000000000000000000000 *000100000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000001000305030304000407010000000000000000000000000000000000 *00000000000000010a09051e1d0e15130c04060304090600000000000002090700090c00000000 *000200000000000302040502060606080200000000000100000100030300000000000000000000 *000002010106010100000000000100000008080c000000020a0d2b31362c3a4c586f7f80a0bf4f *718c42586a62768e44687d241e236d7d928299af8d9ba88896a499acbb7d95a74c5958242f260b *131306111c0000020000000000000000000000000000000000000000000000000a050417130e09 *050100000000000002030704060600000300010503020601000302070301000409090b24231f13 *15190b13130d111d080c14030408050a0f05090b06060a04060d090b140e121517212101080b01 *040509090a0a050b151414171d19171a1d1b1c1a252a264d5b5f7a76656a736037281f201f1d17 *14100b0a0b1619161c1e1b1d2728282b2326232026211b252111131810121b1c141c1e131b201f *1d1a14180e0b070816181b16161a24211d22261e1e17130b0d0d0a110f0c080b17171915130f12 *1314030c0d080c170811121e212529272023201720211a13171823261d292631050d141a1a1e1f *1e2022231e837865a89d959d917a8f836241372d1a19181d1e1b18150d1a19111b1b16201a171b *1c1e1b1b19191b1a0d0f111d222621271e282b25191f171c140b2123222d28262a201d24161421 *201e13201a1417181b1416141617242821292320221e1e262b2d6174795265603830315d594f6f *5f497b786c656661423e2a131d1f4243335d5e485c54495e5e5026211d0e1009191b1a2a2d2b4c *4436504b3d626454433524403d31312c282f26202e28222b26212f3432392f293c3b2443372077 *5c49b8b8acbec0c290928d161d220a0b0b0a0c080b292e0c08061e21171b1e142422142e2c1537 *3725626964abbbc9b4c3d2b5c2cfaebcce9aadc58595ab97aabf84829382757082818a4437352d *211e3a31303c2625271b1534212036211d755f3ba3a5a8b1c2d1b5c4d5b2c6d6b3c2d4b7c6d7b5 *c5d4b1c2d0a2b1c571809c5066734e5867827e814f3b3838221e2c211d1c150f311d133a281413 *050100000000000000010608040a040509060608120c080b06090a06091a0a03120a020d070b16 *1d1b171b180c0d06180a06150d052010081e150d1e1f17201b122521122a201b1e12121c0d0915 *090813090408040500000100000103040d0a0b12160f08211f171e1a1622201d2f271f1f281e3f *3b273b3e332b35301f1413160608150d09281814201912110d0c0b070a1f1b0d2627191e1b1808 *0805130402140d091008090302040800000b00001303051609070e08051305021208060c040715 *0e0a231e15181c16180e08140f0c151312150b0a0e06060707030e0c0a06000102000001000305 *01030300030400000a02020702001203020907011207020d0b0c0b0605140e0c1e0a0116060511 *060b130d0b1c0b0c19110e19110a07010204000002000000000000000000000000000000000009 *07060c080b0b06040804030604030f0609210e070b040301000000000020140929180e0e050800 *0000110b0e0701060300030200041a171516100a1a1002221c135f4f399c9379a49a959d998e93 *96925b58561f2f2d19191d1e161d332d21382f2168624e8478617a6c5f6d5d5493886d968c84a2 *a397b3bfccb5bec8bcc7d4bbc9d7b6c0ce98aabc2f46630f121c10171e2e3a2d4c646a8a8d94b9 *c5d4bfcad7beccd8bec9dabacad9bbc8d7b9c0ceacbbcc869db1272c422f23213833411607080d *050505040800000800010500040c0005080c140606130a00000100000000000000000000000000 *00000000000000000000000000000000000000000000000000000000010000000000000a01000d *05000a03000b03071c10091410090102050204020d100300000000000000000000000200000300 *000201000300000000000000000000000000000000000000000003000600000200000000000003 *00070200000000000000000000000000010000000000000000000000000200010e040809000406 *080a0506060000000000000000000000010500001102020d030210080a0904080f030003010000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000000000000000000000000000000000000000000001070804180d0407 *0d0f00000000000000000000000400000300000000000000000000000000000000000000000000 *0000000206afbdc0bbc6c7080a0b0815100e1a09000002000402000000000000040100080a070e *110d17211501000100000009000004070001090500000000000000000407080200040000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000200010300010302000200000a05000000000905011809050d06030c040303010004040007 *00000b09000400000a05011b25101012040000000403000406001013050800000c100a00000000 *01050000000000000002000d08000e05000f0c010e0a000303000b0a040306030207000c090109 *09050c02000c05030d07000000020000020000020103000000000000000f3350212c23819aaf6b *9baf223e4d3f4e5d7b99a36e817f758381a8b6c3a4b1c0a0b6c599b0c399a8b67b86974564654a *5c783026203d43443e3c28050200000000000002000000080c0502000000000000000006050113 *0d040b0c050903030301001009001809041e16080d0b0422180e483c1d120b0a453f2a221a0d13 *1010140d0c18150e140c08080705040a0805070817140a1312041208060c01051413160e151320 *150b25130716100a140b061a130d12090a181a0f2d26231c1b1a45231e896a436960426563373a *38252a1f1832180e40271e422c1a3625192e2a252c2d20302d1b3e341d281f142d2119231a1523 *1e1522231f221f165a4c446b5b466458482c282921201c2421141d1e182c4447252d20342b1c18 *14061d1c153c221940281714110d121a1018241c20241c212119151d181f1d1e2c231e25231e39 *2d1e362622292f267c7d67a29d8e807e6a7460438d846a3a32171c1e1822241a7079746f7f7a26 *251c2620191b1411180d0c00090516334d21201b21211d1716121f231d1f1b13423922393b2b20 *2a201f1a151f1f1720201402020604090a182016232b252b2c3128292621170b0d01022116094f *5b57444d4844505b565448283a36171d15303228464c433b31344b453b283a2e0e1406231c1121 *2019261a0f3b322240372938392a363b2c2c2b27271d182120132c231a2d2923393b2f40413035 *2523686057b9bbbbbcbab86a675c211e0f1d271d18170a1529320d170f201e0c22291c232b1237 *39184b441e9aa6a4b2c5d3b5c6d8b6c5d6b7c7d6abb2c39aa9bca3a3a5929aa0a4aab7a8b0c09a *a2af7565565135224c381d887456937857886d4badb4bab2c2d1b0c3d7aec3d4b1c3d6afc3d5b0 *c3d3b1c2d2adc2d4a8bbcc9baab873595a816d55acb8c0a7b8c68287896b594e717777868c8890 *9a9c6d808d0c07090000000000000000000000000000000000000000000202030000000203000b *0b050b0b091006020c000012080b1a0a0617120b1d17091d1d0b1d1a152a1a0d1d14091e150717 *0c0714120917120a0c07040000000000000402011210080e160a1d211b181718141d192a241b2d *2b203c312a423c273c3931231d171d10051c130f19130e1d1d0c1d110227180724180d22150c17 *110917141229271c2c2a1d271c0a20160d180901140905170703160d0b1f180c26191121190620 *180c1c1106221d1026281c1d1a161f180c1611101107061309031607000c030405020409080602 *0406080f0c0b090508080d1c211e10100b24190f1a160d21221d282a232e261f261d111e171315 *1a0e2d2118362d212c272120170e17110c00030300000000000000000000000000000000000000 *00000b08020c0d070b06081810072d1a0d4d311530301d3b4630110c0500000000000001000000 *000000000021110f0e08060000000a01010f0a09160906160907221207513c1a9a8b76a2998e9e *978b93816f8578644b48435f482b775e3e908061aeb2aeb4c1cbbbc7d2b6c1cfb3c1c6bbc5d0bb *c7d3bdc8d3c3cbd6bfcad8bdc9d9bcc9d6bbc8d6b2bbc76450504138254833226f58458c8b84b3 *bdbebcc8d3c1c9d7bfccd8c0cdd9bfcbdac1c8d9bfc9d8b1bccb8d959e535c64767e7e5b697667 *452880643b4f4735181b1d05070a070b0c0709021616090b060302050806040000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000003050201 *00000400001005001c04011e150a05050100000002010001030300000000000000000000000003 *030000030101000100000000000100000400000102000007020004010002000201000000000009 *00000a000004000000000000000000000000000000000000000000010000000001000009000108 *04040003050100000000000000000000000500000a03001205020800010f040008020005000008 *000001000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000000000000000000000000000000000000000000001413052a *3b2e142145070002140c0d13090103000000000000000000000000000000000000000000000000 *0000000000000200b2bebfbcc6c70415160b2017091109080f1001020800000000000000000402 *0a0a02080909140d0d100e09141a04090e000003000002000107030a0900030707080902030700 *010500000000000000000000000000000100000400000000000100000400000100000000000001 *00010000000002010000020000010502060a05020905020803020f0302201a070f0a07100b0706 *00050100040f1304040b03101d0d0c0f0602010303080a1c1e130a0b0b172b1e060e0a00000000 *0000000105000000000002000007180b091e1a0a0b0c00110e0400000000010000000109090708 *0b08090d0c02010200000000000000000000000100000500030f00000600000600010000040b0f *2441151a250d141e374a653b4553586a866e8caa99b0c7a4abb7aabacbacbdcca4b0c09aabb93b *4b4836435140585e37424c4c789022201708050d0000000000040a111203010602020100010004 *04080203040b0a040809060909040a0e0b0c18131e251a0b0f0b201e2866675a1615167b817a37 *382c0d1316211a197f78593a39231a1716080c0d090e0f1d15167045344b493b2c27281a1a172a *1d138878568b877e68553c28282d988b6f786d48242e2225231a938373b0b3b0acb1b18f81696c *64404842347e7567b1bdc8bac4cbb8c2ca5f695827211b1a1d1f28272356331d4b251b755b5254 *61532a22212d343324222299a4b5b6c6d0a8b8c23c3c3b2b2d1e312d252f372a2a352a1f1f1e32 *26200c12171f1b1d694b4e807a561a141418100e222022171613080e0a08100d141f1e1218223a *413f4a42333f41361a1e1a8b877d9b9c969ca7b47b888f575e57323627373632353920708f9c68 *7e751b26281a1d201c1f213c3b2a14140c1e1f191c1d201b2324121210212926201e16332c223d *4336272d2f21212a1521262629270100010505082a23171b1a13211c1a2014163b312015100929 *1712592d1e59321a673d20634f3b07090c030004573b1e644e33664e2f6b4d2a2d2e190d130b45 *3b2880836c7b7e5c787563272e282c25232e2b2424201c221c1d2e252130342e382e252d2c2438 *35292f1f19613b27bab7afbbb7b54c473c37404314171919130c14150d171c0f251f0e2b2a1927 *312526311e2f3a2c748b93b4c5d3b9c6d8b6c7d8b1c6d6b6c8d6aabbcea1aac4afbeceaebdccb5 *c1d1b3c2cdb4c2ccb0b6baaaabadb2c1d1b8c6d6b5c3d3b6c5d7b4c4d5afc0d3aac0d2aabfd4a5 *bcd3a8bdd1a4b9cca3bad1a2bbcea2bccfa6b7caa6bdccaabfd2a4bbcda2b7ca9aaec697a7bc93 *b0c696a9c06481a00d11161210140c0c0e1609090c040403040000000000000000000000000000 *000003000100000400020200010101040806090704070507060a070c0f070f101316121a201413 *130f100c0a130f0b15110e17110c0000020000010609091314100c150d0f1a1c181a1b1614161c *221e352c233c352a3a3821272b2720201e10150c1d170f100c0c140f0d1e0f0e1d15131c1b0e21 *150817110918120b1513091c1f161b1d10251e1b211e0e1d1808221e0e161d1417211a27231a1c *1a1514151415121316110a17100c19170f18170c110e0b16110d0f0307140b0b1009050d080305 *07050106090004060308090d0d13201d16171d1c1e1e1c20180a1c242020201815181315121213 *0b0a160c0c231e1b2b302a343e2a12131310070903040400000000000000000400000100000000 *01000000000f090b0e0c070e06090e0f113f36214144420e09070300000600000803020c000009 *01010800020a00004c41320a0d0c0000000900011d110a14080910090920120c4f301787858590 *7f689e8d79a0938da7aaa7ada9aaaeb5c2a8aaaeb3b6c5bec8d1bcc9d3bbc7d9b4c6d7bbc7d6ba *c6d9bbc7d7bac8d9c1ccd9bfc9dabec8d6bec9d8bbc9d8b7c7d79081869b999a8d8582adb2c3b4 *bec4bdcad7bbcad8becbd8bfcbdabdcbd9bfcbdcbecadcbdc8d9b7c2d298a1b28c89819fa9b195 *97a9acb2b6b7c4cca1a6b958372a3d2a1e1d15131e0e0f35252005080a120f0d0d080c00000800 *000100000000000000000000000000000000000000000000000200000000000000000000000000 *00000200020602050b02031d140a21120b02000000000000000000000000000000000000000000 *0003080c0701000507040401000100000100000402000500000309000112090508020404000009 *000008010308050602000300000000000003000000000000000000000100000100000300000004 *00010901020400020000040000000000000000010000000c06021607050b070306050400010400 *000208040600000100000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000002030300000000000000000000000217 *151729222402000b0001030e1e2c2642610d132012233600000400000000000000000000000000 *0000000000000001040406b1bec0bcc7c807030316170910150a0d090600000200000000000004 *01060815091721150201000000020000040000000000000b0002201d0f11121c05070701040609 *080200000000000000000000000000000000000000000000000200000200000000000000000000 *0000000000000000000000000000020000040000040000120300160100220d04361f0b2b140626 *1d0b1810060a0800070802080a03202b100d0c0905000200000002030b05030000000002000007 *00000200000400000000000801001608011d1a031a12020b1009120c0700000105040507000004 *010000010000000006000000000000000000000001020000000002000005000044485b11161b00 *000000000214211d354d6a343a433c3c467288985a5c638da4be9dacc3b1bfd1b0c3d3b0c0d19c *b5c92a2626474e604b57532a485f444f440d0d1700000000000000000000000000000000000004 *00000000000000000100040000000000000000000000000203071a100720191e5a695b160d0f7a *837d352819070102291d199c9e953b2c14261b0a0813190a091031130da3a8a15f5f5738443f03 *0d0e302120aaaebba4b7c35f7881302826a7a4a5a3a4a1201d1d281a17a8aab9bbcbdab1c0c791 *95923e31303e3a358c838ebbc8d9bcc9d9b9c8d761615c28110f220a0837201aabb5c1b8c6d1b6 *c5d3666763311d20281e1e3a2725a6aab9bcc9d6adbdc843322a2217151f19172c211d474b472a *1f1a2b1f1c22100a18060853423f93917d1c100a160d0a3e1b135d4b3e08030206070f12090a16 *0c06665d5b413b2c3f3e2f3a221a7c6e5d948e86859ca958524d9376508870527a63424244283d *4b5276909a6a5f425f5b4c665540615f3c16221c11171043554b535f5e4c58575660552e322433 *261d413a28575d51575f5550544d4754430800000b020542423a4951444e5842435e511f2c1f09 *04001e1b0f52533c5d51306c5d3a423f2e0a05030a0b0a3739263f45324544322c383808090604 *0704191816382c23211b180f0c0d120e0a312417262018161618241c1b241b142e2317342a1e35 *3a283a2b212f221c6d5548b9bbbcbdc0bc62422731261f202923212216231e1836220f363c1e4b *462d2c2818201d0f493a21a5a29fb8c7d5b8c6d9bac6d7bac7d7b2c6d8b1c2d3b1bacbb7c6d6be *cad8c1cedbc0cbd9becadabbc8d8bac8d7bdcbdabecbdbb9c8d6b6c6d7b6c3d3b3c2d6adc0d5aa *bccea5b9d1a0b5cda1b5cba0b4cba3b6cda1b5cdaab9cca6bbcea7bccba3b6cd9db3cb96b1c98e *acc792abc58da9c3607c9a090c1208070a0a0508140f090c0407060714090b140c040c0909080c *0c0b06060405000008030009030203010006000000000000000000000000000000000001000202 *00020000000100070200030203030308060000020000000000020b060c0c07090608090b060814 *130f17150d3a2c1d253028261e1b16171d100b0c040006070104000103010000120f07060a0c02 *000100000005010004000105000002000000000000000002000000000101000002000008010403 *070409090205070702000203020103010001000102010503000000000000000000000000000000 *00000000000000000000030000000000000b0a0809110e0b090911060702000005070907060607 *00000700000602040508080805050b151c00000302000000000000000000000000000000000000 *00000000000000000507090607010a030308020725180d362a1d241715321d153825140e020423 *17071d06020701030000002f1a0a0f0503000000060001150908170c070f020422140c53411e99 *86719e8c75a18e81998c6dadadacb7bfcbb8c0cfbac1d1bbbfd0bbc6d3bbc4d3b9c8d5b5c4d5b7 *c7d1b9c4d3b8c4d1bcc3d3b7c5d5b7c6d2b8c6d3b9c7d5bdc9d7bac7d6b8c3d1b7c4d3b9c3cfb7 *c3d1bcc6d3c0c7d5bdc9d8becad7bfc7d5bfc8d6c2cad9c0c7d7bbc7d4b7c2d1aeb6c6aeb3c4b1 *bbc9b3b6c8bcbec9bdc6d3bac4d1bbc1ceb5b8c7a8a4aa9a8e829698a4725f53765e545963622c *222403000500000100000000000000000000000000000000000000000000000000000000000000 *0000000000100000200301190a081d0e0501000001000000000005000009000107000000000000 *0000000200090b0e0a01030100050502040f00030800060800000000000600001208010f080606 *00031704050e000008000006000000000000000000000000000000000000000000000004000003 *000002030005020402000101000007040206000006000103000002000104000104010304000300 *00000000010000000000000000000000000000000000000000000000000a000000000000000000 *000500000000000000000000000000000000000000000000000000000000000000000000000000 *00000a0501413c240e13400401020a020c0000090000000e03010a070c00000200000000000000 *0000000000000000000000000203b1bbbfbdc6c825371f243227213220111c1300000300000100 *00010001030816121c2e20050606000105000405020705121c15040a13435e764d513d171b1105 *0004090f1f01040500000000000000000000000000000000000000000000000000000000000000 *0000030706000000010000000000000000040301070802140f061b1d0f2c1f0d352112372c1c1f *1a070503010104050000010300020a171000080500000000000000000002000000000000000000 *00000003000105010200000609030803040e0b061a1708241d0b0c0e06000501000302070b0707 *0608060206020003160904000100000000000000000000010200081416060f133c555a456c7d3f *3f3d485d520914160007161412111d161844596f3e454479858a8993a09ba7b7b2c6d5afc3d395 *a7bd6f878e332b46555855667f931c211a00000500000400000000000000000300010000000000 *000000000000000000020303000100000005060602050500030003000212190d1b18173d3c3444 *2f2159594e6b50394b3a21343a3c6c7c7025200b1511081a1c1612130d332c239ba5a42a2b273a *36201f1f1e363d3f899ea569889c4d413442362da0a4a6b3c4cc70645b575145b5b6c3bdcbddae *c0c7abaaa8aca99c999e8dabb4bebdccdcbdccdbbdccd8a2a5a0818279817a73847e7ab6c3cdbc *ccdbbccbd9a7a9a89389818a8a86928b7ab0bac3bbcddab8c7d0948e9184816f91897d84847a85 *9b9f322a2e37423b595f466d5034534c486883872f3b332f2e214d4d51586f610d130d211e1d43 *4b48404740565e522d2c264a413b6b5e56898a85a5b1ae535c534456655b80922230311d222760 *72796c7f885851458999a1889799556a741e282908110e0a0f0b0a12100c150e060305050c0804 *0804181d1a272a1e271a1340382617150d00030509160f00000027322d28372f2b392b04060200 *0002000405000108110b05221f0923201345290d3a270e090a09151e102d3c323a585c03090d18 *191115110a1e1d182f251a1817110c080b0906091f1d1a2f2c2b343b343b3a362e2b27262b292f *2720262e2924211d2921185b4431bbb8aec2beb585724f434b35273421282f201b2321171a142d *3e3b48452f484f48484840534a36aebdcbb6c7d8bac9dbbdcddbbdccd7bcc9dbbfcbdac1ccdbc1 *ccdbc6d1ddc9d3e0cad3dec8d4dfc2cfddbfccdac0cfdfc1cedfbeceddbdccdab7cadbb4c6daaf *c5d7abbdd4a2bbcfa0b8ce9db5caa0b8cc9eb7cd9db5c998b6cda0b6c9a1b5cb9ab2cc9bb4cb92 *acc792afc793afc696aec96a8aa51513160b0a0a070b0c08090d0c0a0e060908080c080f0f0d09 *090d130d08201e1f1f221813150c101008061c1319180f0f110c0f0c0a1b13090c100e0705040c *0a0707060504000002000405000402000000000000000000000000000000000000000400000001 *00020202030601020d000101000005020501000403000102000004000008020105000008050305 *02051004040a02030804030603020f03030705061206020505040a07010a050304030204050305 *030109070606040202040004060504030501020403050001020203020606030704000603010102 *020000000000000000000000000000000000000002000000000000000001000000000000000000 *000000000000000001000100000000000003000004000001000000000000000000000000000000 *0000000000000000000000000000020000040000030000170400592506804d25987842896f4a23 *110f30251e23160f09050a000000261308140b0e0100001409032b1e15160907100a0920201541 *3e1c9e9a8da49c95a6a08ba29285a4a69cb6c1ceb2c3d3b4c1d0b8c1d0bac4cfb6c4d4b3c6d4b5 *c3d3b1c4d3b7c3d5b9c3d3b6c5d2b5c3d5b5c3d5b6c0d1b6c4d4b4c4d2b5c5d6b6c4d4b5c5d6b9 *c7d7bac7d8bcc9d5bfc8d3becad8bccad7beccd7bdcadabeccd9c2cddac2ccdcc3cbd9c1c9d6bd *cad8c3ccdbbcc7d6bec9dac2cdd8c3c9d4bfcbd6c3cbd6c1ccd8bdc6d1bbc7d0bbc5d2b6bbc9ae *afb6b6bcc79b92985b443e2f1d1d03091600000600000400000400000000000000000000000300 *000100000000000202010201030306070204010000000002000005040305080801030607040500 *0000000000050c080f1a1b0200000000030300000a02030d040801000003000008000007030513 *070608010306040504000600000300000000000000000000000000000000000000000000010200 *00050200030a0408030003000000000000000203000203000002000000090a0108090400000200 *01010708050302010000000000000000000000000000000000000000000c161715232a2b2d2e04 *030600000000000000000000000000000000000000000000000000000000000000000000000000 *000000000008120b161f2701071b18170b162d460000020000001319131c365602000707071600 *0000000000000000000000000000000607b1bec0bbc6c9080d0c04081003090900000200000000 *000000000000000206070e1a292228271a120b0a0a151a0a101410141c101a20171420252c390b *0c1304060f0000060100010406030b0d0b00000000000000000000000000000000000000000000 *0000000000000004000000000000000002121410140b0a1f0f012218011a0c021f15070a060100 *000100000000000000000000000000000000000001000001000000000000000100000207030007 *0a020b02030b00000c04071e130d180d06140b060e130b151d090b140700000100000001000008 *00010500000500000901000803020b0a030a090806000300010706102611242807080d0b152112 *15181c325826405e1c24200000044e648a6f8986768f914d604c869eb3b1becfb6c6d5b7c7d8ab *c0cfa4b6c35a6e782626302b3b5048688d16182602000000000000000000010a0b202700000000 *02000000010d05090b03030304020403010000000000010905010c0d05141308210c092b0a0544 *1d0f502b1d595146a0aaae758681231a16281d0d251e0d0f13080a0a0a17170f23252142352d34 *2710432c1843433a3d3c344b3b2b7b5842aaabb1b4babab7c4cbbbcadabbc7cebbc5cebccad8be *cedeb9c9d9bbc9d4bdcad3c0cbd3beccd8c2d0ddc1cfddc1cedcbeccdabecbd6bbcbd6bccbd8bc *cdddbeceddc1ceddbecdd9bdcbd7b8c9d7bacad8bbccd9bccddcbecddcbac7d7bccbd8bdcad6b8 *c8d29b9e964033253a3631443e369699967275644c6570241d171d263425251d27392d323b1d31 *361c293b2527231b331b152c25184b473b6057417e604ab2c3cb8e9ea9262e40202e332020192c *4035333f4257757e728a9797a9b66f8e9c2c27295e5e431b110c12130b0c13080f161808020506 *04040803050405091c1b190a0c0f2a2b2b00000000070d000205000005000105000000040b0101 *01020004050405050303040e120e351e14492817613b174a2c13160d09332d173f69740b121005 *0a0d2141451624232521144337213d4130575d5260604156625e27302d10141d26252b3b3b3f26 *17192b2f3235382935281d35271f6d4e3cbdbbbfc3c6c8aeaeb15c62401717112f271e1f1a0c28 *1e172f201a4a3b26a39181a9a4a5aab6b5b6c7d4bdcbd9c0ceddc2cedec4cddfccd3e2d3d8e2d4 *dbe5d0d8e1d1d9e3cfd9e4ced8e2ccd4e1c6d0dfc6cddcc6ceddc5d0dfbccedbb9cadbb1c5d8aa *c1d8aec5d8b0c2d5a0b9d1a0b8cc9fb5cba1b6cd9cb1c996b0c797b0cb99b1cc9bb5ce95b1cb99 *b1cb98aec895acc592adc68aaac77892af1111160d0f0f0c0d090d100a140d0b0d090c09060809 *05050c07091a171527222013161416110c100c0c151016141215140f0c0b080a080c0b120f0c0b *110d130d081b150d0b1010100c0a110a0c130f0f120e0e04060b000000050f120b0c1111100e16 *191b252724202528222e383d4141363036383539393834160f0e080306140c0d25252118110f18 *121014100c1516141e1014171612130a0e13090807010911110c18120e1d19191e1f1f1b10121c *191a171218130e100b0a0e090805080904110d0b140e100d040609070b07070602040706040706 *0200000004020604020000000001000002000002000004181d1a1214151311161e18182c231d2c *29231a150f1214121a1b161e171718120c121411140d15120c151c1d1d00000100000000000000 *00000000000000000000000100000400030b090c0e0b0b13100d242218777657938f809b94927a *615c170100291d190d0e07090409000000271f122514170800001003031e1b0d080d130400071c *0d0b41321fa0967fa09680a794809c968ca4a497adbacbaabbceb0bfcfb0bfd1aec1ceb3c0cfad *c0d1aebfd4aebbccabbcd1aab9cba8bbcfacbccbadbbccb1bbcdacbccdaabdcfa9bccfa9bccdb5 *c1d2bac4d2bac7d4bbc8d6bfc7d5c0cad8bfc8d6bdc7d6bec8d8bfcbdac1ccdbc2ccd8c4ccd9c4 *ccd8c6cddcc5d0dcc6cfdac7cedbc4cedcc6cedbc5ced8c6cddac6ccdac3ccd8c3cbdbc3cbd8c7 *ced9c7ced8c9d0d9c8cbd5c1c7cbaca8b97e5948774e321f0b1308111400000c00000502050505 *030c0000010000000000000000010000030300070800010b01001a09021a0f09080b0400010500 *0001000002070805181f121417100100000f0a05120a0c05040908060909020c0800030c020308 *00000b00010a010a00000000000000000001000003000300000000000001000000000000000500 *000600000000000308060609080104000000000000000001000303000200000105000207030606 *000108020216100b15150e00000000000000000000000000000003010400000100000000000008 *091a02052800000000000200000000000000000000000000000000000000000000000000000000 *000000000007000000000007050400000100000000000800000700000003070d00000200000003 *1a33000007000002000000000001000000010905b2bec0bdc7c704100c00000000000000000000 *000000000000000200000210170a262c15647b836b776c3b33285460527580733b2e322e2b2f01 *01040000020000000000000000000000000000010100010e040506000001010000000000000000 *00000404060000030000000000000300000000000a04011a10021d14040a090504010206090907 *0000000000000000000000000000000000000000060100060c040000000000000000000300000d *0703080502161c1b1d140a0e130c1d181307060303060005050200000000000001000100000000 *010005070002020000000000000000000000000000000000000000000004080f010e1400020806 *080b0e1a1307050405120d0a1c0d061411405164291e2032373d3827259cafc1b0c3d2b6c8d3b3 *c5d3a4c0d0a4bcce60534b31383a2b272d1813161e11071a12051a1c0d01010100000006040906 *02000600000002020506050000000002010300000200000000000001010202000a100312110747 *4f416268575459451919152a271f3020151d140725200c2518071f1d10272a1b35250f281f1727 *230f4238254c442d3f2b1765645f82726ab4bfc8bbc7d6bbcddbbdcdddbbcddabeceddbbcedcbb *cedcbecfddbecddebeceddbecedebdcfddc0ccddc0cfddc1d1dec2cfdfc1d0debfceddbdcedcbc *cedcbccedcbccddcbcceddbeceddbecfdcbdcedcbeccdbc0cedbbbcdddbccddbbacbdbbccedcbd *cfddbbcedcaebec75c5d503b3d31635650968b656d573d3b52452530210816132d2e27211c0e30 *321e3a5848223a25171e1004040504090d09141a131a23574b3f6b91a840595e2b3a2f1923183c *45325a6a5d4344373e4a35828a877b99b06e879a8d9da582a2b52531300a1816040c0a0f100812 *140916210c0b1306030402000000000000221a1500000000000005140500020000000000000000 *0000010406131f101b201d0d08031316083820084d391e4c301d40321724201731443d2c301b0b *1f0f041005030c0617180628211a3d362232291e343026393a2c2d2a2328241c10151118212f37 *3d48424b574a493e342f2a32291e2d231b775b45bdbabac2c3bf8b8689282821211c142d201e3a *392a3b3f34634f35aca08bc7cfd7c9d2ddc6d1dbbfccdcc3cddac4cfddcad2dfcdd7dfd3dde4d3 *dde3d3dee5d3dee7d1dbe3d1d9e2d0d8e2d0d9e3cdd6e0c5d1ddc2cfdec3cddebacadab5c7daab *c2d5aac0d2a8c1d5a6bfd298b9cda2b7cda3b6c99db3cc9ab3cb9db1c897b1cb97b4cb93aeca9b *b4cc97b1cc9ab1c999b3ca97adc992adc97899b108080b0b0a090c0a0d09080a140c0f04080e09 *0c070a0303060b0714170c13150b0b0703060903100d0d0a0a0c0e0c09110f040e0705180e0c15 *120a0d06050e060b110d0d070a0a0c0a070b0d090c100f0f0b0b02000000000000000004040902 *03070d0a0c0c0b0f080a070b0a033f3f244e4c343b39342027261413141e211e1f211c232f2d1e *1e1a090d0a060f0e0b120f130a1310110d120704060305080803111c18171d1d262b1c0e181812 *18140713100a0e0a1213111718180c191107090a090a0915150f17150e100e0c0e110b01010308 *0306000002000000010001000000000000000000000000000000071413121e180f1c18171f211a *232323363f20231b171214191817130d0b1c0d0e14170c191c1416171401101300000000000200 *00000000000000000000000000000000000402000001010200010d080b180b044e452c5a412565 *614b54493c1704022113111a12081c100c0000001d1f1321180f0704010b0c06160f0809060713 *0904221a104c3f1b9d9774a49064a19988a39a8d9da8a4a4b6c6a7b8cca4b8c89fb4c7a4b2c8a7 *b6cca6bac9a3b6cba4b3c6a4b7c99eb4c8a2b7cca9b9caa5b4c9a6b5cba9bacbaab9ceacbbccac *b9caafc0d0b0beceb0c1d1b6c3ceb6c6d4b8c8d6b9c7d2bbc4d1b6c5d2b9c6d4bac8d8bbc8d7be *c9d8bfccdbc2cedbc1ceddc5cbd9c1c9d8c1cbd8c0cbdabdcbd9c2ced6c2ced8c3cedbc4cbdbc6 *ccdac9d0dac6d1dbc6cedbc9d0dac6cfdbc2ccd6bdc9d2b3b8c79c9ca4271c1e0a03080c02040c *090802010706050b1511160000000000000000000000000001000303000a070303020000000402 *0000000100000305050601081814000003000001181d1336313f120a0d03010506000301030501 *000100000100000005030800000100000000000000000000000000000003000104010300000100 *000000000000010000000003040406040500000003000005030318131802000000000006030107 *0102090b08040204191a1a232112171212000000010000211807181a2801000200000000000000 *00000000000e121003030c00000000000000000000000000000007000000000000000000000000 *00000000000000004a4f400e0b1e0a0a0e00000a00000000000000000000000000000000000000 *0000000000000000000000000000000000000000000d0bb4bfc2bec6c801000700000000000000 *00000000000000040000020000090b151d50668f94abbf9bb1c898a5bca1b1c898a2af7584a28c *a2aa21151a261e2322201506040a02060a01000100000e394b6861819f5b6a720e110a00000100 *000500000c00000702011000000800000200010f01040005000811000100000000000000000000 *000000000000000000000000000000000000000000000003000505000600000405010502000108 *00010f0b050b05051014101c1c0f060307161f280e0a0806000005000002000000000000000000 *00000000000000000000000303020505040705040000000000000000010000040002060d090607 *00050b0f1101000002040901020407070e1c1718141d321c1b242c25234a5b69a3b9cc9bb2c9a9 *bfd2abbed18ca4bc7797b17e95a73a322c493b372c25283445531e1e1d00000700000727373214 *170e090c050901040404060000020a03060a0a09070c0b0808020b07040402040b000004010405 *0202140c0e251b1519130a0a03000809051e160d211c0e1910080f0a0318140826251022150c2d *2a1d453020505062434d494a636b697068abbac9b9c9ddbdcedebeceddc5ceddc3cddac1cdddbb *cdddc1cde0c2cfdebecddfc3cce0becedec1cfe0c3cdddbecee1c0cfdfbdcedfc0cedfbfcee0bd *cddebfcdddbcccddbcccdebccfdebdceddbdcddebdcde0becfe0c0ccdebeceddbecfddbdceddb8 *ceddbdcedebbccdcbac6d6635f643224185f574f49402a352f31536770333e2d2a2e1d465c5144 *3d2538433c2a361e1e282a1e2d260c0b140000060000000000043e2a266c857a42433979808a5c *5d54393c354350457f8d878483799ab3c49eafbc67798d65778b5a718537413d2427230a0b0715 *1812212618262d1b13100d02000600000000000018120b00000400000500000300000200000100 *0000000001030203191713243c430102080b0a0717140c2c23161d1e102a36242a3e303d473225 *392d0912100f120c1620131b200a28221b46392530242020171d282422322c2c3930220c0e1100 *000039353d474855494e532a22244141403d323266492ebdb9b5c3bfc3775f4c3b3b252e3b2d4b *412c322d2251432d967d5dc7ccd6cdd6e0ccd7e2c6d3e0c3d1dfc8d3e0ccd9e3d3dbe2d2dde4d3 *dce5d8dde5d6dee5d4dee6d2dce5d1dce6d1dce4d2dce3d1dae4cdd4e2c4d1e2c3cee1bfcddeb8 *c9dbacc0d5a4bdd2a3bacea4b9d3a2b6ceaabad0a2b8cd9cb7cea0b8d0a2b4cf9fb6cc9bb7cc9d *b1cba1b2cd9bb1cb94acc998b1ca91afc999afcb7899b412141c120a0a1e140f221f20160b0e0a *030b0d090e11080617160d231b1a1107070a08070d0b0a070a1209080a0604090805060e0b0814 *1913150e090c0e100a0b0f0e0913151011140f1015120e06090704000400000000000201000501 *010d01010a0e0e170d14150b1511080605402e1f8f7c5f48392b1e1821090d122019151f1d1b11 *12130300070000000000000b080b18131c17141709101602060905000009080b1b110a0a0b1305 *010b00010504060c090a0d1009040d06090c080a0401050a071009050c08080c100c0f07080805 *0404080a0f01000000000006050405090c00000600000500000204000014100a0c0d0e0802090c *0a131c1a16151318211d211e1c131c110f1f16151a0c0d18151a0b0a0f0c0a1206000a04060a00 *000000000000000000000000000000000000000504040c13100d110b0b160e1114070525211d21 *1b192d26203127231402053530243a311b1b1c1703000029201e1b14180100011002031111120b *09090f070729110b4f301aa5957ba49782a48f71a29391a0a5a9a2b3bd9aafc69bb0c6a0b3c69d *aec49cafc59fb1c4a0b2c59daec4a2aec9a1b3c5a0b4c7a5b4c9a8b4c8a7b5caa6b6cba8b8cca7 *b7cea8b9ccadbcccafbfcdaebbcfafbfd1b1c1d0b5c0cdb9c2d2b4c1d4b5bfd2b3c1d3bac3d2b8 *c3d3b5c5d6b7c7d7bac7d8bbc5d6bcc6d6bec8d7bec9d9bec7d6bec6d5bcc6d7bdccdbbec9d8c0 *cadac6ccdbc6cddcc7cedbc8d0ddc9d0dfc7d1dec5cedbc1cadbbfc6d7a5afc378637843312c45 *485543343d51575f6a6877818fa60c0b1700000000000000000003040803040704050602050500 *02010000000200000500020f090a060809000000000000363b401a18182b1f260a0a080600030c *010600000301000200000103000600000300000000000301000100000200000000000000000000 *00000000000000000000050200020400000a00020400020803040801090602090701050100020e *0804090104080605050000180b0b1e221c0810270000010000000a0e0d0c0f3400000000000600 *00000000000800005f533d22131d000000000000000000000000000000000000000006060b0e05 *00001d2a470000020300060b151c00000400000000000000000000000000000000000000000000 *0000000002000317000002000000000000000000000000010a08b2bec0bcc6ca00070c00000600 *00030000030001060000040100040100060a0e1765809e9fb1c9a1b2ca9cb0c696b0c8a1b5c7a4 *bacba4b3c58ca0b77d8f9c2a3e3e00030a00010403020b1d1d234f6c8b54789d4f6b8e26212d01 *020b04051211101929404d04060b00000000000000000000000000000000000000000000000000 *00000000000000000000000000000000000000000000020200000a000405000102060204000300 *000202000105020203040200030805080e060506080d070c0906010302080a0b04050500000000 *00000000000000000000010000020007101d0d0709080a00000000000002000006090300020400 *0607060c0e1222230c0608211a10120b0411140e1d2f330d0e0e130f0d171513242f315365885d *6e829ab1c4a2aec1a3abbb504e4a3c485e435163556d88313b312130410a131505070900000203 *090f0e18290a11150000000000000b0904090804080b080b0b080507070b0b0819130a1a100611 *0b010d0b021a0e031d18082829161c170b0b05040a0708101811233430221b09362a1d3931211a *1c0f251e0f28221d312f2d443c2932291d49585392a2bbb5c6d8b8cadebbcedcbfd1e0bbcddfbb *ccdebdcddec1cedebdd1e2bdcedcbbcedfbdd1dfbfcfe1bbcedfbed0e1bed1dfbdcedfbfd0ddbe *d0debccedfbdd1e0bcd0e0bccee0bed0ddbdd0ddbbceddc1d0e1bccfdfbdcfe0becfdfbecedfbe *cfdec1d1dfbecfdfbdccdcbcccda9faab10d0d150407100705085e6162a4b1b3664f2e655c439b *a8aa6e84853b433d2f2f27323b2f312a1c1f140d0c040a1203052e2d364f3e374f493d7c939db1 *c5cea9bac295abb3a6aea9aebfcaaabdd190a3b8a2b9cca3b7c39cadb394aab3363e3720272c0d *1d171d211d1d2a20323e252b34241c18150003030000000d070803040100000000000317180d00 *010500000000010402030305120d111509050b080a12130a1a140d171a1320171a29232b3f361e *2b2c0d120c121e141022191d2922242d1e362a214a42323b2f23241d17292e2e2a2c21393c3411 *1215030001484d4d4a575b554e4f2e29212c33232c2723513c24bab8b6c1c5c698968d675f4a5a *4e36706450938e819c8976b5c3ccc3d1ddc4d3dfc3d1e1c5d2e0c2d2e0c3d3e0c9d7e3cedae4cf *dbe3cfdbe4ccdce3cedde5ccdae3cad8e3c9d7e3cbd8e3c8d5e2c1d2e0c2d4e2c2d1e0c2d0e0c0 *cee0bfccdcb2c5d8a8bfd3aabcd1a5bcd0a7bdd0a2bcd0a7bacfa5b9d1a7bad3a2b6cda3bacf9b *b6d096b3cc9db3cc95b1cc97afca97b1cb9aafc88fb1c97c9fb9161823090d0c12110d32352912 *0c0f170908170d0a352e2616191a1718161d1d1b3a322b17171719100f1e19131506050d0a0d07 *0809040907080b070e0c08100f090d05090a0408080c130a0c0d0d0f150f090b0b060d00000600 *0306010000010002040506130a0a0c0c0c0f160f453a23958e7d816c5c3735230f0a0715181c11 *161a08090c0000040000040000000302051005070306060602040002070a0b0b151f1e07100d07 *0b08060508020004020004030407070a0c03010b020005000001080c0616171d120c0c07070b15 *14190f0e141411160000050201090700070100000000000000000000020000020b0b1206081006 *0507070605100c060d10040c16130f100d1d161b13151810171c0c080b1209091814180b060508 *0b0e0000040000000000000000000000040100000401000a0b061518140a0c111d1c1c110d0b20 *1f1a1c16101b170e120b060c03002b1f163d32262d2525000006170e0b1e130d0200000a02000b *0a0319120a1418171414174c3b24a099879f9a819d917e94866d9e9d9d9caec39babc397aec69d *aec79aadc6a0b2c99eb2c69eaec69caec8a1b2c9a5b5cba5b4c9a2b5c6a5b7caa8b7cba5b9cba7 *b7cdaab8ceadb9cbacbcceacbaccafbdceadbbcdafbbccb2c1cdb5c0ccacbbceaebed0aabed1b2 *c3d4aec1d1acbdcfb1bdccb3c3d1b5c1d2b8c4d0bac5d4b9c7d8b5c3d3b6c6d5b7c6d4bac7d3b6 *c6d4b9c3d5bbc7d8bfc8d3bbc8d9bdcad9c2cddcc2ccd9bfcbd8bbcadbb9c7d6b9c4d6abb7cd92 *92a39fa3aaa9a9a9a5afbab3becc9dacc3312d5102000600040902040b000204000000070b0a00 *070900000200000309090915151608070901040402030002060a3c464a50434c76768215162208 *111705051400030303050509020508070b01000100000100000000000000000000000000010300 *0000000000000001000000020005060405080507080a060e090605030207010206070602020500 *0003050506130808160c070e0504190c071c120d030000030f1000051400000700000143452b50 *5474160d0c0200020a01004e5a4e4e658c0101110000000000000000000500000b040700000000 *0000000000010001505c3d737c770b051602000600000500000000000000000000000000000200 *000000000000000000000b000001000000000000000000000000041812b3bec2bcc6cb00000500 *000200000100000900000100000503000e10101a4a4f4f869db199adc190a5bb708096828c9da0 *b1c9a5b5cc9fb4cb9eaec28092aa3132342321242a191430282c537ba0334548213c6731496c4e *6d892747630c22340c112c01092900000500000000000000000000000000000000000300000200 *00020000000000000000000000000000000000000000000000030000050302060d06040200010a *060308000600000705000402000000000000000300000508080d0500070302040c0b0506040807 *00020000000000000000000000030300020902040e01030a040400000000000000000000000000 *030a070f0f0207110000010c12171c293c1c160e0f1c1b37393546708d282221211e1c4d402e5c *6a79655a5b718dad7097bb78a0bd2332430913182e373d131e2d060716100a0e00000000000000 *000000000808112100030b0000000000010600040c03011104011409070a0503140607130a080d *070717100d1511050f110a161b0d0d070a0d03090809060d070717080a0f0b07201d142d220c2b *281d291f10271c1d40301d634c46897a69858c855d4b488a8e97b5c3d5bdcadbbacbddbccbdcbe *cbdbbbcbdfbccbdeb8cbe0bacde2bbccddc0cddfbdcde0bccddfbfcedfbccedfbbcfe1b8cee1bc *cee0becfe1bdcee0bbcce0bbcbddbdcddfbdcedebdcee1c0cee0c0cfe1c0cddfbeccdcbfccdfbe *cde0bdcddebbccdebbccdebbcedfbdcddca4b5c11f111316070b170b11655e65b4c3d6b5c7d4bb *c9d5b1c6d38e87856c868d6969537c8e96718192667e9139323e576b6e879aaaaebecca6aead89 *a1b8abbdceb8cadba9b9c7b5c9d9b6c8d5b4c6d5a4b8cda2b9cea8c1d2acc2d5a4b5c8899bac67 *6a5b1b1b1c111c160b0d10162122252420273a2c13080b0200030a0b0d00000000000000020503 *1118000205000000090809090c0f0b120a1f2517211a0f1a1f2211171012170f0913100a0b0c0b *171d09130a393a2a363e221c1d0c1e2a1f2f2d1f2b2d25565a4935352b22231a3028212a231b2f *322c221a1f625957818797798196514d502e202239291d3d332c593929b6b5b3bcbdbfb7b4b7b3 *b3b8b1b0a6b5bdc3bbcbd8bdcbdabdcddebfcfddbbcfe3bdcee2c3d2e1bdcfe1c1d1dec4cfe0c6 *d3e2c6d6e3c3d0e1c4d0e1c3d1e2c1cfe1c2d0debfd0dec2d1e0c0ceddbccee0bccddfbdccdebc *ccdebccbdfbbcbdcb3c5d7afc3d6aec2d7aabed4a9bcd2a7bcd3a5bdd2a6bbd3a7bbd0a4b8cfa6 *b9d2a1b9d199b1d199b1cd98b4ce98b1cc95b3ca9bb4cd94aecb798daa17121c090910170d0f4b *403c120d1503010512060d433e351919181c1d192017144c444223121210071312060847342239 *28251103070e01030d040810060c0a030c0e010b0804080100040c03050d060a0a0e0f05090e00 *000300000600000305010413070c241d1612160f17140b3e261a978d79989298655e531f160f0d *0b0d110a1c00000300000000000000000403010806060d010207040f0d00000203060c09070c06 *020b05040c03000a0202060c0e0a101d1b13131a181715080a1400000000000008050d201d1d0c *1111140e140f0b1811061512050e02010904000805020600000000000000000006000408000211 *050407030a0b0f0d191a171e11180a0c0b07040819151609050e05020a03000207080d090c1806 *010700040b0000000000000000000000000000000000000000030a090a1110130e07101210150a *08100c090a1406050802090200050300002d251d3f231b271918000002201413170e140200020b *05031e13061e120e1b170c1d0c12553921979189a3906aa49c82a2988ca2a2a09aaac499adc49c *aac69dabc49dabc3a4b0c5a3b1c89ab1c79bb1caa2b4cba3afc6a4b3c7a6b6c9a4b3c9a7b5cba9 *b7ccacb9cbafb8ccaeb6c9aebbc9aab7ccadbbceb0baccb2bed1b1bed0acbdccadbed0adb9cdaa *b8cca8b8cdabb7ceabb8cdaabbcfa7bacfafbdcfaebbcbb3bdceb3bdd1acb9ceacb9ccabbcd1aa *bcd1adb9cdabbed3b1bfd2afbdd1b4c3d4b1c3d3b1c0d3b0c1d5b2c1d7b1bed1b1c0d1a9bbcea8 *b6cba6aec0abb6c9b0bfcbb1c1d3b1c2d4afbccd9298b0220f1b02030900010400000508070a0a *0814030003050100100d0c0f17150f1c160619190001090001080c0b0c464c36828f915c6e8d0e *0d1709020c130d1d04010d03000d1a16220a000600000000000000000100000000000000000000 *0003000000000000000000000001000001050305050109150f192f38413334421f14110804090b *0407030004190d08180507060007030007171d170c131d06010400000000000000000000000000 *000a00000c01000109000503000034211c0502110000020000000000010000004f471d70819921 *213500000200000a18060a7780726895b122263d04092602001500000000000005010100000300 *0004000001000002000000000000000000000000000000000005000000031216b3bdc2bec5c900 *00040000000000000000010c0203220c07405b6f41587825363c29395752688c6f778376717092 *a4ba98afc5a0b2c6a6b9caa6b4c98ea3ab403c312531434c608a4c5f701f1c25202430080a1329 *291f494f40453d3f28364a1d242403020400000000000000000000000000000000000100000000 *00000000000000000000000000000000000100000300000000000700010000000100000100000a *03010c0100020605070b030e08061709070200000203050303040601000305011d1405160d0813 *05000e0604070000030000050000100700100a01130e03251d0c23140c04000000000000000000 *00030e0a04050501000000020002202e364253697081825c6a5776858c505842231f113b33225d *606a8799a49aacbba3afb9968f863426221b13121e1408130e13423a305b5d5f353e3816221e06 *0b090005080403040806040b04000f00001c09001a11071d0a041a09031c16081a10071411091e *1c10161508150f0709050015100410140b1e140d27271c1e22121616091615041c190a1d180b35 *2415281d102621143e301d5d6a71788a9790a6bd8ea5b0746b67aab1c1bbcadbc1cddebdcddebd *cbdcbdcddcbcceddc1cedcbeceddbfd0e0bfcfdebdcfdfbccfdfbdcfdcc0cedcbfcfdebdcee0bf *cee0bdceddc0cedebed0e1bcd0dfbccfdebecedfc0cddebecedcc1cfdfbfd1e0bdcedfbdceddbd *cfdfc1cedec1cedcbdd0ddbecfddbecddebcccdeb5c5d2a49985a49c81a5a28db4b6b1bbcddcbb *ccdbbdcedbb4c5d8aaaebd838d89a6b0c39eaeb1668c9d7391a259808b6a604c8b8f9da7b3c4bb *cbd8b2bbbdb8c8d5becddbb7c3cebdcbd9bfceddbbcadca6acb9a5abb2aab8c9aebac79bb0c297 *a6b06f8ca71d30362428251916120e1517232c32232c222a3624171d1503101300000100000000 *00000000000304010c0e08152015111a14151a14313b2a1f29202728292f3a282c38291d2c190a *0a05040a090c100d242a1e232f262b2d163038194b4a2d3d3b29564430403726373023413d3231 *36362a2921171b213044525f77874e6e7f44525c2b2621302b282d241f604437b8b2aec5c3c4c4 *c9d3becedbbdcddac1d1dcbdd0dec2d1e2bccfe0c0d2dfc1d0ddc1d1ddc0d3dfbfcfdebdcfdfc1 *cedfc2cfe0c1d1dec6d1dfc7d1e1c4d3e1c1d2e0bdcedebecfdebed1e0c0d0e0c0cfe0bfcddcbc *cdddbdcddeb7cbdabacbdcb6c7d9b6c6d8b5c5d5b3c3d6b1c1d3afbbd1a7bbd0a3bbd1a7bdd4a8 *bbd2a4bad2a0bbd0a2b5cca2b6d19bb5cfa1b6cc98b2cd97b1cb9bb2c998b0c96a6c742217132b *1e186d74691f1b1f08040a160a07544a3a1e1d0f151709271c15725e3e23100f08040815090c50 *4d3d38362e100a0c0e06062a1f14695b4d2f24250802041a0d0a291a171e1911110b0808080806 *00030300000201020c0a090606071118191d20210b171323211b423d249886779b9386908c8235 *221a10060515141012110c1d080326090617060407080606090c070b0b0400040f0a071212080b *06040803080b070e1006021b0b0512120c02030606070e04060a0402022113071e0c040a020601 *0006020005161012241c1a3229201c151103000200000000000000000000000400000005030314 *1309090606080303070407100a0f23252b150d0908090b0a1d250d100e0c070b0f02031206071b *16130a03020f090f060005010001000000000000000000000000000000120f0914160c080b0c0c *0e0b0c110c260c074330192b130907000000000000000202000302000001000025120c271a0918 *0602130a051d1a111e1e1c130c0c190f05432a159a917ca09a8ba4a08ea09d9ba6a5ac9bacc2a0 *aec69cb0c5a0b2c6a4b0c6a4b3c59eb0c7a2b1c7a8b5c7a0b3cba0b4caa5b6caabbbcba8b8c8a8 *b6ceaabaceacb7cbadb7c9adbcceabbbcdaebbccaebbccabbcceaab9ccaabbcdaabacba6b8cba8 *bccca3b6caa1b2c8a4b6cba8b5c9a6b6cba8b4c9a5b5cba6b4c9a8bcd1a9bac9a4b6cca3b4c6a0 *b4c79bb2c9a0b2caa1b6c9a2b2c8a4b3c9a4b4c5a1b1c7a2b4caa5b3c9a6b5c8a5b6cca6b6cba0 *b3c9a2b6c99fb1c29cafc4a7b4caaab8cba8bcd0a9bbcea7b4c99495a43323221613111317131d *17121a1a1610191c02010504040c050911060802030102070103070200201c123f41455664776b *698c2e21214a42333f4850212123150c10140a0f0a0f1a0801050405060504040b0c0103000000 *0000020000000000000001020001050000090903141006271f1334221b635d4a46545a22252610 *11113331232e2f3521332c2c232211030503000103000200000000000000000000000000000003 *00000400000000002213053540493a2111919a982d283e06030a0400000000000000004c72741b *16340000050400060a0505494425476fa1130d34110d0c1f2c4b00000000000000000042595f13 *132324130e03000000000500000000000000000000000000000000000000000005190fb3bec2be *c6ca0000040000050000060000090b1a383a597c0e1d23071217161f1d4c69625161677594af68 *7d757798ae697f858ca5b6a1b6c9a8b9cb9fb1c45e797d21242e131a29070e1b121a2814253b00 *020706122002112613294200081300011100111d00040500000000000100000000000400000400 *00010000020100000000000000000000000000000000000000040000050000020000000100000b *06010f030510060303060603030b080908060605060700090f0400000000000003050a0b171c05 *0b0f030508131d0c211d0b1b19051a130a1b1706090d0800090d070b12070b1600000000000000 *000000000000061b000b17000001000003000509223834708da0919da18c9ead404238171c1f23 *22224b48457999aa7491a29ab1c698b0c33e5b7e415b6d6790a87381776d7c86435d6a243f471d *323f0f151a0e0c0b050505140e051516090e1a181d352d0f180f071211050202000000050a020d *1009020607050a050205040709040a1008150b07080e0b050d09141610020906060d091d19112b *31242a271439291b3d392b46474b3d383b403734545969959eb2abb9c6b6c6d8bbccdebacedfbb *cbdebbccdebacddfbdcedeb8cedfbecfe0bdcee0bbccddbbccdfbccedebfcedfbccddebccde0bd *cfe0bccedebccee0bbcee0becfdeb9cee0bdd0debcd0dfbacfe0bacfe1bccee0c1cfe1bdd0e1be *cfe0baceddbacedfbed0e2bcd2e2bdd1dfbdcee0bdcde0bbcee0b8cbdcb6ccdcbbccdbbecfdebb *cdddbbccdebbccdeb9cbdcafc4d4a3a7abb6c9d7b2c9d697b3be83919c454b409396aba6b7c9b5 *c6d4bbceddbed0debbcedfbbcedebbceddc1d0ddbdcfdebdcee0bdcddcbccbd8b4c4d2b1c5d6a3 *b4c4a5bccf7a908d3d464c2f494e2233291d2c2c1c29201f2b282b3e2c212d2700000100000300 *000100000100000100090815251a242d1d1f261611140d19242026281a1b171326352a24271721 *25192624171b26130d1b0d1c2e1c16291e283b2a3c5337445e4f333c3a44414235312b342a2028 *2b26232a232e342f11161800000204090e00020920201c3b2c222f392936362e594c47b6b6b5c6 *c7cac1ccd8bed0e0bcceddbecedebbd1e1bfd1e2bdd0e0bed1dfc0d0e2bdd3e2c1d1e1bed1e0bc *d0debdd0e0bed2e0bdd0e0c1d1e2c4d2e3c3d3e3c3d1dfc1d1debfd1e0bbd0e0bed1e1bed0e1bb *cddebccee1bccee1becddfbdcddcbcccdeb9ccdcb7c9d8b8c8dbb5c4d6afbfd8aac2d4acc1d6a8 *c1d5aabed4a8c1d5a5bed4a1b7d1a1b7d39ab5d19bb3cc96b5cc98b5cb9ab5c894b3cc96b1cc83 *84985c4f588b959971675e2624223b32217e7e653522241712142116166c635817191801070c0c *0d05473d25312c2504040a09090d151112656a60363f3e0a0f0f201f1957504e23273307070a15 *1c2102050f07081000040301050b0004030c0c0822312b0701041d1717534229989179a2947d9f *99915c50440d0707160d0c1e1e1a140c133f2f2e353332060707050e070b0807060304262c2b06 *0a0e00020603081111130d0b16160003010200020000020000000000040100061d181d261c1d0c *0b07000000000000010101010108000004060e1600000500000000000000000000000307010400 *000703050b00010800040a030f1200080a12180b0c080c03020300000200000500061101020a05 *08070415150000040000050000040000010000000000000000000000000001030c0f140c080900 *000302000c170f12615f4f2c1f14150a06090202010000010000000000000000000000473a283b *3e2f16180d1808041d14091e120a352a1c363c3b4836259a94829fa3a09c9270a79c96aeb1bca2 *b0c49aafc79db1c49fb0c6a4b2c7a2b3c6a4b6c6a4b6cca4b6c99eb6c7abb9cea6b7cba5b5cca8 *b6cea9bacaa8b9caa8b7cba7b8cba5b7cba4b8cca6b9cea7b8cda0b2ca9fb6c99ab4c796afc695 *afc79bafc798aec499afc994adc59db2c89bb2c99dafc799aec697aec09ab1c89caec1a2b1c896 *acc49db1c69ab0c49baec694aac591a9c198adc097abc397adc48facc398b1c89baec5a0b2c89d *b0c79bb0c79cafc79aafc69bb0c3a0aec29bb1c79bb1c6a2b2c8a1b1ca9dafc692a1b570798e4f *4c49323e3f181a201b141848483d30364400010700030701070906070a0d140e232123697a7186 *96aa8497a9818681727f968093ab3e48533531301a1f25100d160b0a0e000c1600040e0b142000 *000200000106040303050b0600011d262305090d2426163338313f4b573d413b54758d3e546238 *526a0816170f101c14171c2a201c37505f030a1600000600000100000000000000000100000000 *00022e1d115146540c04042a271e180b0e4847409eadbb3032442c3b49000a1a0000060000000a *1a2e1c241e2b2f361f3362030919000918000a1800050b00000700000d00000500000000000001 *080c070f190f182716222f000004000000000000000000000000000002000002000004031b1bb3 *bfc3bbc7ca0000010000000302080b0d0f3541583944540e030a0f0d142131210c141c2b262030 *302f38382b353a2a2c3d375f6e849caec1aab7c9a2b1c186898038323619101e0b0c1e09061404 *0717030b170a111512121a24383e1e201c00000100000300000000020d00000000000011040100 *000000000000000000000000000000000000000000000300000000000004000007000305080503 *000307040a1711110c03070801010300000600000301070000000000000704000d0b070c04021c *06010e00010f0401150c0b0908071c1b0f06020100000000000000000004000008030500000000 *0000000000000108000000000000000000000000080f09030307202643869bb7a4bccf93a6ad4f *606f536159626c858099b2778a9f657d9f5367761e1d29160b0f3027284d697a0d090f0a0a1017 *0a092d1a102b2f1f141509120b08120a171611110f13121910070700010e0d0a08090902010516 *14133743431814120903010300010001020c050510150d0f0c0912080323180e2c1a0c1f1a0a29 *211b1f1d15262e262e2a204c54622d262239291d574d41857c84afc3d1bacadbb8cadbbac9dbbb *caddbdceddc1cdddbccddebfcde0bccddebccce2bbc9debfcedfbdcddfbdcadcc1cedebeccddbc *cddebdcee1b9cddebbcee1bfcee0c1d0e0c0ccddbdcbdebbccddbaccdfbfcce0bccddfbccee0be *cedebecddcbdcddec0cde0bbcbdebbcce0bdd0e0bacde0bbcde0bacee0baccdbbccddbbdcedfb8 *cce0baceddbbccdfbccde0bbcdddbdcedebbccdcbdccdcb6c9d89b9f9fadb6bea29ea3b3c3d5bd *ccdbbccddbc1cddec1cedebecdddbdcfdebecedcbdd0dcbcd0debdcfdfbecedfbecddbbfccdcb7 *c8d9adbcceafc1d4a5b1c770858e30382c2b2d1e302c1e4a3f314f432d39452d11110f01041000 *0005030d0808150a0407090806011f2310202c233a3720382e19292f213e3b1e3f3d2044461e2e *2e1a42432d374040443d34634e3b403c1f49482c4a4b325857315f665066635d868481605c542f *28212d271f3532283832272320231f0e0e200a0b2a232225252728282332312340372e704f35b9 *b1b4c4c3c6c3cbd8c2d0e0c2cedec3d1dcbdcee2bbd1e0c3d0e1c0cedfc0d0e2bed0dec3d1e1c1 *d1e2c1d1e0c1d1e0c1cfe1bdcee2c0cee1c1cee0c1d1e1c2d2e1c1d1dec2d1e1c1d0dec1d1e0be *cedfbfcddfc1d0dfc1cfe1becde0beceddbecbdcc0cddcc1cce0bccaddbbc8d9b6c6d9b3c5d7b0 *c4d7b1c5d6b1c3d7b1c3d6b1c3d3a8bfd2a7bad2a3b8ce9eb6d1a0b6d1a2b7cf9cb6ce9db8d09c *b9cfa2b6cca3b5c9a0b7ce9fb3cb98abbf8b795fa3b1c098a3b180635557493984787173654d38 *241f25160e604c37452d1c1205051106092b161175685c302f3609050b100e0f564c41231d1f08 *060708070a070008000003030006050307050608232419313a3e110208312016625a3aa49a96a4 *a19ca4a19c684f3d1e0c0820211d11050b1103070800090500060300040c151510120e05050300 *000100000006010203010307020700000001000200000000000000000001000008000009070e00 *00060000000000000000020702030b01050000000100020000000000020000000000000000000b *100e0000000d090a0803090000030000000000000a0d0a03040503000000000000000000000104 *00060704090500070000000200000500010000000000000000000000000000000000000a07070a *0a0800000113090b2c130f898371725340653a2157331b1c0d0e251512341c152e19161e0f0c42 *3b33230c080b00001206031207061a171234343122110f4525149a8168978f7293846ea49782ac *b1bc9fafc6a5b1c89eb1c9a1b3c7a3b6c7a4b6c8a3b6c9aab9cdaab8cba9b8c9abb7ccaab9cca7 *b9ce9fb5caa4b5caa2b6cfa0b3cca4b2c8a5b1c89dadc69daec79db4c79badc59baec499aac497 *aac297aac294abc394acc299a8bc95abc49cabc397aac798adc396a9c398aabe9aaac395a9bc97 *a6bd95aac09aaabe99aac09ba9c197a6bf96acc696abc19aaac196abc39facc799a9c19eadbd9d *aec49daec592a8bf99aac197a9bf95acc59dacc39daec39caac19dacc19eaec79fafc4a1b1c8a3 *b0c494a0b282829945404b645a55778da52c2f431717171318230f0c0b21221f32334a4c4e5191 *a4ad9aa7b99dacbd8d97aa959aa49ca9bd555a84403d4e192c3c15131d0f141e0604040b0c0b17 *0a0c0f000003060913111610030820141840443e16110e433f235c646a4842593c2f36514d514a *464f4e4854544737443e36696d59767f964950591e152609030e02000614030513090406000007 *000012000330301fa3b0bb5452734030292e2e4e170e173e5157242d5909010b221d1605000600 *00030000091d201e040a140001042b230908000f00000000000000000000000000000000000000 *0000000000070004111d370c062700000200000100000000000000000000000000000000000001 *1a18b2c0c3bcc6cb0000051608215f5c404e5b685f6a472027330b0e05080b0b11171100041527 *335e476f814c5d4269684d746948969b91aebcccaabbcca8b6cb91a4b25c6c6d18180f01030710 *0e10060307070a0f020c1400010600000200000000000000000000000000000000000000000000 *000000000000000000000000000000000001000000000000000000000300000001000000000003 *030200040302000100000305060a0003090000000d130a150d0b0e0809252a1e253f4c12171217 *1d132f1e0d261d0a231a071c0e011d150715100400000000000000000000000202020008040000 *000000000000000000000000000100000707120a090b040d150a10140d5663679eb4c6aabdca6d *98b73e3d4d3d4e7157626e9499a48e9aa465665d5f4e41271b1d3330222824292e435324261d26 *1f12472e195c6b75726e685d5a46302a211a130f0d0b071512061010050603020a0f101512101a *0f0b1e1c1a0d0b0b14170a0e1d1c110f060d0505110f091b190c2224161d130e1410121f2a1a26 *200e21180c2c1d0928251d44311042301d4c47425f614d878780b1c3ccbacadabcccdbbaccdabc *cbdebcccddb9cee0bdcfdebbcddebdcee0c1ccddbccce0bdcedfbecedebccee0bbcedfc1cfe1bf *d0e1becedcbccfdfbcccdebdcfe0bdcfe0becee2bccfe1bacedfbdcfe0bdcfdebfcee0bccfdebb *cedfbccde0bbcce1bdccdfbfcedebbcde0bbcfdfbbcedebccee2bbcee2bccde0b9cedfbecfdfbd *d1e1bccfe0bccfdfbbcee0bbcddeb9cddbbdcde0bcccdfbfcfdcbbcbdbb6cddbbacddbb9ccdbba *cbdebecddfbdd1debdcfddbbcfdfbdcfddbccee0c0cfdfbdcedcbfcfddbbcdddbfcee0bdd0ddbe *cfdfbaccdeafc1d2b6c6d8a3b3bd74878d4f59434150333c4b304645324855382431241a201c02 *050503070a040b0e00040505110f03090a312a16403b2d3f3a2c2625163630202c2e263b4e5e46 *4d3a3b3d2f282f2e4a4e4953667068879e819393adb09cada98dacb0a4b3bebcb6c6cdb7c3c982 *8c8d312c2d30372e32332d2e312c2524302e2c2b2f34372e2f2f1e221c2a2b29392e2e3c393962 *523ab1b2adbbbab8bdc4cec3d0dcc1d1e0c1d1debdd1e0bfcfe0c0d2e1c3d2e3c0d1e2bed0dfc0 *d1e0bccfe2c0cfe0bdcfe1c2d1e1c0d1ddc1d2e2c0d1e0c1d1dfc5d2e0c1d2e0bdd0e0bbd0e2c0 *d2e2c0d0e0bdd0e0c0d0debfcedfc1cedfbdcedfbbcedebdcedfbfd0e1bdcdddbacbdbc0cddeb8 *c7dbb5c6d8afc5d8b5c6dbb6c7dcb7c6d9aec1d7aac1d6a4c0d5a9b9d3a9bbd1a5bdd19fb7d0a1 *b7d3a1b4d2a2b9cea2bacda9b9cca5b9ce9bb8cfa1bbcea8b8cea2b7cd9cb6cba5b7c9a4a79daa *b6c69aa19f65412a7c54489ea4a070534855372c574633938f7f543c3515090c281a1568544c2c *273308070d04080b0007060000020802040403090807081113171a151e0b0c0e272a275a4844a1 *9a86adaaa79e9d9982766e20141220120d0a090a13130c04020000000003000005000601000701 *04060000010000000605020c09040d0b0c0b020b0d070b0000010501010d0a070507070604060c *080801000000000002000206050405070807030800000000000100000000000000000000000000 *010218181300000a0d141707060b00000000000000000009110c020f1200000800000000000001 *03040603070602030000030000000000000000070000020000000000000000000000000000000c *0e0f04050e000003101011301e138b85748a7972908c7b837466120503291a11322728321b1302 *000025180d160f0d080708140b0a1d140e2e352d26242330231a53483da098949f927baba195ad *a79ba9adb6a3b4c7a7b3c6a1b1c6a4b1c9a4b6caa4b6c9a4bacba5b9cca4b4c8a4b7cca4b6cea4 *b6cc9bb1c69cb1c897aec796acc595aac494abc594aac698aac699a9c09bafc397adc394a8c094 *acc191abbf92a8c091a7c18fabbe97aec396abbe97a8c091aac092abc68ca8c292abc796a8c596 *acc391aabe94aec29badbf95abc396abbe98aac396a8c19aaac09facc49badc197a7bd96aac393 *adc296abc296acc59eaec99baec39aadbd9baec098acc498abc299aac19fabc098aac29bacc59c *afc7a3b0c795acc48d94af96a1b193a4bc8b95b058575f525a5a53545a494947696a5a818c9973 *7f8199acc09cadc0a0aec399a9c095a8bd90a9c28e919e6d728b1a141d212121151519161b190f *0e172d34301d1516241b102a303927180f372b226b685b5f52475b462c5150494b524f4c3f4868 *5a518c8c8b9a9990a7aeb3abb0b8a3a9ab5d615e2e3c402c28302f1b124426158665316e655d73 *5936948d6ea1997e6f6a5a6e79827a8faf313f470d1a280003140a152523252d0b0f1710335c00 *001900000100000305060b00000e0000020d1e2b25426c00000600000000000000000000000000 *000000000000000000000000000000000100000000000000000000000000000000000300000000 *000006221ab3bec3bcc7ca1d162d8e9daa7c8e934c6082799aa21f313303090f0a0d22121c2305 *0912101112343f2d767960a0b3c3a6b9caaabbcbadbed0aabed1a4b3c47573723d323f1c191e11 *161a06080d07050d01020b00000200010a00010700020d00000000000100000200000100000000 *000000000200000400000000000000000000000000000004000003000500000100000000000100 *00000000000000000100030000020200010300021109070e090d110c0b16150e211d2021120c1e *0b0b271f181d130c25150c13160b05010304050708060603020206020200000001000005050400 *0001000001000004000000000003000003000003111b261d21202e2f233633297c899598abc6aa *b8ccb1bccbaab5bf9fa7a78e939c9aadc190abc672848f617d8a7e85837a797e5c4d35705c4376 *818a6a7e8d84a0b3637c977090ae7991aa6b7b81181d2709040b14131406050806060a09090f11 *161a1b140c1c21210c09090a0708080a0d100e170b050e0606091810061d1911281f171a100c28 *1e1838271c382e1b2f2d1e5d6c5e3f3f2f3e2b244e3f3e848e9fb3c4d1b7c7dbbbccdbbbceddbb *ceddbdccddbdccddbdcbdcbeceddbecedfbfd0e0c1cee1becfe4bacee2c1cfdfc2d1e0c1cfe0c1 *d0e0bdcedfbccddfbccee2becde1bdcfe2c0cfdfc0cfdebbcfe0bccfdebccfe2bbcee1bccee3bc *cfe1bfcdddc0cee0bfcedfbbd0e0c1d0e0bccedfbccce0becfe2bdcedebed0dfc0cee1becedfbb *cfdfbcd0e2bbcee2b9cce0bccedebbcedfb8cddebdcee0bcccdcbaccdfbbccdebaccdebbcee0b9 *cddebdcedebdcfe0c0ceddbdd1e0bdd1dfbccfe0c0d0dfc5d1e0c3d0e0c2d1e0c3d1e1c2d1e1c2 *d1e1bbc7d9b3c4d8b0c3d5bac9dca1b5c18d8f7d796a58302b2330302829322d2a2c232b2b1f34 *38271315172b201c8679693e3628181d17202a1c4f6a758298a55b69733e3a40646c7346423b50 *5848687a8151554a322d253b3941526562656255989ca9b8c6d5bdcddabfd1dbbdccd8bbccdbbb *ccd96662632f251d303029302e2b292f2f161c1f22211f2320202425211b1d1c1f201f24201f2d *2021352622a09179bdb1a4c3cacec1d0e2c3d1e0c1d1dec2d1e2c2d1e1c1d3e3bed1e2c0cfe1be *d0e1c3d3e1bed1e1bfd1e2c1cee2bdd1e2c1d1e1c0d0e3c0d1e2bdd1e3bed3e3c0d3e2bfd0dfc0 *d1e2c1d1e4bdd0e3bfcee1c1d1e1bdd0e1bed1e1bbcfe0c0d0e1becee2c0d0e2c0cee0bfcddebc *ccddb9cbddb5c9deb5c8dcb6c9debacbdfbbcbdbb4c7d8b2c3d7acc1d7b4c6d8b1c6daadc3d4a4 *bbd5a5b9d2a7b8d3a4bbd2a8bed3a8bdd3a8bdd3a7bfd3a8bdd3a7b9d1a8bbd1a5b9d1aabed1a9 *bfd3abc0d4b1c0d2b1bec9b2becdafc0d0b2c0ceb1bdccafbcc9b6c1cfa8acb9866c5a805f4ca0 *98917b635a4329282c141218090d0d030a11090c160c0b19110a2a1d141f1815110f0d1d17174c *3c2fa6a399b1b0ada4aaaaa39987583e253d2a1d261811422a1d0f03090f0105401d1634260e42 *290f422c170e03050700004020163f23183a1c0e321e102417120705032109042a160c2c190b2f *160a22140f0401051a07082819093f27183c2110301b0f00000014040624160a230b081001050f *01001305060c091002000307090703070903000600000100000103040705080c04020500000000 *000005000502000b02000b04000000000007000004000000000000000000000100000400000401 *01000a0c0e0e0a080100000603021e1c207c7f848675648e827a8176762c0d062f201d3f281747 *3b27080003241915170c0d1705051e120e1e1d141e1a1823201c483b2f5b54439c9586aa9f8eb1 *b6b4b1b7b5a4a9a4a3b5c9a0b0c4a3b4c9a6b6cba7b6cca9b6caa9b9caa4b8cfa4b6ce9eb2c899 *b0cb9eb2cb9daec598acc698acc594a9c48da5c091a5c090a9c391a7c190aac194a8c48da9c296 *a9c499abc49aaabf98a9c596abc298aac297a9c293a5c099abc298acc398aac699aac198a7bf99 *aac393aac595abc095a9c693aac69aa9c09aabbf94abc39badc196adc696aec997a8c697a8c49c *a6c39aadc298aac19bafc793aac69eadc69dacc99caec898adc89babc49ba9c195aabf97abc79f *acc695aac494aec89bafc99bacc49badc39badc398a9be9aa8b89da8bb959cb08d93a993a2b696 *acc399aec39babbf9faec3a1aec9a1adc5a0adc49aabc69daac18995ad2b2e3f23292e0d162416 *151c1e1c21363435313d445765706677807681807685838d9daaa1a9b3a4a8b19096a78e96939f *a4ac9d9da4b0b9c4b4bfccb7c2cfbdc6d5bcc4d4968c927f706083634cafaa98bdbdbdc2c8cfc3 *c3cac3c6ccc2c9cfb8c1d1958ca470666d555d8115131d151c2d1d1618373542375d8107143e00 *000e04010c28180f6f85874f54571e172b00000007181601062500000d0000030100000a0d0f00 *000000000000000000000000000100000000000000000000000000000000000100000200000500 *0001030001102824b5c1c4bfc8cc06081948507c3a526b2d4a7a1d262203080900080900070706 *110d040e080d171032464562879d758bada4b6cba9bbcca9bccbaab8ccb0bdcea0b1be8e9ca07d *786a30392c060a080504050100030000000000000000000000000707070f1e2100010000000000 *000000000500000000000000000000000000000000000000000000000000000000000300000000 *00000000000000000100000901020c02030d08081a0d061a1b081d0d031d1207190f081d140627 *2210281f0c261d0f2212061415060705040000000405010000000000000000000207040b0b0007 *0503000000000000000000000905000506000005010806070c07252921526d7651688487879aa6 *b6c4afbeceb4c6d8b6c6d6afc1d18ca8c08b98ab9eadb8869185746c63a2aebc9ba4b5acbcccae *bccc99a2b48e98a68795aa7d8a988595937e8b9c3e464f3e4c523f302c3f3323211f0e18181413 *100d0a080a180e0d181a0e201e09181103120b02151207140c081a1409110f072c221122251632 *2f1e4139214b473247402b3a3f2b504d4244381f8d7f76adb7bdb6c6ccbbc9d9becbdbb9ccdcbc *ccdec0cfe0bbccddbbcedfbcd0debeceddc1cedbbccedcc1cedfbdcde0bdcedfbbcddebdd0e0bc *cee0bdcddebdccdebdcedfbbcddebdcedebdd0ddbdcee0c0d0e0bccfe0c1cdddbdceddbfceddbd *d0e1bdcfe1bbd0e1bbcfe1bfd0ddbdcfdfbfcddebdcedfbed0e0bed1e0bdcddfc1d1e0bdcfe0bd *cfddbdceddbecedeb9cee0bdcee0becddebdcddebbccdfbecedfbbcddebbd0debbcedbb9cedebc *cedfbbccdebfcee0bcd0e1c0d1e1bed2dec1d0debfd0debdd0dec3d0dfc6d2e1c2d1e2c3d0e0c0 *d0e0c2d1dfbfccdcb9c4d4bcc9d8becddbbccbd8bccad7b7c5d093917f4a452f36342e201e1749 *5c61494234645b4b95999db5c7d5a0b4bb38443a30352b525a496c78844c575f57737b58656b54 *635a4040323d3d355c62704d453d6f675c695d5a97a1aab1c3d0bbcdddbcccddbccddabbcddcb9 *cbdcbaccd9999ea7342b2736312f211c1820190b36292143382b5a5a485759465f5b4a716d5a5e *68636e7769707464a9a492c0c2c5bdcbd6c1d1debcceddbed0e1c2d0e2c1d1e0bcd1ddbed0e0bf *d1e1bbcfe0bfd1e0bdd0e2c1cfe0bccedfbbcedfbbd0dec3d3e3bdd0dec0d2e2bbd0dfbdd0e0bb *d1dfbdd0e0bed2dfc1d2e1bdcedfbed0e1bdcfe1bcd1e2bbcee0bbd0e1bccee0bdd1e0bbcfe1bd *cee0bdcee0b8ccdeb9cddcb8ccddb4cadcb8cbddbacfdebcccddb5c6dbb2c4d8b5c7dbb6cbdaab *c1d1a5bdd3a3bfd4a6bfd7a4bbd4a8becfa8bcd6a6bdd4a9bfd2aac1d3a6bed3a4bed3a6bed4af *c2d5aac1d2aec3d4b1c4d6b3c4d2aec2d1b1c2d1b3c5d6b5c5d5b5c5d5b8c6d5bac5d6b6c4cfb9 *c8d6b5c4d3b5c1d0b2bbc5b0b2b9aba6aba39a944e3d3a1d1a211d2426363a3a3136313a312932 *2a31574b37a9a39aaaa492a7a39da9a9a85c3b292b221c1d150d241e111c1b14120b091e241c27 *2c263931252c332b23202127271e262b1e322c1a1f201f231e16121c1a1e221c191517251b161f *1d15241a151c151306040408080e1416121c1e18201c1c0e0b110b07081a0f0e332921443a2e2a *25231d1d1c13161322221b1f2a25293d4020232627312f110b08090904161b251222251b2d380c *0d121215171f232d202a29162327080c1203050300020204050900000000000004000002020300 *00010000020404020e111014110f1d1b121f1b154d4636605c486968566a645138291e3c2a1e3c *392727251a0a000124140b110a030f0604190d0a241b11242a2a2124183028185b3e1ea59d90aa *a59ab1aca0adaeaea5aaaea4b4c7a8b6c9a4b3c9acb6caa9b7c9a8b9cea7b9d1a9b8d0a4b8cc9a *b1c999acc192a9c299a8c493a9c298abc295a9c297aac193adc58ea9c08cacc48da5be8da5bf8e *a8c194a7bf94a9c391aabf94aabf93acc29aabc197a9c19aabc193a8c38faac399adc196abc098 *aec598acc198acc09baac599aabc9aaac399a8c193adc79aacc196aec79aaac092a7c197abc199 *a9c19aaec792a7c18ba3c195aac498acc197aabb93aac195abc697a8c196abc193a7c195aac195 *abc195a5ba99aac19caabd98acc195aac39babbc99abc29badc39baac199abc29bacc29aa9bea1 *afc29dafc598b0c697abc0a5b0c397aec5a0b3c4a4afc4a2b0c5a2aec4a1aec367666f3f27362d *2f382325271f1c182624234035354c4d4876838a9aadbb8692a39aa3b1a8afbeb2becbb1bdcab2 *bccbb5bfcfb4bccdb8c2d2bbc5d3bcc6d4c0c9d5bfcad6c1c9d4bec6d2c0c4cec6ccd8c7d1dcc8 *d2ddc6cfddc3cddbb2bed1adbccbb4bcc7a2a7bc867e855750410d0c0e00000407040a0000050c *06070f0a07070908142b3a2845740c172d00001d00000000000000000000000000000000000000 *030d00000000000000000000000000000000000000000000000000000000000000000000000003 *0306000001030203132f2fb3c0c3bdc7c98ba1b07181751d262f080e1d03080f00051304050b1d *29261f252e1014141c2e2b282e2a2a443c4b4e479eb1c5adbeccacc0d1aabdd1afbdcea8bacca2 *b3c78b989c5d5d57332c2c21171209070800010706090f07050d0c121c10203004071700000000 *000500000000000100000400000400000200000000000000000000000000000100000500000703 *00090100000000010300000600011a0a091b120f1c0d0f150f0b1e17181f1e111b190e1f170a20 *160a19190d1017161113100e060b06030c00000000010304060202000100000000000404070e07 *0e0803010300000200000100000200000200050800070c141c1516231f384e40606c5f82877c9e *a4b0b1c0d1b3c6d8b6c6dab1c6d9b1c3d49ea5a39aaabda5aebd8792a072666eabbaccb2c6d7b1 *c6d8acbdd09aa6ae8ca5bc9aaabfa0a7b2a0a5b59ca7b64f483e494e60424047403b35434c3d2f *3328281f12120c0d0a0c0f221c1a1e101033332b2e2d1a18190f2120142421153e361e3936223b *33203e392b56503a656b5d7788916564647887987d76689fa8bdb5c7d8bacddbbfcedebbcdddbe *d0e0becedebecfe0bbcde1bbcde2bacde0bdcce1c1cedebdcfddbfcde0c1cee0bdccdebbcee1bb *cee1bbcee1bccee1bccedfbdd0e0bed0e2bdcde0c1d0e2c3d1e1c0d0e2bccfe2bdcee2bdd1dfbf *d1e0c1d0e2becfe1c0d1e2bdd0e2bfd1e2bfd0e2bed0e2c3d1e0bfd1e0c1cee2c1cfe0bdcee1bf *cfe2c0cfe1bdcee1c1d1e0bbcee0bed0dfbdcddebccde0bbcfe0bbcfdfbdcee0bed1e2bdd1e3bd *d1e1bdd1e1becee0bfcde0bfcfe0bdcee2bed0e2c3d0e2c4d1e1c4d4e1c6d4e1c6d2e1c1d0dfc0 *cfe0c0d0dfc3d2e1c4d2e3c3d2e1c4d2ddc2d0e1c3cee0c0cedebccee0bacadab1c0c8999b8d87 *7d6a9c967bacb2b4b8c8d4b9c8d6b6c9db909cac565c4f686a47888c8791a5b0716e736e756b5a *5d606e736b7077706c7d8a7d90a28a94a2a7b6c1b6c3d3bacbdbb7ccddbbcbddbdcee0bccee0bd *d0debcd0e0b9cddd9eacb539352e352f31343c31232b2324211a211d17272b2837362f341e1c2c *1f22241e1b302928472f29a0978db7b1abbec7d3bcd0e2becfe1bfd1dfbbcee2bdcee2bfd1e3ba *d1e0bdd1e1bdd1e1bcd1e2bfd2e3bdcfe2bdcde0bdcee0bbd1e2bfd0e1c0d1e2c3d3e2c1d2e3bd *d0e1bdcfe0bed0e0bed1e2c1d2e4c0d2e3bad1e1bed1e2bfd1e2bccfe2bed0e0c0d1e3bed1e4bc *cfe3bccde1b7cddfbbcfe0bbd0e2bccfdebccedfbacee1b6cbe2bbccdfb9cbdeb6c9dbb5c9dbb0 *c5d8aec3d7aec1d6adbfd4a9bed8abc1d7a8c1d6a6c1d4a8bfd3abc2d3a8bed5aec1d4aac1d6b0 *c1d8aec3d5aec3d1b2c2d6b1c5d6b1c4d7b1c4d7b7c6d8b8c7d8bbc7d8b8c9dabcc9dbbbcadbc0 *ccdbbcc9dabcc9dcbfcbdbc0ccdcc1ccdcc1ccdbbdcad6736f721d1b1e1f1f2726302e2d353323 *2b2b242a33534132a6a196aba392aaa196a9a49b544032251f201d13171e19191912141d191a14 *181b23191c2e2d222d3931362d2a2113171610161e18151f1c1c17131311100c121014140b1014 *0d11120b0e150c0f100908180a090c05050b0b0b05080c100e1a130e191f161a1e1d263d3d4235 *29261a1511110f120b0a0e070c0a0f11120c11160b07060c090518130f120a0613141312121710 *12120c13140c08110d0b0b141211201718120a0b1a161216130c04090d06090b06020609030400 *00030100000100030d0e101111131b1b1912171819140e1f251e20140c42371d493c2d2d211d2f *231e372f29221d1c0b0309181b1d110e0d271d1435352a3e3428272e2a1618163d373c685b4bae *aaa0acb0aab0b4afb0b6b3a6aeb6a5b7caa3b6cfa7b6cea7b9caa8b8c9a8bbcfa8b7cbabbdcfa7 *b4cb9bb1cc99adc997a9c595a9c495a9c094a9c499aac392a8c395a9c48da9c292a9c291aac292 *aac09aacbf90a8c092a4bf93a8be91a4c08ca6c294a7c596abc59baabe99abc299a8c19aaac69c *aac09babc897aac397acc596aabf9cafc598abc39dacc391aac296aac296a8be9ba9c198aac194 *aac199aac394aabe93a9c18aa8c38da7c591a4be91a8c193a4c195a9c192abc591abc391a6bf97 *a7bd95a7be90a5bd89a8c395abc497abc29bacc499abc59aabc396aac19cabc89badc19aadc59d *abc19eafc5a1b0c6a1b1c79facc39dabc49fadc8a4b0c89fb0c9a3b3c9a2b5c9a7b5caa0acc281 *839a626f843f4e5d5f6475505357738599535b527c7071a2adbba4b1c2aaafc1b1bdd1b4c1d3b8 *c3d4b7c5d6bac5d4b9c4d2bbc4d4bec6d8bac6d7c0c6d6c1cad8c3ccdcc5cddbcbcfdccad0ddcc *d4dfcbd2e0c9d1e1c3cdddb6bcc78a7d859b9da2b4c1cea7b1c0a4b1c67184a71e1a2320142c23 *251e0d131e01020900030a05000606091100000600000000000000000400000800000100000000 *000000000002040200000000000000000000000101000100000400000200000100000100000500 *0006060813110d1f08080a183736b6c0c3bec8ca3f5b7f32363d252d2b25352d0b0d0d0a100e1a *21141c260f08190c2b2e1738482a1d262320312e62686ca6b7c9a9beccacc1ceb0c2d0a8bacdab *bacaa6b8caa3b7c3a2b2c390a0ab697f742d31260d10101f201d201d26374f5c0f121300000000 *000100000000000000000000000000000000000000000000000000000200000000010000000000 *00000000000104020206060007020308070808040e0802120500211507171b0c0c0e061d150a34 *312b48503122210c2e22081d170b140d050f0903100c0700000000000000000000000008010002 *00000003000005020000000001080003080108050410090a17153447363e4631635a398295a8ad *bdceb1c1d3b6c4d1b4c6d5b7c4d6a1b6cc89a9c29cafc69bb1c2aabbc694a6ab939c9da9b3c1b6 *c6d3b2bcd1a4adc49c9cada5aaada6aebdb6c6d3b6c6d3b1c3cea0afbe7b969a8999a97985784f *534b17221f23241d2025102e33274a453d4240312f3d3f272d2b252e221d1a13251e143e341950 *4829554c3d484b434a5a683c454d4e584e6d7d86879398aebac9b8c6d4bdcbd8bbccdcbbccddb9 *ccd9bccedebdcfe1bfcedebccddebdcddcbccfdfbdcdddbecedfbccfe0becce0bbcddebacee1c0 *cee0c0cee1bdd1e1bacde0b9cbe1bdcee0bcceddbecfdebfcfddc1d1e0becfe0bfcfe0bccee0bc *cedebccfdfbfcfdfbcd1dfbed2e1becfdfbccedebdcfdfbfcee0bccfe1bdcfe0bfd0e1bdd1e1bc *cfe2b9cfe2bdcee2bed0e1bbccdebdcedfbbcfe2bacedebccee0bbcee1bacedfbdcedfbdcedeb8 *cee0bccedebdceddc3d0e0bfcedfbed0e0c0cee0c1d1e0c0d0dfc2d1dfc3d1e2c3d2e1c2d3e2c4 *d2e2c4d2e0c4d1e1c2d2e1c2d1e1c4d2dfc2d2e0c3d2e0c3d1e0c5d2e0c5d1e0c4d1dcbcd0ddba *cedbb9cbdab9cddcbbcedcb8cde0bdcdddbbceddb8cbd8a9c1c8aebfc9b7c9d7b3c7d7a4b6c796 *aab896a2a896a7af879ba798999faab9c9a4bbccb7cadabbcedfc2d1dfbccedcc0d1dfbecfdebd *cfdebfd0dfc0d0e0bfcfdf9eabb4403c323a392e3233272a291b23211d2c2a20261d1929271a23 *27222a271c332d27272820373124998667b1a291bdc6ceb9d0e0bdcfe0c0d1dfbdd1dfbcd0e2bb *cfe0bfd2e1bacfe0bcd2e2bdd1e2bcd1e0b8cee0bdcfe0b6cedfbcd0dfb9cee3c0d1e2bbd1e2be *d2e4bdd1e0bad1dfbed0dfbcd0dfbacfdfbcd0e0bcd1e2bad2e3bcd1e3bad0e0b9cfe0bbd0e0bc *d1e0bdd0e0bacfe1bdcde0bbcee1bccfe1bcd0e2bbd0dfbccee0b6ccdcb6cbddb7caddb9cadeb4 *c9ddb4c6dbadc4d8afc6daafc3d8aac1d3acc1d5adc3d8aec1d9acc2d7adc3d4acc3d4b5c5d6ad *c2d6aec3d6afc1d6b6c6d6b3c5d8b3c4d9b2c6d5b2c5d5b5c7d8b6c6d6bac7d9b6c9dabccbddbc *cbdbbdcbdbbbcddbbfcbd9c1ccdcc2cdddc4ceddc6cedcc1cad7655c641c1d19111d191b24241f *2b301816181c19173e3a28a6a494aeb0aaaaa8a3a29d8e4f403a241c1e3d2c2892784e89654858 *413429201f282c2d2d362724232032292d4a2a246a3c1e5f2f1a2f292515181a10141218101119 *100f17110f4838247446216d3d1e2b271e0f0b09080d0a080d0a0e0d0f2218126349305d342c3f *1b14201c1c090c1511120b211e121910081d1c1631231b22121524161214101414120a0d0f040b *080a17110c15080932241858402f433924130a0d160d090b16131416160d0605090708221f1627 *1d1b0000000000000105020509050c0b08100910110d15060b1211130e100e0813100a11151213 *181b20171d281e1c1d1c140c0a0c191b1811180e1f30252e39312b36242617171d171222211d68 *6042aeb3b6a49a80a59e84aeaba6a8a7abaebacca3b5cba5b7cba9baceaab9cbabbdd0aabdd1a9 *bcd0adbbcd9eb4cb96abc298aec791a8c497abc195adc794abc18fabbd95a9c690abc48daac290 *aac28ca8bf89a7c08ba8bd8ca6bd94aac18da7c18fa7bf93abbf90a9c294a9c091aac198aec390 *aac293aac199aec398aac192aac198acc393adc490acc692abc593aac492aabd95a9c097aac28f *a7c18ca5bd8fa5be92aac092aac193a8c192aac092a7c68fa6bd8aa7c28ca8bd95a8c096aac28d *aac394aac297a8bd95a6c099acbe9aacc09aaac19ba9c19baabd99acc39cafc19bacc29aacc29c *adc59fafc59bafc59cb1c7a0b3caa6b1c79cb0c2a4b2c3a3b4c6a3b3c9a6b1c9a4b6cba9b6cba9 *b4caa4b1c78576997f6b648491986d66688d958e8c8c9796989fa7bbc9b1bdccb0bbceb4bfcdb4 *c3d3b6c2d2b6c3d4b5c5d6b7c6d7bcc7d8bfc7d5c0c9d4c0c9d2c1cbd8c6ceddc5cddbc7cddec9 *ceddcad2ddcad2ddc9d2ddc7d1dcb9c2d4b0b6c4bac4ceaeb3c39ea2aa35365846476734222539 *3c322635393a312c0c060901000306080514233400000a00000000000000000009000000000000 *000300000000000000000500000000000000000000000000000400000400000000000000000007 *02011009087f6f36878f95272a311e3d38b5c1c4bdc8ca5f605a3d4a78212f361316141f221c25 *2c22334b4a223e350d0e11272a1e36371e18181250442b8c97a9acbdcfb1bed2aebdd0b1c2d6ab *bfd4abbdceaabcceacb9cba4b6ca9fb2c989a0b2646c723532354a54624e5d5a3b424411060c00 *000003000200000000000000000000000103000100000000000000000000000000000000000100 *0002000002060107040000070000030000040402000000010003100b0d1c131217140c1a0e0823 *2422303027261e1e1b140a3b4246293e2c1108090b06061b08080300000100000402000b0d0d15 *0e0c0700020504060d0f0a030104000001030507090e140e1c16121b1d3c51597e9fb7aab8c6b1 *bbc9b2c3d3b3c4d5b2c3d3b8c6dabac6d59da9b574848e78828e95a6bd869db17f96ab8891a091 *99a5adb6c9b5bed2bec3cfbdc3cebec8d8bfc9d8bdc9dabdc7d8bbc6d1adbac785826b9caab15e *6575414c53342d20252b2326241f2a292573909e343233352920342d1c2d201c261d152f231a4f *56594c4b4a5f5f5c6b767a5c504c625048775c4c9a8d7cacb2c5b7c6dbbbcadbbdcbdebfccdcbd *ccdbbdcbdbbdcfdeb8cbdbbbccddbbcedebbcbdec0cddfc1ceddc4cde0c2cee0c3d0dfc1cedec0 *d1e3c3d0e3c3d0e5c1d1e3bbcbdebeccddbccddebccddebdcedfbcd0e1becfe0c0cde0c0cee1be *cfe1becfe1bbcfe1bccfe0bacfdfbbcee0becfe1bdcde0bbcddcbecdddbfcedfbdcedebed0e0bc *cfe0bdcfe1baccdfc1cee0bdcedfbdcfdfbbcee2bdceddbbcce0bbcdddbdcedfbdcee0bdcee2ba *cedfc0d0e1bfd0e0bacde0c3d2e2c0d1e3bfd0e2c1d1e2c4d1dec2d2e0c3d2e0c1d1e1c0d1e0c3 *d0dfc1d1e0c3d1e0c4d1e1c2d3e1c4d1e2c7d3e2c5d1e0c7d3e0c5d3e1c6d3e2c5d2e3c4d3e2c3 *d2e1c2d1dec0ceddc2cfdec3d1dec2d1e2c2cee0bdcee0bdcddebccedbbdccdabaccdbb7c9dab8 *c9d6aab8c9a8b2c7aeb9cbabbacab6c9d8bbc8d6b9c8d9baccddbccddec2cee1bfcedfbed1e2c0 *d1e2c0d0dfc0d0ddc1d0dfbfcddca0a9b241363039312f352d262023222d2c222422222e1d1f25 *1f1e221e1c221f20241f212b2120392b229a8b74b1b1aca8b3c2bacedebbcee0bdcfdfbccee2bd *d1e2bdd1e2bed1e0bdcee1bbcee1bcd1e1bcd0e2c0d0e0bcd0e2bdd1e2bbcedebbd1e2bacee2bb *d1e2bbcee0bccee1bdd1e0bacee0b9cfdfbad1e3bccfe2becee1bed0e1bccfe1bccee0becfe1bf *cfe1c1d2e2bccfe2bcd0e1becedebfcee2bed0e2becfe2bdcfe1bacfe2bfd0e3c2d0e0c1cfe2bb *cadeb8c9ddb6cadbb4c9dcb9c8ddb7c6dcb0c7dbb2c6d8b2c1d8b4c3dab3c4d9b2c6d6b3c6dab4 *c2d8b1c4d8adc3d8b3c4d6b6c6d8b8c5d7b7c9d9b8c6dcb5c6d9b7c9dcbacadbb7cadcbecbdbc1 *c9dbc0cbddc1ccddc1ccdac3cedec4cddfc7d0dec6d2dec8cfdfc2cad74c4e5b14161809070d0d *0c101514161e1e1f101e1d2b271f7d8186828e90797a8283847b58413d2a202057433bb8c1c7bd *c5cc7c7882291f1e27211c2a282a1f2a243327278b7669c5c6cec0c2cc4d4247111315110b1012 *0f131513151d191b797067b7c1cab4bbc6483d3f120f140d08090c0a0c090b0f211820857e78ba *bec9b7beca423c42100d141b1518373e34241b1f18191d5d503284654955484a2c231c17131311 *0a0d10080e110a12180d176c6760a6b1b895a4b12623251b0d15171118150c14150c161d130e71 *6d525b6a7d0000050000000001040906080909090b060c0b0a0b07040105000101000301000404 *00000000001e1014433c34302b20150f0d1e1e171c17151c1b142d26271e17172c1a1236292946 *3a2f645544aaaba9aaa6a1aeaca2acaba9aaabacacb9cca9b7ccaab9ceacb7cea8b7cbadbbceaa *bbd1a4bbd1a7bbd1a4b4cc9fb0c69eaac49aafc99babc397abc699a9c692a9c496a9c698abc595 *aac296aabf9ca9c095a8c091afc698abc090a9be97aabf98aac38ca6bf97aec693a8c092a8c192 *a9c195aabd95a9c099aac697acc59aaabc99a7c097a8bb94acc591a7be92a5bf91a9bf96acc192 *a7be9aa9c187a6c596aac68ba5c397a7c28ea8c18ca4c18da6c39caac695aac194aac396a7be90 *a7c397a5bf95a6c29ca8c198aac199aac39caec69aadc89dadc79cacc296a9bfa0aabf9dabc29c *aec69eadc5a9b2c7a5aec7a7b2c5a6b1c9a7b2cba4b6cba6b4c9abb6c9acb6c9abb8c9aebbcbaf *bccdadb7c9b1baccaeb8ccafb5c6abb5c1adb8c9aeb8c8b3b7c6b5bdcdb8beceb4bfd1b6c0d4b3 *c1d7bac4d3b8c2d5b9c0d5bbc1d4bcc3d6bdc4d7bec7d6bfc6d8c3c9dac5cadac6ceddc8cfdeca *ceddc7cfddcad1dfcad1dfc9cfdfc8cfddc2cad9afb9c78daac490a7b05d7fa64a484c6a727986 *888570788a5454444b6a8942443c3636361a141b06092905000900000303000403020804090a00 *000500000000000000000000000000000000000002000207000003000100000000000100000202 *0004181a1c5d4f4e9c9f90aab9c7646777495755b9c2c5bfc8cba5b6c26e6148403e2c302c231e *1f1a393823485033575e39363f294b553f5b674d676a489daabbacbdceb3c1ceaabdcdaec1d1b0 *c1d5acbfd0aec2d3a9bed0aabbd2a4b6cca3b5c7a0b1c48497a26d797a596978292d441c232b0e *0d1104000301000000000000000000000000000000000000000104000305000102000003030100 *00000000000103050200030300020506050a0b060f080206030602010306030711130a100d0b0e *0e0c0b0f081b1810302c1c211d0d272226200d061f1618313d362c25241d1408150d0603000008 *070402020000000000000100000600040905130e101915090b0c09180f1a2717303e3270715ca9 *bcccb5c1d1b5c4d2bac5d2b6c6d7b9c7d7bac6d5b6c3cda3a4aa8c8281918a847f69466f583e73 *69608b8073aeafb3bec7d4c0c9dbc2ccdcc1cddbc0ccd8bec8d8b8c7dabbc7d8b4becb8292a265 *697e7b8a9c525e54505449473f31443d273e38272220162d2217585b475b5e54302e1e39322446 *4f4a373524403627564c476e63567b6758989798b5c5d0b8c9d7bbc9dbb6c7dbb5c8dcb7c8dbb6 *c8dbb4c7dcb4c9dbb6cadbb6c6d9b7c7dabac9dbbaccddbccbddc0d1e1c4cfe2c3d1e0c5d1e0c1 *cde0becfe1c1cfdec2cce0bccee2bccee0bbcbe0bbcddfbbcde0bdccdfbbcee0c4d1e2bfd1dfbc *d0e1bfd0e3bfcee1bed0e1bccfdfbbcddeb8cee0bccedfbbcddfb9cddfbacde0bbcee1bacfe2bd *cedfbed1e0bacfe0bcd0e2c0cee1bdcedfc0cde1bdcfe2bacedeb9cce1bbcedebbcddcbed1e1bd *d2e1b8cee1bbcee2bbcedebbd0e0becfe0bdcedebdcee0bccee0bed1e2bdcfe1c0d1e1c1d3e1c1 *d0e1c2d1e0c2d1e2c1cfdfc0d1e1bcd0e0c0d0e0c3d1e3c5d4e1c6d2dfc5d3e2c5d4e2c6d2e1c6 *d2e0c4d0dfc1d1e2c3d3e3c3d3e2c5d1e1c3d1dec6d0e0c1d1e1bfcfe0bbcee0baccdfbbcde0b8 *ccdcbacedeb7ccdcbaccdcb3caddb4ccdcb9cddebacedeb9d0e0bbcee1b9ccdebaccddbdceddbb *cddcbbcddfbbcedfbbcddfb9ccdeb7cddd9aacb53637322d292524241d352f2e4f4a43332a222a *2b2327281e31302f3e46482520202926253a2b23948279a099939f9ea5b8ccd9b8cedebdcedfbb *cedebbcee2bcd1e1bbd1e0bacee1bbcfe0bdd1e1b9cee0b9d1e0bbd1e2bacee0b8cfe0bbd1e2b9 *d0e1bcd3e2bed0e2bdcfe2b9cbe0bacfe1b9cee1bbcfe1b9cee1bbcfe3bdd0e2bccfe1bbcfdfb8 *cee2bad1e3bbd0e3bacfe2bcd1e0bad1e1bad0e2bccfe0bad1e2bdcfe0bcd1e2bdd1e2bbd0e0be *cee1bdcce1b6cbddb6cbddb6cbddb6c9ddb9cde1bbcfdebacddeb7c9ddb9cbdbb9caddb6c7d9b1 *c6d8b1c6d8b1c6d9b3c6d8b3c3d7b4c7dbbdcadbbbc8d7bac9d8b6c6dab7c9dcb7cbdcbdcddebe *cddfc2ccddc3cedec6d0ddc3d0dcc3cedec4d1dec7d1e0c6d1dfc7d3dfb5bbc72e1f1d110a0703 *0506070306050307140c06080609220c0c4e2b1e60391a6f402081532a85785f29211d644639bd *c7d3bfcbd38a8b9a352c242826212b2829231b153a392f998c85cad0d8c9cfdc5c484516161512 *100f0c0b0e150f10211613897f77b7c6d4b5c4d35349491e170f120908130a09110608241e1f98 *9391c0c8d3bec8d55a4c4b1d151114151421191a110d0b261a1e8d8d8fb4c1cca2a3aa392d2a14 *0d0e160f09110b0a15121a1e120f818188a7b5c89db1c42d2b2c0b100c0c0913130d0c0c0b0912 *0c0e77797d3026320400000000000000000000000000020000020000000000000100010601001b *06030800000000000000000000000000030301041414142a24151a110a16110c1b1614251f1622 *1a162e271e56473fa6a5a3a59a89abadaeada79aa8adafa8b6caa6b6cba6b8ceabbaccaab8cdae *bed0a8b9cea8bbcda2b5cb98aec597afc699aec59fb1cd9cadc09aadc595adc397abc092a9c194 *aac295adc594abc698b0c69aafc597a9c195aabe93a9be97abc197aac394aabf96aac399acc695 *a9bf91a9c68fa8c199a7bf91a9c097a8bd8ba8c095abc492aec492aac196aac391a7bd98aac092 *aac191a6bd8fa5c197acc095aac392acc196a9bd97aabc8da5c08fa5bc97a9c190a8bd96aabe96 *adc396adc399abc296a6bc98aabd9aaec398abc39aadc79fafc99aacc398acc49dacc29fadc3a2 *b0c7a0afc9a6b2c8a9b5c6a5b7c6a4b7c7a9b9ccaab8cda9b3c9a9b9ccb1bccfb0bccdb1bcd2b0 *bfceaebdcdb2bdccb2baceb3c3d0b1bed1b4bdceb5c0d1b4bfceb4c3d4b7c3d3bbc0cebcc3d3b9 *c3d3b3c1d1bbc7d7b7c4d5b8c4d5bbc7d6b9c7d6bac4d4bcc6d6c0c7dbc0c9dac2cbdbc5ceddc3 *cfdbc5d0dcc6cedec7cfdcc6ceddc2cbdcbac4d5adb1c6adbaca90a0b55c678221212b1e171f3c *1c1f464e572b2e404e69691d23391c242807081802000300000700000100000000000000000000 *00000300000100030100000200000000020000010000000000000c121103050803060802000101 *00011e231d4546459499989cb1c27694b63d4a6568685fbac2c6bfc9ccb9c3d0b0bec8afbbc4a1 *ada78887729ca9aea4b7c9a7b6c69eadb2a7b7c5acb8cab0bdceacc2d2aabdceabbfd4a9bdceac *bed4b6c1d5b3c2d6aec1d0acbdd2a9bbd0a5b7cea4b6cca1b6d097aac295acc48399b257545239 *3730281f170e0b0b0d04070e090a0f09030502000102030606030000020805060903060c06050b *07060403050003050704070403030c040a0c0c0e1e1416090404060504070d0c0c0c080c040915 *0f07170b02150e0c24231323271f2f4249373b3018150e110f0f444851708fa74d606c2b332608 *0a07000205000406000209060105050607030a0707150c1f2c1a2a422c30312b394a3c323e2f83 *8c91b1becdb5c0d1b1c0d1b4c3d3b5c5d7bbc8d9bac9dcb9c4d5bbc3d7b7c5d6bbc6d3bdc6d1b5 *beccb1b3b1acaeadbac2d2c1cadcbecbd8c1c7d8bdc9d8bdc8dbbcc9dbbac8dbbac7d8b7c3d1a9 *b1b6a2aebb99abb87b7e875b60634d474a979fa8888c935a4c3546442c5147427d89976c7c7b4c *462f423c285849347160418a7e6ca8b3c5b0c1d0b2c4d7b5c8dbb3c7d8adc7dbb2c7dbb0c4d8b1 *c4d9adc3d7aec2d8b1c3d8aec4d8aec5dbb4c6ddbbcadeb9c9ddbccadcb9cce0bbcddfbfcee0be *cee2bfcfe0bbcde2bfcfe0becde1bbcbdcbbccdfbbccddb9cadebacce2bacce1bccfe1bdd0e2bd *cee0bbcce2b9cddfbacde0bbcee1bbcfe2b9cfe2bccfe1bbcedfbccddfbccdddbbcee0bacee2bb *cee3bacfe2bacee0bdcfe0beccdfbbcbdfbbcee0bdcee0bdcfe0b9cedfbacde0bacee1baccdeba *cde0b8ccdfbacfe0b6cce0bdcee0bbcee0b9cfe2bbcee1bdcee0bdcee2bdcee0bed0e1bad0e1bd *d0e2bdcee1bdd1e1c2d1e1bfd0e0bfcee0bccfdfbdcee0becedfc3d0e1bfcfe1c3d2e2c3d1e1c1 *d1e1c2d1e1bfcfe0c0cfe0bed1dfbdd0e2c2d0e2c1d1e0c3d0e0c1d1e2c0d0dfbdd0e0b9cedeba *cbddb5cce0b7cee0b8cee0baccdeb7c9deb5caddb6ccdeb7cbdbb5ccddb4cbdfb3ccdeb7ccdfbc *cedebacee0bacfe1bccde0bacddfbacde0b8ccdc7d8da028262b2c231e332b287e7873abbec550 *4d462225272a26225a44449ba0a644403c2521243630278e85789286729a9ea2b6cddeb8cddebd *cddfbcccdfb9cee2b8d0e0b3cee2b7cde0b8cce0bbcee1bdcfe1bbcee0bbcde2b7cee0b8cee2bb *cee2bbcfddb4cee2b8cee1b9cee0bbcee0bdcfe1b9d0e2b9cee1bccfe1bacde2bbcde2bed0dfbc *cfe0bdcfe2becfe1b8cee1b7cee3bbcee1b9cfe3bcd0e2b9cfe1bccee2becee2bacee1bbd1e2b9 *cee1becee1bbcee0b6cce0b7cee0bacde0bccfe2bcd0e0bdcee1bdcfe1bdcee2b9cee2b6c7dbb7 *c6dbb2c7dbb1c4d9b0c5d8b2c6d9b1c3daaec5d8b8c9dbb7c8dabacaddb5c7ddb9cadbb8c8dcbf *cbdcbfcdddbfcddec2cdddc3cedec3d0e0c8d1e0cbd4dfc8d2e0cad1ddc9d2dfbcc5d1302b3316 *101813121d1d2323191f151b28282a261a423f239c9986989789a6a39da7a08f9a8c79553b2690 *7d60bfc9d6c2ccdc9995a34e383249322a4c34265c3f2a615c49aea17eccd3ddc8cfdc8e6c6f5f *3a285034265235226b593e776046a39d97bdc7d5bbc6d57d6469472f24482d22452d1e442e1f4d *3123a9a19fc7cdd9c5ccda796d6e47322944363239372a463524553a27a1a29ebac5d5b2c0d25e *4d50422a1e3225203a281d2f2722462823979a96b1bbcba5b7c95245452b1b1d3c1e1e3e281e41 *2b1d3b241c95968c546284080a1403050f04040c080a0f0e110c0e0c0b0e0e0c0f0b065240331f *0f101a111a050917000000000000010000000000000000291b17281c1f1f13151d1916231d0e28 *22152f1f172d1f1d403a2c9d9791a7a5a7a9a4a4abaaa6a4ababa9b8c8a8b7cea3b5cba4b3cba4 *b8d1a2b6cea4b8cea5b8cba3b5cb9eb2cb99afc999aec698acc799afc895aac697abc697abc398 *aec496aac497acc59badc893acc497acc796acc594abc399b0c699abc79badc696a7c18fa8c095 *a9c695adca8daac190a8c496a8c09eaac598a9c19aa9bd97a8be93abc48da7c392aac59caac198 *a8bb94a9c18ea7be8ca9bb91aabc97a6bf8ea6c695a2bf91a3be96aac696aac391a8c193a9be92 *a9c195a8c599adc790aabf9caac399a8c295a8c19bacc29babc39baac397aac699adc89badc69f *aec59daec9a1aec29db0c4a5b4c9a6b7cda8b6ccacbcceafbbd1afbdcfafbdceafbdcfb1bbcdb5 *bdd3b2bed3b7bfd3b4c2d6b2c0d4b7c0ceb7bfd4b8c3d4b7c0d1bbc1d1b8c0d6b9c1d4b9c3d7bb *c5d6bdc7d1b9c5d8b8c5d7bac1d5b9c2d2b9c6d7bbc6d9bcc7dabbc6d6bdc8d7bfc8dabecadcc0 *cadbbfc9dcc0cbdac1ccddbfccdabfc9d9bbc7d8acb8d185879c9baab88b9baf6360602f31521c *0d1d26212c2215211d162103050b03000900000e00000600000a00000500000000000000000000 *000000000000000000000002000202000200000000000100000000000500000200000500000705 *00050403082324233246621b202d2d23302317173a353d607877b8c2c5bfc8cdb6c6d3b3c3d3b1 *c1d1b3c3d3adbeceb1bdcfadbdcfacb9ceacbdceb1bfd4b0bdcfb1bdccaebfd3b2c1cfaebeceab *bdceaebbd1aebdd1aec0cfabbed1a7b8cda6b6c9a4b6cea3b6cb9eb3cba0b4ca9db2c89eb2c696 *aabb8996a16c7c8942382a3124213a3a3d3531181911060e0b07140a0b0c02012110040b0a0512 *0f061a160d1c0f0a180a031a0f05160a040f0402110a041c170d160f0c0e0905100b0c10080921 *1814251d12231d111e200f1c201d222d3b3b392f372316524933534d464d596959677b3c3b2e3f *484b09060601000204030a0b08090a14120a08080c1f1f1e322b2d2b22766f5aa7b1b97666448d *8768b0bac9b7c5d3b9c6d3bac3d3b9c5d2bbc7d6bbc7d6bbc9d8b9c7dbbac5d7c1c9d6c5cbd8c1 *cadbc2c7d2bfc7d4c0c8d8bdc8d8bfcbddc1cdddbdc6d8bbc6d7bdc9d9b7c8d9bbc9d8bdc8dabc *c6dab1c1d1aabbcca1b2c299a4af838b868d9b9d97a9bdabbcc9abb2bb9fa19c94877b8e84828f *8775948d7aa1a59ea3a2a7abb3c4adbed1b5c3d6b6c4d3b3c5d8b0c4d8b2c6d6b6c7dbafc5d6b1 *c3d8b2c5d9b6c6dab0c3d7afc5d6b3c4d6b0c1d8b6c9dbb6c7ddbbc9dec0cedebfceddbdcedbbf *cedebbccdfbccadeb7c8dcb7c7ddb9cae0bcccdebecddebccedcbecde0becedfbccee1bdcee0bc *cbe0bccee1bccee1bccedebdcdddbdcedfbacee1bbcfdfb8cce0bbcbe0b9cee0b5cddfb5cddfba *cde0bdcee1b7cde0b7ccdcbccedebdd0e0bdd1e2bacfe0bbcfe0bdcedfbccbdebbcdddbbcee0b7 *cce0b8cee2b9cee0bbcfdfb6cbdfbacadfbacce0b8ccdebccde0b7cfe1bbcde2bacee0bccfe0bb *cedfbcd0dfbbcedfbacfe0bccfe1becfe0bfd1e1bcd1e1c0d1e1c0cee1c0cfe0c0d1e1c0d0e0c0 *d0e0bdcfe0bdd0e1c2d1e0c1d0dfbed1e2bdceddbdcfdebbcddebed0e0c1d0e2c3d1e0bdd1dfbd *ceddbbcedcb8cde0b8cddfb9cee0b6cbe0bacedfb6ccdfbbcdddbccddebbcedeb6caddb9cdddb9 *ccddbacedebbcedebbd0e0bacfdfbccddcbacddfb9ccdc9baab4292e302927282f2b278e989eb5 *c6d3725e564a2f2545322b989b99b0c0cc5754554727215234259a8d86bbc1c9b7c9d5b9cddeba *cfe0b9cfe0b9cfe0bccfe2bdd1dfbed0e2bacce1bccee0bbd0e0bacee0b8cfe1b7cee0bbd0e1bc *cfdfbdcee0bdd1dfb8d0dfbad0e2b9d0dfbacee0bccfdfb8cee0bcd0e1bacee1bbd0e2bacde1b9 *cee0b8cedfb8cee2bcd0e1bccfdfbacee1bccfe2bacedfbdd2e1bbcfe1bbcfe1bbcee0bed1e1c1 *d1e2c2d0e0bccedebccfe2becfe0bbcfe2c0cee0bccedfc0d1e1bfd1e2c1d2e0bbd0e2becee1bd *ccdebdcbdbb6c7dbb6c6d8b0c4d8b3c6d8b0c4d5b4c3d8b3c6dab8c7d7b7c6dbbac9dcbeccddc1 *ccddc3ceddbdcdddc2ccddc3cedec2cdddc1cfdfc7d1e0c8d2e1cbd5e0ced4e0cdd6e1c2cad641 *34331e1f2014191a1d19101e1818272320351e1d42382c9a9882908265a39384a8a08cb6b2aebd *c1c5c5c7cbc7ccd9c7cfdac6cbd3c3c7ccc2c4c7c2c4c6c3c8c8c7c8c3cdd2d5cdd6e0ccd6ddc7 *ccd2c3c7cbc3c7c7c2c6c8c0c3c6c0c3c8c1c7d0c3cddac1cbd9bcc3cdbfc2c6c1c6c6c3c5c6c5 *c7c7c7c8c8caced6ccd3dec8d3ddc3c9d2b4acadab9889a47759c0c0c3bcc3c9c2c7d0bfc9d7b8 *c1d2958496b6bbbfbcc1c7b8bbc2b4b9c1b3bac3b6c2cbbdc9d5b6c3d0abb3bc9d7249bcb6adb9 *b9b5b2b5b5adb1acadb9c65858760c09090401020a09050f0a07160c08180a0d130a0e16080431 *1305310e02390e063812032e0d08310d0d3f16113d19153c14085e51422b1b15130f08151e1727 *282d221e2428241d271e1a4230219e9996a9aaaca495859f92947a75729eacc2aab6cdaab6caab *bacea7b9cba5b8cfa3b9cc9fb4cc9bb0c99cb0c79fb2c79db0c79baec699acc498adc59cafc79b *abc69cb0c99baec896adc8a1b0c29bb2c5a0afc79dabc59caec59cacc4a0acc29ba9c594a8c296 *adc395abc698adc598adc79dacc39faac09baec597adc790aac396abc494aabd96aac198abc38d *abc69cabc199a9c396aac399aac192abc198a8c398a8bf97a6bb99aac498a5bd99a7c196a9c397 *abc197a7bd9dabc497abc09cadbfa1adc2a1aec498acc592aac599adc69eaec59cacc6a7b1c2a0 *afc4a2b0c7a3b2cba3b3c8a9b6c9abb6c9adb6c8acb8ccb1bccbb1bed0b4bdd1b1bdd0b2bfd5b8 *c3cfb6bfd3bac0d3b8c3d0b8c3d3b8c3d1bbc4d5bcc6d9bbc1cfbcc5d4bcc2d1bdc6d9bcc6d3c1 *c7d8bcc6d6bec6d7bac6d6b9c7d6b9c5d4bac3d2b6c5d4bbc6d2bbc4d8bac6d6b7c6d8bfc7d9bd *c7d7bbc8d5b8c6d7bac5d8bbc1d4bcc6d6bac4d6b8c5d9aebbc9a9b6c48792a9929eaa8194aa6e *6e776962587f887f484447433e421f1a150d06090400030100010602001c170e00000007000006 *00020b06020b0003000000171c0a00000100000000000000000000000000000101000004000003 *010004040807040803050e0200040b0606736133b9baba8e8b9a5e7075b9c2c5c0c8ccbbc7d7b3 *bfcfaebed2adbfd4adbed3afc3d5adbed5acbed1adbfd5b1bed3b2bdd3b1bed4aec0d6adbfd3aa *c0d3aac1d3aabdd1a9bad1a4bbcfa2b5cc99b1cb8eb0cc95aec697adc691a7c480a2c289a6c491 *a7c689a1c180a3bd7490aa6b87945a545a60586058657427292c1a15121d171717141d2b2e2e36 *30293639352a2a271e180e1d1d1215140e18160b11150c2e2a1e1f140f1c0a0b1e0a061f170e27 *160b1e0e0e2b221a28201e23252722201d1e17172a1d24585568798e98475d5d3749482340631c *23240a0a1500000700080b09140e08111303080b0e1f132634283733228d8a81aebacab8c1d2b1 *bdcab3bed0bac6d5bcc7d6b8c8d7b9c7d6b9c6d4b8c6d8bdc7d9bbc9dcbbc6dabec9dcc2cbd9c0 *ccdabcc8d8c1c8dcbdcadbbcc9dbbdc7d8bbc9dbbacaddbdc9dbbac9dbbbc9dbb8c7d9bdc8dbb7 *c5dabbc6d9b7bcc99fadb0979eb19db0c3948c938179837c66619b9fabb4c1cebbc7d6b6c4d0b6 *c4d1b2c4d3b2c2d4adc1d2b2c4d6b7c5d8b4c5d7b0c4d8b8c5d7bac7dbbac9dcbac6dcb6c7dbb1 *c5dbafc6d8b0c7dab1c6d8aec6ddb6c7dab4c5d8b2c7dbb1c9dbb0c6ddb7c9debacadcbdc9debb *cbdfbacbe0b7cadebac7ddb4c7dcb5cadcb7caddb8cbddbecee2c0cfe1bfd0e2bdcedfbccee0bb *cde2bdd0e3bccee1bccfe3b9cee0bacee1b9ccdebbcedfbacee0bacee0b8cce0b9cee1b7cce0b8 *cde1bacee1bdd0e2b5ccdeb7cce1baccdeb8cee0b8cde1bfd1e3b8cbe0b2cde1b9cee1b6cde0ba *cee0b7cde0b8cbe1bccde2bacce1b5cde1bacfe1bbcde1bacce0bbcde2b5cce0b8cee1bcd1e2bb *cfe0bccfe3bbcee0b7cce1bbcfe1b8cee1b8cee1baccdfbcd0e1bacfe3bccfe2bbcde0b6cce0b8 *cfe1bacedfb8cee1b7cddebbcee1bed0e2bacee2b7cfdebacee0bacedebdcee0bdcee0b8cbddba *cde0bdcfe1bbcee1bccddebacee0b6cee0b7cee1b8cce0bacee2bccee0b9cce1b6cddcbbd0dfba *cedebbcee0b8cee2b8cee1b9cde1bacee0bccee2bbcedebbcde0b4c6d08f8a74867a658a7c6fa8 *b3babac9d99fa5b3998f8f8d8787adbac4b8cad9989a96949297a7a7aabac7d4bbcddcb9cfe0bc *d1e1b9d1e3b8cee0b6cce2bccfe2bfd2e2bbcfe2b8cee2bbcee0bad0e0b9cee0b8cfe2bacde2bd *d1e2bacee2b9cee2bbcfe2b9d1e2b9d0e2b7d1e0bbcee1bacedfbad0e3b9cfe2bcd1e2b8d1e4ba *d0e3b9cfe1bacfe1b9d0e2b9d0e3bcd0e5bdcfe4bcd0e2b9cfe1bcd1e1b9cee1bccfe2bdcde2bd *d0e2bbcfe3bed1e4bbcfe3bdd3e4bdd1e3bad0e3bdcfe2bdd0e4b6cee3c1cee3c0d2e5bbd0e3bb *d1e2bbd0e3bfcedfbdcbdeb8c7dcb5c6dab1c6d9b3c5d8b6c7dbb3c7dbb5c8dab6c8ddbbcbddbd *cbdfbfcce0c1cfe1c2d1e1c5cfe0c6d0e0c3cfe1c3cee0c6d0e0c9d5e2c7d5e2ccd5e0cbd5e2c1 *cdd643383916161e0f11191519191a181c1a211c3b34274b422b999177988e7baaa197aa9980be *bbc6c5cedbc9cfdecbd1e0cad5e0c9d6e3cbd2e1ccd2dfcad4e2ccd6e1ced8e2cfdae2ced7e3cb *d5e0c7d3e0c9d1e0c9d2e1cad2dfc6ceddc7cfdfc5d0dec2d1e0c2cedfc4ceddc5d0e0c9d2dfcc *d6e2ced8e1ced6e1cdd7e4cdd7e3cdd6e0ccd3dfc7d1dfc7cfddc9d0dac6cfdec7d1dfc3ceddc3 *cfdbc1ccdac1c4cec3ccdbc7ceddc6cdddc5cedbc2ccdbc3cbdcc2cad8c0cbdbbdc9dbc1c8d6ca *d2ddcad3ddc1c9d8bcc6d3b6c3d15e677a0a111505040a05030b0b0609130e0a1312101d17101d *1914827255a09174a292849e897aa69f95766c5ba7acb5aab1b29d9da64f41373628231e171325 *1f1d2a282323232226211e24241e403624a2a093b1a59faaa69da49891a4987aa7b6c1a4b8cca6 *b8cea4b7d0a7b9d1a4b9d1a4b3ca9fb4cb9cb2cb99b1c799b1cba1b2cb9ab1c79bb1caa1aec79f *b1c6a2b1c7a3b1c89fafc8a5b3c9a2b2c9a3b3c7a2b5c9a2b6c99ab4c9a0b3c8a0b1c79aafc99c *afc79eb3ca9ab2cb9bb1c694acc396aec29fadc39dadc49daac998aac598aac39baac695aec696 *b0c395acbe9cadc79aa9c59daec5a2b1c39eb0c49bacc39cadc49aabc59daec79bacbd9baac197 *aac79eadc69dacc198aac19daec19cadc69bb0c7a0afc7a0afc89cabc6a0afc79cafc9a0b2cba1 *b3caa3b5c9a6b6cba6b6cbabb5cbadb6cbaeb8ccafbdceafc1d0b1c1d1b3bed0b5c3d5b9c3d7bb *c3d6bac5d6b9c3d6bbc4d6bdc6d8bac6d7b5c5d4b9c4d6c0c8d9bfc8dac0c6d9c1c8dbbbc7d9be *c7d9c1c7d8bfc6d6bfc9dbbac5d8b6c4d9bac5d8bbc4d8b9c4d8b3c3d6b5c5d4b2c2d5b6c4d5b5 *c3d5b5c1d3b9c1cfb8c4d5b3bfd4b3bfd2bac5d3b5c4d7b7c1d3b0c1d49a9fb2756d6e4f5b7975 *8a99668ba05b79973f476c3d3842303246463b322837491d24200b0d0c151712100d0f0705061d *0f0c1c1e281a121103030c01050403080a020004010003060007010002080109170b092c393622 *201e28262607070f040f1d0a0916070108371c11a89265c6ccd28b85a153676ebac2c7c1c8cdb8 *c4d5b5c5d5aec3d7adc3d8b1c2d7afc1d6aabed3a6bdd3a4bed1a9bdd6aabcceaabed3aabdcea5 *b9d19fb7cd98aec78fabc691a8c58ba5c289a4c1819fc180a2bf89a5c0869dc188a2c0859fbb84 *9fb98aa3bc8ba1ba8aa6bf8aa4be90a6c18aa4bc87a0b96e80955041325441294f412a3f302762 *4754748392626d704247444d4b49383225150f111c16131f170a1d18112b241e1d0f121e0f0a27 *1610281516291d10291d132e231a26191733221c3d2f25564b4d504f5a2e2a27211e1d1615080a *1a26000108000007000003020505070c091325210a0a0d0c1615252725889aada2acbbb7c4d2b7 *c3d2b5c2d3b6c4d4b6c3d3b8c5d5b6c4d5b8c6d6bac5d6b9c6d4bbc6d6b6c7d8bdc9dbbcc9dbbd *cbddbac7dabac7d8bbc6dbbbc6d3bbc5d8b9c9dbbbc9dbb8c7dcb6c5d8bbc6d9bbc6d3bbc7d9b6 *c6d9b3c3d7b8c6d8afbed1a2a8b697a4b08888919297aa8b878fa0a6b69a9ca4b5c3d3bcc8d9bd *c8d9b7c7d8bac7d8b6c7d8b2c4d7b4c6d8b5c6dbb6c6dab3c6d9b7c5d8b7c5d9b7c6dab5c6dab7 *c7dbb5c7dbb4c6dbb3c3d8b1c7dbb5c4dabac7d9bbc9ddbbcad9b6c8ddb1c6d9b2c5dab4c7d9b8 *c9dab6c6d9b6c8dbb2c6dbb5c6dcb5c7dcb4c5d8b3c6d8b3c9dbb9c9dbbbccdfbdcedebdcee1bd *cde1b9cbe0bbcee0bbcde0b5ccdfb7cddfb8cedfbacde1b7cddfb9cce0bacbe1b9ccdfb4cbdfb6 *cadfb7cbdeb8cbddbacce3b7cee3bbcee2b5cce0b7cce0b6cbdeb7ccdfb6cbddb8cde0b8cee0b6 *cddfb5cee2b6cadcbacee0b9ccdfb7ccddbacbdebacce0bbcee1bbcde2b9cce0b8cee0b9cddebc *cee1bccee1bbccdfb8cddfb8cee0b8cfe1b8cde0b6cbe0b7cbe0b6ccdfbacfe0b8cce1b7cee1ba *cfe2b5cde0b8ccdfb7cde0b5cbdeb6ccdfb4cadcbaccdfb9cfe2bbcfe0b6cce2b5cce2bac9dfb8 *cbddb6cce0bacedeb7cee0b8cee3bbcfe1bacee0bbccdfb6cbdeb7ccddb9cee0bacedfbbceddb7 *cde1b9cee3bacbe0b9cce0bacedfb9ccdfb9cedeb9cdddbacde1bbcee0b9cddfb7c8d7b6c7d6b9 *c8d6b5c9d8b8ccdbbaccd9bdcddabacbddbacbddbaccdbb9cbdab4c9d8b6cbdebad1dfb7cedebe *cfe3bcd1e1bbcddebdcddeb4cddeb8cde0bdd0e0bccfe2bbcee2bbcee1b8d1e2bacee2bacee0bd *cfe2bdcfe2bcd0e2b9d0e2bbcee1c1d3e3bdcfe0b9cedebed0e2bccee1bacddfbacee1bdd0e1bb *d1e3bdd1e2b8cee1bbcee0bad0e2bdcfe1bbcfe1b7cee0bdcde0b9cfe0bed2e2bdd0e4bdcfe2bb *cee1bacee0bad0e0c0d2e3bdd1e2b7d1e2bed0e3bdd0e2bccfe0bccee3b9d0e0bbcee2bdd2e2bd *d0e2bdcee2bccee3becbdfbbcbddb8c7dbb4c7dcb0c7d5adc3d8b0c3d6b3c7d8b7c6d8bac7d7b8 *c6d8bfcaddbfcbddc3cfdec4d1e0c7d1e0c5d0dfc7d2e1c1cee2c5cfdfc6d2e2c8d3e0c7d2e2c9 *d1e1c0cad83d3b3f1216191311151611141e1a161e1d183b3e3d3530248f7f619c8f76b2a9a6ad *9c89bfc1c6c7cedccad1dfcbd3e0ccd7e1cdd6e0ced8e0ced6e3ccd8e4cdd6e5ced6e3d1dbe2ce *d6e3c9d2e0c6d1e0cad2e1c9d3e2c7d1e0c7d0e1c8d1e1c6cddfc5cfdfc2ceddc4d0e0c9d2e1ca *d2e2cdd5e3d0d8e3ccd5e2ccd7e2cfd7e3ccd5e3cbd6e1cbd5e2cbd4e2ccd3e2c7d3dfc9d3e2c9 *d2dfc6d2e2c6cfdfc6d0dec6d1dfc6d1e0c6cfe0c9d1dec4ceddc3d0e0c6d0ddc3cfdec7cfdbc8 *d1dfced6e2cdd7e1c8d3e0c3cddab8c3d5737a93120b1508030b0502090d0a101d1610232a231b *211e221b17847d6da4998cafa394b1aaa9a5a6b2756e70aeb8c8a9bbc98f9bb04040362c262a2b *25261f17161d150b1e160e25190f1a1c163f2c1d9a8b75b1b2b1aaabaea29d99968d80a0aabaa2 *b1c7a1b1c8a2b3cba4b5caa2b1c8a5b5cd9eb1c99ab2caa0b3cb9cb1c8a6b2cba6b6cba6b7cba4 *b5cca5b6c8a5b6cda5b1c9a0b3c9a4b4caa3b5caa4b5caa7b4caa7b5caa2b2cb9eb2c79fb2c9a7 *b2c7a3b5caa3b4c99db2c7a1b3c8a4b1c9a0b1cb9fabc29daec6a0b4cb9caec3a0aec39cb2c8a2 *aec99cadc69aabc39faac79babc79aaac6a0b5c89fb1c79db0c79aaac79caec79dacc79eb2c297 *acbf9babc195aac99eaec99eafc79baec89eafc8a0b1c99bacc6a1aec6a2b2c7a1b0c7a1aec9a3 *afcba7b8cba9b6cda9b9c9adb9cda8b6cdaab9cdadb8cbb2beceb5c1d2b6c3d6b7c2d6bbc1d0b9 *c4d3b8c3d6bbc6d6bfc8d7c1cadabec9d9bfc7d9bdc8d9bbc5d7bcc4d6bcc7d8bdc7d8c0c7d8bf *c7d6c0c8d9c2c9dbbdc6dac1c7d6bcc7d7bbc1d6bcc3d3bbc2d1b8c2d2b5bfd4b6c0d3b1bfd2b2 *bcd1b3bdd1b2bed3b5c1d4b2bed3b4bfd3b4bfd1b5bfd2b4bfd2b0bdd3b0c0d0b1bfd2b0bcccaa *b0c1a6afbb6b7074483c437356417060637472545b738222293a2623252c1e186a605382797a2b *24221b141a0c0e160a02050000030000070b0607141719090b1a00000401010300000402000211 *0a0a23150f1a12170400080302082d2522765d409fa4a5b7bcbec2cbd7b9c4cfa1b2babcc5cac0 *c9cdb1c3d1a7becfa4b9cea5bcd3a7b9cda3b8d198b0ca99b2ce9cb3ca95b1cb94b3cb95b2c991 *acc985a8c48dacc680a4c07da1bf81a2bd759ab8749fbc7da2ba85a0bd769fbb799cbb829cba83 *a2bf89a4c27f9fbc87a1bf89a2bc93aabf97abc28ba6c38ca7c18da5bc8ba0ae839db187a0ad8d *a3b690a8bd90a6bf92a4ae8699a46773873243482b3a2d3133282a3227211d182f322c1e2f2c1f *1d0f202518362818282112302a2040261b4e2d2481857799adb58d9899818e93473b2c150d0f00 *060d0000060000030104080a180a162816132b1e0b1911232f1e525239757a5ea7b4c2b0beceb1 *c4d4b1c2d0b0c0d1b1c0d4b2c0d2b3bfd1b1c1d4afbed3b0bfd0b0c3d1b6c6d6abc1d5b1c1d3af *bdd0b2c1d3afc3d3b0c1d1adbfd4b1c3d3b3c5d6b1c2d4b1c3d6b1c2d4b2c1d1b2c3d6b6c3d4b4 *c3d4b1c3d1afc2d1b2c3d6b1c1d2adbed3afbdccaebbccafbcc9b0becdb3c2d1b5c2d3b4c5d5b9 *c6d7bac6d7b9c6d6b8c9d9b6c6d7b2c5d8b4c6d6b6c5dabbc8d8bac9dab9c7d9b7c8d8b9c8daba *c7d7b6c7d6bbcadbbbc9ddb9c6dab6c9d8bac9d8b8c7dbb8c8d9b9c9dbb5c7dab6c7dcb4c4dbb2 *c8dab5c8d8b0c6dab6c7dbb5c7daaec5dbb4c7dbb1c7dcb1c7ddb1c6d9b2c7dbb4caddbacddfbc *cfdeb9cddfb6ccdfb8ccdfb3cadeb2cadfb4cbdfb6cddeb5cbddb6cde0b7cdddb3c9e0b5cbdfb5 *cbdeb5ccdfb4caddb5ccdeb6ccdcb6cee0b4cee0b6cce2b5cadfb2cbddaec9dcb5ccddb1cbe0b7 *ccdeafc9ddb4caddb6cbe1b6cadeb6cbdbb5cbdeb2ccdeb6cddfb1cbdcb9cce2b8cde1b4cce1b4 *ccdeb6ccddb4ccdcb6cdddb8cfe0b6cdddb5cee0b8cddfb9cde1b0cbdab5ccdeb5cddfb3cbe0b5 *cddcb5cde0b6cde0b7cfe1b9cddeb7cddeb6cddeb5ccdeb6ccdeb6cce2b5cddfb9cfdcb6cce2b4 *cbe0b9cddeb3ccddb3ccdeb3cbdeb6cee0b7cde0b4cbdeb7cddfb2cbddb3ccdeb1c9ddb1c9dbb6 *ceddb6cdddb6cbdeb7cde1b7cde0b8cfe0b6ccddb8cde0b8cfdfb7cfdeb9ceddb6cee0b6cddcb8 *ccddb6cbdeb6c8dbb6cbdcb6ccd9bdd0debacedeb6c9dcb8cbdfb6cbdeb3cbddb6cedeb7cddeb6 *cce0b9cde0b4cddeb9d0e2b8cfdfbad0e0b6cfe0b6cee0b6cfe0b6cedeb6cddeb7cedfb6cee0bb *cee3b5cde0b6d0e0b6cedfb8cfe0b8cddfbfd1e1bbd0e2bbcfe1b5cde1b8cee1b7cedfb9d0e0bb *d0e0b9d1e2b8cde2b8cde0b9cee2b9cedfbacddebbcfe1b8cddebacee0b6cedfb8cfe0b9d0e2bb *cee2bbcde1b8cfe2b9d1e1b7cde0b8cee2bbcee0bacfe2bdcedfbdcfe1bbcee1b6cee0bacee1b6 *cde0bdcfdfbecfe2bdcee2bfcee0b8cadeb6cbddb7cbdbb2c7d9aac1d7adc6d7aec3d7b3c8d7b5 *c8dabbcadcbcccddbccbddc0cddec5d0ddc6d3e0c6d2e2c7d5e2cbd6e2cbd5dfc8d4e2c6d2e1c6 *d3e1c5d0dfbdc8d64537381010141a121218171313110a1b1b1f1f2724282a1b887d5a8687689a *9485aaa498bdbbbdc9d2ddc7d3e1ccd6e2ccd7e2cbd8e4ced8e4ced7e3ccd6e1d1dae2cfd8e4ce *dae4ccd6e2c9d1dfc4cfddc3cee0c4d0dfc2ceddc2d0ddc4cedfc4cedfc3cedfc2cee1c6d1dfc9 *d3dfc9d4e3cbd7e2cbd7e2ccd3e2cbd3e2ccd6e3cbd6e3c9d3e0cad4e1c9d5e0c9d7e0c9d3e2c9 *d2e2c7d1e0c6d1dec7d3e1c9d3e3c6d1dec7d1dec7d2dec7d3dec9d2dfc6d1e0c7d0dec7d3e0c9 *d3e1c8d4e0c9d6e2cbd7e1c9d3e2c6ceddbac7d57b819b0c13170208090606040e1211191f1f13 *131b14161317171468644d858081a1a5a6a1a096a4adb38c848bafbecda7b8c64651751f191d0a *090d02040702040c0a1214151e26101d270606071417165a5a686667765a4c534e4c547c615d9e *aec19eb0c69bb0c79cafc8a3b3c79bb1cb9fb1c79eb5c99ab3cc9eb4d09dafc9a5b6c8a4b6cba6 *b5c7a4b7c9a5b8cca5b6c8abbacda4b6cca7b8cca5b7cba6b7cba8bacda9bacca8b6ccaab8caa5 *b2caa4b1caa5b4cba6b5caa5b7cba2b0caa4b1c99fafc9a8b2c8a4b3ce9cb1cb9dafcaa2b1c9a0 *aec596b1c79bb2c99caec79fb3cca1b1ca9aaec799aec592aec09cb1c69ab3c99ab2c796b2c99e *aec79fb0c796adc597adc795adc394aec799b2ca9db3c89db1c9a2b0c9a0b0c7a3b2c9a5b6c7a3 *b4c6a2b8caa6b4cbabb9c8a6b7ccadb8d0b0bccdaebccfaebccfb0bdcfb0c3d3b4c2d3b4c1d6bb *c3d5bdc7d8bbc7d9bdc8d8bcc6d7c1cbdbbfc9dbc0c9d9c0c9dbc0c7dabcc7d8c1c9dbc1c9dbbc *c7d7bdc9d5bec9dac2cbd6c0c9d8bfc8dabbc7d6b6c5d6b7c4d8b6c0d3b4c2d3b5bfceafbdd0b0 *bed1b0bed2b2c0d2b0bed0b0bed1afbecdafbdd1b1c0d1b7c4d3b2bfd1b3bdd0b1bed2abbcd1b1 *bdd0aab9cf8b9bb58b9aaba3b1b9a4adc29daac27384a42727471d211c302b257b8a918aa0b490 *96a28488932931420004090301051508030f0d0c2c2818202020434d500a010a0d0c0600010400 *02000e110d2b3c3b333637140a150700063526168086909a9ea4a8afb39dadc08798af728285b8 *c4c9c0c9ceb9c4d8b4bed2a9b6cca1b4caa2b1cb9fb1cd92adc68faac18caec78dadc78da6c68d *aac682a0c17da4c5799bbd879fc180a0be81a0bd83a4c0849ebb819fbd79a2bd809fbd7ea2be7d *9ebb86a4c085a3be89a6bf8da6c693a9c092a5be93a8c392a4c298aac19ba8c39aacc29eadc7a0 *abc19eb1c79aadc7a1b3c99daec393a4b5878c8b5b5b45585e514c4f565248343e4a3548443e43 *351d282a1e59545368624e5c5c476c6c7b9da2ae9fa6b3a4b0c4a4b3c7a2b2c8a8b4c8a4aec186 *866917180f0305040c0d090e0e0a161f15343c3b4e4325362822646365a6b0bfabbac8adbaccae *bdcfaabacfaabacdadbcceacbdd1abbcceadbcd0aebed2aebdd0abbcd0acbbd1aebdcfb0bdcdab *bacdaabcd1aeb9caaebdcbb0bdd0aabad1b4bdd1b4c1d3b1bdcfafbed4b1bed3b2c2ceb3c2d4b2 *c2d3b6c1d6b2bdceb2c1d2b8c1d2b3c5d6b5c2d3b6c3d1b4c2d0b9c3d4b7c3d6b9c2d6bac4d5b6 *c5d8bcc5d8bdc6d7b7c5d8bac6d6b6c6d7b9c8d9bac7d7b7c5dabcc8dbbac7d8bdc9d8bcc9dbbd *c9dac1c7dcbdcbd9bfcadcbdccdcbcc8dbbdcbd8bbc9d9bdcadbbdcad8bdcadcbbcbd9b7c7ddba *c7ddbbc7dbb6c8d9b6c6dab8c6d9b7c8ddb4c5dab1c4dbb7c6ddb4c6dfb5c5d9b6c6d9b2c6dab4 *c9ddb6c9ddb5c8e0b8ccdfbbcce0b7ccdfb8ccdfb6cadcb7cbddb5caddb8cadeb2c9deb8c9dfb4 *cadfb6ccdfb6caddb4c7dbb5caddb4c9deb3c9deb1c9dbb8cee1b8cce0b2cbdfb4cbdeb6cbdeb5 *cadeb7cce0b5c9ddbacce0b6cee2b9cde1b7cedebaccdeb8c9dbb7cbdcb4c9deb6cbdfb1c8ddb4 *cce0b9cee0b6cbe0b9cde0b8cbdfbacbdfb3cbdfb6cedeb5cde0b7ccdfb9cde0b9ccdeb9ccdfb8 *cbe0b4cde0b4cbdfb6cee0b6cce0b8cde1bacddfb6cadcb6cadcb9ccdeb6cde0b6ccdeb7cee1b5 *ccdebacce0b8cce0b8cbdeb7c9d9b8ccdfb7cce0b9cce0b4cbdeb4ccdeb7cddebbcdddb9cbddb6 *c9dfb8cbdeb6ccddb6cce0b5cce0b9cddebdcce0b8cde1b8ccdeb6ccddb7cddfb5cadab6ccdeb6 *cadbb5ccddb6ccdcbbcde0b6ccdfbaccdfbfcdddbbccdeb7ccdebccce0bacbdeb6ccddbdcee0b6 *ccdeb5cadeb8ccdfb6ccddb7ccddb6cddcbacee0bbd1e2baccdfbbcdddbacde1b7cde0b8cee2b8 *cee2b9cce0bacee1bbcfe0bbcee0b7cde2bbccdfbbd0e0bbd1e0b9cedfb6cee0b9cee0bdd0e1bc *cfe1b9cce0b8cde1b9cde0bacee1bbd0dfb9cedfb8cee1bacee1b8cde0bacddfb8cde0bbcfe0bb *d1e2bbcfe1bccee1bccee1bbcee2bdcde0bccee2bdcee2b7cee1bed1e2bdcee2becfe2bfd1e1bb *cee1bdcee0b8cee1bbcee2becde0c1cee0bdcbddbbccdeb9ccdeb6c7dab0c5d9b1c4d7b8c5d9b5 *c8dcbbc9ddb9cadcc0ccddc2cdddc8d0dfc8d3e0cbd5e1ccd4e2ccd7e2cdd7e2cfd9e3ced8e2cc *d8e2cbd5e2c9d3e1c0c9d74f3d3c1b1514171b191c1b16271c182214192a252a37302c9a8f8086 *754b928d72a9a291b6b6b9c8d2dccbd6e0cdd5e0ced6e2cdd7e2ced8e2cdd6e2ccd6e2cfdae5d4 *d9e6ced7e3d1d9e2cdd6e2c5d1dec4cee0c2cedec3cedfc4cedfc7cfe1c6cfdfc5cfddc6cfdfc7 *d2decad4dfcbd5e1cad4e3cbd1e1ced4e3cdd2e2cbd6e3c9d4e1cad4e1cbd4e2cdd6e1cbd6e3cd *d7e1cbd3e1c9d1e0c9d3e0cbd2dfc7d1e0c6d2dfcad1e2c9d3e0ccd5e2ccd7e0cdd6e0c7d1dec7 *d2decbd3e2cbd3e0cdd6e3cdd8e2cbd6e3c8d1e0bdcad58a8ea41a141b100508120c0d15131212 *100c0c050a140809221916857d6a8d72569d7b5aa89e85a8aaaa9d989cabb2bd9ca1ae3e333032 *21181e0f0e0d00011502010600001304021607081807051f0500683f149260289a6d3190733d93 *7b589eabbfa1afc6a4afc69daec9a2afc7a3b3c8a4b4cba5b4c9a4b6cdaab8cda8b6caa7b5cbac *b7cca8b7ceaabbcfa8b7caaab7d0a8b6cfabbacfadbaccaab9ccaab8d0adb9cfabb7cdaab8d1aa *b9cfa8b8cea8b7caaab8ccaab6cbacb6c9abb6cba7b6cfa5b6ccaab7cba8b6c9a4b5cba6b3c7a7 *b2caa7b2c7a3b4c8a4b3c79fb1c79eadc79eb3cba0aec79baec9a1b1c99fafc999b1c99bafc99c *b1c9a1b1c9a0b0c39dafc9a5b1c9a2aec9a1acc6a3b2c6a1afc7a3b4caa1b1c8a7b7cca7b9cba8 *b7caa9b3cca4b7cda9b7caacb6ccadbdd1adb9d2b0bed1b7bed1b7bdcfb5bfd0b4c1d1b9c4d1bb *c7d7bdc7d8bdc7d7c1c7dbc1c9d6c6cadbc2cadbc1cadcc1c9d8c1cad7c1c9d9c5ccdcc4cbdbc6 *c8dbc3c8d6c1cbd9c2cadbc0c9d9c1cadac3c8dabfc8d6bdc7d6bcc4d4bac2d4b8c0d2b5c0d1b4 *bfd0b6c0d2b2c0d2b3bfd0b5bbcfb0b9cfb1bcceb2bdd2afbccfb1bcd1b6bfd2b3bcd2b5c1d3b1 *bed0b1bbceb0bbcb9c9da2828fa397a8b6a1b1c76280ad6572895c6c743e475530302f696f698d *9aa29eaaba869eb3221d2a18070e1601051c0b0d09050c151023050410080a170e0d16080e1e06 *02080f0607242d2412122638382b757c6d4b46412d2e2c6872778388a37a819b9792928d9aa94e *646cbac2c7c0caceaec2d6aec3d5a8bacea4bdcb9bb1cda4b5d197b0c88daac285a8c58aa6c681 *a5c68aa5bf829fbd8aa2c18aa3be7b9bba81a1bd809fbd80a3c07ea1bf84a1bd859dbd8da6c37a *9fbb849ebd81a3bf86a4be8ba9bf92abc494adc595a5c291a5c293adc494aec892adc997adc597 *afc7a1b4c9a2b3c8a3b0c8a6b4cba3b3cba3b3c79ba8b390909c79939c798688726d5962624576 *85958d979f63614c8c92a093a3b17b877e95a4b9a0aec6a4b1c8a2b6cca3b3c99bb1cba6b7c9a4 *b4c69aaebf8b9b8e71705768664826201a3d392a5e646492a2af9aabb69eaec0a5b6caa6b7cfa9 *b9cdaabacca9bacaaabcceaab9cea2b8cfa6b9cdabb9cfabbaceaabacea8baceacb9ccaabbceab *bdd0aab9ceadbcd1abb7d0adbbcfacbcd0aebccdaebccfb2c1d6b2bed3b1bfd0b1c3d4b5c2d3b3 *c1d6b6c3d0b1c3d5b4c2d6b7c3d6b9c3d4b9c7d6b9c4d3bbc6d6bbc6d5b6c6d8b9c5d4bbc6d7bb *c6d5bcc7d5bbc8d8bdc8d9bac8dbbbc8d8bbc8d9bcc7d8b9c7d8bcc7d7bdcadbbdcbdcc2ccddc1 *cddcc0ccdec0cddec4ccdfc1ceddc1cddbbdcddfc0cedec5d0e1c3ceddbfccdcc0ceddbbcadbb7 *c8dbbbc9ddb8c8ddbbc9d8b6c6d9b7c6dabac9dcb9c9d8b6c7dab2c6dab5c7dcb8c7d8b4c6dcb6 *c9deb5c7ddb3c6d8b3cadeb6cbe0b6cbdcb8ccdfb7ccdfb2cde0b7cddfb8cbdcb6cbdeb4c9ddb4 *cbdeb5c9deb7cce0b6cddfb1cadfb7ccdeb5cce0b6cbdeb6cde0b3cbdfb7c9e2b9cbe0b5ccdfb8 *cde2bacde2bbcde1b4c9ddb1cbe0b4cbe0b6cce1b8cce0b3cce0b7cee0b7cedcb7cee0bacce0b8 *cbdfb6cedfb6cce0b6cedeb7cee1b7cee2b6cddebacbdeb7cddeb8cee1b9cde1b8cee2b7cee2b8 *cddfb8cfe2b5cde0b6cce1b6cee0b7cee0b8cee0bacfdfb7cee0b8cee2bccfe2b7ccddb9cde2bb *cee0bacde2aecbe0b6cee0b6cde0b6cee0b4cce1b8cce0bbcfe0bacfdfbacee0b7cee1b3cce0b6 *cde2bbcee1b7ccdeb8cbe0b6cee0b8cde0b8cddebbcee0b8cfe0b6cce0b8cee0bacde0baccdfb7 *cee0bacedfb7cddfb6cddfb6cedfb7cee0b7cde1bdcdddbacddfb6cce0b9ccdeb5cbdfb5cbe0b7 *cde0b7d1e3bbcee0bbcee0b9cfe0bacde0bbcee0b6cee2b5cee2b7cedfbacee2bcd0e2bbcde0b9 *d0e0b9cee2b8cee1bbcee0bbcee2bbd0e1b9cee3bacee0bccee2b9cfdfb8cee0b7cde1b9cee1b9 *cee2b8cee2bcd0e2becee2bccee2b7cde1b9cee0b7cee0b9d0e0bbd1e1bad1e2b9cee0bccce1bd *cfe0b9cee2c0d1e1bbcfe0bbd0e1bbcfe0bed1e2bacee0bbd0e0bbcee0b7cee2bdcfe0bcd1e2bc *d1e3bbcee3c1d0e4bbcfe2b8ccdfbccedebdcee0bdcee0c0cddfbdcce0baccdcb9c8dab6c4dab6 *c6dbb2c6dbb3caddbecdddc1cee0c5d0dfcad4e3c9d6e3cdd6e2d0dae5d1dae5d0dbe7d3dbe8d2 *dbe7d0dae5ced9e2d0d6e2c6cddb4a44452116131211121f1614241f1e6e4b2c3128292d28208d *85744d3e3a5b443ba49679b4b3b5c8d2ddc9d4e0cbd6e1ccd6e2ccd5e2ced7e3ced8e3cedae4d2 *dbe5d1dbe5cedae3d1dde5cbd9e2c2d2e2c2d0e1c2cddfc2cfdfc2cedfc3cfddc5d0e1c2d2e1c2 *d2e2c8d1e1c8d4e3cad6e2cad6e2cdd6e2cbd7e4cbd6e4cbd8e4ccd7e4ccd7e3ccd6e3ced7e3c9 *d7e4ccd7e3ccd8e4cbd5e0c9d3e1ccd6e2ccd6e2cbd6dfccd5e2cad5dfcdd6e2d0dae4cdd6e4c7 *d2e0c9d3e2cbd4dfcbd3deced7e2ccd8dfcbd6e3c9d0dfc2ccdb979bb129211c433422120e0c1a *16131617153c2718442f2420201e757a7a8185846b625daeaeaea6adb89ba1aaa7b9cb9fb0c941 *475f302d2c1013161817151b1e1d261b1a2924162e251e302c253d2b259c9b92a6a7a0aca298a6 *a096a49c89a9b1bca8b5c9a6b8c9a5b5cba8b6caa6b5c9a7b6c9a6b9cca4b7caa6b7cbaab7cbac *b8d1aabbd3acb7ccaeb6caafbacdacbccdadbbd0afbdd1abbfd4acbdd2acbed2b0bed1aebdd1ab *bcccaebecfadbfcfacbcd1acbcd1adbbceaebfd0aeb7cba9b8c9a9b9cea7b8cbaabbd1a9b7cca5 *b4caa0b4cba4b5caa5b5cba1b5c9a5b4c9a2b6cc9fb6cca4b3c99fb1c9a6b7cba1b3caa2b3c9a0 *b2cba3b3c6a2b6cba7b6cba3afc9a6afc9a5b3c7a5b3caa7b3caa1b2c8a3b6cba6b6c9a4b5c9ac *b7cdacb9ceaebbccabb7cdaebaccb2bbcbb1bccfb0bcd2b2bfd2b6bdd2b5c2d3bbc3d3bbc1d2bd *c6d6bdc7d8bfc9dac0c9d8c1c9dbc2ccddc6cedec3cddbc6ccdcc7ccdcc5cbdbc3cbdcc7ccddc4 *ccddc3cddec4ccdcc3ccd9c3cbdac1cadac3cbdac2c9dbbec9dabbcad8c1cad8bbc4dbbcc3d4bc *c4d4b8bfd2bac3d5b2bdd0b1c1d7b4c1d4b2bed2b6c0d4b6bfd3b2bed0b2bdd0b2bdd0b1bdd3b1 *c1d2b5c0d3b1bfd3b4c2d5aebbcb90929f968b9698a4bb503f4747414a353f54434742505c4b63 *758c88999e6f7ba7414a6c1f1c274236322b1a1f0d060d200d0c3731390b040608040a110a1003 *060c0b07082d2413423d343b251d4f462a5e63834c516646475734405847566e343f49899da153 *74a94c5e69b9c3c9bfc9cda6b7cea8b7cfa4b6d09cb3cd9fb1cd9db6d39fb1cc8cacc787a4c689 *a5c6789dc383a3c18aa1c48aa0bd779ebe82a3c17c9dbd7e9fbf7d9dbb7f9fbf749fc085a2c382 *a2c186a2c2859ebe73a1bc84a4be8aa5c48faac498abc593a8c792a9c58ea9c299aec695abc398 *abc89daec89db1c79ab2cba1b3cda2b1caa6b2ca9eb1caa0b0c4a3b0c79eb1c994aac399aac099 *a9bd9baec799acc19daec19baec696acc793afc990b0c99baac39cacc79ab0c89db1c69eaec696 *adc69baec39eaec699abc59aacc08ba1b06f7a7799acbe9bafc5a2b1ca9fb0c9a3b1cba3b2cba3 *b5cba5b1cca9b8d0aab7cda4b5cea4b5cda1b6cda7b6cca4b5ccaab5cca4b7cda7b6ceaab8cfac *bbcfabbaceacbbd3aab8ceaabad0aab6cbaabbd1acbad1b0bed2b0bbd0b0bcd1b5bed4b5c4d3b2 *bdd1b6c2d7bbc6dab6c5d7b6c3d9b7c7dbb3c5d8b8c3d6bac6d8bcc7d9b8c6d8bbc7d9bfc8dabf *c8dabec7d7bac7d9bdc7d8bbc9ddbec9dcc1c9dcc2cadcc0c9dcbfccdbc0cbddc1c9dcbecaddc2 *caddc0ceddc1cdddc3cedfc2cee0c6cedec5cddec3cfdec1cddfc3cedec5cee0c6cfe1c4d1e2c1 *cedebdc9deb9c7ddbbc7ddb1c6ddb5c7dcb6c6dcb6c9ddb6c7dbb7c7ddb1c6ddaec3d8b1c3d8b3 *c5dbaec3dbacc4dbaec6dbaec5ddaec6ddb4c9deb3c7e0b5c8dfb7c9deb0c7ddb2c8e0afc8e0b5 *c9e1b5c9dfb5c8dcb1c7deb1c8deb3c9ddb1c8deaec7deb4c9e0b4c9e0b1c9dcb5c8e0b6c9dfb4 *c9deb4cbe0b1c8e1b6c9e0b4c9e2b4cbe0b6ccdfb8cadeb8cce0b4cbe0b5cbdeb9cce1b6cde3b5 *c9dfb6cbe0b8cbdfb6cadeb4cddfb4cbddb6cce0b6cbe1b4cbe1b6cce1b6cce0b3cadeb4cbe0b2 *cbe1b6cbe0b2cbe0b5cde1b6cce2b7cce0b9cee1b5cadfb6cce0b7cce0b6cbe1b6c9dfb4cae1b1 *cbe0b7cce1b3cce0b2c9e0b2cbe0afcae0b2cadeb4cce2b3cbe2b7cee2b6ccdeb9cce0b6cbe0b1 *ccdeb1cadeb4c9ddb6cee1b7cce2b3cae1b4cce0b8cee0b6cbdfb5caddb4cbe0b5ccdfb6cbe0b3 *c8e1b3cae0b4c9ddb3caddb5cddfb2cadeb5cbdfb1cbdfbdcbdeb5cbe0b5cae0b6ccddb7cce0b5 *cbdfb4cce0b1cbe1b2c9e2b6cce0b6cbe2b3cbdeb6cbe0b6cce1b7cee2b5cce0b9cce0bacce0b8 *cce1b6cce2b8cee2b6cce0b5cce2b8ccdfb8cddeb8cde3b2ccdfb9cde1bdd0e0b6cde0b9cde0b9 *cde2b4cbe0b8cbe0b8cce1b9cee3b8cce3b7cde2b6cbdfb0cbdfb8cee1bdd0e2b8cce2b9cce0b7 *cce1b7cde2b6cee1b7cee1bdcee2bccee2b9cfe3bacee0b8cde0b5cde1b8cee3bbcde1b9cee1b2 *cce1b4cde1b9cee4b8cee2b6cee3bbcee3b6cde2bbcee1c0cee1c2cee0c1d0e1bccde0bbccdebd *ccdebbc9dfb6c8debdccdec1cddec4d0dfc5d1e1c9d4e3cbd6e5cdd6e4d1dae8d2dde8d2dce6d5 *dce6d3dce5d3dbe5d2dae5d2dae5c6d0dc4e3d441a11191614121a161532221aa59c9640342e2b *231a7773644c3a28584c34917d6da6a5a4c1cfddc2d1e0c2d0e2c7d5e2cbd5e6cdd8e5cdd8e3ce *dbe5d2dbe5d1d8e6ccd8e6c6d2e3bdcfe1bdcee2bdcce1bfccdfc0ccdec1cddec1cddfc1cee0bc *cce1c1cee1c4cee0c4d0e1c8d3e4cad4e3cbd3e3c7d2e2c9d2e1c9d3e4c7d4e3c6d2e3cad4e3cb *d7e4c7d3e3c7d2e1c7d3e2c9d1e1c6d1e0c7d3e2ccd7e1cbd6e3cad6e5cdd5e2ccd4e4ccd5e3cb *d5e3c7d1e1c7d1e1c7d1e3cad2e3ccd5e1cbd3e1c7d1e2c3ccddbdcbdb8c97ae14121845443c0b *0811180e1215101773665d67708d0e0a14584e446d69605e352c8d929694a2b59daec4a0b4ca9a *aec74342561f1d27160f161613141a1715221a181d1c182a1e1f2b1e1e25150f8d8165a29785ad *aea8979b9ba4a397a5aec1a4b1c9a0b1cca0b1cba6b6ccacb7ceaab8cba8b9cea8bbcfaab6cca5 *b8ccacbcd1aabcd3aebad1adbad2b0bdd2afbed0adb9cfa8bbd2adbdd1aebdcfacbbd2afbcd2af *bed1adbfd2adbdceaab6cca7b5cbacb9d3aebad3acbad1abbccfafbcd5aebacdaab8cfabb6d0a4 *b3cba4b4cba7b4c99fb5cba3b2c9a6b2caa9b9cea6b5cb9fafcba0adc9a1b1c6a0b2cca2b1cea5 *b3cb9db3cba3b5cba3b4cb9faec79fb3c6a1b3cca3afcba7b6cdaab6cca0b1cca4b6caa2b4cca4 *b4cca9b6cdaab8cba9b8cfa8b8cfadbcd3b0baceb0bbd0b0bcd1b2bcd1b3bbd3b0c0d6b3c1d5b3 *c2d6b6c7d7bdc9dabec8dbbbc7dbbec9dbc2cbdfc2cbdec2cee0c4cce0c3ccdec6ccdbc6cbdbc2 *cadcc4cbdcc3ccdec3ccddc0cadbc1c9dec3ccddc0c9dbc2cbdbbdc7dbbfcadcbfc9dcc0c7dabe *c9dbbdc8dcbac3d9bcc5d8b9c2d6b6c2d8b1c0d1b5bdd0b1bfd6b2bfd4b0bad0b1bed5b5bbd0b1 *bad0afbbccb3c2d3b2c0d7b2c1d8b1bdd1afbbd0b2bcd0aeb5cb8f95a3554d615340306a708852 *4a625d6879585f78444d534d6085574b438d9bac8599a747434462504547435235342c2520210f *0c110d0a0d120a0c4d4c3e93836eafb2b49c9fa7756d827189952f3a5a161d3c22191f29202512 *15340b0a1f49565fb7c3c7bec7cda4b8cfaec2d4a9b9cea7bdcda1b5cc99b3cc99b2cc92aec991 *abc794aac68ba3c18fa7c78aa4bf8ba6c186a4bf799fbf7ea0c18ca2c17fa4c0869dbd80a3c085 *a3c186a4c37da2c385a4c483a8c586a7c38eaac491a7bf94a9c592aec48facc88faac695b1c99a *adc597acc59aaec69eb1c7a1b0c69fb3cba4b5cba5b5caa3b4ca9fb2cba3b1c99fb2c99eb1c9a0 *b4c999adc69cb1c896adc6a0aec7a2afc59aaec79eb1c69eaec39fafc6a0b1c9a4b1c69dadc4a1 *b0c49faec6a2b0c4a3b1c7a3b2cba4b6c9a2b1c7a3b0c5a4b5c9a5b6c9a4b4caa5b8cba1b1caa4 *b5caa7b6c9a4b5caa9b7c9a7b5caa4b8cda3b6cca8b7ccabb9cdaebaceadb9ceaabaccaeb8ccac *b9cfaebbcfacbdd1adbccfacbdd3b0bdd4b1bdcfb0bed1afc1d3b3c3d3b1c2d3b7c3d3b9c3d1b6 *c3d3b9c4d4bac5d9bdc7dbbec6d8bdc9ddbbc7d9bbc8d9bdc7d7c1cad8c1cadbc2cadbc0c9dcbd *cbdbbdc9dabcc9d9bfcddbc6ccdac3ccddc5ccdec3ccddbec9dbc0cbdac1cddcc2cddcc2cedec6 *cfdec9d0dec5cfddc4cfe0c7d0ddc6d1e0c7d0e0c6d1e2cad4e3c8d3dbc8d3dec8d1e0c7d0e1c6 *d1e1c1cfe1c2cbdebdcbdeb9c9deb7c9ddb5c8d8b3c8d8b9cadab6c6dbb6c6dcb4c7dbb1c8dcb2 *c8d9b5c6d9b1c2d9afc1d8afc4d9afc5dbb0c7ddb1c9deb3caddb5c8dcb5c8dbb2c6dbb0c7dbaf *c6dab4caddb0c8ddb0c9deb7c9ddb6cadeb6c8ddb8c7dcafc6dcb6cadeb5ccdeb6cbe0bdcde1bd *cbdcbbcce0b9cbdfb8c9dfb9cce0b6cbdfb6cae0b1c9ddb9cbe0b5cadeb7c9dfb6ccdeb6ccdfb6 *cde0b3cce0b1cbe0b4cbe0b6cee2b8cddfb7ccdfb8cddfb7cee2b5ccdfb7cce0afcadfb4cde1b5 *cce1b5cddeb5cbdeb4cbdcb6cce0b8cee1b2cce1b7cee2b7cde1b9cedfb5ccdfb8cae0bacce1b5 *cbe0b6cee0b7cde0bbcde1b6cce1b6cde0b5cadeb6cadeb4ccdeb6cde0b2c9deb8cbdfb8cee1b6 *ccdfb4cbdeb1cce0b6cadcb6cbdeb5cbdeb5cce0b6ccdeb7ceddb7ccddb8cedfb7cbdeb7cddfb6 *cbdeb5cbdeb6cce1b4ccdeb5cbdeb5cbe0b5cddfb6cbdcb7cdddbecedeb6cbdeb6cddcb1cbe0b4 *cae0b6cce0b5ccdfb6cddfb4cbdbb7ccdeb8cddfb6cce0b6cde0bad1e3b4cde0b8cce0b9cee2b7 *cce0b6cce0b7cde1b9cddfbad0e2bbcde3bbd0e0bbcedfbdcee0b6cbdeb6d0e0bad0e1b6cddeb6 *cce0b7cbe0bacedeb9cee0b7cce0b6cce0b7cee2b6cde0b7cce1b7cde0bacde0b6cee0bccee0b7 *ccdeb6cee1b9cde0b9cee2b9cfe3bacfe2b5cee0bed1e2bdcee1bad0e2b9cee2bad0e0bbcee2bb *cee1b5cde1bdcee2b6cee2bed0e2bad0e2b6cee3b7cee0bccee2bdd0e3c2d1e3bfd1e2bcd0e2c0 *cfe1c0cfdec0cee0bfcddfbfcee0c6d2e3c5d5e2c7d3e2cdd7e3cddbe5d0dae3d2dce5d3dee7d4 *dde7d6dde7d6dce8d7dde6d6dde4d6dde6ced6de99795f644e42341d1c3c1f18693f2bbbbdba74 *5c463e25157d57306f54316e4528aa9779b8c5cbbfcddec1cedec1cfdfc3d2e1c9d5e2c9d6e3cd *d8e3cbd8e6cbd8e4c9d2e2c0cee0c0cddebed0ddc0cedebdccdfbfccdfbfcdddc1cdddc0cddec1 *cddfc1cfdfc2d1e1c2cfe0c3d1e0c8d4e2c9d4e2c9d5e3cbd5e3c5d3e2c7d3e2c3d2e0c1cee2c6 *d1e1c7d3e1c4d1e0c5d1e1c3d1e1c3cfe0c6d0e1c6d4e2c8d6e2c9d6e3c6d6e3c6d2e2c7d3e4ca *d4e2cad4e2cbd5e0c8d3e2cad4e0cbd3e1ccd6e3c7d2e0c6d0e1c5ceddbecbdb8675822d1c1753 *483f170d0e130a0a23111096988d6a74831c10104d39376055454c2c21795a2e9c9d99a4b3c89f *b0c59baec5443f541c1114150e0e1512141a13131d12132a27252d291c3136243721179b8866a1 *9377aaabaaa299899d917ea4b1bfa5b6cba7b8cea4b5c9aabacda2b6cbabb8cdadbacfadb9cfae *bfd1afbcd1b2bfceb4bbd2b0bfd2b1c0d2b0c0d1b1c1d5b4bfd3b4bfd3b0becfb3c1d3b4c2d1b3 *c3d5afbed0acbdd3b2c0d3b4bfd3b3c1d3b4bfd1b4bdd3afbdd2b0bdd3afbdd2aabccdaebbd1ab *bbd1acb9cca7b6cbaeb9cca4b6cda4b6c8a6b5cba5b6caa7b7cba8b8cea6b6cdadb6c9a5b5c9a2 *b6cba4b6c9a2b6cc9bb3c7a6b5c9a5b6cda3b4c6a7b6c9a3b5caa9b6caa9b5c9a9b8cba6b6c7a9 *b6caaab8ceabb5cab0bbccadbaceafbdd1afbcd0acbed1b0bcd5b0bad2b2c1d0b6c1d4b8bfd1b8 *c3d0bbc3d2b2c3d4b9c6dac1c8d8c1c9dec3cddac7cedac9d0ddc9cedcc6cfdec7cfdec7d0ddc7 *d0dec6cfdec4cedec9d1ddc6ccdec4ccdbc6ccddc4cbdbc7ceddc8ccdcc6ccd9c3ccddc6ccdcc3 *cadcc1c9d8c3c9dac0c8dcbfc8dabcc7d9bdc8d7bbc6d4bdc4d6b9c1d6b7c1d5b2c0d3b3c1d0b3 *c0d2b3c2d5b3bdd1bac1d2b8c2d1b7c2d3b7c3d4b2bfd1b1c1d6b6c3d5b3c0cfafb6c39ea2aaa6 *acb098a9b743435f574f6642453837404b4a3e3990978da0aebc515c7e52544b2633422f2f342a *201f798062675e506457438d7951b0b0a7becad5b8c3d489899f5946643d3645312e3b322b2055 *66711017380307163f5459b8c4c8c0c9cfa0b7d1a8bfd7acc1d4a7c2d5a8c1d6a4b8d296b3ce8e *aec793adc991adc996abca96b0cc95afc88da5be88a3c188a4c187a4bd89a5c388a2c387a5c18a *a4c389a0c08ca6c18ba3bb8fa5c38ba5c28ba6c48cabc891acc58ca9c793adc796adc698adc699 *abc798abc69eb0c8a0b1ca9ab1ca9db2cb9db3caa1b4cda3b6caa2b2c99db2caa3b4c99cb0c9a4 *b4c9a4b5caa7b5c8a3b1c7a1b1c8a1b3c698afc79cb0c99eafc7a1b1cca1b1c7a3b3c7a2b1ca9d *b2cb9daec89bafc8a1b0caa2b6cca6b6c8a0b6c6a5b8cea3b2c8a2b1c8a5b2c9a3b1cba4b6cda6 *b5cba1b4c7a4b7ccaab5ccabb8c9a5b5cba4b6ceacbacfaebbd2afbed1b2bed1aebeceadbaccae *bbd0aebdd3b1bbcfabbbcfadbed2acbdd3b1c1d3b0bdd3b3bfd1b0bed1b0c0d3b6c2d3b6c3d6b2 *c5d7b5c6d6bac8d9bbc8d9bac6d7b8c7d8bdc8dcbcc7d9bdc8d9becbdbc0cbdec0cbddbfccdebf *cad9bdc9dbc1cbdcc3cddac1cbddc5ccddc6d0dfc6d1dec2ccdec1ccdbc3ccdcc4ceddc7cddfc4 *d0dfc7d2e1c8d1dfc9d3dfc8d0e0c7d0dec8d2e2c7d3e1c9d2e2c9d3e0c8d4e2c9d4e2cad4e2c8 *d2e3cad3dfc6cfe0c5cfddbdccdeb6c8dcb8c8dcbbcadbbbc9dbb7c7ddafc5ddafc5deb4c6dab1 *c7daafc5d9b5c6dab0c6d8adc4d9b4c6dab7c5dbafc5dab5c5dbb5c7deb7c7dcb5c7ddafc5d9af *c3d8b0c5dab3c5d9aec4d9afc6dbb2c7dcb1c8deb0c7dcb7c8dcb7c7dabbcbdfbdcadec2cedfbd *cbdebfcbdbb8ccdcb6cbdbb1cbdcb0c9dfb6c7dab4cbe0b6ccdeb6cbe0b4cce1b4cddfb4cbdfb7 *c8e0b6ccdeb9cbdfb1cbe0b6ccdcbbcce0b6ccdeb4cce1b8cce1b4cae0b7ccdeb4cddfb4cddfb1 *cbdeb5ccdeb5ccdfb5cddfb1cae0b7cce0b7cbdfb4cbe0b3cce1b5cde0b2cbdeb4cbe0b9cce2b6 *cbdfb9cde0b7cbdfb6cedcb4ccdfb6cce0b6cde1b3cce0b6cee0b5cce0b4cce1baccdfb2cbe0b6 *cce0b4cce0b5ccdfb8cde2b3ccdeb7cedfbbccdfb2cbddb1cbddb8cbe1baceddb7cce0b4ccdeb7 *cddebacdddb4cce0b4cde0b3cadeb5cbdeb4cbdeb6cde1b3cbdfbacee2bacbddb9cbdfb8cddfb5 *cbdfb5cadeb5cbdeb5cbdeb6cee1b4c9dbb6cbdeb6cedeb6ccddb7cbdeb2cddfb4cce0b7cee0b7 *cde2b4cbe0bbcfe0bacedfb3cce2b7cbe0b6ccdfb7cce2bad1e0b6cee3bacde1bbcfe0b9cddeb8 *cce0b7ccdeb8cce1b9cee2b4cce0bacee2b4cddfb8cdddb7cddfb4cde0b2cce1b6cfe2b7cfe2ba *cde2b7cce1bbceddb9cde0b6cde1b5cee2b9cee2b9cee1bacfe2bbcee3b8cde0bbcde0b4cbe0b7 *cee0bccee2b7cce2b7cee0b7cee2bbd0e2bcd1e2b4cee2b9cee1bacee2becee2b8cddeb9cde2c1 *d1e2b6cee2bbd1dec3d1e3c4d1e1c3cee1c3cfe0c3d0e0c7d2e3cbd6e4d0dce6d2dbe3d3dbe6d3 *dbe5d3dce6d3dee8d6dde8d5dde6d4dee6d4dee7d2dde5ccd2d9b09d92b3a593a69b8ca99a8bb8 *c7d1a9a4aea49a7bb5bab4b1b8bfa29694bbc7cec0ccddbdcee0bacedebfd0e0c0d2e0c3cfe1c1 *d0e1c3cedec0cee2c0cfe0c3cee1bfccdfbdcee1beceddc0cbdebfcedebfcbdfc1ccdec2ccdfc2 *cedfbfcfe1bdcfe0bfcfdfc3d1e1c3d0e1c8d4e2c9d2e2c8d3e5c8d5e2c6d1e3c4d2e1c2d1e1c0 *d0e1bfcee1bfcee0c0cde2bfcde1becde0becee0beccdfbfcedec1cee0bccfdfbdcde0bdcee0bc *ccdfbfcee0bdd1e0c6d5e1c4d1e0c4cfe0c9d3e3c5d3e3c2d1e1bccde0becdddbac9dbb2c2ce96 *7e60999378837a74634b437b5b49aab7c099a1b26d61638b86789b9c969b96949da9b1a7b4c9a3 *b3ca9fb2c99daec848485d27201f1c1e1d1b1315271e1a261f17211f1a271e181e221c2a1e159c *988caba9a8aca4a8a6a3979c968ba4b0bea6b4cca8b5ccaab9ccaabaceaab8ceaebdd0aabaceac *bcd2aebdd2b0bdcfaebdd2afc1d3b5c2d3b1c1d2b6c3d2b2c0ceb5c0d4b5c2d6b4c3d3b1bcd1b9 *c5d7b7c3d4b2c1d5b2c1d5b4bdcfb3c0d4b5c2d3b2c1d5b5c1d3b2c1d1b2c1d3b3c0ceafbbd2aa *bed2aebdd4adb9ceacb9caaab9d0abbbcdacb6cba5b6cea5b8cca3b7cda7b3cba4b3cba6b5cbab *bbcba6b3cca9b9ceaab9cca1b4cea4b3cca2b5caa2b4cba4bacbaabed2a7b5cba7b5c9a8b9cda6 *b6c9a9b9ccaab5caadb9ccafbbd1b2bdd2afbbd2b6bfd0b1bdceb1bdd1b1beceb0c0d0b6c4d6b5 *c2d4b5c2d5bac6d4bdc7d6bec8d6c1c9d8c1c9dcc3ccddc7cce0c7cee0cbd1dfc8d1ddcad1e0c8 *d0ddc9d1e0c9d1dfc6cfdfc7cde1c7cbdec7ceddc9cfdcc6d1dbc7d1dec8d1dec7d1e1c9d3e2c8 *cedec7cedcc4cddcc5cbdbc4cbdac2cbd9c0c9dbc1c8d9bdc6dbbec6dabcc5d9bcc5d5bcc2d2b8 *c1d4b7c3d6b6c2d7b8c1d3b8c3d6bcc6d8bbc6d7bbc7d7b8c2d2b4c1d8b2bed3b3bdd1b1becfb4 *c3d4aec0d0a2aab786724d7d70804f2b30766560624c3775838d58658726264150484a685e5279 *806a42373b7e7d5d7196b3797269afb2b4b9c3d2bcc7d6bcc7d8b2bfcfb1bbc98e9fb1586c8e42 *4a4e4c57722f2b3544423a4d5a61bbc4c6c0c9cc9bb6d1a0bbd1aabbd3a8bdd6a1b8d493aecd8d *a7cb86a3c68aa5c592a9c29aafc891aac798aeca94aec896aec88fa6c592a8c48ba5c38aa2c687 *a2c186a2c387a2c08da3c38da6c68fa4c08ea5bd92a8bf9cacc497a9c498acc799aac59cadc99d *afc99daec99fb0ca9eaec8a2b2cca2b1c79fb1caa1b6ce9bb2cda4b2cba3b4cda3b6cea4b4cca2 *b6cfa5b4cba6b6cea4b5c9a4b5cda6b1c79eafc5a0b1c99db1c8a0b1c9a3b4cca3afc9a1b1cca5 *b1caa0b0cba3b1c9a3b4c9a7b6c9a1b1caa7b5c9a2b3cda7b8cea4b4cea5b5cca9b2c7a8b5cba6 *b4cca3b6c9a2b4cba4b6cda6b2cca6b4cdaab5ccabbbcdadbccfafbdcfb3bdd2b4bdd4afbdd5b3 *bed1b0bdd1aebdcfb3bfd2afbfd2aabccfb1bdd1aebcd3b1bdd4b3bfd4b2bcd1b6c3d4b4c1d1b5 *c3d8b5c3d7b5c4d8bdc8dcbbc9dbbdc8dcbfc9dbc0c9d8bdc9d5bdc7d8bfcaddbfcbdcc2cbddc0 *c9dcbccaddc1cbd9c6cddec5cddec6cddec4ceddc8d1e0c7cfdfc3cedfbfcbdcc6cedcc7cedec7 *cfddc8d0e0c8d0dfc9d0e0cbd4e1cbd4e3c9d3e3cbd5e2c9d3e2ccd3e2ccd3e2cad5e3c9d3e3c9 *d3e3c9d2e5cad3e3c9d1e0c9d1e2c3ccdeb9caddbbc6dcb4c6dab7c7ddb1c7ddb4c7deb2c8deb6 *c8ddb3c7dbafc6dbb1c7d9b1c3ddb3c4dcb6c5deb5c5d9b5c6dab9c7dab6c8dcb7c8dab6c5dab6 *c4dab3c4dcaec4dcb1c5d9b1c6dcb3c7ddb2c7ddb3c7deafc3dbb4c5dab6c6ddbdcbdcbdccdec1 *cedec2cee0c1c9debecbdbbdc8dcb6c7dfb4c8e0b4cae0b2cbe0b4cae0b5cbe0bacce1afc9deb5 *cae0b6cbe0b5cce0b5cadeb4cce0b8c9deb6cbe1b8cce2b9cde1b6cbddb6cce1b5cde1b6cddeb3 *cbdfb4cadfb6cbdeb3cbdfb7cbdfb3cbe0b1cae0b7cce0b3cddfb6cce0b5cadeb7cbdfb6cbdeb6 *caddb2cce1b3cce0b5cce2b2cce0b5cadeb4cae2b5cbdeb7cbdfaec8ddb5cbdeb3cce2b6cce2b7 *ccdebac9dfb4c8deb4cbdeb6cadfb6c9e0b5c9e0b9cde0b5cce1b4cce0b6cde1b3ccddb4cbe0b7 *cbe1b7cce1b5cce1b5cbdfb6cce0b6c9dcbacadeb4cbddb6cbdfb4c9e0b6c9e0afbdd2b5c9ddb4 *cadeb3cadeb3cae0b8cbe0b6cce0b3cde1b8cde0b7cbdfbbcce0bbcee0b9ccdfbacce1bbcce2b6 *cce0b3c9deb5cbe0b9cce0b9cfdfb6cce0b8cbe0b9c9dfb6cbdeb9cee1b6cde0bbcce0bbcee0b8 *cddfb6cbe0bacde1b9cce2b8cce2b9cce0b6cbe1b6cde0b9cce0b6ccdfb9cce0bbcde2b7cce1b9 *cee2b5cbe1b5cbe0b8cbe2bccde1b7cde1b6cde0b7cce2b7cee2b6cee2bacee2b7cde1b6cde2bb *cde2bacce1bccee1bacce0b9cce1bbcee2bdcee2b9cde2b9cde2bacddfbdcee0bacee2bbcce0b7 *cee2b7cddfb9cce0b9cfe2bdcee0becee2c1cfe1bed1e0c1d1e1c4d0e2ced8e5cfdbe7d2dbe6d3 *dbe9d5dde7d7dee7d9dee8d6dde7d0dae6cfdbe8d1dbe6cedbe5c6d5e2c0cde0beccdcbccdddbb *ccdebccddebacddebbccdcbbcdddbecddebdcbd9c0cee0bacce0bbccdfbccddfb9ccdebdcedebd *cee3bccde1c2cee0c3cedebeccdbbecbdfc1cddec1cddec3cee0c3d0e0c3cee1c2cedfc4ceddc3 *ccdfc3cee0c2cfe0c2d1e0c2cee2c1cde2c1d1e3c0d1e0c5d3e2c6d1e2c5d0e2c3d0e3c2d0e2bf *cfe1becee3becee1bfcedfbfcde0bfccddbcccdeb8ccddbdccdfc0cce0c0ccdfc0ccdeb8cbe0bc *ccdeb7cbdebbc9dfbac9ddbdccdebecce0c1cedfc2cee0c3d0dfb8ccdeb3c6ddb4c6dbafc4dbb1 *c3d8b1bfd4b3c0d3b2c2d1b8c3d1b9c5d2b7c5d6b4c2d2acbccca9bacda5b7cda9b4cca9b5cca6 *b5caa2b5cca0b3cca0b3cb544d601a151c1b13151714141c160c15161117101227282b20232726 *1d17948879a49b97aeabadaea9a5978b75a8b1c1a9b7c9a9b4cbaab9ceaabbd0adbbd4acbdd1b0 *bfcfb1bbcfb4c1d3afbed3b3bfd6b6c3d8b5c3d6b5c0d6b4c1d2b6c2d3b4c2d6b7c3d6b9c4d6b9 *c3d5bac6d6bac4d9b9c4d8b7c4d6b8c3d4b8c2d5b5c2d5b7c3d6b9c2d7b3bed5b5bfd6b3c0d5b1 *c1d3b1bfd3afbdd2aebcd2afb9cdadb6ceb0bad0adbbd1aebdd1aab9cbaabacea7b6ceaab7cdaa *b7cea7b8cda4b8ccaab8d0aab6c9aab8cba5b4cba8b5cdacb7cdaebaceafbad1a9b3ceabb6cfac *b9ccaab6cbaab8caadb8cdafbbcfadb8d2afb8cfafbbcfb3bed1b6bed1b3bbcfb3bdd5b2c1d3b8 *c2d4b9c1d3b5c2d5b5c1d6b8c5d8b9c6d8bbc7dac1c7dcc2cbdcc6ccdcc8d0e0cad2e1cbd1e3c9 *d1e0ccd1e0c8cfe0c8d0e0c9d0dfc6cfddc7ccdec7cfe0c7cddccbd1ddcbd2ddcdd1e1cbd3e2cc *d3dfcdd2e0cbd2dfcad0e0cacee0c7cddfc7ccddc4cbdcc3cbddc3cbdac2cadbc2c8dcc2c7dabf *c5d7bcc6d5bdc5d9bcc3d8bdc6dabcc5d6bbc7d8bdc7d9bec8dabdc5d9bbc1d4bdc3d2b9c1d5b4 *bfd3b4c1d4b8c1d4b5bdd0b5c1cfb5c1cfb2bdc9b4bacba19eb199998f5c75a2291723595d5756 *49596c6e804f4f7674696d91939da4acb6b3bdceb5bed1b2c1d2abbdd1a3b8cba6bbcf87a2be56 *698953657677778b8686856963807d8179bdc6cac2cbcf92b6ce9dbdd2a4bfd5a2bbd39bb4cc8d *acc682a4c585a5c886a7c488a6c691abc58cabc69bb1cb97b1c893acc792aec795acc688a6c184 *a3c087a9c47da3be82a4c082a0bd89a7c386a5c390abc391abc796b4c79ab0c798b1ca96b0c990 *adc79bb2c99bb2c899afc89cb0c69db3c899b0c798aec8a0b2c79eb2cb9fb0ca9eb1c99eb1caa1 *bbcfa4b8cea3b5cbabb9c9a7b9cea4bbcba4b9cca3b7cba2b7cca1b5c9a0b5cc9db4cca2b4cea2 *b3c79bafcba3b6c9a4b6cea0b3c8a4b7cda4b4cea4b4cb9db3c7a1b4cba1b6cca4b6c99eb4ca9c *b3c8a3b4cba2b1cc9db3ca9fb6cba3b5cba0b4c8a3b5caacbbd0a9bdd3abbed2afbed2adbdd1af *c1d2afc1d0aebed1abbdd2acbfd1acc0d0abbdd1b0c0d3adbed3abbed1abbdd2a9bdd2a7bcd0ad *bfccacc2d4b2c3d7b3c5d4b6c6d6b7c7d7b7c9d4bbc9dabdc9d7bcc9debdcbddbbcbdbbdcbdcc0 *cddbbecadabfcbdabfcdddc2cedec5cfdec4d0dfc5d1dec6d1dfc6d1dfc3ceddbfccdcc5ceddc5 *cfdec6d1e2c7d4e2c9d4e1cad5e0c9d4dfcbd5e2cbd7e3ccd3e3c9d3e3ccd6e3cad5e4cbd6e2c9 *d4e2c8d4e0c7d3e3c9d5e2c7d3e3c8d1dfbdcce0b7c9ddb6c8dbb9c7dbb0c8d9b2cbddb0c9dead *c8deb0c8deaec8ddaec9dcb1c7dab0c9dbafc7d9b2c6dcb3c7dbb6c9ddb8c8dbb8caddb5cbdcb8 *c9d9b9cadab0c7dab0c6dbafc5daabc5ddb0c7dcadc9dbabc6d8aec5d8b3c5d7b3c7d9bbccdbbd *cbdebeccdec1cde0becedcbbccdab6c9dcadc7dbafc8dbb1c9deb1cae1b5cadfb1cddeafcddcb3 *ccdeadc9dcb1cadeb3cadfb3c9deb1cae1b4cae0b1cce0aecddeb1cbdcafcbdeadcadeb0cadfb1 *cbe0b2cbdeb2cce1aeccdeb4cedfb1ccdeb0cadeb4ccdeb3ccdfb4cbdfaec9deb3cbe0b2cedfb3 *ccddb4cadeb4cbdfb4ccdeb5cddeb3ccdfb1ccdfb1cbe0b2cce0b0cbdeb1c9ddb6cbdbb6cdddae *cbe0b6ccddb6ccddb1cce0b2ccddb1cedeb1ccddb4ccdfb8cedfb3ccdeb6cee0b7cde0b1cce0b5 *cde0b6cde0b3c9dbb3cbdcb0caddb5c9deb3cbdfb4c9deb2ccdeb3cddeb2cbdeb3cbdcadbfcdb8 *ccdeb5cbdeb7ccdeb6ccdfb6cee1b3ccdeb4cbdbb6cedfb2cbe0b6cce1b7ccdfb6cde0b8cfdeb3 *cee0b3cddeb3cee0b3cce1b5ccdfb8cee0b8cedeb7cee0b8cee0b8d0dcb5cfdeb4cee0b5cee0b7 *cfe0b6cce1b4ccdfb6d0e1b5cfe0b2cdddb3cde0b5cce0b4cce0b3ccdfb4cbdcb7cce1b5cde2b6 *cee1b2cedfb6cde0b7cce1b6cddfb4ccdfb6cde1b7cee0b4cde1b4cee1b6cfe0b4cbe0b4cce1b8 *d0e2b5cce0b6cddfbad1e0b6cfe3b6cee2b3cce0b5ccddb5cdddb6cde0bacee0bacee0b8cee2b4 *cbdeb7d0e0b8cee0b6cde1b8cfe0b8cee0b9cfe0b7cee0bacfe0bed0e1c1d3e3c7d8e5c9d9e4cb *d9e4cedae6d0dde6d2dfe9d3dee8ccdce5c0d4e1bfd1e1bed0e0bcd0e2b8cde0b6ccdfb8cde0b8 *d0e0bbcedfb3cedebbcedfbcd0ddbacedebbcddebfcfe0bbcfe0bfd2e0bccfdfb9d1e0bccedeb9 *cfe0bbcbdfbbceddbcccddbdccdebecddebecddfbdcedfc1cddcc4d0dec4d2e1c3d1e0c4cfdfc0 *cedec1cedec1cedebfcedfc2d1e1c1cee0becedfbdd0e0b9d0dfb9d0e3b8cee1bfcee0becee2c1 *d0e2bacee0bbcfdfbccedfb7cedebccddfbbcedfbacedebbccddb6cbdebccbdebbccdcb9cde0b9 *cbdeb7ccdeb7cbdcbaccdfb9ccdebdccdeb9cadbb6cadcb4c9deb4c9ddb3cadbb1c5d9aec3d8ab *c2d5adc1d6acc3d6afc3d6b3c6d7b5c7dab5c7dab5c6d8acc2d4a8bed1a4bcd1a1b9ce99b4cca3 *b5cba7bacea4b7cca6b8cc9eb3c7434956120e0e090a0c0f120c2119181c1c1b100c0c040b0f10 *120b1e180e8f7e5e928c66999082a19d92928678a4b0bdaabacaa9b7c7aab9ccacbcccacb7c9ab *c2d2adbfd1b4c2d5b2c4d4b2c3d5b1c1d0b4c4d1b5c4d6b8c6d7b4c6d5b7c6d9b7c5d7b3c5d9b6 *c6d4b8c6d6b9c6d5b5c4d8bbc6d5b5c3d5bac5d6b8c6dab3c3d3b6c6d5b8c4d5b4c1d3b2c1d0b7 *c4d6b0c3d6b4c1d6b7c3d5adc0d1aebdd1b0c1d1adbdd1aabdd3aabdceadbcd1a8b8cdacbdd3a9 *bcccabbdcca7b7cca9b9cea7baccabbdd2aab6ceaab7cca5b7cdaabbcaaabacca9bacda8b8cba8 *bbcda8b9cdacb8ceadbcceaabcd0abbdcfb0bdcdadbbd1adbdcfaebccfaebfd0b1c0cfb4bfd4b3 *c2d2b1c1d0b5c3ceb7c4d3bac3d5bbc6d6bdc6d6bfc8d8c0ccddc0d0dec1d1e0c3cedbc5d1e0c9 *d1e1c8d3e0cad4e0cacfe0c5d0dfc2d2dec9cedcc8cfdfc7d1dec9d3e0c9d2ddcbd4decdd6e4cb *d7e3ccd7e3cdd5e2cad5e3cbd4e1c8d2dfc9d3e1c9d1dfcad1e1c4cfdec3cdddc3cbddc6cbdbc1 *cbdbc1cbddbeccdabfcadbc0c8d9bcc9d8bec8d6bac6d8bdc9d8bccad8bcc7d9bec7dac0c7d6b9 *c7d9b7c3d4b6c2d5b6c3d3b3c3d4b6c7d5b6c5d6b7c6d5b6c2d3aebfd1aabbcc95a3ab7e8a9172 *73668b91939ea4b19ca7b59fa9b1abbbc3a8beceacbcd1b0bfd2aabacf90a5c16a7f996b85a439 *557e14263e1e202040433f97a1aba5b3c5a6adaabdc7cbc1cbcf8fb1c996b5d19cbbd69ebbd299 *afca91aecb88abc789a6c48caaca80a8c68aa9c884a8c889acc88dabc791abc792abc593aec88b *adc48daac68ba8c791a4c18ba6c58ca4c591a9c68fabc291aac894acc892aec997b0ce9fb0ca9d *b3cca0b0c99ab1c89bb1c89cb0cba0b1cd9eb2cd9fafc999b1c9a1b2c89eb4cca1b2c9a4b0c8a4 *b3c9a2b6cfa5b6cea7b9cea6bacfa9bccca4b8cda3b7cba6b7c9a1b2cca3b7cfa5b5cea8b2c8a3 *b1cba3b5cca4b8cea6b6c9a4b7caa7b3c9a5b6cba4b8cd9fb6cea5b8cda4b6cfa6b4caa3b6cca5 *b5c9a4b6cba1b4cba6b2cba4b0cca2b4cba5b5cca8b9cdaab9cca9bacca7b9d0a9bad1aabbcdab *b9ceaabdd1adbdd1acbdd1a9bbd1aabbd3a7bbd0a9bdd5a8bad2a4bad3abbdd1aab7cfa4b6cea5 *b9cea7b8cfabbbd1acbed6adc0d1b3c1d4b2c1d3b8c6d9b1c5d8b4c5d9b6c7dbb9c4d9bbc8dabb *c9dbbcc9ddbfc6dabbc8dbbfcbddc1ceddbfccddc1cee0c6d0dec6d1dfc5d0dcc5cddfc4ccdec3 *cddec7d1dfc8d1e2c7d4e2cad5e4cbd6e3cbd5e3cbd6e2cbd7e3ced9e5cbd6e4cbd6e5cbd6e5cb *d8e4cbd6e3c9d1e2cad2e4c9d2e5c7d3e4c6d0dfc5cedfc3cedfbbcbdcb4c8dab3c9ddb3c9deb6 *c7deaec7ddb1c7deacc6ddb3ccdcb2c9ddb3c8dfaec7ddb3c9ddb3c7dbb4c8ddb7c9dbb7cadeb7 *c9dcbcccdfb2c6dcb5c8dcb3c6dbaec6daafc4d9b0c6dcadc6dab0c9dcacc6dcaec3ddb6c6dbb6 *c7d8bcc8dbc1ccdfc2cddec0cee1bfcfe0bdccdfafc9ddb1c9ddb2c8deaec9ddaec9e0b4cae0b7 *ccdeb1cae0b3cee3b0c9deb4cbdeb3cce0b2cadeb3cae0b7cae0b7cce0b7cddeb2cbe1b5cce0b2 *cadeb3cbdfb1c9deb4cce1b6ccdfb2ccdfb4cce0b5cbe0b0cae0afcadeb4cbe0b7cbe2b8cbe0b9 *cddfb5cce0b3cce0b3cadfb6cce1b1c9deb6ccdfb1cbdeb6cbdeb6cde0b7cce1b6cbdeb5cbdcb3 *cce0b1cce0b4cbdfaec9dfb4cbdcb6cedfb3cde0b4cde2b1c9ddb5cae1b5cbdeb6cbdeb7cbddb6 *cbe0b5cee2b8cee1b5cbdfb2cbe0b6cce0b6cde0b4c7dcb5ccddb5ccdfb6cee1b4cee0b4cadeb4 *c6d7b7cadeb6ccddb5cadfb7cbdeb6cce0b6cce1b6cee2b0cbdfb5cde0b5cde0b8cde0b7d0e1b5 *cee3b9cde2b5cce2b9cee3b6cee2b5cde2b4cddfb5cedeb6cce0b6cce2bacee1b8cddfb4cbe0b4 *c9debbcee2b6cee2b5cee0b5cce0b7cce0b8d0e2b8cfe2b6cbe1b8cbdeb6ccdeb7cde0b9ccdfb4 *cbdfb6ccdfb7cde0b5cbdeb8cddfb3cbe0b6cce0b8cee1b3cce0b3cde0b5ccdfb9cee2b7cde1b9 *cce1b8cee0b4cee0b8cee2b9cce1bbcfe2b6cde2b6cee2bbcfe2b7ccdeb8cde2bacedeb9cee1b5 *cce0b7ccdfb8cee2bbd1e3bbcde1b7cfdfbdcedfb7cedeb7cee2b6ccdeb7cee1b8cee0bcd0e2bd *d0e0bfcfe1c6d5e3cbdbe6cadae6cbd7e5bed0e1b7cedfb7cde1bacee1b8cee0b9cee0b8cee2b9 *cde1b8cee0bbcde1b9cedfc1cee1bdcfdebacfe0bbd0dfbbd1e0bbd1e2b9cee0becee2bccee0bf *cedfbdcee0bdcedfbecee0bfcee0c2cfe1c1cde0c1cde0c3cedec7cfe0c7d2e0c6d3e0c8d5e0c5 *d2e1c4d1e2c4ceddc2cee1c3d0e2c4d1e0c5d1e0c0cee0bccedfbacee2bbd0e0bbcee0bdcde1bc *cce0bdcfe3b7cce0b9cddeb8cbdfbdcee0bdccdebdccdebbcce0beccdeb6cbdebdccdebdcbdbb6 *c9ddbbc9dcb1c6ddbccaddb8ccddb6c7dcbbc8ddb9cbdeb2c7dcafc4d8a8bdd3a8c1d6adc2d8ac *c0d3aac1d7adc1d3aabed3aec1d4b0c4d8b2c6dbb1c4d6b3c4d6afc3d5acc2d5a8bbcfa9b9cfa6 *b9cca9bccfa8bbcfaabdd0a6bccfa3b3ca4f4d5b1b141b0e0d0c1511111513190f0d130c09120b *070e16150c221c188a786a867b5f90887ea4a7a9847d6e9a98a1afbbceabbdd0b0bdd1aebcd1ad *bcd1aebdd3b1c1d7b1beceb3c3d4b5c3d2b1c4d6bac6d8b6c7d7b7c6d8b5c5d7bac7d8bdc8d8bd *c9d9bdc7d6bccadbbdcad9bcc7d9bbc9d9bac8d8c0c8d9bdc6d8bdc9d9bcc9d6bac5d6bbc5d8b9 *c3d9b7c3d5b6c3d6b6c4d8b6c3d5b4c3d5b6c1d1afc1d4aabcd3aabbd3b1c2d3acbcceb0bcceae *bfd2aec2d2adbbd4acbccea8baceabbbcbaabbd1aab8cdacbcd2acbdd1b0bcceaabcceaabcd0ad *bbd3acbcd2aabbceb0bed2b2bfd2b3c0d0b6c0d3b3c1d3b1bad2adbed2aebccdb2c0d3b3c1d5b9 *c4dbbbc6d7bac4d8bac6d6bbc5d8bbc8d8bac9d9bbc6dabdc8dbc0c9dbc1c9dbc3cbdec6ccdfc3 *cddfc7d1e0c7d1e1c8d2dfcbd2e1cbd1e1ccd2e2ccd3dfccd2e0c9d3dfcbd3e1cdd3e3cdd5e4cf *dbe4d1d7e5d4d8e6ced6e5ced5e5cfd7e5cdd4e0cbd1e1cbd3e0ccd2e0cbd4e1cbd3e2c8d1dfc3 *cde0c5ccdcc4cbddc4ccddc3ccdcc3ccdbbfccdbc2ccdcbecbddc1cad9bec8d8c0c9dbc0c8d7c0 *c7d8bfcbd8c0caddb5c6d9b6c3d8b9c3d4b9c5d7b5c1d6b0c1d3b3bed1b1bcd1abbacfabbcd09f *acc0adb6c7acbbcea7bbceaab6cbacb8ceb1bed2b1c0d3aec1d4adbcd1a5b8cd96a9c35f6c864e *5873526689656f7e474b6c797e82a7b4c3b1bccea9b7bbbcc7ccc0cbcf9eb6ce9ebad193b5cd9b *b8cc95b1cd8caeca88acc889a8c98caac98aa6c680a8c28aaac98caac78aa8c885a7c58fabc890 *a8c784aac680a4c489a8c58ea9c08daac794a7c38babc68ba6c28ea7c498aec894aec999b0c89d *afc99cafca9bb0cc9ab1ca9cb3cca0b3c99eb4cb9fb2cba4b7cd9db1ca9ab1cb9eb2cd9fb3c9a3 *b7cc9fb1cb9eb3cba4b6cba9bacba3bad1abbbcea7b8d0a8b3c9a6b6cca6b7cca4b7cfa4b8cca4 *b3cba3b6cea8bbd1a3b8cda8bbcca4b6cda5b9cea7bccba4b8cba7b7d2a7bad1a4b8cfa5b9cda7 *b9ceabbaccaabbcda4b6caa4b1cba7b6cfa3b8cfa5b6cfa8bacfaabbcfadbbccacbbd1abb9d2a7 *b8d0acbbcfa5b7d3a9bdd1a2b7d0a3b6cea4b7ce9eb7cfa0b5cda5b9d1a1b6cba7b6cea9b7cea2 *b6ccaabbcea5bbcea6bbd1adbbd3adbad3afbcd5b1bccfb0bed1b0c1d5afbed1b1bdd3aebed3b4 *c2d6b6c3d3bbc6d8bcc7dbbac6d9bac9dabcc9d9b9c8ddbdc9dcc0ccdec1ccddc2cedec2cddec3 *cddcc1ccdbc5cedec1cedcc7d2e2c6d2e2cbd4e3c9d5e1cbd6e4cad6e2cbd7e4cbd5e4c9d3e2c9 *d4e4c8d4e5c9d3e2c7d2e1c7d3e3c9d4e2c8d2e1c6d1e2c3d1dec0cedebccbddb9cadeb1c7dbb6 *c9ddb1c8dcaec6dcb5c7deb0c8dfb4cbe0aecadeb0cbdfb0c9e2b1c8deb0c9ddb3c9ddb1c9dbb0 *c6dcb7c8deb7c9dcb7c8ddb4c6daafc6dab1c6dbb1c7ddafc6dbaec5dab1c6d9afc5dab1c9dbb6 *c8dbb9c8ddbbc9dec1cfdfbfccdbbccce0beceddc0ccdfb8cce0b0cadfb0c7ddb1c9ddb4cadfb2 *c9ddb2cbdeb0ccdeb2c9ddb6cce2b3cbe2b1cce1b5cbdeb1c9deafcaddb2cce0b1cce0b3cde0b1 *cbe0b1c9deaecadeafcadfb1cce0b4ccddb4cddfafcbdeb5cbe0b4cae0b0c9e0b5cbe1b1c9dfb4 *c9dfb7cce0b5ccdfb6ccddb6cbdeb1c9e0b4cbe2b2cbdeb1cbe1b0cbe2b2cddeb0cce0b4cee1b7 *ccdeb5cbe0b4cadeb5cce0b1c8dfb3cbdfafccdeb6ccdfb6ccdbb5cce0b2cbdeb0ccdfb1cbddb6 *cbdeb3ccdeb2cbdfb7cbe0bacee0b8cce0b5cadeb2cbdfb4cbdfb3caddafc9dfb8cde1b6ccdfbb *cee0b9c9d9b4cadeb6c9ddb7cbe0b5cbe1b4ccdfb6ccdcbbd0deb5cee0b5cee0b4cce0b5cce0b3 *cbe0b5cddeb6cedeb6cee0bacfe1b5cde0b3cbe0b6cce0b5cbe0b7cde2b6cbe2b8cde1b4cce0b7 *cde2b7cce0b4cde1b6cde2b2cbdeb6cde0b6ccdfb6cee0b6cee1b6cee0b6cce1b4cbdfb1cbdfb3 *cce0b4cde2b2cce1b4cde1b7cce0b7cbe1b5cce0b5cbdfb4cce0b4cee1b5ccdfb6cce0b8cee0b6 *cde3bccee1b6cce2b6cde0b5cee0b6cde3b6cce2b0cde1b7cee3b6ccdfb9cde2b6cce3b6cee0b3 *cddfb7cee0b9cee1b5cde2bacee1bccee1b9cee1b8cee2b9cfe0b6cce1b4cce0b6cee1b8cddfb7 *cde0bbcfe2bbcee2b6cde1bccfe0bfcfe0becfe0bbcfe1b7cde0b9cedebacfe1b8cde0b7cde1b5 *cce0bacee2b7cee0bdcedfbbcfe0bacfe1bbd0e0bbd1e2bbcfe2bcd0e0b9cde0b9cee0bacddebc *cedfbccddebdcee0c1cce1c1cee1c2cee0c4d3e2c5d2e1c5d1e0c6d1e2c7d3e2c8d1e3c9d3e3c7 *d3e3c9d1e2c6d1e0c4d1e1c5d1e1c2cee0c4d1e1c4d1e3becee1bbcddebbd0e1b9cfe0bacee1b9 *cee1bccfe3b9cde2b7cce0b8cce0b9cbe0bbcde0b8ccdebbcbdcb7cbdebbcbdeb8cbdebacbdcb9 *c9debac8d9b9c9d8b2c7d8b4c4d8b6c7d8b6c9ddb6c6d8b5c6dbb1c5d9b0c1d6b0c1d6acbdd1ac *c0d4aabbd3a7bdd5abbcd5aabbd3adc1d6adc4d6b2c5d9b4c2d4b4c5d7aec4d6b0c2d6aebed1aa *bcd1a8bdd2a9bbd0abbdd2a9bdd2abbed0aabbcc464a5f1e171e130f131415121c140e1e1f1a17 *100b1b110e1e140c2920188376578a735b7d78698f887d9c9987aebac6aabbd1b1c1d3b2c1d4ae *c0d4b1c0ceaec2d6b1c6d8b6c5d8b4c5d8b5c4d6b7c7d6bac6d5bbc6d8bac6d8b8c5d8bcc7dabb *cadbbcc8d9bdcadcc0cbdbc5ccddc2cbd9bdc7d9bdc9d9bec8d9bdc8dcbac7d8bccad8bdc7dabe *c6d6bbc6d6b7c5d7b8c4d6b8c5d7b8c1d6b8c3d7b6c0d3b9c3d3b5bed3afc1d4acbfd0b1bfd5ae *bdd7aebad0aebdd0aebdd2b0bfceadbbceb1bed0aebcd2acbdcda7b8d2abbcd1acbdceafbccfaf *becfaebbd0abbed3afbbd1b1bdd2aebad1b1c0cfb1c1d4b4c0d3afbfd4b4bed0b3c3d2b2c0d3b3 *c0d4b8c5d7b9c6d7bcc8d8bec7d5c0cbdabfc8dbbfc7d8bbc6d9bfcbdac0c8d6bec9d8c2ccdac6 *cedfc8cdddc6cce1c6cedec9d4e3cbd3e2ccd3dfcad2ddcdd6e0ced6e2ccd6e5cdd6e3cfd7e4d1 *d8e2ced8e7d1d9e5d2d9e7d2dae6d2d8e6d2d7e3ced6e4cdd7e2ccd7e2cbd4e1cad3e0ccd4dfcb *d3e1cbd2e0c9d0e1c7cedec7cddcc8cfddc4ccdec6ceddc6cedcc7cfddc7cdddc4cdddc2cadcc2 *ccdbc1cbdcc2ccdcc1cbdbb9c8d7b4c3d3b6c1d1b4c1d4b0bdd3afbbd3b1bed3b0bdcdacbcd1ac *bacea7b9ceaab7cea8bbceaab8cca4b4cca6b7ceaab7cbabbcd0a3b9cda1b6cc9fb3cc9eaec98e *95af7c80758fa5ac8e9db17b85a0909a9d9fb0c8a0b0c8a3b3bcbdc7cbc2cccf9fb9cf97b2cc9a *b1cc92b0ca92aecb8baac98daeca8cb0cb91b1cb92afcb94adcb93aeca8badcb82a5c387a7c68c *a4c491abc791a7c687a8c490aac692aac792aac496a8c497abc792abc394adc592aac694abc79c *afc595b0ca9fb0cb9cb1cb9db3cba4b5c89fb3c8a1b6cc9fb4cba1b4cc9bb1ca9fb3ca9eb4cb9f *b3ca98b0c99dafc79db0cba4b4cca5b9cba8b4cba4b8cca4b7cea5bbd0a4b7cca6b8cca5b6ce9e *b3cba3b1c9a9b8cca6b9cfa3b7cfa4b6cbaab9cfa4b9cda8bbcea6b8cfa3b7d1a8bcd3aab7cea5 *b9cea4b6cba9b8d0abb8cda8b6cda8bbceaab7cba8b9cea5b8cfa9bad2aebcd0adbdd0afbdcfae *bccfaabbcfa6b8cfa4b8cfa0b6d09cb4cca2b7cca1b3cca0b5cba2b0c89bb3cda4b1c99fb0cba4 *b5cbadbacfaabbceaab9ccacbdd1a9bbd0aabcd1afbbd1aebcd2b2bed7afc1d1b1c1d3b3bdd4b1 *bcceafbed2b5c1d6b5c5d7b8c7dabac3d5bbc7d6bcc8d9bbc7d8bac6dabcc9dcbfc8ddbfc8dcbf *cbddbfccddc1ceddc2cbdbc2ccdec3cfe1c2d0e1c8d1e2c9d3dfc8d4e1cad5e2cbd6e3c9d4e2c9 *d2e2c7d1e3c7d2dec6cfdec3cfe0c1d0dec6d1e0c6d0e2c5cee0c5cee0c2ceddbbcbdfb4c7dbb1 *c7ddb2c7deafc6deb1c8dfaac6deafc7d8b1c9e0aec9dcafc9dcafcadeb5cbddb5c8dcb4c9deb0 *c7dcb6c8dab3c8deadc8dcb5c7dcb4c8dbb5c9dcb3c8dcb1c8deb3c8ddb2c6d8b0c5d8adc6d9b0 *c6daaec3dab5c7d8b8c8dcbcccddbdcbdcbdcbdebfccdebdccddb9c8ddb4c9dfb1c9ddb2c9e0ae *c9dfafc9e0afc6ddb0c8ddb4cbe0b3cae0b5cadfb3cde2afc7dbaecbdeb1c9dcb2c8dbb4cbdfb0 *cbe0b2c9dfb4cadbb4cbdfb0c9deb5cbdeb6ccdfb4cbe0b4ccdeb1c9e0b2cae0b4cbdeb5cbdfb3 *cadeb6cbdfb2cbdfb3cce0b4cadeb6cee0b0ccdeb6ccdeb0c8ddafc9ddafcadeb2ccdfb2c9dbb6 *ccdfb5cbdfaecce0b6cce1b4cae0aec7ddb3c8dbb2cbdeb7cbddb2c9deb2cee0b0cbe2aecce1b6 *cbdbb5caddb2cbdcadc9dcb1caddb3cbe0b1c8e0b2cadfb5ccdfb2c7dab3c9dbb3c9deb5cbddb1 *cbdfadc7ddadc2d7b0c8deb6cadeb4cadeb1cadeb1cae0b3ccdeb0cbe0b5cce2b3cde1b6cde1b6 *cbdeb4c9dcb4cbe0b2cbe0b2cbdeb4cce0bacedfb4cbdfb8ccdfb3c9deb8cce0b3cbdeb6cbe0b5 *cbdeb6cbdeb4cce0b8ccdeb7cde0b2cbdcb4ccdfb6cce0b6cddfb6ccdfb8ccddb6cce0b6cde1b5 *ccdfb7cddfb5cde0b5cce0b6cbdeb4cbdfb6cbdeb3cbdfb3cce1b5ccdfb5cbe0b8cce0b4cce0b7 *cde0b6cbe0b8cbe0b6cce2b6cde2b6cbdfb8cce0b7cee0b5cce0b3cce1b1cbdeb3cde3b6cde1b5 *cce1b7cee0b6ccdfb5cadeb1cbdeb7cee1b9ccdeb8cee0bacee0b5cee2b6cce2b6cde0b7cde0b8 *ccdeb7ccdfb7cfe1bbcee1b9cde2bccfe0b8cde0baccdfbbcedfb7cddfbacde0bccfe1b6cddfb7 *cee0b7cde0b7cddfb9cde0bbcde1b8cde0bccee0b7cee0bacfdfbdd0dfb8cee1bbd0e0bbcee1bc *d0e0b8cee0becde0c0cfdfc2cedfc3cfe1c2d0dfc2d0e2c3cfe2c4cfe2c2cfe2c5d1e2c3d0dfc7 *d3e1c7d5e1c6d4e0c5d2e0c3d0e2bfcee1c2cee0c0cee0bfcfe0bdcee1bccee0bccee2bccfe2bb *cddfbacce1bbccdebacde1bbcddfb8cde0b6cbe0b6cbdeb9ccdebdcbddb9ccdeb9cbdeb5cbddb6 *cbdcbac8ddb8c9d9b7c7d8b2c4d8b0c3d7b5c7d8b6c6d8b1c3d7b2c1d5aec3d6b1c1d6afc0d4af *bed1a7bed1adc0d2acbed3abbed4a8bbd2a8bdd3b1c2d4afc0d4adc0d0aec1d5b1c3d5acbbd3ac *c0d4adbed4afbfd1adbfd3afbdd2b3c1d3abbed3a9b8ce524d5a30262149372e1d14161c141215 *141716110e807662251d1b2f251e9e9e9890878943301f9c9880a9acb2afbeceb0bed3b1c2d1b6 *c0d3b6c2d6b5c3d7b5c2d6b5c3d6aec1d6b7c1d1b5bfd3b7c3d5bcc7d7bcc7d5bfc6dac1ccddba *c6d8bcc7d7bec6d8c1cbd9c3ccd9c4cdddc1cddcc6cddec1cdddc2ccddc0c9dbbdc7d8bfc7d8bf *c9dbbcc6d9bcc6d8bcc7dabdc7d8bac5d7b6c3d1b6c3d5b6c1d1b7c0d2b5c3d8b6c1d1b4c1d3b1 *bdcfadc1d4aebdd2b0c1d2b1c1ccb1bed2afc1d5b6c0d4b6bcd1b0bdd1abc0d1acbbd5aebbd5ae *c0d4afbdd2b0bcd2b0bbd2afbdceaebccfb1bed1b0bed0b1c0d2b0bdcfaebaceb2c1d1b3c4d3b9 *c3d2b5c4d5b7c1d6bbc5d8bdc6d9bdc7d7bec7d9c0ccdcc1c9d9c0c9d9c1c7dbc1c9d8c1caddc5 *cbdbc3cbdfc5cedbc7d0ddc4d1e0cbd3e3c9d2e0cbd3e2ced3e2cdd4e3ced6e4ced8e3d1d8e3d1 *dae3d1d7e3d1d8e5d1d9e5d1d9e5d0d7e5cfd6e4d1d7e5d0d8e5cfd6e4ccd3e2cdd5e2ccd5e1cb *d3e0cbd6e1cbd3e1c9d1e1c8d2e0c9d1ddcacedec8cedfc9d1dec9d1dfc8d2dec9cfe0c7d1dec3 *cbddc6ccdbc3cdddc2ccdac1caddbbc8dbb5c3d7abc1d4b1c1d6b0c1d3aebfd1aebcd0a9b8cfa9 *b3cda4b6cba6b7cda4b6cca1b6cda1b4c7a8b2cba1b2cba0b3cb9db0c99eaec79db0c7a0afc89b *aec69cadc39badc499acc595adc69ba9c09aaac398aac3627ca498a2a2bdc7cbc2cacda8c1d69d *b8d199b5ce96b4ce91aec992b1cb93b1cc99b6ce9bbbd49fbcd39db7cf9eb8ce99b2cc98b1cc91 *acc88eacc68babc68da9c489a6c28eabc68faac38eaac688aac690b0c993acc691adc794b0c795 *aec79cb0c7a0b4ca9db0cb9ab2cc9fb2ca9fb1cca5b8cda2b5cb9bb3ca95adc69aafc897acc796 *acc691acc796aec89faec696adc89bb2c99fb3caa2b4cea2b6cfa1b5cda3b7cda3b6cca4b2c5a2 *b8d0a4b6cda4b7caa4b7cca6b6c9a4b6cbaabbcea9bbcea8bcd1a7bacea5b7caa8b6d0a4b7cca8 *b9cca7b6cca7bccea4bbcdaabbd0a4b6cca8b6cca9bacea9b7ceaabacfabbccfadbdd0acbdd2aa *bdd0a9b9cea1b1cd9eafc8a0b4cb9fb2c99db0c7a2b0c7a1b1c7a1b0cb9eb0cb9dafc59eb4cca4 *b6cda4b8d0a9b8cfaabaceadbbd1a9bbd1aabaceb0bdd0b0bdd1afc1d4aec3d6b2c3d6b1bed1b7 *c3d3b1c1d4b2c1d4b3c2cfb7c6d6b7c7d8bbc7dbbbc6d6bcc7dabdc8d6bcc8dbbdc7d7bcc7d8bd *cbdcbfcbdcbdcadac1cbdcbfcbddc3cbdbc4cedfc1cee0c6cfdcc6d1e0c8d1dfc7d2e0c8d4e0ca *d6e1cbd1e0c9d3e3c8d3e2c9d1e0c6d1e0c7cee1c6d0dec6cee1c6d2e2c5cee2becbdeb6c8ddb8 *c9dbb1c7ddb2c6dbb2c8deaec8dcaec7ddabc6dbb3c8ddadc7ddb1c8dbb1c9dfaec7d9b3c8dcb0 *c8ddb5cadfb1c9deb2c6dcb2c7dcb1c7d9b5c9ddb1c9dbb3c9dcb5cadeb6c9ddb6c6dbb1c4d8af *c4d8aec6d9b1c6daaec6dab1c7d8b7c9deb8c8debbc9ddbdccddc1ccdebdcbddb9c9d9b6c8dbb6 *c9ddb1c7ddafc7ddb1c9dbb3cadbadc9dcb2cbdeb2ccdeb6cbe0b3cce0b1cbddb1c9ddb3ccdeb4 *caddb1c9dab1c9deb1cadeb0c9dcaec9ddb0c8deb1caddb0cbddb0cbdcafcadcb3cbdeb3caddb1 *c9e0b4cbe0adc9deb1cbdeb2cbddb1ccdeaecbe0b4c9ddb3cadeb4cadeb0c9e0b5c8ddaec9dbae *c9ddb4ccdeaec9dfb2cbdeb2caddb6cde0b1c6dbb1c9dbb1cbdcb2ccdbb6cbdbafc9dbafc9e0b2 *ccdeb4cbddb4cadeb4cbddacc8ddb2cadeb2c9dbb6c9deb3c9dbb0c9deb0cbe0b3c9dfb4c9dcb2 *c8daaec6d66e6b72969ca7b4c9dcb6cbdeafc9dbb2c8dcb2c9ddb0c9ddb6ccdeb5c9ddb1ccdeb1 *cadeb1cbe0b3ccdeb2cce0b1caddb6ccdeb2cbdcb1cbdeb0c9dfaec9deb4cbe2b5cce0b7ccddb7 *cadeb6c9ddb5cbdeaec8dbb1ccdeb8cedeb3cbdeb6c9ddb6cbdfb5cadfafcadeb5cbdeb3cbe1af *caddb3cadfb9cbdfb5cce0b4ccdfb2cbddb1caddb3cbe0b6cbe0b5cee0b5cee1b6cee2bacde0b6 *cedfb6cde0b8cde1b8cce0b3cbe0b2ccdeb6cde0bbcee2b6cee2b3cbdfb4cbddb3cadeb4cbe1b7 *cee2b6cee1b8cddfb7cfe2b9cedfb5cce1b7cee0bacbdeb9ccdfb5ccdfb5ccdeb9cfdfb3ccdeb6 *cbdfb8cce0b6cce1b7ccdfb9cce0b6cce0b6cce0b7cde2b6cde1b7cee0b9cddfb9cde0b8cee1b4 *cce0b7cedfbacddfb7ccdfbbcee0bbccdfb6ccdeb6cde0b5cee0b9cedfbad0deb9cce0bccfe0ba *cfdfb6cce0bdccdfbccddfc0cfddc0cfe2c0cedfc2cfdfc4d3e3c4d2e2c1cee0bdcee0becee0bf *cfe0c1d3e2c2d2e1c4d1e1c3d1dfc6d1e2c2cfe1bbcedfbbcedfbacee0b9ccdebbcee0bacddfbb *d0e0bbcfe0b9cce0b6cde0b6ccdfb9ccdfb9ccdfb9ccddbacddebccddeb9ccdebacbdebacaddbb *c9ddbcccdeb9cadebbc9dbb8c8dcb5c6d8b4c4d9afc1d3afc1d6b1c3d6a8c0d2aec1d3aec0d6a7 *c0d6abbed2a6bbd6aabbd1a7bdd0aabed0adbdd0a9bed2adc0d6adbfd3aec2d4afc3d4aec0d6ac *bed2aabdd0aebfd2adc0d2b0bfd3b3c1d6b0bed1b0bfd1acbece434b5930271f4b3c2b21201e1f *20201710123a261d9fadb82d272e18171286715678604b3a26188c8b7fa5aab0aec0cfb4c1d3b4 *c3d4b6c2d3b6c3d6b2c2d5b6c3d1b6c3d5b9c3d3b6c6d6b5c1d4b8c3d4b9c8d8bcc7d9bfc8dbbe *c9dbc0cadac0cbddc1ccddc0ccdbc5ccd9c3cedec4ceddc6cddbc1ccdac3cbdbc2ccddc0c8d9bf *ccdabecaddbdc6d9bcc7d7becad8bcc9d9bbc8d8b8c6d6b9c3d6b3c0d2b5c2d3b7c3d6b3c5d3b1 *c5d6aec1d1b1bed3b0c1d5b5c3d6b1c1d1b3c1ceb4c1d3b1c0d1b4c0d3b2c1d3aec2d6b1c2d1ae *bdcdb3c1d3b0bfd3b2bfd2aec1d3b0c1d3b3c1d4b1c2d5b7c3d3b1bfd2b1bcd0b4becdb4beceb9 *c5d6b5c2d6b9c4d6b8c6d9bcc6d7bec5d6bec6d4bec8d5bdcad9bdc9dac2cbdbc2ccddc2cbddc2 *cbd9c2ccdbc0cbdac9cedbc8ccdcc7cfddccd1e0cad2e1ccd6e0ced5e3ced7e0d0d8e2d0d8e5d1 *d8e2d1d8e4d3d8e5d4dbe5d4dbe6d1dbe7d0d8e5cfd6e3cfd6e1d0d5e4d1d7e5cfd6e3ced8e3cf *d6e1cdd6e0ccd5e3cbd3e2cbd2e0cad3e3cbd5e0cad5decbd3e1ccd3e0ccd3e0c9d4e0cbd3e0c6 *d0ddc6ccdfc7d1e0c9d1e0c7cedfc3ccddc3cbdbbdc7d8b8c7d9b1c1d4b0bfd1aebdd1aebad1aa *b9cda3b2c9a0b1c7a6b3caa2b0c799b0c69dafcca1b0c5a1b1c9a1acc19badc59aadc397adc499 *aec49cacc49aafc797adc496acc69eadc49dacc79fadc390a4c046567e677c83bdc7cbc2ccd0a4 *bdd7acc1d39fbad59bb6ce9ab4cd9bb7d19abbd2a1bbd5a5bed6a4bdd8a4bfd8a3bfd5a5bfd399 *b9d092b0cb8daac48bacc789a9c68aa8c688a9c78dabc791aec98eaac790aecb98afc899b0c99a *afca9eb1c89fb1ca9cb6d19db4cea2b5cda0b6cda3b6cba3b3c9a5b9d0a3bacf9fb5cc9db4ca9a *aec69aaec99bb1ca9bb0c78faac598aecb9cb0c9a3b4cda1b3c7a2b3cba4b3cea3b6cfa3b7cd9f *b2cca4b1c9a3b5cea4bbd1a1b7cda4b6d1a7bbcda6bbcea6bbcfa6b9cba5b9cea4b6cea6b8cfa4 *b9cfa5b9d0a8b9cea6bacfa6bad1a5b9cea5b7cfa3b7cea3b8d1a3b8cba3bbcfa4bcd2a9bcd1ad *bcd0acbacfa7bacfa4bbd0a2b6ca9dafc79dadc99eaec79dafc79eb3cba3b3cb9fb1cba1b0c89f *b4cea3b6cea4b4cda6b8ceaab9ceacbaceafc0d2b3c3d1aec0d1b6c3cfb2c4d4b6c1d3b5c3d6b6 *c4d8b5c3d8bcc6d3b8c6d7b3c6d6b6c6d8b8c6d9b9c8dabac7dabbc6d9bcc8d6bdc7d8bdc7d9be *c9dbbfc9dcc0cbdcbecbddc2ceddc0ccdcc3ceddc7d0dfc6d0dcc9d3e2c7d1dfc8d1e0c7d3e2c9 *d3e2c7d3e4cad4e2ccd6e3c9d4e2c7d3e0c8cfdec5d1e2c1d1e3c3cddec4cfe0c6d1e4c0ccdebb *c9deb3c6d9b3c7dbb0c7ddb6c9dbabc8ddaec7deadc7ddb5ccdeacc9e0abc6dcabc7dbabc7ddab *c6dbb2c7ddb2c7dcb3c9dcafc8dcaec8ddb0c5dcb2c6dcb3c7dbb1c7dbb6c8deb9c8deb1c6dbb0 *c7dcb0c9ddb0c9ddaec7dbb1c6ddb0c9dcb3c9dbb4c9deb6c9dbb9ccdbbccdddb8caddb8cbdcb8 *c9dbb5c7dab0c7dbafc7ddb3cadeafcae0b0c9ddaec7ddafc8dcb5ccdeafc7dcafcaddb1cce0b5 *cce2b1cadeaec7dcb1c9dcb1cadcadc9dbafc8deb0c8ddb0c9ddb0cadfb0c9ddb3caddb3cbdfb3 *cae0b0cadeb4cde0afcbdeb1cbe0afc9dfb3c9deaec8ddb0c9deaec8deaecadeb0caddb1c9e0b4 *cae0b3cbdeabc8dbb0c9deb1c9dfb2c9deb1c9ddb1c8ddb4c9e0b2c8e0b4cce0b1cadbadccddb0 *c9e0b0c9deb1c9ddb3cae0b4cbdfb3cadeafcae0b3cbdfb4ccdfb1c9deb2c8deaec7ddb6c9ddb3 *c8dfb0cbdfacc7d86f6d6ea3a3a8b3c8dcafc7dcafc8ddadc8ddb0c7ddb3c9ddb4cbdeafcadeb4 *ccdcadcbdeadcbdfb2cbddb5cce2b5cce2b0cce0b2cce0aecbdeb1ccdeb3cadeafc9ddb1cbdfb1 *cbe0adc9e1b5c9dfb1c7dfb5c9dab1c9dcb3cddfb0cbdab5ccddb4ccdfb3ccdfb1cadeb2cbddb6 *caddb2c9deb4cbddafcbdfb4ccdfb2cbe0b3cadfb3cbdeb3cbdfb4ccddb1ccdfb5cde0b2cce1b5 *cae1b5ccdeb5cbe1b4cbe2b6cce0b6cde2b1cce1b3cce0b4cce2b2cce3b7cde2b5cde2b6cddfaf *cbdfb5cce2b5cce0b8cbdeb6cce0b6cce0b3ccdfb9cee2b5ccdeb7ccdeb8cddfb5ccdfb7cddfb3 *cbdeb5cbe0b9cce1bbcee2b6cee1b7cee0b5cce0b5cce0b8cddfb3cbdeb5cbe0b7cce2b7cee0b6 *cddfb6cbdfb6cddfb4cce0b8cde1b7cde0bbcee2bbcde0b7cedfbbd1e0b8cfdfb7cee0bbcedebb *cfe0bbcee0bacee0b9cde1b8cee0bdd1deb9cde0becee0c0cedebdcee2becfe1bccce1bccfe2bb *d0e1bdcee2bccee0bbcfe1c1cfe0c2d0e0c3d1e2c2cddebfcfe2bccfe0bacfe0b8cce0bacde0bb *cde0b8cce0bbcee1bccde0b8cee2bacfdfb6ccdebbcce1b9ccdfbbccdfb9cbdebacbdebacadfba *cadeb9cdddbccbddbbcedfbacbdbbbcbddb6c6d9b3c4d6b1c5d8b1c3d8b0c3d4aec3d8acc1d4af *c3d9adbfd6abc0d6acbed1aabdd1a7bcd2a9bed1a9bdd5a5bdd6a7bcd2adbdd5aec1d4acc1d5ae *c2d6b0c1d1acbed2b1c1d5afc0d3b1c1d6b1c0d2b2c2d5b0bfd4abbccf584c484734255b4f3f1a *100f1f1c1d22201b76694aacb6c636292d2a2325776560817b6f3e261e815432a8a398b6c3d1b7 *c2d1b3c4d4b8c2d3b7c6d6b8c6d9b6c5d6b7c6d7b8c5d9b7c6dbbac5d5bbc7dbbac9d8b7c7dabe *c9d9bfc9d9bfcadbc2cadbc3cedec5cfdfc5d0dfc6cfddc8d2dfc6cfddc8d1dfc5cedec6d0dec5 *cedcc2ceddc1cbdcbfcbdcbdc7d7bdc9d8bdcadcbdcadcbac5d9bbc7d9b9c6d8b8c7d8b7c4d1b8 *c4d3b4c4d7b6c3d5bac4d6b4c0d3b6c4d6bac4d5b7c2d1b7c3d7bbc2d6b6c3d2b8c2d6b3c4d3b6 *c4d5b4c2d5b6c2d5b4bfd3b5c1d4b2c2d5b6c1d3b2bfd3b3c3d5b5c3d6b1c0d2b6c5d7b3c3d6b9 *c3d5b6c1d5bbc4d2bbc7d8bac5d9bbc7d9bcc7d9bac6d7bbc7d6c0c7d9bec8d8c3cbdbc4c9dbc3 *cddec3cfdfc1ccddc2cbddc5ccdec9d1e0c8d5e0cbd4ddcdd5e3ced6e5d0d6e3d0d9e6d1dae2d3 *d9e5d3dbe6d6dbe6d5dde6d4dde6d5dde8d4dee8d3dbe6d3d9e6d0d7e3d0d8e4d0d9e3cfd7e5ce *d7e5d0d6e5cfd8e5cdd8e4ced6e3cbd5e4ccd5e1ccd7e3ced6e2ced7e3ced6e2cbd7e4ccd4e1ca *d3ddcbd5decbd3e1cbd3e0cbd1dec7d1e1c6d1e0c7d0dfbdcddbbbccdab1c4d6b4c0d3aebdceac *bad1a1b2ce9eb5ce9fb3cba9b1c79eaec69ab0c4a0afca98aac6a2b0c7a2acc39cadc79babc79b *acc599abc29eadc29fafc49dafc69aadc89cacc79aadc99faec68aa5b9758ea7829da5bcc7cac2 *ccd0a5c1d4a8bed39ebbd7a4bfd7a1bbd3a2bdd3a4c1d69ebcd3a0bed6a1bfd6a4c1d8a6bdd6a4 *bcd798b8d591afcc8aa5c690acc986a6c788aac993aeca8ca8c993afcc96aac392afcb98aec69a *b0cb9cb3c9a4b3cba0b2cb9eb5cd9eb4cda1b5cba5bacfa6b8cca4b8cca3b9d0a9bacea5b9d0a8 *b8cfa6b8cea1b9cda0b5cc9fb2cb95afcba3b2c9a1b3cba1b5caa4b5cf9eb5c9a3b5cba3b6cba5 *b6cca6b6cda1b3cc9db1cba4b3cc9eb1cb9eb2cca1b1caa4b7d0a6b6cda4b6cfa1b9cea3b7c9a4 *b7cba4bad2a1b8cea3b5cda4b6caa0b7cca1b3c99aafca9daec99eb2cd9fb6cd99b5cb9eb7ce9d *b4cea1b7d0a5bad0a4b4cfa6b6cea1b5cb9cb1cc9eb0c89eb2ca9db3ca9bb1c89eb1cba4b4cca8 *b9cda6bbcea8bbcba9bbceaebed0b6bfd0b1bed3b0c0d6aec3d4b4c3d4b1c3d5b3c2d4b8c6d6b5 *c7d8b8c6d6b4c4d6bcc7d6bbc8d7bfc9d6bac9d6bbc9d9bccadabcc7d8bac6d9bcc6d8bdcadac0 *cad9c2ccdcc2cbdbc4ceddc3ceddc2cedfc3cee0c6cee2c9d2e0c8d2e0cbd5e0c9d3e1cbd6e3ca *d6e5cbd6e4cbd5e1cad3e3cbd8e3ccd8e2cbd6e4c9d4e3c6d1e0c6d1dfc3cfdec3cfe0c1cfdec0 *cddbbbcbdbbbcbdeb6c7dbb7c7dcb2c6ddafc7dcb1c7ddacc7deafcbdcb1c9dbaec8ddafc8dfab *c7ddafc7ddb1c9ddb1c8ddafcaddaec7dcadc8dbb2c8dab8c9ddb8c9dcb9c9dab7c9dcb3c8ddb1 *c6dbb0c6dab1c8daaec8ddacc7ddaec9ddb0c8deb0c8dcb1c9deb6c8dbb0caddb9ccdfbbc9ddb5 *c8ddb6c9dab1c7daaec7dbb2c7dbaec7dbadc9dca9c9ddadc8deafc8deafc9ddafc9e0b4cadbb7 *cddeb3c9e0b4ccdeb1cadfb2c8deb1cadeb3cbdeb3c8dcb2c9deb2caddb5cadeaec9deb2cbdeb3 *cbe1aec7dfb1cadfb4cbdfb6cbdfb1c9deb4c9dcb3c9ddb2cbe0b1cbe1aec8deb4ccddb2cbe0b0 *c8ddacc9deaecbdeadcce0adc9deb3c8deb2cadfb3c9dcb1c7deb1c7deb4cce0b3cadeb6cae0af *cadfb1c9dcaecbe0b1c9ddacc8dcb3cbddb1cbdfb2cae1b3cadfb0c8deb1cbddaecadeafc9ddaf *c8dbb2cadeb5cbdeacc4d8474d5d98a1acafc8d9b1cadcafc9ddafc9deb3cbdeafc9ddb3cbe0b0 *cadeb2ccddadccdbb1ccdeb0c9ddb4cbdeaec9deb1cce1b4cce0b2cbdfb0cbdeb1ccdeadc9dfab *c7deb3cadeb0cbdfb5c9deb3c9e0b2c9dfb4ccdcb4cbddb2c9ddb0cadeb5cbddb7ccdfb6cbddb5 *cbe0b7cbe0b4cbe0b1cbdfafc9dcafcbe0b1cadeb4cce0b4cae0b3cbe0b1cadeb3cbdeb6cde1b3 *cce0b5ccdeb7cddfb6cde0b8cce1b4cbe0b5cee3b1ccdfb3ccdeb8cedeb4cddfb3cce0b6cce0b6 *cce2b2cddfb2cce1b4cce0b6cde0b5cadfb2cbdeb3cee1b7cfe0b8cee2b2cddfbacee0b7ccdfb6 *cee0b7cbe0b6cbdfb7cbdfb8cbe1b6cde0b4cddfb7cce0b3ccdfb5cddfbaccdfb7cddfb7cde0bb *cddfb6cee1b4ccdfb6cee0b5ccdeb2cce1b6cbe0b9cde0bbcddebdcedfb7cee0b7cee1bacfdebd *cfdfbbcee0b5cbe0b9cce0b6ccdfbdcee1b8d0debbcfe2bbcee0b8cbdfb9cce0b7cedfbccfe0bc *cfe1becee0bdd1e2bed1e2bbcde2b9ccdfbecee0c1cee0bdcee0bccee0bacee0b8cde2bacddfba *cddfbbcee1bacce0b7ccdfbccde0bbcee0b6cde1b7cee0b9cde0b9cde1bdcde0bdcde0b6cbddb4 *caddbbc9deb8ccdebdcce0b9ccdebdcedfbdcde0b6c9d9b4c8d9b2c6d8b3c5d7b1c6d6b2c4d3b3 *c6d8b1c6d9aec0d6acbfd5adc2d7abc1d3a8bcd3a5bbd3b1bed3adbed0abbed2afc1d6aec3d6ac *c2d6b3c0d5b4c2d5aec2d5afc2d7b4c3d7b5c2d7b2c2d7b3c1d4b0c1d4b3c3d1abb5bf9c8f66a9 *b0b27d65566a4b3b6b52459b959ab1bbcb76665d827352a8a7a0aeb1b5aaa58ab7b8b5bbc3d1b9 *c6d5b7c3d6bbc7d4bac9d6bbc5d8bbc6d8bac6d9b9c8d9b9c6d9bbc7d8bccad7c0cbdabdccd9bc *ccdec2c9dbc2ccddc2ccdbc5ceddc5cedec8d3e0c9d2e0cad2e2c9d0e2cad2e1c9d3e0c9d1dfc8 *d2e2c5d1dfc7cedfc2ceddc2ccdbc1cbdbc2c9dbbdc9d8bbc9dbbbccddbbc7dab8c7d8bbc6d4b9 *c5d7bbc5d6b7c1d8b9c7d8b8c6dabbc5d9b8c6d8b9c6d8bbc7d5bbc7d8bbc3d6bcc7d8b8c6d4bd *c9d8bbc6d9b7c6d6b6c3d2b2c2d5b1c0d5b3c2d2b4c2d5b6c4d6b7c4d4b9c3d6b9c5d2b6c4d4b5 *c3d6b9c2d8b9c6d9bdc9d8b8c7d8b6c5d8b7c5d5bec5d9bdc7d9bdcbd8bfcbddc0cbdac0cadabf *cbdbc3ceddc3cddbc3ceddc2d1e0c9d1dfc7d1e2ccd3e0ced7e2ced6e1cfd8e4d3dae3d4dbe5d8 *dee7d5dbe6d6dde7d3dee6d8dee6d8dee6d5dee6d6dfe7d5dbe6d4dae6d1dae7d1dae4cfd9e5ce *dae7d0d8e3d2dae4d2dae4d1dbe6d1d8e5cfd9e5cdd7e5cfd8e5d0d7e2d2d9e2cfd9e3cfd8e4cf *d7e5cfd8e6cdd8e3ccd6e0cad6dec7d5e2c7d1e0c7d3e0c6d0e0c3d0e0bfcbddb8c8d8b3c5d6b1 *c1d5aabfd0a5b8cca4aecba4b2cca5b2cb96b0caa1afc69fb3c49db0ca9eb0c799abc59baec799 *afc59aadc89aafc497afc49bb1c59eb1c8a2adc5a1aec69fb1ca9fb1ca93abc1627299718d8dbe *c7ccc2cbd0a8c0d7a5bfd1a4c0d5a4c1d69ebed7a9c1d7a3bdd6a0bcd4a1bdd5a0bfd6a3c0d6a2 *bfd89dbed8a0bbd396afcf8dacc98daac892aac78daec890b1ca91abc796b1cc93aecc9db0cb9a *afcb98afc997b0c7a1b2cc9fb2cba0b6cd9bb5d0a7b9d2a3b8d2a5bbd3a3bad0a6bcd1aabed1a9 *bfd3acbfd4acbed6a9bcd2a4b9cf9bb3cea3bbcea2b9d0a1b6cca1b5cba4b8cea0b6cba6b6cea4 *b6cca4bacda3b4c99cb5cd9ab2cb97afc99baec79cb0cd9aafc999b2cb92aec79aaec697b0c99c *b3ca99afc994afca8cafcc95aec999b0cb9bb1c89ab0c898afc992abc893aec797acc597adc798 *aec898accb9ab0c99db0cb99afcaa0b2cd9eb4cc9ab1cc9cb3cc9cb2c8a2b3c6a0aec7a4b8cea4 *b6cea9b7cfa2b7cea9bbcfacbbccb2bdd0aebfd2b0bed1aec0d5b2bed3b1c1d1b7c3d4b1c1d4b7 *c6d7bac7d6b6c6d7bcc9dabecbdcbecadbbfcbdabfcbdabeccdcc0cbddc2cbdbc0ccdebeccdabf *cddcc2cfddc1cddfc4d1dfc6d1e0c4d1dec5d0e0c5d2e2cad4e1c9d3e1cad3e5cbd3e3cdd7e4cc *d8e5ccd7e6cdd6e4cdd7e4ccd7e4cbd9e5cbd9e4cbd4e6c8d4e2c9d2e1c4d1e1c4cedec3cedebf *cde1c0ccddbbc9dcb6c9dab8cbdcb1c6dbb1c6dbafc6dbb4c7ddabc6ddadc7deb0c7dcafc7ddb1 *c9dfb0c9dcb0c7deaac6deadc6dfaac5dbabc7dcadc7dbb0c7dab4cadeb4c7dcb3c7d8b1c7dbb2 *c7dab2c7dbaec8dcb0c9ddaec9ddaec9dfabc8dfb0c9dbacc9e0b2c9deb2c6d8b4c9dcb3c8dcb1 *c8ddb7c9deb6c9dfb0c6daaec8dbaec4dbaec4dbadc7deaec7dbb1c9deadc8dbb3c9deafc7ddad *c7d9b1cbdeb0c9ddb5cbddb2caddb3caddb6cadeb5c8dfb2c7daafc7dbaec5d8afc7dcb3ccdfb8 *cde1b6cbdfb5c9e1b9cbe0b3cbdfb2cadfb3cbe0b1cadeb4cadeb1cadeaec9dfb1cbdeb4c9ddb1 *c9deafc8deaec7deaecadfb3ccdeafc9dfaec9e0b1c9ddb1cadfb1cadeafc9e1adc9deb2cce0b1 *c9e0aecadcb0c9e0adc9e1b1cae0b0c8ddafc7deb2cadeb3ccdfb0ccdfb0c9ddb0cae0b1c8deb4 *c9dbadc9dbafc9dfb1cbdea5c0d3504c49908d8fb4c7deb2c9deafc8deb2c8deb1cadcb0c9ddad *c9dbb1cae0b4c9ddacc9dfb4cae0b1c8dbb5cce0b1cbdeb5cddeb1cce0b0c9e0aecbe2b4cce0b1 *cbdfb1cbdcb3c8daadc6dbaec9dfb3cbe0b1c9deadc7ddb3c9dfb0cbdeaec7ddb1caddb1cbdeaf *cde0b1cae0b6cbe2b6cbe1b5cce1b0cadcb0cadcb0c9dfb1cbdeb2cce1b4cbdeb2cbe0b6cbe1b3 *cbe0b3cbdeb4c9deb4cbe0b1cce1b0cde1b3cadfb5cbe1b4cbe0b3cbdeb4cde0b5cae0b3cbe2b5 *ccddb2ccdeb9cee2b5cce2b6cce2b4ccdfaecbe0b1cbe0b9ccdfb5ccdfb4cde0b8cee2bbcce2b7 *cee1b6cddfb1cbdfb6cddfb6ccdfb4ccdfb6cee1b7ccdfb8cce1b5ccdfb6cedfb7cce0b4cce0b9 *cddfb8cde1b7cbdfb8cde0bacde0b7ccdfb5ccdeb6cddeb6cbe1b4cce0b6cce0b5d0e0b6cde0bb *cfe2bdcedeb9cde0bbcee0b9cee0bacee2bdcee0b4cee0b6cbe0bbcde0b6cee2b6cce1bacfe0b8 *ccdfb6cedeb9cce0b9cee1c0cee2bccce0bccfe0bbcddfbacee0bccfe0bbcfe1bccfe2bdd0e1bb *cee3b6cde2b8cee2b8cde0bbcce0bbcce0bacde0b7cde0b8cee1b9cbe0b7cde2b6ccdebcccdeba *c8deb8ccdeb9cadbb7cbddb6cbdcbbcee1bfcfe0bbcbe0b8c9ddb5c8ddb3c7dcb2c6d8b5c7d8b5 *c6dcb5c7deb2c5dbb1c3d7aac1d6b1c3d6abc2d6abbfd2abc1d4aac1d6afbed2abbfd3b0c2d6b0 *c5d5b2c3d5b1c4d6b2c3d7b5c5d7b4c4d7b5c2d7b7c6d7b6c6d8b5c4d8b6c5d5b5c3d4b6c2d2b6 *c4d5b6c5d4b8c5d1b6c3ceb6c1ceb6c1d3b6c6d8b8c2d3b6c6d2b8c3d4b6c6d8b6c5d4b7c7d7bd *c9dabac7d8b7c4d4b7c7d8bac9dbb6c6d8b9c8d9bbc7d8bccbddbbc9d9beccdbbdcbddbec9dac1 *ceddc2ced8c4ccdcc6ccdcc1cedfc5cfe0c6cee1c6d1e0c8d3dfcbd4decbd5e1cbd3e0cad3e1ca *d3e1c8d3e2c8d2e2c7ceddc7cfddc2cedfc4ceddc3c9dfc1ccddbdcbdbbdc9dbbac6d8b7c7d8bb *c7d8bcc7d8bdc5d4bcc7d5bac4d8b6c7dbbbc6d8b9c5d5b9c7d4bbcad8bdc9dabbc8ddc1c9dbbd *c7d7bdc6d6bec8d9b6c7dbb9c8d8b8c6d9b5c4d8bac4d8b8c3d6b7bed3b4c3d7bac5d6bac6d6b8 *c6d9bac6d8b8c3d8b8c6d9bcc4d4b8c6d5b8c6d9b7c8dbbcc8d7bdc8d9bec9dabfc9dbc1c9dbc2 *ccddc1cbdac4cbdbc1ccdbc4ccdcc7d0dfc7d1dec8d1e2cdd4e3ced5e1ced8e3d1dae6d2dde5d4 *dce5d6dbe5d8dfe5d6dde9d8dfe8d8dee8d8dee6d6dee7d8e1e9d7dfe8d4dae6d5dbe7d2d9e7d3 *dae5ced9e5d1d9e6d3dae5d3dbe6d1dbe4d1dbe5d0dae6d3d8e6d4d9e6d2d9e6d2dae7d1dbe5d0 *dae4cfd9e4ced8e5ced7e3ccd4e5c4d0dfc3cdddc3ccdec3cddec1cddfc0cbdbb8c8dbb7c6dabc *c4d6aec1d3a9bdcea7b5cc9eadcca0b2cba5b6cb9fb3cba2b1cba0aec79cafc49aaec7a1b3c999 *b1c7a1b0c49fb1ca9eb1caa4b1ca9fb0caa0b0c7a0b0c79cb1c8a1b3ca9eb3c891a9c27d90b190 *a4adbec7cdc3cbd0a5bdd5a7c0d5a1bbd2a0bad59fb8d3a3bad6a4bbd3a4bdd19fb7d2a1bcd7a0 *bbd6a4bdd6a3bbd8a4bbd394aeca89aac789abc78dadcb8ca8cb8fadc88daec998b0ca95b0cc90 *aec79ab1cc9ab3cc9cafcb9fb2cf9db3cda2b5cf9db4cda4b8cfa2b8cda4b8d0a5b6d0a3b3cea8 *b9d1a8bcd2aebfd7b1c1d5b0bed3a5bcd1a5bacfa4b7cea9b5cea5b6cfa5b7cda3b4cea3bbd1a4 *bacfa4b7cca7b7cca4b1cda4b1caa0b4cb9aafc79bafc995adc78facc69baec798aec98fa8c79c *aac78dabc88ea7c696adc58aaac690aac594aec88ea9c294a8c692aac38ea9c88daac78da9c395 *aac78ea9c298adca98aec793a9c792aac393a9c598abc79cacc99eadc79cafcaa1b3cea0b0caa4 *b6cca5b8cea2b7ceabb8d1a7bad3abbdd3aebcd3b3bfd4b1c0d1afbdd2b5c0d1b7c2d5b1c2d8b3 *c4d3bac5dabbc8dabdc9dcc1c9ddbfc9ddbfcadbc3ccddc2cddcc1ccdbc1ccdcc5cedfc4ccdfc6 *cddcc2ceddc6d0dec6d0e0c5cfdec6d1e1c7d2e2c9d1e2cad1e2cad3e2cad5e3cbd6e1ccd6e2cc *d7e4cbd6e6c9d4e6ced6e5ccd6e6ced6e4cedae4cdd8e2cbd4e3c9d3e3c5d2e0c6d0e2c5d0e0c2 *cbe1becadeb9caddbbcadeb9c7dab9c9dbb3c6ddb1c5dbb6c7ddb1c5daaec6daacc4dbaec5dbac *c6deaec5deb0c7deafc7dfaec7e0afc7ddafc7dcabc7dcaec7ddaec7dcb2c7dcb7c8ddb4c6dead *c4daaec4daaec5d9aac6dbacc6dab0c7deacc6dcadc6ddaec8deafc6ddafc7dbadc7ddb1c6dbb2 *c7dbb0c7dbb2c9dcb6c7deb1c6dcafc4d8aec4dab4c7ddadc6ddaac6dbabc4d6aec6daafc6deb4 *c8ddb0c7d8aec6dcaac4dbafc7ddb1c7dcb3c9ddb2c6dab4c9ddb6c9deb1c5dbb7c6dbbac9dbb7 *cadeb8cadebacce0bdcce2bccce0bbcbdeb5cbddb5c9deb1c8dfb3c9deaec9dfaec8dfafc9e1b1 *cbe1adc8ddb1c9deaec6ddaac4d6adc6d9abc6ddaec9e2b2c8e0adc7e0b1c7deaec6ddadc8deb0 *c9dfadc7daaec9dfb3c9e0b1c9e1aac8ddb5cadbb3c8dbaec8dcb2c8deb1c8deafc8dfb1c9dfb1 *c8deb0c9deaec9dbaec7dcb0c7dcacc4db8191a4808393b2c7dbb2c9deacc7dcadc9dcb1c9dfae *c6ddb2cadbb0c7deb1c8ddb0c9deb0cbdfb1cadcb4c9e1b2c8e0b1c7ddb0c9dcb0cae0b4cbe2b1 *c7dbaec9deb3cbdcb1c8deaec7dbadc6dab1c6d9b5c7deb4cbdfb0c8dfb4c7deb2c9dfb5c9e0ae *c7ddafc6ddadc8dcb1c9deb0cae1b1cbe0b4cae0b0cbdeafc9deb1c8deb2c9ddb2cadfadc9dfae *c8deb1cae0b2c8deb1c8deb0c6ddb3c9e1b2cbdeb0c8deb1c9e1b1cadeb0c7dfb5cbe0b5cadfae *c8ddb2c9e1b1cbe0afc9dfb4cbe2b4cbe0b4cbdfb4cbe0b3cbddb6cce0b5cbdeb2c8deb2cbe0b8 *cce0b5cbdfb6cbdcb9ccdeb6c9dfb6c9deb5c9deb7cae0b7cadfb7cbe0b6cbdfb7cadfb6caddbb *cbdeb6cbdeb4cadfb1cbe1b5cbddb4cbdfb6ccdeb1cadeb7cbe0bacbe1b5ccdfb6cbdfb6ccdeb8 *cee0b3cce0b7cee0b6cee0b6cce0b9cde2b5cce0b5cbe0b5cbdeb6cbdeb6cce0bbcce0b5ccdeb9 *cbe1b6cbdebbccddb8ccdeb9ccdfb8cbdfb6cbe0b9ccdfbdcddfbccde1bbcbdfbacce0bbcfe2ba *cfe3bbcde0b7cde1b9cde1bacde0bbcbe0bacbdfb8cbe1b9cde0b6cbdeb8cadebccce0bacce1b6 *cbe0b8cbdeb8cce0b9cbdfb7cadfb9cbdfbbcbe0bbcbe0bccbdfb9c7deb1c2d7aec5d8b1c7dbb1 *c3d7b4c5dbb6c9dbb8c6dbb6c6d9afc3d7acc1d8a6bfd4aac0d4aac1d5abbdd1acbed4abc0d8b1 *c2d6b2c1d6b1c2d5b1c3d4b6c3d8b5c4d6bac4d5b8c4d6b6c5dbb5c7dbb4c3d6b5c4d6b3c4d6b6 *c5d7b8c3d6bbc6d6bcc9dbbac8d9bdc7d6b9c3d4b6c6dab6c6d6b9c7d7b7c7d6b9c7d9b9c7d8b9 *c7dbbbc3d6bcc7d9b7c6d6bdc6d8bbc6d8b9c6dabbc5dcbcc7dbbbc9dbbdc8d8c0cbdbc0ccddc2 *cbddc3ccddc3cedfc3cce0c6cee0c6cfdec6cfdec6d1e0c7d2dcc8d3e2cad4e2ccd3e4cdd3e2cd *d4e3cfd5e1cbd4e3cad2e2c6cfdec6d1e1c3cddfc2cbddc3ccdec2caddc0c8d8bdcad9bac9dabd *c8d8bcc7dcbbc7d8bdc6d8bbc9dbbbc7d9bbc7d8bbc7d8bbc7dabdc7dabcc7d4bcc7dabdc7ddc1 *c9dbc1c9dcbec9d8bdcad8bdc9dbbecbd9bfc7d9bbc6d9b9c6d8bac7d8b9c6d8bac6d8b9c5d3bc *c7d7bac6d9bec6d7bbc6d8bbc7ddbbc5d9bcc6d7bbc7dab9c5d9bbc4d8bec7d8bec8d9c1caddc1 *c9d9c6ccdcc5cedec5cedcc3ccdbc3cbddc5cee0c7cfe1c9d0e3ccd3e3ced7e4ced8e4d1dae5d4 *dbe6d5dce6d7dce6d6dbe7d7dde7d7dfe8d8dee9d8dee7d6dee7d8dee8d6dee8d5dce8d4dce6d3 *dae7d3dbe7d4dae6d2dae5d3dae6d2dae6d1dae7cfd8e6d1dae6d1d8e6d3dce7d3dbe6d2dbe6d1 *dae6d1dae6cfd8e7ced7e4ccd6e6c8d3e2c2cddfbdcbddbbc9dbbcc7d9b8c7dab6c3daaec1d2ae *bfd5aebbd3a4b5d1a5b3caa0b1cba4aec598b1cd9aafc898adc99baec69daec69fb1cb9cafc79e *b1cb9dafc99fb0cb9faeca9eafc79cb0cba1b3cca4b1c6a1b4ca9eacc8a1b6cba6b2ca98a7c19c *a3b4a6b1b1bfc9cdc2ccd1a3c1d29fbbd6a0bbd3a1bbd19ebad395b7d3a0b9d2a1b8d199b7d1a8 *bed5a4c1d6a4c0d6a2bdd493b6d38ab0cb93aec98dacc98fafca8db1cb93afc795aec893b1ca97 *b1cc9bb2cd99b0ca9cb3cba0b4ce9fb5cea1bacda3b9cca0b9cda4b9cda2b9cea2b9d2a5b8d0a5 *bbd0a3bcd0a8bdd0b0bfd2b1c0d4b3c5d8b5c2d6acbdd3a8bbd0aabdd3a5bcd3aebdd0abbbcea4 *bacea4bbd1a5bacea5b8cfa1b3cd9db3ce9eb3cb97afc99fb0c99caec99eafc697b1cb97afc796 *afc791aec895acc892abc38daac68eaac493aac692aac491abc894adc693abca92adc793adc495 *abc697aac78fadc58eacc798adc699adca9cadc795aec594aec899afc89ab0c8a0b2cc9fb4cca4 *b3cca4b6ccaebcd1adbcd0adbbcea9b7ceaebdd1adbdd1b0c0d2afc0d2b4c5d1bbc6d8b7c3d3bc *c6d9bac6d9bdc7d8bdc8dac0ccddc1ccdec2cedec3cfdec4d1dec9d0dfc6cfddc7cfdec8d1dec7 *d1e0c7d2dfc7d3e0c5d0ddc7d1dfc9d2decbd3e1cbd3e2c9d6e3cad5e2cbd6e5ccd7e5ced6e3cf *d7e2ced8e4ccd6e5cbd7e5ced8e5ccd8e6cedae5ced9e4ced8e6ccd4e3cbd5e1c7d3e2c1cee0c0 *cde0bdcde2c0ccdebccadbbbc9e0bccbdbbec9ddb8c8dcb3c7ddb1c6dbb0c7dbaec6ddb1c8dbab *c4d9b3c6d9b0c7dcadc6ddadc6dba8c6dcabc9ddaec8dcaec6daadc5dcb0c7dcb0c7dcaec7ddb0 *c7dbafc6dcb0c6d8afc7dbb0c8dcadc5dcaec6dbacc6deaec8deadc7ddacc7dfb4c9dcb4c8d9ae *c7dbb5c9ddb2cbddafc6ddb2c7dcb5cadcafc7dbaec7deafc7dab2c7dcaac6d9b0c7ddacc7dab1 *c7ddb5c7ddb3c8dcb4c9dcbbc9deb6cbdab6cbdeb8c8ddb9c9dbb9c9dcbbccdfbccddebccddfc2 *d0dfc1cedfc1cedcc3cee0c4cfe0c2cee0bdccdfbccce0baccdcb5caddb2c8deb2cbdeb2c9dfb2 *cbdbaec9deb0cae0b0c9e0aec9deb0caddaec6d8b6c8dcacc9deacc9ddafc9ddacc9deaec9dfaf *c9ddafc9ddafc8dcb0cadcaec8ddafcaddb1c9ddb4cadfb1c9ddb1caddb2caddafc8dcb0c8deaf *cae0accadeacc9ddacc9dbafcadeb1cbdcafc8dca8bcce97a2abb1c7daaec6ddb0c7dcafc8dcaf *c7dcb1cadeadc9e0acc7dcb2c9deb4cce0b4cbdeb2cadfb5cadfb6cae0b4c9ddb4cbdcb3cbe0b1 *caddb1ccdeaec7deb5cbdfaec8ddb2c7dbb1c6dbaec6e0b1c9deb4cadeb1c8ddaec8ddb1c9dbb1 *cbdeb1cbdeb0caddb2cbdfb1cadeb4c9e0b4cadfb1c8ddb1caddb4cbdeaec9deb1cadfb2c7ddb1 *c9ddb1c8d8b0cadeb0c8ddb2c9e0b4cbdfb4cbdeb4ccddb5cbdfb2cbdcb3cbdcb3cbddb2cbdfb5 *cddfafcae0b2cadfb1c9ddb3cbdfb4cbe2b6cbe0b6cbdeb3cce0b7cae0b6cbe0b6cbdfb4cbddb4 *cbddb6ccdeb6cce0b7ccdfb4cadcb6cadeb6cbddb9cbdebbcbdcb8cbddb7cadcb6cadcb6c8ddbc *cbdfbacbe0b7ccdfb6cddeb4cadeb5cbdbb6ccddb6cadfb5cadfb4cbdeb4cae0b8cce0b6ccdeb6 *ccdeb6cddeb2caddb6ccdeb9cde0b9cce0b9cee0b7ceddb6cbdeb6ccddb6cadeb7cbddb6cbdeb6 *cce0b8cce0bacedebbcedebeccdfb8ccdfb8c9ddbbcbdebecbe0b8ccdfbacee0bbcee2b9cfe1bd *cee0c2d0e0bfcddcc0d1e1bdd0e3bccfdfbdcee2bccde2bbccdfb8cbdeb7cbdfbbcddebccbdfb7 *ccdfb8cce0b3cee1b6cddfb7cbddb7ccdeb7cbdeb5cbddb6ccddbacaddb7c7dbb7cbdeb6c9dcb6 *c6dbb8c7ddb5c6d8b2c5d8afc5dbb1c6dcb2c6d9adbdd3b0c5d7abbfd4aac2d3b0c3d5aec2d6b0 *c3d7b0c2d7b3c3d5b4c4d5b6c5d6b2c5d5b7c5d7b6c3d5b8c6d9bbc7dcbac8dbb6c7dcb4c5d7b6 *c7d6b4c3d1bcc6d5bac6dabdc6d8b9c6d6b9c9d8bbcbdbbdcad9bdcad8c0c9dabfc9dbbdc9dbb8 *c7d8bac9dbbeccddbdc9d8bbc9d8bdc8d9c1c9d8bdc9dabdc7dbbdcbd9c1ccdbbeccdebecedfc3 *cedcc3ccdec5cfdcc6cfdec6d0dec8d2dfc6d1dfc5d2e1c6d1e2cad4ddccd4e0cfd7e3cdd8e3cd *d8e3cdd9e2ccd6e2cbd6e2cad4e2cbd5e1c9d1e0c7d0dfc5cfdfc3ccdec3cce0c3ceddc0cbddbf *c9dac2cad8c1cad6bec9dabec8dbbfcad8bfcadcbfcbddbcc9dabecbdbc2cedac1cbdbc3c9dbbe *cadbbfc9dcc2cadac2c9dac2cbdbc3ccdbc4cbdfc4c9d8c2cadbbdc7d9bac6d8bbc5d6bbc7d4bd *c7d8bdcadabdcadbbcc9dabdc7d8bfc8d9bcc7d8bbc8d8bcc9dcbdc6d5bfc8d7bcc8d9bfc8dabf *cbdbc1cbd9c2cddcc8d1dfc7cedec6cfddc9d1dec9d0ddc8d0dec9d1e0cbd4e2ccd6e0ced9e5d2 *dde7d6dee7d8dee8d8dee6d8dee7d8e0e8d9dfe8d8dfe7d8dee8d7dee7d8e0e8d7dee7d8dce8d6 *dde6d3dbe6d0dce8d1dce7d3dae5d4dbe5d3dbe5d3dbe7d4dae6d3dbe6d3dce6d5dee6d3dce8d3 *dbe7d1dce6d0dae6d0dae4d1dbe6ccd6e1c7d4e2c4cedfbbc8ddb7c3d8b6c3d8b2c2d7afbfd0ae *bbd0a1b4cca4b6cea2b5cc9dacc69bb1cc9aafcb9cb1cba0afc88faac698afca98aec59daec89f *afc99eaec4a1b0c7a0b1ca9fb3cb9fafc7a1b0cba6aecba4b3cba1b2cb9fb0cba6b5cca4b9c8a8 *b5cba5b0c5a4b5b9bfcacdc3ccd2a2bdd3a5bed1a2bdd2a3bcd59bbad49ab8d09ebcd39bb6d0a4 *bbd1a3c1d99fbed6a7c0d89fbbd691aec98daec98aaec88caeca91aecb94adc896afcb98b1ce99 *b1cb9ab2caa0b3caa0b2ca9fb5cca4b3caa2b7cda5b6cea2b7cea4bbd3a2b6cfa4b9cda6b7cea3 *b7d0a5b7cfa9bcd2aabcd3aec0d6b5c6d7b7c7d8b7c6d7b2c2d8b0c3d3aabed7adbcd3aebdd2b2 *c0d2adbdceaebfcfb0bcd2aab7d0a1b3ce9eb1ce9eafcba0b2caa1b4ce9db6ce9db3cba1b3ce9c *aeca96adc891aec696aac595afc992acc797acc699adc597abc296acc591acc691aac694acc78f *adca93adc994acc793acc698acc69bacc598acc89eacc69aadc793b0cd9eb2cb9fb4c9a0afc9a0 *afcca4b5cca7b6cbadbbd1afbaceaeb9d1adbbd0b1beceb1c1d1b6bfd7b3c1d3b6c2d1b9c6d9bb *c8d8bcc7dbbcc8dbbfcadcc0cadbc1d1dec2cddec3cdddc2d0dfc6d0dec7d0e0c8d1dccad3e1cc *d4e0c9d2e2c9d2dfc9d1e0c9d2e0cad3e0cad3e0ccd6e3ccd7e3ced7e3cbd6e3ccd7e5cfd7e4d3 *dbe5d3dbe4d0dbe6cedce5d1d8e5d3dae7d1d7e7ced9e5ced9e6ced8e5c9d4e5c8d4e2c9d3e2c7 *d1dfc1cdddc2cddebfccdfbdc9dbbdcadebbcbdbbbc9dbb8c7deb6c6ddb3c3dab1c4dab3c7ddb4 *c8d9b1c6dbb5c6d8afc5dab0c5d8adc4d9adc6dcafc6dcacc6dcaec7dbb0c7dbb2c8ddaec5ddb1 *c6dcb3c6d8b2c6d9aec3d9afc6daafc6dbafc6dcb0c7daadc6dbadc3dcafc6ddacc4daaec6dcb1 *c8ddaec7ddb6c7deafc7dcb3cadeadc7ddb1c4d9aec6dbb6c7ddb2c6dbb3c6dbb1c6dbb6c8e0b6 *caddb5c8dbb9c9dfb8cadbb9cbdebecbdbc1cdddc0ceddc1cfe0bfcddcc1cedcc1cedbc3cedec3 *cfe0c6d0e0c7d1e1c5cedcc5d1e1c8d1e0c5d0e1c3cedfbfcbdebccbddb5c9dcb5c9ddb3cbdeb4 *cadbb2c9dbb0c9dcb1c8ddadc7deb4c7deb2c9dcafc9dbaec8ddadcbdeafc9dcb1c8deb2c9deac *c6dbafcbdbadc7deb1cbdeb3caddb2c8ddaec9dbb0c8dab1c8dbb4c9dcacc9dcadcadcb1c8deb4 *c8dfb1c7ddb0c9deb2cadcb3c9dcb1c9deb3cbdeafc8dfafc6d99fa3aeb6c9d8b2c9dcaec7dab1 *cadfaec8ddb0c8deb2cadeb3c9e1b1c9deb3c9dcb4cbdcb1cbdcb6c9ddb2cbdeb2c9dab5cbdeb8 *c9e0b4cadfb3ccdeafc7ddb4c7ddb3c5dab1c6d9b4c6dcb2c7deaec7dab3c9dab1c7dbaec7dbb1 *c8dfb0c9deb2c9ddafc9ddb2c9ddb0caddb3cbdeb3c9dfb3c8dcb1c9ddb1c8dfb4cbddb1c9dfb2 *c8deb2c7d9afc8dcb1c8deb2cadeb4c9dfb6c9dcb8cbe1b7cbdeb6cadeaecadeb1cbddb2caddb1 *c8dcb3c8ddb3cbdeb0cadfb3cae0b3cbdcb1cbe0b1c9deb7caddb2cadeb5c9deb5cbe0b5cbe0b2 *c9deb4c9dcb5c7dbb8cbddbacbddb7c9dcb7cadcbacadebacaddb9cadebcccddbccdddbacbdebd *c9dcb7c7dcb4c8dcb8caddb5c9deb7c7dfb8cddebaccdfb8cbddb8ccdfb1ccdfb8cce0b7cbe0b6 *cce1b7cce0bacedeb6cedfb6cddeb6cde0b3cadfb7cddeb9cbe0b9cae0bccbdeb6cadebbcedebd *ccdeb7cbdeb9cbe0bacce0bdcbdebdcee0bbcde0baccdebdccdebcccdfbdccdebccde2bfcee0be *cde0c2cfe0c5d3e2c5d1dfc4d1e1c0cde1c1cee0c0cee0bbccddbbcbe1b8ccdfb8cde0bccee0b9 *ccdfbbcee0b7ccddb8cbdeb9cde1b6cde1b5cbe0bacbdebbcbddbdcbdebccbe0bacbdeb9caddb6 *c8dbb8c7dab1c6dcb3c7dcb0c3d6b6c5d8b5c6d8b1c4d9b1c3d9afc2d8aec3d8adc3d8b0c4d8ad *c1d7afc2d6b1c5d6b5c5d7b5c7d8b5c5d7b6c4d8b8c4d6b9c8dabac6d7bac7d9b7c7d9b8c7d6bb *c7dbbcc8d8bdc8dabdc9d9bbc9dabec8d8bbc6dac0c7dbbbc8d8bdcbdcc0cadcc2cadcbdcbddbf *cbddc0ccdcbdcbddbdcbddbdcbdcbfc9dbbfc8dcc2cbd9c1cbdac1ccdbbecbdebfccdfc2cddec1 *ccdec3cedfc6d1ddc6d1dec8d2decbd4e0cbd1e0c9d1dfc8d2e1cbd4e0cdd5e2ccd3e2d0d8e3d1 *dae5d3dae4d3dae4d1d7e2ccd6e1ccd6e1ccd5e0cbd6e2c8d2e0c7d2dfc7cfe0c6cde0c6cfe0c2 *ccdec3ccddc4cdd8c5ccddc3cbddc3cce2c1cbdcc2cadbbec9dbc3cbdec1ccdec3ceddc6cdddc6 *cedbc6cedbc7cedcc5cedec3ccdbc5ccdec6ccddc6cfe0c5cedfc6cee1c1ccddc2cadcbec8d8bd *c9dbbfc9ddc2c9dbbfcbdcc3c9dabec9dcc0ccdbc2cbdbc3cadcc2cbdcbfc8dac1c9d9c1c8dcc1 *cadbc4cddac1cbdcc1ceddc7cedec9d1dfc9d0decbd2e3cbd3e2cad3e4cbd3e0ccd6e2ced7e2d0 *dae4d3dbe6d3dde7d6dde8d9dee6d8dfe7dbe0e5d8dfe6d9e0e8d8dee8d7e0e8d8dfe8d6dee8d3 *dce7d3dee8d5dce6d2dbe6d1dce5d2dae4d6d9e4d3dbe4d4dce6d2dce8d4dbe6d3dae5d3dce6d7 *dde6d3dbe5d2dbe6d1dbe6d0dae6d0d8e7ccd8e4c6d0debbc7d6b5c2d4b0c0d5aabcceacbbd3a4 *bad1a3b6cea0b1cd9fb4cb9baecb99adc99cb0c799afcc97b0caa0b2cb9dafc99cb1c79eaec69e *b0c99fb0c9a1afc8a1aec6a0b0cca2b5cb9eb2cba4b2c9a5b3c9a2b1cba8b7cba9b7cbabb9cda9 *b5cda9b7cdacbacbb0b9bcc0caccc4cdd1a1bcd5a1bbd69fbbd6a1bcd6a0b8cfa4bbd597b3cfa1 *bad3a3b6d198b7d39db9d6a2bdd6a1bbd590aec98daec88badc896b1cb91afcc90aecc96b2cb97 *b2ce99b5d19ab2cba4b5cda4b6cda3b4cfa1b6cda5bad0aabcd3a8bad3a4b9d2a1b6d19bb4cda2 *b5d0a5b1cfa8b9cda9bbd3aabdd1adc0d4b2c2d5b3c3d7b5c3d9b9c3d8b3c6d8b5c5dcb2c1d5af *bed3aebdd1aabed6afbfd4b1bed6aebcd1a9b9d1a6b8cea7bbcfa5bbd0a3b9cfa3b5cea3b3ce95 *afce98afca9cadc996b1cb9aaecc9eabc69baec798acc794acc997acc89daec799aec795adc896 *acc695acc995adc998adc598adc69ab0cb94adc999b0cb9cafcca3b2c99eb2c99eb0c7a1b4cda2 *b3cba4b3cca4b6cda9b8d1abbbd1b2c0d1b2c0d3aebdceb2bdd3b5c4d8b1c3d6b3c4d8b5c5d3b5 *c3d6bac6dabbc6dbbdc9dbc1cbdbc2d0e2c7cedec4d0ddc8d1dfc8d1dec7d3e1c9d1e1c9d1e2cb *d4e3ccd5e3cdd6e4ccd3e0cbd3e2cad3e1c9d3decad2e0ccd4e5ccd5e3cfd8e5ced7e3cfd8e5d0 *d9e5d3dae7d1d8e5ced9e5cfd9e7cedbe6d2dbe7cdd9e5ced6e4ccd6e5c6d4e2c7d1e2c5cfe0c6 *cfe0c1cedebecedebfccdebbcbdebacbddb9c6dbb9c7d9b6c6dcb6c5dbb4c6dbb0c4dab1c6dbaf *c1d9b0c3d8b3c3d8afc3d8b3c3dbaec2daafc3d9aec5d9afc6dbaec4d9b2c5ddb3c3d9b4c7dab0 *c7ddb1c7ddb4c5dcb3c6d8b2c4d7b0c3daaec4d9b3c5dbb3c4daaec5dbaec6ddaec6d7aec7dbb2 *c4dcb6c4d9b1c6dcb6c7deb7c8ddb3c8dfb6c9e0b2c7dcb4c9dcb7c7ddb6c7dbb6c7dbbbcbdcbd *ccdebbc9debcccdec1cbddc2ccddc3cbddc3cedbc3cedfc1cddfc5cee0c2cee0c4cee1c5d1dfc6 *d0e0c6d0e1c4cedec5cedec6cfe2c7d0e1c5d0e2c6d0e0c3cedebfcbdbbac9dfb2c9dfb5c8ddb3 *c6dcb4c9deb1c7deb6c9dbb3c6dbaec4dbaec4d9b1c6dbacc3daaac5deb0c7dfaec7ddb1c8dbb1 *c6dbb2c6deaec7dfaec6ddadc6ddaec8e0afc6dfaecae0b5cbdeb6c9ddb2c8dfafc7deb3c7dbb3 *c9ddb0c8deafc7dcb4cadeb2cbdfb1c9ddb1c8ddb1c6dbb1c7ddaec6dca9b9cbb3c7ddb1c7dcb0 *c7ddb5c9deb4c8dbb0caddb1c9ddb4cadfb2cbe1b1cbdfb4ccdeb8cbddb8c9ddb6cae0b6c9dbb8 *cbddbac9ddb9caddb8c9ddb1c8e0b4c7ddb6c6dbaec6d8b0c6dbaec7dcaec7deb1c7e0afc7ddb2 *c9dcb4c9ddb1c8deb3c8deb0c6deafc9ddb3c9deb1c7ddb0c6dcb4c8dcb1c6dcb3c7dbafc7dcb1 *c7ddb2c7deb1c5ddaec7ddb3c8ddb4c8dfb6cadeb3c8ddb2c9e0b3cadeb4cbe0b3cbdfb3cadeb6 *cbdfb3cadfb4c9dfb1c8deaec7ddb7cbe0b5c9deb4c8ddb4cadeb1c9deb2c8ddb5c8deb3c9deb3 *c8deb6c8ddb6ccdfb6c9dfb6cadebbcbddb9cbdebbcbdcbdcadebbc9dbbecadcbcccdfbacadebb *cbddbac9ddbccadebbcbdeb7cbddb7caddb6caddb7cbe0bacddbb5c8ddb6cbdeb9cbdfb7cadfb6 *cbdfb6cbe0b8ccdfb4ccdeb4cbdcb6cadeb7cbe0bbc9e0b6cbdeb8ccdfb5c9ddbbccdebdcbdebc *cbdebbcbdebfcddebacbe0b9cce0b9cbdfbdcedebbcedeb7cce0b8cbe0bacde0bacbdfbbcddfbe *cee2bdcee1c3cfe2c2cfe1c5d1e3c6d1e3c4d0e2c6d2e2c3cfe0c1cde0c1cde0bcccdfbdcbe0bb *cde2becce1bdcee1bbcde0b9ccdfbacee0bacddfbbcde1b8cce0bbcce0bccde0bbcde2bbcce0ba *c8ddb6c9deb7c7dbb1c6dcb1c5dbb6c7dbb4c4dcb5c5d9b5c6d9b5c5d8b1c3d6b5c3d7acc4d6b1 *c3d7afc3d9b1c6dbb3c6d8b4c5d8b6c8d9b5c6d6b7c6d9b4c3d6b1c2d7b5c6dab9c5dab8c6d7b7 *c7d9b6c5dabbc7d9bbc9d9bcc8dcbec9d9bdcaddc0ccddc2cbdbbfcbdbc1cbdcc3cbddbfc9d9c2 *cbdbc3ccdbbbc9debfcddec2cedcbcccdcc0c8dbbcc9ddc3ccddbecadcc1cbdec3ccdec2ced9c3 *cddec3cedec4ceddc4d0dec7cfe1c8d0dfcbd3e2cad4e2ccd6e2cbd3e2cbd1e1ccd5e2cbd4e2cd *d6e3d0d8e5d4dbe5d3dde5d1dce4d2dae5ced6e4d0d4e4cdd5e3cbd4e2cad2e1c8d1e2c6d0e2c7 *d0e0c7cfdcc6ccdfc6cbdec6ccdec4cbdec3cadec2cee0c1cddac5cedbc3ccddc6cddec5ceddc6 *ceddc8d1e0c8d1e0c9d0dfc7d1dec7d1dfc9d1decacfe1c6d0e0c9d0e0c9cfe0c6cde0c2cddcc2 *cbddc1cbddc3cadbc2cadcc2cadbc2cadac6ccdfc1cee0c4cddbc1cbdcc4cbddc5cadcc4cbdec2 *cbdcc4c9dbc6c9ddc3cedfc4cedec7d1e0cbd1decacee0cbd3e3cad3e3cad1e0cdd4e3cdd4e4cd *d6e3cedae4d2dae4d4dde7d7dde6d6dde7d8dee6d8e0e8d8e0e7d7dee8d8e0e9d8e0e8d6dde8d6 *dce7d5dbe7d5dbe8d6dbe7d4dde7d5dce6d3dce6d4d9e6d2dbe6d3dbe7d2d9e6d3dbe6d3dae6d3 *dce6d3dce6d3d9e6d2d9e8ced6e3ccd7e6ccd6e5c6d3e0b9c9dbb0c2d8abbed4a7b9d1a4b6d0a1 *b2cea0b1c99db0c69eb1cb9ab1ca97aecb99aeca9aaac7a1aecb9fafc79db1cba1afc7a1afc99e *afc8a2afc8a2b0cda7b1cca6b1caa4b2cba2b5cb9eb1caa5b3cca5b5cca6b5cda5b5cea4b8cda8 *b8ccabbacfadb7cdabb8d0b0babfc1cacfc4ccd2a2bfd6a4bed4a3c0d5a4c0d6a0b9d19cb9d39f *b9d69cbad49cb6d0a4bbd6a1bcd39ab9d3a0bbd592afcc8cabc993aeca8fadcb92b0cb90b0ce97 *b1cb94b2cc9ab1cb9fb5cda3b2ce9fb3d2a2b7d19fb7cfa1bbd3a4bcd3a7bed5a6b6d1a2b7d19d *b1cc9db0cca1b6d0a6b9d3a5b9d3aabfd2b0bfd1b3c1d7b5c3d6b5c3d8bbc5d8bac6d7b9c9dabd *c9d9b5c1d5b0bcd1aebfd4adbfd3aebdd3aabdd1aabcd3aabdd5aec1d5aec0d6b1bed4a9bad19d *b1cb9cb3cca0b2cb9daecc98aec996acc890abc69aafcc98b1cc9cb2cb9db1cba2b0cc9daec997 *b0cc9eb1ca9fafca9cb0cb9aacc998afca9caec79ab1cb9eb0c99eaec5a2b1cb9faeca9fb1cca0 *b1c9a4b1cdacb6d0a9bacfb0bed1b1bdd4b5c2d2b4c4d8b1c1d3b5c1d4b5c3d9b6c3d6b5c6d8b7 *c4d7bac6d8bdc8dcbdc7dbbfcaddc2ccdec3cdddc8d1dfc5d0e2c9d5e3cad3e2c9cfe0cad2e2cb *d3e1ccd4e2ccd5e3ccd7e5cdd6e2ccd7e4ccd7e4cdd5e3ced6e4cdd5e4cdd9e5d0d9e4d0d9e6d1 *dbe6d3dde7d1dae6d2d8e6ced8e4cedae5ccd8e4c9d5e5cbd6e3c9d1e2c6d1dfc1d0dfc2cbdbbc *c8ddbac8dcb8c7dbb0c4dab2c4d8b4c6dab6c6dbb1c3d8b3c1d7abc2d3afc1d8aebfd7abc1d8ae *c1d6aabdd7aac1d6acbcd6aec0d6acc0d7afc1d8acc1d6acc3d6afc4daafc1d9afc2d7b2c3d6b0 *c4d8b0c4d7b3c6d9b3c2d7b0c3d8b5c5dab5c5dbb0c1d8b0c5d9aec3daaec5d8aec2d7afc4d7b6 *c6dbb5c4dbb9c7dabbc7ddbdcbdbb7c8ddbac9dbb8c9debbc9ddb9c9debfcce0bdcce0c1cce0c3 *cbdfc3cedfc5d0dec6cfe0c4cee0c5d0e2c4cee1c9d1e1c7d0e0c4d1e0c4d0e1c2ceddc5d1dec5 *d1e0cad4e0c8d2e3c7d0e3c6cee0c5d0e0c6d1dec4d1dec4d0dfc3cedfc0ccdfbcccdfb6c8dfb1 *c8ddb6cbddb1c8ddb5c6daafc7ddaec6dcadc3d9b4c4dab6c6d8b3c6d8aac6daabc6ddb3c9dfaf *c7dbb1c8deb1c9deb3c8deb2c7daaec7dcafc9dbb4c8e0aec9e0aec9ddb2c8deafc7ddb2c8e0b2 *c9dbb1c7dcaec6dbb0c8dfb1c6dbb2c7ddb0c7dfb3c8dfb2c7ddb5caddb5c8dbaec2d5afc5dab2 *c9dcb6cadeb3c9ddb3c8deb6ccdfb6cdddb7c9ddb6c6dbb6c8ddb8c8ddbac9debbcbdfc1cbe0c1 *cbdbbbccdcbdc8debbc9ddb7c7d8b6c6dbb6c7dbb6c7deb4c7dbb7c7d9b1c6dbb2c6dab1c6dbb3 *c7dbb0c8deb1c6ddb0c6ddaec5d9b5c7dcb2c6dbaec5d8b1c4dcafc6dcb0c5dbb3c5dbafc7deb5 *c7dcb3c8dcb2c7ddb3c8ddb5c7dcb4c9deb3c7ddb3c9e1b6cae0bbccdcbcccdeb8c9dbb3c9dcb1 *c7dbb3c6dbb6c7deb7c9deb5cadeb5cbe0b6c7d9b5c8ddb2cadeb5cadeb4c8dbb1c9e0b3cadeb6 *cbe3b6c9deb3c5d9b5c9dbb8c9dcbac9dcbfcbddbbc7d7bdcadbbdcaddbeccddbfcbdebfccddbe *cadfc0cbdbbfcadbbecbdfbdcce1b9cce0b8cddeb7cadeb9c9debccaddbccadfb8cbe1b6cadeb6 *caddb1caddbacbdeb6cbe0b6cbddb7ccddb5cbdfb4cadeadc7ddb8cbddbacce0bccaddb7cbdebb *cbe0bbcbddbbcbddb8cbddbbccdfb9cce0becedebccbdfbbcce0bbcddeb8c9debacce2bdcde0bf *cddfbecddebfcee1c3d0e1c6d1e1c5d1e0c6d2e2c7d2e1c7d2e3c8d2e2c7d1e2c3cfe0bfcddfbd *cddfbfcee0c0cde0becee0bdcde1b9cbdebccee0bdcee1bbcce0bdcce1bbcce1bacce0b8cbdfbd *cce0baccdfbaccdeb7caddb7c7dbb6c8dcb8c7d8b6c6dbb7c6dab3c5d8b7c6d9b3c6d8b6c6d8bb *c6dbb6c3dab1c4dbb3c4d9b3c6dbb5c7dabbc7dab7c7dab6c6d9b7c6dbb6c4d9b9c6dab9c4d8b5 *c4d6b6c5d9bbc7dabac7d8bcc7dbbfc9dcbccadabccad8bdcbddbfccddc2cfdfc3cee1c3cedec2 *ccdec3c8d8c3ceddc1cddbc1cedcc3cbdcc1c9ddc3cbddc2ccdbc1ccdcc2ccdac2ccddc2cbdfc3 *cedfc6d0e0c9d0e2c9d2e1c9d3e2cbd5dfcbd6e2cad5e0ccd7e0cbd6e2cdd6e3ccd3e3ced6e3ce *d5e1d0d7e2d1dae3d2dae4d1dbe4d2dbe5d1dae5d2d9e6d0d8e5d0d6e3cbd4e1cad5e2c7d2e1c9 *d1e2c8d2e2c7cee1c7d1e2c8cfddc9d1dfc6d0dec6d0e0c5d0e0c4cedfc4cdddc7cfe1c6cfe1c8 *d1dfc9d1dfcad1dfc9d1e0cbd2e0cbd1e0ccd4e1ccd5e3cdd6e3cdd5e3c9d3e1cad1e1c7ccddc7 *cfe0c6cfdec3cddfc5cedfc6cddec7cedec5cedec3cbddc4cfddc4cddec6ceddc6cee0c6cee0c6 *cde0c5ceddc5ceddc6ceddc7cedfc6d0ddc7d1ddc9d1e3c9d0e2cdd6e2cbd2decbd3decbd5e3cb *d6e0ced6e4ced6e5d0d9e7d5dde7d6dee7d7dee6d5dde6d3dce5d8dee7d6dde7d8dee8d7dee8d6 *dde9d8dde6d3dae5d3dce6d3dbe7d5dce7d3dae5d3dae7d3dbe6d4dbe6d3dbe6d2dae6d1dae5d1 *d9e6d2dbe6d2d9e6d3dbe8d1dae7cdd8e3c8d4e1c1cddebbc9dcb3c2d8afbdd1a6b8cfa8b9cca7 *b4cba0b1cb9bb1cb9db0c799adca99b0cb9bb0cc9caac99eafc9a1b2cd9bb1cb9aabc8a1b1cc9e *adc89cb0c7a1b2cb9db2cba2b2caa0b3cea4b2cca1afcca3b2cba6b7cca9b5cea7b6d0abb8cdae *b9cdaab7cdaebcccaebcd1aeb8cdb1babec0cacec4cdd2a1bcd1a3bed6a2bdd9a1bed89fbed6a0 *bbd39cc1d5a4c1d499bbd49ebbd39fb9d3a1bbd5a1bed7a1b9d399b4cb8fb1c990aecb90b1cd91 *b0ca96b2c9a0b4cc9eb6cda2bcd199b5cd9fbbd1a1b6cda5bad1a3b9d0a3b7d2a6bcd0a6bbd1a2 *b6cc9eb5cfa0b6d0a0b7d1a3b9d0a7bdd3aec1d3b0c1d3b3c3d5b3c5d5b4c2d5b5c5d7b8c8dabb *cadeb9c9deb6c7dcb1c1d8afc2d4b1c2d6aebdd2adbcd1b1bbd1b1bfd1b0c1d6aec4d8b1c6dbb0 *c1d3aabed3a4bacea1b7cea4b6cc95b0cb98afc999b1ce99b2cc9cb4cc9cb6ce9db3cc9eb4cc9f *b3cd9fb2caa3b6cc9fb6cfa3b6ce9fb4cc9db0cc9cb2ca9ab0c99ab2ca9bb2cca1b5cfa1b5cea6 *b6cc9fb5caa3b7ceadbccea9bbd1abbdd3b2c3d6b7c6d9b2c5dbb6c6dab3c6d9b1c3d3b5c6d5b6 *c7d8b6c7dbbdc9dbbccad7bdcadac2ccdbc3ceddc6d0dfc4cfdfc8d1e2c9d4e2cbd6e3cbd5e1cb *d7e5ccd9e5ccd7e3ced7e4ccd7e5ccd7e2cdd7e4cdd7e5cfdbe6cbdae6cfdce5cfd8e4d2dbe5d3 *d9e5d5dde6d2dde7d1dde6d1dce6cdd9e5c9d5e3c6d4e2c6d3e2c6d1dfc6d2e2c0cedebccbd8b9 *c8ddb4c6d6b3c6dab6c4d8b0c4d6b2c1d1aebdd4a9c0d4a7bbd5abbdd4a8bfd4adbdd2a9bad1ab *bccfabbfd0a7bcd3acc1d9aac1d8abc1d6aec1d4aec0d3abbdd2adc0d3b0c2d4b0c4d8afc4d8af *c3d9b5c5d7b1c5d8b2c4d8b6c5d8b4c6d8b3c5dab0c3d6b0c3d7b5c6d7b4c6d6b6c7d8b2c5d8b4 *c7d6b7c7dbb6c8d9b8c7dbbbcbdbbcc8dbbccadbbbccddc2cddcc1cdddbbccddc0cedfc7d2e1c3 *d1e0c7d1e0c9d3e1cad4e0c9d4e2c9d4e3c7d1e1c7d2e1c7d3e2c7d3e1c8d4e2c8d4e2c7d3e0c5 *d0dfc8d3e0cbd4e2cbd4e1cad5e2c6d1e0c4cedec2cedec3ceddb9ccdebdcedfbdcddcbccadeb9 *cadeb6c9deb7cbe0b5c9dbb6c8d9aec5d9b2c4d8adc3d8b2c4d8b0c6d9b5c4dab3c7dab3c8dbb4 *cbdcb1c8d8b1c7dbaec7daaecbddacc9dcaec7dbafcaddb0c9dfb1caddadc9ddafc8deb1cce0b4 *c9deb5c9deb6c9dcb6c9deb2c9ddb4caddb7cadab2c8ddb1c9deb3c8d9b8cadebacadebbcaddb8 *cadcb9cbdfb7cadeb7cadfb5c9ddbacbdcbfccdcbdcadbbdcbddbacbddbdcddfbdcbddc1cddfc3 *cee1bfcee0c0cdddc2cddebdccdcbbcadab6c8ddbbcaddbbc8dbb8c7dbb6c7d9b4c7dcb7c8ddb5 *c9ddb6c9dcaec6dbb4c7d9b1c5dab4c7dab0c6dab2c6d9b1c6dbb5c7dbb2c4dab2c6dab1c7d9ae *c6dcb6caddb3c9dcb4cadcb6cbdcb3c7ddb5c7ddb4cadeb4c7ddb4c9ddb6cbdebbcbdcbbcce0b6 *caddb6cadbb6c9dcb5caddb6c8ddb9ccdcbaccdeb8cbdbb6cbddb5cbdeb3cadcb3cadbb0c8ddb1 *c9dcb6c7debac8dbb7c9ddb9c7dcbbc9d8b6c8dabbccddbccbdbbdcbdebdc9dcbbcbdebfcbddc4 *cfdfc2cfdec0ceddc0cdddc1ccdfc0cbdfbbcadebbcddfbdcce0bdccdfb9cee0b5cbddb8cbdfb6 *cbdeb5cbe0b6ccddb7ccdeb7cce0b6ccdfb5c9ddb3c9ddb9cadeb6cbddb7cbddbdccdbbbcbddbb *cde0bdcce0bacadfb7c8ddbdcee0becfdebdccddbfcedfbdcee0c2d2e0becee0b8cee0b5cce1bc *cfe0becfdebbcee0bbcfddc0d0dfc4d2e3c5d2e1c6d2e1c8d3e3c7d6e2c9d4e2c7d3e0c6d3e1c5 *d1e2c3d1e2c2d1e2c0cedfbdcedfbdcedebdcbdebdd0e0bacde0b9cee1b9cfe3b9cddfbbceddbb *cee0bccde0b7cce0b7cce0bacbdeb9ccddb6c9ddb6c9ddbbc9dcb4c9debacbddbac9deb8c8dbba *cbdbb9ccdbb6c7d8b3c6dab4c7d8b7c6dab7c8dbb7c9dbb9c9ddbbcbddbbcbdcbacadab8c8d9b9 *c6d8b2c4dab5c5d8b8c6d9bac7dabbc7dbbccbdcbfcddcbcccdbc1cddfc2ccddc1cddfc2cfe0c6 *d1dec4d1dec3d1dec4cfe0c4cfdfc5d0dcc6d1dec3cfe0c4cbddc5cddec3cfdfc3cedec3cedfc4 *cfe0c7d1e0c9d1dfcbd3e2c9d3decdd6e3ced8e4cfd8e4cfd8e0d0dbe4cdd8e1ced9e4d0d9e4d0 *d9e3cdd7e4ced9e3d2dbe4d3dde4d2dde4d1dce5cfdbe5d0d9e4d0dae6d0d9e4ced7e2cdd6e2cb *d6e1cbd6e4c9d6e3cad3e0c9d4e3c8d4e2c9d1e0c9d1e0c8d3e0c7d1dec9d1e0c7d1dec7d2e1c6 *d2e2c7d1decad3deccd6e2ccd6e0ced8e2ccd6e2ced7e4d1d8e5d1dae6d1dae3ced7e4ccd7e3cb *d4e0c9d3e1c5d0dfc4d0e1c7d1dfc7cfdec8d0dfc8d1e2c8d1e1c7d3e0c7d2e0c7d1dfc7d1e1c8 *d1dfc8d2dfc8d3e0cad3e0cbd2dfccd5e2c8d3e2cbd3e0cad2e0c6d2e2c9d3e3ccd3e1cbd4e4ce *d4e1ccd6e3cdd7e5ced8e4d0d8e4d2dde5d3dee6d6dee6d6dee7d7dfe6d3dee7d5dee5d6dde6d5 *dee6d5dde7d3dde6d4dde7d6dee6d5dee7d3dce7d1dae5d2dbe6cfdae5d1dae6d1dbe5d0dae5d3 *dbe5d2dae6d1dce6d2dbe6cedae7cdd8e5cbd8e4c7d3e1c0cddeb7cadbb1c1d5aebdcea4b6cba2 *b4cd9ab1cc95b0cca1b6cb9db3caa4b2c89cb1c996aecc9fb0cc9eb1ca9ab0c9a0b4ce9fb1c89d *b6caa1b3ca9cb2cba3b3cda7b4caa3b1c8a4b8cea6b7cea1b4cba7b9caa3b7d1a4bad1a8b8cea8 *b6cbabb6ceaebcd0acbdd0b0c1d3aebfceaebcbebfc9d0c2cdd2a3bcd4a4c1d59ebdd5a1c1d697 *bbd69cbbd4a0bdd79fb9d3a0b8d199bbd59abad4a0b9ce9bbbd49bbbd698b5d195b4cc94afcb93 *aec992b0cb96aeca96b5ce9fb3cd9bb3cf9eb6d0a4b8d0a6b9cfa2b6cda8bdd2a6bad0a4b9cfa5 *bad2a3b7d2a7bbd2a6bbd2a7bacfa5b7cfa9bcd2a9bdd2adc0d6b2c3d8b4c8dabac8dab7c8d8b9 *c7d8b8c8d7b5c7dbb6c7dab9c7d6b3c3d5b5c3d8b2c3d7aec0d2adbdd5abbcd3afc0d6b1c2d6b4 *c7d8b6c6dbb2c3d8b6c6d5b2c1d3a7bbd2a2b6d099aecc97aec99bb1cc97b6ce99b4cfa1b4cda8 *b9cea2b6cea3b7cea2b6cba2b6cea4b6cea4b6cea3b5cf9fb6cda1b3cb9cb5cc9db4cca1b7cfa1 *b5cea0b6cda3bacfa5b9d1aabad2acbcd1adbcd2b5c2d6b7c6dbb8c6d9b3c6dab3c6d8b7c6dab8 *c6d8b6c7d8b8c7dabbc7d9b8cbddbdcbddbfcbdec3d0e0c7d1e1c8d1dfc7d1e2c7d4e3c9d4e2cb *d6e3cbd6e2cdd5e5cdd7e6ced7e3cdd6e5ccd6e4cbd7e3cbd5e4d0d8e5cdd8e5cfdbe5d0dbe6d1 *dbe6d2dce6d2dde7d2dce7cfdae8d2dce7ced9e5cbd7e6c9d4e2c7d2dfc1cedebccbdebdcbdebe *ccddc0cbdebac6ddb4c2d8b0c3dbb4c6d8aebdd5aabcd6a5bad4a5b5cea2b6cea4b6d1abbacfa5 *bbd4a8b8d1a8b9cdaabbd3aabdd3acbbd1acbfd6acc0d7b1c1d7b1c2d6aec2d7afc3d7b1c3d6b5 *c5d7b4c4d7b5c6d8b5c5d7b9c7dcb4c2d8b1c2d6b5c3d5b6c4d5b4c5d7b7c6dab8c7dcb7c7dbb9 *c8dbb8c8dbbcc9dbb8c7d8bcc8d9baccddbdcbddbeccdcc3cfe0c3d1e1c6d3e1c7d0dec7d1e2c7 *d4e2c9d3e3c9d3e0cad2e2c9d1decbd3e0c9d2e2c8d3e2c6d1e2c7d3e2c9d6e2c9d4e1c9d4e2c8 *d6e3cbd5e2c8d4e2c8d5e3c9d3e3c7d4e2c6d0e0c5ceddbfcdddbcc9dcb7c8ddb9c8debac7ddb9 *c8dcbbcbddb4c7dcb5c9dbafc9ddb2c6dbafc6dab1c6dab1c4dab1c5d8b4c5d7b8c6d8b6c6d6b2 *c7dcafc6ddb1c5deb1c8dcb2c8ddb1c7ddb3c8dfafc7dbafc8ddb3c7ddb4c9deb4c9ddb1c8deb6 *cbddb7caddb7caddbacbdcbdcbdcbacaddb7c9deb7c9dbb8c9dbbbc9ddbcc9dab9cbddbdccdfbc *cbdebcc9ddbdcadcc2ccddbccbdebcccdfbccddebdcedebccce1c0cbdebecde0c2cee0c3cedbc1 *cfe0c4ccddc4cfdfc2ccddc1cde0c1ccdebdcedebdcbe0c0ceddc1cbdbbac9dbb8c8dbb7c7d8b7 *c7dbb4c6d9b6c7dbb3c6d9b3c7dbb3c5d9b3c5dab2c6d8b2c3d8b2c5d9afc4d9b5c6ddb4c5dab5 *c7d8b3c5ddb5c4d7b5c6d9b6c7dcb2c6dcb6cbdfb2c7deb7c7dcb7c7dcb7c9ddb8cbd9b7cadbba *cbdcb5c7dbb8c8dcbbc9ddb9c9dcbdcaddb7c8deb8c8dcb6c7dbb1c9deb0c8dfb1c8deb3c9ddb4 *c8dbb7c7d7b6c8dcb9c9dbb8c7dcbac8dabcc7dbbcccdfbfcbdbc0cbdbbbc9dcbcc8d8c0cbddbe *ccddc2cedfc2d0dfc1cee1c1cedfc1cdddbfcbddbdcadcbdccddbbcadfbccbdebdccdebdcce0bb *cddeb9cbddb6c8ddb6cbdeb5c7ddb1c7debbc9deb6c9ddb5cadebbcbdeb6c8dab7caddb9c9ddb9 *cbddbdccdebdcbe0beccdebeccddb8ccddb8cde0bacbdebccde0becedfbccde2becddfbdcee0bc *cddfbdcedfb8ccdfbecde1bfcfe0c0cee1c2cee1c4d0e0c7d2e3c7d3e2c9d4e4c9d4e3cad2e2c7 *d0e1c7d0e0c6d1e0c2d1e2c3d0e3c3d1e1c2cee1c1ccdec1cedfc0d0deb8cce1b6ccdeb9cde2ba *d0e2c1cee1bbcbdfbacee1b6cbdeb4cbdeb8cbdeb6ccdfb6ccdebacbddbdccdebbcbddb6ccddb6 *c8dbb9c6dbb8c9ddb6c6dcb7c8dcb7c8dab9c7dbbcc8dabfccd9bccadbbfccdec0ccddbdcbdebd *c8d8b8c6d8b5c4d7b5c4d9b5c6dbb7c7dabcc8dbbfcbddc0ccddc1cddcc0cedec3ccdcc3cedbc5 *d0e0c6cedfc3d0e1c3cee0c6cfdec7d0dec7d3dec6cfdfc9d1e1c9cedec6d1dec7d0dec6d0e0c5 *d0e2c5d0dec9d1e0c7d1e1c9d4e2cbd3e0ced4e0cedae5d2dae5d1dbe6d1dce5d2d9e4ced9e4cf *d6e3d0dbe3d1dae5d2dbe5d2dce7d2dde7d4dde6d4dce4d2dae5d0d9e5cdd8e4ced8e5cdd7e3cd *d6e3ccd7e4cfd9e5ccd6e4cbd5e2cdd6e3c9d6e0cbd4e1cbd3e2cbd4e2c9d7e3c9d2e0c7cfe0c9 *cfe2c9d2e2c9d3e1cbd3e0cbd3e2c9d6e2ccd6e2cfd7e3ced7e3d0d8e3d0dce6cfdae4ced8e4ce *d7e6cbd7e4cad4e1c9d1dec7d1dfc6d1e2c7d1e2cad2e2c7d1e1c8d2e2c8d3e2c6d0dfc7d0e0c8 *d1e1c9d1dfc9d2e0cad1e1cad3e1cbd3e0cad3e1c7d4e3cbd4e2c9d1e3c7d2e3c6d1e3c9d1e1cc *d2e1ccd3e3cbd6e5ced8e5cdd7e5cfd8e5d1dbe6d4dbe6d3dae6d3dbe6d3dee7d3dce5d3dde6d3 *dbe7d3dce7d2dde7d3dce6d3dde6d0dae5d1dbe6cfdbe6d0d9e7d0d8e7cfd9e5d0d8e3d0d9e5d0 *d8e5d0d8e6ced9e4cfd8e5d0d7e6cfd7e6cdd8e4cad3e2c5d2dfc3d0dfb7c9dbb1c2d8a7bbd1a7 *b8cfa0b3cda0b0ca98b0c79eb4c99db1cb9dafcb9fafc89db0ca9aabc99badc69bb2cc9aaec5a0 *b2ca9baeca9baecaa1b0c79dafcba0b0cba6b4c9a2b4cda7b8cda4b8cea5b5cea6b7cfadbbd1ab *b8cfabb8ceabbad1aabbcfaebbcfaebcd2aebcd1b0b9bec2c9cfc5cdd29ebdd0a0bdd1a3bed5a4 *c1d69fbfd39fbdd59bbcd29abcd69ebdd3a3c1d6a1b7d2a3b9cf9ab8d09cb8d0a0b8d097b4ce95 *b6ce98b7ce92b1cc95b3cc98b1cb9fb3cca0b5ce9eb8cca4becea2bbcea4bbd1a3bcd2aabccea9 *bcd3a7b7d1a3bbcfa8bdcda7bbcca7bdd0a6bcd2abbed2afc1d0aec0d3b2c5d5b5c6d8b9c8dabd *c9dbbbc9ddbccadbbac7d8bdc9d8bdcbd8b8c7d6b4c7d8b3c3d6b1c4d3aec0d1b0c0d4adbfd3b5 *c5d4b6c7d8bac7dab4c6d6b6c6d7b3c1d5b5c8d5b4c3d4a0b8cf9fb2c9a1b2cca3b5cca2b9cea8 *bbcea8bdd0a9bccfa8bbcdaabbcfa5bcd2a6bacda7bacda5b8cea4b9cfa2b8cda3b7cda0b6cba9 *b8cfa7b6cca4b7cca9bacfabbbd1aac0d4b1c1d3b3c1d4b5c2d3bbc6d8b2c1d2b4c5d5b2c3d5b6 *c6d6bbcbd9bbc9d8bcc8d5bdc8d9bbc9dac0cadac1cedbc3cedec6d3e0c7d3e2c7d3e1cad4e1c9 *d4e2cad6e3ccd8e5cdd7e1cdd8e2ccd8e2cdd8e2cdd8e4ced6e4cfd8e3ced8e2ccd8e2cdd9e4cf *dbe4d2dce5d2dce7d5dee5d4dbe6d3dde6d4dce5d2dbe5cedbe5cedbe3cbd7e0c2cedebbc9dbbb *c8d8bac8dbbbc9dbb7c6d6b2c2d5adc0d5aac2d6aac0d1abbed6a8b8ccaab6c9a3b4cca1b5cba4 *b6cba4b9ceaac0d1a4bfd1aabbcdaac1d2aabdd3abbcd0afc0d7acc0d5b1c3d5b6c6d8b5c6d6b6 *c5d6b2c4d7b6c6d7b4c5d4b6c8dab9c6d5b6c5d4b8c8d8b9c7d8bbc8d9bbc8d5bdc8d8bbc8d8bd *c8d8bdcbdabbcbd9c1cedcc1cbdbbfcbd7c3cedac3cedec0ceddc3cfdec3d1dfc7d2dbcbd2dfcc *d6e3ced6e1ccd6e2cbdae3cbd6e1ccd8e4cbd6e2cdd5e2c9d4e3c9d3e3cad4e2c9d6e0c9d6dfca *d7e1cbd7e2cbd8e4ccd6e3cad4e2cad3e1c7d3e0c4cfdfbdccdabfccdab7c8d9b4c6d9b5c7dbb6 *c4d6b4c6d8b5c8d7b4c8d8b1c6d6adc3d9b0c6d6b1c5dab6c4d6b2c2d6bbc6d5b7c7d7b9c8d7b7 *c6d6b8c8d9b6c8dbb9c9dbb7c9ddb8c9dbbacbddb3c7dbb6c9dcb1cadbb6c8dab7cbdebacdddbf *cfdec1d0e0c1cdddc0ceddc3cfdac1ccdbc1cedebfceddbfccdcbdccdcbecddbc1ccdcbecdddc1 *cfddc1cedec0ccdec2ccddc3cedfc2cedfc1cedebdcddbbdcfdbc3cedec3d0dec1cedec5d3e0c9 *d1e0c7d1dec7d1dec6d0ddc6d1e0c6d0dfc3cde0c3d1dbc2cfddbfccdec1ccddc2ccd9bcc9d9b8 *cbd9b5c6d8b9c9d8b0c6d7b7c6d8b0c7d9b3c5d6b4c6d7b3c5d8b0c2d6b2c2d6b3c4d8b3c5d7b7 *c6d9b6c7dab6c8dab6c7d8b7c8dab8c9dab5c7dab3c7dcb6c8ddb7c9ddbcc8dab8c9d8bbcddcb6 *c7d9b6cadcb6c5d8b8c8d9bdcbddbbcbdcbdcce1bccdd9b8cbdbbac8dab6caddb3c8ddb6cbdbb6 *cbdcb6c8dbb8c9d8b5c8dabbc9d9c0c9d8bbc8dabdcbdbc1ccddc0ccdbc1cdddc0ccdabecbdbc1 *cbddc0ccd9c3cddcc2cdddc3d0dec1cfddc1cedec1cedebfccdbbfcbddbecbdbbecbddbfccd9bd *ccdebcccdbbacbdbb8cbdbbacbdbbac9dcbbcbdbb6c9dcbacbddb6caddb9cadcb9cadebbccddbd *cbdcbdcbdbc0cddcc1cdddbbccddbdcddebfcddebaccddbfcee0c0cfe0c1ceddc1ccddbecedfc1 *cedfc0cedfbfcedebccee0c1cde0c1cedec2d1e0c1d0e0c3d1e1c6d3e0cad6e1cad6e2cdd7e2cb *d3e1cbd2e1c8d3e1cad2e0c7d3e1c7d2e0c7d3e1c7d2e1c4d4e4c5d0e0c4cedebed0e1b9ccdfb6 *ccddb9ceddbccddeb9cee0b9cde0b7cbddb7cbdeb7ccdeb7c9ddbacce0bacddfc1cddeb9ccddba *caddbbc9dbbac8dcb7c9dbb8cadbb6c9dbb7c9dbbcccdac0cddbbccbdabfcbdbbfcddcbfcddebf *cddebdcadbbcc7dabbc8d9bfc8d8becad7becadac0cbdbc0cbdac2cddcc0cdddc1cedbc2cedfc5 *d1e0c7d1e0c6d0dcc3d1ddc5cfdec6d3dec4d1dec5d2dfc9d2decbd6e2cdd4e2cbd4e0c9d5e1c9 *d3dec9d3e1c9d3e2c9d5e4ccd6e2ced8e3ccd7e3d1d9e3d1dbe4d2dbe5d2dbe5d1dbe3d2dae5d1 *dae5d1d9e4d1dae2d1dbe2d2dde3d3dde5d4dee6d6dee6d4dee7d5dee6d2dce2cfd9e3cfd8e3cd *d7e2cdd7e1d0d8e4cfdbe5d1dbe3cddae4d1d7e3ced6e2cfd6e1cbd5e1cbd6e0c7d6e1c9d3e0c8 *d2e1c9d3e1c9d4ddc9d5e0cbd6e0ccd6e0ccd8e3d0dae4d1dbe5d1dce5d6dbe5d3d9e5d1d8e3d1 *d8e2d0d7e2ccd9e3c8d4e4cbd3e1c9d2dec8d1dec6d3e0c9d2decbd3dfcad4e1cad3e2cad4e2c8 *d2e1cad4e1cbd1ddc9d2decad3decbd5e0ccd7e2cbd4e2c9d5e3ccd2e2cbd5e1c9d3dfbdcadecb *d5e0cbd6e1ccd6e3ccd4e2ced6e3d0dae5d2d9e3d1dae3d0dae5d2dbe5d0d9e5d1d9e5d3dee5d6 *dde5d4dbe6d5dee3d1dce6d3dbe5d1dae6d0d7e4d1d8e5d0d8e5d0d9e5d1d9e5cdd8e2cbd6e0cc *d6e3cbd6e0cbd7e3cdd8e3ccd8e5cdd8e5ccd7e3cbd7e1cad2dfc7d3e0c6d0e0bfcbdbb4c5d6ab *bbd1a4bcd1abbbcfa0b3cc9fb1cc99adc699aec69eb1c79eb1c89db6ce9cb1cb99b3c79fb1cb9c *afc89cb0caa2b2c7a2b3cba4b4c6a4b8cea2b6cca5b9c9a3b5caa8b9cda8b7cba9bbceaabacbae *bcd1a7b9d1abb6cfa9baceaebbcbadbccdb1becfb0bacab3bdc1c1c9cec5cdd2a5c0d69fbdd699 *bdd6a1c0d79fbdd4a0bbd498bcd396b9d39ebed6a2bed39fbdd69cbdd69fbdd59cb8d39cb8d29c *bdd49bbdd49ebdd399b6cea5b8d2a6bcd2a4bbd3a3b9d0a5bcd3a7bdd2a6bcceaac0d6acc0d5aa *c0d6aabed4abbed2a9bcd0a7bdd4aabcd2aac0d5acbfd4aec2d7afc2d5b0c3d6b7c6d9b8c6d8bb *c9dabdcbddbdcbdcbbccddb9c9debccbdebdcaddbbcadbbac9dbbcc9dbb7c9d7afc3d7b0c1d4af *c1d5b5c3d7b5c7d4bac8d7b7c7d7b9c8dcb7c6d8b8c9ddb4c3d7a9bdd3a4b3cca0b3cda1bbd3aa *bdd3a4bdd2aabdd3acbcd3a9bdd2adbed1aebfd2a9bcd3aabcd1a8bcd1a6bbd1a5bbd0a6bad0a6 *b8cfa8b8cfa6b7ceaabad0aabdd1acbbd1adbdd3aebfd6b2c1d8b2c3d7b1c3d9b1c4dab3c3d5b6 *c7dab6c6d9b7c5d7bbc9d8b8c7dbbdccddbdccdec2ccddc1cddec1d0ddc4d3ddc7d2dec7d1e3ca *d6e3cbd8e3cfdde5ccd9e6cdd8e6cddae5ced9e4cdd8e4ccd8e3cfd8e7cfd8e6ced9e5ccdbe6ce *dae6cedae5d0dbe4d2dce6d2dde7d3dee7d4dee8d5dfe7d3dde6d3dce7d1dce5cddae6c9d5e4c5 *d0e0bbc8dcbbc9dbb7c7dbb3c4d8adc3d8acc1d6a8bdd6a4bbd1a9bcd3aabdd3abbdd1aab9cca8 *b9cca3b9d1a5bbd1a5bad4a8bbd4aabbd3aec2d3b1c2cfafc1d5adc1d3adc3d9b1c4dbb1c6dcb6 *c7d9b9c7d9bac6d9bcc9d9b9cad9bacadbb8c7dab7c7d9bcc8dbbcc8dbc1cbdbc2cdd9c6d1dcc1 *cfdfc3cfe0c3cdd9bfcedcc1cde1c1ccdec3cdddc5cfe0c3d1e0c3d3e0c7d2dec9d3e3cad4e3cc *d6e3d0d8e5ced9e5cedbe3cddae6ccdae5ced7e4cdd8e2cdd7e4ccd6e3cdd6e3ced6e3c9d6e2cb *d8e3cad7e2cad6e5cbd8e4cbd5e3cad5e4c8d4e1c6d3e0c1cfdebfcdddbdcbd8bac9dcb6c6d7b3 *c5d9b0c5d7b5c5d9b3c7deb2c6d9afc6dcb2c5d7aec2d8b1c5d6b4c4d8b5c5d8b9c7d8bcccdbbc *cee0c1cbdfbeccdcbfcddebfccdabac8dabdcbdec1ceddbdcedeb9cbdfb4cadbb9c9dbb9cbdcbf *ccddc2cee0c2d1e0c4cfe0c6d0e0c4d2e2c5d2e2c4d2e1c2d0dfc1caddc2cdddc3d0dec3cedfc1 *d0dfc3d1e1c2cfdcc3cedcc2cfddc4cfe0c7d0e0c5cfdebfcedec3d1dec1d1dec5d1e2c6d2e2c5 *d2dfcbd3e0c7d2e1c9d5e3c7d3e2c7d3e3c6d1e0c6d0dfc4d1dfc2cfdfc4ceddc3cddebecedfc0 *cddebbc9dabac9dab9c6d8b6c7d5b8c5d1b1c4d6b2c5d5b3c6d9b3c5dab3c4dab4c4d8b3c6d8b5 *c5d7b4c5d8b4c6d8b9c9ddb9c8dbb6c7dbb6c6dab7c7dab9c8dbb6c9dcb7c8dab8c9dbbac9dfb9 *cbe0bac7dbb6c8d9b9c9dab6c7dab3c7dcb8cbdebbcbe1bdccdcbdcde0bbccdebacaddb7cbdbb3 *c7ddb6c6dab7cadbb6c7dbb9caddbdcbddc1ccdebbccddc0ccdbbcccdec3cedfbfccdec0cddec2 *cedfc3cee0c2d0ddc1cddcc1cee1c0cfdfc1cedec2cddec2cee0becbdcc0cbdec1ccddc1cedfbf *cddebdccdfbecddebdcbdebbc9deb8caddbbcbdeb6cbdcb9c9ddb7caddb8c9ddb9cbdeb9ccdfb7 *cadebdcbdfbacbdfbdccddc1cedebecbddc2cddebdcde0bccadebecee0c0cee0beccdebfd0dfc3 *cfdec3cfe0c0d0e1c1cfdec2cee0c3cfe0c6d1e1c3d2e0c3d2e0c5d1e1c9d3e2c8d6e2cad7e4cd *d6e6cbd5e4cbd5e4cad6e3ccd6e2c9d6e2c5d4e2c6d4e2c5d3e3c3d1e2c3cfe2c3d1e0bfd0e2b8 *ccdfb6ccdfb8cddfbbcee2bfcee0bacbe0b6cce0bacbdeb6cbdebbccdeb5cbddb6cbe0bccddeba *ccddb9cbdfbfccddbcccdebbcbdcb9cbddb7c9ddb7c9dcbacbddbeccdfc1cddec2ccddc1cfdec1 *cedfbeccdfbccaddbfc7ddc1cbdebecadcc1ccdcc5cfdec8d0dec7d1dfc4cee0c3ceddc2cddcc6 *d1dec6cfe1c7d1e1c7d1dec7d3dec7d2e0c6d0e1c6d1dfc8d2e0cbd6e2ccd5e3ccd6e3d1dbe5cc *d8e4cdd7e4ccd8e3c9d4e1cad5e5ccd6e3cbd8e4ced9e3d3dce5d3dde6d3dde6d2dae4d1dbe2d1 *dbe4d0dae5d1dbe6d1dce5d3dce6d2dce6d2dde5d4dce5d4dee7d5dce6d3dce6d3dde4d2dbe6cf *d9e5ced9e4ced8e3cedae5cfd8e4d0d9e4d0dce6d3dce3d3dce4d2dce5ccd8e3ccd6e3cbd6e2ca *d3e2c9d3e0cbd5e3ced8e2cdd5e0cbd8e2ccd8e3ccd8e3cfdbe2d2dae5d3dde6d3dce6d3dbe5d1 *dce5cfdbe3ced8e4ccd7e3c9d4e0c9d0e0c9d2e1c7d2dfc9d5e3c9d5e3cbd6e3cad5e2ccd6e3cb *d5e2cdd4e2cbd4e4cbd3e2cdd4e4c9d4e2c8d4e2cbd6e3ced6e2ccd6e5ccd6e2cdd5e4cdd5e4cc *d6e3ccd6e5cfd6e6ced8e5ccd8e4cfd8e4d1d8e3d3d8e4d1dbe6d0dce6cfdbe5d1dae3d3d9e6d3 *dbe6cedae3d3dbe5d3dbe5d3dce7d6dde6d1dbe6d0d9e4ced8e6ced8e4ced7e5cdd7e4ced7e5ce *d6e5cdd8e5c9d4e3cad5e2c9d4e3cad6e3c7d3e2c9d3e3cad5e3c6d3e3c1d2e0c1cfe0bbcbdcb1 *c3dbacbdd0a7bcd3a5bbcea4b6cea3b6cb9bb2cca2b3cb9db4cca1b3cd9aaecc9db1cb9bafcba1 *b3cb9fb3cc9db6c79dafcba2b8cda4b4cda3b6cea0b6cea5b6caaabbceacbdd1aabaceaab9cead *bad0adbdd2a9b7ccadbbcfacbbd0adbcceaabdd1afbfd1afbbccb2bfc2c1cacec3cdd2a2bbd0a0 *bfd69cbad4a1bbd69fbdd49dbbd39cbcd59fbed59abdd3a1bfd6a2bdd49cbdd39db9d399b8d19c *bdd39ebdd599b9d09ebdd39eb8cfa1b8cfa8bdd3a8bbd2a8bdcfa9bcd1adc1d6adbed3b1c2d6b0 *c0d7aebfd5b1c2d7b3c2d4aebfd4b1c1d4b1c2d6b4c3d6b0c1d4b2c4d8b1c0d6b4c1d6b6c7d9b8 *cad9bdc9dabccadbc2cce0c3d0dec2cce0c2ccddbfccddbdcbdbbfccdebfcbdebdcbddbcc9dbb4 *c5d8b1c3d8b2c5d6b0c1d6b5c6d6bbcadbbdccdcbbc7d6b6c7d8b6c6d6aac0d39cb3cea0b8cea5 *bdd3a5b7d2a9bbd4afbcd2afbfd3b1bed6b2c0d5b4c4d8b8c1d5afc1d7abbfd4acbdd4adbdd2a8 *bbcfa7bad0acbdd0acbdd2aabcd2a8bcd2acbcd2b0c0d4b2bdd3b1c3d6b5c1d5b3c6dbb8c6d9b5 *c3d7b1c5dbb6c6d6b6c6d6b1c6d6b9c7dbbcc9ddc1ccdec3cedec3cfddc3cee0c7d1e1c8d3e3c7 *d3e2c9d4e3cddbe4cfdae6d0d8e5cfd9e5cedae4cedae4cedae5ced8e4cdd8e4ccd7e5cfd7e5d1 *dae4cedce6cddae5d0dae5d2dbe5d3dde6d3dee7d3dde6d5dfe7d5dfe7d1dde6d1dde6ccd7e5cb *d6e5c9d4e3bdc9dcb3c5d7b6c6d8b0c3d7aabbd5adbdd4a2b6cea6b8cea7bad0a8bad0aabdd3aa *bcd3aabccea5bbd1a9bacfaabad1a8bbd4abbdd6b3c2d5b5c3d1b7c3d7b0c2d9b0c1d7b4c1d6b7 *c5d7b6c5d7b5c6d9b6c8dbbdcadbbccadcb9c8dbbdc8d8bec9dbc0cbdbc0ccdec3cddcc6d0dcc8 *d1e0c9d3e2c7d3e3c5cedec3d1e1c4cedec6d1dec6d0e2c6d1e2c8d4e1c8d1e2cad6e3ccd6e1cb *d7e4ccd6e2cfd7e5ced8e3cfd9e6d0dae6d1dbe5cfdae3ced7e3ced6e3ced7e4cbd6e4cdd6e4ce *d7e3ced8e4cad8e5cbd8e3cbd9e3ccd7e3c9d5e0c7d3e1c6d2e0c1cfdfbdcbddbdc9d9bac7dab6 *c7d9b0c6d7b4c5d6b5c4d8b2c4d6b7c6dab4c6d9b3c6dcb4c4d6b4c6d8b8c7dabac7d9becddbc3 *d0ddc6d0dcc7d1e0c5d1e2c3cfdec4d0e0c2cedec0ccdbbccbdbbac7dbbbc9dcbdcce0b9cbddbd *ccdec2ceddc3d0ddc6d1e0c8d3e3cad4e1c8d5e3c8d3e2c6d3e2c6d1dfc4d0dec2d1dfc1d1e0c3 *d1e0c6d1dfc5d2e0c4d0dfc4cedec5cfdec4cedec3d0dec1cddec5cfe0c6d1e1c7d2e0c6d2e2cb *d3e2c8d5e4c8d6e0c9d6e5c9d3e3c9d5e1c9d6e3c7d5e3cad4e3c8d3e1c6d3e2c6d2e1c6cfe1c2 *ceddc3cddfc3cbdbbdc9dbb8c6d8b9c8dab6c7dbb7c9dbb8c7d7b6c6d8b7c5d7bac7d9b8c9dab9 *c9dbb8c9d9b4c7d8b9c7d9bac8dabacadab8c9dcb6c8d9b9c9dbbdcadcbbcadebbc9dabbc9ddc0 *cbdebbccddc0cbdbbbc9d9b9cbddb9c8dabbc7dcbbccddbdccdec3cedcbbcbdcbbccddbacbdeb9 *caddb9c9ddbac9ddb7cbddbdcbd8beccdec1ccddc3cedec0cde0c1ccdfc1ceddc7d1e0c4cedcc4 *d0dec4cfe0c5ceddc3d0e1c4cfdec4d0e0c2cedec3ceddc2cddfc3cee0c4cfe0c2cedfc4cfdec1 *cdddc1cedfc1cedec2d0e0c2cfdec2cde0bcccddbeccdebacdddbfceddbeccddbbccdcbacadfbe *cbdeb9cbddbdcce0beccdebfcedfc1cedec1cee0c1cddfc1cedfc1cbdfc0cddebfcee0c3cfdec5 *d3e2c7d2e1c6d0e3c4d0e2c3cedfc6cfdec7d0dfc6d1e1c7d1e0c4d1e2c5d2e1c9d5e4c9d2e4cc *d4e3cdd5e3ccd6e3ccd6e3ccd6e3cbd7e5cbd5e4cad3e2c9d3e0c6d3e1c7d2e2c7d4e0c5d0e0bb *cde1b8cce0b9cce1bbcddebfcde0bcceddbccee0bccedfbdcde0b7cbdeb6cde0b4c9dfb7cbe0bc *ccdebdcedebeccdeb9ccddbaccdcbbcbdeb5c9ddbbc9ddbacbdabbcbddbccbdec0cddec4d0dec5 *cfdec0ceddc1cdddc3cddec1cddec1ccddc4cddec5d0e1c6d1e0cbd2dfcad3e0c8d3e2c9d3e0c9 *d1dfc9d1ddc5d1dec5d1e0c9d3e2c9d3e0c9d2e2c7d2e2c9d3dfccd3e1cdd6ddced8e3d1d8e3d1 *d8e4d2dce6d0dae2ced7e3cdd8e4ced7e5ced6e2cbd4e0d0d8e2d1dce5d4dee8d0dde7d1dbe6d1 *dbe3d0d9e4d3dbe4d3dbe5d3dbe5d3dde5d6dee4d3dee7d4dce5d5dde6d6dee5d6dee7d2dce5d1 *dbe6d2dae6d0d9e3d0d9e4cfd9e4d2dbe5d3dce3d3dde6d2dce5d3dbe4d5dce6d2dbe5ced7e3cc *d8e2ced8e3ced7e3ccd8e3ced7e3ccd7e2ced8e3cfdae5cfdae4d3dce5d3dce6d3dce6d3dde7d5 *dbe4d3dae5d2dce6cfd9e5ccd7e5c8d3e0c8d3e0c9d3e0cbd3e1cbd5e1ced7e3ced7e5ced7e7ce *d6e2d0d9e3d1dae6ced6e6cdd5e2ced6e5ced5e2cad6e2cbd6e2cdd6e4ccd5e4ccd6e2ced7e5cb *d5e4ccd6e4cdd6e3cdd9e4ced9e6cfd8e2d2dae5d3dae3d1dae6d2dae5cfd8e5d2d8e3d1d9e6d1 *dbe6d3dbe5d3dae6d3dbe5d1dae6d2dee7d2d9e6d1d9e7d0d9e6cdd8e4cbd6e3cad4e3cad3e1c9 *d6e3c9d5e2c6d3e1c3d1e1c8d3e2c8d2e2c9d3e1c8d2e0c6d3e1c7d1e0c3cfe0c1ccdec1cee0bf *ccdeb5c6d9b2c0d4afbed3aebcd3a4bcd1a3b5cd9cafcba1b1ca9cb1cc9db3cb9aafca9eb2cc9d *b4cb9fb1c9a0b2cba5b6cda7b6c9a6b9cda7b8cca4b4ceaab7ceb0bfd2abbbcfabbdd1b1bdd4b5 *bdd3b0bcd1acbed0a8bbd0afbdd2aeb7d0adbbceadbbceb0bfd3afbbcfb4c1c3c2cacfc5ced29e *bdd3a1bed499bad49ebcd39ebbd49fbdd2a0bad19abdd395b9d698b6d19fbad49dbbd397bbd39a *bbd398b7d197bbd49fbdd59fbcd49fbdd69eb9d39ebad0a5bdd1a9bfd6aac1d3afc2d6b0c3d8b1 *c5d7adc3d6b0c3d8b5c7d6b7c6dbb5c3d8afc3d7b6c6d8b2c3d7b6c6d9b2c6d9afc3d8b5c4dbba *cadbbdcbddc1cbdec3cdddc3cfdec6d2e2c4d0dec6d1dfc3d1dfc6d2dec7cfe2c7d1e0c6d2e2bc *cbd9b7c9dab6c4d7b7c5d7b5c6d9b7c6dabbc9d9b8ccdeb9c8ddbbc9dab2c6d7aabcd19eb8cea2 *bbd1a4b7d1a2b9d2a7bed5a7bfd3adc0d4aebecfb2c2d5b4c1d3b6c5d4b4c2d7b0c1d3aebed3b1 *bdd0aebfd2acbed2adbbd1b0bdd2afc0d4afc2d5adc1d4aac1d9adc2dab0c3d8b3bfd6b1c5d6b1 *c5d6b3c8d9b5c8ddb5c6d7bac8d8b9cadbbec8d9bccbdbc1cedec3ceddc3d0dfc2d0e2c4cee1c4 *d2e2c7d3e1c9d4e5cbd5e2ccd9e5cfd9e5cedae6ced8e6ccd8e5ccd9e4ced6e2cdd6e3cfd8e3cf *d8e4ccd8e4cedae4cfdce5cfdae6d1dce6d1dbe6d2dde6d2dbe8d3dce6d2dde7d2dde7d2dde5cf *dbe6cbd6e3c4d1e2bfccd9b6c6d6b1c3d6aec3d6a7bdd5aabdd3a7bcd6a8bbd0a9bbcea8bdd1a8 *bdd0a7bdd1adbcd2abbbd1adbbd1aabdd3aec0d4b3c2d6b7c6dbb6c6d7b7c4d6b5c6d9b1c4d8b6 *c6d9b8c4d8b6c5d8b9c6d7b8c6dabacadabbcbdcbacadbbecbdbc1ccdbc3cbdfc3cee0c6d0dec7 *d3e0cbd3e1cbd5e2cbd7e4cad1e1c7cfe0c7d1e2c6d3e1c3d1dfc7d3e2cbd4e3c7d5e1cbd7e3cc *d8e3ced8e5cddae5cedbe5cfdae4cfdbe5ccd8e5d1dbe6cfdbe2d0d8e5d0d8e5ced8e2cbd6e3cc *dbe3ccdae5cad8e5cad8e4cbd8e5cad6e4cad4e2c6d2e1c1d2e2bed0dfb9cadcb7c8dbb4c6d9b2 *c4d8b5c6dbb6c4d7b4c6d8b4c6d6b5c3d5adc2d7b7c6d8b3c5d9b8c6dcbbc8dbbdcadabfccdec4 *cfdec3d1e1c8d1e0c7d3e3c7d3e2c9d3e2c8d3e1c5cedec1ccdeb9cadbbac7dabccbdbbcccddbe *cedfc2cfe1c3d1ddc6d1dec8d1dfc6d3e3c9d5e1c9d4e1c8d4dfc5d1e1c7d2dec6d1e0c3d0e0c1 *d0e0c1d0e0c3d1dfc6d3dfc2d1e0c5d0e0c4d0e2c2d0dfc2cfe0c2cedfc6cfdfc8d3e0c6d1e0c7 *d2e1c8d4e1cbd6e3cbd5e3cbd6e5cbd4e5c9d8e3cbd5e3c7d4e2cbd5e1cad5e3c9d3e2c7d3e0c6 *d1e2c3cfdec2d0dfc2cfdcc1cee0c2ccddc0cbdcbdc9dcb7c8dbb7c8d8bccbd9bac9dbb9c8dcb7 *c8dcbbcadab7c7dbb5c8d8b5c9ddb3c8dbb6c7dbb8c7ddb7c9dbbbcddcbfccddbec9dcbccbddbb *cbddbdccdcbdcee0bbccdebbc9dcbccadcbfcbddbdcbdabbccdbbfcde0bdccdfc0cde0bdccdbb9 *ccddb6cbdeb7cadebdcaddb7cbdebac9dbbacbe1becee0c3ccdec3d0dec4d1e0c3cfdec4cedec5 *d0dfc4cee0c4d0dfc7d2dfc6d1e2c5d0dfc6d1e0c3d0dfc3d0e1c3cfe1c2cee0c5d2e0c3d1dfc3 *d1e0c1d0dfc4d1dfc5d0e2c2cfe1c6d1e1c1cedebcccdebfccddbbccdebcccddc0ccdfc0cddebb *ccdebacbddbbcbdec1ceddbdcee0c0cee0c0cddfc3cddfc2cce0c0cee2c0cedfc2d1e0c5cfe0c3 *cee0c6d2e1c6d3e3c6d3e0c6d1e0c6d3e2c5d1e0c7d2e1c6d1e1c6d2dfc6d2e0c6d1e1cad6e3c9 *d4e3cad6e3cbd7e2cbd7e4ccd6e4cbd8e2cbd7e3cad8e4cdd8e5cad8e5cad7e3c9d4e1c6d3e1c1 *cfe1bfccdfb6cce0b5cae1bacfe2bbcde1bacee0bccde0bdd1dfb8ccddb6ccddbacee0b7cde0ba *cbdfbbcde0c1ccdfbdcee0bbcde0bcccdfbbccddbacbddb9cbdebbcde0bcccdebfcedebfcedec1 *cfdec1cedec1cddec0cddec1cedfbfcee0c5d0e0c4cedfc3cfddc5d2dfc8d3e1cad6e2c9d4e3cc *d5e3c9d3e2cad4e0c7d2e0c6d2e2c7d5dfc7d3dcc6d3e2c6d3e2c8d3e2c8d3e2cdd6e2ced8e2cc *d6e2d0dbe3d0dbe5d1dbe6d0dbe5cdd9e6cad6e3ced6e1c9d4e0ccd6e2d0dae5d0dde4d2dde5d1 *dde5d1dbe6d0d8e3cfd9e4cfd9e4d0dbe5cfd9e5d4dde6d6dee7d4dee7d3dde8d6dde5d6dde6d2 *dbe6d0dae5d0dbe4d0dbe4d1dce5d1dce5d1dce6d1dbe3d1dbe5d1dbe6d2dbe4d2dbe3d0dbe5ce *dae5cbd7e4ccd6e2ced6e3ced8e4ced7e2cdd9e2ccd9e1d1dae5d0d9e6d3dde8d6dde8d2dde5d3 *dce6d3dde5d0dae2cddae5cbd6e4c8d5e3cbd4e5c9d3e2cad3e0cbd3e1ccd5e2ccd7e4ced9e4ce *d8e5d2dbe6d4dde7d3dbe5d1dbe5cdd8e4cfd9e4cfd9e3cdd8e3ccd8e5cbd7e3ccd5e3cdd4e2cc *d5e4cbd6e2ccd7e5ccd8e5cfd8e7ced9e5d1d9e3d1d8e7cfd6e5ced8e5ced7e2cfd8e5cedae4ce *dae5d3dbe6d2dbe5d2dae5d0d8e3ccdae5cfdae6cfd9e6d0d9e6ccd7e3cbd7e5c4d1e2c3d2e3c6 *d3e4c1d2e3c3d0dfc1d0dec0cdddc2cee0c6cfe2c7d3e2c6d2e2c4cfe0c1ccdebecddebcccdebb *ccddbdcedcbac6dbb3c6dbb2c3d8adc1d8abbdd3acbdd3a4b9cea5b9cea3b6cca3b2cca4b5cea2 *b1cca0aecb9db1cca2b2cc9eb5cba2b8cca5b9ceabb8ccacbad0adbacdafbfd1aebdd1adbdcfb1 *c1d3b3c1d4b0c0d5afbfd2acbbd1a7bcd0adbbceadbbd0afbeccb0c2d2aebdceb4c0c5c3cbcfc4 *ced29bbace9bb8d097b5d198b6d099b7cf98bad19fbad3a1bacf9eb6d59cb4d09fb6d09db8d397 *b6d299b6d19bbcd3a0bcd499b9d59abbd39eb8d19cb9d2a1bbd2a5bbd0abbed3b0c1d7b3c3d6b4 *c5d6b8c7d8b8c6d8b8c4d7b8c8d9b6c4d8b5c4d7b3c2d5b6c4d6bac9d8b8c6dab6c7dab9c6d6b8 *c5d5becbdcc3cddcc3cddcc4cedec5cddec5cee1c3ccdec8d1dec6d1e0c7d3e2c4d2e0c6cfe0c6 *d1dec1c9d8b6c6d8b4c3d8b3c1d6b9c6d6bbc9d6becadbbdcadcbdcaddbecbddbdcbdeb1c2d6a6 *bacfa6bacfa7b6cea4b8cfa2b7d0aebdd0b1c0d4b5c4d7b4c3d5b6c4d7bbc7d7b8c5d8b5c4d5b3 *c5d8b1c1d4b0c1d3aebfd2b0bed3b1bfd5b0bfd3b0c3d6b2c3d6b1c0d4b8c7dab6c5d7b8c3d5b1 *c3d7b6c3d3b5c1d1b5c6d9b6c6d7b8c7d8bec9d9bdc9dbbdc9ddbdcbddbfcadec1cddec4cfe0c4 *cfe3c5d1e2c9d3e2cad3e1cbd5e2ced6e1cdd8e5ccd7e4cdd5e2cdd7e3ced8e4ced7e3ced7e4ce *d6e2ced8e3ccd7e2cbd6e2cdd8e4cfd9e5d1dce6d3dbe6d3dbe6d2dae5d3dce5d3dde5d1dce4cf *dbe5cbdae5c8d3e4c5d0e2c2cdddb7c6d9b2c1d5adc2d6aec2d4aec2d5a7bbd3adbdd1aebdd4ac *bdd0aebdcba8baceaabacdabbcd4aabdd6adc1d5b4c5d8bbc6d4bac6d6b8c4d8b4c3d6afc2d7b4 *c2d7b6c5d9bbc6d7b9c8d9bec6d6bdc8dbbdc9d9bfcadbbec9dec2ccdec1cedcc5cedfc7d0e0c8 *d1dfcbd3e0ced5e0ccd7e2cdd7e3cbd3e1c7d3e0c9d3e2cbd3dfcad2deced4e0ced4e2cdd6e3cc *d6e2cbd6e2d1d9e5cdd8e3d3d6e2d2d7e3d1dbe6d1dbe4d0dbe4cddae5d1d9e5d0d8e3d0d8e5cd *d5e3ced6e3cdd6e1c9d3e1c8d3e1c7d4e2c7d3e1c6d3e2c5d1e2c3cee0bdcadabac7d9b8c5d8b3 *c3d8b1c3d7b2c3d6b6c5d7b9c5d7b7c6d7b5c4d5b9c5d7b8c7d7bbc7d8bac8dbbbcbdec1cdddc6 *ceddc9d2dcc9d2dec9d3decbd5e2cad6e3ccd5e3c8d4dfc7cfe0c2c9dcc0c7dabdc8d9bdcedebc *ccddc1ccdec1cfdec6d0e2c9d1e2cad2e2cbd3e1cad3e1c9d2dfc9d3e2c7d2e0c6d2dec5d1dfc6 *d0dfc5d0e0c3cedfc2cfdec3d0dfc6d0e0c6d1dec5d2dfc3cedfc4cedfc4cfdec3d0dfc7d0e0c6 *d0dfc7d2ddc7d4e0c7d4e0ced8e3cad3e2ccd6e2ced6e2c9d3e2ccd4e3cbd4e1cad8e3c7d5e2c9 *d3e3c8cfe0c9d1dfc6d0e0c3ccdfc3ccddc3ceddc1ceddbdcedebdcaddbac9dcb9c7dabbc7d8bb *c8dabac8dbbbc9d9bacad8bacad8b7c5d8b7c4d9b9c5d9bfc8d9c0cbdbbfccdcbfcddebfcbdcbd *cbdcc0cbddbfcbddbfccdebdcaddbdc9dbbacadac1cbdac1cbdcbecbd9c0ccdcc1ccddc0ccddbd *cddebeccddbbcbdfb7cadebdcbddbdcbddbec8d9bac9dec1ccdbc1cdddc3cfdfc1cee0c1cedec4 *d2e0c6d1e2c7d1e0c7d0dfc7d3e1c6d0e1c6d1e1c6d0dfc6cfdec4d1e0c5cfdfc5d0dfc6d1dfc7 *d0e0c4cfe0c3cedfc4d0dfc6cfdfc5d1e1c4d1e1c3cfe0bcccddbfccdec1ceddc0ceddc1cfdebc *ccddbccddebccbddbccbddc1ccddc3ccdec4cfe0c3cbddc3cddec3cddcc6cce0c3cfe0c6cee0c9 *d1dfcad2e0c9d2dfcbd3e0c9d1e1c6d1dec5d0dfc5d0e0c6d0dfc7d2e1c9d3e2c9d2e2c5d1dfc6 *d1e3c9d2e1ccd4e1cdd7e3cfd6e2cdd6e2ced7e3cdd6e2cfd9e4ced7e4cfd7e3ccd7e4ccd4e2c7 *d3e1c3d0e0bcccddbbceddb9cbdfbbcbdfbdccdfbbcbddb8cbe0bacddebbccdeb1c7ddbcc9dcba *cbddbfcbdfbccbdfbdccdfbbccdec1cde0bfccdcbfcddfbeccdebfccdfbdc8dcbecbddc0ccddc0 *cedfc1ceddc4cedec2ccdec1ccdcc4cedec4cfe0c6d0dfc3cddfc7cedfc8d0dfc8d2dfcad4e2ca *d5e1c8d4e2c7d5e2c9d6e0c9d3e2c9d2e2cad2e0cbd2e0c8d1ddc7d1e1c7d1e0c9d6e2cdd6e2cd *d6e1cfd6e3d1d7e2d1dae3d1d9e2d2dce5cdd6e2ced7e5cad4e3cdd3e0ced3e1cfd6e3d0dae2d1 *dce4d2dbe4d1d8e4cfd5e2cfd6e3d0d6e3d2d9e3d2d8e2d1dae2d2dde5d3dce6d3dde6d4dde7d4 *dbe4d5d9e3cfd9e3cfdae5cfd8e2ced9e2d0dbe6d1d9e5d2dbe4d1d8e3d2dae4d1dae3cfd9e2cc *d5e3ccd5e2c9d4e2cad7e2ccd6e4ccd5e3cdd7e2ccd6e2cbd4e2cdd7e3d1d9e6d3dbe5d4dee5d3 *dde6d4dde6d1d8e3ccd6e3cad3e1c9d1dfc8d0e1cad4e4ccd6e3ced4e2cfd3e2cdd5e2ced6e2ce *d6e3d1d8e3d1dce6d2dde4cfd8e4ced7e6d0d6e3d2d8e3cfd7e3cfd7e2cdd6e1ccd6e3ccd6e3d0 *d6e5cdd3e5ced5e0ced6dfccd5e0ced6e3d0d8e5ccd9e5cdd8e3cdd8e3cfd7e3d1d8e3d1d7e3cf *d6e3cfd7e4d0d8e5d1d8e4d1d7e6d0d8e3d1d7e3d0d6e2ced6e4cbd5e2cbd5e2c6d2e2c0ccdebe *cce0bbc8ddbbc8dcbecddebdcbdec0cbddc0ccdfc0cddfc2cedfc3ccdfc1cddec3cddcc2ccdebf *cbdcbdccddbdcbdeb7c9dcb6c7d9b2c6dab3c3d9b6c0d7b1bfd4a9bbd3a7bacfa0b5cda5b4cc9e *b4cea0b3cba0b1cca4aec6a4b4cca9b6cca6b5ceaabbceaebbceaebdd1b1bdd2b0bbd1b1bdd0b5 *bed3b2c0d4b5bfd3b3bed2b0bdcfadbbd1b3bdd2b5bfd1b6bdd2b7c0d1b3c0d0b2bcceb7c1c5c2 *cbcec6cdd39bb9d29dbbd09eb7d19bb6cf9ab8d09cbbd196b6d1a2bdd39eb9d09ebcd799bbd2a0 *bbd19db8d09db9cf9bbbd199b6cc99b5d09eb9d39cbdd19ab8d29ebad193b8d0a4bed2a9c1d5aa *c1d6afc2d6b5c7dbbbcbdbbcccdcbbccddb5cadab1c3d7b5c6d9b6c4d8b4c5dbb9c8dabdc9dbba *cbdbbbcadbc1ccdcc4cedfc1cedec3cedfc6d1e0c6d1e0c1cedfc6d1e0c4d3e1c6d1e1c6d1e0c9 *d0dfc9d3dfc7d1dfbbcbdbb9cbdabdccdcbfccddbfccddb7c7dabaccdeb9c7dbbbcbdcbbcadbb7 *c9d9b1c8dba9c2d8a4bcd3a3bcd5a4bbd1a7bdd3afc0d3b8c6d8bbc7d9bbcbdcbbc9d8b9c8dcb5 *c7d7b1c5d9b2c3d6b3c3d4afc2d3b6c4dab3c5d8b4c3d4b1c3d7b0c4d5b4c6d9b4c7dbb8c6d9b7 *c6d9b3c4d6b4c6d9b7cadbb8c6dbb6c6dabbc9dbb7c7dbbbcbdcc1ccdfbfccdebdcbdec1cde0c1 *d1dec7d2e1c6d2e0c8d3e1c7d3e0cbd6e2ccd8e5cdd7e5ccd8e5ccd8e3cfd6e5cfd9e6cdd8e3ce *d8e5cfd8e5cdd9e3ccd6e2cbd7e4cbd6e4cfdae5ced9e6d1dce7d1dbe6cedbe6d0dce5d1dbe6ce *dae5cbd8e5c9d4e3c4d3e2c1d1e0b6caddb2c5d8aec2d6b0c1d7a6bed1a9bdd1aac0d3adc0d4ad *c1d6afc3d7adbed0abbdd5aebdcfaebcd3b1c2d4b0c5d9b8c8dbb9c9dbbac8d6b7c7d6b8c5d7b7 *c5d8b9c5d8b7c7d9bbc8d8bccbdbbecbdac1cddec1cedbc1cedec3cddcc4d0ddc3cfdec6d0dfc8 *d3e2c9d3e1cbd8e0d2dae2d2dae2ccd8e3cbd8e2c7d4e3cbd5e2cbd6e3ced8e3ced9e2ced8e4cd *d8e4cfd8e4ccd8e5d0d9e5d1d9e5d1dbe6d3dbe7d2dde4d3dde5d2dbe5d1dbe5d1dbe5d1dbe4d1 *dae3ccd9e5cdd7e1ccd9e1cdd5e0c6d2e1c6d1e1c4d0e0c2d0e0c1cfddbecee0bccbdcb6c8d7b7 *c6d8b7c6d8b3c4d7b7c7d8b5c7dabbc9d8bac8dabbcadabcc8dcc0c8dabdcadabfc9ddbfccddc4 *cfe1c7d2e0c8d3e0cbd6e2ced8e4ccd6e1ced9e4ccd6e4c8d4e2c3d1e2c1cddec3ceddc3cddbc3 *cedebfccd9c2cedec5d1e2c8d1e2c5d1e2c9d6e2c9d4e3ccd6e3ccd7e2c8d3e1c7d1e0c6d4e1c4 *d0e1c6d2e1c5d1e2c5d1e1c2d0ddc2d0dcc6d1dec2d0e0c4d2e0c6d1e1c5d1e0c5d1e0c3d1e0c7 *d3dfc8d1dfc9d6e3c6d6e4ccd9e5ccd7e4cfd9e5cdd8e4cedbe3ccd6e1ccd7e2c9d3e1cad5e3c9 *d5e3cbd3e2c6d6e2c9d4e2c7d3e0c7d1e0c2cfe0c2d1dfbfcfddbeceddbdcbddbac8dcbccadabc *cadbbdcadcbcccddb8cadabdcbdbbbc9d8b9c7dcbccadcbccadcc1ccdcc3cedfbecedfbfcedebe *cee0c1cedfc1cedec2cdddc1cedec0ceddc2ccddc3cdddc3ccdec2cedfbfcedfc1cedfc2ccddc1 *cee0becedebfccdcb9ccddbacbdabeccdbbdcbdbb9cbddbdcde0c1d0e0c1cbd9c1d0dec1cedec1 *cfdfc6d1e1c6d2e0c7d2e2c7d1e1c7d2e1c9d4e1c9d4e0c6d1e1c5d2e1c5d1e0c5d1e1c4d1e0c5 *d1dfc7d1e0c6cfdfc5d2e0c4d2e0c6d4e3c2d1e2c1d0e1c1cedfbfcddebdcbdebdcfe0bccfdfba *cedebbccddbecddebfccddbcccddc0cfe0c2cce0c1cedec3cfe0c3cee1c5d1dec6d0dfcad4e2c8 *d2ddc6d5e1c8d3e2c9d6e2c7d4e2c8d3e2cbd4e2c8d2dec7d1e0c8d1e2c8d4e1c7d4e1c7d4e2c8 *d5e0c7d2e2cbd5e2ccd6e4ced8e3ccd8e1cdd8e5d0dae5d0d9e4d3dce6cfd9e4cfd9e5ced8e5cd *d8e2cbd5e2c5d1dec3d1e0c0cee0bccee0becfe2bcccdebaccdfbbcce0bdcee0bacedebccedfbe *cce0bfcee0bdccddbecce0c2cddec3cde0becee0c1cfddc2d1dfc1ccddc2ccdebdcddfc0cbddbf *ccddbccde0c0cdddc1cddec0cbdec0cdddc3cddfc2cddfc2cee0c5cee0c6d1e0c6d3dec9d4e0c9 *d1e1c7d3e1c8d3e0c9d3e1c9d2e0c7d4e2c7d5e3c8d5e3c7d4e1c6d0e0c7d3e0c7d2e1c9d4e0cc *d7e5cdd8e4cdd8e4ced8e0d1d9e2d1d8e4d2dae4ced8e5ccd7e4cbd8e3ccd7e5cbd7e2cdd9e2d1 *dae3d2dbe4d1dbe4cfdae3cfd9e3cfd9e3cedbe4cfdbe5d1dbe3d3dbe3d4dbe5d2dce6d1dce6d3 *dde4d1dce5d2dbe5d2dbe5d2dbe4d2dbe4d0dbe4cfdbe4cfd9e4cfdbe3d0dbe6d2dce9d3dbe6d1 *d9e2ccd4e1c7d5e2c6d3e2c6d3e1cbd7e6cbd7e5c9d6e3ccd6e3ced6e3ced6e4ced9e6cddbe4d1 *dce6d0dce7ccd8e5cbd7e2ccd9e3cad4e0c8d3e0c8d3e2cad5e3ced7e3d1d7e5cfd9e3cedae4d1 *dae3d0d6e3ced8e4cfd9e5cdd7e3cdd6e5cdd5e6cfd9e6d1d9e4d1dce3ced9e3cdd6e3cdd6e4cc *d7e5ced8e3ccd6e3cbd8e5ced8e3ced9e5d0d7e4cfd8e5cedae3ccd6e4ccd5e5cdd6e6ced7e6cf *d7e3ced6e0ced6e3cdd6e5cdd6e4ced6e3cbd7e5cbd7e5c9d8e3cbd6e2c8d3e1c7d1e3c0ccddbb *cbddb6cadeb1c7dbb4c7dcb6c9dcb8ccdebbc9dcbbccdeb9caddb9ccddbccbddbccce0c1cde0c2 *cedec1cbdcbdcbdcbdcbdcb6cbdbb2c7d8b3c7dbb5c7dcb8c2d7b1c1d7afbfd3a9bcd2a9bed1a6 *bccea2b4cca1b6cfa7b2cea5b5ccaab8cdaebbceacbbcfa9bbd0adbdd3b1c0d6b2bfd5b3c2d6b9 *c4d7bbc8d9bac3d5b8c3d4b7c2d4b7c3d3b2c0d3b3c0d0b7c1d2b8c2d4b9c3d4b5c2d2b6becfb7 *c1c6c1cacfc5ced39cb8ce9fb7cf9cbad2a0bbd49bb8d39bb8d199bbd39bbdd5a3bbd59cbcd3a0 *bdd69cb6d39abdd8a2bbd49fb8d29bbbd29abad199bad094bbd49fbdd49eb8d392b6d2a0bcd39b *b9d69cbcd49db9d4aac1d9abc2d9abc1dbabc2daafc2dab7c6d9b2c7dab5c5dab6c6d7b9cadac2 *d0dfc1cedec0cddcbecaddbccadcb8cadeb9cbdebbcce0bdccdebdcadec0ccdec3cfdec1cee0c6 *d0e0cbd5e2ccd6e3c7d2e1c3cfdec1cfdfb6c9ddb5c9deb3c3d9aac2d7a7c3daa5c1d8afc4dbae *c6dba7c0d6a4bed6a4c1d6a4c0daa4bfd5a1bfd7a4bed5acbed8b3c4dab8c7dcb9c7dcbbc9dabb *c8dbbbcadcb6c6dcb4c4d6acbfd6afbed4b4c5daadc0d5b1c2d6b1c4dab0c4d8b1c3d8b6c6dbb7 *c8dbb8c6d9bac6dabac7ddbcc8dbb9c9ddbac8dabbc8dcbdcadec3ceddc0ccddc1cfdec1ccdec3 *cfe2c4d3dec6d4e1c4d4e3c8d2e1c6d1e4cbd6e5cdd7e5ced7e5ccd8e5cdd8e5ccd7e4cdd6e5cc *d8e4ccd8e5cdd6e3cdd6e4cdd8e4ccd7e4cdd9e4d0d9e5d0dbe5d1dae7d1dae7d0d8e5d2dbe4cf *dbe5cedbe4ccdbe3cbd6e4c1d1e2b7c7dcabbed5aabdd5a8bed8aabfd4aac0d4abbdd4abbdd6af *c2d5b5c1d2b0bed1aabed1b1bcd4b1c0d3b2c4d6b6c3d6b9c8d9bdc9dcb8c7d9b7c7dbb1c3d7b6 *c3d5b8c8dbbdc9d8bccadcbdc9dabbcadbbeccddc5cfe1c5cedec2cee0c8d1e2c6d1e0c6d1e0c8 *d2dfccd6e0ced6e2ced9e3d1dbe5d3dbe6d0dde9cddae4cfd7e3cdd6e3cfd8e3cfd7e2d0dbe5cf *d9e3ced9e4d0dbe5cedae4d0d8e3d0dbe5d2dce6d4dbe5d4dde8d3dde7d4dde7d4dee7d4dde7d3 *dbe7d1dbe5ced8e3ced9e6ced8e4c6d3e3c6d1e1c1cfe0bed0dec0cdddbdcddebdcbddb8c8ddb8 *c7dbb6c5dcb9c7dbb5c6d8b6c5d8bac8dbbdc9dbbdcadabfcddec1ccddc4cedec4ceddc6d0dbc6 *ceddc8d2e2cbd1e0cbd6e0ccd7e4cedae6d1dbe5d0dce5d1dae5cad7e2c6d2e2c2d1e1c5cddcc3 *cedfc1ccdec3cee0c5d1e0c6d3e2c6d3e0c3cfe1c9d5e2cbd4e2c7d5e5c8d5e1c8d3e3c6d3e1c6 *d3dfc1cfe0c2d0e0c0cfe1c3cfe0bfd0e0c3d1e0c3d0e0c6d1dfc7d1e0c8d0e0c7d0dfc6d1e0c6 *d2dfc7d5e2cbd4e3cdd3e3cdd9e3cfdae3ced9e5cfdae6cdd9e5ccd9e4ccd8e5ccd6e3ccd5dfcb *d3e2c8d3e2c7d4e2c7d3e2c7d1e0c4cfe1c6cde0c1cde0c3d0dec3cfddbecedbbbcbdcbdcbdbbe *ccdfbfccdfbdcbe0bdcbe0bdccddbeccdfbdcbdcbbcad9bcc9dbbbcbdebacadfbfcbdfc0ccddc0 *ccddbecedec2cee0c3d0dfc4d0dec5d1e0c5cfe1c7d2e2c3ccdfc5cedbc0cbdbc1cedec1cee0bc *cbdfc1cee0becce0bcccdfbacce1bccce0bdcddebecbe0bbccddbccdddc1d0e0c3cddfc3ceddc4 *cedec3cee0c4cfddc3cee0c6cfdfc6d1dfc8d3e2c8d3e2ccd5e2c8d2e3c6d1e1c4d0e2c6cedfc5 *d0e1c7d1e0c6d2e0c7d1e2c6d1e2c9d3e2c5d2e0c3d0e2c1d2e0c1d0e0c1cde0bbcde0c1cee0c0 *cee0c1ccdebbccdebecddebccbdebfccdec3cedfc4cfe0c5d1e0c3cee0c5d2e1c6d1e1c8d3e3c9 *d2e0cad4e2cad5e3cad3e2cbd5e2ccd6e3c9d7e1c9d6e3c5d1dfc6d3e3c8d2e0c9d3e0c9d3e2c7 *d2e3c8d3e1c9d6e3cbd5e4cad3e2cbd5e4cdd6e4cfd8e3d0d8e5d2dbe7d4dbe6d0dde7d0dbe6d0 *d9e5ced8e5cfd8e4c6d1e1c5d1e0c2cee0c1cfe1bbd0e1bdcce0b9ccdebbcddfbacee0bdcee2c1 *ccdec3cee2c3d1e1bfcedfc1ccdfc2cfe0c3cee0c2d1e0c4cfe1c3cedec6d1dec4cfe0c2d1dfc1 *cee0bfccdec1cee0becde0bdcbdec0ccddc1ccddc3cfdec4cee1c2cde0c3cddfc1cddfc4cfdfc9 *d3e2c7d2e2c8d2e1c5d2e2c5d1dfc3d1dfc2d0e3c3cfe2c5d1e2c6d3e0c6d1e3c6d3e1c3cee1c9 *d3e0c8d4e2c9d7e1ccd5e2ccd6e4d1d8e3cedae4cdd9e5ccd8e3ced7e5cad5e4cad6e2ccd4e2cc *d7e3cadae4cedae4d1dce5cedbe3d1d8e5ced8e4d1d9e5d1dce5d2dde8d2dde5d3dde7d2dce3d1 *dbe4d1d8e3d0d8e5cfd9e4d2dbe5d2dce6cfdbe5cfd9e4cdd7e5cdd8e6ccd7e4ced8e3cedae4cf *d8e5cbd7e4c8d4e4c3d1e1bdcee2bfcfe1c1cedec3cee1bdcce0b8cbdebdd1e0c2d4e3c7d5e3cb *d6e3ccd6e4c8d5e2c2cfe3c3cee0ccd7e3d0dae5d1dce5ced9e3cdd8e2d0d7e4d0d8e5d0dae5ce *d8e5d0d8e6cdd8e6d0d8e6cfdae5cfd8e4cdd7e2ccd7e6cdd6e6cdd6e5cfd7e5cdd7e4ccd7e5cb *d8e5cbd6e3ccd5e3ccd5e3c9d5e5cdd6e5ced6e6ced6e3ced8e5ced8e5ced8e2cad5e3cbd4e4c7 *d3e3ccd6e5ccd6e3ccd6e5ccd3e3cad5e3c9d3e2c9d3e3bfd0dec1cfe1c3cde1bdcce1bcccdfba *cbddbacaddb6c8dbb1c6dbb4c6ddb2c7dcafc7dcafc6dcb0c7ddb2c7ddb3c7dbb5c9dcb3c9dcb9 *cadcbacce0bdccdfc0ccdfbdcbdec1ccdfbbccdebfcbddbdcaddbdc9dcb4c3d8b1c2d9aec3d8ab *c0d5a9bcd2abbbd1abbbceaabbcdb0bed1afbfd4b1bdd3b1bbd5b3c1d2b1bdd1b3c2d3b4bfd1b9 *c6d6bbc6dcbec9dbc0c7dabfc6d8bdc2d8bcc6dabdc6d8b8c6d7b7c3d7b9c6d8b8c3d7b4c3d6bc *c4d2bac0c2c1cbcfc5cfd397b5cb9fbad097b9d195b9d197b7ce9cbad1a1bdd38cb7d09bb7cf97 *b6d39ab6cf99b5d09ab6cf95b6d194b8d197bbce99b7d19eb7d199bad09db8d199bbce97bbd399 *b7ce96b9d296bcd29dbacf9ab6d29db8d39cb7d1a0bdd4a7c2d4a8c2d7a5c2d6a3bfd7adc3d9b7 *c9dbbdcbdcb7cbdbadc5daaec5d7b1c8dbafc6d9a5c2d7a3c2dda4c0d7abc1d8b1c8dabfceddbe *d1ddc1d0e0c6d3e1c5d2dfbecbdbb5cbddaec8dca0c0d6a0bdd3a2bdd3a1c0d5a3c1d79cbcd5a4 *bfd6a1bfd69fbdd39dbcd499bcd5a1c0d69fbdd49cbdd39fbdd4a6bdd3adc2d4b5c6d9b7c8dbbc *cadcbccadabbc9dab6c7dbb7c6dbb3c4d6b1c2d8afc0d4abbfd4a8c1d4acc3d7aec4d6b2c4d8ae *c4dbb1c4dbb1c3d6b4c6d7b3c4d7b8c6d7bbc9d6bac9dbbdc9dcbfcbddc1ccddc0ceddc2cedec0 *ccdcc2cddec4d1dec5d1dfc8d2e4c8d1e4c7d4e2c9d6e2cad8e2ccd7e3ccd8e1ccd8e3ccd8e4cc *d9e6ccd8e6cbd8e3ccd8e2cdd8e5cbd8e3cbd8e4ccd8e3ccd8e5ccd7e6cdd7e6ccdae4ccd8e4cd *dbe3cbd8e3c9d9e5c9d7e3c4d0e0b1c3daabc1d5aabed2adc1d4aabdcea9bcd1abbdcfb4bfd4b1 *c0d1aec2d6acc1d6aec0cfadc1d3b4c3d4b1c3d4bac6dabac8d7becbddbecedbb8cad8b6c7d6ba *c7d7bac8d7bdccd8c0cddbc2cddec1ceddc1cedbc0cedcc3d1dfc4cfdec4d1e0c8d1dfc5d1dfc8 *d3e1ccd5e2cad6e2ced9e2cedae3d1dae3d0dbe3d2dbe3d0dde4cfd9e5cddae3cedae2d0dae3ce *dae3cbd8e2cdd8e3cfdbe5cfdce5d1dce5d2dde6d2dde5d2dee5d1dde5d1dce5d0dde5d2dce5d3 *dbe7d3dbe6d0d9e6cdd8e3cbd7e5c8d6e2c1d0e0c1d1e0bfcfdebacddebcccdab9cadbb6c7d9b5 *c7d8b3c5d7b5c5d9b6c6d8b6c8dbbac8dabccadcbfccddc0cedfc2cddcc3d0ddc3cfdec5d1e0c9 *d3e0c7d3e0c7d4e2cad5e2cbd6e2cbd8e3cdd9e4ced9e3cedae5cedae5cbd9e3c6d2e2c3d0ddc2 *cfdec0ceddc2ccddc1ceddc5d1dfc5d3dec7d3e0c5d2e0c6d2ddc6d3e1c6d3e1c7d3e0c7d4e2c9 *d5e1c5d2e1c5d0dfc2cfdebbccdebecddec1cddec4d1dfc5d1dec5d1e0c7d4e2c9d3e2c8d3e0c6 *d2e0c6d3e2c8d3e1c9d4e2cbd6e1cbd8e1d0dae3cedae4cedae6ced8e4ccd9e3ccd9e2c9d7e2c9 *d5e1c8d5e2c7d4e4c7d2e2c5d1dec7d2e0c4d1e0c6d2e2c1cedec2d1dfbfcfdcc1cfdebbccdfbe *cbdabbccdcbcccdbbdcbdebaccddbccbdcbaccdcbacadabac9dab6c7dab5c7d9bccbdcbbccdeba *cbdcbccbdcc0cfdec2cedec3cddfc7d0dec4d1e1c3cfe1c2cfe2c3cedfc1ceddbfcedabdccddbd *cbd8b9cbdebbcbddbcc9dbb6caddbaccdbbaccdbbacbdabdccddbbcbdebdccdcc0cddcc1cedcc3 *d2ddbfcedfc6cedcc5d0dfc2cfdec4cee0c6cfe0c6d1e1c7d2dfcbd4dfc6d1dfc3d1dfc1ceddc1 *cddfc3ceddc4cfdec4d0ddc5d0e1c4d0e0c5d2dec4d2dfc4d0e0c1cfdec3cfe0c1cee0c1cddec1 *cedec3d2dec1d0dec1d1e1c3cedec3cddec4ccddc5cfdcc2cfddc4d1dfc5cedec6d1e0c4d1dec8 *d1dfcbd5e1cbd4e0c9d3e0cad6e1c9d4e2cad6e2c7d3e0c9d3e2c9d3e2c8d2e3c8d2e0c7d2e0c8 *d3e0c7d2e0c8d3e0c6d5e0c7d4dfcbd3e1c9d3e2c8d4e2ccd6e2ccd8e3cfd8e5d0dbe5d1dce5d2 *dce5d0dbe5d1d9e5cbd6e2c8d1dec3cedec0cfdfc3cddebacedebfccdebbcbdeb9ccddbccddfbf *d0e0c0cedec3d1dec3cfdec1ceddc3d0e0c6d0e2c3d1e1c3d0dfc5d0dfc4d1e0c7d1e2c6d1e0c6 *d2dfc6d0e1c3cfdec2ccddc1cdddbecbdcbfccddbfccddc2cddec1cddec2cedfc2cddebfcedcc3 *d1ddc3d1dfc3d3e1c4d1e1c3d1dfc3ceddc3cedfc3cee0c1d1dec3d1dfc5d1dec1d2dfc3cfe0c4 *d1e2c6d2e2c7d2e1c6d4e0c8d4dfc7d4e2c8d2e1cad5e1c9d3e1c8d3e2c7d2e1c5d1e2c4d3e0bf *d0dfc0d1dec4d1dfc9d6e2cdd8e2ced9e3d0d7e3ced9e4cedae4d1dce3d1dbe5d0dbe5d1dbe6d0 *d9e2cdd9e4cfd8e3ccd9e4cad6e3ced8e3ccd8e3cad7e2c8d8e3c9d7e3c9d6e3c9d6e5cbd6e1cb *d6e2c9d6e0c5d3e1c1d0e1bacddeb9cddeb8cde0bbcbe0b5c9ddb0c7dcb1c7d9b0c8daaec7d9b1 *c7d8b6c9dab7cbddb3c9ddb7cbdcbbcaddccd7e3d0dbe4d3dde5cfdde5cddde5d0d7e4ced8e5ce *d7e3cdd7e3cfd8e3cfd9e4d1dbe5cfdbe6d1dde6cfdae5ccd8e6ccd7e4ccd6e3c6d6e2bcd0e0be *d1e0bdd1e0bbcce0bbc9e0bbcbdec1d1dec7d3e2c9d6e3cbd6e3cad4e2c6d4e3c3d1e0c0cce0c1 *cedfc1cfdcc6d1e2bfcedfc1cfe0bcccddc1cfdec1cedeb6cadeb1c7dbb4cbddb3c9ddb1c7dbb1 *c6dbb0c8dcb1c7d9b3c7dcb1c6dbb1c6daacc1d7adc3d8adc6d9abc3d8adc6dbb1c8dcb0c5dcb1 *c6dab1c8dcb1c7dcb2c8dbb7c9d9baccdbbecedcc1cedec3cbddbfcce0bbcbdbb6c9dbb2c3d8b2 *c3d8b1c3d6afc0d3b1c2d3b2bcd0aebfd4b6c3d6b5c2d6b7c2d3b5c1d1b2c3d3b2bfd1b3c3d3b1 *c1d7b7c6d7c1c9dabec9d8bec7dac1cad8bdc9dabfcad9bfc9d9bcc8dabec7d8b8c6d7bdc6d7bb *c7d5bec9d3bac4c7c2ccd0c6ced299b6ce9ab9d09eb8ce9bbcce9bb6cf9fb6d19ab3d29fb7d097 *b9d095b7d49cb8d299b4d094b4ce93b5ce98b7d194b6d199b7d497b9d38fb4d096b7d091b7d195 *b8ce97b6d199b9d29bb8d19fbcd196b5d399b6d29cb7d299b7d29bbad19bb8d29ebcd395b9d39f *bbd6a8c0d9a5c5da9ebcd29cbbd3a0bbd49ebcd49fbcd5a2bbd39ebbd692b9d79bbad6a3bed5b1 *c7d7b7cbdbaac3dab0c8dbafc6dca4bfd6a1bbd3a4c1d69cbcd3a1bcd4a2bbd4a1bed4a1c1d69e *bed896bbd6a0bcd6a0bed5a0bdd49ebcd59bbed89abbd596bad59dbcd3a6bed6abbfd8b2c6dab6 *c7dcbbc7dbbbc7dbbacadbb9c8dab5c6d9b1c3d8b1c3d6aec1d5abbdd4a9bbd2a6bbd3a9bcd4ae *c0d7b2c6dbb2c4d9b5c7dcb3c5dabac6dbb7c7dbbdcadcbecaddc1cbddc0cadcc3ceddc4d1ddc2 *d2dec1cce0c3cfe1c5d1e3c6d2e2c5d3e1c4d2dec9d3e0cad5e2cbd6e0ccd8e4cbd7e5ccd6e4cc *d6e5ccd9e4cbd7e2cdd7e2cad5e3cbd4e4c9d3e2c9d3e2cbd5e2cbd6e3c9d6e3cbd7e4ccd7e4cd *dae7ccd6e4ccd7e2ccd7e4c8d1ddbdc8dab4c1d1bbc2d7bac7d8bbcadab3c3d9acbdd6abbed6b1 *c0d4b1c2d3b1c4d8b2c6dab0c6d8b6c4d8b3c1d8b6c6dabbc9ddbec9ddbecadbbecadcc0cbdbbc *cadbbdc9dcc4cdddc5cfe1c5cfdec1ccdec1cee0c2cee0c0cddec3cedec5cedfc6d0e0c9d3e0c8 *d2e1c6d4e1cdd6e3cfdae3cfdbe3d1dbe3d2dbe3d1dbe5d3dbe6d1dce5d1dce6d3dbe5cfdbe5cc *dae4cbd6e3cbd9e5ccd7e5d1d9e6d1dbe6d3dce7d5dce7d3dfe7d3dee6d1dde7d0dbe5d1dbe5d0 *d9e5d1dce5d1d9e5cedae5ccd9e6c6d4e2c5d2e1c1cde0c4cee1bfcddebdcbdcbcccdeb9caddb5 *c9dab4c5d8b2c4d9b5c6dab8c6dabbc7dbbcc9dcc0cde0c3ceddc2d0dec4d1e0c6d0dec9d2e2c8 *d3e2c9d3e0cbd3e2c8d3e3ccd6e3cddae3cedbe5cedae3d1dbe5cedae7d0d7e3c9d4e1c7d1e2c6 *d2e3c4d1e0c3cee0c1cedfc1ceddc1cedec2d1e1c5d1e2c7d2e2c4d0e2c6d1e2c6d2e1c6d2dfc7 *d2e3c8d2e3c6d0dec5d0e0c6d1e1c2d2e0c3cedec2cfdec3d1dfc4d0dec6d0dfc9d2e2c9d2e1c8 *d3e1c8d3e3c7d4e1c8d4e2cbd4e1ccd8e3cdd8e3d0d8e4d1d8e3cddbe5c9d8e4ced7e5ccd6e2cc *d5e3cbd7e2cbd5e0c9d1e3c9d3e3c7d1e2c6d1e1c3d0dfc2cee0c2cdddc1cedcc0cfdebecddec0 *cee0bccbdcbbcbdebecddec0cbdebdcbdeb9cbdabdcbdbb9cadab8cbddb7cbddb7caddb9cbddba *caddb9cbdcbbccddc1cfe1c0cedfc4d1e2c4d0e2c2cee0c0cddfc0cde0c1cfe2bcccddbbcbddbb *caddbfcbdfb7cadeb9c7dbb9c9dab9cbdcb8c8d8b8c7ddbbc8ddbfccddbecbddbdcce0c3ccdbc1 *cedec2ceddc3d1e0c3cfe0c4d1e0c5d0dfc7d1e0c6d2e2c5d2e1c7d3e2c7d3e2c5d0e1c6d1e0c5 *d0e0c6cddfc4cedec4ceddc5cfdfc3d1e0c2d0dfc2d1e0c5d1e1c6d2e0c4d1e1c8d0e2c4d1e2c5 *d1e0c3d1e0c3d1e0c7d3e0c8d2e0c8d1e0cad2e2c6d1e0c3d1e0c4cfe0c7d0dec8d1ddc5d1dec9 *d1e0c9d1e2c8d1e1cbd4e5cad5e1c8d3e1cbd6e2c8d5e2c9d3e3c9d5e2c6d3e1c6d3e2c9d4e3c8 *d3e0c7d2dfc8d1e0c8d2dec9d3e3c8d1e3c8d2e2c9d0e2c8d3e3c9d4e2cdd6e4ced9e5d0dae5d1 *dce6d2dee5d1dce7cfdae5ccd7e3c9d4e2c6d0e3c7d2e1c1cee0bdcedfc3cddfc1ccdebfcee1c0 *cfdcc2d0e0c2cedfc3d1e0c3d1e0c6d1e1c7d1e2c7d2dfc7d2e3c7d3e0c6d0e1c7d3dec6d1dec6 *d1e1c8d1e0c6d0e1c4cddec3cfdec1ceddc1ccddc0cbdec1cbddc1cdddc2ccddc1cddfc1ccdcc2 *d0dec2d0dfc6cfe1c3cfdec4cfe0c3cfdec6cfdec5cedec3d1e0c1cee0c1cde0c2ceddc1cdddc0 *cce0c1cedebdcedebfd0e1c3d1e0c3d2e0bdd1debfcddfc3cfe0c3d1e1c3d0dfc1cfdfbbcedebd *cce0bbcbddbdcbe0c1cedec2cfe0c7d2e2c9d6e2cbd6e1cdd9e4cedae5d0d8e4ced8e5d0dbe5ce *dae5cdd9e4cfdae4cfdae4ccd9e6ccd9e2ccd9e3c8d4e3bfd0e1bacde1bacde0bcd0e3c3d0e0c5 *d2e2c6d3e4c0d1e0bbccdfb5c8ddb1c7deb1caddb1c8dbb5c7dcaec9dfaec7dbabc7dab0cadaab *c5d9b1c6ddafc6d9b1c5dab2c7dab0c9dbb6c9e0c7d3e2cfdbe4d0dbe5cddbe4cbd8e5cad6e4cb *d6e3cad8e4cbd7e4cdd9e5cfdbe5ced8e5cfd8e5cddae3ccd9e5cad7e6c8d7e7c3d1e3b6c9dcb1 *c7dcaec6dcb1c6dcb1c6dcb3c6dbb1c6dbb2c9deb7cae0bdcde0c1d0e2bbccdebbccdeb6cbddb2 *c7dab1c9dbafc8dcb5c7dcb1c6dbb1c6daafc6dbb1c7dbb1c6dbb0c6dcafc6deb2c9deb4c8daaf *c5daaec6d9aec6dbb3c8ddaec5d9afc8dcaec7ddb1c7dcafc6d9adc6d9b0c5daaec3dbaec3daae *c1dbaec6dbaec6dcb0c4daaec2dab0c6dcb3c7dbb8cbddb9ccddc0ccdebecee0b7ccddb7c9dfb4 *c9dab8c9dab5c3dab5c5dbbcc7d8bac7d8bdc9d7bdcbddbfcbd9bbc7d8bdc7dabbc3d7bdc1d4bc *c3d6bdc6d8bfcad9c1cbddc2ccddc5cedbc4cedcc5ceddc6cdddc5ccdbc4ccdcc1cedec2cbdec1 *c9d9c1c8d4bdc6d3bcc4c8c3cbd0c6cfd497b5cd9bb9ce96b6d296b5cda1b8cfa0b6ce97b6cf96 *b8cc94bbd092b7d191b6d297b7d096b5cf96b4cf96b6cf95b8cf8fb3d08bb3ce98bbd192b6d19d *b6d09ab7d295b6d399b6cf97b9d094b5cd9bb9d19ebcd294b3d19bb6d28eb7d39ab9d09cbad39a *bad39bb8d39fbad19abbd2a0bdd3a0b9d49abad494b6d298b9d399bad397bcd69bbdd695bad597 *bbd399bdd39cbcd3a0bdd69cbdd6a1bcd6a0bbd49ebcd599bcd39bbbd39fbbd39fbbd29cbbd49d *bcd49ebbd59cbcd6a0bfd6a1bed69cbdd69abcd598bad793b6d39ebcd49cbbd3a2bdd5a4bcd4ac *bfd7b3c4d9bacadebacadebccbdbbbc7d9b5c6d8b3c5d8b0c4d8aec1d7aabed5acbed4a4bdd4ab *bdd4aec1d8b0c6d9b6c8dcb6c7ddb8c9deb8c9ddbbc9dbbdcbdebbc9dac0cdddc1cfdec1cedfc3 *cfe0c1d0e0c6d1e0c4cfe0c2d1e1c6d3e0c6d4e1c8d3e2cbd4e3c9d6e5cbd5e4cad4e4c9d6e2cc *d6e2cad6e2cbd6e4ccd7e2ccd8e3c9d6e2c8d4e4c8d4e4c7d3e1c7d4e3cad5e3cad5e2ccd6e4cc *d9e5ccd8e6ccd7e3ccd9e3c9d5e3c6d1e3c3d0e1c6cedfc6cfdec2ceddb3c8ddaec5d8b0c3d6b2 *c2d6b2c2d7afc3d8b4c3d7b8c6dbbac9d9bbc9dab9c7d8bac6dbbbc7dbbcc8dac0c9dbbecbdcc2 *cfe0c3d0e0c6d1e1c9d2e3c8d2dfc6d0dec7d0ddc6d1e0c6d1dfc4d0e0c6cedfc7d2e1c6d4e2c9 *d4e2cad4e0cbd6e2cdd6e3d0d8e5d0dbe5d0dbe6d1dce5d3dce6d3dde6d2dce3d2dee6cfdbe6ce *d8e4cad6e3cbd8e5cad7e3ced8e5cedbe4cfdae5d1dde6d3dce7d3dde7d2dde6d1dce7cedbe5cf *dce4d1dbe2d1dbe3cfdbe5ccd8e5cad6e3c6d3e2c4d2e2c3d1e1c2d0dfbecddcbaccdfb3c9dcb3 *c6d9b3c6dab6c5d8b4c5dab8c9dbbbc6d8bccbdebecadcc2cddfc3cfe1c6d0e1c7d2e2c5d4e3cc *d7e2cbd6e5ccd7e3ccd4e2cdd8e5ced6e6d0dbe4cfdbe6d1dce6d1dbe5cddae4ccd7e3cdd6e2cc *d5e4c4d1e2c5d1e0c5d0e0c1d0e1c1cedec6cfe0c3d3e0c8d3e0c8d1e1c7d1e2c8d3e4c4d2e2c6 *d2e1c6d1e1c3d0e0c4d1e0c6d1dfc6d1dfc7d2e2c4d0e2c6d3e1c9d3ddc7d3dfc8d3e0c9d3e2c8 *d3e2cbd8e2cbd4e2c9d7e4c9d8e3cbd6e5ccd7e3cbd6e5ccd8e0ced8e3ccd8e5ccd5e5ccd6e4c9 *d8e4c7d3e1c9d4e2c9d4e2c7d3e2c7d1e2c6d1e2c3d1e0c0cedfbecee0c1cedfbccbddbfccddbe *ccddbdcbdfbecbddbfccddbccddfbdcbdcbacaddbac9dbbbc9dbbac9dbb9cadcb9caddb7c9dfb7 *cadeb9cadeb8cbdebccbddbacddec0cddfc0cedfc1cee0c1cee0bbcee0bbcbdebdcbe0bbc9ddbb *cbdbbacbdcb6caddb5cadab3c7dbb9c7d9b6c6dbb8c8d8b6c8dbbbc8d8bcccdebdccdebfceddc3 *d1dfc4cde1c1ccddc5cedcc4cedfc7d1e1c4d1dfc6d2e2c7d1e2c9d3e2c7d1e1cad4e1c7d2e2c6 *d3e3c5d0dfc6d1e0c5cfe0c2cedfc4cfdfc3cedfc3cedfc5d1e0c6d1e2c6d2e0c8d4e1ccd3e2cb *d4e2ccd6e2cbd4e1c9d3e0c7d5e2cad2e3ccd4e3c9d4e0c8d5e2c7d2e0c5d1e0c7d1e0c6d0dec3 *d1e1c6d1e0c7d4e4c9d4e2cad3e0ccd6e2cad2e2cad3e0c9d4e2c9d4e3c9d4e2c7d2e0cbd4e3c9 *d4e2c9d3e1c8d1e2c7d0e0c8d3e0c8d2e1c6d1e2cad2e2c9d1dfc8d2e0cbd5e3ccd6e3ced8e5d0 *dbe6d1dce7d1dce4d1dbe5ced8e4ccd6e3c8d3e2c5d1e1c1cedec3d0e1c0cee0c5cfe2c4d1e0c5 *cfe2c2d1dfc3cfe1c5cfe0c6d0e1c5d2e2c6d2e2cbd3e0c7d5e2cbd5e3c9d5e2c8d2e0c6d1dfc9 *d2dec6d1e1c7d1e1c6d1dec3d1ddc0cedebdccdbc0cadec2cbddbbcbdebecddebfccdec3cedfc1 *cfe1c6d0e0c6d2e2c4d0e1c5cfe0c3cfdec3d1e0c4d1e0c5cfdfc3d1e0c4cfddc0cde0c1cddfbb *cbdebecdddbbccddbdcbdabdcddcbaccdcbeccddb8cbdeb6c9e0bbccdebacbdeb9cae0baccdebb *ccdebdccdebbccdebecee0bacce0b8cadebaccdec1cddfc4d2e0cad4e2cdd9e4cedbe4ced8e5cb *d8e3cbd5e2cbd8e3ccd8e3cbd7e1cad6e5cbd7e2c4d2e4bccde2b4c9ddb3c9dbb4c8ddb1c9deb3 *c9dbb6cce0b3cbdfb4cbe0b1c8ddaec6daaec7dcb1c7dcacc7dab1c8ddaec6dbaec7dcacc6dbae *c6dbb4c7d8acc6dbaec7d9aec6d9afc6deb2c9deb5cadec0d0dfc8d6e4c8d6e4bdd0dfb6cbdeb5 *c7ddb5c5d9b8c9ddbecfe2c9d5e3cbd7e3c7d5e2c1d3e2b7ccdfb5c8debacadeb6cadfb2c9ddaf *c7dda9c3d9adc6daaec4d8abc6dbb3c6dbb1c6d8afc7ddabc3ddb1c9ddb3c9deb1c8dab1c6d8b0 *c3d8afc4dbaec4dbaac3dbacc6dbabc6daa9c4d8adc3d9acc3daadc3dbadc6dbaec6dbacc6ddae *c5dbadc6daaec3d9adc4dbadc1d8abc4daadc5daacc4dbabc2d9aac4dbadc3d9a9c3d9aec2daaf *c4d8acc0d8abc1daaec6d9acc4dcadc4dbaec4dbadc3d9b3c5d9b7c9dbb5c9dbb3c8ddb3c9ddb3 *c8ddb9caddbbcadbbdc9dbbac9dbc0cbdfc3cadec7cedfc1caddc1cedec1cbdcc1c9dac1cbdac1 *cbdbc0cad8c1c8ddc1ccdec3cedec5cedfc6cfdec7cfddc6cedfc8d1dfc7ccdec8cfddc7cfdec8 *ceddc7d1dec5cedac3cbd5bac5c7c1cbd0c4cdd497b5cea1bad199b9d19bb8d29ab4d399b4d194 *b4cd9fb6d099b4cf92b6d19ab8d29bb6d195b4d199b6cf96b1cc96b6ce96b4cc98b2cd97b5ce8e *b3cc95b5cd91b2cc93b5d392b3cf98b5d298b7d298b6d198b6d19ab7cf9dbad49ab8d397b5d39d *b7d297b3d09db6ce9fbad09abbd299bdd3a0bad29ebad794b7d494b4d299b9d399bdd694bad69a *bdd5a0bfd69fbdd79ebcd69fbad59eb7d29bb9d19bb9d39bbbd49dbcd59ebdd69cbbd49ebbd5a1 *bcd6a0bed59fbcd59dbcd597bad19bbdd79abbd398b9d39dbbd498bbd49abbd598b9d59ab9d3a1 *bcd4a6c0d5b3c6d7bbc7dcbdc9deb9c8dab9c7dbb2c3d7acc2d7aec2dbacc2d6adc3d9aac0d6a4 *bdd3a5bcd5acbed8afc2dbb8c7dbb3c6d6b6c9debac9e0bbc9debbcae0bdc9ddbbcbddc0ccdec1 *cde0c3cedec6d3e0c6d2e0c5d1e2c3d1e1c6d1e0c6d3e1c7d1e1c9d2e0cbd6e3cbd6e4cbd5e3ca *d4e1cbd6e4cad5e4cbd6e4c9d5e3c8d4e4c9d3e2c7d2e3c7d3e4c7d3e4c6d2e2c6d3e1c7d3e2ca *d4e3c9d5e4c8d3e4cbd3e2cad6e2c8d4e3c8d2e2c6d3e3c7d2e2c8d3e2c3d3e3acc1d6acbcd6ae *bfd7b1c3d9aec4d8aec2d6b3c4d8b9c6d9bdccdbbbc9dbbbc7d8bac7dabdc9ddbeccddbeccdbc6 *cfddc6d1e2cad4e3ccd6e3cbd5e3c9d3e2c8d4e3cad2e2c9d3e2c7d2e2c9d1e2c9d4e2cad5e2c7 *d2e1cad6e4cbd6e3ced6e3cdd7e5d0dae5d1dae4d3dce6d3dce7d2dce7d1dce7d1dde9d1dce5d1 *dbe5cfd6e5cdd6e3d0d9e3d0dbe3cedce5d0dbe7d0dae5cedae4cfdce5d1dbe5d3dbe5d1dbe6ce *dbe4d0d9e4d0d9e5d1dbe6d0d6e4ccd6e2c8d1e2c6d3e0c5d2e0c2d3e3bfcfe1b8cadfb3c9dbb1 *c8dab2c8dab1c7dab6c7dbb7c9dab9c9dabac8dcbdcbdec4cddfc2cedec7d1e0c8d3e2cad6e0cc *d6e3cdd8e3ced8e5ced8e5cfdae4d1dbe7cedbe4ccdae5d2dbe6d1dbe4cfdbe6ccd8e7ccd8e4cc *d7e4ccd6e3c7d5e2c6d3e0c6d2e2c4d2e2c3d1e1c5d3e3c6d3e1c9d3e1c7d1e0c8d1e0c7d3e2c8 *d4e2c5d3e1c6d3e3c7d3e3c3d2e3c5cfe0c8d2dfc8d4e2c8d4e1c9d5e2cad8e3c9d6e3c9d4e3c9 *d4e4cad5e3cbd7e3cbd6e3ced9e5cfdce5cfdae6cdd9e7cdd8e6cdd5e2ccd5e3ccd8e4c7d5e3c7 *d4e0c7d3e3c4d3e2c6d1e2c6d2e0c6cfe0c1cedec2cfdfc2cfdfc3cee0c1cee0c1cde0c1cde0bd *ccdcbbccddb6cbdcbccbdabecdddbfcde0baccddbbcbe1b8cae0bbccdeb9ccdcb8cadab7cbddba *cbdeb9cbdeb5caddb8c7ddbac9dcb7cadbb4c8ddb7c8debbcbddbdcbdebacbdcbccaddb6c8dbb7 *c8dcb9c9d8b7c7dab6c5d9b8c7dcb8c7e0b6c6dbb6c9ddb9c9dcb6c9dbbbcbdbbbccdbbecbdec1 *cddfc1cfdec3cedfc1cce1c1ccdfc2cedfc5d1ddc4d1dfc6d1e0c6d3e1c6d2e0c8d5e2c8d3e2c9 *d4e3c9d4e2c6d2e0c7d0e1c7d0e0c4d0e0c5d1e1c5d1e1c8d1e2c7d1e1cad2e2c9d3e2cad5e2cc *d5e2ced8e3ced6e3c9d6e1cdd6e2cbd7e3ccd5e1ced6e2ccd3e2c9d2e2c7d3e2c7d4e3c7d1e0cb *d0e3c7d2e0c9d1e0c9d3e2c9d5e2c8d5e0cad6e2cbd5e1cad3e0ccd6e3cbd5e3cad4e3c9d3e2c8 *d4e1c8d2e1c8d3e2c8d3e3c8d1e1c5d0e0c5d0e2c4d1e1c4cfe1c6cfe0c8d3e2ccd5e4cdd8e3d0 *dae6d1dbe6d2dbe6d1dde7cfdbe7ced8e5cbd3e3c6d1e2c1cee0becfe1bfd1e0c3d1e2c4cfe2c2 *cee0c5cee1c2d0dec5d2e2c7d1e2c7d2e3cad3e2ccd3e3ccd3e3ccd5e5ced6e5ced6e3ced6e4c9 *d5e0c7d3e0c7d3e2c4d0e0c4d0e0c2cce0c1cee0c1ccdebdcbdebfcce0bccbdebfcce0c1cddfc4 *cfe0c6cee0c5d1e1c8d0e1c8d0e1c6d1dfc4d0dfc7d2e0c5d1dec6d1e0c7d1dec1d0e0c2d0dfc1 *ccdec0cbdfbdcde1b9cde0bacbdabaccdebbccddbbcbdcbac8d8b2c7dcb6c9dfb7cbdfbbccdebb *cfe0b8cadebbcadebbccdebacbdfbcccdeb8cadfb6c9deb7ccdfbecfe0c5d3e3cbd7e4ccd8e5cf *d8e3cad8e3c9d7e4c8d6e3c5d3e2c4d4e3c6d3e3c0d1e2b8c8deb3c9deb1c7dbaec9dfb6c9ddab *c7ddadc7daafc6ddb4c7dbb3c8dcb1c8dcadc5dbaec6e0adc7dbafc7dbb0c7dbadc6dcaec6d7b0 *c6dbb0c8dbaec7dbacc6dfacc6ddacc4dbadc3d9afc6dcb1c7dbb4c8ddb8cadfb0c9dfadc6dcae *c7dbadc6dbafc6daaec6dcb9cadebacbe0b3cadeb0c6ddabc6ddb1c7dbb1c4dab0c6dcaec6dbaf *c7dbacc6dba7c4d9abc5dbafc7ddadc5dbafc6dbb0c6dbb1c7daadc4dbaec5dcafc7deadc5ddae *c5dbaec3d8aac1d9acc4dbafc6dbafc5dbadc6dcabc3dcadc4dbabc4d8a5c3d8aac3d9abc3d9aa *c5dbaec5dcaec5dca7c2dba8c2d9abc3dbacc5d9abc1daaec4dbafc5daadc1d9abc3dbacc5dda9 *c2dba3bfd7a9c1d9aac2dbaac3daabc5d9adc3d8acc7dcadc3dbb0c2dab0c4dbafc2d8aec1dbb1 *c7dbb1c7dcb2c9ddb8ccdeb8caddbcccdec5cde0c5cfddc7cfdfc6d1dfc4d0dec3cddec6cddec3 *cee0c3cdddc3cbdbc3ccddc3cfddc6cfdec1cddec6cddec6cee0c8cee0cad2dfcbd0dfcbd5dfcb *d5e2cdd4e2ccd4e1cbd5dfcacddbbcc5c9c2ccd0c4cfd398b6cc9fb9cca0b4ce9bb7cf9bb4cc95 *b1ce9bb7cd96b6ce93b3ce93b6ce94b3cf9db8d2a0b6d199b2ce96b2ce98b6cf97b6ce9ab6ce95 *b4ce96b5ce93b3ce97b4d09bb4d38eb2cc98b5ce9eb6cd9cb4cd9cb5ce99b6d197b4d09bb5d2a0 *b7d19eb5ce9ab5cd9ab6d19db7d49bb6d29db9d19fbcd298b7d496b8d496b7d296b9d396bbd394 *b7d39dbad59db7d29fbbd29cbbd497bad59cbad395b7d19bbbd39cbad19dbdd4a1bcd59bb6d29d *bad49fb8d5a0bbd19fbbd49ebdd3a1bcd49cbad39cbcd69fbbd2a1bed69dbcd596b9d396b8d39b *bad19ebbd2a3bfd4b2c6dbb8c7dbbac6d9b7c8d9b2c6dcafc3daa8c0d9a5bdd7a4bfd8a8c2daaa *bfdaa9bfd8abc0d5aec2d7b0c4d9b1c3d7b6c4d8b9c7ddbbc7dcb6c7d8beccdbbdcbddc0ccddc2 *cedfbfcedec1cee2c1cedfc6d0e1c6d1dec3d1e0c6d2e2c1d0e0c5d0e0c6d0e2c9d3e3c9d6e1ca *d5e2cbd6e3c9d4e2c8d3e1c8d3e3c7d1e2c6d2e3c6d1e1c7d2e1c7d2e3c6d3dfc2d1e1c2d0e1c3 *d0e3c6d1e2c7d3e3c6d1dfc9d3e2c8d4dfc9d5e2c9d3e5c9d3e3c7d3e3c5d3e0bdcddfabbfd3a4 *b8d1aabdd3aac1d6afc1d7b1c3d9b9c6d8b9c6dabbc9ddbbc8dcbdcadabecbdbc1cce1c4ccdec7 *d0e2c8d2e3cad4e3cbd6e3ccd7e5ccd6e4cbd8e4c8d6e3cad4e2cad6e3c8d4e2cbd6e2cad6e4c9 *d5e2cad6e3ccd6e4cdd8e3ced5e1cfd7e4cfd8e3d0dae5d1dbe6d2dce4d2dce5d3dde6d1dce6d2 *dbe6d1dce6d2d9e5ced8e3d0dce5d1dde5d2dde7d1dde7d3dae7d0d8e3cdd8e3ccdbe5d0dce5cf *dbe5cfd8e4d0d9e3ced9e2d0dae6ccd6e5cbd5e3c6d2e2c6d3e0c4d1e2c2d0e1b9cfe0b2c8ddb0 *c7dcb1c7d9afc7dcb7cadcb7c9dabbc9d9bccbdbbdcdddc2cee0c3d0e1c7d0e0c8d2e1c7d2dfca *d4dfced8e4cedce5cedbe6d0d9e7d1dbe7d2dbe6d1dbe6d1dce5d1dbe5cedce4d0dbe5cedbe6ce *d8e6cfd8e5ccd5e3cbd3e2cbd4e2c6d2e2c3d1dfc6d1e2c4d1e1c7d2e1c7d3e0c8d1dec7d1e0c5 *d0e0c4d3e2c7d5e1c7d5e3c6d1e1c7d2e2c8d0dec9d4e2c7d4e1cad6e2cad6e3ccd8e3cbd7e4cc *d6e5cad5e2cad4e3ccd5e3ced8e5cfd8e5d1dae5ced9e5d1dbe6d1dae5ccd6e1c9d5e3c7d3e3c6 *d3e3c3d0e1c1cfe0c3d1e0c4cfe0c3cfdfbecedfbcccdfbaccdec1cfddbdcddbbfcfe0c1cedec0 *cde0bdcbddbfcad8bbcbddbbcadabbc9dcbac7debdcbdebfccddbccbddb9cadbbacadbbac9daba *cbddbdcddfbacbdebaccdeb8cadeb4c5dab4c6dcb0c5d9b4c6d8b6c6dabbc7dabac6dbb9c7ddb8 *c9deb9c9dab5c4d8bbc7d6b5c4d8b6c6d8b3c6d9b8c9dbbbcadcbdcbe0bbc7d8bbc8dbbecbddc1 *ccdcc1cee0c1ccddc3cbe0c3cddfc5cde0c1cedec5cedfc4d0e0c6d1dfc6d1e0c8d3e1c8d2e1c9 *d2e2ccd4e5c8d5e2c7d4e1c7d3e2c8d1e1c7d1dfc6d1e0c7d1e2c8d2e0cad3e2c8d4e2c9d6e1cc *d7e2cfd6e2ced8e3ccd7e4ced8e3d1d9e3cfd5e3ced8e3ccd6e0ccd3e0cad2e0c9d2e0cad3e0c7 *d3dfc7d1e2c9d5e2c3d2e1c7d3e2cad2e2cbd6e2cdd5e3ced6e2cbd6e2cdd9e5ccd6e3cbd5e3cb *d5e1c9d3e0ccd5e1c7d0e0c6d1dfc7cfdfc7d0dfc5cfdec3cfdec3cedec6cddfc9d3e2cbd4e3d0 *d8e4cfd8e4ced9e6ced8e6d0dae5ced9e5ccd7e4c9d5e3c7d2e0c1cee0c2cee0c4cfe3c4d1e0c6 *d0e1c5d1e0c5d1e0c7d2e0c8d3e3c9d2e2cdd7e4cbd7e5cdd6e3cdd6e3cdd8e3cfd8e4ccd8e1cd *d6e3ced6e2ccd3e0c9d4e0c5d1e1c4cee0c2ceddc2cddec1ccdebdcaddc2ccdec2ccd9c1cedcc3 *cdddc4cfdfc6cfe2c7d1e1c8d2e0c9d3dfc8d1e0c8d1dec6d1dec6d1e0c5cfe0c5d1dfc3d1e0c3 *cedec0cddebfccddbfceddbcccdcbdcbdebccadfbccbddb8cbdcb6c7d9b9c9dcb9ccdeb6c8dbb8 *cbe0b7ccdeb9cadebbccddbdccdebecfe0b8cddeb7cbddb8caddb7c9ddbbc9ddbdcedfc9d7e5c9 *d7e3c6d4e2c0d1e0bfd1e2bccfe1bbcedfb7cddeb9cce0b1c8dab1c7dcaec6dcb0c7dbb4caddae *c7ddaec7dbaec6dab1c6dcafc7dbaec7ddb1c7d8b1c9deaac6deafc7dfb3c8dbadc6dbb1c7d9ae *c4d8b0c6d9b0c6dbaec6d9aec6d9aec4dcaec5daafc7dbb1c6dcb1c9dcaec7d9afc6daaec6dcae *c6dcafc7dcaec3d8afc6dbb1c6dbaac4dbacc7dbadc6d9afc6dcaec5ddafc4daadc5d7b0c6dcae *c6d7adc5daacc5d9aec5daafc6d9aac6dbacc6d8acc4dbaec4d8afc4d9aec5daaec3d9adc7dcae *c6dda9c4dcadc1daa7bfd8a9c1d8aac4d9acc3d9aac1d7aec6dbaec3dcaec5dcaec2daabc4dbaf *c3dbaec5d9abc3daacc3dbaac5dcabc2daabc0daa9c1d9acc0d8aac1d9adc3d9aac0d9acc4dbaa *c6dda9c3ddacc2daadc1d7acc1d8afc6daadc2d7acc2d8b1c3d9a9c1d8a9c0dbaec2d9b0c3d8ad *c4dbaec3d9afc5d8afc4d8b1c6ddb0c5dbb4c8debcccdec5cedec3cfdcc6cedfc9d1e1c6d1dfc6 *d1dfc6cdddc6cedcc6cedac7cedec6cfdec8d0dfc8d0decad1dec8d3e0cbd3e1cbd4e0cdd2e1cc *d5e0ced6e2cfd7e4d0d8e3d0d7e1ced1ddbfc6ccc3cccfc5d0d49ab6ce94b5ce9bb3cd96b6cc98 *b6d093b6cf97b8d294b7d19cb7d19bb8d59ab5ce97b5cf86a0c399b3cd93b1cc9bb6cf9ab6cf9a *b7cf9ab2cc97b6cd8eb6cc95b6d198b6d295b8d19ab7cf9cb5cc9db6cc9cb4cc99b4cd94b6d09e *bad19bb7d19eb8d195b4cf9cb7d29bbad397b7d19ebad29cbbd29ab8d29fb8d29bbad39ebbd296 *bad29abad295b9d49abbd398bad099bad19cbbd295bbd298bbd297b9d39abad392b7d295bad39d *bdd494b7d39bbcd4a0bdd498bbd69cb9cf9cbcd6a1bdd697b8d49dbbd29bbdd4a1bdd49fbdd69e *bcd59dbcd597bbd49fbcd5a7c0d8aac4d9adc5d8afc5d6aec5daa6bfd6a1bdd3a2c0d99dbcd4a3 *bdd5a6bfd7a5c2d8a7c2d9aec4daacc3daaec6dbb1c5d8b6c6ddb6c7dcbccadbbcccddbecedcbd *ccddbdccddbecbd8bdccdcc1ccdbc2d0ddc2d0e0c2d1e0c5d2e3c5d1e4c4d1e0c8d2e1c6d3e2c6 *d3e2c7d4e0c8d4e0c7d3e1c5d3e2c5d1e1c5d2e0c1d1dec1cfdebfcedec1d0dfbfd1e0c2d0e0c3 *d0e3c4d0e0c6d1e2c7d3e2c9d6e4cbd6e4cad6e5c9d4e3c7d6e3c7d4e4c6d1e2bdcee0b6c8dcaa *c3d9a5bdd2a8bdd4acc2d6b6c6d7b4c6d8b8c7d8bbc9d9bdcbdbbdcbddc0cbdec4cee0c7d1e0c7 *d2e3cad6e2cad6e2ced9e5c9d5e3d0d9e3cdd6e3ccd7e5cad5e3c9d5e2ccd7e5c9d5e1cdd7e4cb *d6e2c9d8e2cbd7e2cbd8e4cbd9e3ced9e4cedae5cfdae5d0dce5d3dde5d1dce5d3dbe4d2dde6d3 *dde7d1dde7d3dde5d1dce5d2dbe5d3dee5d4dde6d1dee6d1dee7cfdde7cddae6c9d8e3c9d6e2ca *d6e4c8d6e4cad7e3cbd7e3ccd9e5ccd7e4ccd4e2c6d3e2c5d1e0c1d1e0c0d1e0bbcddeb6caddb3 *c9dcb4cadbafc6d7acc5d9b3c8d9bacaddbdccdfbeccddbfcee0c3d0dfc6d1e1c6d2e3c6d3e2c8 *d4e2c9d6e3cdd7e4cedbe5d1dbe6d1dbe6d3dde7d1dde5d0dce5d1dbe3d0dbe6ccdbe3ccdbe3cf *dae5cedae4c8dae3c7d4e2c6d2e3c6d3e3c6d3e0c6d3e1c5d1e0c5d2e3c6d5e4c7d4e3c8d5e2c5 *d2e0c6d2e1c7d2e1c7d4e0c7d4e2c6d1e1c7d3e1c9d3e0c7d5e1cad5e2c9d5e2cbd9e2cddae2cc *d8e2ced7e3ccd5e4c9d6e4ccd6e4ccd9e5cfdae3cfdce6cedbe6d1dce5ccdae5c7d4e4c4d3e1c1 *d1e2c3cfe0c0ceddc1cfdfc2cfe0c1cfdec1cedfbecee0bbcbdebcccddbfcfdbbacce0bdcddfc0 *cddfbfcddfb6cbddb7cadcb4c9dbb6c8d9b6c9dcb9cbddbbcbdbbacbdcb9c9dcb7c9dcb6cadcb9 *cdddbfccdfbecedfbaccddb9c7d9b6c7dbb7c5d8b6c6dbb2c6dab2c5d7b5c7dbb8c9dbb8c9deb3 *c9deb7caddb6c9dbb7c9dbb6c7d7b6c7dbb9c8dcb7c6d8b6c7dabbcaddbac8dbbdc8d9bdcad8bd *c9ddbfcbddbbcddec0ceddbfccdcc0ccdec0cedebfcee0c2cfe0c1d0dec3d0dfc5d0e0c7d4e2c9 *d5e4c8d6e2c9d3e2c9d5e2c9d6e1c5d2e2c5d1e0c6d1dfc7d1dec7d0e0c6d2e1c9d3e1cbd6e3cc *d7e3cdd8e2d1d7e2ced8e3cdd8e3cfdae3cedbe3cfdbe2cddae3ced9e5c9d3e3ccd4e2cbd6e2c9 *d3e0c9d3e2cad6e3c9d3e2c9d3e1c5d3e0c8d4e2c8d3e2cbd5e1c9d6e0cbd6e2ced9e5cdd8e5ca *d6e4cad6e3cad4e1c9d5e2c5d1e0c6cedfc3cee0c5d0e1c5d1dfc5d0e0c1cedfc3cedfc7d1dfcb *d3e0ccd7e2cbd6e2ccd8e1cedae4cddbe6ccdae5ccd8e2c8d4dfc3d0dec3d1dfc1d1dfc3d1e0c1 *d3dfc5d3e3c7d3e1c9d5e1c9d5e3ced6e2ced8e3ced9e5cbd9e3ced9e5ccd8e6ced9e4d0d9e1cd *d8e3ced8e3cdd8e2cbd7e0c9d5e2c5d4e3c5d0e2c5ceddc1ccdebfccdcc0cbdcc2cfdec2cee0c3 *cedec3d1dfc7d2e0c9d2e1cad3e0cbd5e0cbd7e2cbd6e1ccd5e2cad6e3c9d4e2c7d1dec5d1e0c1 *cfdebeccdebbcddebfcdddbed1e0bdccddbdcedfb7cbdcbbcbddbbcbdeb4c7dbb7c9dcb5c8deb6 *cbddb6cbdeb9c9dbbaccddb7ccddbbcbddbbccddbbccdcb6c9dbb9cbddb9ccdebbccddbbcddfbe *d1e2bbcddfb6cbdeb3c9dcb0c9dcb5caddb2cbdfb1c8ddb1c8ddadc7dab1c7dcaec7ddaec7dcad *c8dbadc9dcaec8ddadc7dbadc7dbacc6daadc7dbaec9ddaec8ddaec7ddb0c8dcaec6daafc7daa8 *c3daaac5d9aac5d9afc6dbaec6dbb4c9dcaec8dcadc7dcafc7dbaec6dcb5c7dbacc6daabc6d9aa *c4dbaec6dab0c6dbacc5d9afc6d8aac4dbaac7daabc6daacc6daadc6dcaec6dbabc5daadc2d7ac *c3d9a9c5daadc6d9aec5dbadc5daadc6dcaec7dbafc3dbadc4d8abc3d8adc4d9acc3d9aec5daaf *c5d9adc6ddadc4dbafc7dbaac4d8acc4d8aac5d8aac4d8abc4daabc3daaec6dbb1c6dbaec4dbab *c5d8abc5d8acc6daaac4d7acc2d9aac2d9adc4daadc2d9aac3d9aac2d7abc2d8a8c1d7abc2d8a9 *c2d8aec2d9acc1d7aac1d8abc3d9aac3daabc3d8acc2d8abc2d7abc1d6a9c2d9adc1daadc3daad *c3d8abc3d8aec1d8afc6dbaec6daaec7dbb1c3d9aec7ddb1c7deb2c7dbb5c9dbbdccddc0cedec1 *cedec3cedec6cfddc9d0dec9d1dfccd3e0cbd3e0cbd5decbd3e0ccd5e0ccd5e0ced5e2cfd6e3cb *d5e2cdd6e3ced8e3cdd9e4cedae5ced8e1cbd0dbbfc6c9c4ccd0c6cfd49ab3cb9bb5cda1b6cd9b *b5cf96b4ce97b3cc95b6ce9cb9d19cb7ce9bb6cf98b3d193b2cc99b3cf95b3ce98b1cb98b3cb95 *b3ce9eb6ce97b6cf8eaecb98b5ce98b2cc9eb5cd9bb3ce9bb5cc9cb6cd9fb3cba2b6ca97b3d097 *b4ce9bb5cf9cb4d09bb6cea0b9d09eb6d09eb9d299b6cf9db5d09ab7cf9cb6d099b6d19cb7d29f *b8d19dbad19cbad39eb8d39bb8d19ebbd19ebbd09abad19bbad090b7cf98b8d19db9d49db8d396 *b7d09dbbd19db6d19ebad0a0bcd29fbbd4a1b9d1a0b9d299bbd19eb8d39ab7d09ebbd39abbd495 *bad49ebcd49cb9d69cbad49ab9d29dbad1a0bcd59fbbd5a0bbd49dbdd59fbdd59bbdd69dbad3a0 *bdd3a2bbd2a5bdd4a9bed4a5bdd5a4c1d8a9c3daaac2daaec3d7afc6d9b3c7dbbbc9dabdcbdbbf *ccddbdcaddbac9dcbbcbdebbc9debdccddbecbdec0ccddc1cfdfc3cfddc3cfe0c3d0e1c3d1e2c4 *d0dec1d1e0c1d1ddc2cedec1cedfc0cedec0cde0becddcbbccddb9c9dcbcccddbbc9ddb7cadcbc *cdddbdcddfc4d1e2c7d3e3c9d4e3c9d5e2cad5e3c9d5e0c1d0e1bbcddfbacee2b6cadeabc4dda8 *c4dba8c3d8a8c1d8a6bdd6a8c1d7afc4d8b6c6dbbcc9debbc9ddbfccdbc1cddcc6d1ddc5d1e0c6 *d1e0c9d3e2cbd6e4ccd6e3ced8e2cddae2ccd9e3cad5e4c9d4e3cad5e3cdd6e3cbd7e5ced8e5cc *d7e4ccd5e1cad7e2cad8e1ced9e3cfd9e5d0d9e3d2dae4d2dbe6d0dbe4d1dbe3d0dae4d2dbe4d2 *dbe5d0dae4d0dae4d2dbe6d3dbe6d4dce4d3dde5d3dde5d1dbe5ccd9e5ccd6e3c7d3e3c1d1e2be *cfe0c1cfdec1d1e3c3d3e0c7d6e1c8d3e0c8d3e2c4d1e2c3d1e0c3cee0c1cfe0b9ccddb6caddad *c7dbb0c6d9b2c6daafc5d9b2c5d9b3c7d8bccadcbeccdbc3cedec3cfdec6d1dec7d1e0c8d3e2c8 *d4e3cbd5dfccd4e2ccd6e3cdd8e4cdd9e3cfdae4d1dbe5d0dbe7d1dce6d1dce5ced7e5c9d6e0c9 *d5e2c7d4e2c3d1e2c3d1dfc4d0dec7d1e1c5d2e0c6d2e0c6cfe0c4d1e0c4cee0c7d5e2c8d3e2c8 *d2e2c4d1e1c5cee0c5d0e0c5d1dbc6d1dfc3d0e0c5d1e1c7d1e0c7d2dfc8d5e2cdd6e2cbd6e4cd *d7e3ccd7e0ced7e2ccd7e3cdd6e4cdd7e3cfdbe4d0dae4d0dbe5ced8e4cdd8e3c9d6e2c5d1e2c0 *cedebdccddbaccdbb8cbddbbc9dcbccbdebccadcbacbdbbdccdfbfcbdcbbcbdcbacad8b8cbdbb9 *c9dbb7c9dbb4cbdbb1c8d8b4c8d9b2c7dbb1c6dbb5c7ddb7c9dbb4c6dbb1c7dbb7caddb5c8dcb6 *cadcbbccddb9cbdfb6cbddbbcbddb6c7d9b3c4d8afc4d8b6c6dab4c6d9b1c4d8b8c6d9b6c5dbb1 *c6d8b8c7d9b8c6d8b7c8dbb4c7d8bac7dbb9c7dcc0cbdbbdcadbb8c6dbbbcadbb9c8dcbac9ddba *c8dbbdc7dab8c9ddbac8dbbdc9dbbac8dcbac8d8bac9dbc0ccddc1ccdcc0cddcc2d0dec6d2e0c6 *d0e0c5d1e1c6d0e1c6d1e1c7d2dfc8d1e0c6d1e1c7d1e0c6d2e0c6d0e0c6d0e1c7d2e1cbd4dfcb *d7e2cbd7e3cfdae5cfdbe3d0dae6cfd8e2ced7e1d1dae2ced8e3cdd8e3cddbe4ccd8e2cbd5e2cc *d5e2cbd1e0c7d3e2cbd1e0cbd3dfcad3e0c9d6e2cbd6e2c9d2e0cbd3e1cdd6e2ccd8e2cbd8e1cc *d7e2cbd6e2cbd4e2cad5e2cbd3e0c6cfe0c6d0dfc6cfddc8d0dfc4ceddc3cfdfc3ceddc5cfdec7 *cddfc7d0dfc8d2e1c4d1dfc8d2dfc9d4e2cad6e4cad7e2cbd3e1c9d1e0c7d0dfc3cfe0c3cfdec7 *d1e0c4d1e1c7d1e1cbd5e3ced7e3cdd8e3cdd8e2cdd7e2ccd7e3ccd8e3cdd7e2d2d8e4d1d9e5d1 *dae5cdd6e0ccd6e0ccd3e1ccd5e2c9d2e0c8d3e0c4d1dfc4cfdfc4cde0c4ccddc2ccdcc1cdddc4 *cedec4cfdec6cfdec8d2e2cbd3e2cbd4e1ccd5e1ccd4e3cbd5e0ccd6e1cad4e1c9d3e0c6d0dfc3 *cedfbecaddbfccdcbccbdbbdc9d8bac9d6bbccdebbccdbbcccdebbc8dfb6c6d9b5c8dbb7c9d9b6 *c8d9b9cbddb8cbdebacde0bbcadebbc8dcc0cbddbdcadcb8ccdebacadeb7c9deb6c8dcbacaddb8 *c9deb4c8deb3c7daaec7dab0c8d8aec6daaec7dbb1c7dcb1c7dcb0c6deadc3d9b1c8dab1c9dbaf *c7dbb1c7dbaec8dbaec6dbb0c7ddb0c9ddb1c7dbaec7d9b0c6d9aac1d7abc4daacc6dbafc6dab0 *c7dbabc6d8aec5d9aec6d8adc4d8acc3d9aec5d9adc4d8acc6d9aec6daaec6d9adc6d8aac2d6a6 *c3d8acc3d9adc5d9abc2d8abc4d9afc5d8aec4d6acc4daacc3d8a6c0d6acc2d9aac3d9adc4d7ae *c4d9aec6dda9c2d9acc3d9acc3d8a8c1d8adc2d8acc3dbaac3d8aac2d8adc4daaec4d8aec3d7a9 *c1d8afc5d9a6c0d8abc5dbaac0d6aac3d8aac1d6aac3d7aac3d9a4bfd7aac1d7a9c2d9aac0d6aa *c1d9acc3daadc5dbb0c5d9aabfd6acc2d7a9c0d6adc1d7a9c1d8acc1daafc3d9a7bed5acc1d5a4 *bfd5a4bdd5aec0d6a7bfd8aac0d8adc1d9aac1d7aec2d6adc2d8aac0d5aec1d7adc2d7acc0d8ab *c3d9aec3d6b1c3d9aec2d7a9c0d5a9c1d8afc4d9abc2d7aec2d6afc6dcafc4dbb1c6dbb5c7dbb1 *c4d9b5c7dabec9dbc4cedec7d3decbd3deced5e1ced8e1ccd6e2cbd2e0c9d1dfcbd1dfcbd3e2ce *d5e3ccd5e2ccd6e3cdd5e0ccd7e2cbd4deccd2dec7ced8bec5c8c1cdd0c5cfd49ab4ce9ab6d198 *b2d099b6cf99b6cc95b2cc93b5ce9ab6d099b3cfa1b4d09ab6d1a0b6cf9bb2cc98b5cc97b3cc91 *b2cb96b4cf96b6d08eb5cf95b5d098b3cc95b7d198b6ce9db6cf97b3d19db2ce96b1cd96b2ce9c *b4cf9fb6d096b3ce9ab5d19eb6d0a1bad19ebad39ebad39db7d39db8d2a2bcd09bbad29db9d39b *b6d19fb7d09ebbd19ebad49dbbd39ebdd09eb9d29ab9d099b8d195b6d19ab8d29cb9d39fb9d2a2 *bdd59cb8d19ebbd19fbad1a0b8d1a1bdd0a9bcd3a5c0d3a4bcd69cbcd59cb9d3a0bbd299bdd598 *b9d39bbbd598bbd392b8d59abbd59bbbd79ab9d29bbbd39cbcd49fbcd49fbbd59fc0d59cbcd59b *bdd7a0bdd79bbad49dbdd39ebfd69ebdd4a0bed7a1bdda9bbbd8a6bfd8aac3dbb1c6d8bdcbddc4 *cfdebeccdcbdccddbbcbdcb8c7ddb8c8ddbac9dbbdcadcbbcddcbbccdebbccdebecddfc0cee1bd *ccddbdccdec0ccdebeccdeb9caddbbcbdeb5c9dbb1c7dcb2c6dbaec6dbadc5dbacc4daa9c3d8a7 *c4dba9c4daafc6d9bbcce0c4d2e3c4d3e4c5d4e5c4d2e1bbcddfb0c7dba6c4dba8c4d8a4c2daa3 *c3d9a5c4dba1c3dba2c1d69ec1d6a4c1d8adc6d9b1c4d9bbcbdebccbdec3cfe0c7d3e0c8d3e0c7 *d3e2c7d6e3cbd7e3cbd7e3ccd9e5cbd6e5cddae6ccdbe3c9d6e3c9d4e4cbd6e4cbd8e5cbdae4cc *d9e4cbd7e5cad5e5cbd5e2ccd8e2cddbe4ccd9e5cdd9e3d1dae6d1dbe4d1dbe6d1dde6d2dde6d1 *dae5d1dce5cedbe3cfdbe5d0dbe6d2dce7d3dde7d3dde6d2dee3d3dce6cedbe5c9d6e4bdcde0b8 *c9dcb5cae0bdcddec2d1e0c1d1e2c3d0e1c4d1e2c3d2e2c0cde0bfcfe2bdcddeb8cce0b7ccddb3 *c9dcaec6dbafc7daafc7dbb0c7d8afc6d9b5c8dbbccedec0cfdec5d1e2c6d1e1c7d3e2c9d4e1c8 *d5e3cad5e3ccd6e2cbd7e2ccd7e4cfd9e5ccd8e6d0d9e6d1dbe6cfdce7cedae5d0dbe5ccdbe5cc *d6e2c9d2e2c4d3e2c3d2e2c4d2e2c6d1e3c3d0e2c5d3e1c4d3e3c2d1e0c5d2e0bfd0dfc3d3e2c5 *d2e2c5d0dec1d0e0c3d1e2c5d1e2c4d1e0c1cedfc1d0e1c3d1e2c5d1e1c7d4e2c9d6e2cbd8e3cd *d9e3ccd9e4ccd6e4cbd6e2cbd9e5cbd9e4cfdbe5cfdbe4cfdce6cddbe2cbd4e3c9d5e3c4d2e0c3 *d0e2bacbddbbccdebdccddb8cbdbbbcbdabdcaddbccbdbbdccdbbfcbdfbfcde0bdcddebac9debb *c9dab7c9dcb5c7dbaec6dcb3c7ddaec6d8abc6d8adc5d7acc6dbb1c7dab2c7dbabc4ddadc5dcb2 *c6d9b4caddb3c9dcb4caddb3c8ddb2c5dbb0c6dcabc2d9afc3d9b1c3d8b0c5d8b4c7d9b3c8dcb1 *c9dcb6cbdebbc9dbb9c7dbb6c9d8b6c9dbb8c9d9bccbdbc0cbddbdcbdfc1cedebfcbddbdcbdbb9 *c9dbbdc9dbb8cbddb6c9deb6c9ddbbcadcbcc7d9b7c7d9b7c9d8b9ccd7bccbdbbdccdcc1cedfc3 *d0e0c4d2e1c4cfe0c7d1e0c6d1e1c4d1e0c7d2e1c6d1e1c4d1e0c5cee0c7d1e2c9d1e1cad4e2c9 *d6e1ccd7e3ced8e3cedae4d1d9e5cfdae5ced9e3cedbe2cedae3cfdae3cddae3ced7e3cbd3e3c9 *d3e2c6d5e2c9d5e3cad3dfcad3e1cbd3e3cbd4e2c8d1dec9d4e2c8d3e2c8d6e2ccd6e0cbd6e0cd *d8e0cbd6e2cbd4e2cbd5e1cad3e2c9d5e1c6d3e2c6d1e1c5d0e0c6d0dec6d0dfc4cedec2cedfc3 *cfdfc4d0e1c4cfe2c5cfe0c6d1dfc9d3e2c7d1e2c7d3dfc9d3e3c6d3e3c6d3e5c9d0e1c4d1e1c6 *d0e1c7d1e0c6d4e1c9d5e2ced8e3cbd8e4ccd8e5ced8e3ced8e2cdd8e2ced8e5d2dae3d1dbe4d0 *dbe5cfdbe5cfd8e5cdd7e2cfd8e0c8d2decad5e1c5d2dfc4d0e1c4d0e0c5d0e2c3cfe0c6d0dec5 *d0dec5cfdec7d4e0c5d1e1c6d3e3c9d3e2cad6e2cdd6e2cfd7e3cdd7e1cbd8e2cad5e1c9d3e2c7 *d1dec4cfe0c0cce0bbccdebcccdbb9cbdbb9ccddbbcbdfbbcddfbccdddb9cbdeb9c9deb9c9dcb6 *cadbb7cadab6cbddb8caddb7c9ddb8c8debbcaddbdccddbccbddbbcbdcbdcbddb5c8ddb6c9dcb9 *c9d9b5c9ddafc7dbb0c7deb3c8dcafc7dbaec7dbb1c9dbaec5d9acc6daaec8dbaec6dab0c7ddae *c6dcadc6d9adc5dbaac5dbaac7dbabc6ddb1c8ddaec6dbafc6dbaec6d8adc6d9abc5daaec7dbad *c5dab0c8dcb1c7dbaac6d7b0c7daacc7d8acc3d9adc6dcadc6d9acc5dbacc6dcadc6dbb2c6dbb0 *c6daabc5d8acc4dbaac4daacc5dbabc5daaac3d9b0c6d9abc6daaec6dbabc4daabc3dbabc3dca9 *c4d9a9c4daabc4dbadc6dbafc7dcaec6d9abc3d9abc3d6a9c1d7a7c3daaac3d8aec4d9a8c0d7ac *c4d9aac4d8a7c1d9acc3dba8c3d7aac0d8aac3d9a8c3daaac4d9adc6d9a9c2d8a9c1daabc2d8ab *c2d7aec3d8aac3d8aec6dba5c2d9a8c2d8abc1d9abc3d9aac1d9abc2daabc1d8adc4d8abc2d7a5 *c1d8acc3d9aac1d8aac2daa5bed7a8c1d7abc1d8aac1d9acc4d9acc3daadc4d8adc3daaec3d8ab *c1d7aac3d9abc1d7adc3dbb1c6dbacc6dbaec5d8afc4dbabc1d8aec5d8aec5dbb0c6dab1c5dbb1 *c4dab4c8dbb1c6dcb3c7ddb5c9dbc0cedec2cedec7d1e0cad7e3c8d5e1c3d0e0c5cddec2cedec4 *d0e1c6d1e1c8d2e0c5d1e0c3cedfc3cdddc4d0dec4cfddc0cad9bcc8cbc2ccd0c5ced39bb3cba0 *b6cc9fb6cfa3b8cd9cb6cc9ab6ce9bb3cd9cb3cc9ab2cd9eb1cca4b6d0a0b4ce9bb4cf9cb3cea1 *b3cd9ab4cb99b8d099b5cc9ab7d097b2ca9cb6cd96b2ce99b6cc9db3cd9cb4cd9cb3cd9db2cb9a *b5cd9eb6cda5b6cea0b8d19cb5cf9fb6d0a1b9d1a1b4d19db9d1a3b6d2a3b6cfa0b7d0a0b8d1a0 *bacea3b9d0a1b7cf9eb7d0a7bbd29fb1d0a4bbd39db7d0a3bbd1a3b9cea3b7d2a0b6d1a2b6d1a4 *bad3a8bbd5a5b7d1a6b9d2a3bbd1a3bad3aabcd1a6bbd3a9bdd5a8bfd6a4bcd2a3b9d3a4bdd3a4 *bed69cbbd39bbad29bb8d39ab9d39bb9d29ab8d09dbbd4a0bbd1a0bbd49dbbd39dbad49fbcd2a0 *bed5a0bbd5a2bdd89bbbd89ebcd49cbbd49ebdd59bbdd7a0bdd5a0bdd69ebcd3a4bed3b1c3d8b3 *c7ddbbccddc2cddfc1cddebac9dcaec6dbb1c7ddb0c3d9b0c6ddb5c7dbb2c7dab3c9ddbac9ddba *cadebacadeb6c9dbaec7ddafc7daafc6daaec5dbabc5daa0bfdaa3bfd7a3bcd7a1bed89cbed8a3 *c1daa0bdd89fbdd6a2bfd7a8c3dbacc6ddaec7deb2c9dfb0c8dda7c4d9a2bfd89fbdd8a1c1d998 *bcd599bbd7a1bed7a2c0d4a4c0d8a0c1d89dc1d7a8c1d8b1c5dbb9c7dbbdccdec5d1e2c9d3e2c9 *d3e1cbd3e3cbd6e4cedae5cdd8e6ccd6e6cdd6e5cbd7e2c9d6e2c5d2e3c6d3e3cad6e2c8d4e2ca *d6e2cbd5e3c9d4e3c9d4e1cbd8e3ced8e5cfdae4d1dbe4cfd9e4ced9e5d1dae4d1dce5d1dce5d1 *dbe6d1dae3d1dbe5d1d9e4cedae4d0dde3d1dce6d1dce6d0dbe7d3dce5d1dbe7d1dbe5c8d3e3b6 *cbddb4c8d8baccdebeccdbc1d0dfc1d1e0c5cfdec0cddebbcddbbacbdfb7c8dcb3c8dcb2c7dbb2 *c7dcb1c8dcacc6dcb2c8dbaec6d8aac3dab2c7dbb7c9dbbeccdcc6d2e1c8d1e2cad4e2cbd8e1c9 *d7e2c9d6e2c7d3e2c9d4e2cad5e2ccd8e4cdd9e5ccd8e3d0d9e4cbd7e4ccd6e3cad7e4cbd8e4cc *d6e3cfd7e4cbd5e3c8d5e1c3d1e0c0cee1c4cee0c3d0e0c3d0dec5d3e2c4d1e2c3d1e0c3d0e1c1 *cee0c2d0dfc6ceddc5d1e0c4cfe2c1d0e0c1cee0c0cfdec1d1ddc1d1e0c6cfe2c6d1e1c8d4e2cc *d6e1cdd7e2cfdae4cedae3d0d8e2cdd8e2ced9e4cfd9e4d1dae6d1dbe6cfdbe5cbd6e5c7d3dec3 *d1dec3cedfbfcddbb7c9ddb7c7dcb6c9ddbbc9dcbfcbe0bfccdebdcddbc3cfddc1ceddbfcddcbd *cadcbac9dcb8c8dbb5c7dab1c6d8b1c5d9aac4d8abc3d8a8c3d8adc5daabc3daafc3d9abc2daa9 *c3d9aac5d8adc5daabc4d9aec4ddadc6dca9c4dbacc3d9abc4d8b3c6d9afc6dbb1c5dab4c5d8b1 *c6d9b1c5dbb6c7dbb7c8dbb9c7dbbac7dab9c9dab9c7d9bdc7d9bdcaddc0ccdbbecddbc2cee0c0 *cfddbccbddbdcadabbc8d9bac9dbb9c7dbbac8d9b9c7d7bbc9d8bbc8d8b8c9dbbbc9dabdcadbc0 *cbddc1cddcc1cfdec3d0e0c3cfdfc3cedec6d0ddc6cfe0c4cedfc5cfe0c3cedfc4cfdec7d2dfc6 *d2e1c9d6e2cdd6e3cfd9e5ced8e3d0d8e5cdd9e3d0dae5ccd8e3cfd9e2cfd9e3cfdae3ced9e2cc *d4e2c7d1dfc7d2e0cad2e0c8d2e0cad3e0c7d1dfc9d1dfcad2e1c9d4e3c9d3e1cbd5e2cdd7e2cb *d6e0cdd8e4cbd4e2ccd6e3cbd6e2cbd2e1cad2e2c8d1e0c8d1dfc6d0e1c3ceddc6d0dfc4cedfc5 *cddec1cbdcc3ccdcc2cddec5d0dec8d2e1c9d4e2c9d3e1c9d3e1cad3e3cbd3dfc9d1e0c7cfe1c4 *d0e0c7d1dfc9d3e1cad4e2cbd3e1ced7e4d1d7e3d1dbe3d1dbe4ced9e2d1d9e4cfdae4cfdae6d2 *dae2d1d9e3d1dbe4cedbe6cfd9e2c9d6e2c9d2e0cad3e2c6d3e1c7d1e0c3cedec4d0e0c6d1dfc8 *d1dfc7d2e1c9d1dfcad2dfc9d2e1c8d5e2cad6e2cad6e1cdd7e2cdd7e2ced8e4ced7e3ccd5e0c9 *d3e0c2d0dec2cedebacbdebcccdebccbddbccaddbdcbdcbfcddebdccdcbdcaddbecbdeb9c9debb *cbdcbbcadabbcbdebdccddbbcbdbb7ccdebbccdbbbc7ddbac7deb9c9ddbbcbdebecddebbc9dcb7 *cadab6c8dcb3c8dcb0c6dbb4c6d9b4c7ddb6c7dcb0c7deb0c7dbb0c7daaec5dbacc6d9aec6d9af *c6dbafc7dcb1c7daafc6daacc6daacc6d9aac6dbadc5d8aec6d9abc6dbb0c6d8b0c6dab1c6d9aa *c6daabc6daaec3d9aac4daaec5d9abc6daaac2d8b2c4d8aec5d8adc6d8acc5d8aec6d8aac4d8aa *c4dab1c4dbaac4d8aec4dcadc6daaec5d7acc2d8abc4d8adc4d9abc3daabc3d9aec3dbafc4dbab *c6d9afc5d9a9c3d9aac3daaac4dba8c2daacc4d8aec4d7a8c2d6acc3d6a9c2d8a8c3d6abc3daad *c2d9aac2d9adc4daacc1daaec6d7aac3d9a8c1d8a9c2d7abc0d8aac3d6adc0d7b1bfd7abc0d7ad *c4d6a5bfd3a6c0d5aac1d8acc3d9a9c1d8aabfd9adc1daaac1d9abc0d5abc0d8abc0d4a7bfd7ac *c0d7abc0d8aac1d7acc5daadc3d9a9c3d8abc1d8acbfd6aec0d6afc1d9aec4dab1c3d9b1c2dbb1 *c5d8adc3d8aec1d5aec0d8afc4daabc1d9aec3dbabc1dbb1c3dcb1c3d9b3c7d9b3c4d5b2c3d8b6 *c5dbb2c3d7aec4dab7c6d9b3c7dbb5c7d8b3c6d9b6c6dbb5c8d9bdcbdcbfcddcbfccddbdc9ddb7 *c5d8b7c9dabcc8dabdcaddbccadbbcc8dabbc8dabdc9dabccbddc2c9d6bec4c9c3cccfc6cfd294 *b4c99fb5cc9bb4cb99b5cb9bb6cd99b6cea1b7cf9bb4cca0b7ce9eb7cf9db3cb96b4cb99b4cba0 *b4cc97b3cca1bacf9bb6cf99b6cc93b7d192b4ce97b5cd96b4cc9cb6cc9db8ce9bb6d09cb9cf99 *b8ce99b6cda1b6ce9bb4cc9db6cfa0b6cda0b9d29fb7d1a4b8cf9fb7cea4b9d1a3b9cea1bacea2 *b8cfa2b8d1a2b7d2a3b8d09fb9cf9db3cca0b7cea0bbd0a1bbcea4bbcea7bbd1a3bcd2a5bbd0a1 *b8cca2b7cca4b8cea5b9cd9fb9cfa0bbd4a4bdd4aabed5a9bdd0aabcd1a8bed4a6bbd1a4bbd3a4 *bbd5a3bdd6a3bfd5a4bed6a3bfd59cbad19bb8d19cbcd09dbbd29ebbd29fbcd3a0bad3a0bcd5a1 *bcd2a3c1d3a7bed5a1bdd79fbcd4a2bdd5a2bdd4a5c0d59cbdd89bbdd69dbcd59ebad49ebdd4a2 *bdd39fbdd4b1c7dab6cbddb2cadaa9c3d99fbcd79dbed8a3c2daa4c2d9a4c1d9a3c3daa7c6dcaa *c6dcaac3daa2c1dba3c1d6a4c1d3a4c2d69fc1d89fc0d69fc1d99abdd79cbcd69fbdd69bbbd19d *bdd69dbed59cbfd79bbdd69abcd79ebed7a0bdd59fc0d79ebdd69dbdd69fbfd49bc0d79ec0d79e *c0d89abcd799bbd8a2c1d79cc0d69cbdd79dc1d59dbfd6a4c3daadc5dbb9c9dcc0cedec3d3dec7 *d3e2c9d4e3cad5e2cad8e3cbd7e3cbdbe5ccd8e5ccd6e4c7d4e3bbcde0b6cbdeb7cce0bdd0dec3 *d2e2c4d4e3c6d3e2c6d3e1c7d4e2c9d4e4ccd8e3cddae4cddbe6cedae4d0dbe5d0dae4d0dbe5cf *dbe3d0dbe3d0d9e3cfdbe5cedae4cedbe5d0d9e5ccd7e5d0dae6d0dbe5d1dbe4cedbe5ccdce4c3 *d3e2b6cbddb5c7dcb2cadcb7cbddb8ccdebbcfe0bccedeb5cadbb3c7dbaec7dbaec6daadc6dbad *c6dbb0c7d8aac7d8acc7daacc6dbacc6d9adc5d9b4c8dbbccdddc3d0dcc6d3e1c6d2e1c9d5e2c8 *d5e1cad6e4c9d5e3c7d2e1c6d3dfc6d3e1c7d4e1c9d7e4cbd9e6ccd6e5cbd6e5cbd8e4cad6e2ca *d6e2cbd7e3cad8e3cbd6e3c6d3e1c4d1e0c3d1dec1d0e0c2cfdec3d1e1c5d0e0c1d0e0bbceddb9 *cbddbacedebdcfdebfd0e0bdcde0bdd0debdd0debbcddcb8cbddbacddebdcfe0c2d0e0c6d4e0ca *d5dfcad8e2cbd7e1ccdbe2cedbe4ced9e4cdd9e4ced9e4cfd8e4ccdbe4cbdae3ccd8e2ccd8e0c8 *d7e0c3d1e0c3cfe1bdcddeb8ccdeb0c7d8b5c7d8b7c7d9b8cbdcbeccdcc1cedbc0cedfc3cedebd *ccdbbbcbddb6c9dab9c9dbb4c8daaec7daadc6dcaec5d8abc5d9abc5d9abc6d9aac6d9a8c3d8aa *c6d9abc5d9abc5daaac5daa9c4d9a9c4d9a8c4d8aac3d8abc3d8adc4daadc5dbb2c6dab2c6d8af *c4d7b0c6d8aec7dbb1c7dcb7c7ddb3c7dbb6c7d8b9cadcbcccddb8cad9b9cad8becbddc1cbdac1 *cbddc1cedec0ccdbc1ccddbdccdbbdc9d8bcc7d6bbc8d8bac7d8b7c8d8bbc8d8b6c9d8bacbdbbe *c9dabecbddc0cddfc0ccdec2cfdfc2cddec1cfdfc3d1dfc4d2e0c5d0dfc3d0dfc5cedcc6cfddc5 *cddcc3d1dec6d3e1c5d4e0cbd7e4cad5e2ced7e3ced8e2cbd6e2ccd8e1cbd5e0ccd9e2cdd8e3cc *d8e3c7d3e0c6cfdec3ceddc6cfdec6d1ddc6d2e0c4d3e1c9d4e2c7d3e1cad2e0cbd4dec9d3e0cb *d7e4c9d6e0cad7e2cbd6e0cad6e2c9d5e2c8d3e1c9d1dfc6d1ddc5d2dfc6d1dfc6d1e0c6d1e2c6 *d1e0c3cdddc2ccdcc3ccdbc4cdddc4cddec5cedcc8d3e1c9d5e2cad6e0ccd6e2cbd4e3c6d3e2c5 *d0e2c3d1dec5d2e2c6d3e1cbd8e3ccd6e0ced8e1d1d8e5d2dbe5d2dbe3d2dae5cedbe6d1dde6d0 *dce6d1d9e4d1d8e4d0dbe6cfdae3ccd8e2cbd8e2c9d3e0c7d3e1c5d3e0c3cfdfc3cedec4d1dec7 *d0ddc7d2e1c6d4e0c7d5e3cad7e0c8d4e2c8d3e0cad4e1cad5e1cbd7e1ccd7e3ccd7e3cbdae3ca *d6e2c6d3e2bdcbdebacbd8b7caddbaccd9bbccddb6cadcbbccdebdceddc2ccddc3ccddbfccdcbb *ccdbb8c9d9b8cbdab8cbdcbbcdddb6cbdfb9ccdfbccbdeb8c9ddb6c9dbbbccdbb6caddb8cbddb6 *caddb7cbdeb3c8daaec6d9aac5daafc6daaec6dbadc6d9acc6daadc6dbadc6dab0c6d8acc5daab *c6daabc6d9abc6dbacc5d9adc7d9b0c7dcadc5dbaec6dbaac3d8adc3d8aec6d8aac7dcacc6dbae *c7daacc7d9afc7daaec3d8a9c6daabc5d8adc4d7abc3d8aec6d8aec5d8adc6d9aac4d8adc5dba5 *c2d8a9bbd3aec3d8acc5d7acc6daa9c5d9adc3d9abc4d8a8c3d8aac3d7a8c4d8a8c3d9a9c3d7aa *c3daa9c6daa9c4daabc3d8abc4daabc3d7a9c0d5aac4d7aac6d9a6c3d8aac3d8a9c3d8acc4d9aa *c5daacc0d7a9c3d9aac3d8a9c1d8aac3d8adc4daa9c3d9adc3d9aac0d6a4c3d8acc4d6abc1d7ad *c0d7acc0d7aac1d8aec2d4a9c1d8acc6d9a5c1d7a4bfd7a7c0d6abc1d6a9c1d8a9c1d8aec1d6a6 *c0d8abc2d6a7c0d4a4c0d7abc3d8a4bdd5a6c0d8acc4d8acc3d9abc1d7a6c2d8acc2d9adc2d7af *c3d4afc3d7b0c3daaec3d8afc3d7aec2d6aec3d6a6c3d7abc3d5afc4d8afc4d9afc7d9b6c6dab4 *c4d8b1c7d8b1c4d8b1c6d7afc5d8b3c6d8b4c9dbb6c6dbb8c6d8b3c6d8b6c8d8b6c7dab6c7d9b7 *c6d6b4c6d7b4c7d8b4c8dab3c7d9b8c9dabdc8d8b8c6d6b5c7d7b4c9d8b7c6d4bcc6cac4ccd2c6 *d0d4a3b6cba2b8ce9cb3cb99b2cb99b4cb9bb4ce9eb5cc9fb6cf9eb5cc9fb8ce9fb6cba0b4ce9c *b3ce97b1ce99b3cb9eb6ce97b4cc9cb5d099b7cc99b5cf97b2ce97b5cf92b2cc9eb5cb98b3cf9b *b5cd9eb6d0a1b8ce9db6cc9fb4cea0b6cfa4b5cfa1b6cfa1b8cfa0b7cd9dbacea3b9d0a4b8cfa1 *b8cda3b7d09bb4cda3b7cea1b6cca3b6d1a5b9d1a0b8cba3b7d0a4b8cea5bcd1a4b7cea4bbd0a7 *bdcfa4b6cda7bbd0a4bbceaabbd2aabbd2aabdd2a7bbd3aebcd2aebdd1adbdd2aebfd0aebed5b0 *bdd4aec1d3aabdd4a8bdd2a3bed4a1bdd39fbbd3a1bbd2a9bed3a2bbd2a2bbd49fbbd4a7bdd3a6 *bdd3a4bcd3aac2d7a8c0d3a6bcd3a4bdd3a4bbd3a6bcd3a3bdd4a4bed69fb9d4a3bdd5a0bbd19e *bed19dbbd49bbdd3a3bfd8a4bed8a2bdd3a1c0d5a0bdd59abbd599bdd4a2bdd69fbcd3a0bdd6a1 *bdd7a4bdd79ebbd89cbbd79ebcd59dbcd6a0bbd4a1bdd59cbcd49ebdd69dbdd69dbbd69bbdd59b *bad39ebbd69cbbd59ebed69dbcd49dbdd89ebcd69dbcd79dbed89fbdd59bbdd699bcd39cbed49e *bcd6a3c0d89cbed8a1bdd8a0c1d89cbfd69abbd6a0c1d79cbfd6a5c1d8aec3d9bcc9dcbecee0c6 *d1dec8d3e0c9d3e1cad4e0c9d3e3cad6e5c9d6e3c9d4e4c6d2e2c1cee0afc3d8a9c3d7adc6dbb1 *c8dbbacadcbacddfbecddfc4d1dec9d2e1ccd5e2ccd8e2ccd9e5cfdbe5cedae4d0d9e6cfd9e4d1 *dae4d1dbe3d1dae4d0dbe5d0dae4cdd8e3cdd7e3cad8e4ced6e3d1d8e3d0dae5cfdae3ccd8e3c9 *d8e2c0cfe0afc6dbacc2d9aac5d8b1c7d9b6cad9b5c9dbbbc8dcaec6d8a8c5d9a7c2d9acc7dbab *c4d9aac6d9aac4d8abc3d9a9c4d8aac2d8aec6dab4c7d9bac9dcbeceddc5d1dec7d3dfc8d1e1c9 *d2e1c7d3e2c7d4e2c8d4e2c6d2e3c9d5e0c9d3e0cad4e2c8d4e2cad5e3c9d3e0c9d4e3c7d4e1cb *d6e4cbd6e2cbd4e2c9d5e2c9d3e1c6d3e3c3d1dfc2cee0c3cfe0c3d1e0c7d3e0c9d3dfc3d0e0c4 *d0e0bdcee0bbcedebfcbddbcccdebaccdfbbcdddbacdddb7c9dbb7cadebcccdfbfccdfc6d1e2c8 *d3e2cbd5e2ccd7e1cdd7e2ccdae2cdd9e4ced8e3cfd8e2ced9e4cedae4d0dae3ced9e2cbd8e2c7 *d4e3c7d6e2c3d2e1c0cce0c0cee1b8cbdfb3c7dbb6c8d9b3c6dabcc9dbbcc9dec0cdddc1cedec0 *cee0c1ccdcbbccdbbbccdbbbc9dcb7c8dbb4c8dbafc6d9afc5daaec5dab0c6d9aec6d9abc5d9a9 *c4d9acc6dbafc5daaac4d8acc5d8aec5dbafc6dbafc6d9aec2d8b0c2d7adc4d8acc3d7afc5dab1 *c4dcb0c5d7b3c6d8b3c7d8b5c8d9b8c7d8bbc9dcb6c9dbb7c7d6bbcadcbdcbdcbccbdcbfcbdbbf *cbdbc1ccddc2cbddc0ccdbc3cbdbc1ccdbc0ccdbc2ccd9c1cbdcc0c9d9bdc9dabdcbd9bac7dbbc *cbdbc1cbdcc0ccdcc4cfdec3cdddc6d1ddc6cedfc5cddec5cfdfc6cedec7d1ddc6d0dfc5d1dec4 *cfddc6ceddc5d1dfc4d0e0c6d1e0c9d2dfcbd4e2c9d6e2ccd4e2c7d1e0c9d3deccd5e0ccd6e2ce *d8e3ccd6e0c9d3e0c7d2dec6d2e0c4cdddc6d0dfc6cee0c6d1e0c7d2e0c7d4e0c9d4e1cbd4e2cb *d3e2c7d2e2c8d2e1ccd3e0cbd5dfc9d2dfcad4e0cad4e2c9d3e1c9d2e0cbd3e0cbd2e1c9d2dec8 *d3e1c6d1dfc7d1dfc6d0dec5cedec5ccddc2cddec6d0dfc8d2e2c9d6e3cbd7e3ccd6e3cad3e2c6 *d0e0c6cedec8d1e0c5cee0cbd4e1ced8e5d0d8e3d1d9e3d2dbe3d2dbe4d5dbe4d1d9e3ced9e3d0 *dbe5cfd8e5d3d9e4d2dbe5d1dae5d1dbe3cfd8e3c8d3e0c3d1e0c7d0e0c7d2dfc7d2e1c6d1e0c9 *d3e0cad3e1c8d3dfc8d2e2c8d2e0c6d1e0c7d1e1c9d1e0c7d2dec7d3e0cbd5e0cbd5e3cad5e2cb *d5e2c7d3e0c1cfdebacaddb4c8deb6c9ddc0cddcc1ccd8bac9dcbfcddfbccbdbc1ccdebfcdddc1 *ccddbfcbddbbccddbdcbdcbac8dcbbcbdcb6c8d8b9cbddbbcbdeb9c9debccbdcbbcbdbbac9dbb6 *c8dab5c8dab3c9dcaec6dbaec6dbacc4dbaec6d8adc5d9aec6d9acc6d9a8c5d7abc5dbafc6daae *c4d9afc3d7acc5d7adc6daaac3d7aec6d8aec7dbaac4dba9c3d8aec5ddaec4daafc5d8acc3d6aa *c5d8adc5d7a9c4d9acc7d9acc6d8afc6d8adc3d8aec4d6aec6d8a9c3d8abc3dba7c3d7aec3d8ae *c3d8adc3d7acc4d8aac3d6aac2d6aac2d6abc3d8a8c4d8a9c3d7acc4d9a7c1d8a9c3d8abc3d6ab *c3d8a8c3d8acc4d8adc2d7abc3d8acc2dba9c1d8adc2d7aac0d6a9c1d7adc3d8acc3d7abc2d8a9 *c2d8aac3d9acc1d5a7bdd5aabdd6acc0d8abbfd8abc3d7a9c0d8abc2d8a5bed8acc1d6a9bed2aa *c0d6acc0d7acc1d6aac0d7aabdd6adbed9a9c1d7acc1d8aabdd4acbed7abc1d6a9c0d8a7bed5a9 *bdd8aac1daa9bed5aac0d3abbfd6acc0d6aabed6a9bfd4a6bfd7aabed6aac0d9a4bdd4aac0d3aa *bdd3adc1d7b2c6d4b1c3d9b0c2d8b1c3d8b1c4d9b0c1d7aec1d6abc3d8afc1d8b2c4d6b1c3d8b5 *c6dbb6c6d8b7c7dab9c7d8b1c6d7b4c3d7b5c3d8b1c6d9b1c3d6b7c6d8b7c8dbbac9d8bacadab7 *c6d9bac6d9b7c6d9b5c3d8b9c9dbbac4d9b9c6d9b8c7d8bbc8d8b5c6d7b6c7d7b7c0ccbbc5c9c3 *cbd0c6cfd4a1b9cc9eb5cda0b6cf9eb7ce99b6cc9bb6cda2bbd1a5b8d19fb6cc96b5ce9fb8d298 *b6ce9ab4cc95b3cc9ab4cd9ab5ce97b5ce94b5d08eb6ce92b6d298b3cf9ab8d396b4d097b9cd97 *b6cf97b5d19ab6d2a1b8d2a4b9d0a6bbd1a3bcd39db6cd9db7d1a1b8cfa0b6d0a0b7d1a1b6cfa3 *b5cfa2b7cfa0b9d09db9cda5bbd1a1b7cfa2b5d1a2b8cf9fb8cea5bcd1a0bacfa4bbd3a7bbd2a3 *b8d0a4bbd1a2baceaabbd1aabdd0acbacfacbbceaabbd1b1c0d4adc2d7aebfd3b0c1d3b1c1d5b4 *c2d3aec1d6aabcd6adbed6a8bed5a5bdd3a7bfd5a3bcd4a5bed4a6bdd5a3bcd4a5bbd3a4bbd3a3 *bdd3a9bcd3a7bcd3a1bbd3a9bed4a8bcd4a6bcd6a8bed4a6bfd4a6bed5a6c0d6a3bed89cbbd4a1 *bcd39ebdd8a0bdd69cbdd79fbbd6a3bfd59cbfd79fbfd6a4c2d79dbdd79bbdd7a0bed79dbcd3a1 *bdd69dc0d89cbcd59cbdd89ebdd79dc0d69dbfd798bed79bbcd69cbcd89fbdd69dbdd89ebcd699 *bcd69cbcd6a3bfd79cbdd69bbcd69dbdd69bbdd7a0bdd699bbd69cbfd79fc0d69dbed59cbcd49b *bdd79abcd79abcd798bbd69dbdd79ebdd69ec1d69dc1d89ec0d7a1c0d89dbcd8a6c3dbb7cadebf *cedfc3d1e1c6d2e2c6d4e2c8d3e5cad5e4c9d5e3c7d3e2c1d1e1bfcee0abc5d8a8c2d8a6c3da9e *c1d9a3c1d7a9c2dab0c6dab4c9dac2d0dec7d4e2cbd7e3cbd9e4cdd8e4cedae3d0dae5ccd8e5cf *dae4cfdae4cfdce6cfdce6d0dae5ced9e6cdd6e4cad7e2cedae3ccd9e4ccdce5cedbe6ccd9e5ca *d4e4bdd0e0b4cbdea4c3d8a6c3d8a6c3dbaac6dbb1c9dfb1c9dfb1c9dbaac6d6a9c5dba4c2daa4 *c2d7a6c3d9acc6d9aec5dbaec5daaec7d9acc6daaec6dbb4c7d9bacadbbfcedfc5d2e0c8d8e3ca *d6e5c8d3e2c6d3e2c8d5e3c9d5e1cad6e3ccd8e4cbd6e3cad5e4c7d4e4c4d0e2c7d3e1c6d3e2c5 *d3e3c9d4e2c9d8e3c9d7e5c9d6e2c8d5e2c6d3e3c5d2e2c3d1e1c5d1e0c5d2e0c5d3e3c7d6e2c6 *d3e2c3d1e1c3cfddbdcee0bdcdddbbcbdeb8cbdbb3c9ddb2c8deb7c9deb7c8ddc0cfe0c2d2e1c7 *d2dfcbd6e2cdd8e4cdd9e5cedbe4d0dce5d0dae3ced8e3cedae3cddae3ccdbe3ccdae4ccdae4cb *d6e3cdd8e3cbd6e2c6d4e1c3d1e0bdcfdfaec7dcaec7ddb6c7dbb6cbdeb8c9dcbbcbdac1cddbc0 *cedebdcfddc1cddec1ccdcbfc9ddbac7dcb8cbddb3c8dab3c7d9aec4dbabc5daacc6d9b0c7d8af *c6dbb2c6dbb0c6d9b0c6dcb0c4d8b1c5d6b1c6d9b3c6dab4c5dcb3c6d8b5c5d8b2c7d9b7c8d9b2 *c6d8b4c6dcb1c4dab5c7dab7c7d8b7c9dbbac8d9b7c7dbb9c9ddbdc9d8bdcad8bbcbdbbeccdbbe *c9dbc0ceddc0cddfc3cfdfc4cedbc3cedec2cdddc3ccdec2cedec1d0dec1cbdebec9d9bdcbd9bf *ccd8bfcbd8c0ccdcc1cdddc2cfddc6d2e0c6d1e1c6d1dfc7d1e0c6d1dec7d2e1c7d1e1c8d1e1cb *d1e2c6cee0c7d1e0c7d2e0c6d3e1c6d1e0c6d2dfc9d4e0c9d3e2c9d7e2c9d2decbd6e2c9d5dfcb *d6dfcbd7e2ccd8e2cad7e5cad1e2c7cee0c6cee0c6d2e0c6d1e1c6d1e1c7d1e0c9d6e3cad5e3c9 *d3e0c8d2e0cad3e3c9d4e0c7d1e0cad6e1cad4e2c8d3e2c9d3e3cbd3e1cad6e1ccd8e1cbd6e2ca *d5e3c7d3e1c9d3e1cbd3e2c7d1e0c7cfe1c5cfe0c7d0dec6d1e0c9d5e3ccd7e2ccd6e2c9d3e4c7 *d2e0c9d3e2c9d4e1c8d4e0c7d3e0ccd6e1ced9e2cfd9e3d1dce5d1dbe6d0dbe8d2dce6d2dbe4d2 *dbe5cfdbe5d3dae4d2dae7cfdbe3d1dbe3cfdae5cad8e2c9d6e2c7d1e0c7d2e2c8d3e2c7d5e1c6 *d3e1c7d2e0c6d2e2c5d3e0c7d2e0c7d1e0c6d1e0c3cfe1c4cedfc1cddfc4d0dfc6d2e0c8d4e0c9 *d4e2c7d3e2c4d1dfbeccdebacadcb6c7ddb9cbddbbccddbacddfbccbdbbbcbddbacbdcc1cdddbe *cbddbfcbddbbccdcbaccddbdccddbbcaddb6c9dcb6c8ddb8c8ddb8c7dbb7cbdbb6c9dbb7ccdeb2 *c9ddb4c8deb1c8dcb1c6daafc7dab1c9dcaec6dbadc6d9a8c6dbacc5dbabc5daaac6d9aec6daae *c5d8b0c5d9acc6d7adc8daafc6dbaec5dbaec6d9afc5d8aec4dbafc6d8acc6daaec7daaac7dbae *c6d9aec5daabc5d9adc7d8afc8ddaec6d9aec7dbaec7d8aec6d9aac5dba9c2d8afc4d9acc6d9aa *c6d8adc5daaec7dcaac3dbaac3daabc3daadc4d8afc4d7acc4d8abc3d8abc3d8aac2d7acc5daac *c4d9a9c2d9aac3d8aac3d8abc6d8aac4d9abc5dca9c2d9abc2d8acc4d7aac1d7abc3d8aac1d7aa *bfd8abc1d8abc3d6aec6d9afc3daabc0daaec1d7aac3d9aac3d8adc6d8a7c2d8abc3d8acc2d8ad *c3d8aac1d6aebfd8aabdd6acbed6adc1d4a6c1d6a8c3d8abc1d9a8c1d7abbfd8adc0d7aabdd3ad *bed6acbdd7a9c1d7aec1d8acc4d5aec2d4b1c3d8aec0d6aabdd3aac2d8acc2d8a8c0d6abc1d6a6 *c1d8a9c2dab0c3d6b0c5d9aec3d5b4c4d8b1c2d7acc1d6b1c6d9adc3d8b4c7dbb5c5dab5c7d8b3 *c7dabac9d9bbc9d8b9c9dcbbc7d9bcc7dabac7dbbbc6d7b9c7d8b8c6d6bbc5d8b9c6d8bac9dbb6 *c6d9bac6d9bbc5d7bac6d8bcc6dabcc8d9bbc4d6b7c6d8bbc8d9bcc7dabbc9d8bdcbd9b8c3d0bc *c8ccc4cdd1c5d0d59eb6cb9fb8d09bb7cda1b8d09eb6d09fb6cca3b9cea1b9cfa1b7cfa2b5cd9d *b3ce9cb4cd9db2ce99b2cca0b8d196b3ce93b8d28cb1ce8db3ce91b5ce91b3cf92b7d193b3d290 *b6cd96b4ce8eb2cc96b1cd9eb7cd9eb8cf9eb9cfa0b8cda2b7cea0b6cca0b5cfa2b4d09fb6cea2 *b4cc9eb4cf9db4cea2b9d2a1b6cea1b8d09cb3cfa2b6d1a2b8d1a1b7d0a0b8d0a1b9d1a5bad0a7 *b5d1a5b9d0a6b9d1a4bbcea6bbd2a6bdd1aebcd3acbdd3adbdd2afc1d3afc0d6aebfd6afbfd3af *c0d3b2c3d8b0c3d3aec1d6b2c1d6afc0d6aebed4a6bdd3a4bbd3a3b9d1a3b9d3a2bbd2a2bbd3a2 *bcd3a2bcd2a2b8d19fb9d19bb6d1a4bbd4a2bcd49dbcd6a2bdd5a3bdd39ebcd3a4bed89ebbd69a *bbd399b9d19dbad39dbdd49cbdd39ebdd6a0bcd79cbbd598bcd39abdd59fbbd5a1bdd79cbbd49b *bcd89ebed8a0bcd79dbbd89ebcd7a2bfd8a0bdd69abdd599bdd69cbdd599bcd69bbad399b9d699 *bad49bbdd49bbcd6a1bdd79bbcd89ebdd69ebcd49abcd698bbd89dbdd899bbd59cbbd797bcd69b *bed79dbfd699bbd698bbd699bcd697b9d498bed89dc0d79abbd39bbbd3a4c1d89dbdd8a2c0d7ab *c6d9bbcbdfc0d1e0c1cee0bccddebfcee0c4d1e0c3d0e2bdceddb1c7ddaac2daa5c1d6a5c1d6a0 *c0d7a2c2d99ec0d8a6c2dba9c4dbb5caddc1d0e0c7d4e2cad7e2cad8e2ccd9e3cbd9e5cbd6e2ce *d6e5ccd7e4ced7e4cfdbe3ced9e3cbd8e4cbd8e5c8d5e3c3d3e3c6d3e2c6d2e0c4d3e2c1d2e3bd *cfe2b6cce0acc7ddaac3dbacc4dbaac4d8a4c1d8a3c1d7a4c3d4a5c3d8a4c1daa0c2dba4c1d8a3 *c0d89fbfd6a6c1d7aac7dcb1c6dab3c5daaec6daaec7ddafc6dab4c8dbbacaddc1cdddc2d1e1c5 *d3e2c8d4e2c9d5e4c9d6e4cad5e2c9d4e3cad5e2cad6e2cad6e3c7d3e2c5d1e4bdcde0bfd0e2be *cedec3cfdfc5d3e1c7d4e2c5d1e0c6d2e1c6d2e3c3d3e2c6d2e2c6d1e0c0cddec1d1e2c3cfe3c0 *cee1c1d2e2c4d2e1c5d1e3bed0e0bfccdcbcccddb6cbddadc6dbadc6dbb1c7dabacbdfc0cfe1c6 *d2e1c7d3e1c9d7e3cad8e4ccd8e3cddae3ccd9e4cedbe5cfd9e6d0d9e4cfd9e3cbd6e2cbd7e3c8 *d6e3cbd6e2c7d4e2c6d3e5c2d1e2c1cfe0b6c9deaec7daaac6dcaac7dbb1c8dcb6c7debbcbdec1 *cddcc1ceddc1cedfc0cddfbdccdcbacbdbbccbdcb6c6ddb9c9dcb1c6d8b0c5d8acc7dbaac4d9aa *c5d8abc2d7b2c7dab5c5dab7c6d9b6c6d8b6c9dbb3c7d8b5c7dbb7c8dbb5c6dbb7c6dab8c7d8bd *cbdab7c6dab8c7d9b8c8d9b5c8dbb8cbdbbbc9dcbdc9ddbbc9dbbbc7d9bdc7d5bbc6d9bbc7dcbb *c6d9bdc9dabdcad9c3cddcc7d0e2c7cfdfcad0dec4cfdec4cfddc1cddec2cedfc2cbddc1ccdec0 *cbdbc1cbdbc3ccdcc1ccddc0cbdbc4cedec1cfdec4d1ddc8d1dfc6d0e0c7d0dec6d1dfc7d1dfc8 *d3e1c9d4e2c7d2e2c6d1e1c9d2e2c8d2e0c1d0dfc1cddec4d0e1c7d1e0c6d1e1c6d0e0c6d1dfcb *d3e2ccd8e3ccd8e2cbd5e3c9d3e0c6d1e1c0cfdfc3cfddc6d1e0c6d0e0c9d2dec7d2e1c7d2e2c7 *d1dec7d3e1c7d3e2c7d2e2c8d0decad3e1cad2e1c8d1e1c8d2e1cad2e1cad5e3cbd5e2cbd4e2cb *d5e2cbd3e0ccd6e0cad4e2cdd5e3ccd3e2cbd2e2c7d0dfc6d1e1c7d1e1c7d2e2c7d4e2c9d1e1c9 *d2e3c5d1e2c5d1e2c8d3e3c7d3e0c9d3e2cad6e3cfd9e4ced8e4ced8e3d2dbe7d2dce7d4dde6d3 *dde6d2dde6d1dce6d1dbe7d1dbe7cdd8e5cfd8e4cdd6e3cbd6dfc6d4e2c7d2e1c6d2e1c8d2e3c7 *d2e2c6d1dfc7d3e0c6d1e0c6cfe0c8d2e0c6d2e0c6d1e0bfcfe1c1cddfc0cddfbeccdfc1cedec2 *d0e0c3d0e1c3cedfbfccdebac9ddb4c7dcb5c7d9b3c8dcb6cadcb6cadcbbccddbbcbddbaccddbc *c9ddbccaddbbccddbccbdbbccbdab6c9ddb6cbdeb9c9deb6c9dbb3c9deb4c9deb5c9dfb2c8dcb1 *c9ddaec7dbafc8dcadc6d9aec6d8acc5d9aec6daacc3d9aac6d9b1c7dcb1c6dbadc3d9abc3d8ab *c2d7adc4d7afc6dbabc3d8aac3d9abc3d9a9c4d8a9c5daacc5dbacc6d8aac3d8acc4daabc4d9ac *c4d8afc4d8aac6d8acc7daaac5dba7c3d8adc4daadc3d9acc4d8b0c6d8adc3d8adc3d9abc3dbad *c5d8aac4d8acc4d8adc3daabc5d7aac4d6acc3d8aac4d8a7c3d8a8c2d9acc1d7acc2d8acc2d7ab *c3d7adc3d9abc3d9abc3daacc3d9aac3d6a9c2d7acc1d8adc3dbabc0d7abc2d7aac2d6abc4d9b0 *c3d6aabfd3aebdd6aac1d6abc2d5aec2d6acc1d9afbed7b0bed9aec3d9b1c1d8adbfd6a8bed8aa *bed6adbed8aac0d5adc0d8adbfd7aec0d6aabdd3a8c0d7a4c0d7aac0d7adc0d8acbdd6aebed8af *bed6aabed4adbfd5acbed6aabed3adbed3a7bdd3adbdd4aac0d8a8bfd4acbed4acbed3aabfd6a6 *bed7adc0d5abbfd6adbed6adc0d8abc2d8adc1d5afc1d8afc1d3b1c1d6b3c3d8b6c8dcb5c8dbb9 *c6dbbbc7d7b6c6d8bbc7d8bac9d8b9c7d7bac8d9b7c6d8bbc6d8bdc7d8bbc6dbb6c6dab9c6d9bb *c6d5b6c6d7b9c5d8bac7dbb8c7dabbc7d9bac6d5bbc6d9bbc8d9b8c7dab8c5d7bac4d8b8c4d6bb *c3cfbfc7ccc5cdd0c6ced2a1b3cb9bb4cba2b4ca99b4cba2b5ce9fb3cda0b4cc9fb4cfa1b6ce98 *b3ce9fb4cca0b4cc9ab1cd9cb4cd96b4cd96b2cc8fb4cf97b3ce90b3cc8db1cb95b4cf95b2d093 *b3ce96b2ce90b1cc93b1cc94b1cd9cb3cf99afc99cb2cb9db5cc9cb4cc9bb3cd9db1cc9fb2ce94 *b2cb9cb2c899b4cda0b4caa1b5cd9bb1cba3b4cca2b4cea0b5ce9fb3ce9fb6cc9eb5cca4b8cea4 *b6cba5b7cea4bacbaab6cda4b6cca4b9cfa8baceaabcd2a8bbcea9bbd0aabcd1b1c0d2b1bed1b4 *c0d3aec1d5afbfd3afc0d3aec1d6afbfd3abbad0aabad3adbcd3a6b9d1a0b8d0a2b8cf9cb6d19c *b4cf98b5d09cb7cea3bad19fbad19db9d19fbbd39cb9d19fbcd49fb9d2a0b8d2a1bcd2a4bad3a1 *bad396b8d19abbd19abad19cb8d29bb9d298b8d19dbbd39dbbd3a0bbd19cbbd498b8d39cbbd79c *b8d29cbbd698bad19bb6d19ebcd5a0bcd69dbbd39cbbd49fbad397b8d299b8d299b8d398b8d298 *b7d199bad398bad29abbd39dbad39bbad49ab9d299b9d299bad39dbcd79cbad397b6d29cbad3a0 *bcd59dbcd491b9d193b8d299bdd89dbbd49ebcd698bad59ab9d398b8d69bbbd39fbfd39ebcd59e *bbd4a4bdd8aac3d9b9cbddb9c9dbb3c6dab1c6dcb2c7ddb2c7dcb1c7dbacc3d99ec0d7a5bdd6a4 *c1d8a2c0d6a0bed7a3bfd6a3c0d89ec1d7b1c6dbbecddec6d2e0c8d3e1c9d2e2cad4e3cbd7e2cb *d7e3cbd5e3cbd7e4ccd6e2cbd5e0ccd5e2cbd3e2c8d3dfc6d1e2c3d1e0bbcddfbac9dfb0c4d9a9 *c4dba9c5d9a7c1d8aac3d8a7c3d7aec6dbabc2dba4c1d8a0bdd7a5c1d8a5c0d6a3bcd4a0bfd6a4 *bed6a4c2d6a1bed6a6c4d8aec4d8b1c6d9b4c4d6afc3d6adc3d7b1c5d9b6c8dcbac6dbbccbdbc0 *ccdcc5cfdfc8d1e0c7d3e0c9d4e2c9d4e2c7d4e3c8d2e0cad4e1c6d0e0c1cfdfbdcedeb1c9dbb0 *c9ddb2c7ddb4cadec1ceddc6d1e0c3cfdebdcfddc1cee0c4d1e0c3d1e1c1cfe0bbcbdec1cddfbd *ccddbccaddc1cee0c5d1e0c6d0e0bdcedfbdcee0bccde0b5c8dbafc7d8b2c6d8b4c7d9b6c8ddbe *cedec1d1e0c6d1dfc8d1e0ccd6e3cdd6e2ced7e2cfdae4d0dae2cdd8e4cfd8e3cbd6e3c9d3e2c5 *d0e0c6d1ddc3d1e0bbcbdbb6cbdbb1cadcafc6dbadc6dca9c5daacc5dbaec6d9b1c7dab1c5dbbb *cbdabdccddc1ccdbbfcce0c1cbdbbdcbdabdc8d9b9c7dbb7c6d8b9c7d9b5c7dab1c7dab1c6dbb2 *c2d8b2c4d7b1c4d8b6c5d8b3c5d8b4c4d7b6c4d8b6c6d8b9c6d9bbc6d8bac6d8b8c5d8bac6d7b8 *c7d8b8c7d9bac9dcbcc8dabcc7dabdc6d5bec7dabbc8d8bbc8d8bbc7d8bcc6d8bec9dbbfc9d9bf *c9dbbec9d9bfc8d9c2ccdbc7d0dec7d1e1cad3e0c9d1dec9d0dec8cfdec4ccd9c2ccddc3ccdec0 *c9ddc0cadbc2ccdac3ccdac3cbddc2ccdac3cddcc3cedec6d0ddc9d1dec8d0e1c8d1e1c8d2dfcb *d3dfcad1dfc9d3e2c9d1dfc7d1dfc5d0ddc6cfdec2ccdcc2ccdac4cdd9c5cbddc7cfdfc7d1dec7 *d2e0c9d3e2cad3e0c6d1dfc9d3e2c8d0e0c5cedec2ccddc3ccddc5cedac3ceddc6cfdec6d0dec7 *cedecbcfdecad1e0cbd2e0c7cfdec8d1dfcbd2e0cad3e2cbd3e2cad1e0cbd0e0c9d2e1c9d1dfc8 *d3e1ccd5e0cad3e2ccd3e1cdd5e2cfd7e1ced6e2cdd3e0c9d1ddc6d0e1c5cfdfc5d0dfc9d1e1c9 *d1e1cbd1e1c7cfdec5d0dfc8d2e0c8d2e0c7d3e2cdd5e2d0d8e4d1d8e4d3dae3d4dbe5d3dce5d3 *dde6d2dae3d1dbe6d4dbe5d0d9e2d1d7e2ced8e3ccd5e2ccd3e1c7d3dfc7d1e0c7cfddc9d0decb *d2e0cbd3dfcad2dec8d1dfc6cde0c6cfdfc6d0dfc5cfddbfccddbccbddbacaddbdcbddc2cddec1 *cdddc2ccddbccbdcbbcadcb8c7dbb6c9dbb5c5dbb5c5dbb3c6dbbac7d8b8c9dbb7c9dab6c9ddb7 *cad8bbcbdbb9c7dbb6cbd8b8c7d8b7c8dbb6c7dbb6c7dcb6c8dbb3c9deb2c7dbb0c6dbaec5d8ae *c3d8aac4d7b0c6d9aec6d9aec6daaac4d9adc4daacc3d9acc2d6aec6d7acc4d7acc4d8afc4d7b2 *c6d8adc6d8aec5d8adc2d8aac3d6adc4d8abc3d8acc2d8a7c3d7abc4daaac3d9acc3d8a9c1d6aa *c1d7aac1d7aac2d7a8c1d6adc3d7aac3d7acc3d8abc4d8a9c1d6adc4d6aac1d6a9c1d6aabfd5a9 *c3d8abc3d6aac3d9b0c3d7abc1d7abc1d4aac2d6a8bdd5adc1d6abc3d7aac0d5aec5d9aabed8ab *c0d6a9bed4a9bfd5aac2d5acc2d8abbfd6acc2d5acc2d7adc1dba8bdd6aabfd5adbed4abbdd4ac *bed2abbed6aebfd6aebdd6aabcd5aabed5aabdd5a9bcd3a8bdd3aebdd6a7bed3aabdd7aebfd6a5 *bbd3aebed6b0bed2aebfd4adbfd1b0c0d6aebed5aec0d6afbdd6a9bcd1abbdd3abbcd3a9bcd2a7 *b9d0acbcd1aebbd0aabcd1acbcd0aabbcfa8bad0a9bcd2a9bad1abbad1aabcd4abbbd2aabad2aa *b9d2aabad1a6bcd0abbcd3b1bed3abbdd1aebdd3aebdd2b3bfd5b1bfd3b3bed4b2c2d2b4c1d7b5 *c1d6bbc1d4bbc7d7b8c6d7bcc7d8bbc2d3b7c1d8b4c1d5b6c1d3b7c0d2b9c2d3b6c6d5b6c5d6b7 *bfd4b4bfd3b6c0d2b6c1d3b6bed0bac0d3b7c1d4b7c3d5bbc5d7bbc5d8bac3d8b7bfd3b8c0d2b9 *c2d3b5c0cebdc6cbc4ccd0c7cfd497b3cb94b5cd93b0cc90b3ce97b4cd93b1cc97b5ce99b6cc97 *b4cc9cb7d39db4cea4b4cc9cb1cb95b3cd91b3cc8eb3ce91b2ce97b4cf92b4cd92b4cd92b0cf91 *b3cf93b5d08db3ce8fb5cf90b5d092b6d094b4cf94afcb93b1cc95b2cb99b5cf99b1cc8eb0cb92 *b1cd9bb1ce9bb2cb9cb5d09cb7ce9bb3ce9bb4cf9eb4cc9fb5cc9eb7cfa1b8cf9db3d0a4bacfa1 *b9d1a3b6d0a1b6d0a1b6cea6b7cda4bbd1a5bbd1a6bdd2a9bbd1a7bcd2a8bbd1aabad1a8bed2ad *c2d4aec1d4a9bdd3adbed1abbcd3adbdd3aac0d4acbed3a3bbd1a0bad1a1b9cfa1b7d1a5bad3a3 *b9d29cb6d09bb6d198b6d18cb4cf93b7d298b8d296b7d099b7d399b9d49ebad395b7d196b7d18d *b7d492b8d390b5d398b6d39ab9d39ab9d39bbbd596bbd396bad49cbcd49bb9d798b7d59dbad39a *b9d397bad497bcd391b8d593b8d293b9d399bbd39abbd697bad599bbd396bad497bbd599b8d69b *bad697b6d598bbd698bbd797b9d48eb9d499bbd29abcd697bad397b9d499bcd799bad699bcd796 *bbd399b9d498bad39abbd095b8d197b9d397bcd69bbdd798bcd89cbcd69fbbd19cbcd494b8d49c *bdd69abcd3a0bbd8a1bfd8a5c4d8a9c2d6a2bed69ebdd6a2bbd3a2bfd8a4c3daa6c3daa1c1d7a0 *bfd89fbfd6a4bfd69dbdd8a0bdd69cbdd7a0c0daa3c1d7b3cbdfbed1e1c2d1dec6d2e0c7d2dfc7 *d3e0c6d3e0c8d3e3c8d5e4cad7e2cbd6e1c9d3e2c6d3dec3d0e1becee1bbcddfb1c7deaec5dba6 *c3d9a4c2d7a3c2d7a0c1d4a1c3d6a3c1d8a2bfdaa6bfd99fc1d89ebdd69abdd3a2bed59fbdd6a3 *c1d8a4c0d8a3bcd89fc1d9a8c2daaec8daacc6daaac2d6a7c1d7acc3d8afc6d8b1c6dbb9cadebc *ccddc1cfdfc4d0dfc4d0e0c5d2e1c6d2e1c7d4e0c8d5e2c7d3e2c8d7e3c5d1dfbeccdeb6c9deac *c6dba8c6da9fc3d8aec7ddb6cbdebcd0e1bbccddb8c9d9bdccdebdcedfbfcdddc1cedeb8cde0b4 *c9ddb2cbdbbbcadcc3cedfc3d1dec3d2e0c1d1e1c0d0e0bbcde2b1c9e0acc6daadc4d9b1c5d9b3 *c6dbb5cadebbccdfbfcddfc6d2e2cbd7e4cfd8e3d0d9e3d0dbe4cbdbe5cbd8e4c7d5e4c4d3e1c0 *d0e0bbcedfb8cbddbbcbdcb1c7dbaac4dba5c4dba4c3d9a4c4dba6c3ddabc5dbacc7d8abc6d9b1 *c6dbb6c8dbbaccddc0cce0c0cddec1ccdbc1cedabfcbdbbdc9dbb6c8dab6c7d9b3c6d9b7c7dab4 *c6d9b6c9dbb6c9d9b7c7dab5c5d9b6c6dab5c6d9b9c7d9b6c7d9b8c9d9b8cadebbc8dbbac7d8bc *cadabac9d8bbc9d9bbcbddbbc9dcbdcadbc0cbdcbdccdbc0cad9bbc7dabfc9dabecbdbbdcbd9c1 *ccdcbfcbddbeccd8bfcadbc6cfdec6d0dfc9d2e0c7d3e0c9d2e0c7d1e1c3d0e2c3d0dec6cfdec6 *cedcc6cedcc3ccdec0ccdabfcdddc2ccd9c1ccddc3cddec7cedecad2dfc8d2dec7d1e0c7d3e1c8 *d4e2c7d2e1c9d3e2c9d1dfc8d2e1c5cedfc0cbddc1cde0bfccddbccbddc2cddec4ccddc6cedfc7 *d1dec7d2e2c8d2dec7d1dfc8d1dfc3cedcc1cedec4cedec1cdddc0cbdec3ccdec3cddfc3ceddc6 *cedec6d0dec5d0dfc6d0e0c7d2e0c7d3e2c5d1e0cad3e3cbd2e0cbd5e2c9d4e0c9d3dfcad3e1cb *d3e1cad5e2cbd5e2cad7e2cbd6e1ccd7e3ced8e4ced6e2cdd7e3cbd5e2c8d1e1c7d0dfc6d1dfc6 *d1dfc8d2e0c4d0e1c7d3e1c6d0e3c8d3e0c8d4e1cbd6e0cbd7e3cdd9e4cfd8e5d0d9e5d4dbe5d4 *dde6d4dce6d1dde6d0dbe5cedce3cedbe5ccd6e5ccdae3c7d4e4c7d2e0c9d2e0c9d4e2c8d3e0ca *d5e0c7d4e2cad6e2c8d4e2c7d1e1c6d1e1c4d0dec2cedcc0cfddbcccdeb7c7dbb9c9deb5c8ddba *caddb6c9dbb9c9d9b3c6dab1c6d9aec4dab3c6d8b5c6dbb3c6d9b3c5dbb6c7d9b7c7d8b6c7dbb6 *c8dcb1c6d9b3c7dbaec6d8b0c7d8b2cbdcb3c7d9b7c9dbb4c7d8b2c4d8afc3d8b1c7dbb1c6ddae *c6dbb0c6dbaec6dab1c5d9adc6d9adc6dbabc4dab0c5d9adc4d8acc6dcaac5d9adc4d8acc5d8ae *c4d8b0c5d8acc5d6abc2d7a8c4dbacc3dbadc3d9adc4d9adc4d6aac5d9a9c4d8abc5daaac3d8ad *c6daacc4dbabc3d6aac3d8acc2d6acc2d6acc6d8a5c4daa8c3dca9c3d9a9c2d6aec3d8aac3d6aa *c1d6a5c2d6a5c1d6aac2d8aac3daacc3d7acc6d7aac3daabc2d6aec2d6a8c2d6aac2d9a6bed8a9 *bed8aac0d6abc2d5adc1d4aec1d6a8bed5a8bdd6adbdd6aabed6aac0d7aac0d4aabfd3aabcd2ac *bad1acbdd0a8bbd0adbdd1a7bad4a5bbd4a8bdd1abbbd1acbbd0aabad1aabad3a6bcd1aabdd4ab *bcd5a7bcd3a9bdd2a7bbd0aebdd1aabbd3acbcd3aabdd5acbed2a5bbd4a8bfd6aabdd1aebbd0aa *b7d0a9b7cea6b8d1a4b8d0a6bbd1aabcd2aab9d2a8b7cda7b7cfa8b6cea8b7cea5b8cea8bad0a5 *b6d0a8bbd1a9bad1a8b9cdaabbceaab7d1abbbcca9bacfaabbd2aabbd3aebdd3aebdd1b1bfd2b2 *c0d1b3c2d3b3c4d8b7c7d8b8c6dbb6c2d6b5c2d9b9c2d1b5c1d1b6c1d3afbfd3b1c0d4b5c1d8b1 *bed1b2bdd3b3bfd2afbfcfb1bfd0b7c0d1afbfd0b1c0d4b1bfd2b5c1d3b2bfd5b4c0d3b4bdcfb2 *beceb0c0d2b1bdc5bbc6ccc2ccd0c6d0d692b1cb96b3cc95b3cd96b6ce90b2cd84b1ce97b1cc9a *b5ce8cb4ce92b1ce94b5ce99b4ce9ab8d09cb7cf93b1ce95b4ce8ab1ce90b3cd91b4ce8bb4d091 *b1cf90b2cc96b5d198b6d092b6cf90b5cc8fb1ce91b1cd94b3ce99b4d098b3cf97b5cc96b6cf8d *b1cc90b2ce91b6d095b8d094b5d198b4d19ab4cd92b3cc98b6d09eb4cb9db6d09bb5d09fb0cba0 *b5cc9fb2cd9fb7cea3b6cb9db3cb9eb6cda3b6cba3b9d1a5b9cfa5bad1a9b6cea6bacda4bacba6 *bed2a7bbd0a7bbd0a8bbd1a6b9d2a8bdd4a9bcd1a3bbd1a6b9d0a6b9d09ab5d19ab8d09bb6d09b *b7d09fb8d29fb5ce9cb6cf93b5cf8db6d094b6ce97b7d097b7d296b8d295bbd395bad396b6d094 *b7d18cb7d293b8d18fb9d498b6d39bbbd696b8d898bbd398b7d090b6d191b8d18eb6d292b6d19a *bdd79abbd397b8d39bbbd497b9d396b7ce94bbd196b8d192b8d597bad194bbd69cbcd699bed49a *b9d39abad493bad597b9d19abbd79cbad49db9d79dbbd392b9d494bad398bbd297bbd494bad597 *bad398bad298bbd398bcd49dbdd691b8d493b8d598b8d39dbdd697bbd698bbd49fbdd89cbdd5a0 *bdd692b7d597bad59db9d498bad69abcd79cbdd79ebdd39fbcd49ebdd89bbcd79fbdd7a1bdd89d *bdd6a2bdd59fbdd5a1bdd6a4c1d798bbd59abcd69cbcd69fbed7a7c4dab4c9ddbfcfe0c4d0dfc3 *d0ddc1d0e1c1cedfc4d0e1c6d1e0c4d3e2c6d3e2c6d1e0c0d0e0b9cddeb8c9deb5c9ddaec6dba1 *c1daa1c0d8a4c3d8a3c1d4a7c3d9a3c1d8a4c2d6a4c1d8a1c1d8a4c1d9a0bdd79cbfd8a3c1d6a4 *c1d8a2c0d6a0bfd89fbbd49fbfd6a1c2d8aac4d8acc6d9abc4d6aac3d8a6c3d7abc5d8b0c5dbb9 *c9ddbccbdcc2ceddc0cfdec5cfdec4cfdfc6d1dfc5d0e0c8d4e2c8d6e2cad7e4c8d5e3c3d1dfbb *ccddb4c9dcabc4d9a5c2d8a8c3daaec7dab2c9deb2c9deacc6ddacc7ddb2cadfb6c9ddb7c9dcad *c6dbaac6dbaac4d8b1c7dabbcde1c1d0e1c1d0e1c1d0e0c1cee0bcccdeb2c7dbaac6d9afc8dbb5 *cadeb4c7dbb3c6dcb6c9dbc1ceddc6d0e1c8d5e2cdd8e3cedae5cfdbe5ced9e4c8d5e1bdcdddb5 *c7dcb4c7dbb3c7dbaec7dbabc7daaac7dca9c3d9a4c3d9a9c3d8a3c1d8a0c3daa4c3dba9c6dab1 *c9dbb5cadebdcbdcbdccdbc1ceddbfcdddc0cddec1ccdbbfcedebeccddb6c7ddb5c6d8b6c7d7b1 *c4d8b5c7dab6c6dbb9c7d9b8c8dab7c7d9b9c6d9b9c8d9b9c7d8bcc9d8bfcbdbc1cadbbccbdbbc *cadbc0cbdabdccdcc0cbd9bfccddbbc9dbc1cadcc0cbdcc0c9dbc1ccd9c1ccdebcccddc3cddbc3 *cedac5cfdcc6d0ddc1ccdbc3ceddc9d3e1cbd7e3cbd3e2cbd1e0c8d5e2c9d3e2c8cfdec6d1e1c6 *d1e0c7d1e0c3ccdac4cddbc3cedec3ccdbc4cedac7cfdec8d1e1c9d2e2cad5e3cad6e2cbd4e2cb *d6e1cbd6e1cad6e2c7d2dfc6d1e0c4cfdebeccdec0cbddbfcbdcc2ccdbc0ccddc0ccdbc3cedec4 *cfe0c6cedfc6d0e1c7d2dec9d1e0c9d2e0c9cfe0c7cdddc3ccddc1ccdec1cbddc3ccddc1cfdfc6 *cfdec7d1dec3d0e0c6cfe2c8d1dec9d3e0cbd5e1c9d3e2ccd4dfcbd4e2c9d3e1cad6e1cbd4e2cb *d4e0ced6e4cfd8e2d1d8e2cfd9e3cfdae4d0dae5d0dbe5d0d9e4cfd7e3ccd5e3c9d4e1c8d2dfc6 *d0e1c6d1e2c6d3e0c9d2e0c6d1e2c6cfe0c9d1e0c9d2e1c9d3e0ccd8e3ced9e4ced8e3cfd8e3d0 *d8e4d1dce3d2dce7d0dbe6d1dbe6cfd8e4ccd7e5cbd3e1c9d3e2cbd5e3cbd4e2c9d6e3ced9e3ce *d8e2cdd8e3c9d6e1cad6e2c9d4e1c7d3e1c5d2e0c5d0dec2cbdcbdcbdab7cadcb3c6daafc6dcaf *c5dcb3c5dab3c4d6b6c3d8b5c6dcb3c4d5b3c6d6b2c6d8b1c4d6b7c7d8b4c6dab7c9dbb7c7dab6 *c8d8b1c7dcacc5dbb2c6dab1c6dbafc3d8afc5dcb3c7d8b4c7dab1c7dab2c7dbafc5daadc7dbad *c5ddaec5daacc6dbb4c8dcb1c7ddb0c8dcb1c6d8adc6daaec6daaec5d9b2c7dbb0c5d8aec5d9b2 *c7d9b2c6d8b0c4d7afc5dbaec7d9afc5d9adc4d7acc4d9aac3d9aac5d8aac4d9a7c2daadc3daab *c5daaac3d7aec3d7a8c3d6adc3d8acc2d6aac1d7a9c3d7a2c1d6a8c1d7aac2d8adc5d8aec4d6ac *c3d6adc2d6a8c1d8aabdd4abc1d8abc3d8a7c2d7a9c3d6abc3d8afc3d6aec1d7abbfd4aac0d6aa *c0d4a9bfd4aabdd4acc1d6a9c0d5a9c1d5adc1d6aebdd6abbed4abbccfabbcd3a9bad1a8bad1aa *bad3a8bbd3acbbcfa8bbd1a9b6cca4b7cfa4b6cea8b8cea9bbd1aebdd0a7b9d0aab7cda2bbcea4 *bad1a9bad1a7b7d1a6b7cca9b7ceacbacda8b9d1acb9cea7baceaab7ccaab8d0a6bad1acbccda8 *b9cfa4b6d1a5b6cca1b4cda3b6cda5b4cda4b6cda5b5cca7b5cda4bacfa8b8cca5b5cca3b1cca2 *b5cea4b2cba0b2cba1b3cba9b9cda7b9cea3b4cdabb7c9a8b8cca2b7c8afb6cba7b9cdacbccda7 *bbd0b1c1d3b8c1d1b6c2d6b4c2d5b7c1d4b1bfd3afc0d5afc0d4b3c3d3b2c1d2b2bfd0b0beceae *bbcbabbdcfacb8cea8bbcea6bacfabbacbacb9cfafbcd1b0bcd0b0bbcdaeb8cdaebbceafbdceb1 *bcd2b0bcd0b1bfd1b1babfbdc7cbc3cbd0c6d0d48db4cd92b3cc8fb3d193b3ce91b2cf9ab6d196 *b4ce95b6ca91b4ce8cb1cd95b3cf93b2d091b4d091b2ce90b1ce8ab2cc8ab2ce8bb0cf89b0cc8e *b5cf8eb3ce8cb5d388b1ce94b6d293b7cf8eb2cd91b2cc90b3ce92b2cc8eb1cc8ab3cc93b2d18a *b1d091b2cc8fb2cf8db1d08fb1ce8ab1d092b2ce90b2d195b5d19ab7d09bb9cfa1b4ce95b2d196 *b2ce9bb1c8a0b5cfa0b5ce9eb4d1a1b6cea6b9cf9db5ce9fb5ce9eb6ce9db4d0a3b5d0a2b1d0a4 *bbd1a7bccea1b6cda6b9d1a4bad1a7bbd2a6bbd2a2bad1a7bbd1a2b8d19db8d099b5d097b6d094 *b3cf92b4cf96b7d390b4d192b5d196b7d08fb6ce8fb4d18fb6d18fb5d18eb4d18fb6d08eb6d290 *b7d292b7d193b7d18eb8d498b7d392b6d396b8d393b8d394b6d190b9d29abcd498bbd28fb6d092 *b7d38ebad499bbd39bb8d59ab9d59bbad392b6d397bad396b7d39bb6d398bad196b6d195bbd191 *b9d195b9d29abbd499bad79ab7d29abad299b9d199bad492b9d493bad496bbd398bbd495b9d395 *b6d599bad69cbad294bbd597bbd690b9d397b9d69abbd693b9d69abbd79bbbd496bdd691b8d799 *bbd69abcd69ebbd49dbbd69ab9d59db9d69bbad696bbd598bad599bbd49cbed69abbd69ebdd69e *bcd89cbdd79ebbd4a0bbd69dbdd79abcd59bbed69bbed59abcd59dbed69ebed6a3bfd7a3c2d8b0 *c8ddb6cce0b4caddadc6dab3c8dcb7c9deb9ccdfb9ccdeb9cde0b3c8dcaac4d9a9c4d9a8c3daa7 *c2d8a6c1d89fbfd69ec2d6a1bfd79fc1da9bc2d9a4c2d79cc0d89dbbd3a4c1d7a4c1d9a2bfd69c *bdd699bdd6a1bfd6a2c0d6a7bed6a1c1d8a0c0d7a3c1d89ec1d8a3c2d7a7c3d8a5c1d8a7c4d9b1 *c7d8b8c7dabacbddbdcfe0bfcfdfc0cde0c1d0e1c6d3e2c7d5e3c8d3e3cbd6e4cad7e3c8d3e2c3 *d0e1bccee1b3c9deabc3d8a4c2dba6c4daa4c2daaac6daa9c6daa4c5d99fc3daa7c6daa9c7dea7 *c3d9a4c1d7a2c3d8a7c3d8a6c3daadc6dbb7c9debccadec1cfe0c1cfddb8cbddabc6dba6c3dbac *c6d8abc6daadc4dba8c3dab0c8dcc1cfddc5d3e2c5d3e2cad6e3ccd8e4ccdae3c9d6e2c3d2e1b2 *c8dfadc7dba4c1d7a7c3d8a9c7daa6c4d9a7c4d9a5c3daa5c4daa6c3daa5c1d5a5c4dba7c4daac *c6d8adc6dbb5c8debaccdec1cee2c2cee2bfccddbdcedebdceddbccbdbb6cbdcb0c3dab3c6d9b5 *c6dbb8c6d8b6c7dab8c6d8bac7d8b7c7d4b9c8dbb9c7dcb9c6dbbcc9d9bfcadabdcddbc1cedec1 *cedfbdcddec0cadcc1ccdec0ccdec2ccdec2ccdcc1ccdbc2cedcc1cddec2cbddc2ccdec4cde0c5 *cedfc6d0e0c6d3dec3cfdec3d1e0c3d0e0c7d1e0c9d3e2cbd3e2cbd6e3c9d5e0cbd4e1c9d3e0c9 *d3e0c9d3e2c8d0dec5cdddc6ccdfc9d2dfc9d3e0c8d0dec5d2e1cad2e1c9d2e2cad3e1c8d2dfcb *d7e2cbd5e1ccd6e1cad3e0c5d1e1c2ceddbecadbbfcadcbccadcbecbddbfcbdcbfccdebfccddc2 *ccdec1cbdcc3cedfc5d1dec7d1e0c9d5dfccd7e2c9d6e2c6cfdec4cddbc1cedcc1cbdbc1ceddc3 *ceddc6cfdec5d0ddc7d1e1c5d0dec6d1e0cbd3e0cad2e0cdd6e2ced8e3ccd6e3ccd4e2ccd4e1cd *d6dfcfd7e2d0dae3d1dae5d1dae6d2dae3d3dbe3d1dce2d0dbe5d0d9e4ccd5e2c9d6e3cad2e1c7 *d2e2c8d1e2c6cfdfc8d0dfc6d2e2c3d1dfc2cfe0c7d0e1c6d1e2c7d3e3ced8e2cedbe2ced9e4ce *d8e3cfd8e3ced8e3ccd8e3cfd9e2ced9e6ccd7e3c7d3dfc6d1e1c9d2e1c9d4e3ccd6e2cdd6e4cc *d7e3ccd7e4ccd7e2cbd5e3c9d6e2cbd5e2c7d1e0bfcbdfbbc9ddb9c9ddb7c9dab4c6d7b4c6d9b3 *c4d7afc3d8b0c2d6b1c2d8b2c4d2b0c4d6b1c4d8b1c4d8b4c6d8b6c4d7b9c6d6b6c7dab9c8dcb6 *c7d7b6c6d8b2c7dbaec6d8b4c7dbaec5dbb4c6d9abc5dbacc6d7b1c3d7adc5ddabc6ddabc6dcad *c6dab0c5d9abc3d8abc3d8aac6dbafc7d9b4c7dab0c6dab0c6d8aec4d8acc3d9aec3d8afc6d9ae *c4dbafc7daaec6daafc5d6adc6d8b0c6d9aec5d8a9c4d8acc2d9aac2daa9c4d8abc6d7aac5d9ad *c6dbacc4dbabc3d9abc4daaac2d8b0c3d8abc3d8aac3d9aac6d8aac3d4a6bed9aac2d7acc1d7aa *c1d6aac2d5a9c2d6aac1d7aac3d7a9c1d9acc2d8adc3d6aec3d5aabed6adc0d6afc2d5adc3d3ab *c2d6acc0d6abbcd5aebdd4aabfd6a7bdd5a8bfd6adc0d8aec0d5abbbd3a9bad1acbbd2a8b9cea4 *b7cba6b5cca8b5cda6b7cea8b8cca4b5caa5b6cca8b7cea4b4cda7b6cca4b7cba3b6cea3b5cca6 *b5cda4b6cca4b7cea4b3cba3b4cba1b1cba4b1c6a0b1c9a1b4cba4b5cba6b4cbaab8cda2b5cba3 *b6cca3b5c9a3b2caa5b4cca5b4cda3b2cba5b4cb9fafc7a0b1cba1b3ca9fafc9a1afca9eaec89b *aec9a0b1c79cabc49cafc79eb1c79fb1c99daec6a0afcb9db1c7a2b0cba6b3c6aab6cba4b6cfaa *bacea7b8cda7baccaabbceadbdceaebdd2b1bdd2b0bcceafbbcfafbdceabbcceacbbceaeb9ceab *b8cba5b0c9a5b2c8a5b2c6a3b2c9a1b1c6a3b4caa6b5caa9b8cdaab7cdafbbcdadb7cba9b7c8ad *b7caafbacdafbacbb1bbccb1bac8bec7cec4cdd1c7d0d39ab3cd91b1cc8eb0cb8db0cb93b6cf93 *b2d091b1ce90b3cf90b0cf8eaecc93b4d08fb2cc8daecb93b1ce8cb1cc8db0cd8bb0cf88adcc87 *aecb8db5ce8db1cd8ab0ce8dafce8dafce92b1cd8eb3cd8fb1cf8db1ce8db1cd8db2cd90b1ce97 *b1cc8bb1cc8eb1ce8dafcf8dafcf8bb0cb90b0cd8eb1cd8fb0cd92b1ce94b1ce92b1d095b3d197 *b5d296aecc9cb3cb99b1c999b2cc9bb1cb9ab4cc9db0ce9eb3d0a2b2ca9fb4ce9ab3ce9db1cca3 *b7cda8bbd1a6bcd1a7bbd1a5b9d2a6b9d1a3b7ce9bb6d39cb8d097b4d196b3cf94b0d097b6d18c *b1d28bb1d194b1cd8fb5d18cb1cf8ab0d08cb2d092b5d18fb5d192b7d396b6d28cb5d293b4cf8c *b2cf93b7d28db4d193b8d192b5d395b8d397b4cf97b7d192b4d091b2ce8eb5ce8fb6d193b8d190 *b5d196b7d196b4d193b9d28fb5d197b7d491b3d29cb8d499bbd295b9d39cb8d09bbbd198b7d497 *bbd48db5d090b6d195b7d096b8d29ab8d39bbad294b7d396b7d490b7d297b9d393b6d291b8d195 *b9d595b9d498b6d397b7d591b6d196b8d292b9d396bad495b7d69abbd49bb9d49dbad79abad595 *b8d398bad38fb8d599b9d493b7d39abbd49bb7d69cb8d498b6d397b9d39dbbd699bcd69abcd79c *bcd89fbdd59abdd5a1bcd69dbbd59cbbd597bad598bbd69dbad49bbbd59cbbd6a0bdd7a1bed89d *bbd59ebcd8a0bed99dbed79fbcd6a8c1d6a5c1d7a1bdd7a3c0d7a2c0d8a2bfd7a3c1d69dbdd69c *bdd69fc1d7a1bfd7a3bdd898bcd8a0bcd99cbbd8a4c1d8a4bfd7a0bfd6a2bfd69dbbd79dbbd699 *bad69abed89ebfd7a1bfd59abbd79ebdd69cbbd69fbdd69dbed7a0bdd7a0bdd49fbdd7a4c0d7a3 *c0d8abc6d8acc4d8b2c5dabccadebfcedec2cddec2cee0c1cfdfc2d1e1c5d2e3c7d2e3c8d3e3c5 *d1e2c4d0e1bbcadeaec6d8a6c1d8a0c3d8a0c1dba0c1daa4c0d9a2c1d6a4c1d6a1bfd5a0c0d8a4 *c1d8a4c1d8a4c3d8a3c0d8a8c1db9ec1d8a5c2d8abc7dbb6c7dbbbccddb9cddfb3c7dda7c2dba6 *c1d9a8c2d7a9c3d8a8c3d9a9c3daacc4d8bbcadcc2d0e0c6d2e3c7d2e2c7d3e2c8d3e2c4d1e2b9 *cadeaac3dba7c2daa8c3dba0bfd8a4c1d6a5c3d8a2bed7a9c4d99cbed7a0bfd7a3c2d7a4c2dba8 *c2dbaac3d9a8c1d8b1c5d8b9c7dabdcbdcc0cedfbbccdfb6c9dbb7c7dbb6c7dbadc1daaec4d8ae *c4dbb1c5d8b8c7dbbbc7d8bac8dcbfcadbc0c9dabec9dbbbcadac0c9dabdcad9bdcbdbc1ccddc1 *ccdfc2ceddc3cddcc1ccdac2ccdbc2cddcc2ccdcc3cedfc1cddec4cedec1ccdcc3cddac2ccdec5 *d0dfc4d2dec7d1e2c6cfe1c5d0e0c1cfe0c4cfe0c6d1dec7cfe0c6d0e2c7d1e0c8cedfc9d2e2cb *d1e1cad1e1cad3e0cad1e0c7d0dec9d2e0c6d0e0c6cee2c7d0e0c5cfe2c7d2e2c8d3e2c9d5e1ca *d3e1cbd4e2cbd7e2c8d3e2c8d0e0c3cde0c2cbdcbec7dbbcc6d7bbcad9bbc9dbb9c7dcbccadcc1 *cddfc2ccddc1c9dcc1cbddc1ccddc7cfdecad3e0cbd6e2cbd2e0c6d1e0c5ceddc4ceddc5cedec3 *cddec4cddcc4ccdbc5cdddc2cfdec8d0e0cad3e1cbd2e2cad1dfcdd4e0ccd7e3cbd6e2ccd5e2cf *d7e4d2d8e4d1d8e5d1dae4d3dce5d2dbe4d1dbe5d1dbe5d0dbe7d1dbe7d0d8e6cdd4e2cad0e1c5 *cfe0c4d0dfc5d0e0c6d1e0c6d2e0c8d3e1c7d1e0c5cedfc6cfdbc7d0ddcbd3e2c9d3e4cad8e4cc *d6e2cdd5e1cbd3e2ced6e2cbd4e3cdd3e3cbd3e4c8d3e2c3cee1c4d0dfc7d2e3cad2e3ccd4e3c9 *d5e2ccd4e0ccd3e1cbd4e3c9d5e3cad4e1c7d2dfc5d1dfc1cbdeb6c6dbb6c3dab5c2d7afc4d7b3 *c2d6b1c3d8b1c2d5b3c3d8b2c3d7b4c3d6b1c4d9b3c4d6b1c5d4b1c4d6b4c5d8b6c5d7bbc7d9b6 *c4d6b7c5d9b5c4dab4c6d8b1c7d8b1c7d8b2c7d9b2c3d7afc4dab0c3d6acc1d7aec4d8aec4dbaa *c2d8afc5d8acc2d8abc2d9acc2d9acc3d8aec5daafc3d7afc3d7aec2d9adc3d7aec3d8b0c2d8aa *bfd5abc3d8abc2d7aec3d7afc3d8adc4daaec4d8adc2d9a8c1d8a9c3d9a9c0d7abc2d9acc4d9aa *c1daaec4d9aec6d8a8c1d8acc1d5acc1d4abc1d7abc1d6acc3d7abc1d7a9c4d7aac3dba9bdd6ab *c2d6aac1d6a9bed3aac2d7abbfd8aec3d7b0c3daaec1d6aebfd8b1c0d6aabdd4abbbd4acbbd4ac *bcd4acbdd3acbdd4a5bcd3adbbd3acbbd3a5bad2a9bdd0acbbd2abbbd0a9bacea8bad0aab9d0a9 *b6cca8b7cca3b5caa7b0c6a8b1c9a4b6cca7b5cba7b5cca9b1caa5b1cba3adcba3b3c7aab1c7aa *b1caa7b3cba2b3caa0b1cba3b1c9a2b0c99caec8a4b0c5a1b1c79eafc69baec7a4b1c9a4b1caa2 *b0c9a4b3cba2b0caa2aec9a4b2cca4b3caa1b3cd9eb1cca1afc89eaec89daec79badc696a9c39b *abc39ba8c497a8c49eabc797a6c39dacc29baec599adc49eaac4a0aec6a1adc59dacc3a3b0c8a5 *b0c9a7b2c9a4b1caa1b0c6a1b2cba4b1caa5b5cda6b6cca9b5ccaab6cfa5b6cda8b6cba4b1c9aa *b6c7a3b0cba2aec59eaec5a3b2c9a4b3cca4b0c8a3b1c8a4b1c9a5b2c9a3b1c9a7b4caa7b6ccac *b9cea8b6cdadbacbaeb3c9aeb8c9afb7c5bdc5ccc3cad1c6d1d692b1cb91b1cc89b0cd92b2cc96 *b3ce98b5ce8db2cc8cb3ce90b3ce87b0cc8cb2ce8bb2cf97b4cf92b0cc8bb0cd8db4cd8bb2cd7d *afce89b1ce89b0cb8db2ce90b4cc93b3cd8db2cd90b1ce86b1cf8cb2d38ab1ce8bb0ce8bb1d189 *afcd92b4d091b4d08cb1cd8cb1cf88aecc8bafcc8db1cf8eb2cd8db1cf8bafcd8dafcc8aadcd91 *b1ce8cb3cc91b1ce99b3cf9ab3cb8fb1cb96b1cd97b2cd96b1cd97b1ce9ab2ce9bb7d19bb7d19c *b3cc9db3cfa1b4d0a5bbd3a1b6cda3b7d2a4bbcf9eb5d19cb6d192b1ce8eb1cf8eb2d090b4d095 *b5d190b4cf8eb4d089b1d18bb4d093b3d08fb0cd8ab1d08bb5d08bb3d28eb6d18cb5d191b6d290 *b6d295b6d291b6d193b7d18cb4d08eb6d18eb6d08cb5d390b7d494b8d390b2ce95b7d19ab8d191 *b6d091b6d38cb6d199b9d693bad58cb4ce94b9d296b7d393b8d396b8d396b9d399b8d596b9d395 *b6d199b6d195b6d093b7d18fb6d396b6d491b6d196b9d598b9d598b8d29abbd296b8d695b7d293 *b6d493b7d291b7d498bbd899bad695b7d196bad494b8d498b9d496b9d793b5d299b9d39bbcd69a *bbd59ab8d394b8d593b8d39cbad19ebbd39abbd696bbd99cbed899bbd597b7d399b7d49dbbd69b *bbd69bbcd7a0bfda9fbfd89cbdd5a0b9d79dbbd49ab9d69cb9d698bad49abcd79bbdd795bbd599 *bbd799bcd3a3c0d59fbdd69dbcd69ab9d29fbdd89ec1d79abdd7a0c0d79bbbd69dbcd49ebed59c *bdd69abbd39dbdd69cbbd79ebed69fc1d99ebcd49ebed89cbfd79ebfd79bbbd69ec0d697bed89d *bfd79fc0d69ebdd69fbdd79abdd69dbcd69abdd8a2bfd89abbd79ec1d798c0d79ebfd697bbd59d *bcd69abbd69ebdd7a1c1d6aac3d9b8cadfbecee2c2cedfc0cee0baccdebfcddfc4d0e2c6d2e2c3 *d3e1c5d3e2bfd0e0b6cadeaac3dba3c1d8a1c1d89ec1d99fc0da9fc0d7a4c2d9a1c1d7a4c1d8a4 *c1d9a5c1d8a6c3d7a0c0d6a2c3d7a0c1d89bc1d8a4c0d7a4c3d8aec6dab3c8dbb9caddacc5db9e *c1daa3c1dca6c2daa4c1d6a4c1d8a0c1d8a2c2d6afc5d9b8cbdcc0d0e0c4d2e1c1d0e0bfcee0bd *d0deb7cadda9c4d9a5c2d9a3c1daa4c1d8a0c2d9a4c2d7a6c1d7a1c0d7a7c5d9a0c1d8a0c3d6a3 *c0d8a1c0d9aac5d8aac4d8aac3dab0c7d9bbccddb7ccdeb9ccdfbac9dbb4c6dab0c3dba8c3daaa *c0d7aac4d9b6c7d9b8c8dbbbc9dabccadabfcdddc2ccdcc2cddcc1ccddc0cbdcbfccddc2ccdcc3 *d0ddc3cddec6d1ddc4ccdcc4cedec2cddcc4ceddc3cfddc3d0dec3cfdfc3cedec4cfdec4cedfc2 *cee1c3cee0c6d0e0c6d1dec5cfdec4cfdfc1cfe1c4cfe0c7d3e1c9d3e0c7d1e3c7d0dfc4cfdec6 *d2dfc9d5e1c9d3e2cbd6e3cbd5e2cbd3e0c8d1e2c7d1e0c9d2dec7d1e0c8d1e1c8d3e2ccd6e2cc *d7e3ccd5e2ccd4e2cbd5e2c7d3e0c3cedfc1ccdfbdc9dabecbdebdc9ddbbc9d8b7c7dab8c9ddbc *cbdbbdcbdcc3ccdec6d1e0c7d0dfccd4e0ced6e1ced6e3cbd3e2cbd3e1c7d1e0c6d0e0c7d2e0c6 *d0dec4cedec8ccddc6cedfc6cfddc6d0e0c7d0dcc8d2dfc9d3e0cad6e1ccd6e2ced7e3cdd8e4d0 *d9e5d0dae3d1dae5d3dce6d3dde7d3dce6d3dbe4d1dce4d1dbe6d0dbe4d0dae5cdd8e3cbd6e3c9 *d3e3c7d0e2c5cedfc5d0dfc3cedec2cfdec3cfdec6cedfc3d0ddc2cddcc5d0e0cbd3e1c7d3dfc6 *d2e1c5d1e0c9d3e2c5d2e2c7d3e2c7d4e3c7cfdec8d2e0c6d1e0becbdebcccdfc3d1e1c7d3e3c8 *d4e2cbd2e2ccd5e0ccd4dfc7d3e2c8d4e1c4d0e1c2cfe1bfcedfb9cbddb5c7ddb6c6dcb1c4d7af *c2d6acc2d6aec1d4b3c3d7b2c3d8b2c4d6b3c2d7b5c3d6b2c3d4afc3d6b3c6d6b7c6d7b7c6d7b6 *c7d6b6c9d9bac6d6bbc6d8b8c6d9b2c3dbb3c3d8b1c6dbb3c6dbaec4d8b2c6dbb2c3d8aec5d8ac *c5dcaec3d9afc6daadc5d8adc3d5adc6d8afc4dab6c5d9b3c5dab5c5d8b0c5d6aec5d8b0c6daae *c5d7aec6d9aec3d8adc2d7acc1d7aec3d6a9c2d7abc5d8abc4d8a9c1d6aac3d9acc3daaac2d8aa *c4d5afc5d9acc3d8aac3d8abc2d6a8c3daa8c3d8adc3d6acc1d6adc3d8aec3d6aac3d6a9c1d5a4 *bdd8a8c2d8a8bed7acbfd5aac2d6aec2d7aec4d7acc1d6adc3d6adc1d9acc1d5a8c0d3acbdd2ac *bbd0aabad2acbcceacbcd1abbbd3aabbd3adbdd3acbdd3adbed5aabcd5a9bbcdabbad0aab7ccab *b7d0a9b6cda9b6cda7b3caa3b6cca9b4caa2b2c99db4cca5b4c7a6b6cba4b5c9a1b3cba2b3cba3 *b4cba4b1c9a4b1c9a1b0c7a1afc89faec6a3b0c7a3afc9a1b0c79babc79badc69eadc2a0aec79e *adc6a0b0c79aaec99faec89eadc99eaec8a0aec499aac59aaec69eabc498a8c09dadc59dadc193 *a3bf98aac194a4bd98aac091a6bf98a8c099abc49caac699a9c395a9c399adc59baac699a8c09c *acc39eacc69eaac49baac49dadc49faec6a2adc79fb1cba2b1c79eaecaa1b2c99dafc6a3b2caa3 *afc5a6b1c7a0aec79baec39eadc69aaac19eacc39faec5a4afc8a3aec5a2b3c3a2acc3a5b3c8a7 *b1c8a8b2c9a8b4c9a8b4caa7b7caa6b5c9acb5c3bdc9ccc2cdd2c6d0d68db1cd96b4ce8db2d08a *b4ce92b6ce8bb2d08cb0ce92b3ce89b1ce8ab2cf88b4ce84b1cc88afcd91b5d092b1ce92b2ce87 *b0cd87b0ce8cb3cd8ab1ce80b1cc89b4cf8bb3cf8fb3ce8eb1ce8cb2cd88afc988b1cc8ab0cf8c *b1d089b0cf90b5d087b1cf8cb0ce89b1cb8db1ce8bb0cd8bb3d08cb1cd8cb4d185b3d08bb2d08a *b0cf8cb1cf86b0ce8ab0ce89b0cb87aeca90b5d191b6d28cb1ce8eb3cf8eb0cc8eb4d18bb4d28e *b4d195b6d08eb3ce98b5cf96b9d198b6ce94b3d091b2d18bb1d18cb1d088b1d089b2d08cb4d088 *b4cf8eb1d091b5d18cb1cd88b0ce8cb4d385afd08bb2d090b2d08bb1cd95b7d18eb5d18fb6d08e *b6d18fb8d294b8d38db5d08cb5d28db5d38fb4d391b7d192b6d28bb3d18eb7d493b6d390b6d299 *bad69abbd291b6d28cb8d28fb6d18ab6d18eb5d18cb5d48bb5d297b6d098b9d394b7d198b7d18c *b8d393b7d596bad694bbd798b9d39cbcd598bad496b7d096b9d098b9d596b6d396b9d492bad796 *bbd392b8d298bad492b8d392b8d48fb9d59bbad48bb6d397bbd58db8d29cbbd695b8d391b7d28b *b7d48bb7d38fb6d48cb7d597b8d498bbd396bbd499b9d391b7d692b9d797b9d697bbd39abdd69c *bcd699b9d49ebdd59bbbd897bbd398bbd59cbcd798bad59abbd89abcd699bcd699bad59bbbd49a *bed696bad693bcd593bcd89dbed99bbfd69ec1d79dbbd79abbd597bbd69abdd799bbd89bbbd79c *bfd79bbed397bbd395bbd497b9d59cbdd69ac0d69abbd49bc1d795bdd59cbed79abbd698bbd691 *bdd69abcd694bbd797bdd699bdd79abdd8a2bfda9cbed89ebed699c0d79bc1d99bc0d79abfd898 *bdd79cbfd69abdd79dbdd79abbd598bed8a3c3ddaec7ddb3cbddb6cbddadc8dbb4cbdfb9cbdfb9 *cce1bacddfb8cce0b5c8ddaac6dca3c3da9dc1d99dc1d99ec0d898bed99fc1d89fbed9a1c1d69e *c2da98c2d89dc3dba2c1d89cbfd8a4c0d8a0c1d79ebfd69cc0d6a3c2d79fc0d6a4c3d8aac6dba4 *c2d8a2bed8a1bfd8a2c2d89ec2d7a1c2d79dc1d9a1c3dba5c2dbabc3daaec5dbb3c9ddb4c9dab4 *caddb6cbdbabc7daa2c1d8a0bfd8a2c1d7a5c0d7a2c2d99fc3d8a1c1daa4c2d8a3c3d8a3c1d89e *c0d69dc1d89ec2dba4c1d9a0c2d8a6c3daacc6dbaec7daafc4dbb2c7daaec5daaec6daa6c0d8a8 *c3dba4c2d7b0c7d8b4c8dabacadbbdccdec2cdddc2cfdec3cfdfc3ceddc4d0ddc5cfe0c4d0dfc3 *d0dfc3d0ddc5d0dfc4d2dec1ceddc3cddfc1cfdfc2d1dec3d1e0c3d0e0c1cedfc3cee0c3cfe0c3 *cfdcc1cedfc4d0e0c1d2e0c2cddac3cedfc3ceddc5d0e1c6d1e1c7d1e1c4d1e2c4d2e2c7d2e1c8 *d0decbd2e1c8d3e1c9d5e2cbd6e2cbd7e3c9d4e3c9d4e2c8d7e2cad6e2c9d6e1c9d5e1c9d4e1cb *d7e3cbd8e4cbd8e2cbd8e3c9d6e3cad5e1c7d1e0c4cfe0c0cdddbdcbdcbecbdebaccddb8cadbbb *caddbfccddc4cedec4cee0c7d4e3cbd4e3cbd9e3cddbe3ccdce3cbd8e3cbd4e2c9d2e1c6d1e1c6 *d0dec6d0e1c6d3e1c5d1e2c4d1dec6d1e0c7d1ddc9d5e2c8d3e3cad5e2ccd7e4cbd8e4cedbe5cf *d9e6d1d9e5d4dce5d3dce6d3dce7d0dce5d1dce7cfdbe5d0dde6d0dbe5cedae5cfdae5c9d5e3c6 *d3e3c6d0e1c4d0e0c1cfdec1cdddc2cddec3cedfc5d1e2c3cedfbfccdebcc9dbbbcbddc0cce0c0 *ceddc1ced8c4cddec3cfdfc2cfe0c4cee0c4d2e0c3ceddc1d1e1c0cedfbdcadec2ccdec3ccdec5 *d1e1c3d0e1c4d1e0c2cfe1c6d3e0c2d1e1bfd0e0bdcedeb8ccdcb5caddb4cadbabc6daaec6ddaf *c4d8aec5daafc2d5b2c3d6aec3d7aec3d7aec1d4b2c2dbb2c3d9b1c4d7b1c3d3b5c3d4b5c5d4b5 *c5d6b1c4d8b6c7d9b7c6d8b7c6d8b8c7d7b4c5d6b0c7dab2c7d8aec6d8afc6d9b0c5d9aac3d8b0 *c7dab2c6d8abc3d9afc7dbaec5dbb0c6dbadc3d8aec6dbadc6dbb0c6d9afc6d8afc6d7acc4daae *c5d8b0c6d8aec4d9aec6d7aec5d8abc5d8a9c4d6aac2d7a7c1d7a7c3d8a5c3d9a6bfd7a8c1d7ab *c3d7a9c5d8acc4d8b1c5daaec3d8aec5d8aec4d7abc3d6a7c2d6aac3d8adc3d7acc2d8aac1d6a8 *c1d8a6c0d6a7c1d6a4c0d4a3c1d5a7c1d6a8c1d9a9c3d6abbcd2aabfd5a8bcd6a7bfd3abc1d4a9 *bcd5abbbd2abbbcea8b8cdaab7cea9b9cdaab9d2a6baceaabcd1aabdd1a8bacea6b6cda5b7caa9 *b9cba8b6cba8b7cea7b6cda7b6cda7b5cba4b7cca5b9caa1b1c9a4b3c9a5b2c9a4b1caa1b4cca2 *b1c8a1aec69faec69fb0c79faec6a0afc79dacc5a1b1ca9fb0c8a2b1c79faec39bb3c89aafc797 *aac896aac69bacc29baec197a9c297acc399aec497adc599aac494a9c392abc297a6c094a6bd99 *abc198a8bf94acc38eaac291a8bf92a5be90a2b895a7be91a8c294a7be95a8bf96a8bd98acc194 *a8c194a9c399abc19aa7c198a8bf98acbf99a6c298aac398acc297aac19da8c39aacbf9caec196 *afc39aaac69faec69cadc69caec39ea9bd9aaac69badc49dacc59badc6a0b0c99aafc89faec79f *afc4a5aec4a0adc7a5b1c7a5b2c6a1afc6a0b3caa7b4bfbbc9cdc2cdd2c4cfd592b1cb92b2cd91 *aecc93b3ce80b1cb90b2cc87aec98db0cb87b1cd92b1cc8daec98bb0ce87afcd90b2cc82aecc8a *b2cd90b3cd8ab1cb8ab1cb88afca84b0cd8cb0c989b0cc8eb1ca8bb1cc8ab1cc8fb1cb84adca86 *afcb8baecb85b0cc86aecb8eb3ce89aecb8cb0cb87afcc8db1cd87aec98ab0cc89b0cc8aafcc90 *b2cf8eb1cf8db3ce86b0cb8db2ca8cafcb87b0cb95b5cf8db1cb8aafcc8cafc98ab1cd8ab1cc8d *b0ce8eb0cc8baecd8dafcf86aece8eb1d08bb1ce89b1cd8bb1cd8cb1cc8db1cf8eb1ce8cb4d08b *b0ce8bb0d08eb2cf8db3cb8eb5ce8cb1ce8cb1cf8bb0d18fb3d08eb1ce8fb1cf92b1d08db4d092 *b6d08db3d08eb4d08fb3d089b2d08eb4d091b6d28db2d196b8cf95b7ce8bb2ce92b5ce8eb1ce94 *b5ce97b9d393b7ce92b6ce94b6cd94b7d18fb6d191b3d191b2d18cb3cf91b4d291b5d195b6ce99 *b7d194b5d199b8d19cbad294b9d199b7d29ab9d395b7d397b8cf9bb8d190b2ce96b6d095b7d19b *bad49bb9d394b6d197b6d191b5d098b9d399b8d297b7d195b6d198b8d398b9d295b8d38db6ce96 *bad397b8d292b7cf96b7d298b9d399b6d195b6d499b8d196b6cf94bacf92b8d09cbbd192b6d199 *bbd59cbad498bbd698b9d59bbbd49abad39dbbd39cbbd59ab9d396b9d398b9d397bbd59fbed69a *bdd498bcd496b7d398b9d298bad29bb9d39abbd59fbdd498bad395b9d29dbbd39ebdd598bbd49d *bbd397bbd59abcd69abcd69bbfd697bbd397bbd59bbad396bbd395bbd397bbd498bdd498bbd696 *bbd39abdd39ebad497bad397bcd298b8d39abad398bbd69ebbd69cbbd699bbd69cbdd5a0bdd593 *bad397bcd499bcd698bcd7a0bfd79cbcd69dbbd3a5bfd59ebfd7a2bfd4a7c2d6a6c1d6a7c1daa6 *c3d8a9c2d8a5c2d6abc6daa3c4d9a4c1d89dbfd89ebed6a0c2d7a0bfd5a3bdd59ec0d69bbdd69b *bdd69ec2d69bbfd5a1c0d599bdd79ebed79ebfd7a2bfd59ebed49ebdd7a2c1d6a4c0d6a2c1d89c *bfd69ec1d7a2c1d6a4bfd69ec0d79cc0d6a2c0d69cbfd6a3c1d6a4c2d89ec1d8a5c1d7a4bfd6a4 *c2d8a1c3d8a8c2d9a3c2d89dbfd5a3c1d8a6c1d7a4c1d8a0c0d7a1c1d59bc0d8a3c2d8a1c2d7a4 *c1d6a1c1d89fc1d89bbdd89fc0d6a0c1d6a3c0d6a3c3d8a1c2d7a2c1d8a9c3d8acc1d8adc1d7a5 *c1d3a6c3d6aac2d6b5c6d6b6c7d8b9c8dab9c8d8c1ccdcc6ceddc7d1dec7d1dfc7d2e1c7d1dfc7 *d1e0c6d2dfc8d2dec7d2e0c7d1dfc4cfe0c2cdddc3cedfc5cfdec5d0dfc3cee0c5ceddc5cedec6 *d1dfc3cddcc3ccdbc3cedfc3cddbc6ccdec6cedcc7cfdfc7d1dfc8d3e2c5d1dec6d0dfc3cfe1c4 *d0dec6d1dec7d4e2c8d3dfcad5e2cad5e1cbd6e0c9d3e0cbd3e1c9d3e1ccd3e2cbd4e1cbd7dfcb *d6e1cad6e2c9d6e1cbd5e0ccd5e1cbd6e1cbd5e1cad5e2cad4ddc3d0ddc3ceddc4cedcc0cbddbe *cbdcc2ccdfc3cfdfc5d2e0c9d2e0cad3e1ccd5e2cdd4e0cdd8e2cfd9e2c9d7e3cbd5e2c9d2e0c7 *d1e0c9cfdec5cedcc5d1ddc7d1dfc7ceddc9d1e0c7d3e1cad4e2ccd5e2ced4e1ced6e2ced8dfd1 *dae4d3d9e6d2dbe5d4dde6d4dde5d3dbe3d3dbe5d3dce4d1d9e4d0d8e2cfd8e2cfd9e4ccd7e2cb *d6e1c8d2dfc8cfdec5ceddc2ccddbfcbdec2ccdfc6cee0c4cfdec6cedbb9c9d9b8c7d8bdc7dabd *c7d8bbc9ddbecbddbfccd9c3ced9c3d0dec3ccdcc1cedbbdccdcb9ccddbdccddbecbdcbdc9d9be *cdddc1cedec3cee0c6ceddc3cedec2ceddbfcddeb3caddb6cbdcb1c8dab3c6d8afc4d7afc3d8b0 *c4d8afc2d7afc2d4adc3d7b1c1d5afc2d4b1c2d6b2c0d2b4c1d3b3c3d4b4c3d5b4c3d5b8c5d6b7 *c4d3b7c6d6b8c3d5b7c6d7bbc4d4b8c6d8b5c7dab6c7dbb5c7d9b0c7d8b5c5d6b6c6d8b4c5d6b3 *c5d6b8c7d8aec6d8b1c6daafc6d8aec5d8b1c6d5b5c4d5b1c5d7b1c3d6b3c3d5b5c5d9aec4d6b0 *c4d6b2c4d5adc3d6b0c2d6afc3d5adc0d5afc3d6afc1d5abc2d4abc0d3adc4d7aac1d6aac1d5aa *c1d7a9c1d5aec3d7b3c6d8b4c6d9afc5d9b6c6d4aec2d3adbdd5acc0d4aac0d4aec1d6adc0d3a9 *bed5acc1d6aac0d3adc1d3aac0d3aac0d3a8bdd3acc3d8acc1d3adc1d3abbfd4afbed3aebfd3aa *bbcea9bccea9bbcfa9bbd0abbbd1a7b4cba8b9cca7b6cea9b8cfabbaceabb9cda9b7caa8b6cca4 *b2c9acb6c9a9b3caa7b6ccaab7c9a6b5cba9b6c6abb5c8a8b7cca5b5c9a8b0c5a8b4c9a4b1c6a0 *aec2a0adc5a0adc3a0aec3a0afc3a2adc89faac2a0acc7a3b0c3a1adc39eaac0a0adc09eabc3a0 *abc19dacc39ca6bf99aac59babbe97a8c198a9c195a7c095a5be94a2bc97a6be94a4bd94a7bc8f *a6be94a4bf97a5be93a4bf91a4be94a3bc8ea3bc949eb88da1bd8ca2bd8da0ba92a8c08fa6bd94 *a8be94aac193a5bd8fa7bf99a6be8ea4bd95a3bb99a4c192a4bf98a5be8fa2b798a7c197abc199 *abc399aac098a5bd99a8c195abc293aabe9caec59daec397a9c29aa9c099aac39aaac19dacc39d *abc1a0afc5a1afc49baac09eaec7a4adc1a4aec0a5b1c3a1acb6bdc6ccc4cdd1c9cfd493b0cb8f *b0cc97b4cd90b0ca8fb6cb8db4cd8bb0cd8bb0cd8ab0cd8cb1ce88aecd8eb1cb8bb2cb8cb1cd8a *b1cc87b1cb8db4cc88b0ce8fb4ce8cb0cc8ab1c98eb6cd88afcc8aaecc8aafcd8cafcc8db0cd86 *b1cd86afcc86afcb87afcc8badcc8aaecc8dafcb8eafcf8bb0ce8db0cd8bb1cd89b0ca8db0cd8e *b1cb8eb0cc8bb0cd91b3cd8ab0ce8caecc91b1cc8bafcb8fb2d084afcc8aadcb8bb1ce86accc8b *b1d08cb1d193b2ce94b3ce8caec98baecb88afcd8ab0cf91b3cf8eb3d18db1ce91b3ce8eb2ce85 *b0cd8bb1cc85b0cd89b2d089b2d08db1cf8cb1ce92b6d08fb3ce8fb1ce90aecc92b0cd8eb1d08d *b4d08fb5d38db1cf8db4cd86b2ce8bb0cc8eb2ce8db3d18db4d28db4d193b5d091b8d197b6cd8d *b5d196b6d09ab9d092b6ce9db9d092b6d197b6d195b9d296b8ce91b5d196b6d390b5d299b8d299 *b8d199b8d19abad19fbbd293b6d09cb9d497b7d298b8d098b7d29abad299b7d49bbbd498b9d19c *bbd19dbbd294b5d098b8d598b9d097b8d291b9d496b9d597b7d192b8d298b7d19ab9cf95b6d18d *b5d298b8d197b8d395bad391bad397b9d198b8d494b7d198bbd499bbd496b9d39cbbd797bbd39b *bad399bbd69cbad49cbbd696bad6a0bbd69cbbd698bbd59dbbd594bad498bad49dbcd59bbbd497 *bbd59bbcd79bbad59fbdd59fbed49abcd39dbcd69ab9d59dbbd698b7d499b9d49ebed79abbd29a *bbd498bad495bbd695bbd69cbcd39abbd399bbd39ab8d49dbfd69fbdd59cbed698bcd695bbd59a *b8d598b9d29dbcd79cbdd39dbdd692bad19bbbd698bad49ebcd698bbd393bad695bbd59bbdd596 *bbd399bbd5a1bed79cbcd598bcd49abcd59bbbd495bbd399bed69abdd69dbed6a0bdd59abbd49e *bfd89cbfd69fc0d69ebfd79fc0d7a0bed89dbdd89fc1d8a4c1d69fc0d79dc1d89ebfd69dbdd6a2 *bfd699bdd6a1bdd49cc1d99dc1d69ebfd7a0c0d798bcd6a1c0d7a0c1da98bbd69ebfd79fc0d5a2 *c1d79cbed6a0c1d9a4c1d8a6c2d9a1c0d6a3bfd6a2c1d69fc2d69bc0d6a6c1d69bbfd6a1c1d8a5 *c2d7a4c0d8a2c1d5a2c1d69ec1d8a3c0d5a0c0d6a1c1d69dc1d79ec1d6a7c3d7a1c1d79bc1d6a1 *c2d6a4c0d6a4c3d6a2c1d8a2c1d8a6c3d89dc1d8a4c1d8a3bfd7a2c2d89fc0d898bdd7a4c0d7a4 *bdd6a0bed6a5c1d6aac3d7b2c7d8bbc7d9bbc9dbbeccdac2cedcc6d1e1c9d3e2cad3e0c9d4e0c9 *d4e0cad1dec8d3e0c9d3e1c7d1e0c9d2e0c7d0dfc6cfdec4d0ddc6cedfc4cfdfc3d0e1c5cedfc2 *cee0c3d0e1c6cee0c7d1ddc4d0dfc6d1ddc7d3dfc9d3e0c7d0e1c8d1e2cad2e0c7d2e0c6d1e1c4 *d1e0c3d0ddc5d1e0c6cfdfc4cee0c7d1e2ccd3e0cbd4e0cbd5dec7d2dfc6d1dfc7d2e0c8d3e1c9 *d5e2cad4e2cbd6e2c8d4e0cbd7e2cbd6e2cbd6e0cdd7e2ccd6e3ccd7e4ccd6e2ccd7e2c6d2dec3 *ceddc3cfdec3cfdfc7d0e1c6d3e1c7d3e2cdd6e1ccd7e2ccd8e1cad6e2cbd6e2cad3e1c9d1e0c8 *d2e1c7cedfc6d0dec6d1dec7d1dec7d0ddc6cedec9ceddc7d1decad1e1ccd6e4cfd7e3d0d8e3cf *d8e1d1dbe3d2dbe5d3dce5d3dde6d3dde7d3dde6d3dde7d1dbe4d0d9e2d1dae2d0d9e3cfd9e2cd *d6e2cbd6e4cad1e2cad2e1c9d1dec2cedcc0cddbc2cddec1cedfc3cde0c1cedebfcbddbbc9dbb7 *cadbb9cbd8bbcbdabdcbddbccbddbdcbdcc1ccdec0cce0bec8dcbdc9d8bbcbdebdcbdbb9c9dcc1 *c9dcc0cbdcc0cbdec3cedfc3d1e0c0cedfbccbdcb5c8dcb1c7daabc5d9abc4d7acc4d8b1c6d8b0 *c5d6b1c6d7aec3d6b2c2d5b3c2d7b1c2d6b5c1d6afc1d5afc2d4b2c1d0b3c4d1b6c3d4b6c3d3bb *c6d6b9c6d7b8c6d7bdc7dabac6d8bcc8d7b8c7d8b6c7d8b5c6d6b6c6d8b3c7dab3c5d7b5c6d9b9 *c6d9b7c7d7bac6d8b6c6d8b5c7d9b3c8dab6c6d9b6c6dab1c4d8b5c5d5b6c5d3b5c3d6b5c4d6b1 *c3d3b3c2d3b4c5d7b0c2d7afc2d6b1c2d6b3c3d5b2c4d4adc3d6acc4d6acc2d6aec4d7aec2d7ae *c3d8abc1d6abc1d5afc4d6b1c5d8b0c3d6b1c5d8b1c3d8b3c2d6adbdd4acc1d4b0c2d4aec1d6ad *c3d8adc1d3aabed8acc1d6adc1d6afc2d5adc1d5aec0d4acc1d5adc1d3abbfd3adbfd3aabed5ae *bed3acbccfa9bdceabbbcfa8b9d1a9b7cda9b4c8a8b3c8a6b5cca8b7cdaab8cdaebacea8b8cba6 *b5cca7b6caa7b5c8a6b3c9a4b4c9a6b6caa8b3c8a9b9cba9b4cba7b4c7a7b6cba5b6cba6b4c9a2 *b1c7a7b0c3a4b3c7a7b5c6a1b1c79cacc1a0aec5a3b1c3a0b0c6a2b1c9a2b0c7a1adc3a2abc4a3 *aac1a3abc3a0acc29baac39ba8c59ba7bd9facc099abc498a8be95a7bf90a5bc93a5be90a1bd90 *a3bf8ca2bf91a6bf97aac095a7bc8ba5be88a2bc8fa3bb91a3bd93a1bc91a5bb8fa0ba8ea4bc91 *a1bb929fb690a0b690a1bd8ca3c091a2ba97a8bc98a8bd92a2bc92a3b791a9bd93a8be90a4bc9c *a6bb92a2bd96a7be98a5bb93aac193a4bb95a7bb91a4be96a4bf98a7c09dacc39baabe98aac09e *aabd98a9c19bacc39facc298acc39dafc5a3b1c6a1adc6a1b1c19ea8b4bfc5cbc5ccd1c8d1d492 *b1ca90b3ce92b3cc8bb0cc8eb2cd90b3cd8fb1cc85aecc89b0ce8ab1ce8db1ce8ab1cf89b1cd8e *b1cc8bb0cb8cb1ca89b4cf8fb3ce8db0cd8aaccc89b1cd90b2cb81aecb90b3ce91b2ce87aecc86 *aecc8cb1cd8ab2cd89b0cd87afcb8aafcb8bafcc8bafcd8cb0ce8bb0cd85aecb8ab1cb8cb1ca84 *afcb8bb1cd89b0cc8ab0ce8db1cf8aafcb8caecb89aecb8bafcc89b1cb8db1ce8ab2ce8dafca86 *acca85adcd8eaecb8eaeca87acc98db0cc89afce8cb1d186aacb8cb0cb88b0cc8cb1cc8cb1ce87 *b1cc89b3ce8bb1ce8eb1cf87b2cf8cafcc8db1cc8eb1cf8fb4d08db6d18eb2d185b0cf8ab2cd8b *b3ce90b6cf89b1ce8db3cf8db2ce8bb1ce89b1ce8db1ce8bb4d192b5d18eb7d091b7d390b5d197 *b6d397b6d19ab6d29ebad391b7cf9ab8d289b1cf8eb6d196b6d190b4d18eb5d191b9d38fb5d19a *b8d09bb9d29ebad49bbcd69cb6d29cb9d198b7d298b7d298b9cf97b8d29bbad39db8d29ebad19f *bad1a3bcd19abbd494b6d497b7d397b7d29dbbd396b9d296b6d397b8d190b5d192b7d192b7d492 *b9d19ab8d391b6d293b8d298bbd396b9d69bb8d396b7d599b9d395b8d199bad298bbd594bad699 *bdd49ab9d399bcd695b9d599bbd696b8d39ebbd49ab6d096b6d199bbd597bad59abad59abbd49b *bbd498bcd499bbd397bad39abbd499bbd39abbd598bbd698bdd492bad399bad397bbd39cbdd498 *bbd492bad399bbd596b8d398bbd396bbd59abbd599bad29abdd699bad597bad59bbbd69bc0d896 *bbd599bbd396b9d499bdd69abcd49dbbd69abbd698bbd699bcd49abdd59bbcd495b9d295b9d596 *bad596bbd59abcd695bbd69cbdd799bdd399bbd596bbd59bbcd49bbdd49dbdd69bbed697bcd69c *bfd69ec0d59abed694bbd69cbfd69dc1d59abdd69cc1da98c0d89dc0d6a4c1d69cbdd798bcd798 *bcd59dbdd69ec1d79cc0d69dbed69dbfd89bbdd69dbcd699bdd79ec1d39cbed69cc1d897c0d699 *bdd5a0c3d89fbdd399bcd7a0c0d79fc1d9a1c0d79dc0d8a0c1d89ebed59cc0d7a3bfd6a2c0d8a0 *c1d8a0c1d7a0bfd7a1c1d7a2c1d89cc0d59dc0d59ebdd49dc0d69abed7a0c1d7a0c1d6a1c2d7a4 *c2d6a4c3d8a5c2d8a4c1d89ac1daa0c1d79ec1d89fc0d8a0c2d89bc1d79ec1d6a2c0d6a3bfd6a1 *c1d7a3c0d6a3c1d49fc1d6a7c3d5afc6d7bbc7d8bcc8dcbecbd8c2cddcc6d0e0c7d3e2c8d5e2c9 *d5e4c9d6e2c9d6e0c9d4e2c7d4e2c6d3e0c6d1e0c5d1dcc2d0dec4d0dec7d1dec5d1e0c4d0e1c3 *cfdec5cfe0c5d1ddc5d2dec7d1e0c7d2e3c7d4e2cbd4e2c9d3e0c6d0e1c3d2e0c2d1e0c1d1dcbe *cee0c2cedfc2cedfc2ceddc3d0dec1d0dec3d1e0c5d2dec6d1e2c9d4dec7d3e0c3d0e0c6cfdec4 *d1dfc6d1e1c6d2e1c7d4e3c8d3e1c7d3e2ccd7e3cbd8e2ccd8e3ccd8e3cbd7e2c9d4e3c9d4e1c3 *d0e1c1d0e0c1d0e0c6d0e0c5d2e0c5d1dfc4d0dfc7d3e1c7d4e1c9d4e2c9d3dec9d4e1c8d2dfc7 *cfdec4cfdec4ceddc4cee0c3cdddc4cedec2ceddc6d1ddc6ceddc9d1deccd6e0ced7e0ced8e3d0 *d8e1d1dae3d1dee3d3dce6d5dee7d5dde6d6dde6d6dde4d2dae3cfdbe5d0dbe6cedae4d0d9e6cd *d8e3ccd6e2cbd5e2cbd4e2c9d4e0c6d3e1c5d1e0c4d0e0c3d0e0c1cfdcc3cedec1ccdebeccddbb *c9ddb7c9dbbbc9dcb6cbddb6c9d9b8c7dbbdcbd9bbcadcbbc9d8b7c7dbb9c7dcb6c6dbb6c7dbbb *c8d9bac9dcb4c7d9bac8dcbbcbdeb9c9dbb5c7ddb5c4dbb1c5dcafc5d7aec5d8b0c5d7aec3d7b0 *c5d8b3c4d6b2c1d4afc0d6b3c2d6b0c3d4b2c4d6b1c2d2afc1d3b1c2d3b1c2d5b5c4d7b4c6d8b5 *c6d4b8c6d4b5c4d5b4c3d5b6c7d8b5c6d6bac9d8b8c6d7b8c6d8b6c6d9b5c7dbb7c7dcb6c7d8b6 *c7d9bbc7d6bbc6d8bbc6d8b6c6d7b6c7d8bac9d9b6c7d6b3c3d5b1c2d3aec0d3b2c2d6b1c4d5b3 *c5d6b0c3d5b3c1d3afc3d6b0c3d7b4c3d5b0c3d4b0c3d4afc3d6b0c3d6aec3d6b0c2d3b0c2d5af *c4d6aac1d6adc3d7acc4d7b0c3d7b1c3d6aec3d7b3c4d6b1c5d7afc3d6aec1d4abc1d6adbed3ac *bdd4afc1d4b0bdd2aebed3aabfd3aac0d3adbed1abbdd0adbdd3acc0d6aec3d5acbfd3aabfd3ae *bed5abbfd5b1c0d2aabcd0acbaceacbacea9b5c8a8b3c7a4b1c9a6b1c8a6b5caa2b4cba5b5cca7 *b6cca1b5caabb1c5aab3c7a3b4caaab7c9aab9c8a9b6caa3b6caa7b4c9aab9caa9b6cba4b2c9a9 *b4caa3afc7aab2c3a2b4c99bb1c89fb0c59baec1a1aec79eadc69daec7a0b0c4a3aec59eabc1a0 *aec79fadc79eacc49daec59caac29ea8c197acc397abc398abc398acc293a3be97a6bf97a3bc91 *a5be94a7c08ea3be90a5bd95a4bd91a5be8da5bc94a6bd96a1bd8ea3bb8c9fbb8ba0ba88a1b786 *9eb88ca0b697a4b78da0b991a3b98fa0b98a99b2859fb88da0b68aa4b98fa9bf97a2b89aa5bf8a *a2bd8ca3be96a4bb8a9ebf91a7bc96a9bf96a8be95a8bd92a8bf92a3bc99aac292a8c091a4bc96 *a2b892a4bc99a9bc98aabf9aa6c199aac19caac29aa9c09eacc49ca9c098aab2bec8cdc3cdd1c7 *d0d68eb1cb8eb1cb8cb0ca8ca9c489b0ca8bb1cd92b3cf8cb2d089afce88afca84adcc8ab1ca90 *b1ca85aecb8cb0cb8eb2cc8bb1ce89b1cc89afcb88b1cc8eb0cc8aaecb8db1ce8db0cc8cafcd8d *b0cd8eafcb8daeca8aafc98caec987adcb90afcc8aadc98cadc98dafcb8eafcb89aeca8badcb8b *aecb8ab0cc8dafcb8aaecb8dafcc8daecd92afcc95b0cb98b0ca8eacc98aaccb87acca86aacc8b *aecc8eb1cd86aec78aaccb8aabc98aaec988aecb8cb0cd91b0cb92b0cb8ab0cb8db1ce8fb0cc88 *aece8bafcc8eaecd8aafcc88b0cd90b3cd8db1cf93b2cf8caecf8eaecd8eafcc8fb0d08bb1cc8a *b2ce88b1ce8ab1cd8fb3cf90b0ce91b2cd8fb3cf8db4cf89b0cd88b1cf8db4d197b7d08fb2d08c *b1cf92b6d18cb3ce8ab1d197b6d196b7d08fb6cf90b5d295b4d195b6d196b6d391b4d192b4d198 *b6cf91b7d2a1bad19db9d1a0b8d19cbbd29cb9d19db8d19db8d198b7d299b8d19fb8cf9eb8d29c *b7d19db8d1a0bad59ab7d199b9d298b8d395b7d49bbad399b8d198b7d197b6d194b5d198b6d096 *b7d296b7d396bad59ab8cf91b6ce99b6d297b6d191b4d097b7d398b8d19bb8d398b9d395b6d198 *b7d497bbd498b9d19bb7d19bbbd495b6d395b9d69abbd59bbad6a3bdd59cb8d395b7d496bad598 *b9d496b8d497bad49abbd396b8d39bbbd393b6d192b8d299b9d39ab9d394b7d499b9d69bb9d3a1 *bbd39db9d197b9d39abad39bbcd599bbd698bbd596b8d692b7d398b7d29abad39ab9d395bad592 *bad391b9d695b9d59bbad59ab9d497b9d59abbd491b7d396b8d298b9d49abbd69cbbd497bcd399 *bbd49bbbd39abad399bbd297bbd499bcd699bcd59abbd69bbcd397b9d499bbd49abad492bad599 *b9d595b8d59cbdd69dbdd69fc0d69abbd49bbbd298bbd499bdd89dbed89bbcd69cc0d69abdd59c *bdd69fbdd69fbbd59ebfd699bed69ec0d89ebfd79dc0d89dc0d69fbdd59fbdd49dbdd69abcd59b *bcd39bbbd69bbfd8a4c1d69bbdd4a2bbd5a1bfd7a0bed79abcd598bdd797bcd7a0c0d7a3c1d7a0 *c1d6a2bfd5a4bfd4a1bed5a2bfd79bbcd49cbed79ec0d79dbed59dbfd59bbdd69ec2d79fbdd5a0 *bfd49fbed6a1bfd79fc0d8a3c0d6a2c1d8a1bed7a2c0d5a0bfd69bbed69ebbd69dbed69fbdd6a1 *bfd6a1c1d5a4c1d6a4c0d6a7c1d6a5c1d7b1c4d8bbc9d8c0cad8c4cddbc4d0dec7d1e0cad3e1cb *d4e0cbd2e2cbd4e1cbd6e2c9d3e2cad4e0cad6e1c8d3e2c6d0dfc5cedfc4cedec4d0dfc5cee1c2 *cee0c5d0dfc4ceddc5cfdfc7cfe2c7d1e2c6d0e0c9d4e0cbd5e3c7d3e0c6d1e0c1cedeb7cbdbb0 *c7dbb8caddb8cbddbbcbdebaccdeb8ccdebfccddc0cddec2cfdfc3cedfc6d3e0c5d0debcccddbb *ccdfc0cce0c1cedfc2cedec6d1e0c6d1dfc8d1e0c9d3e0cbd5e2cad5e2cbd6e1cbd4e0c7d1e1c5 *d0e0c2ceddbfccddc0ccdbc1ceddc5cedfc2ceddc3cbdac4cfe0c6d1e1c7d1dec8d2e0c6d1dfc6 *d1dfc7cfdac5cddec6d0ddc3ccdbc2ccddc1ccddc5ccddc7d0ddcad1decbd5e2ced8e3ced8e2d1 *d9e6d1d8e3d4dbe4d3dce4d5dce5d3dde6d4dde6d4dee6d5dee5d3dbe2d1d9e5ced8e4ced7e3ce *d8e2ced9e2cdd6e2cdd7e4ccd5e3ccd2e0cbd2e0c8d1e0c8d2dfc6d1e0c6d2e0c5d1e2c3cfdec0 *cbddbdc7d9b6c6d8bac6d6b6c5d6b4c7d8b1c3d9b6c4dab6c6dcb9c6d8b6c3d7b5c4d7b1c4dab4 *c5d8b6c5d8b6c6d6b6c6d6b7c5d7b8c6d7b4c6dbb3c3d6b1c3d8b0c3d7afc6d8aec2d8acc3d6b3 *c4d7b2c1d5abc1d5b0c2d4acc2d5afc1d4afc0d5b2c0d1b1c3d4b4c0d3b4c1d5b3c1d5b4c1d6b8 *c3d5b6c4d7b7c6d7b6c6d5b9c5d5b7c6d6b9c6d7b9c5d6b6c7dbb6c6d7b3c5d5b6c6d5b8c7d8b6 *c6d5bac5dab7c4d6b7c6d7bcc5d5b9c7d7b5c4d6b6c6d9b6c4d3b7c2d3b1c1d1afbed3acbfd1ad *bdd3b1bdd2b4c1d3b3c3d3b3c3d2b3c1d3b5c1d3afbed3b0bfd0b0c2d4b0c2d6aec3d5b0c2d4b2 *c2d5b0c2d6b1c2d6b0c0d3b0c2d3afc3d5afc3d3b1c2d8aec0d7b1c2d2b0bfd1aabdd1aabfceae *bdd3afc0d2acbdd1adbecfaebed3b1bed2aebbd1acbfd1acbfd1aebdd3a8bcd3aebcd2abbed5b1 *c1d4b0bdd1adbbd1aebacfabbaccacb8cba6b4cca2b2c9a1aec5a0aec1a6afc6a6b4c8a4b3c9a9 *b2c9a7b2c8a8b6cbabb6cbadb6c9a9b7cdabb6c9a9b6c8a5b2c7aab6c9acb7cca9b5cea3b6cca9 *b7c9a6b6c7a8b3c5a7aec5a1aec7a3aec1a1adc5a2adc39dabc39fadc1a1adc2a2aac1a0adc19d *aec19faac59daac3a0acc39caac39eaac199a7c19badc495a8c299a6bd98a7c098a5bc96a6bd98 *a5c098a3bb9aa5bc93a5bb92a4c0919eba93a0c18ca0b994a7be91a6bb899db88fa0bb8c9fb794 *a1b38ea2b68aa4b88d9eb98d9fbd8e9eb7899eb88ca0bc92a1bb8a9eb885a1ba91a1bc949fbe8d *a2c18a9fbc8fa2b98f9fb68da0b68ca0b68ea4bd8ca2bf95a7c096a4bd98a6bb99aabf99a5ba98 *a3b99aa7bf97a6bf9aa8c09aa7c19aa6c09caac09ca7c29badc09eacc09eadc299a3acbec8cdc4 *ccd2c9cfd58baec990b2c98aaec88cadc98daecb8aaeca8aaec987adcb89aecb8aafcc8db3cc93 *b2cb90b1cb95b1cd88b1cc85b0cb87b1cd8ab0cc8ab1cd86aecb89abc98eaec986aec88dafc888 *aec78aadc987aec88bafc98fb0ca90adc78eadc98eaecb86acc98daeca8cafc98caecb8eadcd8b *afca8babc98daeca90afc98fadca92adc892afcb91b1cb8cacca96b1ca8eb0c892afc98baec98b *afc98eaecb8cacca8aafcc8eafca8daec886aec989aecc8baecd90b0cb8eb0cd8fb1ce89afcb8d *b2ce8aafce87aecb8dafcc8bb1cc8eb1cd95b4cf8fb0cd97b1cd8cb0cb8dafcd95b1cc95b3ce8c *b0ce86adcb92b1cc8cb1cd92b2ce91b4ce98b6ce97b6d091b3ce92b3cf8fb2ce8eb2cf8bb1ce8c *afcb8bb2ce90b5d18cb0ce8db1ce8fb2ce8eb5cd8db0cc8cb6ce94b3ce90b4cf95b2d097b7d097 *b5ce92b6d097b9d396b9ce97b6d19fbacea1bdd39fbbd1a4bbd1a4bad2a3bbd2a1bcd4a0b9d1a2 *bad0a1bcd39ebbd29db6d09db7d19eb9d09db9d19fb8d198b7d098b9d196b7d19bbad295b6d099 *b7ce99b9d499b7d39bb7d09bb7d39fbbd2a0b8d198bad19bbad094b7cf9eb8d19fb7ce99b8d298 *b9d498bbd397bad19ebbd299b9d59eb8d399b8d49dbbd697b6d199bbd59bbbd39cbed59bbcd599 *b8d497b7d195b6d396b7d29bbbd29ebdd698bbd592bad29ab9d29ab9d39cb9d399bad298bad29b *bbd397bbd396bad398b7d29dbbd49bbbd692b6d196b8d297b9d197bdd395bbd299bcd39abbd29a *bbd398bad098b9d197bbd39abbd39abbd694bad696bad793b9d09bbad293b9d399bad39ab8d292 *bbd39abcd59dbdd597bbd391b7d298bad499bbd39bbdd595bbd39abcd599bbd59abbd39abbd397 *b8d19cbad59fbdd49cbcd49bbbd69fbdd59bbcd49bbcd497bbd49bbbd39dbed698bbd39ebdd799 *bbd69cbcd699bdd398bdd69ebfd5a1c0d69dc0d597c0d89dbdd69abbd59fbed6a2bdd69fbfd5a1 *bed69ebcd5a0bdd69bbbd399bcd5a1bdd6a4bed69ec0d79dbed4a0bed59fbed69dbcd59dc0d79c *bcd4a0c1d79fc0d7a2c1d6a2bfd59fbed6a2bcd4a1bcd49ebcd49dbcd49dbed79cbed79dc0d4a2 *c1d4a0bbcea4c1d39fbfd5a2bfd49cc0d39dc0d69dc1d8a4c2d6a2c1d69dbcd4a6c0d69dbdd39e *c0d69fbfd69cbfd69ebbd6a4bdd4acbfd3afc1d6b1c4d7bfc9d7c2ccdac4cedec8d1ddc9d4e0ca *d6dfccd5e0ccd3e1c9d3e0cbd5e1cbd3e1c9d3e2cad5e2c9d2e2c7d1ddc5d0dec4cfddc4d0dec6 *d0e0c5cfdec4cedfc6cfdfc7d2e0c9d2e0c9d0dfcad3e0cad8e0c9d2e2c8d1dfc6cfe0bed0e1b3 *cadbb2c7d8afc6d9aec7dbabc6daadc7dba7c4d8b1c7d8bbcddeb8ccdbc2cddcc6d1dfc3d1deb8 *c9dbbccbddbccadabdccddbccadbc0cfdec5d2dec6d0dfc6d1dfc8d4e1cbd6e2ccd5e2cad4e1c9 *d2e1c5cfdec2ceddc3cedac2cddac2ccdcc1ceddc4ceddc6cdddc4cedec3cddbc6d1ddc8d1ddc7 *d0dec6d1ddc6d1dbc4cddec5ceddc3ccdcc2cddcc3cddbc4ccdcc8d2dfcad2deccd4e2cdd6e1d0 *d8e5cfdbe3d2d9e2d6dde5d6dde5d5dde5d5dce5d6dee7d7dce6d5dce5d3dbe3d1dbe2d1dbe3ce *dae4d1dae5cedae4cfd8e2d1d7e3d0d6e2cdd6e1ced6e1cbd3dec9d3e2ccd5e2cbd4e0c9d0e0c6 *ceddc5cedcbfc9d9b6c6d7b6c2d5b9c4d7b6c5d6b4c3d4b1c3d6b3c3d6b5c6d8b6c3d7b6c1d3b1 *c2d6afc1d4b6c1d3b6c3d7b6c3d4b2c2d5b5c2d6b5c3d7b1c3d6b5c3d3b2c2d5b1c3d7b1c5d5b2 *c4d5b4c2d4b4c4d6b2c3d4b1c1d4b0c3d5b3c1d4b2c1d4afc1d3b0c2d4b1c1d5b3c3d4b3c3d4b5 *c0d4b3c2d3b1c3d4b6c6d5b9c4d6b8c4d6b9c7d9bbc7d6bbc9d6bac6d6bac5d7bbc6d6b7c6d7ba *c5d4b8c6d6b6c4d3bac5d6bdc6d6bbc3d4bac4d6b3c3d3b0c3d6b4c2d4b4c2d4b4c3d1b1c1d1af *bfceb1bccfb0bed0b0bdceaebed0b0bed0b3c1d4b5c3d6b1c0d2b4c1d2b0c1d2aec1d4b1c2d5af *c1d3afbdd4afc0d3b1c1d5adc1d3afbeceb2c0d3aebdd3aebed3adc0d3aebcd2aebdd0aac0d1ad *bdccadbdd1aeb9ceadbcceabbbcfa9b7ceaebdceabbbccb0bbcbaebdd1afbbcdacbacdaebbceaf *bdd1aec1d3acbdd4a8bcd2aebbcbabb9cbadbacba5b6caa5b1c4a4aec5a3b0c6a5b2c5a3b5caa6 *b4c5a9b4cbaab0c3aaafc2abb6c8aab5caa9b5caaab7ccadb5cbadb7c6adb6c9aab4cbacb6caa9 *b8ccacb6c9a6b3c7a4afc7a1b3c4a6aec5a3acc39dafc59fadc2a4adc3a0adc19daec59faec1a0 *abc2a4aec39cabc19babc190a7c199aac39ca9bfa1aac099aabb99a8bb9ba8be98a6ba92a3b68f *a4c093a3c195a4bb95a4bc93a5c090a9bd90a4bd96a2bc88a0ba8ea0be8aa0b88fa1bb899fbb8c *a2ba8e9eb695a2ba90a3b6889db68a9db68c9fbb8b9fb489a4bd899fb38da0bb8da1b88da0bb8e *a1b68da3bf8d9dbd95a6bd98a1b396a0b392a5bb91a2bb979eb893a7bb93a9be9aa6bb99a6bb99 *a9bd98a9bf9da9be9ba2b994a4bf9ca8bd9da6bd9cabc49fabc0a1acbfa1adbea3adc3a2a9aebb *c6c9c3ccd1c9d1d486aec98ab1cb8cb0ce86adcb8caecb88adc98bb2cb88adca85adcc85adcc87 *aecc84aecb7aacc990b2ca8db1cb8db1cb8ab1cc86b0cb86aeca7eafcc86aecc8fb1cc8bb1ca86 *acc785acc98badca8cb1cb8cb1cb85acc98daecc8badcc8bb1cc8eb1cd96b0cb92aec98dafca8e *b0cb8daec990afcb8fb0cb91b2cc91accb93afcb97aecb89aecc8baccb8db1cc86accb8cb1cb89 *aecb88acc888aecd82aec98bb1ce86afcc88aecc87aecb8eafce8bafcb90b3cc83adcb8eb2ce8e *b1cc91b1ce8eb3cf8aafcc89b0ce89b1cd8bafcc91b2ce89b0cd90b1cd8fb1d08cb2cf90b1cc90 *b3d088b1ce8cb3ce8aafcd86b2ce89b0ce8bb2cf94b4cf8cb3ce90b4cf89b4cf88b4d18bb4d187 *aed08cb2cf8bb1ce84b0cd8bb4d18cb4cf8ab1cf89b3cf88b4ce8ab5d08db1ce8bb4cf91b1ce93 *b6d291b5d08db2ce93b6d29ab6d29cbad5a0bad1a3bbd0a5bcd1a1bcd39fbcd4a1bed4a2bcd4a2 *bbd2a2bdd4a1bbd0a1bbd49eb9cf9db7d298b8d09bbbd29db9d49cb7d399b6d195b6d19cb8d397 *b8d29bbad59abcd69fbdd49bbbd19bb8d39abbd398bbd39abad19bbbd593b7d195bace96b9d092 *b7d391b5d38eb6d195b6d398b8d19ebbd593bad594bad49fbbd597b8d39bbbd698bad397b9d492 *b8d599bbd698bad393bad298b8d196b7d297b6d295b9d496bad590b7d397b9d390b9d490b8d196 *b7d094b6cf96b9d399b9d29ebcd592b9d599bbd492b9d39abad398bad396b6d391bad59abed69a *bbd49bbbd79bbdd697bbd693b9d697bbd697bad390b7d395b7d393bbd392b9d396bbd499bdd395 *b7d199b8d298b9d399bbd398bbd390b8d292bbd48abad598bed595b9d39bbbd694b9d392bbd497 *bad695b9d599bbd59bbfd798bcd298bad597bbd69cbdd698bcd598bbd79bbdd89ac1d89cbfd395 *bbd49dbdd499bcd49bbdd498bcd89bbdd59cbfd69fc3d59abfd496bdd399bbd699bed699bdd398 *b8d697bbd598bed598bcd39dc1d69ebed6a2c1d69bbed59bbcd698bbd69bbfd5a0c0d89bc0d49a *bed5a1bfd899bcd598bcd599bed59bbdd59abdd59abdd39cbdd59dbfd6a1c0d89dbed794bbd79b *bed699c0d69bc0d89ec1d79dc2d69dc1d69abed69abfd797bcd69cbdd699bfd69abed6a2c1d69d *c0d49ec0d69dbbd699bdd59ebbd6a5bfd5a8c3d8aec4dab1c6d8bbccd9c0cbdbc6d1dec6d3e0c8 *d4dfcad7e2cad7e3cbd5e2cbd3dfcbd6e2cbd5e0c9d3e1c9d4e2c7d4e2c7d1e2c4d1e1c3cfdfc4 *d1dfc6d1e0c5d0e0c2d1e0c2d0e0c4cee1c5d0e0c6d5e4c8d6e4c9d7e1c9d3e2c6d3e0bfcee0b1 *c8dfacc6ddadc6daa6c3daa4c5d9a7c3d9a4c2d8a4c1d6a4bfd6aec8ddb3c9ddb1c7dcbacddfb5 *ccddaec8dab1c9d9b0c7daafc6dbb2c7dcbacbdec3d0dfc6d2e1c5d1dec6d5dfc8d3e2cbd6e2ca *d5e2c7d4e0c3d0e0c5cee0c1cee0c0ceddbfcdddbfccdec1cddcc4ceddc3ceddc3cedec3d1ddc3 *cfdec4d1dec6cfdbc6d0dec3ceddc1ccdcc2cdddc2cddcc6d1dfc6d1dec9d3e0ccd6e2cbd6e1cf *d8e3ced9e3cfdce3d3dbe3d1dce5d3dde4d3dde5d2dde7d5dde5d3dbe6d2dce5d0d9e5cedae5cf *dbe5d0dae6d1dbe3d1dae3cfd9e3cfd8e1ced9e3cdd8e3cdd8e5ced7e2ccd8e3ccd6e3cbd6e3c8 *d2e1c7d2e0c3cfe0bacadbb7c4d4b3c6d6b6c5d6b8c7d8b1c4d3afc1d4b1c2d6b2c5d6b3c3d5af *c2d4afc3d6b2c3d6b4c3d2b0c3d6b5c4d1b1c1d5b1c3d6b0c0d6b5c3d4b4c4d6b1c3d8b1c3d6ae *c4d6b2c2d7afc2d5b3c2d3b5c2d4b2c3d5b1c3d4b1c3d5b1c1d5b1c0d5b0bfd2b2c1d3b2c0d5b3 *c2d3b0c2d3b6c1d2b2c3d3b5c5d6b6c5d3b6c5d6b6c6d6b6c5d4b6c7d5b7c6d6bac8d7b6c6d6b5 *c6d8bac6d5b6c3d3b3c3d6b7c6d6b7c3d5b7c5d8b7c3d6b1c3d3adc2d6b2c1d5b1c0d5b0bdd2b1 *bfd2b1c0d4afbed1b0bdd0aebbcdabbccfadbcd0abbbcfa7bacfabbcd1abbdd1acc0d0acc0d1aa *bcd2a6bbceabbbd0a9bacea8bdd2a9bbd1a8bacfabbbcfa9b9ccaabbceabb9d1a8b7cda4b8cea6 *bad1a8b9d0a6b9d1a5b7cbaabbcda8b9ccaabaccaabacdaabbceacbbceacbdd0adbcd1acbdd3ae *bccdadbdd1adbcd2acbacdabbacdafbacdaabacda7b9cda4b5caa1b1c99fadc4a4afc6a5b3c7a1 *b3c4a2b1c5a1b0c7a0b2c9a6b5c9a6b6caa8b5cca4b1caa7b5caa7b3c9a1b4caa2b3c9a5b2c7a6 *b6c7a6b1c8aab6caa2afc7a1b0c7a0b0c9a2afc39eaeca9eaec79caec1a0abbd9faabd9ba9c29a *aebf96a8bd96acc49aaac19dabc39bacc098aac098adc299aac197a9c296a8bf91a7c18fa5bd95 *a7bf96a7bb93a1bb97a4bd93a4bb899fbd90a4be8aa2bf91a2bb8ea7bb8ea0b490a2b68ba1b88c *a0ba8fa0ba8ba0b68ca4bb8f9fb9879fbb8ea1b892a2b88fa4be8da0b68d9db891a4bd8ca4b88f *a5bc8ca5ba8da3bb8ba2bf89a0b88da4bb88a1bc8da7bc8da4be8fa7ba92a8b99ba4bc9ba5bd91 *a4bd8ea4bd95a4be9ba7bd99aac094a4bd96abc29aa3ba9da9bf97acc49eaec19fb0c59db0c49e *aab4bfc9cdc5cdd1cad2d68caecb8bb1cb8bb0cd88aecb88aecb89a9c789afcb8aaecc8fb0ce80 *accc8cafcb83acc990adcb8eaecc87aecc88adca8caccb86abcc8aaeca89b1cd86aecb8aaacc8c *b0cc81acc98caeca8eadca8eaeca8baeca87aac48dadc98aacc892adca92aeca96afcc96b0ca92 *afc98dacc995aec891abc891aecb94aec98fabc88cadcb8fb0cb8baecc92b2cc89acc991aecb8d *aeca8db0cb91b0ce8aafcd8baecc91b1cf84acc98daccb90aecb90aecc86accb82adce8eb0d08b *abcd8bafcc93b1ca8db1ce8caecc89aecc8cafcf8db0cd89aece84adcf89afcb8fb1ce8bb0cd88 *adcb8ab0ce87aed08eafcf8eb0cd8cb1cc92b2ce8caecd8cadcb8daecd89afcf89b1ce91b4cf8e *aecf8cb1cd90b1cd90b3cd8eb0cd8db4cf90b0cf8db1cf8ab0cf8cb2cf8db2cd8eb4ce93b4ce8b *afce97b3d092b6cf98b7d19fbbd499b8d19cb7d0a0b7d0a3bbd1a3b9d1a8bbd2a2b8d1a7bbd6a2 *bdd7a2bad1a4bad1a2b8d19eb6cf9bb7d09db9d29cb5cf9cb7d49eb7d39cb7d39ab7d098b5ce97 *b6d198b7d19db8d199b7d4a0b8d4a2bbd49ebad4a0bbd1a0b7d19cb6d396b7d295b8d39ab8d097 *b8d697b6d498b6d19ab7d19bb8d398b8d298b6d096b7d192b8d49abad692b6d399b8d49bb8d298 *b6d299b9d398b9d493b6d399b8d69cb6d49db9d593b7d396b9d396b6d299b9d39ab6d191b5d295 *b6d296b7d495b7d397b7d197b8d296b6d196b7d395b6d690b6d291b6d390b6d599b8d399b8d39a *bbd49ebbd695b6d399b9d297b6d397b9d498b8d594b7d39abbd59cb9d294b9d391b6d39bbbd691 *b8d593b6d698b8d595b8d396b8d398b9d499bad296b9d397bad399bad493b7d298b9d59ab9d298 *b9d299b7d497b8d598bad49abad599bbd498bad39bb9d697b8d3a0bad59cbbd498bbd599bcd69d *bbd69cbcd896b7d59bbbd796bbd69abbd59bbfd69bbdd69cbdd69abbd696bbd397bbd598b8d69d *b9d39bbcd698bad591bad399bbd694bad89abdd89cbbd69cbbd39fbdd599bbd49bbbd59fbcd69b *bbd49bbcd695b8d498bad49dbbd69cbbd69dbcd49abcd39dbfd79fbdd69dbbd69cbbd5a1bed69d *bdd69ebed69ebdd595b8d596bbd79cbfd6a1bed6a3c1d59dbed79dbcd49bbdd69bbcd793bbd59b *bbd69bbcd69fbbd59bbdd59cbdd7a5bed5a8bcd5aec2d8b2c3d8b7c7d6bbc7d8bdccdcc3cedec7 *d0dfcbd4e1ccd6e2cbd4e2cad3e2c9d2e0c9d2e0c7d2e1c7d2e1c8d4e2c7d2e2c7d2e2c7cfdfc3 *ceddc3cedec3cedec4d0dfc3cee0c3cddfc6d0e0c7d1e0c8d1e0c8d4e4c7d2e0c6d1e0bfcee0b9 *cbdea8c1d8a4c1d8a2c1d6a3c1d99ebdd7a2bfd89ebed6a1bed6a4c1d8a5c1d6abc3daaec3d7ac *c5d6adc2d8a4c1d8a6c3d8aac3d8aac4d9b1c7dbb9cbddc0cddec3cde0c1ccdec2cee1c3cfe0c5 *d0e1c6d3e2c6d3e1c5cfddc4cedfc6ceddbfccdbc3cddec1cdddc3cddec5cde0c3cdd9c3ceddc6 *ceddc6ceddc6cedfc3cbddc3cbddc4cce0c1ccdcc3ccddc5ccddc5cddec7ceddc8d0e0cbd3e1cc *d8e4ced8e5cfd9e4d1d9e5d2dbe3d5dbe4d3dbe5d3dbe4d3dbe5d4dbe5d4dce7d2dbe4d3d8e3d2 *d8e3d1dae4d3dae5d2d9e5d1d9e5cdd7e5ced8e3ced7e2ced6e1ced6e2ced7e3ccd7e2cdd6e2c8 *d2e2c6d0e1c3cedfbfccdbbac9d8b8c7d7bac7dbb4c3d6b6c2d6b1c0d6b2c3d6b1c2d3aec1d3b2 *c0d5b2c2d5afc0d6b0bed2b3c0d4b6c1d3adc1d5b4c1d5b3c2d4b0c1d1aec0d2afc1d4b1c1d5b3 *c1d6b2c2d8b2c0d5b3c1d4b5c1d4b6c1d5b6c1d6b4c2d4aebfd3b0c0d5afc0d4acbdd2b1bfd1b1 *bfd2afbed1b2bed1b2c1d4b1c0d2b3c2d1b1c1d6b1c2d5b5c6d4b5c3d3b7c3d3b4c2d4b6c3d3b7 *c4d8b7c5d5b7c3d6b8c5d3b6c4d2b9c2d4b4c1d2b6c1d3b2c1d1b2c2d4b1c0d2aebbd1adbcd1ac *b6ceabb8caaab8cca7b8cca6b6cba8b6cda2b4cba4b5cdaab8cba9b7c9a5b8cba7b8caa5b4c9a0 *b2caa1b2cca3b1cba4b4cda5b1caa1b4cba3b2ca9fb0caa2b2c99fb1cc9cb2cb9bb3cba5b6caa4 *b1c6a7b5c7a7b4c8a0b3c9a0b1caa5b3cba7b4caa8b4caaab6caa6b6caa9b6c9aab6cbadb6cdab *bad0adbacfacbad2adbcd5a7b8cda8b5cbaab6cca9b4c9a5b2c8a0b4c9a1aec79aacc69eaec7a1 *aec69eaec49fadc39fabc1a1adc5a0afc79eb0c7a7b1c9a4b2c9a4aec7a3afc9a6aec3a1aec5a3 *adc7a0b0c9a4b1c9aab2c9a6b3c7a4afc5a4aec69baac7a0aec39eaec497acc19aa9bd94a6bd9a *a7c196a8be99a4bd9ba7ba99a9c195a4c391a3c098a5c191a1bd9aa7bf97a7c694a4c097a4b88f *a4bd90a6bc8ea5be8da1bd93a2bd91a3be90a2be8fa3be8aa0bd8b9fb9879fbc8d9cb48c9eb590 *a1bc8fa0b789a0bb8c9bb8899cb88ba0b98b9bb88da1bb879fb792a0bc92a2b98e9fbe8f9eb98e *9cb793a1bc8da1b693a1ba9da1bb8ea0bd95a1bc90a2bd929fbb94a3bd90a2bb95a4c196a2ba9b *a8bd96a7bc9aaabe9babc0a1aabf9ba4c198a7be98a6bf9ca9c09facc19caabf9faec2a1afc0a0 *acc4a4a9b8bdc7ccc4ccd1c8d0d788aeca96b2cc90b0ce91b4cb8eb1cc8bb0ca8cb1c983aecc81 *afcc89b1ce86accc8aadc98cb0ca88adca80aecc86b1cb90b0cd84aecc81aecb84aecd86b0cb8e *b1cb8bb0ca91b2cb82aec989aeca8caecc91afcb90b0ca92aec78aadc88cadc990b0c98eafcb97 *b0c990aec98babc795afc98eafc996b0ca90b0c98aadc791adcb91afcb90b0cc8eafce90afcb8f *b1c889b0cb8ab0ca8baecc8aaecb86acca8fafca8aaecb90b1ca8bacc98eafcb8db0cd93b3ce95 *b0cb92b1cc92b2ce91b3cc8bafcc8caece90b2ce8eb0ce8bb1ce8db2cf8bb1ce8db1ce90b1ce95 *b3d087aecc89b1cd85aecc88b0cd86afce87b0cd8ab2ce8cb2ce8eb4cd8db4cf8eb3cd88b1ce89 *b1ce90b5d18eb3d18dafd08eb1ce89afd08db3d18cb5ce8eb4d08cb3ce8db3ce8db4cf91b6d08d *b3d18cb1cc8db5ce9ab8d396b3d09ab6d2a0b7d1a3b6cfa5bad0a6bfd3a4bccfa2bcd1a5bbd2a5 *bcd3a4bbd2a3bbd2a6bbd0a2b8d1a5bcd2a0b9d2a1bdd2a0b8cf9cb9d1a1bad4a2b9d29fbbd29b *bad1a0bbd2a0bcd2a1bad3a0b8d3a1bbd3a3bbd19bb7d19db9d396b9d09dbcd594bad399b9d39b *b9d399b7d59abad39ab7d2a2bcd49dbbd5a2bbd49dbad19bb7d398b8d398bbd699bbd697b9d59a *bbd39bb9d697bad499bad597b7d299b9d394b9d399bad297b8d39dbad596b7d39bbad398b9d191 *b8d292b8d399bad38fb7d392b8d494b9d499b9d39bbbd197b7d396bad393b9d398bad091b7d298 *b9d399bbd397b7d395bad393b9d094bbd192bad491b9d396bbd49cbbd69abcd397bcd298bbd297 *b9d385abcc97b8d495bbd598b9d39abdd698bad498bad299bbd395b9d394b9d496bad499bbd596 *bad497bbd496bad496bbd195bad398bad396bad498bcd598bbd59abcd59abcd59cbed696bdd696 *bbd397bbd691b9d498bad499bbd697bdd798bdd69bbdd69fbfd69ebed69cbbd49abdd599bbd69b *bbd798bbd698bbd79ebed493bbd39bbcd39bbdd69abdd39bbcd699bbd599bbd599bcd69dbcd59a *bbd397bbd498bdd496bcd398bcd59abbd59abcd69dbdd598bcd399bbd49abcd499bcd39dbfd59d *bfd799bed69dc1d89cc0d6a1bfd49abcd699bcd698bdd69dbdd69fc1d899bbd69dc0d6a1bed69e *c1d697bad39cbfd79cbed69ebdd698bbd6a2c0d8a3bed5aec3d7b4c6d7b9cbd8b8c9dbc1ccdec3 *cfdec8d1e0c9d6e3cbd7e2ccd8e2ccd6e2c7d2e0c7d2e0c7d3e2c6d3e1c7d5e2c8d3e3c9d3e2c9 *d3e0c6d1dfc4d1dec3d1e1c5d2e0c2d1e0c2d0ddc4d1dec8d6e2c9d6e1cad6e2c8d3e0c5d0dfbb *ccdcaec7dda4c3d8a2c0daa8c3d6a3c1d6a4c2d8a4c0d7a4c1d6a5c1d4a4c1d69dc1d89ec2daa5 *c2d8a5c3d7a4c1d89ec2d7a1c1d6a1c1d6a6c2d7b1c7dcb7cbddb9cbddbeccddc1cdddc1cdddc2 *cfdfc1cee0c4d0e0c4d1dfc3cee1c3d0dec6d1dec2d0dec3d0dfc2cfdec0cfdec3d0dfc4cedec3 *cddec0ceddc2cedec3ccdcc0cdddc1ccddc3ccdec5ccdbc1cddec5ceddc4d1dec9d3dfc9d5e2d0 *d8e5cedae3d1dae4d2dbe5d5dde6d3dce4d3dde4d2dde5d2dae5d2dbe4d2dde5d4dce6d3dbe5d2 *dbe4d1dbe4d2dbe6d2dde5d2dde5d1dbe6d2dce5cfd8e4ccd6e2ccd5e3cad4e2cdd7e3cbd6e2cc *d7e2cad4e1c5d1dfc5d1e0bfccdbbbcaddb4c7d9b7c8d9b6c7d9b4c3d5b0c2d5b3bfcfb3c1d5b6 *c3d5b1c1d3b2c0d2b6c1d2b0c1d3b2c2d4b1c1d2b1c4d5b6c3d3b1c1cfb1c4d5b4c3d4b5c5d3b3 *c5d5b3c4d5b4c4d7b1c4d7b3c5d8b4c1d3b6c5d6b7c6d6b6c6d6b4c3d3b0c1d3adc0d3acbcd1b1 *bdd2b0bed1b0bed2b1c2d3b2c1d0b0bcd1aebfd1aec0d3b1bfd4b1c1d6b6c3d6b6c6d6b6c3d2b6 *c2d5b3c1d3b6c5d6b6c1d3b1c2d1b1c1d3b0c1d3b2c3d3aebfd1b2bed2aec0d3acbbcfaab8cca5 *b3cca7b7cca4b4cba2b2c8a2b2c7a1b1c6a2b2c89eb2c89bb0c99ab1c79cb3c9a2b1c8a1b5c89f *b1c79badc597acc698afc899adc69cacc59aadc69eaec59eaec49aadc79fafc79aaec299aac29b *b1c99baec69aafc69faec499aec599aec39bb1c59db1c8a2b1c8a2b1c9a7b6c9aab9ceabb5cbaa *b7c9a3b6ccaab7caabbbd1a7b7cba2b4cba2b3cba1b1caa6b2c69eb0c59cadc39eaec793aac499 *abc39ba9c49fadc59fb0c49eadc49eaec699aec49aaec49eacc09fadc699aec59facc79fadc3a3 *b0c59eaec79aacc799a9c19eacc5a2b0c6a1aec8a0aec69eadc39fadc39aa9c297a8bf97acc49b *aac195a8c199a8c19eaac098aabd93a6bd92a7bf90a7bd99a5be93a1bb97a6bd94a7bf94a5bc96 *a8c096a1ba94a4bc96a3bb8ea0b790a2bc91a2bb8ca1bd8aa3bb8aa3bc8da4b9869cb68b9bb68f *a2bc91a4bf92a0bb8ca2be91a7b892a1b891a1b88fa4b788a3bc91a5bc99a1b990a0bb90a4c192 *a3b797a4b891a3bb9babbc97a8c19aa8bd93a7bf96a9c098a4bd9daabd97a6b69aaabd9aaabe92 *a9bd9eaac19eabc09daabda2abc1a3adc19facc4a1aec2a3b0bea0afc4a5b2c7a5b1c5a5b5c8a8 *b5c4a8b8c6a7b0babecacfc4cdd3c9d3d78faeca94b1cd8eb1cb8aaecb92b0cb8eafce8cafca8d *aecc8eaecc8aadcb85aecc8baecb8bafcc81aacb81aecd86aecb85abca8aabcb8baecb86accb8a *aecc80abcb8ab1cc8cafcb84adca8bacca88acc98eb1cc88aecb91afca8faeca8eaaca94afc98d *accb8baccb91adcb90adc98eadcb8eadcb93adca92aeca91aecb95aec896aecb91aecb8caccb90 *b0cb8eaecb8fafcc8fb1cb8db0cd8baec989abcb8aafcc8eadcc95aecd93adcc8eadcc8eafcb8c *b1ce8eaece8cb1ce8aaecc8dafcd90b1ce88aece90afcc8cb2cd8cb0cd8cb1ce8cb1cc8caece88 *afcd88b0cd86afcf8db4d28ab1cf8aafcf8aadcd86aecf88adce85afcf87afcf87afce8bb1cd87 *aece8ab1cf90b3cd91b3d085aecd8bafce96b5d088b1cf84afd091b4cf8bb5d08cb0cc8db3d18a *b1d08ab1d188b2d394b2d196b2d296b6ce98b6cfa1b7d2a0b8d0a4b8d1a2bbd0a8bad1a9bad1aa *bcd4a7b9d3a4bbd1a0bbd1a4bbd0a4bbd2a2b8d3a3b9d4a4b9d29eb6d398b7d19cbad09db9d49f *b8d29cb7d1a1b8d1a2bad4a3bbd6a0bad69dbad39db7d19bbad198b8d39ab7d394b7d09db7d09c *b8d19eb6d197b7d39ab8d19fb9d49cb8d29cb8cf9cbad59bb8d49bb8d49ab8d39bbbd59bbad499 *b8d799bbd09ab6d399b6d196b6d39ab8d494b8d399bad598b9d397b7d291b6d398b9d395b6d297 *b7d496b5d396b6d191b7d395b7d394b6d194b7d298b6d38fb7d397b6d695b6d48eb6d394b7d18c *b7d291b6d28eb6d39abbd691b6d49ab9d693bad293b9d296bad58fb8d396b8d395bad598bbd499 *b7d599bad599bad58db6d297b8d396b7d090b5d497b7d592b7d597bad699bbd698bbd297bcd393 *b9d397b9d59bb9d394b6d295b9d594b9d59abbd692b9d294bbd497bad499b8d494b7d396b6d596 *b8d695bad699bdd798bcd698bad699bad397bbd397bbd698bdd695bbd697bbd898bdd599bcd39a *b8d796b8d796b7d398bbd69ebbd694b9d696b9d497bcd59abbd49dbbd89bbbd696b8d39abbd69b *bbd59bbbd797bbd69dc0d79dbdd597bad694b9d599b9d49fbbd49fbcd69ebdd697bbd69dbcd49c *bad699bad696b9d49dbdd69ebcd39cbbd49cbdd89cbcd69abdd59abbd69abbd798bad59abbd89c *bdd898bbd898bbd699bed7a1bfd59cbdd6a3bed69ebdd5a4bed6a9c0dab1c4d8b9c9ddbbccdbbd *cadbc3cddbc4cfdec7d1e1c9d3e1cad3e1cad3e4cad2e1c8d3e0c7d2e0c5d2e0c6d2e2c6d2e2c7 *d1e2c6d2e2c5d1e0c6d3e0c6d1dfc7d0dec6d1dfc2cfdfc5d0dfc6cee0c7d1e1c7d2e1c3d0e2bd *cddeb4c6dba1bddaa4c1d89fbfd7a4c3d8a1c1d8a3c1dba1c1d8a4bed6a2bfd8a2bfd59ebed6a1 *c0d6a0c0d7a0c2d6a6c1d8a4c1d8a3c1d9a5bfd8adc3d9b2c5dbaec6dbb0c6dbb5caddb8cadfbc *ccddbfcbddc0cedfc0cee0c1cbddc1cddfc3cedfc2cedfc2ceddc0ccdec0cbdfbfccdfc2cbddc3 *ccddc1ccdec1cddec1ccddc1cdddc1cdddc3ccdcc3ccdfc3cddec3cedec6cfdecbd3e0cbd5e1ce *d8e2d1d9e3cdd8e6d0dbe5d1dbe6d2dbe6d1dbe6d1dce5d1dbe3d3dce5d2dae5d2dbe4d2dae6d2 *d8e5d3d9e4d2dbe4d3dbe4d5dce5d4dde7d1dbe4d1d8e6cfd7e3ced4e2c9d1e0c9d1e1cad3e1ca *d3e3cad4e4c9d2e1c9d1e1c3cedfbfcbdcbac9dbb7c6dbb7c6dbb7c3d7b5c3d9b5bed5b1c0d6b1 *c1d5b5c1d3b2c0d3b2c3d4b5bdd1afbed4b3bdd3b5c1d7aebfd4b2c1d6b1c2d1b1c1d5b0c1d4b7 *c1d5b5c3d6b2c4d6b6c4d7b6c3d3b7c5d7b6c4d6b4c2d5b5c4d6b4c2d4b5c3d6b2c1d3b1bfd3ab *bed2aebcd1afbad0aebdd1afbdd0abbcd1aab8d0adbbd1aabbcfb0bcceaab9ceb1bdceb1bcd2b1 *bcd4afbed1afbdd3aebdd1b2c1d3b1c0d2adbcd1aabcd0acbad2a8b7d0aab9cea7b7cea5b6c8a2 *b5cd9fb3ca9cb0ca9fb0c8a2aec3a0abc69db0c89bafc796acc398aec59baac499a9c498a9c59e *acc796a8c48fa7c392a8c18ba7c18fa6c28fa8c49aabc599aac296aac09aa9c196a6c194a8c190 *a9c296a9bf9aaac195a7c197a4c095a6c697a7c397aac198aac393a7be9eaac6a1aac6a1b1c7a1 *b1c79fb0caa0b1cba4b2c79baec79eaec79caec99babc59fadc598a5bc9daac599abc397abc498 *a9c39aa9bd99a8bf9eacc29faac49ca8c59fabc49aa9c299aac29daac199abc49aaac398a5c198 *a8c29dacc19bacc39bacc696a9c196a8c79aa7c09aa8c197a4c09aaac491a2c098a8c196a6c092 *a8c19aa5c191a7c190a1be97a6be95a2bd91a2ba91a4be97a7bc8d9db991a0bb91a5bf95a6c093 *a0bb95a2bb95a0bc97a4bd93a4ba92a5bc8fa2bd8da0bc8ca1b98e9dbb8d9db990a0bc8c9fb98d *a0b98d99b3909dbb90a4bb91a0b992a5be95a1bb8c9eb98da4bc90a8bd8aa1bd92a1bc959fb692 *a4be95a7bd8ba2bf8fa4be97a3ba96a2bb9aa2b69aa2bb95a4bd9aa7bd98a9bf9ba8c09eacc195 *a6be99a8bb9ea9bda2abc19ca8c19da9c29eaec69eabc4a0aec4a2adc5a4afc6a5b0c5a6afc5aa *b4caa8b6caadb5c9aab1bcc0c9d0c6cdd3cad0d68aafc789aec78baecb86aac88cacc98aaecc8a *aecb7caec981a8c680aac981abc98bafcb8aacc787acc985aeca85abc986adca8db1c78aafc98b *acc887acc980a9c787adc986aec988adca86adca88aec986adc988abc88bacc88aacc788a8c682 *acc886aac688aac785acc791acc889acc58fadc78eaec992afcb8cadc990afca91afcb96b1c895 *aec999afc88caec98fb0c78dabc98caec98badc789aec989aeca8baec888adcb89aecb88acc986 *aecb8eb1cb8aaeca8bafcc87abc98aaeca89aecb8faecd84adcc8bafcd8aaecc8ab1cd8ab1cc82 *aecc88aecc85aecd87aecc8bafcc86aecc8db0cc8ab1ce88aecb8cb2ce85afcd82aecc8baecc85 *adcb8cb2cd82afcd8cb2cc8bafce8db0cd85adcb85afcd85aecc8ab1ca8cb3cf92b3cd8db1cc89 *aece87adcb84b0cf89b1ce89aecc8bb4cf98b6ce99b8cd99b6d0a3b8cf9db8d19fb6cea4bbd0a6 *bacfa2b9cfa1bacda3bbd19fb6cd9fb3cd9ab6cf9bb7ce98b7cf98b7ce96b5cf93b4ce96b5cd98 *b6cf98b7d19ab8d29bb9cf99b8cd9bb8d199b8d198b9d19ab7d097b8d18eb4d091b4d092b4d099 *b6ce91b6ce99b6ce9db9d19ab4cd9db7d19bb9d495b6d299b6ce9ab6d294b6d396b6d29ab9d599 *b8d199b8d494b8d294b7d295b5d191b6d095b6d096b8ce97b7cf96b6d297b8d194b6d091b4cc95 *b6d093b5ce92b5cc96b9d196b7d091b6d292b6ce8fb4cd8fb5ce97b6ce93b5d190b9d293b7d192 *b7d396b8d491b3ce95b6d397b8d29ab8d291b7cf91b6d194b7d297bad393b7d693b6d28ab3ce91 *b5ce93b6d08db7ce93b9d090b6d18fb4d18eb6ce8ab4cf93b9d298b9d191b6cf94b8d197b9d097 *b9d396b6d293b7d296b7d195b7d197b8d294b7d291b7d396b9d29abad499b8d395b7cf94b9d296 *b9d399bad599bbd499bbd39bbcd397b9d69abbd497bad295bbd194bad299bbd295b9d599bcd49d *bbd496b9d68cb6d397b7d199b7d195bad498b9d296bad29bbcd79cbbd69abbd69cc0d597bcd39b *bbd399bad294b7d299bad399bbd498bdd398bbd392b9d395b9d39dbdd398bbd39bbad196b8d49b *bdd599b9d495b7d395bad396bbd396bbd39abdd697bed69abdd59cbdd29bbed398bad597b9d596 *bad196b8d29bbbd399bad49abcd39dbbd59bbad695bcd49ebbd599bad3a5bfd5b4c6d8b6c7d8b9 *c9dbbbcbdcc0ccdec2cddec4d0dbc6d2dec8d3e0c8d6e1c7d2e1c8d2e0c5d0dec4cfdec5d0ddc5 *d2ddc5d2dec7d1dec8d2decad3e1c8d2e1c7d1e0c6d1e0c1cedfc3ceddbfceddc1cdddb9cee0b3 *cadbb2c7dbaec5d8a4c0d69dbdd49dbdd59fbfd59fbed4a2bfd6a1bed69bbfd59ebed39abdd39f *bed4a1bfd4a1bdd6a4c2d5a5bfd6a0bdd3a3bed8a9c2d7afc6d7b2c6d9a6c2d7a4c1d5aac4d8af *c5d9b8cadbbdcbdec1ccdebfccdcc0cddcc1cddcc2ceddc2ccdbc2cedbc1cddbbecbdbbdccdcc1 *cbddc3cedac2ccdcc3cedbc1ccdcc0cedec1cee0c3ccdec5cfdec6ceddc5cedfc7d1ddcad5decb *d5ddced7e0ced9e2cdd8e3d2dbe3d1d9e3d1d9e0d1dae2cfdae2cfd8e2d0d8e3ced8e2d0dbe2d0 *dbe5cfd9e4cfd8e1d1d9e2d0d9e2d2dbe4d2dbe3d2dce4d1dbe3d0d9e1ccd4e0c9d3dfc7d1e0c6 *d0e1c9d2e0c8d2e0c7d2dfc6d2dfc3cddbbbcad9bbc9d9b5c5d8b8c6d4b6c6d7b4c3d5b0c1d3b1 *c2d4b1c1d6b5c3d5b2bed1adbbcfafbdd1b1c0d3b3c0d1b6c3d4b7c3d3b4c1d1b2c1d1b6c1d0b2 *c1d1b3c0d3b6c2d1b6c3d3b4c2d2b9c4d3b3c1d4b6c3d5b4c2d2b5c3d3b2c1d5b0c2d3b3bfd3af *c3d3afbdd0aabcceafbaccaebbccabbccdacbcccabbac9abb9ccacb8c9abb8cba2b5cbaab6ccab *b6c7aab8cbadbbcea7b8ccadbdd1aabbcbaab9cea7b7cda5b8cba5b8cca2b4c9a8b5cba2b3ca9f *b2c69eb1c69dacc79aabc498acc698a8bd97a8c394a8c393a9c093a4bf91a5c08ba6bd8aa2b891 *a3bd91a5be86a0bb87a4bb86a4be8ca5bd89a3c287a2bd8ca0ba8aa2bc87a2bc91a2b98ca3bc8f *a9bb8ba5bd8ba4bb8ba2bb8ea4bb8fa3bb8fa2c08ea4bd90a5bb8ca4bb91a9c091a6bd94a9c093 *aabf9badc192a9c095a7be95aabe92a7be8ea7c297a8be95a8c091a5bf93a6bc96a7c094a3b995 *a6be9aa9bf99a8bd96a5bc99a9bc99a7bc9aaac19ca9c095a3b898aac196aac197a7c298a6c093 *a5bc94a8c096a8be9ca7bb95a4bb98a5bf90a7c096a6c09ba8bc97a7bd95a7be94a5bc8a9eb797 *a1bb92a4c18da7c08da5bc90a1b893a1b59aa3ba93a1bb8aa5be8da0bc8c9eb68c9eb789a0b68b *9db690a4bb8a9bba91a0b9929eb590a2bb8a9dba8b9ab793a2b78fa3b68ca1b98ca1bb8ca0b789 *9fb98fa0ba96a2ba8fa1ba91a2bb90a4bd93a3b6979fb698a0b395a4b794a7bb92a3bc93a1bd8f *a2bb92a1bc97a4bd95a5bd90a4bb9ba8be9aa7b798a7bc97a8c09ba7bb97a4bd9eabc1a0a8bd9b *aaba9faabe9fabbea0aec3a2aec0a1adc1a2adbea1acc19fadc2a6aec2a4b0c7a5b1c8a6b5caa5 *b3c8a9b6c7abb8c8aab9caacb4babec8ccc4cdd2c9d1d794afc78cadc993b0cc8baec88faecb87 *acca89abc98eafcc89accb8aaecc8cb0cb8dadc98cacca92aecb8aaeca8bafca86aaca8daccb8e *afcb8daec88aadc98badcb8eaecc89adca8badcb8dabca8caec989aec98bacc888adca93aecb90 *abc987aac78eabca91aac78fadc98eaec98faec995aeca8daccc92adc992adc995afcb93b1cd91 *b1ce93afcb9aafca92afca92aec78faecb8faecc8dadcc89acca89b1cc8aaecc90adcb89accb8d *adcc8eafce8baecb8eb0cc8baecb8cacc98babca8aabc98aadca81aaca89adcc87accb80abca89 *afcd8bb0ce88adce87acc988aecd86aece82aecd82aecd7daccd89afce87b0ce8cafce8aaecc89 *afcc88b0cd85adcc8caecd86afcc8bafce8db1d18bb1cf8cb1ce84accb83afcc84afcd8bb3ce8a *b0cf88b0cf8cb1ce86aece8bb0d08bb0cc92b2ce91b3ce99b6ce91b1ce97b6d1a0b6d09eb3cea7 *bad1a2b9d1a0b8d0a2b7d198b7d29bb6cf9cb9d195b6d095b3cd97b5cf92b5d08eb1cd8db2cd97 *b5d099b7d29ab9d198b6d39fb8d199b5cf98b5cf97b4d193b5d292b5cf8bb4d18ab2d197b1ce94 *b4cf98b6ce99b6cf98b5d196b6d099b6d094b3d19bb7d198b6d395b6ce9cb6d091b6d395b7d498 *b7d197bad497b7d38bb2cf8db3d18cb2ce94b5d18cb3cf8eb4d290b5d291b4d394b6d394b5d198 *b6d096b6cf92b5d092b5d08fb5d193b5d190b5d294b6d391b5d292b2cf95b5d091b6d293b6d395 *b8d498b5d191b6d198b6d294b6d38bb3d190b3ce91b5d19ab8d196b8d393b9d794a5b99abad597 *b6d290b6d192b8d192b7d192b6d28eb5cf8bb6cf94bad394b7d292b6d197b8d291b4d196b6d294 *b7cf96b7d092b6d398b7d394b6d397b6cf9bb9d297b8d08eb8d396bbd399bbd396bad398bbd499 *bad397b7d29bbbd699bad396bad399bbd493b9d699b9d697b9d597b7d49cbad197b9d297bad699 *bad19abcd594b7d397b9d699bbd59abad49bbbd398bad59cbbd495bbd894b9d698bad699bad59b *bbd69abbd294b8d490b7d296b9d299bbd594b9d39bbbd396b8d39abad398bbd398bbd299bcd497 *bad498bad395bad499b9d398bbd59abbd39bbdd49abbd397bbd497bbd497bbd49eb9d59bbcd698 *bad799bad39cbcd49ab9d499bad49abbd29bbbd49bbad69abad59bbbd69bbbd5a0bbd6b2c5d8bb *c9dabbcbdabbcadab9cbdcc0ccdfc5cfe0c7d1decad2dfc9d2dec8d3e1c9d2e0c7d2e1c4d1e0c6 *d2e2c6d2e2c6d1dfc7d1decad3e0c8d5dfc9d5e1c8d2e1c6d0dfc4d0e0c3cee0bbcbdbaec6d9a9 *c3d6a9c3d9aac3d8a4c2d79fbbd59dc0d89cbed69fbbd3a0bed4a0bfd59fbed89ebdd49cbdd69a *bcd7a2c1d6a3bfd6a2bed4a6c1d6a2bfd7a2bfd4a4bfd6aac4d8b3c8dbb6c9dcb1c4d8a8c2d9a8 *c2d6a9c1dab1c6dcb6c6dbbecadbc1cddec1ceddbfcddfbfcddec1cde0c3cfe0c0ccdebdccdec2 *cdddc3cddcc1ccdec4cedfc4ccdcc6cee0c3cddec2cddec6cdddc7cfdfc6cfdec7d1dec9d1e0cb *d5e0cbd4e2ced6e2cfd8e2ced8e4cfd8e4d0d8e3cfdae4d1d8e3cfdae5d1d9e3ced6e3cdd6e2ce *d9e3ced9e3d0d8e3d1d9e3d2d9e5d0d8e4d1d9e3d1dae3cfdae4d1dbe4d0d8e3cdd5e2cbd2e2c6 *d1e0c6d0e0c3d0dfc6d0e0c3d0dfc1cee0bfcbdeb9c8dcbac6d9b9c6d8b8c6dbb7c5d9b6c5d8b4 *c1d6b1c0d3b4c2d6b3c2d3b5c0d3b1bdd3acc0d3b2c2d2b3c1d5afbfd6b1c2d6b7c6d9b6c1d6b7 *c1d6b6c1d5b2c3d5b2c1d5b3c0d4b2c2d5b5c1d2b6c2d5b6c3d6b4c3d5bac3d5b6c2d5b5c2d3b2 *c2d5b2bfd2b0bed2b1c0d2adbccfafbad0b0bbcfaab9cfabb8ccabb8cdabb8cdaab6c9a4b7cda6 *b3cdaab5cbaab9cdadbbcca7b8cba5b5cca2b6cea7b8cea3b5cba3b3caa7b1c7a0b4c99eb1ca9d *b1c69aaec796acc699adc592a6c39aa5be9da9c298a6be92a3bc90a3be86a5c193a6bf8aa1bc8f *a4be91a1b88d9fbb899cb98ba1bc8ba2b885a3bf8ca3be8ba4bc8ca0bc8aa0bb88a1ba8ca0bb8b *9eb88ca3bd8da4c08ba2be8ca4bb879ebc8ba0b9899fb8869ebb8ca3bd92a4b98da4bd8ca7c28c *a4bd8da4bf98a4b992a2ba93a4c392a4bb91a5c18ea1bc8ea4c08ba3bd91a0bb92a3bb90a4b896 *a5bd9ba9bf9aaac39aa9c399a9c198a8c398a7bc98a8c19aa6bd99a6c1939eba98a4bd98a7c192 *a4be8fa0bc97a5bc8da3bb90a4be96a0b892a7bc95a7c196a7bd91a5bf8ea6ba92a8c098a4bf93 *a5c18da6be92a4bb8da5c18f9dbd9ba7bf9aa5bd959fba95a4bc86a0bb8fa2b38b9fb892a0be92 *a4be95a1bb97a4ba93a3bf90a3bc94a3bb8fa5be8d9eb990a4ba94a3bd909db994a2ba929fb992 *a4b78da4b28f9eb697a3bc969fbb93a1bc97a4bd91a1b991a3be92a9be91a6be95a6c096a5be98 *a3bd91a0bf9ea6bb9aa9be99a6b79aaabe9fabbf9aa5c19fa7c195a6c095a8c39bacc39babc097 *aac19facc3a4aec19eaec5a9b1c3a5afc3a4aec9a5acc3a8b0c7a8b0c6a6b0c6acb7c7acb5c6ac *b6caabb5cbb0b5ccb1bacaafb6cbacb7bdc0c8cec5cdd4c8d0d594aec391afc893b1ca8cb1c990 *b0c993b0c79ab1cc95b1c98cb0c88dafca96b3cc94b0ca93b1cb90b1cb9ab1cc8cafcb8faec890 *aec892afc88fafc98fafc896afc98cadc78dafca8aaeca8aadc88badc78aacc891b0cb90b1cb96 *b3cc94afc98fb0c98dadc88eaeca91b0ca91aeca97aec792afcb92b1cb92b0ca96b0c995aec89b *b1cca0b4cb95afc998b1c997adc78bb0c991b0c891b0cb8eaecb89aac78eb0cc90afcb8aaec98c *b0cc90b0c98bafcc8cafcb8aacc98cb1cb85aecb82aac883afcb7eaaca85aacb85acc880adca82 *aecb84accb82aecb81adcb81b0cd7faccc80aecb83afcb82aecb83aecb87aecc82aecc85b1cf7d *afcd81b1ce83afcc8cafcc8db1cc84b1cc81acca7eaecc84aecd87afce86aece87b0cd85b1cc8c *b4cd86aecb80aece84afcd82b0ce8ab3d08cb3cc87afcc8db3cd8bb3cd8db3cd84b2cf92b3ce93 *b6ce97b6d09cb6ce9cb8ce9ab7d099b6d093b5ce8bb2cd8fb3ce8ab5d187b3cf86b1cd89b1cb8b *b4d093b4ce92b4d18db3d193b4d191b6cf8fb6d08db4d087b4ce86adce8db2cd85b3d08bb4d08b *b6cd8bb4d18db2cf89b5ce8cb4cd96b3ce91b6d090b5d192b9d08fb8d093b9d28fb6d18bb6d197 *b5d38fb5d092b6d08ab6cf8db6ce85b4d189b4d08cb4d08bb5ce8cb4ce8db3cc8eb5d091b6ce8e *b6d291b8cf94b8d38ab6d191b7cf92b6d090b4cf91b7d085b2ce8fb7cf91b7d490b6ce96bbd28f *b8d192b6d096b8d386b3d18eb5cf8eb5d195b7d394b7d393b7d18fb4ce90b4cc86b1cb84979c81 *abc788b0cc8bb6ce8bb5cd98bbd093b6d197b7d191b5d191b7d293b7d391b6d190b8d28ebad28e *b8d08db6d089b4cf92b7d296b9d293b9d193bad391bad496bad094bad296b8d295b8d394bad38f *b7d198bbd595bcd698bdd695bad39ab8d39bbbd698bbd399bdd597b9d397bad398bbd398bbd297 *bcd38fb7d198bbd396b7d294bbd198bbd394b9d295bdd693bad195bad399bdd494b9d396bad496 *bad298bbd493bad49abcd397bbd393b8d396b6d398bad396b9d196bad493bad399bcd495bbd395 *bbd295bad39ab9d394b9d18ab7d193bad297bcd39ac1d697bcd599bdd496bcd595bbd494b7d397 *bbd498bbd69abcd497bdd49abcd597bed492bad397b9d399bdd593b7d398bbd397b9d396bcd3a9 *c3d8b5c9dbbacbd8b7cbdabaccdbbfcddec4d0dfc4d1e0c8d4dec6d5e0c7d3e2c7d6e0c7d2e0c7 *d3e0c5d0e2c6d2e0c6d3dec6d3e0c6d2dec6d3e0c6d3e2c3d1e0c2cedfbecdddbccedfb2c9d8a6 *c2d598bfd69dbdd59dbfd79dc1d59cbdd59abed49cbfd6a2c1d59fbfd49ac1d7a1c0d69cbed49b *bfd59fbfd69dbed5a1bfd6a2c0d6a2c2d79fc0d59cbed6a2c1d6a2c3d6afc7d9b1cadcb1c8daa8 *c4d7aac3d8a5c3d8abc4d8b3c8dab9c9dbbccbdebcccdfbcccddbdcbdec3cedfc2d0debeccdcbd *cdddc1cedec1cdddc4ceddc5d0dfc5d3dfc5d1dec6d1dec5d1ddc6d1dec7cedec3cedcc6d2dfc7 *d1e0cad5e0c9d5e1cbd7e0ced8e0ced9e3ced8e3cfd8e2cfd8e3ced8e3ccd9e3cddae3ccd7e0ce *d7e2cfd9e2ced9e2cedae2cfd9e2cfdae4cedbe3ced9e2d0dae3d1dbe3d0dae3ccd7e2cbd5e1c6 *d3e1c4d0dfc5d1dfc3cfdec2cedec0cdddbdcbddbaccddb9cbdbb6c8dbb6c7dbb6c6dbb4c3d7af *c3d3b4c3d4b5c4d2b2c4d2b4c3d1b5c3d5b3c3d6b3c1d6b3c1d2b6c1d4b8c2d4b6c4d2b2c3d6b5 *c1d6b2c1d5b5c5d3b4c3d0b1c2d3b5c4d6b6c3d2b2c1d2b4c3d3b5c4d3b6c3d4b5c4d5bbc4d5b7 *c4d3b7c4d3b5c3d2b1c1d3adbdd1adbbceadbccfaebcceabbdcdabbbcea7b8cbaab9cca3b7cca2 *b3cba5b4cba4b6c99fb6c8a2b6ca9eb1c7a4b6ca9fb2c7a3b4c79bb1c8a1b5c99eb3c69eb5c79f *b1c39dafc497a9c195aac293a8c691a9c591a9c394a9bf8da8bd8ea6bd91a6bb8ea2bb8fa1be8d *a2bb8da5be8ca4bf86a3bb87a1bb84a1b886a3bd879eba8d9fb884a3bd83a1b8899db88ca0ba88 *a1b48aa1ba819db88f9fbb849ebb85a3bf869eb9829db8859fbb85a4bd8ca1b7859eba859fb885 *a4bd8aa6bc8ba3bb87a5bd8da6bb8da3ba8ca4bb91a1b78ba2bb88a2bb8fa4b991a3bb8fa0ba92 *a3bc95a7bb96a7bc92a9c393a6bc94a8c294a4bf8fa4bd8ea4bd93a5bf8fa6bc90a4ba96aac094 *a9bc94a8be92a5bc96a8bb8da8be8ea8bd8da5bd8a9cb791a4bd91a0bc8ea2bd90a4be8ba6bd8c *a6be8ca1bd8ea4bc90a0bc96aac192a6c08aa5c090a4c08ca5bc8ea7b893a5bd91a4ba8ca4bb8e *a2b68da4bc8ca5bd8ea8bf8ea5be94a2b99cacc394a2bc93a3bb93a5be90a7be8ca4bb97a9bf8f *a6be8da3b993a6bc8ca2b994a4bc97a5bc94a9c096a8bd96a9c193a8b993abbe97aabd9cadc197 *a8bd9bacbe99a6bb9cacc19bacc19eacb89faebfa1adbf9aacc29fadbfa3aec29fafc4a4b1c3a3 *b0c39db1c1a8b0c1a5b0c1a3b1c8a7b6cbaeb9cba9b7c9adb9cbabb6c7acb9c7adb7cab3bdccb1 *bbccb1bbcdafbcccb2c0cfb2becdb5c0cdb0bdc0bfcacfc4ced4c6d2d994aec99db0c898b1cb9b *b1ca99afc999aeca96b0ca96b0ca9fb0c999aecb9fb2cea1aecb96adcb97aec994aec996b2cc92 *afca92acc996afcb8dadc896b0c896adc890adc78fadc796acca92aec993abc698afc993acc995 *aecb99b0cb98afcb96b1cb93abca93aeca9ab0cb96b0ca96b0ca8caec98cabca97aecd9bb1cb9f *b2c9a1b3cb9cb1cc9bb0d099b1cc99b0ca94afc991afc98baecc8eafcc8babc78daeca90abc890 *accb8eaecc93abcc8aaacb85aecb8aabcb81abca7aaac88aacc988accb82aaca86acce85accd80 *aacb82aac97ea9c67ba8ca85adcc84aac980aaca7eaacc82adcd80acca7eaacc86adcb82abcc85 *adcc87acca89aece81accc87b0cc86afcc81aecc87aece86adcc86aece87aecc81aece85adce8a *b0ce87afcd82b1cd82aecd85adca86aecf81accc87b0ce84b0d190b1ce8ab1cd8bb1cb87b0cd8d *b0ce92b3ce91b0cf97b5d197b4d193b2ce90b3d08fb3ce89b1ce85afcd8bafce89afd188afd090 *b3cf8aaecd89afce8fb3cd8eb0ce91b0d08fb2d091b2d086adcf86afd189aecc86b2cf85b2cd8a *afce8aafcc8aaed08cb1d08aafd18cb1ce8ab3ce8eb4ce90b3cf92b4d18cb3d195b3d18db5d18f *b4d193b5d090b4ce8ab5d190b2d291b2cf8ab0ce8fb3d18eb1d194b6d18ab5cf8cb4cf8fb7d296 *b8d394b5d292b5d091b4d193b6d493b6d096b5ce94b4cd8eb5d093b3cd94b5d292b4cf93b4d197 *b8d393b6d390b6d094b8d191b6d395b6d198b9d28fb5d297b6d38fb5d491b1cd8ab1ca81a7c07a *9fba80a3bb86aac688aecb91b1ce92b5d390b3d192b5ce93b6d190b3d08fb6d28eb4d194b5d191 *b7d591b5d38db6d290b8d08bb4d192b6d18bb5d28fb4d198b6d392b8d396b8d498bad292b6d292 *b9d392b6d193b6d297b9d49cb8d592b6d596b9d38db8d192b8d39bbbd496b7d393b7d497b9d58f *b6d29abad797b8d399bbd394b9d38fb5d399b6d398b9d598bad696b6d493b7d697bdd598bcd591 *b8d093b6d294b6d397b7d29abad498bbd490b7d395b7d593bad38db7d490b6d297b8d498b8d592 *b7d497b8d499bcd496bad397bad398b8d397b6d296b8d295b8d399b9d696bad394bad398bad398 *bbd397b9d593b6d39bb7d39abbd399bad498b9d396bad596bad598b8d497b9d495b9d59bb9d498 *b8d39dbed6aec4dab6c7dbb6c9d9b9cbd9bccbddc2cddec8d0e0c9d2e0c9d3e1c8d4e1c9d4e2c7 *d3dfc6d2dfc9d3e0c9d3e0c8d2e2c8d2e0c6cfe0c2cedec3d0dfc1cddebccadcb6c8dbaec3dba8 *c1da9dbcd39ebfd697bbd69abcd49dbed59ebdd8a1c0d99abcd89abbd5a0bdd6a2bfd69dbdd69c *c0d69fbdd599bbd697bbd6a3bdd6a1bcd49abed6a2bdd69dbfd7a1bad39fbfd6a3c0d7a8c1daaa *c1d7a6c1d7a3c0d5a8c1d8a8c2d7aac4d9b6c6dbbecbddbdcbddbbcbdcbccbddbbccdebfcddfbe *ccdebeccdec2cddec7cee0c6cedfc7cfe1c6d1dec8d2e2c7d1dfc7d1dfc7d1e0c7d0e0c8cfe0c8 *d1e0cad2e0c9d3e0cbd3e2cbd5e2ced6e3cfd8e2ced8e6d0d8e4cfd8e3cfd8e3cdd6e4cdd8e4ce *d7e5cfd7e3cfd8e3d0d8e3cfd7e2cfd8e5d1d8e3ced8e3cdd7e2cfd9e4cdd8e3cbd6e3cbd1e1c8 *d1dfc6cedec4cedfc1cddebeccdfc0cbdebfcbdcbdcbdebccbddbdc7dbb7c7dab9c6dbb4c3d6b5 *c4d6b0c1d6aec0d3b6c1d1b6bfd3b8c2d1b8c4d5b6c1d3b3c2d4b4c0d3b2c1d4b4c1d3b6c3d4b6 *c4d6b4c1d3b4bed1b2c0d3b5c1d3b5c2d4b5c2d7afc1d5b8c2d2b6c3d3b8c2d6b7c3d5b8c1d6b5 *c1d5b6c2d6b4c2d4b3c1d5b2c1d1b1bdd1b1bccfb0bacdb0bfd1abb7d0a8b8d0a6b8cca9b8cba8 *b7cea9b6cba7b6c9a4b1c9a4b2c9a2b1cca3b1cb9db1c79cb1cb9dafc6a0aec59eabc69fabc39c *adc698aac499aac592aec599a9c59bacc493a6c195a4c192a1bd91a3bd99a7bd90a4bd89a4be90 *a5be8ea2bd8ca2bf93a3bc8a9ebd8d9fbe849dbd88a4bd879fb882a2bb879dbb88a0bb8f9fba8a *9cb78ba2ba8ca4bc8ba4bd819ab786a3b98aa1b986a1bc8ba1bf869ab9879abb87a1ba859eba87 *a2bc89a4bd92a4bb919dba8c9eb88ba0bb97a5bf899fbd869eba8aa3bd8b9fb98da0bb8ca3be94 *a3bc8a9dbe8ca5c193a7bf95a6bc91a4bd98a6bd9ba7c099a7bc97a3c095a5be96a4c091a3bf8f *a2bc95a5c0959dbc8ea1be97a3bd8aa2bd93a6bd92a5bf8da4bb89a5bb8d9fb38da1bd95a3c094 *a6c18c9fbf8ca1bd90a4bd8ca4bd90a9bf98a7bb96a6bb96a0bd90a0bb8e9fbb92a6c297a6be95 *a5c190a4c193a3bd91a4bd8ea2bf95a5c096a6be96a5bd91a7c093a4bd9aa8bd909cbe9aa4bc9a *a4c294a1bd95a5bb95a8c091a3bd9aa9bf9ba5b89ca7c099a3bba0aac09ea9bf99aac196a9c39c *aabf9ea6c19caac49da9c19fa9c19faac1a1adc3a0aec6a4aec19eaec3a4aec3a4afc3aaaec6a8 *b1c6aeb7c7adb5c9abb4caaabbc9b0b9cab3baccb1bbccb5bbceb4b8cbb4bacbb4bdcdb7c0d1bb *c2d0bcc1cfb8c1d0b5bdcfb7bed1b6bdceb6bdcfb4bcc1c0c8cdc6ced4c8d1d89bb2c99eb5c8a1 *b5c99eb3c9a3b1c79fb3cba5b6caa2b5cb9fb3caa1b6cba4b6c9a4b3c89cb1c8a2b2cba0b4c8a4 *b5ca98b0c993afc994aec89eb0c995aec89eb1c694aec599aec798b1c996b1ca9aafc894b1c89b *b2c996aec79bb1c997b1c998b0c896b0c795adc993afc993aeca97b2c997afc797adc69bb1c89a *b1ca9ab1cb9bb2cc9bb1c993aec99db3c998b2c992b0c695b1c795afc98eb1cb8dadc992adc793 *aeca8facc891b0c78eadc986abc685adc785acc988aec986aac686acca87adc886adc787afcb84 *adc982accc80aac886abc984accb81acca8bb0cb85adcb88aecc7caacb83accc87aecb87acca8a *aecc87aecb86afcc87afcc87afcd83accb84abcc87abcc83accb83acca85b1cb86afcb81aeca82 *aec88dafcc88aecb88b1cc86aecd89aecc82aecc84accb7aaecc89afcb8bb1cd86aecd8bb1cc87 *accc89afcc8bb3ce90b3ce8db2cc90b3ce8ab0cb87b1ce8db1cc88afcb86adcb87b1cc87b2cb89 *b4cd8ab1cc89b1cc83adcb86b0cf86afcc86b0cd92b4cc8bb3cc8ab4cd88b3cd87b1cc8ab1cc8a *afce91b3cc8db3ce8cb4ce90b6cc8ab1cb8cb4cf8ab3cd91b3cc8db4ce92b6d192b6cd8db6ce89 *b4cd87b3d189b2ce8db5d094b5d18cb4d188b2cf8db3cd89b6d08cb3cf8eb5ce8fb6ce94b6cf91 *b6cf8eb4d093b7d195b8ce94b7ce9ab8d097b6d099b4cd8fb2cd97b7d093b8cf94b7cf97b7d091 *b6cf92b4d095b6d093b5cc92b6ce96b6d298b8d292b8cf92b6cc91b6ce92b6cc95b3cc95b6cc8d *b3cb8fb4ca8ab0ca93b4cb91b4cc95b6ce97b8ce91b2cd95b6ce92b6d087b5cf8fb9d094b8cf95 *bad092b6cf98b5cf92b6cd90b6d18fb6d48eb5d08eb8d097b8d095b9d095b7d192b6d191b6d295 *b7d293b7d492bad397bbcf95b8d096bbd192b7d097b7ce95bad19bb9d298bad695bad291b7d092 *b7cd9bbcd19abbd595bbd498b8d390b6d396bad399b9d295b8d198bbd194b6cd97bad29abdd39a *bbd194bbd593b8d190b9d292b8d194b8d099bacd97b9d19ab9d195b7d196b9d098bbd496bbd296 *b9d197bad097bbd299b9d196b7d197b9d093b9d198bbd399bbd396bdd191bbd197bad299bad19c *b9d196b9d393b9d392b8d498bbcf94bbd29abbd197bbd396bbd397bbd394b9d39bbdd59abbd399 *bad197b9d1a0bfd3aec3d5bbc9d8b7c9d7bbcbdbbdcbdcbfcedcc5d2dec9d3decbd6deccd6e1cc *d6e0c9d5e1c8d4e1c9d3e1c8d5dec7d2dfc5d0dec4d0ddc2cfdebfccdeb4c9dbb1c5d9abc3d9a6 *c2d8a2c1d59fc0d39bc0d69bbdd399bdd49bbed6a0bdd59dbdd399bed69cbed5a1bdd39dbdd5a1 *bed39cbdd49cbbd39bbad39ebdd69cbed19ebfd39dbdd5a4c1d7a0c1d6a6c3d7a5c2d5a1bed5a2 *c0d5a4c0d4a6c1d5a7c2d7abc1d4adc4d6abc3d8b4c7d9bacbdcb9cbdab8cbdbb9c8d9b4c8d8b5 *c8d8b8cadab7cbd9becddbc2cfdfc3d1dec7d2dfc9d6e0c9d3dec9d3e0c9d4e0c8d3e0c9d3e0c9 *d2e0c7d2dfcad3dfcad6deced3e0ccd6deced8e0cdd9e2ced8e2cfd8e1ced8e2d0d8e0d0d9e0cf *dbe1ced8e2ced8e2d1dae3d1d9e3cdd9e2cdd8e1cdd8e1cfd9e2ccd7e0ccd6e2cbd7e0cbd5e2c9 *d3e0c8d1dfc7d1dfc5ceddc2cfdebeccddc0ccddc2cdddc3ceddbcc8d7b9cad8b9cad9bbc9d8b6 *c7d8b5c4d5b2c6d3b3c4d5b4c2d4b6c3d8bac6d7b4c3d3b8c6d6b9c6d6b7c4d4b8c3d6b7c3d3b4 *c3d4b8c5d4b5c3d1b6c2d5b4c2d4b6c5d6b4c2d3b5c2d2b4c3d2b5c2d2b4c3d4b5c4d4b5c3d4b6 *c4d4b3c3d3b6c2d0b8c3d6b8c2d3b1c0d1afbcd0b4bdcdafbfcfafbccdaebccdafbcceaabacbab *b9cbaabacca6b9cda6b6cba7b4c9a4b6c6a1b1c79eb1c69db2c79db0c79cb1c799aec39cacc29d *afc39aacc394aac698aac699aac697a8c694a7c397a6bc99a9bd97a8be95a6bf97a6be92a3bc92 *a5bf91a4c08ca2bd8ba2ba8ba6bc88a5b889a3b88aa3b889a3bb89a4bb88a0bc8ea2bb869fb88e *a3bc91a4bc8ba4b891a4b88ba3bd8aa1b587a3bb8599b789a4bb8c9fb7879eba8b9ebb8fa1bb8b *a2b992a6be8ba3bf91a9be8da5b792a5ba8ea2b88ea4bc98a4bd8ca2bb8ca2bc91a7bd8da4b690 *a5bb87a0b68da4bb95a5bc97a6b993a9c090a6bb97a8bd95a8c097a6ba94aabe94a9b990a3bb95 *a6b893a6c08aa2bd90a3be91a4bc8aa4b993a3ba96a6bc8fa4b896a4bb91a4bb8c9cba8fa5bd97 *a5bd98a7b997a8bb8fa4b999a8bc99a4bd95a9c397aac091a9bd96a4bd9aaabf98a8bc96a2bc98 *a7bd8fa4c091a5bd95aac390a6bc91a7bc99a7bd91a5bd99a7bf96a3be98a4bb93a5c199a7bf8e *a7bf99a9be99adc291aac196a8c09baac19da8be9ca9c099a8bf9ba7bb9cadc1a4b0c1a0adc2a3 *acc39faec2a3b0c5a2afc3a2adc39eb2c5a4b4c3a5b3c3a6b3c3a8aec3a9b0c6aab5c6abb4c7ac *b7c9b1bacbb0bccab6bccab5bbcbb9becbb7c3ceb9c1d1bdc4d0bec2cfbdc4d0bfc6cfc1c7d1c0 *c7d4c0c7d5bbc5d3b7c1d2b3c0d1b6c0d0b4c0cdb9c2cdb4bcb9c2cacdc7cfd2c9d4d9a2b3cb9e *aec9a1b6ce9eb2cba3b3cca6b6cba3b7cda4b6cba4b6cda4b6d1a4b4cca3b1cd9fb2cc9cb2cba4 *b6ce9cb3c9a1b4cb99aecb9aaec99bb0cd98aec89ab1c897aec998afcb9bb0ca9db2caa1b3ca9d *b0cb9eafcb97b0ca9ab1cc9ab1cc95b0c898b0cb98adc997adc892abc791aac78fadc992aecb92 *aecc90aeca97aec894b1ca98b0cb9cb1cb98afcb99aeca95adc98fadca93aec792afcb91aec790 *afca8bacca8badca8bafcc82a9c982aac985aeca85abca8badca88aecc85abcb80aac986aac982 *adcc79a9cb7eaccc8cafca85adcc86accc7daacb7ea9cc81accc81a9cc87afcd84aecc7daacb7b *a9cb83aacb86abcd7ca9cb81abca7cabcb7faccc84accc85abcc8baece84accc7faacb85adce88 *aecf86aecf7eabce80aecc87aecc8baece84aecd83abcc87b0cf84aece81aecf82abcd86abcb88 *adce88aecc8aaccc8bafcc89afce80abcb83aecd84aece8bb1ce87aecb86afcc82aecc84afce86 *aecd84b0d08db1d186afcd86b1ce90b0cd85aecc85b0ce8ab1cf8cb2cf84afcd86afce8db0cd91 *b2cd87aece8ab3cf8ab3ce85afce8bb1d086b1ce8eb1d18db1d08fb1cc86b0ce90b3d189b1d18a *b1d191b4d18bb3d291b3d18db4d090b1ce8ab2ce86b1cf91b1d288afcf8ab0d28db4d195b5ce91 *b4d095b5cf91b2ce94b5d294b4d295b6d294b6d28cb5d291b5d193b8d295b6d291b3cf94b5d18d *b3d18fb5cf90b5d08ab1cc91b5d186b1d18cb3d28bb1d193b6cf95b6d086b4d190b6d38bb1cd91 *b6d390b5d196b6d192b7d18eb6d18cb4d191b7d38db6d287b4d18bb3d097b6d091b3d08bb6d28e *b6d18cb5d28fb6d38fb5d48cb4d093b5d18fb4d08eb5d08fb6d291b6d392b5d294b8d392b8d393 *b8d299bad48eb5d191b8d392b8d39ab9d698bad692b6d599b8d393b8d395b8d38cb6d396b9d393 *b8d492b7d393b9d591b6d692bad397b8d390b5d392bad394b8d193b8d495b9d699b9d498b7d493 *bad391b9d295b8d395b8d599b8d597b6d395b9d58fb6d497b8d592b9d591b7d296b9d291b7d393 *b6d195b7d397bad495b9d394b9d399b8d292b7d38fb6d29bb9d392b6d390bad38db6d197bad692 *b9d496b3ce98bbd38eb9d695b9d396bad298b9d596b9d697bbd690b8d397b9d69abbd596b9d59a *bbd398bbd395bad398bbd2a2bdd7abc3d4b5c8d7b9c7d9becbddc2cddec3d0dfc7d1e1c8d3e2cb *d6e3cad7e4cbd4e2cbd3e2cad5e2c9d4e2c6d1e0beccdeb8c8dcb6c8dcb1c6daa9c2d8a3bfd7a4 *c0d8a5c1d8a0bed59cbdd69abdd69cbdd69cbdd69abdd6a4bfd79dbcd79fbbd79ebed899bbd698 *bad79abdd69cbed49fbdd69dbcd49cbcd69dbcd6a1bcd6a3bed6a2bdd7a0c0d7a7c4d7a4c0d6a4 *c1d7a0bed6a2bdd6a7c0d7a7c1d6acc3d8acc4daaac4d8b4c6ddb8c9dcb9c7dab4c7dcb6c8daaf *c5d9acc4d8afc6dcb5c8ddb6caddbdcaddc3cddfc5d1e2c7d0e0c8d3dec9d4e0c9d3e2cbd3e2ca *d3e0cbcfe1c7d3e0c8d2e0c9d3e2cad4e0ccd4e2cdd5e0cdd8e2cfd8e3ced6e3cbd7e3cdd6e3cd *d6e3ced7e3cdd9e4d0dae3d1dae5d1dae5cfd6e4cbd5e2c8d6e3cad3e1c9d1e0c8d2e0c8d4e1cb *d5e2c9d0e0c7d1e1c6cfe1c3cfe0c1ccdebeccdfbfcbdec0ccdec0cddec0cbddbdcadcbac6dbb6 *c5dcbdc6d9b6c5d9b5c3d6b7c5d6bbc7d7bcc4d6bcc5d9b5c3d6b6c4d6b6c6d8b4c4d6b6c4d6b5 *c6d8b6c5d6b6c3d8b2c1d6b8c2d5b6c3d6b6c5d4b5c2d4b4c3d6b4c3d3b8c1d4b7c3d5b6c2d3b7 *c2d4b6c2d4b6c4d5b9c3d3bac4d6b6c4d3b4bfd2b2bccdb1bfd1aebbd1abbcd0acbcd1abbacdaf *bad0acbbcda9b6cba3b4c9a4b2c7a4b3ca9db0cba6b0c89daec7a2b1c7a6b4c79db0c898abc696 *aac698a9c799aac69aacc69dadbe9cadc39badc690a8c394a6c58ba2c096a4c193a8c68fa5c290 *a8bd94a6bf8da3bd8ea4be87a4c18e9fc087a2bf879fc0889fb98b9dba8ca3ba90a0bc8ca0bb83 *9dbd89a1bd909fbb8da1ba87a2be8da3be8aa1bd8ea4c087a2be88a2bc90a4bc89a3bf86a1bb90 *a4bb86a2bc8da3bf8da5bf8da2bf93a5be96a5c18ca5c294a5bf89a3bc8ca4ba8da4bd91a3bb93 *a5ba8ba3bd94a6bc8fa3c091a7c194a5bd96a8c398a5c09aa6bd96a7bd97a4bd96a7bc94a5bf90 *a6c395a5c095a7bf95a4bd94a4bd8ba5be8ca3c191a3c095a4bf92a4be8ea1bd8ea6be96a6bf93 *a0bd8ea4c198a4bc96a8bf99a6c295a1be95a5bd8d9fbf93a5bd9aa9bd93a5c199a5bf9aa6c09b *a9c39da9bc96a9bf98aac198a8c090a8c196a9c097a6c191a7c294a9c292a3c096a9bf99a9c199 *a7bc98a5bf9ba7be99a7c199a8c199a8bf9baac29caac19badc59dabc5a2afc39cadc5a4b2c7a0 *b0c79faec4a3b1c2a8aec4a5b1c6a7b2c8a6b1c7a7b3c9b0b9ccabbaccadbaccb1bacdb2bdd0b5 *bbcdb9bdd0bbc0d0b9c1cfbbc0d1bdc4d4bec7d3bdc7d3c1c9d3c1c9d7c1c7d6c3c8d6c7cadac5 *cbdbc3cadbbec9d9bbc4d3b7c1d0b8bdceb4bdcfbbc0d0b5c1d4b6bcc3c1cad1c6cfd5cad2d8a4 *b3cb9db3c7a4b6c9a4b6c9a0b5c9a4b6cca4b6cda3b3c9a8b9cdaab9cba6b7caa6b4c9a4b2caa1 *b3caa4b4cc9eb1ca9eb4cc9bb1cc9db1c89eb1c99aafc797aec99aaec99db1ca99b1ca98b1c99b *b4cd9ab2c69eb0c89db1c999b0c996aec894afc596aec894b0c890aec98faec88eafc791aac78b *abc788adc991aec989aac98caec98eafcb91aec998afc992aec98cabc98dacc68dadc78badc78d *afc788adc88badca84aac789aec884abc982a9c672a9c779a7c67eabca7da9c97daac783a8c687 *aac67daac985aec985accb83aacc87acc87fabc982acc77daac981aaca7daaca86abc981abca72 *aacb80abcb84aeca81aecb7faacb7caacb81abcb85adcb7eabc787aecd81aecb83aecb8bb1cb8a *abcd81aaca82abcb86aecc8aafcc81adcb7eaccb83adca8bafcc87accb7faecb7baccb87adcb85 *abca7fadc97eabc986aeca82aece81abcc82adcb86aecc86adcb83adca85aecb86afcb85adcb88 *aecb88afcc80afce7fadca84afca86aecb85b1cc7bafce87b1cd8bafcb81aecb85b0cc86b3cc7f *b1cd88b1ce8bb2cc92b3cf88b1cc8aafcc8baecc8bb1cd91b6cf88b1cd8cb2ce95b6d08db3ce8e *b1cd90b1cc8bb3cd89b3ce89b1ce8bb2ce8db5d192b6cf91b4ce91b4ce8eb1cd88b1ce88b0ce93 *b5cf8bb5cf92b6d092b2ce95b4ce94b7cf91b5cd98b6cf94b6cf98bad098b9d394b5d099b8d195 *b7ce92b7cf91b3cd92b4cc91b5cd91b6ce8bb3d08fb5cf8eb2cc8eb3ce8eb3cd8cb6cf8db1ce8f *b3cc90b3cc8cb5d091b4ce91b6d087b3ce94b7ce97b6cf8ab6ce92b6d093b6cf8db6d08fb5d08e *b4cf93b6d088b1cb8fb5cf8bb4cd8bb7ce8db6d093b8d38fb5d18eb5d190b4cf91b6cf93b7d094 *b6d18cb6d195b6d396b7d398bad399bad295b9d094b7d18fb6d395b6d396b6d094b6d390b6d495 *b8d390b7d18eb6cf91b6d18fb9d195b8d393b7d296b6d198b8d396b7d192b8cd94b8cf92b7cf92 *b9d399bbd396b7d194b6d193b8d593b9d391b7d093b6d097b9d093b6d392b7d298b8d198b9d193 *b9d494b8d095b6d099b8d198bad196b8d392b7ce96b6d198b8d394b7cf92b7ce97bbd297b7d192 *b9d28eb9d292b8d293b7d191bad49abbd595bbd297bbd39abbd397b8d395b9ce99bbd597bbd493 *b7d193b9d39abad190b7d19ab9d198bad1a3bed2aac3d7b2c5d5bacadac1cddcc5d2ddc8d1dcc9 *d2dfc7d2ddc7d5e2c7d4e2c6d2e1c8d3e1c8d4e1c3d0debccadbb6c6d9b3c6d7a7c3d8a1c0d598 *bbd59dbed6a0bed3a1c1d59bbbd39cbed59ebfd5a0bdd6a3bed69cbbd698bcd59fbed69abdd49b *bdd39dbed698bdd597bbd49fbbd597bcd59bbbd39bbdd49bbad49bbbd29abad3a0bcd5a4bfd7a8 *c1d7a5c1d6a7c3d6a6c1d5acc4d6afc4d7b1c3d7b1c6d7b0c5dab4c7d9b8cadbbacbdbbccbd9ba *c9dab5c9dab3c7dab8c7dab6cadbbccddebacbddc1ccddc2cedec3cfdcc4d0dec7d1dec7d1ddc8 *d1dfc6d2e2c6d1dfc9d2ddcbd3dfcad6dec9d4e0ccd5e1cbd6e2cbd8e1ced8e3ced8e3ccd7e0cc *d3e1cdd3e0cdd6e2ccd7e2ced8e3ced9e4cfdae3cfd9e2cfd7e0ccd4dec9d1dfc7d0dec7d3dec8 *d6e1c6d3e1c8d3e0c7d0dfc8d1e0c7d0dec0cdddbdccdcc0cddec1ccdec0ccddc1ccdcc2ccd8be *cadbbec9d8bbc7d8bac7d8b6c6d6bbc8d8bbc6d8bdc7d6bac7d6bac6d6b9c4d3b6c6d9bac6dbb8 *c3d6b6c3d5b8c6d6b8c7d5bac8d6bbc4d6b8c6d8b5c5d3b7c6d6b5c5d3b7c4d6b3c5d5bac6d5b9 *c5d3b9c3d4b7c2d2b5c3d4bbc4d4b7c4d3b6c2d2b1bfcfafbed0adbdceacbcd2adbbcda9bacead *becdabbbccaab6cba7b7cca9b9c9a8b6caa5b2c9a6b4cba3b2c9a2b1c79db4c79db2c79bb0c8a0 *afc6a3b1c69faec197aac49dacc499acc698a8c297aac494abc192a9c29daabf92a3bb92a7c095 *a6bd85a2ba8ca5c08ea4c192a4bd8fa5bc8da4bc8fa3b993a3b990a0b9869fb990a4bd89a4bb90 *a4bb88a3b993a3ba89a2b78ca1ba95a2ba8ca2be8ca3be889fb792a3bf90a5ba91a4bb91a3bd8d *a2bb90a4bd8da2bd8ca2bb90a3bd96aac293a8bc97a6be95a4bb8aa2bd8ba7bd8da4bd93a7c190 *a7bc94a4bc97a9c093a7b992a4bc97a6bd99a8be99a8bd97a8c09babc298aabd9aa7be91a5bd91 *a5bc95a7bc91a8bf9ba7c29aa5c194a5c094a5bd97a6bc95a7be95a4bc96a5c192a6bc99aabc92 *a7bd9aa8ba96a6bd9baac291a7bc99aac397a6c09baac19cabc299a4c08fa7bd99aac197aabd98 *aabe8ea8be9cacc19aaac298a4bd9daabf9baabd96a9bf99a9bd91aac296a6c094a8c198a7bf95 *a8c199aac29ba9c19baac09caec29bacc19caabe9fabc1a2b0c5a3afc2a1afc5a3b0c2a3b1c3a4 *b4c5a4b3c5a9b4c6a5b1c9a6b5cbaeb5c9abb3c8acb9cdabbac8b2bbcbb2bccdb7c1d0b8c1d1b7 *c2d2bbc3d3bdc6d2c0c8d4c1c8d5c3c8d3c3cad7c6cad8c6cbd9c5c9d3cacedac5cddbc9cedbc8 *ccdac8cedcc5ccd9c2cad7bbc5d3b5c0d3b6becfb7c3d1bcc5d2bbc3d1b7bebcc2cbcec6d1d3c9 *d3d9a6b6cca3b7cca7b6cca8b8cba8bac9a6b8ccaab8cba4b9cea8bacea8b6cda4b6cca4b7cba5 *b6caa6b8cba4b2cd9baec99bb2cba0b2cb9ab3cb99b3c998b1c894b4cb93b3ca9db1cb97afcb9b *b1cb9bb1c89ab2ca9cb1c896b0c88fb0c990aec993afc892aecb8caac88faec98aacc889acc989 *acc884acc984acc884abc783abc67faac787acca8caeca89aac68bafc88cb1c88caec98cacca81 *acc98babc98caecb85aaca85acc785abc986aac882abc781aac882abc981abc984aac977aac984 *abcb83aac979aacc7fadc983abca7faac782acc67ca9c978a9c880aac886adcd86abcb81aaca84 *acc97badcb7cabcb84accc80accc79aacb84abcc82adcc82adca81afcc87aece80adcc7cabcc7f *aac986accd81adcb81accb8aaecc83aecc86afca7eadcb7daacb83aecb89afcd82aecb87afce87 *aeca7da9c988aecc81aecc7fadcb86b0ce81b0cf80adcb80acca84acca86accb80aecc88aecc7f *abcb89b0cf85aecc88b0cc89b0cc86accb84aecc81abcb85aecd88b2d187aecb85aecd8db0ce8b *aecd87aecb91b3ce8ab1cd8bb3ce89b3ce85b2cf87b1d08bb2cf8db1cd90b1cb8cb3ce8cb1cd8c *b1cd8eb4ce8db4d18db1cd8bb2ce90b2cf92b3ce8db4ce87b1ce8db4cc8cb4cf88b3ce8fb6ce8e *b4cd87b0cf8ab3ce87b4ce85b3d18fb3d090b6d08fb3ce90b9d099bace95b7d098b6d097b6d297 *b6d090b5d294b5d194b5cf97b6d194b6cf92b4d08ab4ce91b6d190b5d18cb5cf8bb5d188b2ce8c *b6ce88b4cd91b5ce8ab1ce87b2cf91b5d28db4d18cb6d28ab4cc8cb7cc91b4d191b5d18eb5d090 *b5d087b2cf8eb5cf93b6d08fb7d183b4cf8ab3ce8fb4d08bb4d18eb6d094b7d193b7d090b4d091 *b6cf88b5d190b8d392b7d392b6d28eb6d18fb7d191b9d28db7d190b6d197b8d392b7d096b7d290 *b5d28cb6d092b8d392b6d492b9d186b6cf8eb6d293b9d290b8d291b6d097b9d28ab6d18db7d492 *bad392b3ce96b8d298bad296b8cf8cb6d28db6d294b6d291b8d195b6cf97b9d094b7cf95b9d192 *b8d28bb6d28db6d392b8d392b9d295b7d093b6cf91b6cf95b6d08fb7d291b6d291b6d28ab7d296 *b8d38fb9d193b9d196b8d396b9d390b7d68fb8d196bad298bbd395b8cf96bad397b8d191b6d08e *b9d392b6d290b8d390b6d293b9d495b9d29abbd09ab9d19ebdd3a2c1d6b6c8dbbeccdcc3d1ddc7 *d3dec6d3dfc7d1dfc8d2dfc6d1dfc6d3e1c6d1e1c4d3e2c2cfe1b9ccdeb5c9dbb3c7d9aac3d69c *bfd49abcd49fbed59dbed59cbdd6a1bfd79ebed7a4bdd2a0bed5a4c0d8a4bed696bbd39fbdd69c *bed6a1bed697bdd498bad39abbd298b9d29cbcd597bdd599bcd798bcd49cbbd39abbd49cbbd3a8 *c1d6a7c1d6a4c0d6a4bed4a9c1d8aec3d5b2c6d8b2c5d8b1c6d8b3c6d9b3c7dab5cadbbac8dabd *ccddbbccdcbaccdbbaccddbbcbddbccbddbdccdebdcdddbfcbddc1ccddc3d0dec6d1ddc3d1dec7 *d2dec7d2dfc6d0dfc6cedec6d1dec9d4ddc9d5dfcad5e2ccd6e0ccd5e2cbd6e2ced8e2cbd5e2ca *d6e2cad6e1ccd8e2cdd9e3cbd6e2ccd7e2cedae3d1d8e3d0d8e2ccd7e2cbd7e1c7d2e0c7d1dec8 *d2dfcad5e0c9d4e1c6d1dfc6d0dfc6d1e0c5d1dfc1cfdebeccddbfcdddc1cedec2cfddc5cedcc1 *cdddc3cbdcc2cbdfc0ccdcbecad8bac7d5b9c9d6b9c9d8bcc8d9bdc8d8bdcad8bcc7d8bac7d7bd *c7d8b6c3d4bbc6d6b7c5d6b8c4d6bbc7d8b6c6d8b9c7d6b5c6d6b7c5d4bac7d3b7c4d3b8c4d3b8 *c6d6b8c5d6b7c3d3b9c2d4b7c4d6bbc5d2b9c5d6b6c3d4b0becfb1bed0b2c1d0afbfd0afbfd2af *becdb0bdcdb0bcceacb9cfabbbcca8b8cca9bbcca5b6cba9bacba5b5c8a6b4c4a4b2c9a4b5c7a0 *b2c899b1c8a0b3c99fb0c7a3b1c89dafc4a2aec39aabc69aacbf9baac292acc692abc38ea7c295 *aac396a7be94a7c18ca4bb8da6bf93a7c08ba4bf8fa5c190a5bf93a7c095a4bc90a4bd8ca2bb8b *a3ba8aa3bd8ea4bc8ca4c090a3bb8ca4ba92a5bf90a4c091a5bb8fa2b590a5c091a4be8fa4bb93 *a4bd8ea2bd92a3bd95a4bb8da6b986a4c18da7bf90a7c08da6bf9ba6ba92a8bd93a9bf97a6bc92 *a8bd96a7bf97a8bf8ba3bd96a7be95aac197a9c098a9bf95a8bf95a9bf9baac290a6be98a7be97 *a8c494abc097a8be97a5bd97a6be95a5bd99a7c08ca6c09baac098aabd96abc392a4be99a8c096 *a6bd9ba7be95a7c39aa8c49aaac09cacc397acc198aac49aa8c29aabc19baac39baabf9cadc1a0 *aec49daac09ca8c29ba7c09baabe9ba9be99aac399aac197a9bf99aac298aac29ba9c09eacc19b *a9c09aabbf9baac09badc19dacc59babc49eabc0a2aec4a2afc5a3afc3a4b2c6a8b5c8a6b2c9aa *b7cbaab4caabb9c6b1bacbb1bbcbaeb4c7afbdceb3bcd1b6bdceb8c3d2b8c4d1bfc4d1bdc5d2bd *c5d4bcc6d5c0c7d7c1cbdac1cbd9c6ccdbc7cddac7cfdbcbd1dbc7cfdccbd1ddc9d1dec8d1ddc9 *d1ddc9d1dec6d0dbc2cbdabec8d6bdc6d5b7c1d3b8c1d2bbc3d4bbc3d3bdc5d4b8bebbc3cad0c8 *cfd4c9d4d8a8b6c9a7b5c9a8b6cca9b7caa7b9cda7b9cda4b8cba4b8cba4b7cea3b2cba3b3cca5 *b5cba2b2cca1b3cc9fb2c999b3ca99b1c695aeca95afcb8dadca92adca8cafcb8caecb95aec991 *adc896afc890aec78badc98daeca8cacc888abc98aaac98aaac98daac789aac582a9c786abc781 *a9c682aac788adcb84aac985aaca7eaac783aac989acc98aabc886aac781a8c986abca85aaca80 *aac975a8c684aac982a8c77ba8c781a8c777a7c77aa8c873a4c679aac87ea7c67ea9c679a9c780 *a9ca80a8c97ea8c982acca80a9c774a6c77aaaca7caac97fa9c981a9c883acca7daaca79a8cb80 *abcb7eabca7faaca7caacb80abcb83abc97dabcc79a8c980a9cb85aecb80abc97dadcc86aecc83 *aacb7eaaca77aaca84adcb7eadcc80aaca88acca89b0cc80aacb84aecc83aecd7baacb83afcd72 *a8cb83abce81abca7fa9cb81aacc81adcc7faecd89acce83accc81accc7faccb86adcb86aecc85 *adcc89adcb82adcd86afcc7cadcb87aece85accb88aecd89adcb87afcd86aecc83afcd88aece86 *adcb81accb8ab1ce89aecd89afcc8cafce85b0ce86b0cb82b0cb83afcd8cafcd8cb3ce8eb3cb8c *b2ce8baecb8bb1ce90b1cd88afcb8db3cf8bb2cd88b2cf8db1cf88b2d190b1ce8eb1cc8ab1cd8c *b3cf8ab3ce8eb3cd93b6d08bb4ce89b2cd8ab0ce8fb1ce8bb2cd90b4d094b6d192b6ce90b4cf91 *b4cc95b3cd91b2d090b4d194b6d092b4d191b3d091b5ce95b6ce92b4cf91afcd8eb1ce96b5d190 *b4d18cb3cf8bb4d18db5d091b5cd92b4ce91b2ce8eb1ce8eb4d08eb4d191b4d08ab3d189b1cb87 *b5cf8eb5d08db1ce8eb2ce8eb3d08eb4d188b1ce8fb5d090b3ce8bb5ce92b6cf92b5d18eb5d08e *b1ce8ab2cf8cb3d094b7d491b4d08fb5d08eb1cf8bb4d291b6d093b6d192b7d18cb6ce89b4d096 *b8d193b6d094b7d08eb6cf92b6d191b6ce8fb6d38eb7d192b6d28cb6d18fb4d192b6d28bb4cc95 *b4d090b6d08eb5d28eb7d58db6d18fb7d093b6d293b6d290b5d190b6d190b5d18bb4cf93b7d391 *b7d293b7d092b5cf91b6d192b6d293b6d08cb5d18db3d28db6d293b9d093b5d092b5d291b5cf92 *b8d28eb4d291b6d38cb7d390b6d193b6d093b6d193b6cf91b6d394b8d397b6d499b8d395b8d397 *b7d395b7d297b5d094b6d195b5d198b6d397b7d19cbad59bbbd4a4c1d1a9c2d4b6c8d8becddbc2 *cedfc3cfdfc5d0e0c7d1dec4d1ddc5d2dec7d2dec3d0dfc5d2dcc1ceddbbccdbaec4d9acc3d8a7 *c0d89dbbd499b8d39bbcd3a1bed398bdd29dbdd59cbdd6a0c0d5a6c1d8a5c3d6a8c0d7a5bdd49d *bbd49ebdd59bbdd599bcd698bad696bbd59abad19cb8d39dbad59dbbd595b8d295bbd39dbad3a1 *bcd6a4c0d7a3c0d6a4c0d5a7c1d7a9c2d6aec4d6b3c6d7b1c5d9b3c6d9b3c6d6b6c6d8b6c6d9b9 *c6dabccad9bdc9dabdcddec0ccddc0ccddc0ccddbfcbdbc1cbdcc3cdddc3cddec6d0dec6d1dec8 *d1e0c4d2e1c8d2dec4d1dfc1cfddc2ccddc1ceddc5d1dec9d1e0cbd3e0cbd2e0c9d6e0cbd5e1c9 *d3dfcad3e0cad3e0cbd6e1cbd6e2ccd5e3ccd5e1ccd8e2ccd7e2cdd6e2cdd7e1cbd3e1c8d1e1c4 *d1dec6d1e0c7d1dfc6d1dfc6d0e0c6cedec6ceddc5cedec2cddec1cdddc0cbdcc3cfdec4cedcc6 *cedcc5cfddc7d1dfc0cddbbfccddbec9dcbcc7d9bbc7d8bdc7d5c0c7d8bfc7d8bdc7d8bdc8d8b8 *c6d8bbc6dbb9c4d6bbc5d7b8c7d8bbc6d7b8c7dbb8c6d3bbc7d8b8c5d8b7c4d7bac5d5b7c5d3b8 *c3d2b5c3d6b6c3d3b7c2d3b9c3d4b6c2d5b8c2d2b9c3d4bac4d3b3c2d3b2baceafbcd0afbdd1af *bed1b1c1d0b0bed2aebbceb2beceafbdceacb9ceabb6cbaab9cea6b5caa8b2c9a6b6caa7b7c7a7 *b9ca9eb2c69baec6a4b2c9a4b1c6a4b2c8a3b1c79baec79dacc49daec698acc698a9c394adc594 *a7bd96a8c191a4c196a6bf94a8bd94a7bf8ea2c092a3bd91a5bc92a4bd8fa5bd8ba4ba8da6be8c *a5be8ba3c090a3bd90a5c094a4bf95a4bc91a5c090a3bd8ca6c196a4bd91a4bb91a3bf8ca2bf98 *a5c092a4be91a4bb90a2c08ea7bd91aac196a7bc93a4bc97a4bd8ca5c09ba6be97a3c094aac48e *a4be98a7bd91a7bf9aa6bd99a3bd96a7be9daabe98aac499a7c09aa8c39ca9c09aabbf9ba9c196 *a6bf96a7bf96a6bb98a7ba9babbf90a6bf99aac199a9c18ea7bf97a7bd97aac198a8c19ba6ba9c *aabf95aac19da9c39aa4c199a6c29ea9c2a0aac099acc49babc59ea9c09eabc19eadc3a1acc49c *acc399a9c197a5c19eacc2a1aec39eabbda0acc39baac398a9c297a9c28fa7c49aaac29dacc596 *abc49cadc4a1acbf9fa8c19fabc29caec498adc5a0abc4a1aec7a2b0c6a2acc4a6b0c8aab2c8ac *b4caacb7cbadbbceaebdccb2bdceb6bfcdb5becfb6bfd1b7c0ceb6c1d1bdc6d3bdc5d6bdc8dabf *c9d9c1c9d7c4ccd8c4c9d8c7ccdbc6ccd8c7cddbc7cddbcbd0dccbd3ddccd2ddced3deced2deca *d3ddc9d0ddcacfdbc6cddcc0c9d9bec9d7bac6d5b7c1d3b6c0d2b7c0d0bbc3d3bdc4d5b8bcbdc3 *cad0c7cfd3cbd4d8a8b5c9aabbcba9b9caa6b6cca4b8cba4b6cda4b5cda6b5cba4b3cca4b6cba3 *b1c99eb2cb9cb0c997adc88baac68caec88dabc78baac885acc787aec986abc682a8c788a8c58b *afcb83a8c784a7c781a8c883abc67aaac584abc777a7c781a9c786acc781a8c785a9c882a9c982 *aac784aac686abc783aac880a9c776a6c77da8c67faac87ea9ca78a8c686aac77fa9c681aac984 *aac97fa8c97da9c780a9c979a7c784aac579a7c678a6c478a5c67ba5c775a4c585a8c77ea4c77d *aac77daac681a7c682a9c783a9c87ca9c884aac780aac97baaca82abc885a9c877a9c784abca83 *abcb77abca7baacb81accb81adcb85aac980a9c988adcd7fa9ca81accb83accb82abcc7aabca81 *accc7caaca85aecb81aaca7aaacc76a9ca8aadcb81acc983aacc86afce85acc98aaecc7baacb7d *acca80accb83aecc80aaca81aacb80aacb84adc983aecb82adcc89afcb82accc83accc83aecb81 *aecd82aecb87afcb85aacb80abcb81aaca81adcb8ab0cc88adcb82accb82adcb84aecb88aecb84 *accb88aecb89adcc84adcb81b1cc80abcc8cafce8eb0cb8bb1cc8ab1cb87b3cd8cb1cd8db3ce8a *b1ce87adcd8fb3cd8eb1cc89b2cc85b0cd8bb2ce8ab2cc87b2ce8db2d188b1cc8bb1cc8bb1cc89 *b0cc8bb3ce89b1cd8db1cc8db2cd8ab1cd92b2cb90b3cd8eb3ce8cb0cd8fb4cf90b4ce90b6ce95 *b5ce95b4cd98b5ce92b4cd99b6ce95b7d094b6d08fb4ce94b6ce96b6cd95b6d194b5cf98b7d297 *b6ce8db3ce8db4ce91b6d18bb3d28bb5cd8eb6d18bb1cd8db2ce90b2cc90b4cc90b5ce8eb2ce89 *b3d189b2ce89b3ce88b3ce92b5d08bb3cf8cb4ce8ab3cf8eb4ce8fb3ce92b4cf91b5d195b5cf93 *b5ce89b1cc8cb3ce8cb5d18eb5d190b5d190b4ce95b6d091b5d192b7ce8db6ce90b5cf8cb3d089 *b2d087b0d18eb3d189b3d190b6ce95b7d190b5ce99b8d28db6d08db7d193b6d191b7d194b6d095 *b6ce94b8d193b6d194b6d18bb6ce95b6cf92b6d092b6d094b6d095b7cf8eb5cf91b5d091b5d192 *b4cf8db3cf97b8d192b6ce92b5d095b7d08db7ce8fb6d08eb2cd92b5ce8fb5cf8bb2d18db5d391 *b6cf96b6cd8db6ce91b6ce91b6ce8bb4ce90b6d28eb4d18db6d298b9cf92b7ce91b6d292b6d292 *b7d196b8d396b9d396b8d291b7d19ab8cf99bad294b7ce9cbbd3a0bbd3a1bdd4acc3d8b5c8d9b9 *cadab9ccdcbeceddc0cfddbfcddbc1cddec0ccdcc3cfe0c2cfe0c5d0ddbecddcb5c8d8a7c0d4a6 *c0d6a4bdd597b7d29fbbd49bbbd397bbd499bcd2a3bdd5a3bed6a9bfd6aac1d6a7c3d8a7c2d7a4 *bfd6a1bdd39bbbd397b9d397bad699b9d398b7d49cbbd697b9d299bbd59ebfd49bbbd399b9d2a3 *bdd3a0bcd39ebed3a8c1d6a6c1d6a8c2d7aac4d6b1c5d7b2c5d7b1c6d9b3c6d8b1c7d9b2c5d8b2 *c3d9b7c8dab9c8d9bdcbdac1ccdcc2cedcc2cddec2cddec1cedec3cedfc2ceddc5d0ddc7d3dfc9 *d3e0c9d1e0c9d2dfc9d1e0c6cfdec3cedec1cedcc1ccddc3d1dcc7d1dec7d2decad1dfcad1e2cb *d4e0c9d4dec9d3dfcbd5ddccd2dec9d3dec9d2e0cad3e1cad5e1cbd6e2cdd6e1ccd6e0c9d3dfc6 *d1e0c4cedfc3cedec3cfdec6d1e1c6ceddc4cedec4ceddc5cfddc5ccddc3ccddc1cddcc4cedfc6 *d0dfc7d2dec9d5dec8d3dec7d0dec3ccddbfccd8bfcbdac1c9d8c0cbd9c2cbdcbfcbd8becbd8c0 *c8d6bdc8d8bcc8d8b9c6d8b9c6d6c0c7d9bbc7d6b8c6d2bbc7d7bbc3d6bac6d4bbc5d6b8c6d6b7 *c3d4b6c2d4b7c4d6b8c2d3b6c2d1bbc3d6b6c3d4b8c5d4b8c3d5bac6d7b5c2d4b1c1cfb3c0d0b5 *c1d1b1c1d2b1c0d1aebed0b1becab1bdcfb1bfceb1c1ceb1bfceb0bbcbaebacbaab9cba8b9cba8 *b6ccabb6cda7b5caa4b1c9a6b3c9a8b1c79fb0c7a2b2ca9eb1c79eb1c69aaec69eacc19cafc695 *acc499aec697a7c393a6c396a9c297aabf99a7bc96a6be91a5c293a6c097aac492a6c095a6c193 *a5be91a4be94a5bd96a8c096a5bd96a7bf96a4c096a6c195a4bf96aac093a4be98a8c295a3c09c *a7c191a4ba92a8be96a9bd95a7bb91a8be94a6bf97a4c095aabf99a8bb97aabf96a8c196a9be98 *aac19aa8bd8ba5be93a7c09ca8bf9ca8c199aabe97a9c198abc197a9bc9caac099a7be99a9c195 *a6bd95a4bd94a7bc96aac292a7bd9baabe99a9c498a6c596a6c299aac298aac297a9bf9caac39b *a9c19aaac29eabc39dabc39facc3a4adc5a0adc39fafc39daec39dacc3a1aac19fabc4a4abc49f *aec5a1b0c79caac3a1acc29eacc39eadc29cabc3a2afc6a4b0c9a1b0c99fafc6a0aec4a0acc1a2 *afc5a1b0c5a1afc8a0acc49daac39dafc5a5b0c6a2aec49cadc1a4b0c5a6afc5abb5c6aab7ccad *b8ccb0bacab1bbccb1bcceb0bdceb1bdceb2bfd1b2bdcfb3c0d0b9c1d0bcc2d1c0c7d1c1c9d2c2 *c9d8c2c9d7c5c9d9c4cbd9c7cddac9cddbcbd0dbcad3d9ccd3ddcbd1deccd2ddccd2deccd3dece *d4e1ccd4dfccd4decdd2dcc7cfdbc3cbd7c1c8d7bbc4d4b7bfd2bbc0d2b9c0d1bdc4cfbdc6d2b7 *bcbac1cbcfc7d0d4cbd4daa4b7c9a9b8cda8b8cda4b5cca7b5cca1b4ca9eb2cc9bb4ca9ab1ca95 *b1cb95acc990aeca8aaecb92b1cb86abc781a8c47fabc979a8c77ea8c682acc980adca82adcb80 *aac985acc97ca8c876a8c773a7c772a5c877a6c77da7c87fa9c97faac977a9c875a7c777a6c677 *a8c67aacc77aaac782abc880abca7caac778a7c773a7c978a7c779acc876a8c875aac97baac980 *aac97ca9c884aacb7ea9c67eaacb78a5c686acc985a9c786a9c57aa8c67aaac881abc983a8c879 *a9c977aac77aa7c781a8c87aaac976a8c97bacca77a9c977a7c673a5c972a5ca7fabcb7eabcb7e *abca7caac97aa7c87ea9ca77a7c97fa9c97fabc981abca7aaac97cacca78aac97bacc981adcd7b *adcb6fa8cb81a9cb7ba9c681aecc83aeca7baccb8aaccc85adcc76aaca85abcb84accd87aecb82 *abc981adcc82aecd72a8c981accc80aacb7eabca82adcb7dadcb81afcd80adcb82adcc7dabcb78 *aaca78aaca81aecc7eadcc85aecb81afcd83adcd86aecb82accb80a9cc84aecc86adcb80afce7d *adcb84afcc8eb2cd85aecd85afcc80b1cf8bafcd84aecb82b1ce8ab1ce86b1cb84afce8bb0cd84 *aecc81aece86b1ce87b2ce8db1ce92b5ce87b2d08eb3d189b2cd87b1cd8cb2d089b2d08bb3ce88 *afcc8ab2ce8bb4d08db3cf88b2cf89b2ce8cb2cd89b0cc85adcd88b1cd8cb1ce8db4d08eb2ce93 *b4cc90b2cf98b7cf9bb6d197b6ce9dbad298b9d199bbd392b3ce98b6d097b7d192b5cf94b6cf93 *b7cf95b7d281afcc8ab3cf8fb3cc8db4ce86b2cd87b3cf90b5cc8bb6ce8db3d184b1ce8eb4ce8e *b2ce85afcc8db6d08ab3ce8bb7d38cb6d187b4cf8fb6d08fb4d08bb1cc8fb3ce8cb3ce89b5d088 *b3ce7fb2d190b5d18fb5d088b1ce95b5cf8eb5d183b2cf8cb5d18cb5d08ab5d08bb6d18eb6d392 *b6d18eb4cf8eb4ce88b6cf8bb4d089b4ce90b7d290b7d291b6d291b6d28eb7d091b6d291b6d28d *b6d188b5d08bb6d189b3cf95b7ce97bad38cb4ce8fb6d08bb4cc8eb7cf97b8d38cb5d192b7d394 *b7d091b6cf89b3d093b6ce8eb6d092b6d190b8d18fb4d191b6d08fb4d190b4d08ab5d08eb6ce88 *b2d089b6d090b7d393b7d292b6d190b9d191b7d094b6d190b6d291b6d393bbd38bb7d090b5d192 *b5d197b9d193bad392b7d28db6d290b9d190b6d28fb6d597b7d28fb7d398bbd39cbbd3a1bdd3a4 *c1d4a4c0d4a4c0d6acc3d8b4c7dcb6c9dab2c7d9b1c7d9b5cbdcb7cbddbacbdbb7caddadc3d9a4 *c0d6a6c2d59ebbd294bad299bad198bad491bad59dbdd69dbed7a4c0d5a6c1d5a3c1d6a4c3d7a1 *c1d79fbdd59fbdd69bbdd696b8d498bad396bad299bbd39cbdd396bbd29abbd699bcd49bb9d3a0 *bdd5a2bed4a4c1d6a2c1d6a4c1d4a1c0d4a6c2d6adc4d7b1c6d8b2c6d9b2c4d8b1c6d9b1c4d8b6 *c7dab2c6d9b3c7dbbbccddbecddec1cedfc1d0dfc3d0dfc3d0dec2cedec5cedfc3cfdec4d1dec6 *d3e0c7d3dec7d3decad4dec9d4e0c7d1dec7d1dfc3cfe0c2cedec4d1ddc5cedfc6d0e0c9d1e0c9 *d3e0c7d2e0c3d1e0c5d2dfc5d2e0c3cfe0c6d1e0c4d1e0c3cfdfc6d1e0c8d2e2c7d2e1c5d1e0c5 *d1e0c3d1dfc4d0ddc2d0dec4cfdec3cedfc3ccddc2cddfc3cedec0cdddc2d0dec5d1dfc5d0e1c7 *d3e0c6d1dec9d3e1c8d1e0c7d3dfc3d1dec3cedfc3d0dbc1ccdcc0cadcc0cbddc0cbddc1c9d9c0 *cadbc0cbdbbfcbd9bdc8dabbc7dbbbc7dbbdc6d6bbc7d8bbc7d7bbc9d8bbc7d3bbc8d6bbc6d6b8 *c5d6b6c4d8b5c2d4b5c1d2b7c3d4b7c4d5b6c4d4b3c3d2b7c4d4bbc6d8bac6d7b8c4d6b1c1d2b2 *c1d2b5c2d2b7c4d1b6c2d1b3c2d2b4c1d1b4c2d3b5c0d2b1bccfb0c1cfb1c0cfadbcd1aabbd1aa *b9ccaabbcda9b9d0aabbcea6b5caa7b6caa7b5cba7b5c9a3b4cba2b1c9a4b1c7a2b1c99aadc79a *aec69facc39aadc69eaec69badc59caac397a9c394aac08fa8c596a7c394a6c092a5bd91a6bf8e *a5bd94a6bc8da4bc93a5bf8aa5bd95a8c296abc294a9bf9facc398a9c393a7bd95a9c393a6c090 *a2bf90a6c496a5be97a9c196abc395aac394a7c096aac296a8bf8da6bf95aac199aac197a8c096 *a8c596a9c192a7c193a6c096a8c19aa9bf98aec695acc29badc495a9c199aac49aa9c494a7c094 *aabf95a9bd94a9c098aac29cabc49baac298abbf94a9c293a9c397a9c29aa9c094a8c298a9c29c *abc59caac39fa7be9cacc39caac297acc69eabc69eb0c59dafc9a0aec3a1aec4a4aec49eafc4a0 *abc3a0aec9a4b0caa4aec3a1aec59daec6a0aec4a2aec49caec39db0c49daec5a0aec5a1afc8a2 *afc59eaec5a4afc5a0adc69eb0c99fafc2a3b0c9a3afc7a4afc9a4b1c7a7b5c9a8b4c5a6b5cba6 *b2cba8b9cbaebbcfb0bcceb4bdceb1c1d1b3bdcfb3bbcdb1bccdb3bfd3b6c1d1bcc5d3bdc9d9c1 *cbd9c3ccdbc4cddbc6cedbc6ccdccad0dcc8d0dec9d1decbd3ddcdd3e0ccd3decbd4ddcdd6dece *d3dfccd4ddccd5decbd3dfccd4e0cbd2dfc7cedbc4cbdabdc6d6b9c4d2b9c2d2b8c3d2bbc7d6bb *c5d4b6bdc2c3ccd0c7d0d6cad4d9a7b3c8aab6c9a2b2cba1b4c9a4b1c99db1cc9bb3c997b0c796 *aec996aeca87adc885a7c47ca5c679a5c774a4c67da8c582a8c781a9c876a4c67ea4c57ea8c685 *a6c878a5c679a4c575a5c67aa7c775a2c476a3c677a2c57ba4c671a4c878a8c87eaac67aa9c679 *a8c677a1c679a4c678a4c679a7c786a8c77aa7c77da9c67ba9c77aa4c778a4c77ca3c77aa7c679 *a4c779a3c275a0c276a5c67aa7c782a6c479a4c679a7c674a2c380a7c582a7c775a5c77ca7cb78 *a6c678a5c781a9c879a3c380a5c679a9c773a4c77ea7c87ca8c781a9c583a9c683a9ca75a4c77c *a7c77fa8c878a5c77caaca7ba8cb81a9cb85a9c881aac77aaac87da7c777aaca7ca8ca82aaca73 *a9c97fabc880aaca7da8c67da8c97eaaca7caacb7ca9c77ea7c985aaca77a8c97babcb7ea9ca7d *a9ca83aacb7da8c982a9ca83aaca82abcd84acc97faaca85abc97ba9c685abc980a9ca80a9c981 *aaca84adcd7caaca83aac987abc987acca88abcb86adca83adcd80aacb83accb85adcd8aaecb82 *aaca82acc983adcc87aecc82abcb82aecc88adcc85aecb8baecb7dabcb86abcb80a9ca8bb1cc89 *adcc87adcc8caecc84aecb87aeca8bb1cc8bafcc8baecc91b2d08db1ce8bb2d18db2cd8bb0cc8c *b1cc89b0cb85afcb86b0cd89aecd8eb1cf8ab0ce90b1cc8aafcb89b1cb8ab0cb8fb1ce8bb1d094 *b1ce92b3ce98b2ce98b4cd9cb5ce94b5ce96b5d090b2cd96b4d196b6d193b3cf96b5ce96b6cc95 *b5cc93b5ce8eb1cd89afcc8bb1cb92b1cc93b3ce8cb2cc8caecd8eb2ce86afcc86aeca8eb1ce8f *b0cc8cb1d187b1cb8db2cd8db4ce8fafce8cb0cd94b3cd93b6cf88b2ce89b3ce8bb1cc8eb4cd91 *b3ce89b2cd88b1cc8cb1cc8cb3cd8cb1cd92b3d18eb2cd94b5cf87b0cc90b2ce8cb1cd89b6ce90 *b6d08cb5d090b5d197b8ce94b4cd90b2cc8bb2d087b1cd8fb5cf91b5d38bb2d18db4ce8db4cd95 *b3ce91b3ce88aecb91b5cd8fb3d093b6d194b8d291b3ce93b5cb8cb2cd90b1cc92b5cf8cb4cd92 *b6d18fb5d092b5cf90b5ce92b6cf8fb5d08db3cd91b3ce8fb3cf8bb3cf8bb2cd94b5d294b5cd91 *b4cf8eb1cd93b5ce96b4cd8db3cd8bb1cc8cb4cd90b4d191b6ce96b6d091b2d08eb4cf91b6ce8d *b1d192b6d38eb4d190b7d192b7d098b7d093b5ce8eb4ce91b5cf96b5cc96b8d197b6d396b7ce94 *b7cf9bb9d29cb9d398b7d19ab8d09dbdd599bdd49cbed59ebcd4a2c0d7a5bed4a7bfd7a6c1d6a7 *bfd69cbbd4a0bdd6a0bdd69abad49cb7cf9eb8d19db9d29cb9d1a0bdd5a1bdd5a6c0d4a3bed3a5 *c1d4a2bbd38db6d29cbad497bad399b7d095b8d699b6d290b6d09cbbd398b8d19dbbd39cbbd2a4 *bbd5a4bed1a6bfd6a4c0d5a8c1d4a4bed4a7bdd3abc1d7afc3d8b3c6d7b2c4d6b6c6d8b3c5d6b5 *c6d8b7c7d7b6c4d8b5c6d8b7c8dbc0cbddc2cddec2ceddc2cedec4d0dec4cfddc6ccddc3ccddc4 *ccddc6d1dec7cfddcbd1dfc8d3decbd5e1c9d1dec4ceddc3ccdcc3ccd8c3cedcc4cedec1ccdec1 *cedec1cddfbecbddbbc9ddbfcbddc0ccddbcccddbbcbdbbeccddbfcdddc0cdddc1cbddc2cedec1 *ceddc1ccdcc0ccdcc1ccdcc1cedcc2ceddc5ceddc5cddec3ccddc3cdddc5ceddc3cdddc6d0e0ca *d1dfc9d3e0c8d1e0c7d0decbd1decad3dfc4cedec5cedec3ccddc4ceddc5cbd9c2cbd8c3cbd6c2 *c9d9c1cad8c2cbdbc1cbdbc1c9d8bac7d8bfc9d7bac7d7b9c6d6bac6d5bbc6d6bdc6d6bbc6d4bc *c5d6bac6d7bbc5d4bac4d4b8c1d0b9c3d3b9c1d1b9c2d3b9c3d3bbc4d3bbc5d5bfc5d6bcc6d2b6 *c2d3b6c3d2b6c1d2b6c1d0b5c1d0b6c1d3b6c3d2b6c2d0b6c1d2b6bfd1b7c1d1b5bdceb3bbcab1 *bdd0b0bcd1b0bdd1aebaceabbacbabb6cbaab6c8a7b3c9a7b1c9a9b2cba2b2cba6b2caa5b1c7a1 *aec7a3b1c79babc3a0aec39faec79cacc497a8c49aaac492a9c398a7bc8ba5bf8fa4be94a4bd8d *a4c196a8c198a8c291a3c194a4be98a6be93a7bf94a4bd97a4bd8ea7c097a8c29aa7be92a8c098 *a6bc97a9be9baac191a7c18ea7c292a5c198a7c09aa6c599a8c19cabc199a8c19caac197a9c199 *a5ba97a9c09ba9c199aac59bacc19ba8c3a2abc399abc19ba9c09eabc29aabc29eacc69badc39a *adc19ba8be98a6bc98a5bf98a5c19aa5c199a9be90a7c19aaac29baac39aa7c19eaac59ba6be98 *a6c099a8c19daac49eabc69eadc3a0abc3a0abc1a4abc3a2abc6a2aec3a3acc4a2aec6aab0c5a4 *b0c4a0afc6a7b1c3a2aec7a0afc4a1adc3a2aec7a0aac1a4adc3a4aec4a5aec7a3aec4a3adc1a2 *adc5a1adc89fb0c9a3b1caa4b1c6a5b0c7a6afc6a8b0c7a8b1c6a9b2caa8b2ccaab3cdadb4c9ae *b6c9b1b6c9b1bacbb0bbceb1bcceb2bbcdb6bfceb7c2d0b8c3d2b6c1cfb6bfd0b5c0d2bac3d3ba *c3d5bdc7d8c1c9d8c1cbd8c3ccdccacedacacedccad0dbccd1ddcbd1dbccd2ddced5ddcdd4decc *d5e1ced2deccd1ddccd2ddcad1decacfdccaceddc7ceddc3cbdbbfc7d5c0c6d5c0c4d5bcc4d1be *c3d1bdc3cfb9bbbac3cacfc7cfd7cbd4d9a4b3c9a3b5c8a4b6ca99b3ca98b2c998b3cb97afc991 *afc894aec88facc885a9c77da8c479a7c581abc678a5c476a7c679a8c67ba9c781aac67fa8c67e *a7c67aa8c67ba8c672a6c67aa6c57da7c674a6c477a2c379a5c478a7c571a5c578a8c971a5c576 *a4c679a5c471a2c17ca6c577a9c776a8c772a5c57ca9c878a4c676a7c67ea8c67ba8c679a9c776 *a9c676a7c679a9c779a5c678a4c679a8c678a7c57aa4c46fa4c77ba9c778a4c67da4c574a5c575 *a5c57ba6c479aac686a9c686acc981a8c67ea7c678a7c778a5c672a5c580a9c67da9c781aac77d *a7c677a8c77faac884aac77caac877a9c87ca9c77aa8c877a9c682acc984abcb76a8c87aa9c67e *aac881abc782abc97caac980a9c782aac580aac675a9c780aac676a9c87caac985aac783acca83 *adc97aaac97eaaca7ca9c776a9cb7eaacb7faacb79aacb81accc82acc989b2cc81adcc7fa8c883 *abc985aecb88aecb83aac984aecb7facc884adc985adcb84abcb86adca86abcc7fabcb89aecb7c *accb85b2cb88aecb87adca88aec985adcd8aadcc8bb1cd8bb0cd89b1cc84b1cb85adcb86aecb85 *aeca8bb0cd88aeca89b0cc87b1cc83aeca8db3cb84aecb8fb3cb90b1ce8bb1cc8db1cd8db4d08c *b2ce8bb4cd8fb2cc84afcb8ab0cc8bb1cc88b1cc8fb5cf90b2d090b2cd8db3cc89b0cb91b3cc90 *b0cb8db0ce92b4cc93b4ce95b7cf92b6cd92b6cd8eb2cb92b3ca96b6ce90b3d08ab3ce96b5cd8b *b2ce95b5ce95b6ce95b2cb91b1ca8db4cd86b1cb8cb3cf8cb2d18bb0ce92b2cb89b1cb89b3cb87 *aecc8ab1cc87b2ce8eb1ce8bb3cd8cb5cc93b6cc8cb0cb8eb2cb8fb2cc89b0cb84b0cc84aecc8b *b1ce88b1cb91b5cd8bb2cc8fb4ce86b1cd90b1cd89b2cd8bb3cf89b2ce87b3cc91b6ce94b5cd92 *b2ce89b2cd8ab2cd93b5d08cb5ce8bb3ce92b6ce91b6ce88b2ca8bb2cc8fb5cc89b3ce92b8ce8e *b6d287b2ce96b6cf93b6ce8eb4ce91b6cc8fb4cc8ab6ce8ab4ce91b6d08db7d190b5cd8fb5ce8d *b2cc8eb3cc92b6ce91b5cf8fb5cf90b5cf8cb5ce92b3cc91b4ce90b6ce8bb5ce91b5cd93b4d192 *b6d191b4cf89b2cd92b6cd94b8cd96b7ce92b8d091b7ce86b3cc86b2cd8eb5d291b6d097b7d090 *b5cd91b5cd92b3d191b5ce92b7cf8fb6cf90b5d095b6ce90b5ce93b7d395b7d191b6d18fb6ce8e *b6d09eb9d290b5d098bad097bace92b7cf8eb4d08fb4cc8fb4cf91b5cf99b8d09abbd59dbad29e *bad29ebdd29cbad29ab8d099bad29abbd298b9d298bad39dbbd4a1bdd39dbdd4a4c1d6a5c1d5a4 *c1d3a6c1d49cbdd698bbd29cb9d395b6d196b9d298b7d397b9d19dbdd1a1bcd2a1bad19db9d3a3 *bcd3a2bcd3a7c1d4a4c0d3a3c0d39ebcd3a3c0d4acc2d6afc4d6b8c6d9b2c6d6b5c8d8b6c8d9b6 *c9d9b7c9d9b7c6d8b7c6d8b8c9d8b8c9d8bfcbdabeceddc0d0ddc1ccdcc3cedec5d1dfc6cedec6 *ceddc7d1dec5d2dec3d2dec7d3e0c7d1dfc9d3e2cbd3e0c6d1dec2cedac1cedac3ceddc0ccddbd *ccdbbacadcb3c7dab6c6d8b3c8dab4c8dab2c7d9aec5d8b4c8d8b8c9dcb9c9dab4c6d7b3c7dab6 *c8dbbfcbdcbccbdcbfccdcbfcdddbdccdcc2cdddc6cedec6cddcc3cdddc3ceddc5cfdec5d0dec8 *d1ddcad2dfcbd5e0cbd3e0ccd6dfccd6e0cbd2dec7d0dec3cfddc3cedbc4d0ddc3cddcc4cddcc3 *cedec3ceddc3ccd6c3ccd8c2cad8bfcad9c1cbd8c0c9d9bdc8d8bdc8d8bec7d4bbc7d5bbc7d6bc *c7d6b9c7d7b8c7d6b9c7d4bac5d5bac4d5b6c3d4b7c4d2b6c4d0b6c5d4b9c5d4bbc5d6bfc6dabb *c5d6bac3d3bdc4d2b8c4cfb8c4d2b5c3d0b9c4d3b9c2d1bcc3d3b7c4d5b6c4d5b6c6d2b6c5d1b1 *bfcfb4c1cfb4c0ceb1c1d2b3bcd0b0beceafbbccaebbcbadbeceadb8c8aab8cbaab7cba4b5c9a4 *b5cba6b7cba3b5c7a3b1c59eaec39aaec598aac599adc69aacc698abc596aac498abc298a7be98 *a6bd98a8c192a7c393aac393a6bf95a7c092a8bf98a6be96a9c298a9c399a9c295a9c198a8c496 *aac192a9c199abc39caabd93a4be98a7c295aabd96a7c19aabc397a7bf9babc09aadc499acbd9f *b0c298a5bb9ea8bba0aabf9daabf9aadc39cabc29cabc2a0afc29fadc19dacc29eadc29aaac49c *abc29aa9c39eabc299aabe97acc09aa9c39baac49aa9c19cadc2a0aec19eacc2a0afc39daec39c *aabe9aa7bf9baac49daec49ca8c09eaac19daac3a1acc1a1adbfa4afc6a4aec1a8b0c4a3acc3a2 *b0c4a2b2c9a0b0c5a9b1c1a7b3c3a5b1c7a9b1c9a3b3c8a9b2c5a6b2c6a3b3c8a6b2c7aab1c6a4 *b0c3a7b1c8a2afc8a4b2c7a4afc5a5b3c8a9b2c9a7b2cbabb3c7acb8cbabb7caabb8cba9b8ccae *bbcbaebaccb0bbccb2bdccb4becfb8bdcdb3becfb6c1ceb9c3d1b9c1d4bdc2ceb7c3d3bac3cfbd *c3d2bdc4d3bdc7d3bdc7d8c1cbd5c3cbdac7cedcc9d0dbcbd3ddcdd3ddced5dfcdd5deced6ddcc *d3deced6decfd3deced5dbccd4ddccd4dcc9cfddc6cedcc7cedbc5ccdbc2c9d5c3c9d4c2cad6bd *c6d2c0c7d2bdc5d2b7bcbcc2cacec8d0d5ccd4d8a3b6ca9fb2cb96b2cc94b1cc92aec992acca8b *aec88aadc78aacc985aaca7da6c77da4c87ba7ca78a4c775a4c572a5c678a8c876a4c673a4c47a *a6c677a4c874a5c879a4c67ca6c785a6c67ba5c676a6c672a3c874a4c774a4c774a3c775a0c479 *a5c776a4c773a5c671a1c66fa1c479a8c77da8c981a8c876a1c473a3c478a5c675a5c777a6c780 *a8c87aa7c771a3c676a3c672a5c670a3c57ba5c777a4c67aa5c775a4c77daaca81a6c984a7c777 *a5c676a6c672a2c57ba4c77ba8c980a9c772a5c684a8c781a9c97ea6c87ca9c875a5c87ba7c779 *a5c679a9cb79a9ca81abcb7fa7c775a8c879a5c775a6c97da9c878a7c981aac779a9ca74a7c87e *a9c97ba5c883aac980a9cb7caacb73a7cb75a9c986accb7faaca76a8ca76a8c97eaac97da9ca80 *aacb7eaaca80aacb7baacc73a6cb79a8cb82abca7dabcb82aacb87abcc7aaacb7daacb84aecb86 *adcb7faacb7eabca83aacc83acca7daccb7eabca85aecd85adcc8aadcc81accb7ca9ca7faaca81 *adcd83accc81accc8aaccb87aecb81abcb84accc83accc83adce87aecb86aece81adcc85adca8a *b0cd87b0cd85b0cc81aecd89b1ce87acce87adcb8db2cd87aecc86b0ce8db1cd8fb1cd91b3d191 *b1cd86b1ce89aecc86adcb8cb0cd8fb2cf89b2cd84aecc8bb1ce8db1cd8cb1cc8ab1cc84aecb8d *b2ce8cb1cc91b5ce91b3cc94b4cb91b2cd8cb0ce8ab1cd87b0cd8fb1cf91b2d090b2cf8db1cd95 *b6ce93b3ce90b3cd91b3ce87b1cf8bb4cf8fb0cc8eb1ca8bb1cc85b0cc8ab2cb8cb1cd87b1ce86 *aece84aece8ab1d08bb0ca86b0cd8cb4ce8ab1cd85b1cf89b0cf88b1cf89b0ce8db3cd8db2cc88 *b1cd8ab1cd87aecd8bb2cd8bb2cd88b0ce8ab3cf8cb4cf8ab2cd88b2cd85b0cf87b0ce87b1cf8f *b3d189b2d190b6d08ab2cf8ab3cf8cb2d08ab1cc8ab1cd91b5d08db3cf8ab1ce91b5d096b6d18e *b6ce8eb1cd87afce8eb2cb8bb0ce8db4cf8db5cf91b6ce8db4d092b5d092b5d090b6d18eb3cf8a *b3cf8eb4d08fb3cf93b6d18eb2d08db4d18db2cd8ab4d088b1ce8fb5d188b5d18bb4ce8cb1ce87 *b1ce8db4d08cb3cd86b1cd89b5cf90b6d395b6d191b4ce8eb4cf87b1cd8db5ce8eb3cf8eb4ce8d *b4cf8fb4cc96b7d396b6d28cb2ce96b5cf95b6d089b5d293b9d38fb5d091b2d198b6d198b6ce90 *b5ce8eb6ce8db6d195b6d297b8d398b8d392b6d295b5d092b4d095b7d295b6d192b6d198b7d298 *b8d39cb7d39ab9d495bad29db9d29bb9d29bb9d3a3bcd3a2bdd4a2c0d4a7c1d6a5c1d6a3c0d6a1 *bdd3a3bdd6a0bdd396b7d39ab8d297b6d29fbbd392b9d59ab7d3a0bbd3a2bdd3a4bbd59dbcd49d *bbd6a3bcd4a2bed4a5c0d6a4bbd4a0bbd3a3bed3a4bed3a6bfd3adc4d7b6c7d7b5c7d9b6c6d8b4 *c6d9b2c6dab0c5d8b6c5d8b6c7dab9c8d8b9c7dcbecbdebfcddec3ceddc1cdddc2cedec4cfddc7 *cee0c7d1dfc6d0decbd2dec7d0dbc7d0ddc6ceddc6d0dfc4d0e0c3cfdec1ccdebdc9dcbeccdcbe *caddbac9dbb9caddb6c8dcb3c6dbabc2d9aac2d5aac1d6adc3d8b1c3d6aec3d8b4c7dbb5c6dbb2 *c4d9b7c7dbbacadbbbcbdcbecddebccbddbccadcc0cbdcc3cddec1ccdec2cbddc1cbddc6d0dfc6 *d2e0cad3dfc9d2e1cbd4e0ccd4e1cbd6e0ccd4e0cbd3dfc7d0e0c7d0dfc7cedec4cedec6cedcc7 *cdddc6cfdec4d0ddc3cedbc3cedcc6ccddc1cbdbbac8d9c1cadbbec9dbbbc6dbb9c4d5b8c6d3bc *c7d8c1c7d6bcc7d8bbc6d6bac6d6bac5d5b8c4d5b7c4d5b7c3d3bbc5d5bcc4d6b9c5d5bbc4d8bb *c6d7bac6dab7c6d6b9c6d4bac3d3b8c3d4b9c3d2bac6d4bbc6d5bbc6d4b7c5d5b7c4d6b6c3d4ba *c1d6bcc3d4b8c4d4b6c3d2b1c0d2b1bfd1afbcd0aebacdafbbccafbaccafb9ccabbacbaab9ccaa *b9cba6b8cba5b1c9a0b1c8a2b0c99eb0c69bb1c79badc69cacc59dadc69aa9c395a8c298aac29a *a9c495aac296a7bf95aac292a8c090a6c396a8c294a4be8fa3bf94a4c197a8c599acc596aac29a *aac593a7be97aac097a9c198aac192a5c396a9c599aac699aac4a0aec099abc69eabc79baac49d *acc699acc59fabc49aa9c19faac2a1aabfa3adc59cafc6a1b1c6a1afc7a1b1c89eadc6a1afc6a4 *aec59da9c39eaac39eabc69bacc49babc69cacc89eb0c79cacc39baac29cacc29eabc49fabc49d *acc59faec79facc19faec39dadbfa3acc699a9c1a3adc6a1adc3a8afc7a2aecba4b1c99cb0c6a4 *b1c7a4b1c3a4afc6a2aec8a4afc8a2afc4a4b0c8a8afc7a4b4caa5afc9a9b1c8a8aecaa7b1c8a5 *b3caa5b2caa3b3cbaab6caa9b5caa6b6caa9b1c9a9b2caa9b5cba6b4cba9b8ceaab7cbacbaccb0 *bccdb4bcceb6bccfb4bed1b6bdcdb6bfd2b2bfcfb6c1d1b9c2d1b8c2d2bcc3d2bec3d3bec5d6be *c6d4bdc3d4bbc7d5bdc7d9c1c6d6c3c8d8c3cadbc9ccdbc8cedccacfddccd4e0ccd4deccd6e1ce *d5deced6ddced6deced3dcccd3decbd3ddcad1dec9cfddc7cfdbcbcedbc8cddbc4ccdac2cbd9bf *c8d8bec7d7bec6d7bdc7d5bbc0bcc3cacfc8d0d6ccd3daa0b1c79eafca96aec889a7c58baac88d *a9ca8daec986aec57da6c278a7c673a1c66da1c573a4c677a5c575a4c572a5c672a8c478a4c776 *a4c677a4c272a5c57da7c877a4c974a7c679a6c67ba5c67ca5c77ba4c671a3c577a5c776a3c679 *a8c878a6c773a4c473a3c475a5c47ba6c677a4c673a4c37da8c779a9c77da8c876a5c778a5c573 *a4c870a6c670a4c678a5c67ca6c96c9fc67aa6c97ea5c37ca7c67aa8c880a8c770a7c779a7c674 *a4c375a4c379a7c66fa3c37ba8c77ba5c673a3c677a4c675a5c675a4c86fa5c77ea9c978a7c777 *a6c67ba8c97ca6c97aa7c97da7c87ca7c881abca82aac87aa9c575a8c776a7c77da8c67ea9c877 *a8c87aaac885adcb79aac97faac77aa9c980aacb7ea8c976a8ca7ba9ca7caaca82a9c885aac67e *aacb7eaacb7ea8c779a9c97aa9c982abc97faac97daac983abcb79a8cb7ea9cb85aacb81aacb7f *abcb80abca85aecb78abca79aaca7faac983aec980aac980a9c981aac888aecd81abca80aecb78 *aaca74a9c97faaca83adcb82adcb7baac97eaaca80aecc81aeca82adcc7fabcb87afcd7eabca82 *abca86acc982b0cd85aecc7dabcc81aacb85accb90aeca8ab1cd91aecb92b2cf8ab1cc95b3cc8d *b4d08bb2ce91b4ce85b1ce8cb1ce8db1cc91b2cd8eb2cd86b2cd87b1ce8baecd8bb0cd8bb0cd89 *aecb89aecb90b1cd92b1cf87b0ce92b5ce89b2cc8ab1cc8fb1cb89afcb8fb1cc91b5ce8bb3cd8a *b4cc97b8ce95b5ce90b3cd8ab1cb8fb2cb8cb1ce8bb1cd90b2cc83b0cc80b1cc87b0cb87b1cb8b *b3ce8db1cd93b4ce8ab2d08ab1ce8ab1cd86afcb87b0ca88b0cc8cb2cd84b0cc83afcc86b1ce88 *b1cd8cb3ce89b0cd85b1cd8ab2cb8ab2cc8ab0cb8cb2cf8ab1ce8ab1d18ab1ce8ab3cc87b2cc85 *b2cc8eb3cf85b3ce96b4d18fb3cd85b2ce89b0cd8eb5cf8cb3cc82b2cc87b2cf88b2cc8db4d38c *b5d28fb3d083b0cc85b1cb8ab3cc85b1cc89b1ce8bb5cc8bb2cd89b4d18eb5ce8db4d090b5cf8e *b6cf8cb2cd89b3cc8db2cf8db3cf8eb3cf8eb4cd89b4ce8bb4ce89b2cd8db2cc90b5cd8bb3cc8d *b3d093b6d08eb2cd91b5d18ab4ce90b5cf90b5ce92b6d190b6d191b6d188b4cf8db4d08ab4ce8b *b3d091b4cf8cb5ce8ab3ce8fb4ce8fb6d190b6d095b7ce8eb6d091b6ce8fb5cd8db6cf8eb2cf93 *b7d192b7d18fb5cc95b7d092b3ce95b6ce94b6d18fb6ce91b7d293b6d194b6d18fb6cd93b6ce98 *b8d298b8d097b7d394b5d094b5d094b9d19abad3a0bcd4a1bdd3a4bbd4a4bfd5a8c0d4a1bdd6a6 *bfd79dbad5a2bdd399bbcf9cb9d397b8d29bb8d397b8d19abbcfa2bed6a3c1d7a6c1d3aac1d4a8 *bfd3a5c3d6a7bed69dbcd39dbbd2a4bdd5a7c0d4a8c3d5a7c3d5aac3d8b3c4d7b7c7d7b6c7d8b8 *c9d9b2c6d9b5c8dab4c7d7b6c7d8b5c3d7b5c5d7bccadcc0cbdcc3cedfc4d1dfc2cedec4cfdec4 *cedbc6d1e0c6d1dec6d0dbc5d1dec6d1dbc5d1dfc6d1dec4cedec3ccdec3ceddbdccdac1ccddbe *ccdabdcbdebccadbb8c9dbb4c7d8b1c5d8adc0d5aec3d4b0c3d7aec6dab1c5d9bac5dbb7c8d9b7 *c9d7b4c6d8b7c8dbb9cadbb9cadbbbcbddc0cbdabdcadbbfccddbfccddc1ccddc2ccdcc2ccddc4 *cedec9d1decad4e0ccd4e1cbd6e1cbd6e0cdd6e2c9d4e2cad2e1c9d1e1c6d1ddc7d1dec8d3dec5 *d1dec5cedcc5d1dec6cfdcc6cfddc3ccdcc6cddbc4ccdec3ccdbc1cbdcbccad9bcc8d8bbc8dbbb *c9d9c1cad5c0c9d8becad6bec9d6bbc7d7bac5d3b7c5d5b8c4d3bcc5d5bbc4d4b9c4d2bbc5d6ba *c7d7bbc6d8bbc5d7b8c5d4bbc5d4bcc6d4bbc3d3bbc3d4bac5d5b9c6d7bbc7d8bac8d6b6c3d3b9 *c6d5b8c6d6b9c4d3b9c6d4b6c3d5b3c3d3b2c3d3b2bfd1b0c0d1afbbd0afbdceaab8ccaebacdad *b7cbadbacdaeb7cba9b4cba4b1c9a2b1c7a5b1c7a0acc49faec79facc69cadc699adc299a9c09a *acc397aac298abbf95aac299abc392a8bf95aac398aabf97aabf94a7be96a9c697a9c598a9c19e *a9c393a9c399adc19aadc699aac59eabc599aac499aac69aa8c197a8c197adc19cadc49eacc299 *abc29daec49facc1a3acc59caac1a2abc59dacc39eb1c6a2afc6a0b2c7a3b1c5a7b0c6a4b0c6a3 *b0c6a3aec7a1adc69dabc59aa8c19baabd9eafc3a0b1c5a3adc6a3adc79dafc79dacc4a0aec69d *aec59babc39eafc39fabc5a1b1c79faec89caec7a1aec4a0afc6a3adc3a4aec5a4b1c7a9b1c9a2 *aec9a7b6caa4b6caa5b6c6a3b1c9a7b4caa4b3c5a6b2c7a8b6cca3b6c6a8b5c9a4afc3acb6caa6 *b6ccaab6cbaab6cbabb5ccabb6ccacb9cdaabbccaab8caacb9cbacb8cbaab7c9adbaccafbbd1b4 *bdceb6bdd0b4c0d2b5c0cfb3bed2b6bfd0b5bfd1b5c0d3b9c3d2bdc6d3bdc3d3bdc6d4bfc9d4bf *c3d3bdc6d4bec2d3bcc3d6bbc4d2bfc4d6c2c9d7c2cad8c6cedac8cfdbcbd0ddcbd3ddccd2ddcf *d4e0ced6dfcfd6e0cfd8e0ccd4decdd4dec9cfdbc9d1ddcacedcc7cfddcbd0dccbd1ddc9d2ddc5 *cddac0c9d5bfc6d6bfc6d4c2c8d1bac0c4c5cdd3c7d2d7cad6d993adc791acc382acc781a8c679 *a6c57aa4c378a5c46ea1c576a1c379a7c474a4c373a3c56da2c56ea4c56ea3c46d9dc47ba7c781 *a8c775a4c576a4c376a6c572a1c573a5c776a6c772a2c672a3c575a4c47eaac66da1c26fa2c46c *a2c675a5c673a4c772a2c674a4c674a2c572a3c471a7c674a4c673a4c672a4c676a4c66fa3c676 *a4c770a2c776a5c76fa4c672a2c373a5c576a5c776a4c476a3c678a5c57aa5c773a3c774a5c575 *a4c380a8c67aa4c678a3c773a1c77ea4c872a3c476a4c572a2c66fa2c572a2c672a3c57ba5c673 *a1c574a5c573a6c473a4c673a1c57ba7c77ca6c67ca6c77da8c780a9c679a7c97aa6c881a8c77c *aac772a6ca72a6c875a4c57ea9c678a7c874a7c780aac779a9c776a7c77fa9ca73a7c872a5ca7d *a8c77ca7c675a5c67ea8c674a7c880a9ca7fa9cb7daacb80a9ca7ea8c774a8c981aaca76aacb73 *a6ca7baacb7aa6ca7ca8ca75a9ca7caacc83aac87eaac87fa8c97fa9ca7faaca82aacb7da9ca7b *aac97faac982accb85acca7eaccc7faacb7faac97eabcb82afcd80afcb7eabcc81aac982accb80 *abcc7eaacc7da9c880abcc7bacca79aac982accb80abcb86adcc87aecc89adcb91b0cd90b1ce97 *b4cf97b3cf90b3ce93b1cd8bb1cc92b2cc8cb1cc84b0cd84accb87afca87afcd88aecc89afcc88 *accb85acca8ab0cc86aecc89aecb85adcd89adcb87b0cd8eb1cd86adcb8bb0cb85b0cc84accb82 *aecb90b5cc8db0cd92b3ce8cb1cd8db1cc8bb0cc85b1cc89aecb8cafcb81accb83acca86aecd8b *b1ce8bafcb83afcc82abc987b1cc87b1ce88aecc8ab1cc8bb1cc7faecb85afcc85afcc81aecb87 *b0cc89afcc88aecc8bb4ce85afcd88b0cc88b0cc86afcb84aecb8cb1cd8eb1cd8cb1ce8fb3cf86 *b1cd85afcc84aecc8ab2cf8eb2ce84adcb86b1ce8bb1cd86b4d184b0d087afce8bb3cc86aecb8b *b1ce86b1d188b1d087aecc85adcc86aecd8ab1ce8bb0cc89b1cc8ab1ce88b2d089b1ce8db3cf8c *b0ce8fb4ce88b1cc8eb2cd89b4ce8bb2cd8eb4d08eb4d18bb3ce93b4d08ab1cb86aecb89b3cb8d *b1cc8cb1cc8ab1cd90b3ce91b3cf90b3ce8cb4ce8eb3cc8eb4cd90b3ce88b6ce88b2ce8cb2d096 *b7d38db4d18fb4ce8eb5cc90b5ce8fb6ce8eb5d08ab2ce8cb2d195b6d191b4cc8cb3ce8cb2d191 *b2cc95b6ce97b6cf92b3cc8db3cd91b6d08eb3ce8fb4cd95b6d08fb6d08fb3cf8fb4d094b5d08c *b4d197b6d194b9d298b8d197b5d094b4cf96b6d099bbd296b8d499b7d39eb9d29cb8d19cbbd4a6 *bed59cbdd4a3bed5a2bdd39bb9d292b6d293b7cf94b6d19cb9d09fbdcfa2bbd1a3bdd4a7c0d8a9 *c1d8a9bfd6a6bfd3a3bed59cb9d09fbbd398b8d3a4bed5adc1d6afc4d6b5c6d8b6c6d7bbc8d7b4 *c6d8b4c6d7b5c6d8b2c5d7b1c4d8b3c3d8b1c4d7b5c5d7b9c9d8becbdbbeccdcc2ccdac3ccddc2 *cddec3cedfc6ceddc7d1ddc7d0dec8d1ddc6d1dbc1cdddc3cedec3cedec3cedebdccdcbac9d8bc *c9dbbdc9d9bbc8dab9c7d8b3c4d8adc4d8b2c7d9b0c3d8b6c6d8b7c6d6b6c8d6bac6dabcc9d9b8 *c9dbbac9dbbacaddbdcbdcbdcad9c0cadbc0cbd9bdcbdac0ccdcc0ccddc0ccdcc3ccddc3ccddc5 *cedcc6cedec7d1decad2dfccd3e1cdd5e2ccd7e2cbd4e2cbd3e0c9cfddc7cfdfc9d2e0cad1dec9 *d1dec9cfe0c9d2ddc6d3ddc9d1ddc7d0ddc6ceddc5cedcc2cbdec3cbdcc4ccddc0cbdbbec7dbc0 *c8d4c0c9d8bcc8d8bfc7d8bfc9dabcc8dbb7c5d6b9c3d4bac5d3bac6d6bbc6d8bdc6d7bbc6d5bc *c7d4bbc5d5bcc6d6bdc6d6bec6d5bac3d5b9c4d4b8c4d3bbc6d5bcc6d6c0c7d6bdc7d5b9c7d6ba *c6d8b9c3d5b3c3d3b5c3d5b9c4d3b9c5d6b7c6d5b4c3d1b5bed1b1bdd1adbdcfaab9ceacbbcead *bbcca8b7ccaabacdaabac9abb6cca4b3cea4b1c8a4b2c8a3b1c69cb1c89eb1c89dafc79cafc89b *aac099abc599a9c295a7c595aac692a8c396a8c094aac397a8c093a4bf91a4c297a9c499acc393 *a8c09ba9c28daac697adc398a9c397a7c495aac194a8c191a7c595a8c195a8c198aac69baac39f *acc69eadc39ba9c39cabc299aac19caec99fb1c79eb1c7a2aec6a4abc2aab2c5a8b5c8a0b0ca9f *b3c79fb0c99fafc69dadc79daac69ba8c59daac59fadc5a0adc39facc5a4adc7a2aec7a0adc8a0 *b0c39cacc3a0acc2a3adc59faec69facc6a1aec4a1afc39eaec59faec8a0aec89eadc7a4b1c99f *afcaa6afc9aab2c9a6b4caa6b2cba9b2cca6b3cbaab3c9a6b1c7a7b6c8a4b5c8a9b1c7a4b2cbaa *b2caaab6ccaab9cdaab7caaab6ccacb9ccadbbcdaab9cdb0b6ccafb6ceafb8ceafbacbb1bbceb2 *becfb4bfcfb8c0d1b5bed2b6bcceb6bfcfb6bfd0b9c1d1bbc2d3b7c3d2bdc6d7bcc7d5bfc7d4bf *c7d5c3c8dac3c9d9bdc8d5bec8d4bdc8d7bdc7d8c1c9d8c6cad8c9ccdbcacedbcad1ddccd3decb *d1dccdd2dccdd4e0ccd4dfced5e0cdd3decad1ddc6cddbc7cddbc9cfdcc9cedacbcfdbcad0ddc9 *d0ddc6cddcc0c9d9c0c7d4c2c8d5c0c6d2b8c0c4c4cbd0c8d2d7cbd5db87a9c37ea5c281aac675 *a5c481a4c676a3c17fa5c475a3c578a7c67da4c47ea5c977a3c779a4c472a1c36e9fc27ea6c472 *a3c47da7c67ea7c773a4c685a7c672a5c66fa4c578a5c677a5c576a4c674a3c570a4c777a5c578 *a6c774a4c57ba8c778a6c579a7c77aa4c577a4c780a5c777a5c673a4c76ca4c578a7c56fa1c473 *a3c475a4c77ba8c876a4c57da8c979a8c770a4c368a2c478a7c677a7c66ca2c676a3c57aa8c672 *a4c378a6c380a8c67ca8c672a4c474a3c479a4c77aa4c67ca3c57ba9c772a7c674a6c570a4c570 *a4c572a3c67da7c675a4c679a7c774a5c778a6c676a4c572a6c676a7c670a5c677a8c679a6c680 *a9c97ca9c977aac873a5c674a4c575a4c481a9c775a9c772a6c979a7c971a6c67eabc777a6c678 *a8c67da9c67eaac978a7c97eaacc81aeca74a8c681aaca81a6c982a9c780a8c77fa9cb86acca7b *abcb7eabca81aac97da9c77eaac980a9c880aac97fa9ca80abca79a9c97daac97faac981aaca81 *a9c97aa9c882abcb81aaca82accc88afcc87aeca83acca83acca81aacc80aacb7daacb85acca81 *acc982acc983adca7eaac984abc983accc80a6ca84abcb7faccb85aecd84aec98bafcb88adc98d *b1cc8eadcc92aecc83aece90b3ce8ab1cc89aecb83adcb81abcb85aecb82acc988afcb85aecc8a *b1cc91b3cd89b3cc86adcb8baecc86aecc8aafcc8eb0ca86afca88b0cc87b0cb88b1cc8caeca8c *afcb8cb1cc8aafcb8bb1cd92b1cc8cb1cd8bb2cd8cb1cb8ab1ce8cb2cd89b0cb88afca87b0cb87 *b0ce86aecc8bb0cc8bb1cc82aeca83aecb87b0cb8aafcc8bb1cc8bb3ce93b4cc90b4cd85afca85 *aeca8db1cb87b0cb83aecb85aecd89afcc8bb1cc8ab2cc86b1cd84b0cd8cb1cc85b1cf8cb1cd92 *b3cd8db3cc8eb3cc89b4cf8fb3cc81b1d089b2cd89b1cc8bb4ce8cb1cc8fb1cc91b2ce8ab4ce87 *b1cd83b0ce89b1d08cb2ce8cb1cc83b0cc85b1cc87b1cd87b1cf85b1ce86aece8db4ce8fb2ce8c *b4cc89b1cc8eb4cd8ab5ce8bb2cc90b3ce8db2cb8fb1cd88b1cd8cb3cc88b3cd87b3cf89b3ce89 *b2cf8cb3ce8cb0cc89b2ce8db4cf8db4d089b3ce8cb6d08fb6cd91b2d190b4ce87b3d083b2cd92 *b5ce92b5d18db5d195b6cf91b2cc95b2cb92b4d08db2ce91b4ce96b8d18eb4d398b6d192b5ce8d *b3ce87b2cc91b5ce92b5ce8cb3cc94b6ce96b6d192b6d195b8d18fb6d092b5d08fb4cf93b5ce90 *b4ce96b4ce97b6cf99b8d198b8d196b4ce98b5cd94b7cf99b9d199b7d293b7d395b6d29eb9d39e *bbd39ebdd39ebed3a3bed39cbcd39ebad199b9d297b8d19fbad4a2bad2a5bed4a6c1d7a5c1d6a4 *bed4a3bed2a9c0d5a8c2d6a2bdd498b7d29abad19abad1a1bad2a8bfd5aac2d5afc5d7b2c6d9b9 *c7dbb6c7d9b8c7d8b6c7d8b1c7d7b2c3d7b2c5d6b6c5d7b6c6d9bccadabecbdcc2ccd9c3cedcc3 *ceddc6d0dec6d1dfc6d0dfc7d1e0c7d1e0c9d1ddc7d1dcc6d1dec1d0ddc6cedec0cbddc0ccdbbb *c9dbc0cbdbbac9d8bccbd9bbcad7b6c6d5b4c6dab5c6d8b8c6d9b9cbdbbbcad7bfccdcbeccdabb *cbd8bbc8dabdc8d9bfc7dbc1ccddc0ccdcc0cddcc1cddbc0ccdcc1ccdbc0ccdbc4cdddc4cdddc4 *cdddc7cfddc8d3ddcad2dfcbd4e1cdd6e1cfd7e1cfd7e2ccd7e0cbd7e2ccd6e0c8d1decbd1deca *d1decad2dfced3e0cbd4e0cbd3e1cbd3e0cbd3dfc7d1dec6ceddc7cedec6cedec6cddec2ccdcc1 *cadcc1c9dbc1cbd8c1c9dabec9d7bbc7d7bbc8d7b6c4d5b7c4d5b9c5d4bdc7d5bbc8d6bfc7d6bd *c6d5bdc9d7bcc7d6bac5d6bdc6d8bbc7d6b9c6d5bdc6d4bcc6d5bec6d5bfc8d7bbc9d6bec7d8be *c8d6bbc7d7bec7d4bcc6d6bbc4d4bac5d3b8c3d3b9c6d5bac3d4b6c4d6b6c1d0b4c1cfb1bdceaf *bad0adbbceadb8caaebacbadbacfaebbd1abb6cbaab6c9a4b1c7a4b1c8a1b1c89aafc89eacc69d *afc7a0aec59db0c39ab1c699abc59bacc497abc599a9c398a8c294a8c298a5c292a7c195a9c495 *aac499a9bf97a9c191a7c595a9c39ca9c09aa8c19aaac192a9bf98a4c399abc39cacc09baec59d *acc19babc59caec2a2aec49dabc19aacc39db1c99eaec4a0b0c7a0aec8a4aec6aab6c8abb8cdaa *b4cba8b4c8a5b3c9a3b4c99fb0c79facc6a1aec6a4adc2a4b2c7a2b0c8a1b0c7a5b1c9a3b1c8a2 *b0c8a2afc9a5b2c7a7b1c6a6b2c7a3b0c6a2afc7a2afc7a0adc3a1aec7a4aec4a5aec7a8b1c6a7 *b4ccaab6c9a4b6cba7b3caa9b1c7abb9ccafb8ccaeb9cbb0b8cbacb7cbacb7ccabb6c9aeb7cbaf *b9ccaeb7c7afb9ceaeb9caabb7cbafb9cdafb9ccb2bbccb0bbccb2bdcdb0bdcfb2bbcfb5bdcfb5 *c0d1b5bdceb2bfceb6c0ceb9c0ceb9c2d1bbc5d1bcc6d5bcc3d6bbc6d8bbc4d5bdc7d1c0c6d5c1 *c7d7c4cad8c6ccd9c4cadac5cbddc3cad9c0c9d5c2c9d6c5cbd8c7cedbc9cfdccad0dbcbd1ddcc *d3dfccd3decdd3decbd3dccbd4decdd5deccd3dfc9d3decacfddc8ceddc9d1dbcad1dbc8cfdcc5 *cedcc3cbdbbfcbdac1c9d8c3c9d9c4cad6c2c8d2b8c2c3c4cdd1c9d1d6cdd6da74a2c281a5c375 *a9c871a5c474a6c576a5c97ea4c679a5c779a6c676a6c773a5c778a2c576a5c778a6c775a4c376 *a7c773a3c768a2c573a4c67aa9c770a3c774a9c76ea3c66fa6c766a2c671a3c672a4c671a4c675 *a5c675a7c773a4c76ea4c776a6c671a6c774a7c670a5c673a6c663a2c477a6c677a7c772a4c672 *a4c574a4c473a4c678a7c66fa4c573a4c76fa4c673a4c576a5c475a6c874a5c673a5c777a4c677 *a7c773a7c781aacb78a6c874a5c673a9c776a7c677a7c76fa7c772a7c674a6c682aac778a9c86f *a3c676a9c875a6c66da2c572a7c672a5c76fa7c97ca8ca6ea4c76ca4c673a8c773a5c675a7c877 *a8c777a8c778a9c777a6c674a6c675a9c778a9c972a8c97ba7c781aac77da6c973a6c87ba8c871 *aac776a8c780aac781aac67da8c979a8c776aaca7eaacb7fabcc78aaca78a8c57dabca81aaca75 *a7ca72a7c97cabc981aeca7caccc79aac875a9c77aa8c977a7c880aac97cabca81acca7fadcb7e *abcb79a7c676aac87fabca79aacb7dadcc82accc82acca80accb83abca7eaac980adcb81abc982 *abca85adcb73aac981accc82accb7ca9c97daacb82accb89aecb7ba9cc75a7cb78aac980abcb81 *aacb83abca77aac981adcb82adcd81aecf81accc84adcb83adcc7faecc86b0cb85b1cd83afcd7f *aecc80aecc89b2cd7eaece85afcc84b0cc8bb1cc88b1cb89b1cc85afcc88b0cb85b0cb87b0cc89 *b0cc82b1cc84b0cb85afcc82aecc89aecc8ab1ce8bb2cc86b1cb8bb6cc8bb2cb83abcb7facc981 *aecc88b1cb8ab1ce84b1cd82accc8ab3ce81b0cb85abcb85afcc8ab1ce86b3ce7daecb82afcc89 *b2ce84b1cd86b1ce89b0cc87b1cb8bb1cb84b0cd83b0cb86afcd83adcb83afcb87b0cd89b0cb85 *b0cd86aecc8eb6d08bb4d288b1cf8cb2d180aecc83afce88b0cc85b1cb79aecd88b1d08bb6d183 *b3cf8cb5ce89b6d08ab5ce85b1cd85afcc86b1ce85b1ca84b0ce8ab2ce8ab2ce85b1cd8ab2cd88 *b2ce85b1cc89b1cf91b3d18ab4d089b3cc8bb1cc8ab4d08db4ce88b4cd85b2cd86b2cd87b3cd89 *b1ce8bb5ce90b6ce88b2cd82b0cc8ab3cd8ab3cd8ab2ce8bb6cd8cb5cc93b5d08db4d086b2d186 *b1d08bb3cc8db4d18db4d191b6d290b5d08db6d28bb4cd93b8d193b6d290b4cf8db4d189b3ce8e *b6ce8eb3ce88b4cd89b4d08bb5cd90b4ce92b5ce94b4ce8bb3cf92b5d192b5ce8fb6d08bb2d08c *b5d08fb5d091b6d192b8d18fb7d28fb5cf94b6d096b7d193b6d191b6d292b7d294b4cf92b6d293 *b7d398b8d39dbcd39cbdd499bbd39abad19cbbd19ab9d39ebad3a0bed6a7c1d5a7c1d6a7c1d6a4 *c0d6a3bed3a2bdd4a2bdd39dbbd498bad197bad394b8d29ab9d39abbd3a4bdd3a7c1d5a9c3d6b0 *c3d8b7c7dab9c8d9b8c9d8b6c7daafc3d6b1c3d9b0c5d9b1c3d5b9c8dabacbd9beccddc1cfdec2 *cfdec3cfe0c5d0e0c6d1e0c7d0ddc6d1e1c5d1dfc7d1dec7d3dec6d1e0c3d1dec2cfdcbdcbdcb6 *cadbb8cbdab6c9ddbbcdddbbcadebdccdbbccbdcb7c9dcbac9d8b9cad8bbcbdbbdccdcbeccdbbf *cedebdcbdbbdcbdcbeccdcc1cdddc1cddbc0ccdcbeccddbecbdcbecbdcbfcddcbecddcc1cdddc2 *cedec4cdddc5cfdfc7d1e0cad3e0cad4e0ccd6e1ccd7e2cbd7e1ced6e3ccd7e3cbd3e1cbd1dfc7 *d3e0ccd3dfcbd4e0c9d5e0c8d3e0c9d2dfcad6e0cbd6dfc9d3e1c7d2e0c5d1e0c5cfddc7cfdec4 *ccdec1ceddc1ccdcc1cbd8bdcbdabfcbd7bac9d7b6c6d5b4c1d4b6c3d4b8c3d6b8c5d4bac7d7ba *c8dabec8d7bbc8d7bac7d6bdc8d6bcc8d7bdc7d9bdc6d6bbc7d7bdc9d9bdc7d5bdc8d7bec9d6be *c8d8bec9d8bbc9dabccad8bcc7d8bcc7d6bfc8d4bbc7d4bbc5d5b8c6d4b6c3d2b5c3d3b1c3d5b1 *c2d4acbecfafbcccabb8ceaab7ccaab9d1a7b8cca4b8cea5b9cda7b6cba4b4c8a2b2c7a0b0c79d *b1c69bafc79db2c9a1b0c6a0acc79fafca9aabc798a9c194aac495abc595a9c197a9c395a8c396 *abc592a9c290a9bf98aac28faac791a8c398aac496a8c396aac198aac696adc698acc098aac399 *afc59aaec797adc6a0aec3a4b0c5a1b2c7a0b1c7a5aec8a1afc9a5b2c9a8b6caa7b5cbadbccdac *b8caadb9ccabb6c9a6b3c9a1b3caa0afc8a3aec7a1afc89eb1c5a4b4caa3b4cba1b3c9a2b1c9a0 *b0c7a3aec3a2b0caa4b2c6a4b4c8a4b2c7a2b1c9a4b1c5a1b1c8a4afc6a3b2c7a3b2cba4b1c9a5 *b3cca1b4cca9b7cca4b7cca9b6c9aab8cca8b7cba8b9cbaab9ceaab6ccaeb6cbacb8cbadbbcdac *baccadbacdadb9cbabb8ccb1bcd0b3bccfb4bfcfb5bfd1b5bed1b4bed1b2bdd1b1beceb1bdcfb4 *bfd2b6c1d2b8c1d1b3c2d1b5c1d0b8c2d2b6c1d2bac6d7bbc5d3bbc7d5bdc8d7bec8d7c0c9d8bf *c9d9c1c8d9c3cadac3ccddc5ccdcc5ceddc3ccdbc3ccdac2ccddc5cedbc6cddec6ccddcacedecb *d3decbd4decbd3decad2dcc8cedec7d1ddcad3dec8d1dfcad1ddcad1ddc8d1ddcad0ddc9d2ddc6 *cdddbec9dac1c8d9c1c9d7c1cbd7c1cad8c3cbd8c2cbd7bcc3c8c2cdd3c9d4d8cbd6db7da5c17e *a5c27aa5c171a4c181a6c676a4c57da5c66ba2c172a0c16ca1c176a4c371a1c46ea1c479a7c775 *a3c66fa3c172a3c16ca0c171a4c46fa4c674a1c16ea4c56fa2c470a4c66ca3c56da2c36fa4c670 *a1c374a3c576a3c57ca5c676a2c474a4c568a1c270a2c36ea4c56da2c376a6c474a5c371a2c472 *a5c570a1c2669ec274a8c66ea2c56aa0c46fa0c373a1c572a4c681a8c776a6c772a5c6719fc374 *a3c478a5c375a8c576a4c471a2c576a4c56fa7c772a4c476a7c572a7c770a4c472a5c673a4c372 *a3c675a3c673a3c575a5c67ca6c776a7c573a4c37ca9c778a9c775a6c675a4c877a8c87fa9c778 *a4c675a8c677a7c772a9c676a6c580aac680a8c680a7c77fa9c972a7c670a9c77ba9c781a8ca80 *a8c782abc77daac87da9c378a6c578a7c679a7c979a7c77eaaca7aa5c681abca74a9c882a9c776 *a7c97ba9c97baacb75aaca80a8c780aaca80a8c77aaac673a9c879aac97ca9c97ea8c97ba9c97f *aac887abcb7daac97eacca7eaac97fabca7caac980abca7aaac985adcb81abc986adc885aecc7c *aac97da9c97faaca80adca82abc980aaca85acca79aacb7aabca7aa9c97fa9cb80aac980aac985 *aac97faac983aecb7dabc97dabcb83abca7eadcb82aeca82aecb84abcb82accb85adcc85aecb80 *accb86adcb78abcb85afcb87aecb86adcb87afcb8baecc85aecc87adcb81adc989afca83adca89 *b1cb8bb1cc86b1cc83afcc84aecb8bb1cc8cb3ca87acca86afcb8cb0cd8db1cd8cb1cc7faccb81 *accb7dadc97eadc987afcc84aecc79aaca83aecd86b0cb85b0cb80accb85aac98ab1ce82afcc84 *b0ca82afcb88b1cc89b0cc8ab1cb8ab1cc82adcb86aecb83acc986aec987afcb80afcb83b1cc85 *b0ce85aecc8aaecb84aecb83afcb85afcd84b1cc84b0cb84b0cc89b1cc8ab0cd86aeca87b1cc88 *b1cc87b1cb87b1cc8bb6d08ab1cd89b1cc82aec988b1cb87b1c987b1cb82aecb82b0cb87b1cc8a *b2cc8db1cb8cb0cb8db1cc8eb3cd88b2cc88b2cd8bb2ce8ab1ce89b5ce87afcc8db0cb8bb1cc87 *b0cb8bb1ce86b2cc8bb4ce88b3ce8bb2cc89b3cc87afcc84acc989b3cc8ab2cc90b2cc8fb2d092 *b7d28fb5cf8ab4d185b3ce87b1ce88b3cc8ab1cc87b0cc8cb4ce8db6ce8bb2cf90b4cc8ab1cc8b *b2cd85b1cd8db2d191b4cf88b4ce91b6ce8eb2cb8cb1cb88b3cd8ab1cd8db2ce94b6cd90b5cf93 *b6d090b6d08fb5cd8db4cf93b5d296b6d092b6ce92b5cd91b4cd94b6cf90b6d294b6d194b4cd98 *b6cf97b6cf9bbad0a3bfd39bbdd4a0bcd499b7d199bad19ebad1a2bed3a4bfd4a3c1d4a6bfd3aa *c2d7aac1d6a6bdd5a4bdd3a0bcd398b9d191b6ce92b4cf98b8d09bb7d39ebad1a2bbd0a8c1d2ab *c2d4aec3d5b2c7d7b7c8d9b6c6d7b7c8dab1c5d7abc2d5b0c4d7b4c6d7b6c7d8bbcad8bdcbdbc2 *ceddc4cfdfc5cedfc4cedfc3cfddc6cedfc4d0dec6d0dec7d2ddc7d1dcc6d1ddc2cfdfbfcddbba *c8dbb5c6d8b8c9d8bbc9d8c0cddcc3cbddc3ccddc1ccddbbcbdabacbdcbbcad9bcc9d8c0cbdbbd *ccdbc0ccddbdcadcbac9dbbccbdbbdcbdac1cadbc1ccdabdcbdbbdc8d9c1cbd8bfcbdabfcddbc1 *cdddc1cddbc5cddbc7ceddc8d1decad1ddcbd2e0cad2e1ccd6e2cbd8e1ccd7e0ccd7e0ccd4e0c9 *d3dfc9d2dfcbd5e0cbd5dfc9d2e0c9d3dfccd2decbd3e0cbd6dfccd3e0cad1dfc7d1dec5cfdec8 *cedec4ceddc4ceddc2cdddc1c9d9c3ccdabfc8d8bfc9d5b6c6d3b7c3d4b6c3d3b6c4d2b9c6d3be *c8d6bdc9d6bfcad5bfcad6bcc9d6bcc8d8bfc7d7c0c7d7c0c8d9bcc6d4c0c7d6c3cad5c1cad7c0 *cbd8bfcbd8c0c9d7bfc9d6bcc8d8c1c8d7c0c7d5bec9d6bbc9d6bdcad6bbc7d6b6c3d3bbc4d4b8 *c3d3b7c0cfb5c2d2b3c0ceafbecdacbbcfaab9cdabb8cba6b5cbaab4cca5b5c7a6b5c6a6b4c9a1 *b5cb9cb1c89db0c99eadc59aafc698acc59aadc59aacc49cadc694acc793a8c193a9c195a9c197 *acc69aacc293a6c494a6c291a9c58ca7c093a7c09aa8c092a5c096a8c39aabc29eafc798abc39b *aec79aaec698aac09aadc69baec2a2b2c7a2b1c7a7b6cbaab9cba7b6cba8b5c8aab7c8aab5cbae *b9caadb7cbb0b7cbaeb9ceadbacda5b5cba2b4caa2b2c9a1b0c8a5b2c5a4b5caa8b5c7a5b5caa5 *b6cba8b9cea8b3cba7b4c8a6b4c6a4b0c7a3b2c9a3b0c6a3b0c8a3b4c8a2b3c7a4b2c9a3b3c9a3 *b0c99fb4caa6b4c8aab8ccaab7cdaab5c9a9b7cdaab5c9aab6cbacb9ccaebacaaebbcdafbaceab *b9ceb0bcceb1baceb2bdcfb1bbccb5bdcfb0bccdb4bdd0b1bdd0b4c1d0b6c4d5b6c0d1b6c0d0b5 *bfd2b2bdd1b7c1d2b5c1d1b5c0d3b5c3d4b9c3d3b7c4d3bbc3d4bbc4d5bec7d6bdc7d3bdc8d7bc *c9d8c2cad9c2c8d7c4cbd8c6cbd8c7cfd8c6cfdac6cedac4cddac6cddcc9cedbc9cedec9cddbca *cedbcbcfdcc9d1dcc9d2dcc9cedecad1ddc9d1dbc9cfdcc7cddbc6cfdbc4cddcc3cbdac7cbdac5 *cddbc4ccdac5cbdac1c9d6c1c8d5c2cad8c1c9d7c2c9d6c3cad6bdc6c9c4ced3cad3d8ccd6da75 *a0c074a1c079a4c372a4c373a1bf74a4c16b9dc072a4c370a1c571a2c575a3c174a4c56da2c572 *a1c36fa1c375a3c365a0c26c9fc472a1c36aa2c36ea2c375a4c171a3c56da4c36ea1c372a2c470 *a1c46ea2c176a3c46b9fc36ca1c370a1c371a3c56aa0c26ca0c16ca1c36d9ec375a5c674a4c570 *a4c56ba3c5689fc474a1c273a3c573a7c772a3c36d9fc36aa1c371a2c374a1c3699fc172a0c46f *9ec16e9fc370a4c370a3c56aa4c371a2c573a2c575a2c377a4c173a4c46ea6c66ba2c675a6c76f *a2c36ca1c372a3c376a5c673a5c373a5c770a2c571a4c573a6c678a6c570a4c46fa0c370a3c674 *a6c674a7c873a6c77aa5c671a6c774a7c57aa8c57ea8c572a7c67faac672a9c86fa5c475a6c77d *a6c570a5c67ba7c682a7c57fabc67ca8c87ca9c873a5c66fa4c669a1c37aa9c676a8c774a4c976 *a8c772a7c87da9c97ea8c97ba8c870a7c978a7c876a7c779a8c67aa6c871a7ca77a8c86ca4c676 *a7c57ea8c77da6c67fa9c883aac982aac978a8c87eaac880aac97aabc97baac874a9c880aac780 *a7ca7ea7c879a7ca79a7c67aaac778a9c780a9c975a8c884aac87fa9c781abc979a9c979aac983 *abc87ea6c780aac780acca86adcb7faccb7fadcb83accb85adc87eaac780a9c986abcb81accb86 *b0cb7eadca80adca7eabcb85adca81aac888adca83abc788adc987adcb7eacca80aacc82acc97f *abc881aac886acc979acc983aecb82aecb7eaccb7faacb80aac880adcb83acca85afca86b0cb84 *acc985aacc82aecc7caaca87aeca7caac987aec982abc981aec983adcb8bafcc87b1cc89aec984 *accb83aecb85afc984afcc81abca7dadcb82adcc7fabc980acca83adca86adca84abca81acca87 *afcc83afcd84b0cc86abcb86aecb84b0cb82accc8ab1ca85b1cc83aecd82b0cd80b0cc7eaecc84 *aecc88aecb88b0cc83afcc83aecd88b1ce8bb3cd8ab1cd87b1cb82b0ca82aecb86afcb8db2cb86 *aecb89b2cb84b0cc82aeca8bb1cc8cb1cc8bb0cc89b1ca8ab1cc8ab1cb87b2cd86b2cd87b2ce86 *afcc85aecb88aecb88b1ca88b0cc86b1cb85b0cc85afcd87b0cc89afcb89afca89b1cb8bb1cd8d *b1cc8bb1cd8db2ce8bb1cc85b1ce8cb1cf85afcc92b2cc8cb1cc8db1cc87b4ce85b2ce86b1ce8a *b2cc90b1cb87b1ce8cb1ce85afcc87b1cd8db4cd8cb2cd85b2ce8cb2cc96b6cd94b4cd91b3ca8a *b3cd93b4ce92b5d190b4cf95b5d090b4cf8db5cd91b5ce8db5d08fb4d191b5cf8fb4d191b3ce93 *b5d193b4ce98b7cf96b8d39bb7d19dbbd199b8ce95b6d29bb7d39fb9d399b8d199b9d398b8d3a4 *bdd4a8c0d5a9c1d5a3bbd397b8d199b6cf98b8cf99b9d299b6ce97b7cf9db9d0a3bcd2a4bfd3aa *c1d3a8c1d3a9bfd5a9c0d5acc4d6afc3d6b0c3d7a9c1d4a4bed3acc1d6aec3d8adc4d6b5c8d8b8 *c9dabacadabfcddbc2ccddc2ceddc1cedcc4ceddc5cfddc6ceddc4cfddc3d0dcc4cfddc1ccdcbd *c9dbb7c6d9b8c6d8b8c9d8bdcbd8bfceddc3cedec3ceddc3cdddbdcbdcb9cbd9b9c9d9b7c9d9ba *c7d8b8c8dbbfcbdabcc9dcbcc7d8bcc9d9bdcadbbdcbdbbdcbdabdcbdabdc9dbbecadac1ccdcc1 *cbdcc2cddbc2ccdbc1ccdcc4cddcc4cedcc6d0ddc8d1dfc9d3e0cbd1dfc8d2e0c9d3dec9d3dfc7 *cfe0c9d3decad2deccd3dfcdd6decbd2dec9d1ddc9d3dfcad3dec7d1dec9d2dec7d1dec7d2dec8 *d1dec6cedcc0cdddc1cbddbcc9d8bbc9d8bbc9d8bec7d6b9c5d6b8c6d6b6c5d5b6c3d4b6c2d0ba *c2d2bcc4d3bfc6d5bdc7d8c1c7d5bec7d6bdc7d7bfcad7bfc8d5bdc7d5bfc8d7c1c9d9c2cbdac1 *ccdac3cbd7c1cbd8c1ccd8c2cbd7c0c7d6becad8bbc7d5bec8d6c1cad7bfc9d6bec8d8bcc8d5bd *c7d6bcc6d3bbc5d4bbc6d4b6c3d2b6bdceb1bbccadbccda9baccaab6caa5b3caa3b4c7a4b2c8a3 *b1c6a6b2c7a1b1c89eb3c89dafc69faec79cadc59cadc39aaac296aac194aac296aac396aac492 *a4bd8ea7c191a4bf93a8c392a6c096aac595abc199a9c293aac691a8c194a7c299a8c097abc59d *aec59daec6a0aec79db1c99dadc7a1afc7a4b1c5a6b1c6a8b2c6a4b6caacb8ccabbbcbabbbcdae *bbccaebbcdb1b9caadb8cbaebbcdacbacba9b7cca6b5caa3b3caa5b1c7a0b0c6a5b4c9a2b2c9a9 *b6c8a9b7caa4b1c9a7b4caa8b3cba8b5c7a4b2c8a5b2c5a2b0c8a7b3c9a2b2c9a4b4c9a1b3c9a6 *b2caaab0c7aab5c9a9b5c9aab7cca9b5c9abb6caa9b6cbaeb6cdaab5c8aab6c9afb7cbaeb9ccaa *b6ccaebbcdb0bacab1bbcfb2bdceaebcd1b1bed0b1bdceb1bdceb1bdcfb3bfd0b6c2d3b7c1d3b6 *bed2b4bdcfb4c0d1b5bed1b6c2d2b8c2d0bbc2d2bcc6d4bdc7d6bbc6d5bcc6d4bbc6d2bcc6d5bd *c8d6c1c9d7c2c9d7c0ccdac5cdddc4cddbc7ccdbc4ccdbc5cdddc6cedac9cedbc9d0dbc8d0ddca *d0dfcbd0dbcdd0dbcbd1dbcbd1dccaceddc8d1dcc9d1dcc9cedec7cddcc3cbdac1c9d9c1c8d6c2 *cad8c0c9d6c2cad8c1cad9c1c9d6c3cad8c3c9d5c3cad8c4cbd7c0c9d5bec2c7c4cdd2cad2d8cc *d6dc7da4c279a4c277a5c577a5c270a1c178a3c36ca2c469a0c475a0c16da2c675a4c474a2c376 *a3c5719ec276a4c678a6c373a4c370a4c66ca0c46ca1c26d9fc171a3c471a1c36da0c16ea0c370 *a3c573a3c473a4c66a9dc26e9ec374a0c3729fc36ca0c0639cbf6a9ec36e9fc37ba4c56ca1c573 *a4c674a5c673a2c472a1c46e9fc376a7c66fa3c676a0c371a4c66ea1c26fa2c376a3c571a2c671 *a3c36d9ec36f9cc46e9fc36da2c669a2c172a0c36c9ec372a4c570a4c573a2c576a9c673a4c677 *a1c570a3c56ba4c570a4c36ea0c67aa4c573a3c67ca4c672a5c571a0c375a3c76da3c770a2c773 *a5c674a4c673a5c67fa6c471a5c77ea7c671a5c66da5c677a4c878a7c77ba6c776a4c67da8c66f *a4c47fa8c973a6c774a4c67da5c76ea4c580a5c67ca9c97ba9c77ba7c77ca8c974a8c974a4c770 *a6c773a4c480a7c982aaca6ea4c77ba9ca7aa5c777a4c476a3c578a6c67da7c67ba9c878a7c875 *a7c778a5c773a7c771a8c978a7c87ba9c775a6c781aac882a9c97aa7c970a6c77da9ca82aac984 *acc97ca9c97ba6c87aa8c983a7c977a9c675a6c77ba7c778a5c880aacc81aaca81aacb82adcb7e *aacb81aac984aac77ba7c780aacb7faaca85abcc80aacc86aacb7daacb80a9ca83adcc7fa9ca7f *accb7da9cb7eacca84afcb80abcc7ea9ca82abc983abc986adca83abcb86acc981adca80abca85 *adcb83adcb84abca82abca84adcc83a8ca82acc982aaca82accb87aecc85aecc83acca85abcc8b *b1cd85adca83aec97baaca81adcb83adcc82abcb84aecc83aac97ca9c782adc984aac988adcb85 *aecc80acce84accb89b0ca80aaca82adcb82aac988adca84b0cd83acca85aecd83adcb80aaca7d *abc986aecb83adcb86aecc87adcc83afcd80accc88aecc89b0cb83aecc82aaca83aecc8ab1ce89 *aece84afcd84aecc86aec987afca85b0cb8ab2cd8ab0cc8db0ce8bb1cd85b1cc87acc985aecc8a *b0cc88aecc84aecb86b2cb80aecd8bb1cc86aece87afcb8cafca89b0cd89aecb86aecc8db1cc8c *b1cb89b0cd84b0cc89b0cc86afcc88afcd82adcc85afcb89b0ce89b0ce85afcd8bb2cc8fb4cc86 *afcb87b0cc85b0cb8db0cd8cb1cc89b2cd89b1ce91b1cc90b1cb81aecc87b0cd8db1cb90b1ce91 *b1ce87aece8baecd91b2cc8aafcc87b1cc8cb1cc8db3cb8eb1cc8eb1cc8ab1ce90b3d18db1cd8b *b1cc8db2cd8eb1cd92b3cc89b3cd8bb1ce8fb2d092b4cd8cb1cd94b3cd8ab1cd8fb3cd8cb3cd89 *afcc8ab3cf8eb2d097b6d396b6d099b7d197b6cf91b5ce96b6cf91b6d28db2d290b6d196b5d195 *b5ce9dbad3a2bad3a4bdd3a0bdd297b6d299b6cf94b6d49db9d19db8d1a0bbd399b8ce95b6cf9d *bad19fbcd3a1bed6a1bad39ebad29ebdd4a5bed4a7bfd5a3bdd3a4bcd2a8bed5a5bfd6aac0d6a6 *c1d4adc3d7b4c6d7bfcbd9c0ccdcc1ccdac2ccd9c3cddac3cfddc3cdddc4cfddc3ccdcc3cdddbd *c9dbb8c8dbb7c7dabbcadbbdccd8c0cddac2cedbc3ceddc1ccdbc1ccd9bccbddbdc9dcbccadbb7 *c9d6bbc6d8bcc7d8b8c7d7bac9d8b6c7d9bbc7d7bcc8d8bfcad8bccadabac9dbbbc8dabdc8d8be *cadabec9d9c1cbdcc1ccd9c1cbdcc3cddbc4ccdcc3cdddc6cfdec6d0dfc7cfdfc6d0dfcbd3dec9 *d3dec8cfdfc9d1dfc9d3e1cbd3decbd4dfcbd5dec9d1dec9d1dfc7d0ddc6cddcc6d1ddc6d0dfc6 *cedfc5ccdec5ccddc2ccdbc1cbddbec8d8b9c9d8bac7dabbc3d7b8c4d4b5c4d3b7c4d4b8c4d4ba *c5d5b9c5d4bbc4d4bbc6d7bdc7d8c0c9d6bdc8d9c0c9d8c1cbd8c0c9d8c0c8d8c1c8d9c4cbdbc2 *cbdac3cbd7c4ccd9c5ccdbc4ccdac4cddac3cddac3ccd9c1c9d7c3cbd9c2c9d6c3ccd9c3ccd8c4 *cdd9c1cbd9c1c7d8c2c7d4c1c8d6bac3d3b6c2d2b3c0d1adb9d1acbccfaabacfaab6c9a5b4caa6 *b4caa9b4c9a4b3caa6b2c8a1b0c89daec99dafc79eadc59cafc698acc698aac396a9c69cabc397 *a9c597abc68fa6c399a7c38ea8c299aac49baac699a7c69baac69dafc69dacc499aac696a9c497 *aec69caec6a4b1c9a3aec6a2aec7a4b3c8a4b4c7a4b6c9a6b4c7a8b3c9abb8cbadb5cab1bbceae *bacdb0bccbaebccfb1b7cbaebaccaeb8cdacb9ccacb7cba8b6cca6b5caa6b0c8a6b2caa9b5cbaa *b7cba8b5c8acb7c9afb7c9aab6cbaab5ccaab8cba4b0c8a3b0c8a4b0c7a4b3c9a8b5caa7b5cca8 *b4c8acb8c9aab6c9abb6cbadb7c8aab6cbacb6cbaeb9ceadb9ccadb8cbaeb9cfa7b9ccaeb5ccab *b8ceb1bbcfadbacdb1bccdb2bdceb0bdcfaebccfb0bcd1afbbcdb0bbcfb0bdceb2bdd2b5c1d2b5 *c0d4b8c2d4b4beceb6c2d1bac1d1b7c1d1bcc3d0bac2d4bcc6d7c0c7d8bdc7d6bec8d8c0c9d8bf *c8d5c0c7d7c1c9d6c1c7d9c5cbdcc6cbdbc6cdddc7ccdbc6cedbc6cedac7ceddc8d0ddcad4ddcb *d2dfcbd1dbcad0deccd3ddcbd3dcccd1dccbd2dfcbd0ddcbd0dccbcedcc8ccdbc4ccdcc3cbdabf *c8d7c0c7d8c1c8d6c1c8d7c1c9d9c2c9dac1c9d8c2cadac4cbdac3c9d7c3c9d7bfc4c8c6ccd2cb *d2d8ccd6da76a4c175a5c277a4c67ba3c579a2c37aa0c16b9ebf6ea4c36d9fc36ea1c473a4c671 *9ec477a2c46ba0c172a0c170a4c375a3c478a6c56fa4c673a4c673a4c5729fc173a0c171a1c56b *a1c26fa1c571a0c46fa2c56d9fc270a0c372a2c575a2c469a0c472a2c672a1c373a2c36ca2c371 *a2c472a2c46ca1c370a2c66ea2c570a0c56da4c66da2c672a6c570a4c66da3c56a9ec473a0c56f *9fc565a0c36ba3c570a1c473a5c479a9c66fa0c275a1c475a3c577a4c473a0c479a4c67caac678 *a8c674a3c675a1c475a3c675a2c674a2c47ba7c774a7c773a5c37ca7c675a5c676a2c56fa3c674 *a5c372a7c574a6c67aa9c777a7c773a5c67ba3c676a6c773a5c67ca9c771a7c66fa7c87ba6c578 *a8c77caac676a5c676a3c57ba6c475a6c772a5c674a5c676a7c67ba8ca84a6c97ca4c976a5c678 *a5c67ea8c773a8c77ca9cb82a9c873a9c979a7c981aac977a8c879a4c57aa8c879a7c879a8c76e *a5c57ba8c883a4c780a7c77da9c67ba9c876a7c772a3c57da7c87aa7c97aa8cb7ea5c976a8c77c *a9c982aac775a5c77aa9c87eaac983abcb78aac780aacb7aa7c97daac77ca7c977a6c681a5c582 *a9c985aac779a8c97ba9c980aaca7eaac77da7c77eaacb82abcb7caac987aecc7faacb81abca7f *aaca82abcb7daac97fabc97babc881abca87adcb86aecc81aaca84afcb7aabca79aac981abca89 *adca85aaca7caac985acca81adca87b0cb85acca84adcb7aa9c881aaca82abcb8aafcb87adcc82 *acca86b0ca7dabcb80acc985aec982abc986adcb7fabcc80adca82abc982acc886aeca84acca88 *aecc88b0cb85abcb7fabcb84adca82aec981adc97dabca7eaac97faac986aeca86accb84adcc81 *accb85aec986aecb7dadcc82adcb83abcb83aecc86b1cc89b2ce7eaecb81aec983adca86adcb86 *aecb81adcc85aecc85aecc87aecc85b0cc80aecc81adc985aeca85aecb83afcb86aeca8ab4ce88 *b1cc86b0cb83adcc81adcb86b1cd83aecb84aecb87b1ce8cb1ce82aecc85aecb86aecc89b0cd87 *b2cc83aecb85afcd88b1cc88b2cd83afcb88b0cb81adcb84aecb82adcc85b0ce87afcb88b1cc90 *b3d085afcb83b0cd88b1cc85b1cd8ab1cb82afce85b1cc86b2ce8bb1ce8eb1cc86b1cc89b1cc8a *b0cc82accc86b1ce8baecb89b1cb85b1cd88b1cf8db3cc90b4d18cb1cd8db1cb88b0ca8bb3cc8f *b3cd89b1cc8cb1cc87b0cd89b3cd8cb2ce8db2ce89b2ce8ab4ce8db3cc90b2cf8cb0cc89b1cd87 *b1ce8bb2cc8eb4cf8db5cf90b6cf8fb6ce91b4d194b6d38db4ce95b5ce8ab2cc8cb2cf8fb6d187 *b4cf90b5ce95b6d19bb5d19cb7d19ab9d290b5cf96b7d195b8cf9bbbd39dbbd197b7cf99b6ce92 *b5cf91b7d193b5cd97b7cf94b7d193b5d18db3d09cb7ce9db7d295b8cf9bbcd19eb9d29ab9d39a *bad299b8d3a3bdd3aec2d5b7c8d8bccadbbecbdcc3cddbc3ccddc4cedec2cddcc3ccddc2cedcc0 *ccd8bdc9d8b5c6d7b7c7dabec9dbc0cbdac4cdddc3d1dec1ceddc1cddbbdcbdbb9c9dabac8d8b7 *c9d8bbc9dab7c9d8bbc9d9b7c9dab9c9d9b8c6d9b5c5d6b8c6d8b8c6d6bccad9bdcadbbbc7dabc *c8d7bdcbdabcc9d8bdc9d8c0cbdac1ccdac3cbdcc6cdddc2cbdac4cfdcc4ceddc5cddec8ceddc6 *d2dfc9d3dec9d2decbd3e0c9d3dfcbd3ddc8d4e1cad3dfc9d3dfc8d1dec7d0decad1dec7d0ddc6 *cfddc3cedcc3cedec1cbdac0cad9c0ccdebdc9dbbec6dbbcc7d6b9c3d4b8c4d5b5c5d4b4c4d6b6 *c3d6bac5d5bac4d5bec6d7bbc6d7bbc7d8bcc7d6bfc8d8bfcbd8c1cbd7c1cbddc4ccdbc5cbdac5 *ccdac2ced9c3cfd9c5cfdac6cedbc5ccddc7ceddc5cedec3cedbc3ccdbc4cedbc3ccd9c3ccd9c3 *ccdbc4cedbc5cddcc5ccd8c3cbd8c1cbd8bbc7d6b8c6d6b6c3d3b1c1d3acbdd0adbbcfaeb9cea8 *b9cca6b5c9a9b5c8a2b5c8a4b2c59caec89fafc9a4b1c999adc999aec699aec496abc598acc498 *aac599abc499aac398a9c69babc69baec79daec89db0c69daec79aaec79cb2c79faec7a0b1c8a1 *b0c79cafc7a3b2c7a0b1c9a3b4cba4b3c8a4b4c7abb6caa7b4c9a8b6c9a8b6c9aabaccaab7ccad *bbcdaebcceadbbcfb0bbccafbed1adbbcbaebacdabbacaa9b5cba8b6cba7b4cba5b3c9aab6c8ac *b7ccabb9ccadb9ccadb8cbacb8ccadb8ceadb6ceabb6cbaab4c9a9b6c8a5b5caa4b5c7a6b4c9a9 *b5caabb7caaab6ccb1bbccacb7ceadb8cbaabbceaab8caaeb8ccafbacdacbaceb0b7cfaebaceaf *bdcbb1bbccaebaceafbbd0b2bbccb2bbccaebacbb0bed0aebfceb0bed2b1bdd1b2bccfb0bcd0b6 *bed1b9c0d0b7c2ceb7c3d1bac4d3b6c3d3b6c0d2bbc2d2bbc1d1bdc5d3bdc6d4bfc9d8bfc8d7c1 *cad5bfc9d7bec8d8c2c9d9c3cbdbc5cbd9c6ccdbc7cedec7d0dec7d1ddcad1decbd2decbd2ddca *d2decbd3ddc9d2deced2dfced3e0ccd5deccd4decccfddcbd1dec9d3decbd1ddc9d1ddc6ccdbc5 *ccdcc3cad9c2c8d7c2cad9c3cbd8c2cad9c3c8d7c4cbd9c3cbd8c3cbd8c4ccd8c3c9d4c0c4c8c6 *ced5cad2d9cdd6dc6ea0c16ca0be73a2c47aa4c36da1c374a4c3769fc179a3c6709ec175a2c46f *a0c171a1c379a4c372a4c466a0c16da2c370a1c36ca1c26fa1c16fa0c2709fc568a3c66ba1c468 *a0c3719fc36e9ec26ea0c26fa3c365a1c370a3c46aa0c474a2c672a1c4699bbd729dc26ca2c36c *a0c36fa1c371a1c46aa1c46da4c56d9fc36e9fc36a9ec269a0c36aa0c56d9ec26fa2c672a4c769 *9ec671a0c571a5c3709fc475a4c56ea2c570a2c675a4c475a2c580a7c676a5c46ea0c371a3c274 *a5c673a2c374a1c683a8c675a4c775a5c773a4c470a3c672a4c675a3c575a1c67ea6c77fa8c87f *a6c576a4c674a2c37ca6c67ca7c57ba6c679a6c67ea8c676a7c678a9c77fa6c678a4c67ba7c57e *a6c67ca7c77da9c97dabca77a9ca77a7c877a1c677a6c574a4c774a7c66aa3c66aa3c673a4c67a *a9ca7ea9c97ca7c778a6c77fa7c776a6c771aac97da9c776a9c980aacb70a2c570a4c673a5c578 *a8c773a6c778a7c87ca5c879a8c779a9c97ea5c87ca4c477a5c57ea9c779a8c773a7c87ba9c97e *aac97ca9ca77a8c475a5c778a7c67da9c977a7c970a7c976a8c97aa9c878a6c76ea4c777a8c87e *a6c979a8c878aac97caacb7ba8c97da7c97fa8c87eabc976a7c979aac97eaaca81aaca7facc985 *adcb84adcd80abca87abca79a8c97dabca7babc982abcb82abca80a9c986abca81abc97aaac982 *abca81aacb83abc984abc980a9c988aecb7eaccc82aac980abc982adc880acc984acca8caecc85 *aecb81acc981abcb7faac97caac982aac77eaac981abc981aeca7eadcc81aacb83aaca7eabc97a *a9cb80acca80aecc84aecb7daac97eaacb7caac986adca7daac985aeca7da9cb7da9c980aeca7e *abca83aac981abc981aac986aecc80accc80accb83afcb83adcc83afcc82aecc81adcc83aeca86 *aecb82aecb87b1cd84accb78abcb86afcb87aecb86afcb85b1cc8ab1ce86b0cb81acc986acca87 *aecc85afcc86abc890b1cd89b1cc83aecc85adcb83afcb81aecc81afcb88aeca84adca87b1cc85 *b1cc8cb3ce8cb2cc8bafcc85aecb8ab1cc82adcb85afcb86aeca82adcb7dadc97faecc80aeca86 *b1cc87b1cd86b0cd83b1cb86b2cc81aecc87b1cc87aecd86b0ce8ab0cb89b1cc8cb3ce8cb1cd8d *b4cc89b0cc86afcb8db1cc8db0cc81aecb84aecc89b2cc86b1cb86b1cb82b1cc8cb0cd88b1cd89 *b2cc90b3cf8bb2cf89b2cd91b3cd8fb3ce8ab1cb8cb3ce8eb1d088b1cd8cb0cc8ab1cd90b3cd8d *b3d087b1cd8bafcc89b2cd91b3cd8fb5ce8cb2cc91b3ce8bb2d18db3cc93b5ce92b4d18eb4cc8b *b2ce92b4cf94b6ce97b6d197b6cf93b7d192b4cd91b3ce98b6d19dbad39ab9d198b4cf9ab7ce91 *b6cf91b6d093b6ce93b4ce9cb8d195b5ce8cb3ce8eb4cf92b4cf90b5d18fb1cd92b4cf9bb6cf98 *b4cf9ab6cf9fbbd39fbad2a1bed4b0c3d7b5c4d8bcc9dac1ccdbc3cdddc5cedec4cddcc3cddcc2 *cfdcc3cddcbecbdbb5c6d8b9c7d9bac9d8bac9dac0ccdcc3d0dec3cedec2cddebdc9dbb4c7d8b6 *c6d7b3c7d8aec5d7b2c5d8b4c7d7b5c8d9b9c5d7b5c5d6b6c4d4b8c3d6b4c5d6b6c7d7b8c6d8ba *c7dabac7dabcc7d6bdc9d7bcc9d9bec9dac1cbddc3cbddc2ccddc2ccdcc5cfddc4ccdbc4cddbc6 *ceddc9d0decad2ddcad3e0cbd6e1ccd6e1ccd6e0cbd5e0c9d2dec7d1dec6ceddc7d1dfc8d2e0c9 *d1dfc7d1dec3ccdcc2c9dbc1c9d8bbc7d8bcc7d8b9c7d6bdc8d8bdc8d6b9c4d6bac3d4b6c3d4b5 *c2d3b6c3d4b6c3d3bbc5d5bdc6d6becbd8c0c9d6c1cad7c1cad8c1cbd7c2cbdac3ccdac5ccdbc6 *ccdbc7cdddc7ceddc4cfdbc6cfdac7d0dcc6d1d9c6d1ddc5cfddc6d1dcc5d0ddc6cedec5cedbc6 *cedbc5d0d9c5cfdcc7ceddc5cedbc6ccdcc5ccdcc3cbd8bbc8d6b7c4d4b8c6d5b4c1d3b1bdd2ac *b9d0afbccfabb8cdacb6cca8b7c8a4b3c9a5b6cba4b5caa1b1c99fafc8a0b0c89aadc698abc499 *b1c899adc598adc49aacc69eafc59eb0c7a5b4caa3b1c99fb0c8a0b2c89eb1c69bafc7a0b1c99e *afc7a1b1c6a5b3c8aab6cba4b1c9a7b3caa8b6cbaab8c9a8b6c9a9b7c9aab5cbaab6c8adb6cbab *b7cbabbaccabb9cfaebdcdb1bbceb1bdcdaebaccacbbceabb6ccadb7ccabb9c9aab7caa7b6c9a6 *b7cbacbacab0bacdadb8cba9b7cbadbaccacb9cca9b9d0a6b6cda6b1c8a6b3c9a5b5caaab6cbaa *b8c7a8b3c9aeb6cbacb8ccaab6ccacb8cfb0b9cea9bacdb0bbceadb9c9aebbceb3bdceb0bbcfaf *bbd1afbdceafbeceb1bcceb4becfb0beceaebbceb0bcd0b1bdd0b5bcceb2bdceb5bed2b4bfd0b6 *bed1b5bfd2b7bed2b6bfd2b7c0d0b8c2d1b6c3d3bbc4d1bac3d3bbc6d4bbc5d3bcc5d3bbc6d5bb *c7d7bec7d6bfc6d8bfcbd9c1ccd8c4ccd8c5ccddc9ceddc6ceddc9cfddc8d0decbd3deccd6decd *d4deced3deccd3dfcbd1dfcbd4deccd3ddccd5deccd6dfccd4deccd4ddcbd2decbd2decbceddc7 *ccdac4cbdac1cbd8c2cad8c4c9d9c3cbd8c4cbdbc4cbdbc3cbdbc2cbd9c3cbd8c5ccd8c3cbd4bf *c7c8c6cdd6c9d2d8ccd6db6b9bbd7ea4c172a2bf75a1c16f9fc171a0c375a3c475a0c56f9dc173 *a0c46fa1c1679bc073a2c46d9fc26c9ec375a3c66ca1c574a3c46da0c16b9fc16a9dc1729ec16f *9fc16b9cbf6c9ec274a2c275a0c26fa0c1669dc06b9cbe6da0c06699bf6ea0c3689bc470a0c272 *9fc26da1c3699fc1689ec164a1c469a1c570a2c66fa2c66c9fc46a9ac2699ebf699fbf6a9ec16d *a0c674a1c36c9fc669a0c36a9bc2729fc26b9ec270a0c36ea2c274a3c36da1c578aac6759fc675 *a2c46da1c17aa0c273a3c385aac778a4c66da3c474a3c670a2c573a2c371a1c479a3c372a4c574 *a2c477a1c777a4c87ea6c780a7c77da8c673a5c576a5c674a4c670a0c47aa6c874a4c77da4c673 *a4c467a0c370a1c36da3c473a6c66fa3c66c9fc375a6c778a8c678a4c27ca4c66ca1c471a3c571 *a3c773a4c476a5c876a4c973a4c675a3c46fa0c372a5c76da4c572a8c674a6c774a3c571a3c573 *a4c57ba8c779a4c579a5c77ba5c67aa6c77ba7c878a7c977a5c975a4c875a3c774a7c976a4c87f *a7c976a6c778a6c872a7c96ea6c971a5c670a4c772a4c57aa7c676a4c572a7c77ea9c972a4c778 *a8c976a6c67da8c77eaac773a4c777a8c97faacb70a5c77faaca75a6c778a8c777a5c775a7c777 *a5c772a6c97aa8cb78aacb81aaca83aac882a9c884aac882acca81aac980a9ca7ca6ca7fa9c97f *aaca7eaac985abc87baac97ea7c784a9c978a6c87ea9c97aaac982acc97eacc98aaec78bafcc80 *accb79a8cb7ca8ca79a9ca79a7c87ca8c77fa9c77eaaca81a9c97ba8c981a7c980aac776a8c882 *acca7faccb84adcb79aacb79a9ca7eaaca7fa9c97daac97cadcb7dadcc7fadca80aac97ba8c67a *a8c97ea9c981a8c982acc97eaacb81acca83abc981abcb84adcb82abcb7eabca7caac982aecc80 *aecc83accb87aecc7eaac97ea9c882accb83acc778acca7dacca84afcc7eabcb81abcc82aacb82 *abcb87acc984afcc85aecb85aecb87aeca88b0c98caecb7aaaca80aecc84aecc86adc985abcb81 *adcb81abca85afcc83aacb86afcc86abca82adcc84aecb81adcb85accb81abcb85adcb7baacb8b *b0cc89aeca89aec981afcb8ab0cc8bb1cd86b1cd84b1cc82adca82aecd89afcc84aecc8db0ce86 *afcc84b0ca83b0cc84abc986aacc88aecb84adcb88afcb86b0cb87b0cd86b2cc8ab1cb87afca85 *aecb88b0cc89aecb8cb1cb8cb1cd87b1cc88b1cc82afcd82aecd89aecc89b0cb86adcc85afc989 *b1cc81afcb87b1cd8cb2ce87afcc8eb1cd8bb1cf8cb1cd87aecd89b1cc8cb2cc8bb2cc86b1cd89 *b0ce8cb1ce90b4ce91b4ce91b4ce8db6d390b5ce90b4cf91b5d291b2cb91b1ce8fb2cd96b3d196 *b5cf93b1cb90b4cc91b4d094b4d09ab5d08db2cc8cb1cd90b3ce90b1ce90b3d097b6d192b5d19a *b7cea0b8cfa2b9d09eb8d1a0b9d1a1bed3a5bdd3b2c3d7b9cadbc0cbddc3ccdbc4cedac3cddcc1 *ccdcc2ccd8bdcbdbb8c8d8b6c6d8b5c6d8b6c6d8b7c6d9bcc9d8c1ccdbc1ccddbeccddbbc9ddb4 *c6d8b2c3d6aac1d6a9c1d5b2c2d6b5c4d6b6c6d8b7c7d8b3c4dab3c3d6b5c2d5b5c3d5b3c4d4b5 *c5d6b3c5d6bac8dbbcc9dabac7d9bec8d9bec9d8bfc9d8bec8d8c0cad8bfcad7c2ccddc2cbddc5 *cedec7cfddcad0decad2e0cbd2dfcbd3dfc9d2e0cad2e2cbd3dec9d1decad1dbc9d1ddc9d2dec7 *d1dec6cfddc2ccddbdc7d8bdc7d9bbc4d6bac6d6bbc6d7b8c6d5b8c4d5b8c3d5b6c3d5b9c3d4b7 *c3d3b6c3d3b9c6d4b8c6d5bac6d4bcc3d3bbc7d7bec6d7bfc9d8c3c9dbc4cadac3cbdac3cbd9c4 *ccd9c8cdddc7d0dcc6cfdbc8cfddc9d0dcc8cfdcc7d1dec8d1ddc6d1ddc8d1dcc6cedcc6ccdec6 *ceddc7cfdcc8cedbc7cedcc9cedcc8cfddc8ceddc6cedcc4ccdbc1c9dac1c9d9bcc4d3b9c3d1b5 *c0d3b1c0d1adbdceaab9cfacb8ceaab6cba8b6cba5b3c8a1b1caa1b0c89cacc79cb0c89eaec89d *afc79fafc89eaec49dacc49cafc69fb1c9a0b3cba7b6caabb8ccabb8ccaab7ceadbbcda7b6ca9f *afc99eb1c89fadc9a6b3cba9b6cca8b6cba7b6caabb6cca8b4cba5b6cca4b2c9a5b1caa7b6cca6 *b6ccacb7ccacbbcbaebacbaab6ceacbbceaebacbacbaceacbbcdaab8ceaabacea8b7ccabb9caaa *b6cbaab7cbadb7cbadbacdadb6cdacb9cdaebcceaab9ccabb4cda5afc9a6afcaa5b0c6a5b3c9a4 *b6cbaab7c9abbbccaab8ccaeb9cdaeb6cdb0bbceacbad0acbacfb1bbd0b0bcccb0bacdb1bbccb0 *bad1b4b9cdb1bccdb1bbccb2bfd1b3bdccb3bfceb6beceb6bdceb5bdceb7becfb2bcd0b3bacfb4 *bfd1b7bfd1b6c1d1b7c1d1b4c1d2b6bed3b7c3d2b7c2d5b6c0d2b7c1d3bac4d3bbc5d3bcc4d3ba *c1d4bbc2d5bdc6d6bdc4d4bec8d9c2cad7c6cdd8c5cedbc8cedcc8cddccad0dcc9cedccbd1dccc *d1deccd5deced3ddcbd3deccd1decbd0dfcdd3e0ced3decdd4ddced4deced3ddccd3decbd3dec7 *cfdcc6ccdbc2cad9c2c9dac3cad9c3cbd9c2cbd8c5ccd8c3ccd9c4cad9c6cbdbc4c9d9c6cbd6c6 *cad7bfc5cac6ced3cad4d8cbd6dc75a3c178a3bf70a1bf77a4c170a1c073a3c570a1c36c9ebe6f *9dc06ca0c16f9dbf6b9cbf6ba1c36c9fc1659dc06ea0bf719fbf79a4c578a5c473a3c46c9fc072 *a2c36ea0bf70a0c2689fc26fa1c270a1c36e9fc2729ec3679dbe66a1c1609ac06fa0c373a2c270 *a0c46ba0c171a0c46b9fc0709fc26da1c473a4c26d9fc56da0c46fa1c478a2c5699ec171a2c270 *a1c373a1c379a4c572a2c472a0c373a0c36ea2c36da3c379a3c76ba1c46fa2c375a4c379a4c57e *a6c681a4c377a4c479a7c672a2c36ba2c380a6c573a3c678a5c577a6c479a5c671a5c574a4c677 *a5c579a4c377a4c572a5c474a5c57ca6c579a8c876a6c772a6c671a6c675a5c780a7c57aa7c678 *aac676a5c76da4c476a5c675a5c66ea2c46ea3c376a5c778a6c780a9c56fa5c675a7c673a5c673 *a4c672a3c36fa5c97ca7c772a4c578a7c576a6c97da5c77ea7c772a4c36fa4c479a6c777a6c56f *a4c677a5c671a6c575a7c56da5c678a5c671a6c776a4c674a5c677a4c777a4c473a5c77eaac97e *a8c677a7c67ea7c676a5c67ba7c981a7c37eaac973a9c975a7c973a6c475a5c76ea6c675a8c97b *a6c770a5c778a7c976a7c875a8c97ba7c679a7c87aa8c878a6c782accb7aa9c77da9c97aaac97b *a7c781a8c770a7c776a8c87ba8c883aaca7da9c97faac983adcb83abc980aac782abc77ea8c880 *aac977a9c879aac97eaaca7daac97ca8c782aac77ea9c77da9c976a8c97caac781accb88aecb85 *aecb82abc981a9c97da9c97daac97eaac981aaca79a8c782aac984abc97faac97eabc778aac97e *accb81aac979a8c784adcb86b0cb88aec880abc882abc87da9c981acc984aaca7eaac882aac980 *abc781abc881acc980aaca7ea9c882aac980accb82abca81accb83adca84abc97eaac982aaca84 *accb84aecb84adcb82aecc7babcb80adc785adc97eabca7faac985adca82adca85b1cc86aecb84 *afcc85abca85aac97cabca83acc882adca81adcb82aecb87b1cd8cafcb89afcb86afca81aec986 *adca7fadcb82aecb7eabcb87b0cc84adcc87afca82adca85b0cc85aeca86aecb85afcb83adcc81 *afcc86b0cc8aaecb8faecb86aecb86b1ca8bb3ce89b2cd87b0cc8ab1ce8cafcb85afca85afca82 *afcb85afcc87b0cb86afcd81afcb88afcb86b0cb89aec984adcb83aeca81aecb83b1cc86aecc85 *afcb88b0cb84b0c989b1cb85b0cb88b1cc8eb1ce86b0cb8bb0cb89b2cd8fb4cf8ab0ca87b0cd8a *afca8bb0cb85accb88b0cb86afcb89afcc8bb2ce89b1ce8db2cc88b4cc87b1ce8db2cd90b3cc8f *b4cd8bb2ce91b1ce90b2ce8fb4cc8db3cd8cb3ce8db3cf99b6cc8eb3cd95b3cd90b1cf94b4ce97 *b6ce91b7ce93b6ce91b6cf8eb4d093b4ce93b3cf95b6cf96b5d094b4cd99b4cd98b6d0a0b8cfa5 *bbd1aabbd1a7bcd1a6bcd29bbbd29ebbd0a2bcd1a7bfd3b0c3d7b9c8dac0ccdac6ccdac3cdddc4 *cdddbfcddbc0ccd8b8c9dab4c6d6b2c4d6b0c3d6b0c3d5b6c7d6bdc9dac0cdd8c1ccd9c1cbd8b9 *c8d6b6c6d8b1c3d6afc2d4afc5d5b1c4d6bbc5d6b7c7d6b3c6d6b0c3d6b0c3d6b0c2d6b3c3d5b4 *c3d5b4c3d6b5c6d6b8c7d7bbc7d9bbc7d7bcc7d6c0c9d7c0cad9bdc7d8bfc8dac0cbd9c1cbdbc4 *cdddc5cfdbc6d1ddc9d1decad3e0ccd4dec9d1dec9cfddc8d2dec9d3dec8d0dec9d3e0c9d3ddc7 *d1dec7ceddc3ccddc3c9dbbcc7d8b8c6d7b9c5d6b8c5d6bac6d8b8c5d3bbc5d3b6c6d3b7c3d1b8 *c3d4b9c4d5b5c3d5bac6d6bbc6d5bfc7d5c0c6d6bfc7d6bdc9d6c1cbd9c3cbdcc6cbddc5cedcc6 *cfdbc8cfdbc7cfdcc9d1ddc8d2dccbd1dbcbd1ddcbd2ddcbd4e0cad3decbd1dec7d2ddc7d0dcc6 *cfddc8cedcc7d1dbc9d1ddcad2deccd3decad1dbcad1dcc9d1ddc7cfdbc6d0dec3cedac1c9d6bc *c7d7bac3d4b5c1d4b3bfd0b0bcd0adbacdaebaceacbacba9b7cda1b4cba5b4c9a2afc5a2afc7a0 *b1c99db3c79cb1c9a2b4caa5b4cba6b6cba9b7caaab9cdacb9cfaeb7cdaebbccafbbcdaec1d3ac *bcd1aab7cca0aec8a1b2c8a4b3caa4b6cba8b7caa8b9cca8b6ccacb9cba2b4c9a7b1c7a4b3c8a9 *b6c9a4b6ccaab6ccaeb7ccaabaceadbaceadb9ccabb8ceaab8ccacb8ccacbacdabb7cdaebbceb0 *bbccaebbceaebacbaabbceabbbccaab9ceabb9ccaab9ccadbcccaeb9cca7b6cbaab5c9a7b3c7a8 *b3c8a9b5cba6b6ccaeb9ceaeb8ccaeb7ccafbbceadb9cfb1bbccafbaceaebbccaebbceb4bccdb0 *bfd0b3bcceb3bdceb6bdceb7bfd0b2bed2b6bdceb4bfceb4bed1b6bfceb3c1ceb6bdcfb3bfd1b7 *bfd1b7c0d1b9c1d1b8c1d3b8c1d2bbc4d3b9c1d3b9c3d1b9c3d2b8c0d1bbc2d3b6c1d5bac5d2bb *c6d7bcc5d2bec6d3bfc6d4bec5d4c0c7d3c3cbd4c4cddbc5cddbc9cedcc9d0ddcbd2ddc9d0decc *d4deced6dfced6e0ccd6decdd6e0ccd4deced3dfced5ddced6decdd5ddcdd3ddcbd3decdd2decb *d0dccbd1dbc7cfdbc6ccd8c3cbd9c2cbd7c1cbd8c4cbdac5cedcc5ccdbc4ccdcc5cbdac6ccd8c7 *cdd8c7cdd7c0c8cbc6cdd5ccd4d8ced6dc6f9fbe6e9ebe6da1c176a3c272a0c1729cc2709ec169 *9bbe6a9ec2679fc3649fc05f9bbd6a9cbf72a0c474a0c3689dc26f9ec16c9ec1699fc572a4c471 *a1c171a1c1769dc06e9ec16d9dc2699abe6c9dc2699dc070a0c172a2c5719dc36e9cc36d9cc26e *9dbf6da1c4679ec36fa0c3659ec26fa0c26f9ec36a9cc16e9ec26ca1c4689dc36da2c5729fc371 *a3c579a2c67fa4c378a3c578a2c371a5c677a5c670a4c775a2c373a3c478a3c476a4c673a3c46f *a4c66c9ec476a3c677a3c474a3c57fa8c774a5c66da0c76fa2c473a6c76da1c575a6c66fa1c27a *a5c47fa7c77fa9c979a4c56ea2c571a2c671a1c473a2c578a4c472a3c573a2c772a2c672a2c47c *a7c576a5c673a4c46fa2c66fa2c775a5c777a8ca79a5c577a7c570a6c670a4c66fa1c675a5c77a *a7c872a4c973a5c770a3c36ea3c376a4c571a4c675a4c675a4c56ea2c575a4c976a4c473a2c574 *a4c56ea3c56fa2c677a7c578a7c771a4c876a3c878a3c678a4c477a5c56ca3c570a4c571a4c775 *a7c971a5c779a8c77fa9c779a4c678a7c772a6c76fa5c776a5c774a4c671a6c87da7c976a7c776 *a8c770a4c76ea4c876a4c978a7c972a7ca77a7c976a4c76fa3c374a6c676a5c677a7c981a9cb7e *a7c781a9c982a8ca7fa9ca82a9c67ba7c97ba6c884abca80aac97faaca82abca83abc985abcb7f *aaca77a6c97aa8c87ea8ca82a9c87ea8c97ea9ca7aa9c87ea8c77da8c780a9c979a7c984abc97a *aac981aac97ca8ca76a5cb7ba6c780aaca7caac882aaca7aaac976aacb7daac981abcb7dabc978 *a9c781aac87ca8c973a6c980aaca79aacb7ba9cb7faac97fabca7caac97daac982aaca79a9c978 *a5c877a7ca80a9c980abcb7eabc97eaac97ea9c77ea8c984abca82aacb81aacb83adcb84accb81 *adcb81adca7daac982aecc83aacc84accb7eaaca85adcb7caaca87aec980aaca84adca82adcb85 *a9c985abcb7eabc887aecb83adca86b0cb85abc985adcb85acca84aacb84accb88b0ce84aecd82 *acca83adc987aecc85adcb83abc97fabcb7cabcb83adcb83afcd7cabca84adca85abca85aecb85 *adca84afcb83afcb7cacc97faecc8cb1cc7caac984accb7fa9ca81aaca84adcc85b1cc89b1cc85 *afcc85accb87accb83acc984aecc82abcc84aec986aecb83accb8dafcc8eb1cb8ab1cb85b1cc86 *afca81accb87afcd85b0cc85afcb89b1cc8ab2ce8aafcd85afcc84aecb7faecb84aece84adcb89 *b1cd87afcc8caecc8ab0cd83afcb8bb1cd86aaca8fb0ce86afca8ab1cc8cb1cc86aecb8fb2ce8c *b4ce8bb2cf91b1ce8eb1ce86accc8bb1cd90b6cf90b3cf88afcc8cb1cd8ab1cd87afca89b1ce8d *b4cd8eb3cc91b3cf96b6ce94b5ce93b6d095b5cf99b6ce8fb5ce9bb8d19cb7cf9fb8d19fb8d2a7 *bbd2a9bdd4a9bdd4a7bfd39db8d19fbad2a4bdd3a9bfd4a8bed4afc3d7b5c5d9bbcadbc0caddc3 *ccddc2cdddc3ceddc1ccd8b9c8d7b3c4d6afc1d5acc1d6aac2d8b2c3d6b6c6d7bbcbd8bdc9dac1 *cbdcbacadab8c7dab6c7dcb4c6d6b5c6d8b7c6d8bbc6d6b8c6d6b4c4d6b0c3d8acc1d6afc1d5b3 *c3d8b7c5d7b5c5d7bac6d8bac6d9b5c5d7b6c6d7b9c7d7bac8d7bcc9d9c1cadcc2ccddc3ccdbc3 *cddbc2cddac5cfddc6cfdec9d0ddcad1dec7d1ddc9d1dec6d1dec7d1e0c6d1dec9d1ddc9d4dec8 *d1dcc9d1e0c3cddcc2c9dabdc9dbb9c6d7bac5d5bac6d6bbc5d5bbc5d6bac6d6bbc6d5bac7d8bb *c5d6b9c5d5bbc5d4b7c6d6bbc7d5bbc6d8bbc7d7c1c8d9c3cad8c3cad9c3cbd8c4ccdcc5ceddc6 *ceddc6cfddc8d1decbd1dfcbd1decbd3dfcbd4ddcbd3ddcdd4decbd3e0cbd5e1cbd2deccd3e0c8 *d1dec8d0dcc7cfdcc7cfdec9d1dec9d1deccd2e0ccd3deced3decdd3e0cbd3dcc8d3dcc4cfdbc1 *c9d8bbc9d8b6c2d4b6c0d3b6c1d1b2bed1b5c0d0aebccfabbbceabb8cda7b4caa1b1c8a5b0c9a8 *b4caa5b4cca3b2caa0b4c9a5b4c9a9b7ccaab8cdb4c1d4b6c3d5b1c0d2aebdcfb0bfcfb0bed3b1 *bdcfb0bdd1b1bccea7b6cca5b4caa5b7cca6b6cba7b9cca8b3c8a8b6caabb6ccaab6cba3b1c7a6 *b5c9a3b2c4a3b1c8a6b4caa8b6cba9b6cba7b6cdaab9cba7b5cda7b3c9aab6c9abbaccacb9ccae *bacbacb8c9acbacdadbaceabbcd0acb9cfaeb9ceadb9cda9b9cda9b6cba9b6cda9b5cca6b5cba8 *b6ccaab6caa9b7cbaab5c9a7b6caafbaceafbaceafbbceb3bcd1b1bbceb3bcceb5bed0b1bdd0b1 *bdceb1becfb1bed1b5bed1b6bfd2b6c0d0b3bdd1adbaceb3bdd0b6bed3babed3b9c0d4b8c2d5b8 *bfd2b8bfd1b9c1d1babfd1b8c1d2b6c1d3b7c2d5b9c1d3bac5d3bbc4d4bac3d1bac3d4bbbed4b9 *c2d3bcc4d3bbc3d6bdc5d8bec7d5bfcad8c0c9d8c2cadac6cbd9c3cddbc9cddcc9cfdec9d3ddcb *d3deccd3dfcdd6e0cdd3dfced3deced2dfcdd5ddccd3deccd5e0cbd4dfccd4decdd4dfccd1ddcb *d1decbd2ddcbd0ddc6cddbc4ccdbc6ccddc6cddbc5cbd8c7cddac8cedbc5ccdcc6cedcc6ccdbc9 *cddcc9cfdcc7cedac1c7cac7ced5cad3d9ccd6dd719fbe6fa2c0729fbf6aa0bf73a1c36ea1c374 *9fc372a0c16da0c06ea0c35f98bd72a0bf72a1c174a2c36ca0c0729fc26f9fc0719dc173a4c16a *9dbe699ec16da1c1719fc36ea3c16e9dc16e9ec0699cc16099be6b99be699bbe669ec0689dbe69 *9fc277a0c4689ac16e9ec0659ebf6a9fc171a2c36da1c273a3c373a4c674a3c56c9fc16ca0c371 *a2c571a5c475a4c373a2c67aa3c777a2c571a2c373a0c26c9fc377a3c377a4c375a4c375a2c573 *a4c66da2c376a1c372a2c36ea0c36fa0c270a2c378a8c670a6c778a4c47fa6c575a2c46f9ec171 *a2c36fa0c46f9ec372a0c471a2c57ba6c773a2c472a4c47ea8c573a5c571a5c471a3c575a5c674 *a5c671a3c36fa4c473a5c56ba2c376a6c767a2c676a4c771a3c573a5c66f9dc176a5c66ca4c66e *a4c46ea4c473a5c373a4c680a8c777a7c672a2c371a3c36fa4c671a4c473a5c672a5c56aa4c36c *a5c771a4c671a2c273a4c771a6c46ea3c376a4c572a3c371a3c678a5c573a5c66fa4c472a4c46f *a3c576a4c671a4c470a7c878a6c878a4c874a5c978a4c778a9c874a8c673a7c878a9c876a6c576 *a6c670a3c678a6c770a6c678a5c778a7c77aa9c675a6c66fa4c87ba7c775a4c676a5c781a9c76d *a8c980acc76da5c779a6c77aa7c77da9ca80a7c983a9c77ca9c67ea9c777aac97aa9ca76a6c876 *a6c879a7c97aa8c97ea9c87eaac977a8c67faac87ea8c87fa9c780a9c77ba7c978a9ca7aaac780 *aac982aac87ca7c679a5c67fa7c77da7c980aacb7caac97aaac76ea6c77da9c77ca9c87fa8c879 *a9c777a8c97fabcb7aa7ca81aac984adcb79a9c982adcb7da9c97baac97caac97dadca81abc87a *a9c77ba9c884aac87da9c77ba9c979aac979a9c879a9c87caac97fabc97fa9c77faac97daaca85 *abc97daacb81accb75a9c77eadc983aacb85acc97eaac97faac984aac97aadcb82aecb80aeca82 *afca7fabcb78aac981abc885aac886aec97eacc984abc980abca81adcb84acca80aac880abcb7f *accb86adc885abcb82adcb87b0ca82abc974a9c97baaca7daac885acca85aec882adc982adca7f *acca83adcb7dabcb81adcb81aecb84afcb86b1ca8ab1cb86b0cc85b1cb84abc986aecc80aac983 *b0cc85adcb82acc981afca86b0cb8ab0cc82accb80accb83abc97fadcb86adcb84adca84b0cb82 *b3c983b0cb86aecb86adca82adca86b0cb8cb1cb7fabcb85afcb84aeca82abc984aeca81acca88 *afcc82aecb7ea9c984afcb8ab2cd84afcb86adcb8aaecd87afcb7caecb86b0cb86afcc86b0cb8b *b2cc87afcb8cb0cc8ab0cc89b1cc86b1cd8bb1cc8bb2cd87b1ce8db2ce8bb2ce86aec987b0cb87 *b1cd8db2ce86b1cc8db1cc90b2cc8db2cc8fb3cc94b4ce8eb4cd92b3cd9ab7cea0bcd1a5bed2a4 *bdd1a8bfd3aabed3acc1d4a9bfd4a3bad1a4bcd1a5bdd2a3bdd4a1bcd1a7bfd4b3c2d7b8c7d8bd *cbd9c1ccdcc2ccd8bfcedcbdccd8bccbd9b5c6d8acc1d3a5bbd3a8bfd3abc1d4b2c3d3b9c9d6bf *cad8bfcaddc0c9dbbdcadabbc7d7bdc8d7b9cad8b7c7d7b5c7d9bac8dabac7d8b3c4d7b2c3d6ad *c2d6b0c3d6b3c6d6b7c7d7b7c9d8b4c5d9b3c4d7b7c6d6bcc9d8bbc8d8becad9c0cbdbbfcbdac3 *ccdac4cedac3cddbc6cfdbc5cedcc6d1ddc9d3dcc5cfddc6d0dec3cedec6d1dfc4d2ddc7d0ddc7 *d0dec6ceddc6cfddc3cdddc2cadabdc7d8bdc7d8bac6d8bbc4d3b8c6d6bbc6d6b9c3d3b8c4d5b8 *c6d5bbc4d5bbc6d8bbc6d6bdc7d6bdc6d4bcc7d5c0cbd7c2cbd5c1cbd9c1ccdac3cedbc5ceddc5 *ccdcc7cedcc7d1dbcad2ddcbd1ddcbd2dfcdd3dfced5dfced6dfccd6ddccd6decbd4dfccd7e0cb *d5e0c9d1ddcad2dec7d2dec9d1decad3dccbd3ddccd6deccd4deced3decdd3e0cbd4e0cad3dec7 *d1dac2ccd8bec7d6b8c3d3b8c3d3b6c2d5b2bfd1b2bed2afbdd0adbdcda9b8cea4b5cb9cb4c99f *b1caa6b6caa3b2c8a7b6cbaab7c8acb8caaebacfafbdcdb5c2d3b1c2d3b5bed0b7c2d4b9c3d3b5 *c1d2b4c4d5b8c4d4b1c3d2acbbceaab6c9aab9cea8b9cba0b8c9a0b6caa6b6c9a6b6c9a1b2c9a4 *b3c6a1b3c7a2b1c79eafc69eb1c79fafc99ab2ca9fb2c9a2b0c9a6b3caa9b6cca6b5cbaab9ccab *bbceacbaceaeb8cdaab8cbacbccdaebbccabb9cdafbacfadb9ccabbbcdadb9cbabb8cda8b5cca9 *b7cda7b5caa8b6cca9b7cba6b7cbafb9ceb1b7ccaeb9ccb1bccfb3bcceb1bdd2b3bdd1b4bfd1b3 *bfd0b1bed0b3bdd1b3bdd1b6c0d0b5bdcdb7c0d1b8c3d3b6c0d1b8c1d3bbbfd2b6c1d3b7c1d0b5 *c2d3b6becfb5c1d4b9c2d2bac2d2bac4d2bbc2d3b9c3d3b9c3d4b6c0d1b9c1d3b7c3d3bac3d3ba *c3d2bcc6d6bfc4d4bbc5d4bcc5d3bfc8d8c0c9d5c0c9d6c3cbd6c5ccd8c6ccdac4cbdac7cedccc *d0ddcbd1deccd5deccd6deced7e0ced8deced4deccd4decbd3ddccd3e0ccd3deced5deccd2decb *d4dcc8d2ddc9ceddc7ccdcc6cdd9c5ccdac6ced9c8cddac7cfdbcaceddcbd0decaceddc9cfdcc8 *d0dbcacfdccbcfdcc8ced7c1c8cbc7cfd6cbd4daced6db6fa3bd659ebf619bbe69a2c06e9fbf6d *9fbf6ca0c4659bc06099bd699ebf6f9fc2699cc1689dc0669abf5c97bf5c9bc15e9ec1679ec16a *a0c26ea0c16b9fc16b9ec36a9fc36fa0c3679ec3669dbf70a1c16ca0c1669bbf649abf649cc160 *9bc1669bc16a9ec46f9ec26d9fc36aa1c268a1c36a9dc26b9cc36fa2c574a0c574a3c66fa2c374 *a4c46ea2c472a1c16fa1c272a2c568a0c2679dc36da2c36fa1c36c9fc36ea0c36da1c272a0c376 *a2c36ea0c36ea2c371a2c7719fc3699fc06aa1c46ea4c270a4c473a4c373a2c377a3c371a1c46e *a1c36ea0c36c9ec16ca0c370a1c46ea2c26ea1c36fa1c56da0c36da0c469a3c572a3c467a0c466 *a2c470a3c475a0c272a3c476a4c470a0c372a1c56fa4c6699dc470a1c37aa8c476a5c56fa1c373 *9fc26da1c56da4c36aa1c46fa4c46fa5c66da3c56da4c774a4c672a5c76fa4c66aa4c56ca4c46f *a4c576a5c670a2c57ba7c776a3c670a2c370a5c473a5c471a4c66a9fc46ca4c470a3c56c9fc36d *a0c573a4c56ca4c66da4c670a2c46fa3c470a2c473a4c36ca4c770a5c36fa7c477a9c76ea4c872 *9fc678a6c772a6c66aa2c378a6c776a4c86fa7c86da6c570a3c575a4c677a7c975a6c775a5c771 *a5c672a8c778aac970a5c774a7c76ca4c57aa9c972a7c579a7c776a7c87fa7c778a9c77aa7c77b *a7c87ea9c875a7c97da9ca78a6c87ca8c77ea6c77caac776a8c87aa5c87ea9c877a8c875a7c879 *a7c980aac978a7c980aac776a8c675a6c672a7c780a9c97aa8c879a9c77da9c77ca9c980aac780 *aac877a8c87aa8c879a7c878a7c780aac880aac96ba7c877a9c77eaac97aa9c87aa8c87da9c97c *abca7eaac97ba9c882abc780a7c87fa9c981a9c876a8c77ba8c87ea9c97fabca7da8c777abc97c *aac882aac87faacb7aa8c981aeca7eaccb7eacca78adc97dacc986abc785aec985acc985accb80 *aacc84accb81accb7ca8c978aac87dabc888adc97daaca82abca7babc977abcb7dabcb7facc87c *aac97aaac883adc97faac984adca7aacca7dabca81acc882aeca7fa9c97eabc880acc981abc980 *aacb83adcb82aecc81b0cb7eacc982abc884aec981abca8bafca82aeca84afcb89aeca81aecb83 *aeca81aac984aac986acca7daac981accb84adcc7baac983acca82aecb82aac984accb80abc984 *aecb85acc985b1cc7dacc880acc97eabc888adcb84aac982adcb80abca84aeca83aeca85aecb7e *afcb85aecb85aecc88afcb83aac985adca80b1cb83b1cc86afcb81adca81accb89aecb7fabcc7d *accc84aeca86aecb89b1cc8ab0cb86aecb7eaecb85afcb88aecb85b1cc89b1cb8ab1cc86b0cc89 *b1ca85b1cb91b3cc8cb0cb8aaeca88aecc83adcb8db1cc8bb3cd8fb5ce8bb2ca95b3cd9ab8cf9d *bbd0a4bcd3a2bcd19ebbd1a5bed6a7bfd2a2bcd09fbad0a2bcd19cbad199b7d0a4bcd3afc2d6b6 *c6d8bcc8d8c0cddbbdcbdcbecbdabacbd8bbc8d8b3c5d6acc0d2a6bdd3a7bfd1acc1d3b3c3d6b6 *c6d7bbc9d8bbcad9bfc9dabecadbbfcbdabfcbdbbdc7d9bbc9d6bdc7d8bdc7d7b9c6d6b5c7d8b1 *c3d7abc2d4aec2d6b1c2d5b4c5d6b1c6d6aec3d3aec2d4b2c5d6b9c6d7bbc7d8becadac1cbdcc2 *cddbc3ccdbc5cedbc4cedec6d0ddc5cfddc7cfdec4cfddc4cdd8c0cddcc0cbd9c0cad8c3ceddc6 *cdddc6ccdbc3ccdcc3ccdcc1cbd8bdccdabdc9d8b8c7d6b5c4d3bbc3d8b8c6d5bbc3d6b6c4d3b6 *c5d3b8c6d6bbc3d7bac5d6bdc8d7c1c9d8bfc9d7c0cbd7c1ccdbc2cbdcc3cbd8c3ccd9c4cedac6 *cddbc6ceddc8d1dec6d1dcc7d3decad3decbd3e0cbd5dfcdd5ddced3deced4e0ccd5deccd7e1cc *d7e1cbd3e0c8d1ddc7d1ddc8d3dfcad3decad3decbd4deced5deccd5dfccd3e0c9d4e0cbd3dec9 *d1dec7d1ddc5cfd9bdcadbbac7d5b5c4d2b4c3d3b6c2d2b3bed0b1c0d0afbbcea5b7cca1b4caa4 *b4c8a6b6cba5b6caa6b6cca6b5cbaabbceadbdd1adbfd1b0c0d1b1c0d2b0c1d2b0bdcfb2c3d2b5 *c5d6b7c4d6b5c4d4b3c4d5b3c3d4abb9d1aab7cbaab7cba7b6c9a4b6cbaab6c8a5b3caa4b6cca0 *b1c79badc599aec5a0afc69dadc39aacc59bacc59ab0c79db1c8a0b2c9a0b1c8a2b1caa5b1caa3 *b5caa8b7cba9b8ceaab9cdaebacba9baccacb8cbaab9ccacb8cdafbcccb0b9ccacbccfacb9d0aa *b9ccabb6ccaab6caa8b4caa4b2c9a6b6ccabb9cca9b8ceaabaceacbbcdaebcd0b4bdd0b1bdd1b2 *bdd1b1bcceb3bdd1b1bdd0b3c0d1b0bfcdb5bed1b5c1ceb6bfd1b9c2d1bac1d2b6c2d1bbc1d4b3 *c3d6b7c2d1b5c0d2b6c0d1b5bfd0b5c0d3b9c3d4b7c2d1b6c2d2bac1d2b9c0d2b7c0d1b7c0d2b9 *c2d2bac3d2bbc5d7bdc2d4bdc6d3bfc9d6c0c8d7bec8d7c1c8d4c0c8d4bfc7d8c0cbdbc1ccdbc6 *cedcc8d1dbc9d2dccdd3ddcbd2dccbd5deccd4dfcdd3e0ccd4deccd3ddccd3ddcad1ddcad1dbcb *d2ddcbd2dec8d2ddc7ceddc6ceddc7d0dbc5cedbc8cfdbc8cdddc7ceddc9cfddcbd0ddc8ceddcb *d0dccbd1dec9d1dccaceddc9ced4bfc7cbc5ced3cbd3daccd6dc6c9fbd73a1c06b99bf6c9ebf6d *9fc1659cc06c9bbd669dbd6d9fc171a1c3659dc3719fc16d9fc1629bbb6f9ebd6e9ebe6e9dbe73 *a1c2689bbf649bc0649ec3709fc16b9fc06799c16198bd699ec0679cc0679dc46f9cc26899be6b *9bbf6e9ec26da0c16fa0c270a3c36da0c36ba0c477a4c56ea3c47aa2c374a3c473a1c475a3c575 *a4c477a4c677a5c570a4c479a1c372a2c372a0c36b9fc26f9ec2709bc1699fc16d9fc274a2c56c *9ec1779ec376a0c3709fc372a3c66f9fc46e9ec472a3c3719fc36da0c36ea0c66d9ec37c9dc273 *9ec275a4c370a2c274a0c36da1c46e9fc3689bc16a9fc2689fc26ba2c371a3c573a1c670a3c671 *9fc46f9fc370a4c472a2c472a3c479a4c374a4c576a4c569a1c66a9ec372a1c372a2c472a3c472 *a4c375a3c477a4c570a3c373a4c7689fc36fa0c370a4c871a3c76ba4c463a4c573a4c672a3c56f *a3c672a0c671a4c76fa1c371a5c671a2c672a2c578a1c474a4c36da0c2719ec2699fc371a2c471 *a4c577a6c675a6c871a4c36ea3c46ba0c56ea4c369a4c674a7c87ca3c670a4c673a6c775a9c674 *a3c371a4c66ca3c676a7c975a6c777a5c67aa2c572a4c679a7c57ca5c770a3c46aa5c779a4c77e *a9ca7ca7c879a6c776a4c77ba9c879a6c87ea4c875a4c977a7c680a8c977a8c87ea9c87ca6c777 *a5c66ba4c675a6c979a7c97ba7c77ea6c87ea7c777a6c679a8c679a9c880a8c87aa8c77ba9c972 *a5c77aa7c97eaaca79a6c77aa6c877a7c878a6c97aa7c87daac977a4c77caac678a8c97ea8c780 *aac978a5c87ea9c77ea9c67faac876a6c77da7c67ea9c980aac980acca79a8c978a9c980aacb7e *aac876a9c778a9c87fa9ca81a7c87ba9c881aac973a6c874a8c97eaac983aaca79a7c87eaac97f *abca76a9ca80abcb83abcc76a6c778a9c87ea9c983aacb7eaacb80acc979aac97eaaca7eaacb79 *a9c980accb84a9c97ea7c97aa9ca81abc881accb84adca7facc97facc97cadca7faccb81accb7f *aac985aecb7dabcb85abca84abc987aecb80acc97caac985abc987adcb84aaca7babca80abc980 *acca7ea9c881adc886adca83abca7dabcc81adca82aecb80abc986acc985aec981acc980acca74 *aacb88abcb8ab0ca85aeca82aec980aec97facc77da9ca86aacb86abca86accc83abcb86abcb7e *afcb85aec981acc986b0cc7aabca88adca88aecc82abca86afca84aecb86aeca83adca7eacc985 *afca84accb84adcb89aecd8aafcc86adca81afca80acca8aafcb7eaac980abca87accc79aacb86 *aeca82afcc83aec984aeca83aecb89b0cc89b0cc81aece8cb1cb85aecb8bafcb85b0c984acc986 *aecb86aec987b1ce7eb1ce87b1ce8ab0cc85aec98db1cb8db1cb8cb2cd86b1cd8fb4cf8eb1d094 *b6cf98b5cfa2b7d19cbad198b8d19bb7d0a2bbd4a0bbd2a2b9d1a1b7cf99b4ce8fb2cca2b9d1ae *c2d6b4c6d8bdc8ddbfcbd9c1cbddbdcbdabdc8d7bac7d2b5c4d6b1c1d3aec1d6afc1d3aec2d5b6 *c3d7bdc7d6bcc7d7becad7c1ccd8bccad8bdc9d9c1cbddc1cbdcbbc7d6bcc7d8b7c6d7b6c4d8b1 *c3d6acc2d4acbfd5acbfd4abc0d4a8bfd3a4bcd2a3bdd2a7bed3b3c2d5b7c4d6bec7d8c4cbdcc5 *ceddc2cddbc5cddcc7ceddc5cdddc5cedbc6d0ddc6d0ddc4d1ddc1ccddbdcad9bec8d7bcc9d8c2 *cbdbc3ccd8c2cbd8c0cadbc3ccdcc1cbdbbec7d9bbc6d4bbc5d5b6c3d4bbc5d4bbc7d7bbc6d8ba *c6d6bac5d2bbc5d3bec7d3bec6d8bec7d6c0cad7c3cbd7c5cddac3cddbc3ccdbc5ccddc4ccddc6 *cedcc6ceddc7d0ddcad1decbd2ddcad3ddcad3decbd3dfccd5e0ccd5deced5deced6deced6e1ce *d7e1ced7e0ccd4dfcbd1dec9d2ddc7d3ddc9d3decdd6e0ccd3decfd6e0ccd6dfccd3deccd6e0cb *d5e0cbd1dec9d2dec9d1ddc7ceddc3cbd9c0c9d9bdc7d7bcc6d4b8c3d5b4c1d4b2bdceb2bbcdac *b7caaab7caa3b6caa9b6cba8b7cdadbbcfb0bccfafc0d2b4c0d2b5c1d2b5c2d2b6c0d2b2bfd1b0 *c1d3b4c1d2b3c1d3b7c3d3b3bed1b1c0d1aebcd1abb6cbaab7cca6b6cca0b7cba6b6caa2b1c9a0 *b1cba0b1ca9fb0c7a1b3c7a2b1c79bacc69badc59caec69cadc6a0afc899adc79caec9a1b0c9a6 *b0c8a2b4c8a6b4ccaab7caaab6cbabb8cbabb9ccaab8cbabb9cba9b8cab0bdcdb0beccb1bbcfad *bbceaeb9cdadb6ccadb6cdaeb9cbadbacbabbbcdacb7ccaeb7caafb7caaeb9ceafbbceb3bfd1b1 *bdd1b1bdd1b1bdcfb2c1d1b5beceb9bfd1b6becfb9c0d3bac2d1b6c3d2b6c2d3b7c1d3bbc3d6bc *c1d4b9bfd2bac6d6b8c1d4b5bfd2b4c0d0b7c0d2bac2d2bbc2d3bdc2d3bbc1d3bac4d6b6c3d5b4 *c0d3bac1d0b8c3d3bcc3d3c0c5d3bec7d7bec8d7bec8d8bcc6d6bdc7d6bdc8d3c0c8d3bec9d7c1 *c8d8c2ccdac6cedbc7cfdfcbd4decbd2deccd4deccd4ddccd3deccd1ddcbd3dfccd3deccd4decb *d2decbd0dacad1dbc9d1dbc7cedbc6ccdccacfddcacfddcad1ddc9d1dbccd2dbcbd1ddcbd3decb *d0ddcbd3deccd3dfcdd3deccd3ddcacfd4c0c7cbc5ced2cbd4d9cfd6dc709fbe76a1be6fa0c16f *a0c372a0c1689dc16f9ec16b9ec0659fbf6b9ec26799c173a1c5719fc172a0c2609ec0689dc06f *9ec16c9fc26f9dc16f9dc1699dc06da1c3679ec36da0c1639bc1649ec1699ebf629bbe669bbf72 *a1c370a0c56f9fc36c9ec26c9fc16b9dbe70a0c476a3c379a5c579a5c679a3c872a5c778a6c671 *a2c670a4c36fa4c56ea2c273a2c570a2c375a4c574a4c36fa1c46da0c1719fc271a4c36b9fc372 *a3c66aa2c677a4c57ba2c36ea1c26fa0c379a0c2729ec478a2c474a3c572a4c575a4c76b9fc36e *a0c470a1c470a0c36fa0c276a3c66da1c66fa0c36da1c26ca1c370a2c46ea2c373a2c476a1c671 *a0c474a1c377a4c670a4c26fa0c3719fc26c9fc36ea0c3699ec46ca2c671a4c970a4c470a2c473 *a4c671a1c56fa5c66da1c46ca0c66da4c475a5c66fa4c96b9dc66fa1c46ba2c669a0c56fa0c66f *a4c66ea5c46aa3c673a5c66da1c26da2c374a3c574a4c376a5c471a5c678a5c76ca2c470a4c677 *a3c677a4c476a5c66da3c770a6c76ca4c670a3c571a4c76ba0c46ca3c573a4c776a4c676a5c870 *a6c772a4c76fa5c877a4c77aa8c972a5c76ea6c775a4c779a4c767a3c770a5c77ba8c977a4c96d *a5c97ba6c97da7c979a6c776a6c875a5c878a7c67aa6c872a6c972a5c778a9c77ca6c87ba5c775 *a6c979a7c97aa8c97ea9c77ea8c878a6c777a7c879a8c97ca6c77eaaca77a8c879aac874a7c879 *a9c979a7c875a7c77ba9c880a7c87da6c771a7c77aa7c876a9c877a7c87ca5c77daac97ba9c77d *aac981aac87ca9c87aa9c982abca7eaac97aa6ca75a5c67fa9c77aabc982aeca78a9c877a9c971 *a5c781a9c978a9c679aac97eaac775a7c87babc882accb77a9c882abc982aac980aac97eaaca7e *abcb75a9c777a9c87ba9c979aac983adcc81a9cb7ea8c97aa8c97cabcb83aac982accc7eaaca81 *adca7eaccb84aecc7babc980accb7caaca79aac77aabca81aeca83aac884aac97eabca83accc7e *adcc81accb85adcb80adca84adc985adcb83adca7eaccb80aecb82adca81adcc80abc97eabca84 *afcb80acca85afcb81adca7faac97faac980abc97eacc98cb1cb7eaac980aacb78aacb82aecb81 *abca83acca80accb85aecb84adcb82accb7daacb7eaccb85abcb81abcb85acc986aecb83adcb7f *aaca7daccb85adcb81adc984adca80acca83aecb82afcb83adcc80adca80adcb7faecc86aecc85 *aeca81adca82adcb82afcc83aecd85aecb85aeca82adcb86afcc81aecc83afcc84aecd7faccb82 *abca8caeca81accc83aecb81aeca85aecb82adcd81afce88b0ce8cb1cc91afce8cb0cd77abca81 *adcb83b0cc85aecc89b1cd86afcc84b0cb8bb1cb89b1cc87b1cc8fb4cd8db3cc8bb1cb8ab1cb92 *b2ce90b3cf91b4cd97b6d095b6d18db4cd92b4cf9bb6d19db8d1a1b8d09ab6d095b5d093b5d09c *b8d1a9c0d3b5c6d7bbc7dabecbddc0cbd9bfccdbbfcbd8bccbdab7c5d6b8c6d7b7c6d7b5c3d5b6 *c6d6b7c6d5bdc7d8b8c9dbbfc9d8bfcbdabdcbd8c0cbd9c1cdd9beccdbbdcbd9bcc9dab7c8dbb5 *c6d7b4c6d7acc0d4a8c1d5a3bcd2a1bad2a4bcd2a1bcd39ebad3a3bad1b1c2d5b7c6d7bfc9d8c4 *cbddc5cedec6cfdec7d1dfc6cedbc4cdddc5cedcc2cdddc3ceddc2cdddbdc9d8c0c7d8c0cbd8c1 *cad8c1cbd8c0cbd8c3cbdbc1cbdcc0cbdbbecad8bfcbd8bfcad9bac7d6bbc5d8bbc6d7bac4d5b8 *c6d6bbc8d7bfc9d8bdc9d8bfc9d6c0c9d7bfc9d7c1cbdac3ccdcc5cedac6cfdcc5cedcc6cedec3 *cddcc7cedbc8cfddc8d1dfcad2ddcad2ddcbd5dccbd6decbd5e2cdd7e0cbd4dfced4decdd4dfcd *d8e1ccd8e2cdd8e2cdd6e2ced6e0ccd4e0ccd3e0ccd5e0ccd4e0cbd6dfced8e0cbd6e0ced9e0cd *d8e2ced5e0cad3decbd4e0cbd4dec7d2dfc5cedec2cedec4cedec1cbdbc0c7d7bac6d7b5c4d6b5 *c2d2b4c1cfacbdcdaebacfaebfd1aebcd2acbdd0afc1cfb6c2d2b4c1d3b0bfd1b0c0d4b4c1d1b0 *bdcfb0bdd0b0bfd2adbdd2aebccfb5c0d1afc0cfb0c0d0adbdd3abbbd0abb7cfacb8cca2b6cca8 *b4caa4b6cb9cb3c7a4b2c8a1b3cba4b2cba2b0ca9badc89daec79cb1c99eafc79daec7a1afc9a0 *b2c89fb0c9a6b3caa3b5caa6b6cca7b5caaab7cdacbacdaebbccafbcceaebacdb1bcceb1bcccaf *bbceb0bdd1aabacdacbbcdafbbceaebbcfaeb8cdaeb9d0aeb8cdaebacbb1bccfadbacfaabccfb1 *beceb2c1d3b4bed0b2bcd1b4bed0b1bfd1b5c2d5b7c3d0bac3d2bbc2d2bbc3d1b6c4d4bbc6d5ba *c6d6bac4d3b6c0d2b8c3d4b9c4d4b9c3d3bac2d4bac1d3b8c4d5b6c5d6b5c2d5b9c3d4b9c4d3ba *c2d3bac4d3bbc4d4bac4d7bac5d5bbc3d4bbc5d8bdc6d8bfc9d6bfc9d8c1c9dac1c8d6c2c6d8bf *c9dac1c9d9c1cbdbc3ccdac7cedbcbd2decbd5decdd3e0c9d5e2cad3deccd2decdd2decdd5decc *d4decad3decbd3decbd3dec6d0dec7d0dcc7cedbc9d3ddcbd1ddccd4ddccd5dfccd3dccdd5e0ce *d3decbd3deccd5dfcdd4dfccd3decbd4decacfdac3c9cfc6d0d6cad5d8cdd7dc6d9dbc729ebf6a *9dbd729cc46e9abf6b9ec171a1c35d99bc6d9fbf6f9fc1689cbf719fc1759cbe6796bd679dc06a *9dbd669cbe669bbf739ec0649cbd699dc06ba0c3699fc170a0c46b9cc16c9fc16a9cc06b9fc070 *a0c3769dc1799fc278a0c174a1c372a1c373a3c46da0c378a3c578a7c676a3c378a2c472a2c56d *a2c572a0c475a3c36ea0c36a9dc472a1c478a3c272a0c3739fc376a0c26e9fc373a1c372a1c280 *a5c375a4c671a0c374a0c16f9fc16f9ec379a2c2749fc46c9dc377a2c273a0c279a3c372a4c66e *9ec3679dc3719fc3709ec478a1c36ea0c3739fc36a9bc26c9cc26b9ec36d9ec274a1c475a2c36f *9dc36da0c5719fc26a9fc26ca2c36ca0c472a1c26d9fc5659ac1699ec371a4c66ea4c6729fc47c *a4c676a2c470a4c46e9fc370a0c373a1c470a4c46aa1c36e9fc4709fc46ba2c3689fc175a3c56d *9ec371a0c46f9fc26c9fc670a4c67ba4c577a7c66da3c36e9fc36ca0c36a9fc375a1c573a3c47c *a5c66da0c468a1c16fa0c272a1c570a2c577a2c471a4c56ca1c474a3c47da9c770a4c670a2c479 *a5c766a0c56ea1c66ea3c777a7c96da4c772a4c66ea4c77ca6c86da0c478a5c671a4c76fa4c676 *a5c879a6c97da7c67aa9c772a4c36ea4c779a5c66ea2c57ea7c87ea7c97ba5c87ea7c776a6c777 *a4c875a4c67ba6c672a4c775a4c872a5c87ca7c87ea8c679a5c776a4c577a6c76fa4c670a4c778 *a7c774a7c77ea9c879a7c576a8c772a4c676a7c878a6c772a5c77ca6c97da7c879a6c773a6c776 *a8c676a4c97aa6c775a5c775a5c77ea9c97ea9ca77a6c778a6c677a6c77ca8c773a7c780aac77f *a9ca81aac980aac87ea9c67ba7c67ca7c87ba8c87fa9c980a9c87ca9c973a6c77da9c97daaca7f *aaca7da8c978a9c980aac87da8c882aac980accb81aac981acca7fa9c779a9c97ea9c980aac978 *a8c881aac87da9c981abc979a9c97da9c981a8c976a4c685aac978aac988aecb84accb84adca84 *adcb80aaca82a8c97ba9c981acca82abc881abca82accb82acc97daac880aac87babc982abca83 *acc97caac983aac984adca7eabc877a8c77aaac97faac981acc985aeca84accc81a9ca85afcb82 *acc97dacc881abcb7aa9c988adcb7eacc983abc988afca85abc986acca78a8c779a8c679a9ca7e *aaca86acca81aacb81abcc85adc781abc87faac777a8ca80abcb85aecb87aecb81adcc87aecc85 *aec983abc97eabca85adca87abca81abcb81aac985adca89afc981acc988aacb81accc83adca7e *accc7daaca8bb0cd86afcd89aecc8bb0cc85aecb7fadcb89b0cc86aecc87aecb87aecb83aecc85 *acca8aacca89adc987aecb89b0cb85aecb85afc984aecb89afcb8bafcb85afcb86aecb86afcb83 *accb89b0cd87afcd88b0cc8bb0cd89b1cc8db0cb8bafcc90b1cc96b5ce96b6d19ab5d19bb8d29c *b7d1a2b8d1acc1d3b7c7d7bbc7dbbcc9d9b7c7d7bbc7d7b9c7d6bbc8d6bcc9d9bdcad8bec7dabd *c7d8c1c9d8bfc9d8c0c9d8bfcbd9c1cbd8c1cbd8c1ccdbc1cbddc1ccddc1cbdac2ccdbbdcbd8b9 *c7d6b5c6d7b0c3d6a7bcd2a2b7d19cb7cf98b3ce9bb4cf9fb6d1a0b8d1acbed2b3c4d5bac6d8c2 *c7d8c4cbdbc6ceddc6d0dec4cfdbc4cdddc3ceddc5cedbc3ceddc3ccdbc1cbd8c3cbd8bfcad8be *cad8c0cad8bbc9d9bdcad6c0c7d8c1c7d8c0cbd8c1cbdcbfc8dabbc7d9bdc6d5bbc6d6bcc6d7be *c7d6bfc9d7bec8d7c2c9dbc3cbdac1cad8c3cad8c2cbd7c3ccd9c2ccdbc5cedbc7cedac6cddbc6 *cfddc5cedcc7d0dcc8d2dec8d1ddc9d2decad1ddccd3deccd3dfcdd3e0cfd6e0ced5e0ced6dfcc *d3ddced6dfced6e1d0d8e2cfd6e0ced7e0cdd6dfcdd7e0ccd6dec9d4e0c9d3deced4e0ccd1decc *d5e0cdd5decdd6e0cbd6e0cad3dec9d2dfc6cfdec2cbd8c1ccd9c6ccdcc5cddbc4cedcc4cbd9c0 *cad8becad7bcc6d6b9c3d3b7c5d1b3c2d3b0bfd2b1bfd4b1c0d1b5c0d0b3c2d4b2c1d3b2bfd1ae *bcd2afbcd1b4c1d3b2bfd3abb9d0abbbd0aebbcdb1c1d1b0c0d3b3c0d2b6c1d5b4c1d2afbfd0ad *bbcca9b7caa5b5cba7b5c9a5b6cca2b1caaab4caa4b3cba3b1c9a0acc79bacc39bacc89eacc59c *aec69dafc9a2b0caa6b2c9a7b5c9a4b5cba9b6cbabb8ccabb7ccafb8cdafbacdaebbcfb0bdcfae *beceafbdd2b0b8cdaab8ceb0b9cbadb9cdacbacbafbbccb0bccfadb9ccaab6cdabb2cbabb4cbae *baceaebbceb0bcd1b1bed2b6c0d2b5beceb2bed1b3c0d2b6c3d3b9c2d2b6c2d3bac5d6bac4d6bc *c6d6b4c1d3b2c1d3b7c0d0b4c0d2b8c2d2b9c1d1b8c0d2bac2d4b8c3d3b9c1d3b6c0d3bac2d3b9 *c3d4b8c3d4b9c4d3bac4d5bbc4d4bcc4d4bcc1d4bbc5d7bdc6d7bfc6d7bfc6d6bcc7d9c1c8dac2 *c9d9bdc7d6c0c9d8c1cad9c2cad9c4cadcc7ceddc8d1ddcad1decbd1ddc9ceddc9cedcc9cfdbcc *d3ddc8d0ddcad1ddcbcfddcacfdbc8d1dcc9cedbc7ceddcbd3decad1deccd1ddced4decdd5dece *d5dfcfd6deced3deced5decfd5decdd1ddccd2decbced5c2c9ccc6d0d3cad4d9cdd7dd6e9ebd70 *9ec1609dbd6b9bbd6f9dbd609dbf6a9dbd6b9dbf659dc0699abf6c9dc06b9bbd5e9abd679abd66 *99bc6f9dbe689bbf5e96bf6d9ec16c9fc1659bbe669cbd689dc1679cc16b9dc16d9ebe729fc06f *9cbe71a2c273a1c071a1c176a2c376a4c481a3c573a0c17ea3c37ba1c376a3c477a2c275a5c376 *a3c473a4c66fa3c373a2c275a2c1719fc370a2c0699fc273a1c26f9fc273a0c36b9fc16b9dbf73 *9cc1699ec16d9fc1659dc16f9dbf699fc16b9dc070a1c476a0c574a1c16ca0c16fa2c36ba0be77 *a0c374a2c271a1c277a1c2729fc379a2c46d9fbf70a0c2669bc06e9ec1699ec26c9ec2679cc270 *9fc2719dc26f9ec26d9dc06d9ebf70a2c169a1c3679fc472a1c36a9fc169a0c16da2c2649dc06f *a0c26a9cc0629ec172a1c372a0c46fa1c3729fc36ca2c36a9ec168a0c369a0c36b9dc3639ec372 *a4c66fa0c271a4c26a9fc26ca0c367a0c36ba2c2689fc368a0c470a4c370a5c36ca1c271a3c06f *a1c46da0c3729fc473a3c372a4c578a4c471a1c46a9fc377a7c973a4c468a1c46c9fc3709dc279 *a1c470a3c173a6c36fa4c36fa3c46ba1c275a4c373a3c379a6c772a4c47ca5c772a2c471a2c668 *a4c36ea3c375a4c874a5c672a4c670a4c277a6c475a1c56ca3c473a5c677a6c676a6c671a6c872 *a7c871a4c470a4c470a2c576a5c673a4c579a4c571a6c57ba7c67aa6c876a6c579a6c66fa4c57c *a5c479a6c678a4c571a5c777a8c579a6c67caac77ea7c673a6c670a5c380a9c679a8c771a5c776 *a5c773a6c77ea9c776a4c67aa5c677a6c575a5c57ba7c776a6c679a4c778a8c680a9c979a6c77a *a5c47ea7c77ca9c87eaac87da8c67ba8c77ba9c672a6c77aa7c683aac879a7c777a5c775a8c877 *a7c881aac980abc777a6c581acc780a9c881aac982a8ca7da8ca82aacb80abcb81aec981aac87f *abca80a8c884abca81abc979a8c87aaac77eaac87da8c57fa9c778a6c784abc97ea9c77da6c980 *aac97eabc97eabc97aacc97ca9c879a9c87eabc97eaac87ba8c97caac87da9c87da8c67cabc980 *aac77daac781aac882aac77daac97eaac97daac97ba9c678a8c67ea9c87baac881aac786abcb82 *acca7daac981aac787acc982a9c785aecb84acca78a9c781aeca78abca7daacb7caac97faac87d *aac97da9c778aac87faac97eabc887abc786aac681acc97faac782acc978a8c881a9c87faaca7f *aac87eabc97eacc882acc980acca84acc880a9c880acca7eaac980acc987adc980abcb83accb80 *abca81aac989accb8db0ca84b0cb81acc988aeca84adca87adc982afcc86abcc86b0cb88aecb83 *aecc83aecb8cafc781afcc85b0c989b0cc85aeca81acc785b0ca87aec986aecb87adcb82aac983 *acca89acca86afcb85b1cb87afca83acc988afcb8bb0cb86aecb89aecb8bafcb91b3cb97b4cd9a *b7cd9fbbd2a6bcd0adc2d6b4c6d7b8c5d8b8c7d8b6c5d4b7c7d8b8c7d4bdcbd6bfcbd7c1c9d6c1 *c9d9c1cbd8c6ccd9c1ccd8c1ccd9bfcbd9c3ccd9c3cddcc1ccd9c3cbdcc3ccd9c5cedbc2cddbbe *cbd9bdc9d8b2c4d6b1c3d6adc0d3a2b9d297b6ce95b3cd8ab1cb96b5cea4b9d0aebed2b5c5d5ba *c6d8bec8d7c4cbdac4cedbc6d0ddc4cfdcc3cddcc1cbdcc8d0ddc6cedcc2cbd8c3cbd8c2cbd8c0 *cad7c0c7d8c1cad8becbd8c0c9d7bdc9d8c1cad8bfcbd7c0c9d5bcc7d3bbc6d6bec9d6bdc6d6bc *c7d7bdc8d7c2c8d9c1c9d8c1cbd8c3ccd7c5ccd8c3cbd8c2ccdac1cbdbc3cddbc6ced9c7cfdac7 *cedac7d1dbc6cfdcc7d2ddc9d1dec9d2decbd3ddcad2ddccd3decdd3deced6dfced6e0ccd5e0cd *d5e0cdd4dfced6e0ccd7deccd7dfccd3ddced6dfcdd6e0cdd6e1ced6e1ced6dfcdd6ddced6decc *d2decbd3decbd3ddcad3e0c9d1dfc9d2e0cad2ddc6d1dbc2ccdac1cbd9c2cadac1cdd9c2ccdbc3 *cddac2cddbc4ced9c3cdd9bec8d5bbc5d5bac5d5b2c0d2b0bed0b6c3d4b5c2d3b4c5d3b6c4d5b4 *c1d4b3bfd3b1c0d1b3c0d0b1bfd2aebbceacbdcfb2c1cfb8c2d1b4c2d1b7c2d1b6c1d2b6c1cfb0 *c0d0adbdcfa8b9cea7b6caa9b8cba9b5c9aab6c9a8b5c9a2b2c8a2b4c9a0afc6a0b1c29fb1c69c *aac69eacc69dabc49eaec6a0b1c8a6b4c9a9b5caa9b6caa7b8ccabb6c9aeb5cbadbaccaeb8ccae *bbcfabb9cfaebbcdadbaccafbacbafbacfadbbcdaebbcdaebbceaeb9ceabb7cdabb8cbacb9cbaf *bbcdb0b7cbaebbcdb2bdd0b4bcd1b1bbd3b1bdd2b4c0d1b4bfcfb5c2cebbbecfbbc1d3bcc3d3ba *c4d3b8c4d3b9c3d3b9c3d3b6c0d1b5bfd1b6c0ceb6c0d1bac0d1b8c1d4bcc1d3bbc5d4b7c4d2bd *c5d0bcc1d2b7c2d2b9c1d1b9c3d4bac3d2b8c3d3bdc6d2bec6d4c1c7d6c0c6d5bdc7d3bec8d3bd *c9d5c0c9d8c3c8d8c1c9d5c3cbd9c6cbd8c4cbd8c3cbd9c4ccd9c6cddbc7cedbc6cedbc6ccd8c7 *ceddcad1dbc9cedccbcfddcacedbc9d0dbc8d3dbcad0ddcbd2ddcbd3dbccd2deccd1dbccd4decc *d5ddccd4deced6decfd5dfcfd4decfd5ddcfd5ded0d5ddcad0d3c2c8cdc6cfd5cbd4d9cdd7db72 *9cbc6fa0c06c9bbd6a9cbb6c9fbe6c9dbf689ac1709dc16a97c06c9bbf6c9dbe6ea0c2699ec06a *9abd6899bf649abe6a9cbd6c9cc26c9dc46f9ec16fa2c170a2c3759cbf71a0c37aa2c4779fc172 *9dc277a5c47da4c674a4c372a2c5789fc26da1c277a1c378a2c480a6c777a4c675a4c670a5c473 *a4c46fa2c66d9fc3709fc46e9fc3739ec674a2c5699ec3719fc178a0c3709ec3729fc3709fc36e *9ec36d9cc36d9cc376a1c374a4c472a0c4719ec370a0c370a0c46b9dc2709fc2749ec1739fc369 *9dc36d9fc2649cc16e9dc46fa0c376a0c3739fc1719ec076a1c56e9dc26b9dc2699ec4659bc16a *9cc176a2c56c9dc06e9fc36c9fc26a9fc26e9ec3699dc36e9ec46c9cc36b9dc3689cc2659ec36c *a1c46a9ec36ea0c372a2c46e9fc3739ec2699cc16d9fc4679ec360a1c46ca0c66ba0c6699bc172 *a2c26f9ec275a4c36ca2c36c9ec16e9fc26d9dc36a9fc46b9ec3689cc46fa2c46ca3c46ea2c571 *a3c370a2c36ea4c66fa0c576a4c56aa1c574a3c66fa1c56c9fc46aa4c370a2c46ba1c670a4c46e *a2c872a2c66c9dc56d9fc472a1c372a2c46ea0c36ca4c46ea4c472a5c470a2c771a1c46aa0c670 *a3c675a4c779a4c471a4c66ea4c66ba1c66ca4c982a4c770a4c773a4c872a6c76ba0c675a4c774 *a3c676a5c674a5c675a3c777a5c86aa1c678a3c66ca4c675a5c673a4c777a5c76da3c669a3c674 *a4c67ba9c97ca8c77da6c578a4c47aa6c676a6c879a6c770a3c874a4c76fa4c877a3c779a8c878 *a4c676a4c570a3c675a6c778a6c773a4c77aa5c87da7c77ba8c87ba7c778a5c679a7c67ba7ca7f *a8cb7ca9ca75a6c77ca6c77ba8c777a6c677a7c67aa8c97ea9ca7faaca78a8ca7ca7c87ca9c879 *aac87daac882aac87da9c97ca9c97ea9ca85aaca7fa7c980aac97ca4c76fa7c681a8c77daacb7e *aacb7da7c983a9c97da7c67dabc976a9c981abca7ca9c979a8c97fa9c779a8cc7eaaca74a8c781 *aac981a9c881aec981aaca82aac982aacb7ca7c97caac781abc67eaac97aaac97aa8c981abc87c *a9c97ba7c987accb81acc883abc982aac87eaac980a8c980aacb81a8ca80a9c888adc981adca80 *a9c87daac980a8c77da7c782aac879a5c889accb84abca85adcd7ca8c982acc882aac87ea9ca78 *a6c980a8c986adcb89aec981aaca83acc881abc981acc87ca9c87da9ca7daacb82accb85aac87f *adc984acca81aeca82acca7faaca80accc87accc7ea9ca89b0cb7caac97caac87cabcb83aecb83 *abcb7fadcd89afce8aafcb81aec97faecb80afcc84aecb89accb8aaccb81aacb84aecc80adca80 *abcb80abcb80abc986aac981aaca7ca7ca84accc90aecc84b1cb89b0c786adca83abcb87accb82 *abcb82abca85abcb89b0cd85aecb86b0cb89adcb8badca88accc88acc886accb8aafce93b2cd8e *b3cd95b5d097b6cfa1bad1a5bfd5b3c6d6b5c4d6b2c3d5b1c3d6b2c4d3b9c8d7bdcbd7c3cddac3 *cdd9c3cbdbc4ccdcc3cddec0ccdbc1cdd8c1cbdcc1ccdcc3cbd9c2ccdac3cdddc3ccdcc4cddec2 *ccdcbfcad7b9c9d8bbc7d8b4c5d8b0c2d5abbed49cb5cf96b4ce92b3cd96b5d1a8bbd2afc1d4b2 *c3d6bac7d9bcc6d9becadac6cedcc5d1ddc3ceddc1ccdbc1cbdcc5cdddc5cdddc3cddbc5cddcc4 *ccd9c1ccdbc1c9d9c1cbdac0cbddc0cad9c0c8dbc1c8d8c1c8d9bfc9d7bdcad6bbc8d8bdc7d6bb *c6dbbbc6d8bec9dac3cad9c3cedbc5cedbc6ceddc4cedbc3cddbc2cddcc6ccddc7ceddc6cfdec9 *d1dec7cedcc7cfdfc7d1dfc9cfddc9d0decbd2decbd3dfcbd3dfccd4ddcbd3e0cdd5e0ced7e0cd *d5dfcfd6dfced4e0ced7e1ccd5e2cdd8e0ccd5e1cdd6decfd8dfccd8e2cdd6e2cdd6e0ccd5dfce *d4decad2dfccd3dec9d5e0c9d1e0c7d1e0c7d1dfc4d0ddc4cedec1cbddbecbdcbbc9d8b8c7d7b9 *c7d8b4c8d7b7c7dbc0cbdbc0cbdcc2cbdac1cad8bdc8d5b7c3d4b7c6d6bbc7d6bcc6d7bdc6d8bb *c6d7bac3d6b2c3d6b1c1d1afbfd0b0bdcfafbbd1aebbd1b1bed3b6c3d6b3c3d5b7c4d4b7c4d3b6 *c1d3b9c1d1aebbceacbcceacb8ccadbad1acb9cbabbacca7b5cba4b4cca3b1c9a3b3c9a4b3caa5 *aec99fb2ca9caec79eb0c7a0b2caa7afc9a5b4caaab5ccabb6cdaab9ceaab8cfaeb9cdaebbceab *b6caa9b7ccaeb9ceaeb9ccaebad1b0bbcfaebcd1abbacdacbbceadbacfacb8ceadb6cbadb9ccae *b8ccacb8ceaeb8cfb1bdceb5bdd1b3bdd1b3bdceb4bcd1b5c0d1b6c0d3bac3d3b3c0d1bbc2d1b7 *c0d3b2c2d4b4c0d1b5c1d3b6c0d1b6bdd4b7bfd3b7c1d6bac4d3bac2d3bbc2d3b8bfd0bbc1d3bd *c6d3bbc6d4bcc6d7bcc6d8bcc4d3bbc3d6bbc2d4bdc6d7bdc5d4bcc4d7bfc4d6c1c8d8c0c8d7bf *c9d9bfc7d8c1c7d8c2c7d8c1c9d8c3cbdbc6ccdcc4cbdbc5cddbc3cddcc4ccdac6cbdac6cadcc6 *cbdcc5ccdccacfddc9d1ddccd2ddc9cfdecad1dccbcfddcbd0ddccd0deccd1ddcdd3dfccd4dfcd *d5decdd3ddced5e0ced7e0d1d5decfd6dfced6e0d0d6e0d0d6decad0d7c4cacec8ced5cbd5dace *d7dc689dbc679cbb649dbf6b9abd689fbe679ebd719bc06b9cbe6d9ec1669bbf709fc1609ac173 *a1bf6d9ec06d9cbf6a9dbc72a1c071a1c2739fc475a2c276a1c17ba4c177a5c46fa1c579a5c37d *a4c47ca6c678a5c37ba5c678a4c376a4c57ba5c379a4c477a5c678a4c675a2c579a3c473a2c372 *a4c376a5c378a4c46fa1c372a2c56da1c375a2c46ea0c3689dc370a3c3669fc2699ec16fa2c46d *a0c272a2c470a1c3679ec26da0c174a1c374a2c36a9ec36aa0c371a0c2699fc16ca0c36c9ec272 *9fc26c9dc1689ec26c9cc274a0c274a0c16c9ec176a0c1789fc0729fc2749fc37c9fc472a1c36d *9fc0619cbe639dc1669ec26a9ec26b9ec16b9ec1649dbf669dc0699fc06b9dc1689ec16aa4c370 *a1c4699fc5709fc669a1c373a0c1669dc166a0c36d9fc36c9ec37aa3c16ca0c46ea4c66ea2c370 *a3c279a4c56ca2c56d9fc56da0c16c9dbe72a3c46ea1c46a9fc270a0c273a2c36c9fc26da3c46c *a0c371a1c36fa3c56ea3c56aa1bf71a4c567a1c36ca4c468a1c26da0c27aa6c66da2c374a4c36b *a4c26da3c46aa3c26ea3c369a4c46ea3c371a4c66ca3c76da4c678a6c670a2c471a2c36da1c36d *a2c570a3c370a1c571a3c56fa2c37aa7c670a0c471a6c779a5c76fa4c573a4c672a4c472a5c770 *a5c36fa3c16fa5c376a5c676a5c66ca4c774a4c77aa8c87aa7c675a7c672a4c575a6c677a8c779 *a5c673a5c776a6c874a5c777a4c476a5c57aa8c773a5c778a6c772a8c87ca6c876a4c777a7c776 *a8c675a8c781aac87ba7c47da8c776a7c87fa8c97aaac877a7c778a8c77eaac675a6c67ba8c976 *a4c67ca5c67ba6c775a7c77bacc974a9c77aa8c681aac87fabc878a8c871a4c674a7c778aac781 *a9c67baac77ea9c87ba9c87fa7c679a7c77aa8c682aaca87abca7da9c876a7c87ba8c87caac980 *a8c77baac97ba9c97eaac97faac980aecb81aecb86aecc7aa7c882abc985aec884acc981aaca84 *adc975a9c779a9c87ca9c980a9c978a8cb7eaacb7baacb77a8c881acc985afca84adca7eaac881 *abc87aa9c87eaac97caaca79abc980adc87daac77eaac87eaac77da9c87ea9c97fabc982adca80 *acc982aac87fabc980a9c87ca7c682accb7ea8c981abcb7eaccb82aecb7fb0c87baec981aaca76 *a7c980aac87faac77cabc97aaac989acc97eaac786abc785acc97aaac97ea8c87dabcb81accb86 *adca7eaccb83aecb7eaac982adca86afcb81acc983acc985afcb82afcb82adca82adca7eabc880 *accb82adcb84aecb81adca8aadc980abcb81b0cb7eaccb80aecc8aacca7caacb84accb87b0ca85 *acc986b0cb81aeca81abc981acc982accb86aec97eaec985aecb82aeca85afca88adca82abca81 *accb83abc880acc984aeca87aeca83b0cb86aecb87aec980aeca8ab0cb83adc887acca90b2cd91 *b3cd92b3cb91b3cc8fb3ce9ab7d0a4bdd4aac0d6b1c2d5aabfd3a3bbd2aac2d4b6c7d4becddbc3 *ced9c3ceddc2ceddc4ccdbc2cddac4cedac6d0dac3cedcc4cdddc1ccdac1ccdcc3cddac3cdd9c1 *ccdcbdc9dab7c6d8b6c9d6b1c6d6aec3d6b0c3d6a8bfd3a0bacf99b7cd92b5cd9fbad1adc1d4ae *c1d3b2c5d5b5c5d5b5c5d5bac9d9c1cbddc4ceddc2ceddc2ccd9c1ccdac4cedcc4cfdcc4d0dbc4 *d0ddc7cfdbc5ceddc3ccdcc4ccdbc4cddbc4ced9c0ccdbc0ccdbbecbd7becbd8c0cbdac1cad8be *cad7bfcad8bcc9d6bfc9d8c2cddcc3ceddc6cddcc9d0dec9d2dec6d1dcc6cfdcc6d1dec6d1ddc7 *d1ddc8d1dec7d2ddc9d3decad1decad2ddc9d2decad5e0cbd4e0cbd5dfccd6decfd6e2cfd6e2cf *d8e0ced9e0cfd9e0cdd7dfced7e1ced7e2ced7e0ccd6dfccd6deccd6e0ccd7e0cad6e0c9d5deca *d4dfc9d4dfc9d2ddc8d2ddc7d1dcc3cfdebdcddac1cedcbbc9d8bbc9dabbcadab6c6d6b2c6d7a9 *c0d3a5bcd1a6bed2a2bcd2a6bfd4aac2d6b7c9d8bdcbdabbcbdabbc8d8bcc8d6c1cad8c1cad8be *cad9bdc8d7bac6d6b9c5d5b3c2d4b0c1d2b1c1d0b1c1cfabbccfacbccfacbfd1b4bfd3b6c1d2b6 *c2d4b7c4d2b3c3d1aebed1b1c0d0aebdd1acbed1aabbcdb0bcd0adbbcea7b7cba9b7c9a6b6caa7 *b4c9a2b0cba5b6cba4b1c8a4b3c9a3b4caa3b4caa8b2caa9b6cba8b8cdabb9ceaeb9ceb0bbcdad *bacbaebacdabbcceadbbd0b0bacfadbacfaebdcfaebccfaebcceadbacdaebccbafb8ccabbaceac *bbceaab7ceaeb7ccaebbceb1bcceb4bfd0b6c1d0b7c1d0b6c3d5bac3d3b9c3d3bcc6d6bbc6d4b6 *c1d5b8c3d2b6c4d1b5beceb6bed0b4bed1b2bfd2b7c0d2bcc2d5c0c9d8bdc7d6c1c7d3bec5d6bf *c8d6c0c8d5bcc6d5b7c5d6bbc5d6bcc3d2bcc5d6bac5d2bcc6d4bdc5d5bcc5d6bdc7d6bdc8d8be *c9d7c1cad8bfc9d6c1c9d5c3cbd6c3c9dac4ccd8c4cbdbc4ccdcc6cfddc7cddbc8cfdac6cedcc6 *ccdcc5ccdbc7cddbc9cfddc9d1dbcad3dec6d0ddc9d2ddc9d2dccbd2ddccd2dccbd3ddcbd3dece *d5dfced5decdd6ded0d7deced8e0d0d7e1d0d7e1d1d7e0cfd6decfd6e0cad0d1c3cccec7d2d6cb *d6dbcfd7dd6d9dba6e9ebc6b9ebd729ebd6c9ebd669bbd6a9cc075a1c16c9cbd709cbd6e9ebd72 *a0be76a5bf75a3c16d9dbe72a1c075a4c178a2be79a3be7da5bf7da4c079a5c07da4c378a6c480 *a7c777a4c37aa3c27da6c579a4c37ea7c574a3c578a1c47ba3c679a4c5729fc16ca2c275a3c173 *a4c271a1c377a2c16fa1c171a1c375a1c16b9fc16aa0c06e9ec073a2c26c9ebd6aa0c16a9ec36a *9ec36e9ec1699dbf6b9cc070a0c377a3c26ca0c16c9cbf6b9fbd6c9fc16a9cbf6ba1bf6ca0c16a *9cc1669bbf6e9fc06a9fbf6ba1c175a0c178a3c374a2c175a0c073a1c1709fc0709dc06b9cc06d *9ec1669bc1659ec0659dc0659cc16d9fc071a3c2679dbe699fc06ea0c16ca1c26a9fc2659fc164 *9ec0679dc06a9dc270a1c26c9fc3719bc2669dc15d99bf649cbf6b9ec26a9ec16fa3c16fa4c374 *a4c272a4c373a4c16b9fc1709fc375a4c36ea1c1649cc16ba1c3699ec069a2c168a3c16fa1c273 *a4c2669cc2679ac26c9dc1719dc16fa2c2669ec3679fc269a0c2699fc2669ec06da0c1689ec16d *a0c173a4c46da3c268a3c36da4c66ca2c76aa1c46c9fc36ea4c56ea2c372a4c270a4c36da3c167 *a1c36aa2c370a4c674a4c276a3c27ca4c36ea4c669a3c467a3c66ba1c373a4c372a4c173a4c470 *a4c76aa3c270a6c56ca4c370a5c76ca2c36da4c46da4c473a6c778a7c579a9c778a8c676a4c66e *a3c66ca2c471a4c673a4c378a6c375a7c771a5c66fa4c577a4c171a4c672a4c66fa5c375a5c576 *a7c478a4c475a4c372a4c37da6c681a8c76aa4c47ba9c979a9c76fa5c57da9c778a7c77ca5c776 *a5c772a7c676a6c476a5c579a7c578a8c477a8c77ba9c677a6c87ba9c872a8c676a6c57fa9c67a *a8c77ea9c677a5c678a9c77aa7c779a6c67ba8c778a8c678aac77aa9c67aa5c782aac782aac979 *a9c97eaac96fa6c682a9c87ea8c578a9c783adc987b1cc7eaecc7aa7c77ea9c76fa6c580aac67a *aac777a8c47da9c778a8c978a8c77daac87ea8c77ba9c879a9c772a6c57daac77cabc882acc97f *aaca7aa8c772a7c57aa9c677a8c57fa9c781aac876aac87ca8c777a9c883aac77ba9c67faac778 *a9c67ea8c67eaac779aac97fa8c680a8c681a9c785aac782abc681adc980aac97eaac985adc97b *aac97faac97eaac876a7c67daac680aac985acc882aec87fabc77faac775aac781aac87facc882 *aeca81adc77ea9c780abca85acc97faac97daac77aaac982adc97aaac87eaac97baac881adca7c *acc883aac87caac883adc782acca89aec984adc986aec980abc884aeca80aec983abcb7daac887 *acca84acc87eacc980acc986aec983abc97fabc87ea9c781abc882acc982acc97fabc980acc77e *acc982aecc81adc983adc881adc783acc888afc885b0c983aec980aec984aec986acc982aac88c *aec891b2cb92b2cc97b6cd90b2cc94b6d09bb5d093b4cd97b5d096b6ce96b5ce98b8cdb1c5d2ba *cbd7c3cedac3ccdbc2cddbc3cbd3c2ccd9c2ccd8c4cfdac3cedac3ceddc3ccd8c1ccd8becbd8be *cbd8b9c9d8b6c6d4b6c6d6aec3d5a9c2d4a4bcd1a3bccf9fb9d197b4ce9ab5cd9fb8d0a6bccfad *c0d1b0c1d3b4c5d6b1c3d3b0c2d5b7c6d8bdcadabfcbd9bfc9d8bfcbd9bfcadac3cddcc6cedbc4 *cedac4d0dbc5cedbc4cdddc3ccd8c6d0dac5d1dcc6cfdcc4cdd9c3ccdcc3cedbc0cbd8c0ccd8c3 *cbdac3cdddc1c9d9c0cad8c3cbd8c3cddbc3cedbc4cfdac7d3ddc9d3ddcbd3ddcad3dcc8d3dec7 *d1ddc8d2dec8d1ddc7d2ddc8d1ddcad3dec9d1ddc9d1dccbd2ddcbd3decbd3dfcdd4deccd4decd *d5decfd8e0ced8decfd8e0ced8e0ced8dfced9e2ccd8deccd4ddccd3dec8d3dec9d4ddc9d4dec7 *d3dec8d3ddc3d1dcbdccd7b6c6d8abc0d5a9c1d4a8c0d2a9c1d2a6c1d4aec3d5b0c3d6a5bccf9b *b9d095b5ce96b1cb97b3ca94b5cc91b4cc91b3cca4b9cfb2c3d5b0c5d5b3c3d3becad9beccd9bc *cbd8b9c8d8b9c8d6bdc7d7bdc8d7b9c4d4b8c5d3b7c3d3b5c1cfabbcd1aabbcdaebacca8b7ccae *bbcbadc1d0b5c3d2b6c3d3b1bdceadbccfa9baceacbccbb1bdccaebfccaabdcda6b8cca8b6cba3 *b6cba1b6cba9b6cba6b7caa6b6c8a5b4c7a7b5cba5b6c9a9b5caaab7cba9b5c9acb8ccaebbccad *bacbadbbccabb7cbacbbccafbdceb1bdd0b3bed0b1bdcfaebbceacb7caacb7ccacbbccb1baccae *bbceafbdcfafbcceaebbcbaebbcdafbdceb4bdceb7bfd1b9c4d3bec7d3bbc6d2bbc4d4bbc7d5ba *c4d1bbc2d2b7c1d3bcc1d2bdc6d1bac6d6b8c1d2b3c0d5bbc1cfbfc4d4c2c8d7c5cad5c4cbd9c5 *cad9c3cbd8c0c9d7bcc6d4bbc3d1bac3d3bcc3d3bdc5d3bdc6d5bcc7d7bac7d7bcc7d6c0c8d6bd *c7d4bfc9d6c0c9d8c1cbd4c1cad7c1cad6c3cad8c5cddbc6ccd9c7cedbc6d0dbc8cfdcc7cedac7 *cfd9c7ceddc5cbdac7ccd8c7ccd9c8d1dbc9d1dbcad2ddcad3ddc7d1ddcad3dccbd1dbccd3dbcb *d3dcccd3dccdd4ddd0d5decfd6e1d0d8e1d0d7dfcfd7dfcfd7ddced5ddced6dbc9d1d3c1cbcfc7 *d2d6ccd6dbced8dc739cbb699aba6c9ebd6d9cbc6f9cbc739ebd73a1c172a0c0709cc1729ec070 *9ebf739dbf769fbf759ec172a0be7ea4c275a3c37ea5c680a4c280a5c485a6c57aa4c17ba4c384 *a8c47fa5c57da7c67ba2c47da4c478a2c375a2c373a1c379a1c577a3c374a1c378a1c377a0c174 *9dc272a1c2719ec0719fc172a2bf72a2c56f9fc36f9ec36599c16a99bd759cbf6d9ebe729ebd6e *9dbe6e9fc1709fc1669ac36d98be6e9cc16e9ebf659abd729dbf6a9cc1659bc16a9bbf729cc16d *9bbf6a9abe6b9fbe709ec0739fc16c9cc1749ec16e9ec26999c0769cbe6d9cc0709ec2749fc06c *9bc06c9cbf669cbf649cc1699ac0729dc16b9cc16f9cc06a9cc175a0c272a0c174a3c26ba1c46e *9ec2699ac0699dc072a1c56f9dc26c9bbf709ec26c9dc16a9dc0679cc16c9dc16f9dc173a1c47b *a4c370a1c3699dc16f9fc56fa3c36d9dc1689ec1679cc16e9cbe709dbe6f9bbf6e9fc1679dc26b *9ec2679bc06d9ec26f9dc178a2c3679fc1709dc1629cc072a1c36b9fc4689dc26b9ec26a9fc269 *9cc16ca0c26aa3c170a1c26da1c3689fc56d9dc2749ec271a3c5639fc16ea0c3699fc46ca4c664 *a0c5679ec378a2c378a2c5709dc175a1c37ca4c775a4c477a4c36ba2c276a3c66ba1c271a4c66c *a4c372a3c771a3c676a2c470a5c572a2c56da3c46fa3c675a5c47aa4c471a3c57fa7c675a6c577 *a5c67ea2c675a1c378a4c679a5c778a3c47da5c680a8c579a5c576a3c470a1c76aa0c276a4c67a *a4c66fa5c679a6c67ca5c677a4c673a5c57aa6c675a4c573a5c77ba7c976a4c77da3c47ba4c576 *a4c381a7c777a5c77da6c77da7c77aa8c67aa5c47ca9c577a9c87eaac77aa6c67ba6c681a6c678 *a5c675a3c67ca5c781a7c57aa5c677a4c779a7c77ca6c676a5c47ca9c781aac97da6c781a7c67b *a5c673a7c776a8c979a6c87daac879a7c675a5c57daac97fa9c87daac77da4c682a6c77aa4c480 *a9c781aac77da7c67aa7c675a7c677a8c87ea8c77aa7c77daac97caac77ea8c87fa9c77ca8c87c *a9c781aac97aa7c77da7c776a7c47aa9c781a9c67ea8c683a8c57fa9c680a8c778a8c979a5c67c *aac87faac880a8c67daac780aac97aa7c77ea9c876a7c87da8c87eabc97da9c880aac781a9c778 *a8c67aaac980aac97ba8c881a8c77aa8c67da9c684aaca83aac986aac785acc97faac981a8c880 *aac97da9c981a9c87fa9c882aaca80a9c983adc97daac97da6c77fa9c785abca7fa9c782aac779 *a7c87eaac988adcb79a8c782a9c782a8c885abc781aac884acca86aec984acc984acca83accb81 *a9c97cabc980acc981aac97faac982aac984aac985acc981aac985abca78aac783abc97daac786 *adc980a9c785abc97faac884adca86acc87fabc980aaca81abc982aac782adc984acc985aeca84 *adcb8daecb8baeca92b2cd94b3cb8eb1cb89b1cc91b3cc8eb1cc90b0cc94b1cc96b1cba2b9ceb9 *c6d2c1ccd8c0ccdac1ccd8bcc8dac0c9d8c0cbd8c4ccd8c3ced8c3cddbc6ccdac2cbd8bfcbdbbd *c9d9bcc5d6bbc7d4b3c1d3acc1d3a6bcd1a0b6d196b4cf94b6d098b4cd98b2cb97b4cda3b8d0a3 *bcd1adc1d4b5c3d5b2c3d7b4c6d8b7c5d8bbc5d6bec8dac1cbdac3cbd8bfcad8c1c9d8bdcbd8c0 *ceddc3cddbc3ccd9c2cbd8c2cbdbc2cbdcc6cedec6ceddc6cedec5cddec5cedbc5cedbc5cddcc4 *cedbc4cddbc2ccdbbfcad8c1cbdbc1cbdcc4ccd9c6cedcc9cfddc8d1ddccd3deced5ddcdd5dfcb *d4ddcad2ddc9d1decad1dccbd3ddccd1ddcbd3ddcdd2ddcbd2decad4deccd3dfcbd3deccd2dece *d4dfd0d4dfced6dfced7dfcdd8e0cdd7e2d0d6e0ccd3e0ccd3dfcdd3ddccd2dfcbd2ddccd3ddcb *d3dec6d1ddc3cdddc1ccdbb6c5d7a0b6cf9ab2cb99b2ce90b1cc91b5d197b1ce98b5cf92b1cb98 *b4cc93b1cc92b3cb92b1cb95b4cc8eb1cb89aeca88aeca90adcb9bb5cf9cbad09eb8cfafc2d5af *c6d7a7c1d3aabcd4b4c2d5bbc9d9bdc8dabdc8d8bbc6d7bbc7d5b5c6d3b4c0cfaebbcfb0bccdb0 *bdceadb9cbafbbceafbcd0b3bdd2aebdcdb1bbd0b1bbcfaebaceb0bcd0b0bfd0b1bbcbabb6ccae *b9cbaab7ccabbcceaab9ceacb9ccaab4cba7b4caa6b4caa7b8cba7b7cca7b6cbabb8ccacb9cdaa *b6cdafb7ccaebacdb0bcceb2bdd0b0bbcdb1bdd1b0bdd3b1bcd1b0bcceaebbcdaeb8ccaebacdb2 *baceb0bbccafbaccacb8ccb0bbccb0bbceb7bbceb1bbcdb6c1d1b9c3d3bfc7d8bdc7d6bdc4d2bb *c6d3bbc3d5c1c6d2bec6d5c1c7d6bfc6d5bfc6d2bdc4d3bdc5d4bfc7d4c2c7d6c5cad8c6ccd9c7 *cddbc5cbd9c2cadabdc6d8bec5d6bcc4d2bbc3d3bcc5d2bcc4d2bfc4d3bdc6d4bfc7d5bfc8d8c0 *c9d7bec8d6c1c8d6c1c9d8c3c8d5c5ccd8c6cbd8c7ccdbc6cedcc7ceddc6cedbc7cedbc7cedac8 *ced8c7cddac5cedac8ccdbc8ccddc9cfdbcad0dccbd1dbcbd1dbcbd1ddccd1dcccd1dbc9d1ddcc *d3ddccd3decdd3ddcdd3decfd3dccfd6decfd6dfcfd6ded0d6e0d1d6e0d0d6ddd0d6ddccd0cfc3 *c9cdc9d0d4ccd3dacdd7de6f9ebd6f9fbd6ea0bd6d9dbe6c9bbb6b9dbf6b9fbe6a9ec0759ebf6f *a1c176a2c180a4c27fa4c47aa2c479a4c175a4c585a5c37fa7c56fa2c374a2c285a5c677a3c37d *a7c37aa4c67aa3c584a4c37ca5c479a6c575a0c36ea3c36e9ebf77a1c172a1c274a0c176a2c37c *a4c36e9ec16e9fc26c9fc1679dc16f9ec16b9dbf679dc16a9dc1669cc36fa1c66ca2c3689dc072 *a2c1729ebf6d9dbf719bc06a9abd659dbf639dc0609ec1649dc1709fc16a9cc26fa0c1719bc168 *9bbe69a0c272a1c1699cbf699bbd6a9dc16d9dc16999c06e9bc0739fc26f9fc36e9dc26ca0c267 *99bf6497bd6c9ec16d9cc0709fc1659ac06a9bc2689dc36b9bbe6b9abf629dc0659dbf6e9fc16a *9fc56aa0c3709ec3649cc172a0c0689fc16c9fc16ba0c36b9dc06da0c1679cbe6ea0c36b9dc172 *a4c372a3c36e9dc16f9ec3669ec46aa3c46ca0c56ba0c2689cbe6da0c1679dc26c9dc16ea1c172 *a2c26a9bc1669ec26c9dc26f9ec16fa1c26b9dc1679fc1619ac071a1c36a9fc3639dc3669cc365 *9ec16a9fc26aa1c46d9fc16aa2c2689bc06fa2c4679cc3689fc171a3c670a1c16ca4c370a1c26a *a2c36aa2c1649dc2679ec578a5c66ba2c369a0c3699dc26ba1c16fa3c66aa2c76ca2c66a9fc570 *9ec16ca0c36ba2c476a4c46fa4c370a4c36fa4c6669fc271a6c76ea2c46ca1c375a4c66ca3c36b *a2c26aa3c670a5c677a4c66ca1c26ba1c173a2c368a1c472a4c377a6c676a4c367a5c669a1c678 *a5c872a4c66ba4c66da6c467a0c56ca5c57da9c775a6c76ea3c76fa4c277a7c776a4c678a6c776 *a7c67ea6c679a5c775a8c777a4c778a6c672a6c372a7c679a8c670a7c67aa7c773a6c678a7c76f *a4c671a5c66aa1c476a4c76ea3c676a7c77fa9c672a6c679a7c877a6c776a6c670a7c671a5c776 *a5c479a6c67ba7c778a6c47ea9c56fa4c677a4c67ba4c676a4c378a4c679a9c676a6c676a4c373 *a2c676a5c778a6c77fa8c77aa8c778a7c676a6c773a6c679a9c777a6c86fa4c675a5c677a7c77a *a8c577a8c774a6c57ba8c683aac97ca8c979a8c67dabc879a7c678a4c67aa6c77da9c77cabc87b *a7c67ba9c97aa8c780aac87baac779abc876a9c876a8c779a6c77ba8c97da7c77eaac77aa5c778 *a7c77ea9c685abc87baac772a6c782a9c780abc681aac977a8c779a9c97eaac980aac87aaac77c *aac780a7c77da9c97aa8c87ba8c97da9c882abc97ba9c681aac980aac781aac784aac87fa9c880 *a9c980aac781acc77eaaca79a9c776a9c782acca81aeca84aac980aac978aac97faac885afca7f *accb81abcc76a4c780aac982aac97aaac984adc97daac97da8c77fa9c681aac983acc982aac97d *aac77da9c879aac77fabc980aac97aaac87faec980aaca84aaca7daac87eabc881aac885abca81 *aac87fa9c784adc983aeca86aac98ab0ca89afca84aeca86aeca87afcb83aecb8bb0cb89b0cb97 *b6cbb3c5d4bbcbd8bbcbdabcc9d8b7c6d7b8c8d8bdcad8c1cbd8c3cfd8c0ccd9c3ccd8c2ccd6bf *cbd9b8c9d7b8c6d7b0c4d6a9c0d496b4ce97b6cd8eb0cb8eb0cb8cb0cc8bb1cd88b0cc89b1cc91 *b2cb9cb7d0a5bed3aec1d4b4c1d5b4c3d6b6c6d7b7c7d9bfcadabfcbdbc0ccd8bfcbd7bbc9d7bc *c7d6bcc7d7bcc9d7bacadabbc9d6bbc7d6bfcad8c3cbdac4ccdbc5cdd9c4ceddc3ceddc5cedec5 *cddcc3ccd8c3cddbc2ccdbbfcbd8c0ccddc3ccdac3ceddc5cfdcc7d1dcc7d1deccd3ddccd4decc *d6deccd4dfcbd4dec9d3dec9d2ddcad2decbd3decbd3decbd2decbd3ddccd2decbd4e0cad3deca *d4ddcbd4dfccd5e0cdd6deccd6deced6deccd6deccd5e0cbd5e1cbd5e0cbd6decbd3dec6cfddc3 *cdd9c2cddac2cedbbacbdab1c6d896b7d184aeca86aec985acc98bb0cb96b3ce92b1cb8ab1cb92 *b0cc92b1cb8fb0ca90b1cc8eaecb8eb1cb95b2cb88b1cb8cb1cb8faecb88acc98cafcb8cb1cb95 *b5cb9dbad19fbbd19ebad0a7bed3aec1d5b6c6d7b4c4d5b7c7d6bcc7d6b9c7d7bbc6d4b6c3d3ac *bfd0afbbd4b1bcceaebbcfadbccdacbfd0abbbceabbbd1acbdceaebcd1afbcccaebfcbafbbcdad *bbcfadb9ccadbbccadb8ccaebdd0aabbceaab8cba8b8cca8b8cda7b5cba8b7cba8b6cda8b6cbaa *b7ccaab7ccaebaccafbbccafbbd0b1beceafbcceb1bfd0b2c0d2b3c1d0b5bed1b1bccbaebbccaa *b8ceaebcceb0beceb0bbceafbbceadb9ceadbbcfb0bcceb8bfceb6c1d0b4c1d1b8c5d5b6c0d1b6 *c3d2bcc3d4bbc5d6bec6d5bec6d6bdc7d6c0c7d6c0c9d7bfc8d6bfc9d8c0c9dac3cbd9c6cbdbc4 *ccddc6cddac3ccdbc3cbd7c1c8d6bbc3d5b6c4d4bbc4d3bbc1d2bcc6d5bcc5d6bec8d7bfc8d7c0 *c9d8bfc8d6c0c9d7c1c7d3c0cbd6c1c9d5c3ccd7c6ccdac6cedcc9d0ddc6cddac6cedcc6ceddc7 *ceddc7d1dac7cfdbc7cddbc9cddbc9cddcc5cddbc7cedcc9d0dcc7cfddc8d1dcc9d0dbcbd2ddcb *d2ddcbd3dbccd2deccd5ddccd4ddccd3ddcbd3deced6dfd0d6dfd0d7e0d0d7dfcfd6deced5ddc7 *cfd3c0c9ccc7cfd5ccd4daced7dc6e9dbe669cbd6f9fc072a1c16fa0c074a1c175a3c17ba3c27a *a7c683a5c681a4c680a4c67aa2c176a4c470a1c178a4c379a3c07ca5c57da4c371a3c580a5c486 *a6c579a3c57ea6c676a4c477a4c377a3c37da5c578a2c56ca1c26d9fc1699fc46ca0c0749fbe73 *9ebf6e9ec1719fc06a9ec26c9ec1679cc1689dbf6b9bbf659bbf6c9ec16d9cc06c9ec274a2c261 *9abe679dc16b9bc16b9bc0689dc16a9bc0679bc1669cc2619ac1689bbf649cbf6c9abe609bbe6e *9bbf729bc16c9dc0749ec06c9dc16f9dbe699dc16f9fc26a9bc1709cbf729fc26d9cc1729fc166 *9bc0619bc0679cc1699bc1699bbf6e9cc16d9dc06a9cc1699bc06b9cc1689bc06a9cc0699abf73 *9cc1679ac1729ec16f9ec1609dc16b9fc2679bc1679ac06fa1c36098c1689dc3739ec26aa3c36d *a0c374a2c573a4c66a9fc36a9cbe709ec272a3c36da2c36aa2c26c9ec26a9fc16b9fc26a9dc26a *9cc26b9cc3649ec0649ec26b9ec36b9dc56b9fc372a5c3659cbe669bc16ea0c26a9cc1689dc269 *a0c3659cc2679bc26a9ac16899bf689bc0719ec16d9dc36e9dbd6fa4c46da1c3719ec1699cc170 *a2c16ca1c36da0c370a0c26da2c36e9ec16a9bc36ba1c0699ec06c9ec36da3c66ca2c36aa2c26a *a2c36d9dc2699fc2689fc26a9ec16d9ec16ca2c3709ec17aa3c666a0c46ca2c56ea2c574a3c67a *a3c46fa2c36da0c37aa4c66ca1c46da5c66ca4c770a1c35f9dc378a3c674a2c575a4c571a3c772 *a5c477a6c671a3c673a4c66ca4c378a5c66fa3c47da6c679a4c578a6c773a4c776a5c66ca2c573 *a3c56fa2c575a4c26fa5c771a4c874a6c8659ec572a4c67ba5c67aa7c67ba7c77aa4c474a3c57b *a6c66fa5c671a5c674a6c77da5c678a6c574a4c673a5c770a5c773a5c76ba4c571a3c770a4c475 *a6c876a5c76fa3c57ba7c878a4c76fa4c56aa4c76ea3c676a4c46fa5c67ca9c677a6c579a4c57a *a8c675a7c682a9c87ba5c679a9c678a6c77fa8c87da6c785a9ca77a6c67aa9c874a6c871a5c77b *a6c77fa8c87aa7c772a5c779a6c777a6c67ba8c77faac87aa8c779a9c772a5c680a7c680a9c67f *a8c67ca8c779a8c77ba8c97ea7c781a9c970a6c678a5c674a6c77da9c875a7c97da9c978a6c97d *a6c778a7c67faac780aac782acc981abca80aac77da7c77ea8c87baac77baac787acc87ea8c574 *a7c77aa5c683aaca7fa7c97aa7c782a9c97ea8c87faac980aac881acc980acca81abcb72a5c77f *aac77aaac87daac97aaac875a8c87faac882adc984abc884abc97ea9c97ba7c878a8c786abc87e *aac97ca6c983a9ca7daaca80aac781abcb7faaca7da8c785acc778a9c878a7c780abc980a8c886 *aac977a9c97ba8c780abc97dabc97daac680a8c680a9c880a8c87fadc882abca80aacb7ea9c987 *acc981a8c87faac881aac882aac883accb7fabc779abc97eabca89afcb82acca84aac986afcc84 *acc98fb1cba2bcd3afc3d6b3c7d8b4c6d7b4c4d8b5c5d6bbc6d7bfc9d8c3cdd8bfcbd8c1ccdbbf *cad8bbc9d7b6c6d6afc3d4a5bfd495b5ce8caecb82acc98fb1cb8db0cd8bb1cc8eb0cc96b1cd8c *afcb8ab0cb94b4ce99b6d1a9bed2afc2d5b4c3d6bac6d9bec7d7bfcad9c1cbdabfcad9becad8bc *c8d8bbc6d8bbc4d6bbc6d6bbc5d6b7c3d3b9c6d7bec9d8bfcbd9c1cbddc4ccdcc4cddac3cddbc5 *cddcc5d0dcc3ceddc4ceddbccbdcbbc7dbc1cad9c2cbdbc4ccdbc4d0dec7d1dec9d2e0c8d3decb *d3decbd4deccd4dfccd5dfccd4decad4dfc9d3dfc8d2dec9d2dfc9d2deccd3decbd3ddccd3decb *d4decad4decbd3e0ccd4e0ccd5deccd6decdd8e0ccd5dec9d3decbd6e0cbd3e0cbd5e0c9d3dfc5 *cedcb8c8dab8c7d7b5c5d7afc1d59db7d184accb84aeca8eafc982adca83adca89abcb8cb0cc91 *b1cc92b1cb90b0cb93b3ce95b5cc8bafcb89b1cb8fb0cb90b3cd8fb0cb92b1cc8cabcc8eacca8b *aec888aeca95b6d098b7ce96b5ce9bb7cda2bcd3a8bfd69fb9d1a4bdd2a9c0d3abc1d6b7c6d6b9 *c7d4afbfd3afbed3afbfd3acbcd1abbbd1adbdd0aebbcfadbcd1b1bfd1aabcceacbcd0aebed1b1 *bfcdabbbceb0bbceafbbceadbdcfaebbd0aebed0aabacfabb9cdabb8ccacbacdadbbceb1b9ccad *b9ccacbbcfafbcd1b0bbd1acbacdadbcd1b2bdceb0bdcfb3bdceb3bdd2afbdd0b1bcd1adbbd0af *bbcfacbbcdb1bdd0aebcd1b0bdceaebbcdafbbcfb1bdd1b3bfd3b7c0d1bbc4d3b9c3d3bbc3d2b7 *c0d3bac2d2bdc7d4b7c5d5bac4d5bbc4d5bbc5d4bcc6d6bbc5d6bfc6d3c3c8d8c1ccdbc4cbdbc5 *ccdbc4cddbc6cddbc4cbdac2cbdac1c8d9bec5d3bcc5d4b7c2d6bac4d4bdc4d5bbc6d4bbc6d6bf *c7d5c0c8d4c1c9d7c1cad9c2c9d9c4cbdbc5cdd9c6cbdac6cddbcbcfdbc7cedbc7d0dbc6cedbc7 *cedec7d0ddc7ced8c7ced8c6ccdcc9cddbcacedcc9cedcc7d1dec9cfdec9cfddcad2ddcbd2dbcc *d2dcccd2deccd5decbd5decdd5dfcdd4e0ced6decfd5ded0d7ded0d6dfcfd6dfd0d7dfd1d7e0d0 *d6decbcfcfc3cacdc6d0d5cbd5d9cdd8dc6f9eba78a1bd7aa4c27ba5c57da5c186a5c486a9c47c *a5c381a7c67ea4c27da7c580a7c37fa7c480a7c279a3c176a2bf72a0bf79a4c480a5c27ba6c484 *a8c672a4c37ba5c47ba4c675a1c37da4c4759fc274a2c36ea1c170a2c272a1c36b9ec171a1c26b *9dc16f9fc3729fc076a0c16fa1c16ea0bf699bbd619abd5c9abe659cc3649cc1679bc26b9cc169 *a1bf639abd6b9ec16a99c26a9ac0659bc16c9dbf6b9bbb6da1c1649ebc6599bd669abd6299be61 *9abc6a9abd6799be6e9ebe71a2c36d9ec0699ac1649bc16e9bbe6a9bc16c9fc075a0c177a1c170 *9dc26b9fc2629ac1689bc06c9dbf709fc178a0c06e9fc0659cc066a0c1689fc36a9cc172a0c06b *9dbe669abf619cc36ba0c4699dc36e9fc36a9fc3679dc36a9cc06c9bc16c9ec16d9ec06e9fc26c *a0c46fa1c26a9ec37fa3c46fa0c06c9ec2659bc06da1c3709fc3699fc2689fc3669ec2689fc168 *a1c06e9fc16b9fc16c9dbf669dc1689ec26a9dc1689cc16aa0c15e9bc16b9dc16b9dc16da0c26f *a0c064a0c36ca3c266a2c36ca1c16fa4c26a9cbd70a2c16b9cbf6a9dc1689ebe6c9fc169a1c263 *9ac1709ec36ca2c36c9ec16b9cc06aa0c26aa1c16a9cc46ea1c369a0c36ca0c271a3c26ba4c36c *a4c670a5c66ca2c36da0c36a9fc16e9fc2699ec26aa0c26aa2c26ea4c470a4c669a2c572a2c66d *9ec270a3c670a5c374a5c473a7c775a5c671a4c370a4c56ea2c36ca1c26ea3c370a2c16da3c36b *a4c46fa4c774a4c576a4c77aa4c472a3c178a4c578a5c66aa0c478a8c674a4c670a5c66ea4c676 *a4c576a4c376a2c373a2c572a3c16da1c375a5c775a5c573a3c56da4c66da5c56ea2c46fa4c573 *a3c276a6c676a6c676a4c46ca3c679a4c571a5c676a6c673a4c579a5c570a4c574a5c579a6c773 *a5c577a8c67ba8c77aa7c67ca7c776a6c676a4c678a7c771aac975a8c775a6c676a8c67da6c672 *a5c576a9c67aa9c781a9c976a7c776a9c677a8c87ba9c779a8c776a5c77aa7c67ca7c77ca7c87a *a8c872a7c77daac877a7c67da8c67ca8c67ca8c776a6c675a6c778a8c77baac66ea4c377a4c574 *a7c679a7c677a6c776a6c678a7c87aa9c778aac873a8c779a9c777a8c77ea7c97ca9ca7da8c77d *aac77ea8c778a7c479a8c677a7c777a8c97aa7c781a9c682aac980a8c87aa9c781aac67babc77c *aac780a8c580aac783abca7daaca78aac87baaca81a8c87eaac77aa6c57fa8c67faac981a9c87a *aac87eaac979aac980aac97da9c982aac884aaca87abc882aac77daac87caaca76a7c77daac77c *aac780aac881abc97caaca7ca9c97babc87cacc87cabcb81abc984a8c87baac87da9c67fa9c983 *adc981adc77fa8c778a5c682abc782acca80abc87faac881a9c881abc97ea9c87fa8c882a9c87e *a9c77da8c880a9c782a9c884a9c881aac77fabc881aac877a9c880a9c882aac980aac984aaca85 *adc882acc978aac68db0cb92b4cc9dbad2aac1d2a3b9d2a5bdd1b1c2d4bac7d6bdcbdbc0cbd8bc *cad8becad8b7c6d5b5c4d7afbfd3a0b9cf8ab1cb8db1cb8baec98aadcb84adca87aeca85aec989 *b0c98db2cd8eb5cb8fb1cb97b4cda6bcd3b1c2d6b6c6d7bbc7d8becad7becbdac0ccdabfcbdcc0 *cbd8bfcbd9bfc8d5c1cbd8c4cdd9c3cbd6bbc6d4bdc9d8c0c7d8bfc9d7becbd8c2cdd9c1ccdcc1 *cedbc6d0dbc6d1ddc7cfdec6ceddc3cbd8bec7d8c1cbd9c0ccd9c1ccdcc1cedbc5d1ddc7d1decb *d2ddcad2decbd4ddc9d6dfcbd4decad4dec9d4decad4dfcad3dfc9d3dec9d6ddc7d2dec9d1ddc8 *d3ddc7d2ddc8d2dcc8d2dfcad1dfcad3ddc9d3ddcbd4decbd4dec9d4dfcbd5dfccd6decbd6e0c8 *d3dec2ccdbb1c4d6a2b8cd98b7cf8db5c98db3cc89aecb89aecb86adca8bacc991afcc8eb0cb90 *b0cb90b1cc94b3cd8eb1ca97b3cc90b1cc92b1cc93b1cb8db0ca91b1cb8eb2cc88b1c98ab0cd85 *acc987acc884aac98caec892afc88eaeca8bafca97b6ce97b4cf90b1cb93b2cb97b2cb99b6d09f *b9cdaac1d3b1c3d4aec1d4afbfd1adbbcfaab9ceadbdd0a9bcd1abbdd1b1bfd2aebdceb1bdcdb0 *bdceacbdd1b0bfcdaebbceaebdcdacbbd0b0bdd1aebcceb0baceadbbcfafbdd0aebdceafbecfae *bdcfb2bdceb2bcceb6bfceb2c1d2b0bed3b3c0d3b0bdceb4c0d0b2bdceb2bcd1b1bccfb1bcceb0 *bed0b2bfd1aebfceaebed1b1bdcfb1bdd0b1bdd0b2bdceb1bfd2b2bed1b3c1d3b8c1d4bac4d3bb *c3d5b9c2d3bcc3d3bdc6d4bbc4d3b6c3d1b6c3d3b9c4d3bdc5d1bdc4d2bdc6d6c2c9d9c1c9dac0 *c9dbc0c9d9c2cad8c2cbd8bec9d6bbc5d6bbc3d2bbc4d3bcc3d3b8c4d5b9c6d4bbc6d5bdc7d6bf *cad5c0cad6c1cad7c3cad7c1cad8c3cbdbc4ccdcc6cfdbc5cedbc6d0ddc9ceddc7cedbc7ccdbc9 *cedbc8cfdcc6ceddc7cfdcc7d0dcc7cfdcc9d0dbcbd0ddc9cfddcad3ddccd4ddccd4dbccd7decb *d4ddcbd3decdd3ddced4ddccd4decdd6deced5dfced6dfd0d7ded0d7e0d0d7decfd7e0cfd6ded2 *d7dfd0d7decacec9c2cacfc7d1d6cbd5daced7dd80a4c185a4c183a7c386aac482aac380a7c481 *a4c483a6c57ba4c57ba3c27aa4c27aa0c183a4c47ca4c07ba4c37ea4c27fa4c37ea5c67fa5c380 *a5c281a9c676a3c47aa1c175a2c174a1c376a2c278a2c278a3c176a2c272a2c278a0c073a1c370 *9dc16e9ec26b9ec06d9ec1679cc06a9cc16a9abf639cc36d9bbd5f9bbe6c9cc0669bbe6b9cc165 *99bd649bbd6b9fc0649abf6a98c06798be609bbe6999bf649abc6b9bbf649bbe6499c06498bf65 *9cc0649cbb6f9bbf729dbf6b9bbf6c9cc0749dbe72a1c3739fc2739ec0769fbf72a0c0759dbe73 *9cc17a9ec0769fc1769ec16c9dc473a0c16e9fc26a9dbf6f9ec26a9bc16f9ec26b9dc274a0c26d *9ec3729fc16a9ec16c9dc26b9cc1689abf699dc0669bc0649bc1689cc1689cc16598be709ebe75 *9fc1799ec275a1c272a3c373a3c56c9ec46a9bc16a9ec1669cc26ba0c36fa2c16aa1c268a2c46f *a2c36c9fc46f9fc16799c0689dc1609abf6a9ac0669fc36c9fc3679ec46899bc6d9cbf6a9dc16b *9cbf71a0c26e9fc2699dc270a0c36a9dc2699dc2729fc070a0bf659dbe669abf5e9bc0659cc06d *9ec16a9ec174a1bf689fc1639dc0639ac1699cc06d9fc376a1c36da0c36d9cc3679cc26a9ec26b *a1c36aa0c36da2c273a3c26fa2c271a4c46b9fc56ca3c574a3c36da0c16da2c474a3c573a1c46f *a3c46fa4c36ca1c46ea1c371a4c46d9dc06ca1c171a2c272a2c572a4c471a6c671a4c56ca3c370 *a2c570a3c178a2c16ea4c672a6c672a2c67ea5c76ca4c672a4c678a2c476a3c578a5c46ea1c175 *a4c26fa2c472a2c17da5c574a3c579a4c36da3c270a2c376a7c679a7c773a5c773a5c573a6c56c *a4c573a4c46ea4c476a6c671a2c47ba8c770a4c76ca1c570a2c572a3c37ca6c679a5c672a4c477 *a5c679a8c67ca7c872a4c66fa3c76fa4c66ca3c67aa4c779a6c678a7c77ca9c96fa5ca71a6c773 *a6c577a5c87aa7c770a4c582aac878a4c679a8c779a8c773a7c67fa8c776a5c67aa5c677a7c77f *aac87daac57facc77ea9c87ba7c77aa7c776a6c77aa6c679a5c67fa8c67faac675a7c673a4c67c *a7c677a6c580a6c67aa6c77da8c675a7c684a8c67fa8c778a7c673a7c876a6c76fa5c573a8c877 *a8c676a7c682aac97aa9c77da7c580a8c97faac87baac982aac77ba8c682aac981a7c77faac77b *aac77eaac877a6c57fa9c779a8c782abc87fa9c77fabc87ea9c77fa8c77ba8c779a7c879a8c97f *a8ca7fa7c781a9c680aac77da9c77caac97daaca7daac980aac880a9c983abc881aac882aac87a *aac77fabc97ba8c67caacb80aac980aac784aac886aec880abc97ea9c77ca7c975a6c87ea9c884 *abc77daac681acc980abc780abca80a9c97eaac77faac97fa8c77fa8c784a9c786adc982acc885 *abca77a6c77faac77fa9c883a8c780a9c780aac781a9c786acc97ba8c980a8c884aac882aac787 *aac97fabc784acc883afca83adcb89b0cd89adcb91afc98db1c99ab6cea5bdd1afc2d3b6c6d8bb *c9d8bac8d9bec9d8b8c8d8b1c3d4a0b9cf97b6cd93b1ce8fafc987abcb82accb81abc887aec988 *afc986abc983aecb82abc885aecc95b5cfacbfd2b3c4d5bbc8d7b9c7d7bac7d6becbd8c1ccdbc1 *cddcc1ccdcc1ccdac1cddac4cdd9c6cedac5cedcc5cedbc7cedcc4cedbc1cbddc1cbd7c1cad9c1 *ccdbc3ccd8c4cfdbc7d1ddcad2dec8d1ddc6cfddc2ccdbc1cbdbbbcad8bec9dbc2cbd8c1ccdbc1 *cedbc5d1dec8d3ddcbd3dec9d2ddc9d2ddc8d2ddc9d2decad2decbd2e0cbd3dfcad3ddc7d1ddc5 *cfddc5cfddc1ccdcbfccdac2ccdbc4d0dec4cfddc3cfdbc6d1ddc6d1ddc6d2dec7d3e0cbd3dfcb *d5dfc8d2dfbecdddadc3d596b4cc91b1c982acc889abc987accb84aeca87accb87abc986aec993 *b2cc8eb3cc94b4cd94b3ce8fb1cc91aecb93b2ce96b2ca92b2cb94b4cc8cb0cb87acc986b0cb8a *aecb8aaecb85abca8dafc98cb1ca8aaec98faecb8eaec891aeca95b0ca95b1cc91b1cb93b3c992 *b1cc96b2ca95b4cb9fb7cea9bbd2acbdd3adbcd2adbbd1a9bbcda7bbcfaebbd0aebbceaebcceb6 *c1d1b6c1ceafbfd1afbfd3b3c0d1b1bdceaebfd1b0bfd0b1c0ceb4bdd2b4bed1aebed2acbdd1ae *bdd0b2bdd2b1bcd0b2bdcfb9c1d1b5c1d3b5c2d1b3c1d2b4c0d0b3becdb2bccdb5bfd3b5bed0b6 *bdd0b4bed1b4bfceb1bfcfb1c0d1b3bed4b4bdd0b3bdd1b2bed0b3bcd0b5bed1b9c0d1bbc1d4bb *c4d3bfc5d4bac6d6bdc6d6c0c6d6c0c6d4bbc2d2bbc4d1b8c3d1bac3d4bac3d0bec6d6bac5d5bb *c6d8bec7d5c1c6d8bfc7d6bbc8d6bac4d3b3bed3b4bfd2b4bed2b9c2d1bcc4d3bbc6d4bcc7d5bd *c7d5c0c9d7c2c9d7c2c9d8c5cad8c5cbdac7ccdac8cedbc8d2dcc8d0ddc6cedcc9ceddc6cddcc6 *ccdcc7cddac8cfdbc6cfdbc8d0dac9cedbc9cfdccad0dbc9cedaccd3ddccd5dcccd5ddcdd4dfcb *d6deccd3deced6deced4ddced4ddccd5ddced7ded0d6dfcfd7dfced7dfcfd7dfd0d6dfd0d6ded1 *d7dfd1d7dfd1d7decccecbc4cdcfc9d1d8ccd5dbced7dc8aaabf81a6c17ca6c17da4c17aa5c47e *a4c47ba3c37aa2c27da5c27da3c17ba4c37ea4c37ba4c17da6c479a4c57ca5c58aa8c67ba4c176 *a5c17aa4c17ba4c1779ebd76a1c179a2c16e9fc36d9fbf75a2c2749fbe6f9ebf729fbf74a1c277 *a1c16ba0c2679cc0689bbf6799bd659cbd6a9bbe6b9fc0669cbf6c9cbe6599bd6c9cc06a9cbf6b *9bbe6a9ac0699abd6795bb649bc0649abd609ac0679abd659ac0679abb6197bc6098be609abd6b *99be6c99bd659cc06799be719cc0729fbd6ea0c170a1c1649abb6c9cc26c9cc2719dbf769fbf78 *9ebf7ca2c082a6c17fa4c280a1c27ca2c3739fc06b9cc06b9cbf6f9fc16c9dbf699dbf689fc26a *9dc3689bc26e9dc16e9ec06fa1c36a9dc25e98bd689bc16a99c16e9ac0669ac06f9dc36e9cc076 *9ebd699dc1689ec26c9ec0649bc06e9ec36c9dc36ea1c16d9cbf689dc16d9ec16a9fc3739dbf6f *9cbf6f9dc06d9cc16c9cc1719fc1659dc36c9bbd6b9bc0649bc0659ac06a9cc16d9fc16b9fc269 *9ec16a9cc0659ac0699bc1699dbe6aa1c16ea1c26fa4c3699dc06da1c26b9cbd6b9dbf6299bd65 *99bc5c99be68a0c16ea2c36b9cc06fa2c06ca0c06399bd699ebf6a9fbe609dc267a0c26c9fc365 *9dc26099be6fa1c36ba1c36aa1c56fa0c367a1c36ea3c36a9cc3719fc16da2c36fa0c06ba0c26e *a2c26ba3c46ea3c574a2c676a2c46ea1c168a2c171a4c669a1c170a3c173a4c471a3c679a8c575 *a2c370a2c276a4c372a3c16ba6c675a4c672a3c673a3c575a4c685a6c676a4c17aa3c175a3c679 *a6c573a2c171a2c275a4c373a3c675a3c576a4c57ca5c577a6c36ca3c26ba3c377a3c479a8c672 *a4c372a4c570a4c475a4c575a6c672a4c575a5c56ea4c677a3c678a3c56ca2c46ea1c26fa4c474 *a4c476a5c373a7c56ea5c678a6c678a6c674a5c771a1c36ea3c36fa5c476a4c376a6c675a4c679 *a6c67ea8c878a5c476a8c77da8c67ba6c574a7c777a8c775a8c779a6c776a7c879a5c678a4c279 *a7c77ea9c681a9c77fa9c77aa8c679a4c77aa8c67aa6c66ea7c678a6c67ca6c47aa9c67ba9c679 *a5c67aa5c57aa6c67aa5c676a6c679a7c67ba5c679a8c682aac779a9c877a7c775a5c675a8c86f *a4c880a9c67eaac77aa7c777a7c679a9c779a7c77da9c675a5c77ba9c77da7c581abc781aac880 *acc77ba9c87da8c874a5c779a7c77daac87faac87fabc87fabc97fabc87aa8c77fa8c77ca7c67d *a9c876a6c67ea9c77ca9c781abc782a9c77fa8c979a9c77ea6c67aa8c67daac77dabc77eaac97f *aaca7aa9ca82a9c880aac980a9c875a7c77aa8c784abc97baac87eaaca85aac881aac981a9c781 *a8c67faac67baac781aac97daac781aac781aac782aac97ea9c881acc87faac780aac77eabc77b *aac881aac980aac87ca7c879a8c67aa7c684a9c682a9c683aac77faac583acc980a8c97fa9c881 *aac884aac97da9c881abc785aec987adc889afc98cadcb90adc991b1ca98b5ce99b6cca3bcd0b3 *c6d4b6c6d8b5c6d6b8c6d8b3c5d5aec1d4a8bccf96b4cc95b1cb88b1ce8baeca84adcb80a8c881 *a9c77ea9c787aac780aac880aac889acc891b2cca7bcd3b6c4d7bdc7d6bbc7d6bbc7d5bec9d9bf *cbd7becbdbbfcbdac0cadbc0ccd9c5ced8c6cedbc4cedcc6cddac6d1dbc6d0dcc6cfddc3ceddc1 *cbd8c0c9d7c2cbd8c2cedbc4cedbc7d1dec9d2dec5ceddc1ccd8c0c9d8b8c7d6b7c7d8bbc9dbbd *cadabbcbd8bdcbdbc4ceddc6d1ddc2cfdcc3cedac5cfdac5d0dcc9d1ddc8d1ddcbd1dfc9d1ddc6 *d0ddc4cfdabeccdbb7c9d8abc0d5a9bfd4a8c1d5adc4d7bacad9bfccdbbecddac3cfdec2cdddc2 *ced9c3d1ddc3d0ddb1c7d89fbad38fb0cb82abc886adc982abc784aac88aadc88badc986aacc86 *afcc91b0cb86adcb85aeca8ab1ca8ab1cb90b0c88fb1cc97b2cd97b2ce94b2ca8cb0c987aecb85 *adc887adc98baeca91afca91afca85adc88bacc788adc98eb0c995b1ca94b2cb92b2cb96b6ce93 *b3cb92aecb93aeca98b1c996b2cb9eb6cda4b7cdacbcd1afc0ceafc0d1aab9cca8bacdadbcceae *bdceb1c3d1aec1ceafc1d1b1c1d2afbdd2b1bdccb1c1d0b1becfaebdd1b1bbcfb0bdd0b0bdcfb3 *c1d0b4bed3aebcceb1bdd0b2bdcfb3becfb4c2d1b8c1d1b7c3d4b7c3d3b7c1d2b3becfb4bdd2b5 *c0d3b6c0d0b7c1ceb4beceb7beceb6bfceb9bed1b7c1d1b4bdd0b6bfd1b5c1cfb4c0d1b9c0d2ba *c5d4bdc6d6bfc8d6bdc7d5bfc6d5c1c8d6c0c9d6bec7d3bcc6d1b9c4d3bdc3d2bbc3d3bdc5d6ba *c5d1bbc2d3b8c5d4bac2d3bbc2d3b7c1d3b5bed0b4bfd1b1bdcfb7c0cfb6c1ceb8c5d3b8c4d6bc *c6d3bdc7d3c0c8d5c2c7d7c3cad9c2ccd9c4ccdac6ccdbc9cedbc8d2dbcad1dbc8cfdcc9cfdbc6 *cddbc5cddbc6ccdcc6cedbc8d1ddc8cfd3cbceddcbcedcc9d0d9cbd1dcccd3deccd4deccd4ddce *d3ddced6ddcfd5deced5dfccd3ddced4deced5ddccd6ddced7ded1d7ddd0d7dfd1d7deced7dfce *d7dfd0d5e0cfd6ded0d6ddc9cdcdc4cdcfc9d3d7ced4dccfd7dd89a5bd80a2bf7ea2bd7ca2c075 *9fc072a2c070a1c17da0c17b9ebd84a6c474a2c07ba1c180a4c07ca3c27aa4c17ea4c381a4c285 *a3c16e9dbd6fa0c1739fbd78a3c175a1c276a3c377a3c671a1c1739fc16f9ebe6c9cbe6f9fbf71 *a0c171a0c26e9ec0709dbf719dbe6d9bbd699bbc6698bb5b95bb6193ba6997bd5b94bc5e98bc62 *9abb5d98bb588fbb6497bb5e98bc6097bc6198bf6398bd679abd6096b9699cbd5697bb5391b964 *97bd6d97bb6998c06b9bbd6998bd6899bc6799c0669cbf6299bc679cbf709abf779ec07ba0c17f *a1c17ca2be779fbf7a9cc07b9fc1819fc2779ec2719dbf7ea1c16a9ec06298bd5a96bd6694bb63 *9abd6398bd679abd699abd6a9abc699cc06498be6a99bf6b9abf6a9cc06d9cc26b9dc0689ec36f *9ec4719dc06c9cc16a9bbf729fc1699ac0679abf6299be6296bd6f9abe6d9dc06498c06f9bbf6f *9cc0679cc06c9dbf6ea0c06a9ebf6a9ec1689abe699abf649abe659bc1669ac1679bc0679cc069 *9dc0699bc0689dc1639ac16397bf5e9abd619abe699dc272a1c1689bc0699dc1659bc15898bd5d *97be6c98bf6998c0629bbd6c9ebe679abe5f98be5d98bf6798c0649cc16299bd689bbf6e9cbf65 *9cc16a9bc1709fc1689ec2699cc26a9dc16c9bc06c9cbf6b9ec16ca0bf6ba1c16f9fc16a9ec26c *a0c16ba1c16c9dbe679ec26ca3c272a4c470a2c26ca0c36c9ec16d9ec072a1c16da3c26fa3c36d *a0c573a1c378a5c673a1c4729fc16ca0c276a4c56ca0c172a1c072a2c176a3c273a2c36da0c278 *a1c375a1c46fa2c36fa2c176a4c26da1c36ea0c478a3c6679bbf6f9fc16fa2c36da2c3689dc473 *a0c372a3c573a3c16ea2c570a3c36fa2c472a4c374a4c470a4c56da2c379a3c478a4c577a3c36e *a4c377a4c569a0c2739fc166a2c76da2c373a5c571a6c771a4c775a2c66fa4c36da1c36ca2c475 *a3c676a6c873a4c475a5c779a5c579a4c276a3c475a3c277a4c475a4c36ea4c36aa4c675a4c776 *a4c47ca5c380a6c37aa7c471a1c376a3c570a2c671a4c475a4c577a5c472a4c57ca4c373a4c279 *a7c574a4c471a5c679a6c5639dc477a4c274a5c479a8c37aa6c66ca4c47ba8c778a6c76ca3c578 *a7c875a4c578a5c26da4c179a7c676a4c67aa5c67da7c67ba7c779a4c57ba7c67ca9c679a5c677 *a5c77ba7c679a5c67ea8c77aa6c781aac67ba7c67aa8c679a8c779a8c77ba8c87da7c87aa5c77d *a7c57aa6c67ca8c67ca8c779a5c67da8c67da7c67faaca7da9c97ba8c67aa6c678a7c77ea8c579 *a4c677a6c783abc87aa5c77ca6c77ea9c576a7c782a6c77da6c67ea8c77ea9c77caac97ba8c881 *aac779a4c573a7c477a7c57ba7c680a9c77da8c973a9c777a6c77da6c67ba7c477a5c479a8c67b *a9c678a8c77ba8c774a7c77ba6c97ca5c67ea5c576a4c577a6c67fa9c675a6c67ca7c780a9c87d *a8c77fa9c77da9c87eaac67daac576a8c680a9c783a9c57da8c78dabc88daec98cafc992b5cb92 *b1cba0b7cea1bbd3a2bad1a7bed3a6bdd2a8bdd1a3b9ce8daec985a8c881a9c77da9c781abc882 *a9c782aac882abc781a9c97aa9c783aac987a9c888abc8a0b7ceb6c6d5bbc9d6bbc6d7bac7d7ba *c9d9bdc9d7bfc9d7bec9d7bfcad8c2cddbc3cedbc3cdd9c1cddcc4ccdbc5cedcc6cedac6cedbc3 *ceddbfcbd8bcc9d7bfcad8c1cbdac6cddbc7d0dbc8d1ddc3d1dbc3cedbbac9d7b5c3d5a8bed3ac *c1d6b1c1d3b1c3d5b0c3d3b4c5d6b6c7d7bbc9d8becad8c1ccdbc3ccd9c5cedbc6ced9c6d0ddc7 *d1ddc5cdd9bbc9d8b4c5d6abbed298b4cd99b2ce93b2cd90afcba5bbd0b5c6d6b9c7d7bcc9d8ba *c9d9afc3d4b1c2d4b2c4d5a6bfd191aeca87abc985a9c982a9c783aac980a9c784aac77caacb85 *abc98ab0cb86afc986adc885adc98dadca89adca85abc98eafcb8db1cb8cafc98eb0c98aaecb82 *aac780aac789acca87adca8dadc990aec991b0c888abc886aaca88adc991afc997b0cb91b1ca95 *b2cb91b3cc92afcb90b1c996b1cc96aecb92afcb97b0c999b3cba7bdcfacc0d2a9bbcda9b7cead *bccfadbacbaebaceb0becdaebed0b4c1d3b6c1d1b3bdd1b4c1d2b3bdd0b0bdd0b0bccfb1bccdb2 *bdcfb1c1d3b2c0d2b1bdd0b4bdceb3bdd0b3bcceb6c1cfb6c0cfb3c1d3b4c1d3b8c2d2b8c1d1b6 *bed1b5c2d1b8c2d2b6c1d0b8c2d0bac2d0b9c4d1bbc5d1b9c3d6b9c3d4b8bfd2b8c3d3b9bfd1b8 *c3d2bcc3d3c0c6d6c1c7d6bfc6d6bcc6d8bdc7d6bfc8d6c1c7d7bdc6d5bbc3d1bdc6d5bdc6d7bd *c4d3b7c2d1b6c0ceb9c2d0b4bfd1b6bfd1b8c0d2b2bdd2b3beceb1bdcfb5c0d1b7c0d0b6c1d3bb *c3d3b8c3d3b9c6d5bbc9d8bdc7d8bfc7d8c2c9d9c2cbd7c4ccd7c4cad8c7ced9c6cddac5cdd9c5 *ccdcc3cbd9c5ccd9c3ccd9c6cdd9c6ccdac7cedcc9d0dccbcedecbceddcbd0dbccd3dbccd3dace *d3dcccd3ddccd5ddccd5ddccd4e0ced4decdd5ddcdd3dccdd6ddced4ddced5decfd5ded0d6dfd0 *d7e0ced6ded0d6decfd6decfd5ddc7caccc4cbcfc7d0d7ccd5dbcfd8de85a4c07da4c07ea0bc77 *a3c0729fbd74a0bd85a3c07ba3be74a2bf75a1c378a3c17fa5c370a2c176a2c177a4bf76a2c076 *a0bf79a2c0709ebd72a2c073a4c276a2bd709ebe77a0c173a0c170a1c26a9dbf6d9cc06b9cbf69 *9bbd6a9cbe5d99bc689bbc6b9dbc6198bc6698bc6599bb669cbc6099bc6297bb699abd5c96bc5d *98ba5c98bc5f99be5c96bb5f99bb5e99bc5f99bb6097bb5995bb5c97bd6497bb5d97bc6398ba60 *97bc649abd6297bb699bbd5c99bf629bbd5e9bbe6599bb699abc6a9cbd6d9dbf75a1c172a1c27f *a0c17f9fc179a0bf7fa3c182a4c17aa2c07ea1c0749dc26c9cbe709bbd5d98bd6c9cbe6c9cbe6a *9ebe639cc0679abd6798bd5f98bd5496bd659abd649ac0689cbf6a9dbe6e9fc16a9bc171a0c16c *9cbe6998bf6d9ec16d9cbd649abf699fc06a9bc06c99bd6999be6699bd679abd6b9ebe719fc36e *9ebf709ebe6e9bc1689bbe6499be669abf5d98bd619bbd5b9abf669dc0679bc06298bd6999c165 *9bbf649cbf609cbf649cbe6e9ec0649dbf679bbc679abc629bbe649bbe6598be5f99bd6098bc62 *9abd649cbc6b9cbd6999bb6ca0bf709ec15d97bf6596bf70a2c26c9fc26c9dbf689dbe6a9fbe6a *9ec1659bc0689ec2669ec06ca0c06ba2c1699dc1699cc1689dc1649abe619cc16a9fc26ba1c16e *a1c268a2c264a0c169a0bf6f9fc06a9ec16aa0c1659ec16b9fc26ba2c274a4c477a1c06a9fc169 *a1c16fa1c16f9ebf6da3c172a4c16da4c46ba2c56b9dc06c9cc16c9dc06d9dc172a2c073a4c175 *a2c16ba1c16da1c3659ec06e9fc175a4c16fa3c16da0c17aa6c66ea0c373a3c36ea3c3669dc068 *9fc171a1c06fa2c16ea2c26ca3c56da2c470a4c66fa2c46ca2c167a3c268a2c272a3c56fa1c46f *a3c375a6c6689fc16fa3c276a5c370a4c16fa2c371a4c676a5c671a4c672a4c77ba5c476a3c371 *a4c274a5c672a3c56da3c369a2c276a4c578a5c46aa2c26fa3c178a4c370a2c16da3c172a2c676 *a4c674a3c47ba5c282aac573a5c46ea5c46ea3c370a4c476a4c278a5c373a3c570a6c674a6c573 *a4c56ea4c276a3c46ea3c475a3c47aa4c57ba5c56aa2c378a6c575a6c573a5c372a5c577a4c477 *a7c66ea5c675a6c777a4c375a4c179a5c47da7c475a4c670a3c575a4c378a6c56da4c67ca6c67e *a8c679a5c67ba7c677a7c579a5c57ea8c77ba7c77aa6c77ca9c67ba8c677a7c577a7c677a4c679 *a6c67aa8c876a4c684aac880a9c67ea9c77daac77faac876a8c87aa9c980a8c980a7c780a8c96f *a5c471a5c57aa7c67fabc875a6c981a9c67da9c980a7c87aa5c77aa8c67ba7c878a8c778a8c57d *aac777a7c678a6c682a9c77faac774a7c574a6c478a5c67eaac779a7c57fa8c679a6c675a5c676 *a6c67ba8c678a8c571a4c477a5c679a5c577a4c676a4c777a5c579a6c577a6c67ea7c684a9c67c *a7c577a7c677a8c784a7c985aac874a7c473a9c775a9c682adc781aac780aac787adc88bacc793 *b1c986aec890b0c990afcb8bafcb82acc889aecb85aecc8bb0cd8baeca82aac778a8c67da8c67e *aac784a9c77aa6c683abc785aac67faac680abc77ba7c78aacc99db7cda9bfd3b2c4d4b9c5d6bc *c9d7bccad8bfcbd8becad7bfc9d6bdc8d8bcc9d8c1cbdac0cbd8bfccd9bacbd8bbcad7bdccdbbd *ccdcc1ccd8bbc8d8b7c6d8bbc8d8c2ccdbc4d0dbc6cfdbc7d1ddc7ceddc3cddbc1cbdab6c5d5ad *c1d5a4bcd0a7bdd19eb6cea4bacfa9c0d4a8bed2adc1d4b8c7d6bbcbd8bfcbd8c0cddac5ccdac7 *cfdbc6d0dbc1ccdab7c6d6adc1d3a8bdd0a3b9cea6bbcf93b2cc8fb0cb9bb8cdb1c1d3b6c6d6b2 *c7d6aac3d6a4bdd19ab6d1a2b9d09eb6ce8fb1cb8bb1cb8aadc981aac677a9c781abc985aac981 *a9c97eaac77facc885adcb85aaca7faaca86afcb85acc989aeca86abc88daec991afca91afcb8a *aecb87acca8aacc88aacc88aaec988aec996b1c88daac887acc789aec98cafca9bb5cc98b1cb94 *b1cb93b2cb98b4cc95b1cb95b1cb92aeca9bb2cb97b4ca96b1c985acc895b0cb9db4cca0baceaa *bdd1adbbcea6bad0acbbccaebcceafbdceafbfd1b2c1d1b6c2d1b7c3d3bac6d3bdc7d6bac3d3b8 *c1d1b6c2d1b6c3d0b6c4d2b7c2d1b7c2d4b6c1d2b9c4d3bac5d2b8c1d1b8c3d3bac4d3bbc3d2b7 *c4d2b9c3d5bbc3d2bec6d5bbc4d3b9c4d1bbc6d2bbc6d3bbc6d5bcc4d4bec7d8bdc7d6bdc7d4b9 *c2d1bac5d6bbc5d6bec7d8bdc7d4bfc8d6bfc7d8c1c8d7c3c9d8c1c9d1bdc9d6bfc8d3bdc7d6bc *c7d6bdc6d6b6c3d1b7c0d1b6bfcfb6bdd0b3bdd1b3bdd1b1bed1b4bed0b6c0d0b6c1d2b6c1d1b8 *bfcfb6c0d0b9c3d1bbc5d4bdc6d6bfc6d6bec5d6bfcad6c1c8d6c1cad5c2cbd8c2cdd8c5ccd8c3 *ccd8c3cbd9c3ccdbc7cbd8c6cbd8c5cddbc6cfdac8cddac9d2dcc9d0dbcbd3dccbd1ddced3ddce *d5deccd4dcced3deccd7dbccd6ddcdd6deced5ddced7deced4deced6ddcfd7deced5deced6dece *d6dfced6ddcfd7dfcfd6dfd1d6e0cdd5dcc3c9c9c3cbcfc8d2d5cbd7dbcdd9de7fa4c17ca0bd80 *a7c17aa5c17ba3c27ca3c17ea3c07da0bd709fbd73a0c2769fbf80a5c47ba2c482a4c47aa4c076 *a3be769fc175a1c278a2c175a2be72a1bd709fc1739fc06fa0c16d9dbe6f9dbc6d9dbc6e9ebf71 *9dbf699cbd719dc06a99bd659bbd6697bc6396bd6999bd679abb6295b96299be5597bf5a91bb58 *94bb5a94ba6396ba6198bb5896bd6f9bbd6099be699bbf6399bd5794bb6097ba5c97ba5f95bb5b *98be6096c06996be6091bb5b93ba659bbe6299bd699dbf5393b96a99bd689cc26f9dc27fa1c270 *9fc07aa1bf7da4c17aa2c178a0c0749fc0739dc2779bc06d99be699bbc6d9dbe639bbe6c9ec167 *9ac0669ac06999be669abe669bbe6199bd669bbd639cbe659ac0709dc06c9cc1759cc36e9cc06c *9dbf73a0c0659dbf6f9cc0709bc06c9ac073a1c36599c06a9bc3679ac1689abd689dc06699bf6d *9dc17ba2c374a2c475a4c3679ebf649abd699dc1639ac06197bd669abf659bbe6499bf6099c166 *9dc06a9cc0689bbf649bbc639bbf699cbe6e9dc06c9ac0659ac0689dc0669bc1699dbe6b9bbd70 *a1c0699fc1649cc1639cbf64a1c26299be699cc06a9dbf6697bd679abf699bc170a0c36fa0bf62 *9dc2619ac1629ac0739fc1659dc06aa1c3669bc06e9ec16a9fc16ba2c2619cc0699dc16aa0c26c *9fbf669bbf6ea1c06da1c170a1c16da3c46e9ec171a2c16d9ec06ca1c3679cc374a1c172a0c26c *9fc374a2c36da2c169a3c66da3c575a5c36ea3c26fa4c570a5c672a3c570a4c372a2c477a2c26c *a1c376a4c577a3c56c9ec4699fc1679bbf699ebe73a2c46aa1c174a4c56fa0bf74a4c377a3c56a *a2c66aa4c36fa3c46ea2c16fa4c36da2c46aa1c374a3c16ea2c46ca4c46ea4c56fa3c473a2c477 *a1c26f9ec174a3c271a0c371a3c678a4c87aa5c370a4c175a4c36fa3c56ea3c571a4c579a8c776 *a4c66ca3c670a4c378a4c473a2c172a4c676a3c370a4c373a4c378a4c66fa4c579a4c56ca3c36d *a1c274a4c37aa5c372a4c476a3c272a3c26ea3c475a7c676a5c476a6c475a6c470a4c677a6c472 *a5c56fa4c571a4c375a4c471a3c46ea2c279a4c677a5c676a4c575a7c57ea8c675a5c473a4c372 *a3c57aa9c77da7c773a4c474a6c476a7c67aa8c77ea6c774a5c679a5c777a3c67da4c677a6c672 *a6c37aa9c780a8c680a8c67aa5c676a4c475a4c47fa6c57ca9c577a7c77ba6c67aa7c77ca6c87d *a7c77da6c575a4c573a5c681abc974a9c77baac77ca7c880aac680a9c87fa9c779a7c77ca5c67d *a7c682a7c77ea7c87ca8c879a7c67ba6c676a7c776a5c779aac97ca8c976a7c77daac87ba9c978 *a7c781aac779a9c77da9c776a5c777a8c77ba5c679a5c57da5c77ba6c67aa6c679a7c677a5c67e *a8c779a5c674a5c776a6c678a5c675a6c677a8c77ca8c775a7c774a5c67da6c673a5c77aa4c77f *a7c682a7c681a9c780a9c783a8c87ba7c67daac87faac883abc77daac779aac77eaac682abc886 *aac986aac992afcb8cb1ca85accb7ba8c882acc782aac885adc984acc980aac87ca8c67eaac87b *a8c875a6c781a8c682a9c783aac77fa8c687aac884aac786adc986abc887aec992b1ca97b7d0a9 *bed3b2c4d5b9c7d6bcc9d9becadbbbc8d8b7c7d8bac8d7b9c8d6b5c7d6b8c9d8b1c1d7aabed5b1 *c3d7bbc8d7b7c7d6b0c4d5aac1d3b8c7d7c2cddbc6ceddc6d1ddc6d1dcc6d0dcc3ccdbc0cadab7 *c7d8adc1d5a8bad29cb7d1a3bad198b4cd9bb4cf9eb9d1a0bbd2abc0d5b1c5d6b5c6d7bfc9d8c4 *cfddc4cfdbc3cedcc1cddabac7d8b2c3d6b0c2d4afc2d3a3bbd193b2cb8cafcb91b2cda0b8d199 *b8cf9fb6cf9ab6ce95b6cf95b2cc94b1cd85adcb85abc986abc980aac786aac885a8c788a8c986 *abc984abcb85abc982aac985aac985adc984adca85afcc8bafc989aecb85acc886acc890b1cb88 *afcb8aadca89aac885aeca88adca87adcb8eb0cb94afc78badc885acc793b0c997b1cb9ab5cea4 *b7d09eb5cb99b2ca99b0cb99b1cb97b3ca95b2cb92b3cb8eafc990b1ca97b1cc96b1c990b1cb99 *b4caa9bdd1afbed1abbad0adbbccaabfceaebbceaebecfb3c1d2b6c3d1b8c4d4bbc8d4bdc9d6be *c8d7bdc6d7bcc6d6b9c5d4b8c4d3b8c3d5b6c3d4b9c3d2bac5d6bac6d5bdc5d5b8c3d4bbc4d4bb *c6d3bcc6d2bdc6d5bdc6d3c0c8d5bfc6d6c0c7d6bdc6d4bdc7d4bdc7d6bec7d5c0c6d6bec7d7bd *c9d8bdc9d7bdc6d8bdc7d6bcc7d8bec7d6bec5d6c0c8d7c3cbd8c3c9d8c3ccd7c1c8d6bfc8d8be *c7d7bdc6d8b9c3d6b7c1d4b3c0d1b2bed1b7c1d3b7c0d1b6c1d3b5bfd1b5c0d0b6c1d0b5c1d3b8 *c1d2bcc2d3bbc3d4bac4d3bdc5d4bdc8d6bfc9d7c0c6d8c1c8d8c2c8d9c4cad8c3ccd8c5cddac4 *cadbc3cbd8c3cbdac3ccdbc5ccd8c5cddac7cedac7d0dccbd1dbccd2decbd2decbd1dccbd0dccc *d3ddccd4ddced6ddced3deced6ddced3decfd6e0ced5dfced5deced7ded0d7decfd8deced5dfce *d5dfced5dfced5decfd5dfced6dfcdd6decdd7ddc4c7c8c4cbd0c8cfd7ccd6dcd0d8de81a4c078 *a0be7ba1bd81a2c075a0bf72a2c373a1c176a2c2799fbd78a1c179a1c17ca0c179a1c27ea2c575 *a2bf76a3c372a0c0719fc26f9ebf70a3c2739dc06f9ec0769fc3659fc06f9fc071a2c2689ebd6f *9cbf699dbf6998bb6798bc629abe649bbc689bbd639abd5b95bb6399bd639abf6099bd6298bd5f *96bc5f94bb6493bb6399bc5790bb6698bd6a9ac16999bc6998bd5f99bd5a98be5c95bb5894bb5f *95be6197c05c9abd6098be6796bb6799be679dbc6099c0629ac16298bd6c9ec06c9bc076a0c081 *9fc077a1c177a1c481a3c3709cc1709fc16b99be6e98be6c9dbf689ac06b9dc0679bbf689cc167 *9ac16e9abf6a9bc06799bf5e96bc619bbe609cc16599be6e9bc16d9dc06899c16ea0c1709dbf73 *9cbd709ec06fa0be6b9cc17199bd6a9abc6c9ac16b99c1669bc15f98c1659ac2699dc06598be6b *9cbd73a0c272a4c26c9ec16a9cc1709bbf699ec2679dc06699c16497bc709dbf609bc05f98be5e *9ac1629bc16498bf6799bf669cbf649bbf6099c1689ac06a9cbf689dc16a9ec35f9bbf659abd6a *9cbf6b99c06099c0669cc0679ec1699ac06e9cc2639cc1609cc1629ac1699bc1659cc1669bc16d *9ec26b9ec264a1c3659fc3689fc3649ac2689dbf76a2c36a9fc16c9bc2659dc26ca0c36c9ec163 *9cc0659cbf689fc16c9cc0659dc170a2c26ca2c66da0c374a4c56ea1c26b9dc2669cc1699dc16e *a1c26aa0c36fa0c16aa2c66ca3c36a9dc16a9ec16ba1c16ca1c26ca0c365a0c675a2c46b9dc170 *a0c36c9fc171a5c66c9fc36a9cc36fa4c667a1c46e9dba6fa1c170a0c271a0c36fa3c270a4c377 *a3c373a1c272a3c570a2c475a4c56ea1c070a2c46ea2c16ea2c26fa2c56f9fc36ea4c770a1c46e *a2c471a2c46ba2c473a2c370a0c469a0c370a4c47ba7c768a3c470a4c26fa3c169a3c66fa3c375 *a2c476a3c37aa6c574a5c677a5c675a4c66ea2c479a5c777a3c67da4c66fa0c275a4c579a6c66b *a4c36ca6c568a3c573a3c37aa7c677a5c475a5c477a6c56da4c578a6c671a3c47ba6c673a3c36f *a2c476a4c571a4c374a5c673a5c571a7c772a3c577a4c677a4c675a5c479a7c579a7c778a7c770 *a4c672a4c47ea6c67ea8c876a4c678a5c678a5c679a5c778a4c476a5c57fa7c972a3c674a4c677 *a4c672a3c376a6c77da9c87fa9c679a8c882aac670a8c679a7c779a9c97ea9c87fa6c57ea6c77d *a7c782aac678a8c67ea8c67da8c781aac877a6c77ca6c680a7c67ca9c57eaac77da8c877a7c87d *a7c77fa8c87ea9c882aac77da6c67facc87eaac776a6c77aa7c978a7c97ca7c978a6c784aac87b *a7c973a8c875a5c87da9c879a6c76ea4c57fa8c47ba5c681a8c67ca7c67da8c874a6c778a6c575 *a6c67fa8c67da9c77eaac880a9c87ea8c872a7c776a7c67ea5c56fa3c380a8c57aa5c57ba7c779 *a4c77aa8c77daac974a6c77ea8c680aac785a8c683a7c77eaac882a9c77ca9c67fabc883aac886 *aac87daac686aac77eaac984adca8aaecb80abca7eaac885aec77bacc979a4c678a6c77aa9c782 *aac780a8c881a9c779a5c67da7c681a9c77ba9c883aac77aa7c782aac887acc983acca81aaca82 *abc98baccba5b9d1adc0d4b4c4d6bcc9dab9c8d8b0c2d6b1c2d5b1c2d6aec2d4acbfd4a6bcd0a0 *b6ceaac0d4adc4d6a9bed3a2b8d1aabbd0b9c6d6c2ccd8c6d0ddc7d1ddc7d1ddc7d1e0c3ccddc2 *cbd8bbc7d6b6c4d5abc1d1a4b9d0a5bbd19cb9d0a0bad199b6ce97b2cd97b5ce9bb5cda3bed0b5 *c7d7bccadbbccadcc1ccdcbdcad9b5c6d7adc0d3b0c2d4aec3d698b6cf8aaecc86adca8caec892 *b1ca97b4cd92b2cc95b3cd96b5cd90b0cc86acc985acc97dabc881aac981aac97fa9c782a8c889 *aac885abc97dabc986adca81abc97ca9c87ea8c77ea7c783abca86aac98daec991aecb92b2cb93 *b1cb8cafca85aac986a9c889acc983acc98fafc890b1cc95b3cc94b1cb8fafca98b1cb98b2cb9d *b3cca6b7cfa2b6d19bb4cb9bb4cc9cb1cc92b1cb98b1c995b0cb92aeca90b0cb97b1cb99b3cc9c *b3cc97b3caa1b9cdaabed3a3bbcda9b9cca9bacbafbfceb2c1d2b3c1d3b6c3d4bbc7d4bec7d6c1 *c9d6bfcad8bfc8d9bec9d9bfc7d7bdc6d6bbc7d5bac3d5bbc5d6bcc6d4bcc5d5bdc6d6bdc7d7bd *c9d6bcc7d6bfc6d7bfc6d7bfc8d8c2c8d7c1c8d5c2c9d8c1c9d8c1cbd8c1c9d6c0c9d7bec7d6bf *c7d7c1c8d7bfc7d8c1c7d8c0c6d8bbc7d8bdc6d6bcc7d6bdc8dbc1c9d7c2c9d8c1cad7c0c9d7be *c8d6bdc7d6bec8d8bbc3d4b1bed5b9c0d1b6c2d3b8c0d1bdc2d3bbc3d5b7c4d3b7c1d2bac0d1b9 *c2d2bac4d3bcc1d1bac3d3bdc7d6bcc5d6bcc7d7bfc7d8c0c7d8c1c9d9c3cad5c1cad9c4ccdac4 *ccdbc2cad8c2ccdac3ccd9c5ccdbc4cbd6c7cddbc8cfdbcbd1ddccd2decbd3dfc9d1dcc9d0dbcb *d1ddcbd1ddccd6ddcdd5ddced3dfcfd6deced5ddced6ddcdd3ddced7dfced6ddcfd6deced6dfcf *d5decdd5dfccd6deced4dfcdd5dfcdd6e0ccd6dfcbd3ddbfc8cfc5ccd3c9d0d6cdd6ddced8de75 *9eb978a4bd76a1be75a2c076a4c0729fbd76a3c178a3c278a0bf79a1bd6da0bf739dbc749fbe76 *a1c1749fbe70a0bd71a3c168a0bd699fbf73a2bf6a9fbe649fbd6a9dbb709ebd6ba0bf669cbf6c *9dbd699dbd5e98bb5994b95f97bc5796bd5b98bd5995bc5594bb5596bb5a92ba5c97b95897ba5e *9abc6298bb4f94bb5294bc6397bf5c98bb5893ba5797bd5e95ba629abd5a9abd629abd5599bf51 *92bb5493b95a96ba6397ba6797b85f96bb5b98be6396ba6597bb6296b86999bb6a9cbb6d9abc70 *9cc079a2bf76a3c2739fc276a1c1779fc1719ebd729fbc719dbf6a99bd709dc0659cc0649bbf61 *9cc05f99bb6899bc6398be689abd5e96bb5494bc5d99be629ac16d9cc06d9ec06d9fbf669abd69 *9abf6b9abd6e9ebe6ca1c16aa2c2659cbf689abd6c9fc26c9dbf649abd6d9cc0669abf689cc167 *9ac16398bd649bc06a9bc0699abd689dc1639dbf629bbd669ebf689cc0669ac0619abf639bbd5f *99bc589abe5798bd609abd669bbf649abd649abf619bc0669dc1639bbe629abe6098bd5e9bbf56 *97bd6099c05e97bd5e98be5e9bbe5a99be619ebf669cc15d99bd649abf689cbf5c98bd5f9bbf65 *9dc06b9ec05c9bc1659cc0669ec06e9dc25f9ac1649dc2699cc0669bbf679dc16399c0679dbe64 *9dbe6a9fc0689dc0639dc064a0c1629fc1679fbf669cc16ca2c36c9ec06e9fc06c9ec0669ec163 *9bbf66a0c16b9fc169a0c06a9fc16aa3c176a3c46da0c16fa4c3609dc16aa1c46aa1c36fa2c165 *a0bf679ec15f9bc06ca0c16ba1c36aa2c16ca0c16ea2c369a1c173a4c46ea1c16da4c264a0c36e *a2c36da1c16da1c170a3c26ea3c36fa3c26fa0c16ca1c26ba0c16a9fc071a4c56ea3c36fa4c268 *a3c367a2c26a9ec26ca2c36ea3c2689fc16da4c46ca0c263a1c36fa3c3669ec371a3c667a1c36d *a1c366a1c36da1c076a5c571a4c366a1c46ca4c36fa2c469a2c376a6c370a5c26aa3c26ca3c169 *9ec16da4c36da3c06da2c66ca3c269a0c26aa1c16ba3c271a5c36da4c571a4c480a6c572a4c56f *a4c476a5c46ca3c374a5c471a4c277a6c279a7c375a5c677a6c772a4c36ea4c373a4c46da4c370 *a4c473a6c56da4c173a4c670a6c771a4c66aa4c36aa2c278a4c671a3c36ca2c373a5c66da4c673 *a4c577a5c275a5c16ea6c477a9c67faac77aa8c678a8c676a5c579a7c674a6c574a6c67ba6c376 *a6c47aa7c785acc97faac975a6c777a6c577a7c474a6c573a6c673a5c67aa6c67aa6c778a7c778 *a7c478a8c67eaac67aa8c675a9c778a7c679a6c779a7c672a5c673a6c775a7c474a4c673a5c571 *a5c677a6c775a5c779a5c67caac874a6c476a7c679a8c47aa7c677a5c476a4c478a6c674a5c475 *a7c674a7c67aa6c477a5c577a7c572a6c678a5c672a5c675a5c67aa8c878a5c474a4c473a4c471 *a4c474a6c576a9c77aa7c676a6c578a9c579a6c67aaac679a6c780aac477a6c57aa9c677aac77a *aac774a4c676a4c57ea9c685abc779a9c77caac97baac981adc981abc97ca7c682a9c677a5c676 *a5c678a8c676a9c778a8c87caac97ba7c77fa6c57da6c67aa7c57aa6c375a6c672a4c67ca8c77b *aac77fa9c881a9c78baecb96b7cf9ab6cfabc2d3b1c4d6a8bfd4a0b9d1a4bcd2a3bbcf9fbace99 *b4cc8cb1cc92b3cc9bb8cf99b7ce97b6cea9bdd1b5c6d6bcc9d7c2cedac5cedcc4d0ddc3ced9c2 *ccdbc2ccdbbdccd8b5c5d6a9bed3a6bdcfa6bbd1a3b8ce99b8cd9eb9cf97b3cd91afca92b0c98b *afc9a4b9cfafc2d3b1c3d6b1c4d7b2c6d7a9c0d3a4bcd0a2bad19fbbd090b1cb7eaac783adc97e *abc987afcb81aac882accb81aecb82aec87eadc982abc778a6c579a7c67eaac979a9c879a7c67e *a9c684aac882a8c682adc87daac87caac784aaca83a9c97fa7c67ea9c782abc889adc991b2cb91 *b2cb97b2cb88abc97ca9c77ca7c689aec87daac787acc98fb0cb9bb5cb9cb4cb9bb2c99ab4cb9d *b5cb98b3cc9cb6cd9db6ce9bb6ca9ab5cc95b4cb93aec898b1cb97aecb91b2cc92b1ca8fb1cb99 *b2c9a0b6cb9eb5cc9cb4cc9ab5cba0b7cdaab6ccaabbccadbdceafbfd2b4c3d2b8c6d4bdc9d7bd *cad9c0cbd8c2cbd8c1cdd8c0ccdac0cbd8bdcad6bec7d5bbc7d6bbc6d6bac5d6bbc6d5b9c6d6bc *c6d6bcc8d6bfc9d6c2c8d8bfc8d8c1cbd9c3cbd9c3cbd9c1cbd8c1cdd9c1ced8c3cbd8c0c9d8c1 *cadac1c9d9c3c9d7c1cbd7bfc8d8bbc8d7b9c6d7bbc5d4bbc6d3bdc7d6bdc7d6c1cbd8c0cbd9bd *c7d7bfc9d6bdc6d2bdc6d6bbc4d6b6c1d4b6c4d6b6c3d2b3c1d0b8c4d4b6c5d7b7c4d6bac5d4b5 *c2d3b8c2d3b8c5d3b6c4d4bbc5d4bac6d3bdc7d5bec7d5bdc7d5bdc7d9bcc9d4bfc9d5bfcad6c0 *ccd8c3ccd9c3cbd8c3ccdbc5ccd9c1ceddc2ccd9c5cedac7d0dbc8d0dbc9d3dcc9d1dcc7d2ddc9 *d1ddc7cfdcc7d1dccad3dccbd3dbccd4decdd5ddcdd5ddced6dcccd6dfcdd5deccd5ddcdd6ddcc *d6dcced6ddccd6deccd5deccd5ddcad4decbd3dbc7d1dbbdccd9b2c1c1c3ccd1c7d1d5cdd7dcce *d8de7da3b8729fbb80a2be759ebd78a0bd749ebd79a3c36fa2c078a4c17fa4c1739fbc7ca0bd6e *9fbd6c9abc709cbb70a2c06da2bf75a2bf75a0bd6f9cbc6a9fbf6b9fbc699bbb6d9cbd6a9abd69 *9abc659cbc699cbb6696b96496b95694b95e92bb5f94b85a96ba6098bb5a96ba5b94b95e96b854 *93b95792b76095b7629abb5694ba619bbf5d9abd5594bb6899ba5595b65992b75790b75993b962 *98bd5792ba5a97bb6a97b9669aba6a9ab96096b96496ba6a9bbb6b9bbb729fbf6d9dbe739abc73 *9dbc77a2c173a0bf77a2c081a4c36b9ebf719fc0709ebe6e9abc6e9dbb6697bc6198ba699dc164 *9bbe639bbd639cbd6497bc6496ba649abc5b98bb5c96bb699ec06799bd6ca1c26e9fc1689dbf68 *9abc679bbf6799bd669cbd689cbe699dbe6e9cbe6c9ebf6c99ba5b98bb659dbd649bbd6d9dbd61 *9dc1619abf6699bf679abc6a9abb679ebf669cbe6b9cbe679abd709fbd689dbf659cbf6098bd60 *98be5f9abf579abd5d99bd5e9abd5e98bc6099bd689fc0609abc679bbe5c97bc5b97bb5b96bc62 *9bbf6297bb649abe679dc06a9dbf659ebf5e99bd5f9abd5d98bd699abf6598bd649abe659cbf66 *9bbe5c97bb609abd69a0bf639dbe639bbe669fc1649bc0669dc1609bbc6ca1c067a0bf679dbf66 *9cbe629cbe669cbd659bbf629abe669abd689abc689ebd619cbe6ca1c1679cc1669bc16c9cbe76 *a2be6c9fbd659ebd609cbc5d9bbd669dc1659dbf65a1c0699dc1659dbf6ea3c16da0c0659dbd68 *9fc170a4c46b9ac16ca0c374a3c56ba3c0669ec06ea4c16a9fc16da1c16fa3c46fa2c26aa1c068 *9dc16e9ebf66a2c064a1bf70a3c16da1c0699ebd6da1c167a1c06a9ebf659fc1689fc0689fc068 *9fbf6da1bf6b9ec069a1c070a4c169a1c16ba0c1699fc170a3c175a1c06fa1c270a1c16aa3c36b *a2c369a2c46aa3c36ba1c265a1c169a3c365a0c168a1c16fa1c06aa2c167a2c26ea3c174a3c170 *a3c170a4c26da6c366a2c06fa5c46ba2c271a4c373a4c576a5c273a4c275a5c473a3c271a5c46f *a3c174a6c171a5c273a5c472a6c477a4c274a4c372a3c56fa4c371a5c170a4c272a5c172a5c173 *a6c472a4c471a4c174a4c479a6c376a8c575a7c675a5c36ba1c170a3c476a5c472a4c174a4c474 *a6c578a4c474a5c276a6c375a5c46fa5c578a6c678a7c574a4c574a4c47aa8c47ba8c375a4c477 *a5c471a5c56fa3c27aa6c57ba9c780aac576a8c577a9c678a6c57aa7c475a4c575a5c479a7c671 *a7c674a9c676a6c57daac778a6c576a4c776a4c476a6c47baac77eabc676a9c776a9c777a6c671 *a4c671a5c379a6c773a5c679a7c575a6c675a4c47eaac679a5c478a6c475a6c476a8c579a9c878 *a7c677a8c67ea9c679a9c677a7c677a9c675a5c47ca5c679a8c670a6c575a6c579a6c67aa4c47a *a7c379a9c670a5c672a5c571a4c276a5c572a7c679a7c774a5c676a6c572a5c36da3c376a7c579 *a9c47ea7c47ea9c67ba6c57da9c67eaac57aa9c576a7c67aa7c57daac781aac679a9c779aac67b *a7c77ca7c47da9c77aa8c67da8c777a8c67ca8c77da7c77ea7c67aa7c67ca9c67ba9c678a7c479 *a9c67faac67caac77da8c780aac885aac685abc889aec89eb9cf9ab7cd93b4cd93b5cc98b4cd99 *b6ce90b1ca8caec98caeca8cb1c989b2c98cb2cba9bed1b5c6d6bdc9d7c1ccd8c2cdd8c1cbd8c3 *cddbc0ccd9bfcbdbbac9d8b2c2d7b1c2d3b1c3d3abc1d1aac0cfa9c0d2a3becfa4bbd19cb7cd97 *b6cc8aaec689afc798b6cc98b6cf9ab6ce93b2ce8cb0ca89adca90b1cb8ab0c97fa9c681aac77f *aac77aa9c680aac785aac884a8c788afcb7fabc77faac77ca8c67aa5c675a7c67dabc782aac77d *aac872a4c685aac674a5c480aac97aa9c683abc77dadc984a9c784abc982aac678a7c67faac78c *aeca93b1cb8fb1cb8daec779a8c77aa9c77da9c681a9c689abc691afc793b1ca9bb5cb9db2cb9c *b4ce9eb6cca0b6cba0b5cba0b5cc9fb6cba2b7cb9ab5cc95b1cb9ab2cc9ab5ca95b1c997b4c997 *b2ca9bb5c9a0b7ce9fb6cc9fb8cea0b6cba3bacaa2b8cca4baccaec1cfaebdd0b1c3ceb6c5d4bc *c8d4bfcbd8c1ced7c4ccd8c6ced9c5ced8c3cdd8c2ccd8c1cad7c2cad7c0cbd7bdc9d6bbc8d4bf *c7d6bdc7d7becad7bfc9d6c0cbd8c3cbdbc5ced8c7cfd8c4ccd8c5ccd9c4cbd9c4ccd8c6ccd9c3 *cddbc3cddbc1ccd8c4ccd9c0c9d8c0cbd8bdc7d4bbc6d6bbc7d6bbc8d6bdc9d7bfcbd6c2cbd9c3 *cbd8bfc8d6bfc7d3c0c9d3bdc8d4bbc6d3b9c3d5bbc4d6b7c3d1b7bfd0b5becfb6c2d2b7c5d2b8 *c5d2bbc4d4bbc5d5bcc5d2bdc4d3b9c4d2bcc6d4bcc6d2bdc7d4bdc8d5c1c9d4c1c9d5c2cad7c1 *cad6c2cbd6c2ccd7c3ccd8c3ccd6c3ccd9c5cddac6ced8c7cbd9c8ccdac7d0dcc7d2dbc9d2ddc6 *cfdbc9d1ddc9d3daccd1dccbd3dacbd2ddcbd3deccd6ddcbd4ddcbd5ddcdd7dcced7deccd6ddcd *d5ddccd3ddcad2dccad2dcc8d4ddc8d3dcc7d1dcc5d1dbbeccdab2c2d3adbcc1c1cdd0c6d1d3cc *d7dacddade7e9fbc759dbb7aa0be79a2bd7d9ebb749dbb7da0bd779dbb729cbd7a9fbf79a2bd75 *9abb729ebd739cbd759bbd759dbd6d9abd6a9cbd699abe769ebf6d9dbb74a0bc6d9abd6a98bc68 *96b9649abc6699bc6498bc6293ba6296ba6192ba608eb7628eb85890b95c93ba6297bc5f97bc60 *96bb6298b75894b75a93b76296ba6296bd6797bc5f96b95792bb5993ba6096ba5992b65f91b864 *98bc6297b9608eb96493bb6799bc689abd5a94b86094b96095bc6499ba6b98bb709cbd75a0bf7d *a1c280a2c285a1bb7fa0c180a1c17a9fc27499be7098bc709bbd749bc06c9bbf679abd6896bd6d *98bc6796bb5a95bd6295be6097bd6099be6699be6798bb6998bb6498bc6998bb6297be689cc16a *9dc06499bd6b9bbb6c9bbc6595bd6f9cbe699cbe5e97bb6798bd6399bf669abe6f9ec16998be6e *98bd6c9cbe6a9dbf6c9dc16c9bba6a9abd679bbd6c99be6c9bc0729abe6a9bbd6b9cc16d9bc068 *9bbf6198bc689abd6498bd6799bf6b9dbf5c98bc6098bf5f98bf5692bc5e98be6499bd6b9abd69 *98be6497bd6399c06198be5d96bf6498bf689cbd699dbf6898be6c9ebf6a99bd6198be629abf64 *9abd679bc06e9fbd6a9cbe699bbd6e9cc16297bd619ac26f9bc06d9cc06399be699dbd679bbf6e *9bc0699abd5f97bc6a9bc06699be6a9cbf689bc0679cbf6a9ac06299bf6d9cbf719ebf6f9bbf6a *9bbe679cbf69a0c1669bbe699abe749fc16fa2c36fa1c36aa1c16b9cbe6a9cc167a1c171a4c46f *a0c26e9dc16ca1c369a1bf679ec06a9dc16da2bf679ac06b9fc1769cc06d9cbf669dc16099bd6b *9ec36ea1c16ea4c36da2c06da1c0729ec16e9dc0699ebf6c9ec2669cc16ba0c1669cc06b9cbf74 *a0be6e9dbf6a9bbe699ac16e9dc1669bbd6a9cc16e9fc06fa2c16da0c271a1c16b9dc175a3c36a *a1c36aa1c36ba2c36ba1c172a5c677a1c173a0c16fa1c272a1c1729ebf6ca0c06da3c370a3c173 *9ec16ba0c16d9ec26da2c272a1c172a2c16ea2c175a3c376a3c5709ec06ba1c071a2c175a5c27b *a2c274a2c370a4c66aa0c071a4c275a4c36fa0c27ba3c271a3c179a4c27ea4c477a6c57aa6c57a *a5c579a5c375a1c172a5c277a5c477a4c172a2c36ca4c674a5c57aa6c677a2c37aa3c574a4c17b *a5c370a4c374a1c278a4c574a4c47aa5c573a4c27ea9c67ca7c47ba7c47ea7c67ba5c679a6c57d *a5c57ba5c377a5c375a5c378a5c578a5c579a6c680a7c67ca6c77ba6c674a4c277a4c278a6c57d *a8c679a8c679a4c57da7c67aa4c778a5c67da5c37ca8c677a6c67fa7c77ca5c679a5c580a8c375 *a5c573a4c37aa5c27ca5c67ba5c37ea6c476a6c479a4c375a4c678a5c36ea4c374a7c47ba6c56f *a3c379a4c47aa6c679a6c671a5c578a4c674a6c47aa8c47ba6c57fa5c376a3c371a2c47ca4c675 *a4c578a4c475a4c373a5c377a5c47ea6c578a4c678a5c67ca5c678a6c77ea6c77aa8c681a4c37d *a4c47ba5c376a3c477a5c57ba5c57da7c67ea8c677a6c07baac779a6c689acc884aac876a5c679 *a5c781a9c77ea9c77ba8c374a7c77aa6c67ea5c678a5c67ea6c67ca5c67ea7c582a7c57da7c679 *a5c380a5c37ca6c57ca6c57ba6c680a8c77da8c77ca8c484a8c689adca89acca82abc87fa9c885 *acc986aecb85aec881aac785abc987aac983aac68dabc797b4cea7bdd2b1c3d4b3c6d6bdcbd8be *c8d7bdc9d8bfc9d8bec9d9b8c7d6abbfd3afc1d4afc3d5b0c3d3acc0d2abbed1a5bccf9eb9d09f *b7cc95b1ca85acc888acc788abc685aac886aac684abc97da7c580a9c780a9c87aa8c783aac67f *a8c685a8c67fa9c679a8c680aac87aa8c67eaac983aac77faac687aac786aac67da8c67ca9c77d *a8c77fa6c67ea6c77da7c37ea6c385aac786abc789aaca76a7c681a8c77eaac682aac77ea9c67f *a9c784a9c694acc98cacca80aac982a9c684a9c682a7c685aac787abc88eaac88fadca96b1ca9f *b5caa3b5cba3b9cca1b7cda4b6cea5b6cca5b6cda2b6cea4b6ce9fb3c99db5cb9ab1cb96b1c79e *b6ca9eb5ca9bb2cba1b6cca6b8cba4b8cca4b7cca0b6cda6bad1abbaccaebaceb1c1d0b3c2cfba *c4d3bec9d7c2cbd8c4cbd7c6cddbc7ced8c8cedbc6cddac4ccd9c3ccd7c4ccd9c4ccd8c3cbdac0 *c9d8c2c9d6c1c7d5c3c9d7c3cad7c3cbd8c5cbdac7ced8c9cfd9c7ced8c7ced8c9ced9c5ccd8c4 *ccd8c9cdd9c7cedbc6ccdbc6ceddc6cbdac0c9d6c1c8d4bdc7d7bac7d6bcc4d2bdc6d8bec7d8c3 *cadac4ccdac3cbd6bec7d6c0c9d6c2c8d6bdc4d3bbc6d5b9c5d4bbc5d5bbc4d1b9c1cfb6c0d1b5 *c3d4b5c2d2b7c1d0bcc5d3bdc6d5c0c8d7c0c7d6c0c6d4bec6d4c1c8d6c3c9d4c3cbd5c2cad8c3 *c9d7c2cad8c2cbd9c4ccd7c3cbd8c3ccd9c5cedac3cddac6cedac6ccdbc7cedbcacfdccbd1dbcb *d1d9cad1dbc9cedbcbd0dbccd0ddcdd3ddcdd3dccfd4deced4dcced4dbcdd5dcced5ddcdd4decc *d3deccd3deccd3ddcad1dbc6cfdbc3cedcc1cbd9b7c8d9acc2d6a4bdd2a4bcd0b0bdc3c5ccd0c8 *d1d3cbd6d9ced9dd7b9fba769fbd7ea2bd78a3bf799fbd729fbd6f99ba759bbd7598bf799ebd75 *9cbd6d9bbd739dbf6c9ec26e9dbe77a2bd799ebe6c9cbd6599bb6a9bbe6d9fc26a9ec0659cbe63 *98bb5c96bc6a99bc6598bb6096b95c90ba5994bd5492ba6095ba6395ba5f94bd5f94b95e93bb5a *96bb6399bb6196ba6498bd5c94bc619abd6193bb6496b95f96bb5091bb5896bb5e91b96298bc5f *95bb5f8eb75b92b95a8bb76098be5391bb5995bb5996bb6094bb6295bc6e9cbd739abd79a1c17d *a3c183a3c478a1c181a2c17fa3c280a2c17ea2c07c9ebf779cbf779ec1729bbf6d9abd6596bd64 *99bf6a9cbd6b99bd6195bb5e97bd5c93bd6397bd6297bd6396bc5f97be6899bc6097be6899c069 *98be699bbe6599be6f9abf6096bd6c9bbd709cc06897bd5e96bd5d96bd5f94bc6c9bc1669ac161 *9bc1659cbe6ea1c2699dc0769dc26e9cc0709dbd6b9dc16d9bc0699cbe6899bd6b9bbf749ac16b *9ac06699be6096bd659ac05f99bf619abe639cbf6b9cbf6697bd6194bc6497bf6099bf629cc066 *9cbf6597c06498be6399c06097bf659ac0629cc05d98be5d99bf6198bc659cc0649bc06798bf62 *98bd649ac069a2c3609abf669bc0639ac170a2bf639dc2729dc0679dc16799bf6f9bc0639ac064 *9cc16c9ec5679ec2669bc2689bbf689bc2689dc2699dc16d9ec167a0c167a0c1679fc1659dbf6a *9ec2699cc16f9cc06b9ec06b9cbe6ba0c071a1c36a9dc3739fc1699ec26a9dc16b9dbf6d9ec170 *a0c16ca1c26ca1c16ca2c66b9ec16d9dc16a9cbf70a1c1679ec0649dbf70a1c174a2c16fa2c169 *9dbf6f9ec1699bc16d9fc177a2c174a3c371a4c56ea3c46b9ec1669dc0739fc1699ec06b9dc06a *9dc16c9ec26ea0c26aa0c26ea0c1699fc1699dbf689dc06fa3c371a4c36ca0c26ea3c375a4c36e *9ec0699cc16a9dc16d9ebf6ea3c36da2c572a3c66aa0c36da1c36e9ec26f9fc373a2c170a2c36e *9cc16ea1c271a4c574a4c46da1c26fa3c36a9fc3729ec274a2c474a1c576a4c278a3c475a4c56e *a4c478a4c36da3c374a2c378a4c470a1c370a2c373a2c570a3c36ba1c277a4c56da3c575a1c576 *a3c37ba7c578a5c579a4c373a5c572a2c474a3c379a7c66fa4c56ba4c46aa3c57ea8c66fa4c776 *a4c574a3c579a6c676a4c67aa5c37aa4c577a6c77da7c779a9c978a8c675a4c571a3c57da4c57e *a7c678a4c67aa5c677a5c77da9c874a6c675a4c47ea7c576a6c573a6c678a4c776a7c77ca8c782 *aac87ca7c67fa8c777a4c677a5c678a6c776a6c87ca8c77ba5c979a8c678a7c77aa5c579a5c780 *a7c77ea6c878a9c781a9c977a8c779a5c773a4c47fa5c578a5c67ea6c673a5c771a4c677a4c677 *a5c678a9c681a8c775a5c77aa5c678a4c672a3c67ea6c77aa5c777a5c676a5c67fa7c67ca3c67b *a4c679a4c376a4c66fa4c57aa8c775a5c574a7c776a4c682a9c67fa6c677a7c57ba6c77ca9c781 *a7c781a5c77fa7c57fa7c576a5c680a8c778a5c679a8c681a8c576a6c77aa8c778a7c679a6c77c *a7c681aac870a6c67da7c67ba8c77ba8c783a9c778a5c779a7c581a9c77fa8c780a8c879a8c876 *a5c779a5c681a8c778a5c77fa9c77fa9c77daac87aa7c77da6c678a6c681a8c685a8c981a7c782 *aac783aac773a5c878a7c879a9c783a9c982a9c77da8c77da7c78cadcb96b4d19fb9d1aabdd3b6 *c6d5b8c7d8bdc9d8bec6d6bbc9d8b3c3d6adc0d3abc1d2a8bed1a2b9d1a3bbd0a1b9cf98b9cf97 *b8d098b5cf8cafcb82abc877a5c683adc77eaac983aac880a6c882a7c782aac878a7c681a9c77f *a9c780aac782a8c77aa7c781a6c783a9c879a8c77ba6c87eaac879a9c77ba7c77da6c77aa5c77e *a8c87da8c77ea8c67da6c784aac785aac87dabc97ea9c97cabc86fa4c67da8c77ea9c780a9c782 *aac880aac883a9c982aac986abc883abc982a7c77fa6c67da7c680a9c882a9c885adc98daec99b *b7cea4b7cba5b7cda8b8cca8b9d0a9b9d1a5b7cfa5b9d0a4b8cea4bacca4b7cc9eb3cb9fb2cba4 *b6cca2b6ce99b3cea4b8d0a5bbceaab9cda4bacda3b5cda5b7cca0b5cba8b6ccadbbd1adc1d3b0 *c2d4b6c4d5bcc8d8bdcad8c1ccd8c5ccdbc6cedbc6cfdcc4cedbc4cddac4ccdac6cddac5cdd9c2 *cbdac2cbdac2cad8c1cad9c4ccd9c1ccd8c5ccdac7ccdcc7cfdbc8cfdbc6d0dbc8d1ddc7cfdcc5 *cedcc7cedbc5ccd6c5ccd9c3cedac3cedcc1cbdbbfc9dbbccadabfc9d7bcc6d6bcc4d5bbc5d6bd *c7d6bec8d7c0c9d9c1cbdbc1cadac0c9d5bdc7d3bdc5d4bac6d6bbc7d6bbc6d7b8c4d6bac5d5ba *c2d4b7c2d3bbc5d4bdc6d2bec6d7c0c9d8c1cadabfc7d7c2c9d9c3c9d9c2ccd8c3cbd8c4c9dac2 *c9d9c6cbd9c2cad7c2ccd9c4cdd9c5cedac6ccd8c6cddbc6ccdac8cdddc7cfdbc6d1dcc9d1dec7 *d2dfc9d4ddcbd2deccd0ddcccfdcccd0dcccd3ddccd4ddccd4ddced7decdd5decfd6deced3ddce *d4ddccd3ddcad2dcc7cfdcbbc9daafc6d6aec5d6abbfd2a4bacfa3b7cd9eb8ce9fbacea5bac4c2 *cdd4c7cfd3ccd4d9cfd9de809fb97ea0bb75a0bc709ebb739fbf729ebe729dbc6d9abd6a9cbb6d *9cbc6f9dbd6898ba6a99bc6a9abd659abe6e99bc6e9abd6395ba6798bb5d9abc5e95b96699ba59 *95bb5392ba5c91bb5a93bc5f97ba6199bb5796ba5895b85692bb538eba598fb95b90ba558db858 *8fb95590b7619abb5b93ba6292bb5c8db85690ba578cbb5691b85d96ba5a96bb5691b9568db55f *92bb5c95bb628fba6095b95d93bb5a93bb5b96b9608bb45c93b8608eb75a93b86796bb709bc172 *9dbf73a0bb7aa3c080a0bf849ebe81a2c3759fc177a0c17ca2c3809fc0749ebe769dbc749dbd6e *98be5e98be6497bd6696bd6097be5f96b85b92b95592ba5e95bc5f93bc6895bc6999be6799c065 *98be5a92b75f95be5d97bc6096be5790bb6397bd6896bc5e97bb5e96ba5d99bd629abd6598bb62 *96bd5e95bd5895bd6c9bbd6b9bbf6a9ebe6499bd639abc619abd6b99bd6296be6194bc6696bf6d *9bbf629bbd6397bc6099bd6998be5e97bb609abd5e96bc5e97bd6096bc5e97bd6398bc6098bd60 *98bc6496bd5f95bd6298bf5996bd6299c05a96bc629abd6b9dbf6b99be5c98bc6a9cbf629abf65 *9bc15e97bd6b9abf659bbf699abe5f96bc6898bd6e9ec16c99bd649bc1649ac1669abe6a9abe63 *98bd659ac05b97bd5d98bf629abf659bc1649abd6b9ec1649cbf6199bc6698bf6097bd6e9ec161 *9ac1679cc16ea0c06b9cbf639abd6b9cbf669bbf699bc16698be5f95bd6a9ec0639bbe5e9bbd6b *a0bf6d9dc1699bc0639abf6d9dc3699cbf6c9cbe6b9dbe649ec06a9ec3679cc06a9dbe6b9cbf6d *9dc170a1c16d9dc070a0bf77a4c16d9ec1689bbf689bbf699cc16b9cbf6a9ebe6b9cbf659abd67 *9abf689bc06d9dc070a1c1679abf6f9fc06fa0c2699dc16aa0c271a0c1699bbf6a9cc0699dc067 *9dc071a0bf6f9ec16499be6d9ec174a2c3679dc0689ec26b9dc1679cbd73a2c16c9ec36f9fbf70 *a1c077a4c36c9ebf6ea4c168a1c16fa2c374a3c175a4c379a4c175a1c16ba0c16ba0c06fa1c26d *a1c16ba1c26d9fc170a0c26ca0c273a2c174a4c272a2c16da1c172a3c46c9dc071a1c46ea2c377 *a3c27ba7c579a6c571a1c378a2c46aa2c578a3c470a1c376a4c873a4c5659ec074a1c374a2c579 *a4c577a4c56fa4c47ba6c774a4c476a4c675a5c477a4c677a4c379a5c370a4c579a5c47ba3c477 *a2c27aa2c16fa1c271a2c271a4c376a2c273a4c574a5c576a5c771a4c573a2c17aa5c473a4c371 *a3c474a4c578a6c677a5c476a5c578a4c37ba5c676a4c379a3c577a4c46ca5c669a4c57aa4c67b *a6c979a6c478a4c574a6c57da6c67ba5c77aa4c673a4c675a4c67aa6c47aa4c379a4c673a3c37c *a7c577a4c66ca2c473a6c56ca2c471a2c470a3c474a4c57aa6c477a4c579a3c675a3c675a4c47a *a5c676a4c576a5c478a6c578a4c374a4c475a5c67da6c67ca7c872a4c475a4c677a5c47aa5c67d *a7c375a4c67da4c580a6c781a7c679a4c577a6c678a4c479a5c57aa5c678a4c374a3c480a5c676 *a4c67ea6c67ca8c578a6c67aa6c57aa6c57ea7c676a6c77da4c576a5c674a3c47aa4c576a5c67d *a7c573a4c574a4c676a4c676a4c673a2c680a5c47aa5c678a5c57fa6c57fa6c57da8c677a6c879 *a5c977a4c679a6c67ba5c67ca9c67ca7c67ea6c682abc86ea3c57da6c981a7c682abc683abc798 *b3cca3bbcfb1c4d8b6c6d8b8c4d8b5c5d7aec1d2aabcd0a3bbce94b4cc92b1ca92b1cb93b1cb88 *aeca8aacca89aac779a8c680a9c67fa6c57ea6c678a5c677a4c37ca6c880a8c77ea7c67ea7c478 *a6c674a3c579a3c67ea6c780a7c778a5c779a4c775a7c783aac781a7c675a4c378a3c67ea8c77d *a5c579a5c67aa5c77da5c681a7c680a9c67ea4c67ea5c478a4c47da6c57baac976a8c883a8c77a *a8c781a9c77ea8c77fa5c780a8c688aac885aac786a9c87fa9c87da5c379a4c581a7c68facc994 *b1c999b4cc9fb6cda7bad1adbcd0a9bbceaabbcea6b9cda1b5cca4b7cea4b8cea2b6cda0b6cca2 *b5cca5b8cba2b7cca0b6cc9cb1ca97b3cd9eb3cc9fb6cca1b6cca2b7c99db1c9a1b6cea0b6cda1 *b4cba4b7cca9bbccadbdd0b9c6d6bdc8d6c0cad8c0cad7c0c8d8becbd9bdcad7c1cad7c1cbd6c4 *cdd9bec9d6bdc8d6c0c9d9c1cbd9c1cad8c2cbd7c3cad9c5cbdcc6cedbc7cedbc4ccd8c6cddac6 *ccdac1cbd9c0cbd8c3cbd8c2cbd8c2cbd8c0c9dac1c9dabfc9d8bec7d7b6c6d5b2c2d6abbfd3b0 *c0d1b5c3d1bac5d3bcc6d6bdc7d7bcc8d6b9c6d6b7c6d3bac3d1bac3d3bdc6d8b9c2d4bac2d4bb *c6d4bac4d4bac5d6bdc6d6bfc7d6c2c7d4c4cbd6c2cad7bfc8d8c3cad8c3cbd9c5cbdac3cad8c4 *cbdbc3ccd8c4cad9c3c9d8c2cad9c5ccd8c5ccdcc4ccdac6ccdbc6cedbc9cfdac7cfdac9d1dcc9 *d1dbcad1dbcbd1dccbd2dcccd1ddc9d1dccbd1dcccd1ddcbd3dcccd2ddccd4dbcbd3deced3decd *d3decbd3dbc9d3dcc7d0dbbac9d7a4b9cfa0b8cda3b9ce9bb3cc97b3cc9db4cb9bb1cb9cb5cba6 *b7c2c2cbd1c6d0d6cbd6dcced8df6f9db979a4bd769fbd729cbb6f9abb6895b86a9cbb6999bb65 *99bd669abc6e9bbb6899bb6f9ab96094bb6c98b96e9abb5e99ba6398bb5d98bc5c9abb659bb969 *9abc6b98bb659abc5a99bb5794bb6295bb5c97bb6199b9649aba6097bc6794b95c96ba5a92bb54 *8fb85d93b75d92b75b91b75b96b86394b85c94b8548cb65b93b95295ba6193ba5c92ba5c97b857 *97b65892b85f8fbb6292bb6092b96096bb6195b95f97bb5a95ba6296bb5c92b76495ba5c93b86b *9cba6d9bbc6e9ebb739cbb729bbb769dbf789fbf74a1c276a0c176a0bf799fbf759ebf749fc16d *9ac06498bc6797b95f94ba5a94ba5e96b95b95b75394b85494bb5a91ba6292b86999bb6195b767 *9ab95292bc5d97bd5896bb6397be6097bd5e95b8538db95f97bb6397bb639abd6798ba6699be65 *98bf5c92b76295bb5f96bb6598b96598be659abe5f94bb629abc5f97bd689abd5f97bb5a93ba5d *97bb5f9abc629bbd5e96bd5c95bb5e93bc5e98bc669abb5795bc5595bc5d97bd5a96bd5d98be60 *99bf5c97bd679bbd639abc5a98bd6499bc639cbf6499be6199bc619bbe6197bd649bbd6199bd5c *98be6999bc659cbd5c98bd699ec1689cc1639abc6b9bbd6799be6c9cbd609bbd639abe619bc069 *9ec1649cc0699ebd689dbf669abe689abf689bbe5d99bd5e9bbe649bc0639bbe689ebd669ebe69 *9ebe6da1c1639cbf649abe699cc06a9ec06b9ec06ba0bd719fbe699fbf66a1bf659bbd689cc166 *9dc0619bbf77a4c169a0bf6ca0c16a9fbe76a0c0679cbc679bc0689dc1679fc0689fbe6c9fbe64 *99bc6f9dbf689abd679dbf6da0c16c9fc26a9cbf699fbf6d9ebf699fc05f9bbd619dbf6a9cc069 *9ec0699ebf629bbe699dbf629cbf6e9cbe699dbf6a9cbf6d9fc2699fc2659ec16ea2c169a0be68 *9cbf70a2c16a9cbe6ea1c070a1c1679ec1679fc16ba1c16ea0c174a1bf6da0bf6fa2c06fa1bf6c *a2c16aa0c173a3c26da2be6ca1bd6ea1c16c9fc06ea2bf6a9ebf6c9fbf6ca3c26ea2c36da2c06c *9dc277a3c275a4c26ea3c26ea1c16fa2c06fa3c470a0c272a4bf72a3c271a1c375a0c175a2c26b *9fbe72a3c378a6c474a5c475a5c170a2c170a3c173a4c26fa3c475a4c775a5c778a7c57da6c576 *a3c377a4c378a6c473a4c375a4c56fa4c578a5c578a5c378a7c277a2c46ea1c375a4c375a4c473 *a4c36ea0c175a4c275a6c376a7c377a4c37aa4c670a3c573a6c676a6c576a6c473a7c376a6c375 *a6c27aa4c57ba5c47da8c47ca7c67ba7c56ba4c374a5c574a7c674a4c677a4c676a5c47ea8c678 *a7c470a7c673a7c679a7c67ca6c479a5c572a5c677a4c378a4c475a5c674a6c479a9c77aa8c578 *a5c378a3c475a3c372a4c575a4c374a4c474a6c573a5c478a3c379a7c479a5c47ca6c67fa6c478 *a6c573a2c46ea4c46fa3c471a4c476a3c473a3c278a7c478a7c676a5c57da5c57ea5c472a3c67b *a7c57da7c580a6c37da5c371a6c57da4c27da7c479a6c676a4c37fa6c77aa7c476a5c672a4c37b *a6c676a6c578a5c677a4c47ca8c77ca9c773a4c475a6c472a4c370a4c373a4c37ca6c475a4c476 *a4c477a6c67ba6c57aa4c478a5c576a5c47ea6c478a6c47aa6c47ca8c77aa8c776a4c372a4c476 *a4c47ba7c578a6c579a6c579a7c77ca6c67aa8c783a9c680a9c67da9c57da8c682a8c780a7c777 *a7c78cabc989acc993b3cbafc1d1b0c1d3adc1d3abc1d39bb6cf84adc986aec785adc780aac682 *a9c781abc782a9c674a5c578a7c67ba5c67fa7c681a8c480a9c47fa7c57ca8c77da6c57da6c67c *a7c774a5c57ba5c57ba5c380a8c578a7c67daac67ba7c776a6c679a5c781a8c579a6c67da8c57e *a9c67aa6c67ea8c67ea9c573a5c472a5c677a4c481a4c37ea7c67ca5c678a7c479a7c779a6c474 *a4c370a4c77ba7c882aac684abc680a8c57aa7c476a6c583abc882aac780aac77aa7c584aac691 *b0ca90b0c896b2caa1b6cba4b8cfaabbcea9bccfa9bbcfaab9cda4b7cda0b4cc9cb6caa0b6cb99 *b4cc95b0c9a0b7cda4b8cd9db5cb9fb1c99bb4c99ab3c999b5cb99b2cb9eb7cc99b1c79eb5cba2 *b6c9a4b5cba0b5cb9db6cb9bb2cba4b7cfaebcd3aec0d2abbed1b0c2d3afc4d4adc2d3aabdd2b2 *c3d4b1c4d3b1c4d3bbc9d6bdc9d7c0c9d9c0cad8bdc8d7c1cad7c4ccd9c4ccdac4ccdac2ccd7c1 *ccd6c1cbd8bdc8d5bdc7d7c0c7d6bcc8d8b9c7d7b9c7d8b6c6d3b3c6d7aec0d3abbcd0a4b9cea4 *b8cca4b9d0a7bcceacbdd1aec1d1b3c4d3b0c3d3b1c1d0aebcd0b1c1d1b6c6d6bac6d4bcc7d7c0 *c7d5c1c9d5c1cad6c1c8d6c0c9d6c3cad8c8cedbc6cfdac5cddac6ced8c3cdd8c6ccdac7cdd9c6 *ccd8c5cddac7cedac7cedbc6cfdac9d0d9cbd0dbc7cdd9c5cedac7ccdac6cedac7cedbc7d1dbc9 *d1dbc9d0ddcad0dacbd1dbcbd3dcccd5ddcbd4dcccd3ddcdd4dcced6ddccd3dbcbd3dbcbd3dbcb *d3ddcad2ddc9d3dbc7d2dcbfcdd8abbfd199b1ca98b2cb98b1cc91afcb99b3cc94b2cd9cb2cc9c *b6cba2b6bbc2ccd1c7d1d8ccd5dbcfd9de70a0b9649ab66b9cba699cbb609abb6d9cbd669abb5f *9cbb6a9bba5e95bb6595b95e98bc5c96b95f99bc6499bc5d98bb6798b96597bb5f92b85c93b95c *93b9558eb96695bc5f95bb6498ba5991b6578eb7538cb6538db66097b95791b95991ba6092b95f *92b85891b95690b7568cb5568fb75c90b95a8ebb5996ba5a95ba5993b85690b9598fb8598eb753 *8db75991b75b90bb5891b95795b65994b9598db75692b95891ba5b8db85b91b8578fb95c90b757 *99ba6c9bba6e9abc709bbf6a9bbc6d9cbf6996bb789ec07fa1c1719ebd759cbc779cbd779cbd6d *9bbe6797bc5e95bc5f94b9558eb95c94b95290ba5c94ba5d94b95e95b95a90bc5491bb5895bc5a *98bc5696bb5d97ba5491bb6092b85c91b65c96bd5a92b85c92bc6299bd5f95b96796ba6195ba60 *96bb5f95bb6496bd5a96bd5d97be5895b95c96bb5f92ba6498bb5994bc6599bd5a96bd5e97bf57 *96bd6498bc6098bc6098bc5f98bb5b91b95e94bd5791bb649abd5998bb6197bb5992bb5f95bb57 *93ba5492bd5994bd5e93bb5996bd6199bd6399bd6894ba5c97bd5c97bd5c98be5c93bd6198bd67 *99bd6197bb5995ba6296bc5493bb5d97bd6095bd6096bf6e9dc1669cbe649abd669abf5f97be5e *97bd5d96be6398bd669abd609abf6399be649abe6499bc6799bb5e97bd6098bc619abc679abd69 *9dc0689dc06b9cbd6598bd679bbe6398bd679bbe6a9fc1669ebf6a9fc46ca0c26299bd649bbd65 *9cbe6099be6299bd689bbd6099c0649cc1689bc0699dc0669cc06699c0659fc1609abb659dc063 *9abf6b9cc06d9cbf6598bd6f9cbe5f9bbd679dc1659bc0659bbf6a9dc0679ebf6a9dc06c9dbf6c *9cc0649abd669cbd659bc0639ac1679cbf6a9abf759fc1709ebf669bbf639bc1699cbe6499bf62 *9ac06d9dc0679cc06d9cbe6e9cc1689ac065a1be6ca2bf699dbf6699bd699ec174a0c279a4c173 *a2c36da0c16a9fc3709fc16ca1c1609cbe619dbe6aa1c16e9cc0729fc26ca3c36c9dbf6d9dc06b *a0c071a2c379a3c36ca1c16fa3c369a1c164a0c26a9fbe69a2be68a0bf71a3c26fa0c16f9dc072 *a0c26ba0bf73a2c06ea1c16ca2c172a0c16da2c16ea3c3679fc071a1c175a4c66da1c36ba4c671 *a3c56da3c26ba2c36da1c173a2c173a3c072a4c36ca1c16aa1c172a3c378a5c573a4c17ca1c074 *a0c2749fbf73a3c273a4c376a4c577a3c278a3c473a4c670a4c373a3c477a4c66ca2c474a3c473 *a3c374a4c47aa4c379a4c475a4c66ba2c474a3c470a1c376a2c478a3c678a7c673a6c676a5c672 *a5c775a6c675a4c679a4c578a7c676a5c375a4c375a6c677a5c570a6c579a4c37da6c376a4c378 *a3c477a3c377a4c477a4c66ca4c373a4c368a2c371a1c177a4c276a3c373a5c472a4c572a3c376 *a5c571a3c373a3c174a3c170a2c275a4c376a3c572a4c579a7c678a4c570a4c477a4c476a2c674 *a4c37aa4c574a5c674a4c378a6c377a5c379a7c37da4c66ea4c575a4c47aa4c375a4c575a4c679 *a5c576a6c672a5c578a3c577a4c676a5c674a3c67ca6c776a5c675a4c67aa6c57ba5c37ca5c671 *a3c272a2c371a0c178a6c479a6c575a6c576a5c278a4c575a2c474a2c373a3c573a4c574a4c472 *a3c674a6c576a5c475a3c378a4c573a1c472a4c573a4c673a4c67ca6c678a9c580a4c17fa7c578 *a4c67ea7c674a4c57ea6c783aaca9eb6cfa9bfd2a2b9d19db7ce8eb0ca89abc67ba5c575a7c677 *a6c782a8c77da9c57fa8c575a4c475a4c576a4c678a3c475a4c373a4c680a6c676a5c577a4c576 *a4c479a4c476a4c276a3c574a4c57aa7c879a6c478a6c472a3c376a4c375a5c67fa4c378a6c772 *a3c576a4c57ba6c57da6c782a7c676a6c672a4c36ea1c57ba5c674a4c67aa6c776a5c37ea9c674 *a3c56ea3c573a3c579a5c779a8c777a6c67ba5c580a8c580a6c473a7c67da8c677a4c57da6c789 *a9c887acc888aac791acc79fb4cba6b7cca9b8cdadbdceaabcd1a5bace9db7cc9bb3caa0b6cc96 *b3c991aec886aac885abc891adc892adc998b1c998b1ca97afcb8faec991aec898b1cb96b1c996 *b1c89cb4cba1b5cca4b6cc9eb7cb9cb7cb9ab3cb9cb4cc9bb5cb97b0cc96afcc95b2cc98b4cc9a *aecaa0b4cb9ab4cc98b6cda5bad0aac0d5b6c6d6b8c6d6b9c6d4bdc8d7bdc8d9bcc8d8bfcad9bc *c8d7bbc8d6b7c5d5b6c4d5b4c2d4b1c3d2abbfd3a9bdd0a7bbd0a4b8cea4b8d0a9b8cea4b9cca1 *b7cca1b5cea2b7ce9cb5cba2b6cca0b6cba3bcd09fb7cfa1b8cda0b7cea3b8cfb2c0d3b8c4d4bc *c6d7bfc7d7c0c9d7c2cbd7c3cbd7c3cbd8c3ccdac7cedac6cddac6cedac6ccd9c8ccdac6ccdac6 *ccd9c9cedac7cfdcc7cedcc7cedcc7d0dbc9d1dbc9d1dac8d0dbc6cedbc9cedbc7ced9c6cddac5 *d0dbc7cedbcad2ddc7d1decbd1ddcbcfddcad1dccbd3dccbd3ddcbd3dbcbd3ddcbd3ddc6d1dcc9 *d2ddc9d0dbc3cedbc3cfdbc2cedab9cad9a5bacf9ab1cb8fafcb96b1cc96b1c996b1cb97b2cc95 *b2ca9eb2cba5b7bdc2cbd2c8d1dacdd6dbcfd8dc6f9cb7709bb76997b96997bb6794b56495b96b *96ba6f9dbb6a98ba6a98ba6495bb6597b95a90b66797ba6594ba6592b66b98b86391b76698b95e *92b6528fb65890b5598bb3578fb65990b5548eb65e90b8618cb6568fb45892b6588eb55a91b858 *92b7548cb75e8eb56492b8568cb54f8bb45f92b8558db65c95b6568eb5538ab65d91b96093bb5e *8db6518fb6588db4578eb65a93b95b90b65d8eb6538cb55a90b7588bb3578fb6558eb65794b857 *8eb65a8fb46696bb799cbd749abb709bbb6c9aba6897b86d98bd6e9abe749bbd769cbb779dbd79 *9bba6f9dbb6896b76291b95991ba5690b85393b8588fb8578cb65691b85b92b96096bc598fb75a *93bb558eb66196bc5f90b95291b85891b85e96bd6094bb5c92b55b91b76091b66893b66899bb64 *95ba6397bb5693bb5791bb5694bc5993bb5d93bc5794bb5f98bd6099bb6495bb6596b96697bc5d *92bb6094bc6298be5c94bc5995bc5995bb6096ba6094bb6492ba5f94b95a95bc5f96bc5d91bb5f *96bc5f96bc5f93ba5f94bb5e96bb6298bc5e95bd699bc06d99be5c96bb6299bb6297bb6296bc5b *95b76095bb5891bb5f97bd6199bf6196bb5b95b96496bc5c96b95f97bc6699bd6097bd6b9cc060 *98bc6099bd5a97bb6497bc6597ba6698bd6999bd669abe6299bc6a9cbe6197bb679bbc649abd5e *98bc699abe639abf679cbf6199be679cbe6a9cbc669abd6b9bbd699bbd699abf6397bd6f9ec16a *9cbe659ebe6e9cbd6a9abd6799be6897bd6c9dc16297bd659abe6e9dbd689abd6899bd6999bc6a *96bb6599be699abd6797bd6499bd71a0c06b9ebf6a98bb6a99bb6a9abd6c9abc689ec0699dbf65 *9cc0709cbf6c9bbc6c99bb6b9abe659abd699bc1699ac0679abf689bc06b9dbd6d9dbd6a9abd68 *9abe639abd669dbe6a99be609abe6d9dc26d9cbd709ebd6d9dbe6f9dbe6a9cbd6d9ec1699fc06c *9ec06fa0c070a1bf6fa0c177a2c16ca0bf6da0be6c9dc173a1c36c9cc17aa2c169a1c16c9fbf70 *9fbe699cbd6d9ebd709fbe6ea1c175a2bf6c9fc071a3c076a0c073a3bf73a3c06ea0c16ea0c06f *9dc076a1c2739fc074a0c076a1c169a3c16fa0c069a0c169a2c071a3c26fa4c375a3c37ca1c073 *a1bf6d9ec0699fc072a2c272a5c270a1c175a2c3659dbf6fa2bf76a1bf7aa2c16da1c079a4c26d *a1c273a3c475a2c077a3c07aa3c26ea1c275a4c173a2c273a4c573a1c378a3c17ba5c47aa5c476 *a4c27ca4c275a2c176a4c271a1c174a2c36da2c279a4c57aa4c276a4c26ea2c273a3c577a5c679 *a5c66da3c579a4c47ca4c576a4c47aa6c370a0bf73a4c273a4c171a4c478a4c175a2c376a2c379 *a4c374a4c276a4c67ca4c377a3c178a4c371a4c47aa4c472a4c379a4c479a3c478a5c46ca1c073 *a3c374a4c26fa0c373a4c378a5c472a3c474a3c376a4c376a3c374a2c376a4c478a5c474a1c26f *a0c37da5c576a5c56ba1c17aa4c376a4c274a3c277a2c27aa4c677a2c571a3c374a2c278a4c274 *a4c371a4c373a3c36fa3c372a1c478a1c37da4c37ea4c371a4c371a1c375a0c17aa4c376a4c478 *a3c377a2c274a2c276a5c374a4c279a4c271a2c477a5c480a5c480a6c37ca3c376a2c37aa4c677 *a6c574a3c578a4c474a5c576a4c579a4c578a2c375a5c476a6c172a4c473a0c376a5c679a3c377 *a4c477a6c674a6c574a3c579a4c582a7c684a8c78cafcb8eb0cb8faecb88adc78eacc783a6c377 *a5c475a4c276a3c37ca6c374a5c574a4c376a6c473a4c67da4c379a3c47fa5c76ea4c37ca4c679 *a5c57ca6c674a5c574a5c477a2c475a2c377a3c275a4c471a2c37ba6c77da6c675a4c479a4c47e *a4c36ea1c37ba5c379a5c67ea6c677a5c675a3c175a4c379a1c17ea4c382a6c675a5c477a4c47c *aac678a5c679a5c181a4c36fa2c47da5c47ca7c481a6c681a7c778a4c579a5c47ba6c57fa4c37f *a6c384a9c584aac789abc893afc99eb4caabbdcfaebcceacbccca8bacea4b8cd9fb5cc9bb3cb95 *b1ca9ab1c891aec88bacc88ca9c686a7c78faac787abc793adc897b1ca93afc992aec991aec794 *aec795b0c893b0ca96b1c99eb2cb9db4cb9bb2c99db5cba1b5cc9db4cb98afc897aec891adc796 *b0ca9cb3cb99b1cb98b0c897afca94b0ca9bb2cbadbcceb2c3d2aebed1afbed2b6c3d6bbc6d6bc *c6d5b6c0d3b0c1d3b2c2d1aec0d3acbcd1aabbd1a6b9cea3b5cb9eb4ca9fb6caa1b6cea8b8cea8 *bacfa8b9cca8b7cea9b9cca4b6cca4b5cb9fb2c99eb0c99eb4cb9bb1cba0b1cb9cb2cbacbdcebc *c6d3bdc7d2c0c8d7c0c9d7c1cadac2cbdac2cbd8c4cad8c7cbd8c8ced9c7cfd9c6cdd9c9cfdbc8 *cfdbcacfdacacfdccad1dbcbd0dacbd0dbc9cfdcc9d1dbcbd3dbc8d1dbc8d1dbc8cedbc9d0dac8 *cedac9cedbc9d1dbc9d0dbc8d0dccbd2ddcbd3dbcbd3ddcbd3dcccd1dccbd1dacad1dbcacfd8ca *d1dbc7cedcc3cbd8c3ccd8c3cbd6c1c9d7b8c6d3a4b8ce9db4cb94b1cb97b0ca97b3c98baec899 *b2ca95afc998b2c99eb1b5c4cbcfc8d2d7ccd5d9cfd8df709bbc6897b86d9cbb6d9bbb699cba6a *99bb6498bb669cbd5f93bb6298bb6492bb5f95bc6893b76797b85e96b95f97b85d94bb6697b859 *92ba578cb66394b85f92b85290b8558eb85b8db65e94b95c91ba5593ba5791b9548eb75c92b958 *91b8528db85590b85b91b85b8bb8578db66097bb5991b7558fb7588fb8598eb7538db6568cb65a *95bb5c94b95391b95492b95a92b85791b9588cb7568cb5578eb7528eb9538ab6528ebb6196b853 *8bb5508ab4548eb65d90ba6998bd6e9cbd6f9cc06a99bd6996ba6498bd6998bb7098b76f9dbe74 *9ebf759cc07099be6498bc6193b85b94bb588db6528db75994ba5391bc528db94c8ab7578fb95c *8eb75791b85791b65494bb6696bb5e92b85491ba5c95bc5795bb5c95b95293b85892bd5d91b863 *93bb5f95bc548fbb5f93b85d95ba6799bb5c93b86295bb6294bb6395bc6596bc5f97bd5f95bb5e *96bc5492b95d94bc6298bd5a92bb6097bb5f96bc6499bc5996bc5e96bc5693bc5792ba588fba62 *95bc5e97bc6298be669dc15996bb5992ba6397bb5e96bd6c9bbd6399bd6295bb5a96bd5e98bf5f *96bc6398bc5c97bb6196bb5896bc5f9abe6198bf5a97bd6498bc6898bd6399bb5e98bd6999bc65 *9bc05d99be6597bd5f96ba6499bd6597bd5e98bb5c99bd639bbf6198bd5f95bd6299be669bc06a *9abe669dbd6d9ac06397bc5e98bc6197bd6698bd689abd679abd659bbf6c9ec1639bbf6899c163 *9bbf6598bd6499bd659bbd6aa0c06c9cbd6e9bc06a9cbf639abf659abe649bc0649bbd6b9cc165 *99bd699bbd699abd6b9cc1659bc16799bf669cc1679bbd679cbd669cc06b9cbf6b9bbf6d9bc070 *a1c06b9abe659cbe689cbd679bbe699bbf6b9dbe6d9ebf5e9abf649abf629abd649bbe639dbf68 *9ec1619cc06ca0c16e9cc1699cbf649cbf629cbe619bbe699cbf6c9ec16da1bf709ebf6ea2c16e *9fc1659cbe699ec173a2c1739fc16da0c073a2c1669cbc6a9ebf6d9fc0689cc1689bc2659dbf68 *9fc26ba0c16e9fc16fa0c16b9cbf649fc26e9fc177a2c36e9fc26ea2c36ea2c36ca3bf6fa2c074 *a2c26da1c273a1c26ea2c26fa1c26b9fc173a4c56ca0c16c9bbf70a0c16aa1c16c9ec16da3c36f *a2c16ea2c169a2c26fa4c278a3c477a3c270a0c273a2c16ea1c474a4c66fa4c373a5c27ca4c375 *a2c374a3c271a3c376a4c373a2c371a3c072a4c476a5c472a2c272a4c373a3c3699ec06ba1c26c *a1c570a3c677a4c676a4c375a3c377a3c275a3c271a3c277a4c27aa4c481a8c579a6c575a4c479 *a3c373a3c475a4c47aa5c473a4c679a7c775a4c67ba3c179a5c375a3c475a2c16ba1c174a4c475 *a4c476a7c673a3c372a3c376a4c073a3c175a5c376a5c676a2c478a3c373a3c373a2c37aa4c279 *a4c37aa4c573a2c370a0c26ca0c375a4c56fa2c479a5c67ba6c576a4c373a3c373a1c378a5c677 *a4c5729fc274a2c373a2c276a4c378a4c26da1c372a3c27ca4c676a4c471a4c576a5c475a4c578 *a6c675a4c478a2c46ca2c175a4c373a2c471a3c56fa3c478a4c379a4c579a6c675a3c676a1c377 *a5c379a5c574a3c57fa7c776a4c373a4c372a3c273a3c377a4c576a4c674a3c676a4c678a6c67c *a5c575a4c572a3c372a3c371a4c670a2c672a1c577a3c66da4c66ea4c36fa2c374a2c277a4c574 *a4c678a3c47ca7c672a4c37ba6c777a5c579a4c57ba7c87da4c67fa9c980a8c878a4c679a8c878 *aac673a4c277a3c56ea1c576a4c47ca6c677a3c578a3c57aa4c675a3c476a2c370a4c679a7c67d *a4c672a3c475a3c576a4c579a7c778a6c57ca5c578a4c674a5c376a5c373a4c479a5c676a4c776 *a5c676a6c675a5c375a5c573a5c375a4c67ba6c57ea6c472a4c674a4c478a3c37da7c680a8c679 *a6c57ca6c479a7c677a5c676a5c67aa7c680a6c57da7c578a3c47ca4c575a4c475a5c379a6c67c *a8c685a6c684a8c587a9c788aac698b2c7a2b8ccabbbd1aebbceadbed1abbbd0a7b8cca1b5cba0 *b5ca98b5cc98b1cb91aec98daac88badc885aac78aacc78aadc995b0cb93aec993adca8cacc987 *a9c789acc88aaac795b0ca9ab1cb9bb3cb8aaeca95b0ca9ab3cc9ab2cb96b1cb95b1ca97b1cb92 *aec996b0cc97b0ca98aec89cb2cb97b1ca8badc891aeca9fb5cda8bcd1a9bbcfa5bbceacbfd3aa *bdd3abbcd1acbbceadbccfadbbd1aebbcdacbbd1abbad0a9b9cea8bacea4b7cea1b7cea8b9cfa9 *b8ceaabad0aab9d0a2b9cea4bacea6b9cea8bad0a2b6cca7b7cda5bace9fb4cc9bb4ca97b0cba0 *b7ceb8c5d6c1cad8c3cbd8c3cad6c3cad7c2cbd9c2cad8c3cad9c6cddac7cedccbd2dccad2dccb *d1dcc9d1ddcad2ddcbd2ddcad2ddc8d2dccbd2ddccd3dccbd3ddcbd0dbc8d0ddc7d1dbc7cedbc6 *d1ddcbd1ddc9d2ddcad2ddc9d2ddc9d0dcc9d1ddcbd2ddcbd1dccad1dbcbd1ddc9d3ddc9d3dcc9 *d1dbc4cedabac7d7bdc9d7bcc8d8b8c7d6b3c6d6a7bdd2a1b7cc9bb3cb94afcb92afcb99b1c98c *aec891afcb97b0cb96b2cba6b6bbc5ccd3c8d2d8c8d1d8ced7dd6e9abb6a93b8679bbd679bbd6d *9ac06f9cbc6492b76d9abc5b91b76395bb5b94bb6095ba5691ba5e92ba5992b65c93b85e92ba63 *92bb5c94bb5591b95a8eb85d8dba5a90bb5b90b95a8cb8568db6548cb7598db9558ab96090bc5d *8fba5e93ba6195ba6191b7578eb6558eb7598fb7528cb55d94b85991b75a93b7598fb7528eb752 *90b7568dbb5b92bb5a90ba4f8dba558db9548eb8578fb9578bb6548db75d94b86196ba5190b95f *8fb7638eb75893b85892b85e92bb6998bc6997bb6f9bbd6898bc6393bb6599bf6a99be6a99be6d *9cbd6f9bbe6b99bb6b99bd6197bd5e92ba5b91b9538cb95f93bb518cb74f90b85591b75b92b954 *90b9548eb95a8eb95f90bb6492bb5392b75793bc5091b84f8fbb5390bb5c94bd5d95bb6394be61 *92bd5d94bb5892bb5791bb5691bb5a93bd5f91ba5e93bd5892bd5c95bd5392bd5091bb5d94bb60 *98bf6094bc6294bb5a91bb5e95bc5b95bd5c94bd6093bb5a91bb5d92bb5d95bd5b94bb5692ba5c *92bb5c94ba5b95bc5c97be6197bc6198bd5a96bc5e97bc5f98bd5c92bd5a91bb5d98be5d96bd5a *96bd6496be6298be5893bf6599bd5f96bc5f94bd6596bc5c94bd5e93bb5f98bb669abd6298bf69 *99bb6298bc6297bd6199bd6a9bbf699abe6196be6297bf5d97bd5795bd6496be6198bc5e97bc5c *98bf5e99be6097c06b9ac0669abe6099bc6599bf6597bd6398bc669cbe6999bf6299be669cc167 *9bbe6b9abd6c9abe6398bf6099bd689abf699dc1619ac0679cc1699dbf6a9cc0659bbf6198be68 *9ac1659ac0659cc1639bc0669cbf6a9abe5b93bc6698be6299c0639abf6399bf6299be699bc063 *9abd6d9cbd6299be689bc1679ac1689dbf659abd649bbe6b9ec1649bc16d9cc16499be679cbf67 *9bbc6e9cbf679abf689cc1689dc170a1c16c9ec16c9ec1679bc16299bf6a9dc16aa0c0689dc16a *a0c36a9fc1699cc1699ec1679bbe6a9abe6e9ec2669abf649ec06ca1c16f9fc26498bf6b9bbf70 *a1c16ea0c1679cc06b9ec16ca1c373a0c16fa0c16d9dc16c9fc1659ec16a9fc170a1c170a1c26b *9ec26da1c070a1bf669bbe6d9ec1649fc16ba0c2669ec169a0c277a0c172a3c374a4c46da2c169 *9fc16da2c66ea2c26aa3c16ea3c379a6c570a2c16ca2c270a0c279a2c171a4c46fa3c376a3c472 *a1c372a2c17ba4c175a3c373a3c376a1c377a2c273a2c36fa0c173a3c36ca4c56fa5c472a1c172 *a3c171a4c676a4c47da5c577a3c470a2c475a4c379a5c576a2c670a1c477a2c378a4c478a5c479 *a3c46ea3c575a6c56da1c172a4c670a2c374a3c577a4c377a4c46ea3c676a4c677a6c56da1c46b *a0c372a0c373a2c379a4c372a2c475a3c373a3c46ca2c2699fbf73a2c375a2c36fa0c377a3c36b *a3c36fa3c378a6c671a3c574a2c374a2c475a3c573a2c473a1c370a1c377a5c575a4c577a4c577 *a2c278a4c575a2c673a4c373a2c471a4c379a6c37ca7c670a1c376a4c47ca4c575a4c76ca4c670 *a0c57aa6c57da5c67aa4c377a2c576a4c572a3c378a4c46aa2c376a4c371a3c480a6c66d9fc174 *a1c375a1c36fa1c36fa2c573a3c473a3c471a4c573a2c374a3c575a4c679a4c672a0c375a3c57a *a5c66ea3c477a4c57aa6c777a5c577a4c675a4c472a4c378a5c679a4c66ea1c373a4c379a4c580 *a7c676a4c676a5c676a4c673a4c677a7c770a4c478a6c679a4c682a6c683a6c77ca6c780a7c678 *a5c673a4c56ca3c476a4c579a3c676a1c36da2c374a2c47aa4c574a3c36fa3c577a3c673a3c575 *a3c679a5c56fa4c56ea2c574a3c67ba6c677a3c675a3c670a3c677a2c476a3c37aa7c679a4c379 *a4c473a3c676a4c676a3c675a3c770a5c37aa6c66da4c46aa2c36ca3c673a2c274a4c680a7c87d *a6c67ea7c77ba5c778a5c276a4c670a4c578a3c67aa4c676a5c578a5c67ea4c577a3c57ba5c679 *a5c676a6c57da8c784abc987acca8badc894b0ca9db5cca5b6ccacbbcfacbdd1acbbd2aabcd2a1 *b7ce9ab2cb9ab2cb99b2ca92adc995aec98aabc78aabc98aaaca86aac993b1c993b1c994b1c98a *adc994adc992adc995acc793b1cb8daecc98aec88baac88daec992aecc8eaecb92aecb96adca8c *adcb97afc99bb3ca97afca96afc995aecb93adc88facc990b0cc95afcc98b1cb9ab4ca9bb1cba1 *b5cda3b7cda8b7ceabbacfaebbcfb1bed1b1c0d1b4c0d3aebccfacbdcfa7b9d0aabad1abbbd0a9 *bbd1abbbcdabbccdaabbcfa9bbceabb9cfacbbcea9bbd0a7b8cea4bacfa4b9ce9cb6cb97b1cb99 *afcc8fafcaa9bbd2bbc6d8c1cadbc4ccdbc6cedbc5cddbc6cddac4cbdac7cddbc8cfdcc9d1dec9 *d0ddc9d0ddc9d2dccad3dccad1dbcbd1ddcad1ddc9d2ddc7d0dcc8d0ddc6d0ddc6cedcc3ced9c8 *cfdcc9d0ddcad0dbc8d0ddc8d1ddc6d1dec3ceddc7d1dbc9cfddc7cfdbc7d0dbc4cedcbdcbdbb5 *c8d8b3c3d9abc1d2a5bbceaabfd1a2bbd19db3ce96b1cc97b1ce9ab1cd98b2cd9ab2cb91afca95 *afc98cacc993afcb90aecc9aafcaa9b7c2c3ced4c9d4d9c8d3d9cdd7dd6495b65793b65f95b867 *9ab66596b96295ba5f95bb6594b86994b65f98b86594b65d92ba6092b6568eb6598cb65f93ba5c *94ba5c8fb45890b64e8bb5538bb55791b65391b8598cb6528db7578db55790b3528cb3528cb65a *90b6538db6548eb6538db75a91b9538bb4558bb34e8cb5588eb44e8db74e89b7538bb7548cb954 *8cb8558cb6528db64f8cb5528ab15088b1518bb64e89b2538cb6558cb45387b15291b65690b751 *89b44c8db7558cb6548eb6548db6578db55c96b75a96b85f96ba6e97b86398bb6593b96c97ba68 *95b86c99bb6799bb5c96bb6292ba6298bd6192b7588fb65292b74f92b75493b75e96ba4f8cb759 *93b84f8bb6528fb55291ba5592b64f8eb85290b75091b85891b94f8eb6538cb85b8bb75391b64e *89b35d96b85492b95c94ba5b93bb5c92b7558cb75e95bd5692b85a93b94c91b64e8eb75d93ba52 *8bb95c92bb5d91ba5e96bb5892ba5a95bb5592bb5d95bb558fb85a92b85d95ba5a92bb4e90b961 *93bb558eb6548fb66196bb5d95bc5694b95191b86093bb5592bb5893ba6299bb5e94ba5b93b756 *92ba5c94bb5a93bb528eb65e94ba6195b95892b95a93bb4c8fbb5c91bb5a94bb5c94bb5d93bb64 *98bc6598bd6196bc5e98bd6199ba5b92bb5a96ba5f96ba6095bc6297ba6298bb6099bd6299bc60 *97bd6198bd6299bd6096bc5f96bd659abd5c99bc679bbe699cbc5f95ba649bbf6e98bc6396bb5d *97bb5e9abe5f9abe649cbe6497be6497bc679abe5c97bc5a96bd649abe6299bd6099bd5d99bb62 *97bc669abe6699bb6599bb659bbc5a97bb6798c06799bd6197bd649abb6098bb5792b85d93bb5b *97bc6498bd679bbd5e97bc6499bd6499bd5f97bc619abc659abd6098be6298bd6598bf6a9abe6f *9bbd689bba629bbd6d9fc0629cc1679dc0639ac06ba0c0689cbf5c98bc669bbe699abd5f98bd61 *9abc679dbf699abf679cbf649bbe6a9cbe619abd6399be6499bd6b9dbd6c9ec06a9dbd6c9bbe6c *9cbe6ca1be669dbd669cbd6b9dbf669fbf659bbe6a9dc06b9bbf6da0bf659cbf629bbe679dbf71 *a3bf6ea0bf6a9dbe699fc36c9cc16e9ebd6a9fbf6aa1bd689cbe689ebe71a1c269a1c179a2c176 *a1c06ba0c165a0be67a0be75a4c16ba1c16da1c3699dc173a2c56fa0bf73a0bf6aa0be6ba0c06b *9fc0699ec174a2c173a4c3749fc070a1c172a2bf689ebe6ca0bf72a1be6da0c071a1c1699ec270 *a3c26ea0bf75a4c36ea3c274a3c275a1c16c9ec16a9ec171a0c26aa0c273a2c170a1c26ca2c56c *a1c072a0c16c9fc172a2c16ca2c173a3c173a1bf70a3c174a1c2759fc066a2c17ea4c474a4c46c *a3c376a4c26ba1c06aa2c1699ebe6f9fc06c9dbf6c9dc06da1c273a4c473a1c16ba3c16ba1c068 *9fbe6fa3c170a1c175a3c26ba0c36ba0c269a1c36ba1c074a5c36ba1c273a3c373a2c474a3c36c *a0c377a3c371a2bf6b9fc16a9ebe72a1c368a1c072a2c17da4c370a4c175a0c072a1c26ba0bd70 *a1c169a0c073a4c266a1c3679fc36ca1c075a4c476a3c375a1bf74a1c2739fc26fa1c275a3c26d *9ebf70a1c275a3c26ca0c172a3c36fa3c370a2c375a1c374a1c074a2c173a3c072a4c370a2c365 *9dc16b9dc36f9fc270a1c369a0c36b9ec371a1c370a4c372a4c16fa0c26c9fc26ea1c374a1c36c *9ec1679dc275a4c675a4c379a5c577a5c57aa6c575a2c478a4c579a4c473a3c277a9c682a9c774 *a4c680a4c274a3c369a1c271a2c371a1c177a4c472a2c371a3c175a4c472a3c36b9ec1729fc175 *a2c26ca1c171a0c275a3c474a2c374a2c474a2c375a2c272a1c268a1c373a4c57ba6c5729fc46d *a3c372a4c36da3c374a1c272a1c277a4c477a4c46ca2c375a2c579a5c172a2c26b9ec26ea3be73 *a5c570a5c574a2c3679ec478a8c379a4c376a4c573a4c379a4c473a3c37fa5c37ea6c47fa5c677 *a7c573a5c476a1bf7aa5c484a9c68cacc791afc797aecaa1b8cca7bacca9bbcda8bdceaebdcfac *bccca7b8ca9ab1c99bafcb9fb4cb9eb6c999b1c793afc98babc689a9c785a9c785aac78baec88d *aec897b0cb96aec996aec798aec695acc789acc88aadc98dacc78dacc691afc88eadc98cacc692 *abc893adc78cabc892afc999b2cc9bb2c893aec98cacc78eacc791aec99ab1caa0b2cb9cb1caa0 *b3cca2b8cca5b9cbabbaccadbbcbb1bccdafbdd1b1c0cfb2bed1b6c1d0aebdccacbbcbacbbceac *bbcdacb8ceadbad1adbaceb0bcceaebbceb1bdcdabbdceacbbccaab9ccaabacda4b8cd9cb1cb97 *b1c991aec887aec890afcb9bb4ceaec2d7bcc9d9c2ccdac3ccdac2ccdbc1cbd8c1ccd9c1ccd9c7 *cedbc8cfdbc8cfdbc8d0dcc9d1ddcbd0dac8d0dac6d2dbc5cfdcc0ccd8bfccdab2c7d5a6bbd1b7 *c7d5c0ccdbc3cedac3cedac4cddbc1cdd8b4c8d6afc0d3bcc9d6c0cbdbc1ccd8b6c7d5adc1d3a9 *bbd0a6bccd9eb7cb9bb6cb9bb3cb9ab3cb92acc88eaec690adc790aec58aaec78caeca94b0ca96 *afcb93b0cb96afc798b0c999b0c99ab3c7a0b1b9c2ccd3c7d3d9cbd4daced8dd5f96b85f91b86c *95b86596b65d92b56093bb5c8db7588fb8578bb6568cb95f8ebb5a8db8598eb85d90b75791b957 *91b75991b76491ba5e93b8598eb85b90b75892b86092b6588db7598ab75c8eb5598cb6528cb654 *89b75a8bb65d90b74e89b6588db5568fb7578fb6598fb85890b86294b85c8eb5518bb5598eb54e *8bb5518bb6538bb6508bb7528bb8548bb65789b6528db7548cb6538cb5568db6598bb65187b350 *8bb4578cb6518bb6578db65b8db6588eb65a96b7588db66393bb6995ba7899ba6a96b85d93b85f *93bb6792b95c92ba6093b95f8fba6796bd6997be5e92b86392b75c94bc5591b9528ab55692b954 *8cb8558eb8518fb85b92b9568fba5991b9538eb95d90ba548db76192b85b91ba5c8db7568ebb5c *91bb5d91bb508bb65b91b95490b65d94b95a94bb5e93b95a8eb65d92bb5f95bb5692bb5d91ba5e *93b95792b65c94bc608ebb5690ba5791ba6194ba6095bb5d94bb5890ba5c94bb6092bb5890bb5e *92bb528db85e91b85c93b85e95bc6098bd5d94bb6491b86595ba6296bb6096bd5d95bc5f93bb5a *90bb5f96bb5e95bd5b91bb6294bd5f92b86095bb6095bb6094bb4f8db85d95bb5d96bd6292bb5f *95bb5c91bb5d92ba6698be6699c16097be6097bb6498be6295bd6896bd6896bc6598be5a98bd61 *99bd6095bc6698bd6498bd6899bc6397bd5b96bd6096bd639abc5f97bb659abd609abd6498bd6b *99bc6599be6299bd6499bb6a9bbd679bbe6199be649abf6998bf6196bd6699bd6398bc5f96ba61 *96ba679bbd6a9cbf5995be6898be6798bd6599bd6096bc6397bc6697bc6799bd6899bd6397be63 *95bb6797bb6c99be6699bd669abc6198bd6799c06d9cc16a99bf6b9abe6397ba6499bd6096bc68 *9cbd669bbe5e9abe659bbd6d9cc15f99bd699cc16c9cbd6c9cbd679abe6499be6b9ec1719cbd6c *9abd6899bd6599bd679bbe6097bd699abe689bc16c9ec06c9bc0699bbf659dbf6a9cbf5f9ac069 *9ebe6a9cc16da1c36ea1c16d9dbf659bbc669abe649cbf719dbf6c9cbf6e9dbe669ec1689cc06a *9cbe6e9dc06b9cbe699bc06b9cbe6d9cc26e9fc26b9ebf6ba2c26fa1c0689dbf709fc169a0c171 *a0c0669ebe74a0bf73a1c26da2c37da0c06e9bc06ca0bd70a1be72a0c378a2c173a0c274a1c16d *a0c36da3c3669cc06c9fc073a2c167a0bd72a1c171a2c271a3c375a1c36f9dc174a2c270a3c06d *a1c177a2c175a2c378a3c578a3c477a2c26da0c16ea1c16f9ebf6fa0c16fa3c272a2c575a1c374 *a0c36da0c16a9fc071a2c36ea2c273a1c16fa0c1719ec372a2c479a3c676a0c173a1c174a4c273 *a0c06b9dbf73a2c36d9ec175a0c373a1c173a2bf6ea1c36ba0c16fa2c274a1c372a2c377a3c374 *a2c373a1c373a1c16da0c26f9fc275a0bf739ec0719dc16ea0c36fa1c274a2c36da0c272a2c373 *a3c274a1c174a4c376a4c37da4c378a3c376a0c26da1c373a1c16e9cc278a3c378a3c378a3c674 *a1c375a4c46c9dc277a4c274a2c3719fc07aa4c377a5c570a0c074a2c277a2c276a2c1729fc175 *a1c26d9cbe75a1c26f9fc36d9fc171a3c373a3c56ea2c46fa1c272a1c271a2c26ea2c3729fc375 *a3c476a2c56da0c36fa2c26ea1c374a3c470a0c370a0c274a2c572a0c176a0c278a1c272a0c272 *9fc36a9ec2649ec170a1c479a3c37ca7c679a7c672a2c372a0c3759ec370a0c470a0c479a4c57c *a5c575a3c36ea3c3739fc172a1c376a0c374a1c372a4c46da0c279a3c36fa2c274a4c46ea1c372 *9fc3739ec476a2c175a1c376a2c574a4c673a5c376a3c377a3c375a0c26fa2c576a3c372a1c375 *a4c375a4c377a5c46aa0c2739dc36fa0c378a4c373a3c475a4c379a4c367a2c278a4c36fa2c277 *a4c379a2c47aa3c375a1c373a0c375a3c36fa2c37ca4c673a2c373a3c278a3c479a2c375a3c17c *a4c478a2c57ba4c37da6c47da5c486aac68dacc894aec79cb1c99fb6caa4b7cca8bacfacbcd0b1 *bbcfaebccea9bccca4b6cba2b4cba4b6cba7b8d0a6b6cca5b6cb97adc88faac793abc98fabc78c *aac58badc995acc896b1ca96aec994aec796adc78facc795abc78baac893acc991aec98badc995 *adc98facc88eaac692aac99bb0cb9fb5cba2b5cc9fb1cb9bb0cb93aec99cb0c9a2b4cba0b3cba3 *b7cca3b5cca5b8cea9bcd0afbcd1b1bcceb4bed1b4bdd1b5c1d1b2c0d1b2bdd1b1c1d1b3bfd5b6 *bfd1b6bdd0b2bcd0aebdcfb3c1d1b1bed0b1c1d1b4bfd2b1bdd3b1bdceb2bccdadb8cea4b6cb9d *b6cb98b1cc89a9c68babc98dacc68eadcb94b0cb9ab5cfa7bdd2adc1d5a8bed59fbbd1a7bbd3ab *bbd2b8c4d6bbcad8bbcbd8bdcbdac2cddbc5cddbc3ccdabdcbdab2c6d9a9bed29db5cf99b0cb97 *afcba1b9ceb0c2d3bbc9dabbc9d8b9c9d8aec1d3a0b9ce9bb3cba4bad0a7bbd1afbfd1a8bbcd9b *b3cea0b6cba3b8cd92b2cc97b0c999b0c791afca9ab0ca99b0c996afc992acc999afc996aec997 *aecb98b0c996b1c898aec99bb1cb9bb1ca99b0c8a8b5bbc4ccd2cad3d8ccd5dbced8de6593b65e *93b66997b86796b56197b96b96b86893b95f93ba568db7588eb65993b85a8eb75d91b86190b95c *8db45d91b6508bb55e91ba568eb65e90b6598eb6528db65c91b85e95ba548cb6578db75690b755 *8eb65890b7508cb9518eb8588cb5558db6528bb6578bb7548cb65789b4578eb65993b8558cb657 *8db8578cb6558cb6588bb45790b8528fb7538db85e97b95892b9528eb6558eba4f8bb4538cb650 *8bb4528db75890b8508cb64f8bb6578cb6528eb65b8cb55c8fb6578fb66094ba6394bc5b92bb5e *94b86296b86396bb6194b96095b9588fb75592ba5392bb5993bb5a8fb8528cb75791b55a93b951 *8db7558cba548eb8588fbb538cb8508ab2538db65991b95791b85d93bb5c95ba5391bc5d95bc56 *8fb5568bb45a91b75390b7528db6508cb85592ba4e8cb75793b95791b65d8cb86091b9568eb953 *91b95092bd5c93bc5994bb5391bb5491ba5f94bb5e95bc5d96bc5c96bc5f95bb6097bb6198bc61 *98bc5a96bd5c8fbc5b93ba5d99bc5d93bb5b95bc5e94bb6193bb6596bb5c92bb5f96bc6297bd59 *93bb6093bb5993bb5e97bd6498be5f95bc6393b86397bd6197bc5f95bb5392bc5c91b95892bb5a *95bc5f94b96595bd5e94bc6597bc5d95bb5f96bb6497bc629abf6194bd6095bb6695bc5e98bc59 *99bd5d9abd6298be6097bf649abd6497bd6b9bbd6296bc6299bc669bbf5d97bc5f98bb5996bd65 *98bd6599bd6699bd689abc679bbd609abe6398bc649bbe6498bd6599be6a9cbf5a96bc659bbe61 *96bb679abd5e95bc6a9abe6e9abd6a9ec06797bc6497bb6b9bbf6099c06199bf6b9bbd6097bf6a *9abf5d95bd6899be659abd649abd6299bc6197bc6898bc6699bf699abf629abe6c9bbb6c9ebe69 *9dc0689bbd659bbe639bbf669bbd679cc0659bc1659dbe6d9bbd6c9dbf6c9bbf6c9abe6a9abd6e *9dbf699bc0719cc06c9cbd6899bd659abd6598bd699bbd699bbe689bc0659abe6da1c0679cbe69 *9fbe70a2c1689ec0659dbf659bbe6e9bc1679abf699dc16e9fbf679abe6c9dbe639bbd6e9fbf6a *9fc072a2c16c9fbe71a0be72a0bf669ec070a2c26e9fc0699cc075a3c175a3c16e9ebe70a3c36b *a0c16ba0c1699dbf6fa2c574a4c36ba4c26ea1c270a0c176a3bf6ca1c173a0c269a1c26ea1c46f *a1c174a4c06fa4c276a3c36ea2c1699ec1699fc26ba1c371a0c073a1c072a2c26fa1c175a4c17a *a2c170a1c270a0c36c9cc06aa1c26da1c270a3c36ea3c373a3c576a1c36b9dc26c9dc0709fc172 *a3c46ea3c275a4c372a3c16fa0c1739fc16c9ec16da0c36ba1c36ea0c36ca1c272a3c569a1c276 *a2c576a0c36d9fc070a0c475a2c56da1c379a5c46d9fc06ea0be79a0c0689bbf689fc073a2c270 *a2c16ba0c172a2c36da0c26ca0c06fa1c275a3c36da1c2689fc3719dc275a4c473a2c572a3c374 *a3c373a4c474a2c374a0c175a4c375a3c273a2c178a2c16aa4c26fa4be729cbd73a2c372a4c475 *a2c36da1c472a3c577a2c370a4c574a4c679a3c36ba1c371a1c370a0c37ea4c372a1c36fa3c372 *a3c36da3c376a2c3709fc271a0bf729fc176a3c079a5c372a4c46ea3c471a3c4709fc171a1c16c *a0c46b9fc26a9ec177a2c56ca3c374a2c46fa0c473a1c474a0c276a4c3729fc3709ec177a2c472 *a3c46c9ec374a0c36ba2c273a3c676a4c46da3c473a3c477a4c675a4c478a3c678a3c37aa3c379 *a4c373a0c374a1c36aa1c46ea2c36da1c474a4c272a3c372a4c371a1c370a1c36ea0c36fa2c272 *a2c37ea4c56f9ec175a2c373a2c36ba1c26f9fc36da1c477a5c674a4c677a4c577a4c374a4c378 *a3c276a2c378a4c56ca2c47ca5c675a4c575a3c379a5c579a4c379a4c27ca5c56da4c37aa5c674 *a4c477a4c479a5c67aa4c66da2c370a4c56da2c373a5c36da3c375a3c46ea4c478a6c679a1c179 *a4c477a4c57aa4c57da6c681a6c686a9c68bacc993afc88fadc894b0c8a3b6caa8bacda8bacfaa *bad1aabbd1aabbd0a7bacda5b8cca0b8ce9ab5cca4b7ccaabacda8bad0a4b4cc9aafc997b0c995 *aec88caac98cacc78dacc893afc98eacc994adc896aec892b0ca8eaec891b0c995b0c98dacc986 *abc98daac88cabc795adc99db0c99fb3cda2b5cba5b6cba0b4cba3b6cc9eb3cca6b7cea7b7cda8 *baceaabacdacbacfaab9d0a9baceadbbd0b1c1d2b7c3d3b7c3d2b6c2d5b3c2d1b7c3d1b6c3d1b4 *c2d2b9c3d5b9c2d1bbc3d3b5c1d2b7bed1b6bfd1b4c0cfb4c0d1b4c2d2b6bfd1aebdceaebbd0ad *bacea5b7cc97b1ca99b1cb95aeca87aac68babc88daec98dadc88bacc894adca8dadc78dadc989 *a9c88baac68faecb96afcc9ab0cb9eb6cfa1bad1aabcd19fb8cf99afcb92afc98db0ca8dadc98f *afcb91aecb8eaec991b0cba2b9ce9cb1cc9bb3ce99afcc97b1cb93b1cb92afcb9bb1cba0b6cf99 *b2cc92afcc97b1cb99b1cd9bb0cb99b1c996b0ca99b0caa0b1cb96b1ca98aec999b0c997b1cb9b *b3cb9cb6cd9cb4cd9ab2cc97b3cb9cb4cb9bb1ca9cb0caacb9bfc6ced4cbd4d9cbd6dbcdd8de5c *91b65c8fb66090b65d91b85790b65e95ba578fb65393b95b8bb75990b85891b7518cb54d8bb54d *8bb5508cb7508eb4558cb35c8fb8538bb3518cb74f8eb75392b94f89b3498ab6538eb7588db65a *8eb7518bb4528ab64f8ab4568ab64f8bb5558eb6508eb6578db6548ab6548cb6568db5518ab650 *89b5548eb74c8ab6518eb64d88b5558eb8538eb7508bb84885b64f87b6508ab64f89b4508bb650 *88b64c88b4568ab55388b4528cb5518eb8548eb85791b65592b6568bb65f90b96593ba5c92bb58 *8db75d8db85893ba5793bb558db8508bb6548cb9548db75a8cb7558cb6558ab7508db6538bb54b *8ab65291ba548fba538bb6558eb64e8bb5518db65591b94e8fbb4e8cb74a8bb64d8bb65a91ba4d *8cbb4e8bb6558cb84d8dbb5691b8518cb64b8bb6508cb65693ba4c8ebb4d8db8508db65493bb55 *90bb568fbb5792b6578db64e8bb64b8ab75693bb5391ba5791b85e93bc5690ba5b8fb96095b955 *8fbb5691ba508cba558eba5d92bb568fbb5793bb5b90b95d91bb5f96bb5491bb5896be5f94bb5d *96bc4a8eb85d90b55c90b95d94bc5195bb5995bb5891ba5e95be5595bb5791bb5891bb6095ba5f *93ba5c94b95b95bc5e97be5e94bd5795bb5b96bd6296ba639abc5a95bb5c96bd5f96bf5794bc5b *92bc5e97bc5e97bb639abb5b94bc5e96bb6199bd5b99be5d98bf5b97be6097bc6398bc5c91b963 *99be6497bd6095bd5d97be5291ba5b97bd6499bb6497bc5c95bc5f97bb6399bd5d96bb5d98bf5c *96be5d98bd5396bc5b94bc6094bd5f96bd5f95bc5d95bd5795bd5c97bc5e9abd5a96bb6899be60 *98bd5b98bb5e98bd689ac06298bf6098bd6399bb6499bb6598bc5f96bb5894bc5a94bd6399bd5f *98bf5f99bd6099bd6097bc6498bd6b9cc15b95bc6699bd6b9bc06899c1679bbe5f9abf6598bd64 *97bd6197bd649abd6299be639bbf649dbf6e9fbf659bbe6497bb6596bb5898bc6099bd5f99bd67 *9dc06a9dbe649bbd659bbe6d9dc1689abd6699bd6599bd689abf679cc0629dc1659cbf6f9dbf6d *9fc073a1c0689ec06c9dbf689dc0609bbe679bc06c9cbe679cbe6d9fc16f9ebf70a1bf629bbd70 *a2c46aa1c2679abd77a3c16da1c1679bc0749ebf67a0c16da0c266a1c26ca2c6679fbe6aa1c16d *9dbf6d9bbf669dbf689ec26ca1c467a2c3649dc175a4be669ebf6e9fbe6ca1c06ea1c277a2c170 *a1c172a1c16aa1c36ba2c071a1c16ca0c36ca2c26d9ec26b9fc269a1c479a4c46ea3c161a1bf67 *9cc16da0c16ca1c274a1c16b9ec36e9fc46ca4c36da3c3689fc1749ec173a2c1739fc1709fbf6c *a1c371a0c2699fc173a4c375a1c16799bf689dc06ea0c1689dbe659cbd6ea0bf71a2c36ea2c26f *a1c1719dc16e9cbd6f9fc36ca0c26ea0c370a3c56ca2c26da0c16e9dc06c9ec2679bc06a9ec06e *a0bf6fa0c269a1c36ea1c174a3c176a4c46ea0c2649ac06c9fc272a3c369a0c274a2c176a2c36e *a3c16a9dc3729fc36fa1c1669fc370a3c270a0c170a2c26ba0c269a3c373a1c3719fc374a2c272 *a1c371a0c26ca4c36aa2c16aa2c36ea4c373a1c36aa0c4719fc46ea2c3699fc36ea1c271a2c46f *a2c16c9fc36c9ec36f9cc2649ac06ba1c46b9fc1649bbf6ba1c4699fc3679cbf6fa0c271a1c172 *a1c369a3c36ca1c4699fc16ea3c46ca0c370a1c56ea0c373a1c46ca1c3659dc369a2c372a1c26d *a1c479a2c375a2c2629cc16a9fc175a4c473a4c368a0c16a9fc173a1c2739fc36b9cc075a0c276 *a1c36ba1c169a0c26ba0c36b9fc36fa3c46ea0c375a1c46d9dc16a9fc26da1c374a3c46da2c573 *a2c469a2c475a3c278a3c373a2c267a1c16ca1c36ca1c36a9dc372a1c56c9ec56ca1c269a1bf6c *a1c26aa0c36ca2c36fa3c575a2c575a3c66ea1c46ea0c4699dc171a0c373a0c375a0c474a2c278 *a3c470a4c574a4c46ba2c47aa4c384aac789aac792afc890adc988acc999b4cba5b8ccadbdcdab *bacda9b9d0a4b6cc9cb4cb9eb6cb9fb2cba4b8cca7b8ccabbaccacbbcda8bbcca5b8cc99b5c99c *b3cb8daec892acc893afc791acc797adc785acc78badc793adc98daec994aecb91aec992aec895 *adc988a8c688aac58ca7c797afcb9db0cba4b6cda8bacba9b9cba9b7cdaab8cba9b8cca5b6cca5 *b8cda6baceabbbcfaabdcfabb9cfaabaccacbbceaebdd2b3c0d1b6bfd6b3c2d3b7c3d4b9c4d0b9 *c3d1b7c1d2b3bfd1b5bfd1b7c1d3b9c1d2b7c4d3b5c0d2b4c3cfb6c1d1b6c3d0b3bdd0b0bfd0ae *bfd1aebdd1aabccea1b7cca0b3cc93aeca8babc689abc98babc889abc787aac78cacc989abc682 *aac789abc689abc98babc98aabc990aeca91b0cb8baecb88adc789acca88acc88aaac68aadc68e *acca8caecb92aecb86adca87abc78cabc68eacc98daec993b0cb8caec78badca90aec88daec996 *aec996abc991aec98daec993aec992aecb8caeca8daec98eb1ca9cb3cba0b1cc9db5cd9cb2cc99 *b1cc9cb3cca1b5cca3b7cea2b4cca1b6cb9bb1cb9fb4cba3b5caaebcc6c4cdd4c7d3dbcbd6dacd *d9dd6b95b46997b56593b15d94b55c92b4588eb46691b55b8eb65d91b85490b95e93b7558db454 *8bb55e8db6568eb75b8eb55992b95791b8598fb8538eb4578db4598bb3548bb3528db65189b455 *8ab4538db6548cb25c8eb45c8eb55087b25a8bb34d8bb44c87b34f8bb65b91b75c8eb5588db557 *8db3588cb24e8cb54c8ab5518ab4548ab4588db7518bb35b90b4558ab2528bb4568bb24f85b34d *89b24c87b64f89b3588bb5598eb45089b2578cb64f8ab5528bb6588eb8588eb6548cb4588eb658 *8ab45e90b6558db6598eb64f8ab5588fb8518cb8558ab55388b35f8db5588ab4518ab55189b357 *90b85a90b7538db74f8ab4558db6538bb4518ab3598eb6558bb55891b65f91b66092b65d94b756 *90b65a8db55b90b3578ab7508cb6548cb3578bb45d90b85b95b95a91b55490bb528bb6528bb756 *8cb65291bb5c91ba5c92b7578db55990b85591b86792b95991b85b94b85d91b75891bb5d8bb559 *8eb66392b85f93b86292b95b92b75a91b95c91b9598eb75a92b85a91ba5b91ba5e93ba5291ba5d *92b86295ba5894ba5c92b95f95ba6196ba6293bb6197bb5793bb5b96bc5c8fb85d96bb5c91b960 *96bb5e94ba5f92ba6095ba5d93bc5b94bd5d93bd5e93bb5b97bb639bbb5c96ba5f95bc5994bc5c *95ba5f96bc6097bd6398bc5f97bb5d98bb6096bb6c9abd6598bb5d96bc6297bc6597bb5f97bb61 *98bb669abc6096bb6697bb6296bb6299bc5f97ba5f97bb5a94bb5d99bc6599bd6a97bd6a96bb65 *9abd6194bb6598bc6595b85e98bb6a9bbb6597bb6698bd5d92bb6799bb5f95bb6597bd679abd5f *98bc6699bc649abc6698bb6296bb6198bb6497bb6697bc6998bd6199bd669cbb689bbb6a99bc66 *99bb649abc6797bd6898bc699abe689abe729cbc6899bc649abd6a99bc709fbd6e9dbd629abd66 *9abd6a9dbd659bbb679abc6297bc639bbf6a9cbd699abd6d99bd6898bd6f99bb6b99bd6c9bbd6a *9bbd6499bc679bbd699abe659abe699cbd649bbf6c9cbc6c9cbc6b99bc679abc689cbf699bbe65 *9abd679cbf6d9dbe729ebe6e9dbc719ebd6e9dbc6c9bbe6c9cbf699fc070a1c2729fbe799ebe68 *9dbc6a9dbf73a2be72a0bf6c9ec16b9dbf68a1c074a0c06b9dbf6c9fc16da0be6b9dbe649cbe63 *9dc06da0c1719dbd6ba0bd729fbc6d9dbd75a3c174a1bf73a0c278a4c375a3c172a2c1729fbd78 *a2bf78a3c16ea1c16ba0c070a1c16d9fc173a0c174a2c078a2c070a2c070a3c274a3c16ca1c172 *a1c16d9fc1719ec06b9ebe7aa3c175a1c173a3c16da3c1759fc1669cc1739fc170a1c06d9fbf75 *a0be72a2bf6ba2c170a1c1709fc175a1c171a1c36da0c076a3c079a3c369a1be6fa0bf6da0c16e *9fc36c9dbe6b9dc06d9ebd6d9ebe75a1bf71a0be72a1c06ba0c16f9fc1699fc1699fc06da0c068 *a2c073a2c06c9cbe74a1c16c9fc16b9ec26fa1c278a2c373a0bf76a0be71a0bd729fbd72a2c074 *a1c06ba0c3699dc06ea1c177a4c173a0be6aa2c36fa2c16ba2c275a1c173a2c379a4c672a1c372 *a1c076a2c2719fc174a4c36fa0bf729fc26f9ec36f9fc170a0be71a3c17aa4c26aa1c26aa1c169 *9fc0699fc16fa2c275a1c275a1be77a1bf779ebf6c9bbf6c9fc375a0c272a1c3689fc173a0bf70 *9fbd76a3c1669cbf70a1c26e9fc06ea1c26fa1c378a6c371a2c370a2c271a1c270a2c26b9dc172 *a0c3709ec272a3c177a4c376a4c376a3c479a4c3729dc16d9ec174a2c26da0c071a2c276a0c06c *9ebf769fbf7aa0c06d9fc16f9fc26da0c16ea0c16fa3c36ea0c16ca0c172a0c171a0c170a1c17d *a4c46aa0bf67a1c372a2c379a5c471a5c673a3c375a2c179a1c36da0c36ea2c36da2c370a3c36f *a1c36c9ebe6b9ebf77a3c36fa2c375a5c578a3c474a3c66ca1c37ca4c27ea4c376a4c373a3c37c *a3c36f9cc07aa3c479a2c077a3c17fa5c48eabc494aec897aec797afc891adc99bb3caa6b7cbac *bccfaebfceadbecca9b9caa3b6caa1b5c9a8b6cdacb9cdaebbcbafbdd0b1bed0aebdccaab9cca5 *b7caa4b5c99eb3ca99afc89ab1c998b3cb9eb3c992afc692adc699acc699afcb9aafc998b1ca9a *b1c98db0ca8daec692acc795acc69eb2cba0b5cba9b7ccaab9ceadbcceaebccdadbbcdaebacdaf *bbccadbacdaebbccaebcceadbbcfacbad1abbbcdb1bed0b5c1d1b7c0d0bac3d1b8c6d1b6c6d1ba *c4d4bbc4d4b9c4d2bdc6d1bbc4d1bbc3d1b9c4d1b7c3d3bac3d2b6c3d3bac2d1b8c2ceb7c0d0b6 *bdceb2c0ceb0bbcfaebdd0a9bacea3b6cb99b2c99db2c993aec68eabc78aaac689acc788aac989 *a9c78eaac88aabc78dacc58eaac78babc790adc68caac78cacc88bacc98cadc88eacc692aec68e *a9c592aec786aac68faec98caeca8dafcb8dadc98cadc993b0ca8dadc78facc68fadc792b1c892 *acc992aec99cb0ca90aec796b1cb9ab3c990adc694aec595b0c796b1c994b0c99fb5cc9eb6cc9f *b4caa3b3c9a0b2c9a3b6caa8bacda0b6cda4b7ceacb9ccadbbccafbbcbb6c1c5c5cdd3cad5dacc *d8dbcbd6db5f8fb55b92b75992b66094b86096b65790b6528eb6568db95691ba5d8fba5790b64d *8bb1538bb4588cb64e8ab5508cb54f8ab5578cb65c8cb6568bb45b90b65890b66897b7568db74f *89b55488b4538ab5598ab4558cb4548eb65890b6538db7528bb6528bb5548bb44f88b5558eb74f *8db5518cb4558fb65b8db64e89b7538cb9548ab6508ab6528bb6588db5558db8588eb9538ab34b *89b45288b34f86b2518db8548eb6578db75a8fb6588cb7588bb45890b5518db4538cb25990b758 *90ba5289b5608db6538ab64985b2548db6538bb7508ab7508db6558db6508cb8558cb7528ab453 *8cb7508cb54a86b3508ab6538bba528ab8528eb95792b7558db6568fb65490b8538cb8548ab65c *8dbb508cb7578dba528fb65490b95a8db9568ab5568bb65789b6538eb84f8eba528fbb5692b954 *8fb85692b96095bb5690b65c8eb76092ba5592bc5b93b95a93b95790b9588eba4f8db65a92b956 *8fb9518cb9568ebc518fb85a91bb5b91b95a92b95590b95892bc5f92b85691bc5994bc5c93ba5f *93ba5c8db55f92ba5291b96094b95e94b95d96bc6296bb5891b75691b95a92b85f93bb5a93bb65 *96bb6398bd5d93bd5d95bb5c90b86095bc5f97bb6496bb5e96ba5e97bf6097bc6294bd5b92bb5a *92bb5e96bb6596bc5e97be5a97bd5994bd5e96bd5f94bb6193bc6398bc659bbc5d91b75b95bb5e *97be5591bb5d96be6098be5f96bc5c92bb6697bc5f95bc6598bd6398be6299be6298be6399bd5b *95bb5f98bb5f96bd6497bc6096bd6496bd6199bc669bbf679bbd6599bd5d96bc6296bc6097bd6d *99be5d97be6099c06599be6499bc6195ba6296bd5c97ba6096bc6698bd6197bb6b9cbf6396be6c *9bbd6598bb6697bd6999bc679abc649cbe639abc6198bd6299be699bbf669abd6c9dbe679abd64 *97ba669dc16799bf6198bd6b9abe6b99be659fbf649bbd6097bc6198bd6a9abf6897bb6798c070 *9bbd709ebd679cbd649bbb689ebe6098be6d9dc1659abf6c9cc06b9ebe6d9dbe699fbd659cc062 *99be699cc16c9cc26c9dc0699bbf679ebe6a9cbd619abd649abf689cbf639abe699dc1679bbd69 *9fbd6ba0bf6c9dbd6da3c171a2c3659cbd6da4c175a1c16a9cc06d9fc1699cbe6da0bf649cc16b *99be699cc06da0c36e9dc06d9ec068a1c1709dbe73a4c1699fc16a9fbf69a0c16fa2c171a3c16c *a2c16f9ebd74a1c169a0c171a0c06fa0c26ea2c36aa1c377a4c270a2c370a4c371a2c173a2c173 *a1c26ea1c16b9dc06ba3c46da1c36aa1c36d9cc06da1c16a9fc070a1c36fa1c26f9fc36e9cc070 *a0c06ba0c075a1c16da1c1719fc1709fc0689dc0689dc16fa0c3719ec16a9fc072a1bf70a2c165 *9fc1689dbf719cc1699cc170a0c36ea1c273a2c275a3c26ca0c3689ebe6e9dc16a9dc0679ec16c *9ec0679bbf689fbf6ba0c16e9fc16e9ec06b9fc472a1c26d9cc1719fc36da2c172a4c267a3c36f *a0c176a1c277a2c16a9ec2709fc176a0c173a3c270a2c072a2c170a1c171a0c372a3c372a2c370 *a0c26fa2c273a3c370a2bf70a1c3699fc370a2c36da1c36c9fc1699fc2639fc166a0c36fa2c375 *a3c16fa0c16a9fc274a1c1699ec2719fc368a0c171a1c372a0c171a1c2669ebf6da1c26fa0c072 *a0c475a0c171a1c46b9ec370a1c1769fc275a2c36da0c36b9fc36c9dc272a2c272a1c375a4c372 *a3c176a4c36b9fc16da0c36ba0be71a1c274a3c479a6c46fa1c16aa2c171a2c270a4c46ea0c477 *a3c575a2c474a0c36a9dc36f9ec272a2c2699dc06a9fc26aa0c275a3c570a1c36ea2c374a1c371 *a1c36ca0c26f9dbf729ec070a2c371a3c56aa0c676a4c56ea1c36ca0c16fa0c36e9fc178a4c373 *a3c374a4c56da0c472a3c575a2c371a2c176a4c376a3c376a3c377a4c378a3c46ea0c173a1c474 *9dc2709dbe749fc27ca2c272a2c277a4c27da5c686abc990aeca96afc997b0c79cb4c8a1b5caa6 *b9ccaebad1aebdd2adbdd1a9b9d1aab9cdabb8cbaab7ccadbcceadbdcfadbcd1aebbceafc0d1af *bbcea7b9cda5b9cb9db5cba1b1ca9fb6cca4b6cca0b4cb98adc994abc895acc896adc892acc996 *aec997aec997adc98eaac692aeca9cb2cba2b4cba3b6cbaab9cdadbbcfadbcd0b0bdd1aebdd0b0 *bdd1adbdceb1bdceadbdcfaebdd0adbbceaebbd1b0bccfb1bed1b4c1d2b9c3d3bbc4d3bbc6d2b9 *c2d4bbc3d1bbc4d1b7c4d3bbc5d5bcc4d6bbc3d3bcc6d3b8c6d3b9c3d1b9c3d1b7c0d3b6c3d2b6 *bfd2b6c1d1b4c1d1b5bdcfb1beceaebccfabbbcea6b7cc9db2ce96aeca92aac691adc78babc586 *a9c585aac78babc98aacc68dabc68baac98badca90b0ca8cacc991aec88eacc98eabca8cadcb8d *acca92adca95aec997afca8badc78aacc98cadc993aecb91aecb8aadcb91aec991aec995b0c790 *b0ca8cafcb90aec996aecb93aecb9ab1cc9ab3cb94b1c999b2c798aeca9eb0cb9eb5cda0b4cca2 *b7cda1b8cea7b9cda7b9cba7bacca6bacea8bacdabbaceb0bdd0afbcceb3bdceb8c2c8c7cfd4cb *d4d9cfd6dcced7dc5e8eb1578caf528ab05d92b65b8cb56192b65b8eb4558cb6588bb35a8cb453 *8eb64783ae568bb6608eb84e8bb6568ab1558cb55189b2548ab3508cb5558bb2558cb5548db452 *8ab44f8bb65489b45a8cb5558ab25589b1578cb55088b5568cb55089b44f89b4558db5568cb44e *89b44e86b1588bb25388b25188b3578cb64e8ab55589b2508bb54e8ab55089b2518bb4538ab452 *8bb65287b4528eb64d87b35189b3538bb3528ab2558cb2528cb5578bb24c89b1598db54b88b453 *8ab4548bb3528bb65589b24265a84e89b34e89b54f88b34f8ab54d86b15088b54f8bb6528cb651 *8ab64d88b24c89b5528ab3588fb54f8ab54f8ab4538cb55386b35e8bb44d88b3558fb5558bb64f *8ab64e89b3528db6528bb84c8ab6528cb64d89b45690b6528ab4518ab64383b24b8ab64e8eb654 *8db65491b6548eb6528bb64f8eb65790b65992bb5590b65290b85591b65f91b75d92b8528eb652 *8eb6538ab5508cb7568fba578eb75c92b6548fb75c91b75c91b85291bb5b92ba518fb75890b95c *8fb95590b66295ba588eb85992b75892bb5b94ba5890b75d8eb95790b85f98ba5d94bb5993ba58 *94bc5391ba5f96bb6295bc5990b8578eb85591b96597bd5f96bd5492bb5a8eba538db75d93bb5a *94b65d93ba5c93bb5895bb6499bd5a97bb5c91b75f96ba6097bb5b92ba6095bb5f95ba5791bb5a *93ba5e93ba5e93b85b93b96996ba5f92bb5c94ba5992ba5e96bb5f98bb5b92b85c94bb6498bc5c *98bb5a92b9679cbd6497bb6394bb6798bb5f97ba5d98ba5e97bb6394b96998bb5e94bb5f95bc64 *99bd6295bb5f93bb6693bb6196ba5a96bb6197bb6196bb6399bd6397bb6493ba5892b85991b75f *96bc6798ba6195b86098ba6498bb6699bc649abe6598bb6197bb6299bb6298bd5897bd6599be67 *9cc05e98bd6196bb6498bb6396bb6497bb6098bd6698bd659abd629abd6595ba6799bd6698bb63 *97ba6899bd659cbd689bbe669bbd689bbd6499bd689abc6699bd6099bc5f98bc6598bd6599bd61 *97bb669bbd6899bb689cbc679abf659cbd689bbd649abd6b9cbd639abc669aba679abb6599bd63 *99bd679ebe659bbc6d9ebd6aa0c0649bbd72a0bd6a9dbf6799bf699abd6699be6b9cbd6a9dbf69 *9dbd6aa0be69a1bf6a9bbd6a99bc6d9cbf729cbe679bbd749fc0729dc16a9fc170a0bf6a99bc6c *9bbe6a9bbd6e9fbe759ec070a1c272a3c16ba0c06b9ec0679dc06b9ebf74a0be6a9ebd6da2c167 *9fc0689fbf739fc26b9dbe719fbf6a9cbe6b9ebd699bbd6f9ebf6a9ebe729fc06f9bc0649abd6f *9cbe669ebe689bbe6ba0c269a2c1699abe6c9dbe669cbf6298bd6296bd739ebe6d9abc6b9cbe6b *a0be699cbd6ea0be6b9cbd6d9cbd6c9fc06c9ebe699dbf649abe6a9ec0679fbd6f9dbe6c9dbe6e *9ebf669ec16e9cbd759fbf6d9ebd6b9cbd74a0c06b9fbf699dbe72a1c075a1bd6ca0c1689dbe69 *9bbb6ea0bd6a9fbf6ca0bd6b9dc16a9ec0719ebf6b9dbf6aa1bf659ebf75a0c0729fbe73a0c172 *9ec0699fc1719fc071a1c1739ebe6f9fbf709fbd6d9dbe72a0c26b9fbf6fa1c1659bbd72a1bf72 *9fc175a2c16fa1c16e9cbf719fc270a0c26f9ec16d9dbf6da0c16ea1c16fa1c1689fc16fa1c26f *a0bf6c9ec170a1bf689abe639bbf70a0c16e9cbf6b9dc16a9ec06f9fbe6a9ebe69a0c069a0c16f *a0c26c9fbe6a9bc06b9ec16a9bc0709fc171a0c265a0c167a0c36a9dc273a0c074a2c26ba1c366 *9ec26fa1c072a1c16fa1c16a9fc16ca0c06b9ebe6a9bc1709bc071a1c2679fc06ca3c16b9dc068 *9dc0679cc06b9dbd75a1c072a2c3639fbf72a2c36ca0c06b9fc16da1c1669bbd71a0c3729fc26b *9dc26a9ec26ca1bf6a9cc272a0bf76a3c270a1c376a2c46fa2c36ea3c373a3c377a1c2669abe6d *9fc173a3c470a0c175a2c371a2c272a1c375a1c07fa5c387a7c586aac794afc896afc999b0c9a0 *b4caacbacdadbdcdafbdcdadbccdaabbccaab8cbacb9ccaebbd0afbdd1aebfd0abbbccb0bdd0ae *bfccb0bdd0adbdcfaebdcea8b7ceabb9cda5b7c99eb2ca9db1c796aec696abc790aac792aac798 *adc99cb0c89cb1ca9dafc99cb0c896afca9eb3ca9fb4caa8b8cdadbbceadbacdafbcccafbccfb1 *becfafbdd0b1bdd0b1bdd0afbccfb2becfb0bbccafbbceafbcd0b3bed0b5bfceb8c2d0b8c4d1ba *c3d2bcc6d4bbc5d4bbc4d3bac4d3bbc4d2bbc4cfb9c3d2bac3d3bbc6d3bbc4d6bbc3d1bbc2d3b6 *c3d1b4c2d1b6c1d0b7c0d1bbc3d1b8c1d1b3bed1b2bccfaab8cca4b5cba0b4ca93afca89acc687 *a9c786a9c884abc686a9c486a9c58ca9c58eabc68cabc78aabc88daec992adc98eaec78eaac688 *a9c58cadc489acc691aec78eaec68daac790acc794afc78cacc688adc68eaec98cadc98faec796 *afca92afc98daec897aec995aec99ab1c99bb1c99cb0ca9bb0cb9eb3ca9ab3c99cb6c99cb1cb9e *b3c89cb3caa1b4cca4b4caa8b6caadbaccaebccfadbeceacbcceb3becfb1bdd0b6bdcbb8c2c6c6 *cdd4cad4dbccd8ddcbd6da5b90b15d90b4578fb55990b46a97b75a8fb1558db3508db55591b656 *8fb74f8cb34686b1508eb44f8ab35e91b5578bb3558cb1528bb0538db3568eb54e8ab2528cb356 *8db4548cb3538cb4518db5528bb65c90b7528cb3568cb34d8bb4508cb6508cb6508ab4578fb450 *8cb4508bb2528fb4588cb15388b14b87b24a88b44c8cb5518db6578cb7538db65087b1588ab455 *8cb6538ab5548cb6558db5508ab3528db65690b6578ab15185b25186b15189b24b8cb55387b456 *90b7508eb74785af4987b2538bb34f8ab35188b24a8ab5548db6508cb64f8bb54b87b34f89b450 *89b24f8bb2538cb54d88b3528cb45292b74c8bb5528bb64c89b3538bb35489b1518cb15392b658 *91b7548cb54e8ab15189b34f8cb5548cb54f8bb6588cb7508cb4548bb6558fb6538fb65a8fb650 *8eb6528eb5568cb55893b95390b9538fbb5390b9548db55691b6568db75591b95890b64d8bb652 *90b7528eb64f8db6548cb6598cb55990b7508eb65590b7538fb8528cb75490b75191b64f91b659 *92b95993b95b90b75c90b85f91b66192b75c93b95692b85b94b95e98ba5d91b45892ba5a93bb54 *90bb5893bb5795ba5a96b95891b76093b95b91ba5f92b95f94ba5d97bb6299be5e94bb6093ba54 *8eb85790b85a94bb5c96bb5d94b85b95ba5b94ba5c92ba5c90ba4f91b85691b85e96b85f98bc62 *96bc6098bd5e95bb5e93b85f96b96296ba5c95b95797ba5c96ba6197bb5c96bb6296bb6092ba59 *92bb6096b95d96b95e95bb5993ba5992ba5f92ba5992bd6295ba5990b65d96bb5894ba6097b960 *97bd5791ba6396bc6498bb6796bb5e96ba5e95b76097ba6299bc5e97bc6098bc6197bc689abb63 *99ba5f97ba5d97ba6297bb6495ba5d97bb6a9bbc6799bd6899bb6098ba6298bb5d96bb5e96bc63 *9abe659bc06c9dbc6a9cbf5f99ba659bbd5f96bd5d96bc6b99bd689abc659aba699abb669abe65 *99bc6599bc649abd659bbd679bbd669cbd6496bd6a9cbd6c9abe699dbf669cbf649bbc669abd60 *9abc639bbd679cbe689dbe6c9dbf649abd5f9abb659bbc649cbb679bbc6a9bbd6399b96b9ebc64 *99bc659bbd679bbd6c9cbd649bbb669cbe699bbd709dbe6f9dc06c9dbe659dbd6b9dbd649dbf71 *a0be6f9ebe73a2c0679ebf6b9fbd6c9ebd6fa0bf6b9dbe659bbd659dbd73a0c0739dbd709fbd74 *9fbf6c9bbc669ebd6da0bd6c9ec06fa0c06fa0be73a3c075a3c169a0c16da2c068a0c16ea0bf6a *a1bf659cbe6a9ebf6a9bbe6d9dbf6da1c16ca3be6da2c16ea1c1699bbe65a0bd609bbe6fa0be68 *a0c16fa1bf6c9fbe689dbe679ebe6d9fbd5f9bbd6d9fbd699cc1689dbf6a9fc3629abe679cbc6e *9dbd669cbd689cbd689fbd72a1c06e9fbf699fbf679dbe679ebd629cbd6ca0c16c9ebf6b9bbf6e *9fc06f9dc06b9fc16d9fbf739ebe669dbd6aa0be6a9ebe6da1c06ca0bf689ec0679dbe729fbd66 *9fbb609bbd6fa2bd75a2be72a0bf6c9fc272a2c371a1bf6c9ebe6fa1bf73a0be77a2c06f9dbd75 *a1c271a1c1669dbd6aa0c1679fc06f9ebe709bbc669abd679dbe709fc1679fc16ca1c06d9fbe6a *9ebf6b9ebf6b9ec06d9dbe70a1c26fa0c073a2c2709fbf679ebe719fc16f9fc173a0c16c9dbe69 *a0be6fa0c16fa0c1699ebf689dbe6d9ebd709ec171a1be75a3bf659dbd6fa2c26aa1c366a1bf70 *9fc16b9bc06b9dbe6aa0bf699bbe6b9ebf69a1c36aa1c36d9fbe6899bd6ea2be6c9fc175a2c172 *a2bf6ea0c16da3c36da2c36f9fbe71a0c06f9fc06da1c06c9fc168a0c1689ec272a0c170a2bf70 *9ebf689abf6b9cbe70a2c171a0c171a2c270a2c36ca1c472a2c279a4c16d9ebd6da2c1669dc26f *a0c36ba1bf679ec16ea4c3659dbd6a9cbe70a0c36a9fc06c9dc170a0c26ea2c377a3c379a4c375 *a2c173a2c178a3c074a0c378a2c375a2c279a2bf7aa4c484a9c585a8c583a8c58baac696afc89b *b1c7a7b8caacbcceb1c0d0b0c0cdaebfcdabbbcdaebbcdafbbcdb0beceb0bdceb1bdcfadbcd1b3 *bfd1b2bdceb1bfd1b0c0d0b2bcceacbdccaabacca4b6c9a1b3c99db6c996b1c793acc599aec797 *adc79bb1c9a0b6caa8b8cca6b7cea0b6cb9fb5cb9fb5caa4b8caaab9cdaebed1b5c0d1b6c0d1b5 *c0d0b1c1cdb4bfcfb4becfb1bdceb2bdceb0bdccb1c0cfb6c2d2b6c2d0b7c1d0b6c2d1b8c4d1b9 *c3d2bbc4d5bbc3d3bbc3d4bfc6d6bbc6d4bcc5d3bdc7d2bcc4d1b9c4d3bcc6d1bdc6d2bcc6d3bc *c6d1bbc4cfbac4d1b6c4d1b5c2d2b6c2d1b5c2d0b5bfceb5c1ceaebdceacbcceacbacf9bb2ca95 *aec691aac690adc88cadc88eacc68baac68cabc688aac786a9c883a9c685aac793aec793afc893 *afc888adc786acc888aac792aec78daec78aabc792aec98fadc896aec990afc895b1cb92aec897 *b1ca92b0cb97b1c797b0c997b1c99eb1cb9cb4cb9bb3ca9ab3c99fb7c999b3c79eb4ca98b2cb9f *b4c9a3b4ca9fb6caa4b5cba6b8ccaebccdafbdceafbdcdafbdcdb2bed0b6bed1b5c2d0b9c2cebb *c6c7c4cfd4cad4dbcdd7dccbd5d66592b65e8db05d90b65b8db4568cb15389b0568bb15b8db354 *8db6578bb6578cb5548bb65d91b6598cb5508db6528bb65386b55a8cb6538ab35b8fb7578db558 *8cb6588cb3558ab3598cb45389b55186b1598db5598bb6548ab35185b35589b55189b35187b353 *8db6508cb64c87b5548ab45a8db55084b34c84b04e87b34f89b3518bb34f89b5528bb5548ab44d *86b15688b44f85b15487b15389b24f87b54f84b24d86b25085b25087b35387b35687b5498ab350 *84b24f8cb6558cb2568ab3588cb6548ab54e86b64b86b54c88b5548eb6568eb75287b3538cb557 *8db8558db65387b44984b54685b34885b44b87b4598eb85b8db6588fb6558bb5528fb84d87b44a *88b24a87b6508db9558db75b91b65c8cb65a8bb45385b55287b74e86b35487b25390b6538bb750 *8eb6528cb54e8ab7588db7528db5528db75c8fb66395bb5796b95991b85b8eba548bb7588cb65d *93ba588fb55791b7588eb55d92b85b90b8578cb7538fb8518ab5548ab65392ba5f93bb5d94bb5d *93bb6291b5548ab45b8fb7558db55a92bb5391b7588eb55591ba6395bb5d91bb5b8fb85791b85b *90b95b90b9588fba5e96ba5e91b95891b85d91b9578fb75995bc5991b95792bb5891bb5e94bc5a *95bb6094bb6593bc5c94b8558fbb5992ba5f92b95c93ba5c94ba5b95ba5d94bb6194bb5e93bb66 *98bb6595b95d94ba5d91ba6696b96097bb6096bb6495bb6496bb5791b95b92ba5f97bb5d94b85c *92b96198bd5d91bb5f94bc5f96bc5f96bb5f94b85d95bb6697bb6493bb6294b96192bc5f93ba5c *97b66796ba5b92b96297bc6799bb5996bb6398be6194b95e95bb5a95ba6299bb5e98bc6396bb66 *98bb6098bc6296bc6196bc6898bc6592b95f96bb5f96bc6899be679bbd6497bb6095bd6496bc63 *99bc5e96bb6897bd6a9abf6699bd6498bc5f99be6599bd6697bb6897bb679abd6a99bc6496bc5a *93ba6296ba6a99be6d99bd5f95bb659bbd659abe6599bc6196bd699abf6a9cbc669cbe6f9dbd6d *9bbd6b9abe6499bd699abc6699be6699be669bbd6599bd679cbd6b9bbd6598bd6c9abd6899bd6a *9bbe669abd6898bd689abd6f9cbd6b9abb689cbd6799bb6a9dbe67a0c1649bc16ba1c16ca0bf6d *9ec1689fbe709cbd739cbf709bbe669ac16b9ec06b9ec16c9cc0689cbe6e9dbd6a9cbc6d9dbf73 *9dbd659cc1699ec06b9fc16c9ebe6c9cbe6fa2c06b9dbd6e9cbc6ca1c2679fc26a9cc46c9fc270 *9fc06fa1bd73a0bf689ebe669cbf6c9ec075a0c2759dc1729fc16a9fc072a1bd6c9ec172a3c169 *9cbe6b9ec1689cc1749fc1699dbe6b9fbe619abf699fbf619abc689bc071a1bd659bbd759ec06f *a0be6599bd6b9cbe679dbf679dc06ca0c1749fc16d9cbf719ec1699dbc6b9cbe739dc06a9ebe68 *9cbd6a9cbe679cbd639bbe6ca0c16f9dc06c9dbd6d9ebf6b9fc06b9fc271a0c06f9dc16b9fc16f *9ac0729dbf759cbc6a9cbd699fbd699cbe6d9ebd649ebf6fa0be72a1c0739fbd719cbd659fc066 *9dc0699fc472a1c3699ec1699ec271a0bf719fbd6a9dc1699dbf689cbd6b9bbe6f9fc16f9ebf73 *a0c177a3c173a0bf689ec0699cbf629cbe71a1c26c9fc173a1bf6ea0c272a2c372a1c2719fc26d *9fc16aa0c1649ac1719ec1729fbf6da0bf759fbf72a0c36d9ec271a1c3659abe6ca0c16c9cbd6f *a0c06aa0c175a1c1709dc177a2c1699bc36d9fc06c9dbe669cc16ba0c1679ec175a1c26c9dc174 *a0c26f9fc076a4c270a3c16b9ec06aa2c274a0c26d9ec26f9ec16f9fc170a1c270a0c2719fc175 *a0c26a9cbf6d9ec16ea0c26b9fc2719fc1699cbf6fa2c16ea0c16ba1c278a4c36d9ec16b9dc177 *9fc3729fc3729fc06e9ec16c9cbe689bbf6b9dbf6ea0c177a2c26c9cc1679dc36ca1be73a1c46e *9dbf71a2c375a4c373a2c174a2c176a3c473a2c373a1c37ba3c086a6c686a9c68aa9c690abc69b *b0caa0b5c9a8bacbafbbcdb0becfb2becfb0bed0b3bbccb1bccdb1c1cfb2c1cfb4c1d1b4c0d0b1 *beceb4c1d0b5c1d1b6c1d2b3bed1b0bcccb0bdd1aebbceacb7cba4b4cb9bafc999b1c79ab0c99e *aec89fb1c9a4b4c7a0b6cbadbbccabbccdaebecfb1bed0b0bccfb3becfb3c1d1b8c2d1b7c0d1b4 *bdcfb6c0cfb5c1d1b7c2d3b8c0cfb4bdd0b5c0d0b3bfd0b3becfb6bfd3b7c2d1b9c2d1bac3d2b9 *c3d2bac3d1b9c3d1bdc6d3bbc3d4bdc6d6bbc6d5bbc6d6bdc7d6bfc4d2bdc5d0bec5d1bdc6d3bd *c6d3bcc5d7bdc4d5bcc3d5bcc6d1bbc4d1bbc3d1bbc3ceb6bfceb4bed1b1bed1adc1d1a5b9cd9b *b2ca97aec792aec697aec998aec98cacc893acc792abc890adc989abc78cabc689aac595aec991 *aec88bacc792aeca8baecb92aec791aec793b0c798aec996aeca96adc792afcb9bb0cb97b1cb9a *b3c999b1ca9bb2cb9db1cb9ab0c999b0c897afcb9eb1cba2b3cd9eb6cc9fb5ca9cb2caa0b3c9a2 *b1cba2b5cba4b9cca5b9cca5bbceaabaccb1bdceb1bdd0b2becfb3becfb4c0d0b7c1d2bbc2d1be *c6d1bec6c7c7cfd4ccd4dad0d6dccdd7db5f92b45f8eb25d8dae608eb3528bb15388b3508ab352 *8baf528ab6528bb3568db55a8db65087b45a90b65d8cb54c8ab35490b7568cb6568ab2558cb357 *8bb55c8fb64d8cb6588cb5538bb4578cb5538ab45b8db75c8bb25289b45a8cb6588bb6568db656 *8ab34f87b2568bb4528cb4538ab45a8cb3558cb6538eb7548bb44e8ab34f8bb6598db55087b351 *89b1588cb24b88b4538db44f89b5518ab35988b24f86b1518ab3598eb35387b4538ab6578ab450 *89b4528ab3528bb4578eb6568bb4508bb5568bb55a8cb65c8db54f88b35089b25a91b6558db450 *8bb4528bb5508cb6518ab65189b64c88b1558db44d8ab64d8bb5568eb74e88b34c88b7528bb652 *8cb4528ab44c89b3508bb6588bb6558bb6578fb8508cb6528bb6568bb4538ab34b8ab65991b652 *8fb64d8bb65b8fbb5d8eb8558eb6578fb55791ba6394b75b91b6528eb65f8cb45b91ba5d90b955 *8db64e8ab5568fb6528bb4598ab4538db65992b95c96ba5b93bb5890b65a8fb5578fb7568eb753 *8db4538db6568eb75992ba5a92ba5a94b65d91b85d93ba5e93b95d95ba5f92ba5c92b66697bb64 *99bb5e8eb5598fb6538eb4598eb65d92b86096ba5790ba578fb96293ba5c90b85990b75d8fb960 *91b95792b95691bb5c92b95f94bd6293b96093ba598eb95b92b75d96ba5c93ba5d91ba5f93bb60 *96bd5c94b85e94ba6196bb5d92b85f95bb5c93b95890b86395b86597bb5e92ba6294b95f96ba60 *96bc6190b85f93bb5d93bc6094bb6097bb6399bb6597bb5894ba5892ba6897ba6597bb6799bb65 *99bc5d97bd6697bb5c92bb5f96bc6197bb6495b95e93bb6498bc6698bd6698bb5f95bb6496bb5d *94bb6496bb6197bc6398bb659abe689abc699abc5e94bb6b9bbd6697bc6399bc6b9abd6999bd67 *98bb6a9abd5f96bd6c9bbd6c99bd5f96bb6299bc629bbb6499bc6b9bbb669bbd6a9bbc6b99bb6b *97bb699bbf6297bd6698bd6599bc6999bd6499bd6299bd6e9cbd6a98bb689dbc659dbf6b9abd5f *98bb6a9abd6799bd6299bb629abb6498ba659bbe659abc6c9bbd6a9bbf6c9dbe6d9dbf6297bc65 *97bb699abd679abb6398bc6c9ebf6da0bf6da1c16b9ebc699cbd669cbd6d9dbd6799bd6c9dbc6a *9dbd659bbf6c9fc06a9dbc6c9dbf679dbe6d9bbf6d9cbd6fa0c06c9bc06d9dbf729dbd6ea0be68 *9bbd6d9dc0689cc0679fbe74a1c072a1c16ca0c16fa0c16b9ebf71a1c0719cbc6c9dbf679cbf73 *9dc06f9dbe6f9dc072a1bf669bc0669dbd6f9fbd6f9fc06a9fbe70a1c171a0c36b9ec27ba2c069 *9bbe739ebd709fc372a0c16c9fc074a2c16aa0c1699ec16ca0c1609abd689dbd6b9dbd6a9dbe64 *97bd6b9bbe729ebf6999bf659abd639cbf669cbd689fbe649cbf699ebf6b9fbf6e9dc077a1c36d *9ebd699cbd689ebe689cbd6a9bbd689dbf709ebe6e9dbe6e9ebd699bbe6e9fc0689ec1679abd6d *9ec069a1bc6da0c06aa0bd6ea2bd6a9cbe679cbf6c9cc26c9bc172a2c1729ebf719fbd739fc065 *9dbd71a1c26d9fc36f9ebf709fc378a4c377a0c16a9fbe659fbf76a3c1729fbe6e9dbf749ec172 *9dbf71a0be75a3c375a2be6aa0c073a1c3709fc0719fc1709fc276a2c1659dbf71a0c16d9ec170 *9dbf6a9ebe709fc0669cc170a2c26b9fbf669dbe6c9ebf6ba2bf6ca0c2639cc16899be6c9fc16c *a1c26c9dc472a1c1779fc0679abd6ba1c16ca0bf70a0c26ca1c26e9fc271a0c373a3c36ca0c178 *a0c16e9fc16f9fc071a1c26a9bbe6b9ec16a9ec16ea0c2789fc06f9bc177a2bf75a0c26b9fc26f *a0c26e9fc272a0c0709dbf6ba0c167a0c274a2c36da0c0699fbd6c9dbf72a1c073a1bf76a3c377 *a2c274a0c16ea1c26aa1c368a0c277a4c176a0bd72a1c276a3c376a3c175a1c470a0c174a3c472 *a2c270a2c076a2c0709fc06f9ec375a2c3749fc373a3c274a2c17ea4c182a5c38eabc690acc794 *abc79eb0c9a6b7ccaabbccafbfccaebfceb0c1cfb3c0cdb2bfcfb6c1d3b6c3d3b9c3d1b5c3d1b5 *c1cfb1c1d0b6bdd0b4bdd2b7c1d1b6c1d2b1bcceb1bdceafbecdadbbceaabbcc9cb4c99fb2c7a4 *b5c8aab6ccacbbceabbccaa8b7cbaebbceaebcd0b0bccfb6c2d1b9c2d0bbc3d0bbc3d3bac6d3b9 *c4d2b8c3d1b8c2d1b7c3d0b8c1d1b6c3d2b6c2d2b7c3d3b4c2cfb2bdceb9c0d3b4bfd2bac2d2bb *c3d3bdc6d4bbc6d4c0c5d3bec5d4bec4d4bcc5d3bfc6d4bdc6d6bec7d6bfc8d4bfc6d6bfc8d3bd *c6d3bbc7d5c0c7d3bfc7d6bdc4d4bcc5d3bbc6d6bdc6d6b6c1cfb7c1d1b6bfd1b3becea9bdcfa3 *b7cd97aecb99aec994adc994aec794acc78faec990abc68baac688adc78aa9c789aac798aec792 *afc98faac489aac689abc689aac893adc897aec894b0cb98b1c995b0ca9ab0c99cb1c792afc88f *b0ca9db1cb9fb9cc9fb6cd9fb6cba0b6cc9eb5cb9eb4cba0b4cc9eb3cc9cb1cba2b1cba3b6ca9e *b1c9a7b6cba8b6cca6b9cca9b8ccaabbccacbcceb0bfd1b3c0cfb6c2d1b7c3d2b9c4d1bcc7d3bd *c6d1c0c5d1c1c8cacad2d6cdd6dbced7ddcdd4d76491b6578fb4548cb0528bb4528bb4528ab153 *8bb6558eb5608fb65b8fb6568bb3528ab3578db65991b64a89b4588cb4528ab15089b45f92b753 *8db4578cb65691b6548cb3588cb65a8fb35d90b5558bb6508ab44f84af4c83b0538db65189b453 *8db64f8ab34d88b3568ab34e89b35088b3538ab44f8ab64d86b4558cb5528bb24c89b24e87b252 *86b54e8ab2528bb54884b14f8bb4548cb3548eb64f86b24f88b34b8ab54e87b4538bb6588cb350 *89b3518db4478ab6558ab4528ab54e8bb64b86b14c88b14f8ab44f8ab4518bb54b89b25188b24e *88b54c88b34e88b24c87b44c87b2548fb64d8cb45089b4508bb7558ab55186b44f88b4528bb44f *87b24d87b24b88b35290b6588ab6578db6508ab6528cb54e8cb6538cb64c8cb64e8bb64f8cb654 *8db84b8ab3508ab6528fb6558eb7508bb64f8ab24f8cb6568db6508ab6578fb65791b75b8fb552 *8eb9548fb95890b95491bb538bb5588fb54f8ab45b8fb65b8cb7548db6558fb64d8cb9518fb65a *90b85590b85791b9528db5588db74d8bb6588fb85b93ba5d96bb5991b55c90b55090b8588cb85b *92b95996bc6094bc5392b95890b55791b85d91b85391ba5c8fb95891bb5c91b9518dbb5790ba5a *91b96196bd6395bb5e8fb9578fb76095bb5090b9518eb65b91ba5592b75a94b85992b65593b95c *8eb75a92b95f95bc5a93bb6493ba6396ba5992b85691b75490b65c95ba5292b95895bc5693bb5b *91b85f90b65f94b95794ba6396bb6496bb6296bb5c96bb6399be5f96bb5d92b95e96b96096bb5a *96bb6099bd5d97bd6097be6796bd5e97bb6296bb6098bb6095ba5c93ba5c93bb5e97bc6298bc65 *98ba6598bb6397ba5993ba6296bb6097ba6097bd5c94ba6a97bc6298bb689abd6198bc5c98bc65 *9bbd6297be5f98bd6197bd6096be6599bd6a98bc5f97bb609abc5f98bc6499bb5f97bc6598bc63 *98bb699cbc669cbc6495b96599bc6397bb6298bc6397ba5f9abd619cbd679abb6599bc5e94bb5f *96bc6197bb6a9abd6598bd5f98bc679bbd6199bc699bbd639abc6b9cbb659cba679abc639abd63 *99bd6298bb6599bb6498ba6198bb659bbd669dbd6a9bc06c9ebf669abd699bbd639bbc649bbd67 *9bbc659bbd6c99bd6899c0679bbe6a9fbd6e9fbe75a0bf679cbd699bbe6a9dbe6097bc699dbe6c *9fbc719dbe6fa0be719fbe6c9ebd69a0bf679cbe6a9bbf72a0bf6da0be6ea0bd70a1bf699ebf67 *9ebf619bbf689bbd649bc0699ebf6aa0c1699ebf72a1c0689cbf649bbd72a0be679ac1699ec169 *9ec1699dbf639fbd629abe6499be6c9bbe6b9cbc6d9dc0659ec06b9fc1689cc1659dbf629abd65 *9abd679abe659bbc659cbf6c9fbd689ac0649fbd699fbc769dbd689abd6b9cbd6b9cbf6d9ebe68 *9bbf689cc0669dbf6fa0c0679bbd659abc639cbe6a9dbf6b9cbe75a2c1699dbe6ca0c073a0bf69 *9abc6b9bbd6699bc72a3c06b9ebe6a9cbd6b9fbf74a0be74a0c070a2c1679ebe639abf679dbe6a *a1c273a2c26f9fbf6da0c06fa1c3719fc26fa0c16c9fc06ea0c1679dbe6ca0bf6c9ec16ba2c168 *9bc06d9ebd6b9fbf6a9cc16a9bbf649fbd679fc1689fc16fa1c26b9fc1689cc16a9cbf6ca0c36c *9fc06f9cbf71a0bf619ebf689fc2649ec16b9ec06f9ebf6b9cbe709fbe689fc16ca2c16da0c06f *9fc36ca0c3719dbf689bbf6a99bc709dbd6a9cbf629fbe629cbe69a0bf6c9fc26ea1c36ca1c173 *a2c0699fc2609ac1699dbe69a1c16fa1c3729dc26a9ec06b9fc1689ebf6b9fc16fa1c375a2c36f *a1c26f9cc2679bbf73a0c16ea1c2699cc2679ec26da2c269a1c26ba0be6b9fc171a1c376a1c16c *9ec176a0c377a2c370a1c36da2c56d9ec170a0bf72a3c26da0c16a9fc16e9fc26fa0c272a1c06d *a1c172a2c16ea4c374a2c3759fc070a2c36ba1c1689ec26ea1c274a4c47ba2c379a3c188abc692 *abc699b0c7a1b3c9a9b8cbadbcccadbdcdb2bfcfb1bfceb3bdcdb4c0cdb3c1d1b2c3d1b3c2d2b4 *c3d3b7c3d1b5c3d1b3c1cfb3c1d0b7c1d1b3c1d0b2bdd0afbfd2b0bdd2aebdceaebbccaabbcba8 *b8c9a9bbcbacbbccabbbceaebaceb0bcccb0bbcdb2beceb4c2cebbc6d5b9c5d3bbc4d4bac6d5bc *c6d6bcc4d2bdc6d3bbc4d1b8c5d2b6c2d0b4c2d3b3c0d1b6c2d3b5c1d3b8c0d0b9c2d1b7c3d2ba *c5d1bbc5d2bac6d3bbc6d4bdc6d4bdc6d5bfc6d3c1c8d4bdc7d5bdc6d6bdc8d7bec6d6bec6d7be *c7d6c0c7d5bec9d3bcc8d3bec8d6bcc7d4bcc6d4bfc6d4b9c6d4bac6d3b7c2ceb5c0ceb2c1ceaa *bdcda2b6ca96aec98daac68dacc990aeca95adc999adc78dabc888a9c687a8c58aabc68baeca91 *aec989acc98bacc78caac579a2c28aaac78eadc88cabc68dacc986abc791afcb9ab3cb9cb4ca98 *afca99b1cb99b1c99eb5ce9eb4cb9eb4cc9ab1cca3b6caa2b6cb9cb1cb9db4cb9cb1cb9cb1cc9c *b4cca4b4caa6b9cda4b6cba4b6c9a9b9ccaebcceaebbcdafbdcfb1bdd0b3c0d2b7c2d2bac6d2bb *c7d3b8c4d1b9c2cfbec6c9c6cfd6cad6dcced7ded0dadd618db6608cb1588bb15d8eb45387b35a *8eb6588bb2528cb6588cb65a90bb5d90b5538bb7568db8508cb5558bb3538cb4508bb45588b158 *86b3538ab5528ab2528bb65f91b65d8eb6588cb55b8eb6508bb65087b55185b05a89b25b90b657 *8bb5528ab5508cb65189b5538cb55189b4508bb5528db5538ab35189b24887b14888b64785b64d *87b75188b55288b45289b34a86b14983b24f87b44c82b2598bb55287b55185b14785b14b85b150 *85b25a8bb64c8ab45188b35289b64881b44d86b25088b54b87b54d8cb64e86b34c87b54c85b449 *84b44c87b55487b34e88b45688b4558ab44e86b35388b45088b5528ab65489b5548ab34c8bb54c *89b64d8ab55a8ab2588bb54f87b45086b34c88b4568bb6508ab6578eb75a8bb34787b54f89b253 *8cb7508bb95490b65791b5558bb4538eb6588fb65a90b7528eb6578eb65190b8598eb8568ab65b *8cb3528cb5548eb65389b55189b55188b4518fb64e88b54c83b45488b6538ab6548db65189b756 *8eb9568fb94f8bb6518bb7508ab45890b85490ba5491bb528dbb6195bc5391ba5d92b8538db850 *8db6538db8528cb85992bb5c90bb528db8588eb55991b85e92b9588eb95790b75790b85c92bb57 *92bb5d92b86a97b95b90b95e8cb95a8fba5592bb5a92bb5b91ba5490b95f93ba5c93ba558fba5a *91ba5e94bc5e92bb6395bc5d94b95990ba5c91b95992b95e90bb608fbb5b94ba5996bc5a92ba59 *96bb5b93b95c91bb5d97ba6091ba5d91bc5b93bb5f95bc6999bb5f93bb6197bc6197bb5a91bb64 *93bb5b91bb568fba6596bb6096ba6596bd5d95bb5994b85691bb5f93bb6096bd6296bb5e93ba5f *96ba6599bc689abd689abd6494bb6694bb5e94bb5c95ba5a95bc6196bc6398ba6297bc6798ba64 *95bc6296bc5e96bc6297bc6b9abe6498c0709bc16a97bf699bc06696bd6598bd5c95bc6697bd60 *97bc6095ba6396bc6799bd5893ba6095bb6099bb5b94ba6396bb5d98bc5e96bb699cbe6c9abe6c *99be6798be6698bc699abe6899bd6599bc6099bc6798bc5f97bd6398bd6797bc6399bb679abb67 *99bc6697bb6898bb679abd6898bd679abe629bbd6999bc71a0c1739fbe6d9dbd649cbe629bbf69 *9ac16798bc6498bd629abd669abd6a99bd6b9bbe6598bd6b9bc1669bc06498bd649bbe6799bb69 *9dbf6c9dbd699abe679abd6a9abf6d9cc16e9fbe699fbf659cbf679abe6a9cbd6499bd6c9fc069 *9abf6c9bc06c9cbf6d9fbf689dbd6b9cbd679cbf6e9bc1699cc06a9bbe72a1c16ca0bf689dbe63 *9cbe659bbe6c9bbf679cbe6798bd6199bf6799bd679fbd74a0c0679abd6498bb6c9ec06597bf63 *98bd6599bf649bbb659cbb699ac06699bd6799bd6a9bbe689dbe6e9bc16e9cbf6d9dbe6d9cbd67 *99bc6799bd659bbe689bbf6a9bbf6e9bbd6a9cbe659cbe6799be6b9bbd629abe679cbd669cbd69 *9bc06499bd5f96bd6a99bd6d9fbb73a1bd639cbd699fc06ba0c26c9cc26b9ebe679bbd6c9cbe6e *9dc06e9dc1669fc2679cbe709ec16b9abd6fa0c270a0c0709fbf71a0c16a9dbe749bbe709cc066 *99c0689cc0679abe679abd689abf6b9dbf6c9ec0669bc16d9cc06e9fc271a0c46fa1c26ea1c16b *a0bf6b9dc06b9bc06c9cbe6fa0c0669dc1659ac16fa1c4699ec16a9cbf729ec26a9bbf699cc26f *a0c26b9fc36a9dc36da1c1679abe6c9bc07099c16a9bc16e9ebf679bbf709cbf6e9cbf749dc16d *9dbe6498bd6b9bbd699bc0719ec171a2c3669ac06a9fc26ea2c16b9abe6a9cbf779ec16ea1c166 *9cbf659cc170a0c36e9ec16d9ac06e9ac16c9bc0699ac072a1c16c9dc26a9ec1689dc36c9dc474 *9fc0759ec26b9abd73a1c3659fc16ea2c36a9ec375a2c56ba1c26d9dbf6c9abd6ea0c076a1c16d *9bc27ca2c376a4c36da0c2769ec3749cbe70a0c46ca1c076a0c279a3c480a5c683a8c792abc799 *afc79db2c89eb5cba0b5caa8b7ccadbacdafbcccb4c0d1b5bfcfb5bfd1b6c1d2b5c0d1b7c1d2b5 *c1d2b6c2d1b4c2d3b6c3d3b9c3d1b7c3d1b6c2d1b6c1d1b4bdd1b6c3d0b5bed0b5c1d0b1beccae *bbccaeb8cdacbaccb1bbccb0bdd0b0bdcdb1bcceb4c0ceb7c1d3bcc5d4bcc3d3bbc4d2bdc4d4bd *c6d5bbc6d5bcc6d4bcc7d4bbc6d3bcc4d4b7c3d2b6c1d1b6bed2b6bed0b7c1d0bbc4d2bbc5d6bc *c5d5bfc3d5bdc5d4bcc4d1bcc6d1bdc6d6bcc6d6c1c6d4c1c7d6bfc7d5c2c6d3c0c7d4bdc7d6c0 *c7d3bec7d3c0c8d6bdc6d6bbc5d4bec6d4bec5d5bcc7d6bec7d6bbc7d3bbc4d4b9c3d2b7c1d1b1 *c1d0afbccda6b6cc9cb1cc94aec994aec995adc694acc894acc98baac690acc68eabc88ca9c989 *a8c885a4c786a6c78eaac789a8c68cacc689abc78aaac886a8c790aac78eadc98dabc78dadcb98 *afca99b1caa0b2cda4b5cda0b4cca2b5cda6b7cea4b6cda4b5cca1b2cba4b5cca3b6cd9fb6cca2 *b6cba1b3cba2b6cca2b4cba4b6cca4b7cca6b6cda9bacdabbacdaebdd0aebbcfaebbceb3bfd1b2 *c0d2b7c1d3b6c1d3b7c2cebec6c8c8d0d4cbd6dbcdd8deced8dd6c94b36a99b65b8db05b91b059 *8db3518cb34d8ab1558db25891b6578eb7588eb95288b65d8cb6558db4538bb14c8bb4538eb54a *88b44f87b3558eb65b94ba5d8fb65c8eb4568cb45d8eb65a8cb55c8cb6578eb6598cb5548bb558 *8fb4538bb3508cb54f89b64b87b3548cb4568bb54f89b6578cb5548bb55188b45087b14c89b351 *8ab44f87b4518cb54e8bb54d8ab24c8ab3508cb64a86b44e88b14c89b14d86b1508bb44781b056 *88b15088b3528ab5538bb34e8ab24384b34586b4538bb8518ab5568bb34f8ab44b86b44788b34d *89b4598ab55088b6578ab64f8ab6558cb54c8bb64d89b14e8ab44f8ab54e88b44e8bb8538db750 *89b64f8ab54d8eb44d89b2578fb55591b64e86b45289b64f8cb6508bb65187b14a8bb3508db64f *87b24f87b6528bb54c87b44f89b55b8fb9528eb84f89b6518db64d87b64a8cb65992ba568fb65d *90b5548ab54f8db5578fb94786b55591b84e88b1558eb6568fb4508ab5598eb6558eb6508bb450 *8db6508eb74f8db55590b7568cb86392b95690b85291ba5090b95592bb558eb95b93b95c94b84d *8fba568eb74e8db8518eb65890b65890b75391b64d90b95b92ba568bb85e90bb4f91ba5593bc5c *92ba5291b95891b95791b95393bb5491bc5590ba5693ba5a94ba5a92ba5d96ba5a93ba5e8fb95c *94bb5393b65994ba5f96bb5f94ba5c92b85f95bb6195ba6192ba5d91b96095bb5b97bc5193b956 *90b95892ba5791b96092b85e92bb5f94ba609abe5f99be5b96bb6193bb6395b96097bb5c94bb5c *94bb6196ba5b98bb6799bb6295bb5d91bb5f92ba6096bb5a92ba5995bc6098bd5e97bd6299bd59 *95ba5e98bb6294b85d95bb5f97bc6298bc649bbd5d98bc5b94ba6095ba6598bc5f94ba6098bc61 *98bc6196bc6199bf5f99bd649abd6599bc5d96bc6198bd6499bd5d97bc5797bb6298bb669abd6a *9bbc6197bb629abb6899bd5d96bb6598bc6999be6699bd6398bd6699bb6597bc6598bd6498bd6a *98bd6499bd5b97bd6299bd689cbd679bbd6598bb6198bc659abc669bbe6e9cbf6799bd629bbd68 *9dbd689abb639abc679cbe6c9abd6799bd6397bb6c9dbd6099bd639bbd639cbd5e99bb6198bc5d *97bd659cc06a9ec1669dbe6a9fbc6e9fbd609abc6a9cc06e9ebd649abd689dbf649bc06ea2c16a *9dbd6a9dbd6b9cbb6a9bbd6399bc679cbd699ebf6d9cc06a9ebe679bbd689bbd6a9cbd649bbd6b *a1bf68a0be609ec0669fc16f99bc6b9fbe679abd71a0bf679fbf659fbe6f9fc0689cc166a0c06d *a1c36fa1c16599bb6d9bbd6b9bbd709ebf6e9dc0659cc06b9cbd649bbd669abd6a9fbc5e9bbe61 *99bd6c9cbf6a9bbf67a1bf689dbf73a0be6c9dc0659cbd669abd6598bc669cbf6199be689abf6a *9bbd689bbb6b9dbd5f99be6199bd699dbf6ba0c1659abe619dbe6fa2c1699ebd619bbd6a9dbe66 *9abe6a9dc06d9cc0699dc06a9cbd6d9bbe689dbd669bbb679dbe699bbd6a9abd71a0c16a9ec06c *9dc2719ebe659cbf6a9fc1629dc0659ec069a1bf659dc067a0c270a1c16f9fbe6ca0bf6d9dbe66 *9bc06c9fc172a3c16e9ec0669ebf6b9fc1659dbe6a9fc068a0c16fa3c170a1c06a9fc16fa1c267 *9dc169a0c2699ec1689cbe689bbf659dbe6aa2c36b9ec1609cc16b9cbf6a9bbf709ec16fa0c269 *9fc3689fbf6b9fc3699dc16ca1c276a4c3659cbe649abd609abe699ec26b9ec1639bc370a2c476 *a0c271a0c16a9dc2679fbd6b9fc16aa1c3689dc2649abf679cc16a9dc06d9ebe659cbf699ec166 *9cc169a0c1659bbf659bbf729ec16a9dc16da2c36a9fc172a1c3659ec2689dbe6a9fc0679ebe6c *a0c36aa1c16da1bf6ca0c2679dc16f9ec06ba0c16c9ec2709cc16ea0c174a0c26ca0c26fa0c275 *9fc36da1c268a1c16da3c369a2c36ca0c370a2c376a4c474a4c276a2c17ca4c58baac694adc79d *b2caa1b6c9a0b3c9a7b9cba4b7cba9b9cbaebbcdb0c0cfb0bfd0b3c0d0b6c2d2b6c3d2b8c4d2b6 *c4d1b7c4d1b6c4d2b6c3d4b6c4d3b8c3d1b6c3d2b8c3d2b6c3d3b6c3d1b6c2d2b4c3d3b6c2d3b5 *c1d0b2c2d1b4c0d0b3c1d1b1c1d1b2c2d1b4c1d1b6c2d1bbc3d3bbc5d3bcc6d1bdc7d4bcc7d5bd *c8d4bbc7d5bec7d6bdc7d5bec6d4bcc6d4bac6d4bac7d4bcc6d3b8c3d2b8c3d1bbc3d1bbc3d1bd *c6d4bcc5d5bfc7d6bec7d6bdc8d6bfc7d6c1c7d5c1c8d3c1c9d6bfc7d7bfc7d6c1c9d8c1c9d7be *c9d8bfc7d4c1c8d3c2c7d6bfc8d6c0c7d5bfc8d4bfc8d6bec8d6bec8d7bec7d6bbc6d3b7c4d1b7 *c3d3b1bfd1aec0d1a6bacd9db7cd98b2ca95aec896aec793aeca93adc793adc78aacc78eaec98a *aac78aaac585a7c58aaac586aac78aabc88cacc885a8c889acc98badc78dadc68caec992afca91 *aeca92aecb96aeca99b0cc9db4cba3b6cca5b6ccb0c0d0abbdceaab8cca7b6cda6b8cda4b9cea6 *bbceaabbcea4b8cba4b8cba1b6cba4b6cda5b7cda2b9cda6bbcfa9baceaabacdabbacdacb9ceaf *bcceaebdd1b0bfceb1bfd1b1becdbbc7ccc9d1d5cbd5dbced9ddced8dd6891b6648fb75d8eb455 *90b34f89b1558cb55388b25b8db3568ab3598cb55789b2518bb5598ab65c8cb5578cb4528cb557 *8cb5578cb35a92b6578bb64f8cb4528bb6588db76392ba5f8cb66190b5598cb3568cb5588ab552 *8db35186b15087b2538eb6508bb5558db6558cb5538bb5558ab3538ab45185b3588db55288b452 *8ab45488b34a88b45287b55587b2518bb34f8ab24d89b34585b1538bb24d85b15185b25189b148 *85b14b85b34c84b25087b54c8ab35288b14c89b2538db5588ab25286b2508cb64d8ab34e88b252 *8bb55185b14d86b34e87b35487b2538bb54a86b44b86b34e8ab4558db6528bb44f85b44d86b54e *88b64886b64d87b4548ab64b88b4578cb45182b35287b44887b64c87b64d89b55487b3508cb34c *8bb5568eb9568bb54d86b3518ab4518ab34e8ab64c8bba4f8bb85289b6588ab64e8ab3538db64f *8ab54e8ab45289b6518cb65290b8528cb54f86b44d86b54b86b34e88b35a91b9528eb54e8ab754 *8cb45089b55388b34f8fb64c8bb6548bb55890b95390b6538eb8508fb7568eba4c89b55992bb51 *8fb85391b85891b95d91b75c95b95694bb5b91b85a8fb75b8db85d8db65a8eb75792b75f96bb5f *96bd6896bb5a90bb5891bb5791ba4d8ab75890b75990bb5992ba5a8fba5c91bb5390b94e8db85f *94ba518eb56196ba5792b85b94bb5a94bc5f92ba508cb65c95ba5a92bb508fb65490b75f94bb5f *95bb5894bb5f93b85d90ba6091b75990ba5d96ba5b94bb5d94be5c91bb5e95bb6597bb5791b85e *95bb5c92bb5f94b95f96bc5e95ba6092b95e96bb6495bb6096ba5896bb5c96bb5a94bb6196ba62 *96b96697ba6397bb6298ba5293b95a92ba5c93ba5d94ba5e94b95d95ba6199bc6398ba5f97bb5d *95bb5f97bb6197bb6397ba6095bb6298bd6799bc6399bb6097bf5e94ba6497ba5f95ba6498bb5f *95bb689bbf6199bf669abd6295bb5f94b96b97bc6593bb6499bd6297bd6497bd609cbd649abc60 *98bd6799bb6799bc6499bb5a98b96199bd639cbe719dbe6499bb6698bb689abb6398ba699abd65 *98bb6296bc6a98bd6598bb6899bd6599bd6899be6497bb649cbe5a97bd699cbd659ebf669cbe69 *9dbd669abd6e9fc0639abe6b9cbd6a9bbd6298bb689bbc6599bb6b98bb689bbd659cbe6399bd68 *9cbd639abe739fc16c9ebf649fbd6a9dbd699dbe6399be6f9cbf6c9dbd699abd699ec071a1c065 *99bd699abe6a9ec06c9cbd6f9cbd709ebf6c9dc0719dbe6a9abd699ebf6f9ec0679dbe6c9ebd69 *9bbd679ebf6ea1c16b9bbd6a9abf6a9cc06b9abf6499bd609abe5d95bb6999be669cc0679bbe62 *99bd73a1bf6a9abc689abd6a9dbf6699bd699ec36c9dc2689abe75a0bf629abf639bbc669cbe6a *9ebf6c9dbd6a9cbe6a9dbd659abd689ebd699bbc6c9ebd679bbc689cbd649cbf679dc0699cbe6a *9cc1679dbd659cbd659abf6c9cbd6c9bbe6a9cbd6d9fbd729fc172a0c06d9cbe6f9dbe669bbd64 *9abd6c9dc0679ebd6fa1c273a3c3689fbe659abe729ec16f9bbf5f98bd6a9cbd6d9fc16a9dc066 *9dc16b9ebf6999be5f97bc649abd689cbe71a0c16f9fbf6b9fbf6a9dbf689dbf6a9abe6e9dc16d *9cbe6b9bbc649dbf6ca0c0659ec074a1c36c9cbf6a9cbf649bbd6799bf659abd6c9cbf6b9cc16e *9fc0699fc06d9bc06b9cbf659abf6a9ec2699fc1659bc1719fc16a99be689cc16c9bc1649cc16c *a0c16aa0c1699ebe629cc16a9ebf6ca0c16ba0bf6c9abf6d9cc0659dc0699dbf669ac16a9abf6b *9cbd659bc0749fc0689dc06097bd659ac172a1c26b9fc269a1c16fa3c2729fbe679bbd699cc069 *9dc16da0c372a2c36e9ec268a0c16ba0bf679fc16ea2c275a2c36ca0c173a1c26ca3c26a9fc170 *a1c37ea4c279a2c374a2c468a1c1689ec171a1c373a1c375a4c375a4c377a2c384a5c38daac896 *adca9dafc9a3b4caa5b7c9a7b8cba9bbccacbacbafbccdadbccfb0bfd0b4c1cfb7c1cfb6c3d2b6 *c3d0b7c3d3bac5d5b9c3d5bbc5d3bac4d4b9c4d3b9c4d1b7c3d1b8c4d3b7c3d2b8c4d3b7c2d1b8 *c3d1b8c0d2b7c3d1b6c3d1b7c4d1b6c2d1b7c4d3bbc4d1bac3d1bcc4d3bbc6d3bbc6d3bbc6d4bd *c6d6c1c7d6c0c9d6bfc8d7bec6d4bbc6d4bcc6d4b8c5d3bbc5d2bbc5d4bbc6d5bdc7d6bdc6d3bd *c6d5bec6d8bec8d6c0c7d6c0c8d3c2c7d6c1c7d5c1c9d6c1cad7c0c7d7c0c8d8c0c7d5c1c7d6c1 *c9d3c0c8d4bdc6d4c1c7d6c0c4d5bcc7d3bec7d6bec9d5bfc7d2bfc7d4bdc6d5bdc6d6bdc6d6b6 *c3d3b6c3d4b5c1cfaebdcfa6bbcca0b5cb9fb5cc9bb1cb9cb0cb99afca8fafc791aec88bacc88c *aac58baac687aac68baac98eaeca89aac689aac687abc486a8c488abc88cacc78badc795aeca95 *b0cb90acc68cabc695aec79db3caa1b7cba8b9cdabbbceb1c0d2afbfd1abbbcda8bacca7bacca6 *b8cca6b8cca5b6cca4b8cea9bbcea5b7cba8b9cca2b8cca1b3cca4b7cca5b9cca7b9cca7b8cdac *baceacbbcca8bbcda9bacbabbccdaeb9c9bcc6cac9d0d7ccd5dccfdadeced8dc6892b15d8bae5f *8fb0558caf5389af518ab1598ab1578bb0598cb1578aaf578bb1578ab0598ab2558bb3528cb155 *8db15387b15a8bb35c8bb55e8fb15b8fb2588db35990b66592b66390b56894b66591b56b91b565 *90b5618eb4588db3588db3538bb45289b2558bb65e8eb6608fb35a8db3578eb25689b35389b356 *88b34d82b14a81ae5388b15384b14e85b14c87b14d8ab44f85b24886b14e88b15085b34d86b148 *88b14987af5b8ab1417dae4c85b14c86b04d8cb4568cb24f8ab24b87b35089b14d86b14c86b14b *88b34d88b34d85b25388b14889b15189b25188b45187b34d86b24f87b3508bb54d88b1508bb54b *86b35088b44b83b24a84b04e86b1508cb34c8eb5518cb5588cb65289b34f89b25388b44c85b248 *86b2558eb7528cb44c8bb45389b1528bb6568ab55287b34d88b34d87b44d8cb3558eb64b8ab44e *8bb34f89b44f8ab45089b44e86b24d88b2548fb54e8ab2518ab2528ab24d85b1518ab34f8eb658 *89b34f8cb54f89b5518bb2518db45992b8508ab64d8ab3518ab3598cb3528cb34c8ab54e8bb452 *8eb4518db4538eb55d8eb8538db6508cb55290b94c8bb45691b65992b95d91b65c91b74d90b658 *90b75692ba5d91b45890b85891ba5794ba5791b4588db6568db54f8cb55991b7578fb65894b94d *90b75b91b75a90b65a90b65f93b85893b95b91b8518db65994ba5693b85c93b75f93b85690b755 *8eb45b90b65791b65893b85192bb5c92ba608fb85690b75c94b75992b65493b65992b75c92b95e *95ba6197bc6592ba5f8eb65d93b95c93b85c94b96096bb6196ba5d95bb5c92ba6093b86097b85a *91b76098bc6097ba6597bb6195ba6395b86194b86395b86596b85b92b66297b86095bb5b93bb66 *98bd6899bc6098bb6094b95c94b95e96bb5e96bb5e96bb5f98bb6099bc6897bc6498bb6698bb5f *93b96497bb6a99bd6197bb5d94ba6998bd6599bb6198b66295b96497bc5f95ba5e96bb6298bb66 *98ba6a9cbe5f97ba6095bb5b97bb6396ba6999bb6198bc5f96bb5e96bb6298bc5f95bb6297ba61 *96b85c96ba6097b9679bbb609abb649cbc6c9bbc6b98bb699abb6d9dbc6a9dbe6699bb6a9ebe6d *9dbd709dc06a9ebe6698bb609abb689bbc659abc719cbc619bbd6099bd6599bd6d9bbb689bbb6b *9abb699cbc6c9abb699ebd6d9fbe6a9dbc649abb649bbb679bbc679abc6399bb6d9bbd629cbd65 *9ebe6399bd6299bc6a9bbc699cbb669cbd6298bc689bbd6599bd659bbd6496bc6498bc70a0bd6a *9cbd6d9cbd6e9abc669cbf6a9abd699dbe6d9bc0679abe669bbd5f9abe679bbd5f98bd6a9bbc65 *9abb6498bd6098bd639bbd6a9abe6d9dbe6899bd659dbd6697bb639bbc6b9fbd6da0bd6099bb67 *99bc6499bc699cbd6d9cbd659bbc619abb649abe699abe6699bc6e9abc6298bb699cbc6899bc60 *98bc639abe6699bd6297bb6d9abd669dbd6c9cbb6b9cbb6c9fbb6b9cbc6a9bbc659cbd6b9fbe6a *9ebe6599bb699cbd659cbb649abd639bbd6898bd699ec26a9fbd699dbc699cbc629bbb639bbd63 *99bb699cbe6b9ec0709ebd6d9fbd699ebc6b9cbd6a9ec073a0c16a9abd639bbc6c9fbd689dbd66 *9abc689cbe689cbe6a9dbe6498bc699cc06799bb6a9bbd6a9abb659bbb6f9bbe6a9ebe6097bb62 *98bc669cbf619cbc6ba0bf6c9cbd689dbe6c9cbf6c9cc16999bd6698bd749bbe6799be699fbe74 *a0c16da0bf6d9cbd6c9ec06ba0c16b9bbd73a0c05e9bbe649dc0699dbe6b9dbe6799bd719cbc6b *9bbd6c9cbe6a9fbf6c9fc0699dbe5f99bd71a0bf689abe6c9dbe72a0bf649dc0729fbf719dbe63 *9cbd69a2be6a9cbe6ea0bf729fbe6e9dc077a4c4659fbf75a2c16f9dbf699ebd76a0c1749dbd6c *9ebe74a0bd709dc1679dbf6da0bf75a2c0749fc06c9cbe6c9dbd6f9fc26ca0c26fa2c27ba5c38f *abc799b2c9a7b5c8a8b6c9aab9cbaebbccacbacaaabbcbadbbcbacbbcbb2c1cfb4c1ccb6c1ceb6 *c1d1b4c1d0b8c3d1bac4d2bac5d3bbc7d3bbc7d3bcc5d4bbc4cebac4d1bbc4d1bbc4d1bbc6d3b6 *c5d1bac6d4bac6d3bbc6d3b9c3ceb8c3cebbc6d1b7c3cfb9c6d3bac4d3bbc6d3bec6d5bdc6cfbb *c5cebdc6d2bdc7d3bcc6d3bdc7d6bcc7d4bdc7d4bcc6d0bec4cfbcc6d2bbc6d3bbc6d2bcc6d4bb *c5d3bfc7d3c1c8d7c1c8d6c2c8d6bfc8d3bec8d5c0c7d5c0c9d6bfc9d6c0c8d7c2cad6c2c8d1c1 *c8d6bec9d3bfc7d3bfc8d7bec8d6c1c8d5c0cad6c0c9d5bfc7d3c0c7d3bcc5d3bdc7d2bac7d4b6 *c4d0bac5d3b6c3d3b5c4d1b1beceaabacca4b6cc9fb6cb9cb4cb9ab0c99ab0c895afc78fadc690 *abc68aabc78babc68aa8c491abc68aadc687aac78aaac68aa8c286a7c388aac488aac48aabc68f *abc48eadc690afc791afc79cb1c99fb1caa6b9ccaabbceaab9ccafbbceadbccfb0bcceabbaccaa *b9cca3b9cda7bbcea1b6cca0b4cba0b6cca3b8ccaabccea3b7caa0b2c99db2c9a4b6cba5b9caaa *bacda1b7cca4b8cda7b6cba9b7caaab7cbaabac7bcc5c9c7d0d6cbd5dcccd8ddcddade6492b66b *97b86d91b6578ab05f8cb3578ab2578bb2588db55f91b65f8fb75a92b65d8db65a90b55c8eb652 *8bb4578db5508cb55a8bb5528cb55d90b9568eb55f90b66f91b96f95bb6c98ba7096b97196bb67 *95bb6792ba6192b5618eb5658fb5648cb26790b55b8eb56393b6588eb7598fb65089b25488b350 *88b34f87b2558ab44d8ab55087b44d87b54886b44c86b44b83ae4982b14e89b24f89b44a88b24f *88b44d87b64e85b25084b14e82b14f88b3488cb44d88b64d8ab54b86b44987b24d85b25187b14f *88b45088b44b88b44c88b74a86b54c86b34c86b24d87b15588b45588b44f86b14f8ab44f88b24e *89b54b89b44d8ab25087b14986b15388b44585b24a87b54981b44a89b74f8ab64e8ab64881b152 *89b34a85b24e85b44c85b15289b74b86b35489b65287b24e85b15288b4508bb74f8ab64b89b452 *8cb6538eb84f8bb54a87b25288b35289b54b86b4508db6528cb54f8ab6518bb74e85b3558bb554 *8bb5528bb64e8cb54d8ab44d88b34b86b6518cb9508bb7538eb6538cb5528db65592b74c8ab655 *8db75e90b95591bb528fb55c90b7538eb65891b9518eb9538db6508eba588ebb548dbb508cb55b *90b65d92b95591b9518eb74f8fb85992bc5b8eb85790b8548eb75d93ba5290b8508ab44e8eb754 *90bc5c94bc5891bb568db85a8fb65e92b95d93ba5b94bc5590b9558db65890b85892ba5a92ba5b *96bb5f96ba5d96bc5c91b95c95b86092b8558fbb6493bb6196bb5f95b86092ba5e91b95b92bb53 *92b96995b95d97bd5d95bb5f93bb5c91ba6c99bd6197bc6598bc6496bd5b94bc5895bb629abc5f *93b95d94b86697bb5a94bb5e94ba5c95b95c95ba5c96ba5e97bc5693ba5f94ba5e91ba6296bb5c *95bb5d97bb6798bb6099bb5e97bc6498be6498bd6896bd6898bb5f95ba5b93bb6298bf6497bc5e *96bb6398bc6296bc6698bd5e96bd6597bc5e91b95d92bb6796bb659abe6699bb6797bc6597bb63 *96bc5c96bc5d91bd6698bd6098bb6198bc6297bb6898bc6296bc6097bd6395bc5d93bb6698bd61 *98bc609abb6099bd6698bb6498bc6197bc5c92b96598bc6e9dbf6499bc6d9fbe6599bc6599bd6b *9cbf729dc16497bb6099bd699bc0609bbd609bbe6898bf6097bb679abb689abd6b9fbd6a9bbd65 *9cbd649bbc6198be6799bd699abd6799bc669cbf6699bd6d9bbd6a9fbf70a0c06d9cbf729fc166 *99be6a9ebd6a9abd679cbf639bc0659cc06a9bbf6b9bbd6b98bd709cbe699abe679abd659abf63 *9abf699ebf649ac0639abd6a9bc16b9bbe6599bd659bc16a9abe649abf659cc06497bb6498bd62 *95bd6699bc659abd649bbd639abe6399be6a9cc06498bb639abb699abe6b9bbd6899bd6899bd66 *9cbd679bbd6399bd689cbd679abc739cbd6999bc6498bd6298bb6a9abe639abd659abd6b99bc67 *99be699abd6096bd6197bc6299bd6098bd659dc0689bbd6999bc6a98bb6699bc649abd6299be69 *9abd699abd6099bd6c9cbd649bbd6697bb699ebe6599bd609cbf6599be689dc0659dbd6f9ebe6b *9cbc6c9dbf6f9ec0649dbf699dc16b9dc06a9fc1639ec0679ec16f9bbe729bbd6fa0c1659dbf68 *9cc1689ec2749fc36d9ec06d9ebd6e9abd6f9cbf659dbd6697bd689abe6699bf679bc1689bbb67 *9abc629cbe6d9fbd709fc0649abd699fc26c9ec2699fc270a0be6998bd699bbe6699c1649abf65 *99be659cbf6a9ac16b9cbf6e9ec16ca1c26d9ec1649bbf669cbd689dc0689fc16da0c06b9dbe6c *a0bf649cbe709bbf699bbe6e9ac16698bd659bc16299c0689cc075a1c2719dc16b9bbd709ec06c *a1c2699fc16d9dc16da3c46a9bbf6ca3c075a1c170a1c16fa1c16fa3c16ca1be639bc1659ac26d *9ebf719fc16ba0c0669dbe6f9fbe6da1c473a0c3669cc16ca0c374a4c076a0c16a9dbf80a4c484 *a8c68eadc89eb4cba7b7cda9b7cca9b7c9adbbcbaebcceadbbcbaebcd0aebdcdb3bed2b5c0d1b6 *c1d1b7c2d1b9c3d2bbc4d1bac5d5bac6d4bbc4d3bcc6d3bbc4d4bcc6d4bbc5d1bbc6d0bdc6d3bb *c5d3bbc7d4b7c6d3bac5d3bdc6d5bdc6d3bcc4d1bbc6d3bbc5d3bbc4d4bbc5d4bcc6d6bbc7d5bd *c6d4bec6d3bcc4d3bdc6d5bcc6d5bbc6d4bdc6d4bec6d5bdc7d4bcc7d5bec7d5bfc7d6bec8d6bd *c7d5bdc7d6bfc7d5c0c8d8c0cad7c0c9d6c0c9d7c0cad6c2c9d5c2cbd7c0c9d6c0c9d7c1cbd8bf *c9d7c1c9d7c1cad8c1c8d7c1c9dabec9d7c1c7d6bdc8d6bfc7d7bdc9d6c2c9d8bdc9d4bdc8d8bb *c4d3b5c2d2b5c2d2b6c0d1b5c1d1b0c0d5aabbcea7b6cda8b6cda1b5cca1b4cc9cb2cb9cb1c99b *aeca93adc991adc893acc997afca98aec793aeca8dabc78aabc686a9c684aac58bacc685aac790 *acc79aacc995adca96aec79db0caa0b3cba4b7cbaabccdb0bdceaebbceadbacfb1bdd1afbecfad *bdceaabcd1a3b9cea4b9cda3b2cca0b4cba1b3cba8b8cdaabaceaabdcea2bbcda1b8cca0b1cb9e *b4cba4b6cca5b5cc9fb2caa2b3caa3b5ccaab9cda8b9c7bec7cdc8d0d7ccd6dbcfdaddcfd8dd58 *8eb0568eb1568bb1508bb35a8db05a8caf5c8cb1578bb25c8db35d8eb45e8eb65c89b45c8eb856 *8cb6588cb3548eb66093b8548db6598eb85e90b76590b75b91b56a9abb719bb9739db8739cb96e *95b67298b56f98b66892b76996b76a92b66591b56a94b66592b6618eb5588bb5608cb54f8bb34e *88b44b87b34e87b14484b14986b24a82b04e88b34c89b1518bb44586b14788b24886ae4d85ae4c *82ae4683b04787af4b86b14d87b34386b24787b24886b14c83b1508ab24e8ab14d8ab34985b146 *86b34d89b54d89b24083b14a84ae4c87b04e88af4985b14e88b44582b24b86b44985b14d86af49 *88b24587b34889b44a8bb64a83af528ab44f88b24582b0508eb54b86b14f88b34884b14f87b550 *88b44484b1478bb1478ab24c8ab14a87b15287b24d87b34f8bb44c8ab64b86b5538bb64887b349 *85b25087b35489b24785b14e8ab34d8ab54d8ab34a88b15693b74e88b54f88b4588fb85288b34f *88b34c8bb64f8cb54b88b2518cb3528ab25388b5518cb6548ab64a8ab65190b75392b34991b54c *8eb85d90b7508cb44b8db75493b94e8eb74d8ab6518db55191b7588db74c88b5468ab64d8eb64f *89b5508fb65390b85390b65290b95a91b85b91b9578fb64e90b6538eb7508db85494b96296b958 *93b75992b85c93ba5591b85893ba5692bb5592b85c93b95194b65391b65891b75c90b85793ba56 *91b85490b85192b95291b85292b95f92b95b91b85892ba4d8eb65995bb5694ba5392bb5792b95a *92b85d91b75b91b75991ba5792bb5d91b95991b85e93b76097ba6097ba5a92ba6496bb578fb95d *95ba5b97bb5e97ba5b99bc5b96b96295ba6296ba6196b95d98bb5c92b95892ba5c94bb4d91b85c *96b96097ba6697bb5c92bb5d92ba5f96b76298ba5595bb5c98ba5d98bc5393bb6097bc6499bb5c *93ba6198bd5e97bc5f95bc5996bd5693ba6095bb6493b85291b85f96ba6096ba6599bd5d98bb61 *99bb6c9cbe6797bb6597bb5c97ba5b95bc5d97ba5a96bb5c97ba5e99bb629abd5d98bb6398ba65 *99bd5d97bc6398bc679bbd6598bb6199ba6599bb699dbb6e9abd6699bb6298bd619abc6098bb62 *99ba6b9ebc6599bd6598bd6c9abe6399bd5897bb619bbc6c9abc5f99bc649ebe699dbd6599bf64 *97bd6399bd6096bc5c97bc609bbc6da0bd659bbd6d99bd679bbc669bbc649cbc679abd6199bc5f *9abd659ebe679ebd669cbe689cbd649abd619abe6298bc649cbd649cbe659cbd699bbd669abd63 *99bc609abc629abd669abd6399bd629bbb619abc6199bb659abb6999bc619bbe609bbe679cbc5f *99bd6399bd6499bb5e98bc5d98bc6197bc6399bd6099bb6698bd6399bc6399bc5f99bb6e9abd66 *98bb669cbc659abc6598bc669ebf669abd6a9cbf679abb649bbb629abc6099bd6199bc679cbc68 *9abe6599bd6198bc6398bb6398bd689abb5f96bc689dbd6b9dbd5e98bd6499bc659bbd5f99ba66 *9fbd6fa0bd6999bc6c9ebd609abd649bbd619abd629abd609abd6299bc5996bd5e99bd629bbd62 *9bbd65a0be67a0bf6fa0bf6c9fbd6e9cc16c9dbf6a9dbe679cbd6f9fc0669ec26a9ebd669ebc65 *9dbc689cbd689dbd6998bc669abe629abe5b9bbf659abe609cbe639dbd6899bc6699bd6c9cbd64 *9cc1669abf6c9ac1689fbe67a1be6599bb5f97bd6a9dbf649bbd629bc15e97bd649cbe629ec169 *9bbd6498bd689bbe6ca1c25f99bf699bc1649ebe6798bc659bbc6da1bd6e9fc06c9dbd6699bd61 *9abd629abd659ec0659ebf609bba669dbd6499bd6396bd6b9bbd6e9ec073a4c36b9ec1639fbd67 *a1bf649fbf659abd689bbb6d9dc373a1bf729ec16da2c16aa2be6ca4c16da2bf79a2c26a9cbf64 *99be5c99be6ea1c369a1be6ca3c1689fbf6c9fbe6b9cbe689abf6d9dc06fa1c073a1c26d9fc27c *a5c38cabc397afc7a4b3c9a5b6caa9b9ccaab9cbaebfd0a9bcceaebecdb1bdccb0bdcdb1beccb3 *c3cfb5c1d0b5c4d4b5c5d3bac5d1b8c6d2b9c5d3bdc7d3bdc6d3bdc6d3b9c6d1b9c6d3bdc6d3bc *c6d3bbc7d2bcc7d4bdc7d3bdc6d2bac3d3bbc3d3bbc5d3bbc6d3bbc7d3b8c6d3bcc7d1bbc6d1bb *c6d3b9c6d3bbc7d2bbc6d4bcc7d4bdc8d4bdc6d2bdc7d3bdc7d3bcc6d4bcc6d3bcc6d4bec7d5bd *c7d5bfc9d5bfc9d6c0c7d4c1c8d7c1c9d6c1c9d5c0c9d5becad6bfcad8c1cad6c1c9d6c3c8d5c1 *c8d6c1c9d6c0c9d8c3cad8c2cbdac2ccd9c2cad6bdc6d4bfc7d5bfc7d3bdc8d3bfc6d5bdc7d4bb *c6d2bbc6d2b6c3d1b6c2d0b9c1d1b6c1d0b4c3d3abbdceacbbcdabbbcea6b9cca5bacca4b6cba1 *b5cb9db1c899b1c999b1ca9cb1ca97afc999b1c995afc990abc688aac57ca6c483a9c585aac58a *abc387adc696b0c993aec997afc79db3caa0b6cdaabbceadbdceb0c0d1b1bfceb1bdceb3c1d1b2 *bfcfb0becfaabacdaabbcda3b8cca2b5cea4b6c9a5b9cba7bbcda4b7cca7bacca4b9cda0b6cb9d *b5ca9eb3c9a0b5caa1b7cb9db2ca9db0c9a0b5cba2b6cbabb7c3bec7cbc7d2d7cbd6dbced9decf *dade6890b15e8cae608cb15d8cb05c8db3578cb15d8db35d89b1668fb65d8bae628eb26893b65f *92b65a90b75f8db55b8eb75d8eb76092b66390b75c8cb15f91b55f93b6719aba759bba759bb87d *9db97a99b97d9bb87197b7779cba7196b76f98b96e98b76590b66992b76693b76f96b75e8eb555 *8bb35587b34a84b14e89b25188b34f87b35688b34d8ab14e85b25088b24f88b44a80af4e85b051 *85af4981b04e83b1598ab35084b14781b14883b14c82b14c88b14f87b25089b3558ab1518ab24c *86b24a81b14985b04885b04784b14b86b1508ab25289b24f85af5085b14583b14c83b24c87b24c *86b14886b34f89b35286b14b82b14f86b14d81b04985b04b85b24984b44b86b34e89b25089b54a *85b24c84b54887b24081ae5689b24782b14b86b14d89b3558cb34783b14886b44b88b64e8ab750 *86b54e88b3508ab44e87b14a86b3508ab44b87b34e88b64e87b45087b34987b44e88b34c88b353 *8ab3588cb54e86b34e89b55089b55089b65689b5538fb4558eb4528bb75189b34f89b4528db954 *8eb84f8bb54c88b75c93b65990b6588db6568db5528db64d88b54f88b64d8db85891b54f8cb14d *8db3588db6588ab6598ab35089b5578fb7508dba5c92b7588fb75b8eb7548cb65d8eb55a8cb558 *8eb8518db7508eba5590b95491b8598eb66091b75c92b75891b95891ba4c89b64f8bb85491b757 *8fb65991b6528fb54d88b64e89b6578db65891ba578db65b8eb85a92b8508db6588db66092bb5c *95bb528eb95f93b8588eb76197b95c91b85a93bb598fb85d93bb6195bc6495bb5b90ba6499bd5a *95ba5c8db75c8eb75c91b96095bb598fb75d92ba588fb75f95ba6096b96395b95c8fb85f91ba59 *90ba5f94bc5c94ba5b95ba5c94b85c95b86097ba5f97bb5e96bb6597bb5d96bb5792bc6698bc5f *98ba6198ba6799bb5f98bb5e92b86798bd6297bb6599bd5d95ba5d93bb6696bc6095bb6598bc66 *98bb5f95bc6597bc6098bb6196bb6296bb6597bc6c97bc6094b85c94ba5e97bb5b97bc6099bb66 *99bb6196bb6799ba5a94b95f96bc6097bb6898bd6498bc6a9cc0669abd6395ba6a98bc6499bd68 *9abc6099bd609abd5d97bc6698bc739bbb6799ba6599ba6b99bb689abd669abf659bbc609abd6d *98bc6c9cbc6598ba6496bb6598bb6196bc659abf6296bd6498bc699bbd6999bb6a9abc6b9abd65 *98bb6697bd6c9abe6898bd5c96bc689bbd5d97bc6f9cbe6999bc6499bc6398bd649abc5c96bb62 *97bc6299bb6197bd6496bd679bbd6498bd6199bd699fbe6499bd6199bb6a97bd6195bb6499bc65 *99bb659bbb6098bd669abc5d97bc6397bb699abd6096bb6498bb6898bc5f99bd659abc639bbe65 *99bc6d9bbd6a9bbd6798bc6f97bc6898bc6498bc6898bd689abd6496bc6297bb6d9abc6697ba6d *9abd6498bb5d97bb5b96bb6597bd669abd719bbb6497bb6b98bb6a99bc6499ba6d9abd6a9abc5d *97bc689abe6d9bbd6c9bbd6398bc6499bc659abd6699bd6897bd699abb6a9ebf659abd6999bb66 *9cbe6a9abe6d9cbc699abb6f9ebe6399bd699abd6c9bbf699bbe6499be689cbd6599bd6b9bbd70 *9dbf679bbd6299bd5f98bd6998be699abd6b9dc0639abd659cbc689bbe6a9dbf6fa0be709ebf60 *98bb659abd5c96bd6799bf729cc071a1bd6799bd6299bd6c9ebf6b9bbd6e99bd6699bd689cbe64 *98bd659ac16c9bbf6c9cbf6aa0c1729dbf5e96bc6799bd6599bd6199bd659cbd679ebf669abc6e *9dbc6a9bbd6698bd6699be689ac0669dbf679dc06a9cc06a9cbe739fbf669ebd6b9ec2709dc166 *9fc26b9dc0689abf659cc16a9cbe6ba0c06b9fbe729fc26d9cc16d9cc16c9fbe6e9ec06fa2bf64 *9ebd669cbd6b99bd74a0bf709fbe6c9bbf6c9bbf689bc268a0bf679bbc6b9cc06d9abd6f9bbe71 *a0c277a2c282a6c49ab1c7a3b5caa7b8caa9b7caaab9cbabbacbafbbcdaebdceb1c0d0b1becfb3 *c0ceb3c2ceb5c1cdb9c1d1bac3d2bbc4d3bbc7d3bbc6d4bcc6d3bbc6d2bcc4d1b9c4d3bdc6d2ba *c6d2bdc6d3bcc7d5bec7d5bec7d5bfc7d3bec7d2bdc5d2bdc7d1bdc4cebdc6d3bdc5d4bdc6d4bb *c6d3bdc6d3bdc4d1bbc3d1bcc5cfbdc6d3bcc6d4bdc6d6bbc6d4bbc6d2bbc4d3bec6d3bfc7d5c1 *c7d4c0c8d5c2c9d7c1c9d5c4cad6c5cbd7c4cad5c3c9d6c1c8d6c0c8d6c0c9d6c1c9d7c1c9d8c3 *cad7c4cad6c3c9d7c4c9d6c3c9d7c1c9d7c3c9d8bfc9d6bfc7d6bfc8d6bec7d4c1c9d5bfc8d6bb *c6d3bdc6d3bbc4d3bcc4d3b8c4d3bac4cfbac4d1bac2d1b5bdd0aebacdaebacdacbacea8bacea3 *b7cea4b6cba2b6cba1b6c9a2b5cc9eb2cca1b3ca97b1cb95afca88a9c68eabc78aa9c390aac58c *a9c48ba9c38cabc695adc897b0ca9aafc9a5b3ccaeb8cbaebbcdaabdceb1c1d0b3c2d1b4c2d1b4 *c2d3bbc2d2b4c0ceb3beceb1bdccabbdcda8b7ccadbbcca7bbcea4b7cca1b1cba8b7cba5b6cca7 *b8caa0b5cb9db2ca9fb3cba3b7cd9db2cca0b2ca9eb0c9a5b5caaab6c2bfc7cdc8d1d6ccd5ddce *d7ded0d9dd5c8cb0588fb05e8fb6558ab1648fb55b8eb15b8db36791b75d8db65d91b66a99b66d *92b66c94b75e93b75d8eb55f91b66592b65892b7648db55e8fb66b91b66892b67594b66e9bbc7c *a0bc7b9ebb7b9fbd809ebb7e9ebb859fbc819ebe7a9cb87c98b87598ba5f90b66995b8618cb461 *8eb2618cb35387b14c83b14983b04c86b44b84b15484b25389b4528ab2518ab4508ab1558bb24a *87af4b87b14482af4683b24e85b34c84b14782b15387b14f87b14f89b25287b15084b35086b14f *86b1548ab45188b2588ab34886b24986b14d88b14f86b24d85b04f88b44b89b44d86b34f86b150 *8ab24e89b35189b1528cb45188b25289b54985b24a85b04b88b24f88b34c87b24986b14d85b14c *87b24c88b34e87b64c89b14e8cb3518ab34f88b34e8cb44787b54b84b24684b54886b24a88b148 *8ab1538ab4508db35288b24e86b34b85b3558ab6508bb6528ab44e86b34e8ab14d89b1508bb34c *87b44d87b55188b4528db54e88b2568eb54e89b4548eb5528db7558bb64e8ab64d8bb54d89b34f *8cb5528eb55b8fb5548fb8558db8588bb6528ab85e90b6518db6578eb6538cb5508db5578cb658 *8eb6538eb85892bb5a91b65890b55c91b7578eb85c91b85890b76195b95791ba5891ba508bb559 *90b75d91b9598fb5558cb66192ba5590b8518fb8588db65d8fb65b92b85791b6538db55690b95a *94ba5491b75b92b85691b86096b85993b85c90b9598eb6578db45390b75c93ba5991bb5c92ba5f *94bb5892b85c91b85f96b95893b75e95bb5c92bb6692bb6696ba6191b85890b86095b85992b960 *92bb6292bc5f94bc5c8fb86394b95f97ba6397ba5c96b95a94b95991ba5c93bb5c93b96396bb62 *97bb6498ba5f96ba5e94ba5b94bb5a94bb5a94bb6496bb699abb6a9bbb689cbc6298bc6192ba67 *97bb6495bb5f98bb6099be6099bd6299ba6a9bbc5d95bb6897bb6295bb619abc6598b96098bb62 *97bd6297bb6397bb5f96bc5f93b86395bb6097bc6397bc6195bc6697bb6097ba6598bc6195b960 *97bb649abc5e97bc6399ba6297bb649aba699bbb6299bb6b9bbc6798bc6c9dbf659bbd659bbd6d *9dbd6398bb6a9cbd6499bd699bbd689dbe6c9cbe6c9cbe669cbd6a9cbd6599bb6497ba6a9ebd68 *99bd6797bd6599bc699cbd6d9abd6f9abb6d9bbb6d9cbd5f99bc6098bd669abd6198bd619abd67 *9abd669abb729bbd689abc689cbd679bbd6899be6498be699abf6c9dbd689dbd649cbc669bbe5f *99bd679abd6098bd669cbf6c9bbf6a9cbc6b9bbd699bbd689abd669abd6497bd6599be6497bb5f *97bb699ebd6199bd6199bb6596bb6998bd5994b85a95bb6499bd689abd6699bb6b9cbb6699bb64 *9abd6899be719bbd6598bb689bbd6799bb679dbd6b9cbd6a9abd689cbd699dbd6699bc6197bb65 *99bd6a98bd669bbe6d9cbd6a9cbd6398bb6e9ebe6698bb6298bc649abc6d9bbd6498bb6396b966 *97bb6098bc699bbd6a9bbe649abe649abe6c9abf6e9dbe6f9ebc6799bb6c9ebd649bbc70a0bf67 *9abd6e9cc05f99bd689fbe6aa1bd5f98ba6b9bbc709fc06b9cc16999bd6697bd699cbe699ebf69 *9bbb6399be679bbe679bbd6a9abd6e9cbe699abe679cc16f9bbb6699bb689abe699dbe6b9fbe69 *9ebd71a0c06799bd6d9ec1659abd6d9cbe6a9abd6e9abe739ebe679bbf659cc1679cc26c9bc16b *9dbe729cbe699cbe6699bd659cbe699cc16d9ec1659dc1659ac06199bc6a9bbd6699bd5e99bd67 *9abd6d9dc06d9cbe6798bd6c9abd6a9bbd6a9abd6d9cbe679fc1729fc16b9fc1659dc16d9dc16c *9cbd6fa0c0659ebf6ba1bf6a9dc1659ac167a0c375a1c1729ec16ca1c0709fbf6ea1be699dbe67 *9cc06ea1c1729dc36c9fc276a0c1759cbd6e9bbd74a1c3739fc172a0c1739ec072a0c073a1c06d *9dc0739ebf78a3c384a7c595b1c8a3b6cba6b8cda7b8cdaabaccaebccbaebccdb1bdcdb0becdb1 *bfd0b1bfcfb6c0d0b5c2d0bbc5d4bbc5d2bdc7d3bdc7d3bdc7d4bcc7d3bdc6d1bbc7d4bcc7d6bd *c7d4bdc7d3bdc8d3bcc8d3bdc7d2bdc7d4bdc7d3bdc7d3bdc7d5bec7d2bfc7d3bfc7d4bdc6d3bd *c6d3bdc7d5bbc6d5bdc6d5bdc7d5bdc6d1c0c7d3bdc7d3bdc7d4bec7d5bec7d4bfc8d6c0c7d6c1 *c9d8c2c9d6c4cad6c3cad7c4cad6c3cad7c2cad9c4cad9c4cad7c2cad6c2cad6c1c9d5c2cad4c3 *cbd5c3cad8c3c9d8c2c9d8c5cbd8c6ccd8c6cdd8c6cbd8bec9d8bec6d6bdc7d6bec6d5bfc7d6bf *c9d6bdc7d4bfc7d6c0c9d2bdc6d5bcc6d3bdc6d2bac3d4bdc7d6bcc5d5b7c2d0b5becdafbccda7 *bacda5b6cca4b6cba7b5cba7b9cba6b9cca2b7cca1b7cc9eb2cb90adc88aaac589aac68caac686 *a9c48fabc69aaec698b0c795aeca9ab1c99daec7a6b9ccaabbceabbaceb0bfcfb2beceb9c1d1b6 *c1d2b5c4d3b6c2d1b5c1d1b3c3d2b0bfd1b1bfccb3c0cfb2becea9b9cea8b7cca9b7cca5b9cca4 *b6cca5b5cdaabacda4bacca2b6cc9cb2cb9cb1c89cb0cba0b3caa5b7cba8b7c4c0c9cdcad4d8cc *d7ddced8ddcfd9df5a8fb15e91b15389af568ab0588bb0548db1598eb16092b66692b76994b56d *93b56992b66e93b65f92b65d91b76593b55c8db46491b36794b76f95b66c93b67098b7769db878 *a0ba7ea2be7fa0be839cba859eba859ebb81a2bb859fba81a0bc7a9fba6e99b66f97b66996b66d *94b55c8eb4578eb4518db54987b04f88b14c87b25387b25185b44b85b14f8ab44685b14a88b149 *85b14686b14585b14c85b04984b14585b04a85b14b87b14b85af4a89b34a88b04582b34988b44b *85b04c84b25188b35086b14b86b24888b44c88b44983b14c86b04882ae4281b14987b24f89b24b *84b14c87b24e87b44983b04784b24a83b04684b04c84af4a84b14387b04f8bb34e8ab44c86b248 *84b24682b04386b14887b24a86b14c8ab34887b44f89b14e86b34c89b54782b04b88b14584b04e *89b34e8ab34d8eb94f8cb54d85b34f88b45089b54d8ab24485b14d8db24888b44988b44e87b14f *8ab14d89b14e87b24e88b4528cb54e8cb54d8ab5528bb65389b45389b34d8bb74f8bb34f8db64f *8eb64e8cb84a8bbb528ab4528bb35d93ba4e8ab64b8db44c8cb6518eb94e8db6518cb7538ab653 *89b5508bb5438bb34d8cb85795bb4f8db6598fb55b91b9588db55492b64f8eb6518cb4518eb656 *91b8518db85a95b95390b85390b8558fb8518fb84a8eb6558eb75a91b66395bb5692b9508db55b *91b84f8db74f8db7528fb65791b8568fb75790b85793b85c95ba5f93b65891b7518eb65d91b95c *92b95391bb5a95ba5e95b95992ba5992b85b91ba5f95ba6095b75893b9518fb66294b85d93b959 *92ba5696b95c95b95693ba5a94b95993b85791b75f97bd5e96ba5d92b85e95ba5b94b85391b65d *95ba5494bb5c92bc6796bb6097bb6097bb5694b96399bb6096bb5f97bc609abd5f99bb5894ba66 *97bb6296bb6397ba5c97ba5c98bd5e98bb6299bc6297bc6196ba5d97b96096bb5b95bb6295ba5f *96bb5d96ba5f97ba5993bb629abc6097ba5a97b95e98bc5c98bb6098bb6298bb5d96bb699abc68 *99bb679abb6599ba5e99bb5f98bb5f9abb669abb609abd6599bd6b9cbd6a9ab9659abb6399bc66 *99bc6098bb6499bc669abc679cbc5f99bc5d97ba679bbd689bbd669cbc669dbd669dbe6097bd6c *9ebe5f98bb649abc6e9ebd6499bb6498bc6399bd6d9dbd669abe6399bc6199bc689abd6298bb65 *9ebd609bbd5b9abd5d99bd6c9ec0699fbd699bbc5e97bd6299bc6298bc5e98bd6199bc6099bc69 *9ebd629abd6598bd6298bb6399bb5a96bd6096bb6698bc6697be639cbc709dbf6297bd5e96bb5d *96ba6297bc5d96bb5f99bc6299bd679abb619abb6699bd5f98bd5d98bd6099bc6294bb5f97bb69 *9bbc5f9bbb649bbe6899bd6098bc5f96ba6699bc6299bc6199bd619bbd639cbd6198bb679abd64 *98be6599bc6095bb6796ba6a9dbc659bbc639abd659abd6199bd5d94bb669bbb659bbd6698bb67 *9ebd689cbd6a9fbe689abd699abe5f98bc6797bb6298bb649bbb649abd669dbd6a9dbf679bbe66 *9abd6599bd659abd699ebd659bbd659bbd669bbc669bbd6a9abd679bbf649ebe6a9cbe649dbd67 *9cbd699bbd659ec06098bd659abd6899bb659abd639bbe649bbf6a9cbd699ebd6fa1bf619cbe62 *9bbd699fbf679cbd689abc679cbd679ebf5d9bbd659dbe699dc16699bb689abc6099bd6099be6a *9bbe6a9cbe6ca0c1689fc2699cbd689abe659abf5e97ba6198bb6a9dc15c9abc649bbe699dbe66 *98bc6a9bbd649bbd689bbf689bbd679bbd669bbd699fc0709dc26799be6a9bc1679bbd649abd68 *9abe679dc0669fc16f9dc0689dbd689cbb649bbd629bbd679fbf68a1c0669dc1709fc26f9dc273 *a1bf6c9ebe6c9dbe6c9dbe73a1bf6ba3c36a9fc26c9fbf699fc2709fc1729fbe699abd6599be6e *a2c16aa0c2659dc273a2c282a6c392acc69db4c9a5b9cba7b9cba9bcccadbdcdafbdceb0bdd0b0 *bccdaebcccaec1cfafbfd1b3c3d2b6c3d4b9c3d2bbc6d4bdc7d6bec8d5bdc7d3bbc7d4bbc6d3ba *c7d1bac7d4bdc7d3bdc7d3bcc7d3bec7d5bdc8d3bbc7d5bbc7d3bcc8d3bdc7d5c1c8d4bdc9d8bd *c7d4bfc8d3bbc6d4bdc7d4bcc6d3bbc5d3bcc5d3bdc6d5bdc8d6bdc7d5bfc7d4bdc8d3bfc8d4bd *c8d3c1cad5c1cad7c3cad8c5cbd8c4cbd5c5ccd8c4ccd8c4ccd6c4cbd7c2cbd7c1cad6c1cad8c3 *cbd8c2c9d4c3c9d6c2cbd6c3cbd7c3cbd8c1cad8c3cbd9c1cad7bdc9d7bfc9d5bcc8d3bdc7d4bf *c8d2bdc9d5c1c9d5bfc8d6bfc9d6bfc8d5bdc8d3bdc8d5bbc7d5bac8d7bbc6d7b8c3d4b6c1d2b2 *c0d1b0bfcfaebecfaabbcdabb9ccabbbcea9bbcea9bbcea6bacca3b6cb9fb6cb99b1c78faec88e *acc78aaac691adc993b0ca9db3cb97afc99eb6cca4b6cea4b6cca8bacbadbbcdafbdd1b3c3d1b6 *c3d4b8c4d3b6c5d2b6c4d3b5c3d3b1c0cfafbfcfaebdceb2c1ceb2c1d1aebfcfacbdcfa8bacca8 *b9cba9b6cbaab8cca9b9cc9eb5cca1b5cc9fb4ca9bb1c89cb1caa3b1caa4b5cbaabac3bfcacec8 *d3d9cdd8ddcfdbddcfd9dd608dae5f8cac5d8eaf558db0528ab05887b15d8db46a98b96993b96f *97b56f95b67095b9709aba618eb47297b67296b76f93b77399b97899b57b99b87898b67098ba7d *9fb9819fba82a0bb86a2be86a3bd88a1ba869cb985a1b9849cbb819fbc7c99bb7a9abb7295b869 *93b66b93b66491b45a8db44e86b04d85b04884b14f89b64a87b4508ab3507faf5084ae5089af45 *85b14c85b14e83b14884ae4984b15288b44b85b15785af4d81ad4481af4984b1518ab54380b253 *87b24f87b15487b3477dae4f85b14b86b24f86b34b86b54a83b15287b35285b05286b14f82b048 *83b04886b24684b14a84b34e87b24982b14b81ae4c80af4382ae4a82af4e88b44884b34c86b14f *86b34780b04d82b05083b14681b04784b1568cb64985b14c86b14f85b04d85b25084af538ab44e *89b54382b24b86b55389b24782b34885b14e85b04a83b04882ae4784b04c87b14683b14c85b24a *85b44d88b25288b35387b24f84b25088b44f8bb5528ab25089b5538bb74f88b35689b44c85b34b *87b14f88b34d85b3558ab34a86b04b87b1558cb5528db54f8cb5528ab5548db3508ab35189b35b *8eb8578bb55788b5558db45489b35b8eb65b8cb7528db6558fb7548cb65a8db6528cb6558ab64e *89b6548cb6558db6538bb6538ab6528cb8588db7588eb5548bb65d91b75b8db75289b64e8ab650 *8ab45e92b9528eb5578db44f8db65e90b7578fba568cb55e91b9578db85391b65b93b65c92bb58 *90b8568cb65a8eb6508ab66392b95a8fb95890b96196bb5f93ba6b97bb5c93b85b8eb85c90b869 *94ba5a92ba5d95b86296bb5d90bb6293ba5e8cb65f91b85f93ba5d92b95b90b95791b76195ba61 *95ba5b91b75b91b76393b75c93b95c94b96298b96798bb5b96b96293ba5f91ba5f95bb6298bb60 *96bb5f96bd6196be6493bd5d95ba5e97bc5c92b96598bb5f96ba5893bb5c92b85e95bc5b93ba6a *93ba6992b96094ba6899bb6097bb6095bc6195b96197bb5c92b95f95b96596bb6898b96797bc66 *97bc6697bb6898bb6396bc6297bb6597bb6295b96297bb6295ba6a95bb6797bb6a9bbd6999bb67 *96bc6a99bb739bbb6f98bc6398bb6a9bbb699fbd709cbd6c9cbe6899bc5f95bb6397bc6498bc65 *97bb699abd6a9abe6897bd6797bd6793ba6d98ba6695bb6894ba5d93b8689bbd6297bb6396bb65 *97ba6396bb6496bb6596ba6396bc5f97bb699abf6097bc6599bd6a9dbd6699bd6998bc6a9abb60 *96bb659abd5c94bb6898bc6b98bc6897bb6593bb6696ba6696bb6699bd5e99bb659bbc5e96bc63 *92bc5d93bb6b9abd6c98b96396bb5d94ba5f98bb6398bd5d94bc6796bb6195ba6597bb6895bb5d *95bb6397bd679abb6b98be6598bc6398bb6998ba6797ba6398bb6898bc6296bb6496ba6598bc67 *99bd6497bd6597bb6996bb6796bb6597bb6d9abc6699bd6498bf6899bd6997bc6d9cbd6a97bb62 *96bb669bbd6a9abb6998bc6697bc6a99bd6698bc6898bb6a98bb659cbc649cbd6d9dbd6298bd66 *9bbe6898bc6799bb6299bc5d95bb6496bc6c9bbd6098bb6397bd6498be6a98ba6996bb6b9abc67 *9abb689cbb6699bb6399bc659abe6a9dc0739dbd6d98bb6698bd6899bd6399bd649ebf689ec06d *9fc2669dc06a99bd6a9abb6496bb6a9abb6496bb6998be6498bb6796bd6698bd6c99bd6b98bc62 *97bc6493bb6797bb6a99bd699cc16699bf609abd639bc06699bb6a9abd6599be6396bb6597bc66 *99bd699bbc6c9cbd649abc6396bd6196bd6c9bbe6a9bbd6399bd669abd6c9cc16e9fbe6b99ba6b *9bbc6f9cc16b99c06a9abe6399be679dbf6a9fc1739fbe699abf689bbf6d9cbe73a0bd739dbe6c *9cbe6a9dbe6e9cbe6fa0c16a9dc0709cbf6a9bbe6e99bd6d9dc16d9fbf6d9fbf74a0c16a9bc06c *9cbf649bbf699ec16b9dc0729fbf7ea4c38da9c598b1c7a3b5caa9b9cbadbaccaebdcdb1bfcead *bbcdacbccea9bbceacbbceb1bbccb3becdb6c2d2b9c3d2bbc4d3bdc6d3bdc7d3bac7d1bcc6d3bd *c6d4bbc5d2bdc5d1bdc6d3bcc6d3bdc6d3bec7d5bdc7d4bdc7d3bec5d3bdc6d3bcc6d3bdc5d4bf *c6d3c1c7d4bfc8d3bdc7d5bec6d4bec7d3bec6d3bcc6d2bdc6d3bdc6d4bdc6d4bec6d3c0c7d4c0 *c7d5bfc8d5c1c8d5c5c9d5c5cad6c6cbd7c7ced6c3cbd6c6ccd9c4cbd8c3cad8c2c7d4c2c9d5c3 *c9d6c1c9d6c2c9d7c3cbd6c3cad7c3cad7c3cbd7c3c9d6c3c9d4c1c8d7bec9d6bfc7d3bfc9d6c1 *c8d5c1c7d3c1c6d5c1c7d5bfc7d4bec7d6bec8d6bec6d5c1c8d6bdc6d4bdc7d6bdc6d5bdc3d2b8 *c1d1b6c3d1b5c0d1b2bfd1b2bdd0b4bcceb2bdceafbcceaebdceaebacdaab7cda5b6cc9eb3ca9d *b2ca99aec796adc69aaec79cb1c999aec897aeca9db4cba3b4caa9b9cbb1bdcdb1bdcdb4c0ceb5 *c1d0b6c1d2bac1d1bbc5d3bac3d0bac6d3b3bfcfb6bdceb6bdceb4c0cfb5c1cfb2bfd1acbecfb0 *bdcea7b8cca9b8cbaab7cbaab9ccaab6caaab7cba7b8cca5b4cba8b5cca8b7cbacb8cbacb4bac3 *c9cdcad1d7cdd7dccfd9dccfd9de5e8fb45a90b3508bb15992b15d8eae668db16e91b26995b264 *93b45e92b66f99b87398b7769bb77d99b5769bb7789db97599b67b9bbb7ba1bb7ca2bc7c9eb87f *9fb9829fba87a2bb80a0bb86a2bb89a3be85a1bb88a0bc88a4bc89a2ba87a1ba7b9fb7789cba79 *9bba6f96b76f99b86494b7568cb25687af5188af4f86b24a85b14885b34783b04e86b34d87b34d *89b04884ae4881ae5086b24c86b24585b14f85b14887b3538bb25088b04e88b25387b14786ae4c *87b45084b05387b2518cb54985af5289b2528ab35189b34986b05089b1508ab24785b14980b04d *83b04a81ae5687b04f8ab34a85af4c85b14983b04784b05088b24882b04e84b05084af5a87b14e *87b34b89b24889b34985b24783b14e85b15285ae5288b04580af4986b14a87b24786b24a87b245 *85b04a87b15086b14487b64788b24887b24584b04f86b24f87b2528ab44b87b14d86b14f88b14d *87b1518ab14886b24a86b14c85b15088b3518ab44e86b4508ab2508bb34887b34f8ab4558bb34c *89b14f8ab0568db6518cb6558ab55f8cb64b88b54e89b3518eb5538eb6588db5508ab44d87b350 *89b44d89b35b90b9518eb6558fb85290b75291b6508cb3528db55689b4518db44f8db5548eb758 *8eb85d90b6588cb5528fb7528ab64988b25990b84f8eb65592b7528db55390b65992b35d92b550 *8cb3558db55c90b7558db6508cb65392b65392b65890b35d8eb45892b95792b65d95b95d92ba60 *92b85c93ba5a91b86395b95c92b95b93b65b92ba588fb7598db86297b95d95bb5f95b95995b760 *97ba5c94b85b93b96397bb6798bd6497bb6698bc6397bb5e94b86196ba6096b85d94b96494b860 *96bb5c93ba6195b95f96ba5e95b65f95bb5f94bb6798ba5f97bb5f98bc6196bb5d96bb6099bd59 *94bb6598bb6496ba6194b76297ba5d99b96198bb649abc5c93b75f94ba6194b85e95b86497ba5e *94bb6097bb6399bd5f95b86198bb6397bb6598bb5f96b86497bc6096bd6699bc6398bd619abb66 *98bb6498ba6298ba6197ba6096b9679bbd6198bc629bbd629cba6097b96296b9679abc6899bc65 *97bb679abd6a9cbe6a9ebd649aba6398ba659bbb6b9dbb749ebd6b9dbf699abe699cbd6b9ebb69 *9cbb6d9bbc6a99bb5992ba6497bc6c99bd699abc6499bc6099ba6e99bb6999bb6398ba6097ba67 *9abd6a99bb649cbc6498ba639aba6599bb689abc6397bb5e96b9659abb679bbe6799be659cbd68 *9ebb6398b96298ba5e98bc689bbd6698bb639bbc65a0c1639ebf6698bb6899bb6699bb6597b964 *99bc6499bb6198bd6a99bc6199bc619bbc6c98bd5c92bb6594ba6095bc5c93ba5d99bd6199bb65 *9bbc6a9bbb6197b86398ba679cbd699bbb629bbd659abd669abd6499b96797ba689bbd6299bb64 *97ba6498bb6398bc6798bd6297bc6499ba6399ba639abc669cbd659bbc669bbd679abd649cbe6a *9bbb6098b96095b8639abb6397bb6498bb629cbe649cc0679bbd6497ba6399bb689cbc679bbd64 *9abe6699bc6999be679abd679ebd639bbe619abd689cbc709bbb6398bb6699bc6098bd6199bc5f *98bd699dbd719ebe6e9bbb6599bc6a9cbc6a99bd669abd689dbf679cc06e9ebe689bbc699bbd6a *9cbc649bbc669cbd699ebf699ebe699dc16498bb6399bb6596bb679dbb709dbc669bbe5f9abd6c *9cbf699abf6595bb699abc6b9abd699abd6199bd6099bd679ac06b9bbe6a9abb6e9cbd6d9dbd69 *99bb6ea0be619bbe699bbc699dbc699cbd6c9ebe689dbd659abc6098bb609bbd699dbe629abe6e *9ebe6a9cbe6b9cbe6d9dbd699cbc709dbe72a1bf6fa2c06d9cbe68a0bf6ea0bf719ebf6aa0be69 *9ebe6ea0c06a9cbd70a3bf719fbf6da0be679ebd689fbf6fa0bf759dc16ca0c073a0c373a0c176 *a2c1699dbd70a0bd6c9ebf729fbe699cc07aa3c18caac597aec79bb2c9a8b8ccadbcceaebfcdb0 *c1ceaabbcca8bbcca6b9cca4b6cca6b8ccaebfceb5c3d0b9c4d1bcc6d1bbc6d3bdc7d3bdc7d4bc *c6d1bbc7d3bcc7d5bdc6d4bfc6d3bdc8d3bbc6d3bbc7d3bbc7d4bcc7d5bec7d1bec7d3bec7d2bf *c9d6bfc7d4bfc8d3c1c8d4bec9d5bcc7d3bdc6d3c0c8d4bec8d3c0c9d5bfc8d4bfc8d4bfc8d5c0 *c9d5c1c9d6c1cad7c3ccd7c4cdd7c4ccd8c4cbd7c7ced8c7ced7c6ccd9c5cbd6c6ccd7c3cbd5c1 *ccd5c3cbd7c1c9d6c2c9d5c3cad6c5cbd7c7ccd8c3cddac3cbd8c3cbd7c1cad7c0c7d3c1c7d6c1 *cad6c1c9d6c1cbd5c1c9d5bfc8d6c1cad4bec8d3bfc7d1c0c8d4c1c8d7bdc8d6bdc9d7bcc6d6bd *c6d4bcc5d1bac4d1bac3d1bac1d1b6c3d2b8c2d1b6c3d1b6c1d1b3c1ceafbeceadbccdaabbcda3 *b8cba0b7cca2b6cba0b2cb9fb5cba1b7cb9bb3cb99aec79ab1caa4b9cbb1bdceb0bdcfb4c1d2b4 *c1d2b8c4d0b8c2d1b7c3d1b6c2d0bac3d1b9c3d1bbc2d3b9c1ceb5c1d0b7c5d1b7c2d0b6c3ceb2 *c1d0b1bcceafbdceafbcccaebcccb0bdcbb1bccab1bcccacbccdadbdcdabbcceacbbccb0bccdb0 *bbc4c4cecfcbd4d7cfd7ded0d8ded1d9de668cb1578bb15d8cb1618cb4608db65e90b66590b46f *97b56992b46292b87096b87398b8769abb809dbb7f99b6789dbb7a9eb6819eba85a3bb85a3bc81 *a0bd80a0bc80a1bf8ba4bf89a5bd8aa4bc87a2be8aa3bd839fbb849ebc86a0bc829fc080a0bd84 *9fbb799cba7496b86e95b6678eb65e8cb55787b34e84af4d84af4684ae4d87b04683b05184b246 *81b14d86b14e88b45587b14a85b04c86af4982b15184b24a84b04d85b25386b14982b14d82ae4c *86b04481af4f84b34d81b05386b44e89b24a84b05288b4518ab25288b35189b24983b24f83b24a *83b14e84b05085b14d86b24f87b25085b14985b34785b4447faf4782af4c83b14b82b14780af48 *82b25086b15287b14b83b34685b54684b24a86b24886b14c8ab34686b25289b44780ae4d84b148 *82b34985b24784b44e86b2528ab54d86b24e86b14c85b1538ab64986b15187b34886b14684b247 *83b2538ab55189b44687b14e88b44885b34b86b5518ab2508ab3538bb5578db54b85b25289b54f *89b64d87b64c87b24e8ab64d88b65286b55289b3508ab34e8ab64e89b45189b65086b45186b452 *8cb74f8db75890b74f89b4538eb64f8bb55189b54f89b6578db4518db6588fb75b91b54a87b553 *8cb64e8cb5518ab84c88b5518db65491b9568cb7518cb7558cb7508bb5578bb6538cb5518db658 *8fb85a8db7538fb4588fb84e8bb6518ab4518cb6578cb65c92b75791bb5a93bb5f95ba5d92ba62 *8db75991b85f94ba578db95990ba5892bb568fb75790b85892b75d93ba5c92bb5794ba5f93b960 *93bb6196bb6095b96197bc6193ba5c95ba5f92ba6193bc5b92ba5a93ba6495bb6697b96090b75a *91b85a90b95f91b85d92b95c90ba6295bb6197bb5f96bb5692b95e94b96194b95d92bb6292bb69 *97bd669abe6498bb6493b95d92ba5c91bb6694bb6395ba6697bb6195bc6093bd6297bb649aba5e *94b95a93ba5e93bb699abd5d93bb6297bb6696bc6297bb6297ba6397bd5c92b96196bb6494bb5f *95bb6799bf6396bc6699ba6699bc6498bb5e97bb6196ba6298bc669abc6192bb6195bb6698bc67 *99bb5e96bb6a98bc6b9bbd699dbd6d9dbf6c9bbd669bbc6d9abc6096b96096bb6d9dbe679cbc63 *97bd6294bc6899bd6498ba6798bb6799bc629abc6399bb5f94b95f97bf6697bb6098bb6299bb61 *95bb609abc6a9abc6498bb6197bb6197bc5f98bd5f97bc5e95bb659bbd6197bc6498be6899bd62 *98bd6698bd6498ba649abd5e99bd6499bd6796be6699bc689abd6499bd6397bc6499bd6a9abb66 *99bc6399bd5c95bc6198bd5c93bb5895b86296bb6399bd6498bc6493ba5f93bb6698bb6096bd68 *98bd6496ba6799ba6999bb6799bc6398bd6598bd6399bd6898bc6298bb6499bb6196ba5e96bb5e *98bc6296bc6296ba6896bc6295b95b95bb6193bb6394bb6199bc6399bc669abd6197bc6798bd62 *97bd6398bc6b9bbc5f97bd6297bc6698bd5f96b9639bbb6397bc689bbd679abf6197bc6b99be65 *98be659cbd609bbd639dbd5f97bf6299bd6397bd699abe6b97bd6598bd679abc669ebd6599bd64 *97be6096bc6699bd6f9dc16b9bc16d9ebf72a2be729bbd6596bc649abe6097bc6b9abf699bbd66 *99bb639bbc669dbd6399bc5b94bb6096bc6498bc699abd689bbf6c9abf6298bb6a9abc6699be6a *9abf6298bd699bc1669abd649abe6399bc6899bc6c9abb6499bd6c9abe6599bd679abd609bc164 *98bd6e9ac06199bc699abd6899bd6799bd6299be669bbf6d9ec3669bc16d9cbc689bbd6698bb67 *99bc699bbc6098bd6d9dc16b9cc06b9ec36c9dbe6d9dbe6b9bbd6c9dbe6198be669abd699ac072 *9dc1669cc067a0bd6a9dc06b9ebe679bbd659dc0699cbf699cbf6f9cc175a1c26a9bbd6e9ebd6c *9ebe659cc06c9cc16b9bbd749ec1779ec278a1bf7ea6c395adc799b1c999b2ca9eb3c9abbccfb0 *c0d2b2bed1abbacca6b9ca9eb2c997afc89cb1c9a6b8ccb1becfb5c1d1b9c5d2bbc5d3bbc7d5bd *c7d5bdc6d3bdc6d3bbc6d3bbc4d4bdc6d3bec7d5bec8d4bfc7d2bdc4d4bdc6d5bdc6d5bdc5d3bd *c7d4c0c8d8bdc8d7c0c7d3c0c7d3bfc7d3bfc9d3bdc7d3bdc7d5bfc7d6c0c7d6c0c9d5bfc9d4c0 *c8d3c0c9d5c1c7d4c1c9d6c3cad7c3cbd6c3cbd8c6ccd7c7cbd6c4cad7c5cbdbc3cbdac3c9d8c3 *c9d7c1cad8c2cbd8c2cbd7c1cad6c3cbd8c2c9d5c2cad8c1c9d8c3cad8c3cbd9c4cadac1c9d6c2 *c9d6c0c9d5c0c7d8c0c9d7c2c6d5c3c8d6bfc7d8c0c7d3c1c9d7bfc7d6bfc7d4bdc7d6bcc7d7bb *c5d4bec6d5bdc5d3bcc6d3bac7d3bdc5d3b9c3d3bbc4d1bac2d1bbc3d1b6c2d2b3c1d2afbfd0ab *b9ceabb8cfabbacea9bccea7b9cda3b4cca3b5cea2b4cba2b7cca4b6ccaabaceb0bdd0b2bdceb1 *bcceb2c1d1b3c3d2b8c3d3bac4d1b7c2d3b7c1d1bac3d2bac3d3b7c3d1bac4d3b8c4d3b6c5d3b6 *c3d2b6c2d0b3c0d1b3bfcfb2c0d2b5c1d1b5c1d2b1c0d0b5bfd1b2beccb2bcceb1becdb5bed0b3 *bfd0b4bcc1c4cbd0cbd4dacdd7ddcfd9ded1dade538db25c8baf578db1678eb3688db37295b668 *94b66d97ba6690b67395bb7195b67097b66e97b9779bb6789bb8819dbb82a0bb84a1bd88a0bf8a *a2bb89a2bb8aa3bd89a2bc89a3bd89a2bb89a4bc88a4c2879dbd869fbc8ba0bb88a2bc879ebb7e *9eba83a0be819dba7299bc6892b6578bb3568ab15485b04680ab477faf4885b24984b24482b444 *82b14681b04981af4685b14986b25183b14983b15385b34a84b34e85b14c87b24e89af4c85b151 *84b14886b04d85b04784b34b85b04c82ae5187b34884b24985b34c85b44e84b24d85b44c82b24a *83b04482b24880b04980b04a83b04b82b14c82b14982b1487eb14c83b04c87b04887b24783b149 *83b14a81af4b84b24785b1508ab64885ae4487b24681b14385b1407fb04a85b24b88b34982b150 *80b04c83b05387b14382b04b84b04481b0498ab64b88b34b85b44b84b34d89b24582b2528db449 *88b44685b34587b54f8ab5508ab7538bb55088b34c83b14684b34d85b24e87b34b85b34e86b54d *85b4558ab14f85b24e89b1528ab44a86b5538ab5558ab64687b74f8cb65c90b54a86b24b89b44c *8ab6538cb64a88b64c86b5538cba528ab6508ab4558cb65189b14886b25086b54c86b45288b852 *8fb84f8cb7578eb74e86b34f8ab45087b54e8db6558ab2548bb6568db55a90b5548db64e8cb550 *8ab44e86b5518ab7548fb85f93bb4f90b85a91b75d8fb6578eb84f89b5578db7538fb7518eb85c *91ba5f93bb5c91b6578fb6518db7528cb46095b65593ba5f96b75b94bb5896ba6292b85b8eb95c *91b75c92b85c90bb6197bc6496bc6596be5f97bb6996ba5c91ba5990b95891b86496bb6698bb65 *93b85c90b75e93ba6793ba5c93ba5793b85991ba5c92bb5d94bb5c91ba5f95bb6497bb6090b95c *92bb6696bb5f93bb5e93ba5891bb598fba6595ba6495bb5892ba5e94b8578fbb5c96be6094bc5d *96b96595ba5d94b96797bb6997bc6497bb6595ba6293ba5d96bb6394ba6897bb6997bb6196bc5f *95b86699bd6596bc5b91b96597ba6897ba6798ba6599bb6798ba6195bb6294ba6594b66396bb69 *97bc6697bb6a9bbd6598ba6f99bd6e9abc6a9bbd709bbd6d9dbe6a9dbd699bbd6b9dbe6c98bf69 *9bbd6a99bb6298bc6499bd6698bc669abd6597bd6598bb6499bb5f94bb6296bb6598bb6698bc5c *97bb6399ba6397bb669abc6b99bc6897bc659abc6098bd6097bc6598bc6596bb6799bd649abd6a *9cbf6596bc6297bb6399bc6599bd619abd6c99bd6696bc6298bd5d94ba5f93bb5f96bb5f95bb64 *95bb6597bd6197bc6397bc5f99bd5e93bb6596b86298bb5f92ba5f94ba5a93ba6499bc6497bc61 *97bd5f97b86095b85f97bb5892ba6a96ba6799ba6096bb6799bc6198bc5e95ba6497ba5d95bb5d *94b85e96bc6096bb6396bb6194bc6399bd5c95ba6297ba6b9bbc6798bc6596ba6098bd6399bd66 *99bf6a99be6899bb679abb6c9abb5e97bb6098bb6998bd6395bc6498bd5e97bd6196bb6498bd6a *9dbe6397bd5d96bc6497bd6e9fc26298bb6498bb6496ba649abc609abd6297bb6398bd6199be64 *99bc6c99bd6e9cbc649cbd6499bc6c9bbd6097bc7ba4c3739fc06898bd679bbe6b9abc6397bc63 *9bbc6a99bd6396bc5f96bc6a9abd6b9abe699dbe6a99bd639abd6099bd6a9abd6298be6498be64 *99bd6597be6298bd6b9bbd6498bc6998be6d99bd6c97bd6499c06197bc6a9abb6d99bd6a9bbd5f *99bc6098bd679bc0609bbd5c97bd6099be6299bc629abc6199bb6b9cbe679abd659cbe649abf67 *99c06799c26498be719cbc6798bc6897bd669bbd669ebf6a9cc0649cbe689cbf689dbf759dbd74 *9ec26a9abe6d9fc0659bbc6da1c36b9dbf6f9dbf75a1bf6799bd6a9bbe679bbd6a99bd6d9bbe6e *9cc3729ec36b9bbe6a9abe709bbf6f9ec176a1c1719fc26f9ec18babc7a1b3cb9eb4c99fb3c8ac *bbcdb2c1d0b0c0d0adbbcda7b6caa1b5c9a0b3c99eb4c9a7b6cbafbccdb4c0d1b6c3d1b7c2d3bb *c5d4bdc6d5bdc7d5bdc8d3bcc6d4bcc5d5bdc6d3bec6d5bbc7d4bfc7d1bdc8d3bdc7d3bfc8d3bf *c7d4bdc6d3bfc7d4bec8d6bec7d3bdc8d3bdc7d3bfc8d5c0c9d6bfc7d5c0c7d4c1c7d6bfc8d4bf *c9d6c1c8d6c0c9d6c1c9d5c3c9d6c2c9d7c1c9d7c2cad8c2cbd7c3ccd8c6ced8c6ccd9c4cbd6c3 *c8d8c2c8d7c0c9d5c1cad7c2cbd8c1c9d7c2c9d8c3c9d5c4cbd8c4c8d6c2c9d6c1cad7c1c9d8c0 *c7d7c2c9d6c2cbd8c3c9d7c3cbd7c3c9d8c0c9d7c0c9d7c0c7d6c1c8d6c1c8d5c1c7d6bfc8d7c0 *c6d4bec4d3b9c4d4bbc4d3bcc3d4bdc6d3bdc7d3bdc6d4bdc7d5bdc7d5bcc7d3bac1d2b2c0d1b2 *bdd0aebccdb0bdceb1bfd1acbfcfa1b7cda2b5ceaab9ceaab9cba7bacdabbbcdadbbd0b4c1d2b2 *bfd0b1bdd1b4c1d1b7c2d3b8c3d3b6c3d2bac5d2bbc3d4b9c6d5b5c2d3b7c3d3b5c1d1bac4d2b6 *c2d1b4c0d0b3c2d1b4c2d3b1c1d0b2bed2b7c3d1bbc2d2b7c1d1b6c1d1b8c2d1b6c1d1b7c2d2b5 *c0d1b7c0d0b6babec4cccfcad4d8ced8ddd0dadfd0d9e0548bb05f8eae6591b16590b1668fb464 *93b36992b15d91b56991b1729ab87099b6729bb77f9cb8789bbb7298b97e9fbb7ca1be7ea4bd8a *a4bc7fa2bb8aa3bc86a4bc87a4bd80a2be8aa5c087a4bd8aa1ba87a3bc88a1ba8aa4be89a3be86 *a2be85a3be86a0bc799cba749bb86a93b66292b54c88b04b87b34983af4685b14483ad4a82ae50 *87b14685b24782ae5487b04d84b04885b14b81b04b86b14f89b14783ae4b85b14b87b34b86b14c *84b14d86b14686af4585b04785b14381b04883b14f83b34d86b34d8bb44a88b14786b04786af46 *82b04a82b04885b34d86b15085b14781af4a88b14d89b14886b24382b14985b44782b24f86b34c *86b13e81af4180af4184b14d8ab24784b14d81b14c84b15385b24b85b14c88b04c88b24284b049 *85b05085b14c85b44d8ab44985b54887b54c89b24c89b24585b14184af4386af4a86b14d89b34e *89b34184b14e89b34d89b55289b44a85b14a85b04a86b25187b65089b44886b14886b04b88b246 *87b24f88b3548ab34d86b24f87b34f8ab24a88b34586b24f8ab64d8cb54a8cb3538eb54d8cb653 *8fb84e88b14f8db65490b4528db54986b3578fb54f91b8548bb7568eb5518cb4568cb54a89b64c *90b54e90b6498ab44f8eb8518eb85290b7588fb65893b74e8db75390b9538eb7538eb95c94ba59 *92b75c8fb6518db65890b6568eb45891b9588eb64e8cb5588fb64f8db74e8eb6588eb5528cb65b *91b75990b85c93ba5c94b94e91b75094b94e90b65b92b8588fb95890b96392ba5f95b95a92b959 *95b65d96ba6296ba6093b95e97ba6697bc6599bb679bbb6799bb649abc689cbd6399bc6395b962 *96bb6397ba5f94ba6095bb5e96b96398bc6197bc5d95bb6896bb5d95b95e95b85f96bb5a96ba63 *9bbb6098bc5593ba5f93b95b95ba5e94bb5893b86596bb6097bc5e93ba6195b95d96bb5b93bc5c *94ba5d96ba6093ba5791bb5e96bc5f96bd5996bd5f95b95e97ba6396ba5a92b75a95ba699dbd63 *99bb679cbe699bbd6b9bbc689bbc6498bb6597ba6598bb5f99bd6198bc5e98bb6898bb6897bb6a *98ba6596ba6498bb6597ba719dbc6d9dbc72a3bd789dbe719cbd679dbc689ebd6a9bbc659abd6d *9dbd6a9cbc659bbd699cbc6899bc5d99be6299bd729abc6196bb6b9cbd5d99bb5d96bb6196bb67 *9bbd6499bb6798ba6398bb6198ba5f98ba6799bb689abd6198bc6699bd6598bc5c95bb6499bc5c *99bd5f9abc5f98bd6497bd6c99bd689abd6197bd619abc5e97bc669abc669abe669bbc6498bd63 *96bb6198b95c96b9679bbc6398bd5c98bc5f96ba6599bd5f95bb679bbb6297bb6097bd5f97bd5d *98ba5796bb6397bb6196bb6196bb6199bb6999bc6497bc6499bb6999bc6097bc5e98bb6198bb62 *97b96398bb6199be659abd6198ba6396ba649abb6499bb6195b86398bb6097bb6299bd5895bc63 *99ba6c9bbf699bbd6c9cbc689bbd5e99bd5f98bb5896bb5e97bb6498bb649bbb6298bb6098bc64 *9bbc5f96ba649bbd6498bc689bbd699ebd6299bc6299bc6696bb709bbf5e98bc6698bc699abc68 *9abb6699bb6b9abd669cbe659bc0629bbd639bbb619abc5e9abd669dbf6599bc6999bc6c9ebe6b *9bbf629abd629bbb639cbe6099ba6b9ebd669bbe699abe6499be6b9ac1629abe639abd5e9bbd61 *9bbd699bbc6296bb679cbf6598bb6597bd659bbd6ca1c168a0bd689bc06899bf6c9bc15e99bc6c *9fc1659dc06497bb6199bc6199bc659bbd6799bc6e9cbe6198bd659abd669abc6199bb659abc66 *99bd639abd669bbe679cbd6a9ebf759dbf659ebf689dbe649dbf6a9fbd649abd6b9fbe659bbf69 *9bbf75a2c275a0c16da0be6d9fbf6b9cbe6c9ebe6c9cbf6b9cbe6d9dbe699cc0659cbe6b9dbe6c *9dbe6d9ec0609cbd6f9fbf6ca0c176a0c0699cbd6b9ebe709cbd77a2be86a9c393aec799b1cb9c *b4cbaebecfb5c4d2b0c3d1aebfcea9bacca1b4c99db3ca9bb3c9a2b6cbacbcceafc0cdb2c1ceb7 *c3d1b7c5d2bbc5d2bbc7d5bcc7d4bdc8d4bdc9d6bfc9d5bcc5d3bbc7d3bdc7d3bfc7d5bdc7d6be *c9d3bec7d3bec7d2bfc7d3bdc6d2bdc9d6bdc8d4bdc8d5bec9d6bfc8d2bec9d6bec7d5bfc9d5bd *c9d5bec9d5c0c8d6c1c9d5c1cad6c1cbd7c3cbd7c1cad6c3cad6c5ccd8c6cbd6c6ccd6c6cddac4 *ccd8c1ccd8c1c9d5c2c9d5c2cad8c3cad5c2cbd8c0c8d6c1cad8c1cbd8c3cdd8c3cbd8c1c9d7c2 *c9d7c1c9d7c3c9d6c3cbd7c2cddac3ccd9c2cbd8c2cbd6c1cad7c1c9d6c0c8d4bdc6d4bfc7d6bd *c8d8bfc9d6bcc8d5bbc6d5bdc6d2bcc5d3bdc6d3bdc8d5bdc7d6bec8d5bec9d6bec7d3bdc6d3bb *c5d3b7c5d2b7c2d2b3c0d1b6c1d3b1bfd1a8bbcfa8bbccabbbcdadbed0b0bed0b1c0d0b5c2d3b4 *c4d3b3bed2b2beceb3c3d1b3c3d1b9c7d3bac3d4b6c6d1b9c3d1b7c7d0b9c6d2b7c6d3bbc5d3b8 *c4d2b2c1d1b1c1d1b3bfd1b2c0d0b4c2d1b6c1d0b6c5d1bac5d1bac2d3b6c2d3b7c2d1b8c2d1bc *c6d3b8c3d1bbc6d3b9c1c2c6ced2cdd5dbced8decfdaded0dbdf5f8cb15f91b65c8cae588eb266 *92b35e91b1648cb56b8db36990b66a95b8709bb6789bb8739aba7c9dba799fb982a1bc8ba2bd85 *a0bb8ba4bd8ba3be849fbb85a3bc8aa4be8ca4bf8da2bc8ca4bb89a4bd89a3bd85a0bd8ba3bf86 *a5be83a3be85a4bd7f9eba7d9dbb7195b96c91b75e8eb4508ab34d87b25189b25183b05083af4d *87b14984b3427dad4a83b04d86b14d86b2518ab14c87b14784b14f86b04680ae4a87af4884b143 *83b14983b05285b04c87b14b84ae5287b24d86b14e84b04c86b14986b24385b14b87b34c83b04b *83af4d83ae4a84b04582af4683b14c85b2477fb1477fb14981af4882af4984b14a86b24e85b249 *85b14883b14783b2467eae4c80b14f83b04781ae4681ae5285b54883b14885b44986b14c84af47 *84b04882b04d85b04d8ab34785b04a85b44d87b65087b24e85b15188b24a82b04b85b35089b44a *88b35c88b44887b34b86b34484b04e88b24d86b24c86b24685b14a84b24885b44c86b34d82b14c *86b14884b04d85b24b87b3518eb6518ab6528eb6508ab34f87b1588db6588bb5558ab6538bb447 *84b2528ab64c86b44f8fb74f88b2538ab75187b2538fb6518bb35089b5528db25190b8568db84f *8ab6548bb75a8cb7598cb4548fb7528cb64d8cb84b89b7548db65990b8528db6588eb95790b75b *91b7538ab5508cb65a8db9558cb6588db6518cb6578eb65591b75090b7598eb6528bb6528db95c *92b64e89b5568db75c90b75891b7518db65391b85291b95793bb5391b85a91b7528eb65c92b959 *90b7568eb9578eb95c92b85f93b96899bb6c96b96a98bb6497bc699abd6d9cbc6999bd6399bd61 *95b86b9abc6b9bbc6f98bd6796bb6297bc6a97bc6697bd699bbc6898b95b92ba6092b85d93ba59 *92ba6096bb5f96bc6299bd5892bb5e92b65e91b75d91ba6697bd6196b95d94b96095bb5e97bb5f *96bb5892b95f90b75990b95e93b96595ba5f97bb5c94ba6595bc6096b96498bb6994ba6596bb6c *94ba6c96bb6698bb6296bb6c99bd6b9cbe6899bc6598bb6699ba6197ba6196bb5f95b96398ba5f *96ba6498bb6697bc6497bc6b99bd6d9abd6ca0bf699fbd6ba1be6ca1c077a2c06d9cc0719cbd6c *9cbd6a9bc0689abd6699bb639bc0699dbd6699bb6498bd6d9cbe6999bf6999bc5f99bc659abc60 *97bb6c98bb709cbc6699bc6399be6598bc6096bb6099bd5e96bb6097bb6097ba6698bb6b98bd65 *99bd6299be6a9ebd6399be689abc6298bb6299bb6396bc6198be659bbe6699bd679cbd6098bb58 *96bb649bc15f98bc6196b96896bc5993bb6699bd5f96bb6197bb5d94b96096bd6592ba6194ba65 *93bb6293ba5f96bb6097ba6499bb6597b95f97bb5d96bb5d92bb5d95ba6598bc6598bb669abd6a *98bd5f96bd659abd6097bc659abe6496b96298bb6096ba5e96bb6197bc6099bd5e97bb6598bd61 *98bc6497ba6097bb5f96bd5f99bc6498bb689abc639abb5a94ba5e96bb6196bd6398bd6299bd61 *9abd5d98bc679dbd649dbd659abd699bbd5f96bf6e99bd689abc6a9bbd649abe69a0bf669abc65 *96ba6a99bc6596ba6598bb6498bc6497bc699fbf699dbf669abd6199bd6e99bd6296bb6699bd66 *9abd6d9ec0679bbe689bbe5c96bc5c96bc6497bb6a98be639abd5f98bb5e98bc6097bd6798be60 *98bb6497bd6399b96197bb649abe689cbe649bc06298c15d99bd6597bb6c99bb609abd6098bd64 *99bc5f99bc689ac16694bb6598bc649abc659cbd6a9abc609abd6797bc669abf699bc16699bf68 *99bc679abc6999bc6898bc659abf659bc1649abf659abf699fbf74a1c0729fbe659abb639abd64 *9ac0679bbd6999c06d9ac16198bd669cbc6a9ec15f9cbd6b9abe6b9cbe6a9dbf659abd649ac266 *9abe6c9ec16c9dc16a9bbe709dbf6b99bc6f9fc16d9dc073a0c16e9bc16c9cbf7ca2bf82a7c68b *acc89eb2c9a6b9cca8bcceabc1d1abbdcea1b6ca9cb3c99db2ca9db1c79fb4cba8b9ceacbdd1b3 *c2d0b7c3d1b9c3d2bbc5d1bcc5d3bcc7d4bcc7d4c0c9d6bdc7d8bdc6d3bec9d3bcc7d3c1c7d6bd *c7d5bbc7d3c1c8d5bdc7d5bdc8d6bdc9d3bdc7d5c0c8d3bfc8d4bec7d3bec7d3bcc6d5bcc7d6bf *c8d5c1c9d6c1c9d5c2c9d5c0c8d5c1c9d7c1c9d7c0c9d7c3cbd8c4cbd8c3ccd7c3cbd6c6cbd5c4 *cbd8c3cbd8c3cad8c2c9d7c3cbd6c4cbd6c3c9d6c1cad7c2cad8c3c9d7c2cad5c1c9d9c1cbd6c1 *cbdac1cbd7c1c8d6c3c9d8c2cbd7c4cad7c3cad8c2ccd9c3cbd8c2cbd6c1cbd7c1c7d3c1c7d6c1 *c6d4bdc7d6bdc8d4bec7d5bdc7d3bdc8d5bfc7d4c0c6d3c0c7d5c0c8d5c0c8d6bec9d5bec8d6bc *c8d6bcc7d6bac6d4bdc4d2b8c2d1b8c3d2b3c2d1b0bdceb2bfcfb6c1d0b5c2d1b9c3d3bac1d0bc *c3d3b8c4d2b5c1d0b6c3d1b4c4d3b6c3d3b6c6d3b7c3d1b6c3d1b7c4d3b7c2d2b5c1d1b6c3d3b2 *c1d3b3c2d2b4c1d0b2bcccb0bbcfb6c1d1b7c3d1b9c2d2bac4d1bbc7d2bcc6d4bdc7d3bec7d2bf *c7d3bdc8d5bdc5d3bcc5d2bcc1c5c6ced2ccd6daced8ddd2dbdfd2d9e06591b1658eb16b8eb15d *8aae5b8eb06a91b56893b46891b56f98b66a94b57593b3809bb5789ab8769bbb7399b67c9ebc7a *a1bc86a4ba88a3bb90a4ba8da2bb8aa3bc8da3b989a4bd87a4bd8ba4bd89a4bd8da4bb8fa4bd8c *a3bc88a3be83a1bc7ca2bd799ebc709ab67098b56793b46394b45288b14d85ad4e83af5186ad4a *87b0508ab14b89b14f89b24f84ab5085ae4985b14c85b14b86af4585b04a86af4984af4884af4e *87b04485b14b82b05486b14e84ae4782af4883ae4f86b15387b24d84ae4681af3f80ae4884b147 *85b04986af4b86b14a86b14c83b04d86b04c87b14781ae4482b04b86af4a85b14382b05087b151 *85b04881b04881ae457fae4787b0528ab14d86af538ab24781b04584ae4a89b1437faf4885af44 *85af4e87b14181af4a85b44c84b04a84b04a88b1538bb14785b14781af4885b14783b05186b14d *86af558ab15089b24d8bb24586b14c88b34c86b34c8ab35185b0518ab04985af4c88b14c8ab149 *84af4886b34887b34082af4b8ab44a87b14f89b3518eb35289b24e8ab54886b1518bb64987b14d *8cb1508eb34c8bb4508cb34d89b3558cb75990b84d89b5508cb6528db34d89af598fb6548eb352 *8bb45188b6598db8518cb5508cb24f8ab25b90b8508cb25189b2558db54d8cb55790b94b8bb455 *8fb65591b6598fb4538cb1568db3518db6528db6588db75a93b65792b55a8fb65890b66091b55f *91b75a8db85692b7558fba4f8fb6528fb25393b6588fb55d92b95792b76395ba5c92ba5f94b85d *95b85894b65a92b65d94b95f95b96496ba6497bb6398bc6999bb6298b86a99ba6f9dbc6d9cbd6f *9dbd6d9abd6b9bbc6c9cbc6a9bbb6b9abb6a99b96e9abb7199bb6b99bb6695b96398ba5e97bb67 *97bb6597ba6898bb5f94ba5c95ba5f96bb6193b86096bb699bbd5e97ba6197b95993b75d90b65c *94b76095ba5e94ba5d95b86197bb6097b75c92b65f96b96397b95c96b75994b9609abd699dbd68 *9dbc699abb6999bb6f9cbb6e99b9719bbc70a0bf6b9cbc699ab9629aba6399b96897b86596b96a *98b86599b96098ba679abb669abc699bbb719bbb709bbb7a9ebc729dbd75a3c070a1be759dbd69 *9dc06b9cbb6496bb739ebd6b9abb6498bb649abb619abc669bbd649cbf6a9bbb6697b96097b962 *96ba699abc5f99ba659abb5b98ba649bbb6398b96596ba6899ba6999bb6499bb6297bc5f97bb64 *98ba6299bb659abb6598bb6498bb639abc5f97bb6197b9659bbb5c99ba629bbc659bbd6799bd6a *98bb5d95ba6097bc6099bb5e99bb619bbb639abc6396bb5d92ba6896ba6097ba5a94b96197b965 *97b95d97ba5f96b85f97bb5b94b86296bb6096b86096b95f9bbb679bbb6198ba679aba6195ba69 *99bb6699bc5794ba5d96ba5d97ba639abb5f98bb6195ba6495b86297b95f96ba5c94b96096ba63 *99bc6099bc619bbd6899bc6396b8699bba699abb5e98b95d99bb6099bb5e96bb6295b76597bb70 *9bb95e96bb6099bb649cbd6a9ebd649bbc649bbc689cbc6999bd6096bb6298bb5c98bb5f97bb65 *98bc5d96b96499bb6397b9689abc699bbd5f99bd649abd5f98bb699abc5f99bb679ebf639abc67 *99bb6897bb6e9ebd679abc609abc639abd6499bd6a9cbe699abd6096bb6296b95d96bb6798bb64 *9bbd689bbd669bbe659cbd6596bb6698bb699abb6498bc6499bd629cbd639abd6299bd6699bd64 *9abd639abb6b99ba6d9dbb679abb659bbc659dbd639bbe6598bc6597b8699abb689bbb699fbd64 *9ebe689bbc659abf6399bd6c9dbd6d9abb679bba659bbc6e9fbd699cbc649bbc679dbf699cbf6a *9cbb699dbd69a0bd6c9fbd6c9fc06b9dbe699cbf639cbf6799bd679dbd6699bb649cbc6699bb67 *9cbb679dbd689cbe6d9dc06ea2be6c9dbd6798ba6c9dbd6da1bf6a9dbf699bbd619bbc6a9fbf77 *a5c48eacc396b0c899b2c89bb3c9a2b6cba3b7cc9ab3ca92aec796b0c69fb3c8a3b6c9a9b8ccae *bccdb2c1ceb9c4d2b6c4d2b6c6d3bcc7d3bdc7d2bcc7d2bec9d3c1c7d3bec7d4c0cad4bec7d5bd *c8d6bdc9d3bec8d1bdc7d1bfc9d3c1c8d3bdc7d3bdc7d3bcc8d5bdc9d3bdc7d3bfc8d3c0c7d1bf *c8d3c0c8d5c1c9d6bec8d7bec7d4c0cad5c1cbd5c4cad3c2cad5c2c9d4c1cbd6c3cbd6c4cbd6c3 *cbd6c4cad7c2ccd6c2c9d5c1cad5c2cad5c4cbd6c2cbd7c1cbd9c0ccd8c1cbd4c3cad1c3cad6c6 *ccd8c3cbd6c2cbd8c3cad6c5ccd8c7ccd7c3ccd6c4ced8c3ccd5c5cbd5c1cbd6c3c9d6c1cad5c0 *c9d6c0c9d4c0cbd6c1c8d2c1c8d5bec8d6bfc8d5bfc9d6c0c9d6c0c9d5bec9d2c1c9d3c0c8d5be *c8d3bfc7d4bfc9d4bec9d3bbc8d5b9c6d4b8c5d1bbc4d2b7c5d2bcc5d2bac4d3b9c7d3b7c7d5bc *c9d4bec7d6bec7d2bec7d2bcc6d2bbc5d1b4c3ceb4c2d0b4c3cfb4c3d1b4c2d2b7c6d1b7c2d0b2 *c1cfb1bfcfaabdccaabbcdacbcceaebcceb1c1d0b9c4d1bbc3d0bfc7d2bfc7d2bdc9d3bfc9d6be *c8d3c0c9d3c0c9d3c2cad3c3c9d6c0c4c7c4ced2ccd5dbcedaddcfdcded1dcde6995b6658db56d *96b16d96b16591b16191b66892b66591b46b94b56892b86f95b67697b8789db97d9eb9819cb986 *a2bb8ba2bd8da4bb8aa4bd8ca4bc8aa4bb8ca3be8aa4be8ca4bd8da5be8ea3bb91a5bf86a1bf87 *a1bd8ba2bd839fbb809ebb779ebb7a9dbb7d9eba749dbb6d95b86a8cb35089b14f86b05085b04d *84af5087b04285b14a86b44c87b65189b24781ac5287ad4d81af4f88b24f85ae5082b04f87b452 *89b2558ab14a87b14c83ad5d8cb1508ab04887b04a84b05083b14f84b14983af4c86b14e88b149 *85b04a85b14f85b14f87b54c83b24783af4c88b14480af4981ae4b82b04e87b14a86b14e88b24a *86b34e86b04683af4785ae4583ae4580af4283b14a86b25288b44d87b24389b14a8bb14882b148 *83ae4481b04d85b13f7db14784b24784b04c84ad4881ae4e8ab35287b14d83b14d85b14583b248 *85b24b87b34c88b05188b15488b15288b2538ab24f8ab44986b24987b45188b35089b2508bb252 *86b15287b34783ae4d88b34f89b34b89b54c89b44d8bb2528bb2508ab3588eb64e8bb4558cb450 *88b34686b44d8cb14f87b1578db6518cb34c89b5538db74f88b54d88b44f86b34b86b1578db251 *8cb4528cb5528eb8538fb7548ab5518cb7578db44f8db85890b55a8eb6558ab8508db95089b74f *8cb6558db6548eb85b91b75590b65b8eb74e8db7538db75991b9528fb65d93b65e92b65a91b655 *91b75f91b9508db65a90b76193b8508bb6588db55e95b96093b86095b95891b9588db85b92b75b *93b85891b95c95b96094bb6198ba6596bb6998b96697bb6a97bc729cbb729cbe6a9dbd7da3bf75 *a1c06f9dbd709cbd719dbd759ebd6e9bbb6f9ebd77a0be6e9ebe6d9bba6f9abc6a96bb6998bb62 *97b95e95bb5c92ba5b93b86495b96497bd5f92ba6597bb5c96bb6797bd5792b95891b95f92bb60 *97b95e96b85d92b75e97bb5795b95f94bc6097bb6294b95f96ba5e96b95f94b76392b66595ba69 *99bb6d9bbd699dbf78a1be7ea3bf76a2bc779fbe7da0c0729dbe6e9abb6b99bb6c9cbe6f9bbc64 *9bbb699bbb6697b86a9aba6a9cbd6d9cbc739fbe76a1be77a0bf77a1bd76a3bf769dbf76a1be76 *a2bd76a0bd6b9cbd749dbd6ca0c06d9fbd759cbc729cbb6d9cbb6499bb699abd6499bc629bbd65 *98bb5d97ba5d96bb679abd659bbb6299bc6499bc6599bc649abb649abc649abb6796ba6897bb63 *97bc6298bb6799bc6898bd6a9ebf689cbc6b9dbc6198ba6899bb6498bb6098bb649abd6297bc61 *95b96997ba699abd619abd5f98bb6d9abd6199bc6396bc5f95ba6699bb6098bb6298b95f92bb5c *93ba6498bb6292bb6295bb6395ba6497bb6299bb5f96b96398bb5d98ba6799bb6699bc6198ba65 *9abc6498ba669abb689cbc6598ba6199bb6098bc6797bd6597bd6498bc6397b96397bb5f97bb5f *97bb6096bb6198bc6498bb6a99bc6499bd6098bb649abb659bbb6696b76299ba6598bd6498bc63 *98bd6397bb689abc689abd7099bc6298bb6598bb639abd679abe699cc06697bc6297bb6199bc6a *9dbd6997bd6498bb5f99bb6498bd6599bc6499ba6398bb6699bd6a99bc6c9cbb689bbd6c9bbd67 *9abe699bbf5e97bb669abb6899ba6799bc699abd6698bd6998bc6498bd5d96bb6397bb6095bb65 *99bb5e96bd6197b95f9abd5f98bb659abd659bbd6a9bbc619abb6a9dbf6395bd6597bd6398bd65 *99bd6199be6698bb629abd6d9dbb6c9ebd6f9dbc6a9bbd689bbd719abd699bbe649cbd649bba66 *9abc6999bd6797bc6899bc6498bd649bc05d98bc6b9abd6b9bbe709dbd709fbc739bbc75a0be62 *9bbe6a9cc16a9cc26ea4c0659abd699cbd6c99bd6498bd689abc699cba669bbd6ca0bd6b9bbd69 *9ebe6f9dbf6e9abd78a2c36d9dc06c9ac1659bbe6d9abe709fbe75a0be6c9cbd719ec1669dbe6c *9dbf679fc182a7c68eacc791adc691aec695adc79eb1c89ab3ca98adc797b0c8a0b3c8a5b6cbab *baccafbecdb5c0cfb8c3d2b6c4d3bac5d1bac6d3bec6d3c0cad4c1cad5c1c9d4c2c9d6bec9d5bf *c8d4bfc7d5bfc7d6bdc8d5c0c9d3bfc7ccbec9d4bfc7d5bec6d3bbc7d4bcc6d4bdc7d3c0c7d3c0 *c9d5bfc9d4c1c7d5c1c8d6bec7d5bfc7d4c1c9d6c1cad5c0cbd6c3cbd6c4cbd6c5cad6c4cbd6c4 *cbd6c2cbd5c3cbd9c4c9d6c3cbd6c2cad6c6ccd6c3cbd6c7ccd7c1cad6c1cad5c1c9d6c2cad6c6 *ccd8c6ccd8c7ccd7c6cad8c4cbdac4ced8c6ccd9c4ccdac6cdd8c7ced9c7ced7c6cdd8c4cbd7c2 *cbd8c3cad6c1c8d6c1cad6c1cbd8c4cad7c3cad7c2c9d6c1c9d5c1c9d5c1c9d6c3c8d6c2c9d7c2 *cbd7c1cbd7c1cad3c0c8d5c0c8d6bdc9d5bfc6d6bdc7d2bdc8d3bcc7d4bcc8d2bdc9d3bfc8d3c0 *c7d3bdc7d6bfc7d3c1c8d7c3c9d8bec9d8bec9d1bbc7d3b8c2d2b4c1cebac1d2b6c1d1afbed0b0 *bfd1aebecdaebfcfa8bdcfa0b1c9a4b7cbacbdceb2bfd0b6c3d3bbc7d4bdc7d6c1c9d3c1c7d3c2 *c8d5c1c9d6c1c9d5c2c9d5c1cad5c3cbd7bfc4c5c6cfd2cdd6daced9ddd1dbddd0d9dc6993b067 *96b76d97b67296b36b92b05e8fb3648fb3558caf608eb05f90b26b96b67298b67d99b7899fbb85 *9fba84a2bc82a2ba8ca7be8ca4bd89a4bb87a4bd8ca3bd8ca4bd8ea4c090a6bc8da4bb89a4bd85 *a4bc87a3bc82a0b97e9dba6e97b77099b8759bb97098b9719ab96c99b65f8db54e88b14d86b14a *8ab15189b1518bb24a87b14f86b14882ad4d82b04d85ae4986ae518ab15186af4f88b14d86b056 *88b35084b14f87b04a84ae457fb04e82ae4d85b15086af4984ae4a86ae4986b14f84b14b82b14a *86b34b84b04a83b04684ae4a83af4a84b04884b14985b14581af4482ae4c86af4d88b14d87b24a *84b14985b14783b14783b04d87b14982ad4681af5389b24584b14882b14385b14884af4d82af47 *81ae5386b14e89b44886af4780af4b84b24b82b24a85b24084b14083b14484b14a87b24888b04d *83b34c86b14f83ae4e85b14d86b04985b04b87b24887b04686b24c86b24f89b25287b1568bb24a *86b1558db54786b24a87b05188b24682b14a82b14f88b34985b04988b14b8ab44685b34b8ab44d *8ab55087b3528ab4538cb34f89b24c89b4528ab34b86b15b8eb65289b54e8ab44b87b34e89b54f *8ab34a84b1568db8518cb6538ab34c85b3548ab3518cb5538eb64c8db34d8ab44f8db64f87b35c *91b75691b64f8db4508eb94f8ab5568fb6578bb55391b65e94b85a8cb6528cb6548db6508ab45b *8eb6548eb75f93bb588eb75790b7528eb2528eb34d8bb3528db34e8cb45092b65792ba5791b758 *94bb5b8db66194b75b92b75a93b75f95bb6697ba6998bd6a99ba709bbe709dbc699bbc6c9cbc77 *a1bc7fa6bd79a4c17ba3be79a1be769fbd719cbc6f9cbc75a0bd719dbc6d9cbd6a9bbd6697bc63 *94bb6290b86394b85b92b75b95b65d95ba5b93b86297bb4f90b96695b95d94ba5b96b75d97b963 *96b95890b85b95bb6196bb6497bb5892b85e94b66095b95a91b55b95ba6097ba5e95bb5d91b96a *97bb6d9bba739dbd74a1be7ea3bd7aa2bd82a4be7ba3c075a3bf7fa3be749cbc709aba6a9cbc61 *94ba6595b9679abc6c99ba719abc6e9cbd699cbb6b9bbc719fc073a0be79a1bd739fbd7fa5c078 *9ebe73a0c07da1bd6b9fbe679cbd679bbd709fbd759fbe6d9fbe699bbb6c9abc689bbc6696bb6c *9dbc6a99ba6499bb689abd6097bb6095ba6298bb6597b86197ba6296ba6299bb6599bb6299bc61 *98bb5e98bb6398bb5c99ba629abb639abc6498bc689bbb6396ba6a99bc6899bc699bbd6498b964 *98bb5f95bb649abc6799bd6698bd6d9abd719abb5e93b95d95bb5a94bb649abb6595b95c93b960 *97bc5892b96097b95f95b95d93b86997bb6499bc5d96ba6294b85f97ba6596bd6199bb6299ba67 *98bb5d94ba6496ba5a97ba6499ba6092bc6597ba5e98b86097bb5e97ba649aba5d96ba6395ba5d *93ba6199bd6699bc6498ba659abb6d98ba6697bb6098bb6597bb689cbd6999bd619bbb6699bb67 *9abc6398bb6097bb629abb679bbd6b9cbd6098bb6899bb5f99bb659abc6996bb5f96bc6397ba60 *9abc619abd6297bd6297bc6699bb6198bb5f98bb679abb659abd5c97bb6599bb6297ba5e98bb66 *98bb6198bb6095bb6c9ebd699abc5e96bc629abd689cbe669bbb6497b86698bd6098bb5f95bb60 *96bc6495bb6094ba659abd5e96bb6b99bd6496bc649abd6498be699cbd659bbd6497ba6499bb63 *97bd659bbd5f97bd6299bf6299bd6a99bb6296b86298bb619bba619abb629abd6899bd6298bd62 *96bb699abd689cbe6599ba6d9ebd6b9cbf6296bc5c96bc649abd679bbc699cbd5e99bc6399bc66 *9cbd6799bd679cbe699cbe679cbe729fbe729bbd69a0bf6c9fc0649bbd659abd679bbe6199bc6d *97bb6f9ebd699dbe6e9fbe6d9cbe6a9ebf729bbd6f9dbe679bbd6c9dbd609abd6f9ebe6a9abd70 *9dbe6b9cbd6e9dbd6c9ec073a1c17ba5c476a6c384a8c588a9c69cb1c7a2b1c79cb0c89bb3c7a8 *b8cbabbbcdafbccdb4c0cfb9c4d2bbc6d3b9c6d0bbc6d1bbc6d4bdc7d3bec9d6bdc8d3c1c9d3c1 *cbd6c1c8d3c0c7d3bdc8d5bdc8d6c0c9d5bdc7d2c1c7d3bdc9d6bfcbd5bdc7d3bac5d3bdc6d3bd *c6d2bdc7d2bbc7d3c0c8d5bfc9d6c1c9d6c2c6d4bec8d3c1c9d5bfc9d5c1cad6c5cbd6c4ccd7c5 *cdd8c6ccd6c2cad4c2c8d7c1cad5c1c9d4c0cad5c2c9d6c3cbd6c3ccd9c2cbd7c3c9d5c0c9d5c1 *c9d6c4cbd7c6cdd8c3cbd8c3ccd9c3cbdac7ccd7c4cdd8c6ccd6c6cdd7c6ccd8c7cbd8c7ccd8c6 *cbd7c6cbd7c3c9d3c3c9d3c1cbd6c2ccd8c3ccd7c3cad7c3cbd7c3cbd9c3cbd7c3c9d5c1c9d5c2 *cad8c0cad7c1cad8c1cbd8c1c9d7c3c8d6c1c8d5bfc8d3c1c8d4c1c9d3c1c9d5bec9d3becad6c1 *c9d4c1cad5c2cbd3c1cbd3c0cbd6c1cbd8c0c9d5c0c9d6bfc7d5bbc5d2bcc5d3b7c4d0b3c1d0af *bdcfafbccfacbccdaabdcea6b7cca7b9cbabbbceaebdcfb0bcceb7c3cfbbc7d2bdc9d3bfc9d4c1 *cad5c1cad6c2cad5c1c9d4c3cad3c3cad3c5cbd6bfc4c4c7d0d4ced7dcd0d9e0d3dbded3ddde71 *99b67196b5799ab1759bb36696b46190b15e8db25b8eb6658eb5638db66d95b57599b5789cbb80 *9fba859fbc8aa4c189a5bf88a1bb809fb888a2bb8ba3bd8ba4bf88a2bd90a6c08ba4bf8ba4be8d *a3c08aa4bc87a0bb829eba729ab6688fb66b93b77093b76d94b8729abb6f98b65b8cb24f84af48 *82b04d85b04d85b14b83b04d85b15387b14a83b14983af4c84af4c85af5184af4e86af4983b050 *88b24f87ae4e81b05184b14883b14d85b14c81af4e85b15187b1538cb55389b05885b05083b142 *7daa4380af4682b05082ae4180b04983ae4d82b14c7cad4783b0447db04682b04082b04b83b145 *82ae4784b04a81b15086b24d84af4882b04780af4881ae4983b14781af4a84af487db14f85b14a *83b34881af4a85b14882b14985b14984af4d84b14783b04880af4786b34a84b34684b34e84af49 *85b04b8ab14e86b15582b14a84b14882b14785b45188b44d8ab34d8eb6508ab3518db44f87b24c *85b2518ab75088b54f88b24785b14f88b24c88b25188b14d86b44885b1528ab44c89b4528bb54f *89b1588db5588db65386b34c88b45287b35188b35086b0528db54f8db5528cb24e86b24f86b347 *86b3508ab0578cb44f8bb24d8cb5538db65990b75a8db85389b84f86b64f89b45991b64d8ab054 *8eb4588eb74d8db6578ab64f8ab75c8db6558bb34b8cb5528fb85b90b9528db8548eb95e91b85a *8eb55b90b65b94b75890b64d8cb65891b95a92b94e8ab65e91ba5b91b64e8cb5538eb65391b853 *8db55a91b75f92b66594ba6594bb6094b86396bb6196ba6898bb6f9fbd79a0be79a0bf7b9dbd7f *9fbd80a2bd789fbe7a9ebc789ebd7fa3be78a2c0719fbf8ba7c17ca1bd789cbe789abd7399bb65 *95b95f96ba5e96ba5d95bb5b91bb578cb65a93b85592b95b94b95890b85995ba6196bb6196bc63 *92b96091b76194b75f93b86294ba6499bb6197bb5f97bc6194bb6295bb6495ba6092b65e95b960 *98bc6198bb6a9cbd7b9fc07ca3c17ea2bf84a2bd82a3bd80a2bf80a4bf7ea5c27ba0bf749ebc6f *9abd6c97bb6c9bbb729bbc6f9bbb6c99bb6b99bd729cbe6fa0bf729ec073a1bd759fbb78a1be6c *a0bd73a4bd72a2c1749cbd6d9dbe6a9abd709fbc729cbd6e9bbd759bbd6a9aba739cbd6c9abd6a *9abd6699bc6396ba6396bb6999bb6397bb5a94b95d95bb6698bb6898bc669aba6699bc6b9abc64 *96bc6598ba6098bb5d98bd6297bd6297bc6598bc6c9abc6b9abb6899bd6397bb6699bc5f97bc60 *96bc6397bc5894bb649bbc679bbb649abc6498b96799bc6c9bbd6597bd6896bb6797ba5d93b866 *9abb6699bb6598bc6195bb6898bb6597bd6698bb6497b65e92b76c9abb6396ba6097bb5f96bc64 *98bc689bbd6497b86596ba6195ba5d95bb6496ba6192ba5d93b96397bd6298bc6998ba6497bb5e *95b95f96bb6297bc6197bc6298bd679abe6595bc6195b8689bbc6198bc649abd6799bd5f98bb62 *97bc6b9cbe659abb6498bb6597b9699bbc6798be679abb6499bd6f9dbd669dbe6397ba6095bb66 *99bd6098bb6296bd6498bb6097bc5f99bd5e96bc669abd6296bb6499bc6799bc6599bc6798bb5f *9abd6c9dbd6298bd6795bc6693ba6296bb5c95ba639abc6299bd609bbf639bbe5d95bb6196bb66 *97bb6095b95b94bb5f97bc5f98bb6397bc5e97bb6898bb6597bb6897bd6997bb6399bd6499bd61 *96ba699abd6b9abe6b99bc6999bc5c97bb659bc05e99bd6399bc679bbc6098bc6b9bbb6699bb6a *9abb6498bc699bbd5d96bb649abc679bbd719dbe6e9ebd6499bd699abf679ac06398bd6399be61 *98bb719dbd609bc0679bbd6698be689abd5a98bd659bbe659bbf6d9cbf6b9cbd6597bb6c9cbe6a *9abf6d9abe6996bd669bbf6799be6f9cbe6fa1c0639bbd769dbe709bc06499bf649abc6a9abe6c *9dbe6b9cbd6e9dbd6e9ebe6d9cbe6a9abd659abd729cbe79a4c27ca6c398b1c8a5b9cba6b5caa6 *b5c9abbaccaebbcdafbdcdb5c0d0b5c2d1b8c4d3bac6d3bac6d2bbc5d5c0c6d3bdc7d2bfc8d3bf *c7d3bec8d6bfc8d3c1cad7c3c8d6c0c7d3bfc8d5c0c9d3c1c8d5c1c9d7bec7d5bdc7d4c0c7d4bd *c5d5bfc6d4bdc5d2bdc6d2bdc7d5bdc6d5bcc6d3bec7d5c0c8d5c3c9d5c3cad5c3cbd6c1cad7c3 *cbd6c4ccd6c6ced7c6ccd7c6cbd9c5c9d7c3c9d6c1c9d5c2c9d5c3cad6c3c9d7c3c9d7c3c9d7c3 *c9d8c1c9d6c3cad9c3c9d7c4cbd8c2cbd8c2ccd8c3ccd8c6cedbc6cddbc7cedac7cdd8c4ccd8c3 *ccd8c6cbd7c5cbd5c3cbd6c4cad8c4cbd9c5cad8c4cbd7c4cad6c3cbd6c2cbd7c2cad8c3cad8c3 *cad8c3cad7c3cbd7c2cbd7c3cad7c1c9d7c1cad7c2cbd8c2cad8c3cad9c3cbd8c2cbd4c0c8d3be *c9d4c1c9d3c3c9d4c2cad8c4cbd9c3cbd9c3cbd6c1cbd6c2cad8c1cbd5c1c9d6bfc9d6bcc7d4bd *c4d6b8c2d2b4c1d0b0bdceaebccbabbbceaebdcfb2bcd0b1bcceb2bdcfb7c0cfbcc3d3bdc7d2c0 *c8d4c1c9d6c3cad7c1c9d6c2cad6c3cad8c4cbd6c5cbd6bcc3c0c7d0d3ced7dcd0daddd3dbe0d2 *dbdf7b9fb77d9cb681a1bb759bb66690b3598caf598cb0608cb36591b65d8eb46a94b67297b57c *9cbb869dbb86a1bb869fbb8fa7bd8ba2bb89a4bd8ba4bc8ba7bf8ea4bd8ba3be8ea4be8da5c08a *a5c087a4bf8ca3bf8ca4be7e9eba799cbc7797b6749bba739dba729cb7729bba6b98b85e8cb453 *87b05185af4884ae4a85b04d86af4d84b24f84ae4b83b1558ab34d87b14f85ad5287b04b88b24d *85b04985b34885b15088b14d86b15087b35285af5486b15085ae5185ae5085b14d89b25085b04e *86b04f86b14a83ae437fae4681af4783af4984af4a85b04983b14d89b34780b04a83b14b83b047 *80af4d83b04c85b04c85b24783b14b85b25085b04f83b05483b04c84af4882af4d85b14785b34c *87b24f87b54f7faf4983b14c81b04b85b04b87b04982b14d83b14f86b24781b04c87ae3c80ad4c *85b14981b04c83ae4c85b54f8ab54c88b54d86b14e85b24f87b34b86b25087b45088b24b87b34e *88b44d8ab5528eb34987b14985b14d84b15089b64d87b34d88b55a8eb8548bb45989b15589b250 *8bb44c8cb6528db65286b34f8ab35287b5508ab55089b04d87b14d8db75289b4538ab64d87b357 *8eb54d8bb5508fb6598cb6558bb55a90b5528ab5528eb84f8ab3558eb85289b6518bb6518ab557 *8cb5518cb5548cb6598fb75290b85b8fb8508cb75086b34e8cb2538fb64d8bb55b8eb75990b759 *91b95c91ba508cb5518eb45d91b65a91b55993b85690b55a91b75491b65d91b96091b8538cb65e *91b85890b75991b75990b65e92b95d95bb6694bb6998bb759dbc7fa4bc78a0be7ca3bf7da4c275 *a0bf7d9ec183a1c17ea2c083a4c082a4c07aa3bf7ba0be789fbf7aa1bf73a0bf719dbf709cbe72 *9bbc679abb6b99bb6296ba5b92bb588fb75f94ba6197bb5c96b96094b85b92b85b91b85c93ba60 *96bc5c95b95e92b86193ba6291b36394b86697bc6197bb5d95b86197b86196b96399bb6f9abb65 *97bb6796bb6f9cbd7ba3bf7ca2c17fa4c281a5c182a5c288a4c08ba4c286a5c083a4bf80a5bf82 *a6c17aa2bf71a0bd779ebd79a0be749fba719bba679abb6f9cbd75a1bf71a0c074a1bf79a4bd69 *9bbe749dbc76a1c079a2c0719dbe6e9cbd6c9cbe77a1be79a3bd75a0bd6f9cbe6e9ebb679bbd6f *9cbe729ebf709ebe6898bb6d9abc689bba6498bb6596bb5f96bb6698bc6397ba6999bb6697bc63 *9abb6798bc6599bb679abd6197bc6498bd6498bc6599bc6297bb669abb6295ba6898bc6597bb6b *97bc6496bb699bbb6599bc6a9bbd6b9bbe6897bc6897bb6395bc6498bb5f95bc5d96bb5f96bb67 *99ba659abd6498bd6493bd6396ba6096b96496bb6a9bbc699bbd6a99bb709dbd6499bb6099bb64 *98bb6599bc6a9cbb6697bb5e95b95f97bb6295ba6094bb6197bb6498bc6498bb6a98bc5d96bb65 *97bc6798bb6698bb679abb6699ba6198bc6297bb6499bc5f98bc6299ba659cbb729abb6097bb67 *98ba6499bb6598bd699bbd669abc6b9cbe679abe6999bd649bbb629abb6499bd6598bc6599bc67 *99bd669bbe659abd6598bb6598bb6693ba6097bb6599bc679abd6199bb659abd689abd669abd65 *99bd6699bc6497bb699bbd6999be6398bd649cbd669abc6199bc6499bd6998bb5d95ba5c95ba61 *9abd6298bd6399bb6096bb6799bb6697bb6b97bd6093bb6898bd669cbd6b9bbc6f9cbd6799bc67 *97bc659abe6696bb659abd679bbe649bbc6a9ec0679cc06c9cbc6d9abd629bbc6c99bc6a99be66 *9abf699abd6299bb6899bd6a9bbd6799bc6d9bbd6d9cbf709bbd6b9dbe699bbe6599bd6c9bbf6d *9cbb699cbd679abc679bbd6d9cc1739fc1679fc16c9bbd6f9abd739bc06e9fbf699bbd6999bc67 *9abe6f9dbf6b9bbf699cbe6c9bbe6296bb649bbf6c9dbe689cbe649bbd679ebf679cbe659ebe6a *9bbd6d9cbf6a9abd6f9abc759ec06a99bd6b9dc06e9dc06e9ebe71a1be7da3c09ab0c8acbccbae *bccdabbaceadbbcdaebcceb0bfceb6c1cfbac3d1bac3d1bbc6d1bdc7d5bcc7d6bec9d5c0c9d5be *c7d4c3c9d5bdc9d6bfc7d3c1c9d6c1cbd6c0cad4c1c9d3bfc7d3c0c7d5bec7d3bdc7d2bdc8d3bc *c7d2bec7d6bdc6d4bdc7d6bec7d3bfc7d2c1c8d4bcc7d3bfc7d4c1cad6c3cad5c2cbd8c5cad7c4 *cad5c6cbd6c5ccd7c7ced8c3ccd8c3c9d8c4c9d8c2c9d8c3cad6c4cad6c7cbd7c4ccd7c3ccd8c1 *cbd7c5c9d6c3cbd9c4ccdac6ccd8c7cbd8c6ccd9c6ccd8c7cddac6cfdac6ccdbc6d0dbc9cfd9ca *ced7c8ced8c9cdd8c6cdd6c6ccd8c3ccd8c4ccdac7cedac8ccdac8ccdac6ced8c4cbd7c5cbd9c4 *cbd8c4cad8c3cad7c3ccd8c4ccd7c3cad8c3c9d7c4c9d8c3cbd8c3cbd6c5cbd7c3cbd9c3cbd9c1 *cadac3cbd5c3c9d4c1c9d5c3cad6c3cbd6c3cdd8c6cdd7c4ccd8c4ccdac2ccd8c2c9d5c1cad6bf *c7d7bdc7d3bbc5d3b9c3d2b6c1d0aec0ceb0beccb3c1d1b2c3d1b1c0cfb8c1d1bcc4d1bdc6d4bc *c7d6c2c9d4c4cbd4c4c9d7c2cbd7c2cad6c3cbd7c5cbd6c7cbd6c3c8c9cad2d5d0d7ddcfdbdfd2 *dbe0d3dce1809fbb799db9729dba7b9bb97596b66591b46592b3538db45b8fb66290b56393b66f *99b87d9fbb87a4bb86a3bc87a2be87a3bd84a4bf87a3bd8aa4be88a4bc8daac191a7c08aa7c090 *a7c188a4c286a0bd83a2be7fa2be7fa1bc7aa1bc7ea3be7ba2bd799dbb729bb9739cba6390b64c *87b4528bb25289b24985b0528ab34e85b44d89b5568bb45086b34b85b14e8ab64384b25389b252 *88b24f88b1568cb44a85b24d89b44e8ab44e87b24f87b15288b0528ab14d82b14e86b14b85b14f *85b24983b14b86b24b87b14685b1427eae4981b2437fb04782b14e85b1437fb04886b24985b054 *8caa4a84b04780af4983b14983b14883b14a85af4c87b14984b04f88b34281b14886b44b84b149 *84b34786b14d86b34886b44587b54e89b34e8ab44e86b0427dae4d7faf4c87b24885b14888b24b *89b34c85b34781b44583b24884b24f87b14785b04a86b24b86b34a8ab74d89b34a86b24c85b248 *86b14e89b4508cb6548bb84a8bb64886b14788b4518cb25289b44a87b1528bb54a89b54b8ab54b *8bb54b89b4528db8538ab44c86b14c8ab24a86b35d8db94f8ab64486b2498db74c8ab5508cb448 *86b14987b44a89b6588fb85792b84e8db9508cb5588eb7558eb8528ab6538ab35190b6518fb754 *8cb8538eb54e8db55290b84f8cb6578eb7508fb75790b84a8bb6508db65590b64f90b65b92ba54 *8fb7578eb65c92b95c90b85690b85191ba5890ba5790b6528db65691b65390b95891b95b93bb59 *94b95191b95991ba6196bc5a92b95b96b95891b86097bb6498bc789dc17ca2c084a1bf88a4c281 *a6c07ea4c0799fbf79a1c07ea6c281a7c37fa4c278a3c07ba2be7ca2c072a1be72a0bd7ba2be72 *9ebc779fc16d9abb6899bb5f95ba5992b75b92b75e96ba5f95bb6095bb5b96bb6197bc6596bb5c *95b95c92b95c95bb6596bc5c96bb5f96bd6396bd6095ba6596b85e9bbd6099bc5895b95e93ba60 *95b9679abc769ec0739fbf7ca6c180a6c17ea4c185a8c684a5c287a8c58baac686a8c386a7c083 *a7c381a7c481a3c27aa1c077a2bf7ba3c17ba1c175a1bf749cbc729bbe6b9dbe6b9bbd739ebf66 *9bbd739dbe6ca1c073a3be78a3c176a1be749ec072a0c079a0c0759fc072a0be72a0c178a3bd79 *a1be709dbd6e9cc1709ebd6e9cbc639cbd649bbe6699bb6099bb5f99b96199bb6798bb649abd62 *98bc659abe659bc1709ebe689cbc699bba649bbc6296bd6799bc699bbf6598bd6498bd6197bb62 *98bc679bbc6098bd6098ba659bbd6398bc6499bd6499bd6898bb699abb6798bc6395b75b95bd5a *94bd6097bb6497bc669abd6498bc679bbd6198bd5a93bb5c93bd6397bb6498bb6097ba5f98bb6a *9dbb5c99bb6098bc6396bb5f96b96699bb6998bc659abd6a9bbd5a96ba6193b96094bc6096bb66 *98bb5f97bb5b95bb639abc619bbd6198bc6099bd6299be6999bd5e98bb659abd6098bb699cbd66 *9abb5b99bb629abd6296bd6497bc6199bd6698bd6398ba6099bd649abd649ebf5f98bd629cbd62 *9dbd6f9ebf679bc0649abd6499be699dbe6399bc639bbd6196bd659abc6498be629bbd649bbe61 *9abc6a9bbe6799be649abd6099bd6298be639abf6899bc6497bd6999bd6f9bbd649abd6397bd5e *98bb6097bd5f99bd6997bb649bbf619bbe639ebe6396bb6296bc6498bd5e97bc6096bd6099bc62 *99c16a9ebe649bbf6a9cbe6d9cbf6699bf5c9cbd65a0c1649abd6c9cc1679cbf649bbd6099bd63 *98bb5e99bd6499bb649abd669ebf6a9bc06699bf659abd669bbe6b9ec0639abd689ec06a9ec169 *9fc16ea0c0679dbe6d9dbe6a9fbe649fbe6f9dbe649cbf6d9ec1629cc16d9fc1699cbf639abd6a *9cbf679cbd6aa0c15f99be669abf699dc36c9dbf6a9fbf689cc06c9ec16a9dc16a9cbe6699be6b *9fc068a1c1659cbe679bbd679cbd699cbd739fc06a9cbf639abe669cbc6b9abe6d9bbd80a6c595 *b1c8acbdd1adbeceaabdd0abbccfaec1d2b0c1d2b1c2d2b7c3d3b9c6d3bbc6d2bcc8d7bfc8d6c1 *c9d4c1c9d7c1c9d6c1c9d7c1c9d5c1cbd7c0c9d6c0cad3c1c9d4bcc7d4bdc9d6bdc7d6bdc7d1bd *c7d2bdc6d4bdc9d6bdc8d5bdc7d5bbc7d6bdc7d6bbc7d3bbc8d4bdc8d5c1c8d5c1c8d5c1cad6c2 *cbd7c1cad9c6ccdac5ced8c6ced8c3cdd8c0c9d9c2cad7c1cbd7c2ccd8c1ccd8c1ccd9c3cad8c6 *ccd7c5cbd7c3cbd7c3cbd7c3cbd9c6cbdbc2cbdbc6ccdbc7cfdac7cddac6cfdbc5cedac6cddbc7 *cedbc4ced9c7cfdac8cedbc9ced9c5ccd8c4ccd8c4cbd9c5cedac5ccdac6cddbc5ccdac5ccd8c6 *ccd9c3ccdac2cad8c5ccdac3ccd9c3ccdac2cbd9c3cbd8c1ccd9c5ccd8c3cbd7c2cbd8c4ccd9c2 *cbd9c2cad8c3cbd9c1cbd7c1cbd8c3ccd8c5cad9c6cddbc5ccd8c4cddbc5cedbc6ccdbc5cddbc3 *cbd7c1cbd8bec8d6bdc7d5bbc7d5b5c6d4b3c2d2b3c1d1bbc6d1b9c7d2b7c3d1bac4d3bbc7d3bb *c7d6bbc6d6bec8d7c1cad7c4cbd8c3ccd8c0c9d5c2cbd8c3cbd6c5ccd7c1c8c7cad3d7cfd9ded1 *dbe0d3dde1d2dce18a9fb9869eb6809db6789ab26c96b1698ead6a95b15c8dae6691b1688eb36c *91b26f95b57599b67d9aba86a1bc87a1bb86a2bb8da3bb8da4bb86a3bc8ea6be81a2bb86a2bb84 *a3bd89a4ba86a2b9819eb67f9db87a9dba809ebb819ebb7b9dbc779cb8789cba739ab76a94b755 *88b25286b05288b05587af5a8cb2588bb2528bb45088b25485b14e85b15489b04f85ae4d85ac4f *85af5386af5b84af5383af5482ad5886b15283ad5185b05280ad5989b14f86b24b80b14d82b150 *85ac4d84ae4e82ac4d83ae5185b14981ae437fad4d84ae4580b04a82ad4d83af4b85ae4580ac46 *83ae4682af4b81af4c80b04980ae5284af4581ad4983ae4882af4681ae4881af4d86b15084ae4d *84ae487faa4481ac5087b24684b14681b1437bae4981ae4e86b14881ad437dae4882ae4b82af4b *85b14f84b04d84ae4881b04d85b34a80af4d84af4c84ae4e84b05185b14f85b15285b14d85b34f *87b04884ae4c86af4e84b15b8bb24e85af5086b04e86b14b83b24d84b04f87b24d85b04c86af4d *86b14e85b05089b15389b45287b24b8aaf4b86b15886b0528db44f87b04d89b1528ab54b87b150 *89b5528bb05a8db15e8bb65987b15086b15589b44f87b5528ab4518cb4578db15f8bb35389b14d *88b1538bb34d86b24f8bb65991b8558eb56092b3578cb4508bb25189b1598cb24f8ab25088b15b *8db55e91b66391b5598eb45a8db4528bb25189b7528cb65f93b55b92b75892b35e91b66193b65a *8fb85d91b75c92b85991b85c91bb5a94b76393b66492b76495b86b95b9709cbb81a4be85a4c086 *a4bf85a6be83a0bb8aa5c281a4c082a4bf87a6c182a4bf81a4bf7ba2be82a4c086a1be81a2bc83 *a1bd7d9dbd759ebb6f9bba6b97ba6997b95e91b75d8fb45e8db5588eb35c92b65c94b75f94ba5d *94ba5d93b75c92b8588eb6578fb65f95b65b96b85d92b65f97b96398b86598bb6296b96893b864 *92b76997b96a9abb759dbd6fa2c07ea3bd83a8c181a4c186a4bf84a4c185a6c187a7c084a9c38b *abc589a9c389a7c38ba6c384a4bf7fa3c081a5c07fa2bf7ca1be769dbc739bbb729cbb6f99bb6c *9abc79a0bd789ebd7ba2bf7aa1bd73a1bc7ca3bf78a3bf7ea1c07aa4bf7ba1be80a4c17aa2c17b *a2bd7aa2be7fa4be799fbd6f9bbd6a98bb6696bb6498bb6699bb6498ba6b9aba649ab96699ba64 *97b86598bb6a98ba6697ba6898ba699aba689bbb6599bb6796bb6799bc6297bc6a9abb669bbb66 *99ba6097ba699abb6595ba6094ba6a97ba6396ba6295bb6697bd6698ba6499bb6397b76498bc6a *97b95c96ba6597bb689abc6595ba6798bb6498bb6598ba6b97ba6799ba5e96ba6394b76698ba62 *93bb6097ba6298bc6798b96295ba6693b75d94b86095b86897bb6398bb6397b96697b86498ba64 *95ba6694b86297bb6494ba6895ba6397ba6596ba6298bd6799bd6699bc5e94b96498ba5d98ba5f *97b96497ba649abd6b9fba6899ba6296bb6497ba6795bb6096b9639bbc6a9cbe6598bb6699bd62 *97bc6a9abc6b9aba6297ba699aba6598bc6798bb699abd6999bf6195bb6797bb6496b96d9abb66 *9dbb5f99bb679abd6398bc6296bc6b98bb6597ba6198ba6098ba6b97bb679abc6398bc6799bd5f *97bd6197bb6598b96298bb6297ba6498bb5f95b86496bd6598bc6d9bbd6598bc6898bb6095b764 *98bc6296bb6397bd5d97bb6097bb6c9bbd6499ba6199bb6298bc6096bb6698bc6c9abb6699bc67 *99bc5f97ba689abb6b9bbc6c9abc6999bc6f9ebe6798bc6798be6698bd679abb6697bb689cbb60 *98bc679cbc6e9cbe659bbd699abc6ca0bd6ea0bd689cbe6699bb6e9cbd6b9bbc6a9cbd699bbd61 *98bf699abd6599bb6a9cbd689abb699cbc6a98bc6f9dbc6c9cbe649bbe689bbd699cbd6297bb6f *9bbc6d9bbb689dbe669dbf6d9cbd6e9dbe6b9fbd6c9abc6999bb6c99bb709fbc699cbd729bbd72 *9fbf89a6c2a5b8caaebdcdadbccdacbbcbabbbccacbacdaabbceb3becfb7c2d1bbc4d0bcc6d1bd *c8d3bfc7d1c1c7d3bfc9d3c0c9d7c2cad4c5ccd6c6cbd3c4cad4c1c9d3c0c7d1bec5d3bdc4d2bf *c7d1bdc7d3bdc8d1bdc7d4bbc5cfbdc7d3bdc5d2bdc6d2bec6d2bdc7d4bec7d4c0c9d3c2c9d2c2 *c9d5c3c8d3c2c9d6c5cad6c6cdd7c7cdd7c5ccd6c6cbd7c3c9d5c7c9d4c3cad4c3cbd7c3cbd6c3 *cad8c6ccd8c9cdd8c7ccd7c7cbd6c5cbd5c6cad7c3c9d6c4c9d6c6cdd7c8d0d7c7ced8c9ced8c9 *cdd8c9cbd7c8ced6c8ccd8c7d0d8c9ced8c5ccd7c6cbd8c6cbd7c7cbd8c6cbd7c5cbd8c2cad6c1 *cbd7c2cbd6c2cbd7c5cbd8c4c9d4c7cbd4c3cbd5c1c8d4bfc7d6c1c9d6c3c9d5c5cad4c6cbd5c5 *cad7c4cad6c1cad5c1c9d3bec9d4bec7d3c1c9d3c4ccd7c7ced8c7ced8c7cdd7c7cdd7c6ced7c6 *cedac6ccd6c6ccd7c4ccd6c1c9d5bdc7d3bdc7d2bdc5d2bfc6d2bec5d1c0c7d3bec6d3c1c7d1be *c6d2bdc6d2bdc5d1bfc6d3bfc9d5c2c8d5c3cbd6c4cbd4c5ccd7c7cbd6c6cbd5bfc2becad0d4d1 *d7dcd2dbded4dde0d4dee0809fbb789fbc7a9db67b9eb76c99b3618cb0608dae6592b35d8fb660 *90b66690b6779cb8759bb7789eba81a3bb8aa3bc8aa5bc85a3bf8aa4bd8ba5be8ba6bd87a4bb80 *a2ba7ea2bc85a0bb829dbb789cbb739bbb7799ba759eba739db9749bba6b97b77399bb7099bb6a *95b75f8fb65089b1548ab15189b25289b3568ab15186b04d86b14986b15185b25488b15089b152 *8bb15585b05387b15485af4d86b24f8ab34581b15387b14a82af5286b0568ab35c8db54c84af55 *8bb34d89b44f8bb14889b15084b14d85b14782b14981ae4481ae4e8bb14987b1467fae4786af4b *82ae457fae4882b14c83b04782b14785b24985b44381b14d85b14483b0427eae4d86b04484b149 *84af4b86b34680b14585b04784b14281b04880af4985b14882b14785b44b85b14785b14486b148 *81b14d84b34c7eb04d84b24c88b54884b14683b14886b1478ab44a87b14984b04a82b14f84b34a *86b34784af4885b15289b0528cb54d8bb3568ab55189b2588db6508bb54f8bb55a8eb5528db551 *8ab4518ab54f8ab5538eb54d86b44d86b54a8ab24b8bb64d8ab44788b54e86b14d8cb65389b353 *85b45688b1538fb44f8fb54a8eb25787b5538cb3538cb74f85b3578ab35391b84f8eb65291b845 *8ab3518cb55e8fb7528fb6568cb8518db7578eb65491b75591b84b8db6508db7558db65088b54e *88b44f8eb74d8eb95393b75592b6568eb65f90b75593b75790b95b91bb578fb64f8fb8548eb75a *91ba5e91bb5a94bb5a92ba5391b85896bb5f97bb5f97bd5e94bb5d96bb6497ba759dbd7a9ebf8a *a7c387a4c186a6c287a8c387a9c188a8c383a5c086a7bf8ba8c188a5c083a3bf84a4c182a5c179 *a4c07aa2c07ca0bd6f9dbe779cbd7498bb5c94b85995b95a92b85992b75591ba5593b86496bb5d *96bb6197ba6599bb5795b85a95b65997bb5a94ba6698bc6498bb5d94b86599ba5d96bb5f95bd61 *96ba6697bd6898bc6c9abb739dbd6e9cbd79a4bf81a6c287a8c383a6c084a5c288a6c18ba8c483 *a5c185a8c385a9c389a9c48aaac28ba8c284a7c284a5bf81a5c0769dbd739fbe6d9ec06b9bbd70 *9bbc78a1bf81a4bf7aa2be80a5c077a4c07ba7c080a4c37aa4c37da4c27ca7c181a4c181a5c183 *a6c07ca4c17aa2c379a4c474a0c16a9bbf6b9ec1649abb689cbb6399ba6a99bb6898bb6199bd62 *97bb639cbc6499bc619abb6699bc6c9bbe6a9bbc689bbd669abd679bbe649bbf6398bb6899bc63 *99bd649abb679abd6199bd6498bd649bc05f9cc05c94ba6398be619bbf6695bb6798bb6499bc63 *95bb5c98bc5d96bc6497b96096b95c97bb6295ba5c97ba5f97bb6399bb6199be679abe6293b76a *9bbb6097bb619abd6398bc6797ba5f97bc5d96bb6297bc5f98bb5b97ba6598bd5d97bb6298ba5a *95bb5f95b76499bd6699bc699abc6098bb669abc6699bd6298bd679bbf659abf5c97bd649bbd64 *9dbc659cbb689cbd6e9bbc6599bc6295bb6498bd629abe6c9abc5f97ba6599bc6499bd669cbe64 *9bbd6497bd5f99bd639dbe659abe649bbe679dbe689abd6f9dbc669dbc609abc639abc639bbd60 *9abc689dbd6a9abd6197bc6d9bbe669bbd6b9cc0619ac06b9cbd639abd659abc689bbc6899bc67 *9cbc699cbe649bbd5f99bb5593ba5d95b9679abd6196bb679bbe6e9dbd6a9fbe689cbf5d97bd5f *99bd6499bd5f99bd669ac16799bc6d9fbf649abd6399bf629cbe669dbf5d97bb699cbd689abd67 *9dbe6f9fbf669dbd609bbf659cbe6ba0be6e9cbf679dbf699abd6c99bd689cc1679bbe659abd63 *9bbd6ba0c16a9dc1689dbe669bbe689bbe6d9fc1659bc1649cbf6c9fc0729fbe6a9dc16a9bbe6b *9cbf6a9bbf6c9dc2679dc16a9bbe69a1bf669bbf5e94bd669bbf6c9fc36b9cbe6c9cbe6a9dbf69 *9fbe6ca0bd729ebe6b9abd709abf6b9bbf6e9cbe679bbd649cbe70a2c06da0c0699abc719dbe73 *9ebe73a2c080a8c595b0c8a7bacbaabdcda8bbcdaabccea9b9cdaab6ccaebdd1b3c2d2b7c5d2ba *c5d3bbc7d4bfc8d3bfc8d6c1c9d3c1c8d6c1c9d6c5ccd8c5ccd7c1ccd8c3ced8c2cad4c0c8d5c1 *c7d6bfc9d5c0c8d4bcc7d4bdc8d5bdc7d6bbc7d4bdc7d4bdc6d2bdc7d3c1c9d6bdc7d4bfc7d3c0 *c9d6c1cbd7c2cbd7c0cad6c3ccd7c6ccd7c6ccd7c2cdd7c3ccdbc4cbd9c6cdd9c3ccd8c3ccd6c4 *cbd8c4ced8c8ccd8c8cdd9c8cedbc7cfdbc7d0dbc7ced9c7ccd8c7cad8c7cbd8c9ced8c8cfdcc8 *d1ddc9d2dbc6ceddcaced8c8cfd8c8cfdbc9cedac9ced9c6ccd6c7cddac4cfdbc6cddbc5cad9c3 *c9d8c2c9d9c1c9d6c2cbd7c3ccd8c3ccd9c3ccdbc3cbd8c1c9d6c0cad8c0c9d8c1cbd6c3ccd8c2 *ccd8c3ccd9c5cddac1cbd6c1cad5bdc9d3bfc7d3c2cad7c7cedac8cedbc7cfdbc7d0dcc9cfdaca *cfdac9d1dbc9d0d6c6cedac6cedbc1cbd8c1cbd8c2c9d6c1c8d3bfc9d7c3ccd7c1cbd8c4cbd8c4 *cbd8c1c9d7bdc8d6bcc7d3bcc6d2c1c8d4c2cad7c2cbd8c1c9d7c4cbd7c6cedbc6cdd9c2c8c6cb *d3d6d0daddd1dde0d4dee1d4dde286a2bc789dbb739cba7196b6658db46592b56590b26791b369 *8fb4638db65e8fb66892b86f97bb769cba7e9dbc89a1bb89a3bb89a3bd86a3be7d9ebd809ebb7f *9ebe819ebb79a0be819ebd7a9dbb7098b9739abc7298bc7097bb6e94bc6b94ba6492b96e99bb71 *98b8668fb75385b15487b15b89b35686b35286b15187b14f84b05181af4a80b14681b34c83b157 *8ab25083b14f85b14c87b54b86b15186b24c81b34882b64b81b34e81ae5184af5687b35287b152 *87b25684b24e81b14b85b24c81b14f86b04381b24d86b34e83b24e85b24c83b24b82b14e86b14a *84b44783b24785b44884b24b85b24884b14b82b1437fb14a83b14b83b34981b04780b34b86b049 *84b2538bb24880b2477fb34986b3427fb0467fb04d87b04e85b74b86b24782b34b7fb04884b142 *81b14f87b34781b14984b24c86b14e87b34b87b34c86b24885b54882b34e85b14b86b24b86b350 *86b44882b24e84b34c85b24580b35087b54d85b64d88b4538cb5568cb54f8cb6568ab75089b650 *89b94e87b55288b6518ab8508db74c88b64d84b45886b54f86b64c86b94886b74c87b6538eba53 *8db7528ab8588cb55189b6548ab7558bb65d8bb7518cb85189b5528cb7568bb7528ab9608cb451 *8ab4508dba4d8ab7558cb94e8bb5538fb95691b7598fb8578ab7568bb95289b7598fba578cb951 *8eb7588fb75c90b75f8fba578db74b8bb9518ab76194bb5790bb5b8dbb518ab8588eb8598eb858 *91b9598eba5b8fbb6091bb5b91bb5b92ba5d93b85991bb6294ba6496bd5f95bc6898bd7998bf84 *a1c081a4bf8aa7c088a8c28ba7c78aa8c687a8c587a7c587a5c580a3c08aa7c182a5c183a3c184 *a4c184a4c1799fbe6f9cbe7a9ec0759dbd739cbd6696bc6193bb6294bb5f95bb5990b95290bc5f *95b96196b85f95bb6798bf5c94bb6293bc6093bd6397ba6097c16497bd6898bd6598bd5f95ba60 *94bb6098bd6499be6999bd6a9abf6a98bb769fc086a7c289aac682a6c687a6c580a4c186a7c586 *a6c584a6c581a4c386a5c387a6c28ba9c387a7c584a6c583a6c685a5c4769fc06e9abb749dbd76 *9ebf7fa1c178a1c178a3c584a6c57da2c187a5c280a4c379a4c383a5c487a6c678a4c37ea6c38c *a9c88daac686a8c685a5c581a4c57ea4c2749cbf6e9dbe6d9cbf6c9cbe669abd6c9bbd6f9dbf67 *9bbb6998bb6396bc699abe6698be6a9ac06399bd659abd6899bd6799bd6a99bd699cc15f96bd66 *98be6a99be679cbd649abd6199be6296bd719dbf6b99be6397bd5e95bc689bbd6397bb699abd66 *99bf709bbd6998c06197bd5a94bb5f95bb6296bc5a90bb5792bc5f95bd6094bb6296bc6496bc62 *96bc6398bd6498bc6899bd5f96bb6c99bc6898bb6594ba6495bc5e97bb5a93bb6095bd6297bd5e *96bb6799bd6496bb6597be5d94bd5f95bd699abf619abc6699bd6099be659bbe6c99c0689cbd65 *97bb6096bb6599bd669abd699bbd639abb6c9abe6b97be6898bf6096bd6c9dc06e9cbe6c9fbd6b *9fbf609cbd6597bb6897bf6599bd689cbe689abc6b9bc06498bd669ac16799be6c9abf6698be67 *9abf679bc26898bd6898bc6699bc6199be669abd6b97c06997bd6499bd679abe6a9bbe5d96bc64 *98be6198bd6a98be6997be6495be6a9bbd6398bd6198bf6195bb6499bd659abb6a98bd6997bb5c *96be6499bf6198bd6198bc6397bd6b99bd6399bf669ac16499c06598be6898c16a9bbd6c9dc16a *9ec06b9bc1639bc26d97bd6b9abd6298bc6599be6199bd659abf679abc699ebd6b9ec26a9dbf66 *98c16b9dc06698c16799c2669bbf6aa0c0679dbe6599c16699c25c95c1739dc26a9cc16f9bc175 *a0c26d9ebd75a0c1709ec16a9bbe689ac36f9cbf6d9cbe669cc0689cbe6a9ac06599bf659ac269 *9cc16c9dc36d9dc16fa0c26b9bc2719dc26b9ec3649abe6e9dc0699ac16c9cc26c9dc275a3c36f *a0c271a2c06fa0c06e9ec17ba2c695afcb9eb5cc9db5cea7b6cca4b8d0a4b6ccaabbd0b1bfcfb9 *c1d1b6c1d2b7c3d4bbc5d6bec8d8bbc8d6c1c9d6c1cad6c3cbd7c6cbd8c4ccd7c1cad8c1cad7c0 *c9d8bfc8d8c1c8d5c1c9d4bfc7d4c1c7d3bfc7d6bdc6d6bcc6d6bbc7d8bdc7d3bdc7d4bdc8d4be *c7d3bfc7d5bdc8d7c3c9d8c4cad9c6cbdac6ccd9c6ccd8c4cdd9c7ccdbc5cbdbc5cbdbc5ccd8c6 *cdd8c9cddac8ced8c8d0dbc7d0d8c9d0dbc7d0dbc8ccdbc7ccdcc8ccddc7cedbc7ced9cad1dcc8 *d0dbcbcfddc9d1ddc9cedcc8ccdbc7cddac9cfdcc8d0d8c9cedbcacedbc7ccdbc9cedcc6ccdcc5 *ccdbc4cbd9c3cbd7c3ccdac3cbd9c1c9d9c2cbd9c3cbd9bfc9dac0c9dac1c9d8bdc8d8bfc9d9c2 *cad9c1c9d8c2cad7c0c9d9bdc8d8bdc7d9bdc8d5c1c8d5c6ccdac9cedbc8d0dbcbcfdcc8d0ddc7 *d0dccbd1ddcbd0ddcbd1dccad1dcc9ced8c7ccd8c4cbdac2cbdac3cbdac6ccdac7ced9c6ccd8c1 *cbd8c1c9d8bbc8d8bcc7d4bac6d3bdc8d6c1c7d6c3c9d8c4cbd8c3ccd8c5ccd7c4ced9c6cddac1 *c7cacbd3d9d1d9dfd3dce2d5dee2d5dde281a0b8759fb7759fb66d99b46693b36593b65f8daf69 *97b4568faf5c8faf5e90b46c90b36893b47599b67a9cb986a1bc87a4bc85a1bb7da0bb7ea1b67c *a0b87aa0ba809db6799cb97b9cb97598b76e98b66796b76b98b86998b66694b75e8fb36792b668 *90b56290b55c90b25a8db1548eb1588db15486ac5385ad5182af5386b04d87ae4987b14684ad50 *86af4c86ad578ab15187b25787b4588bb6528cb54f8bb14c87af4c88b04e84ad5384ae5487af54 *88b25286af558bb2538ab24b87ae4382ac4781ab4b84b04e85b14a83ad4681ad4681ae4080b052 *89b04986b14b83b04882af4a82b14a86b14d89b04383ad4e88b04785af4a82ae4781b04782ad54 *86ad4987b14986b14882af4c88b34f89b14885b34785af4684ae4d86b15186ae4382af4683b14d *86b14487b14485b04785af4987b04f86b14b85b04c88b14a84b14e8ab04a88ae4d8bb14886b251 *8ab15389b14887b04686b04a88b14486ae4686b24f8bb2538db45389b3508bb35b90b75a90b556 *90b55d90b56193b5508bb14f8cb2548db4528cb14f8bb24c8ab14e8fb14889b34987b35791b657 *91b6598cb9598db6538eb85d92b85b94b6518bb1528db14f87b65088b65a8cb5538db75c90b450 *8db35790b35290b55b8db4538eb4508cb6568eb55592b75991b25690b35a91b55d95b55891b75b *92b75d92b86193b85c90b75c91b35994b75895b75b92b8568fb45a93b8588fb65b92b85f92bb59 *92b75a92b65b95b75692b85a95b95a95b85f95b85c94b96a98b9679bbb6c9dbb6c9cbb6c9db970 *9dbb81a2be87a7c290a8c68fa9c391abc389aac28aa9c186a5bd85a5bf87a6c184a8c285a4c086 *a7c07fa4be7fa4be7ea4bc78a0bc76a1be759cbc6898bb6296b95c94b65e95b85d94b95d93b859 *95b65d96b75f96b96095ba6395b85c95ba6499b85f96ba6596bb6698bb6098bb6a99bb699abc64 *98ba6298ba5f98bb6199ba629abb6c9cbb6c9dbb75a4c089aac68da9c185a7bf87a8c185a8c084 *a8c188a6c187a7c385a6c28ba8c28ba8c387a9c388a8c284a8c183a9c279a5c071a2c176a4c17e *a4c07fa4be7ea4be7ea5be7ea8c181aac182a7c185a6c183a6c27fa4c184a8c389a5c28cabc087 *acc589aac48eafc590aec68caac68ea9c17ea5bf73a3bd6f9ebd6b9dbd6f9ebf659abc759ebe74 *9fbe659dba689cbb6c9cbb639bba6d9fbc6e9cbd6f9dbe6c9ebd6a9dbd6a9cbc6ea1bd6ca0bd6f *a0bc739fbd6b9ebc6f9cbd6f9ebd6f9dbd609bbb639abc6c9cbe6397bb689dbc699bbc6498bd64 *98bd689abb659bbb5f99bb5d9aba5f97b85f98b96598bd6496bb679abb5d97b96099b95f99ba63 *9bbb629bbb6999ba6598bb5f97ba6898bb6096b96398ba639bba6199ba639ab86597bb5d96b964 *98bc6b99bb6595ba6398bb6399bc629bba699ebb659abd6399bd6599bd699abd649abc6a9bbb5e *9bbb609bba6aa0bc6aa0be6a9fbd729cc06097bd659dbd699cbc669fbb699cbb659bba6e9cba62 *9abb679dbe669bbf629abc699eba659dbb619bbc699fbd6c9abe6999be6a9abe6299bc609abc6b *9ebc639ebc699fbb689bbc6f9abe689bbd699dbb699ebd669abb649cbc619cbc699dbe6599bd65 *98bd659abc6599ba689dbc619abc629bbc689dbd6098bd6899bc6d9bbd699abd659abd5e99bb6a *99bd6aa0bc659fbd6d9cbd5d97bd6398bb6098bb639abb679abf689cbf679bbb6e9cbd6d9bbd6b *9cbb6d9bbb669cbd6f9dbd699dbe609abb659dbd629ebc619abb679cbd699dbd669bbe6a9ebf6a *9ebd70a1bf69a0bd6a9fbc669cbc6ca0bf679ebd669dbe74a2bd6da1bf6da3c270a3bf6c9ec06d *9fbd6da0bd6fa1be6ca1c178a3bf66a0be6aa1bd68a1bd6fa1bf75a1bf6a9bbe74a0be609bbe69 *9dbd689ebb689dbd74a1be779ebd72a2c16e9dbe6c9ec06ea0c174a3be6ca3c072a3bf76a4c178 *a4c278a1bf7aa4c06ca0bf749fc078a5c17ea5c17fa6c588a9c7a1b3cba6b9cca7bbceabbbceb1 *c1ceaec1ccadbeceb1c1d0b8c3d0b9c7d3bbc6d6bdc9d4bfcad5c3ced7c5cdd6c5cdd6c3ccd5c1 *ccd3c0c7d2c0c8d6bfc9d3bdc7d3bec7d3bfc7d4bdc7d3bdc9d2bdc7d2bbc7d4bcc7d4bbc6d3be *c8d6bfc9d4c1c8d3bfc9d3c3ccd5c2cbd6c2cdd9c7ced9c7cdd8c7ced9c6cdd8c7cdd8c6ced9c8 *d0d8c7cfd8c9cfdac7cfdac9d0d9c9d1dbcad1d9c9d1d8c8d1dac9d2dbc9d0dacbd1dbc9cfdcca *d1ddcad1dbcad1d8cbd3d8cbd2d8cad0d8cbd2dcc9d0dbcbd1dbccd1dbc9d2d9c8d0d8c8cfd8c8 *cfd8c8cfdbc8cddac5ccd9c3ccd8c3cbd6c1ccd7c1cbd5c1cbd5c3c9d5bfc9d6bfcad6bfcad6c1 *cad8c2cad6bfcbd5bec9d4bec9d3bfc9d5c2cad7c3cdd5c5ccd4c7d0d9cbd1d9c7d1dbccd3dacc *d2dccbd3dbcad3dbcbd2ddcbd6dbc9d3dcc9cfdbc7ced8c4ccd8c3ced6c4ced8c6ced9c6ced7c3 *ccd8c2cbd8bac7d5bcc7d3bac8d3b7c6d2bdc7d1c0c9d6c4cbd6c6cdd7c7cdd8c3ced7c5ced8c6 *ced6c2c7c2cbd9d7d2dcdfd6dde2d8dfe4d8e0e180a0bb7e9ebc789bb77197b46794b66091b461 *90b5608fb35b8cb15e8ab26990b56c8fb46a92b7769db67d9fbb7d9eba85a2bb85a0bb7e9bbc85 *9dbc7698ba7a9dbb6f9cbc7a9eba7299b96390b65e89b6608db3648cb66a8fb8678fb75887b459 *8bb64e8ab0558ab15285ae5584b15382b24982b24e84b24c84b34a83ae4683b04880b1487eaf4d *83b24d83b14f88b25384b55489b2578cb55288b15588b35083b15687b65783b15083b25385b14f *87b15087b0437eaf5084b14f83b2477fb04f82b14980b44b85b14880b1437fae4b83b04c7fb14f *83b15386b24e84b24d83b44883b24783b24a83b14382b1457fb04f82b3437bb04e85b44c84b349 *83af5286b34c86b44f8ab54b84b44b83b34e82b64e80b34b85b34985b34c85b14c86b15485b451 *84b34e85b14d84b24881b14d85b64c83b44d85b14e85b34d8ab45185b34d84b14c84b54781b345 *83b44f84b54887b35088b3508ab24886b44d87b34d87b44f88b85c90b65c8fb4578fb76391ba63 *91b9548cb6518ab75289b74d8ab7578eb75389b34f88b55088b55889b65288b94986b84b89b354 *8cb8528db35a88b65a8fb94f86b74f8cb95990b65490b95889b6588abb558bb65188b3578db754 *90b65d8eb85b8eb9598dbb588eb75c8cb95b8cb8518cb9568dbb5e91ba5890b7588fb86090ba5a *90ba588eba5c8eb95d91b95990b95d90b9548fb76091b95e93bc5a91b95d8eba5d90bb5b91bb5f *93b75a94b76194bb6795bd5d91ba6494bd6295bb6296ba6595bb6796bd6d9abd719cbd769dbf7d *9fc29ab5c781a5c486a5c184a6c48fa9c18ca5c391a5c688a7c68ba6c381a5c383a5c481a4bf7f *a3bf77a0c17ca0c280a2c1789cbe739abe6c9abe6998bd6496bc5c93bb5c96b95b92b95f92bc65 *93bc5e93bb5d91bc6192bc5a8fba6097bc6798be6394bd6497bb6595bb6796bb6c97bc6c98bd64 *96bd6198bc6799bc6298bb6a99bd7499bd719ebd78a1c17fa5c388aac586aac587a4c18ca7c58c *a5c588a5c589a7c681a4c384a7c385a7c389aac48da9c690a8c48ea8c388a9c483a4c380a4c37f *a4c17ea5c180a4c180a4c585a5c585a7c683a5c57ea5c380a5c285aac47ea9c28aaac392aac692 *a9c692aac794aeca93afc68eaec791aec788a7c685a6c582a2c180a2c3769dc26f9cbc75a2bf71 *9ec175a0bf79a2bf749bbd7099be6499bd6999bf6d9cc0629bbf679abd669dbd679abd719dc46f *9ec0709ec1709dbf6c99c16d9ac06a9cbf6ca0be659abd679abe6a96bb689abf669ac36698be62 *99bd679abc6499bc689bbd6296ba6c98bd6898bb6294bc5a93bc5d94bd6096bb6598be6496bb63 *97bb6096bc6696bc6c96bd5e96bb5f99bd659bbb6199bb6098bb689abc6e98be6397bc6296bd62 *98bd649bbd5b99ba6597ba6398bc6995bd6997bd6897bf6c9abf6a9cbe679bbd679bbd689bbd66 *99be719abf6497be649ac1639abf6299bf6499bc5e9abd6698be699bbe639abe6b9cbd6e9ec166 *9abe689fbe669dbc5f99bf6a9cbd6f9dc06699bd6398bf699ec3699dbe639abc6b9ebc669cbd65 *99bf6599bd6e9bc16d9ac26b9ac1659dbf5f9bbc619abe5f99be6c99bf6b9bc06999be6298bf69 *9abf659bbf689cbc6a9bbe6499bf6698c16a9abe5f96bb5b95bd659abf6a9abe6397bd6399bf63 *98bd6999bd6b9cc36397be6098c1679abe6398bf619abd679bbe679bbd679dc16c9ac16e9abe67 *9bc0679bbe6799c0649cbf689bc06098be6c9bbf6b9bc16d9cc16899c26b9ec36ea2c1689fc165 *9ac16b9ec36a9ec26d9ac1689cc2739fc269a1c169a0bf699dbe6f9fc16e9cc36c9dc36a9cc460 *9bc26a9bc36ca1c16e9fbe6d9cc36a9ec1709cc26d9ec2699fc26fa1c368a0c3659cc1789fc26c *9ec16c9ec16a9dc1729fc0739cc36fa0c26e9ec16d9cc0729ec36d9cc26b9fc26ca2c26e9dc16c *a0c372a0c36c9ec0699cc074a1c273a1c185a6c675a1c1769fc184a6c792afca9eb4cba4b5cea5 *b7cda6b7cdaab9d1a9b9cdadbbd1b1bfd3b5c2d5bcc6d3bdc9d6c0c9d5c3cad7c1cad8c5cbd6c6 *ccd7c2cbd7c1c7d8c0c9d7bfc7d3bfc7d4bdc7d4bdc6d4c0c6d5bbc6d4bbc4d4bcc6d6bdc7d5bc *c7d6bdc7d4bcc8d6c1c8d6c0c9d8c3cad9c6cadbc3cbdbc6ced9c8cedbc8ced9c7cedcc8cfdaca *cedcc9d0dbcad0dbc9d0dac9d1dbcad2dacbd1dccbd0ddcbd1ddcbcedecbd0ddcaceddc9cfdec9 *d1ddc9d2dccbd1dccacfddccd1ddccd1ddccd0dacacfddcad1dccad1ddccd1dbcad2dbc9d1dccb *cfdbcad1dbc8cedcc7cddac7ccdac5ccdbc4cddbc5cddbc6cdd8c6ccd9c6cbd8c1c9d8bfc9dabb *c8d8c0c9d6c1c9d8c0c9d8bfc9d8c3cad9c3cad8c3cbd9c4ced8c6cedbc8cfddc9d2dcced5ddce *d2ddcdd3decfd2dcced6deccd5decbd3ddcbd3dccbd1dbcbd1ddc9cedcc8ccd9c6ccdac3cadbc3 *cbdbbccad8b7c6d8b5c3d5bac3d3bbc3d6bcc5d6bdc6d6c2c9d9c3cad8c4ccdbc6ccdac5cdd8c9 *cfdbcbcfdac4c8c7cdd6dbd2dce0d4dfe3d7e0e5d8e1e485a4bb88a2b67fa0b56f9bb5779eb664 *90ae6593b16091ae648eaf5c8dae5c91b06a94ae7599b6709bb6749ab67ea1ba82a0b97d9db87e *9db7709ab36d98b46a95b66f98b66e9bb76a99b76490b45a8eb2568fb26091b36191b35b8eb457 *8bb45686b04f88b14b87b04c89b04986ae5188b15286af4c83b05189b15187ae4b87b0508ab24a *89b15087b24d8ab1568db35189b24f87b15d8cb54e8bb04d8ab1548bb25387b0508aae568ab14b *85b04c85b04a86b04982af4d87b14f85b04e89af4984af5086af4e87b14482ac4f84b04886b04a *83b05286b05189b2518ab14485af4b88b14d86b04581ae4d87b14e88b15087b24785af4f88b04b *88b14885af4583b04283af508bb2528ab14b88b24b89b15189b15387b04884af528ab4508bb24c *87af4c89b34884ae4681ae4d88b24585ae4c86b14785b04b88b34685b44b86b14989b35189b048 *86ae508ab14d85b24e8cb34889b24f8eb5528eb1538ab2518bb45a91b5558db55e92b66092b658 *8eb55991b65d94b6568fb5528eb35393b5548eb85192b5508cb8528db35b8fb65290b45c91b657 *93b54d8ab24d8bb55c90b7548fb55891b9538db5528eb4588fb35992b1528cb15a94b9568eb952 *8fb65b95ba5b8fb75790b66095b75592b65890b3578fb65791b85991b75c92b95c94b65b95b662 *96b85594b95190b75c93b85091b95894bb5c93ba5b90b65d93b65b95b85c96b86a98bb5391b864 *99bb6093b96297bb6296b66796b95d92b55e97b96599bb5f96bc6499bb6d99ba75a4be7ca4bd7b *a1bd7ca4bf81a4c081a7c48ba9c386a8c285a7c190aac38ba7c087a7bf86a5bf7fa4bd81a4c180 *a4c17fa3c079a3bf6fa0be6d9dbb729ebd679cbd6a9abc6296ba5e97ba5e97bc5b95b85e97b95c *94b75894b85e97bb6697bb6898bb5a96ba669bbd6498ba689bbb6199bb6599bb689bbb679dbd6d *9cbd729fbd689bbd73a0bd789fbd79a0bd75a4bf7ca5c079a4bf80a7c388a9c386aac48baac38d *aac591aac48faac190acc681a8c388a7c284a8c487a9c391acc58caac48aabc391aec48babc488 *a9c484a8c680a6c57da3bf89a8c285a9c286a9c38caac188aac38ca9c585abc48daac690adc78e *b0c684abc390aec692b0c693aec78eaec693afc690aac689aac585a6c17ea4be73a5c178a3bf76 *a3c178a4c178a2bf76a1be6d9dbd6599bb699fbd6e9fbd74a1bf6a9ec071a0c06b9fbf6a9ebe6f *9ebe70a2c06ca0bf6b9dbe699ebd6a9dbd739fbe669dc0649ebc669abc6599bc639bbb72a1bd68 *9ebd6299bb679cbc679fbc5f99bb609abc619abb6b9bbb679bbb6a9fbd6199bd5895bc6299bc68 *99bd5f9abd6d9cbb609ab86a9ebb6097bb6399bb6198bb6297bb659abb6898bc6298ba6199b963 *99b9669abc6399ba699bbd6597bb6399bd679cbb649abd689cbd629ebe639ebf679bbf659bbe69 *9bbc669bbc649cbc659bbb699dbd669dbf719dc06f9bbe659fbc669dbc669bbc689bbb649dbb6b *a2be6b9dbe649abc679dbb649cc05c9cbe5c99bd6b9dbd6a9bbd6ea1be76a0bf6f9cbf679abc63 *9cbc6f9dbf679abd699bbd6b9ebd6fa1c26a9fbe6d9ebe649bbd6a9ebe679cbd6a9dbe679cbc64 *9cbd629dbd649bbf659abd669bbe609abc699bc1659ebc689ebe659cbd659cbd619cbe669cbe60 *97bc5f99bd689cbd70a1bd679ebb5f98ba6499bc5b99be649cbf669bbd6aa0c172a0c05f97bb5d *9abb5f99bd6499bd679dbd669bbd6b9ec2669abe679abd649bbd6ca0be669ebf6ba0c26ca0c16c *9fc165a0bf71a3c16fa0bf689cbf6da0bf679cc0679dbf73a2bf6ea0c16da4c471a3c26ca1c071 *a4c168a0bf6b9dbc70a0bf76a0be6d9fbe6ca2c16ca0bf78a3c26ea0be62a0bf6fa2c16aa0c16c *a4c36aa3c36aa1c36fa3c26ca2c174a3c36da1be679cbd7aa3c16fa1c06da2c1699fc072a4c276 *a1bf75a3c075a2be709fbd78a3c26ba1c06da1c179a5c46fa3c076a4c278a4c380a4c191aec69b *b1c9a4b8cd9fb6cb9ab2ca9ab1c99fb6c9aebfcdb3c5d2b9c7d3bdc9d6bfcad6c0cad8c3ccd8c3 *cbd7c3ccd4c2ced6c2ccd3c3cbd6bfcad6bec8d6bcc6d3bec7d3bdc7d2bec8d3bdc7d2bac6d2ba *c6d3bbc7d6bdc8d5bdc9d5bec9d3becbd5c0c9d7c3cbd6c3ccd9c4cfdac7cfdbc8d1dccad1dbca *d1d8c8d1dac8d1d9c8d1dbcbd1dccad2dcccd3ddcbd3dbcbd3dbc9d3dbcad3dbcad3dccbd3dccc *d3ddc9d2dcc9d2dbc9d1dbcbd1dcc9d4dbcbd3dbccd3dbccd3dcccd3dbcbd4dcccd2ddccd3dccc *d2dbcbd3dbcbd2dbcbd3dbcbd3dccad2dcc9d1dccad1dbc9d1dac9d2dac8cfd9c4cdd8c3ced8c4 *cdd8c2cbd6c2cdd8c3cbd8c2cbd8c1cbd6c3cbd8c3ccd6c7cfdbc7d0d8c9d0dbccd2ddccd5dece *d6ddced6ddced6dccfd8dccfd8decdd7ddccd7deccd5decdd4dec8d0dacad3dbc8d3d9c3ced9bc *cad5bbc9d6bac7d6aec1d3a7bdd1aabecdb0bed0b6c3d1bfc8d4c4ccd6c2cbd8c2cddbc4cdd8c5 *cdd7c7d0d9cad1d9c2c7c4cedadbd3dfe1d6e1e4d8e2e4d8e1e48ea7be85a4bc7da0ba7a9eb777 *96b66693b36c92b46992b3658db15f90b16692b26695b06994b57999b77599b774a0ba7c9fb976 *9cb86d98b3709bbb6a91b36c99b66b91b66e92b86591b5598bb35c8fb55a8bb45b8db2568bb454 *8ab3548ab25488b34d89ae538ab25487b35989ae5789b2558ab25488b05387b05287b05186b25a *8bb4598db5508bb55389b35b8cb5538cb15289b45386b4548bb3518ab15389b15087b35086b247 *84ae4e85b04f87af5089b14885af4d84b15187af4d84ae4c84ae4282ae4a84af5189b54c86b159 *8cb45187b14d86b25785b05285b04a85b14b89b64c89b64d84b14d88b14f88b04d88b14c86b04e *85b15085b14884b14987b14c85b24581b04281b04d85b04f86b15188b44c87b14c84b14c84b34b *84b14986b0558ab34f8bb44686b14c82b14887b44885b44b87b14e89b14e87b14382b04789b04a *84b04b87b14b86b25189b55789b34b85b15089b2528bb4598cb4548cb55b8db86295ba5d93b962 *96ba5f94ba6095ba6093b55d90b8598eb5548bb6518dbb4f8cb84f8ab4598bb5558eb5588fb653 *8eb75d90b8648eb95790b8528eb76596bb588cb46492b65c91b46092b85c91b85f93bb5c8dba5d *90b85792b75b96b96494b96392ba5492bb5f92bb568bb75a8eb86296ba6395ba5e94b96093ba5c *95b65e96b95491b95c95bc5c95bb6194ba5f94b85e94b76697b8649bbc649abe5e95bc5f96bb60 *93bd6599bb5993b66b98bb6596bb6598bb5995bb6796bb6697be5f93bb6092b96a9abc6f9fbe80 *a4c179a4bf7aa2c181a4c47da5c485a7c387a5c18baac58baac683a7c184a6c280a4c16f9ec17e *a3c1769fbe749fbf79a1bf749ebd7ba1bf749cbc6b99bd6797bd6295ba5e94ba5c93b95b92b961 *96bb6698bb6397bc5893bc6799be6a99bd6a9abd749ebe699bbd709ebd6f9dbc709ebf6b9cbe6b *9ebe6ea0bf769fbe709cbd79a2c078a2c17da3c079a4c283a6c583a8c788aac787a8c38da9c48f *a9c590acc795afc88eadc98eacc888a9c684a6c48baac688abc692b0c694acc691acc595adc88c *aac688a7c487a8c284a8c388a8c289abc691adc791abc491abc791abc889abc78daac693aec78a *adc897b1c999aec894afc8b1bdd1a2b8c79db6c995b1c792aec88cacc58baac68daac381a8c584 *a6c377a4c177a4c176a4c379a2c178a2c27aa4c17ca3c174a0c079a3c375a3c271a1c06da0bf6e *a0bf71a0c072a2c075a0c0749ec16aa0be659fbf71a0c1729fc06ba0bf689dc072a0c16aa0c06a *9ec16799bf699bbe6498bd6a9abd689fc0679abc669bbd6b9dbd6297bd699bc0699bbc6298bb5d *97bb5e95bb679dbf659abc6a9abb6999bd6698bb6798bb5e97bc669bbb6198bc669abd5c97bc65 *98bc6d9abc6398bc679bbd6b9cbd689bbb6297bd6098bd629bbe629cbb679ebe6c9fc16e9fc069 *9dc06c9bbe6b9ec0649bbd6397bd649bc068a1c16d9cc16ea1bf699fbd699ec16ca0c36ba1c16f *a0bf6a9ebf709fc36d9ebf679ebe6d9fc3709fc16c9fbf74a2c173a1c168a0c26b9cc3669fbd67 *9dc1669cc1659abd6c9ec0699abd629abc689ec1699dc26c9fc26a9dc1659abd659bbe679abe71 *a1c3699ec2659ebf649cc1679dc06a9dc0699cbd709fc1699dbe6f9ebe679bbd6099bd629bbd5f *99bd669bbd6e9fc06398bd6ba1c1699abd699dc06198bd669ebe5f99bd6d9dbe659abd6da0be6c *9dbf6d9ebf649abd639bbd689bc06a9cbd6499bd6a9dbf73a0bd6d9ebe729ebe689ec06ba0c168 *9bc0659dc16ca2c16b9fc1689ec172a0c076a2c36b9ec267a0c177a3c379a5c372a4c16aa1c173 *a4c377a4c370a2c372a1c36a9fc46ba3c2699ebf6ca2c36da1c079a2c172a1c374a3c56ea2c36c *a2c46fa2c26f9fc472a2c16fa1c274a2c175a0c170a4c277a2c471a4c46ea1c2669dbf77a3c377 *a3c36ca4c374a6c36c9ec378a3c5699dc470a1c173a0c06fa1c378a1c07ea5c480a9c779a4c583 *a9c780a8c69cb4cc98b3c98aaac585a9c597b0c8acbbceb4c1cfb6c6d3bbc7d3bdc7d3bfcad7c3 *cbd8c5ced8c5ced8c2cbd6c2ccdac1ccd8c1c9d6c1c8d6bcc7d3bfc7d3bdc8d5bec7d6bcc6d6bb *c5d5bbc6d6bbc7d3bac5d3bec9d5c1cbd7c1ccd8c2ccd7c3cbdbc6cbdbc6cedcc7d1d8cad1d9ca *d2ddcbd2ddccd3dcc9d2ddcbd2ddccd3ddccd4ddcbd3dccdd2ddccd4ddced4dccdd3ddced5ddcc *d3dfcbd3dfc9d3decad3dbcbd3ddccd3ddccd3deccd4dbcbd1dbc9d3ddcbd2dcccd5ddcbd3ddcc *d4ddccd6ddccd5ddcdd4ddcdd3deccd5e0ced4dfccd4ddccd4ddcdd5ddccd4ddcad3ddc8d2dcc8 *cfddc8cedec8cedcc7cedac5ccdac3ccdac3ced9c4cedac4ccdac3ceddc9d2dbccd1ddccd4ded0 *d7dfd0d8ded1dae1d1d8e2ced6e1cfd7e2cfd8e2ced7dfced6decfd4ddcad5ddcbd5dec8d1dcbd *c9dab3c4d4abbed1b1c2d2aac0d1a1b8ceabbfd0b2c1d1bdc7d6bdc8d8bfc8d6c1cad7c3ccdac4 *cddac5cfdcc9d2dbccd3dbc4c8c4d1d9dcd8dde3d7e2e6dbe3e6dae3e58aa4be84a4bf7ca0bc77 *9bbb7499b67095b1678fb0588cae5c90af6491b55c8fb36091b35c90b56a8fb06c92b3739cb66d *96b56c93b46697b66796b66c97b77399b36c94b66592b55388b0548aaf5089b04d8ab14f88b257 *88b25789b35082b04e89af5189af4f88af4a86af528ab15a8cb35389b15787b15b8ab25085b252 *86b35089b34f8ab3508ab4538cb14f87b25389b4588db45188af4d85b15387b25a8db45990b657 *8eb34d85b14c87b14c86b14e89b25186b04884af4c86b14b89b24982b14683b04c83b24d84b34d *85b24f86b14881b04f89b34c89b24887b34582b15187b34d88b14b84af4c87b04c8ab34c88b34a *85b14182b24782b14c83b14d86b04e87b14b87b24c87b44c89b54385b14684b14a86b24884b247 *81b14b86b14e89b24c89b44786b24e87b24982af4b84b1528ab44986b35089b2538ab54f8db648 *85b3558ab34783b14885b24e87b1568eb55189b34e8ab54f8fb7508eb7558fba5691b96297bb66 *96ba6e99bc6895bc5b90b7528db6518fb6518db4518fb74d8db65991b9558fb84d8db6528ab64e *8db55894b94d8cb6578eb8568eb6598dbb548cb7598eb66497bb5f92b85691b75b91b9548fb761 *94ba6095bb6494b96393bb6094bb5393b75f92bb508db95992ba5a91b95c91b95c96b95b92b855 *90b95b95bc5790ba5791bb5692b95b96ba5a96b95e94bb5e97bc5c94ba5e97bc6898bd6499bd66 *97bd5d92bb6198ba6396b95d95bb6297bc6299bf5e96bd5f96bd6095bb5f95bb6596b96e9abe70 *9fbd749fbe79a1c47aa0be779ebd80a5c181a4c184a3c187a5c181a4c385a8c680a6c27da3c079 *a3bf7ea3c0769dbd6e9abf6f9dbe6ea1c168a1bf6a9dbe6a97bd6297bc5e96ba5c93bb6598bb5d *95bc5c97bc5c97bd5d96bc5e97bd6197bc6f97bd6496bb769ec16f9dc0719ec2719fc06d9ec36c *a0c174a2c274a3c176a1bc749ec073a2c270a2c070a3c182a6c68aaac589a9c58daac78facc694 *aec98bacc792acc992adc98baac78aaac782a9c586aac68eabc68dadc892aec991afc990acc88e *acc68baac48faac78babc68aadc889abc786aac88aabc88caac88faec895b1ca93aec997b0c895 *afc898b1c996b1cb96b0cb97b1c99cb1caa4bacc9db5c994afc797adc791acc88babc989aac782 *a7c384a7c483a9c678a4c47ea5c676a3c376a2c27da4c57ca4c376a2c273a3c27ba4c273a2c272 *a2c2689fc16d9fc36ca2c4699ec071a1c16ca0c072a1c26c9fc1719dc070a0c2689dc165a0c26e *a1c2719ec15f99bd669abd689dc0689cbd689bbf609bbf629bbe649cbf649bbd649abe6098bb5b *99bb6498bd659cbe629abd659bbd5f97bc6297bc5c96ba689cbc6798bc5f96bd6297bd6199bd5d *9abf5d98bc649bbd6698bd649abc699cbe6299bd6099ba5f9abd639bbf649bbe659cbf629cc060 *9abe619bbf699ec2639bc16c9dc3639cc1669cc16399bd6aa2c16b9fc0689bbe6699c06d9dc165 *9bc1699dc0659cbe6a9fc16d9fc06c9dc16a9fc4659ac1629ec3659bbe6aa1bf76a2c46fa1c362 *9ac2639cc36d9fc4669cc0689cc0699fc06ca3c2649cc0679cc26b9bc3689fc3659ec2649ec162 *9cc16ba1c3679cc3669cc1639ac2659cc4639bc0679abf619abd609abd609abf649bc26699c26e *9fc16a9dc15f97bd699cbe659cbe679fc070a1c36b9cc0659abe719fc1649ac1699bc2659cc165 *a1c1639ebe689ec16c9ac1679ac1699fc16c9fc1669ec1659cc16ea1c16ba3c1699dc06d9fc26a *9dc270a0c36ea1c46ca0c36da0c266a1c172a3c4709fc36c9bc3689fc26da2c56da1c66ca0c36e *a3c66aa3c46ba4c6689ec66ba2c475a3c66ba3c36ea3c469a0c36fa2c46ba4c478a5c66ea2c46a *a1c368a3c5649fc375a4c676a4c66da2c474a5c575a4c573a4c66ca1c370a0c4669dc16a9dc477 *a3c368a1c56fa1c36da3c56ba2c370a5c66ca4c578a4c379a3c36ea0c16fa4c474a7c672a4c671 *9ec376a2c476a4c38baeca9ab3cb97b3cb82a5c785a8c79eb6cea2bad0b0c3d3bcc6d6b9c6d3bb *c7d6bdcbd6c1ced9c2ced9c6cdd9c3ccd8c6ced8c6ced8c3c9d8bdc9d8bac8d7bcc9d8bcc8d6bc *c7d5bbc6d6bac5d4bbc5d3bbc7d4bcc7d6bdc9d8bfccdbc3cbdac4ccdac5cddac6d0dcc9d1ddca *d1ddcad2e0cad3e1cad5dfcbd2dfcad3dfcdd4deccd4deccd4e1cdd3dfcdd4e0ced6e0ced5e1cc *d6e0cdd6e0cdd6decbd5decdd4decbd4deccd4dfcbd5dfcbd4decbd2ddcad3deccd3dfccd4dfce *d5decdd3e0ccd5e1cbd6e1ccd6e2cdd4e0ccd5dfced5dfced5e0ced6dfcdd6e1ccd6e0cbd5dfca *d4dfcad4dfcad3dec9d2ddc9d2ddc9ceddc4ccddc0ccdcc3ccdcc1ccddc4ceddc8d0decdd4dfcf *d7e0cfd6dfd0d8e0cfd9e1cfd9e4cfd8e2d1d9e2d0d9e2d2dae1d0d8e1cdd6dfc8d2dec6cfddc3 *ceddbeccdbaec5d5acc0d2a9bed1aac1d1a4b9d1aabed3b2c2d7bcc9d9bfcad8c0cbd9c1cbd9c3 *cddbc3cedbc7d1dec9d3ddcbd3ddc2c8c8d0dcded8e2e3d9e4e7dce4e7dbe4e78ba5be80a4bd6f *9eba729bbb789dbb7096b76c92b35f8eb1608caf5d8fb36d92b66692b8628eb6698bb36894b65a *93b66493b36891b56694b66a94b76c92b6678db65c8cb35e8fb4558cb2568cb34f89b2558bb14f *83af5789b35289b1578bb3568ab25789b1568db3578ab15086b1568bb5558ab4558bb6568bb35a *8ab4578bb3588cb25b8db45f8ab25f8db6598bb6548db75f8bb45086b0638eb45f92b65c8bb163 *8db75787b45387b55488b15089b34a85b14a83af5288b14f84b24985b14a85b45186b44c83b14b *85b05589b15589b1508ab35185b1568ab65186b35489b45185b14b84b05387b14d85b14e89b348 *84b34b85b54b86b44e86b15d90b5538bb24e8ab24989b44c89b64f85b44b84b45386b64f85b351 *8bb35287b3528bb1588bb55086b55486b35084b55085b24885b54b87b65288b1548bb54d8ab74a *84b15089b54d86b44e85b44785b34c8bb6568cb45088b1548ab4608fb65e91b96394bd669ac066 *95bc6094b76a9abd6b9bbc5d95bb548ab65b8dba5e91b9528ab85691ba5e93bb5a91b75b90b860 *8fba528db95390bb578dba598db95f92b95f94ba5f92b55d93bb6192bc6393bb5692ba5791bb5f *95bc6593bc6695bb6197bc609abd6a97bc5c95bd5e91bb5c91bc5c92ba5f95bb6298bc6297bc65 *98bd6195bb5d93bd5a8fbc5892bc5b92ba5e94bb6196ba5b95bb5c92bb6397bd5c96bd6698bd66 *97be6498c06497bb6298bb6098bb6796bb6896bd6796bf6594bd6695bb6593bb6d98bc6c9bbe6d *9cbd6b9cbe749ec27ba1c183a4c380a6c37da4c185a7c586a4c186a4c084a6c480a6c382a6c579 *a3c380a3c180a4c271a2c0739fbd699abc75a0bf729ec16e9cbe6499c16698bd6a99bd6499bd64 *99bd6698bd6499bd6696bc6196be6293c06698bd6a9bbe70a1c078a3c371a1c0709fc1719ec16f *9ebe6e9dc076a2c180a4c47fa5c579a4c47ca5c57ea5c584a8c687a8c78cabc990adc995b1c996 *b0c892afc995adc793aec894acca8daac68fa9c887a5c584a8c590acc694afc998aec992acc892 *aec991acc792acc78cabc88cabc88aadca8badc88cacc890acc995aeca98b0c999b0ca96b1c99b *b6cc9ab4cb9eb5cb9ab1cc9bb2ca9fb3c9a2b3cca2b5cb9eb2cb9eb3cc98b0cb94afc991acc88c *aac78cacc985a8c684a8c682a7c77da4c185a4c180a4c37da6c683a9c782a4c67ca4c57ea4c37f *a4c479a1c377a3c578a3c57ea8c673a3c778a3c575a2c377a3c479a4c574a3c572a3c469a0c36f *9dc36ea0c3679ec16c9ec2669bbf699ec076a0c1699bbe6a9ec06c9bbe709cbe6c99c1679ac06c *9bbf699abe669cbe6899bd669dc16a9bbf6a9bc1719bbf6697be6a99bb659bbc629bbd6899bd62 *99bc6c9cc06a99bf6598bf6799c06098bb679ebd669bbf669dc0699abf6598bd6f9ec06c9cc264 *9ec16ea3c36ba1c36ba0c16ca1c36a9fc2739ec16aa1c473a0c66fa3c3749dc3699cc26a9fc172 *a1c3689dbe71a1c369a1c3649ac3719fc36fa1c472a3c2709fc16c9ec3699dc3719fc6719fc66c *a1c3729fc4719ec3699ec16e9fc3719fc36b9bc470a0c675a0c672a1c36b9fc472a3c371a3c56a *9fc26a99c1669ec3659bc36e9ec4679ec26ca0c2649dc1659ec3689abf699cc16aa0c36897c370 *9fc36a9ec37da5c76b9fc16aa0c1659abe6499bf6b9ac3719cc36c9bc1659bc1689bbf6499c172 *9dc2659ac16ca0c26799c1729cc2659abd719ec16c9fc2659cc1649bbf70a0c3649bc26e9dc26d *9dc26ea2c266a0c1709fc174a1c3679ec36ea2c36ca1c56ca0c573a4c679a4c577a4c471a1c571 *a2c175a4c672a3c779a6c96ca2c676a3c674a2c66da2c577a6c778a6c66ca1c56aa1c66ea3c66c *a1c675a4c677a4c675a1c579a6c772a3c66fa0c476a4c76ca1c67aa3c66fa1c575a2c577a3c576 *a4c573a4c670a3c672a3c773a3c670a2c674a3c672a3c474a3c377a6c676a3c57da2c671a3c675 *a4c672a2c278a0c275a2c27fa9c681a9c688abc885a8c780a5c693b0cb9cb2cbaabbd1bbc7d6bc *c9d6bdcad8bcc9d7c1cbdbc3cedbc6cedbc7cedbc7cedbc6cddac0cbd8becbd7bbc6d6bdc6d6bf *c6d8bbc7d8bcc7d7bbc6d5bcc6d6bec6d5bcc7d8bdc8d7c2cbd9c6cddac7cddbc8d0ddc9d2decb *d2ddcad3decbd4e1cdd3e0cfd4e2ced5e2ced6e0cfd5e2ced6dfcfd6e0d1d6e0d2d6e2ced6dfd1 *d6e1d3d8e3d1d6e2d1d7e3d1d8e0d1d8dfd0d6e1ced5e2d0d6e0cfd5e0ced6e0cfd6e2d0d5e3d3 *d9e3d1d7e2cfd7e1ced5e2d0d8e2cfd7e3d1d6e3d1d4e2d1d5e0d1d6e1d1d8e2d1d8e2d1d8e2d1 *d7e4d0d6e1cfd6e1cdd6e1cdd3dfcad3e1c8d2dec4cdddc1ccddc2cbddc4ccddc5ceddced3dfce *d5e0d1d8e2d0d7e5d1d8e3d3dae2d3dae3d3dbe4d3dce5d2dbe3d1dbe2cfd8e2ccd8e1c8d3dfc2 *ceddc2ccdac4cedbb3c7d9b1c3d6aabdd3a4bbd2abbcd5b6c3d6bbc7d7c1cadac5ccdbc7cdddc7 *cedcc6cfdec8cfddc7d2ddc9d2ddccd2ddc7ced0d2dee0d9e3e7dbe5e7dde5e9dde5e989a2c084 *a0c179a2bd78a2bf6599b7729db86594b65d91b65d8db76291b46692b66197b66095b66098b665 *97b45f92b3588bb36390b66c98bb6a90b76b95b75690b6558eb35387b25089b25b8eb4578ab355 *8eb4528db55691b45c90b2548bb25c8fb25889b35a8db45c8eb55c8fb55f91b5588fb56994b96a *97ba6791b95b8db65d8eb66795ba5b91b75f8fb56491b66991b67095b66a96b86995b76695b86a *91b56095b6588db55d8db6608db5558bb3568db3548cb54e88b24c86b64f8ab6558ab5588cb64c *86b25087b4588cb6528bb3538eb7518fb7538db4548cb65489b45c92b6528bb2538bb3588db74f *8bb6538bb64f89b44d8ab64f8bb5538bb55b8cb6578cb74e8cb84c8cb94b8bb5528cb65089b557 *91b64f8bb4548db75389b6568bb74b87b55791b84c87b4578cb64e8ab55890b75c91bb5e91bb53 *8bb6518db74f8fb9508cb45090b65391ba5a90b75992bb5890b65a92b86395bc5794bb5e97bc63 *98bc6097ba6c9cbc6495ba6496bb5b96bc659abe6296bd5892bc5c93bb5693bb6296bd6695bc69 *96be6197be699abd6295be5893b66496ba6497bd6699bc6598bb6b9cbd6799be6999bd6d97bd69 *9abd6d9bbd6e9bbb6d9ac06d9cc15996bd6099bf5f97bd6898bc6195bc649abe669bbd639abd60 *98bc6f99bf6798c06397bc669abc5e98bb619abc5e98bc6297bc689ac16097be6397be6699bf6b *9bbf699ebf669dc06ea0c36c9ebf6699bd6b99c0759fbf70a1c16e9dbf6d9cbe6c9cc1709dbf70 *a1c16ca0c175a3c174a1c46e9fc16d9dbe799fbf7aa2c182a4c580a4c77ca5c77ea6c686aac783 *a9c580a8c37ca6c181a7c480a5c175a0c170a2c270a0c070a0c26d9dbf649bbd6a9dbe6d9ebe6c *9dbf6399bf6799c06198bf679cc26899be639cc06da3c37aa4c17ea4c37aa6c77ca4c779a4c679 *a5c680a4c180a6c283a8c381a6c380a7c587a9c889aaca8daecb8aaec78eadc990b1ca8daec98e *b1ca96b2cc9ab1cc99b3ca98b3cd95b2ca8cb1c98eafc98aacc78cacc994b0cb96b1ca95b1cb95 *b0cb96b0c991b0c88dadc78eacc78aabc995abc993b0cc8daecb92b2cb96b3c896b4ca9bb6cb9d *b7cea0b6cc9fb6cba2bbd1a4b6cca5b7cca6bacca5bbcda6bbcea4bbcda5b6cda0b6cc9bb2cb96 *b1cb93aec897afc889abc68aaec989acc780a6c685a7c783a8c787abc986aec887aac680a9c77c *a8c67ea7c680a6c678a4c47aa7c777a7c781a8c77ea6c67da7c684a9c77da8c780aac97aa6c87f *a8c873a5c77da4c672a1c16ca3c16ba3c06ca1c16c9ec1629cc3649cc1729fc17ea4c572a1c16a *a1c270a2c36c9cc06a9bc16899c06d9fc474a2c26a9cc16a9cbd669dbe669dc0719fc26b9fc268 *9cc16599c06b9dbf6ca0c0639fbe6fa0c171a2c371a3c376a0c373a0c273a0c26ea0c377a4c46e *a1c37ca6c77ba3c67ba5c876a7c872a4c777a5c675a4c571a4c56ea4c678a6c579a5c775a6c678 *a4c673a4c76ba3c574a5c471a6c673a4c776a4c475a2c57ca4c678a5c773a4c870a4c677a5c772 *a4c67ca4c576a4c574a5c771a4c675a4c772a4c870a4c56ca2c475a4c674a2c56fa2c479a5c571 *a4c66ea4c673a2c66ea3c768a0c570a3c56ba2c575a2c672a3c56ea1c666a2c46fa2c56aa4c56c *a3c2649ec373a3c377a4c37aa3c36da3c671a3c36ba2c271a2c36c9fc16c9cc370a1c46c9fc373 *a4c470a0c173a2c374a3c56b9fc279a4c372a4c270a3c372a3c371a2c56ca0c270a3c36ea1c36c *a1c279a4c473a2c56b9fc474a3c674a3c572a5c875a6c873a5c779a4c676a6c876a7c780a9c876 *a5c973a4c776a8c873a7c97da7c879a9c972a4c67ba5c879a8c87fa9c976a4c679a8c76ea5c87e *a6c87ca9c97aa8c978a7c77aa8c97ba4c67aa6c97ea7c883abc97eaaca78a8c875a5c87eaac876 *a7c87ca8c779a7c975a6c77ea6c875a6c77ea9c977a9c97aa9c980aaca7da8c974a6c97ea7c87d *a9c87aa9c877a5c67da6c67ba9c67ea5c67da5c781a8c979a4c775a5c786a9c690acc8a0b6ccba *c9d8bfc9d9b8c8d8bdc9dac1cedac7cfddc7d1dec7d0dcc5cfddc2cdd9c1ccddbdc8d7bbc8dbbd *c9d9bfcad8bccad8bec9d8bcc7d6bec9d7bdc7d7c1cad8c3cbdcc6cddcc4cfdec8d1ddcad3e0c9 *d5e0ccd3e2ced5e2cfd6e4d1d7e4d0d8e6d4d9e3d2dde3d3dbe3d1dae2d3dce4d4d9e5d2dde6d4 *dbe5d3dde6d4dbe6d6dbe5d5dde7d4dde4d3d9e4d3dae3d2d9e5d3d8e5d3dae6d1d9e2d1d9e3d2 *dbe5d3dae5d2d9e3d2d8e5d3dbe6d5dce7d6dde6d5dbe6d4dbe3d3dbe5d3dbe6d4dae5d5dbe5d6 *dbe5d5dbe5d3dae5d2d8e5d1d9e3ced7e0cdd4e0cad2e1c9d1e1c4cfe1c6d2e2c9d1dfcbd3dece *d9e2d1dbe3d1dbe6d3dbe5d3dbe6d6dde5d6dee6d8dfe5d7dfe6d6e0e6d4dde5d1d9e5cfd6e4ca *d3e1c2cddec5d1dec8d4dfbdccddb1c6d9a6bdd3aabbd3b6c1d8becaddc2cddec6d3decbd3ddcc *d5dfcbd6e0c8d2dfc9d2dfced5e1ccd6e2cfd6e1caceced6dfe1dbe5e8dfe7eae0e8eadee7eb8c *a3be7a9cba779cb87095b46991b36e90b4668db15c8cae5c8bae628cae578aac5c87ae688ab162 *8bae5281aa5887aa5586ab5089ab5487ab5b85aa5681aa5985b15681ac4d7fac5180aa5585ab52 *87ac5284aa5180ac5b85b15e88ae5a87af5b8bb05f8bb1638db15b87af6689b1658cb25e8bb26b *8cb6648cb56590b86890b66894b6678eb6648ab5678db36c8eb67597bb7097b86b95b76391b570 *93b6678ab46c90b6678cb5618bb65f8bb4628eb7528bb65089b45487b3518ab6528ab85289b653 *86b44c86b54d89b7598cb75a92b9578cb75d8eb85788b75686b35b8ab65689b65589b64b85b255 *8ab75288b64f87b7548cb84f8ab5578bb9568eb7568ab65891bc5390b9568ab74d89b75a8dbb5c *88ba5188b65790b9528dbb4c8cb64e86b6548bb75a8ebb5b8ab7578ebb538fbb5191bc5391bb53 *8eb65088ba518dbb5791bb568bb7508bba558cba5893bc5f96bc5292bb5a90bb5e94bb6194be6e *98c26a97c06397bf6496be5e98be5f9cc1719cc36e9ac06f9ac1699abf6c98c06597c0659ac165 *97bf6f9bbe6b98be6a99c26d9bc36297c0649ac074a1c26c9dc26d9fc26a9ac17c9ec3749bc171 *9fc3699bc16b9bc16f9dc26f9ec36c9dc16b98bd5e94bd6797c06699bf6d9ac1639bc2689cc265 *9ac4689bc16c9dc2699bc16799c16498be5c95bf6295be629ac1669dc4699cc16096bf6999c06a *9bbf6799c06b9ac16f9dc46f9dc36d9dc376a0c5679cc16da0c1679ec16c9ac170a0c5689bc26c *9ac46c9dc46da0c27da4c676a2c26ea1c576a3c677a2c67ea4c878a4c670a2c47fa4c57da4c67e *a4c684a6c87ea5c67ca4c777a4c574a2c373a3c473a2c475a1c275a2c66f9cc46c9dc5689cc469 *9bc46a9dc4659dc36a9bc26599be6d9cc0669ac16a9cc27ea4c678a2c775a3c77aa5c781a7cb7e *a6c686a9c783aac988abcb82a9ca8baacd89aacb86aac98eaecd89aecc90aecb93b2ce99b6d199 *b5d398b3d2a3bad2a4b9d39cbad59db9d39fb7d297b1cc92adcc8baccd90b3d294b1cf96b0cb91 *b1cd93b0cc90aecb97b1cd8eacca8aadcc8cafcd99b6d19db6cf9db6d097b3cd9ab6d1a1b6d2a5 *b8d39dbad5a7bbd3a3bcd3a5bad5a5bed4aabdd3a8bbd5abbed6acc0d7a8bfd6a9bdd4a4b9d49c *b6ce9eb7cea1b9d19ab6d19bb2d194b3d097b4d08fb1cc8eb0cf8eaecc8eafce8eafce8eb0cf91 *b0d084abcf8bb0cf83abca83adcb85accc86adcd89aacd8cabcb8eafcf87abcb85a6c287adcc8a *adcb85aacb81aaca7ea5c779a6c97ca4c97aaaca76a5c97aa9c877a7cb77a3c77da6c97da6c970 *a4c775a5ca74a4c774a5c874a3c674a2c66ea0c677a4c772a3c776a2c66fa1c675a4c779a4c671 *a3c56ea4c775a2c77ba5c881a7c97ca7c878a5ca7eaace7aa7ca7ba7ca7ba6c982a8ca7fa7cb85 *aacb7ea9cd7fa9cc7daacc81adcf7caccc89abcd78a7c985abcb81aace82abce7aaacc74aacb7c *aacd80acce80a9cd79a9cc83a9ce7eacce7eaccf81adce75a6c97eabce7aaccf81aace83acd087 *a9ce7faace7faace7daace7ca9cd7ca9cd7fa9cc83aacf7ea9ce81abce7daace7faccd7eacce7d *aace83add07facd181aacf81a8cb82abcd7ba8cc79acce7eabcf7caace7daacc81aace80abce79 *a7ca80a8ca78a7cb80aacc7eabcc77a6cb7da7c97fa7ca7ba7ca79a7c97fa6c978a7c97ea9cb7e *aaca7da9cc75a7ca7da7cb7aa8cb80a6c980a7c982aacc7dabcb78a9cb81abcb7ca6c97ea9cb7c *a7ca7ca6cb7aa5c97da6ca7ba8ca77a9cb7aabcf80acce82aacf85acd086aed184acd17eadd184 *afd183aece86aed089b0d187afd387b0d185aed084aad188b1d17eadce7caece80abce80accc7f *aacf8aaed189afd182b0d38ab1d381aed284b1d281acce82accf8bb1d28db2d186b0d084aecf81 *add181afd08fb1d08bacd186aed282aed081acd083adce89b0d181acce83afd188add087acd08a *b0d283acd082adce84aecd87aecf85acce7facce87afcc86abcb7faacb88abcc82a7c891b1cf9d *b6d3aec5dbb7cbddbbcbdebfcddec6d0e0c9d1ddc7d1e1c7d1e2c6d1e3c6cee2c1ccdfc1ccdec4 *cedec5cfe0c6cee2c4cee0c0c9dec3d0dec4cfe1c4cfe0c8d1e1c9d3e1cad5e5ccd5e5cdd5e6cf *d7e7d2dcead2dde8d5dee8d7dfead8e0eadbe0eddae1ebdbe0ecdce1eed9e1ebdce3ecdde2eadc *e2ecdde2eadee3ecd8d9e6d8dee8dee3eddae2eddbe1edd9e1ecdbe1eadbe3eedadfebdbe1eadc *e0ebd9e0eadae0ebd9e0e9dce2ebdbe2ecdce3eddde2eddbe1ecdce2ecdde3f0dce4efdbe2ebdf *e2eedee3ecdee4eddbe2ebdce2ebdbe2edd7e0ecd7deead6ddead6dce8d1dbe8d1dbe8d4dde8d6 *dee9d8e2ecdae2eed8e3eedae2eedee5efdee5ebdee6eee2e6f1e0e6f0e0e7f1dde6f0dbe3eed6 *dee9cdd8e6ccd8e7d0d8e7cfd8e7c9d4e4c1cee2b6cae2b8c9ddc3cee0cbd8e5cfd9e7d2dbe7d6 *dde9d3d6e2d8dde9d4dce9d4dce7d0dbe7d3dee8d6dce7cdd4d4d9e0e4dfe5e9dfe6eddee7ece0 *e8ec hunk ./examples/RedBook/Makefile 8 -EXAMPLES := $(wildcard *.hs) +EXAMPLES := $(filter-out ReadImage.hs,$(wildcard *.hs)) hunk ./examples/RedBook/Makefile 17 +USES_READIMAGE = ColorTable + +.PRECIOUS: ReadImage.o +$(addsuffix .o,$(USES_READIMAGE)): ReadImage.hi +$(addsuffix $(exeext),$(USES_READIMAGE)): ReadImage.o + hunk ./examples/RedBook/Makefile 24 - $(HC) -o $@ $(HC_OPTS) $(LD_OPTS) $< + $(HC) -o $@ $(HC_OPTS) $(LD_OPTS) $< $(patsubst %,ReadImage.o,$(filter $(<:.o=),$(USES_READIMAGE))) hunk ./examples/RedBook/ReadImage.hs 1 +{- + ReadImage.hs (adapted from readImage.c which is (c) Silicon Graphics, Inc.) + Copyright (c) Sven Panne 2002-2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + Support for reading a file of raw RGB data: + 4 bytes big-endian width + 4 bytes big-endian height + width * height RGB byte triples +-} + +module ReadImage ( readImage ) where + +import Data.Word ( Word8, Word32 ) +import Control.Exception ( bracket ) +import Control.Monad ( liftM, when ) +import System.IO ( Handle, IOMode(ReadMode), openBinaryFile, hGetBuf, hClose ) +import System.IO.Error ( mkIOError, eofErrorType ) +import Foreign.Ptr ( Ptr ) +import Foreign.Marshal.Alloc ( alloca, mallocBytes ) +import Foreign.Storable ( Storable(..) ) +import Graphics.UI.GLUT + +-- This is probably overkill, but anyway... +newtype Word32BigEndian = Word32BigEndian Word32 + +word32BigEndianToGLsizei :: Word32BigEndian -> GLsizei +word32BigEndianToGLsizei (Word32BigEndian x) = fromIntegral x + +instance Storable Word32BigEndian where + sizeOf ~(Word32BigEndian x) = sizeOf x + alignment ~(Word32BigEndian x) = alignment x + peek ptr = do + let numBytes = sizeOf (undefined :: Word32BigEndian) + bytes <- mapM (peekByteOff ptr) [ 0 .. numBytes - 1 ] :: IO [Word8] + let value = foldl (\val byte -> val * 256 + fromIntegral byte) 0 bytes + return $ Word32BigEndian value + poke = error "" + +-- This is the reason for all this stuff above... +readGLsizei :: Handle -> IO GLsizei +readGLsizei handle = + alloca $ \buf -> do + hGetBufFully handle buf (sizeOf (undefined :: Word32BigEndian)) + liftM word32BigEndianToGLsizei $ peek buf + +-- A handy variant of hGetBuf with additional error checking +hGetBufFully :: Handle -> Ptr a -> Int -> IO () +hGetBufFully handle ptr numBytes = do + bytesRead <- hGetBuf handle ptr numBytes + when (bytesRead /= numBytes) $ + ioError $ mkIOError eofErrorType "hGetBufFully" (Just handle) Nothing + +-- Closing a file is nice, even when an error occurs during reading. +withBinaryFile :: FilePath -> (Handle -> IO a) -> IO a +withBinaryFile filePath = bracket (openBinaryFile filePath ReadMode) hClose + +readImage :: FilePath -> IO (Size, PixelData a) +readImage filePath = + withBinaryFile filePath $ \handle -> do + width <- readGLsizei handle + height <- readGLsizei handle + let numBytes = fromIntegral (3 * width * height) + buf <- mallocBytes numBytes + hGetBufFully handle buf numBytes + return (Size width height, PixelData RGB UnsignedByte buf) addfile ./examples/RedBook/ColorMatrix.hs addfile ./examples/RedBook/Convolution.hs hunk ./examples/RedBook/ColorMatrix.hs 1 +{- + ColorMatrix.hs (adapted from colormatrix.c which is (c) Silicon Graphics, Inc.) + Copyright (c) Sven Panne 2002-2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program uses the color matrix to exchange the color channels of an image. + + Red -> Green + Green -> Blue + Blue -> Red +-} + +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT +import ReadImage + +myInit :: IO () +myInit = do + m <- newMatrix ColumnMajor [ 0, 1, 0, 0, + 0, 0, 1, 0, + 1, 0, 0, 0, + 0, 0, 0, 1 ] + rowAlignment Unpack $= 1 + clearColor $= Color4 0 0 0 0 + matrixMode $= Color + currentMatrix $= (m :: GLmatrix GLfloat) + matrixMode $= Modelview 0 + +display :: Size -> PixelData a -> DisplayCallback +display size pixels = do + clear [ ColorBuffer ] + -- resolve overloading, not needed in "real" programs + let rasterPos2i = rasterPos :: Vertex2 GLint -> IO () + rasterPos2i (Vertex2 1 1) + drawPixels size pixels + flush + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + ortho 0 (fromIntegral w) 0 (fromIntegral h) (-1) 1 + matrixMode $= Modelview 0 + +keyboard :: KeyboardMouseCallback +keyboard (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard _ _ _ _ = return () + +-- Main Loop: Open window with initial window size, title bar, RGBA display +-- mode, and handle input events. +main :: IO () +main = do + (progName, args) <- getArgsAndInitialize + (size, pixels) <- readImage (if null args then "Data/leeds.bin" else head args) + initialDisplayMode $= [ SingleBuffered, RGBMode ] + initialWindowSize $= size + initialWindowPosition $= Position 100 100 + createWindow progName + myInit + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just keyboard + displayCallback $= display size pixels + mainLoop hunk ./examples/RedBook/Convolution.hs 1 +{- + Convolution.hs (adapted from convolution.c which is (c) Silicon Graphics, Inc.) + Copyright (c) Sven Panne 2002-2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + Use various 2D convolutions filters to find edges in an image. +-} + +import Foreign.Marshal.Array ( withArray ) +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT +import ReadImage + +data Filter = Filter String [GLfloat] + +filterTable :: [(Key,Filter)] +filterTable = [ + (Char 'h', Filter "horizontal" [ 0, -1, 0, + 0, 1, 0, + 0, 0, 0 ]), + + (Char 'v', Filter "vertical" [ 0, 0, 0, + -1, 1, 0, + 0, 0, 0 ]), + + (Char 'l', Filter "laplacian" [ -0.125, -0.125, -0.125, + -0.125, 1.0 , -0.125, + -0.125, -0.125, -0.125 ])] + +setFilter :: Filter -> IO () +setFilter (Filter filterName filterData) = do + putStrLn ("Using the " ++ filterName ++ " filter") + withArray filterData $ \buf -> + convolutionFilter2D Luminance' (Size 3 3) (PixelData Luminance Float buf) + +myInit :: IO () +myInit = do + rowAlignment Unpack $= 1 + clearColor $= Color4 0 0 0 0 + setFilter (snd (head filterTable)) + convolution Convolution2D $= Enabled + +display :: Size -> PixelData a -> DisplayCallback +display size pixels = do + clear [ ColorBuffer ] + -- resolve overloading, not needed in "real" programs + let rasterPos2i = rasterPos :: Vertex2 GLint -> IO () + rasterPos2i (Vertex2 1 1) + drawPixels size pixels + flush + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + ortho 0 (fromIntegral w) 0 (fromIntegral h) (-1) 1 + matrixMode $= Modelview 0 + +keyboard :: KeyboardMouseCallback +keyboard (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard key Down _ _ = + maybe (return ()) + (\f -> do setFilter f; postRedisplay Nothing) + (lookup key filterTable) +keyboard _ _ _ _ = return () + +-- Main Loop: Open window with initial window size, title bar, RGBA display +-- mode, and handle input events. +main :: IO () +main = do + (progName, args) <- getArgsAndInitialize + (size, pixels) <- readImage (if null args then "Data/leeds.bin" else head args) + initialDisplayMode $= [ SingleBuffered, RGBAMode ] + initialWindowSize $= size + initialWindowPosition $= Position 100 100 + createWindow progName + myInit + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just keyboard + displayCallback $= display size pixels + mainLoop hunk ./examples/RedBook/Makefile 17 -USES_READIMAGE = ColorTable +USES_READIMAGE = ColorTable Convolution ColorMatrix addfile ./examples/RedBook/Histogram.hs hunk ./examples/RedBook/Histogram.hs 1 +{- + Histogram.hs (adapted from histogram.c which is (c) Silicon Graphics, Inc.) + Copyright (c) Sven Panne 2002-2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + Invert a passed block of pixels. This program illustrates the use of the + colorTable function. +-} + +import Control.Monad +import Foreign +import Foreign.Marshal.Array +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT +import ReadImage + +histogramSize :: GLsizei +histogramSize = 256 -- Must be a power of 2 + +myInit :: IO () +myInit = do + rowAlignment Unpack $= 1 + clearColor $= Color4 0 0 0 0 + + histogram NoProxy $= Just (histogramSize, RGB', PassThrough) + +display :: Size -> PixelData a -> DisplayCallback +display size pixels = do + clear [ ColorBuffer ] + -- resolve overloading, not needed in "real" programs + let rasterPos2i = rasterPos :: Vertex2 GLint -> IO () + rasterPos2i (Vertex2 1 1) + drawPixels size pixels + + allocaArray (3 * fromIntegral histogramSize) $ \values -> do + -- Note: The example in the Red Book uses GL_UNSIGNED_SHORT + -- here, but we are more honest by using Short... + getHistogram Reset (PixelData RGB Short values) + + -- Plot histogram + zipWithM_ (plotColor values) + [ Color3 1 0 0, Color3 0 1 0, Color3 0 0 1 ] + [ 0 .. ] + flush + +plotColor :: Ptr GLshort -> Color3 GLfloat -> Int -> IO () +plotColor values c off = do + renderPrimitive LineStrip $ do + color c + mapM_ (\i -> do v <- peekElemOff values (off + 3 * fromIntegral i) + vertex (Vertex2 i v)) + [ 0 .. (fromIntegral histogramSize :: GLshort) - 1 ] + +reshape :: ReshapeCallback +reshape size = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + ortho 0 (fromIntegral histogramSize) 0 10000 (-1) 1 + matrixMode $= Modelview 0 + +keyboard :: KeyboardMouseCallback +keyboard (Char 's') Down _ _ = do + Just (width, format, sink) <- get (histogram NoProxy) + let newSink = if sink == Sink then PassThrough else Sink + histogram NoProxy $= Just (width, format, newSink) +keyboard (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard _ _ _ _ = return () + +-- Main Loop: Open window with initial window size, title bar, RGBA display +-- mode, and handle input events. +main :: IO () +main = do + (progName, args) <- getArgsAndInitialize + (size, pixels) <- readImage (if null args then "Data/leeds.bin" else head args) + initialDisplayMode $= [ SingleBuffered, RGBMode ] + initialWindowSize $= size + initialWindowPosition $= Position 100 100 + createWindow progName + myInit + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just keyboard + displayCallback $= display size pixels + mainLoop hunk ./examples/RedBook/Makefile 17 -USES_READIMAGE = ColorTable Convolution ColorMatrix +USES_READIMAGE = ColorTable Convolution ColorMatrix Histogram hunk ./examples/RedBook/00-README 67 - MinMax.hs (ARB_imaging_subset) + Minmax.hs (ARB_imaging_subset) hunk ./examples/RedBook/Histogram.hs 7 - Invert a passed block of pixels. This program illustrates the use of the - colorTable function. + Compute the histogram of the image. This program illustrates the use of + the histogram function. hunk ./examples/RedBook/Histogram.hs 11 -import Control.Monad -import Foreign -import Foreign.Marshal.Array +import Control.Monad ( zipWithM_ ) +import Foreign.Ptr ( Ptr ) +import Foreign.Storable ( Storable(..) ) +import Foreign.Marshal.Array ( allocaArray ) hunk ./examples/RedBook/Histogram.hs 12 -import Foreign.Ptr ( Ptr ) -import Foreign.Storable ( Storable(..) ) -import Foreign.Marshal.Array ( allocaArray ) +import Foreign.Marshal.Array ( allocaArray, peekArray ) hunk ./examples/RedBook/Histogram.hs 17 -histogramSize :: GLsizei +histogramSize :: Int hunk ./examples/RedBook/Histogram.hs 25 - histogram NoProxy $= Just (histogramSize, RGB', PassThrough) + histogram NoProxy $= Just (fromIntegral histogramSize, RGB', PassThrough) hunk ./examples/RedBook/Histogram.hs 35 - allocaArray (3 * fromIntegral histogramSize) $ \values -> do - -- Note: The example in the Red Book uses GL_UNSIGNED_SHORT - -- here, but we are more honest by using Short... - getHistogram Reset (PixelData RGB Short values) + values <- allocaArray histogramSize $ \buf -> do + -- Note: The example in the Red Book uses GL_UNSIGNED_SHORT here, + -- but we are more honest by using Short... + getHistogram Reset (PixelData RGB Short buf) + peekArray histogramSize buf hunk ./examples/RedBook/Histogram.hs 41 - -- Plot histogram - zipWithM_ (plotColor values) - [ Color3 1 0 0, Color3 0 1 0, Color3 0 0 1 ] - [ 0 .. ] + -- Plot histogram + zipWithM_ (plotHistogram values) + [ Color3 1 0 0, Color3 0 1 0, Color3 0 0 1 ] + [\(Color3 r _ _) -> r, \(Color3 _ g _) -> g, \(Color3 _ _ b) -> b ] hunk ./examples/RedBook/Histogram.hs 47 -plotColor :: Ptr GLshort -> Color3 GLfloat -> Int -> IO () -plotColor values c off = do +plotHistogram :: + [Color3 GLshort] -> Color3 GLfloat -> (Color3 GLshort -> GLshort) -> IO () +plotHistogram values c selectComponent = hunk ./examples/RedBook/Histogram.hs 52 - mapM_ (\i -> do v <- peekElemOff values (off + 3 * fromIntegral i) - vertex (Vertex2 i v)) - [ 0 .. (fromIntegral histogramSize :: GLshort) - 1 ] + zipWithM_ (\i h -> vertex (Vertex2 i (selectComponent h))) [ 0 .. ] values addfile ./examples/RedBook/Minmax.hs hunk ./examples/RedBook/Makefile 17 -USES_READIMAGE = ColorTable Convolution ColorMatrix Histogram +USES_READIMAGE = ColorTable Convolution ColorMatrix Histogram Minmax hunk ./examples/RedBook/Minmax.hs 1 +{- + Minmax.hs (adapted from minmax.c which is (c) Silicon Graphics, Inc.) + Copyright (c) Sven Panne 2002-2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + Determine the minimum and maximum values of a group of pixels. This + demonstrates use of the minmax function. +-} + +import Foreign.Marshal.Array ( allocaArray, peekArray ) +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT +import ReadImage + +myInit :: IO () +myInit = do + rowAlignment Unpack $= 1 + clearColor $= Color4 0 0 0 0 + minmax $= Just (RGB', PassThrough) + +display :: Size -> PixelData a -> DisplayCallback +display size pixels = do + clear [ ColorBuffer ] + -- resolve overloading, not needed in "real" programs + let rasterPos2i = rasterPos :: Vertex2 GLint -> IO () + rasterPos2i (Vertex2 1 1) + drawPixels size pixels + flush + + [Color3 minR minG minB, Color3 maxR maxG maxB] <- allocaArray 2 $ \buf -> do + getMinmax Reset (PixelData RGB UnsignedByte buf) + peekArray 2 buf :: IO [Color3 GLubyte] + putStrLn (" Red : min = " ++ show minR ++ " max = " ++ show maxR) + putStrLn (" Green : min = " ++ show minG ++ " max = " ++ show maxG) + putStrLn (" Blue : min = " ++ show minB ++ " max = " ++ show maxB) + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + ortho 0 (fromIntegral w) 0 (fromIntegral h) (-1) 1 + matrixMode $= Modelview 0 + +keyboard :: KeyboardMouseCallback +keyboard (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard _ _ _ _ = return () + +-- Main Loop: Open window with initial window size, title bar, RGBA display +-- mode, and handle input events. +main :: IO () +main = do + (progName, args) <- getArgsAndInitialize + (size, pixels) <- readImage (if null args then "Data/leeds.bin" else head args) + initialDisplayMode $= [ SingleBuffered, RGBMode ] + initialWindowSize $= size + initialWindowPosition $= Position 100 100 + createWindow progName + myInit + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just keyboard + displayCallback $= display size pixels + mainLoop addfile ./examples/Misc/ARBOcclude.hs hunk ./examples/Misc/ARBOcclude.hs 1 +{- + ARBOcclude.hs (adapted from arbocclude.c which is (c) Brian Paul) + Copyright (c) Sven Panne 2002-2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE +-} + +import Control.Monad ( unless, when ) +import Data.IORef ( IORef, newIORef, readIORef, writeIORef, modifyIORef ) +import System.Exit ( exitWith, ExitCode(ExitSuccess), exitFailure ) +import Graphics.UI.GLUT + +petrol, orange, white :: Color3 GLfloat +petrol = Color3 0.0 0.6 0.8 +orange = Color3 0.8 0.5 0.0 +white = Color3 1.0 1.0 1.0 + +printString :: Vertex2 GLfloat -> String -> IO () +printString pos s = do + color white + rasterPos pos + renderString Fixed8By13 s + +idle :: IORef GLfloat -> IORef GLfloat -> IORef Int -> IdleCallback +idle xPos sign lastTime = do + time <- get elapsedTime + l <- readIORef lastTime + let timeDiff = fromIntegral (time - l) + + when (timeDiff >= 20) $ do -- 50Hz update + writeIORef lastTime time + + s <- readIORef sign + step xPos (timeDiff / 1000 * s) + x <- readIORef xPos + + when (x > 2.5) $ do + writeIORef xPos 2.5 + writeIORef sign (-1) + + when (x < -2.5) $ do + writeIORef xPos (-2.5) + writeIORef sign 1 + +display :: QueryObject -> IORef GLfloat -> DisplayCallback +display occQuery xPos = do + clear [ ColorBuffer, DepthBuffer ] + + matrixMode $= Projection + loadIdentity + frustum (-1) 1 (-1) 1 5 25 + matrixMode $= Modelview 0 + loadIdentity + translate (Vector3 0 0 (-15 :: GLfloat)) + + drawOccludingPolygons + + -- draw the test polygon with occlusion testing + passed <- preservingMatrix $ do + x <- readIORef xPos + translate (Vector3 x 0 (-0.5)) + scale 0.3 0.3 (1.0 :: GLfloat) + rotate (-90 * x) (Vector3 0 0 1) + + withQuery SamplesPassed occQuery $ do + colorMask $= Color4 Disabled Disabled Disabled Disabled + depthMask $= Disabled + drawRect + + p <- waitForResult occQuery + + -- turn off occlusion testing + colorMask $= Color4 Enabled Enabled Enabled Enabled + depthMask $= Enabled + + -- draw the orange rect, so we can see what's going on + color orange + drawRect + + return p + + -- Print result message + matrixMode $= Projection + loadIdentity + ortho (-1) 1 (-1) 1 (-1) 1 + matrixMode $= Modelview 0 + loadIdentity + + printString (Vertex2 (-0.50) (-0.7)) + (" " ++ flushRight 4 passed ++ " Fragments Visible") + when (passed == 0) $ + printString (Vertex2 (-0.25) (-0.8)) "Fully Occluded" + + swapBuffers + +drawOccludingPolygons :: IO () +drawOccludingPolygons = do + color petrol + drawQuads [ + Vertex2 (-1.6) (-1.5), + Vertex2 (-0.4) (-1.5), + Vertex2 (-0.4) 1.5 , + Vertex2 (-1.6) 1.5 , + + Vertex2 0.4 (-1.5), + Vertex2 1.6 (-1.5), + Vertex2 1.6 1.5 , + Vertex2 0.4 1.5 ] + +drawRect :: IO () +drawRect = do + drawQuads [ + Vertex2 (-1) (-1), + Vertex2 1 (-1), + Vertex2 1 1 , + Vertex2 (-1) 1 ] + +drawQuads :: [Vertex2 GLfloat] -> IO () +drawQuads = renderPrimitive Quads . mapM_ vertex + +waitForResult :: QueryObject -> IO GLuint +waitForResult occQuery = do + let loop = do -- do useful work here, if any + ready <- get (queryResultAvailable occQuery) + unless ready loop + loop + get (queryResult occQuery) + +flushRight :: Show a => Int -> a -> String +flushRight width x = replicate (width - length s) ' ' ++ s + where s = show x + +keyboard :: IORef Bool -> IORef GLfloat -> IORef GLfloat -> IORef Int -> KeyboardMouseCallback +keyboard _ _ _ _ (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard anim xPos sign lastTime (Char ' ') Down _ _ = do modifyIORef anim not + setIdleCallback anim xPos sign lastTime +keyboard _ xPos _ _ (SpecialKey KeyLeft) Down _ _ = step xPos (-0.1) +keyboard _ xPos _ _ (SpecialKey KeyRight) Down _ _ = step xPos 0.1 +keyboard _ _ _ _ _ _ _ _ = return () + +setIdleCallback :: IORef Bool -> IORef GLfloat -> IORef GLfloat -> IORef Int -> IO () +setIdleCallback anim xPos sign lastTime = do + a <- readIORef anim + idleCallback $= if a then Just (idle xPos sign lastTime) else Nothing + +step :: IORef GLfloat -> GLfloat -> IO () +step xPos s = do + modifyIORef xPos (+ s) + postRedisplay Nothing + +myInit :: IO () +myInit = do + exts <- get glExtensions + unless ("GL_ARB_occlusion_query" `elem` exts) $ do + putStrLn "Sorry, this demo requires the GL_ARB_occlusion_query extension" + exitFailure + + bits <- get (queryCounterBits SamplesPassed) + unless (bits > 0) $ do + putStrLn "Hmmm, GL_QUERY_COUNTER_BITS_ARB is zero!" + exitFailure + + depthFunc $= Just Less + +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialWindowPosition $= Position 0 0 + initialWindowSize $= Size 400 400 + initialDisplayMode $= [ RGBMode, DoubleBuffered, WithDepthBuffer ] + createWindow progName + reshapeCallback $= Just (\size -> viewport $= (Position 0 0, size)) + anim <- newIORef True + xPos <- newIORef 0 + sign <- newIORef 1 + lastTime <- get elapsedTime >>= newIORef + keyboardMouseCallback $= Just (keyboard anim xPos sign lastTime) + setIdleCallback anim xPos sign lastTime + [ occQuery ] <- genObjectNames 1 + displayCallback $= display occQuery xPos + myInit + mainLoop addfile ./examples/RedBook/Checker.hs hunk ./examples/RedBook/Checker.hs 1 +{- + Checker.hs (adapted from checker.c which is (c) Silicon Graphics, Inc) + Copyright (c) Sven Panne 2002-2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program texture maps a checkerboard image onto two rectangles. + + Texture objects are only used when GL_EXT_texture_object is supported. +-} + +import Data.Bits ( (.&.) ) +import Foreign.Marshal.Array ( newArray ) +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +-- Create checkerboard image +checkImageSize :: TextureSize2D +checkImageSize = TextureSize2D 64 64 + +makeCheckImage :: IO (PixelData (Color4 GLubyte)) +makeCheckImage = do + let TextureSize2D w h = checkImageSize + buf <- newArray [ Color4 c c c 255 | + i <- [ 0 .. w - 1 ], + j <- [ 0 .. h - 1 ], + let c | (i .&. 0x8) == (j .&. 0x8) = 0 + | otherwise = 255 ] + return $ PixelData RGBA UnsignedByte buf + +myInit :: IO (Maybe TextureObject) +myInit = do + clearColor $= Color4 0 0 0 0 + shadeModel $= Flat + depthFunc $= Just Less + + checkImage <- makeCheckImage + rowAlignment Unpack $= 1 + + exts <- get glExtensions + mbTexName <- if "GL_EXT_texture_object" `elem` exts + then do [texName] <- genObjectNames 1 + textureBinding Texture2D $= texName + return $ Just texName + else return Nothing + + textureWrapMode Texture2D S $= (Repeated, Repeat) + textureWrapMode Texture2D T $= (Repeated, Repeat) + textureFilter Texture2D $= ((Nearest, Nothing), Nearest) + texImage2D NoProxy 0 RGBA' checkImageSize 0 checkImage + return mbTexName + +display :: Maybe TextureObject -> DisplayCallback +display mbTexName = do + clear [ ColorBuffer, DepthBuffer ] + texture Texture2D $= Enabled + textureEnvMode $= Decal + maybe (return ()) (\texName -> textureBinding Texture2D $= texName) mbTexName + + -- resolve overloading, not needed in "real" programs + let texCoord2f = texCoord :: TexCoord2 GLfloat -> IO () + vertex3f = vertex :: Vertex3 GLfloat -> IO () + renderPrimitive Quads $ do + texCoord2f (TexCoord2 0 0); vertex3f (Vertex3 (-2.0) (-1.0) 0.0 ) + texCoord2f (TexCoord2 0 1); vertex3f (Vertex3 (-2.0) 1.0 0.0 ) + texCoord2f (TexCoord2 1 1); vertex3f (Vertex3 0.0 1.0 0.0 ) + texCoord2f (TexCoord2 1 0); vertex3f (Vertex3 0.0 (-1.0) 0.0 ) + + texCoord2f (TexCoord2 0 0); vertex3f (Vertex3 1.0 (-1.0) 0.0 ) + texCoord2f (TexCoord2 0 1); vertex3f (Vertex3 1.0 1.0 0.0 ) + texCoord2f (TexCoord2 1 1); vertex3f (Vertex3 2.41421 1.0 (-1.41421)) + texCoord2f (TexCoord2 1 0); vertex3f (Vertex3 2.41421 (-1.0) (-1.41421)) + flush + texture Texture2D $= Disabled + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + perspective 60 (fromIntegral w / fromIntegral h) 1 30 + matrixMode $= Modelview 0 + loadIdentity + translate (Vector3 0 0 (-3.6 :: GLfloat)) + +keyboard :: KeyboardMouseCallback +keyboard (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard _ _ _ _ = return () + +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] + initialWindowSize $= Size 250 250 + initialWindowPosition $= Position 100 100 + createWindow progName + mbTexName <- myInit + displayCallback $= display mbTexName + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just keyboard + mainLoop hunk ./Makefile 10 +ifeq "$(IncludeExampleDirsInBuild)" "YES" +SUBDIRS += examples +endif + hunk ./Makefile 52 -# ----------------------------------------------------------------------------- - -.PHONY: examples - -examples: - $(MAKE) -C examples - hunk ./examples/Makefile 8 +ifeq "$(way)" "" hunk ./examples/Makefile 10 +endif hunk ./examples/Misc/Makefile 13 -SRC_HC_OPTS += -Wall -O -package GLUT +MKDEPENDHS = $(GHC_INPLACE) +SRC_HC_OPTS += -Wall -package GLUT hunk ./examples/RedBook/Makefile 13 -SRC_HC_OPTS += -Wall -O -package GLUT +MKDEPENDHS = $(GHC_INPLACE) +SRC_HC_OPTS += -Wall -package GLUT hunk ./examples/Misc/ARBOcclude.hs 155 - putStrLn "Sorry, this demo requires the GL_ARB_occlusion_query extension" + putStrLn "Sorry, this demo requires the GL_ARB_occlusion_query extension." hunk ./examples/RedBook/Hello.hs 41 - addfile ./examples/RedBook/MVArray.hs addfile ./examples/RedBook/VArray.hs hunk ./examples/RedBook/MVArray.hs 1 +{- + MVArray.hs (adapted from mvarray.c which is (c) Silicon Graphics, Inc.) + Copyright (c) Sven Panne 2002-2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program demonstrates multiple vertex arrays, specifically the OpenGL + routine multiDrawElements. NOTE: This program uses withArray in an + inefficient way, because some Haskell lists are marshaled more than once. + This could easily be fixed by doing this at initialization time and passing + the pointers around, but this would probably make the program a bit less + clear. +-} + +import Control.Monad ( unless ) +import Data.List ( genericLength ) +import Foreign ( withMany, withArray ) +import System.Exit ( exitFailure, exitWith, ExitCode(..) ) +import Graphics.UI.GLUT + +setupPointer :: IO () +setupPointer = do + let vertices = [ 25, 25, + 75, 75, + 100, 125, + 150, 75, + 200, 175, + 250, 150, + 300, 125, + 100, 200, + 150, 250, + 200, 225, + 250, 300, + 300, 250 ] :: [GLint] + clientState VertexArray $= Enabled + withArray vertices $ \verticesBuf -> + arrayPointer VertexArray $= VertexArrayDescriptor 2 Int 0 verticesBuf + +myInit :: IO () +myInit = do + clearColor $= Color4 0 0 0 0 + shadeModel $= Smooth + setupPointer + +display :: DisplayCallback +display = do + clear [ ColorBuffer ] + -- resolve overloading, not needed in "real" programs + let color3f = color :: Color3 GLfloat -> IO () + color3f (Color3 1 1 1) + let oneIndices = [ 0, 1, 2, 3, 4, 5, 6 ] :: [GLubyte] + twoIndices = [ 1, 7, 8, 9, 10, 11 ] :: [GLubyte] + indices = [ oneIndices, twoIndices ] + numIndices = genericLength indices + count = map genericLength indices :: [GLsizei] + withArray count $ \countBuf -> + withMany withArray indices $ \indicesPtrs -> + withArray indicesPtrs $ \indicesBuf -> + multiDrawElements LineStrip countBuf UnsignedByte indicesBuf numIndices + flush + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + ortho2D 0 (fromIntegral w) 0 (fromIntegral h) + -- the following line is not in the original example, but it's good style... + matrixMode $= Modelview 0 + +keyboard :: KeyboardMouseCallback +keyboard (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard _ _ _ _ = return () + +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, RGBMode ] + initialWindowSize $= Size 350 350 + initialWindowPosition $= Position 100 100 + createWindow progName + -- we have to do this *after* createWindow, otherwise we have no OpenGL context + exts <- get glExtensions + unless ("GL_EXT_multi_draw_arrays" `elem` exts) $ do + putStrLn "Sorry, this demo requires the GL_EXT_multi_draw_arrays extension." + exitFailure + myInit + displayCallback $= display + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just keyboard + mainLoop hunk ./examples/RedBook/VArray.hs 1 +{- + VArray.hs (adapted from varray.c which is (c) Silicon Graphics, Inc.) + Copyright (c) Sven Panne 2002-2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program demonstrates vertex arrays. NOTE: This program uses withArray + in an inefficient way, because some Haskell lists are marshaled more than + once. This could easily be fixed by doing this at initialization time and + passing the pointers around, but this would probably make the program a bit + less clear. +-} + +import Control.Monad ( when ) +import Data.IORef ( IORef, newIORef, readIORef, modifyIORef ) +import Foreign ( withArray ) +import System.Exit ( exitFailure, exitWith, ExitCode(..) ) +import Graphics.UI.GLUT + +data SetupMethod = Pointer | Interleaved + deriving ( Eq, Bounded, Enum ) + +data DerefMethod = DrawArray | ArrayElement | DrawElements + deriving ( Eq, Bounded, Enum ) + +setup :: IORef SetupMethod -> IO () +setup setupMethod = do + s <- readIORef setupMethod + case s of + Pointer -> do + let vertices = [ 25, 25, + 100, 325, + 175, 25, + 175, 325, + 250, 25, + 325, 325 ] :: [GLint] + colors = [ 1.0, 0.2, 0.2, + 0.2, 0.2, 1.0, + 0.8, 1.0, 0.2, + 0.75, 0.75, 0.75, + 0.35, 0.35, 0.35, + 0.5, 0.5, 0.5 ] :: [GLfloat] + clientState VertexArray $= Enabled + clientState ColorArray $= Enabled + withArray vertices $ \verticesBuf -> + arrayPointer VertexArray $= VertexArrayDescriptor 2 Int 0 verticesBuf + withArray colors $ \ colorsBuf -> + arrayPointer ColorArray $= VertexArrayDescriptor 3 Float 0 colorsBuf + Interleaved -> + let intertwined = [ 1.0, 0.2, 1.0, 100.0, 100.0, 0.0, + 1.0, 0.2, 0.2, 0.0, 200.0, 0.0, + 1.0, 1.0, 0.2, 100.0, 300.0, 0.0, + 0.2, 1.0, 0.2, 200.0, 300.0, 0.0, + 0.2, 1.0, 1.0, 300.0, 200.0, 0.0, + 0.2, 0.2, 1.0, 200.0, 100.0, 0.0 ] :: [GLfloat] + in withArray intertwined $ interleavedArrays C3fV3f 0 + +myInit :: IORef SetupMethod -> IO () +myInit setupMethod = do + clearColor $= Color4 0 0 0 0 + shadeModel $= Smooth + setup setupMethod + +display :: IORef DerefMethod -> DisplayCallback +display derefMethod = do + clear [ ColorBuffer ] + d <- readIORef derefMethod + case d of + DrawArray -> drawArrays Triangles 0 6 + ArrayElement -> renderPrimitive Triangles $ mapM_ arrayElement [ 2, 3, 5 ] + DrawElements -> let indices = [ 0, 1, 3, 4 ] :: [GLuint] + in withArray indices $ drawElements Polygon 4 UnsignedInt + flush + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + ortho2D 0 (fromIntegral w) 0 (fromIntegral h) + -- the following line is not in the original example, but it's good style... + matrixMode $= Modelview 0 + +keyboardMouse :: IORef SetupMethod -> IORef DerefMethod -> KeyboardMouseCallback +keyboardMouse setupMethod _ (MouseButton LeftButton) Down _ _ = do + modifyIORef setupMethod nextValue + setup setupMethod + postRedisplay Nothing +keyboardMouse _ derefMethod (MouseButton _) Down _ _ = do + modifyIORef derefMethod nextValue + postRedisplay Nothing +keyboardMouse _ _ (Char '\27') Down _ _ = exitWith ExitSuccess +keyboardMouse _ _ _ _ _ _ = return () + +nextValue :: (Eq a, Bounded a, Enum a) => a -> a +nextValue x = if x == maxBound then minBound else succ x + +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, RGBMode ] + initialWindowSize $= Size 350 350 + initialWindowPosition $= Position 100 100 + createWindow progName + -- we have to do this *after* createWindow, otherwise we have no OpenGL context + version <- get glVersion + when (take 3 version == "1.0") $ do + putStrLn "This program demonstrates a feature which is not in OpenGL Version 1.0." + putStrLn "If your implementation of OpenGL Version 1.0 has the right extensions," + putStrLn "you may be able to modify this program to make it run." + exitFailure + setupMethod <- newIORef Pointer + derefMethod <- newIORef DrawArray + myInit setupMethod + displayCallback $= display derefMethod + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just (keyboardMouse setupMethod derefMethod) + mainLoop hunk ./examples/RedBook/Checker.hs 13 -import Foreign.Marshal.Array ( newArray ) +import Foreign ( newArray ) hunk ./examples/RedBook/ColorTable.hs 11 -import Foreign.Marshal.Array ( withArray ) +import Foreign ( withArray ) hunk ./examples/RedBook/Convolution.hs 10 -import Foreign.Marshal.Array ( withArray ) +import Foreign ( withArray ) hunk ./examples/RedBook/Histogram.hs 12 -import Foreign.Marshal.Array ( allocaArray, peekArray ) +import Foreign ( allocaArray, peekArray ) hunk ./examples/RedBook/Image.hs 20 -import Foreign.Marshal.Array ( newArray ) +import Foreign ( newArray ) hunk ./examples/RedBook/Minmax.hs 11 -import Foreign.Marshal.Array ( allocaArray, peekArray ) +import Foreign ( allocaArray, peekArray ) hunk ./examples/RedBook/ReadImage.hs 20 -import Foreign.Ptr ( Ptr ) -import Foreign.Marshal.Alloc ( alloca, mallocBytes ) -import Foreign.Storable ( Storable(..) ) +import Foreign ( Ptr, alloca, mallocBytes, Storable(..) ) hunk ./examples/RedBook/MVArray.hs 8 - routine multiDrawElements. NOTE: This program uses withArray in an - inefficient way, because some Haskell lists are marshaled more than once. - This could easily be fixed by doing this at initialization time and passing - the pointers around, but this would probably make the program a bit less - clear. + routine multiDrawElements. hunk ./examples/RedBook/MVArray.hs 13 -import Foreign ( withMany, withArray ) +import Foreign ( Storable, Ptr, newArray ) hunk ./examples/RedBook/MVArray.hs 17 +data MultiDrawInfo a = MultiDrawInfo (Ptr GLsizei) (Ptr (Ptr a)) GLsizei + +makeMultiDrawInfo :: Storable a => [[a]] -> IO (MultiDrawInfo a) +makeMultiDrawInfo indicesLists = do + count <- newArray $ map genericLength indicesLists + indices <- newArray =<< mapM newArray indicesLists + return $ MultiDrawInfo count indices (genericLength indicesLists) + hunk ./examples/RedBook/MVArray.hs 27 - let vertices = [ 25, 25, - 75, 75, - 100, 125, - 150, 75, - 200, 175, - 250, 150, - 300, 125, - 100, 200, - 150, 250, - 200, 225, - 250, 300, - 300, 250 ] :: [GLint] hunk ./examples/RedBook/MVArray.hs 28 - withArray vertices $ \verticesBuf -> - arrayPointer VertexArray $= VertexArrayDescriptor 2 Int 0 verticesBuf + vertices <- newArray ([ + Vertex2 25 25, + Vertex2 75 75, + Vertex2 100 125, + Vertex2 150 75, + Vertex2 200 175, + Vertex2 250 150, + Vertex2 300 125, + Vertex2 100 200, + Vertex2 150 250, + Vertex2 200 225, + Vertex2 250 300, + Vertex2 300 250 ] :: [Vertex2 GLint]) + arrayPointer VertexArray $= VertexArrayDescriptor 2 Int 0 vertices hunk ./examples/RedBook/MVArray.hs 43 -myInit :: IO () +myInit :: IO (MultiDrawInfo GLubyte) hunk ./examples/RedBook/MVArray.hs 48 + makeMultiDrawInfo [ [ 0, 1, 2, 3, 4, 5, 6 ], + [ 1, 7, 8, 9, 10, 11 ] ] hunk ./examples/RedBook/MVArray.hs 51 -display :: DisplayCallback -display = do +display :: MultiDrawInfo GLubyte -> DisplayCallback +display (MultiDrawInfo count indices primCount) = do hunk ./examples/RedBook/MVArray.hs 54 - -- resolve overloading, not needed in "real" programs - let color3f = color :: Color3 GLfloat -> IO () - color3f (Color3 1 1 1) - let oneIndices = [ 0, 1, 2, 3, 4, 5, 6 ] :: [GLubyte] - twoIndices = [ 1, 7, 8, 9, 10, 11 ] :: [GLubyte] - indices = [ oneIndices, twoIndices ] - numIndices = genericLength indices - count = map genericLength indices :: [GLsizei] - withArray count $ \countBuf -> - withMany withArray indices $ \indicesPtrs -> - withArray indicesPtrs $ \indicesBuf -> - multiDrawElements LineStrip countBuf UnsignedByte indicesBuf numIndices + color (Color3 1 1 1 :: Color3 GLfloat) + multiDrawElements LineStrip count UnsignedByte indices primCount hunk ./examples/RedBook/MVArray.hs 83 - myInit - displayCallback $= display + multiDrawInfo <- myInit + displayCallback $= display multiDrawInfo hunk ./examples/RedBook/VArray.hs 7 - This program demonstrates vertex arrays. NOTE: This program uses withArray - in an inefficient way, because some Haskell lists are marshaled more than - once. This could easily be fixed by doing this at initialization time and - passing the pointers around, but this would probably make the program a bit - less clear. + This program demonstrates vertex arrays. hunk ./examples/RedBook/VArray.hs 12 -import Foreign ( withArray ) +import Foreign ( Ptr, newArray ) hunk ./examples/RedBook/VArray.hs 22 -setup :: IORef SetupMethod -> IO () -setup setupMethod = do - s <- readIORef setupMethod +makeVertices :: IO (Ptr (Vertex2 GLint)) +makeVertices = newArray [ + Vertex2 25 25, + Vertex2 100 325, + Vertex2 175 25, + Vertex2 175 325, + Vertex2 250 25, + Vertex2 325 325 ] + +makeColors :: IO (Ptr (Color3 GLfloat)) +makeColors = newArray [ + Color3 1.0 0.2 0.2, + Color3 0.2 0.2 1.0, + Color3 0.8 1.0 0.2, + Color3 0.75 0.75 0.75, + Color3 0.35 0.35 0.35, + Color3 0.5 0.5 0.5 ] + +makeIntertwined :: IO (Ptr GLfloat) +makeIntertwined = newArray [ + 1.0, 0.2, 1.0, 100.0, 100.0, 0.0, + 1.0, 0.2, 0.2, 0.0, 200.0, 0.0, + 1.0, 1.0, 0.2, 100.0, 300.0, 0.0, + 0.2, 1.0, 0.2, 200.0, 300.0, 0.0, + 0.2, 1.0, 1.0, 300.0, 200.0, 0.0, + 0.2, 0.2, 1.0, 200.0, 100.0, 0.0 ] + +makeIndices :: IO (Ptr GLuint) +makeIndices = newArray [ 0, 1, 3, 4 ] + +-- we lump together our global state (and still call this Haskell :-) +data State = State { + vertices :: Ptr (Vertex2 GLint), + colors :: Ptr (Color3 GLfloat), + intertwined :: Ptr GLfloat, + indices :: Ptr GLuint, + setupMethod :: IORef SetupMethod, + derefMethod :: IORef DerefMethod } + +makeState :: IO State +makeState = do + v <- makeVertices + c <- makeColors + i <- makeIntertwined + n <- makeIndices + s <- newIORef Pointer + d <- newIORef DrawArray + return $ State v c i n s d + +setup :: State -> IO () +setup state = do + s <- readIORef (setupMethod state) hunk ./examples/RedBook/VArray.hs 76 - let vertices = [ 25, 25, - 100, 325, - 175, 25, - 175, 325, - 250, 25, - 325, 325 ] :: [GLint] - colors = [ 1.0, 0.2, 0.2, - 0.2, 0.2, 1.0, - 0.8, 1.0, 0.2, - 0.75, 0.75, 0.75, - 0.35, 0.35, 0.35, - 0.5, 0.5, 0.5 ] :: [GLfloat] hunk ./examples/RedBook/VArray.hs 78 - withArray vertices $ \verticesBuf -> - arrayPointer VertexArray $= VertexArrayDescriptor 2 Int 0 verticesBuf - withArray colors $ \ colorsBuf -> - arrayPointer ColorArray $= VertexArrayDescriptor 3 Float 0 colorsBuf + arrayPointer VertexArray $= VertexArrayDescriptor 2 Int 0 (vertices state) + arrayPointer ColorArray $= VertexArrayDescriptor 3 Float 0 (colors state) hunk ./examples/RedBook/VArray.hs 81 - let intertwined = [ 1.0, 0.2, 1.0, 100.0, 100.0, 0.0, - 1.0, 0.2, 0.2, 0.0, 200.0, 0.0, - 1.0, 1.0, 0.2, 100.0, 300.0, 0.0, - 0.2, 1.0, 0.2, 200.0, 300.0, 0.0, - 0.2, 1.0, 1.0, 300.0, 200.0, 0.0, - 0.2, 0.2, 1.0, 200.0, 100.0, 0.0 ] :: [GLfloat] - in withArray intertwined $ interleavedArrays C3fV3f 0 + interleavedArrays C3fV3f 0 (intertwined state) hunk ./examples/RedBook/VArray.hs 83 -myInit :: IORef SetupMethod -> IO () -myInit setupMethod = do +myInit :: IO State +myInit = do hunk ./examples/RedBook/VArray.hs 87 - setup setupMethod + state <- makeState + setup state + return state hunk ./examples/RedBook/VArray.hs 91 -display :: IORef DerefMethod -> DisplayCallback -display derefMethod = do +display :: State -> DisplayCallback +display state = do hunk ./examples/RedBook/VArray.hs 94 - d <- readIORef derefMethod + d <- readIORef (derefMethod state) hunk ./examples/RedBook/VArray.hs 98 - DrawElements -> let indices = [ 0, 1, 3, 4 ] :: [GLuint] - in withArray indices $ drawElements Polygon 4 UnsignedInt + DrawElements -> drawElements Polygon 4 UnsignedInt (indices state) hunk ./examples/RedBook/VArray.hs 110 -keyboardMouse :: IORef SetupMethod -> IORef DerefMethod -> KeyboardMouseCallback -keyboardMouse setupMethod _ (MouseButton LeftButton) Down _ _ = do - modifyIORef setupMethod nextValue - setup setupMethod +keyboardMouse :: State -> KeyboardMouseCallback +keyboardMouse state (MouseButton LeftButton) Down _ _ = do + modifyIORef (setupMethod state) nextValue + setup state hunk ./examples/RedBook/VArray.hs 115 -keyboardMouse _ derefMethod (MouseButton _) Down _ _ = do - modifyIORef derefMethod nextValue +keyboardMouse state (MouseButton _) Down _ _ = do + modifyIORef (derefMethod state) nextValue hunk ./examples/RedBook/VArray.hs 118 -keyboardMouse _ _ (Char '\27') Down _ _ = exitWith ExitSuccess -keyboardMouse _ _ _ _ _ _ = return () +keyboardMouse _ (Char '\27') Down _ _ = exitWith ExitSuccess +keyboardMouse _ _ _ _ _ = return () hunk ./examples/RedBook/VArray.hs 138 - setupMethod <- newIORef Pointer - derefMethod <- newIORef DrawArray - myInit setupMethod - displayCallback $= display derefMethod + state <- myInit + displayCallback $= display state hunk ./examples/RedBook/VArray.hs 141 - keyboardMouseCallback $= Just (keyboardMouse setupMethod derefMethod) + keyboardMouseCallback $= Just (keyboardMouse state) addfile ./examples/RedBook/Double.hs addfile ./examples/RedBook/Lines.hs hunk ./examples/RedBook/Double.hs 1 +{- + Double.hs (adapted from double.c which is (c) Silicon Graphics, Inc.) + Copyright (c) Sven Panne 2002-2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This is a simple double buffered program. + Pressing the left mouse button rotates the rectangle. + Pressing the middle mouse button stops the rotation. +-} + +import Data.IORef ( IORef, newIORef, readIORef, modifyIORef ) +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +display :: IORef GLfloat -> DisplayCallback +display spin = do + clear [ ColorBuffer ] + preservingMatrix $ do + s <- readIORef spin + rotate s (Vector3 0 0 1) + color (Color3 1 1 1 :: Color3 GLfloat) + rect (Vertex2 (-25) (-25)) (Vertex2 25 25 :: Vertex2 GLfloat) + swapBuffers + +spinDisplay :: IORef GLfloat -> IdleCallback +spinDisplay spin = do + let wrap n s = if s > n then s - n else s + modifyIORef spin (wrap 360 . (+ 2)) + postRedisplay Nothing + +myInit :: IO () +myInit = do + clearColor $= Color4 0 0 0 0 + shadeModel $= Flat + +reshape :: ReshapeCallback +reshape size = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + ortho (-50) 50 (-50) 50 (-1) 1 + matrixMode $= Modelview 0 + loadIdentity + +keyboardMouse :: IORef GLfloat -> KeyboardMouseCallback +keyboardMouse spin (MouseButton b) Down _ _ = + idleCallback $= case b of + LeftButton -> Just (spinDisplay spin) + _ -> Nothing +-- ESC not handled in the original example, but useful nevertheless +keyboardMouse _ (Char '\27') Down _ _ = exitWith ExitSuccess +keyboardMouse _ _ _ _ _ = return () + +-- Request double buffer display mode. +-- Register mouse input callback functions +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ DoubleBuffered, RGBMode ] + initialWindowSize $= Size 250 250 + initialWindowPosition $= Position 100 100 + createWindow progName + myInit + spin <- newIORef 0 + displayCallback $= display spin + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just (keyboardMouse spin) + mainLoop hunk ./examples/RedBook/Lines.hs 1 +{- + Lines.hs (adapted from lines.c which is (c) Silicon Graphics, Inc.) + Copyright (c) Sven Panne 2002-2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program demonstrates geometric primitives and their attributes. +-} + +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +drawOneLine :: Vertex2 GLfloat -> Vertex2 GLfloat -> IO () +drawOneLine p1 p2 = renderPrimitive Lines $ do vertex p1; vertex p2 + +myInit :: IO () +myInit = do + clearColor $= Color4 0 0 0 0 + shadeModel $= Flat + +display :: DisplayCallback +display = do + clear [ ColorBuffer ] + -- select white for all lines + color (Color3 1.0 1.0 1.0 :: Color3 GLfloat) + + -- in 1st row, 3 lines, each with a different stipple + lineStipple $= Just (1, 0x0101) -- dotted + drawOneLine (Vertex2 50 125) (Vertex2 150 125) + lineStipple $= Just (1, 0x00FF) -- dashed + drawOneLine (Vertex2 150 125) (Vertex2 50 125) + lineStipple $= Just (1, 0x1C47) -- dash/dot/dash + drawOneLine (Vertex2 250 125) (Vertex2 350 125) + + -- in 2nd row, 3 wide lines, each with different stipple + lineWidth $= 5.0 + lineStipple $= Just (1, 0x0101) -- dotted + drawOneLine (Vertex2 50 100) (Vertex2 150 100) + lineStipple $= Just (1, 0x00FF) -- dashed + drawOneLine (Vertex2 150 100) (Vertex2 250 100) + lineStipple $= Just (1, 0x1C47) -- dash/dot/dash + drawOneLine (Vertex2 250 100) (Vertex2 350 100) + lineWidth $= 1.0 + + -- in 3rd row, 6 lines, with dash/dot/dash stipple + -- as part of a single connected line strip + lineStipple $= Just (1, 0x1C47) -- dash/dot/dash + renderPrimitive LineStrip $ mapM_ vertex [ Vertex2 (50+(i*50)) (75 :: GLint) | i <- [0..6] ] + + -- in 4th row, 6 independent lines with same stipple + sequence_ [ drawOneLine (Vertex2 (50+( i *50)) 50) + (Vertex2 (50+((i+1)*50)) 50) | i <- [0..5] ] + + -- in 5th row, 1 line, with dash/dot/dash stipple + -- and a stipple repeat factor of 5 + lineStipple $= Just (5, 0x1C47) -- dash/dot/dash + drawOneLine (Vertex2 50 25) (Vertex2 350 25) + + lineStipple $= Nothing + flush + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + ortho2D 0 (fromIntegral w) 0 (fromIntegral h) + -- the following line is not in the original example, but it's good style... + matrixMode $= Modelview 0 + +keyboard :: KeyboardMouseCallback +keyboard (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard _ _ _ _ = return () + +-- Request double buffer display mode. +-- Register mouse input callback functions +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, RGBMode ] + initialWindowSize $= Size 400 150 + initialWindowPosition $= Position 100 100 + createWindow progName + myInit + displayCallback $= display + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just keyboard + mainLoop addfile ./examples/RedBook/Mipmap.hs addfile ./examples/RedBook/TexBind.hs addfile ./examples/RedBook/TexGen.hs addfile ./examples/RedBook/TexSub.hs addfile ./examples/RedBook/Texture3D.hs hunk ./examples/RedBook/Mipmap.hs 1 +{- + Mipmap.hs (adapted from mipmap.c which is (c) Silicon Graphics, Inc) + Copyright (c) Sven Panne 2002-2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program demonstrates using mipmaps for texture maps. To overtly show + the effect of mipmaps, each mipmap reduction level has a solidly colored, + contrasting texture image. Thus, the quadrilateral which is drawn is drawn + with several different colors. +-} + +import Foreign ( withArray ) +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +makeImage :: Level -> TextureSize2D -> Color4 GLubyte -> IO () +makeImage level size@(TextureSize2D w h) col = + withArray (replicate (fromIntegral (w * h)) col) $ + texImage2D NoProxy level RGBA' size 0 . PixelData RGBA UnsignedByte + +makeImages :: [Color4 GLubyte] -> IO () +makeImages colors = sequence_ $ zipWith3 makeImage levels sizes colors + where numLevels = length colors + levels = [ 0 .. fromIntegral numLevels - 1 ] + sizes = reverse (take numLevels [ TextureSize2D s s | s <- iterate (* 2) 1 ]) + +myInit :: IO (Maybe TextureObject) +myInit = do + depthFunc $= Just Less + shadeModel $= Flat + + exts <- get glExtensions + mbTexName <- if "GL_EXT_texture_object" `elem` exts + then do [texName] <- genObjectNames 1 + textureBinding Texture2D $= texName + return $ Just texName + else return Nothing + + textureWrapMode Texture2D S $= (Repeated, Repeat) + textureWrapMode Texture2D T $= (Repeated, Repeat) + textureFilter Texture2D $= ((Nearest, Just Nearest), Nearest) + + makeImages [ Color4 255 255 0 255, + Color4 255 0 255 255, + Color4 255 0 0 255, + Color4 0 255 0 255, + Color4 0 0 255 255, + Color4 255 255 255 255 ] + + textureEnvMode $= Decal + texture Texture2D $= Enabled + return mbTexName + +display :: Maybe TextureObject -> DisplayCallback +display mbTexName = do + clear [ ColorBuffer, DepthBuffer ] + maybe (return ()) (\texName -> textureBinding Texture2D $= texName) mbTexName + -- resolve overloading, not needed in "real" programs + let texCoord2f = texCoord :: TexCoord2 GLfloat -> IO () + vertex3f = vertex :: Vertex3 GLfloat -> IO () + renderPrimitive Quads $ do + texCoord2f (TexCoord2 0 0); vertex3f (Vertex3 ( -2) (-1) 0 ) + texCoord2f (TexCoord2 0 8); vertex3f (Vertex3 ( -2) 1 0 ) + texCoord2f (TexCoord2 8 8); vertex3f (Vertex3 2000 1 (-6000)) + texCoord2f (TexCoord2 8 0); vertex3f (Vertex3 2000 (-1) (-6000)) + flush + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + perspective 60 (fromIntegral w / fromIntegral h) 1 30000 + matrixMode $= Modelview 0 + loadIdentity + +keyboard :: KeyboardMouseCallback +keyboard (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard _ _ _ _ = return () + +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] + initialWindowSize $= Size 500 500 + initialWindowPosition $= Position 50 50 + createWindow progName + texName <- myInit + displayCallback $= display texName + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just keyboard + mainLoop hunk ./examples/RedBook/TexBind.hs 1 +{- + TexBind.hs (adapted from texbind.c which is (c) Silicon Graphics, Inc) + Copyright (c) Sven Panne 2002-2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program demonstrates using textureBinding by creating and managing + two textures. +-} + +import Control.Monad ( when ) +import Data.Bits ( (.&.) ) +import Foreign ( withArray ) +import System.Exit ( exitFailure, exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +-- Create checkerboard image +checkImageSize :: TextureSize2D +checkImageSize = TextureSize2D 64 64 + +withCheckImage :: TextureSize2D -> GLsizei -> (GLubyte -> (Color4 GLubyte)) + -> (PixelData (Color4 GLubyte) -> IO ()) -> IO () +withCheckImage (TextureSize2D w h) n f act = + withArray [ f c | + i <- [ 0 .. w - 1 ], + j <- [ 0 .. h - 1 ], + let c | (i .&. n) == (j .&. n) = 0 + | otherwise = 255 ] $ + act . PixelData RGBA UnsignedByte + +myInit :: IO (TextureObject, TextureObject) +myInit = do + clearColor $= Color4 0 0 0 0 + shadeModel $= Flat + depthFunc $= Just Less + rowAlignment Unpack $= 1 + + [texName0, texName1] <- genObjectNames 2 + textureBinding Texture2D $= texName0 + textureWrapMode Texture2D S $= (Repeated, Clamp) + textureWrapMode Texture2D T $= (Repeated, Clamp) + textureFilter Texture2D $= ((Nearest, Nothing), Nearest) + withCheckImage checkImageSize 0x08 (\c -> Color4 c c c 255) $ + texImage2D NoProxy 0 RGBA' checkImageSize 0 + + textureBinding Texture2D $= texName1 + textureWrapMode Texture2D S $= (Repeated, Clamp) + textureWrapMode Texture2D T $= (Repeated, Clamp) + textureFilter Texture2D $= ((Nearest, Nothing), Nearest) + textureEnvMode $= Decal + withCheckImage checkImageSize 0x10 (\c -> Color4 c 0 0 255) $ + texImage2D NoProxy 0 RGBA' checkImageSize 0 + texture Texture2D $= Enabled + return (texName0, texName1) + +display :: (TextureObject, TextureObject) -> DisplayCallback +display (texName0, texName1) = do + clear [ ColorBuffer, DepthBuffer ] + -- resolve overloading, not needed in "real" programs + let texCoord2f = texCoord :: TexCoord2 GLfloat -> IO () + vertex3f = vertex :: Vertex3 GLfloat -> IO () + textureBinding Texture2D $= texName0 + renderPrimitive Quads $ do + texCoord2f (TexCoord2 0 0); vertex3f (Vertex3 (-2.0) (-1.0) 0.0 ) + texCoord2f (TexCoord2 0 1); vertex3f (Vertex3 (-2.0) 1.0 0.0 ) + texCoord2f (TexCoord2 1 1); vertex3f (Vertex3 0.0 1.0 0.0 ) + texCoord2f (TexCoord2 1 0); vertex3f (Vertex3 0.0 (-1.0) 0.0 ) + textureBinding Texture2D $= texName1 + renderPrimitive Quads $ do + texCoord2f (TexCoord2 0 0); vertex3f (Vertex3 1.0 (-1.0) 0.0 ) + texCoord2f (TexCoord2 0 1); vertex3f (Vertex3 1.0 1.0 0.0 ) + texCoord2f (TexCoord2 1 1); vertex3f (Vertex3 2.41421 1.0 (-1.41421)) + texCoord2f (TexCoord2 1 0); vertex3f (Vertex3 2.41421 (-1.0) (-1.41421)) + flush + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + perspective 60 (fromIntegral w / fromIntegral h) 1 30 + matrixMode $= Modelview 0 + loadIdentity + translate (Vector3 0 0 (-3.6 :: GLfloat)) + +keyboard :: KeyboardMouseCallback +keyboard (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard _ _ _ _ = return () + +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] + initialWindowSize $= Size 250 250 + initialWindowPosition $= Position 100 100 + createWindow progName + -- we have to do this *after* createWindow, otherwise we have no OpenGL context + version <- get glVersion + when (take 3 version == "1.0") $ do + putStrLn "This program demonstrates a feature which is not in OpenGL Version 1.0." + putStrLn "If your implementation of OpenGL Version 1.0 has the right extensions," + putStrLn "you may be able to modify this program to make it run." + exitFailure + texNames <- myInit + reshapeCallback $= Just reshape + displayCallback $= display texNames + keyboardMouseCallback $= Just keyboard + mainLoop hunk ./examples/RedBook/TexGen.hs 1 +{- + TexGen.hs (adapted from texgen.c which is (c) Silicon Graphics, Inc) + Copyright (c) Sven Panne 2002-2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program draws a texture mapped teapot with automatically generated + texture coordinates. The texture is rendered as stripes on the teapot. + Initially, the object is drawn with texture coordinates based upon the + object coordinates of the vertex and distance from the plane x = 0. + Pressing the 'e' key changes the coordinate generation to eye coordinates + of the vertex. Pressing the 'o' key switches it back to the object + coordinates. Pressing the 's' key changes the plane to a slanted one + (x + y + z = 0). Pressing the 'x' key switches it back to x = 0. +-} + +import Data.Char ( toLower ) +import Foreign ( withArray ) +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +stripeImageWidth :: TextureSize1D +stripeImageWidth = TextureSize1D 32 + +xEqualZero, slanted :: Plane GLdouble +xEqualZero = Plane 1 0 0 0 +slanted = Plane 1 1 1 0 + +withStripeImage :: (PixelData (Color4 GLubyte) -> IO a) -> IO a +withStripeImage act = + withArray [ Color4 (if j <= 4 then 255 else 0) + (if j > 4 then 255 else 0) + 0 + 255 + | j <- [ 0 .. w - 1 ] ] $ + act . PixelData RGBA UnsignedByte + where TextureSize1D w = stripeImageWidth + +myInit :: IO (Maybe TextureObject) +myInit = do + clearColor $= Color4 0 0 0 0 + depthFunc $= Just Less + shadeModel $= Smooth + rowAlignment Unpack $= 1 + + exts <- get glExtensions + mbTexName <- if "GL_EXT_texture_object" `elem` exts + then do [texName] <- genObjectNames 1 + textureBinding Texture1D $= texName + return $ Just texName + else return Nothing + + textureWrapMode Texture1D S $= (Repeated, Repeat) + textureFilter Texture1D $= ((Linear', Nothing), Linear') + withStripeImage $ texImage1D NoProxy 0 RGBA' stripeImageWidth 0 + + textureEnvMode $= Modulate + textureGenMode S $= Just (ObjectLinear xEqualZero) + + texture Texture1D $= Enabled + lighting $= Enabled + light (Light 0) $= Enabled + autoNormal $= Enabled + normalize $= Enabled + frontFace $= CW + cullFace $= Just Back + materialShininess Front $= 64 + return mbTexName + +display :: Maybe TextureObject -> DisplayCallback +display mbTexName = do + clear [ ColorBuffer, DepthBuffer ] + preservingMatrix $ do + rotate (45 :: GLfloat) (Vector3 0 0 1) + maybe (return ()) (\texName -> textureBinding Texture1D $= texName) mbTexName + renderObject Solid (Teapot 2) + flush + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + let wf = fromIntegral w + hf = fromIntegral h + if w <= h + then ortho (-3.5) 3.5 (-3.5*hf/wf) (3.5*hf/wf) (-3.5) 3.5 + else ortho (-3.5*hf/wf) (3.5*hf/wf) (-3.5) 3.5 (-3.5) 3.5 + matrixMode $= Modelview 0 + +keyboard :: KeyboardMouseCallback +keyboard (Char c) Down _ _ = case toLower c of + 'e' -> setGenMode EyeLinear + 'o' -> setGenMode ObjectLinear + 's' -> setPlane slanted + 'x' -> setPlane xEqualZero + '\27' -> exitWith ExitSuccess + _ -> return () +keyboard _ _ _ _ = return () + +setGenMode :: (Plane GLdouble -> TextureGenMode) -> IO () +setGenMode mode = do + currentGenMode <- get (textureGenMode S) + case currentGenMode of + Just (EyeLinear plane) -> textureGenMode S $= Just (mode plane) + Just (ObjectLinear plane) -> textureGenMode S $= Just (mode plane) + _ -> error "setGenMode: should never happen..." + postRedisplay Nothing + +setPlane :: Plane GLdouble -> IO () +setPlane plane = do + currentGenMode <- get (textureGenMode S) + case currentGenMode of + Just (EyeLinear _) -> textureGenMode S $= Just (EyeLinear plane) + Just (ObjectLinear _) -> textureGenMode S $= Just (ObjectLinear plane) + _ -> error "setPlane: should never happen..." + postRedisplay Nothing + +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] + initialWindowSize $= Size 256 256 + initialWindowPosition $= Position 100 100 + createWindow progName + mbTexName <- myInit + displayCallback $= display mbTexName + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just keyboard + mainLoop hunk ./examples/RedBook/TexSub.hs 1 +{- + TexSub.hs (adapted from texsub.c which is (c) Silicon Graphics, Inc) + Copyright (c) Sven Panne 2002-2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program texture maps a checkerboard image onto two rectangles. This + program clamps the texture, if the texture coordinates fall outside 0.0 + and 1.0. If the s key is pressed, a texture subimage is used to alter the + original texture. If the r key is pressed, the original texture is restored. +-} + +import Control.Monad ( liftM, when ) +import Data.Char ( toLower ) +import Data.Bits ( (.&.) ) +import Foreign ( newArray ) +import System.Exit ( exitFailure, exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +checkImageSize, subImageSize :: TextureSize2D +checkImageSize = TextureSize2D 64 64 +subImageSize = TextureSize2D 16 16 + +type Image = PixelData (Color4 GLubyte) + +makeCheckImage :: + TextureSize2D -> GLsizei -> (GLubyte -> (Color4 GLubyte)) -> IO Image +makeCheckImage (TextureSize2D w h) n f = + liftM (PixelData RGBA UnsignedByte) $ + newArray [ f c | + i <- [ 0 .. w - 1 ], + j <- [ 0 .. h - 1 ], + let c | (i .&. n) == (j .&. n) = 0 + | otherwise = 255 ] + +myInit :: IO (TextureObject, Image, Image) +myInit = do + clearColor $= Color4 0 0 0 0 + shadeModel $= Flat + depthFunc $= Just Less + + checkImage <- makeCheckImage checkImageSize 0x8 (\c -> Color4 c c c 255) + subImage <- makeCheckImage subImageSize 0x4 (\c -> Color4 c 0 0 255) + rowAlignment Unpack $= 1 + + [texName] <- genObjectNames 1 + textureBinding Texture2D $= texName + + textureWrapMode Texture2D S $= (Repeated, Repeat) + textureWrapMode Texture2D T $= (Repeated, Repeat) + textureFilter Texture2D $= ((Nearest, Nothing), Nearest) + texImage2D NoProxy 0 RGBA' checkImageSize 0 checkImage + return (texName, checkImage, subImage) + +display :: TextureObject -> DisplayCallback +display texName = do + clear [ ColorBuffer, DepthBuffer ] + texture Texture2D $= Enabled + textureEnvMode $= Decal + textureBinding Texture2D $= texName + + -- resolve overloading, not needed in "real" programs + let texCoord2f = texCoord :: TexCoord2 GLfloat -> IO () + vertex3f = vertex :: Vertex3 GLfloat -> IO () + renderPrimitive Quads $ do + texCoord2f (TexCoord2 0 0); vertex3f (Vertex3 (-2.0) (-1.0) 0.0 ) + texCoord2f (TexCoord2 0 1); vertex3f (Vertex3 (-2.0) 1.0 0.0 ) + texCoord2f (TexCoord2 1 1); vertex3f (Vertex3 0.0 1.0 0.0 ) + texCoord2f (TexCoord2 1 0); vertex3f (Vertex3 0.0 (-1.0) 0.0 ) + + texCoord2f (TexCoord2 0 0); vertex3f (Vertex3 1.0 (-1.0) 0.0 ) + texCoord2f (TexCoord2 0 1); vertex3f (Vertex3 1.0 1.0 0.0 ) + texCoord2f (TexCoord2 1 1); vertex3f (Vertex3 2.41421 1.0 (-1.41421)) + texCoord2f (TexCoord2 1 0); vertex3f (Vertex3 2.41421 (-1.0) (-1.41421)) + flush + texture Texture2D $= Disabled + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + perspective 60 (fromIntegral w / fromIntegral h) 1 30 + matrixMode $= Modelview 0 + loadIdentity + translate (Vector3 0 0 (-3.6 :: GLfloat)) + +keyboard :: TextureObject -> Image -> Image -> KeyboardMouseCallback +keyboard texName checkImage subImage (Char c) Down _ _ = case toLower c of + 's' -> do + textureBinding Texture2D $= texName + texSubImage2D 0 (TexturePosition2D 12 44) subImageSize subImage + postRedisplay Nothing + 'r' -> do + textureBinding Texture2D $= texName + texImage2D NoProxy 0 RGBA' checkImageSize 0 checkImage + postRedisplay Nothing + '\27' -> exitWith ExitSuccess + _ -> return () +keyboard _ _ _ _ _ _ _ = return () + +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] + initialWindowSize $= Size 250 250 + initialWindowPosition $= Position 100 100 + createWindow progName + -- we have to do this *after* createWindow, otherwise we have no OpenGL context + version <- get glVersion + when (take 3 version == "1.0") $ do + putStrLn "This program demonstrates a feature which is not in OpenGL Version 1.0." + putStrLn "If your implementation of OpenGL Version 1.0 has the right extensions," + putStrLn "you may be able to modify this program to make it run." + exitFailure + (texName, checkImage, subImage) <- myInit + displayCallback $= display texName + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just (keyboard texName checkImage subImage) + mainLoop hunk ./examples/RedBook/Texture3D.hs 1 +{- + Texture3D.hs (adapted from texture3d.c which is (c) Silicon Graphics, Inc) + Copyright (c) Sven Panne 2002-2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program demonstrates using a three-dimensional texture. It creates + a 3D texture and then renders two rectangles with different texture + coordinates to obtain different "slices" of the 3D texture. +-} + +import Control.Monad ( unless ) +import Foreign ( withArray ) +import System.Exit ( exitFailure, exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +-- Create checkerboard image +imageSize :: TextureSize3D +imageSize = TextureSize3D 16 16 16 + +withImage :: (PixelData (Color3 GLubyte) -> IO ()) -> IO () +withImage act = + withArray [ Color3 (s * 17) (t * 17) (r * 17) | + r <- [ 0 .. fromIntegral d - 1 ], + t <- [ 0 .. fromIntegral h - 1 ], + s <- [ 0 .. fromIntegral w - 1 ] ] $ + act . PixelData RGB UnsignedByte + where (TextureSize3D w h d) = imageSize + +myInit :: IO () +myInit = do + clearColor $= Color4 0 0 0 0 + shadeModel $= Flat + depthFunc $= Just Less + rowAlignment Unpack $= 1 + + [texName] <- genObjectNames 1 + textureBinding Texture3D $= texName + textureWrapMode Texture3D S $= (Repeated, Clamp) + textureWrapMode Texture3D T $= (Repeated, Clamp) + textureWrapMode Texture3D R $= (Repeated, Clamp) + textureFilter Texture3D $= ((Nearest, Nothing), Nearest) + withImage $ texImage3D NoProxy 0 RGB' imageSize 0 + texture Texture3D $= Enabled + +display :: DisplayCallback +display = do + clear [ ColorBuffer, DepthBuffer ] + -- resolve overloading, not needed in "real" programs + let texCoord3f = texCoord :: TexCoord3 GLfloat -> IO () + vertex3f = vertex :: Vertex3 GLfloat -> IO () + renderPrimitive Quads $ do + texCoord3f (TexCoord3 0 0 0); vertex3f (Vertex3 (-2.25) (-1) 0) + texCoord3f (TexCoord3 0 1 0); vertex3f (Vertex3 (-2.25) 1 0) + texCoord3f (TexCoord3 1 1 1); vertex3f (Vertex3 (-0.25) 1 0) + texCoord3f (TexCoord3 1 0 1); vertex3f (Vertex3 (-0.25) (-1) 0) + + texCoord3f (TexCoord3 0 0 1); vertex3f (Vertex3 0.25 (-1) 0) + texCoord3f (TexCoord3 0 1 1); vertex3f (Vertex3 0.25 1 0) + texCoord3f (TexCoord3 1 1 0); vertex3f (Vertex3 2.25 1 0) + texCoord3f (TexCoord3 1 0 0); vertex3f (Vertex3 2.25 (-1) 0) + flush + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + perspective 60 (fromIntegral w / fromIntegral h) 1 30 + matrixMode $= Modelview 0 + loadIdentity + translate (Vector3 0 0 (-4 :: GLfloat)) + +keyboard :: KeyboardMouseCallback +keyboard (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard _ _ _ _ = return () + +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] + initialWindowSize $= Size 250 250 + initialWindowPosition $= Position 100 100 + createWindow progName + -- we have to do this *after* createWindow, otherwise we have no OpenGL context + exts <- get glExtensions + unless ("GL_EXT_texture3D" `elem` exts) $ do + putStrLn "Sorry, this demo requires the GL_EXT_texture3D extension." + exitFailure + myInit + reshapeCallback $= Just reshape + displayCallback $= display + keyboardMouseCallback $= Just keyboard + mainLoop hunk ./examples/RedBook/00-README 72 - Texsub.hs (1.1) + TexSub.hs (1.1) hunk ./examples/RedBook/DList.hs 63 - if (w <= h) + if w <= h hunk ./examples/RedBook/Checker.hs 13 -import Foreign ( newArray ) +import Foreign ( withArray ) hunk ./examples/RedBook/Checker.hs 21 -makeCheckImage :: IO (PixelData (Color4 GLubyte)) -makeCheckImage = do - let TextureSize2D w h = checkImageSize - buf <- newArray [ Color4 c c c 255 | - i <- [ 0 .. w - 1 ], - j <- [ 0 .. h - 1 ], - let c | (i .&. 0x8) == (j .&. 0x8) = 0 - | otherwise = 255 ] - return $ PixelData RGBA UnsignedByte buf +withCheckImage :: TextureSize2D -> GLsizei -> (GLubyte -> (Color4 GLubyte)) + -> (PixelData (Color4 GLubyte) -> IO ()) -> IO () +withCheckImage (TextureSize2D w h) n f act = + withArray [ f c | + i <- [ 0 .. w - 1 ], + j <- [ 0 .. h - 1 ], + let c | (i .&. n) == (j .&. n) = 0 + | otherwise = 255 ] $ + act. PixelData RGBA UnsignedByte hunk ./examples/RedBook/Checker.hs 36 - - checkImage <- makeCheckImage hunk ./examples/RedBook/Checker.hs 48 - texImage2D NoProxy 0 RGBA' checkImageSize 0 checkImage + withCheckImage checkImageSize 0x8 (\c -> Color4 c c c 255) $ + texImage2D NoProxy 0 RGBA' checkImageSize 0 hunk ./examples/RedBook/Image.hs 18 +import Control.Monad ( liftM ) hunk ./examples/RedBook/Image.hs 29 -makeCheckImage :: IO (PixelData (Color3 GLubyte)) -makeCheckImage = do - let Size w h = checkImageSize - buf <- newArray [ Color3 c c c | - i <- [ 0 .. w - 1 ], - j <- [ 0 .. h - 1 ], - let c | (i .&. 0x8) == (j .&. 0x8) = 0 - | otherwise = 255 ] - return $ PixelData RGB UnsignedByte buf +type Image = PixelData (Color3 GLubyte) hunk ./examples/RedBook/Image.hs 31 -myInit :: IO (PixelData (Color3 GLubyte)) +makeCheckImage :: Size -> GLsizei -> (GLubyte -> (Color3 GLubyte)) -> IO Image +makeCheckImage (Size w h) n f = + liftM (PixelData RGB UnsignedByte) $ + newArray [ f c | + i <- [ 0 .. w - 1 ], + j <- [ 0 .. h - 1 ], + let c | (i .&. n) == (j .&. n) = 0 + | otherwise = 255 ] + +myInit :: IO Image hunk ./examples/RedBook/Image.hs 45 - makeCheckImage + makeCheckImage checkImageSize 0x8 (\c -> Color3 c c c) hunk ./examples/RedBook/Image.hs 47 -display :: PixelData a -> DisplayCallback +display :: Image -> DisplayCallback addfile ./examples/RedBook/CubeMap.hs hunk ./examples/RedBook/Checker.hs 49 - texImage2D NoProxy 0 RGBA' checkImageSize 0 + texImage2D Nothing NoProxy 0 RGBA' checkImageSize 0 hunk ./examples/RedBook/CubeMap.hs 1 +{- + CubeMap.hs (adapted from CubeMap.c which is (c) Silicon Graphics, Inc) + Copyright (c) Sven Panne 2002-2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program demonstrates cube map textures. Six different colored checker + board textures are created and applied to a lit sphere. + + Pressing the 'f' and 'b' keys translate the viewer forward and backward. +-} + +import Data.Bits ( (.&.) ) +import Data.IORef ( IORef, newIORef, readIORef, modifyIORef ) +import Foreign ( withArray ) +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +imageSize :: TextureSize2D +imageSize = TextureSize2D 4 4 + +withCheckImage :: TextureSize2D -> GLsizei -> (GLubyte -> (Color4 GLubyte)) + -> (PixelData (Color4 GLubyte) -> IO ()) -> IO () +withCheckImage (TextureSize2D w h) n f act = + withArray [ f c | + i <- [ 0 .. w - 1 ], + j <- [ 0 .. h - 1 ], + let c | (i .&. n) == (j .&. n) = 0 + | otherwise = 255 ] $ + act. PixelData RGBA UnsignedByte + +makeImage :: CubeMapTarget -> (GLubyte -> (Color4 GLubyte)) -> IO () +makeImage target f = + withCheckImage imageSize 0x1 f $ + texImage2D (Just target) NoProxy 0 RGBA' imageSize 0 + +myInit :: IO () +myInit = do + clearColor $= Color4 0 0 0 0 + depthFunc $= Just Less + shadeModel $= Smooth + + rowAlignment Unpack $= 1 + textureWrapMode TextureCubeMap S $= (Repeated, Repeat) + textureWrapMode TextureCubeMap T $= (Repeated, Repeat) + textureWrapMode TextureCubeMap R $= (Repeated, Repeat) + textureFilter TextureCubeMap $= ((Nearest, Nothing), Nearest) + + makeImage TextureCubeMapPositiveX (\c -> Color4 c c c 255) + makeImage TextureCubeMapNegativeX (\c -> Color4 0 c c 255) + makeImage TextureCubeMapPositiveY (\c -> Color4 c c 0 255) + makeImage TextureCubeMapNegativeY (\c -> Color4 255 c c 255) + makeImage TextureCubeMapPositiveZ (\c -> Color4 c 0 c 255) + makeImage TextureCubeMapNegativeZ (\c -> Color4 c c 255 255) + + textureGenMode S $= Just NormalMap + textureGenMode T $= Just NormalMap + textureGenMode R $= Just NormalMap + + textureEnvMode $= Modulate + + texture TextureCubeMap $= Enabled + lighting $= Enabled + light (Light 0) $= Enabled + autoNormal $= Enabled + normalize $= Enabled + materialDiffuse Front $= Color4 1 1 1 1 + +display :: IORef GLfloat -> DisplayCallback +display zTrans = do + clear [ ColorBuffer, DepthBuffer ] + preservingMatrix $ do + z <- readIORef zTrans + translate (Vector3 0 0 z) + renderObject Solid (Sphere' 5 20 10) + swapBuffers + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + perspective 40 (fromIntegral w / fromIntegral h) 1 300 + matrixMode $= Modelview 0 + loadIdentity + translate (Vector3 0 0 (-20 :: GLfloat)) + +keyboard :: IORef GLfloat -> KeyboardMouseCallback +keyboard zTrans (Char 'f') Down _ _ = move zTrans (-0.2) +keyboard zTrans (Char 'b') Down _ _ = move zTrans 0.2 +keyboard _ (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard _ _ _ _ _ = return () + +move :: IORef GLfloat -> GLfloat -> IO () +move zTrans inc = do + modifyIORef zTrans (+ inc) + postRedisplay Nothing + +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ DoubleBuffered, RGBMode, WithDepthBuffer ] + initialWindowSize $= Size 400 400 + initialWindowPosition $= Position 50 50 + createWindow progName + myInit + zTrans <- newIORef 0 + displayCallback $= display zTrans + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just (keyboard zTrans) + mainLoop hunk ./examples/RedBook/Mipmap.hs 20 - texImage2D NoProxy level RGBA' size 0 . PixelData RGBA UnsignedByte + texImage2D Nothing NoProxy level RGBA' size 0 . PixelData RGBA UnsignedByte hunk ./examples/RedBook/Mipmap.hs 33 + translate (Vector3 0 0 (-3.6 :: GLfloat)) + rowAlignment Unpack $= 1 + hunk ./examples/RedBook/TexBind.hs 44 - texImage2D NoProxy 0 RGBA' checkImageSize 0 + texImage2D Nothing NoProxy 0 RGBA' checkImageSize 0 hunk ./examples/RedBook/TexBind.hs 52 - texImage2D NoProxy 0 RGBA' checkImageSize 0 + texImage2D Nothing NoProxy 0 RGBA' checkImageSize 0 hunk ./examples/RedBook/TexSub.hs 52 - texImage2D NoProxy 0 RGBA' checkImageSize 0 checkImage + texImage2D Nothing NoProxy 0 RGBA' checkImageSize 0 checkImage hunk ./examples/RedBook/TexSub.hs 92 - texSubImage2D 0 (TexturePosition2D 12 44) subImageSize subImage + texSubImage2D Nothing 0 (TexturePosition2D 12 44) subImageSize subImage hunk ./examples/RedBook/TexSub.hs 96 - texImage2D NoProxy 0 RGBA' checkImageSize 0 checkImage + texImage2D Nothing NoProxy 0 RGBA' checkImageSize 0 checkImage hunk ./examples/RedBook/TexGen.hs 88 - else ortho (-3.5*hf/wf) (3.5*hf/wf) (-3.5) 3.5 (-3.5) 3.5 + else ortho (-3.5*wf/hf) (3.5*wf/hf) (-3.5) 3.5 (-3.5) 3.5 hunk ./examples/RedBook/TexGen.hs 90 + loadIdentity addfile ./examples/RedBook/MultiTex.hs hunk ./examples/RedBook/MultiTex.hs 1 +{- + MultiTex.hs (adapted from multitex.c which is (c) Silicon Graphics, Inc) + Copyright (c) Sven Panne 2002-2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE +-} + +import Control.Monad ( unless ) +import Foreign ( withArray ) +import System.Exit ( exitFailure, exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +specifyTexture :: TextureSize2D -> (GLubyte -> GLubyte -> Color4 GLubyte) -> IO () +specifyTexture size@(TextureSize2D w h) f = + withArray [ f i j | i <- [ 0 .. fromIntegral w - 1 ], + j <- [ 0 .. fromIntegral h - 1] ] $ + texImage2D Nothing NoProxy 0 RGBA' size 0 . PixelData RGBA UnsignedByte + +myInit :: IO () +myInit = do + clearColor $= Color4 0 0 0 0 + shadeModel $= Flat + depthFunc $= Just Less + rowAlignment Unpack $= 1 + + [texName0, texName1] <- genObjectNames 2 + textureBinding Texture2D $= texName0 + -- Note: We use much brighter colors than in the original example where + -- everything was almost black. + specifyTexture (TextureSize2D 32 32) (\i j -> Color4 (i*8) (j*8) ((i*j) `div` 4) 255) + textureFilter Texture2D $= ((Nearest, Nothing), Nearest) + textureWrapMode Texture2D S $= (Repeated, Repeat) + textureWrapMode Texture2D T $= (Repeated, Repeat) + + textureBinding Texture2D $= texName1 + specifyTexture (TextureSize2D 16 16) (\i j -> Color4 255 (i*16) (j*16) 255) + textureFilter Texture2D $= ((Linear', Nothing), Linear') + textureWrapMode Texture2D S $= (Repeated, ClampToEdge) + textureWrapMode Texture2D T $= (Repeated, ClampToEdge) + -- Use the two texture objects to define two texture units + -- for use in multitexturing + activeTexture $= TextureUnit 0 + texture Texture2D $= Enabled + textureBinding Texture2D $= texName0 + textureEnvMode $= Replace + matrixMode $= Texture + loadIdentity + translate (Vector3 0.5 0.5 (0 :: GLfloat)) + rotate (45 :: GLfloat) (Vector3 0 0 1) + translate (Vector3 (-0.5) (-0.5) (0 :: GLfloat)) + matrixMode $= Modelview 0 + activeTexture $= TextureUnit 1 + texture Texture2D $= Enabled + textureBinding Texture2D $= texName1 + textureEnvMode $= Modulate + +display :: DisplayCallback +display = do + clear [ ColorBuffer, DepthBuffer ] + -- resolve overloading, not needed in "real" programs + let multiTexCoord2f = multiTexCoord :: TextureUnit -> TexCoord2 GLfloat -> IO () + vertex2f = vertex :: Vertex2 GLfloat -> IO () + renderPrimitive Triangles $ do + multiTexCoord2f (TextureUnit 0) (TexCoord2 0 0) + multiTexCoord2f (TextureUnit 1) (TexCoord2 1 0) + vertex2f (Vertex2 0 0) + multiTexCoord2f (TextureUnit 0) (TexCoord2 0.5 1) + multiTexCoord2f (TextureUnit 1) (TexCoord2 0.5 0) + vertex2f (Vertex2 50 100) + multiTexCoord2f (TextureUnit 0) (TexCoord2 1 0) + multiTexCoord2f (TextureUnit 1) (TexCoord2 1 1) + vertex2f (Vertex2 100 0) + flush + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + let wf = fromIntegral w + hf = fromIntegral h + if w <= h + then ortho2D 0 100 0 (100*hf/wf) + else ortho2D 0 (100*wf/hf) 0 100 + matrixMode $= Modelview 0 + loadIdentity + +keyboard :: KeyboardMouseCallback +keyboard (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard _ _ _ _ = return () + +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] + initialWindowSize $= Size 250 250 + initialWindowPosition $= Position 100 100 + createWindow progName + -- we have to do this *after* createWindow, otherwise we have no OpenGL context + exts <- get glExtensions + unless ("GL_ARB_multitexture" `elem` exts && + "GL_EXT_texture_object" `elem` exts) $ do + putStrLn "Sorry, this demo requires the GL_ARB_multitexture and GL_EXT_texture_object extensions." + exitFailure + myInit + reshapeCallback $= Just reshape + displayCallback $= display + keyboardMouseCallback $= Just keyboard + mainLoop hunk ./examples/Misc/ARBOcclude.hs 9 -import Data.IORef ( IORef, newIORef, readIORef, writeIORef, modifyIORef ) +import Data.IORef ( IORef, newIORef ) hunk ./examples/Misc/ARBOcclude.hs 27 - l <- readIORef lastTime + l <- get lastTime hunk ./examples/Misc/ARBOcclude.hs 31 - writeIORef lastTime time + lastTime $= time hunk ./examples/Misc/ARBOcclude.hs 33 - s <- readIORef sign + s <- get sign hunk ./examples/Misc/ARBOcclude.hs 35 - x <- readIORef xPos + x <- get xPos hunk ./examples/Misc/ARBOcclude.hs 38 - writeIORef xPos 2.5 - writeIORef sign (-1) + xPos $= 2.5 + sign $= (-1) hunk ./examples/Misc/ARBOcclude.hs 42 - writeIORef xPos (-2.5) - writeIORef sign 1 + xPos $= (-2.5) + sign $= 1 hunk ./examples/Misc/ARBOcclude.hs 60 - x <- readIORef xPos + x <- get xPos hunk ./examples/Misc/ARBOcclude.hs 135 -keyboard anim xPos sign lastTime (Char ' ') Down _ _ = do modifyIORef anim not +keyboard anim xPos sign lastTime (Char ' ') Down _ _ = do anim $~ not hunk ./examples/Misc/ARBOcclude.hs 143 - a <- readIORef anim + a <- get anim hunk ./examples/Misc/ARBOcclude.hs 148 - modifyIORef xPos (+ s) + xPos $~ (+ s) hunk ./examples/RedBook/CubeMap.hs 14 -import Data.IORef ( IORef, newIORef, readIORef, modifyIORef ) +import Data.IORef ( IORef, newIORef ) hunk ./examples/RedBook/CubeMap.hs 73 - z <- readIORef zTrans + z <- get zTrans hunk ./examples/RedBook/CubeMap.hs 96 - modifyIORef zTrans (+ inc) + zTrans $~ (+ inc) hunk ./examples/RedBook/Double.hs 12 -import Data.IORef ( IORef, newIORef, readIORef, modifyIORef ) +import Data.IORef ( IORef, newIORef ) hunk ./examples/RedBook/Double.hs 20 - s <- readIORef spin + s <- get spin hunk ./examples/RedBook/Double.hs 29 - modifyIORef spin (wrap 360 . (+ 2)) + spin $~ (wrap 360 . (+ 2)) hunk ./examples/RedBook/Image.hs 20 -import Data.IORef ( IORef, newIORef, readIORef, writeIORef, modifyIORef ) +import Data.IORef ( IORef, newIORef ) hunk ./examples/RedBook/Image.hs 72 - z <- readIORef zoomFactor + z <- get zoomFactor hunk ./examples/RedBook/Image.hs 80 - writeIORef zoomFactor 1.0 + zoomFactor $= 1.0 hunk ./examples/RedBook/Image.hs 86 - modifyIORef zoomFactor (max 0.5 . min 3.0 . (+ inc)) - readIORef zoomFactor >>= putStrLn . ("zoomFactor is now " ++) . show + zoomFactor $~! (max 0.5 . min 3.0 . (+ inc)) + get zoomFactor >>= putStrLn . ("zoomFactor is now " ++) . show hunk ./examples/RedBook/PickSquare.hs 13 -import Data.IORef ( IORef, newIORef, readIORef, modifyIORef ) +import Data.IORef ( IORef, newIORef ) hunk ./examples/RedBook/PickSquare.hs 38 - val <- readIORef (board ! (i,j)) + val <- get (board ! (i,j)) hunk ./examples/RedBook/PickSquare.hs 59 - modifyIORef (board ! (i,j)) (\x -> (x + 1) `mod` 3)) + (board ! (i,j)) $~ (\x -> (x + 1) `mod` 3)) hunk ./examples/RedBook/TessWind.hs 13 -import Data.IORef ( IORef, newIORef, readIORef, modifyIORef ) +import Data.IORef ( IORef, newIORef ) hunk ./examples/RedBook/TessWind.hs 98 - windingRule <- readIORef currentWindingRule + windingRule <- get currentWindingRule hunk ./examples/RedBook/TessWind.hs 162 - 'w' -> do modifyIORef currentWindingRule nextWindingRule + 'w' -> do currentWindingRule $~ nextWindingRule hunk ./examples/RedBook/VArray.hs 11 -import Data.IORef ( IORef, newIORef, readIORef, modifyIORef ) +import Data.IORef ( IORef, newIORef ) hunk ./examples/RedBook/VArray.hs 73 - s <- readIORef (setupMethod state) + s <- get (setupMethod state) hunk ./examples/RedBook/VArray.hs 94 - d <- readIORef (derefMethod state) + d <- get (derefMethod state) hunk ./examples/RedBook/VArray.hs 112 - modifyIORef (setupMethod state) nextValue + setupMethod state $~ nextValue hunk ./examples/RedBook/VArray.hs 116 - modifyIORef (derefMethod state) nextValue + derefMethod state $~ nextValue addfile ./examples/Misc/Gears.hs hunk ./examples/Misc/Gears.hs 1 +{- + Gears.hs (adapted from gears.c which is (c) Brian Paul) + Copyright (c) Shawn P. Garbett 2004 + Further hacked by Sven Panne + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + Command line options: + -info print GL implementation information + -exit automatically exit after 30 seconds +-} + +-------------------------------------------------------------------------------- + +import Control.Monad ( when ) +import Data.List ( intersperse ) +import Data.IORef ( IORef, newIORef ) +import System.Console.GetOpt +import System.Exit ( exitWith, ExitCode(ExitSuccess), exitFailure ) +import Graphics.UI.GLUT + +-------------------------------------------------------------------------------- + +type View = (GLfloat, GLfloat, GLfloat) + +-- Draw a gear wheel. You'll probably want to call this function when +-- building a display list since we do a lot of trig here. +-- +-- Input: innerRadius - radius of hole at center +-- outerRadius - radius at center of teeth +-- width - width of gear +-- teeth - number of teeth +-- toothDepth - depth of tooth + +gear :: GLfloat -> GLfloat -> GLfloat -> GLint -> GLfloat -> IO () +gear innerRadius outerRadius width teeth toothDepth = do + let r0 = innerRadius + r1 = outerRadius - toothDepth / 2 + r2 = outerRadius + toothDepth / 2 + + da = 2 * pi / fromIntegral teeth / 4 + w = 0.5 * width + + render p f = + renderPrimitive p $ + mapM_ (\i -> let angle = fromIntegral i * 2 * pi / fromIntegral teeth + in f r0 r1 r2 w da teeth i angle) + [ 0 .. teeth ] + + shadeModel $= Flat + currentNormal $= Normal3 0 0 1 + render QuadStrip gearFront + render Quads teethFront + currentNormal $= Normal3 0 0 (-1) + render QuadStrip gearBack + render Quads teethBack + render QuadStrip teethFace + shadeModel $= Smooth + render QuadStrip gearInside + +type Renderer = + GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLint -> GLint -> GLfloat -> IO () + +-- draw front face +gearFront :: Renderer +gearFront r0 r1 _ w da teeth i angle = do + vertex (Vertex3 (r0 * cos angle) (r0 * sin angle) w) + vertex (Vertex3 (r1 * cos angle) (r1 * sin angle) w) + when (i < teeth) $ do + vertex (Vertex3 (r0 * cos angle ) (r0 * sin angle ) w) + vertex (Vertex3 (r1 * cos (angle + 3 * da)) (r1 * sin (angle + 3 * da)) w) + +-- draw front sides of teeth +teethFront :: Renderer +teethFront _ r1 r2 w da teeth i angle = + when (i < teeth) $ do + vertex (Vertex3 (r1 * cos angle ) (r1 * sin angle ) w) + vertex (Vertex3 (r2 * cos (angle + da)) (r2 * sin (angle + da)) w) + vertex (Vertex3 (r2 * cos (angle + 2 * da)) (r2 * sin (angle + 2 * da)) w) + vertex (Vertex3 (r1 * cos (angle + 3 * da)) (r1 * sin (angle + 3 * da)) w) + +-- draw back face +gearBack :: Renderer +gearBack r0 r1 _ w da teeth i angle = do + vertex (Vertex3 (r1 * cos angle) (r1 * sin angle) (-w)) + vertex (Vertex3 (r0 * cos angle) (r0 * sin angle) (-w)) + when (i < teeth) $ do + vertex (Vertex3 (r1 * cos (angle + 3 * da)) (r1 * sin (angle + 3 * da)) (-w)) + vertex (Vertex3 (r0 * cos angle ) (r0 * sin angle ) (-w)) + +-- draw back sides of teeth +teethBack :: Renderer +teethBack _ r1 r2 w da teeth i angle = + when (i < teeth) $ do + vertex (Vertex3 (r1 * cos (angle + 3 * da)) (r1 * sin (angle + 3 * da)) (-w)) + vertex (Vertex3 (r2 * cos (angle + 2 * da)) (r2 * sin (angle + 2 * da)) (-w)) + vertex (Vertex3 (r2 * cos (angle + da)) (r2 * sin (angle + da)) (-w)) + vertex (Vertex3 (r1 * cos angle ) (r1 * sin angle ) (-w)) + +-- draw outward faces of teeth +teethFace :: Renderer +teethFace _ r1 r2 w da teeth i angle = + if (i < teeth) then do + vertex (Vertex3 (r1*(cos angle)) (r1*(sin angle)) w) + vertex (Vertex3 (r1*(cos angle)) (r1*(sin angle)) (-w)) + + let u' = r2 * cos (angle + da) - r1 * cos angle + v' = r2 * sin (angle + da) - r1 * sin angle + len = sqrt (u' * u' + v' * v') + u = u' / len + v = v' / len + currentNormal $= Normal3 v (-u) 0 + vertex (Vertex3 (r2 * cos (angle + da)) (r2 * sin (angle + da)) w ) + vertex (Vertex3 (r2 * cos (angle + da)) (r2 * sin (angle + da)) (-w)) + currentNormal $= Normal3 (cos angle) (sin angle) 0 + vertex (Vertex3 (r2 * cos (angle + 2 * da)) (r2 * sin (angle + 2 * da)) w ) + vertex (Vertex3 (r2 * cos (angle + 2 * da)) (r2 * sin (angle + 2 * da)) (-w)) + let u2 = r1 * cos (angle + 3 * da) - r2 * cos (angle + 2 * da); + v2 = r1 * sin (angle + 3 * da) - r2 * sin (angle + 2 * da); + currentNormal $= Normal3 v2 (-u2) 0 + vertex (Vertex3 (r1 * cos (angle + 3 * da)) (r1 * sin (angle + 3 * da)) w ) + vertex (Vertex3 (r1 * cos (angle + 3 * da)) (r1 * sin (angle + 3 * da)) (-w)) + currentNormal $= Normal3 (cos angle) (sin angle) 0 + else do + vertex (Vertex3 (r1 * cos 0) (r1 * sin 0) w ) + vertex (Vertex3 (r1 * cos 0) (r1 * sin 0) (-w)) + +-- draw inside radius cylinder +gearInside :: Renderer +gearInside r0 _ _ w _ _ _ angle = do + currentNormal $= Normal3 (-cos angle) (-sin angle) 0 + vertex (Vertex3 (r0 * cos angle) (r0 * sin angle) (-w)) + vertex (Vertex3 (r0 * cos angle) (r0 * sin angle) w ) + +draw :: (DisplayList,DisplayList,DisplayList,Int) -> IORef Int -> IORef Int -> IORef View -> IORef GLfloat -> IO () +draw (gear1, gear2, gear3, autoexit) frames t0 viewRot angle = do + clear [ ColorBuffer, DepthBuffer ] + (x, y, z) <- get viewRot + a <- get angle + + let translatef = translate :: Vector3 GLfloat -> IO () + preservingMatrix $ do + rotate x (Vector3 1 0 0) + rotate y (Vector3 0 1 0) + rotate z (Vector3 0 0 1) + + preservingMatrix $ do + translatef (Vector3 (-3) (-2) 0) + rotate a (Vector3 0 0 1) + callList gear1 + + preservingMatrix $ do + translatef (Vector3 3.1 (-2) 0) + rotate (-2 * a - 9) (Vector3 0 0 1) + callList gear2 + + preservingMatrix $ do + translatef (Vector3 (-3.1) 4.2 0) + rotate (-2 * a - 25) (Vector3 0 0 1) + callList gear3 + + swapBuffers + frames $~! (+1) + t0' <- get t0 + t <- get elapsedTime + when (t - t0' >= 5000) $ do + f <- get frames + let seconds = fromIntegral (t - t0') / 1000 :: GLfloat + fps = fromIntegral f / seconds + putStrLn (show f ++ " frames in " ++ show seconds ++ " seconds = "++ show fps ++ " FPS") + t0 $= t + frames $= 0 + when ((t >= 999 * autoexit) && (autoexit /= 0)) $ + exitWith ExitSuccess + +idle :: IORef GLfloat -> IdleCallback +idle angle = do + angle $~! (+2) + postRedisplay Nothing + +keyboard :: IORef View -> KeyboardMouseCallback +keyboard viewRot (Char 'z') _ _ _ = modRot viewRot ( 0, 0, 5) +keyboard viewRot (Char 'Z') _ _ _ = modRot viewRot ( 0, 0, -5) +keyboard viewRot (SpecialKey KeyUp) _ _ _ = modRot viewRot ( 5, 0, 0) +keyboard viewRot (SpecialKey KeyDown) _ _ _ = modRot viewRot (-5, 0, 0) +keyboard viewRot (SpecialKey KeyLeft) _ _ _ = modRot viewRot ( 0, 5, 0) +keyboard viewRot (SpecialKey KeyRight)_ _ _ = modRot viewRot ( 0, -5, 0) +keyboard _ (Char '\27') _ _ _ = exitWith ExitSuccess +keyboard _ _ _ _ _ = return () + +modRot :: IORef View -> View -> IO () +modRot viewRot (dx,dy,dz) = do + (x, y, z) <- get viewRot + viewRot $= (x + dx, y + dy, z + dz) + postRedisplay Nothing + +-- new window size or exposure +reshape :: ReshapeCallback +reshape s@(Size width height) = do + let h = fromIntegral height / fromIntegral width + + viewport $= (Position 0 0, s) + matrixMode $= Projection + loadIdentity + frustum (-1) 1 (-h) h 5 60 + matrixMode $= Modelview 0 + loadIdentity + translate (Vector3 0 0 (-40 :: GLfloat)) + +data Flag = GLInfo | Exit deriving ( Eq, Ord, Show ) + +argInfo :: [OptDescr Flag] +argInfo = [ + Option ['i'] ["info"] (NoArg GLInfo) "print gl information", + Option ['e'] ["exit"] (NoArg Exit ) "auto exit after 30 seconds" ] + +opts :: [String] -> IO [Flag] +opts args = + case getOpt Permute argInfo args of + (o,_,[]) -> return o + (_,_,errs) -> do + putStr (concat errs ++ usageInfo "Usage: Gears [OPTION...]" argInfo) + exitFailure + +info :: IO () +info = do + rendererStr <- get renderer + putStrLn ("GL_RENDERER = " ++ rendererStr) + vendorStr <- get vendor + putStrLn ("GL_VENDOR = " ++ vendorStr) + versionStr <- get glVersion + putStrLn ("GL_VERSION = " ++ versionStr) + exts <- get glExtensions + putStrLn ("GL_EXTENSIONS = " ++ concat (intersperse " " exts)) + +myInit :: [String] -> IO (DisplayList,DisplayList,DisplayList,Int) +myInit args = do + position (Light 0) $= Vertex4 5 5 10 0 + cullFace $= Just Back + lighting $= Enabled + light (Light 0) $= Enabled + depthFunc $= Just Less + + -- make the gears + g1 <- defineNewList Compile $ do + materialAmbientAndDiffuse Front $= Color4 0.8 0.1 0.0 1.0 + gear 1 4 1 20 0.7 + + g2 <- defineNewList Compile $ do + materialAmbientAndDiffuse Front $= Color4 0.0 0.8 0.2 1.0 + gear 0.5 2 2 10 0.7 + + g3 <- defineNewList Compile $ do + materialAmbientAndDiffuse Front $= Color4 0.2 0.2 1.0 1.0 + gear 1.3 2 0.5 10 0.7 + + normalize $= Enabled + + flags <- opts args + when (GLInfo `elem` flags) info + let autoexit = if Exit `elem` flags then 30 else 0 + when (autoexit /= 0) $ + putStrLn ("Auto Exit after " ++ show autoexit ++ " seconds.") + + return (g1, g2, g3, autoexit) + +visible :: IORef GLfloat -> Visibility -> IO () +visible angle Visible = idleCallback $= Just (idle angle) +visible _ NotVisible = idleCallback $= Nothing + +main :: IO () +main = do + (_progName, args) <- getArgsAndInitialize + initialDisplayMode $= [ RGBMode, WithDepthBuffer, DoubleBuffered ] + + initialWindowPosition $= Position 0 0 + initialWindowSize $= Size 300 300 + createWindow "Gears" + gearsAndAuto <- myInit args + frames <- newIORef 0 + t0 <- newIORef 0 + viewRot <- newIORef (20, 30, 0) + angle <- newIORef 0 + + displayCallback $= draw gearsAndAuto frames t0 viewRot angle + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just (keyboard viewRot) + visibilityCallback $= Just (visible angle) + + mainLoop hunk ./examples/Misc/ExtractContours.hs 17 +import Control.Monad ( liftM ) +import Data.Maybe ( fromJust ) hunk ./examples/Misc/ExtractContours.hs 78 - rectAndTriList <- defineNewList Compile $ + rectAndTriList <- liftM fromJust $ defineNewList Compile $ hunk ./examples/Misc/ExtractContours.hs 82 - starList <- defineNewList Compile $ + starList <- liftM fromJust $ defineNewList Compile $ hunk ./examples/Misc/Gears.hs 15 -import Control.Monad ( when ) -import Data.List ( intersperse ) +import Control.Monad ( when, liftM ) hunk ./examples/Misc/Gears.hs 17 +import Data.List ( intersperse ) +import Data.Maybe ( fromJust ) hunk ./examples/Misc/Gears.hs 246 - g1 <- defineNewList Compile $ do + g1 <- liftM fromJust $ defineNewList Compile $ do hunk ./examples/Misc/Gears.hs 250 - g2 <- defineNewList Compile $ do + g2 <- liftM fromJust $ defineNewList Compile $ do hunk ./examples/Misc/Gears.hs 254 - g3 <- defineNewList Compile $ do + g3 <- liftM fromJust $ defineNewList Compile $ do hunk ./examples/Misc/Triangulate.hs 17 +import Control.Monad ( liftM ) +import Data.Maybe ( fromJust ) hunk ./examples/Misc/Triangulate.hs 69 - defineNewList Compile $ + liftM fromJust $ defineNewList Compile $ hunk ./examples/RedBook/Checker.hs 12 +import Control.Monad ( liftM, when ) +import Data.Maybe ( isJust, listToMaybe ) hunk ./examples/RedBook/Checker.hs 42 - then do [texName] <- genObjectNames 1 - textureBinding Texture2D $= texName - return $ Just texName - else return Nothing + then liftM listToMaybe $ genObjectNames 1 + else return Nothing + when (isJust mbTexName) $ textureBinding Texture2D $= mbTexName hunk ./examples/RedBook/Checker.hs 58 - maybe (return ()) (\texName -> textureBinding Texture2D $= texName) mbTexName + when (isJust mbTexName) $ textureBinding Texture2D $= mbTexName hunk ./examples/RedBook/Mipmap.hs 13 +import Control.Monad ( liftM, when ) +import Data.Maybe ( isJust, listToMaybe ) hunk ./examples/RedBook/Mipmap.hs 40 - then do [texName] <- genObjectNames 1 - textureBinding Texture2D $= texName - return $ Just texName - else return Nothing + then liftM listToMaybe $ genObjectNames 1 + else return Nothing + when (isJust mbTexName) $ textureBinding Texture2D $= mbTexName hunk ./examples/RedBook/Mipmap.hs 62 - maybe (return ()) (\texName -> textureBinding Texture2D $= texName) mbTexName + when (isJust mbTexName) $ textureBinding Texture2D $= mbTexName hunk ./examples/RedBook/MultiTex.hs 27 - textureBinding Texture2D $= texName0 + textureBinding Texture2D $= Just texName0 hunk ./examples/RedBook/MultiTex.hs 35 - textureBinding Texture2D $= texName1 + textureBinding Texture2D $= Just texName1 hunk ./examples/RedBook/MultiTex.hs 44 - textureBinding Texture2D $= texName0 + textureBinding Texture2D $= Just texName0 hunk ./examples/RedBook/MultiTex.hs 54 - textureBinding Texture2D $= texName1 + textureBinding Texture2D $= Just texName1 hunk ./examples/RedBook/Tess.hs 17 +import Control.Monad ( liftM ) +import Data.Maybe ( fromJust ) hunk ./examples/RedBook/Tess.hs 78 - rectAndTriList <- defineNewList Compile $ + rectAndTriList <- liftM fromJust $ defineNewList Compile $ hunk ./examples/RedBook/Tess.hs 82 - starList <- defineNewList Compile $ + starList <- liftM fromJust $ defineNewList Compile $ hunk ./examples/RedBook/TexBind.hs 39 - textureBinding Texture2D $= texName0 + textureBinding Texture2D $= Just texName0 hunk ./examples/RedBook/TexBind.hs 46 - textureBinding Texture2D $= texName1 + textureBinding Texture2D $= Just texName1 hunk ./examples/RedBook/TexBind.hs 62 - textureBinding Texture2D $= texName0 + textureBinding Texture2D $= Just texName0 hunk ./examples/RedBook/TexBind.hs 68 - textureBinding Texture2D $= texName1 + textureBinding Texture2D $= Just texName1 hunk ./examples/RedBook/TexGen.hs 17 +import Control.Monad ( liftM, when ) hunk ./examples/RedBook/TexGen.hs 19 +import Data.Maybe ( isJust, listToMaybe ) hunk ./examples/RedBook/TexGen.hs 50 - then do [texName] <- genObjectNames 1 - textureBinding Texture1D $= texName - return $ Just texName - else return Nothing + then liftM listToMaybe $ genObjectNames 1 + else return Nothing + when (isJust mbTexName) $ textureBinding Texture1D $= mbTexName hunk ./examples/RedBook/TexGen.hs 76 - maybe (return ()) (\texName -> textureBinding Texture1D $= texName) mbTexName + when (isJust mbTexName) $ textureBinding Texture1D $= mbTexName hunk ./examples/RedBook/TexSub.hs 47 - textureBinding Texture2D $= texName + textureBinding Texture2D $= Just texName hunk ./examples/RedBook/TexSub.hs 60 - textureBinding Texture2D $= texName + textureBinding Texture2D $= Just texName hunk ./examples/RedBook/TexSub.hs 91 - textureBinding Texture2D $= texName + textureBinding Texture2D $= Just texName hunk ./examples/RedBook/TexSub.hs 95 - textureBinding Texture2D $= texName + textureBinding Texture2D $= Just texName hunk ./examples/RedBook/Texture3D.hs 38 - textureBinding Texture3D $= texName + textureBinding Texture3D $= Just texName addfile ./examples/Misc/Pitfall14.hs hunk ./examples/Misc/Pitfall14.hs 1 +{- + Pitfall14 + Copyright (c) Sven Panne 2002-2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program demonstrates pitfall 14 (Careful Enabling Color Material) + of Mark Kilgard's "16 Common OpenGL Pitfalls", see: + http://www.opengl.org/resources/features/KilgardTechniques/oglpitfall/ +-} + +import Control.Monad ( unless ) +import System.Exit ( exitFailure ) +import Graphics.UI.GLUT + +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, RGBMode ] + createWindow progName + + currentColor $= Color4 1 1 1 1 + materialAmbient Front $= Color4 0.1 0.1 0.1 1 + -- re-get to avoid any rounding issues + mafBefore <- get (materialAmbient Front) + + colorMaterial $= Just (Front, Diffuse) + mafAfter <- get (materialAmbient Front) + unless (mafBefore == mafAfter) $ do + putStrLn "ERROR: The ambient material property changed!" + putStrLn (" before: " ++ show mafBefore) + putStrLn (" after : " ++ show mafAfter) + exitFailure hunk ./examples/RedBook/Checker.hs 57 - textureEnvMode $= Decal + textureFunction $= Decal hunk ./examples/RedBook/CubeMap.hs 60 - textureEnvMode $= Modulate + textureFunction $= Modulate hunk ./examples/RedBook/Mipmap.hs 55 - textureEnvMode $= Decal + textureFunction $= Decal hunk ./examples/RedBook/MultiTex.hs 45 - textureEnvMode $= Replace + textureFunction $= Replace hunk ./examples/RedBook/MultiTex.hs 55 - textureEnvMode $= Modulate + textureFunction $= Modulate hunk ./examples/RedBook/TexBind.hs 50 - textureEnvMode $= Decal + textureFunction $= Decal hunk ./examples/RedBook/TexGen.hs 58 - textureEnvMode $= Modulate + textureFunction $= Modulate hunk ./examples/RedBook/TexSub.hs 59 - textureEnvMode $= Decal + textureFunction $= Decal addfile ./examples/RedBook/Combiner.hs addfile ./examples/RedBook/TexProx.hs hunk ./examples/RedBook/Combiner.hs 1 +{- + Combiner.hs (adapted from combiner.c which is (c) Silicon Graphics, Inc) + Copyright (c) Sven Panne 2002-2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program renders a variety of quads showing different effects of + texture combiner functions. + + The first row renders an untextured polygon (so you can compare the + fragment colors) and then the 2 textures. + + The second row shows several different combiner functions on a single + texture: replace, modulate, add, add-signed, and subtract. + + The third row shows the interpolate combiner function on a single texture + with a constant color/alpha value, varying the amount of interpolation. + + The fourth row uses multitexturing with two textures and different + combiner functions. + + The fifth row are some combiner experiments: using the scaling factor and + reversing the order of subtraction for a combination function. +-} + +import Control.Monad ( liftM ) +import Data.Bits ( (.&.) ) +import Data.Maybe ( fromJust ) +import Foreign ( withArray ) +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +-- Create checkerboard image +imageSize :: TextureSize2D +imageSize = TextureSize2D 8 8 + +makeImage :: TextureSize2D -> (GLsizei -> GLsizei -> Color4 GLubyte) + -> (PixelData (Color4 GLubyte) -> IO ()) -> IO () +makeImage (TextureSize2D w h) f act = + withArray [ f i j | + i <- [ 0 .. w - 1 ], + j <- [ 0 .. h - 1 ] ] $ + act . PixelData RGBA UnsignedByte + +myInit :: IO (TextureObject, TextureObject, DisplayList) +myInit = do + clearColor $= Color4 0 0 0 0 + shadeModel $= Smooth + + rowAlignment Unpack $= 1 + + [texName0, texName1] <- genObjectNames 2 + + textureBinding Texture2D $= Just texName0 + textureWrapMode Texture2D S $= (Repeated, Repeat) + textureWrapMode Texture2D T $= (Repeated, Repeat) + textureFilter Texture2D $= ((Nearest, Nothing), Nearest) + -- horiz b & w stripes + makeImage imageSize (\i _ -> let c = if i .&. 2 == 0 then 255 else 0 in Color4 c c c 255) $ + texImage2D Nothing NoProxy 0 RGBA' imageSize 0 + + textureBinding Texture2D $= Just texName1 + textureWrapMode Texture2D S $= (Repeated, Repeat) + textureWrapMode Texture2D T $= (Repeated, Repeat) + textureFilter Texture2D $= ((Nearest, Nothing), Nearest) + textureFunction $= Decal + -- wider vertical 50% cyan and black stripes + makeImage imageSize (\_ j -> let c = if j .&. 4 /= 0 then 128 else 0 in Color4 0 c c 255) $ + texImage2D Nothing NoProxy 0 RGBA' imageSize 0 + + -- smooth-shaded polygon with multiple texture coordinates + let vert :: TexCoord2 GLfloat -> Color3 GLfloat -> Vertex3 GLfloat -> IO () + vert t c v = do + multiTexCoord (TextureUnit 0) t + multiTexCoord (TextureUnit 1) t + color c + vertex v + + dl <- liftM fromJust $ defineNewList Compile $ + renderPrimitive Quads $ do + vert (TexCoord2 0 0) (Color3 0.5 1 0.25) (Vertex3 0 0 0) + vert (TexCoord2 0 2) (Color3 1 1 1 ) (Vertex3 0 1 0) + vert (TexCoord2 2 2) (Color3 1 1 1 ) (Vertex3 1 1 0) + vert (TexCoord2 2 0) (Color3 1 0.5 0.25) (Vertex3 1 0 0) + + return (texName0, texName1, dl) + +display :: (TextureObject, TextureObject, DisplayList) -> DisplayCallback +display (texName0, texName1, dl) = do + clear [ ColorBuffer ] + + let drawAt :: GLfloat -> GLfloat -> IO () + drawAt x y = preservingMatrix $ do + translate (Vector3 x y 0) + callList dl + + -- untextured polygon -- see the "fragment" colors + texture Texture2D $= Disabled + drawAt 0 5 + + texture Texture2D $= Enabled + -- draw ordinary textured polys; 1 texture unit; combine mode disabled + textureFunction $= Modulate + textureBinding Texture2D $= Just texName0 + drawAt 1 5 + + textureBinding Texture2D $= Just texName1 + drawAt 2 5 + + -- different combine modes enabled; 1 texture unit + -- defaults are: + -- argRGB Arg0 $= Arg SrcColor CurrentUnit + -- argRGB Arg1 $= Arg SrcColor Previous + + textureBinding Texture2D $= Just texName0 + textureFunction $= Combine + combineRGB $= Replace' + argRGB Arg0 $= Arg SrcColor CurrentUnit + drawAt 1 4 + + combineRGB $= Modulate' + argRGB Arg1 $= Arg SrcColor Previous + drawAt 2 4 + + combineRGB $= AddUnsigned' + drawAt 3 4 + + combineRGB $= AddSigned + drawAt 4 4 + + combineRGB $= Subtract + drawAt 5 4 + + -- interpolate combine with constant color; 1 texture unit + -- use different alpha values for constant color + -- defaults are: + -- argRGB Arg0 $= Arg SrcColor CurrentUnit + -- argRGB Arg1 $= Arg SrcColor Previous + -- argRGB Arg2 $= Arg SrcAlpha Constant + + constantColor $= Color4 0 0 0 0.2 + textureBinding Texture2D $= Just texName0 + textureFunction $= Combine + combineRGB $= Interpolate + argRGB Arg0 $= Arg SrcColor CurrentUnit + argRGB Arg1 $= Arg SrcColor Previous + argRGB Arg2 $= Arg SrcAlpha Constant + drawAt 1 3 + + constantColor $= Color4 0 0 0 0.4 + drawAt 2 3 + + constantColor $= Color4 0 0 0 0.6 + drawAt 3 3 + + constantColor $= Color4 0 0 0 0.8 + drawAt 4 3 + + -- combine textures 0 & 1 + -- defaults are: + -- argRGB Arg0 $= Arg SrcColor CurrentUnit + -- argRGB Arg1 $= Arg SrcColor Previous + + activeTexture $= TextureUnit 0 + texture Texture2D $= Enabled + textureBinding Texture2D $= Just texName0 + textureFunction $= Modulate + + activeTexture $= TextureUnit 1 + texture Texture2D $= Enabled + textureBinding Texture2D $= Just texName1 + textureFunction $= Combine + combineRGB $= Replace' + drawAt 1 2 + + -- try different combiner modes of texture unit 1 + combineRGB $= Modulate' + drawAt 2 2 + + combineRGB $= AddUnsigned' + drawAt 3 2 + + combineRGB $= AddSigned + drawAt 4 2 + + combineRGB $= Subtract + drawAt 5 2 + + -- some experiments + + -- see the effect of rgbScale + rgbScale $= 2 + combineRGB $= Replace' + drawAt 1 1 + + combineRGB $= Modulate' + drawAt 2 1 + rgbScale $= 1 + + -- reverse the order of subtraction Arg1-Arg0 + + textureFunction $= Combine + combineRGB $= Subtract + argRGB Arg0 $= Arg SrcColor Previous + argRGB Arg1 $= Arg SrcColor CurrentUnit + drawAt 5 1 + + activeTexture $= TextureUnit 1 -- deactivate multitexturing + texture Texture2D $= Disabled + activeTexture $= TextureUnit 0 -- activate single texture unit + + flush + +reshape :: ReshapeCallback +reshape size = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + ortho2D 0 7 0 7 + matrixMode $= Modelview 0 + loadIdentity + +keyboard :: KeyboardMouseCallback +keyboard (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard _ _ _ _ = return () + +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, RGBMode ] + initialWindowSize $= Size 400 400 + initialWindowPosition $= Position 100 100 + createWindow progName + texNamesAndDL <- myInit + displayCallback $= display texNamesAndDL + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just keyboard + mainLoop hunk ./examples/RedBook/TexProx.hs 1 +{- + TexProx.hs (adapted from texprox.c which is (c) Silicon Graphics, Inc.) + Copyright (c) Sven Panne 2002-2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + The brief program illustrates use of texture proxies. This program only + prints out some messages about whether certain size textures are supported + and then exits. +-} + +import Control.Monad ( when ) +import Foreign.Ptr ( nullPtr ) +import System.Exit ( exitFailure, exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +myInit :: IO () +myInit = do + let check = do + ok <- get (textureProxyOK (Left Texture2D) 0) + putStrLn ("proxy allocation " ++ if ok then "succeeded" else "failed") + + texImage2D Nothing Proxy 0 RGBA8 (TextureSize2D 64 64) 0 (PixelData RGBA UnsignedByte nullPtr) + check + + -- Note: We use a larger texture size here to demonstrate failure, + -- modern graphic cards can handle the original size. + texImage2D Nothing Proxy 0 RGBA16 (TextureSize2D 8192 8192) 0 (PixelData RGBA UnsignedShort nullPtr) + check + + +display :: DisplayCallback +display = exitWith ExitSuccess + +reshape :: ReshapeCallback +reshape size = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, RGBMode ] + initialWindowSize $= Size 500 500 + initialWindowPosition $= Position 100 100 + createWindow progName + -- we have to do this *after* createWindow, otherwise we have no OpenGL context + version <- get glVersion + when (take 3 version == "1.0") $ do + putStrLn "This program demonstrates a feature which is not in OpenGL Version 1.0." + putStrLn "If your implementation of OpenGL Version 1.0 has the right extensions," + putStrLn "you may be able to modify this program to make it run." + exitFailure + myInit + displayCallback $= display + reshapeCallback $= Just reshape + mainLoop addfile ./examples/RedBook/ShadowMap.hs addfile ./examples/RedBook/Wrap.hs hunk ./examples/RedBook/ShadowMap.hs 1 +{- + ShadowMap.hs (adapted from shadowmap.c which is (c) Silicon Graphics, Inc.) + Copyright (c) Sven Panne 2002-2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE +-} + +import Control.Monad ( when, unless ) +import Data.IORef ( IORef, newIORef ) +import Foreign.Marshal.Array ( allocaArray ) +import Foreign.Ptr ( nullPtr ) +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +shadowMapSize :: TextureSize2D +shadowMapSize = TextureSize2D 256 256 + +fovy, nearPlane, farPlane :: GLdouble +fovy = 60 +nearPlane = 10 +farPlane = 100 + +lightPos :: Vertex4 GLfloat +lightPos = Vertex4 25 25 25 1 + +lookat :: Vertex3 GLdouble +lookat = Vertex3 0 0 0 + +up :: Vector3 GLdouble +up = Vector3 0 0 1 + +-- we lump together our global state (and still call this Haskell :-) +data State = State { + angle :: IORef GLdouble, + torusAngle :: IORef GLfloat, + showShadow :: IORef Bool, + animate :: IORef Bool, + funcMode :: IORef ComparisonFunction } + +makeState :: IO State +makeState = do + a <- newIORef 0 + t <- newIORef 0 + s <- newIORef False + n <- newIORef True + f <- newIORef Lequal + return $ State a t s n f + +myInit :: IO State +myInit = do + texImage2D Nothing NoProxy 0 DepthComponent' shadowMapSize 0 + (PixelData DepthComponent UnsignedByte nullPtr) + + position (Light 0) $= lightPos + let white = Color4 1 1 1 1 + specular (Light 0) $= white + diffuse (Light 0) $= white + + textureWrapMode Texture2D S $= (Repeated, ClampToEdge) + textureWrapMode Texture2D T $= (Repeated, ClampToEdge) + textureFilter Texture2D $= ((Linear', Nothing), Linear') + textureCompareMode Texture2D $= Just Lequal + depthTextureMode Texture2D $= Luminance' + + colorMaterial $= Just (FrontAndBack, AmbientAndDiffuse) + + cullFace $= Just Back + + depthFunc $= Just Less + light (Light 0) $= Enabled + lighting $= Enabled + texture Texture2D $= Enabled + + makeState + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + perspective fovy (fromIntegral w / fromIntegral h) nearPlane farPlane + matrixMode $= Modelview 0 + +idle :: State -> IdleCallback +idle state = do + angle state $~! (+ (pi / 10000)) + torusAngle state $~! (+ 0.1) + postRedisplay Nothing + +keyboard :: State -> KeyboardMouseCallback +keyboard state (Char c) Down _ _ = do + case c of + '\27' -> exitWith ExitSuccess + 't' -> + texture Texture2D $~ \cap -> if cap == Enabled then Disabled else Enabled + 'm' -> do + fm <- get (funcMode state) + textureCompareMode Texture2D $~ maybe (Just fm) (const Nothing) + compareMode <- get (textureCompareMode Texture2D) + putStrLn ("Compare mode " ++ maybe "Off" (const "On") compareMode) + 'f' -> do + funcMode state $~ \fm -> if fm == Lequal then Gequal else Lequal + fm <- get (funcMode state) + putStrLn ("Operator " ++ show fm) + textureCompareMode Texture2D $~ maybe Nothing (const (Just fm)) + 's' -> showShadow state $~ not + 'p' -> do + animate state $~ not + animate' <- get (animate state) + idleCallback $= if animate' then Just (idle state) else Nothing + _ -> return () + postRedisplay Nothing +keyboard _ _ _ _ _ = return () + +drawObjects :: GLfloat -> Bool -> IO () +drawObjects torusAngle' shadowRender = do + textureOn <- get (texture Texture2D) + + when shadowRender $ + texture Texture2D $= Disabled + + -- resolve overloading, not needed in "real" programs + let normal3f = normal :: Normal3 GLfloat -> IO () + color3f = color :: Color3 GLfloat -> IO () + rectf = rect :: Vertex2 GLfloat -> Vertex2 GLfloat -> IO () + translatef = translate :: Vector3 GLfloat -> IO () + rotatef = rotate :: GLfloat -> Vector3 GLfloat -> IO () + + unless shadowRender $ do + normal3f (Normal3 0 0 1) + color3f (Color3 1 1 1) + rectf (Vertex2 (-20) (-20)) (Vertex2 20 20) + + preservingMatrix $ do + translatef (Vector3 11 11 11) + rotatef 54.73 (Vector3 (-5) 5 0) + rotate torusAngle' (Vector3 1 0 0) + color3f (Color3 1 0 0) + renderObject Solid (Torus 1 4 8 36) + + preservingMatrix $ do + translatef (Vector3 2 2 2) + color3f (Color3 0 0 1) + renderObject Solid (Cube 4) + + preservingMatrix $ do + getLightPos Vector3 >>= translate + color3f (Color3 1 1 1) + renderObject Wireframe (Sphere' 0.5 6 6) + + when (shadowRender && textureOn == Enabled) $ + texture Texture2D $= Enabled + +getLightPos :: (GLdouble -> GLdouble -> GLdouble -> a) -> IO a +getLightPos f = do + Vertex4 x y z _ <- get (position (Light 0)) + return $ f (realToFrac x) (realToFrac y) (realToFrac z) + +generateShadowMap :: GLfloat -> Bool -> IO () +generateShadowMap torusAngle' showShadow' = do + lightPos' <- getLightPos Vertex3 + let (TextureSize2D shadowMapWidth shadowMapHeight) = shadowMapSize + shadowMapSize' = Size shadowMapWidth shadowMapHeight + + preservingViewport $ do + viewport $= (Position 0 0, shadowMapSize') + + clear [ ColorBuffer, DepthBuffer ] + + matrixMode $= Projection + preservingMatrix $ do + loadIdentity + perspective 80 1 10 1000 + matrixMode $= Modelview 0 + preservingMatrix $ do + loadIdentity + lookAt lightPos' lookat up + drawObjects torusAngle' True + matrixMode $= Projection + matrixMode $= Modelview 0 + + copyTexImage2D Nothing 0 DepthComponent' (Position 0 0) shadowMapSize 0 + + when showShadow' $ do + let numShadowMapPixels = fromIntegral (shadowMapWidth * shadowMapHeight) + allocaArray numShadowMapPixels $ \depthImage -> do + let pixelData fmt = PixelData fmt Float depthImage :: PixelData GLfloat + readPixels (Position 0 0) shadowMapSize' (pixelData DepthComponent) + (_, Size viewPortWidth _) <- get viewport + windowPos (Vertex2 (fromIntegral viewPortWidth / 2 :: GLfloat) 0) + drawPixels shadowMapSize' (pixelData Luminance) + swapBuffers + +-- Note: preservingViewport is not exception safe, but it doesn't matter here +preservingViewport :: IO a -> IO a +preservingViewport act = do + v <- get viewport + x <- act + viewport $= v + return x + +generateTextureMatrix :: IO () +generateTextureMatrix = do + -- Set up projective texture matrix. We use the Modelview matrix stack and + -- OpenGL matrix commands to make the matrix. + m <- preservingMatrix $ do + loadIdentity + -- resolve overloading, not needed in "real" programs + let translatef = translate :: Vector3 GLfloat -> IO () + scalef = scale :: GLfloat -> GLfloat -> GLfloat -> IO () + translatef (Vector3 0.5 0.5 0.0) + scalef 0.5 0.5 1.0 + perspective 60 1 1 1000 + lightPos' <- getLightPos Vertex3 + lookAt lightPos' lookat up + -- we know that the current matrix is the Modelview matrix here + get currentMatrix + + [ sx, sy, sz, sw, + tx, ty, tz, tw, + rx, ry, rz, rw, + qx, qy, qz, qw ] <- getMatrixComponents RowMajor (m :: GLmatrix GLdouble) + + textureGenMode S $= Just (ObjectLinear (Plane sx sy sz sw)) + textureGenMode T $= Just (ObjectLinear (Plane tx ty tz tw)) + textureGenMode R $= Just (ObjectLinear (Plane rx ry rz rw)) + textureGenMode Q $= Just (ObjectLinear (Plane qx qy qz qw)) + +display :: State -> DisplayCallback +display state = do + let radius = 30 + torusAngle' <- get (torusAngle state) + showShadow' <- get (showShadow state) + generateShadowMap torusAngle' showShadow' + generateTextureMatrix + unless showShadow' $ do + clear [ ColorBuffer, DepthBuffer ] + preservingMatrix $ do + angle' <- get (angle state) + lookAt (Vertex3 (radius * cos angle') (radius * sin angle') 30) lookat up + drawObjects torusAngle' False + swapBuffers + +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ RGBAMode, WithDepthBuffer, DoubleBuffered ] + initialWindowSize $= Size 521 512 + initialWindowPosition $= Position 100 100 + createWindow progName + + state <- myInit + + displayCallback $= display state + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just (keyboard state) + idleCallback $= Just (idle state) + + mainLoop hunk ./examples/RedBook/Wrap.hs 1 +{- + Wrap.hs (adapted from wrap.c which is (c) Silicon Graphics, Inc) + Copyright (c) Sven Panne 2002-2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program texture maps a checkerboard image onto two rectangles. This + program demonstrates the wrapping modes, if the texture coordinates fall + outside 0.0 and 1.0. Interaction: Pressing the 's' and 'S' keys switch the + wrapping between clamping and repeating for the s parameter. The 't' and 'T' + keys control the wrapping for the t parameter. + + Texture objects are only used when GL_EXT_texture_object is supported. +-} + +import Control.Monad ( liftM, when ) +import Data.Maybe ( isJust, listToMaybe ) +import Data.Bits ( (.&.) ) +import Foreign ( withArray ) +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +-- Create checkerboard image +checkImageSize :: TextureSize2D +checkImageSize = TextureSize2D 64 64 + +withCheckImage :: TextureSize2D -> GLsizei -> (GLubyte -> (Color4 GLubyte)) + -> (PixelData (Color4 GLubyte) -> IO ()) -> IO () +withCheckImage (TextureSize2D w h) n f act = + withArray [ f c | + i <- [ 0 .. w - 1 ], + j <- [ 0 .. h - 1 ], + let c | (i .&. n) == (j .&. n) = 0 + | otherwise = 255 ] $ + act. PixelData RGBA UnsignedByte + +myInit :: IO (Maybe TextureObject) +myInit = do + clearColor $= Color4 0 0 0 0 + shadeModel $= Flat + depthFunc $= Just Less + rowAlignment Unpack $= 1 + + exts <- get glExtensions + mbTexName <- if "GL_EXT_texture_object" `elem` exts + then liftM listToMaybe $ genObjectNames 1 + else return Nothing + when (isJust mbTexName) $ textureBinding Texture2D $= mbTexName + + textureWrapMode Texture2D S $= (Repeated, Repeat) + textureWrapMode Texture2D T $= (Repeated, Repeat) + textureFilter Texture2D $= ((Nearest, Nothing), Nearest) + withCheckImage checkImageSize 0x8 (\c -> Color4 c c c 255) $ + texImage2D Nothing NoProxy 0 RGBA' checkImageSize 0 + return mbTexName + +display :: Maybe TextureObject -> DisplayCallback +display mbTexName = do + clear [ ColorBuffer, DepthBuffer ] + texture Texture2D $= Enabled + textureFunction $= Decal + when (isJust mbTexName) $ textureBinding Texture2D $= mbTexName + + -- resolve overloading, not needed in "real" programs + let texCoord2f = texCoord :: TexCoord2 GLfloat -> IO () + vertex3f = vertex :: Vertex3 GLfloat -> IO () + renderPrimitive Quads $ do + texCoord2f (TexCoord2 0 0); vertex3f (Vertex3 (-2.0) (-1.0) 0.0 ) + texCoord2f (TexCoord2 0 3); vertex3f (Vertex3 (-2.0) 1.0 0.0 ) + texCoord2f (TexCoord2 3 3); vertex3f (Vertex3 0.0 1.0 0.0 ) + texCoord2f (TexCoord2 3 0); vertex3f (Vertex3 0.0 (-1.0) 0.0 ) + + texCoord2f (TexCoord2 0 0); vertex3f (Vertex3 1.0 (-1.0) 0.0 ) + texCoord2f (TexCoord2 0 3); vertex3f (Vertex3 1.0 1.0 0.0 ) + texCoord2f (TexCoord2 3 3); vertex3f (Vertex3 2.41421 1.0 (-1.41421)) + texCoord2f (TexCoord2 3 0); vertex3f (Vertex3 2.41421 (-1.0) (-1.41421)) + flush + texture Texture2D $= Disabled + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + perspective 60 (fromIntegral w / fromIntegral h) 1 30 + matrixMode $= Modelview 0 + loadIdentity + translate (Vector3 0 0 (-3.6 :: GLfloat)) + +keyboard :: KeyboardMouseCallback +keyboard (Char 's' ) Down _ _ = setClamping S Clamp +keyboard (Char 'S' ) Down _ _ = setClamping S Repeat +keyboard (Char 't' ) Down _ _ = setClamping T Clamp +keyboard (Char 'T' ) Down _ _ = setClamping T Repeat +keyboard (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard _ _ _ _ = return () + +setClamping :: TextureCoordName -> Clamping -> IO () +setClamping coord clamp = do + textureWrapMode Texture2D coord $= (Repeated, clamp); + postRedisplay Nothing + +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] + initialWindowSize $= Size 250 250 + initialWindowPosition $= Position 100 100 + createWindow progName + mbTexName <- myInit + displayCallback $= display mbTexName + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just keyboard + mainLoop hunk ./examples/RedBook/ShadowMap.hs 216 - -- we know that the current matrix is the Modelview matrix here - get currentMatrix + get (matrix (Modelview 0)) hunk ./examples/RedBook/ColorMatrix.hs 27 - currentMatrix $= (m :: GLmatrix GLfloat) + matrix Nothing $= (m :: GLmatrix GLfloat) hunk ./examples/RedBook/ShadowMap.hs 216 - get (matrix (Modelview 0)) + get (matrix (Just (Modelview 0))) addfile ./examples/RedBook/Quadric.hs hunk ./examples/RedBook/Quadric.hs 1 +{- + Quadric.hs (adapted from quadric.c which is (c) Silicon Graphics, Inc.) + Copyright (c) Sven Panne 2002-2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program demonstrates the use of the renderQuadric routine. Quadric + objects are created with some quadric properties and errors are reported. + Note that the cylinder has no top or bottom and the circle has a hole in it. +-} + +import Control.Monad ( liftM ) +import Data.Maybe ( fromJust ) +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +myInit :: IO (DisplayList, DisplayList, DisplayList, DisplayList) +myInit = do + clearColor $= Color4 0 0 0 0 + + materialAmbient Front $= Color4 0.5 0.5 0.5 1 + materialSpecular Front $= Color4 1 1 1 1 + materialShininess Front $= 50 + position (Light 0) $= Vertex4 1 1 1 0 + lightModelAmbient $= Color4 0.5 0.5 0.5 1 + + lighting $= Enabled + light (Light 0) $= Enabled + depthFunc $= Just Less + + -- Create 4 display lists, each with a different quadric object. + -- Different drawing styles and surface normal specifications + -- are demonstrated. + -- smooth shaded + dl1 <- newQuadricDL (Just Smooth) FillStyle (Sphere 0.75 15 10) + -- flat shaded + dl2 <- newQuadricDL (Just Flat) FillStyle (Cylinder 0.5 0.3 1 15 5) + -- all polygons wireframe + dl3 <- newQuadricDL Nothing LineStyle (Disk 0.25 1 20 4) + -- boundary only + dl4 <- newQuadricDL Nothing SilhouetteStyle (PartialDisk 0 1 20 4 0 225) + return (dl1, dl2, dl3, dl4) + +newQuadricDL :: QuadricNormal -> QuadricDrawStyle -> QuadricPrimitive -> IO DisplayList +newQuadricDL n s p = + liftM fromJust $ + defineNewList Compile $ do + renderQuadric (QuadricStyle n NoTextureCoordinates Outside s) p + reportErrors + +display :: (DisplayList, DisplayList, DisplayList, DisplayList) -> DisplayCallback +display (dl1, dl2, dl3, dl4) = do + clear [ ColorBuffer, DepthBuffer ] + preservingMatrix $ do + -- resolve overloading, not needed in "real" programs + let translatef = translate :: Vector3 GLfloat -> IO () + rotatef = rotate :: GLfloat -> Vector3 GLfloat -> IO () + color3f = color :: Color3 GLfloat -> IO () + + lighting $= Enabled + shadeModel $= Smooth + translatef (Vector3 (-1) (-1) 0) + callList dl1 + + shadeModel $= Flat + translatef (Vector3 0 2 0) + preservingMatrix $ do + rotatef 300 (Vector3 1 0 0) + callList dl2 + + lighting $= Disabled + color3f (Color3 0 1 1) + translatef (Vector3 2 (-2) 0) + callList dl3 + + color3f (Color3 1 1 0) + translatef (Vector3 0 2 0) + callList dl4 + + flush + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + let wf = fromIntegral w + hf = fromIntegral h + if w <= h + then ortho (-2.5) 2.5 (-2.5*hf/wf) (2.5*hf/wf) (-10) 10 + else ortho (-2.5*wf/hf) (2.5*wf/hf) (-2.5) 2.5 (-10) 10 + matrixMode $= Modelview 0 + +keyboard :: KeyboardMouseCallback +keyboard (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard _ _ _ _ = return () + +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] + initialWindowSize $= Size 500 500 + initialWindowPosition $= Position 100 100 + createWindow progName + displayLists <- myInit + displayCallback $= display displayLists + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just keyboard + mainLoop adddir ./doc addfile ./doc/Makefile addfile ./doc/bib.bib addfile ./doc/extractExamples adddir ./doc/images addfile ./doc/images/APolygon.gif addfile ./doc/images/ApproxCircle.gif addfile ./doc/images/Body.gif addfile ./doc/images/Coffee.gif addfile ./doc/images/Compose.gif addfile ./doc/images/FillCircle.gif addfile ./doc/images/Foot.gif addfile ./doc/images/Hidden.gif addfile ./doc/images/LightCube.gif addfile ./doc/images/LineAttributes.gif addfile ./doc/images/NotHidden.gif addfile ./doc/images/NotSmaller.gif addfile ./doc/images/OrbitAroundCube.gif addfile ./doc/images/Ortho.gif addfile ./doc/images/Orto1.gif addfile ./doc/images/Orto2.gif addfile ./doc/images/PointSize.gif addfile ./doc/images/PolyColor.gif addfile ./doc/images/Pong.gif addfile ./doc/images/RenderCube.gif addfile ./doc/images/RenderLineLoop.gif addfile ./doc/images/RenderLineStrip.gif addfile ./doc/images/RenderLines.gif addfile ./doc/images/RenderQuadStrip.gif addfile ./doc/images/RenderQuads.gif addfile ./doc/images/RenderRubikFace.gif addfile ./doc/images/RenderStar.gif addfile ./doc/images/RenderTriangleFan.gif addfile ./doc/images/RenderTriangleStrip.gif addfile ./doc/images/RenderTriangles.gif addfile ./doc/images/Reshape1.gif addfile ./doc/images/Ring.gif addfile ./doc/images/RubiksCube.gif addfile ./doc/images/Smaller.gif addfile ./doc/images/SomeRings.gif addfile ./doc/images/SomeSquares.gif addfile ./doc/images/Tea.gif addfile ./doc/images/TestCircle.gif addfile ./doc/images/TestRing.gif addfile ./doc/images/TestShear.gif addfile ./doc/images/Torso.gif addfile ./doc/images/Tux.gif addfile ./doc/images/Viewport.gif addfile ./doc/images/frustum.fig addfile ./doc/images/perspective.fig adddir ./doc/scripts addfile ./doc/scripts/deleteTags.xquery addfile ./doc/scripts/latexVerbatim.xquery addfile ./doc/scripts/transformscript.xquery addfile ./doc/scripts/transformscript.xsl addfile ./doc/tutorial.xml hunk ./doc/Makefile 1 +QUIP := quip + +IMG_DIR := images +SCRIPT_DIR := scripts + +FIGS := $(wildcard $(IMG_DIR)/*.fig) +GIFS := $(wildcard $(IMG_DIR)/*.gif) +PDFS := $(GIFS:.gif=.pdf) $(FIGS:.fig=.pdf) +EPSFS := $(GIFS:.gif=.epsf) $(FIGS:.fig=.epsf) + +all: tutorial.pdf tutorial.ps tutorial_examples.tar.gz + +%.pdf: %.fig + fig2dev -L pdf $< $@ + +%.epsf: %.fig + fig2dev -L eps $< $@ + +%.pdf: %.gif + convert $< $@ + +%.epsf: %.gif + convert $< $@ + +%.tex: %.xml \ + $(SCRIPT_DIR)/transformscript.xsl \ + $(SCRIPT_DIR)/transformscript.xquery \ + $(SCRIPT_DIR)/deleteTags.xquery \ + $(SCRIPT_DIR)/latexVerbatim.xquery + $(QUIP) -exit_on_fail -value_output -input $< -o $@ \ + -include $(SCRIPT_DIR)/transformscript.xquery \ + -include $(SCRIPT_DIR)/deleteTags.xquery \ + $(SCRIPT_DIR)/latexVerbatim.xquery + +# NOTE: Strangely enough, the PDF and the DVI output differs a bit, so we keep +# the intermediate files apart in the two rules below. + +tutorial.pdf: tutorial.tex bib.bib $(PDFS) + cp $< tutorial_pdf.tex + pdflatex tutorial_pdf + -bibtex tutorial_pdf + makeindex Klassen + pdflatex tutorial_pdf + pdflatex tutorial_pdf + $(RM) $@ + mv tutorial_pdf.pdf $@ + +tutorial.dvi: tutorial.tex bib.bib $(EPSFS) + cp $< tutorial_ltx.tex + latex tutorial_ltx + -bibtex tutorial_ltx + makeindex Klassen + latex tutorial_ltx + latex tutorial_ltx + $(RM) $@ + mv tutorial_ltx.dvi $@ + +tutorial.ps: tutorial.dvi $(EPSFS) + dvips -o tutorial.ps tutorial.dvi + +tutorial_examples.tar.gz: tutorial.xml $(SCRIPT_DIR)/deleteTags.xquery + ./extractExamples + +clean:: + $(RM) *.aux *.bbl *.blg *.dvi *.idx *.ilg *.ind *.lof *.log *.pdf *.ps *.tex *.toc + $(RM) $(PDFS) + $(RM) $(EPSFS) + rm -rf bin obj src + $(RM) code.xml header.xml klasse.xml examples.html tutorial_examples.tar.gz hunk ./doc/bib.bib 1 - +@MISC{glu + ,author = {Norman Chin AND Chris Frazier AND Paul Ho AND Zicheng Lui AND Kevin P.~Smith} + ,EDITOR = {Jon Leech} + ,title = {{The OpenGL Graphics System Utility Library}} + ,year = 1998 + ,note = "\verb+ftp://ftp.sgi.com/opengl/doc/opengl1.2/glu1.3.ps+" +} + + +@MISC{glut + ,author = {Mark J.~Kilgard} + ,title = {{The OpenGL Utility Toolkit (GLUT})} + ,year = 1996 + ,note = "\verb+www.opengl.org/developers/documentation/glut/glut-3.spec.ps+" +} + +@BOOK{redbook, + AUTHOR = {Mason Woo AND OpenGL Architecture Review Board AND Jackie Neider AND Tom Davis AND Dave Shreiner}, + TITLE = {{OpenGL Programming Guide 3rd Edition}}, + PUBLISHER = {Addison-Wesley}, + address = "Reading, MA", + YEAR = 1997} + +@INPROCEEDINGS{spjw:93, + author = {Peyton Jones, Simon L. AND Wadler, Philip}, + title = {Imperative Functional Programming}, + booktitle = {Proceedings 20th Symposium on Principles of Programming Languages}, + year = {1993}, + pages = {71--84}, + address = {Charleston, South Carolina}, + organization = {ACM}, +} + + +@INPROCEEDINGS{wadler:90, + author = {Wadler, P.}, + title = {Comprehending Monads}, + booktitle = {Proceedings of Symposium on Lisp and Functional Programming}, + year = {1990}, + pages = {61--78}, + address = {Nice, France}, + month = jun, + organization = {ACM}, +} hunk ./doc/extractExamples 1 +#! /bin/sh + +QUIP=quip +SKRIPTE=scripts +JAVAC="javac -source 1.5 -encoding iso-8859-1 -Xlint:unchecked" +# TODO: This should be ghc-inplace... +GHC="ghc -O -Wall" + +rm -rf src obj bin +mkdir src obj bin + +${QUIP} -input tutorial.xml -o header.xml -include ${SKRIPTE}/deleteTags.xquery -query ' +let $withoutDeleted := deleteTags(input()) +return $withoutDeleted//code[@lang="h"]' + +X=1 +Y=`${QUIP} -unwrapped_result -input header.xml -query 'count(distinct-values(input()//code/@class))';` + +echo ====================================================================== +echo "found $Y headers" + +while test $X -le $Y; do + ${QUIP} -unwrapped_result -input header.xml -o name.txt -query 'let $klassen := distinct-values(input()//code[@class]/@class) return (string($klassen['$X']))' + + NAME=`${QUIP} -unwrapped_result -input header.xml -query 'let $klassen := distinct-values(input()//code[@class]/@class) return (string($klassen['$X']))';` + + OPTION=`${QUIP} -unwrapped_result -input header.xml -query 'let $klassen := distinct-values(input()//code[@class]) return (string($klassen['$X']/@compileoptions))';` + + LANG=`${QUIP} -unwrapped_result -input header.xml -query 'let $klassen := input()//code[string(@class)="'$NAME'"] return if (count($klassen/@lang)=0) then "java" else string(($klassen/@lang)[1])';` + + PACK=`${QUIP} -unwrapped_result -input header.xml -query 'let $klassen := input()//code[string(@class)="'$NAME'"] return if (count($klassen/@package)=0) then "." else string(($klassen/@package)[1])';` + + MAIN=`${QUIP} -unwrapped_result -input header.xml -query 'let $klassen := input()//code[string(@class)="'$NAME'"] return if (count($klassen/@main)=0) then "no" else string(($klassen/@main)[1])';` + + echo "*** header no. $X, name $NAME, option $OPTION, language $LANG, package $PACK, main $MAIN" + + mkdir src/$PACK + mkdir obj/$PACK + + ${QUIP} -value_output -unwrapped_result -input header.xml -o src/$PACK/$NAME.$LANG -query 'define function further($x) {if (node-kind($x) = "text") then $x else if (name($x)=QName("w")) then " " else if (name($x)=QName("nl")) then " +" else for $y in $x/node() return further($y)} string(for $code in input()//code[@class="'$NAME'"] return ((further($code))," + +"))'; + + X=$((X+1)) +done + +############################################## +${QUIP} -unwrapped_result -input tutorial.xml -include ${SKRIPTE}/deleteTags.xquery -o code.xml -query ' +{ +let $withoutDeleted := deleteTags(input()) +return $withoutDeleted//code[not(@lang="h")]} +' + +X=1 +Y=`${QUIP} -unwrapped_result -input code.xml -query 'count(distinct-values( +let $in := input() +for $at in $in/*/codes/code/@class return $at))';` + +echo ====================================================================== +echo "found $Y non-headers" + +while test $X -le $Y; do + ${QUIP} -unwrapped_result -input code.xml -o klasse.xml -query ' + let $codes := input()/*/codes/code[@class] + let $klassenname := string(distinct-values($codes/@class)['$X']) + let $klasse := ($codes[@class=$klassenname])[1] + return + {string($klasse/@class)} + + {string($klasse/@lang)} + {string($klasse/@package)} +
{string($klasse/@main)}
+
' + + NAME=`${QUIP} -unwrapped_result -input klasse.xml -query 'string(input()/*/*/name)';` + + OPTION=`${QUIP} -unwrapped_result -input klasse.xml -query 'string(input()/*/*/option)';` + + LANG=`${QUIP} -unwrapped_result -input klasse.xml -query ' + let $l := string(input()/*/*/lang) + return if ($l="") then "java" else $l';` + + PACK=`${QUIP} -unwrapped_result -input klasse.xml -query ' + let $l := string(input()/*/*/pack) + return if ($l="") then "." else $l';` + + MAIN=`${QUIP} -unwrapped_result -input klasse.xml -query ' + let $l := string(input()/*/*/main) + return if ($l="") then "no" else $l';` + + echo "*** file no. $X, name $NAME, option $OPTION, language $LANG, package $PACK, main $MAIN" + + mkdir -p src/$PACK + + ${QUIP} -value_output -unwrapped_result -input code.xml -o src/$PACK/$NAME.$LANG -query ' +define function further($x) { + if (node-kind($x) = "text") then $x + else if (name($x)=QName("w")) then " " + else if (name($x)=QName("nl")) then " +" else + for $y in $x/node() + return further($y)} + +string(( +(if ("'$LANG'"="java") then "//generated class! do not change +" else "") +,for $code in input()//code[@class="'$NAME'"] return ((further($code))," + +")))' + + case $LANG in + hs) + cd src + ${GHC} $OPTION -o $PACK/$NAME.o -c $PACK/$NAME.$LANG + case $MAIN in + main) ${GHC} $OPTION --make -o ../bin/$PACK/$NAME $PACK/$NAME.$LANG + strip ../bin/$PACK/$NAME ;; + no) echo "no main" ;; + *) echo $MAIN; $MAIN ;; + esac + cd .. + esac; + case $LANG in + # java) cd src;$JAVAC -classpath ../classes:$CLASSPATH -d ../classes $OPTION -source 1.5 $PACK/$NAME.$LANG; cd ..; + esac; + case $LANG in + jj) cd src;javacc -OUTPUT_DIRECTORY:$PACK $PACK/$NAME.$LANG; cd ..; + esac; + case $LANG in + cpp) cd src;echo g++ $OPTION -o $NAME.o -c $PACK/$NAME.$LANG;g++ $OPTION -o $NAME.o -c $PACK/$NAME.$LANG; + case $MAIN in + main) echo $NAME; g++ $OPTION -LDIR../obj -o ../bin/$NAME $PACK/$NAME.$LANG; strip ../bin/$NAME;mv $NAME.o ../obj/$PACK/$NAME.o;; + no) echo "no main";; + *) echo $MAIN > ._ttt; chmod u+x ._ttt; ./._ttt;rm ._ttt;mv $NAME ../bin/;; + esac; + cd .. + esac; + case $LANG in + c) cd src;echo "-c" ;echo $NAME; gcc $OPTION -o $NAME.o -c $PACK/$NAME.$LANG; + case $MAIN in + main) echo $NAME; gcc $OPTION -LDIR../obj -o ../bin/$NAME $PACK/$NAME.$LANG; strip ../bin/$NAME;mv $NAME.o ../obj/$PACK/$NAME.o; + esac; + cd .. + esac; + case $LANG in + h) echo "../obj/$PACK/$NAME.$LANG" + esac; + + X=$((X+1)); +done + +echo ====================================================================== + +cd src + +KLASSENPFAD=`${QUIP} -unwrapped_result -query ' + string({("../classes/", + for $p in document("../tutorial.xml")//use + return (":../../../",string($p),"/examples/classes/") + , for $p in document("../tutorial.xml")//jar + return (":",string($p)) +)})';` + +FIRST=`${QUIP} -unwrapped_result -query ' +let $x :=document("../tutorial.xml")/*//@javacompilefirst +return if ($x) then string($x) else "" +';` + +echo "first $FIRST, classpath $KLASSENPFAD" +if test x"$FIRST" != x; then + echo "compiling..." + $JAVAC -classpath $KLASSENPFAD -d ../classes $OPTION $FIRST +fi + +PACKAGES=`${QUIP} -unwrapped_result -query ' + string({ + for $p in distinct-values(document("../code.xml")//code[@lang="adt"]/@package) + return (" ",string($p),"/*.adt") + })';`; + +echo "adt packages $PACKAGES" +if test x"$PACKAGES" != x; then + echo "compiling..." + java -classpath ~/fh/adt/examples/classes/:/home/sep/fh/java1.5/examples/classes/ name.panitz.crempel.util.adt.ADTMain $PACKAGES +fi + +PACKAGES=`${QUIP} -unwrapped_result -query ' + string({ + for $p in distinct-values(document("../code.xml")//code[@lang="dtd"]/@package) + return (" ",string($p),"/*.dtd") + })';`; + +echo "dtd packages $PACKAGES" +if test x"$PACKAGES" != x; then + echo "compiling..." + java -classpath ~/fh/adt/examples/classes/:/home/sep/fh/java1.5/examples/classes/:/home/sep/fh/xmlparslib/examples/classes/ name.panitz.crempel.util.xml.dtd.parser.MainDTDParse $PACKAGES +fi + +PACKAGES=`${QUIP} -unwrapped_result -query ' + string({ + (for $p in distinct-values(document("../code.xml")//code/@package) + return (" ",string($p),"/*.java") + ) + })';`; + +echo "java packages $PACKAGES, classpath $KLASSENPFAD" +if test x"$PACKAGES" != x; then + echo "compiling..." + $JAVAC -classpath $KLASSENPFAD -d ../classes $OPTION $PACKAGES +fi + +cd .. + +echo ====================================================================== + +mv src/*.o src/*.hi obj +tar czvf tutorial_examples.tar.gz src + +echo ====================================================================== + +${QUIP} -unwrapped_result -o examples.html -query ' +Examples from the Tutorial +

Examples from the Tutorial

+{(let $used := document("tutorial.xml")//use + return if ($used) +then +(

Library classes used

+,) +else ()), +

Defined Modules

+,
    { + let $header := ( + for $k in distinct-values(document("header.xml")//code[@class]/@class) + return (string((string($k),".h")))) + let $cpp := ( + for $k in distinct-values( + for $code in document("code.xml")//code[@class] + let $lang := if ($code/@lang) then string(($code/@lang)) else "java" + return string((string($code/@package),(string($code/@class),".",$lang)))) + return $k) + for $n in $header | $cpp + return
  • {$n}
  • + sortBy (.//@href)}
+,all examples as a gzipped tar file}' binary ./doc/images/APolygon.gif oldhex * newhex *47494638376134014801f20000000000ffffffdcdcdcccffffb7b7b76e6e6e8080800000002c00 *000000340148010003fe18b0dcfe30ca49abbd38ebcdbbff60180564699e68aaae6cebbe702ccf *746ddf7881ef68b10482a070482c1a8fc8a472c96c3a9fd0a8744aa516aad8a20f00cc7abfe0b0 *784c265f09e8b47a1d58bbd5edf7bbbbed0a0c0c24a0cceffbff80616705848586866d878a8589 *8b8a743f430c064600948198999a9b7d832d043aa09fa13a2ca241754493aa97450baa64af9cb3 *b4b5479e49a2a748ba3ab9be02a94378b241c5ae0a42c7927bca0e4acbb6d2d381b8bca4401102 *bd5dcdc641bbc2c37977de95240cc9aec7c5d1ccd4f0f19ddbc047dc02daf7e479e191eb967888 *a00040a08d4173caf0796bb790dd1e86c61a3833f78a9cbc8bb6ac292ca6fe8fe29e7b1bc9f5e3 *72a4621137040d1644a8b06544672f21ba6c26abe6c3863731eaa4a55122386c2e5f820c2964a4 *1d58d120a021c8d455c2883e65dafc3633e7cbaa3bb36aea69b1e3bba13ee94122e9ca003196aa *083c50b53628ccab53a7b6944a13add6bb63b87204ea50ecaeb646cb426d5549e6d3a7491b5edd *f8b6a262ac782397d168a4e35acb50c5a2f2a78cf0aa920843b3750bd3b045c77583ca95cc1a0c *e5937c21f80546f1e7d8a301c7b96bb2cc31688f6f4be37c47bab5f129af890cad0cf4da6d21b9 *899c8db77bf7f1eb6206c951436a7b9aeede03532d6c091ebbccd8d34fa6e7e850a3f68c40c167 *b4996cebc4d6d5ebb7228007fe8ffaefcd27e080041668e0810826a8e0820c36e8e083101612cc *0fa08860e1851866a8e1861c76e8a10357d451e187249668e28928a6d86188146ea1e28b30c628 *e38c1bb2c8c58834e6a8e38e3cd26863223d0629e490448af0238e4526a9e492491ee922935046 *29e58b4e4e69e595586a5865965c76e9a5055b7e29e6985e8649e699684269669a6cb6d9e39a6e *c629279513def8e49c78e6f9219c7af6e967087cfe29e8a017044ae8a188366068a28c0eba68a3 *90eaf968a494c63969a598a2f923007766ea699b36eed1e9a7a492f9639da5a66a6a9d408caaea *ab579eea2aacb4aac92aaab5e61aa5acbaf66a6b2ab3fa2aac8ebc0e6b6c90c51efeab6c8ec92e *eb2c8ccd3e2bed89d14e6bad87d55eab6d86d96eeb2da0b706fbedb81a744beeb918988beeba13 *a8cbeebb20860befbc14b84befbbf6debb6ebefa9ecb6fbfe3fe0bb0b7020fac6dc1065b8b70c2 *d22eccb0b30e3fac6cc4121b4b71c5c25e8c71af1a6f9c6bc71ed30a72c8af8e4c72aa269f4c6a *ca2a7bca72cb98be0c33a532cf0c69cd36338a73ce88eecc33a13eff2c68d042fb4974d192ca8b *f4c44a2f6d71d34e670c75d41c4f4df5c7565f2d72d65a97cc75d7287f0df6ca628fed72d966c7 *8c76da34afcdf6cd6ebfad73dc72f74c77dd40df8df7d07aef6d74df7e270d6ce0670f4eb8da86 *1fde76e28ac3cd78e3733f0eb9dd92fe4f9e77e596f38d79e67f6fceb9e09188fbb9892c9878f4 *e736980ef8e823f86782ea9eb30e81eb30c01ebaec0fd0be83ed24898eb7eec097c07bab7e076f *fc0ac3e34af5f1ccc790bcef1b372ffd0dcf933cfdf5b4573f30f6dc33af3dbadd87cffdf7d28a *6ffef90a94787a9be8b7ef3e3aeaafeee7fbf4d72f7cfcb1376afffeef939f29ff00449fff2a15 *c0028a6f809132a002c787bfdbfd6f8110941e021915c10a7aaf81bdc394053718bc091e8a8320 *cc1e068997c0109a707723541ea24ec842eaa5107a786aa10c69e0c1f9cdf086b57b210571c8c3 *16d4304f3d0c22f274f841211af1043f94d31197783f12ad2f484c8c6212d91745264e31fe4d55 *942211fb94452d3a517e58eaa217f704462b89718cd82aa394ce88c615a9114a6c6c23879e18a3 *38cab1466f54921defa8a53c16698f7ce4961f8704c84062888e282aa4212f8448d229d28a5b3c *d3231769a1467e68929434d2207584c94c822b7f53eaa4274160c90d8972941f2865864e894a0f *a8f242ac6c65075e298258ca9203b404812d6fb9815c7a6097bc2cd7265304cc6066c0971b28a6 *31d3354c472a73895784e23321f945504a739ad08c2493b0b9cc4235b343dcec2698be69ca7052 *938cd6cc9139c55901644a609decac17396109cf73a6319d75aca73ddd88cf17e9339eed9aa72e *ffb9cf390af497042d281efb79a284025402feeee4824315da47869268a20f8d0032319a5108f8 *92a31d7d402e417ac2371dd402240560ac4e4a819432904daa74290f12554a990e316c16a5e744 *9fd5486ce28ba50e9824c6e81852743d9185725b5f013f77ba03e22ea039e580ee9eaac9a86a20 *8754d56656e514d1added3815e9d5357c3ba50b092d54d633deb2181aa5668b1b5ad2a4a2b5c3f *69d6b9aecaaa762d925cf33acbb7f2b59a75fd6b97f62ad863fab5b006c52b627744d8c5b6f3b0 *8e5dab62233ba3c65256a390bd2c5d33a8592b59b6b38aca2c68fb3ad9d1a2e8b3a645ed68550b *5ad676d6b59a85ed65654b59da46d6b68ec5ed62758b58de16d6b78205ee5f85cb57e2e6d5b876 *fe45ee5c950b57e6b6d5b96a85ee59a54b56ea86d5ba5ec5ee56b59b55ee52d5bb4f052feec42b *3bf2b2cebca3432f53456b5a6196b6bd5a85ef90d4cb39fa66cebe96c3efe4f40b39fe36cebf8a *03f0e1044c380207cec07e43f0de148c3706d7cdc14965af7cc7f9de09f333b016366985335c51 *0c73985812feb047432ce2786db8c455f5308a6304e1b7b5986d2f4e5b8ccd36e3b1d5186c37ee *5a8eb5b6e3abf5986a3f8e5a909d36e4a5151969472e5a9285b6e49f3599674fce59946d36e599 *551966576e599655b6e593759964b28a9098c74ce6329bf9cc684e338358458352d854a66e9681 *88c2e38650d0f9ce78ceb39ef7cce73efbf9cf800e4eb4a007cd9d38e879ce873634a117cde846 *3bfad1908ef4a0ed7c680aed99d292ceb4a637cde94e7b1a0d98c633a2f31cea4f9bfad4a84e35 *aa4b4de72da8f9d5b08eb5ac674deb33af5849034800003b binary ./doc/images/ApproxCircle.gif oldhex * newhex *47494638376134014801f20000000000ffffffdcdcdcccffffb7b7b76e6e6e8080800000002c00 *000000340148010003fe18b0dcfe30ca49abbd38ebcdbbff60180564699e68aaae6cebbe702ccf *746ddf7881ef68b10482a070482c1a8fc8a472c96c3a9fd0a8744aa516aad8a20f00cc7abfe0b0 *784c265f09e8b47a1d58bbd5edf7bbbbed0a0c0c24a0cceffbff80616705848586866d878a8589 *8b8a743f430c064600948198999a9b7d832d043aa09fa13a2ca241754493aa97450baa9c4faf4c *b3b1b6b75a02a748a2bb47bd3a49bba94378b502c7aa0a42c9cc7b9a0fc8cf4bcdb8d69b9ec2a4 *4011badb41d3c841c39144c6cf78495c0a3fe1ceee7fd54ef2d7f57fd9bcdfddc0dcb379e45c2a *2d30906e080a0004da288427aed6ab3cd2a43d6b00ee98bf8a022bfaa3e8fe10a2bd8f66bcd9a1 *384e5fb857fc3442046847d51e786e102a4c08efe134883627becc63d359c49f2e554a94a41323 *c8a360f0499c96d2e29e94424b420a5809e8bb0668106a75c5cc27c68e3fc16af41a1468b28d46 *91aaada294a4c8534edf068b2a12553956e7946875e092afd99d3ed1a6fd9b91305195f4d62a56 *d2d663d3934fbf2d9dc5d2d5a5557ac4769594b6e7d7a29d351f36ec35f1e2d349941a791c8df5 *d8ca925a49945d76b3edcf460583dd7db326e8c1a2510b675c375fa27ead259f946a976a908242 *f24e39bbd3a35fab1ec50d450cd8ea52ecd9878b1fa2ba08d45f92d14fb503bd58782fcd4c8f9f *7f74901c35a4eea7c9af1fb6fe76819688111f43f415589f378e1cd248828c80c22023cdb5b4c9 *800656b8d6153cf010a1830f76e8e187208628e288249668e28928a6a8e28a860850072822c428 *e38c34d668e38d38e6e8c0152f6ea1e38f400629e49044dec8e30f3016a9e4924c36e9a4912e22 *e9e393545669e5954e1ec945925876e9e5976082a06522619669e699688ec9259a6cb6e9a6926a *4ef9e69c74d619639c76e6a9e79e17e0c9e79f80f2e967a08416dae6a08626aa6897882eeae8a3 *4b360ae9a494e62869a598661ac2a59a76ea699f516e29e7a7a4960a01a7a6a6fa29aaaab68a29 *abaec6fa28acb2d66ae898008c6aebae896ab987aebc060be898a10a6b6ca0c402fe7becb27326 *cbecb3793a0bedb46f4a4bedb5675a8bedb65f6acb2d08257c2b82b7e26a10ee0f2494db01b9ea *52702e04efb65b01bbf23a10afbbe9d62b01bdf5de9b81bffaf25b2ec01d105caec0d89a80a3c1 *db220c2dc335420cadc3c74a9ca3c5c652cc2bc641726cabc6b27a5ca4c8ad82ac2ac94da24caa *c9a4aa5ca5c2c2b2aca9cb5fd20ca9cc94da6ca6cebd860a84b29ef2dca6d0c3fa5c6ca944d399 *74b446030d29cca92edd6cd39d4a4da8d569525d29d68a720d26ce4ae74badd758823db4d8df92 *4da5d93ba32dafda4cb20da6dbfa3240f79e727bc94edd12ecfd67de5dfacdf70382e3adf59f85 *0f6e2fb287ef99b8e28bffdd789e8ffe431eb9e1a9383db4e515545eede4757aceb9dd82823ea7 *e8a393ae27e04ea29ebaea76b29ef2eb17b85ea6ec4bda4e3b174c676ea7eebbf35e27ee44021f *bcf053fbaef4f1ff0e6ffa99c6331f7d95c477cc3c07d33f593d90d91fdf7d93dbebf8bdf79f2b *cfe6f8d2bb19fe8de85fdfbe90ebdbf83ef96cc64fe3fce9676d7e99f8bbaf7f249aa352ffae87 *bc30d92f4603f49f990e18820412d0813362e00720f8c0db3def6504149f012f28c00c5e6c83fb *c312053d58c0b271707624d4a09724b88111a6d085eb3a61ee52c8bd15ca706434b49e0943f824 *18e6b01d576261ed7ea8432b09b1734414920f41c543262d31892504df0d6b08c5213d71fe0247 *ec5b15ad48bd29aa708b4a5c9b171706461c66698cf22ba392aef8802c5e4e8d61946213e308c7 *e2c911804eace30c2385c619b1518f51845f1f1108c83d16c98d7f2c24108994c5442a7291829c *e3071f69c848e2918b94cce39084e8c84c42f2472ceca4273f69a941166c94adb3644002280251 *a232903662a02b5f094b1a1d7096b4aca58c6e99cb0eeac87eb8ece50881d94b0c965292842c66 *0f7f694a0c043397c36ce6109599ca635e928cd444218e88994d4d6e539a1678262da389cc5676 *d39b502a6703cf59c958821389ec34e337d509ae78ca339dd7649f3ded68cd557e719f549c673e *d308d022e2d39f932ce88fc839d0882934a0fe07fdd93f1faacf7e4a34a114ada840118acd8c6a *34a24723a847450a52567a409caf6428473f3a523f32939e136c2949dd09d393cad4a1160d294e *6f2a23955eb4a33c35674e4d7acaa02673a33f65a9516d3ad4892eb5a848d5e9fd9ebacea66294 *aad87b6943a78a55a64695a859ed2a544bea54b14ef3ab65352b3cd17a55b58653ab2b9da95bd7 *4ad6b6ce75023e95aa4bef7ad6ba0295af78856b52e50a58780956af3d2d2c5d69bad5bd2a568b *56fdeb63dfc8d8b8ee74b2843b2c585b88d9116836ad98cdeb66cdd559c34656a9a5152d6827ab *5abb76b6b5924ded675d1bdad9c6f6b5b6452d6e4f4bd8ddb2f5b6b5e5ed654b4b4a5bbed35dc4 *fea56c8db899dce246f0b8816dae7377095dc84a17b6ba0dee6fb3cbdadcf656bb7ee5ee63b1fb *ddee0a97abd7f5ee70894bdef5caf6bc8e6d6e7bd12b5ff5d237b9f38d2f7eedab5ff6f2b7bfe0 *0daf7801eb4259ee1794d545ae6fffebdebb2e31940186ef80b1fac423a2548d576c245fd9a861 *071f32c1ce9ceb1fdda84b9e2692c4256ea923517ce11cae18c4a4a56a27513c5d8f8a92c6297e *e88d61ccd9a0ba12c7352ee82c811c647be292c83966e791793c561d1b91c94d06e833910c3b29 *efb0b1e8dca738a95ce578a294cb5deee685c11c6665b698cc4546e599a15cd56cb638576c6e73 *31df0ce79aaed1cd20c4b2318569413bb77394745efe009a339bd26cc5f9a88036b49fb3fcc840 *3360d0a6a5a4a31f7d6800c371d2945eb4360b89694157dad260ecb4a7355dcd3a8a7ad47a9e9b *a99397ea9aadba7cad7675194f9de958cbba8ab4aeb565cf176ae7917acf44ccb5ae07fb2661e7 *ac77b60e93b11fb56c54efda4dcd5e54b421ddbc17622ed9fc2361b49d4decd06570dbdc466cb1 *bf2db95feb4d81a533f7b98307ee618b7b79b46bb7bb479bed78138ada2795379aeeb6ba4faf91 *dfe2821b1fd50d3d803f4ce0777c76a1a0f62c848b91e0a733b8ab1cfe6488874ee29fa2f89515 *9e338c775cdf31b4389f346e2586afccdf67f3b8e354fe2a94471ce4e882f973452e6d96f3cfe6 *9ec277fee070fe3292c7cee588e3f9bf650e249ddffcc23e2f1acd839674bb095d564687f6d3f3 *3df55a45fde5e2ab3aafae7ef1fe357d525ca79cd6bf5ea9b0afdce664cf94d901653093736eed *57135bda4b057743cd3d557597ee8e80aef7ca76bbefeae33be0678eedc1334af0861f17e2132f *a6c533de03791f7ce4013ff9be575eef97976ee69bbbf9e4769eb89f2f6de83b3b7acc967eb2a7 *7f6cea15bbfac2b61eb0afe76becef3afbb9d6deadb7576beecd9a2c16f9fef7c00fbef0874ffc *e29fc8673428458696cffce63bfff9d08fbef449a07c19bca83f6e0805f6b7cffdee7bfffbe00f *bff8c74ffef29bfffcf88983f7afbf7ef5a3fffdf08fbffc3fe74ffffa9f5ffbeb47d2f7f16fff *fefbffff001880028806fcc77decd77d0538800ab8800cd8800c9880d8b705c637811458811678 *8118387c8fc727039000003b binary ./doc/images/Body.gif oldhex * newhex *47494638376130014a01f70000000000080808080c08181818181c181820182020202024202824 *28282828282c28302430302830303030303430382c38383438383838383c38403440403c404040 *40404440484048484448484848484c48504450504850504c505050505054505068b0506cb0584c *58585058585458585858585c58586058586cb0586cb85870b8605860605c606060606064606068 *60686068686468686868686c68706870706c707070707074707084c07088c87870787874787878 *78787c78787c80807480807880807c80808080808480808880887c88888088888488888888888c *88908490908890908c90909090909490989098989498989898989c9898a0a0a09ca0a0a0a0a0a4 *a0a0a8a0a8a8a8a8aca8a8acb0b0acb0b0b0b0b0b4b0b8b0b8b8b8b8b8bcb8c0bcc0c0c0c0c8c0 *c8c8c4c8c8c8c8c8ccc8d0d0d0d0d4d0d8d4d8d8dcd8d8e0e8d8e4e8e0e0e0e0e4e0e0e4e8e0e4 *f0e0e8e8e0e8f0e0ecf0e8e8e8e8ece8e8ecf0e8f0e8e8f0f0f0f0f0f0f0f8f0f4f0f0f4f8f0f8 *f8f80000f8f4f8f8f8f8f8fcf80eff0008bf0001230000eb000013000008001800b4db00d7ff00 *ffbf00bf0de8ac004fd72010ff0540bf0004fd0000ffa09000ef4d00ff1a00bf080028c8e2dbd9 *74ffff13bfbf080f56bc00edd72004ff64f800005300001a00c48c29db56dcac0402dbcb00ff23 *00bf4000009019004d000002000000dc00002e000040289e02db6300ff0e00003cff00b0ff0006 *ff0040ff08900610db00392f00404000749f07007900001500000c0028e800db4f00ff1000068e *0037ee6008086f08404008030610000039000040000030d0040155004a4c9001014d00001a0000 *084a003c0100ea000004000098007c5600191a00080880e810db4fd9ff10ffbf40bf841804dbda *00ffff00bfbf0088cf00dbfa00ff08008c3000db5300a0d000ef5500284c00db0100ff0000bf00 *000f9c10000ad9201eff0000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *002c0000000030014a010008fe0073e0c8e18144410f2b468c206130e1c2860a19228c68b0e241 *8b182f6accc871e3c61a36408a0c4972a4c992284faa4cc972a5cb96305fca8c49732648142a70 *d6d8b1b327cf9f3e7d86c8a92228d0a34687ea44cad427ce102986aad0f1c143d5ab56ab5acdea *61eb07ad57c17a1d8bb52cd9b366d36eb53183addbb670dfca8d4b77aeddba78efeacdcb77afdf *be80ffce453143075cc36c11173ecc98b0e2c78c13375e2cb932e5cb2840a0184ae20389123b92 *3049f2844913d3a44da32e7dba49ead6a2638f9e2dbb36eddbb673e3b6c19b47983d80fe040704 *5c7871e2c38f2b4fcedc7873e4cea3439fbe5c7a75eacfaf6bcfceddf97531bc77fefc0934be3c *f9f3e6cd8bd961433cfaf7e9dfaf6f1fbf3efa313cd8674e81c22a89203cf4c003803df400c480 *030a084411011a8860100a32482082024e6861801466786185185ad8db196680286288248e6862 *89289ea8628a2caee8628b30be28638c34ce28221636d49186193bf6c8e38f3e0689850e3a0269 *6490470e5924924c02c9036f20809042672eb405d20cece9d09e0d3cdcb083975c7a0966975aca *75254956ba75e69a6ab699e69b68b2d744165bd069679d78dea9679e7ceee9679f80fe2968a084 *0e6a68a1881e7aa70d6364e185a3903e2a69a4947ac168a5984eaae9a59a664a2914360061c366 *9e99c082a9a8b270aa0b1d1c004102fe2eb81083acb3baa08400249c9aeaaea7f6caebafbe060b *6caa5e0e81c41148186b2cb2cb267bacb3cc3edbecb4d2561bedb5d0664b2db6db6a6badb7dc7e *dbedb8df86cbac0d5f2cb1acbac7b27b84bbf00e816ebcedae6b6fbdf3defbaebe4b30fb039828 *74c650099fe55ac20a25c420c302243410410c2dc8202bab0690e002c22b144cf0c61a77ccf1c7 *1e870c32c15feeb0437e289fac72ca2cafec72cb30bf2c73cc34cf6c73cd38dfac73ce2c337a43 *103b002d74d0440f6db4cf4203a0f4d24c2f7df4183f172db5d1537b8982671f9490f5675913dc *820b1efc5001061eb87042ac32dc10c1d9046bbcb5d61bbf2d77dc74735d37dc767f66c3fe0d61 *f2e0f7df80072ef8e084176ef8e18827aef8e28c1b7ec3177e1f18f9df92f35079e53b406e390f *4d77aef4e67e673ef9d294ff4dbae460deb07109acb3ce4209af4b2c4304233860800cb2273081 *0b12bffe7aebc0b71ec8f0810072c60cc127ef4620c937dffa978d472ffdf4d4576f7de18c3ea8 *3d80dc6f3f60f6dc7bde79f741808f20e9dda3ffa0c93760ed7c09b1c69aab0615c48a440212c7 *fa7ef081d40145145d08c419f65782e5113078edb981df26c4a1066aa8431074e0861e28c10852 *f08213cca0053558c10e3e5083e89a10830434421e94f0844ffac284008021140a8885244ca108 *39f7b9177e4e429613d30d3a03bcd7b5c054fe2c909d0b6c6080115880031a60000984a82adf95 *c004b07b621403e186d7f1201064284116ead0bf2c94a0056000841ab8688233ecc1042668031a *a4f83a28be0e7a0d82901c7b30c73ad2f18e76cc231ef7a8c73ef2f18f7e0c24200729c8421292 *513d30422217a9c84632f2914640642301e0c84a2692928c94e42397d6034e56724026b3c1dba4 *084534c22f7e2ef800040220030f4400952e80222967594ae20d0f0d26b84220cc80043304c20a *58080418b230bc1238211044984120a2504a5a8a6981848ca621a729cd6a52f39ad6cca61e43d8 *8322dcd19b10026737bf79471da8709c00186738c9994e719a739deb6c9a3ac7a9202fadce5730 *fe60410b82e8021a28ac0308f8c00386a8b07e424c9fc33a5520e8f0a52a04220b6a08c40b8218 *083544340626c84320f4b9872f5001101815d6a94cb6402198f4a4284da94a57cad296baf4a530 *8da94c674a5397324a0847c0a94e73cad39dfaf40837e529007a4a549c0e75a741fda91096a6d4 *2324d26fedeb61aa5635ab18d400081128010f2a4080194c2c06ba1269aaa868aa1304a20d1195 *81096850d188ba8005770884a9c45007339421a10a6c504df7cad7befaf5af8055e9e38c7052c2 *9ad4b04240ac628530d89302a0b09035e9630fcbd82f2c56b24c8bac1018d4a51db8ee8b2d082d *c42056031994b6010da8410d5890011150a0b4a51dfe6d68674bdbd006220f5290821802218660 *9a8109bec44200c340cc40841609c36b426d6bbbc0200ca159e6029774c9155dea4e575cd8ad6e *76afabdd68918b514360c2119810def19697bce245af799900def40220bde73def7bd7dbdef51e *6169f755da7ac38b5350b6ee54cb8d18ee9e7080d2caa0031fa8400324803b190438c0b6048419 *66d0022e70b10e5988d8192aaad1d9d2610f2e787068f50a5dee9ad8ba28de6e8abb7b6215bbd8 *bbd97d5cbd66bc2f1abb2b73f51a2abdf6a5e365e1b8c6f9edf1d294d5af9c72d67726106d0bfc *1903abca80040658816a65a08316c0c0021b20810e6ad064d97ab9055f0e3398c7fce51ab8410c *644e33fec4206452242081096f8e339ce72ce73ad3f9ce76ce339ef7ace73ef3f9cf7e0e34a007 *2de837330a094f40b4a213cde8453bfa09876634001a4d69444f7ad19156f4d21cbd6946bf4b08 *1062e3d7461dab88ed8d0233c05daa6750001b34800035f06a68434c6b52dbbad6b8bef5a89509 *881ee41ad70912c210928004621bbbd8c83eb6b293cdec653bbbd9d07eb6b4a34ded695bbbdad8 *be36b11f076762c3597c4aeb769cb98d6c00205bdce236b7b791406e626f1add48d834b19760d2 *02b92ec9639658936b508009cc40b5a565cb0e483080045c60065d1e738821b6f051335ce1107f *f8c38330ab883bbc052545969b37cef18e7bfce3200fb9c8fe474ef2929bfce42817f9a1ef0c6e *73df79e56f6ef9d25e3e8642ef79084e0550d7d0b8cf1f869605356841aa65d064d91db8010e70 *4007f6a94f84f63cc94e8fbacfa50ef5a95bbdea55cf6b10708af3ae1fc1eb60ffbad8c34ef6b1 *9bbdec683fbbdad3cef6b5bbbded707ffbe3beae84aed79dee76cffbd73387f7be0fe1ee7fd7fb *10f81e78bf03fef043108281ecf95f84420c06a135c1e3233ff91f563ec9587fbae6a9bef9ab77 *1eeb262b90498b4afaa69abef4a83fbdea53cffad5bbbef5b0ffe94de94d7b21d4fef6b6cffd12 *66affbdee3fef6bcffbdef7b6f04a8666de7a494652995ff44e69b9296d06fa6f4a34ffde997f2 *9909c2a6f6b5fec9fded7bbffbd97c9c38c74f4e788e53fce59f27f9d7897ef3af7f9e00ea2c0f *83e7c4fa47d1fef63fa0fef7df3ce89d4c7b1ec44118b44104188005388006988008b88001983d *c527043cf08011c80310288116e88014388115988116c88118b88120a8811c382060324ad2e77c *28c83acba782d5d782d6e782ce941f05f27d34087e35788336584d8fe37ee9f77e99c38340384f *3fa87e3d587e39f42581e0074ab8844cd8844ef8845018855238855458855678855898855ab885 *5cd8855ef8856018083770034908866678866898866ab8866cd8866e68856248866f3887745887 *76788778988771588679d8877ef88780188875b887825888867888fe8898884b48888ad8888ef8 *8890188663c88791588996788995c88898b8899cd8897fa8899e188aa2388a68088aa4788aa898 *8a52688aaad88aae488aacf88ab2388b96188bb4788bb87888b6988bbcd88b78b88bbe188cc2b8 *86c0388cc6788c5c588cc8b88cccb88a93d88cd0188d54a88cd2588dc7488dd6988dbe888ddad8 *8db7c88dde188eae088ee2588ea7488ee6988e9e888eead88e97c88eee188f8f088ff2588f8848 *8ff6988f81888ffad88f7af88cfe189091c88f0259906d4890069990a508900ad9908088900e19 *915a08911259915548911699915088911ad9918bc8901e19929228872259925ec8912659912899 *9211b9922cd9902ef9fe9209199332599034599301799338d98f3ab993f9d8933e598f401994f1 *389444d98e467994e998944a598e4cd994e1f89450d98d523995d9589556598d589995d1b8955c *d98c5ef995cb189662798d2059961d499668298c6ab996db78966ea9927019972d399774099376 *79973399977a69937cd99739f99722a90084e9936de98b8499988ad9008010618aa998227998b3 *48980da00095d900b694999ab9998170990aa09192d98a9469999c599aa699998a990075499205 *9900a38999a7199bb2393c978997ace98faf399bbaa99b9659987e799bf6989bbb399cbbd99b9f *e98fa1b989897999c4d99cbb5999bef99382e98d94895ab0e99cd8399bc6fe299dc0998ecb499a *d9199eba099dc75994d3598dd5895ae2b99ec5099de6d99de1f89aeac99ef4299bee8994e7d98c *96699dd7599ffe699aa8d59bea989c88289f9df99f081a9b026a8e046a8897c99f091aa1001aa0 *e5e98d0d2a88062aa11a5a9adb1995f9298cbd09a11b3aa29b19a09569a11f8a980faa9efd49a2 *2e6aa215aa9529ca8bfb29a22e7aa3c4e30030aa8d179a87216a9d381aa499e9995739a3b4989e *d6e90042baa4b419a0d6d8a375289f98a9a44ccaa49e19a36369a4b258a348877455faa5d6199d *cc08a573f8a3a845a55f5aa5570a8d64ea865caaa3689aa6561aa66caaa5aa68a65e1aa7722aa4 *3b3aa6768a8a6f9aa77bfaa5fe3a4aa7590a9fbd88a74aaaa783caa77d6a96889a8b81baa88d2a *a785eaa4904a892afaa681c0a895baa4617aa2c6d8a667c8a567eaa59fbaa785baa06cf9a7a1b8 *a25deaa9a92aa4977a9fad1aa9b308ab702aabb31aa4b56a99c348aa5f289f70daa2bd0aa66b1a *8cc2da8548baabc73aa898c99f629a8bcbca858a6aaccfaaa6a18aa5dfe8aa9838a9a89aad7bda *a586ca8bd5aa85ba2aa8e20aad26aa9ae6eaad96f8a0c59a74ebdaa8c55a9bef8aaba948ac5dda *a9f53aa8ab6aabddaaaf80ca9fcecaabff1aa4e48aa9b878ae5678ad089bb0381aaddb4aadf00a *89f21aabfe2ab1aa4aaec0dab017eb88cdaab11c6ba99d2aaddcda8a0e4b85934afea9253baebf *0ab2042b8a101bb12f3bb1154b8b2b2b85199b743e7bb330ebb10d30b09a7aa72d6bb3404ba28b *0aa3298b8a3b0b85478bb4493ba2f7cab0aff8b44e9800e9fab31130b560faab0de0ae571bb288 *d8b34847af5edbb1013b8b58db84e04aaf529bb6115ab5a23ab633cb89512bb726bbb075abb264 *6b8823cbb57afbb5282b8b6dab84d539af3f3bb8841aab146ab7454b8a35bbb18c0baa60dbb4a2 *78b87e60b6825bb9567aaf1febb777fbad061bab2eebb9b4cab7d37a8e7f1b88791bb7a8fb9f49 *a7bae3d8ba8018b8f4dab5b16bb9852bba914bb3a7baab491701b0bbbbecb9b4a05bbba35b8935 *8bb6c6abb097ebbbaac8b9b9fbbca9fe0bba43ab8a6d6baaa6ebbcd6abb427cb9f7dcbbacb1b89 *a5ebb30e40bcbafbbde03bbb6babbdb6eb87dc8bbeebcbbe2e4ab7ab9bb9f1eba3e7ebb3c46bbf *38eabed20abfe5fb88b8aba4f50bc01a2ac0618ab99c88b551fbbf0a4cb50c6cb5b0b8bf7878c0 *e91b08093cc1b2db99bfeac09b08c1fdabbe1e4cb5271bb3a988b55bbbb827bca1aaab00627bc1 *05dc88897bb6c3bbc12fbcc0f3fab84e8bc176a8a8fe5bbc3b4c9cf83bbefa5bc38a78c3f4abc3 *459ca002bcaa22fc8e401ca5ba3ac41cfcc4087ac4535c8b554c874c3cc45ddbc15a2c9ee82bb4 *2bfcc5652abe389cbe085cc6fec9c569acc489d8bf39dcb51200c7f579c6ef4bbebf8bb7fe6cdc *c459acc7c7cbc0ac4ac37fbc8976ecc6784cc8c7dba9743bc7894cbae22bc864ecc8469cc203fc *c33630c997b8c8269cc7981c9e8b1ac99c6c03059ba46dfcbf973ccabab9b4e2dbc599c837a272 *8aa0bcc1a2eccacec9c7fc99c6ffc21e92dbb358dccaba1c9b3ecbc6b23c905e12045e12ccc12b *c68190cbc53c9cbc8cafacdb597b338a3faab8ac3ccdcd29c73f0c4a5fa2cdfb29bc8c1ccdde6c *c4c72cc5690c043aa4cdd45bbde9bc9be07ccd4003cc345bceab8ccbf34ccfc7dcc0695c4f3b30 *8a5aabcfe63cc8fd2c9bf57cc14fd525ce6ccec39bd0af5cc1023b8a62c859cd3c8a2d1cd1c42c *d1901cc3f0db5f40e3cccf3cbc63ecd1a689febc9bfcc346e637921bc1088dd29a49d1f91b8a62 *f8691042d2dd9bbe272dd39bb9ce2bcdbaf4a6783df0d2a01cd33e9da3f89bccca8c7374c403b6 *acca969cd4334dd321bd78031dcc067db6dd4cd5c3d3c3e5fac3890555515dd2e7dcd1fd5cca68 *0cbff197d1f0bcd5398cd43e0dd6876ccf60728a4cccd54eecd5903cbb00cdd647888a1bbdc168 *edcd341db67ebb066cf0016298ca66ddd5490dd461fdc36cb0068c7d03800ad3853dcd34cdd4b3 *acd897edd83b2dc1d28cd2926dc1ac0b078bddd8056bd0c31cd99a3cd9940d07a19dd98f4dd891 *2dd9a10bbf72f006b57d8a051dbc6d3c3c9b3dca0b9dc6712007bf8dd7c23dd5a6adc9ab6ab837 *fe6007cacddab62dd5fe9bdb203db6726007cbadd3e61cca1eadd62a5cbb76e0ddd6dddacdedc2 *124dd7489cc67380de986db4eb6dd272cdd9eecdb637a007f2ed8a1a5cdc7aaca4aa9bbdd28d07 *7af0ddcc8ddd718dcef37cdaef9dc67c800708cedc70edc609add244aab33780077c30e1a448bd *267cdf981cc526daad7cd0e1e93dbd309dce020eb6333cb627eee1e0bdcf698dbf200b087d20e3 *5a5ddf44ecc1b0ccb420db0780a0e31a5de10b5eccf90db2c543e4456ec7220ec7d1eae216db98 *4c0ebc0a7ecec60dc2b46bb1c353e5c09bb7ae3ce09e6dd36418085e1e8a798dbe941be0b1edc3 *5c6ee629fe8a817bb66baec518eee6164b077a1ee7feaf18cf4ffec2608d5acada3e8ccde7ae18 *dc0a5ee73bdce2d2fae0fa0d00c433dfb818b56ffcc4e41dd4ef3a05919ea8818cc38aeec1623e *e6167d033eb0e9344ae97ffebd9d1daca46eeaa7dee9de0be8c82cea175ceac323e9bc18cf3dce *b8476c96b66ee847fab6bb2eb7b58ae7adfaebb8de8bc2ace6137ce7043eaaad7eebc638e7b16e *bd3f9ee1beeeeac128ecd5bebb81eee8bd2886c87e8c104be7d62ee66019edc02ea9e73bdcc6fb *edb4eeb7e38e8ce5deed7a7bed758d8ce2aeedd34ebd9f9eb6ce1eefb53befcbe89af33ba5c37e *acc7eda704cf8c1bfdef37cbb7a8cdf0fcbe8c481abc109fb014dbe82f5ea70ddf8c5b8baa092f *a751defee802afdf9a2eede879f03a9ab4977bf21aae0515af9fc25eb2d76eec4f7a0332aff2d9 *88a7185faf1b9fb31ebaf3ebce8c2c6feee22af1e02e8d6248f4c9def3dcfbf3bd1acb97d9f154 *a9f3336f8d17afb1f64eb8218c9f4eef9db00aa1e19aa6549fef4e89f53c6f8e63efb807aaa6c5 *8eed609ff5f1d9f640faf62f7af6153df76bdf8e764fb2d81ac74a8ff67c5ff4e218a2513f9fff *c9a226bff7f2d8f474af8e5bdfee23dff24a5fe20209f97d9f8faf99f86c6ca39d29be4daaf735 *ad8f9a6ff8f1f8f79f2fd597fff988ef90a7fff402b998881faaab0fa39e499e309ff6616f919d *4ffab98ff8bb5ff8b29f918f79fca59f966a8ffa80f9f8cbfe5ffccd6ffacf1ffd7bd9fbd49ff9 *d37ffdd86ffddacf93d9dffddecffde06f8fb13ffee11ff9e6cfa0df9ffece2ffeec4ffcef2f94 *eb1fff033afff4affeee7fffe258fefa5ffff9dfff00e147e04082050d1e449850e142860d1906 *baa125d0c41b0e2d5ec49851e3468e1d3d7e041952a4428812298e449952e54a962d5dbe4c5872 *224498356ddec499532746992777fe041a54e8509e116756249a54e952a62f7bd26c1a55ea54aa *0b9f22ad9a55ebd6a157b97e051bd6a557b165cd9ecd4816ed5ab66dfda8751b57ee56b873edde *5d5a17ef5ebe3af5f6051c98e55fc1850d7b247c58f1e28689193f863cd07164ca8a2757c61cf8 *7266ce783777e9061df77368d2684797461df6746ad65a57b7862df5756cda4a67d7c61df4766e *de3977f7060ef37770e22b8717472ef27872e61d9737875ed424d4e8d59d1af5695dbb71ecd4b7 *7f57de1d2b78f288c59747effc7c7af6d28fb687eff0797ce8f3e933b77f1f797efdc4f9f707ee *3f0079137040dc0a349036041384edaa991e8430420927a4b0420b2fc430430d37e4b0430f3f04 *31441147749044134f443145155764b14517299aee861767a4b1461b6fc49145f172e4b1471f7f *0472c51d8324b248238f0452bc1b9664b249279f84324a29a7a4b24a2bafc4324b2db7e4b24b2f *bf0413cc8000003b binary ./doc/images/Coffee.gif oldhex * newhex *47494638376134014801f20000000000ffffffdcdcdcccffffb7b7b76e6e6e8080800000002c00 *000000340148010003fe18b0dcfe30ca49abbd38ebcdbbff60f81440609e68aaae6cebbe702ccf *746ddf78ae177aaf92258170482c1a8fc8a472c96c3a9fd0a8744aad560bd6ac1118d07abfe0b0 *784c2e6309e8b47a1d58bbd5edf7bb2be00e0d8c24a0cceffbff80616705848586866d878a8589 *8b8a7476430c064700948198999a9b7d832f043ca09fa13c2ea24291920b9792ac450baf597979 *9cb5b6b74b9e4aa2a749bc3cbbc0750b7477b442b048257bc8ccaf0e7accc9b8d4d5b7babea45d *1102bf74ce02ccbda9c6c9784a250ac4e0cd4ec9d3d6f1f27fd848dee110dddaf8d2b0e3c49556 *9d23a20200813608d9c123728c1b3f670de6499c08a55e4421f7e0f9dbf7fe30d9bf2001c31971 *6310e14185ecda4d7bd74f654b8a306316b1782c23b88d898a5dd4070960257c4620a03148f459 *50882f59ba6c27b3294c9ad36c32dc73af595461e45ae1591894c003a360818a6519f1abd3b3f3 *a03a93aa8a672fb31f8bb5b2eaea28d2b06d992a159b17ad5f79f58ed8fc3ad82a4f543ee7aab2 *142d16dea57aef4efd4bb95ae091fbb855bd89116b620103cba59462f6d8d89b0d4d575e1de872 *91aaf638c6ee0912f4e8ada359ebde3d65901c35a47ea7092e3caea4688c792b5ffe6490a3438d *9e3302259d11e2daccb36bbf22c0878febd1ab8b1f4fbebcf9f3e8d3ab5fcfbebdfbf7f00b0d2b *014a84fdfbf8f3ebdfcfbfbffe7f07587051df7f041668e0810826d85f80c40ca8e083104628e1 *84fb31481f101466a8e1861c526861221d8628e288248af0a18325a6a8e28a299e88218b30c628 *e3832ece68e38d38ea57638e3cf6e8a3053bfe28e4903e0649e49148c26864924c36d9e1924e46 *29258df38138e595581a0865965c7619c2965e8629e605608e69e6990d9489e69a62aac9e69b59 *ba09e79c51ca49e79d487e08c08b78f6e9a4857bf0e9e7a0477e381fa1881269a8a089368ae3a2 *8e46ca23a492563a23a59666ba22a69a763a22a79e86ba21a8a2962a21a9a6a69a20aaaab64a20 *abaec65a619587ca6a2b7fb0deaaeb07b9eeeaab06bdfe2a6c05c10e6b2c04c51efeabec02c92e *7b6cb3ce0e0b6db4bf4e2be90ad402492ba3a5b6902d05d63aeaedb71284dbe8b8e422bbadace8 *a60be0bab1b6eb2e03e6262aefbc7bc2ebeabdf3d66b6f41f8be6b07b7dd021c30bdfaee6bf0c1 *f90e7c6b0a0ca799b0c227448cb0c3b6426c71c300115c70c51bfbfb2fc8168b8ca8c6254fdc2a *ca119b3c28b629631cefc207bbdc27bfeeda4c670c0ceb0ce70c35abdce90df8fa6ca677e91a1d *a677287cabf4954cf3acecd353460d0306345b4a7594565f5d01cc9e6eed64d75e4bc082a86237 *49f60b14801db6d02faf8d33316e779a369372cf9d0ecb6fcb7c6ede753b10b8a6772309f8d966 *f3dd77c7911e8ef80383130ef79c8efeb30d41e499169e63e5324490f5e241787c34e75243ae38 *e85d882e26e99d5f7ebadd938fc97aeb827f0ebbdf6bce0e74ed4dabaab98cbad3ce80edb733fe *66f0c2d3dd7baabfc3887ce9c3bf5e7ce83f8ffbbce9cb9bdafc8a815fcf3bc9dac7de65d6cfab *137df6e1e33e3af8e723df00f1d3a77e3cfacabbdfbe09ae6eafe2e9e59bbf37fba5d25f8af857 *bef7492f7eb53a1301bd573ffcb54a80255aa0fd1ae8bff4192f7700fcdf04318740d565897e1a *b41f0725a73ed9d1af7f0e1c61e6c4c725c5a1501d2ad41a0b3f7842145230561024910b6d1842 *1cce104b3bec5f082b6841eab12988058ca10c4bb83af4bd50014aac540e47c4b7273ecefe773f *849a13ad08bf0ece8f7d5cec22092f884107de2f8c3e646213c117c6037af18b661ca215d34846 *34b1ac8d20445b16b5c8463cc691797bacdaf2fc98413daa71698324241103184841824c91b29a *a20e7b07493a1a118e302464241b29258d55327f9ce41a25356949f951ae699f7c60284559b154 *62f1906bc41f294b99c0322af28faface3116f894b40c23296aecce525abc74b5b497280c5dce4 *2f8189c75b1d3382b774e62a1de947692e93995cd4d533a1594d6bea92986dd4e634a9994d715e *d3846834e737c13947750e134fe974a729fd144f6fbef34ef534e638f9f8445f6d737fe594672d *7716507bcef36605d5e739d7c7c35dfd13a0fe2facd63ef929447f4e949c05b4e842d1d950817a *d0960c74e845311a3c613d14a219d5e83a099a5295de13a12115e946195a52938e94a4a433d649 *b9374189ce94a6acd3e94d29cab9670d15a78733ea4f815a39a5ae14a64575ea4be39653a91e74 *645115ea52990ab8a91d95a8795bd64e63d454b17e95866ba3d6586fc4b4a49d75637e5a2b5cff *f4d6b9de49ae764d125ef35aa8baf2f54d7bfdab90022bd822f9b5b067222c6273a4d8c5dea8b1 *8ebdd46123eb25c852564993bd6c9c32abd92b59b6b32de22c68eb24dad136e9b3a615116a53fb *a4d2b2b6af5b7d6d625d2bdbc1d2b6b6868d2d6ec3b4dadd9eeab6be7d1470836ba3de125741c6 *fe3d2e8292ab5c2d0db7b92c622e74ff23dde92ee8b9d62d5175b3ab23ec7257b5defd6e6b752b *5ed83eb5bc5cda2e7abf14def57aa8bdeefd2d79e3db23f5d29703f6bd2fb0e0abdf55f1b7bf07 *ca2f80b535df01cb48c0069e0082131c8105337804ff7d30ae222ce1ee16b8c2daa53086efe3e0 *0d7718c31fae7088253ce2079798c1274e708a0dbce201b718c02fee6f8cf53be3fbd698be378e *6f8eddbbe3f5f618bd3f2e6f90c53be4ef1699bb47ce6e92adbbe4e93619ba4f6e6e94953be5e3 *5699b8570e6e967dbbe5dd7619b75fae6d98653be6d79699b5674e6d9a4dbbe6d1b619b46fee6c *9c353be7cbd699b2778e6c9e1dbbe7c5f619b17f2eca6ca0053be8bf169aaf87ce6ba2edbae8b9 *361aae8f0e9986376ca249531a04918ed9792f2ddc0b739a43996e99a53f8ddf51937abf9e3ef5 *7b53ad6af96ebad5d13535ac8925eb592b785bf1c9b5ae77cdeb5efbfad7c0664f956c500a5e1a *fbd8c8ae41b16920a0e2b82114ce8eb6b4a74ded6a5bfbdad8ceb6b6b7cded6e03270ed46e76b8 *c1eded729bfbdce84eb7bad7dd6d6887bb41d57637bbe74def7adbfbdef84683bca52dee69ef3b *df000fb8c0072ef07f3b1b08c14eb8c217cef0863bdcd7b646d2001200003b binary ./doc/images/Compose.gif oldhex * newhex *47494638376134014801f30000000000ffffffdcdcdcffff00b7b7b76e6e6e808080ff00000000 *ff00ffff0000000000000000000000000000000000002c00000000340148010004fe10c849abbd *38ebcdbbff60288e64699e6816ac6cebbe702ccf746ddf78aeef7cefff859ff055900404c8a472 *c96c3a9fd0a8744aad5aafd8ac76bb2d70bfcc22e0082e9bcfe8b47abdf612def0b83c20afc7e9 *763b594c1618264f006c8384858687686e058b8c8d8d748e918c9092917b464a13064d009b889f *a0a1a2848a340441a7a6a84133a9487c4b9ab19e4c12b1a3b8b9baa2a550a9ae4fbf41bec302b0 *4a7fb649ca9c018248cc9915bbd4d5d653bdc1ab471802c264cfd048c0c7c8807ee1cdce46e9d0 *edd7f0f1d7d94edf02ddf6e780e498b512067f96bc0040808ec176d1a4a5b305489fa073f71252 *5806519e455df4268edb16519a378efe1135f21be38421933a040d1644f8ae23b3860c9f397419 *4ea2cc9617731eca0831df4241f6dc311bd9e756c29014de105c1aebddcb9beea276145af3e64f *a93ab322e2399463345b41912621ca0960454e042c34f54751aab2b7559f5284ab51ab5d521ffb *d4f5e931a8dabcaffa65f2242b905c8f6bdd429dfaf4f0dca97723e30556cfeb85bcae1c022d56 *0e1aad909f132f63bbf6305cc5518f32c629b9f5177a4d7caaf59b69e3259249029a537de56fc5 *d3ab7f7fad2bd6b5f1d780b5412a7a1264e5db7d742f49c63a14efe3d83f29ca1367157738debf *931557f25fb5ebd9d34fae64e914fb47eedf2f82ee1abdfafb69bc0c1912784c7cf90006fe28e0 *80041668e0810826a8e0820c36e82023c61891ca7e145668e185180630c0861c76e8e100198628 *a20f5ef031e18828a6a8e20f1fb6d8e18a30c658a284acc468e38d31baa8e38638f678e18cfed5 *e8e39044b2b8e3914526b90390cb29e9e493311c29259454c6c0e489556639a4945c82a8659657 *0af9e5982b76d92599508689e69a239a69269b4aaa09e79c14bae9269d43ca89e79e3bd869279f *37ea09e8a032f86928a12b0a8ae8a21a1aea27a3282a0a299f8e563a6988925e3a67a59c6afa63 *84417a8a27a7a48a5a61a6a66a49eaaaa90e816aab50ae2a2bac2482da24ad55caaa2bae3cbcca *ab8fba06fb6b0ebe0e9b63b0c81a6b43b1cafea688ecb35e366ba5ad0088296d99d03e7bedb462 *0862edb66d660b2db82e30690cb92a8a2bee88071c30a7b9dfa25ba1baea8ad8aebb70c22b6f88 *f4d28be1bdf7e66bebb9fb5ad8efc116020c309bfa165ce7c1080fa1b0c20c0f1cafc33940acb1 *c413538c66c318f7a0f1c83f74dcf1c716872cf2c824ef60f2cb6482acf20d2cd7ecf2cb26c79c *f2cc34d76cf30d38073da6cc3c47e9f3d13604adf4974417edc2d150d3a0f4d44cefecf4d35067 *2dc3d45c6bd9b4d359871d6d0b5c970da6d557b320b6d62c94edf6d9b05c5cf4da472360b7db78 *dbadf7de7ceb9d28da69af40f7d178177e40df88fbade2d7690feeb3e17927def7df71070e83e3 *fe2c43eeb6e4932f0eb8e58d62aeb1e66573be37e598c87db5e82393ceb5e976a34e92eaabb37e *b0eb53c38e80ec47d05ebbedf4e2ae34ecbc130cfa0bc0df2e3ccea617effbefc98bbbfccbcd7b *5ef9f146479fedf4d44bee3cf6d96b0f2df7267b6f7deae0872f3eb2e4779cf8f7e95fbefeb3ed *4ffcfef9b3c72ffffcecd70f30e2f0d31fd6f8172cfffd8f6f0114600b08584003b6ab7329629c *0019282b07de0b81f8eb9d02f7474143595061a7cba0f136b8c00efae98320545c043f47c2d099 *504a28745fec44f83cf0bd904b312cdfee68d8420eded04339645e027ba8b61f023188d41b2211 *5d6844240a8d874b1ce00d9d48b5155e2f8a257c21fe15ab18291646d1845b345b17af88c52232 *308c6f1b910497484034e26d8ce82b23f2d6e7c6c2a9d18b58a4631ded88293ce631797bd45c1f *c928c72c8a2e9082ccd01aff883944ba4e917e2c63231df9c84f11b29086cc1a258587a145ca51 *6c9b5c9e25e388491fd62c94d3b390273ff93854a6f25491c4e4295dc93d585eb294990c1e2ddb *47a155161262bbf4df7e7cf9cb7a052098f51b662c4b69cc6322939742206631b545b667922f9a *cbc465b26060cd5a02219bda9cd5d6ba59496cde1297a67c94d4c899485781339c8eb20102d869 *385b92129d3538d40dee46cfaea9f29df07c130ef8d9cf27fef39cf84ca78e74a0b782c20c9208 *4de81cfe91b483bd3974622292263ea7c4038b5eb45d70cc9f447bd6a21ff0eda356bce7486950 *52939eb4a0505ca90d5e3404c4d173872915a94cf3c9a3fdd8949c33cca906773ad30a25ce9a21 *14ea08891a830424c0a8470d2606955ac3913af5a91492dc2e011853a6bae0aa57cdaa5651793f *aa7af5056005ab4f39174af399f5ac2b486b5ad73a564456efad6795ab5c6b6a3abbde35a443f5 *aa5ef52a04ddd551773805ec52573ad8c6ba147668446c62ef18515c36d6b13e40ec16251b54c5 *567589970d6d66358b44ce7696b22ac5676857db03ce06d1b4a7cd284049b8dadab656b23184ad *0a3d2bd1dafab6a3aeb5a06e778b5a9d5ad6b7bf65a8690dfe38dca4f2f6b8c84d6e0e60ebbfe6 *3ab7b8812d5a0aa2cbdd10f0e09a02abecbe4ec0ddf22600043d78657853ab321398d7bc1ff001 *27e9a4d16b91e0bdef8d6f7a49c7a7fa4a6b04f8c5af074a063940f9b759220870803b20043e1a *78b6fffd808215cc60028b715007569684274ce10d706c698bcab0b13ac0e1127bf8c30f0d3184 *11bc81129b5803fb31a88ac52b2f0db8f8c6308ef1c92e25e26165e0c64056018530aaa91eff0a *03404e3206120652511999571648b294975ca1263b79c51aa68094b77c81c03d195713d8b298cf *5b012f6379c40018b3982d60661aa34bcd6a2e73dabe0c2b38c399026d66afc3ec7ce709e4d9b8 *18e3339ffd3cfee733d759d0831e43a1dd6c2c443b5ad157a3f3a41cfde83f67975c94ceb4a517 *7bad4c7b7ad17a5696a73f1d6943336ad4a82e35a35385ea54174dd2836a35a97906eb58cb9ad2 *af3635a46eade999d5dad6bc46b4af753de9600b7ad8aba695b1851db25f136ad9c7c698b39f0d *6d38379bd89aaab6b51d366d6a6b7bccdcc676b6bf2de670277b58e42ef7beba8da874ab1b5dec *6eb7bba52caf78cb7bde37aeb7b84585ef24c37bdffcee77bec165ef4509dcc5e42ab8c10f1e60 *7d9f5b5a0cc7efba016eaa34479cbb055338a2247071e94efce12cee386ba54d71518559e48455 *99c609a56594ab15d9a17658cb5deeb4950faa0234af79c93d15e5fe8e831ad033bb40c421ad73 *906719e70737c2cf2f1d74a1e31bcf4be774c87eec6e39ab3ae605a3fab7bb1cf5cfda57ebd0a6 *f2d581de5e1b875dec45c7fa78cd1eec138f9de96567bbac39b069af47b8c5ad1e70d7d3e60154 *ebf7ed52c758df33edddbd5f6dc3881641ddf98e783b8f60f1876ffc984b0079a785a0cf24a8bc *762fcfe513689e67099e320a3edf422027d4e6e82eb144519f7a058f94f5bf72fd4a611ffbf7ee *94f6b58f2e5371cf2b8cef7ee77bb6ed59799f7bcc0e1ff8c137fef18d8ebdc1c2b505c46f7d58 *9fcf82e8b79efae5427ec89c8afdec33bffb1bb43ef8a525fef12babfce61f16fad3cfabf5b39f *56ee7f7fabe22f7f53fed1bffe9eba3ffe79acfdfd3b5cedfea740fa178033068004183f037880 *18d67f0a487e0cd880e7f78010a87e123881ed578116087f189881f3b7811c687f1ef881f91782 *22c87fdf5782ff768228487024b8820548762e687831783c0938835552833698262d98837b8283 *3c18273bf883ef12844258312a58841a788448d8814ab88420d8844e3882501885266880541881 *5378858ce2835a08235cd8855d058609478462e8245f5886b2958568d88364b8864472866e384a *30188717a88674688456788745d6867a682370d887e6948780b8857c38886168884c288888b880 *76b88854f2878e482c85188910a58894485f9378890765899a888773d889fe840289a02803a238 *8a30508aa6e87d9c988a5e9389acd803a8f88a01108baf488bac688ba9888ba6a88ba3c88ba0e8 *8b9d088c9a288c97488c94688c91888c8ea88c8bc88c88e88c86088d83288d80488d7d688d7a88 *8d77a88d74c88d71e88d6e088e6b288e68488e65082f0f928eeab88eecd88eeef88ef0a820b6b2 *24b2e885bd2221e25107a8908ffcd88ffef88f00199002399004599006799008d91d78f08f2602 *90fb98901019911239911459911699900fe98f0dc9900b79911ef9912019922239926f9091fdb8 *911ad99124b9922cd9922ee99226c98f62108f345993367993389993eef81029d0933ef9934019 *944239944459941a50001100003b binary ./doc/images/FillCircle.gif oldhex * newhex *47494638376134014801f20000000000ffffffdcdcdcccffffb7b7b76e6e6e8080800000002c00 *000000340148010003fe18b0dcfe30ca49abbd38ebcdbbff60180564699e68aaae6cebbe702ccf *746ddf7881ef68b10482a070482c1a8fc8a472c96c3a9fd0a8744aa516aad8a20f00cc7abfe0b0 *784c265f09e8b47a1d58bbd5edf7bbbbed0a0c0c24a0cceffbff80616705848586866d878a8589 *8b8a743f430c064600948198999a9b7d832d043aa09fa13a2ca241754493aa97450baa4caf02b2 *b27a7bb1b79cbabb9d02a748a2bf47c13a49bfa94378b5b3b9ae0a42cbcc0ecc41b4cd0fd4b8bc *dbdc609ec6a44011bee1d59241c79144cab778495c0a3fcdd947d6d0f350d1ddfbfc4cdfc0e5c6 *1113676d4f3a2e9516187037040500026d22ced3672f9b3e8b79a4bdaad5fea09fc78fa8c8d9e9 *882ee03583e534ca3a6847d51e7c6e1e468438115fc58a2eabe5c9a8b3273d904079fdd32864e0 *cf574675d66259efa7d206681e4a7549f2e6ad8b38a3590dca75d75092224f2d439a9268494808 *5d2de4598f00364936afcaf599939e56b960bbea0df495a7d1b128137579cb9495d2560973dd75 *35176342ba8b9dee9dfc67a891bf10c216cb98a73034c4abea4dac0bd727c7b8748f2ac647b9f5 *18cb4530634b7aed2c2a7541180a6157856263c01d713e557dd1b5f12ab089241d56f6723101c8 *eeb0e67dbcba7533e4e4a821a53d0df7ee9e591fbe4ebe3c72728e0e354acf08147b46b7d39a9f *4f5f90001e3ce2af7fcfbfbffeffff000628e080041668e0810826a86021d0fd008a08104628e1 *84145668e185183a70451d0f66e8e187208628e288176ee8e01624a6a8e28a2cb658a1895c74e8 *e28c34d668a38b302672e38e3cf6e8a30839caf8e3904416396490281aa9e4924ca68864935046 *2925854f4e69e595585a5065965c7689e5965e8629a692608e69e699379689e69a6c3ad9608c49 *b629e79c19aa49e79d788660679e7cf679c19e7e062a6803800e6a689f851eaa289d892eeae89a *8d3e2aa998390210e7a4989e09e31e9766eaa99739bef9e9a8a0be0944a7a4a61a65a8a8aaea2a *99a68afaeaac4bb24aebadb0a6d22aaebcd2686bafc0eef86bb017d8402c06c31efecb007e2d28 *ab61acbbbeca2c0ec7264bebb4d8c683abb5a966ebed09b4729be9b7e4aea0aab88f96ab6eb39f *a27be8baf0be90a9bb82c66bafbc92d2cbe7bdfcc6e0a8be77f62bb0bf87022ce7c008132ca8c1 *6b26ecb0c28842ebe7c314438c27c36256acb1c57362dce5c62073cca6c758866cb2c89a4a7cf0 *c92cbbd0b1ca0db72cb3cb23c36ce6cc38d38c26c94de6ec33bb66f2bce4cf449b1bb4cd1f17ad *b40a630a4de4d250a74029d257466db5d45d3adde3d55c83cba5d63b762d76095f531de5d8686b *6b25d834a6edb6daab9a3df4db6eaf2db79174d33d25db2ce69db7947cabe8b7df71eb0ae5e083 *4319f8888823dee4e22136de389390fe7f28b9e4b5de1df6e5981b5939869c73eeb9e635861e7a *919f5768bae944a63ee1eaab1f497a8bb0c3fea3eb11d61ebb8fb88ba0bbed3df60ec2efb5073f *7b8ac4ebcea3f01d24ffbbb0c733ee7cf169461ff9f4cadbc8bc06d813afbdf596779fbdafe067 *28bef7e41b3ee3f9c9a71f49b420b2dffe8cdb5b20fffc2dd64fc1fdcee358beeafc431f8bf427 *8100f66f80ff939001a78740f5096e81f873930349044106aa88800fa8e00125f8be076a308222 *c260033eb8c11189f007242c61884e088f140a3084091c9e0b55f8a113ce90861e12e10d2db8c2 *187a608738c4100681c8c31afa9003440ca2850898c422d6e988dc6b22088508c50c4871fe8a25 *aa62b1ae88c51769d17e5c7c21152778a1302a5142f5336317279446353e2f875f9c801bd718a1 *edcd518c5e242300ef48bd317610747c7c6316f5f8ba408e6f89711c8121fb8848422a7091c01b *e41f2d04c94352299119ac6424f338c93d6af274924408fc7ef8c9dd35b293852c25eb4e29ca32 *aa72959c6c25255f09ca589eca95b4bc5c286fe9c95c76ee928e0c812f6bc9464c2e6b98bab4a5 *ac1e89ccc9297394486ca63381894a0849f397c50ce607ae89cd3a1ab385dc241c356599ca70fe *6d9cbc2ca739dff6cc5eae336deda4d03bcf99cd6afa6e9eec44e732ef89cfbae9139a56ec673e *d1684c810ed49bda6c9e41e1594f72e66ea1fe68fba73c213a3689aa93a256b32833317a358d3e *94a31d6d683a3f0ad2a879d49a25cda848f729cc949a74a500c5804b5f4ad0844673a64a3b293f *714a349db694a73d85e94481fa339fca90a83e33ea36919a54a15e94a92c532a29a13a33a92a94 *aa2d8be753b1aa31ad6e94ab20f32a49c1ba31b1a294ac61b5ea55d1da55b5de94ad1533eb4ee1 *fa30b9fe94ae0e63e548bf8a5781e995a573ed6bbffe1ad3800a7660849de561fd6ad7bb2ef65e *8955ec63e3b54bc00676b2e5aa6c610d8bd9756916979d55d767251bda6ff9d1a1432dadb74ebb *d7adaa9607acb5ec655f0bdbd19296b6b5b5ed6d717b8327daf4a8bcdd816fedc9d7e0d660b8a8 *fe75a7716500c7df0277b933682e718b0b5d7cc576b36fadae75af1b3eedc2c088ce7dae775900 *dee9ba76bc642b6f72778b5e13808889edc59a7a5b0bdaf8a677beb23def787b18ded9ee97bfe6 *4dad7d61d85fff56d784df94a37de126ddf59a2fbe24b22184115ce0b37a97830e7ef07f291ce0 *fa2ef78209aec086399c610f6977452c442174511c62301ab7811d06e48b595c61fd4e367f2dde *226dfd57631b1f96c73136f16be997631d9796c83d16f08d911ce4ee2e99c92596de93a14cdf15 *61f67b49662f5bab97652d83157a5d562e5ac1dc6411f57579455e2b598d17660f5395776956f3 *9be1dc663723f576719e2a5465576719df99cf65b6fef29f011de5d20175747d16f24c731568da *b93473897632462997e7b12ef47195b6743f1597694dbfb3708d36f4a6415de81f8d9ad45556d2 *3ced1669e499f34a29f6b126b3146b25bfb26cadee9b2fb3d6690dabb254b9765129a7166c6157 *b269bd8e9f215356ecb6dd7167c936b31b21156d294bb14db5a660125fd66c1e119151d516740a *2f166e5d57904fd9367600fd94eef5c96f61e516b51323d6ed9ed191dcf53e1c230dd56e1f892e *5ff11e92e330d5ef22f9d3530557754849957026152d5c01b792cc78d5f092d5955815f792bd9c *c5808cc7cc581c9780c7437eae88931ce2f93e39c947aef27699bce5254f39cc95c5f2994faae6 *367f14d7ce73bea89df3bc602fff39c1832e7480cbbce8b7f239d2d94df4a52b4ae94ecf13d4a3 *7ea7a9539ddba1bebacaadaef59a1dbdeb2eff3ad8e7d5f4b14bbdec66af3adad38ef552b3fde4 *5c7f3bb0b32e7760c5bdeeb45e3bde99fdbe05f9fdef800fbce0074ff8c21bc8543428c5821da6 *781970083c6e0805e4274ff9ca5bfef298cfbce637cff9ce7bfef3db8983e51f3f7ad183fef4a8 *4fbdea57cffad67f5ef2a377d0e561effadadbfef6b8cfbdeed1407bca93bef2bddfbdf0874ffc *e2133ff890df82e197cffce63bfff9d01ffcdeaf3e800400003b binary ./doc/images/Foot.gif oldhex * newhex *47494638376130014a01f70000000000080808080c08181818181c181820182020202024202824 *28282828302430302830303030303430382c38383438383838383c38403440403c404040404044 *40484048484448484848484c48504450504850504c505050505054505068b0506cb0584c585850 *58585458585858585c58586058586cb0586cb85870b8605860605c606060606064606068606860 *68686468686868686c68706870706c707070707074707084c07088c8787078787478787878787c *78807480807880807c80808080808480887c88888088888488888888888c88908490908890908c *90909090909490989098989498a0a4a0a0a8a0a8a8a8a8aca8b0acb0b0b0b0b8b0b8b8b8b8b8bc *b8c0bcc0c0c0c0c0c4c0c8c0c8c8c8c8c8ccc8d0b410d0d0d0d8b410d8b810d8bc10d8d4d8d8d8 *d8d8dcd8e0bc10e0bc18e0c010e0c018e0e0e0e0e4e0e8c410e8c418e8c810e8c818e8e8e8e8ec *e8f0c810f0c818f0cc10f0cc18f0d010f0d018f0d418f0f0f0f0f4f0f80000f8d010f8d018f8d4 *18f8d818f8dc18f8e018f8e418f8e818f8e820f8ec18f8ec20f8ec28f8f018f8f020f8f028f8f4 *18f8f420f8f428f8f4f8f8f820f8f828f8f830f8f8f8f8fc20f8fc28f8fc30f8fc38f8fc40f8fc *48f8fc50f8fc58f8fc60f8fc68f8fc70f8fc78f8fc80f8fc88f8fcf8ef4d00ff1a00bf080064f8 *00005300001a00000800c48c29db56dcac0402dbcb00ff2300bf4000009019004d00000204289e *90db634dff0e1abf0808003c3c00b0ea0006040040400890ccc0db573c2f1a4040086b9ff00079 *d80015ff000cbf28e804db4f00ff1000068e0037ee6008086f084040080306c000003c00004000 *0030d0040155004a4c9001014d00001a0000084a003c0100ea000004000040000098007c560019 *1a00080880e810db4fd9ff10ffbf40bf841804dbda00ffff00bfbf0088cf00dbfa00ff08008c30 *00db5300a0d004ef5500284c90db014dff001abf00080f9c10000ad9201eff0540bf0000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *002c0000000030014a010008fe0071dcc0d16144c10e2a4488186130e1c2860a19228c68b0e241 *8b182f6accc871e3411a3540d21019b224c9932653a25ca9b225cb972e63c29c29b3264d922752 *e4a4a183a7cf9e407ffe04a13385d0a0488f12dd99b4e9cf9c2050104d91c34307ab58af5abdaa *b503570f5bb186fd4a36abd9b268cfaaad2183ad5bb76de3c29d2bb72eddbb76f3e2ddabb72fdf *bf7e0303a67b42468eb887d926368cb871e1c5901b2b76cc78b2e5ca984f7c3841748487112474 *18496284491225a74b9f4e6d1ab512d5ae47cb264d7bb6eddab86feba65da3f78e2b7922356a14 *293871e3c585273fae1cb9f3e6d0994b5f4efdf974ebd5a367bfae1dbbf7eedb23fe61e9ada311 *28f3e8cfab4f9f1e8b8e1ae5d7cb672fdf3d7cfaf8d76bd9f15e338a13578df0c30e3cec30200f *3cf860a08105fa200481092ef843830f1eb86081166648e0851c6a88e18603fae60517237a5122 *89289ea8628a2caee8628b30be28638c34ce68638d38dea8221435c02106173f0609e490421609 *450e3e12a964914b1e9924935012b9436f1f7c8082672db405920cefe5005f0d3bd8a08398608a *4966985eceb565495abab5e69b6ec6d9e69c5f2a118514774691279e7ceee9679f80fe2968a084 *0e6a68a1881eaa68a28c2efa670d5a444185a4944e6a69a598520169a69c5eeae9a69e768a6913 *35f85003679f95b082aaacaeb06a0bfe1c1cf040022db40083adb7b670840023acdaeaafab060b *ecb0c2164b6c0962065104114528bb6cb3cf2acbacb4d04e1bedb5d6665bedb6d4768b2db7df7a *abadb8e08e1beeb9e6329b6eb335548184b4ef2e1b2f11f3d61b44bbf6ca0befbefae2cb2fbdff *22316d0f649ee019432480d62b092a9000430c0a8cc0000430b01083adb01a30420b0daba070c2 *207f2c72c8248f6c32c963eaa0037ffcadec32cb2fc70cf3cc32d74cf3cd36e78cf3ce3af7ccf3 *cf3ecb0ca90d3fe850f4d146278df4d2431f0dc0d350470d35d35a10adf4d54b632de6099f7940 *82d7a0799d300b2d74d003051774d08209b5c66003046c27fc31d85f834cf7dd76e71db6fede75 *875d830d65ee20f8e084176ef8e18827aef8e28c37eef8e390376e4315822b58f9e096ef9079e6 *3a50aef90e5287fef4e782777e39d4980f8ebae564da003209b0c3be0209b35f1c030422346040 *0cb62720410b17cf3e7becc4c70ecaf1c7a751fcf2c45b1105f3b18f19f9f4d4576ffdf5d8330e *a984dc0fe87df7066eefbde8a17fff83f80ba2febdfa12aa6c43d7d093506badbd664041ad4524 *7071adf1170f0a1c4d08a011fae73f35f40f3e3610dc813ec4c00e81e8810df490032308c1095a *508218ac600629c8c10b7ab05d167a508144b803129a704a55b010003674c202ad7084280c21e8 *46e7c2d155487366b2816788373b16a86a05feb66b410d0c20820a6c20030b1841105d253c1294 *80764e842228d430bb27ae000a70f81f149e28852cc2410a2418c3f1b860c52856517a109a100f *26c4c635bab18d707ca31ce348c739dab18e78bca31ef3c8c73dfab18f6c84140f8630c84212f2 *90864ce4100479480020f2918374a421199948a8f1c0928f3490ca6a40b7283eb1044f9c5fad3c *f08000c4a0031010650b9ee8c9567e1279c75b821340c185227001144e78022d6d894b1980e20d *32706514cda4c03502f28fc83ca63293c9cc653ab3993c00210f84e0466a4ec89ad3aca61b7390 *c26c02209bd7d4e637b1c9cd7086536ae0cc6683c4f43a61bd60052c00620b66f0300e20c0030e *fe10e2c3e65931781e6b55bf4c590bc8008a18946006a02003415d00c484ae608aff5499028140 *d18a5af4a218cda84637cad18e7af4a3200da9483f0a292010c1a4283da94a53ca52229454a500 *58a94c4d1ad394beb4a540801a4e893048c1bd8f87ad7ad5ad6040031f4080043ba00001648031 *18f8ca58c58268b016da508516f4a0092dc114a1caaa044268a4600dab58c74ad6b26e747243a8 *685a29ba5620b4f5ad40406b4501a0d6ba5294ae6c8d6b15e07ad7a8d915080f0a930e64470216 *18960515ab180d62b058063060242bc0400826b0d8c526f6b098c5ec14310b055a26e19650e82c *173e0b0a28b0001478d0416631abc01f04415aeb22fe976cd155aedace36b6b4bdad6d73cb5b6b *cd1652414802119210dce11697b8c245ae719300dce40220b9c73dee7397dbdce512016ad77dda *72836b524dc66e55abb518ef987080c5c680031ea0000322c0bb188437bc9bc5ec14bc1805c3ce *f77ff565411640b185f7b2e0abd4da2d6e072ce002ebf6c0bd357082bd75dbc9e9ebc10083f0bc *3aa7af98e60b6016961685239cdd0c434d594110d849032bbc1218b662f484015163300203a860 *2431c8010b5e50010d8c20073450f165778cd81ef3f8c73e0e32906130218a16a1084938729297 *8ce42633f9c94e8e3294a72ce52a53f9ca56ce3296b7ace52e7379c9902a0213c44ce6319bb9cc *686642fe98cd0c8033bb59cc6d2ef39ac90c3534d7d9ccf402c284cc48b63ed7ca627f9b800c78 *37681914a0060c20000d986ad816f8f9d18e8e34a4272de94a4f9a41400882118a60844d7b9ad3 *a0feb4a8434dea519bbad4a83eb5aa53cdea55bbbad5b07ef5a72797e44d27997c4fab7593690d *6a00805ad7baf6b5ad8bc0eb4dd719d845a8f3a691405104c9cec43dbe988a69500009c860248b *658b0e463080045840063aeeb1a32b36ee3e935bdce83eb7bacdcdee164c9459478eb7bce74def *7adbfbdef8ceb7bef7cdef7efb7bdf617e32ae7dfde4802379e0502bb816bc6ce520f074406203 *653c7d68d815d08005838e818a6d775e0634a0011c88273cfefd39711393fce41447b9c953cef2 *9523ebdd0e2782c3672ef39ad3fce636cf39ce77aef39ef3fce73e0f3ad0872ef4a2137de69393 *f91166be74a533fde932ef9cd3a71e84a6571dea4190fad5a96ef5ae0701080962e777fd59b117 *18b604653f7bda7db87613bbbce4705779dc5b3e7713ab0c41143de94ef73ed3bef3fdef7e0f3c *e0072ff8c213fef02a2d29b3170f04c63bbef1904782e2234ff9c73b7ef296af3ce587e053af45 *dc93acfc64e89d387a50c2ee93c244bdea53cffad53f91980cfac133670f4ddadbbef6b83fe6e4 *b0c97b6d9a339bbbf77d3a7b1fcee0ff9ef8e91c90607758bc263a1f8acf7f3e01a74f7de6496f *650bd2a0f63bfeb8410f727ffbde0f7ff7c70f7e0b717f7b9c07c20ed2bffe1da89ffdf047bffb *dbfffef9c3dffef2afbffee96f7f0391a993aa577a02787aa44780aed77a087880ab97403a8020 *6c747b10987b12188114e84793737cc2877c9d83811c984e1b387c19e87b383426a0a007267882 *2898822ab8822cd8822ef8823018833238833458833678833898833ab8833c080a36600325c883 *4238844458844678844898844a28833e08844bf8845018855238855458854d18845598855ab885 *5cd8855178855e18866238866458862708866698866ab8866cd8833f88856d1887723887718886 *7478877898875b68877ad8877ef88744c8878038888458882e2888fe8698888a088888b8888ef8 *8872d8889038899438869258899898895478899ad8899e78849cf889a2388a38188aa4788aa878 *886f988aacd88a30688aae188ba3088bb2588b9a488bb6988b93888bbad88b8ac88bbe188c8308 *8cc2588c7a488cc6988c73888ccad88c6bc88cce188d64088dd2588d5d488dd6988d56b88adad8 *8d6d888dde188e49088ee2588e81c88de6988e5c488eead88e36c88eee188f31088ff2588f2c48 *8ff6988f67888efad88f6ee884fe18903a888f02198f045990ed789008998e0ab990e5d8900e19 *8e101991dd389114998d167991d598911a198d1cd991cdf89120998c223992c5589226198c2899 *92bdb8922c998b2ef9fe92b5189332198b345993ad789338998a3ab993a7d8933e398bfc1894f9 *089444e989467994b738944a69904cd99409f99450c9905239950f599556299158999515b9955c *89915ef9951b199662e9916459962179966849926ab99627d9966ea9927019972d399774099376 *79973399977a69937cd99739f99780c9938239983f599886299400999869b9988cc9968ef9986f *19999229979459997579999889979ab9997bd9999ee997a0199a81399aa44998a6799a87999aaa *a99870d89aa2f99ab0599ab2399ba8599bb6b99ab8999baec99bae9894beb98e88199c8c389cc4 *e987c0799cdbc89acaf988c9d99c52f89cd00985d2399d4b589dd6398ec6fe999d91b89ddcf98d *def99dcf189ee29986d8599e43789ee8f98fbbb99e85a89eee9983f0199f37389ff45983f6799f *33989ffa398fe4d99f7bf89f009a85fc39a02d58a006ba82089aa029b8a00cba8fccf9a06ae8a0 *124aa10f6aa17a580667c0066bc0a16eb0066ed0061f3aa21d7a066700060b89a172c8a1721007 *7440077600a376c007335aa334ca0730faa22f2a0774d0066c700661d08f2aaa8667e0062e3a07 *7c50077cc0077dc0a47df0a4501aa54fcaa4547aa37340072eeaa365508f434a8667f0a24b1aa5 *7ed0077e50a6667aa6687aa664baa650baa43bea0667e08e5d1a866e80a47bf0a4637aa67fe007 *7bdaa77ccaa77fe0a7829aa6fe6ccaa47560077100a76850065baa9511da8b6e10a664faa7811a *a880f007979aa98090a998baa998faa99c5aa9945aa685daa4a63aa339daa33f6a068dd99ec528 *077580a7806aa9a0baa9b67aabb89aabb7faa9951aa87f9aa77d20aa7b0aac50ba077c70a5226a *a2be38a759c8a4654aab9b1a088020add41a08d67aadd89aadda4aadd39aabbcfaa7d7daadb6fa *adc33aa538aaaa9fe9aabdd806785aa9d13aaddb6aad821008f35aaff47aaff31aafe1caade37a *a97b4a088210b0f6baaf9eeaafbffaa487eaa3acc8ac524807cfdaa9d86aaf023bb1020bb0142b *08167bb1018baff74ab0b67a088800b2848008845008258bb113dbb1e2eaab63dafea476e00668 *d09bcd58077c1aadd75aaf140bb03a8bb23bdbb33cfbb31acbb11efb078ea0088b60b487b00820 *2bb284d0b4282bb0d6bab2e5da07571aa74bf9a8ac6807812aaff45ab18260b2605bb2233bb624 *5bb6647bb6619bb63f9bb1507bad9220098e00b770eb0874bb088eb0088b80084a1bb2240bb61b *9baf9e5aae7cd006314b890cbb846bb0b55d1bb03adbb4637b088f7bb6663bb9916bb690ebb898 *0bb47f1bb56fdbb99e1bb7745bb747bbb74cebb4031bb84f3a076c008987ab84982aaf5fdb062f *6a07334aa57d90b4b8abb479bbbb7aabb7b9fbbb7cbbb4c14bb926dbb48590b2932009c99bbc9e *dbbc6f0bba778bb7a44bb23b0bb8c3feca0772b088ad8b84c14aaf8450a447ca0777eaa478da07 *a36bb4e87bbeea9bbebfabbbb83bbc67ebb84f4baf9350bfcbabbcceebbcd08bb7484bb297bbb1 *d20a0865ca076e6088db7b847f40af6820bb7420a9e59ba67e60b7121cba135cb7777bc1132cbd *d25ba979eb07ef2bbc627bbc8260bf245cc2f58bbfccabbf738bb7be4bbd1b7ba97ec007ab5b9c *584b8a7340af466a074a4abe93aaa7a34ab4a11bc4423cc4171cb501fcad79ca07d33bb63a3b09 *9460c2506cbff89bbfcf8bc17b6bbad2baa773f087075c847fb00660eaa4796aa682daab954ac5 *680cba72eb08f91ab5e33ab54accc27c4b089450c7767cc74ffcc4515cc253fcb92b7cc5fef9ba *a77dd8c54428bb482ac6935ac666bcc868dcc850dbc6011cb87c6aae73e0be215b099480c978bc *c94ebcc7529cc2cd2bba223baf026c077848c83cc8067220a93ebcc89cfaca9fdac8f92bb6d5bb *b9fccab24f1aa312acb495d0cbbefccb9abcc977dcc97bdcc79d4bb78840b2a46ccacb28a08558 *a7ac4cc6b3eaaea05acd9c2acb9e4b08907bb9a66bcb6e8ccb7d10a36b10bd9650ce965009e70c *ccbf9cc9c26cc7c46cc2c65cc587700801fb07cc0c9e35dc892f2aab0f0badba7aab918cab283c *d0f73b091f6cb6c7cbb6462cc963ca0771c006757b099620d1e65cd1e5acceebdcce791cc59feb *08202b08805087cefc875f1aab3d3ccd9afafecfef1ac901ecc9288cb44b4cbddd0cc90c9dba6e *40b79790d33a9dd3136dd1e68cce188dc9c18cc7ef2cc5c7acb482f0076c88ca36b806332aabbd *9ad2dd5aaddcaaafd3eac9f66bc5789bb4c92cb27e6bb1d88abae14c076f8b09667dd6667d0998 *b0d33bedd3179dceeb3cd4755cd4270cb78b2008e399cf94d8064f9dc8d40cd0531dd6564dad58 *4dc156dcbf22ebc2601dae06dba4747006929009929d099840d9948dd66bbdd66ccdd36eadceec *4cd424fcbc87a0d466c8d4331807ce8ad2b65ad5d92ab11c0bc9d8dac91b9dc76a1cc4196cc95e *8dc5d48acb76b0069af0dbbf9d099a20dc933dd9958dd967bdd93d6dd19e0ddac9cbc6a53dd278 *fe88da7eedcf2bddda37fbda1d1bd6ee3cdb7e0cbd16bcd54b2cbf342db8be0ddce89ddec15ddc *c67dd968addccc0dccee7cc2845086a60d837400d59d7add11abdd1a9bb2031b08c28ccdfb1bbd *5b3dc7090dc062dd069bd0e00efee010ae099ba0deeb5ddcc79ddc9addd63f1dccc91b08d328dd *733807fa0dd8daeada38fbdf266ead034ee0732bba882dd38bbde010be099c40e3365ee3353ee3 *0e2ee1eacddeee9de13a7dd19a2c091faed78a98dfc15aab54fdda1aebb33e1bb4d60acc038dcd *6b6cc5ef4bcb0abea77d40070f8ee39cf0e5601ee6622ee6361ee1e96de197cdd9985ce4ea8a89 *229ee4961ad8fdfddf4ebeb617dbb1c05cd0545ee5fe760bd3a51be35a1e07e8dde05efee59dc0 *099d90e88abee88a8ee863fee5338ede929dd697500993608920ce86f90da8fc8daf39bbb6981b *eaa1aeb9f35ad17cace7a0acc2b6bdbb5eade002dc077260d692fddb5deee88cde099e80eb9eb0 *ebbcbeebb8feeb8c1ee60f3edc127de96278df2a1807641ae736cbb5276ee7a21eed4e5bcbf9ba *d3f0ace754beeafdabdb9b3aa67130d1392debc22de10e0ee68c9eebbd9eeeeaeeeb8b5ee3c38d *0996c0e6a7c8ae9c1ed8cfceb85f1bc2624bb9c4abef095eed6b8dd5a17dbf694cc1967cb2a43c *a66de0cbe5acd3e24eebe56eee8adeeb9fe009157ff1bddee8ee9e099640e4986ee483b8ec100b *aff7cefeb3d2aecd28bfcd298ff2a36eaf662df09f3ce554bcbfa3cbb401dbed7d7006f66bc7bd *dcf0e1fef0e44ee8627eeb1a0fe99ab0d6948008f69de96628f236fbec3b1bb6fc3eb2c25bf573 *4cb96c0b08c30df31c4df0331fbdc98cf059dc078460b76f4bc277dcf3e0fef3e23eeb143edc93 *9ed398acf4d10df27ec8a4711eb15edbb898abf2656bf5806fb9d3fec29bc0f5581dcfa17cc148 *0bd6afbeecd6aacd78ebb968cff30cefd61bdecb4fbc081e3ea14c3f867600a8d53ab1009bb664 *1bf8ed9bbb2d7cd0582ead9cb0f3b2fdfa7accf5884ff3a32cad7ec0cc5fc0067ccd0735dbb585 *90b4761bb79d5bd8778b089b8fcf6dbe8849fef47befb826fe3bb9a6efbed20fbc7ffec27ed009 *ae3fdbb02ffba9cee7806cfb2f0806262a0776aadf665ca67770cf7788ec49eeec282bf5a51fbc *badbbb1a5cfff6cfc257ecc2599cfd1adddd740dc5002169924049050d3a72b40811a1428100f5 *d11351e2448a152d5ec49851e3468e1641d9b001aae34892254d5edcf3e70f2040810209124428 *26219a87082d44742867ce45877afef4a968d150a28b841e05ba93264c967d263d9d44292a25aa *55ad5a8d9a15ead6a704071a2c8850d142420ee79c449b56edc88f21d7be854b52a54b98300b31 *bc7953e75e8545fd2e4a1818f060c10989ee25ebf24f1f8150af3e867c552b57a8040f1ab619e8 *4f5cce9d49b6fe15e95934673f2b5bbe9c491327629fad8dbe265a98f06cc348752e75e8c78ea3 *c64f23ff7e3c99f2c0af610dd37c385af972d0cb9d9fecf3876e4c417757f344f457766084ddbd *7f4738f8f042410efbd02154d0b1d54a942abd7fef5e3e70a952875b0edb53d0e6e7fddf36f72f *c08cfc60e925996ad28b27d7fcda0e3c07bf13efb6b234ebe30c4008e16d2bf6e0e3103ef9dafb *4db8ae8a9324a1b220123045b6400a4d451709448d26ebf8f22936c21c2c3147de763c48c71205 *eb0911a6fca0430f3a2ecc702aaa3a64b2c9f6400ccebead2c33111017afcc08402c055cc9409a *083984c6d714290c471ecf04cb47ef86baadbc3ff86023a235fe10fe6491c6367432cff8a0948c *2b2a1711644b4127d27250e756824935be1804ec3b1fd3843452b076c4ac90f274a3c88f4000f3 *6d490e2d013554512da984d426e7c3cacf1211e1cf502c0b7555343ea40b4435bd7e12ea46ef72 *94b4d75ec3ebe91037fb58a3223e003924c9aa3e1db5d9504b651255292b93449140627d95456c *95936e260587e20e21357d25d757606502e48f222d72e30f42ecf48d59502fb1e4127bebc5d759 *683b4cb52b4908d9d645580386ab25457922b35171d12cb7e13481cd0c103ecec8a88f400e51cf *d352f1b5b7638fefa577d468f9ec6a1182531cf8e4b40cbe35b6ee7875386649114244c84088dc *a80d24ef7c2f548f31feb90468a13fee385f50f74dd51195034c796993008929cc9f14665866ab *8d1b4ba6c5bae8c862441ce9b4e77a83c6a46cb3cf3e9b68513da46a20a7fb6bfaed8ee86c7957 *deac26ce2bbdf3cefbe19e0801c48f624762c38f77c32eb5e3b33361bcf1c631c9046da0ef3dba *3db7e5664e5bcc4f7a49ea8417be1a2cbef7d6fb614732fbe32c93e6d8392ab1c986dcf14c3499 *5df6c7cda6fcbdcb37172d6ede2ff243109e1a757874e37b1b6ef4491512e4a130d2b29853d7e7 *0dba714daec77e134db4c7fe7ac7cba6b73d497eef5d73f239baf05de21b3ebefd11a7ec1b2ce6 *6f76e32d8b939d2a71b267bf7e13ffffe7c42602f83fec450e13a49a44a0fecec719df2d502231 *01d7dd2465bce455d0822432d17ed60597e881cd3d892b1bfffcc7091276c28427ec0409fd473b *a05562120e64a0f96078919baccf5714bc600e477410612d463475b898231eb1a47ac5ae7f02e4 *040a4fa8c24d44ee129400d80cff2343294e2410d9119741dca7432e52467e85081cc54623873f *14026cd3ab5eff4a68424f74a28d290ca0262e5109a555712d0d74a0209225412deead8b7fa456 *411472b3c139c76b67744f11678744362e511307a48495ec78472a4ef25d7c240e2073581f0b86 *4548ea4ad121e335afd8318e7699a017251e3149b8e0f17c7fc88ee8bca2c9e1709293f72911a0 *0051872d692a598f78042434fef61e48306210ac8c8b2bc95727d101d29659a14fdba67590b2f0 *015b7620905d1488ccce28f3778290a0269f19cdaa08879a81401137d579116ff20e115aace038 *c949ce29494258e95c673e0955c92a620c791a82a692e619cd7a0acb0f65d0674225d2cecd2509 *a0035dd68724faa4e07c05507e88934215ca50cc39d43702050e4545fa410ff1a96d1615841fc0 *a0518d72546eea01296444aa273df54b128b28841f58ca5297beed4e329d284d7b5653fb089210 *3add694bf929c59f7e88a6a482aab39e65aaf89cf4a6294d2a4f973ac345848da4f081eac6a43a *d67d81a82b8a10043eb3aacf9e3acd835f1d2bc7e4fa31a351d5ac370d841dd6aafe55b7a8d375 *601d15bd883658b53debae8700441bf6cad71621737a3e236cd0242bb4b44d2e77772544ab16bb *d1adcef0b163b317652537dab4852c3e0371445a37bbd3b63a8d10890c6d084b693bda1a106895 *93ca4d0151bfd532369fb00da1e3ba37dceeddceb42e1c484e7b9bd4d63a6d1120e4df11ff37dd *e97acf80e1b3cf22aeb55ce676568a8f50e41149385ef20ed0bae023955452ab57ee76b7afbf4d *2312d7b8c4f1ae9085e99d84230aa1d9f6fa36a194b8c422e7ab4426b2708e5279c47efbbbd7e6 *628e1296c884004fe8090aa3901306b6045570cadb05afb5c19bab44d0b68744023a31bd8c40c4 *763bbcd80f6fee0fef89ede48e4609fe146f73c59b6d31f90a6108462422118648c420547ce3e5 *e698c8473e9f9191bc64cc2999c94f569993a13c656c4999ca57169495b1bc65156999cb5f869b *77c13c66827999cc678ee17bd1bce6328b99cd6feeb29be13ce730ab99ce778eb39df1bce73a37 *96cf7fce9c9e013de834fb99d0879ea2a011bd68939899d17376f4a3df1c6949af99d2953ef3a5 *313d664d6ffacb9df6f496411dea2b8f9ad45336f5a99f9c6a552f99d5ad3ef2ab617d6359cfba *c3b5b6757f719d6beeee9ad7bdf5f5af712c6761e339d8c5f630b1910d69652f7bd2cd76b6a5a1 *1ded4c4f9bda9cb6f6b53f9d6d6d8b9adbdd2ef5b7c18d6a718f7bd5e536b7abd19dee58f7af9b *ddb476f7bb6f1d6f79eb9adef5eef5bdf10d6c7def7bd88af637978f1d70070e9ce049eef7c1dd *6b688563d9e00ddfdcc3212e37894fdc6915b77894139ef17c629ce301f3f8c7abbc71912333e4 *2537d4c9519e6592afbc8a2a77f995601ef33c339ce6f606f8cd8bdc729d233ce73dffb7cd81be *da990fdd394537ba7240030aa637dde94f877ad4a53e75aa57ddea57c77ad6b5be75ae77ddeb5f *077bd8c5bef4b197ddec67477bdad5be76b6b7fde92c727bdce53e77bad7ddee6e87fbddf5be77 *bef7ddef6ccffbdf053f78c2175ef020417ce215bf78c637def18f877ce4253f79ca57def297c7 *7ce635bf79ce777ef10101003b binary ./doc/images/Hidden.gif oldhex * newhex *47494638376134014801f20000000000ffffffdcdcdcb7b7b76e6e6e808080ff00000000ff2c00 *000000340148010003fe18b0dcfe30ca49abbd38ebcdbbff60180564699e68aaae6cebbe702ccf *746ddf3881ef28b10482a070482c1a8fc8a472c96c3a9fd0a8744aa512aad8a20f00cc7abfe0b0 *784c265f07e8b47a1d58bbd5edf7bbbbed0a0a0c24a0cceffbff80616704848586866d878a8589 *8b8a743f430c054600948198999a9b7d832d033aa09fa13a2ca241754493aa97450baa4dafaa7b *b39cb6b7b8499e49a2a748bd3abcc102a94378b241c8ae0a42ca02c8b2cecfb492d4b9d7d89abb *bfa4401102c05dd6b4bec5c67977d6cb0a3fead0eab5f1d9f3f47cdb47e1d30fe0ddfac9afe522 *b95a50000f11140006b459e88e5a34870d9a45fcf7d05fbd8b1875f1b333fe71e3296500fbe943 *1790cb9157f0dc245ca8b0a1837f30a7c5ac28338fb48c382fdeeb980fe49e7c14a995b4034b1a *04340993caabf84ee64c5a28a1c2cb4935db4e741e83f9ccca11ebd04a05b19e1cb0af9a44984d *9b8e8c1ab3aa5bab1b2522eb39eea7c8b25f59516c5549edd9a74e6b426c0bf8ade15cf78cd0dd *b798625c62029bf15d75d2dd52a94e6d4a1dfcf7e6e1cf80121759fc12e8b8207983183ce73916 *e7877b60071e99792ae8dbf61ee313b93b11d1d1c3ccad2672cc36eee3c8adf093a38614f334ce *9fa7364e39b9f5eb5006393ad4683b2350de19a18a8cbdbcf92c5778f018cf057cf8f7f0e3cb9f *4fbfbefdfbf8f3ebdfcfbfbffe21c8ed95a2de80041668e0810826a8e082255c5187280c4628e1 *84145668a1820efe00e1851c76e8e1872022986180219668e289289a38a26f29b6e8e28b30f2b0 *e28631d668e38d35ce28208e3cf6e823873afe28e490441e1864914826a9e40b472ee9e4934a36 *09e59454f2286595586699e2955a76e9259000b2f8e598644ac8659968a629639834aae9e69b33 *9c09e79c749e20679d78c279679e7ca2b9679f807af967a08456b922003b16aaa89623ee91e8a2 *904eb9223191564ae5a48f5aaa2991986eea29929d7e2aea8fa18e6aea8da59eaaea8ba9aeeaea *89adbe2aeb87b1ce6aab85b5deaa6b84b9eeeaab886152faebb00bf64aecb13904fe9b29b2ccda *606cb3d032a96cb4d4d6f06cb5d89a706db6d96ecb6db5de7e1b6db8e2364b6eb9c89e8b2e0a07 *b4ebeebbf01e60a9bae2c66befbdf8124a6fb5f8f6ebefbd7ceecbecbf04171c6f9d02136bf0c2 *0cb7abe7b4eb06d0f0c413ab99f0ad14675c719917bfaaf1c71493d9b1aa20971cb2a010536bf2 *ca276739b2a82cc7bcb1a1290f2cf3cd0dd39ccab2bee2ec33c397d63ceccf4403fde4cb9116ad *b4c1470badebd250331da5d3b6466d35c153effcebd55cfb9b24d281762d76be4582dde7d868db *5b36d524a7ed36bc9cb26deadb74bf3ba4d974d6adb7c3a4cafde9de80f7adb5c780efed23de6f *165e788f88aba9b8e256fa6de9e38ffee3d8789994538eaae490669eb98d975f68c0e8a4976efa *e9a8a7aefaeaacb7eefaebb0c7febad431866ea1ecb8e7aefbeebcf7befac23972cea3efc4176f *fcf1ba1bcdaaf03822effcf3d01fafbc8bb65718fdf5d867df7acecb0faea4f6e0879ffdcc5b32 *7fa3f8e8a76f3cf928564fa1faf0c78f7bcbed9b6fa3fcf8e7af3afdb0da5fa3fe000c60c65ae4 *be0905f080f81b60f9bc9724043a507d1a5b602478f6a3075a307c11ac1f039174c10e62ef631a *9ca0933c48c2e781b07f1b2c520957b8be1396a8801262a10c7b0732148a704933cc61ee4aa622 *ffc5488740841d0f5fe8431805f188ac1b6288601821243a11752623620a89f4c42a922efe8a4b *2ce28bac68452c8288890ce262155796c5290e498c4f24e317b5e822343a518db462638bdc8844 *96add18c42a2e311ed18473c56508f40e4a387c0b8204006128e1d22a4820ca9c398f5f186df63 *e40c1d394839a6489293142498fce8234cca909289b4248a3cc942506e12920d2465094d792145 *264895abd4642b4579225892506695e4648f6ce9415c865297c3e3e5057d794a9350b093c2b420 *316709cce625f381cbc4152d4df44c68b2b242ae4450351d184d6c4eb344db4460372994cd0385 *f380e39c50390d744e015e939cdf0c513b01984e33c51344f3d45f3d7975cf0fe5337ffb64d03a *0bf4cf04be539dfdf45041e517d06225b443fe0b8d5f4331f4500e45147e07456833cf77d1f465 *d49e1bbd5f47d1f7517e86f47f23155f49055a51d1a51483b294e6497ff852f0add4a13335624d *b577538ae6748b3b1d1f228b098463ee32a81f1c2a3351c941a45e2fa63265aa0a9d1a3da87af3 *a76da42af494ba54638e50ab26f4622ea54a45b03a8fab51f52a0ecd8a3cb45e95ac6764abf494 *f848b54652aec513eb58ed9a4abc128fae752dea57fdea3bc0ee55b06b252c0d6b2845b8e651b1 *8bcd6063f9da54c8ee8eb19345ec5d2dbb43c96656589be5acec5cf859a30653b4f3f36c191dfb *47d48e568136a4ec545d1b3bd5ae56b665a5ad10f957dac1ead675b08dad66fbfadbedb1af8758 *fe9d637181cb3d02b6f476cb35eef44288dbb846f777d3a5ee702b7bddd46557bba0256e774ff7 *5de18697bbe3351df06af75ceba5178a05035d7bdff75ef2c63778c9bd647dd58b35f9e67794fb *2d5d7ffdcb5a64067874ff8adc7f6b796004f78b71f33560830df060082f989a13269b850b7cd4 *06034c701c3eed81d526a4811268c21486dbdd221cc30cdb2d6e1706a78bf906e3103bd3c334ae *71751f8be3acd998a31e5e9289078462270d593d4516328b9b3861232f398c4d56728ce519651f *efb8b50776f294f159e5af3db9905d06d5971719e6b56dd99f65d6f176679b6529ff58a40dd6f2 *9b511a67375fd9c06db6f29a739b672f9f59a1695efef19f211ae8128ff9958506f19d3bdc6731 *0fdaa2893edca1b519e90d2f5ac40196f3a56fdc6833cf99a675d6f379d99c693befd9ba9d56f3 *a8f95c6a519b96d3adf6f3a7751a6a596f1ac8a916f4ac815a6b47ef3aabbdf6f4ade19c6b433f *daa5c156f5ab711d6b5f0f9bcec556f4a9791c6d491f1bbac9d6f5b3415d6d4b4f1bcbcd16f6b7 *f11c6e65fbb6dcda1e37a3d16dec5f2b37dbedde36adbbad607747cc5647be379df2adef875dbb *df95e237c02d36e981e349e006e758c1133e278433fc4b0e7f7897222e71972dbce269a238c683 *f6ef8de749e31e6f5ac743beef8b931c65233ff99b40ae7267abbbe5a36239ccd3bdea99ab4ae6 *36b7b6febd730e289cf3dc7226ffb9a65f2ef448f9bce8ec4d39d22daef4a5eb6ce74ef737d4a3 *eea6a3531dbccbbe7ac082ae759dcbbbeb52ff3ad8abcef5b16faee9661777cdd3de27abb39da8 *6b7ffbc1cb2e77ead1bdee12143bde277ef7bd2377ea7e8792db03cf52b4131ebf803fbcab153f *77c333deee8e7f7cde892e79a627bef2f1a63ce6397ef9cd7b3bee9eb7bcde436f6ed22b3cf2a6 *ff65e7539ff4d5b3be7bae7fbd73512f7b78d2bef6208d3deeff3efadd23bef7be87d1e083ef82 *e1139f05c63fbe0a92affc1ef4bdf937603ef41ba42cff58fffad8cfbef6b7cffdeee7274c34c8 *faf477207e123c483a6e0805fad7cffef6bbfffdf08fbffc65e74ffffadbfffecd8983fbcfbf7f *fde3ffff001880023880045880f7a77efba721ef878006d8800ef8801018811288060cc87efcd7 *7e1538811ab8811cd8811c9881e8b705de378224588226788228b87d22b0822cd8822ef8823018 *833238831620000900003b binary ./doc/images/LightCube.gif oldhex * newhex *47494638376134014801f30000000000ffffffdcdcdccdd2b4336633669966cc99ccccffffe4e4 *e4b7b7b76e6e6e808080676767c0c0c00000000000002c00000000340148010004fe10c849abbd *38ebcdbbff60288e64699ee8750041ebbe702ccf746ddf78aeef7cefffc0a022488c2924018172 *c96c3a9fd0a8744aad5aafd8ac76cbed7615deb0f3c8129bcfe8b47acd6e8313f0b87c1e98dbe5 *f5fb3d2920f3050b1351006d8586878889696f0a8d8e8f8f7590938e9294937c7e4c130b4f009d *8aa1a2a3a4868c360943a9a8aa4335ab4a9a9b12a04b9f50124d8454b983bb66bda5c2c36ba752 *abb051c843c7cc7d484d81c102d3ba01bfd5d5d4bf9edcb815bec4e2e361c6caad491802cb7cdc *bbc9b24cd2bb81522cd748dedabcdedbb6fddfc8091c68c51c1476db2cac439750892078d09c70 *aac7240680047532eaeb170c9c3f41fe14fc49dcd52b9720872709aa246630a41284d372214c78 *1262996ed49cd8b99811e3c6912883362c49122051944545ee5bc91451cb9430dd119a497389cd *3fba44ceaa00e7a2575d1c932a157b14e8d87f679baa55f43458d4590b25fd71193756445d0be6 *4df1ea112d58a165031b258b8d90c2b5884dd545faeb2dda9987af4a04c5c95ec79f7fd30a169a *b9ec478089432f5a7c90a1baa845a73a8be7b05642d7996dc5f66b72b3566db509fb15cd7b74b2 *d272698684bce9e5eabb80bce9ed72e1b661dd9c15824c9d2d65efeb5c0c3ea1ba9de1b94c7729 *46b35e6829f6f34d19e991d36a7d9cf6ee253bf4758b4d6af4f81333ba04c912ff4aa9fcfe5789 *5d378d43577e08ae0446114510e89f80104628e184145668e1851866a8e1861c76e8a123cfb090 *4a0a249668e28928a6a8e28a2c5600861f23b628e38c34d668e38d2bbe88448c38f6e8e38f4006 *99a28e229221e4914826a9a490444ab2e493504629650a4df238e5955866796595466ae9e59760 *f6c86598649669268a639ea9e69a6c7690669b70c6c9e69b72d669a79774dea9e79e4be6c9e79f *808a19a29381166a288d7e1eaae8a22824cae8a3907ae068a494564ac1a496660a29a69a767a28 *a79e86fa27a8a2966a6793007469eaaa7c124988aaacc65a679321ca6aab9cb4c27aebae66e6ca *ebaf6afa0aecb0610a4becb1591a8becb251fe2acbecb3493a0bedb4404a4bedb5375a8bedb632 *6acbedb7430e5a2bb8e4aae86db9e89a706ebaec86b06ebbf072f06ebcf45e306fbdf84a706fbe *f5eecb6fbcfefedb6ec002a74b70c1e51e8c30b80a2fcc6dc30e630b71c4d44e4c31b4165fcc6c *c61a23cb71c7c47e0cb2050d0cc0aac8234fd000022537602aca23372073cb32970ab3c62be7cc *f2ce2b877a73c433cf3c80d0427bfa33c2390fcdb2d22d2f9db3a647ff1bf4d454579d69d4f836 *ad35d35c279d74a558c75bf5d8644f4d69d8ed0e2db3da34b7cdf6db44d7fc28dae8966df7dd72 *2f4a37b832b3dcf7cc7ee7fcf7e082171e38027a8bab6bca12e0edf8e38aee7dede394435ea8e4 *fed01a30b3e63273de80e795537eb9e28c371efae996b74a7aca9d6fee7aeba8c7aeba268b3b1c *fbeda2eb8939b09f375040efbf6b1ebcef33ff2eb3f1c41f5ffcf2ca379ffcf3c8dfb9fbaeb857 *7ffaa9abdb3efcf6c0772f3cf3d0838f3cf29e97ff7aef9de39a7dc1d6b77f7b9cd39bea3df1df *d74ffffddcdb9f3ffef3efef3f9cf10b95fb0658bd36055053fcd35fff16a8c00626f081fe5b9e *e60cb83eb1990f76e8cbe0053578be0d7ab08320b4da9c2ac8aedf999078274c210a57a8c216b2 *f0852e8ce10b1b3842da890d831fc4610839a8431d6aee87bd03a210f1564368d46e5b324c220c *97a8c42632f17ecedb5e11cb70446a05f18a43cc22fe16b7a8c52146d081dc731ce7d674404399 *d000674ca3efd0b8463516808d6f74231ce728c738a2f18e76cc231b9507c6de91918456ec2217 *072948417e1182f3935db000f9ac38b6f1918e8c241d2149473c5a528f98bca426914735cf7d71 *91369cdc2147c940fab1d100a79ca424ebf8c8db790e9446c4562667b9c95ad2f296b6ac65d948 *69425852715b7dac5f2a8337cccf151395c4ac632ef3e8b4c09d6e8cbd62e4b2dab8cc6ae2f29a *d604dddd4839c16886f25a69cc2636c729ce3db22d706cb39b07cf54463e6173017784e71b1750 *8079d6d300f4b4a73ef179cf7cf2139ef4046801041aba08c6d09bb1dc9629c9c9d07262f27080 *d31ae1fed4793e84fe12899a94273ee319cf7e7a54a020fda748033ad2816af399a5946299dac9 *27643ab4961a8d2947e739d38d72b26c7023db0785b8526932eb921ffde740871a50a21ab5a848 *3daa5231883aee39b1a7df94a5313329539a5ad5a658adea4601bad5934e0da27f639a4e41f843 *a826945b7a8ca95293cad6b5ba35a0046c5d1f53482696f2098530ed2a57f7ba559392f4af7ebd *29e5727ab742baac583e651655d79a978136362f017dac64214bd9bc84cf79a8f364f79258d7c4 *fe14af54d5ab68011b5292e20eac85a3a85c8388d8a80273b120756c65674bdbca76af87d6d3ec *f764d8dab3a2959a691d695ef03959d91a77b8715d9b1809fe493c30d9f54f690d6c646b4b5dca *22f27b51c49d53594847e77a96590bcda85e8b0b59d95a36b9847366d90ceb5dd7722ba3d2356f *75291bcce76db07adb8da101bef4dc3fb934b87b256a757788dec26e317ffcfdee4fed485af9d2 *96000b60003d9f48caec1674b3dc0d6782ddcbada98a37c0d3b56c0e0b9cdaf532b79bc952b062 *2dd9e0f94ef884f51d1f814f975fd0b6114f2a9e6638690a62e2da568bb82571275de7401c73f8 *bdd165eb83234ce1ebf2cf795e1d5b8d95f9462df51750ff65b15efd5ad9110b79a2435e2d1083 *67e51c2f0ba68c9d2d015618e3dbf23083941b338657b9df141fb9c3b42c6d6db788db2827d77c *7db4b36fcb95fee4a32e59c24e8431222d0ce7aa4d19b89714f445d305da0f73f9c76ff6b3fbd4 *3b35405f7178924e4215b105dfd8d656c20c98a193c3f8e6382f70c796c4d295039565060bb7b6 *820cf297899c4038cadacc0beea8a9692be1bcac39d16c5ef4653328633e6618d255de12b0c15b *6b8eee75cf23d6f4aeb5c83d69dff95b4916eaa923fce2552f10ca3b6c3622a98c466f0f1a5d79 *05b1831770e2199398db535da3bb27dd2e3c7e74de9585f0b19bac686e9a7bb7cfa6e594665da8 *6af3b8af00edf215751dd76c1f38df756ed6b483fd70a4ce17c22e6c33760f6e6e76475be3dfe6 *5b9e6f3d5be6f659b5f536ac9c91494d2931bc5085f6b89ac98d6cfe152ab0e704af24266dbef1 *46429aaf7fa52d905b5db59dc6fce9c9bc31946edef09c0b78e7a996a1c8090e43557a3d93287f *7709e37d69a5d7db87f536b8da811b767ec78bc1f1ad2d84250c72ae27f1eb2f6d6801a65ef467 *7918c065c734105f2ef34fa7f4f03fbf23df534eae70ebbcb2a82eb7cf836ef2bc8b73f1626f57 *68e53d5b09177ee6d72de62a29c94a3ac7f149543794b0c5fdf1050cbc8578d7bbe571494fd4f7 *fd590e1f2d753f6ff8061ef3f7a5bf7c9f6edfc8d53f9eb2c576bde4490fedd93b9faac3677cb9 *8ebee510db969bb17fbef3a39f79cdb338cd01e7b9f6577e557f9adfa3fb3cff3c31eff67ac11a *e981876c30453ffeedfeb75dd4022b35c0293bf7fa97bfa65aa556e9275dfb867fffb27249575b *95277b0c984ba1362ef902774a8675caf74ee85752a5255d18b881486564dd072fcdc763f1277f *b0d680265853edf581de2781ac4781b4677c1a485a1c188304d85bed872f9b3782908568e51480 *00f88348a757667583f50283d6075973a77c04c04ff694816df5846f1585b5675106987ff1b655 *d4454e3ef87f41d885f8f447d237764dd88290476e10e6841828856ad85614148662686d10e760 *a8965570e8855d4883a5053fc4274bffe66202e77a6b785ce43588d3e558b3b287af5587649817 *3c285376385a900862d2838889787c87b6868428884798177b927a99626bfe09486cd537836828 *839cd88994f82d13187e7447882ef68a9005289ed829d6a68377588a31385cf2373a6e78809668 *6c663859b0e8629f928ae8128a9df7583ea689fb575989d38b0873684a388caf3837c658421177 *6a3ee663d4380f8c328bac928cadd88d900736d7082f471879e4788ae6088d17137e7f088cc0d8 *8af4e88d67738ef4426ce46834f8582f91f787c9978402698f57d38ff5928c0819612f6390f832 *8dadf8871076320cd99091977cc5262be0782cf51891b692911a496e0cc02b1e892caef72b2359 *3a00349128c98feeb892c772922ee94b5518930ca39234d98e2a78931b63933ab9293cd993dff8 *934019394239948602934659fe662d999412b9944cb9904ef994a282945249745159959d429558 *697b57b99596a2955e192d451996ead39564e9936679964199966a49946cd99647399670299310 *38974d99937609357299979df5967c898a7ef9979318988279888459987a789888d98678b9986b *d9988ee99690199971a9989449857579999102969a89267bd9995c3999a00998a2399a83599aa6 *6998a8999a89b99aacc99844f89ab2f899b2592db4599b3ec299b83902bab99bee729bbe6923bd *199c92029cc43923c3799c1b909cca9901ccd99cf6629cd0692ed2399d9e6999d6699bd8999db9 *599ddc4922cff99de1c99de3999de5699de7399de9099debd99ceda99cef799cf1fe499cf3199c *f5e99bf7b99bf9899bfb599bfd299bfff99a01ca9a039a9a056a9a073a9a090a9a0bda990daa99 *0f7a99114a99131a9915ea9817ba98198a981b5a981d2a981ffa9721ca97239a97256a97273a97 *290a972bda962daa962f7a96314a96331a9635ea9537ba95398a953b5a953d2a953ffa9441ca94 *439a94456a94473a94490a944bda934daa934f7a93514a93531a9355ea9257ba92598a925b5a3a *5dca385f9a32613a32b9f221667aa6689aa66abaa66cdaa61a32283de00a0c32a7745aa7767aa7 *789aa77ada0272ba0330121f76a00a803aa8845aa8867aa8889aa88abaa88cdaa88efaa8ec9107 *86faa7932aa9907aa9989aa99abaa93f9cdaa98f2aa893ba23870aaa9e5aaaa67aaaa89aaaaa0a *07a44aa8945aa8adbaaab23aabb45aabb41aab804a066ebaabbcdaabbefaabc0baa62cf09d7f12 *01003b binary ./doc/images/LineAttributes.gif oldhex * newhex *47494638376134014801f20000000000ffffffdcdcdcb7b7b76e6e6e8080800000000000002c00 *000000340148010003fe18b0dcfe30ca49abbd38ebcdbbff60f82841699e68aaae6cebbe702ccf *746ddf784ee47c4a2c018170482c1a8fc8a472c96c3a9fd0a8744aad5609d6acf107086abfe0b0 *784c2e97b183b47acd0eb0df6b371ceee57a0505461260eefbff8081626804858687876e888b86 *8a8c8b7540440c0547009582999a9b9c7e842e033ba1a0a23b2da342764594ab98460bab4db082 *b3b39db7b8609f4aa3a849bd3bbcc102aa4479b602c8ab0a43cacac97c53cf4bb5d1b9d7d851bb *bfa5411102c05ed6c942bec5c67a78e3af250ccc93eb56e942d5d4f148d3d9fa82db48e1d00fc0 *7503480f963949af1614c853240580016e22ae7b566f5e8349d00a06bc58feb15ec68b00ad81dc *47f24bbf91ff90191c1872d6c12ef8f8c47bf33022c489f1aac98ce61196ad9e7a7416cc481428 *d19248b59c9c9772dc4a4577500e3b178be283340fb3aecac9b3ebd0a2cd9a793deaf1e358a3f3 *92aa95b2d456537802a18a753b1561ab63f7260d080877eb579d41f91afd2b7227618de946ae5d *cca4adb5b762e3fae2fbf24e334cacf6fcc499f0f0517ab18a8e151d7970beb48c536f892b4cee *b7a65df9546e05ef92e6d091fd92fe0a1aeee0dd1d479fceab3a75bf23b01d481ee6b45c5d9843 *18a2cbe7040270a7cafb76cc9d9de0e6b93b51171f7fdcc83f6e72d1a7b22bbd08def1f0e3df22 *34674da9fa6aeee39fdddb92fe42f90006e889408f20e248818d84826023eb4127e083106a8245 *0f3d3478e0821866a8e1861c76e8e187208628e288249668a221c400310a852cb6e8e28b30c628 *e38c349e80851d2bd6a8e38e3cf6e8e38f32dea8a229401669e491482619a3905de4a8e4935046 *2965924c4235e5955866a9650f553ab9e5976086b96597448a69e699681649669a6cb6e9268c6b *be29e79c74c210679d78e649e79d7af6e9a7997cfe29e8a053064ae8a188aa9962936526eae8a3 *351a0ae9a49472b9a8959566aaa90d926eeae9a728740aeaa89b8a4aeaa9939a8aeaaa88aacaea *ab7f560940a3b0d63a28937cd06aebae7a56490cafc0fae9abaec116dbe6b0c626fe2b27b2ca36 *9b26b3ce461b26b4d2569b25b5d6661b25b6da768b24b7de86fb23b8e296ab23b9e6a6bbe4a5bf *aaeb2e8de8be2baf0eec123befbd9cd68befbe3cc4cbefbf2cf85be3082a44b082c1054370b0c2 *0913ec10c30f3b8c02c2113bb0b0c427503c31c41b03a1a82af6ee88b1091a67ccb1c923b77332 *c92bab9cb2022dc3fc72c92ccf1c33cd2e77f1b12421eb68f3cf16371c74c50d5c3c74c747a39c *74cd4be75cb4d04f13ed0ed453576ca4c034021d35d25b2bdd35d35f3b5d35d7637b5d36d8678b *edb1d46b93ddb6d96f337db5be476a9db6cc4de31db6de77e3cc77dc6aebccb6e06e130eb7e168 *03fe37e239cf0df28f1418bdb7df94fedf6cb9dd8a578e39e38b4bdef7dde7d2dd63e454677e79 *de9aa37efae4ab7fbeb9e7804fd023d633be5e3ae7a9b36efbe0b0e3debae9bb1faef8ba8fd7ad *7af087f7aefcedcbf3cefcf3ce472f3ce7c4f38c24f289fb8e7de0cd17de7df2d07b1f7ef6c3c3 *293ac0e8bf407bfa00afcf3ebfeebf8f6ffcf2cf4b3f0fb2d74feafd39e4af3fa8fcc381fffee7 *a900de608004349edfaa07939ec10881092c12046764401b4c30823eba200383e0c01769108322 *93c0ecce17c20582d06722e451054f38a70fbe68852c7c930b5d04c318b669862daaa10d93a5c3 *1d16ab873e04161083b8ab2112b156466c010e8f38a724b260894c7c93137b57be28ee89fe8428 *34a115f197c21d4df17655dca200bb18bae28d8e8c626c11142d65461ead318d317823bdda58c2 *98c1718c5aa42116ef482739e2e08b7c94201ae1b5c740ca7090142ca4219b05c8453eaa918e4c *14242379a84952f2568a94911f2f09254b2e2e8c9cbc562663b4c9505269940f44a42995a8ca0d *b6eb8c795ce5f44648c72cda51968303258b3c594a4af69206bc6c252e0ba74b0a7972985c8ce5 *2e5189cc28fd7206c76ce60185f942664af353d1bce6b3aca94d4d65b39b80e2263829154c658e *d347e5bce53977d640c851739de31227859eb9487ac6209d2fd3a63ded24cf1eec938fff74013e *f3a6cf77e6b09fc954673303da826fc2938afed4335f2d1f7a3d832e73a2143512430386d08cc6 *aaa31eed934343ba2d9092144f233da99206ba379546caa416b4a84bf588d1dac974a617b55e06 *6fbaca8dae80a5a0bba64f5500d462ca72a83e80690d901a45a6da48a93470ea11a55a82948694 *aa01b0aa47b1aad58c7215aa38dd664dc32aa8ae925585603dab98ccaad6978e95943c6d6b0d8a *1a51b9b251a7b054a85dff98d638c635945f7d6b2acd79d4bfde80ae140d2c5edd68d84b2ab69d *3b256c4f1b3bd7beee359775a5e9622feb41ca02d3b29c255f660f2ad8d01e0bb4a67d125b536b *4cd4b2f65bae7dade3366bcb7cca560688bded1c693b30cfde36b7f07c2c07dd2959530af7958c *fe2d2e607d8bdbd84234b1ccbda773c138da611eb783ba75c175b39b50db56b3b4dc7d6274f909 *def08ab2bce6bdd26ad32b5df4b2b7a4ee7daf6aa78b59f9b697b7591b6f6a816bdf86d29798d5 *c5e57623ab57ebea57a0ff9de543079c57ef2ef4c0fe8d6f77092a54087354c2e965707fb56be1 *9f2658ad1adef0983e2ce2dd42b6c423c6308a6989df157792c49f0cf07bf9ebe2aac218ab61a5 *f138435c5b0a4b93c7bd552e27819c5f213bb6c344bd3192ad4864173779c54f4671946b7ca4f5 *52d9ca35c6b28bb5bc621d6f59c946ceae97bb0ce6020b78c9a12ab3839139e5ce8639926d7611 *8e77186735a2998975b66f9ee5bbe7f7f699ca5e84fe31a0c9dbe241cff6c4869eaf8a132dd142 *c3f5cdbf55b38f373c661457bac2906eeea2639a6943feb97f779e6aa86dbce9a58e3a889fc6a3 *990bdb6942237ad0a90e6facb93b6b4693d6d1b6466ba9737dd757f31a485cb6b4a45b5ae24b8b *d8d8941e76507f7c6a64b3b9d9ca36ea645badbe68cb78daabee97b5a14b6d04effab6b5d66db8 *c10ded6ffffab0823eb709825dec74ab3babee56b7b3ed3b6ff9d67bc6d606def1f6ad3b7ebbce *dffaeeb7c0ff3df0b88d5b0615f85ef614cebdf12ddce10d971ef824fe700507dadc7ebd60ee08 *cef180775c7b000779c145fef1faea1ad76e56e5c63dce7292b79ce19d8378cc291e71d1b2d8d7 *4156f9feef5cce7398afbce732ffb9c20f6eeaedcd5c7c343ffac491cef4a53bbde24d8ff1cd87 *abd19dfbdcea41c77ad2859e759b5539de5cdfbad6a35ef3a7971dea66573ada59f6758c4775ec *690f3bd9d57ef6bad3fdee723759db51ae49b8afddee79ff3bdefd0e78c2c36cef387f7719f9ae *78cd26bef189743be4bdcdf8c9f79aea965ffce333ef78cc733ef295ff7cbe242ffaa792bef4a4 *0e3dea35adfad5bbdaf3aecfe9e6633ffad6d3fec2b6bf7d924f8f7a761f3bdee7f67db2795f7a *e1f7d7f8f406feaf916f6fe5f39af9f826bee8a1cf5eeaa7d7fae6c57e78b5cf5dee8bd9f9b9f6 *be6ec51f69e97f9efcb245ff6b8775a2f6bbfffdf08fbffc84e74f7f115d6aaee7e7948af6f306 *51f0ffff0018800238800458800678800898800ab880f6210702882303e87f0c38811458811678 *811898810c28810108810fe8801a18822238822458822698061c08801ed8812078822ef8823018 *83319882ffc705f577833898833ab8833c287fb322024018844238844458844678844848010490 *00003b binary ./doc/images/NotHidden.gif oldhex * newhex *47494638376134014801f30000000000ffffffdcdcdcccffffb7b7b76e6e6e808080ff00000000 *ff0000000000000000000000000000000000000000002c00000000340148010004fe10c849abbd *38ebcdbbff60288e64699ee8350041ebbe702ccf746ddf78aeef7cefffc06021488c1524018172 *c96c3a9fd0a8744aad5aafd8ac76cbed760bdeb0f3c8129bcfe8b47acd6e8309f0b87c1e98dbe5 *f5fb3d2920f305061351006d8586878889696f058d8e8f8f7590938e9294937c7e4c13064f009d *8aa1a2a3a4868c360443a9a8aa4335ab4a9a9b12a04b9f50124d8486b9babbb3a5c1c287a752ab *b051c743c6cb7d484d81bd4ad24e2cbfd402d2d883d7bbdbdfbfc3e2e361c5c9ad491802ca7ce1 *bbc8b24cd1bb81522c0113f8bedee1d5fcb6fd7cf92347b060167350d865bbb00edd427e84e03d *f3f7a91e93180008d4d9d84fd04280fedd7269fb378d02c891bd446e33c8721442934a1452cba5 *f0a14789653c110a6827e3468d1d05a5dcd9ad648592483f2a1d8a5468c0965013bdf4d850523a *77111d1afd85f38f2ea5b32ac0c948562051b04cd1fe1ba936a9caa451e34aad7a72894cac5591 *d9b4db2cde2603f3a6903d0acc24dba5453fb23d6c01b1dcc7c4e86ee56b15ecc79a8d25fb9d06 *8a93bdc3008db675ecf66cd3c4d8d2425ead06e193bb8d618beeaaabd643db0237e5f6f8b67468 *c5101127f6cdbaf819d74e601fc5ac5bf34425169704ee029aeae9df434d3b0dabfda9f1ef5890 *37a999506bf94ccfa3cbb30ebebd7b368cf4c869253f0efdfab4a771bbf5bebf7f318c5cfe0289 *250256924a8195c4f2dc7f0c36b806184514a1200b072268e1851866a8e1861c76e8e187208628 *e288243ee20c85ae44a8e28a2cb6e8e28b30c628a30b60f8b1ca8c38e6a8e38e3cf618638d48dc *e8e390441669e4912f028922924c36e9e4934d2a691594545669e59545482924965c76e925975a *a6f8e598649639649866a6a9e69a2ea2c9e69b70c689839b72d669679c74dea9e79e63e6c9e79f *8042e967a084167ae689531aaae8a2390ecae8a3906689e89691566a290f8e5eaae9a63064cae9 *a7977a0aeaa88f8a4aeaa9859a8aeaaa7c4a098098acc61aa89284c02aebad7a4ad907aebceea9 *abadbd06bbe6afc216fb26b1c6266b26b2cafe36eb25b3ce466b25b4d256eb24b5d6666b24b6da *76db23b7de868b23b8e2969b24a2bb9aabae8ce4aeebae10e802fbeebc3fb44befbd73c68befbe *3ed8cbefbf2ff80b30c0020fcc6fc106e38b70c2f42eccf0bb0e3f1c030214576cf1c508f41a71 *c21877ecf1c7ab6eccefc72497ecf1a822cf6bf2ca2c63cc69caebb62cf3cc1487aaafc401d0ac *b3ce91c2ecedce40f3cca8cfd6066df4ce8b121dedd14c239deacdfb362db5d3802a9decd4580b *dd2ad42a67ed35cd5b6b226fb95f973db3af5cab6bf6da67db6935ae6cc7ddb2db69872bf7dd73 *e35977b778f7bdb2de629bebf7e025c3f936aa84270e329b8793aaf8e31d33bef7d290577ef1b0 *fe93376bf9e616abd9f8a69c875ef3b2991b2bfae9a4075ef4e9a297f9b9a5acb34ee6eb91c61e *7b9fa5f76abbed5fd2cee8eebb3f9bfbadc003dfa5ef3e1ea0fcf2cc37effcf3d0475f7cf0600e *3f66f4d867afbdf2d31b8f25f23d6e2ffef807745ffcf7d67f49fefad89beffdb4e97bc9fefccd *bb7f3efcaac749fffef64f8fff336333d3fee8d7bffb51097c3c1a20fb0ae8bf03c6af4b0a241f *031b28a807722982e39b2005af65412c61707b1adc60943a78a50f6a2f84224412027764c2f6a1 *d08023cc1f9c5a28bd17c2508524b4120da167c31b1e69853adaa1f37a98c22201314742ac1f11 *df874319be2989cb5b62110fe5443641917b5264e2feb67258a52b66d187443a228ebcf8452d86 *918b5422631979d74400d6098a6b342315dd282738c6917a5bace29aec78c7dbfd108d50e2631f *51f7473daa298983c4e3190d99264426d28f4604e4931cf94842469291021462256597473aea6f *879b84e41ccb10c032693294961c65124a49a653a232749d24e51b41f94a585ed29333a4652d37 *17cb55ce9286bbe45c2fd3f5c916065398b794651d81794c5e2e12974f6466332b974c5f2ed398 *d3a4e63395594c1366539baa24662eb1f94dc555539cd124673909774e565e4f9aeb1c5c3b7fe9 *cd78b2739bd6ece607ed79cf70ba537df0e4e7dde679cd7a0a146f04d527060fdab7848ed3a00c *8d9b43fed309d188ae6da2560ca845cb86d13d6a74a35eebe8213f0ad2a90df39ff2d36549b376 *527a5674a5526b69415f0a53a6c954a10bad29d66efa509aea34683ca5a84f7f4a357fba74a844 *955921a199519526b5a8469d29529ffab7a03695a45465d952b9d9537566356f56f5a82bbf0a56 *9136929264d5ea56f3d9d5a9a6f5726b45e7559dfad693b591ab42c56a5d2bc62431ce488d7b8d *5c5f25e9a42b962fb082bd2b5bf3aad7bac690a96215246233f658bcce75ac93e520264d69d8c3 *6656b3901da961273bbaca2ef6b298ddeb93fc2aa3ce6231b015dc6c2b5dfb59d05a36b2a3556d *6c437b56daea76b5846d926ba3f8d62ab13646c325ee57fffe775bd10e37adcc3d2d6e7d4bd52b *1d1746c9655e75ad1b5c266557b944459f6cdff95dcfeab47ae3056879cdbbd2e3751749eb7d2d *4cdd9bde94c6b7a6c2ab2f04e32b5f8bf6eebd47e22f78198a3bfd5e50c0fde5e7ec006c24040f *389eae6370911c9ce072a68eb799a4b0822fdcdcde6a789d9e93309128acdd6f62cec01e247189 *8f2939149750c52baee5b1443c24182bf19586a371f26c1ce34a020ec39ce5f183fb28a7ebbe48 *c8431ce401ea6464172139c971541e93751cbe2743598acc9bb28b7568e52bf7b0795a06f26cbb *ec650d3e2fcc1dce30996f6ce6331799ca095c330f19883d344bd7b9722e33f0b46767b94e37cf *7a0eddf8fa8cfed2fd023a7bac5b1fa18f7ae8395b6e7e8b966aa35d48b801461aa7933e61dc3e *78e9b6663a8358db61a719fb6902ceacb3a3466da9572de5376fb98bac8e75965d2d66f2ca3ad6 *a9fef3ad339d6b3ceffad3bdf6f0af814deb340779d8c4feb1b1c78c6c5e17fbcec26ef6a183ad *66694ffbd97ef6b5b5e54ced636f3bcfdd66f6b7b98ded421f78dce02e37a3d1fde470db9add5d *76b77ae11d6f754b9ade3c96b77df1dd6e7b639adf2ad6b7a1012e64819f9be0f9f6b7a711ee60 *83a798e13676f88b210e63897399e2015738a9311e5f8bc39ae314f6781a411e728dab9ae4df15 *39cebad5e49593aae52e0715cc63fe3238d3fc5633bfb9cd5ead73fe69e5bce73db339d051f5f3 *a10f4de8464719d293fea9a233fd693c7fbab09c2ef5aa2dbdea96a23ad6d116f5ade3fcea5e2f *15d8c39eb4b193dd505a3fbbb2a1ad7665a5bded2dae35dc3566f6b9874dee76ff7ad7f35ef3bd *f35d536fff7b81f12e78a2d7bdf06bcf36e2f54ef8c5cbfcf08e3f71e323bfa9c053deb890bf7c *84fdae79a84fbef341e73ce8ad2efad1df7dd9a6dff9e753af28cbb33eacafaf7ce6638ff9d2d3 *3ef1e6be3da15caf7b1ef1bef73afa3df0c735fbe12b56f1c66f7df1936f56e67b1ef5ce3f3ddb *a34ffad5537fc6b6bf3e7dadaffd1067bffbdcfd3ef86bcffdf12f58fce6072efad36f5ae4b31f *f7efaf3ef4e39f26e1acd31f53cbbf3f8becafff1cf0bfff37f07f00580302388033f02b259280 *0ab8800cd8800ef88010082288d203b9678040508136821f76a00a1ad8811ef881201882223882 *245882267882289882f391072098812dc8822a188332388334588336788329c8812d182421a883 *38f8834018844238844408073ee8812ef8814758844cd8844ef8844eb8841a4806115885567885 *5898855ae8804491025ef88560188662388664588666a8011100003b binary ./doc/images/NotSmaller.gif oldhex * newhex *47494638376134014801f20000000000ffffffdcdcdcb7b7b76e6e6e808080ff00000000ff2c00 *000000340148010003fe28b0dcfe30ca49abbd38ebcdbbff60180564699e68aaae6cebbe702ccf *746ddf3881ef28b10482a070482c1a8fc8a472c96c3a9fd0a8744aa512aad8a20f00cc7abfe0b0 *784c265f07e8b47a1d58bbd5edf7bbbbed0a0a0c24a0cceffbff80616704848586866d878a8589 *8b8a743f430c054600948198999a9b7d832d033aa09fa13a2ca241754493aa97450baa9c4aaf0a *7bb1b6b7599e49a2a748bc3abbc002a94378b341c7ae01b5b4aaccc9b20e54b3d0b8d6d74ababe *a4401102bf5dcc0a41bdc4c57977e2cacb3feae8d592b5f052d4ead8f7f8a8dfc247e0b40ffb12 *75abb7a75c24570b0ae0218202c0803610ddd51382eedf1e78aff2bcab38fe11d9c679f94296d1 *665188bf64affc599c6590cb918c45dc3884f850624679179fe1acf8af27b48e4073821449140c *c90626b935a35850a9c7632dedc0aa06018dc3abcec6dd64ea31dec6ae4bb92e0d1ab6a8593301 *9942558ab2a940b5cca25652c8b3d20080f14a1eebe8352758826457fa3d4b58ccd18a27c5a574 *8a572eaba7ad2aed95f8342cdfac64035f2e5bb8731592461203145dd931c5c8ab5ebacbdab3d9 *64d56371c6feab33afe7db56d26e7beb4da56272c2cca52362ccde93d795f342a04d1be965e7c6 *714bcfa6bb9f53eb6f77a33a38bc48f1e9e0c38fdc27470da9f269cea3371dfd5f64f1f0e34719 *e4e850a3fa8c40e167b4dda5fefcff001a26000f3cf477df7e0826a8e0820c36e8e083104628e1 *841456686121c3fc200a811c76e8e187208628e288249a70451d1b96a8e28a2cb6e8e28b229ea8 *612930d668e38d38e618a28c5ca4a8e38f400629648e3c0a34e4914826a9240f45fab8e4935046 *b96493344a69e59558d64865965c76e925885b7e29e69864be10669968a649e6996ab6e9a6956c *be29e79c43c649e79d786a99618f55e6e9e79f25da09e8a08432b9a7918526dae5018c36eae8a3 *9046ca680c822a6ae9939266aa69a3941eeae4a5a02ab9e9a891768a629fa1a63a24a9ac720a43 *a5aac68a63abad9a3aa3acb802492babb6720100aab906ebe2aea4f6ba07b0c226fe5b22b1a3f6 *0a04b2ca460b22b39b3a3b8cb4d89248ada6d6429bedb7376c9b69b7e096cba1b892926beebae1 *a20ba9baecc62b83bbefbe7ae8b5f2e6fb02bd8fc2abefbf29f0eba8bf00174c82c0ae9a79afb7 *06c78bf0a4f6a6c270c3eb3e7c00c114eb6b31c619cbbb71c4914cdcf1b71f2b2cf1c80097ec42 *91f8a29cafca2db02cb2cbd1c2cc82cc34bffc30c73993bc33c82ecddc73b036af80f3d015ff6c *72c848278d30cf4d47bd74d052573dc3d156671df3c25a776d34d75e876d22d8628b8d75d95e9f *8db6d66aaf6d75db6e4b0d77dc4dcf4df7d076df9d73de7abbcc77df23ff0d78c6820fde70e186 *178c78e2ff2ece78be8e3f1e6fe492feaf4b79e5e55e8ef9b79a6f8e6de79e470b7ae8c98e4e7a *b0a69f8e6beaaac7ca7aeba9be0e3ba8b2cf6e69edb6278a7bee84eece3ba0beffee67f0c2e349 *7cf1741e8fbc9cca2fef66f3ceab097df4684e4ffd9a645f2f7af6da97ce7df7a87f0ffeeae28f *ef7af9e6c78e7efab4afcffeedeebfaf7bfcf2f74e7ffdc0df8ffff0faef6f7cfffe4b1e0003c8 *bc0112f079063ca0f412a8c0ea31b081d83b19040b65bd0906a98216fc11063348a40772904b1b *fca08d4228421891b0842e3a210a59a4c215aaa8852e24110c6318230fd2704a36bc619266a843 *0ff1b0871cfa21100d25c12196498846bc01129358832532f16a397c62078b28c52e39b1fe8a53 *7b1616bd74c52dde2c8a5e7c5117d36480329af18c684ca31acbb837302a6b8d708ca319db48c5 *91c9f18e6aa423d36886c73ece91666344931ffda847aaf17190782ca4160f8948392ab265286b *e41d1f29347949d291807463b22e19474ae68c9370f4242341894651ba8c9479cc641d3b86ca34 *9a3292ad3ce32bed18cb3ffa4d93c2aaa52d5116c832e9928daadce3297f394b56123398861ca6 *2e8b99b15f1a8099147326341b264d642e5299b59ca6c1aa79cb5536f398dd14262c97694d48d2 *929ce14ce638b359ce4a861148bd7c6709e229cf00d0539ef77c673ec3b84f2ff6738bffc46240 *ab38502916f4890765624293b85023367488fe0f0562447b38511d56f48617a5614663b8511776 *74851f4561484b38521196f48327e5604a33b8520bb674822f85604c1b385305d6f4803725604e *03b853fff5747f3fc55f50eb3754f915f57d47655f52d3b754f335757c4f055f54bb3755ed55f5 *7a57a55e56a3b755e77575795f455e588b3756e195f57767e55d5a73b756dbb575766f855d5c5b *3757d5d5f57477255d5e43b757cff575737fc55c602b3758c915f67187655c6213b758c3357670 *8f055c64fb3659bd55f66e97a55b66e3b659b775766d9f455b68cb365ab3e1b29e232a6dd8549b *b6d3a27647ae7ded8758db35dab22db6b2ed906db3b6dbb7e136b704ea6dd5842bb7df027707c4 *eb8d5a72eb66dce32ab1b9ce6d2274a30b456f52778ae2bcae06a7abdd2c9ab3bb385a2ed2c48b *37ee82f78bd63daf18cdabde1490b767efd5667b5714df76ce37bcecbdef3cf3ab5f7bf257bff5 *4de735fb9bc2ffde37c0bc34f07c111c3805b797c11d93d985264ce10a5bf8c218ceb086257428 *1ab853bb1fb6a786d6e3865090f8c4284eb18a57cce216bbf8c5308eb18c676c9e38a818452b36 *318d77cce31efbf8c7400e328d759c621cdfd8c6424eb29297cce4263b190d4446b1918b8ce427 *5bf9ca58ce7296a37ce22d6cf8cb600eb398c74c660cfb4a04684eb39ad7cce636bbf9cd70a640 *0200003b binary ./doc/images/OrbitAroundCube.gif oldhex * newhex *47494638376134014801f30000000000ffffffdcdcdcccffff00ff00ffff00b7b7b76e6e6e8080 *80ff00000000ff00ffcc0000000000000000000000002c00000000340148010004fe308049abbd *38ebcdbbff60288e64699e689a056cebbe702ccf746ddf78aeef7cefffc00370083b4c0282a472 *c96c3a9fd0a8744aad5aafd8ac76cbe51ebae0a611800c9bcfe8b47acd667f0df0b87c1e98dbe5 *f5fbbd3c2e0b101450006d8485868788696f078c8d8e8e758f928d9193927c474b14084e009c89 *a0a1a2a3858b350642a8a7a94234aa497d4c9bb29f4d13b25bb7b283a49abc58babdc28a02af50 *aac64fc84251c6b14b80c102d2b2124ad449164fd8d8d7bf85d21782dfc3e55da6cdac4819c5ea *d99a49ce994cd1bc8051641247e4d3bfddddde7cf163130ca0ad81e6125a4177cc1dbb65eb7405 *9247a6d30404f796c00060a08e4772fed46e55e8d78f97c840ef0aa24499cda4cb92de560e94f8 *92e5488538c5b4f37373e7ab708320b6bc49d1cfae694dec70f4d811a4d3928364929c4a52e549 *aa34874ecd4ad5574bad555fe61c2b802154254281fa6436f457d16d5ddb5280c3b1ee51af2a03 *7245faee2b56b15caffafd07d85f54b164719aed99f6db2da16dd1b27d46ab9e94badabce235ac *b770e6bd810bfff57b17f4e19e89132e66d9d82b64713b61cdd3f469d638ce9a3b07fc1a18d756 *dca179039f295a78eac4669d3416b75ceb5bda026b1df49ddbf460c047f36a0f4e13f7e6e2718f *9b4b9ed42186b5651cc79b3cfb0f39cb6032ffb56938e46181f883c3043a325077fb0689fe170a *794c40a68c3b0d6152511219d1c39280104638d6227ac8c14a85715c88e1737c59e48984208638 *cc22963c52498994a0822225b22d28e28b30e6f4051144b478e28a38e6a8e38e3cf6e8e38f4006 *29e4904416696423651d818a0a4c36e9e493504629e594545af0451f4b56a9e5965c76e9e59753 *5ea9e418609669e69968a619a5986464a9e69b70c629a79a6c4632e79d78e6a9a70a75bab9e79f *8006fa679f640a6ae8a188964968a28c36ea28948b3e2ae9a4947a1069a598664ae9a59a76eaa9 *a19c7e2aeaa873864aeaa9a82a9a649b85a6eaeaab559a0aebacb4a6206badb8e6fac1adbaf6ea *6b05bcfe2a6caec10e6b2cacc51eabeca9c9fe2eebaca77502d0eab3d48ecae620d356abada675 *aebaedb7dcae8a44b6e096db68b7e49aab2ea8e27abbeebb87a20befbcecc6922ebdf8c2296fbe *fcdeb96fbf00bff96fc0049b3970c108777970c20c53b970c3103ff970c414dbdaeebd15672cc2 *c41a770c02c71e87bc01c822976ce5c526a7cc01c92a97cc72cb21bf0c73c732cf9c71cd36538c *73ce10efcc33c33eff8c70d042134c74d1001f8d34bf4a2f8d6fd34ecf0b75d4ef4e4db5ba565f *5d6ed65a7fcb75d7da7e0d36b5628fed6cd9662b8b76dac6aecdb6b06ebfed6bdc72eb4a77ddb8 *de8d37ad7aef8d2cca7e270d78e04c0f4ef8d3861f2e75e28a57cd78e3583f0ef9d6924fee75e5 *fe96878d79e6646f9e70010b842e3a0139f7ed6b01a08baefaeaa393eeb2e7f3a2cefaecb4b34e *c0ed37c35e2eeaa9d7eefbefaadf2e7cc2a67fda3bf0c8278fbceb88dbabaeecca472fbdf2c347 *eebcb6bc4faffdf6d20bcffcb3c51fcafdf8e4972ffab1e1eb09bdf9ecb73f3eeec4ea6efcf1ee *d76ffffbf0a79a3e9ad9dfefffffe6f3def7c275bd5101f0800844e0001db53f2aad2f81108c20 *00f3172ff9eda97f12cca0060fe83d403510051b0ca10823a8000f5a304df41ba10a57d83e0528 *6081fe3aa19730c8c21ada907c2e2ca1090bf8261adef08740945e0e753828194e29010908a212 *9708bc21be30501fbc001291c8c42a56d189442c22fe0fd534c5295af18b36c4a20b0515450b74 *b18b604c6308c5f844281a914a673ca31ae788403666518b99c01898e218473afad17d761c2319 *df08473ef6f18f88d45e20dbe8c62dbec990864ca4249bb8c83be2b1227adc23242139c94eaaae *928c6c641ef1b4c94d7a5292a0cc61051df9c85296f294744ca520eb35ca3bb9f296b004a32c67 *394856b6f296afcca51277e94218eea98c1900a63285794362f2b297b5b4a53297c9cc113a5395 *88426632a739cd6a6af09ad85c6534a5c9cd6e7a3381e07c263431b9a772baf39cfe4b6738c5c9 *4e3db9f39ef004a43c4349cb7ae6e99e00cd270ef7a9ce758eeb4f004da840a747d079d2f3a0ed *4ca842fe178abc863ab49f10b5a744374a51da59f4a21875d73f37cad18e8aeea32035a8484949 *d2965214a543642021bbd4d29a26119e30cda13145e9cf88dad4a5c2cc694c65eacb39fdf4a7b0 *14aa4e1fa54d0e1cf5a89d54ea52893a4e9f3ed5a67f94ea50a9da53ab5e15ab6ad4ea56cf35d3 *2f7df5ab5614eb1077aad24cc2e9ac675da25ac74ad6a29213ae686de65c8b39a9a67a00af7865 *e15e9dd8d7b29a15b08015e160e95ad7aa2214b188cde062095b58bbb214b28945e764a72a29bf *fe15b39805e06619dbd8ae020ab4a8b5df68295b59c79e16b5a935df6a59db59c36a12b6b1ddde *6c695b5bcb5e16b7b065e86e495bda8c1e0ab8c84dde709dfec8d66cdaf6b6c8c5edef96cbdbde *ba3650d1cdeeeca85b5da63e17bad905ee49b9bbd64c791604e14d2f79bbeb5ddf6a34bdc85d2f *71b96a5c44c137baf24d297d576aa8fbc637bf9d3a6f08fc8bdbfc5ab2b5a63d2e81519bdfe632 *4ac0e85d3068011ce0ef9a49c298a53001afdb5f0c2356c3e6b570993c0cd806434bc42326f159 *411c62f73e56c55795af838bcbdf44c138c6eb9df183519ce21bff54bea282b0087c7c54207f4a *c84326724d731c641ef758c91b5dafb59c0c5e280354ca4d763176ad2c51f2ea98c66edd3297af *cc5d522139c963be2779cd4ce527a7799adcfd329833f566779699cd5a16549de17ce729e759cc *7b76659c99d5fe6637071a927df633871d7568412f57cefb0d73871b8d68eaa2eacc24a0f4262d *7de9425f58d37ce434a1ffac6750c7f1d1faf3b4a14dbd5c5761ba04a63e63ab534dea52c71a89 *b3ee74ad011debe1beead5b0be75027ced6a557fbad7bb85b475138ca95b13bbd8bbb635a89f4d *eb454fcad9bbfd5bb4a54de96c6bdbdad766f56af966ec33217bb4e4de36b70f3dee74833bdc9a *4677ad807d02714f366fe546d3b4ef8d6f75af7bcffceef7bb2915efc5da2ddf696a74c005ceec *4fb17bb073433817010ef15ed1bb49149febaf2eeea437ef156e128f539a3fbef1908b9ccb1a07 *b9bf258572b1b6cde472b2b2cb5fbe7278fb78e6c3e2f81189ac55feb5c1fcae2a96eab2745e48 *180bdde7356fb6d1857ab69f8fd4c34a059fd39f2ee1a8373de99a827a4e3b87f5ac571da6d522 *3a4d17bc75ae0f1c576447a9e6baee2902ab7ded67d7d57ddf1ef6a94f3abb1fbd1cdb47a5de86 *824bece6c6bbdff51ef75f097e9f94dbfba9f08bf8c4175e58c01dfcdfeddea80237def10dd716 *6c2f8ff9fa9a8bc1f25c17e04f0ed9d08b9ef22c2f3d38e135fa987f78f58e533cad5eefccc5c9 *7ef678bd26bd5a0ff4a7eadef68faf165c6bbf7bd47bddf7bbcc17efdffbe3e4372ff8df2ab2f3 *9f9f797c353f95fd5afe8b492a4bc1dd1ef22ded7ef68dcf77ee833260dae7b59a2b6934f2932a *caec47bffbdf9fd0f8fecbfffbcaaa7f208736ffc5afdf8efc877fcbf27f62443cfd872a76c646 *40738008c84d00688002f82c0e58800b188112084c0ad830e9977aa5948115087d04e368ec757f *2018829b368224587d1a7382f395829e673295a65fed6781e062482d3883259830a1268338a882 *21736a05f5813ef8835d148442f88230538407a6810c6878b8e6311b282a4814334d282c4bd833 *55c8397912855ac8255cd8855af28560e83059388671228666b82665988674b2866c882668f886 *4d128772c8276e58876042877878027ab88725d0877e380280188821308884b82b777888b19288 *8a18268cd8886a488390a827863889195089967801989889c0f2889c6887ce92f88967e889a2c8 *87a4588a7f788aa82888aab88a85d88aae8888a1188b06038bb4b832b6788b1ab089a2c88b9fe8 *8b9c088c99288c96488c93882e47928ccab88cccd88ccef88cd02824e2c203ad4023d6788dd898 *8ddab88ddcd88d2c508d3a80251b6207a9308ee6788ee8988eeab88eecd88eeef88ef0188ff268 *2179908ee2688ff5388ffab88ffcd88ffef88f00298fe5688f4aa28e0319900899900ab9900cd9 *90707090e7788fe808910e599116799118799114398e63108d1ef991201992223992cea88bb432 *001100003b binary ./doc/images/Ortho.gif oldhex * newhex *47494638396168024801c20000ffffff000000dcdcdc808080b7b7b76e6e6eff0000ffff0021fe *15437265617465642077697468205468652047494d50002c00000000680248010003fe0801dcfe *30ca49abbd38ebcdbbff60018e50b10841aaae6cebbe702ccf746ddf78aeef7cefff2c0540402c *1a8fc8a472c96c3a9fd0a8744aad5aafd702768b340949e0b0784c2e9bcfa273e7c46dbbdff0b8 *7c3ed712eef8bc1ea0efe7f97e7e43025e6c748788898a8b8c475a8d4d4245032a4b019098999a *9b6d76059fa0a1a17ca2a5a0a4a6a58385839caeafb0b15176817d80b57fb87b4492452a034901 *c0b2c4c5c6709e150422cbcacc6913cd44ac93954a97c7d9dadb4e9ea9a2a8dfa7cbe2a7bc8644 *bf47c2d7d8be5c29dcf2f353c94ccdd24bf822f7fc840be8d4216147afa04158c928ec73468ae1 *b9564428c5f3e56ea0028ac1563899b8fed1dac18f9cece97b36e4858085e98c60cb474d658a61 *be60aeab88021e4d9038b58954827264c37e837a1991888d1293050a525c9c897120368e4fa0e6 *9c9a6867129426b14eacc412204401445d5a5a8ae266598f96cc66944ab5ad1cab48b4b6384932 *e53bba41d1511466d408840004f808a629359e49c31cd1a653ebb6f1969d1a896815db732ede69 *5e918405cb18050315649b96cdb8780a5bc7a8adc03d2297055e69d6b8fa13caf4661fc0820313 *de7df6d256c4a50b774e4dfc09648f9331f6ec5da42bedbd03fa16f91bb87ae8d1620ffb4e7cfa *74f1ef4d8e734c5ebab2ebcb029ebf63ebe20ee0f74cb3bbfb1d7c7e45efe0f32711ef8efcfee8 *e591a1d7925335b1a6076ed6f1261f706761c7a058fa45b8047fcdd505553c0022379b5ee944a7 *d8400458265a7d4dd1c71d8412a6e8087acc4966e17d97981799731ca6c45e0bee8518627c189d *e8e07623e2a7627e14baf8d38531d6b5d8781b7e85c23002b5631f8f2496f62376586639648aab *19d19a46722d296066037928240a219e37e2683e9a38a5955b0e59e46bfc2049e72096e5f31c41 *4bca44658128d267a5a00fc219a7845d5678a40b77da65178d4e1214e55a6b0a8725a1400e3adc *a1c4256a246c8c86d9a09ee84817d18754a869a7a00dee852aa7a979daa84ff9f0e4cf801dbac4 *27812af17aa5a6c0feb629ac8ec9faa56c3f01fe5a20a9ad985acd99c446cb8827baec53ed33d7 *ae42e6a9476c8685aa30feda6a6fd04a9b93b14ada9aacba0fddb5969fe6c6bb8837e53c53afbd *f56a2b94b3a7962befbf6e50ab0bb60393926dbb00272c8b166a648099508c4daaf0c401d3756f *38e5602c4e5e1adfebf1c720872cf2c824976cf2c928a7ac32caffa847f1cbf3a6d7f0050f3533 *f3cd38e7acf3ce3caba1052be4ac2cf4d044176df4d148275d727a0bd8dcf3d350472df5d466fc *ecd5320664adf5d65c77edb5d654872df6d86477c070d3d094adf6da6cb71d42cb687f2df7dc5c *bb6df7dd789771764379f7edf7df515b2d04d674173e37e08827fef7de4e2beef8e390672078dc *86fe57ee75e49867fe34e3696beef9e78bc34d8ae5a4770dfae9a88fc079eaacb73ef6e4a3972e *3bd8aed76e3b03abdfaefbee68884ef8ecb3f32ebce7b90f6ffcf11ac0fe3bf0c123efbcdfc53f *2ffdf4ca17c0fcf5d367cf76f4da77cf7bf5d787effdf852734ffef9a9831fbef8e8b73fb3f9ee *c71fb9faeb632ffffd61c08ffffed0fb6e7dfdebe39f0037a0bf011a706df403a0fd0ec8c01230 *8d6f0d8c60d912a8c0054af08005bca0067746c10a5a7083f8cb200847e833ff795081240ce103 *1b97c216961068ff3b21005dd83e11d2f0861ee8a00c3f8843eaadb0733d0c620e4db8c30a0ad1 *87420800108fc8c40be8b088ec6be2f0ce7689254af1fe8a0e648512a178422c7eef8184f0a218 *2330b92a72518663acdddec298c636c28e106744631bd307462bce91896f8c611c3d7847d0add1 *8e7d0c621ef758c44066ee8f86c4e22009b9c344420e918e6ce22219d9c848220e929614e22429 *29c74cf60d939ec4e12639d9c950ba0d94a674e12849d9c554b60d95ae24e12a59d9ca58920d96 *b6dce02c6959cb5c4e0d97be94e02e79c9c76096af8ec61ce1308959cc64f20c98ce34e0329969 *c468ea0c9ad6e4df34a959cd6c360c9bdebcdf36b9d9cd7092019ce674df38c989c2748e019dee *3cdf3ad9d9ce78aa0e99f6d4a6e8e0484f46e6f36d9200e43fc737cf7ed673a092c32742e35750 *831e74a1fe148027449fd75087ce70a211552846c957518b5e74a30f902848a7b84f3d7af4a428 *4d290ff5a6d1916aafa32a8da94c0d8a3391ba7477309da94e774acb9ab6f4a6d2cb294f874a54 *28e6cca640b59d508bcad4a606d0a7014dea4b4bead4aa5af58cd7fca9548fb7d4ab7af5ab5bcb *6a54b71a54aa82f5ac68251d07b54a56e17535ad701dea5ac7da56e4bd35ae788de933d95a57dd *dd35af80f5e85ee9da579252c3a4814dac537b86d4c27eeeaf8a8d2c3319cb57c7ba0eb292cd2c *29294b58cbfad5ac9a0dad4c375759cfd2f1b0a24dad4a49db59d3aa11b4aa8d6d3fa1d658d73e *12b6b2cd2d35695b5adb3e16b7ba0dee6679db5adf9e363388fe15ae72f718b8de1af790c05dae *740bd9dce23ed78fd19dae76cbc9d91308f4ba98c3ec76c76b805f3a17bc8f132f79b56b5eeba2 *17baa85daf7ca3485cefbef7b8019daf7e9b774cf7def7b6f1ddaf800d47b5dafe176fea1d706c *c366e003db2dc10a4e2d83cfebe0fe0538c218ce9ad81a5ce1ed6537c3fbdd30853b8ce0921e00 *c4187edd8849fc60139f18c50356b17f596c61e41ee0c530d6ef2d574c630f1ff6c638cef17a77 *3ce31e97f8c74016b27c896c5f233b2e8f400eb292a73b411e3b79c7484ef294d9cbe4217cf7ca *af747194b72c5db57118ccc7ccb296c92c5c335b19cd0516f398d9ac5b04be19ce69b671946f4c *e73abbb9c878aefeb29ae7dc6709db19d08156f1a0095d68cd7a18d1899ef0a2d7dc68c98619d2 *9136efa4295de9c45ebac9996ef1a639dde9bc7edacba1be1b94f7bce7527bfad46c4c7598474d *6a57a3f5947796b54f695d6b5b7bb5c598d6f55e79cd675fa715d8a016b6a0f5cc6a561bfbacaa *ceb5b25fc8ec66b7fad9bf4636aaa7bdec805abbd9d8be6a8983cded9badfadbd70e7753c79dec *72c799d8e956b75cd9bd6d774bbadae8eeb5bcf54aef58db5bd3f8ce77b1f7bdd3bc9df9dff993 *b3c0074ef0d11a5cda0807c3b917aeef863bf493108ff83de10d6e8ba7b47fe4d6f83b154e7129 *7bfce2180fb9c813cef18e9f1ce5296ff7cab3da7297bf9c9ea153f9fecc371ef0929bfce693cd *b9cc776e6e92fbfce740efa9d0eb4df4a31afde849df2de00edef4e43ddde7510ffad2fd5df5f7 *5d1deb5957fad6bfdc75897f1dec61a764e2a85e760b4cfce8f14e3b732f99f1b657e0ed7067b4 *dcb9a838b6db7d0278cf7bc5f7fe50900ffdef6208bce0914ef8c21b9ee9883fe7d9e1de78eaae *bdee91cf62cf17cff8caaff4f15ccf3ccb37cf79cf37f3f23a173de0279f77d37fb4ef986fa086 *c7a878ce77def596bb6dea35185631d6def6b8a72fea0f2f44d379f1f7c00ffee71fbefb087eed *f8ac17bcf29f3af5d80ff0f98a8cbeedb7cffdee7b9fe180a57bf31978b82b22fffbe84fbffabf *2ddab15fb170e6d7fefafee74fffc5cb16f4641f61e5a478fefafbffff0bd766fd967f1ba45678 *247f009880ffc765b8367edec349ca84800a3881e837640d487c07048120d47f14d881dd2760b0 *4680f7a381ba24811e78822517618f8681194848b2648228188336976255e6800fe88211587332 *b88383a7605d167a12e44f39487a3c58843d986132c6820624841b08834698809d3661367883a4 *037e04f6823af88400e86b713685dd233b56087f5848845a3881ead65f4ab884a513867493421c *5886f36771f50579bc578547d87b43e86d70d8812fc75a69787d76c886d837867ab8875b187583 *f5878058397ad7866ee8848698827237578ac83f5f537a974388de1589eb67fe7a4ee785d93337 *d237884d98859c986fc1075595883f85837672a3895e768adc377db45342a0283d8c1880575882 *a6288b82a87cb6b88af11388ec977bbc4886bee86cb4587e2c758bc8333bd6c65fc2048970b88c *fb2779ce683cd0588c0678416fc889d6583ad8288ce8b38dd1283b1af48dd5188ec09378d6f78c *e63883c61841ea6884ec583f66978dbc033cd71677f3c840f52883f7c85d66f38ec7638e5d7387 *75338dbde88103594a1ce077d3b38648f78b99e88dd478880f594905a98f076938bf6891b5988e *19497f1b39770464901319478fd8902679926a67751ef93c46d54201e97f3049824ea4925f787a *2d898c7c98933a995133b992affe679325a97e423994122091e5e87879b889ebb8944cd8943cd9 *9347f99385a88554395c647495da4390b0480886d8954c893b60198a59a99552b98766c9944ef9 *94d447433709856f19930d1097e7b396635900e0789778a997e4e3880c4098749994f507981028 *98e3f38a11e0983754970aa8989cc4988db99014607ca2849889499984649954585e19808791c9 *999de99967049a3de901b3b7992e6986a8999a69d976924981b1c945aa499ba68993b7b943b959 *76b5699bbd2943bfd975c1299cc35941c55975c7899cc9593fcbd974cd099bcf099db3099c6695 *8c22599d86139d44374abec89debe39d3bb74ba7289ed7439e33b74c7f899eb2a39efe2b374e6e *e99eef799dc6f9615e5386f4593af029721df584fb6939fda97142c583015a39031a715db58307 *5a38098a707f15830d3a370ffa6fe2e59013fa35156a6f10e69c19aa351bea6e109635d4f9a159 *13a2e536a25ba391266a0028ca6d2a9a90a769a22f3a6d317a8971d8a235aa6c372a379d38a10e *b0a3c2d6a374937efb699545899d17c64cdfc79d6e679fcc899fb4348bbd2993e4a87a19b5a4ec *b47d94f90142aa6b44ca3cf66796f978a5586a955a6a51ad9793e3488767eaa5526a50503790c1 *e8a66f5a90699a5292b88caa68a7779a92791a53ba887b89e8a77f9a50813a53a85879d565a687 *8a9689ba53e718762296a4f719a93c25fe8f7258838efaa861ca49fe788621f8a86f83a94db59d *8dc67c9d7aa89f4aa6ee47aa4364aa400a7b961aa5b2ea9ed055abd219a7e2895dbafa9dbc3a9c *acf3a5b2d6aa9ef85abf5a9ec17a975f94acebb9ac4bc95550baabb7ba9148b4aa7f6aac0de73d *c49a6ada1a6ee8d3ada1f6adb6263fe29a69e49aaafb73ae9196ae743640ec9a68eeca66f03aad *c05aad9358afce1a9fd09aaf0214af8136af538641f6aaacf84aa9d254b0cf7ab08848b0fbea9f *fd9a7500a9b0fccab04937b10f4ba0117bb1188bad772ab039d640008b67208b62f448b1106bb1 *7d28b228abb12aeb71d398b10abab12bcbb2320ba1340bb331ebb16f5ab23478b2376ba139febb *ad1819b41c3ab4044792462ba248bb6f4acbb367eab331f6b4860aab598a5c844ab54068b54ffa *b2f2d6844b9ba24d0bae2518b6303ab6cf1681666ba3686b6c6a0bb5582ab5f3f5826bcba36d5b *ae6f5bb55cfb955e9bb6740bb7aa27b71698b75bbbb7abd7b76efbb77a6bb8417ab751f888753b *a48e5b694819b9603ab985a64a2d3bb388eb6a9a6bb9c58ab9effab9802b7a82cb80905bba9977 *ba657698a0ebada24b66a5f9bae31abb033bbbaa1b79acab5c9b49bbe86abb4ad6bbb98b78bb1b *5c3d34b27056bc7e86bb8bcbb8908a5c0d007482b4b9387b588fb9a9c2dbbcce9b4715f0b5d3eb *bbed5a52a399b8c74bbd426bbd1c506a4784bcfe68c6bd23d067eb6bbe478bbe6170bb9a24bf4c *4bbf6400630708bef22abe33a382fd3bbc7fe7be39136203acbd8c6bc03c33b8f7ebbf010bc053 *d3ba095cb8ce1b52122c36c62b49f82bb6fa5b36aa157f104cb219dc368ec67f1d7cb61f7c37af *86c2239cbc25ec3778957d2fdcbe319c3860057d350c660c8c3956a5c3046c773dec3945e57b29 *ccb62b7c3a0507c40a6cb843dc3afc46c341ac9b496c3b8265c43b7c654fbc8f3887c553aca4d0 *1b96c49446eccbc3376c9478c9c4167cc17979c6588955647cc4765bc57b5993b427c7924bc7ee *d34b5edcc47bbbc5fbc3972efcc5971ac675888e7354c65aecc6cef78f771c504a13c9923cc994 *5ceac9962c348c7cc89019c75f4040426c36c875c9a23ccaa45ccaa68cc983532d7ac00caadcca *aefccab01ccbb23ccbb45ccbb67ccbb8fccaacaccb5e11919fbc06b7e0cabb9ccbc45cccc67ccc *c89cccca8ccbc3dcca4003cbcdbcccd23ccdd45ccdd67ccdd15c2da9accbc17ccddefccde01cce *e2bccaddaccacfcccde39cceeabcceec7ccbd9ac0bdb2ccce5dccef45ccff6acceef8c0be72ccf *f7dccffefccfd59ccfb5a000a75cd0067dd0086dd05703cdf30cd00efdd010cdcfb0fc194050d1 *167dd1189dd11abdd11cddd131f019091dd2223dd2249d326c3c021e9dd22abdd22cddd22ecdd2 *0900003b binary ./doc/images/Orto1.gif oldhex * newhex *47494638376134014801f20000000000ffffffdcdcdcffff00b7b7b76e6e6e808080ff00002c00 *000000340148010003fe08badcfe30ca49abbd38ebcdbbff60148c64699e68aaae6cebbe702ccf *746ddfc5ad9f851208c0a070482c1a8fc8a472c96c3a9fd0a8743a2d50afc41ee087ed7abfe0b0 *783cb612cee8b43aa06ea7d96e3757cb151816470079cfeffbff606605838485856c868984888a *89733e420b06450093809798999a7c822c04399f9ea0392ba140744392a996440aa958ae9bb2b3 *b44d9d48a1a647b939b8bd02a84277b140c4ad017ac5c9a90c4ac648cdb5d2d36502ba46bc3f10 *d6a35ccb02c9bac1c27876dfc7c83ee7e0cbcfcaef4deed4f3f44fb7bbddec0edc88dab178e220 *b55260e0ce90130008b05978ee99ab6d0f89958bb4ae9ec58b46eee95b96fe8d1d457ebaf6f13b *25702038226d122e54d8b0e5468ffa60466486b1a6cd211aa381ec65cc554765c4026e31a2c7dd *83330993d2fc2831d9bfa2edbec9bb49955ace891d7beaf9f91288d03a910a4e244a4064108750 *cf3a5d0bb3addbaa70a75d0d9a4feb4e6f0dbcfe1a77d692aa3c4d97aa6dfbf45de0c171134bd3 *5824eb83bb31637e5d45b112e057820bc3d33cf3a3e2cfb218a3acfbf8a754bd8f860631486eaa *93bcf00cb3055a792ce8db7d440fe1da381fbed475580f195611b7f1e35104c549336a399ae6ce *2717036c19b9f5ebb6b83532c468fba24fde1791548dbdbc792a5676ec18df3dbcfbf7f0e3cb9f *4fbfbefdfbf8f3ebdfcf9f10fe301fa1a827e080041668e0810826a8600956d011e082104628e1 *841456886083009262e1861c76e8e1870762b8c583209668e289287e28623f29b6e8e28b30eeb0 *228931d668e38d31cea8218e3cf6e8e3863afe28e490441a1864914826a9a40b472ee9e4934a36 *09e59454f2286595586699e2955a76e92590ff8db8e3976496b9209766a6a9a68c61b2b8e69b70 *d280669c74d669c29c76e619279e7af699269f7e06ea25a082165ae58a008c69e8a2598aa887a2 *8c460ae58ac0486a299594427ae9a64366cae9a7487a0aeaa83f8a4aeaa9379a8aeaaa2faacaea *ab27ba0aebac1eca4aebad15da8aebae10eacaebaf21b65929b0c42ae86bb1c8e2fe20aca6c936 *2be7b2ce46abc3b1d256ab02b5d666cb20b4da76bb02b6de5a0b6eb8d28e4baeb3e69e9b6cbaea *16cb6ebbc0be0b2faff2ce8b6bbdf6d28a6fbeb0eecb2fabfefe8b6ac002934a70c1a01e8c30a7 *0a2f7c69c30e4b0a71c48c4e4cb1a1165f2c68c61afbc971c77a7e0cb29d228f4c67c926c38972 *ca6baeccf29fdcbe3cabcb32934973cd83c68cf3aa37efdca8ce3e1b0c74d0090f4d34c3461ffd *70d24a4bcc74d3153f0d35c6524fbd71d5567b8c75d6216fcd35c95e7f7d72d862ab4c76d92d9f *8d36cca830bb36d86dbf4d75dc725f4d77dd5adf8d77d77aef0d37246efbad66cf82e7a876e187 *1e8ef894842fde62e38ea30879e426fe4e4e3988965f5eabe29a87ca79e744660eba85a28f4e61 *e9a64b887aeabd7eceba95aebf9e6aecb2d7b87aedc1f68dfba4b4efeee2edbe0f087cf0ea0d4f *fcb4bd1f5f79f2ca63ce7cf39beb0e7da7cf4f0fa6f4d6fb68fc9b071c70eef66a76df3db9e09b *29bef8e1964fe6f9e77babfe97eca3dfedfb5dc6dfbeb6f467693ffbf8577fe9fef1cb56fea804 *40fb89cb7f752aa0021708c05d0dd0470c8ca0041d88403a49f0820aa420f65885c10ef24f8380 *e3950747e83d100e2570a722a107e955410baa10832cdc20073138800174f0570ffc51076b78c3 *1886508434b4210c7d78c25f05918717c4610b5d28c11a223182f15a221319e844214251fe8932 *5cd5feaac8c52e7a717f58fc21ae0ae8c53272b18144fc010a49b540337e31832654e3ae22e8c6 *2a5ef15639c4d105eb684506de4b8a69f2601957a82f4096499066ece1cc0cb9be1d265291afca *638c46e8c6112e328b9ba2a41d0f704642028c915e42641fbbe7444f7e12939f0ae21647b9403c *82f2905464e5f99e084757a2928d2fbce31f6f99c25ca2318c452c962f3f482c490e6998e34396 *318584cc12baeb95706ae6baa0c93d644e93975a1c66b396c94c5f6e939ad5cce537b199cd5f06 *a096cf2427aacc59027646519deb24a60a02384e3122eb7e2fc0a732c159cd1a24f39af6cc9e90 *b8993d825acfa0d34328f414da3c862acfa1fec78328f1241a3c8afacea2bbc328ee345a3b8eca *cea3af0329eb449a3a929acea4a34329e854da39966acea5978329e5641a399a3acea68bc329e2 *745a389e0acea77e03eade848a37a2d6cda87243eadb94ba36a6a2cda96583aad8a4fa35aa72cd *aa59c3aad5b43a35ae42cdab4d03abd2c47a34b212cdac4143abcfd4ba33b6e2ccad3583abcce4 *fa32bab2ccae29c3abc9f43a32be82ccaf1d03acc6047b31c252ccb01143acc314bb30c622ccb1 *0583acc024fb2fcaf2cbb2f9c2acbd343b2fcec2cbb3ed02adba44fb3d7e0a944df03cedf252ab *5ae7b1b6b5d10b286c67f7dad95e4fb6b6355c6d737b3ad3f21606a4259f6f7fcba4e1129705c1 *f14d9f718f7bade5321705c9759f739f7ba7e9529704d19d9f75af1b80ecf66fb7dc35d276afeb *5d018e97bae53d2078c34ba0f456cbbde53aef73e11b2dfaa24bbeccb56f3d83c9ded5e2b6bf1c *d22f40f90b6015e1f7b802dee77a0b8cbc0533d806094ee77f1f3ca14cf5e7c218ceb08637cce1 *0e7b183f6d9ac11a193ce23b01283a6d00058a57cce216bbf8c5308eb18c674ce31adbf8c6cc81 *838b1df46215e3f8c7400eb290874ce422e3d8c72de6f18e756ce4263bf9c9508eb294cf806416 *2b39c94c9eb296b7cce52e77b9ca2bd6c287c74ce6329bf9cc68e6f01642c0e636bbf9cd708eb3 *9ce74ce709042001003b binary ./doc/images/Orto2.gif oldhex * newhex *47494638376134014801f20000000000ffffffdcdcdcffff00b7b7b76e6e6e808080ff00002c00 *000000340148010003fe28b0dcfe30ca49abbd38ebcdbbff60f82841699e68aaae6cebbe702ccf *746ddf785ee47c5a2c018170482c1a8fc8a472c96c3a9fd0a8744aad560bd6acf107086abfe0b0 *784c2e97b184b47acd0eb0df6b371ceee57a0506461260eefbff8081626805858687876e888b86 *8a8c8b7540440c0647009582999a9b9c7e842e043ba1a0a23b2da342764594ab98460bab5ab09d *b4b5b64f9f4aa3a849bb3bbabf02aa4479b342c6af017cc7cbab0d4cc84acfb7d4d56702bc48be *4111d8a55ecd0a42bcc3c47a78e1c9ca40e90acdd1ccf150f0d6f5f650b9bddfee23dbfccc7cc8 *497ab5c0409e2229001070c3305d3458dd201a3be7ec9ec58b4df2f16be6fe0f192c7f1b6709ec *8204a291370a192e74c872a33b802f5fc2a387b1e6458dd3bc29e216eee33e801c83958b35f341 *1a85482b4ee23371d92c89433cb6b349f51e4e8a1d7b06fce9729cd081ad8a4d9d4460c4d28a4d *e5419517b3aa5b8b578d653d0bd2ecc83b5131b1da93f6ecd9be4f99be733af6ade15a1a8f64ed *b7ef9c9ebbad965ee21b4b694cc084e3052e7cb8b3a6c4271b43d0c9aba7d74824871c3447735e *4ea99707cba6e8b97626d045406ae3aaf86b6a7447c4da1e4e7c0ca1396b4a2157a37c39e4637c *27179f4e5d0aa147881c616f146a7ba35460ab8b1faf054b8f1ee0bb74f7cebebdfbf7f0e3cb9f *4fbfbefdfbf8f3eb3f240c48fea803000628e080041618e0790826a8e0820c36e8e0832b6061c7 *7f065668a1801066a8e1861c76e8210b12fa57c085245ef8e18928a6a8e28a2884a8de8825c658 *208b34d668e38d37b8a8888c3c1288e38f400659a38e14f66824804226a9e4920d1209e3914732 *29e59454c6e02494581e50e5965c52796596507629e6983f7e09669864a6a9e687669e89e69a70 *c6b9609b6e4629e79d78e6d8df8b759e99e79f80b640679f76066a68a083125ae8a18cc699a8a2 *8b362aa9988f426ae4a4987659a9a59766ea29939b72dae3a7a40a19aaa8a396aaea907bee882a *a1abc69aa28e003cf96a9db2e6daa18b7cd87a2baeba06eba08ec2fc0aa9b0c82afe48acafc602 *9becb37aaac26cb3ce426b2d0ccb52cbe9b5dcba90adb6db762bee09df826be9b8e8966beeb9e8 *72abeebac7b66bedbbf0c62b2fb2f4d66befbdb9e6abafa2fceaeaefbf0007bceac004c36a70a9 *0827acf0c29936ecf0c310372af1c47d562ce9c51867acb1a11c775cedc778862cf2c824c369f2 *c928a74ce6ca2cbbe9b2caad161b33b833a709f3cd3cf7ec338619eefcf3d0444fbca1d04527ad *34ce1a22bdf4d350b3db74cdd3466df5d5b772e834d65c776da2d6547b2df6d87e822d2dd968a7 *1da3875babedb6d26c87fdf6dc6eb32937dd788f6df7d979f7cdf5896dfb2d38c180df3df8e145 *17ce37e28cfb8c62e08d47feeae386fe4b6eb9c3b3567ef9e6f566be38e7a09bab22e4a197cee3 *e89a9baebad4947fbefaeb057b2e49d5b0d7fea6ec24d16efbee32b2483aefabfb9e3af0c45b48 *e3efc5837efcf0c9378fe4f2ae3b2fbd96d0cf3efdf5d4579f3bf6d3dbb8ec00dc377fe3f7e087 *4ffcf8540f50bef9bbe348fefaecc3ee7efaeac31fbfeaf34b5bbffdf7875e26fdf5eb1ffef237 *bbfda94f80fefb9ffe0c8840e529b08006e45f031117a4f7ed6f8296ab2000198841c6996a831c *ece0e03eb8c0084a5084734b9205238842bfa910842c6c21de5e5842139e50867aa321046d7840 *1cd64d87b9e3e1057d88b625add086442ca2928e88c4247a0d5430e4a113bb06c51a0af1fe8653 *4c5c157778c51e66116a5262a210bff8b42989518a64845b18a378c53426cd8c6c1ca31b87e6a5 *38ca718e3daba315bb18403cdeac4a676ca31f6306483b0a72901ddb5220bb88c84416728f7cec *632313c6a5453272928453a421f988497d696a9397ece4ba3e09c9480e51944cd364294d294954 *1a8b52a0e4a42b9b05cb55b2d28bb344d5982cc9ca5c4eae965cbca5097d29aa97c5d294c4645d *258f19c964c60e984114e6219d59b65d321399d404939a7829cc6c6a5367d7c4a6372345ca604a *138de324e723cd79ce61a6134bd00c4201da49cf7adaf39ef874e1326d89cf7efaf39fdda4e03a *a309d0821af4a0ee8cdc40e589d0863ad49ffe0edc22411f4ad18acad2741265a84537cad15606 *6f89e1eca848a5593c206a74a428fda7f348c8ce94baf496dc0312375f4a538fc6147dfcac694d *1b88d396ea74a71d64554e7fda511c6aefa44475e9145734d3a41ad48db843aa532deac7d6f974 *aa05c5e4deae8ad57ca2326e43ed2a49896936ae8a35a0ce3c5a48cf1ac374066dad6cc562361f *d4d4b8cad5ad4d82eb54dfb9b639e9f5a77c4d5582ea9ad4c0c213418405aa61bfc983c4a674b1 *148b9659750a5965d2c0b11badac2e253b51a26af69535c02c423f9b4a2bfdf5a9a4d5d60c447b *d0d48a0e5ba745ad6ba905dbb01675b6aa15546c658b5bda4668b7bced2d687d00dce00af757c4 *feb5ad488f5bda00b0f6a1cc4de573a11b5dd54ed7a1d505d775b19bdd666d97bbddbdd5771b1a *de5f8d97bce545d579d19b5e4bad77b4ed756f71291a5f48bd97bdf575d37de19b5ffdcacdaeb8 *ec2f96de1557019fc95f673570961026560543e9627b75b0914c565809f3686780b5708c9c4653 *0d6f9879327aa9874944bac78eb842c83bc0724f6ca0140788a32c2e908b0594d9180b68c604a2 *af8d0384630381d7c63db6107f631ce40b1957c2e40271b3006ae1df46af5e10edef0b8a7ca47b *c677b54a86723db38b032a83a99dc73d8f97dd3456d2faf5c937832964e99ae5938913af6f45f3 *cf2e9a56b05acf6ad37425eae4acb42676d27b6d2efe5a42abfac0ed912d846404299fb1166022 *c271d13b7ede426d16691f5913d24da619a6059ca731bf136481eeeec6421de68891dab5aaf274 *2305766abe264bd55fbc16ac1d2dae59a3f05eb6c660c0723dc15db7facfbedef42c0dc66b012e *acd8fd3bf6af57ad6c618b1262c88e1fb4973dc88a45db7cd6a6361e3576ed9b4edbd9ccce36b8 *11f9b16e77afdcda4e23c9ccbdd275a73bd6ee1ef7b6e37de764ba8cddc9bbf7bb9d38337c9f4f *dff24e74bff74d6b80d77bd839f377fb124e7019e6ac040aafddc39ddbf0164e3ce2af9b38c503 *ceef8b573ca81ac7f8003dce711f6a1ce21feff5c9459ec095a71c81274779c92d1ef38d1f3cdc *2e9ff9fead6bcef2cdd55ce637aff6cf97650272ffdce6b953c11c8f8e7479ba208b4c6fba3064 *50f0a153cd063b673ad179c0d3a86f1d41d28ebad44dc1206f6bfdea196ab7d8bfbea17faf1ded *27b29dd8819e741a6174ee63ff11e7f09e77212994ef6c4fd2e1f8de772ae58df085e7d2db101f *f831e590f08d57d3df180ff73c8111f1890fd41b311f7943fd0cf399c7142141dff94c3992f395 *cfd5bf404f77a7436b94ac2fbdb068c9fad073eb97b14f7dbbf6457addf3ab6590f73dc46e977b *6969fc74b56ffdd46b4ea2e42b7f3fd08fbef4a74ffdea5bfffaf76955689ddf2eb2afd63fce79 *8328c24ffef29bfffce84fbffad7cffef6bbfffdf04f8e1c5ace3f21f48f3ffef8cfbffef7cfff *fefb3ffef7677ef5477ff3f77f0678800898800ab880691080e537800258800c38811458811668 *810e487e5c807d1cd8811ef881201882d5d7052250822678822898822ab8822cd882159000003b * binary ./doc/images/PointSize.gif oldhex * newhex *47494638376134014801f20000000000ffffffdcdcdcffff00b7b7b76e6e6e8080800000002c00 *000000340148010003fe08badcfe30ca49abbd38ebcdbbff60148c64699e68aaae6cebbe702ccf *746ddfc5ad9f851208c0a070482c1a8fc8a472c96c3a9fd0a8743a2d50afc41ee087ed7abfe0b0 *783cb612cee8b43aa06ea7d96e3757cb151816470079cfeffbff606605838485856c868984888a *89733e420b06450093809798999a7c822c04399f9ea0392ba140744392a996440aa954aeb07a9b *b4b5809d48a1a647ba39b9be02a84277b140c5ad01b302c7cb0d49cc480ec6cab6d5d65fb8bca3 *3f1002bd5cd4b3bbc2c37876d4c8c93ee8c5d04eb1eed7f2f357d946dfcdd2f8e678e390ad0a0c *dc19720200013608d9296b770c9e1e3c0c9a519ae56c5a3c7a1869d98b08fe645f383df8f299f3 *b7c5882b74ded41844785061108712a7598ce9d09ccc48147366dc596da34d8f38bd6d7bf91318 *b957d01e9c31c8345545863761c6b428f5264d943cb3fef1590c2851a188ea70047beadf2a6258 *23119016d4e9d7ab515146844a74acd6bb7eb82af32a33245b92755e5a529587eedbb67013c73b *b9f023dec797ec15f1a86f283f578057e1ac54f815e2a074a52e7ea8d32de4d37b2413a1eccc6f *a48e46cd9e1b825696c986a5a13e886b5324eadfd8c86a0bfb8bf8f0b225810c24521bb8f3e79c *84c649336a3a9aead6331b2bcc19baf7ef58043532c468fca24fe617210f0cbebdfb305676ec58 *8f3ebdfdfbf8f3ebdfcfbfbffeffff000628e0800416128c0f9f84a0e0820c36e8e08310462861 *0356d091e0841866a8e1861c76186185086ae1e188249668e2890f82b8c58528b6e8e28b30a2a8 *222231d668e38d388630238b39f6e8e38f3dee282290441669e488421ea9e4924c3a9864935046 *2965054f4e69e595525689e5965c12a96597608619e397629669269207ae38e4996cb63921996e *c629270870ce69e79d16d489e79e7c32a0679f80def967a084ba3968a188967968a28c72392300 *6b362a69982aea11e9a4986239639a9976aa699a3f5ceae9a84b6e2a2aa9a87a092aa7a9b65aa4 *a9aec6aa2a2aa7ca6aab8bb0deaa6b8db9eeea6b8bbdfe2a2c89c10e6bec86c51efeabac84c92e *eb6c83cd3e2b2d9dabd63aedb519448bedb61768cbedb712780beeb814564beeb913888beeb8ea *aefb6dbbee6e0b6fbcd7ce4bafb4f6deeb6cbefa2acb6fbfc6fe0bb0b0020fec6bc106eb8a70c2 *b62ecc70ac0edf3ac0c41457cc41c5180f406ac4b6666cf1061e53bcb1b9e7863cf1c5268f4c2b *ba266b0c72caa3722c6bcb2887ac3224d64a4bf3cb36c74c32b93b6b1074a732c73a340647635a *b4ab495bd0b4a44bb7fa340553331af5c344ff8c75bd5a6f8d6fd75eef0b76d8fe8e4d76c0669f *4d70da6a1fcc76db0abf0d77c372cf0d71dd7756dda6deafe26d27df67020ee4d5570a5ea6e13e *126e25e261329ea3e2533adea5e437fe422e25e55b62ceabdf736a5e38cc59722ea7e78b831ea5 *e551921eb9e950a20ea5ea97b3dea4eb76db497bed72de8ebba1a2ef9ea9eebe9f097cf08af64e *7ca3c31f0f66f2ca3b6a7cf385320ffd95d24f3f65f5d69ffe7cf67c62cf3d93de7faf64f8e21b *497ef9b3e28cbea7e7af9ff8f6eef3be72fc93b64f7fe5f0df6fa6fdfa8f997fff94fa1f00bbc4 *bf01024b8006fcd4fc0e27bb67c18e41057cd0034735410545d04115ec5406a9b540316d10531f *f4c0051b1442499590032364d00919b5420da470412d44540c31f04205cd905037cc13027d9443 *40f59002350cc10ff934c470ed3081d73b2212b5d7c125e229884ec41014a3c82c255271fe7c56 *bca2f9b2a8c5f49524675d5c1e17c3f8be26925178633c238ea6a8461da5b18d9b33231cc528c7 *393aaf8e7654a0faf2282636f2d1856ffce389fc58338f71ab88112024cf0cb92d44424091426b *a0b31cf900486680929d93a4892c89344d2a0b93e5c22396401927522e80931730e5de3c49ac40 *ba48956c82252a9dc64a63c9d2952d8265e06ae9a1590af291b8fc652f83294c0ef9b2987e2226 *323374cc65424a99ceaca228a3d9b769527370d0bca693b2a94d0872b39b16fc263839b8c7711e *a999cb442732d5594c760ad39dbf84a720e5f9477af2d19e79c4a71df539477ec2d19f6d04a81a *057a468276b2677bd2250ac5f923857ac8a1fe80b4269e20ca218ad290a13ce4a5992cda2d8cf6 *88a3190229953c9a23914ec8a4e922298e501a21962652a53772a90435fa2383a692a61ec46990 *606a23996250a78fe3a9397528d1a1faafa8467d914dbbb8542d36f58a4fa56254a33855275675 *89574562564b44399f9668ab24ea2a50f704d6118915a15943ea27c70a00afb652adc73a2b23d9 *27d44ca2f5a0734d6b39c725d78cddec8b2c63ab5bd104575b0a96ad82aaebe80e7b57a52936a9 *c02c2c64bffad8c98672af965d636533ab80b202d0b3fd03adfe447b3fd2d2cfb4f143adfb54bb *3ed6a2cfb5e583adf864fb3dda72cfb6d9c3adf5743b3dde42cfb7cd03aef2847b3ce212cfb8c1 *fe43aeef94bb3be6e2ceb9b583aedda43b37eac2cdba6dc3aedab47b36ee92cdbb6103afd7c4bb *35f262cdbc0f432fc3d49b30f61accbd03832fc0e4db2ffaeacbbef7c22fbdf41b2ffebacbbfeb *0230ba047c2e0293cbc0ecda2c67110c2e06bf4bc1997530b7242c2f085b96c2d8c230d724cb59 *635a78b21a9e5688bfc6e10e6b68c4cf42b1d84a6c62297e18b22a5e568ccbc6e2164b13b336c6 *d58b933ae363f5186d35ce718a766c545315e8c8484eb29297cce4263b1940a09a0129e443e52a *5bf9ca58ceb296b73c8229c7c042d9690328c24ce6329bf9cc684eb39ad7cce636bbf9cd70a60e *1cce0c663acf39ce78ceb39ef7cce73efb19ce63a6353382d01ce83f1bfad0884eb4a2177d8642 *97b9ce667634a3274de94a5bbad2920eb3169ecce94e7bfad3a00e3593b720e41e052001003b binary ./doc/images/PolyColor.gif oldhex * newhex *47494638376134014801f60000000000ffffffdcdcdc33ff33057ef23333cc9933cc6600662e84 *e0ff3333cc336666cc336633660066333399003366666666333366330033333366003333663399 *3333cc3366333366993300ff00330033cc66006600ff3300ffb7b7b76e6e6e8080800080803399 *664040406767673e3e3e7c7c7c2626267e7e7e41414100c000663300666600cc6633990033cc33 *00cc0033cc3333003366006666003399009999ff00000000336699000066cc3366cc0000ff99cc *0000cc0000cccccc000066000000990033cc000033ff00ff33ff003333cc990000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000002c00000000340148010007fe800200838485868788898a8b8c8d8e8f90919293 *949596979899870100019e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b21fb2b5a21f830102 *bbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcece1fcfd2bfb89dd3d7d8d9dadbdcddded11ee1 *e2e3e401e4e7e3e6e8e8ba02d5ed022084c200def6f7f8f9fadae01ffeff00019a0b48f0dfc082 *04dbbdeb45080430000ef7499c48b1e2bd7ea73cd0d29871232d531c772d643828222f88c106f9 *aae74ce535971663cabc2820a4308e3683e1a435cce6485ef2600a62f990d349a2bb0e1113fad0 *103da433a34a9586b1a7475d896a5e4dca7097cf5cbf82b29437ac13a75c5061325d0995edb1b5 *fe53e3ca2d56f5e6d6ac3bb1ba9cf7d5daaf86647b8902e0c19ce1b444d50a55a97868cac58921 *c39d4bb962dda130f33a3eaa75603ba59d45826d2ae8d739c2860b23e6ecb8f166967019474e5a *4ff1e4cab8f55d2ec44b33e4ce39797be5e96ef4dfcd240d8523cc9cad70d77b61d3fe3bbb75f5 *dbb9b3d30c3e6fb867e48e35d3ce4cfc27431062977a00cd9a24ebe8afdb42af7dbdadf6fbf676 *7707cef3b778d07dc17352440d95e55a7bedc1371e82d33528db7bf6e127213fa1d9f51d5e7745 *574f802b998499876e75e51e75c8d936a27bf39518e1842c5255a14e192af59f881c0205557a2d *45b89f8ad43df7db820cb628e4339701231e8cdf59fe289a5ff1d8872345d80d29a554fdac338e *47568a8365963596f6184a50ae38e59832f5835040079d6990466a1ab4a480954549e69c134563 *8b2d6fb2d9e69e7cf6e9e79f80062ae8a084166ae8a188260a50719d7074e7a390462ae9a49456 *6ae9a5a044f38ea39876eae9a7a0862a6aa59ae6c2e9a8a8a6aaeaaaac4e5a6aa31fb52aebacb4 *d6daeaab9ed9aaebaebcf66a0baea7fa2aecb0c4fa0a6cacc526abecb2a81ecbecb3d046eb2aa3 *b94a6bedb5d8a2e26cb6dc769bedb6de862baeb2e08e6beeb9ba968beebaeca6aa6ebbf0c67be9 *bbf2d66befafd4067befbefcb2426fbf00071ccabf0217dc2fc106275c2fc20a37cc2ec30e473c *2eae00fe202bf1c5e8be5a8fc518771c2eaeee782cb2b820733cf2c9d1968cf2cad6aaccf2cbcc *ba0cf3ccc4ca4cf3cdbcda8cf3ceb4eaccf3cfabfa0cf4d0a20a4df4d19d1a8df4d2942acdf4d3 *8f3a0df5d4b1484df5d5fe521b32d65ccfa2b5c95d87adedd76297bd8ad5669b8d76da62afcd76 *d76ebf8d75dc72534d77dd50df8d37d37aef8d74df7e130d78e0400f4e38cf861f8e73e28ad3cc *78e3303f0e39cb924f8e72e5968f8c79e61e6fce39c69e7f2e71e8a23b4c7ae90a9f8ebac1aaaf *2e70ebae030c7becfcce4efbbdb6dfbe30d9ba0f9d7beff0fe0efcc3bc0fbfb3f0c69f8b7cf213 *17cffccccb3fef6df493ee20bdbbce5bbb83f5d7179dbdb4fedb73dffda7d44b1abef8e3635a7e *a43b14b0c310e8a74feaf7d19ebfbdfcf3d20f6df8f0c38ffffc0b01dbb3ec17beff4d2b80dc6a *dffb14e83f03426a7d902260ffe2e7c0aae96f801d60e0021b5841af21305b04dcde043be841b0 *0890590a749ffbe0578021709084ad80e0a3b69741116e70813074850cefb4830caa50832e1c02 *0d7298b50f62ab86f69be00889988a1dda2285506c210b5d3844269ec289b5c820125778c3fe55 *d18aa4c0a22c7a18c514d2408868fc221807764166211189f0a3c102e5184735aed113628c4519 *5548033e0ab10067b4e31af3080b2d92918b5cf4621aeff80942bee2907beca324d328444606c0 *91ae30e41677fe40474ece31903410241131d98af675e0877c4ce52457794752b242936594a3fb *4229445a8652942474e52a3ae0c34802f297ab5ca41575a90a58f652969e94e32d9779cb61b671 *59a73ca52953d93e490213907f0c241389990a58a2128aa10424339939ca672a8b97d1fce635ad *c94e5b863287dc44853163a9c071da1397f28be729d299cef6154095eb0466389bd9417d9a029d *90546735c529c97bbeb382062d053a0bc04f80b233a0f684a83993a5455e2634960d75e8321d18 *515254349dfff42746313ad087e2afa4a340282f156a518632f49eff83a928267ad27faef4a2ed *24673e375aac0e68009d3798e90d54b8d4f62db58f320867544339fe551a5475aa4335e2b53a60 *809efef394ffec63587f2ad090a64fa7a140e7514fb954b632f59732802b5ca57acbabba547a68 *05054f29ca57b0fa74ac40fde938bb97d74f18f5b047d5400196aad8a53ab600718d2c64ad3ad9 *a85ad6aa98b5ecf50aeb09ae46b3ab7cfdea5f7d2a56b206550734c8013e6fc7d90020d6a80550 *6c6363bb58c8da56b2b8ad6c65339bd9e7b5169da0ade868471bd8e23254b5aa65de6f138b58da *ce76b6b9c52d652f4b5dabe640b3c6fb6d57b7fb59d10ef7afa535ae2451ab5af2ae1675cb6dae *6c9d5b5b0adcf6bdd1d56d756570ddeb0eefb71cd00068f57b4ac5fed3bdfff529806d0b55b916 *18aae4a56f6a6500bcfed6e6f7b5eb8d707be14b61cbeed6b2d7b52e7d19acbbd6f2d7001fd6ef *3f455c80019bd8a771fd675c0f0c59d4ea400609d6410e7230830e139558f97db08425ecdeb8f6 *b8c2159eae86eb4bdf1ad3cec3f905b192656b00f73ab9c4507ef293e38bdb175b79c334a6f191 *6f3c2c1deb98bd3cb6ed8fa92c5f0d0f19cb465e9d8797cc660a28d9c94d8eb29cdd9b02dbd6b9 *ca30ceb3956740631df039cda573b00672acdf1dd356ca62063295adfa622267f9cf6ae6b2b006 *5d6836eb17ce88ce3494ef5ce12b7bfacf8f46afa47d95df03505a0385a6806c551d5b0a38d9d5 *9085b50c5210595a43d6d632c8f58b737ddd196c78067f0676a047dd2bfdfe1ec0d24d7e73b231 *3de702d4f9d9766eb19ef53c033ffb99c60880f4e75a6bea52179a01a95ef5abc77deb1ee3fadc *b5ceb3af5f0c6c1ab71bd8809e1cb7935ce94abbf9de258eb3a6e9ecec7ee3d9d330aeb6c0694c *8019149c73dcd680a917ae0170abdae11a50b5ab274e710ad03a05169fb5c62faef107e45a061e *f7b5c8e14d72615b8edb0638b6b1957de9652f3bdf4f86b6cc5b9c02805b5be07ece36b60d1eef *c3259ce1e00e7ac3875ef18a63fce8b3ce38c7970ef2a6877c060f2839b0433003aacb9bd8bc3a *80a9530e6e10779d020cb877d89becea2663bcc4674f81da9dbd76b5e7d9e32f863bd4051ef56c *53bde0566fdccf15ce77a143fedce1459ff8d195ee76a67b9cd6216fbad4494ef5bcfb1cebbb3a *f6011820f9ae33e0eb6307bbd8ef8d7103a8fdd96d57bb0e520077d2073cea7eaefbdced3e03d6 *2b8edb5aeffbd0fdde70cd177df0b89f75e137ee74a7cf1dd8519f7ad587ef78bfc17ef2936f78 *f2c3ce7ccd373fec1887bec53f4f7dea3fc0f41ecffedca3aefa6cb33e04e00f01e1f60ef4d99b *dfd561bfbdc5d7ff79dd73fcf0bd7f7af04bde78e2f7fc6d28473ed78f7d79fd5e7ef34d967963 *f7799e177a35477a0708770f807aabd780de377c08107ec60779baa2750bb77ce61774ce677bec *d781475778bb977dbec77dbfd77af6577fe0b737c747792cb87cfff77c1bd87cd1fe577d34787d *36887ddbe78026e87de1d78378c36d2e6081b2477b1ac80027807e4768712770744ba87623f079 *12a0760f1085202701d9678550d700c0a78555d7008de7855d988272c36d2d58869737792ff882 *31087629c0006df8796e28850878830bc87d0b6882ddb783ad177e1128866c737c41b87c185884 *27c07c8508764ba8844cf8794fa87651487a565885dcd7009358776088006018025ed883e2f787 *14682b165886c87779cca78630f87c70488373b88a7598830ff88a2110817dc8899ea855d67200 *41988bb84884b35788be688414e08b29b0844bf884c69802c63885c83885cc688594f88c0fa085 *0d80899a588d5eb8893ea8369f582bfe07a000a3388a67488ae20876a6c8866e788e6fa87624c0 *8aa45787ad880077f88a3b188bf4087e22100235d0896db38db4628181c8002ec082ca47888658 *9088b8884ec888526885905889596889de7789d8c8897e0837fc382b16e88da2288ea4488ea7e8 *7c6f1887e9c88e36e88ef1a8873c288bf4388bf9988ffb688bd2828b32998b00599319f88b3869 *84c3a893c7d8930f908c563802cc088d44498dd3788dd5489112689130192dddf8941a89862cc8 *911ce991e6189258b98ed7a795ed68920f008f75f79528b992f4788ff96896fa78354038933519 *906e197417608472999374898c76e993422994561801d1d897cf8889807994d4588f9cd8fe9269 *3935dc06032ea0918b3979017979710999a4588897778872d98623708e99e9845a2994a427940b *c897a1098f80d97ad348962a1981686998737391b2a29833b98b6ff9960d4797733997c8c8003d *b98cc99897ccc89744198d81699483a994f8789c6ae99aadd2980ac09c8b79798fc90091299da4 *389d94a99b9aa999eb480223d09924109a75180160299e5f398de5999a651902f7889622500335 *100476a39cac828bb0399b6d5993715988f9799bb69999bbe99bbe099c0f20a08259a08049982c *799cac9937f2b92a2ea098cd19a16ea9007159a1d469a1fbb99ffe899d1bda9d79c99d3f39a022 *ca97e259a208209ea7899e2ab99eeaa9a041fef09e0cda94d0529ff5799ff6b99fb6f98bfe999b *bdc99b212a94024aa0c359a0e0378b3d68982d099f7cd3a0aab2984e2aa1141aa1187aa1546aa1 *9919971dca9d5aeaa12440a25d3aa0270aa6268aa2278a9e2c7aa62f1a042290a64b2aa3cfa298 *f5d99c368a9f54aa9ffc799b1daa9b3e1aa023da97646aa0294a96f6a8a0840aa37fc3a4a9f2a0 *4fbaa8142a9d8d3aa5536aa779ea9f5b0aa2dd49a2235aa6635aa6a8999e67aa9e69fa9e862a38 *888a2a70aaa82ee0a417e096ab0a901750a1af6a8417e08bb32aabfe7901fe39021eaaab3f1901 *791901240aacd108ac9818014769acc58aa0e1978f41709c4190a6cf7a34adc5a84f7a01521aa5 *fe905aa5547aa5ba59a95c1a015dfaa511000224aaa9e62a9eb188ae9fba9e6adaaeefb9a6a3fa *33ad75aa10ea02abda9cad6aafb0baafb29a9fb57a02b8aa9b013b02b8ca9dbedaabc19ab0c58a *a2c8da0011408f0f1b810f7b8fcd4ab1ce0aad4a2aafa53a2a3050af50ba98d61ab28e9aad53ca *ad59caa5df3aa0e27aae2c8bae2bdaa268baa6f01aaa197b3c1b2b2af4aaa83160af2eb0b3abfa *b3af1ab4423bab440bb0047bb4b88aab10a0ab23b0b4befab4c01ab5526bac51ebb056fbb0581b *020f0b7e151002cdfab5cf1ab662abb16eca2c30a00067cba8d60ab2d88aadda4ab2dd7a01de1a *aee05ab7e43aa0e4dab2e6aa9e11b0aeed2ab3ee1afe044610043e50b38e73b3a192b33bbbb83c *ebb343fbb8410bb0af6ab4498bb44d7bb94e3bb59a5bb59cabb59e9bb55d1bba5e1b025d2bb6a6 *6bb89183b8a0d2b18b99b6501ab26d5ba18ffab6d469b2737ba9748bb79bbabb7bbbaea00ab880 *fb9e855bb88ba3ba9f92b38ac9b83edbb3fa0ab98f4bb996abb447ebb497bbb9d6ebb0c0eab09f *bbbda54bba5e7bba61ab02617b33f38ab6e6ebba6b1bbbea0bb7184a0272db9def4bb7744bae5d *9ab7e3cabb252a027dcbb7ec0abc7f2bb8840bc0c40b3dc6eb291d7baacacbbc8e1b03ceebbc92 *5bb995bbb412dcb4110001d67bbd51bbbd0f2bba1cfcbd1500bee22bbe045cb6cb72c068bbb327 *0cb20cfe4ca12b7c012dfcaa141aab412b9d325cb017b0b4dc89c3155cb7164caec0eac3254aac *517ba2c0aabf5d7b8f471c041fbca64bacc4002cbe852bc22f33af8a8ac00a7cc5afcac00dfcb8 *d17bb9d23bc1c06ac117acb9d89bb5a0ebbda5ebc4a72bbecf1ac2a82b32e50b033170b6727cb6 *3180c22e1cb22dbcc7215bc3fbeabe1020b737dc9d1060c15ddac33b4cae2870bf3f3cc4516bc4 *7d1b01475c014d5cc9006c014f2cb82ab0c99453c09d72c00f2ac757acbc799cc55bccc5413bbd *984bc116dcca63acb95a0bac9edbc11cacc6b6ecc621ac022b33af1d3bc7be2cca77ccc0c29cc7 *c33ccca6bcc5812cc183eccaaebcc8ce1cb58b3cc61520c9fed41cba4efcc1d8ecc498bccd4190 *cb9c7c32540ccac93bca0a5ccae67ccaafaaca5f8cb93b1cc6af3cb5b17cc6b5fcc1cf4acfdd1c *bef79ccbe0ecc99852c7bfeccb772cc7774ccc045dcc04fdb8c97cc30a5dc8ad5cc811b0c816fc *cc120dcd513bcd165dcd94acc4199dcddcdcd19bac0216f0d19ac3cf9772c007bcb8c05cce067d *cce89cceaf3ac112bcc3ccfcd0ef2cb5b14ccb687ccdb68cc9b8fcd1dfdc31bceccf421dcc2e3c *d0067dd441abc5439bd0c9dcb40eddcc343dd1c01acd537bd156bdd13afdc11d1d04dbecd3220d *d4246d2930f003070c04bd0c048b8bd63d8bd62ebc02c2bc02590cd7af2ad71740d7720d0125a0 *b42520c17b5dfec113d0ca1330d5810dac831d01855dd8378dc6a49bd5618bc96d9ccfddecd560 *4dc2ca02030930d4020dd0c16cd405ddd9c6bcd0a0cdd0a2fdd00e3dd1a61db51850cd184dc9ac *add15acdd5b0ddd5211dd29b4cdbba7c31414dd672fc03be8cd672ccd631e0d66dfdd6711db476 *6ddc2fbdd737dcd710f0d77e1dd113e0cc871db5d32dc9a46bddf3ccd83c0ddb5e2dd9a313d695 *72c097fdcf99bdd9458dd448cdd24cbdd04f5dda51fddecf3cd515adda16cddaadcdd1b11ddb20 *bddf9bdc032ae0dfdf4dd9c932d6044ed6bc8dd6071e03688dd66edde0c1fde070dde0753de111 *5ed71010e1789de17bfdd71cdedccd8d02811ddd216ed8243ee221fe1eba1360cdd98cdfcfbadd *dedcddb7dd30f37ad934eecf01bdd938ced9e84dd02d10da372cda0c8d02a50d01a73dd1a93dcd *472ec9f6bde45a5d015b3ddbfb0de5b5fddf319e30f36ae0631d03bcbde55aaee031f002101ee6 *0e1ee1c14de166be02179ee67bcd021edee1220ee2702ee2253ee7295ee728aee2da9ddf53dedd *fe0de0a903de94020345f003e34de8bb1dcc607ec789fee0772cdc0f3edc905ed73d9ee6378ce6 *85cce6851cdd441edd0fcde970dee9d13c01479ee2929ce294ec00ac8dea19fde45c1de5aedee7 *54fee7025e2c055ee05d9ee0093ee6620ee1755de6158ee6180eec19eee66d1ee7206ed8c76ee2 *255e01764ebaa89ee7feaf2dbe3c0de3fd1debac03e89362e809a0ed847ec7bcade8881eee8dfe *d6e4ded63dde022b30e9960e0198ceee42eeee9b2ee49f3eefa21e011850efcc8e01a79eeaa96e *014eced5ff0ee502ffeafbede7af83ed9232d6839ee55cdef05ffee060aeeb12dfebbf6ee1c28e *e66cfed719ffe16fdef1714ee7cc1ef2cd5e01cfbee2f92ddb1f6ddbb00eeb05d35a3f30e8db1e *f35b9e00605ef30f6ff311fff0122fe6e87ee13d8ff1ec1ef42c8002431fdd456fec1e2fea757e *ef218fea4e4ff250ef001620f527efea031fd27dde035a7ff0b34e2c0b8fe50ecfe5689df33b3f *f1120eec169fe6404fec49fff1726ee222dff4d85cf2b0fddadcbce75ebdfef2d67e30081f2984 *fef7324ff3318ff3375ff8365ff6e89ef8e99eee6cdef8eedef8441ff9476f02487fef96aff418 *e0f4991ff5243ff59e4ff5162004576ff5050fd25adf03b2d3f79032e85fbfedb7fefa84efd664 *bfeb67efeb6a9fe68ebff147dff6496fd8716fe7295ef274ffe4a43fe57a9ff57cdff5c3f2f280 *dffc34ffe5cf4ff8b1aff3b4aff83fdf02b9fff8920fe794cffb97cff4a2fef4e2dff9525ffe28 *3ffa027ffaea5f3baaff28836e03ccff035bfe02f33fff11ff02f7dfe02fa0fffc1fdc2bb0f880 *b0b202b1c23258c802c1b20831c13281326102294939193941995931e130c1e9e050112a1a146a *611a842aa41a24a462a1221bfe2bdba3628b7b7bdb13d0ebfb0b1c2c3c4c5c6c7c8cdcfb21f001 *0010c09c2c3d4d8dfc93709d8d9df0b2ddfd1df3123e2e5e4e1eb3828edeb2c2eedeced2129fc8 *82426f8f5f5f6f1289c23f8101a0c080181c142c380aa1030b0b1b32b42024164489b02a5294d8 *23a3858cbcaa79fc0812d9b266cfa2853c8912988d1f457eacc4f6225bcc183f5e94b3190ee70a *9d2fd2edf4d9139d20768608315a446f512413f52a2db50435a027509f3a892255c1d44257ad5e *c5f2aa02acad58b938724c8936ad4866cea07d500bb79a8d96dbb45dfbc62d5c5e737cc7a513e7 *735dbbc1eee8c953942ff13f7ffd28111c08f0aac251a31e3a5c18d1a2e68b3d36fe6e349b31ae *68b823db9a1c8d7ad8cad52e65d67c1dd3a66c9b3b69f7bcfd1377cf0d8256f036041ca9f04593 *8a57328e3cd3041c9d9a937a4e8a552856d45d85bdfe4ad6abb2ba40774c0dbe5ae9926fc39b0f *6023417abbdcbcb5c7db37fe39c2f4e5d99f77585fe27d8cff6130f11841060d78d0550b5cf650 *440a4a94d945167506614603f440c477e75d38cc786e6108de4a2dbd64574c30dd44624e80f104 *548a440d76548bfa30b554539738554940cc49555528a3e848ca2a5b810564456255e49d591c1e *f98b86a72109d75cd7ac57d77b5296b3d7397dfd25d83b85dda7883cfbf5c71824fe4126608109 *5d65599a0b36b8192c107a16218572fe3279a492e5d1a9166bac45095b4db3fd799b6db90dcadb *6e85f886c8704831c5e8718e26c79c279142f79c10d1b9e20075d86dbadd756515191a9ee7d929 *6a9eea9d0a6537774d39a595aebed002acf5e147eb7d5ff283ab3fff1104606405feeac0810c09 *8bd9446b32e8209c704e5821b316963a1aa9d0a6a4277b217e0368b6b6098a1b6fde22b281a22c *303a6eb9c59990dc24ccadbb5cbb94569a69a6ae08f14abd9cde9b91104566d003bfd3a226edbf *21d940f0a94fba07df94367183936c26e6d4ce0bbcb133310be1ca7371b9f2c0882eaee8fa33c9 *7f37b65b100e039a5c5028075aca10cbf42a482f44416ea42fcd10ea3b21bf15fa2b3069fe6c91 *d7f3c0aded69ed88dafe599b6e3f158ae8b78b84ab28b9523fea28bb939a4ca9a5d3c54b1dbdf7 *dadbe976a0f64b76d069056c3635e9ad8d6a026eaf9a70dc0c97285bac1bc02a313c19ef3d4fc6 *1c7fdcb1c8009a70230e283b70b8c907f2106cbc0bbc2c33cc30c3e2b5cd364f8839d90364c079 *da28a1ed79320413cd27c20b1f9d6dd24b37ed9bc548416d6eec8ca22b09edeab66bf57288bf6b *69ef997afdf2d79cf6a06fbe1cf18b7cd9a17f04faf2c68cde36946ecb1df7e9a8dfed6ddee16e *ef3af7e132b541c7e28b8f03e1cb996f72fabbabcfb8a5edfffe72fcf2d74b7cfdfadedf43e639 *f7cb7906ce8bf7b30dfd0f19ab21586b4aa7fe0d6ca16e36aa3394a1bec5bda72d4a76e6b25dd5 *70a73baced6e6b5bf35df03e283cb1150f34c9439eff06988ce6a130186c6ba1db4e353d56516f *6eb3c19ec46eb8811c766f87deebdef8d055be20128e7086435c11d9e700c62931892fe3c1fc9e *582f7ad92f7f54d45fff36d7b9151a43855aeca217bf78b6002e098c642ca3195328c63b9d718d *6c642317db08c738feef8d72aca31dff45c73bea718f1cca231fff0848d1f83190842c24480669 *c8442a728b695ca4231f290d44427292869424252ff9474b62729376d424273fd9464f82729465 *1425294fd94553a27295736c242b5f194a57c27296a594252d6f994a5be27297ad2489007909cc *fee5a93298c40ccf308b894c41ea3299cc64d2319b09cd903c339ad4a4c634ab89cd635c339bdc *14c636bb094e652c339ce4f4c837cb99cd73a2b39aea5c6734dbe9ce66c2339ec99c273d8b69cf *7b06339ffae4253ffb89cb7f029496021d282c0b6a50562234a1a85c284349e9d0878232a212e5 *24452b8ac98b6294921add28243bea51478234a48a1c29492b39ce9362d3a42a0d244b5b9ac994 *c2149a2f9da91e6b6ad34eca34a7c8c4294fe3e8d39fc6d29763146a3d776a547f2235a9015d2a *5309ead4a71e34aa52552855abdad0ab6215a25addea44bbea558b8235ac191d2b59396ad6b37e *348d1f68ab5bdf0ad7b8ca75ae74adab5def8ad7bcabea75af7cedab5fff0ad8c00a76b01a128f *5aefa8c648b6c5038c6dac631fdbd8b74076b294adac652f8bd9cc6a76b39cedac673f0bdad08a *76b4910d80677d795ad39276b5ac6dad6b5f0bdbd8caf6b292ed2c6a6dabdad9ea76b7bcedad6f *7f6bd9da72f6b6c3cd2d708f8bdce42a77b99015ee664942d8e84a77bad4adae75af8bddecdaf5 *19cee8ae77bf0bdef08a77bce42daf79cf8bdef4aa77bdec6daf7bdf0bdff8ca37bc010804003b * binary ./doc/images/Pong.gif oldhex * newhex *4749463837619801e400f30000000000ffffffdcdcdcc7c7c7585858b7b7b78585856e6e6e4242 *428080800000000000000000000000000000000000002c000000009801e4000004fe308049abbd *38ebcdbbff60288e64699e68aaae6c2b0d702ccf746ddf78aeef7cefffc0a070482c1a8f481822 *c06c3a9fd0a8740a3d4c0686ac76cbed7abfe0b0784c2e9bcfe8b47acd6ebbdff0b80121a8dbef *f8bc7ecfcf5b01587282838485868788898a8a74058e8f90910191949093959501757f81060914 *60008b6a81a559a606a8aaa7aca9adabaeb1b0b3afb5b2b6b4b7bab9bcb8bebbbfbdc0c3c2c5c1 *c773020507cccdcece93cfd2cdd1d3d29a029c5b14095e00dda3690459e306e5e7e4e9e6eae8eb *eeedf0ecf2eff3f1f4f7f6f9f5fbf8fcfafd00ff09f4473060c181eb1a1da012ad2195650ea740 *dc74850b378be0ba4cb018aea3c78ffe20438a8ca310db1e8813f9a05cd827a5b62d9f366a91e9 *4dc24c51db2c8cdcc9b3a7cf9f694ab65c38318332a22c0500b8b3f428b697304179c2f9050013 *0a3673de1c648c18b2ae60bf8af54a366cd9b166d3a25d4b56a84aa49a8cae8c3ba10e05a71401 *799b90e0131728000a4c1a4c350bcdc3340d6c94aab8421784900f4a36483972e5c9963363de7c *b9b366cfc9522abd5b67ee68a64b4d8fae503a29548ba20a67a11478b060d9880dc7a60a4aa66f *d940830b1f4e1c8cdbd54d9d164d7e5a35723b2e2b7a6bacf182a3c0d8613ba6aebb3bf7dfc5c3 *8b1feff338ebd60d4fdba9ebfc3cde6cd231c6046eb1c005d8d5b77ec7097e8bdab300fefe2720 *5b030648e081062658202ae691a61c4b75ad971a5c7659805e5e9dcc04ce45a1e4a6157edef5d7 *df169f95c89989a0a588e28a27b6a8a28b9a1da78769725148da5dd1e9b54d468d7dd321471fe2 *e721788c9167e491481622631e3462f02036cc359563867e4595581a57de54d8888bd197e49760 *8629c69278383723856f3d155f955ccce7d3950b2218a78272d649e79d73e669a742984082549f *8ffc09e8943375e86348fc65c9e28b8c2eea288c90361ae9a39226749435cf54832935cb6c4a0d *86476e27e6a8a4969a0c43a8a68a2a869eb6eaeaabb0c62aebacb4d66aebadb8e6aaebaebcf6ea *2baef001c24c0bc4166becb1c826abecb2ccfe36cbec01c10e30acb3d4566bedb5d866abedb61d *40cbc9b4dc862beeb8e4966b6eb5de5e01eeb9ecb6ebeebbf0929baeb07fc46befbdf8e6abaf08 *f34a5befbe00072cf0c0f246bb2ec10827acf0c22bf47b30c310472cf1c40eff3bf1c51867ac6f *c51a77ecf1c7e6720cf2c82497fcacc1169bacf2ca2cf38b72cb30c72cf30522cf6cf3cd25d78c *f3ce3c5fac73cf40074df0cf42176db4bd441fadf4d2057f9b32d350477d6dd252576d35b2545f *adf5d628f40bc0d35c872d3608f32e05f6d868a76dc1bc9a9cadf6db63b31d2cdc74ab2db7db75 *e72df5dd7af7cd35df7e075e35e08217be34e186272e34e28a37be33e38e472e33e49257be32e5 *fe96673e32e69a77ae31e79e872e31e8a297ae30e9a6a72e30eaaab79e2febaec70e2fecb2d77e *2eedb6e72e2eeebaf79e2defbe074f2df0c217af2cf1c6275f2cf2ca37af02f3ce475f02f4d257 *4f76b06d5baf3dd6d8cfbdfdf70d778f37f8e47f407df9e49f8ffef7eaafaf7dfbee570f7ffcd1 *cf4fbfb64f886dfffdd74611f6fefca3d614fe26be00066c805b03a001998540ad297081cb9202 *01ff903d08ee2b7fff2ba0050df8c00dcaae831e741d0843a8ba1192d074263ca1e852a842cfb1 *b0859a7b210c2d27c3194aae8636741c0e73a8b81df2d0703efca1e0822844bf11b1887a3b2212 *eba6c425c2ad894eb49b06a3d83c2852316e53bca2fef1aca8c5094ea0825d2c1e17c378b53192 *7170593ca3eecca846a8b1b18d874b231c3f28c7398ab08e762c211ef388c23df271857efca30b *0329c81812b290343c24226fa8c845eab0918eec21242309c44952728896bca41133a9c92472b2 *934cfc24289f28ca514a9182de3365e4dea84a95b1b295392b252c3388caf1cd326fafbce5c772 *a9cb8ef1b29719fb25307d26cb61eead98c67423329319c75a323370c27ce6c2a229cd8451b39a *435b26368376cd6d06ac9bdedc1738c3f93a6d921367e33c27d2cca9ce99a5b39def7a273cdb25 *cf79de8e9df664593df3d9b42fa6929fc7742640cb88cf81926c9f06dd164213fabb8232d4630b *7da8b5fe222ad1e139b4a218a328464f26d08d1a4da31e4d1648437aac91927479173de93453aa *526bb2b4a5d9ec284cd1f9d2997eb3a63615274e735a4e99f2346626fde9f4762ad47805b5a82e *f329525d49d4a5d2b3a94ebda752a3ba39a852b59f56f9e7557769d5ad86eba85ecd0058c34ab3 *ae92b5a1533d2b31d3aad6d199b5ade87a2b5c9d3556b8d6b5ad9ca3c25cb7a557b1eeb1af7bc5 *1660cbcad6c106b65a86ad405e1b7858c432766d7f7d6c639b95580a2c568293752c66317059ff *65568092b56c6437fb59068676029d054c69297bdaaf8dd6b3ab8d606b538bc1d82aabb2a87dad *6a6d9b2cdcbab6b0ade5ed0a7c4b5b2708b7b7b3d56d6d8fd55b2ce22ad7b8cc359673814bdae8 *b260bafe3c9b6fad6b02ec6655bbc1e52e09bc0bc60b6c57bc23206f367ec5def6baf7bdf08daf *7ce74bdffac60a7baa72c242f2cbdffefaf7bf000eb080074ce0021bf8c0084eb082f5fb5f0a0e *aa1249e98384274ce10a5bf8c218ceb08637cce10e7bf8c3200eb188479c8d4b3cd84f5f3c7124 *224ce216bbf8c5308eb18c674ce31a8798282a0e548a73ec0816dbf8c7400eb290874ce4226f18 *c73c76308f4563e4263bf9c9508eb294258ce41cffc1be58ceb296b7cce52e7bf9cb5690007a05 *16800800003b binary ./doc/images/RenderCube.gif oldhex * newhex *47494638376134014801f30000000000ffffffdcdcdcc7c7c7585858b7b7b78585856e6e6e4242 *428080800000000000000000000000000000000000002c00000000340148010004fe308049abbd *38ebcdbbff60288e64699e687a4943ebbe702ccf746ddf78aeef7cefffc02022402c1a8fc8a472 *893c4c0686a8744aad5aafd8ac76cbed7abfe0b0784c262304e8b47acd6ebbdf6c27005aaedbef *f8bc7ecf079f0b80818283018386828587870168727406091458007d9596527499519a069c9e9b *a09da19fa2a5a4a7a3a9a6aaa8abaea77f07b2b3b4b485b5b8b3b7b9b88c028e5314095600c397 *c77c0451ca06cccecbd0cdd1cfd2d5d4d7d3d9d6dad8dbdedde0dcdab14cb7e64c0507e74be9be *c0c113c652c55713549495f67cfac8fdfeffe4e0b46b27501dc13707df4989c4cf40c37b12e6e1 *9358a1cc432d17264dfcc7b1e39e80fe080daa139041c0c09124d5004093f0491586f822650140 *8442447812c95cd4d8652796564059097d353428d1a34693b202e9e624a3924e494e4043c1244a *85f08ac99c820440814260373a9cc8afe2d8b164cda2c55771a7beb7942445512b25dc377177f3 *dadd8b97afdebe800d30ad9026ead43453a34a256cd59d4b6271ab18f20af6abd8b26c33a33dcb *19eedcb892dc6ade7cd6b3c7d3a8b30caeca52e4d39588572a5e0cbb71a3c75540e7be00c8abef *7b743d0b4ffbb93866c8c539971e9dbab9f3d5871b138c2e553a4ada85afe20e960026c6021971 *2acf383ce75a7bc777273f1ebea87ba4ef95c29f2fbffe52db54595b7fad52b6ebfc8cb5fe3447 *6ec60833537ae675769966e93d84a078a62d87855f140656e15f185ea8215e4cb5611806fb2d06 *207e5839240f5a2702778f8ac929a7a082c425e8a271a63de8dc8da875c8c6871784981262ad39 *36e0426279a7d34698a1375a684832095c5b4a7e26174562e16825323aae319b87ff8524e4235b *5161e495ced9475f7c689ea9a699f5c5a2882022bd19489c720af8489514a548e6691b6668e19f *7e06dae785b1f052cb2e86ea924ea2badc36e49e90462a6925679463e9a5963a3a00a39c76eae9 *a7a0862aeaa8a4966aeaa9a8a6aa6a2ebf3c218b0ab0c62aebacb4d66aebadb85a7040ab73bc9a *ebafc0062becb0c4debaab23be16abecb2ccfe36eb6cadc7ba2ac7b3d4566bedb5cf46dbebb4d8 *76ebedb7e09ea0eda6dc866beeb9e8863b6eb2e9b6ebeebbcaae5b2ebcf4d66baf0af2deabefbe *fc7e906fbf0007dcefbf02176cb0bb041facf0c2dd26ccf0c3102feb70c414578cebc41667ac71 *0a186fecf1c7fef24a2ec82497dc41c726a70c32ca2ab79c31cb2ec70c31cc32d77cf0b800cc6b *f3ce0a6bbb92ce3c071db0b68c002df4d1fa12cd2bd24cf3abb4d14d479deed352574d2fd55667 *3d35af456bedb5b9587f2d36b6618f6d76b65c2f7df6da12a70d35db701beb76dc740b5b76dd78 *433b77de7cd37a77df808bbb77e0849bf077e1887b7078e28c67b078e39053f078e4904f4e39e3 *fe965f8e78e69a13ce79e7807f0e3adfa28f8e77e9a6d38d7aea70afcefadaaebf6e76ecb28b4d *7bed1cd4b4f3edb8677084cdbcf75e811235072fbca5311b5f3ba612b4ac3cebcc1ba1f2f3a347 *df95c9d46b6efd1225671ff9f6e590ec7de3e05ffaf1f88897cfbcc7e807aefef61ab7cff7fbe5 *bf3cb8f013d04f7fc5f2c7adffff14ebdfdafe4740dd314c80632ba0020d78b3fb416f810b5c18 *02b506c10a3270680eec9c0537d83c814d306a1c0c6107079641c889f084189443d72e77c2168e *3069252c9c0b67484215aa2d7d33a4a1d362d8b71ce6b086f9bb21e07c48c41ddaf06d7023a212 *8d1844249e4d895064224d84e83f285a715f1f0499fe15b7f8c2abf1506c5ce42216bf48c13086 *118647649b19d788c626aa718d67bc57162d06c738d66b8e15aba318ed85478ae9718b722463d6 *fe78c53b0ad26a848ca221d398c4441671916eaca2237fe845463672923a84571ff388c94cbe6b *939cec640b2b1949498a5284a49ca21307794a146af290656c65085f694953cad282b42ca52d6f *59c14fc23296bcec25c27ec9ca600ab35da0cc983171894c621673990a1c662de9064d084a5397 *75ab6604b7364d6a6ab380cdece62ebfa9be7062339be40420ba92a9b174aaf35cec54a63bf7b7 *4e677a6d9ef4049b3d81894ff8c1739fcfeca7f5ea294e740ad49fea0268400f8aa97f16d49b0c *8d9e43fecf99b7880e34a10f85a845cd87518ae26da3ebeba82a710852e4812b9e1e2b2947bf85 *d28da9d4a42c55e83d5fca8493ca949f34fd5d4c33fad19c12cf5b2d4da94f93b0538fce6fa8d7 *6bd84d678a54e92995a73d6d6a1180ba549c2295aa508daa54bb88b6ac1a74ab4f356a0fb77a41 *6a05558b64e56ab3cefab1b4aa95596c15aa54b12ad6215eb5a823fd9e4ff5e955ad9694a075b5 *2b48cd9957bd5ad4977df56b3f53b942ca3114928535ec3c039958c56a738c95b5ac31811859c7 *5633858195e1663d58d54b9eb28199152c2625585a8d12f280ad752d1c6716dbafdaf16171dd99 *192d965b9e1592b7b51dab27819b5acfba927dc1751f07bbfe975ce55a137bcd25dc36a15bdcea *bd3365bd4564399317ddc4810f78dd655c48c15b5dd9c17477e13521518f96dd043a1569ed355b *5983165ffc19acbef6256d79f3db34fcf297b38dfdafead22b60e6eeb7c0f4253082cfa7e0056f *ccbf0e662c1523ec350853f89a9dbd70851bace18859b8c313cd3088abf6e111dbf4c026367068 *538c5e14b398c12e7ef183392c63fdaeb8c62e2b318ecd4ae31d4b31c03e4e708c834cdb211319 *b6463e72cf7aac6409afb2c930be3194679ce4298356c456a6ae94b3cc3f267339c440feb28ab1 *2c66e456b9cc7cf4329ae94ae6351377cb6e462d9ce35c301dd3595676be33acf2ac678ea9b9cf *cee233a00df7fee741b7edcc863ef19c139d6644333aac6d7ef495c32ce9fb16bad2c01234a64f *76e94d5facd39eb695a643ed3850937a56a33eb5ae4cadea3db3bad57e7634ac8995ea59d71ad6 *b76e75ae55bdeb53f79ad4bf0e75b03d3dec4d171bd3c7ae74b225bdec47379bd1cf4e74b40d3d *ed41571bd0d7ee73b6f5bced3b779bcedf8e73b8dd3cee35971bcde72e73bac5bcee2fb79bcbef *ce72bcad3cef29d71bcaf76e72be95bcef23f79bc8ff0e72c07d3cf01d171cc707af71c265bcf0 *17379cc50f4f71c44d3cf111571cc417ef70c635bcf10b779cc21f8f70c81d3cf205971cc1272f *70ca05bcf2ffb69cbf2fcf6fccedfbb455d9fce638cfb9ce77cef37b9e9b8a6bdb53875b87de49 *a15b4f85753ac475e0c0f4a63bfde9508fbad4a74ef5aa5bfdea58cf7a1c12917438e5afeb8358 *bad6c74ef6b29bfdec684f7bda0d02f6397dbded8010bbdae74ef7badbfdee786f03dbe18e74b8 *1f24ef800fbce0074f78bd73bded72f0b9e217cff8c63bfef13ba7c9ac0f16800800003b binary ./doc/images/RenderLineLoop.gif oldhex * newhex *47494638376134014801f20000000000ffffffdcdcdcccccffffff00b7b7b76e6e6e8080802c00 *000000340148010003fe38b0dcfe30ca49abbd38ebcdbbff60180564699e68aaae6cebbe702ccf *746ddfb881efa8b10482a070482c1a8fc8a472c96c3a9fd0a8744aa51aaad8a20f00cc7abfe0b0 *784c265f0be8b47a1d58bbd5edf7bbbbed0a0e0c24a0cceffbff80616706848586866d878a8589 *8b8a743f430c074600948198999a9b7d832d053aa09fa13a2ca241754493aa97450baa7caf54b2 *9cb5b6609e49a2a748bb3ababf02a94378b402c6aa017b41c80f55c87acb92d24dd0b7d79cb9bd *a4401102be5dd4cbbcc3c47977d4ae240ccaaad2d6d5e9d15ef0d8f680da47e0c710dfdcfccbf2 *908be46ac1013c44500028d0a6613a5a10cfbd3a0730a2ac06fc0a32db43fe1163c6820f8d4dac *77afe4907c1efd25ea266ecfbe8ab206723932b1889b850d198614723120c7911b837e1c09d4dd *c69f428b4efb98d1a2509350b5a8e449719f4897ff8e4a93690716340868168a75477128d2a6ef *7c068da8d16cd2b354e3b2654a32aa3d9455ff5d55c9aba210ae950e96ad54c0d952ba0edcce75 *36f7704fad4a9f2a7dfcd4ae5dbcb4acb6e41bcc306056475b556a2c59ad63b894e3567ecbfab0 *6ab4aa495b869acf886667b78f4e154690a7e855341f1a2d7dda6c5ad75f4d934e8eb839d3d951 *6bdbd4dbefa5b8209f8320345757c95ead6e013ec76891bcf296443d0e2e9b18ba65e9445eeacb *3a1fd24cedf2d075776f6b3ffe7f5b83c8a1062902a6416081d9e517da7f51f9c7e02683387248 *231232024a858ca0d2db831caed6213657f0c083865c5c88e18928a6a8e28a2cb6e8e28b30c628 *e38c34d668086f256e21c28e3cf6e8e38f400629e4900c5c5107284426a9e4924c36e9e49046fe *80e493545669e595580619658e5976e9e597607ab96522619669e699688a30e69469b6e9e69b6e *aea9239c74d669279572dea9e79e7cfe98679f80062aa8057f0e6ae8a182168ae8a28cd2a968a3 *90461ae6a392566a299e389279e9a69c2e4969a7a0861ac2a7a2966aea05a49eaaeaaa0da4caea *aba6ba0aebac9dca4aebad95da8aebae8c8e09c09cbc062be9967b002becb18b8efe8923b2cc22 *aaacb1cd46cbe7b3d2560b28b5d6667b27b6da76fb26b7de867b26b8e296fb25b9e6a67b25baea *b6eb24bbeec69b24bcf2d60b24bdf6e6bb23befaf6eb01bffe069c01c002174c01c10627fc00c2 *0a37fc6ba6cb3a2c71040c4f5c70c516078c71c6fd6ecc71be1e7f5c6fc822c74b72c9ed9e8c72 *ba2aaf5c6ecb2e870b73ccddce4c73b636df5c6dce3a47cb73cfccfe0cf4b1420f1d6cd146ef8a *74b60434edf4d350472db5d335430c6dc24d0399b5b54b37bbb5905f37dbf5b1611359b6b063f3 *7ab6926be39af6ad6d331937ac6fc33ab79377ab5a37ab0498d9b7d256f79bb7958387ba77a985 *6399f8a68783ba78978f0f1bb8bb91fe7f5979af93a77b79989b1bdab8a49dfbfdb7a89f433afa *a2a7d79a79b7a1bbd9ba9ea51ffa3a9cb33bbabab4b5d7997b9bb103bafb9dbf9bd9fb9ec1139f *7ab2b7075bbcefc77b9efcaecddbdde8f074463fabf57d524f3bd998a772f5f5cc62bfa7f6ae87 *8fbcf7c28a4fabfa76929f26fbd21feafe99f083ef3cfa6a575bffb7cfbfbabffd89ea1fdf9876 *bf487c4f55ff5bdfa0e6c739d62d5080a74a20dc02883f007a4b82938220e2ca8541303110729a *bb960643d5415c95b04b1f545cbb4e88a5145e8985139cd60839054313cab082abaa610c6137c3 *4be9d0863cc46104ebf5c326b9f049450462fb7a58a924eeb04e476c921395683b219230fe6053 *1452149794452af2cf8a9dea22f4a0c8c44689d18bbc2b23eab05645039aea8c6384d3168704c7 *fc7dd18da2aa631ce3a44643e9d18e6904a3a5feb8c734cd516b162324070ef9234516725c7d0c *942301094941466a928f2c13237b84493466d092a6e35827091549df89329078a4e1290d59ca3e *8d5281ac04a5195789a64df2e89516145e2bf984cbf8d57297c4a3652553b9a95efa0f953339e0 *2c33664c8a01534fcdcc213281a04c46451381d38c980f85a94b595a939b9a7c26f0c0f949626e *9399d9ace61ad1194b730e929c1e14a79dae39c47626d371f03c973c75974f31edb37afd44e13f *b7c7ce5f7a739d894c273e0b3acc7b8631a0fe59b2e58ee8f946853e94a1dd74e73b2746d1560d *94a012eb68913e0a52858974a407fda6c34eba008972b2612c6d29494b5ab0983e2ca5cbac691b *1d9a4736ca71a60015984d658ad39cfa6ba837d5e84505b7c4a21a355f484d2a4f2baaafa84a95 *9a03b49755afaacd0d6a35884abda2bcb6ca55759e335e6475291dd17ac3b08a75856d9daa34d5 *4556a2baf5ade6aa6b5961c941113a75a37dcd1e505d1958c1fe15b0170c945ad9162ebda2f4ae *5425200521eb55c92a76b092b4ec650f5b4ccdfa95b291f59afc309b59dc8d96b3aa14ed69411b *5aeead56ae9e8cad6159db5a4a3e10b54bb5ed6d695bdb271610b699cce56fb11a3ec706697911 *fe252dea8c7b4be64e60b15942ee9ba4eb4fdc22d0b91aa0ae3ead9b43ec5640bbf1e42edfbc0b *01f09613b89e955da9a04b3ff29a37a3e8651d73dfdb50e2aeb0aef435286f7117d5fcdad3be63 *8da97f2d0ad58e0e988fe2556d03019760af19f3c03f6d70b4200c000a4778bf7975a485770a60 *839977c36494b0b6a40be2a66218ad4e2cf1b6943be1a9b9f8c554d3167b93b66211d3985733be *3187bbaae394b1b8c7b1fa31904927e421832ac746d66f7c935c351b337955487ef2793b2c656f *45b9cad53d31966f75e52db7b0c85e9e1e98c37c3e2d9399555d3ef393d2ac66238eb9cd935d32 *9c196ce63913d9c9768e149bf30ca537f319ac72fefef3abf62c683ff9b9d03b362ba2d77be845 *23b8ce8ed673a323ad642a531aca93be7438f1ace9b85abad38ce634a86b0ce951ef36d0a6b614 *a1533db04cb37a5dae7e7595562deb0ad0bad6cf8d35aedd2cea5dd797c7be9674af833d656013 *bb7ba53ef61d51adeccd26bbd9ff3536b44ffde969535bdad6fe2cb3b34dea6d733bc4cffef676 *c32d6e810ebbdcbc2637ba617dee752be9d6d08677b3e5ad6c7a1fdbdec4c677b0f5ed6b7eefda *dfb80678ad052e6b82bfdae0ac4678aa156e6a868fdae1a08678a725ae698a5fdae294c678a435 *ee688e2fdae3880679a1452ee867d9e8e4284fb9ca57cef296bb3c4699a241294444f39adbfce6 *38cfb96ace774e8299cbe04808724328824ef4a21bfde8484fbad297cef4a63bfde9501f501c8e *0e74aa4f3dea58cfbad6b7cef5ae7b1dea43a7ba94901ef6af9bfdec684fbbdad78e86b217bdea *46773bdbe74ef7badbbdee720ffa165ecef7befbfdef800f3ccbdd0da9002400003b binary ./doc/images/RenderLineStrip.gif oldhex * newhex *47494638376134014801f20000000000ffffffdcdcdcffff00b7b7b76e6e6e8080800000002c00 *000000340148010003fe28b0dcfe30ca49abbd38ebcdbbff60f82841699e68aaae6cebbe702ccf *746ddf785ee47c5a2c018170482c1a8fc8a472c96c3a9fd0a8744aad560bd6acf107086abfe0b0 *784c2e97b184b47acd0eb0df6b371ceee57a0506461260eefbff8081626805858687876e888b86 *8a8c8b7540440c0647009582999a9b9c7e842e043ba1a0a23b2da342764594ab98460bab7db055 *b3b27c9db8809f4aa3a849bd3bbcc102aa4479b50ab79601cac8c90d56ce7bca43d24c234ad6b9 *db60bbbfa5411102c05ed4b7bec5c67a78d4af250cccabcded50daaff453d6f6dcfc63de48e49e *391807ee99103de824ddbb94a7480a0004dc486c57abe23a58eb04ce9b05fe4d1a473e19a1255b *0852cf4783fd5242f92792a0a270e6f804d4786e583a790a8cbc81283122c579076f611c1ab4e8 *c8911de97d2c697468c6a349830ac5a7b26a1196190322833553e090845d903095e7200dc4b364 *b74e853a966d518bf79aae3daa516eb5b974adeabdeaf26e2dad315dfaf22a04ec9d49068e51ad *4600db5da334ddc28d3c79d2dca54fbd9eb40b79af67627da52a036c59f0306c865f6162350d68 *69ce8f91ba765639f6e67db2216fcefb59efbf23804704971afaa60257cf90e39cb49caedab753 *5deb567a59baa5b19377f7defb5b67417133cd15b6a950484375b8973c17edd6a05aa2a24d56b7 *ecb4257cb699b75bed5ea42bfef082df44129679f828a69f5ee91dc80d2173ac514a836a3c0861 *6a07b5a69c82db2488212e843c8288231e36124a888da452de86186a88e22658f4d083895d8c48 *e28c34d668e38d38e6a8e38e3cf6e8e38f4006790831408422c2914826a9e4924c36e9e4930e60 *618791505669e5955866a9a5935216c9c596608629e6986432d9658c5f96a9e69a6cb649e6998a *b829e79c74d629029c54daa9e79e7cee89679a7d062ae8a05bfe49e8a18826baa4a18a36eae8a3 *16300ae9a4943e2a69a598661ae8a59a76eaa99b9c7e2aeaa860864aeaa9a87249249aa9b6eaea *a2abc6f9eaacb476606aadb8e61a65ac79eaeaebafb7fe2aacabc10e6b2ca9c51efeab6ca77002 *00e8b2d07a7a261fcf466b6da570ae7aedb6d8c6aa2db7e03a9a6db5e1962be8b8e6a67b28baea *b6db27bbeec65b27bcf2d6db26bdf6e6fba6b7e4eaeb2f96f8fe2bf095010f6cb0aaaaf47bf0c2 *4716ccf0c321380cf1c41c484cf1c517588cf1c61268ccf1c70d780c32c8228fcc71c926638c72 *ca14afcc32c42ebfcc70cc321f4c73cd03df8cf3bf3aefac6fcf3edb0b74d0f20e4db4bb461fad *6ed24a9bcb74d3e13e0d35b7524f7d6dd556478b75bb0374edf5d760872db6d7ed6e6d6ed74ca2 *ed34bf26abeda4db54b3fd31dc50d2adb5dc18db6da5dec79a0d2ddf58020e2cde0f0baea5e1b8 *fa6dec007332aeace2bf222ea6e4c4fe122e30e564627e2ae4b56aaea6e79f72fe2ae86c929ea9 *e8a99aeea6ea93a24e2aeb8d3bfeaaeba2ca8ea9eda9d2de29ec7bf2beaee5e5fadea7f09b02cf *2df18222afa7ee902a4fa8f37332df28f48852cfa6f4d5e3aeabf56562fffcdf9a7a9fbcb5da5b *6afce2e49f7ebeb0e51fdbbea2e20fbfedfb89c6df3bb8f4ff9e70b4f90fdbffa0f6b3d3fffc47 *a900d66980ec2be0fa7285400242ca808d4b570397b7c0ce71ed8115a4d5041d28ae0c8e2e5e1b *8c9e075b1542f775707f1c745709ef354254add084f06be1a95e88be18a2d057348421a220f839 *7fe5704c3cccdce5ea27c3da0d718745f4d40f97b5c442257177066ba296821826292acbfe8a04 *7b62a6b05843006ab1525cd461f16e38ab305ed18b64fc20c4ccd8242a66898d671ca32414362a *388ad14f5f7c941de3c827375e698f77b4931fab04483e52308d2e9cdbbbf2a8a84232b18f8c4c *94230d39af481e6a928f3ce41c5d85494a8a1091466459273330c8268dd293a0b2e4a04e19c854 *82f253acec229d4a99b697c5b202b45cd22d132848558e4f949a0c0b1db768cb60066198b72b66 *2f5fa944655692995004e63237993a67ced29781da65e48cf9add759f393d44ca4349f19ce197e *534eb954923671c84d6482f19cae2ca737c7794d686a6a9ddb6b2709e1c9427b12939ee014e63e *018a4e6cca8fa0f114683511da4f79d6919ffed733289ff0c9407d2e3465147d403a9394510b4e *53a1e2c4a84543dab6919254912635674953aa5294b2749e2efde831cb18539976f3a414eb2804 *365acbbcc911a49cdc984e772ad1555e6ca844f5272c8f7aaea21a758d6874e8400b1755a0d294 *61488d004f9f94d5e6e94faa413d5857930ad6b01e91505be56a1491a8d496ea6bac5a756af5ce *8a56b9cef5ad362cab1af305d7b8b615a717ccab552b6aafbefa55af5705e10911bb57152e76b0 *f974ec6367dacae361f0af533ddb6519ab4109b6ceae8e32ecea3e8b59b35a96b49ced6cb8444b *81b46e89b5425460694d9b3ed9a6d6a3b5b52d645308be6ecdb6b1a89cec4d2bcb4bdfde1657b0 *fe7d63f8400bc6e4d6cdb9b864eeeda0ab4eea46f7b70cb42e08b81751ec6e4fbb1be06e43777b *3cf05a40bc09a5ac0acd1b01f416d4bbb27ce7eca4eb42f602c0bdf53ceefcb48b5f729277bd92 *b4af075c9b3cd1f6178ff0ddef44051c31fa66f7800cbe9383233bdac74df8bba58b3092081cda *581e98adfae56b273f4cc40483b0902416ac7ae706c714378ac35be4a28b85ebceac3140c35934 *b18de3a6e31d5fedc23e9e158c83fcd315139967403e72ee92ace4cd31b9c9a31a3294fd6be429 *17edc956661696b3acbe1e73595752fe7277432ce6be6db9cc9bfd2f9a7fece535cfb7cd6e6e55 *98e31ca639d3d98970be33b2ceace7bae6b9cfa1e3fe33a08b3cdc419bf9cf86ee3299132d6741 *33daa6357ef49b172de93d23bad2e6bb34a65fece84d8fb7ca9e4e5ca743ad263b935ac29a3e75 *5541adeacaa5bad58b7c35ac114ce959a799d5b6b674ad73cd6959f33aa0b8feb5b4462d6c2b99 *bad8912236b29f74ec654fa0d9ce3eac9aa37deb42535bb7c1be76a677aded9776bbda91fe7653 *7d2dee292abbdc2080b6b8d5fd6d7677dbddda86f7b5e54d6d7a47dbdecec6f7b2f58d6c7e17db *dfc206f8af05ce6b82e7dae0b646f8ac150e6b86b7dae1aa86f8a9254e6a8a87dae29ec6f8a635 *8e698e57dae39206f9a345ce6892277a5c424ab9ca57cef296bbfce530ef51ac6a600a17d9fce6 *38cfb96ece77cef39e97a0e63398d284de208aa11bfde8484fbad297cef4a63bfde9508fbad41d *2487a40bddea559fbad6b7cef5ae7bfdeb60977ad1ad5e24a58f3dec684fbbdad7cef6b6a7e1ec *47bf3ad2e1eef6badbfdee78bf3bdd87ce8598fbfdef800fbce007eff22ea0fb53014800003b binary ./doc/images/RenderLines.gif oldhex * newhex *47494638376134014801f20000000000ffffffdcdcdcccccffffff00b7b7b76e6e6e8080802c00 *000000340148010003fe38b0dcfe30ca49abbd38ebcdbbff60180564699e68aaae6cebbe702ccf *746ddfb881efa8b10482a070482c1a8fc8a472c96c3a9fd0a8744aa51aaad8a20f00cc7abfe0b0 *784c265f0be8b47a1d58bbd5edf7bbbbed0a0e0c24a0cceffbff80616706848586866d878a8589 *8b8a743f430c074600948198999a9b7d832d053aa09fa13a2ca241754493aa97450baa7caf54b2 *9cb5b6609e49a2a748bb3ababf02a94378b402c6aa017b41c80f55c87acb92d2b7d5d650b9bda4 *401102be5dd4cbbcc3c47977d4ae240ccaaad2d04eef95e8d7f4f54dd947dfc710dedbfbcb79c6 *4572b5e0001e2228001468c3101dad87e65e99fb075156837d0499ed9978fe51633c7b20bfe0eb *d82f11b7707bf451942590cb118945dc2864b8d0a13b8038ff61dc6931e745683d37e6c4f831a4 *d12c2327ea33f64a2545212dedc002fa008dc2abed26f214aa71e7d6ae10337efdaaf5a859a425 *85905c8ab224afa741a2563258d6550167d3ba7accd3d36b50be37c5f65d89b3e8d9c34b92d262 *9b57255eb9ac3cb6921738afde663e2b63563b6ff06082f3108b5682cf085b67a73da6153650ed *e4552f1db6e34cbbb6c4c2b5f57ab53d74b7e5d1c049afcee7af9b63497183913b47a45868786d *f78e053ced366707d351deae1bbcfb90d231fd6933090c92cb20078b38f7cebebd9f4172d4908a *9f663e7dc8c7a25972cfbfbffe97418e1cd248808c80422023a8b4e6df820c8e71050f3c24c885 *81075668e1851866a8e1861c76e8e187208628e28886b036e11622a4a8e28a2cb6e8e28b30c6c8 *c015758022e38d38e6a8e38e3cc648e30f36f628e490441669e48b3f9e78e4924c36e924934926 *f2e494545669a508510679e5965c76c96596287a29e698640a09669968a6a9668b67aee9e69b70 *5ad0669c74d609e79c76e6a9a79878eee9e79f4ff609e8a0849a69a2948526aa688e822eeae8a3 *21340ae9a4945e2069a59866dac0a59a764a29a79e86ba28a8a2963a28a9a6a6aa67940084a9ea *ab8026b987abb0d69a679426daaaab9db8d2baebaf6af60aecb06e0a4becb1651afe8becb25d2a *cbecb3553a0bedb44d4a4bedb5455a8bedb63c6acbedb7377a0beeb82e8a4beeb9299a8beeba1e *a8cbeebb19b80befbc14c84befbd0fd88befbead1e9a2bbf0047a06fc0f30e4cf0bb061fbc6ec2 *0a9fcb70c3e33e0cf1b7124fbc6dc5165f8b71c6d36eccf1b31e7fbc6cc8221f4b72c9c39e8cf2 *af2aafac6bcb2ed70a73ccafce4c73aa361f4b80c239034bc0ce2dfe6cb2bfbece2b748c47b34c *34bf49dfd8b4cc4bdffb748e53e31c35bc55ef9875a83d97ba758f5f67da75a8403f5976a9636b *1a76916b439a76a56d1f19b7a26f433a3793779f7a35b6793bd9f79e7527faf79483d719f8a085 *5799f89b87ff79b69d8fd3bd37b28bfe7359399a8d431eb99f978f99799c9d9319fa9793eb3a3a *9aa7475b3aaca9abd9ba939fa3be39a6af2f19fbcd12cccef8eab8737b7bef89fe0e3ca1c20f1f *2befc6778c7cf2202fcffcc8ce3f3f742a454b0f3df5d6635b7cf6746ecffd9dd17fff72f8e243 *8d7df9cc7a8f7e9aeaaf9f2cf9ee9bda7efc7cc24f3fd7f6dfdfe9fcfa6fc97fff56fa1f00a924 *c001062a7f069c54011308250432d0510b7ca0912228412251b082863a1f064575c10deea8831e *64940343f82710925046263c218c52a8c2728d704dba23210b3f1043a3f9ef85ae53580d8f3443 *0fecf05d3fcc160ed314c4751571483decc011cfb5c41e2591034d1c57143f3844d4e9f0fe861a *14dc15aff4c40d4cf15b5f1461160b15c66d95315c552cd319afb5461fa551745b0ce01bc7d4c6 *69d511497314d31d9fb54736e5d14b7d5c562057d4450d0c5267588c44f5381747d58d91508724 *5624b1f4c72e4dd2678974c922f774c95f75f20385ccc0274d9749206c524fa3b4552a39104a0c *ac9275a5fc17191b49c04a5a8e96536ae5055ef92a5ec6cb965bf265aa846929605e89985e8be5 *29f3844c5135b35ec66c61039e39015d4a9395d1bc66b3b2a94d65765381dcfca6231529ce4759 *b39c1538273aab19ce7556ab9deeb41d3ce339c179d2d382f6bc6706c9a9cf12e6b39f547c2440 *bbf7cf81e2489d0345284015da4f86ead3a1fef784283d251a4f8abad3a2ebc4283a355a4e8e8a *d3a3df04693745aa4d925ed3a4d244690b55aa42969ed0a5322ca815fb07530ad40e86d474a140 *7b9953b9f554a7fcf4d94fc13654a06a927245755a528d6a4a66ddd46c4bc5e34e850aa8a78ef3 *a87664a4db64cac9a842d1ab28e42ae7c06a01ab926eaa4e256b04ccba4db4f251ad0c60ab976a *ea22b9d210ae3aa2eb8bec6a48bc0634a8e82aaa5fbb25d647f175028725935e956aa4c4becfad *52e4a563315758da8d72b2ecab6ca69e8ad96069566d81ecec9a164ba7c11e10b206a52c6a53ab *d8cfb2365dae7d6da4622b5b50d2b6b61d20ad0475fb40de32d0b70904ae01853b40e202d0b834 *febd2d6e37805cfd35f77ecfa55f74e3375df755777dd7455f76cbb75df175f77bdfe55e78b337 *5eeb95577ae77d5e7a99b7dee4b5d778ef1d5e7c8137dfded51777f7bd597e69b6df98f5d765ff *5d59805136e09215586407fe588239b6e08c35d8620f9e58842136e186559867ca5dee2f57ab61 *3972b8c3b5fc30884f0bd8117b2ec32666a788532ccf15b3b89e2e7e313e632ce37d62b5c6672d *318eafdad41d7bd3c75c4431902f7c302213ccc8014332c094cc2f26efcbc9f882f2bda44c2f2a *174cc83eb632bcb48c302cef98cbec02f3c2bc8c6331a3cbcc0e23738dd14c2e36478c68248ab3 *9ce74ce73adbf9ce78fed0a168500a08f9f9cf800e6eb4a0074de84293a0cf32a8d17ddc108a45 *3bfad1908eb4a4274de94a5bfad298ceb4a6e51387482bdad39ddeb4a8474dea529bfad4a8d674 *a33d0d2449af3ad5b08eb5ac674deb5aa3e1d58ffe34a4716deb5efbfad7c0fe35af17bd853c1b *fbd8c84eb6b2976d67209729000900003b binary ./doc/images/RenderQuadStrip.gif oldhex * newhex *47494638376134014801f20000000000ffffffdcdcdcffff00b7b7b76e6e6e8080800000002c00 *000000340148010003fe08badcfe30ca49abbd38ebcdbbff60148c64699e68aaae6cebbe702ccf *746ddfc5ad9f851208c0a070482c1a8fc8a472c96c3a9fd0a8743a2d50afc41ee087ed7abfe0b0 *783cb612cee8b43aa06ea7d96e3757cb151816470079cfeffbff606605838485856c868984888a *89733e420b06450093809798999a7c822c04399f9ea0392ba140744392a996440aa97bae9ab150 *b39bb68102a647a1ba46bc3948baa84277b5b5a9017a40c70e54c7490dceca02cd48cfb7d855b9 *c0bba33f10db885cd3d440c29043c5ca77d6230bc9a9d3d74cf394f2e44fb1d7f5d9fd579dc1bc *517b10ce149e817ace6db157899d90130008b099886f96c583ae0e22bca8fe0f0f333d1d9769dc *a8ec19838d034522f4c732094091b37e7d23e74a26cc830aebc42b37a44dc489122bde5399d263 *c9a344331add193212d294249dde848a115fcbab025ea23427d058428153b93e5a4809aad30667 *22aa8d3732a4dba15441c20da294285db977cf36bd68971f566c5a4f8a3548f3abb8bb31b90d5b *a50e1a816a79cd367b1b79f25c957b4ff2658b57f253b37faf06d668d36b416ed572b6b2a42acf *e6c871771685fb113666a494ed32fddc147468965a8b942638fca8e153e8e8b242b85c365de7af *6377bc6c3aa9dcce7557da8b6d5df76fe0e1021e066793e732b1c8c9027118a4f194ea2833779e *fa51e35292d7e346bb5d59f0fe77d1e175739880bd08a75872ec1133d27f46f8b7895f0cda2248 *1c698c42211a165ea8da790d2ad05c8465dd0221889908d288218c9cb8c8272a2e929e4e24c6b8 *9d8cfe58b1c30e2fb2d8e28e3cf6e8e38f400629e490441669e49148265948563e7c12c2935046 *29e594545669e5950d584187935876e9e597608629a6955a36a9c59868a6a9e69a6c5259e6165c *b629e79c74d6d9e69b88d8a9e79e7cf619029e71fa29e8a0840a0ae8998526aae8a2681ecae8a3 *90463aa5a392566ae9a515508ae9a69c5eaa69a7a0869ae8a7a2966aaa9da49eaaeaaa8d320927 *a2acc62a2b96a9ce6aebad20d48aebaebc5aa06bafc006cbc0afc216cb2bb1c626fe3b2bb2ca36 *ab2ab3ce461b2a9e00c02aedb5a6bea987b5d876db299eae7a2beeb7aefec0edb8e8420aeeb9e9 *b63b6ab9e1ba2bafa2ebce6befbba8b07befbe73d6cbefbf7afa0bf0c0720a4cf0c1691a8cf0c2 *602accf0c3573a0cf1c4524a4cf1c5b9c2ab2fc61c676071c7205ff071c8244b3072c92867a971 *ca2c4f7072cb28bf0c33c932cf0c72cd36738c73ce17efccf3c43efffc70d0422f4c74d1071f8d *f4c04a2ffd6fd34eef0b75d4f64e4db5bc565fdd6ed65aa3cb75d7e27e0d76b7628f7d6dd9f60e *a0f6936a0f50f5ca2db72db7db1bccdd36d670a36cf7de16ec6df7d67987ecf7e06b3740f8e05e *07def1e18c374ef8b86877ebf8e494fecfed6de4d256aef9e6d862deece6a0731eade7c6866eba *e8ca921eece9aca35eaceabcb62ebbebc0c28eebecb857febae2fce6eebbeeb5f39ef6efc453de *abedab16af3cf0b7226feaf2d0332fabf3a1466fbdf4ab52cfe9f5dc639fadf092772fbee3ac6a *6fe9f8e84ffe2cf8cea6efbefaa59a0f69eb7ed22faafc8fb23ea8fef7b39f2cfffb3b5dfff2e5 *2d000aca809cc2dfa204982806824a810d341da31c9840ff158b8285c220a62098c1d0cdcf830f *b4e0ea40f841d0859080d79260a45458411466ce849522e1a6387840189ecf861b1461af642829 *1e5a8a86f5a35d0c85582920f6898843f45e1175b82b1c62ca894b74e1e734272a24aa8bfe89b7 *53e2a6a838432cdaca8a9702e3a28ca8272e3e4f8b8f22a39dd0d829368ed18bb232e3a9e42829 *35d2c98d6d349ea7e0182b3dc6117e3fe423abfcd847404611121bcb22f96e45c848d9b14d8d9c *95211d29c8334e52929764d423d584475545f28d52dce1271999497c215258746ce22809b54931 *a53276ab345425b7d7494c965296a1fce22b45194b3eb5d24b6254652f0336cb1bd65291b7dcd3 *2faf04c5d2ed5299c55c61308135cd8245337fd5a4e633ebb44c2a35738adbecd7352718ceff95 *f34ee35ce0312fb8ce84a55351e734e730d1994b4fce139c8bf45337a774cff625539cf59ce33f *5338507a9ed2968cbb5741d9b44f29e57378fe09c5e541ff185185366e500d8dd245ffb5517dbe *33828f1b5845fb9451288db47787c3e8473b88b883a554a20b4924a8428a309a9274a584b229c1 *740acd805ad26f35e529317d5aaa93eecba8439d6821850ad1967a94a85544aabc3a7a53a8568f *aaf37aa82f711a40a9a64bab3d55ea20c1fa55b2a28aab35346b0117baa692b28dadf8f42a9ddc *1a8276b213aeeeb4ea4cedaacd7eaa89ae2088a733fd9a57b1264fb023e4ab9800fb816f2acbb1 *73456b10110b4bc52e56b293b5ec5209fb57cc6696b314056d61632a4cd18ed5b4add26b5129bb *59b56e55b5abd56c54513b5a73f515af87c5ad3561fb53d7ea52b7bb352c327ddb5ab9c2d4b6a8 *fea4ed16810b50e19616aba424ee71e39558e9c616ba9af42c36ad3b5be3168ab158526e09b19b *5dde86d6bb7be5ee74651a5df2f6f6a581346f71e19b5bf53ed5b9b7b5af34c51b5cd2fa93b9ea *04f059e53b5ffa7657bf55c56f7e110c52fef617b9ff15705a25cc4dedf690b52c75f083a92b4f *d9ee09b2e555707529bc460cdfd7bfd10271803d3c60112f98c4905431285dfc62f7ae58c3cd45 *718a653c6116b758c71136f19c58d845022354c87222720e8d7c641f8f49c94ba6718d610c260d *ee91c9e745729aac1c5f294f99c15b86729481bc63317f98cb5d267390b3c9260416d9cb5f0673 *95d19c660863cb7e7cc2f309e11c671bc7d8cc63b6fef35a7d386440bf59cde1e371980cdd423e *7718c77565739d398c2e450353d293662f419ddc582d5f11cb8f46efa5a93c63444f95d4754375 *a9058d523f8757ce87663547455d2557c70abc19062a9a685d3e0bf3d2a97366eab17cfde52703 *db58b82627df82fdb7d111fbae961b75b4a595ecfdde4dda85ebdcb31f2bb72e4d9b6cdbc62733 *af0db9708373dc744b1ca801966d87a63b5dd56e233fdfb66eb385cddcf66e1ebef3bdac7df3fb *d6fefe77f6022ef053c5bbe0af7534c22f47f0854fabe10e2757bd238e6c88533cd094beb8bb0e *ae71839abae3e59e38c8872df291e38ae3264fadc2532e2c94b33c4c2e7ff997622ef32ed1bce6 *11b338fece59a9f39dafd7e70c2f39d0e3d7f3a187f5e3460fd6cd93fea4a5333d63427f7aac33 *2ef5e315bdea1e9735d649bef2ad0fb0eb5edf33d2c30ef0a8933d8d573ffb65cdae767aa5bded *337f3bdc6d2ef7b9e79ced76ff79defb8df7bd277cec7e6f34e0038f714d13fe90833f3ce2b5ae *78c133bef18587fcf7fa2e7986d6bdf21d703ae435df78ce2bdef387073de1451f78d2fbddf47b *477dde556f77d6cfddf570877ddb65af76da9fddf664c77dd875ef75de6fddf758077ed5852f75 *e23fddf84c477ed2956f74e60fddf94087becfa5bf73eae3dcfa35c7beccb5fff27529e9fbe00f *bff8c74ffef29bbf48e59a01296ec4fef6bbfffdf08fbffc72e73f82f5c7604b1a6a0328f2cfff *fefbffff00188002388004588006788008582170f07ff8c7800b98801018811238811458811688 *80fbc7804d02801978811ef88120188222388267d081fdd780fe678224b8822cd8822ed8822a98 *7f5a707e345883367883389883e4b70598b72a019000003b binary ./doc/images/RenderQuads.gif oldhex * newhex *47494638376134014801f20000000000ffffffdcdcdcffff00b7b7b76e6e6e8080800000002c00 *000000340148010003fe08badcfe30ca49abbd38ebcdbbff60148c64699e68aaae6cebbe702ccf *746ddfc5ad9f851208c0a070482c1a8fc8a472c96c3a9fd0a8743a2d50afc41ee087ed7abfe0b0 *783cb612cee8b43aa06ea7d96e3757cb151816470079cfeffbff606605838485856c868984888a *89733e420b06450093809798999a7c822c04399f9ea0392ba140744392a996440aa97bae9ab19b *b4b55902a647a1b946bb3948b9a84277b302c5a9017a40c70e54c7490dcecab6d4b59dc0a33f10 *b8d9cb9140c19043c4ca77485bc93ed3cbd3cf4dee46b3f04bf3d5f69cdc7545beda0ff9a6788c *b90ab785920203e6849c0040808dc3750283c80be82aa0408b0cd85584b8fe919dc675d13ede1b *49e69a4870dd8a0dec763120417d91f440c4a586a1c3861cdb298bb551e6ce9f1e236664e633a8 *44a01193925c1ac664cb20fc94468c7a32df2971ada47e5c7086a1d754198f7ae459342859a544 *93a69da891a95b2f4ec3fefba5520fd5a7281f156c85d0623c02cd621a6d76966dcb8e46c7228d *6618efdbc750e25a8c5a772e97c02ff96a6465502758b15a0b7b0e3d5aac68c5a08fce84ccfa88 *d37d29fd51266bf79700611239ab8ac7f1f360904069a7966ab8a7dab27e13b75e5ee43591d9cd *a882cc7b752f908441c849132cf2ec45e2788862444c98bc5ce6e887381f7217362298ec6de3c6 *3e2c797ac7f7f307e21627cdfea8fe68fc076066def056897eaf20a8201682346208230e2ef249 *848b5407df821866b887153bec60e184148628e288249668e28928a6a8e28a2cb6e8e28b85dce6 *c32721d468e38d38e6a8e38e3cf6d8801574d0e8e390441669e49148f208e48c5a24e9e4935046 *29a58e4b6e21e4945866a9e5965356890897608629e698217879259968a6a9269a6636b9e69b70 *c6e9649b72d669e79d39d289e79e7cf659819e7e062a689f800e6ae8a16f168ae8a28c72a968a3 *90463aa78c56ba29e9a598faf868a69c760ac2a69e862aaa05a08e6aeaa90c948aeaaaa2aacaea *ab99ba0aebac90ca4aebad877a0980a5b8f6ca68957af0eaebb0837a4929b1c816fe4be90fc226 *ebac9dc636fbecb4892e7b2cb5d8c2196db6dc568b8ab4dd869be5b6e2960b26b9e6a68b25baea *b6fb24bbeec66b24bcf2d6db23bdf6e68b23befaf6fba9b5e0fa2b7006fc0e6cf005051facb004 *092fecf08f003f2cf1040d4fec70c5162b8c71c6066fccb1c01e7fdc6fc822e74b72c9f59e8c72 *bc2aafdc6ecb2ea70b73cce5ce4c73b836dfcc6dce3a63cb73cfd3fe0cb4b3420f8d6cd1460f8b *74d2bd2ecded0050472df5d454572df5ce114f6cf5d65c6fed73d60e772df6d8573feb74b264a7 *9d36d1601bacf6db63277bb6af70d71db7d26deb6bf7de77e33af7ac7c07def7ac7fb32af8e183 *b35af8a988379ef8a98b8beaf8e48ffeb79ab7b99467def5aa9173aaf9e79b9bdaf9a5a0971e7a *a8a3436afaeaa7739afaa2acc7defaa5af1b2afbedb3d77a39b2b8f79efba2b5fbe9fbf05e471a *fc9ec4275ffcafbbdfaafcf3cbe7da3cd32f4f4fbdccd65f5f73f6dae3cc7df7587f0bbebcc78f *6ffcf7e6078d7efa6c8bcf3ef6eebfbf7dfcf27b4f7ffde1431230fe47afcfbfdffefb1fadca27 *403f11b0807c3a2002f1a4c005422b800e4455032318a70952d05bfabba0dc20a841d471b0839d *b22008c924c2118aa984263cd70753282914b2504b2e7ce1ba562843e6ddaf8690a3210ea577c3 *1d5aae873ef4540c8398a42112f148463c629192a8a30164cc896cd2619da0a635289250fe8a72 *a2a2c4b4784520322a6a0f036314bd083b311eac6c5dcc60a6d0e836338e8989399ada19d97842 *2cc6896a03c3e318d588293dfacb8f6fb4239caaf64740d6918c88b29ade08b9c782eccf768cb4 *97221bc92ccf4d525ed13b241f4997c974712d4d70c4d127e335ca343ad2929d14d7ef1c25c837 *894d5dafa4e4b524154bccad724ba1bc51e5b0b54b5cb6724d6453652f61f84b3505335cc73465 *25d7984c5e365393a764e6339da5365016334dd574e6345588c843bd8d5adf94e5230705b76795 *539ca85c1b35c3a9cc5946aa6e683b673bc72928bb11cb9ee894263b7b85cf7976aa9fce83a735 *bbe94d80c26a6f6acaa528054a2b830692a0fe0565e8ab109ad06b02d3a1a6a26845211a5179ae *4aa303dd643af799518c3e54a423cd664925ba5194ea93a4a102694ba3293993f6d1a627a5694c *65fa52988654a73b65694fd559418bde91a7b444ea4f97b952a1aa4ea94b75a7a7f89652951695 *a34fc52924b5ea4f54052ea9508d2a3ddf19d67a96359f5ea56aa3be7a27851289ad89546b5b8d *7a27b976d4a30fc42a58b96a27b8ce55af7b752af2ecfa57973655b078f26b6181fa51c20ef6ac *6b72ab9104273cc52e96a907756c5f359b57c332ceb259046d67196b38d15e94b3a3c56c66516b *4cd3d649b248a2ec145dfb5abaf6e970a1a5ad9c601b5bdd8249b682e26d6f59fb5bdfeed6b695 *fe35ee94706b28e10e17b25802aeb2003b55e98a89b9cd456ea0b01b26ee4ed7b38053ae93acfb *5dd2f293b850126f6aa53a2cf426c9bd84d26e19f11a5dc4f210bcedb5ef7bf59b5deaaed6aa51 *e2ef7dcd3b2d9f8e17c098726e77899a5e068750be43bde48187493b0857d590cf4da5102dfccf *5bfaa89612e470874b39590f6fd8bfe6d4708f48ac3811d734926f9530ac143c5b0cef48c68473 *f167e9c8231be718c5c8e4711c857c2b1af389c835427291753c512e36d1c9fd03b227adb8d0af *49199671cc1f8195d8422673798657fef265d92b66dd85b9ccc73d339ab5e5e5354f4acd6e9ea9 *6ae36c43fcd2395046be3305f2ac6786b5b9cf43e2fe33a01f20e841430cce86f625a2133dae3f *333a4f8e7ef48d0afd684a33dad289c6b4a1353d684e03dad37d06b59e457d6752d3d9d47146b5 *9b55bd6656a3d9d56586b59865fd655a73d9d64ac4f511754d445e07d1d73e04f60e858d4362d7 *d0d83244f60b95cd4266a7d0d92684f608a50d426a77d0da1ac4f605b54d416e47d0db0e04f702 *c58d407217d0dc0244f7ffd4cd3f76e3cfddf583b7fce4fd3e7ab3cfdee9c3b7f9f43d3e7e83cf *dfdd03b8f6047e3d8253cfe04c4378d2146e34860fcde1408378cf24ae338adfcce234c378cc34 *ee328eafcce3288b168c464ef2929bfce4284fb9ca57b4ac1990a243308fb9cc674ef39adbfce6 *237879660c8234a03680a2e7400fbad0874ef4a21bfde8484fbad297ce74ffc061e83c87fad39b *4ef5aa5bfdea58cfbad699fe73a8cf88e85ddfbad8c74ef6b29bfdec67087bd0a32e74b5a3fded *708fbbdce3eef69e6b61e578cfbbdef7cef7bea37c0b926654001200003b binary ./doc/images/RenderRubikFace.gif oldhex * newhex *47494638376134014801f30000000000ffffffdcdcdce4e4e400ff00ffff00b7b7b76e6e6e8080 *80ff00000000ff0000000000000000000000000000002c00000000340148010004fe508049abbd *38ebcdbbff60288e64699e687a0540e0be702ccf746ddf78aeef7cefffc0a0f0202cca0e938060 *c96c3a9fd0a8744aad5aafd8ac76cbed7abd87aff8896c8dcfe8b47acd6ebbc386b87c4e0fd0ef *733b1eaf1494fb02081452006e868788898a6a70078e8f90907691948f9395947d7f4d14085000 *9e8ba2a3a4a5878d370644aaa9ab4436ac4b9b9c13a14ca051134e856eba6cbeb44bc0a6c4c54e *a853acb152ca44c9ce7e494e82c3c3bb2cb7bcd9155fd6841654debed618c6e688c8ccae4a1902 *cd7dda124bcbb34dd4bc82532d2c49f112dadeb004fc04d0df2e83c1129e5b78ca1db428effe5d *703889dd385df4a43de994af890c00fe06ec88f407ace4a07f12b799bca8cba4305e1753a29cd9 *d2203795304f32dc798ca24a2611ab158a28f164463304e539b90352644892055f4a1d149366ce *a233ad4a955973ead55c39e355e549361dd679ebb2a2247ad66734a41bd5beb41007a4dd833ab5 *c674a9b760deaa2ef7e284ba355b61b23bcddea4184b28e3878b8f02e284e05e38031313aea47a *95ef44cf51b57a9d1b9ad64972e010f354ac33a8d8a1698bfa92bc3154277d7c0d6f453d7a37e1 *c280bfa2dc2bdcf761b9aa13bb8598b69debb06eeb09b32591fac15dd781bfeeadd3b176af5f83 *8bd69dfb78f28566a13c0747542c5a4d1a97746462d98b77acc10b09ed7ab8a6feb0a0f5fe665a *77040e745e29e93dc1967ab131071f5cf3d993d7811456a85a237bcce14a86726cc8216dc27c83 *8b852496784e23984472498a96a8c2a225b2c467e28c342216861146c4d8828b2ff6e8e38f4006 *29e490441669e4914826a9e49290bc55118e504629e594545669e59558c210c61fac64e9e59760 *8629e698576e99449764a6a9e69a6cb659a5993bbee2e69c74d669a79b703e79e79e7cf6e96711 *79a2f9e7a084163a68a0721aaae8a28ca68968a390462a29958f4e6ae9a598e65069a69c768ae9 *a69e862aaaa2a08e6aeaa977968aeaaaac3aeaa4a0adc62a6b96aace6aebad46d48aebaebceaa0 *6bafc006abe5ab890a6bacb1bf1eabacadc9fe2eeb2cabcd3e2beda8790250ecb4d89e0a6721d7 *66ebada779faf1edb8a286db2db9e8466a6ebaec5aba6ebbf036fa6ebcf4163a6fbdf8f6796fbe *fcd6b96fbf00b3f96fc0048f3970c1087b7970c20cbfe9a4b80d478ce5c212573cc4c3e75aacf1 *0f146fecb1a6187f2c32c7218f6cb2af259fac720d1daf6c72cb2e8b0c73cc1ecf4cb3c636aba0 *f3ce1ddcbc66ce3c072d74123ebbba49c61f11a0f4d24c37edb4d3144449410254576df5d55863 *4d74d106a78c03004f872df6d251433975d668a74df5d65c8799f3d87043cd761167ab6db7d573 *b7adb0d737801df7df04948d63dd77df9db7de13f36d83df80c32db8118417aef6e1885bf976e3 *fe8e53fe43e492a3ad79e5535e8eb9d88fd33d41e786ef033aad8ad7c0f8e84f972e04e7a85ffd *f9ea508a0ebbdcaa437e7aed69df8e7baeadd3f0faee4ccb1e04edc0afddfbf094163fc3f1c82b *ad3c10cc372f3cf441e85ebdf5dbeb903df0e173ef83f7df5fbff9efcd6bfdbcf9b94b9ff4f7c9 *97ff35fbede3fd3efcc41fbd03f5d5539f0fc6573bfbf10f64fe131ffdeab73fece12f7fce3ba0 *94d01740032eee8110b4a0045926bf1800107902ec010151a7c10dce8082202ce1f430983f159a *705809ccc1077717421e8cb0732e7ca10b5048c31cc2e08692f3e10b7908bb1afe8f85ed13a209 *89383a238a0f89da6ba00e77c044cc39518650249ffe14a788406920cd830b249b12f9010008da *6e8b5cbc41151b77c5fb95d18c551ba304d708b836f62d8b0544631a391843370eed8f29d823c9 *fa7847401ad204823c5f077f78c8468e20913dc859012649c94a5af29297a44018c107000578f2 *93a00ca5284529c7034a1293a84ce52435b9490a8cf295b0fc6429f9774a55dab292ac0ca32b63 *c9cb50ce127eb5bce52d73b9c05df6f298bf345f3085a94a62d2cf98c7e46532b9b74c66a2d299 *e99b403491a94748c2d08bffb3e63027b0c9c069739bd2eca63777b8c81700409cb6c466053b89 *ce584e137ad584272ec9d9ca73d6f395f71c5e3ef5b94a7eead29fff24a53ad7395082ca3385f4 *4ca842fed78932422e8ea0d7346831112a51592ed49b0dd5e7437b18d18e7a94a25d34c3177f88 *514c8eb4881c35694071175278beb48931ede84c57575371ded48a3995e84e41d7536bfe948d41 *4de8502b5754661eb58e49fde75211d754613ef56fd034a902a6aab7aa8e7386302da956b9da36 *afc653a3cf8c6a3dc9ca35b33613add914ab4c3f0a49b7a6f2aa71cbea5c518a03bb6614ac3895 *ab4ee99a48bfba14aef3d42a28d95a34c36612b11055ec49f96a03c75a12af9913ac50092b48a0 *39f2b31ea06c65dbe902d09a9603a2e523389f78dad65a20b534c899643d09c4c251a0a58f85ed *0949cb82d96e158f249c006e2fcbd93dca76b6b54ddd3b87fe4b49c6eec98ee0e2ad66950a5c1c *0a97b905edd50a76755cc926d76eb7c56e019cdb260df0aabb8afdeee4ae8b5df2a60903622cee *a7a4eb5bf5068fbdcc75af982e103bf95e0abd63ad6e10f13b5cfd7a89bfa4f3afbbe88b5c01db *96c0b835b095e09b595c0178ae6f846302c2db5e05f389c250b53083bdeb60e58a77bc1eb61382 *037bab0b0f36c370e4707e53eca615a7b0c5234e6f89c10be1964ad8811638288e2deabafaee78 *bdcbed30a4407c501a2fcac59b85b119655c602783c9c6e53427b3721c602967b0c718fd712131 *0bd32d13d97846f6720bc1ec502b5789c9596e1a74177ce6e9a559c3ce4bf28cfb04e738f77756 *50a6ae9a93c8fe6691ba797058f673d8c4fca5404bf5c8f7d57395ebb40145e795d1acabf347ee *8c672a47f8d003bc4041c92ce458397aad90f65ca16d0a6ad65680b8a4de68abf9746a74da57d5 *92fef47b2d70d7586fd4d45cc6309e37bc6a9fce7a85bc7eabafb3096c4d7b90d31af6b48f8fed *4e515bb50296ae30b482fde2614b3bccc7c680a1975dc156d57a9bb7cedab7db3ce164b799dc37 *deb6b319e9da7abb59dc9f863749e5bd5a84e1bbc3fa2ef3aa6c86ae7f9f38c8d94e30bf551a30 *6b9f18d680b5f49c1945706c39fce18f0d384e07ce5b69191ce319876cc2cd496d3c755c591f07 *f95f232ef192b7a9e2c2d280cabf2af284633a7427d72e07667e56fe8d03d5e53fcbf9ad30b0d8 *57f3bcd73e47aab6841e2ba22b74dd4747f8c8e5b6f479e3ea02e92cb6caa53e75069a0ae6a872 *7ad6b50e72ae771d7c5f677aa8c4ce4da8f3dcec679f38a1c0de29b6dbdaed6f4f3a54814e26ba *630aeb18263bc6e1def59be3c8ef92b27b9405ff70c2677bbbd1b57aa614df65c61f5ceffdc540 *b9d4ae28ca9318ef5bc776cb37b079c9470af0be7dbae5c5ebf8b48636f2fdae3bea533f4a771f *3de42cdf3be94bcb77b771de4f15a07d2f6d7ffb7dc2fbf58c0c15e2813f5de1fb12f4a1af7966 *518b6cd8337ced6a75fe6fa13f78d1ff7cf717b4be12567afae66b7ffbab07b8f41908fefb891f *62d837bff6895ffc51fe471cf947ecfdde4cdfa8ec3b9ffef5e7781fb03cfa9769b1e729fe277c *00587c70877f40c629cbf7277a757e45c77d8d974b0e683a10f87b839280b4b780b727026f5680 *65c28112287ff367819797815263788ac47ffde781a9078233c78254e282916482274881b04483 *17487d5746820e038331c8833da882e3d67e6122777612811d288369967ed7368064828354a483 *3b6884aa976b55c60124c75656585107282a1368843ee8541d20674c48804238415898855a5881 *52687f1ab06815b06bfff586cc1787cf878474980163f35a5518866aa4877c06850d66811ea07b *6a4288a34584e5c78772c885b80788df47828ea85ad7b72a88988894f887fe7da67b989889bb05 *894bd6893a266d8b185760d8868767887b2889b46574a0986810d58a93e2848652863cf86aab58 *4e8238266b2830b0788828a8801ff07877388892a28bbb788c1f988636b78cc2e88a80528cc6c8 *87bf3875d4b85fa4f84d9bd82aa878775e7876f1858b90e28ccf787e20608eec378ad60804ea58 *28bcf862ede88e9c2484dfc84ea63829e3b885191047dee78ec1e88de9888db118781aa06e9877 *69c3b83ef1f88263c889a8e80148b67e8a56904b189139d88ffe088d1ec501ca85917ea6914128 *2f08c97cc76891d6459225f990a1c69157e8911f39760ba9450d397da348712999907db8015f96 *9381d88d1b299329357e5787fe501f106d4239945c65927f328f8b724e2cd96903698e5079839a *472a3da99222396c02d994760893aea38451d995c6189060e93e629979ad4685f682966959016b *896b2e996559096440496c5c499396620175c96377098c44a9977b996786229553996a53769571 *579836d401aa9698727988813992b917677979415f795f94e9977fc9984199999ad94655299871 *099aa17999823998fd54434b195ca93991b3229a6bd696bcf339a7195c46195b95698cac7991f8 *788ec8769884d69ba5489bb53968c1496cb8a98682b39b5f3677bf6999cdc990cff98eb1e96d56 *a89831c89cc1d97ad3289ddc7928d5699dd77946d9998f37199ec81903de1983e9fe899da4e97a *c6d99c643984cab99ce0c99ae2d9649d399f7ce927f1299f021a96ae8954e4799d3858a08c926e *a3f9922170a06149a0e7c97c149a6709ea961a3089193aa0b476a1e879a0ffe9901cb0851f9a9f *6ea89a93679bc7b9a11e604f103a9d21caa22d9aa28ea99319d0762e1a45fa22a2232aa025ca9e *3b8a6e7499a12a1a3f36fa773d8a9335f70182d69ffef99e0e7a8a38fa50316a8f521a983757a5 *068aa4ce94a595b7a57599a4fdb39f4949a66b196462ea896a0a9698e6a55f4aa221f07f474aa1 *710aa42a79a51b40818009a6bd29a773caa01d10877f8aa781aaa7184aa8272a89874aa74629a8 *0fdaa4f4d9a7b2388b949a474da8a8fe8bbaa6757aa98f2aa491caa941da983b8762f5c88e770a *a9fe42aa1fe6a21e807b978a7e1f0aa226b7a408f8a6ea79aab20aaaab2aaaad8aabb21745bc8a *74201985ba6a951c29a9dfd9921b6054c1e7ab334a6874c2ac835aa9199084c7eaa6385aadae0a *9cd89aade0f68f5a7aa57362add71aab5d48ae8b97aca61a91e83aa9082a73ac17adb218aaee09 *997df7ad73f9ac6597aaaa9aa9762966f13aa9fe1a7dec1aa5eefa609ba92605bb9829f7af006b *a7d3baab66aaa4681a7367f88309fb6815eb9c17bba219abb1f5d7abf7faab4e9a890fbb98251b *72b38aaf03d6b07bb2b29d3787f9d6b1a8965c5b8992c23a2a363b6d138b8c400479eac2feaf27 *f8895117b442db9f449b8b467b822d6b7c384b8e2cb4b3f3d5b33e8bb479a7b433b8aa56bb8158 *4b863f3bae536ba4bfd3b4ef477ec732b6ef56b6d1645e1c17b6621bb5cd65af8e8ab66927b7f1 *47b774a88d788b2a341b837c8baa6e5b7b329bb7238b725abbb5db4ab5fb183d7abbb77c6b014b *1bb23c19b9d837b894eba68f9b38989bab8b8bb09f67b94efbb9b9aab9769bb3a49b87a62b7ba8 *cbb598aaafca12b8a718ba129b805f8b2db47b8aaf9b7d7fabbb4ffb8cbd3b5dbfeb2dbbfb9dc3 *fb93ab1bb789fb2c6cabadb1bbbce616bcc23bbc878b2ec78bbc935bbcf492bd821bb5b90b30de *6bb001c8bdfc32be931a82d77bbed45bb335feb8bee2dbbecf68bb6808bf0183bee93b63f65b30 *f8cbb237dbb9d422bff3dbb6005c75cd6b71f44bb8d2cb2efdebbf3d27bb2ed3c0358bb4e61bc1 *02ecbe95884f173cc0a0a84c1b4c8fc255c165f5c1200cc13445c28462c20285c2ba458caddbc2 *cdc8c2306c34073cc322f6c2367cb9359cc38026c33c0c2612fcc30eebc3426c80e158c4c212c4 *482c264abcc4404cc44e0cb93b1cc5018cc3543cb3507cc5187bc45a6c6653dcc560fbc5607cb5 *5ec424667cc6689cc66abcc66cdcc647e224e733c604ca3167f22177b00a769cc77abcc77cdcc7 *7efcc7801cc8823cc8845cc81aa2077ccc257d8cc786dcc88efcc8901cc9923cc986ccc87bacc8 *3f898cc894bcc99cdcc99efcc9a01c0796acc7987cc99a1ccaa89ccaaabccaab3cca795c066e1c *cbb23ccbb45ccbb6bcc62d606fbabccbbcdccbbe6c02031001003b binary ./doc/images/RenderStar.gif oldhex * newhex *47494638376134014801f20000000000ffffffdcdcdcffff00b7b7b76e6e6e808080ff00002c00 *000000340148010003fe28b0dcfe30ca49abbd38ebcdbbff60f81440609e68aaae6cebbe702ccf *746ddf78ae177aaf92258170482c1a8fc8a472c96c3a9fd0a8744aad560bd6ac1118d07abfe0b0 *784c2e6309e8b47a1d58bbd5edf7bb2be00e0d8c24a0cceffbff80616705848586866d878a8589 *8b8a7476430c064700948198999a9b7d832f043ca09fa13c2ea24291920b9792ac450baf7cb09c *b4b5b65b02a749a2ba48bc3c4abaa94278b342c646257bc7cbaa0d56c84b0fb7d4d5549ec1a45d *11b9dac744cbc20b7444c5cb784a25010cebafcdd150f048f2f2d6f6f7d8bbdedcbfdbb379e282 *245b858e880a0004da286cc64c95b365b0f23093a840e2337817293ebbc7fe5153be8ac6fa5504 *b74724488901c9b95360c40d428509198e6c3833a24d9aff20eec94871a6c3931d8306fab8b15b *227f248df62a9a729ecf870cd0209ceaae67ce9a3bdfe96c18cd01cd9ff5848a1564f4e11091c8 *6099042aa4693203e6a4119896d4e7b4abc67266ac9447efd5b180c910a58896a15a6f2767b905 *776952babc32217fc599156c6499496f620dcc996caf2385a7859e58b6ceb857ae1ccf8bbcf26b *daad7a7f4e5ea9f96fe7db563e82de074129309692dafe1e56f04e4f29afcdfeed6b983954c977 *31e39eee44774bc4beb0ef86749a98f4b8d4c38befd44d8e1a52e6d3a04fbf58fa4457e3e3cbbf *d2cdd1a146f61981cacf0855fef7f900062898003ef8e05f09fbf1a7e0820c36e8e083104628e1 *84145668e185181a621a82a514e8e187208628e288249668e209587021ca892cb6e8e28b30c658 *628ae3ac28e38d38e6a8e38e23d2c8218f400629e49041fa7814914826a9e4923e186923935046 *2925944e7638e59558667963955a76e9e597227209e698649619839866a6a9669968aee9e69b57 *b609e79c741229679d78e6b9e58647eae9e79f2dde09e8a08436c9e7938526aa680d822ebae301 *07386ae7a1564afa28a4915a0a64a39ac28829a69deec869a82c7efa29a9388e8a6a89a682ba6a *8c460250e9ab27b67a2aad2efab8c7acb88e68aba9bdb268641dc19af86babc5cefec827b1c98a *78acadcd86b92cafd1eaf02cb2d57e382cb5d9da702db4dd1a6a07b7e1caf0edafe5ee306dba38 *9c7b2cbb376c0b6f0dee3e3b2f0df2de6b6ebde8ea7be6bafebec0afbd01bb906fc12b0c7c2dc2 *2c1cccf0090a7ffb700a0e3f1cf1b913a30870c6174b9c71001523dc31c619871cf0c8ee96bcb1 *c828a7fcb0c9f7b6ccefcb2b9f2cb3cb08c30cefcd33e75c73cc3cf71cb0cee506ad70c144776b *f4d143ffcceed24ceb9b74b55047ecefd4cd567db1d44e2badf5d6f3621decd71ddf2b76af6497 *0defd9b4a63df2da5d67edf6dbe9b28deadc2dd71d77b178a3acf7b845f7ed77b876772ab8cc84 *efddf6e188675bb8a48cf3ecb8e2abfe467ef3e480476bb9e4d13eaee8e641774eb9e1a0879eac *e78496bef4e9a35baabad1ac678ef6ebb0078bba0fb4e7aefbee39dedec3eec0076f79efadfb2a *fcf1c8934dbcec3226effcf39cefc97c8cd0576ffdc03afafefbf5dc778f6daac51beffdf8dc67 *1fbeb3e4a75fbdf9d353affefbc9b37f1ab92dc26f3ff0a29e8ffefdfcab9e7ffbeeeb9f008727 *bf20d0af54034ce0e1fe373f1e29f0816ee391f67007c10a564d82fadb9f05377839061ad0811c *0c61de3cd88503225084288c5a014b08a414bab05e9bcaa0065f48437091905997aaa10e818541 *00366f874084540c7df8c320d6b048329ca111538844220670892e6c62035b08c5174af1fe8354 *ace10006a043214dd0433adc6217afc8c22085918b4724230e41f8c22d8a91865e4ca21245e846 *345a518d267c110deb08c7383ab18828ace31b99e8c7299ad18582b4230a87f4453022529077c4 *23915298c8418670527f0424072ba9480e62d29087a463250959482c0a29909ceca4053f69ca50 *6e3295224452233f244a4ec69295651c520853e9c64be2728daeac202f2d594159ca9144bb1ca6 *2f19794c645a7098bd5ca5313379a30d4293980a4cd22c69f9cc6b6e509bcd14df03af194d0882 *939ad5842039b12940256d939be35c6731cf094a5dc6739daaec9f3bc329ce01e2939dfcdb273a *3529c07fe633a0f46ce52413685080c26f49feef8467411b9a4d81d6d39efea4680221cacf7ede *afa1e5d4a74515bad0fe81d4a1e963524425fad1930e50a51df5e8fb4e8a52f2c174a0e9e41f4d *6beabd9b5e14a32da5a948398ad39cc26fa73c2d9f4f495ad2a322f5a0e3a3524ce798bea74235 *aa44fd6930676ad5768e34974dfd9a55c74ad6b226b571d3d46a0ee766d6b6ba559e78fb2a30b7 *9ab6b7daf5ae7c145c42c14a57b7e1f5af6d8d5c5a99aa23d001f6b03b05dd2ff3e822d521f6b1 *fff45f29f95a58da41f6b2b07c1d338b6aacdc61f6b32195ec10d5fa44cb82f6b2f81b2d614bab *bbd31ef678aaa52c4177e75abcc6ef868c6555f26afb56e7f590b4f5831e6fc9babe15ced553d6 *fe1bee53af67dcdc86c87bca05694fc1c759474237baf8b4a9f480abdbf161979c29ddee6a3bab *beef66567de2956dadec67de44de4f462b6d8149db7b56ebc16aaa02cb287637faa2f8268ca1d1 *ad68aef02b5f75d6769e8122f07f8579da6f26b8bade7a2566976922ff9a0095905de4892c1c00 *0c3f56c3155630c46a89da5b2a0bc2fb22718641dc23113f72c2a494168af3eb6118b318442b7d *f167a3d8e2191798920de67188ded946d7f611c753dde38123e9a1596a71c94c16177769a06428 *0bb9408d7c326fd388657e9e71cb5ceec10477a8dc1d76d9c71dfef270cd2ce6669279b907e8ea *18d5e56320c21952770e73bce468e7c4da0aa940a4fef3945910443fffcad073b681e78c28d46b *353ad07b8670a1a55b2f97425ad11964b446f945e94be32bd3938e6cc436cd664625f1cdd94599 *414b8de93a5719bc3213f59571f0451d2bd36870bd710e9c9c4c6f422dd70e6e327e257cebaac1 *5a9a484633a119cc4bb616fb8124f2ef3dcfebd7677b35da221ef144a9ed6c6ebf77c3d946c1b6 *dd6b396fbf6fc0ca9e4150c9bd39736315dd8306915321695a7aa3f7bee98e30f9d85defd0768f *baf196a970eddd5a823377790177e6f5f27a3c86db17b77d6d787d0d3b71d1fe76bc4695f85569 *5b71024ef6b86c14dec6457edbc52ea98a2f95ab73678bf2e96615e3116ff9f3a4c46196cadcb7 *53aab9febc6f5ef29c875be13cd75d97742ef0a033ee4b4407bad11708a6a47777e97363d3cff5 *0875e599c9e927acbae9d284f5f56a7deb579f3a72bfde413575ddeb641f9cd9c53ef6b4d36ded *f93ea5dbd5ce75b6537dee6a837bc2a78477b0ade9ec68ef3b0cdd0478f20a7ef07fb7fbdd0f8f *33bdc3dc4b8c6fbce3d54ba6c8938cf08a5fbce5fb85f9b80375f3364cbce7e50e7ace8b7eef57 *2a7de84fff78c8ab9e876f2a7ce05f3f27d91bfef5998a7de6dbae7a3ad9fef6a5f7fdee351ffc *da0fbfb1b8cfbdee47ff79d0d7e9f7c0b7fcf38f8ffcde0b9ff9cd97fef5518f25dc4f1ffbd93f *3c9ea01f7df17f9ffbdd2ffef65b0f26ebaf9ff26a72fef8fea94f7cc1e789fce5c7fbfde95ffd *9e436fffe0177e42b760b0357f01288016b76cc1a327f8977f8aa56ea96580e89725037803bc03 *8013987e099803b4c380fc577f7af55c0f8881ec57791e577411e4810788805fd37f7de3270de8 *8017c45a6903831fe8825687237165832bc88265b7565af32731288323e48374278125688250c3 *2441c883194881ab23254be88449a88468957ad1a3824f088545d8253f4882f0f7265dd87e4788 *8461e82679b7266908862047272a04276fc8862b67851ea3274243856788869707289227878352 *878902885a588574087b90f32e80328459e72aa4b27a8398877ac888af628878d8866e2844c922 *8995388795a7fe3484a2881f133b5b188aa4f80337588ad5028aa8482baab88aabd28aae482ab0 *188b9d328bb46829b6788b8e928bbaa828bcd88b85f28bc03828c2388c42788ac6288bc8988cb5 *b88ccc888bcef88cbb188dd2e88bd4588dc1788dd8488cdab88dc7d883ded82bc5188eac0789e4 *c830e3788e61078eea882ae9d88e63f28ef08874d39221f6788ff8988ffab88ffcd88f14c2278a *368fee182f35c21e6e100a0699900ab9900cd9900ef990101991123991145991e711070ca9220d *899016d9911ef99120199222399216c9910ba99119899124b9922cd9922ef99230890626a99028 *79922a19933899933ab9933b3993090904fe18944239944459944617b98fca20024ab9944cd994 *4ef994501995523901019000003b binary ./doc/images/RenderTriangleFan.gif oldhex * newhex *47494638376134014801f20000000000ffffffdcdcdcffff00b7b7b76e6e6e8080800000002c00 *000000340148010003fe08badcfe30ca49abbd38ebcdbbff60148c64699e68aaae6cebbe702ccf *746ddfc5ad9f851208c0a070482c1a8fc8a472c96c3a9fd0a8743a2d50afc41ee087ed7abfe0b0 *783cb612cee8b43aa06ea7d96e3757cb151816470079cfeffbff606605838485856c868984888a *89733e420b06450093809798999a7c822c04399f9ea0392ba140744392a996440aa97bae5eb157 *b39bb6979d48a1a647bb39babf02a84277b5b5a9017a40c70e54c74610adcab4d3d20db7d854b9 *bda33fd1be5cd5cabcc3c47876d5ad230bc9a9d3cf4df079e963f202f6d9f94cdb46e0f70f02fc *9dc3430e92350377869c0040808dc374b3220ed473ee5f4506cb2e8ac313fe0b63468b41aefd0b *39d1da3b8af8f461e2e73160b791245d220a27b2e016681489b461e8b021c4931f477254d691a8 *518b4049ba62661465d0a24f9de2cc285565369615056e94c90b69109b755e3d7b7086a1597715 *612e3d2a312acc9870dfba557b94eec76691eaa6b4fa07eb2cad79b906f30a042c2584692911c0 *0b572246a86d91ae7517386a49bb989b8df508952f36bfd300c7f427795cb072212da99a97346e *e7c6555f078dfb767266bdb82957eebcd7332799c0669676a5b52970610653e7ad34ef55e5da5b *851a9f2d576e5bdeb92f5bff39b7b76f32fc8a14bf465a5ce1d3c9d10d2946cf89b193b68b56f5 *caf4b9fca1b3e36fb4bd1c7ffef5efb81cd7cf4bdc0857e029c92544047b00dee25d83100a2148 *1c698c42211a165e68d832acb112211fd37d2822128234620823262ef2498a8b2078d38856b504 *e38c120ab0c30e2ea2c8e28e3cf6e8e38f400629e490441669e49148264908725b7c12c2935046 *29e594545669e5950d584187935876e9e597608629a6955afac0e59868a6a9e69a6c525966935a *b429e79c74d6d9e69b88d8a9e79e7cf619029e67fa29e8a0840a0a689c8526aae8a2681ecae8a3 *90463aa5a392566ae9a515508ae9a69c5eaa69a7a0869ae8a7a2966aaa9da49eaaeaaa8d329927 *abb0c6fa65aab2d66a2b08b4deaaebae16e4caebafc032e06bb0c4ee3a6cb1c8cafe7a6cb2ccaa *ba6cb3d0868a270088466beda96fea51edb5dc828a2793dd86dbe9b7db8a6b6ea4e49eab6ea5e9 *aeeb2ea3edbe2b2fa1f1ce6b2f9ff5deab2f9df9eeebef9afdfe2bb098010f6c7097051facb09b *ae82bbf0c355260cf1c41e484cf1c519588cf1c61468ccf1c70f780cf2c80a884c32c8269fcc71 *ca2a63cc72cb14bf0c33c432cfbc70cd361f8c73ce03efccf3bf3effbc6fd042df4b74d1f31e8d *f4bb4a2fbd6ed34e9f0b75d4e24e4d75b7565f7d6dd65a47cb75d7cd7eadee0064976df6d968a7 *6db6bc628babf6db70bfed6edbdcc66df7dd6b4bdd70b914e3edb7dfe6d20deddf84df5df5de1c *17aeb8e1dc0a5eece29033ee35e213fe476eb9e4cc3aceebe59c635eace6b7762ebae7c0822eeb *e8a8936e2ce502a7ee7adcc49abeeaebb4c3feabeca6d6aebbedbae21eeaeec0f35eabef9c066f *bcf0b0127fe9f1cc23ef2cebe7362fbdf3a52a1fe9f4d8cbbdaaf58c66efbdf6a6729fe8f7e483 *2f2df4d696af7edad5a33ff8faf0e7edadfbcdc66fff00a28a2fe8fdf79f8f0adfc8e29ffdfc07 *0900124b80fd1b17fd0288c0f8cdef7fe96be00039a5bf3d49907f145c60b02e98404c55d04e1c *c4a00735f8ab1076d0521fa4930945884212ee6a852794540ae5044316cad085a1abe104d985c3 *5ae9d086909a219b7e18c34709514d440422bc7a18ab241671514744931395a8a8288a69fe8a02 *4417136787c52716ca8a60ea62168db8c55389918af42a63a9ce384628aa51546c44a3a1de08aa *38b6715474ec941de5d8273062698f774c23045f08482ff6318f982a6420e738c81c2a7287822c *a0ae1eb9c84336f27494ace49efc48a54c6a524f9c9492271118c99b18708da3e423bf1079bd54 *7e72959764952b5f39a750426996aa94932d9f844b43c2529298ec25fc06b5cb1008d3818c0466 *138fb93e62b21252cc6c66324de9c36896cf99b1e4a235bf874d65c26a9be4eb263583094eec89 *f307a7fc5d39b3774e87c9729de69c263aab094fe9b5339d75aca73de5e94e6deaf378f7a4e73f *8d1750720e1478055de6418397d06f2e94a1fefcc4a71e1f8ad0880a94a2b46be83b315a3b8dfa *93a3aef3a8aa40da518b1a94a4a313a919511a52932a94a52975a943611a533f15130434459d4a *739753d1ed94a73db55c29e779d1a02a6ea8fddca8510bf7c567b672a94c45aa44d50955c03535 *9b33adaaeaf0e554496975ab5cc5ea4bbf8a36378a35ab643d9b59bde9c8b4966d896745ab5be1 *cad6b6a6958c7195eb57f15a57bb6a35885d5dde5cf93a4e60dd15b0791d2b54b59858c506f586 *8dd56b4f21db57422e958791752c4b5b9859c9a294b395dddc64415bd8c78d16b3a1152d4c47d8 *59cd6294b5a9552d493775d32fad16b6a54dd667691b5838ce96b7ad2dea411518dc930e3783c5 *fe35ae3e1f18db0d2e9480b9addf73991b5de9fe337fbd5de975a14bd4ba2d17bbc9f5ab35c397 *5da532f379e1952d2e5955db39ad3779e515ae2295155f5b65d256edd553217b575fcb8a9157f9 *ed53174bd75fc31231760576ee0a911560422d98c109366d03c3166106faf27615d6ed30add560 *6886b371197edff40e97de7b354f6f2536314151dcdccae96e6e210ed7ebd81663b01138c5360e *5787732c551e3f6cc73eb6698d838cdf211399be383e328593ace46401b9c9757a32946b69e429 *63abca566e1f93b38ce12d7379755efef2ada42ce65685b9cc486e319aa145e63583a9cd6ef612 *9ce38ca539d3994c58be3363d5ace760d9b9cf52fafe33a0a124e841ff29cf86c6e399138d5c3e *33bac88b7eb4a7102d692147bad294ad2ea6014ce94d83b2d39e8e32a8434de54b93ba8aa33e35 *9b0aadea09b0bad5117835ac4396ea598f49d6b61656ad73fde65df35acebefe759d832d6c3c9b *bad8a23e36b24bede865ef59d3ce6e34b4a38ddbee529bbb49bd76b5b3ad6dd25abbdbc06d36b8 *7b3c6e697fbbdca89d36bad7aaee752b5adceede24b1e38d015cffdadebcc677aef56d6b7ecfda *dfb00678ab05ae6a829fdae0a44678a815ee69866fdae1988678a5252e698a3fdae28cc678a235 *6e688e0fdae38006799f45ae6792df995c4a4ab9ca57cef296bbfce5302f92ab66408a1bd9fce6 *38cfb96ece77cef39e8fa0e631d89286da008aa11bfde8484fbad297cef4a63bfde9508fbad42b *0487a40bddea559fbad6b7cef5ae7bfdeb60977ad1ad6e26a58f3dec684fbbdad7cef6b69fe1ec *47bf3ad2e1eef6badbfdee78bf3bdd87ae8598fbfdef800fbce007eff22dd0bb53014800003b binary ./doc/images/RenderTriangleStrip.gif oldhex * newhex *47494638376134014801f20000000000ffffffdcdcdcffff00b7b7b76e6e6e8080800000002c00 *000000340148010003fe28b0dcfe30ca49abbd38ebcdbbff60f82841699e68aaae6cebbe702ccf *746ddf785ee47c5a2c018170482c1a8fc8a472c96c3a9fd0a8744aad560bd6acf107086abfe0b0 *784c2e97b184b47acd0eb0df6b371ceee57a0506461260eefbff8081626805858687876e888b86 *8a8c8b7540440c0647009582999a9b9c7e842e043ba1a0a23b2da342764594ab98460bab7db060 *b359b55ab79dba499f4aa3a849bf3bbec302aa4479b7b993017c42b92355cb9610afceb6d7d40d *4bd3bbdea902c048c24111e1a55ed9cec0c7c87a78d9af250ccdabd7dd4df8d480f8d3fadf0089 *f40a864e413572069de96127c9daa53c45520020e0a662bc5a18dfc17a97fe30e3ac6dcfd4e9f9 *c871a3479243402edbc652211f8e01350dec3804a1323e083bce62d805c946236f2656a478f19e *cb90090d2255cad464c649238b867c79b46955a737a7529dba3466a69920cf292a2752acb8b03c *efc45af920cdc4b7f660a29c6b74a9497b50534ab56af76a559d7df576fde7750c588e36cbe6a4 *2924ad2503c9e2bd22104d30539d5b953ec57cb9eb65921afd06e60cf5eee7bf840b87395c2b71 *de9cd11cb79aea4a9be5db28f36aaedbb97756a4b9838bee6d8def68e2aacdcc3c92784473aeb2 *53d666e5f322dec1657773f50c2dbb76e374514bce9b1bfcf8e467c4121b8b1916ec498d8bb583 *5724b295df348567d6eadb3bfee8a8d819c75f35c0f1e6007a822c07544104b1d7602a0dd16784 *7d08ea92da7de755985e2873ac514a876a7c0862741952a7213fdbc992e189839cf308228ebcd8 *4828323602614f2caa16968a39fe81450f3ddc18638d441669e4914826a9e4924c36e9e4935046 *29a521c600118a085866a9e5965c76e9e597603a80851d578669e69968a6a9e69a5f8e6925176c *c629e79c74d6d9a59b5d9469e79e7cf6e9a79d782af2e7a084166aa80881ea79e8a28c36ba68a2 *703a2ae9a494c60969a59866aa2997976eeae9a7a05ad069a8a4960aeaa8a6a6aaaaa4a8aeeaea *ab7fb60aebacb45a5a659e91d6aaebae61cacaebafc086e06bb0c4167bc1b0c626feab6c03c82e *eb6cb1cd3e2b2dafd14e6bedacd55eabadaa810290ebb6e0be8a271fdf866baea981de7aeebae8 *de1a44b9ecc69b69baf0ca6b2fabeeaa7befbe93d2cbefbff8aa522fc004f3e96fc1080f7a70c2 *0cefb970c310cbf970c414a73971c518837971c61c6fb971c7200b9befc02197acc1c726a78c01 *ca2ab73c01cb2ec72ce6c832d74c01cc36c78c73ce2defcc73ca3eff5c72d042834c74d11c1f8d *34c64a2f4d71d34e430c75d40c4f4d35c2565f4d70d65affcb75d7fb7e0db6bd628f1d6fd966af *8b76dae6aecd36b86eff3bc0dc74d76df7dd78d7ed35cd36e7edf7df7e87cd77cc80176eb8def2 *c6cdeee18c337ef6e029372eb9e1ecfe2a1eeee488378039dde75aaeede60354007ab89e4f8b79 *07a76b5bbab39363d9bab5ab272bb997b34b1b3bb18ea799fbb2b7034bf99cbf2bdbfbae85fb59 *7cb2c3d30ab8a1c7139bfcabcd171afcafcfab3a3df3d7d75a7da9874bbabbf690c7fb7da38deb *bafda7e33b5a3eade76bba3ea6b58b1b3eb8f167fafaaaed535abffbfb979abff7ef435fff42f5 *3ff5a5cf53033cd5fcac15405225d0530564d40143d540022e505a137460063515c143756f561b *9cd70559973d5785b0521d24d4077575c27e8d50592504610c4528b0cf458f572bfc540aff74c3 *5fcd10852f2c560f7d37444cedb04fcb5b5611815843d3fd0d834984601083f54427064efe8753 *f4e1151958c54d1dd14e5bbc5617399845e2e5cd5c633462195988b77585518d4d54621b177746 *32c6517673145f1de128099299d16efbda2313fb284740f24b902ebca3100d29b7bbd1909078cc *1cc0f29848481acb9108c324a5beb8264a4e529301b324ee189949523a8a93ba0365c13cc92854 *a289959f34652bd7683d559652968772a5996049305e164a976042e42d71f94b5a72cf97bd44a6 *9f80493b6536d296c55464addec8306a128a995cb2e63089192b63824a9b0903679fb0a92571ae *52980af3a6009d194b6876539a327467c3d0f94e514e939dc994e738d589407cb65392d1b4a7f2 *f4394f823a8c9f9bf2673e017a4d84f28f9bfe1053a8c41c6a3f8386d3a275226796307a5186a6 *139eb0e2e83643f7288ac20fa21113e944410a3d8f720ca50765a9095d9a319802caa495b26944 *69ba4f99ae4aa705e55c497d5a4ba19a0ca873d2a8eb785a31a4ae54a0f1342ac8546a2ba2a68a *aaff24692e71aa3fa72e746eb3b4aaa924fa4ca6c614aa21c56a20d5aa26a58a80ac8764abc5b8 *3a29b8aed5ab6c726b08e81954bcae49af20e06b35edda56ba0250ae7444ec9900fb01737ed5ac *3715eb3109eb46c11accb006a4ecb91c1b59b4a655b3f4b3ec65253b59c56e8bb39ded891f7f0a *dad3b676b1983dac69b9f85a333176afb585e26c614bdab1e6f659a2eda96707ead7cbed96b7c3 *fe252e64f558dca7aaf692c72de47285fb5ce84eb7b2d71d6d72952bd5ac6a3594d5b56e77cb0a *d641867791d9756d73931adb8aa697b6ef3deb79d11b5f124677aebd6de97ae95bdfd4becbbefb *25e26f0b9b5ffd06f88ff725f076117c60ee36b8aa0b66707fd918dcad16f8b3092e6d86153c5f *18a256c015b6708471f861093f98bd17c6f080fb99c6477658ba2b766f8945fc620fb718c43336 *d46dc3b4c47b46118b298e6a8e35d8e34db697c83716f290757c640afeb0a8453672901d1ce275 *4659ca23a6620e67ba65206759cb4fb6f295b15c63dd8ef9a45d56e0947d1c6634a7d9cb6536f3 *9933fb6638ff178d157c680bf9186739cf197b79b6fee09a4d9c64d9d659cd5fb6719ba51768ff *3559c585f6e09eedac2f791d5a85976ed7a0f9bbe4384d5ad089866fa7d594696e3d9ac491ded3 *a24dbd6900c7f8ad3f06d68e195de5548e9a54b306f48651776b47b75a8cafde40af351d6ae69e *98d7c176f19d6bba6b0bd4da7ca7f633f09a2dc55f6f76c2c81eefb472ede64e621b7cd666aead *bf4bba681bf74cda869bb9cf1dccf23e2edc81fc92bb13b76e97919bdef07edbb5b8adefb016bb *dfeffe37c0d556ef81078bdf066f68be132ebc82337c57087f3875972d71ac39bce2d8ba38c6e5 *b7f08d534fe31e67b5c043eeac88931cc27d3e79b93baef28cb3bce51c1f39cc9d07f299575be6 *36fff8fecb734eec94f3fc5926ff799b6a2e743253bce8aa233ad24fa9f4a5fbdbe74ea7f9cea3 *aeec4a53bde44dbfbac271aef59e1fbdebc8cb3ad8276ef5b14b9deb66a7f46ad3ee72b4b3dd8e *6e7f3b9fbf2e77888bbdee28a73bded977f7bd7358ef7e8f39d4038febbe13deb6863fbcc612af *782f05bdf10f783ce499c5f8c96b49f296f756e5338fa8cd731e0498b77ce8273f7ac897bef1a7 *577cea0fbf7ac2b73ef0aff77becf73e7bbcd7beeeb7977beedfbe7bb6f73eedbf377bf0c73e7c *b017bfebc7d77af2afbe7caa373feacf777af4973e7da457bfe8d7177af67fbe7d9e773fe7dfb7 *79f8674eaf2999fffce84fbffad7cffef63bc95d353005907de64ffffadbfffef8cfbffe4b20ff *199069446f200a0038800458800678800898800ab8800cd8800ef8801e220706f87f1328811078 *811898811ab8811cd8810f28801368250708821e58822678822898822a98062448801458802db8 *8232388334588334188300c805eeb7833cd8833ef88340b87e5df079b412000900003b binary ./doc/images/RenderTriangles.gif oldhex * newhex *47494638376134014801f20000000000ffffffdcdcdcffff00b7b7b76e6e6e8080800000002c00 *000000340148010003fe08badcfe30ca49abbd38ebcdbbff60148c64699e68aaae6cebbe702ccf *746ddfc5ad9f851208c0a070482c1a8fc8a472c96c3a9fd0a8743a2d50afc41ee087ed7abfe0b0 *783cb612cee8b43aa06ea7d96e3757cb151816470079cfeffbff606605838485856c868984888a *89733e420b06450093809798999a7c822c04399f9ea0392ba140744392a996440aa97bae5eb157 *b39bb6979d48a1a647bb39babf02a84277b5b5a9017a40c70e54c74610adcab4d3b7d67db9bda3 *3fd1be5cd5cabcc3c47876d5ad230bc9a9d3cf4dee79e763f0d7f55ed946de02dddbfbb178e220 *49ab7467c8090004d8283c37ab613957e5fc4564b06c22383cff2c4a0cd2fea022478bf4ec892c *828f22107dc6f4e893582ee016687ae4b541a83021c376ca326ed4e9cf634f933d3f42bc593166 *cea33e75861cc97448c988282f0a58c93288cb3aaf9e3d3883b02bbb8841877a7498d428bb4838 *cf8645bab6ecc6a6708f3c9d1515edd47e45a75da564a098bc54049ad90dca52eccfb485cd0ef6 *b9f6215b9e194d028d4b59d8dd3a40eb7ebccc4bf0de5545595122bb98e7e6c3a799113d8dbaad *6bc87fdf568e8baf48d466b78b5e3e2590a36855305f9546ec36326bc28c091b863dd634bca5b3 *6fd52672bbe34a7027838d3337c4af33a9795f1b0eaf7a78dee5694d57ed189df66e6d88b052c7 *9b4f7bef8244bcb7c7047d7ffe7b4171a4314a80680c48e067fbc453897f7c1c151b83fe09d288 *218c4cb8c827162ec2db4b10da3359871d5ab1c30e1b5698e18928a6a8e28a2cb6e8e28b30c628 *e38c34d64888303e7c12c28e3cf6e8e38f400629e4900d5841878e4426a9e4924c36e9a49046e6 *a8c593545669e595580219e5164866e9e597608699e596888869e69968a61902995daae9e69b70 *bac9e69471d669e79d54ce89e79e7cf6f9a39e7e062ae8a015004ae8a1880e6a68a28c365ae7a2 *8e462aa998904e6ae9a579e2c8259d9876ea2991957e2aeaa820844aeaa9a85a606aaaacb6cac0 *aaaec68a2aacb2d6fa29adb6e66a29aebaf6da28990070eaebb0926ea987b0c426fe9b28999a2a *ebecb29afe80ecb3d4f2c9ecb4d566fb68b4cd6aebad9dd77e2beeb6a8603beeb95f868beeba66 *aacbeebb5eba0befbc55ca4befbd4cda8befbe43eacbefbf3efa0bf0c0a5726b2ec108672070c2 *0c5fb070c3104bf070c414176970c5184f3071c6146fcc31c41e7fcc70c822234c72c9039f8cf2 *bf2aafbc6fcb2edf0b73ccf3ce4cf3bb36dfbc6ece3a9fcb73cfe2fe0cb4b7420f9d6dd146538b *74d2ce2ecd74b24e3f3d6cd4250f10f4c5195b1de4005a1f8d35c55c13c975d7cf52fdecd84a8e *4d36d45f338cf6926a97dd36c17137a9f6dabd9aedebdd54de8db7ad7ae7eab7957eff1d6be0b2 *168e65e186b38a78ab8c7bc978e3a7fe3e8eeae4604e4eb9a896938a79989a1f3e37baa19ba9f9 *e69876dee9e9699e8efaa4aa5beaba9baebfee68ec91d60e67edb6435baeb8bcd7c97bef84e28e *e8f0770e4f7ca0c6138a3c9ecaa73e3ab1d1f3a9fcf27b36dfe7f5815e8f3db8d3ebcabda0de47 *aa3df4d50f5afeafe1db9abef3ef237abe9df1c3ffbcef901ceceafd8cd6af68fbb1e25fa3fcc7 *3c00ee4f77b20b1efe5ea2bf5429f0520214d4fcdef4404c45d04f13a4ddec445541091af0721b *1c550731f8c15385d073272ce0ef04c73a5621d0832b745fe920d74218e68f859f0b600d4918c3 *c4e5d0873fec53064d174420464e8537ac551195b8c43b0d1174471cd60cad55424f4591fe7a57 *cc5e152da8b8b365d1895b4ce0e0aad544383d517263ccd617c9954417a6515b6b34631825f546 *6f75114f67bc521dbf7547f0f5d084755bd71ee5f8471106925d8394d31c07f8b679f10d8c85fc *d4211d39c937e5b16f61e357251519c9d565f25f9b4cd3259df449803592906de4e0f7c6754a4e *a6d28aab3c572b45b948e7812d964e1a65da30564a5a76526ac943250381a93e4bd69298d5d225 *321728ad65beec98ce549632a3f9bf5f52f36ad6bc26d1a0a9cdbc71b39bb99a2638b598cd71ca *ad9ce694e637d3e92a71b2334eee7ca731d1294f6fd2b39ee15c273e4915cf7d9ea99ffea4943e *03ea298012345d033de8a50caa502c31b4a1fe567a28443375cf89f233a116655f45337a2b8c72 *547e1efd680570b924895293a4250de9ee788952259934042de5634c93f45210f4926e3745534d *6d3a532ff614542a8dd32cf715ca7f0655a839a557518dbad1fe25f55d4b65ea2b55f954d245b5 *5d4715de50adba5535ed74478f846a58d9384c3776158e63256b33cd7a566af551addd02e15593 *f556b83610828974561ce7395540a6d5a77fb5ab0ef3bab7bdf2b5ac07242c0e15eb4ac4d2b0ae *bd9a221eb3baa7321a91b18d5deb65e72a57c842b2af0eb46c68452b4ccd6e96b392942c159b8a *57d2a656b5e4042d5b3d6b48d8c6d6b1a70d2c556d3b59d67291b7bf05ee67719b5bddb6768748 *fe246e71517bbc175653b68f45ae1853985cd32e56b8cd75ee7395bb5ce36657bb36e46e77995b *d90b5637aee21be1a10878debb8e16bcea632f0fa13b5ef25250bef3152f13cd5b5efc0a91b2df *852ffafcfb5fdfa290bf48257081e97b5de96a15c1c503b0a3208c260587d7ba6e1570ebd46b3e *09d351c34404b146194c57ea9e89c3b0f3f0710d8b46074bcfc0e9756d954c5c5015c392c533c6 *ee426dfc5accda4dc63b8671897d9c361c7754c843f62e9380dca9af3ed8be3e32f2a89c4c3f25 *0f89b6ada272f2a0cc532ed718c968ad2a90acdc4e1eef77c96dad9596fd2466b0b619706666a1 *d8de0c6730934e4874cea79d63f653cec559a49945fe2fa053b5e641afe9cf8696aa7e13fd6512 *337a57887e34980a2de90d50bad20a8b34a61daae94d47b4d39ea6a8a3430dd23d931a9ea03e75 *be52ad6a97b2bad5403535ac7d39ea592f78d1b6beb0a0737da84bf37a01befe75b05e2d6c1e05 *fbd7c7e675b273bd6c5b377bd6cf8675b45b3d6d5557fbd4d72675b643bd6d4f777bd3dfc674b8 *2b3d6e4997fbd1e76674ba13bd6e43b77bd0ef0674bc453aef8fd69ba3f7ce68be2dbaef89f61b *a2ff6e68c0153af083169ca0070f68c2fdb9f07d361c9f0faf67c4e539f177569c9d174f67c6cd *b9f171761c9c1fef66c8b539f26b969c9a278f66ca9db9f265b61c992f2766cc813973a9d5fc69 *37675a9ece93b673a3f57c683f075ad07b36749d15fd6647a7d9b56cc4f4a63bfde9508fbad4a7 *1ea368cd801423cabad6b7cef5ae7bfdeb601f01d66370a403b50114664fbbdad7cef6b6bbfded *708fbbdce74ef7ba0b080e6c2f7bdef16ef7befbfdef800fbce0075f77b4e73d476d373ce117cf *f8c63bfef1903f83e2d5aef7b54f3ef298cfbce637aff9cb9b5d0b540fbde8474ffad29b3eea5b *28b6a5029000003b binary ./doc/images/Reshape1.gif oldhex * newhex *474946383761a001b601f50000000000ffffffdcdcdc3399ff3fa6f8eef6ff66cc336633669999 *cccc9966cccccc999999336666333333666633cccc9966669933663366996699666666666699cc *66ffffcc999966cc9999333366339933ccffcc66333366993366cc66cc99cc99cc9999cccc6699 *99b7b7b76e6e6e8080800080803399664e4e4e33999966cc9966cccc999933cccc330099990099 *cc0033660066990066663366993399cc0000ff0066cc99cc330000000000000000000000000000 *000000000000000000002c00000000a001b6010006fe400160482c1a8fc8a472c96c3a9fd0a874 *4aad5aafd8ac76cbed2e03e0b0784c2e9bcfe8b47acd6ebbdff0b87c4eafdbef7834296f270d03 *028182838485868788898a8b8c8d8e8f9091929394959697989988249a977e00809da2a3a4a5a6 *a7a8a9aaa79c23aeafb0b101b1b4b0b3b5b5a19fa10225448800abc2c3c4c5c6c7c88aad24cccd *ceceb3cfd2cdd1d3d2ba7f8344258600dcc9e0e1e2e3e4e4cb69237be9e8ea7b68eb81bb84dbf3 *df8543f39df8e5fcfdfeff9ace255a070f11c13d03110a9037c8d7be400fef05080691a2a02390 *225e2a02b0a3c78fa5041a6c0728898083a12c0a09549061c35fbd544a9cf847e6438d8a706e94 *09b2a7fecf9fca4e2a3c84520812a1d14aeefbd532dbbd21257c11220360c4acab362dde846974 *6930981c2b76bdc8d528d0b368d38aec6ab168447c45d9ee6b0aea103e9eb4aa5eb59a95ac58b3 *1a7f05a608f62b61ad3cd32a5ecc6f6d58a4f0de068bcb56105d5ef970227155b5f3bcc766014b *feeb37b468d23a19ab5e6dcc3157b72ae19224fbf072b7a865bb8dc0a8ed30edc25eff1a416df8 *716ad6c8939b725d7bf6e8b8bc6dd7abe82d11d7c1a5530bf61ddcf4ddc4c7958b1f6f69ad21d8 *18d153471acfe9457b5de17fced7bbb4e9f9c1bb77bf4f9abcffff939857087ac341a70d4b0ab9 *1413210e25e6c868d415a7df611c0dd7db77a001a8e18687fe08480865e7cd3612367505225521 *0d7a141e872cb6b8c832b8c0d24e8cafcc48a3742bd90555472bbae8e38ff10865cd33d50c494d *3a4652d35e89abf508e4931c72c2871c4b1699e4955866a9e5965c76e9e597608629e698649669 *e699689ab9d01fe978e1e69b70c629e79c74d6590418a0a09167187b4ea4a71879f61928a07812 *ea279f6ed4324d356b82d2a69d90462ae9a49456ea44a17f1a8aa9197df269c4a6870a8ae7a701 *8429c6419cecf2a8a5acb6eaeaabb03e016a199d8a7a46a7b3823a28a287720ac720a8361a4dac *c4166becb174e63a46ad9ad2ea2c5586da8a2b4d7f849125b0eda4cae627c876ebedb7e02aa16c *b3bd960bedb9fe984aeba9ae6b4c1b06b68caaca6db8f4d66b2faced0a4a441aeedec9eea8a0ec *e9efadfb963a4d5bd90abbeabd0c37ec309c53462c87bb7a5a96b0bc0f67acf1c65448ec71be14 *8b210dc2f16ecbf1c928a75cf0c72cc3316da01697ece8bc2ad76c73bd2de70cf2b205c38ba4c2 *34df2cf4d0c5ea6c741d3e330334d14c37fdead150c791b4b6333b6df5d5911a1d32a02bb79c67 *2c179b8cf5d864bba975bbe44eb9f2353f635cf6db705bc175c083763d30dd020fec2baf78cfbd *751d540f1bf7e08437116da1d5861aadc0693fcb33df8dbf61e4d285576eb9dde996bb6be6bc8e *bbace3e6a69bb81bb6964af9e5a80f7eb89fea42be37bf008f4b6afee76d1c0186d26ea7ae7bd9 *ab07bc3ae7a0dffa7bb3cc7abab5bb812fbcfbf24ef7aef9bf14fffd7ce8d3eb4d3bba80261f34 *f3dcdfec7ce29b2bfe7aa634299bf7e7d863bf67e0006cdffdfb2a73eebbdd2b873c3aa735c99e *3ff15dd3da35d5c1701ffc06983135482f6afc7ad9dcd410b84611f0811b332002e7b03ff45990 *560d1420043718ae094ef07e9ebb9db01cc8c112e2cc8347ab20b5b6964113ba905e288c61e4ac *35420dbef086ae92a10e5958431cfad0583a8c2108c7d0c21f1af1694144a00acb50c4233ab152 *490ca2de9af8c42a422a8a322c1d15adc8453961318a81da6217c7e8852f0a71606224a31ab360 *460f6ab1876b8ca316fedaf8c168a5518e7884021d95b82e11cac386790c2412f6a8c40ade5190 *88b41d217578c8443af2808bfc58fbe0f8c84a5a2f92086ca4250389c9186a729378ec240a3f09 *ca388ad283a42ca51a4f39c154aa728caccc24255f89c85846cd95b4b4a22da186cb5c3e719747 *eba52f8f084ca30973983f2ca6ce8e894c1c2a3367cc6ce60b9fd9b2684ad384d4649935afc9c1 *6c7e6c9bdc84a0373d06ce7012709c122ba739e187ce88a9739ddd6be794de094fe6c9930ff4ac *e7eeee99877cea3375fcc4833fff79b980de61a004ad9c41fb30cb842673a17440a8435507d139 *4874a270aba8451b8ad1696a340e17ed28d93e0a528e8ab484248543484ffe7ab5944acea42c15 *a74bdbb0d298366da63485a94d07885336d474a743ebe91a7e5a27a1b63165464d03519395542c *22b5a96658ea9ca00a46945195893a65d855a568d5ad8a2cabf7f26a16bb2a56d3fd91ac652de4 *c9d26ad66c00f2846c8dda53cb2a552fc655ae68f56a5de37457bcae35ad7b85585f5398d7ad06 *f64d8325ec5fe90a567b25566b85bdea61cdf6d89ccd55ac932d6365bd1659aa66b60b9be5ec62 *31db58b886566297d56b6961785a8fa5d6b0abed606b51db59a87e960bb3a5ed68557bd6dde6f6 *0eaf956c6cc1f55bb5d5b6a9b7dd4271f9105ccf0ef75bcbcd43736dfb5c6f45170fd3456e75bb *755de01e37a9c99d6377eb90fe5df06e1759e325ef778d1a5e36a69782eb156a7bb1f05ef8fa56 *b8bde5587d2716df9ecef70afb8d4379d97bde6305d865fdc5e97fe57660d22578a60bae42831d *7c5fe7e637821366c380e55b6020661864fa056c878bf661033ed8a511ee5889135861ea5e5863 *2b66718819fbe202c698602dd66e8d1f76631ccf98b43b76588ff19763f306b96143f65f91097c *64ad2699674be67093c3fa64bf6198c66e3df18137ecdf1113abca5686b188a7ec583003ecc7bc *cd72943fcc65057b3956663ef39581ac66343fb9cd107e33bee28c6714eb198966ee734a533c85 *38af70ce69aecb5b591b682d9394d05230b4a01ffde71cf2d9d11f857414248d69fe8d6a5a8f97 *5eb39bc96cda2a4f3ad3956e15a7459d6752331acca7f674aa59b56a3be3b7ce88be73a72bfa69 *5985dad616c6b5981bcd6a3fbb5ab6c406b68b856de364e7fad68ade757a63cdeb595baad6cf0e *76b48bbd65692fb4d797fa75b697bd6d65df98da1005b7e1c43d6c3a977bdce7f6b641d5cd046c *b73bd1805834b2612def80d2fb0bec6eb6bbf3ddefe8a2fbdbd68662c0793c666633dcd9f786ed *b189bb702137fcdd114ff2c1e79d704ad95be0f82661c687bc717f777c521f7ff8c0450e725d17 *5c9eff1657c5917c7182733bc025e767cc9390728b6319e32dd7f8cb617e7249f59ce63fb7b9b9 *639cf37bee7c90337772d259ae7253fe0fbd9d4f5724c483ae6da5c39be9574767d667c7ef9ba3 *7ae2d08d3a95a7ae6f8a6fbdea1277b8cfcbbe7426cb1de974ffbadd810e77a19b5dd668b7aeda *cbccf6b0cfb6e9440f3c77075feab8f37dee56ff7bb5158f5ec6bf3ae46d4ffbdb21ef78af8fbc *c788c77ad1b366f97d63def0ad0dbdd8477fc5d2bb7de59917fce6f17e7ac94f1bf5d91cfb25fd *5e7729df5dea79ffbc8e7fbff6e0739ddc9e3f7ebc6d8f70ca1bd8f59a873dee43abfa71eabe7f *2eef7d979defe1d903bff6dacf70f5bd79fd21927cfacf2c3f24273cfedcb3de4e47ff7ee7a9ce *79deebddf78fa77df6efbf7de213def87dd775f4a77ff6277c46e67f8d5780ca7780f927fe7f0a *1880c837800e787eccc771dc4762de577ce0c77fe2877ecaa47ef1a781f3177b8b9781ffb78106 *b862ed474d20087db2277d15785d2b987eef57542e588230187eece781c5d48226988002488295 *f7839737823c985833f88135c85444687a461883067784bbe48300587f4128857d95843db88440 *55336ca57e5d887235278161b83c5fc8856508854e878669c881ad86806d683967788171883573 *088775483877d8807928876328847d68877f1888dcb387c9478805358888b84f8ab88800d5888e *9888851789a8638864488923058998a8879ab88971638980e8895ed889a2c83ba4588a63038aa8 *485193b88a6fa38aaef88aa7188b37358bb4fe4834b0788b82d88aba6835b9d88bcd638bc0388a *bc388cb8288cc68885b10486c92873c5d88c36f38bd0188dc8388d0bb87787688d6a987878a88d *22086dd9e88d29887fe1288e10387c7c688e131881a1a88edd9783eee886c6d68df1f88228588f *56c88ef8288f83c686fb085ad5f88f38788f020984fa589004788508b98ee8588e0b3984f0f890 *4e088e9728915f169016096811999103f9841c197d04f99118b8912239922159927bf68c280967 *18b99246d7922ed97a2a1993aa069334c984247993d766933ac9573cd99388f59340a959333994 *a4579446097f429994e285944c39554bf9940016955229617ff84d20e520995000a13002286068 *fe60c940357423644923ea509632a29598c0952cf19561f99658f54768399732720b74e907a7c0 *9627e19670d9977ee4567419986779976a79097ae9957e9998191498776997738997a670987c99 *986f99416932268569099249997df95fa8b0999c599935e422a0199a609941a4d99593699a6686 *9a2d529aacd99aa3f99aaa199b86e69a2c029bb6f964b8c921bab99b43d69b1bf29bc07963c2a9 *21a5b97ec5d95dc70920b0a99ccbb95ccdf91fcf199d2b96410bd0000af02e864001def99dde89 *16ba099dd6395b19e49d0ab09d9831080b909ee9b9000b7001147016e3599e19d6420b1000edb9 *9e81200220b00221100216a000edb900f3f913f569fe9f0d869f06da00fcb90020a0022720032e *20021f2001f0d9004091a00a1a602d1406f9490821000215d0011a60023110011780000b30011a *8aa0b539431d1a5d1924061480192150012d50011ea001326002de89001b800107ea131c3aa3ef *9541eaa99f9821021e70032ce00127900226c000147001e959a43d519d48ba5f359a9f0170a383 *30032aa0010660022230002960031240010af00019b0a1311a425dfa5b351a06622a0814400029 *200327400303f002290001588a010e20a76d793d75ca9c351400ea19a28390023440a134f00234 *00011970010f40a488ba978bbaa03dd4006e9aa782c0003310033360a9de290118f0a61cd0a988 *f9a91efedaa80a70a3903a0830c0002960aa07c0aa0fb0a9870aa3892aab5e4aab6040aa844001 *13200209000218f0ac091001b0ba9ac4caa87f04a64c7a08dec901dee9000e40011cf0a2461aa3 *d857ade6d9a878ca9fcac1a5e65a5cd849010daaaec9c1aeed9a5bd3e91ff45aafad75afe491af *fa1a5afc3a1efefaaf9515b0e231b0049b581954000cdbb00efbb0101bb1123bb1145bb1166bb1 *734a3d093b58774a52c34aa71bfb874f12ab201bb2b037b293499e268b8d0bc1982efbb2304b97 *6e59ae2b0b8a2870b3389bb33abbb33cdbb33efbb3401bb4429bb335bbafe85ab4483b54479bb4 *4c1b554bdbb4504b437f14b5542bb56e55b555dbb158dbb4fe5abbb549dbb55e5bb4601bb62b3b *b6641bb2667bb6099bb66afbaf6cdbb6f5fab6706bae723bb7c45ab776fba9789bb775bab77c8b *a47efbb71d1ab8e3543a50530382eb494f2b4450832bd089b87400b989db4a8b8b422a3b31e973 *416120b972c0b9993bb9fd84aebb87b9f4033e777338f5432d68133c8a1a009c5b03b0fbbab12b *06b32bb9b1cbb9970bba7ad0a8864b1564e7bbaef32fb413288c533e20db2facebbab4bbbccabb *b96060bb90fbba32aabb2535b5b92b3cc13b3dc30b3dd3abb18e6b06d24b06e13bbeccdbbad42b *07776a7e14a46498433ce6d3bdc81b399eebb9cfcbbce37bbbf47bbde7fb978ac635d295bcb3d2 *3a17f437f1dbfe38f35b06e4ebbccd3b3efbbb5153abb95046b3efcbc002ecbeb093bc9d42bff4 *bbc0cd9bc000dcc02f65bdddab61a0d3bbe7433dbdcbc01adb2b1becc11dbcb9d15bbefa0bc26d *d5bf2bf4bfec0bbcc6233e03bcba329a271becbab30bc3b04bbb450cbd455cb2342c960fec5229 *bcc42c58b9506c9d843bc59459c556ec97589cc570b9c55e35c38b643f1a05c64a8cb9da24c51f *44c6e6a2c62a0c42ea1bc6e463becf94bbc5e35ad584c67584c372ec351f0cc7a4f3c510cc326c *ccb6a7db3977531375e3c6116cc6bd52c82154c743a44026363a7a33ba7e73c188d237fe6b3c94 *2cc19cbc40e19337e0a3ba9f6c6284e2c98796c99dfcc6aadbc981fe1c51685cc1a12c3fc6bbc6 *16fc06c52bcb9932cb9f4bc0c3c3cbe323c68a33ca6953c72b5c3d7da4cbb50ccc714ccc71bccc *c2fb2ccc8cbdd57bb5c19cbdcec33ae462b82aeb3bdcbbc7bbf2c492fcccdf5cc6c25c37db9c3e *4fdcbaca8c3eeddcccf0dbc3da2bcdd11cc90e6ccdecebca5646cb261c66ebbbbdf37c2ed33cc1 *0914c1d5a27544f6c6e11cd0dfebcf7a62ccc04c2a2ff3bbd7bcc701bc38962c3efd8c4fb14c30 *16bcd01b5dc6988ccce00c3c28dcc78f43d01254d2c39cce9a0b9dceccc3321d3e165dc2f1fcd1 *b563d2c63c2af76cc300bc39ad83ced7b3ce2e83d32c3dd027fdc749edc3c70cd22efdd4b85cce *33add2240cd0cf5cc1fe173ccde33cc269abcc270cd2c56bd59a0349dcbc290aadd318bcd2681d *d01674d62d3dd4eafcc3bf73d0c95cd7eac3d4440dd7d97bced1bcd45c8dc78edcc8fbe3d4a56b *baf7c3cadb5cbac75c3e86ddd8a2ccca955cd893bcd8882cbcbfbbca04acd8a22cd8dedc2fa89c *ca6ced3f569dd11a2d67ecdcd3f9265789cbc615b5d53ccdc4f87c3682cbda0b653daeedb44dcc *c58186d2fc9bdaba9d6caf4c4478fcdbb0a6b4b94d47b41ddcc015d5857b54969542769c3e359a *d779cc5cca6d07ca99dc17cdc729bdc9d6cddb453dc2e26dcba8153cd31dd6fcb4d35924c8d72d *49e0cddc3aa3de233ddfb44ddae76dc8a93b439a7c6697ecdd87f6d832c6fe38927dd57d8438ab *ccd9e8bdd88e03e07dfdd205de38be3ce0a0fde0375cca3e26e098cdc9c773ba128edd9d32dda5 *ed3a34edddbc1cd2027dd3058ed422ce3fc14bd72baee0e852e2723dd5bd6cca6b2d3b467dbcdd *cdcc64bde30dfecf56dbbf9dfdcd230ed058fdcae8edcb39ded4374ed26bbdd0459de43ffee254 *ade37b1d39e28ce23f4edd505de288ddcc20aecd245de4e6333be6b7d5084dc118edc9505ecf52 *0de5ddbce47c1ddab77dd7f35cc0284cd1718ddfedcbd4d573d940dedb0bf1d641ed39754ee1a1 *23df048ecdbbece6573ee6227dcb34be37487de8728ee5100edf6f3ede10fdc80be4e7616ebc85 *bec296aed78a9addf2dce393feeee434dee69afece274ee7bcfdce785eeac143eb39bde4163ec2 *1fcebb764dcba46ed30c9de935dde9a14de5776ed632cec35feee8274ce95b3eebbf8ce946aee5 *4e4ec9b95eed350de3bd2ec27cae2fb5fcd31d2ed166fed9afadbda4cdd88f1dd11514d9e1deec *6bacd905edd81a5eefd48ce03a6cdafcbdeb0f3dda4bd4ec31cde03e16e041eedbc4cd7493ad54 *c37df0e365eee0ecc50cdf5db60ef111ff5bfd63df3574991abff11cdff11efff1201ff2223ff2 *58222c2a55f15e9a958e22988e19b32efff2301ff3323ff3345ff3367ff3389ff375c998aac2f2 *3afff3401ff4423ff4445ff4460fb383f9986ce2f347dff44efff4501ff5525ff429498f963ddf *98539ff55abff55cdff5535ff565f909243ff6645ff6667ff6689ff66a8f3755a94a4100003b binary ./doc/images/Ring.gif oldhex * newhex *47494638376134014801f20000000000ffffffdcdcdcffff00b7b7b76e6e6e8080800000002c00 *000000340148010003fe18b0dcfe30ca49abbd38ebcdbbff60f82841699e68aaae6cebbe702ccf *746ddf785ee47c5a2c018170482c1a8fc8a472c96c3a9fd0a8744aad560bd6acf107086abfe0b0 *784c2e97b184b47acd0eb0df6b371ceee57a0506461260eefbff8081626805858687876e888b86 *8a8c8b7540440c0647009582999a9b9c7e842e043ba1a0a23b2da342764594ab98460bab4eb09d *b4b5b65f9f4aa3a849bb3bbabf02aa4479b342c6af0a43c8020fcb7cb7d1d2d349b9bda5411102 *be5ed0c742bcc3c47a78de96250cca93deccd4eeefb7d648dccd10dbd8f5d07ae192af0b06798a *a40040c08d4173f59e1dd3c7875cbe76f0224a8c22afc1107ac860d17b38fe8b5f1724b0106e63 *43d0604184c666a90cc970e1c497309d547488d19c467c0b8d79bc13ab1d84340483aeb2a830a1 *d19531932a2d325327be8c7c363ebc184cdc24800e411270b6cea557a447452e1d1bb1a9b79a5d *3772ddf90a13ab3d2951b26b19f6ab58b278a7c93b52d359df9cf7227dbcbaee12dc585ded2a4e *9835af63697b8df4751098974d7055fb0909380ee213a8758d32befbb8f4a6c845a4f2c5392ff3 *e072478a910ee4d9b4ed4084e6ac29a55b0defde6cbf81fcb789e1ecdbc8cfdc7b84c811f346a1 *9e374aa55922d1e4d80161e9d1837a97e8d2c38b1f4fbebcf9f3e8d3ab5fcfbebdfbf787840109 *25a2befdfbf8f3ebdfcfbfbffe032c76d0e7df80041668e08108f207e07c5c24e8e083104628a1 *7e0b7ed7e0841866a8e1861256a80887208628e288227828208928a6a8628a265eb8e28b30c698 *608b32d668e38df9d188e38e3cf668818e3e0629648f400e69e4912f1689e4924c72a864935046 *e9e093525669a582f25978e5965ce698e5875d4a38c098649669a6996176f8e58969f677e69b70 *c609679b035249a70772e6a9e79e67de699f9d7e5ec0e7a0840e1aa807801e0a41a18c36caa7a2 *18240aa9a39456ba27a4137808808b980260e9a7a0cad9e97f59f2c1e9a1a1a6aaea9ba36efa65 *a9a8ae2aebac6462ea21ac74d2aaebae031c7aeba95cf22aacae7efe9aebb0c8d2fe4aa7b15d26 *eb2caf61327be5b3d442bba5b45256abadb55562dbe4b6e0720ba5b748866baeb84b926be4b9ec *12dba4ba41b62bafbb48c2cbe3bcf8d23ba4bd38e6ebefac47f25be3bf04032ca4c03116acf0aa *07bf0aac8c0b47cc30910ef728f1c5a952accac32b62ec71c638224ce2c724831a72c50397acb2 *a5378a0ce2ca30b32ca3cb1bc66c33a533a3fce2cdbd6ac0738c344fa8b29b2527a9338a1e3f98 *b48a414318f1cb0b337db4880aa758358a4d274830c4ff623d3587fede9b2f89591b88efbaf38e *583681692fd936886bfbd7ae9573c3fdb5d0e7369bb7937747b8779a7f6718b77ee6c60aee8683 *e357b8a28b6398b87de1b61ab9e37dfe237878ab0c5caee6c6786b8bb9039a43f83808db7e1e41 *e9118e8ea7e7a69fcefa83aa77506deb15cc2e7ae503da4e3b05bacf883bd1ceee9e01b5b0ffbe *1ff1c20fffec94c6e7877cf2ca27cb3ce796070ffd06cb2318bba0d25f2fbbf5066e5f7bf7deaf *8eec81e2f37e7ef9a4af5f60fa1290cffe07f2fb07ffa2eecfdffeb0ef371f42fdfaa31fff0874 *3fd00d3080f5c91f96a8073c7421f07f075ca024389640613dd07916b49fffccb7ab0b122e8312 *fc0805f7d7410f7ed081f729a0a75068421144d04b0cc4200b5b08c11986a08020a4a10cf5859f *fbe550873b54168536183d1e02318806eb21113160c32356d088255aa2057ee84424ca0afe8613 *b4a2aaaa98bb12a6508aea832217b508b23f8171024d1ca30bbd589feda5518d6b146307dc2847 *382aae8e1b881d1bedd8c024def08cf813221fbb28c83fc69084131b24db0a0902d5ed5191fc79 *e41c0169403f42526e8c4414253397c94b46128f17181d283d09b94ee671932bb4242931a9ca53 *1e9203a35ce513afd848549a5296c76ba50612174b5cc691969a7ca5cf74e9cb5c027392c22ce2 *168b59a05b869292ce6426196586cc2c727099d25ce4315d69cdef6d339b9ffc6606e2164d70de *a79c12202731cd7947713e33995374273b4f884d6e8ad09b899c272bf339ce33a2539f35e467a4 *fc294f80b6b39efd84271ad769d0520af49dfedd5466191b1ace8756a06c0ca5e82c273a5085c6 *afa01add68a8388051908634a01c85e83d8769d1939ed3a40fc85a465d8ac891ee528a33a5e935 *6d9ad088720fa13a9da6a3ec1984115612a8417d694b23d0b49c261596306d4053a3fa54ec5175 *0153456a557f99520a64b5ab5be5aac97aba52262e35ac3bfdd44d3d7a54b0a255805a4d27119d *fad69fc6150241bb6a5de3795652b1b5017addebf8ee1ad3b9f655b012556b477d1a46b722d6aa *84f52b63171ad9c7da95a73f326c652d3b58c716f6af9cdc2c6729eb59c996b5b3a51d6d63317b *d10d0656b56d656da65c7b58d89256b672056d2a536bdb8f8a9666afeded02a80adcda0af701c4 *fea5ad688f0b58e31677b9cc1dae7395cbdbe886b6bacfadae75778b5ba652b7bbdb0d2476bf3b *d6f0a2b6bcadd56d70859b5cf51a77bbed9daceba01bddf89e76b5e835af6fc7eb5efa32d7be45 *35ab7f8f0b605cdd36bffa152f783f2b5f052338c1b1556c66fbabddfa16d8a8d27def7fdf9b57 *0d1398c39aadf08797dbe101dbf6aa2516317b41ac5bee3e18c22e96f0841bec6019c3f8ba0b66 *f07df16be31bd335c52a86ed8f431c64d5eaf5ab3986af8691fc62fd1e7989ebe52c5d5dd5e218 *f7d8c94faef294859c651ad7f8cae69db24c3d6c640f8f99cc96ddf2994d8c5835e334ca827573 *9533cce6ba6e99ca5e9e6f9ddf7ae792a239ceaff5fef39ec3fa4fd30618b27fe67370d776e7bd *369ad18d466ba10d6de0cb1699d08f0664a431fd6775c239a993a63486bf0ce632afd7d39fa669 *a8450dd7440775d55285e6a65fbd695ecedaa5b08ef59c23dce436cfdad6b7d6682fbdbb6b5e97 *dad1b77edcb0699d6c5be6faa4cbc62b2aaddcebad465bdac536f6b1ab2a49a2561aaac166e7b5 *b19d674b0f1a9cddf6f6a8cf7be9798e9bdc3b4e6bbbd1fd6e1d1f5aace72ee61b557a6f7ccf9b *99e926e9b4719c6a5cee9bdfdf9677920d7a7084af9bafcfd677c0059eedfd86fb920d77b850ab *2dee8ccf38de282db8223dfef17e3bb4de1827797acb0d6e940f928a6d1c38a9ffad4698c7bce2 *3c16b9fe135ff8459ce73cdf3b57b9c62beaf22af2bce72c5738d05b7874a483fce4138764d39d *6e727a469d8f0a1ca2cf217ef59a4f9dea0957aacdb1fe75b03f5ce9ae462000f7a3426da77d7e *6b67bbccd95d74efc55dee5b1770d969083e02ce9deb42b7fbddf19e74a88ffd82d943dfdf017f *f8003e2f7c8b677ce03ff778c8e71dd159777ce2b5177973375e78bde3fce55b3ef8dd855ef485 *df78c4ef84bae28d9ef47d37fdeb5c9f7aabc7de74adbfddebf159f951854ef7b537e6ec27f57b *e03f5d6bc5f7d3e428b7fb560fbf4d8d637ef0fbf8fc2d054efac757daf5abc42ebb353fe4b987 *52ddf8f67df0273f5ef21251db9dbf7db1a55ffd9d1769f7fe771436b5c55ffef34f58d7c8767f *fcbf7f6405c322fde77f6fa3214f2380e5775051e33417b322eb67781243484b233509687b4503 *7b1768341568813cd38173023403c8811e38823d03821b287c24488236f2804497823673322748 *7d2e383430387d3533832ba33136083638f8313ec282dad48307a883d9c73542b8350d13830772 *84f5b72f21e8204cf87f4ea884501885e7f7834fe83756b879f592855ab8857b478455e7366058 *7714b88329538634a7816868236ab86d5d48853cf88685122d5e4835749827cb7287239287ac72 *2740a8227e3826bec287825886b662883b7384ad12886ee882a6e388f47733bb238916938195a8 *88427235e563ea8964987ffae389d9527aec238a80833370648a3786389ab88aac2887ae1822aa *188b13328bb4983aad788b9bd386bab882b9d88bb45784c06824b6388c8a078bc6888bc8988cc1 *3886cc1830bff88c7eb78cd2788c13041fd8988ddab88ddcd88ddef88debf12535600adc518ee6 *788ee8988eeab88eec5802e4380301021c6f200af2588ff6788ff8988ffab88ffcd88ffef88f00 *1990bb2107f8188f0549900299900ab9900cd9900ef99001498f05391ff928911079911899911a *b9911c990616698f06798f1fd991245992267992263992f2c805e0d8922ef99230199332d98d5d *508d5712000900003b binary ./doc/images/RubiksCube.gif oldhex * newhex *47494638376134014801f30000000000ffffffdcdcdce4e4e400ff00ffff00b7b7b76e6e6e8080 *80ff00000000ffff66660000000000000000000000002c00000000340148010004fe708049abbd *38ebcdbbff60288e64699e687a4941ebbe702ccf746ddf78aeef7cefffc0e021488c1d26018172 *c96c3a9fd0a8744aad5aafd8ac76cbed760fdeb0f308488acfe8b47acd6eb7c186b87c4e0fd0ef *733b1e6f269b05081451006e85868788896a70078d8e8f8f7690938e9294937d484c14084f009d *8aa1a2a3a4868c360643a9a8aa4335ab4a7e4d9cb3a04e13b35eb8b38402bb69bfa5c2c35aa752 *abb051c843c7cc02b24c81c1c1b301bdbed74a1753d4d8dad952db50ddc4e5e66302c950cb4919 *e9ad66d9bdc9d0d18280e0d5d648e0bfe44bffbe5509c8eb9cc1834b8c2983876d1bbb86df08d1 *d3746b0282404d62003060a763bf6bfebb42f6c2754fa4c08623f3795b49d2df3d84300f2944b9 *e4e134890c51ee9a58661ca17c773676e4f81160ca93257f1e35b94925d3a42c55c69c7a666685 *9a0c6fbe93f4e7aa129e7f7275c31067a3595e2fa39ef46612a4d68a48ddaaa54a378dd59736e5 *e1e46af417584f17d37a3220cee8daa77245de645a702e5b0b75238bb9eb37abdeadc9c4fdad15 *d19627978de7326e29909a2072880d1394ccdacacc27791d5a4eb9371645809e69f9ccd5d4f0e3 *a3a295c25dd91b2af1d5ad934379ed2436e487be367d75560f5f136952ad683d4d1bb45ac87db9 *0bd78936bbf2f309b736e3bb90fd3aeab7313ac18ebebe7d99eff6cc69a55f0efffe9b45fee7d3 *27f715686055ef5c0289250a56924a8395d8d6d3811456e8061845142121831076e8e187208628 *e288249668e28928a6a8e28a8e3c83c42a19c628e38c34d668e38d38e6f802187ec0a8e38f4006 *29e49044dec8e38bae14a9e4924c36e9a48d4796e1e393545669e5954e46c915965c76e9e59745 *683925986496692698622679e69a6cb6a9649a6ec629e79c35c249e79d78e689839d7af6e9679e *7cfe29e8a06b064ae8a188626968a28c36faa68b52aae9e8a494eab868a598661a26a45b6aeae9 *a73e5c0aeaa8a4c2206aa9a8827a6aaaac62ba6aabb036fa6aacb412aa250092d6aa2ba2511292 *ebaec0fea9e533c1163be8b0bf1aabac9cc8fe2eebec9dcd3e2bad9bd14e6bad99d55eabad97d9 *6eebad95dd7e2b6e93e18e6b2e91e59eabee8fe9aeeb2e949c12fbeebc39b64befbd42c49b2cbe *fc86aa6fbf0013616fc004d33070c108eff86fc20cd770f0bb48342cc3c3ee5220b1110b136cc1 *c50acbb2efbc1870dc02c5e66a2032c9e3861cb1c4287f0b400217b4b032c32d6ffb32cc1bcb5c *46c3355f3b410238f3f3c2cc05f76cedcd415b3cf4ce081b2d2dd24913bd4fc24e3b0b75d44c2f *dd74c610431db20c52e35bb5b2577f0d76d6fc8e5decd558a30d43d8f3aa0d2cdb6ddbe036bd72 *ebfa33d07cd76d37c079d74ab7df7fa7cd75c97d276e76e1f7060eebe0402fce78dc87bb0c39e1 *fe38dc7daee3ac5e8e79e678576e73e2a49bbc83e6e2725eaae71cf080bab7aa93ca7aeba7bb1b *3ba8b377e0fabab77b9afb07b56f2efad3a42bde7acc39c07d6def995e5e41db3b239ff9ebd232 *5f69ee919b2dfd0dca573ffcb2d867bffdf635280dfbf7c6fece77066777ef4205df5aefa8f314 *f4cdbe46f0736ffef2e807bb77f1cfb39fe4de97bff215d05af24b54fd8a8733000e9080fb6b5f *049f95c0432dd08174bbdf0c72b6410a10c07dc0aa20a1fe573a120a907cf89b200427f041eaed *4a84820aa0f14cb8be07beed804bf3600ba705433fbdec8235a4a1f8502841cd558000480421ad *7aa8a71f0231690c849e0b75a6c223227187ce6262fe9e9cc8b627ce9083d39ba015afa8c45669 *f14e377ba217bf0846fd45d002574ce2145975c639210d886b64230edd383338c6118bc5aa639c *bcf63f1946d174aedbdf18e338475409d24d772c641ef5a8c230466c918c34d623d944c8487a2e *88444c1efc3099c9606df24c65dbdb244b68435166e08fa57c61ff56c7caa0451183a1d4810660 *19cb5a9db24ca9bcc02d59994b5d628097bd8cd52fc1d445610e939265b4db0590994c33ce1277 *b814e2301149846952938cbebca6ef1868816712b3988924252f1be92a716a2a838634e7105bd9 *033f7e3389ca7427a606174f797a2046debc673429b54c2c41ae9fcf040140edf9cd813aaaa056 *a2df27fecfa9bb221c53a00e651444ab74d0556653a1417865432ba9a98d3ea9a31e8526f080b0 *4b6ad68f9d89326993b4594e794a11a43e80a33ac998c652c994494274a6395500d31502408e2c *44e6028b7a2c7d328aa6351deac6345080026ca09e7edce905992a2ca7226a8d18f067cea85ad5 *aba633a92d44eb1f49c8d53efd94484eac2542296ad40958b5aa65e5a6258fca531d3292ad9f7a *eb901a3843f149f58064c5ab5535b8d7b562528d9e126c90e27ac22026148c1b502c5ecdca47be *fed5af72345e49bd1ac3ec15d6b0b75c5c66359b57c6d220a07d55ab1adb4a27c9eae88ea785e2 *21c9b75ad62ed6b51d046d6c3debc58ce2c9b639aa61652dfebbdb36ee2303be55ac5e8be8521d *8295b67142ee8d22c9dcee52f46ebd8dee6fe9c950585af1ba04256d1305885a50923394e1152f *6753a8d6757a308fc665967af14448e57ef1a3a88baf78c7eb5c2a0ad7bc422de143f77b27e3b5 *d7bd9434207407acd9e93ef7c0088e6ae916ecb1e639f8bacd2c700e314061d6ced7c09e1de95c *61c6614d7c6c841f0eea6c453c620a2cb6c4bed56b79abbb4aec9e49bb003de77bd98a4e145b00 *c73966ec8e79ac4d166b94c171c265733db9c7e09218c926361d6c31da641f630bca6d0ab144a9 *1c4d0163b9b5312bc34e953a492f9309c81625e694415966339f99c01bb8a763f1fbe40e4f0a83 *a95d2a8d8b78fe813b47f7037ade334d630ae63585789b2f1d34a18f6ce8437320d19feda79bbf *04e72038f0b2c0ed6ca12b6de93c633aad0b88e7a6b9d568333d3ad0a11635a5499de4969e9a02 *a986eca13afd8360fe4ed2afb533add1bce4912ee0d8865c359778ed83ff42bac8c14eecb06bbd *652e1f3bd792dc75abc9d4c926d339bf469ef5b4a95d6cfb4ee0da3254f69598ed3af67a7b9ed8 *15f6b889bde60c5f1bdb3db5d5b6c1e4ee4f027bafa39e77a9abcd6600dc1bdf91d3b79fbfeadf *77435bd61510b87c4dad6283dffb79eaae12bb75895a6f3f1ce23696788ef15c6fa41e1cdf19a7 *d2c673d0f12e7f5c9ad216b9742fade293a3bca90b87f15651fa6ffe90875ce615d669b9d36af1 *9393b4b6fbee12654d0b60377700e859f6008f6d8e6c70733ae95c22ec834fd8739fdb15ea333f *ef45ed4df55c0b6ae5307770d39dce01b087ddaf225574d9537d76ac5f69b66b677bccc13ef6b8 *c776ee74f713daa39d5b3a5f58464f77fb66cbeb7754cf3de54c1a7c074b784e03239eaa0050fc *e249e9f70a3cbeab39ff133cd9b8c2cbcb5be2048fbbe73fef56bb53099edd665ad7bd9e79cde3 *99c9703f37ebf524798d007a9e3536fddea13ef60c0bbde854b7baa25cffa4f71a7ec4334abce6 *8b6ffc0c001ef245eafdd09c1f35fa46bfedb6bf3d973170fdd6877ebd72dde3ec691f7ef18fdf *02800ffc7199df24e7fe1778fd1206fff4879e69f8ef1e5af4b724fcd47d45b45020b07ffc375c *b8f67f48777efc0560d1e66526e076d4f77eba5776d82724dad70243767455765625c07709a868 *0b987c80128045c24f1f8862dd3481112773046781177870caa772280857d90473e046542f887a *23686eab6774f3e78074d2817cc4523c286ed3568189667d4208804428272a38452ba88349d883 *c3c6847aa601369781ec72834222667b855557387c67a653a74682fe876e50e8627d2266545885 *93568601576931b8851b70715e582f600824be3647b347871f406b77387e2837837b8823bd177b *807874373402fd178286568815876e6b988846d287b7c5758ec882008768fed5278958a6857878 *81e4578391a789394265533386b4275b323802a348894ca687f0878975a28a389246a3d4888e58 *0298a60238468a8648832fb77c51c849c0d7899e686520908648750225468bb5688cf8a771ba68 *235c74494a346824008d91288b03468c956874d76883c9b82604d88a9de58ca0088e6a288ee456 *5fb75682e6c88ccb968d34223df8787f90088f053781515772358781f8888c6e8846885546cef5 *8f005971a2486f29068d41d885a8987dfaf87d44536752e3900f198b21b07904598d8f878b31b2 *7238d48f0b19021f098ed2289100599118482d19698029e44a2be3912d9986d2488ee5c8805f96 *8ec0045e8d34562cb9931f99fe840f299326c8261b173607890248899444b594f638934e599316 *155c38a99353d9922a609533987c2629305a1952c1664cdff8956c49746b098f4cd9855929945f *62441c79946d9997262096c887953f76962cc5955d2975795998d12802317995165928809953d1 *369834679892e99678598f63d994419990902498af389293b9937b69997d899965c26c761987ef *f899aa4999cfd88471f984a5d998bbc399af756114b79a939902c1a8987299993df1625e1260d4 *8398b8299957588aa3b998b149975c729af9d70144579c6cf9019c789bd5177ff28726b2a94b8f *e98e6f299d7029886bf69a34e89b49009ccd9996737802e0299ad4f96da9f977f1fe77917cc89c *ae0695e2d99eb8d70153d69afd879d65d90370269c6ee39fac099dfa79a01b205695497400ba9c *9a894add59578d178e088a9b226053d579a1e4599eda699faf37a1b6699dfb79a18619021ada81 *88d6a117f766dbc93d131a9fbbd9a0a089a2290a6b2400a001aa034046a0144a8d104998490902 *376a5325809dd9998f20ea243e2aa36049a3c8c99f457aa32380a43b9a03da45a04e3a95c40992 *6135a5602a023a7a754b3a531118999fd9a5f1980160daa61b9a87e5c76a652a80674aa2ab7994 *44eaa67afaa65c6890721aa1cc54a73ea99a49b8a786aa52e447967ffa9b12ba9e9e89a12670a8 *928aa8890a9b08c9a8c0e4a81896a0fea1c80193faa927608e5d625b056aa29c1a9019faa961ca *831e7aa9e7e96a8f28a4a76aa123a0aa46ea010a90ab21c0864a0aa84a57636aaa9f1f70880b6a *abdf8501b99aaccabaabf4292392257b55599cc36a911e60ab1fa0acd89aad2090a4e8e8ab7549 *a250caa51d60a5efa9a7b89aade88aae21e0aaf25297234a8b682aaee38aa4b628a529ba01e99a *affaaaad27f6248265aaae29ab3c39aff46a90f68aa31ab0af0aabafb4032e2f1aab15ea92025b *a21750b0f45aaef079010bbbb10adbafe4f2b0c0faa8030bb01e60b1265b7529c0b12abbb1b1b6 *246f656bc6a902273bb3f51a022b7bb31c7b8c9602b2e13691902aa6341bb4d688af385bfeb4e9 *aab31ac8b3ef3aab0aba86423bb32560b4388bb48f32a761f883279aa34f4bae09ab00e72ab5f9 *4ab51f6bb54a32a8350aa725bbb5439b0161cb0160ababe7e8b0647b5258eb9e156bb0704ab36e *9bb31da0b2623baa4a4b869b1ab07dcab5793b9f446bb45fcbaf07499373cb4cd4c8014f4bb035 *abb16fcbb8091bb76db28175baa6bc39b92770b91debb18cf6b87694b66a5b927d2bba7cdbb838 *e7adfbe4b4a9abba8bcbbacb2a8795c2b91972b7b34bac1490ac7bfbb69a5bbab0db392c8ab86c *cbb089cbb2b84b2abafb23b24b96c9bbb2c18badc39b29cf3b24b2dbb5a2bb52de63baadc2bdb6 *8bb9f113b84df4bbe3ebb5cd9b45e61b4315fe50b4d71b42edab40efdbb6cd6a4af34b292d1b3a *e02b32a993bffe3b29d91bc0d905c004dc67c57bc086d3bf0a8c4006dcc00a97c0104c390c3cc1 *ec5bc116ac2c039cc11f2ac11c2c3c18fcc1f21bc222ac2b1b5cc2ec8a9e28bc2d27bcc2d848c2 *2e6c4d301cc3a9d2c2343cb61e7cc33cf4c03a3c9739dcc317fcc340acc13c3cc4108aa9467c3e *339cc4d85bc44cbca8affac4da62c352bcb34b5cc52d86c4584c414ebcc52f2cc45e2cc3601cc6 *35dcc5648cc35a7cc6f87bc56a5c776cdcc68267c6708c2e723cc749fbc6763c84639cc74d8cc7 *7c3c2754fcc7fee2c782ecb87b5cc8591cc5884c4775bcc8b948c88e6c9eed1ac9cedbc8947c92 *e6967cc99b02c99a0cc593dcc9a3c5c9a09cc2a31c58995cca027acaa8bc0381bcca2ed0caae1c *00b0eccab3bccab58ccab75ccab93ccabb0ccabddcc9bfacc9c17cc9c34cc9c51cc9c7ecc8c9bc *c8cb8cc8cd5cc8cf2cc8c8c222d45ccdd67ccdd89ccddabccd27c229021acbcb162a2f022077a0 *0ae47ccee89cceeabcceecdcceeefccef01ccff23ccffba107eadc23eb6ccef4bccffcdccffefc *cf001dd0f4accfe98ccff76ccf029dd00abdd00cddd00e1d07048dce065dd008fdd0167dd1189d *d1191dd1e74c06dcfcd1201dd2223dd2249dcd6a269e289dd22abdd22cddd22efd4f1100003b binary ./doc/images/Smaller.gif oldhex * newhex *47494638376134014801f20000000000ffffffdcdcdcb7b7b76e6e6e808080ff00000000ff2c00 *000000340148010003fe18b0dcfe30ca49abbd38ebcdbbff60180564699e68aaae6cebbe702ccf *746ddf3881ef28b10482a070482c1a8fc8a472c96c3a9fd0a8744aa512aad8a20f00cc7abfe0b0 *784c265f07e8b47a1d58bbd5edf7bbbbed0a0a0c24a0cceffbff80616704848586866d878a8589 *8b8a743f430c054600948198999a9b7d832d033aa09fa13a2ca241754493aa97450baa7caf02b2 *9cb5b6b7029e49a2a748bc3abbc0b9914378b4b37b475cc9c8ae0e54b2c7b8d3d47cbabea44011 *02bf5dccb341bda944c6c978495c0a3fdfcd5ed1ecd5f1f258d747ddc80fdcd9f84179e2c4aa16 *143837040580016d12b293d66f4f9e3cf898bd13d2a021c3791833d6ab18fe6edfb157f722cafa *c74599c3226e0e2644b890a3457ed226b69be832a34d8c1b21ea4ba4ed1bc87d169991b4038b21 *0434079356e2283366b2a64f1dc2bb49955a4e5af73eee091951c8d04a03752a1b90cfe42ba841 *a3364c2bb5aadb7857857af4b91568d9afac2cb65a2a71aaa4b63301a36d47d1efdbc398ea19c9 *0a61e72988fe848da3b877954958e804ab1d4c4b2be2cf9c14a39c9b2fa4cf8e904a0a21b85a6c *94c681d78ad4fcf7ac61d0b8c78826c27531507b9201b22ee63ab7f1e36006c951436a799ae6ce *f18233bb17b9f5eb5106393ad4683b2350de19a10288bdbcf9e40278f018cf057cf8f7f0e3cb9f *4fbfbefdfbf8f3ebdfcfbfbffea161ed95a2de80041668e0810826a8e082255c5187280c4628e1 *84145668a1820efe00e1851c76e8e1872022986180219668e289289a38224f29b6e8e28b30f2b0 *e28631d668e38d35ce28208e3cf6e823873afe28e490441e1864914826a9e40b472ee9e4934a36 *09e59454f2286595586699e2955a76e9259000b2f8e598644ac8659968a629639834aae9e68f07 *c429e79c74d669679c319cf9e69e35dee9e79f72e6c9e68e7c161a23a088da29e883841aea688a *89461a280c7a3e6ae987924abaa8868d5eea69879946bae9329d7e6a2a85a1263aea1ea59eeaea *82a9223a2a10adbe6aab81b1023a6b2eb7f60a6bae7eee5aabafc4da006cb09486fec96bb1ccaa *77ec9dc2362b2d0ecf2a9a6c2ac34eab6d0ad5d619edb6e0bed02d9ddf866bae0ae3ce59eeb9ec *9690eea44c2a9b6dbbd2be8be7b591cc4b2fb3f61eb0eebee6f6fb2fc0e00a8c6f49fa12dcabc1 *f162abf0b90cbbb0e2b20f176cefc015371b710b13279cf1a91bb3d0f1c7db86bcc2c8244f6bb2 *0a28a7acf1c507d3ea72bd30379cefcc38dfd072ce3cc74c71cf408b2c6fd0449f3c74d1489bb0 *73d2452fcd74d04e3fdd73d452e74c75d5335f8d75ca5a6ffd71d75e570c76d80a8f4d36c0669f *4d6fda6ab3cb76dbe6be0d37b872cfad6ddd764b8b77decceecd37b17effdd6be082db4a78e1ae *1e8eb8a98a2fee69e38e5b0a79e48efe4e4e79a1965fbe67e69abbc979e7697e0e7a99a28f3e66 *e9a67b897aea5aaece3a96aebf4e65ecb243497bed4ede8e7b9447ef3e78efbe1b0e7cf0890f4f *3ce3c61fff78f2ca4bce7cf3953f0f3de6d24fbf79f5d67b8e7df6a16fcf3de9de7f7f7af8e2ab *4e7ef9ad9f8f3eeceaaf3f7bfbeedb0e7ffcb9cf4f3fef0edfafa6eefaab687fff44e21f004124 *c0017aa8804232800217c8c0063af081108ca004271841c0fdaf4c14cca00637c8c1065a307fb7 *eaa008474842037cf066bd2aa10a5758415f21f0472c8ca10c4f88305fc9f0862aa4a1cc5288c3 *1e7650873f7b950f87a841207a8c4f444ca2048d6843253ad1832ebc20999e4845053291fe8755 *74e2154398452d461184b6eaa2177f0746218a31895b0ce31989984633aed1876d74d51b8718c7 *53cd118e5f442117ef78c33a9a8a8f38f4e3a700d9c73cd6108b845ca1203d95c8182ef2528d64 *e1232d1549451a72877bace40827f9284d9690938ef22409416928516ef2924194a3297f88ca23 *ee6995ac24a31ed508cb22b6b289b5cc20290b954b5bcaf29099ec650b7f89495a0a7398b77aa1 *8f8e39c15d229199c8145e195509cd073af395d5b4e62d1199cd055ef34ddd74e037dd144e2812 *3395762ca737b719cc708e534dea5ce7395d09ce789a909dc62ce73bd364cf7bce1397eadc279a *fa29500cdab3a0533c283edd18d08552b3a1feffe4a63b1d9ace7822744c04a5e81f151ad17676 *f3a25fca6847f339d19132549f1a1d24479329458cae549ab33c6949593acd8a4294a6317d284a *4daad399c2149824fd684a19f9d25729b34722c52950652a549eda74a74a2da601bb74d4a94ea8 *aa568d1056b3baa0ad7235415efdaa915a2ad61785b5ac043a2b5ad5a3d6b5eea0ad6ed51959e3 *eabf9ad2358073bd2b01f3aad703f2b5af60b22b607b04d7c1da6ca986f55161132b34c1323647 *7f7dac56232bd9ae52b6b260bd2c66c7ead8cd6e49b39e4d2b6843cbd6d192f6ada63dad5c3bab *dabdb2b6b57e7d2d6c039bd3d99668b1a4c56d6875eb59de6ed6b798056e65852b59e23ed6b88c *fe456e62956b58e60ed6b980856e5fa5ab57eaded5ba74c56e5cb5eb56eeaed5bb68056f59c52b *56f27ed5bc5c456f56d56b55f64ed5bd0684ef00e50b40faf6cfbefac3effdf44b3ffec6cfbfee *03f0fa048c3e0297cfc0e243f0f714cc3d0667cfc1d683f0f4240c3d0a37cfc2cac3f0f1344c3c *0e07cfc3be03f1ee448c3b12d7cec4b243f1eb54cc3a16a7cec5a683f1e8640c3a1a77cec69ac3 *f1e5744c391e47cec78e03f2e2848c382217cec88243f2df94cc3726e7cdc97683f2dc3ae69f2a *5bf9ca58ceb296b7cce5fc848906f4b42d3d1f141d3784a2cc684eb39ad7cce636bbf9cd708eb3 *9ce74c67e6c461cd64c6f39debcce73efbf9cf800e46b4a0e97c663c6b88cd851eb4a217cde846 *3bfad16848749af3ac664943fad298ceb4a6336de9326fa1cba00eb5a8474dea526b5904a84eb5 *aa57cdea56bbfad5b0b680001200003b binary ./doc/images/SomeRings.gif oldhex * newhex *47494638376134014801f30000000000ffffffdcdcdc00ff00b7b7b76e6e6e808080ff000000ff *cc0000ff0000000000000000000000000000000000002c00000000340148010004fe508049abbd *38ebcdbbff60288e64699e687a4941ebbe702ccf746ddf78aeef7cefffc06021488c1526018172 *c96c3a9fd0a8744aad5aafd8ac76cbed760bdeb0f308488acfe8b47acd6eb7c184b87c4e0fd0ef *733b1e6f269b05061451006e85868788896a70058d8e8f8f7690938e9294937d484c14064f009d *8aa1a2a3a4868c360443a9a8aa4335ab4a7e4d9cb3a04e13b3a59e84babdbe6ea752abb051c343 *c2c702b24c81b84bce9e01bc12d3cf166b2b4ad0bfdcdd5f02c450c64919e0ad66d5bcc4cbcc82 *80d5b72d14d2b3f0d8d3dbdefafb57c1c5e7d4568c0ba80dd73a4db7261808d4240600027622c2 *cb672d1d2141ee02f282e6ace3458efe152adae3471298b93f21950cdc6610a0466707cb40c165 *efcec3881027a62c48ad22418f3c41f2fcb9b1e8d092480ff9d3b864a5c593e176c6fc938b2286 *380fb3eec288cf68cfaf40af591b0a142cc5a468d12c950a9025a18105a14df5b430e34c02d9b6 *662ccbf75a59b364bd324d4bf8ccda8c4e37bd75996d6eadb8b6b68e95b2b36fe07a932d03563c *b2b0672b4b9f3815d8d6e3e24c323745a63573e2149a1f330b762bfb724fbb473feb067d129924 *7218a0264ba73219bb774d9a75b6123cae62db71638fd57cbb28eeddd8a3847602579c4befa8ff *3074a23cfb95b3e6d34361b4674eabf672dec3772c619042f59e9ce3dfbfdedc254896fcfe5749 *2a0256120b42fc71b153820c2a234011451c580681055668e1851866a8e1861c76e8e187208628 *e2888f2883c42a10a6a8e28a2cb6e8e28b3f2020e38c34ca08a311264ee8ca8d3cf6e8e38f4012 *51e39044d27823187ea018e4924c36e9e48a454629e58c2d2279e28e4f66a9e5965c4ee9e5942b *5aa92397649669268c5fa6e9658a62fe76e69b70c6a9839a748249449b4acaa9e79e70d6e9a79d *3fe089259f8416dae49f8802ca83a08636eaa88f89461aa50f8c3e6ae9a5104aaae9a43b548ae9 *a7a0e6b0e9a844769aa39ba1a6aaea0ba4b65aa30e9eae2aeba7aed64a250eb1ceaa6ba3b6f68a *00aea7e6b9ebb07bfaeaeb0db912abec99aefed6d06c0dc92e2bad96a3f6502d0dd14eabed929a *16d1ed0cd96e2b6e8f91429928b6c10e3aeeba379eeba2bb3826a92ebbf49afb67bb88cad02600 *f3d6ebaf907efe786fbc82f4fbefc13c0c2c70c030b4a90cc210c7c8709013bbe0b0c111672c43 *c514d7d9f0a90f6b2cb2b31e3f59b2c520633cb2c6279b4ce70b17af2c330c2d3bd972cc33cf5c *b3cb6aa22c8bca39fffb7299430780b3a30324adf4d24c0f1034103b6759f2d172366df5d5583f *8d43d144f76c74ca71622df6d8576b3d03d7640e4df59664b7ed76d366bb8076d75fb6b0f6936f *e7ad77d266cf9d76cf772fb9f7e08307ed77978083ed24e18c172eb3d77126fe33938d574ef8ca *fe90f799e6d7930369f9e797677cf8df7507ee22e8a8878e70e69aa7693a8ba9c7eeb8d09b17eb *bae230caaefbecf4b2deba97af43b8fbf07afbebfb9b6a061f04f1cc17cfeef1ccdede39eccd57 *eff6f3b5eb993cee295aeffddbe3426fe6f6d30bfffdf9648b2b3eddc0734f04faf08fbdedfaa4 *b75ffef2f1e75ff6b4f423fea5f239d09f00adc6bfecc9897c9a009a0d06c840b82dab7fd442a0 *4c144883065a70690f8420cfd604c00a5ef0834e5396066db6b90eca00842814a101915742f7e9 *0085291cd6e822d8c2fb05108631d4d50ca526b904f6008738dcd50e37682713ba00884014e208 *81a43617d6008948d4e11217563b2342118ab38a1afe11d7c4391fdef0823700a1145748c3bad9 *cd89276420fe0698c52152317b1d14608be4282b2d762c73718cdf8df2d7c629be8b6b00849fe7 *04b92a8e71eb66683c22fa28b7c842da91471c53def9b23449473ef245860cdef7c8b4494bba51 *450af39917d3683d3379af8f9ff49621bb38410f362f6cd5ab63bed034cb8fd9b005a5acda2b65 *194a7bad929549e8572cf7344c4ffe5262b524582b63504c62320f95c94426bc94194c520eaf51 *bb34e63445b5296839f1994823de18bb698356d9e06ee07c543ab569ac6b79d386e2c4543ca1d9 *ce6f9dd37df394e735c759cf7201eb7ef9bc5440d9d9cf54526da002dd1db10a1acd7b966f9faa *82283ffe19ca4558714fa2a1c2e844293a244ae14ea319d59db438caa91e1c4da1ba02e946192a *848f8a7457281d29497fd5d2e9bd14a6372d60412184b398e25476eb32569814e7d394e6145307 *48aa52935ace670db57347fd69ea3eb5d4aa56b5a9fe74514f81baaca816caaa60bdead6ccd8a3 *987955aaa873145867b056439995abd23a6b9cc46a03abba156c729d555ecf44571cf4554f6f9d *aab6f65aa6a5fae0af710a6c5ab705573d1916088f052c5e6327aec6ca49a94488ac9c2e465859 *59164e9afd4168dfc4d9cf2aabb359c22c8454bbd99499f6b4af25136b8b305a339556b095a5ec *6599aaa2d992d6b5bacd2d6e41cbdb14f9f64cb75dac7095fefba6e3d2b6b8bffd596c89355d2d *3937b3d0452e70873bd8e03637bbab056f99920bba755537b5e2c5ee015a2b5def7697bb66ba6e *10e4bb25f27ecebcee8d6f7ae7bbdffa6e97b9ef05b07ed7cb22fa6ac9be96c32f7c0bdb5fd136 *384b08ae9c82053ce01519f8c0ff2defb8ce8b5e021bf7c110cef07d974b61067b38bc278e6e02 *511b510e77f8c32956f104599c2a177738c63da8ad6d27bb60eae697b838e6c185fd3b391bd7f8 *c7df05310d74bce3222319ad1ae61393eb3a6422fb90c69fc2f28d83ccd62937f9ca46ce7298ad *eb65172096bd607eb25ec74ce63307a0ad85daaa9a5b3ce7dd8635ac8f92738f3dcb6613df59c9 *32ae66008abafee63ef315ce97d2f39e8f6ce8b879d4a68de693961d5dd351129ace75a6b48a4e *3a69495f5ad35a7569a7f5a45250b3e8a09f4ee8a84d6daa87a6da52a566f5a62f1a6b6cbe5ad6 *6cc267ad0985505c3f7594b8dcb5a76fedeb3bb9b0d7854276b1797a6c6593dad9cbaef43261b0 *ce64433bda40085c36795d6d6ccffa96cd7c76b7bdcdec5b0e7adbb01c37b98b60ba5ca65bddeb *96b6a0ad79ed26b93bdedf0636b54f59a64ee23bdfd3a637bc05c7ef7f037cde33a8e4e2fc6df0 *5c9b5b910c0f52231bee707d0b3cdc3c2224c52b1e70574efc747adcf8c143b640fdcdd1e422e7 *38c29fc8c6f7b53ce5e5b6b8c7d588830fc27ce4143cf7158378f3fe9877bce43b1763cf7dbef2 *30061d8c43273ac95f78749a279ddd896479d3f9f874a5e77cdf53ff78d5e5bdf41d645deb5bcf *76d481fe7574875dec0faf79d9077ef656cbdceb6b2776db736044a9c73dca733776dae17ef704 *e7ddea2aeabb84ff0ef8c00b9e7784e7fad5d57e78f025bef0d46bbcd81e8ff317493e6b945779 *d7237ff910665ef38bff61e73fffeb9f835cf0a43ff5d80d7ff7d4ab7eef9c9fbaebabb4fa931f *7df6a1867deea288fb17d5fdf436ef3d8c7e6f790b0a9f47c4df23d58f8ffcdadb1be3cc3f92f3 *2999e9e8d35ef767da9bf5ad6cfaed473bf9de371bf8c3ffb4f1933f67e63fbfccd2affe91b1bf *fd1a7b3ffc2376b104fed8fffef8c7fffccb9fb2fcfbfffff7b77ff1d77f005880ff278007537f *06b880078880eba2800c1881fee780da0281127881fa4781c4628118d881f6a781baf23a1e7881 *20a82abf3782005882a0627e2898812a9867d377032df8828e227f2f808234186731c803239883 *7b628334e0813e98583b18041d3884da857d2a728448c82540b80324d88418a6842e128552d824 *4fe8031278855858842fb2855c082459080460188665e58537528666e87b68c82311b886c3d786 *6ec88070987b6f47266f588795a72779a8875047854f42877ea8777778268238888122874cb280 *88988880b8258cd8888ba2884d128992487794588906788998f88878b889fe9ce85085c827a018 *8ae0928959528aa6684ba34828aab88a67e4896ff28aab38869a9882b0188bad6828b4c889b6e8 *24bd2889bf088c05088bc3488cb8188ac7888c13688acb788b0de88ba8388bc5288db2e88ad528 *8cd30827d9d888cf988ac98888df088ed13888e31888e1e887e7888ee5a887ebc88ecda88edbc8 *87e90887ef088ff9678ef3b827ddb886f7888f2e688ffbc88ff5c885ff488ef958870709900128 *90d7f8290529850bc9901fe88f03898df118861389900179851b499116f990a112913ef89120a9 *9117c98bed88842679921e99922a99912c09938542922fd8921499002f2992aa62932588932e39 *933cd9932b49834019942549fe9331999042b98bdae2931478944869944ab9941d499543b92a50 *89805239952ad895cc78955f59958d52943f499656d99039089661a99658e994e262961ac8966d *a993499995b2b295f34797d028967389966959916fd97dff22970ec8977de99667899779699802 *88988be898fb07994ba297ed47999529932088994122997b099865a9997fc9988d299a87099a81 *699763499a5ae99997899a35e99aeac799406299e7479bb5699a5c099bb1c9948b0997eb229bb7 *c99b18e997bbc99aade99b9b499ca4a89b8fc99c04a99ca3099ce3229ce4879b3f629de1773124 *d29ddef99de0199ee2399ee4f921a76252b9385e947222f37107aad09ef0199ff270399ff4599f *f6799ff8999ffab99ffce91e7a309f49429fefd99f045aa0067aa0089aa00ada9f032a9f010aa0 *ffb9a0123aa1145aa1167aa171d0a0f1f9a00e1aa118faa1201aa2222aa21a0a9f64509e289aa2 *2abaa22cdaa2e259062a10a3323aa3345aa3367aa3389aa31c10001100003b binary ./doc/images/SomeSquares.gif oldhex * newhex *47494638376134014801f30000000000ffffffdcdcdcccffff00ff00b7b7b76e6e6e808080ff00 *000000ff00ffff0000000000000000000000000000002c00000000340148010004fe308049abbd *38ebcdbbff60288e64699e689a056cebbe702ccf746ddf78aeef7cefff40037008334c0282a472 *c96c3a9fd0a8744aad5aafd8ac76cbe51abae0a611800c9bcfe8b47acd667f0bf0b87c1e98dbe5 *f5fbbd3c2e0b0e1450006d8485868788696f068c8d8e8e758f928d9193927c474b14074e009c89 *a0a1a2a3858b350542a8a7a94234aa497d4c9bb29f4d13b2a4b9babba3a651aaaf50c042bfc402 *b14b80b74acb9d12cc83b2166b17bcd6d78a02c14fc34819daac65d149d1c1c8c9817fe3ce1247 *eb02cd6cf1d8f4f55bbec2e1f018e091decb81cc65b235e1002026300014a8c3f0dd3c68eb6e05 *4ab70fe03b8816c945ab805163338efef64276c157715cb77d9a069d2cb94c209927129bd851c8 *70a143901a517aaca833e33468397bdef438c8e7459148af90c47932dead952595b8f483eb2106 *380ab376e2f871a3d7a01989161d17765e58a13c93aa55daaf6392a61155ea232ad5d8394d0629 *c22c500de64fb480fb62ec0ad66bbaae2071ae5dfc642945b829fb05eb3bd5d6a759820847c159 *f6abcecc9a8d1606baf52863c6249dc0adb67a6765bc293d65c6b579ece7cea4fd5afc3ad1b353 *d30f4fa36e9bcf1fcb807323beb53b30c94174c1adf0db49fa6cd4e9bd77eece1e7bac5ee1c253 *cb9ccb8dbc6ae62f9d1f5566fa7474f0f0d12cd2238715fd38f6efbf8607ba56fcf7f105fe3812 *38963c52498194a0822025b03427a074ed3d28215b4410d120190a2ea8e1861c76e8e187208628 *e288249668e289283a72cc11aa54e8e28b30c628e38c34d668a30b5ff4d1e28d3cf6e8e38f4006 *49638e2cb622e4914826a9e492331289a1914c4629e594542ee9a43f5566a9e5965c1271e58e5d *8629e698617e09259968a6a9a69066aee9e69b70cad8669c74d669e70d73dea9e79e76e6c9e79f *80a2e967a084165ae5a08626aae891882eeae8a335360ae9a4712a6069909252aa699a96760a64 *a69b86da65a79efe08aaa8a852492aa9a6aef864aab072b9eaaa3e9e1aebad40ceaa6b8fb6e2ea *ab8dba06cbe395009cf9ebb13c06abec8d4efe0e622cb2d0caa8ecb2365e794cb4d8ce38edb4d5 *ba8ac4b3d986cbc3b6e446eaedb5e2a6db03b9ec0e792eb8eac61b03bbf436f9aebcf8d240efbe *72de9befbf2eeccb6f8cd6c20b70b802274cb0bf07cb9bf0c33016dcb0c30f43eca2c413a75bf1 *c617339c31b61b875c21c61f431bf2c90a78e971c9bea27cb2cab118cc72a82ea33c04c933c75a *b3cb41ac9cb3a83bd7fc03ce3fd31cb4d03d105df4a4471f9db4cf4b3bdab4d33c281db5a25337 *5d35d457279a35d53958ddb5d75fefac83d8631b5ab6d938a09d76a16b236d83db6f131ab7cd78 *725d37dc778b9c77cc7b33ddb7c57f672273e0800e3e70d87a236eb7e2db6e0db8e390424eed0e *fe74539eb8e5b43e3db9e68f725eaae7866b4a00e2a2a73c74e38112e0fae9815b0e73e98ebefe *bae38a8fccba9eb6f78efbdd1d7f4e68efc4531ef78b99c749fcf2b0a3fe75c4bbbfc93cf3c64f *ddaff0764eaf7df3b1830d3df6ca6fafbde641bb0bbe9be28b0fbadcd7d30e67faf0afffb2b9e7 *9309fffda007c031b3d16779ffffdc739ec286d5bf29011080f91b2001ebe7bf033a3081f5aa55 *0193e4c00a06f077916b1503a364c10ee64f7f97d3a0fbaad4c1127e1084b362d4047d54c2165e *5080ac52e10685e442179eb073321ca1926ac8c31b5e2a49c9b3110f87f8c213b269853022a212 *8d6825245648895064a29282f822285a518a4074a2fe0facc8c52262917f33745117bbf8c52386 *7108634c63193fa5451ba4f18d5e5c63fb5e72381ec0f18e72e4551b6370c73ee671813afc411f *0719c73fce8e8e4f24a41f0d69be406e51917864e41cbf254648c25192934457222da9464c226f *8f2fe0e41b3df9c933e640949d24e5cd40194a54925195ab34e5295d79c57c21000170a2220e68 *c9c578ddf297b874932e77c9cb25660b98c80ce69a8679836246f158c98ca632d5c4cc663a7388 *be92a636a7292856f2f19ad88cd536b5294c6fc2009ce184d538a5594e59ee009d3d14e73a91d9 *4e476e129e2694e73c81b94c737e139ff94cd53ee9494d7f9e13a00115e8406fd94f77da11a11e *54e742feb939a66ace12a215d4e7420bead08762f4810a9d2847ed59c58f8234a4031d29226f64 *d2036a749f2aa5244b5b8a4094a6b49b1ded014dff275191e294a449dc29fe6c4ace7aae944742 *8d1f51f949278b7a34a9db23ea9e9cfa4ea8aa0f55bf041455ab6ad5f1c1b2065bd54157a3fa55 *1a8455ac639d5e596770d68ba6b5786b8d415bddfa56dbc5b50806b5665d7d77571ce555af7b75 *5d5ffd9a533406f6768365c15cd1bad7c41216a8356aac631f7bd420a575b2782d2c11ba8a59b9 *fe95ae1fed2c5b3f4b4c938ad6aca4052c424f0bd6d4aa169dac9d9b6bdd88cfd816aeb24782ad *6d6f2b530a3a73b78cd36c4951095ccccdf6b5842caee420fecb42482a9774b84592229feb83c5 *026191d4856e6f9774c9ecae4eb8311aa37763c9dc1fd572bce48dee0ed389def46e9749f16caf *eec01bde16caf77be5055244ef5bcafc9af7a4fcedaf7ab93bd40067b28e964d9f81e9e75ffd7a *75c18d1c30819707613036d8c176adb085253ce1426a387817d6ef872548df1137f5b826ee9275 *539ca615b3984c2e7eb198622c6315a3b8c654a2318eb5a4e31d1feac63e66528f832ca5211359 *c8403e32928cace42c96b8c95b623294cd18e2295734c956267195b36ce32773b9c858fe72b7bc *2ce62692b9cc4ede329a731ce6352feccc6ec6549be30c620ed3b9cb6abef314e7ace79ec1b9cf *1b7e2fa0cbc4fee7412fd7ce869e929413ede73c335acb887eb4991d2de9406bb2d2595a34a6cf *56e84d8ff6cf9e76efa5431d254d93bab5a03eb57647adea3447bad5807c35acc74ce9598b1ac1 *b68eb0a0732d4259f3facdb5fef5a1772d6c4be3bad8752636b275cdea6533d8d7ce6e34b4a35d *dd4ecfdad4c2c6f6afb5cd6b6ee7dadbb606f7b5ad0d6b71979bdcad3677bad1ad6a75b79bdda7 *7677bce14d6a79d79bdea1b677bef1ed697df79bdf9bf677c0018e6981179ce095e6760216cef0 *04dcfbcf0d8fb8c425fef0064ffce218cff8c22bbe528d7bfce320e7f8b7404ef2924f5ce4c730 *b9ca55beef98adfce521ffb7cb614e738cb7dc7035cf39c5658e73fe9dfbdce13ca7e3cf7d7e73 *a10f3de7451ff9d16b9ef4942f9de64d37c0d3a11e74a54f7de551bffacbb3ae759657dde95d2f *39d7c32ef681cf9cec24ffbad4d19e76b3f79ced1f573bdc637ef0b3cf3de372bfbbc6f3ae779b *bbdde87dbf38df03bff3babf9df0111f3ce219aef8c503ddf08077fcc6ff6e75c94f3ee1efb27c *c3290f76cd737eed9a7fbca40b16facb8f3ef3a5ff7ce945ff68d2a71ef295b7bcea5f8f79bbcb *1ef69dbf7ded0faffbd3db5ef2b3a77deb512f7c46bbbef8893e7ee8710ffae5ef3ef29e7f7eec *7b6f7ce23bdff7bca77ef2ad1f7dec435ffb86567ef787ff7be04bff18294abffad7cffef6bbff *fdf02791b7aa46ed007c1cbb053ad28f1d52a1fffefbffff001880023880045880067880089880 *f5910700987f0dc8800a188112388114588116788109c87f0dc82201a88118f881201882223882 *2408071ee87f0ef87f2758822cd8822ef8822eb882fa3706f157833678833898833ae87e2ad083 *3ef8834018844238844458841e30001100003b binary ./doc/images/Tea.gif oldhex * newhex *47494638376134014801f20000000000ffffffdcdcdcccffffb7b7b76e6e6e8080800000002c00 *000000340148010003fe18b0dcfe30ca49abbd38ebcdbbff60f81440609e68aaae6cebbe702ccf *746ddf78ae177aaf92258170482c1a8fc8a472c96c3a9fd0a8744aad560bd6ac1118d07abfe0b0 *784c2e6309e8b47a1d58bbd5edf7bb2be00e0d8c24a0cceffbff80616705848586866d878a8589 *8b8a7476430c064700948198999a9b7d832f043ca09fa13c2ea24291920b9792ac450baf9cb2b3 *b49b9e4aa2a749b93cb8bd750b747779aa7a0ac5aa0fb5cbcccd4eb7bba45d1102bc747b9242ba *a9c3b002784a250ac1d8afe5cee8e9e8d048d602d4eec479dbc195abe0442a00046dfde7c8c9b0 *355047b020197603b5497b770e963b8609e905b1f7ce889b7dfdf8fd13e2fe8da3c0861b0d8a1c *f90421b16a0b3b32449948584296a8ea555a69ce019a7d38292253a992a4cf9f484c768c0792a5 *2e88e5240a2362094f4f23381de8f438502ad0ab5851c1a49a3465d187cab672e3786952b88e4f *697a64fa31abdb9fec8e10553697aa5899add85ad2f32f644fb46ddf0a3618d7a257ba0b2b66bb *3b5108be6e21a33cad6a75b06567858b3c6c97983324bc8f89388d7cb9b4e92483e4a821a53a0d *ebd64a17dbdb7bbab6ed2d281d1d6aa49b11a8de8c6236be4dbc38132c3e7c08e70dbcb9f3e7d0 *a34b9f4ebdbaf5ebd8b36bdf5e0858095022c28b1f4fbebcf9f3e8d33bc0c205bcfaf7f0e3cb9f *4f1f3dfb60eeebebdfcfbfbffe7ff3f77d07c47f041668e081ff059808820c36e8e0832228981f *841456682185120e78e1861c76a85f861e8628e288e58148e28928a66881892ab6e8628a2cbe28 *e38c1bc648e38d382268638e3cf6f8a1770bfa28e490f1ed48e49148866064924c3679c1924e46 *296503504e696593555ea92591596ee9258f5d7e29e68c0a02a0e19868e618e01e67a6e9a68c0a *7af7e69c2fc6d9269d788e68679e7c9eb8679f807af867a0845a3868a1883a7868a28c1ab868a3 *90f6f768a494d23769a598be7769a69c0208a49c9d867adea6a296fa01a9a6a6aa01aaaab65a01 *abaec60a01acb2d6ba00adb6ca8a6baeaeeecaabaabefe6a6ab0c28a4a6cb19d1efe8b6ca6ca2e *5b69b3ce460a6db48d4e4b6da2d65e5b68b6da06ca6db77d7e0b6e9ee28e4b67b9e6be896eba69 *aecbee98eebefb65bcf26e496fbd57de8bef94faee1b65bffe62f9e99d01573b70c1cc1e8cf0b3 *0a2f2c6dc30e1b6c07c1117b0b71c588028c718f1a6face6c51e03da71c8348e2c650ebd82cc69 *72e3946a32922ceb13eacb47c69c82b12a536a330a384f2ceace27f45c0fc59102ed72ce95da3c *2cd23ac7bcb4cfa6b29c2acd4cfa002cd398ead02ad54de29032d4adda102bd75dd73036d62bcf *a02bda99d2b036d861ab7d36dcaaba3df7d0b18afd35de71eb7d35dda15a3d35db8c2a7d34e090 *02bd42b284e3a9b8dc90929de2e352fe6fdbf89594671e34b99727a9f9e731b4dbb98fa0977e83 *9792c367faeaacb3e063eaeab52efbec2dabc802ece8d1ae3beb142687bb79bb076fba8331ff4e *9ef0c87fcea0d3668ece61f2d0538e60e5cd23de62f4d8ef7c20f5d5f33d63f6e033ff5f722338 *7f61f8e8f74020f9e55b8f62faf0a3dc9fe0b39a5f61fcf89bcd1ffdf5bbbf7efe00d4dc7ed447 *818e05f080c21ba0fc0a683f0b20f081d1ab8fd656d4c00840f08211a4cf025f55c10660f08319 *8ccf0639e83f0c80f084c99b8fd732002d14ba1079f259210694f5c21a064f84a75b95f96cc843 *dae1d06f33745e0f8728bbf7c89085a39b9d0389784023021189258400fb8ec74404c6eefe8941 *8ca2034608bc2a36317758cca2f796a83f277af18b5d2ce3067665b7189e118de509a3188340b4 *0740ee876f0c601aefc80136864e837984a378e438c72ed4718b309060200529821c7a00573250 *e422f5381e42161254148824202709402ab6f1918dfba30a39c9480f3812945a0c8628f1484afc *0d528da81c63265769c656763204a78c251d4d48cb2bdaf29620c8650720d9cbf4fc92921f10e6 *302f57ccf31cb3941950661f999948563e137ec994e61aa9594d5f5ed3951de0e23253a9ca6e1a *f39bc08ce61141e0477382119de054e73a4fc54d77c6119ee9ac000123d4394dbe139ff1e3a538 *7569480df8d399008de704a6c84f7296d39efeaf4ca842edc83d2525b1998d94e844196038f104 *8b8f11d568fa28dad1f010eba021152929c97352946654a52b65e90e316a4a98c6743cc7026936 *6dcac912d94fa7e1e4e9243de55044d2d4a0425d24516589d4a30a34a96f5cea2e770ad1a64235 *aa3e2d2a499d3acbab9e71541d04ea53bdca44b06a558a2e95275989689f0e3ef405355deb10d3 *c32db12e54ae6c6deb592d6857bee29587eaf9d627c9f8d71a06d6ad1eecab510beb424d2136b1 *8a7d2b6341e8d8bd7635ad5b9dec07e1b32e586656b318e4ec63d18a59c982f681451a2d69317b *dacda6d6b263ed656b43fb5aa6ee11a5b345ed7cfae5c8dc4293aeaabdacda7c9bcfda4ed58dc4 *feb5e17e4c96dc17f2e765cda5aca482abd6e822f3b9d4adae75039aa0ec5a75bbe82b10ecc01b *be03e18ebc21749477e38a5e252a6abd546daff22a643cc8ca577a8682ef4befabbd0bd577b5fc *652886f45bc900f38fbe044ea981b5d9a0ff4a60c1037d90831f0c61cf2218b60aac7064759460 *4f6a18ae82eab0873fbcb8104d58b824de9c89457ccf14ab78c5181e9f8b6b0763db76c8c5283a *f105480c2316ffd3c02ad2716ce5db22210f99bc2e32f291ad5b271fd712bc7072b2eab65b3229 *4fb9b937523207b09c652b5fd9b738d2f296c11c662f7fb9b51f8bf1fdd00c26336f52ae431273 *816dca24395bd38bf37233c972ace73d93c8ce7e56feaf9a039d244013babb833e3497faac680e *19bad1cb6534a4f39be849b7b9d2962e33a6335de54d733aca9efe7492252d6a063dbad4870d35 *aaf9acea55ff99d4ae26d0a9639d551bd3bad0b0be35765bad6b47e7bad7f59935b02dcaeb615f *d8d6c6e6d8af932dda6233fbbdce7eb6a9972d6dbd22bbda64a236b66b7ddc6d5ffadade2eb2b6 *c36dd271939bd8e03eb79fccad6e8262b2dda38e36bc83cdee79eb50def6968fb0f34da57af39b *82f8fe77aad32d704a13bce0030e38c2a55ad085bf5ae10ec7a9bf23be9e89539c01fb1678c6ff *bd717e773cdf1fb777c8e73d727897bcdd275777cacfbd7272b73cdc2ff776ccb73d736cd7bcda *379776a0ce9fbd7366f73cd93f3776d0873d746017bdd747d775d26fbd745a373dd64f7775d457 *6d27ee58fdea58cfbad6b7cef5ae5f07483628c58c132a761ab407366e0805dad7cef6b6bbfded *708fbbdce74ef7badbfdeeab8983dbcfbe77bde3fdef800fbce0074ff8c2df5ded7bc7cfdb116f *f8c63bfef1908fbce4d1c078b6f3bded959fbce637cff9ce733ef3680782d7474ffad29bfef4a8 *dffac55b34800400003b binary ./doc/images/TestCircle.gif oldhex * newhex *47494638376134014801f20000000000ffffffdcdcdcccffffb7b7b76e6e6e8080800000002c00 *000000340148010003fe18b0dcfe30ca49abbd38ebcdbbff60180564699e68aaae6cebbe702ccf *746ddf7881ef68b10482a070482c1a8fc8a472c96c3a9fd0a8744aa516aad8a20f00cc7abfe0b0 *784c265f09e8b47a1d58bbd5edf7bbbbed0a0c0c24a0cceffbff80616705848586866d878a8589 *8b8a743f430c064600948198999a9b7d832d043aa09fa13a2ca241754493aa97450baa99af4cb2 *9cb5b68202a748a2ba47bc3a49baa94378b402c6aa0a42c611540fc77bb3d1b7d4d5529ec1a440 *cdbf5dd3c741c29144c5d178495c0a3fdfcbecd2ed55c8d6f3f446d8bbdad0cfddfa4179e25c2a *2d30706e080a0004da2874074d551e7f791a3474154da2be57b42cd6db58feedde4521fc98ede1 *775116403b0ec11171835061428622214e84375352c5883127cae3c81393478d21bfbd22f9311c *3001c35cd584e8000dc2a7026dca7c287369d58cec646965d8b36ba75c478b824db44de8c87c4c *a79dac4490ea91a70ea2b6b348f7a65cac294b72f5ca57cc4faa41a5927c3616d538499756e9c1 *4b51aac03d5bef4e4316b9afe53f1e8d04dd97efe1bfa349fdb5d2373aef32b9341b33769cb3aa *d5cbb0bf642eb239ee6049462105145290b7db29f224c675fdacf25cc86677c65e1e65f64ab4be *a06b067db837b1dfccb36b1f33488e1a52ded3800fbfd6df624bdbd3abf732c8d1a146ee19818a *cfc8f0eef5f8f39b11c08387fe7df8f40528e080041668e0810826a8e0820c36e8e0838520f503 *28225468e1851866a8e1861c76e8c0157550e8e188249668e289287208e2845ba4e8e28b30c628 *a3862b7221e28c38e6a8e38e33d698088f400629e49022f87823914826a9249246b6b8e4935046 *e96293525669e595195289e5965c766981965e86296697608e69e6994f9689e69a6cf2a8669b70 *c639a584363a29e79d787af8669e7cf619c29e7e062ae805800e6ae8a10d148ae8a2822acae8a3 *793a0ae9a4704a4ae9a567fa08809d9876ca668d7b70eae9a863fa4827a9a8964a2710a2a6eaaa *95a6b6faeaac69ae7a2aadb842196baebcd69a8aacbd069be3aec282a042b12010fe8b2c042f8c *e0c2b211280bad091d520bed02d2f67a428adb169badab07e9d82daedf7a6aad92e7a65a2ea525 *6c996ea7eb3e4a8299f37a1a2fa2f5a2992fa5f70ada6e9cff42da6f9ffbe259f0a1031bac8ebf *0b236c2bb077067ce8c17e26cc26c5f8365cf1c381622cafc691724c30b820cb69b1981e779a32 *9a2777b9f2a82f8bd9329631a35a3397335b5972b03babfa6b9b37cf1a74953943d9f3b247e32c *32bd4923dd34ac4ba37cad054f4b593492554f9db5af91401ce5d0d76eade4d5418a3df50f660f *49368f699fbd0e99515fd9b6db6f6fb9768e73d35df79577cb08b6de0fe48d63df300a0e38037f *0f1bf793861fde40e373fe2c25e48efe234ef4e249525eb9e551127ea2e69b73ce75405eef087a *e8a28f8db990a7a39e3a93ab03d9baebafab1dbbe9b47b383b869e579bfb88bb5bd83b87c1ffbe *7790c36b58bcf15cc02e39ebcc93b8fc07c95f387df4cd0b597d85d7639f3d90db87d0bdf7dfef *18beb1e47f0efeed2f8e9fbefb5fb2cf6dfaf39b2fbffaf4d7aff8f333c29ffff1313adf06fcf7 *3f0242408019306001f7d7351c29f07fe58311022ff0c005f6e87eba8360ff2ec83f1755508311 *4cd10429f0410d3e7084122821081588c21180106f01c4a0f25e282e09ca30432a7ca1015be880 *1cd290803c7c1c0dd916b906ea6f883014e10d2de44324c22f882144e2065104c5264ad1fe7d41 *b4e215a9b844f149b16c5cec6006bf084613f1508b5f1c5f0bd148c6eead918c437263173bc046 *385e0f85756c6389f0084722dd718e03ec23d64834c23cda9190804ca0203337a2091ab28fcb43 *e02305593c492e125d7a4a24052fc9c80e599293835491262b30c945064f80a5a4a42747494250 *767243a874e52bb3c4ca14ca7296bcaba50b6fe947518a9189bcec252c75c9ac60c6d197469ca1 *31cb482362f67099c76ce62f45904a4ece2e7cd5bce4359d294468323397d3f4a2376537cc707e *209bd6946632ad374ee8d1d29c1e40a736d5493a65b69388ef5c27f7eee9ce0b554f9ee904a73e *a9c9cf6f56e89f0525a740eb892180ce73a1feacc26142f1e94f6e4671a285cb2743d989d12456 *149e1c70a829351ad18676d4a3c2b3a8485509d15bedf3a453fce840c509d3189d0ea135f55b4b *4ba78195b234a5200d644e6dba53890e35a332dd28308fdabea29a94a91e742a47a18a22d0e194 *aa26baa94ab18abfa49674aa5c051e495d4ad0b04a6fac3c55a459c52ad5a5aed5776d7de95b89 *8756a3ce75435a0d6a4fef4ad7b89695af7605ea4cd107d8c01e74ab857daa57c94ad3c4ca55b0 *4a7dac631b7b58bdee75b294adec60098bd973d2f3ab60ed6c483fcbd8cc8a56ad7e95ec693749 *dab45e76b5a84ded5f61cbdabada93b6542be766398b5b52ea36b2a1ed6d317f0b5ac50a7797ad *feedeb71916bdbdb2ef799c42ded6c9fdbcde4e295ba815ba565478bddda2dd6b542edee45350b *dce03ef79416ad2e762b995ef59e3793dbe5ee7ae1bbdbe92e97bdf195ef7d1bd95ef70a3792fd *f52f6da757c8f7f237bf743cee1f11acdf01ef31c0023eed82eb6bdececa91c10d96b019210cdd *d5aa91c31176ec87319c600d9f288b1e0e23858d3bd92782b8c32d5622894b1c6319afd8b080f5 *1f14c7bb5620be38bb89f5f18c3d9b631b0e399e85dde18f873b57162e19c84d8ee19189dc6319 *ed38c44c3de19399ccd50a5e19c650fde097b10c53316f99b9472de198c15c5315ae99cc0975f3 *996d39d41cbe99cd13f5e19df1cccf26ee19cecbb4fee29f011d4c41cfd9b771d6dea1117d4f34 *0e1acade64e3a3216dcc3a4e9acfaecce3a5311d50226d9ad33ff5f4a2630bca477e9ad2235dd2 *a9517dc8d11517977ad4d5a833ec44abcd9ad63abcdc948ff843a8ed9a5b3e0518df6e4de50202 *74d5b9b52096909decf7c1edd744259f4f994dc1607329d8d4c680b57566ed6c6b3b77dbde14b1 *59ecb8708b1bdae232771cd5ededf0d24dddd81a375ee1ed407a9ffbc6eed25a9cda1d4f7b57d5 *dff146b71f01ae3b82071cdf614a9ca1143e6c81a3cbe0aa3599bc810d33887f68e21eb4780235 *7e71874f8ee329647898f85d2d903fcee407c478ff402ef24ca9bcde049718a348fe397ab7bc4d *34ff37fed346957360dfdca63fdff7cbb126f38107fd4e3d87f9d1c537ae59259d6def925ed473 *f5f4752fbd8745f7d6d051d69f63e9adeadd053b76c54e5db23fd7eccb45fb71d52e5cb6f7d6ed *b8853b6de50e5bbaafd6eea7c5bb68f5de59be63d6ef9305bc63059f58c217d6f080453c5f157f *57c6cfd5f16f85fc5a256f56ca87d5f25cc53c566305a1ce7bfef3a00fbde8474ffa05ad8a06a5 *e8baea57cffad6bbfef5b0577dea651022f2b82114b6cfbdee77cffbdefbfef7c00fbef0874ffc *e27f270ebcaf7df2916ffce63bfff9d08fbef4a75f7cdc277f42bdb73ef5b7cffdee7bfffbe047 *83f675affcdd8f3ffce84fbffad7affef3db7e0ba58fbffc0de74ffffadb5ff4e245d300120000 *3b binary ./doc/images/TestRing.gif oldhex * newhex *47494638376134014801f20000000000ffffffdcdcdcccffffb7b7b76e6e6e8080800000002c00 *000000340148010003fe18b0dcfe30ca49abbd38ebcdbbff60180564699e68aaae6cebbe702ccf *746ddf7881ef68b10482a070482c1a8fc8a472c96c3a9fd0a8744aa516aad8a20f00cc7abfe0b0 *784c265f09e8b47a1d58bbd5edf7bbbbed0a0c0c24a0cceffbff80616705848586866d878a8589 *8b8a743f430c064600948198999a9b7d832d043aa09fa13a2ca241754493aa97450baa99af9cb3 *b4b49e49a2a748b93ab8bd02a94378b241c4ae0a42c611520fc97bb5d0d17fb7bba440cbbc5dcf *c541bac1c27977db95240cc8aee34db2c4c6d2eeef8202ba47d902d8d6f6ebafde91e896784450 *0020d0a660ba62e91a387ba590dd337df9b6398047b1a2106a11b7d553b6fea75e4659fcb81c61 *58c4cdc082040fe693f4704f3b880863465c49b39dc59bb5302aec868fa33c7c088985b403cb26 *04340393561a07319ccc89ce9eb69489b3aaad9f7676623de5d3634621432b1918a652128166e8 *58ee5c3b9566cdb630adcad5a4d3e946a61d81a20dcb2a68aba51255fa04fc366ae1c336e72ae6 *83d1c8dd668f836245d52fd9df5523132e555596615bc4705d265e4c3ade3cc73d216cfdc59427 *24914200821bfdc4681ea82b7dc274e8b6b46fd3bfe801159e8868c95fdf641321fb9b73f3e75e *06c951436a7a9aead6f9dad3b3e0efe29665a18b6732c8d1a146e619814acf8832ecf14ab4c29f *4f5e000f1eeed1b3dfcfbfbffeffff000628e080041668e08108265808303f8022c283104628e1 *84145668e1850e5c5187831876e8e187208628a2851a36b8c58828a6a8e28a2c525822171cb628 *e38c34d6d8e28b89d8a8e38e3cf628028e31fa28e490440a09e4894526a9e492281ec9e4935046 *39a193525669e595165089e5965c5ea96597608699e497629669a68d649ea9e69a4d320823926c *c629278669ce69e79d21d489a78836ecc9a29e7e4a78df0b81760868a11c0c3a28a2101eca6805 *8a467ac2a31e384aa9039266bac2a518584aa9a6a012caa904380200e7a85c84aa2a0ca866e8e6 *1ea77ebaeaac32b46aaa9b40c45a28adbcd6302a8eaf22daebb037500aacae7612feab6cb1881e *bbebb2d0f619a8b378466bed0e7b523be7b5dc626ba7b66c762baeb771827be6b8e892aba6b962 *a6ebaeba65b20be6bbf4326ba6bc5bd6abafbd61e26be5be00f3cba5bf52066cb0af6012fce4c1 *0c23bca5c24b362cf10c03e31a6cc113675cab971623aba4c620c7c0712a1e1319f2c9224b09b1 *8f28b72c2a942befe8f2cc2e4419b38d34e7dcc29337d3a8f3cf9b2ed9b38c336f50b49243af08 *f2854b1799748a1243ddb0d31d9b1cb08e0613f9349ffb0e09f0905b83a82f9363fb18b687f4fe *fbaed955f3e8eebce9f67836d3e89a19f78e735738ae9c7beb98f784e256dbaddf6dfbccedb3d7 *a25938d1893f7a388d7f3ff8b8acd6fe42beb8d295b7daf88d974b0dadad0d64fe67e7238a0efa *0fd1724e328ba99f0e41eb2a46de01ecae3f40fb88b227aa6ced90ee1e3be91f2ecbbb05c2a798 *7b06be0f7f41f2221ebf3cb1ca6bc03c88cef73e6cf4465f8f3bf074f78abdeede37cfbddee17f *0f3eafe2af2e76f9e6cfcebea1e3038e7efb20bc4f67fc11da4ffff9ab528fbfe4f3db5f08f4e7 *a2ff0d3080023ce0ac3e543ddbd12a81f97b20fcd4d7bdfe4130820bbc1f052d24c10b62505513 *8c44c91408420fcacf822432a0fb5068424165b0420d445d095b78c2191670832e64210d3f18aa *14e290879ada21077518a106be5088143a621155883c222231873d9c121331e0c4274231fe8852 *fc21094165450c29f14753249e0dbb48be282e518b1fa82219af9829091d4f8d6b84101c3990bb *39c611806604231a5788c53b76688c20901d20fd58462e3e489079246405db78c8304a20918a5c *64a41ae5c8d74132928564649e2ae9c03e62f28f86dce41e9be8c94f7af1921bf81b2a4d99c450 *7e206fab64652b4b49474e9ac395b23c252d53694b194a2a9721c2652d4729c65d023393937c65 *2f85794c492e4a99c4b4de2f9b193c6376ca96cca4e61035394c11a6d19adaac61323b70b66c86 *539c8a82a637f938ce7382929b1a089b39ddc9c667765324237c243ce9e94c1e54aa92f3e42710 *ed194f808253a0723c28a90c3a4d84beb39dfe19785a401d8a47885e339a96dc2745d149d08bae *537a1add2847fdc94b8c76d2a2221d29bc2e20d190a634a10d8d681815fad22d76344b3375694d *2b9ace829a34743adda94def53d28f5231a6429d654f65fa535f2e35a94a7d2a4e9b9a2aa44275 *a024f5283e416ad5abf2f4a614185a50bdea019a3640ac5d25ab08c6ea2aaab255add943e9047a *6656b89252aa15a0eb5bed7ad4b44640af72e56b59f77aaba61256b0c5c4eb5c997858c45280b0 *8055ac63d94954ade6eaae609d2cff2acb52c6fa55b398e5ec548d2acdcc8236b4591ded569ff7 *d9d326d6b410b859635d8ba9bdcab6b5b42dad68c3aac2d9e6f696817dc06d83fbdbc7e29601c3 *fe956c71759b5adefed4b7c5b56d6f8fbbdc93c2b6ada49d00747f2bdde752b7ba4025ee59a72b *5ef0d6b6bc0b48ee75cd7b5ee50a97bcee656f7bd78b5cf8d257be558def78bd8b5ef97637bbfa *ec2f7bffbbdad7ee16bf23f8ae7a0f8c60eb32f8aff67d708381abdffaf2b7c2f825f065598be1 *016bf862daddae6b21eb59015797c486fd2e78510ce0007778c52a8eec7dcdcbe2021bb8b913a6 *f08c0bdbe2049b78b935de3087770ce4208338c42a8eae91f3a963227337c968fd716e0f1be517 *2bd9c45576326deb9ade297279ca54f6b2881dfbe52c6bf9b465cea994d19c641edb78c8679eec *97dd2ce4beae59ce8d4dda9c413be796b619cf7ff6fef39d05bb67415b59b38576e49e113bd1d8 *2a7ad17c5df4d6206d574933f4cf95b634559b1c67b536dad19be6348eaf7c677952faaa9f0675 *8f992b613643d7d4a7166aaa55fd66ae621ad5942e67ac773aebf7863abcb796f5a9e7d66baf16 *1bbbb5b675b05f1a4bd5d699b29d6676ac6179ec9a36dbd94756f6a0457aedbcf6d2a9db7668b7 *bdfdebf9865ba0832c6ab2377b686e57dbd7ab466dbbc53d6e72c75bdead4e6abdedbd6e76cf9b *9fe9bee7b3bff96e77dad1b2d986f6bfcf19708127dcdf0ba7e6c111ce643b8f199813a7783dcf *2dcb8c77b6dc2edeb5293dfef17bc775df122739b62b8eef688fbce1ff0479c8454ec82fead1e4 *108fb8fe226d7ef37e0f75d97ee479cf070e5398635ce8a2c4b9c239de45a427dde73f077ad39d *1ec86f1b57e577ec200cad8e64ac9351eb5b97f98d69ee4104865de904f7ba10cd7e76a87f15e5 *48647bdb891e55a34f1dec3e447bfde41e4702de50ef69a7fadaf93ef787ab94ecc3d31e03b96e *71b59b4ff18b17fbc9f14e43e8a50ff051877bf4a6e7a118769df002e47ce719af6dc1634ff4a3 *97fcd2edcebbe2b549f5abd7fca85cff7acc171df2a7ffdcef601f7bd673ea76dbe37def65ef27 *e007dff61b073de568bf7be4275ff981dadce8841f78d4234ef732f2fce4991f7de9abcef975e7 *7eb2263723ede71cf7710a9ce2a8bf56f587cbfd3532fff0fed1cfa5bb118efd6ff7fe95dec623 *f90f96ff18038078437ae1077f49523672438005583742f23546a2800b687f86e3800f887f87b7 *362a32355a0381c874300fa5811b68811d9831f3773548c381fd04343ac324fef77c2ad8323c83 *82baf48239033332f8813418322a73833898831353252db84d3e1835561284293884693332e057 *234898355862843dd8840658843c583a52c8805d0285d57485faf7845598815c287e0ff3859813 *8694978564588666487c27288238b3861747356e883570986f0993861358873470275a38237ab8 *317c888732f3872a50287d488784580ecd22882cf387c6c2885e1386bf0289458284b6728807a8 *82ae838964e3ed32c3c38950d234ca038a6a8380e6438af9d23709848aede27702c48a7c23305d *048b39367d4b588b5e3887b81882b7b88b404889be587ec0188cdfe776c4182fc3788ccd678cca *7887bad88cebd78bd03826c9388d21428bd67821d8988d85c772dc68331da320e2388ee4588ee6 *788ee8988e05822b34500a89f88e00e38e32b021d9e106a1508ff8988ffab88ffcd88ffef88f00 *199002399004491d71b08ff488900759900cd9900ef990101991124990f788900dc28f1539911a *b9911cd9911ef991689091f99890fa28922079922899922a999226598f5ba08e30199332399334 *5993e7f88d7832000900003b binary ./doc/images/TestShear.gif oldhex * newhex *47494638376134014801f20000000000ffffffdcdcdcb7b7b76e6e6e808080ff00000000ff2c00 *000000340148010003fe18b0dcfe30ca49abbd38ebcdbbff60f82841699e68aaae6cebbe702ccf *746ddf784ee47c4a2c018170482c1a8fc8a472c96c3a9fd0a8744aad5609d6acf107086abfe0b0 *784c2e97b183b47acd0eb0df6b371ceee57a0505461260eefbff8081626804858687876e888b86 *8a8c8b7540440c0547009582999a9b9c7e842e033ba1a0a23b2da342764594ab98460bab9ab09d *b4b5b59f4aa3a849ba3bb9be02aa4479b342c5af0a43c711540fc67cb6d1d280b8bca541ccbd5e *d0c642bbc2c37a78dc96250cc9afe44eb3c7caead3f0f159d548da02d9d7f7ecb0df92e997798a *a40030c08dc177fa5689d307ab41c2740cdded2be6509e4569f42a0ab0b7fe8c8f3d86e2fa7541 *d2d0c81b82060b22ecf8eca1bb670b23ee6bf912e4c59bb73602b3e92d1fcb8f3c75461a69c9a5 *c40669082ab5446e66cc8ee2663e646914a7d54c1917726cea311f4c6e22ef4c2a400ce1a401ce *201e9d08ad9d4da9ce1cd0bc4a3750d6625b277555b44daed054fec6c274c5949b5ba387659a6d *d8b6b15e9a89eb4a0e43efc856679761fe0d16d818615624d5ad14bd984f62c673293aae3ab935 *98ca267d4210baab69cfa16203868bfcc4ad43bf09674fe5caf8b759d7c8a7c02e02d4b2d77ac0 *c0e92e5236b9f5eb7f08cd59536abb9aeedec32adbb38030f6f3e8afe87c84c811fb46a1de3702 *4c34bdfdfb6704f4e841dfbdfefcff000628e080041668e0810826a8e0820c366808675d8cb2df *84145668e1851866b8df011c76e8e187075c88851d126a68e28928a6a8628620b6e8a28b3d8c08 *44892bd668e38d389af8e28e3cc268838c119a92e390441669640a3d26a924883400c9d7915046 *29258b4b56692587313849e3945c76e9650b578619e60b5a0af9e599684a29e69a62b650669a70 *c689239b74b6b9c29b72e6a9278675f669270a78ee29e8a035f869e89f26044ae8a28c2279e8a3 *57020ae1938d56ba28a4988e5982a296761a67a6a0461a00a79e96da65a8a85a39eaa45b9aeaea *91a9c6bae4aa249af9eaad39caaaab92a4e2ea2b8abb06db63afbf167ba1b0c8befe48acb1ccf2 *90ecb32d2edbecb433406bed87d252ab2d98d7767b809300d8baedb82c786b2e907c884beeba26 *987beea4c1b02b6fbbeebeab8abaf3525bafbb4ec69befb8fbd6db2fbefffe1ab0c0f0125cf0ad *07237cefc2cc36bcefc010172bf1c40957ecebc5183facf1ab1c772c89c21f131ab2c823915cb2 *9e27074cf1ca95b6ec72c630332af3cc1ed73ce8cd388facf3ce3ca31c84ca3f731974cf29179d *e7d1480fadf4a74c0bedefd36746ddf4d4549f6ab5d444673de7d65c7b6d34d8618b1d25d95777 *6d36b06897bd36916da7fd36dc71bb3db78d75cb7d37de79dbbd778a7dfbfdb78e813becf3e06c *17ce2fcd886ba8b8e08d53f838e491fe6f38f9e239572ef9e5981faef9849c1b9ef4e796876eaf *e7a4e7607ae7a3a78ec3eaac3bedfa0db0c78ef5ecd5d6eeedcbb8e7ae7bb7bcf70ec3efa7b72e *fc0bc4efcef8f1dc267f6df0ccafe03cf0cb47efe8f4d6426f3dbdd8675ffdf62574fffcf7db8b *3f7ee6e00760bef7e897bf3eb4da5bff3efce4333fffb3b4a2eefefdc2e66fbcfcfceb9fff6407 *be000a307ec23360b01255bfde2950572740a0031f18ab0836707614aca005db97c00ca24a521c *9ca00733e5830ba66e84a05281045d8742129630842c6c21a4ee64c2cfc9f0512c5821e96e78a8 *1cd650733cf4939b7e18b920f6c9053a04a211d9442622366e894c44a21311074544f910fe8636 *aca2a89a8845256a7156599ae2dfbe08c63076b1726454d20c9258c434f2a84962dc9b1b775403 *3652718e3e82e3199f884726fd288e73ebe3877060c7c109b2433a00e4db0e19a244eef18e7d8c *9122d726c8fd14728c789cd025e538470a6df26e9df4e424cde6460b7d32906414d128c5964a55 *3e12924bccd02951194b59ae9295b5b4e52b0d194414cd72913c4cd12f81d942150d9392c534e6 *2d71e9411b1d139914bcd13349194d692e9399011cd234a9c93f226d139beb33d237c1d9bd238d *d36be184d239d159ce28ad336bd8e3d23be1493c2fcd939eb5fbd23df1193a34ed936aa683d33f *013a39390d94a081d3d341111a37412d94a1fe6023d443f9c934464d94a232b3d445d9d9324f6d *94a31273d547c9e92d5c8d949bd72ad649a189ac66ad9496a9dad64b31d94376cd148d55aad84d *d3a7d36bf2f46f3bfd69c1822ad47c11b5a8f23a2a52d7a5d4a58eaba94ed51654a33aada95295 *5956bdaa4a7daad5a765b5ab26e52a587ff6d5b18a54ac66855959d3ea51b4b2f5636b7d6ba5e2 *2a578bbab5ae0ba32b5e07a5d7bdeea9af7ecd1360031ba7c112364d863dec9912ab587bdeb5b1 *4f7d2c64a52ad9c956b5b296c52a6633bbd55d72b6a79efd6c5e372bda5b31b6b4de242d6a4d05 *5503b8f6b5b08dad6c674bdbdadaf6b6b5dd6b5371cbdbdefaf6b7b1f5eb6e814bdce21a57b8aa *fe95817197cb5cdc0656a9cd8dae745ffbdce4c260bad8652e618f9addee1277bbd6758177c7db *dbc31295bce8b5ad79c3cb82f4ba57b68a0dea7be7ebdaf8b25705f49d6f63779adff7eef7be28 *e8af7b217b5301a797c000368181d13bd9992e98bc0d4e70001e3c5ecbbe94c2deb5708231dcdd *ccae94c3d9f53080418c5dce9e94c4d335f17d512cddcf8e94c5d175317b61dc5cd17e94c6da95 *71687b80e3e59676a33d3eae8dad1be4e2a2f6a245feee8f939b64e0ae76a24dfeed93551b65df *ae7680b7335195cb3be51ddb60cbbcbd3296d5c603303bf7ca0735f36dc53ce614a959bd621ee8 *9b73cb6639cf79b66c6eb396ef0cdf3cff93cf7daefeb364011ddc3ceb39438486ada10f7da144 *5377d1f774747d217d57491b60d19baab4a431cd680a599ad39d9ed0a739bdce51931aada6c6f4 *3953ad6ab1b29ad25e5ec1ab61adbf326f1ad4998e750a664debffe580d786de26b0837dcd61fb *7999c63eb6ae157c6b5c3370d9136eb6b3735deb1a245bd9d59ec1b5b1ed6b1a6c5bd0bafe36b8 *b31d0371c77992e63e77acd38d6645b2bbdd5e7e7797c9dd0279cfbbdb2fb0f791253c6dc742bb *dface537c0a774da8157a8e006d7a4c0136ece8533bc48087fb823e92df1ce52bce2be8a38c6eb *e8f08d3bb3e31e5f91c6436ec68b93bc54233fb914ffadf2c282bce51a4a39cc55f8f299bbd2e4 *365f94bacc73fe6c9cf3dca135ffb925832e741eecfce747e779d273be749b377de64f8779d45b *3e759557fde4572779d643be758f0fcc41600fbbd8c74ef6b29bfdec099a541d8b8e2332276a46 *e1798328e24ef7badbfdee78cfbbdef7cef7befbfdef80e78e1cee4e22bccf3df0884fbce217cf *f8c63b3ef087b77be1093ff8c75bfef298cfbce6379f86c8d77df292af3ce7474ffad29bdef49e *a73b17d0cefad6bbfef5b08f7dd9bb2082dadbfef6b8cfbdee77cffbde5320000900003b binary ./doc/images/Torso.gif oldhex * newhex *47494638376130014a01f70000000000080808080c08181818181c181820182020202024202824 *28282828282c28302430302830303030303430382c38383438383838383c38403440403c404040 *40404440484048484448484848484c48504450504850504c505050505054505068b0506cb0584c *58585058585458585858585c58586058586cb0586cb85870b8605860605c606060606064606068 *60686068686468686868686c68706870706c707070707074707084c07088c87870787874787878 *78787c78807480807880807c80808080808480887c88888088888488888888888c888890889084 *90908890908c90909090909890989098989498a0a0a0a0a4a0a0a8a0a8a8a8a8aca8b0acb0b0b0 *b0b8b0b8b8b8b8b8bcb8c0bcc0c0c0c0c0c4c0c8c0c8c8ccc8d0d0d0d8d4d8d8d8d8d8dcd8e0e0 *e0e0e4e0e8e8e8e8ece8e8f0e8f0f0f0f0f4f0f80000f8f4f8f8f8f8f8fcf80610e00840e89004 *f04d00e81a00f00800f05790e8024de8201af00508e8d8a8f0dad9f0fffff8bfbff037def82d24 *f80921000840f83390f8ab4df80e1a0008080001f800005300001a0000080018c0b4db57d7ff1a *ffbf08bf0de8ac004fd72010ff0540bf0004fd0000ffa09000ef4d00ff1a00bf080028c8e2dbd9 *74ffff13bfbf080f56bc00edd72004ff64f800c48c29db56dcac0402dbcb00ff2300bf40000090 *19004d00000204289e90db634dff0e1abf0808003c3c00b0ea0006040040400890cc20db57382f *1a404008759ff00079d80015ff000cbf28e804db4f00ff1000068e0037ee6008086f0840400803 *0620000038000040000030d0040155004a4c9001014d00001a0000084a003c0100ea0000040000 *40000098007c5600191a00080880e810db4fd9ff10ffbf40bf841804dbda00ffff00bfbf0088cf *00dbfa00ff08008c3000db5300a0d004ef5500284c90db014dff001abf00080f9c10000ad9201e *ff0000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *002c0000000030014a010008fe0073e0c8e18144410f2b468c206130e1c2860a19228c68b0e241 *8b182f6accc871a34783356c84ac3152a4c992284faa4cc972a5cb96305fca8c4973a6cd982854 *e4acb183a7cf9e407ffe0ca15385d0a0488f12dd99b4e9cf9c21521055a1e38307ab58af5abdaa *d503d70f5bb186fd4a36abd9b268cfaa2d6b6346dbb76fddca8d4b77aeddba78efeacdcb77afdf *be80ff0a0e8c62860eb987db26368cb871e1c5901b2b76cc78b2e5ca985180404194c407122576 *1c5972c4c91226a74b9f4e6d1a3513d5ae47cb264d7bb6eddab86febce4ddb866f1e5ad2b05923 *7c0d9be2c78727378ebcb972e7cc9f4b8f4e7db975e8d7a767af8ebdbb76efd8b7fef8deb1a64d *f9f3e6d3a347bf65870df2eae3af8fdffefdfcfbeabbf070af39058aab2400c1430f3c08d8430f *3f145820813f0c3120820a02c1a083062a486085180e68e186195ea861873cfcf68517237e5122 *89289ea8628a2caee8628b30be28638c34ce68638d38da38850d6680e1858f40fe286490444ea1 *438f432649a4924622b9e493438668030820a4e0990b6e8534837b3abc67030f37ec10e697618e *09669774696952966fa9e9669b70b229e79a26b9c7041555e049859e79f6c9e79f7e060ae8a082 *164ae8a186268ae8a28a36caa80d5d507185a4944e6a69a5985e0169a69c5eeae9a69e768ae913 *36fc6003679f99c082aaacb2b0aa0bfe1d1c0041022eb81083adb7ba90840024acdaeaafab060b *ecb0c2164becb0610a6144114628dbecb2cf32abacb4d04e1bedb5d6665bedb6d4768b2db7df7a *abadb8e08e1beeb9d6922bad0d582831adbbcbc25b84bcf40ac16ebdf1beab6fbef7ee3bafbf4a *48ebc3982878c65009a0f55ac20a25c420c302243410410c2dc8602bac0690e002c32b248cf0c7 *1e870cf2c822974cf2c862eeb0c37efbadec32cb2fc70cf3cc32d74cf3cd36e78cf3ce3af7ccf3 *cf3e437a03103b106d74d1481fadb4d04603e0f4d3503fbd741743276db5d2578789c2671f94d0 *35685d23dc820b1ef85001061eb87042ad32dc10c1da087bfcb5d71fcf6d77dd78839d37fedd7a *f76dc30d64f220f8e084176ef8e18827aef8e28c37eef8e3901f7e0316822758f9e096f39079e6 *3b50ae390f5187eef4e782777ef9d3980f8ebae563def07109b0c3ce4209b35b2c430423386080 *0cb62730810b16cf3e7becc4c30e451bc827cf43f1cc37ef3cf362462efdf4d4576ffdf586431a *e1f60276cf7d81da772f7ae8de0311be82a87b9f7e842adfc0f5f3b5d6daab0615d46a440216d7 *fa3cf1373cf1441b66f09f0bf6474002bee7068233108816f8a1067ae8811c72600421c8400a4a *b08213cc200633c4407655c8410402210f4448c21061a14200d050090994c2109af083a01b1d0b *474721cd95e9069e21deec5aa02a16d8ce05fe3630c0082cc0010d3080043f7495f04a6002da31 *d1894d6c03199ac8822998018053882219b2508630b0810d61204209a870453350018a686441f4 *1e24a11e48e88d6e8c231ce728c73ad2f18e76cc231ef7a8c73ef2f18f7e0ce41e21d5032214f2 *90864c2422174904422612008a8c6421218948472ef2693dc064240ba4321bcced894d344113e3 *57ab0f40200032f0400448e9822682f295a164a2149918853678c1085e6843144c80bc2f200f09 *46404319a4604b5cea12964f2c5302dd08c8660af299ce8c2634a7294d697ab0074388633625b4 *4d6c6a338e3a38a13701e04d6e7e939cdd0ca739cd19b5727a9341617a9db060c08216f8d00534 *fe70580710f0810700d161f8a4583d8f252c29ae4a0c6d90810968d00631f0f20c2ce00200b7d0 *841820f4053e6ca8b182a5b20406e1a3200da948474ad2929af4a4284da94a57cad29692145241 *28424c672ad39ad2f4a64580694d0160d39ec694a734d5294e83f0b4a116a19082739f0e5bf5aa *5bc5a0063f88400978500102cce06231f0d546812545555d34a3626041575910842a20740c0855 *28431dba55043ec8a5708dab5ce74ad7ba8274724400695e3fbad720f4f5af41c02b4801a0d7c2 *7e94b07c0d2c16007b58a81936080e02d30e6457821658b60514a3580d64b0d9063480242cc880 *0828b0d9cd66f6b2a84d6d0ba468d929d87209b99cfec26ac9d0822f8cc1084748031a5ceb05d8 *b641b6aab56c028120846999ebb8e54aaebad0a55ce62e17b9cf6d2e749f855c480961094558c2 *75b3bb5ded62d7bbdc5d8275bf0b80ef76b7bbe50def78c35b84a7b5d769e1bd6e4c3919bb5505 *97773270c201362b830e7ca0020d90007e834be0d95ed60a65a48265590b042fb6610c47680182 *01a8e002bfd55ad2cd707437ecdc0e4ff7c31af6b0732797af12ffcbc4f2ea5cbe788aaf7fb178 *5a2a3ef17b5ffc3465092160328dacf04c60598ae533064f9501090cb00292c840072d80810536 *40021dd400c8a78d3266a72ce52a53f9ca56aeb2843e6a04232ca1cb5f0eb397c72ce63293f9cc *664e33fe9ad7ace636b3f9cd6e8e339ce7dc664819c10977ce339ef7ace73e3bc1ce7b06009f07 *7d6741eb19d0797e5a9f15bde7790541424faca70bc636b649cbe06f149801ef343d8302d8a001 *04a8c1552d3be95253dad4a83eb5aa53cdea55ab7a414110c211703beb5ae3f6d6b6ce35ae77ad *eb5ef3fad7be0e36b0872dec6213fbd8c29edc9767fde5f1396dd96356f6ad01706b68439bdacc *3682b467ad686b1b41d1b356c2470f243b1e4fd96240ae4101263003926cb62d3b20c100127081 *194079ca93a658be29ad6f7cfbbbdf00e7b7c0f79d6f8f32abcb084fb8c217cef0863bfce1108f *b8c4274ef18a33dcce657636b5cb8c712f6bfc691cef029dfed92c84a30a286ca2b4270f2dcb82 *1ab440d33200b2edfadb000738a003f6ace74055cee39dfb7ce53fef39d0872ef4a2dbd3ad4088 *69c98b50f2a633fde94e8f3ad4a72ef5aa53fdea56cf3ad6b7aef5ae73fdeb599f1cd393d074b2 *8fbdec68677ae7cece762198dded6917c2dae1def6b7db5d084140503ceb3b508ac1c0b226f03b *e005cf43c2f3d8e841e7b9e213cf78a2ab5c6507faa84c8d4a799f5abef298bfbce633cff9cd7b *bef39987a9b8471f04d29bbef4a85782e853cffad39b7ef5ae6f3deb8990d4aea11c94ae0c65ee *99b87b51c22e96c04766f0872ffce2c752990b024235a9c9fce53bbff9d097e6e4ba49fd6faed3 *9bd3b7be3babfe6fceec5f9ffbee1490647358bc259adf89e73f7f01d7cffefd456f650ad2e005 *e76fc1facbdffe1ba4fffdf79f7f02e15f7bb417043c108003c80302488008088006588007b880 *08e8800ad88012c8800e582063f249c0d77b1af87bbcc781c4f781c617822088403b70206ff47c *28187d2a98822cf84c93f37dda077e9d038334e84e33b87d31687d3624266da0063ef883401884 *4238844458844678844898844ab8844cd8844ef88450188552388554d8063770033d48855ab885 *5cd8855ef88560188662a8845688856378866898866ab8866cd8866598856d1887723887745887 *69f8867698877ab8877cd8873f88877e1888823888845885570887fe8598888ab8888908888cf8 *8890188973e8889258899678895c488998b8899cd88946a8899e188aa28889a0388aa6788a8a58 *8aa8b88aacb887aad88ab0188b6cf88ab2588bb6f885b4788bbab88b50988bbcf88bc0f8898718 *8cc4588c48e88bc6988cbb888ccad88cb2c88cce188dab088dd2588da2488dd6988d9b888ddad8 *8d92c88dde188e8b088ee2588e83488ee6988e7c888eead88e75c88eee188f6e388cf2588f8508 *8ff6988f61888ffad88f99488ffe189074c88f0259904e48900699904988900ad99044c8900e19 *917f08901259918668861699915208911a99901cd99105f991201990223992fd589226998f2899 *92f5b8922c198f2ef9fe92ed189332998e345993e5789338198e3ab993ddd8933e998d401994d5 *389444198d467994cd98944a998c4cd994c5f89450198c523995bf589556b98c1499951189955c *698b5ef995cfb89562e9916459962179966849926ab99627d9966ea9927019972d399774099376 *79973399977a69937cd99739f99780c9938239983f599886299488999845b9988c89948ef9984b *199992e9949459995179999849959ab99957d9999ea99518199a81399aa44998a6a99109a000ab *a900aef99a09909261698baed9000a609b9e959b9e759bbcc99a1a399bb0589bbca99bc4a99bc3 *e99ab12991c0898ac2599c0e5073d0f99cd2099db9d99b5d099ad6d89ab8fe999bd3d99dd1f99d *d5699bbea990cb298ac3f99d36979ee919010ec09eeca99ee9499dbba90066999afad89cdc5973 *f0e99eedd99ffc099ff2299e06599e9c589bf9a99eecd90611b0a01210010dfaa00ebaa00bda9f *f1f99cb8999cfe48a097a89d079a9e6dd09e11903cc92301245aa20d2aa1146a73c6399e6f699f *f19800db299deba9a0219a3c1520011590a31560013b9aa3384aa211fa9f014a9f2d8a88f2c8a1 *9e65731f8a3c352aa24efaa43c7aa3253aa1ef499dbc59a4f908a3b7199d1edaa412f0a46d9001 *1a20a61a30a61a903c516aa2131a9fd5a98f1a0a89485a734b0aa674faa4655aa616d006166001 *6a5aa5167aa5f6f8a68ca8a5fe492aa74d5aa7882aa25e910119b0a73e7aa2ea699c818a9dbf18 *a70e30a7899aa98a8aa7690aa9d3299e18ea8e82aa88062a9d0aaaa99aba5a9bcaa83c0aa4efa9 *a2172a8fa35a8806ea59988aaa9ada4ac9e301639a018fbaa656caa2ea38ab8358aafa89abc88a *3c0bd6068bdaa8520aac7f4aa47be9a2e1f89a857aabc99aa993863ccdfaa814baa2a24aa9b778 *9e977aa9d99aacb5c2ad1ec0a8bfeaa7bb19aaa569a4e168a9e77aaedbcaac63daaad03a9ff02a *8ec4ea87c65aaf02bbad25c0abceeaa9b08a9cc32aaeb2b89a31da00025bafdbfa019ceaaab03a *9f0b4badd908a3dc19b1113bb1f9faacee6a9bfd7a981a6b8db50ab11e5baf32b0fe5a5671b0fb *0aaa7e79b2d298b2d8bab2b8aaab06abafaf1aad25ab98341b8d488ab302dbb26d40b107eba9e0 *1aafe5c8a1cf49b4f53a6a5631a6ed7ab1b6698effaa870ebba5e60ab5d9aab3f96ab19fea9a07 *c0b4e248a82aebb5e76ab414ab01adaab4d16ab6d53a9c6acbb22ebbae3c1ba932ebaf0ccb8a5b *9ba4756baf6d50b06ecba7708bb17c1bb4ca18a781fbb5dccaae37dab3bb49b2892baf28bba580 *dbb8c80ab6302bb97beb8d596b871caab95febb2541bb97acb9b3f2b8da15b87b54abac92a03dc *1ab208ebb3abeb8cad3b8707a09db08baeb3ebab52faadd529ac406bb9d238babd9bb3bf9bb76c *caafa0dbb7a77800af799bc98babaafebaaec0dba0c23bb9aef9bc8a5b8cf859bda8ea02b3eba8 *903ab2885bbcdd9800da49bde29ba8e4cbacd8eba3ffa9a23e6bb2c6db8c8cfbbe88aaaa6d70a6 *8dfaa3e76bbfceabbeda889f69cbbf897aa6855bb5632ba0067cb9baf9b40a9ca8bcd4b68e2ab2 *043cbc115c8d434bc1154ca74d34b58d6ab86bbac10a6b8db9bb86f41ac2fdcb4bcdfab6273cb6 *c43b99dffb8b089cc02e0ca62d5002f8eaac1afcc0dddb9837cc8b68abc33bccc323ccab192cb6 *097bb5449cbfc528bde789c4496c85c9234a3f2cc3e8fbb9b80bbd9e889f207cc560aab3f31bc4 *563bc49059c4bad8be564cc658acac5ec3a9912ba4c37bbb9cc9c6e38ab96f0cc7c9c343fe5b6c *c2427abf6b2cc5c438b47e5ca780bca89d1ab3aacbba60cc892d9cc83c3cc70d5c01418ac2356c *8c2b8c86adc9c7942ca258883c4b0cb9626ba510fcc57a5c8b881cca95bcc50e9cc690bccab238 *bd7decca8b9caf829cbaa96cc3860c8cc8ebca650cc367ecc416faae855c8dcd29cc740ac848bb *a7c6bca278cc8b9d7c86c1cccc4e4acca65cbb4bebcbca4cb7d8fca430accbd17cc7c97cbcdb19 *cee22cbfdb3cc3ddac8cd53c86c2a9ce4e9acb255cce05eccde8ecbef4acaceadace9e9bbef01c *c99b38cffd4ccacb8bc6c7ecc59649cbb1c8bb07dd06d71bb20afdce0dfdcb38fc9a11dd06bcc4 *ac00adb7f93cd00e0d8bd77cd067dac4dc5cfe9dd32c9a186dc4101dd1bcaaa70e3ca49b4c8cf1 *2c86addccf316dbe54bac1c8acca2dbd8beceb9a1b8d3c279da683ccbdd2aacf35bba5450dc055 *3bb2800ad4d9599b1bed01c8c3c591faa7bd2cd241bd8bcb6cd2591dcb34bcd22c5dd5fc1cd18d *1cd0e259d3364dd0054ad4459da7aeeace1c3ccb5f0dd6bcb9d139da06271ab321cdd4c7eb9a6c *b0d179aac15dacc6549d9dada9d6c813cd0b9dc2e72cc10ab0d1752db95cbdd48b8dd6851dd15f *8aa2cd8b9b6e9d99235d8b1a7dd015e0d7ee1cd99abdd98cad009d4dcf21badad2dcc112dccf9f *0dda284cb92a0cd79ed8d8fddcd39faad4da78d36ab8d7b2ada05b5ddbb68dd6c98dd94a6dd679 *fe9cd7c148d8e13cdb292ac4d20d8cc6ad86c02dcc35badcc3abd8bd5dda6dac006910cee55aa1 *165dded47dc86510dba1bcde43cad0ee6d8eab8906d82cde81dddceb9b00e9edca975adf92edbd *ef0dbeb03ddf6d009ef339da936d8e0a7045a14ce0acb9dd9cecdbaba800fa9dc80c2edaad8dbf *ee28bd1b7ec5e56a9ca0fae1201ee2e84de21f5a9cd699b107de8c1a7ec5c4d99be42db7f1b8e2 *210cb12eded5588be1b138e33b2edaa06ae10f7ea412febe031edd467ee4f518dfefabd4058e97 *e62db4c2d1bb3cdee00e8ee3fd580601aeb9365ee1190ae4428d06f2edb5c729e6635ee5d97800 *68f0e5383bbd6a2e90ddad886670e5119b066dbde5feb24ae6c59800770ee799ca061a8e9c7c3e *a96c9e8e80fee6c2f1458e7e1c696006b079e86eeae7d5b8bbec9be99a3e92757e9a7768e99e4e *8aa01eea96d8e9a42e86a67eea6098eaaaee85acdeeaff98e8b07e8aaf3eeb1719e3b6de8ab59e *eb51b8ebbcfe84befeeb4d18ecc2be84c45eec0b39eac81e88c7beecc228ebce5eeaca1eedae38 *edd49e87cd7eed4198edda3e91d0deed8cc8ede02eeedd4eeeda6eeed78eeed4aeeed1ceeeceee *eecb0eefc82eefc54eefc26eefbf8eefbcaeefb9ceefb6eeefb30ef0b02ef0ad4ef0aa6ef0a78e *f0a4aef0a1cef09eeef0a709f1a429f1a149f19e69f19b89f198a9f195c9f192e9f18f09f28c29 *f28949dff28669f28389f280a9f27dc9f27ae9f27709f37429f37149f36e69f36b89f368a9f365 *c9f362e9f35f09f45c29f45949f45669f45389f450a9f44dc9f44ae9f44709f54429f54149f53e *69f53b89f538a9f535c9f532e9f52f09f62c29f6b269ede02e87646f9269cfe9667ff6f3f8ed6e *7f8f6d1ff76ab8f62069f71d89f7bf39f7748f867a9f917f6f91815f9183af9c8758d4889ff88a *1fb887bff88efff8908faa8d1ff9945ff9913ff9969ff99a1fd198bff99efff9a17c85a23ffaa4 *5ffaa67ffaa89ffaaabffaacdffaaefffab01ffbb23ffbb45ffbb67ffba51f10003b binary ./doc/images/Tux.gif oldhex * newhex *4749463837617a019d01f70000000000000400080808080c08101010101410181818181c181820 *18202020202420282428282828282c28302430302830303030303430382c38383438383838383c *38403440403c40404040404440484048484448484848484c48504450504850504c505050505054 *50584c58585058585458585858585c58586058605860605c606060606064606860686864686868 *68686c68706870706c70707070707470787078787478787878787c78807480807880807c808080 *80808480808880887c88888088888488888888888c88908490908890908c909090909094909890 *98989498989898989c98a0a0a0a0a4a0a8a8a8a8aca8a8bcd8b0acb0b0b0b0b0b4b0b0c0e0b8b0 *b8b8b8b8c0a410c0a810c0bcc0c0c0c0c8a810c8ac10c8b010c8c0c8c8ccc8d0ac10d0b010d0b4 *10d0d0d0d8b410d8b810d8b818d8bc10d8bc18d8d4d8d8d8d8d8dcd8e0bc10e0bc18e0c010e0c0 *18e0c410e0c418e0e4e0e8c010e8c410e8c418e8c810e8c818e8e8e8e8ece8f0c810f0c818f0cc *10f0cc18f0d010f0d018f0f0f0f0f4f0f80000f8d010f8d018f8d418f8d818f8dc18f8e018f8e4 *18f8e818f8ec18f8ec20f8f018f8f020f8f418f8f420f8f4f8f8f820f8f8f8f8fc20f8fc28f8fc *30f8fc38f8fc40f8fc48f8fc50f8fc58f8fc60f8fc68f8fc70f8fc78f8fc80f8fc88f8fcf864f8 *00005300001a00000800c48c29db56dcff1a00bf0800ac0402dbcb00ff2300bf4000009019004d *000002000000dc00002e000040289e02db6300ff0e00003cff00b0ff0006ff0040ff089006d0db *003a2f00404000829f07007900001500000c0028e800db4f00ff1000068e0037ee6008086f0840 *40080306d000003a00004000007ad0040155009d4c9001014d00001a0000089d003c0100ea0000 *04000098007c5600191a00080880e810db4fd9ff10ffbf40bf841804dbda00ffff00bfbf0088cf *00dbfa00ff08008c3000db5300a0d000ef5500284c00db0100ff0000bf00000f9c10000ad9201e *ff0540bf0000000000000000000000000000000000000000000000000000000000000000000000 *002c000000007a019d010008fe00ab080c518260881424489428885021c3840b0f422c48d160c5 *8b163362dc6851c60c8f203f8a0c4972a4c992284faa4cc972a5cb96305fca8c4973a6cd9a386f *aeb42183a7cf9e407ffe1c2934a8d1a2448f2a1d4a328a88104fa3427d0a756a88aa22a846d58a *b5abd4af5ec3827d3a0346d9b366d3a25dabb62ddbb76ee3c29d2bb72eddbb76f3e2ddabb72fdf *bf7eebd6483bb86c61188713135e6c983162c78a1b4b7efcb6848812266c0c3132248991239f3b *7f0eed19f411d1a637abe6cc7ab5ebd6b05fbb9e41fb8616419424e5a6845b776fdebb7f0b0f4e *dc7771e0c693235f3e5c7973e6c79f4b8f4edd7975e8d6b363df3e5d7bf7e55b68fedb90348abc *f9f2e8cf9fdf6263c6f8f4f0d5c367ef5ebefdf45f6eb40f0eb5c48e1b38dcf01f0e38e820a080 *01eaf00380051eb843820b0e786080125608e084185a48616d6480d1e1871e8608e288229648e2 *8926a688e28a2ab6c8e28b2ec608e38c32d648e38d368af8c40c7aa801868f40fe286490443e51 *438f432649a4924622b9e49343de40db8796b160964730b457837b33dc40830d5f76f965985e6e *b91696225d79169a6caee9a69a59ce70041452d069679d78dea9679e7ceee9679f80fe2968a084 *0e6a68a1881eaa68a28c2eea68a37ccef0051456506a69a5985eaaa915926eea69a6a0760aeaa7 *9a2a31830e33d479d9092ab0eaaa0afeadb20082021330c0020b2ee09a2b0b440c5042abaf06db *eab0c2164becb1af7ed983104108b1ecb2cd42eb2cb3d3464badb4d85eabadb5dc56eb6db6dd82 *fbedb6e3864baeb8e89eabaeb9ec96eb6ebaedc2fbeeb9335c5104b4f7329b6f10fbf6db43bdfe *ea8befc002034c30bf0717116d0e610a61d9422660f6ab092998e0c20b0e940001052eacf002ae *b22650020b15a72071c4289fac72ca2cafec329836d8a0dfcc32d74cf3cd36e78cf3ce3af7ccf3 *cf3e070df4d042174df4d146278df4d24aeb2c290d3bd810f5d452574df5d54f4f0dc0d65c77cd *35d65f406df5d85793fda50d97896082da98a91df10a2c849003061b84c0020ab7be4003fe0578 *477c32db6ba30cf8e08217deb6e126cc4083983734eef8e390472ef9e494576ef9e59867aef9e6 *9c77eef9e79dd37045e30692ee78e937a08eba0da3a77e83d7b06fed7ae3ac9bcef5e98edf5e7a *9834a06cc2efbfab6082f01fbf4001091124f042f10c58c0c2c7c20b0ffcf4bf3731caf5d8df40 *fdf6dc030f26e8e0872ffef8e4976ffef9914beae0faffb5cfbe80eab71f3beceeef10ff81b7bb *9fbf8331d39076f726b8d5ad7ed5010cdc4a080cf8d8ad00383d1a284109a3d0c30359c0c00aba *87068d9310852ea4a10c71f0831b0ca10745d8c112827084283421094fa8c214b2f0852b8ca10b *65d8c21abeb05e125a50807478031efa504afe579010002ef4c3000d718740cce1eb646744d945 *287563a28165a627bc15b04a05c563c10c1240820c7ca0030f28411661153d139c60786644e319 *47318733aa808d2698c3284ee084511cc107a398421a85e7c6cc6090410f0a240e0449c8411ab2 *90883ca42213c9c8453ab291907ca4242349c9495ab29298bca4263369bf2fe000089f0c252847 *29ca52024152a204002957f949558a1295ace41a0e64b94a01c56c06804be3194f704601de4a04 *1310c00b4240015fb2e08cba4ce62ecd08c735b6518e2640011be6304d5e2ad38c63cae026b7c9 *496e7ab39be0fca638c349ce716a128738f88121d5f92076a6739d86ac4110df098077b6139ef5 *fe74a73cef794fafd9f39d09fa92ef88d50215ac008b2c88c1c540b0001148408b174b68c70c6a *ac60b171586c3c811c5ba583ebf10059c48a59067940d2929af4a4284da94a57cad296baf4a530 *8da94c674ad39ada94a692e2411074cad39dfab4a7400d424e7d0a809f1a55a745ede95083ca03 *ae3135089f6c9cffa8f8aa58e5ca0532d001054c70030c1c0006207301b0402aac8cb6eaa27998 *a30a7070bd205454057f24d04de74ad7badaf5ae78cdab5e4b2a3a2094d4af24052c0f044b581e *f4b5a400f8ab62499ad8c01af60a85656cd716cb830579c906c133c10a36bb828e754c062f002d *0420200319a8800323b8006841eb59cebaf6b52b60fe23677163bd51c06d0ed4ccc30b60cbd90c *eea007d28ad7bae625dce212f7b8f24aee70956b5ce62277b9d06daeba24d5032304c108d5bd6e *76b16b5dee6ad708d4ed2e00babbdded8ef7bbe1fd6e10b8b6dead7db7ba3ab525f05ac5dbe5bd *20090a00ed0b4020020c40a002f6e5ad80633b07ce3e81126bd0836da760c7208ce20a0366100f *82fb5ce95ab8c21876ae86a39b610e6ff8c21f2e97e80446628495785fac1358510386b015432b *c5266eaf8bb9f62c85edd4b2d13bc1663ba6501760f5052548400a4afb821aaca00519f040096a *20031fb7f6c99d8d3294a72ce52ab7f641241582108cb0e52e73f9cb5e0e3398c72ce63293f9cc *664e33fe9ad7ace636b3f9cd6e8e339ce72ce73ad3f9cb92124212f4cce73dfbb9cf804e429efd *0c803f1b5acf85eef3a0f9cc354037dacffce2c183f608b74adfca638abb000c96b76918206006 *1038800cc0ba591658fad4a64e35aa57adea56c30d41131e8210644deb59dbbad6b8beb5ae73cd *eb5dfbbad7c0feb5b0834dec611bbbd8c83eb6b293cdec65db5a745c963597e7b7b5687719dab6 *0680adad6d6d6d4b5b08d89675a3b92d8446cbba08242550f0741ce58ff9580608b0000c4a0bda *b2d8a0040660800660e0e4289bba63ffae34c0fd4df0811b5ce02b1869b3b4ccf0863bfce1108f *b8c4274ef18a5bfce218cfb8c637cef18e6f3ccf63a6b6b6fec70cf22d8b9c6b24ff829dbddc03 *a8fec76dbc3ca81537ab0219ac60d32ff071f1f60b81084400040735284565aee3a11b7de6472f *3ad297fec71de8b4e5500f42d4a72ef5aa53fdea56cf3ad6b7aef5ae73fdeb5e0f3bd8c72ef6b2 *93fdec664f3bda7b203aa91301ea6f773bdce72e75d6c9fdee3d887bdee9de03bbef1def7a0f7c *0f78502081ce97a21d6bc1664f90f8c537de8a8fd7b1d2274ff4ca27ddf24b3f41cce4fad4ce1f *f5f39e0f3de8472ffad293fef4a64f3dea57affad6b37ef53945b7ec7930fbdad3fef645883dee *776ffbdaebbef7bcdf3d10a4aa3698eb1299bb44be19956fcd6b2ef3f9ce8f3ef44f904d0495f3 *fae6c4bef6b3fecffded7b5f93a273a7f8e1c9cf77869ffcff1cff3dcf5f7ef5fff33f979d22f5 *ca487f34d6bffe15ccbffe7ff73d99ad8f863034430268430058800318800478800698800c8880 *0e4843ea337c3c70031248813730811598811178811688811c98811fb8811e38821df881021226 *b9f47cccb782bf937c2d287d30387dd28741364020df7783dd978338b8833ad88389243aed877e *eec73a415884ff4484e92784e4074560320a83f0845018855238855458855678855898855ab885 *5cd8855ef88560188662388664588666788664380a3440034e88866ef886701887723887745887 *76788762a8866c88877cd8877ef88780188882f8877ad886837888fe8898888ab8888cf88685d8 *8890188992388994e8878f58899898899ab8899c188597d889a0188aa2388a77f889a4788aa898 *8aaa8885a6b88aaef88ab0c889ad188bb4588bb67888b3788bbab88bbc0887b9d88bc0188cc2a8 *85bf388cc6788cc2588cc8b88ccc488bcad88cd0188da4f88cd2588dd68889d4788ddab88d8a98 *8ddc388911d0733e378ee3d87310f08dafe88de8a888e6488e141001ef188fe4688eeb888aea58 *8f82188e3e4701fc480115e08f00f98fffd88ff3888fa1788f06d987e2b88f01590118e09010f9 *9002c98ff3788e09a98908799175385a0c29900e89011900921930922119920f299114598e1a59 *8919b99270385ae2c8fe8f15109122c9013679931c309220890128f98efa68912e09892d199467 *1893f0e88f1f39921cd0014c79154ec99436a9933d098f3e375a44c98843799563d88e4739933c *69934d39155931965701951cc0933399925509945a398859d9965ec89147c98f0fa9941d701559 *d182bcd47c59519639699269e99356099782f89684a9851c199348699750a197a5566956844c7e *3992815991870988867999562897f148013c39924c9915310737f685739766456b23024c299595 *198e6ca999769899b0298589d99115c09822c04b79f30267411b30609aa89915ab1992035995ae *399ba5b88686889c64589b5d2992a1999ba469166be83818b48665f13156fe249c1da093c5598e *afc99c8ea89ce2598630699b20b994a2499ab521610442205e421bda79024fd1017fd99ae6189e *e56986b2899c5c29930e9901ea299d2f409d004252c0e52c834778f1b93cdb1902f6499cdf999f *fb399e7b58a15fd8009c098f1f699350a19bbc89413830615a566bcec2a08bf33167f414368996 *1550910dd000187a86fda9991a6a94fef8951c701566f43c8a0320c03504437004444aa4420a5c *0192a2c7640257d1a20f4990aea99f33fa85357a9837aa8fcf099a1da03670631640da03438a04 *48b004622aa647da03015216a6b636104a9913ea9a323aa56358a5842997b669975c6a255d8203 *cb32a44bb0044c10a8814aa6fea7e12c694a6a6b339cf809a7729a87e4d9a85718a31b9aa318e0 *a1040a0318c403b376047fca044de0044dd004838a04a731785ee2a0f419024e3a90820993900a *8674da96574a9574999e776946059aa960caa99eda044ff0ab4e00aa4df0a7a56a5833a0a24c1a *a16809a514faaa5d18ab5779a58ae99502baa59aa5453430a2b336a6a11aac5000acc24aa6b236 *816aba02899a9353f9931010a3ceca85d01a94d28a9e957a97d2e9a57c2a0462eaa9bf0a05fcfa *045010aca24aaa867a039bf6a0f6e9a229999f71daae59f8ae2e29a90b99a54b19023dca9b17b8 *ab801aacfe3a05fdfa04c1ca044b50ac4a7a46108aaedfb996a3b5b00c6b850eabfe9110eb8e48 *69ab798aa9da3a0480faa9fc3a053aabb3c03aac4830ae5282a8aa799f271ba552bab250d8b217 *79a393ea99e9c9a31e43b3cb720448a0af50a0b354b0b3dffa04017b044230813480ac4d6a9214 *d9aa29abb2482b854a6b900c009338ba981970ab27e0a334106b55ebab4f80b554b0b759fbad4e *00b2a741783420b46d4a9c6aa9ae689bb649fba80c0bb19c19b395baa3f5da259a3a0477eb0457 *bbb757c0b71cfbaf3e6ba883bb5ba9baaa6f7ab60ca0b853b8b6f818afb49aa3d54ab1738ba917 *2804546bb57abbb9593b05bf1ab0433078239bace88a01656b9c678bba6acbb8ceaaa1ac0ba032 *dba35e5ab9dc8ab9573b05599bbb7efeebb3bd1b20053bba265bba3099b88aabbaebf8b2d3daa1 *3b0abb56a2ab96eba94eb0b19c4b05fdfab721dbbbc62ab6ca9aae28bbaec6bbb817daaecaeb9c *cc5bad6a13bb7bba2cdc8ab73bcb60a3b0b55d0bbadb5b9fdd7bb86ecbaefb3b08e2fb8d4cfb9f *90eba1e86bb1b1c6abed9bb3d8833da00ab85f8b03bf5bb280e9bdc5bbbf17cc8d8eabc1d43aa0 *3a66b1f75abb780b05233cc2814aaaa61aba061bc18269b4317aba2e8cbc909ac158cabc912bb7 *74cba77ecabe4fb0c33b2cae27bc386b0abc2b2cc1df0bbe2bfbc2dac800310cb3334caf352cbb *533ba64c10ac54bcc3c5ea250facaa425c9129bbae468cba607c8de44bc6e6ebc4215ab3fef95a *5b6d3cc2035bae6c7abfad99bf457cc4fd0ba962acc4e318c0134ba07a73a042aac683bcc3577c *ac4bcaa26789bf441ca35edcae796c8d7b1cc990fbbabfd3a505bca99d9ac9d8f3c3db9ba8ddb9 *c53ea9c8fa6bbca52c8da20cc9f26aa93daa45ad3ca4d7c304d7330099dc3886acc5087bcb44bc *ae0d70c769bbcbd1f8c8ce29af5a3ac051bb86da4abb47703d02700026a000838cc29c1cc45209 *90ceacb0d0accb483ca592eacb5dd9c78dd9a5b29b65b43b0a01100010c0021120006dbc86b3ac *9ab5dcccf308a7d02ccd484bcdd0d8b6ac3b0a11300a00f999af9b9b735ba07b4aa2431a00e15c *01e41cd06abaa44d4ab4fdb8ce084dc1e1fbfece331acf6e7b3d11bdcf01909471bba5d249b707 *ba2c42b0cf03600004b0cf549c079b764ca91aa18009a5b8bcc878acd2152ac6eb5a9bd8230001 *400006200001cac1abfc3c989aad23da03fb2c000230005ecdd13b4c090e6aae10fcc99569d275 *8cd4d3acd4fb69cd4c8b3d303d002c10d33549af66349dd539a23cd0d51c0dd33b1c08bb65ae4c *2ac76e3abceabad6d1acd00ccbd0ccc8d23029d7504dd554fd994b49d3baa9a7dc3ca27f3dd901 *40c56b606a2b0aa1053d95433cc1099dd48d3ca5703d5a0a763d301d0005b0cff4bc9e589dd58d *13dbb1bdc3b7b2a2041dbc899cd84d5dc48c4dca6e5d9e900d0123dcd95e3d0a14dd946eb3599c *fe86db9dfdd79f3dc2a27dc85169cb078dda6cbdd0c72d9eadaddc72addba320d361d982d36916 *8aa3dbd73dc2d64415db6dd0e5f8ccc4addacb09cfa21cd923ecd900eddce979d979c96eb7fd9b *3310dbbf39c2a879c888ccaa6afdbda99dd2ab3da38f0cb13becd3233c934a29e0d10d37cf539a *056a5f0ac497a40ddc0ededd107edf129edf2bbddfa345c5628d3d32cdc1035e6acff3e1f6e54b *3af63bdc39dfa68de28a5ddcceead8cb58e1cadbc6ef9dca023ac93047e0c6646a91c9e3bffd97 *067dda6e3bdc8b8ddfaf1acd319cc94839c3978d974dfe9850be78c8d49786bdc545db8e132cca *42feaa448e8c46ded4994c055f7e9b4d7c9753f182fe7bd9e73c9e9a66c99a275edfdeede66f0e *a9717e8c5cfebf2f4ec576cec419f008931009619997c0037da989e6117a96b62cc1880bcddffd *c5e1cd9c73ceb46b803d60b08f93500996d0eaad7e09aeeeea955009939097c597e95411e880f9 *e3849ee286aee58e3cded7ccea967009978009989009c9beecc86eecb02eeb9130965251e23729 *e8254d95847ed26e0eec8dca00de9edc30c9eac79e0999a0099ab009e88eeee66eeee4deeccf3e *eb9100a1a4adeb3bd99388cde6beaee26d3de118faed2e9e98c59eece7ce099de009067ff09dd0 *099ca0ee9aa0ec9860ecb23e094c69963e3e93694d8ec4ebeb627ce88d9ae8c6a800feded4a3e5 *08c55efeee04ef099f000aa0100a2caff29fe00909bff0eceeee11ef08d55e92085b9c0f5ee81b *cff172eaf1c3e8ef8e4bf2c7ae0904ff099fc0f2a2c0f2a1000a486ff00aafee0eefecb25e0991 *b00824b9eb8189d8c46bdf8bedf3530af4c208f2a52eee9870ee098ff248bff6301ff59bc0ee53 *4ff59630ebb4ee088b50ef69a9f3ddedf5459ce52bfeaa42afbc8f60f6e57eee9bb0f0e9cef0e4 *deeeeefeecb13eeb93ce08772f915b2f8f189f9f6d4edc0ac0ed724af68b0e018cb0eaaf6eecc8 *5efaa5efeca8eff8554ff7931e098e20f92839e8409eef5fbff97f0fa920fff987b008a1bfeac4 *1eebc0dfeaac3efc745ffc93d0fa8ef0088c20f98b900816feafced83efb8aadf99c2fa7dffec8 *85700889a0088bb008afff088ee0fa910009e21ffee6effae00ffeafdf08cbcffbddaf088ab0fd *898008eaccf53f69b441bed80a60fbfbcee233eaf900d1a0019e42860e1d4284285122450c192a *821851a244870d1726529810a1a10a143a52880032c2c8911022988490124283952b053660c020 *c1209a356ddec49953e74e9e3d7dfe041a5428d05134688c1a9a54e952a64d9dd654109381c036 *74f0dcf1d307d01f43050d7dfd7ac8e058b165c98e05fbb520a04214dc821459f2e449952959be *8409938182a77dfdfe05ccb4e8d1c0850d1f661a75ea543169dac07963a70e9ec958b1fac98a59 *f3663f803a7ffee6dcc70f1f3f77de8624997a6e5dbb2e052e668058f66cda3f0723ad9d5b3760 *058af3761933c68c193466dab47983fccd72399123d3b11347f2f43ad4a3d7711e67799bb82451 *d2ad7bd7b5de987c779f47fff7767af6ed7dc6ccdb800b972e5dc488095ea6ccf0e1c5d3987103 *8d36d008d08d360c34108e030f24504033fe834bb5d5c053493cbcca33cf3d0d37d4693d0e3f64 *4f31f81ac0020b2e4ca4cf3efbeec3afc5fcc62803461963a431b8e05aec4eaeef586be942bd7a *9b09442135f470482367eb6d4412b3c0824926b9c862be2e52accf0b15c5b02f0c16efd3524b15 *ebeb0235d576a4b0b5bbf22aef4835cf2b724d37fd4a40c4bc4aa4feb3ce121761c411461e71e4 *1113b36024caf90485b2d02c9c9470471e7b1c4faabd327c33d2c2da94b4d2a47c9b4aa0263775 *128b84168268118a14c122114e4f455442ef5663cdc297ca93c95259fba274565b774a52aa97ea *34e38d3ab20a0b21611139e820b50ae9038b3dec4c74421e5d7d8dbcbd82bcb5daa06ab536db04 *1cc50b824dc50030b2cb0a01a42b73d72a04b33df8b8c38e379854554756598ba0817a5d82adb7 *6cf7f5095b7e6f8d0a53bc4ab46fb8e524bbea2a76d9a58c3277936b63b85126a6786208dca24b *ccd4143553016aff05b9267f43b634d7f8045ae949e0f603f0b1372073b739c8147463b8322ac6 *b9e2b7768e704c0a05fe2239e891838e344e11331db8c914f363993fa7f51b2367a927a680e29d *355ef5d90688067968aedd3c1a2f8126ee54ca15ef1bc3452ea7667be20a3a82fbeaee50aa1082 *aff7f5faee2393c434673b379d4f4afae66bbb70b73d423cc2b97fde5aef5bf3767cc8de5a6a1b *d5530dc77c140cdc7e3beed37c6e2db6c82d857cf40fc5cb3c75d571c660f3cee5de9871d14d7f *b374dadd630982d577e7bd750c3aff08e3c5cdbcdd4ddb8b470f75de974fdd77e0afcebaeed991 *17f278ea73cb5d77e6b72f9c83895bafe077cfb1a6dbaeebab370ab7f339549e7bf7a7e62003cd *7f171f7a1d2b84697d0eadd7dfb0ecdf0720db3230c00c806f7cc3ab50fffedcc33f05fe850194 *0b60047336c05114b07e9fbb9f5df2d740f43090834e699f044538310ec4cf82cfeb5906edf6c1 *dd7890854ac994f64628c21090d08406b4dfbc5c729217d2c6853d140a046738c210746014251c *a001df26bc8de1ef7711801410d5933e29ca06650d18e2108b78c41b5e1063d13b530738d091c6 *559156543463615046892c6651044644e209c7173dbbb0e00426e000062290c6a7fc908f39b94b *1bdbb8c538e2b0678aba0b0d60c002117080022bfc6352fc18c99a845090231441110be94504da *85073798c10a4250813d52522893a4640c2f29c8378ab18b4b3c24e38630841ee0e00526c84029 *4d691b34ee7229285b65164dfe30b1566e1296e4c31f1290404b1aacc091beec572fa129943506 *5398a3c864075c69c82fdeef4c4c60c2326fe04c0a4c7327a8e423ca6468cd11ae6098d9dc66fd *3e12bbf038c19e4c38020e58f04c73e2049d69cc143bdb78828985a0881d48e205c5543e7c3dc1 *a14d40823e73d9cf9bfcb38aaa146816099ac98326f49873c3df13a60005283861093858811e29 *2a3269ae5427d5cce810ef884d4d9a7089f304a34ba030059e3a010937304105cad84f8b02519d *311de80944904d24cab39b3a6c8048a940852938e1083308812e89da5297de04a3489da13b69aa *4d8fce53240c7dcd4eaf40d5260881051980a4398bfac2af82758677348141c558fe56267a077f *4e980215d60a85938aa0022b9d2b0baf68578d6eb4a603bce953e976972648f50a5378c2106030 *d1ad12a6ab805c096393ba546d3635b2086409039cf084a952010a4cc08109cad959f57db62675 *15ad08c5aad757e254850259c26a793a85260ce1ad43f5656239b8d8dc8615af0635a6597f7b84 *e08a140a4ff86956696bdb9bbca4b98d256d3c3ffa5b985077b5253da96cb7cb5d9ae0f6bbef83 *c1c456704778f215838ceb01759b60cf25f480051898de2e95ab40bcbc578233902f7d1f9b0158 *4ab66e0dc0417e91c0842520a1072fc0405c05cc55972a20900696607ceda8d462c68f93f46c09 *03223c842320e10817e680864d3960fefdb917c4dc7b817c4d90574ddab789e1b1175d8420045b *c255ae1c5ee9516f1cc0f88e62be26e0687425fbb390806425cd8cf1913dcbdd4cb171c9006cf2 *93eb2bc7bea25520212165bd4c90612dd7b6ab1ecedd9725b80277f278af648e2590ed153e2b03 *6d9a343e1fd2e4cce451d811cac5c4f3426577e60a30f824c89d3192fb69e341f32ecc3be6ad8f *cfba687b61a0031878a48c2309e8eb15b8d2ee6bf209485cda446f1ac88f3a33064490814742fa *8fa4a6de4bd679eae55ddace086df58f5d1315964420032be840a8932be969eadacbbc769faac3 *5b42438684633d6a80d1ce9c811788a0d61bdeb24b213095d042fb7df3c5805e1b4debdffeddf7 *da02d1b64938408313542025910e374521f082183edbdccc5375ebb4f936507b847c507589b6ed *d5811eacc0deb69622ae4d0781193881b9ffde1e07702970f135388508cf769c321581101c0106 *0f1f35b32909011838a10394c678ea32f04aa77efcddf036da5448ce8493afe4d62aff230456c0 *040ed4ebc3315f9d4147e1ca24cad1e3cd0acf4a12a0f00888000a33b0f7cff3edcb0694bce8dd *423aefb4c9c52e7233cf3fc357020e90247b599d051480380b25ae370cf4a0e8ae4949d879a774 *a61790ccd2cd1ae3a69ef3b63fe104f54ae3dcbf16011ac478dc17d77bd26bd877f09d38f07a6e *c001d42ef2b62321cb66543cd12080c7475ffe71d7914f1ddf3769f68347bd71832736c96ff048 *d003bd8a8dd6a0ae51cf3cbd52bee6ad7ff00637bfad07762004908c95dc6d0f4408e8713c2cd9 *fdf67a1fdda7830e7f36197c4c20d09104a4642456e660e84946175d1d3dfaaa7b674da57c1a57 *33cecf34d1bcc8eb3292b70d50abeb13ffbe5053a1bd28f9fcabdb319a3a282903bcdff2b99bc8 *3eef8b80f0e1001160011368a0fcab96edd32b0cf891f838bdffc39c611a8501a4b9ea33c0d7c8 *090f330934cb800e60811be88103502009bc95639b01503a013d9a3a5dcb400d349cf42badb2b3 *3c14d320400a32b7c0008d83812378821568c1e5eb9f0838011c40822538021a1001288a212cc2 *fec1dd81b20ef440be02bc9b7bbfdb52c0f0e90013a08125a00208ec1f179c950a780124d82927 *10827aabc21bbcc2c2c9c2e9ebadc4013ee2e9ae12748b135c811b60022738ac345442fda18036 *0cac2788432a84a93a04c0a59a3e0b623d3ac2369c78a01214c313a001217881083cc4f5890013 *e881ca4282c68b8018a243486c9b00e428b2a2c41eb4c42f1c041234090ac0800c1081f9fa18fc *0bc5f5a10032bc8117e80028023b56c44228dbc2bf2b33a8da209b20b75b0c9f0a604150dcba2a *5a40507344214246d579ae65c4a10274c69c4880dc2109e5bb4633aac641a8c26e549d15989843 *cbb4580441908bbb5e0cbf5ffc20d373c76494c410fe583d5944ab03a42435e41798eb47a96181 *7854c61db4af2973bdb88b387d6ca0764cc8cc59c851f84687c4b3be2a895691c81e32c86cc10b *7fbbc8c281c751904780ecadf1d2210d0ab0c4a3480203a693c448869444df3bad3d74097c7333 *4a32359bc49c85dc489d14c7817c463e1ac96ae147a11cca8951300ff41d81949d829cc91a7b44 *a76c1b1680c71d9bb63c7437b4a3c5da4bc734823caddc4a8dc434703c31577b30ab2c4b334248 *b4a41878a4af28cbc32e14cb9044c79ffca3b3a44b85c4c912e3428f1c47adf3cb74aac9c0641b *aed4c87f7448fa71498682c9948b4b29ea37c64449b5844c600b47c33433cb4c4c330a4acd9c1a *a25c4bfe8eacb64ec217d1f4a5b9d4cc8c8cca1d54a2a3641cd7dca5d234cd9c714caf644b9724 *2fbeccc7cb34aac5dc4dde44cd5734ca1c0a4dc4e43a961084e3649bae3c34d55428d67c15e7cc *cd953049e9a418d4fcb5f58348fc8949205a4a5bc94aefac4b95accee50ccb88d44e53323ff5fc *4eb50c4fb01ccfd0894fa06489ee544fbb9447f7cccf4b54caab3c9ff9a4cf42b34f3c7c48ec24 *48b21c4dcc4c4ffa04d07f144f071d4bf33450ea21372b4cd0faac3378ba501fec91fdfc23a4f1 *4fefac50a6c24f0c15ce2424ce1ef2ae0fadcfa21cd1597cd02a3acf59798914954eeafcca0625 *d13331d1bf1c1b1aad181b6dd121cdd1898cd117ea5124a5fe18af24cc8e74d122554c0ffd50d9 *54c6df0c1e072d4f91dcd05c13081fddcd8cf44deb044e7bc452b32c532985ca2e5553db7cb536 *254d81884e381d26060d361c4d4a1d1d53e4e93238554901bcb3da04cdaa2cd027552c3c8553a5 *d2425844549b134bdc34a54cc953247da72afd4c4a05324bbdd423d5d4b122c04435930cd55046 *6dd4553cce3df5523dc4ce1785d108bda837a5510e7cd5fbf2a6d6b4d33b850033354d5ceda825 *05a94fedd55a6d0060dd4d3eadc41094d559852672cb541ae554c9fc52267d564354d5460d0438 *ad2163ba4e6ccd56fdd9515b09282465d6df8bd5304d555a45566565ccc92b554f7d307615d36d *6d5478a5cb4cfee2a28462bd58f549739a8a6efdd06fe5c17aa44cd708d86683be825d3aeabb56 *4bfc41b874d7774dd01aea57a7a3d3e003b78aad22e8a4d14262467ae5438aed278120d804f51e *bfeb549e24d2859da673a54fa37cba75ed588a9a8a6995ce95d5585305497b75528ffdd886f54e *9e9dca9d1c9edbbc598ab2d5e3f49e0aaabc7a7456a06dd795ca59fa24a049f5d9928559816d00 *3dd0d7847cdac224598e5d367c2dceb0bd488f6a4b7a52dab3155ab9fc5aef949f8e8b5871a5da *a0edaaa6d5ccba6dd9b2bd8b36ebaa81ddcdba9dc66b65cd5315dcbd4dd6e3ec54537d5b682ad7 *836c809465ccc38555a80bbebc0554b41d5ab56545d7791df6735bfed7a3a8c9a55c9d754ad14d *9cadc536543559dbe25bb47c1de94adc9e3cdd40552c3db8dcd62ddb53e55c0865afa9005d1cac *5dd8b9bcb7442cdd652106005badac805140dcd20dbe71d5dbe16d5ca18cde2f855cf87429d40d *99d94dc8e9b53eccfb2cf00d5fcb1d5f9ef938159ad8ae42dff0555d64ec8851304cf7c5b6e03d *569ccdde8b445eeacd3dee8adf9021de8b448d1c79c9fc65af014edf84ac9a03863ab1d45f5065 *afdb9a5f0dac1a0496978884ddf5aa6068ecdf2bcc60ac0160025d60e6954b06285e7343e06b3b *d50ece5dcf8d562dc560fb8d60a4b4ded8fd604c640048049d3279dd1cd6e11deeae3cc0c17871 *6113de6106fe1ae7fdfebf0818850d06e2338161f845e1489a5bd483e228fee167c15d22a60926 *be9b985861037316207e6121865b30ee8910feb791e0e233f6e22ab62d31761c150e3b3299637c *5163c9bde2d7bc603993637ba46301fee3d70c8432ce28ed496033e15536f6a743862637fe323d *9ee24786e48a92e46855df255b1447c68b4c3ea74d8e5945be243d6e152516654d966122660041 *30e52c5a1468f9d35566e5b8b5e50608e48c42e35416415b1ee55686e4578e65eed19d590ee2a9 *00e69eb0e3fed165a4fa6450aee5658e64615e65626627504ee63e26e2665eaee795e551406657 *996060f6e60f1a584a28e69c61145a7e8d725ee673e6204bf88450c0d462fe6ee77cfe656a560a *796e207a0e854c2891c5a85c41806578b590e7131b0608854eb0047e5e0a7f5e9f4d01e84c3814 *287112a4c18b40d0e720161b9840044ca8e74ea80488ee675236a7bf299128e9027a0605816691 *fa980f2c682f82b66934c1e998c00943c0044f08054e2869931e0a89be9b4da98fe0188e28419b *31a8044f7869fed80ffdb80f9afe8b425004a7ae044710eaa146e93f3211e0200e97a10c3ec00f *e1200e33e8844fc084e3380e07318318a1eabea8834ae80450b80444d8ea53ea6a33e202311010 *c9c08c42f08a834003027199e67017eb700e38408331f88b2c00684cc86bbdb66673ea02347803 *3ee8838238884f518445e895fe3740ecc920ed84b98385b903876903a7b0934ba867819e6ca2d8 *eb17ca8237f003835088cf5e844660844888845e4118ac200dcdf00c40600bb6106cc1f6033c60 *8a4e7912d70e054dd894d866e6d966a14260883cf1ed4ae0ee4ab084efae033ed803e028843f10 *ec73490b16299643a803a5a013c1e9823210e980ee82282911eaee10ebe6a045e0eeeffeee4b00 *f04bc0044cc8844c28042e088bc92816624988b736833158082c598444706f966691b41903d77e *e9fb906926c1ef5b06e649c8044dd0844d30f14de0044ee8844ef0044fc0822e300ec9b8888a88 *08d076f0b4e182a5c8821589110737834b706a4c78f0b4c19213896bfc266a7ed9fe844f008550 *08055178722707852c100337f895db3604446004dee6930269909a3983321003a5d8f1fd288e02 *39104bf0844fb80402396b33c0124e4172fdeea14a087000b7042c188337b803b64088449884ee *e66ee4207488198e314f0a2e188ee3588e466f74c8480e438f1831ef023a89ed24bf1b33c083db *3e048658843bbf04c8406ce7909988518a3268832ca88ed2667587a98ec536033838f44acf82bc *c674ae31033f280485c0934808f44ae0844d38985557ec373003f726982ef0833d288d656ff6d3 *4eedd4ae0ed16897e478f0fa3e726abe75a20104445084defef5ffbe8450a80cd46618698783a4 *68922cf002fc2883344003729177e3fefe0ccfd00c3e3004cfa8f69a11834381e86d2799365004 *5ff76e4b107002c7844b98043c6076d17078674fedd5168a95be0f33478bb43084883103423097 *3fc00844f80ad1a88e88e9777e06789231f801277113d7044c086a5d3feee43e6ecf4877a1506a *70691938a8838fd708061f16613904884888afc08c3a907531c8f64c3ef99011695000854fe804 *4db80446b0098cb77a72198a12b90f83898cca88884470758871884a988448d013a1077964c103 *634f7a365e7a9209f447d009844888bab77b442884acc70fc78099cb00843ed9f22dc793dddef2 *07778448b004ee9e0447680451c188aeb80338a8f5557e7bd3c9ed8aa808bc9ef882518efeabc8 *0ac1267bb24f1740a0f6b57f834910033bbf04ff267b4878045121963fb0035bae7cd3e193dbef *13c0d7fca0e86bc740183e30eeb0500884f0ef7cf70c3ea80e3320714dc884845ffdc427fb4860 *044540043fa07c3a77a948e8ee40ff75aa1f0a186f03c9d06cb6c06d6f27f14c2016b1e80a64f1 *03ecb084113f71e61f703cb78449988445b8feca5e664b18f0febf84a00688410207122c38088b *993676eef8f163c8d0a14389122d5ac4c9d322458a26223af4b010a03b6e0655baa48953a7949c *3869d2942913a64b0667d2ac69f326ce9c3a77f2e4398a068d513d87122d6af428d2a40231790a *f529d323a25dd02cf4f3e72122441a17317afeb428112346153526eae8b1501d82254f7afa140a *d45b4f8094d2ad6bf7aec09f41f1f2edebf72fdf3176fa14822891e2a24791264512b86871a447 *8c1a914d74a850cd4396001902ecf9735fbd4241932e6dba2f9a3d58b52a0abbb852a543031dc1 *861d299223b18a649feeed1ba9e8dfc287132fd8c6106bd791605bb2149560244b979a379f5429 *92a2e2dab70f0ccefd3bf8be141dbdaed47c7a63837e2c617a8929a6a5f0f27b7b9f6fff3ecf46 *e6a55f7a9f49a64d9668e20928a07492087e09fa559f820d3a38c825996cb2c94a9a009893570f *6aa814831b7a18de259d78c2c9851f9ab82050a39db8228b2dba3853872fca38238df7c558238e *fe39ea78da8d3bfaf823901ca6182491451ae9d390472ab9e4923d32f92494333a192595557a38 *a595596a691f965b7af925715d82392699a08959269a69da75a69a6dba39149b6fca39274d71d2 *79279d76e2b9679b7af2f927997e023ae89682127a28958622ba68934932fa68a08e423a69a192 *527a69a29662ba69a37b71fa69a72a823a6a908a927aea83a6a2ba2a7eaab2fa6a78aec23aab76 *b2d27aeb6fb6e2ba6b69baf2fa2b60be023b2c5ec2127bac909e22bb6c71c632fb2c92ca423b6d *af9a527b2d8ad262bb2d5fce72cbadb7df621baeb8d4925b2eb4e7a2cbacbaeb22dbaebbc4c21b *2fb0f3d2cbabbdf7e29aafbeb4f2db2facff02ccaaf0c003a35ab0c1a4229c30a80b33cca9c30f *631ab1c494525c31a41763cca8c61b23dab1c784821c32a02393cca7c927e399b2ca795adbf2b8 *2fc36caecc33a75bb3cdece29cf3bb3bf32cafcf3fd71bb4d0f8125df4be4723edafd24b07dcb4 *d304431df5c15353adb0d557379cb5d61073ddf5c45f836d718aa3987d36da69abbd36db6dbbfd *36dc71cb3d37dd75db7d37de79ebbd37df7dfbcd77d97f0b3e38e1851b7e38e2892bbeb8de8133 *fe38e4914b3e39e59547eeb8e5996bbe39e79d7b3e38e69f8b3e3ae9a59bce3850a9abbe3aebad *bbfe3aecb1cb3e3bedb5db7e3beeb9ebbe3befbdfbfe3bf0c1031510003b binary ./doc/images/Viewport.gif oldhex * newhex *47494638376134014801f20000000000ffffffdcdcdcccccffb7b7b76e6e6e808080ff00002c00 *000000340148010003fe38b0dcfe30ca49abbd38ebcdbbff60180564699e68aaae6cebbe702ccf *746ddf7881ef68b10482a070482c1a8fc8a472c96c3a9fd0a8744aa516aad8a20f00cc7abfe0b0 *784c265f09e8b47a1d58bbd5edf7bbbbed0a0c0c24a0cceffbff80616705848586866d878a8589 *8b8a743f430c064600948198999a9b7d832d043aa09fa13a2ca241754493aa97450baa4daf9cb3 *b4b55e9e49a2a748ba3ab9be02a94378b241c5ae017bc6cacbb002c7b6d1d2d35a02bb47bd4011 *d6a45dcccf41bbc2c37977dfc8c93fe7c7e798d0d4f0f1c1dc7646d9cf10f4a7e579e291ae0b0c *e021820200813608d7319355ac81b166f82296c3f76d9bbc8bd4702d2b76fe8fdd9e7b14cbf9e3 *72e4553b3706111e54a86c61cb97e022c6e4b7c7a44b9b18734ad3185248c78a1fbb0971180ed8 *3858ef20a031c814a04c990c6b4aad09b127c486ed746ac5c493a83e5f1ebfdaf13ab2de508113 *4b1278e014ebc63c36a93ef51a7568d6ad783bd1b3cb516858906cf706fb27e9d22a3d6e0102ad *fa966255ba3019e79dcc87a73dbff97ebe0c0a8964614901113b53155672ddab30133fa5cc7a8c *e5229a1d887d38b468e77a03c9bd8b92d6e369acbd4b4b6e4d1ccb6b2220b109e56594706e22c4 *ee72da5dbc3a576e72d490ca9e663bf7b2b54b869646ddba79bda01c1d6aa49e51faf6846e132f *7fbebe982b3c78a0faf11ebefeffff000628e080041668e0810826a8e0820c16321817a2e427e1 *84145668e1851866a8a10957d411e186208628e2882496886187fc9562e28a2cb6e8e28b17a208 *a18a30d668e38d38be28632239f6e8e38f40e6b7e387411669e491450e4923924c36e9a4894a3e *29e594545a1865955866a9e50b57c278c0966056f925855d7a19e6994d8e49e6833cdea8269a70 *faf8e68465d638679c78be78a78475da99e79f2eeec9279b44ba09e8a1240a3aa8874b1a8ae8a3 *192aba688a3f4a0ae9a53658ca439f8e62ea290e9a6e4a68a33886fae9a92798ba03a7a5a2eaaa *0baaae3aaa91b1befa68ad39b00900a93de26a6b9ebede20e31ebcf6faabadc10afecb66304c26 *7bac96cedab023b3cd3eeb69b4d22e5b6ca5d6428a6db6a96ccb6db7807e0b6e24e28e4b6e9ce6 *9e4b52ba72ae8b67bb354c0b6fbcf29e496fbdda52b96fbe81c268af980067f92fbfe1627970c1 *222e4cc3c00a33fca4c30ff76bb0c4d5de08f1c518174931c2e882f971c7a0f6b831b4241b6bb2 *c522a7dc698e276f39b2cbb0021933ca3407fce3cd38e76ce2ccca260c27d03e9740b4bb40dc2b *e5d139330df2bbc0160da2d34f27fd27d512635db1d0514b6da1d65b875caed714821d36d4879a *fdacda33f0cc2ed93bb0dd36cb69c39da9946ecf6bf70c729f6db5b77bcbd0f7dc5cdf1af80b83 *132ef6a5898f4d65de571fae42e38afea37dade4a96609b9e39853ee37b5a77ade33969bd71db8 *e89f2bdd35dca8a7fe6beb699e59bae152c3eefab1b607997be57fbf5ef4ee32cc0e38cdc0074f *b7ef29176f7ce1b893acfcf28b5bfb3c8bd3c720fcb50764affdf6dc77effdf7e0872ffef8e497 *cf3da0d7639a3dc0ebff993ee301543f75fce81fbf3609f2478a7ffdccdfbfbffff4739ffd9a67 *3402fe2f4fef1b5e015f35a7fc716980c85ba0ab1ac8bfe8490f050e8c1b062b68b96eed298377 *dba000fb67c0cca96f721cec9d075700c21828aa852b4820ed50882849c1500532ac610b6e4843 *16a610742bdc61e48438420b0290053c9420127fa83af8216e683048e2097268ba278649fe5552 *e410049125b896b99089f28a550bc508c675d52a83672c23b970953f36aa31887cf3570db25802 *2a722e8e130b2102b7c8c01b142f597424811d87a8475a95ac881dbce0213da64144aa50918b54 *971fdf08c948e6e85b810cc02057d7c84b4a28939bd4db273d394a4702b1929db451bb40c9c709 *96ed653c60250923584a3d554896462c612da9f7354a1e71425a3b182e13f94b60ae6861c37c64 *318d9928fd99b2890abc10d12896cc532ef395f3d35035a13943677af39b710ae5dbb229cd106d *338c0d2ba7397da94b70ee529beca4e586f635cd78727144ab6ce633d1a9cf54ae739f66fc993f *ffb9c759deb344803ca63dfba8501a60ed9cfe01e56517255ad05cca13a15f6c1144d768cb9ae9 *aca2c46ca74097d851902a53a4234d01db360ac78f8ab0a478122714fdf4529886b395a8ea1b05 *55b95057766a702c45a5991217d46bba94a700e568ab88dad39cb6ea803435a93551da5025da14 *4e324593dc3e8854a972538766eae151b18ad3d085d58757455356f57556b15234a665fd94d942 *35d7a69a55a3197deb4d0dcad0aa4611af496d693f279a52b8f2d5a7182d243eed2ad7c2ced1b1 *643dac53073b49ca46d6a20725682c2dabd6b85e2e9dd8d4ec5e31dbd779aa939c86252d62e189 *a1991595aaa1ed256a471bd28bcad69db74d6d6d337b5ad6e256769e3de16f7b9b5bda9ed4b6ef *fe9c6d6c8d3b55e46e16b2c9edac64ef7a4bc05637b0427dae7599e9557e7277ac0395ae6a271b *5dbd8617b8d36d6c79b77bde30adf58aeb05ef63b16b543c9252bbba3d2e6f15fbd4f682e9bd5e *b4a4ca042cdedd9676be8c24307ac74b5d041bb2b2dd8da8838f9450fac296a44e0ad66b9d8be1 *3c3a94b19f25ec94dc68610eab7474568cb052ff2a331133f7ab55f46880659cdfe6ee17ad3326 *a28a058b63f8a6b8c630be638fd94ae3177b77c85a2df2650dbcda130bb9a64696b093630ce525 *ebf7c026c8a409a70ce4236739c45beeb294ad1a4d3217f8ca4d0e6083a11ae515b359bd665e30 *93c9abe6d26e38b35a66f19bcf6ce3bee639af7766fee89f271a68570e3a8e85cee9a11d9ae8d0 *99efd1908eb4a4277dbe1263d9cb7c0eb22831464700472c7962be70bea4e8e911ffceca7d76e2 *a9e58ce632132fd326eed80d4b1d3bbbc190d6485ab468ab84eb071f0e84bdd61de6f6fca4604b *b2739a0bae8f871d672619fbbecc6ef6919e0dcb68137bdacae698b5ab8c246ab775db617676b6 *09066e2e8b3bbd282ef7979de46df6aa3bdc466ab75fdf6dee248d3bc3f456b2cdee9db17cebd8 *dee85e9abff51c24798376e03fde19bf138c7082fbc8e0a66db88b61b6f0634b3ce13882786b2f *3e618d557cc01ccf2bc503eeeb904fbc461abfaec93f3c72065378e510b651cae30b737db768e6 *f8ad79fec76ffef1b4eadcbe3aeab9bb7fbe7328097dde448f398b705ef4a4375d444c07bad373 *5ea2a88b7ceaf9d19ad51d8e75ff6e68eb36efbad24704f60e8b9de6273aba72cf9e75a3937ce8 *6c6f3b89caceedb8a37d4d6f87aeddbffb75b51377efc5cd10ddaf0d78bea73def072fbc6f05ef *77c32b7ee31a2abbae7d4631c93f7eb18c47fce22fbff649cd39b19cc7bc951aafe0d06fdef3ad *16bde9392b2bcdaf7e5d837f3dde482ffb4fc5bef64dba3deebb4dfbdd434af7be07b8cb830ffb *de131fc4c7b716f093bf32d733dff6c67f3eaa352dfd4b2dbffa288f3ef6ffabfded6be9fadee7 *b9f3c38f7cf2630afce6af7af7d33ffbf1b37ffaefef16fafee30fa2f9d33ff2ebbf3fb6ddafff *efe7bfff05f77f00a870fc37808f238006d8729f97806dc680d687800e987d051881e7367c14b8 *25f677814163811a483a10d8812b928120c83ba93682fe378126f8701f988250b7822c587f2ef8 *82f8878232287331588331728338582122b88329d0833e3845dad2204458844678844898844ab8 *8408c2260f138464572ffcf11d6e100a5478855898855ab8855cd8855ef885601886623886da11 *075ae8215b688564b8866cd8866ef88670188764a8865988866768867298877ab8877cd8877e88 *0674888576588778f88786788888988889188857b8054cf8889018899238899498842270899898 *899ab8899cd809899ef8891610000900003b hunk ./doc/images/frustum.fig 1 +#FIG 3.2 +Landscape +Center +Metric +A4 +100.00 +Single +-2 +1200 2 +1 3 0 1 0 7 50 0 0 0.000 1 0.0000 990 4185 45 45 990 4185 990 4230 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 990 4140 9045 1485 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 990 4185 10485 2025 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 9045 1485 9045 3195 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 10485 2025 10485 3735 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 990 4185 9045 3150 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 990 4185 10485 3690 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 9090 1485 10485 2025 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 9045 3195 10485 3690 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 6975 2160 6975 3420 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 6975 2160 8100 2565 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 6988 3430 8113 3835 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 8100 2565 8100 3825 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 9090 1485 10485 3690 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 9045 3195 10485 2025 +2 1 0 1 0 7 50 0 0 0.000 0 0 -1 0 0 2 + 7020 2205 8100 3825 +2 1 0 1 0 7 50 0 0 0.000 0 0 -1 0 0 2 + 6975 3375 8100 2565 +2 1 1 1 4 7 50 0 -1 4.000 0 0 -1 0 0 3 + 7560 2970 7560 4905 1035 4905 +2 1 1 1 4 7 50 0 -1 4.000 0 0 -1 0 0 3 + 9765 2610 9765 5445 1035 5445 +2 1 1 1 8 7 50 0 -1 4.000 0 0 -1 0 0 2 + 7560 3015 8100 3195 +2 1 1 1 8 7 50 0 -1 4.000 0 0 -1 0 0 2 + 8100 3195 6975 2790 +2 1 1 1 14 7 50 0 -1 4.000 0 0 -1 0 0 2 + 7515 2385 7515 3645 +4 0 0 50 0 0 18 0.0000 4 120 465 3645 4770 near\001 +4 0 0 50 0 0 18 0.0000 4 180 300 3690 5400 far\001 +4 0 14 50 0 0 18 0.0000 4 180 765 6705 3735 bottom\001 +4 0 14 50 0 0 18 0.0000 4 210 345 7515 2340 top\001 +4 0 8 50 0 0 18 0.0000 4 240 510 8145 3240 right\001 +4 0 8 50 0 0 18 0.0000 4 180 360 6570 2880 left\001 hunk ./doc/images/perspective.fig 1 +#FIG 3.2 +Landscape +Center +Metric +A4 +100.00 +Single +-2 +1200 2 +5 1 0 2 8 7 50 0 -1 6.000 0 0 0 0 4088.864 3741.136 4140 3465 4365 3690 4185 4005 +5 1 0 2 8 7 50 0 -1 6.000 0 0 0 0 3593.864 3561.136 3645 3285 3870 3510 3690 3825 +1 3 0 1 0 7 50 0 0 0.000 1 0.0000 990 4185 45 45 990 4185 990 4230 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 990 4140 9045 1485 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 990 4185 10485 2025 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 9045 1485 9045 3195 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 10485 2025 10485 3735 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 9090 1485 10485 2025 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 9045 3195 10485 3690 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 6975 2160 6975 3420 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 6975 2160 8100 2565 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 6988 3430 8113 3835 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 8100 2565 8100 3825 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 9090 1485 10485 3690 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 9045 3195 10485 2025 +2 1 0 1 0 7 50 0 0 0.000 0 0 -1 0 0 2 + 7020 2205 8100 3825 +2 1 0 1 0 7 50 0 0 0.000 0 0 -1 0 0 2 + 6975 3375 8100 2565 +2 1 1 1 4 7 50 0 -1 4.000 0 0 -1 0 0 3 + 7560 2970 7560 4905 1035 4905 +2 1 1 1 4 7 50 0 -1 4.000 0 0 -1 0 0 3 + 9765 2610 9765 5445 1035 5445 +2 1 1 1 8 7 50 0 -1 4.000 0 0 -1 0 0 2 + 7560 3015 8100 3195 +2 1 1 1 8 7 50 0 -1 4.000 0 0 -1 0 0 2 + 8100 3195 6975 2790 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 990 4185 10485 3690 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 990 4185 9045 3150 +4 0 0 50 0 0 18 0.0000 4 120 465 3645 4770 near\001 +4 0 0 50 0 0 18 0.0000 4 180 300 3690 5400 far\001 +4 0 8 50 0 0 18 0.0000 4 180 615 6345 2790 width\001 +4 0 8 50 0 0 18 0.0000 4 240 585 4365 3645 angle\001 hunk ./doc/scripts/deleteTags.xquery 1 - +define function deleteTags($x){ + if (node-kind($x) = "text") then $x + else if (node-kind($x) = "comment") then " " + else if (node-kind($x) = "element") + then + let $tag := name($x) + return + if ($tag=QName("delete")) then () + else element {$tag} { ($x/@*,for $y in $x/node() return deleteTags($y))} + else $x +} hunk ./doc/scripts/latexVerbatim.xquery 1 +define function makeverbatim($x,$l) { + let $commandchars := if ($x/@commandchars) then $x/@commandchars + else "?~^" + return + ("\begin{Verbatim}[commandchars=",$commandchars,",fontfamily=courier + ,numbers=left,frame=single" + ,if ($x/@sequel) + then (",firstnumber=last") else "" + ,if ($x/@class) + then (",label=" + ,$x/@class + ,if ($x/@lang) then (".",$x/@lang) else ".java" + ) + else "" + ,"] +" + ,further($x,$l)," +\end{Verbatim} + +" + ) +} + +define function startAufgabenCounter() {"\setcounter{aufgabe}{0}"} + +define function bfverbatim($x,$lang) { + ("~?bf ",further($x,$lang),"^") +} + +define function itverbatim($x,$lang) { + ("~?it ",further($x,$lang),"^") +} + +define function redverbatim($x,$lang) { + ("~?color~red^",further($x,$lang),"^") +} + + +define function yellowverbatim($x,$lang) { + ("~?color~yellow^",further($x,$lang),"^") +} + +define function blueverbatim($x,$lang) { + ("~?color~blue^",further($x,$lang),"^") +} + +define function greenverbatim($x,$lang) { + ("~?color~green^",further($x,$lang),"^") +} + + +define function greyverbatim($scale,$x,$lang) { + ("~?color[gray]~",$scale,"^",further($x,$lang),"^") +} + +define function footnoteverbatim($x,$lang) { + ("?footnote~",further($x,$lang),"^") +} + + + +transform(deleteTags(input())/*,"") + hunk ./doc/scripts/transformscript.xquery 1 +define function site(){"http://www.panitz.name/"} + +define function startLatex($lang,$docstyle,$packages){ +("\documentclass[10pt,a4paper]{",$docstyle,"} +\usepackage[",$lang,"]{babel} + +",$packages," + +%\usepackage[square]{natbib} + +\usepackage{multind} + +\usepackage{dsfont} + + + +\setlength\textwidth{14cm} +%\usepackage{moreverb } +\usepackage{fancyvrb } +\usepackage{color } + +\usepackage{longtable } + +\usepackage{floatflt } + +\newif\ifpdf + \ifx\pdfoutput\undefined + \pdffalse +\else + \pdfoutput=1 + \pdftrue +\fi + + +\ifpdf + \makeindex{Klassen} +\else +\fi + +\pagestyle{headings} + + +\ifpdf + \usepackage[pdftex]{graphicx} + \pdfcompresslevel =9 +\else + \usepackage{epsf} +\fi + +\usepackage[]{fontenc} +%\usepackage{german} +\usepackage[isolatin]{inputenc} + +\setlength\parindent{0pt} +\setlength{\parskip}{5pt plus 2pt minus 1pt} +\newcounter{unteraufgabe} +\setcounter{unteraufgabe}{1} + +\newcounter{aufgabe} +" +,startAufgabenCounter() +," +\setcounter{aufgabe}{0} + +\sloppy + +\title{Skript} + +\begin{document} + +",startAufgabenCounter()," + +" +) +} + +define function startKlausurLatex(){ +"\documentclass[10pt]{article} +\setlength\textwidth{14cm} +\usepackage[german]{babel} +\usepackage{longtable } +\usepackage[]{fontenc} +\usepackage[isolatin]{inputenc} + +\usepackage{fancyhdr} +\pagestyle{fancy} + +\usepackage{fancyvrb } + +\usepackage{multind } + + +\setlength\parindent{0pt} +\setlength{\parskip}{5pt plus 2pt minus 1pt} +\newcounter{unteraufgabe} +\setcounter{unteraufgabe}{1} + +\newcounter{aufgabe} +\setcounter{aufgabe}{0} + +\sloppy + + +\newif\ifpdf + \ifx\pdfoutput\undefined + \pdffalse +\else + \pdfoutput=1 + \pdftrue +\fi + +\ifpdf + \makeindex{Klassen} +\else +\fi + +\ifpdf + \usepackage[pdftex]{graphicx} + \pdfcompresslevel =9 +\else + \usepackage{epsf} +\fi + + +\begin{document} +\renewcommand{\footrulewidth}{0.4pt} + +" +} + + +define function startLoesungenLatex(){ +"\documentclass[10pt,a4paper]{article} +\usepackage[german]{babel} +\usepackage{longtable } +\usepackage[]{fontenc} +\usepackage[isolatin]{inputenc} + + +\setlength\parindent{0pt} +\setlength{\parskip}{5pt plus 2pt minus 1pt} +\newcounter{unteraufgabe} +\setcounter{unteraufgabe}{1} + +\newcounter{aufgabe} +\setcounter{aufgabe}{0} + +\sloppy + +\begin{document} +%\renewcommand{\footrulewidth}{0.4pt} +\small +" +} + + +define function endLatex(){ + +" + +%\vfill Aus dem XML-Quelltext nach \LaTeX\ übersetzt mit Quip. +\end{document}"} + +define function sprecher($sprecher,$text){ +(" +\item[{\bf ",$sprecher,":}] ",further($text)) +} + +define function aufgaben($as,$lang){ + ("\chapter{Gesammelte Aufgaben} +\setcounter{aufgabe}{0}" + ,transform({$as},$lang)) +} + +define function transformAll($xs,$lang){ + for $x in $xs return transform($x,$lang)} + +define function transform($x,$lang){ + let $tag := name($x) + return + if (node-kind($x) = "text") then $x + else if ($tag=QName("skript")) then + (startLatex(string($x/@lang),"report","\usepackage{chappg }") + ,further($x,string($x/@lang)) + ,endLatex()) + else if ($tag=QName("articleSkript")) then + (startLatex(string($x/@lang),"article","") + ,further($x,string($x/@lang)) + ,endLatex()) + else if ($tag=QName("book")) then + (startLatex(string($x/@lang),"book","") + ,further($x,string($x/@lang)) + ,endLatex()) + else if ($tag=QName("loesungen")) then + (startLoesungenLatex(),further($x,$lang),endLatex()) + else if ($tag=QName("klausur")) then + (startKlausurLatex() + ,"\cfoot{",$x/@titel," (Seite \thepage)} +\centerline{\Large \bf ",$x/@titel,"} +" + ,"\lhead{Name:} +" + ,"\rhead{Matrikelnummer:\hspace*{3cm}} +\lfoot{",$x/@semester,"}\rfoot{",$x/@datum,"} + +" + ,further($x,$lang),endLatex()) + else if ($tag=QName("artikelTitel")) then (artikelTitel($x,$lang)," +\maketitle +") + else if ($tag=QName("titelseite")) then (" +\begin{titlepage} +\begin{center} +",further($x,$lang)," +\end{center} +\end{titlepage} +") + else if ($tag=QName("titel")) then +("{\Huge ",further($x,$lang),"} + + + +") + + else if ($tag=QName("untertitel")) then +("{\Large ",further($x,$lang),"} + + + + +") + else if ($tag=QName("intitution")) then +("~\\[1cm]{\Large ",further($x,$lang),"} + +") + else if ($tag=QName("autor")) then +("\vfill +{\Large ",further($x,$lang),"} + +") + else if ($tag=QName("institution")) then +("{\large \bf ",further($x,$lang),"} + +{\bf Version \today} + +") + else if ($tag=QName("disclaimer")) then +("\vfill +\begin{quote} ",further($x,$lang),"\end{quote} + +") + else if ($tag=QName("part")) then + (" +\part",if ($x/@nonumbering) then "*" else "","{",$x/@titel,"} +",further($x,$lang)) + else if ($tag=QName("kapitel")) then + (" +\chapter",if ($x/@nonumbering) then "*" else "","{",$x/@titel,"} +",further($x,$lang)) + else if ($tag=QName("section")) then + (" +\section",if ($x/@nonumbering) then "*" else "","{",$x/@titel,"} +",further($x,$lang)) + else if ($tag=QName("subsection")) then + (" +\subsection{",$x/@titel,"} +",further($x,$lang)) + else if ($tag=QName("subsubsection")) then + (" +\subsubsection{",$x/@titel,"} +",further($x,$lang)) + else if ($tag=QName("paragraph")) then + (" +\paragraph{",$x/@titel,"} +",further($x,$lang)) + else if ($tag=QName("regel")) then + ("\begin{minipage}{0.98\textwidth} +{\bf ",$x/nt," ::=}\\[0.2cm] +\hspace*{\fill}\begin{minipage}{0.9\textwidth}\begin{sl}" +,further($x/lhs,$lang),"\end{sl}\end{minipage} +\end{minipage}\\[0.5cm] +") + else if ($tag=QName("minipage")) then + let $align := if ($x/@align) then $x/@align else "t" + return +("\begin{minipage}[",$align,"]{",$x/@dimension,"}" +,further($x,$lang),"\end{minipage}") + else if ($tag=QName("indent")) then + "\hspace*{0.4cm}" + else if ($tag=QName("alts")) then + (let $alts := $x/alt + let $c := count($alts) + for $i in 1 to $c + let $alt := $alts[$i] + return + (if ($i=1) then "~" else "" + ,if ($i=$c) then further($alt,$lang) + else (further($alt,$lang),"\\ +$\mid$"))) + else if ($tag=QName("bar")) then "$\mid$" + else if ($tag=QName("anhang")) then + ("\appendix + +",further($x,$lang)) + else if ($tag=QName("wortliste")) then + ('\chapter{W"orterliste} +',further($x/erklaerung,$lang),' +\begin{center} +\begin{longtable}{l|l} +{\bf Deutsch}&{\bf Englisch}\\\hline +',for $entry in $x/wliste/entry sortby (upper-case(./deutsch/text())) + return ($entry/deutsch,"&",$entry/english,"\\ +")," +\end{longtable} +\end{center} + + +\begin{center} +\begin{longtable}{l|l} +{\bf Englisch}&{\bf Deutsch }\\\hline +",for $entry in $x/wliste/entry sortby (upper-case(./english/text())) + return ($entry/english,"&",$entry/deutsch,"\\ +") +," +\end{longtable} +\end{center} +") + else if ($tag=QName("resetAufgabenCounter")) then + "\setcounter{aufgabe}{0}" + else if ($tag=QName("aufgabe")) then + (" +\paragraph{\mbox{Aufgabe~\arabic{aufgabe}}} \addtocounter{aufgabe}{1}\setcounter{unteraufgabe}{1} +",if ($x/@punkte) then ("{\bf (",$x/@punkte," Punkte)}\\ ") else "",further($x,$lang)) + else if ($tag=QName("loesung")) then + (" + + +{\bf Lösung}\\ +",further($x,$lang)) + else if ($tag=QName("itemize")) then + (" +\begin{itemize} +",further($x,$lang)," +\end{itemize} +") + else if ($tag=QName("item")) then + (" +\item ",further($x,$lang)) + else if ($tag=QName("unteraufgaben")) then + (" +\begin{itemize} +",further($x,$lang)," +\end{itemize} +") + else if ($tag=QName("teil")) then + (" +\item[{\bf \alph{unteraufgabe})}] \addtocounter{unteraufgabe}{1}% +",further($x,$lang)) + else if ($tag=QName("dialog")) then + (" +\begin{description} +",further($x,$lang)," +\end{description} +") + else if ($tag=QName("fbox")) then + ("\fbox{",further($x,$lang),"}") + else if ($tag=QName("hfill")) then "\hfill " + else if ($tag=QName("vfill")) then "\vfill " + else if ($tag=QName("amp")) then "&" + else if ($tag=QName("eq")) then "&=&" + else if ($tag=QName("reduce")) then "&\rightarrow&" + else if ($tag=QName("and")) then "\wedge" + else if ($tag=QName("or")) then "\vee" + else if ($tag=QName("index")) then + "" + else if ($tag=QName("em")) then + ("{\em ",further($x,$lang),"}") + else if ($tag=QName("m")) then + ("$",further($x,$lang),"$") + else if ($tag=QName("cal")) then + ("{$\cal ",further($x,$lang),"$}") + else if ($tag=QName("sl")) then + ("{\sl ",further($x,$lang),"}") + else if ($tag=QName("bf")) then + ("{\bf ",further($x,$lang),"}") + else if ($tag=QName("b")) then + ("{\bf ",further($x,$lang),"}") + else if ($tag=QName("ttt")) then + ("{\tt ",further($x,$lang),"}") + else if ($tag=QName("mb")) then + ("\mbox{\bf ",further($x,$lang),"}") + else if ($tag=QName("mathText")) then + ("\mbox{\em ",further($x,$lang),"}") + else if ($tag=QName("math")) then + ("$",further($x,$lang),"$") + else if ($tag=QName("displaymath")) then + ("\begin{displaymath}",further($x,$lang),"\end{displaymath}") + else if ($tag=QName("subscript")) then + ("_{",further($x,$lang),"}") + else if ($tag=QName("superscript")) then + ("^{",further($x,$lang),"}") + else if ($tag=QName("sum")) then + ("\sum",further($x,$lang),"") + else if ($tag=QName("von")) then + ("_{",further($x,$lang),"}") + else if ($tag=QName("bis")) then + ("^{",further($x,$lang),"}") + else if ($tag=QName("mT")) then + ("\mbox{\em ",further($x,$lang),"}") + else if ($tag=QName("m")) then + ("$",further($x,$lang),"$") + else if ($tag=QName("lb")) then "\-" + else if ($tag=QName("mbox")) then + ("\mbox{",further($x,$lang),"}") + else if ($tag=QName("red")) then + ("{\color{red}",further($x,$lang),"}") + else if ($tag=QName("tt")) then + (if (contains($x/text()[1],"+")) then ("\verb#",further($x,$lang),"#") + else ("\verb+",further($x,$lang),"+")) + else if ($tag=QName("token")) then + (if (contains($x/text()[1],"+")) then ("\verb-",further($x,$lang),"-") + else ("\verb+",further($x,$lang),"+")) + else if ($tag=QName("footnote")) then + ("\footnote{",further($x,$lang),"}") + else if ($tag=QName("code")) then + (if ($x/@class) then (" + +\index{Klassen}{",$x/@class,"}") else "" + ,makeverbatim ($x,$lang)) + else if ($tag=QName("bv")) then bfverbatim ($x,$lang) + else if ($tag=QName("itv")) then itverbatim ($x,$lang) + else if ($tag=QName("redv")) then redverbatim ($x,$lang) + else if ($tag=QName("yellowv")) then yellowverbatim ($x,$lang) + else if ($tag=QName("bluev")) then blueverbatim ($x,$lang) + else if ($tag=QName("greenv")) then greenverbatim ($x,$lang) + else if ($tag=QName("greyv")) then greyverbatim($x/@scale,$x,$lang) + else if ($tag=QName("footnotev")) then footnoteverbatim($x,$lang) + else if ($tag=QName("w")) then "~" + else if ($tag=QName("ws")) then " " + else if ($tag=QName("nl")) then " +" + else if ($tag=QName("cite")) then + ("\cite{",$x/@label,"}") + else if ($tag=QName("scode")) then + (" + +\begin{footnotesize}\begin{verbatim} +",further($x,$lang)," +\end{verbatim} +\end{footnotesize} + +") + + else if ($tag=QName("wichtig")) then + (" + +\begin{quote}{\bf +",further($x,$lang)," +}\end{quote} + +") + else if ($tag=QName("verb")) then + (" + +\begin{verbatim} +",further($x,$lang)," +\end{verbatim} + +") + else if ($tag=QName("quote")) then + ("\begin{quote} +",further($x,$lang)," +\end{quote}") + else if ($tag=QName("kommentar")) then + ("\begin{quote} +",further($x,$lang)," +\hspace*{\fill}{\em ",$x/@who,"} +\end{quote}") + else if ($tag=QName("zitat")) then + ("\begin{quote} +",further($x/derText,$lang),"\\ +\hspace*{\fill}{\em ",further($x/wer,$lang),"} +\end{quote}") + else if ($tag=QName("eqnarray")) then + (" +\begin{eqnarray*}",further($x,$lang)," +\end{eqnarray*}") + else if ($tag=QName("beispiel")) then + ("\begin{quote}{\bf ",if ($lang="english") then + "Example" else "Beispiel",":}\\",further($x,$lang)," +\end{quote}") + else if ($tag=QName("example")) then + ("\begin{quote}{\bf ",if ($lang="english")then + "Example" else "Beispiel",":}\\",further($x,$lang)," +\end{quote}") + else if ($tag=QName("center")) then + ("\begin{center} +",further($x,$lang)," +\end{center}") + else if ($tag=QName("link")) then + (further($x,$lang)," {\footnotesize (\verb+",site(),$x/@local,$x/@address,"+)} ") + else if ($tag=QName("exlink")) then + (further($x,$lang)," {\footnotesize (\verb+",$x/@address,"+)} ") + + else if ($tag=QName("ref")) then + ("\ref{",$x/@name,"}") + + else if ($tag=QName("bild")) then + let $psscale := if ($x/@psscale) then $x/@psscale else 1.0 + let $pdfscale := if ($x/@pdfscale) then $x/@pdfscale else 1.0 + let $centerline :=if (not($x/@nocenter)) then "\centerline" else"" + let $float := not($x/@nofloat) + return bild($float,$psscale,$pdfscale,$centerline,$x,$lang) + else if ($tag=QName("bilder")) then + let $float := not($x/@nofloat) + return bilder($float,"",$x,$lang) + else if ($tag=QName("figure")) then + figure("true",$x,$lang) + else if ($tag=QName("img")) then + ("\ifpdf + \centerline{\includegraphics{images/",$x/@name,".pdf}} + \else + \centerline{\epsfbox{images/",$x/@name,".epsf}} + \fi") + else if ($tag=QName("table")) then + ("\begin{longtable}{",$x/@layout,"} + ",further($x,$lang)," + \end{longtable} +") + else if ($tag=QName("array")) then + ("\begin{array}{",$x/@layout,"} + ",further($x,$lang)," + \end{array} +") + else if ($tag=QName("longtable")) then + ("\begin{longtable}{",$x/@layout,"} + ",further($x,$lang)," + \end{longtable} +") + else if ($tag=QName("zeile")) then (" +",zelle($x,$lang),"\\") + else if ($tag=QName("zelle")) + then (further($x,$lang),if (./last() = ./position()) then "" else "&") + else if ($tag=QName("hline")) then ("\hline") + else if ($tag=QName("printindex")) then + ("\printindex" + ,if ($x/@name) then ("{",$x/@name,"}") else "" + ,if ($x/@titel) then ("{",$x/@titel,"}") else "" + ) + else if ($tag=QName("br")) then"\\" + else if ($tag=QName("dots")) then"\dots" + else if ($tag=QName("white")) then"~" + else if ($tag=QName("w")) then"~" + else if ($tag=QName("rpar")) then"\}" + else if ($tag=QName("pi")) then"\pi" + else if ($tag=QName("alpha")) then"\alpha" + else if ($tag=QName("beta")) then"\beta" + else if ($tag=QName("lpar")) then"\{" + else if ($tag=QName("otimes")) then"\otimes " + else if ($tag=QName("oplus")) then"\oplus " + else if ($tag=QName("quot")) then '"$~$' + else if ($tag=QName("rightarrow")) then"$\rightarrow$" + else if ($tag=QName("setN")) then"$\mathds{N}$" + else if ($tag=QName("setZ")) then"$\mathds{Z}$" + else if ($tag=QName("setQ")) then"$\mathds{Q}$" + else if ($tag=QName("setR")) then"$\mathds{R}$" + else if ($tag=QName("setC")) then"$\mathds{C}$" + else if ($tag=QName("subset")) then"$\subset$" + else if ($tag=QName("bibliography")) then" +\bibliography{bib} +\bibliographystyle{alpha} +" + else if ($tag=QName("p")) then (" + + +",further($x,$lang)) + else if ($tag=QName("abstand")) then"~~~~~" + else if ($tag=QName("eject")) then" +\eject +" + else if ($tag=QName("LaTeX")) then"\LaTeX" + else if ($tag=QName("toc")) then "\tableofcontents +" + else if ($tag=QName("listoffigures")) then "\listoffigures +" + else if ($tag=QName("alleaufgaben")) then + let $del := deleteTags(input()) + return aufgaben(($del/*/part/kapitel//aufgabe + ,$del/*/kapitel//aufgabe + ),$lang) + else if ($tag=QName("include")) + then let $doc := document((string($x/@uri))) + return (" +\",if (($x)/@asThis) then $x/@asThis else "chapter","{",$doc/*/titelseite/titel,"} +",transformAll($doc//section,$lang)) + + else if ($tag=QName("pakete")) then () + else if ($tag=QName("delete")) then () + else if ($tag=QName("deleted")) then () + else further($x,$lang) +} + +define function zelle($x,$lang){ + let $zs := $x/zelle + let $l := count($zs) + for $i in 1 to $l + return if ($i=$l) then further($zs[$i],$lang) else (further($zs[$i],$lang),"&") +} + +define function further($x,$lang) { + for $y in $x/node() + return transform($y,$lang) +} + +define function artikelTitel($x,$lang) { + for $y in $x/node() + return transformTitel($y,$lang) +} + +define function transformTitel($x,$lang){ + let $tag := name($x) + return + if (node-kind($x) = "text") then $x + else if ($tag=QName("titel")) then ("\title{",further($x,$lang),"}") + else if ($tag=QName("autor")) then ("\author{",further($x,$lang),"}") + else further($x,$lang) +} + +define function bild($float,$psscale,$pdfscale,$centerline,$x,$lang) { + (if ($float) then" + +\begin{figure}[!hbt] +" else "" + ,"\ifpdf + ",$centerline,"{\includegraphics[scale=",$pdfscale,"]{images/",$x/@name,".pdf}} + \else + ",$centerline,"{\epsfxsize=",$psscale,"\textwidth\epsfbox{images/",$x/@name,".epsf}} + \fi" + ,if ($x/@caption) then ("\caption{",string($x/@caption),"\label{",string($x/@name),"}}") else "" + ,if ($float) then "\end{figure}" else ""," + +" + ) +} + +define function bilder($float,$centerline,$x,$lang) { + (if ($float) then"\begin{figure}[!hbt] +" else "" + ,"\begin{center}" + ,(for $bild in $x/sbild + let $psscale := if ($bild/@psscale) then $bild/@psscale else 1.0 + let $pdfscale := if ($bild/@pdfscale) then $bild/@pdfscale else 1.0 + return + ("\ifpdf + ",$centerline,"{\includegraphics[scale=",$pdfscale,"]{images/",$bild/@name,".pdf}} + \else + ",$centerline,"{\epsfxsize=",$psscale,"\textwidth\epsfbox{images/",$bild/@name,".epsf}} + \fi")) + ,"\end{center}" +,if ($x/@caption) then ("\caption{",string($x/@caption),"\label{",string($x/@name),"}}") else "" + +,if ($float) then "\end{figure}" else ""," + +" + + ) +} + +define function figure($float,$x,$lang) { + (if ($float) then " + +\begin{figure}[!hbt] +" else "" + ,"\begin{center} +",further($x,$lang)," +\end{center}" + ,if ($x/@caption) then ("\caption{",string($x/@caption),"\label{",string($x/@name),"}}") else "" + ,if ($float) then "\end{figure}" else ""," + +" + ) +} + + + + +transform(deleteTags(input())/*,"") hunk ./doc/scripts/transformscript.xsl 1 + + + + <xsl:value-of select="titelseite/titel"/> + + + + + + + + +
+
+ + + +
+ + + +

+
+ + +

+
+ + +

+ +
+ + + +

+ +
+ + +

+

+ +
+ + +

+ +
+ + +
+ +
+ + + +

Anhang

+ +
+ + + +

+ +
+ + + +

+ +
+ + +

+

+ +
+ + + +
+
+ + + +

  • +
    + + + + + +
    +
    +
    + + + + + + + + + + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + + + + + + + + + +
    +
    + + +
    +
    + + +
    Beispiel:
    +
    + + + { + + + + " + + + + } + + + + + images/.gif + + + + + + images/.gif + + + + + + + + + + + + + + + + + +
    +
    + + + --> + + + + + +
    | +
    + +
    +
    +
    + + + +
    +
    + + + +

    +
    + + + +

    + Aufgabe

    + + +
    + + +

    + Aufgabe

    + + +
    + + + +
    + ) + + +
    + + +

    Wortliste

    + +
    + + + + + + + +
    deutschenglish
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +LaTeX + + +

    +::= +

    +
    + + + + +
    hunk ./doc/tutorial.xml 1 + + + + + +HOpenGL -- 3D Graphics with Haskell

    +A small Tutorial + +

    (Draft) + +Sven Eric Panitz +TFH Berlin + + + +Publish early and publish often. That is the reason why you can read +this. I started playing around with HOpenGL the Haskell port +of OpenGL a common library for doing 3D graphics. I more or less took +minutes of my efforts and make them public in this tutorial. +I did not have any prior +experience in graphics programming, when I started to work with +HOpenGL.

    + + + +The source of this paper is an XML-file. The sources are processed by +an XQuery processor, XSLT scripts and +in order to +produce the different formats of the tutorial.

    + +I'd like to thank Sven PanneSimilar name different person., the author of HOpenGL, +who has been so kind to +comment on first drafts of this tutorial. + + + + + + + +In this chapter some basic background information can be found. You you +can read the sections of this chapter in an arbitrary order. Whatever +your personal preference is. + +

    +Before you read a lot of technical details you will probably like to +see something on your screen. Therefore you find some very simple +examples in the beginning. This will give you a first impression, of how +an OpenGL program might look like in Haskell. + + +OpenGL's main purpose is to render some graphics on a device. This +device is generally a window on your computer screen. Before you can +draw something on a screen you will need to open a window. So let's +have a look at the simpliest OpenGL program, which just opens an empty +window: + + + +The first two lines import the necessary libraries. The main function +does three things: + +initialize the OpenGL system +define a window +start the main procedure for dispaying everything and reacting +on events + + +For the definition of a window with a given name we do two things: + +create some window with the given name +define, what is to be done, when the window contents is to be +displayed. In the simple example above we simply clear the screen of +any color by filling it with the default background color. + + +This 10 lines can be compiled with ghc. Do not forget to +specify the packages, which contain the OpenGL library. It suffices to +include the package GLUT, which automatically forces the +inclusion of the package OpenGL. GLUT is the graphical user +interface, which comes along with OpenGL, i.e. the window managing +system etc. + + + ghc -package GLUT -o HelloWindow HelloWindow.hs +sep@swe10:~/hopengl/examples> ./HelloWindow]]> + +When you start the program, a window will be opened on your desktop. As you +may have noticed, we did not specify any attribute of the window, like +its size and position. GLUT is defined in a way that initial default +values are used for unspecified attributes. + + + + +The simple program above did just open a window. The main purpose of +OpenGL is to define some graphics which is rendered in a window. +Before starting to systematically explore the OpenGL library let's +have a look at two examples that draw something into a window frame. + + +First we will draw some tiny points on the screen. +We use the same code for openening some window: + +The only thing that has changed, is that we make use of one of +the values returned by getArgsAndInitialize: the name of the +program.

    + +For the window definition we use the code from HelloWindow.hs. But instead of clearing the screen, when the +window is to be displayed, we use an own display function: + + +We want to draw some points on the screen. So let's define some +points. We can do this in a list. Points in a three dimensional space +are triples of coordinates. We can use floating point numbers for +coordinates in OpenGL. + + + +Eventually we need the display function, which displays these points. +vertex$Vertex3 x y z) myPoints]]> +As you see, when the window ist displayed, we want first everything to +be cleared from the window. Then we use the HOpenGL function renderPrimitive. The first argument Point specifies +what it is that we want to render; points in our case. For the second +argument we need to transform our coordinates into some data, which is +used by HOpenGL. Do not yet worry about this transformation. +

    +As before, you will notice that again for quite a number of +attributes we did not supply explicit values. We did not specify the +Color of the points to be drawn. Moreover we did not define the +coordinates of the graphics window. Looking at its result it is +obviously a two dimensional +view, where the lower left corner seems to have coordinates (-1,-1) and the +upper right corner the (1,1). These values are default values chosen +by the OpenGL library. + + + + + +The points in the last section were rather boring? By changing a +single word, we can span an area with these points. Instead of saying +render the following as points, we can tell HOpenGL to render them as +a polygon.

    + + +So here the program from above with one word changed. Points becomes Polygon. + +Polygonvertex$Vertex3 x y z) myPoints + +myPoints :: [(GLfloat,GLfloat,GLfloat)] +myPoints = + [(-0.25, 0.25, 0.0) + ,(0.75, 0.35, 0.0) + ,(0.75, -0.15, 0.0) + ,((-0.75), -0.25, 0.0)]]]> +The resulting window can be found in figure +. + + + + + +

    + +
    + +Haskell is a lazily +evaluated functional programming language. This +means that there are no mutable variables. A Haskell program consists +of expressions, which do not have any side effects. Expressions are +only evalutated to some value when this is absolutely necessary for +program execution. This means it is hard to predict in which order +subexpressions get evaluated.

    + +Expressions +evaluate to some value without changing any state. This is a nice +property of Haskell, because it makes reasoning about programs easier +and programs are very robust. + + + +OpenGL on the other hand is a graphics library which is defined in +terms of a state machine. A mutable state modells the current +state of the world. Functions are executed one after another +on this state in +order to modify certain variables. E.g. one variable keeps the current +color to which all drawing statements refer. There is a statement +which allows to set the color variable to some other value.

    + +A comprehensive introduction to OpenGL can be found in the so calledredbook . OpenGL comes along with +a utility library called GLU and a system +independent GUI library called GLUT . + + + + + +Having said this, Haskell and OpenGL seem to cooperate badly. There +seems to be a great mismatch between the fundamental concepts of the two. +However, +the designers of Haskell discovered a very powerful structure, which is +a perfect concept for modelling state changing functions in a purely +functional language: Monads . Most +Haskell programmers do not +worry about the theory of monads but simply use them, whenever they +do I/O, state changing functions or in parser construction. With +monads functional programs can almost look like ordinary imperative +progams .

    + +Monads are so essential to functional programming, that they have a +special syntactic construct in Haskell, the do notation. + +Consider the following simple Haskell program, which uses monads: +main = do + let x = 5 + print x + let x = 6 + print x + xs <- getLine + print (length xs) +The monadic statements start with the keyword do. The + statements have side effects. Variables can be defined and + redefined in let-expressionsVariables bound +in let-expressions are not variables as known from + imperative languages. Line 4 in the example above does not assign a + new value to a variable x but defines a new variable x.. Monadic statements can have a + result. This can be retrieved from the statement by the <- notation.

    + +On another aspect OpenGL and Haskell perfectly match. In OpenGL +functions are assigned to different data objects, +e.g.a display function is passed to windows. Since +functions are first class citizens, they can easily and type safe be +passed aroundUnlike the object orientated languages Java, +which misses an +easy way to pass functions around.. + + + + + +

    + + + +
    +If you want to start programming OpenGL in Haskell you need to be one +of the brave, who compile sources from the functional programming CVS +repository in Glasgow. There is not yet a precompiled version of the +current HOpenGL library. Go to +the website of the Glasgow +Haskell Compiler (GHC), follow closely the instructions on the +page CVS cheat sheet. When doing the ./configure step, then use the option --enable-hopengl. i.e. start the +command ./configure --enable-hopengl. This will ensure +that the Haskell OpenGL library will be build and the packages OpenGL and GLUT are added to your GHC installation.

    + +To compile Haskell OpenGL programs you simply have to add the +package information to he command line invocation of GHC, +i.e. use:
    +ghc -package GLUT MyProgram.hs

    + +Everything else, linking etc is done by GHC. You do not have to worry +about library paths or anything else. +

    + + + +
    +The Haskell port of OpenGL has been done by Sven Panne. Currently a +stable version exists and can be downloaded as precompiled +binary. This tutorial deals with the completely revised version of +HopenGL, which has a more Haskell like API and needs less technical +overhead. This new version is not yet available as ready to use +package. You need to compile it yourself.

    + +This tutorial has been written with no prior knowledge of OpenGL and +no documentation of HOpenGL at hand.

    + +For the old version 1.04 of HOpenGL an online tutorial written +by Andre W B Furtado exists +at . +

    + + + +
    +From what we have learnt in the introduction, we know that we are +dealing with a state machine and will write a sequence of monadic +functions which effect this machine. Before we start drawing fancy +pictures let us explore the way values are set and retrieved in +HOpenGL. + + +The most basic operation is to +assign values to variables in the state machine. In HOpenGL this is +done by means of the operator $=A nicer choice for +this operator would have been :=, but this is not allowed +for a function operator in Haskell, but denotes an infix +constructor. You do not need to understand, how this +operator is implemented. You simply can imagine that it is an +assignment operator. The left operand is a variable which gets +assigned the right operand. We can revisit the first program, which +simply opened a window. + + +When we have created a window, we assign a +size to it: +windowSize $= Size 800 500 + + + +One example of the assignment operator we have allready seen. In the +last line we assign a function to the variable displayCallback. This function will be executed, whenever the +window is displayed. + +As you see, more you do not need to know about $=. But if you +want to learn more about it read the next section. + + +The operator $= is defined in the module
    +Graphics.Rendering.OpenGL.GL.StateVar as a member function of +a type class: +infixr 2 $= + +class HasSetter s where + ($=) :: s a -> a -> IO () + +The variables of HOpenGL, which can be set are of +type SettableStateVar e.g.:
    +windowTitle :: SettableStateVar String. Further variables +that can be set for windows are: windowStatus, windowTitle, iconTitle, pointerPosition, +
    +
    + + +You might want to retrieve certain values from the state. +This can be done with the function get, which is in +a way the corresponding function to the operator $=. + +You can retrieve the size of the screen: +x<-get screenSize +When you compile and run this example the size of your screen it + printed: + + ghc -package GLUT -o Get Get.hs +sep@swe10:~/hopengl/examples> ./Get +Size 1024 768 +sep@swe10:~/hopengl/examples>]]> + + + +There is a corresponding type class, which denotes that values can be +retrieved from a variable: +class HasGetter g where + get :: g a -> IO a +Variables which implement this class are of +type GettableStateVar a. + + + + +For most variables you would want to do both: setting them and +retrieving their values. These variables implement both type classes +and are usually of type: StateVar.

    + +But things do not always work so simple as this sounds. + + + +The following program sets the size of a window. Afterwards the +variable windowSize is retrieved: + +Running this program gives the somehow surprising result: + ./SetGet +Size 300 300 +]]> +The window we created, has the expected size of (800,500) but the +variable windowSize still has the default value (300,300).

    + +The reason for this is, that setting the window size state variable +has not a direct effect. It just states a wish for a window size. Only +in the execution of the function mainLoop actual windows will +be created by the window system. Only then the window size will be +taken into account. Up to that moment the window size variable still +has the default value. If you print the window size state within some +function which is executed in the main loop, then you will get the +actual size. By the way: you can try initialWindowSize without +getting such complecated surprising results. + + + + windowSize spezifiziert nämlich nur einen *Wunsch* an den + Window-Manager. Da das Fenster direkt nach createWindow aber noch + nicht wirklich da ist (passiert erst in mainLoop) und somit auch gar + nicht klar ist, ob der Window-Manager mit der Größe einverstanden + ist, wird zunächst erstmal der Default zurückgegeben. Wird das + get/print im Display-Callback gemacht, wo es das Fenster ja schon + wirklich gibt, wird auch der erwartete Wert zurückgegeben. Bei + initialWindowSize gibt es übrigens solche Überraschungen nicht. + + + + + + +The state machine contains variables and stacks of objects, which are +effectedly mutated by calls to monadic functions. However not only the +get and set statements modify the state but also statements +like createWindow. This makes it in the beginning a bit hard +to understand, when the state is changed in which way.

    + +The createWindow statement not only constructs a window +object, but keeps this new window as the current window in the +state. After the createWindow statement all window effecting +statements like setting the window size, are applied to this new +window object. + + + +Hier wäre eine kurze Erklärung gut, welche Arten von Zustand es gibt: + + * OpenGL state (global pro Rendering-Context, z.B. Window) + * global GLUT state + * window-local GLUT state + + + + + +

    + +
    + + +There is a window specific variable which stores the function +that is to be executed +whenever a window is to be displayed, the variable displayCallback. Since Haskell is a higher order language, it is +very natural to pass a function to the assignment operator. +We can define a function with some arbitrary name. The function can be +assigned to the variable displayCallback. In this function we +can define a sequence of monadic statements. + + +A first step we would like to do whenever the window needs to be drawn +is to clear from it whatever it containsOtherwise you might +see arbitrary parts of other applications in your window +frame.. HOpenGL provides the +function clear, which does exactly this job. It has one +argument. It is a list of objects to be cleared. Generally you will +clear the so called color buffer, which contains the color displayed +for every pixel on the screen. + + +The following simple program opens a window and clears its content +pane whenever it is displayed: +import Graphics.UI.GLUT +import Graphics.Rendering.OpenGL + +main = do + (progName,_) <- getArgsAndInitialize + createAWindow progName + mainLoop + +createAWindow windowName = do + createWindow windowName + displayCallback $= display + +display = clear [ColorBuffer] + + + + +The window in the last section has a black background. This is because +we did not specify the color of the background and HOpenGL's default value +for the background color is black. There is simply a variable for the +background color.

    + +For colors several data types are defined. An easy to use one is: +data Color4 a = Color4 a a a a + deriving ( Eq, Ord, Show ) +The four parameters of this constructor specify the red, green and +blue values of the color and additionally a fourth argument, which +denotes the opaqueness of the color. The values are usually +specified by floating numbers of type GLfloat. Values for +number attributes are between 0 and 1.

    + +You may wonder, why there is a special type GLfloat for +numbers in HOpenGL. The reason is that OpenGL is defined in a way that +it is as independent from concrete types in any implementation as +possible. +However you do not have to worry too much +about this type. You can use ordinary float literals for numbers of +type GLfloat. Haskells overloading mechanism ensures that +these literals can create GLfloat numbers. + + + Der + Grund für die ganzen GLblah-Typen ist, daß die OpenGL-Spec bewußt + ungenau bzgl. der konkreten Typen ist, um Implementationen nicht zu + sehr einzuschränken. GLfloat könnte daher z.B. Haskells Float sein, + aber auch Double (obwohl ich letzteres noch nie gesehen habe). + + + +This program opens a window with a red background. +import Graphics.UI.GLUT +import Graphics.Rendering.OpenGL + +main = do + getArgsAndInitialize + createAWindow "red" + mainLoop + +createAWindow windowName = do + createWindow windowName + displayCallback $= display + +display = do + clearColor $= Color4 1 0 0 1 + clear [ColorBuffer] + + + + +Whenever in a display function a sequence of monadic statements is +defined, a final call to the function flush should be +made. Only such a call will ensure that the statements are completely +committed to the device, on which is drawn. + + + + +So most preperatory things we know by now. We can start drawing onto the +screen. Astonishingly in OpenGL there is only very limited number of shapes +for drawing. Just points, simple lines and polygons. No curves or more +complicated objects. Everything needs to be performed with these +primitive drawing functions. The main function used for drawing +something is renderPrimitive. The first argument of this +functions specifies what kind of primitive is to be drawn. There are +the following primitives defined in OpenGL:
    + +data PrimitiveMode = + Points + | Lines + | LineLoop + | LineStrip + | Triangles + | TriangleStrip + | TriangleFan + | Quads + | QuadStrip + | Polygon + deriving ( Eq, Ord, Show ) + +The second +argument defines the points which specify the primitives. These points +are so called vertexes. Vertexes are actually monadic functions which +constitute a point. If you want to define a point in a 3-dimensional +universe with the coordinates x, y, z then you can use +the following expression in HOpenGL: +vertex (Vertex3 x y z) +or, if you prefer the use of the standard prelude operator $: +vertex$Vertex3 x y z + + +We have seen in the introductory example that we can draw +points. We can simply define a vertex and use this in the +function renderPrimitiv. + + +This program draws one single yellow point on a black screen. +import Graphics.UI.GLUT +import Graphics.Rendering.OpenGL + +main = do + getArgsAndInitialize + createAWindow "points" + mainLoop + +createAWindow windowName = do + createWindow windowName + displayCallback $= display + +display = do + clear [ColorBuffer] + currentColor $= Color4 1 1 0 1 + renderPrimitive Points + (vertex (Vertex3 (0.1::GLfloat) 0.5 0)) + flush +If you do not like parantheses then you can of course use the +operator $ from the prelude and rewrite the line:
    +renderPrimitive Points$vertex$Vertex3 (0.1::GLfloat) 0.5 0 +
    + +Unfortunately Haskell needs sometimes a little bit of help for +overloaded type classes. Therefore you find the type +annotation (0.1::GLfloat) on one of the float literals. In +larger applications Haskell can usually infer this information from +the context. Just in smaller applications you will sometimes need to +help Haskell's type checker a bit.

    + +The second argument of renderPrimitive is a sequence of +monadic statements. So, if you want more than one point to be drawn, +you can define these in a nested do statement + + +In this program we use a nested do statement to define more +points. + +import Graphics.UI.GLUT +import Graphics.Rendering.OpenGL + +main = do + getArgsAndInitialize + createAWindow "more points" + mainLoop + +createAWindow windowName = do + createWindow windowName + displayCallback $= display + +display = do + clear [ColorBuffer] + currentColor $= Color4 1 1 0 1 + renderPrimitive Points $ + do + + vertex (Vertex3 (0.1::GLfloat) 0.6 0) + vertex (Vertex3 (0.1::GLfloat) 0.1 0)flush + + +If you want to think of points mainly as triples then you can convert +a list of points into a sequence of monadic statements by first maping +every triple into a vertex, e.g.by:
    map (\(x,y,z)->vertex$Vertex3 x y z)
    and then combining the +sequence of monadic statements into one monadic statement. Therefore +you can use the standard function for monads: sequence_. The +standard function mapM_ is simply the composition of map and sequence_, such that a list of triples can be +converted to a monadic vertex statement by:
    +mapM_ (\(x,y,z) -> vertex$Vertex3 x y z)
    +which is the technique used in the introductory example. + + + +Thus we can rewrite a points example in the following way: points are +defined as a list of triples. Furthermore we define +some useful auxilliary functions: +import Graphics.UI.GLUT +import Graphics.Rendering.OpenGL + +main = do + getArgsAndInitialize + createAWindow "more points" + mainLoop + +createAWindow windowName = do + createWindow windowName + displayCallback $= display + +display = do + clear [ColorBuffer] + currentColor $= Color4 1 1 0 1 + let points = [(0.1,0.6,0::GLfloat) + ,(0.2,0.8,0) + ,(0.3,0.1,0) + ,(0,0,0) + ,(0.4,-0.8,0) + ,(-0.2,-0.8,0) + ] + renderPoints points + flush + +makeVertexes = mapM_ (\(x,y,z)->vertex$Vertex3 x y z) + +renderPoints = renderAs Points + +renderAs figure ps = renderPrimitive figure$makeVertexes ps + + + + +In the following we want to explore all the other different shapes +which can be rendered by OpenGL. All shapes are defined in terms of +vertexes which you can think of as points. We have allready seen how +to define vertexes and how to open a window and such things. We +provide a simple module, which will be used in the consecutive +examples. Some useful functions are defined in this module. + + +A first function will open a window und use a given display function +for the window graphics: + + +The next function creates for a list of points, which are expressed as +triples, and a basic shape a display function which renders the +desired shape. + +vertex$Vertex3 x y z)]]> +Eventually we define a list of points as example and provide a +function for easy use of these points: + + + + +We can now render the example points in a oneliner: +import PointsForRendering +import Graphics.Rendering.OpenGL + +main = mainFor Points + + + + + + +The next basic thing to do with vertexes is to connect them, i.e. +consider them as starting and end point of a line. There are three +ways to connect points with lines in OpenGL. + + +The most natural way is to take pairs of points and draw lines between these. +This is done in the primitive mode Lines. In order that this +works properly an even number of vertexes needs to be supplied to the +function renderPrimitive. + + +Connecting our example points by lines. Pairs of points define +singleton lines. +import PointsForRendering +import Graphics.Rendering.OpenGL + +main = mainFor Lines +The resulting window can be found in figure +. + + + + + +The next way to connect points with lines you probably can imagine is +to make a closed figure. The end point of a line is the starting point +of the next line and the last point is connected with the first, such +that a closed loop of lines is created. + +Now we make a loop of lines with our example points. +import PointsForRendering +import Graphics.Rendering.OpenGL + +main = mainFor LineLoop + +The resulting window can be found in figure +. + + + + + + + + +A strip of lines is very close to a loop of lines. The only thing +missing is the last line which connects the last point with the first +one again. + + +Now we make a strip of lines with our example points. +import PointsForRendering +import Graphics.Rendering.OpenGL + +main = mainFor LineStrip +The resulting window can be found in figure +. + + + + + + + + +The next basic shape which can be rendered by OpenGL are +triangles. Triples of points are taken and triangles are drawn with +these. As for lines there are three flavours of triangles. + + + +The most natural way of drawing triangles is to take triples and draw +triangles. In order to work for triangles, the number of points +provided needs to be a multiple of 3. + + +Our example vertexes define 12 points such that we get 4 triangles +import PointsForRendering +import Graphics.Rendering.OpenGL + +main = mainFor Triangles +The resulting window can be found in figure +. + + + + + + + +A triangle strip makes a sequence of triangles where the next triangle +uses two points of its predecessor and one new point. + +For our 12 points a triangle strip will create 10 triangles. + +import PointsForRendering +import Graphics.Rendering.OpenGL + +main = mainFor TriangleStrip +The resulting window can be found in figure +. + + + + + + +A fan has one starting point for all triangles. Triangles are always +drawn starting from the first point. + +Our example points as a fan. 10 triangles are rendered. +import PointsForRendering +import Graphics.Rendering.OpenGL + +main = mainFor TriangleFan +The resulting window can be found in figure +. + + + + + + + + +Lines connected two points, triangles three points, now we will connect +four points. This is calles a quad. There are two flavours of +quads. + + +The primitive mode Quads takes quadruples of points and +connects them in order to render a filled figure. + +For our 12 example points OpenGL renders 3 quads + +import PointsForRendering +import Graphics.Rendering.OpenGL + +main = mainFor Quads +The resulting window can be found in figure +. + + + + +In a three dimensional world quads are unlike triangles not +necessarily plane areas. + + + + +For a strip of quads OpenGL uses two points of the preceeding quads +for the next quad. The number n of vertexes therefore +needs to be of the form: n=4+2*m. + + +Our examples vertexes now used for a strip of quads. +import PointsForRendering +import Graphics.Rendering.OpenGL + +main = mainFor QuadStrip + +The resulting window can be found in figure +.Which somehow does not +look like the expected? + + + + + + + + + +We connected two, three and for points. Eventually there is a shape +that connects an arbitrary number of points. This is generally called +a polygon. There are some restrictions for polygons: + +no convex corners are allowed. +lines may not cross each other. +polygons need to be planar. + + + + +Noch nicht mal allgemeine Polygone sind +erlaubt, sondern nur einfache Polygone, d.h. planare, konvexe und + nicht selbstüberschneidende Polygone. Kompliziertere Polygone kann + man sich mit Hilfe des GLU-Tessellators in einfachere übersetzen + lassen. + + + + + +Eventually our vertexes are used to define a polygon. +import PointsForRendering +import Graphics.Rendering.OpenGL + +main = mainFor Polygon +In this case the resulting window looks like the triangle fan we have +seen before. + + +If you want to render polygons which hurt some of the restrictions +above, you need to represent them by a set of smaller polygons. Since +this is a tedious task to be done manually there is a library +available, which does this for you: the GLU tessellation. + + + + + + + +In the last sections you have seen all primitive shapes, which can be +rendered by OpenGL. Everything else needs to be constructed in term of +these primitives. Especially you might wonder where curves and circles +are. The bad news is: you have to do these by yourself. + + + +With a bit mathematics you probably have allready guessed how to do +curves and especially circles. You need to approximate them with a +large number of lines. If the lines get very small we eventually see a +curve. Let us try this with circles. We write a module which gives us +some utility functions for rendering circles. + + + +The crucial function calculates a list of points which are all on the +circle. You need a bit of basic geometrical knowledge for this. +The coordinates of the points on a circle can be determined +by \sin(\alpha) and \cos(\alpha) where \alpha is between 0 and 2\pi.

    + +Thus we can easily calculate the coordinates of an arbitrary number of +points on a circle: + + +If we take a large anough number then we will eventually get a circle: + +The following function can be used to render the circle figures: + + + +First we test what kind of shape we get for small approximation +numbers. +import PointsForRendering +import Circle + +import Graphics.Rendering.OpenGL + +main = renderInWindow $ do + clear [ColorBuffer] + renderCircleApprox 0.8 10 + +The resulting graphic can be seen in figure +. + + + + + +Now we can test, if the resulting circle is, what we expected. + + +The resulting graphic can be seen in figure +. + + + + + +And eventually have a look at the filled circle. + +The resulting graphic can be seen in figure +. + + + + + + + +Now, where you know how to do circles, you can equally as easy define +functions for rendering rings. A ring has an inner and an outer circle +and fills the space between these. So we can approximate these two +rings and render quads between them. + + + + +We can simply define the points of the inner and outer ring and merge +these. The resulting list of points can then be rendered as +a QuadStrip. Since there is no primitive mode for quad loops, +we need to append the first two points as the last points again: + +[x,y]) (points++[p]) + where + innerPoints = circle innerRadius + outerPoints = circle outerRadius + points@(p:_) = zip innerPoints outerPoints]]> + +Eventually we provide a small function for rendering ring shapes. + + + +We can test the ring functions: + + +The resulting graphic can be seen in figure +. + + + + + + + + +There are some more attributes that can be set for primitive shapes +(besides the color, which we have allready set). + + + +You could argue that there is no need for single points. A point can +be modelled by a circle that has a small radius (or in the third +dimension a sphere). However, there is something like a point in +OpenGL and you can set its size. This size value for points does not +refer to a radius in the coordinate system but is measured in terms of +screen pixels. The default value is, one pixel per point. + + +We set the point size to 10 pixels: +import Graphics.Rendering.OpenGL +import PointsForRendering + +main = renderInWindow display + +display = do + pointSize $= 10 + displayMyPoints Points + + +The resulting graphic can be seen in figure +. + + + + + + +As for points, there are also further attributes for lines. First of all +there is a line width. As for the point size, this is measured in +screen pixels. Furthermore, you can set some line stipple: this is the +pattern of the line, dashes etc. For the line stipple there is a +state variable of type: Maybe (GLint, GLushort). The second +argument of the value pair denotes the kind of stipple. For every +short value there is one stipple. The short value has 16 bits. Every +bit stands for a pixel. If for the corresponding short number the bit +is set, then the pixel will be drawn, otherwise not. This means that +for the short number 0 you will not see anything of your +line, and for the value 65535 you will see a solid line.

    + +The integer number of the value pair denotes a factor for the chosen +stipple. For some positiv integer n every bit of the +short number stands for n bits. + + +Setting the width of lines and a stipple: + +import Graphics.Rendering.OpenGL +import Graphics.UI.GLUT as GLUT +import PointsForRendering + +main = renderInWindow display + +display = do + clearColor $= Color4 1 1 1 1 + clear [ColorBuffer] + lineStipple $= Just (1,255) + currentColor $= Color4 0 0 0 1 + lineWidth $= 10 + displayPoints squarePoints LineLoop + flush + +squarePoints + = [(-0.7,-0.7,0),(0.7,-0.7,0),(0.7,0.7,0),(-0.7,0.7,0)] + + +The resulting graphic can be seen in figure +. + + + + + + + + +You might have wondered, why the function renderPrimitive takes monadic statements as argument and not +simply a list of vertexes? This means we could pass any monadic +statement to the function renderPrimitive, not only +statements that define vertexes by the call of the +function vertex. There are some statements, which are allowed +in the statements passed to renderPrimitive. +One of these is setting the current color before +every call of vertex to a new value. When finally rendering +the primitive, OpenGL takes these color values into acount. + + + +We define a triangle. Before the three vertexes of the triangle are +defined, the current color is set to a new value. +import Graphics.Rendering.OpenGL +import Graphics.UI.GLUT as GLUT +import PointsForRendering + +colorTriangle = do + currentColor $= Color4 1 0 0 1 + vertex$Vertex3 (-0.5) (-0.5) (0::GLfloat) + currentColor $= Color4 0 1 0 1 + vertex$Vertex3 (0.5) (-0.5) (0::GLfloat) + currentColor $= Color4 0 0 1 1 + vertex$Vertex3 (-0.5) (0.5) (0::GLfloat) + +main = renderInWindow display + +display = do + clearColor $= Color4 1 1 1 1 + clear [ColorBuffer] + renderPrimitive Triangles colorTriangle + flush + +The resulting window can be found in figure +. + + + + + + + + + +Rendering of polygons is very limited. We cannot render polygons for +crossing lines, or convex corners. Such polygons need to be expressed +by a set of simpler polygons. +In the module Graphics.Rendering.OpenGL.GLU.Tessellation there are a number of +functions, which calculate a set of simpler polygons. +For the time being, we will not go +into detail, but give one single example, of how to use this library. + + +We want to render stars. These are shapes with convex corners. + + + + +We can easily calculate the points on the star rays. They are all on +one circle. We can use our function for defining circle points and get +a list of points. For rendering the star, we take first the points +with odd index followed by the points with even index. + +Vertex3 x y z)(os++es) + where + (os,es) = partition (\(i,_)-> odd i) + $zip [1,2..] + $circlePoints radius rays]]> + +For tesselation we need to create a ComplexPolygon, which has +a list of ComplexContour. A ComplexContour contains +a list of AnnotatedVertexes. The annotation can be used for +color or similar information. We do not make use of this annotation +and simple annotate every vertex with 0. + +AnnotatedVertex v 0) points]]]> + +The function tesselate creates a list of simple polygons. +It needs some control information, which we do not explain here. + + + +The resulting simple polygons can be rendered with the +function renderPrimitive. + + + +Now we can test our stars. We render two stars, one with 7 and one +with 5 rays. + +import PointsForRendering +import Graphics.Rendering.OpenGL +import Graphics.UI.GLUT as GLUT +import Star + +main = renderInWindow$do + clearColor $= Color4 1 1 1 1 + clear [ColorBuffer] + + currentColor $= Color4 1 0 0 1 + star 0.9 7 + + currentColor $= Color4 1 1 0 1 + star 0.4 5 + +The resulting window can be found in figure +. + + + + + + + +The bad news was that just very basic shapes are provided by OpenGL +for rendering. The good news is that the OpenGL library comes along +with a library that contains a large number of shapes. + + + +You probably need very often the shape of a teapot. Since this is so +elementary a library function is provided for this. + +import Graphics.UI.GLUT +import Graphics.Rendering.OpenGL + +import PointsForRendering + +main = renderInWindow display + +display = do + clear [ColorBuffer] + renderObject Solid$ Teapot 0.6 + flush +The resulting graphic can be seen in figure +. + + + + + +

    + +
    + + +By now you know, how to define different shapes for rendering. You +might wonder how to place shapes on special positions or how to +scale or rotate your shapes. This is done by so called transformation +matrixes. Before something is rendered by OpenGL a transformation +operation is performed on it. Every point will get multiplied with +the transformation matrix. The transformation matrix is part of the +state. So in order to transform a shape in some way, first the +transformation matrix has to be set and then the shapes are to be +rendered. +If not specified otherwise the transformation matrix is the identity +operation, i.e. no transformation is performed. You can +always reset the transformation matrix to the identity by the call of +the monadic statement loadIdentity. Then the current matrix +is discarded and no transformation is applied to the next rendering +operations. + +
    +One transformation is to move a shape to another position. The +according matrix is set by the statement translate. It has +one argument: a vector of size three which denotes in which direction +the following shapes are to be moved. Every vertex that will be +rendered after a translate statement will be moved by the +values of this vector. + + + +The function ring we defined before only defined rings which +have the center coordinates (0,0,0). If we want to place +rings somewhere else then we need to apply a translate matrix. +import PointsForRendering +import Ring +import Graphics.Rendering.OpenGL + +We define a function, which creates a ring at a given +position. Therefore we first set the transformation to the +translate transformation then define the ring and finally set the +transformation matrix back to the identity: +ringAt x y innerRadius outerRadius = do + translate$Vector3 x y (0::GLfloat) + ring innerRadius outerRadius +We can test this by placing some ring in different colors on the +screen. +main = do + renderInWindow someRings + +someRings = do + clearColor $= Color4 1 1 1 1 + clear [ColorBuffer] + + loadIdentity + currentColor $= Color4 1 0 0 1 + ringAt 0.5 0.3 0.1 0.12 + + loadIdentity + currentColor $= Color4 0 1 0 1 + ringAt (-0.5) 0.3 0.3 0.5 + + loadIdentity + currentColor $= Color4 0 0 1 1 + ringAt (-1) (-1) 0.7 0.75 + + loadIdentity + currentColor $= Color4 0 1 1 1 + ringAt 0.7 0.7 0.2 0.3 + + +The resulting graphic can be seen in figure +. + +Note that if we did not reset the transformation back to the identity, +we would get the composition of all transformations. + + + + +
    +
    +Another transformation that can be performed is rotation. The rotate +statement has two arguments. The first one specifies by which degree +the following shapes are to be rotated counterclockwise. The second +argument is a vector which specifies around which axis the shape is +to be rotated. + + +In this example we apply the composition of two +transformations. Squares are moved to some position and furthermore +rotated around the z-axis.

    + +We write a simple module for rendering filled rectangles: +module Squares where + +import Graphics.Rendering.OpenGL +import PointsForRendering +Here is a function for arbitrary rectangles: + +A square is just a special case: + + +Now we will transform squares. + + + +import PointsForRendering +import Squares +import Graphics.Rendering.OpenGL +We define a function, which applies the rotate transformation to a +square. It is rotated around the z-axis. +rotatedSquare alpha width = do + rotate alpha $Vector3 0 0 (1::GLfloat) + square width +A further utility function moves some shape to a specified +position. Note that this function resets the matrix again. +displayAt x y displayMe = do + translate$Vector3 x y (0::GLfloat) + displayMe + loadIdentity +Some squares are defined and rotated: +main = do + renderInWindow someSquares + +someSquares = do + clearColor $= Color4 1 1 1 1 + clear [ColorBuffer] + + currentColor $= Color4 1 0 0 1 + displayAt 0.5 0.3$rotatedSquare 15 0.12 + + currentColor $= Color4 0 1 0 1 + displayAt (-0.5) 0.3$rotatedSquare 25 0.5 + + currentColor $= Color4 0 0 1 1 + displayAt (-1) (-1)$rotatedSquare 4 0.75 + + currentColor $= Color4 0 1 1 1 + displayAt 0.7 0.7$rotatedSquare 40 0.3 + +The resulting graphic can be seen in figure +. + + + + +

    + +
    +The third transformation enables you to scale shapes. This is not only +useful for changing the size of some object but for stretching it in +some direction. The transformation scale has three arguments, +which represent the scaling factors in the three dimensional space. + + + +We apply three transformations on the tea pot example. We rotate and +translate it and finally we stretch it a bit by a scale +transformation. +import Graphics.UI.GLUT +import Graphics.Rendering.OpenGL + +import PointsForRendering +main = renderInWindow display + +display = do + clear [ColorBuffer] + scale 0.3 0.9 (0.3::GLfloat) + translate$Vector3 (-0.3) 0.3 (0::GLfloat) + rotate 30 $Vector3 0 1 (0::GLfloat) + renderObject Solid$ Teapot 0.6 + loadIdentity + flush +The resulting graphic can be seen in figure +. As you see it looks now like a coffee pot. + + + + +Remember that the scale and the rotate transformation always refer to +the origin (0,0,0) of your coordinates. Rotating an object, +which is not situated at the origin will move it around the +origin. Scaling an object which is not situated at the origin might +deform the object in surprising ways. +
    + +
    +Since Haskell is a functional programming language let us think of +transformations as functions. A transformation is a function that is +applied to every vertex before it is rendered. If you define two +transformations for an object, e.g. a rotation and a translation, then +you define a composition of these transformations.

    + +The code: +rotatedSquareAt width alpha x y z = do + translate$Vector3 x w y + rotate alpha $Vector3 0 0 (1::GLfloat) + square width +defines a composition of a translate und a rotate transformation, + which is applied to a square figure. A sequence of transformation + statements is composed to a single transformation in the same way as + the standard function composition operator (.) composes + functions: (f . g) x = f(g(x)). The compositional +function (f . g) is the same as first applying +function g and then applying f. For transformations + in HOpenGL this means that for a sequence of transformations +translate$Vector3 x w y +rotate alpha $Vector3 0 0 (1::GLfloat) +first the points are rotated and then they are translated.

    + +The order in which transformations are performed is of course not +arbitrary. A rotation after a translation is different to a +translation after a rotation. + + +This example illustrates the different compositions of rotation and +translation. + +A black square at the origin: + currentColor $= Color4 0 0 0 1 + square 0.5 + loadIdentity +A blue square translated: + currentColor $= Color4 0 0 1 1 + translate$Vector3 0.5 0.5 (0::GLfloat) + square 0.5 + loadIdentity +A light blue square that is rotated: + currentColor $= Color4 0 1 1 1 + rotate 35 $Vector3 0 0 (1::GLfloat) + square 0.5 + loadIdentity +A red square that is first rotated and then translated: + currentColor $= Color4 1 0 0 1 + translate$Vector3 0.5 0.5 (0::GLfloat) + rotate 35 $Vector3 0 0 (1::GLfloat) + square 0.5 + loadIdentity +A yellow square that is first translated and then rotated: + currentColor $= Color4 1 1 0 1 + rotate 35 $Vector3 0 0 (1::GLfloat) + translate$Vector3 0.5 0.5 (0::GLfloat) + square 0.5 + loadIdentity + +The resulting window can be found in figure +. + + + + + +Since the scale und the rotate transformation refer both to the origin +and the translate transformation can move objects away from the origin +it is a good policy to create objects at the origin, then rotate and +scale it and finally translate it to its final position. Therefore +predefined shapes in the library are usually positioned at the origin, +as e.g. the tea pot. +

    + + +
    +The three ready to usee transformations rotation, scaling and +translation or their composition might not suffice for your +needs. Then you can define your own transformations. Technically a +transformation in OpenGL is represented as a matrix. Every vertex gets +multiplied by the transformation matrix before it is rendered. In +order to define a transformation, we will need to construct such a +matrix.

    + +Internally every vertex in OpenGL is not represented by 3 +coordinates (x,y,z) but by four +coordinates (x,y,z,w). The x, y, z values +are devided by w. Usually the value +of w is 1.0.

    + +Thus for a transformation matrix you need a matrix of four rows and four +columns. Remember that a matrix is multiplied with a vector in the +following way: + + + + + +OpenGL provides a function for creation of a transformation +matrix out of a list: matrix. It takes as first argument a +parameter, which specifies in which order the matrix elements appear +in the list: RowMajor for row wise and ColumMajor for column wise appearance. The function multMatrix allows to multiply your newly created transformation +matrix to the current transformation context. + + + +We can now define our own transformations. We can define the +transformation shear. Mathematical textbooks +define shear in the following way: + + +Eric +Weissteins's world of mathematics + +A transformation in which all points along a given +line L remain fixed while other points are shifted +parallel to L by a distance proportional to their +perpendicular distance from L. +Shearing a plane figure does not change its area. + + + +We define a shear transformation, which leaves y and z coordinates unchanged, and adds to +the x coordinate some value depending on the value +of y. For some f we need the following +transformation matrix: + + + +As you can see, this is almost the identity. +We can define this in HOpenGL: + +module MyTansformations where +import Graphics.Rendering.OpenGL +import Graphics.UI.GLUT as GLUT + +shear f = + let m :: GLmatrix GLfloat + m = (matrix RowMajor [1,f,0,0 + ,0,1,0,0 + ,0,0,1,0 + ,0,0,0,1]) + in multMatrix m + +Let us test our new transformation: + +import PointsForRendering +import Circle +import Squares +import MyTansformations + +import Graphics.Rendering.OpenGL +import Graphics.UI.GLUT as GLUT + +main = renderInWindow$do + loadIdentity + clearColor $= Color4 1 1 1 1 + clear [ColorBuffer] + translate$Vector3 0.5 0.5 (0::GLfloat) + shear 0.5 + currentColor $= Color4 0 0 1 1 + fillCircle 0.5 + + loadIdentity + translate$Vector3 (-0.5) (-0.5) (0::GLfloat) + shear 0.5 + currentColor $= Color4 1 0 0 1 + square 0.5 + + +The resulting window can be found in figure +. + + + + +

    + +
    +You might get strange effects when you forget to reset the +transformation matrix. This might not only effect further rendering +statements but also applies to the redisplay of your window. The display +function you specified for your window will be called whenever the +window needs to be displayed. However this does not automatically +reset the transformation matrix to the identity matrix. This results +in the effect that every redisplay of your window changes its contents. + + +In this example a ring is displayed. Each time the display function is +called the contents of the ring moves a bit. Compile the program and +hide the resulting window behind some other window. You will observe +how the ring moves within the window, until it is no longer displayed. +import Graphics.UI.GLUT +import Graphics.Rendering.OpenGL + +import PointsForRendering +import Ring +import Squares + +main = renderInWindow display + +display = do + clear [ColorBuffer] + translate$Vector3 (-0.1) 0.1 (0::GLfloat) + ring 0.2 0.4 + flush + + +As a matter of fact this effect may not only occur with +transformations, but every state changing statement. If you set the +color as last statement in your display function to some value then +this will be the current color in the next call of the display +function. Thus it is better to ensure that the display function leaves +a clean state, i.e.the state it espects to find, when +it is called, or even better let the display functions +not rely on any previously set states. +
    + +
    +Often you will have the situation, that you are in a context of some +transformations. Maybe for certain parts of you shape you want +to add some +further transformation but for other parts return to the outer +transformation context. In such situations you cannot use +the statement loadIdentity since this will not only delete +the transformations you wanted to be applied to your local part of the +the complete shape but the whole transformation context.

    + +HOpenGL provides a function which allows to add some more +transformations to some local parts of your shape. This function is +called matrixExcursions which refers to the fact that +transformations are technically implemented as +matrixes. matrixExcursion has one argument, which is a +monadic statement. The application of matrixExcursion is a +monadic statement: +matrixExcursion :: IO a -> IO a +Every transformation done within this monadic +statement will not be done only locally. It does not effect the +statements which follow after the application of matrixExcursion. + + +To demonstrate the use of matrixExcursion we provide +a module, which is able to render a side of the famous Rubik's +Cube. Such a side consists of 9 squares which are of some color and +which have a black frame. We can render such a shape, by rendering the +single framed squares at the origin and then move them to their +position. This movement is done within +a matrixExcursion application. + + +Doing a frame involves the four sides of a frame. Each side is created +at the origin and then moved to its final position: + +Each of the nine fields is rendered by drawing its frame and its + colored square: + + Eventually the side of Rubik's Cube can be drawn + [[Color4 GLfloat]] -> IO () +renderArea width css + = do + let cs = concat css + cps = zip cs $ areaFields width + mapM_ (\(c,f)-> f(originField width c)) cps + +areaFields width = + [makeSquare x y |x<-[1,0,-1],y<-[1,0,-1]] + where + makeSquare xn yn = \f -> matrixExcursion $ do + let + x = xn*width + y = yn*width + translate $Vector3 x y 0 + f + +red = Color4 1 0 0 (1::GLfloat) +green = Color4 0 1 0 (1::GLfloat) +blue = Color4 0 0 1 (1::GLfloat) +yellow = Color4 1 1 0 (1::GLfloat) +white = Color4 1 1 1 (1::GLfloat) +black = Color4 0 0 0 (1::GLfloat)]]> + +The following module tests the rendering. Two sides are +rendered. Further transformations are applied to them. + +import PointsForRendering +import Graphics.Rendering.OpenGL + +import PointsForRendering +import RubikFace + +_FIELD_WIDTH :: GLfloat +_FIELD_WIDTH = 1/5 + +main = renderInWindow faces + +faces = do + clearColor $= white + clear [ColorBuffer] + + loadIdentity + translate $Vector3 (-0.6) 0.4 (0::GLfloat) + renderArea _FIELD_WIDTH r1 + + loadIdentity + translate $Vector3 (0.1) (-0.3) (0::GLfloat) + rotate 290 $ Vector3 0 0 (1::GLfloat) + scale 1.5 1.5 (1::GLfloat) + renderArea _FIELD_WIDTH r1 + +r1=[[red,blue,yellow],[white,green,red],[green,yellow,blue]] + + +The resulting window can be found in figure +. + + + +

    + + +
    + + + + +
    +Up to now we always relied on the default values for most attributes +which are concerned with projection. From where do we look at the +scenery? Which coordinates are displayed to what extend on the +screen. Such attributes can be set in the reshape callback +function. This function gets the window size as argument and specifies +which coordinates are to be seen on the screen. At first glance the +name seems to be a bit misleading, since it evokes the image that it is +just called, when someone resizes the window. The first time the +reshape function is called is at the opening of the window.

    + +The reshape function might be empty. This is modelled by the Haskell +data type Maybe. + + +We define the first reshape function for a window. It is the identity +function, which does not specify anything, how to render the picture. +import Graphics.UI.GLUT +import Graphics.Rendering.OpenGL + +import PointsForRendering + +main = do + (progName,_) <- getArgsAndInitialize + createWindow progName + displayCallback $= display + reshapeCallback $= Just reshape + mainLoop + +display = do + clear [ColorBuffer] + displayPoints points Quads + where + points + = [(0.5,0.5,0) + ,(-0.5,0.5,0) + ,(-0.5,-0.5,0) + ,(0.5,-0.5,0)] + +reshape s = return () +Run this example. You will see a white square in the middle of a black +screen. Now resize the window. You will notice that the size of the +square will not change. If you make the window smaller parts of the +picture are not displayed, if you enlarge the window parts of the +window contain no image (which means it might be some arbitrary +image). Figure + shows how the window looks after enlarging +it a bit. + + + +

    + + +
    +Usually you want to define in the reshape function, which parts of the +window pane are to be used for rendering the picture. There is a state +variable viewport, which contains exactly this +information. It is a pair, of a position and a size. The position is +the offset from the upper left corner in pixels. The size is the size +of the screen to be used for rendering in pixels. + + +If you want the window to be used completely for rendering the image, +then the position needs to be set to Position 0 0. i.e. no +offset and as size the complete window size is to be used: +import Graphics.UI.GLUT +import Graphics.Rendering.OpenGL + +import PointsForRendering + +main = do + (progName,_) <- getArgsAndInitialize + createWindow progName + displayCallback $= display + reshapeCallback $= Just reshape + mainLoop + +display = do + clear [ColorBuffer] + displayPoints points Quads + where + points + = [(0.5,0.5,0) + ,(-0.5,0.5,0) + ,(-0.5,-0.5,0) + ,(0.5,-0.5,0)] + +reshape s@(Size w h) = do + viewport $= (Position 0 0, s) + +If you start this program and resize the window, then always the +complete window pane will be used for rendering your image. + + + +In this example only parts of the window are used for rendering the +image. The image is smaller than the window. + +import Graphics.UI.GLUT +import Graphics.Rendering.OpenGL + +import PointsForRendering + +main = do + (progName,_) <- getArgsAndInitialize + createWindow progName + clearColor $= Color4 0 0 0 0 + displayCallback $= display + reshapeCallback $= Just reshape + mainLoop + +display = do + clearColor $= Color4 1 1 1 1 + clear [ColorBuffer] + currentColor $= Color4 1 0 0 1 + displayPoints ps1 LineLoop + displayPoints ps2 Lines + where + ps1=[(0.5,0.5,0),(-0.5,0.5,0),(-0.5,-0.5,0),(0.5,-0.5,0)] + ps2=[(1,1,0),(-1,-1,0),(-1,1,0),(1,-1,0) ] + +reshape s@(Size w h) = do + viewport $= (Position 50 50, Size (w-80) (h-60)) + + +The resulting window can be found in figure +. + + + +
    + +
    + +The viewport defines which parts of your window pane are used for +rendering your image. The actual projection defines which coordinates +you want to display. The simpliest way to specify this is by the +function ortho. It has six arguments, the lower and upper +bounds of the x, y, z coordinates.

    + +Projection is equally as transformation internally expressed in terms +of a matrix. The statement loadIdentity can refer to the +transformation or to the projection matrix. A state variabble matrixMode defines, which of these matrixes these statements +refer to. Therefore it is necessary to switch this variable to the +value Projection, before applying the function ortho and afterwards to reset the variable back to the +value ModelView. + + + +We render the same image in two windows with different projection values: +import PointsForRendering +import Graphics.Rendering.OpenGL +import Graphics.UI.GLUT as GLUT +import Star + +main = do + (progName,_) <- getArgsAndInitialize + + createWindow (progName++"1") + displayCallback $= display + projection (-5) 5 (-5) 5 (-5) 5 + + createWindow (progName++"2") + displayCallback $= display + projection 0 0.8 (-0.8) 0.8 (-0.5) 0.5 + + mainLoop + +projection xl xu yl yu zl zu = do + matrixMode $= Projection + loadIdentity + ortho xl xu yl yu zl zu + matrixMode $= Modelview 0 + +display = do + clearColor $= Color4 1 1 1 1 + clear [ColorBuffer] + currentColor $= Color4 1 0 0 1 + star 0.9 7 + currentColor $= Color4 1 1 0 1 + star 0.4 5 + +The resulting windows can be found in figure +. + + + + + +ortho is the simpliest projection we can define. When we will +consider third dimensional szeneries we will learn a more powerful +projection. + +

    + + + +
    + + +OpenGL is not only designed to render static images, but to have +changing images. There are to ways how your image might change: + +it might react to some event, like some keyboard input or mouse +event. +it might change over time. + + +In order to change your image in some coordinated way, you need a +state which can change. An event may change your state, or over the time +your state might be changed. + + +
    +A state is of course something, which does not match the purely +functional paradigm of Haskell. However in the context of I/O the +designers of Haskell came up with some clever way to integrate state changing +variables into the Haskell's purely functional setting. The trick are +again monads, as you have seen before for the state machine of +OpenGL. There is a standard library in Haskell for state changing +variables: Data.IORef. This provides functions for creation, +setting, retrieving and modification of state variables. These functions are +called:
    + newIORef, writeIORef, readIORef, modifyIORef.

    + +If you think these names a bit too technical, then you might use the +following module, which makes IORef variables instances of +the type classes HasGetter and HasSetter. Thus we +can use our own state variables in the same way, we use the HOpenGL +state variables. + +module StateUtil where + +import Graphics.Rendering.OpenGL +import Data.IORef +import Graphics.UI.GLUT + +instance HasSetter IORef where + ($=) var val = writeIORef var val + +instance HasGetter IORef where + get var = readIORef var + +new = newIORef +

    + + +
    +Now we know how to modell our own state. We can use this for reacting +on some events. Event handling in HOpenGL is done by setting a +callback function for mouse and keyboard events. +A callback function for mouse and keyboard events needs to be of the +following type: + + KeyState -> Modifiers -> Position -> IO ()]]> + +A Key can be some character, some special character or some +mouse buttom: +data Key + = Char Char + | SpecialKey SpecialKey + | MouseButton MouseButton + deriving ( Eq, Ord, Show ) + +The keystate informs, if the key has been pressed or released. + +data KeyState + = Down + | Up + deriving ( Eq, Ord, Show ) + +A modifier denotes, if some extra key is used, like the alt, strg or +shift key: +data Modifiers = Modifiers { shift, ctrl, alt :: KeyState } + deriving ( Eq, Ord, Show ) + +And finally the position informs about the current mouse pointer +position. + + +With the close look at the event handling function above it is fairly +easy to write a program that reacts on keyboard events. A function of +type KeyboardMouseCallback is to be written and assigned to +the state variable keyboardMouseCallback of your +window. Usually your KeyboardMouseCallback will have access +to some of your state variables, since you want to change a state when +an event occurs. When the state has been changed, HOpenGL needs to be +forced to redisplay the picture with the new state values. Therefore a +call to the function postRedisplay needs to be done. + +In this example we draw a circle. The radius of the circle +can be changed by use of the + and - key. + + +We create a state variable which stores the current radius of the circle: + + radius <- new 0.1 + +The display function gets this state variable as first argument: + + + +And the keyboard callback gets this variable as first argument: + + keyboardMouseCallback $= Just (keyboard radius) + mainLoop + +The display function gets the current value for the radius and draws a +filled circle: + +display radius = do + clear [ColorBuffer] + r <- get radius + fillCircle r + +The keyboard callback reacts on two keyboard events. The value of the +radius variable are changed: + + + +Compile and start this program and press the + and - key. + + + + + + + +
    + +
    +The second way to change your picture is over time. You can create an +animation if your picture changes a tiny bit every moment. In HOpenGL +you can a define a so called idle function. This function +will be evaluated whenever the picture has been displayed. There you +can define, in what way your state will change before the next +redisplay is performed. The last statement in an idle function will be +usually a call to postRedisplay. + + +We define our first animation. A ring is displayed with a changing +radius. + + +We define a constant which denotes the value by which the radius +changes between every redisplay: + +Within the main function an idle callback is added to the window: + +main = do + (progName,_) <- getArgsAndInitialize + createWindow progName + radius <- new 0.1 + step <- new _STEP + displayCallback $= display radius + idleCallback $= Just (idle radius step) + mainLoop +The display function renders a ring, depending on the state variable + for the radius: + +The idle function changes the value of the variable radius depending on the second state variable step. + +idle radius step = do + r <- get radius + s <- get step + if r>=1 then step $= (-_STEP) + else if r<=0 then step $= _STEP + else return () + s <- get step + radius $= r+s + postRedisplay Nothing + + + +The animation created in the last example was not very satisfactory. A +ring with changing radius was displayed, but the animation was somehow +flickering. The reason for that was, that the display function as its +first statement clears the screen, i.e. makes it alltogether +black. Only afterwards the ring is rendered. For a short moment the +screen will be completely black. This is what makes this flickering +effect.

    + +A common solution for this problem in animated pictures is, not to +apply the statements of the display function directly to the screen, +but to an invisible buffer. When all statements of the display +function have been applied to this invisible background buffer, this +buffer is copied to the screen. This way only the ready to use final +picture is shown on screen and not any intermediate rendering step +(e.g. the picture after the clear statement).

    + +OpenGL provides a double buffering mechanism. We only have to activate +this. Therefore we need to set the initial display mode variable +accordingly. Instead of a call to the function flush a call +to the function swapBuffers needs to be done as last +statement of the display function. + +The ring with changing radius over time now with double +buffering. +import Ring +import PointsForRendering +import StateUtil + +import Graphics.Rendering.OpenGL +import Data.IORef +import Graphics.UI.GLUT as GLUT + +_STEP = 0.001 + +main = do + (progName,_) <- getArgsAndInitialize + initialDisplayMode $= [GLUT.Double] + createWindow progName + radius <- new 0.1 + step <- new _STEP + displayCallback $= display radius + idleCallback $= Just (idle radius step) + mainLoop + +display radius = do + clear [ColorBuffer] + r <- get radius + ring r (r+0.2) + swapBuffers + +idle radius step = do + r <- get radius + s <- get step + if r>=1 then step $= (-_STEP) + else if r<=0 then step $= _STEP + else return () + s <- get step + radius $= r+s + postRedisplay Nothing + + + + +

    + + + + +
    +By now you have seen a lot of tiny examples. It is time to draw the +techniques together and do an application with HOpenGL. In this +section we will implement one of the first animated computer games +ever: Pong. It consists of a small white circle which moves +over a black screen and two paddles which can move on a vertical line. + +Pong in action can be found in figure +. + + + + + +First of all we define some constant values for the game: +x-, y-coordinates of the game, width and height of a paddle, the +radius of the ball, initial factor, how a ball and a paddle changes +its position, and an initial board size. + +We define a data type, game. The game state can be characterized by +the position of the ball and the values these coordinates change for +the next redisplay: + + + +The paddles, which are characterized by their position and the +position change on the y-axis (x-axis is fixed for a paddle). + + + +Additionally a game has points for the left and the right player and a +factor which denotes how fast ball and paddles move: + + + +For a starting game we provide the following initial game state: + + +The main function creates a double buffering window in fullscreen +mode. An initial game state is created and passed to the keyboard, +display, idle and reshape function: + + + + +The display function simply gets the ball and paddles from the game +state and renders these: + + + +Paddles are simply rectangles: + + + +We made use of the utility function which moves a shape to some position: + + +Within the idle function ball and paddles need to be set to their next +position on the field: + + + + +The movement on the ball is determined by the upper and lower bound of +the field, by the left and right bound of the field and the position +of the paddles: + +=yl + && y <=yl+paddleHeight + = -xDir + |x <= _LEFT-ballRadius = 0 + | x+ballRadius >= xr + && y+ballRadius >=yr + && y <=yr+paddleHeight + = -xDir + |x >= _RIGHT+ballRadius = 0 + |otherwise = xDir + newYDir + |y > _TOP-ballRadius || y< _BOTTOM+ballRadius = -yDir + |newXDir == 0 = 0 + |otherwise = yDir + (Ball (x,y) xDir yDir) = ball g + factor = moveFactor g + (xl,yl,_) = leftP g + (xr,yr,_) = rightP g +]]> + +A paddle moves only on the y-axis. We just need to ensure that it +does not leaves the field. There are maximum and minimum values for y: + + + +The keyboard function: key 'a' moves the left paddle, key 'l' the +right paddle and the space key gets a new ball: + +=_RIGHT-3*paddleWidth = - _INITIAL_BALL_DIR + |otherwise = xD + if (xD==0) + then game$=g{ball=Ball (x+4*xDir,y) xDir _INITIAL_BALL_DIR} + else return () +keyboard _ _ _ _ _ = return () + +paddleDir Down = _INITIAL_PADDLE_DIR +paddleDir Up = -_INITIAL_PADDLE_DIR]]> + +Finally we define the visual part of the screen. The movement factor +of the ball depends on the width of the screen: + + + +Have a break and play Pong. + +
    + + + +
    + + +Up to now everything was pretty boring. We never considered the three +dimensional space provided by OpenGL. Strictly we just considered two +dimensions. Thus the library was not any more powerfull than any +simple graphics libaray e.g.like Java's java.awt.Graphics class. In this chapter we will explore the +true power of OpenGL by actually rendering three dimensional objects. + + +
    +In a three dimensional space some objects will be in front of others +and hide them. We would expect to see only those areas which are not +hidden by areas closer to the viewer. + + + +We render two shapes. A red square which is closer to the viewer and a +blue circle which is farer away: + +import Graphics.Rendering.OpenGL +import Graphics.UI.GLUT as GLUT +import Squares +import Circle +import PointsForRendering + +main = do + (progName,_) <- getArgsAndInitialize + createWindow progName + displayCallback $= display + clearColor $= Color4 1 1 1 1 + mainLoop + +display = do + clear [ColorBuffer,DepthBuffer] + loadIdentity + translate (Vector3 0 0 (-0.5::GLfloat)) + currentColor $= Color4 1 0 0 1 + square 1 + + loadIdentity + translate (Vector3 0.2 0.2 (0.5::GLfloat)) + currentColor $= Color4 0 0 1 1 + fillCircle 0.5 + flush +However as can be seen in figure , +the blue circle hides parts of the + red square. + + + + + +By default OpenGL does not take the depth into account. Shapes +rendered later hide +other shapes which were rendered earlier, neglecting the depth of the +shapes. OpenGL provides a mechanism for automatically considering the +depth of a shape. This simply needs to be activated. +Three steps need to be done: + +as +initial display mode Depth needs to be set. +a depth function +needs to be set. Usually the Less mode is used as function +here. This ensures that closer objects hide objects farer away. +the depth buffer needs to be cleared in the beginning of the +display function. + + + + +Now we render the same to shapes as in the example before, but the +depth machanism of OpenGL is activated. + + + +Now as can be seen in figure , the +red square hides parts of the blue circle. + + + + + +
    + + + +
    +In the real world objects closer to the viewer appear larger than +objects farer away from the viewer. Up to now we only learnt how to +set up an orthographic projection. In an orthographic projection +objects farer away have the same size as object close to the viewer. + + +We can test the orthographic projection. Two squares equally in size, +but in different distances from the viewer are rendered: + +import Graphics.Rendering.OpenGL +import Graphics.UI.GLUT as GLUT + +import Squares +import Circle +import PointsForRendering + +main = do + (progName,_) <- getArgsAndInitialize + initialDisplayMode $= [Depth] + createWindow progName + depthFunc $= Just Less + displayCallback $= display + + matrixMode $= Projection + loadIdentity + ortho (-5) 5 (-5) 5 (1) 40 + matrixMode $= Modelview 0 + + clearColor $= Color4 1 1 1 1 + mainLoop + +display = do + clear [ColorBuffer,DepthBuffer] + loadIdentity + translate (Vector3 0 0 (-2::GLfloat)) + currentColor $= Color4 1 0 0 1 + square 1 + + loadIdentity + translate (Vector3 4 4 (-5::GLfloat)) + currentColor $= Color4 0 0 1 1 + square 1 + flush + +As can be seen in figure , the +two squares have the same size, even though the red one is closer to +the viewer. + + + + + +OpenGL provides the function frustum for specifying a +perspective projection. frustum has 6 arguments: + +left: left bound for the closest orthogonal plane +right: right bound for the closest orthogonal plane +top: upper bound for the closest orthogonal plane +bottom: lower bound for the closest orthogonal plane +near: the closest things that can be seen +far: the farest away things that can be seen + + +Figure illustrates these six values. + + + +Usually you will have negated values for top/botton and left/right. + + +Now we render the two squares from the previous example again. This +time we use a perspective projection: +import Graphics.Rendering.OpenGL +import Graphics.UI.GLUT as GLUT + +import Squares +import Circle +import PointsForRendering + +main = do + (progName,_) <- getArgsAndInitialize + initialDisplayMode $= [Depth] + createWindow progName + depthFunc $= Just Less + displayCallback $= display + + matrixMode $= Projection + loadIdentity + let near = 1 + far = 40 + right = 1 + top = 1 + frustum (-right) right (-top) top near far + matrixMode $= Modelview 0 + + clearColor $= Color4 1 1 1 1 + mainLoop + +display = do + clear [ColorBuffer,DepthBuffer] + loadIdentity + translate (Vector3 0 0 (-2::GLfloat)) + currentColor $= Color4 1 0 0 1 + square 1 + + loadIdentity + translate (Vector3 4 4 (-5::GLfloat)) + currentColor $= Color4 0 0 1 1 + square 1 + flush + + +Now, as can be seen in figure , the +blue square appears to be smaller than the red square. + + + + + +HopenGL provides a second function to define a perspective +projection: perspective. Here instead of left, right, top, +bottom an angle between the top/bottom ray and the width of the +closest plane can be specified. + +Figure illustrates these values. + + + + +
    + +
    +In the previous section we have learnt that there is a second way how +to project the three dimensional space onto the two dimensional area +of the screen. We did however not yet specify, where in the three +dimensional space the viewer is situated and in what direction they +are looking. In order to define this, OpenGL provides the +function lookAt. It has three arguments: + +the point, where the viewer is situated. +the point at which the viewer is looking. +and a vector, which specifies the direction which is to be up +for the viewer. + + + +The point of view, where we are looking from is interesting, when we + change it. In the following a module is defined, which allows +the viewer to move along a sphere. The +point of view can be set for a given sphere position. The position is +specified by two angles and a radius. The first angle defines which +way to move around the x-axis the second angle, which angle to move + around the y-axis. The radius defines the distance from the origin. +The position can be changed through keyboard events. + + +x-0.1) +keyForPos pPos (Char '-') = modPos pPos (id,id,(+)0.1) +keyForPos pPos (SpecialKey KeyLeft) = modPos pPos (id,(+)359,id) +keyForPos pPos (SpecialKey KeyRight)= modPos pPos (id,(+)1,id) +keyForPos pPos (SpecialKey KeyUp) = modPos pPos ((+)1,id,id) +keyForPos pPos (SpecialKey KeyDown) = modPos pPos ((+)359,id,id) +keyForPos _ _ = return () + +modPos pPos (ffst,fsnd,ftrd) = do + (alpha,beta,r) <- get pPos + pPos $= (ffst alpha `mod` 360,fsnd beta `mod` 360,ftrd r) + postRedisplay Nothing + +reshape screenSize@(Size w h) = do + viewport $= ((Position 0 0), screenSize) + matrixMode $= Projection + loadIdentity + let near = 0.001 + far = 40 + fov = 90 + ang = (fov*pi)/(360) + top = near / ( cos(ang) / sin(ang) ) + aspect = fromIntegral(w)/fromIntegral(h) + right = top*aspect + frustum (-right) right (-top) top near far + matrixMode $= Modelview 0]]> + + +Let us use the module above, to orbit around a cube. Therefore we +a define simple module, which renders a cube with differently colored +areas. The cube is situated at the origin. +We render the six areas by rendering a square at the origin and +translate and rotate it into its final position. + + +module ColorCube where + +import Graphics.Rendering.OpenGL +import Graphics.UI.GLUT as GLUT + +import Squares +import StateUtil + +locally = matrixExcursion + +colorCube n = do + locally $ do + currentColor $= Color4 1 0 0 1 + translate$Vector3 0 0 (-n/2) + square n + locally $ do + currentColor $= Color4 0 1 0 1 + translate$Vector3 0 0 (n/2) + square n + locally $ do + currentColor $= Color4 0 0 1 1 + translate$Vector3 (n/2) 0 0 + rotate 90 $Vector3 0 (1::GLfloat) 0 + square n + locally $ do + currentColor $= Color4 1 1 0 1 + translate$Vector3 (-n/2) 0 0 + rotate 90 $Vector3 0 (1::GLfloat) 0 + square n + locally $ do + currentColor $= Color4 0 1 1 1 + translate$Vector3 0 (-n/2) 0 + rotate 90 $Vector3 (1::GLfloat) 0 0 + square n + locally $ do + currentColor $= Color4 1 1 1 1 + translate$Vector3 0 (n/2) 0 + rotate 90 $Vector3 (1::GLfloat) 0 0 + square n + +The following program allows to use the cursor keys to move around a +cube at the origin: + +import Graphics.Rendering.OpenGL +import Graphics.UI.GLUT as GLUT + +import Squares +import OrbitPointOfView +import StateUtil +import ColorCube + +main = do + (progName,_) <- getArgsAndInitialize + initialDisplayMode $= [Depth,GLUT.Double] + createWindow progName + depthFunc $= Just Less + + pPos <- new (90::Int,270::Int,2.0) + keyboardMouseCallback $= Just (keyboard pPos) + + displayCallback $= display pPos + reshapeCallback $= Just reshape + mainLoop + +The display function sets the viewer's position before rendering the +cube: + +display pPos = do + loadIdentity + setPointOfView pPos + clear [ColorBuffer,DepthBuffer] + colorCube 1 + swapBuffers + +As keyboard function we map directly to the function defined +in OrbitPointOfView. + +keyboard pPos c _ _ _ = keyForPos pPos c + +An example how the colored cube can now be seen + is given in figure +. + + + + +
    + + +
    +In this section we implement a primitive version of Rubik's cube. + + +Rubik's cube in action can be found in figure +. + + + + + +First of all we modell the logics of Rubic's CubeThere are certainly cleverer ways to do this, but I did not take the +time to think of them..

    + +A data type is provided for representation of a cube: + +module RubikLogic where + +data Rubik a + = Rubik (Front a) (Top a) (Back a) (Bottom a) (Left a) (Right a) + +type Front a = Area a +type Top a = Area a +type Back a = Area a +type Bottom a = Area a +type Left a = Area a +type Right a = Area a + +type Area a = [Row a] +type Row a = [a] + +data AreaPosition = Front |Top| Back| Bottom| Left| Right + +data RubikColor = Red|Blue|Yellow|Green|Orange|White|Black + +We make the type Rubik an instance of the class Functor: + +instance Functor Rubik where + fmap f (Rubik front top back bottom left right) + = Rubik (mf front) (mf top) (mf back) + (mf bottom) (mf left) (mf right) + where + mf = map (map f) +The initial cube is defined +initCube = Rubik (area Red) (area Blue) (area Yellow) + (area Green)(area Orange)(area White) + +area c = [[c,c,c],[c,c,c],[c,c,c]] + +The main operation on a cube is to turn one of its six sides. The +function rotateArea specifies, how this effects a cube. + +rotateArea RubikLogic.Front + (Rubik front top back bottom left right) = + Rubik front' top' back bottom' left' right' + where + top' = newRow 3 (reverse$column 3 left) top + bottom' = newRow 1 (reverse$column 1 right) bottom + left' = newColumn 3 (row 1 bottom) left + right' = newColumn 1 (row 3 top) right + front' = rotateBy3 front + +rotateArea RubikLogic.Back + (Rubik front top back bottom left right) = + Rubik front' top' back' bottom' + (rotateBy2 left') (rotateBy2 right') + where + (Rubik back' bottom' front' top' left' right') = + rotateArea RubikLogic.Front + (Rubik back bottom front top + (rotateBy2 left) (rotateBy2 right)) + +rotateArea RubikLogic.Bottom + (Rubik front top back bottom left right) = + Rubik front' top back' bottom' left' right' + where + back' = newRow 1 (reverse$row 3 left) back + front' = newRow 3 (row 3 right) front + left' = newRow 3 (row 3 front) left + right' = newRow 3 (reverse$row 1 back) right + bottom' = rotateBy1 bottom + + +rotateArea RubikLogic.Top + (Rubik front top back bottom left right) = + Rubik front' top' back' bottom left' right' + where + back' = newRow 3 (reverse$row 1 right) back + front' = newRow 1 (row 1 left) front + left' = newRow 1 (reverse$row 3 back) left + right' = newRow 1 (row 1 front) right + top' = rotateBy1 top + +rotateArea RubikLogic.Left + (Rubik front top back bottom left right) = + Rubik front' top' back' bottom' left' right + where + top' = newColumn 1 (column 1 front) top + bottom' = newColumn 1 (column 1 back) bottom + left' = rotateBy3 left + back' = newColumn 1 (column 1 top) back + front' = newColumn 1 (column 1 bottom) front + +rotateArea RubikLogic.Right + (Rubik front top back bottom left right) = + Rubik front' top' back' bottom' left right' + where + top' = newColumn 3 (column 3 back) top + bottom' = newColumn 3 (column 3 front) bottom + right' = rotateBy3 right + back' = newColumn 3 (column 3 bottom) back + front' = newColumn 3 (column 3 top) front + +rotateBy1 + [[x1,x2,x3] + ,[x8,x,x4] + ,[x7,x6,x5]] = + [[x3,x4,x5] + ,[x2,x,x6] + ,[x1,x8,x7]] + +rotateBy2 = rotateBy1 .rotateBy1 +rotateBy3 = rotateBy2 .rotateBy1 + +Finally some useful functions for manipulation of an area are given. + +column n = map (\row->row !! (n-1)) + +row n area = area !!(n-1) + +newRow 1 row [a,r,ea] = [row,r,ea] +newRow 2 row [a,r,ea] = [a,row,ea] +newRow 3 row [a,r,ea] = [a,r,row] + +newColumn n column area = map (doIt n) areaC + where + areaC = zip area column + doIt 1 ((r:ow),c) = c:ow + doIt 2 ((r:o:w),c) = r:c:w + doIt 3 ((r:o:w:xs),c) = r:o:c:xs + + + + +We have a logical modell of a cube. Now we can render this in a +coordinate system. In an earlier section we allready provided a +function to render one single side. We simply need to render the six +sides and move them to the correct position. + + + +The following function maps our abstract color type to concrete OpenGL +colors: + +doColor Red = Color4 1 0 0 1.0 +doColor Green = Color4 0 1 0 1.0 +doColor Blue = Color4 0 0 1 1.0 +doColor Yellow = Color4 1 1 0 1.0 +doColor Orange = Color4 1 0.5 0.5 1 +doColor White = Color4 1 1 1 1.0 +doColor Black = Color4 0 0 0 1.0 + + + + +Finally we can create a simple application. + + + +

    + + + + +
    +Let us begin with a simple 3-dimensional shape: a cube. +A cube has six squares which we can render as the primitive +shape Quad. + + + + + +We make a first try at rendering a cube: + + + +The resulting window can be found in figure +. It is not very exiting, we see a white +shape, which has the outline of a cube, but do not get the three +dimensional visual effect of a cube. + + + + + +For rendering three dimensional objects it is not enough to specifiy +their shapes and your viewing position. Crucial is the way the objects +are illuminated. In order to get a three dimensional viesual effect on +your two dimensional computer screen, it needs to be defined what kind +of light source lights the object.

    + +A light source can be specified fairly easy. First you need to set the +state variable lighting to the value Enabled. Then +you need to specify the position of your light source. This can +be done by setting a special position state variable, +e.g. by
    +position (Light 0) $= Vertex4 0.8 0 3.0 5.0.
    +And finally you need to turn the light source on by setting its state +variable to enabled: light (Light 0) $= Enabled. + +Now we can render a cube with a defined light source: + + + +The resulting window can be found in figure +. Now we can identify a bit more the cube. + + + + +You might wonder, why the vertex for the light source position has +four parameters. The forth parameter is a value by which the other +three (the x, y, z coordinates) get divided. + + + + + + + + +Let us render some cute object: Tux the penguin. We will roughly use the data +from the OpenGL +game tuxracer. +The nice thing about a penguin is, that you can built it almost completely out +of spheres. We will render Tux simply by rendering spheres, which are scaled +to different forms and moved to the correct position. + + + + +The main display function clears the necessary buffers and calls the main +function for rendering the penguin Tux. + + + + + + +We will use some auxilliary functions. First of all a function, which renders a +scaled sphere. + + GLfloat -> GLfloat -> IO () +scal x y z = scale x y z]]> + +Furthermore some functions for easy translate and rotate transformations: + + GLfloat -> GLfloat -> IO () +transl x y z = translate (Vector3 x y z) + +rota:: GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO () +rota a x y z = rotate a (Vector3 x y z) + +rotateZ a = rota a 0 0 1 +rotateY a = rota a 0 1 0 +rotateX a = rota a 1 0 0]]> +And eventually some functions to set the material properties for the different +parts of a penguin. + + + + + +The neck and torso of a penguin are almost black spheres with some white front +parts. We will modell such figures by setting s white sphere in front of a +black sphere. + + + +The resulting image can be found in figure +. + + + + +Torso and shoulders are scaled body parts: + + + +The resulting image for torso and shoulders +can be found in figure +. + + + + + + + + + + + + + + + + + + + + + + +The resulting image can be found in figure +. + + + + + + + + + + +We can use all the parts to define Tux. + + + + +The resulting window can be found in figure +. + + + + + +

    +
    + + + + + + +
    hunk ./doc/bib.bib 6 - ,note = "\verb+ftp://ftp.sgi.com/opengl/doc/opengl1.2/glu1.3.ps+" + ,note = "\verb+http://www.opengl.org/documentation/specs/glu/glu1.3.ps+" hunk ./doc/bib.bib 9 - hunk ./doc/bib.bib 13 - ,note = "\verb+www.opengl.org/developers/documentation/glut/glut-3.spec.ps+" + ,note = "\verb+http://www.opengl.org/resources/libraries/glut/glut-3.spec.ps+" hunk ./doc/bib.bib 33 - hunk ./doc/bib.bib 43 + +@book {revisedHaskellReport, + EDITOR = {Peyton Jones, Simon L.}, + TITLE = {Haskell 98 Language and Libraries: The Revised Report}, + YEAR = {2003}, + PUBLISHER = {Cambridge University Press}, + ISBN = {0-521-82614-4}, + URL = {http://haskell.org/definition} +} + hunk ./doc/tutorial.xml 61 -import Graphics.Rendering.OpenGL hunk ./doc/tutorial.xml 62 +main :: IO () hunk ./doc/tutorial.xml 68 +createAWindow :: String -> IO () hunk ./doc/tutorial.xml 119 -import Graphics.Rendering.OpenGL hunk ./doc/tutorial.xml 120 +main :: IO () hunk ./doc/tutorial.xml 133 -> IO () +createAWindow windowName = do hunk ./doc/tutorial.xml 153 ->vertex$Vertex3 x y z) myPoints]]> + renderPrimitive Points $ + mapM_ (\(x, y, z) -> vertex $ Vertex3 x y z) myPoints]]> hunk ./doc/tutorial.xml 189 -import Graphics.Rendering.OpenGL hunk ./doc/tutorial.xml 190 +main :: IO () hunk ./doc/tutorial.xml 192 - (progName,_) <-getArgsAndInitialize + (progName,_) <- getArgsAndInitialize hunk ./doc/tutorial.xml 196 +createAWindow :: String -> IO () hunk ./doc/tutorial.xml 201 -displayPoints = do +displayPoints :: DisplayCallback +displayPoints = do hunk ./doc/tutorial.xml 204 - renderPrimitive ]]>Polygonvertex$Vertex3 x y z) myPoints + renderPrimitive ]]>Polygon vertex $ Vertex3 x y z) myPoints hunk ./doc/tutorial.xml 274 -main = do - let x = 5 + + xs <- getLine + print (length xs)]]> hunk ./doc/tutorial.xml 375 -import Graphics.Rendering.OpenGL hunk ./doc/tutorial.xml 376 +main :: IO () hunk ./doc/tutorial.xml 382 +myWindow :: String -> IO () hunk ./doc/tutorial.xml 402 -infixr 2 $= + a -> IO () + ($=) :: s a -> a -> IO ()]]> hunk ./doc/tutorial.xml 423 -import Graphics.Rendering.OpenGL hunk ./doc/tutorial.xml 424 +main :: IO () hunk ./doc/tutorial.xml 427 - ]]>x<-get screenSizex <- get screenSizeclass HasGetter g where - get :: g a -> IO a + IO a]]> hunk ./doc/tutorial.xml 461 -import Graphics.Rendering.OpenGL hunk ./doc/tutorial.xml 462 +main :: IO () hunk ./doc/tutorial.xml 468 +myWindow :: String -> IO () hunk ./doc/tutorial.xml 562 ->import Graphics.UI.GLUT -import Graphics.Rendering.OpenGL +> IO () hunk ./doc/tutorial.xml 575 -display = clear [ColorBuffer] +display :: DisplayCallback +display = ]]>clear [ColorBuffer] hunk ./doc/tutorial.xml 615 ->import Graphics.UI.GLUT -import Graphics.Rendering.OpenGL +> IO () hunk ./doc/tutorial.xml 628 -display = do - clearColor $= Color4 1 0 0 1 - clear [ColorBuffer] +display :: DisplayCallback +display = do + ]]>clearColor $= Color4 1 0 0 1 hunk ./doc/tutorial.xml 653 -data PrimitiveMode = + + deriving ( Eq, Ord, Show )]]> hunk ./doc/tutorial.xml 684 ->import Graphics.UI.GLUT -import Graphics.Rendering.OpenGL +> IO () hunk ./doc/tutorial.xml 697 -display = do +display :: DisplayCallback +display = do hunk ./doc/tutorial.xml 701 - renderPrimitive Points + ]]>renderPrimitive Points + flush]]> hunk ./doc/tutorial.xml 725 ->import Graphics.UI.GLUT -import Graphics.Rendering.OpenGL +> IO () hunk ./doc/tutorial.xml 738 -display = do +display :: DisplayCallback +display = do hunk ./doc/tutorial.xml 743 - do + ]]>do hunk ./doc/tutorial.xml 770 ->import Graphics.UI.GLUT -import Graphics.Rendering.OpenGL +> IO () hunk ./doc/tutorial.xml 783 -display = do +display :: DisplayCallback +display = do hunk ./doc/tutorial.xml 787 - let points = [(0.1,0.6,0::GLfloat) + let points = [(0.1,0.6,0) hunk ./doc/tutorial.xml 797 -makeVertexes = mapM_ (\(x,y,z)->vertex$Vertex3 x y z) +makeVertexes :: [(GLfloat,GLfloat,GLfloat)] -> IO () +makeVertexes = mapM_ (\(x,y,z)->vertex $ Vertex3 x y z) hunk ./doc/tutorial.xml 800 +renderPoints :: [(GLfloat,GLfloat,GLfloat)] -> IO () hunk ./doc/tutorial.xml 803 -renderAs figure ps = renderPrimitive figure$makeVertexes ps +renderAs :: PrimitiveMode -> [(GLfloat,GLfloat,GLfloat)] -> IO () +renderAs figure ps = renderPrimitive figure $ makeVertexes ps]]> hunk ./doc/tutorial.xml 818 -import Graphics.UI.GLUT -import Graphics.Rendering.OpenGL]]> +import Graphics.UI.GLUT]]> hunk ./doc/tutorial.xml 822 -> IO () +renderInWindow displayFunction = do + (progName,_) <- getArgsAndInitialize hunk ./doc/tutorial.xml 834 -> PrimitiveMode -> IO () +displayPoints points primitiveShape = do hunk ./doc/tutorial.xml 839 -renderAs figure ps = renderPrimitive figure$makeVertexes ps +renderAs :: PrimitiveMode -> [(GLfloat,GLfloat,GLfloat)] -> IO () +renderAs figure ps = renderPrimitive figure $ makeVertexes ps hunk ./doc/tutorial.xml 842 -makeVertexes = mapM_ (\(x,y,z)->vertex$Vertex3 x y z)]]> +makeVertexes :: [(GLfloat,GLfloat,GLfloat)] -> IO () +makeVertexes = mapM_ (\(x,y,z)->vertex $ Vertex3 x y z)]]> hunk ./doc/tutorial.xml 847 -> IO () +mainFor primitiveShape hunk ./doc/tutorial.xml 851 +displayMyPoints :: PrimitiveMode -> IO () hunk ./doc/tutorial.xml 857 +myPoints :: [(GLfloat,GLfloat,GLfloat)] hunk ./doc/tutorial.xml 859 - = [(0.2,-0.4,0::GLfloat) + = [(0.2,-0.4,0) hunk ./doc/tutorial.xml 873 - hunk ./doc/tutorial.xml 878 +main :: IO () hunk ./doc/tutorial.xml 903 +main :: IO () hunk ./doc/tutorial.xml 924 +main :: IO () hunk ./doc/tutorial.xml 949 +main :: IO () hunk ./doc/tutorial.xml 979 +main :: IO () hunk ./doc/tutorial.xml 1000 +main :: IO () hunk ./doc/tutorial.xml 1019 +main :: IO () hunk ./doc/tutorial.xml 1046 +main :: IO () hunk ./doc/tutorial.xml 1071 +main :: IO () hunk ./doc/tutorial.xml 1112 +main :: IO () hunk ./doc/tutorial.xml 1158 -> -If we take a large anough number then we will eventually get a circle: +> a -> Int -> [(a,a,a)] +circlePoints radius number = + [let alpha = 2 * pi * fromIntegral i / fromIntegral number + in (radius * sin alpha, radius * cos alpha, 0) + | i <- [1, 2 .. number]] +]]> +If we take a large enough number then we will eventually get a circle: hunk ./doc/tutorial.xml 1166 -> +> [(GLfloat,GLfloat,GLfloat)] +circle radius = circlePoints radius 100]]> hunk ./doc/tutorial.xml 1170 -> Int -> IO () +renderCircleApprox r n = + displayPoints (circlePoints r n) LineLoop hunk ./doc/tutorial.xml 1174 +renderCircle :: GLfloat -> IO () hunk ./doc/tutorial.xml 1176 + +fillCircle :: GLfloat -> IO () hunk ./doc/tutorial.xml 1189 +main :: IO () hunk ./doc/tutorial.xml 1210 +main :: IO () hunk ./doc/tutorial.xml 1231 +main :: IO () hunk ./doc/tutorial.xml 1266 ->[x,y]) (points++[p]) +> GLfloat -> [(GLfloat,GLfloat,GLfloat)] +ringPoints innerRadius outerRadius + = concat $ map (\(x,y)->[x,y]) (points++[p]) hunk ./doc/tutorial.xml 1276 -> GLfloat -> IO () +ring innerRadius outerRadius hunk ./doc/tutorial.xml 1288 +main :: IO () hunk ./doc/tutorial.xml 1319 -import Graphics.Rendering.OpenGL +import Graphics.UI.GLUT hunk ./doc/tutorial.xml 1322 +main :: IO () hunk ./doc/tutorial.xml 1325 +display :: DisplayCallback hunk ./doc/tutorial.xml 1361 ->import Graphics.Rendering.OpenGL -import Graphics.UI.GLUT as GLUT +>import Graphics.UI.GLUT hunk ./doc/tutorial.xml 1364 +main :: IO () hunk ./doc/tutorial.xml 1367 +display :: DisplayCallback hunk ./doc/tutorial.xml 1377 +squarePoints :: [(GLfloat,GLfloat,GLfloat)] hunk ./doc/tutorial.xml 1410 ->import Graphics.Rendering.OpenGL -import Graphics.UI.GLUT as GLUT +>import Graphics.UI.GLUT hunk ./doc/tutorial.xml 1413 +colorTriangle :: IO () hunk ./doc/tutorial.xml 1422 +main :: IO () hunk ./doc/tutorial.xml 1425 +display :: DisplayCallback hunk ./doc/tutorial.xml 1458 -import Graphics.Rendering.OpenGL -import Graphics.UI.GLUT as GLUT -import Data.Either +import Graphics.UI.GLUT hunk ./doc/tutorial.xml 1469 - = map (\(_,(x,y,z))->Vertex3 x y z)(os++es) + = map (\(_,(x,y,z)) -> Vertex3 x y z)(os++es) hunk ./doc/tutorial.xml 1484 - [ComplexContour $map (\v->AnnotatedVertex v 0) points]]]> + [ComplexContour $ map (\v->AnnotatedVertex v 0) points]]]> hunk ./doc/tutorial.xml 1491 - (Right startess) + startess hunk ./doc/tutorial.xml 1494 - $complexPolygon (starPoints radius rays) + $ complexPolygon (starPoints radius rays) hunk ./doc/tutorial.xml 1516 -import Graphics.Rendering.OpenGL -import Graphics.UI.GLUT as GLUT +import Graphics.UI.GLUT hunk ./doc/tutorial.xml 1519 -main = renderInWindow$do +main :: IO () +main = renderInWindow $ do hunk ./doc/tutorial.xml 1534 -caption="RenderStar"/> +caption="Two stars"/> hunk ./doc/tutorial.xml 1555 +main :: IO () hunk ./doc/tutorial.xml 1558 -display = do +display :: DisplayCallback +display = do hunk ./doc/tutorial.xml 1561 - renderObject Solid$ Teapot 0.6 + renderObject Solid $ Teapot 0.6 hunk ./doc/tutorial.xml 1609 -import Graphics.Rendering.OpenGL +import Graphics.UI.GLUT hunk ./doc/tutorial.xml 1622 ->main = do - renderInWindow someRings +>main :: IO () +main = do + renderInWindow someRings hunk ./doc/tutorial.xml 1626 +someRings :: DisplayCallback hunk ./doc/tutorial.xml 1711 ->main = do +>main :: IO () +main = do hunk ./doc/tutorial.xml 1757 + +main :: IO () hunk ./doc/tutorial.xml 1761 -display = do +display :: DisplayCallback +display = do hunk ./doc/tutorial.xml 1825 +main :: IO () hunk ./doc/tutorial.xml 1974 -module MyTansformations where + +shear :: GLfloat -> IO () +shear f = do + m <- newMatrix RowMajor [1,f,0,0 + ,0,1,0,0 + ,0,0,1,0 + ,0,0,0,1] + multMatrix (m :: GLmatrix GLfloat)]]> hunk ./doc/tutorial.xml 1991 -import MyTansformations +import MyTransformations hunk ./doc/tutorial.xml 1993 -import Graphics.Rendering.OpenGL -import Graphics.UI.GLUT as GLUT +import Graphics.UI.GLUT hunk ./doc/tutorial.xml 1995 -main = renderInWindow$do +main :: IO () +main = renderInWindow $ do hunk ./doc/tutorial.xml 2038 -import Graphics.Rendering.OpenGL hunk ./doc/tutorial.xml 2041 -import Squares hunk ./doc/tutorial.xml 2042 +main :: IO () hunk ./doc/tutorial.xml 2045 -display = do +display :: DisplayCallback +display = do hunk ./doc/tutorial.xml 2075 -called matrixExcursions which refers to the fact that +called preservingMatrix which refers to the fact that hunk ./doc/tutorial.xml 2077 -matrixes. matrixExcursion has one argument, which is a -monadic statement. The application of matrixExcursion is a +matrixes. preservingMatrix has one argument, which is a +monadic statement. The application of preservingMatrix is a hunk ./doc/tutorial.xml 2080 -matrixExcursion :: IO a -> IO a +preservingMatrix :: IO a -> IO a hunk ./doc/tutorial.xml 2083 -statements which follow after the application of matrixExcursion. +statements which follow after the application of preservingMatrix. hunk ./doc/tutorial.xml 2086 -To demonstrate the use of matrixExcursion we provide +To demonstrate the use of preservingMatrix we provide hunk ./doc/tutorial.xml 2092 -a matrixExcursion application. +a preservingMatrix application. hunk ./doc/tutorial.xml 2095 -import Graphics.UI.GLUT hunk ./doc/tutorial.xml 2097 -import Squares -import PointsForRendering]]> +import Squares]]> hunk ./doc/tutorial.xml 2106 - matrixExcursion $ do + preservingMatrix $ do hunk ./doc/tutorial.xml 2109 - matrixExcursion $ do + preservingMatrix $ do hunk ./doc/tutorial.xml 2112 - matrixExcursion $ do + preservingMatrix $ do hunk ./doc/tutorial.xml 2115 - matrixExcursion $ do + preservingMatrix $ do hunk ./doc/tutorial.xml 2140 - makeSquare xn yn = \f -> matrixExcursion $ do + makeSquare xn yn = \f -> preservingMatrix $ do hunk ./doc/tutorial.xml 2166 -main = renderInWindow faces +main :: IO () +main = renderInWindow faces hunk ./doc/tutorial.xml 2224 +main :: IO () hunk ./doc/tutorial.xml 2232 +display :: DisplayCallback hunk ./doc/tutorial.xml 2277 +main :: IO () hunk ./doc/tutorial.xml 2285 -display = do +display :: DisplayCallback +display = do hunk ./doc/tutorial.xml 2312 +main :: IO () hunk ./doc/tutorial.xml 2321 +display :: DisplayCallback hunk ./doc/tutorial.xml 2366 ->import PointsForRendering -import Graphics.Rendering.OpenGL -import Graphics.UI.GLUT as GLUT +>import Graphics.UI.GLUT hunk ./doc/tutorial.xml 2369 +main :: IO () hunk ./doc/tutorial.xml 2389 +display :: DisplayCallback hunk ./doc/tutorial.xml 2450 - -import Graphics.Rendering.OpenGL hunk ./doc/tutorial.xml 2451 -import Graphics.UI.GLUT - -instance HasSetter IORef where - ($=) var val = writeIORef var val - -instance HasGetter IORef where - get var = readIORef var - hunk ./doc/tutorial.xml 2502 -import PointsForRendering hunk ./doc/tutorial.xml 2503 - -import Graphics.Rendering.OpenGL -import Data.IORef hunk ./doc/tutorial.xml 2505 +main :: IO () hunk ./doc/tutorial.xml 2507 - (progName,_) <- getArgsAndInitialize + (progName,_) <- getArgsAndInitialize hunk ./doc/tutorial.xml 2573 -import PointsForRendering hunk ./doc/tutorial.xml 2575 -import Graphics.Rendering.OpenGL -import Data.IORef -import Graphics.UI.GLUT as GLUT]]> +import Graphics.UI.GLUT]]> hunk ./doc/tutorial.xml 2584 ->main = do +>main :: IO () +main = do hunk ./doc/tutorial.xml 2645 -import Graphics.Rendering.OpenGL hunk ./doc/tutorial.xml 2646 -import Graphics.UI.GLUT as GLUT +import Graphics.UI.GLUT hunk ./doc/tutorial.xml 2650 +main :: IO () hunk ./doc/tutorial.xml 2653 - initialDisplayMode $= [GLUT.Double] + initialDisplayMode $= [DoubleBuffered] hunk ./doc/tutorial.xml 2661 +display :: IORef GLfloat -> DisplayCallback hunk ./doc/tutorial.xml 2668 +idle :: IORef GLfloat -> IORef GLfloat -> IdleCallback hunk ./doc/tutorial.xml 2704 -import PointsForRendering -import StateUtil hunk ./doc/tutorial.xml 2705 -import Graphics.Rendering.OpenGL hunk ./doc/tutorial.xml 2706 -import Graphics.UI.GLUT as GLUT]]> +import Graphics.UI.GLUT]]> hunk ./doc/tutorial.xml 2770 ->import Graphics.Rendering.OpenGL -import Graphics.UI.GLUT as GLUT +import Graphics.UI.GLUT hunk ./doc/tutorial.xml 2936 -import PointsForRendering hunk ./doc/tutorial.xml 2937 +main :: IO () hunk ./doc/tutorial.xml 2988 -

    -The resulting window can be found in figure -. +The resulting window can be found in figure. hunk ./doc/tutorial.xml 225 -caption="A simple polygon." -/> + caption="A simple polygon."/> hunk ./doc/Makefile 61 -tutorial_examples.tar.gz: tutorial.xml $(SCRIPT_DIR)/deleteTags.xquery +tutorial_examples.tar.gz: tutorial.xml extractExamples $(SCRIPT_DIR)/deleteTags.xquery hunk ./doc/extractExamples 7 -GHC="ghc -O -Wall" +GHC="ghc -O -Wall -v0" hunk ./doc/extractExamples 35 - echo "*** header no. $X, name $NAME, option $OPTION, language $LANG, package $PACK, main $MAIN" + # echo "*** header no. $X, name $NAME, option $OPTION, language $LANG, package $PACK, main $MAIN" hunk ./doc/extractExamples 92 - echo "*** file no. $X, name $NAME, option $OPTION, language $LANG, package $PACK, main $MAIN" + # echo "*** file no. $X, name $NAME, option $OPTION, language $LANG, package $PACK, main $MAIN" hunk ./doc/extractExamples 94 - mkdir -p src/$PACK + if test x$PACK = x.; then + SEPPACK= + else + SEPPACK=/$PACK + fi + mkdir -p src$SEPPACK hunk ./doc/extractExamples 101 - ${QUIP} -value_output -unwrapped_result -input code.xml -o src/$PACK/$NAME.$LANG -query ' + ${QUIP} -value_output -unwrapped_result -input code.xml -o src$SEPPACK/$NAME.$LANG -query ' hunk ./doc/extractExamples 124 - no) echo "no main" ;; - *) echo $MAIN; $MAIN ;; + no) # echo "no main" + ;; + *) # echo $MAIN; $MAIN + ;; hunk ./doc/tutorial.xml 222 -The resulting window can be found in figure. +The resulting window can be found in figure. hunk ./doc/tutorial.xml 232 + hunk ./doc/tutorial.xml 234 -Haskell is a lazily -evaluated functional programming language. This -means that there are no mutable variables. A Haskell program consists -of expressions, which do not have any side effects. Expressions are -only evalutated to some value when this is absolutely necessary for -program execution. This means it is hard to predict in which order -subexpressions get evaluated.

    +Haskell is a lazily evaluated functional +programming language, which means, amongst other things, that there are no +mutable variables. A Haskell program consists of expressions, which are only +evalutated to some value when it is absolutely necessary for program execution. +This makes predicting the order in which the subexpressions get evaluated +extremely hard.

    hunk ./doc/tutorial.xml 241 -Expressions -evaluate to some value without changing any state. This is a nice -property of Haskell, because it makes reasoning about programs easier -and programs are very robust. +Expressions evaluate to some value without changing any state. This is a nice +property of Haskell, because it makes reasoning about programs easier and +programs are very robust. hunk ./doc/tutorial.xml 246 - -OpenGL on the other hand is a graphics library which is defined in -terms of a state machine. A mutable state modells the current -state of the world. Functions are executed one after another -on this state in -order to modify certain variables. E.g. one variable keeps the current -color to which all drawing statements refer. There is a statement -which allows to set the color variable to some other value.

    hunk ./doc/tutorial.xml 247 -A comprehensive introduction to OpenGL can be found in the so calledredbook . OpenGL comes along with -a utility library called GLU and a system -independent GUI library called GLUT . + +OpenGL on the other hand is a graphics library which is defined in terms of a +state machine, where a mutable state models the current state of the +world. Functions are executed one after another on this state in order to modify +certain variables, e.g. one state variable keeps the current color which most +rendering commands use implicitly. There is a command which allows to set the +current color variable to a given value.

    hunk ./doc/tutorial.xml 255 +A comprehensive introduction to OpenGL can be found in the so called Red +Book. OpenGL comes along with a utility +library called GLU and a simple system independent GUI +library called GLUT . hunk ./doc/tutorial.xml 263 -Having said this, Haskell and OpenGL seem to cooperate badly. There -seems to be a great mismatch between the fundamental concepts of the two. -However, -the designers of Haskell discovered a very powerful structure, which is -a perfect concept for modelling state changing functions in a purely -functional language: Monads . Most -Haskell programmers do not -worry about the theory of monads but simply use them, whenever they -do I/O, state changing functions or in parser construction. With -monads functional programs can almost look like ordinary imperative -progams .

    +Having said this, Haskell and OpenGL seem to cooperate badly and there seems to +be a great mismatch between the fundamental concepts of the two. However, the +designers of Haskell discovered a very powerful structure, which is a perfect +concept for modeling state changing functions in a purely functional +language: Monads. Most Haskell +programmers do not worry about the theory of monads, but simply use them +whenever they need I/O, state changing functions or parsers. With monads +functional programs can almost look like ordinary imperative progams , without losing all the nice properties of a functional +language.

    hunk ./doc/tutorial.xml 274 -Monads are so essential to functional programming, that they have a -special syntactic construct in Haskell, the do notation. +Monads are so essential to functional programming, that they have a special +syntactic construct in Haskell, the do notation. Consider the following +simple Haskell program, which uses monads: hunk ./doc/tutorial.xml 278 -Consider the following simple Haskell program, which uses monads: hunk ./doc/tutorial.xml 287 -The monadic statements start with the keyword do. The - statements have side effects. Variables can be defined and - redefined in let-expressionsVariables bound -in let-expressions are not variables as known from - imperative languages. Line 4 in the example above does not assign a - new value to a variable x but defines a new variable x.. Monadic statements can have a - result. This can be retrieved from the statement by the <- notation.

    hunk ./doc/tutorial.xml 288 -On another aspect OpenGL and Haskell perfectly match. In OpenGL -functions are assigned to different data objects, -e.g.a display function is passed to windows. Since -functions are first class citizens, they can easily and type safe be -passed aroundUnlike the object orientated languages Java, -which misses an -easy way to pass functions around.. - - - +The monadic statements start with the keyword do. These statements can +have side effects and a result. This result can be retrieved from the statement +by the <- notation. Variables can be bound by let-expressions. +Note that these are not variables as known from imperative languages. Line 5 in +the example above does not assign a new value to the variable x but +defines a new one with the same name, which shadows the first one.

    hunk ./doc/tutorial.xml 295 +Regarding another aspect GLUT and Haskell match perfectly: In GLUT, functions +are assigned to different data objects, e.g. a display function is associated +with a window. Since functions are first class citizens in Haskell, they can +easily be passed around in a type safe way. In this respect, Haskell differs +from e.g. the object orientated language Java, which misses an easy way to pass +functions around. + hunk ./doc/tutorial.xml 305 - - hunk ./doc/tutorial.xml 306 -If you want to start programming OpenGL in Haskell you need to be one +If you want to start programming OpenGL in Haskell, you need to be one hunk ./doc/tutorial.xml 635 -committed to the device, on which is drawn. +committed to the device, on which is drawn. hunk ./doc/tutorial.xml 750 -every triple into a vertex, e.g.by:
    by:
    +The resulting window can be found in figure hunk ./doc/tutorial.xml 923 -The resulting window can be found in figure +The resulting window can be found in figure hunk ./doc/tutorial.xml 947 -The resulting window can be found in figure +The resulting window can be found in figure hunk ./doc/tutorial.xml 977 -The resulting window can be found in figure +The resulting window can be found in figure hunk ./doc/tutorial.xml 998 -The resulting window can be found in figure +The resulting window can be found in figure hunk ./doc/tutorial.xml 1017 -The resulting window can be found in figure +The resulting window can be found in figure hunk ./doc/tutorial.xml 1044 -The resulting window can be found in figure +The resulting window can be found in figure hunk ./doc/tutorial.xml 1070 -The resulting window can be found in figure +The resulting window can be found in figure hunk ./doc/tutorial.xml 1085 -a polygon. There are some restrictions for polygons: +a polygon. There are some restrictions for polygons: hunk ./doc/tutorial.xml 1190 -The resulting graphic can be seen in figure +The resulting graphic can be seen in figure hunk ./doc/tutorial.xml 1211 -The resulting graphic can be seen in figure +The resulting graphic can be seen in figure hunk ./doc/tutorial.xml 1232 -The resulting graphic can be seen in figure +The resulting graphic can be seen in figure hunk ./doc/tutorial.xml 1289 -The resulting graphic can be seen in figure +The resulting graphic can be seen in figure hunk ./doc/tutorial.xml 1327 -The resulting graphic can be seen in figure +The resulting graphic can be seen in figure hunk ./doc/tutorial.xml 1378 -The resulting graphic can be seen in figure +The resulting graphic can be seen in figure hunk ./doc/tutorial.xml 1428 -The resulting window can be found in figure +The resulting window can be found in figure hunk ./doc/tutorial.xml 1464 -> Vertex3 x y z)(os++es) - where - (os,es) = partition (\(i,_)-> odd i) - $zip [1,2..] - $circlePoints radius rays]]>
    +> Int -> [Vertex3 GLdouble] +starPoints radius rays = + map (\(_,(x,y,z)) -> Vertex3 x y z) (os ++ es) + where (os,es) = partition (odd . fst) $ + zip [1 :: Int, 2 ..] $ + circlePoints radius rays]]> hunk ./doc/tutorial.xml 1471 -For tesselation we need to create a ComplexPolygon, which has -a list of ComplexContour. A ComplexContour contains -a list of AnnotatedVertexes. The annotation can be used for -color or similar information. We do not make use of this annotation -and simple annotate every vertex with 0. +For tesselation we need to create a ComplexPolygon, which has a list of +ComplexContours. A ComplexContour contains a list of +AnnotatedVertexes. The annotation can be used for color or similar +information, but we do not make use of this annotation and simple annotate every +vertex with 0. hunk ./doc/tutorial.xml 1478 ->AnnotatedVertex v 0) points]]]> +>tesselate creates a list of simple polygons. -It needs some control information, which we do not explain here. +complexPolygon :: [Vertex3 GLdouble] -> ComplexPolygon DontCare +complexPolygon points = + ComplexPolygon + [ComplexContour $ map (\v -> AnnotatedVertex v 0) points]]]> + +The function tesselate creates a list of simple polygons. It needs some +control information, which we do not explain here. hunk ./doc/tutorial.xml 1489 -> +> Int -> IO () +star radius rays = do + starTess <- + tessellate + TessWindingPositive 0 (Normal3 0 0 0) noOpCombiner $ + complexPolygon (starPoints radius rays) + drawSimplePolygon starTess]]> hunk ./doc/tutorial.xml 1497 -The resulting simple polygons can be rendered with the -function renderPrimitive. +The resulting simple polygons can be rendered with the function +renderPrimitive. hunk ./doc/tutorial.xml 1501 -> IO () +drawSimplePolygon (SimplePolygon primitiveParts) = hunk ./doc/tutorial.xml 1505 +renderPrimitiveParts :: Primitive DontCare -> IO () hunk ./doc/tutorial.xml 1507 - renderPrimitive primitiveMode - $mapM_ (vertex . stripAnnotation) vertices + renderPrimitive primitiveMode $ + mapM_ (vertex . stripAnnotation) vertices hunk ./doc/tutorial.xml 1510 +stripAnnotation :: AnnotatedVertex DontCare -> Vertex3 GLdouble hunk ./doc/tutorial.xml 1513 -noOpCombiner _newVertex _weightedProperties = 0.0 ::GLfloat]]> +noOpCombiner :: Vertex3 GLdouble -> WeightedProperties DontCare -> DontCare +noOpCombiner _newVertex _weightedProperties = 0]]> hunk ./doc/tutorial.xml 1516 -Now we can test our stars. We render two stars, one with 7 and one -with 5 rays. +Now we can test our stars. We render two stars, one with 7 and one with 5 rays. hunk ./doc/tutorial.xml 1533 -The resulting window can be found in figure +The resulting window can be found in figure hunk ./doc/tutorial.xml 1566 -The resulting graphic can be seen in figure +The resulting graphic can be seen in figure hunk ./doc/tutorial.xml 1590 -operation, i.e. no transformation is performed. You can +operation, i.e. no transformation is performed. You can hunk ./doc/tutorial.xml 1651 -The resulting graphic can be seen in figure +The resulting graphic can be seen in figure hunk ./doc/tutorial.xml 1734 -The resulting graphic can be seen in figure +The resulting graphic can be seen in figure hunk ./doc/tutorial.xml 1773 -The resulting graphic can be seen in figure +The resulting graphic can be seen in figure hunk ./doc/tutorial.xml 1801 - which is applied to a square figure. A sequence of transformation + which is applied to a square figure. A sequence of transformation hunk ./doc/tutorial.xml 1867 -The resulting window can be found in figure +The resulting window can be found in figure hunk ./doc/tutorial.xml 1928 ->ColumMajor for column wise appearance. The function ColumMajor for column wise appearance. The function +The resulting window can be found in figure hunk ./doc/tutorial.xml 2061 -a clean state, i.e.the state it espects to find, when +a clean state, i.e.the state it espects to find, when hunk ./doc/tutorial.xml 2095 -a preservingMatrix application. +a preservingMatrix application. hunk ./doc/tutorial.xml 2189 -The resulting window can be found in figure +The resulting window can be found in figure hunk ./doc/tutorial.xml 2252 -image). Figure +image). Figure hunk ./doc/tutorial.xml 2339 -The resulting window can be found in figure +The resulting window can be found in figure hunk ./doc/tutorial.xml 2401 -The resulting windows can be found in figure +The resulting windows can be found in figure hunk ./doc/tutorial.xml 2697 -Pong in action can be found in figure +Pong in action can be found in figure hunk ./doc/tutorial.xml 2921 -simple graphics libaray e.g.like Java's like Java's + is given in figure hunk ./doc/tutorial.xml 3350 -Rubik's cube in action can be found in figure +Rubik's cube in action can be found in figure hunk ./doc/tutorial.xml 3797 -The resulting window can be found in figure +The resulting window can be found in figure hunk ./doc/tutorial.xml 3818 -e.g. by
    +e.g. by
    hunk ./doc/tutorial.xml 3853 -The resulting window can be found in figure +The resulting window can be found in figure hunk ./doc/tutorial.xml 3992 -The resulting image can be found in figure +The resulting image can be found in figure hunk ./doc/tutorial.xml 4016 -can be found in figure +can be found in figure hunk ./doc/tutorial.xml 4223 -The resulting image can be found in figure +The resulting image can be found in figure hunk ./doc/tutorial.xml 4260 -The resulting window can be found in figure +The resulting window can be found in figure hunk ./doc/tutorial.xml 12 -TFH Berlin +TFH Berlin hunk ./doc/tutorial.xml 225 - caption="A simple polygon."/> + caption="A simple polygon."/> hunk ./doc/tutorial.xml 309 -current HOpenGL library. Go to +current HOpenGL library. Go to hunk ./doc/tutorial.xml 311 -Haskell Compiler (GHC), follow closely the instructions on the +Haskell Compiler (GHC), follow closely the instructions on the hunk ./doc/tutorial.xml 314 -command ./configure --enable-hopengl. This will ensure +command ./configure --enable-hopengl. This will ensure hunk ./doc/tutorial.xml 352 -HOpenGL. +HOpenGL. hunk ./doc/tutorial.xml 359 -for a function operator in Haskell, but denotes an infix +for a function operator in Haskell, but denotes an infix hunk ./doc/tutorial.xml 364 -simply opened a window. +simply opened a window. hunk ./doc/tutorial.xml 380 - createWindow name + createWindow name hunk ./doc/tutorial.xml 386 -One example of the assignment operator we have allready seen. In the +One example of the assignment operator we have already seen. In the hunk ./doc/tutorial.xml 395 -The operator $= is defined in the module
    +The operator $= is defined in the module
    hunk ./doc/tutorial.xml 403 -The variables of HOpenGL, which can be set are of +The variables of HOpenGL, which can be set are of hunk ./doc/tutorial.xml 412 -You might want to retrieve certain values from the state. -This can be done with the function get, which is in +You might want to retrieve certain values from the state. +This can be done with the function get, which is in hunk ./doc/tutorial.xml 440 -type GettableStateVar a. +type GettableStateVar a. hunk ./doc/tutorial.xml 466 - createWindow name + createWindow name hunk ./doc/tutorial.xml 490 - + hunk ./doc/tutorial.xml 507 -get and set statements modify the state but also statements +get and set statements modify the state but also statements hunk ./doc/tutorial.xml 520 - + hunk ./doc/tutorial.xml 534 -There is a window specific variable which stores the function +There is a window specific variable which stores the function hunk ./doc/tutorial.xml 552 -for every pixel on the screen. +for every pixel on the screen. hunk ./doc/tutorial.xml 588 -specified by floating numbers of type GLfloat. Values for +specified by floating numbers of type GLfloat. Values for hunk ./doc/tutorial.xml 594 -possible. +possible. hunk ./doc/tutorial.xml 611 ->vertex$Vertex3 x y z +vertex $ Vertex3 x y z hunk ./doc/tutorial.xml 674 -points. We can simply define a vertex and use this in the -function renderPrimitiv. +points. We can simply define a vertex and use this in the +function renderPrimitive. hunk ./doc/tutorial.xml 680 ->renderPrimitive Points$vertex$Vertex3 (0.1::GLfloat) 0.5 0
    +renderPrimitive Points $ vertex $ Vertex3 (0.1::GLfloat) 0.5 0 hunk ./doc/tutorial.xml 706 -overloaded type classes. Therefore you find the type +overloaded type classes. Therefore you find the type hunk ./doc/tutorial.xml 721 ->do + ]]>do hunk ./doc/tutorial.xml 751 ->map (\(x,y,z)->vertex$Vertex3 x y z)

    and then combining the +>map (\(x,y,z)->vertex $ Vertex3 x y z)

    and then combining the hunk ./doc/tutorial.xml 757 -mapM_ (\(x,y,z) -> vertex$Vertex3 x y z)
    +mapM_ (\(x,y,z) -> vertex $ Vertex3 x y z)
    hunk ./doc/tutorial.xml 762 -Thus we can rewrite a points example in the following way: points are +Thus we can rewrite a points example in the following way: points are hunk ./doc/tutorial.xml 766 -> +/> hunk ./doc/tutorial.xml 938 -one again. +one again. hunk ./doc/tutorial.xml 944 -import Graphics.Rendering.OpenGL hunk ./doc/tutorial.xml 961 -these. As for lines there are three flavours of triangles. +these. As for lines there are three flavours of triangles. hunk ./doc/tutorial.xml 973 -import Graphics.Rendering.OpenGL hunk ./doc/tutorial.xml 993 -import Graphics.Rendering.OpenGL hunk ./doc/tutorial.xml 1006 -drawn starting from the first point. +drawn starting from the first point. hunk ./doc/tutorial.xml 1011 -import Graphics.Rendering.OpenGL hunk ./doc/tutorial.xml 1027 -quads. +quads. hunk ./doc/tutorial.xml 1037 -import Graphics.Rendering.OpenGL hunk ./doc/tutorial.xml 1048 -necessarily plane areas. +necessarily plane areas. hunk ./doc/tutorial.xml 1061 -import Graphics.Rendering.OpenGL hunk ./doc/tutorial.xml 1088 - + hunk ./doc/tutorial.xml 1100 + hunk ./doc/tutorial.xml 1102 -import Graphics.Rendering.OpenGL hunk ./doc/tutorial.xml 1112 -available, which does this for you: the GLU tessellation. +available, which does this for you: the GLU tessellation. hunk ./doc/tutorial.xml 1127 -With a bit mathematics you probably have allready guessed how to do +With a bit mathematics you probably have already guessed how to do hunk ./doc/tutorial.xml 1134 -> +> hunk ./doc/tutorial.xml 1139 -The coordinates of the points on a circle can be determined +The coordinates of the points on a circle can be determined hunk ./doc/tutorial.xml 1150 - [let alpha = 2 * pi * fromIntegral i / fromIntegral number + [let alpha = 2 * pi * fromIntegral i / fromIntegral number hunk ./doc/tutorial.xml 1154 -If we take a large enough number then we will eventually get a circle: +If we take a large enough number then we will eventually get a circle: hunk ./doc/tutorial.xml 1172 -numbers. +numbers. hunk ./doc/tutorial.xml 1177 -import Graphics.Rendering.OpenGL - hunk ./doc/tutorial.xml 1179 - clear [ColorBuffer] - renderCircleApprox 0.8 10 + clear [ColorBuffer] + renderCircleApprox 0.8 10 hunk ./doc/tutorial.xml 1196 -import Graphics.Rendering.OpenGL - hunk ./doc/tutorial.xml 1198 - clear [ColorBuffer] - renderCircle 0.8]]> + clear [ColorBuffer] + renderCircle 0.8]]> hunk ./doc/tutorial.xml 1215 -import Graphics.Rendering.OpenGL - hunk ./doc/tutorial.xml 1216 -main - = renderInWindow $ do - clear [ColorBuffer] - fillCircle 0.8 ]]> +main = renderInWindow $ do + clear [ColorBuffer] + fillCircle 0.8]]> hunk ./doc/tutorial.xml 1240 -import Circle -import Graphics.Rendering.OpenGL]]> +import Circle]]> hunk ./doc/tutorial.xml 1243 -these. The resulting list of points can then be rendered as +these. The resulting list of points can then be rendered as hunk ./doc/tutorial.xml 1249 -ringPoints innerRadius outerRadius +ringPoints innerRadius outerRadius hunk ./doc/tutorial.xml 1259 -ring innerRadius outerRadius +ring innerRadius outerRadius hunk ./doc/tutorial.xml 1268 -import Graphics.Rendering.OpenGL - hunk ./doc/tutorial.xml 1270 - clear [ColorBuffer] - ring 0.7 0.9]]> + clear [ColorBuffer] + ring 0.7 0.9]]> hunk ./doc/tutorial.xml 1286 -(besides the color, which we have allready set). +(besides the color, which we have already set). hunk ./doc/tutorial.xml 1299 -import Graphics.UI.GLUT -import PointsForRendering +import PointsForRendering hunk ./doc/tutorial.xml 1333 -stipple. For some positiv integer n every bit of the +stipple. For some positiv integer n every bit of the hunk ./doc/tutorial.xml 1340 ->import Graphics.UI.GLUT -import PointsForRendering +>import PointsForRendering hunk ./doc/tutorial.xml 1349 - lineStipple $= Just (1,255) + lineStipple $= Just (1,255) hunk ./doc/tutorial.xml 1351 - lineWidth $= 10 + lineWidth $= 10 hunk ./doc/tutorial.xml 1376 -statements that define vertexes by the call of the +statements that define vertexes by the call of the hunk ./doc/tutorial.xml 1378 -in the statements passed to renderPrimitive. +in the statements passed to renderPrimitive. hunk ./doc/tutorial.xml 1386 -defined, the current color is set to a new value. +defined, the current color is set to a new value. hunk ./doc/tutorial.xml 1388 ->import Graphics.UI.GLUT -import PointsForRendering +>import PointsForRendering hunk ./doc/tutorial.xml 1393 - vertex$Vertex3 (-0.5) (-0.5) (0::GLfloat) + vertex $ Vertex3 (-0.5) (-0.5) (0::GLfloat) hunk ./doc/tutorial.xml 1395 - vertex$Vertex3 (0.5) (-0.5) (0::GLfloat) + vertex $ Vertex3 (0.5) (-0.5) (0::GLfloat) hunk ./doc/tutorial.xml 1397 - vertex$Vertex3 (-0.5) (0.5) (0::GLfloat) + vertex $ Vertex3 (-0.5) (0.5) (0::GLfloat) hunk ./doc/tutorial.xml 1423 -by a set of simpler polygons. +by a set of simpler polygons. hunk ./doc/tutorial.xml 1426 -functions, which calculate a set of simpler polygons. +functions, which calculate a set of simpler polygons. hunk ./doc/tutorial.xml 1442 -with odd index followed by the points with even index. +with odd index followed by the points with even index. hunk ./doc/tutorial.xml 1473 - tessellate + tessellate hunk ./doc/tutorial.xml 1485 - + hunk ./doc/tutorial.xml 1489 - mapM_ (vertex . stripAnnotation) vertices + mapM_ (vertex . stripAnnotation) vertices hunk ./doc/tutorial.xml 1500 -import Graphics.UI.GLUT hunk ./doc/tutorial.xml 1533 ->import Graphics.UI.GLUT -import Graphics.Rendering.OpenGL - -import PointsForRendering +>import PointsForRendering hunk ./doc/tutorial.xml 1565 -rendered. +rendered. hunk ./doc/tutorial.xml 1571 -operations. +operations. hunk ./doc/tutorial.xml 1584 -have the center coordinates (0,0,0). If we want to place +have the center coordinates (0,0,0). If we want to place hunk ./doc/tutorial.xml 1588 -import Ring -import Graphics.UI.GLUT +import Ring hunk ./doc/tutorial.xml 1591 -position. Therefore we first set the transformation to the +position. Therefore we first set the transformation to the hunk ./doc/tutorial.xml 1595 ->ringAt x y innerRadius outerRadius = do - translate$Vector3 x y (0::GLfloat) +>ringAt :: GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO () +ringAt x y innerRadius outerRadius = do + translate $ Vector3 x y 0 hunk ./doc/tutorial.xml 1600 -screen. +screen. hunk ./doc/tutorial.xml 1603 -main = do - renderInWindow someRings +main = renderInWindow someRings hunk ./doc/tutorial.xml 1653 - -import Graphics.Rendering.OpenGL hunk ./doc/tutorial.xml 1655 - GLfloat -> IO () +myRect width height = hunk ./doc/tutorial.xml 1658 - where - w = width/2 - h = height/2]]> -A square is just a special case: + where w = width / 2 + h = height / 2]]> +A square is just a special case: hunk ./doc/tutorial.xml 1662 -> +> IO () +square width = myRect width width]]> hunk ./doc/tutorial.xml 1667 - - hunk ./doc/tutorial.xml 1669 -import Squares -import Graphics.Rendering.OpenGL +import Squares hunk ./doc/tutorial.xml 1671 -square. It is rotated around the z-axis. +square. It is rotated around the z-axis. + hunk ./doc/tutorial.xml 1674 ->rotatedSquare alpha width = do - rotate alpha $Vector3 0 0 (1::GLfloat) +>rotatedSquare :: GLfloat -> GLfloat -> IO () +rotatedSquare alpha width = do + rotate alpha $ Vector3 0 0 1 hunk ./doc/tutorial.xml 1678 + hunk ./doc/tutorial.xml 1681 + hunk ./doc/tutorial.xml 1683 ->displayAt x y displayMe = do - translate$Vector3 x y (0::GLfloat) +>displayAt :: GLfloat -> GLfloat -> IO () -> IO () +displayAt x y displayMe = do + translate $ Vector3 x y 0 hunk ./doc/tutorial.xml 1688 + hunk ./doc/tutorial.xml 1690 + hunk ./doc/tutorial.xml 1693 -main = do - renderInWindow someSquares +main = renderInWindow someSquares hunk ./doc/tutorial.xml 1695 +someSquares :: DisplayCallback hunk ./doc/tutorial.xml 1726 -which represent the scaling factors in the three dimensional space. +which represent the scaling factors in the three dimensional space. hunk ./doc/tutorial.xml 1732 -transformation. +transformation. hunk ./doc/tutorial.xml 1734 ->import Graphics.UI.GLUT -import Graphics.Rendering.OpenGL - -import PointsForRendering +>import PointsForRendering hunk ./doc/tutorial.xml 1743 - translate$Vector3 (-0.3) 0.3 (0::GLfloat) - rotate 30 $Vector3 0 1 (0::GLfloat) - renderObject Solid$ Teapot 0.6 + translate $ Vector3 (-0.3) 0.3 (0::GLfloat) + rotate 30 $ Vector3 0 1 (0::GLfloat) + renderObject Solid $ Teapot 0.6 hunk ./doc/tutorial.xml 1749 -. As you see it looks now like a coffee pot. +. As you see it looks now like a coffee pot. hunk ./doc/tutorial.xml 1772 - translate$Vector3 x w y - rotate alpha $Vector3 0 0 (1::GLfloat) + translate $ Vector3 x w y + rotate alpha $ Vector3 0 0 (1::GLfloat) hunk ./doc/tutorial.xml 1780 -function (f . g) is the same as first applying +function (f . g) is the same as first applying hunk ./doc/tutorial.xml 1783 -translate$Vector3 x w y -rotate alpha $Vector3 0 0 (1::GLfloat) +translate $ Vector3 x w y +rotate alpha $ Vector3 0 0 (1::GLfloat) hunk ./doc/tutorial.xml 1789 -translation after a rotation. +translation after a rotation. hunk ./doc/tutorial.xml 1793 -translation. +translation. hunk ./doc/tutorial.xml 1797 -import Graphics.Rendering.OpenGL - -displayAt x y displayMe = do - displayMe - loadIdentity hunk ./doc/tutorial.xml 1799 -main = do - renderInWindow someSquares +main = renderInWindow someSquares hunk ./doc/tutorial.xml 1801 +someSquares :: DisplayCallback hunk ./doc/tutorial.xml 1813 - translate$Vector3 0.5 0.5 (0::GLfloat) + translate $ Vector3 0.5 0.5 (0::GLfloat) hunk ./doc/tutorial.xml 1819 - rotate 35 $Vector3 0 0 (1::GLfloat) + rotate 35 $ Vector3 0 0 (1::GLfloat) hunk ./doc/tutorial.xml 1825 - translate$Vector3 0.5 0.5 (0::GLfloat) - rotate 35 $Vector3 0 0 (1::GLfloat) + translate $ Vector3 0.5 0.5 (0::GLfloat) + rotate 35 $ Vector3 0 0 (1::GLfloat) hunk ./doc/tutorial.xml 1832 - rotate 35 $Vector3 0 0 (1::GLfloat) - translate$Vector3 0.5 0.5 (0::GLfloat) + rotate 35 $ Vector3 0 0 (1::GLfloat) + translate $ Vector3 0.5 0.5 (0::GLfloat) hunk ./doc/tutorial.xml 1842 -/> +/> hunk ./doc/tutorial.xml 1864 -Internally every vertex in OpenGL is not represented by 3 -coordinates (x,y,z) but by four +Internally every vertex in OpenGL is not represented by 3 +coordinates (x,y,z) but by four hunk ./doc/tutorial.xml 1867 -are devided by w. Usually the value +are devided by w. Usually the value hunk ./doc/tutorial.xml 1905 -transformation shear. Mathematical textbooks +transformation shear. Mathematical textbooks hunk ./doc/tutorial.xml 1912 -A transformation in which all points along a given -line L remain fixed while other points are shifted -parallel to L by a distance proportional to their -perpendicular distance from L. +A transformation in which all points along a given +line L remain fixed while other points are shifted +parallel to L by a distance proportional to their +perpendicular distance from L. hunk ./doc/tutorial.xml 1921 ->y and z coordinates unchanged, and adds to -the x coordinate some value depending on the value -of y. For some f we need the following +>y and z coordinates unchanged, and adds to +the x coordinate some value depending on the value +of y. For some f we need the following hunk ./doc/tutorial.xml 1953 - m <- newMatrix RowMajor [1,f,0,0 + m <- newMatrix RowMajor [1,f,0,0 hunk ./doc/tutorial.xml 1955 - ,0,0,1,0 + ,0,0,1,0 hunk ./doc/tutorial.xml 1966 -import Graphics.UI.GLUT - hunk ./doc/tutorial.xml 1971 - translate$Vector3 0.5 0.5 (0::GLfloat) + translate $ Vector3 0.5 0.5 (0::GLfloat) hunk ./doc/tutorial.xml 1977 - translate$Vector3 (-0.5) (-0.5) (0::GLfloat) + translate $ Vector3 (-0.5) (-0.5) (0::GLfloat) hunk ./doc/tutorial.xml 1988 -/> +/> hunk ./doc/tutorial.xml 2008 ->import Graphics.UI.GLUT - -import PointsForRendering +>import PointsForRendering hunk ./doc/tutorial.xml 2017 - translate$Vector3 (-0.1) 0.1 (0::GLfloat) + translate $ Vector3 (-0.1) 0.1 (0::GLfloat) hunk ./doc/tutorial.xml 2028 -it is called, or even better let the display functions +it is called, or even better let the display functions hunk ./doc/tutorial.xml 2035 -to add some +to add some hunk ./doc/tutorial.xml 2037 -transformation context. In such situations you cannot use +transformation context. In such situations you cannot use hunk ./doc/tutorial.xml 2045 -transformations are technically implemented as +transformations are technically implemented as hunk ./doc/tutorial.xml 2060 -position. This movement is done within +position. This movement is done within hunk ./doc/tutorial.xml 2068 -at the origin and then moved to its final position: +at the origin and then moved to its final position: hunk ./doc/tutorial.xml 2076 - translate $Vector3 0 hh (0::GLfloat) + translate $ Vector3 0 hh (0::GLfloat) hunk ./doc/tutorial.xml 2079 - translate $Vector3 0 (-hh) (0::GLfloat) + translate $ Vector3 0 (-hh) (0::GLfloat) hunk ./doc/tutorial.xml 2082 - translate $Vector3 (-wh) 0 (0::GLfloat) - myRect border height + translate $ Vector3 (-wh) 0 (0::GLfloat) + myRect border height hunk ./doc/tutorial.xml 2085 - translate $Vector3 wh 0 (0::GLfloat) + translate $ Vector3 wh 0 (0::GLfloat) hunk ./doc/tutorial.xml 2088 - colored square: + colored square: hunk ./doc/tutorial.xml 2106 -areaFields width = +areaFields width = hunk ./doc/tutorial.xml 2108 - where + where hunk ./doc/tutorial.xml 2113 - translate $Vector3 x y 0 + translate $ Vector3 x y 0 hunk ./doc/tutorial.xml 2127 -import Graphics.Rendering.OpenGL - -import PointsForRendering hunk ./doc/tutorial.xml 2140 - translate $Vector3 (-0.6) 0.4 (0::GLfloat) + translate $ Vector3 (-0.6) 0.4 (0::GLfloat) hunk ./doc/tutorial.xml 2144 - translate $Vector3 (0.1) (-0.3) (0::GLfloat) + translate $ Vector3 (0.1) (-0.3) (0::GLfloat) hunk ./doc/tutorial.xml 2158 -/> +/> hunk ./doc/tutorial.xml 2176 -just called, when someone resizes the window. The first time the +just called, when someone resizes the window. The first time the hunk ./doc/tutorial.xml 2180 -data type Maybe. +data type Maybe. hunk ./doc/tutorial.xml 2184 -function, which does not specify anything, how to render the picture. -import Graphics.UI.GLUT -import Graphics.Rendering.OpenGL - -import PointsForRendering +function, which does not specify anything, how to render the picture. +import PointsForRendering hunk ./doc/tutorial.xml 2199 - where - points + where + points hunk ./doc/tutorial.xml 2229 -of the screen to be used for rendering in pixels. +of the screen to be used for rendering in pixels. hunk ./doc/tutorial.xml 2235 -import Graphics.UI.GLUT -import Graphics.Rendering.OpenGL - -import PointsForRendering +import PointsForRendering hunk ./doc/tutorial.xml 2249 - where - points + where + points hunk ./doc/tutorial.xml 2267 -import Graphics.UI.GLUT -import Graphics.Rendering.OpenGL - -import PointsForRendering +import PointsForRendering hunk ./doc/tutorial.xml 2280 - clearColor $= Color4 1 1 1 1 + clearColor $= Color4 1 1 1 1 hunk ./doc/tutorial.xml 2298 -/> +/> hunk ./doc/tutorial.xml 2316 ->ortho and afterwards to reset the variable back to the +>ortho and afterwards to reset the variable back to the hunk ./doc/tutorial.xml 2331 - displayCallback $= display + displayCallback $= display hunk ./doc/tutorial.xml 2335 - displayCallback $= display + displayCallback $= display hunk ./doc/tutorial.xml 2340 -projection xl xu yl yu zl zu = do +projection xl xu yl yu zl zu = do hunk ./doc/tutorial.xml 2360 -/> +/> hunk ./doc/tutorial.xml 2366 -projection. +projection. hunk ./doc/tutorial.xml 2385 -your state might be changed. +your state might be changed. hunk ./doc/tutorial.xml 2443 -position. +position. hunk ./doc/tutorial.xml 2460 -import Graphics.UI.GLUT +import Graphics.UI.GLUT hunk ./doc/tutorial.xml 2496 ->idle radius step = do +>idle radius step = do hunk ./doc/tutorial.xml 2565 - if r>=1 then step $= (-_STEP) + if r>=1 then step $= (-_STEP) hunk ./doc/tutorial.xml 2579 -screen will be completely black. This is what makes this flickering +screen will be completely black. This is what makes this flickering hunk ./doc/tutorial.xml 2597 -buffering. -import Ring +buffering. +import Ring hunk ./doc/tutorial.xml 2603 -import Graphics.UI.GLUT hunk ./doc/tutorial.xml 2625 -idle radius step = do +idle radius step = do hunk ./doc/tutorial.xml 2628 - if r>=1 then step $= (-_STEP) + if r>=1 then step $= (-_STEP) hunk ./doc/tutorial.xml 2655 -/> +/> hunk ./doc/tutorial.xml 2658 ->=yl - && y <=yl+paddleHeight - = -xDir + | x-ballRadius <= xl+paddleWidth + && y+ballRadius >=yl + && y <=yl+paddleHeight + = -xDir hunk ./doc/tutorial.xml 2797 - && y+ballRadius >=yr - && y <=yr+paddleHeight - = -xDir + && y+ballRadius >=yr + && y <=yr+paddleHeight + = -xDir hunk ./doc/tutorial.xml 2803 - |y > _TOP-ballRadius || y< _BOTTOM+ballRadius = -yDir + |y > _TOP-ballRadius || y< _BOTTOM+ballRadius = -yDir hunk ./doc/tutorial.xml 2805 - |otherwise = yDir + |otherwise = yDir hunk ./doc/tutorial.xml 2826 -keyboard game (Char 'a') upDown _ _ = do +keyboard game (Char 'a') upDown _ _ = do hunk ./doc/tutorial.xml 2830 -keyboard game (Char 'l') upDown _ _ = do +keyboard game (Char 'l') upDown _ _ = do hunk ./doc/tutorial.xml 2834 -keyboard game (Char '\32') Down _ _ = do +keyboard game (Char '\32') Down _ _ = do hunk ./doc/tutorial.xml 2837 - let xDir + let xDir hunk ./doc/tutorial.xml 2882 -hidden by areas closer to the viewer. +hidden by areas closer to the viewer. hunk ./doc/tutorial.xml 2913 -However as can be seen in figure , +However as can be seen in figure , hunk ./doc/tutorial.xml 2927 -depth of a shape. This simply needs to be activated. +depth of a shape. This simply needs to be activated. hunk ./doc/tutorial.xml 2975 -Now as can be seen in figure , the +Now as can be seen in figure , the hunk ./doc/tutorial.xml 2993 -objects farer away have the same size as object close to the viewer. +objects farer away have the same size as object close to the viewer. hunk ./doc/tutorial.xml 3011 - matrixMode $= Projection + matrixMode $= Projection hunk ./doc/tutorial.xml 3033 -As can be seen in figure , the +As can be seen in figure , the hunk ./doc/tutorial.xml 3077 - matrixMode $= Projection + matrixMode $= Projection hunk ./doc/tutorial.xml 3104 -Now, as can be seen in figure , the +Now, as can be seen in figure , the hunk ./doc/tutorial.xml 3113 -HopenGL provides a second function to define a perspective +HopenGL provides a second function to define a perspective hunk ./doc/tutorial.xml 3133 -function lookAt. It has three arguments: +function lookAt. It has three arguments: hunk ./doc/tutorial.xml 3144 -the viewer to move along a sphere. The +the viewer to move along a sphere. The hunk ./doc/tutorial.xml 3161 - (x2,y2,z2) = calculatePointOfView ((alpha+90)`mod` 360) beta r + (x2,y2,z2) = calculatePointOfView ((alpha+90)`mod` 360) beta r hunk ./doc/tutorial.xml 3164 -calculatePointOfView alp bet r = +calculatePointOfView alp bet r = hunk ./doc/tutorial.xml 3183 - pPos $= (ffst alpha `mod` 360,fsnd beta `mod` 360,ftrd r) + pPos $= (ffst alpha `mod` 360,fsnd beta `mod` 360,ftrd r) hunk ./doc/tutorial.xml 3188 - matrixMode $= Projection + matrixMode $= Projection hunk ./doc/tutorial.xml 3219 - translate$Vector3 0 0 (-n/2) + translate $ Vector3 0 0 (-n/2) hunk ./doc/tutorial.xml 3223 - translate$Vector3 0 0 (n/2) + translate $ Vector3 0 0 (n/2) hunk ./doc/tutorial.xml 3227 - translate$Vector3 (n/2) 0 0 - rotate 90 $Vector3 0 (1::GLfloat) 0 + translate $ Vector3 (n/2) 0 0 + rotate 90 $ Vector3 0 (1::GLfloat) 0 hunk ./doc/tutorial.xml 3232 - translate$Vector3 (-n/2) 0 0 - rotate 90 $Vector3 0 (1::GLfloat) 0 + translate $ Vector3 (-n/2) 0 0 + rotate 90 $ Vector3 0 (1::GLfloat) 0 hunk ./doc/tutorial.xml 3237 - translate$Vector3 0 (-n/2) 0 - rotate 90 $Vector3 (1::GLfloat) 0 0 + translate $ Vector3 0 (-n/2) 0 + rotate 90 $ Vector3 (1::GLfloat) 0 0 hunk ./doc/tutorial.xml 3242 - translate$Vector3 0 (n/2) 0 - rotate 90 $Vector3 (1::GLfloat) 0 0 + translate $ Vector3 0 (n/2) 0 + rotate 90 $ Vector3 (1::GLfloat) 0 0 hunk ./doc/tutorial.xml 3252 -import OrbitPointOfView +import OrbitPointOfView hunk ./doc/tutorial.xml 3271 -cube: +cube: hunk ./doc/tutorial.xml 3281 -As keyboard function we map directly to the function defined +As keyboard function we map directly to the function defined hunk ./doc/tutorial.xml 3293 -/> +/> hunk ./doc/tutorial.xml 3300 -In this section we implement a primitive version of Rubik's cube. +In this section we implement a primitive version of Rubik's cube. hunk ./doc/tutorial.xml 3308 -/> +/> hunk ./doc/tutorial.xml 3319 ->module RubikLogic where +>module RubikLogic where hunk ./doc/tutorial.xml 3342 - fmap f (Rubik front top back bottom left right) - = Rubik (mf front) (mf top) (mf back) + fmap f (Rubik front top back bottom left right) + = Rubik (mf front) (mf top) (mf back) hunk ./doc/tutorial.xml 3358 ->rotateArea RubikLogic.Front - (Rubik front top back bottom left right) = +>rotateArea RubikLogic.Front + (Rubik front top back bottom left right) = hunk ./doc/tutorial.xml 3361 - where - top' = newRow 3 (reverse$column 3 left) top - bottom' = newRow 1 (reverse$column 1 right) bottom + where + top' = newRow 3 (reverse$column 3 left) top + bottom' = newRow 1 (reverse$column 1 right) bottom hunk ./doc/tutorial.xml 3369 - (Rubik front top back bottom left right) = - Rubik front' top' back' bottom' + (Rubik front top back bottom left right) = + Rubik front' top' back' bottom' hunk ./doc/tutorial.xml 3374 - rotateArea RubikLogic.Front - (Rubik back bottom front top + rotateArea RubikLogic.Front + (Rubik back bottom front top hunk ./doc/tutorial.xml 3379 - (Rubik front top back bottom left right) = + (Rubik front top back bottom left right) = hunk ./doc/tutorial.xml 3381 - where - back' = newRow 1 (reverse$row 3 left) back - front' = newRow 3 (row 3 right) front + where + back' = newRow 1 (reverse$row 3 left) back + front' = newRow 3 (row 3 right) front hunk ./doc/tutorial.xml 3390 - (Rubik front top back bottom left right) = + (Rubik front top back bottom left right) = hunk ./doc/tutorial.xml 3392 - where - back' = newRow 3 (reverse$row 1 right) back - front' = newRow 1 (row 1 left) front + where + back' = newRow 3 (reverse$row 1 right) back + front' = newRow 1 (row 1 left) front hunk ./doc/tutorial.xml 3399 -rotateArea RubikLogic.Left - (Rubik front top back bottom left right) = +rotateArea RubikLogic.Left + (Rubik front top back bottom left right) = hunk ./doc/tutorial.xml 3402 - where - top' = newColumn 1 (column 1 front) top - bottom' = newColumn 1 (column 1 back) bottom + where + top' = newColumn 1 (column 1 front) top + bottom' = newColumn 1 (column 1 back) bottom hunk ./doc/tutorial.xml 3406 - back' = newColumn 1 (column 1 top) back - front' = newColumn 1 (column 1 bottom) front + back' = newColumn 1 (column 1 top) back + front' = newColumn 1 (column 1 bottom) front hunk ./doc/tutorial.xml 3409 -rotateArea RubikLogic.Right - (Rubik front top back bottom left right) = +rotateArea RubikLogic.Right + (Rubik front top back bottom left right) = hunk ./doc/tutorial.xml 3412 - where - top' = newColumn 3 (column 3 back) top - bottom' = newColumn 3 (column 3 front) bottom + where + top' = newColumn 3 (column 3 back) top + bottom' = newColumn 3 (column 3 front) bottom hunk ./doc/tutorial.xml 3416 - back' = newColumn 3 (column 3 bottom) back - front' = newColumn 3 (column 3 top) front + back' = newColumn 3 (column 3 bottom) back + front' = newColumn 3 (column 3 top) front hunk ./doc/tutorial.xml 3430 -Finally some useful functions for manipulation of an area are given. +Finally some useful functions for manipulation of an area are given. hunk ./doc/tutorial.xml 3440 - + hunk ./doc/tutorial.xml 3444 - doIt 1 ((r:ow),c) = c:ow - doIt 2 ((r:o:w),c) = r:c:w + doIt 1 ((r:ow),c) = c:ow + doIt 2 ((r:o:w),c) = r:c:w hunk ./doc/tutorial.xml 3452 -coordinate system. In an earlier section we allready provided a +coordinate system. In an earlier section we already provided a hunk ./doc/tutorial.xml 3456 - +/> hunk ./doc/tutorial.xml 3764 -state variable lighting to the value Enabled. Then +state variable lighting to the value Enabled. Then hunk ./doc/tutorial.xml 3767 -e.g. by
    +e.g. by
    hunk ./doc/tutorial.xml 3779 -main = do +main = do hunk ./doc/tutorial.xml 3796 - rotate 40 (Vector3 1 1 (1::GLfloat)) + rotate 40 (Vector3 1 1 (1::GLfloat)) hunk ./doc/tutorial.xml 3807 -/> +/> hunk ./doc/tutorial.xml 3822 -from the OpenGL +from the OpenGL hunk ./doc/tutorial.xml 3832 -import OrbitPointOfView +import OrbitPointOfView hunk ./doc/tutorial.xml 3855 - reshapeCallback $= Just reshape + reshapeCallback $= Just reshape hunk ./doc/tutorial.xml 3877 -scaled sphere. +scaled sphere. hunk ./doc/tutorial.xml 3898 -rota a x y z = rotate a (Vector3 x y z) +rota a x y z = rotate a (Vector3 x y z) hunk ./doc/tutorial.xml 3933 - preservingMatrix$do + preservingMatrix $ do hunk ./doc/tutorial.xml 3936 - preservingMatrix$do + preservingMatrix $ do hunk ./doc/tutorial.xml 3946 -/> +/> hunk ./doc/tutorial.xml 3953 -> +/> hunk ./doc/tutorial.xml 3976 -> +/> hunk ./doc/tutorial.xml 4193 -We can use all the parts to define Tux. +We can use all the parts to define Tux. hunk ./doc/tutorial.xml 4196 -> +/> hunk ./doc/tutorial.xml 4223 - - + + hunk ./doc/tutorial.xml 278 -ComplexPolygon, which has a list of -ComplexContours. A ComplexContour contains a list of -AnnotatedVertexes. The annotation can be used for color or similar -information, but we do not make use of this annotation and simple annotate every -vertex with 0. +For tessellation we need to create a ComplexPolygon, which consists of +a list of ComplexContours and a ComplexContour consists of a +list of AnnotatedVertexes. The annotation can be used for color or +similar information, but we do not make use of this annotation and simple +annotate every vertex with 0. hunk ./doc/tutorial.xml 1466 -The function tesselate creates a list of simple polygons. It needs some -control information, which we do not explain here. +The function tessellate creates a list of simple polygons. It needs +some control information, which we do not explain here. hunk ./doc/tutorial.xml 2065 - hunk ./doc/tutorial.xml 2066 + hunk ./doc/tutorial.xml 2070 -> GLfloat -> GLfloat -> IO () +frame width height border = do + let bh = border / 2 + let wh = width / 2 - bh + let hh = height / 2 - bh hunk ./doc/tutorial.xml 2077 - translate $ Vector3 0 hh (0::GLfloat) + translate $ Vector3 0 hh 0 hunk ./doc/tutorial.xml 2080 - translate $ Vector3 0 (-hh) (0::GLfloat) + translate $ Vector3 0 (-hh) 0 hunk ./doc/tutorial.xml 2083 - translate $ Vector3 (-wh) 0 (0::GLfloat) - myRect border height + translate $ Vector3 (-wh) 0 0 + myRect border height hunk ./doc/tutorial.xml 2086 - translate $ Vector3 wh 0 (0::GLfloat) - myRect border height ]]> -Each of the nine fields is rendered by drawing its frame and its - colored square: + translate $ Vector3 wh 0 0 + myRect border height]]>
    + +Each of the nine fields is rendered by drawing its frame and its colored square: + hunk ./doc/tutorial.xml 2092 -> Color4 GLfloat -> IO () +originField width col = do + let frameWidth = width / 10 hunk ./doc/tutorial.xml 2097 - let sc = 18/20::GLfloat - currentColor $= color - square (width-frameWidth)]]>
    - Eventually the side of Rubik's Cube can be drawn + currentColor $= col + square (width - frameWidth)]]>
    + +Eventually the side of Rubik's Cube can be drawn: + hunk ./doc/tutorial.xml 2104 -renderArea width css - = do - let cs = concat css - cps = zip cs $ areaFields width - mapM_ (\(c,f)-> f(originField width c)) cps +renderArea width css = do + let cs = concat css + cps = zip cs $ areaFields width + mapM_ (\(c,f) -> f (originField width c)) cps hunk ./doc/tutorial.xml 2109 +areaFields :: GLfloat -> [IO () -> IO ()] hunk ./doc/tutorial.xml 2111 - [makeSquare x y |x<-[1,0,-1],y<-[1,0,-1]] - where - makeSquare xn yn = \f -> preservingMatrix $ do - let - x = xn*width - y = yn*width - translate $ Vector3 x y 0 - f - -red = Color4 1 0 0 (1::GLfloat) -green = Color4 0 1 0 (1::GLfloat) -blue = Color4 0 0 1 (1::GLfloat) -yellow = Color4 1 1 0 (1::GLfloat) -white = Color4 1 1 1 (1::GLfloat) -black = Color4 0 0 0 (1::GLfloat)]]>
    + [makeSquare x y | x<-[1,0,-1], y<-[1,0,-1]] + where makeSquare xn yn = \f -> preservingMatrix $ do + let x = xn * width + y = yn * width + translate $ Vector3 x y 0 + f +red, green, blue, yellow, white, black :: Color4 GLfloat +red = Color4 1 0 0 1 +green = Color4 0 1 0 1 +blue = Color4 0 0 1 1 +yellow = Color4 1 1 0 1 +white = Color4 1 1 1 1 +black = Color4 0 0 0 1]]>
    hunk ./doc/tutorial.xml 2137 +faces :: DisplayCallback hunk ./doc/tutorial.xml 2143 - translate $ Vector3 (-0.6) 0.4 (0::GLfloat) + translate $ Vector3 (-0.6) 0.4 (0::GLfloat) hunk ./doc/tutorial.xml 2152 -r1=[[red,blue,yellow],[white,green,red],[green,yellow,blue]]
    +r1 :: [[Color4 GLfloat]] +r1 = [[red,blue,yellow],[white,green,red],[green,yellow,blue]]
    hunk ./doc/tutorial.xml 2189 -import PointsForRendering +reshapeCallback $= Just reshape + ]]>reshapeCallback $= Just reshape hunk ./doc/tutorial.xml 2212 -reshape s = return () -Run this example. You will see a white square in the middle of a black -screen. Now resize the window. You will notice that the size of the -square will not change. If you make the window smaller parts of the -picture are not displayed, if you enlarge the window parts of the -window contain no image (which means it might be some arbitrary -image). Figure - shows how the window looks after enlarging -it a bit. +When you run this example, you will see a white square in the middle of a black +screen. Now resize the window, and you will notice that the size of the square +will not change. If you make the window smaller, parts of the picture are not +displayed, if you enlarge the window, parts of the window contain no image +(which means it might be some arbitrary image). Figure shows how the window looks after enlarging it a bit. hunk ./doc/tutorial.xml 2238 -import PointsForRendering +reshapeCallback $= Just reshape + ]]>reshapeCallback $= Just reshapeviewport $= (Position 0 0, s) hunk ./doc/tutorial.xml 2261 -reshape s@(Size w h) = do - viewport $= (Position 0 0, s) - hunk ./doc/tutorial.xml 2291 -reshape s@(Size w h) = do +reshape :: ReshapeCallback +reshape (Size w h) = do hunk ./doc/tutorial.xml 2343 +projection :: GLdouble -> GLdouble -> GLdouble + -> GLdouble -> GLdouble -> GLdouble -> IO () hunk ./doc/tutorial.xml 2404 - -If you think these names a bit too technical, then you might use the -following module, which makes IORef variables instances of -the type classes HasGetter and HasSetter. Thus we -can use our own state variables in the same way, we use the HOpenGL -state variables. - -module StateUtil where -import Data.IORef -new = newIORef hunk ./doc/tutorial.xml 2406 - hunk ./doc/tutorial.xml 2452 - radius <- new 0.1 +> radius <- newIORef 0.1
    hunk ./doc/tutorial.xml 2481 ->display radius = do +>display :: IORef GLfloat -> DisplayCallback +display radius = do hunk ./doc/tutorial.xml 2491 -> KeyboardMouseCallback +keyboard radius (Char '+') Down _ _ = do hunk ./doc/tutorial.xml 2525 - hunk ./doc/tutorial.xml 2529 -import Graphics.UI.GLUT]]>
    hunk ./doc/tutorial.xml 2532 -> DisplayCallback +display radius = do hunk ./doc/tutorial.xml 2558 -The idle function changes the value of the variable radius depending on the second state variable step. + +The idle function changes the value of the variable radius depending +on the second state variable step. hunk ./doc/tutorial.xml 2563 ->idle radius step = do +>idle :: IORef GLfloat -> IORef GLfloat -> IdleCallback +idle radius step = do hunk ./doc/tutorial.xml 2566 - s <- get step hunk ./doc/tutorial.xml 2599 -import Ring +import Data.IORef +import Ring hunk ./doc/tutorial.xml 2602 -import StateUtil - -import Data.IORef hunk ./doc/tutorial.xml 2603 +_STEP :: GLfloat hunk ./doc/tutorial.xml 2611 - radius <- new 0.1 - step <- new _STEP + radius <- newIORef 0.1 + step <- newIORef _STEP hunk ./doc/tutorial.xml 2627 - s <- get step hunk ./doc/tutorial.xml 2643 -By now you have seen a lot of tiny examples. It is time to draw the -techniques together and do an application with HOpenGL. In this -section we will implement one of the first animated computer games -ever: Pong. It consists of a small white circle which moves -over a black screen and two paddles which can move on a vertical line. +By now you have seen a lot of tiny examples. It is time to draw the techniques +together and do an application with HOpenGL. In this section we will implement +one of the first animated computer games ever: Pong. It consists of a +small white circle which moves over a black screen and two paddles which can +move on a vertical line. hunk ./doc/tutorial.xml 2649 -Pong in action can be found in figure -. +Pong in action can be found in figure . hunk ./doc/tutorial.xml 2656 -> +import Circle +import Squares]]> + +First of all we define some constant values for the game: x-, y-coordinates of +the game, width and height of a paddle, the radius of the ball, initial factor, +how a ball and a paddle changes its position, and an initial board size. hunk ./doc/tutorial.xml 2665 -First of all we define some constant values for the game: -x-, y-coordinates of the game, width and height of a paddle, the -radius of the ball, initial factor, how a ball and a paddle changes -its position, and an initial board size. hunk ./doc/tutorial.xml 2666 -> +> hunk ./doc/tutorial.xml 2691 -The paddles, which are characterized by their position and the -position change on the y-axis (x-axis is fixed for a paddle). +The paddles, which are characterized by their position and the position change +on the y-axis (x-axis is fixed for a paddle). hunk ./doc/tutorial.xml 2697 -Additionally a game has points for the left and the right player and a -factor which denotes how fast ball and paddles move: +Additionally a game has points for the left and the right player and a factor +which denotes how fast ball and paddles move: hunk ./doc/tutorial.xml 2705 - , moveFactor::GLfloat} -]]> + , moveFactor::GLfloat}]]> hunk ./doc/tutorial.xml 2710 -> DisplayCallback +display game = do hunk ./doc/tutorial.xml 2747 - let (Ball pos xDir yDir) = ball g - --a ball is a circle + let (Ball pos _xDir _yDir) = ball g + -- a ball is a circle hunk ./doc/tutorial.xml 2750 - displayPaddle$leftP g - displayPaddle$rightP g + displayPaddle $ leftP g + displayPaddle $ rightP g hunk ./doc/tutorial.xml 2757 -> IO () +displayPaddle (x,y,_) = preservingMatrix $ do hunk ./doc/tutorial.xml 2760 - displayAt (x,y)$myRect paddleWidth paddleHeight]]> + displayAt (x,y) $ myRect paddleWidth paddleHeight]]> hunk ./doc/tutorial.xml 2763 + hunk ./doc/tutorial.xml 2765 -> IO () -> IO () +displayAt (x, y) displayMe = preservingMatrix $ do + translate $ Vector3 x y 0 hunk ./doc/tutorial.xml 2770 -Within the idle function ball and paddles need to be set to their next -position on the field: - +Within the idle function ball and paddles need to be set to their next position +on the field: hunk ./doc/tutorial.xml 2774 -> IdleCallback +idle game = do hunk ./doc/tutorial.xml 2790 -> Ball +moveBall g hunk ./doc/tutorial.xml 2813 - (xr,yr,_) = rightP g -]]> + (xr,yr,_) = rightP g]]> hunk ./doc/tutorial.xml 2819 -> GLfloat -> Paddle +movePaddle (x,y,dir) factor = hunk ./doc/tutorial.xml 2829 -> KeyboardMouseCallback hunk ./doc/tutorial.xml 2840 - let Ball (x,y) xD yD = ball g + let Ball (x,y) xD _yD = ball g hunk ./doc/tutorial.xml 2850 +paddleDir :: KeyState -> GLfloat hunk ./doc/tutorial.xml 2858 -> ReshapeCallback +reshape game s@(Size w _) = do hunk ./doc/tutorial.xml 2907 +display :: DisplayCallback hunk ./doc/tutorial.xml 2952 - hunk ./doc/tutorial.xml 3006 - hunk ./doc/tutorial.xml 3159 - +import Data.IORef hunk ./doc/tutorial.xml 3162 +setPointOfView :: IORef (Int,Int,GLdouble) -> IO () hunk ./doc/tutorial.xml 3170 -calculatePointOfView alp bet r = - let alpha = fromIntegral alp*2*pi/fromIntegral 360 - beta = fromIntegral bet*2*pi/fromIntegral 360 +calculatePointOfView :: Int -> Int -> GLdouble -> (GLdouble,GLdouble,GLdouble) +calculatePointOfView alp bet r = + let alpha = fromIntegral alp * 2 * pi / 360 + beta = fromIntegral bet * 2 * pi / 360 hunk ./doc/tutorial.xml 3180 +keyForPos :: IORef (Int,Int,GLdouble) -> Key -> IO () hunk ./doc/tutorial.xml 3189 +modPos :: IORef (Int,Int,GLdouble) -> (Int -> Int, Int -> Int, GLdouble -> GLdouble) -> IO () hunk ./doc/tutorial.xml 3195 -reshape screenSize@(Size w h) = do - viewport $= ((Position 0 0), screenSize) +reshape :: ReshapeCallback +reshape s@(Size w h) = do + viewport $= (Position 0 0, s) hunk ./doc/tutorial.xml 3211 -Let us use the module above, to orbit around a cube. Therefore we -a define simple module, which renders a cube with differently colored -areas. The cube is situated at the origin. -We render the six areas by rendering a square at the origin and -translate and rotate it into its final position. - +Let us use the module above, to orbit around a cube. Therefore we a define +simple module, which renders a cube with differently colored areas. The cube is +situated at the origin. We render the six areas by rendering a square at the +origin and translate and rotate it into its final position. hunk ./doc/tutorial.xml 3217 - hunk ./doc/tutorial.xml 3218 - hunk ./doc/tutorial.xml 3220 -locally = preservingMatrix - +colorCube :: GLfloat -> IO () hunk ./doc/tutorial.xml 3222 - locally $ do + preservingMatrix $ do hunk ./doc/tutorial.xml 3226 - locally $ do + preservingMatrix $ do hunk ./doc/tutorial.xml 3230 - locally $ do + preservingMatrix $ do hunk ./doc/tutorial.xml 3235 - locally $ do + preservingMatrix $ do hunk ./doc/tutorial.xml 3240 - locally $ do + preservingMatrix $ do hunk ./doc/tutorial.xml 3245 - locally $ do + preservingMatrix $ do hunk ./doc/tutorial.xml 3251 -The following program allows to use the cursor keys to move around a -cube at the origin: +The following program allows to use the cursor keys to move around a cube at the +origin: hunk ./doc/tutorial.xml 3255 ->import Graphics.UI.GLUT - +>import Data.IORef +import Graphics.UI.GLUT hunk ./doc/tutorial.xml 3258 -import StateUtil hunk ./doc/tutorial.xml 3267 - pPos <- new (90::Int,270::Int,2.0) + pPos <- newIORef (90, 270, 2) hunk ./doc/tutorial.xml 3274 -The display function sets the viewer's position before rendering the -cube: +The display function sets the viewer's position before rendering the cube: hunk ./doc/tutorial.xml 3277 ->display pPos = do +>display :: IORef (Int,Int,GLdouble) -> DisplayCallback +display pPos = do hunk ./doc/tutorial.xml 3285 -As keyboard function we map directly to the function defined -in OrbitPointOfView. +The keyboard function is directly mapped to the function defined in +OrbitPointOfView. hunk ./doc/tutorial.xml 3289 ->keyboard pPos c _ _ _ = keyForPos pPos c +> KeyboardMouseCallback +]]>keyboard pPos c _ _ _ = keyForPos pPos c hunk ./doc/tutorial.xml 3354 ->initCube = Rubik (area Red) (area Blue) (area Yellow) +>initCube :: Rubik RubikColor +initCube = Rubik (area Red) (area Blue) (area Yellow) hunk ./doc/tutorial.xml 3358 +area :: RubikColor -> Area RubikColor hunk ./doc/tutorial.xml 3365 ->rotateArea RubikLogic.Front +>rotateArea :: AreaPosition -> Rubik RubikColor -> Rubik RubikColor +rotateArea RubikLogic.Front hunk ./doc/tutorial.xml 3427 +rotateBy1, rotateBy2, rotateBy3 :: Area a -> Area a hunk ./doc/tutorial.xml 3435 +rotateBy1 _ = error "rotateBy1: should not happen" hunk ./doc/tutorial.xml 3443 ->column n = map (\row->row !! (n-1)) +>column :: Int -> Area a -> Row a +column n = map (\row_ -> row_ !! (n-1)) hunk ./doc/tutorial.xml 3446 -row n area = area !!(n-1) +row :: Int -> Area a -> Row a +row n area_ = area_ !! (n-1) hunk ./doc/tutorial.xml 3449 -newRow 1 row [a,r,ea] = [row,r,ea] -newRow 2 row [a,r,ea] = [a,row,ea] -newRow 3 row [a,r,ea] = [a,r,row] +newRow :: Int -> Row a -> Area a -> Area a +newRow 1 row_ [_,r,ea] = [row_,r,ea] +newRow 2 row_ [a,_,ea] = [a,row_,ea] +newRow 3 row_ [a,r,_ ] = [a,r,row_] +newRow _ _ _ = error "newRow: should not happen" hunk ./doc/tutorial.xml 3455 -newColumn n column area = map (doIt n) areaC +newColumn :: Int -> Row a -> Area a -> Area a +newColumn n column_ area_ = map (doIt n) areaC hunk ./doc/tutorial.xml 3458 - areaC = zip area column - doIt 1 ((r:ow),c) = c:ow - doIt 2 ((r:o:w),c) = r:c:w - doIt 3 ((r:o:w:xs),c) = r:o:c:xs + areaC = zip area_ column_ + doIt 1 ((_:ow),c) = c:ow + doIt 2 ((r:_:w),c) = r:c:w + doIt 3 ((r:o:_:xs),c) = r:o:c:xs + doIt _ _ = error "doIt: should not happen" hunk ./doc/tutorial.xml 3467 -We have a logical modell of a cube. Now we can render this in a -coordinate system. In an earlier section we already provided a -function to render one single side. We simply need to render the six -sides and move them to the correct position. +We have a logical model of a cube. Now we can render this in a coordinate +system. In an earlier section we already provided a function to render one +single side. We simply need to render the six sides and move them to the correct +position. hunk ./doc/tutorial.xml 3473 - -import Graphics.UI.GLUT hiding (Red,Green,Blue) - +import Graphics.UI.GLUT hiding (Red, Green, Blue) hunk ./doc/tutorial.xml 3481 +renderCube :: Rubik (Color4 GLfloat) -> IO () hunk ./doc/tutorial.xml 3483 - render RubikLogic.Top top - render RubikLogic.Back back - render RubikLogic.Front front - render RubikLogic.Bottom bottom - render RubikLogic.Left left - render RubikLogic.Right right + render RubikLogic.Top top + render RubikLogic.Back back + render RubikLogic.Front front + render RubikLogic.Bottom bottom + render RubikLogic.Left left + render RubikLogic.Right right hunk ./doc/tutorial.xml 3490 -render Top cs = preservingMatrix $ do - translate $ Vector3 (1.5*_FIELD_WIDTH) 0 0 - rotate (90)$Vector3 0 1 (0::GLfloat) +render :: AreaPosition -> [[Color4 GLfloat]] -> IO () +render Top cs = preservingMatrix $ do + translate $ Vector3 (1.5 * _FIELD_WIDTH) 0 0 + rotate 90 $ Vector3 0 1 (0 :: GLfloat) hunk ./doc/tutorial.xml 3496 -render RubikLogic.Back cs = preservingMatrix$ do - translate $ Vector3 0 0 (-1.5*_FIELD_WIDTH) - rotate (180)$Vector3 0 0 (1::GLfloat) - rotate (180)$Vector3 1 0 (0::GLfloat) +render RubikLogic.Back cs = preservingMatrix $ do + translate $ Vector3 0 0 (-1.5 * _FIELD_WIDTH) + rotate 180 $ Vector3 0 0 (1 :: GLfloat) + rotate 180 $ Vector3 1 0 (0 :: GLfloat) hunk ./doc/tutorial.xml 3502 -render Bottom cs = preservingMatrix$ do - translate $ Vector3 (-1.5*_FIELD_WIDTH) 0 0 - rotate (270)$Vector3 0 1 (0::GLfloat) +render Bottom cs = preservingMatrix $ do + translate $ Vector3 (-1.5 * _FIELD_WIDTH) 0 0 + rotate 270 $ Vector3 0 1 (0::GLfloat) hunk ./doc/tutorial.xml 3507 -render RubikLogic.Front cs = preservingMatrix$ do - translate $ Vector3 0 0 (1.5*_FIELD_WIDTH) +render RubikLogic.Front cs = preservingMatrix $ do + translate $ Vector3 0 0 (1.5 * _FIELD_WIDTH) hunk ./doc/tutorial.xml 3511 -render RubikLogic.Left cs = preservingMatrix$ do - translate $ Vector3 0 (1.5*_FIELD_WIDTH) 0 - rotate (270) $ Vector3 1 0 (0::GLfloat) +render RubikLogic.Left cs = preservingMatrix $ do + translate $ Vector3 0 (1.5 * _FIELD_WIDTH) 0 + rotate 270 $ Vector3 1 0 (0 :: GLfloat) hunk ./doc/tutorial.xml 3516 -render RubikLogic.Right cs = preservingMatrix$ do - translate $ Vector3 0 (-1.5*_FIELD_WIDTH) 0 - rotate (270) $ Vector3 1 0 (0::GLfloat) - rotate (180)$Vector3 1 0 (0::GLfloat) +render RubikLogic.Right cs = preservingMatrix $ do + translate $ Vector3 0 (-1.5*_FIELD_WIDTH) 0 + rotate 270 $ Vector3 1 0 (0 :: GLfloat) + rotate 180 $ Vector3 1 0 (0 :: GLfloat) hunk ./doc/tutorial.xml 3522 +renderCubeSide :: [[Color4 GLfloat]] -> IO () hunk ./doc/tutorial.xml 3525 +field :: IO () hunk ./doc/tutorial.xml 3532 ->doColor Red = Color4 1 0 0 1.0 -doColor Green = Color4 0 1 0 1.0 -doColor Blue = Color4 0 0 1 1.0 -doColor Yellow = Color4 1 1 0 1.0 +>doColor :: RubikColor -> Color4 GLfloat +doColor Red = Color4 1 0 0 1 +doColor Green = Color4 0 1 0 1 +doColor Blue = Color4 0 0 1 1 +doColor Yellow = Color4 1 1 0 1 hunk ./doc/tutorial.xml 3538 -doColor White = Color4 1 1 1 1.0 -doColor Black = Color4 0 0 0 1.0 +doColor White = Color4 1 1 1 1 +doColor Black = Color4 0 0 0 1 hunk ./doc/tutorial.xml 3660 -> IORef (Rubik RubikColor) -> DisplayCallback hunk ./doc/tutorial.xml 3694 +keyboard :: IORef (Int, Int, GLdouble) -> IORef (Rubik RubikColor) -> KeyboardMouseCallback hunk ./doc/tutorial.xml 3710 +rot :: IORef (Rubik RubikColor) -> AreaPosition -> IO () hunk ./doc/tutorial.xml 3714 - postRedisplay Nothing]]> + postRedisplay Nothing]]> hunk ./doc/tutorial.xml 3716 + hunk ./doc/tutorial.xml 3719 - - - hunk ./doc/tutorial.xml 3726 - hunk ./doc/tutorial.xml 3745 - hunk ./doc/tutorial.xml 3792 - hunk ./doc/tutorial.xml 3846 -> + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program uses evaluators to generate a curved surface and automatically + generated texture coordinates. +-} + +import Data.List ( transpose ) +import Foreign ( withArray ) +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +ctrlPoints :: [[Vertex3 GLfloat]] +ctrlPoints = [ + [ Vertex3 (-1.5) (-1.5) 4.0, Vertex3 (-0.5) (-1.5) 2.0, + Vertex3 0.5 (-1.5) (-1.0), Vertex3 1.5 (-1.5) 2.0 ], + [ Vertex3 (-1.5) (-0.5) 1.0, Vertex3 (-0.5) (-0.5) 3.0, + Vertex3 0.5 (-0.5) 0.0, Vertex3 1.5 (-0.5) (-1.0) ], + [ Vertex3 (-1.5) 0.5 4.0, Vertex3 (-0.5) 0.5 0.0, + Vertex3 0.5 0.5 3.0, Vertex3 1.5 0.5 4.0 ], + [ Vertex3 (-1.5) 1.5 (-2.0), Vertex3 (-0.5) 1.5 (-2.0), + Vertex3 0.5 1.5 0.0, Vertex3 1.5 1.5 (-1.0) ]] + +texPts :: [[TexCoord2 GLfloat]] +texPts = [ + [ TexCoord2 0 0, TexCoord2 0 1 ], + [ TexCoord2 1 0, TexCoord2 1 1 ]] + +display :: DisplayCallback +display = do + clear [ ColorBuffer, DepthBuffer ] + color (Color3 1 1 1 :: Color3 GLfloat) + evalMesh2 Fill (0, 20) (0, 20) + flush + +imageSize :: TextureSize2D +imageSize = TextureSize2D 64 64 + +withImage :: (PixelData (Color3 GLubyte) -> IO ()) -> IO () +withImage act = + withArray [ Color3 (s (sin ti)) (s (cos (2 * tj))) (s (cos (ti + tj))) | + i <- [ 0 .. fromIntegral w - 1 ], + let ti = 2 * pi * i / fromIntegral w, + j <- [ 0 .. fromIntegral h - 1 ], + let tj = 2 * pi * j / fromIntegral h ] $ + act . PixelData RGB UnsignedByte + where (TextureSize2D w h) = imageSize + s :: Double -> GLubyte + s x = truncate (127 * (1 + x)) + +myInit :: IO () +myInit = do + m <- newMap2 (0, 1) (0, 1) (transpose ctrlPoints) + map2 $= Just (m :: GLmap2 Vertex3 GLfloat) + t <- newMap2 (0, 1) (0, 1) (transpose texPts) + map2 $= Just (t :: GLmap2 TexCoord2 GLfloat) + mapGrid2 $= ((20, (0, 1)), (20, (0, 1 :: GLfloat))) + textureFunction $= Decal + textureWrapMode Texture2D S $= (Repeated, Repeat) + textureWrapMode Texture2D T $= (Repeated, Repeat) + textureFilter Texture2D $= ((Nearest, Nothing), Nearest) + withImage $ texImage2D Nothing NoProxy 0 RGB' imageSize 0 + texture Texture2D $= Enabled + depthFunc $= Just Less + shadeModel $= Flat + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + let wf = fromIntegral w + hf = fromIntegral h + if w <= h + then ortho (-4.0) 4.0 (-4.0*hf/wf) (4.0*hf/wf) (-4.0) 4.0 + else ortho (-4.0*wf/hf) (4.0*wf/hf) (-4.0) 4.0 (-4.0) 4.0 + matrixMode $= Modelview 0 + loadIdentity + rotate (85 :: GLfloat) (Vector3 1 1 1) + +keyboard :: KeyboardMouseCallback +keyboard (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard _ _ _ _ = return () + +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] + initialWindowSize $= Size 500 500 + initialWindowPosition $= Position 100 100 + createWindow progName + myInit + displayCallback $= display + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just keyboard + mainLoop hunk ./Graphics/UI/GLUT/Overlay.hs 42 +#ifdef __NHC__ +import Graphics.UI.GLUT.Types ( Window(..) ) +import NHC.FFI ( CInt(..) ) +#else hunk ./Graphics/UI/GLUT/Overlay.hs 47 +#endif hunk ./Graphics/UI/GLUT/Types.hs 18 +#ifdef __NHC__ + Window(..), -- constructor used only internally +#else hunk ./Graphics/UI/GLUT/Types.hs 22 +#endif hunk ./Graphics/UI/GLUT/Window.hs 75 +#ifdef __NHC__ +import Graphics.UI.GLUT.Types ( Window(..), makeWindow ) +#else hunk ./Graphics/UI/GLUT/Window.hs 79 +#endif addfile ./Makefile.inc addfile ./Makefile.nhc98 hunk ./Makefile.inc 1 +# Hey Emacs, this is a -*- makefile -*- ! + +ifeq "" "${MKDIR}" +MKDIR:=$(shell pwd) +#MKDIR:=$(PWD) +else +MKDIR:=$(patsubst %/$(notdir ${MKDIR}),%, ${MKDIR}) +endif +include ${MKDIR}/Makefile.inc hunk ./Makefile.nhc98 1 +# Hey Emacs, this is a -*- makefile -*- ! + +THISPKG = GLUT +SEARCH = -package base -package OpenGL +EXTRA_H_FLAGS = -DCALLCONV=ccall +SRCS = \ + Graphics/UI/GLUT.hs \ + Graphics/UI/GLUT/Begin.hs \ + Graphics/UI/GLUT/Callbacks.hs \ + Graphics/UI/GLUT/Callbacks/Global.hs \ + Graphics/UI/GLUT/Callbacks/Registration.hs \ + Graphics/UI/GLUT/Callbacks/Window.hs \ + Graphics/UI/GLUT/Colormap.hs \ + Graphics/UI/GLUT/Constants.hs \ + Graphics/UI/GLUT/Debugging.hs \ + Graphics/UI/GLUT/DeviceControl.hs \ + Graphics/UI/GLUT/Fonts.hs \ + Graphics/UI/GLUT/GameMode.hs \ + Graphics/UI/GLUT/Initialization.hs \ + Graphics/UI/GLUT/Menu.hs \ + Graphics/UI/GLUT/Objects.hs \ + Graphics/UI/GLUT/Overlay.hs \ + Graphics/UI/GLUT/QueryUtils.hs \ + Graphics/UI/GLUT/State.hs \ + Graphics/UI/GLUT/Types.hs \ + Graphics/UI/GLUT/Window.hs + +# Here are the main rules. +include ../Makefile.common + +# Here are the dependencies. +$(OBJDIR)/Graphics/UI/GLUT.$O: \ + $(OBJDIR)/Graphics/UI/GLUT/Begin.$O \ + $(OBJDIR)/Graphics/UI/GLUT/Callbacks.$O \ + $(OBJDIR)/Graphics/UI/GLUT/Colormap.$O \ + $(OBJDIR)/Graphics/UI/GLUT/Debugging.$O \ + $(OBJDIR)/Graphics/UI/GLUT/DeviceControl.$O \ + $(OBJDIR)/Graphics/UI/GLUT/Fonts.$O \ + $(OBJDIR)/Graphics/UI/GLUT/GameMode.$O \ + $(OBJDIR)/Graphics/UI/GLUT/Initialization.$O \ + $(OBJDIR)/Graphics/UI/GLUT/Menu.$O \ + $(OBJDIR)/Graphics/UI/GLUT/Objects.$O \ + $(OBJDIR)/Graphics/UI/GLUT/Overlay.$O \ + $(OBJDIR)/Graphics/UI/GLUT/State.$O \ + $(OBJDIR)/Graphics/UI/GLUT/Window.$O +$(OBJDIR)/Graphics/UI/GLUT/Callbacks.$O: \ + $(OBJDIR)/Graphics/UI/GLUT/Callbacks/Global.$O \ + $(OBJDIR)/Graphics/UI/GLUT/Callbacks/Window.$O +$(OBJDIR)/Graphics/UI/GLUT/Callbacks/Global.$O: \ + $(OBJDIR)/Graphics/UI/GLUT/Callbacks/Registration.$O \ + $(OBJDIR)/Graphics/UI/GLUT/Constants.$O +$(OBJDIR)/Graphics/UI/GLUT/Callbacks/Registration.$O: \ + $(OBJDIR)/Graphics/UI/GLUT/Window.$O +$(OBJDIR)/Graphics/UI/GLUT/Callbacks/Window.$O: \ + $(OBJDIR)/Graphics/UI/GLUT/Callbacks/Registration.$O \ + $(OBJDIR)/Graphics/UI/GLUT/Constants.$O \ + $(OBJDIR)/Graphics/UI/GLUT/State.$O \ + $(OBJDIR)/Graphics/UI/GLUT/Types.$O +$(OBJDIR)/Graphics/UI/GLUT/Colormap.$O: \ + $(OBJDIR)/Graphics/UI/GLUT/Constants.$O \ + $(OBJDIR)/Graphics/UI/GLUT/QueryUtils.$O \ + $(OBJDIR)/Graphics/UI/GLUT/Window.$O +$(OBJDIR)/Graphics/UI/GLUT/DeviceControl.$O: \ + $(OBJDIR)/Graphics/UI/GLUT/Constants.$O \ + $(OBJDIR)/Graphics/UI/GLUT/QueryUtils.$O +$(OBJDIR)/Graphics/UI/GLUT/GameMode.$O: \ + $(OBJDIR)/Graphics/UI/GLUT/Constants.$O \ + $(OBJDIR)/Graphics/UI/GLUT/Initialization.$O \ + $(OBJDIR)/Graphics/UI/GLUT/Types.$O \ + $(OBJDIR)/Graphics/UI/GLUT/Window.$O +$(OBJDIR)/Graphics/UI/GLUT/Initialization.$O: \ + $(OBJDIR)/Graphics/UI/GLUT/Constants.$O \ + $(OBJDIR)/Graphics/UI/GLUT/QueryUtils.$O \ + $(OBJDIR)/Graphics/UI/GLUT/Types.$O +$(OBJDIR)/Graphics/UI/GLUT/Menu.$O: \ + $(OBJDIR)/Graphics/UI/GLUT/Callbacks/Registration.$O \ + $(OBJDIR)/Graphics/UI/GLUT/Callbacks/Window.$O \ + $(OBJDIR)/Graphics/UI/GLUT/Constants.$O \ + $(OBJDIR)/Graphics/UI/GLUT/QueryUtils.$O \ + $(OBJDIR)/Graphics/UI/GLUT/Types.$O \ + $(OBJDIR)/Graphics/UI/GLUT/Window.$O +$(OBJDIR)/Graphics/UI/GLUT/Overlay.$O: \ + $(OBJDIR)/Graphics/UI/GLUT/Constants.$O \ + $(OBJDIR)/Graphics/UI/GLUT/QueryUtils.$O \ + $(OBJDIR)/Graphics/UI/GLUT/Window.$O +$(OBJDIR)/Graphics/UI/GLUT/State.$O: \ + $(OBJDIR)/Graphics/UI/GLUT/Constants.$O \ + $(OBJDIR)/Graphics/UI/GLUT/Overlay.$O \ + $(OBJDIR)/Graphics/UI/GLUT/QueryUtils.$O +$(OBJDIR)/Graphics/UI/GLUT/Types.$O: \ + $(OBJDIR)/Graphics/UI/GLUT/Constants.$O +$(OBJDIR)/Graphics/UI/GLUT/Window.$O: \ + $(OBJDIR)/Graphics/UI/GLUT/Constants.$O \ + $(OBJDIR)/Graphics/UI/GLUT/QueryUtils.$O \ + $(OBJDIR)/Graphics/UI/GLUT/Types.$O + +# C-files dependencies. +Graphics/UI/GLUT.$C: \ + Graphics/UI/GLUT/Begin.$C \ + Graphics/UI/GLUT/Callbacks.$C \ + Graphics/UI/GLUT/Colormap.$C \ + Graphics/UI/GLUT/Debugging.$C \ + Graphics/UI/GLUT/DeviceControl.$C \ + Graphics/UI/GLUT/Fonts.$C \ + Graphics/UI/GLUT/GameMode.$C \ + Graphics/UI/GLUT/Initialization.$C \ + Graphics/UI/GLUT/Menu.$C \ + Graphics/UI/GLUT/Objects.$C \ + Graphics/UI/GLUT/Overlay.$C \ + Graphics/UI/GLUT/State.$C \ + Graphics/UI/GLUT/Window.$C +Graphics/UI/GLUT/Callbacks.$C: \ + Graphics/UI/GLUT/Callbacks/Global.$C \ + Graphics/UI/GLUT/Callbacks/Window.$C +Graphics/UI/GLUT/Callbacks/Global.$C: \ + Graphics/UI/GLUT/Callbacks/Registration.$C \ + Graphics/UI/GLUT/Constants.$C +Graphics/UI/GLUT/Callbacks/Registration.$C: \ + Graphics/UI/GLUT/Window.$C +Graphics/UI/GLUT/Callbacks/Window.$C: \ + Graphics/UI/GLUT/Callbacks/Registration.$C \ + Graphics/UI/GLUT/Constants.$C \ + Graphics/UI/GLUT/State.$C \ + Graphics/UI/GLUT/Types.$C +Graphics/UI/GLUT/Colormap.$C: \ + Graphics/UI/GLUT/Constants.$C \ + Graphics/UI/GLUT/QueryUtils.$C \ + Graphics/UI/GLUT/Window.$C +Graphics/UI/GLUT/DeviceControl.$C: \ + Graphics/UI/GLUT/Constants.$C \ + Graphics/UI/GLUT/QueryUtils.$C +Graphics/UI/GLUT/GameMode.$C: \ + Graphics/UI/GLUT/Constants.$C \ + Graphics/UI/GLUT/Initialization.$C \ + Graphics/UI/GLUT/Types.$C \ + Graphics/UI/GLUT/Window.$C +Graphics/UI/GLUT/Initialization.$C: \ + Graphics/UI/GLUT/Constants.$C \ + Graphics/UI/GLUT/QueryUtils.$C \ + Graphics/UI/GLUT/Types.$C +Graphics/UI/GLUT/Menu.$C: \ + Graphics/UI/GLUT/Callbacks/Registration.$C \ + Graphics/UI/GLUT/Callbacks/Window.$C \ + Graphics/UI/GLUT/Constants.$C \ + Graphics/UI/GLUT/QueryUtils.$C \ + Graphics/UI/GLUT/Types.$C \ + Graphics/UI/GLUT/Window.$C +Graphics/UI/GLUT/Overlay.$C: \ + Graphics/UI/GLUT/Constants.$C \ + Graphics/UI/GLUT/QueryUtils.$C \ + Graphics/UI/GLUT/Window.$C +Graphics/UI/GLUT/State.$C: \ + Graphics/UI/GLUT/Constants.$C \ + Graphics/UI/GLUT/Overlay.$C \ + Graphics/UI/GLUT/QueryUtils.$C +Graphics/UI/GLUT/Types.$C: \ + Graphics/UI/GLUT/Constants.$C +Graphics/UI/GLUT/Window.$C: \ + Graphics/UI/GLUT/Constants.$C \ + Graphics/UI/GLUT/QueryUtils.$C \ + Graphics/UI/GLUT/Types.$C hunk ./Graphics/UI/GLUT/Colormap.hs 53 +#ifdef __NHC__ +import Graphics.UI.GLUT.Types ( Window(..) ) +#else hunk ./Graphics/UI/GLUT/Colormap.hs 57 +#endif hunk ./Graphics/UI/GLUT/Debugging.hs 22 -import Graphics.Rendering.OpenGL.GL.StateVar ( get ) +import Graphics.Rendering.OpenGL.GL.StateVar ( HasGetter(get) ) hunk ./Graphics/UI/GLUT/Colormap.hs 53 -#ifdef __NHC__ -import Graphics.UI.GLUT.Types ( Window(..) ) -#else hunk ./Graphics/UI/GLUT/Colormap.hs 54 -#endif hunk ./Graphics/UI/GLUT/Types.hs 18 -#ifdef __NHC__ - Window(..), -- constructor used only internally -#else hunk ./Graphics/UI/GLUT/Types.hs 19 -#endif hunk ./Graphics/UI/GLUT/Window.hs 75 -#ifdef __NHC__ -import Graphics.UI.GLUT.Types ( Window(..), makeWindow ) -#else hunk ./Graphics/UI/GLUT/Window.hs 76 -#endif hunk ./Graphics/UI/GLUT/Overlay.hs 43 -import Graphics.UI.GLUT.Types ( Window(..) ) -import NHC.FFI ( CInt(..) ) -#else -import Graphics.UI.GLUT.Window ( Window ) +import NHC.FFI ( CInt ) hunk ./Graphics/UI/GLUT/Overlay.hs 45 +import Graphics.UI.GLUT.Window ( Window ) addfile ./examples/RedBook/Clip.hs addfile ./examples/RedBook/Cube.hs addfile ./examples/RedBook/Model.hs addfile ./examples/RedBook/Planet.hs addfile ./examples/RedBook/Robot.hs addfile ./examples/RedBook/UnProject.hs hunk ./examples/RedBook/00-README 24 - Unproject.hs (1.1) + UnProject.hs (1.1) hunk ./examples/RedBook/Clip.hs 1 +{- + Clip.hs (adapted from clip.c which is (c) Silicon Graphics, Inc.) + Copyright (c) Sven Panne 2002-2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program demonstrates arbitrary clipping planes. +-} + +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +myInit :: IO () +myInit = do + clearColor $= Color4 0 0 0 0 + shadeModel $= Flat + +display :: DisplayCallback +display = do + clear [ ColorBuffer ] + -- resolve overloading, not needed in "real" programs + let color3f = color :: Color3 GLfloat -> IO () + translatef = translate :: Vector3 GLfloat -> IO () + rotatef = rotate :: GLfloat -> Vector3 GLfloat -> IO () + color3f (Color3 1 1 1) + + preservingMatrix $ do + translatef (Vector3 0 0 (-5)) + + -- clip lower half -- y < 0 + clipPlane (ClipPlaneName 0) $= Just (Plane 0 1 0 0) + -- clip left half -- x < 0 + clipPlane (ClipPlaneName 1) $= Just (Plane 1 0 0 0) + + rotatef 90 (Vector3 1 0 0) + renderObject Wireframe (Sphere' 1 20 16) + + flush + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + perspective 60 (fromIntegral w / fromIntegral h) 1 20 + matrixMode $= Modelview 0 + +keyboard :: KeyboardMouseCallback +keyboard (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard _ _ _ _ = return () + +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, RGBMode ] + initialWindowSize $= Size 500 500 + initialWindowPosition $= Position 100 100 + createWindow progName + myInit + displayCallback $= display + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just keyboard + mainLoop hunk ./examples/RedBook/Cube.hs 1 +{- + Cube.hs (adapted from cube.c which is (c) Silicon Graphics, Inc.) + Copyright (c) Sven Panne 2002-2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program demonstrates a single modeling transformation, scale and a + single viewing transformation, lookAt. A wireframe cube is rendered. +-} + +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +myInit :: IO () +myInit = do + clearColor $= Color4 0 0 0 0 + shadeModel $= Flat + +display :: DisplayCallback +display = do + clear [ ColorBuffer ] + -- resolve overloading, not needed in "real" programs + let color3f = color :: Color3 GLfloat -> IO () + scalef = scale :: GLfloat -> GLfloat -> GLfloat -> IO () + color3f (Color3 1 1 1) + loadIdentity -- clear the matrix + -- viewing transformation + lookAt (Vertex3 0 0 5) (Vertex3 0 0 0) (Vector3 0 1 0) + scalef 1 2 1 -- modeling transformation + renderObject Wireframe (Cube 1) + flush + +reshape :: ReshapeCallback +reshape size = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + frustum (-1) 1 (-1) 1 1.5 20 + matrixMode $= Modelview 0 + +keyboard :: KeyboardMouseCallback +keyboard (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard _ _ _ _ = return () + +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, RGBMode ] + initialWindowSize $= Size 500 500 + initialWindowPosition $= Position 100 100 + createWindow progName + myInit + displayCallback $= display + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just keyboard + mainLoop hunk ./examples/RedBook/Model.hs 1 +{- + Model.hs (adapted from model.c which is (c) Silicon Graphics, Inc.) + Copyright (c) Sven Panne 2002-2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program demonstrates modeling transformations. +-} + +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +myInit :: IO () +myInit = do + clearColor $= Color4 0 0 0 0 + shadeModel $= Flat + +drawTriangle :: IO () +drawTriangle = do + -- resolve overloading, not needed in "real" programs + let vertex2f = vertex :: Vertex2 GLfloat -> IO () + renderPrimitive LineLoop $ do + vertex2f (Vertex2 0 25 ) + vertex2f (Vertex2 25 (-25)) + vertex2f (Vertex2 (-25) (-25)) + +display :: DisplayCallback +display = do + clear [ ColorBuffer ] + -- resolve overloading, not needed in "real" programs + let color3f = color :: Color3 GLfloat -> IO () + translatef = translate :: Vector3 GLfloat -> IO () + scalef = scale :: GLfloat -> GLfloat -> GLfloat -> IO () + rotatef = rotate :: GLfloat -> Vector3 GLfloat -> IO () + color3f (Color3 1 1 1) + + loadIdentity + color3f (Color3 1 1 1) + drawTriangle + + lineStipple $= Just (1, 0xF0F0) + loadIdentity + translatef (Vector3 (-20) 0 0) + drawTriangle + + lineStipple $= Just (1, 0xF00F) + loadIdentity + scalef 1.5 0.5 1.0 + drawTriangle + + lineStipple $= Just (1, 0x8888) + loadIdentity + rotatef 90 (Vector3 0 0 1) + drawTriangle + lineStipple $= Nothing + + flush + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + let wf = fromIntegral w + hf = fromIntegral h + if w <= h + then ortho (-50) 50 (-50 * hf/wf) (50 * hf/wf) (-1) 1 + else ortho (-50 * wf/hf) (50 * wf/hf) (-50) 50 (-1) 1 + matrixMode $= Modelview 0 + +keyboard :: KeyboardMouseCallback +keyboard (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard _ _ _ _ = return () + +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, RGBMode ] + initialWindowSize $= Size 500 500 + initialWindowPosition $= Position 100 100 + createWindow progName + myInit + displayCallback $= display + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just keyboard + mainLoop hunk ./examples/RedBook/Planet.hs 1 +{- + Planet.hs (adapted from planet.c which is (c) Silicon Graphics, Inc.) + Copyright (c) Sven Panne 2002-2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program shows how to composite modeling transformations to draw + translated and rotated models. Interaction: pressing the d and y keys + (day and year) alters the rotation of the planet around the sun. +-} + +import Data.IORef ( IORef, newIORef ) +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +myInit :: IO () +myInit = do + clearColor $= Color4 0 0 0 0 + shadeModel $= Flat + +display :: IORef Int -> IORef Int -> DisplayCallback +display year day = do + clear [ ColorBuffer ] + -- resolve overloading, not needed in "real" programs + let color3f = color :: Color3 GLfloat -> IO () + translatef = translate :: Vector3 GLfloat -> IO () + color3f (Color3 1 1 1) + + preservingMatrix $ do + renderObject Wireframe (Sphere' 1 20 16) -- draw sun + y <- get year + rotate (fromIntegral y :: GLfloat) (Vector3 0 1 0) + translatef (Vector3 2 0 0) + d <- get day + rotate (fromIntegral d :: GLfloat) (Vector3 0 1 0) + renderObject Wireframe (Sphere' 0.2 10 8) -- draw smaller planet + + swapBuffers + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + perspective 60 (fromIntegral w / fromIntegral h) 1 20 + matrixMode $= Modelview 0 + loadIdentity + lookAt (Vertex3 0 0 5) (Vertex3 0 0 0) (Vector3 0 1 0) + +keyboard :: IORef Int -> IORef Int -> KeyboardMouseCallback +keyboard day _ (Char 'd') Down _ _ = update day 10 +keyboard day _ (Char 'D') Down _ _ = update day (-10) +keyboard _ year (Char 'y') Down _ _ = update year 5 +keyboard _ year (Char 'Y') Down _ _ = update year ( -5) +keyboard _ _ (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard _ _ _ _ _ _ = return () + +update :: IORef Int -> Int -> IO () +update angle inc = do + angle $~ ((`mod` 360) . (+ inc)) + postRedisplay Nothing + +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ DoubleBuffered, RGBMode ] + initialWindowSize $= Size 500 500 + initialWindowPosition $= Position 100 100 + createWindow progName + myInit + year <- newIORef 0 + day <- newIORef 0 + displayCallback $= display year day + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just (keyboard year day) + mainLoop hunk ./examples/RedBook/Robot.hs 1 +{- + Robot.hs (adapted from robot.c which is (c) Silicon Graphics, Inc.) + Copyright (c) Sven Panne 2002-2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program shows how to composite modeling transformations to draw + translated and rotated hierarchical models. Interaction: pressing the s + and e keys (shoulder and elbow) alters the rotation of the robot arm. +-} + +import Data.IORef ( IORef, newIORef ) +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +myInit :: IO () +myInit = do + clearColor $= Color4 0 0 0 0 + shadeModel $= Flat + +display :: IORef Int -> IORef Int -> DisplayCallback +display shoulder elbow = do + clear [ ColorBuffer ] + -- resolve overloading, not needed in "real" programs + let translatef = translate :: Vector3 GLfloat -> IO () + scalef = scale :: GLfloat -> GLfloat -> GLfloat -> IO () + preservingMatrix $ do + translatef (Vector3 (-1) 0 0) + s <- get shoulder + rotate (fromIntegral s :: GLfloat) (Vector3 0 0 1) + translatef (Vector3 1 0 0) + preservingMatrix $ do + scalef 2 0.4 1 + renderObject Wireframe (Cube 1) + translatef (Vector3 1 0 0) + e <- get elbow + rotate (fromIntegral e :: GLfloat) (Vector3 0 0 1) + translatef (Vector3 1 0 0) + preservingMatrix $ do + scalef 2 0.4 1 + renderObject Wireframe (Cube 1) + swapBuffers + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + perspective 65 (fromIntegral w / fromIntegral h) 1 20 + matrixMode $= Modelview 0 + loadIdentity + -- resolve overloading, not needed in "real" programs + let translatef = translate :: Vector3 GLfloat -> IO () + translatef (Vector3 0 0 (-5)) + +keyboard :: IORef Int -> IORef Int -> KeyboardMouseCallback +keyboard shoulder _ (Char 's') Down _ _ = update shoulder 5 +keyboard shoulder _ (Char 'S') Down _ _ = update shoulder (-5) +keyboard _ elbow (Char 'e') Down _ _ = update elbow 5 +keyboard _ elbow (Char 'E') Down _ _ = update elbow (-5) +keyboard _ _ (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard _ _ _ _ _ _ = return () + +update :: IORef Int -> Int -> IO () +update angle inc = do + angle $~ ((`mod` 360) . (+ inc)) + postRedisplay Nothing + +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ DoubleBuffered, RGBMode ] + initialWindowSize $= Size 500 500 + initialWindowPosition $= Position 100 100 + createWindow progName + myInit + shoulder <- newIORef 0 + elbow <- newIORef 0 + displayCallback $= display shoulder elbow + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just (keyboard shoulder elbow) + mainLoop hunk ./examples/RedBook/UnProject.hs 1 +{- + UnProject.hs (adapted from unproject.c which is (c) Silicon Graphics, Inc.) + Copyright (c) Sven Panne 2002-2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + When the left mouse button is pressed, this program reads the mouse + position and determines two 3D points from which it was transformed. + Very little is displayed. +-} + +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +display :: DisplayCallback +display = do + clear [ ColorBuffer ] + flush + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + perspective 45 (fromIntegral w / fromIntegral h) 1 100 + matrixMode $= Modelview 0 + loadIdentity + +keyboardMouse :: KeyboardMouseCallback +keyboardMouse (MouseButton LeftButton) Down _ (Position x y) = do + v@(_, Size _ h) <- get viewport + mvMatrix <- get (matrix (Just (Modelview 0))) :: IO (GLmatrix GLdouble) + projMatrix <- get (matrix (Just Projection)) :: IO (GLmatrix GLdouble) + let realY = h - y -1 + putStrLn ("Coordinates at cursor are (" ++ show x ++", " ++ show realY ++ ")") + Just w0 <- unProject (Vertex3 (fromIntegral x) (fromIntegral realY) 0) mvMatrix projMatrix v + putStrLn ("World coords at z=0.0 are " ++ show w0) + Just w1 <- unProject (Vertex3 (fromIntegral x) (fromIntegral realY) 1) mvMatrix projMatrix v + putStrLn ("World coords at z=1.0 are " ++ show w1) +keyboardMouse (MouseButton RightButton) Down _ _ = exitWith ExitSuccess +keyboardMouse (Char '\27') Down _ _ = exitWith ExitSuccess +keyboardMouse _ _ _ _ = return () + +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, RGBMode ] + initialWindowSize $= Size 500 500 + initialWindowPosition $= Position 100 100 + createWindow progName + displayCallback $= display + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just keyboardMouse + mainLoop addfile ./examples/RedBook/Light.hs addfile ./examples/RedBook/Material.hs addfile ./examples/RedBook/MoveLight.hs hunk ./examples/RedBook/00-README 33 - Movelight.hs (1.0) + MoveLight.hs (1.0) hunk ./examples/RedBook/Light.hs 1 +{- + Light.hs (adapted from light.c which is (c) Silicon Graphics, Inc.) + Copyright (c) Sven Panne 2002-2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program demonstrates the use of the OpenGL lighting model. A sphere + is drawn using a grey material characteristic. A single light source + illuminates the object. +-} + +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +myInit :: IO () +myInit = do + clearColor $= Color4 0 0 0 0 + shadeModel $= Smooth + + materialSpecular Front $= Color4 1 1 1 1 + materialShininess Front $= 50 + position (Light 0) $= Vertex4 1 1 1 0 + + lighting $= Enabled + light (Light 0) $= Enabled + depthFunc $= Just Less + +display :: DisplayCallback +display = do + clear [ ColorBuffer, DepthBuffer ] + renderObject Solid (Sphere' 1 20 16) + flush + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + let wf = fromIntegral w + hf = fromIntegral h + if w <= h + then ortho (-1.5) 1.5 (-1.5 * hf/wf) (1.5 * hf/wf) (-10) 10 + else ortho (-1.5 * wf/hf) (1.5 * wf/hf)(-1.5) 1.5 (-10) 10 + matrixMode $= Modelview 0 + loadIdentity + +keyboard :: KeyboardMouseCallback +keyboard (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard _ _ _ _ = return () + +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] + initialWindowSize $= Size 500 500 + initialWindowPosition $= Position 100 100 + createWindow progName + myInit + displayCallback $= display + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just keyboard + mainLoop hunk ./examples/RedBook/Material.hs 1 +{- + Material.hs (adapted from material.c which is (c) Silicon Graphics, Inc.) + Copyright (c) Sven Panne 2002-2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program demonstrates the use of the GL lighting model. Several + objects are drawn using different material characteristics. A single + light source illuminates the objects. +-} + +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +-- Initialize z-buffer, projection matrix, light source, and lighting model. +-- Do not specify a material property here. + +myInit :: IO () +myInit = do + clearColor $= Color4 0 0.1 0.1 0 + depthFunc $= Just Less + shadeModel $= Smooth + + ambient (Light 0) $= Color4 0 0 0 1 + diffuse (Light 0) $= Color4 1 1 1 1 + position (Light 0) $= Vertex4 0 3 2 0 + lightModelAmbient $= Color4 0.4 0.4 0.4 1 + lightModelLocalViewer $= Disabled + + lighting $= Enabled + light (Light 0) $= Enabled + +-- Draw twelve spheres in 3 rows with 4 columns. +-- The spheres in the first row have materials with no ambient reflection. +-- The second row has materials with significant ambient reflection. +-- The third row has materials with colored ambient reflection. +-- +-- The first column has materials with blue, diffuse reflection only. +-- The second column has blue diffuse reflection, as well as specular +-- reflection with a low shininess exponent. +-- The third column has blue diffuse reflection, as well as specular +-- reflection with a high shininess exponent (a more concentrated highlight). +-- The fourth column has materials which also include an emissive component. +-- +-- translate is used to move spheres to their appropriate locations. + +display :: DisplayCallback +display = do + clear [ ColorBuffer, DepthBuffer ] + + let draw :: GLfloat -> GLfloat -> Color4 GLfloat -> Color4 GLfloat -> Color4 GLfloat -> GLfloat -> Color4 GLfloat -> IO () + draw row column amb dif spc shi emi = + preservingMatrix $ do + translate (Vector3 (2.5 * (column - 2.5)) (3 * (2 - row)) 0) + materialAmbient Front $= amb + materialDiffuse Front $= dif + materialSpecular Front $= spc + materialShininess Front $= shi + materialEmission Front $= emi + renderObject Solid (Sphere' 1 16 16) + + noMat = Color4 0 0 0 1 + matAmbient = Color4 0.7 0.7 0.7 1 + matAmbientColor = Color4 0.8 0.8 0.2 1 + matDiffuse = Color4 0.1 0.5 0.8 1 + matSpecular = Color4 1 1 1 1 + noShininess = 0 + lowShininess = 5 + highShininess = 100 + matEmission = Color4 0.3 0.2 0.2 0 + + -- draw sphere in first row, first column + -- diffuse reflection only; no ambient or specular + draw 1 1 noMat matDiffuse noMat noShininess noMat + + -- draw sphere in first row, second column + -- diffuse and specular reflection; low shininess; no ambient + draw 1 2 noMat matDiffuse matSpecular lowShininess noMat + + -- draw sphere in first row, third column + -- diffuse and specular reflection; high shininess; no ambient + draw 1 3 noMat matDiffuse matSpecular highShininess noMat + + -- draw sphere in first row, fourth column + -- diffuse reflection; emission; no ambient or specular reflection + draw 1 4 noMat matDiffuse noMat noShininess matEmission + + -- draw sphere in second row, first column + -- ambient and diffuse reflection; no specular + draw 2 1 matAmbient matDiffuse noMat noShininess noMat + + -- draw sphere in second row, second column + -- ambient, diffuse and specular reflection; low shininess + draw 2 2 matAmbient matDiffuse matSpecular lowShininess noMat + + -- draw sphere in second row, third column + -- ambient, diffuse and specular reflection; high shininess + draw 2 3 matAmbient matDiffuse matSpecular highShininess noMat + + -- draw sphere in second row, fourth column + -- ambient and diffuse reflection; emission; no specular + draw 2 4 matAmbient matDiffuse noMat noShininess matEmission + + -- draw sphere in third row, first column + -- colored ambient and diffuse reflection; no specular + draw 3 1 matAmbientColor matDiffuse noMat noShininess noMat + + -- draw sphere in third row, second column + -- colored ambient, diffuse and specular reflection; low shininess + draw 3 2 matAmbientColor matDiffuse matSpecular lowShininess noMat + + -- draw sphere in third row, third column + -- colored ambient, diffuse and specular reflection; high shininess + draw 3 3 matAmbientColor matDiffuse matSpecular highShininess noMat + + -- draw sphere in third row, fourth column + -- colored ambient and diffuse reflection; emission; no specular + draw 3 4 matAmbientColor matDiffuse noMat noShininess matEmission + + flush + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + let wf = fromIntegral w + hf = fromIntegral h + if w <= h * 2 + then ortho (-6) 6 (-3 * (hf * 2) / wf) (3 * (hf * 2) / wf) (-10) 10 + else ortho (-6 * wf / (hf * 2)) (6 * wf / (hf * 2)) (-3) 3 (-10) 10 + matrixMode $= Modelview 0 + loadIdentity + +keyboard :: KeyboardMouseCallback +keyboard (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard _ _ _ _ = return () + +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] + initialWindowSize $= Size 600 450 + createWindow progName + myInit + reshapeCallback $= Just reshape + displayCallback $= display + keyboardMouseCallback $= Just keyboard + mainLoop hunk ./examples/RedBook/MoveLight.hs 1 +{- + MoveLight.hs (adapted from movelight.c which is (c) Silicon Graphics, Inc.) + Copyright (c) Sven Panne 2002-2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program demonstrates when to issue lighting and transformation + commands to render a model with a light which is moved by a + modeling transformation (rotate or translate). The light position + is reset after the modeling transformation is called. The eye + position does not change. + + A sphere is drawn using a grey material characteristic. A single + light source illuminates the object. + + Interaction: pressing the left mouse button alters the modeling + transformation (x rotation) by 30 degrees. The scene is then + redrawn with the light in a new position. +-} + +import Data.IORef ( IORef, newIORef ) +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +myInit :: IO () +myInit = do + clearColor $= Color4 0 0 0 0 + shadeModel $= Smooth + lighting $= Enabled + light (Light 0) $= Enabled + depthFunc $= Just Less + +display :: IORef Int -> DisplayCallback +display spin = do + clear [ ColorBuffer, DepthBuffer ] + preservingMatrix $ do + lookAt (Vertex3 0 0 5) (Vertex3 0 0 0) (Vector3 0 1 0) + preservingMatrix $ do + s <- get spin + rotate (fromIntegral s :: GLdouble) (Vector3 1 0 0) + position (Light 0) $= Vertex4 0 0 1.5 1 + translate (Vector3 0 0 1.5 :: Vector3 GLdouble) + lighting $= Disabled + color (Color3 0 1 1 :: Color3 GLfloat) + renderObject Wireframe (Cube 0.1) + lighting $= Enabled + renderObject Solid (Torus 0.275 0.85 8 15) + flush + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + perspective 40 (fromIntegral w / fromIntegral h) 1 20 + matrixMode $= Modelview 0 + loadIdentity + +keyboardMouse :: IORef Int -> KeyboardMouseCallback +keyboardMouse spin (MouseButton LeftButton) Down _ _ = do + spin $~ ((`mod` 360) . (+ 30)) + postRedisplay Nothing +keyboardMouse _ (Char '\27') Down _ _ = exitWith ExitSuccess +keyboardMouse _ _ _ _ _ = return () + +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] + initialWindowSize $= Size 500 500 + initialWindowPosition $= Position 100 100 + createWindow progName + myInit + spin <- newIORef 0 + displayCallback $= display spin + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just (keyboardMouse spin) + mainLoop hunk ./examples/RedBook/00-README 120 - Teapots.hs (1.1) + Teapots.hs (1.1) addfile ./examples/RedBook/ColorMat.hs hunk ./examples/RedBook/ColorMat.hs 1 +{- + Light.hs (adapted from light.c which is (c) Silicon Graphics, Inc.) + Copyright (c) Sven Panne 2002-2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + After initialization, the program will be in ColorMaterial mode. + Interaction: pressing the mouse buttons will change the diffuse + reflection values. +-} + +import Data.IORef ( IORef, newIORef ) +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +-- we lump together our global state (and still call this Haskell :-) +data State = State { r, g, b :: IORef GLfloat } + +diffuseMaterial :: State -> IO (Color4 GLfloat) +diffuseMaterial state = do + r' <- get (r state) + g' <- get (g state) + b' <- get (b state) + return $ Color4 r' g' b' 1 + +makeState :: IO State +makeState = do + r' <- newIORef 0.5 + g' <- newIORef 0.5 + b' <- newIORef 0.5 + return $ State { r = r', g = g', b = b' } + +-- Initialize material property, light source, lighting model, +-- and depth buffer. +myInit :: IO State +myInit = do + clearColor $= Color4 0 0 0 0 + shadeModel $= Smooth + depthFunc $= Just Less + state <- makeState + dm <- diffuseMaterial state + materialDiffuse Front $= dm + materialSpecular Front $= Color4 1 1 1 1 + materialShininess Front $= 25 + position (Light 0) $= Vertex4 1 1 1 0 + lighting $= Enabled + light (Light 0) $= Enabled + colorMaterial $= Just (Front, Diffuse) + return state + +display :: DisplayCallback +display = do + clear [ ColorBuffer, DepthBuffer ] + renderObject Solid (Sphere' 1 20 16) + flush + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + let wf = fromIntegral w + hf = fromIntegral h + if w <= h + then ortho (-1.5) 1.5 (-1.5 * hf/wf) (1.5 * hf/wf) (-10) 10 + else ortho (-1.5 * wf/hf) (1.5 * wf/hf) (-1.5) 1.5 (-10) 10 + matrixMode $= Modelview 0 + loadIdentity + +keyboardMouse :: State -> KeyboardMouseCallback +keyboardMouse state (MouseButton button) Down _ _ = case button of + LeftButton -> update r + MiddleButton -> update g + RightButton -> update b + _ -> return () + where update component = do + component state $~ inc + dm <- diffuseMaterial state + color dm + postRedisplay Nothing + inc x = let s = x + 0.1 in if s > 1 then 0 else s +keyboardMouse _ (Char '\27') Down _ _ = exitWith ExitSuccess +keyboardMouse _ _ _ _ _ = return () + +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] + initialWindowSize $= Size 500 500 + initialWindowPosition $= Position 100 100 + createWindow progName + state <- myInit + displayCallback $= display + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just (keyboardMouse state) + mainLoop hunk ./examples/RedBook/Light.hs 43 - else ortho (-1.5 * wf/hf) (1.5 * wf/hf)(-1.5) 1.5 (-10) 10 + else ortho (-1.5 * wf/hf) (1.5 * wf/hf) (-1.5) 1.5 (-10) 10 hunk ./examples/RedBook/ShadowMap.hs 47 - return $ State a t s n f + return $ State { angle = a, torusAngle = t, showShadow = s, + animate = n, funcMode = f } hunk ./examples/RedBook/VArray.hs 69 - return $ State v c i n s d + return $ State { vertices = v, colors = c, intertwined = i, + indices = n, setupMethod = s, derefMethod = d } hunk ./examples/RedBook/Robot.hs 16 +-- we lump together our global state (and still call this Haskell :-) +data State = State { shoulder, elbow :: IORef GLint } + +makeState :: IO State +makeState = do + s <- newIORef 0 + e <- newIORef 0 + return $ State { shoulder = s, elbow = e } + hunk ./examples/RedBook/Robot.hs 30 -display :: IORef Int -> IORef Int -> DisplayCallback -display shoulder elbow = do +display :: State -> DisplayCallback +display state = do hunk ./examples/RedBook/Robot.hs 38 - s <- get shoulder + s <- get (shoulder state) hunk ./examples/RedBook/Robot.hs 45 - e <- get elbow + e <- get (elbow state) hunk ./examples/RedBook/Robot.hs 65 -keyboard :: IORef Int -> IORef Int -> KeyboardMouseCallback -keyboard shoulder _ (Char 's') Down _ _ = update shoulder 5 -keyboard shoulder _ (Char 'S') Down _ _ = update shoulder (-5) -keyboard _ elbow (Char 'e') Down _ _ = update elbow 5 -keyboard _ elbow (Char 'E') Down _ _ = update elbow (-5) -keyboard _ _ (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard _ _ _ _ _ _ = return () - -update :: IORef Int -> Int -> IO () -update angle inc = do - angle $~ ((`mod` 360) . (+ inc)) - postRedisplay Nothing +keyboard :: State -> KeyboardMouseCallback +keyboard state (Char c) Down _ _ = case c of + 's' -> update shoulder 5 + 'S' -> update shoulder (-5) + 'e' -> update elbow 5 + 'E' -> update elbow (-5) + '\27' -> exitWith ExitSuccess + _ -> return () + where update joint inc = do + joint state $~ ((`mod` 360) . (+ inc)) + postRedisplay Nothing +keyboard _ _ _ _ _ = return () hunk ./examples/RedBook/Robot.hs 86 - shoulder <- newIORef 0 - elbow <- newIORef 0 - displayCallback $= display shoulder elbow + state <- makeState + displayCallback $= display state hunk ./examples/RedBook/Robot.hs 89 - keyboardMouseCallback $= Just (keyboard shoulder elbow) + keyboardMouseCallback $= Just (keyboard state) hunk ./examples/RedBook/Planet.hs 16 +-- we lump together our global state (and still call this Haskell :-) +data State = State { year, day :: IORef GLint } + +makeState :: IO State +makeState = do + y <- newIORef 0 + d <- newIORef 0 + return $ State { year = y, day = d } + hunk ./examples/RedBook/Planet.hs 30 -display :: IORef Int -> IORef Int -> DisplayCallback -display year day = do +display :: State -> DisplayCallback +display state = do hunk ./examples/RedBook/Planet.hs 40 - y <- get year + y <- get (year state) hunk ./examples/RedBook/Planet.hs 43 - d <- get day + d <- get (day state) hunk ./examples/RedBook/Planet.hs 59 -keyboard :: IORef Int -> IORef Int -> KeyboardMouseCallback -keyboard day _ (Char 'd') Down _ _ = update day 10 -keyboard day _ (Char 'D') Down _ _ = update day (-10) -keyboard _ year (Char 'y') Down _ _ = update year 5 -keyboard _ year (Char 'Y') Down _ _ = update year ( -5) -keyboard _ _ (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard _ _ _ _ _ _ = return () - -update :: IORef Int -> Int -> IO () -update angle inc = do - angle $~ ((`mod` 360) . (+ inc)) - postRedisplay Nothing +keyboard :: State -> KeyboardMouseCallback +keyboard state (Char c) Down _ _ = case c of + 'd' -> update day 10 + 'D' -> update day (-10) + 'y' -> update year 10 + 'Y' -> update year (-10) + '\27' -> exitWith ExitSuccess + _ -> return () + where update angle inc = do + angle state $~ ((`mod` 360) . (+ inc)) + postRedisplay Nothing +keyboard _ _ _ _ _ = return () hunk ./examples/RedBook/Planet.hs 80 - year <- newIORef 0 - day <- newIORef 0 - displayCallback $= display year day + state <- makeState + displayCallback $= display state hunk ./examples/RedBook/Planet.hs 83 - keyboardMouseCallback $= Just (keyboard year day) + keyboardMouseCallback $= Just (keyboard state) hunk ./examples/RedBook/UnProject.hs 36 - Just w0 <- unProject (Vertex3 (fromIntegral x) (fromIntegral realY) 0) mvMatrix projMatrix v + w0 <- unProject (Vertex3 (fromIntegral x) (fromIntegral realY) 0) mvMatrix projMatrix v hunk ./examples/RedBook/UnProject.hs 38 - Just w1 <- unProject (Vertex3 (fromIntegral x) (fromIntegral realY) 1) mvMatrix projMatrix v + w1 <- unProject (Vertex3 (fromIntegral x) (fromIntegral realY) 1) mvMatrix projMatrix v hunk ./examples/RedBook/ColorMat.hs 16 --- we lump together our global state (and still call this Haskell :-) hunk ./examples/RedBook/ColorMat.hs 34 -myInit :: IO State -myInit = do +myInit :: State -> IO () +myInit state = do hunk ./examples/RedBook/ColorMat.hs 39 - state <- makeState hunk ./examples/RedBook/ColorMat.hs 47 - return state hunk ./examples/RedBook/ColorMat.hs 89 - state <- myInit + state <- makeState + myInit state hunk ./examples/RedBook/CubeMap.hs 19 +data State = State { zTrans :: IORef GLfloat } + +makeState :: IO State +makeState = do + z <- newIORef 0 + return $ State { zTrans = z } + hunk ./examples/RedBook/CubeMap.hs 76 -display :: IORef GLfloat -> DisplayCallback -display zTrans = do +display :: State -> DisplayCallback +display state = do hunk ./examples/RedBook/CubeMap.hs 80 - z <- get zTrans + z <- get (zTrans state) hunk ./examples/RedBook/CubeMap.hs 95 -keyboard :: IORef GLfloat -> KeyboardMouseCallback -keyboard zTrans (Char 'f') Down _ _ = move zTrans (-0.2) -keyboard zTrans (Char 'b') Down _ _ = move zTrans 0.2 -keyboard _ (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard _ _ _ _ _ = return () +keyboard :: State -> KeyboardMouseCallback +keyboard state (Char 'f') Down _ _ = move state (-0.2) +keyboard state (Char 'b') Down _ _ = move state 0.2 +keyboard _ (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard _ _ _ _ _ = return () hunk ./examples/RedBook/CubeMap.hs 101 -move :: IORef GLfloat -> GLfloat -> IO () -move zTrans inc = do - zTrans $~ (+ inc) +move :: State -> GLfloat -> IO () +move state inc = do + zTrans state $~ (+ inc) hunk ./examples/RedBook/CubeMap.hs 113 + state <- makeState hunk ./examples/RedBook/CubeMap.hs 115 - zTrans <- newIORef 0 - displayCallback $= display zTrans + displayCallback $= display state hunk ./examples/RedBook/CubeMap.hs 117 - keyboardMouseCallback $= Just (keyboard zTrans) + keyboardMouseCallback $= Just (keyboard state) hunk ./examples/RedBook/Double.hs 16 -display :: IORef GLfloat -> DisplayCallback -display spin = do +data State = State { spin :: IORef GLfloat } + +makeState :: IO State +makeState = do + s <- newIORef 0 + return $ State { spin = s } + +display :: State -> DisplayCallback +display state = do hunk ./examples/RedBook/Double.hs 27 - s <- get spin + s <- get (spin state) hunk ./examples/RedBook/Double.hs 33 -spinDisplay :: IORef GLfloat -> IdleCallback -spinDisplay spin = do +spinDisplay :: State -> IdleCallback +spinDisplay state = do hunk ./examples/RedBook/Double.hs 36 - spin $~ (wrap 360 . (+ 2)) + spin state $~ (wrap 360 . (+ 2)) hunk ./examples/RedBook/Double.hs 53 -keyboardMouse :: IORef GLfloat -> KeyboardMouseCallback -keyboardMouse spin (MouseButton b) Down _ _ = +keyboardMouse :: State -> KeyboardMouseCallback +keyboardMouse state (MouseButton b) Down _ _ = hunk ./examples/RedBook/Double.hs 56 - LeftButton -> Just (spinDisplay spin) + LeftButton -> Just (spinDisplay state) hunk ./examples/RedBook/Double.hs 71 + state <- makeState hunk ./examples/RedBook/Double.hs 73 - spin <- newIORef 0 - displayCallback $= display spin + displayCallback $= display state hunk ./examples/RedBook/Double.hs 75 - keyboardMouseCallback $= Just (keyboardMouse spin) + keyboardMouseCallback $= Just (keyboardMouse state) hunk ./examples/RedBook/Image.hs 25 +data State = State { zoomFactor :: IORef GLfloat } + +makeState :: IO State +makeState = do + z <- newIORef 1 + return $ State { zoomFactor = z } + hunk ./examples/RedBook/Image.hs 72 -motion :: IORef GLfloat -> MotionCallback -motion zoomFactor (Position x y) = do +motion :: State -> MotionCallback +motion state (Position x y) = do hunk ./examples/RedBook/Image.hs 79 - z <- get zoomFactor + z <- get (zoomFactor state) hunk ./examples/RedBook/Image.hs 85 -resetZoomFactor :: IORef GLfloat -> IO () -resetZoomFactor zoomFactor = do - zoomFactor $= 1.0 +resetZoomFactor :: State -> IO () +resetZoomFactor state = do + zoomFactor state $= 1.0 hunk ./examples/RedBook/Image.hs 91 -incZoomFactor :: IORef GLfloat -> GLfloat -> IO () -incZoomFactor zoomFactor inc = do - zoomFactor $~! (max 0.5 . min 3.0 . (+ inc)) - get zoomFactor >>= putStrLn . ("zoomFactor is now " ++) . show +incZoomFactor :: State -> GLfloat -> IO () +incZoomFactor state inc = do + zoomFactor state $~! (max 0.5 . min 3.0 . (+ inc)) + get (zoomFactor state) >>= putStrLn . ("zoomFactor is now " ++) . show hunk ./examples/RedBook/Image.hs 96 -keyboard :: IORef GLfloat -> KeyboardMouseCallback -keyboard zoomFactor (Char 'r') Down _ _ = resetZoomFactor zoomFactor -keyboard zoomFactor (Char 'R') Down _ _ = resetZoomFactor zoomFactor -keyboard zoomFactor (Char 'z') Down _ _ = incZoomFactor zoomFactor 0.5 -keyboard zoomFactor (Char 'Z') Down _ _ = incZoomFactor zoomFactor (-0.5) -keyboard _ (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard _ _ _ _ _ = return () +keyboard :: State -> KeyboardMouseCallback +keyboard state (Char 'r') Down _ _ = resetZoomFactor state +keyboard state (Char 'R') Down _ _ = resetZoomFactor state +keyboard state (Char 'z') Down _ _ = incZoomFactor state 0.5 +keyboard state (Char 'Z') Down _ _ = incZoomFactor state (-0.5) +keyboard _ (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard _ _ _ _ _ = return () hunk ./examples/RedBook/Image.hs 111 + state <- makeState hunk ./examples/RedBook/Image.hs 115 - zoomFactor <- newIORef 1.0 - keyboardMouseCallback $= Just (keyboard zoomFactor) - motionCallback $= Just (motion zoomFactor) + keyboardMouseCallback $= Just (keyboard state) + motionCallback $= Just (motion state) hunk ./examples/RedBook/MoveLight.hs 25 +data State = State { spin :: IORef Int } + +makeState :: IO State +makeState = do + s <- newIORef 0 + return $ State { spin = s } + hunk ./examples/RedBook/MoveLight.hs 40 -display :: IORef Int -> DisplayCallback -display spin = do +display :: State -> DisplayCallback +display state = do hunk ./examples/RedBook/MoveLight.hs 46 - s <- get spin + s <- get (spin state) hunk ./examples/RedBook/MoveLight.hs 66 -keyboardMouse :: IORef Int -> KeyboardMouseCallback -keyboardMouse spin (MouseButton LeftButton) Down _ _ = do - spin $~ ((`mod` 360) . (+ 30)) +keyboardMouse :: State -> KeyboardMouseCallback +keyboardMouse state (MouseButton LeftButton) Down _ _ = do + spin state $~ ((`mod` 360) . (+ 30)) hunk ./examples/RedBook/MoveLight.hs 80 + state <- makeState hunk ./examples/RedBook/MoveLight.hs 82 - spin <- newIORef 0 - displayCallback $= display spin + displayCallback $= display state hunk ./examples/RedBook/MoveLight.hs 84 - keyboardMouseCallback $= Just (keyboardMouse spin) + keyboardMouseCallback $= Just (keyboardMouse state) hunk ./examples/RedBook/PickSquare.hs 19 +data State = State { board :: Board } + +makeState :: IO State +makeState = do + refs <- sequence . replicate 9 . newIORef $ 0 + return $ State { board = listArray ((0,0),(2,2)) refs } + hunk ./examples/RedBook/PickSquare.hs 27 -myInit :: IO Board +myInit :: IO () hunk ./examples/RedBook/PickSquare.hs 30 - refs <- sequence . replicate 9 . newIORef $ 0 - return $ listArray ((0,0),(2,2)) refs hunk ./examples/RedBook/PickSquare.hs 37 -drawSquares :: Board -> IO () -drawSquares board = +drawSquares :: State -> IO () +drawSquares state = hunk ./examples/RedBook/PickSquare.hs 43 - val <- get (board ! (i,j)) + val <- get (board state ! (i,j)) hunk ./examples/RedBook/PickSquare.hs 52 -processHits :: Maybe[HitRecord] -> Board -> IO () +processHits :: Maybe[HitRecord] -> State -> IO () hunk ./examples/RedBook/PickSquare.hs 54 -processHits (Just hitRecords) board = do +processHits (Just hitRecords) state = do hunk ./examples/RedBook/PickSquare.hs 64 - (board ! (i,j)) $~ (\x -> (x + 1) `mod` 3)) + (board state ! (i,j)) $~ (\x -> (x + 1) `mod` 3)) hunk ./examples/RedBook/PickSquare.hs 73 -pickSquares :: Board -> KeyboardMouseCallback -pickSquares board (MouseButton LeftButton) Down _ (Position x y) = do +pickSquares :: State -> KeyboardMouseCallback +pickSquares state (MouseButton LeftButton) Down _ (Position x y) = do hunk ./examples/RedBook/PickSquare.hs 84 - drawSquares board + drawSquares state hunk ./examples/RedBook/PickSquare.hs 86 - processHits maybeHitRecords board + processHits maybeHitRecords state hunk ./examples/RedBook/PickSquare.hs 91 -display :: Board -> DisplayCallback -display board = do +display :: State -> DisplayCallback +display state = do hunk ./examples/RedBook/PickSquare.hs 94 - drawSquares board + drawSquares state hunk ./examples/RedBook/PickSquare.hs 114 - board <- myInit + state <- makeState + myInit hunk ./examples/RedBook/PickSquare.hs 117 - displayCallback $= display board - keyboardMouseCallback $= Just (pickSquares board) + displayCallback $= display state + keyboardMouseCallback $= Just (pickSquares state) hunk ./examples/RedBook/Planet.hs 16 --- we lump together our global state (and still call this Haskell :-) hunk ./examples/RedBook/Planet.hs 78 - myInit hunk ./examples/RedBook/Planet.hs 79 + myInit hunk ./examples/RedBook/Robot.hs 16 --- we lump together our global state (and still call this Haskell :-) hunk ./examples/RedBook/Robot.hs 84 - myInit hunk ./examples/RedBook/Robot.hs 85 + myInit hunk ./examples/RedBook/ShadowMap.hs 32 --- we lump together our global state (and still call this Haskell :-) hunk ./examples/RedBook/ShadowMap.hs 49 -myInit :: IO State +myInit :: IO () hunk ./examples/RedBook/ShadowMap.hs 74 - makeState - hunk ./examples/RedBook/ShadowMap.hs 248 - - state <- myInit - + state <- makeState + myInit hunk ./examples/RedBook/TessWind.hs 17 +data State = State { currentWindingRule :: IORef TessWinding } + +makeState :: IO State +makeState = do + c <- newIORef TessWindingOdd + return $ State { currentWindingRule = c } + hunk ./examples/RedBook/TessWind.hs 103 -makeNewLists :: IORef TessWinding -> DisplayLists -> IO () -makeNewLists currentWindingRule (dl1, dl2, dl3, dl4) = do - windingRule <- get currentWindingRule +makeNewLists :: State -> DisplayLists -> IO () +makeNewLists state (dl1, dl2, dl3, dl4) = do + windingRule <- get (currentWindingRule state) hunk ./examples/RedBook/TessWind.hs 145 -myInit :: IORef TessWinding -> IO DisplayLists -myInit currentWindingRule = do +myInit :: State -> IO DisplayLists +myInit state = do hunk ./examples/RedBook/TessWind.hs 151 - makeNewLists currentWindingRule displayLists + makeNewLists state displayLists hunk ./examples/RedBook/TessWind.hs 167 -keyboard :: IORef TessWinding -> DisplayLists -> KeyboardMouseCallback -keyboard currentWindingRule displayLists (Char c) Down _ _ = case toLower c of - 'w' -> do currentWindingRule $~ nextWindingRule - makeNewLists currentWindingRule displayLists +keyboard :: State -> DisplayLists -> KeyboardMouseCallback +keyboard state displayLists (Char c) Down _ _ = case toLower c of + 'w' -> do currentWindingRule state $~ nextWindingRule + makeNewLists state displayLists hunk ./examples/RedBook/TessWind.hs 190 - currentWindingRule <- newIORef TessWindingOdd - displayLists <- myInit currentWindingRule + state <- makeState + displayLists <- myInit state hunk ./examples/RedBook/TessWind.hs 194 - keyboardMouseCallback $= Just (keyboard currentWindingRule displayLists) + keyboardMouseCallback $= Just (keyboard state displayLists) hunk ./examples/RedBook/VArray.hs 52 --- we lump together our global state (and still call this Haskell :-) hunk ./examples/RedBook/VArray.hs 83 -myInit :: IO State -myInit = do +myInit :: State -> IO () +myInit state = do hunk ./examples/RedBook/VArray.hs 87 - state <- makeState hunk ./examples/RedBook/VArray.hs 88 - return state hunk ./examples/RedBook/VArray.hs 136 - state <- myInit + state <- makeState + myInit state hunk ./examples/Misc/ARBOcclude.hs 13 +data State = State { + anim :: IORef Bool, + xPos :: IORef GLfloat, + sign :: IORef GLfloat, + lastTime :: IORef Int } + +makeState :: IO State +makeState = do + a <- newIORef True + x <- newIORef 0 + s <- newIORef 1 + l <- newIORef =<< get elapsedTime + return $ State { anim = a, xPos = x, sign = s, lastTime = l } + hunk ./examples/Misc/ARBOcclude.hs 38 -idle :: IORef GLfloat -> IORef GLfloat -> IORef Int -> IdleCallback -idle xPos sign lastTime = do +idle :: State -> IdleCallback +idle state = do hunk ./examples/Misc/ARBOcclude.hs 41 - l <- get lastTime + l <- get (lastTime state) hunk ./examples/Misc/ARBOcclude.hs 45 - lastTime $= time + lastTime state $= time hunk ./examples/Misc/ARBOcclude.hs 47 - s <- get sign - step xPos (timeDiff / 1000 * s) - x <- get xPos + s <- get (sign state) + step state (timeDiff / 1000 * s) + x <- get (xPos state) hunk ./examples/Misc/ARBOcclude.hs 52 - xPos $= 2.5 - sign $= (-1) + xPos state $= 2.5 + sign state $= (-1) hunk ./examples/Misc/ARBOcclude.hs 56 - xPos $= (-2.5) - sign $= 1 + xPos state $= (-2.5) + sign state $= 1 hunk ./examples/Misc/ARBOcclude.hs 59 -display :: QueryObject -> IORef GLfloat -> DisplayCallback -display occQuery xPos = do +display :: QueryObject -> State -> DisplayCallback +display occQuery state = do hunk ./examples/Misc/ARBOcclude.hs 74 - x <- get xPos + x <- get (xPos state) hunk ./examples/Misc/ARBOcclude.hs 147 -keyboard :: IORef Bool -> IORef GLfloat -> IORef GLfloat -> IORef Int -> KeyboardMouseCallback -keyboard _ _ _ _ (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard anim xPos sign lastTime (Char ' ') Down _ _ = do anim $~ not - setIdleCallback anim xPos sign lastTime -keyboard _ xPos _ _ (SpecialKey KeyLeft) Down _ _ = step xPos (-0.1) -keyboard _ xPos _ _ (SpecialKey KeyRight) Down _ _ = step xPos 0.1 -keyboard _ _ _ _ _ _ _ _ = return () +keyboard :: State -> KeyboardMouseCallback +keyboard _ (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard state (Char ' ') Down _ _ = do anim state $~ not + setIdleCallback state +keyboard state (SpecialKey KeyLeft) Down _ _ = step state (-0.1) +keyboard state (SpecialKey KeyRight) Down _ _ = step state 0.1 +keyboard _ _ _ _ _ = return () hunk ./examples/Misc/ARBOcclude.hs 155 -setIdleCallback :: IORef Bool -> IORef GLfloat -> IORef GLfloat -> IORef Int -> IO () -setIdleCallback anim xPos sign lastTime = do - a <- get anim - idleCallback $= if a then Just (idle xPos sign lastTime) else Nothing +setIdleCallback :: State -> IO () +setIdleCallback state = do + a <- get (anim state) + idleCallback $= if a then Just (idle state) else Nothing hunk ./examples/Misc/ARBOcclude.hs 160 -step :: IORef GLfloat -> GLfloat -> IO () -step xPos s = do - xPos $~ (+ s) +step :: State -> GLfloat -> IO () +step state s = do + xPos state $~ (+ s) hunk ./examples/Misc/ARBOcclude.hs 186 + state <- makeState hunk ./examples/Misc/ARBOcclude.hs 188 - anim <- newIORef True - xPos <- newIORef 0 - sign <- newIORef 1 - lastTime <- get elapsedTime >>= newIORef - keyboardMouseCallback $= Just (keyboard anim xPos sign lastTime) - setIdleCallback anim xPos sign lastTime + keyboardMouseCallback $= Just (keyboard state) + setIdleCallback state hunk ./examples/Misc/ARBOcclude.hs 191 - displayCallback $= display occQuery xPos + displayCallback $= display occQuery state hunk ./examples/Misc/Gears.hs 27 +data State = State { + frames :: IORef Int, + t0 :: IORef Int, + viewRot :: IORef View, + angle' :: IORef GLfloat } + +makeState :: IO State +makeState = do + f <- newIORef 0 + t <- newIORef 0 + v <- newIORef (20, 30, 0) + a <- newIORef 0 + return $ State { frames = f, t0 = t, viewRot = v, angle' = a } + hunk ./examples/Misc/Gears.hs 150 -draw :: (DisplayList,DisplayList,DisplayList,Int) -> IORef Int -> IORef Int -> IORef View -> IORef GLfloat -> IO () -draw (gear1, gear2, gear3, autoexit) frames t0 viewRot angle = do +draw :: (DisplayList,DisplayList,DisplayList,Int) -> State -> IO () +draw (gear1, gear2, gear3, autoexit) state = do hunk ./examples/Misc/Gears.hs 153 - (x, y, z) <- get viewRot - a <- get angle + (x, y, z) <- get (viewRot state) + a <- get (angle' state) hunk ./examples/Misc/Gears.hs 178 - frames $~! (+1) - t0' <- get t0 + frames state $~! (+1) + t0' <- get (t0 state) hunk ./examples/Misc/Gears.hs 182 - f <- get frames + f <- get (frames state) hunk ./examples/Misc/Gears.hs 186 - t0 $= t - frames $= 0 + t0 state $= t + frames state $= 0 hunk ./examples/Misc/Gears.hs 191 -idle :: IORef GLfloat -> IdleCallback -idle angle = do - angle $~! (+2) +idle :: State -> IdleCallback +idle state = do + angle' state $~! (+2) hunk ./examples/Misc/Gears.hs 196 -keyboard :: IORef View -> KeyboardMouseCallback -keyboard viewRot (Char 'z') _ _ _ = modRot viewRot ( 0, 0, 5) -keyboard viewRot (Char 'Z') _ _ _ = modRot viewRot ( 0, 0, -5) -keyboard viewRot (SpecialKey KeyUp) _ _ _ = modRot viewRot ( 5, 0, 0) -keyboard viewRot (SpecialKey KeyDown) _ _ _ = modRot viewRot (-5, 0, 0) -keyboard viewRot (SpecialKey KeyLeft) _ _ _ = modRot viewRot ( 0, 5, 0) -keyboard viewRot (SpecialKey KeyRight)_ _ _ = modRot viewRot ( 0, -5, 0) -keyboard _ (Char '\27') _ _ _ = exitWith ExitSuccess -keyboard _ _ _ _ _ = return () +keyboard :: State -> KeyboardMouseCallback +keyboard state (Char 'z') _ _ _ = modRot state ( 0, 0, 5) +keyboard state (Char 'Z') _ _ _ = modRot state ( 0, 0, -5) +keyboard state (SpecialKey KeyUp) _ _ _ = modRot state ( 5, 0, 0) +keyboard state (SpecialKey KeyDown) _ _ _ = modRot state (-5, 0, 0) +keyboard state (SpecialKey KeyLeft) _ _ _ = modRot state ( 0, 5, 0) +keyboard state (SpecialKey KeyRight)_ _ _ = modRot state ( 0, -5, 0) +keyboard _ (Char '\27') _ _ _ = exitWith ExitSuccess +keyboard _ _ _ _ _ = return () hunk ./examples/Misc/Gears.hs 206 -modRot :: IORef View -> View -> IO () -modRot viewRot (dx,dy,dz) = do - (x, y, z) <- get viewRot - viewRot $= (x + dx, y + dy, z + dz) +modRot :: State -> View -> IO () +modRot state (dx,dy,dz) = do + (x, y, z) <- get (viewRot state) + viewRot state $= (x + dx, y + dy, z + dz) hunk ./examples/Misc/Gears.hs 282 -visible :: IORef GLfloat -> Visibility -> IO () -visible angle Visible = idleCallback $= Just (idle angle) +visible :: State -> Visibility -> IO () +visible state Visible = idleCallback $= Just (idle state) hunk ./examples/Misc/Gears.hs 294 + state <- makeState hunk ./examples/Misc/Gears.hs 296 - frames <- newIORef 0 - t0 <- newIORef 0 - viewRot <- newIORef (20, 30, 0) - angle <- newIORef 0 hunk ./examples/Misc/Gears.hs 297 - displayCallback $= draw gearsAndAuto frames t0 viewRot angle + displayCallback $= draw gearsAndAuto state hunk ./examples/Misc/Gears.hs 299 - keyboardMouseCallback $= Just (keyboard viewRot) - visibilityCallback $= Just (visible angle) + keyboardMouseCallback $= Just (keyboard state) + visibilityCallback $= Just (visible state) hunk ./examples/RedBook/00-README 122 +Some remarks regarding the style of the programs: + +To ease comparisons, the Haskell programs in this directory try to stay as +close to the original examples in C as possible. Consequently, they should +not be considered as examples for the best way to implement things in +Haskell. + +The Haskell OpenGL binding uses overloading quite extensively, which makes +its use quite flexible, e.g.: + + class Vertex a where + vertex :: a -> IO () + vertexv :: Ptr a -> IO () + +This single class subsumes all 24 vertex specification calls in OpenGL's C +binding, i.e. glVertex{234}{sifd}[v](), with the help of the following +class and instances: + + class VertexComponent a -- an opaque class + + VertexComponent GLshort + VertexComponent GLint + VertexComponent GLfloat + VertexComponent GLdouble + + VertexComponent a => Vertex (Vertex2 a) + VertexComponent a => Vertex (Vertex3 a) + VertexComponent a => Vertex (Vertex4 a) + +There is a small inconvenience with this when used in "toy" programs: +Haskell's numeric literals are overloaded, too, so the programmer's help is +needed to disambiguate the type of expressions like: + + vertex (Vertex3 0 0 1) + +Let's assume we mean the equivalent of glVertex3f() here. One can either +use an explicitly typed helper function: + + let vertex3f = vertex :: Vertex3 GLfloat -> IO () + in vertex3f (Vertex3 0 0 1) + +This comes in handy when there are a lot of uses of vertex3f. An +alternative is to use a type annotation for the literal: + + vertex (Vertex3 0 0 (1 :: GLfloat)) + +or a type annotation for the vertex: + + vertex (Vertex3 0 0 1 :: Vertex3 GLfloat) + +This is largely a matter of taste and normally not a problem in "real" +programs with type signatures for functions. + +Sometimes different callbacks need to share some state, which is done via +global variables in the C examples. To achieve a unified presentation, all +Haskell examples use a `State' type for this purpose, which collects the +different parts of the global state, i.e. one or more IORefs. There are +alternatives for modeling this, which should be considered in own programs, +depending on the use cases: + + * Separate IORefs: This makes it explicit which parts of the program need + which parts of the state. + + * A single IORef/MVar containing all the state: This enables one to change + the whole state atomically, which is often quite handy in multithreaded + programs. + + * A custom monad: This can hide all the state threading behind the scenes. + addfile ./examples/RedBook/Scene.hs addfile ./examples/RedBook/Teapots.hs hunk ./examples/RedBook/Scene.hs 1 +{- + Scene.hs (adapted from scene.c which is (c) Silicon Graphics, Inc.) + Copyright (c) Sven Panne 2002-2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program demonstrates the use of the GL lighting model. Objects are + drawn using a grey material characteristic. A single light source + illuminates the objects. +-} + +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +-- Initialize material property and light source. +myInit :: IO () +myInit = do + ambient (Light 0) $= Color4 0 0 0 1 + diffuse (Light 0) $= Color4 1 1 1 1 + specular (Light 0) $= Color4 1 1 1 1 + -- light position is NOT default value + position (Light 0) $= Vertex4 1 1 1 0 + + lighting $= Enabled + light (Light 0) $= Enabled + depthFunc $= Just Less + +display :: DisplayCallback +display = do + clear [ ColorBuffer, DepthBuffer ] + preservingMatrix $ do + rotate (20 :: GLfloat) (Vector3 1 0 0) + preservingMatrix $ do + translate (Vector3 (-0.75) 0.5 (0 :: GLfloat)) + rotate (90 :: GLfloat) (Vector3 1 0 0) + renderObject Solid (Torus 0.275 0.85 15 15) + preservingMatrix $ do + translate (Vector3 (-0.75) (-0.5) (0 :: GLfloat)) + rotate (270 :: GLfloat) (Vector3 1 0 0) + renderObject Solid (Cone 1 2 15 15) + preservingMatrix $ do + translate (Vector3 0.75 0 (-1 :: GLfloat)) + renderObject Solid (Sphere' 1 15 15) + flush + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + let wf = fromIntegral w + hf = fromIntegral h + if w <= h + then ortho (-2.5) 2.5 (-2.5 * hf/wf) (2.5 * hf/wf) (-10) 10 + else ortho (-2.5 * wf/hf) (2.5 * wf/hf) (-2.5) 2.5 (-10) 10 + matrixMode $= Modelview 0 + loadIdentity + +keyboard :: KeyboardMouseCallback +keyboard (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard _ _ _ _ = return () + +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] + initialWindowSize $= Size 500 500 + createWindow progName + myInit + reshapeCallback $= Just reshape + displayCallback $= display + keyboardMouseCallback $= Just keyboard + mainLoop hunk ./examples/RedBook/Teapots.hs 1 +{- + Teapots.hs (adapted from teapots.c which is (c) Silicon Graphics, Inc.) + Copyright (c) Sven Panne 2002-2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program demonstrates lots of material properties. A single light + source illuminates the objects. +-} + +import Control.Monad ( liftM ) +import Data.Maybe ( fromJust ) +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +-- Initialize depth buffer, projection matrix, light source, and lighting +-- model. Do not specify a material property here. +myInit :: IO DisplayList +myInit = do + ambient (Light 0) $= Color4 0 0 0 1 + diffuse (Light 0) $= Color4 1 1 1 1 + position (Light 0) $= Vertex4 0 3 3 0 + lightModelAmbient $= Color4 0.2 0.2 0.2 1 + lightModelLocalViewer $= Disabled + + frontFace $= CW + lighting $= Enabled + light (Light 0) $= Enabled + autoNormal $= Enabled + normalize $= Enabled + depthFunc $= Just Less + -- be efficient--make teapot display list + liftM fromJust $ defineNewList Compile $ + renderObject Solid (Teapot 1) + +-- Move object into position, specify the material properties, draw a teapot. +renderTeapot :: DisplayList -> Vector3 GLfloat -> Color4 GLfloat -> Color4 GLfloat -> Color4 GLfloat -> GLfloat -> IO () +renderTeapot teapotList pos amb dif spec shine = do + preservingMatrix $ do + translate pos + materialAmbient Front $= amb + materialDiffuse Front $= dif + materialSpecular Front $= spec + materialShininess Front $= shine * 128 + callList teapotList + +-- 1st column: emerald, jade, obsidian, pearl, ruby, turquoise +-- 2nd column: brass, bronze, chrome, copper, gold, silver +-- 3rd column: black, cyan, green, red, white, yellow plastic +-- 4th column: black, cyan, green, red, white, yellow rubber +display :: DisplayList -> DisplayCallback +display teapotList = do + clear [ ColorBuffer, DepthBuffer ] + renderTeapot teapotList (Vector3 2 17 0) (Color4 0.0215 0.1745 0.0215 1) (Color4 0.07568 0.61424 0.07568 1) (Color4 0.633 0.727811 0.633 1) 0.6 + renderTeapot teapotList (Vector3 2 14 0) (Color4 0.135 0.2225 0.1575 1) (Color4 0.54 0.89 0.63 1) (Color4 0.316228 0.316228 0.316228 1) 0.1 + renderTeapot teapotList (Vector3 2 11 0) (Color4 0.05375 0.05 0.06625 1) (Color4 0.18275 0.17 0.22525 1) (Color4 0.332741 0.328634 0.346435 1) 0.3 + renderTeapot teapotList (Vector3 2 8 0) (Color4 0.25 0.20725 0.20725 1) (Color4 1 0.829 0.829 1) (Color4 0.296648 0.296648 0.296648 1) 0.088 + renderTeapot teapotList (Vector3 2 5 0) (Color4 0.1745 0.01175 0.01175 1) (Color4 0.61424 0.04136 0.04136 1) (Color4 0.727811 0.626959 0.626959 1) 0.6 + renderTeapot teapotList (Vector3 2 2 0) (Color4 0.1 0.18725 0.1745 1) (Color4 0.396 0.74151 0.69102 1) (Color4 0.297254 0.30829 0.306678 1) 0.1 + renderTeapot teapotList (Vector3 6 17 0) (Color4 0.329412 0.223529 0.027451 1) (Color4 0.780392 0.568627 0.113725 1) (Color4 0.992157 0.941176 0.807843 1) 0.21794872 + renderTeapot teapotList (Vector3 6 14 0) (Color4 0.2125 0.1275 0.054 1) (Color4 0.714 0.4284 0.18144 1) (Color4 0.393548 0.271906 0.166721 1) 0.2 + renderTeapot teapotList (Vector3 6 11 0) (Color4 0.25 0.25 0.25 1) (Color4 0.4 0.4 0.4 1) (Color4 0.774597 0.774597 0.774597 1) 0.6 + renderTeapot teapotList (Vector3 6 8 0) (Color4 0.19125 0.0735 0.0225 1) (Color4 0.7038 0.27048 0.0828 1) (Color4 0.256777 0.137622 0.086014 1) 0.1 + renderTeapot teapotList (Vector3 6 5 0) (Color4 0.24725 0.1995 0.0745 1) (Color4 0.75164 0.60648 0.22648 1) (Color4 0.628281 0.555802 0.366065 1) 0.4 + renderTeapot teapotList (Vector3 6 2 0) (Color4 0.19225 0.19225 0.19225 1) (Color4 0.50754 0.50754 0.50754 1) (Color4 0.508273 0.508273 0.508273 1) 0.4 + renderTeapot teapotList (Vector3 10 17 0) (Color4 0 0 0 1) (Color4 0.01 0.01 0.01 1) (Color4 0.50 0.50 0.50 1) 0.25 + renderTeapot teapotList (Vector3 10 14 0) (Color4 0 0.1 0.06 1) (Color4 0 0.50980392 0.50980392 1) (Color4 0.50196078 0.50196078 0.50196078 1) 0.25 + renderTeapot teapotList (Vector3 10 11 0) (Color4 0 0 0 1) (Color4 0.1 0.35 0.1 1) (Color4 0.45 0.55 0.45 1) 0.25 + renderTeapot teapotList (Vector3 10 8 0) (Color4 0 0 0 1) (Color4 0.5 0 0 1) (Color4 0.7 0.6 0.6 1) 0.25 + renderTeapot teapotList (Vector3 10 5 0) (Color4 0 0 0 1) (Color4 0.55 0.55 0.55 1) (Color4 0.70 0.70 0.70 1) 0.25 + renderTeapot teapotList (Vector3 10 2 0) (Color4 0 0 0 1) (Color4 0.5 0.5 0 1) (Color4 0.60 0.60 0.50 1) 0.25 + renderTeapot teapotList (Vector3 14 17 0) (Color4 0.02 0.02 0.02 1) (Color4 0.01 0.01 0.01 1) (Color4 0.4 0.4 0.4 1) 0.078125 + renderTeapot teapotList (Vector3 14 14 0) (Color4 0 0.05 0.05 1) (Color4 0.4 0.5 0.5 1) (Color4 0.04 0.7 0.7 1) 0.078125 + renderTeapot teapotList (Vector3 14 11 0) (Color4 0 0.05 0 1) (Color4 0.4 0.5 0.4 1) (Color4 0.04 0.7 0.04 1) 0.078125 + renderTeapot teapotList (Vector3 14 8 0) (Color4 0.05 0 0 1) (Color4 0.5 0.4 0.4 1) (Color4 0.7 0.04 0.04 1) 0.078125 + renderTeapot teapotList (Vector3 14 5 0) (Color4 0.05 0.05 0.05 1) (Color4 0.5 0.5 0.5 1) (Color4 0.7 0.7 0.7 1) 0.078125 + renderTeapot teapotList (Vector3 14 2 0) (Color4 0.05 0.05 0 1) (Color4 0.5 0.5 0.4 1) (Color4 0.7 0.7 0.04 1) 0.078125 + flush + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + let wf = fromIntegral w + hf = fromIntegral h + if w <= h + then ortho 0 16 0 (16 * hf/wf) (-10) 10 + else ortho 0 (16 * wf/hf) 0 16 (-10) 10 + matrixMode $= Modelview 0 + +keyboard :: KeyboardMouseCallback +keyboard (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard _ _ _ _ = return () + +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] + initialWindowSize $= Size 500 600 + initialWindowPosition $= Position 50 50 + createWindow progName + teapotList <- myInit + reshapeCallback $= Just reshape + displayCallback $= display teapotList + keyboardMouseCallback $= Just keyboard + mainLoop hunk ./examples/Misc/ExtractContours.hs 17 -import Control.Monad ( liftM ) -import Data.Maybe ( fromJust ) hunk ./examples/Misc/ExtractContours.hs 76 - rectAndTriList <- liftM fromJust $ defineNewList Compile $ + rectAndTriList <- defineNewList Compile $ hunk ./examples/Misc/ExtractContours.hs 80 - starList <- liftM fromJust $ defineNewList Compile $ + starList <- defineNewList Compile $ hunk ./examples/Misc/Gears.hs 15 -import Control.Monad ( when, liftM ) +import Control.Monad ( when ) hunk ./examples/Misc/Gears.hs 18 -import Data.Maybe ( fromJust ) hunk ./examples/Misc/Gears.hs 259 - g1 <- liftM fromJust $ defineNewList Compile $ do + g1 <- defineNewList Compile $ do hunk ./examples/Misc/Gears.hs 263 - g2 <- liftM fromJust $ defineNewList Compile $ do + g2 <- defineNewList Compile $ do hunk ./examples/Misc/Gears.hs 267 - g3 <- liftM fromJust $ defineNewList Compile $ do + g3 <- defineNewList Compile $ do hunk ./examples/Misc/Triangulate.hs 17 -import Control.Monad ( liftM ) -import Data.Maybe ( fromJust ) hunk ./examples/Misc/Triangulate.hs 67 - liftM fromJust $ defineNewList Compile $ + defineNewList Compile $ hunk ./examples/RedBook/Combiner.hs 26 -import Control.Monad ( liftM ) hunk ./examples/RedBook/Combiner.hs 27 -import Data.Maybe ( fromJust ) hunk ./examples/RedBook/Combiner.hs 77 - dl <- liftM fromJust $ defineNewList Compile $ + dl <- defineNewList Compile $ hunk ./examples/RedBook/Quadric.hs 12 -import Control.Monad ( liftM ) -import Data.Maybe ( fromJust ) hunk ./examples/RedBook/Quadric.hs 44 - liftM fromJust $ - defineNewList Compile $ do - renderQuadric (QuadricStyle n NoTextureCoordinates Outside s) p - reportErrors + defineNewList Compile $ do + renderQuadric (QuadricStyle n NoTextureCoordinates Outside s) p + reportErrors hunk ./examples/RedBook/Teapots.hs 11 -import Control.Monad ( liftM ) -import Data.Maybe ( fromJust ) hunk ./examples/RedBook/Teapots.hs 31 - liftM fromJust $ defineNewList Compile $ + defineNewList Compile $ hunk ./examples/RedBook/Tess.hs 17 -import Control.Monad ( liftM ) -import Data.Maybe ( fromJust ) hunk ./examples/RedBook/Tess.hs 76 - rectAndTriList <- liftM fromJust $ defineNewList Compile $ + rectAndTriList <- defineNewList Compile $ hunk ./examples/RedBook/Tess.hs 80 - starList <- liftM fromJust $ defineNewList Compile $ + starList <- defineNewList Compile $ hunk ./Graphics/UI/GLUT/Begin.hs 8 --- Stability : provisional +-- Stability : stable hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 8 --- Stability : provisional +-- Stability : stable hunk ./Graphics/UI/GLUT/Callbacks/Registration.hs 9 --- Stability : provisional +-- Stability : stable hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 8 --- Stability : provisional +-- Stability : stable hunk ./Graphics/UI/GLUT/Callbacks.hs 8 --- Stability : provisional +-- Stability : stable hunk ./Graphics/UI/GLUT/Colormap.hs 8 --- Stability : provisional +-- Stability : stable hunk ./Graphics/UI/GLUT/Constants.hs 9 --- Stability : provisional +-- Stability : stable hunk ./Graphics/UI/GLUT/Debugging.hs 8 --- Stability : provisional +-- Stability : stable hunk ./Graphics/UI/GLUT/DeviceControl.hs 8 --- Stability : provisional +-- Stability : stable hunk ./Graphics/UI/GLUT/Fonts.hs 8 --- Stability : provisional +-- Stability : stable hunk ./Graphics/UI/GLUT/GameMode.hs 8 --- Stability : provisional +-- Stability : stable hunk ./Graphics/UI/GLUT/Initialization.hs 8 --- Stability : provisional +-- Stability : stable hunk ./Graphics/UI/GLUT/Menu.hs 8 --- Stability : provisional +-- Stability : stable hunk ./Graphics/UI/GLUT/Objects.hs 8 --- Stability : provisional +-- Stability : stable hunk ./Graphics/UI/GLUT/Overlay.hs 8 --- Stability : provisional +-- Stability : stable hunk ./Graphics/UI/GLUT/QueryUtils.hs 9 --- Stability : provisional +-- Stability : stable hunk ./Graphics/UI/GLUT/State.hs 8 --- Stability : provisional +-- Stability : stable hunk ./Graphics/UI/GLUT/Types.hs 9 --- Stability : provisional +-- Stability : stable hunk ./Graphics/UI/GLUT/Window.hs 8 --- Stability : provisional +-- Stability : stable hunk ./Graphics/UI/GLUT.hs 8 --- Stability : provisional +-- Stability : stable addfile ./examples/RedBook/Surface.hs hunk ./examples/RedBook/Surface.hs 1 +{- + Surface.hs (adapted from surface.c which is (c) Silicon Graphics, Inc.) + Copyright (c) Sven Panne 2002-2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program draws a NURBS surface in the shape of a symmetrical hill. + The 'c' keyboard key allows you to toggle the visibility of the control + points themselves. Note that some of the control points are hidden by + the surface itself. +-} + +import Control.Monad ( when ) +import Data.Char ( toLower ) +import Data.IORef ( IORef, newIORef ) +import Foreign.Ptr ( castPtr ) +import Foreign.Marshal ( withArray ) +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +data State = State { showPoints :: IORef Bool } + +makeState :: IO State +makeState = do + s <- newIORef False + return $ State { showPoints = s } + +-- The control points of the surface form a small hill and +-- range from -3 to +3 in x, y, and z. +ctlPoints :: [[Vertex3 GLfloat]] +ctlPoints = + [ [ Vertex3 (2 * u - 3) + (2 * v - 3) + (if (u == 1 || u ==2) && (v == 1 || v == 2) then 3 else -3) + | v <- [ 0 .. 3 ] ] + | u <- [ 0 .. 3 ]] + +myInit :: IO () +myInit = do + clearColor $= Color4 0 0 0 0 + materialDiffuse Front $= Color4 0.7 0.7 0.7 1 + materialSpecular Front $= Color4 1 1 1 1 + materialShininess Front $= 100 + + lighting $= Enabled + light (Light 0) $= Enabled + depthFunc $= Just Less + autoNormal $= Enabled + normalize $= Enabled + +-------------------------------------------------------------------------------- + +display :: State -> DisplayCallback +display state = do + let knots = [ 0, 0, 0, 0, 1, 1, 1, 1 ] :: [GLfloat] + clear [ ColorBuffer, DepthBuffer ] + preservingMatrix $ do + rotate (330 :: GLfloat) (Vector3 1 0 0) + scale 0.5 0.5 (0.5 :: GLfloat) + + withNURBSObj () $ \nurbsObj -> do + setNURBSProperty nurbsObj (SamplingTolerance 25) + setNURBSProperty nurbsObj (DisplayMode Fill') + checkForError nurbsObj $ + nurbsBeginEndSurface nurbsObj $ + withArray (concat ctlPoints) $ \cBuf -> + withArray knots $ \kBuf -> + gluNurbsSurface nurbsObj 8 kBuf 8 kBuf (4 * 3) 3 (castPtr cBuf) 4 4 0xdb7 -- GL_MAP2_VERTEX_3 + + s <- get (showPoints state) + when s $ do + pointSize $= 5 + lighting $= Disabled + color (Color3 1 1 (0 :: GLfloat)) + renderPrimitive Points $ + mapM_ (mapM_ vertex) ctlPoints + lighting $= Enabled + + flush + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + perspective 45 (fromIntegral w / fromIntegral h) 3 8 + matrixMode $= Modelview 0 + loadIdentity + translate (Vector3 0 0 (-5 :: GLfloat)) + +keyboard :: State -> KeyboardMouseCallback +keyboard state (Char c) Down _ _ = case toLower c of + 'c' -> do showPoints state $~ not; postRedisplay Nothing + '\27' -> exitWith ExitSuccess + _ -> return () +keyboard _ _ _ _ _ = return () + +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] + initialWindowSize $= Size 500 500 + initialWindowPosition $= Position 100 100 + createWindow progName + state <- makeState + myInit + reshapeCallback $= Just reshape + displayCallback $= display state + keyboardMouseCallback $= Just (keyboard state) + mainLoop hunk ./examples/RedBook/Surface.hs 62 - setNURBSProperty nurbsObj (SamplingTolerance 25) - setNURBSProperty nurbsObj (DisplayMode Fill') + setSamplingMethod nurbsObj (PathLength 25) + setDisplayMode nurbsObj Fill' addfile ./examples/RedBook/Trim.hs hunk ./examples/RedBook/Trim.hs 1 +{- + Trim.hs (adapted from trim.c which is (c) Silicon Graphics, Inc.) + Copyright (c) Sven Panne 2002-2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program draws a NURBS surface in the shape of a symmetrical hill, + using both a NURBS curve and pwl (piecewise linear) curve to trim part + of the surface. +-} + +import Foreign.Ptr ( castPtr ) +import Foreign.Marshal ( withArray ) +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +-- The control points of the surface form a small hill and +-- range from -3 to +3 in x, y, and z. +ctlPoints :: [[Vertex3 GLfloat]] +ctlPoints = + [ [ Vertex3 (2 * u - 3) + (2 * v - 3) + (if (u == 1 || u ==2) && (v == 1 || v == 2) then 3 else -3) + | v <- [ 0 .. 3 ] ] + | u <- [ 0 .. 3 ]] + +myInit :: IO () +myInit = do + clearColor $= Color4 0 0 0 0 + materialDiffuse Front $= Color4 0.7 0.7 0.7 1 + materialSpecular Front $= Color4 1 1 1 1 + materialShininess Front $= 100 + + lighting $= Enabled + light (Light 0) $= Enabled + depthFunc $= Just Less + autoNormal $= Enabled + normalize $= Enabled + +-------------------------------------------------------------------------------- + +display :: DisplayCallback +display = do + let knots = [ 0, 0, 0, 0, 1, 1, 1, 1 ] :: [GLfloat] + edgePt = -- counter clockwise + [ Vertex2 0 0, Vertex2 1 0, Vertex2 1 1, Vertex2 0 1, Vertex2 0 0 ] :: [Vertex2 GLfloat] + curvePt = -- clockwise + [ Vertex2 0.25 0.5, Vertex2 0.25 0.75, Vertex2 0.75 0.75, Vertex2 0.75 0.5 ] :: [Vertex2 GLfloat] + curveKnots = + [ 0, 0, 0, 0, 1, 1, 1, 1 ] :: [GLfloat] + pwlPt = -- clockwise + [Vertex2 0.75 0.5, Vertex2 0.5 0.25, Vertex2 0.25 0.5 ] :: [Vertex2 GLfloat] + + clear [ ColorBuffer, DepthBuffer ] + preservingMatrix $ do + rotate (330 :: GLfloat) (Vector3 1 0 0) + scale 0.5 0.5 (0.5 :: GLfloat) + + withNURBSObj () $ \nurbsObj -> do + setSamplingMethod nurbsObj (PathLength 25) + setDisplayMode nurbsObj Fill' + checkForError nurbsObj $ + nurbsBeginEndSurface nurbsObj $ + withArray (concat ctlPoints) $ \cBuf -> + withArray knots $ \kBuf -> do + gluNurbsSurface nurbsObj 8 kBuf 8 kBuf (4 * 3) 3 (castPtr cBuf) 4 4 0xdb7 -- GL_MAP2_VERTEX_3 + nurbsBeginEndTrim nurbsObj $ + withArray edgePt $ \edgePtBuf -> + gluPwlCurve nurbsObj 5 (castPtr edgePtBuf) 2 100210 -- GLU_MAP1_TRIM_2 + nurbsBeginEndTrim nurbsObj $ do + withArray curveKnots $ \curveKnotsBuf -> + withArray curvePt $ \curvePtBuf -> + gluNurbsCurve nurbsObj 8 curveKnotsBuf 2 (castPtr curvePtBuf) 4 100210 -- GLU_MAP1_TRIM_2 + withArray pwlPt $ \pwlPtBuf -> + gluPwlCurve nurbsObj 3 (castPtr pwlPtBuf) 2 100210 -- GLU_MAP1_TRIM_2 + + flush + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + perspective 45 (fromIntegral w / fromIntegral h) 3 8 + matrixMode $= Modelview 0 + loadIdentity + translate (Vector3 0 0 (-5 :: GLfloat)) + +keyboard :: KeyboardMouseCallback +keyboard (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard _ _ _ _ = return () + +-- Main Loop +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] + initialWindowSize $= Size 500 500 + initialWindowPosition $= Position 100 100 + createWindow progName + myInit + reshapeCallback $= Just reshape + displayCallback $= display + keyboardMouseCallback $= Just keyboard + mainLoop addfile ./examples/RedBook/SurfPoints.hs hunk ./examples/RedBook/SurfPoints.hs 1 +{- + SurfPoints.hs (adapted from surfpoints.c which is (c) Silicon Graphics, Inc.) + Copyright (c) Sven Panne 2002-2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program is a modification of the earlier Surface.hs program. The + vertex data are not directly rendered, but are instead passed to the + callback function. The values of the tessellated vertices are printed + out there. + + This program draws a NURBS surface in the shape of a symmetrical hill. + The 'c' keyboard key allows you to toggle the visibility of the control + points themselves. Note that some of the control points are hidden by + the surface itself. + + NOTE: This example does NOT demonstrate the final NURBS API, it's currently + just a test for the internals... +-} + +import Control.Monad ( when, unless ) +import Data.Char ( toLower ) +import Data.IORef ( IORef, newIORef ) +import Foreign.Ptr ( castPtr ) +import Foreign.Marshal ( withArray ) +import System.Exit ( exitWith, ExitCode(ExitSuccess), exitFailure ) +import Graphics.UI.GLUT + +data State = State { showPoints :: IORef Bool } + +makeState :: IO State +makeState = do + s <- newIORef False + return $ State { showPoints = s } + +-- The control points of the surface form a small hill and +-- range from -3 to +3 in x, y, and z. +ctlPoints :: [[Vertex3 GLfloat]] +ctlPoints = + [ [ Vertex3 (2 * u - 3) + (2 * v - 3) + (if (u == 1 || u ==2) && (v == 1 || v == 2) then 3 else -3) + | v <- [ 0 .. 3 ] ] + | u <- [ 0 .. 3 ]] + +myInit :: IO () +myInit = do + clearColor $= Color4 0 0 0 0 + materialDiffuse Front $= Color4 0.7 0.7 0.7 1 + materialSpecular Front $= Color4 1 1 1 1 + materialShininess Front $= 100 + + lighting $= Enabled + light (Light 0) $= Enabled + depthFunc $= Just Less + autoNormal $= Enabled + normalize $= Enabled + +-------------------------------------------------------------------------------- + +display :: State -> DisplayCallback +display state = do + let knots = [ 0, 0, 0, 0, 1, 1, 1, 1 ] :: [GLfloat] + clear [ ColorBuffer, DepthBuffer ] + preservingMatrix $ do + rotate (330 :: GLfloat) (Vector3 1 0 0) + scale 0.5 0.5 (0.5 :: GLfloat) + + withNURBSObj () $ \nurbsObj -> do + setNURBSMode nurbsObj NURBSTessellator + setSamplingMethod nurbsObj (PathLength 25) + setDisplayMode nurbsObj Fill' + checkForError nurbsObj $ + withBeginCallback nurbsObj print $ + withVertexCallback nurbsObj print $ + withNormalCallback nurbsObj print $ + withEndCallback nurbsObj (putStrLn "end") $ + nurbsBeginEndSurface nurbsObj $ + withArray (concat ctlPoints) $ \cBuf -> + withArray knots $ \kBuf -> + gluNurbsSurface nurbsObj 8 kBuf 8 kBuf (4 * 3) 3 (castPtr cBuf) 4 4 0xdb7 -- GL_MAP2_VERTEX_3 + + s <- get (showPoints state) + when s $ do + pointSize $= 5 + lighting $= Disabled + color (Color3 1 1 (0 :: GLfloat)) + renderPrimitive Points $ + mapM_ (mapM_ vertex) ctlPoints + lighting $= Enabled + + flush + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + perspective 45 (fromIntegral w / fromIntegral h) 3 8 + matrixMode $= Modelview 0 + loadIdentity + translate (Vector3 0 0 (-5 :: GLfloat)) + +keyboard :: State -> KeyboardMouseCallback +keyboard state (Char c) Down _ _ = case toLower c of + 'c' -> do showPoints state $~ not; postRedisplay Nothing + '\27' -> exitWith ExitSuccess + _ -> return () +keyboard _ _ _ _ _ = return () + +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] + initialWindowSize $= Size 500 500 + initialWindowPosition $= Position 100 100 + createWindow progName + version <- get gluVersion + unless (take 3 version == "1.3") $ do + putStrLn "This program demonstrates a feature which is introduced in the" + putStrLn "OpenGL Utility Library (GLU) Version 1.3." + putStrLn "If your implementation of GLU has the right extensions," + putStrLn "you may be able to modify this program to make it run." + exitFailure + state <- makeState + myInit + reshapeCallback $= Just reshape + displayCallback $= display state + keyboardMouseCallback $= Just (keyboard state) + mainLoop hunk ./examples/RedBook/Surface.hs 11 + + NOTE: This example does NOT demonstrate the final NURBS API, it's currently + just a test for the internals... hunk ./examples/RedBook/Trim.hs 10 + + NOTE: This example does NOT demonstrate the final NURBS API, it's currently + just a test for the internals... hunk ./examples/RedBook/00-README 15 - MVarray.hs (1.4) + MVArray.hs (1.4) addfile ./examples/RedBook/Alpha.hs addfile ./examples/RedBook/BlendEqn.hs addfile ./examples/RedBook/FogCoord hunk ./examples/RedBook/Alpha.hs 1 +{- + Alpha.hs (adapted from alpha.c which is (c) Silicon Graphics, Inc.) + Copyright (c) Sven Panne 2002-2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program draws several overlapping filled polygons to demonstrate the + effect order has on alpha blending results. Use the 't' key to toggle the + order of drawing polygons. +-} + +import Data.Char ( toLower ) +import Data.IORef ( IORef, newIORef ) +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +data State = State { leftFirst :: IORef Bool } + +makeState :: IO State +makeState = do + l <- newIORef True + return $ State { leftFirst = l } + +-- Initialize alpha blending function. +myInit :: IO () +myInit = do + blendEquation $= Just FuncAdd + blendFunc $= (SrcAlpha, OneMinusSrcAlpha) + shadeModel $= Flat + clearColor $= Color4 0 0 0 0 + +drawLeftTriangle :: IO () +drawLeftTriangle = + -- draw yellow triangle on LHS of screen + renderPrimitive Triangles $ do + color (Color4 1 1 0 (0.75 :: GLfloat)) + vertex (Vertex3 0.1 0.9 (0 :: GLfloat)) + vertex (Vertex3 0.1 0.1 (0 :: GLfloat)) + vertex (Vertex3 0.7 0.5 (0 :: GLfloat)) + +drawRightTriangle :: IO () +drawRightTriangle = + -- draw cyan triangle on RHS of screen + renderPrimitive Triangles $ do + color (Color4 0 1 1 (0.75 :: GLfloat)) + vertex (Vertex3 0.9 0.9 (0 :: GLfloat)) + vertex (Vertex3 0.3 0.5 (0 :: GLfloat)) + vertex (Vertex3 0.9 0.1 (0 :: GLfloat)) + +display :: State -> DisplayCallback +display state = do + clear [ ColorBuffer ] + l <- get (leftFirst state) + if l + then do drawLeftTriangle; drawRightTriangle + else do drawRightTriangle; drawLeftTriangle + flush + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + let wf = fromIntegral w + hf = fromIntegral h + if w <= h + then ortho2D 0 1 0 (hf/wf) + else ortho2D 0 (wf/hf) 0 1 + +keyboard :: State -> KeyboardMouseCallback +keyboard state (Char c) Down _ _ = case toLower c of + 't' -> do leftFirst state $~ not; postRedisplay Nothing + '\27' -> exitWith ExitSuccess -- Escape key + _ -> return () +keyboard _ _ _ _ _ = return () + +-- Main Loop +-- Open window with initial window size, title bar, RGBA display mode, and +-- handle input events. +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, RGBMode ] + initialWindowSize $= Size 200 200 + createWindow progName + state <- makeState + myInit + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just (keyboard state) + displayCallback $= display state + mainLoop hunk ./examples/RedBook/BlendEqn.hs 1 +{- + BlendEqn.hs (adapted from blendeqn.c which is (c) Silicon Graphics, Inc.) + Copyright (c) Sven Panne 2002-2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + Demonstrate the different blending functions available with the OpenGL + imaging subset. This program demonstrates use of blendEquation. + + The following keys change the selected blend equation function: + + 'a' -> FuncAdd + 's' -> FuncSubtract + 'r' -> FuncReverseSubtract + 'm' -> Min + 'x' -> Max +-} + +import Data.Char ( toLower ) +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +myInit :: IO () +myInit = do + clearColor $= Color4 1 1 0 0 + blendFunc $= (One, One) + blendEquation $= Just FuncAdd + +display :: DisplayCallback +display = do + clear [ ColorBuffer ] + + color (Color3 0 0 (1 :: GLfloat)) + rect (Vertex2 (-0.5) (-0.5)) (Vertex2 0.5 (0.5 :: GLfloat)) + + flush + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + let aspect = fromIntegral w / fromIntegral h + + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + if aspect < 1 + then let aspect' = recip aspect + in ortho (-aspect') aspect' (-1) 1 (-1) 1 + else ortho (-1) 1 (-aspect) aspect (-1) 1 + matrixMode $= Modelview 0 + +keyboard :: KeyboardMouseCallback +keyboard (Char c) Down _ _ = case toLower c of + -- Colors are added as: (0, 0, 1) + (1, 1, 0) = (1, 1, 1) + -- which will produce a white square on a yellow background. + 'a' -> setBlendEquation FuncAdd + + -- Colors are subtracted as: (0, 0, 1) - (1, 1, 0) = (-1, -1, 1) + -- which is clamped to (0, 0, 1), producing a blue square on a + -- yellow background + 's' -> setBlendEquation FuncSubtract + + -- Colors are subtracted as: (1, 1, 0) - (0, 0, 1) = (1, 1, -1) + -- which is clamed to (1, 1, 0). This produces yellow for both + -- the square and the background. + 'r' -> setBlendEquation FuncReverseSubtract + + -- The minimum of each component is computed, as + -- [min(0, 1), min(0, 1), min(1, 0)] which equates to (0, 0, 0). + -- This will produce a black square on the yellow background. + 'm' -> setBlendEquation Min + + -- The minimum of each component is computed, as + -- [max(0, 1), max(0, 1), max(1, 0)] which equates to (1, 1, 1) + -- This will produce a white square on the yellow background. + 'x' -> setBlendEquation Max + + '\27' -> exitWith ExitSuccess + _ -> return () + where setBlendEquation e = do + blendEquation $= Just e + postRedisplay Nothing +keyboard _ _ _ _ = return () + +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, RGBMode ] + initialWindowSize $= Size 512 512 + initialWindowPosition $= Position 100 100 + createWindow progName + myInit + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just keyboard + displayCallback $= display + mainLoop binary ./examples/RedBook/FogCoord oldhex * newhex *7f454c460101010000000000000000000200030001000000b09d04083400000068da0300000000 *003400200009002800260023000600000034000000348004083480040820010000200100000500 *000004000000030000005401000054810408548104081300000013000000040000000100000001 *000000000000000080040800800408445403004454030005000000001000000100000060540300 *60e4070860e40708d8420000805a00000600000000100000020000004c9403004c2408084c2408 *082001000020010000060000000400000004000000680100006881040868810408200000002000 *000004000000040000000400000088010000888104088881040818000000180000000400000004 *00000050e574641854030018d4070818d407082c0000002c000000040000000400000051e57464 *000000000000000000000000000000000000000007000000040000002f6c69622f6c642d6c696e *75782e736f2e320000040000001000000001000000474e55000000000002000000020000000500 *000005000000020000000100000053755345000000000901000061000000770000002800000006 *000000540000002e000000000000003f000000020000004b000000000000003c00000076000000 *140000005e0000000c00000055000000530000004d00000032000000500000001e000000600000 *00520000006a00000041000000670000004c00000024000000630000006e000000000000004000 *0000290000000f000000690000006f0000000000000034000000270000006d0000000000000000 *000000000000000000000008000000000000005b00000071000000460000006100000000000000 *000000000000000000000000720000000000000038000000750000004e0000002a000000730000 *003d00000066000000420000001000000043000000000000007000000044000000620000005100 *0000000000000d0000000000000000000000000000003300000000000000740000000700000009 *000000000000003b0000005c000000000000006c00000000000000590000000000000015000000 *5d000000580000002f000000680000005f000000000000000e0000002500000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000000000000000000000000000000000000a000000120000001d000000 *000000000000000000000000000000001300000000000000230000000000000000000000180000 *001a000000000000000000000000000000220000001b0000000000000000000000000000000000 *000016000000000000001c00000000000000360000000000000000000000000000002c0000002b *00000000000000000000000000000000000000000000003e000000000000000000000000000000 *000000000100000000000000300000003100000004000000000000001f00000000000000000000 *004900000017000000000000000500000039000000000000004a00000020000000000000000000 *000000000000000000003a00000048000000470000000000000035000000260000000b00000056 *00000057000000640000002d000000190000000000000065000000450000000300000000000000 *00000000370000006b0000005a00000000000000000000004f0000000000000011000000210000 *0000000000000000000000000000000000de0200000000000058000000120000000e0000000000 *000023000000120000004b02000000000000000000001200000053020000000000000000000012 *00000044020000000000000000000012000000ef0300000000000052000000120000009d040000 *0000000053000000120000001e0000000000000023000000120000003000000000000000230000 *0012000000410000004c240808000000001100f1ffe902000000000000c202000012000000b502 *0000b09704084901000012000000c8010000000000000000000012000000fe040000000000007c *00000012000000bb0400000000000025000000120000004304000000000000d500000012000000 *da03000000000000b2000000120000006205000000000000210000001200000098040000000000 *005a00000012000000320400000000000006010000120000004a00000000000000650200001200 *00005f04000000000000f200000012000000d20100000000000000000000120000008604000000 *0000003a0000001200000057000000000000005b00000012000000e2040000000000009c000000 *120000006800000000000000380000001200000058040000000000009400000012000000140400 *0000000000af00000012000000790000000000000061000000120000005705000000000000a901 *000012000000d1040000000000006306000012000000dd01000000000000620100001200000068 *020000000000000000000012000000040500000000000034000000120000003702000000000000 *0000000012000000f90200000000000071040000120000000403000000000000b8020000120000 *0020030000e89604087001000012000b0087000000000000000000000012000000290200000000 *000000000000120000004a04000000000000c50100001200000025040000000000003a00000012 *0000001d04000000000000580000001200000039040000000000003c0000001200000092000000 *0000000047000000120000000f0300000000000013020000120000000104000040270808040000 *0011001800db04000044270808040000001100180070040000000000000c020000120000001a03 *000000000000430000001200000026030000000000000106000012000000e70300000000000099 *0c0000120000006105000000000000973d00001200000031030000000000004a05000012000000 *a5000000000000002300000012000000a7020000509a0408760100001200000066040000000000 *004c0000001200000087020000000000000000000012000000b3000000000000001c0000001200 *00005a020000000000000000000012000000c70000000000000027040000120000003c03000000 *0000005905000012000000d000000000000000000000001200000045050000000000008b000000 *120000006f050000000000004c000000120000004703000000000000b102000012000000520300 *0000000000d700000012000000d4030000000000006100000012000000e904000000000000ff00 *00001200000061030000000000003d020000120000008a05000038270808000000001000f1fff7 *0100000000000000000000120000003305000000000000e800000012000000fe01000000000000 *00000000120000007003000000000000a701000012000000df0000000000000046010000120000 *009004000000000000f70100001200000092020000000000006f00000012000000ef0000000000 *0000850000001200000001010000000000004c0000001200000011010000d48507084900000012 *000e0051050000000000008500000012000000ca04000000000000db0100001200000076040000 *00000000b9010000120000002c0400000000000036000000120000007e030000000000002c0100 *0012000000170100000000000023000000120000007b050000000000003000000012000000a704 *0000000000003a000000120000007202000000000000000000001200000008040000000000004a *00000012000000270100000000000023000000120000001505000000000000d200000012000000 *0b0200000000000000000000120000008305000038270808000000001000f1ff3a010000802508 *08000000001100f1ff6a05000000000000c70000001200000096050000e03e0808000000001000 *f1ff51040000000000003200000012000000b40400000000000043000000120000007e04000000 *000000af000000120000008b030000000000008401000012000000990300000000000099000000 *1200000024050000f48507080400000011000f007b0200000000000000000000120000004d0500 *00000000000d0000001200000050010000000000000000000012000000c2040000000000003100 *000012000000fd040000000000006a010000120000005d010000000000000000000020000000ef *0400000000000071000000120000001a050000000000004c000000120000003102000000000000 *00000000120000007101000000000000d200000012000000b403000000000000aa020000120000 *007f010000000000000000000020000000cc020000000000008100000012000000006c6962676c *75742e736f2e3300676c75745370656369616c46756e6300676c75745370656369616c55704675 *6e6300676c75744b6579626f61726446756e63005f44594e414d494300676c75744d61696e4c6f *6f7000676c757443726561746557696e646f7700676c75744765744d6f6469666965727300676c *757447657457696e646f7700676c56696577706f727400676c7574496e697457696e646f775369 *7a6500676c75744d6f75736546756e6300676c7574496e6974446973706c61794d6f646500676c *7574496e697400676c4c6f61644964656e7469747900676c757453776170427566666572730067 *6c7574506f73745265646973706c617900676c7574446973706c617946756e63005f66696e6900 *676c75745265736861706546756e6300676c75744b6579626f617264557046756e63005f474c4f *42414c5f4f46465345545f5441424c455f00676c5472616e736c61746566005f4a765f52656769 *73746572436c617373657300676c757454696d657246756e63005f5f676d6f6e5f73746172745f *5f006c6962534d2e736f2e36006c69624943452e736f2e36006c6962586d752e736f2e36006c69 *6258692e736f2e36006c6962474c552e736f2e3100676c436f6c6f72336600676c566572746578 *336600676c755065727370656374697665006c6962474c2e736f2e3100676c466f676900676c43 *6c656172436f6c6f7200676c436c656172006c69625831312e736f2e36006c69626d2e736f2e36 *00676c426567696e00676c456e6400676c4d61747269784d6f646500676c466f676600676c466f *67667600676c48696e7400676c476574496e74656765727600676c44697361626c6500676c456e *61626c6500676c4973456e61626c656400676c4765744572726f7200676c5847657450726f6341 *64647265737341524200676c75556e50726f6a6563743400676c754275696c6433444d69706d61 *704c6576656c73006c64657870006c6962676d702e736f2e33005f5f676d706e5f636d70005f5f *676d707a5f6469766578616374005f5f676d707a5f676364005f5f676d707a5f6d756c005f5f67 *6d707a5f636f6d005f5f676d707a5f696e6974005f5f676d707a5f786f72005f5f676d707a5f61 *6e64005f5f676d707a5f696f72005f5f676d707a5f616464005f5f676d707a5f666469765f7172 *005f5f676d707a5f746469765f7172005f5f676d707a5f746469765f72005f5f676d706e5f6763 *645f31005f5f676d707a5f746469765f71005f5f676d705f7365745f6d656d6f72795f66756e63 *74696f6e73005f5f676d707a5f737562006c6962646c2e736f2e32006c6962632e736f2e360070 *6175736500736967696e7465727275707400737973636f6e66005f5f737472746f645f696e7465 *726e616c007374646f757400736967656d707479736574007374726572726f72006d656d6d6f76 *65006d756e6d61700074696d657300676574656e76007365746974696d657200706572726f7200 *6d616c6c6f63006973617474790073656c6563740066666c757368007369676164647365740061 *626f72740073747272636872007374726e63707900676574727573616765007265616c6c6f6300 *666f726b00736967616374696f6e0067657474696d656f66646179006d656d7365740073747263 *6d7000737072696e74660066636c6f7365007365746c6f63616c6500737464657272006d6d6170 *3634006670757463005f5f63747970655f625f6c6f6300667772697465005f5f6572726e6f5f6c *6f636174696f6e00657869740073696764656c736574005f494f5f737464696e5f75736564005f *5f6c6962635f73746172745f6d61696e006c7365656b3634006162730066636e746c0074637365 *74617474720076667072696e746600667265650073696770726f636d61736b00666f70656e3634 *005f6564617461005f5f6273735f7374617274005f656e6400474c4942435f322e3000474c4942 *435f322e3300474c4942435f322e31000000000000000000000000000002000200000000000100 *000000000000020002000200020002000200020000000200000002000000030000000200020000 *000200020000000000020000000000000001000000000002000200020002000000000002000200 *020000000000020002000000000000000200000000000000000000000000030002000000000002 *000200000001000000020000000000000002000000000000000100020003000200020000000000 *030002000000020000000200000001000100020001000200020002000000000001000000020000 *000200020000000400020000000000000000000500010001001f02000010000000200000001069 *690d000005009b0500000000000001000300ca03000010000000000000001369690d00000400a5 *050000100000001169690d00000300af050000100000001069690d000002009b05000000000000 *3427080806750000402708080530000044270808053100008c2508080701000090250808070200 *00942508080703000098250808070400009c25080807050000a025080807060000a42508080707 *0000a825080807080000ac25080807090000b0250808070b0000b4250808070c0000b825080807 *0d0000bc250808070e0000c0250808070f0000c425080807100000c825080807110000cc250808 *07120000d025080807130000d425080807140000d825080807150000dc25080807160000e02508 *0807170000e425080807180000e825080807190000ec250808071a0000f0250808071b0000f425 *0808071c0000f8250808071d0000fc250808071e000000260808071f0000042608080720000008 *260808072100000c26080807220000102608080723000014260808072400001826080807250000 *1c260808072600002026080807280000242608080729000028260808072a00002c260808072b00 *0030260808072c000034260808072d000038260808072e00003c260808072f0000402608080732 *0000442608080733000048260808073400004c2608080735000050260808073600005426080807 *37000058260808073800005c2608080739000060260808073a000064260808073b000068260808 *073c00006c260808073d000070260808073e000074260808073f000078260808074000007c2608 *08074100008026080807420000842608080743000088260808074400008c260808074500009026 *080807460000942608080747000098260808074900009c260808074a0000a0260808074b0000a4 *260808074c0000a8260808074d0000ac260808074e0000b0260808074f0000b426080807500000 *b826080807510000bc26080807530000c026080807540000c426080807550000c8260808075600 *00cc26080807570000d026080807580000d426080807590000d8260808075a0000dc260808075b *0000e0260808075c0000e4260808075d0000e8260808075e0000ec260808075f0000f026080807 *620000f426080807640000f826080807650000fc26080807660000002708080767000004270808 *0768000008270808076a00000c270808076b000010270808076c000014270808076d0000182708 *08076e00001c270808077000002027080807710000242708080772000028270808077300002c27 *08080774000030270808077600005589e583ec08e8e1060000e848070000e8b3ee0200c9c300ff *3584250808ff258825080800000000ff258c2508086800000000e9e0ffffffff25902508086808 *000000e9d0ffffffff25942508086810000000e9c0ffffffff25982508086818000000e9b0ffff *ffff259c2508086820000000e9a0ffffffff25a02508086828000000e990ffffffff25a4250808 *6830000000e980ffffffff25a82508086838000000e970ffffffff25ac2508086840000000e960 *ffffffff25b02508086848000000e950ffffffff25b42508086850000000e940ffffffff25b825 *08086858000000e930ffffffff25bc2508086860000000e920ffffffff25c02508086868000000 *e910ffffffff25c42508086870000000e900ffffffff25c82508086878000000e9f0feffffff25 *cc2508086880000000e9e0feffffff25d02508086888000000e9d0feffffff25d4250808689000 *0000e9c0feffffff25d82508086898000000e9b0feffffff25dc25080868a0000000e9a0feffff *ff25e025080868a8000000e990feffffff25e425080868b0000000e980feffffff25e825080868 *b8000000e970feffffff25ec25080868c0000000e960feffffff25f025080868c8000000e950fe *ffffff25f425080868d0000000e940feffffff25f825080868d8000000e930feffffff25fc2508 *0868e0000000e920feffffff250026080868e8000000e910feffffff250426080868f0000000e9 *00feffffff250826080868f8000000e9f0fdffffff250c2608086800010000e9e0fdffffff2510 *2608086808010000e9d0fdffffff25142608086810010000e9c0fdffffff251826080868180100 *00e9b0fdffffff251c2608086820010000e9a0fdffffff25202608086828010000e990fdffffff *25242608086830010000e980fdffffff25282608086838010000e970fdffffff252c2608086840 *010000e960fdffffff25302608086848010000e950fdffffff25342608086850010000e940fdff *ffff25382608086858010000e930fdffffff253c2608086860010000e920fdffffff2540260808 *6868010000e910fdffffff25442608086870010000e900fdffffff25482608086878010000e9f0 *fcffffff254c2608086880010000e9e0fcffffff25502608086888010000e9d0fcffffff255426 *08086890010000e9c0fcffffff25582608086898010000e9b0fcffffff255c26080868a0010000 *e9a0fcffffff256026080868a8010000e990fcffffff256426080868b0010000e980fcffffff25 *6826080868b8010000e970fcffffff256c26080868c0010000e960fcffffff257026080868c801 *0000e950fcffffff257426080868d0010000e940fcffffff257826080868d8010000e930fcffff *ff257c26080868e0010000e920fcffffff258026080868e8010000e910fcffffff258426080868 *f0010000e900fcffffff258826080868f8010000e9f0fbffffff258c2608086800020000e9e0fb *ffffff25902608086808020000e9d0fbffffff25942608086810020000e9c0fbffffff25982608 *086818020000e9b0fbffffff259c2608086820020000e9a0fbffffff25a02608086828020000e9 *90fbffffff25a42608086830020000e980fbffffff25a82608086838020000e970fbffffff25ac *2608086840020000e960fbffffff25b02608086848020000e950fbffffff25b426080868500200 *00e940fbffffff25b82608086858020000e930fbffffff25bc2608086860020000e920fbffffff *25c02608086868020000e910fbffffff25c42608086870020000e900fbffffff25c82608086878 *020000e9f0faffffff25cc2608086880020000e9e0faffffff25d02608086888020000e9d0faff *ffff25d42608086890020000e9c0faffffff25d82608086898020000e9b0faffffff25dc260808 *68a0020000e9a0faffffff25e026080868a8020000e990faffffff25e426080868b0020000e980 *faffffff25e826080868b8020000e970faffffff25ec26080868c0020000e960faffffff25f026 *080868c8020000e950faffffff25f426080868d0020000e940faffffff25f826080868d8020000 *e930faffffff25fc26080868e0020000e920faffffff250027080868e8020000e910faffffff25 *0427080868f0020000e900faffffff250827080868f8020000e9f0f9ffffff250c270808680003 *0000e9e0f9ffffff25102708086808030000e9d0f9ffffff25142708086810030000e9c0f9ffff *ff25182708086818030000e9b0f9ffffff251c2708086820030000e9a0f9ffffff252027080868 *28030000e990f9ffffff25242708086830030000e980f9ffffff25282708086838030000e970f9 *ffffff252c2708086840030000e960f9ffffff25302708086848030000e950f9ffff31ed5e89e1 *83e4f050545268e08407086850850708515668604b0608e87ffdfffff490905589e553e8000000 *005b81c3a3870300528b83b401000085c07402ffd0585bc9c390909090909090909090905589e5 *5050803d4827080800752ea168e407088b1085d2741c8db4260000000083c004a368e40708ffd2 *a168e407088b1085d275ebc6054827080801c9c389f65589e551518b157c25080885d27419b800 *00000085c0741083ec0c687c250808e89b61fbf783c410c9c39090b8749e0408ffe090833d4c27 *080800753cc7054c27080801000000c74500b0b0050883c504c74500f0be040883c504c7450024 *81050883c504c7450014ad050883c504c745006ca5050883c50483ed04ff650090b86c9e0408ff *e09000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c7 *47f808ee060883ec0c56e8a1ee010083c4088d47f8894604c70624ed06088d55f8c702a0000708 *894204c745f4589f040883ed0c6a006a00e8c5e7010083c410d95c24048b442404894424088b44 *2408894424048b4424048945fc83ed048b4504eb9a000000002400000083c7083b7b5c7615c743 *6c02000000c74320ff000100b84ccf0608ffe0c747fc789a05088b4500894424048b4424048944 *24088b44240889078d77fc83c508b8a0000708ebd589f60400010000000000110000008d45fc3b *4354730abe8ce407088b43fcffe08b7500c7450014a004088b06ebf0010000002400000083c710 *3b7b5c760cc7436c040000008b43f8ffe0c747f4d8be04088b45048947f88b46048947fc8b4608 *89078d77f483c5088b4500ebdb9000000000240000008b46048945008b7608c745fcd49f040883 *ed04ff268d76000400010000000000110000008b7500c745004ca00408ff260000000024000000 *83c7183b7b5c760cc7436c060000008b43f8ffe0c747ecc09705088b46088947f08b460c8947f4 *c747f8c09705088b46048947fc8d47ec89078d77f883c5048b4500ebce00000200180000008d45 *f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e8d9 *ec010083c4088d47f8894604c70624ed06088d55f8c702a0000708894204c745f420a1040883ed *0c6a006a01e8fde5010083c410d95c24048b442404894424088b442408894424048b4424048945 *fc83ed048b4504eb9a000000002400000083c7083b7b5c7615c7436c02000000c74320ff000100 *b84ccf0608ffe0c747fc789a05088b4500894424048b442404894424088b44240889078d77fc83 *c508b8a0000708ebd589f600000200180000008d45f03b4354720883c70c3b7b5c760cc7436c03 *0000008b43f8ffe0c747f808ee060883ec0c56e801ec010083c4088d47f8894604c70624ed0608 *8d55f8c702a0000708894204c745f4f8a1040883ed0c6a006a0ae825e5010083c410d95c24048b *442404894424088b442408894424048b4424048945fc83ed048b4504eb9a000000002400000083 *c7083b7b5c7615c7436c02000000c74320ff000100b84ccf0608ffe0c747fc789a05088b450089 *4424048b442404894424088b44240889078d77fc83c508b8a0000708ebd589f600000200180000 *008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c *56e829eb010083c4088d47f8894604c70624ed06088d55f8c702a0000708894204c745f4d0a204 *0883ed0c6a006a05e84de4010083c410d95c24048b442404894424088b442408894424048b4424 *048945fc83ed048b4504eb9a000000002400000083c7083b7b5c7615c7436c02000000c74320ff *000100b84ccf0608ffe0c747fc789a05088b4500894424048b442404894424088b44240889078d *77fc83c508b8a0000708ebd589f600000200180000008d45f03b4354720883c70c3b7b5c760cc7 *436c030000008b43f8ffe0c747f808ee060883ec0c56e851ea010083c4088d47f8894604c70624 *ed06088d55f8c702a0000708894204c745f4a8a3040883ed0c6a006a00e875e3010083c410d95c *24048b442404894424088b442408894424048b4424048945fc83ed048b4504eb9a000000002400 *000083c7083b7b5c7615c7436c02000000c74320ff000100b84ccf0608ffe0c747fc789a05088b *4500894424048b442404894424088b44240889078d77fc83c508b8a0000708ebd589f694e40708 *c4e40708f0a3040800000200180003008d45f03b4354720883c70c3b7b5c760cc7436c03000000 *8b43f8ffe0c747f808ee060883ec0c56e86de9010083c4108d47f8894604c70624ed06088d55f8 *c702a0000708894204bec4e40708c745f4b4a4040883ed0c8b06ebc089f6010000002400000083 *c7143b7b5c760cc7436c050000008b43f8ffe0c747f0a83e05088b45048947f4c747f86ce40708 *c747fc6ce4070889378d77f083c508b8a0000708ebd489f6f0a304080000000024000100897500 *be94e40708c745fc68a4040883ed04ff26ace80708c4e40708c8a4040804000200000000001100 *03008d45f83b4354730abef8e407088b43fcffe0c745f8ece40708c745fce4a5040883ed08b8a8 *190508ebe689f60000000024000000be9c0f080883c504ff6500900000000024000000c7450014 *a50408e87cf6ffffff65009021000000240000008b45048944240c8b44240c894424188b450489 *44240c8b44240c894424148b46048944240c8b44240c89442410c7450428a5040883c5048b4424 *188944240c8b442414894424088b4424108944240483ec04ff742408ff742410ff742418e87df7 *ffff83c410ff65008d760001000000240000008b55048b4604894424048b442404894424088b44 *240889450489d6c7450040a50408ff26cca404080100000024000100bec4e40708c74500b4a504 *08ff2689f64c100808f4a5040800000200180001008d45f03b4354720883c70c3b7b5c760cc743 *6c030000008b43f8ffe0c747f808ee060883ec0c56e86de7010083c4108d47f8894604c70624ed *06088d55f8c702a0000708894204c745f400e50708c745f04c10080883ed10b8ec810508ebbb90 *ace80708b4e40708c4e4070864a604080400020000000000110007008d45fc3b4354730abe20e5 *07088b43fcffe08b7500c74500d0a804088b06ebf00000000024000000be9c0f080883c504ff65 *009021000000240000008b4504894424088b4424083500000080894424188b4604894424088b44 *2408894424148b4604894424088b442408894424108b4424188944240cc74504a8a6040883c504 *8b442414894424088b442410894424048b44240c89042483ec04ff742404ff74240cff742414e8 *f5f5ffff83c410ff65008d76006ca6040800000000240001008b4604894424048b442404894424 *088b442408894500bec4e40708c745fcbca6040883ed04ff269068a604080000000024000300be *b4e40708c7450040a70408ff2689f668a604080000000024000300c7450074a70408e824f3ffff *ff65009064a604080000000024000700c745fcece40708c7450090a7040883ed04e9e671000089 *f664a604080000000024000700c744244000000000c744244400804640c744243800000000c744 *243c0000f03fc744243000000000c74424340000d03fc744242800000000c744242c00003940c7 *4500aca704088b4424408b54244489442420895424248b4424388b54243c894424188954241c8b *4424308b54243489442410895424148b4424288b54242c894424088954240cff74240cff74240c *ff74241cff74241cff74242cff74242cff74243cff74243ce884f0ffff83c420ff650089f664a6 *04080000000024000700c74500d0a70408e824f2ffffff65009064a604080000000024000700c7 *45fca0e80708c7450090a8040883ed04e9e670000089f664a6040800000000240007008b56048b *4608c74500aca8040850526a006a00e878f0ffff83c410ff650089f600000200180000008d45f0 *3b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e879e4 *010083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f450e50708c745f0 *d0e5070883ed10b864950508ebbb90b4e80708c0e5070818e90708d4e80708d4e5070890e50708 *7ce4070894e40708a4e40708b4e40708c4e40708d4e40708f8e4070810e5070828e5070860e507 *08e0a9040800000000d4a9040800000100000000001100ffff8d45e03b4354730abe70e507088b *43fcffe0c745fcc0bd040883ed04b868ae0508ebed9058a9040810000000ffff0000e9cbffffff *8d760058a9040810000000ffff000058a9040810000000ffff00000000000024000000be9c0f08 *0883c504ff6500900000000024000000c7450008aa0408e888f1ffffff65009000000000240000 *00be9c0f080883c504ff6500900000000024000000c7450034aa0408e85cf1ffffff6500904200 *00002400000083c7083b7b5c760cc7436c020000008b43f8ffe08b4508890424d905f8850708d8 *0424d95c24088b4604890424d9442408d90424d9c9dae9dfe0f6c445740d8b750483c50c83ef08 *8b06ebc68b4508890424d905f8850708d80424d95c2404c747fc789a05088b4424048904248b04 *2489078d77fc83c50cb8a0000708eb939070a9040800000000240001008975fc8b460489442404 *8b442404894424088b442408894500be7ce40708c745f860aa040883ed08ff2689f670a9040801 *000100130001008d45ec3b435473058b43f8ffe08d45f8c700a00007088970048b7604c745f4ec *aa040883ed0c8b06ebe189f60000000024000000be9c0f080883c504ff65009042000000240000 *0083c7083b7b5c760cc7436c020000008b43f8ffe08b4508890424d905fc850708d80424d95c24 *088b4604890424d9442408d90424d9c9dae9dfe0f6c445740d8b750483c50c83ef088b06ebc68b *4508890424d905fc850708d80424d95c2404c747fc789a05088b4424048904248b042489078d77 *fc83c50cb8a0000708eb939070a9040800000000240001008975fc8b4604894424048b44240489 *4424088b442408894500be7ce40708c745f86cab040883ed08ff2689f670a90408010001001300 *01008d45ec3b435473058b43f8ffe08d45f8c700a00007088970048b7604c745f4f8ab040883ed *0c8b06ebe189f60000000024000000be9c0f080883c504ff650090420000002400000083c7083b *7b5c760cc7436c020000008b43f8ffe08b4508890424d90500860708d80424d95c24088b460489 *0424d9442408d90424d9c9dae9dfe0f6c445740d8b750483c50c83ef088b06ebc68b4508890424 *d90500860708d80424d95c2404c747fc789a05088b4424048904248b042489078d77fc83c50cb8 *a0000708eb939070a9040800000000240001008975fc8b4604894424048b442404894424088b44 *2408894500be7ce40708c745f878ac040883ed08ff2689f670a9040801000100130001008d45ec *3b435473058b43f8ffe08d45f8c700a00007088970048b7604c745f404ad040883ed0c8b06ebe1 *89f60000000024000000be9c0f080883c504ff650090420000002400000083c7083b7b5c760cc7 *436c020000008b43f8ffe08b4508890424d90504860708d80424d95c24088b4604890424d94424 *08d90424d9c9dae9dfe0f6c445740d8b750483c50c83ef088b06ebc68b4508890424d905048607 *08d80424d95c2404c747fc789a05088b4424048904248b042489078d77fc83c50cb8a0000708eb *939070a9040800000000240001008975fc8b4604894424048b442404894424088b442408894500 *be7ce40708c745f884ad040883ed08ff2689f670a9040801000100130001008d45ec3b43547305 *8b43f8ffe08d45f8c700a00007088970048b7604c745f410ae040883ed0c8b06ebe189f6000000 *0024000000be9c0f080883c504ff650090420000002400000083c7083b7b5c760cc7436c020000 *008b43f8ffe08b4508890424d90508860708d80424d95c24088b4604890424d9442408d90424d9 *c9dae9dfe0f6c445740d8b750483c50c83ef088b06ebc68b4508890424d90508860708d80424d9 *5c2404c747fc789a05088b4424048904248b042489078d77fc83c50cb8a0000708eb939070a904 *0800000000240001008975fc8b4604894424048b442404894424088b442408894500be7ce40708 *c745f890ae040883ed08ff2689f670a9040801000100130001008d45ec3b435473058b43f8ffe0 *8d45f8c700a00007088970048b7604c745f41caf040883ed0c8b06ebe189f60000000024000000 *be9c0f080883c504ff650090420000002400000083c7083b7b5c760cc7436c020000008b43f8ff *e08b4508890424d9050c860708d80424d95c24088b4604890424d9442408d90424d9c9dae9dfe0 *f6c445740d8b750483c50c83ef088b06ebc68b4508890424d9050c860708d80424d95c2404c747 *fc789a05088b4424048904248b042489078d77fc83c50cb8a0000708eb939070a9040800000000 *240001008975fc8b4604894424048b442404894424088b442408894500be7ce40708c745f89caf *040883ed08ff2689f670a9040801000100130001008d45ec3b435473058b43f8ffe08d45f8c700 *a00007088970048b7604c745f428b0040883ed0c8b06ebe189f60000000024000000be9c0f0808 *83c504ff65009070a90408440000002400410083c70c3b7b5c760cc7436c030000008b43f8ffe0 *8b460483e81b83f84b0f874f010000ff248510860708c745101caa040883c51083ef0c83ec0868 *52840000eb15c7451048aa040883c51083ef0c83ec0868518400006850840000e834eaffff83c4 *10e9150100008b45108b4004c747f824ab04088947fc8b55108d47f8894204c7451058ab0408eb *208b450c8b4004c747f830ac04088947fc8b550c8d47f8894204c7451064ac040883c510e852ea *ffffe9c60000008b45048b4004c747f83cad04088947fc8b55048d47f8894204c7451070ad0408 *ebd18b45108b4004c747f848ae04088947fc8b55108d47f8894204c745107cae0408ebaf8b450c *8b4004c747f854af04088947fc8b550c8d47f8894204c7451088af0408eb8d8b45048b4004c747 *f860b004088947fc8b55048d47f8894204c7451094b00408e968ffffffc7451074e40708eb07c7 *45106ce4070883c51083ef0cb8e0a40408e9b0feffff83c51483ef0cb8f8b00508e9a0feffffbe *9c0f080883c51483ef0c8b4500e98dfeffff8d76008b7508c74500acb00408ff26be9c0f080883 *c514ff65009040b2040834b2040870a9040804000000250041008b55088b460489450889d6c745 *0060b20408ff26be9c0f080883c514ff65009074b2040874b2040860b2040870a9040804000000 *2500410070a9040817000500030000000b0041008d45fc3b435473058b43fcffe08b4608894508 *8b460489450c8b55008b460c89450089d6c745fc98b2040883ed048b06ebd989f6e95b0500008d *7600e9470300008d76000000000024000000be9c0f080883c504ff650090e6070000240000008b *4604894424088b4424083500000080894424188b4510894424088b442408894424148b45048944 *24088b442408894424108b4424188944240cc74518f4b2040883c5188b442414894424088b4424 *10894424048b44240c89042483ec04ff742404ff74240cff742414e8e9e4ffff83c410ff65008d *760078a90408e607000024000100bea4e40708c7450008b30408ff2689f678a90408e607000024 *0001008b550c8b4604894424048b44240489442408c745008cb304088b4424088944240483ec0c *ff742410ffd283c410ff650078a90408e6050000240001008b45148b7004c74500a8b30408ff26 *9078a90408e6050000240001008b4604894424148b4424143500000080894424288b4504894424 *148b4424143500000080894424248b442424894424208b4510894424148b4424148944241c8b44 *242889442418c74500e4b304088b442420894424148b44241c894424108b4424188944240c83ec *04ff742410ff742418ff742420e8e6e3ffff83c410ff650078a90408e605000024000300beb4e4 *0708c7450000b40408ff2689f678a90408e6050000240003008b550c8b4604894424048b442404 *89442408c745008cb404088b4424088944240483ec0cff742410ffd283c410ff650078a90408e6 *010000240003008b45188b7004c74500a8b40408ff269078a9040864000000240003008b450089 *4424088b4424083500000080894424188b4500894424088b442408894424148b44241889442410 *8b450c894424088b4424088944240cc745fce4b4040883ed048b442414894424088b4424108944 *24048b44240c89042483ec04ff742404ff74240cff742414e8f1e2ffff83c410ff65008d760078 *a904086400000024000300c7450000b5040883ec086a006a02e858d1010083c410d95c24048b44 *2404894424088b442408894424048b4424048945fc83ed04ff65049078a9040864000000240003 *008b55048b4604894424048b44240489442408c7450084b504088b4424088944240483ec0cff74 *2410ffd283c410ff650078a9040844000000240003008b55048b460489450489d6c74500c8b504 *08ff26e4b204080000000060a9040800000100030001000b00c1008d45e43b435473058b43fcff *e08b46048b40048945f08b4610894424048b442404894424088b4424088945f48b460c8945f88b *46088945fcbe18e90708c745ec04b6040883ed148b06ebc0900000000024000000be9c0f080883 *c504ff6500900000000024000000c7450084b60408e8dce4ffffff65009060a904086500000024 *00c10083c7143b7b5c7615c7436c05000000c74320ff000000b84ccf0608ffe0c747f030b60408 *8b45148947f48b45108947f88b450c8947fc8b4504894424048b442404894424088b4424088907 *8d47f0894510c7450cc8a30608c74508e8e80708c7451498b6040883c508b810130508ebab60a9 *0408240000002400c1008b4604894424088b4424088944240c8b44240c8945008b450489442408 *8b44240889442418b80000403f894424148b4604894424088b44240889442410c745fcb4b60408 *83ed048b442418894424088b4424148944240c8b4424108944240483ec04ff742408ff742414ff *742414e81de0ffff83c410ff65008d760060a90408030000002400c1018b4604894424048b4424 *04894424088b442408894500bec4e40708c745fc30b7040883ed04ff269060a904080300000024 *00e101be94e40708c74500b8b70408ff2689f660a90408030000002400e1018b4604c74500ecb7 *040883ec0c50e875e4ffff83c410ff65008d7600dcb204080000000060a9040800000100030000 *000b00e1098d45e83b435473058b43fcffe08b460c8945f48b46088945f88b46048945fcbe10e5 *0708c745f008b8040883ed108b06ebd989f60000000024000000be9c0f080883c504ff65009000 *00000024000000c7450078b804088b43608968308b53688d470489420483ec086a0053e88aa601 *0083c41089442408e887dfffff83ec086a00ff742414e8eea6010083c4108b43608b6830058800 *00008943548b43688b780483ef0489c28b4018c1e00c030283e80489435cff650060a904080300 *00002400e90983c7183b7b5c7615c7436c06000000c74320fe000000b84ccf0608ffe0c747ec3c *b804088b450c8947f08b45088947f48b45048947f8c747fcc88305088d47ec89078d47fc894508 *c74504b8e50708c74500b4e50708c745fc98e50708c7450c8cb8040883ed04b8acc00408ebad89 *f65ca90408030000002400f31b83c7183b7b5c7615c7436c06000000c74320fe000000b84ccf06 *08ffe0c747eca8b204088b450c8947f08b45088947f48b45048947f8c747fcc88305088d47ec89 *078d47fc8945fcc7450000b9040883ed04b848c80408ebc28d76005ca90408030000002400f33b *c745fc28e50708c745f8bce50708c745f4b0e50708c745f09ce50708c745007cb9040883ed10e9 *9d060000905ca90408e60000002400f33b8b450c894424188b442418894424288b450889442418 *8b442418894424248b4504894424188b442418894424208b4604894424188b4424188944241cc7 *450ce4b9040883c50c8b442428894424188b442424894424148b442420894424108b44241c8944 *240cff74240cff742414ff74241cff742424e8c9e0ffff83c410ff65008d76005ca90408c60000 *002400f33b8b55048b4604894424048b442404894424088b44240889450489d6c745001cba0408 *ff265ca90408860000002400f33b8b55088b4604894424048b442404894424088b442408894508 *89d6c74500acba0408ff265ca90408060000002400f33b8b550c8b4604894424048b4424048944 *24088b44240889450c89d6c74500dcba0408ff265ca90408030000002400f33b8b46108945f88b *460c8945fc8b46088945008b7604c745f40cbb040883ed0cff268d76005ca90408030000002400 *f33fbed4e40708c745003cbb0408ff2689f65ca90408030000002400f33fc745006cbb040883ec *0868518400006850840000e89fdfffff83c410ff6500905ca90408030000002400f33f8b7500c7 *4500dce80708c7450488bb040883ed04e9fbe701008d76005ca90408030000002400f73fc745fc *e0e80708c74500b4bb040883ed04e9ba69000089f65ca90408030000002400f73fc745fcd4e407 *08c74500dcbb040883ed04e92267000089f65ca90408030000002400f73fc745fc34e50708c745 *0000bc040883ed04e9a264000089f65ca90408030000002400f73fc745fc98e807088b7608c745 *0024bc040883ed08e967e701008d760058a90408020000002400ef7f897500beb4e80708c745fc *48bc040883ed04ff2658a90408010000002400ef7f897500bea4e40708c745fc70bc040883ed04 *e9151902009058a90408000000002400ef7f897500beb4e40708c745fc90bc040883ed04e9f118 *02009058a90408000000002400ef7fbe94e40708c74500b4bc0408e9d31802008d760058a90408 *010000002400ef7fc74500ece507088b45048945fcc74504d8bc040883ed04e910c8000058a904 *08010000002400ef7fc74500f8bc040883ec0868f401000068f4010000e887dcffff83c410ff65 *009058a90408010000002400ef7fc7450020bd040883ec0c56e824ddffff83c410ff650089f658 *a90408010000002400efffc745fc60e50708c745f800000000c745004cbd040883ed08e9fb1b00 *008d7600f4a90408010000002400ffff8975fc8b45048945f8c7450070bd040883ed08e9741900 *00e8a90408000000002400ffff897500c745fc9cbd040883ed04e9c6f1000089f670e507083810 *080808be040800000000d4bd0408000001000000000011000300c7430438100808be70e50708e9 *9f0602008d7600e9e7ffffff8d76000400010000000000110000008b7500c7450030be0408ff26 *00000000240000008b760483c504ff260400010000000000110000008b7500c7450058be0408ff *2600000000240000008b760883c504ff260400010000000000110000008b7500c7450080be0408 *ff2600000000240000008b760c83c504ff2616000300000000001100000083c7103b7b5c7611c7 *436c04000000be8ce507088b43fcffe0c747f4d8be04088b45008947f88b45048947fc8b450889 *078d77f483c50c8b4500ebdb0300000001000000ff6500900300000009000000ff650090b8f0be *0408ffe090833d50270808000f85a0000000c7055027080801000000c7450050d5040883c504c7 *45000cd6040883c504c74500fcd4040883c504c7450024dc040883c504c74500a4d5040883c504 *c7450010dd040883c504c7450048d4040883c504c74500d8bf040883c504c745005cdb040883c5 *04c7450064dc040883c504c74500ccdd040883c504c74500acbf040883c504c745001cda040883 *c504c745004410050883c504c7450014ad050883c50483ed04ff650090b8acbf0408ffe090833d *54270808007514c7055427080801000000c7450014ad050883c50483ed04ff650090b8d8bf0408 *ffe090833d58270808007528c7055827080801000000c74500ecc4040883c504c7450018c00408 *83c504c7450014ad050883c50483ed04ff650090b818c00408ffe090833d5c27080800755ac705 *5c27080801000000c74500bcd4040883c504c7450010c4040883c504c745008437050883c504c7 *4500841b050883c504c745005490050883c504c74500d488050883c504c74500fc79050883c504 *c7450014ad050883c50483ed04ff6500909090bc0f0808a0e50708f0e507080c0f0808140f0808 *20e6070884c00408170005000000000011003f008d45ec3b4354730abe90e507088b43fcffe08b *7500c7450094c304088b06ebf0c74510181008088b750883c50ce9eae2010089f694c004080300 *0000120001008d45e43b435473058b43f8ffe08d45f8c700a00007088970048b460c8945f48b46 *088945f08b46048945ecc745e8200f0808c745e4f8e5070883ed1cb8747e0508ebc89094c00408 *840000002400010083c7103b7b5c760cc7436c040000008b43f8ffe08b46048b4004c747f4ecc0 *04088947f88b45048947fc8b451089078b56048d47f48942048b750883c50cb8c8a30608ebcd8d *760088c004088401000024000900897510bea0e50708c745003cc10408ff268d76008b46048945 *fc8b750cc7450090c1040883ed08e90ce20100a4c10408ccc0040888c004080401000025000900 *88c0040804000000240009008b7510c74500d0c10408ff2683c504ebef8d760090c00408020000 *00150001008d45ec3b435473058b43f8ffe08d45f8c700a00007088970048b46048945f48b4608 *8945f0c745ecf8e5070883ed14b8a07c0508ebd589f688c004080500000024000d0083c70c3b7b *5c7615c7436c03000000c74320fe000000b84ccf0608ffe08b45048b5004c747f8fcc104088b45 *088947fc89178b55048d47f889420483c504b8dcc10408ebd68d76008b46048945fcc7450040c2 *040883ed04e9bf2400008d760088c20408e8c1040888c004080500000025000f0088c004080400 *000024000f008b46048b50048b45048945f88955f4c745f0f8e507088b4604894500c745fcb4c2 *040883ed10e98db800009088c004082400000024000f00897504bea0e50708c74500c0c20408ff *268d760084c004080400000024003f0083c71c3b7b5c7615c7436c07000000c74320ff000000b8 *4ccf0608ffe085f67519c7451020e60708bebc0f080883c50c83ef1cb8b8a10608ebe1c747e830 *9f05088977ecc747f0c88305088d47e88947f4c747f8e0c304088d47f08947fc8b450489078d77 *f8b8f8c20408ebae8d760084c004080300000024003f008b06668b40fe25ffff000083f8157414 *83f8167516be30e6070883ed04b8f8c20408ffe0be40e60708ebef897500c745fc18c3040883ed *04e8ffd4ffff89c68b4500ebde0200000004000000ff6500900200000009000000ff6500900000 *00000a000000ff650090000000000a000200ff650090b810c40408ffe090833d60270808007564 *c7056027080801000000c745008437050883c504c74500ccdd040883c504c74500fcb1050883c5 *04c745005490050883c504c74500d488050883c504c745002481050883c504c74500cc80050883 *c504c74500bc79050883c504c7450014ad050883c50483ed04ff65009000000200180000008d45 *f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e8e5 *c8010083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f49ce6070883ed *0cb8689c0508ebc2b8ecc40408ffe090833d64270808000f858c000000c7056427080801000000 *c7450010dd040883c504c745008cdd040883c504c74500bcd4040883c504c7450010c4040883c5 *04c745008437050883c504c74500841b050883c504c745005490050883c504c74500d488050883 *c504c74500e883050883c504c74500c07a050883c504c74500807a050883c504c74500bc790508 *83c504c7450014ad050883c50483ed04ff6500900400010000000000110000008b7500c7450008 *c60408ff26eb2e89f60000000024000000be9c0f080883c504ff650090a4c50408000000000000 *000000000100000001000d0000008d45fc3b435473058b43fcffe08b4604c745fcb0c5040883ed *0483ec0c50e829d6ffff83c4108b4500ebe090000000002400000083c7083b7b5c760cc7436c02 *0000008b43f8ffe0c747fcd4c504088b460489078d47fc894500b8ac9c0508ebe5909090040001 *0000000000110000008b7500c74500b4c60408ff26eb2e89f60000000024000000be9c0f080883 *c504ff65009050c60408000000000000000000000100000001000d0000008d45fc3b435473058b *43fcffe08b4604c745fc5cc6040883ed0483ec0c50e81dd5ffff83c4108b4500ebe09000000000 *2400000083c7083b7b5c760cc7436c020000008b43f8ffe0c747fc80c604088b460489078d47fc *894500b8ac9c0508ebe59090900400020000000000110000008b7500c7450044c70408e9092102 *0090000000002400000083c7083b7b5c7615c7436c02000000c74320ff000000b84ccf0608ffe0 *c747fcb0a1050889378d77fc83c5048b4500ebea8d76000000000024000000c7450008c7040883 *ec046810df0408566a01e80783010083c41089c6ff65009004000200000000001100000083c708 *3b7b5c7611c7436c02000000bebce507088b43fcffe0c747fce8c704088b450089078d47fc8945 *00b8c4eb0408ebe589f602000000150000008d45f03b435473058b43f8ffe08d45f8c700a00007 *088970048b46088945f48b46048945f083ed10b860180508ebdc900b000200010000000c000000 *83c70c3b7b5c760cc7436c030000008b43fcffe0c747f8acc704088b45008947fc8b450489078d *47f88945048b7604b8b8a10608ebdc909090e507086c0f08086c0f0808a0e60708a0e60708e4e6 *070820c80408040002000000000011003f008d45ec3b4354730abec0e507088b43fcffe08b7500 *c74500a0d304088b06ebf020c804080000000024002100c74500280f0808c745fce4e60708c745 *f8ece60708c745f458e6070883ed0ce914f8ffff20c804080000000024003100c745fc280f0808 *c745f8d4e60708c745f4e0e60708c745f060e60708c7450074c8040883ed10e9ddf7ffff9020c8 *04080000000024003900c745fc280f0808c745f8cce60708c745f4dce60708c745f05ce60708c7 *4500a4c8040883ed10e9a5f7ffff9020c804080000000024003d00c745fc280f0808c745f8bce6 *0708c745f4c8e60708c745f054e60708c74500dcc8040883ed10e96df7ffff90c745fc280f0808 *c745f8b4e60708c745f4c4e60708c745f050e60708c7450014c9040883ed10e941f7ffff900000 *0200140000008d45f83b435473058b43f8ffe08d45f8c700a0000708897004f6460404750ebecc *e5070889c5a18c000708ebdebec8e5070883ed08a190000708ebcf00000200140000008d45f83b *435473058b43f8ffe08d45f8c700a0000708897004f6460402750ebecce5070889c5a18c000708 *ebdebec8e5070883ed08a190000708ebcf00000200140000008d45f83b435473058b43f8ffe08d *45f8c700a0000708897004f6460401750ebecce5070889c5a18c000708ebdebec8e5070883ed08 *a190000708ebcf030000002400000083c73c3b7b5c7615c7436c0f000000c74320ff000000b84c *cf0608ffe0c747c874c904088977ccc747d4b8c904088977d8c747e0fcc904088977e4c747ec08 *d404088d47e08947f08d47d48947f48d47c88947f8c747fca8d304088b450889078b450c894508 *c7450ce8970608c74500c8e507088d47fc8945fc8b75048d47ec89450483ed08b814ae0608eb8e *8d76000b000300010000000c0000008d45f03b435473058b43fcffe08b46048945fcc745f840ca *040883ed08e8a2cdffff89c68b4500ebe28d760000000200140000008d45f83b435473058b43f8 *ffe08d45f8c700a0000708897004f6460404750ebecce5070889c5a18c000708ebdebec8e50708 *83ed08a190000708ebcf00000200140000008d45f83b435473058b43f8ffe08d45f8c700a00007 *08897004f6460402750ebecce5070889c5a18c000708ebdebec8e5070883ed08a190000708ebcf *00000200140000008d45f83b435473058b43f8ffe08d45f8c700a0000708897004f6460401750e *becce5070889c5a18c000708ebdebec8e5070883ed08a190000708ebcf030000002400000083c7 *3c3b7b5c7615c7436c0f000000c74320ff000000b84ccf0608ffe0c747c810cb04088977ccc747 *d454cb04088977d8c747e098cb04088977e4c747ec08d404088d47e08947f08d47d48947f48d47 *c88947f8c747fca8d304088b450889078b450c894508c7450ce8970608c74500cce507088d47fc *8945fc8b75048d47ec89450483ed08b814ae0608eb8e8d76000b000300010000000c0000008d45 *f03b435473058b43fcffe08b46048945fcc745f8dccb040883ed08e806ccffff89c68b4500ebe2 *8d760000000200140000008d45f83b435473058b43f8ffe08d45f8c700a0000708897004f64604 *04750ebecce5070889c5a18c000708ebdebec8e5070883ed08a190000708ebcf00000200140000 *008d45f83b435473058b43f8ffe08d45f8c700a0000708897004f6460402750ebecce5070889c5 *a18c000708ebdebec8e5070883ed08a190000708ebcf00000200140000008d45f83b435473058b *43f8ffe08d45f8c700a0000708897004f6460401750ebecce5070889c5a18c000708ebdebec8e5 *070883ed08a190000708ebcf030000002400000083c73c3b7b5c7615c7436c0f000000c74320ff *000000b84ccf0608ffe0c747c8accc04088977ccc747d4f0cc04088977d8c747e034cd04088977 *e4c747ec08d404088d47e08947f08d47d48947f48d47c88947f8c747fcc8d304088b450889078b *450c894508c7450ce8970608c74500c8e507088d47fc8945fc8b75048d47ec89450483ed08b814 *ae0608eb8e8d76000b000300010000000c0000008d45f03b435473058b43fcffe08b46048945fc *c745f878cd040883ed08e86acaffff89c68b4500ebe28d760000000200140000008d45f83b4354 *73058b43f8ffe08d45f8c700a0000708897004f6460404750ebecce5070889c5a18c000708ebde *bec8e5070883ed08a190000708ebcf00000200140000008d45f83b435473058b43f8ffe08d45f8 *c700a0000708897004f6460402750ebecce5070889c5a18c000708ebdebec8e5070883ed08a190 *000708ebcf00000200140000008d45f83b435473058b43f8ffe08d45f8c700a0000708897004f6 *460401750ebecce5070889c5a18c000708ebdebec8e5070883ed08a190000708ebcf0300000024 *00000083c73c3b7b5c7615c7436c0f000000c74320ff000000b84ccf0608ffe0c747c848ce0408 *8977ccc747d48cce04088977d8c747e0d0ce04088977e4c747ec08d404088d47e08947f08d47d4 *8947f48d47c88947f8c747fcc8d304088b450889078b450c894508c7450ce8970608c74500cce5 *07088d47fc8945fc8b75048d47ec89450483ed08b814ae0608eb8e8d76000b000300010000000c *0000008d45f03b435473058b43fcffe08b46048945fcc745f814cf040883ed08e8cec8ffff89c6 *8b4500ebe28d760000000200140000008d45f83b435473058b43f8ffe08d45f8c700a000070889 *7004f6460404750ebecce5070889c5a18c000708ebdebec8e5070883ed08a190000708ebcf0000 *0200140000008d45f83b435473058b43f8ffe08d45f8c700a0000708897004f6460402750ebecc *e5070889c5a18c000708ebdebec8e5070883ed08a190000708ebcf00000200140000008d45f83b *435473058b43f8ffe08d45f8c700a0000708897004f6460401750ebecce5070889c5a18c000708 *ebdebec8e5070883ed08a190000708ebcf040000002400000083c73c3b7b5c7615c7436c0f0000 *00c74320ff000000b84ccf0608ffe0c747c8e4cf04088977ccc747d428d004088977d8c747e06c *d004088977e4c747ec08d404088d47e08947f08d47d48947f48d47c88947f8c747fce8d304088b *450889078d47ec8945088d47fc8945008b75048b450c8945048b451089450cc74510e897060883 *ed04b814ae0608eb8f16000400010000000c0000008d45f43b435473058b43fcffe08b46048945 *fcc745f8b0d0040883ed08e836c7ffff89c68b4500ebe28d760020c80408010000002400210083 *c7103b7b5c7615c7436c04000000c74320fe000000b84ccf0608ffe0c747f448d104088b450489 *47f8c747fcc88305088d47f489078d47fc894504c74500e4e60708c745fcece60708c745f858e6 *070883ed08b8acc00408ebc09020c80408010000002400310083c7103b7b5c7615c7436c040000 *00c74320fe000000b84ccf0608ffe0c747f4b0cf04088b45048947f8c747fcc88305088d47f489 *078d47fc8945fcc745f8d4e60708c745f4e0e60708c745f060e60708c7450080d1040883ed10b8 *acc00408ebb989f620c80408010000002400390083c7103b7b5c7615c7436c04000000c74320fe *000000b84ccf0608ffe0c747f414ce04088b45048947f8c747fcc88305088d47f489078d47fc89 *45fcc745f8cce60708c745f4dce60708c745f05ce60708c74500e8d1040883ed10b8acc00408eb *b989f620c804080100000024003d0083c7103b7b5c7615c7436c04000000c74320fe000000b84c *cf0608ffe0c747f478cc04088b45048947f8c747fcc88305088d47f489078d47fc8945fcc745f8 *bce60708c745f4c8e60708c745f054e60708c7450058d2040883ed10b8acc00408ebb989f683c7 *103b7b5c760cc7436c040000008b43f8ffe0c747f4dcca04088b46048947f8c747fcc88305088d *47f489078d47fc8945f8c745f4b4e60708c745f0c4e60708c745ec50e607088b4604894500c745 *fcc8d2040883ed14b8acc00408ebb3902cd3040840c9040820c804080000000025003f00010000 *00020000008b4500ff60f089f601000000090000008b4500ff60f0909001000000020001008b45 *00ff60ec89f601000000090001008b4500ff60ec909001000000020002008b4500ff60e889f601 *000000090002008b4500ff60e890900300000001000000ff6500900300000009000000ff650090 *000000000a0000008b4500ff60f09090000000000a0001008b4500ff60ec89f6c8e50708cce507 *08b848d40408ffe090833d6827080800755ac7056827080801000000c74500c4dc040883c504c7 *4500ccdd040883c504c74500bcd4040883c504c74500c03e050883c504c745008437050883c504 *c745004012050883c504c74500d488050883c504c7450014ad050883c50483ed04ff6500909090 *b8bcd40408ffe090833d6c270808007528c7056c27080801000000c74500d488050883c504c745 *004012050883c504c7450014ad050883c50483ed04ff650090b8fcd40408ffe090833d70270808 *00753cc7057027080801000000c745008437050883c504c74500d43f050883c504c7450014b105 *0883c504c74500f8ad050883c504c7450014ad050883c50483ed04ff650090b850d50408ffe090 *833d7427080800753cc7057427080801000000c74500bcd4040883c504c74500c4dc040883c504 *c745008437050883c504c74500d488050883c504c7450014ad050883c50483ed04ff650090b8a4 *d50408ffe090833d78270808007550c7057827080801000000c745005490050883c504c7450040 *12050883c504c74500d488050883c504c74500cc86050883c504c74500c07a050883c504c74500 *bc79050883c504c7450014ad050883c50483ed04ff650090b80cd60408ffe090833d7c27080800 *0f8582000000c7057c27080801000000c74500ccdd040883c504c745001cda040883c504c74500 *8cdd040883c504c74500bcd4040883c504c745008437050883c504c74500841b050883c504c745 *004012050883c504c74500d488050883c504c74500cc86050883c504c745005883050883c504c7 *4500bc79050883c504c7450014ad050883c50483ed04ff65009090900400010000000000110000 *008d45fc3b4354730abed0e507088b43fcffe08b45008945fcc74500e4d6040883ed04b8dcda04 *08ebe78d7600000000002400000083c7083b7b5c760ec7436c02000000b838c90608ffe0c747fc *04ab050889378d77fc83c5048b4500ebea90900c100808340f080810d704080b00030000000000 *110003008d45e83b4354730abed4e507088b43fcffe0be04000000c745fc64d9040883ed04b8e4 *d40608ebe810d7040801000100130001008d45f43b435473058b43f8ffe08d45f8c700a0000708 *8970048b46048945f483ed0cb8ec9f0508ebe28d760010d70408000000002400010083c70c3b7b *5c7615c7436c03000000c74320fe000000b84ccf0608ffe0c747f85cd704088977fc8d77f883c5 *048b4500ebe989f610d7040800000000240001008975fcc7450094d7040883ed04e98a1e000089 *f610d7040842000000240001008b45088b00894500c745fc440f0808c74508d4d7040883ed04e9 *6ab4000089f610d7040821000000240001008975008b55048b4604c745fcf4d7040883ed0483ec *085052e863c2ffff83c410ff65009010d704080b000300000001000d0001008d45f83b43547305 *8b43fcffe08b55048b460489450489d6c7450020d804088b06ebe89010d7040804000200000001 *000d0003008d45f43b4354720883c7083b7b5c760cc7436c020000008b43fcffe0c747fc54d804 *088b460489078b45008945fc8d47fc894500c745f820100808c745f4440f080883ed0cb8788a05 *08ebcec30000002400000083c510ff650089f610d70408030000002400030083c7143b7b5c760e *c7436c05000000b838c90608ffe08b550483c2088d46018902c747f088d804088957f4c747f864 *9705088b45088947fc8b450c8907c745fce89706088d47f08945f88d47f88945f4c745f02c0f08 *08c74500dcd8040883ed10b8108f0508ebac10d7040802000000240003008b45088945f8897500 *c745fcf0d8040883ed08e9801c00000900020000000000110000008d45fc3b4354730abedce507 *088b43fcffe08b7504c745fcfcd9040883ed048b06ebed908b750483c50cff65008d7600220000 *00240000008b45040b460489450483c504e9b7ffffff8d76008b46088945088b7604c74500c0d9 *0408ff2689f6d4d90408acd90408000000006200000025000000000000000a000100ff65009000 *0000000a000900ff650090b81cda0408ffe090833d80270808000f85a0000000c7058027080801 *000000c74500c4dc040883c504c745008cdd040883c504c74500bcd4040883c504c74500843705 *0883c504c74500841b050883c504c74500f8ad050883c504c74500e090050883c504c745005490 *050883c504c74500908e050883c504c74500f08b050883c504c74500d488050883c504c74500cc *86050883c504c745005883050883c504c74500807a050883c504c7450014ad050883c50483ed04 *ff6500900400010000000000110000008b7500c74500f0da0408ff2600000000240000008b0666 *8b40fe25ffff000083f80a774cff248540870708be8000000083c5048b4500ffe0be02000000eb *f1be20000000ebeabe10000000ebe3be04000000ebdcbe08000000ebd5be00020000ebcebe0100 *0000ebc7be00000000ebc0be00010000ebb990b85cdb0408ffe090833d84270808000f85aa0000 *00c7058427080801000000c7450010c4040883c504c74500ecc4040883c504c74500ccdd040883 *c504c745008cdd040883c504c74500c4dc040883c504c74500bcd4040883c504c7450084370508 *83c504c74500fcb1050883c504c74500bc79050883c504c745005490050883c504c74500d48805 *0883c504c74500cc86050883c504c745002481050883c504c74500cc80050883c504c74500347a *050883c504c7450014ad050883c50483ed04ff6500909090b824dc0408ffe090833d8827080800 *7528c7058827080801000000c745004012050883c504c74500b044050883c504c7450014ad0508 *83c50483ed04ff650090b864dc0408ffe090833d8c270808007546c7058c27080801000000c745 *00c4dc040883c504c74500ccdd040883c504c74500bcd4040883c504c745008437050883c504c7 *45004012050883c504c7450014ad050883c50483ed04ff6500909090b8c4dc0408ffe090833d90 *270808007532c7059027080801000000c74500d488050883c504c745004012050883c504c74500 *bc79050883c504c7450014ad050883c50483ed04ff6500909090b810dd0408ffe090833d942708 *08007564c7059427080801000000c7450064dc040883c504c74500c4dc040883c504c74500bcd4 *040883c504c745008437050883c504c74500841b050883c504c745004012050883c504c74500d4 *88050883c504c74500bc79050883c504c7450014ad050883c50483ed04ff650090b88cdd0408ff *e090833d98270808007528c7059827080801000000c74500d488050883c504c74500bcd4040883 *c504c7450014ad050883c50483ed04ff650090b8ccdd0408ffe090833d9c27080800755ac7059c *27080801000000c74500c4dc040883c504c745008cdd040883c504c74500bcd4040883c504c745 *008437050883c504c74500841b050883c504c74500d488050883c504c74500cc86050883c504c7 *450014ad050883c50483ed04ff65009090900400010000000000110000008b7500c74500e0de04 *08ff26eb5689f6000000002400000083c7083b7b5c7615c7436c02000000c74320ff000000b84c *cf0608ffe0c747fc309f050889378d77fc83c5048b4500ebea8d760050de040800000000000000 *0000000100000001000d0000008d45fc3b435473058b43fcffe08b4604c745fc5cde040883ed04 *83ec0c50e8b5b9ffff83c41089c68b4500ebde8d7600000000002400000083c7083b7b5c760cc7 *436c020000008b43f8ffe0c747fca8de04088b460489078d47fc894500b8ac9c0508ebe5909090 *5589e583ec08e8187301008b4508c1e00483ec088b15a02b0808ff34026840100808e8166f0100 *83c4088d55fc5250e89670010083c40850686c870708e889720100e8dd720100c9c35589e55383 *ec04e8ce7201008b4508c1e0048b15a02b08088b1c0283ec0cff7510e8056d010083c4085053e8 *c46e010089c383c404ff7514e8ee6c010083c4085053e8ad6e010083c408506840100808e89f6e *010083c4088d55f85250e81f70010083c408506898870708e812720100e8667201008b5dfcc9c3 *5589e55383ec04e8547201008b4508c1e0048b15a02b08088b1c0283ec0cff7510e88b6c010083 *c4085053e84a6e010083c408506840100808e83c6e010083c4088d55f85250e8bc6f010083c408 *5068c4870708e8af710100e8037201008b5dfcc9c35589e5565383ec108a5d10e8ed7101008b45 *08c1e0048b15a02b08088b340283ec0c81e3ff00000053e87c6c010083c4085056e8df6d010089 *c383c404ff7514e8096c010083c4085053e8c86d010089c383c404ff7518e8f26b010083c40850 *53e8b16d010083c408506840100808e8a36d010083c4088d55f45250e8236f010083c4085068f0 *870708e816710100e86a7101008d65f85b5e5dc35589e55383ec04e8567101008b4508c1e0048b *15a02b08088b1c0283ec0cff7510e88d6b010083c4085053e84c6d010089c383c404ff7514e876 *6b010083c4085053e8356d010089c383c404ff7518e85f6b010083c4085053e81e6d010083c408 *506840100808e8106d010083c4088d55f85250e8906e010083c40850681c880708e883700100e8 *d77001008b5dfcc9c35589e55383ec04e8c57001008b4508c1e0048b15a02b08088b1c0283ec0c *ff7510e8fc6a010083c4085053e8bb6c010089c383c404ff7514e8e56a010083c4085053e8a46c *010089c383c404ff7518e8ce6a010083c4085053e88d6c010089c383c404ff751ce8b76a010083 *c4085053e8766c010083c408506840100808e8686c010083c4088d55f85250e8e86d010083c408 *506848880708e8db6f0100e82f7001008b5dfcc9c35589e55383ec04e81d7001008b4508c1e004 *8b15a02b08088b1c0283ec0cff7510e8546a010083c4085053e8136c010089c383c404ff7514e8 *3d6a010083c4085053e8fc6b010083c408506840100808e8ee6b010083c4088d55f85250e86e6d *010083c408506874880708e8616f0100e8b56f01008b5dfcc9c35589e55383ec04e8a36f01008b *4508c1e0048b15a02b08088b1c0283ec0cff7510e8da69010083c4085053e8996b010083c40850 *6840100808e88b6b010083c4088d55f85250e80b6d010083c4085068a0880708e8fe6e0100e852 *6f01008b5dfcc9c35589e55383ec04e8406f01008b4508c1e0048b15a02b08088b1c0283ec0cff *7510e81669010083c4085053e8366b010089c383c404ff7514e8ff68010083c4085053e81f6b01 *0089c383c404ff7518e8e868010083c4085053e8086b010083c408506840100808e8fa6a010083 *c4088d55f85250e87a6c010083c4085068cc880708e86d6e0100e8c16e01008b5dfcc9c35589e5 *5383ec04e8af6e01008b4508c1e0048b15a02b08088b1c0283ec0cff7510e88568010083c40850 *53e8a56a010089c383c404ff7514e86e68010083c4085053e88e6a010089c383c404ff7518e857 *68010083c4085053e8776a010083c408506840100808e8696a010083c4088d55f85250e8e96b01 *0083c4085068f8880708e8dc6d0100e8306e01008b5dfcc9c35589e55383ec04e81e6e01008b45 *08c1e0048b15a02b08088b1c0283ec0cff7510e85568010083c4085053e8146a010089c383c404 *ff7514e83e68010083c4085053e8fd69010083c408506840100808e8ef69010083c4088d55f852 *50e86f6b010083c408506824890708e8626d0100e8b66d01008b5dfcc9c35589e55383ec04e8a4 *6d01008b4508c1e0048b15a02b08088b1c0283ec0cff7510e8db67010083c4085053e89a690100 *89c383c404ff7514e8c467010083c4085053e88369010083c408506840100808e87569010083c4 *088d55f85250e8f56a010083c408506850890708e8e86c0100e83c6d01008b5dfcc9c35589e553 *83ec04e82a6d01008b4508c1e0048b15a02b08088b1c0283ec0cff7510e80067010083c4085053 *e82069010089c383c404ff7514e8e966010083c4085053e80969010083c408506840100808e8fb *68010083c4088d55f85250e87b6a010083c40850687c890708e86e6c0100e8c26c01008b5dfcc9 *c35589e55383ec04e8b06c01008b4508c1e0048b15a02b08088b1c0283ec0cff7510e8e7660100 *83c4085053e8a668010089c383c404ff7514e8d066010083c4085053e88f68010083c408506840 *100808e88168010083c4088d55f85250e8016a010083c4085068a8890708e8f46b0100e8486c01 *008b5dfcc9c35589e55383ec04e8366c01008b4508c1e0048b15a02b08088b1c0283ec0cff7510 *e86d66010083c4085053e82c68010089c383c404ff7514e85666010083c4085053e81568010089 *c383c404ff7518e83f66010083c4085053e8fe67010089c383c404ff751ce82866010083c40850 *53e8e767010083c408506840100808e8d967010083c4088d55f85250e85969010083c4085068d4 *890708e84c6b0100e8a06b01008b5dfcc9c35589e55383ec04e88e6b01008b4508c1e0048b15a0 *2b08088b1c0283ec0cff7510e86766010083c4085053e88467010089c383c404ff7514e8ae6501 *0083c4085053e86d67010089c383c404ff7518e89765010083c4085053e85667010089c383c404 *ff751ce88065010083c4085053e83f67010083c408506840100808e83167010083c4088d55f852 *50e8b168010083c4085068008a0708e8a46a0100e8f86a01008b5dfcc9c39090908ce6070814e7 *070844e704080400020000000000110003008d45fc3b4354730abef0e507088b43fcffe0be8ce6 *0708c745fc14e8040883ed048b06ebeb8d76000000000024000000be9c0f080883c504ff650090 *00000000240000008b4604c745008ce7040883ec046a00506a00e8c9b5ffff83c410ff65008d76 *0000000000240000008b46048b7004c74500a0e70408ff2690be14e70708c74500c8e70408ff26 *89f6be9c0f080883c504ff650090e8e70408d8e7040848e70408000000002500010048e7040801 *0000002400010083c70c3b7b5c760cc7436c030000008b43f8ffe08b46048b4804c747f8649705 *088b45048947fc890f8b56048d47f889420489cec7450408e8040883c5048b06ebd090906ce607 *087ce6070858e8040800000200180003008d45f03b4354720883c70c3b7b5c760cc7436c030000 *008b43f8ffe0c747f808ee060883ec0c56e805a5010083c4108d47f8894604c70624ed06088d55 *f8c702a0000708894204c745f47ce60708c745f06ce6070883ed10b84c960508ebbb9000000000 *0a000300ff650090000000000a000400ff650090000000000a000500ff650090000000000a000b *00ff650090000000000a000c00ff650090000000000a001500ff650090000000000a001600ff65 *009098e5070850e707089ce5070850e6070854e6070858e6070854e7070858e707085ce7070860 *e7070864e707085ce6070860e6070868e707086ce7070870e7070874e7070878e707087ce70708 *80e7070884e7070864e6070868e6070867657443616c6c6261636b49440089f600000200180000 *008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c *56e8dda3010083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f47ce904 *0883ed0cb87c920508ebc23a206e6f2063757272656e742077696e646f77000000020018000000 *8d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56 *e869a3010083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f4ece90408 *83ed0cb87c920508ebc200000200180000008d45f43b4354720883c70c3b7b5c760cc7436c0300 *00008b43f8ffe0c747f808ee060883ec0c56e809a3010083c4108d47f8894604c70624ed06088d *55f8c702a0000708894204c745f488e7070883ed0cb8689c0508ebc200eb040800000000000000 *000000010000000000110000008d45fc3b4354730abe9ce607088b43fcffe0be1c0f0808c745fc *10eb040883ed04b8bcd50608ebe8e9d3ffffff8d7600000000002400000083c7083b7b5c7615c7 *436c02000000c74320fe000000b84ccf0608ffe0c747fc54a3050889378d77fc83c5048b4500eb *ea909090bc0f08089ce7070844eb040800000200180003008d45f03b4354720883c70c3b7b5c76 *0cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e819a2010083c4108d47f8894604c7 *0624ed06088d55f8c702a0000708894204c745f49ce70708bebc0f080883ed10b8b8a10608ebbd *9090900400020000000000110000008b7500c7450018ec0408e935fc0100900000000024000000 *83c7083b7b5c7615c7436c02000000c74320ff000000b84ccf0608ffe0c747fcb0a1050889378d *77fc83c5048b4500ebea8d76000000000024000000c74500dceb040883ec046859df0408566a01 *e8335e010083c41089c6ff6500906c0f080838ec040804000200000000001100010083c7083b7b *5c7611c7436c02000000beb4e607088b43fcffe0c747fc54ed04088b450089078d47fc894500b8 *e4ff0408ebe589f602000000150000008d45f03b435473058b43f8ffe08d45f8c700a000070889 *70048b46088945f48b46048945f083ed10b8d0180508ebdc9038ec0408000000002400010083c7 *083b7b5c760cc7436c020000008b43f8ffe0817e04ffff1000760fbe6c0f080883c50483ef088b *06ebe68b4604c747fc2497050889078d77fc83c504b8a0000708ebcd8d760038ec040801000100 *130001008d45f43b435473058b43f8ffe08d45f8c700a00007088970048b7604c745f4c4ec0408 *83ed0c8b06ebe189f638ec040816000300010000000c00010083c7183b7b5c760cc7436c060000 *008b43fcffe0c747ec88ec04088b45048947f08b45088947f4c747f818ed04088b45008947fc8d *47ec8945088d47f88945048b7604b824a60608ebc890906c0f0808a0ed04080400020000000000 *1100010083c7083b7b5c7611c7436c02000000bebce607088b43fcffe0c747fcbcee04088b4500 *89078d47fc894500b8e4ff0408ebe589f602000000150000008d45f03b435473058b43f8ffe08d *45f8c700a00007088970048b46088945f48b46048945f083ed10b8d0180508ebdc90a0ed040800 *0000002400010083c7083b7b5c760cc7436c020000008b43f8ffe0817e04ffff1000760fbe6c0f *080883c50483ef088b06ebe68b4604c747fc2497050889078d77fc83c504b8a0000708ebcd8d76 *00a0ed040801000100130001008d45f43b435473058b43f8ffe08d45f8c700a00007088970048b *7604c745f42cee040883ed0c8b06ebe189f6a0ed040816000300010000000c00010083c7183b7b *5c760cc7436c060000008b43fcffe0c747ecf0ed04088b45048947f08b45088947f4c747f880ee *04088b45008947fc8d47ec8945088d47f88945048b7604b824a60608ebc8909004000100000000 *00110000008b7500c7450084ef0408ff26eb2e89f60000000024000000be9c0f080883c504ff65 *009020ef0408000000000000000000000100000001000d0000008d45fc3b435473058b43fcffe0 *8b4604c745fc2cef040883ed0483ec0c50e81da8ffff83c4108b4500ebe0900000000024000000 *83c7083b7b5c760cc7436c020000008b43f8ffe0c747fc50ef04088b460489078d47fc894500b8 *ac9c0508ebe59090900400010000000000110000008b7500c7450030f00408ff26eb2e89f60000 *000024000000be9c0f080883c504ff650090ccef0408000000000000000000000100000001000d *0000008d45fc3b435473058b43fcffe08b4604c745fcd8ef040883ed0483ec0c50e851acffff83 *c4108b4500ebe090000000002400000083c7083b7b5c760cc7436c020000008b43f8ffe0c747fc *fcef04088b460489078d47fc894500b8ac9c0508ebe5909090a0e6070860f00408040002000000 *00001100010083c7083b7b5c7611c7436c02000000becce607088b43fcffe0c747fc28f104088b *450089078d47fc894500b864000508ebe589f602000000150000008d45f03b435473058b43f8ff *e08d45f8c700a00007088970048b46088945f48b46048945f083ed10b8d0180508ebdc9060f004 *0801000100130001008d45f43b435473058b43f8ffe08d45f8c700a00007088970048b46048945 *f483ed0cb8b4ff0408ebe28d760060f0040816000300010000000c00010083c7183b7b5c760cc7 *436c060000008b43fcffe0c747ecb0f004088b45048947f08b45088947f4c747f8ecf004088b45 *008947fc8d47ec8945088d47f88945048b7604b824a60608ebc89090a0e6070874f10408040002 *00000000001100010083c7083b7b5c7611c7436c02000000bed4e607088b43fcffe0c747fc3cf2 *04088b450089078d47fc894500b864000508ebe589f602000000150000008d45f03b435473058b *43f8ffe08d45f8c700a00007088970048b46088945f48b46048945f083ed10b8d0180508ebdc90 *74f1040801000100130001008d45f43b435473058b43f8ffe08d45f8c700a00007088970048b46 *048945f483ed0cb8b4ff0408ebe28d760074f1040816000300010000000c00010083c7183b7b5c *760cc7436c060000008b43fcffe0c747ecc4f104088b45048947f08b45088947f4c747f800f204 *088b45008947fc8d47ec8945088d47f88945048b7604b824a60608ebc890900400010000000000 *110000008b7500c7450004f30408ff26eb2e89f60000000024000000be9c0f080883c504ff6500 *90a0f20408000000000000000000000100000001000d0000008d45fc3b435473058b43fcffe08b *4604c745fcacf2040883ed0483ec0c50e82da4ffff83c4108b4500ebe090000000002400000083 *c7083b7b5c760cc7436c020000008b43f8ffe0c747fcd0f204088b460489078d47fc894500b8ac *9c0508ebe59090900400010000000000110000008b7500c74500b0f30408ff26eb2e89f6000000 *0024000000be9c0f080883c504ff6500904cf30408000000000000000000000100000001000d00 *00008d45fc3b435473058b43fcffe08b4604c745fc58f3040883ed0483ec0c50e8e1a3ffff83c4 *108b4500ebe090000000002400000083c7083b7b5c760cc7436c020000008b43f8ffe0c747fc7c *f304088b460489078d47fc894500b8ac9c0508ebe59090908ce70708f8e60708e0f30408040002 *00000000001100030083c7083b7b5c7611c7436c02000000bee4e607088b43fcffe0c747fce4f4 *04088b450089078d47fc894500b8e4000508ebe589f602000000150000008d45f03b435473058b *43f8ffe08d45f8c700a00007088970048b46088945f48b46048945f083ed10b8d0180508ebdc90 *e0f3040801000100130001008d45f43b435473058b43f8ffe08d45f8c700a00007088970048b46 *048945f483ed0cb84cff0408ebe28d7600e4f3040801000100130001008d45f43b435473058b43 *f8ffe08d45f8c700a00007088970048b46048945f483ed0cb85cf70408ebe28d7600e0f3040817 *000400010000000c00030083c7243b7b5c760cc7436c090000008b43fcffe0c747e034f404088b *45088947e48b450c8947e8c747ec70f404088b45048947f0c747f8a8f404088b45008947fc8d47 *e089450c8d47ec8945088d47f88945048b7604b850ab0608ebb590909004000100000000001100 *00008b7500c74500c0f50408ff26eb2e89f60000000024000000be9c0f080883c504ff6500905c *f50408000000000000000000000100000001000d0000008d45fc3b435473058b43fcffe08b4604 *c745fc68f5040883ed0483ec0c50e891a4ffff83c4108b4500ebe090000000002400000083c708 *3b7b5c760cc7436c020000008b43f8ffe0c747fc8cf504088b460489078d47fc894500b8ac9c05 *08ebe59090900400010000000000110000008d45fc3b4354730abef0e607088b43fcffe08b7500 *c7450064f604088b06ebf0be0000000083c504ff65009000000000240000004683c504ff650090 *8b46088945fcc7450030f6040883ed04e9afffffff8d760038f604081cf6040800000000000000 *00250000000400020000000000110000008d45f83b4354730abef4e607088b43fcffe08b7500c7 *450048f704088b06ebf0be940f080883c504ff650090010000002400000083c70c3b7b5c7615c7 *436c03000000c74320fe000000b84ccf0608ffe0c747f8649705088b45048947fc89378d77f883 *c5088b4500ebe49001000000240000008b45048945fc897504c74500a4f6040883ed04e974ffff *ff01000000240000008b46048945fcc74500e4f6040883ed04e93f9000008d76008b4608894500 *8b7604c745fc04f7040883ed04ff268d76001cf7040890f60408000000000000000025000000c8 *e7070848f704080400010000000000110001008b7500c7450074f70408ff2648f7040800000000 *240001008b460483f8047757ff24852c8a0708be00e7070883c5048b45008b40f0ffe0be04e707 *0883c5048b45008b40ecebeebe08e7070883c5048b45008b40e8ebdebe0ce7070883c5048b4500 *8b40e4ebcebe10e7070883c5048b45008b40e0ebbebec8e7070883c5048b06ebb290000000000a *0000008b4500ff60f09090000000000a0001008b4500ff60ec9090000000000a0002008b4500ff *60e89090000000000a0003008b4500ff60e49090000000000a0004008b4500ff60e089f600e707 *0804e7070808e707080ce7070810e707088ce6070844f8040800000200180001008d45f43b4354 *720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e81d95010083 *c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f4d8e7070883ed0cb8689c *0508ebc20b00020000000000110000008d45f83b4354730abe24e707088b43fcffe08b7500c745 *0008f904088b06ebf002000000240000008b45048945008b46048945048b45088945fc8b460889 *450883ed04e9040b000001000000240000008b46088945008b55048b460489450489d6c745fce0 *f8040883ed04ff269090900b00020000000000110000008d45f83b4354730abe28e707088b43fc *ffe08b7500c7450084f904088b06ebf002000000240000008b45048945008b46048945048b4508 *8945fc8b460889450883ed04e94c0b000001000000240000008b46088945008b55048b46048945 *0489d6c745fc5cf9040883ed04ff269090900b00020000000000110000008d45f83b4354730abe *2ce707088b43fcffe08b7500c7450000fa04088b06ebf002000000240000008b45048945008b46 *048945048b45088945fc8b460889450883ed04e9940b000001000000240000008b46088945008b *55048b460489450489d6c745fcd8f9040883ed04ff269090900b00020000000000110000008d45 *f83b4354730abe30e707088b43fcffe08b7500c745007cfa04088b06ebf002000000240000008b *45048945008b46048945048b45088945fc8b460889450883ed04e9dc0b00000100000024000000 *8b46088945008b55048b460489450489d6c745fc54fa040883ed04ff269090900b000200000000 *00110000008d45ec3b4354730abe34e707088b43fcffe08b7500c7450060fb04088b06ebf08b75 *0c83c514ff268b750883c50cff268b750483c50cff26d0fa0408d8fa0408d8fa04080000000002 *000000250000008b4508894500c74508f8fa0408e97608000089f68b751083c514ff260cfb0408 *f8fa0408c8fa040800000000040000002500000003000000240000008b46048945f88b450c8945 *f48b460889450089750cc745fc2cfb040883ed0ce9e006000001000000240000008b46088945fc *8975008b55048b460489450489d6c745f834fb040883ed08ff260b00020000000000110000008d *45ec3b4354730abe38e707088b43fcffe08b7500c7450044fc04088b06ebf08b751083c514ff26 *8b750483c50cff268b750883c50cff26b4fb0408bcfb0408bcfb04080000000002000000250000 *008b4508894500c74508dcfb0408e99207000089f68b750c83c514ff26f0fb0408dcfb0408acfb *040800000000040000002500000003000000240000008b46048945f88b450c8945f48b46088945 *0089750cc745fc10fc040883ed0ce9fc05000001000000240000008b46088945fc8975008b5504 *8b460489450489d6c745f818fc040883ed08ff260b00020000000000110000008d45f43b435473 *0abe3ce707088b43fcffe08b7500c7450004fd04088b06ebf0bea00f080883c50c8b4500ff60f0 *89f683c504e9d8060000bea80f080883c50c8b4500ff60e889f6a8fc0408a0fc040890fc040800 *000000020000002500000002000000240000008b46048945fc8b45088945f88b4608894508c745 *00d0fc040883ed08e93f0500008d760001000000240000008b46088945008b55048b4604894504 *89d6c745fcd8fc040883ed04ff26909090000000000a000100ff650090000000000a000600ff65 *0090000000000a000700ff650090000000000a000800ff650090000000000a000900ff65009000 *0000000a000a00ff650090000000000a000d00ff650090000000000a000e00ff65009000000000 *0a000f00ff650090000000000a001000ff650090000000000a001100ff650090000000000a0012 *00ff650090000000000a001300ff650090000000000a001400ff6500900cfe0408000000000000 *00000000010000000000110000008d45fc3b4354730abe88e707088b43fcffe0be940f0808c745 *fc1cfe040883ed04b8bcd50608ebe8e9d3ffffff8d7600000000002400000083c7083b7b5c7615 *c7436c02000000c74320fe000000b84ccf0608ffe0c747fc54a3050889378d77fc83c5048b4500 *ebea909090bc0f080804e8070850fe040800000200180003008d45f03b4354720883c70c3b7b5c *760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e80d8f010083c4108d47f8894604 *c70624ed06088d55f8c702a0000708894204c745f404e80708bebc0f080883ed10b8b8a10608eb *bd909090756e6d61727368616c5370656369616c4b65790000000200180000008d45f43b435472 *0883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e8918e010083c4 *108d47f8894604c70624ed06088d55f8c702a0000708894204c745f4c4fe040883ed0cb87c9205 *08ebc28ce7070838ff04080400010000000000110001008b7500c7450064ff0408ff2638ff0408 *00000000240001008b460485c0740783f8017412eb20bec8e5070883c5048b45008b40f0ffe0be *cce5070883c5048b45008b40ecebeebe8ce7070883c5048b06ebe29090a0e60708a0ff04080400 *010000000000110001008b7500c74500ccff0408ff26a0ff040800000000240001008b46048945 *00e9690a0000900400020000000000110000008b7500c7450038000508e915e801009000000000 *2400000083c7083b7b5c7615c7436c02000000c74320ff000000b84ccf0608ffe0c747fcb0a105 *0889378d77fc83c5048b4500ebea8d76000000000024000000c74500fcff040883ec046836e004 *08566a01e8134a010083c41089c6ff6500900400020000000000110000008b7500c74500b80005 *08e995e7010090000000002400000083c7083b7b5c7615c7436c02000000c74320ff000000b84c *cf0608ffe0c747fcb0a1050889378d77fc83c5048b4500ebea8d76000000000024000000c74500 *7c00050883ec0468d1e00408566a01e89349010083c41089c6ff65009004000200000000001100 *00008b7500c7450038010508e915e7010090000000002400000083c7083b7b5c7615c7436c0200 *0000c74320ff000000b84ccf0608ffe0c747fcb0a1050889378d77fc83c5048b4500ebea8d7600 *0000000024000000c74500fc00050883ec046862e10408566a01e81349010083c41089c6ff6500 *90bc0f080870e807085801050800000200180003008d45f03b4354720883c70c3b7b5c760cc743 *6c030000008b43f8ffe0c747f808ee060883ec0c56e8058c010083c4108d47f8894604c70624ed *06088d55f8c702a0000708894204c745f470e80708bebc0f080883ed10b8b8a10608ebbd909090 *8ce607081402050800000000cc0105080000010000000000110001008d45f83b4354730abed8e7 *07088b43fcffe0c745f884e80708c745fc2402050883ed08b8d80c0508ebe689f6e9cfffffff8d *76000000000024000000897500e9e49900000b00020000000000110000008d45f83b4354730abe *e0e707088b43fcffe08b7500c745fc7403050883ed048b06ebed90bea40f080883c5088b4500ff *60ec89f6bea40f080883c5088b4500ff60ec89f68b45048945008b4604894504e9fb9b00008d76 *007c0205086c0205080000000001000000250000008b55048b460489450489d6c74500a4020508 *ff26a40205085c020508000000000100000025000000230000002400000039750474253975047c *10bea80f080883c5108b45008b40e8ffe0bea00f080883c5108b45008b40f0ebee8b7508c74508 *cc02050883c5088b06ebdd90be00000000ebbd90be01000000ebb5901803050810030508000000 *00230000002500000002000000240000008975008b7508c745fc3403050883ed04ff2689f6be00 *000000ebe590be01000000ebdd9058030508500305080000000002000000250000000b00020000 *000000110000008b7500c74500e0030508ff2621000000240000008b068b40fcc1e81039450474 *253945047c10bea80f080883c5088b45008b40e8ffe0bea00f080883c5088b45008b40f0ebeebe *a40f080883c5088b45008b40ecebde89f601000000240000008b068b40fcc1e8108b7504894504 *c7450094030508ff26901700040000000000110000008d45f83b4354730abee8e707088b43fcff *e08b45088945fc8b45008945f8c74500bc04050883ed08b838020508ebe190be980f080883c510 *8b4500ff60ec89f6be980f080883c5048b4500ff60ec89f6be900f080883c5048b4500ff60f089 *f65404050854040508440405080000000000000000250000008b450c894508c7450c7c04050883 *c504e9effeffff8d7600be900f080883c5108b4500ff60f089f6940405087c0405083404050800 *00000043000000250000001700040000000000110000008d45f83b4354730abeece707088b43fc *ffe08b45088945fc8b45008945f8c745008005050883ed08b838020508ebe190be900f080883c5 *108b4500ff60f089f6be900f080883c5048b4500ff60f089f6be980f080883c5048b4500ff60ec *89f61805050818050508080505080000000000000000250000008b450c894508c7450c40050508 *83c504e92bfeffff8d7600be980f080883c5108b4500ff60ec89f65805050840050508f8040508 *0000000043000000250000001700040000000000110000008d45f83b4354730abef0e707088b43 *fcffe08b45088945fc8b45008945f8c745004406050883ed08b838020508ebe190be900f080883 *c5108b4500ff60f089f6be980f080883c5048b4500ff60ec89f6be900f080883c5048b4500ff60 *f089f6cc050508dc050508dc0505080000000000000000250000008b450c894508c7450c040605 *0883c504e967fdffff8d7600be980f080883c5108b4500ff60ec89f61c06050804060508bc0505 *080000000043000000250000001700040000000000110000008d45f83b4354730abef4e707088b *43fcffe08b45088945fc8b45008945f8c745000807050883ed08b838020508ebe190be980f0808 *83c5108b4500ff60ec89f6be900f080883c5048b4500ff60f089f6be980f080883c5048b4500ff *60ec89f690060508a0060508a00605080000000000000000250000008b450c894508c7450cc806 *050883c504e9a3fcffff8d7600be900f080883c5108b4500ff60f089f6e0060508c80605088006 *05080000000043000000250000000b00020000000000110000008d45f83b4354730abef8e70708 *8b43fcffe08b7500c74500640705088b06ebf002000000240000008b45048945008b4604894504 *8b45088945fc8b460889450883ed04e9b000000001000000240000008b46088945008b55048b46 *0489450489d6c745fc3c07050883ed04ff269090900b00020000000000110000008d45f83b4354 *730abefce707088b43fcffe08b7500c74500e00705088b06ebf002000000240000008b45048945 *008b46048945048b45088945fc8b460889450883ed04e90006000001000000240000008b460889 *45008b55048b460489450489d6c745fcb807050883ed04ff269090901700040000000000110000 *008b7500c74500b8090508ff2621000000240000008b068b40fcc1e8103945047510be900f0808 *83c5088b45008b40f0ffe0be980f080883c5088b45008b40ecebee8d760001000000240000008b *068b40fcc1e8108b7504894504c7450020080508ff26908b7504c745085808050883c508ff2690 *be980f080883c5108b4500ff60ec89f680080508700805080000000043000000250000008b7508 *c74500a4080508ff26be980f080883c5108b4500ff60ec89f621000000240000008b068b40fcc1 *e8103945047510be900f080883c5088b45008b40f0ffe0be980f080883c5088b45008b40ecebee *8d760001000000240000008b068b40fcc1e8108b7504894504c74500c8080508ff269043000000 *240000008b45083b460475118b7504c745080009050883c5088b06ffe0be980f080883c5108b45 *008b40ecebee8d760003000000240000008b55088b460489450889d6c7450020090508ff268b55 *088b460489450889d6c7450054090508ff2668090508b00805080000000003000000250000008b *55088b460489450889d6c7450090090508ff2690090508a4080508000000000300000025000000 *756e6d61727368616c4b657953746174650089f600000200180000008d45f43b4354720883c70c *3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e89d83010083c4108d47f8 *894604c70624ed06088d55f8c702a0000708894204c745f4b809050883ed0cb87c920508ebc2a0 *e607082c0a05080300010000000000110001008b450083f86c0f87a9000000ff2485408a0708be *1ce8070883c5048b4500ffe0be20e80708ebf1be24e80708ebeabe28e80708ebe3be2ce80708eb *dcbe30e80708ebd5be34e80708ebcebe38e80708ebc7be3ce80708ebc0be40e80708ebb9be44e8 *0708ebb2be48e80708ebabbe4ce80708eba4be50e80708eb9dbe54e80708eb96be58e80708eb8f *be5ce80708eb88be60e80708eb81be64e80708e977ffffffbe68e80708e96dffffffbe6ce80708 *e963ffffffbea0e6070883c5048b06e95affffff000000000a000000ff650090000000000a0001 *00ff650090000000000a000200ff650090000000000a000300ff650090000000000a000400ff65 *0090000000000a000500ff650090000000000a000600ff650090000000000a000700ff65009000 *0000000a000800ff650090000000000a000900ff650090000000000a000a00ff65009000000000 *0a000b00ff650090000000000a000c00ff650090000000000a000d00ff650090000000000a000e *00ff650090000000000a000f00ff650090000000000a001000ff650090000000000a001100ff65 *0090000000000a001200ff650090000000000a001300ff650090000000000a001400ff6500901c *e8070820e8070824e8070828e807082ce8070830e8070834e8070838e807083ce8070840e80708 *44e8070848e807084ce8070850e8070854e8070858e807085ce8070860e8070864e8070868e807 *086ce80708756e6d61727368616c4d6f757365427574746f6e008d760000000200180000008d45 *f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e8fd *80010083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f4540c050883ed *0cb87c920508ebc20400020000000000110000008b7500c745002c0d0508e921db010090000000 *002400000083c7083b7b5c7615c7436c02000000c74320ff000000b84ccf0608ffe0c747fcb0a1 *050889378d77fc83c5048b4500ebea8d76000000000024000000c74500f00c050883ec0468d00e *0508566a01e81f3d010083c41089c6ff6500908ce607084c0d0508040002000000000011000100 *8d45f83b4354730abe84e807088b43fcffe0be8ce60708c74500ac0d05088b06ebee89f6010000 *00240000008b4504c74004940f0808be9c0f080883c508ff65008d760000000000240000008b46 *048b40048945f88b4604894500c745fc8c0d050883ed08e9760100009090170004000000000011 *0000008b7500c74500d00e0508ff268b450489450883c508e9e601000089f6be900f080883c510 *8b4500ff60f089f6f40d0508e40d05080000000043000000250000008b7508c74500180e0508ff *26be900f080883c5108b4500ff60f089f643000000240000008b45083b460475108b4504894508 *83c508b8d80f0508ffe0be900f080883c5108b45008b40f0ebee03000000240000008b55088b46 *0489450889d6c745003c0e0508ff268b55088b460489450889d6c745006c0e0508ff26800e0508 *240e05080000000003000000250000008b55088b460489450889d6c74500a80e0508ff26a80e05 *08180e05080000000003000000250000005589e55383ec04e8574301008b4508c1e0048b15a02b *08088b1c0283ec0cff7510e88e3d010083c4085053e84d3f010083c408506840100808e83f3f01 *0083c4088d55f85250e8bf40010083c4085068f48b0708e8b2420100e8064301008b5dfcc9c390 *0400020000000000110000008d45fc3b4354730abe90e807088b43fcffe08b7500c74500cc0f05 *088b06ebf0be9c0f080883c504ff650090010000002400000083c504e9c4ffffff010000002400 *00008b4604c74500740f050883ec0c50e85d3b010083c410ff65008d76008b46088945008b7604 *c745fc840f050883ed04ff268d7600a00f0508600f05080000000000000000250000000b000200 *00000000110000008b7500c7450024100508ff2621000000240000008b068b40fcc1e810394504 *0f94c025ff0000008944240883c5088b3485149705088b542408c1e2028b450029d0ff60f00100 *0000240000008b068b40fcc1e8108b7504894504c74500ec0f0508ff2690b844100508ffe09083 *3da0270808007528c705a027080801000000c745008410050883c504c74500603f050883c504c7 *450014ad050883c50483ed04ff650090b884100508ffe090833da4270808000f854a010000c705 *a427080801000000c74500d437050883c504c74500bc36050883c504c745008437050883c504c7 *45005025050883c504c74500641f050883c504c74500601c050883c504c74500d41e050883c504 *c74500fc36050883c504c74500401d050883c504c745008435050883c504c745009c24050883c5 *04c745009829050883c504c745006420050883c504c745005417050883c504c745003438050883 *c504c745004c15050883c504c74500882a050883c504c74500bc30050883c504c74500f8280508 *83c504c745001030050883c504c74500ec11050883c504c74500a017050883c504c74500fc3405 *0883c504c74500c416050883c504c74500841b050883c504c745001436050883c504c74500a015 *050883c504c74500843d050883c504c74500c03e050883c504c745009812050883c504c7450040 *12050883c504c7450014ad050883c50483ed04ff6500909090b8ec110508ffe090833da8270808 *00753cc705a827080801000000c745009434050883c504c745008437050883c504c74500401205 *0883c504c745005c16050883c504c7450014ad050883c50483ed04ff650090b840120508ffe090 *833dac270808007528c705ac27080801000000c745007881050883c504c74500f484050883c504 *c7450014ad050883c50483ed04ff650090000000000a0001008b4500ff60ec89f640e9070898e8 *0708b898120508ffe090833db027080800755ac705b027080801000000c745009434050883c504 *c745008437050883c504c745000032050883c504c74500501e050883c504c74500101e050883c5 *04c74500001d050883c504c745004012050883c504c7450014ad050883c50483ed04ff65009090 *9004000100000000001100000083c7143b7b5c7611c7436c05000000be9ce807088b43fcffe0c7 *47f0e81305088b45008947f4c747fc101505088d47f089078d77fc83c5048b4500ebda8d7600eb *2e89f60000000024000000be9c0f080883c504ff65009050130508000000000000000000000100 *000001000d0000008d45fc3b435473058b43fcffe08b4604c745fc5c13050883ed0483ec0c50e8 *cd85ffff83c4108b4500ebe090000000002400000083c7083b7b5c760ec7436c02000000b838c9 *0608ffe0c747fc8013050889378d77fc83c504b8a0000708ebe801000100130000008d45f03b43 *5473058b43f8ffe08d45f8c700a00007088970048b46048945f0c745f4b413050883ed10b87431 *0508ebdbe9bf0000008d7600eb1a89f620140508000000000000000000000100010000000c0000 *008b7604e964ae010001000000240000008b750483c508ff65008d760000000000240000008975 *00c745fc4c14050883ed04e8fe88ffffff65008d7600010000002400000083c7083b7b5c7615c7 *436c02000000c74320fe000000b84ccf0608ffe0c747fc3c1405088b45048907c7430444e90708 *8d77fcc745046014050883c504b8a4c40608ebd718140508000000000000000000000100020000 *000e0000008d45f43b435473058b43fcffe08b46088945fc8b7604c745f88014050883ed0cb8e8 *970608ebe49004000200010000000c00000083c70c3b7b5c760cc7436c030000008b43fcffe0c7 *47f8dc1405088b46048947fc8b450089078d77f883c504b828c20608ebdf90b84c150508ffe090 *833db427080800753cc705b427080801000000c74500841b050883c504c74500c03e050883c504 *c745004012050883c504c745005490050883c504c7450014ad050883c50483ed04ff650090b8a0 *150508ffe090833db8270808000f85a0000000c705b827080801000000c74500843d050883c504 *c745001440050883c504c745008437050883c504c745009434050883c504c745005829050883c5 *04c745002425050883c504c74500501e050883c504c74500101e050883c504c745004012050883 *c504c74500e090050883c504c745005490050883c504c74500f08b050883c504c74500dc890508 *83c504c74500bc79050883c504c7450014ad050883c50483ed04ff650090b85c160508ffe09083 *3dbc270808007550c705bc27080801000000c745008437050883c504c745001440050883c504c7 *45009434050883c504c745002425050883c504c745004012050883c504c74500bc79050883c504 *c7450014ad050883c50483ed04ff650090b8c4160508ffe090833dc0270808007578c705c02708 *0801000000c745008437050883c504c745001440050883c504c745009434050883c504c7450058 *29050883c504c74500841b050883c504c745005c16050883c504c745004012050883c504c74500 *5490050883c504c74500908e050883c504c74500dc89050883c504c7450014ad050883c50483ed *04ff650090b854170508ffe090833dc4270808007532c705c427080801000000c7450040120508 *83c504c745008437050883c504c745005c16050883c504c7450014ad050883c50483ed04ff6500 *909090b8a0170508ffe090833dc8270808000f85a0000000c705c827080801000000c74500c03e *050883c504c745001440050883c504c745008437050883c504c745009434050883c504c7450058 *29050883c504c745009c1e050883c504c745004012050883c504c745005c16050883c504c74500 *e090050883c504c745005490050883c504c74500908e050883c504c74500f08b050883c504c745 *00dc89050883c504c74500bc79050883c504c7450014ad050883c50483ed04ff6500900b000200 *00000000110000008b7500c74500b0180508ff26210000002400000083c70c3b7b5c760cc7436c *030000008b43f8ffe0c747f86c1905088b45048947fc8b460489078d77f883c5088b4500ebe18d *760001000000240000008b55048b460489450489d6c7450074180508ff260b0002000000000011 *0000008b7500c7450020190508ff26210000002400000083c70c3b7b5c760cc7436c030000008b *43f8ffe0c747f8841905088b45048947fc8b460489078d77f883c5088b4500ebe18d7600010000 *00240000008b55048b460489450489d6c74500e4180508ff2601000000020000008b4500ff60f0 *89f601000000090000008b4500ff60f09090000000000a0001008b4500ff60ec90900000020006 *000000ff650090000002000a000000ff6500900000020006000000ff650090000002000a000000 *ff65009038e90708941905080400020000000000110001008b7500c745007c1b0508ff26000000 *0024000000be9c0f080883c504ff6500900000000024000000be9c0f080883c504ff6500900000 *000024000000be9c0f080883c504ff6500900000000024000000be9c0f080883c504ff65009094 *19050800000000240001008b460483f801742e83f8017f0685c07409eb4583f81f742feb3ec745 *00d019050883ec0c6800170000e8f27effff83c4108b4500ffe0c74500e419050883ec0c680a85 *0000ebe2c74500f819050883ec0c6841870000ebd183f81e7e0ec7450028e90708b880400508eb *c90522870000c74500bc19050883ec0c50ebac8d76008b7604c74500101a0508ff260000000024 *000000be9c0f080883c504ff650090c74500a41a050883ec0c6801170000e86c7effff83c410ff *650089f60000000024000000be9c0f080883c504ff650090c74500d41a050883ec0c6802170000 *e83c7effff83c410ff650089f60000000024000000be9c0f080883c504ff650090c74500041b05 *0883ec0c6800180000e80c7effff83c410ff650089f60000000024000000be9c0f080883c504ff *650090c74500341b050883ec0c6840880000e8dc7dffff83c410ff650089f6401b0508101b0508 *e01a0508b01a0508901a0508941905080000000025000100b8841b0508ffe090833dcc27080800 *0f85be000000c705cc27080801000000c74500c03e050883c504c745001440050883c504c74500 *4c3d050883c504c745008437050883c504c745009434050883c504c745005829050883c504c745 *00501e050883c504c74500101e050883c504c745004012050883c504c745005c16050883c504c7 *4500e090050883c504c745005490050883c504c74500908e050883c504c74500f08b050883c504 *c74500dc89050883c504c745007489050883c504c74500bc79050883c504c7450014ad050883c5 *0483ed04ff6500909090b8601c0508ffe090833dd0270808000f8582000000c705d02708080100 *0000c745008437050883c504c745001440050883c504c745009434050883c504c7450024250508 *83c504c74500101e050883c504c74500843d050883c504c745002c4d050883c504c74500a01505 *0883c504c745004012050883c504c745005490050883c504c74500bc79050883c504c7450014ad *050883c50483ed04ff6500909090b8001d0508ffe090833dd4270808007528c705d42708080100 *0000c745004012050883c504c745002425050883c504c7450014ad050883c50483ed04ff650090 *b8401d0508ffe090833dd8270808000f85b4000000c705d827080801000000c74500843d050883 *c504c74500c03e050883c504c745008437050883c504c745009434050883c504c74500bc300508 *83c504c745008430050883c504c745005829050883c504c745004012050883c504c745005c1605 *0883c504c74500e090050883c504c745005490050883c504c74500f08b050883c504c74500dc89 *050883c504c745007489050883c504c745005883050883c504c74500bc79050883c504c7450014 *ad050883c50483ed04ff650090b8101e0508ffe090833ddc270808007528c705dc270808010000 *00c745003479050883c504c745002481050883c504c7450014ad050883c50483ed04ff650090b8 *501e0508ffe090833de0270808007532c705e027080801000000c745005490050883c504c74500 *fcb1050883c504c74500cc86050883c504c7450014ad050883c50483ed04ff6500909090b89c1e *0508ffe090833de427080800751ec705e427080801000000c7450014ad050883c504c745004012 *050883c50483ed04ff6500909090b8d41e0508ffe090833de8270808007578c705e82708080100 *0000c745008437050883c504c74500c03e050883c504c74500fc36050883c504c7450068360508 *83c504c74500b828050883c504c745004012050883c504c74500e090050883c504c74500549005 *0883c504c74500f08b050883c504c74500bc79050883c504c7450014ad050883c50483ed04ff65 *0090b8641f0508ffe090833dec270808007514c705ec27080801000000c7450014ad050883c504 *83ed04ff65009048e90708881f050800000200180001008d45f03b4354720883c70c3b7b5c760c *c7436c030000008b43f8ffe0c747f808ee060883ec0c56e8d96d010083c4108d47f8894604c706 *24ed06088d55f8c702a0000708894204c745f050e90708c745f40020050883ed10b8bc460508eb *bb90000000002400000083c70c3b7b5c7615c7436c03000000c74320fe000001b84ccf0608ffe0 *c747f8bc3705088977fc8b450089078d77f883c508b8a0000708ebe29090900100000002000100 *8b4500ff60ec89f601000000090001008b4500ff60ec9090b864200508ffe090833df027080800 *755ac705f027080801000000c745008437050883c504c74500c03e050883c504c7450094340508 *83c504c745004012050883c504c745005c16050883c504c745005490050883c504c74500908e05 *0883c504c7450014ad050883c50483ed04ff65009090900400020000000000110000008d45f83b *4354730abec4e807088b43fcffe08b7500c745002c2305088b06ebf00000000024000000be9c0f *080883c504ff65009000000000240000008b4604894424048b44240489442408c7450004210508 *8b4424088944240483ec08ff74240c68640b0000e80976ffff83c410ff65008d76004200000024 *0000008b7504c745081821050883c508ff269042000000240000008b4604894424048b44240489 *442408c74500582105088b4424088944240483ec08ff74240c68630b0000e8b175ffff83c410ff *65008d760002000000240000008b7508c7450070210508ff268b46048945008b46088945fcc745 *f8b021050883ed0883ec08680126000068650b0000e85c79ffff83c410ff650089f60000000024 *000000be9c0f080883c504ff65009000000000240000008b4604894424048b44240489442408c7 *4500f42105088b4424088944240483ec08ff74240c68620b0000e81975ffff83c410ff65008d76 *0001000000240000008b7504c745040822050883c504ff26908b4604894500c745fc4822050883 *ed0483ec08680008000068650b0000e8c678ffff83c410ff65000000000024000000be9c0f0808 *83c504ff65009000000000240000008b4604894424048b44240489442408c74500882205088b44 *24088944240483ec08ff74240c68620b0000e88574ffff83c410ff65008d760001000000240000 *008b7504c745049c22050883c504ff26908b4604894500c745fcdc22050883ed0483ec08680108 *000068650b0000e83278ffff83c410ff6500ec22050858220508bc210508000000000000000025 *0000000400020000000000110000008d45f03b4354730abec8e807088b43fcffe0be10000000c7 *45fc8024050883ed04b8e4d40608ebe80100000024000000be9c0f080883c508ff650090220000 *00240000008b55048b4604894424048b442404894424088b44240889420c8b4504c74504682305 *0883c50483ec085068660b0000e88073ffff83c410ff650089f6c4000000240000008b550c8b46 *04894424048b442404894424088b4424088942088b7504c745087c23050883c508ff2684000000 *240000008b550c8b4604894424048b442404894424088b4424088942048b7508c74500c0230508 *ff268d760004000000240000008b551083c2088b4604894424048b442404894424088b44240889 *028b750c89550cc74500f0230508ff2689f601000000240000008b46108945f88b460c8945fc8b *46088945008b7604c745f42024050883ed0cff268d7600010000002400000089f08b7504894504 *c7450054240508ff26909090b89c240508ffe090833df427080800756ec705f427080801000000 *c74500c03e050883c504c745001440050883c504c745008437050883c504c745009434050883c5 *04c745002425050883c504c745004012050883c504c745005c16050883c504c745007846050883 *c504c74500bc79050883c504c7450014ad050883c50483ed04ff6500909090b824250508ffe090 *833df8270808007514c705f827080801000000c7450014ad050883c50483ed04ff650090b85025 *0508ffe090833dfc270808007532c705fc27080801000000c745009434050883c504c745008437 *050883c504c745004012050883c504c7450014ad050883c50483ed04ff6500909090ece807089c *e907089425050804000100000000001100030083c71c3b7b5c7611c7436c07000000bed4e80708 *8b43fcffe0c747e8682605088b45008947ecc747f47c2705088d47e88947f8c747fc542805088b *450089078d47f48945008d77fc8b4504ebca8d760000000000240000008b06668b40fe25ffff00 *0083f8077745ff2485288c0708be5ce9070883c504e9dc840000be64e90708ebf1be6ce90708eb *eabe74e90708ebe3be7ce90708ebdcbe84e90708ebd5be8ce90708ebcebe94e90708ebc7be54e9 *0708ebc001000100130000008d45f43b435473058b43f8ffe08d45f8c700a00007088970048b76 *04c745f40426050883ed0c8b06ebe189f60000000024000000be9c0f080883c504ff6500908b45 *04c745049c26050883c50483ec08680011000050e87d70ffff83c410ff65008d76000000000024 *000000be9c0f080883c504ff6500908b4504c74504d426050883c50483ec08680111000050e845 *70ffff83c410ff65008d76000000000024000000be9c0f080883c504ff6500908b4504c745040c *27050883c50483ec08680211000050e80d70ffff83c410ff65008d760018270508e0260508a826 *050800000000210000002500000001000000240000008b55048b460489450489d6c74500542705 *08ff2604000200010000000c0000008d45fc3b435473058b43fcffe08b7604c745fc5c27050883 *ed048b06ebed89f6e9b30000008d760000000000240000008b06668b40fe25ffff000083f80777 *45ff2485488c0708be10e9070883c504e9d0d80100be0ce90708ebf1be08e90708ebeabe04e907 *08ebe3be00e90708ebdcbefce80708ebd5bef8e80708ebcebef4e80708ebc7be14e90708ebc001 *000100130000008d45f43b435473058b43f8ffe08d45f8c700a00007088970048b7604c745f4ac *27050883ed0c8b06ebe189f69c270508000000009425050800000100010000000c0003008d45f8 *3b4354720883c70c3b7b5c760cc7436c030000008b43fcffe0c747f8102805088b46048947fc8d *47f88945fcc745f89ce9070883ed08b844320508ebda000000000a0000008b4500ff60f0909000 *0000000a000400ff650090b8b8280508ffe090833d00280808007528c7050028080801000000c7 *45005490050883c504c74500e090050883c504c7450014ad050883c50483ed04ff650090b8f828 *0508ffe090833d04280808007546c7050428080801000000c745009434050883c504c745008437 *050883c504c745004012050883c504c745005c16050883c504c74500bc79050883c504c7450014 *ad050883c50483ed04ff6500909090b858290508ffe090833d08280808007528c7050828080801 *000000c745005490050883c504c74500e090050883c504c7450014ad050883c50483ed04ff6500 *90b898290508ffe090833d0c280808000f85d2000000c7050c28080801000000c7450084370508 *83c504c74500c03e050883c504c745009434050883c504c745005829050883c504c74500242505 *0883c504c74500a017050883c504c745009c1e050883c504c74500501e050883c504c74500101e *050883c504c74500841b050883c504c74500f44c050883c504c745004046050883c504c7450040 *12050883c504c745005c16050883c504c74500a015050883c504c745005490050883c504c74500 *f08b050883c504c74500dc89050883c504c74500bc79050883c504c7450014ad050883c50483ed *04ff6500909090b8882a0508ffe090833d10280808007564c7051028080801000000c74500302d *050883c504c74500142f050883c504c745007c2c050883c504c74500c02b050883c504c7450004 *2b050883c504c74500d02d050883c504c74500b42e050883c504c74500602e050883c504c74500 *14ad050883c50483ed04ff650090b8042b0508ffe090833d14280808000f85a0000000c7051428 *080801000000c74500c03e050883c504c745001440050883c504c745008437050883c504c74500 *f43a050883c504c74500c44e050883c504c745005829050883c504c74500501e050883c504c745 *00841b050883c504c745004012050883c504c745005c16050883c504c74500e090050883c504c7 *45005490050883c504c74500908e050883c504c74500dc89050883c504c7450014ad050883c504 *83ed04ff650090b8c02b0508ffe090833d18280808000f85a0000000c7051828080801000000c7 *4500c03e050883c504c745001440050883c504c745008437050883c504c74500f43a050883c504 *c74500c44e050883c504c745005829050883c504c74500501e050883c504c74500841b050883c5 *04c745004012050883c504c745005c16050883c504c74500e090050883c504c745005490050883 *c504c74500908e050883c504c74500dc89050883c504c7450014ad050883c50483ed04ff650090 *b87c2c0508ffe090833d1c280808000f8596000000c7051c28080801000000c745008437050883 *c504c74500c03e050883c504c74500902f050883c504c74500d02f050883c504c74500042b0508 *83c504c74500f43a050883c504c74500c44e050883c504c745005829050883c504c74500501e05 *0883c504c745004012050883c504c745005c16050883c504c745005490050883c504c74500dc89 *050883c504c7450014ad050883c50483ed04ff6500909090b8302d0508ffe090833d2028080800 *0f8582000000c7052028080801000000c74500d02f050883c504c745008437050883c504c74500 *902f050883c504c74500f43a050883c504c74500c44e050883c504c745005829050883c504c745 *00501e050883c504c745004012050883c504c745005c16050883c504c745005490050883c504c7 *4500dc89050883c504c7450014ad050883c50483ed04ff6500909090b8d02d0508ffe090833d24 *280808007578c7052428080801000000c745008437050883c504c74500c03e050883c504c74500 *9434050883c504c745004012050883c504c74500e090050883c504c745005490050883c504c745 *00f08b050883c504c745007489050883c504c74500f484050883c504c745005883050883c504c7 *450014ad050883c50483ed04ff650090b8602e0508ffe090833d2828080800753cc70528280808 *01000000c745009434050883c504c745008437050883c504c745002425050883c504c745004012 *050883c504c7450014ad050883c50483ed04ff650090b8b42e0508ffe090833d2c280808007546 *c7052c28080801000000c745008437050883c504c74500c03e050883c504c745009434050883c5 *04c745004012050883c504c745005c16050883c504c7450014ad050883c50483ed04ff65009090 *90b8142f0508ffe090833d30280808007564c7053028080801000000c745009434050883c504c7 *45008437050883c504c74500184f050883c504c74500c44e050883c504c74500841b050883c504 *c745004012050883c504c745005490050883c504c74500bc79050883c504c7450014ad050883c5 *0483ed04ff650090b8902f0508ffe090833d34280808007528c7053428080801000000c7450040 *12050883c504c745002425050883c504c7450014ad050883c50483ed04ff650090b8d02f0508ff *e090833d38280808007528c7053828080801000000c745004012050883c504c745002425050883 *c504c7450014ad050883c50483ed04ff650090b810300508ffe090833d3c28080800755ac7053c *28080801000000c74500504f050883c504c745008437050883c504c745009434050883c504c745 *004012050883c504c745005c16050883c504c74500f08b050883c504c74500bc79050883c504c7 *450014ad050883c50483ed04ff6500909090b884300508ffe090833d4028080800751ec7054028 *080801000000c7450014ad050883c504c745004012050883c50483ed04ff6500909090b8bc3005 *08ffe090833d44280808000f8596000000c7054428080801000000c74500bc36050883c504c745 *008437050883c504c745009434050883c504c745008430050883c504c74500882a050883c504c7 *4500a017050883c504c745009c1e050883c504c745004012050883c504c745005c16050883c504 *c745005490050883c504c74500f08b050883c504c745007489050883c504c74500bc79050883c5 *04c7450014ad050883c50483ed04ff65009090900400010000000000110000008b7500c7450088 *310508ff2600000000240000008b06668b40fe25ffff000083f808774cff2485688c0708be0800 *000083c5048b4500ffe0be07000000ebf1be06000000ebeabe05000000ebe3be04000000ebdcbe *03000000ebd5be02000000ebcebe01000000ebc7be00000000ebc0be09000000ebb99000000000 *0a000400ff650090b800320508ffe090833d4828080800751ec7054828080801000000c7450014 *ad050883c504c745004012050883c50483ed04ff650090909038e90708303205080b0003000000 *0000110001008d45f43b4354730abeece807088b43fcffe0be04000000c745fc0034050883ed04 *b8e4d40608ebe801000100160000008d45f03b4354720883c7083b7b5c760cc7436c020000008b *43f8ffe08d45f8c700a0000708897004c747fc309f05088b460889078d47fc8945f48b760483ed *10b8b8a10608ebd390230000002400000083c70c3b7b5c7615c7436c03000000c74320fe000000 *b84ccf0608ffe08b45048b10c747f8743205088b45088947fc89178d77f883c5108b4500ebdfc7 *45fc30e90708c74500c432050883ed04e96a0d000089f601000100160000008d45f03b43547208 *83c7083b7b5c760cc7436c020000008b43f8ffe08d45f8c700a0000708897004c747fc309f0508 *8b460889078d47fc8945f48b760483ed10b8b8a10608ebd390230000002400000083c70c3b7b5c *7615c7436c03000000c74320ff000000b84ccf0608ffe08b45048b10c747f8203305088b450889 *47fc89178d77f883c5108b4500ebdf23000000240000008b56048b4504c745007033050883ec08 *5052e8c566ffff83c410ff65008d76008b7604c74500b4330508ff26d433050800330508303205 *0823000000250001003032050802000000240001008d56088b45088945f8895500897508c745fc *f433050883ed08e9da1b00009090000000000a006b00ff650090000000000a006c00ff65009000 *0000000a006d00ff650090000000000a006e00ff650090000000000a006f00ff65009000000000 *0a007000ff650090000000000a007100ff650090000000000a007101ff650090000000000a0072 *01ff650090b894340508ffe090833d4c280808007550c7054c28080801000000c7450058290508 *83c504c745001440050883c504c745004012050883c504c745005490050883c504c74500f08b05 *0883c504c74500dc89050883c504c7450014ad050883c50483ed04ff650090b8fc340508ffe090 *833d5028080800756ec7055028080801000000c745008437050883c504c74500c03e050883c504 *c745009434050883c504c74500501e050883c504c745005c16050883c504c745002425050883c5 *04c745004012050883c504c745005490050883c504c745007881050883c504c7450014ad050883 *c50483ed04ff6500909090b884350508ffe090833d54280808007578c7055428080801000000c7 *45008437050883c504c745001440050883c504c745009434050883c504c74500882a050883c504 *c74500c44e050883c504c74500841b050883c504c745009c24050883c504c745007846050883c5 *04c745004012050883c504c745005490050883c504c7450014ad050883c50483ed04ff650090b8 *14360508ffe090833d5828080800753cc7055828080801000000c745004012050883c504c74500 *c03e050883c504c745005490050883c504c745007881050883c504c7450014ad050883c50483ed *04ff650090b868360508ffe090833d5c28080800753cc7055c28080801000000c7450094340508 *83c504c745008437050883c504c74500101e050883c504c745004012050883c504c7450014ad05 *0883c50483ed04ff650090b8bc360508ffe090833d60280808007528c7056028080801000000c7 *45004012050883c504c74500101e050883c504c7450014ad050883c50483ed04ff650090b8fc36 *0508ffe090833d6428080800756ec7056428080801000000c745006836050883c504c745008437 *050883c504c745009434050883c504c74500b828050883c504c74500101e050883c504c7450040 *12050883c504c745005490050883c504c74500f08b050883c504c74500bc79050883c504c74500 *14ad050883c50483ed04ff6500909090b884370508ffe090833d6828080800751ec70568280808 *01000000c7450014ad050883c504c745002481050883c50483ed04ff6500909090020000000400 *0000ff6500900200000009000000ff650090b8d4370508ffe090833d6c280808007546c7056c28 *080801000000c745004012050883c504c745008437050883c504c745005490050883c504c74500 *cc86050883c504c74500bc79050883c504c7450014ad050883c50483ed04ff6500909090b83438 *0508ffe090833d70280808007550c7057028080801000000c745009c38050883c504c745002c3b *050883c504c74500f038050883c504c74500a439050883c504c745004c3a050883c504c74500d4 *3b050883c504c7450014ad050883c50483ed04ff650090b89c380508ffe090833d742808080075 *3cc7057428080801000000c745008437050883c504c74500d43b050883c504c745005c16050883 *c504c745004012050883c504c7450014ad050883c50483ed04ff650090b8f0380508ffe090833d *78280808000f8596000000c7057828080801000000c745004c3d050883c504c74500c03e050883 *c504c745004c3a050883c504c745008437050883c504c745009829050883c504c7450058290508 *83c504c745004046050883c504c745004012050883c504c74500908e050883c504c74500e09005 *0883c504c745005490050883c504c74500dc89050883c504c74500bc79050883c504c7450014ad *050883c50483ed04ff6500909090b8a4390508ffe090833d7c280808000f858c000000c7057c28 *080801000000c74500d43b050883c504c745000c3d050883c504c745007c3c050883c504c74500 *8437050883c504c745009434050883c504c745002425050883c504c74500a015050883c504c745 *004012050883c504c745005490050883c504c74500f08b050883c504c745005883050883c504c7 *4500bc79050883c504c7450014ad050883c50483ed04ff650090b84c3a0508ffe090833d802808 *08000f858c000000c7058028080801000000c74500c03e050883c504c745001440050883c504c7 *4500f43a050883c504c745007c3c050883c504c74500d43b050883c504c745008437050883c504 *c745009434050883c504c745009829050883c504c74500841b050883c504c74500f44c050883c5 *04c745005c16050883c504c745004012050883c504c7450014ad050883c50483ed04ff650090b8 *f43a0508ffe090833d8428080800751ec7058428080801000000c7450014ad050883c504c74500 *4012050883c50483ed04ff6500909090b82c3b0508ffe090833d88280808000f858c000000c705 *8828080801000000c745000c3d050883c504c74500c03e050883c504c74500d43b050883c504c7 *45008437050883c504c74500882a050883c504c74500f43a050883c504c745005829050883c504 *c745002425050883c504c745004012050883c504c745005490050883c504c74500dc89050883c5 *04c74500bc79050883c504c7450014ad050883c50483ed04ff650090b8d43b0508ffe090833d8c *280808000f858c000000c7058c28080801000000c745008437050883c504c745000c3d050883c5 *04c745009434050883c504c74500882a050883c504c74500f43a050883c504c74500c44e050883 *c504c74500501e050883c504c74500841b050883c504c745004012050883c504c7450054900508 *83c504c74500f08b050883c504c74500bc79050883c504c7450014ad050883c50483ed04ff6500 *90b87c3c0508ffe090833d90280808007578c7059028080801000000c745000c3d050883c504c7 *4500c03e050883c504c745008437050883c504c745005829050883c504c745004012050883c504 *c745005490050883c504c74500e090050883c504c74500908e050883c504c74500dc89050883c5 *04c74500bc79050883c504c7450014ad050883c50483ed04ff650090b80c3d0508ffe090833d94 *280808007528c7059428080801000000c745004012050883c504c74500882a050883c504c74500 *14ad050883c50483ed04ff650090b84c3d0508ffe090833d9828080800751ec705982808080100 *0000c7450014ad050883c504c745004012050883c50483ed04ff6500909090b8843d0508ffe090 *833d9c280808000f85a0000000c7059c28080801000000c745004c3d050883c504c74500144005 *0883c504c745008437050883c504c745009812050883c504c745000032050883c504c745009434 *050883c504c74500501e050883c504c745002c4d050883c504c745004012050883c504c745005c *16050883c504c74500e090050883c504c745005490050883c504c74500dc89050883c504c74500 *bc79050883c504c7450014ad050883c50483ed04ff650090c0e90708383e050800000200180001 *008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c *56e8294f010083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f4c0e907 *0883ed0cb8689c0508ebc20400000001000000ff6500900400000009000000ff650090b8c03e05 *08ffe090833da0280808000f8582000000c705a028080801000000c745008437050883c504c745 *004c3d050883c504c745009434050883c504c745005829050883c504c745002425050883c504c7 *4500501e050883c504c745004012050883c504c74500e090050883c504c745005490050883c504 *c74500f484050883c504c745007881050883c504c7450014ad050883c50483ed04ff6500909090 *b8603f0508ffe090833da428080800755ac705a428080801000000c74500fc43050883c504c745 *00d43f050883c504c74500b044050883c504c745002445050883c504c74500f842050883c504c7 *45008843050883c504c745009842050883c504c7450014ad050883c50483ed04ff6500909090b8 *d43f0508ffe090833da8280808007528c705a828080801000000c745008437050883c504c74500 *1440050883c504c7450014ad050883c50483ed04ff650090b814400508ffe090833dac28080800 *7546c705ac28080801000000c74500fcb1050883c504c745004012050883c504c7450024810508 *83c504c74500cc86050883c504c745005490050883c504c7450014ad050883c50483ed04ff6500 *909090c8e907086c4005080400020000000000110001008d45ec3b4354730abe38e907088b43fc *ffe0bec8e90708c745fc7842050883ed048b06ebeb8d760083c70c3b7b5c760cc7436c03000000 *8b43f8ffe0c747f8649705088b45048947fcc707940f08088d77f883c510a18c000708ebdebe94 *0f080883c510ff259000070889f6dc400508a840050800000000c3000000250000008b750cc745 *0000410508ff2683c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8649705088b45048947 *fcc707940f08088d77f883c510a18c000708ebdebe940f080883c510ff259000070889f6404105 *080c41050800000000c3000000250000008b45088945fc8b450c8945f8c745006441050883ed08 *e9cd54000090644105080041050800000000030000002500000004000000120000008d45e03b43 *5473058b43f8ffe08d45f8c700a00007088970048b46108945ec8b460c8945f08b46088945f48b *7604c745e89441050883ed188b06ebcf040000002400000083c7203b7b5c7615c7436c08000000 *c74320fe000000b84ccf0608ffe0c747e49c4105088b45088947e88b45048947ec8977f08b4510 *8947f4c747f8208405088d47e48947fcc707900f08088b550c8d47f8894204be9c0f080883c514 *8b4500ebb989f60200000024000000c745f4940f08088b46048945fc8b4608894500c745f8e041 *050883ed0ce9de2f000089f601000000240000008b46048b500489450089d6c745fc4c42050883 *ed04ff2690b898420508ffe090833db0280808007546c705b028080801000000c7450040120508 *83c504c745008437050883c504c74500cc86050883c504c745005490050883c504c74500bc7905 *0883c504c7450014ad050883c50483ed04ff6500909090b8f8420508ffe090833db42808080075 *78c705b428080801000000c74500c03e050883c504c745001440050883c504c745002425050883 *c504c74500501e050883c504c74500841b050883c504c745004012050883c504c74500e0900508 *83c504c745005490050883c504c74500f08b050883c504c74500dc89050883c504c7450014ad05 *0883c50483ed04ff650090b888430508ffe090833db828080800755ac705b828080801000000c7 *45000c3d050883c504c745001440050883c504c74500f43a050883c504c74500c44e050883c504 *c74500841b050883c504c745004012050883c504c745005490050883c504c7450014ad050883c5 *0483ed04ff6500909090b8fc430508ffe090833dbc280808000f8596000000c705bc2808080100 *0000c74500c03e050883c504c745001440050883c504c745009812050883c504c7450000320508 *83c504c745002425050883c504c74500101e050883c504c74500841b050883c504c745005c1605 *0883c504c745004012050883c504c74500e090050883c504c745005490050883c504c74500f08b *050883c504c74500bc79050883c504c7450014ad050883c50483ed04ff6500909090b8b0440508 *ffe090833dc028080800755ac705c028080801000000c745002425050883c504c7450014400508 *83c504c74500101e050883c504c74500a017050883c504c745004012050883c504c74500549005 *0883c504c74500bc79050883c504c7450014ad050883c50483ed04ff6500909090b824450508ff *e090833dc4280808000f85aa000000c705c428080801000000c74500c03e050883c504c7450014 *40050883c504c745009812050883c504c745000032050883c504c745002425050883c504c74500 *101e050883c504c74500001d050883c504c745004012050883c504c74500e090050883c504c745 *005490050883c504c74500e88d050883c504c74500f08b050883c504c74500dc89050883c504c7 *45002481050883c504c74500bc79050883c504c7450014ad050883c50483ed04ff650090909000 *0000000a0000008b4500ff60f090900400020000000000110000008d45fc3b4354730abe44e907 *088b43fcffe0c745fc3046050883ed04e84f57ffff8b4500ebea89f6010000002400000083c504 *e9c0550000b840460508ffe090833dc828080800751ec705c828080801000000c7450014ad0508 *83c504c745004012050883c50483ed04ff6500909090b878460508ffe090833dcc28080800751e *c705cc28080801000000c7450014ad050883c504c745004012050883c50483ed04ff6500909090 *38e90708a846050804000100000000001100010083c71c3b7b5c7611c7436c07000000be48e907 *088b43fcffe0c747e8744a05088b45008947ecc747f48c4b05088d47e88947f8c747fcc04c0508 *89078d47f48945008d77fc8b4504ebcd89f600000000240000008b06668b40fe25ffff000083f8 *530f873b030000ff24858c8c0708bee8e9070883c504c7442408c8830508ff642408bef4e90708 *ebeabe00ea0708ebe3be0cea0708ebdcbe18ea0708ebd5be24ea0708ebcebe30ea0708ebc7be3c *ea0708ebc0be48ea0708ebb9be54ea0708ebb2be60ea0708ebabbe6cea0708eba4be78ea0708eb *9dbe84ea0708eb96be90ea0708eb8fbe9cea0708eb88bea8ea0708eb81beb4ea0708e977ffffff *bec0ea0708e96dffffffbeccea0708e963ffffffbed8ea0708e959ffffffbee4ea0708e94fffff *ffbef0ea0708e945ffffffbefcea0708e93bffffffbe08eb0708e931ffffffbe14eb0708e927ff *ffffbe20eb0708e91dffffffbe2ceb0708e913ffffffbe38eb0708e909ffffffbe44eb0708e9ff *feffffbe50eb0708e9f5feffffbe5ceb0708e9ebfeffffbe68eb0708e9e1feffffbe74eb0708e9 *d7feffffbe80eb0708e9cdfeffffbe8ceb0708e9c3feffffbe98eb0708e9b9feffffbea4eb0708 *e9affeffffbeb0eb0708e9a5feffffbebceb0708e99bfeffffbec8eb0708e991feffffbed4eb07 *08e987feffffbee0eb0708e97dfeffffbeeceb0708e973feffffbef8eb0708e969feffffbe04ec *0708e95ffeffffbe10ec0708e955feffffbe1cec0708e94bfeffffbe28ec0708e941feffffbe34 *ec0708e937feffffbe40ec0708e92dfeffffbe4cec0708e923feffffbe58ec0708e919feffffbe *64ec0708e90ffeffffbe70ec0708e905feffffbe7cec0708e9fbfdffffbe88ec0708e9f1fdffff *be94ec0708e9e7fdffffbea0ec0708e9ddfdffffbeacec0708e9d3fdffffbeb8ec0708e9c9fdff *ffbec4ec0708e9bffdffffbed0ec0708e9b5fdffffbedcec0708e9abfdffffbee8ec0708e9a1fd *ffffbef4ec0708e997fdffffbe00ed0708e98dfdffffbe0ced0708e983fdffff8b4604894500c7 *442408a04f0508e97bfdffff8b4604894500c7442408cc4f0508e968fdffffbe18ed0708e953fd *ffffbe24ed0708e949fdffffbe30ed0708e93ffdffffbe3ced0708e935fdffffbe48ed0708e92b *fdffffbe54ed0708e921fdffffbe60ed0708e917fdffffbe6ced0708e90dfdffffbe78ed0708e9 *03fdffffbe84ed0708e9f9fcffffbe90ed0708e9effcffffbe9ced0708e9e5fcffffbea8ed0708 *e9dbfcffffbeb4ed0708e9d1fcffffbedce90708e9c7fcffff8d760001000100130000008d45f4 *3b435473058b43f8ffe08d45f8c700a00007088970048b7604c745f41047050883ed0c8b06ebe1 *89f6c7450430e9070883c504e9d1f5ffff900000000024000000be9c0f080883c504ff65009000 *000000240000008b4604c74500b84a050883ec0c50e8314effff83c410ff65008d76008b7504c7 *4504cc4a050883c504ff26900000000024000000be9c0f080883c504ff65009000000000240000 *008b4604c74500004b050883ec0c50e82951ffff83c410ff65008d76008b7504c74504144b0508 *83c504ff2690304b0508e84a05080000000001000000250000008b55048b460489450489d6c745 *00544b0508ff26544b0508a04a0508a84605080100000025000100a84605080400020001000000 *0c0001008d45fc3b435473058b43fcffe08b7604c745fc7c4b050883ed048b06ebed89f6e90f01 *00008d76000000000024000000be40e9070883c504ff650090c745fc30e90708c74500bc4b0508 *83ed04e9a2f4ffff89f600000200140000008d45f83b435473058b43f8ffe08d45f8c700a00007 *08897004807e0400750ebe40e9070889c5a190000708ebdebe98e8070883ed08a18c000708ebcf *000000002400000083c70c3b7b5c7615c7436c03000000c74320ff000000b84ccf0608ffe0c747 *f8e84b05088977fc8d77f883c5048b4500ebe989f600000000240000008b4604c745002c4c0508 *83ec0c50e88550ffff83c41025ff00000089c6ff65008b7604c74500684c0508ff26884c0508c8 *4b0508a84605080000000025000100ac4b050800000000a846050800000100010000000c000100 *8d45f83b435473058b43fcffe08b7604c745fca84c050883ed048b06ebed9090000000000a0000 *00ff650090b8f44c0508ffe090833dd028080800751ec705d028080801000000c7450014ad0508 *83c504c745004012050883c50483ed04ff6500909090b82c4d0508ffe090833dd428080800751e *c705d428080801000000c7450014ad050883c504c745004012050883c50483ed04ff6500909090 *bc0f080878100808c8ed07085c4d05080400010000000000110007008d45f83b4354730abe9ce9 *07088b43fcffe08b7500c74500004e05088b06ebf0604d050800000200140001008d45f43b4354 *73058b43f8ffe08d45f8c700a00007088970048b46048945f483ed0cb8bcab0508ebe28d760089 *7500bebc0f080883ed04e9d8530100d04d0508d04d05085c4d050800000000250001005c4d0508 *000000002400070083c70c3b7b5c760cc7436c030000008b43f8ffe08b46043d00110000745c3d *0111000074423d021100007428c747f8a44d05088947fc8d47f88945fcc745f8c8ed0708c74500 *f44d050883ed08b84c960508ebbebea8e9070883c50483ef0c8b45008b40e8ebabbea4e9070883 *c50483ef0c8b45008b40eceb98bedce8070883c50483ef0c8b45008b40f0eb8590909000000000 *0a0001008b4500ff60ec9090000000000a0002008b4500ff60e889f6dce80708a4e90708a8e907 *08b8c44e0508ffe090833dd828080800753cc705d828080801000000c745002c4d050883c504c7 *4500184f050883c504c745004012050883c504c745005490050883c504c7450014ad050883c504 *83ed04ff650090b8184f0508ffe090833ddc28080800751ec705dc28080801000000c7450014ad *050883c504c745004012050883c50483ed04ff6500909090b8504f0508ffe090833de028080800 *7532c705e028080801000000c745004012050883c504c74500501e050883c504c7450054900508 *83c504c7450014ad050883c50483ed04ff65009090900400010000000000110000008b7500c745 *00b44f0508ff2600000000240000008b4604894500e99d20000090040001000000000011000000 *8b7500c74500e04f0508ff2600000000240000008b4604894500e90d2100009004000100000000 *00110000008b7500c745000c500508ff2600000000240000008b06668b40fe25ffff00003d8701 *00000f8718200000ff2485dc8d0708bee4ed070883c504c7442408c8830508ff642408bef0ed07 *0883c504c7442408c8830508ebeabefced070883c504c7442408c8830508ebd8be08ee070883c5 *04c7442408c8830508ebc6be14ee070883c504c7442408c8830508ebb4be20ee070883c504c744 *2408c8830508eba2be2cee070883c504c7442408c8830508eb90be38ee070883c504c7442408c8 *830508e97bffffffbe44ee070883c504c7442408c8830508e966ffffffbe50ee070883c504c744 *2408c8830508e951ffffffbe5cee070883c504c7442408c8830508e93cffffffbe68ee070883c5 *04c7442408c8830508e927ffffffbe74ee070883c504c7442408c8830508e912ffffffbe80ee07 *0883c504c7442408c8830508e9fdfeffffbe8cee070883c504c7442408c8830508e9e8feffffbe *98ee070883c504c7442408c8830508e9d3feffffbea4ee070883c504c7442408c8830508e9befe *ffffbeb0ee070883c504c7442408c8830508e9a9feffffbebcee070883c504c7442408c8830508 *e994feffffbec8ee070883c504c7442408c8830508e97ffeffffbed4ee070883c504c7442408c8 *830508e96afeffffbee0ee070883c504c7442408c8830508e955feffffbeecee070883c504c744 *2408c8830508e940feffffbef8ee070883c504c7442408c8830508e92bfeffffbe04ef070883c5 *04c7442408c8830508e916feffffbe10ef070883c504c7442408c8830508e901feffffbe1cef07 *0883c504c7442408c8830508e9ecfdffffbe28ef070883c504c7442408c8830508e9d7fdffffbe *34ef070883c504c7442408c8830508e9c2fdffffbe40ef070883c504c7442408c8830508e9adfd *ffffbe4cef070883c504c7442408c8830508e998fdffffbe58ef070883c504c7442408c8830508 *e983fdffffbe64ef070883c504c7442408c8830508e96efdffffbe70ef070883c504c7442408c8 *830508e959fdffffbe7cef070883c504c7442408c8830508e944fdffffbe88ef070883c504c744 *2408c8830508e92ffdffffbe94ef070883c504c7442408c8830508e91afdffffbea0ef070883c5 *04c7442408c8830508e905fdffffbeacef070883c504c7442408c8830508e9f0fcffffbeb8ef07 *0883c504c7442408c8830508e9dbfcffffbec4ef070883c504c7442408c8830508e9c6fcffffbe *d0ef070883c504c7442408c8830508e9b1fcffffbedcef070883c504c7442408c8830508e99cfc *ffffbee8ef070883c504c7442408c8830508e987fcffffbef4ef070883c504c7442408c8830508 *e972fcffffbe00f0070883c504c7442408c8830508e95dfcffffbe0cf0070883c504c7442408c8 *830508e948fcffffbe18f0070883c504c7442408c8830508e933fcffffbe24f0070883c504c744 *2408c8830508e91efcffffbe30f0070883c504c7442408c8830508e909fcffffbe3cf0070883c5 *04c7442408c8830508e9f4fbffffbe48f0070883c504c7442408c8830508e9dffbffffbe54f007 *0883c504c7442408c8830508e9cafbffffbe60f0070883c504c7442408c8830508e9b5fbffffbe *6cf0070883c504c7442408c8830508e9a0fbffffbe78f0070883c504c7442408c8830508e98bfb *ffffbe84f0070883c504c7442408c8830508e976fbffffbe90f0070883c504c7442408c8830508 *e961fbffffbe9cf0070883c504c7442408c8830508e94cfbffffbea8f0070883c504c7442408c8 *830508e937fbffffbeb4f0070883c504c7442408c8830508e922fbffffbec0f0070883c504c744 *2408c8830508e90dfbffffbeccf0070883c504c7442408c8830508e9f8faffffbed8f0070883c5 *04c7442408c8830508e9e3faffffbee4f0070883c504c7442408c8830508e9cefaffffbef0f007 *0883c504c7442408c8830508e9b9faffffbefcf0070883c504c7442408c8830508e9a4faffffbe *08f1070883c504c7442408c8830508e98ffaffffbe14f1070883c504c7442408c8830508e97afa *ffffbe20f1070883c504c7442408c8830508e965faffffbe2cf1070883c504c7442408c8830508 *e950faffffbe38f1070883c504c7442408c8830508e93bfaffffbe44f1070883c504c7442408c8 *830508e926faffffbe50f1070883c504c7442408c8830508e911faffffbe5cf1070883c504c744 *2408c8830508e9fcf9ffffbe68f1070883c504c7442408c8830508e9e7f9ffffbe74f1070883c5 *04c7442408c8830508e9d2f9ffffbe80f1070883c504c7442408c8830508e9bdf9ffffbe8cf107 *0883c504c7442408c8830508e9a8f9ffffbe98f1070883c504c7442408c8830508e993f9ffffbe *a4f1070883c504c7442408c8830508e97ef9ffffbeb0f1070883c504c7442408c8830508e969f9 *ffffbebcf1070883c504c7442408c8830508e954f9ffffbec8f1070883c504c7442408c8830508 *e93ff9ffffbed4f1070883c504c7442408c8830508e92af9ffffbee0f1070883c504c7442408c8 *830508e915f9ffffbeecf1070883c504c7442408c8830508e900f9ffffbef8f1070883c504c744 *2408c8830508e9ebf8ffffbe04f2070883c504c7442408c8830508e9d6f8ffffbe10f2070883c5 *04c7442408c8830508e9c1f8ffffbe1cf2070883c504c7442408c8830508e9acf8ffffbe28f207 *0883c504c7442408c8830508e997f8ffffbe34f2070883c504c7442408c8830508e982f8ffffbe *40f2070883c504c7442408c8830508e96df8ffffbe4cf2070883c504c7442408c8830508e958f8 *ffffbe58f2070883c504c7442408c8830508e943f8ffffbe64f2070883c504c7442408c8830508 *e92ef8ffffbe70f2070883c504c7442408c8830508e919f8ffffbe7cf2070883c504c7442408c8 *830508e904f8ffffbe88f2070883c504c7442408c8830508e9eff7ffffbe94f2070883c504c744 *2408c8830508e9daf7ffffbea0f2070883c504c7442408c8830508e9c5f7ffffbeacf2070883c5 *04c7442408c8830508e9b0f7ffffbeb8f2070883c504c7442408c8830508e99bf7ffffbec4f207 *0883c504c7442408c8830508e986f7ffffbed0f2070883c504c7442408c8830508e971f7ffffbe *dcf2070883c504c7442408c8830508e95cf7ffffbee8f2070883c504c7442408c8830508e947f7 *ffffbef4f2070883c504c7442408c8830508e932f7ffffbe00f3070883c504c7442408c8830508 *e91df7ffffbe0cf3070883c504c7442408c8830508e908f7ffffbe18f3070883c504c7442408c8 *830508e9f3f6ffffbe9cff070883c504c7442408c8830508e9def6ffffbe24f3070883c504c744 *2408c8830508e9c9f6ffffbe30f3070883c504c7442408c8830508e9b4f6ffffbe3cf3070883c5 *04c7442408c8830508e99ff6ffffbe48f3070883c504c7442408c8830508e98af6ffffbe54f307 *0883c504c7442408c8830508e975f6ffffbe60f3070883c504c7442408c8830508e960f6ffffbe *6cf3070883c504c7442408c8830508e94bf6ffffbe78f3070883c504c7442408c8830508e936f6 *ffffbe84f3070883c504c7442408c8830508e921f6ffffbe90f3070883c504c7442408c8830508 *e90cf6ffffbe9cf3070883c504c7442408c8830508e9f7f5ffffbea8f3070883c504c7442408c8 *830508e9e2f5ffffbeb4f3070883c504c7442408c8830508e9cdf5ffffbec0f3070883c504c744 *2408c8830508e9b8f5ffffbeccf3070883c504c7442408c8830508e9a3f5ffffbed8f3070883c5 *04c7442408c8830508e98ef5ffffbee4f3070883c504c7442408c8830508e979f5ffffbef0f307 *0883c504c7442408c8830508e964f5ffffbefcf3070883c504c7442408c8830508e94ff5ffffbe *08f4070883c504c7442408c8830508e93af5ffffbe14f4070883c504c7442408c8830508e925f5 *ffffbe20f4070883c504c7442408c8830508e910f5ffffbe2cf4070883c504c7442408c8830508 *e9fbf4ffffbe38f4070883c504c7442408c8830508e9e6f4ffffbe44f4070883c504c7442408c8 *830508e9d1f4ffffbe50f4070883c504c7442408c8830508e9bcf4ffffbe5cf4070883c504c744 *2408c8830508e9a7f4ffffbe68f4070883c504c7442408c8830508e992f4ffffbe74f4070883c5 *04c7442408c8830508e97df4ffff8b4604894500c7442408a04f0508e96af4ffff8b4604894500 *c7442408cc4f0508e957f4ffffbe80f4070883c504c7442408c8830508e942f4ffffbe8cf40708 *83c504c7442408c8830508e92df4ffffbe98f4070883c504c7442408c8830508e918f4ffffbea4 *f4070883c504c7442408c8830508e903f4ffffbeb0f4070883c504c7442408c8830508e9eef3ff *ffbebcf4070883c504c7442408c8830508e9d9f3ffffbec8f4070883c504c7442408c8830508e9 *c4f3ffffbed4f4070883c504c7442408c8830508e9aff3ffffbee0f4070883c504c7442408c883 *0508e99af3ffffbeecf4070883c504c7442408c8830508e985f3ffffbef8f4070883c504c74424 *08c8830508e970f3ffffbe04f5070883c504c7442408c8830508e95bf3ffffbe10f5070883c504 *c7442408c8830508e946f3ffffbe1cf5070883c504c7442408c8830508e931f3ffffbe28f50708 *83c504c7442408c8830508e91cf3ffffbe34f5070883c504c7442408c8830508e907f3ffffbe40 *f5070883c504c7442408c8830508e9f2f2ffffbe4cf5070883c504c7442408c8830508e9ddf2ff *ffbe58f5070883c504c7442408c8830508e9c8f2ffffbe64f5070883c504c7442408c8830508e9 *b3f2ffffbe70f5070883c504c7442408c8830508e99ef2ffffbe7cf5070883c504c7442408c883 *0508e989f2ffffbe88f5070883c504c7442408c8830508e974f2ffffbe94f5070883c504c74424 *08c8830508e95ff2ffffbea0f5070883c504c7442408c8830508e94af2ffffbeacf5070883c504 *c7442408c8830508e935f2ffffbeb8f5070883c504c7442408c8830508e920f2ffffbec4f50708 *83c504c7442408c8830508e90bf2ffffbed0f5070883c504c7442408c8830508e9f6f1ffffbedc *f5070883c504c7442408c8830508e9e1f1ffffbee8f5070883c504c7442408c8830508e9ccf1ff *ffbe9cff070883c504c7442408c8830508e9b7f1ffffbef4f5070883c504c7442408c8830508e9 *a2f1ffffbe00f6070883c504c7442408c8830508e98df1ffffbe0cf6070883c504c7442408c883 *0508e978f1ffffbe18f6070883c504c7442408c8830508e963f1ffffbe24f6070883c504c74424 *08c8830508e94ef1ffffbe30f6070883c504c7442408c8830508e939f1ffffbe3cf6070883c504 *c7442408c8830508e924f1ffffbe48f6070883c504c7442408c8830508e90ff1ffffbe54f60708 *83c504c7442408c8830508e9faf0ffffbe60f6070883c504c7442408c8830508e9e5f0ffffbe6c *f6070883c504c7442408c8830508e9d0f0ffffbe78f6070883c504c7442408c8830508e9bbf0ff *ffbe84f6070883c504c7442408c8830508e9a6f0ffffbe90f6070883c504c7442408c8830508e9 *91f0ffffbe9cf6070883c504c7442408c8830508e97cf0ffffbea8f6070883c504c7442408c883 *0508e967f0ffffbeb4f6070883c504c7442408c8830508e952f0ffffbec0f6070883c504c74424 *08c8830508e93df0ffffbeccf6070883c504c7442408c8830508e928f0ffffbed8f6070883c504 *c7442408c8830508e913f0ffffbee4f6070883c504c7442408c8830508e9feefffffbef0f60708 *83c504c7442408c8830508e9e9efffffbefcf6070883c504c7442408c8830508e9d4efffffbe08 *f7070883c504c7442408c8830508e9bfefffffbe14f7070883c504c7442408c8830508e9aaefff *ffbe20f7070883c504c7442408c8830508e995efffffbe2cf7070883c504c7442408c8830508e9 *80efffffbe38f7070883c504c7442408c8830508e96befffffbe44f7070883c504c7442408c883 *0508e956efffffbe50f7070883c504c7442408c8830508e941efffffbe5cf7070883c504c74424 *08c8830508e92cefffffbe68f7070883c504c7442408c8830508e917efffffbe74f7070883c504 *c7442408c8830508e902efffffbe80f7070883c504c7442408c8830508e9edeeffffbe8cf70708 *83c504c7442408c8830508e9d8eeffffbe98f7070883c504c7442408c8830508e9c3eeffffbea4 *f7070883c504c7442408c8830508e9aeeeffffbeb0f7070883c504c7442408c8830508e999eeff *ffbebcf7070883c504c7442408c8830508e984eeffffbec8f7070883c504c7442408c8830508e9 *6feeffffbed4f7070883c504c7442408c8830508e95aeeffffbee0f7070883c504c7442408c883 *0508e945eeffffbeecf7070883c504c7442408c8830508e930eeffffbef8f7070883c504c74424 *08c8830508e91beeffffbe04f8070883c504c7442408c8830508e906eeffffbe10f8070883c504 *c7442408c8830508e9f1edffffbe1cf8070883c504c7442408c8830508e9dcedffffbe28f80708 *83c504c7442408c8830508e9c7edffffbe34f8070883c504c7442408c8830508e9b2edffffbe40 *f8070883c504c7442408c8830508e99dedffffbe4cf8070883c504c7442408c8830508e988edff *ffbe58f8070883c504c7442408c8830508e973edffffbe64f8070883c504c7442408c8830508e9 *5eedffffbe70f8070883c504c7442408c8830508e949edffffbe7cf8070883c504c7442408c883 *0508e934edffffbe88f8070883c504c7442408c8830508e91fedffffbe94f8070883c504c74424 *08c8830508e90aedffffbea0f8070883c504c7442408c8830508e9f5ecffffbeacf8070883c504 *c7442408c8830508e9e0ecffffbeb8f8070883c504c7442408c8830508e9cbecffffbec4f80708 *83c504c7442408c8830508e9b6ecffffbed0f8070883c504c7442408c8830508e9a1ecffffbedc *f8070883c504c7442408c8830508e98cecffffbee8f8070883c504c7442408c8830508e977ecff *ffbef4f8070883c504c7442408c8830508e962ecffffbe00f9070883c504c7442408c8830508e9 *4decffffbe0cf9070883c504c7442408c8830508e938ecffffbe18f9070883c504c7442408c883 *0508e923ecffffbe24f9070883c504c7442408c8830508e90eecffffbe30f9070883c504c74424 *08c8830508e9f9ebffffbe3cf9070883c504c7442408c8830508e9e4ebffffbe48f9070883c504 *c7442408c8830508e9cfebffffbe54f9070883c504c7442408c8830508e9baebffffbe60f90708 *83c504c7442408c8830508e9a5ebffffbe6cf9070883c504c7442408c8830508e990ebffffbe78 *f9070883c504c7442408c8830508e97bebffffbe84f9070883c504c7442408c8830508e966ebff *ffbe90f9070883c504c7442408c8830508e951ebffffbe9cf9070883c504c7442408c8830508e9 *3cebffffbea8f9070883c504c7442408c8830508e927ebffffbeb4f9070883c504c7442408c883 *0508e912ebffffbec0f9070883c504c7442408c8830508e9fdeaffffbeccf9070883c504c74424 *08c8830508e9e8eaffffbed8f9070883c504c7442408c8830508e9d3eaffffbee4f9070883c504 *c7442408c8830508e9beeaffffbef0f9070883c504c7442408c8830508e9a9eaffffbefcf90708 *83c504c7442408c8830508e994eaffffbe08fa070883c504c7442408c8830508e97feaffffbe14 *fa070883c504c7442408c8830508e96aeaffffbe20fa070883c504c7442408c8830508e955eaff *ffbe2cfa070883c504c7442408c8830508e940eaffffbe38fa070883c504c7442408c8830508e9 *2beaffffbe44fa070883c504c7442408c8830508e916eaffffbe50fa070883c504c7442408c883 *0508e901eaffffbe5cfa070883c504c7442408c8830508e9ece9ffffbe68fa070883c504c74424 *08c8830508e9d7e9ffffbe74fa070883c504c7442408c8830508e9c2e9ffffbe80fa070883c504 *c7442408c8830508e9ade9ffffbe8cfa070883c504c7442408c8830508e998e9ffffbe98fa0708 *83c504c7442408c8830508e983e9ffffbea4fa070883c504c7442408c8830508e96ee9ffffbeb0 *fa070883c504c7442408c8830508e959e9ffffbebcfa070883c504c7442408c8830508e944e9ff *ffbec8fa070883c504c7442408c8830508e92fe9ffffbed4fa070883c504c7442408c8830508e9 *1ae9ffffbee0fa070883c504c7442408c8830508e905e9ffffbeecfa070883c504c7442408c883 *0508e9f0e8ffffbef8fa070883c504c7442408c8830508e9dbe8ffffbe04fb070883c504c74424 *08c8830508e9c6e8ffffbe10fb070883c504c7442408c8830508e9b1e8ffffbe1cfb070883c504 *c7442408c8830508e99ce8ffffbe28fb070883c504c7442408c8830508e987e8ffffbe34fb0708 *83c504c7442408c8830508e972e8ffffbe40fb070883c504c7442408c8830508e95de8ffffbe4c *fb070883c504c7442408c8830508e948e8ffffbe58fb070883c504c7442408c8830508e933e8ff *ffbe64fb070883c504c7442408c8830508e91ee8ffffbe70fb070883c504c7442408c8830508e9 *09e8ffffbe7cfb070883c504c7442408c8830508e9f4e7ffffbe88fb070883c504c7442408c883 *0508e9dfe7ffffbe94fb070883c504c7442408c8830508e9cae7ffffbea0fb070883c504c74424 *08c8830508e9b5e7ffffbeacfb070883c504c7442408c8830508e9a0e7ffffbeb8fb070883c504 *c7442408c8830508e98be7ffffbea8ff070883c504c7442408c8830508e976e7ffffbea8ff0708 *83c504c7442408c8830508e961e7ffffbec4fb070883c504c7442408c8830508e94ce7ffffbed0 *fb070883c504c7442408c8830508e937e7ffffbedcfb070883c504c7442408c8830508e922e7ff *ffbee8fb070883c504c7442408c8830508e90de7ffffbef4fb070883c504c7442408c8830508e9 *f8e6ffffbe00fc070883c504c7442408c8830508e9e3e6ffffbe0cfc070883c504c7442408c883 *0508e9cee6ffffbe18fc070883c504c7442408c8830508e9b9e6ffffbe24fc070883c504c74424 *08c8830508e9a4e6ffffbe30fc070883c504c7442408c8830508e98fe6ffffbe3cfc070883c504 *c7442408c8830508e97ae6ffffbe48fc070883c504c7442408c8830508e965e6ffffbe54fc0708 *83c504c7442408c8830508e950e6ffffbe60fc070883c504c7442408c8830508e93be6ffffbe6c *fc070883c504c7442408c8830508e926e6ffffbe78fc070883c504c7442408c8830508e911e6ff *ffbe84fc070883c504c7442408c8830508e9fce5ffffbe90fc070883c504c7442408c8830508e9 *e7e5ffffbe9cfc070883c504c7442408c8830508e9d2e5ffffbea8fc070883c504c7442408c883 *0508e9bde5ffffbeb4fc070883c504c7442408c8830508e9a8e5ffffbec0fc070883c504c74424 *08c8830508e993e5ffffbeccfc070883c504c7442408c8830508e97ee5ffffbed8fc070883c504 *c7442408c8830508e969e5ffffbee4fc070883c504c7442408c8830508e954e5ffffbef0fc0708 *83c504c7442408c8830508e93fe5ffffbefcfc070883c504c7442408c8830508e92ae5ffffbe08 *fd070883c504c7442408c8830508e915e5ffffbe14fd070883c504c7442408c8830508e900e5ff *ffbe20fd070883c504c7442408c8830508e9ebe4ffffbe2cfd070883c504c7442408c8830508e9 *d6e4ffffbe38fd070883c504c7442408c8830508e9c1e4ffffbe44fd070883c504c7442408c883 *0508e9ace4ffffbe50fd070883c504c7442408c8830508e997e4ffffbe5cfd070883c504c74424 *08c8830508e982e4ffffbe68fd070883c504c7442408c8830508e96de4ffffbe74fd070883c504 *c7442408c8830508e958e4ffffbe80fd070883c504c7442408c8830508e943e4ffffbe8cfd0708 *83c504c7442408c8830508e92ee4ffffbe98fd070883c504c7442408c8830508e919e4ffffbea4 *fd070883c504c7442408c8830508e904e4ffffbeb0fd070883c504c7442408c8830508e9efe3ff *ffbebcfd070883c504c7442408c8830508e9dae3ffffbec8fd070883c504c7442408c8830508e9 *c5e3ffffbed4fd070883c504c7442408c8830508e9b0e3ffffbee0fd070883c504c7442408c883 *0508e99be3ffffbeecfd070883c504c7442408c8830508e986e3ffffbef8fd070883c504c74424 *08c8830508e971e3ffffbe04fe070883c504c7442408c8830508e95ce3ffffbe10fe070883c504 *c7442408c8830508e947e3ffffbe1cfe070883c504c7442408c8830508e932e3ffffbe28fe0708 *83c504c7442408c8830508e91de3ffffbe34fe070883c504c7442408c8830508e908e3ffffbe40 *fe070883c504c7442408c8830508e9f3e2ffffbe4cfe070883c504c7442408c8830508e9dee2ff *ffbe58fe070883c504c7442408c8830508e9c9e2ffffbe64fe070883c504c7442408c8830508e9 *b4e2ffffbe70fe070883c504c7442408c8830508e99fe2ffffbe7cfe070883c504c7442408c883 *0508e98ae2ffffbe88fe070883c504c7442408c8830508e975e2ffffbe94fe070883c504c74424 *08c8830508e960e2ffffbea0fe070883c504c7442408c8830508e94be2ffffbeacfe070883c504 *c7442408c8830508e936e2ffffbeb8fe070883c504c7442408c8830508e921e2ffffbeb4ff0708 *83c504c7442408c8830508e90ce2ffffbec0ff070883c504c7442408c8830508e9f7e1ffffbecc *ff070883c504c7442408c8830508e9e2e1ffffbed8ff070883c504c7442408c8830508e9cde1ff *ffbec4fe070883c504c7442408c8830508e9b8e1ffffbed0fe070883c504c7442408c8830508e9 *a3e1ffffbedcfe070883c504c7442408c8830508e98ee1ffffbeb4ff070883c504c7442408c883 *0508e979e1ffffbec0ff070883c504c7442408c8830508e964e1ffffbee8fe070883c504c74424 *08c8830508e94fe1ffffbef4fe070883c504c7442408c8830508e93ae1ffffbeccff070883c504 *c7442408c8830508e925e1ffffbed8ff070883c504c7442408c8830508e910e1ffffbe00ff0708 *83c504c7442408c8830508e9fbe0ffffbe0cff070883c504c7442408c8830508e9e6e0ffffbe18 *ff070883c504c7442408c8830508e9d1e0ffffbe24ff070883c504c7442408c8830508e9bce0ff *ffbe30ff070883c504c7442408c8830508e9a7e0ffffbe3cff070883c504c7442408c8830508e9 *92e0ffffbe48ff070883c504c7442408c8830508e97de0ffffbe54ff070883c504c7442408c883 *0508e968e0ffffbe60ff070883c504c7442408c8830508e953e0ffffbe6cff070883c504c74424 *08c8830508e93ee0ffffbe78ff070883c504c7442408c8830508e929e0ffffbe84ff070883c504 *c7442408c8830508e914e0ffffbe90ff070883c504c7442408c8830508e9ffdfffffbed8ed0708 *83c504c7442408c8830508e9eadfffff9003000100000000001100000083c7103b7b5c7611c743 *6c04000000beb8e907088b43fcffe08b450085c07510c747f404ab0508c747f800400000eb3385 *c07e493dff0f00007512bee4ff070883c50483ef10b8c8830508ebca3dfe0f00007f2905004000 *00c747f404ab05088947f8c747fcc88305088d47f489078d77fc83c5048b45008b40eceb9abe28 *0f080883c50483ef108b45008b40f0eb8703000100000000001100000083c7103b7b5c7611c743 *6c04000000bebce907088b43fcffe08b450085c07510c747f404ab0508c747f800300000eb3385 *c07e493dff0f00007512bef0ff070883c50483ef10b8c8830508ebca3dfe0f00007f2905003000 *00c747f404ab05088947f8c747fcc88305088d47f489078d77fc83c5048b45008b40eceb9abe28 *0f080883c50483ef108b45008b40f0eb87c0ed0708fcff07080c000808d8710508000000008871 *05080000010000000000110007008d45f83b4354730abec0e907088b43fcffe0c745fc0c000808 *c745f8fcff070883ed08b830730508ebe689f6e9cfffffff90909000000200180000008d45f43b *4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e8891b01 *0083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f41c00080883ed0cb8 *689c0508ebc20400020000000000110000008d45fc3b4354730abed8e907088b43fcffe0c745fc *b072050883ed04e80328ffff89c68b4500ebe801000100130000008d45f43b435473058b43f8ff *e08d45f8c700a00007088970048b46048945f483ed0cb8ac9f0508ebe28d760001000000240000 *0083c7143b7b5c7615c7436c05000000c74320ff000000b84ccf0608ffe085f6751bc747f07c72 *05088b45048947f48d77f083c50883ef088b4500ebdfc747f004ab05088977f4c747f864970508 *8d47f08947fc8b450489078d47f889450483c504b84c720508ebb3b8020808c802080818730508 *0b00030000000000110003008d45f43b4354730abec0ed07088b43fcffe0c745f8d80208088b45 *048945f4c745fce874050883ed0cb824850508ebe01873050801000100130001008d45f03b4354 *73058b43f8ffe08d45f8c700a00007088970048b46048945f4c745f0b802080883ed10b84c9605 *08ebdb1873050802000000150001008d45f03b4354720883c70c3b7b5c760cc7436c030000008b *43f8ffe08d45f8c700a0000708897004c747f86c7305088b46088947fc8d47f88945f48b460489 *45f083ed10b84c960508ebcf901873050802000000150003008d45f03b4354720883c70c3b7b5c *760cc7436c030000008b43f8ffe08d45f8c700a0000708897004c747f8a87305088b46048947fc *8b460889078d47f88945f4c745f0c802080883ed10b84c960508ebc98d76001873050802000000 *2400030083c72c3b7b5c760cc7436c0b0000008b43f8ffe0837e0400740b83c50c83ef2c8b4500 *ebedc747d8007405088b45088947dc8b45048947e0c747e4c89c0508c747e8280f0808c747ece4 *0f0808c747f0940f08088d47d88947f4c747f8280f0808c747fc489d05088d47e489078d77fc83 *c50cb804c70608eb9889f6187305080200000024000300c7450060740508ff26909090756e6d61 *727368616c48696e744d6f64653a20696c6c6567616c2076616c7565200089f600000200180000 *008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c *56e85118010083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f4f47405 *0883ed0cb87c920508ebc2474c5f4558545f666f675f636f6f7264206f72204f70656e474c2031 *2e34009000000200180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ff *e0c747f808ee060883ec0c56e8d117010083c4108d47f8894604c70624ed06088d55f8c702a000 *0708894204c745f47875050883ed0cb87c920508ebc2676c466f67436f6f726466455854009000 *000200180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808 *ee060883ec0c56e86117010083c4108d47f8894604c70624ed06088d55f8c702a0000708894204 *c745f4f875050883ed0cb87c920508ebc2a8760508000000000000000000000100000000001100 *00008d45fc3b4354730abe1c0008088b43fcffe0bef40e0808c745fcb876050883ed04b8bcd506 *08ebe8e9d3ffffff8d7600000000002400000083c7083b7b5c7615c7436c02000000c74320fe00 *0000b84ccf0608ffe0c747fc54a3050889378d77fc83c5048b4500ebea9090902c20636865636b *20666f7220008d760000000200180000008d45f43b4354720883c70c3b7b5c760cc7436c030000 *008b43f8ffe0c747f808ee060883ec0c56e86d16010083c4108d47f8894604c70624ed06088d55 *f8c702a0000708894204c745f4ec76050883ed0cb87c920508ebc2756e6b6e6f776e204f70656e *474c2063616c6c20008d760000000200180000008d45f43b4354720883c70c3b7b5c760cc7436c *030000008b43f8ffe0c747f808ee060883ec0c56e8f515010083c4108d47f8894604c70624ed06 *088d55f8c702a0000708894204c745f45c77050883ed0cb87c920508ebc2040001000000000011 *0000008b7500c7450070780508ff26eb5689f6000000002400000083c7083b7b5c7615c7436c02 *000000c74320ff000000b84ccf0608ffe0c747fcb0a1050889378d77fc83c5048b4500ebea8d76 *00ec770508000000000000000000000100000001000d0000008d45f83b435473058b43fcffe08b *46048945f8c745fcf877050883ed08b8ac780508ebe7000000002400000083c7083b7b5c760cc7 *436c020000008b43f8ffe0c747fc447805088b460489078d47fc894500b8ac9c0508ebe5909090 *0300020000000000110000008b450083c50483ec0c50e80900000083c41089c6ff6500905589e5 *57565383ec188b5d0853e8ca22ffff83c41089c185c0754189debffc930708b90e000000fcf3a6 *0f97c20f92c0b9509a040838c2742389debf0a940708b917000000fcf3a60f97c20f92c0b9b097 *040838c27405b90000000089c88d65f45b5e5f5dc39090b834790508ffe090833de42808080075 *6ec705e428080801000000c74500fcb1050883c504c74500147b050883c504c745009cb1050883 *c504c7450014ad050883c504c74500cc86050883c504c74500189b050883c504c745006c9d0508 *83c504c745001898050883c504c74500b499050883c504c74500d891050883c50483ed04ff6500 *909090b8bc790508ffe090833de8280808007528c705e828080801000000c7450028a0050883c5 *04c74500d891050883c504c74500e883050883c50483ed04ff650090b8fc790508ffe090833dec *28080800751ec705ec28080801000000c7450014ad050883c504c7450014b1050883c50483ed04 *ff6500909090b8347a0508ffe090833df0280808007532c705f028080801000000c74500749905 *0883c504c745003884050883c504c745007091050883c504c74500b081050883c50483ed04ff65 *00909090b8807a0508ffe090833df4280808007528c705f428080801000000c745007ca2050883 *c504c74500d891050883c504c7450074a0050883c50483ed04ff650090b8c07a0508ffe090833d *f828080800753cc705f828080801000000c74500fca9050883c504c7450074a0050883c504c745 *00c8a1050883c504c745006ca3050883c504c74500d891050883c50483ed04ff650090b8147b05 *08ffe090833dfc280808007546c705fc28080801000000c745007499050883c504c7450074a005 *0883c504c745006ca3050883c504c74500d891050883c504c74500e883050883c504c745003884 *050883c50483ed04ff65009090901600030000000000110000008d45e43b4354730abe080f0808 *8b43fcffe08b45088945f88b750483ed08b87c7c0508ebeb8d7600be280f080883c5188b4500ff *60f089f68b751483c508e9c10000009083c7083b7b5c760cc7436c020000008b43f8ffe0c747fc *c88305088b450489078d77fc83c51c8b45008b40ecebe489f68b750c83c508e98500000090ec7b *0508bc7b0508b07b050800000000060400002500000006000000240000008b45188945fc8b4508 *8945f88b7608c74500107c050883ed0ce9ee29010089f68b46088945008b46108945088b460c89 *45108b46048945148b750cc745fc187c050883ed04ff2690387c0508a07b050800000000450300 *0025000000c300000024000000c745fc747c050883ed04ff269c100808a4100808887c05081600 *0300000000001100030083c7083b7b5c7611c7436c02000000be0c0f08088b43fcffe0c747fc34 *7e05088b450089078d77fc83c504b8347e0508ebe589f6be1c0f080883c5108b4500ff60f089f6 *8b45048945188b450c8945108b451489450c89751483c50ce98f3800008d7600e47c0508e47c05 *08887c050846050000250001008b45188945fc8b45088945f88b7510c74500187d050883ed08e9 *fe00000089f68b45048945188b450889451483c514e94c3f00008975148b450889450c8b451089 *45088b450489451083c508e9273800008d76004c7d05084c7d0508887c05088502000025000100 *8b45188945008b45048945fc8b7510c74504807d050883ed04e99600000089f6807d0508387d05 *08187d0508887c05080600000025000300887c050806000000240003008b45148945fc8b451889 *45f88b7608c74500b87d050883ed0ce94228010089f68b46108945f88b460c8945fc8b46088945 *008b55088b460489450889d6c745f4c47d050883ed0cff268d7600e47d0508d47c0508887c0508 *0300000025000300887c05080b000200010000000c0003008d45e03b435473058b43fcffe08975 *fc8b55008b460489450089d6c745f8247e050883ed088b06ebe29090909c100808607e05081800 *0500000000001100010083c7083b7b5c7611c7436c02000000be140f08088b43fcffe0c747fc68 *8005088b450089078d77fc83c504b868800508ebe589f683c510e9904000008b45048945208975 *1c8b45188945148b450c89451883c514e9c33600008d7600b07e0508b07e0508607e0508481b00 *00250001008b45248945008b45208945fc8b450c8945f88b45188945f48b7514c74504e47e0508 *83ed0ce95a01000089f683c7283b7b5c760cc7436c0a0000008b43f8ffe0c747dc94fe06088b45 *188947e08b45108947e48b45248947e8c747ecac8005088b45208947f08d47dc8947f48b450c89 *47f88b45088947fc8b450489078d77ec83c5288b45008b40ecebb39089751c8b45048945188b45 *148945108b450889451483c510e9033600008d7600707f0508707f0508607e0508870d00002500 *01008b45248945048b45208945008b45088945fc8b45188945f88b7514c74508a47f050883ed08 *e99a00000089f6a47f0508107f0508e47e0508607e05082900000025000100607e050829000000 *240001008b451c8945fc8b45208945f88b7608c74500e87f050883ed0ce91226010089f68b4614 *8945f48b46108945f88b460c8945fc8b46088945008b550c8b460489450c89d6c745f0f47f0508 *83ed10ff269014800508a87e0508607e05080500000025000100607e050817000400010000000c *0001008d45dc3b435473058b43fcffe08975fc8b55048b460489450489d6c745f85880050883ed *088b06ebe2909090000000000a0000008b4500ff60f0909004000100010001008b4500ff60ec89 *f604000100090001008b4500ff60ec9090b8cc800508ffe090833d00290808007528c705002908 *0801000000c74500e883050883c504c74500d891050883c504c7450014ad050883c50483ed04ff *6500900b00020000000000110000008b750483c504e93915010090b824810508ffe090833d0429 *080800753cc7050429080801000000c745006c9d050883c504c7450050aa050883c504c745001c *a3050883c504c74500d891050883c504c7450014ad050883c50483ed04ff650090b878810508ff *e090833d0829080800751ec7050829080801000000c74500d891050883c504c74500fc9d050883 *c50483ed04ff6500909090b8b0810508ffe090833d0c29080800751ec7050c29080801000000c7 *450014ad050883c504c745007091050883c50483ed04ff65009090900b00020000000000110000 *008d45f43b4354720883c70c3b7b5c7611c7436c03000000be240f08088b43fcffe0c747f82483 *05088b45008947fc8d47f88945f88b750483ed08b8f4820508ebde8d76008b750483c510e91914 *01009002000000240000008b45088b55048955088945048b760ce9cc2301000300000012000000 *8d45ec3b435473058b43f8ffe08d45f8c700a00007088970048b460c8945f08b46088945f48b76 *04c745ec4482050883ed148b06ebd589f683c7103b7b5c760cc7436c040000008b43f8ffe0c747 *f4608205088b450c8947f88b45048947fc8b460489078d47f48945048b760883c504b8f4820508 *ebd39098820508308205080000000044010000250000004200000024000000c745fcec82050883 *ed04ff260000000024000000c74500d41008088b762483ed04e99e1e010089f601000100130000 *008d45f03b435473058b43f8ffe08d45f8c700a00007088970048b7604c745f40883050883ed0c *8b06ebe19090b858830508ffe090833d10290808007546c7051029080801000000c7450028a005 *0883c504c74500d891050883c504c745007ca2050883c504c7450074a0050883c504c74500c07a *050883c504c74500e883050883c50483ed04ff6500909090000000000a0000008b4500ff60f090 *9001000000020001008b4500ff60ec89f601000000090001008b4500ff60ec9090b8e8830508ff *e090833d1429080800751ec7051429080801000000c745007499050883c504c74500d891050883 *c50483ed04ff65009090900200000004000000ff6500900200000009000000ff650090b8388405 *08ffe090833d18290808000f85a0000000c7051829080801000000c745006ca1050883c504c745 *00e4a3050883c504c745006c9d050883c504c745007ca2050883c504c74500ec99050883c504c7 *450074a0050883c504c745007499050883c504c745006ca3050883c504c74500d891050883c504 *c745005883050883c504c74500f484050883c504c745007881050883c504c745004cb5050883c5 *04c74500e883050883c504c74500dcc1050883c50483ed04ff650090b8f4840508ffe090833d1c *290808007514c7051c29080801000000c7450034ab050883c50483ed04ff6500900b0003000000 *0000110000008d45f03b4354730abe2c0f08088b43fcffe0c745f8000000008b45008945f4c745 *fcb486050883ed0cb8649f0508ebe08b55088b450cc6041000be9c0f080883c510ff65008d7600 *84010000240000000fbe4e048b550c8b4510880c10ff45108b450489450c8b750883c50ceb3a89 *f68b46088945008b7604c745fc7485050883ed04ff268d7600948505085485050800000000c300 *0000250000000a000300000001000d0000008d45f43b435473058b43fcffe08975fc8b55008b46 *0489450089d6c745f8c085050883ed088b06ebe28d7600420000002400000083c50cff650089f6 *230000002400000083c7083b7b5c7615c7436c02000000c74320fe000000b84ccf0608ffe0c747 *fc98a105088b450489078d47fc8945008b750cc745040086050883ed04b8c8a30608ebd8900200 *00002400000083c7083b7b5c7615c7436c02000000c74320fe000000b84ccf0608ffe08d5608c7 *47fccc8505088917c745f8000000008b45048945f48955008975048d77fcc745fc1086050883ed *0cb8cc850508ebcb020000002400000046c745005c860508e9234e0100909090b8cc860508ffe0 *90833d2029080800756ec7052029080801000000c745006c9d050883c504c74500d891050883c5 *04c7450074a0050883c504c745007ca2050883c504c7450028a0050883c504c74500f484050883 *c504c74500e090050883c504c745005490050883c504c74500d488050883c504c74500f08b0508 *83c50483ed04ff65009090900300020000000000110000008d45f83b4354720883c7083b7b5c76 *11c7436c02000000be300f08088b43fcffe0c747fcac8705088b45008907c745f8000000008d77 *fcc745fcc088050883ed08b8ac870508ebd703000200000001000d00000083c7083b7b5c760cc7 *436c020000008b43fcffe08b56048b4500803c10007517c747fc3c9705088b450089078d77fc83 *c5048b4500ebdbff450083ef08b8ac870508ebce210000002400000083c7143b7b5c761cc7436c *05000000c74504f8870508c74320fe000100b84ccf0608ffe08b55088b45000fbe0410837d0000 *7e2f8b55004a25ff000000c747f0249705088947f4c747f8649705088d47f08947fc8937895500 *8d77f8b8f8870508ebbf25ff000000c747f0249705088947f4c747f8649705088d47f08947fc89 *378d77f883c50c8b4500eb962100000024000000837e04007e168b4604488945fcbe940f080883 *ed04b8f8870508ffe0be940f080883c5088b4500ebf18d76002100000024000000c745008c8805 *08ff26909090b8d4880508ffe090833d24290808000f8582000000c7052429080801000000c745 *00c8a1050883c504c7450074a0050883c504c745006ca3050883c504c745007ca2050883c504c7 *45008c98050883c504c74500ec99050883c504c74500d891050883c504c745003884050883c504 *c74500f484050883c504c745007881050883c504c74500807a050883c504c74500e090050883c5 *0483ed04ff6500909090b874890508ffe090833d28290808007550c7052829080801000000c745 *007499050883c504c74500909a050883c504c7450074a0050883c504c745006c9d050883c504c7 *4500d891050883c504c74500e090050883c504c745005490050883c50483ed04ff650090b8dc89 *0508ffe090833d2c290808007578c7052c29080801000000c74500d891050883c504c7450074a0 *050883c504c745007499050883c504c745006ca1050883c504c745007ca2050883c504c745006c *9d050883c504c745007489050883c504c74500e090050883c504c74500d488050883c504c74500 *5490050883c504c74500e883050883c50483ed04ff650090ac0f0808648a050817000500000000 *00110001008d45e83b4354730abe340f08088b43fcffe08b7500c74500c08b05088b06ebf04200 *00002400000083c50cff650089f6240000002400000083c7083b7b5c7615c7436c02000000c743 *20fe000000b84ccf0608ffe0c747fc3c9705088b450489078b45088945048d47fc8945008b7510 *c74508a08a050883ed04b88ca80608ebd28d7600450000002400000083c7083b7b5c7615c7436c *02000000c74320fe000000b84ccf0608ffe08d4608c747fc98a105088907c74500e89706088b45 *108945fc8d47fc8945f88b450c8945f48b45048945f08d47fc89450c897510c74504b08a050883 *ed10b828c40508ebb989f645000000240000008b4508400faf460489c6c74500048b0508e95e49 *010089f6648a05080500000024000100c745fcac0f08088b450889750889c6c74500708b050883 *ed08e90616010089f6648a05080300000024000100c745f4000000008b45088945f08975fc8b46 *04894500c745f8948b050883ed10e97f130000909090b8f08b0508ffe090833d3029080800756e *c7053029080801000000c745007499050883c504c74500d891050883c504c7450028a0050883c5 *04c7450074a0050883c504c745006c9d050883c504c74500908e050883c504c74500dc89050883 *c504c74500e090050883c504c745005490050883c504c74500bc79050883c50483ed04ff650090 *90901400040000000000110000008d45e83b4354730abe3c0f08088b43fcffe0837d04007e178b *450448c745f8940f080889c683ed08b8bc8d0508ebe1be940f080883c50c8b4500ebd445010000 *2400000083c70c3b7b5c7615c7436c03000000c74320fe000000b84ccf0608ffe0c747f8649705 *088977fc8b450489078b55104a8d47f889450489d683c504b8bc8d0508ebd989f6450100002400 *000083c7083b7b5c760cc7436c020000008b43f8ffe0c747fc3c9705088b451089078d47fc8945 *fc8b45148945f88b760cc74500c08c050883ed0cb88ca80608ebd2c50300002400000083c70c3b *7b5c7615c7436c03000000c74320fe000000b84ccf0608ffe0c747f8649705088977fc8b450489 *078d77f883c5188b4500ebe490c501000024000000c745fce01008088b45148945f88b760cc745 *00548d050883ed0ce9d91a010090430000002400000085f675118b7508c745fc948d050883ed04 *8b06ffe089750c8b7508c745fc0c8d0508ebeab8e88d0508ffe090833d34290808000f858c0000 *00c7053429080801000000c745005490050883c504c74500e090050883c504c745004cc6050883 *c504c74500f08b050883c504c74500dc89050883c504c745005883050883c504c74500bc790508 *83c504c7450074a0050883c504c7450028a0050883c504c745006c9d050883c504c74500b49905 *0883c504c745007499050883c504c74500d891050883c50483ed04ff650090b8908e0508ffe090 *833d38290808007564c7053829080801000000c7450074a0050883c504c74500d891050883c504 *c745007ca2050883c504c745006c9d050883c504c74500dc89050883c504c74500d488050883c5 *04c74500e090050883c504c745005490050883c504c74500e883050883c50483ed04ff65009016 *00030000000000110000008d45fc3b4354730abe400f08088b43fcffe08b7504c745fc4c900508 *83ed048b06ebed908b750cc7450c940f080883c508e97212010089f604000100020000000e0000 *008d45fc3b4354720883c70c3b7b5c760cc7436c030000008b43fcffe0c747f8649705088b4604 *8947fc8b450089078d47f88945008b760883ed04b8b8a10608ebd98d760004000100030000000b *0000008d45f83b4354720883c70c3b7b5c760cc7436c030000008b43fcffe0c747f8548f05088b *45008947fc8b460c89078d47f88945008b46088945fc8b46048945f883ed08b8108f0508ebd089 *f683c7103b7b5c760cc7436c040000008b43f8ffe0c747f4a48f05088b45048947f88b46088947 *fc8b450c89078d47f489450c8b46048945088b750483c504b824a60608ebcd8d7600f08f050834 *8f0508000000004300000025000000b854900508ffe090833d3c29080800755ac7053c29080801 *000000c745006ca3050883c504c7450098ac050883c504c7450028a0050883c504c7450074a005 *0883c504c74500d891050883c504c745007499050883c504c745006c9d050883c504c745006ca1 *050883c50483ed04ff65009090900800000001000000ff6500900800000009000000ff650090b8 *e0900508ffe090833d40290808007578c7054029080801000000c745006c9d050883c504c74500 *d891050883c504c745007499050883c504c74500ec99050883c504c745006ca1050883c504c745 *00e4a3050883c504c7450034ab050883c504c74500fc9d050883c504c7450074a0050883c504c7 *450004a5050883c504c74500bc79050883c50483ed04ff650090b870910508ffe090833d442908 *08007550c7054429080801000000c7450028a0050883c504c745006ca3050883c504c74500d891 *050883c504c74500dca2050883c504c7450074a0050883c504c745008c98050883c504c7450074 *99050883c50483ed04ff650090b8d8910508ffe090833d48290808007514c70548290808010000 *00c745007499050883c50483ed04ff650090bc0f080808110808fc91050800000200180003008d *45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e8 *61fb000083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f408110808be *bc0f080883ed10b8b8a10608ebbd90909003000100000000001100000083c7083b7b5c7611c743 *6c02000000be7c0f08088b43fcffe0c747fcf89205088b45008907c74500000000008d77fcb8f8 *920508ebe189f601000100160000008d45f43b435473058b43f8ffe08d45f8c700a00007088970 *048b4608408945f48b760483ed0cb8f8920508ebde8d760003000100000001000d00000083c720 *3b7b5c760cc7436c080000008b43fcffe08b56048b45008a141081e2ff00000085d27513be940f *080883c50483ef208b45008b40f0ebd8c747e4bc9205088977e88b45008947ecc747f024970508 *8957f4c747f8649705088d47f08947fc8d47e489078d77f883c5048b45008b40eceb9e12000300 *000000001100000083c7103b7b5c7611c7436c04000000be800f08088b43fcffe0c747f4049405 *088b45048947f88b45088947fc8b45008907c74508000000008d77f483c508b804940508ebd28d *760001000100160000008d45f43b435473058b43f8ffe08d45f8c700a00007088970048b460840 *8945f48b760483ed0cb804940508ebde8d760003000100020001000b0000008d45f83b43547208 *83c7143b7b5c760cc7436c050000008b43fcffe08b560c8b45008a141081e2ff00000085d2750d *8b760883ef14b854960608ebdec747f0c89305088977f48b45008947f8c747fc2497050889178d *47f08945008d47fc8945fc8b760483ed08b824a60608ebac909016000300000000001100000083 *c70c3b7b5c7611c7436c03000000be840f08088b43fcffe0c747f8289505088b45008947fc8b45 *0489078d77f883c508b828950508ebdf8b750483c50ce9910101009083c70c3b7b5c760cc7436c *030000008b43f8ffe0c747f858fe06088b450c8947fc8b460889078d47f889450c8b55088b4604 *89450889d683c504b824a60608ebd18d7600c4940508b894050800000000030000002500000004 *000100020000000e0000008d45f43b435473058b43fcffe08b46088945f88b46048945fc8b4500 *89750089c6c745f41c95050883ed0c8b06ebdc900b00020000000000110000008d45fc3b435473 *0abe880f08088b43fcffe08b7504c745fc4096050883ed048b06ebed90be940f080883c50c8b45 *00ff60f089f602000000150000008d45f03b435473058b43f8ffe08d45f8c700a0000708897004 *8b46088945f48b46048945f083ed10b864950508ebdc9083c7243b7b5c760cc7436c090000008b *43f8ffe0c747e0a09505088b45048947e48b46088947e8c747ec58fe06088b45048947f08b4604 *8947f4c747f8649705088d47ec8947fc8d47e089078d77f883c50c8b45008b40ecebb889f6d095 *0508889505080000000042000000250000000b00020000000000110000008b7500c74500f49605 *08ff268b750483c508ff2602000000150000008d45f03b435473058b43f8ffe08d45f8c700a000 *07088970048b46088945f48b46048945f083ed10b84c960508ebdc9083c7183b7b5c760cc7436c *060000008b43f8ffe0c747ec689605088b46088947f08b45048947f4c747f8649705088b460489 *47fc8d47ec89078d77f883c5088b45008b40ecebcb909896050858960508000000000100000025 *000000000000000a0000008b4500ff60f09090000000000a0001008b4500ff60ec89f6900f0808 *980f08080000010003000000ff650090000001000a000000ff6500900000010003000000ff6500 *90000001000a000000ff650090000000000a0000008b4500ff60f0909002000000040001008b45 *00ff60ec89f602000000090001008b4500ff60ec9090000000000a0000008b4500ff60f0909000 *0000000a0001008b4500ff60ec9090000000000a0002008b4500ff60e889f6a00f0808a40f0808 *a80f08080200000004000000ff6500900200000009000000ff650090000000000a000000ff6500 *909c0f08080800000001000000ff6500900800000009000000ff6500900200000004000000ff65 *00900200000009000000ff650090b818980508ffe090833d4c29080800755ac7054c2908080100 *0000c74500c8a0050883c504c745006ca1050883c504c74500b499050883c504c74500d8910508 *83c504c745007ca2050883c504c7450074a0050883c504c745006c9d050883c504c74500e88305 *0883c50483ed04ff6500909090b88c980508ffe090833d50290808007528c70550290808010000 *00c74500d891050883c504c745006cc2050883c504c745007499050883c50483ed04ff65009018 *110808c498050800000200180001008d45f43b4354720883c70c3b7b5c760cc7436c030000008b *43f8ffe0c747f808ee060883ec0c56e89df4000083c4108d47f8894604c70624ed06088d55f8c7 *02a0000708894204c745f41811080883ed0cb8f89b0508ebc204000100000000001100000083c7 *083b7b5c7611c7436c02000000bebc0f08088b43fcffe0c747fc309d05088b450089078d47fc89 *4500b8f89b0508ebe59090b874990508ffe090833d54290808007528c7055429080801000000c7 *450028a0050883c504c74500b499050883c504c74500d891050883c50483ed04ff650090b8b499 *0508ffe090833d5829080800751ec7055829080801000000c74500d891050883c504c745006c9d *050883c50483ed04ff6500909090b8ec990508ffe090833d5c29080800755ac7055c2908080100 *0000c745007ca2050883c504c745007091050883c504c7450074a0050883c504c745006ca30508 *83c504c745008c98050883c504c7450028a0050883c504c74500d891050883c504c74500e88305 *0883c50483ed04ff65009090900000020006000000ff650090000002000a000000ff6500900000 *010003000000ff650090000001000a000000ff650090b8909a0508ffe090833d6029080800756e *c7056029080801000000c745007499050883c504c745006ca3050883c504c745006ca1050883c5 *04c745006c9d050883c504c74500d891050883c504c7450028a0050883c504c745003884050883 *c504c74500e090050883c504c745005490050883c504c74500bc79050883c50483ed04ff650090 *9090b8189b0508ffe090833d64290808000f85be000000c7056429080801000000c745007ca205 *0883c504c745001898050883c504c745006ca3050883c504c7450074a0050883c504c745008c98 *050883c504c74500b499050883c504c745006c9d050883c504c7450028a0050883c504c74500c8 *a1050883c504c74500d891050883c504c745007091050883c504c7450028b2050883c504c74500 *9cb1050883c504c7450014c3050883c504c7450098c2050883c504c74500e883050883c504c745 *00807a050883c504c74500bc79050883c50483ed04ff6500909090040001000000000011000000 *8b750083c504e9fd280100900400020000000000110000008b7500c74500289c0508e99d390100 *90000000002400000083c7083b7b5c7615c7436c02000000c74320fe000000b84ccf0608ffe0c7 *47fc54a3050889378d77fc83c5048b4500ebea9090900400010000000000110000008d45fc3b43 *54730abee00f08088b43fcffe08b7500c74500989c050883ed04b8e8970608ebea89f600000000 *24000000e9b7f900009090900400010000000000110000008b7500e9a0f90000000000000a0007 *00ff6500900500000001000000ff6500900500000009000000ff650090000000000a0000008b45 *00ff60f09090000000000a0001008b4500ff60ec90900100000002000300ff6500900100000009 *000300ff650090000000000a000400ff650090000000000a000500ff6500900100000002000700 *ff6500900100000009000700ff6500900100000002000900ff6500900100000009000900ff6500 *90000000000a000b00ff650090b86c9d0508ffe090833d68290808007578c70568290808010000 *00c7450028a0050883c504c74500c8a1050883c504c745006ca3050883c504c74500e883050883 *c504c7450074a0050883c504c74500d891050883c504c745001ca3050883c504c745008c980508 *83c504c745007091050883c504c74500dca2050883c504c74500147b050883c50483ed04ff6500 *90b8fc9d0508ffe090833d6c29080800756ec7056c29080801000000c7450034ab050883c504c7 *45006ca3050883c504c745007091050883c504c74500c8a1050883c504c745007ca2050883c504 *c7450074a0050883c504c745008c98050883c504c74500d891050883c504c74500807a050883c5 *04c745007499050883c50483ed04ff65009090900b00020000000000110000008b7500c74500e4 *9e0508ff2621000000240000008b45043b460474253b46047c10bea80f080883c5088b45008b40 *e8ffe0bea00f080883c5088b45008b40f0ebeebea40f080883c5088b45008b40ecebde8d760001 *000000240000008b55048b460489450489d6c745009c9e0508ff260000010003000000ff650090 *000001000a000000ff6500900000010003000000ff650090000001000a000000ff650090000001 *0003000000ff650090000001000a000000ff6500900000020006000000ff650090000002000a00 *0000ff6500900a00020000000000110000008b7500c74500a09f0508ff268b750483c508ff6500 *8d7600ff45048b4608894500e9daffffff89f67c9f0508709f0508000000002100000025000000 *0400010000000000110000008d45fc3b4354730abe081008088b43fcffe08b45008945fcc74500 *940f080883ed04b8d8cb0508ebe790909044110808d89f05080400010000000000110001008b75 *00c7450020a00508ff26be4411080883c504ff2689f68b760883c504ff2604a00508f89f0508d8 *9f05080000000025000100b828a00508ffe090833d70290808007532c7057029080801000000c7 *4500e883050883c504c74500d891050883c504c745006cc2050883c504c745007499050883c504 *83ed04ff6500909090b874a00508ffe090833d7429080800753cc7057429080801000000c74500 *8c98050883c504c745006ca3050883c504c7450028a0050883c504c74500d891050883c504c745 *007499050883c50483ed04ff650090b8c8a00508ffe090833d78290808007546c7057829080801 *000000c7450074a0050883c504c745006ca1050883c504c74500dca2050883c504c7450028a005 *0883c504c74500d891050883c504c745007499050883c50483ed04ff6500909090040001000000 *0000110000008b7500c7450040a10508ff260000000024000000837e0400740d8b4604894500b8 *7c920508ffe0be940f080883c5048b45008b40f0ebee90b86ca10508ffe090833d7c2908080075 *14c7057c29080801000000c74500d891050883c50483ed04ff6500900000010003000000ff6500 *90000001000a000000ff6500900000010003000000ff650090000001000a000000ff650090b8c8 *a10508ffe090833d80290808000f8596000000c7058029080801000000c745007499050883c504 *c74500fca9050883c504c74500d891050883c504c745007091050883c504c745006ca3050883c5 *04c7450028a0050883c504c74500ec99050883c504c745007ca2050883c504c7450074a0050883 *c504c745004cb5050883c504c74500e883050883c504c7450078b3050883c504c7450004b40508 *83c504c7450038b3050883c50483ed04ff6500909090b87ca20508ffe090833d84290808007546 *c7058429080801000000c745008c98050883c504c745006ca3050883c504c7450028a0050883c5 *04c7450074a0050883c504c74500d891050883c504c745007499050883c50483ed04ff65009090 *90b8dca20508ffe090833d88290808007528c7058829080801000000c745006ca3050883c504c7 *450074a0050883c504c74500d891050883c50483ed04ff650090b81ca30508ffe090833d8c2908 *0800751ec7058c29080801000000c74500dca2050883c504c74500d891050883c50483ed04ff65 *009090900100000002000000ff6500900100000009000000ff650090b86ca30508ffe090833d90 *290808007546c7059029080801000000c745004cb5050883c504c7450028a0050883c504c74500 *e883050883c504c745008c98050883c504c74500d891050883c504c745007499050883c50483ed *04ff65009090900000010003000000ff650090000001000a000000ff650090b8e4a30508ffe090 *833d94290808007528c7059429080801000000c74500d891050883c504c745006c9d050883c504 *c745006ca1050883c50483ed04ff6500901600040000000000110000008b7500c7450078a40508 *ff2662000000240000008b4d088b55048b460489048abe9c0f080883c50cff6500902200000024 *0000008b55088b460489450889d6c745003ca40508ff2602000000240000008b55048b46048945 *0489d6c745005ca40508ff260b00030000000000110000008b7500c74500e8a40508ff26210000 *002400000083c7083b7b5c760cc7436c020000008b43f8ffe08b46048b55048b0482c747fc98a1 *050889078d77fc83c5088b4500ebe18d760001000000240000008b55048b460489450489d6c745 *00aca40508ff26b804a50508ffe090833d98290808007550c7059829080801000000c745006c9d *050883c504c74500d891050883c504c74500ec99050883c504c745006ca1050883c504c74500e4 *a3050883c504c7450034ab050883c504c74500fc9d050883c50483ed04ff650090b86ca50508ff *e090833d9c290808007550c7059c29080801000000c74500b499050883c504c745006c9d050883 *c504c745005490050883c504c74500cc86050883c504c745003479050883c504c7450014b10508 *83c504c7450014ad050883c50483ed04ff65009038100808cca505080400010000000000110001 *008d45fc3b4354730abe301008088b43fcffe0be3810080883ed04b8b8a10608ebef8d76008c10 *08086c1108083010080804a6050804000200000000001100070083c70c3b7b5c7611c7436c0300 *0000be381008088b43fcffe0c747f888a905088b45008947fcc74304301008088d77f883c504b8 *a4c40608ebdd89f6eb7289f60000000024000000be9c0f080883c504ff65009000000000240000 *00c7450068a6050883ec0c6a01e85eae00008d760001000000240000008b46048b50048b450489 *450089d6c745047ca6050883ed04e913fd00008d76005ca605080000000004a605080000010001 *0000000c0001008d45f43b435473058b43fcffe08b46048945fcbe8c100808c745f898a6050883 *ed088b06ebe589f6be7411080883c508e99b5901008d7600eb7289f60000000024000000be9c0f *080883c504ff6500900000000024000000c7450014a7050883ec0c6a01e8b2ad00008d76000100 *0000240000008b46048b50048b450489450089d6c7450428a7050883ed04e967fc00008d760008 *a705080000000004a6050800000100010000000c0001008d45f43b435473058b43fcffe08b4604 *8945fcbe8c100808c745f844a7050883ed088b06ebe589f683c7083b7b5c760cc7436c02000000 *8b43f8ffe0c747fc7ca705088b450489078d77fc83c508b8a0000708ebe58d7600a4a70508a4a7 *0508f8a6050804a605080100000025000300be6811080883c504e9a75801008d7600eb2e89f600 *00000024000000be9c0f080883c504ff650090fca7050800000000000000000000010000000100 *0d0000008d45fc3b435473058b43fcffe08b460489442408c745fc08a8050883ed048b43608968 *308b53688d470489420483ec086a0053e8d3b6000083c40489442410ff742414e851ac000083c4 *086a00ff742410e833b7000083c4108b43608b683005880000008943548b43688b780483ef0489 *c28b4018c1e00c030283e80489435c8b4500eb868d7600000000002400000083c7083b7b5c760c *c7436c020000008b43f8ffe0c747fc2ca805088b460489078d77fc83c504b8a0000708ebe58d76 *008b7604c74500bca80508ff26eca80508eca7050800000000000000002500000004a605080000 *0000240003008b06668b40fe25ffff000083f803740783f8087416eb208975008b7604c745fcec *a7050883ed048b06ffe08b7604c745000ca90508ebf083c7083b7b5c760cc7436c020000008b43 *f8ebdec747fcd0a6050889378d77fc83c504b8a0000708ebc88d760004a6050801000100130003 *008d45f03b435473058b43f8ffe08d45f8c700a00007088970048b7604c745f418a9050883ed0c *8b06ebe1909038100808b4a905080400020000000000110001008d45fc3b4354730abe40100808 *8b43fcffe08b45008945fcc745003810080883ed04b898ca0508ebe7909090b8fca90508ffe090 *833da029080800753cc705a029080801000000c7450034ab050883c504c7450074a0050883c504 *c74500fc9d050883c504c745007ca2050883c504c74500d891050883c50483ed04ff650090b850 *aa0508ffe090833da4290808007528c705a429080801000000c74500e883050883c504c745006c *9d050883c504c74500d891050883c50483ed04ff6500900b00030000000000110000008b7500c7 *4500a8aa0508ff2601000000240000008b4604894500e9ad250000900000010003000000ff6500 *90000001000a000000ff6500900000010003000000ff650090000001000a000000ff6500900000 *010003000000ff650090000001000a000000ff6500900000010003000000ff650090000001000a *000000ff6500900000020006000000ff650090000002000a000000ff650090b834ab0508ffe090 *833da8290808007564c705a829080801000000c745007091050883c504c745006ca3050883c504 *c74500c8a1050883c504c745007ca2050883c504c7450074a0050883c504c745008c98050883c5 *04c74500d891050883c504c74500807a050883c504c745007499050883c50483ed04ff65009054 *110808a8ab05080300010000000000110001008d45f83b4354720883c7083b7b5c7611c7436c02 *000000be781008088b43fcffe08b450085c0791389c6c7450050ac050883ef08b804d80608ebe4 *c747fcd0cd050889078d77fcc7450044ac0508b814ac0508ebca8d7600c74500940f08088975fc *c745f80000000083ed08e9972000008d760014ac050814ac0508a8ab05080000000025000100a8 *ab0508000000002400010083c70c3b7b5c7615c7436c03000000c74320ff000001b84ccf0608ff *e0c747f8f0cd05088b45008947fc89378d77f8c7450444ac050883c504b814ac0508ebdbb898ac *0508ffe090833dac290808007564c705ac29080801000000c7450038b3050883c504c7450004b4 *050883c504c74500e883050883c504c745006ca3050883c504c7450074a0050883c504c74500ec *99050883c504c745007ca2050883c504c74500c8a1050883c504c74500d891050883c50483ed04 *ff650090b814ad0508ffe090833db0290808000f85c8000000c705b029080801000000c745006c *a3050883c504c745007499050883c504c74500ec99050883c504c745007ca2050883c504c74500 *74a0050883c504c745008c98050883c504c74500c8a1050883c504c74500b499050883c504c745 *006c9d050883c504c74500d891050883c504c745006cc2050883c504c7450020b5050883c504c7 *4500e883050883c504c745004cb5050883c504c745005883050883c504c745008cb4050883c504 *c74500c4b3050883c504c7450014b1050883c504c74500bc79050883c50483ed04ff650090b8f8 *ad0508ffe090833db4290808007546c705b429080801000000c74500bc79050883c504c745006c *9d050883c504c745003479050883c504c7450014c3050883c504c7450098c2050883c504c74500 *14ad050883c50483ed04ff650090909090ae050800000000000000000000010000000000110000 *008d45f03b4354730abe801008088b43fcffe0be04000000c745fc68af050883ed04b8e4d40608 *ebe8e9d3ffffff8d760001000100130000008d45f03b435473058b43f8ffe08d45f8c700a00007 *088970048b46048945f48b46048945f083ed10b894d30508ebdc90020000002400000083c70c3b *7b5c7615c7436c03000000c74320fe000000b84ccf0608ffe0c747f8a0ae05088977fc8d77f883 *c50c8b4500ebe989f623000000240000008b45048b008b00894500c74504d8ae0508e92ed8ffff *89f601000000240000008d56088b4d0483c1088975008955fcc745f814af050883ed0883ec0852 *51e8cea3000083c410ff65008d76000000000024000000897500be04000000c745fc34af050883 *ed04e96525010090c0af050800000000000000000000010000000000110000008d45e83b435473 *0abe841008088b43fcffe0be04000000c745fc90b0050883ed04b8e4d40608ebe8e9d3ffffff8d *7600020000002400000083c50cff650089f602000000240000008975fcc74500d0af050883ed04 *e91e24000089f6640000002400000083c7083b7b5c7615c7436c02000000c74320ff000000b84c *cf0608ffe08b45048b108b45088b0083c004c747fc98a1050889074a8d47fc894504895500c745 *fc440f0808c74508e0af050883ed04b87c8c0508ebc68d760001000000240000008d56088b4d04 *83c1088975008955fc894df8c745f4fcaf050883ed0c83ec085251e8a3a2000083c410ff650000 *00000024000000897500be04000000c745fc5cb0050883ed04e93d24010090b8b0b00508ffe090 *833db829080800751ec705b829080801000000c7450014ad050883c504c745006c9d050883c504 *83ed04ff650090909004b105080000000000000000000001000000000011000000bed8110808e9 *0216010089f6e9efffffff909090b814b10508ffe090833dbc29080800756ec705bc2908080100 *0000c745006ca3050883c504c745009cb1050883c504c74500c8a1050883c504c7450074a00508 *83c504c74500b499050883c504c74500dca2050883c504c7450000cb050883c504c74500189b05 *0883c504c745006c9d050883c504c74500d891050883c50483ed04ff6500909090b89cb10508ff *e090833dc0290808007546c705c029080801000000c74500b499050883c504c745008cb4050883 *c504c745006c9d050883c504c74500d891050883c504c74500e883050883c504c745004cb50508 *83c50483ed04ff6500909090b8fcb10508ffe090833dc4290808007514c705c429080801000000 *c745006c9d050883c50483ed04ff650090b828b20508ffe090833dc829080800756ec705c82908 *0801000000c745007ca2050883c504c745006c9d050883c504c7450074a0050883c504c74500d8 *91050883c504c74500e883050883c504c74500807a050883c504c7450014c3050883c504c74500 *98c2050883c504c74500b0b2050883c504c74500bc79050883c50483ed04ff6500909090b8b0b2 *0508ffe090833dcc29080800756ec705cc29080801000000c74500c8a1050883c504c745006ca3 *050883c504c745007ca2050883c504c7450074a0050883c504c745008c98050883c504c74500d8 *91050883c504c74500807a050883c504c745003884050883c504c7450014c3050883c504c74500 *98c2050883c50483ed04ff6500909090b838b30508ffe090833dd0290808007528c705d0290808 *01000000c74500bc79050883c504c74500d891050883c504c74500fca9050883c50483ed04ff65 *0090b878b30508ffe090833dd4290808007532c705d429080801000000c7450074a0050883c504 *c74500d891050883c504c74500bc79050883c504c7450038b3050883c50483ed04ff6500909090 *b8c4b30508ffe090833dd8290808007528c705d829080801000000c7450078b3050883c504c745 *0004b4050883c504c74500c8a1050883c50483ed04ff650090b804b40508ffe090833ddc290808 *00756ec705dc29080801000000c74500e883050883c504c74500bc79050883c504c745008c9805 *0883c504c7450028a0050883c504c745007ca2050883c504c745006ca3050883c504c7450074a0 *050883c504c74500d891050883c504c7450038b3050883c504c74500fca9050883c50483ed04ff *6500909090b88cb40508ffe090833de0290808007514c705e029080801000000c745006ca30508 *83c50483ed04ff650090e4110808b0b4050800000200180001008d45f43b4354720883c70c3b7b *5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e8b1d8000083c4108d47f88946 *04c70624ed06088d55f8c702a0000708894204c745f4ec11080883ed0cb8689c0508ebc2b820b5 *0508ffe090833de4290808007514c705e429080801000000c74500d891050883c50483ed04ff65 *0090b84cb50508ffe090833de8290808007514c705e829080801000000c74500d891050883c504 *83ed04ff650090b4100808c4100808f41108080412080870b50508170004000000000011000f00 *8d45e03b4354730abe9c1008088b43fcffe08b7508c745fc74bc050883ed048b06ebed90bec410 *080883c514ff2689f68975188b450c8945148b451c8945108b450489451c83c510e9bf0900008d *7600c0b50508c0b50508000000004707000025000000be0412080883c520ff2689f683c7183b7b *5c760cc7436c060000008b43f8ffe08b551842c747ecac8005088b45108947f08b450c8947f48b *45048947f8c747fc1c0f080889178d77ec83c51c8b45008b40ecebca83c7183b7b5c760cc7436c *060000008b43f8ffe08b551842035614c747ecac8005088b45108947f08b450c8947f48b450489 *47f88977fc89178d77ec83c51c8b45008b40ecebcb9048b6050800b60508000000004606000025 *00000007000000240000008b45048945008b45188945fc8b450c8945f88b451c8945f489751cc7 *4504a4b6050883ed0ce9c608000089f6be00000000ebcd908b7614ebc78d7600e0b60508d8b605 *08000000000700000025000000897508c74500fcb60508ff26fcb60508fcb60508000000004700 *0000250000008b460c8945fc8b45188945f88b45148945f48b45108945f08b46088945108b4604 *8945148b4610894518c745001cb7050883ed10e9470800008d76001cb70508f4b505087cb50508 *47000000250001007cb5050828000000240001008b450401c039c67c118b750cc745046cb70508 *83c5048b06ffe08b450c8945008b451c8945fc8b45188945f88b45148945f4c74504f4b5050883 *ed0cb89cbf0508ebd590be00000000ebb5908b7614ebaf8d7600c4b70508bcb705087cb5050828 *000000250001007cb5050807000000240001008975008b7508c745fce0b7050883ed04ff2689f6 *be00000000ebe5908b7614ebdf8d760008b8050800b805087cb5050807000000250001008b4604 *8945108b46088945008b460c8945fc8b46108945f88b7610c745f424b8050883ed0cff269024b8 *0508b4b5050874b505080401000025000500beb410080883c514ff2689f683c7183b7b5c760cc7 *436c060000008b43f8ffe08b551c42c747ecac8005088b450c8947f08b45088947f48b45048947 *f8c747fc1c0f080889178d77ec83c5208b45008b40ecebca83c7183b7b5c760cc7436c06000000 *8b43f8ffe08b551c42035614c747ecac8005088b450c8947f08b45088947f48b45048947f88977 *fc89178d77ec83c5208b45008b40ecebcb90b4b805086cb8050800000000070f00002500000007 *000000240000008b451c8945fc8b45188945f88b45148945f48b45108945f089751cc7450010b9 *050883ed10e95a06000089f6be00000000ebcd908b7614ebc78d76004cb9050844b90508000000 *000700000025000000bef411080883c520ff2689f683c7183b7b5c760cc7436c060000008b43f8 *ffe08b551c42c747ecac8005088b450c8947f08b45088947f48b45048947f8c747fc1c0f080889 *178d77ec83c5208b45008b40ecebca83c7183b7b5c760cc7436c060000008b43f8ffe08b551c42 *035614c747ecac8005088b450c8947f08b45088947f48b45048947f88977fc89178d77ec83c520 *8b45008b40ecebcb90bcb9050874b9050800000000070f00002500000007000000240000008b45 *1c8945fc8b45188945f88b45148945f48b45108945f089751cc7450018ba050883ed10e9520500 *0089f6be00000000ebcd908b7614ebc78d760054ba05084cba0508000000000700000025000000 *897500c745fc70ba050883ed04ff269070ba050870ba05080000000006000000250000008b460c *8945008b45048945fc8b45088945f88b450c8945f48b46088945088b460489450c8b4610894518 *c7450494ba050883ed0ce9cf0400008d760094ba050868b9050878b50508070400002500010078 *b5050828000000240001008b450401c039c67c118b751cc74504e4ba050883c5048b06ffe08b75 *08c7450468b90508ebed89f6be00000000ebd1908b7614ebcb8d760020bb050818bb050878b505 *08280000002500010078b5050807000000240001008975008b7518c745fc3cbb050883ed04ff26 *89f6be00000000ebe5908b7614ebdf8d760064bb05085cbb050878b5050807000000250001008b *461089450c8b46048945008b46088945fc8b460c8945f88b760cc745f480bb050883ed0cff2690 *80bb050860b8050870b50508840000002500050070b505082500000024000f0089f003450483f8 *017e128b45048d048039c67f1e8d04b63945047f0a83c508b89cbf0508ffe08b7510c74504bcbb *0508eb0a8b7514c7450460b8050883c5048b06ebe190be00000000ebb5908b7614ebaf8d760014 *bc05080cbc050870b505082500000025000f0070b505080400000024000f008975008b7510c745 *fc30bc050883ed04ff2689f6be00000000ebe5908b7614ebdf8d760058bc050850bc050870b505 *080400000025000f00141208081c1208089c100808241208082c12080874bc05080b0002000000 *000011001f008d45f83b4354730abea41008088b43fcffe08b7500c7450034bf05088b06ebf08b *750483c508ff268b750483c50cff26000000002400000083c70c3b7b5c7615c7436c03000000c7 *4320fe000001b84ccf0608ffe0c747f8208405088977fc8b450089078d77f883c508b8a0000708 *ebe28d760078bc050801000100130001008d45f03b435473058b43f8ffe08d45f8c700a0000708 *8970048b46048945f0c745f4d0bc050883ed10b8c8d80508ebdb83c7183b7b5c760cc7436c0600 *00008b43f8ffe0c747ecf0f106088b45088947f0c747f85cf106088b45088947fc8975088d47ec *8945008d47f88945fc83ed04b890b50508ebcb9048bd050848bd05087cbc050802000000250001 *00000000002400000083c70c3b7b5c7615c7436c03000000c74320fe000001b84ccf0608ffe0c7 *47f8208405088977fc8b450089078d77f883c508b8a0000708ebe28d760074bc05080100010013 *0001008d45f03b435473058b43f8ffe08d45f8c700a00007088970048b46048945f0c745f4acbd *050883ed10b824d80508ebdb83c7183b7b5c760cc7436c060000008b43f8ffe0c747ecf0f10608 *8b45048947f0c747f85cf106088b45048947fc8975048d47ec8945008d47f88945fc83ed04b890 *b50508ebcb9024be050824be05087cbc0508020000002500010083c70c3b7b5c760cc7436c0300 *00008b43f8ffe08b46143b45087f2dc747f8f4bd05088b45048947fc8b45048945fc8d47f88945 *04897508c7450080be050883ed04b850da0508ebc9c747f818bd05088977fc8975fc8d47f88945 *08c74500a4bd050883ed04b870d90508eba58d760080be0508c0bc050874bc0508420000002500 *1f008975008b55048b461489450489d6c745fc04bf050883ed04ff2689f604bf0508b8bc050874 *bc05080100000025001f000b000200000000001100000083c7183b7b5c7611c7436c06000000be *ac1008088b43fcffe0c747ecac8005088b45008947f08b45048947f4c747f81c0f0808c747fc1c *0f0808c707010000008d77ec83c5088b45008b40ecebc990901700040000000000110000008d45 *fc3b4354730abeb01008088b43fcffe08b7508c745fca4c0050883ed048b06ebed9083c7183b7b *5c760cc7436c060000008b43f8ffe08b551042c747ecac8005088b45048947f08b45088947f48b *450c8947f8c747fc1c0f080889178d77ec83c5148b45008b40ecebca83c7183b7b5c760cc7436c *060000008b43f8ffe08b551042035614c747ecac8005088b45048947f08b45088947f48b450c89 *47f88977fc89178d77ec83c5148b45008b40ecebcb9008c00508c0bf0508000000000401000025 *00000004000000240000008b451089751089c6c7450064c00508ff268d7600be00000000ebe590 *8b7614ebdf8d760088c0050880c00508000000000400000025000000446174612f46696e697465 *4d61702e68733a283631372c34292d283632302c3730297c636173650024110808ccc005080000 *0200180001008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee *060883ec0c56e895cc000083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c7 *45f4a4c00508be2411080883ed10b8a89f0608ebbd909090446174612f46696e6974654d61702e *68733a283631302c34292d283631332c3730297c63617365002411080864c10508000002001800 *01008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec *0c56e8fdcb000083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f43cc1 *0508be2411080883ed10b8a89f0608ebbd909090b8dcc10508ffe090833dec290808007578c705 *ec29080801000000c745007499050883c504c74500bc79050883c504c745006c9d050883c504c7 *45007ca2050883c504c7450074a0050883c504c745007881050883c504c745005883050883c504 *c74500e883050883c504c74500807a050883c504c745006cc2050883c504c74500d891050883c5 *0483ed04ff650090b86cc20508ffe090833df0290808007514c705f029080801000000c74500d8 *91050883c50483ed04ff650090b898c20508ffe090833df4290808007564c705f4290808010000 *00c74500d0c3050883c504c74500fcb1050883c504c74500e090050883c504c7450098c6050883 *c504c745007489050883c504c745005490050883c504c74500f484050883c504c7450078810508 *83c504c74500807a050883c50483ed04ff650090b814c30508ffe090833df8290808007528c705 *f829080801000000c74500cc86050883c504c7450054c3050883c504c74500d488050883c50483 *ed04ff650090b854c30508ffe090833dfc290808007564c705fc29080801000000c7450074a005 *0883c504c74500d891050883c504c745006c9d050883c504c74500e883050883c504c745004cc6 *050883c504c74500cc86050883c504c74500d488050883c504c745005490050883c504c74500e0 *90050883c50483ed04ff650090b8d0c30508ffe090833d002a080800753cc705002a0808010000 *00c74500e88d050883c504c74500908e050883c504c745004cc6050883c504c74500f08b050883 *c504c74500dc89050883c50483ed04ff65009017000400000000001100000083c7103b7b5c7611 *c7436c04000000bedc1008088b43fcffe0c747f40cc605088b45008947f88b45088947fc8b4504 *89078b450c894508c7450c000000008d77f483c508b80cc60508ebcc90450300002400000083c7 *083b7b5c760cc7436c020000008b43f8ffe0c747fc3c9705088b451489078b45048945148d47fc *8945108b761083c508b850ab0608ebd98d76008b7510c745007cc40508ff26e99b0000008d7600 *85030000240000008b451040c74514e89706088945108b450889450c8b750483c50ce919010000 *90050100002400000083c7083b7b5c760cc7436c020000008b43f8ffe0c747fc3c9705088b4510 *8907c745fce89706088b450c8945f88d47fc8945f48b45148945f08b7610c74500d4c4050883ed *14b850ab0608ebc58d7600c4c40508000000000000000000000100050001000b0000008d45d43b *435473058b43fcffe08b46148945ec8b46108945f08b460c8945f48b46188945f88b46088945fc *8b7604c745e8fcc4050883ed188b06ebcf83c71c3b7b5c760cc7436c070000008b43f8ffe0c747 *e864c505088b45108947ec8b450c8947f08b46048947f48b46088947f88b45088947fc8b451489 *078d77e883c5188b4500ebc98d7600a0c50508b8c405080000000005020000250000000a000200 *030000000b0000008d45f03b435473058b43fcffe08b460c8945f48975f88b46088945fc8b5500 *8b460489450089d6c745f000c6050883ed108b06ebd6909090b84cc60508ffe090833d042a0808 *007532c705042a080801000000c7450074a0050883c504c745006c9d050883c504c74500d89105 *0883c504c745005490050883c50483ed04ff6500909090b898c60508ffe090833d082a08080075 *1ec705082a080801000000c74500e4a3050883c504c745007499050883c50483ed04ff65009090 *900b00030000000000110000008b7500c7450020c70508ff26210000002400000083c7083b7b5c *760cc7436c020000008b43f8ffe08b45040346048b00c747fc98a1050889078d77fc83c5088b45 *00ebe201000000240000008b55048b460489450489d6c74500e8c60508ff260b00020000000000 *1100000083c7143b7b5c7611c7436c05000000beec1008088b43fcffe0c747f08cc705088b4500 *8947f48b45048947f8c747fc00c805088d47f089078d77fc83c5088b4500ebd490020000001500 *00008d45f03b435473058b43f8ffe08d45f8c700a00007088970048b46088945f48b46048945f0 *83ed10b82cce0508ebdc9021000000240000008b55048b46048902be9c0f080883c508ff650090 *01000000240000008b55048b460489450489d6c74500c4c70508ff2604000200010000000c0000 *008d45fc3b435473058b43fcffe08b7604c745fce0c7050883ed048b06ebed9090040002000000 *0000110000008b7500c7450040c80508ff26000000002400000083c7083b7b5c760cc7436c0200 *00008b43f8ffe08b46048b00c747fc98a1050889078d77fc83c5048b4500ebe59090900b000300 *00000000110000008b7500c74500acc80508ff2621000000240000008b55048b46048902be9c0f *080883c508ff65009001000000240000008b55048b460489450489d6c7450090c80508ff260400 *01000000000011000000be0011080883c504e963ceffff909090040001000000000011000000be *0011080883c504e947ceffff9090905072656c7564652e6368723a2062616420617267756d656e *740089f600000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ff *e0c747f808ee060883ec0c56e855c4000083c4108d47f8894604c70624ed06088d55f8c702a000 *0708894204c745f4940f0808c745f0f8c8050883ed10b830de0508ebbb905c1208082c1108087c *c9050803000100000000001100030083c7143b7b5c7611c7436c05000000be241108088b43fcff *e0c747f0e0c905088b45008947f4c747fcbccb05088d47f089078d47fc894500b8f89b0508ebd8 *907cc9050800000200140003008d45f03b435473058b43f8ffe08d45f8c700a0000708897004c7 *45f42c1108088b46048945f083ed10b89cdf0508ebdb4e6f6e2d65786861757374697665207061 *747465726e7320696e009000000200180000008d45f43b4354720883c70c3b7b5c760cc7436c03 *0000008b43f8ffe0c747f808ee060883ec0c56e83dc3000083c4108d47f8894604c70624ed0608 *8d55f8c702a0000708894204c745f410ca050883ed0cb87c920508ebc20b000300000000001100 *000083c7083b7b5c7611c7436c02000000be3c1108088b43fcffe0c747fcdcca05088b45048907 *8d47fc8943048b750083c508b8a4c40608ebdf04000100010000000c0000008d45fc3b43547305 *8b43fcffe08b760483ed04b8b8a10608ebf19090b800cb0508ffe090833d0c2a0808000f85a000 *0000c7050c2a080801000000c7450028a0050883c504c74500b499050883c504c745006ca30508 *83c504c7450074a0050883c504c745007ca2050883c504c74500189b050883c504c745006c9d05 *0883c504c74500d891050883c504c745008c98050883c504c7450028b2050883c504c74500bc79 *050883c504c74500e883050883c504c745009cb1050883c504c7450014c3050883c504c7450098 *c2050883c50483ed04ff6500900100000002000c00ff6500900100000009000c00ff6500900b00 *020000000000110000008b7500c745003ccc0508ff268b750483c508ff2683c70c3b7b5c760cc7 *436c030000008b43f8ffe0c747f8649705088b46048947fc8b450489078d47f88945048b460889 *4500b8d8cb0508ebd98d7600eccb0508e4cb0508000000000100000025000000bc0f0808781308 *083ccc050800000200180003008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8 *ffe0c747f808ee060883ec0c56e821c1000083c4108d47f8894604c70624ed06088d55f8c702a0 *000708894204c745f478130808bebc0f080883ed10b8b8a10608ebbd909090a4130808b0cc0508 *1200030000000000110001008d45f83b4354730abe541108088b43fcffe0837d00067e1ec745fc *5c1108088b45048945f8c74500c8cd050883ed08b82cef0508ebda83c504b850f10508ebd083c5 *04e944240000b0cc050802000000150001008d45f03b4354720883c70c3b7b5c760cc7436c0300 *00008b43f8ffe08d45f8c700a0000708897004c747f864970508c747fc901308088b460889078d *47f88945f48b46048945f083ed10b850f10508ebc98d760083c7183b7b5c760cc7436c06000000 *8b43f8ffe0c747ec18cd05088b45048947f08b45088947f4c747f864970508c747fc981308088d *47ec89078d77f883c50c8b45008b40ecebca6ccd050804cd0508b0cc0508020000002500010000 *000100030000008b4500ff60f089f6000001000a0000008b4500ff60f090900100010005000100 *8b4500ff60ec89f601000100090001008b4500ff60ec90900900000001000000ff650090090000 *0009000000ff6500900b00020000000000110000008b7500c7450078ce0508ff26210000002400 *000083c7083b7b5c760cc7436c020000008b43f8ffe08b4504034604c747fc98a1050889078d77 *fc83c5088b4500ebe489f601000000240000008b55048b460489450489d6c7450040ce0508ff26 *28cf050800000000000000000000010000000000110000008d45fc3b4354730abe681108088b43 *fcffe0c745fc38cf050883ed048b43608968308b53688d470489420483ec086a0053e85d900000 *83c404894424146a00e8dd85000083c4086a00ff742414e8bf90000083c4108b43608b68300588 *0000008943548b43688b780483ef0489c28b4018c1e00c030283e80489435c8b4500eb8f8d7600 *e977ffffff8d76000000000024000000be9c0f080883c504ff650090ac0f0808c813080844cf05 *080400020000000000110003008d45fc3b4354730abe6c1108088b43fcffe0c74304c4130808be *c8130808c745fcfccf050883ed04b8a4c40608ebe190beac0f080883c504ff6500900000000024 *000000be9c0f080883c504ff650090c74500a0cf050883ec0c6a02e82e8500008d7600accf0508 *8ccf050844cf0508000000002500010044cf050801000000240001008b7504c74504d4cf050883 *c504ff269044cf05080100000024000100c74500e0cf0508e8ff860000ff6500906c1108084cd0 *0508000000000cd005080000010000000000110001008d45fc3b4354730abe741108088b43fcff *e0c745fc980f080883ed04b85ccf0508ebed90e9d7ffffff909090090003000000000011000000 *8d45f83b4354730abe7c1108088b43fcffe08b750083ed04b898d00508ebf19022000000240000 *008b7504eb0b8d7600220000002400000089f085f6750dbe9c0f080883c50c8b4500ffe0488b55 *088b54820c89450489d6c7450088d0050883ed04b8e8970608ebe0909090040001000000000011 *0000008d45fc3b4354730abe801108088b43fcffe08b45008945fcc745000cd1050883ed04b838 *f70508ebe78d7600000000002400000083c7083b7b5c760ec7436c02000000b838c90608ffe0c7 *47fc04ab050889378d77fc83c5048b4500ebea90900400010000000000110000008b7500c74500 *58d10508ff260000000024000000837e0400740dbedc13080883c504e999d9ffffbee4130808eb *f190900400010000000000110000008b750083c504ff260400010000000000110000008b7500c7 *4500a8d10508ff26000000002400000083c7083b7b5c760cc7436c020000008b43f8ffe08b4604 *f7d8c747fc04ab050889078d77fc83c5048b4500ebe59090900b00020000000000110000008b75 *00c7450030d20508ff26210000002400000083c7083b7b5c760cc7436c020000008b43f8ffe08b *45042b4604c747fc04ab050889078d77fc83c5088b4500ebe489f601000000240000008b55048b *460489450489d6c74500f8d10508ff260b00020000000000110000008b7500c745009cd20508ff *26210000002400000083c7083b7b5c760cc7436c020000008b43f8ffe08b45040faf4604c747fc *04ab050889078d77fc83c5088b4500ebe39001000000240000008b55048b460489450489d6c745 *0064d20508ff260b00020000000000110000008b7500c7450008d30508ff262100000024000000 *83c7083b7b5c760cc7436c020000008b43f8ffe08b4504034604c747fc04ab050889078d77fc83 *c5088b4500ebe489f601000000240000008b55048b460489450489d6c74500d0d20508ff26bc13 *0808bc1108081cd3050800000200180003008d45f43b4354720883c70c3b7b5c760cc7436c0300 *00008b43f8ffe0c747f808ee060883ec0c56e841ba000083c4108d47f8894604c70624ed06088d *55f8c702a0000708894204c745f4bc11080883ed0cb8f0f20508ebc20b00020000000000110000 *008d45fc3b4354730abed01108088b43fcffe08b7504c745fc04d4050883ed048b06ebed908b75 *0483c50cff260200000024000000837e042f75068b450889450483c504e9b8ffffff8b46088945 *088b7604c74500c8d30508ff2689f6dcd30508b8d3050800000000420000002500000004000200 *00000000110000008d45f83b4354730abed41108088b43fcffe08b7500c74500e8d405088b06eb *f0be940f080883c504ff650090010000002400000083c70c3b7b5c7615c7436c03000000c74320 *fe000000b84ccf0608ffe0c747f8649705088b45048947fc89378d77f883c5088b4500ebe49001 *000000240000008b45048945fc897504c7450044d4050883ed04e974ffffff0100000024000000 *8b46048945fcc7450084d4050883ed04e99fb2ffff8d76008b46088945008b7604c745fca4d405 *0883ed04ff268d7600bcd4050830d4050800000000000000002500000094120808001408082014 *080834140808e8d40508040002000000000011000f008d45f83b4354730abee41108088b43fcff *e0c7430430140808be34140808c745fcecd5050883ed04b8a4c40608ebe190e8d4050800000000 *240003008b06668b40fe25ffff000083f805740783f807740eeb11be0014080883c5048b06ffe0 *8b7604ebf4c74500101408088975fc83ed04b8b8e20508ebe5e8d4050801000100130003008d45 *f03b435473058b43f8ffe08d45f8c700a00007088970048b7604c745f444d5050883ed0c8b06eb *e189f6c74500fc1308088975fc83ed04e9a606000089f6b8d50508b8d505080000000000000000 *25000000e8d40508010000002400070083c70c3b7b5c7615c7436c03000000c74320fe000000b8 *4ccf0608ffe0c747f88cd505088b45048947fc8d47f8894500c745fc20140808c74504e0d50508 *83ed04b84c960508ebd3e411080878d605080000000034d605080000010000000000110001008d *45fc3b4354730abeec1108088b43fcffe0bee4110808c745fc88d6050883ed04b8bcd50608ebe8 *e9d3ffffff8d7600000000002400000083c7083b7b5c7615c7436c02000000c74320fe000000b8 *4ccf0608ffe0c747fc54a3050889378d77fc83c5048b4500ebea909090446174612f46696e6974 *654d61702e68733a283634302c34292d283634322c3738297c66756e6374696f6e20646f75626c *655f52008d760024110808f4d6050800000200180001008d45f03b4354720883c70c3b7b5c760c *c7436c030000008b43f8ffe0c747f808ee060883ec0c56e86db6000083c4108d47f8894604c706 *24ed06088d55f8c702a0000708894204c745f4bcd60508be2411080883ed10b8a89f0608ebbd90 *9090446174612f46696e6974654d61702e68733a283633332c34292d283633352c3738297c6675 *6e6374696f6e20646f75626c655f4c008d7600241108089cd7050800000200180001008d45f03b *4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e8c5b500 *0083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f464d70508be241108 *0883ed10b8a89f0608ebbd9090904c140808141208080cd805080400010000000000110003008d *45f83b4354730abe141208088b43fcffe08b7500c74500b0d805088b06ebf0be4c14080883c504 *ff2689f68b75088b450489450883c508ff65049089750883c508e9b9ffffff9060d8050850d805 *0810d8050802000000250001008b46088945fc8b46048945008b7610c745f880d8050883ed08ff *269080d8050844d805080cd8050800000000250003003c1408081c120808b0d805080400010000 *000000110003008d45f83b4354730abe1c1208088b43fcffe08b7500c7450054d905088b06ebf0 *be3c14080883c504ff2689f68b75088b450489450883c508ff65049089750883c508e9b9ffffff *9004d90508f4d80508b4d8050802000000250001008b46088945fc8b46048945008b760cc745f8 *24d9050883ed08ff269024d90508e8d80508b0d805080000000025000300441208089c10080824 *12080854d905080400010000000000110007008d45f03b4354730abe241208088b43fcffe08b75 *00c7450034da05088b06ebf0be4412080883c504ff2689f68b750483c510ff268b450c8945008b *450489450c8b4508894504897508e9d2dbffff89f6a4d90508a4d9050858d90508030000002500 *01008975fcc74500d4d9050883ed04e98affffff89f6d4d905089cd9050858d905080300000025 *0003008b46108945f88b46088945fc8b46048945008b760cc745f4fcd9050883ed0cff268d7600 *fcd9050890d9050854d905080000000025000700341208089c1008082c12080834da0508040001 *0000000000110007008d45f03b4354730abe2c1208088b43fcffe08b7500c7450014db05088b06 *ebf0be3412080883c504ff2689f68b750483c510ff268b55088b45048945088955048b450c8945 *0089750ce9f2daffff89f684da050884da050838da050803000000250001008975fcc74500b4da *050883ed04e98affffff89f6b4da05087cda050838da050803000000250003008b460c8945f88b *46088945fc8b46048945008b7610c745f4dcda050883ed0cff268d7600dcda050870da050834da *05080000000025000700446174612f46696e6974654d61702e68733a283737302c30292d283737 *312c3834297c66756e6374696f6e2064656c6574654d61780089f6241108084cdb050800000200 *180001008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee0608 *83ec0c56e815b2000083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f4 *14db0508be2411080883ed10b8a89f0608ebbd909090446174612f46696e6974654d61702e6873 *3a283736322c30292d283736332c3834297c66756e6374696f6e2064656c6574654d696e0089f6 *24110808f4db050800000200180001008d45f03b4354720883c70c3b7b5c760cc7436c03000000 *8b43f8ffe0c747f808ee060883ec0c56e86db1000083c4108d47f8894604c70624ed06088d55f8 *c702a0000708894204c745f4bcdb0508be2411080883ed10b8a89f0608ebbd9090900b00030000 *000000110000008d45ec3b4354730abe541208088b43fcffe0c745f8000000008b45008945f4c7 *45fc10de050883ed0cb8649f0508ebe0be9c0f080883c510ff65009084010000240000000fbe4e *048b550c8b4510880c10ff45108b450489450c8b750883c50ceb3a89f68b46088945008b7604c7 *45fcb4dc050883ed04ff268d7600d4dc0508a0dc050800000000c3000000250000000a00030000 *0001000d0000008d45f43b435473058b43fcffe08975fc8b55008b460489450089d6c745f800dd *050883ed088b06ebe28d7600420000002400000083c50cff650089f6640000002400000083c71c *3b7b5c7615c7436c07000000c74320fe000000b84ccf0608ffe0c747e83c9705088b45088947ec *c747f098a105088b45048947f4c747f8208405088d47f08947fc8d47e889078d47f88945048b75 *10c7450840dd0508b8c8a30608ebbb230000002400000083c7083b7b5c7615c7436c02000000c7 *4320fe000000b84ccf0608ffe08d5608c747fc0cdd05088917c745f8000000008b45088945f489 *55008975088d77fcc745fc50dd050883ed0cb80cdd0508ebcb0200000024000000897500c745fc *b8dd050883ed04e9c2f60000909009000200000000001100000083c70c3b7b5c7611c7436c0300 *0000be581208088b43fcffe0c747f8b4de05088b45048947fc8b45008907c74504000000008d77 *f883c504b8b4de0508ebd89001000100160000008d45f43b435473058b43f8ffe08d45f8c700a0 *0007088970048b4608408945f48b760483ed0cb8b4de0508ebde8d760003000100010001000f00 *000083c7203b7b5c760cc7436c080000008b43fcffe08b56088b45008a141081e2ff00000085d2 *750d8b760483c50483ef208b06ebdec747e478de05088977e88b45008947ecc747f02497050889 *57f4c747f8649705088d47f08947fc8d47e489078d77f883c5048b45008b40eceba490903a2000 *9000000200180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747 *f808ee060883ec0c56e841ae000083c4108d47f8894604c70624ed06088d55f8c702a000070889 *4204c745f424df050883ed0cb87c920508ebc25c12080888df0508090002000000000011000100 *8d45f43b4354730abe6c1208088b43fcffe08b45008945fcc74500f4e1050883ed04b830fd0508 *ebe78d760001000100130000008d45f03b435473058b43f8ffe08d45f8c700a0000708897004c7 *45f4841208088b46048945f083ed10b84c960508ebdb02000000150000008d45f03b4354720883 *c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700a0000708897004c747f8d0df05088b *46088947fc8d47f88945f48b46048945f083ed10b84c960508ebcf9088df050802000000150001 *008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700a000070889 *7004c747f808e005088b46048947fc8b460889078d47f88945f4c745f05c12080883ed10b84c96 *0508ebc98d760088df0508630000002400010083c70c3b7b5c761cc7436c03000000c74504c0e0 *0508c74320fe000001b84ccf0608ffe0c747f860e005088b45108947fc8b450089078d47f88945 *1089750c83c50cb84c960508ebd98d7600c745f8940f08088b750483ed08eba59088df05080300 *00002400010083c70c3b7b5c760cc7436c030000008b43f8ffe0837e047c7521c747f864970508 *c747fc681408088b450489078d47f88945fc8b750883ed04eb10c745fc940f08088b750883ed04 *83ef0cb8c0e00508ebc089f68b46088945008b7604c745fc28e1050883ed04ff268d76007ce105 *080ce1050888df0508020000002500010088df050801000000240001008975048b7500c74500a8 *e10508ff26908975fcc745f870140808c74500b4e1050883ed08e90b0c00008d7600c4e10508c4 *e1050888df050801000000250001005072656c7564652e756e646566696e65640089f600000200 *180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee0608 *83ec0c56e861ab000083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f4 *f4e1050883ed0cb87c920508ebc2a0120808b0120808c0120808d0120808e0120808f012080800 *13080810130808201308083013080840130808501308086013080870130808ac140808b4140808 *d8e205080b000200000000001100ffff8d45f03b4354730abe941208088b43fcffe08b7500c745 *000ce405088b06ebf068e2050810000000ffff000068e2050810000000ffff0000a0e205080100 *0000240001008b46148945008b46108945fc8b460c8945f88b46088945f48b46048945f083ed10 *e97e22000089f6a4e2050802000000150001008d45ec3b435473058b43f8ffe08d45f8c700a000 *07088970048b46048945f48b46088945f0c745ec6014080883ed14b8e40a0608ebd589f6c74500 *40130808e9d8b2ffffc7450050130808e9ccb2ffffc7450060130808e9c0b2ffff80e3050874e3 *050868e3050890e205080100000025000700c74500f0120808e99cb2ffffc7450000130808e990 *b2ffffc7450010130808e984b2ffffc7450020130808e978b2ffffc7450030130808e96cb2ffff *d4e30508c8e30508bce30508b0e30508a4e305087ce205080100000025001f00e4e20508010000 *002400ffff8b06668b40fe25ffff000083f80e7707ff24859c9407088b4604894500b84c960508 *ffe0c74500a0120808ebf08b7604c74500fce20508eb7383c70c3b7b5c760cc7436c030000008b *43f8ebd5c747f830e305088b45048947fc8b460489078d47f8894504c74500b0120808ebafc745 *00c0120808eba6c74500d0120808eb9dc74500e0120808eb948b7604c74500a4e30508eb178b46 *04894500b8c4ea0508eb808b7604c7450000e405088b06e96fffffff90000000000a0000008b45 *00ff60f090900100000002000800ff6500900100000009000800ff6500903c3c6c6f6f703e3e00 *8d760000000200180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0 *c747f808ee060883ec0c56e875a8000083c4108d47f8894604c70624ed06088d55f8c702a00007 *08894204c745f4e8e4050883ed0cb87c920508ebc2657869743a20009000000200180000008d45 *f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e80d *a8000083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f454e5050883ed *0cb87c920508ebc2756e6b6e6f776e20657863657074696f6e0089f600000200180000008d45f4 *3b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e899a7 *000083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f4bce5050883ed0c *b87c920508ebc23c3c646561646c6f636b3e3e008d760000000200180000008d45f43b43547208 *83c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e829a7000083c410 *8d47f8894604c70624ed06088d55f8c702a0000708894204c745f430e6050883ed0cb87c920508 *ebc274687265616420626c6f636b656420696e646566696e6974656c790000000200180000008d *45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e8 *ada6000083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f4a0e6050883 *ed0cb87c920508ebc261726974686d65746963206f766572666c6f770000000200180000008d45 *f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e839 *a6000083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f41ce7050883ed *0cb87c920508ebc261726974686d6574696320756e646572666c6f77008d760000000200180000 *008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c *56e8c1a5000083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f490e705 *0883ed0cb87c920508ebc26c6f7373206f6620707265636973696f6e0089f60000020018000000 *8d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56 *e84da5000083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f408e80508 *83ed0cb87c920508ebc2646976696465206279207a65726f009000000200180000008d45f43b43 *54720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e8dda40000 *83c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f47ce8050883ed0cb87c *920508ebc264656e6f726d616c008d760000000200180000008d45f43b4354720883c70c3b7b5c *760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e871a4000083c4108d47f8894604 *c70624ed06088d55f8c702a0000708894204c745f4ece8050883ed0cb87c920508ebc273746163 *6b206f766572666c6f77009000000200180000008d45f43b4354720883c70c3b7b5c760cc7436c *030000008b43f8ffe0c747f808ee060883ec0c56e801a4000083c4108d47f8894604c70624ed06 *088d55f8c702a0000708894204c745f458e9050883ed0cb87c920508ebc268656170206f766572 *666c6f770089f600000200180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b *43f8ffe0c747f808ee060883ec0c56e891a3000083c4108d47f8894604c70624ed06088d55f8c7 *02a0000708894204c745f4c8e9050883ed0cb87c920508ebc2746872656164206b696c6c656400 *89f600000200180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c7 *47f808ee060883ec0c56e821a3000083c4108d47f8894604c70624ed06088d55f8c702a0000708 *894204c745f438ea050883ed0cb87c920508ebc2c41408080c1508081c150808a8ea05080b0002 *0000000000110007008b7500c74500ecec0508ff268b750483c508ff2602000000150000008d45 *f03b435473058b43f8ffe08d45f8c700a00007088970048b46048945f48b46088945f083ed10b8 *4c960508ebdc9083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8e0ea05088b45048947 *fc89378d47f8894504c74500c4140808b84c960508ebdb9010eb0508d0ea0508a8ea0508010000 *0025000100a8ea050802000000150001008d45f03b435473058b43f8ffe08d45f8c700a0000708 *8970048b46048945f48b7608c745f05ceb050883ed108b06ebdb83c70c3b7b5c760cc7436c0300 *00008b43f8ffe0c747f868eb05088b45048947fc8b460489078d47f8894504c745000c150808b8 *4c960508ebd889f68b750483c508ff2602000000150000008d45f03b435473058b43f8ffe08d45 *f8c700a00007088970048b46088945f48b46048945f083ed10b84c960508ebdc9083c70c3b7b5c *760cc7436c030000008b43f8ffe0c747f8e4eb05088977fc8b450489078d47f8894504c74500c4 *140808b84c960508ebdb9014ec0508d4eb0508a8ea05080100000025000100a8ea050802000000 *150001008d45f03b435473058b43f8ffe08d45f8c700a00007088970048b46088945f48b7604c7 *45f060ec050883ed108b06ebdb83c70c3b7b5c760cc7436c030000008b43f8ffe0c747f86cec05 *088b46048947fc8b450489078d47f8894504c745001c150808b84c960508ebd889f69cec050898 *eb0508a8ea050801000000250007004415080854150808ecec050800000200180003008d45f03b *4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e871a000 *0083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f454150808c745f044 *15080883ed10b84c960508ebbb900b00020000000000110000008d45fc3b4354730abe88130808 *8b43fcffe08b45008945fc8b4504894500c74504a4ed050883ed04b8e8ed0508ebe19000000000 *2400000083c70c3b7b5c7615c7436c03000000c74320fe000001b84ccf0608ffe0c747f8208405 *088977fc8b450089078d77f883c5088b4500ebe4900b00020000000000110000008d45ec3b4354 *730abe8c1308088b43fcffe08b7504c745fc20ef050883ed048b06ebed90c74508940f0808be94 *0f080883c508ff650489f68b4504894510be940f080883c510ff65048d76000200000015000000 *8d45f03b435473058b43f8ffe08d45f8c700a00007088970048b46088945f48b46048945f083ed *10b86ced0508ebdc9083c7303b7b5c760cc7436c0c0000008b43f8ffe0c747d43cee05088b450c *8947d88b45088947dcc747e0f0f106088d47d48947e4c747ec5cf106088947f0c747f864970508 *8b45108947fc8d47ec89078d47e08945108d77f883c5108b4504ebb18d76006cee050820ee0508 *0000000004000000250000008b46048945f48975fc8b46088945008b46048945088b7504c745f8 *e4ee050883ed10e9adb2000090e4ee05080cee05080000000042000000250000000b0002000000 *0000110000008d45fc3b4354730abea01308088b43fcffe08b7500c74500d4f005088b06ebf08b *45043b46040f9cc025ff0000008944240883c5088b3485149705088b542408c1e2028b450029d0 *ff60f090000000002400000085f60f9fc025ff0000008944240883c5048b3485149705088b5424 *08c1e2028b450029d0ff60f0908b45048943088b46048943048b7608c7450480ef050883c504e9 *36f2000089f6a8ef05084cef05080000000021000000250000008b55048b460489450489d6c745 *00dcef0508ff26000000002400000089f0c1e81f8944240883c5048b3485149705088b542408c1 *e2028b450029d0ff60f089f68b46048943088b45048943048b7508c74508f8ef050883c508e9c2 *f1000089f6000000002400000089f0c1e81f8944240883c5048b3485149705088b542408c1e202 *8b450029d0ff60f089f68b460489430c8b46088943088b45048943048b7508c7450844f0050883 *c508e9c0f1000068f005081cf005080000000042000000250000008b46048945008b55048b4608 *89450489d6c745fca0f0050883ed04ff268d7600a0f00508dcef05080000000001000000250000 *0000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747 *f808ee060883ec0c56e8959c000083c4108d47f8894604c70624ed06088d55f8c702a000070889 *4204c745f48c150808c745f07c15080883ed10b8d4130608ebbb90a41308083cf105080b000200 *00000000110001008d45f43b4354730abeb41308088b43fcffe0c745f85c1108088b45008945f4 *c745fcdcf2050883ed0cb82cef0508ebe083c504e938200000897500e93020000088f1050888f1 *050800000000010000002500000083c7083b7b5c760cc7436c020000008b43f8ffe08b46043d00 *0000807513bea4130808c74500a4f1050883ef088b06ebe1f7d8c747fcd0cd050889078d77fcc7 *4500a4f10508b888f10508ebc58d760083c70c3b7b5c760cc7436c030000008b43f8ffe08b5608 *f7dac747f8f0cd05088b46048947fc89178d77f8c74500a4f10508b888f10508ebd98d7600f4f1 *0508a4f105083cf1050801000000250001003cf1050802000000150001008d45f03b435473058b *43f8ffe08d45f8c700a00007088970048b46088945f48b7604c745f044f2050883ed108b06ebdb *83c7183b7b5c760cc7436c060000008b43f8ffe0c747ec50f205088b45048947f08b45088947f4 *c747f864970508c747fc741508088d47ec89078d77f883c50c8b45008b40ecebca80f2050880f1 *05083cf105080200000025000100a4150808dcf2050804000100000000001100010083c7143b7b *5c7611c7436c05000000bebc1308088b43fcffe0c747f038f305088b45008947f4c747fce0f505 *088d47f089078d77fc83c5048b4500ebda8d760001000100130000008d45f43b435473058b43f8 *ffe08d45f8c700a00007088970048b46048945f483ed0cb8b0170608ebe28d7600c74504a41508 *0883c504e9d9a2ffff9083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f864970508c747 *fcbc1508088b450489078d77f883c5108b45008b40ecebdd8d760004000000120000008d45ec3b *4354720883c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700a0000708897004c747f8 *58fe06088b46108947fc8b460c89078d47f88945f48b46088945f08b760483ed14b824a60608eb *c79083c7203b7b5c760cc7436c080000008b43f8ffe0c747e4b4f305088b450c8947e88b460489 *47ec8b46088947f08b45088947f4c747f864970508c747fcc41508088d47e489078d77f883c510 *8b45008b40ecebbe08f4050874f3050800000000030000002500000004000100020000000e0000 *008d45f43b435473058b43fcffe08b46088945f88975fc8b55008b460489450089d6c745f470f4 *050883ed0c8b06ebdc9003000000120000008d45f43b4354720883c70c3b7b5c760cc7436c0300 *00008b43f8ffe08d45f8c700a0000708897004c747f87cf405088b46048947fc8b460889078b46 *0c8945f48d77f883ed0cb87cf40508ebcd8d760004000000120000008d45ec3b4354720883c710 *3b7b5c760cc7436c040000008b43f8ffe08d45f8c700a0000708897004c747f4b4f405088b4604 *8947f88b460c8947fc8b461089078d47f48945f48b46088945f08b760483ed14b824a60608ebc1 *8d760083c7203b7b5c760cc7436c080000008b43f8ffe0c747e40cf505088b45048947e88b4604 *8947ec8b45088947f08b46088947f4c747f864970508c747fcb41508088d47e489078d77f883c5 *0c8b45008b40ecebbe68f5050864f30508dcf205080200000025000100dcf205080b0002000100 *00000c0001008d45fc3b435473058b43fcffe08b55008b460489450089d6c745fcd0f5050883ed *048b06ebe590900300000001000000ff6500900300000009000000ff6500900400020000000000 *11000000be9c0f080883c504ff650090941408088c1408087c140808a414080888f60508000000 *0038f60508000001000000000011000f008d45f03b4354730abec81308088b43fcffe0be941408 *08c745fc2cf7050883ed048b06ebeb8d7600e9d3ffffff8d760083c7083b7b5c760cc7436c0200 *00008b43f8ffe0c747fc500d06088b46088907c745008c1408088d47fc8945fc8975f8c745f47c *14080883ed0cb878020608ebd18d760083c7083b7b5c760cc7436c020000008b43f8ffe0c747fc *500d06088b460c8907c745008c1408088d47fc8945fc8975f8c745f47c14080883ed0cb8780206 *08ebd18d7600d4f6050890f605083cf6050800000000250007000400010000000000110000008b *7500c7450078f70508ff268b760483c504ff65008d76008b46048943048b760883c504e967eb00 *008d760050f7050844f705080000000000000000250000005411080878f7050804000100000000 *00110001008b7500c74500a4f70508ff2678f7050800000000240001008b4604894500e90db4ff *ff9054110808b0f705080b000200000000001100010083c7183b7b5c7611c7436c06000000beec *1308088b43fcffe0c747ec10f805088b45048947f0c747f864f805088d47ec8947fc8b45008907 *8d77f883c5088b4500ebd49001000100130000008d45f43b435473058b43f8ffe08d45f8c700a0 *0007088970048b46048945f483ed0cb8f8170608ebe28d7600b0f7050802000000240001008b46 *04894500e971d4ffff90b0f7050804000100020000000e0001008d45f83b435473058b43fcffe0 *8b46048945fc8b7608c745f848f8050883ed088b06ebe70b00020000000000110000008b7500c7 *4500d8f80508ff2621000000240000008b45043b46047510be900f080883c5088b45008b40f0ff *e0be980f080883c5088b45008b40ecebee01000000240000008b55048b460489450489d6c74500 *a8f80508ff260b00020000000000110000008b7500c7450040f90508ff2621000000240000008b *45043b46040f94c025ff0000008944240883c5088b3485149705088b542408c1e2028b450029d0 *ff60f09001000000240000008b55048b460489450489d6c745000cf90508ff2604000200000000 *00110000008d45fc3b4354730abefc1308088b43fcffe08b7500c74500c0f905088b06ebf02100 *0000240000008b45048945008b4604894504e98b1e00008d760001000000240000008b55048b46 *0489450489d6c7450088f90508ff2600000000240000008b46088945008b7604c745fca4f90508 *83ed04ff269090906e6f207468726561647320746f2072756e3a2020696e66696e697465206c6f *6f70206f7220646561646c6f636b3f009000000200180000008d45f43b4354720883c70c3b7b5c *760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e86193000083c4108d47f8894604 *c70624ed06088d55f8c702a0000708894204c745f4d8f9050883ed0cb87c920508ebc24661696c *3a20009000000200180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ff *e0c747f808ee060883ec0c56e8f992000083c4108d47f8894604c70624ed06088d55f8c702a000 *0708894204c745f468fa050883ed0cb87c920508ebc2040002000000000011000000be9c0f0808 *83c504ff650090941408088c1408087c140808a414080838fb050800000000e8fa050800000100 *0000000011000f008d45f03b4354730abe341408088b43fcffe0be94140808c745fcdcfb050883 *ed048b06ebeb8d7600e9d3ffffff8d760083c7083b7b5c760cc7436c020000008b43f8ffe0c747 *fc500d06088b46088907c745008c1408088d47fc8945fc8975f8c745f47c14080883ed0cb87802 *0608ebd18d760083c7083b7b5c760cc7436c020000008b43f8ffe0c747fc500d06088b460c8907 *c745008c1408088d47fc8945fc8975f8c745f47c14080883ed0cb878020608ebd18d760084fb05 *0840fb0508ecfa05080000000025000700446174612f46696e6974654d61702e68733a28373538 *2c30292d283735392c3530297c66756e6374696f6e2066696e644d696e002411080810fc050800 *000200180001008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808 *ee060883ec0c56e85191000083c4108d47f8894604c70624ed06088d55f8c702a0000708894204 *c745f4dcfb0508be2411080883ed10b8a89f0608ebbd909090446174612f46696e6974654d6170 *2e68733a283736362c30292d283736372c3530297c66756e6374696f6e2066696e644d61780024 *110808b4fc050800000200180001008d45f03b4354720883c70c3b7b5c760cc7436c030000008b *43f8ffe0c747f808ee060883ec0c56e8ad90000083c4108d47f8894604c70624ed06088d55f8c7 *02a0000708894204c745f480fc0508be2411080883ed10b8a89f0608ebbd909090030001000000 *00001100000083c7083b7b5c7611c7436c02000000be5c1408088b43fcffe0c747fc54fe05088b *45008907c74500000000008d77fcb854fe0508ebe189f601000100160000008d45f43b43547305 *8b43f8ffe08d45f8c700a00007088970048b4608408945f48b760483ed0cb854fe0508ebde8d76 *0001000100160000008d45f43b435473058b43f8ffe08d45f8c700a00007088970048b460883c0 *028945f48b760483ed0cb854fe0508ebdc9001000100160000008d45f43b435473058b43f8ffe0 *8d45f8c700a00007088970048b460883c0038945f48b760483ed0cb854fe0508ebdc9001000100 *160000008d45f43b435473058b43f8ffe08d45f8c700a00007088970048b460883c0048945f48b *760483ed0cb854fe0508ebdc9003000100000001000d00000083c7203b7b5c760cc7436c080000 *008b43fcffe08b56048b4500b9000000008a0c10894c240885c97513be940f080883c50483ef20 *8b45008b40f0ebd5837c24087f0f8615010000817c2408df0000000f86d7000000817c2408ef00 *00007673c747e418fe05088977e88b45008947ec8b450083c0038b4e04ba000000008a14088954 *24148b550083c2028b46048a040225ff000000c1e006894424108b5500428b46048a140281e2ff *000000c1e20c8b442408c1e0128d8402000038fc8b5424108d841000e0ffff8b4c24148d440880 *eb4ec747e4e0fd05088977e88b45008947ec8b450083c0028b4e04ba000000008a140889542418 *8b5500428b46048a140281e2ff000000c1e2068b442408c1e00c8d840200e0f1ff8b5424188d44 *1080c747f0249705088947f4eb4ec747e4a8fd05088977e88b45008947ec8b5500428b46048a14 *0281e2ff0000008b442408c1e0068d840280cfffffebc4c747e470fd05088977e88b45008947ec *c747f0249705088b4c2408894ff4c747f8649705088d47f08947fc8d47e489078d77f883c5048b *45008b40ece974feffff90900400010000000000110000008b7500c7450014000608ff26000000 *0024000000837e047c7510be900f080883c5048b45008b40f0ffe0be980f080883c5048b45008b *40ecebee909068466c757368009000000200180000008d45f43b4354720883c70c3b7b5c760cc7 *436c030000008b43f8ffe0c747f808ee060883ec0c56e8258d000083c4108d47f8894604c70624 *ed06088d55f8c702a0000708894204c745f43c00060883ed0cb87c920508ebc2e4150808a40006 *080400020000000000110001008d45e03b4354730abe8c1408088b43fcffe08b7500c74500dc01 *06088b06ebf0be9c0f080883c51cff65009042000000240000008b4504897004be9c0f080883c5 *0cff65008d7600a4000608a6050000240001008b45108945008b45088945fc8b45048945088b45 *0c894504c7450cc01408088b46048945f8c74510ec00060883ed08e9381700008b45103b450c75 *0dbe9c0f080883c51c8b4500ffe08b7518c745000c0106088b06ebf09040010608d8000608a400 *0608a601000025000100a400060802000000240001008b46148945f48b46048945f88b46108945 *fc8b460c8945008b7608c745f07801060883ed10ff2690a400060801000000240001008b46048b *500489450089d6c745fc8401060883ed04ff2690a400060800000000240001008b46048945008b *7618c745fcb801060883ed04ff2690909018160808f401060800000200180001008d45f43b4354 *720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e86d8b000083 *c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f41816080883ed0cb8689c *0508ebc200160808ec150808201608085c02060817000500000000001100070083c7083b7b5c76 *11c7436c02000000bea41408088b43fcffe0c747fc580506088b450c89078d47fc89450cb8041a *0608ebe589f6be0c16080883c514ff650090be0c16080883c514ff650090bef815080883c514ff *650090e99f0100008d7600000000002400000083c7183b7b5c760cc7436c060000008b43f8ffe0 *c747ec380d06088b46048947f0c747f4c01408088b460c8947f88b46108947fc8b461489078d77 *ec83c504b8a0000708ebcc89f601000100130000008d45f43b435473058b43f8ffe08d45f8c700 *a00007088970048b7604c745f4e002060883ed0c8b06ebe189f6440000002400000083c70c3b7b *5c7615c7436c03000000c74320fe000000b84ccf0608ffe0c747f8300306088977fc8b55048d47 *f88942048b750c83c50cb8c8a30608ebde8d76008b550c8b450889450c8955088b4510894504c7 *4510bc1408088b45148945008b451c8945fcc745146403060883ed04e9501900008b45188b5504 *8950048b752083c520e9dc9f0000d8030608a403060864020608c9010000250001006402060804 *000000240001008975f08b46148945f48b46108945f88b460c8945fc8b46048945008b7608c745 *ec0004060883ed14ff2689f66402060803000000240001008b46048b500489450089d6c745fc0c *04060883ed04ff2690d0020608000000006402060800000100040000000b0001008d45d43b4354 *73058b43fcffe08b46108945f48b46088945f88b46048945fc8b760cc745f04404060883ed108b *06ebdb83c7143b7b5c760cc7436c050000008b43f8ffe0c747f0740406088b450c8947f48b4510 *8947f88b45088947fc8b450489078d77f083c5148b4500ebd58d76008b75108b450c89451083c5 *0ce9c39c00008d7600a4040608e4040608e4040608c4020608b8020608ac0206085c0206080400 *0000250007005c02060801000000240007008b46048945f88b46188945fc8975008b7608c745f4 *1c05060883ed0cff2689f65c02060804000100010000000c0007008d45f03b435473058b43fcff *e08b55008b460489450089d6c745fc2805060883ed048b06ebe59090c4140808d4140808341508 *082816080880050608190006000000000011000f008d45fc3b4354720883c7143b7b5c7611c743 *6c05000000beac1408088b43fcffe0c747f0d80706088b45048947f48b450c8947f88b45148947 *fc8b450889078d47f08945148b7510c745fccc0a060883ed048b06ebc989f68b750483c508ff26 *02000000150000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8 *c700a0000708897004c747f864970508c747fce41408088b460889078d47f88945f48b46048945 *f083ed10b84c960508ebc98d760083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f80806 *06088977fc8b450489078d47f8894504c74500d4140808b84c960508ebdb905c060608f8050608 *8405060801000000250001008405060802000000150001008d45f03b435473058b43f8ffe08d45 *f8c700a00007088970048b46088945f48b7604c745f0a806060883ed108b06ebdb840506080300 *0000120005008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700 *a0000708897004c747f8b40606088b46088947fc8b460c89078d47f88945f48b46048945f083ed *10b8fc1f0608ebca8b750483c508ff268005060801000100130001008d45f03b435473058b43f8 *ffe08d45f8c700a00007088970048b46048945f4c745f0c414080883ed10b84c960508ebdb83c7 *0c3b7b5c760cc7436c030000008b43f8ffe0c747f8540706088b45048947fc8d47f88945048975 *00b84c960508ebe18d760084070608400706088005060801000000250001008005060804000000 *12000b008d45f03b4354720883c7103b7b5c760cc7436c040000008b43f8ffe08d45f8c700a000 *0708897004c747f4f00606088b46048947f88b46088947fc8b460c89078d47f48945f48b7610c7 *45f0cc07060883ed108b06ebc3908b750483c508ff268005060801000100130001008d45f03b43 *5473058b43f8ffe08d45f8c700a00007088970048b46048945f4c745f0c414080883ed10b84c96 *0508ebdb8005060802000000150001008d45f03b4354720883c7183b7b5c760cc7436c06000000 *8b43f8ffe08d45f8c700a0000708897004c747ec440806088b46048947f0c747f864970508c747 *fc2c1508088d47ec89078d47f88945f48b46088945f083ed10b84c960508ebbc89f683c70c3b7b *5c760cc7436c030000008b43f8ffe0c747f8800806088b45048947fc8b460489078d47f8894504 *c7450034150808b84c960508ebd889f68005060801000100130001008d45f03b435473058b43f8 *ffe08d45f8c700a00007088970048b46048945f4c745f0c414080883ed10b84c960508ebdb8005 *060802000000150001008d45f03b4354720883c7183b7b5c760cc7436c060000008b43f8ffe08d *45f8c700a0000708897004c747ec280906088b46048947f0c747f864970508c747fc2c1508088d *47ec89078d47f88945f48b46088945f083ed10b84c960508ebbc89f683c70c3b7b5c760cc7436c *030000008b43f8ffe0c747f8640906088b45048947fc8b460489078d47f8894504c74500341508 *08b84c960508ebd889f6c4090608e00806088005060801000000250005008b7604c74500140a06 *08ff26140a0608300806088005060801000000250005008b7504c74514340a060883c514ff2690 *8005060801000100130001008d45f03b435473058b43f8ffe08d45f8c700a00007088970048b46 *048945f4c745f0c414080883ed10b84c960508ebdb83c70c3b7b5c760cc7436c030000008b43f8 *ffe0c747f8500a06088b45188947fc8d47f88945188b460489451483c514b84c960508ebdb9080 *0a0608340a060880050608c603000025000500ec140808fc140808cc0a06081600030000000000 *110003008d45fc3b4354730abeb41408088b43fcffe08b7504c745fc080d060883ed048b06ebed *90c74508ec14080883c508e9358bffff90010000002400000083c70c3b7b5c760cc7436c030000 *008b43f8ffe0c747f864970508c747fc941508088b450489078d47f88945048b4604894500c745 *fc0b00000083ed04b8e0160608ebce02000000150000008d45ec3b435473058b43f8ffe08d45f8 *c700a00007088970048b46088945f48b7604c745f0200b060883ed108b06ebdbd00a0608020000 *00150001008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700a0 *000708897004c747f86c0b06088b46048947fc8b460889078d47f88945f4c745f0fc14080883ed *10b84c960508ebc98d760001000000240000008b4604894500c745fc0b00000083ed04e9c70a00 *008d760002000000150000008d45ec3b435473058b43f8ffe08d45f8c700a00007088970048b46 *088945f48b7604c745f0040c060883ed108b06ebdbd00a0608020000002400010083c7183b7b5c *760cc7436c060000008b43f8ffe0837e040a7f2dc747ec240c06088b45048947f08b45088947f4 *8d47ec894508c74504fc14080883c50483ef0cb84c960508ebcbc747eca80b06088b45048947f0 *8b45088947f4c747f864970508c747fc9c1508088d47ec89078d77f883c50c8b45008b40eceb97 *908b46048945088b7504c74504600c060883c504ff268d7600dc0c0608080b0608cc0a06084300 *000025000300000000000a0000008b4500ff60f09090000000000a0001008b4500ff60ec89f6bc *140808c01408080200030001000000ff6500900200030009000000ff6500900100000002000000 *ff6500900100000009000000ff6500903a20009000000200180000008d45f43b4354720883c70c *3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e80580000083c4108d47f8 *894604c70624ed06088d55f8c702a0000708894204c745f4600d060883ed0cb87c920508ebc220 *28009000000200180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0 *c747f808ee060883ec0c56e8a17f000083c4108d47f8894604c70624ed06088d55f8c702a00007 *08894204c745f4c40d060883ed0cb87c920508ebc2457869745375636365737300000002001800 *00008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec *0c56e8357f000083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f4280e *060883ed0cb87c920508ebc2457869744661696c75726520008d760000000200180000008d45f4 *3b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e8c57e *000083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f4940e060883ed0c *b87c920508ebc2617272617920696e646578206f7574206f662072616e6765008d760000000200 *180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee0608 *83ec0c56e8497e000083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f4 *040f060883ed0cb87c920508ebc2756e646566696e656420617272617920656c656d656e740000 *000200180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808 *ee060883ec0c56e8d17d000083c4108d47f8894604c70624ed06088d55f8c702a0000708894204 *c745f4800f060883ed0cb87c920508ebc27b68616e646c653a200089f600000200180000008d45 *f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e865 *7d000083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f4f80f060883ed *0cb87c920508ebc25072656c7564652e008d760000000200180000008d45f43b4354720883c70c *3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e8f97c000083c4108d47f8 *894604c70624ed06088d55f8c702a0000708894204c745f46410060883ed0cb87c920508ebc264 *15080834160808d010060800000200180003008d45f03b4354720883c70c3b7b5c760cc7436c03 *0000008b43f8ffe0c747f808ee060883ec0c56e88d7c000083c4108d47f8894604c70624ed0608 *8d55f8c702a0000708894204c745f464150808c745f03416080883ed10b84c960508ebbb903a20 *656d707479206c697374008d760000000200180000008d45f43b4354720883c70c3b7b5c760cc7 *436c030000008b43f8ffe0c747f808ee060883ec0c56e8157c000083c4108d47f8894604c70624 *ed06088d55f8c702a0000708894204c745f44411060883ed0cb87c920508ebc20b000200000000 *00110000008d45f43b4354730abe841508088b43fcffe0c745f8441608088b45008945f4c745fc *c813060883ed0cb82cef0508ebe083c7143b7b5c760cc7436c050000008b43f8ffe08b460483c0 *30c747f0249705088947f4c747f8649705088d47f08947fc8b450889078d47f889450883c504b8 *c0110608ebcc89f6020000002400000083c7143b7b5c760ec7436c05000000b838c90608ffe08d *4630c747f0249705088947f4c747f8649705088d47f08947fc8b450889078d47f889450883c504 *b8c0110608ebcf8d76008b46048943048b7608c7450040120608e90fd000008d760088120608f0 *11060800000000020000002500000001000000240000008975048b7500c74500b4120608ff2690 *c74500441608088b45048945fcc74504bc12060883ed04e9a00e000083c7143b7b5c760cc7436c *050000008b43f8ffe08b460483c030c747f0249705088947f4c747f8649705088d47f08947fc8b *450489078d77f883c5088b45008b40ecebce010000002400000083c7143b7b5c760ec7436c0500 *0000b838c90608ffe08d4630c747f0249705088947f4c747f8649705088d47f08947fc8b450489 *078d77f883c5088b45008b40ecebd1908b46048943048b7608c7450034130608e91fcf00008d76 *0078130608e81206080000000001000000250000008b7504c74504a413060883c504ff2690a413 *0608cc1206080000000002000000250000000b00020000000000110000008d45f03b4354730abe *881508088b43fcffe08b7500c74500701606088b06ebf0c40100002400000083c7183b7b5c7615 *c7436c06000000c74320ff000001b84ccf0608ffe0c747ecf0cd05088b45008947f08977f4c747 *f8f0cd05088b45088947fc8b451489078d47ec8945148d47f889451083c510b8d4130608ebc68d *7600620000002400000089750c8b7508c745fcfc13060883ed04e933c300008d760083c7083b7b *5c760cc7436c020000008b43f8ffe08b450489c1034e04334604f7d089ca33550485c27817c747 *fcd0cd0508890f8d77fc83c5088b45008b40f0ebd18b46048945008b7504c745fc5c14060883ed *0483ef08b8a4d70608ebb489f6420000002400000083c70c3b7b5c7615c7436c03000000c74320 *ff000001b84ccf0608ffe0c747f8f0cd05088b45008947fc89378b450889450c8d47f889450883 *c508b8d4130608ebd989f68975008b7504c745fcdc14060883ed04e96fc200008d760020150608 *741406080000000021000000250000008b55048b460489450489d6c745004c150608ff26010000 *002400000083c70c3b7b5c7615c7436c03000000c74320ff000001b84ccf0608ffe0c747f8f0cd *05088b45008947fc89378b45088945048d47f889450883c504b8d4130608ebd989f68b7604c745 *086815060883c508e9e6c1000089f6000000002400000083c70c3b7b5c7615c7436c03000000c7 *4320ff000001b84ccf0608ffe0c747f8f0cd05088b45008947fc89378d77f883c5088b45008b40 *ecebe189f68b460489430c8b46088943088b45048943048b7508c7450cc815060883c50ce9e8c3 *000004160608ac1506080000000043000000250000008b46048945fc8b46088945008b45048975 *0489c6c745f83c16060883ed08ff263c1606084c1506080000000001000000250000005b5d0090 *00000200180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8 *08ee060883ec0c56e8f576000083c4108d47f8894604c70624ed06088d55f8c702a00007088942 *04c745f47016060883ed0cb87c920508ebc210000300000000001100000083c7183b7b5c7611c7 *436c06000000becc1508088b43fcffe0837d0400793a837d00067e34c747ec501706088b450889 *47f08b45048947f4c747f864970508c747fc9c1508088d47ec89078d77f883c50c8b45008b40ec *ebbe83c50483ef18b81c240608ebb189f601000100160000008d45f03b4354720883c70c3b7b5c *760cc7436c030000008b43f8ffe08d45f8c700a0000708897004c747f864970508c747fc941508 *088b460489078d47f88945f48b46088945f083ed10b81c240608ebc99090900400010000000000 *110000008d45fc3b4354730abed01508088b43fcffe08b7500c74500d81706088b06ebf0000000 *0024000000c74500601408088b760483ed04e9ce89000090900400010000000000110000008b75 *00c745000c180608ff2600000000240000008b4604894500e9790d000090080003000000000011 *0000008b55008b4504c745044c18060883c50483ec085052e8c231000083c410ff650000000000 *24000000be9c0f080883c504ff65009064160808e415080808190608a603000058180608000007 *0000000000110003008d45e43b4354720883c7183b7b5c7611c7436c06000000bee41508088b43 *fcffe08b450c89c22b55087531c747ec380d06088b45048947f08b45148947f4c747f800000000 *c747fc000000008b451089078d77ec83c5188b4500ebc38955f48b45088945f08b45048945ec8b *45008945e8c745e4641608088955fcc745f88c19060883ed1c83ef18b854270608eb9090e96bff *ffff8d76005c180608670700002400010083c7183b7b5c760cc7436c060000008b43f8ffe08b46 *043b45047c31c747ec380d06088b450c8947f08b451c8947f4c747f800000000c747fc00000000 *8b451889078d77ec83c5208b4500ebc58b451003460489451083c50883ef18b878180608ebaf90 *5c1806086707000024000100c745001c190608ff26909090ec150808c019060800000000981906 *08000001000000000011000100beec150808e946ad000089f6e9efffffff90909000160808f019 *060800000000c8190608000001000000000011000100be00160808e916ad000089f6e9efffffff *90909017000500000000001100000083c7143b7b5c7611c7436c05000000be141608088b43fcff *e0c747f0241c06088b45088947f48b450c8947f88b45008947fc8b450489078d77f083c510b828 *c20608ebd3e9d70100008d760003000000120000008d45ec3b435473058b43f8ffe08d45f8c700 *a00007088970048b460c8945f48b46088945f08b46048945ec83ed14b8202c0608ebd68d760083 *000000240000008b06668378fe09754683c7183b7b5c760cc7436c060000008b43f8ffe0c747ec *581a06088b46048947f08b45088947f48b45048947f8c747fc489d05088d47ec89078d77fc83c5 *10b804c70608ebcc89750c83c50cb8f89b0508ebbf03000000240000008b750cc74500981a0608 *ff2604000200040000000b0000008d45f43b435473058b43fcffe08b460c8945fc8b46108945f8 *8b46088943048b7604c745f4fc1a060883ed0cb85ce60608ebd89042000000240000008b750483 *c50cff65008d7600c40000002400000089750c8b45108943048b7504c74508501b060883c508e9 *ddca000090040000002400000083c7203b7b5c7615c7436c08000000c74320fe000000b84ccf06 *08ffe0c747e4141b06088b45048947e88977ec8b450c8947f08b45088947f4c747f858fe06088b *45108947fc89378975108d47e48943048d77f8c74500641b0608b8a4c40608ebb989f603000000 *240000008b46048945008b7604c745fc881b060883ed04e9f8c80000481a060800000000000000 *0000000100040000000b0000008d45ec3b435473058b43fcffe08b46108945f48b460c8945f88b *46088945fc8b7604c745f0f41b060883ed108b06ebdbd0160808e4150808e8160808ac1c060800 *000000541c06080000010000000000110007008d45ec3b4354730abe181608088b43fcffe0c745 *f8c0140808c745f484160808c745fcf81c060883ed0cb8802d0608ebdf8d7600e9c7ffffff8d76 *00581c060800000000240003008b46088945008b46048945fcc745f830160808c745f4e8160808 *c745f08416080883ed10e9c30c00008d7600581c06080000000024000300c74500c01c0608ff26 *909090f81608087416080808170808941d060886030000041d0608000007000000000011000700 *8d45f43b4354720883c7183b7b5c7611c7436c06000000be201608088b43fcffe08b45083b450c *74118b7500c74500701f060883ef188b06ebe5c747ec380d06088b45048947f08b45148947f48b *45088947f88b450c8947fc8b451089078d77ec83c5188b4500ebb68d7600e98fffffff8d7600eb *7a89f60000000024000000c744240400000000c704240000000083c70c3b7b5c7615c7436c0300 *0000c74320ff000200b84ccf0608ffe0c747f8489f05088d57fc8b4d00890c248b450489442404 *890a8b4c2404894a048d77f883c50c8b4500ebd3909c1d06080000000000000000000001000000 *04000b000000c744240400000000c70424000000008d45ec3b435473058b43fcffe08b46108945 *f88d55f08d46088b08890c248b400489442404890a8b4c2404894a048b46048945ecc745fca81d *060883ed14b840260608ebc6c50100002400000083c7183b7b5c7615c7436c06000000c74320fe *000000b84ccf0608ffe0c747ec380d06088b45048947f08b45148947f4c747f800000000c747fc *000000008b451089078d77ec83c5188b4500ebcd89f6081d0608e80e000024000300c744240400 *000000c704240000000083c7143b7b5c760cc7436c050000008b43f8ffe0c747f0181e06088b45 *188947f48d57f88d45048b08890c248b400489442404890a8b4c2404894a048b460489078d47f0 *894508c7450474160808c7450018170808c7450c741e0608b89c260608ebaf89f6041d0608c501 *000024000700bef8160808c745fcd01e060883ed04ff268d7600041d0608c5010000240007008b *55082b550c8b460489450cc74500501f060883ec0c52e86e29000083c4108d4df8890189510489 *cdff65082017080830170808401708085017080860170808701708088017080890170808a01708 *08b0170808c0170808d0170808e0170808f0170808001808081018080820180808301808084018 *080850180808082006080b000200000000001100ffff8b7500c7450048200608ff269c1f060814 *000000ffff0f00897500e93076ffff14200608142006080000000001000000250000009c1f0608 *14000000ffff0f0030200608010000002400ffff8b06668b40fe25ffff000083f8120f879b0000 *00ff2485d8940708be40180808c74500302006088b06ffe0be30180808ebeebe20180808ebe7be *10180808ebe0be00180808ebd9bef0170808ebd2bee0170808ebcbbed0170808ebc4bec0170808 *ebbdbeb0170808ebb6bea0170808ebafbe90170808eba8be80170808eba1be70170808eb9abe60 *170808eb93be50170808eb8cbe40170808eb85be30170808e97bffffffbe20170808e971ffffff *be50180808e967ffffff909090000000000a0003008b4500ff60e490907461696c008d76000000 *0200180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee *060883ec0c56e84d6c000083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c7 *45f41421060883ed0cb87c920508ebc20b00020000000000110000008d45f83b4354730abe4c16 *08088b43fcffe08b7500c74500102406088b06ebf083c7103b7b5c760cc7436c040000008b43f8 *ffe08b550489d0c1fa1ff77e04894424088b550489d0c1fa1ff77e04c747f4d0cd05088957f8c7 *47fcd0cd05088b44240889078d47f48945048d77fc83c5048b4504ebbc89f64200000024000000 *83c70c3b7b5c7615c7436c03000000c74320ff000001b84ccf0608ffe0c747f8f0cd05088b4500 *8947fc89378b450889450c8d47f889450883c508b888210608ebd989f68975008b7504c745fc08 *22060883ed04e943b500008d76004c220608a82106080000000021000000250000000100000024 *00000083c70c3b7b5c7615c7436c03000000c74320ff000001b84ccf0608ffe0c747f8f0cd0508 *8b45008947fc89378d47f889450483c504b888210608ebdf8b46043d000000807513be00000080 *c7450080220608b8a4d70608ffe08b7504894504c74500782206088b06ebed89f6010000002400 *000083c70c3b7b5c7615c7436c03000000c74320ff000001b84ccf0608ffe0c747f8f0cd05088b *45008947fc89378b45088945048d47f889450883c504b888210608ebd989f68b7604c74508f422 *060883c508e95ab4000089f6000000002400000083c7183b7b5c7615c7436c06000000c74320ff *000102b84ccf0608ffe0c747ecf0cd05088b45088947f08b45008947f4c747f8f0cd05088b4504 *8947fc89378d47ec89450c8d77f883c50c8b4504ebcb8b460489430c8b46088943088b45048943 *048b7508c7450c5423060883c50ce980bc0000a423060838230608000000004300000025000000 *8b46048945fc8b46088945008b450489750489c6c745f8dc23060883ed08ff26dc230608bc2206 *0800000000010000002500000009000200000000001100000083c7183b7b5c7611c7436c060000 *00be501608088b43fcffe0837d0000780a83ef18b8303c0608ebee8b450089c2f7da85d27809c7 *47ec54250608eb07c747ece82406088b45048947f08957f4c747f864970508c747fc701808088d *47ec89078d77f883c5088b45008b40eceba989f601000100160000008d45f03b435473058b43f8 *ffe08d45f8c700a00007088970048b4e08ba6766666689c8f7eac1fa0289c8c1f81f29c28d1492 *01d229ca8b46048945f48955f083ed10b8303c0608ebc28d760001000100160000008d45f03b43 *54720883c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700a0000708897004c747f894 *2406088b46048947fc8b460889078b4e08ba6766666689c8f7eac1fa02c1f91f29d18d47f88945 *f4894df083ed10b8303c0608ebb98d760001000100160000008d45f03b435473058b43f8ffe08d *45f8c700a00007088970048b46048945f48b46088945f083ed10b8303c0608ebdc900300010000 *000000110000008d45fc3b4354720883c7083b7b5c7611c7436c02000000be541608088b43fcff *e08b450085c0791389c6c74500ec25060883ef08b804d80608ebe4c747fcd0cd050889078d77fc *83c5048b45008b40f0ebcd89f6000000002400000083c70c3b7b5c7615c7436c03000000c74320 *ff000001b84ccf0608ffe0c747f8f0cd05088b45008947fc89378d77f883c5088b45008b40eceb *e1909088260608e401000000000000000004000000000011000000c744240400000000c7042400 *0000008b55008d45048b08890c248b4004894424048b450c83c51050ff742408ff74240852e85a *74feff83c4108d4df8890189510489cdff650889f6e9b3ffffff90909016000400000000001100 *00008d45f03b4354730abe5c1608088b43fcffe08b7508c745fc2427060883ed08b8e8970608eb *ea89f68b750483c514ff65008d7600030000002400000083fe04750a83c504b89c260608ffe08b *450889450c83c50cb8343d0608ebee90c74504d826060883c504e90d16000090f8260608c42606 *0800000000040000002500000003000000240000008975f88975008b7504c745fc1c27060883ed *0ce97c7a0000bc270608450300000000000000000600000000001100000083c71c3b7b5c7611c7 *436c07000000be601608088b43fcffe0c747e8f42706088b45048947ecc747f0702806088b4508 *8947f48b45048947f88b450c8947fc8b451089078d47e88945108d47f089450c8b4500894508c7 *45048c18080883c504b8143e0608ebb090e993ffffff8d7600eb2e89f60000000024000000be9c *0f080883c504ff650090c4270608000000000000000000000100000001000d0000008d45fc3b43 *5473058b43fcffe08b7604c745fcd027060883ed04b860e90608ebea8d7600eb5689f600000000 *2400000083c7083b7b5c7615c7436c02000000c74320ff000000b84ccf0608ffe0c747fc309f05 *0889378d77fc83c5048b4500ebea8d760018280608000000000000000000000100010003000b00 *00008d45fc3b435473058b43fcffe08b4608894424088b460483c0088b4e0c8b5610c745fc2428 *060883ed0483ec045201c850ff742414e8266ffeff83c41089c68b4500ebc7666c757368577269 *7465427566666572008d760000000200180000008d45f43b4354720883c70c3b7b5c760cc7436c *030000008b43f8ffe0c747f808ee060883ec0c56e8a164000083c4108d47f8894604c70624ed06 *088d55f8c702a0000708894204c745f4b428060883ed0cb87c920508ebc2666c75736852656164 *4275666665720000000200180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b *43f8ffe0c747f808ee060883ec0c56e83164000083c4108d47f8894604c70624ed06088d55f8c7 *02a0000708894204c745f42829060883ed0cb87c920508ebc2e415080898290608180006000000 *0000110001008d45f83b4354730abe8c1608088b43fcffe0be68180808c745fc002c060883ed04 *b8bcd50608ebe8040000002400000083c72c3b7b5c760cc7436c0b0000008b43f8ffe0c747d854 *a305088b45048947dcc747e0403b06088b45108947e48b450c8947e8c747ec900f0808c747f090 *0f08088b45088947f48977f88d47d88947fcc707280f08088d77e083c514b8a0000708ebae0400 *0000240000008b451089751089c6c74500dc290608ff268d760005000000120000008d45e43b43 *5473058b43f8ffe08d45f8c700a00007088970048b46148945e88b46108945ec8b460c8945f08b *46088945f48b7604c745e4482a060883ed1c8b06ebc989f6eb2e89f69829060800000000240001 *00897500e9bc150000a82a0608000000009829060800000100010000000c0001008d45fc3b4354 *73058b43fcffe08b7604c745fcb82a060883ed04b804e50608ebea8d7600c40000002400000083 *c70c3b7b5c7615c7436c03000000c74320fe000000b84ccf0608ffe0c747f8583b06088b450489 *47fc8b451089078d77f883c5148b4500ebe189f698290608c40000002400010083c7083b7b5c76 *0ec7436c02000000b8dcc70608ffe0c747fcd82a06088b451089078d47fc894308c743049c0f08 *088b7510c74500042b0608b8e0d60608ebd498290608060000002400010083c7183b7b5c7615c7 *436c06000000c74320fe000000b84ccf0608ffe0c747ec642a06088b45088947f08b45148947f4 *8b45108947f88b45188947fc8b450489078975188d47ec894304c745084c2b060883c508b85ce6 *0608ebc090982906080500000024000100897500c745fc982b060883ed04e9a6b8000090901600 *030000000000110000008d45f43b4354730abecc1608088b43fcffe08b7500c745009c2c06088b *06ebf0000000002400000083c7183b7b5c7615c7436c06000000c74320fe000004b84ccf0608ff *e0c747ecc89c05088977f08b45008947f48b45048947f88b45088947fc8b450c89078d77ec83c5 *148b4500ebd28d760002000000240000008b45048945008b45088945048b46148945fc8b461089 *45f88b46088945f4c74508482c060883ed0ce96b12000090909000000200180000008d45f43b43 *54720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e89d600000 *83c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f4382d060883ed0cbe00 *2000008b4500ebbf90000000002400000083c7083b7b5c7615c7436c02000000c74320ff000000 *b84ccf0608ffe0c747fc3c97050889378d77fc83c504b8a0000708ebe890d01608086c2d06080b *00030000000000110001008d45f83b4354730abee01608088b43fcffe0bed0160808c745fce82e *060883ed048b06ebeb8d760000000200140000008d45f83b435473058b43f8ffe08d45f8c700a0 *000708897004837e0400750ebe9018080889c5b8103b0608ebdebe6418080883ed08a18c000708 *ebcf010000002400000083c7203b7b5c7615c7436c08000000c74320ff000000b84ccf0608ffe0 *c747e4b02d06088977e8c747f054a305088b45048947f4c747f8208405088d47f08947fc8d47e4 *89078d77f883c5088b4500ebca8d760001000000240000008b46048945fcc74500f42d060883ed *04e97f0e00008d760042000000240000008975088b7504c74504502e060883c504ff2689f62300 *00002400000083c7183b7b5c7615c7436c06000000c74320fe000000b84ccf0608ffe0c747ec38 *0d06088977f08b450c8947f4c747f800000000c747fc000000008b450489078d77ecc74504702e *060883c504b8bcd50608ebc702000000240000008b46048945008b7604c745fc8c2e060883ed04 *e994a500003c7374646f75743e008d760000000200180000008d45f43b4354720883c70c3b7b5c *760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e85d5e000083c4108d47f8894604 *c70624ed06088d55f8c702a0000708894204c745f4002f060883ed0cb87c920508ebc200000200 *180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee0608 *83ec0c56e8fd5d000083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f4 *d82f060883ed0cbe010000008b4500ebbf90000000002400000083c7083b7b5c7615c7436c0200 *0000c74320ff000000b84ccf0608ffe0c747fc309f050889378d77fc83c504b8a0000708ebe890 *00000200180000008d45ec3b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8 *08ee060883ec0c56e85d5d00008d47f8894604c70624ed06088d55f8c702a0000708894204c745 *f4ec30060883ed0cc7042401000000e88c18000083c4108d4df8890189510489cd8b4508ebae00 *00000024000000c744240400000000c704240000000083c70c3b7b5c7615c7436c03000000c743 *20ff000200b84ccf0608ffe0c747f8489f05088d57fc8b4d00890c248b450489442404890a8b4c *2404894a048d77f883c50cb8a0000708ebd18d76000000000024000000c744240400000000c704 *24000000008b55008914248b450489442404c745088830060883c50883ec08ff74240cff74240c *e87e16000083c4108d4df8890189510489cdff6508909008170808343106080400010000000000 *110001008d45f43b4354730abe181708088b43fcffe08b7500c74500dc3106088b06ebf0620000 *0024000000c744240c00000000c744240800000000c744241400000000c7442410000000008d55 *fc8d45048b08894c24108b400489442414890a8b4c2414894a048d55048d46048b08894c24088b *40048944240c890a8b4c240c894a0483ed04e9b8090000343106080000000024000100c7442404 *00000000c70424000000008d55fc8d46048b08890c248b400489442404890a8b4c2404894a04be *08170808c745f87031060883ed08ff2690616c7265616479206578697374730090000002001800 *00008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec *0c56e8415b000083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f41832 *060883ed0cb87c920508ebc2646f6573206e6f74206578697374009000000200180000008d45f4 *3b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e8d15a *000083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f48832060883ed0c *b87c920508ebc27265736f7572636520627573790089f600000200180000008d45f43b43547208 *83c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e8615a000083c410 *8d47f8894604c70624ed06088d55f8c702a0000708894204c745f4f832060883ed0cb87c920508 *ebc27265736f7572636520657868617573746564009000000200180000008d45f43b4354720883 *c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e8ed59000083c4108d *47f8894604c70624ed06088d55f8c702a0000708894204c745f46833060883ed0cb87c920508eb *c2656e64206f662066696c650000000200180000008d45f43b4354720883c70c3b7b5c760cc743 *6c030000008b43f8ffe0c747f808ee060883ec0c56e88159000083c4108d47f8894604c70624ed *06088d55f8c702a0000708894204c745f4dc33060883ed0cb87c920508ebc2696c6c6567616c20 *6f7065726174696f6e0089f600000200180000008d45f43b4354720883c70c3b7b5c760cc7436c *030000008b43f8ffe0c747f808ee060883ec0c56e80d59000083c4108d47f8894604c70624ed06 *088d55f8c702a0000708894204c745f44834060883ed0cb87c920508ebc27065726d697373696f *6e2064656e6965640089f600000200180000008d45f43b4354720883c70c3b7b5c760cc7436c03 *0000008b43f8ffe0c747f808ee060883ec0c56e89958000083c4108d47f8894604c70624ed0608 *8d55f8c702a0000708894204c745f4bc34060883ed0cb87c920508ebc275736572206572726f72 *009000000200180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c7 *47f808ee060883ec0c56e82d58000083c4108d47f8894604c70624ed06088d55f8c702a0000708 *894204c745f43035060883ed0cb87c920508ebc2756e7361746973696669656420636f6e737472 *61696e7473008d760000000200180000008d45f43b4354720883c70c3b7b5c760cc7436c030000 *008b43f8ffe0c747f808ee060883ec0c56e8b157000083c4108d47f8894604c70624ed06088d55 *f8c702a0000708894204c745f49c35060883ed0cb87c920508ebc273797374656d206572726f72 *008d760000000200180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ff *e0c747f808ee060883ec0c56e84157000083c4108d47f8894604c70624ed06088d55f8c702a000 *0708894204c745f41836060883ed0cb87c920508ebc270726f746f636f6c206572726f72009000 *000200180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808 *ee060883ec0c56e8d156000083c4108d47f8894604c70624ed06088d55f8c702a0000708894204 *c745f48836060883ed0cb87c920508ebc26661696c6564009000000200180000008d45f43b4354 *720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e86956000083 *c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f4f836060883ed0cb87c92 *0508ebc2696e76616c696420617267756d656e74008d760000000200180000008d45f43b435472 *0883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e8f555000083c4 *108d47f8894604c70624ed06088d55f8c702a0000708894204c745f46037060883ed0cb87c9205 *08ebc2696e617070726f7072696174652074797065009000000200180000008d45f43b43547208 *83c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e88155000083c410 *8d47f8894604c70624ed06088d55f8c702a0000708894204c745f4d437060883ed0cb87c920508 *ebc26861726477617265206661756c74009000000200180000008d45f43b4354720883c70c3b7b *5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e81155000083c4108d47f88946 *04c70624ed06088d55f8c702a0000708894204c745f44838060883ed0cb87c920508ebc2756e73 *7570706f72746564206f7065726174696f6e0089f600000200180000008d45f43b4354720883c7 *0c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e89954000083c4108d47 *f8894604c70624ed06088d55f8c702a0000708894204c745f4b838060883ed0cb87c920508ebc2 *74696d656f75740000000200180000008d45f43b4354720883c70c3b7b5c760cc7436c03000000 *8b43f8ffe0c747f808ee060883ec0c56e83154000083c4108d47f8894604c70624ed06088d55f8 *c702a0000708894204c745f43039060883ed0cb87c920508ebc27265736f757263652076616e69 *736865640089f600000200180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b *43f8ffe0c747f808ee060883ec0c56e8bd53000083c4108d47f8894604c70624ed06088d55f8c7 *02a0000708894204c745f49839060883ed0cb87c920508ebc2696e746572727570746564000000 *0200180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee *060883ec0c56e85153000083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c7 *45f40c3a060883ed0cb87c920508ebc2756e6b6e6f776e20494f206572726f72008d7600000002 *00180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee06 *0883ec0c56e8dd52000083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745 *f4783a060883ed0cb87c920508ebc2000000000a000500ff650090000000000a0001008b4500ff *60ec909001000000020002008b4500ff60e889f601000000090002008b4500ff60e89090000000 *000a0000008b4500ff60f090900800000001000000ff6500900800000009000000ff6500900200 *0000040000008b4500ff60f089f602000000090000008b4500ff60f09090f03b0608e401000000 *000000000002000000000011000000c744240c00000000c744240800000000c744241400000000 *c7442410000000008b5500895424108b4504894424148d45088b10895424088b40048944240cc7 *450c003c060883c50cff74240cff74240cff74241cff74241ce8b70a000083c41089c6ff65008d *7600e993ffffff8d7600000000002400000085f67510be900f080883c5048b45008b40f0ffe0be *980f080883c5048b45008b40ecebee09000200000000001100000083c7143b7b5c7611c7436c05 *000000be781808088b43fcffe0837d00097e568b5500b80a00000089c189d0c1fa1ff7f983c230 *c747f0249705088957f4c747f8649705088d47f08947fc8b450489078b4d00ba6766666689c8f7 *eac1fa0289c8c1f81f29c28d47f8894504895500b8303c0608eba28b450083c030c747f0249705 *088947f4c747f8649705088d47f08947fc8b450489078d77f883c5088b45008b40ece96fffffff *0300020000000000110000008b450083c50483ec0c50e8bd5ffeff83c41089c6ff650090203d06 *080000000000000000000001000000000011000000e8075cfeff8b30ff650089f6e9efffffff90 *90900400020000000000110000008d45fc3b4354730abe841808088b43fcffe0c745fcc03d0608 *83ed04b8143d0608ebed9001000100160000008d45e83b4354720883c7083b7b5c760cc7436c02 *0000008b43f8ffe08d45f8c700a0000708897004c747fc309f05088b46088907c745f4280f0808 *c745f0280f08088d47fc8945ec8b46048945e883ed18b8a8420608ebc2010000002400000083c7 *143b7b5c7615c7436c05000000c74320ff000000b84ccf0608ffe0c747f0603d06088b45048947 *f48977f8c747fc489d05088d47f089078d77fc83c508b804c70608ebd590901700050000000000 *110000008d45f03b4354730abe881808088b43fcffe08b7508c745fcc83e060883ed08b8e89706 *08ebea89f68b750483c518ff65008d7600040000002400000083c504e9bcffffff040000002400 *000083fe04740783fe0b740ceb1e83c504b8143e0608ffe08b7510c74500503e060883ed04b8e8 *970608ebea8b450889451083c510b8343d0608ebda89f6c74504603e060883c504e969feffff90 *9c3e06083c3e060800000000050000002500000004000000240000008975f88975008b7504c745 *fcc03e060883ed0ce9d86200000400010000000000110000008b7500c74500003f0608ff260000 *000024000000837e04ff7510be980f080883c5048b45008b40ecffe0be900f080883c5048b4500 *8b40f0ebee909018000500000000001100000083c7143b7b5c7611c7436c05000000be9c180808 *8b43fcffe0c747f0384006088b45108947f48b45088947f8c747fcc88305088b451089078d47f0 *8945108b450c8945088b450489450c8b45008945048d77fc83c5048b4510ebbc9083c7083b7b5c *760cc7436c020000008b43f8ffe0c747fcc88305088b460489078d77fc83c504a18c000708ebe5 *8d760083c7083b7b5c760cc7436c020000008b43f8ffe0c747fcc88305088b460489078d77fc83 *c504a18c000708ebe58d7600c03f0608903f06080000000000000000250000008b7504c7450404 *40060883c504ff269083c508ff268d760014400608044006080000000001000000250000000200 *0000150000008d45f03b435473058b43f8ffe08d45f8c700a00007088970048b46048945f48b76 *08c745f03040060883ed108b06ebdbe4150808684006080400020000000000110001008d45e03b *4354730abea01808088b43fcffe08b7500c74500904106088b06ebf08b55188b4514894204be9c *0f080883c520ff650042000000240000008b4504897004be9c0f080883c50cff65008d76006840 *0608e70a0000240001008b550c8b450489450c8955048b4510894500c74510c01408088b460489 *45fcc74514b840060883ed04e972d7ffff89f68b751cc74500d8400608ff26084106089c400608 *68400608e7000000250001006840060802000000240001008b46148945f08b46108945f48b460c *8945f88b46048945fc8975008b7608c745ec2841060883ed14ff2689f668400608010000002400 *01008b46048b500489450089d6c745fc3441060883ed04ff26906840060800000000240001008b *46048945008b7618c745fc6c41060883ed04ff2690909068616e646c65206973206e6f74206f70 *656e20666f722077726974696e67009000000200180000008d45f43b4354720883c70c3b7b5c76 *0cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e8a14b000083c4108d47f8894604c7 *0624ed06088d55f8c702a0000708894204c745f4a841060883ed0cb87c920508ebc268616e646c *6520697320636c6f736564008d760000000200180000008d45f43b4354720883c70c3b7b5c760c *c7436c030000008b43f8ffe0c747f808ee060883ec0c56e82d4b000083c4108d47f8894604c706 *24ed06088d55f8c702a0000708894204c745f42842060883ed0cb87c920508ebc2170004000000 *00001100000083c7143b7b5c7611c7436c05000000bec81808088b43fcffe0c747f05c4406088b *45048947f48b45088947f88b45008947fc8b450c89078d47f089450c83c50cb8689c0508ebd090 *e9670100008d760000000200140000008d45f83b435473058b43f8ffe08d45f8c700a000070889 *70048b460483f87a7770ff248524950708be04190808eb67bef4180808eb60becc180808eb59be *f0180808eb52beec180808eb4bbee4180808eb44bedc180808eb3dbe60180808eb36bed0180808 *eb2fbee0180808eb28be00190808eb21befc180808eb1abed4180808eb13bed8180808eb0cbef8 *180808eb05bee818080883ed08b8a0000708e968ffffff90240000002400000083c7243b7b5c76 *15c7436c09000000c74320fe000000b84ccf0608ffe0c747e0004306088b45048947e4c747ecc8 *9c05088b45108947f08d47e08947f48b450c8947f88977fc8b450889078d77ec83c5148b4500eb *c589f624000000240000008975fcc74500ac43060883ed04e93a43ffff89f60300000024000000 *8b46048945f88b4604894500c745fc0c44060883ed08e90901000090f042060800000000000000 *0000000100040000000b0000008d45e83b435473058b43fcffe08b46108945f48b460c8945f88b *46088945fc8b7604c745f02844060883ed108b06ebdb000000000a000000ff650090000000000a *000100ff650090000000000a000200ff650090000000000a000300ff650090000000000a000600 *ff650090000000000a000800ff650090000000000a000a00ff650090000000000a000b00ff6500 *90000000000a000c00ff650090000000000a000d00ff650090000000000a000e00ff6500900000 *00000a000f00ff650090000000000a001000ff650090000000000a001100ff650090000000000a *001200ff6500900300020000000000110000008b450083c50483ec0c50e86553feff83c41089c6 *ff6500905589e556538b5d088b750c8b55108b4d14b80100000039ce770b720439d37705b80000 *00005b5e5dc35589e556538b5d088b750c8b55108b4d14b80100000039ce770b720439d37305b8 *000000005b5e5dc35589e5538b45088b550c8b4d108b5d1431c831da09d00f94c025ff0000005b *5dc35589e5538b45088b550c8b4d108b5d1431c831da09d00f95c025ff0000005b5dc35589e556 *538b5d088b750c8b55108b4d14b80100000039ce720b770439d37205b8000000005b5e5dc35589 *e556538b5d088b750c8b55108b4d14b80100000039ce720b770439d37605b8000000005b5e5dc3 *5589e556538b5d088b750c8b55108b4d14b80100000039ce7f0b7c0439d37705b8000000005b5e *5dc35589e556538b5d088b750c8b55108b4d14b80100000039ce7f0b7c0439d37305b800000000 *5b5e5dc35589e5538b45088b550c8b4d108b5d1431c831da09d00f94c025ff0000005b5dc35589 *e5538b45088b550c8b4d108b5d1431c831da09d00f95c025ff0000005b5dc35589e556538b5d08 *8b750c8b55108b4d14b80100000039ce7c0b7f0439d37205b8000000005b5e5dc35589e556538b *5d088b750c8b55108b4d14b80100000039ce7c0b7f0439d37605b8000000005b5e5dc35589e583 *ec08ff7514ff7510ff750cff7508e8a93b010083c410c9c35589e583ec08ff7514ff7510ff750c *ff7508e84d3a010083c410c9c35589e583ec08ff7514ff7510ff750cff7508e8f137010083c410 *c9c35589e583ec08ff7514ff7510ff750cff7508e85536010083c410c9c35589e58b45088b550c *f7d883d200f7da5dc35589e58b45108b551403450813550c5dc35589e58b45088b550c2b45101b *55145dc35589e557565383ec0c8b4d108b5d148b4508f7e18945e88b75080faff389d701f70faf *4d0c8d0c39894dec8b45e88b55ec83c40c5b5e5f5dc35589e5538b45088b550c8b4d108b5d1421 *c821da5b5dc35589e5538b45088b550c8b4d108b5d1409c809da5b5dc35589e5538b45088b550c *8b4d108b5d1431c831da5b5dc35589e58b45088b550cf7d0f7d25dc35589e58b4d108b45088b55 *0c0fa5c2d3e0f6c120740789c2b8000000005dc35589e58b4d108b45088b550c0fadd0d3eaf6c1 *20740789d0ba000000005dc35589e58b4d108b45088b550c0fa5c2d3e0f6c120740789c2b80000 *00005dc35589e58b4d108b45088b550c0fadd0d3faf6c120740589d0c1fa1f5dc35589e58b4d10 *8b45088b550c0fadd0d3eaf6c120740789d0ba000000005dc35589e58b450889c2c1fa1f5dc355 *89e58b45085dc35589e58b45088b550c5dc35589e58b4508ba000000005dc35589e58b45085dc3 *5589e58b45088b550c5dc35589e556538b450c8b7508b900000000bb0000000085f6744285f67f *0783feff7410eb1783fe0175128b08bb00000000eb298b08bb00000000eb198b08bb000000008b *400489c2b80000000001c111d385f67907f7d983d300f7db89c889da5b5e5dc35589e556538b45 *0c8b7508b900000000bb0000000085f6744285f67f0783feff7410eb1783fe0175128b08bb0000 *0000eb298b08bb00000000eb198b08bb000000008b400489c2b80000000001c111d385f67907f7 *d983d300f7db89c889da5b5e5dc35589e557565383ec188b750c8b7d08c645f30a6a02e8540d00 *0083c410eb0ee8fc4efeff833804752929de01df83ec0456576a02e8974dfeff89c383c41039f0 *7cdd83ec046a018d45f3506a02e87e4dfeff8d65f45b5e5f5dc39090b801000000c3565383ec04 *8b5424108b5c24148b742418b80000000085d2740783fa017437eb6b83ec0868109707086a0ee8 *8c0b000083c41085c07455c60058c6400168895802c6400650c64007b8897008c6400cffc6400d *e0eb3683ec0868109707086a11e8570b000083c41085c07420c60068895801c64005b8897006c6 *400a68c7400b0c190808c6400fffc64010e083c4045b5ec35383ec088b5c24108a033c680f95c2 *3c580f95c021d0a801741683ec04536820970708ff3544270808e8ee4cfeffeb23803b68750883 *ec0cff7301eb0683ec0cff7302e8ed2c0000c60300891c24e8740b000083c4185bc383ec146a00 *680c190808e801ffffff83c41cc3905589e55383ec0483e4f083ec0468c09e0408ff750cff7508 *e886070000e8b106000083c4086a006878e50708e86805000089c3e89c06000083c41083fb0274 *1383fb02770783fb017434eb3983fb037416eb3283ec0c6850970708e8d2090000b8fa000000eb *1283ec0c68bd970708e8be090000b8fc00000083c410eb14b800000000eb0d83ec0c6878970708 *e80609000083ec0c50e8ca080000b8000000008b5dfcc9c390909083ec186a02e817430000c700 *249705088b54242089500483c41cc383ec186a02e8fc420000c7003c9705088b54242089500483 *c41cc35383ec148a5c241c6a02e8dc420000c700009f050881e3ff00000089580483c4185bc353 *83ec148b5c241c6a02e8b9420000c700189f050881e3ffff000089580483c4185bc383ec186a02 *e89b420000c700309f05088b54242089500483c41cc3565383ec108b5c241c8b7424206a03e876 *420000c700489f050889580489700883c4145b5ec383ec186a02e85a420000c700bcaa05088b54 *242089500483c41cc35383ec148a5c241c6a02e83a420000c700d4aa050881e3ff000000895804 *83c4185bc35383ec148b5c241c6a02e817420000c700ecaa050881e3ffff000089580483c4185b *c383ec186a02e8f9410000c70004ab05088b54242089500483c41cc3565383ec108b5c241c8b74 *24206a03e8d4410000c7001cab050889580489700883c4145b5ec383ec186a02e8b8410000c700 *789a05088b542420895424188b54241889500483c41cc383ec288b44242c8b5424308944241c89 *5424206a03e885410000c700609a05088b5424208b4c242489542418894c241c8b5424188b4c24 *1c89500489480883c42cc383ec186a02e853410000c700cca305088b54242089500483c41cc383 *ec186a02e838410000c70098a105088b54242089500483c41cc383ec186a02e81d410000c700b0 *a105088b54242089500483c41cc3b8980f0808837c2404007505b8900f0808c383ec18ff74241c *e8acffffff83c408506814100808e80400000083c41cc383ec186a03e8d2400000c70058fe0608 *8b5424208950048b54242489500883c41cc38b4424048b4004c38b4424048b4004c38b4424040f *be4004c38b4424040fbf4004c38b4424048b4004c38b4424048b50088b4004c38b4424048b4004 *c38b4424048a400425ff000000c38b442404668b400425ffff0000c38b4424048b4004c38b4424 *048b50088b4004c383ec048b4424088b4004890424d9042483c404c383ec0c8b4424108b50088b *400489042489542404dd042483c40cc38b4424048b4004c38b4424048b4004c38b4424048b4004 *c38b4424048b0083e80866837806000f95c025ff000000c35383ec148b1d102a0808c705102a08 *0800000000ff35cc2c0808e83011000083c40c8b48308d51fc8950308b5424148951fc8b48308d *51fc895030c741fc18c7060853ff74241c50e81f12000083c4185bc35383ec148b1d102a0808c7 *05102a080800000000ff742420e8e010000083c40c8b48308d51fc8950308b5424148951fc8b48 *308d51fc895030c741fc18c7060853ff74242050e8cf11000083c4185bc35383ec148b1d102a08 *08c705102a080800000000ff35cc2c0808e88e10000083c40c8b48308d51fc895030c741fcc8f0 *06088b48308d51fc895030c741fce89706088b48308d51fc8950308b5424148951fc8b48308d51 *fc895030c741fc18c7060853ff74241c50e85d11000083c4185bc3565383ec108b7424208b4424 *1cc1e0048b15a02b08088b1c02ff35cc2c0808e81710000083c40c8b48308d51fc895030c741fc *c8f006088b48308d51fc895030c741fce89706088b48308d51fc8950308959fc8b48308d51fc89 *5030c741fc18c70608ff35102a08088d5424085250e8e410000089c3c705102a08080000000083 *c41083f8010f94c285f60f95c021d0a801741183ec0cff74240ce81e270000890683c41089d883 *c4045b5ec35383ec148b1d102a0808c705102a080800000000ff35cc2c0808e86f0f000083c40c *8b48308d51fc895030c741fc00f106088b48308d51fc895030c741fce89706088b48308d51fc89 *50308b5424148951fc8b48308d51fc895030c741fc18c7060853ff74241c50e83e10000083c418 *5bc35383ec148b1d102a0808c705102a080800000000ff742420e8ff0e000083c40c8b48308d51 *fc895030c741fc00f106088b48308d51fc895030c741fce89706088b48308d51fc8950308b5424 *148951fc8b48308d51fc895030c741fc18c7060853ff74242050e8ce0f000083c4185bc383ec0c *8b5424108b44241483f802741383f802770783f801743aeb1d83f803740deb1683ec085268a297 *0708eb1583ec085268b9970708eb0a83ec04505268c9970708e86f030000c7042401000000e8bc *02000083c40cc3c3c39090908b542404b80000000083fa0277078b0495182a0808c38b54240483 *fa02770b8b442408890495182a0808c3565383ec048b5c24108b742414ff05142a0808833d142a *0808017f7ee8e2290000e873200100e83243000085db742785f6742368603e080868a42c0808ff *3653e8b92101008b03a3982c08088b06a39c2c080883c410e8600f0000e829370000e849240000 *e8ab40000083ec0c6a14e866410000e811290000e8d81f0000e85923000083c40868cca107086a *00e8fb45feffe8b629000083c41083c4045b5ec383ec148d44241c508d44241c50e84effffff83 *c404ff742424e83600000083c41cc38b5424048b4c240885d27407a1982c0808890285c97407a1 *9c2c08088901c38b442404a3982c08088b442408a39c2c0808c3565383ec048b742410833d142a *0808007f0d83ec0c68fc970708e88201000083ec0c6a04e8c5b2000089c38b00a3242a0808c700 *06f10608ba0100000083c41085f6740da1242a0808897004ba02000000a1242a08088d0490a318 *2e080883ec0868c82d0808680cf10608e851310000891c24e8bfb4000083c4145b5ec35381ec08 *010000833d142a0808007f0d83ec0c68e5970708e806010000ff0d142a0808833d142a0808000f *8fac000000e8ef280000e851400000e8990e0000e83940000083ec0c6a00e84b030000c7042401 *000000e83f030000c7042402000000e83303000083c4048d9c248c00000053e81548feff83c408 *6a1653e80a46feff83c40c8d44240450536a00e87a46feffbb0000000083c41083ec0c53e8c1fd *ffff83c41085c0740f83ec04506a0053e85644feff83c4104383fb027edb83ec046a008d442408 *506a02e83c46feffe8a9280000e8db38000083c41081c4080100005bc383ec0ce814ffffff83c4 *0cc383ec0c833d142a0808017516e80e410000e8fafeffff83ec0cff74241ce80400000083c40c *c383ec18ff74241ce88947feff905383ec088d5c2414833d9c2c0808007424833da02c08080074 *1b83ec04ff35a02c08086829980708ff3544270808e8e542feffeb14ff35442708086a106a0168 *2d980708e8ff47feff83c40c53ff742418ff3544270808e8cc44feff83c408ff35442708086a0a *e8bc45feffff35442708086a756a0168b0980708e8c847feff83c414ff3544270808e8ca42feff *c70424fe000000e859ffffff5383ec088d5c2414833d9c2c0808007425833da02c080800741c83 *ec04ff35a02c0808683e980708ff3544270808e84b42feff83c41083ec0453ff742418ff354427 *0808e84544feff83c408ff35442708086a0ae83545feff83c4185bc383ec0c8d44241483ec0450 *ff742418ff3544270808e81644feff83c408ff35442708086a0ae80645feff83c41cc35383ec14 *8b5c241c53e85443feff83c41085c0751983ec08ff74241c53e8843f0000c70424fe000000e89f *feffff83c4085bc35383ec108b5c241c53ff74241ce82d45feff83c41085c0751983ec08ff7424 *2053e84d3f0000c70424fe000000e868feffff83c4085bc35383ec108b44241c8b5c24180fafd8 *ff74242053e87dffffffba0000000083c41039da7d09c60402004239da7cf783c4085bc383ec18 *ff74241ce8d945feff83c41cc383ec18ff3540270808e87741feffff742424ff74242468289907 *08ff3544270808e81f41feff83c414ff3544270808e85141feff83c410e8d942feff83ec18a1c8 *2c0808c1e00250e8f43e000083c41cc383ec14a1d02c0808c1e00c506a00e8b93e0000c70424fb *000000e8b0fdffff8b54240489d0803a0074064080380075fa29d0c3a1282a08088d5001891528 *2a0808c3c705282a080800000000b800000000c35383ec108b5c24186a0353e85244feff83c410 *f6c408741283ec0480e4f7506a0453e83b44feff83c41083c4085bc35383ec108b5c24186a0353 *e82344feff83c410f6c408751283ec0480cc08506a0453e80c44feff83c41083c4085bc3555756 *5383ec0c8b5c24208b7424248b7c24288b6c242c83fe000f87d900000081fbe7030000770b83ec *04536843980708eb4783fe000f87bd00000081fb3f420f0077446a0068e80300005653e8d22a01 *0083c4105083ec0c6a0068e80300005653e87d29010083c41c50b84798070885ed7505b8529807 *085057e8e444feff83c410e9fc00000083fe00776c81fbffc99a3b776483ec106a0068e8030000 *5653e87e2a010083c414506a0068e80300005653e82c29010083c4106a0068e80300005250e85b *2a010083c4105083ec0c6a006840420f005653e80629010083c41c50b85c98070885ed0f858b00 *0000b86e980708e98100000083ec106a0068e80300005653e81a2a010083c4185083ec046a0068 *e80300005653e8c528010083c4106a0068e80300005250e8f429010083c414506a006840420f00 *5653e8a228010083c4106a0068e80300005250e8d129010083c4105083ec0c6a006800ca9a3b56 *53e87c28010083c41c50b87e98070885ed7505b8979807085057e8e343feff83c42089f883c40c *5b5e5f5dc390905557565383ec188b6c242cc7442410000000008b442430894424148d44241450 *e8fab0000083c410833d4c2a0808007417c7054c2a080800000000c744240401000000e8650500 *00813d14190808602d08087405e8a61b0000813d382a08081c190808750c813d402a08081c1908 *08741e83ec0c813d302a08081c1908080f94c025ff00000050e85514000083c410833d4c2a0808 *007590813d302a08081c1908080f85b5000000813d382a08081c1908080f85a5000000813d402a *08081c1908080f859500000083ec086a0168de620608e8c9b0000083c410813d302a08081c1908 *087577e8ce100000813d302a08081c1908087566e89f18000085c07425e8a6180000833d4c2a08 *08000f8516ffffff813d14190808602d0808743fe8dc1a0000eb388b152c2a08088b02668b4012 *25ffff00004883f802771483ec0868f80f0808ff32e8580d000083c410eb0d83ec0c684c990708 *e95d0300008b15302a080881fa1c19080874258b4204a3302a0808c742041c190808813d302a08 *081c190808750ac705342a08081c19080889d38b442408895068833d142d0808007530813d302a *08081c1908087518813d382a08081c190808750c813d402a08081c190808740cc705482a080801 *000000eb0ac705482a080800000000668b431089c681e6ffff0000e8d73dfeff8b5320891083fe *01742d83fe01721183fe02740583fe047531bf04000000eb3783ec088b44241083c008506890f0 *0608e89a290000eb0c83ec0cff742414e84804010089c783c410eb0d83ec0c687c990708e97602 *00008b4424088b5868e8743dfeff8b0089432083ff040f8753020000ff24bdc09b07088b442408 *817874000400000f86c50000008b40748d3c85ff0f0000c1ef0c89f80305a02d08083b05a82d08 *080f83a4000000a3a02d080883ec0c57e844aa000089c68b4424188b40708946088b4424188b40 *708b400c89460c8b4424188b407083c41083780c0074088b400c897008eb0f8b542408a1342c08 *0889700489726c8b4424088b407089700c89f289f8c1e0058d043039c6731f89c1a1342c080889 *4214c7421000000000c7421c0000000083c22039ca72e3a1342c08080178088b442408897070a1 *302a0808894304891d302a0808eb2e83ec0c53e8aae60000c705582a080801000000c705482a08 *0801000000a1302a0808894304891d302a080883c410813d342a08081c1908080f8546010000e9 *2b01000083ec0c53e867e60000891c24e8dd06000089c283c410837b240074058b43248910a130 *2a08088942048915302a0808813d342a08081c1908080f85020100008915342a0808e9f7000000 *668b431025ffff000039f00f8503feffff83ec0c53e80ce6000083c410e9a300000083ec0cff35 *44270808e8fc3afeff891c24e8eee5000083c410e9b7000000395d00757a66837b1004751a837d *0800740b8b45088b53308b52048910c7450401000000eb1c837d080074098b4508c70000000000 *837c24040119c083c003894504837d0c00750a8b4510a32c2a0808eb098b550c8b451089421083 *7d1000740a8b4510c7400c0000000083ec0cff742414e8b6ac000083c41c5b5e5f5dc3837b2400 *7432813d302a08081c1908087508891d302a0808eb08a1342a0808895804891d342a0808eb0e83 *ec085768a0990708e8ddf6ffff833d582a0808000f845cfbffff83ec086a0068de620608e8c5ac *0000c705582a080800000000e93bfbffffb800000000c3b800000000c35383ec08e8d8f3ffffe8 *c039feff89c385c00f8593000000c705342a08081c190808c705302a08081c190808a1442a0808 *3d1c19080874198b580483ec0c50e81109000083c41089d881fb1c19080875e78b152c2a080885 *d2741e8b4210a32c2a080883ec0c52e8fdf7ffff83c4108b152c2a080885d275e283ec086a00ff *74241ce873f1ffff83c40850684c9c0708e8f4f2ffffe848f3ffffe8e4f4ffffc7042400000000 *e8eef5ffffe832f3ffff89d883c4085bc35383ec08a1442a08083d1c19080874198b580c83ec0c *50e87008000083c41089d881fb1c19080875e783c4085bc3575653e8e139feff8b388b74241083 *ee088b466866c74010000083ec0cff7668e8eee300008b5668a1542a08088942048b4668a3542a *08088b466883c41083781800751266c7401207008b4668c740181c190808eb098b466866c74012 *08008b46688b581c83ec0c56e8ecaa0000e87639feff893883c41089d85b5e5fc357565383ec10 *8b742420e85c39feff8b3883ec0c8d44241850e8a8aa0000ba542a08088b1d542a080883c41081 *fb1c190808742239731c74108d53048b5b0481fb1c19080875edeb0d8b4304890281fb1c190808 *750d83ec0c68c8990708e8e0f4ffffc743041c19080866837b1207751583ec0cff7318e81f0500 *00c743180000000083c41066c7431200008b44240c895868e8d338feff89388b44240c83c00883 *c4105b5e5fc38b4424048b481c8b4424088b501cb8ffffffff39d1720a39d10f97c025ff000000 *c38b4424048b401cc35557565383ec0c8b44242083f8257705b8260000008d70f383ec0c50e881 *2e000089c3c70080ee060866c740100000a11019080889431cff051019080866c743120000c743 *1800000000c7432000000000c743240000000089732883c4108b0dc82c080881f900f80300764e *ba00f8030089c889d5ba00000000f7f581fafffb0100771a89cac1ea0bb820080402f7e289d0c1 *e00729d089c1c1e10beb1c89cac1ea0bb820080402f7e289d0c1e00729d0c1e00b8d8800f80300 *8d41f389432c8d14b38d4230894330c7423060f00608a1442a080889430c891d442a080889d883 *c40c5b5e5f5dc38b542404a1302a08088942048915302a0808813d342a08081c19080875068915 *342a0808c383ec18ff74241ce8cfffffff83c41cc35383ec108b5c241868589c07086a14e866f4 *ffff89c289188943248b442424894208c7420400000000a12c2a0808894210c7420c0000000083 *c41085c0740389500c89152c2a0808a1302a0808894304891d302a0808813d342a08081c190808 *7506891d342a080883ec08ff74242052e89f00000083c4185bc383ec0cc705302a08081c190808 *c705342a08081c190808c705382a08081c190808c7053c2a08081c190808c705402a08081c1908 *08c705542a08081c190808c7052c2a080800000000c705442a08081c190808c705482a08080000 *0000c7054c2a0808000000008b0d102d0808ba6766666689c8f7eac1fa0389c8c1f81f29c28915 *142d0808e8c1a7000083c40cc3c705502a080801000000c3565383ec0c8b5c2418ff74241c53e8 *91f6ffff8b7304891c24e8e5f3ffff89f083c4145b5ec35383ec088b5c2410813d302a08081c19 *0808741683ec0c68302a0808ffd3c70424342a0808ffd383c410813d382a08081c190808741683 *ec0c68382a0808ffd3c704243c2a0808ffd383c410813d402a08081c190808740d83ec0c68402a *0808ffd383c410813d542a08081c190808740d83ec0c68542a0808ffd383c41083ec0c53e88712 *000083c4185bc383ec146a0068de620608e883a7000083c41cc383ec146a0168de620608e870a7 *000083c41cc35383ec148b5c241c53e840ffffff891c24ff155c2a080883c4185bc383ec148b44 *2418a35c2a08086a006890630608e838a7000083c41cc35557565383ec0c8b6c24208b45283b45 *2c721883ec0868d00f080855e81604000089e883c410e9250100008b45288b552c01c039d07602 *89d08d1c853310000081e300f0ffffc1eb0289d981fb00f80300764eba00f8030089d889d7ba00 *000000f7f781fafffb0100771a89dac1ea0bb820080402f7e289d0c1e00729d089c1c1e10beb1c *89dac1ea0bb820080402f7e289d0c1e00729d0c1e00b8d8800f8030089cb8d41f38944240883ec *0c51e8ae2a000089442414fcb90d00000089c789eef3a58b45288d4485008b553029d083c0348b *4c24148d1c99895c241083e0fc2944241089d689c289c1c1e9028b7c2410f3a589fb83e00285c0 *740c668b0666890783c30283c60289d083e00185c074048a0688038b5424108b4424148950308b *4c241889482866c7451003008945048b45288d44853489453066c7451200008b7c2414c7470800 *00000083c41089f883c40c5b5e5f5dc38b54240466c7421200008b4a04a1302a08088942048915 *302a0808813d342a08081c19080875068915342a080889c8c383ec0c8b4424103d1c1908087413 *83ec0c50e8b9ffffff83c4103d1c19080875ed83c40cc383ec0c8b4424103d1c190808741383ec *0c50e894ffffff83c4103d1c19080875ed83c40cc3c7054c2a080801000000c705482a08080100 *0000c35756538b5c241066837b12000f84d0010000668b431225ffff000083f8060f876e010000 *ff2485d49b0708be1c1908088b7b148d4f048b570439f2742a39da75168b43048901395f0c0f85 *5f01000089770ce9570100008d4a0489d68b520481fa1c19080875d683ec0c68e8990708e92601 *00008b43148d48048b500481fa1c190808741639da0f841c0100008d4a048b520481fa1c190808 *75ea83ec0c680c9a0708e9f20000008b43146683781003750a8b4004668378100374f68d48188b *501881fa1c190808741639da0f84d70000008d4a048b520481fa1c19080875ea83ec0c68389a07 *08e9ad000000b9000000008b15382a080881fa1c190808744e39da753d85c975238b4304a3382a *0808391d3c2a08080f8592000000c7053c2a08081c190808e9830000008b420489410439153c2a *08087575890d3c2a0808eb6d89d18b520481fa1c19080875b283ec0c68649a0708eb42b9000000 *008b15402a080881fa1c190808741d39da750c85c9742c8b4204894104eb3389d18b520481fa1c *19080875e383ec0c68889a0708eb0883ec0c68639c0708e8aaedffff8b4304a3402a0808eb058b *43048901c743041c19080866c743120000c7431400000000a1302a0808894304891d302a080881 *3d342a08081c1908087506891d342a08085b5e5fc383ec146a00ff74241ce85c00000083c41cc3 *5383ec088b5c2410668b43106683f8040f94c26683f8020f94c009d0a801751f668b431283e807 *6683f801760c83ec0c53e8d2fdffff83c41066c74310020083c4085bc383ec14ff74241cff7424 *1ce80400000083c41cc35557565383ec0c8b542420668b42106683f8040f94c26683f8020f94c0 *09d0a8010f857002000083ec0cff74242ce87dfdffff8b4424308b703083c410813e18c7060875 *0583c604eb0983ee04c706281908088d6e048b4e0483e90c668379082a0f84ac00000066837908 *2b0f95c2837c2424000f94c009d0a8010f8492000000668379082c0f84870000008b550083ea0c *668b420825ffff000083e82383f8067737ff2485f09b07088b450489c2c1ea18c1e81025ff0000 *008d441015eb218b450483c003eb198b42048b00eb118b45048b401883c002eb078b420483e01f *408d6c85008b4d0083e90c668379082a7421668379082b0f95c2837c2424000f94c009d0a80174 *0b668379082c0f8579ffffff668b410825ffff000083f82b741d83f82b7f0a83f82a745fe95a01 *000083f82c0f843f010000e94c01000083ec0c6a02e8e2250000c700f8c406088b542434895004 *8d75fc83c4108b542420837a18007507c742181c1908088906c746fc18c706088d46fc8b542420 *89423066c742100000e90d01000089eb29f389d8c1f8028d58ff83c00283ec0c50e88825000089 *c78958048b0689470883c604ba0000000083c41039da730e8b068944970c83c6044239da72f2c7 *07589706088b4d048b11668b42fc25ffff0000f6840041220808010f858300000081fadced0608 *750e83ec0cff7104e878fbffff83c4108b4d0489c82500f00f00c1e80789ca81e20000f0ff89c3 *09d3837b1000750e8979048b4504c70064ec0608eb408b45048978048b4d048139dced06087426 *8b43108d04c08b15282c08088b4482148941088b43108d04c08b4d048b15282c0808894c82148b *4504c70044ed060883c604893ee9dbfdffff83c6048b44242066c740100200897030eb0d83ec0c *68719c0708e862eaffff83c40c5b5e5f5dc35383ec088b54241081fa1c19080874628b5a0ca144 *2a080889420c8915442a0808668b421225ffff000083f801740f83f801723483f802740f83f803 *751d83ec0868f00f0808eb0883ec0868f80f080852e80bfdffff83c410eb0d83ec0c68b09a0708 *e8f2e9ffff89da81fb1c190808759e83c4085bc35756538b35442a080881fe1c1908080f84c400 *000066837e1003750a8b760466837e100374f666837e12020f85990000008b7e148b4e308b0183 *e80c668b400825ffff000083f82a740783f82c747beb1d397904751383ec0868f80f080856e886 *fcffff83c410eb6183c108ebc98b1183ea0c668b420825ffff000083e82383f8067737ff24850c *9c07088b410489c2c1ea18c1e81025ff0000008d541015eb218b510483c203eb198b42048b10eb *118b41048b501883c202eb078b520483e21f428d0c91e96dffffff8b760c81fe1c1908080f853c *ffffff5b5e5fc383ec0c8b542410668b421225ffff000083f8080f87a5000000ff2485289c0708 *83ec04ff7214687c9c0708eb0b83ec04ff7214689a9c0708ff3544270808e8db2bfeffeb7583ec *04ff721468b79c0708ebe6ff35442708086a156a0168cb9c0708eb5283ec048b4214ff701c68e4 *9a0708ebc5ff35442708086a1a6a0168e19c0708eb31ff35442708086a0e6a0168fc9c0708eb20 *ff35442708086a1e6a0168189b0708eb0fff35442708086a406a0168389b0708e89430feff83c4 *1cc352ff721c668b421225ffff000050687c9b0708e830e8ffff83ec0c8b542410668b421025ff *ff000083f802740783f8047413eb27ff35442708086a0f6a01680b9d0708eb0fff35442708086a *0d6a01681b9d0708e83730feffeb0983ec0c52e8defeffff83c41cc35383ec08ff35442708086a *0d6a0168299d0708e81030feff8b1d442a080883c41081fb1c190808746453ff731c68379d0708 *ff3544270808e8bb2afeff83c404ff731ce85826000083c41085c0741783ec045068489d0708ff *3544270808e8952afeff83c41083ec0c53e841ffffff83c408ff35442708086a0ae8892dfeff83 *c4108b5b0c81fb1c190808759c83c4085bc383ec18ff74241ce86af7ffff83c41cc3909056538b *5c240cb900000000813d402a08081c1908087465a1402a080889c289de2b701485f67e558b4204 *a3402a080866c742120000c742041c190808a1302a08088942048915302a0808813d342a08081c *19080875068915342a0808b901000000813d402a08081c190808740f8b15402a080889d82b4214 *85c07fab89c85b5ec35557565381ec1c010000bbffffffffc744240400000000c7442408000000 *00c744240c00000000e8cb020100a3602a080889c783ec0c50e843ffffff83c41085c00f85fb02 *0000be0000000083bc243001000000742cbeffffff07813d402a08081c190808741ba1402a0808 *8b401429f88d04808d04808d04808d048089c6c1e605b800000000bd200000008dbc2490000000 *89e9fcf3ab8d7c241089e9fcf3ab8b0d382a080881f91c19080874628b7904668b411225ffff00 *0083f804740783f805741deb338b411439c37d0289c389c2c1ea0583e01f0fab849490000000eb *258b411439c37d0289c389c2c1ea0583e01f0fab449410eb0d83ec0c68509d0708e99a01000089 *f981ff1c190808759eba83de1b4389f0f7e2c1ea128954240889d1c1e10529d189c8c1e00629c8 *8d04c2c1e00629c68974240ce9a4000000e89e29feff8338047454c7442404010000008338090f *84b400000083ec10e88029feff83c40cff30685b9d0708ff3544270808e85b28feff83c404ff35 *44270808e88d28feffc704245f9d0708e82128feffc70424669d0708e903010000813d14190808 *602d0808740ae86f050000e98e010000833d4c2a0808000f858101000083ec10e82e0101008904 *24e8aefdffff83c410813d302a08081c1908080f855e01000083ec0c8d4c2414516a008d442424 *508d8424a8000000508d430150e86f28feff83c42085c00f8831ffffffbd000000008b44240483 *c8010f84fe0000008b0d382a080881f91c1908080f84c50000008b7904668b411225ffff000083 *f804740783f8057426eb4ebe00000000837c240400753b8b411489c283e21fc1e8050fa3948490 *0000000f92c2eb1fbe00000000837c24040075178b411489c283e21fc1e8050fa35484100f92c2 *84d27414be01000000eb0d83ec0c68749d0708e815e4ffff85f6742f66c741120000c741041c19 *0808a1302a0808894104890d302a0808813d342a08081c1908087519890d342a0808eb1185ed75 *08890d382a0808eb03894d0489cd89f981ff1c1908080f853bffffff85ed7516c7053c2a08081c *190808c705382a08081c190808eb0dc745041c190808892d3c2a080883bc243001000000741983 *3d4c2a0808007510813d302a08081c1908080f84e5fcffff81c41c0100005b5e5f5dc39090c353 *83ec088b5c24103b1d882a08087c66833d842a080800751783ec08687f9d07088d049d04000000 *50e863e4ffffeb1b83ec04687f9d07088d049d0400000050ff35842a0808e879e4ffffa3842a08 *0883c4108b15882a080839da7f11a1842a0808c70490ffffffff4239da7eef8d4301a3882a0808 *83c4085bc383ec186a00e88be5ffff83c41cc3565381ec840000008bb424900000008b0d141908 *08a1842a08088b14b08d4104a314190808c1e204a1a02b08088b04108901813d14190808a02d08 *08751983ec0c688d9d0708e831e3ffffc7042401000000e87ee2ffff83ec0c8d5c240c53e8e629 *feff83c4085653e8dc27feff83c40c6a00536a01e84f28feff83c41083fe12750d83ec0c6a12e8 *65ffffff83c410c705482a08080100000081c4840000005b5ec383ec1868a02a0808e89a29feff *83c41cc383ec1068202b080868a02a08086a00e80228feff83c41cc383ec106a0068202b08086a *02e8ed27feff83c41cc3833d8c2a0808000f95c025ff000000c383ec0c813d14190808602d0808 *7523833d4c2a080800751ae8ec27feff813d14190808602d08087509833d4c2a08080074e683c4 *0cc35557565381ecac0100008b9c24c00100008bbc24c40100008bac24c801000085db0f88c701 *000083ec0c8db4242c01000056e8ec28feff83c41085c00f85ac01000083ec085356e8d726feff *83c41085c00f859701000083ec048d8424a400000050566a00e83927feff83c41085c00f857901 *000083ec0c53e8d2fdffffa1842a08088b14988954241cc78424a40000000000000083c41083ff *fe741d83fffe7f0e8d470583f8010f8793000000eb5583ffff7429e987000000a1842a0808c704 *98feffffff83ec085368a02a0808e84f29feffc744242001000000eb22a1842a0808c70498ffff *ffff83ec085368a02a0808e82b29feffc74424200000000083c410eb498b5500a1842a08088914 *9883ec085368a02a0808e80526feffc74424201672060883c41083fffb750bc784249400000000 *000080ff058c2a0808eb0d83ec0c68a69d0708e86de0ffff83bc24cc0100000074158d7c2414fc *b9200000008bb424cc010000f3a5eb1083ec0c8d44242050e8a927feff83c410b80000000083fb *11750e833d802a0808007405b8010000000984249400000083ec046a008d4424185053e88722fe *ff83c41085c0751b83ec046a008d8424a8000000506a02e8dc25feff83c41085c07427837c240c *00781983ec0ca1842a0808ff3498e807030000ff0d8c2a080883c410bafdffffffeb1c8b44240c *83c0038b54240c83f802760c8b44240c894500bafcffffff89d081c4ac0100005b5e5f5dc35383 *ec08e866fdffff813d14190808602d080874728b15141908088d42fca3141908088b5afc83ec0c *ff35cc2c0808e8f8eaffff8b48308d51fc895030c741fc00f106088b48308d51fc895030c741fc *e89706088b48308d51fc8950308959fc8b48308d51fc895030c741fc18c70608890424e8c1ebff *ff83c410813d14190808602d0808758ee8fbfcffff83c4085bc3565383ec048b7424108b1d1419 *080881fb602d0808741483eb0483ec0c53ffd683c41081fb602d080875ec83c4045b5ec383ec0c *833d4c2a080800740d83ec0c68fc000000e8b5deffffe85fefffff83c40cc35381ec34010000c7 *84249c0000001d7606088d9c249c0000008d8424a000000050e8fb25feffc78424240100000000 *000083c40c8d44240450536a02e8f020feff83c41085c0741083ec0c68c09d0708e8fedeffff83 *c41083ec086a016a02e85d21feffc78424a00000000872060883c4048d9c249c0000008d8424a0 *00000050e89b25feffc78424240100000000000083c40c8d44240450536a12e89020feff83c410 *85c0741083ec0c68ec9d0708e89edeffff83c41081c4280100005bc3908b442404c1e0048b15a0 *2b08088b0402c3c3538b5c24088b0b668b41fc6683f81e0f94c26683f8220f94c009d0a8017515 *668379fc1f740e668379fc207407668379fc2175328b5b048b0b668b41fc6683f81e0f94c26683 *f8220f94c009d0a80175e3668379fc1f74dc668379fc2074d5668379fc2174ce89d85bc3565383 *ec048b742410833da42b0808007505e8e400000083ec0c56e876ffffff89c683c40850ff35ac2b *0808e881e4000083c41085c075508b0da02b0808a1a42b080889c329cbc1fb048b00a3a42b0808 *89dac1e204c744110800000000a1a02b0808893410a1a02b0808c744100c0000000083ec045356 *ff35ac2b0808e813e5000089d883c41083c4045b5ec383ec18ff74241ce866ffffff8b0da02b08 *0889c2c1e204ff44110883c41cc35383ec088b442410c1e0040305a02b0808ff480883780c0075 *2f83780800752989c3833800741583ec046a00ff30ff35ac2b0808e831e5000083c410a1a42b08 *088903891da42b080883c4085bc35383ec088b1da82b080885db7567c705a82b08084000000083 *ec0868179e07086800040000e87dddffffa3a02b080883c4108d5010b90000000005f003000039 *d072208908c7400400000000c7400800000000c7400c0000000089c183e81039d073e08915a42b *0808e8c1e60000a3ac2b0808eb688b15a82b08088d0412a3a82b080883ec0468179e0708c1e205 *52ff35a02b0808e840ddffffa3a02b080883c41089dac1e2048d0c10bb000000008d440af039c8 *72208918c7400400000000c7400800000000c7400c0000000089c383e81039c873e0890da42b08 *0883c4085bc35756538b7c2410a1a82b0808c1e0048b15a02b08088d34028d5a1039f373338b0b *85c974263b0da02b08080f92c239f10f93c009d0a8017412894b04837b0800740983ec0c53ffd7 *83c41083c31039f372cd5b5e5fc35756538b7c2410a1a82b0808c1e0048b15a02b08088d34028d *5a1039f3733c837b0c00740c83ec0c8d430c50ffd783c4108b0385c0741d3b05a02b08080f92c2 *39f00f93c009d0a801740983ec0c53ffd783c41083c31039f372c45b5e5fc3575653a1a82b0808 *c1e0048b15a02b08088d34028d5a1039f3737e837b0c00741183ec0cff730ce807a1000089430c *83c4108b0385c0745a3b05a02b08080f92c239f00f93c009d0a8017446837b08007540837b0c00 *752b89df833b00741583ec046a00ff33ff35ac2b0808e814e3000083c410a1a42b08088907893d *a42b0808eb0f83ec0cff33e8a6a00000890383c41083c31039f372825b5e5fc35756538b7c2410 *85ff7426833dac2b080800741d83ec086a00ff35ac2b0808e88be30000e8d2e40000a3ac2b0808 *83c410a1a82b0808c1e0048b15a02b08088d34028d5a1039f3737e833b007522837b0400746c83 *ec046a00ff7304ff35ac2b0808e881e20000c7430400000000eb4d8b033b05a02b0808720439f0 *724285ff740583ec04eb1d8b033b4304743283ec046a00ff7304ff35ac2b0808e847e2000083c4 *0c89d82b05a02b0808c1f80450ff33ff35ac2b0808e8aae1000083c41083c31039f372825b5e5f *c3909083ec288d44240c50e87b20feffa3b82b08088b442410a3bc2b080883c42cc3a1f02b0808 *2b05f42b080850db04248d642404db05b02b0808def9c383ec0ce8bdffffffa1bc2b08082b05f4 *2b080850db0424db05b02b0808def983c410c383ec648d442408506a00e88b1cfeff8b44243483 *c46cc35383ec088b1dc02c0808833dc42c0808037621536a446a0168309e0708e83121feff536a *3a6a0168789e0708e82221feff83c42083ec0868a6a10708a1f02c0808c1e00250e8e7d9ffffa3 *182c0808ba0000000083c4103b15f02c08087315a1182c0808c7049000000000423b15f02c0808 *72eb83c4085bc383ec186a02e8a01dfeff83c41083f8ff7520ff35442708086a226a0168b49e07 *08e8b420feffc7042401000000e853d8ffffa3b02b0808e8d6feffffa1b82b0808a3b42b080883 *c40cc383ec0ce8c0feffffa1bc2b0808a3c02b0808a1b82b0808a3c82b0808a1b42b08083b05b8 *2b08087e0cc705c42b080800000000eb10a1b82b08082b05b42b0808a3c42b080883c40cc383ec *0ce877feffffa1b82b0808a3d42b08082b05fc2b08082b05c82b0808a3d02b080885c0790ac705 *d02b080800000000a1bc2b08082b05f42b08082b05c02b0808a3cc2b080885c0790ac705cc2b08 *080000000083c40cc383ec0ce81efeffffa1bc2b08082b05cc2b08082b05f42b08082b05c02b08 *08a3d82b0808a1b82b08082b05d42b0808a3dc2b0808833dd82b080800790ac705d82b08080000 *0000833ddc2b080800790ac705dc2b08080000000083c40cc383ec0ca1082d080885c0743883f8 *017620ff35442708086a046a0168b0a10708e86b1ffeffc705142c080801000000eb1083ec08ff *35442708086a07e82f1dfeff83c410833dc42c080800742ce876fdffffa1bc2b0808a3f02b0808 *a1b82b0808a3f82b0808833dc42c080800740ae8b2fdffffa30c2c080883c40cc35557565383ec *0c8b6c24308b35c02c0808833dc42c0808000f8454010000e828fdffffa1bc2b0808894424088b *1db82b080889c72b3df02b080889d82b05f82b080889442404833dc42c0808040f94c285f60f95 *c021d0a8010f84a6000000e845fdffff89042483ec0c8b442434c1e002508b442434c1e002508b *442434c1e0025068b5a1070856e85619feff83c414558b150c2c080889d02b05102c0808508b44 *241429d05089d82b05b42b080850db04248d6424ecdb05b02b0808dcf9d9c9dd5c2410db442438 *d8f1dd5c2408db442434d8f1dd1c2457db04248d6424fcdef1dd1c2468d89e070856e8f318feff *8b442440a3102c080883c43456e82119feff83c410a1182c0808013ca88b44242cba0000000001 *05e82b08081115ec2b08088b442420ba000000000105e02b08081115e42b0808013df42b08088b *4424040105fc2b0808a1f02c08084839c575218b4424283b05002c08087605a3002c0808ff0508 *2c08088b4424280105042c0808833d142c0808007421ff35442708086a086a0168c4a10708e884 *1dfeffc705142c08080000000083c41083c40c5b5e5f5dc35557565381ec3c0200008bbc245002 *00008b35c02c0808833dc42c0808000f8409050000c744242000000000e876fbffffa1bc2b0808 *8944240ca1b82b08082b05b42b08088944242489fac1fa1f013de02b08081115e42b0808db4424 *0cd9eed9c9dae9dfe080e44580f4407508c744240c01000000db442424d9eed9c9dae9dfe080e4 *4580f4407508c744242401000000bb000000003b1df02c0808731c8b0d282c08088b15f02c0808 *8d04db8b6c811c016c24204339d372f0833dc42c0808030f97c285f60f95c021d0a801743f83ec *0c68cca1070868cca107088d04bd000000005068cda1070856e84f17feff83c418b800000000ba *000000005250525068dea1070856e83317feff83c420833dc42c0808020f97c285f60f95c021d0 *a8010f840d0300006a018d5c243453a1e02b08088b15e42b08080fa4c202c1e0025250e8b3d6ff *ff83c40c53680c9f070856e8e816feff6a0153a1e82b08088b15ec2b08080fa4c202c1e0025250 *e888d6ffff83c41c5368eda1070856e8bd16feff83c410833d082c080800742c6a0153a1002c08 *08c1e002ba000000005250e856d6ffffff35082c08085368309f070856e88816feff83c42083ec *08566a0ae88a19feffbb0000000083c4103b1df02c0808733a83ec10a1182c0808db0498db05b0 *2b0808def9dd1c24538d14dba1282c0808ff74901c68609f070856e83c16feff83c420433b1df0 *2c080872c683ec04a1902c080825ff0f000050688c9f070856e81716feff83ec08db05c42b0808 *db05b02b0808dcf9d9c9dd5c2408db05c02b0808def1dd1c2468ac9f070856e8ea15feff83c408 *db05d02b0808db05b02b0808dcf9d9c9dd5c2408db05cc2b0808def1dd1c2468d49f070856e8bd *15feff83c408db05fc2b0808db05b02b0808dcf9d9c9dd5c2408db05f42b0808def1dd1c2468fc *9f070856e89015feff83c408db05dc2b0808db05b02b0808dcf9d9c9dd5c2408db05d82b0808de *f1dd1c246824a0070856e86315feff83c408db44243cdd5c2430db05b02b0808dd442430d8f1dd *5c2408db442424dd542428def1dd1c24684ca0070856e83015feff83c408db05fc2b0808db05b0 *2b0808dcf9d90520a20708dccadd442430d8f2defbd9cadd5c2408db05f42b0808d8f1decadc7c *2428def9dd1c246878a0070856e8eb14feff83c4208b44240c3b05f42b0808750d6a018d442434 *506a006a00eb5d6a018d44243450a1e02b08088b15e42b08080fa4c202c1e0025250df2c248d64 *240885d27906d80524a20708dd5c2430dd4424308b4424142b05f42b080850db04248d6424fcdb *05b02b0808def9def9dd1c24e897f9000083c4085250e829d4ffff83c40c8d4424345068a4a007 *0856e85a14feff83c4088b4424142b05f42b08082b05c02b080850db04248d6424f4db05b02b08 *08dcf9d9c9d80d20a20708db44243cd8f2d8f9dd5c2408db442424def2def1dd1c2468d0a00708 *56e80d14feff83c420833dc42c0808020f94c285f60f95c021d0a8010f84bf000000a1e02b0808 *8b15e42b08080fa4c202c1e0025250680aa2070856e8d213feff83ec24db05fc2b0808db05b02b *0808dcf9d9c9dd5c2428db05f42b0808d8f1dd5c2420db05d02b0808d8f1dd5c2418db05cc2b08 *08d8f1dd5c2410db05c42b0808d8f1dd5c2408db05c02b0808def1dd1c24a1902c080825ff0f00 *0050ff35082c0808a1002c0808c1e00250b800000000833d082c0808007413a1042c0808c1e002 *ba00000000f735082c080850ff7424646810a1070856e83513feff83c45083ec0c56e86913feff *83c4103b3544270808740c83ec0c56e8e516feff83c41081c43c0200005b5e5f5dc3b804000000 *f725382c0808c390909081ec1c20000089e0050020000089580089700489780889680c8b9c2424 *2000008b842420200000ffe089f089e281c2002000008b5a008b72048b7a088b6a0c81c41c2000 *00c39090565383ec148b7424208b5c2424c744240800000000c744240c0000000089f0c1f81f89 *c131f129c1497828d90528a20708dd442408d8c98b048bba000000005250df2c248d642408dec1 *dd5c24084979e0ddd8dd442408d9eed9c9dde1dfe0ddd980e44580fc40741c83ec04ff74242c8d *6424f8dd1c24e8c417feffdd5c241883c410eb02ddd885f679058074240f80dd44240883c4145b *5ec35383ec088b5c241089dac1fa1f89d031d829d050db04248d642404dd1c24dd0424d9eed9c9 *dde1dfe0ddd980e44580fc40741c83ec04ff7424188d6424f8dd1c24e86017feffdd5c241083c4 *10eb02ddd885db79058074240780dd042483c4085bc3565383ec148b7424208b5c2424b8000000 *008944241089f0c1f81f89c131f129c1497828d90528a20708d9c0d84c24108b048bba00000000 *5250df2c248d642408dec1d95c24104979e0ddd8d9442410d9eed9c9dde1dfe0ddd980e44580fc *40741c83ec04ff74242c8d6424f8dd1c24e8cf16feffd95c242083c410eb02ddd885f679058074 *241380d944241083c4145b5ec35383ec088b5c241089dac1fa1f89d031d829d050db04248d6424 *04d95c2404d9442404d9eed9c9dde1dfe0ddd980e44580fc40741c83ec04ff7424188d6424f8dd *1c24e86916feffd95c241483c410eb02ddd885db79058074240780d944240483c4085bc3555756 *5383ec0c8b7424208b6c24248b4424288b54242c890424895424048b04248b54240489c3c70602 *00000085c07518f7c2ffffff7f7510c7460400000000c7450000000000eb61c746040200000089 *d1c1e91481e1ff07000081e93304000089d781e2ffff0f0081f9cdfbffff740881ca00001000eb *1c41f7c200001000751389d8c1e81f8d145001db49f7c20000100074ed894d008b460889188b46 *0889500485ff7903f75e0483c40c5b5e5f5dc356538b4c240c8b5c24108b542414c70101000000 *f7c2ffffff7f750fc7410400000000c70300000000eb55c741040100000089d0c1f81725ff0000 *002d96000000890389d681e2ffff7f003d6affffff740881ca00008000eb1a8b03408903f7c200 *008000750d01d248f7c20000800074f589038b4108891085f67903f759045b5ec35383ec088b44 *24108b542414890424895424048b14248b4c2404bb0000000089c8c1e81425ff0700003dff0700 *007511f7c1ffff0f00750485d27405bb0100000089d883c4085bc35383ec088b4424108b542414 *890424895424048b14248b4c2404bb0000000089c825ffffff7f3d0000f07f750985d27505bb01 *00000089d883c4085bc383ec0c8b4424108b542414890424895424048b14248b4c2404b8000000 *00f7c10000f07f7511f7c1ffff0f00750485d27405b80100000083c40cc35383ec088b4424108b *542414890424895424048b14248b4c2404bb0000000081f900000080750985d27505bb01000000 *89d883c4085bc38b542404b90000000089d0c1e8173cff750df7c2ffff7f007405b90100000089 *c8c38b44240425ffffff7f3d0000807f0f94c025ff000000c38b542404b90000000089d0c1e817 *84c0750df7c2ffff7f007405b90100000089c8c3817c2404000000800f94c025ff000000c35557 *565383ec0c833d282c0808000f8581030000833dd02c0808007412a1dc2c08083b05d02c080876 *05a3d02c0808833dd02c0808007426a1d42c08083b05d02c0808761983ec0c682ca20708e854cb *ffffc7042401000000e83612feffe8f57b000083ec0868a7a20708a1f02c08088d04c0c1e00250 *e8b6cbffffa3282c0808bd0000000083c4103b2df02c0808733b8d44ed008b15282c08088d0482 *8928c7401020190808c7401420190808c7401c00000000c7402000000000c7400c00000000453b *2df02c080872c58b15282c080889152c2c0808a1f02c08088d04c08d4482dca3302c0808833df0 *2c0808017679c74008010000008b1d302c080883ec0868b9a207086a50e824cbffff89430483c4 *10bd00000000833df02c08080174708d5ced00c1e3028b15f42c0808a1282c0808895418088b35 *282c080883ec0868d0a20708a1f42c08088d0480c1e00450e8dbcaffff89441e0483c41045a1f0 *2c08084839c572b9eb27a12c2c0808c74008010000008b1d2c2c080883ec0868d0a207086a50e8 *a6caffff89430483c410bd000000003b2df02c08080f83ca000000bf000000008b15282c080889 *d68d04ed0000000089c301e83b7c82080f839b0000008d4c1d00c1e1028d04bfc1e00403440e04 *8938c7400400000000c7403400000000c740080000000089ca0315282c0808895010896814c740 *2400000000c7402800000000c7402c00000000c7403c00000000c7403800000000c74018000000 *00c7401c00000000c7404000000000c7404400000000c7404800000000c7402000000000c7404c *00000000478b35282c08083b7c0e080f8265ffffff453b2df02c08080f8236ffffffbd00000000 *833df02c08080174728b15282c080889d38d04ed0000000089c601e8bf00000000837c82080174 *298d4c3500c1e1028b5c0b048d04bfc1e0048d5403508954030c478b1d282c08088b440b084839 *c772d78b0d282c08088d54ed00c1e2028b5c11048d04bfc1e0048b5411288954030c45a1f02c08 *084839c5728e833dfc2c080800742a833df02c080801751283ec0c6870a20708e8f8c8ffff83c4 *10eb0fa1302c08088b4004c7402001000000a1302c08088b400489400ca1282c0808c7400c0000 *0000a1282c08088b4004a3342c0808e89f000000c705b02d080800000000c7051c2c0808000000 *00c705ac2d080800000000c705a02d080800000000a1d42c0808a3a82d080883ec04688b910608 *6853910608682b910608e8720ffeff83c41083c40c5b5e5f5dc383ec1ce8fb030000890424e838 *f2ffff83c41cc38b542404c7420c00000000a1302c08088b4014894208a1302c0808895014c38b *4424048b1089500c8b151c2c0808895008a31c2c0808c35383ec108b1d342c0808ff35d42c0808 *6a00e8730000008943048b15d42c0808a1342c0808895008a1342c0808c7403000000000a1342c *0808c74034000000008b15342c08088b4204a32c2e08088b4204a3302e080883c4185bc3a1342c *08088b500485d2740c8b028942048b520885d275f4a1342c08088b500489152c2e08088b4004a3 *302e0808c35756538b5c24108b7c2414be0000000039fe7333e82c79000089c289580885db7403 *89430ca1342c0808894214c7421000000000c7421c000000008b0289420489d34639fe72cdc743 *0c0000000089d85b5e5fc35756538b7c24108b1d342c08088b730839fe745f39fe723da1342c08 *088b500439fe761f8b5a08c7430c000000002b721883ec0c52e8a279000089da83c41039fe77e1 *a1342c080889500439fe731c8b1d342c080883ec0889f829f050ff7304e847ffffff89430483c4 *10a1342c08088978085b5e5fc35557565383ec0c8b7c242081ff3203000076718d1cbdff0f0000 *c1eb0c83ec0c53e8f676000089c283c41089c58b0d342c08088d71188b4118894208c7420c0000 *00008379180074068b411889500c892ea1342c080801581cc7421000000000a1342c0808894214 *c7421c020000008b028d04b8894204011da02d08088b02e984000000833dac2d0808007410a120 *2c08088d04b83b05242c0808765b833dac2d080800740e8b15202c0808a1ac2d0808895004e8c1 *77000089c2a1ac2d08088942088915ac2d0808c7421000000000a1342c0808894214c7421c0000 *00008b02a3202c08088b020500100000a3242c0808ff05a02d08088b15202c08088d04baa3202c *080889d083c40c5b5e5f5dc38b15a02d0808c1e20aa1242c08082b05202c0808c1f80289d129c1 *833da42d08080074158b15a42d08088b022b42040500100000c1f80229c189c8c3833dac2d0808 *00740e8b15202c0808a1ac2d0808895004c35756538b5c24108b0da42d080881fb32030000760e *83ec0c53e87efeffff83c410eb774383e3fe85c974118b41048d14988b01050010000039c27653 *e8d576000089c1a3a42d080889c78b15342c08088d72188b4218894108c7410c00000000837a18 *0074068b421889480c893ec7411000000000a1342c0808894114c7411c060000008b01894104ff *05a02d08088b51048d049a89410489d05b5e5fc35383ec148b5c241c83c305c1eb028d430250e8 *e7fdffffc700d0ef060889580483c00883c4185bc35756538b74241483ec0cff742424e8c5ffff *ff89c7bb000000008b4c242089c283c41039f3730b8a01880243414239f372f589f85b5e5fc3c3 *565383ec048b35302e0808a1342c08088b5808c1e30ae892feffff8d14188b460885c0740d81ea *000400008b400885c075f38b0e8d8100100000394604730f89c82b46040500100000c1f80229c2 *0115382c080889d083c4045b5ec35557565383ec08bd00000000833df02c0808017522a1342c08 *088b4834c1e10a8b502c8b42042b02c1e8028d840800fcffffe98c000000be000000003b35f02c *0808737da1282c0808894424048b3df02c0808893c24bb000000008b4c24048d04f50000000089 *c201f03b5c8108734b89cf89f009d874308d04168d149bc1e204035481048b421c034208c1e00a *8dac2800fcffff837a2c00740d8b522c8b42042b02c1e80201c54389f98d14f5000000008d0416 *3b5c870872b7463b3424729589e883c4085b5e5f5dc35557565383ec10c744240c00000000bd00 *000000b8000000003b05f02c08080f83920000008b15282c0808895424048b1df02c0808891c24 *bf000000008b4c24048d04ed0000000089c201e83b7c8108735f894c240889e809f8743f89cb8d *4c1500c1e1028d04bfc1e0048b540b048d34028b420803421c3b440b0c7616837e200075108b46 *088b54240c8d14428954240ceb078b5e08015c240c478b4c24088d14ed000000008d4415003b7c *810872a5453b2c2472818b44240c83c4105b5e5f5dc3909083ec0c833d3c2c080800750ae81dcc *0000a33c2c080883c40cc35383ec148b5c241c53e82e00000083c40cff74241853ff353c2c0808 *e85fc9000083c4185bc383ec14ff742418ff353c2c0808e864c8000083c41cc3565383ec0c8b74 *241856ff353c2c0808e84bc8000089c383c41085c0741b83ec045056ff353c2c0808e897c90000 *891c24e8b7c2ffff83c41083c4045b5ec3909090833d142d0808007e23ff0d402c0808833d402c *0808007f14a1142d0808a3402c0808c705482a080801000000c383ec146810940608ff74241ce8 *42dc000083c41cc383ec0ce8a5dc000083c40cc3909083ec0ce8cbbdffff8b15b02d080885d274 *438b4210a3b02d0808813ac8ee06087429c702c8ee0608817a0c18190808741a83ec086a00ff72 *0ce85bbcffffe891bdffffe88bbdffff83c4108b15b02d080885d275bde87abdffff83c40cc356 *5383ec048b742410bb0000000089f285f6741e817a0c181908080f95c025ff00000001c3c702c8 *ee06088b521085d275e285db0f84bf00000083ec0c8d430350e825faffff89c1c70000f00608c7 *400800000000895804bb0000000089f283c41085f67418817a0c1819080874088b420c8944990c *438b521085d275e88b35cc2c080883ec085183ec1053e8d4b6ffff83c408506848100808e8f0b8 *ffff83c41450e8e7b8ffff89c3893424e817cbffff8b48308d51fc895030c741fc00f106088b48 *308d51fc895030c741fce89706088b48308d51fc8950308959fc8b48308d51fc895030c741fc18 *c70608890424e8e0cbffff83c41083c4045b5ec3909090c390909083ec0cff742414ff74241468 *e4a20708ff3544270808e83102feff83c41cc390c390909083ec0c8b54241489d0c1e814505268 *1ca30708ff3544270808e80a02feff83c41cc3909083ec10ff7424146884a30708ff3544270808 *e8ed01feff83c41cc3905496060854960608549606085496060854960608549606085496060854 *96060800000000000000002400000083c5048b06668b40fc25ffff000083e80b83f8177711ff24 *85d8a307088b7604ebe18b4500ffe08b06ebfa90000000001c00000089f2668b460625ffff0000 *89442408c1e00289e929c13b4b54731083ed048b4304894500b88cc80608ffe08b442408c1e002 *29c58b760883c20cb9000000003b4c240873108b0289448d0083c204413b4c240872f08b06ebd0 *8d7600000000001b00000089f2668b460625ffff000089442408c1e00289e929c189c883e8083b *435473058b43f8ffe08d45f8c700a00007088970048b442408c1e00289e929c18d69f88b760883 *c20cb9000000003b4c240873108b0289448d0083c204413b4c240872f08b06ebbf000000001d00 *000089f28b460489442408c1e00289e929c189c883e8083b435473058b43f8ffe08d45f8c700a0 *0007088970048b442408c1e00289e929c18d69f88b760883c20cb9000000003b4c240873108b02 *89448d0083c204413b4c240872f08b06668b40fc25ffff000083e80b83f8177711ff248538a407 *088b7604ebe18b4500eb9f8b06eb9b90900000000000000000240000008b1683ea08668b420425 *ffff000083e80b83f8260f873d010000ff248568a507088b461489c281e2ffff000083fa017523 *83c504b848ec0608ffe0668b42fe89c281e2ffff000083fa01750883c504e9f400000083c70c3b *7b5c7609c7436c03000000eb68b803000000c1e00289f929c189c883c004c700889606084a6689 *500489700866c74006000089c6e9a50000008b460489c281e2ffff000083fa01751183c504c743 *04e8970608b888960608eb8789742418668b460625ffff000083c0038d3c873b7b5c761289436c *c74500e89706088b43f8e95dffffffc1e00289f929c183c104c701889606088d42ff668941048b *542418668b4206668941068b4208894108668b42066689442412ba000000006685c0741c25ffff *0000894424148b4424188b44900c8944910c423b54241472ed89ce83c5048b4500e9f8feffffc7 *4500e89706088b06e9eafeffff8b7604e9a9feffff83ec0c6898a40708e8acbbffff0000000021 *000000240000008b1683ea08668b420425ffff000083e80b83f8260f87dd010000ff248504a607 *08668b461489c181e1ffff000083f901750a83c504b848ec0608ffe083c7103b7b5c775bb80400 *0000c1e00289fa29c283c204c702889606088d41ff6689420489720866c742060100b900000000 *8b448d0489448a0c4174f5e956010000668b42fe89c181e1ffff000083f901750883c504e95101 *000083c7103b7b5c7609c7436c04000000eb7ab804000000c1e00289fa29c283c204c702889606 *088d41ff6689420489720866c742060100b9000000008b448d0489448a0c4174f5e9f200000066 *8b460489c181e1ffff000083f901751483c504c7430458990608b888960608e933ffffff897424 *18668b460625ffff000083c0048d3c873b7b5c761289436cc74500589906088b43f8e909ffffff *c1e00289fa29c283c20489542414c702889606088d41ff668942048b4c2418668b410640668942 *068b4108894208668b410689c2c7442408000000006685c0742b81e2ffff00008954240c8b5424 *088b4c24188b44910c8b4c24148944910c42895424088b44240c39c272dfc7442408000000008b *542418668b420625ffff0000894424108b4c2410034c24088b4424088b4485048b54241489448a *0cff44240874e289d683c5088b4500e959feffffc74500589906088b06e94bfeffff8b7604e909 *feffff83ec0c68a5a40708e89cb9ffff0000000062000000240000008b1683ea08668b420425ff *ff000083e80b83f8260f87ea010000ff2485a0a60708668b461489c181e1ffff000083f901750a *83c504b848ec0608ffe083c7143b7b5c775eb805000000c1e00289fa29c283c204c70288960608 *8d41ff6689420489720866c742060200b9000000008b448d0489448a0c4183f90176f2e9600100 *00668b42fe89c181e1ffff000083f901750883c504e95b01000083c7143b7b5c7609c7436c0500 *0000eb7db805000000c1e00289fa29c283c204c702889606088d41ff6689420489720866c74206 *0200b9000000008b448d0489448a0c4183f90176f2e9f9000000668b460489c181e1ffff000083 *f901751483c504c74304689b0608b888960608e92dffffff89742418668b460625ffff000083c0 *058d3c873b7b5c761289436cc74500689b06088b43f8e903ffffffc1e00289fa29c283c2048954 *2414c702889606088d41ff668942048b4c2418668b410683c002668942068b4108894208668b41 *0689c2c7442408000000006685c0742b81e2ffff00008954240c8b5424088b4c24188b44910c8b *4c24148944910c42895424088b44240c39c272dfc7442408000000008b542418668b420625ffff *0000894424108b4c2410034c24088b4424088b4485048b54241489448a0cff442408837c240801 *76dd89d683c50c8b4500e94cfeffffc74500689b06088b06e93efeffff8b7604e9fcfdffff83ec *0c68b2a40708e87fb7ffff8d76000000000062000000240000008b1683ea08668b420425ffff00 *0083e80b83f8260f87ea010000ff24853ca70708668b461489c181e1ffff000083f901750a83c5 *04b848ec0608ffe083c7143b7b5c775eb805000000c1e00289fa29c283c204c702889606088d41 *ff6689420489720866c742060200b9000000008b448d0489448a0c4183f90176f2e96001000066 *8b42fe89c181e1ffff000083f901750883c504e95b01000083c7143b7b5c7609c7436c05000000 *eb7db805000000c1e00289fa29c283c204c702889606088d41ff6689420489720866c742060200 *b9000000008b448d0489448a0c4183f90176f2e9f9000000668b460489c181e1ffff000083f901 *751483c504c74304889d0608b888960608e92dffffff89742418668b460625ffff000083c0058d *3c873b7b5c761289436cc74500889d06088b43f8e903ffffffc1e00289fa29c283c20489542414 *c702889606088d41ff668942048b4c2418668b410683c002668942068b4108894208668b410689 *c2c7442408000000006685c0742b81e2ffff00008954240c8b5424088b4c24188b44910c8b4c24 *148944910c42895424088b44240c39c272dfc7442408000000008b542418668b420625ffff0000 *894424108b4c2410034c24088b4424088b4485048b54241489448a0cff442408837c24080176dd *89d683c50c8b4500e94cfeffffc74500889d06088b06e93efeffff8b7604e9fcfdffff83ec0c68 *bfa40708e85fb5ffff8d76000000000021000000240000008b1683ea08668b420425ffff000083 *e80b83f8260f87dd010000ff2485d8a70708668b461489c181e1ffff000083f901750a83c504b8 *48ec0608ffe083c7103b7b5c775bb804000000c1e00289fa29c283c204c702889606088d41ff66 *89420489720866c742060100b9000000008b448d0489448a0c4174f5e956010000668b42fe89c1 *81e1ffff000083f901750883c504e95101000083c7103b7b5c7609c7436c04000000eb7ab80400 *0000c1e00289fa29c283c204c702889606088d41ff6689420489720866c742060100b900000000 *8b448d0489448a0c4174f5e9f2000000668b460489c181e1ffff000083f901751483c504c74304 *a89f0608b888960608e933ffffff89742418668b460625ffff000083c0048d3c873b7b5c761289 *436cc74500a89f06088b43f8e909ffffffc1e00289fa29c283c20489542414c702889606088d41 *ff668942048b4c2418668b410640668942068b4108894208668b410689c2c74424080000000066 *85c0742b81e2ffff00008954240c8b5424088b4c24188b44910c8b4c24148944910c4289542408 *8b44240c39c272dfc7442408000000008b542418668b420625ffff0000894424108b4c2410034c *24088b4424088b4485048b54241489448a0cff44240874e289d683c5088b4500e959feffffc745 *00a89f06088b06e94bfeffff8b7604e909feffff83ec0c68cca40708e84cb3ffff000000000100 *0000240000008b1683ea08668b420425ffff000083e80b83f8260f87dd010000ff248574a80708 *668b461489c181e1ffff000083f901750a83c504b848ec0608ffe083c7103b7b5c775bb8040000 *00c1e00289fa29c283c204c702889606088d41ff6689420489720866c742060100b9000000008b *448d0489448a0c4174f5e956010000668b42fe89c181e1ffff000083f901750883c504e9510100 *0083c7103b7b5c7609c7436c04000000eb7ab804000000c1e00289fa29c283c204c70288960608 *8d41ff6689420489720866c742060100b9000000008b448d0489448a0c4174f5e9f2000000668b *460489c181e1ffff000083f901751483c504c74304b8a10608b888960608e933ffffff89742418 *668b460625ffff000083c0048d3c873b7b5c761289436cc74500b8a106088b43f8e909ffffffc1 *e00289fa29c283c20489542414c702889606088d41ff668942048b4c2418668b41064066894206 *8b4108894208668b410689c2c7442408000000006685c0742b81e2ffff00008954240c8b542408 *8b4c24188b44910c8b4c24148944910c42895424088b44240c39c272dfc7442408000000008b54 *2418668b420625ffff0000894424108b4c2410034c24088b4424088b4485048b54241489448a0c *ff44240874e289d683c5088b4500e959feffffc74500b8a106088b06e94bfeffff8b7604e909fe *ffff83ec0c68d9a40708e83cb1ffff0000000001000000240000008b1683ea08668b420425ffff *000083e80b83f8260f8726020000ff248510a90708668b461489c181e1ffff000083f90175148b *4504894500c74504e8970608b848ec0608ffe083f902750583c504ebef83c7103b7b5c7772b804 *000000c1e00289fa29c283c204c702889606088d41fe6689420489720866c742060100b9000000 *008b448d0489448a0c4174f5e98b010000668b42fe89c181e1ffff000083f90175128b45048945 *00c74504e8970608e97c01000083f902750883c504e96f01000083c7103b7b5c760cc7436c0400 *0000e995000000b804000000c1e00289fa29c283c204c702889606088d41fe6689420489720866 *c742060100b9000000008b448d0489448a0c4174f5e90d010000668b460489c181e1ffff000083 *f90175168b4504894500c74504e8970608c74304b8a10608eb0f83f902751483c504c74304c8a3 *0608b888960608e9f4feffff89742418668b460625ffff000083c0048d3c873b7b5c761289436c *c74500c8a306088b43f8e9cafeffffc1e00289fa29c283c20489542414c702889606088d41fe66 *8942048b4c2418668b410640668942068b4108894208668b410689c2c7442408000000006685c0 *742b81e2ffff00008954240c8b5424088b4c24188b44910c8b4c24148944910c42895424088b44 *240c39c272dfc7442408000000008b542418668b420625ffff0000894424108b4c2410034c2408 *8b4424088b4485048b54241489448a0cff44240874e289d683c5088b4500e91afeffffc74500c8 *a306088b06e90cfeffff8b7604e9c0fdffff83ec0c68e6a40708e8e3aeffff8d76000000000002 *000000240000008b1683ea08668b420425ffff000083e80b83f8260f8733020000ff2485aca907 *08668b461489c181e1ffff000083f90175148b4504894500c74504b8a10608b848ec0608ffe083 *f902750583c504ebef83c7143b7b5c7775b805000000c1e00289fa29c283c204c702889606088d *41fe6689420489720866c742060200b9000000008b448d0489448a0c4183f90176f2e995010000 *668b42fe89c181e1ffff000083f90175128b4504894500c74504b8a10608e98601000083f90275 *0883c504e97901000083c7143b7b5c760cc7436c05000000e998000000b805000000c1e00289fa *29c283c204c702889606088d41fe6689420489720866c742060200b9000000008b448d0489448a *0c4183f90176f2e914010000668b460489c181e1ffff000083f90175168b4504894500c74504b8 *a10608c74304b8a10608eb0f83f902751483c504c7430424a60608b888960608e9eefeffff8974 *2418668b460625ffff000083c0058d3c873b7b5c761289436cc7450024a606088b43f8e9c4feff *ffc1e00289fa29c283c20489542414c702889606088d41fe668942048b4c2418668b410683c002 *668942068b4108894208668b410689c2c7442408000000006685c0742b81e2ffff00008954240c *8b5424088b4c24188b44910c8b4c24148944910c42895424088b44240c39c272dfc74424080000 *00008b542418668b420625ffff0000894424108b4c2410034c24088b4424088b4485048b542414 *89448a0cff442408837c24080176dd89d683c50c8b4500e90dfeffffc7450024a606088b06e9ff *fdffff8b7604e9b3fdffff83ec0c68f4a40708e87aacffff89f60000000002000000240000008b *1683ea08668b420425ffff000083e80b83f8260f878f020000ff248548aa0708668b461489c181 *e1ffff000083f90175148b4504894500c74504c8a30608b848ec0608ffe083f90275158b450489 *45008b4508894504c74508e8970608ebdf83f903750583c504ebd583c7143b7b5c0f8792000000 *b805000000c1e00289fa29c283c204c702889606088d41fd6689420489720866c742060200b900 *0000008b448d0489448a0c4183f90176f2e9d3010000668b42fe89c181e1ffff000083f9017512 *8b4504894500c74504c8a30608e9c401000083f90275188b45048945008b4508894504c74508e8 *970608e9a701000083f903750883c504e99a01000083c7143b7b5c760cc7436c05000000e9b900 *0000b805000000c1e00289fa29c283c204c702889606088d41fd6689420489720866c742060200 *b9000000008b448d0489448a0c4183f90176f2e935010000668b460489c181e1ffff000083f901 *75168b4504894500c74504c8a30608c74304b8a10608eb3083f902751c8b45048945008b450889 *4504c74508e8970608c7430424a60608eb0f83f903751483c504c743048ca80608b888960608e9 *92feffff89742418668b460625ffff000083c0058d3c873b7b5c761289436cc745008ca806088b *43f8e968feffffc1e00289fa29c283c20489542414c702889606088d41fd668942048b4c241866 *8b410683c002668942068b4108894208668b410689c2c7442408000000006685c0742b81e2ffff *00008954240c8b5424088b4c24188b44910c8b4c24148944910c42895424088b44240c39c272df *c7442408000000008b542418668b420625ffff0000894424108b4c2410034c24088b4424088b44 *85048b54241489448a0cff442408837c24080176dd89d683c50c8b4500e9b1fdffffc745008ca8 *06088b06e9a3fdffff8b7604e957fdffff83ec0c6802a50708e8b6a9ffff89f600000000030000 *00240000008b1683ea08668b420425ffff000083e80b83f8260f8791020000ff2485e4aa070866 *8b461489c281e2ffff000083fa0175148b4504894500c7450424a60608b848ec0608ffe083fa02 *75158b45048945008b4508894504c74508b8a10608ebdf83fa03750583c504ebd583c7183b7b5c *0f8792000000b806000000c1e00289f929c183c104c701889606088d42fd6689410489710866c7 *41060300ba000000008b4495048944910c4283fa0276f2e999000000668b42fe89c281e2ffff00 *0083fa0175128b4504894500c7450424a60608e9c601000083fa0275188b45048945008b450889 *4504c74508b8a10608e9a901000083fa03750883c504e99c01000083c7183b7b5c760cc7436c06 *000000e9bb000000b806000000c1e00289f929c183c104c701889606088d42fd66894104897108 *66c741060300ba000000008b4495048944910c4283fa0276f289cee937010000668b460489c281 *e2ffff000083fa0175168b4504894500c7450424a60608c74304b8a10608eb3083fa02751c8b45 *048945008b4508894504c74508b8a10608c7430424a60608eb0f83fa03751483c504c7430450ab *0608b888960608e990feffff89742418668b460625ffff000083c0068d3c873b7b5c761289436c *c7450050ab06088b43f8e966feffffc1e00289f929c183c104894c2414c701889606088d42fd66 *8941048b542418668b420683c003668941068b4208894108668b420689c2c74424080000000066 *85c0742b81e2ffff00008954240c8b4c24088b5424188b448a0c8b54241489448a0c41894c2408 *8b44240c39c172dfc7442408000000008b542418668b420625ffff0000894424108b4c2410034c *24088b4424088b4485048b54241489448a0cff442408837c24080276dd89d683c5108b4500e9af *fdffffc7450050ab06088b06e9a1fdffff8b7604e955fdffff83ec0c6811a50708e8f0a6ffff00 *00000004000000240000008b1683ea08668b420425ffff000083e80b83f8260f87fb020000ff24 *8580ab0708668b461489c281e2ffff000083fa0175148b4504894500c7450450ab0608b848ec06 *08ffe083fa0275158b45048945008b4508894504c7450824a60608ebdf83fa03751b8b45048945 *008b45088945048b450c894508c7450cb8a10608ebbf83fa04750583c504ebb583c71c3b7b5c0f *87b5000000b807000000c1e00289f929c183c104c701889606088d42fc6689410489710866c741 *060400ba000000008b4495048944910c4283fa0376f2e9bc000000668b42fe89c281e2ffff0000 *83fa0175128b4504894500c7450450ab0608e91002000083fa0275188b45048945008b45088945 *04c7450824a60608e9f301000083fa03751e8b45048945008b45088945048b450c894508c7450c *b8a10608e9d001000083fa04750883c504e9c301000083c71c3b7b5c760cc7436c07000000e9e2 *000000b807000000c1e00289f929c183c104c701889606088d42fc6689410489710866c7410604 *00ba000000008b4495048944910c4283fa0376f289cee95e010000668b460489c281e2ffff0000 *83fa0175168b4504894500c7450450ab0608c74304b8a10608eb5783fa02751c8b45048945008b *4508894504c7450824a60608c7430424a60608eb3683fa0375228b45048945008b45088945048b *450c894508c7450cb8a10608c7430450ab0608eb0f83fa04751483c504c7430414ae0608b88896 *0608e926feffff89742418668b460625ffff000083c0078d3c873b7b5c761289436cc7450014ae *06088b43f8e9fcfdffffc1e00289f929c183c104894c2414c701889606088d42fc668941048b54 *2418668b420683c004668941068b4208894108668b420689c2c7442408000000006685c0742b81 *e2ffff00008954240c8b4c24088b5424188b448a0c8b54241489448a0c41894c24088b44240c39 *c172dfc7442408000000008b542418668b420625ffff0000894424108b4c2410034c24088b4424 *088b4485048b54241489448a0cff442408837c24080376dd89d683c5148b4500e945fdffffc745 *0014ae06088b06e937fdffff8b7604e9ebfcffff83ec0c6820a50708e8c2a3ffff89f600000000 *05000000240000008b1683ea08668b420425ffff000083e80b83f8260f877a030000ff24851cac *0708668b461489c281e2ffff000083fa0175148b4504894500c7450414ae0608b848ec0608ffe0 *83fa0275158b45048945008b4508894504c7450850ab0608ebdf83fa03751b8b45048945008b45 *088945048b450c894508c7450c24a60608ebbf83fa0475218b45048945008b45088945048b450c *8945088b451089450cc74510b8a10608eb9983fa05750583c504eb8f83c7203b7b5c0f87de0000 *00b808000000c1e00289f929c183c104c701889606088d42fb6689410489710866c741060500ba *000000008b4495048944910c4283fa0476f2e9e5000000668b42fe89c281e2ffff000083fa0175 *128b4504894500c7450414ae0608e96902000083fa0275188b45048945008b4508894504c74508 *50ab0608e94c02000083fa03751e8b45048945008b45088945048b450c894508c7450c24a60608 *e92902000083fa0475248b45048945008b45088945048b450c8945088b451089450cc74510b8a1 *0608e90002000083fa05750883c504e9f301000083c7203b7b5c760cc7436c08000000e9120100 *00b808000000c1e00289f929c183c104c701889606088d42fb6689410489710866c741060500ba *000000008b4495048944910c4283fa0476f289cee98e010000668b460489c281e2ffff000083fa *0175198b4504894500c7450414ae0608c74304b8a10608e98400000083fa02751c8b4504894500 *8b4508894504c7450850ab0608c7430424a60608eb6383fa0375228b45048945008b4508894504 *8b450c894508c7450c24a60608c7430450ab0608eb3c83fa0475288b45048945008b4508894504 *8b450c8945088b451089450cc74510b8a10608c7430414ae0608eb0f83fa05751483c504c74304 *44b10608b888960608e9a7fdffff89742418668b460625ffff000083c0088d3c873b7b5c761289 *436cc7450044b106088b43f8e97dfdffffc1e00289f929c183c104894c2414c701889606088d42 *fb668941048b542418668b420683c005668941068b4208894108668b420689c2c7442408000000 *006685c0742b81e2ffff00008954240c8b4c24088b5424188b448a0c8b54241489448a0c41894c *24088b44240c39c172dfc7442408000000008b542418668b420625ffff0000894424108b4c2410 *034c24088b4424088b4485048b54241489448a0cff442408837c24080476dd89d683c5188b4500 *e9c6fcffffc7450044b106088b06e9b8fcffff8b7604e96cfcffff83ec0c6830a50708e813a0ff *ff8d76000000000006000000240000008b1683ea08668b420425ffff000083e80b83f8260f8711 *040000ff2485b8ac0708668b461489c281e2ffff000083fa0175148b4504894500c7450444b106 *08b848ec0608ffe083fa0275158b45048945008b4508894504c7450814ae0608ebdf83fa03751b *8b45048945008b45088945048b450c894508c7450c50ab0608ebbf83fa0475218b45048945008b *45088945048b450c8945088b451089450cc7451024a60608eb9983fa05752a8b45048945008b45 *088945048b450c8945088b451089450c8b4514894510c74514b8a10608e96affffff83fa067508 *83c504e95dffffff83c7243b7b5c0f870d010000b809000000c1e00289f929c183c104c7018896 *06088d42fa6689410489710866c741060600ba000000008b4495048944910c4283fa0576f2e914 *010000668b42fe89c281e2ffff000083fa0175128b4504894500c7450444b10608e9ce02000083 *fa0275188b45048945008b4508894504c7450814ae0608e9b102000083fa03751e8b4504894500 *8b45088945048b450c894508c7450c50ab0608e98e02000083fa0475248b45048945008b450889 *45048b450c8945088b451089450cc7451024a60608e96502000083fa05752a8b45048945008b45 *088945048b450c8945088b451089450c8b4514894510c74514b8a10608e93602000083fa067508 *83c504e92902000083c7243b7b5c760cc7436c09000000e948010000b809000000c1e00289f929 *c183c104c701889606088d42fa6689410489710866c741060600ba000000008b4495048944910c *4283fa0576f289cee9c4010000668b460489c281e2ffff000083fa0175198b4504894500c74504 *44b10608c74304b8a10608e9ba00000083fa02751f8b45048945008b4508894504c7450814ae06 *08c7430424a60608e99600000083fa0375228b45048945008b45088945048b450c894508c7450c *50ab0608c7430450ab0608eb6f83fa0475288b45048945008b45088945048b450c8945088b4510 *89450cc7451024a60608c7430414ae0608eb4283fa05752e8b45048945008b45088945048b450c *8945088b451089450c8b4514894510c74514b8a10608c7430444b10608eb0f83fa06751483c504 *c74304f4b40608b888960608e910fdffff89742418668b460625ffff000083c0098d3c873b7b5c *761289436cc74500f4b406088b43f8e9e6fcffffc1e00289f929c183c104894c2414c701889606 *088d42fa668941048b542418668b420683c006668941068b4208894108668b420689c2c7442408 *000000006685c0742b81e2ffff00008954240c8b4c24088b5424188b448a0c8b54241489448a0c *41894c24088b44240c39c172dfc7442408000000008b542418668b420625ffff0000894424108b *4c2410034c24088b4424088b4485048b54241489448a0cff442408837c24080576dd89d683c51c *8b4500e92ffcffffc74500f4b406088b06e921fcffff8b7604e9d5fbffff83ec0c6841a50708e8 *cc9bffff0000000007000000240000008b1683ea08668b420425ffff000083e80b83f8260f87b7 *040000ff248554ad0708668b461489c281e2ffff000083fa0175148b4504894500c74504f4b406 *08b848ec0608ffe083fa0275158b45048945008b4508894504c7450844b10608ebdf83fa03751b *8b45048945008b45088945048b450c894508c7450c14ae0608ebbf83fa0475218b45048945008b *45088945048b450c8945088b451089450cc7451050ab0608eb9983fa05752a8b45048945008b45 *088945048b450c8945088b451089450c8b4514894510c7451424a60608e96affffff83fa067530 *8b45048945008b45088945048b450c8945088b451089450c8b45148945108b4518894514c74518 *b8a10608e935ffffff83fa07750883c504e928ffffff83c7283b7b5c0f8742010000b80a000000 *c1e00289f929c183c104c701889606088d42f96689410489710866c741060700ba000000008b44 *95048944910c4283fa0676f2e949010000668b42fe89c281e2ffff000083fa0175128b45048945 *00c74504f4b40608e93f03000083fa0275188b45048945008b4508894504c7450844b10608e922 *03000083fa03751e8b45048945008b45088945048b450c894508c7450c14ae0608e9ff02000083 *fa0475248b45048945008b45088945048b450c8945088b451089450cc7451050ab0608e9d60200 *0083fa05752a8b45048945008b45088945048b450c8945088b451089450c8b4514894510c74514 *24a60608e9a702000083fa0675308b45048945008b45088945048b450c8945088b451089450c8b *45148945108b4518894514c74518b8a10608e97202000083fa07750883c504e96502000083c728 *3b7b5c760cc7436c0a000000e984010000b80a000000c1e00289f929c183c104c701889606088d *42f96689410489710866c741060700ba000000008b4495048944910c4283fa0676f289cee90002 *0000668b460489c281e2ffff000083fa0175198b4504894500c74504f4b40608c74304b8a10608 *e9f600000083fa02751f8b45048945008b4508894504c7450844b10608c7430424a60608e9d200 *000083fa0375258b45048945008b45088945048b450c894508c7450c14ae0608c7430450ab0608 *e9a800000083fa0475288b45048945008b45088945048b450c8945088b451089450cc7451050ab *0608c7430414ae0608eb7b83fa05752e8b45048945008b45088945048b450c8945088b45108945 *0c8b4514894510c7451424a60608c7430444b10608eb4883fa0675348b45048945008b45088945 *048b450c8945088b451089450c8b45148945108b4518894514c74518b8a10608c74304f4b40608 *eb0f83fa07751483c504c7430438b90608b888960608e96afcffff89742418668b460625ffff00 *0083c00a8d3c873b7b5c761289436cc7450038b906088b43f8e940fcffffc1e00289f929c183c1 *04894c2414c701889606088d42f9668941048b542418668b420683c007668941068b4208894108 *668b420689c2c7442408000000006685c0742b81e2ffff00008954240c8b4c24088b5424188b44 *8a0c8b54241489448a0c41894c24088b44240c39c172dfc7442408000000008b542418668b4206 *25ffff0000894424108b4c2410034c24088b4424088b4485048b54241489448a0cff442408837c *24080676dd89d683c5208b4500e989fbffffc7450038b906088b06e97bfbffff8b7604e92ffbff *ff83ec0c6853a50708e8e296ffff89f6ff2689f683ed0c897508c7450400000000c7450020cd06 *08e9a70900008d7600ff2689f683ed0c897508c7450400000000c7450020cd0608e9870900008d *7600ff2689f683ed0c897508c7450400000000c7450020cd0608e9670900008d7600ff2689f683 *ed0c897508c7450400000000c7450020cd0608e9470900008d7600ff2689f683ed0c897508c745 *0400000000c7450020cd0608e9270900008d7600ff2689f683ed0c897508c7450400000000c745 *0020cd0608e9070900008d7600ff2689f683ed0c897508c7450400000000c7450020cd0608e9e7 *0800008d7600ff2689f683ed0c897508c7450400000000c7450020cd0608e9c70800008d7600ff *2689f683ed0c897508c7450400000000c7450020cd0608e9a70800008d7600ff2689f683ed0c89 *7508c7450400000000c7450020cd0608e9870800008d7600ff2689f683ed0c897508c745040000 *0000c7450020cd0608e9670800008d7600ff2689f683ed0c897508c7450400000000c7450020cd *0608e9470800008d7600ff2689f683ed0c897508c7450400000000c7450020cd0608e927080000 *8d7600ff2689f683ed0c897508c7450400000000c7450020cd0608e9070800008d7600ff2689f6 *83ed0c897508c7450400000000c7450020cd0608e9e70700008d7600ff2689f683ed0c897508c7 *450400000000c7450020cd0608e9c70700008d7600ff2689f683ed0c897508c7450400000000c7 *450020cd0608e9a70700008d7600ff2689f683ed0c897508c7450400000000c7450020cd0608e9 *870700008d7600ff2689f683ed0c897508c7450400000000c7450020cd0608e9670700008d7600 *ff2689f683ed0c897508c7450400000000c7450020cd0608e9470700008d7600ff2689f683ed0c *897508c7450400000000c7450020cd0608e9270700008d7600ff2689f683ed0c897508c7450400 *000000c7450020cd0608e9070700008d760000000000000000000000000018be060838be060858 *be060878be060898be0608b8be0608d8be0608f8be060818bf0608000000000000000000000000 *38bf060858bf060878bf060898bf0608b8bf0608d8bf0608f8bf060818c0060838c0060858c006 *0878c0060898c00608b8c006080000000000000000000000001cbe06083cbe06085cbe06087cbe *06089cbe0608bcbe0608dcbe0608fcbe06081cbf06080000000000000000000000003cbf06085c *bf06087cbf06089cbf0608bcbf0608dcbf0608fcbf06081cc006083cc006085cc006087cc00608 *9cc00608bcc0060800000000000000000000000021000000010000002100000062000000620000 *0062000000220000004200000002000000000000000000000000000000e300000063000000a300 *000023000000c30000004300000083000000030000000400000005000000060000000700000008 *0000008d45f83b43547315c74320fe000000c7432428c20608b804ce0608ffe08b436083781800 *751fc740181c190808817d0014c30608750583c504eb0a83ed04c7450084c2060883ed04b8e897 *0608ebcc9000000000000000002400000083ec0c8b4360ff7018e8e3a2ffff83c4108b4360c740 *180000000083c504ff65008d76008d45f83b43547315c74320fe000000c74324a8c20608b804ce *0608ffe08b436083781800743083ec0cff7018e89ca2ffff83c4108b4360c7401800000000817d *0084c20608750583c504eb0a83ed04c7450014c3060883ed04b8e8970608ebbb00000000000000 *00240000008b4360c740181c19080883c504ff650066837e1003750a8b760466837e100374f683 *7e1800745e668b461225ffff000083f801740d83f801720f83e80383f8037707b801000000eb05 *b80000000085c075338b53608b46188942048b43608946188b436066c7401203008b4360897014 *c74320fc000000c7432424c30608b8bcd20608ffe03b7360755d8b43608968308b53688d470489 *420483ec08ff730456e832a4ffff83c4108b43606683781002750cbe04000000b841850608ebc5 *8b43608b683005880000008943548b43688b780483ef0489c28b4018c1e00c030283e80489435c *eb0f83ec08ff730456e8e4a3ffff83c4108b4500eb889081c4060878c406086fc4060866c40608 *5dc4060854c406084bc4060842c4060800000000220000002b00000083c50cff650083c50c8b45 *00ff60f083c50c8b4500ff60ec83c50c8b4500ff60e883c50c8b4500ff60e483c50c8b4500ff60 *e083c50c8b4500ff60dc83c50c8b4500ff60d883c50c8b4500ff60d489f6020000000b0000008b *46088943048b7604e90200000089f68d45f03b43547315c74320fc000000c74324a4c40608b804 *ce0608ffe083ed0cc745003cc406088b43048945088b4360837818000f95c025ff000000894504 *83ed04b8e8970608ebd28d760001000000120000008b7604e90000000083ec0c6a03e81fcaffff *83c41089442414c700f8c406088b442414897004896c24188b5424188b0a83e90c894c240c668b *410825ffff000083e82383f806773bff2485f0ad07088b420489c2c1ea18c1e81025ff0000008d *441015eb298b420483c003eb218b54240c8b42048b00eb158b42048b401883c002eb0b8b54240c *8b420483e01f408b5424188d048289442410668b410825ffff000083f82b0f841c01000083f82b *7f0a83f82a7413e90001000083f82c0f84c6000000e9f20000008b5424188b42048138dced0608 *750e83ec0cff7004e89b9fffff83c4108b4424188b480489c82500f00f00c1e80789ca81e20000 *f0ff09d0894424088378100075168b5424148951048b5424188b4204c70064ec0608eb5c8b5424 *188b42048b5424148950048b4424188b48048139dced060874328b5424088b42108d04c08b1528 *2c08088b4482148941088b5424088b42108d04c08b5424188b4a048b15282c0808894c82148b54 *24188b4204c70044ed06088b44241089442418e9a1feffff8b43608b50288d6c90308975008b43 *6066c7401002008b43608968308b53688d4704894204be04000000b841850608ffe08b54241089 *542418e963feffff8b4424188b500889c583c50c83780400750a83ed04c7450084c206088b4360 *837818007507c740181c19080883ed08c74504e897060889750089d683ed04b8b8a10608ebace9 *f7fdffff9090900000000001000000240000008b750483c5088b06668b40fc25ffff000083e80b *83f8177711ff24850cae07088b7604ebe18b4500ffe08b06ebfa89f683ed08897504c7450018c7 *06083b7b5c765b8b436cc1e00229c7817b6c0004000077438b43688d57048950048b4368837808 *0074318b40088943688b780483ef0489c28b4018c1e00c030283e80489435c833d482a08080074 *07be02000000eb118b4500ffe0be00000000eb05be010000008b43608968308b53688d47048942 *048b436066c740100000b841850608ebd38d76003b7b5c765b8b436cc1e00229c7817b6c000400 *0077438b43688d57048950048b43688378080074318b40088943688b780483ef0489c28b4018c1 *e00c030283e80489435c833d482a0808007407be02000000eb118b4500ffe0be00000000eb05be *010000008b43608968308b53688d47048942048b436066c740100000b841850608ebd300000000 *000000002400000083c504ff650089f60000000001000000240000008b750483c508ff65008d76 *0083ed08897504c7450080c806083b7b5c765b8b436cc1e00229c7817b6c0004000077438b4368 *8d57048950048b43688378080074318b40088943688b780483ef0489c28b4018c1e00c030283e8 *0489435c833d482a0808007407be02000000eb118b4500ffe0be00000000eb05be010000008b43 *608968308b53688d47048942048b436066c740100000b841850608ebd38d760000000000210000 *00240000008b750483c508ff65008d760083ed08897504c745002cc906083b7b5c765b8b436cc1 *e00229c7817b6c0004000077438b43688d57048950048b43688378080074318b40088943688b78 *0483ef0489c28b4018c1e00c030283e80489435c833d482a0808007407be02000000eb118b4500 *ffe0be00000000eb05be010000008b43608968308b53688d47048942048b436066c740100000b8 *41850608ebd38d76000000000021000000240000008b4504894424088b44240889432883c508ff *650083ed088b4328894424088b442408894504c74500d8c906083b7b5c765b8b436cc1e00229c7 *817b6c0004000077438b43688d57048950048b43688378080074318b40088943688b780483ef04 *89c28b4018c1e00c030283e80489435c833d482a0808007407be02000000eb118b4500ffe0be00 *000000eb05be010000008b43608968308b53688d47048942048b436066c740100000b841850608 *ebd30000000062000000240000008b45048b5508890424895424048b04248b5424048943388953 *3c83c50cff650083ed0c8b43388b533c890424895424048b04248b542404894504895508c74500 *94ca06083b7b5c765b8b436cc1e00229c7817b6c0004000077438b43688d57048950048b436883 *78080074318b40088943688b780483ef0489c28b4018c1e00c030283e80489435c833d482a0808 *007407be02000000eb118b4500ffe0be00000000eb05be010000008b43608968308b53688d4704 *8942048b436066c740100000b841850608ebd3000000006200000024000000c744240400000000 *c70424000000008d45048b108914248b4004894424048b04248b54240489434889534c83c50cff *65008d760083ed0c8d4d048b43488b534c8901895104c7450068cb06083b7b5c765b8b436cc1e0 *0229c7817b6c0004000077438b43688d57048950048b43688378080074318b40088943688b7804 *83ef0489c28b4018c1e00c030283e80489435c833d482a0808007407be02000000eb118b4500ff *e0be00000000eb05be010000008b43608968308b53688d47048942048b436066c740100000b841 *850608ebd300000000010000002400000083c504ff650489f68b0683e8186683780c0075058b40 *04eb1e6683780c0175078b40048b00eb13668b400c25ffff00008b0485b8c1060883e01f83ed0c *897508894504c7450020cd06083b7b5c765b8b436cc1e00229c7817b6c0004000077438b43688d *57048950048b43688378080074318b40088943688b780483ef0489c28b4018c1e00c030283e804 *89435c833d482a0808007407be02000000eb118b4500ffe0be00000000eb05be010000008b4360 *8968308b53688d47048942048b436066c740100000b841850608ebd389f6000000000000000029 *0000008b750883c50cff26000000000000000028000000c744240400000000c70424000000008d *454c8b108914248b4004894424048b04248b54240489434889534c8b45448b5548894424108954 *24148b4424108b5424148943408953448b453c8b554089442410895424148b4424108b54241489 *433889533c8b45388944240c8b44240c8943348b45348944240c8b44240c8943308b4530894424 *0c8b44240c89432c8b452c8944240c8b44240c8943288b452889431c8b45248943188b45208943 *148b451c8943108b451889430c8b45148943088b45108943048b750c83c554ff65b489f683ed54 *8d4d4c8b43488b534c89018951048b43408b534489442410895424148b4424108b542414894544 *8955488b43388b533c89442410895424148b4424108b54241489453c8955408b43348944240c8b *44240c8945388b43308944240c8b44240c8945348b432c8944240c8b44240c8945308b43288944 *240c8b44240c89452c8b431c8945288b43188945248b43148945208b431089451c8b430c894518 *8b43088945148b430489451089750c8b43248945088b4320894504c7450034cd06083b7b5c765b *8b436cc1e00229c7817b6c0004000077438b43688d57048950048b43688378080074318b400889 *43688b780483ef0489c28b4018c1e00c030283e80489435c833d482a0808007407be02000000eb *118b4500ffe0be00000000eb05be010000008b43608968308b53688d47048942048b436066c740 *100000b841850608ebd38d7600b8000000008a4322ba000000008a532301d08b44850089432483 *ed548d4d4c8b43488b534c89018951048b43408b534489442410895424148b4424108b54241489 *45448955488b43388b533c89442410895424148b4424108b54241489453c8955408b4334894424 *0c8b44240c8945388b43308944240c8b44240c8945348b432c8944240c8b44240c8945308b4328 *8944240c8b44240c89452c8b431c8945288b43188945248b43148945208b431089451c8b430c89 *45188b43088945148b430489451089750c8b43248945088b4320894504c7450034cd06083b7b5c *765b8b436cc1e00229c7817b6c0004000077438b43688d57048950048b43688378080074318b40 *088943688b780483ef0489c28b4018c1e00c030283e80489435c833d482a0808007407be020000 *00eb118b4500ffe0be00000000eb05be010000008b43608968308b53688d47048942048b436066 *c740100000b841850608ebd389f683ed548d4d4c8b43488b534c89018951048b43408b53448944 *2410895424148b4424108b5424148945448955488b43388b533c89442410895424148b4424108b *54241489453c8955408b43348944240c8b44240c8945388b43308944240c8b44240c8945348b43 *2c8944240c8b44240c8945308b43288944240c8b44240c89452c8b431c8945288b43188945248b *43148945208b431089451c8b430c8945188b43088945148b430489451089750c8b43248945088b *4320894504c7450034cd06088b43608968308b53688d47048942048b436066c740100000be0000 *0000e9b2b3ffff9083ed548d4d4c8b43488b534c89018951048b43408b53448944241089542414 *8b4424108b5424148945448955488b43388b533c89442410895424148b4424108b54241489453c *8955408b43348944240c8b44240c8945388b43308944240c8b44240c8945348b432c8944240c8b *44240c8945308b43288944240c8b44240c89452c8b431c8945288b43188945248b43148945208b *431089451c8b430c8945188b43088945148b430489451089750c8b43248945088b4320894504c7 *450034cd06088b43608968308b53688d47048942048b436066c740100000be02000000e9ceb2ff *ff908b43608968308b53688d47048942048b436066c740100000be02000000e9abb2ffff89f68b *43608968308b53688d47048942048b436066c740100100be02000000e987b2ffff89f683ed548d *4d4c8b43488b534c89018951048b43408b534489442410895424148b4424108b54241489454489 *55488b43388b533c89442410895424148b4424108b54241489453c8955408b43348944240c8b44 *240c8945388b43308944240c8b44240c8945348b432c8944240c8b44240c8945308b4328894424 *0c8b44240c89452c8b431c8945288b43188945248b43148945208b431089451c8b430c8945188b *43088945148b430489451089750c8b43248945088b4320894504c7450034cd06088b4360896830 *8b53688d47048942048b436066c740100000be03000000e9a2b1ffff908b43608968308b53688d *47048942048b436066c740100000be03000000e97fb1ffff89f683ed08897504c7450018c70608 *8b43608968308b53688d47048942048b436066c740100000be03000000e94eb1ffff9000000000 *01000000240000008b750483c508e9f91000009083ed08897504c7450000d406088b4360896830 *8b53688d47048942048b436066c740100000be03000000e906b1ffff9000000000020000002400 *00008b45088943048b750483c50ce9031200008d760083ed0c8b4304894508897504c7450048d4 *06088b43608968308b53688d47048942048b436066c740100000be03000000e9b0b0ffff909090 *a1a02d08083b05a82d08087215c74320ff000000c7432494d40608b8acd00608ffe08d4603c1e8 *028944240883c00283ec0c50e85dbaffff83c410c700d0ef06088b54240889500489c68b4500eb *d190a1a02d08083b05a82d08087215c74320ff000000c74324e4d40608b8acd00608ffe08d4603 *c1e8028944240883c00283ec0c50e871bbffff83c410c700d0ef06088b54240889500489c68b45 *00ebd19089742414a1a02d08083b05a82d08087215c74320fd000000c7432434d50608b8acd006 *08ffe08b44241483c0038944241883ec0c50e8bbb9ffff83c41089c1c700e8ef06088b54241489 *50048b4304894424108d410c8b542418c1e2028954240c8d140a39d073198b54240c01ca895424 *088b542410891083c0043b44240872f189ce8b4500eb9c83c70c3b7b5c761cc7436c03000000c7 *4320fe000000c74324bcd50608b804ce0608ffe08d47f8c70018f0060889700489c68b4500ebeb *9083c7243b7b5c761cc7436c09000000c74320fc000000c74324f4d50608b804ce0608ffe08b4e *048d47f8c70058fe06088b53048950048948088d50f4c740f45cf106088942048956048d50e8c7 *40e8f0f1060889420489d68b4500ebc58d760083c7083b7b5c761cc7436c02000000c74320ff00 *0000c7432454d60608b804ce0608ffe08d47fcc700f8ee060889700489c68b4500ebeb90c706e8 *ef0608837e080075458974240889f181e100f00f00c1e90789f0250000f0ff09c1837910007427 *8b41108d04c08b15282c08088b4482108946088b41108d04c08b15282c08088b4c2408894c8210 *ff6500837b08007507c743081819080883c7143b7b5c761cc7436c05000000c74320f8000000c7 *4324e0d60608b804ce0608ffe08d47f0c700b0ee06088970048b53048950088b530889500c8b15 *b02d0808895010a3b02d080889c68b4500ebd189f6813ec8ee06087514be00000000c745fc1819 *080883ed048b4504ffe0c706c8ee06088b4e0c8b461089460481f91819080874d5be0100000089 *4dfcebd78d7600b90000000089f2813eb0ee06087508b9010000008b560889ce8955fc83ed04ff *650489f689f083c70c3b7b5c761cc7436c03000000c74320ff000000c74324a4d70608b804ce06 *08ffe08d57f8c702d0ef0608c742040100000085f67909b9fffffffff7d8eb0eb90000000085f6 *7e07b901000000890789ce8955fc83ed048b4504ebc483c70c3b7b5c761cc7436c03000000c743 *20ff000000c7432404d80608b804ce0608ffe08d47f8c700d0ef0608c7400401000000b9000000 *0085f67407b901000000893789ce8945fc83ed048b4504ebd18d76008b43488b534c8944242089 *542424c744241c0000000083e80183daff83fa017211770583f8fe760ac744241802000000eb08 *c7442418010000008b5424188d7c97083b7b5c761d89d083c00289436cc74320ff000000c74324 *58d80608b804ce0608ffe08b442418c1e00289fa29c283ea0489542414c702d0ef06088b442418 *894204837c2424007915c744241c01000000f75c24208354242400f75c24246a016a00ff74242c *ff74242ce8a8a8000083c410894424088954240c837c2418027512b9020000008b5424208957fc *8b442408eb18b9000000008b5424240b542420740bb9010000008b4424208907837c241c007402 *f7d989ce8b5424148955fc83ed048b4504e957ffffff908b43488b534c894424108954241483fa *0119d283c2028d7c97083b7b5c761b8d420289436cc74320ff000000c7432464d90608b804ce06 *08ffe08d04950000000089f929c183e904894c240cc701d0ef06088951046a016a00ff74241cff *74241ce8e6a7000083c410837c2414007610ba020000008b4c2410894ffc8907eb1aba00000000 *8b4424140b442410740bba010000008b4c2410890f89d68b44240c8945fc83ed048b4504eb8d90 *a1a02d08083b05a82d08087215c74320f5000000c7432410da0608b8acd00608ffe08b53048b4b *0c8b43088944240c8b4204894424308974243483c208895424388b4104894424208b44240c8944 *242483c108894c242883ec0c8d44241c50e87cbffdff83c40c8d442424508d442438508d44241c *50e865c0fdff83c4108b7424148b44241883e8088945fc83ed048b4504eb8ca1a02d08083b05a8 *2d08087215c74320f5000000c74324a4da0608b8acd00608ffe08b53048b4b0c8b43088944240c *8b4204894424308974243483c208895424388b4104894424208b44240c8944242483c108894c24 *2883ec0c8d44241c50e8e8befdff83c40c8d442424508d442438508d44241c50e871c2fdff83c4 *108b7424148b44241883e8088945fc83ed048b4504eb8ca1a02d08083b05a82d08087215c74320 *f5000000c7432438db0608b8acd00608ffe08b53048b4b0c8b43088944240c8b42048944243089 *74243483c208895424388b4104894424208b44240c8944242483c108894c242883ec0c8d44241c *50e854befdff83c40c8d442424508d442438508d44241c50e89dbdfdff83c4108b7424148b4424 *1883e8088945fc83ed048b4504eb8ca1a02d08083b05a82d08087215c74320f5000000c74324cc *db0608b8acd00608ffe08b53048b4b0c8b43088944240c8b4204894424308974243483c2088954 *24388b4104894424208b44240c8944242483c108894c242883ec0c8d44241c50e8c0bdfdff83c4 *0c8d442424508d442438508d44241c50e8f9bcfdff83c4108b7424148b44241883e8088945fc83 *ed048b4504eb8ca1a02d08083b05a82d08087215c74320f5000000c7432460dc0608b8acd00608 *ffe08b53048b4b0c8b43088944240c8b4204894424308974243483c208895424388b4104894424 *208b44240c8944242483c108894c242883ec0c8d44241c50e82cbdfdff83c40c8d442424508d44 *2438508d44241c50e805c0fdff83c4108b7424148b44241883e8088945fc83ed048b4504eb8ca1 *a02d08083b05a82d08087215c74320f5000000c74324f4dc0608b8acd00608ffe08b53048b4b0c *8b43088944240c8b4204894424308974243483c208895424388b4104894424208b44240c894424 *2483c108894c242883ec0c8d44241c50e898bcfdff83c40c8d442424508d442438508d44241c50 *e801befdff83c4108b7424148b44241883e8088945fc83ed048b4504eb8ca1a02d08083b05a82d *08087215c74320f5000000c7432488dd0608b8acd00608ffe08b53048b4b0c8b43088944240c8b *4204894424308974243483c208895424388b4104894424208b44240c8944242483c108894c2428 *83ec0c8d44241c50e804bcfdff83c40c8d442424508d442438508d44241c50e89db9fdff83c410 *8b7424148b44241883e8088945fc83ed048b4504eb8ca1a02d08083b05a82d08087215c74320f5 *000000c743241cde0608b8acd00608ffe08b53048b4b0c8b43088944240c8b4204894424308974 *243483c208895424388b4104894424208b44240c8944242483c108894c242883ec0c8d44241c50 *e870bbfdff83c40c8d442424508d442438508d44241c50e899bbfdff83c4108b7424148b442418 *83e8088945fc83ed048b4504eb8ca1a02d08083b05a82d08087215c74320f5000000c74324b0de *0608b8acd00608ffe08b53048b4b0c8b43088944240c8b4204894424308974243483c208895424 *388b4104894424208b44240c8944242483c108894c242883ec0c8d44241c50e8dcbafdff83c40c *8d442424508d442438508d44241c50e885bbfdff83c4108b7424148b44241883e8088945fc83ed *048b4504eb8ca1a02d08083b05a82d08087215c74320f5000000c7432444df0608b8acd00608ff *e08b53048b4b0c8b43088944240c8b4204894424308974243483c208895424388b410489442420 *8b44240c8944242483c108894c242883ec0c8d44241c50e848bafdff83c40c8d442424508d4424 *38508d44241c50e841bafdff83c4108b7424148b44241883e8088945fc83ed048b4504eb8ca1a0 *2d08083b05a82d08087215c74320fd000000c74324d8df0608b8acd00608ffe08b43048b500489 *5424108974241483c0088944241883ec0c8d44240c50e8d4b9fdff83c4088d442418508d44240c *50e8a2b9fdff83c4108b7424048b44240883e8088945fc83ed048b4504ebb190a1a02d08083b05 *a82d08087215c74320f5000000c7432448e00608b8acd00608ffe08b53048b4b0c8b4308894424 *0c8b4204894424408974244483c208895424488b4104894424308b44240c8944243483c108894c *243883ec0c8d44242c50e844b9fdff83c4048d44241c50e837b9fdff83c4108d442430508d4424 *44508d442418508d44242c50e85bbafdff83c4108b7424248b4424148945f48b44242883e80889 *45f88b44241883e8088945fc83ed0c8b450ce966ffffff89f6a1a02d08083b05a82d08087215c7 *4320f5000000c7432404e10608b8acd00608ffe08b53048b4b0c8b43088944240c8b4204894424 *408974244483c208895424488b4104894424308b44240c8944243483c108894c243883ec0c8d44 *242c50e888b8fdff83c4048d44241c50e87bb8fdff83c4108d442430508d442444508d44241850 *8d44242c50e86fb9fdff83c4108b7424248b4424148945f48b44242883e8088945f88b44241883 *e8088945fc83ed0c8b450ce966ffffff89f68974240883ec04ff73046a018d44241450e83abafd *ff83c41089c6ff650089f683ec04ff7308568b430483c00850e81dbafdff83c41089c6ff650090 *89f1b8000000008b530885d27e07b801000000eb0b85d27907b8fffffffff7da39c1740989ce29 *c68b4500ffe085c9740a8b43048b400839d07507be00000000ebe689ce39d077e089cef7deebda *89f6897424088b430839c6740729c68b4500ffe0837c240800742a83ec0cff742414e89fbafdff *83c40c8b4b0483c1088b530c83c208505251e888b4fdff83c41085c07507be00000000ebc3f7d0 *33442408c1e81f83f80119c089c683ce01ebae90b80000000085f6740c8b43048b400885f67902 *f7d889c6ff650089f6b80000000085f6740c8b43048b400885f67902f7d889c6ff650089f68b43 *288944240c83c70c3b7b5c761cc7436c03000000c74320ff000000c74324e4e20608b804ce0608 *ffe08d47f889442404c700d0ef0608c74004010000008b44240483c0088944241883ec04ff7424 *108d442410508d44241c50e8c2a4ffff83c4108b7424088b4424148945f88b4424048945fc83ed *088b4508ebac8d76008b43388b533c894424088954240c83c7103b7b5c761cc7436c04000000c7 *4320ff000000c7432464e30608b804ce0608ffe08d47f4890424c700d0ef0608c7400402000000 *8b042483c00889442418ff74240cff74240c8d44240c508d44241c50e88aa3ffff83c4108b7424 *048b4424148945f88b04248945fc83ed088b4508ebae89f6a1a02d08083b05a82d08087215c743 *20fe000000c74324e8e30608b8acd00608ffe08974240883ec0cff35cc2c0808e86b7cffff83c4 *0489c28b48308d41fc894230c741fc00f106088b4a308d41fc894230c741fce89706088b4a308d *41fc8942308b4424148941fc8b4a308d41fc894230c741fc18c7060889d652e82b7dffff83c410 *c705482a0808010000008b4500eb8d90e9f3edffff8d76008b7360ff650089f6ff65009083ec0c *ff7360e8b179ffff83c41089c6ff650090813e40ef06080f94c025ff00000089c6ff65009083c7 *143b7b5c761cc7436c05000000c74320ff000000c74324b8e40608b804ce0608ffe08d47f0c700 *40ef0608c7400c1c190808c740041c190808c740101c19080889c68b4500ebd98d760089742408 *813e40ef06087548817e041c19080875088b4360894604eb0d8b4424088b500c8b43608942048b *4360c740041c1908088b436066c7401201008b43608b5424088950148b436089420cb80cd40608 *ffe08b4424088b4010894424048b542408817a041c190808743b8b52048b42308b480883c00c89 *42308b542408894a1083ec0cff7204e81988ffff83c4108b5424088942043d1c190808751ac742 *0c1c190808eb118b442408c70040ef0608c740101c1908088b7424048b4500eb918d7600897424 *08813e40ef06087514be00000000c745fc1819080883ed048b4504ffe08b4424088b4010894424 *048b542408817a041c190808743b8b52048b42308b480883c00c8942308b542408894a1083ec0c *ff7204e88987ffff83c4108b5424088942043d1c190808751ac7420c1c190808eb118b442408c7 *40101c190808c70040ef0608be010000008b5424048955fceb8689f689742408813e28ef060875 *48817e041c19080875088b4360894604eb0d8b4424088b500c8b43608942048b4360c740041c19 *08088b436066c7401201008b43608b5424088950148b436089420cb85cd40608ffe08b44240881 *78041c19080874418b40048b50308b43048942048b5424088b42048b4030c70080c8060883ec0c *ff7204e8c686ffff83c4108b5424088942043d1c1908087519c7420c1c190808eb108b43048b54 *2408894210c70228ef06088b4500eb9b9089742408813e28ef0608750abe000000008b4500ffe0 *8b4424088178041c19080874418b40048b50308b43048942048b5424088b42048b4030c70080c8 *060883ec0cff7204e84c86ffff83c4108b5424088942043d1c19080875b6c7420c1c190808ebad *8b43048b542408894210c70228ef0608eb9b89f683c7083b7b5c761cc7436c02000000c74320fe *000000c743248ce70608b804ce0608ffe083ec0c56e8c38fffff83c41089c1c1e00489442408a1 *a02b08088b542408837c100c00751b8d57fcc70210ef0608894a04a1a02b08088b4c2408895408 *0ceb0e89cac1e204a1a02b08088b54100c89d68b4500eba98d7600a1a02d08083b05a82d080872 *15c74320fe000000c7432408e80608b8acd00608ffe083ec0c56e8d78fffff83c41089c68b4500 *ebeb8d760089f2c1e204a1a02b08088b3410ff65008b4314894424088b500483c2068d3c973b7b *5c761889536cc74320d0000000c7432450e80608b804ce0608ffe08d04950000000089f929c183 *c104c70148ec06088971048b43048941088b430889410c8b430c894110668b4310668941146689 *5116ba000000008b4424083b500473168b4424088b44900889449118428b4424083b500472ea89 *ce8b4500eb9e8d760083c70c3b7b5c761cc7436c03000000c74320fe000000c74324e0e80608b8 *04ce0608ffe08d47f8c700ec96060866c74006000089700889c68b4500ebe58d76008b436066c7 *401204008b4360897014813d382a08081c190808750a8b4360a3382a0808eb0b8b5360a13c2a08 *088950048b4360a33c2a0808e943eaffff8d76008b436066c7401205008b4360897014813d382a *08081c190808750a8b4360a3382a0808eb0b8b5360a13c2a08088950048b4360a33c2a0808e903 *eaffff8d76008b436066c7401206008d8e1f4e0000b8ad8bdb68f7e9c1fa0d89c8c1f81f29c289 *542404e86b8700008b4c240401c18b4360894814c7442408000000008b15402a080881fa1c1908 *087419394a147314895424088b520481fa1c1908087405394a1472ec8b4360895004837c240800 *750a8b4360a3402a0808eb0a8b43608b542408894204e976e9ffff9090ff65008b4500ff60f08b *4500ff60ec8b4500ff60e88b4500ff60e48b4500ff60e08b4500ff60dc8b4500ff60d88b4500ff *60d4901ceb06080aeb0608f8ea0608e6ea0608d4ea0608c2ea0608b0ea06089eea060800000000 *000000002300000083ed08897504c7450018c70608e9fae7ffff83ed08897504c7450018c70608 *e9e8e7ffff83ed08897504c7450018c70608e9d6e7ffff83ed08897504c7450018c70608e9c4e7 *ffff83ed08897504c7450018c70608e9b2e7ffff83ed08897504c7450018c70608e9a0e7ffff83 *ed08897504c7450018c70608e98ee7ffff83ed08897504c7450018c70608e97ce7ffff83ed0889 *7504c7450018c70608e96ae7ffff89f600000000000000002300000083ed08897504c7450080c8 *0608e94ae7ffff89f600000000000000002300000083ed08897504c745002cc90608e92ae7ffff *89f600000000000000002300000083ed088b4328894424088b442408894504c74500d8c90608e9 *ffe6ffff8d760000000000000000002300000083ed0c8b43388b533c890424895424048b04248b *542404894504895508c7450094ca0608e9c7e6ffff8d760000000000000000002300000083ed0c *8d45048b53488b4b4c8910894804c7450068cb0608e99be6ffff8d760000000000000000002300 *000083ed04c745006cc80608e97de6ffff90000000000000000023000000e96be6ffff8d760000 *000000000000000000000002000000040000001a00000083ed08897504c7450028ec0608e93ee6 *ffff89f6010000001e0000008b7604ff268d7600010000001e0000008b7604ff650089f6010000 *001e0000008b76048b4500ff60f08d7600010000001e0000008b76048b4500ff60ec8d76000100 *00001e0000008b76048b4500ff60e88d7600010000001e0000008b76048b4500ff60e48d760001 *0000001e0000008b76048b4500ff60e08d7600010000001e0000008b76048b4500ff60dc8d7600 *010000001e0000008b76048b4500ff60d88d7600010000001e0000008b76048b4500ff60d48d76 *0001000000220000008b7604ff268d760001000100200000008b7604ff268d7600010001001f00 *00008b7604ff268d760001000100210000008b7604ff268d7600000002002e0000008b4360c740 *041c1908088b43608946048b436066c7401202008b4360897014c706dced06088974240889f181 *e100f00f00c1e90789f0250000f0ff09c18379100074278b41108d04c08b15282c08088b448210 *8946088b41108d04c08b15282c08088b4c2408894c8210e9f1e5ffff90010001002f0000008b53 *608b46048942048b43608946048b436066c7401202008b4360897014e9c5e5ffff90000002002d *0000008b4360c740041c1908088b43608946048b436066c7401202008b4360897014c706dced06 *088974240889f181e100f00f00c1e90789f0250000f0ff09c18379100074278b41108d04c08b15 *282c08088b4482108946088b41108d04c08b15282c08088b4c2408894c8210e94de5ffff900000 *00003b00000083ec0c686cae0708e86b66ffff8d7600010000004000000083ec0c6880ae0708e8 *5366ffff8d7600000004003800000083ec0c689aae0708e83b66ffff8d76000000040001000000 *83ec0c68afae0708e82366ffff8d7600000000000a00000083ec0c68c9ae0708e80b66ffff8d76 *00000001003900000083ec0c68e6ae0708e8f365ffff8d7600000001003a00000083ec0c68feae *0708e8db65ffff8d7600040000003200000083ec0c681aaf0708e8c365ffff8d76000400000032 *00000083ec0c6834af0708e8ab65ffff8d7600000000000a00000083ec0c684faf0708e89365ff *ff8d7600000000000a00000083ec0c686daf0708e87b65ffff8d7600010001003700000083ec0c *688aaf0708e86365ffff8d7600000000000a00000083ec0c68a3af0708e84b65ffff8d76000100 *01000100000083ec0c68c6af0708e83365ffff8d7600000000003300000083ec0c68e5af0708e8 *1b65ffff8d7600000000003400000083ec0c68ffaf0708e80365ffff8d76000000000035000000 *83ec0c681cb00708e8eb64ffff8d7600010001003600000083ec0c6840b00708e8d364ffff8d76 *00000000000a000000ff65009060f0060860f0060860f0060860f0060860f0060860f0060860f0 *060860f0060800000000000000002c00000083ed04897504c7450018c706088b436066c7401004 *008b43608968308b53688d4704894204be04000000e9b294ffff908b43608b6830058800000089 *43548b43688b780483ef0489c28b4018c1e00c030283e80489435cff650089f600000000000000 *002400000083c5048b06668b40fc25ffff000083e80b83f8177711ff248558b007088b7604ebe1 *8b4500ffe08b06ebfa9000000000000000002400000083c504ff6500e93694ffff908b6b5083ed *04ff65009090900000000000000000240000008b760483c5048b06668b40fc25ffff000083e80b *83f8177711ff2485b8b007088b7604ebe18b4500ffe08b06ebfa89f600000000190000008d45f4 *3b435473058b43f8ffe08d45f8c700a0000708897004c745f424f106088b760483ed0c8b06668b *40fc25ffff000083e80b83f8177711ff248518b107088b7604ebe18b4500ebc18b06ebbd89f600 *00000000000000240000008b760883c5048b06668b40fc25ffff000083e80b83f8177711ff2485 *78b107088b7604ebe18b4500ffe08b06ebfa89f601000000190000008d45f43b435473058b43f8 *ffe08d45f8c700a0000708897004c745f4b8f106088b760483ed0c8b06668b40fc25ffff000083 *e80b83f8177711ff2485d8b107088b7604ebe18b4500ebc18b06ebbd89f6000000000000000024 *0000008b760c83c5048b06668b40fc25ffff000083e80b83f8177711ff248538b207088b7604eb *e18b4500ffe08b06ebfa89f602000000190000008d45f43b435473058b43f8ffe08d45f8c700a0 *000708897004c745f44cf206088b760483ed0c8b06668b40fc25ffff000083e80b83f8177711ff *248598b207088b7604ebe18b4500ebc18b06ebbd89f60000000000000000240000008b761083c5 *048b06668b40fc25ffff000083e80b83f8177711ff2485f8b207088b7604ebe18b4500ffe08b06 *ebfa89f603000000190000008d45f43b435473058b43f8ffe08d45f8c700a0000708897004c745 *f4e0f206088b760483ed0c8b06668b40fc25ffff000083e80b83f8177711ff248558b307088b76 *04ebe18b4500ebc18b06ebbd89f60000000000000000240000008b761483c5048b06668b40fc25 *ffff000083e80b83f8177711ff2485b8b307088b7604ebe18b4500ffe08b06ebfa89f604000000 *190000008d45f43b435473058b43f8ffe08d45f8c700a0000708897004c745f474f306088b7604 *83ed0c8b06668b40fc25ffff000083e80b83f8177711ff248518b407088b7604ebe18b4500ebc1 *8b06ebbd89f60000000000000000240000008b761883c5048b06668b40fc25ffff000083e80b83 *f8177711ff248578b407088b7604ebe18b4500ffe08b06ebfa89f605000000190000008d45f43b *435473058b43f8ffe08d45f8c700a0000708897004c745f408f406088b760483ed0c8b06668b40 *fc25ffff000083e80b83f8177711ff2485d8b407088b7604ebe18b4500ebc18b06ebbd89f60000 *000000000000240000008b761c83c5048b06668b40fc25ffff000083e80b83f8177711ff248538 *b507088b7604ebe18b4500ffe08b06ebfa89f606000000190000008d45f43b435473058b43f8ff *e08d45f8c700a0000708897004c745f49cf406088b760483ed0c8b06668b40fc25ffff000083e8 *0b83f8177711ff248598b507088b7604ebe18b4500ebc18b06ebbd89f600000000000000002400 *00008b762083c5048b06668b40fc25ffff000083e80b83f8177711ff2485f8b507088b7604ebe1 *8b4500ffe08b06ebfa89f607000000190000008d45f43b435473058b43f8ffe08d45f8c700a000 *0708897004c745f430f506088b760483ed0c8b06668b40fc25ffff000083e80b83f8177711ff24 *8558b607088b7604ebe18b4500ebc18b06ebbd89f60000000000000000240000008b762483c504 *8b06668b40fc25ffff000083e80b83f8177711ff2485b8b607088b7604ebe18b4500ffe08b06eb *fa89f608000000190000008d45f43b435473058b43f8ffe08d45f8c700a0000708897004c745f4 *c4f506088b760483ed0c8b06668b40fc25ffff000083e80b83f8177711ff248518b707088b7604 *ebe18b4500ebc18b06ebbd89f60000000000000000240000008b762883c5048b06668b40fc25ff *ff000083e80b83f8177711ff248578b707088b7604ebe18b4500ffe08b06ebfa89f60900000019 *0000008d45f43b435473058b43f8ffe08d45f8c700a0000708897004c745f458f606088b760483 *ed0c8b06668b40fc25ffff000083e80b83f8177711ff2485d8b707088b7604ebe18b4500ebc18b *06ebbd89f60000000000000000240000008b762c83c5048b06668b40fc25ffff000083e80b83f8 *177711ff248538b807088b7604ebe18b4500ffe08b06ebfa89f60a000000190000008d45f43b43 *5473058b43f8ffe08d45f8c700a0000708897004c745f4ecf606088b760483ed0c8b06668b40fc *25ffff000083e80b83f8177711ff248598b807088b7604ebe18b4500ebc18b06ebbd89f6000000 *0000000000240000008b763083c5048b06668b40fc25ffff000083e80b83f8177711ff2485f8b8 *07088b7604ebe18b4500ffe08b06ebfa89f60b000000190000008d45f43b435473058b43f8ffe0 *8d45f8c700a0000708897004c745f480f706088b760483ed0c8b06668b40fc25ffff000083e80b *83f8177711ff248558b907088b7604ebe18b4500ebc18b06ebbd89f60000000000000000240000 *008b763483c5048b06668b40fc25ffff000083e80b83f8177711ff2485b8b907088b7604ebe18b *4500ffe08b06ebfa89f60c000000190000008d45f43b435473058b43f8ffe08d45f8c700a00007 *08897004c745f414f806088b760483ed0c8b06668b40fc25ffff000083e80b83f8177711ff2485 *18ba07088b7604ebe18b4500ebc18b06ebbd89f60000000000000000240000008b763883c5048b *06668b40fc25ffff000083e80b83f8177711ff248578ba07088b7604ebe18b4500ffe08b06ebfa *89f60d000000190000008d45f43b435473058b43f8ffe08d45f8c700a0000708897004c745f4a8 *f806088b760483ed0c8b06668b40fc25ffff000083e80b83f8177711ff2485d8ba07088b7604eb *e18b4500ebc18b06ebbd89f60000000000000000240000008b763c83c5048b06668b40fc25ffff *000083e80b83f8177711ff248538bb07088b7604ebe18b4500ffe08b06ebfa89f60e0000001900 *00008d45f43b435473058b43f8ffe08d45f8c700a0000708897004c745f43cf906088b760483ed *0c8b06668b40fc25ffff000083e80b83f8177711ff248598bb07088b7604ebe18b4500ebc18b06 *ebbd89f60000000000000000240000008b764083c5048b06668b40fc25ffff000083e80b83f817 *7711ff2485f8bb07088b7604ebe18b4500ffe08b06ebfa89f60f000000190000008d45f43b4354 *73058b43f8ffe08d45f8c700a0000708897004c745f4d0f906088b760483ed0c8b06668b40fc25 *ffff000083e80b83f8177711ff248558bc07088b7604ebe18b4500ebc18b06ebbd89f600000000 *00000000240000008b760483c504ff2600000000190000008d45fc3b435473058b43f8ffe0c745 *fc64fa06088b760483ed048b06ebed89f60000000000000000240000008b760883c504ff260100 *0000190000008d45fc3b435473058b43f8ffe0c745fca0fa06088b760483ed048b06ebed89f600 *00000000000000240000008b760c83c504ff2602000000190000008d45fc3b435473058b43f8ff *e0c745fcdcfa06088b760483ed048b06ebed89f60000000000000000240000008b761083c504ff *2603000000190000008d45fc3b435473058b43f8ffe0c745fc18fb06088b760483ed048b06ebed *89f60000000000000000240000008b761483c504ff2604000000190000008d45fc3b435473058b *43f8ffe0c745fc54fb06088b760483ed048b06ebed89f60000000000000000240000008b761883 *c504ff2605000000190000008d45fc3b435473058b43f8ffe0c745fc90fb06088b760483ed048b *06ebed89f60000000000000000240000008b761c83c504ff2606000000190000008d45fc3b4354 *73058b43f8ffe0c745fcccfb06088b760483ed048b06ebed89f60000000000000000240000008b *762083c504ff2607000000190000008d45fc3b435473058b43f8ffe0c745fc08fc06088b760483 *ed048b06ebed89f60000000000000000240000008b762483c504ff2608000000190000008d45fc *3b435473058b43f8ffe0c745fc44fc06088b760483ed048b06ebed89f600000000000000002400 *00008b762883c504ff2609000000190000008d45fc3b435473058b43f8ffe0c745fc80fc06088b *760483ed048b06ebed89f60000000000000000240000008b762c83c504ff260a00000019000000 *8d45fc3b435473058b43f8ffe0c745fcbcfc06088b760483ed048b06ebed89f600000000000000 *00240000008b763083c504ff260b000000190000008d45fc3b435473058b43f8ffe0c745fcf8fc *06088b760483ed048b06ebed89f60000000000000000240000008b763483c504ff260c00000019 *0000008d45fc3b435473058b43f8ffe0c745fc34fd06088b760483ed048b06ebed89f600000000 *00000000240000008b763883c504ff260d000000190000008d45fc3b435473058b43f8ffe0c745 *fc70fd06088b760483ed048b06ebed89f60000000000000000240000008b763c83c504ff260e00 *0000190000008d45fc3b435473058b43f8ffe0c745fcacfd06088b760483ed048b06ebed89f600 *00000000000000240000008b764083c504ff260f000000190000008d45fc3b435473058b43f8ff *e0c745fce8fd06088b760483ed048b06ebed89f60000000001000100130000008d45f43b435473 *058b43f8ffe08d45f8c700a00007088970048b760489c583ed04b854960608ebe3000000000200 *0000150000008d45f03b435473058b43f8ffe08d45f8c700a00007088970048b46088945f48b76 *0483ed0c83ed04b8b8a10608ebdc900000000003000000120000008d45ec3b435473058b43f8ff *e08d45f8c700a00007088970048b460c8945f48b46088945f08b760483ed1083ed04b824a60608 *ebd68d76000000000004000000120000008d45e83b435473058b43f8ffe08d45f8c700a0000708 *8970048b46108945f48b460c8945f08b46088945ec8b760483ed1483ed04b850ab0608ebd09000 *00000005000000120000008d45e43b435473058b43f8ffe08d45f8c700a00007088970048b4614 *8945f48b46108945f08b460c8945ec8b46088945e88b760483ed1883ed04b814ae0608ebca8d76 *000000000006000000120000008d45e03b435473058b43f8ffe08d45f8c700a00007088970048b *46188945f48b46148945f08b46108945ec8b460c8945e88b46088945e48b760483ed1c83ed04b8 *44b10608ebc4900000000007000000120000008d45dc3b435473058b43f8ffe08d45f8c700a000 *07088970048b461c8945f48b46188945f08b46148945ec8b46108945e88b460c8945e48b460889 *45e08b760483ed2083ed04b8f4b40608ebbe8d76000000000008000000120000008d45d83b4354 *73058b43f8ffe08d45f8c700a00007088970048b46208945f48b461c8945f08b46188945ec8b46 *148945e88b46108945e48b460c8945e08b46088945dc8b760483ed2483ed04b838b90608ebb890 *75050708da0407083f040708a4030708090307086e020708d30107083801070800000000010000 *002a0000008b45048944240883c5088138dced0608750e83ec0cff7004e8b864ffff83c4108b44 *24082500f00f00c1e8078b54240881e20000f0ff89c109d18379100075128b542408897204c702 *74ec06088b4500ffe08b4424088970048138dced0608742b8b41108d04c08b15282c08088b4482 *148b5424088942088b41108d04c08b15282c08088b4c2408894c82148b442408c70044ed0608eb *b58b45048944240883c5088138dced0608750e83ec0cff7004e82064ffff83c4108b4424082500 *f00f00c1e8078b54240881e20000f0ff89c109d18379100075158b542408897204c70284ec0608 *8b45008b40f0ffe08b4424088970048138dced0608742b8b41108d04c08b15282c08088b448214 *8b5424088942088b41108d04c08b15282c08088b4c2408894c82148b442408c70044ed0608ebb2 *8b45048944240883c5088138dced0608750e83ec0cff7004e88563ffff83c4108b4424082500f0 *0f00c1e8078b54240881e20000f0ff89c109d18379100075158b542408897204c70298ec06088b *45008b40ecffe08b4424088970048138dced0608742b8b41108d04c08b15282c08088b4482148b *5424088942088b41108d04c08b15282c08088b4c2408894c82148b442408c70044ed0608ebb28b *45048944240883c5088138dced0608750e83ec0cff7004e8ea62ffff83c4108b4424082500f00f *00c1e8078b54240881e20000f0ff89c109d18379100075158b542408897204c702acec06088b45 *008b40e8ffe08b4424088970048138dced0608742b8b41108d04c08b15282c08088b4482148b54 *24088942088b41108d04c08b15282c08088b4c2408894c82148b442408c70044ed0608ebb28b45 *048944240883c5088138dced0608750e83ec0cff7004e84f62ffff83c4108b4424082500f00f00 *c1e8078b54240881e20000f0ff89c109d18379100075158b542408897204c702c0ec06088b4500 *8b40e4ffe08b4424088970048138dced0608742b8b41108d04c08b15282c08088b4482148b5424 *088942088b41108d04c08b15282c08088b4c2408894c82148b442408c70044ed0608ebb28b4504 *8944240883c5088138dced0608750e83ec0cff7004e8b461ffff83c4108b4424082500f00f00c1 *e8078b54240881e20000f0ff89c109d18379100075158b542408897204c702d4ec06088b45008b *40e0ffe08b4424088970048138dced0608742b8b41108d04c08b15282c08088b4482148b542408 *8942088b41108d04c08b15282c08088b4c2408894c82148b442408c70044ed0608ebb28b450489 *44240883c5088138dced0608750e83ec0cff7004e81961ffff83c4108b4424082500f00f00c1e8 *078b54240881e20000f0ff89c109d18379100075158b542408897204c702e8ec06088b45008b40 *dcffe08b4424088970048138dced0608742b8b41108d04c08b15282c08088b4482148b54240889 *42088b41108d04c08b15282c08088b4c2408894c82148b442408c70044ed0608ebb28b45048944 *240883c5088138dced0608750e83ec0cff7004e87e60ffff83c4108b4424082500f00f00c1e807 *8b54240881e20000f0ff89c109d18379100075158b542408897204c702fcec06088b45008b40d8 *ffe08b4424088970048138dced0608742b8b41108d04c08b15282c08088b4482148b5424088942 *088b41108d04c08b15282c08088b4c2408894c82148b442408c70044ed0608ebb28b4504894424 *0883c5088138dced0608750e83ec0cff7004e8e35fffff83c4108b4424082500f00f00c1e8078b *54240881e20000f0ff89c109d18379100075158b542408897204c70210ed06088b45008b40d4ff *e08b4424088970048138dced0608742b8b41108d04c08b15282c08088b4482148b542408894208 *8b41108d04c08b15282c08088b4c2408894c82148b442408c70044ed0608ebb23c0607083c0607 *083c0607083c0607083c0607083c0607083c0607083c06070800000000000000002400000083c5 *04ff65009090c35557565383ec0c8b74242081fefe000000762983ec0c89f0c1e00c05ff1f0000 *c1e8144050e84201000083c410e9240100008b43088902e918010000ba442c08088b1d442c0808 *85db746339731874e2397318764f8b431829f0894318c1e00501c389f789d985f60f84e6000000 *8973188b03894304ba010000008d432039f20f83ce000000c7400400000000c740180000000089 *48084283c02039fa72e7e9b00000008d53088b5b0885db759de8746a000089c783ec0c50e82b03 *00008d5f4083c41089f589d985f6742e8973188b4740894304ba010000008d476039f27319c740 *0400000000c74018000000008948084283c02039ea72e781fefd0000007752bafe00000089f0c1 *e0058d3c1829f2742d8957188b07894704b9010000008d472039d17319c7400400000000c74018 *000000008978084183c02039d172e783ec0c89f0c1e0058d041850e8f800000083c41089d883c4 *0c5b5e5f5dc383ec186a01e898feffff83c41cc35557565383ec0c8b6c2420bb00000000be0000 *0000bf00000000b9000000008b15442c080885d27438817a18fe000000752185f6740b8b010500 *0010003902740b89d689cfbb01000000eb014339eb7414eb05be0000000089d18b520885d275c8 *39eb751685ff750a8b4208a3442c0808eb218b4208894708eb1983ec0c55e8306a000089c38904 *24e8ef0100008d734083c410bbfe00000089f1c74618fe0000008b06894604ba010000008d4620 *c7400400000000c74018000000008948084283c02039da72e789e8c1e00883e80289461889f083 *c40c5b5e5f5dc3565383ec048b4c2410817918fe000000761183ec0c51e8ea00000083c410e9dc *000000bb000000008b15442c080885d274158b023b01730f89d38b520885d274068b023b0172f1 *85db7510a1442c0808894108890d442c0808eb5a8b4308894108894b0889ce85c974478b531889 *d0c1e00c03033b01753989d00341188943188b41088943088b7118ba0000000089c839f27319c7 *400400000000c740180000000089580883c0204239f272e789d8eb0289f089c18b510885d27443 *8b591889d8c1e00c03013b02753589d80342188941188b42088941088b7218bb0000000089d039 *f37319c7400400000000c740180000000089480883c0204339f372e783c4045b5ec35756538b5c *24108b4318c1e00c89c6c1ee1446745cbffe00000083ec0c89d8250000f0ff50e87100000083c4 *1089d9c74318fe0000008b03894304ba010000008d4320c7400400000000c74018000000008948 *084283c02039fa72e783ec0c53e896feffff83c41081c3000010004e75a95b5e5fc35383ec088b *44241085c074158b580883ec0c50e86efeffff89d883c41085db75eb83c4085bc3538b4424088d *90002000008d48400500f00f0089c339c2770f891183c12081c20010000039da76f15bc38b4424 *04c70048c70608c740044ccc0608c383ec1868c02d0808e8e1ffffff83c41cc383ec0c8b442410 *c700c02d0808e8ff66ffff83c40cc3c390905383ec088b5c2410e802fdffff89c18b4314894110 *895914c74108000000008b43143b05502c08080f96c025ff00000089411c837b2c00740f8b432c *8b53248950048b432c894808894b2c8b018943240500100000894328ff4334ff056c2c080889c8 *83c4085bc35557565383ec4cc744242000000000c744241800000000e8b267ffffe89372ffffe8 *6a86ffff89442424837c2464007417a1f02c080848a3502c0808c705542c080801000000eb72c7 *05502c080800000000c744241400000000b8000000003b05f02c0808733a8b1d282c08088b35f0 *2c08088b5424148d04d2c1e0028b4c03048b510803511c3b54030c720a8b4c2414890d502c0808 *ff4424143974241472d2a1f02c0808483905502c08080f94c025ff000000a3542c0808c7054c2c *080801000000c705402e080801000000833d542c080800741f83ec0ca1f02c08088d04c0c1e002 *0305282c0808ff70f0e81334000083c410833df02c0808017521a1342c08088b50308915682c08 *08c7403000000000a1342c0808c7403400000000c7056c2c080800000000c7442414000000008b *4424148d14c0c1e202a1282c0808c744101420190808a1282c0808c744101020190808bf000000 *00a1282c08083b7c10080f83f30000008b5424148d04d2c1e002894424108b4c241409f9750d83 *3df02c0808010f87bc0000008d04bfc1e0048b15282c080889c68b4c241003740a04c746240000 *0000c7462c00000000c746300000000083ec0c56e8d7fdffff89c28946308b0089463c895638c7 *464000000000c7464400000000c74648000000008b561883c41085d2740b83621cfe8b520885d2 *75f5837e2000744b8b4608c1e00c89c5c1ed05743e83ec0c8d85ff0f0000c1e80c50e82cf9ffff *89464c8b1883c40c556a0053e8968ffdff83c4108b560485d27411895a0c83eb80834a1c088b52 *0885d275ef47a1282c08088b5424103b7c10080f821bffffffff4424148b4c24143b0d502c0808 *0f86c1feffffa1502c080840894424143b05f02c08080f83ad000000bf000000008b15282c0808 *89d38b442414c1e00389c1034424143b7c820873798b4424148d14088d04bfc1e00489c6037493 *04837e2c00751683ec0c56e8cffcffff894604c746080100000083c4108b462489463c8b462c89 *4638c7463000000000c7463400000000c7464000000000c7464400000000c7464800000000478b *1d282c08088b4c2414c1e1038b5424148d040a3b7c83087287ff4424148b4c24143b0df02c0808 *0f8253ffffff833d542c080800743883ec0c6a04e802f8ffffa3702c08088b00a3742c0808a378 *2c08080500400000a37c2c080883c410eb1883ec0c56e8f9300000e98f020000c705702c080800 *000000a1f02c080848894424143b05502c080876368b0d282c08088b5424148d04d2c1e0028b54 *0110895401188b15282c0808c744021020190808ff4c24148b4c24143b0d502c080877caa1f02c *080848894424143b05502c0808766f83ec0c8b5424208d1cd2c1e30289d80305282c080850e8eb *2900008b4c2424890d582c0808a1282c080883c4108b5418084a89d378298d04c98d3485000000 *0083ec0c8d049bc1e0048b15282c08080344320450e8ab18000083c4104b79e1ff4c24148b4c24 *143b0d502c08087791a1f02c080848894424143b05502c0808766f83ec0c8b5424208d1cd2c1e3 *0289d80305282c080850e8342a00008b4c2424890d582c0808a1282c080883c4108b5418084a89 *d378298d04c98d34850000000083ec0c8d049bc1e0048b15282c08080344320450e82a18000083 *c4104b79e1ff4c24148b4c24143b0d502c08087791c705582c08080000000083ec0c68031c0708 *e86e300000c705582c080800000000c70424031c0708ff542470c70424b02d0808e8200b0000a1 *b02d0808a3382e0808c705b02d080800000000c7055c2c080800000000a1442a0808a3602c0808 *c705442a08081c190808c7053c2e08081c190808c70424031c0708e81469ffff83c410bd000000 *00833d542c080800740e833d4c2c0808017405e8ef2a0000833d802c080800751f833d842c0808 *007516833d702c0808007417a1782c08083b05742c0808740ae8561f0000bd010000008b1df02c *08084b787e8b15282c08088d04db8b4c820849786b8d3c850000000085db0f94c285c90f94c021 *d0a8017409833df02c08080177488d0489c1e0048b15282c080889c603743a04891d582c08088b *462c3b463875088b463c3b4624731683ec0c56e8d9160000bd0100000083c410e957ffffff837e *40000f854cfdffff49799c4b798285ed0f8523ffffffe81b08000085c00f8516ffffff8b1d2c2a *080885db742783ec0cff33e8fb09000083c41085c0750d83ec0c68b8bc0708e89e43ffff89038b *5b1085db75d9e8a668ffffc744241400000000b8000000003b05f02c08087378bf000000008b15 *282c080889d38b442414c1e00389c1034424143b7c820873488b4424148d14088d04bfc1e00489 *c6037493048b54241409fa7509833df02c08080177098b562c8b4624894204478b1d282c08088b *4c2414c1e1038b5424148d040a3b7c830872b8ff4424148b4c24143b0df02c08087288833d542c *0808007424a1302c08088b40048378200074168b40088944241883ec0cff74246ce8843e000083 *c410a16c2c0808c1e00a8944241cc744241400000000b8000000003b05f02c08080f83fa010000 *8b5424143b15502c080877118b15282c08088b4c24148d04c9ff44821cbf000000008b15282c08 *0889d38b442414c1e00389c1034424143b7c82080f83a50100008b4424148d14088d04bfc1e004 *89c6037493048b54241409fa7509833df02c08080177208b4c24143b0d502c080877148b562c8b *022b42040500100000c1f8022944241c8b4424143b05502c08080f87e4000000837e200074098b *4424182b4608eb038b4608c1e00a014424208b54241409fa0f8486000000837e200074498b5630 *85d2740b83621cfe8b520885d275f5837e040075088b4630894604eb1e8b560485d274178b5a08 *85db75068b463089420883621cf789da85db75e98b4608034634894608eb2983ec0cff7604e8ad *f6ffff8b56308956048b463489460883c41085d2740b83621cfe8b520885d275f5c74630000000 *00c74634000000008b561885d274158b5a0883ec0c52e8f4f4ffff89da83c41085db75eb8b5644 *85d2740b83621cfe8b520885d275f58b46448946188b4648eb4b8b564485d2742e8d6e188b5a08 *83621cfe89d18b4618894208c7420c00000000837e180074068b461889500c894d0089da85db75 *d58b4608034634894608c74634000000008b461c03464889461c478b1d282c08088b4c2414c1e1 *038b5424148d040a3b7c83080f825bfeffffff4424148b4c24143b0df02c08080f8206feffff83 *3d542c0808000f84fc010000833df02c0808010f86ef0100008b35d02c08088b2df02c0808a130 *2c08088b50048b420803421c8944240c8b44240cba000000005250df2c248d642408dc0de02c08 *08dd5c2440a1d82c0808ba000000005250df2c248d642408dd5c2438dd442438dd442440d9c9dd *e1dfe0ddd9f6c4017406ddd8dd442440d97c2436668b442436b40c6689442434d96c2434df7c24 *28d96c24368b44242889c3ba000000005256df2c248d642408dc0de82c0808d83508bd0708dd5c *2438a1d42c0808ba000000005250df2c248d642408dd5c2440dd442440dd442438d9c9dde1dfe0 *ddd9f6c4017406ddd8dd442438d96c2434df7c2428d96c24368b44242889c7833df02c08080176 *5c833dfc2c080800754285f6744fa1302c08088b40048b4008ba000000005250df2c248d642408 *ba000000005256df2c248d642408dc0d002d0808d83520a20708d9c9dae9dfe0f6c4457511a130 *2c08088b4004c7402001000000eb0fa1302c08088b4004c740200000000085f6745f39fe7305e8 *5041ffffa1302c08088b400483782000741d8d441bfe8d55fe0fafc28d041801f839f0762a89f3 *29fb8d542dfdeb138d542dfe89d80fafc201f839f0761189f329fb89d889d1ba00000000f7f189 *c33b5c240c7305e8fa40ffffc744241400000000396c2414731a8b4424148d14c0a1282c080889 *5c900cff442414396c241472e6e8997bffff89c5833dac2d080800741183ec0cff35ac2d0808e8 *a0f3ffff83c410c705ac2d080800000000c705a02d080800000000c705202c080800000000c705 *242c080800000000a1d42c0808a3a82d0808c705a42d080800000000833d702c080800741183ec *0cff35702c0808e8d0f1ffff83c410c744241400000000bf000000008b15282c080889d38b4424 *14c1e00389c1034424143b7c820873488b4424148d14088d04bfc1e00489c603749304837e2000 *7414837e4c00740e83ec0cff764ce87bf1ffff83c410478b1d282c08088b4c2414c1e1038b5424 *148d040a3b7c830872b8ff4424148b4c24143b0d502c08087688833df02c0808010f8504010000 *833d682c080800741183ec0cff35682c0808e8a3f2ffff83c410a1342c08088b503085d2740ec7 *421c000000008b520885d275f2a1342c08088b4834bed02c0808833dd02c0808007470ba000000 *005251df2c248d642408dc0de02c0808d8c0a1d02c0808ba000000005250df2c24d9c98d642408 *dae9dfe0f6c445753c8d1409a1d02c080889c329d38d049b8d0480c1e002ba00000000f73650db *04248d642404dd05e82c0808dae9dfe0f6c4457505e8183fffff89d9eb44ba000000005251df2c *248d642408dc0de02c0808d97c2436668b442436b40c6689442434d96c2434df7c2428d96c2436 *8b44242889c13b05d42c080873068b0dd42c080883ec0c51eb77833ddc2c0808007465e8537aff *ff89c1833d502c0808007521a16c2c08088d04808d0480c1e0028b1d342c0808ba00000000f773 *08a3c8220808a1dc2c080829c88d14808d1492c1e202a1c822080883c06489c189d0c1fa1ff7f9 *3b05d42c08087d05a1d42c080883ec0c50eb0983ec0cff35d42c0808e8e475ffff83c410833d54 *2c080800741183ec0cff35402e0808e8e626000083c410e83f75ffff83ec0cff35382e0808e8c0 *7bffff83c404ff353c2e0808e89251ffff83c404ff35542c0808e89161ffff83c404ff35502c08 *08ff74242c55ff742438ff742440e8f864ffff83c420e8a559ffff83c44c5b5e5f5dc3575653bf *000000008b155c2c080883fa010f84f300000083fa017213b80000000083fa020f84aa010000e9 *98010000c705582c080800000000be382e08088b1d382e080885db0f848b000000813bc8ee0608 *74158b03668b40fc25ffff000083f838740c83f84075578b53048916eb5d83ec0cff7304e88101 *000083c41085c074368943048b4308e8400300008943088b430ce83503000089430c8b43108906 *8b5310a1b02d0808894310891db02d0808bf01000000eb158d73108b5310eb0d83ec0c680cbd07 *08e90201000089d385d20f8575ffffff85ff0f85e10000008b1d382e080885db74128b430ce8dc *02000089430c8b5b1085db75eec7055c2c080801000000e9b6000000be602c08088b1d602c0808 *81fb1c190808746d83ec0c53e8d600000089c283c41085c0740289c3668b431025ffff000083f8 *03741183f803770583f802eb0383f8047407eb118b5304eb298b530cc7430c1c190808eb1d85d2 *75088d730c8b530ceb138b530ca1442a080889430c891d442a0808891689d381fa1c1908087593 *a1602c08083d1c19080874208b580ce82f0200008b153c2e080889500ca33c2e080889d881fb1c *19080875e0c7055c2c080802000000b801000000eb0d83ec0c68d2bc0708e8df39ffff5b5e5fc3 *5383ec088b5c24108b0385c07411e8e201000089038d58108b401085c075ef83c4085bc3555756 *538b7424148b2d502c08088b3e83ef0889f0c1e81489f180b8602e0808000f849400000089f025 *00f00f00c1e80789f281e20000f0ff09d089f1396810777989f1f6401c017571b900000000f640 *1c027566f6401c08742089f12b08c1f90289cbc1eb058b500c83e11fb801000000d3e089f18504 *9a7540668b470425ffff000083f83b741983f83b7f0a83e81e83f8047720eb1683f84075198b4e *04eb19b90000000066837e1003750d8b7604e958ffffffb90000000089c85b5e5f5dc35383ec08 *8b5c24108b03e800010000890383c4085bc35557565383ec0c8b7c24208b6c24248b5c24288b74 *242c8b46143b05582c08087312a1582c08088d04c08b15282c08088b7482048b46248d04a83b46 *28720c83ec0c56e833eeffff83c4108b4e2489fa85db740d8b02890183c20483c1044b75f38b46 *248d14a8895624c70798ee060889470483c40c5b5e5f5dc3565383ec048b4424148b70048b4624 *83c00c3b4628720c83ec0c56e8e0edffff83c4108b5e248d430c894624c70388ef06088b442410 *89430489d981e100f00f00c1e90789d8250000f0ff09c18379100074238b41108d04c08b15282c *08088b4482148943088b41108d04c08b15282c0808895c821489d883c4045b5ec35557565383ec *0c89c389d8c1e81480b8602e0808000f845b01000089d82500f00f00c1e80789da81e20000f0ff *09c28b42103b05502c08087740f6421c020f84b80000008b0b83e908668379043b750b66837b10 *030f84b007000089d82500f00f00c1e80789da81e20000f0ff89c109d1f6411c01741e8b41103b *05582c08080f83a2050000c705642c080801000000e9930500008b511483790c00740b8b510c8b *4108894208eb068b41088942188379080074098b51088b410c89420c8b41148b500c8b42143b05 *582c08087312a1582c08088d04c08b15282c08088b5482048951148b42148941108b4240894108 *894a4083491c01e92c050000f6421c08746e8b3289d929f1c1f90289c8c1e8058b520c83e11fbf *0100000089fdd3e5852c820f850005000089d929f1c1f90289c8c1e80583e11fd3e7093c82a178 *2c08083b057c2c08087214c705802c080801000000a1742c0808a3782c0808a1782c0808891883 *05782c080804e9b80400008b42148b780c8b0b83e908668b410425ffff000083f8400f87cf0600 *00ff2485d0be070889dd668b0125ffff0000668b510281e2ffff00008d5c020189fe8b47143b05 *582c08087312a1582c08088d04c08b15282c08088b7482048b46248d04983b4628720c83ec0c56 *e8a3ebffff83c4108b4e2489ea85db0f84010600008b02890183c20483c1044b75f3e9ef050000 *8b4b04813b249705080f94c281f9ff0000000f96c021d08d14cd2c190808a8010f854c06000081 *3b3c9705080f94c283f9f00f9dc021d0a80174108d14cdac21080883f9100f8e2706000089ddbe *0200000089fb8b47143b05582c08087312a1582c08088d04c08b15282c08088b5c82048b43248d *04b03b4328720c83ec0c53e8fceaffff83c4108b4b2489ea85f60f84ce0200008b02890183c204 *83c1044e75f3e9bc02000089ddbe0300000089fb8b47143b05582c08087312a1582c08088d04c0 *8b15282c08088b5c82048b43248d04b03b4328720c83ec0c53e8a0eaffff83c4108b4b2489ea85 *f60f84720200008b02890183c20483c1044e75f3e96002000089ddbe0300000089fb8b47143b05 *582c08087312a1582c08088d04c08b15282c08088b5c82048b43248d04b03b4328720c83ec0c53 *e844eaffff83c4108b4b2489ea85f60f84160200008b02890183c20483c1044e75f3e904020000 *89dd668b0125ffff0000668b510281e2ffff00008d5c020189fe8b47143b05582c08087312a158 *2c08088d04c08b15282c08088b7482048b46248d04983b4628720c83ec0c56e8d7e9ffff83c410 *8b4e2489ea85db0f84350400008b02890183c20483c1044b75f3e92304000089dd668b431689c3 *81e3ffff000089fe8b47143b05582c08087312a1582c08088d04c08b15282c08088b7482048b46 *248d04983b4628720c83ec0c56e874e9ffff83c4108b4e2489ea85db0f84d20300008b02890183 *c20483c1044b75f3e9c0030000576a016a0353e8ccfaffff89c283c410e92e04000089ddbe0300 *000089fb8b47143b05582c08087312a1582c08088d04c08b15282c08088b5c82048b43248d04b0 *3b4328720c83ec0c53e803e9ffff83c4108b4b2489ea85f60f84d50000008b02890183c20483c1 *044e75f3e9c3000000833d482c080808765589ddbe0300000089fb8b47143b05582c08087312a1 *582c08088d04c08b15282c08088b5c82048b43248d04b03b4328720c83ec0c53e89ee8ffff83c4 *108b4b2489ea85f674748b02890183c20483c1044e75f3eb6583ec0853ff31e87303000083c410 *85c0755e89ddbe0300000089fb8b47143b05582c08087312a1582c08088d04c08b15282c08088b *5c82048b43248d04b03b4328720c83ec0c53e837e8ffff83c4108b4b2489ea85f6740d8b028901 *83c20483c1044e75f38b4324894b24e987020000ff05482c0808e886faffffff0d482c0808c703 *98ee0608894304e97202000066837906000f848f000000833d542c0808000f8482000000837b0c *00757ca14c2c080889430ceb6c6683790600746b833d542c0808007462837b0400755ca14c2c08 *08894304eb4c833d542c0808007449837b0c007543837b0800753da14c2c0808894308eb2d833d *542c080800742a668b1181e2ffff0000668b410225ffff000001c2837c930400750fa14c2c0808 *89449304891d4c2c080889dae94402000083ec085368e9bc0708e93102000089dd668b430625ff *ff00008d580389fe8b47143b05582c08087312a1582c08088d04c08b15282c08088b7482048b46 *248d04983b4628720c83ec0c56e804e7ffff83c4108b4e2489ea85db0f84620100008b02890183 *c20483c1044b75f3e95001000089dd8b5b0483c30389fe8b47143b05582c08087312a1582c0808 *8d04c08b15282c08088b7482048b46248d04983b4628720c83ec0c56e8a7e6ffff83c4108b4e24 *89ea85db0f84050100008b02890183c20483c1044b75f3e9f3000000833d582c08080074388b53 *0489d0c1e81480b8602e080800742789d02500f00f00c1e80781e20000f0ff09d08b40103b0558 *2c0808730ac705642c0808010000008b5304e92d01000089dd8b5b0483c30289fe8b47143b0558 *2c08087312a1582c08088d04c08b15282c08088b7482048b46248d04983b4628720c83ec0c56e8 *01e6ffff83c4108b4e2489ea85db74638b02890183c20483c1044b75f3eb5489dd8b5b0483c303 *89fe8b47143b05582c08087312a1582c08088d04c08b15282c08088b7482048b46248d04983b46 *28720c83ec0c56e8abe5ffff83c4108b4e2489ea85db740d8b02890183c20483c1044b75f38b46 *24894e24c7450098ee060889450489c2eb6f66837b100375088b5b04e9f6f7ffff8b432883c00d *576a0d5053e8e4f6ffff89c683c4085053e8d70100008b53308b4e3083c4108b43288d44833439 *c273158b02890183c20483c1048b43288d44833439c272eb89f2eb1783ec08668b410425ffff00 *00506830bd0708e8732fffff89d083c40c5b5e5f5dc35557565383ec0c8b7c24248b77048b2f89 *f82500f00f00c1e80789fa81e20000f0ff09d08b4010ba000000003b05502c08080f8747010000 *c70764ed060889f281e200f00f00c1ea0789f0250000f0ff09c289f0c1e81480b8602e08080074 *308b421ca8017522a808742589f12b0ac1f90289cbc1eb058b520c83e11fb801000000d3e08504 *9a7407b801000000eb05b80000000085c00f85db0000008b1683ea08668b420425ffff000083f8 *400f87ad000000ff2485d4bf07088b4424208b74860489f281e200f00f00c1ea0789f0250000f0 *ff09c289f0c1e81480b8602e08080074308b421ca8017522a808742589f12b0ac1f90289cbc1eb *058b520c83e11fb801000000d3e085049a7407b801000000eb05b80000000089f285c0745feb56 *8b7604e914ffffffff05482c0808833d482c080808773f83ec0856ff32e8bcfeffffff0d482c08 *0883c41085c07427894604c70664ec060889c6e9ddfeffff83ec08668b420425ffff0000506854 *bd0708e8f12dffff892fba0000000089d083c40c5b5e5f5dc38b54240889d02b44240483e0fc01 *4230c35557565383ec0cbd000000008b4424208b58088b4004894424088b4424208b30bf000000 *003b7c2408732bf6c30174078b06e8b2f5ffff4783c604f7c71f000000750b458b4424208b5ca8 *08eb02d1eb3b7c240872d583c40c5b5e5f5dc35383ec088b5c24108b4304e87bf5ffff89430466 *8b4312486683f802770b8b4314e865f5ffff894314837b1800740b8b4318e854f5ffff89431883 *ec088b43288d44833450ff7330e87815000083c4185bc35557565383ec0ca1582c08088904248b *5424208b723c8b4a38894c2404c705642c0808000000003b4a2c75093b72240f83c30700008b54 *24048b4424203b502c74133b7204750e8b4a08894c24048b31e9890700008b1e83eb0889742408 *668b430425ffff000083f83b0f8722070000ff2485d8c00708c705582c0808000000008b4604e8 *b0f4ffff8946048b460ce8a5f4ffff89460c8b4610e89af4ffff8946108b0424a3582c080889f1 *81e100f00f00c1e90789f0250000f0ff09c18379100074238b41108d04c08b15282c08088b4482 *108946088b41108d04c08b15282c080889748210c705642c08080000000083c614e9b10600008d *53f0668b421689c381e3ffff00008b7a0881fbffff0000750683ec0c57eb3485db7454f6c30174 *078b07e810f4ffff83c704d1eb75edeb3f668b430689c781e7ffff00008b5bfc81ffffff000075 *0e83ec0c53e8fefdffff83c410eb1a85ff7416f7c70100000074078b03e8cff3ffff83c304d1ef *75ea8b4608e8c0f3ffff894608e9ea030000668b430689c781e7ffff00008b5bfc81ffffff0000 *0f849601000085ff0f84c7030000f7c70100000074078b03e886f3ffff83c304d1ef75eae9ac03 *00008d53f0668b421689c381e3ffff00008b7a0881fbffff0000750e83ec0c57e86efdffff83c4 *10eb1785db7413f6c30174078b07e842f3ffff83c704d1eb75ed8b4604e833f3ffff894604eb7d *668b430689c781e7ffff00008b5bfc81ffffff00000f848100000085ff0f8448030000f7c70100 *000074078b03e8fcf2ffff83c304d1ef75eae92d0300008d53f0668b421689c381e3ffff00008b *7a0881fbffff0000750e83ec0c57e8e4fcffff83c410eb1785db7413f6c30174078b07e8b8f2ff *ff83c704d1eb75ed83c608e91a050000668b430689c781e7ffff00008b5bfc81ffffff00007506 *83ec0c53eb4185ff0f84c1020000f7c70100000074078b03e875f2ffff83c304d1ef75eae9a602 *00008d53f0668b421689c381e3ffff00008b7a0881fbffff0000751183ec0c57e85dfcffff83c4 *10e97b02000085db0f8473020000f6c30174078b07e82af2ffff83c704d1eb75ede95b02000066 *8b430689c781e7ffff00008b5bfc81ffffff0000750683ec0c53eb4185ff0f842b020000f7c701 *00000074078b03e8eaf1ffff83c304d1ef75eae9100200008d53f0668b421689c381e3ffff0000 *8b7a0881fbffff0000751183ec0c57e8d2fbffff83c410e9e501000085db0f84dd010000f6c301 *74078b07e89ff1ffff83c704d1eb75ede9c50100008d53f0668b421689c781e7ffff00008b6a08 *81ffffff0000743485ff7459f7c70100000074088b4500e865f1ffff83c504d1ef75e9eb40668b *430689c781e7ffff00008b6bfc81ffffff0000750e83ec0c55e853fbffff83c410eb1b85ff7417 *f7c70100000074088b4500e823f1ffff83c504d1ef75e9668b0325ffff00008d7c860483c60439 *fe73108b06e802f1ffff890683c60439fe72f0668b4302eb308b4604e8ebf0ffff8946048b4608 *e8e0f0ffff8946088b460ce8d5f0ffff89460c8b4610e8caf0ffff894610668b461625ffff0000 *e90d0300008b5424208b42108338007406c70654ed06088b4604e89ff0ffff894604833d642c08 *08000f84cc000000c705642c08080000000089f181e100f00f00c1e90789f0250000f0ff09c183 *7910000f84a40000008b41108d04c08b15282c08088b4482148946088b41108d04c08b15282c08 *0889748214eb7fc705582c0808000000008b4604e830f0ffff8946048b0c24890d582c0808eb0b *8b4604e81af0ffff89460489f181e100f00f00c1e90789f0250000f0ff09c18379100074238b41 *108d04c08b15282c08088b4482108946088b41108d04c08b15282c080889748210c705642c0808 *00000000eb0b8b4604e8c6efffff89460483c60ce92c0200008b4608e8b3efffff89460883ec08 *8b46048d44860c508d460c50e8d60f00008b46048d74860c83c410e9fe01000089f58b4608e883 *efffff8946088b1083ea188d7e0c668b460689c681e6ffff0000668b420c25ffff000083f80174 *1783f8017f0685c07409eb3283f8027411eb2b8b4204eb3683ec0456ff720457eb0f83ec04568b *450883c018508d450c50e80c0f000083c4108d3cb7eb3b668b420c25ffff00008b0485b8c10608 *89c3c1eb05668b450689c681e6ffff000085f67416f6c30175098b07e8f0eeffff890783c704d1 *eb4e75ea89fee9500100008b460483c002e928010000c705582c0808000000008b460483c0038d *1c8683c60c39de73108b06e8b3eeffff890683c60439de72f08b0424a3582c08088b4c240881e1 *00f00f00c1e9078b442408250000f0ff09c183791000742b8b41108d04c08b15282c08088b4482 *108b5424088942088b41108d04c08b15282c08088b4c2408894c8210c705642c080800000000e9 *bb000000c74608000000008b460483c0038d1c8683c60c39de0f83a00000008b06e828eeffff89 *0683c60439de72f0e98b00000089f3c705582c08080000000083ec0c56e87af8ffff8b442410a3 *582c080883c41089f181e100f00f00c1e90789f0250000f0ff09c18379100074238b41108d04c0 *8b15282c08088b4482108946088b41108d04c08b15282c080889748210c705642c080800000000 *8b432883c00d8d3486eb1883ec0456668b430425ffff0000506880bd0708e87525ffff833d642c *080800742bc705642c08080000000083ec08a1582c08088d04c08b15282c08088d048250ff7424 *14e8e0ecffff83c4108b4c24048b5424203b4a2c0f8546f8ffff3b72240f823df8ffff8b542404 *8b44242089503889703c83c40c5b5e5f5dc35557565383ec0ca1302c08088b00a3582c08088944 *2404a1782c080889c23b05742c08080f846d05000089d08d52fc8915782c08088b58fc8b3383ee *08895c2408668b460425ffff000083f83b0f87ad040000ff2485c8c10708c705582c0808000000 *008b4304e8bfecffff8943048b430ce8b4ecffff89430c8b4310e8a9ecffff894310e90c040000 *8d56f0668b421689c681e6ffff00008b7a0881feffff0000750683ec0c57eb3785f67457f7c601 *00000074078b07e86eecffff83c704d1ee75eaeb3f668b460689c781e7ffff00008b76fc81ffff *ff0000750e83ec0c56e85cf6ffff83c410eb1a85ff7416f7c70100000074078b06e82decffff83 *c604d1ef75ea8b4308e81eecffff894308e9730200008d56f0668b421689c681e6ffff00008b7a *0881feffff0000750683ec0c57eb3e85f60f844b020000f7c60100000074078b07e8dfebffff83 *c704d1ee75eae930020000668b460689c781e7ffff00008b76fc81ffffff0000751183ec0c56e8 *caf5ffff83c410e90802000085ff0f8400020000f7c70100000074078b06e894ebffff83c604d1 *ef75eae9e50100008d56f0668b421689c381e3ffff00008b720881fbffff0000743785db0f8453 *030000f6c30174078b06e85aebffff83c604d1eb75ede93b030000668b460689c381e3ffff0000 *8b76fc81fbffff0000750e83ec0c56e845f5ffffe9f902000085db0f840e030000f6c30174078b *06e815ebffff83c604d1eb75ede9f60200008d56f0668b421689c781e7ffff00008b6a0881ffff *ff0000743485ff7459f7c70100000074088b4500e8dbeaffff83c504d1ef75e9eb40668b460689 *c781e7ffff00008b6efc81ffffff0000750e83ec0c55e8c9f4ffff83c410eb1b85ff7417f7c701 *00000074088b4500e899eaffff83c504d1ef75e9668b0625ffff00008d74830483c30439f30f83 *680200008b03e874eaffff890383c30439f372f0e9530200008b4304e85eeaffff8943048b4308 *e853eaffff8943088b430ce848eaffff89430c8b4310e83deaffff894310e9220200008b4304e8 *2deaffff894304833d642c0808000f849101000089d981e100f00f00c1e90789d8250000f0ff09 *c1837910000f84730100008b41108d04c08b15282c08088b4482148943088b41108d04c08b1528 *2c0808895c8214e94b010000c705582c0808000000008b4304e8c5e9ffff8943048b7c2404893d *582c0808e9270100008b4304e8abe9ffff894304e9170100008b4304e89be9ffff894304e98001 *00008b4308e88be9ffff89430883ec088b43048d44830c508d430c50e8ae090000e93f01000089 *dd8b4308e865e9ffff8943088b1083ea188d7b0c668b430689c381e3ffff0000668b420c25ffff *000083f801741783f8017f0685c07409eb2f83f8027411eb288b4204eb3383ec0453ff720457eb *0f83ec04538b450883c018508d450c50e8ee080000e9d6000000668b420c25ffff00008b0485b8 *c1060889c6c1ee05668b450689c381e3ffff000085db0f84ca000000f7c60100000075098b07e8 *cee8ffff890783c704d1ee4b75e7e9ac000000c705582c0808000000008b430483c0038d348383 *c30c39f373108b03e89ee8ffff890383c30439f372f08b442404a3582c0808c705642c08080000 *0000eb6dc74308000000008b430483c0038d348383c30c39f373568b03e862e8ffff890383c304 *39f372f0eb44c705582c08080000000083ec0c53e8b9f2ffff8b7c2414893d582c0808c705642c *08080000000083c410eb1883ec0453668b460425ffff00005068b8bd0708e8f91fffff833d642c *080800742bc705642c08080000000083ec08a1582c08088d04c08b15282c08088d048250ff7424 *14e864e7ffff83c4108b4c240883c1048b4424082500f00f00c1e8078b54240881e20000f0ff09 *d02b08c1f90289cbc1eb058b500c83e11fb801000000d3e009049a8b15782c08083b15742c0808 *0f8593faffff833d802c080800742a833d842c0808007521c705802c080800000000a1302c0808 *8b40048b4004a3842c08088b00a3882c0808833d842c0808000f84aa0000008b1d842c0808be01 *000000eb078305882c080804a1882c08083b4304731b89c12b0bc1f90289cac1ea058b430c83e1 *1f89f7d3e7853c9074d4a1842c08088b35882c08083b700473448d4e042b08c1f90289cbc1eb05 *8b500c83e11fb801000000d3e085049a74058d4608eb338b15882c0808a1782c08088910830578 *2c0808048305882c080808e9b3f9ffffa1842c08088b4008a3842c080885c0740c8b00a3882c08 *08e956ffffff83c40c5b5e5f5dc35557565383ec0c8b5c24208b3d582c08088b1383ea08668b42 *0425ffff000083f83b0f8715020000ff2485b8c20708668b0225ffff00008d74830483c30439f3 *0f830e0200008b03e855e6ffff890383c30439f372f0e9f90100008b4304e83fe6ffff894304e9 *e9010000c705582c08080000000089d981e100f00f00c1e90789d8250000f0ff09c18379100074 *238b41108d04c08b15282c08088b4482108943088b41108d04c08b15282c0808895c82108b4304 *83c0038d348383c30c39f30f83980000008b03e8d5e5ffff890383c30439f372f0e983000000c7 *4308000000008b430483c0038d348383c30c39f30f835e0100008b03e8a5e5ffff890383c30439 *f372f0e949010000c705582c08080000000083ec0c53e8f9efffff83c41089d981e100f00f00c1 *e90789d8250000f0ff09c18379100074238b41108d04c08b15282c08088b4482108943088b4110 *8d04c08b15282c0808895c8210893d582c0808c705642c080800000000e9e10000008b4308e827 *e5ffff89430883ec088b43048d44830c508d430c50e84a050000eb6489dd8b4308e804e5ffff89 *43088b1083ea188d7b0c668b430689c381e3ffff0000668b420c25ffff000083f801741783f801 *7f0685c07409eb2f83f8027411eb288b4204eb3383ec0453ff720457eb0f83ec04538b450883c0 *18508d450c50e88d04000083c410eb57668b420c25ffff00008b0485b8c1060889c6c1ee05668b *450689c381e3ffff000085db7432f7c60100000075098b07e871e4ffff890783c704d1ee4b75e7 *eb1783ec08668b420425ffff00005068f8bd0708e8341cffffa1642c0808c705642c0808000000 *0083c40c5b5e5f5dc35557565383ec0c8b7c24208b5f14bd201908088b73088b07a3582c0808c7 *05642c08080000000039eb0f84900000008b1383ea08668b420425ffff000083f8227f0c83f821 *7d0e83f81f7409eb4983f837742beb428b4304e8dae3ffff894304833d642c080800740cc70564 *2c080800000000eb1bc7430800000000eb3083ec0cff7304e80cfdffff83c41085c0741e896b08 *89ddeb1783ec08668b420425ffff0000506818be0708e86f1bffff89f38b760881fb201908080f *8570ffffff896f1483c40c5b5e5f5dc35557565383ec0c8b6c24208b75188b460889442408c705 *582c080800000000c705642c08080000000081fe201908080f84710100008b1683ea08668b4204 *25ffff000083e81f83f81c0f8729010000ff2485a8c307088b45108946088975108b460483c003 *8d3c868d5e0c39fb0f831c0100008b03e8f3e2ffff890383c30439fb72f0e9070100008b4500a3 *582c08088b460483c0038d3c868d5e0c39fb73108b03e8c6e2ffff890383c30439fb72f0c70558 *2c080800000000c7460800000000833d642c0808000f84c1000000c705642c08080000000083ec *085556e80de2ffffeb358b4604e881e2ffff8946048b460ce876e2ffff89460c8b4610e86be2ff *ff894610eb2283ec0c56e8d2ecffff8b451089460889751083c410eb718b4604e847e2ffff8946 *048b4510894608897510eb5b8b4500a3582c08088b4604e829e2ffff894604c705582c08080000 *0000833d642c0808007415c705642c0808000000008b4514894608897514eb20c7460800000000 *eb1783ec08668b420425ffff0000506844be0708e8c419ffff8b7424088b46088944240881fe20 *1908080f858ffeffff83c40c5b5e5f5dc3565383ec048b1d4c2c0808a1302c08088b00a3582c08 *0883fb010f847c0100008b0b8d71f8668b51f881e2ffff0000668b460225ffff000001c28b4493 *04a34c2c0808668b51f881e2ffff0000668b460225ffff000001c2a1402e080889449304891d40 *2e0808668b460425ffff000083f8110f849700000083f8117f0e83f8090f84ca000000e9ea0000 *0083f818744b83f8220f85dc0000008b4304e81de1ffff894304833d642c0808000f84db000000 *c705642c0808000000008b4308a3402e0808a1302c08088b4014894308a1302c0808895814e9b1 *000000668b460689c381e3ffff00008b76fc81fbffff0000743785db0f8492000000f6c3017407 *8b06e8b8e0ffff83c604d1eb75edeb7d8d56f0668b421689c381e3ffff00008b720881fbffff00 *00750e83ec0c56e8a3eaffff83c410eb5585db7451f6c30174078b06e877e0ffff83c604d1eb75 *edeb3c668b0625ffff00008d74830483c30439f373298b03e854e0ffff890383c30439f372f0eb *1783ec08668b460425ffff0000506870be0708e81818ffff8b1d4c2c080883fb010f8584feffff *83c4045b5ec35557565383ec0c8b742420bd000000008b4424248b5804bf000000003b7c242873 *2df6c30175098b06e8efdfffff89064783c604f7c71f000000750b458b4424248b5ca804eb02d1 *eb3b7c242872d383c40c5b5e5f5dc35557565383ec0c8b7c24203b7c24240f83fc0100008b0783 *e80c89442408668b400825ffff000083e82383f8090f87b9010000ff24851cc407088b4704e884 *dfffff89470483c708e9ba0100008b5424088b420489c583e51f83c70489ee89c3c1eb0585ed74 *16f6c30175098b07e853dfffff890783c704d1eb4e75ea8b542408668b420a89c381e3ffff0000 *8b3281fbffff0000750b83ec0c56e83de9ffffeb4385db0f845d010000f6c30174078b06e810df *ffff83c604d1eb75ede94501000083c7048b07e8fadeffff890783c7048b581883ec045383c018 *5057e8c7feffff8d3c9f83c410e91a0100008b5424088b42048b1883c70483ec0453ff720457e8 *a3feffff8d3c9f83c410e96cffffff8b6f048d770cbf0800000089eb81e3ffff0000f6c3017509 *8b06e896deffff890683c604d1eb4f75ea89e8c1e80e25fc0300008d7c3028c1ed180f84b60000 *008b07e86edeffff890783c7044d75f1e9a20000008b4708e859deffff8947088b1083ea1883c7 *0c668b420c25ffff000085c0740783f8017407eb208b4204eb2b8b42048b1883ec04535057e808 *feffff83c4108d3c9fe9d1feffff668b420c25ffff00008b0485b8c1060889c6c1ee0589c383e3 *1f85db0f84affefffff7c60100000075098b07e8e9ddffff890783c704d1ee4b75e7e991feffff *83ec088b542410668b420825ffff0000506894be0708e8a515ffff3b7c24240f8204feffff83c4 *0c5b5e5f5dc35756538b5c24108b534085d274578d7b448b420889434089d18b4344894208c742 *0c00000000837b440074068b434489500c890f8b43480342188943488b3283ec0c56e8c3f6ffff *83c41085c0740f83ec08ff731056e8d4dcffff83c4108b534085d275ac5b5e5fc38b4c240483f9 *01742a8b01668b50f881e2ffff0000668b40fa25ffff000001c28b449104c74491040000000089 *c183f80175d6c38b54240481fa2019080874138b4208c742080000000089c23d2019080875edc3 *8b151c2c080885d274138b420c8902c7420c000000008b520885d275edc7051c2c080800000000 *c3565383ec048b7424108b1d1c2c080885db741383ec0c8d430450ffd683c4108b5b0885db75ed *83c4045b5ec3538b4424088b48308b0183e80c668b400825ffff000083f82a740b83f82c0f8484 *000000eb268b4104813864ed060874778138dced0608740e813808ee06087406c70064ed060883 *c108ebbc8b1183ea0c668b420825ffff000083e82383f8067737ff248544c407088b410489c2c1 *ea18c1e81025ff0000008d541015eb218b510483c203eb198b42048b10eb118b41048b501883c2 *02eb078b520483e21f428d0c91e960ffffff5bc35557565383ec1cc7442414000000008b542430 *8b42288d448234894424108b5a30c744241800000000bd000000008d7bf839c30f83aa0100008b *0383e80c668378082a0f852501000089de8b4304813864ed0608751085ed0f84850100008d7bf8 *e97d010000837c2418000f84c80000008b4424143943040f84b10000008b4b048b11668b42fc25 *ffff0000f6840041220808010f859500000081fadced0608750e83ec0cff7104e8a823ffff83c4 *108b4e0489c82500f00f00c1e80789ca81e20000f0ff09d08944240c8378100075128b54241489 *51048b4604c70064ec0608eb4c8b46048b5424148950048b4e048139dced0608742e8b54240c8b *42108d04c08b15282c08088b4482148941088b54240c8b42108d04c08b4e048b15282c0808894c *82148b4604c70044ed060883c502892b897b04eb308b4304813864ed060874168138dced060874 *0e813808ee06087406c70064ed0608c7442418010000008b76048974241483c308eb6bc7442418 *0000000085ed74038d7bf8bd000000008b1383ea0c668b420825ffff000083e82383f8067737ff *248560c407088b430489c2c1ea18c1e81025ff0000008d541015eb218b530483c203eb198b4204 *8b10eb118b43048b501883c202eb078b520483e21f428d1c933b5c24100f8256feffff8d5f0889 *de8b4424303b7830762a8b07c1e00229c389d88b7f048d5f0829d829c683ec04505356e87156fd *ff83c4108b5424303b7a3077d68b44243089703083c41c5b5e5f5dc383ec0c8b442410833df82c *080801750b83ec0c50e8bdfdffffeb0983ec0c50e808fdffff83c41cc390905383ec088b5c2410 *83fb010f84a70000008b0b83e908668b410425ffff000083f811745583f8117f0783f8097450eb *6883f818743f83f822755e8b4b0489c8c1e81480b8602e080800742489c82500f00f00c1e80789 *ca81e20000f0ff09d0f6401c01750a8b018943048d430589018b5b08eb3b8b5b0ceb368b5b04eb *31668b1181e2ffff0000668b410225ffff000001c28b5c9304eb1783ec08668b410425ffff0000 *50687cc40708e8d510ffff83fb010f8559ffffff83c4085bc35557565383ec3c8b5c24503b5c24 *540f83120400008b1383ea0c668b420825ffff000083e82383f8090f87d7030000ff248534c507 *088b6b0489e981e1ffff000083c30cbf08000000f6c10175338b3389f0c1e81480b8602e080800 *742389f02500f00f00c1e80789f281e20000f0ff09d0f6401c0175098b0689038d4301890683c3 *04d1e94f75c089e8c1e80e25fc0300008d5c182889efc1ef180f847b0300008b0b89c8c1e81480 *b8602e080800742389c82500f00f00c1e80789ca81e20000f0ff09d0f6401c0175098b0189038d *4301890183c3044f75c7e93d0300008b420489c1c1e90583c30489c783e71f0f8427030000f6c1 *0175338b3389f0c1e81480b8602e080800742389f02500f00f00c1e80789f281e20000f0ff09d0 *f6401c0175098b0689038d4301890683c304d1e94f75c0e9e202000083c3048b0b89c8c1e81480 *b8602e080800742389c82500f00f00c1e80789ca81e20000f0ff09d0f6401c0175098b0189038d *4301890183c3048b41188944243889df8d51188954243489442430c744242c000000008b711cbd *0000000039c57361f7c60100000075338b0f89c8c1e81480b8602e080800742389c82500f00f00 *c1e80789ca81e20000f0ff09d0f6401c0175098b0189078d470189014583c704f7c51f00000075 *12ff44242c8b44242c8b5424348b748204eb02d1ee3b6c2430729f8b4424388d1c83e914020000 *83c3048b42048b3889dd89442428897c2424c744241c000000008b7004c744242000000000397c *24207369f7c60100000075358b4d0089c8c1e81480b8602e080800742489c82500f00f00c1e807 *89ca81e20000f0ff09d0f6401c01750a8b018945008d45018901ff44242083c504f64424201f75 *12ff44241c8b54241c8b4424288b749004eb02d1ee8b5424243954242072978d1cbbe978010000 *89de8b43088b00a80174078b40ffa80175f98d58e88b4e0889c8c1e81480b8602e080800742489 *c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01750a8b018946088d460989018d7e0c66 *8b430c25ffff000085c0740a83f801740de99b0000008b4304e9a30000008b43048b3089fd8944 *241889742414c744240c000000008b5804c744241000000000397424107366f6c30175358b4d00 *89c8c1e81480b8602e080800742489c82500f00f00c1e80789ca81e20000f0ff09d0f6401c0175 *0a8b018945008d45018901ff44241083c504f64424101f7512ff44240c8b44240c8b5424188b5c *8204eb02d1eb8b44241439442410729a8d3cb7eb5e668b430c25ffff00008b0485b8c1060889c3 *c1eb0589c683e61f85f67440f6c30175338b0f89c8c1e81480b8602e080800742389c82500f00f *00c1e80789ca81e20000f0ff09d0f6401c0175098b0189078d4701890183c704d1eb4e75c089fb *eb1783ec08668b420825ffff00005068a0c40708e8aa0cffff3b5c24540f82eefbffff83c43c5b *5e5f5dc35383ec088b5c24108b4b0489c8c1e81480b8602e080800742489c82500f00f00c1e807 *89ca81e20000f0ff09d0f6401c01750a8b018943048d430589018b4b0c89c8c1e81480b8602e08 *0800742489c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01750a8b0189430c8d430d89 *01668b4312486683f80277358b4b1489c8c1e81480b8602e080800742489c82500f00f00c1e807 *89ca81e20000f0ff09d0f6401c01750a8b018943148d43158901837b180074358b4b1889c8c1e8 *1480b8602e080800742489c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01750a8b0189 *43188d4319890183ec088b43288d44833450ff7330e8d1faffff8b432883c00d8d048383c4185b *c35557565383ec1c837c2430000f84290300008b4424308b088b1183ea08668b420425ffff0000 *83e81c83f81f0f87df020000ff24855cc507088b410483c0038d348183c10c39f10f83db020000 *8b1989d8c1e81480b8602e080800742389d82500f00f00c1e80789da81e20000f0ff09d0f6401c *0175098b0389018d4101890383c10439f172c6e99c02000083ec0c51e85dfeffffeb4b89ce8b59 *0889d8c1e81480b8602e080800742489d82500f00f00c1e80789da81e20000f0ff09d0f6401c01 *750a8b038941088d4109890383ec088b46048d44860c508d460c50e8e1f9ffff83c410e93e0200 *00894c24188b41088b00a80174078b40ffa80175f98d50e88b7c241883c70c8b4c2418668b4106 *89c381e3ffff0000668b420c25ffff000083f801742483f8017f0985c07413e93001000083f802 *0f8496000000e9220100008b4204e92a0100008b520489542414895c2410c744240c000000008b *7204bd0000000039dd0f8363010000f7c60100000075338b0f89c8c1e81480b8602e0808007423 *89c82500f00f00c1e80789ca81e20000f0ff09d0f6401c0175098b0189078d470189014583c704 *f7c51f0000007512ff44240c8b44240c8b5424148b748204eb02d1ee3b6c2410729fe9fd000000 *8b7c241883c70c8b4c24188b41088d501889542408895c2404c70424000000008b701cbd000000 *0039dd0f83cd000000f7c60100000075338b0f89c8c1e81480b8602e080800742389c82500f00f *00c1e80789ca81e20000f0ff09d0f6401c0175098b0189078d470189014583c704f7c51f000000 *7510ff04248b0c248b4424088b748804eb02d1ee3b6c240472a1eb6c668b420c25ffff00008b04 *85b8c1060889c6c1ee058b542418668b420689c381e3ffff000085db7443f7c60100000075338b *0f89c8c1e81480b8602e080800742389c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01 *75098b0189078d4701890183c704d1ee4b75bd8b4424188b480889c8c1e81480b8602e08080074 *4389c82500f00f00c1e80789ca81e20000f0ff09d0f6401c0175298b018b54241889420889d083 *c0098901eb1783ec08668b420425ffff00005068dcc40708e86208ffff8b4c24308b4908894c24 *3085c90f85d7fcffff83c41c5b5e5f5dc35383ec088b5c241085db74278b133b530473198b0283 *e80883ec085250e8b006000089c283c4103b430472e78b5b0885db75d983c4085bc35557565383 *ec0c8b742420897424048b068944240885f60f84e40000008b1e3b5e047208e9cd00000083c304 *3b5e04731e89d92b0ec1f90289cac1ea058b460c83e11fbf01000000d3e7853c9074da3b5e040f *839e0000008b03a80174078b40ffa80175f983e80889dd83ec085350e82606000089c389c729ef *c1ff028b4424188d14b88b4c24148b01050010000083c41039c276328d4d042b0ec1f90289cac1 *ea0583e11fb801000000d3e089c1f7d18b460c210c908b4c24048b4908894c24048b0189442408 *8b4c24088b5500f6c201740b4a8b02890a89c2a80175f58955008b4c24088d0cb9894c24083b5e *040f8236ffffff8b760885f60f851cffffff83c40c5b5e5f5dc35557565383ec1c8b4424308b40 *048944241489c78b1089542418c744240c0100000085c00f84be0100008b373b77040f83a80100 *00bb01000000eb0383c6043b7704731b89f12b0fc1f90289cac1ea058b470c83e11f89ddd3e585 *2c9074dd3b77040f83750100008d4e042b0fc1f90289cbc1eb058b570c83e11fb801000000d3e0 *85049a751c8b5424188b4424148950048b4808894c24148b19895c2418ff44240c89f38b4c2418 *8b16f6c201740b4a8b02890a89c2a80175f589138b2e83ed08896c241089e9668b450425ffff00 *0083f83b7743ff2485dcc50708b802000000eb4bb803000000eb44668b460625ffff0000eb0b8b *460483c002eb318b460483c003eb298b462883c00deb21668b461625ffff0000eb16668b1181e2 *ffff0000668b410225ffff00008d44100189c53974241874198b5c241889f189c285c0740d8b01 *890383c10483c3044a75f38b542410668b420425ffff0000f68400402208082074458b4c241881 *e100f00f00c1e9078b442418250000f0ff09c18379100074278b41108d04c08b15282c08088b44 *82108b5c24188943088b41108d04c08b15282c0808895c82108b442410668378043b751083ec08 *ff74242056e862d7ffff83c4108d04ad000000000144241801c63b77040f8258feffff8b7f0885 *ff0f8542feffff8b4c24188b542414894a04837a0800741983ec0cff7208e812baffff8b5c2424 *c743080000000083c4108b44240c8b6c24308945088b44240c83c41c5b5e5f5dc356538b74240c *8b5e1481fb20190808743f8b4b0889c8c1e81480b8602e080800742489c82500f00f00c1e80789 *ca81e20000f0ff09d0f6401c01750a8b018943088d4309890189cb81f92019080875c18b4e1489 *c8c1e81480b8602e080800742489c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01750a *8b018946148d461589015b5ec357565383ec0c6849530708ff54242083c410833db02d08080074 *3b8b0db02d080889c8c1e81480b8602e080800742789c82500f00f00c1e80789ca81e20000f0ff *09d0f6401c01750d8b01a3b02d0808c701b12d0808833d382e080800743b8b0d382e080889c8c1 *e81480b8602e080800742789c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01750d8b01 *a3382e0808c701392e0808be010000003b35f02c080873628d04f68b15282c08088d1c828b4b10 *89c8c1e81480b8602e080800742489c82500f00f00c1e80789ca81e20000f0ff09d0f6401c0175 *0a8b018943108d4311890183ec0c8d04f68b15282c08088d048250e87bfeffff83c410463b35f0 *2c0808729e8b0d442a080889c8c1e81480b8602e080800742789c82500f00f00c1e80789ca81e2 *0000f0ff09d0f6401c01750d8b01a3442a0808c701452a08088b0d3c2e080889c8c1e81480b860 *2e080800742789c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01750d8b01a33c2e0808 *c7013d2e08088b0d2c2a080885c9743a8b1989d8c1e81480b8602e080800742389d82500f00f00 *c1e80789da81e20000f0ff09d0f6401c0175098b0389018d410189038b491085c975c683ec0cff *35402e0808e800f1ffffc7042449530708e82f27ffffc7042449530708e8beedffffbe00000000 *83c4103b35f02c08080f8388000000bf000000008b15282c080889d38d04f50000000089c101f0 *3b7c8208735d8d040e8d14bfc1e2040354830489d383ec0cff7230e8d9f9ffff83c404ff7344e8 *8bf6ffffa1f02c08084883c41039c67514837b0400740e83ec0cff7304e8e8f9ffff83c410478b *1d282c08088d0cf5000000008d040e3b7c830872a3463b35f02c08080f8278ffffffa1302c0808 *8b5804837b0400740f83ec0c53e8b3faffff83c4108943085b5e5fc3538b5c24088b0b89c8c1e8 *1480b8602e080800742389c82500f00f00c1e80789ca81e20000f0ff09d0f6401c0175098b0189 *038d430189015bc35557565383ec2c8b7424408b5c2444668b460425ffff000083f83b0f878106 *0000ff2485ccc607088b4b0489c8c1e81480b8602e080800742489c82500f00f00c1e80789ca81 *e20000f0ff09d0f6401c01750a8b018943048d430589018d4308e9540600008b4b0489c8c1e814 *80b8602e080800742489c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01750a8b018943 *048d430589018b4b0889c8c1e81480b8602e0808000f84ed02000089c82500f00f00c1e80789ca *81e20000f0ff09d0f6401c010f85cf0200008b018943088d4309e9c002000089de8b4b0489c8c1 *e81480b8602e080800742489c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01750a8b01 *8943048d430589018b4e0889c8c1e81480b8602e080800742489c82500f00f00c1e80789ca81e2 *0000f0ff09d0f6401c01750a8b018946088d460989018b4e0c89c8c1e81480b8602e0808007424 *89c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01750a8b0189460c8d460d89018b4e10 *89c8c1e81480b8602e080800742489c82500f00f00c1e80789ca81e20000f0ff09d0f6401c0175 *0a8b018946108d46118901668b4616eb51668b0625ffff00008d7c830483c30439fb733a8b0b89 *c8c1e81480b8602e080800742389c82500f00f00c1e80789ca81e20000f0ff09d0f6401c017509 *8b0189038d4301890183c30439fb72c6668b460225ffff0000e93004000089de8b4b0489c8c1e8 *1480b8602e080800742489c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01750a8b0189 *43048d430589018b4e0889c8c1e81480b8602e080800742489c82500f00f00c1e80789ca81e200 *00f0ff09d0f6401c01750a8b018946088d460989018b4e0c89c8c1e81480b8602e080800742489 *c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01750a8b0189460c8d460d8901837e1000 *0f84a3000000eb6c89de8b4b0489c8c1e81480b8602e080800742489c82500f00f00c1e80789ca *81e20000f0ff09d0f6401c01750a8b018943048d430589018b4e0c89c8c1e81480b8602e080800 *742489c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01750a8b0189460c8d460d89018b *4e1089c8c1e81480b8602e080800742489c82500f00f00c1e80789ca81e20000f0ff09d0f6401c *01750a8b018946108d461189018d4314e9520300008b4b0489c8c1e81480b8602e080800742489 *c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01750a8b018943048d430589018d430ce9 *1503000089de8b4b0889c8c1e81480b8602e080800742489c82500f00f00c1e80789ca81e20000 *f0ff09d0f6401c01750a8b018943088d4309890183ec088b46048d44860c508d460c50e8bfecff *ff83c4108b46048d44860ce9bb020000895c24288b43088b00a80174078b40ffa80175f98d50e8 *8b6c242883c50c8b4c2428668b410689c681e6ffff0000668b420c25ffff000083f801742483f8 *017f0985c07413e94501000083f8020f84a0000000e9370100008b4204e93f01000089ef8b5204 *8954242489742420c7442418000000008b5a04c744241c000000003974241c0f83ff000000f6c3 *0175338b0f89c8c1e81480b8602e080800742389c82500f00f00c1e80789ca81e20000f0ff09d0 *f6401c0175098b0189078d47018901ff44241c83c704f644241c1f7512ff4424188b4424188b54 *24248b5c8204eb02d1eb8b4c2420394c241c729ce9960000008b7c242883c70c8b5424288b4208 *8d4818894c241489742410c7442408000000008b581cc744240c000000003974240c7364f6c301 *75338b0f89c8c1e81480b8602e080800742389c82500f00f00c1e80789ca81e20000f0ff09d0f6 *401c0175098b0189078d47018901ff44240c83c704f644240c1f7512ff4424088b4424088b5424 *148b5c8204eb02d1eb8b4c2410394c240c729c8d6cb500eb6b668b420c25ffff00008b0485b8c1 *060889c3c1eb058b542428668b420689c681e6ffff000085f67442f6c30175358b4d0089c8c1e8 *1480b8602e080800742489c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01750a8b0189 *45008d4501890183c504d1eb4e75be8b4424288b480889c8c1e81480b8602e080800742a89c825 *00f00f00c1e80789ca81e20000f0ff09d0f6401c0175108b018b54242889420889d083c0098901 *89e8eb7e8b430483c0028d0483eb738b430483c0038d348383c30c39f3733a8b0b89c8c1e81480 *b8602e080800742389c82500f00f00c1e80789ca81e20000f0ff09d0f6401c0175098b0189038d *4301890183c30439f372c689d8eb2583ec0c53e840eeffff83c410eb1783ec08668b460425ffff *000050680cc50708e8bcfafeff83c42c5b5e5f5dc38b5424048b44240889c1c1e90289c8234208 *3b027d0589c823420cc35756538b7424108b7c2414b900000000803f00741ebb07001000c1e107 *0fbe0701c189ca89c8c1fa1ff7fb89d147803f0075e789c82346083b067d0589c823460c5b5e5f *c38b442408394424040f94c025ff000000c383ec14ff74241cff74241ce81a3dfdff85c00f94c0 *25ff00000083c41cc383ec1468bcc707086800100000e838fbfeff8b4c24248b54242089448a18 *83c41cc35557565383ec1c8b7c24308b1789d00347043dffff0f000f8f1301000089d085d27905 *05ff030000c1f80a894424188b1789d085d279068d82ff0300002500fcffff29c2895424148b47 *0489c5032f89e885ed79068d85ff030000c1f80a8944241089e885ed79068d85ff0300002500fc *ffff89ea29c28954240c751083ec08ff74241857e854ffffff83c4108b074089073b47047519c7 *070000000001c08947048b470c89470801c083c80189470cff4714c744240400000000c7442408 *000000008b4c24188b448f188b5424148b1c9085db74348b730883ec08ff3357ff971810000083 *c41039e8750d8b4c2404894b08895c2404eb0b8b442408894308895c240889f385f675cc8b5424 *188b4497188b5424088b4c24148914888b4c24108b448f188b4c24048b54240c890c9083c41c5b *5e5f5dc35756538b7424108b7c241483ec085756ff961810000089c185c079068d80ff03000089 *c3c1fb0a89c885c979068d81ff0300002500fcffff89ca29c28b449e188b1c9083c41085db741f *83ec0857ff33ff961c10000083c41085c074058b4304eb0c8b5b0885db75e1b8000000005b5e5f *c35383ec088b0d8c2c080885c9740a8b4108a38c2c0808eb4083ec0868c9c7070868fc0f0000e8 *54f9feff89c18d400ca38c2c080889c283c4108d81f00f000089c339c2730c8d420c89420889c2 *39d872f4c742080000000089c883c4085bc38b542404a18c2c080889420889158c2c0808c35557 *565383ec0c8b7424208b6c2424ff46108b46148d04803946107c0c83ec0c56e8befdffff83c410 *83ec085556ff961810000089c285c079068d80ff03000089c7c1ff0a89d085d279068d82ff0300 *002500fcffff89d329c3e82fffffff89288b5424388950048b54be188b149a8950088b54be1889 *049a83c41c5b5e5f5dc35557565383ec148b7424288b6c242cbf000000005556ff961810000089 *c285c079068d80ff030000c1f80a8944241889d085d279068d82ff0300002500fcffff29c28954 *24148b5424188b4496188b4c24148b1c8883c41085db745e83ec0855ff33ff961c10000083c410 *85c07442837c24280074098b442428394304753285ff75148b4c24088b548e188b43088b4c2404 *89048aeb068b430889470883ec0c53e8c6feffffff4e108b430483c410eb0e89df8b5b0885db75 *a2b80000000083c40c5b5e5f5dc35557565383ec0c8b6c24248b5424208b420403024889442408 *85c0790505ff030000c1f80a894424088b4c24208b410489c703394f89f885ff79068d87ff0300 *002500fcffff29c7837c240800786085ff783a8b5424088b4c24208b4491188b1cb885db74248b *730885ed740b83ec0cff7304ffd583c41083ec0c53e824feffff83c41089f385f675dc4f79c683 *ec0c8b4424148b54242cff748218e8c0f7feffbfff03000083c410ff4c240879a083ec0cff7424 *2ce8a6f7feff83c41c5b5e5f5dc35383ec1068d7c707086820100000e8eef6feff89c383c4086a *0050e897fbffff8b531883c4108d820010000039c27315c7020000000083c2048b431805001000 *0039c272ebc70300000000c7430400040000c74308ff030000c7430cff070000c7431000000000 *c74314000400008b4424108983181000008b44241489831c10000089d883c4085bc383ec1468a5 *5a070868445a0708e865ffffff83c41cc383ec1468b65a070868605a0708e84fffffff83c41cc3 *90905557565383ec4c8b5424608b42688b6830058800000089442420817d0018c70608750583c5 *04eb1c817d0028ec06080f85f10200008b4d04894c241c83c508e9f00500008b5d00895c241c83 *c5048b74241c8b06668b40fc25ffff000083f8220f8791000000ff248534c807088b44241c8b40 *048944241cebd48b5c241c668b430689c181e1ffff00008d048d0000000089ea29c289d083e808 *3b442420731f83ed08895d04c7450018c706088b4c24608b41688968308b4168e97e06000083ed *08c74500a0000708895d048d048d0000000029c5ba0000000039ca730d8b44930c894495004239 *ca72f38b5b08895c241ce93d05000083ed088b5c241c895d04c7450018c70608e97d0200008b45 *00668b40fc25ffff000083f824742183f8247f0e83f8230f84a9040000e9cc01000083f82a0f84 *2d010000e9be0100008b4500c744241801000000bf000000003de89706080f843f020000c74424 *1801000000bf010000003d589906080f8427020000c744241801000000bf020000003d689b0608 *0f840f020000c744241801000000bf020000003d889d06080f84f7010000c744241801000000bf *010000003da89f06080f84df010000c744241801000000bf010000003db8a106080f84c7010000 *c744241802000000bf020000003d24a606080f84af010000c744241803000000bf030000003d50 *ab06080f8497010000c744241804000000bf040000003d14ae06080f847f010000c74424180500 *0000bf050000003d44b106080f8467010000c744241806000000bf060000003df4b406080f844f *010000c744241807000000bf070000003d38b906080f8437010000e9960000008b45048138dced *0608750e83ec0cff7004e82403ffff83c4108b4d0489c82500f00f00c1e80789ca81e20000f0ff *89c309d3837b100075128b44241c8941048b4504c70064ec0608eb448b45048b54241c8950048b *4d048139dced060874268b43108d04c08b15282c08088b4482148941088b43108d04c08b4d048b *15282c0808894c82148b4504c70044ed060883c508e910feffff83ed088b4c241c894d04c74500 *18c706088b5c24608b43688968308b436866c740100000e9cc0b00008b550083ea0c668b420825 *ffff000083e82383f8067737ff2485c0c807088b450489c2c1ea18c1e81025ff0000008d541015 *eb218b550483c203eb198b42048b10eb118b45048b501883c202eb078b520483e21f428b449500 *668378fc230f84860200008b7424608b46688968308b4668eb828b54241c8b02668b40fc25ffff *000083f81a0f845f01000083f81c0f85f801000089d68b42088b00668378fc1a0f85e601000083 *c504668b420489c281e2ffff00003b542418735db90000000039d1730d8b448d0089448dfc4139 *d172f38b44241829d08b0485c8220808894495fc83ed04668b460625ffff00008d148500000000 *29d5b90000000039c1734f8b448e0c89448d0041668b460625ffff000039c172eaeb373b542418 *753d668b460625ffff00008d14850000000029d5b90000000039c173168b448e0c89448d004166 *8b460625ffff000039c172ea8b76088974241ce9b3010000668b460625ffff00008d44070383ec *0c50e8be2affff89c3c70088960608668b4604662b44242866894304668b460601f8668943068b *460889430883c410668b460689c2b9000000006685c0741381e2ffff00008b448e0c89448b0c41 *39d172f3b90000000039f9731c668b460689c681e6ffff00008d14318b448d008944930c4139f9 *72f0895c241ce99900000083c5048b4c241c668b411489c381e3ffff00003b5c2418732fba0000 *000039da730d8b449500894495fc4239da72f38b44241829d88b0485c822080889449dfc83ed04 *e9dc0000003b5c24180f84d20000008d470383ec0c50e8e729ffff89c1c7008896060889d8662b *442428668941048b5c242c89590866897906ba0000000083c41039fa730d8b4495008944910c42 *39fa72f3894c241c8d6cbd00e95bfbffff83ed088b74241c897504c7450018c706088b5424608b *42688968308b4268e946fdffff83ed048b4c241c894d008b5d08895c241ca1a02d08083b05a82d *08080f82a700000083ed04c7450018c706088b7424608b46688968308b4668eb4f8b5495048954 *241ca1a02d08083b05a82d080872798b5424608b42688968308b4268eb2ba1a02d08083b05a82d *0808722e83ed088b4c241c894d04c7450028ec06088b5c24608b43688968308b436866c7401001 *00b800000000e9040a00008d8538ffffff3b442420732383ed088b74241c897504c7450028ec06 *088b5424608b42688968308b4268e99f000000c7442414010000008b4c241c8b590483c308895c *24108b710883c6088974240c8b410c83c00c894424088b511083c208895424048b4c24148b5c24 *10668b044b25ffff000041894c241483f8330f8775090000ff2485dcc807088b7424148b542410 *668b047225ffff000046897424148d04850400000089e929c13b4c242073b383ed088b5c241c89 *5d04c7450028ec06088b7424608b46688968308b466866c740100100b801000000e9260900008b *5424148b4c2410668b045125ffff000042895424148b448500e9a00000008b5c24148b74241066 *8b045e25ffff000043668b145e81e2ffff000043895c24148b4485008945fc8b4495008945f8e9 *730100008b5424148b4c2410668b045125ffff0000428954241489d3668b145181e2ffff000043 *668b0c5981e1ffff000043895c24148b4485008945fc8b4495008945f88b448d008945f483ed0c *e9e3feffff8b5424148b4c2410668b045125ffff000042895424148b5c24088b04838945fce9e4 *0200008b7424148b542410668b047225ffff00004689742414c745f88cea0608e9870000008b5c *24148b742410668b045e25ffff000043895c2414c745f83ceb0608e98b0000008b4c24148b5c24 *10668b044b25ffff000041894c2414c745f85ceb0608e98f0000008b5424148b4c2410668b0451 *25ffff00004289542414c745f87ceb06088b5c24088b0483eb708b7424148b542410668b047225 *ffff00004689742414c745f8a8eb06088b4c24088b0481eb4a8b5c24148b742410668b045e25ff *ff000043895c2414c745f8e0eb06088b5424088b0482eb248b4c24148b5c2410668b044b25ffff *000041894c2414c745f80cec06088b7424088b04868945fc83ed08e9b7fdffff83ed04c74500a8 *9f0608e9a8fdffff83ed04c74500e8970608e999fdffff83ed04c7450058990608e98afdffff83 *ed04c74500689b0608e97bfdffff83ed04c74500889d0608e96cfdffff83ed04c74500b8a10608 *e95dfdffff83ed04c7450024a60608e94efdffff83ed04c7450050ab0608e93ffdffff83ed04c7 *450014ae0608e930fdffff83ed04c7450044b10608e921fdffff83ed04c74500f4b40608e912fd *ffff83ed04c7450038b90608e903fdffff8b5424148b4c2410668b045189c381e3ffff00004266 *8b045189c181e1ffff000042895424148d048d0000000029c5ba0000000039ca0f8dc7fcffff8d *041a8b74240c8b0486894495004239ca7cede9affcffff8b5424148b4c2410668b045189c181e1 *ffff0000428b5c2410668b045389c381e3ffff0000428954241449780e8d140b8b448d00894495 *004979f28d6c9d00e96bfcffff8b7424148b542410668b047289c381e3ffff000046897424148d *430383f8037305b80300000083ec0c50e8bf24ffff83c4108945fc66895806c700ec960608eb50 *8b4c24148b5c2410668b044b89c681e6ffff000041668b044b89c381e3ffff000041894c24148d *430383f8027305b80200000083ec0c50e87124ffff83c4108945fc6689580666897004c7008896 *060883ed04e9d2fbffff8b7424148b542410668b047225ffff000046668b147281e2ffff000046 *897424148b5c85008b4500894308b90000000039d17d0d8b448d0489448b0c4139d17cf38d6c95 *04e988fbffff8b5c24148b742410668b045e89c181e1ffff000043895c24148b5d008d048d0000 *000029c5ba0000000039ca0f8d56fbffff8b449304894495004239ca7cf3e944fbffff8b542414 *8b4c2410668b045189c681e6ffff000042668b045189c381e3ffff000042895424148b5424048b *04b2668b50f881e2ffff0000668b40fa25ffff00008d44100183f8027305b80200000083ec0c50 *e87023ffff83c41089c18b5424048b04b28901ba0000000039da7d0d8b449500894491044239da *7cf38d6c9dfc894d00e9bdfaffff8b4c24148b5c2410668b144b81e2ffff000041894c2414668b *044b89c181e1ffff0000ff4424148b45008b00668b40fe25ffff000039d0eb638b7424148b4424 *10668b147081e2ffff000046668b047089c181e1ffff000046897424148b45008b00668b40fe25 *ffff000039d0eb658b5c24148b742410668b045e25ffff000043668b145e89d181e1ffff000043 *895c24148b55048b5c240c3b14830f8c1bfaffffe9030200008b7424148b542410668b047225ff *ff000046668b147289d181e1ffff000046897424148b55048b5c240c3b14830f84e3f9ffffe9cb *0100008b7424148b442410668b0c7081e1ffff000046668b047089c381e3ffff00004689742414 *8b45048b550889442430895424348b4424308b54243489442440895424448b74240c8b048e8b54 *8e0489442430895424348b4424308b542434894424388954243cdd442440dd442438d9c9dae9df *e0f6c4010f8562f9ffffeb7f8b5424148b5c2410668b0c5381e1ffff000042668b045389c381e3 *ffff000042895424148b45048b550889442440895424448b4424408b5424448944243089542434 *8b74240c8b048e8b548e0489442440895424448b4424408b542444894424388954243cdd442430 *dd442438d9c9dae9dfe080e44580fc400f84e1f8ffff895c2414e9d8f8ffff8b4c24148b5c2410 *668b144b81e2ffff000041894c2414668b044b89c181e1ffff0000ff4424148b4504894424248b *4424248944242c8b74240c8b0496894424248b44242489442428d944242cd9442428d9c9dae9df *e0f6c4010f8578f8ffffeb638b4c24148b5c2410668b144b81e2ffff000041894c2414668b044b *89c181e1ffff0000ff4424148b45048944242c8b44242c894424248b74240c8b04968944242c8b *44242c89442428d9442424d9442428d9c9dae9dfe080e44580fc400f8413f8ffff894c2414e90a *f8ffff833d482a0808000f846ff1ffff83ed04c7450018c706088b5424608b42688968308b4268 *66c740100100b802000000e9770100008b4d00894c241c83c504e902f2ffff83ed04c7450080c8 *0608e90cf4ffff83ed04c745002cc90608e9fdf3ffff83ed04c74500d8c90608e9eef3ffff83ed *04c7450094ca0608e9dff3ffff83ed04c7450068cb0608e9d0f3ffff83ed04c745006cc80608e9 *c1f3ffff8b5c24148b742410668b145e81e2ffff000043668b045e43895c24149801449500e947 *f7ffff8b4424148b542410668b1c4281e3ffff0000408944241489c1668b044225ffff00004189 *4c24148b54240c8b3482e88e29fdff89c78b4c24608b41688b4020890783ed54c1e31080cbff89 *5d04c7450034cd06088b416889683083ec086a0089c883c00850e86eeffeff89c383c4048b5424 *6c8b42688b403083c05450ffd683c4086a0053e8cceffeff89442470836c2470088b4c24708b41 *688d9888000000895c24308b683083c5548b1789502083c410e990f6ffff8b7424148b54241066 *8b047225ffff000089442414e976f6ffff83ec0c68e6c70708eb0883ec0c6804c80708e8b1e4fe *ff83c44c5b5e5f5dc3905381eca40000008b8424ac0000008944240c8d5c240c8d44241050e8f0 *2bfdffc78424940000000000000083c40c6a00536a1ae8e826fdff81c4a80000005bc35383ec24 *8b5c242cff742430e8afffffffe88e000000a3602a0808bad34d621089d8f7e2c1ea0689542418 *8d14928d14928d1492c1e20329d38d1c9b8d1c9b8d1c9bc1e303895c241c8b4424188b54241c89 *4424108954241483c40c6a008d442408506a01e8b628fdff83c4285bc383ec20c744240c000000 *00c7442410000000008b44240c8b54241089442404895424086a008d442408506a01e88028fdff *83c42cc35383ec106a008d44240c50e8fc2afdff8b4424108d1c808d1c9b8b4c2414baad8bdb68 *89c8f7eac1fa0dc1f91f29ca8d045a83c4185bc39083ec186a01e8ef00000083c41cc35383ec0c *8b5c24186a006a006aff6a226a0753ff74242ce8fa26fdff83c42083f8ff7551e87d27fdff8338 *0c740d833816752281fbffffffbf761a83ec085368acc90708e8cfe3feffc7042401000000e81c *e3feff83ec10e84927fdff83c404ff30e8df26fdff83c4085068efc90708e809e3feff83c4085b *c35756538b7c241081c70000100083ec08576a00e86effffff89c389c681e6ffff0f0083c408b8 *0000100029f05053e86927fdff83c41083f8ff741b85f67e2483ec08568d041f29f050e84e27fd *ff83c41083f8ff750d83ec0c68d0c90708e8a1e2feff29f381c30000100089d85b5e5fc3565383 *ec048b5c241089dec1e614833d942c080800743a83ec0856ff35942c0808e8effeffff89c183c4 *10a9ffff0f00742d83ec085650e8ef26fdff83c41083f8ff750d83ec0c6803ca0708e842e2feff *83ec0c56e835ffffff89c183c4108d040ea3942c0808ba0000000039da731789d0c1e0148d0408 *c1e814c680602e0808014239da72e9011d902c080889c883c4045b5ec39090c705c02c08080000 *0000c705c42c080800000000c705c82c080800002000c705cc2c080800010000c705d42c080840 *000000c705d82c080800010000c705d02c080800000000c705dc2c080800000000c705e82c0808 *00000000c705ec2c080800000840c705e02c080800000000c705e42c080800000040c705f02c08 *0802000000c705f42c080802000000c705f82c080801000000c705fc2c080800000000c705002d *080800000000c705042d080800003e40c705102d080814000000c35557565383ec0c8b6c2420e8 *8529fdff8b10eb01450fbe4500f64442012075f489efe86e29fdff8b10eb01470fbe07f6444201 *207505803f0075f039fd745f8b44242483381e7e0f83ec086a1f688cd20708e8e6e0feff83ec08 *681cca070889fe29ee8d460150e8f7e1feff89c383c40c565550e89c28fdffc6041e008b542434 *8b028b542438891c828b442434ff0083c41089fd803f000f856dffffff83c40c5b5e5f5dc35557 *565383ec34c7442414000000006a2f8b442450ff30e87327fdff83c41085c0740940eb0c46e951 *0100008b5424448b02a3a02c08088b4c24408b39be01000000c701010000008b442448c7000000 *0000833da82c080800741683ec04ff74245050ff35a82c0808e8ecfeffff83c41083ec0c6837ca *0708e85123fdff83c41085c0741483ec04ff742450ff74245050e8c4feffff83c410bd00000000 *39fe0f8df600000083ec088b54244cff34b2683eca0708e8c522fdff83c41085c00f8461ffffff *8b4c24448b1cb183ec08536844ca0708e8a522fdff83c41085c00f849800000083ec08536847ca *0708e88c22fdff83c41085c07507bd01000000eb7183ec088b44244cff34b0683fca0708e86a22 *fdff83c41085c07507bd00000000eb4f83fd01751f8b542448833a1e7f168b128b4c24448b04b1 *8b4c244c8904918b442448eb1885ed75188b4c24408b118b4c24448b04b18904918b442440ff00 *eb0f83ec086a1f688cd20708e825dffeff4639fe0f8c2bffffffeb1f39fe7d1b8b4c24408b118b *4c24448b04b18904918b442440ff004639fe7ce58b5424408b028b4c2444c70481000000008b54 *24488b028b4c244cc7048100000000be000000003b320f8d6b0400008b54244c8b04b280382d74 *2283ec0cff3540270808e80a22fdff83c4088b4c2454ff34b1684cca0708e9200400008b54244c *8b04b20fbe400183e83f83f8390f87fa030000ff248528d3070883ec0c8b4c24588b04b183c002 *50e88605000085c0790505ff0f0000c1f80ca3d42c0808e9bc010000c705082d080801000000e9 *da0300008b54244c8b04b280780200743f83c00283ec046a006a0050e89320fdff83c410dd5c24 *188b4424188b54241c89442420895424248b4424208b542424a3002d08088915042d0808e98e03 *0000c705fc2c080801000000e97f0300008b4c244c8b04b183c00283ec046a006a0050e83e20fd *ff83c410dd5c24208b4424208b542424894424188954241c8b4424188b54241ca3e02c08088915 *e42c0808d9eedd05e02c0808d9c9dae9dfe0f6c4450f8527030000eb02ddd883ec0c8b542458ff *34b2e88f050000e90c03000083ec0c8b4c24588b04b183c00250e883040000c1e802a3c82c0808 *e9c200000083ec0c8b5424588b04b283c00250e863040000c1e802a3cc2c0808e9fa00000083ec *0c8b5424588b04b283c00250e84304000085c0790505ff0f0000c1f80ca3d02c0808e9d1000000 *8b54244c8b04b283c00283ec046a006a0050e8651ffdff83c410dd5c24208b4424208b54242489 *4424188954241c8b4424188b54241ca3e82c08088915ec2c0808dd05e82c0808d9eedde9dfe0f6 *c4450f842bffffffd90520a20708e90fffffff83ec0c8b4c24588b04b183c00250e8b9030000a3 *f02c080883c41085c00f852202000083ec0c8b442458ff34b0e9fafeffff83ec0c8b5424588b04 *b283c00250e887030000a3f42c0808eb2483ec0c8b5424588b04b283c00250e86d03000085c079 *0505ff0f0000c1f80ca3dc2c080883c41085c00f85ca01000083ec0c8b4c2458ff34b1e9a2feff *ffc705c42c080804000000eb16c705c42c080803000000eb0ac705c42c08080200000083ec0868 *68ca0708ff7424588b442458ff30ff7424588b542458ff3256e8d6010000a3c02c080883c42085 *c00f8567010000c744240c01000000e95a010000c705f82c080800000000e94b01000083ec0c68 *acd20708e92e0100008b4c244c8b04b180780200750fc705102d080800000000e9220100008b54 *244c8b04b283c00283ec046a006a0050e8e11dfdff83c410dd5c24208b4424208b542424894424 *188954241cd90518d30708dc4c2418d97c2416668b442416b40c6689442414d96c2414db5c2410 *d96c24168b4c2410ba6766666689c8f7eac1fa0389c8c1f81f29c28d149289d1c1e1020f95c283 *f9130f9ec021d0a8017405b914000000890d102d0808e99000000083ec0c68d0d20708eb7683ec *0c6875ca0708eb6c83ec0c688eca0708eb6283ec0c68f4d20708eb588b54244c8b04b20fbe4002 *83f863742383f8637f0685c07409eb2283f8747413eb1b83ec088b4c2454ff34b168a6ca0708eb *2583ec0c68c0ca0708eb1b83ec088b442454ff34b0eb0a83ec088b542454ff34b268d5ca0708e8 *13dbfeffc744241c0100000083c410468b4c24483b310f8c95fbffff837c240c00744383ec0cff *3540270808e8a41dfdffbb0023080883c410833d0023080800741a83ec08ff336829cb0708e824 *dbfeff83c41083c304833b0075e683ec0c6a01e80adafeff83c42c5b5e5f5dc35557565381ec94 *0000008bac24a80000008bbc24b80000008b04af83c00268ecca070850e8ce1cfdff83c41085c0 *75088b3544270808eb478b04af80780200740e83ec0868f3ca070883c00250eb2683ec048b8424 *ac000000ff30ffb424bc0000008d5c240c53e8db21fdff83c40868f3ca070853e8cd20fdff89c6 *83c41085f6751c83ec048b04af83c0025068f5ca0708ff3544270808e88a1cfdffeb7cbb000000 *003b9c24a40000007d2583ec048b8424ac000000ff3498680fcb070856e8621cfdff83c410433b *9c24a40000007cdb566a056a016813cb0708e87621fdffbb0000000083c4103b9c24ac0000007d *1e83ec04ff349f680fcb070856e8241cfdff83c410433b9c24ac0000007ce283ec08566a0ae81c *1ffdff89f081c49c0000005b5e5f5dc3575383ec248b5c2430b800000000803b000f84d7000000 *83ec046a006a0053e82b1bfdff83c410dd5c24088b4424088b54240c89442410895424148b4424 *108b542414894424188954241c89dffcb9ffffffffb000f2aef7d10fbe4c0bfe83f9670f94c283 *f9470f94c009d0a8017408d9051cd30708eb4c83f96d0f94c283f94d0f94c009d0a8017408d905 *20d30708eb3283f96b0f94c283f94b0f94c009d0a8017408d90518d30708eb1883f9770f94c283 *f9570f94c009d0a801740ed90524d30708dc4c2418dd5c2418d97c2406668b442406b40c668944 *2404dd442418d96c2404db1c24d96c24068b042483c4245b5fc383ec14ff7424186819cb0708e8 *7cd8feffc7042401000000e8c9d7feff909090909090909090909090909055e8000000005981c1 *4aa8000089e5575683ec18dd4508d98190aeffffdde1dfe0f6c445750fddd8ddd831c031d283c4 *185e5f5dc3d9c1d97deed88994aeffff668b45eeb40c31f6668945ecd96decdf7de0d96dee8b45 *e05056df2c2489c783c40885c0784add5df0dd45f0deeadde9dfe0f6c445751fd9e0d96decdf7d *e0d96dee31d28b45e029c619d789f089fa83c4185e5f5dc3d96decdf7de0d96dee31d28b45e001 *c611d7ebe18db600000000d881a47cffffebae90909090909090905589e5575683ec28c745e800 *0000008b7d0cc745ec00000000c745f4000000008b75088b45108b551485ff0f881f01000085d2 *0f882d0100008975e08945d48955e489fe85d2753939f8766c89fa8b45e0f775d489c7c745d000 *0000008b55d0897de88955ec8b4df48b45e88b55ec85c97407f7d883d200f7da83c4285e5f5dc3 *31ffc745d0000000003975e477ce0fbd45e489c783f71f754a8b4dd43b75e40f97c2394de0bf01 *0000000f93c009d0a80175a231ffeb9e8b7dd485ff750eb80100000031c931d2f7f18945d489f0 *31d2f775d48945d08b45e0f775d489c7e979ffffffb82000000089f929f88b55e48945dc8b45d4 *d3e28a4ddcd3e809c289f9d365d48955e48a4ddc89f28b45e0d3ea89f9d3e68a4ddcd3e809c689 *f989f0f775e489d689c78b45d4d365e0f7e739f2771539f20f94c23b45e00f97c021d0a8010f84 *0effffff4fe908ffffff89f6f7de83d700c745f4fffffffff7df85d20f89d3fefffff7d8f755f4 *83d200f7dae9c4feffff90909090909090909090905589e5575683ec38c745e0000000008b7d0c *c745e400000000c745ec000000008b75088b45108b551485ff0f88ef01000085d20f88d7010000 *8d4df08945c4894de88955dc8975d8897dd485d2755139f8767d89f089faf775c48b7de88955d8 *85ff741b8b45d8c745e4000000008945e08b45e88b55e08b4de489108948048b45ec85c0743b8b *45f08b55f4f7d883d200f7da83c4385e5f5dc38db6000000008b55d43955dc76588975e08955e4 *8b45e08b55e48945f08955f48b45ec85c075c58b45f08b55f483c4385e5f5dc389f68b45c485c0 *750db80100000031d2f775c48945c48b45d48b55dcf775c48b45d88955d4f775c4e95fffffff90 *8d7426000fbd45dc83f01f8945cc75548b55dc8b4dc43955d40f97c2394dd80f93c009d0a80174 *118b55d48b45d829c81b55dc8945d88955d48b75e885f60f843fffffff8b45d88b55d48b4de889 *45e08955e48b45e08b55e48901895104e920ffffff908b4dccb82000000029c88b55dc8945d08a *4dccd3e28b45c48a4dd0d3e809c28a4dccd365c48955dc8a4dd08b55d48b75d4d3ea8a4dcc8b45 *d8d3e68a4dd0d3e809c68a4dcc8975d489f0f775dc8955d4d365d8f765c489d689c73b55d47712 *3b55d40f94c23b45d80f97c021d0a80174062b7dc41b75dc8b55e885d20f849dfeffff8a4dd08b *55d48b45d829f819f28955d4d3e28a4dcc8945d8d3e809c28b45d4d3e88955e08945e4e963feff *ff89f6f7d883d200f7dae91dfeffff8d742600f7de83d700c745ecfffffffff7dfe9fefdffff90 *9090909090909090909090905589e5575683ec20c745f0000000008b75088b55148b7d0c8b4510 *8975e8c745f4000000008945dc8955ec89fe85d2752f39f8766289fa8b45e8f775dc89c7c745d8 *000000008b55d8897df08955f48b45f08b55f483c4205e5f5dc38d74260031ffc745d800000000 *3975ec77d80fbd45ec89c783f71f755b8b4ddc3b75ec0f97c2394de8bf010000000f93c009d0a8 *0175ac31ffeba88b45dc85c0750eb80100000031c931d2f7f18945dc89f031d2f775dc8945d88b *45e8f775dc89c78b55d8897df08955f48b45f08b55f483c4205e5f5dc3b82000000089f929f88b *55ec8945e48b45dcd3e28a4de4d3e809c289f9d365dc8955ec8a4de489f28b45e8d3ea89f9d3e6 *8a4de4d3e809c689f989f0f775ec89d689c78b45dcd365e8f7e739f2771539f20f94c23b45e80f *97c021d0a8010f8407ffffff4fe901ffffff90905589e5575683ec388d4df08b55148b75088b7d *0c8b4510c745e000000000c745e400000000894dec8945c48955dc8975d8897dd485d2753d39f8 *766489f089faf775c48b75ec8955d885f6741b8b45d8c745e4000000008945e08b45ec8b55e08b *4de489108948048b45f08b55f483c4385e5f5dc38b55d43955dc76538975e08955e48b45e08b55 *e48945f08955f48b45f08b55f483c4385e5f5dc38d7426008b7dc485ff750db80100000031d2f7 *75c48945c48b45d48b55dcf775c48b45d88955d4f775c4e978ffffff908d7426000fbd45dc83f0 *1f8945cc755b8b55dc8b4dc43955d40f97c2394dd80f93c009d0a80174118b55d48b45d829c81b *55dc8945d88955d48b4dec85c90f8458ffffff8b45d88b55d48b4dec8945e08955e48b45e08b55 *e489018951048b45f08b55f483c4385e5f5dc38b55ccb82000000029d08a4dcc8945d08b55dcd3 *e28b45c48a4dd0d3e809c28a4dccd365c48955dc8a4dd08b55d48b75d4d3ea8a4dcc8b45d8d3e6 *8a4dd0d3e809c68a4dcc8975d489f0f775dc8955d4d365d8f765c489d689c73b55d477123b55d4 *0f94c23b45d80f97c021d0a80174062b7dc41b75dc8b45ec85c00f84affeffff8a4dd08b55d48b *45d829f819f28955d4d3e28a4dcc8945d8d3e809c28b45d4d3e88955e08945e4e975feffff9090 *9090909090909090905589e583ec18895df4e8ba00000081c392a00000897dfc8d83c4beffff8d *bbc4beffff8975f829f8c1f80285c08d70ff7512e8bd0000008b5df48b75f88b7dfc89ec5dc3ff *14b789f04e85c075f689f6e89f0000008b5df48b75f88b7dfc89ec5dc38db426000000008dbc27 *000000005589e583ec18895df48975f831f6e84500000081c31da00000897dfce87711fdff8d93 *c4beffff8d83c4beffff29c2c1fa0239d673158945f089d7908d742600ff14b0468b45f039fe72 *f58b5df48b75f88b7dfc89ec5dc38b1c24c3909090905589e55352bb6c250808a16c25080883f8 *ff740c83eb04ffd08b0383f8ff75f4585b5dc35589e553e8000000005b81c3a39f000050e81618 *fdff595bc9c3000003000000010002000000803e0000803e0000803e000080be000080be000080 *be0eb204081eb204081eb204081eb204081eb204081eb204081eb204081eb204081eb204081eb2 *04081eb204081eb204081eb204081eb204081eb204081eb204081eb204081eb204081eb204081e *b204081eb20408c9b1040814b1040836b1040863b104081eb204081eb204081eb204081eb20408 *85b10408a7b104081eb204081eb204081eb204081eb204081eb204081eb204081eb204081eb204 *081eb20408edb004081eb204081eb204081eb204081eb204081eb204081eb204081eb204081eb2 *04081eb204081eb204081eb204081eb204081eb204081eb204081eb204081eb204081eb204081e *b204081eb204081eb204081eb204081eb204081eb204081eb204081eb204081eb204081eb20408 *1eb204081eb204081eb20408eeb10408d6b004081eb204081eb20408f7b1040845db040845db04 *083edb040837db040830db040829db040822db04081bdb040845db040814db040807db04084772 *6170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f64386f *75000047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f *775f64386f76000047726170686963737a6955497a69474c55547a6943616c6c6261636b737a69 *57696e646f775f64386f77000047726170686963737a6955497a69474c55547a6943616c6c6261 *636b737a6957696e646f775f64386f78000047726170686963737a6955497a69474c55547a6943 *616c6c6261636b737a6957696e646f775f64386f79000047726170686963737a6955497a69474c *55547a6943616c6c6261636b737a6957696e646f775f64386f7a000047726170686963737a6955 *497a69474c55547a6943616c6c6261636b737a6957696e646f775f64386f410000477261706869 *63737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f64386f42000047 *726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f6438 *6f43000047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e64 *6f775f64386f44000047726170686963737a6955497a69474c55547a6943616c6c6261636b737a *6957696e646f775f64386f45000047726170686963737a6955497a69474c55547a6943616c6c62 *61636b737a6957696e646f775f64386f46000047726170686963737a6955497a69474c55547a69 *43616c6c6261636b737a6957696e646f775f64386f47000047726170686963737a6955497a6947 *4c55547a6943616c6c6261636b737a6957696e646f775f64386f48000047726170686963737a69 *55497a69474c55547a6943616c6c6261636b737a6957696e646f775f64386f4900004772617068 *6963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f64386f4a0000 *83f7040893f70408a3f70408b3f70408c3f70408f50a0508530a0508600a0508670a05086e0a05 *08750a05087c0a0508830a05088a0a0508910a0508980a05089f0a0508a60a0508f50a0508f50a *0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f5 *0a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508 *f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a05 *08f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a *0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f5 *0a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508 *f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a05 *08f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a *0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508ad0a0508b40a0508bb *0a0508c20a0508c90a0508d00a0508d70a0508e10a0508eb0a050847726170686963737a695549 *7a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f64334356000000 *00522605084b260508442605083d260508362605082f260508282605081b260508fa270508f327 *0508ec270508e5270508de270508d7270508d0270508c3270508dd310508d6310508cf310508c8 *310508c1310508ba310508b3310508ac3105089f310508554a05084b4a0508414a0508374a0508 *2d4a0508234a0508194a05080f4a0508054a0508fb490508f1490508e7490508dd490508d34905 *08c0490508ad490508a3490508994905088f490508854905087b49050871490508674905085d49 *050853490508494905083f490508354905082b49050821490508174905080d49050803490508f9 *480508ef480508e5480508db480508d1480508c7480508bd480508b3480508a94805089f480508 *954805088b48050881480508774805086d48050863480508594805084f480508454805083b4805 *0831480508274805081d4805081348050809480508ff470508f5470508eb470508e1470508d747 *0508cd470508c3470508b9470508af470508a8470508a14705089a470508934705088c47050885 *4705087e470508774705087047050869470508624705085b470508544705084d47050846470508 *3f4705082b4705082570050810700508fb6f0508e66f0508d16f0508bc6f0508a76f0508926f05 *087d6f0508686f0508536f05083e6f0508296f0508146f0508ff6e0508ea6e0508d56e0508c06e *0508ab6e0508966e0508816e05086c6e0508576e0508426e05082d6e0508186e0508036e0508ee *6d0508d96d0508c46d0508af6d05089a6d0508856d0508706d05085b6d0508466d0508316d0508 *1c6d0508076d0508f26c0508dd6c0508c86c0508b36c05089e6c0508896c0508746c05085f6c05 *084a6c0508356c0508206c05080b6c0508f66b0508e16b0508cc6b0508b76b0508a26b05088d6b *0508786b0508636b05084e6b0508396b0508246b05080f6b0508fa6a0508e56a0508d06a0508bb *6a0508a66a0508916a05087c6a0508676a0508526a05083d6a0508286a0508136a0508fe690508 *e9690508d4690508bf690508aa69050895690508806905086b69050856690508416905082c6905 *081769050802690508ed680508d8680508c3680508ae68050899680508846805086f6805085a68 *050845680508306805081b68050806680508f1670508dc670508c7670508b26705089d67050888 *670508736705085e67050849670508346705081f6705080a670508f5660508e0660508cb660508 *b6660508a16605088c66050877660508626605084d66050838660508236605080e660508f96505 *08e4650508cf650508ba650508a5650508906505087b65050866650508516505083c6505082765 *050812650508fd640508e8640508d3640508be640508a9640508946405087f6405086a64050855 *640508406405082b6405081664050801640508ec630508d7630508c2630508ad63050898630508 *836305086e63050859630508446305082f6305081a63050805630508f0620508db620508c66205 *08b16205089c62050887620508726205085d62050848620508336205081e62050809620508f461 *0508df610508ca610508b5610508a06105088b61050876610508616105084c6105083761050822 *6105080d610508f8600508e3600508ce600508b9600508a46005088f6005087a60050865600508 *506005083b6005082660050811600508fc5f0508e75f0508d25f0508bd5f0508a85f0508935f05 *087e5f0508695f0508545f05083f5f05082a5f0508155f0508005f0508eb5e0508d65e0508c15e *0508ac5e0508975e0508825e05086d5e0508585e0508435e05082e5e0508195e0508045e0508ef *5d0508da5d0508c55d0508b05d05089b5d0508865d0508715d05085c5d0508475d0508325d0508 *1d5d0508085d0508f35c0508de5c0508c95c0508b45c05089f5c05088a5c0508755c0508605c05 *084b5c0508365c0508215c05080c5c0508f75b0508e25b0508cf5b0508bc5b0508a75b0508925b *05087d5b0508685b0508535b05083e5b0508295b0508145b0508ff5a0508ea5a0508d55a0508c0 *5a0508ab5a0508965a0508815a05086c5a0508575a0508425a05082d5a0508185a0508035a0508 *ee590508d9590508c4590508af5905089a59050885590508705905085b59050846590508315905 *081c59050807590508f2580508dd580508c8580508b35805089e58050889580508745805085f58 *05084a58050835580508205805080b580508f6570508e1570508cc570508b7570508a25705088d *57050878570508635705084e57050839570508245705080f570508fa560508e5560508d0560508 *bb560508a6560508915605087c56050867560508525605083d5605082856050813560508fe5505 *08e9550508d4550508bf550508aa55050895550508805505086b55050856550508415505082c55 *05081755050802550508ed540508d8540508c3540508ae54050899540508845405086f5405085a *54050845540508305405081b54050806540508f1530508dc530508c7530508b25305089d530508 *88530508735305085e53050849530508345305081f5305080a530508f5520508e0520508cb5205 *08b6520508a15205088c52050877520508625205084d52050838520508235205080e520508f951 *0508e4510508cf510508ba510508a5510508905105087b51050866510508515105083c51050827 *51050812510508fd500508e8500508d3500508be500508a9500508975005088550050873500508 *615005084f5005083d50050829500508676c75556e50726f6a6563743400676c754275696c6433 *444d69706d61704c6576656c7300db0f49400000003f0000003f0000003f0000003f0000003fdb *0f4940182d4454fb2109400000003fdb0f49400000003f0000003f0000003f0000003f0000003f *db0f4940182d4454fb2109400000003fdb0f49400000003f0000003f0000003f0000003f000000 *3fdb0f4940182d4454fb2109400000003f000000aee40508a1e4050823e4050895e405088ce405 *0883e405087ae4050823e4050845e4050839e4050823e4050830e4050823e4050823e4050823e4 *0508ed200608e3200608dc200608d5200608ce200608c7200608c0200608b9200608b2200608ab *200608a42006089d200608962006088f20060888200608812006087a2006087320060863200608 *91430608524306086043060860430608284306082f430608604306088343060844430608914306 *086043060883430608834306085243060891430608444306087c430608364306088a4306088a43 *06083d4306083d430608444306088343060883430608594306087c43060852430608834306088a *43060852430608834306086e430608444306088a4306087c43060844430608834306088a430608 *674306084443060891430608604306086e43060891430608914306089143060891430608914306 *089143060891430608914306089143060891430608914306089143060891430608914306089143 *060891430608444306086043060875430608834306086043060891430608594306086e43060891 *430608674306086e4306084b4306088a430608914306083d430608914306089143060891430608 *6e4306089143060891430608914306089143060891430608444306089143060891430608834306 *084443060844430608834306084b4306088a4306084b4306088a4306088a4306088a4306088a43 *06087c4306088a4306086e430608604306086e430608914306086e430608834306083643060844 *43060859430608834306087543060860430608604306086043060836430608364306086e430608 *91430608914306089143060891430608914306085243060863726561746541646a7573746f7200 *00667265654861736b656c6c46756e6374696f6e5074723a206e6f7420666f72206d652c206775 *76212025700a000000006d61696e20746872656164206578697465642028756e63617567687420 *657863657074696f6e29006d61696e2074687265616420636f6d706c6574656420776974682069 *6e76616c6964207374617475730025733a20756e63617567687420657863657074696f6e002573 *3a20696e7465727275707465640025733a2052657475726e20636f64652028256429206e6f7420 *6f6b00746f6f206d616e792068735f657869742829730000000068735f6164645f726f6f742829 *206d7573742062652063616c6c65642061667465722068735f696e697428290025733a20696e74 *65726e616c206572726f723a200025733a2000256c7500256c752c25332e336c7500256c752533 *2e336c7500256c752c25332e336c752c25332e336c7500256c7525332e336c7525332e336c7500 *256c752c25332e336c752c25332e336c752c25332e336c7500256c7525332e336c7525332e336c *7525332e336c750000000020202020506c65617365207265706f72742074686973206173206120 *62756720746f20676c6173676f772d6861736b656c6c2d62756773406861736b656c6c2e6f7267 *2c0a202020206f7220687474703a2f2f7777772e736f75726365666f7267652e6e65742f70726f *6a656374732f6768632f0a000000415353455254494f4e204641494c45443a2066696c65202573 *2c206c696e652025750a00646561646c6f636b3a206d61696e2074687265616420626c6f636b65 *6420696e206120737472616e67652077617900007363686564756c653a20696e76616c69642077 *6861745f6e657874206669656c640000007363686564756c653a20696e76616c69642074687265 *61642072657475726e20636f646520256400726573756d655468726561643a2074687265616420 *6e6f7420666f756e640000756e626c6f636b54687265616420284d564152293a2054534f206e6f *7420666f756e6400756e626c6f636b5468726561642028424c41434b484f4c45293a2054534f20 *6e6f7420666f756e6400000000756e626c6f636b5468726561642028457863657074696f6e293a *2054534f206e6f7420666f756e6400000000756e626c6f636b5468726561642028492f4f293a20 *54534f206e6f7420666f756e640000756e626c6f636b546872656164202864656c6179293a2054 *534f206e6f7420666f756e6400000000726573757272656374546872656164733a207468726561 *6420626c6f636b656420696e206120737472616e676520776179000000697320626c6f636b6564 *206f6e2064656c69766572696e6720616e20657863657074696f6e20746f207468726561642025 *640000697320626c6f636b6564206f6e20616e2065787465726e616c2063616c6c000069732062 *6c6f636b6564206f6e20616e2065787465726e616c2063616c6c2028657863657074696f6e7320 *7765726520616c726561647920626c6f636b656429000000007072696e74546872656164426c6f *636b6167653a20737472616e67652074736f2d3e7768795f626c6f636b65643a20256420666f72 *2054534f2025642028256429000000c15b0608da5c0608245d0608465d0608645d060841670608 *da65060823660608576606089c6606089c66060807670608ce680608d9680608d9680608c76806 *08c7680608a9680608bf680608c56b0608d06b0608d06b0608be6b0608be6b0608a06b0608b66b *0608766c0608446c0608656c0608556c0608126c06081f6c0608376c0608876c0608986c060866 *6f726b50726f63657373007761697454687265616400756e626c6f636b54687265616400726169 *73654173796e6300697320626c6f636b6564206f6e20726561642066726f6d2066642025640069 *7320626c6f636b6564206f6e20777269746520746f20666420256400697320626c6f636b656420 *756e74696c20256400697320626c6f636b6564206f6e20616e204d56617200697320626c6f636b *6564206f6e206120626c61636b20686f6c65006973206e6f7420626c6f636b6564006861732062 *65656e206b696c6c65640068617320636f6d706c6574656400616c6c20746872656164733a0a00 *09746872656164202564204020257020005b222573225d200041776169744576656e740025640a *0073656c6563740073656c656374206661696c65640061776169744576656e74006d6f72655f68 *616e646c65727300746f6f206d616e792070656e64696e67207369676e616c73007374675f7369 *675f696e7374616c6c3a206261642073706900007761726e696e673a206661696c656420746f20 *696e7374616c6c20534947494e542068616e646c65720000007761726e696e673a206661696c65 *6420746f20696e7374616c6c20534947434f4e542068616e646c657200656e6c61726765537461 *626c655074725461626c650000000020202020416c6c6f6320202020436f6c6c65637420202020 *4c6976652020202047432020202047432020202020544f542020202020544f5420205061676520 *466c74730a00000000202020206279746573202020202062797465732020202020627974657320 *20757365722020656c6170202020207573657220202020656c61700a0000737461745f696e6974 *3a206261642063616c6c20746f2027737973636f6e6627210a00002025352e32662025352e3266 *2025372e32662025372e32662025346c642025346c6420202847656e3a2025326c64290a000000 *002531317320627974657320616c6c6f636174656420696e2074686520686561700a0000002531 *3173206279746573206d6178696d756d207265736964656e63792028256c642073616d706c6528 *7329290a0000002531316420636f6c6c656374696f6e7320696e2067656e65726174696f6e2025 *64202825362e326673290a000a2531316c64204d6220746f74616c206d656d6f727920696e2075 *73650a0a002020494e4954202074696d65202025362e32667320202825362e32667320656c6170 *736564290a0020204d555420202074696d65202025362e32667320202825362e32667320656c61 *70736564290a00202047432020202074696d65202025362e32667320202825362e32667320656c *6170736564290a00202045584954202074696d65202025362e32667320202825362e3266732065 *6c6170736564290a002020546f74616c2074696d65202025362e32667320202825362e32667320 *656c6170736564290a0a000000002020252547432074696d65202020202025352e316625252020 *28252e3166252520656c6170736564290a0a002020416c6c6f6320726174652020202025732062 *7974657320706572204d5554207365636f6e640a0a000000202050726f64756374697669747920 *25352e31662525206f6620746f74616c20757365722c20252e31662525206f6620746f74616c20 *656c61707365640a0a002564204743732c20256c642f256c64206176672f6d6178206279746573 *207265736964656e63792028256c642073616d706c6573292c20256c754d20696e207573652c20 *252e326620494e49542028252e326620656c6170736564292c20252e3266204d55542028252e32 *6620656c6170736564292c20252e32662047432028252e326620656c617073656429203a676863 *3e3e0a00696e6974537461747300204743200025396c642025396c642025396c64000808082020 *0808080025396c642025392e39732025392e3973002025352e32662025352e32660a0a00253131 *7320627974657320636f7069656420647572696e672047430a003c3c6768633a20256c6c752062 *797465732c200000000000c8420000805f0000804f6d6178696d756d20686561702073697a6520 *282d4d2920697320736d616c6c6572207468616e206d696e696d756d20616c6c6f632061726561 *2073697a6520282d4129005741524e494e473a20636f6d70616374696f6e20697320696e636f6d *70617469626c652077697468202d47313b2064697361626c656400696e697453746f726167653a *2067656e7300696e697453746f726167653a206c617374207374657000696e697453746f726167 *653a20737465707300006d616c6c6f633a206661696c6564206f6e207265717565737420666f72 *20256c752062797465733b206d6573736167653a2025730a000000486561702065786861757374 *65643b0a43757272656e74206d6178696d756d20686561702073697a6520697320256c75206279 *7465732028256c75204d62293b0a75736520602b525453202d4d3c73697a653e2720746f20696e *6372656173652069742e0a000000537461636b207370616365206f766572666c6f773a20637572 *72656e742073697a6520256c642062797465732e0a55736520602b525453202d4b73697a652720 *746f20696e6372656173652069742e0a0000000076960608769606087696060876960608769606 *0876960608769606087b9606087b9606087b9606087b9606087b9606087b9606087b9606087b96 *0608769606087b960608769606087b9606087196060871960608719606087196060871960608d1 *970608d1970608d1970608d1970608d1970608d1970608d1970608d6970608d6970608d6970608 *d6970608d6970608d6970608d6970608d6970608d1970608d6970608d1970608d6970608cc9706 *08cc970608cc970608cc970608cc9706087374675f61705f765f726574007374675f61705f665f *726574007374675f61705f645f726574007374675f61705f6c5f726574007374675f61705f6e5f *726574007374675f61705f705f726574007374675f61705f70765f726574007374675f61705f70 *705f726574007374675f61705f7070765f726574007374675f61705f7070705f72657400737467 *5f61705f707070705f726574007374675f61705f70707070705f726574007374675f61705f7070 *707070705f726574007374675f61705f707070707070705f726574000000239806082398060823 *980608239806082398060823980608239806082999060829990608299906082999060829990608 *299906082999060829990608099806082999060879980608299906083799060837990608379906 *0837990608379906083f9906083f9906083f9906083f9906083f9906083f9906083f9906083f99 *06083f9906083f9906082999060829990608299906082999060829990608d6990608d6990608d6 *990608d6990608d6990608d6990608d6990608399b0608399b0608399b0608399b0608399b0608 *399b0608399b0608399b060879990608399b06083a9a0608399b0608479b0608479b0608479b06 *08479b0608479b06084f9b06084f9b06084f9b06084f9b06084f9b06084f9b06084f9b06084f9b *06084f9b06084f9b0608399b0608399b0608399b0608399b0608399b0608e99b0608e99b0608e9 *9b0608e99b0608e99b0608e99b0608e99b0608569d0608569d0608569d0608569d0608569d0608 *569d0608569d0608569d0608899b0608569d0608509c0608569d0608649d0608649d0608649d06 *08649d0608649d06086c9d06086c9d06086c9d06086c9d06086c9d06086c9d06086c9d06086c9d *06086c9d06086c9d0608569d0608569d0608569d0608569d0608569d0608099e0608099e060809 *9e0608099e0608099e0608099e0608099e0608769f0608769f0608769f0608769f0608769f0608 *769f0608769f0608769f0608a99d0608769f0608709e0608769f0608849f0608849f0608849f06 *08849f0608849f06088c9f06088c9f06088c9f06088c9f06088c9f06088c9f06088c9f06088c9f *06088c9f06088c9f0608769f0608769f0608769f0608769f0608769f060826a0060826a0060826 *a0060826a0060826a0060826a0060826a0060889a1060889a1060889a1060889a1060889a10608 *89a1060889a1060889a10608c99f060889a106088aa0060889a1060897a1060897a1060897a106 *0897a1060897a106089fa106089fa106089fa106089fa106089fa106089fa106089fa106089fa1 *06089fa106089fa1060889a1060889a1060889a1060889a1060889a1060836a2060836a2060836 *a2060836a2060836a2060836a2060836a2060899a3060899a3060899a3060899a3060899a30608 *99a3060899a3060899a30608d9a1060899a306089aa2060899a30608a7a30608a7a30608a7a306 *08a7a30608a7a30608afa30608afa30608afa30608afa30608afa30608afa30608afa30608afa3 *0608afa30608afa3060899a3060899a3060899a3060899a3060899a306085aa406085aa406085a *a406085aa406085aa406085aa406085aa40608f2a50608f2a50608f2a50608f2a50608f2a50608 *f2a50608f2a50608f2a50608e9a30608f2a50608d8a40608f2a5060800a6060800a6060800a606 *0800a6060800a6060808a6060808a6060808a6060808a6060808a6060808a6060808a6060808a6 *060808a6060808a60608f2a50608f2a50608f2a50608f2a50608f2a50608b9a60608b9a60608b9 *a60608b9a60608b9a60608b9a60608b9a606085ba806085ba806085ba806085ba806085ba80608 *5ba806085ba806085ba8060845a606085ba806083aa706085ba8060869a8060869a8060869a806 *0869a8060869a8060871a8060871a8060871a8060871a8060871a8060871a8060871a8060871a8 *060871a8060871a806085ba806085ba806085ba806085ba806085ba806083fa906083fa906083f *a906083fa906083fa906083fa906083fa906081fab06081fab06081fab06081fab06081fab0608 *1fab06081fab06081fab0608ada806081fab0608dda906081fab06082dab06082dab06082dab06 *082dab06082dab060835ab060835ab060835ab060835ab060835ab060835ab060835ab060835ab *060835ab060835ab06081fab06081fab06081fab06081fab06081fab060803ac060803ac060803 *ac060803ac060803ac060803ac060803ac0608e5ad0608e5ad0608e5ad0608e5ad0608e5ad0608 *e5ad0608e5ad0608e5ad060871ab0608e5ad0608a3ac0608e5ad0608f3ad0608f3ad0608f3ad06 *08f3ad0608f3ad0608fbad0608fbad0608fbad0608fbad0608fbad0608fbad0608fbad0608fbad *0608fbad0608fbad0608e5ad0608e5ad0608e5ad0608e5ad0608e5ad0608e7ae0608e7ae0608e7 *ae0608e7ae0608e7ae0608e7ae0608e7ae060813b1060813b1060813b1060813b1060813b10608 *13b1060813b1060813b1060835ae060813b10608aaaf060813b1060821b1060821b1060821b106 *0821b1060821b1060829b1060829b1060829b1060829b1060829b1060829b1060829b1060829b1 *060829b1060829b1060813b1060813b1060813b1060813b1060813b106083db206083db206083d *b206083db206083db206083db206083db20608c2b40608c2b40608c2b40608c2b40608c2b40608 *c2b40608c2b40608c2b4060865b10608c2b4060829b30608c2b40608d0b40608d0b40608d0b406 *08d0b40608d0b40608d8b40608d8b40608d8b40608d8b40608d8b40608d8b40608d8b40608d8b4 *0608d8b40608d8b40608c2b40608c2b40608c2b40608c2b40608c2b406081fb606081fb606081f *b606081fb606081fb606081fb606081fb6060809b9060809b9060809b9060809b9060809b90608 *09b9060809b9060809b9060815b5060809b906083ab7060809b9060817b9060817b9060817b906 *0817b9060817b906081fb906081fb906081fb906081fb906081fb906081fb906081fb906081fb9 *06081fb906081fb9060809b9060809b9060809b9060809b9060809b9060898ba060898ba060898 *ba060898ba060898ba060898ba060898ba0608f3bd0608f3bd0608f3bd0608f3bd0608f3bd0608 *f3bd0608f3bd0608f3bd060859b90608f3bd0608e8bb0608f3bd060801be060801be060801be06 *0801be060801be060809be060809be060809be060809be060809be060809be060809be060809be *060809be060809be0608f3bd0608f3bd0608f3bd0608f3bd0608f3bd060870c506087bc506087b *c5060865c5060865c5060847c506085dc506083dc706083dc706083dc706083dc706083dc70608 *3dc706083dc7060842c7060842c7060842c7060842c7060842c7060842c7060842c7060842c706 *083dc7060842c706083dc7060842c7060838c7060838c7060838c7060838c7060838c706085453 *4f206f626a65637420656e74657265642100455641435541544544206f626a65637420656e7465 *72656421005745414b206f626a65637420656e74657265642100444541445f5745414b206f626a *65637420656e746572656421004e4f5f46494e414c495a4552206f626a65637420656e74657265 *642100464f524549474e206f626a65637420656e74657265642100535441424c455f4e414d4520 *6f626a65637420656e7465726564210046554c4c5f4d564152206f626a65637420656e74657265 *642100454d5054595f4d564152206f626a65637420656e74657265642100454e445f54534f5f51 *55455545206f626a65637420656e74657265642100454e445f4d55545f4c495354206f626a6563 *7420656e746572656421004d55545f434f4e53206f626a65637420656e74657265642100454e44 *5f455843455054494f4e5f4c495354206f626a65637420656e7465726564210045584345505449 *4f4e5f434f4e53206f626a65637420656e746572656421004152525f574f524453206f626a6563 *7420656e746572656421004d55545f4152525f50545253206f626a65637420656e746572656421 *004d55545f4152525f505452535f46524f5a454e206f626a65637420656e746572656421004d55 *545f564152206f626a65637420656e74657265642100eaf00608eaf00608eaf00608eaf00608ea *f00608eaf00608eaf00608eff00608eff00608eff00608eff00608eff00608eff00608eff00608 *eff00608eaf00608eff00608eaf00608eff00608e5f00608e5f00608e5f00608e5f00608e5f006 *0849f1060849f1060849f1060849f1060849f1060849f1060849f106084ef106084ef106084ef1 *06084ef106084ef106084ef106084ef106084ef1060849f106084ef1060849f106084ef1060844 *f1060844f1060844f1060844f1060844f10608a1f10608a1f10608a1f10608a1f10608a1f10608 *a1f10608a1f10608a6f10608a6f10608a6f10608a6f10608a6f10608a6f10608a6f10608a6f106 *08a1f10608a6f10608a1f10608a6f106089cf106089cf106089cf106089cf106089cf10608ddf1 *0608ddf10608ddf10608ddf10608ddf10608ddf10608ddf10608e2f10608e2f10608e2f10608e2 *f10608e2f10608e2f10608e2f10608e2f10608ddf10608e2f10608ddf10608e2f10608d8f10608 *d8f10608d8f10608d8f10608d8f1060835f2060835f2060835f2060835f2060835f2060835f206 *0835f206083af206083af206083af206083af206083af206083af206083af206083af2060835f2 *06083af2060835f206083af2060830f2060830f2060830f2060830f2060830f2060871f2060871 *f2060871f2060871f2060871f2060871f2060871f2060876f2060876f2060876f2060876f20608 *76f2060876f2060876f2060876f2060871f2060876f2060871f2060876f206086cf206086cf206 *086cf206086cf206086cf20608c9f20608c9f20608c9f20608c9f20608c9f20608c9f20608c9f2 *0608cef20608cef20608cef20608cef20608cef20608cef20608cef20608cef20608c9f20608ce *f20608c9f20608cef20608c4f20608c4f20608c4f20608c4f20608c4f2060805f3060805f30608 *05f3060805f3060805f3060805f3060805f306080af306080af306080af306080af306080af306 *080af306080af306080af3060805f306080af3060805f306080af3060800f3060800f3060800f3 *060800f3060800f306085df306085df306085df306085df306085df306085df306085df3060862 *f3060862f3060862f3060862f3060862f3060862f3060862f3060862f306085df3060862f30608 *5df3060862f3060858f3060858f3060858f3060858f3060858f3060899f3060899f3060899f306 *0899f3060899f3060899f3060899f306089ef306089ef306089ef306089ef306089ef306089ef3 *06089ef306089ef3060899f306089ef3060899f306089ef3060894f3060894f3060894f3060894 *f3060894f30608f1f30608f1f30608f1f30608f1f30608f1f30608f1f30608f1f30608f6f30608 *f6f30608f6f30608f6f30608f6f30608f6f30608f6f30608f6f30608f1f30608f6f30608f1f306 *08f6f30608ecf30608ecf30608ecf30608ecf30608ecf306082df406082df406082df406082df4 *06082df406082df406082df4060832f4060832f4060832f4060832f4060832f4060832f4060832 *f4060832f406082df4060832f406082df4060832f4060828f4060828f4060828f4060828f40608 *28f4060885f4060885f4060885f4060885f4060885f4060885f4060885f406088af406088af406 *088af406088af406088af406088af406088af406088af4060885f406088af4060885f406088af4 *060880f4060880f4060880f4060880f4060880f40608c1f40608c1f40608c1f40608c1f40608c1 *f40608c1f40608c1f40608c6f40608c6f40608c6f40608c6f40608c6f40608c6f40608c6f40608 *c6f40608c1f40608c6f40608c1f40608c6f40608bcf40608bcf40608bcf40608bcf40608bcf406 *0819f5060819f5060819f5060819f5060819f5060819f5060819f506081ef506081ef506081ef5 *06081ef506081ef506081ef506081ef506081ef5060819f506081ef5060819f506081ef5060814 *f5060814f5060814f5060814f5060814f5060855f5060855f5060855f5060855f5060855f50608 *55f5060855f506085af506085af506085af506085af506085af506085af506085af506085af506 *0855f506085af5060855f506085af5060850f5060850f5060850f5060850f5060850f50608adf5 *0608adf50608adf50608adf50608adf50608adf50608adf50608b2f50608b2f50608b2f50608b2 *f50608b2f50608b2f50608b2f50608b2f50608adf50608b2f50608adf50608b2f50608a8f50608 *a8f50608a8f50608a8f50608a8f50608e9f50608e9f50608e9f50608e9f50608e9f50608e9f506 *08e9f50608eef50608eef50608eef50608eef50608eef50608eef50608eef50608eef50608e9f5 *0608eef50608e9f50608eef50608e4f50608e4f50608e4f50608e4f50608e4f5060841f6060841 *f6060841f6060841f6060841f6060841f6060841f6060846f6060846f6060846f6060846f60608 *46f6060846f6060846f6060846f6060841f6060846f6060841f6060846f606083cf606083cf606 *083cf606083cf606083cf606087df606087df606087df606087df606087df606087df606087df6 *060882f6060882f6060882f6060882f6060882f6060882f6060882f6060882f606087df6060882 *f606087df6060882f6060878f6060878f6060878f6060878f6060878f60608d5f60608d5f60608 *d5f60608d5f60608d5f60608d5f60608d5f60608daf60608daf60608daf60608daf60608daf606 *08daf60608daf60608daf60608d5f60608daf60608d5f60608daf60608d0f60608d0f60608d0f6 *0608d0f60608d0f6060811f7060811f7060811f7060811f7060811f7060811f7060811f7060816 *f7060816f7060816f7060816f7060816f7060816f7060816f7060816f7060811f7060816f70608 *11f7060816f706080cf706080cf706080cf706080cf706080cf7060869f7060869f7060869f706 *0869f7060869f7060869f7060869f706086ef706086ef706086ef706086ef706086ef706086ef7 *06086ef706086ef7060869f706086ef7060869f706086ef7060864f7060864f7060864f7060864 *f7060864f70608a5f70608a5f70608a5f70608a5f70608a5f70608a5f70608a5f70608aaf70608 *aaf70608aaf70608aaf70608aaf70608aaf70608aaf70608aaf70608a5f70608aaf70608a5f706 *08aaf70608a0f70608a0f70608a0f70608a0f70608a0f70608fdf70608fdf70608fdf70608fdf7 *0608fdf70608fdf70608fdf7060802f8060802f8060802f8060802f8060802f8060802f8060802 *f8060802f80608fdf7060802f80608fdf7060802f80608f8f70608f8f70608f8f70608f8f70608 *f8f7060839f8060839f8060839f8060839f8060839f8060839f8060839f806083ef806083ef806 *083ef806083ef806083ef806083ef806083ef806083ef8060839f806083ef8060839f806083ef8 *060834f8060834f8060834f8060834f8060834f8060891f8060891f8060891f8060891f8060891 *f8060891f8060891f8060896f8060896f8060896f8060896f8060896f8060896f8060896f80608 *96f8060891f8060896f8060891f8060896f806088cf806088cf806088cf806088cf806088cf806 *08cdf80608cdf80608cdf80608cdf80608cdf80608cdf80608cdf80608d2f80608d2f80608d2f8 *0608d2f80608d2f80608d2f80608d2f80608d2f80608cdf80608d2f80608cdf80608d2f80608c8 *f80608c8f80608c8f80608c8f80608c8f8060825f9060825f9060825f9060825f9060825f90608 *25f9060825f906082af906082af906082af906082af906082af906082af906082af906082af906 *0825f906082af9060825f906082af9060820f9060820f9060820f9060820f9060820f9060861f9 *060861f9060861f9060861f9060861f9060861f9060861f9060866f9060866f9060866f9060866 *f9060866f9060866f9060866f9060866f9060861f9060866f9060861f9060866f906085cf90608 *5cf906085cf906085cf906085cf90608b9f90608b9f90608b9f90608b9f90608b9f90608b9f906 *08b9f90608bef90608bef90608bef90608bef90608bef90608bef90608bef90608bef90608b9f9 *0608bef90608b9f90608bef90608b4f90608b4f90608b4f90608b4f90608b4f90608f5f90608f5 *f90608f5f90608f5f90608f5f90608f5f90608f5f90608faf90608faf90608faf90608faf90608 *faf90608faf90608faf90608faf90608f5f90608faf90608f5f90608faf90608f0f90608f0f906 *08f0f90608f0f90608f0f906084dfa06084dfa06084dfa06084dfa06084dfa06084dfa06084dfa *060852fa060852fa060852fa060852fa060852fa060852fa060852fa060852fa06084dfa060852 *fa06084dfa060852fa060848fa060848fa060848fa060848fa060848fa06086d61696e20746872 *65616420686173206265656e20474327640074726176657273655f7765616b5f7074725f6c6973 *740065766163756174653a20737461636b206672616d652061742025700a000000000048437472 *6176657273655f7765616b5f7074725f6c6973743a206e6f74205745414b000000006576616375 *6174653a20737472616e676520636c6f7375726520747970652025640000006576616c5f746875 *6e6b5f73656c6563746f723a20737472616e67652073656c656374656520256400000000736361 *76656e67653a20756e696d706c656d656e7465642f737472616e676520636c6f73757265207479 *706520256420402025700000000073636176656e67655f6d61726b5f737461636b3a20756e696d *706c656d656e7465642f737472616e676520636c6f737572652074797065202564204020257000 *73636176656e67655f6f6e653a20737472616e6765206f626a6563742025640073636176656e67 *655f6d75745f6f6e63655f6c6973743a20737472616e6765206f626a6563743f20256400007363 *6176656e67655f6d757461626c655f6c6973743a20737472616e6765206f626a6563743f202564 *00000073636176656e67655f7374617469633a20737472616e676520636c6f7375726520256400 *73636176656e67655f737461636b3a2077656972642061637469766174696f6e207265636f7264 *20666f756e64206f6e20737461636b3a20256400006e250708722007085e1f0708131f07081620 *070816200708162007083a2307083a230708072307083a230708722007085e1f07085e1f070816 *2007081620070816200708c822070872200708ba1f0708ba1f0708ba1f0708ba1f0708ba1f0708 *a0220708b3210708df2007084f2307084f230708b22307081d2507081d25070872200708722007 *08e82207084123070841230708412307084123070841230708412307086e250708412307084123 *0708412307084221070842210708572107084221070842210708a61e070858240708ae240708ae *240708a61e07086e250708722007087220070872200708162507086e2507086e2507086e250708 *6e2507080f240708f02607084a2607084a2607084a2607084a2607084a2607084a260708f02607 *08f02607084a2607084a260708f0260708f0260708f0260708f0260708f0260708f0260708f026 *070807270708072707080727070807270708072707080727070807270708b9260708f026070807 *270708f026070807270708b1260708b1260708b1260708b1260708b1260708f0260708f0260708 *f0260708f0260708f0260708f0260708f0260708f0260708f0260708f026070807270708072707 *08072707080727070807270708f0260708f0260708f0260708f0260708f0260708f0260708f026 *0708f0260708f0260708f0260708f0260708f0260708f0260708f0260708072707086b2f0708f6 *2b0708d7290708612a07084a290708442d07084f2d07086b2f07086b2f07086b2f07086b2f0708 *7f2b070898290708222a0708d2280708342b0708a92a07086b2f0708b62b07085a290708e42907 *080b290708f42a0708692a07086b2f0708442d07081f2c0708852d0708852d0708572d07086b2f *07086b2f0708592c07086b2c07086b2f07086b2f07086b2f07086b2f07086b2f07086b2f07086b *2f07086b2f07086b2f07086b2f07086b2f07084f2d07084f2d0708f02c07084f2d07084f2d0708 *50280708332e07083e2e0708c82e0708d02c0708382d0708f62b0708f62b0708f62b0708f82e07 *08e7340708803207086f330708ff340708ec3007086f330708ff340708e7340708e7340708e734 *0708e734070809320708fc3007088a31070871300708fc3007088a310708e7340708403207083f *310708c4310708ad3007083f310708c4310708e73407086f330708ac320708a3330708a3330708 *7f330708e7340708dd320708ff340708dd320708e7340708e7340708e7340708e7340708e73407 *08e7340708e7340708e7340708e7340708e7340708e7340708ff340708ff3407085f330708ff34 *0708ff34070841300708ff34070853340708923407083b33070886340708803207088032070880 *320708bb340708ad3807089f3607089f3607089f3607089f3607089f3607089f360708ad380708 *ad380708ad380708ad3807089f3607089f3607089f3607089f3607089f3607089f360708ad3807 *089f3607089f3607089f3607089f3607089f3607089f360708ad380708cb360708ad3807080438 *070804380708e3370708ad380708c43807089f3607089f360708ad380708ad380708ad380708ad *380708ad380708ad380708ad380708ad380708ad380708ad380708ad380708c4380708c4380708 *ad380708c4380708c4380708ad380708c4380708db3607084b370708ad380708ad3807089f3607 *089f360708ad3807087b370708d93a07081d3b0708d93a07081d3b07081d3b07081d3b07081d3b *07081d3b07081d3b07081d3b07081d3b07081d3b07081d3b07081d3b07081d3b07081d3b0708c3 *3a07081d3b07081d3b0708893a07081d3b0708fb3907082d3a0708c33a07081d3b07081d3b0708 *1d3b07081d3b0708ac3a07080e3e0708993d0708993d0708393e0708393e07085d3e0708b13e07 *08863d0708993d0708993d0708044107080f4107080f410708fd400708fd400708df400708f540 *0708e4420708ef420708ef420708dd420708dd420708bf420708d54207087468726561645f7374 *617469633a20737472616e676520636c6f737572652025640000007468726561645f737461636b *3a2077656972642061637469766174696f6e207265636f726420666f756e64206f6e2073746163 *6b3a202564000000007570646174655f6677645f6c617267653a20756e6b6e6f776e2f73747261 *6e6765206f626a65637420202564000000007570646174655f6677643a20756e6b6e6f776e2f73 *7472616e6765206f626a6563742020256400006c45070811450708114507083a4607083a460708 *67440708d6460708114507081145070811450708584a0708054a07087f4c07087f4c07087f4c07 *087f4c07087f4c07087f4c07087f4c07087f4c07087f4c07087f4c07087f4c07087f4c07087f4c *07087f4c07087f4c07087f4c07087f4c07087f4c07087f4c07087f4c07087f4c0708964c0708a7 *490708a74907087f4c07087f4c07087f4c07087f4c07087f4c0708fa4907080b4f07080b4f0708 *cf4e0708cf4e0708d64e0708d64e0708d64e07080b4f07080b4f07080b4f07080b4f07080b4f07 *08cf4e0708cf4e0708d64e0708d64e0708d64e07080b4f07080b4f0708d64e0708d64e0708d64e *0708d64e0708d64e07080b4f0708d64e0708004f0708dd4e0708dd4e0708f04e07080b4f07080b *4f07080b4f07080b4f07080b4f07080b4f07080b4f07080b4f07080b4f07080b4f07080b4f0708 *0b4f07080b4f07080b4f07080b4f07080b4f07080b4f07080b4f07080b4f07080b4f07080b4f07 *08e84e0708f04e0708f04e07080b4f07080b4f07080b4f07080b4f07080b4f0708f84e0708255a *070839550708ab530708e0530708e8530708ea5607081f570708255a0708255a0708255a070825 *5a070839550708ab530708e0530708e8530708ea5607081f570708255a070839550708ea560708 *1f570708e8530708ea5607081f570708255a0708ea5607085d5407088157070881570708275707 *08255a0708ea56070839550708ea560708255a0708255a0708255a0708255a0708255a0708255a *0708255a0708255a0708255a0708255a0708255a07083955070839550708395507083955070839 *55070841560708be590708c9590708c95907083955070839550708945507083955070839550708 *175a0708616c6c6f635365676d656e7400616c6c6f63486173684c69737400616c6c6f63486173 *685461626c6500696e7465727072657442434f3a20686974206120434153454641494c0000696e *7465727072657442434f3a20756e6b6e6f776e206f7220756e696d706c656d656e746564206f70 *636f6465000000cb600708e1600708e1600708e1600708e1600708e1600708e1600708e1600708 *e1600708e1600708e1600708e1600708e1600708e1600708e1600708e1600708e1600708e16007 *08cb600708cb600708cb600708cb600708cb600708cb600708cb600708cb600708e16007084e60 *0708e1600708cb60070841600708416007084160070841600708416007083d6307084863070848 *6307083663070836630708186307082e6307083a700708cc660708216707084067070874670708 *c3670708e86707080a6807082c6807084e680708746807089a680708c0680708a3690708ef6807 *080d6907081c6907082b690708fe6807083a690708496907085869070867690708766907088569 *070894690708f76907083b6a07087c6a0708d46a07081e6b0708626b0708586c0708906c0708ce *6d0708306e0708c86c0708466d0708e96b0708226c070830700708167007085f6f0708396f0708 *9c6e0708d06e0708df6e0708ee6e0708fd6e07080c6f07081b6f07082a6f07086f7574206f6620 *6d656d6f7279202872657175657374656420256420627974657329000067656e5f6d61705f6d62 *6c6f636b733a206d756e6d6170206661696c6564006765744d426c6f636b3a206d6d61703a2025 *73006765744d426c6f636b3a206d756e6d6170206661696c656400527473466c6167732e633a73 *706c6974527473466c616773282900474843525453002d2d525453002d2d002b52545300756e65 *787065637465642052545320617267756d656e743a2025730025302e313232732e73746174006e *6f74206275696c7420666f723a202d706172616c6c656c006e6f74206275696c7420666f723a20 *2d6772616e73696d00696e636f6d706c65746520525453206f7074696f6e3a202573006e6f7420 *6275696c7420666f723a202d70726f6600756e6b6e6f776e20525453206f7074696f6e3a202573 *0073746465727200770043616e2774206f70656e2073746174732066696c652025730a00257320 *002b525453200062616420525453206f7074696f6e3a2025730055736167653a203c70726f673e *203c617267733e205b2b525453203c7274736f7074733e207c202d525453203c617267733e5d20 *2e2e2e202d2d525453203c617267733e000000002020202b52545320202020496e646963617465 *732072756e2074696d652073797374656d206f7074696f6e7320666f6c6c6f77002020202d5254 *5320202020496e646963617465732070726f6772616d20617267756d656e747320666f6c6c6f77 *00000020202d2d52545320202020496e64696361746573207468617420414c4c20737562736571 *75656e7420617267756d656e74732077696c6c20626520676976656e20746f2074686500202020 *202020202020202070726f6772616d2028696e636c7564696e6720616e79206f66207468657365 *2052545320666c6167732900000054686520666f6c6c6f77696e672072756e2074696d65207379 *7374656d206f7074696f6e732061726520617661696c61626c653a0000000020202d3f20202020 *2020205072696e74732074686973206d65737361676520616e642065786974733b207468652070 *726f6772616d206973206e6f7420657865637574656400000020202d4b3c73697a653e20536574 *7320746865206d6178696d756d20737461636b2073697a65202864656661756c7420384d292020 *4567733a202d4b33326b2020202d4b3531326b0000000020202d6b3c73697a653e205365747320 *74686520696e697469616c2074687265616420737461636b2073697a65202864656661756c7420 *316b2920204567733a202d6b346b2020202d6b326d0000000020202d413c73697a653e20536574 *7320746865206d696e696d756d20616c6c6f636174696f6e20617265612073697a652028646566 *61756c74203235366b29204567733a202d41316d202d4131306b0020202d4d3c73697a653e2053 *65747320746865206d6178696d756d20686561702073697a65202864656661756c7420756e6c69 *6d697465642920204567733a202d4d3235366b202d4d31470020202d483c73697a653e20536574 *7320746865206d696e696d756d20686561702073697a65202864656661756c7420304d29202020 *4567733a202d4832346d20202d48314700000020202d6d3c6e3e202020204d696e696d756d2025 *206f662068656170207768696368206d75737420626520617661696c61626c6520286465666175 *6c742033252900000020202d473c6e3e202020204e756d626572206f662067656e65726174696f *6e73202864656661756c743a20322900000020202d543c6e3e202020204e756d626572206f6620 *737465707320696e20796f756e6765722067656e65726174696f6e73202864656661756c743a20 *3229000020202d633c6e3e202020204175746f2d656e61626c6520636f6d70616374696f6e206f *6620746865206f6c646573742067656e65726174696f6e207768656e206c697665206461746120 *69730000000020202020202020202020206174206c65617374203c6e3e25206f6620746865206d *6178696d756d20686561702073697a65207365742077697468202d4d202864656661756c743a20 *333025290000000020202d6320202020202020456e61626c6520636f6d70616374696f6e20666f *7220616c6c206d616a6f7220636f6c6c656374696f6e73000020202d743c66696c653e204f6e65 *2d6c696e65204743207374617469737469637320202864656661756c742066696c653a203c7072 *6f6772616d3e2e737461742900000020202d733c66696c653e2053756d6d617279202047432073 *74617469737469637320202877697468202d5373746465727220676f696e6720746f2073746465 *727229000020202d533c66696c653e2044657461696c6564204743207374617469737469637300 *000020202d5a20202020202020446f6e27742073717565657a65206f7574207570646174652066 *72616d6573206f6e20737461636b206f766572666c6f770000000020202d422020202020202053 *6f756e64207468652062656c6c20617420746865207374617274206f6620656163682067617262 *61676520636f6c6c656374696f6e00000020202d433c736563733e2020436f6e746578742d7377 *6974636820696e74657276616c20696e207365636f6e6473000020202020202020202020202020 *2020202830206f72206e6f20617267756d656e74206d65616e7320737769746368206173206f66 *74656e20617320706f737369626c65290000000020202020202020202020202020202020746865 *2064656661756c74206973202e3032207365633b207265736f6c7574696f6e206973202e303220 *736563000000525453206f7074696f6e73206d617920616c736f20626520737065636966696564 *207573696e67207468652047484352545320656e7669726f6e6d656e74207661726961626c652e *000000004f7468657220525453206f7074696f6e73206d617920626520617661696c61626c6520 *666f722070726f6772616d7320636f6d70696c6564206120646966666572656e74207761792e00 *00005468652047484320557365722773204775696465206861732066756c6c2064657461696c73 *2e0000746f6f206d616e792052545320617267756d656e747320286d617820256429006e6f7420 *6275696c7420666f723a202d70726f66206f72202d706172616c6c656c0000006e6f7420627569 *6c7420666f723a202d706172616c6c656c206f72202d736d70000000006e6f74206275696c7420 *666f723a207469636b792d7469636b792073746174730000000000007a44286b6e4e0024744900 *008040237907086b7a070878760708a17607084c7907086b7a07086b7a07080b77070845780708 *917807086b7a07086b7a07087b7707086b7a0708bb7707086b7a07086b7a07083f7907086b7a07 *08557a0708cf780708777807086b7a07086b7a07086b7a07086b7a07086b7a0708307907086b7a *07086b7a07086b7a07086b7a07086b7a07086b7a07086b7a07080e7a0708b07607086b7a0708fa *7907086b7a07086b7a0708557a07086b7a07086b7a07089b7707086b7a0708e47707086b7a0708 *6b7a07083f790708047a0708187a0708db780708e77807086b7a07086b7a07086b7a0708227a07 *08000000000000802f011b033b944f000004000000d8a9ffffb04f000058abffffd04f000098ad *fffff04f0000d8aeffff1050000000000000000000000000000000000000000000000000000000 *000000000000000000000078250808849a05080000803e849a0508000080bed09e040800000000 *0000000000000000ac9f040838a0040898a0040800000000000000000000000070a10408000000 *00000000000000000048a2040800000000000000000000000020a3040800000000000000000000 *000004a404080000000000000000000000003c9f0508000000004c190508e4e4070801000000e0 *a404080000000074970508cce80708940f08080100000004a60408000000000000000000000000 *80a6040800000000d883050820e5070800000000542005086ce407080100000074970508e0e507 *08940f08080100000074970508e4e5070840e5070801000000f8a8040800000000000000000000 *0000b0a9040800000000f4bd0408000000001cbe040844be04086cbe040894be0408acc0040800 *000000f8c3040804c404088cc4040800000000000000000000000098c5040844c60408f0c60408 *70c7040848c804080000000020d4040830d40408b0d6040828d704080000000088d9040804da04 *0810da0408dcda040844de04085ce7040800000000f497050840e707083ce7070824e7070828e7 *07082ce7070830e7070838e7070834e70708010000006ce80408000000000000000000000000ec *c30408280f080868e6070801000000ecc30408280f080864e6070801000000d4e80408e0e80408 *ece80408f8e8040804e9040810e904081ce9040894e9040800000000000000000000000008ea04 *0800000000000000000000000068ea0408000000000000000000000000d8ea040858eb04080000 *00000000000000000000c4eb04084cec040800000000b4ed04080000000014ef0408c0ef040874 *f004080000000088f104080000000094f2040840f30408f8f304080000000050f50408fcf50408 *70f604085cf7040800000000e8f70408f8f7040808f8040818f8040828f8040854f80408000000 *000000000000000000b8f8040834f90408b0f904082cfa0408a8fa04088cfb040870fc04080c98 *0508fce70708f8e70708010000002cfd040838fd040844fd040850fd04085cfd040868fd040874 *fd040880fd04088cfd040898fd0408a4fd0408b0fd0408bcfd0408c8fd0408e4fd040864fe0408 *000000000000000000000000e0fe04080000000000000000000000004cff040800000000b4ff04 *0800000000e4ff040864000508e40005086c010508000000000000000000000000e80105080000 *0000380205088003050804040508c80405088c0505085006050814070508900705080c080508d4 *090508000000000000000000000000400a0508000000000c0b0508180b0508240b0508300b0508 *3c0b0508480b0508540b0508600b05086c0b0508780b0508840b0508900b05089c0b0508a80b05 *08b40b0508c00b0508cc0b0508d80b0508e40b0508f00b0508fc0b0508740c0508000000000000 *000000000000d80c0508600d050800000000d80d0508400f0508d80f050880120508101305085c *19050860180508d0180508a819050800000000981f0508000000000000000000000000dc200508 *3823050810ab050800400000ac250508000000009c280508ac28050874310508f4310508443205 *08000000002834050834340508403405084c3405085834050864340508703405087c3405088834 *0508483e050800000000000000000000000010ab05080105000010ab0508000500008040050800 *000000ec45050800460508bc46050800000000e84c050810ab05080f80000010ab05080e800000 *10ab0508ef84000010ab05089281000010ab0508540c000010ab0508530c000010ab0508520c00 *0010ab0508510c000010ab0508500c0000784d050800000000984e0508a84e0508a04f0508cc4f *0508f84f05085c700508f8700508ac71050800000000e87105080000000000000000000000004c *720508d88305082000080801000000d88305082800080801000000d88305083000080801000000 *d88305083800080801000000d88305084000080801000000d88305084800080801000000d88305 *085000080801000000d88305085800080801000000d88305086000080801000000d88305086800 *080801000000d88305087000080801000000d88305087800080801000000d88305088000080801 *000000d88305088800080801000000d88305089000080801000000d88305089800080801000000 *d8830508a000080801000000d8830508a800080801000000d8830508b000080801000000d88305 *08b800080801000000d8830508c000080801000000d8830508c800080801000000d8830508d000 *080801000000d8830508d800080801000000d8830508e000080801000000d8830508e800080801 *000000d8830508f000080801000000d8830508f800080801000000d88305080001080801000000 *d88305080801080801000000d88305081001080801000000d88305081801080801000000d88305 *082001080801000000d88305082801080801000000d88305083001080801000000d88305083801 *080801000000d88305084001080801000000d88305084801080801000000d88305085001080801 *000000d88305085801080801000000d88305086001080801000000d88305086801080801000000 *d88305087001080801000000d88305087801080801000000d88305088001080801000000d88305 *088801080801000000d88305089001080801000000d88305089801080801000000d8830508a001 *080801000000d8830508a801080801000000d8830508b001080801000000d8830508b801080801 *000000d8830508c001080801000000d8830508c801080801000000d8830508d001080801000000 *d8830508d801080801000000d8830508e001080801000000d8830508e801080801000000d88305 *08f001080801000000d8830508f801080801000000d88305080002080801000000d88305080802 *080801000000d88305081002080801000000d88305081802080801000000d88305082002080801 *000000d88305082802080801000000d88305083002080801000000d88305083802080801000000 *d88305084002080801000000d88305084802080801000000d88305085002080801000000d88305 *085802080801000000d88305086002080801000000d88305086802080801000000d88305087002 *080801000000d88305087802080801000000d88305088002080801000000d88305088802080801 *000000d88305089002080801000000d88305089802080801000000d8830508a002080801000000 *d8830508a802080801000000d8830508b002080801000000307305080000000020750508000000 *000000000000000000d8830508dc02080801000000d8830508e402080801000000d8830508ec02 *080801000000d8830508f402080801000000d8830508fc02080801000000d88305080403080801 *000000d88305080c03080801000000d88305081403080801000000d88305081c03080801000000 *d88305082403080801000000d88305082c03080801000000d88305083403080801000000d88305 *083c03080801000000d88305084403080801000000d88305084c03080801000000d88305085403 *080801000000d88305085c03080801000000d88305086403080801000000d88305086c03080801 *000000d88305087403080801000000d88305087c03080801000000d88305088403080801000000 *d88305088c03080801000000d88305089403080801000000d88305089c03080801000000d88305 *08a403080801000000d8830508ac03080801000000d8830508b403080801000000d8830508bc03 *080801000000d8830508c403080801000000d8830508cc03080801000000d8830508d403080801 *000000d8830508dc03080801000000d8830508e403080801000000d8830508ec03080801000000 *d8830508f403080801000000d8830508fc03080801000000d88305080404080801000000d88305 *080c04080801000000d88305081404080801000000d88305081c04080801000000d88305082404 *080801000000d88305082c04080801000000d88305083404080801000000d88305083c04080801 *000000d88305084404080801000000d88305084c04080801000000d88305085404080801000000 *d88305085c04080801000000d88305086404080801000000d88305086c04080801000000d88305 *087404080801000000d88305087c04080801000000d88305088404080801000000d88305088c04 *080801000000d88305089404080801000000d88305089c04080801000000d8830508a404080801 *000000d8830508ac04080801000000d8830508b404080801000000d8830508bc04080801000000 *d8830508c404080801000000d8830508cc04080801000000d8830508d404080801000000d88305 *08dc04080801000000d8830508e404080801000000d8830508ec04080801000000d8830508f404 *080801000000d8830508fc04080801000000d88305080405080801000000d88305080c05080801 *000000d88305081405080801000000d88305081c05080801000000d88305082405080801000000 *d88305082c05080801000000d88305083405080801000000d88305083c05080801000000d88305 *084405080801000000d88305084c05080801000000d88305085405080801000000d88305085c05 *080801000000d88305086405080801000000d88305086c05080801000000d88305087405080801 *000000d88305087c05080801000000d88305088405080801000000d88305088c05080801000000 *d88305089405080801000000d88305089c05080801000000d8830508a405080801000000d88305 *08ac05080801000000d8830508b405080801000000d8830508bc05080801000000d8830508c405 *080801000000d8830508cc05080801000000d8830508d405080801000000d8830508dc05080801 *000000d8830508e405080801000000d8830508ec05080801000000d8830508f405080801000000 *d8830508fc05080801000000d88305080406080801000000d88305080c06080801000000d88305 *081406080801000000d88305081c06080801000000d88305082406080801000000d88305082c06 *080801000000d88305083406080801000000d88305083c06080801000000d88305084406080801 *000000d88305084c06080801000000d88305085406080801000000d88305085c06080801000000 *d88305086406080801000000d88305086c06080801000000d88305087406080801000000d88305 *087c06080801000000d88305088406080801000000d88305088c06080801000000d88305089406 *080801000000d88305089c06080801000000d8830508a406080801000000d8830508ac06080801 *000000d8830508b406080801000000d8830508bc06080801000000d8830508c406080801000000 *d8830508cc06080801000000d8830508d406080801000000d8830508dc06080801000000d88305 *08e406080801000000d8830508ec06080801000000d8830508f406080801000000d8830508fc06 *080801000000d88305080407080801000000d88305080c07080801000000d88305081407080801 *000000d88305081c07080801000000d88305082407080801000000d88305082c07080801000000 *d88305083407080801000000d88305083c07080801000000d88305084407080801000000d88305 *084c07080801000000d88305085407080801000000d88305085c07080801000000d88305086407 *080801000000d88305086c07080801000000d88305087407080801000000d88305087c07080801 *000000d88305088407080801000000d88305088c07080801000000d88305089407080801000000 *d88305089c07080801000000d8830508a407080801000000d8830508ac07080801000000d88305 *08b407080801000000d8830508bc07080801000000d8830508c407080801000000d8830508cc07 *080801000000d8830508d407080801000000d8830508dc07080801000000d8830508e407080801 *000000d8830508ec07080801000000d8830508f407080801000000d8830508fc07080801000000 *d88305080408080801000000d88305080c08080801000000d88305081408080801000000d88305 *081c08080801000000d88305082408080801000000d88305082c08080801000000d88305083408 *080801000000d88305083c08080801000000d88305084408080801000000d88305084c08080801 *000000d88305085408080801000000d88305085c08080801000000d88305086408080801000000 *d88305086c08080801000000d88305087408080801000000d88305087c08080801000000d88305 *088408080801000000d88305088c08080801000000d88305089408080801000000d88305089c08 *080801000000d8830508a408080801000000d8830508ac08080801000000d8830508b408080801 *000000d8830508bc08080801000000d8830508c408080801000000d8830508cc08080801000000 *d8830508d408080801000000d8830508dc08080801000000d8830508e408080801000000d88305 *08ec08080801000000d8830508f408080801000000d8830508fc08080801000000d88305080409 *080801000000d88305080c09080801000000d88305081409080801000000d88305081c09080801 *000000d88305082409080801000000d88305082c09080801000000d88305083409080801000000 *d88305083c09080801000000d88305084409080801000000d88305084c09080801000000d88305 *085409080801000000d88305085c09080801000000d88305086409080801000000d88305086c09 *080801000000d88305087409080801000000d88305087c09080801000000d88305088409080801 *000000d88305088c09080801000000d88305089409080801000000d88305089c09080801000000 *d8830508a409080801000000d8830508ac09080801000000d8830508b409080801000000d88305 *08bc09080801000000d8830508c409080801000000d8830508cc09080801000000d8830508d409 *080801000000d8830508dc09080801000000d8830508e409080801000000d8830508ec09080801 *000000d8830508f409080801000000d8830508fc09080801000000d8830508040a080801000000 *d88305080c0a080801000000d8830508140a080801000000d88305081c0a080801000000d88305 *08240a080801000000d88305082c0a080801000000d8830508340a080801000000d88305083c0a *080801000000d8830508440a080801000000d88305084c0a080801000000d8830508540a080801 *000000d88305085c0a080801000000d8830508640a080801000000d88305086c0a080801000000 *d8830508740a080801000000d88305087c0a080801000000d8830508840a080801000000d88305 *088c0a080801000000d8830508940a080801000000d88305089c0a080801000000d8830508a40a *080801000000d8830508ac0a080801000000d8830508b40a080801000000d8830508bc0a080801 *000000d8830508c40a080801000000d8830508cc0a080801000000d8830508d40a080801000000 *d8830508dc0a080801000000d8830508e40a080801000000d8830508ec0a080801000000d88305 *08f40a080801000000d8830508fc0a080801000000d8830508040b080801000000d88305080c0b *080801000000d8830508140b080801000000d88305081c0b080801000000d8830508240b080801 *000000d88305082c0b080801000000d8830508340b080801000000d88305083c0b080801000000 *d8830508440b080801000000d88305084c0b080801000000d8830508540b080801000000d88305 *085c0b080801000000d8830508640b080801000000d88305086c0b080801000000d8830508740b *080801000000d88305087c0b080801000000d8830508840b080801000000d88305088c0b080801 *000000d8830508940b080801000000d88305089c0b080801000000d8830508a40b080801000000 *d8830508ac0b080801000000d8830508b40b080801000000d8830508bc0b080801000000d88305 *08c40b080801000000d8830508cc0b080801000000d8830508d40b080801000000d8830508dc0b *080801000000d8830508e40b080801000000d8830508ec0b080801000000d8830508f40b080801 *000000d8830508fc0b080801000000d8830508040c080801000000d88305080c0c080801000000 *d8830508140c080801000000d88305081c0c080801000000d8830508240c080801000000d88305 *082c0c080801000000d8830508340c080801000000d88305083c0c080801000000d8830508440c *080801000000d88305084c0c080801000000d8830508540c080801000000d88305085c0c080801 *000000d8830508640c080801000000d88305086c0c080801000000d8830508740c080801000000 *d88305087c0c080801000000d8830508840c080801000000d88305088c0c080801000000d88305 *08940c080801000000d88305089c0c080801000000d8830508a40c080801000000d8830508ac0c *080801000000d8830508b40c080801000000d8830508bc0c080801000000d8830508c40c080801 *000000d8830508cc0c080801000000d8830508d40c080801000000d8830508dc0c080801000000 *d8830508e40c080801000000d8830508ec0c080801000000d8830508f40c080801000000d88305 *08fc0c080801000000d8830508040d080801000000d88305080c0d080801000000d8830508140d *080801000000d88305081c0d080801000000d8830508240d080801000000d88305082c0d080801 *000000d8830508340d080801000000d88305083c0d080801000000d8830508440d080801000000 *d88305084c0d080801000000d8830508540d080801000000d88305085c0d080801000000d88305 *08640d080801000000d88305086c0d080801000000d8830508740d080801000000d88305087c0d *080801000000d8830508840d080801000000d88305088c0d080801000000d8830508940d080801 *000000d88305089c0d080801000000d8830508a40d080801000000d8830508ac0d080801000000 *d8830508b40d080801000000d8830508bc0d080801000000d8830508c40d080801000000d88305 *08cc0d080801000000d8830508d40d080801000000d8830508dc0d080801000000d8830508e40d *080801000000d8830508ec0d080801000000d8830508f40d080801000000d8830508fc0d080801 *000000d8830508040e080801000000d88305080c0e080801000000d8830508140e080801000000 *d88305081c0e080801000000d8830508240e080801000000d88305082c0e080801000000d88305 *08340e080801000000d88305083c0e080801000000d8830508440e080801000000d88305084c0e *080801000000d8830508540e080801000000d88305085c0e080801000000d8830508640e080801 *000000d88305086c0e080801000000d8830508740e080801000000d88305087c0e080801000000 *d8830508840e080801000000d88305088c0e080801000000d8830508940e080801000000d88305 *089c0e080801000000d8830508a40e080801000000d8830508ac0e080801000000d8830508b40e *080801000000d8830508bc0e080801000000d8830508c40e080801000000d8830508cc0e080801 *000000d8830508d40e080801000000d8830508dc0e080801000000d8830508e40e080801000000 *d8830508ec0e080801000000a07505080000000000000000000000001076050800000000000000 *00000000008076050810ab0508bc80000010ab05086292010010ab05081089000010ab05086188 *000010ab05085885000010ab05089088000010ab05084f86000010ab05084088000010ab0508ad *86000010ab0508a786000010ab0508a686000010ab05081385000010ab05085884000010ab0508 *d280000010ab0508d180000010ab0508d080000010ab0508a080000010ab05089f80000010ab05 *089e80000010ab05089d80000010ab05086f80000010ab0508fb81000010ab05083a80000010ab *05082e80000010ab05082480000010ab05081280000010ab05081180000010ab05081080000010 *ab05084488000010ab05085e84000010ab05085784000010ab05087980000010ab050878800000 *10ab05087780000010ab05087680000010ab05087580000010ab05087480000010ab0508378000 *0010ab0508022a000010ab0508012a000010ab0508800d000010ab0508a10b000010ab0508570b *000010ab0508110c000010ab0508410b000010ab0508200b000010ab0508100b000010ab0508b6 *0d000010ab0508b50d000010ab0508b40d000010ab0508b30d000010ab0508b20d000010ab0508 *b10d000010ab0508b00d000010ab0508b80d000010ab0508b70d000010ab0508960d000010ab05 *08950d000010ab0508940d000010ab0508930d000010ab0508920d000010ab0508910d000010ab *0508900d000010ab0508980d000010ab0508970d000010ab0508630c000010ab0508620c000010 *ab0508610c000010ab0508600c000010ab0508710b000010ab0508900b000010ab0508d00b0000 *10ab0508f20b000010ab0508f10b000010ab0508e20b000010ab0508c00b000010ab0508440b00 *0010ab0508420b000010ab0508240b000010ab0508e10d000010ab0508e00d000010ab0508500b *000010ab0508600b0000047705080000000000000000000000007c770508000000000000000000 *000000e077050810ab05084086000010ab05084186000010ab0508f684000010ab050814850000 *10ab05089d88000010ab05089c88000010ab05089b88000010ab05089a88000010ab0508998800 *0010ab05089888000010ab05089788000010ab05089688000010ab05089588000010ab05089488 *000010ab05081189000010ab05085985000010ab05089188000010ab05085a85000010ab050805 *85000010ab05080485000010ab0508a981000010ab0508a881000010ab05080f80000010ab0508 *0e80000010ab0508cb80000010ab0508ca80000010ab0508c980000010ab0508c880000010ab05 *084388000010ab05084288000010ab05084188000010ab05084088000010ab0508ad86000010ab *0508ab86000010ab0508aa86000010ab0508a986000010ab0508a886000010ab05083f87000010 *ab05083e87000010ab05083d87000010ab05083c87000010ab05083b87000010ab05083a870000 *10ab05083987000010ab05083887000010ab05083787000010ab05083687000010ab0508358700 *0010ab05083487000010ab05083387000010ab05083287000010ab05083187000010ab05083087 *000010ab05082f87000010ab05082e87000010ab05082d87000010ab05082c87000010ab05082b *87000010ab05082a87000010ab05082987000010ab05082887000010ab05082787000010ab0508 *2687000010ab05082587000010ab05082487000010ab05082387000010ab05082287000010ab05 *080a85000010ab05080017000010ab0508a786000010ab0508a686000010ab0508a586000010ab *0508a486000010ab0508a386000010ab0508a286000010ab05081c85000010ab05081385000010 *ab0508e284000010ab0508e184000010ab0508e084000010ab0508e980000010ab0508e8800000 *10ab0508bb80000010ab0508ba80000010ab0508b980000010ab0508b880000010ab0508b78000 *0010ab0508b680000010ab0508b580000010ab0508b480000010ab0508b380000010ab0508b280 *000010ab0508b180000010ab05082981000010ab05082881000010ab05082781000010ab050826 *81000010ab0508ab80000010ab0508aa80000010ab0508a980000010ab0508a880000010ab0508 *a080000010ab05089f80000010ab05089e80000010ab05089d80000010ab0508ff84000010ab05 *08fd84000010ab05087380000010ab05086f80000010ab05086e80000010ab05086d80000010ab *05086c80000010ab05086b80000010ab0508fb81000010ab05083a80000010ab05085984000010 *ab05085884000010ab05082e80000010ab05082480000010ab05082380000010ab050822800000 *10ab05082180000010ab05082080000010ab05081f80000010ab05081e80000010ab05081d8000 *0010ab05081c80000010ab05081b80000010ab05081a80000010ab05081280000010ab05081180 *000010ab05081080000010ab0508d280000010ab0508d180000010ab0508d080000010ab050809 *80000010ab05080580000010ab0508f881000010ab0508e684000010ab0508e584000010ab0508 *e484000010ab0508e384000010ab05084888000010ab05084788000010ab05084688000010ab05 *085c84000010ab05085b84000010ab05085a84000010ab05085584000010ab05085484000010ab *05088c80000010ab05088a80000010ab05088980000010ab05088880000010ab05088680000010 *ab05088580000010ab05088380000010ab05088280000010ab05088180000010ab05087f800000 *10ab05087e80000010ab05087c80000010ab05087b80000010ab05087a80000010ab0508448800 *0010ab05085e84000010ab05085784000010ab05087980000010ab05087880000010ab05087780 *000010ab05087680000010ab05087580000010ab05087480000010ab05086980000010ab050868 *80000010ab05083880000010ab05083780000010ab0508022a000010ab0508012a000010ab0508 *002a000010ab0508f40d000010ab0508f20d000010ab0508f10d000010ab0508e10d000010ab05 *08e00d000010ab0508d30d000010ab0508d20d000010ab0508d10d000010ab0508d00d000010ab *0508b80d000010ab0508b70d000010ab0508b60d000010ab0508b50d000010ab0508b40d000010 *ab0508b30d000010ab0508b20d000010ab0508b10d000010ab0508b00d000010ab0508980d0000 *10ab0508970d000010ab0508960d000010ab0508950d000010ab0508940d000010ab0508930d00 *0010ab0508920d000010ab0508910d000010ab0508900d000010ab0508800d000010ab0508700d *000010ab05085b0d000010ab05085a0d000010ab0508590d000010ab0508580d000010ab050857 *0d000010ab0508560d000010ab0508550d000010ab0508540d000010ab0508530d000010ab0508 *520d000010ab0508510d000010ab0508500d000010ab05083b0d000010ab05083a0d000010ab05 *08390d000010ab0508380d000010ab0508370d000010ab0508360d000010ab0508350d000010ab *0508340d000010ab0508330d000010ab0508320d000010ab0508310d000010ab0508300d000010 *ab05081f0d000010ab05081e0d000010ab05081d0d000010ab05081c0d000010ab05081b0d0000 *10ab05081a0d000010ab0508190d000010ab0508180d000010ab0508170d000010ab0508160d00 *0010ab0508150d000010ab0508140d000010ab0508130d000010ab0508120d000010ab0508110d *000010ab0508100d000010ab0508050d000010ab0508040d000010ab0508030d000010ab050802 *0d000010ab0508010d000010ab0508000d000010ab0508f50c000010ab0508f40c000010ab0508 *f30c000010ab0508f20c000010ab0508f10c000010ab0508f00c000010ab0508b90c000010ab05 *08b80c000010ab0508b70c000010ab0508b60c000010ab0508b50c000010ab0508b40c000010ab *0508b30c000010ab0508b20c000010ab0508b10c000010ab0508b00c000010ab0508630c000010 *ab0508620c000010ab0508610c000010ab0508600c000010ab0508ef84000010ab050892810000 *10ab0508540c000010ab0508530c000010ab0508520c000010ab0508510c000010ab0508500c00 *0010ab0508400c000010ab0508330c000010ab0508320c000010ab0508310c000010ab0508300c *000010ab0508230c000010ab0508220c000010ab0508210c000010ab0508200c000010ab050811 *0c000010ab0508100c000010ab0508020c000010ab0508010c000010ab0508000c000010ab0508 *f20b000010ab0508f00b000010ab0508e20b000010ab0508e10b000010ab0508e00b000010ab05 *08d00b000010ab0508c20b000010ab0508c10b000010ab0508c00b000010ab0508b10b000010ab *0508b00b000010ab0508a80b000010ab0508a70b000010ab0508a60b000010ab0508a50b000010 *ab0508a40b000010ab0508a30b000010ab0508a20b000010ab0508a10b000010ab0508a00b0000 *10ab0508980b000010ab0508970b000010ab0508960b000010ab0508950b000010ab0508940b00 *0010ab0508930b000010ab0508920b000010ab0508910b000010ab0508900b000010ab0508800b *000010ab0508740b000010ab0508730b000010ab0508720b000010ab0508710b000010ab050870 *0b000010ab05085384000010ab05085084000010ab0508660b000010ab0508650b000010ab0508 *640b000010ab0508630b000010ab0508620b000010ab0508610b000010ab0508600b000010ab05 *08570b000010ab0508560b000010ab0508550b000010ab0508540b000010ab0508530b000010ab *0508520b000010ab0508510b000010ab0508500b000010ab0508460b000010ab0508450b000010 *ab0508440b000010ab0508430b000010ab0508420b000010ab0508410b000010ab0508400b0000 *10ab0508330b000010ab0508320b000010ab0508310b000010ab0508300b000010ab05086e8400 *0010ab05086d84000010ab0508260b000010ab0508250b000010ab0508240b000010ab0508210b *000010ab0508200b000010ab0508110b000010ab0508100b000010ab05084588000010ab050809 *0b000010ab0508080b000010ab0508070b000010ab0508060b000010ab0508050b000010ab0508 *040b000010ab0508030b000010ab0508020b000010ab0508010b000010ab0508000b000010ab05 *086a80000010ab0508f10b000010ab0508230b000010ab0508220b000010ab0508130b000010ab *0508120b000010ab0508ff4f000010ab0508ff3f00002c840508940f0808980f080801000000ac *780508787b0508a07c050800000000747e0508000000009c80050810810508ec810508b8830508 *2485050858870508788a0508000000007c8c0508108f0508d4900508fc100808f81008082c1008 *0828100808e8100808ec100808f0100808f4100808010000001092050800000000000000000000 *00007c9205087893050880940508649505084c960508fc960508549705080c970508d897050884 *97050894970508a4970508d498050800000000000000000000000038990508f89b05080c9d0508 *ec0f0808010000000c9d0508e80f080801000000109c0508689c0508bc9c0508e09c0508f09c05 *08189d0508249d0508609d0508ac9c0508889e0508649f0508ac9f0508ec9f0508000000002ca1 *0508bca1050800000000a4a105080000000028a4050898a40508e0a505080000000020a6050800 *000000c8a905080000000094aa05081cce05089c110808bc110808981108089411080890110808 *8c11080888110808841108088011080800000000bcab05080000000068ae050898af0508f8b005 *08c0b4050800000000000000000000000090b505080000000098bc05080000000040bf05089cbf *0508dcc0050800000000000000000000000074c10508000000000000000000000000e0cd050800 *00000028c405084897050800000000d4c6050840c705082cc805087cc80508ccc80508e8c80508 *48970508040000001cc905080000000000000000000000003c9d0508741208080000000094c905 *080000000034ca050800000000000000000000000098ca0508d8cb050850cc0508000000000000 *000000000000c4cc050800000000e0cd0508000000002cce0508a4ce05085ccf05080000000028 *d005080000000060d00508d8d0050844d1050880d1050894d10508e4d1050850d20508bcd20508 *0c980508f8130808f41308080100000030d305080000000000000000000000001cf60508ec1308 *08d4130808ac1108080000000094d3050810d40508e4e405089c1208080100000008d505080000 *000050d605080000000004d70508000000000000000000000000acd70508000000000000000000 *00000024d8050800000000c8d805080000000070d905080000000050da0508000000005cdb0508 *00000000000000000000000004dc050800000000000000000000000070dc050830de050830df05 *080000000000000000000000009cdf05080000000010e205080000000000000000000000007497 *050874140808940f080801000000b8e2050800000000c8e40508fce40508000000000000000000 *00000064e50508000000000000000000000000d8e5050800000000000000000000000048e60508 *000000000000000000000000c4e6050800000000000000000000000038e7050800000000000000 *0000000000b0e7050800000000000000000000000024e8050800000000000000000000000094e8 *050800000000000000000000000000e9050800000000000000000000000070e905080000000000 *00000000000000e0e9050800000000000000000000000050ea0508000000000000000000000000 *c4ea05080000000000ed05080000000000000000000000006ced0508e8ed050830970508290000 *0030970508280000002cef0508dcf0050800000000000000000000000050f1050800000000f0f2 *0508000000002cf6050860f605080000000038f705088cf705080000000010ab05080100000010 *ab050800000000c4f705080000000094f80508f8f8050860f9050810fa05080000000000000000 *0000000074970508dc150808940f08080100000078fa0508000000000000000000000000dcfa05 *0810fb05080000000020fc0508000000000000000000000000c4fc050800000000000000000000 *000030fd05084897050800000000309705082000000000000608309705080a0000004c00060800 *0000000000000000000000b8000608000000000402060800000000000000000000000078020608 *00000000a005060800000000e40a060800000000100d0608200d06086c0d060800000000000000 *0000000000d00d060800000000000000000000000030970508290000003c0e0608000000000000 *000000000000ac0e0608000000000000000000000000280f0608000000000000000000000000a0 *0f0608000000000000000000000000309705087d0000000c100608000000000000000000000000 *78100608000000000000000000000000e41006080000000000000000000000005c110608000000 *000000000000000000309705082d000000e0cd050801000000c0110608d4130608e0cd0508ffff *ff7f309705082900000030970508280000007c160608000000000000000000000000309705085b *000000309705085d000000309705082c000000e0160608b0170608f81706082418060830970508 *0a0000007818060800000000549d05089416080800000000b419060800000000549d0508b01608 *0800000000e419060800000000041a0608781c060800000000281d060800000000fc1f06080000 *00000c21060824210608000000000000000000000000e0cd05080a000000882106081c24060890 *250608402606089c26060854270608d02806080000000000000000000000004029060800000000 *00000000000000004897050801000000ac29060800000000d49c0508280f080860180808940f08 *08a8180808280f080800000000d49c0508280f080860180808940f0808b8180808280f08080000 *0000202c0608d42c0608000000000000000000000000802d060800000000142f06080000000000 *00000000000000742f060800000000000000000000000014300608000000000000000000000000 *483106080000000030320608000000000000000000000000a03206080000000000000000000000 *001033060800000000000000000000000084330608000000000000000000000000f03306080000 *0000000000000000000064340608000000000000000000000000d8340608000000000000000000 *00000044350608000000000000000000000000c035060800000000000000000000000030360608 *000000000000000000000000a03606080000000000000000000000000837060800000000000000 *00000000007c370608000000000000000000000000f03706080000000000000000000000006038 *0608000000000000000000000000d8380608000000000000000000000000403906080000000000 *00000000000000b4390608000000000000000000000000203a0608000000000000000000000000 *943a0608000000000000000000000000f43a0608003b0608303b0608883b0608309705082d0000 *00303c0608e43c0608143d0608343d0608143e0608ec3e0608203b0608280f080801000000343f *06087c40060800000000d041060800000000000000000000000044420608000000000000000000 *000000a842060894440608a0440608ac440608b8440608c4440608d0440608dc440608e8440608 *f4440608004506080c4506081845060824450608304506083c4506084c45060883c404c3010000 *00602d0808e0ee060858ef060870ef0608a0ef060830f006083097050800000000309705080100 *000030970508020000003097050803000000309705080400000030970508050000003097050806 *000000309705080700000030970508080000003097050809000000309705080a00000030970508 *0b000000309705080c000000309705080d000000309705080e000000309705080f000000309705 *081000000030970508110000003097050812000000309705081300000030970508140000003097 *050815000000309705081600000030970508170000003097050818000000309705081900000030 *9705081a000000309705081b000000309705081c000000309705081d000000309705081e000000 *309705081f00000030970508200000003097050821000000309705082200000030970508230000 *003097050824000000309705082500000030970508260000003097050827000000309705082800 *00003097050829000000309705082a000000309705082b000000309705082c000000309705082d *000000309705082e000000309705082f0000003097050830000000309705083100000030970508 *320000003097050833000000309705083400000030970508350000003097050836000000309705 *083700000030970508380000003097050839000000309705083a000000309705083b0000003097 *05083c000000309705083d000000309705083e000000309705083f000000309705084000000030 *970508410000003097050842000000309705084300000030970508440000003097050845000000 *3097050846000000309705084700000030970508480000003097050849000000309705084a0000 *00309705084b000000309705084c000000309705084d000000309705084e000000309705084f00 *000030970508500000003097050851000000309705085200000030970508530000003097050854 *000000309705085500000030970508560000003097050857000000309705085800000030970508 *59000000309705085a000000309705085b000000309705085c000000309705085d000000309705 *085e000000309705085f0000003097050860000000309705086100000030970508620000003097 *050863000000309705086400000030970508650000003097050866000000309705086700000030 *970508680000003097050869000000309705086a000000309705086b000000309705086c000000 *309705086d000000309705086e000000309705086f000000309705087000000030970508710000 *003097050872000000309705087300000030970508740000003097050875000000309705087600 *0000309705087700000030970508780000003097050879000000309705087a000000309705087b *000000309705087c000000309705087d000000309705087e000000309705087f00000030970508 *800000003097050881000000309705088200000030970508830000003097050884000000309705 *088500000030970508860000003097050887000000309705088800000030970508890000003097 *05088a000000309705088b000000309705088c000000309705088d000000309705088e00000030 *9705088f0000003097050890000000309705089100000030970508920000003097050893000000 *309705089400000030970508950000003097050896000000309705089700000030970508980000 *003097050899000000309705089a000000309705089b000000309705089c000000309705089d00 *0000309705089e000000309705089f00000030970508a000000030970508a100000030970508a2 *00000030970508a300000030970508a400000030970508a500000030970508a600000030970508 *a700000030970508a800000030970508a900000030970508aa00000030970508ab000000309705 *08ac00000030970508ad00000030970508ae00000030970508af00000030970508b00000003097 *0508b100000030970508b200000030970508b300000030970508b400000030970508b500000030 *970508b600000030970508b700000030970508b800000030970508b900000030970508ba000000 *30970508bb00000030970508bc00000030970508bd00000030970508be00000030970508bf0000 *0030970508c000000030970508c100000030970508c200000030970508c300000030970508c400 *000030970508c500000030970508c600000030970508c700000030970508c800000030970508c9 *00000030970508ca00000030970508cb00000030970508cc00000030970508cd00000030970508 *ce00000030970508cf00000030970508d000000030970508d100000030970508d2000000309705 *08d300000030970508d400000030970508d500000030970508d600000030970508d70000003097 *0508d800000030970508d900000030970508da00000030970508db00000030970508dc00000030 *970508dd00000030970508de00000030970508df00000030970508e000000030970508e1000000 *30970508e200000030970508e300000030970508e400000030970508e500000030970508e60000 *0030970508e700000030970508e800000030970508e900000030970508ea00000030970508eb00 *000030970508ec00000030970508ed00000030970508ee00000030970508ef00000030970508f0 *00000030970508f100000030970508f200000030970508f300000030970508f400000030970508 *f500000030970508f600000030970508f700000030970508f800000030970508f9000000309705 *08fa00000030970508fb00000030970508fc00000030970508fd00000030970508fe0000003097 *0508ff00000048970508f0ffffff48970508f1ffffff48970508f2ffffff48970508f3ffffff48 *970508f4ffffff48970508f5ffffff48970508f6ffffff48970508f7ffffff48970508f8ffffff *48970508f9ffffff48970508faffffff48970508fbffffff48970508fcffffff48970508fdffff *ff48970508feffffff48970508ffffffff48970508000000004897050801000000489705080200 *000048970508030000004897050804000000489705080500000048970508060000004897050807 *00000048970508080000004897050809000000489705080a000000489705080b00000048970508 *0c000000489705080d000000489705080e000000489705080f0000004897050810000000000000 *00000000000000000000000500050005000500050005000d000d000d000d008500850085008500 *850085008d009200920092009200920092009a009200050010000500100004010401040104010c *010200820082008000800080000000020002000200460044006400440044006500450065004500 *650045004500450045006500650065006400640000004500250000001e000000b8a1060824a606 *0850ab060814ae060844b10608f4b4060838b90608000000000000000000000000000000000000 *000000000000cca107082ccb0708cca1070874cb0708a8cb0708d8cb070820cc0708cca1070858 *cc0708cca1070890cc0708cca10708d8cc070824cd0708cca1070874cd0708c4cd070810ce0708 *58ce07089cce0708ccce07080ccf07085ccf0708accf0708cca10708e4cf070828d007086cd007 *08cca10708cca1070890d00708d0d00708cca1070814d1070844d107088cd10708cca10708cca1 *0708ccd10708cca1070818d2070864d20708cca10708000000001400000000000000017a520001 *7c08011b0c0404880100001c0000001c000000205affff7501000000410e088502420d05458604 *870300001c0000003c000000805bffff3302000000410e088502420d05458604870300001c0000 *005c000000a05dffff3e01000000410e088502420d05458604870300001c0000007c000000c05e *ffffe501000000410e088502420d0545860487030000000000000100000001000000010000008e *010000010000009901000001000000a501000001000000b101000001000000bc01000001000000 *ec0100000100000013020000010000001f02000001000000d202000001000000bf030000010000 *00ca0300000c000000e89604080d000000d485070804000000a081040805000000788c04080600 *0000088504080a000000b90500000b000000100000001500000000000000030000008025080802 *000000500300001400000011000000170000009893040811000000809304081200000018000000 *1300000008000000feffff6f20930408ffffff6f02000000f0ffff6f3292040800000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000ffffffff00000000ffffffff00000000000000004c24080800000000000000001697040826 *97040836970408469704085697040866970408769704088697040896970408a6970408b6970408 *c6970408d6970408e6970408f69704080698040816980408269804083698040846980408569804 *0866980408769804088698040896980408a6980408b6980408c6980408d6980408e6980408f698 *040806990408169904082699040836990408469904085699040866990408769904088699040896 *990408a6990408b6990408c6990408d6990408e6990408f6990408069a0408169a0408269a0408 *369a0408469a0408569a0408669a0408769a0408869a0408969a0408a69a0408b69a0408c69a04 *08d69a0408e69a0408f69a0408069b0408169b0408269b0408369b0408469b0408569b0408669b *0408769b0408869b0408969b0408a69b0408b69b0408c69b0408d69b0408e69b0408f69b040806 *9c0408169c0408269c0408369c0408469c0408569c0408669c0408769c0408869c0408969c0408 *a69c0408b69c0408c69c0408d69c0408e69c0408f69c0408069d0408169d0408269d0408369d04 *08469d0408569d0408669d0408769d0408869d0408969d0408a69d040800000000000000000000 *0000004743433a2028474e552920332e332e33202853755345204c696e75782900004743433a20 *28474e552920332e332e33202853755345204c696e75782900004743433a2028474e552920332e *332e33202853755345204c696e75782900004743433a2028474e552920332e332e332028537553 *45204c696e75782900004743433a2028474e552920332e332e33202853755345204c696e757829 *00004743433a2028474e552920332e332e33202853755345204c696e75782900004743433a2028 *474e552920332e332e33202853755345204c696e75782900004743433a2028474e552920332e33 *2e33202853755345204c696e75782900004743433a2028474e552920332e332e33202853755345 *204c696e75782900004743433a2028474e552920332e332e33202853755345204c696e75782900 *004743433a2028474e552920332e332e33202853755345204c696e75782900004743433a202847 *4e552920332e332e33202853755345204c696e75782900004743433a2028474e552920332e332e *33202853755345204c696e75782900004743433a2028474e552920332e332e3320285375534520 *4c696e75782900004743433a2028474e552920332e332e33202853755345204c696e7578290000 *4743433a2028474e552920332e332e33202853755345204c696e75782900004743433a2028474e *552920332e332e33202853755345204c696e75782900004743433a2028474e552920332e332e33 *202853755345204c696e75782900004743433a2028474e552920332e332e33202853755345204c *696e75782900004743433a2028474e552920332e332e33202853755345204c696e757829000047 *43433a2028474e552920332e332e33202853755345204c696e75782900004743433a2028474e55 *2920332e332e33202853755345204c696e75782900004743433a2028474e552920332e332e3320 *2853755345204c696e75782900004743433a2028474e552920332e332e33202853755345204c69 *6e75782900004743433a2028474e552920332e332e33202853755345204c696e75782900004743 *433a2028474e552920332e332e33202853755345204c696e75782900004743433a2028474e5529 *20332e332e33202853755345204c696e75782900004743433a2028474e552920332e332e332028 *53755345204c696e75782900004743433a2028474e552920332e332e33202853755345204c696e *75782900004743433a2028474e552920332e332e33202853755345204c696e7578290000474343 *3a2028474e552920332e332e33202853755345204c696e75782900004743433a2028474e552920 *332e332e33202853755345204c696e75782900004743433a2028474e552920332e332e33202853 *755345204c696e75782900004743433a2028474e552920332e332e33202853755345204c696e75 *782900004743433a2028474e552920332e332e33202853755345204c696e75782900004743433a *2028474e552920332e332e33202853755345204c696e75782900004743433a2028474e55292033 *2e332e33202853755345204c696e75782900004743433a2028474e552920332e332e3320285375 *5345204c696e75782900004743433a2028474e552920332e332e33202853755345204c696e7578 *2900004743433a2028474e552920332e332e33202853755345204c696e75782900004743433a20 *28474e552920332e332e33202853755345204c696e75782900004743433a2028474e552920332e *332e33202853755345204c696e75782900004743433a2028474e552920332e332e332028537553 *45204c696e75782900004743433a2028474e552920332e332e33202853755345204c696e757829 *00004743433a2028474e552920332e332e33202853755345204c696e75782900004743433a2028 *474e552920332e332e33202853755345204c696e75782900004743433a2028474e552920332e33 *2e33202853755345204c696e75782900004743433a2028474e552920332e332e33202853755345 *204c696e757829001c000000020000000000040000000000b09d04082200000000000000000000 *002c000000020002010000040000000000d485070811000000e89604080b000000d49d04082100 *000000000000000000001c00000002007f010000040000000000307d0708b80000000000000000 *0000001c0000000200ad040000040000000000f07d07087501000000000000000000001c000000 *02001b0a0000040000000000707f07083302000000000000000000001c00000002008c0f000004 *0000000000b08107083e01000000000000000000001c0000000200b2140000040000000000f082 *0708e501000000000000000000001c0000000200e7190000040000000000e0840708c800000000 *00000000000000240000000200f51a0000040000000000ea85070804000000fd96040802000000 *00000000000000002100000002007100000091000000790000005f494f5f737464696e5f757365 *6400000000001f00000002007f0100002e030000d00200005f5f666978756e7364666469000000 *00001b0000000200ad0400006e0500003d0300005f5f64697664693300000000001b0000000200 *1b0a0000710500003d0300005f5f6d6f6464693300000000001c00000002008c0f000026050000 *320300005f5f7564697664693300000000001c0000000200b214000035050000320300005f5f75 *6d6f646469330000000000360000000200e71900000e010000450000005f5f6c6962635f637375 *5f66696e69006a0000005f5f6c6962635f6373755f696e697400000000006d0000000200000000 *00040100000000b09d0408d29d04082e2e2f737973646570732f693338362f656c662f73746172 *742e53002f7573722f7372632f7061636b616765732f4255494c442f676c6962632d322e332f63 *737500474e5520415320322e31352e39302e302e312e310001808d00000002001400000004018b *000000d49d0408d49d04081d030000210000007600000001026900000004070213000000010802 *00000000020702640000000407021500000001060247000000020503696e740004050251000000 *0805025f00000008070256000000040502690000000407021c0000000106048f00000001198b00 *0000010503f4850708054f00000000790000000200560000000401af0000002f7573722f737263 *2f7061636b616765732f4255494c442f676c6962632d322e332f63632f6373752f637274692e53 *002f7573722f7372632f7061636b616765732f4255494c442f676c6962632d322e332f63737500 *474e5520415320322e31352e39302e302e312e310001802a030000020066000000040140010000 *e87d0708307d07083502000059010000760000000102696e740004050369000000040703640000 *000407036900000004070313000000010803000000000207031500000001060347000000020503 *510000000805035f000000080704d0010000058f7600000003560000000405043501000005905d *00000005048e000000031c00000001060604072a020000ac00000094032e082602000004090125 *00000002230008f6000000040e0188000000022304085f020000040f0188000000022308084501 *00000410018800000002230c08f401000004110188000000022310089e00000004120188000000 *02231408490200000413018800000002231808210100000414018800000002231c08bf00000004 *15018800000002232008030100000417018800000002232408e401000004180188000000022328 *089e0100000419018800000002232c0809020000041b01680200000223300812020000041d016e *0200000223340857020000041f012500000002233808ab0100000423012500000002233c08be01 *00000425016b00000002234008d000000004290148000000022344086c020000042a014f000000 *02234608b5000000042b0174020000022347083f010000042f018402000002234808c201000004 *38017d00000002234c08e2000000043e019500000002235408e9000000043f0195000000022358 *08530100000441012500000002235c08110100000443018a02000002236000099301000004ad07 *68020000b30100000c04b30adc00000004b4680200000223000aca01000004b56e020000022304 *0acb00000004b925000000022308000504310200000504970000000b840200008e0000000c2c00 *0000000005042a0200000b9a0200008e0000000c2c0000003300042e020000024d5d000000042d *020000024e6400000003f00000000404041a010000025ac202000003dd010000080403d8010000 *0c040d13030000011902000001a703019a020000307d0708e87d070801550e610001a603b70200 *00015c0f620001a803b7020000015b10760001a903a502000000000000001103020000038e6e02 *00000101112e010000038f6e0200000101006a05000002004e0100000401fe010000657f0708f0 *7d07083502000059010000760000000102696e7400040503690000000407036400000004070369 *000000040703130000000108030000000002070315000000010603470000000205035100000008 *05035f000000080704d0010000058f7600000003560000000405043501000005905d0000000504 *8e000000031c00000001060604072a020000ac00000094032e0826020000040901250000000223 *0008f6000000040e0188000000022304085f020000040f01880000000223080845010000041001 *8800000002230c08f401000004110188000000022310089e000000041201880000000223140849 *0200000413018800000002231808210100000414018800000002231c08bf000000041501880000 *0002232008030100000417018800000002232408e401000004180188000000022328089e010000 *0419018800000002232c0809020000041b01680200000223300812020000041d016e0200000223 *340857020000041f012500000002233808ab0100000423012500000002233c08be010000042501 *6b00000002234008d000000004290148000000022344086c020000042a014f00000002234608b5 *000000042b0174020000022347083f010000042f018402000002234808c20100000438017d0000 *0002234c08e2000000043e019500000002235408e9000000043f01950000000223580853010000 *0441012500000002235c08110100000443018a02000002236000099301000004ad0768020000b3 *0100000c04b30adc00000004b4680200000223000aca01000004b56e0200000223040acb000000 *04b925000000022308000504310200000504970000000b840200008e0000000c2c000000000005 *042a0200000b9a0200008e0000000c2c000000330004a0020000024925000000049f020000024a *3a000000042e020000024d5d000000042d020000024e6400000003f0000000040403dd01000008 *0403d80100000c04047b020000027a250000000d12030000b802000008021e010e6c6f7700021e *019a020000022300089a020000021e019a020000022304000f3103000008022901107300022701 *e6020000106c6c00022801b00200000011a702000002290112030000126304000001af02000001 *e10201b0020000f07d0708657f0708015513750001e002b00200002800000013760001e002b002 *00004e00000014630001e202db0200000291741575750001e30231030000740000001576760001 *e302310300009c00000015770001e402b0020000c4000000164f04000063040000297e0708567e *07081775040000177f04000017890400001894040000029168199f04000019aa04000019b50400 *001ac0040000dc0000001acb040000f00000001ad6040000040100001ae1040000180100001aec *040000410100001af7040000540100001a02050000930100001a0d050000bf0100001a17050000 *d30100001b000000001a35050000fc0100001a400500002502000000001c7f7e0708857e07081a *270500004e02000000001d4d0500008502000001060201bb020000021e6e00010502bb0200001e *6400010502bb0200001e7270000105024d0500001f777700010702310300001f6e6e0001080231 *0300001f646400010802310300001f727200010902310300001f643000010a02a50200001f6431 *00010a02a50200001f6e3000010a02a50200001f6e3100010a02a50200001f6e3200010a02a502 *00001f713000010b02a50200001f713100010b02a50200001f6200010c02a50200001f626d0001 *0c02a502000020340500002192020000019802a502000000221f6d310001b602a50200001f6d30 *0001b602a502000000000504bb0200002303020000038e6e0200000101232e010000038f6e0200 *000101006d0500000200fe020000040102030000a3810708707f07083502000059010000760000 *000102696e74000405036900000004070364000000040703690000000407031300000001080300 *0000000207031500000001060347000000020503510000000805035f000000080704d001000005 *8f7600000003560000000405043501000005905d00000005048e000000031c0000000106060407 *2a020000ac00000094032e08260200000409012500000002230008f6000000040e018800000002 *2304085f020000040f018800000002230808450100000410018800000002230c08f40100000411 *0188000000022310089e0000000412018800000002231408490200000413018800000002231808 *210100000414018800000002231c08bf0000000415018800000002232008030100000417018800 *000002232408e401000004180188000000022328089e0100000419018800000002232c08090200 *00041b01680200000223300812020000041d016e0200000223340857020000041f012500000002 *233808ab0100000423012500000002233c08be0100000425016b00000002234008d00000000429 *0148000000022344086c020000042a014f00000002234608b5000000042b017402000002234708 *3f010000042f018402000002234808c20100000438017d00000002234c08e2000000043e019500 *000002235408e9000000043f019500000002235808530100000441012500000002235c08110100 *000443018a02000002236000099301000004ad0768020000b30100000c04b30adc00000004b468 *0200000223000aca01000004b56e0200000223040acb00000004b9250000000223080005043102 *00000504970000000b840200008e0000000c2c000000000005042a0200000b9a0200008e000000 *0c2c000000330004a0020000024925000000049f020000024a3a000000042e020000024d5d0000 *00042d020000024e6400000003f0000000040403dd010000080403d80100000c04047b02000002 *7a250000000d12030000b802000008021e010e6c6f7700021e019a020000022300089a02000002 *1e019a020000022304000f3103000008022901107300022701e6020000106c6c00022801b00200 *000011a702000002290112030000126604000001c102000001fb0201b0020000707f0708a38107 *08015513750001fa02b00200006c02000013760001fa02b00200009202000014630001fc02db02 *000002916c1575750001fd0231030000b80200001576760001fd02310300002003000014770001 *fe02b0020000029170165204000066040000a97f0708ef7f070817780400001782040000188c04 *000048030000199704000019a204000019ad0400001ab80400000291601bc30400005c0300001b *ce040000700300001bd9040000840300001be4040000980300001bef040000ac0300001bfa0400 *00bf0300001b05050000fe0300001b10050000110400001b1a050000250400001c180000001b38 *050000450400001b430500006e04000000001d70800708748007081b2a0500009704000000001e *500500008502000001060201bb020000021f6e00010502bb0200001f6400010502bb0200001f72 *7000010502500500002077770001070231030000206e6e00010802310300002064640001080231 *030000207272000109023103000020643000010a02a502000020643100010a02a5020000206e30 *00010a02a5020000206e3100010a02a5020000206e3200010a02a502000020713000010b02a502 *000020713100010b02a5020000206200010c02a502000020626d00010c02a50200002137050000 *2292020000019802a50200000023206d310001b602a5020000206d300001b602a5020000000005 *04bb0200002403020000038e6e0200000101242e010000038f6e020000010100220500000200b7 *04000004011d040000ee820708b08107083502000059010000760000000102696e740004050369 *000000040703640000000407036900000004070313000000010803000000000207031500000001 *060347000000020503510000000805035f000000080704d0010000058f76000000035600000004 *05043501000005905d00000005048e000000031c00000001060604072a020000ac00000094032e *08260200000409012500000002230008f6000000040e0188000000022304085f020000040f0188 *00000002230808450100000410018800000002230c08f401000004110188000000022310089e00 *000004120188000000022314084902000004130188000000022318082101000004140188000000 *02231c08bf0000000415018800000002232008030100000417018800000002232408e401000004 *180188000000022328089e0100000419018800000002232c0809020000041b0168020000022330 *0812020000041d016e0200000223340857020000041f012500000002233808ab01000004230125 *00000002233c08be0100000425016b00000002234008d000000004290148000000022344086c02 *0000042a014f00000002234608b5000000042b0174020000022347083f010000042f0184020000 *02234808c20100000438017d00000002234c08e2000000043e019500000002235408e900000004 *3f019500000002235808530100000441012500000002235c08110100000443018a020000022360 *00099301000004ad0768020000b30100000c04b30adc00000004b4680200000223000aca010000 *04b56e0200000223040acb00000004b925000000022308000504310200000504970000000b8402 *00008e0000000c2c000000000005042a0200000b9a0200008e0000000c2c000000330004a00200 *00024925000000049f020000024a3a000000042e020000024d5d000000042d020000024e640000 *0003f0000000040403dd010000080403d80100000c040d07030000b802000008021e010e6c6f77 *00021e019a020000022300089a020000021e019a020000022304000f2603000008022901107300 *022701db020000106c6c00022801b00200000011a702000002290107030000121b04000001ca02 *000001200301bb020000b0810708ee8207080155136e00011f03bb020000b5040000136400011f *03bb0200000f05000014070400001b040000cb810708ff810708152d0400001537040000154104 *0000164c04000002917017570400001762040000176d040000167804000002915c168304000002 *916c168e04000002916818990400006a05000018a40400009e05000018af040000b105000018ba *040000f005000016c504000002916418cf0400001c060000193000000018ed0400004506000018 *f80400006e06000000001a1e8207082482070818df0400009706000000001b0505000085020000 *01060201bb020000021c6e00010502bb0200001c6400010502bb0200001c727000010502050500 *001d777700010702260300001d6e6e00010802260300001d646400010802260300001d72720001 *0902260300001d643000010a02a50200001d643100010a02a50200001d6e3000010a02a5020000 *1d6e3100010a02a50200001d6e3200010a02a50200001d713000010b02a50200001d713100010b *02a50200001d6200010c02a50200001d626d00010c02a50200001eec0400001f92020000019802 *a502000000201d6d310001b602a50200001d6d300001b602a502000000000504bb020000210302 *0000038e6e0200000101212e010000038f6e0200000101003105000002004906000004011d0500 *00d5840708f08207083502000059010000760000000102696e7400040503690000000407036400 *000004070369000000040703130000000108030000000002070315000000010603470000000205 *03510000000805035f000000080704d0010000058f760000000356000000040504350100000590 *5d00000005048e000000031c00000001060604072a020000ac00000094032e0826020000040901 *2500000002230008f6000000040e0188000000022304085f020000040f01880000000223080845 *0100000410018800000002230c08f401000004110188000000022310089e000000041201880000 *0002231408490200000413018800000002231808210100000414018800000002231c08bf000000 *0415018800000002232008030100000417018800000002232408e4010000041801880000000223 *28089e0100000419018800000002232c0809020000041b01680200000223300812020000041d01 *6e0200000223340857020000041f012500000002233808ab0100000423012500000002233c08be *0100000425016b00000002234008d000000004290148000000022344086c020000042a014f0000 *0002234608b5000000042b0174020000022347083f010000042f018402000002234808c2010000 *0438017d00000002234c08e2000000043e019500000002235408e9000000043f01950000000223 *5808530100000441012500000002235c08110100000443018a02000002236000099301000004ad *0768020000b30100000c04b30adc00000004b4680200000223000aca01000004b56e0200000223 *040acb00000004b925000000022308000504310200000504970000000b840200008e0000000c2c *000000000005042a0200000b9a0200008e0000000c2c000000330004a002000002492500000004 *9f020000024a3a000000042e020000024d5d000000042d020000024e6400000003f00000000404 *03dd010000080403d80100000c040d07030000b802000008021e010e6c6f7700021e019a020000 *022300089a020000021e019a020000022304000f2603000008022901107300022701db02000010 *6c6c00022801b00200000011a702000002290107030000122a04000001d402000001140301bb02 *0000f0820708d58407080155137500011303bb020000b5060000137600011303bb020000960700 *00147700011503bb0200001408000015160400002a040000f882070858830708163c0400001646 *040000175004000002916c185b04000018660400001871040000197c0400000291601987040000 *029144199204000002915c199d04000002915819a80400000291541ab30400004c0800001abe04 *00005f0800001ac90400009e08000019d404000002915019de04000002914c1b480000001afc04 *0000b10800001a07050000cf08000000001cc0830708c48307081aee040000ed08000000001d14 *0500008502000001060201bb020000021e6e00010502bb0200001e6400010502bb0200001e7270 *00010502140500001f777700010702260300001f6e6e00010802260300001f6464000108022603 *00001f727200010902260300001f643000010a02a50200001f643100010a02a50200001f6e3000 *010a02a50200001f6e3100010a02a50200001f6e3200010a02a50200001f713000010b02a50200 *001f713100010b02a50200001f6200010c02a50200001f626d00010c02a502000020fb04000021 *92020000019802a502000000221f6d310001b602a50200001f6d300001b602a502000000000504 *bb0200002303020000038e6e0200000101232e010000038f6e0200000101000a0100000200f307 *0000040138060000a8850708e08407081903000021000000760000000102696e7400040503ee02 *000002d5370000000469000000040704560000000405056a00000001de020000014a01e0840708 *428507080155066900014c2c0000000b0900000005a00000000135030000012c0150850708a885 *07080155076000000008580300000140a000000006690001412c000000290900000000092c0000 *000ab0000000b20000000b000c010d04b00000000e06030000011aa500000001010ad0000000b2 *0000000b000ef5020000011bc500000001010ae8000000b20000000b000e45030000011cdd0000 *0001010a00010000b20000000b000e24030000011df50000000101007900000002009a08000004 *01c70600002f7573722f7372632f7061636b616765732f4255494c442f676c6962632d322e332f *63632f6373752f6372746e2e53002f7573722f7372632f7061636b616765732f4255494c442f67 *6c6962632d322e332f63737500474e5520415320322e31352e39302e302e312e31000180011100 *10061101120103081b0825081305000000011101100612011101030e1b0e250e130b0000022400 *030e0b0b3e0b000003240003080b0b3e0b0000043400030e3a0b3b0b49133f0c020a0000052600 *4913000000011100100603081b0825081305000000011101100612011101030e1b0e250e130b00 *0002240003080b0b3e0b0000032400030e0b0b3e0b0000041600030e3a0b3b0b49130000050f00 *0b0b49130000060f000b0b00000713010113030e0b0b3a0b3b0b0000080d00030e3a0b3b054913 *380a0000091600030e3a0b3b0b00000a0d00030e3a0b3b0b4913380a00000b0101011349130000 *0c210049132f0b00000d2e0101133f0c030e3a0b3b05270c491311011201400a00000e05000308 *3a0b3b054913020a00000f340003083a0b3b054913020a000010340003083a0b3b054913020600 *00113400030e3a0b3b0b49133f0c3c0c000000011101100612011101030e1b0e250e130b000002 *240003080b0b3e0b0000032400030e0b0b3e0b0000041600030e3a0b3b0b49130000050f000b0b *49130000060f000b0b00000713010113030e0b0b3a0b3b0b0000080d00030e3a0b3b054913380a *0000091600030e3a0b3b0b00000a0d00030e3a0b3b0b4913380a00000b01010113491300000c21 *0049132f0b00000d13010113030e0b0b3a0b3b0500000e0d0003083a0b3b054913380a00000f17 *0101130b0b3a0b3b050000100d0003083a0b3b0549130000111600030e3a0b3b0549130000122e *0101133f0c030e3a0b3b05270c491311011201400a000013050003083a0b3b0549130206000014 *340003083a0b3b054913020a000015340003083a0b3b05491302060000161d0101133113110112 *010000170500311300001834003113020a0000193400311300001a34003113020600001b0b0155 *0600001c0b011101120100001d2e010113030e3a0b3b05270c4913200b00001e050003083a0b3b *05491300001f340003083a0b3b0549130000200b0101130000213400030e3a0b3b054913000022 *0b010000233400030e3a0b3b0b49133f0c3c0c000000011101100612011101030e1b0e250e130b *000002240003080b0b3e0b0000032400030e0b0b3e0b0000041600030e3a0b3b0b49130000050f *000b0b49130000060f000b0b00000713010113030e0b0b3a0b3b0b0000080d00030e3a0b3b0549 *13380a0000091600030e3a0b3b0b00000a0d00030e3a0b3b0b4913380a00000b01010113491300 *000c210049132f0b00000d13010113030e0b0b3a0b3b0500000e0d0003083a0b3b054913380a00 *000f170101130b0b3a0b3b050000100d0003083a0b3b0549130000111600030e3a0b3b05491300 *00122e0101133f0c030e3a0b3b05270c491311011201400a000013050003083a0b3b0549130206 *000014340003083a0b3b054913020a000015340003083a0b3b05491302060000161d0101133113 *11011201000017050031130000180500311302060000193400311300001a34003113020a00001b *34003113020600001c0b01550600001d0b011101120100001e2e010113030e3a0b3b05270c4913 *200b00001f050003083a0b3b054913000020340003083a0b3b0549130000210b01011300002234 *00030e3a0b3b0549130000230b010000243400030e3a0b3b0b49133f0c3c0c0000000111011006 *12011101030e1b0e250e130b000002240003080b0b3e0b0000032400030e0b0b3e0b0000041600 *030e3a0b3b0b49130000050f000b0b49130000060f000b0b00000713010113030e0b0b3a0b3b0b *0000080d00030e3a0b3b054913380a0000091600030e3a0b3b0b00000a0d00030e3a0b3b0b4913 *380a00000b01010113491300000c210049132f0b00000d13010113030e0b0b3a0b3b0500000e0d *0003083a0b3b054913380a00000f170101130b0b3a0b3b050000100d0003083a0b3b0549130000 *111600030e3a0b3b0549130000122e0101133f0c030e3a0b3b05270c491311011201400a000013 *050003083a0b3b05491302060000141d0101133113110112010000150500311300001634003113 *020a000017340031130000183400311302060000190b01550600001a0b011101120100001b2e01 *0113030e3a0b3b05270c4913200b00001c050003083a0b3b05491300001d340003083a0b3b0549 *1300001e0b01011300001f3400030e3a0b3b0549130000200b010000213400030e3a0b3b0b4913 *3f0c3c0c000000011101100612011101030e1b0e250e130b000002240003080b0b3e0b00000324 *00030e0b0b3e0b0000041600030e3a0b3b0b49130000050f000b0b49130000060f000b0b000007 *13010113030e0b0b3a0b3b0b0000080d00030e3a0b3b054913380a0000091600030e3a0b3b0b00 *000a0d00030e3a0b3b0b4913380a00000b01010113491300000c210049132f0b00000d13010113 *030e0b0b3a0b3b0500000e0d0003083a0b3b054913380a00000f170101130b0b3a0b3b05000010 *0d0003083a0b3b0549130000111600030e3a0b3b0549130000122e0101133f0c030e3a0b3b0527 *0c491311011201400a000013050003083a0b3b0549130206000014340003083a0b3b0549130206 *0000151d0101133113110112010000160500311300001705003113020a00001834003113000019 *34003113020a00001a34003113020600001b0b01550600001c0b011101120100001d2e01011303 *0e3a0b3b05270c4913200b00001e050003083a0b3b05491300001f340003083a0b3b0549130000 *200b0101130000213400030e3a0b3b0549130000220b010000233400030e3a0b3b0b49133f0c3c *0c000000011101100612011101030e1b0e250e130b000002240003080b0b3e0b0000031600030e *3a0b3b0b49130000042400030e0b0b3e0b0000052e0101133f0c030e3a0b3b0b270c1101120140 *0a000006340003083a0b3b0b491302060000070b0155060000083400030e3a0b3b0b4913000009 *2600491300000a01010113491300000b210000000c1500270c00000d0f000b0b491300000e3400 *030e3a0b3b0b49133f0c3c0c000000011100100603081b08250813050000005300000002002f00 *00000101fb0e0a0001010101000000012e2e2f737973646570732f693338362f656c6600007374 *6172742e530001000000000502b09d0408032e01301e313a221f03191d56571e1f595802010001 *01160000000200100000000101fb0e0a0001010101000000010000160000000200100000000101 *fb0e0a00010101010000000100002000000002001a0000000101fb0e0a00010101010000000100 *696e69742e6300000000008d0000000200430000000101fb0e0a0001010101000000012f757372 *2f7372632f7061636b616765732f4255494c442f676c6962632d322e332f63632f637375000063 *7274692e530001000000000502d48507080333011e2c1e571e640201000101000502e896040803 *23011e2c3a0205000101000502d49d0408030b011e2c1e571e641e642c2c2d1e1e1e0201000101 *a00000000200740000000101fb0e0a0001010101000000012e2e2f2e2e2f676363002f7573722f *696e636c756465002f7573722f696e636c7564652f6269747300006c6962676363322e63000100 *006c6962676363322e6800010000737464696f2e68000200006c6962696f2e6800020000747970 *65732e680003000000000502307d070803a607010867e203127f0371712e3666642af2532de58e *083ca80222000101160000000200100000000101fb0e0a0001010101000000010000e600000002 *00740000000101fb0e0a0001010101000000012e2e2f2e2e2f676363002f7573722f696e636c75 *6465002f7573722f696e636c7564652f6269747300006c6962676363322e63000100006c696267 *6363322e6800010000737464696f2e68000200006c6962696f2e680002000074797065732e6800 *03000000000502f07d070803e00501e63472753a658203a77e7f373a3b2e494b03ad019b030f71 *383a03183903957e3903eb0163487403907f713074030b5548030a7108584a03fd7e4772d59c84 *038a015557292d373bb8543b56382caa2d8e363c2d08811e032371d580020f0001011600000002 *00100000000101fb0e0a0001010101000000010000fd0000000200740000000101fb0e0a000101 *0101000000012e2e2f2e2e2f676363002f7573722f696e636c756465002f7573722f696e636c75 *64652f6269747300006c6962676363322e63000100006c6962676363322e680001000073746469 *6f2e68000200006c6962696f2e680002000074797065732e680003000000000502707f070803fa *0501e63472753a658203807e7f030b39037539030c393a3a3c494b031271343e493a7003a10139 *0338d372c803f77ec5030a7f3a3a03f900b7c903987e8d72c78e383a03ee00c548030a7f087408 *16ab3a3a373a3a08179d373be2623b64382ce2383c7d3c73086669ac38c6543a48543a03369bec *0213000101160000000200100000000101fb0e0a0001010101000000010000e200000002007400 *00000101fb0e0a0001010101000000012e2e2f2e2e2f676363002f7573722f696e636c75646500 *2f7573722f696e636c7564652f6269747300006c6962676363322e63000100006c696267636332 *2e6800010000737464696f2e68000200006c6962696f2e680002000074797065732e6800030000 *00000502b0810708039f060103f37d089b038d023903f17d713a3b2e494b03ad019b030f71383a *03c9003903e37efd3074030b5548030a7108584a03fd7e4772d59c03af017f383a03c900390397 *7fc557292d373bb8543b56382caa2d8e363c2d08811e0205000101160000000200100000000101 *fb0e0a0001010101000000010000fd0000000200740000000101fb0e0a0001010101000000012e *2e2f2e2e2f676363002f7573722f696e636c756465002f7573722f696e636c7564652f62697473 *00006c6962676363322e63000100006c6962676363322e6800010000737464696f2e6800020000 *6c6962696f2e680002000074797065732e680003000000000502f08207080393060103f27d7f03 *8e023903f27d088d030b393a3a3a3c494b031271343e493a7003a1013903c700d36403eb7e7103 *0a7f3a3a038801b764038c7ea972c78e383a03ee00c548030a7f08740816ab3a3a373a3a03e800 *a964039f7f719d373be2623b64382ce2383c7d3c73086669ac38c6543a48543a02080001011600 *00000200100000000101fb0e0a00010101010000000100008b0000000200590000000101fb0e0a *0001010101000000012f7573722f6c69622f6763632d6c69622f693538362d737573652d6c696e *75782f332e332e332f696e636c7564650000656c662d696e69742e63000000007374646465662e *680001000000000502e084070803c900010865b53b567556c1ba56035a089b0316b7036a2b0310 *d35b08d43883020d0001016b0000000200430000000101fb0e0a0001010101000000012f757372 *2f7372632f7061636b616765732f4255494c442f676c6962632d322e332f63632f637375000063 *72746e2e530001000000000502ea8507080312011e1e1e0201000101000502fd9604080309011e *0201000101000010000000ffffffff0100017c080c0404880100001c00000000000000307d0708 *b8000000410e0885024e0d05458604870300000010000000ffffffff0100017c080c0404880100 *001c00000034000000f07d070875010000410e088502420d05458604870300000010000000ffff *ffff0100017c080c0404880100001c00000068000000707f070833020000410e088502420d0545 *8604870300000010000000ffffffff0100017c080c0404880100001c0000009c000000b0810708 *3e010000410e088502420d05458604870300000010000000ffffffff0100017c080c0404880100 *001c000000d0000000f0820708e5010000410e088502420d05458604870300000010000000ffff *ffff0100017c080c0404880100002000000004010000e084070862000000410e088502420d0546 *83054e87034f86040000001c000000040100005085070858000000410e088502420d0549860483 *0550870373686f727420756e7369676e656420696e7400756e7369676e65642063686172002f75 *73722f7372632f7061636b616765732f4255494c442f676c6962632d322e332f6373750073686f *727420696e74006c6f6e67206c6f6e6720696e74006c6f6e67206c6f6e6720756e7369676e6564 *20696e7400474e55204320332e332e33202853755345204c696e757829005f494f5f737464696e *5f75736564005f494f5f77726974655f707472005f494f5f46494c45005f73686f727462756600 *5f494f5f6275665f656e64005f706f73005f6375725f636f6c756d6e005f6e657874005f5f7061 *6431005f5f7061643200666c6f6174005f494f5f726561645f707472005f494f5f736176655f62 *617365005f756e757365643200444674797065005f494f5f6275665f62617365007374646f7574 *005f5f6f666636345f74005f6c6f636b005f494f5f726561645f62617365005f6d6f6465002f75 *73722f7372632f7061636b616765732f4255494c442f6763632d332e332e332f6f626a2d693538 *362d737573652d6c696e75782f676363005f494f5f6c6f636b5f74005f494f5f736176655f656e *64005f666c61677332005f494f5f6d61726b6572005f6f6c645f6f6666736574005f7362756600 *5f5f6f66665f74006c6f6e6720646f75626c65005f494f5f6261636b75705f62617365005f494f *5f77726974655f6261736500737464696e005f6d61726b657273005f636861696e005f5f666978 *756e7364666469005f666c6167730055444974797065002e2e2f2e2e2f6763632f6c6962676363 *322e63005f494f5f77726974655f656e64005f66696c656e6f005f494f5f726561645f656e6400 *5f767461626c655f6f666673657400776f72645f74797065005f5f756469766d6f64646934005f *5f6362746d7000686967680055534974797065004457756e696f6e005f5f646976646933004457 *737472756374005f5f6d6f64646933005f5f75646976646933005f5f756d6f64646933005f5f6c *6962635f6373755f66696e690073697a655f74005f5f696e69745f61727261795f656e64005f5f *696e69745f61727261795f737461727400656c662d696e69742e63005f5f66696e695f61727261 *795f656e64005f5f6c6962635f6373755f696e6974005f5f66696e695f61727261795f73746172 *740073697a65005f00000093000000060056930457930496000000b80000000600569304579304 *0000000000000000000000000f000000020091080f00000075010000080091089308910c930400 *000000000000000000000026000000020091102600000075010000080091109304911493040000 *000000000000230000004400000006005693045793044e01000075010000060056930457930400 *00000000000000290000004400000006005093045293044e010000750100000600509304529304 *00000000000000006f0000007d000000060050930452930400000000000000003c0000004e0100 *000200915400000000000000003f0000004e010000020091640000000000000000390000004e01 *0000020091600000000000000000440000007e00000001005681000000150100000100561c0100 *004e01000001005600000000000000000c0100002f010000010052000000000000000056000000 *7f0000000100578300000095000000010057ab000000b8000000010057df000000e40000000100 *57270100004e010000010057000000000000000056000000810000000200915083000000b80000 *0002009150d40000004e010000020091500000000000000000f00000004e0100000200915c0000 *00000000000095000000ab000000010057e4000000e9000000010057eb000000ff000000010057 *000000000000000056000000600000000100522f01000038010000010052480100004e01000001 *00520000000000000000560000006c0000000100502a0100003e010000010050480100004e0100 *00010050000000000000000093000000ae000000010050e4000000e90000000100500000000000 *000000000000000f000000020091080f00000033020000080091089308910c9304000000000000 *000000000000260000000200911026000000330200000800911093049114930400000000000000 *00230000004f00000006005693045793047f0000009700000006005693045793049a000000cb00 *00000600569304579304fb0000003801000006005693045793045f010000910100000600569304 *5793040e0200003302000006005693045793040000000000000000290000004b00000006005093 *045293040e02000033020000060050930452930400000000000000003f0000000e020000020091 *6800000000000000003c0000000e020000020091440000000000000000420000000e0200000200 *915c0000000000000000450000000e020000020091580000000000000000480000000e02000002 *00915400000000000000008e010000b60100000100520000000000000000550000006700000001 *00507f00000082000000010050f0000000fb000000010050aa010000c5010000010050d1010000 *eb0100000100500000000000000000e7000000f000000001005000000000000000006d0100000e *020000020091500000000000000000c1000000ce0000000200914c070100000e0200000200914c *00000000000000007100000097000000010056c1000000cb000000010056b80100000e02000001 *005600000000000000007100000098000000010057c1000000cc000000010057ba0100000e0200 *000100570000000000000000040100001e0100000100505f010000680100000100500000000000 *00000000000000150000000200910815000000310000000700569304910c9304310000005c0000 *00080091089304910c93045c00000062000000070091089304579304620000003e010000080091 *089304910c93040000000000000000000000001200000002009110120000003100000008009110 *930891149304310000005c000000080091109304911493045c0000007200000007005093049114 *9304720000003e0100000800911093049114930400000000000000002d00000059000000010056 *5c000000d1000000010056d4000000050100000100560c0100003e010000010056000000000000 *0000fc0000001f01000001005200000000000000003f0000005a00000001005762000000740000 *000100578a00000097000000010057be000000d2000000010057170100003e0100000100570000 *0000000000003f0000005c00000002009158620000009700000002009158b30000003e01000002 *0091580000000000000000740000008a000000010057d4000000d9000000010057db000000ef00 *000001005700000000000000003f000000490000000100521f0100002801000001005238010000 *3e01000001005200000000000000003f000000520000000100501a0100002e0100000100503801 *00003e0100000100500000000000000000720000008d000000010050d4000000d9000000010050 *000000000000000000000000110000000200910811000000460000000700569304910c93044600 *000075000000080091089304910c930475000000990000000600569304579304990000009a0000 *000700910893045793049a0000009c000000080091089304910c93049c000000cb000000070056 *9304910c9304cb0000003401000006005693045793043401000035010000070091089304579304 *3501000037010000080091089304910c9304370100006801000006005693045793046801000091 *01000007009108930457930491010000e5010000080091089304910c9304000000000000000000 *0000000b000000020091100b000000380000000800911093089114930438000000750000000800 *9110930491149304750000008600000007005093049114930486000000cb000000080091109304 *91149304cb000000d4000000070050930491149304d4000000e501000008009110930491149304 *00000000000000006e000000710000000600509304529304950000009800000006005093045293 *04300100003301000006005093045293040000000000000000650100008d010000010052000000 *00000000003e00000050000000010050680000006b000000010050c0000000cb00000001005081 *0100009c010000010050a8010000b10100000100500000000000000000b7000000c00000000100 *5000000000000000005a000000720000000100568f010000e50100000100560000000000000000 *5a0000007300000001005791010000e50100000100570000000000000000d4000000ee00000001 *0050370100003f0100000100500000000000000000300000003d000000010056440000005b0000 *0001005600000000000000007e000000c100000001005600000000000000005600000060000000 *e40000005001000000000000000000007a0000007f000000600100001002000000000000000000 *003f00000049000000d40000003e0100000000000000000000630000006800000037010000e501 *000000000000000000007c0000008c00000091000000c80000000000000000000000002e73796d *746162002e737472746162002e7368737472746162002e696e74657270002e6e6f74652e414249 *2d746167002e6e6f74652e53755345002e68617368002e64796e73796d002e64796e737472002e *676e752e76657273696f6e002e676e752e76657273696f6e5f72002e72656c2e64796e002e7265 *6c2e706c74002e696e6974002e74657874002e66696e69002e726f64617461002e65685f667261 *6d655f686472002e64617461002e65685f6672616d65002e64796e616d6963002e63746f727300 *2e64746f7273002e6a6372002e676f74002e627373002e636f6d6d656e74002e64656275675f61 *72616e676573002e64656275675f7075626e616d6573002e64656275675f696e666f002e646562 *75675f616262726576002e64656275675f6c696e65002e64656275675f6672616d65002e646562 *75675f737472002e64656275675f6c6f63002e64656275675f72616e6765730000000000000000 *00000000000000000000000000000000000000000000000000000000000000000000001b000000 *010000000200000054810408540100001300000000000000000000000100000000000000230000 *000700000002000000688104086801000020000000000000000000000004000000000000003100 *00000700000002000000888104088801000018000000000000000000000004000000000000003c *0000000500000002000000a0810408a00100006803000005000000000000000400000004000000 *420000000b00000002000000088504080805000070070000060000000100000004000000100000 *004a0000000300000002000000788c0408780c0000b90500000000000000000000010000000000 *000052000000ffffff6f020000003292040832120000ee00000005000000000000000200000002 *0000005f000000feffff6f02000000209304082013000060000000060000000200000004000000 *000000006e00000009000000020000008093040880130000180000000500000000000000040000 *0008000000770000000900000002000000989304089813000050030000050000000c0000000400 *000008000000800000000100000006000000e8960408e816000017000000000000000000000004 *000000000000007b00000001000000060000000097040800170000b00600000000000000000000 *0400000004000000860000000100000006000000b09d0408b01d000024e8020000000000000000 *0010000000000000008c0000000100000006000000d4850708d40503001a000000000000000000 *00000400000000000000920000000100000002000000f0850708f0050300284e00000000000000 *00000004000000000000009a000000010000000200000018d40708185403002c00000000000000 *000000000400000000000000a8000000010000000300000060e4070860540300503f0000000000 *00000000002000000000000000ae0000000100000002000000b0230808b09303009c0000000000 *0000000000000400000000000000b800000006000000030000004c2408084c9403002001000006 *000000000000000400000008000000c100000001000000030000006c2508086c95030008000000 *00000000000000000400000000000000c800000001000000030000007425080874950300080000 *0000000000000000000400000000000000cf00000001000000030000007c2508087c9503000400 *000000000000000000000400000000000000d400000001000000030000008025080880950300b8 *01000000000000000000000400000004000000d900000008000000030000004027080840970300 *a017000000000000000000002000000000000000de000000010000000000000000000000409703 *00d005000000000000000000000100000000000000e7000000010000000000000000000000109d *03003801000000000000000000000800000000000000f600000001000000000000000000000048 *9e0300000100000000000000000000010000000000000006010000010000000000000000000000 *489f0300721b000000000000000000000100000000000000120100000100000000000000000000 *00baba0300aa080000000000000000000001000000000000002001000001000000000000000000 *000064c3030036070000000000000000000001000000000000002c010000010000000000000000 *0000009cca03005c01000000000000000000000400000000000000390100000100000030000000 *00000000f8cb03005d030000000000000000000001000000010000004401000001000000000000 *000000000055cf03003c090000000000000000000001000000000000004f010000010000000000 *00000000000091d803007800000000000000000000000100000000000000110000000300000000 *0000000000000009d903005d010000000000000000000001000000000000000100000002000000 *000000000000000058e00300a0f0010025000000dd100000040000001000000009000000030000 *000000000000000000f8d00500f7d4020000000000000000000100000000000000000000000000 *000000000000000000000000000054810408000000000300010000000000688104080000000003 *0002000000000088810408000000000300030000000000a0810408000000000300040000000000 *08850408000000000300050000000000788c040800000000030006000000000032920408000000 *000300070000000000209304080000000003000800000000008093040800000000030009000000 *0000989304080000000003000a0000000000e89604080000000003000b00000000000097040800 *00000003000c0000000000b09d04080000000003000d0000000000d48507080000000003000e00 *00000000f08507080000000003000f000000000018d4070800000000030010000000000060e407 *08000000000300110000000000b02308080000000003001200000000004c240808000000000300 *1300000000006c250808000000000300140000000000742508080000000003001500000000007c *250808000000000300160000000000802508080000000003001700000000004027080800000000 *030018000000000000000000000000000300190000000000000000000000000003001a00000000 *00000000000000000003001b0000000000000000000000000003001c0000000000000000000000 *000003001d0000000000000000000000000003001e0000000000000000000000000003001f0000 *000000000000000000000003002000000000000000000000000000030021000000000000000000 *000000000300220000000000000000000000000003002300000000000000000000000000030024 *00000000000000000000000000030025000100000000000000000000000400f1ff100000000000 *0000000000000400f1ff0100000000000000000000000400f1ff3e000000000000000000000004 *00f1ff4900000000000000000000000400f1ff5400000000000000000000000400f1ff49000000 *00000000000000000400f1ff1000000000000000000000000400f1ff4900000000000000000000 *000400f1ff0100000000000000000000000400f1ff1000000000000000000000000400f1ff0100 *000000000000000000000400f1ff3e00000000000000000000000400f1ff490000000000000000 *0000000400f1ff8700000000000000000000000400f1ff1000000000000000000000000400f1ff *8700000000000000000000000400f1ff0100000000000000000000000400f1ff10000000000000 *00000000000400f1ff0100000000000000000000000400f1ff3e00000000000000000000000400 *f1ff8700000000000000000000000400f1ff9300000000000000000000000400f1ff9a00000000 *000000000000000400f1ffca00000000000000000000000400f1fffa0000000000000000000000 *0400f1ff9a00000000000000000000000400f1ff0100000000000000000000000400f1ff100000 *0000000000000000000400f1ff0100000000000000000000000400f1ff3e000000000000000000 *00000400f1ff9a00000000000000000000000400f1ff05010000d49d04080000000002000d0015 *01000000000000000000000400f1ff200100006c25080800000000010014002e01000074250808 *00000000010015003c0100007c25080800000000010016004901000068e4070800000000010011 *004d01000048270808010000000100180059010000009e04080000000002000d006f010000409e *04080000000002000d001501000000000000000000000400f1ff7b010000702508080000000001 *0014008801000078250808000000000100150095010000482408080000000001001200a3010000 *7c2508080000000001001600af010000b08507080000000002000d00c501000000000000000000 *000400f1ffca00000000000000000000000400f1fffa00000000000000000000000400f1ffc501 *000000000000000000000400f1ff0100000000000000000000000400f1ff100000000000000000 *0000000400f1ff0100000000000000000000000400f1ff3e00000000000000000000000400f1ff *c501000000000000000000000400f1fff501000000000000000000000400f1ff000200004c2708 *080400000001001800130200006ce4070804000000010011002002000074e40708040000000100 *11002d0200007ce4070804000000010011003a020000d09e04080800000001000d0044020000d0 *9e04088000000002000d004f020000589f04080800000001000d0059020000589f040846000000 *02000d006202000014a004080800000001000d006c020000d49f04080800000001000d00760200 *00d49f04083700000002000d007f02000014a004081500000002000d00880200004ca004080800 *000001000d00920200004ca004084400000002000d009b02000094e407080400000001001100a8 *02000098a004080800000001000d00b202000098a004088000000002000d00bd02000020a10408 *0800000001000d00c702000020a104084600000002000d00d0020000a4e4070804000000010011 *00dd02000070a104080800000001000d00e702000070a104088000000002000d00f2020000f8a1 *04080800000001000d00fc020000f8a104084600000002000d0005030000b4e407080400000001 *0011001203000048a204080800000001000d001c03000048a204088000000002000d0027030000 *d0a204080800000001000d0031030000d0a204084600000002000d003a030000c4e40708040000 *00010011004703000020a304080800000001000d005103000020a304088000000002000d005c03 *0000a8a304080800000001000d0066030000a8a304084600000002000d006f030000d4e4070804 *000000010011007c03000004a404080c00000001000d0086030000f0a304080800000001000d00 *8f03000004a404085a00000002000d009a030000b4a404080c00000001000d00a403000068a404 *080800000001000d00ae03000068a404083e00000002000d00b7030000b4a40408140000000200 *0d00c0030000e4e407080400000001001100cd030000ece407080400000001001100da030000f8 *e407080400000001001100e7030000e0a404081000000001000d00f1030000c8a4040808000000 *01000d00fa030000e0a404082a00000002000d0005040000e4a504080c00000001000d000f0400 *0014a504080800000001000d001904000014a504080b00000002000d002204000028a504080800 *000001000d002c04000028a504080f00000002000d003504000040a504080800000001000d003f *04000040a504086900000002000d0048040000b4a504080800000001000d0052040000b4a50408 *2400000002000d005b040000e4a504080e00000002000d006404000000e5070804000000010011 *007104000010e5070804000000010011007e04000004a604080c00000001000d0088040000f4a5 *04080400000001000d009104000004a604085f00000002000d009c04000020e507080400000001 *001100a904000080a604081000000001000d00b304000064a604080c00000001000d00bc040000 *80a604082000000002000d00c7040000d0a804080c00000001000d00d1040000a8a60408080000 *0001000d00db040000a8a604080b00000002000d00e4040000bca604080800000001000d00ee04 *0000bca604087500000002000d00f704000040a704080c00000001000d000105000040a7040827 *00000002000d000a05000074a704080c00000001000d001405000074a704080e00000002000d00 *1d05000090a704080c00000001000d002705000090a704080f00000002000d0030050000aca704 *080c00000001000d003a050000aca704081600000002000d0043050000d0a704080c0000000100 *0d004d050000d0a70408b200000002000d005605000090a804080c00000001000d006005000090 *a804080f00000002000d0069050000aca804080c00000001000d0073050000aca8040816000000 *02000d007c050000d0a804081e00000002000d008505000028e507080400000001001100920500 *0034e5070804000000010011009f05000040e507080400000001001100ac05000050e507080400 *000001001100b905000060e507080400000001001100c6050000f8a804080800000001000d00d0 *050000f8a804085f00000002000d00db05000058a904084000000001000d00e9050000c0bd0408 *0c00000001000d00f3050000e8a904080c00000001000d00fd050000f4a904080c00000001000d *000706000008aa04080800000001000d001106000008aa04080b00000002000d001a0600001caa *04080800000001000d00240600001caa04080f00000002000d002d06000034aa04080800000001 *000d003706000034aa04080b00000002000d004006000048aa04080800000001000d004a060000 *48aa04080f00000002000d005306000060aa04080800000001000d005d06000060aa04087f0000 *0002000d0066060000ecaa04080c00000001000d0070060000ecaa04082a00000002000d007906 *000024ab04080c00000001000d008306000024ab04082a00000002000d008e06000058ab040808 *00000001000d009806000058ab04080b00000002000d00a10600006cab04080800000001000d00 *ab0600006cab04087f00000002000d00b4060000f8ab04080c00000001000d00be060000f8ab04 *082a00000002000d00c706000030ac04080c00000001000d00d106000030ac04082a0000000200 *0d00dc06000064ac04080800000001000d00e606000064ac04080b00000002000d00ef06000078 *ac04080800000001000d00f906000078ac04087f00000002000d000207000004ad04080c000000 *01000d000c07000004ad04082a00000002000d00150700003cad04080c00000001000d001f0700 *003cad04082a00000002000d002a07000070ad04080800000001000d003407000070ad04080b00 *000002000d003d07000084ad04080800000001000d004707000084ad04087f00000002000d0050 *07000010ae04080c00000001000d005a07000010ae04082a00000002000d006307000048ae0408 *0c00000001000d006d07000048ae04082a00000002000d00780700007cae04080800000001000d *00820700007cae04080b00000002000d008b07000090ae04080800000001000d009507000090ae *04087f00000002000d009e0700001caf04080c00000001000d00a80700001caf04082a00000002 *000d00b107000054af04080c00000001000d00bb07000054af04082a00000002000d00c6070000 *88af04080800000001000d00d007000088af04080b00000002000d00d90700009caf0408080000 *0001000d00e30700009caf04087f00000002000d00ec07000028b004080c00000001000d00f607 *000028b004082a00000002000d00ff07000060b004080c00000001000d000908000060b004082a *00000002000d001408000094b004080800000001000d001e08000094b004080b00000002000d00 *27080000acb004080c00000001000d0031080000acb004088501000002000d003a08000034b204 *080c00000002000d004508000040b204080b00000002000d005008000060b20408140000000100 *0d005a08000060b204081400000002000d006508000074b204080b00000002000d006f08000098 *b204081800000001000d0079080000a8b204081000000001000d0083080000a8b2040832000000 *02000d008e080000dcb204080500000002000d00980800003cb804083200000002000d00a30800 *00e4b204080500000002000d00ad08000030b604084b00000002000d00b8080000f4b204080800 *000001000d00c2080000f4b204080b00000002000d00cb08000008b304080800000001000d00d5 *08000008b304087500000002000d00de0800008cb304080c00000001000d00e80800008cb30408 *0e00000002000d00f1080000a8b304080c00000001000d00fb080000a8b304083000000002000d *0004090000e4b304080c00000001000d000e090000e4b304080f00000002000d001709000000b4 *04080c00000001000d002109000000b404088000000002000d002a0900008cb404080c00000001 *000d00340900008cb404080e00000002000d003d090000a8b404080c00000001000d0047090000 *a8b404083000000002000d0050090000e4b404080c00000001000d005a090000e4b404080f0000 *0002000d006309000000b504080c00000001000d006d09000000b504087500000002000d007609 *000084b504080c00000001000d008009000084b504083700000002000d0089090000c8b504080c *00000001000d0093090000c8b504083000000002000d009c09000004b604080c00000001000d00 *a609000004b604081400000002000d00af09000030b604081800000001000d00b909000084b604 *080800000001000d00c309000084b604080b00000002000d00cc09000098b60408080000000100 *0d00d609000098b604080f00000002000d00df090000b4b604080c00000001000d00e9090000b4 *b604087000000002000d00f209000030b704080c00000001000d00fc09000030b7040879000000 *02000d00050a0000b8b704080c00000001000d000f0a0000b8b704082700000002000d00180a00 *00ecb704080c00000001000d00220a0000ecb704080e00000002000d002b0a000008b804080c00 *000001000d00350a000008b804081900000002000d003e0a00003cb804081800000001000d0048 *0a000078b804080800000001000d00520a000078b804080b00000002000d005b0a00008cb80408 *0800000001000d00650a00008cb804086800000002000d006e0a000000b904080c00000001000d *00780a000000b904086e00000002000d00810a00007cb904080c00000001000d008b0a00007cb9 *04085900000002000d00940a0000e4b904080c00000001000d009e0a0000e4b904082b00000002 *000d00a70a00001cba04080c00000001000d00b10a00001cba04088100000002000d00ba0a0000 *acba04080c00000001000d00c40a0000acba04082400000002000d00cd0a0000dcba04080c0000 *0001000d00d70a0000dcba04082400000002000d00e00a00000cbb04080c00000001000d00ea0a *00000cbb04082400000002000d00f30a00003cbb04080c00000001000d00fd0a00003cbb040821 *00000002000d00060b00006cbb04080c00000001000d00100b00006cbb04080e00000002000d00 *190b000088bb04080c00000001000d00230b000088bb04081f00000002000d002c0b0000b4bb04 *080c00000001000d00360b0000b4bb04081900000002000d003f0b0000dcbb04080c0000000100 *0d00490b0000dcbb04081600000002000d00520b000000bc04080c00000001000d005c0b000000 *bc04081600000002000d00650b000024bc04080c00000001000d006f0b000024bc040816000000 *02000d00780b000048bc04080c00000001000d00820b000048bc04081900000002000d008b0b00 *0070bc04080c00000001000d00950b000070bc04081400000002000d009e0b000090bc04080c00 *000001000d00a80b000090bc04081700000002000d00b10b0000b4bc04080c00000001000d00bb *0b0000b4bc04081700000002000d00c40b0000d8bc04080c00000001000d00ce0b0000d8bc0408 *1100000002000d00d70b0000f8bc04080c00000001000d00e10b0000f8bc04081c00000002000d *00ea0b000020bd04080c00000001000d00f40b000020bd04081f00000002000d00fd0b00004cbd *04080c00000001000d00070c00004cbd04081600000002000d00100c000070bd04080c00000001 *000d001a0c000070bd04081d00000002000d00230c00009cbd04080c00000001000d002d0c0000 *9cbd04081800000002000d00360c0000c0bd04081200000002000d003f0c0000d4bd0408080000 *0001000d004f0c000030be04080800000001000d00590c000030be04080800000002000d00620c *000058be04080800000001000d006c0c000058be04080800000002000d00750c000080be040808 *00000001000d007f0c000080be04080800000002000d00880c000000000000000000000400f1ff *00020000502708080400000001001800940c000000000000000000000400f1ff00020000542708 *080400000001001800a00c000000000000000000000400f1ff0002000058270808040000000100 *1800ac0c000000000000000000000400f1ff000200005c2708080400000001001800b80c000000 *000000000000000400f1ffc40c000084c004081800000001000d00000d000094c304080c000000 *01000d000a0d0000ccc004081200000002000d00150d0000ecc004080c00000001000d001f0d00 *00ecc004084300000002000d002a0d00003cc104080c00000001000d00340d00003cc104084500 *000002000d003d0d000090c104080c00000001000d00470d000090c104081100000002000d0050 *0d0000a4c104081800000002000d005b0d0000d0c104081400000001000d00650d0000dcc10408 *0c00000001000d006f0d0000dcc104080c00000002000d00780d0000e8c104080500000002000d *00830d0000fcc104080c00000001000d008d0d0000fcc104083600000002000d00980d000040c2 *04080c00000001000d00a20d000040c204084500000002000d00ab0d000088c204081500000002 *000d00b60d0000b4c204081400000001000d00c00d0000c0c204080c00000001000d00ca0d0000 *c0c204082b00000002000d00d30d0000f8c204080c00000001000d00dd0d0000f8c20408110000 *0002000d00e60d000018c304080c00000001000d00f00d000018c304086d00000002000d00f90d *000094c304084400000002000d00b80c000000000000000000000400f1ffb80c00000000000000 *0000000400f1ffb80c000000000000000000000400f1ffb80c000000000000000000000400f1ff *b80c000000000000000000000400f1ffb80c000000000000000000000400f1ff00020000602708 *080400000001001800b80c000000000000000000000400f1ff020e000000000000000000000400 *f1ff00020000642708080400000001001800020e000000000000000000000400f1ff0e0e000008 *c604080800000001000d00180e0000a4c504080200000002000d00220e0000d4c504082b000000 *02000d002d0e0000b0c504080800000001000d00370e0000b0c504080b00000002000d00400e00 *00d4c504081800000001000d004a0e000008c604082d00000002000d00020e0000000000000000 *00000400f1ff530e0000b4c604080800000001000d005d0e000050c604080200000002000d0067 *0e000080c604082b00000002000d00720e00005cc604080800000001000d007c0e00005cc60408 *0b00000002000d00850e000080c604081800000001000d008f0e0000b4c604082d00000002000d *00020e000000000000000000000400f1ff980e000044c704080800000001000d00a20e000008c7 *04080800000001000d00ac0e000008c704083100000002000d00b50e000044c704081f00000002 *000d00020e000000000000000000000400f1ffbe0e0000e8c704080c00000001000d00c80e0000 *acc704080800000001000d00d20e0000acc704082f00000002000d00dd0e0000e8c70408360000 *0002000d00020e000000000000000000000400f1ffe80e000020c804081800000001000d00280f *0000a0d304081400000001000d00320f000074c804080c00000001000d003c0f000074c8040824 *00000002000d00450f0000a4c804080c00000001000d004f0f0000a4c804082b00000002000d00 *580f0000dcc804080c00000001000d00620f0000dcc804082b00000002000d006b0f000014c904 *080c00000001000d00750f000014c904082b00000002000d007e0f000040c904082b0000000200 *0d00890f000074c904080800000001000d00930f000074c904083c00000002000d009e0f0000b8 *c904080800000001000d00a80f0000b8c904083c00000002000d00b30f0000fcc9040808000000 *01000d00bd0f0000fcc904083c00000002000d00c80f000040ca04080800000001000d00d20f00 *0040ca04088d00000002000d00db0f0000dcca04080c00000001000d00e50f0000dcca04082900 *000002000d00f00f000010cb04080800000001000d00fa0f000010cb04083c00000002000d0005 *10000054cb04080800000001000d000f10000054cb04083c00000002000d001a10000098cb0408 *0800000001000d002410000098cb04083c00000002000d002f100000dccb04080800000001000d *0039100000dccb04088d00000002000d004210000078cc04080c00000001000d004c10000078cc *04082900000002000d0057100000accc04080800000001000d0061100000accc04083c00000002 *000d006c100000f0cc04080800000001000d0076100000f0cc04083c00000002000d0081100000 *34cd04080800000001000d008b10000034cd04083c00000002000d009610000078cd0408080000 *0001000d00a010000078cd04088d00000002000d00a910000014ce04080c00000001000d00b310 *000014ce04082900000002000d00be10000048ce04080800000001000d00c810000048ce04083c *00000002000d00d31000008cce04080800000001000d00dd1000008cce04083c00000002000d00 *e8100000d0ce04080800000001000d00f2100000d0ce04083c00000002000d00fd10000014cf04 *080800000001000d000711000014cf04088d00000002000d0010110000b0cf04080c0000000100 *0d001a110000b0cf04082900000002000d0025110000e4cf04080800000001000d002f110000e4 *cf04083c00000002000d003a11000028d004080800000001000d004411000028d004083c000000 *02000d004f1100006cd004080800000001000d00591100006cd004083c00000002000d00641100 *00b0d004080800000001000d006e110000b0d004088c00000002000d007711000048d104080c00 *000001000d008111000048d104082900000002000d008c11000080d104080c00000001000d0096 *11000080d104085b00000002000d009f110000e8d104080c00000001000d00a9110000e8d10408 *6200000002000d00b211000058d204080c00000001000d00bc11000058d204086200000002000d *00c5110000c8d204080c00000001000d00cf110000c8d204086200000002000d00d81100002cd3 *04085f00000002000d00020e000000000000000000000400f1ff020e0000000000000000000004 *00f1ff020e000000000000000000000400f1ff020e000000000000000000000400f1ff020e0000 *00000000000000000400f1ff020e000000000000000000000400f1ff020e000000000000000000 *000400f1ff020e000000000000000000000400f1ffe311000000000000000000000400f1ff0002 *0000682708080400000001001800ef11000000000000000000000400f1ff000200006c27080804 *00000001001800fb11000000000000000000000400f1ff00020000702708080400000001001800 *0712000000000000000000000400f1ff0002000074270808040000000100180013120000000000 *00000000000400f1ff000200007827080804000000010018001f12000000000000000000000400 *f1ff000200007c27080804000000010018002b12000000000000000000000400f1ff37120000e4 *d604080800000001000d0041120000e4d604082a00000002000d002b1200000000000000000000 *0400f1ff4a12000010d704080800000001000d007e12000064d904080c00000001000d00881200 *005cd704080c00000001000d00921200005cd704082900000002000d009d12000094d704080c00 *000001000d00a712000094d704083200000002000d00b0120000d4d704080c00000001000d00ba *120000d4d704081200000002000d00c3120000f4d704080c00000001000d00cd120000f4d70408 *1e00000002000d00d612000020d804080c00000001000d00e012000020d804082300000002000d *00e912000054d804081000000001000d00f312000054d804082300000002000d00fe12000088d8 *04081000000001000d000813000088d804084c00000002000d0013130000dcd804080800000001 *000d001d130000dcd804080600000002000d0026130000f0d804080c00000001000d0030130000 *f0d804086800000002000d003913000064d904081800000002000d002b12000000000000000000 *000400f1ff42130000fcd904081400000001000d004c130000acd904080900000002000d005713 *0000c0d904080800000001000d0061130000c0d904081100000002000d006a130000d4d9040812 *00000002000d002b12000000000000000000000400f1ff2b12000000000000000000000400f1ff *2b12000000000000000000000400f1ff2b12000000000000000000000400f1ff2b120000000000 *00000000000400f1ff000200008027080804000000010018002b12000000000000000000000400 *f1ff75130000f0da04080800000001000d007f130000f0da04086300000002000d008813000000 *000000000000000400f1ff00020000842708080400000001001800941300000000000000000000 *0400f1ff00020000882708080400000001001800a013000000000000000000000400f1ff000200 *008c2708080400000001001800ac13000000000000000000000400f1ff00020000902708080400 *000001001800b813000000000000000000000400f1ff00020000942708080400000001001800c4 *13000000000000000000000400f1ff00020000982708080400000001001800d013000000000000 *000000000400f1ff000200009c2708080400000001001800d013000000000000000000000400f1 *ffdc130000e0de04080800000001000d00e613000050de04080200000002000d00f0130000a8de *04082d00000002000d00fb1300005cde04080800000001000d00051400005cde04083100000002 *000d000e140000a8de04081800000001000d0018140000e0de04082d00000002000d0021140000 *00000000000000000400f1ffb80c000000000000000000000400f1ff2f14000044e70408080000 *0001000d007214000014e804080c00000001000d007c1400008ce704080800000001000d008614 *00008ce704080b00000002000d008f140000a0e704080800000001000d0099140000a0e704081d *00000002000d00a2140000c8e704080800000001000d00ac140000c8e704080f00000002000d00 *b5140000d8e704080e00000002000d00c0140000e8e704080b00000002000d00cb14000008e804 *081400000001000d00d514000014e804084200000002000d00b80c000000000000000000000400 *f1ffb80c000000000000000000000400f1ffde14000058e804080800000001000d00b80c000000 *000000000000000400f1ffb80c000000000000000000000400f1ffb80c00000000000000000000 *0400f1ffb80c000000000000000000000400f1ffb80c000000000000000000000400f1ffb80c00 *0000000000000000000400f1ffb80c000000000000000000000400f1ffb80c0000000000000000 *00000400f1ffb80c000000000000000000000400f1ffb80c000000000000000000000400f1ffb8 *0c000000000000000000000400f1ffb80c000000000000000000000400f1ffb80c000000000000 *000000000400f1ffb80c000000000000000000000400f1ffb80c000000000000000000000400f1 *ffb80c000000000000000000000400f1ffb80c000000000000000000000400f1ffb80c00000000 *0000000000000400f1ffb80c000000000000000000000400f1ffb80c0000000000000000000004 *00f1ff1b15000010eb04080800000001000d002515000010eb04083100000002000d00020e0000 *00000000000000000400f1ff2e15000044eb04080800000001000d00020e000000000000000000 *000400f1ff6415000018ec04080800000001000d006e150000dceb04080800000001000d007815 *0000dceb04083100000002000d008115000018ec04081f00000002000d00020e00000000000000 *0000000400f1ff8a15000038ec04080400000001000d00bf15000054ed04081000000001000d00 *c915000088ec04080800000001000d00d315000088ec04082f00000002000d00de150000c4ec04 *080c00000001000d00e8150000c4ec04084500000002000d00f115000018ed04080c0000000100 *0d00fb15000018ed04082a00000002000d000616000054ed04084a00000002000d00020e000000 *000000000000000400f1ff11160000a0ed04080400000001000d0046160000bcee040810000000 *01000d0050160000f0ed04080800000001000d005a160000f0ed04082f00000002000d00651600 *002cee04080c00000001000d006f1600002cee04084500000002000d007816000080ee04080c00 *000001000d008216000080ee04082a00000002000d008d160000bcee04084a00000002000d0002 *0e000000000000000000000400f1ff9816000084ef04080800000001000d00a216000020ef0408 *0200000002000d00ac16000050ef04082b00000002000d00b71600002cef04080800000001000d *00c11600002cef04080b00000002000d00ca16000050ef04081800000001000d00d416000084ef *04082d00000002000d00020e000000000000000000000400f1ffdd16000030f004080800000001 *000d00e7160000ccef04080200000002000d00f1160000fcef04082b00000002000d00fc160000 *d8ef04080800000001000d0006170000d8ef04080b00000002000d000f170000fcef0408180000 *0001000d001917000030f004082d00000002000d00020e000000000000000000000400f1ff2217 *000060f004080400000001000d005717000028f104081000000001000d0061170000b0f0040808 *00000001000d006b170000b0f004082f00000002000d0076170000ecf004080c00000001000d00 *80170000ecf004082900000002000d008b17000028f104084a00000002000d00020e0000000000 *00000000000400f1ff9617000074f104080400000001000d00cb1700003cf20408100000000100 *0d00d5170000c4f104080800000001000d00df170000c4f104082f00000002000d00ea17000000 *f204080c00000001000d00f417000000f204082900000002000d00ff1700003cf204084a000000 *02000d00020e000000000000000000000400f1ff0a18000004f304080800000001000d00141800 *00a0f204080200000002000d001e180000d0f204082b00000002000d0029180000acf204080800 *000001000d0033180000acf204080b00000002000d003c180000d0f204081800000001000d0046 *18000004f304082d00000002000d00020e000000000000000000000400f1ff4f180000b0f30408 *0800000001000d00591800004cf304080200000002000d00631800007cf304082b00000002000d *006e18000058f304080800000001000d007818000058f304080b00000002000d00811800007cf3 *04081800000001000d008b180000b0f304082d00000002000d00020e0000000000000000000004 *00f1ff94180000e0f304080800000001000d00c9180000e4f404081000000001000d00d3180000 *34f404080800000001000d00dd18000034f404082f00000002000d00e818000070f404080c0000 *0001000d00f218000070f404082900000002000d00fd180000a8f404080c00000001000d000719 *0000a8f404082900000002000d0012190000e4f404085d00000002000d00020e00000000000000 *0000000400f1ff1d190000c0f504080800000001000d00271900005cf504080200000002000d00 *311900008cf504082b00000002000d003c19000068f504080800000001000d004619000068f504 *080b00000002000d004f1900008cf504081800000001000d0059190000c0f504082d0000000200 *0d002b12000000000000000000000400f1ff6219000064f604081400000001000d006c1900001c *f604080b00000002000d007719000030f604080800000001000d008119000030f6040807000000 *02000d008a19000038f604081500000002000d002b12000000000000000000000400f1ff951900 *0048f704081400000001000d009f19000090f604080b00000002000d00aa190000a4f604080800 *000001000d00b4190000a4f604083700000002000d00bd190000e4f604080800000001000d00c7 *190000e4f604081800000002000d00d019000004f704080800000001000d00da19000004f70408 *1500000002000d00e31900001cf704081500000002000d00c413000000000000000000000400f1 *ffee19000048f704080400000001000d00211a000074f704080c00000001000d002b1a000074f7 *04086b00000002000d00c413000000000000000000000400f1ffc4130000000000000000000004 *00f1ffc413000000000000000000000400f1ffc413000000000000000000000400f1ffc4130000 *00000000000000000400f1ffc413000000000000000000000400f1ffc413000000000000000000 *000400f1ffc413000000000000000000000400f1ffc413000000000000000000000400f1ffc413 *000000000000000000000400f1ffb80c000000000000000000000400f1ff341a000044f8040804 *00000001000d00b80c000000000000000000000400f1ff711a000008f904080800000001000d00 *7b1a0000e0f804080800000001000d00851a0000e0f804082000000002000d008e1a000008f904 *081d00000002000d00b80c000000000000000000000400f1ff971a000084f90408080000000100 *0d00a11a00005cf904080800000001000d00ab1a00005cf904082000000002000d00b41a000084 *f904081d00000002000d00b80c000000000000000000000400f1ffbd1a000000fa040808000000 *01000d00c71a0000d8f904080800000001000d00d11a0000d8f904082000000002000d00da1a00 *0000fa04081d00000002000d00b80c000000000000000000000400f1ffe31a00007cfa04080800 *000001000d00ed1a000054fa04080800000001000d00f71a000054fa04082000000002000d0000 *1b00007cfa04081d00000002000d00b80c000000000000000000000400f1ff091b000060fb0408 *0800000001000d00131b0000c8fa04080800000002000d001e1b0000d0fa04080800000002000d *00291b0000d8fa04080800000002000d00331b0000f8fa04081800000001000d003d1b0000f8fa *04081200000002000d00481b00000cfb04080800000002000d00531b00002cfb04081800000001 *000d005d1b000034fb04080800000001000d00671b000034fb04082400000002000d00701b0000 *60fb04082000000002000d00b80c000000000000000000000400f1ff791b000044fc0408080000 *0001000d00831b0000acfb04080800000002000d008e1b0000b4fb04080800000002000d00991b *0000bcfb04080800000002000d00a31b0000dcfb04081800000001000d00ad1b0000dcfb040812 *00000002000d00b81b0000f0fb04080800000002000d00c31b000010fc04081800000001000d00 *cd1b000018fc04080800000001000d00d71b000018fc04082400000002000d00e01b000044fc04 *082000000002000d00b80c000000000000000000000400f1ffe91b000004fd0408080000000100 *0d00f31b000090fc04080e00000002000d00fe1b0000a0fc04080800000002000d00091c0000a8 *fc04080e00000002000d00141c0000d0fc04081800000001000d001e1c0000d8fc040808000000 *01000d00281c0000d8fc04082100000002000d00311c000004fd04081d00000002000d00b80c00 *0000000000000000000400f1ffb80c000000000000000000000400f1ffb80c0000000000000000 *00000400f1ffb80c000000000000000000000400f1ffb80c000000000000000000000400f1ffb8 *0c000000000000000000000400f1ffb80c000000000000000000000400f1ffb80c000000000000 *000000000400f1ffb80c000000000000000000000400f1ffb80c000000000000000000000400f1 *ffb80c000000000000000000000400f1ffb80c000000000000000000000400f1ffb80c00000000 *0000000000000400f1ffb80c000000000000000000000400f1ffb80c0000000000000000000004 *00f1ffb80c000000000000000000000400f1ffb80c000000000000000000000400f1ffb80c0000 *00000000000000000400f1ffb80c000000000000000000000400f1ffb80c000000000000000000 *000400f1ffb80c000000000000000000000400f1ffb80c000000000000000000000400f1ffb80c *000000000000000000000400f1ffb80c000000000000000000000400f1ffb80c00000000000000 *0000000400f1ffb80c000000000000000000000400f1ffb80c000000000000000000000400f1ff *b80c000000000000000000000400f1ffb80c000000000000000000000400f1ffb80c0000000000 *00000000000400f1ff3a1c00001cfe04080800000001000d00441c00001cfe0408310000000200 *0d00020e000000000000000000000400f1ff4d1c000050fe04080800000001000d00020e000000 *000000000000000400f1ff020e000000000000000000000400f1ff7c1c000038ff040804000000 *01000d00b81c000064ff04080c00000001000d00c21c000064ff04083a00000002000d00020e00 *0000000000000000000400f1ffcb1c0000a0ff04080400000001000d000f1d0000ccff04080c00 *000001000d00191d0000ccff04080b00000002000d00020e000000000000000000000400f1ff22 *1d0000380005080800000001000d002c1d0000fcff04080800000001000d00361d0000fcff0408 *3100000002000d003f1d0000380005081f00000002000d00020e000000000000000000000400f1 *ff481d0000b80005080800000001000d00521d00007c0005080800000001000d005c1d00007c00 *05083100000002000d00651d0000b80005081f00000002000d00020e0000000000000000000004 *00f1ff6e1d0000380105080800000001000d00781d0000fc0005080800000001000d00821d0000 *fc0005083100000002000d008b1d0000380105081f00000002000d00c413000000000000000000 *000400f1ff941d0000580105080800000001000d00b80c000000000000000000000400f1ffb71d *0000cc0105080400000001000d00f41d0000240205080800000001000d00fe1d00002402050808 *00000002000d00b80c000000000000000000000400f1ff071e0000740305081400000001000d00 *111e00005c0205080e00000002000d001c1e00006c0205080e00000002000d00271e00007c0205 *081100000002000d00321e0000a40205081400000001000d003c1e0000a4020508140000000200 *0d00471e0000cc0205081400000001000d00511e0000d40205080800000001000d005b1e0000d4 *0205083b00000002000d00641e0000100305080700000002000d006f1e00001803050807000000 *02000d007a1e0000340305081400000001000d00841e00003c0305080800000001000d008e1e00 *003c0305081200000002000d00971e0000500305080700000002000d00a21e0000580305080700 *000002000d00b80c000000000000000000000400f1ffad1e0000e00305080800000001000d00b7 *1e0000940305080800000001000d00c11e0000940305084200000002000d00ca1e0000e0030508 *1700000002000d00b80c000000000000000000000400f1ffd31e0000bc0405081800000001000d *00dd1e0000340405080e00000002000d00e81e0000440405080e00000002000d00f31e00005404 *05080e00000002000d00fd1e00007c0405081800000001000d00071f00007c0405081500000002 *000d00121f0000940405080e00000002000d00b80c000000000000000000000400f1ff1d1f0000 *800505081800000001000d00271f0000f80405080e00000002000d00321f0000080505080e0000 *0002000d003d1f0000180505080e00000002000d00471f0000400505081800000001000d00511f *0000400505081500000002000d005c1f0000580505080e00000002000d00b80c00000000000000 *0000000400f1ff671f0000440605081800000001000d00711f0000bc0505080e00000002000d00 *7c1f0000cc0505080e00000002000d00871f0000dc0505080e00000002000d00911f0000040605 *081800000001000d009b1f0000040605081500000002000d00a61f00001c0605080e0000000200 *0d00b80c000000000000000000000400f1ffb11f0000080705081800000001000d00bb1f000080 *0605080e00000002000d00c61f0000900605080e00000002000d00d11f0000a00605080e000000 *02000d00db1f0000c80605081800000001000d00e51f0000c80605081500000002000d00f01f00 *00e00605080e00000002000d00b80c000000000000000000000400f1fffb1f0000640705080800 *000001000d00052000003c0705080800000001000d000f2000003c0705082000000002000d0018 *200000640705081d00000002000d00b80c000000000000000000000400f1ff21200000e0070508 *0800000001000d002b200000b80705080800000001000d0035200000b80705082000000002000d *003e200000e00705081d00000002000d00b80c000000000000000000000400f1ff47200000b809 *05081400000001000d0051200000200805080800000001000d005b200000200805082d00000002 *000d0064200000580805080800000001000d006e200000580805081700000002000d0077200000 *700805080f00000002000d0082200000800805080e00000002000d008d200000a4080508140000 *0001000d0097200000a40805080c00000002000d00a2200000b00805080e00000002000d00ad20 *0000c80805080800000001000d00b7200000c80805082d00000002000d00c02000000009050808 *00000001000d00ca200000000905081700000002000d00d3200000200905080800000001000d00 *dd200000200905082900000002000d00e6200000540905080800000001000d00f0200000540905 *081400000002000d00f9200000680905081400000002000d000421000090090508140000000100 *0d000e210000900905081400000002000d00020e000000000000000000000400f1ff020e000000 *000000000000000400f1ff192100002c0a05080400000001000d00020e00000000000000000000 *0400f1ff020e000000000000000000000400f1ff020e000000000000000000000400f1ff020e00 *0000000000000000000400f1ff020e000000000000000000000400f1ff020e0000000000000000 *00000400f1ff020e000000000000000000000400f1ff020e000000000000000000000400f1ff02 *0e000000000000000000000400f1ff020e000000000000000000000400f1ff020e000000000000 *000000000400f1ff020e000000000000000000000400f1ff020e000000000000000000000400f1 *ff020e000000000000000000000400f1ff020e000000000000000000000400f1ff020e00000000 *0000000000000400f1ff020e000000000000000000000400f1ff020e0000000000000000000004 *00f1ff020e000000000000000000000400f1ff020e000000000000000000000400f1ff020e0000 *00000000000000000400f1ff020e000000000000000000000400f1ff020e000000000000000000 *000400f1ff020e000000000000000000000400f1ff020e000000000000000000000400f1ff020e *000000000000000000000400f1ff020e000000000000000000000400f1ff020e00000000000000 *0000000400f1ff020e000000000000000000000400f1ff020e000000000000000000000400f1ff *020e000000000000000000000400f1ff020e000000000000000000000400f1ff020e0000000000 *00000000000400f1ff020e000000000000000000000400f1ff020e000000000000000000000400 *f1ff020e000000000000000000000400f1ff020e000000000000000000000400f1ff020e000000 *000000000000000400f1ff020e000000000000000000000400f1ff020e00000000000000000000 *0400f1ff020e000000000000000000000400f1ff020e000000000000000000000400f1ffc41300 *0000000000000000000400f1ffb80c000000000000000000000400f1ff612100002c0d05080800 *000001000d006b210000f00c05080800000001000d0075210000f00c05083100000002000d007e *2100002c0d05081f00000002000d00b80c000000000000000000000400f1ff872100004c0d0508 *0400000001000d00c4210000ac0d05080800000001000d00ce2100008c0d05080800000001000d *00d82100008c0d05081500000002000d00e1210000ac0d05081e00000002000d00b80c00000000 *0000000000000400f1ffea210000d00e05081400000001000d00f4210000e40d05080e00000002 *000d00ff210000f40d05080e00000002000d000a220000180e05081400000001000d0014220000 *180e05080c00000002000d001f220000240e05080e00000002000d002a2200003c0e0508080000 *0001000d00342200003c0e05082800000002000d003d2200006c0e05080800000001000d004722 *00006c0e05081400000002000d0050220000800e05081400000002000d005b220000a80e050814 *00000001000d0065220000a80e05081400000002000d007022000000000000000000000400f1ff *b80c000000000000000000000400f1ff84220000cc0f05081400000001000d008e220000600f05 *080b00000002000d0099220000740f05080800000001000d00a3220000740f0508080000000200 *0d00ac220000840f05080800000001000d00b6220000840f05081900000002000d00bf220000a0 *0f05081500000002000d00b80c000000000000000000000400f1ffca2200002410050808000000 *01000d00d4220000ec0f05080800000001000d00de220000ec0f05083000000002000d00e72200 *00241005081700000002000d00f022000000000000000000000400f1ff00020000a02708080400 *000001001800fc22000000000000000000000400f1ff00020000a4270808040000000100180007 *23000000000000000000000400f1ff00020000a827080804000000010018001223000000000000 *000000000400f1ff00020000ac27080804000000010018001223000000000000000000000400f1 *ff1223000000000000000000000400f1ff1e23000000000000000000000400f1ff00020000b027 *080804000000010018001e23000000000000000000000400f1ff2a230000e81305080800000001 *000d0034230000101505080c00000001000d003e230000501305080200000002000d0048230000 *801305082b00000002000d00532300005c1305080800000001000d005d2300005c1305080b0000 *0002000d0066230000801305081800000001000d0070230000b41305080800000001000d007a23 *0000b41305082c00000002000d0083230000e81305083000000002000d008e2300001814050805 *00000002000d0098230000dc1405082700000002000d00a3230000201405080200000002000d00 *ad2300003c1405080800000002000d00b82300003c1405081800000001000d00c22300004c1405 *080800000001000d00cc2300004c1405080900000002000d00d523000060140508080000000100 *0d00df230000601405081500000002000d00e8230000801405080800000001000d00f223000080 *1405084400000002000d00fb230000dc1405081800000001000d00052400001015050833000000 *02000d001024000000000000000000000400f1ff00020000b427080804000000010018001b2400 *0000000000000000000400f1ff00020000b8270808040000000100180027240000000000000000 *00000400f1ff00020000bc27080804000000010018003324000000000000000000000400f1ff00 *020000c027080804000000010018003e24000000000000000000000400f1ff00020000c4270808 *04000000010018004924000000000000000000000400f1ff00020000c827080804000000010018 *005524000000000000000000000400f1ff5524000000000000000000000400f1ff61240000b018 *05080800000001000d006b240000741805080800000001000d0075240000741805083100000002 *000d007e240000b01805081400000002000d005524000000000000000000000400f1ff87240000 *201905080800000001000d0091240000e41805080800000001000d009b240000e4180508310000 *0002000d00a4240000201905081400000002000d005524000000000000000000000400f1ff5524 *000000000000000000000400f1ff5524000000000000000000000400f1ff552400000000000000 *0000000400f1ff5524000000000000000000000400f1ffad240000941905080400000001000d00 *e02400007c1b05082000000001000d00ea240000bc1905080800000001000d00f4240000bc1905 *080b00000002000d00fd240000d01905080800000001000d0007250000d01905080b0000000200 *0d0010250000e41905080800000001000d001a250000e41905080b00000002000d0023250000f8 *1905080800000001000d002d250000f81905080b00000002000d0036250000101a05080c000000 *01000d0040250000101a05087d00000002000d0049250000901a05080c00000002000d00542500 *00a41a05080800000001000d005e250000a41a05080b00000002000d0067250000b01a05081a00 *000002000d0072250000d41a05080800000001000d007c250000d41a05080b00000002000d0085 *250000e01a05081a00000002000d0090250000041b05080800000001000d009a250000041b0508 *0b00000002000d00a3250000101b05081a00000002000d00ae250000341b05080800000001000d *00b8250000341b05080b00000002000d00c1250000401b05081a00000002000d00552400000000 *0000000000000400f1ff00020000cc2708080400000001001800cc250000000000000000000004 *00f1ff00020000d02708080400000001001800d825000000000000000000000400f1ff00020000 *d42708080400000001001800e425000000000000000000000400f1ff00020000d8270808040000 *0001001800ee25000000000000000000000400f1ff00020000dc2708080400000001001800fa25 *000000000000000000000400f1ff00020000e02708080400000001001800062600000000000000 *0000000400f1ff00020000e427080804000000010018001226000000000000000000000400f1ff *00020000e827080804000000010018001e26000000000000000000000400f1ff00020000ec2708 *0804000000010018002a26000000000000000000000400f1ff35260000881f0508040000000100 *0d0062260000002005080800000001000d006c260000002005083900000002000d002a26000000 *000000000000000400f1ff2a26000000000000000000000400f1ff00020000f027080804000000 *010018002a26000000000000000000000400f1ff752600002c2305081800000001000d007f2600 *00042105080800000001000d0089260000042105080b00000002000d0092260000182105080800 *000001000d009c260000182105083500000002000d00a5260000582105080800000001000d00af *260000582105080f00000002000d00b8260000702105080800000001000d00c226000070210508 *3500000002000d00cb260000b02105080800000001000d00d5260000b02105080c00000002000d *00de260000bc2105082e00000002000d00e9260000f42105080800000001000d00f3260000f421 *05080b00000002000d00fc260000082205080800000001000d0006270000082205083500000002 *000d000f270000482205080800000001000d0019270000482205080f00000002000d0022270000 *582205082800000002000d002d270000882205080800000001000d0037270000882205080b0000 *0002000d00402700009c2205080800000001000d004a2700009c2205083500000002000d005327 *0000dc2205080800000001000d005d270000dc2205080f00000002000d0066270000ec22050828 *00000002000d002a26000000000000000000000400f1ff71270000802405080800000001000d00 *7b270000682305080800000001000d0085270000682305080b00000002000d008e2700007c2305 *080800000001000d00982700007c2305083a00000002000d00a1270000c0230508080000000100 *0d00ab270000c02305082800000002000d00b4270000f02305080800000001000d00be270000f0 *2305082500000002000d00c7270000202405080800000001000d00d1270000202405082a000000 *02000d00da270000542405080800000001000d00e4270000542405082100000002000d00ed2700 *00802405081100000002000d00f627000000000000000000000400f1ff00020000f42708080400 *000001001800f627000000000000000000000400f1ff0128000000000000000000000400f1ff00 *020000f827080804000000010018000d28000000000000000000000400f1ff00020000fc270808 *04000000010018000d28000000000000000000000400f1ff19280000942505080800000001000d *004c280000682605080800000001000d00562800007c2705080c00000001000d00602800005428 *05081800000001000d006a280000042605080800000001000d0074280000042605085c00000002 *000d007d280000682605082a00000002000d00882800009c2605080800000001000d0092280000 *9c2605080b00000002000d009b280000a82605082100000002000d00a6280000d4260508080000 *0001000d00b0280000d42605080b00000002000d00b9280000e02605082100000002000d00c428 *00000c2705080800000001000d00ce2800000c2705080b00000002000d00d72800001827050821 *00000002000d00e2280000542705081800000001000d00ec2800005c2705080800000001000d00 *f62800005c2705081400000002000d00ff2800007c2705081e00000002000d000a2900009c2705 *080500000002000d0014290000542805084000000002000d001f290000ac270508080000000100 *0d0029290000ac2705085c00000002000d0032290000102805080800000001000d003c29000010 *2805082a00000002000d000d28000000000000000000000400f1ff0d2800000000000000000000 *0400f1ff0d28000000000000000000000400f1ff0d28000000000000000000000400f1ff472900 *0000000000000000000400f1ff0002000000280808040000000100180053290000000000000000 *00000400f1ff000200000428080804000000010018005e29000000000000000000000400f1ff00 *0200000828080804000000010018006a29000000000000000000000400f1ff000200000c280808 *04000000010018007529000000000000000000000400f1ff000200001028080804000000010018 *008129000000000000000000000400f1ff000200001428080804000000010018008d2900000000 *0000000000000400f1ff0002000018280808040000000100180099290000000000000000000004 *00f1ff000200001c2808080400000001001800a529000000000000000000000400f1ff00020000 *202808080400000001001800b129000000000000000000000400f1ff0002000024280808040000 *0001001800bd29000000000000000000000400f1ff00020000282808080400000001001800c929 *000000000000000000000400f1ff000200002c2808080400000001001800d52900000000000000 *0000000400f1ff00020000302808080400000001001800e129000000000000000000000400f1ff *00020000342808080400000001001800ed29000000000000000000000400f1ff00020000382808 *080400000001001800f929000000000000000000000400f1ff000200003c280808040000000100 *1800042a000000000000000000000400f1ff00020000402808080400000001001800102a000000 *000000000000000400f1ff000200004428080804000000010018001c2a00000000000000000000 *0400f1ff282a0000883105080800000001000d00322a0000883105086300000002000d001c2a00 *0000000000000000000400f1ff1c2a000000000000000000000400f1ff1c2a0000000000000000 *00000400f1ff000200004828080804000000010018003b2a000000000000000000000400f1ff47 *2a0000303205080400000001000d00832a0000003405080c00000001000d008d2a000074320508 *0800000001000d00972a0000743205084700000002000d00a22a0000c43205080800000001000d *00ac2a0000c43205083c00000002000d00b52a0000003305081600000002000d00c02a00002033 *05080800000001000d00ca2a0000203305084700000002000d00d52a0000703305080800000001 *000d00df2a0000703305083c00000002000d00e82a0000b43305080800000001000d00f22a0000 *b43305081d00000002000d00fb2a0000d43305080c00000002000d00062b0000f4330508140000 *0001000d00102b0000003405081e00000002000d003b2a000000000000000000000400f1ff3b2a *000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000 *0000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff *3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000 *00000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400 *f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000 *000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000000000 *0400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00 *0000000000000000000400f1ff000200004c2808080400000001001800192b0000000000000000 *00000400f1ff00020000502808080400000001001800242b000000000000000000000400f1ff00 *0200005428080804000000010018002f2b000000000000000000000400f1ff0002000058280808 *04000000010018003a2b000000000000000000000400f1ff000200005c28080804000000010018 *00462b000000000000000000000400f1ff00020000602808080400000001001800522b00000000 *0000000000000400f1ff000200006428080804000000010018005e2b0000000000000000000004 *00f1ff000200006828080804000000010018005e2b000000000000000000000400f1ff6a2b0000 *00000000000000000400f1ff000200006c2808080400000001001800762b000000000000000000 *000400f1ff00020000702808080400000001001800812b000000000000000000000400f1ff0002 *00007428080804000000010018008c2b000000000000000000000400f1ff000200007828080804 *00000001001800972b000000000000000000000400f1ff000200007c2808080400000001001800 *a22b000000000000000000000400f1ff00020000802808080400000001001800ad2b0000000000 *00000000000400f1ff00020000842808080400000001001800b92b000000000000000000000400 *f1ff00020000882808080400000001001800c42b000000000000000000000400f1ff000200008c *2808080400000001001800cf2b000000000000000000000400f1ff000200009028080804000000 *01001800da2b000000000000000000000400f1ff00020000942808080400000001001800e62b00 *0000000000000000000400f1ff00020000982808080400000001001800f22b0000000000000000 *00000400f1ff000200009c2808080400000001001800fe2b000000000000000000000400f1ff0a *2c0000383e05080400000001000d00fe2b000000000000000000000400f1fffe2b000000000000 *000000000400f1ff00020000a028080804000000010018004e2c000000000000000000000400f1 *ff00020000a428080804000000010018005a2c000000000000000000000400f1ff00020000a828 *08080400000001001800662c000000000000000000000400f1ff00020000ac2808080400000001 *001800662c000000000000000000000400f1ff662c000000000000000000000400f1ff662c0000 *00000000000000000400f1ff722c00006c4005080400000001000d00b72c000078420508080000 *0001000d00c12c0000a84005083400000002000d00cc2c0000dc4005080e00000002000d00d72c *0000004105081400000001000d00e12c0000004105080c00000002000d00ec2c00000c41050834 *00000002000d00f72c0000404105080e00000002000d00022d0000644105081400000001000d00 *0c2d0000644105081b00000002000d00172d0000944105081400000001000d00212d00009c4105 *080800000001000d002b2d00009c4105083c00000002000d00362d0000e0410508080000000100 *0d00402d0000e04105086200000002000d00492d00004c4205080800000001000d00532d00004c *4205082200000002000d005c2d0000784205081700000002000d00652d00000000000000000000 *0400f1ff00020000b02808080400000001001800712d000000000000000000000400f1ff000200 *00b428080804000000010018007d2d000000000000000000000400f1ff00020000b82808080400 *000001001800892d000000000000000000000400f1ff00020000bc280808040000000100180095 *2d000000000000000000000400f1ff00020000c02808080400000001001800a12d000000000000 *000000000400f1ff00020000c428080804000000010018001223000000000000000000000400f1 *ff1223000000000000000000000400f1ff1e23000000000000000000000400f1ffad2d00003046 *05080800000001000d00b72d0000304605080800000002000d00c02d0000000000000000000004 *00f1ff00020000c82808080400000001001800cb2d000000000000000000000400f1ff00020000 *cc28080804000000010018002724000000000000000000000400f1ffd62d0000a8460508040000 *0001000d00182e0000744a05080800000001000d00b10700008c4b05081000000001000d00222e *0000c04c05081800000001000d002c2e0000104705080800000001000d00362e00001047050859 *03000002000d003f2e0000744a05082a00000002000d004a2e0000a04a05080f00000002000d00 *552e0000b84a05080800000001000d005f2e0000b84a05080b00000002000d00682e0000cc4a05 *080800000001000d00722e0000cc4a05081900000002000d007b2e0000e84a05080f0000000200 *0d00862e0000004b05080800000001000d00902e0000004b05080b00000002000d00992e000014 *4b05080800000001000d00a32e0000144b05081900000002000d00ac2e0000304b05080f000000 *02000d00b72e0000544b05081400000001000d00c12e0000544b05081400000002000d00cc2e00 *007c4b05081400000001000d00bb0700008c4b05081e00000002000d00d62e0000ac4b05080500 *000002000d00e02e0000c04c05081e00000002000d00eb2e0000bc4b05080800000001000d00f5 *2e0000bc4b05080b00000002000d00fe2e0000c84b05081600000002000d00092f0000e84b0508 *0800000001000d00132f0000e84b05083c00000002000d001e2f00002c4c05080800000001000d *00282f00002c4c05083200000002000d00312f0000684c05080800000001000d003b2f0000684c *05082000000002000d00442f0000884c05080c00000002000d004f2f0000a84c05081400000001 *000d002724000000000000000000000400f1ff2724000000000000000000000400f1ff592f0000 *00000000000000000400f1ff00020000d02808080400000001001800642f000000000000000000 *000400f1ff00020000d428080804000000010018000d28000000000000000000000400f1ff0d28 *000000000000000000000400f1ff0d28000000000000000000000400f1ff0d2800000000000000 *0000000400f1ff0d28000000000000000000000400f1ff0d28000000000000000000000400f1ff *0d28000000000000000000000400f1ff0d28000000000000000000000400f1ff0d280000000000 *00000000000400f1ff0d28000000000000000000000400f1ff702f00005c4d05080c0000000100 *0d00a82f0000004e05080c00000001000d00b22f0000a44d05080c00000001000d00bc2f0000a4 *4d05082900000002000d00c72f0000d04d05081000000002000d00d12f0000f44d050814000000 *01000d00db2f0000004e05088d00000002000d000d28000000000000000000000400f1ff0d2800 *0000000000000000000400f1ff0d28000000000000000000000400f1ff0d280000000000000000 *00000400f1ffe42f000000000000000000000400f1ff00020000d82808080400000001001800f0 *2f000000000000000000000400f1ff00020000dc2808080400000001001800fc2f000000000000 *000000000400f1ff00020000e028080804000000010018003b2a000000000000000000000400f1 *ff07300000b44f05080800000001000d0011300000b44f05080b00000002000d003b2a00000000 *0000000000000400f1ff1a300000e04f05080800000001000d0024300000e04f05080b00000002 *000d003b2a000000000000000000000400f1ff2d3000000c5005080800000001000d0037300000 *0c5005084320000002000d003b2a000000000000000000000400f1ff3b2a000000000000000000 *000400f1fffe2b000000000000000000000400f1ff40300000887105080c00000001000d00662c *000000000000000000000400f1ff662c000000000000000000000400f1ff7e300000b072050808 *00000001000d00883000007c7205080800000001000d00923000007c7205082900000002000d00 *9d300000b07205086800000002000d002724000000000000000000000400f1ff27240000000000 *00000000000400f1ff2724000000000000000000000400f1ff2724000000000000000000000400 *f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff2724000000 *000000000000000400f1ff2724000000000000000000000400f1ff272400000000000000000000 *0400f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff272400 *0000000000000000000400f1ff2724000000000000000000000400f1ff27240000000000000000 *00000400f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff27 *24000000000000000000000400f1ff2724000000000000000000000400f1ff2724000000000000 *000000000400f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1 *ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff272400000000 *0000000000000400f1ff2724000000000000000000000400f1ff27240000000000000000000004 *00f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff27240000 *00000000000000000400f1ff2724000000000000000000000400f1ff2724000000000000000000 *000400f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff2724 *000000000000000000000400f1ff2724000000000000000000000400f1ff272400000000000000 *0000000400f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff *2724000000000000000000000400f1ff2724000000000000000000000400f1ff27240000000000 *00000000000400f1ff2724000000000000000000000400f1ff2724000000000000000000000400 *f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff2724000000 *000000000000000400f1ff2724000000000000000000000400f1ff272400000000000000000000 *0400f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff272400 *0000000000000000000400f1ff2724000000000000000000000400f1ff27240000000000000000 *00000400f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff27 *24000000000000000000000400f1ff2724000000000000000000000400f1ff2724000000000000 *000000000400f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1 *ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff272400000000 *0000000000000400f1ff2724000000000000000000000400f1ff27240000000000000000000004 *00f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff27240000 *00000000000000000400f1ff2724000000000000000000000400f1ff2724000000000000000000 *000400f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff2724 *000000000000000000000400f1ff2724000000000000000000000400f1ff272400000000000000 *0000000400f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff *2724000000000000000000000400f1ff2724000000000000000000000400f1ff27240000000000 *00000000000400f1ff2724000000000000000000000400f1ff2724000000000000000000000400 *f1ff2724000000000000000000000400f1fffa25000000000000000000000400f1ffa630000018 *7305080800000001000d00e5300000e87405080c00000001000d00ef3000006c7305080c000000 *01000d00f93000006c7305083000000002000d0004310000a87305080c00000001000d000e3100 *00a87305084b00000002000d0019310000007405080c00000001000d0023310000007405085100 *000002000d002e310000607405080c00000001000d0038310000607405087a00000002000d0041 *310000e87405080900000002000d000d28000000000000000000000400f1ff3b2a000000000000 *000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1 *ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000 *0000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000000004 *00f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000 *00000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000 *000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a *000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000 *0000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff *3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000 *00000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400 *f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000 *000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000000000 *0400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00 *0000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000 *00000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b *2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000 *000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1 *ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000 *0000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000000004 *00f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000 *00000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000 *000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a *000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000 *0000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff *3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000 *00000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400 *f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000 *000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000000000 *0400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00 *0000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000 *00000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b *2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000 *000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1 *ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000 *0000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000000004 *00f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000 *00000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000 *000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a *000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000 *0000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff *3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000 *00000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400 *f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000 *000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000000000 *0400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00 *0000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000 *00000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b *2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000 *000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1 *ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000 *0000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000000004 *00f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000 *00000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000 *000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a *000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000 *0000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff *3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000 *00000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400 *f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000 *000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000000000 *0400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00 *0000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000 *00000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b *2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000 *000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1 *ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000 *0000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000000004 *00f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000 *00000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000 *000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a *000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000 *0000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff *3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000 *00000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400 *f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000 *000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000000000 *0400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00 *0000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000 *00000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b *2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000 *000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1 *ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000 *0000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000000004 *00f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000 *00000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000 *000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a *000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000 *0000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff *3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000 *00000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400 *f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000 *000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000000000 *0400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00 *0000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000 *00000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b *2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000 *000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1 *ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000 *0000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000000004 *00f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000 *00000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000 *000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a *000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000 *0000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff *3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000 *00000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400 *f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000 *000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000000000 *0400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00 *0000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000 *00000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b *2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000 *000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1 *ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000 *0000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000000004 *00f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000 *00000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000 *000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a *000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000 *0000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff *3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000 *00000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400 *f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000 *000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000000000 *0400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00 *0000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000 *00000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b *2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000 *000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1 *ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000 *0000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000000004 *00f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000 *00000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000 *000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a *000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000 *0000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff *3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000 *00000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400 *f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000 *000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000000000 *0400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00 *0000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000 *00000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b *2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000 *000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1 *ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000 *0000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000000004 *00f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000 *00000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000 *000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a *000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000 *0000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff *3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000 *00000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400 *f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000 *000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000000000 *0400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00 *0000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000 *00000400f1ff3b2a000000000000000000000400f1fffe2b000000000000000000000400f1fffe *2b000000000000000000000400f1ff662c000000000000000000000400f1ff4a310000b8760508 *0800000001000d0054310000b87605083100000002000d002724000000000000000000000400f1 *ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff272400000000 *0000000000000400f1ff2724000000000000000000000400f1ff27240000000000000000000004 *00f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff27240000 *00000000000000000400f1ff2724000000000000000000000400f1ff2724000000000000000000 *000400f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff2724 *000000000000000000000400f1ff2724000000000000000000000400f1ff272400000000000000 *0000000400f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff *2724000000000000000000000400f1ff2724000000000000000000000400f1ff27240000000000 *00000000000400f1ff2724000000000000000000000400f1ff2724000000000000000000000400 *f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff2724000000 *000000000000000400f1ff2724000000000000000000000400f1ff272400000000000000000000 *0400f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff272400 *0000000000000000000400f1ff2724000000000000000000000400f1ff27240000000000000000 *00000400f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff27 *24000000000000000000000400f1ff2724000000000000000000000400f1ff2724000000000000 *000000000400f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1 *ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff272400000000 *0000000000000400f1ff2724000000000000000000000400f1ff27240000000000000000000004 *00f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff27240000 *00000000000000000400f1ff2724000000000000000000000400f1ff2724000000000000000000 *000400f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff2724 *000000000000000000000400f1ff2724000000000000000000000400f1ff272400000000000000 *0000000400f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff *2724000000000000000000000400f1ff2724000000000000000000000400f1ff27240000000000 *00000000000400f1ff2724000000000000000000000400f1ff2724000000000000000000000400 *f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff2724000000 *000000000000000400f1ff2724000000000000000000000400f1ff272400000000000000000000 *0400f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff272400 *0000000000000000000400f1ff2724000000000000000000000400f1ff27240000000000000000 *00000400f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff27 *24000000000000000000000400f1ff2724000000000000000000000400f1ff2724000000000000 *000000000400f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1 *ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff272400000000 *0000000000000400f1ff2724000000000000000000000400f1fffa250000000000000000000004 *00f1fffa25000000000000000000000400f1fffa25000000000000000000000400f1ff5d310000 *707805080800000001000d0067310000ec7705080200000002000d007131000044780508240000 *0002000d007c310000f87705080800000001000d0086310000f87705083100000002000d008f31 *0000447805081800000001000d0099310000707805082d00000002000d003b2a00000000000000 *0000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff *3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000 *00000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400 *f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000 *000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000000000 *0400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00 *0000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000 *00000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b *2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000 *000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1 *ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000 *0000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000000004 *00f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000 *00000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000 *000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a *000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000 *0000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff *3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000 *00000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400 *f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000 *000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000000000 *0400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00 *0000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000 *00000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b *2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000 *000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1 *ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000 *0000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000000004 *00f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000 *00000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000 *000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a *000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000 *0000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff *3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000 *00000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400 *f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000 *000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000000000 *0400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00 *0000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000 *00000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b *2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000 *000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1 *ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000 *0000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000000004 *00f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000 *00000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000 *000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a *000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000 *0000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff *3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000 *00000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400 *f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000 *000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000000000 *0400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00 *0000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000 *00000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b *2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000 *000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1 *ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000 *0000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000000004 *00f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000 *00000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000 *000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a *000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000 *0000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff *3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000 *00000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400 *f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000 *000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000000000 *0400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00 *0000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000 *00000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b *2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000 *000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1 *ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000 *0000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000000004 *00f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000 *00000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000 *000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a *000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000 *0000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff *3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000 *00000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400 *f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000 *000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000000000 *0400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00 *0000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000 *00000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b *2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000 *000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1 *ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000 *0000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000000004 *00f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000 *00000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000 *000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a *000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000 *0000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff *3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000 *00000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400 *f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000 *000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000000000 *0400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00 *0000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000 *00000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b *2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000 *000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1 *ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000 *0000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000000004 *00f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000 *00000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000 *000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a *000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000 *0000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff *3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000 *00000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400 *f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000 *000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000000000 *0400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00 *0000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000 *00000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b *2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000 *000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1 *ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000 *0000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000000004 *00f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000 *00000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000 *000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a *000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000 *0000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff *3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000 *00000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400 *f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000 *000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000000000 *0400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00 *0000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000 *00000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b *2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000 *000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1 *ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000 *0000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000000004 *00f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000 *00000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000 *000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a *000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000 *0000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff *3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000 *00000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400 *f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000 *000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000000000 *0400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00 *0000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000 *00000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b *2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000 *000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1 *ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000 *0000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000000004 *00f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000 *00000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000 *000400f1ff3b2a000000000000000000000400f1ff662c000000000000000000000400f1fffa25 *000000000000000000000400f1ffa231000000000000000000000400f1ffad3100000000000000 *0000000400f1ff00020000e42808080400000001001800b931000000000000000000000400f1ff *00020000e82808080400000001001800c331000000000000000000000400f1ff00020000ec2808 *080400000001001800cf31000000000000000000000400f1ff00020000f0280808040000000100 *1800db31000000000000000000000400f1ff00020000f42808080400000001001800e631000000 *000000000000000400f1ff00020000f82808080400000001001800f13100000000000000000000 *0400f1ff00020000fc28080804000000010018009413000000000000000000000400f1fffd3100 *007c7c05080c00000002000d0006320000a07b05080e00000002000d0011320000b07b05080b00 *000002000d001c320000bc7b05082e00000002000d0027320000ec7b05080b00000002000d0032 *320000107c05081800000001000d003c320000187c05080800000001000d0046320000187c0508 *1e00000002000d004f320000387c05082700000002000d005a320000747c05081400000001000d *00643200007c7c05080800000001000d009413000000000000000000000400f1ff6e320000887c *05080800000001000d008c320000347e05081000000001000d0096320000347e05082900000002 *000d00a1320000d47c05080e00000002000d00ac320000e47c05081d00000002000d00b6320000 *187d05081400000001000d00c0320000187d05081e00000002000d00cb320000387d0508140000 *0002000d00d63200004c7d05081d00000002000d00e0320000807d05081400000001000d00ea32 *0000807d05081e00000002000d00f5320000b87d05081800000001000d00ff320000c47d05080c *00000001000d0009330000c47d05081e00000002000d0012330000e47d05082900000002000d00 *1d330000247e05081400000001000d009413000000000000000000000400f1ff27330000607e05 *080400000001000d00212d0000688005081000000001000d002b2d000068800508290000000200 *0d0046330000a87e05080800000002000d0051330000b07e05081d00000002000d005b330000e4 *7e05081400000001000d0065330000e47e05082a00000002000d0070330000107f05085f000000 *02000d007b330000707f05081d00000002000d0085330000a47f05081400000001000d008f3300 *00a47f05082a00000002000d009a330000e87f05081800000001000d00a4330000f47f05080c00 *000001000d00ae330000f47f05081e00000002000d00b7330000148005082f00000002000d00c2 *330000588005081400000001000d009413000000000000000000000400f1ff9413000000000000 *000000000400f1ff9413000000000000000000000400f1ff9413000000000000000000000400f1 *ff000200000029080804000000010018009413000000000000000000000400f1ffcc3300000000 *0000000000000400f1ff00020000042908080400000001001800d8330000000000000000000004 *00f1ff00020000082908080400000001001800e333000000000000000000000400f1ff00020000 *0c2908080400000001001800ef33000000000000000000000400f1fffa33000024830508080000 *0001000d0004340000f48205080c00000002000d000d340000308205080b00000002000d001834 *0000448205080800000001000d0022340000448205081400000002000d002b3400006082050808 *00000001000d0035340000608205083600000002000d0040340000988205083f00000002000d00 *4b340000ec8205081400000001000d0055340000f48205080800000001000d005f340000088305 *080800000001000d0069340000088305081200000002000d0072340000248305082a0000000200 *0d00ef33000000000000000000000400f1ff000200001029080804000000010018007d34000000 *000000000000000400f1ff7d34000000000000000000000400f1ff7d3400000000000000000000 *0400f1ff7d34000000000000000000000400f1ff00020000142908080400000001001800893400 *0000000000000000000400f1ff9534000000000000000000000400f1ff00020000182908080400 *000001001800a134000000000000000000000400f1ff000200001c2908080400000001001800ac *34000000000000000000000400f1ffb8340000b48605080800000001000d00c234000054850508 *1500000002000d00cd340000748505080800000001000d00d7340000748505081e00000002000d *00e0340000cc8505082900000002000d00eb340000948505081500000002000d00f6340000c085 *05081400000001000d0000350000cc8505080c00000001000d000a350000008605080800000001 *000d0014350000008605080600000002000d001d350000108605080800000001000d0027350000 *108605084300000002000d00303500005c8605080800000001000d003a3500005c860508500000 *0002000d0043350000b48605080d00000002000d00ac34000000000000000000000400f1ff0002 *0000202908080400000001001800ac34000000000000000000000400f1ff4c350000ac8705080c *00000001000d0056350000c08805080800000001000d0060350000ac8705084400000002000d00 *6b350000f88705080800000001000d0075350000f88705088c00000002000d007e3500008c8805 *080800000001000d00883500008c8805082900000002000d0091350000c0880508090000000200 *0d009a35000000000000000000000400f1ff00020000242908080400000001001800a635000000 *000000000000000400f1ff00020000282908080400000001001800b23500000000000000000000 *0400f1ff000200002c2908080400000001001800be35000000000000000000000400f1ffca3500 *00648a05080400000001000d00f4350000c08b05080c00000001000d00fe350000a08a05080800 *000001000d0008360000a08a05080600000002000d0011360000b08a05080800000001000d001b *360000b08a05084900000002000d0024360000048b05080800000001000d002e360000048b0508 *6200000002000d0037360000708b05080800000001000d0041360000708b05081600000002000d *004a360000948b05080c00000001000d0054360000948b05081e00000002000d005d360000c08b *05082500000002000d00be35000000000000000000000400f1ff00020000302908080400000001 *001800be35000000000000000000000400f1ff66360000bc8d05082400000002000d006f360000 *c08c05080800000001000d0079360000c08c05084200000002000d00823600000c8d0508080000 *0001000d008c3600000c8d05084000000002000d0095360000548d05080800000001000d009f36 *0000548d05083700000002000d00a8360000948d05080800000001000d00b2360000948d05081f *00000002000d00bb360000bc8d05080800000001000d00c536000000000000000000000400f1ff *00020000342908080400000001001800d136000000000000000000000400f1ff00020000382908 *080400000001001800d136000000000000000000000400f1ffdd3600004c900508140000000100 *0d00e7360000348f05081200000002000d00f2360000548f05080c00000001000d00fc36000054 *8f05084100000002000d0007370000a48f05080c00000001000d0011370000a48f05084a000000 *02000d001c370000f08f05084500000002000d002737000000000000000000000400f1ff000200 *003c29080804000000010018003237000000000000000000000400f1ff32370000000000000000 *00000400f1ff3237000000000000000000000400f1ff000200004029080804000000010018003d *37000000000000000000000400f1ff000200004429080804000000010018004937000000000000 *000000000400f1ff000200004829080804000000010018004937000000000000000000000400f1 *ff55370000fc9105080800000001000d004937000000000000000000000400f1ff68370000f892 *05080c00000001000d0072370000f89205087400000002000d007d370000bc9205080800000001 *000d0087370000bc9205082d00000002000d0092370000049405080c00000001000d009c370000 *049405086e00000002000d00a7370000c89305080800000001000d00b1370000c89305082d0000 *0002000d004937000000000000000000000400f1ffbc370000289505080c00000001000d00c637 *0000289505082f00000002000d00d1370000b89405080b00000002000d00dc370000c494050841 *00000002000d00e73700001c9505081400000001000d00f1370000409605081400000001000d00 *fb370000889505080e00000002000d0006380000a09505080800000001000d0010380000a09505 *082f00000002000d001b380000d09505085a00000002000d0026380000f4960508140000000100 *0d0030380000589605080800000002000d003b380000689605080800000001000d004538000068 *9605082f00000002000d0050380000989605084700000002000d00493700000000000000000000 *0400f1ff4937000000000000000000000400f1ff4937000000000000000000000400f1ff493700 *0000000000000000000400f1ff4937000000000000000000000400f1ff49370000000000000000 *00000400f1ff4937000000000000000000000400f1ff4937000000000000000000000400f1ff49 *37000000000000000000000400f1ff4937000000000000000000000400f1ff4937000000000000 *000000000400f1ff4937000000000000000000000400f1ff4937000000000000000000000400f1 *ff4937000000000000000000000400f1ff4937000000000000000000000400f1ff493700000000 *0000000000000400f1ff4937000000000000000000000400f1ff49370000000000000000000004 *00f1ff4937000000000000000000000400f1ff4937000000000000000000000400f1ff5b380000 *00000000000000000400f1ff000200004c29080804000000010018006638000000000000000000 *000400f1ff000200005029080804000000010018007238000000000000000000000400f1ff7d38 *0000c49805080400000001000d007238000000000000000000000400f1ff723800000000000000 *0000000400f1ff000200005429080804000000010018009438000000000000000000000400f1ff *000200005829080804000000010018009f38000000000000000000000400f1ff000200005c2908 *0804000000010018009f38000000000000000000000400f1ff9f38000000000000000000000400 *f1ffab38000000000000000000000400f1ff00020000602908080400000001001800b738000000 *000000000000000400f1ff00020000642908080400000001001800c33800000000000000000000 *0400f1ffc338000000000000000000000400f1ffc338000000000000000000000400f1ffc33800 *0000000000000000000400f1ffce380000289c05080800000001000d00d8380000289c05083100 *000002000d00c338000000000000000000000400f1ffe1380000989c05080800000001000d00eb *380000989c05080500000002000d00c338000000000000000000000400f1ffc338000000000000 *000000000400f1ffc338000000000000000000000400f1ffc338000000000000000000000400f1 *ffc338000000000000000000000400f1ffc338000000000000000000000400f1ffc33800000000 *0000000000000400f1ffc338000000000000000000000400f1ffc3380000000000000000000004 *00f1ffc338000000000000000000000400f1ffc338000000000000000000000400f1ffc3380000 *00000000000000000400f1ffc338000000000000000000000400f1ffc338000000000000000000 *000400f1ffc338000000000000000000000400f1ffc338000000000000000000000400f1ffc338 *000000000000000000000400f1ffc338000000000000000000000400f1ff000200006829080804 *00000001001800f438000000000000000000000400f1ff000200006c2908080400000001001800 *f438000000000000000000000400f1ffff380000e49e05080800000001000d00093900009c9e05 *080800000001000d00133900009c9e05083d00000002000d001c390000e49e0508140000000200 *0d00f438000000000000000000000400f1fff438000000000000000000000400f1fff438000000 *000000000000000400f1fff438000000000000000000000400f1ff253900000000000000000000 *0400f1ff31390000a09f05081400000001000d003b390000709f05080900000002000d00463900 *007c9f05080e00000002000d002539000000000000000000000400f1ff25390000000000000000 *00000400f1ff51390000d89f05080400000001000d006439000020a005081400000001000d006e *390000f89f05080a00000002000d007939000004a005080800000002000d002539000000000000 *000000000400f1ff000200007029080804000000010018008439000000000000000000000400f1 *ff000200007429080804000000010018009039000000000000000000000400f1ff000200007829 *080804000000010018009039000000000000000000000400f1ff9b39000040a105080800000001 *000d00a439000040a105082300000002000d00ac39000000000000000000000400f1ff00020000 *7c2908080400000001001800ac39000000000000000000000400f1ffac39000000000000000000 *000400f1ffac39000000000000000000000400f1ffac39000000000000000000000400f1ffb739 *000000000000000000000400f1ff00020000802908080400000001001800c23900000000000000 *0000000400f1ff00020000842908080400000001001800ce39000000000000000000000400f1ff *00020000882908080400000001001800da39000000000000000000000400f1ff000200008c2908 *080400000001001800da39000000000000000000000400f1ffe539000000000000000000000400 *f1ff00020000902908080400000001001800f139000000000000000000000400f1fff139000000 *000000000000000400f1ff00020000942908080400000001001800fc3900000000000000000000 *0400f1ff073a000078a405080800000001000d00113a00003ca405080800000001000d001b3a00 *003ca405081700000002000d00243a00005ca405080800000001000d002e3a00005ca405081400 *000002000d00373a000078a405081400000002000d00fc39000000000000000000000400f1ff40 *3a0000e8a405080800000001000d004a3a0000aca405080800000001000d00543a0000aca40508 *3100000002000d005d3a0000e8a405081400000002000d00fc39000000000000000000000400f1 *ff00020000982908080400000001001800663a000000000000000000000400f1ff000200009c29 *08080400000001001800663a000000000000000000000400f1ff723a0000cca505080400000001 *000d00923a000004a605080c00000001000d00b13a000088a905080c00000001000d00bb3a0000 *5ca605080200000002000d00c53a0000d0a605082600000002000d00d03a000068a60508080000 *0001000d00da3a000068a605080b00000002000d00e33a00007ca605080800000001000d00ed3a *00007ca605081100000002000d00f63a000098a605080800000001000d00003b000098a605081d *00000002000d00093b0000d0a605081800000001000d00133b0000f8a605080d00000002000d00 *1e3b000008a705080200000002000d00283b00007ca705082600000002000d00333b000014a705 *080800000001000d003d3b000014a705080b00000002000d00463b000028a70508080000000100 *0d00503b000028a705081100000002000d00593b000044a705080800000001000d00633b000044 *a705081d00000002000d006c3b00007ca705081800000001000d00763b0000a4a705082d000000 *02000d00803b0000eca705081800000001000d008a3b0000eca705080d00000002000d00953b00 *00fca705080200000002000d009f3b00002ca805088500000002000d00aa3b000008a805080800 *000001000d00b43b000008a805080b00000002000d00bd3b00002ca805081800000001000d00c7 *3b0000bca805080800000001000d00d13b0000bca805082d00000002000d00da3b0000eca80508 *0c00000002000d00e53b00000ca905081400000001000d00ef3b000018a905080c00000001000d *00f93b000018a905086100000002000d00023c000088a905082a00000002000d00663a00000000 *0000000000000400f1ff0d3c0000b4a905080400000001000d00273c0000000000000000000004 *00f1ff00020000a02908080400000001001800323c000000000000000000000400f1ff00020000 *a42908080400000001001800323c000000000000000000000400f1ff3e3c0000a8aa0508080000 *0001000d00473c0000a8aa05080b00000002000d004f3c000000000000000000000400f1ff4f3c *000000000000000000000400f1ff4f3c000000000000000000000400f1ff4f3c00000000000000 *0000000400f1ff4f3c000000000000000000000400f1ff4f3c000000000000000000000400f1ff *4f3c000000000000000000000400f1ff00020000a829080804000000010018004f3c0000000000 *00000000000400f1ff5a3c0000a8ab05080400000001000d00743c000050ac05080c0000000100 *0d007e3c000044ac05081400000001000d00883c000014ac05081900000002000d00923c000050 *ac05084000000002000d009b3c000000000000000000000400f1ff00020000ac29080804000000 *01001800a63c000000000000000000000400f1ff00020000b02908080400000001001800b23c00 *0000000000000000000400f1ff00020000b42908080400000001001800b23c0000000000000000 *00000400f1ffbe3c000068af05080800000001000d00c83c0000a0ae05080800000001000d00d2 *3c0000a0ae05082f00000002000d00dd3c0000d8ae05080800000001000d00e73c0000d8ae0508 *3200000002000d00f03c000014af05080800000001000d00fa3c000014af05081600000002000d *00033d000034af05080800000001000d000d3d000034af05082900000002000d00163d000068af *05081700000002000d00b23c000000000000000000000400f1ff1f3d000090b005080800000001 *000d00293d0000d0af05080800000001000d00333d0000d0af05080600000002000d003c3d0000 *e0af05080800000001000d00463d0000e0af05081200000002000d004f3d0000fcaf0508080000 *0001000d00593d0000fcaf05085500000002000d00623d00005cb005080800000001000d006c3d *00005cb005082c00000002000d00753d000090b005081700000002000d007e3d00000000000000 *0000000400f1ff00020000b829080804000000010018007e3d000000000000000000000400f1ff *8a3d000000000000000000000400f1ff00020000bc2908080400000001001800963d0000000000 *00000000000400f1ff00020000c02908080400000001001800a13d000000000000000000000400 *f1ff00020000c42908080400000001001800ac3d000000000000000000000400f1ff00020000c8 *2908080400000001001800b83d000000000000000000000400f1ff00020000cc29080804000000 *01001800c43d000000000000000000000400f1ff00020000d02908080400000001001800cf3d00 *0000000000000000000400f1ff00020000d42908080400000001001800da3d0000000000000000 *00000400f1ff00020000d82908080400000001001800e63d000000000000000000000400f1ff00 *020000dc2908080400000001001800f13d000000000000000000000400f1ff00020000e0290808 *0400000001001800ad31000000000000000000000400f1fffd3d0000b0b405080400000001000d *002d3e000000000000000000000400f1ff00020000e42908080400000001001800393e00000000 *0000000000000400f1ff00020000e8290808040000000100180094130000000000000000000004 *00f1ff453e000070b505081000000001000d00683e000074bc05081400000001000d00723e0000 *b4b505080a00000002000d007d3e0000c0b505081d00000002000d00873e0000f4b50508140000 *0001000d00913e0000f4b505080a00000002000d009c3e000000b605084800000002000d00a73e *000048b605084700000002000d00b23e0000a4b605081400000001000d00bc3e0000acb6050808 *00000001000d00c63e0000acb605082a00000002000d00cf3e0000d8b605080700000002000d00 *da3e0000e0b605080500000002000d00e53e0000fcb605081400000001000d00ef3e0000fcb605 *080c00000002000d00f93e00001cb705081400000001000d00033f00001cb70508390000000200 *0d000e3f00006cb705081400000001000d00183f000078b705080c00000001000d00223f000078 *b705084300000002000d002b3f0000bcb705080700000002000d00363f0000c4b7050805000000 *02000d00413f0000e0b705081400000001000d004b3f0000ecb705080c00000001000d00553f00 *00ecb705081200000002000d005e3f000000b805080700000002000d00693f000008b805080500 *000002000d00743f000024b805081400000001000d007e3f000024b805082700000002000d0089 *3f000060b805081400000001000d00933f000060b805080a00000002000d009e3f00006cb80508 *4800000002000d00a93f0000b4b805084700000002000d00b43f000010b905081400000001000d *00be3f000018b905080800000001000d00c83f000018b905082a00000002000d00d13f000044b9 *05080700000002000d00dc3f00004cb905080500000002000d00e73f000068b905081400000001 *000d00f13f000068b905080a00000002000d00fc3f000074b905084800000002000d0007400000 *bcb905084700000002000d001240000018ba05081400000001000d001c40000020ba0508080000 *0001000d002640000020ba05082a00000002000d002f4000004cba05080700000002000d003a40 *000054ba05080500000002000d004540000070ba05081400000001000d004f40000070ba05080f *00000002000d005940000094ba05081400000001000d006340000094ba05083900000002000d00 *6e400000e4ba05081400000001000d0078400000f0ba05080c00000001000d0082400000f0ba05 *082600000002000d008b40000018bb05080700000002000d009640000020bb0508050000000200 *0d00a14000003cbb05081400000001000d00ab40000048bb05080c00000001000d00b540000048 *bb05081200000002000d00be4000005cbb05080700000002000d00c940000064bb050805000000 *02000d00d440000080bb05081400000001000d00de40000080bb05082700000002000d00e94000 *00bcbb05081400000001000d00f3400000c8bb05080c00000001000d00fd400000c8bb05084300 *000002000d00064100000cbc05080700000002000d001141000014bc05080500000002000d001c *41000030bc05081400000001000d00264100003cbc05080c00000001000d00304100003cbc0508 *1200000002000d003941000050bc05080700000002000d004441000058bc05080500000002000d *009413000000000000000000000400f1ff4f41000074bc05081400000001000d006e41000034bf *05081400000001000d0078410000b8bc05080800000002000d0083410000c0bc05080800000002 *000d008e410000d0bc05080800000001000d0098410000d0bc05083900000002000d00a1410000 *18bd05080c00000001000d00ab41000018bd05083000000002000d00b641000048bd0508470000 *0002000d00c0410000a4bd05081400000001000d00ca410000acbd05080800000001000d00d441 *0000acbd05083900000002000d00dd410000f4bd05080c00000001000d00e7410000f4bd050830 *00000002000d00f241000024be05084700000002000d00fc41000080be05081400000001000d00 *0642000080be05086d00000002000d001142000004bf05081400000001000d001b42000004bf05 *081a00000002000d009413000000000000000000000400f1ff9413000000000000000000000400 *f1ff26420000a4c005081400000001000d0030420000c0bf05084800000002000d003b42000008 *c005084700000002000d004642000064c005081400000001000d00504200006cc0050808000000 *01000d005a4200006cc005081100000002000d006342000080c005080700000002000d006e4200 *0088c005080500000002000d009413000000000000000000000400f1ff79420000ccc005080400 *000001000d009413000000000000000000000400f1ff9a42000064c105080400000001000d00ba *42000000000000000000000400f1ff00020000ec2908080400000001001800ef33000000000000 *000000000400f1ff8934000000000000000000000400f1ff00020000f029080804000000010018 *00c542000000000000000000000400f1ff00020000f42908080400000001001800d14200000000 *0000000000000400f1ff00020000f82908080400000001001800dd420000000000000000000004 *00f1ff00020000fc2908080400000001001800e942000000000000000000000400f1ff00020000 *002a08080400000001001800be35000000000000000000000400f1fff54200000cc605080c0000 *0001000d00ff4200000cc605083500000002000d000a4300007cc405080800000001000d001443 *00007cc405083900000002000d001d430000b8c405080c00000002000d0028430000c4c4050805 *00000002000d003243000064c505083c00000002000d003d430000d4c405080800000001000d00 *47430000d4c405081f00000002000d0050430000fcc405080800000001000d005a430000fcc405 *084d00000002000d006343000064c505081800000001000d006d430000a0c50508490000000200 *0d007843000000c605081400000001000d00be35000000000000000000000400f1ff8243000000 *000000000000000400f1ff00020000042a080804000000010018008d4300000000000000000000 *0400f1ff00020000082a080804000000010018003237000000000000000000000400f1ff984300 *0020c705080800000001000d00a2430000e8c605080800000001000d00ac430000e8c605083000 *000002000d00b543000020c705081400000002000d003237000000000000000000000400f1ffbe *4300008cc705080800000001000d00c843000000c805080c00000001000d00d24300008cc70508 *2f00000002000d00dd430000c4c705080800000001000d00e7430000c4c705081300000002000d *00f0430000e0c705080800000001000d00fa430000e0c705081400000002000d000344000000c8 *05081e00000002000d003237000000000000000000000400f1ff0e44000040c805080800000001 *000d001844000040c805082d00000002000d003237000000000000000000000400f1ff21440000 *acc805080800000001000d002b44000090c805080800000001000d003544000090c80508130000 *0002000d003e440000acc805081400000002000d003237000000000000000000000400f1ff3237 *000000000000000000000400f1ff3237000000000000000000000400f1ff493700000000000000 *0000000400f1ff7238000000000000000000000400f1ff7238000000000000000000000400f1ff *474400007cc905080800000001000d005d440000e0c905080c00000001000d0066440000e0c905 *083000000002000d007238000000000000000000000400f1ff9438000000000000000000000400 *f1ff70440000dcca05080c00000001000d0079440000dcca05081a00000002000d008344000000 *000000000000000400f1ff000200000c2a08080400000001001800c33800000000000000000000 *0400f1ff2539000000000000000000000400f1ff8f4400003ccc05081400000001000d00994400 *00e4cb05080800000002000d00a4440000eccb05083900000002000d0025390000000000000000 *00000400f1ffaf4400003ccc05080800000001000d008439000000000000000000000400f1ffc3 *440000b0cc05080400000001000d00dd440000c8cd05081400000001000d00e744000004cd0508 *0800000002000d00f244000018cd05080c00000001000d00fc44000018cd05085100000002000d *00074500006ccd05084800000002000d008439000000000000000000000400f1ff843900000000 *0000000000000400f1ff8439000000000000000000000400f1ff84390000000000000000000004 *00f1ffac39000000000000000000000400f1ff1245000078ce05080800000001000d001b450000 *40ce05080800000001000d002445000040ce05082e00000002000d002c45000078ce0508140000 *0002000d00663a000000000000000000000400f1ff3445000038cf05080800000001000d003e45 *000038cf05080b00000002000d00663a000000000000000000000400f1ff4745000044cf050808 *00000001000d006f450000fccf05080c00000001000d00794500008ccf05080b00000002000d00 *84450000a0cf05080800000001000d008e450000a0cf05080b00000002000d0097450000accf05 *081100000002000d00a2450000d4cf05081400000001000d00ac450000e0cf05080c0000000100 *0d00b6450000e0cf05080f00000002000d00bf450000fccf05080f00000002000d00663a000000 *000000000000000400f1ffc84500000cd005080400000001000d00323c00000000000000000000 *0400f1ffe845000098d005083100000002000d00f045000088d005080800000001000d00f94500 *0088d005080500000002000d000146000098d005080800000001000d004f3c0000000000000000 *00000400f1ff0a4600000cd105080800000001000d00144600000cd105082a00000002000d004f *3c000000000000000000000400f1ff1d46000058d105080800000001000d002746000058d10508 *1a00000002000d004f3c000000000000000000000400f1ff4f3c000000000000000000000400f1 *ff30460000a8d105080800000001000d003a460000a8d105082d00000002000d004f3c00000000 *0000000000000400f1ff4346000030d205080800000001000d004d460000f8d105080800000001 *000d0057460000f8d105082e00000002000d006046000030d205081400000002000d004f3c0000 *00000000000000000400f1ff694600009cd205080800000001000d007346000064d20508080000 *0001000d007d46000064d205082f00000002000d00864600009cd205081400000002000d004f3c *000000000000000000000400f1ff8f46000008d305080800000001000d0099460000d0d2050808 *00000001000d00a3460000d0d205082e00000002000d00ac46000008d305081400000002000d00 *4f3c000000000000000000000400f1ff4f3c000000000000000000000400f1ffb54600001cd305 *080800000001000d00b23c000000000000000000000400f1ffd146000004d40508140000000100 *0d00db460000b8d305080800000002000d00e6460000c8d305080800000001000d00f0460000c8 *d305081400000002000d00f9460000dcd305081200000002000d00b23c00000000000000000000 *0400f1ff04470000e8d405081400000001000d000e47000030d405080b00000002000d00194700 *0044d405080800000001000d002347000044d405083700000002000d002c47000084d405080800 *000001000d003647000084d405081800000002000d003f470000a4d405080800000001000d0049 *470000a4d405081500000002000d0052470000bcd405081500000002000d007e3d000000000000 *000000000400f1ffad31000000000000000000000400f1ff5d470000e8d405081000000001000d *0081470000ecd505080c00000001000d004f3d000044d505080c00000001000d00593d000044d5 *05083c00000002000d00293d00008cd505080c00000001000d008b4700008cd505082a00000002 *000d0096470000b8d505081200000002000d00a0470000e0d505081400000001000d00aa470000 *ecd505084800000002000d00ad31000000000000000000000400f1ffb347000034d60508040000 *0001000d00d747000088d605080800000001000d00e147000088d605083100000002000d009413 *000000000000000000000400f1ffea470000f4d605080400000001000d00941300000000000000 *0000000400f1ff104800009cd705080400000001000d009413000000000000000000000400f1ff *374800000cd805080800000001000d0056480000b0d805081400000001000d006048000044d805 *080a00000002000d006b48000050d805080f00000002000d007648000060d805080b0000000200 *0d008148000080d805081400000001000d008b48000080d805081b00000002000d009413000000 *000000000000000400f1ff96480000b0d805080800000001000d00b548000054d9050814000000 *01000d00bf480000e8d805080a00000002000d00ca480000f4d805080f00000002000d00d54800 *0004d905080b00000002000d00e048000024d905081400000001000d00ea48000024d905081b00 *000002000d009413000000000000000000000400f1fff548000054d905080c00000001000d0019 *49000034da05081400000001000d002349000090d905080a00000002000d009b2800009cd90508 *0800000002000d002e490000a4d905081a00000002000d0038490000d4d905081400000001000d *00b9280000d4d905081200000002000d00e2280000fcd905081400000001000d0042490000fcd9 *05082100000002000d009413000000000000000000000400f1ff4d49000034da05080c00000001 *000d007149000014db05081400000001000d007b49000070da05080a00000002000d0086490000 *7cda05080800000002000d009149000084da05081a00000002000d009b490000b4da0508140000 *0001000d00a5490000b4da05081200000002000d00b0490000dcda05081400000001000d00ba49 *0000dcda05082100000002000d009413000000000000000000000400f1ffc54900004cdb050804 *00000001000d009413000000000000000000000400f1ffe5490000f4db05080400000001000d00 *ac34000000000000000000000400f1ff054a000010de05080800000001000d000f4a0000a0dc05 *080b00000002000d001a4a0000b4dc05080800000001000d00244a0000b4dc05081e0000000200 *0d002d4a00000cdd05082900000002000d00384a0000d4dc05081500000002000d00434a000000 *dd05081400000001000d004d4a00000cdd05080c00000001000d00574a000040dd050808000000 *01000d00614a000040dd05080600000002000d006a4a000050dd05080800000001000d00744a00 *0050dd05086000000002000d007d4a0000b8dd05080800000001000d00874a0000b8dd05085000 *000002000d00904a000010de05081200000002000d004937000000000000000000000400f1ff99 *4a0000b4de05080c00000001000d00a34a0000b4de05086e00000002000d00ae4a000078de0508 *0800000001000d00b84a000078de05082d00000002000d007238000000000000000000000400f1 *ff7238000000000000000000000400f1ffc34a000088df05080400000001000d00d94a0000f4e1 *05081400000001000d00e24a0000d0df05080800000001000d00eb4a0000d0df05083000000002 *000d00f54a000008e005080800000001000d00fe4a000008e005084b00000002000d00084b0000 *60e005080c00000001000d00114b000060e005085100000002000d001b4b0000c0e005080c0000 *0001000d00244b0000c0e005084900000002000d002c4b00000ce105080f00000002000d00364b *000028e105080c00000001000d003f4b000028e105085200000002000d00474b00007ce1050815 *00000002000d00514b0000a8e105081400000001000d005a4b0000b4e105080c00000001000d00 *634b0000b4e105080f00000002000d006b4b0000c4e105081900000002000d0072380000000000 *00000000000400f1ff7238000000000000000000000400f1ffc338000000000000000000000400 *f1ff744b000068e205084000000001000d00924b00000ce405080c00000001000d009c4b0000e4 *e205080c00000001000d00a64b0000fce205080c00000001000d00b04b0000fce2050826000000 *02000d00b94b000030e305080c00000001000d00c34b000030e305083600000002000d00ce4b00 *0068e305080c00000002000d00d94b000074e305080c00000002000d00e44b000080e305080c00 *000002000d00ef4b0000a4e305081800000001000d00f94b0000a4e305080c00000002000d0004 *4c0000b0e305080c00000002000d000f4c0000bce305080c00000002000d001a4c0000c8e30508 *0c00000002000d00254c0000d4e305080c00000002000d00304c000000e405082000000001000d *003a4c00000ce40508b300000002000d00c338000000000000000000000400f1ffc33800000000 *0000000000000400f1ffc338000000000000000000000400f1ffc3380000000000000000000004 *00f1ffc338000000000000000000000400f1ffc338000000000000000000000400f1ffc3380000 *00000000000000000400f1ffc338000000000000000000000400f1ffc338000000000000000000 *000400f1ffc338000000000000000000000400f1ffc338000000000000000000000400f1ffc338 *000000000000000000000400f1ffc338000000000000000000000400f1ffc33800000000000000 *0000000400f1ffc338000000000000000000000400f1ffc338000000000000000000000400f1ff *c338000000000000000000000400f1ff434c0000a8ea05080c00000001000d00614c0000ecec05 *081400000001000d006b4c0000d0ea05080800000002000d00764c0000e0ea0508080000000100 *0d00804c0000e0ea05082f00000002000d008b4c000010eb05083700000002000d00964c00005c *eb05081400000001000d00a04c000068eb05080c00000001000d00aa4c000068eb050830000000 *02000d00b54c000098eb05083a00000002000d00c04c0000d4eb05080800000002000d00cb4c00 *00e4eb05080800000001000d00d54c0000e4eb05082f00000002000d00e04c000014ec05083700 *000002000d00eb4c000060ec05081400000001000d00f54c00006cec05080c00000001000d00ff *4c00006cec05083000000002000d000a4d00009cec05083a00000002000d002539000000000000 *000000000400f1ff154d0000ecec05080800000001000d002539000000000000000000000400f1 *ff304d0000a4ed05080800000001000d003a4d0000a4ed05083700000002000d00434d000020ef *05081400000001000d004d4d00000cee05081200000002000d00584d000020ee05081100000002 *000d00634d00003cee05080800000001000d006d4d00003cee05082f00000002000d00784d0000 *6cee05086100000002000d00834d0000e4ee05081400000001000d008d4d0000e4ee0508270000 *0002000d008439000000000000000000000400f1ff8439000000000000000000000400f1ff8439 *000000000000000000000400f1ff984d0000d4f005081400000001000d00584d00004cef05082b *00000002000d00a24d000080ef05080800000001000d00ac4d000080ef05082700000002000d00 *784d0000a8ef05081e00000002000d00834d0000dcef05081400000001000d00b54d0000dcef05 *081400000002000d00c04d0000f8ef05080800000001000d00ca4d0000f8ef0508220000000200 *0d00d34d00001cf005081e00000002000d00de4d000044f005080800000001000d00e84d000044 *f005082200000002000d00f14d000068f005082400000002000d00fc4d0000a0f0050814000000 *01000d00064e0000a0f005081d00000002000d008439000000000000000000000400f1ff843900 *0000000000000000000400f1ff114e00003cf105080400000001000d00234e0000dcf205081400 *000001000d002d4e000080f105080800000002000d00384e000088f105080800000002000d0042 *4e0000a4f105081400000001000d004c4e0000a4f105084d00000002000d00574e0000f4f10508 *3900000002000d00624e000044f205081400000001000d006c4e000050f205080c00000001000d *00764e000050f205083000000002000d00814e000080f205084800000002000d00e53900000000 *0000000000000400f1ff8c4e0000dcf205080400000001000d00a74e000038f305080800000001 *000d00b14e0000e0f505081000000001000d00bb4e000038f305082900000002000d00c64e0000 *64f305080f00000002000d00d14e000074f305083500000002000d00dc4e0000b4f30508080000 *0001000d00e64e0000b4f305085300000002000d00f14e000008f405085400000002000d00fc4e *000070f405081400000001000d00064f00007cf405080c00000001000d00104f00007cf405082f *00000002000d001b4f0000b4f405080800000001000d00254f0000b4f405084d00000002000d00 *304f00000cf505080800000001000d003a4f00000cf505085900000002000d00454f000068f505 *085400000002000d00504f0000d0f505081400000001000d005a4f0000e0f50508260000000200 *0d00e539000000000000000000000400f1ff663a000000000000000000000400f1ff663a000000 *000000000000000400f1ff654f000038f605081000000001000d007c4f00002cf7050814000000 *01000d00864f000090f605084100000002000d00914f0000d4f605084100000002000d004f3c00 *0000000000000000000400f1ff9c4f000078f705081400000001000d00a64f000044f705080900 *000002000d00b14f000050f705081100000002000d004f3c000000000000000000000400f1ffbc *4f000078f705080400000001000d00d34f0000a4f705080c00000001000d00dd4f0000a4f70508 *0b00000002000d004f3c000000000000000000000400f1ff4f3c000000000000000000000400f1 *ff4f3c000000000000000000000400f1ffe64f0000b0f705080400000001000d00ff4f000010f8 *05080800000001000d000950000064f805081000000001000d001350000010f805082900000002 *000d001e50000048f805080c00000001000d002850000048f805080b00000002000d0031500000 *64f805082400000002000d004f3c000000000000000000000400f1ff3c500000d8f80508080000 *0001000d0046500000a8f805080800000001000d0050500000a8f805082800000002000d005950 *0000d8f805081400000002000d004f3c000000000000000000000400f1ff6250000040f9050808 *00000001000d006c5000000cf905080800000001000d00765000000cf905082b00000002000d00 *7f50000040f905081400000002000d00ad31000000000000000000000400f1ff88500000c0f905 *080800000001000d009250000088f905080800000001000d009c50000088f90508110000000200 *0d00a5500000a4f905080800000001000d00af500000a4f905081400000002000d00b8500000c0 *f905081500000002000d00ad31000000000000000000000400f1ffad3100000000000000000000 *0400f1ffad31000000000000000000000400f1ffad31000000000000000000000400f1ffad3100 *0000000000000000000400f1ffc1500000e8fa05081000000001000d00e2500000dcfb05081400 *000001000d00ec50000040fb05084100000002000d00f750000084fb05084100000002000d0094 *13000000000000000000000400f1ff0251000010fc05080400000001000d009413000000000000 *000000000400f1ff23510000b4fc05080400000001000d004937000000000000000000000400f1 *ff4451000054fe05080c00000001000d004e51000054fe05089e01000002000d005951000070fd *05080800000001000d006351000070fd05082d00000002000d006e510000a8fd05080800000001 *000d0078510000a8fd05082f00000002000d0083510000e0fd05080800000001000d008d510000 *e0fd05082f00000002000d009851000018fe05080800000001000d00a251000018fe05082f0000 *0002000d004937000000000000000000000400f1ff7238000000000000000000000400f1ff7238 *000000000000000000000400f1ffad510000140006080800000001000d00b65100001400060826 *00000002000d007238000000000000000000000400f1ffb738000000000000000000000400f1ff *b738000000000000000000000400f1ffbe510000a40006080400000001000d00d4510000dc0106 *080c00000001000d00de510000d80006080b00000002000d00e9510000ec000608080000000100 *0d00f3510000ec0006081100000002000d00fc5100000c0106080c00000001000d00065200000c *0106083400000002000d000f520000400106082300000002000d001a5200007801060814000000 *01000d0024520000840106080c00000001000d002e520000840106082700000002000d00375200 *00b80106080c00000001000d0041520000b80106081700000002000d004a520000dc0106081500 *000002000d00b738000000000000000000000400f1ff53520000f40106080400000001000d00b7 *38000000000000000000000400f1ff6a5200005c0206080c00000001000d008f52000058050608 *1000000001000d0099520000ac0206080b00000002000d00a4520000b80206080b00000002000d *00af520000c40206080b00000002000d00ba520000d00206080500000002000d00c45200007404 *06083000000002000d00cf520000e00206080800000001000d00d9520000e00206084600000002 *000d00e2520000300306080800000001000d00ec520000300306082a00000002000d00f7520000 *640306080800000001000d0001530000640306083d00000002000d000a530000a4030608340000 *0002000d0015530000d80306081400000002000d0020530000000406081400000001000d002a53 *00000c0406080c00000001000d00345300000c0406082a00000002000d003d530000440406080c *00000001000d0047530000440406081700000002000d0050530000740406081800000001000d00 *5a530000a40406083d00000002000d0065530000e40406081100000002000d006f5300001c0506 *082400000001000d0079530000280506080c00000001000d0083530000280506081e0000000200 *0d008c530000580506082600000002000d00c338000000000000000000000400f1ff9753000080 *0506081000000001000d00b5530000d80706080c00000001000d00bf530000cc0a060814000000 *01000d00c9530000f80506080800000002000d00d4530000080606080800000001000d00de5300 *00080606085100000002000d00e95300005c0606083700000002000d00f4530000a80606081400 *000001000d00fe530000b40606080c00000001000d0008540000b40606083000000002000d0013 *540000f00606080c00000001000d001d540000f00606085000000002000d002854000040070608 *0800000002000d0033540000540706080c00000001000d003d540000540706083000000002000d *0048540000840706083100000002000d0053540000cc0706081400000001000d005d540000d807 *06085700000002000d0068540000300806080800000002000d0073540000440806080c00000001 *000d007d540000440806083000000002000d0088540000800806080c00000001000d0092540000 *800806085e00000002000d009d540000e00806083a00000002000d00a8540000280906080c0000 *0001000d00b2540000280906083000000002000d00bd540000640906080c00000001000d00c754 *0000640906085e00000002000d00d2540000c40906083a00000002000d00dd540000140a060814 *00000001000d00e7540000140a06080c00000002000d00f2540000340a06081400000001000d00 *fc540000340a06080f00000002000d0007550000500a06080c00000001000d0011550000500a06 *083000000002000d001c550000800a06083700000002000d00c338000000000000000000000400 *f1ff27550000cc0a06080800000001000d0042550000080d06081400000001000d004c55000008 *0b06080f00000002000d0057550000200b06080800000001000d0061550000200b060844000000 *02000d006a5500006c0b06080800000001000d00745500006c0b06083000000002000d007f5500 *00a80b06080c00000001000d0089550000a80b06085100000002000d0094550000040c06080800 *000001000d009e550000040c06081500000002000d00a7550000240c06080800000001000d00b1 *550000240c06083000000002000d00bc550000600c06080c00000001000d00c6550000600c0608 *7b00000002000d00cf550000dc0c06081500000002000d00c338000000000000000000000400f1 *ffc338000000000000000000000400f1ffc338000000000000000000000400f1ffc33800000000 *0000000000000400f1ffc338000000000000000000000400f1ffc3380000000000000000000004 *00f1ffc338000000000000000000000400f1ffc338000000000000000000000400f1ffc3380000 *00000000000000000400f1ffc338000000000000000000000400f1ffc338000000000000000000 *000400f1ffc338000000000000000000000400f1ffc338000000000000000000000400f1ffc338 *000000000000000000000400f1ffc338000000000000000000000400f1ff253900000000000000 *0000000400f1ff2539000000000000000000000400f1ffda550000d01006080800000001000d00 *2539000000000000000000000400f1ff8439000000000000000000000400f1ff84390000000000 *00000000000400f1ff8439000000000000000000000400f1fff5550000c8130608140000000100 *0d00ff550000f01106084600000002000d000a560000401206080800000001000d001456000040 *1206084500000002000d001d560000881206081500000002000d0028560000b412060814000000 *01000d0032560000bc1206080800000001000d003c560000bc1206080f00000002000d00455600 *00cc1206081c00000002000d0050560000e81206084400000002000d00282a0000341306080800 *000001000d00322a0000341306084300000002000d005b560000781306081500000002000d0066 *560000a41306081400000001000d0070560000a41306080f00000002000d008439000000000000 *000000000400f1ff7b560000701606081400000001000d0085560000fc1306080800000001000d *008f560000fc1306085500000002000d00985600005c1406080800000001000d00a25600005c14 *06081500000002000d00ab560000741406085e00000002000d00b6560000dc1406080800000001 *000d00c0560000dc1406084200000002000d00c9560000201506081500000002000d00d4560000 *4c1506081400000001000d00de5600004c1506081400000002000d00e956000068150608080000 *0001000d00f3560000681506084200000002000d00fc560000ac1506081200000002000d000757 *0000c81506080800000001000d0011570000c81506083a00000002000d001a5700000416060824 *00000002000d00255700003c1606081400000001000d002f5700003c1606082000000002000d00 *8439000000000000000000000400f1ffe539000000000000000000000400f1ffe5390000000000 *00000000000400f1ffe539000000000000000000000400f1ffe539000000000000000000000400 *f1ffe539000000000000000000000400f1ffe539000000000000000000000400f1ffe539000000 *000000000000000400f1ff2e310000501706080800000001000d003a5700005017060851000000 *02000d00e539000000000000000000000400f1ff45570000d81706080800000001000d004f5700 *00d81706081200000002000d004f3c000000000000000000000400f1ff585700000c1806080800 *000001000d00625700000c1806080b00000002000d00ad31000000000000000000000400f1ff6b *5700004c1806080800000001000d00755700004c1806080b00000002000d00ad31000000000000 *000000000400f1ffb738000000000000000000000400f1ff7e570000581806080800000001000d *00a25700008c1906080c00000001000d00ac5700001c1906080c00000001000d00b65700001c19 *06086300000002000d00bf5700008c1906080900000002000d00b7380000000000000000000004 *00f1ffb738000000000000000000000400f1ffc8570000981906080400000001000d00b7380000 *00000000000000000400f1ffb738000000000000000000000400f1ffe9570000c8190608040000 *0001000d00b738000000000000000000000400f1ff0b580000241c06081800000001000d001558 *0000481a06080500000002000d001f580000241c06083000000002000d002a580000581a060808 *00000001000d0034580000581a06083500000002000d003f580000981a06080800000001000d00 *49580000981a06085c00000002000d0052580000fc1a06080800000001000d005c580000fc1a06 *080c00000002000d0065580000141b06080c00000001000d006f580000141b0608330000000200 *0d007a580000501b06080800000001000d0084580000501b06080900000002000d008d58000064 *1b06080800000001000d0097580000641b06081b00000002000d00a0580000881b060808000000 *01000d00aa580000881b06086200000002000d00b3580000f41b06080800000001000d00bd5800 *00f41b06081800000002000d00b738000000000000000000000400f1ffc6580000541c06080c00 *000001000d00dc580000f81c06080c00000001000d00e6580000c01c06080c00000001000d00f0 *580000c01c06082900000002000d00f9580000f81c06080900000002000d00b738000000000000 *000000000400f1ff02590000041d06080c00000001000d0025590000701f06080c00000001000d *002f5900009c1d06080200000002000d0039590000181e06085400000002000d0044590000a81d *06080800000001000d004e590000a81d06085700000002000d0057590000181e06081800000001 *000d0061590000741e06080800000001000d006b590000741e06084e00000002000d0074590000 *d01e06080c00000001000d007e590000d01e06087200000002000d0087590000501f06080c0000 *0001000d0091590000501f06081100000002000d009a590000701f06082c00000002000d00c338 *000000000000000000000400f1ffa35900009c1f06085000000001000d00c1590000482006080c *00000001000d00cb590000142006080800000002000d00d5590000302006081400000001000d00 *df590000302006080c00000001000d00e959000048200608b900000002000d00c3380000000000 *00000000000400f1ffc338000000000000000000000400f1ff2539000000000000000000000400 *f1ff8439000000000000000000000400f1ff8439000000000000000000000400f1fff259000010 *2406081400000001000d00fc590000a82106085600000002000d00075a00000822060808000000 *01000d00115a0000082206084200000002000d001a5a00004c2206081500000002000d00255a00 *00782206081400000001000d002f5a0000802206080800000001000d00395a0000802206083c00 *000002000d00425a0000bc2206082e00000002000d004d5a0000f42206080800000001000d0057 *5a0000f42206084200000002000d00605a0000382306081200000002000d006b5a000054230608 *0800000001000d00755a0000542306085000000002000d007e5a0000a42306082400000002000d *00895a0000dc2306081400000001000d00935a0000dc2306082000000002000d00e53900000000 *0000000000000400f1ff9e5a0000542506080800000001000d00a85a0000e82406080800000001 *000d00b25a0000942406080800000001000d00bc5a0000942406084900000002000d00c75a0000 *e82406086100000002000d00d25a0000542506082f00000002000d004f3c000000000000000000 *000400f1ffdd5a0000ec2506080800000001000d00e75a0000ec2506083a00000002000d00ac3d *000000000000000000000400f1ffdd42000000000000000000000400f1fff05a00002427060808 *00000001000d00fa5a0000c42606080900000002000d00055b0000d82606080800000001000d00 *0f5b0000d82606081f00000002000d00185b0000f82606080f00000002000d00235b00001c2706 *081400000001000d002d5b0000242706081800000002000d00b738000000000000000000000400 *f1ff365b0000f42706081800000001000d00405b0000702806081800000001000d004a5b0000c4 *2706080200000002000d00545b0000f42706082100000002000d005f5b0000d027060808000000 *01000d00695b0000d02706080b00000002000d00725b0000182806080200000002000d007c5b00 *00702806084400000002000d00875b0000242806080800000001000d00915b0000242806083100 *000002000d00b738000000000000000000000400f1ffb738000000000000000000000400f1ffb7 *38000000000000000000000400f1ffb738000000000000000000000400f1ff9a5b000098290608 *0400000001000d00b65b0000002c06080c00000001000d00c05b0000dc2906080800000001000d *00ca5b0000dc2906086400000002000d00d35b0000482a06080800000001000d00dd5b0000482a *06081100000002000d00e65b0000642a06080800000001000d00f05b0000642a06084200000002 *000d00fb5b0000a82a06080200000002000d00055c0000d82a06082100000002000d00105c0000 *b82a06080c00000001000d001a5c0000b82a06080800000002000d00235c0000d82a0608180000 *0001000d002d5c0000042b06080800000001000d00375c0000042b06083a00000002000d00405c *00004c2b06080c00000001000d004a5c00004c2b06084000000002000d00535c0000982b06080c *00000001000d005d5c0000982b06085b00000002000d00665c0000002c06081200000002000d00 *b738000000000000000000000400f1ffb738000000000000000000000400f1ffb7380000000000 *00000000000400f1ff6f5c00009c2c06080800000001000d00795c0000482c0608080000000100 *0d00835c0000482c06084900000002000d008c5c00009c2c06082d00000002000d00b738000000 *000000000000000400f1ff955c0000382d06080800000001000d009f5c0000382d060833000000 *02000d00b738000000000000000000000400f1ffa85c00006c2d06080400000001000d00c25c00 *00e82e06080800000001000d00cc5c0000b02d06080800000001000d00d65c0000b02d06083c00 *000002000d00e15c0000f42d06080800000001000d00eb5c0000f42d06085100000002000d00f4 *5c0000502e06080800000001000d00fe5c0000502e06081500000002000d00075d0000702e0608 *0800000001000d00115d0000702e06081200000002000d001a5d00008c2e06080800000001000d *00245d00008c2e06085400000002000d002d5d0000e82e06081800000002000d00b73800000000 *0000000000000400f1ffb738000000000000000000000400f1ff365d0000d82f06080800000001 *000d00405d0000d82f06083300000002000d00b738000000000000000000000400f1ff495d0000 *ec3006080800000001000d00535d0000883006080800000001000d005d5d000088300608590000 *0002000d00665d0000ec3006084600000002000d00b738000000000000000000000400f1ff6f5d *0000343106080400000001000d00835d0000dc3106080c00000001000d008d5d00007031060808 *00000001000d00975d0000703106086000000002000d00a05d0000dc3106083b00000002000d00 *c338000000000000000000000400f1ffc338000000000000000000000400f1ffc3380000000000 *00000000000400f1ffc338000000000000000000000400f1ffc338000000000000000000000400 *f1ffc338000000000000000000000400f1ffc338000000000000000000000400f1ffc338000000 *000000000000000400f1ffc338000000000000000000000400f1ffc33800000000000000000000 *0400f1ffc338000000000000000000000400f1ffc338000000000000000000000400f1ffc33800 *0000000000000000000400f1ffc338000000000000000000000400f1ffc3380000000000000000 *00000400f1ffc338000000000000000000000400f1ffc338000000000000000000000400f1ffc3 *38000000000000000000000400f1ffc338000000000000000000000400f1ffc338000000000000 *000000000400f1ffc338000000000000000000000400f1ffc338000000000000000000000400f1 *ffc338000000000000000000000400f1ffc338000000000000000000000400f1ffc33800000000 *0000000000000400f1ffc338000000000000000000000400f1ffc3380000000000000000000004 *00f1ffc338000000000000000000000400f1ffc338000000000000000000000400f1fff4380000 *00000000000000000400f1ffa95d0000003c06080800000001000d00b35d0000003c0608240000 *0002000d00e539000000000000000000000400f1ffe539000000000000000000000400f1ffac3d *000000000000000000000400f1ffdd42000000000000000000000400f1ffdd4200000000000000 *0000000400f1ffbc5d0000c03d06080800000001000d00c65d0000603d06080800000001000d00 *d05d0000603d06085800000002000d00db5d0000c03d06084600000002000d00dd420000000000 *00000000000400f1ffe45d0000c83e06080800000001000d00ee5d00003c3e0608090000000200 *0d00f95d0000503e06080800000001000d00035e0000503e06080800000002000d000c5e000060 *3e06080800000001000d00165e0000603e06083a00000002000d001f5e00009c3e06080f000000 *02000d002a5e0000c03e06081400000001000d00345e0000c83e06081800000002000d00b73800 *0000000000000000000400f1ff3d5e0000003f06080800000001000d00475e0000003f06082600 *000002000d00b738000000000000000000000400f1ffb738000000000000000000000400f1ff50 *5e0000384006080800000001000d005a5e0000903f06082d00000002000d00655e0000c03f0608 *2d00000002000d00705e0000044006081400000001000d007a5e0000044006080f00000002000d *00855e0000144006080500000002000d00905e0000304006081400000001000d009a5e00003840 *06083000000002000d00b738000000000000000000000400f1ffa55e0000684006080400000001 *000d00ca5e0000904106080c00000001000d00d45e00009c4006081400000002000d00df5e0000 *b84006080800000001000d00e95e0000b84006081100000002000d00f25e0000d84006080c0000 *0001000d00fc5e0000d84006082e00000002000d00055f0000084106080c00000002000d00105f *0000284106081400000001000d001a5f0000344106080c00000001000d00245f0000344106082a *00000002000d002d5f00006c4106080c00000001000d00375f00006c4106081700000002000d00 *405f0000904106081500000002000d00b738000000000000000000000400f1ffb7380000000000 *00000000000400f1ffdd42000000000000000000000400f1ff495f00005c440608180000000100 *0d00535f0000f04206080500000002000d005d5f00005c4406083000000002000d00685f000000 *4306080800000001000d00725f000000430608a300000002000d007d5f0000ac43060808000000 *01000d00875f0000ac4306085600000002000d00905f00000c4406080800000001000d009a5f00 *000c4406081200000002000d00a35f0000284406080800000001000d00ad5f0000284406081b00 *000002000d00c338000000000000000000000400f1ffc338000000000000000000000400f1ffc3 *38000000000000000000000400f1ffc338000000000000000000000400f1ffc338000000000000 *000000000400f1ffc338000000000000000000000400f1ffc338000000000000000000000400f1 *ffc338000000000000000000000400f1ffc338000000000000000000000400f1ffc33800000000 *0000000000000400f1ffc338000000000000000000000400f1ffc3380000000000000000000004 *00f1ffc338000000000000000000000400f1ffc338000000000000000000000400f1ffc3380000 *00000000000000000400f1ffc338000000000000000000000400f1ffc338000000000000000000 *000400f1ffc338000000000000000000000400f1ffc338000000000000000000000400f1ffc338 *000000000000000000000400f1ffc338000000000000000000000400f1ffc33800000000000000 *0000000400f1ffc338000000000000000000000400f1ffc338000000000000000000000400f1ff *c338000000000000000000000400f1ffc338000000000000000000000400f1ffc3380000000000 *00000000000400f1ffc338000000000000000000000400f1ffc338000000000000000000000400 *f1ffc338000000000000000000000400f1ffdd42000000000000000000000400f1ffb65f000000 *000000000000000400f1ffc15f000000000000000000000400f1ffce5f00000000000000000000 *0400f1ffd95f00005c4a06080600000002000d00e25f00000c1908080400000001001100fb5f00 *0000000000000000000400f1ff0260000000000000000000000400f1ff0b600000102a08080400 *0000010018001c60000000000000000000000400f1ff29600000142a0808040000000100180037 *600000182a08080c0000000100180045600000242a080804000000010018005060000000000000 *000000000400f1ff5b600000282a080804000000010018006b60000000000000000000000400f1 *ff7660000010190808040000000100110085600000502a080804000000010018009d6000005c59 *0608ea04000002000d00a6600000156b0608dd00000002000d00b7600000582a08080400000001 *001800c3600000c86306085801000002000d00d7600000a76706084400000002000d00ef600000 *542a080804000000010018000a6100006f6106082500000002000d001a610000b8620608260000 *0002000d0026610000906306081c00000002000d002f6100005c2a080804000000010018003b61 *0000206506083000000002000d004c610000af650608e601000002000d005a610000f26b0608d6 *00000002000d006e610000c86c06085000000002000d008061000000000000000000000400f1ff *8961000000000000000000000400f1ff93610000842a080804000000010018009c610000882a08 *080400000001001800a66100008c2a08080400000001001800b96100008d7106087b0000000200 *0d00c7610000087206080e00000002000d00d461000016720608a300000002000d00e4610000a0 *2a08088000000001001800f0610000202b08088000000001001800fd6100001d76060822000000 *02000d000e62000000000000000000000400f1ff17620000a42b08080400000001001800276200 *00a82b0808040000000100180030620000ac2b0808040000000100180041620000127706086a00 *000002000d005462000000000000000000000400f1ff5c620000b02b080804000000010018006b *620000b42b080804000000010018007c620000b82b080804000000010018008f620000bc2b0808 *04000000010018009f620000c02b08080400000001001800ac620000c42b080804000000010018 *00bc620000c82b08080400000001001800cd620000cc2b08080400000001001800d9620000d02b *08080400000001001800e8620000d42b08080400000001001800f8620000d82b08080400000001 *00180005630000dc2b0808040000000100180015630000e02b0808080000000100180022630000 *e82b0808080000000100180030630000f02b080804000000010018003e630000f42b0808040000 *00010018004a630000f82b0808040000000100180059630000fc2b080804000000010018006663 *0000002c0808040000000100180073630000042c0808040000000100180080630000082c080804 *00000001001800916300000c2c08080400000001001800a1630000102c08080400000001001800 *af630000787b06081f00000002000d00b8630000d67b06081700000002000d00c3630000182c08 *080400000001001800d1630000142c08080400000001001800da63000000000000000000000400 *f1ffe463000000000000000000000400f1fff363000000000000000000000400f1fffd6300008b *9106080100000002000d000e640000539106083800000002000d001f6400002b91060828000000 *02000d002e64000000000000000000000400f1ff3d6400003c2c080804000000010018004a6400 *0000000000000000000400f1ff52640000402c0808040000000100180067640000109406082d00 *000002000d007364000000000000000000000400f1ff7a64000000000000000000000400f1ff89 *64000000000000000000000400f1ff9664000000000000000000000400f1ff9f64000000000000 *000000000400f1ffab64000000000000000000000400f1ffbb64000000000000000000000400f1 *ffc464000000000000000000000400f1ffd164000018be06080200000002000d00de6400001cbe *06081900000002000d00ed64000038be06080200000002000d00fa6400003cbe06081900000002 *000d000965000058be06080200000002000d00166500005cbe06081900000002000d0025650000 *78be06080200000002000d00326500007cbe06081900000002000d004165000098be0608020000 *0002000d004e6500009cbe06081900000002000d005d650000b8be06080200000002000d006b65 *0000bcbe06081900000002000d007b650000d8be06080200000002000d0089650000dcbe060819 *00000002000d0099650000f8be06080200000002000d00a7650000fcbe06081900000002000d00 *b765000018bf06080200000002000d00c56500001cbf06081900000002000d00d565000038bf06 *080200000002000d00e46500003cbf06081900000002000d00f565000058bf0608020000000200 *0d00046600005cbf06081900000002000d001566000078bf06080200000002000d00246600007c *bf06081900000002000d003566000098bf06080200000002000d00446600009cbf060819000000 *02000d0055660000b8bf06080200000002000d0064660000bcbf06081900000002000d00756600 *00d8bf06080200000002000d0084660000dcbf06081900000002000d0095660000f8bf06080200 *000002000d00a4660000fcbf06081900000002000d00b566000018c006080200000002000d00c4 *6600001cc006081900000002000d00d566000038c006080200000002000d00e56600003cc00608 *1900000002000d00f766000058c006080200000002000d00086700005cc006081900000002000d *001b67000078c006080200000002000d002d6700007cc006081900000002000d004167000098c0 *06080200000002000d00546700009cc006081900000002000d0069670000b8c006080200000002 *000d007d670000bcc006081900000002000d009367000000000000000000000400f1ffa0670000 *00000000000000000400f1ffb267000000d406080b00000002000d00c967000048d40608110000 *0002000d00df67000000000000000000000400f1ffea67000000000000000000000400f1fffd67 *00001ceb06081200000002000d00146800000aeb06081200000002000d002b680000f8ea060812 *00000002000d0042680000e6ea06081200000002000d0059680000d4ea06081200000002000d00 *70680000c2ea06081200000002000d0087680000b0ea06081200000002000d009e6800009eea06 *081200000002000d00b56800008cea06081200000002000d00ca6800003ceb0608120000000200 *0d00e46800005ceb06081200000002000d00fb6800007ceb06081d00000002000d0011690000a8 *eb06082900000002000d0027690000e0eb06081d00000002000d003d6900000cec06080f000000 *02000d005269000028ec06080500000002000d006969000064ec06080500000002000d00776900 *0074ec06080600000002000d008c69000084ec06080900000002000d009c69000098ec06080900 *000002000d00ac690000acec06080900000002000d00bc690000c0ec06080900000002000d00cc *690000d4ec06080900000002000d00dc690000e8ec06080900000002000d00ec690000fcec0608 *0900000002000d00fc69000010ed06080900000002000d000c6a000024ed06080500000002000d *00216a000034ed06080500000002000d00346a000044ed06080500000002000d00496a000054ed *06080500000002000d00636a000064ed06086f00000002000d00776a0000dced06082300000002 *000d008e6a000008ee06086f00000002000d00a66a000080ee06080d00000002000d00b46a0000 *98ee06080d00000002000d00c86a0000b0ee06080d00000002000d00d76a0000c8ee06080d0000 *0002000d00eb6a0000e0ee06080d00000002000d00026b0000f8ee06080d00000002000d00146b *000010ef06080d00000002000d002a6b000028ef06080d00000002000d003e6b000040ef06080d *00000002000d00536b000058ef06080d00000002000d006b6b000070ef06080d00000002000d00 *826b000088ef06080d00000002000d00956b0000a0ef06080d00000002000d00b26b0000b8ef06 *080d00000002000d00cb6b0000d0ef06080d00000002000d00df6b0000e8ef06080d0000000200 *0d00f66b000000f006080d00000002000d00146c000018f006080d00000002000d00266c000000 *000000000000000400f1ff346c000000000000000000000400f1ff446c000024f106080c000000 *01000d005b6c000024f106082e00000002000d00716c0000b8f106080c00000001000d00886c00 *00b8f106082e00000002000d009e6c00004cf206080c00000001000d00b56c00004cf206082e00 *000002000d00cb6c0000e0f206080c00000001000d00e26c0000e0f206082e00000002000d00f8 *6c000074f306080c00000001000d000f6d000074f306082e00000002000d00256d000008f40608 *0c00000001000d003c6d000008f406082e00000002000d00526d00009cf406080c00000001000d *00696d00009cf406082e00000002000d007f6d000030f506080c00000001000d00966d000030f5 *06082e00000002000d00ac6d0000c4f506080c00000001000d00c36d0000c4f506082e00000002 *000d00d96d000058f606080c00000001000d00f06d000058f606082e00000002000d00066e0000 *ecf606080c00000001000d001e6e0000ecf606082e00000002000d00356e000080f706080c0000 *0001000d004d6e000080f706082e00000002000d00646e000014f806080c00000001000d007c6e *000014f806082e00000002000d00936e0000a8f806080c00000001000d00ab6e0000a8f806082e *00000002000d00c26e00003cf906080c00000001000d00da6e00003cf906082e00000002000d00 *f16e0000d0f906080c00000001000d00096f0000d0f906082e00000002000d00206f000064fa06 *080c00000001000d00396f000064fa06080800000002000d00516f0000a0fa06080c0000000100 *0d006a6f0000a0fa06080800000002000d00826f0000dcfa06080c00000001000d009b6f0000dc *fa06080800000002000d00b36f000018fb06080c00000001000d00cc6f000018fb060808000000 *02000d00e46f000054fb06080c00000001000d00fd6f000054fb06080800000002000d00157000 *0090fb06080c00000001000d002e70000090fb06080800000002000d0046700000ccfb06080c00 *000001000d005f700000ccfb06080800000002000d007770000008fc06080c00000001000d0090 *70000008fc06080800000002000d00a870000044fc06080c00000001000d00c170000044fc0608 *0800000002000d00d970000080fc06080c00000001000d00f270000080fc06080800000002000d *000a710000bcfc06080c00000001000d0024710000bcfc06080800000002000d003d710000f8fc *06080c00000001000d0057710000f8fc06080800000002000d007071000034fd06080c00000001 *000d008a71000034fd06080800000002000d00a371000070fd06080c00000001000d00bd710000 *70fd06080800000002000d00d6710000acfd06080c00000001000d00f0710000acfd0608080000 *0002000d0009720000e8fd06080c00000001000d0023720000e8fd06080800000002000d003c72 *000000000000000000000400f1ff477200003c0607080600000002000d00597200000000000000 *0000000400f1ff66720000442c0808040000000100180070720000b1070708dd00000002000d00 *7f7200002e0a07082a00000002000d008a720000930907087500000002000d0098720000000000 *00000000000400f1ffa5720000580a07081200000002000d00b472000000000000000000000400 *f1ffc372000000000000000000000400f1ffc8720000c82208080400000001001100d772000048 *2c08080400000001001800ec720000940a07086800000002000d00fb720000502c080804000000 *01001800fd7200006c2c0808040000000100180008730000542c08080400000001001800117300 *004c2c0808040000000100180020730000024007082000000002000d0032730000682c08080400 *00000100180040730000702c0808040000000100180052730000742c080804000000010018005d *730000782c08080400000001001800657300007c2c0808040000000100180070730000653f0708 *6900000002000d007f730000db380708ca00000002000d0096730000582c080804000000010018 *009f730000d92707080e08000002000d00a8730000a5390708ae01000002000d00be730000031c *07081600000002000d00c87300001d1b07082400000002000d00db7300005c2c08080400000001 *001800e6730000602c08080400000001001800f6730000533b0708a201000002000d0006740000 *802c080804000000010018001c740000842c080804000000010018002b740000e72f0708890600 *0002000d003f74000045190708d801000002000d0056740000ce3f07083400000002000d006e74 *0000121d07087d08000002000d0077740000191c07087b00000002000d0080740000941c07087e *00000002000d008a740000642c08080400000001001800997400008f2507088901000002000d00 *ad740000292707085e00000002000d00c7740000872707085200000002000d00d37400004c3d07 *081902000002000d00e2740000f53c07085700000002000d00f8740000882c0808040000000100 *180004750000703607086b02000002000d001175000076400708aa00000002000d002575000020 *4107082a02000002000d003875000000000000000000000400f1ff4475000074430708bd000000 *02000d0052750000314407082f04000002000d005f750000604807080e01000002000d006a7500 *006e4907084303000002000d007b750000b14c07083800000002000d008675000083530708c106 *000002000d0091750000e94c07080901000002000d00a4750000f24d07082902000002000d00b8 *7500001b5007088800000002000d00cd750000495307083a00000002000d00d475000000000000 *000000000400f1ffdb750000445a07081c00000002000d00e4750000605a07084500000002000d *00ec750000a55a07081100000002000d00f8750000b65a07081e00000002000d0003760000d45a *07082200000002000d0010760000f65a07083801000002000d00177600008c2c08080400000001 *00180020760000a05c07085f00000002000d002e760000ff5c07081300000002000d003b760000 *1d5f07088900000002000d004b76000000000000000000000400f1ff59760000cc2208081c0000 *00010011006776000000000000000000000400f1ff70760000507007084000000002000d008776 *000000000000000000000400f1ff907600007a7107087a00000002000d0098760000f471070871 *00000002000d00a8760000942c08080400000001001800b776000000000000000000000400f1ff *c276000000230808b000000001001100cd760000bb730708a600000002000d00db760000117c07 *08f400000002000d00e2760000057d07081d00000002000d00ed760000e97a0708280100000200 *0d00fd76000000000000000000000400f1ff0777000000000000000000000400f1ff0777000000 *000000000000000400f1ff0777000000000000000000000400f1ff077700000000000000000000 *0400f1ff0777000000000000000000000400f1ff1177000000000000000000000400f1ff1c7700 *0084e204086300000012000d0047770000d418080804000000110011006877000048f907080400 *000011001100aa770000ec0f08080400000011001100cb77000094f2070804000000110011000d *7800001c5706081f00000012000d001a78000028e8070804000000110011004e78000010fb0508 *2500000012000d0071780000e4e405080800000011000d009778000030f0070804000000110011 *00d97800008cc404085800000012000d0022790000dc0608080400000011001100647900001cc9 *05080800000011000d007f790000441208080400000011001100a379000070ff06084700000012 *000d00b6790000040308080400000011001100f679000010c004080700000012000d00267a0000 *48e605080800000011000d00427a00003cfc07080400000011001100847a00000c0805080c0000 *0012000d00be7a000018f607080400000011001100017b00000000000058000000120000000c7b *0000dce9070804000000110011004d7b00007c0a080804000000110011008f7b0000ec0e080804 *00000011001100c87b0000dcf5070804000000110011000b7c0000382e08080400000011001800 *1d7c0000a01708080400000011001100377c00002cef05082000000012000d00497c000000d406 *080c00000011000d00617c00008cc404080800000011000d00a97c00008ce70608790000001200 *0d00bf7c000094fe07080400000011001100017d000004c404080800000011000d00437d0000e4 *0f08080400000011001100617d0000248505083000000012000d00877d0000cc5706088e010000 *12000d009c7d0000d4f107080400000011001100de7d0000c8cb05080300000012000d00087e00 *005cf106080800000011000d001b7e0000acf5070804000000110011005d7e0000a0e507080400 *000011001100a87e000028ec07080400000011001100ea7e0000c410080804000000110011000e *7f00000000000023000000120000001e7f000000eb04080500000012000d005c7f00003bea0608 *0600000012000d00757f000040e707080400000011001100b97f00002802080804000000110011 *00fa7f000098ee06080800000011000d000d8000005c07080804000000110011004f80000010f5 *070804000000110011009180000094d406084f00000012000d00a5800000840608080400000011 *001100e7800000d4040808040000001100110028810000f8f4070804000000110011006a810000 *bc140808040000001100110089810000943405085f00000012000d00c0810000ac800508080000 *0011000d00e0810000eb5406080c00000012000d00e9810000004605080c00000011000d001d82 *0000000000000000000012000000258200000c0c080804000000110011006782000020ff06080c *00000011000d0079820000082006080c00000011000d009882000098c504080c00000012000d00 *c7820000480b05080300000012000d000083000080fd06080800000011000d0016830000e0fe04 *080800000011000d004d830000b8e5070804000000110011008f830000399006083c0000001200 *0d009f83000054ff07080400000011001100e1830000bc300508a900000012000d001684000048 *9d05080300000012000d0038840000bc8d06081800000012000d00428400000c0d080804000000 *1100110084840000084c06081b00000012000d008f840000108105080b00000012000d00aa8400 *00ec8906089d03000012000d00b68400001cda0408b300000012000d00e5840000001008080400 *000011001100ff84000004d705080c00000011000d0026850000e4f90708040000001100110068 *850000841905080300000012000d00a785000080c806080900000012000d00ba85000000020808 *0400000011001100fb8500002001080804000000110011003c8600001c04080804000000110011 *007d860000fce707080400000011001100b7860000b0fa06080800000011000d00cc86000080ee *06080800000011000d00d986000080f4070804000000110011001b870000a03606080800000011 *000d0032870000c813080804000000110011004d870000189d05080300000012000d0078870000 *e49905080700000012000d008d870000fc720708bf00000012000d00a2870000d80d05080c0000 *0011000d00db87000058eb04085d00000012000d001388000070e7070804000000110011005988 *0000009f05080300000012000d00718800007c1005080700000012000d009b880000f8e8040803 *00000012000d00de880000d0ef06080800000011000d00f1880000181708080400000011001100 *0989000000000000000000001200000010890000f8fd06080800000011000d002689000094fe06 *083500000012000d003989000080fd070804000000110011007b890000dcec0708040000001100 *1100bd890000143605084b00000012000d00f48900002014080804000000110011001c8a0000a0 *f2070804000000110011005e8a0000a01808080400000011001100878a0000740e080804000000 *11001100c98a0000f07d07087501000012020d00d28a00002c8405080800000011000d00ee8a00 *00fcff070804000000110011002f8b0000600d05081000000011000d006d8b00002cfa04082000 *000012000d00a98b0000d8e405080300000012000d00cd8b00009c0d080804000000110011000f *8c0000480b05080800000011000d00478c0000e4d105080c00000012000d005b8c000000fc0708 *04000000110011009d8c0000f0f607080400000011001100df8c0000b8f706084e00000012000d *00f48c0000ece707080400000011001100348d0000f0e607080400000011001100798d00005cf1 *06084e00000012000d008d8d00002c0808080400000011001100d08d00000cfc07080400000011 *001100128e00009ccb06089c00000012000d001c8e0000a0ec070804000000110011005f8e0000 *984e05080600000012000d009b8e00005c0e08080400000011001100dd8e000044cc06080c0000 *0011000d00f38e0000248505080c00000011000d00188f0000e8ef070804000000110011005a8f *000094f8070804000000110011009c8f000020a005080700000012000d00b08f00009cdf050829 *00000012000d00c88f0000841608080400000011001100e78f0000801205080600000012000d00 *28900000a8ff070804000000110011006a900000b017080804000000110011008490000020f707 *080400000011001100c6900000400a05081000000011000d000f910000c0e106081e0000001200 *0d001d910000901808080400000011001100379100004cf8070804000000110011007991000050 *f504080c00000012000d00b991000070ef06080800000011000d00cf9100000000000000000000 *12000000d6910000ace9070804000000110011001b920000d89005080700000012000d00379200 *005cdc04080700000012000d005d920000380205080c00000011000d0096920000b4d404080700 *000012000d00be920000940e0808040000001100110000930000d8e90708040000001100110048 *930000883405080300000012000d00939300003c0508080400000011001100d49300006cea0708 *04000000110011001594000004ec0708040000001100110057940000d8c006087000000011000d *006c940000143e06082600000012000d009e940000f83105080700000012000d00d79400009815 *05080700000012000d001095000030e807080400000011001100449500000cd604089500000012 *000d006c9500009c0f080804000000110011008295000064e807080400000011001100b8950000 *900705080c00000011000d00ef9500000000000052000000120000000c960000aa6d0608100000 *0012000d00179600009c2606082600000012000d00419600004409080804000000110011008396 *00004ce206085f00000012000d00959600004c1505084b00000012000d00c9960000689c050826 *00000012000d00eb960000d4fd070804000000110011002d970000c0e507080400000011001100 *71970000840708080400000011001100b3970000640b08080400000011001100f5970000a40808 *080400000011001100389800002c06080804000000110011007a980000ecf70708040000001100 *1100bc9800002cce05080c00000011000d00d298000010df04084900000012000d00fd980000a4 *09080804000000110011003f9900004c16080804000000110011006299000088fb070804000000 *11001100a4990000841b0508d100000012000d00db990000cc0e080804000000110011001d9a00 *0004a505085f00000012000d00369a0000d0e507080400000011001100759a00003d9406081500 *000012000d00809a00008c0908080400000011001100c29a0000f4090808040000001100110004 *9b0000a4f707080400000011001100469b0000d00d06080800000011000d00629b0000e0c30408 *0300000012000d00a39b0000189d05080800000011000d00cd9b0000103306085800000012000d *00e59b0000549705080600000012000d00019c00000cf007080400000011001100439c0000f8c4 *06080800000012000d00539c000098c605082d00000012000d00719c0000400f05082000000012 *000d00ad9c0000603e08088000000011001800b69c0000608506089a00000012000d00c59c0000 *0cd406082f00000012000d00d89c0000e08d05080700000012000d00f99c0000788a0508200000 *0012000d00259d0000f8d304080600000012000d00649d0000e8ed05080c00000011000d007b9d *0000bc3705080300000012000d00b89d000048e907080400000011001100fe9d0000b0d604080c *00000011000d003a9e0000b0a904081800000011000d00499e0000000000005300000012000000 *5e9e000014c305083700000012000d00749e0000384f06085200000012000d007d9e0000141608 *080400000011001100a09e0000403b06080300000012000d00c19e000030320608080000001100 *0d00d89e0000f408080804000000110011001a9f0000e4e607080400000011001100539f000044 *c604080c00000011000d00819f0000601308080400000011001100999f0000ec96060864000000 *12000d00a69f0000e40308080400000011001100e79f0000b0f904080c00000011000d0020a000 *00a4c406084900000012000d002da0000078f60708040000001100110070a0000060a305080300 *000012000d008ea00000e4f607080400000011001100d0a00000c47805086600000012000d00e7 *a0000018fc06081e00000012000d00fda00000e405080804000000110011003ea1000064030808 *04000000110011007fa10000240308080400000011001100bfa1000077e504087a00000012000d *00eaa1000044fa070804000000110011002ca200001c2406080c00000011000d0040a200003c10 *05080700000012000d0066a20000009d05080800000011000d008aa20000a4f407080400000011 *001100cca20000600b05080300000012000d0005a30000d17f06083805000012000d000fa30000 *00000000230000001200000021a3000038a004080c00000011000d0038a3000090f30708040000 *00110011007aa3000030f307080400000011001100bca300006c0808080400000011001100ffa3 *0000781006085800000012000d0026a400004cc305080700000012000d0042a40000dc2005080c *00000011000d006fa40000ec1105084b00000012000d00a8a4000040f406080800000011000d00 *bba40000380d06080800000011000d00d7a400001cf605080800000011000d00f5a40000140205 *080500000012000d0033a50000240f080804000000110011004aa50000a40a0808040000001100 *11008ca50000309705080300000012000d00a7a50000dc0508080400000011001100e8a5000044 *030808040000001100110029a60000501e05084100000012000d0060a60000d0bf040807000000 *12000d0088a6000044b106080c00000011000d009aa60000c74e06080800000012000d00a8a600 *00304506080800000011000d00d1a600002cfd0708040000001100110013a70000c4fb07080400 *00001100110055a70000acf306080800000011000d0068a700007c0608080400000011001100aa *a70000740608080400000011001100eca7000000f006080800000011000d0009a80000f0f10608 *0800000011000d001ca8000078ed070804000000110011005fa80000381d05080700000012000d *0095a80000e4d406084f00000012000d00afa8000004f807080400000011001100f1a800008c34 *05080700000012000d0027a90000e41105080700000012000d005fa90000b0a105080800000011 *000d0078a90000b4ea07080400000011001100baa9000080f707080400000011001100fca90000 *8ceb070804000000110011003eaa00001410080804000000110011005eaa0000200007080c0000 *0011000d0070aa0000889d06080c00000011000d007eaa0000c8a10508a900000012000d0093aa *0000b00008080400000011001100d4aa00004c070808040000001100110016ab0000c486050807 *00000012000d0033ab00007c7706088e00000012000d0044ab0000024e06081b00000012000d00 *51ab0000009d05080300000012000d0076ab0000ec0308080400000011001100b7ab0000900b05 *080800000011000d00f0ab0000bc13080804000000110011000fac000064180808040000001100 *110031ac0000bcfd06080800000011000d0047ac0000a0120808040000001100110066ac000058 *3405080800000011000d00a9ac000078fa05080800000011000d00ceac0000ec06080804000000 *1100110010ad0000d80f05080c00000012000d0047ad000000f106080c00000011000d005aad00 *007c2c0508a900000012000d00a1ad000030d404080800000011000d00d6ad0000fce405080800 *000011000d00f2ad000048ec06081200000012000d0000ae0000f4f80708040000001100110042 *ae00009c0a0808040000001100110084ae000034ab05087300000012000d0099ae00000e7a0608 *9d00000012000d00aaae0000f81008080400000011001100d5ae00007c14080804000000110011 *00efae0000b0e705085800000012000d0005af0000689b06081102000012000d0012af0000c001 *0808040000001100110053af000000000000230000001200000064af0000541108080400000011 *00110082af00002cee07080400000011001100c4af000088d904080c00000011000d00f4af0000 *30010808040000001100110035b00000ac8005080600000012000d0056b00000935d0708c70000 *0012000d0066b00000f4180808040000001100110088b00000fcfc07080400000011001100cab0 *0000643405080300000012000d0019b10000bcd205080c00000011000d002cb1000090c6050807 *00000012000d0049b10000c4ea05081000000011000d0068b10000b40e08080400000011001100 *aab100007cef07080400000011001100ecb100006ca505085f00000012000d0007b20000a8fc07 *08040000001100110049b20000bc3605083700000012000d0081b200008c080808040000001100 *1100c4b20000b8d304080800000011000d00fbb20000d406080804000000110011003db3000004 *0206080c00000011000d0055b30000c8ee0708040000001100110097b30000549f050808000000 *11000d00b2b30000cc3f05080700000012000d00e5b30000542005080800000011000d001ab400 *00da4e06081400000012000d0027b400005ccf05081000000011000d0050b4000000ed05085f00 *000012000d006db4000048100808040000001100110092b40000dc1308080400000011001100a9 *b40000881308080400000011001100c0b4000040e60708040000001100110001b50000a0fb0608 *1e00000012000d0017b5000048ed070804000000110011005ab5000014ee070804000000110011 *009cb50000583f05080700000012000d00c7b500002c1508080400000011001100dfb5000098a4 *05080c00000011000d0000b60000840b05080300000012000d003ab60000125d07088100000012 *000d004ab600002406080804000000110011008cb6000050e807080400000011001100c0b60000 *b4f60708040000001100110002b70000d48805089500000012000d001fb7000042c40608090000 *0012000d0035b70000483106082000000012000d004bb70000500d06080300000012000d0066b7 *0000140608080400000011001100a8b70000489d05080800000011000d00c9b70000234c06081b *00000012000d00d3b70000e8e306089300000012000d00dfb70000095f06082e00000012000d00 *f0b70000a80f0808040000001100110005b80000e0c304080800000011000d0045b8000088e507 *08040000001100110055b80000bc0e0808040000001100110097b8000040e80708040000001100 *1100ccb80000343405080300000012000d0018b90000d4130808040000001100110033b9000058 *3405080300000012000d0077b90000575306087e00000012000d0083b90000624a060892000000 *12000d0092b90000301708080400000011001100acb900003cff07080400000011001100eeb900 *00ccf00708040000001100110030ba00009c0b05080800000011000d006aba0000240c08080400 *000011001100acba0000940708080400000011001100eeba000074fd04080300000012000d0039 *bb0000ec3a05080700000012000d0083bb0000a41008080400000011001100a6bb000088010808 *0400000011001100e7bb000074070808040000001100110029bc000004f2070804000000110011 *006bbc000074f906080800000011000d007fbc0000914e06080800000012000d008cbc00000811 *08080400000011001100aabc0000098506080c00000012000d00b9bc0000dca205083700000012 *000d00ccbc0000f0cd05080800000011000d00e2bc00002c0e0808040000001100110024bd0000 *54f804085800000012000d0063bd00008cd606085400000012000d007abd0000e8ef0608080000 *0011000d0090bd000004e907080400000011001100cfbd000044fd04080300000012000d0018be *0000d89705080300000012000d0033be00004c240808000000001100f1ff3cbe0000d414080804 *000000110011005bbe0000bc04080804000000110011009cbe0000703405080300000012000d00 *efbe0000443205081000000011000d002cbf000018f306084e00000012000d0040bf000020fc05 *085d00000012000d0063bf000044d105080c00000011000d007abf00005ce70408100000001100 *0d00bebf000014c306081000000012000d00e3bf00001cfb0708040000001100110025c00000a8 *b205080700000012000d0044c0000038000808040000001100110084c00000784d050810000000 *11000d00bdc000003f0407089b00000012000d00d1c00000643405080800000011000d001fc100 *0040170808040000001100110039c10000f8f805080c00000011000d004ec10000800108080400 *00001100110090c100004c3a05089f00000012000d00d2c10000b0d604082900000012000d000f *c20000047705080800000011000d0044c20000380205082300000012000d007ec2000048010808 *0400000011001100bfc2000030df05085800000012000d00d3c20000f03706085800000012000d *00ebc200006c03080804000000110011002cc3000010f605080300000012000d0048c30000bc9c *05080800000011000d006ac30000acc004082000000012000d00a8c3000000000000c202000012 *000000b8c30000200007085300000012000d00cbc30000c80405080c00000011000d0008c40000 *70f8070804000000110011004ac4000070fe070804000000110011008cc4000080890608220000 *0012000d0097c40000cc0b08080400000011001100d9c400004c0e080804000000110011001bc5 *0000e4f3070804000000110011005dc5000034f904080c00000011000d0098c500009409080804 *00000011001100dac500009c1108080400000011001100f8c50000750507089b00000012000d00 *0cc600008c9805083700000012000d0021c60000a0fb06080800000011000d0036c60000181108 *08040000001100110053c6000010f80708040000001100110095c6000028a00508410000001200 *0d00aac60000440408080400000011001100ebc600003002080804000000110011002dc700008c *100808040000001100110061c70000cc4f05080c00000011000d00a7c7000024a606080c000000 *11000d00b6c70000c8c305080700000012000d00d1c70000b09704084901000012000000e8c700 *0004e50608c100000012000d00f8c70000184506080300000012000d0026c80000f8e804080800 *000011000d0068c80000fc100808040000001100110091c800004c0508080400000011001100d2 *c80000781806081800000011000d00f7c8000040f20708040000001100110039c900006c0b0508 *0800000011000d0071c900001ce904080800000011000d00b0c9000064ed06080800000011000d *00c3c90000849705080800000011000d00dcc90000807605082800000012000d0020ca0000042b *0508b300000012000d0068ca00008410080804000000110011008cca000070d905081000000011 *000d00b1ca0000081708080400000011001100c8ca0000000000000000000012000000d2ca0000 *08d505082f00000012000d00f8ca0000f8e8070804000000110011003fcb0000180b0508030000 *0012000d0078cb00009c4606082100000012000d0084cb0000c34706081100000012000d0093cb *0000d80b05080800000011000d00d1cb0000d89105082300000012000d00e6cb000018e9070804 *000000110011002ecc00007ce70708040000001100110071cc0000441005083700000012000d00 *98cc0000309705080800000011000d00b2cc0000ec1508080400000011001100cccc0000a40508 *0804000000110011000dcd00009c3805084b00000012000d0050cd00001cbe04080c0000001100 *0d005dcd0000d0c305084b00000012000d0079cd00004c2a0808040000001100180085cd0000be *4806081d00000012000d009dcd00009c0808080400000011001100e0cd00008cf705080c000000 *12000d00f9cd00007002080804000000110011003bce000054870608b200000012000d004ace00 *000c4005080700000012000d0085ce0000400108080400000011001100c6ce0000081e05080700 *000012000d00fbce0000047705085800000012000d0031cf0000143e06080c00000011000d0062 *cf0000149705080800000011000d007dcf00002cc906080900000012000d0090cf0000674d0608 *2300000012000d009ccf00009c1008080400000011001100c3cf0000101305080c00000011000d *0002d00000b8d304080600000012000d003ad0000034e8070804000000110011006ed000000903 *07089b00000012000d0082d00000143d06081800000011000d00a3d0000098ca05080c00000011 *000d00c6d00000d04406080800000011000d00f5d0000070f604082000000012000d002ad10000 *c4fe070804000000110011006cd10000ac9f05080c00000011000d0083d100003c0c0808040000 *0011001100c5d1000094f50708040000001100110007d2000024f30708040000001100110049d2 *0000f8eb070804000000110011008bd200006cc205082300000012000d00a2d20000dcc1050887 *00000012000d00bdd20000740a08080400000011001100ffd20000080208080400000011001100 *40d30000fc0c0808040000001100110082d3000048c804082000000012000d00c4d30000f77206 *081000000012000d00d4d30000d4090808040000001100110016d4000070c704080c0000001100 *0d0045d40000802d06082500000012000d0061d400004c7205080c00000011000d00a6d4000060 *9d05080800000011000d00cdd40000f03b06080500000012000d00e3d40000248105084b000000 *12000d00fad4000024f706080800000011000d000ed50000b43906085800000012000d0026d500 *00c8e50708040000001100110059d5000094c406080800000011000d0068d5000014ae06082203 *000012000d0078d500006c0408080400000011001100b9d5000098e507080400000011001100f7 *d50000302d05089500000012000d003bd60000108105080c00000011000d0055d60000689c0508 *0c00000011000d0076d6000000f007080400000011001100b8d60000b24706081100000012000d *00c6d60000e01008080400000011001100ead6000024d805081000000011000d000ad700007c15 *0808040000001100110021d700007c0e0808040000001100110063d70000602a08080400000011 *0018006dd70000d0150808040000001100110085d70000ac9905080700000012000d009ed70000 *24fc07080400000011001100e0d7000060f006082f00000012000d00f4d7000090170808040000 *00110011000ed800006415080804000000110011002bd80000214f06081700000012000d0037d8 *0000303206085800000012000d004fd80000c09e04080700000012000d0060d80000ee4e06081b *00000012000d006ed80000d30107089b00000012000d0082d80000881808080400000011001100 *b6d80000000000007c00000012000000c7d800000cec06080c00000011000d00dbd80000ac1108 *080400000011001100fbd80000108f05082300000012000d0022d900003cf60708040000001100 *110065d90000400f080804000000110011008ed90000bc8005080800000011000d00b1d9000070 *9105085f00000012000d00c5d90000300b05080300000012000d00fed9000018f3060808000000 *11000d0011da00001c000808040000001100110057da0000c0f60708040000001100110099da00 *00117706080100000012000d00acda00002f4906080b00000012000d00beda0000b82805083700 *000012000d00f2da0000003205082d00000012000d002cdb0000e0eb06080c00000011000d0041 *db00008c7106080100000012000d005bdb000004dc05080c00000011000d007cdb0000ccf30708 *0400000011001100bedb00004c3b06080300000012000d00e2db000050f1070804000000110011 *0024dc0000800305080c00000011000d005edc000084f206084e00000012000d0072dc000098e8 *07080400000011001100aedc00005cee07080400000011001100f0dc0000d8c906081400000012 *000d00fedc000078ff0708040000001100110040dd000050f40708040000001100110082dd0000 *bc1108080400000011001100a2dd00002ca105080c00000011000d00bfdd000038e90708040000 *001100110008de000098290508e500000012000d0040de00000cad05080700000012000d0052de *0000bcf10708040000001100110094de0000c4ff06084d00000012000d00a7de00003c2a080804 *00000011001800b8de0000c40b08080400000011001100fade0000601805080c00000012000d00 *35df00006c0f080804000000110011004cdf0000e408080804000000110011008edf00002f8e06 *082f00000012000d009ddf0000900208080400000011001100dfdf0000189f0508080000001100 *0d00f7df0000a84e05080600000012000d0032e00000b8c106087000000011000d0042e0000014 *2f05087300000012000d008ee00000cc1808080400000011001100b0e0000030ff070804000000 *11001100f2e000002c2a08080400000011001800ffe00000e4be04080800000011000d0016e100 *0000000000250000001200000028e10000acd705080c00000011000d0050e10000280d06080800 *000011000d0074e100007c3c05088700000012000d00b8e100004f5706080f00000012000d00c1 *e10000f49705080300000012000d00dfe1000074c105080c00000011000d0000e200009c240508 *7d00000012000d0038e2000080d706082200000012000d0049e20000200f080804000000110011 *0066e200008cee07080400000011001100a8e20000c03506085800000012000d00c0e2000050f5 *04080c00000011000d00ffe20000f0ff0708040000001100110038e30000dc0308080400000011 *00110079e3000068ea04085800000012000d00bae3000058f807080400000011001100fce30000 *bc0c080804000000110011003ee40000a4d504085f00000012000d0063e40000f4fb0708040000 *0011001100a5e40000440a08080400000011001100e7e4000024f706084e00000012000d00fce4 *0000241806082000000012000d0024e5000094fe06080c00000011000d0036e500007c8c05080c *00000011000d0060e50000ef8606086500000012000d0072e500004c9605080c00000012000d00 *87e5000018f307080400000011001100c9e50000500d06080800000011000d00e3e500001cf507 *08040000001100110025e60000d811080804000000110011003ee6000050fd0708040000001100 *110080e60000203a06080800000011000d0097e60000304706081c00000012000d00a5e60000c8 *fd07080400000011001100e7e600005cf70708040000001100110029e700006002080804000000 *110011006be70000fca405080700000012000d0083e7000094ef07080400000011001100c5e700 *000cea0708040000001100110006e80000009805080300000012000d0020e80000f08507080400 *000011000f0027e800002d7e0608a401000012000d0032e800000c4506080300000012000d0059 *e8000038e705085800000012000d006fe8000000ff07080400000011001100b1e80000d8ea0408 *1800000011000d00efe80000d42c06085b00000012000d0018e9000030f9070804000000110011 *005ae90000c8f006080c00000011000d006be9000090e807080400000011001100a9e90000a032 *06080800000011000d00c0e90000f43a05082d00000012000d000bea0000e0f707080400000011 *0011004dea0000040f080804000000110011008aea0000b94e06080e00000012000d0098ea0000 *98c504080c00000011000d00c6ea0000527d06085e00000012000d00d3ea0000dca30508070000 *0012000d00e9ea0000c8fd04080800000011000d002ceb00009cdf05081000000011000d0043eb *000084180808040000001100110068eb00009cbf05080c00000011000d0090eb0000540a080804 *00000011001100d2eb0000ac090808040000001100110014ec0000f00008080400000011001100 *55ec0000ecf40708040000001100110097ec0000e8f704080800000011000d00c8ec0000e01808 *080400000011001100f3ec000000000000d50000001200000005ed000044be04080c0000001200 *0d0013ed0000a4040808040000001100110054ed000010dd04087300000012000d0079ed000088 *ec07080400000011001100bbed000054e807080400000011001100f2ed000059ea060806000000 *12000d000bee0000f4fe070804000000110011004dee00005ce704082500000012000d0092ee00 *00b0b005082d00000012000d00aaee0000c8e707080400000011001100d1ee0000e4fc07080400 *00001100110013ef000000000000b2000000120000002bef0000889e05080c00000012000d0043 *ef000074f004083200000012000d007aef0000da4f06087200000012000d0085ef000027490608 *0800000012000d0096ef0000f00108080400000011001100d7ef0000b0f1070804000000110011 *0019f000007409080804000000110011005bf00000dce6070804000000110011009ff00000f40e *08080400000011001100def00000b8f20708040000001100110020f10000a83e05080300000012 *000d005df100000cfe04080500000012000d009bf100004c3b06080800000011000d00bef10000 *04070808040000001100110000f200008cfa0708040000001100110042f20000243b0508070000 *0012000d0080f2000000000000210000001200000093f20000a3500708a602000012000d009bf2 *00007c3005080700000012000d00d2f20000000000005a00000012000000e2f20000f950060872 *00000012000d00f1f20000b80006081000000011000d0008f30000f8ee06080800000011000d00 *19f30000ac4e06080d00000012000d0026f30000109c05080f00000012000d0041f30000d74506 *082100000012000d004ef30000a8180808040000001100110068f30000b82b0508070000001200 *0d00b0f30000ac2805080300000012000d00e8f30000f48405082300000012000d00fef3000000 *000000060100001200000010f400002018080804000000110011002af4000070b3050807000000 *12000d0056f4000044eb0708040000001100110098f4000008dd04080700000012000d00bcf400 *00281d06081800000011000d00e0f4000044f10708040000001100110022f5000080eb07080400 *00001100110064f50000e8be04080700000012000d0081f500000000000065020000120000008e *f50000d81508080400000011001100b8f50000f44406080300000012000d00e1f50000d4100808 *0400000011001100f9f500006c09080804000000110011003bf600003406080804000000110011 *007df60000b3920608c300000012000d0088f60000fa8506086200000012000d009bf600009444 *06080300000012000d00c2f60000d44706083900000012000d00d1f60000888e05080700000012 *000d00f3f60000f02805080700000012000d002bf7000000000000f2000000120000003df70000 *140705082000000012000d0075f7000020e607080400000011001100b6f700005c7005080c0000 *0011000d00fbf70000fcb105082300000012000d0019f800008ce5070804000000110011002cf8 *000006f106080500000012000d0039f80000840b080804000000110011007bf8000064e3060882 *00000012000d008ff8000030e907080400000011001100cdf80000cca305080300000012000d00 *edf80000f40d080804000000110011002ff9000050130808040000001100110047f90000f44c05 *082d00000012000d0086f900005c0308080400000011001100c7f9000014e70708040000001100 *110008fa0000142f06085800000012000d0020fa000004ab05080300000012000d003afa0000f4 *0a080804000000110011007cfa0000c4dd04080700000012000d00a1fa000020cd060808000000 *12000d00b0fa000064e907080400000011001100ebfa000000f3070804000000110011002dfb00 *006c0e080804000000110011006ffb00007cfe07080400000011001100b1fb0000f0f307080400 *000011001100f3fb000024190808040000001100110012fc000048fc0708040000001100110054 *fc0000dc090808040000001100110096fc000054e607080400000011001100d7fc0000ec050808 *040000001100110018fd0000fcf0070804000000110011005afd000040c705080c00000011000d *0084fd00000000000000000000120000008ffd0000404605082d00000012000d00cafd000048e8 *07080400000011001100fffd0000c0ed0708040000001100110042fe000000e707080400000011 *0011006ffe0000500605082f00000012000d00adfe000094e907080400000011001100e8fe0000 *94030808040000001100110029ff000014c306080c00000011000d004dff00000c0b0808040000 *00110011008fff000010e907080400000011001100d3ff000028e9070804000000110011001100 *01008c13080804000000110011002b00010028fb070804000000110011006d000100b415080804 *00000011001100850001005cf704080c00000012000d00ba000100302a08080400000011001800 *c70001008c0e0808040000001100110009010100f03706080800000011000d0020010100a80008 *08040000001100110061010100e4ff070804000000110011009a010100a00f0608080000001100 *0d00af0101008ca806080c00000011000d00bf010100ac2906081000000011000d00dc01010034 *0e080804000000110011001e0201006ced0708040000001100110061020100dcda04080c000000 *12000d00a1020100b0a904082300000012000d00b1020100d41306080c00000011000d00cb0201 *00e43c06081700000012000d00f5020100bc0a080804000000110011003703010044e407080000 *00001000f1ff48030100a4fd04080300000012000d0089030100d49805080c00000011000d00a1 *030100dc0808080400000011001100e3030100f4040808040000001100110024040100c40e0808 *040000001100110066040100000000003a000000120000007b04010010fa05085800000012000d *00a1040100ccfc07080400000011001100e304010062e10408a800000012000d000e05010014f7 *0708040000001100110050050100ec8105084100000012000d006505010080fd04080300000012 *000d00b0050100907007086f00000012000d00bc0501008c1508080400000011001100d3050100 *041a06084400000012000d00f4050100d8e205080c00000011000d0013060100f4050808040000 *00110011005406010083e404087a00000012000d007f06010078c406080900000012000d009506 *010044e807080400000011001100ca060100e0e905085800000012000d00e0060100882f050807 *00000012000d0022070100fc0b05080300000012000d005f070100000000005b00000012000000 *70070100c82d05080700000012000d00b5070100cc1e05080700000012000d00e9070100781c06 *083100000012000d000108010068cb06080c00000011000d0010080100a65f0708160000001200 *0d001f08010044df06089400000012000d0031080100643406085800000012000d0049080100c8 *9005080800000011000d0070080100a0150508b300000012000d00aa08010048aa050807000000 *12000d00be080100504f05084100000012000d00f908010068f506084e00000012000d000d0901 *00e8f2070804000000110011004f09010084f0070804000000110011009109010044c604080c00 *000012000d00c0090100303c0608a800000012000d00d7090100600d05082200000012000d0016 *0a0100000000009c00000012000000280a01008c9106085c00000012000d00360a010047ea0608 *0600000012000d004f0a0100000000003800000012000000600a01006ca305085500000012000d *00750a010060d005080c00000011000d009a0a01009d4906086300000012000d00ad0a01001cdc *04080700000012000d00d30a01004c0908080400000011001100150b0100041908080400000011 *001100350b010060f307080400000011001100770b0100403405080300000012000d00c20b0100 *0c0308080400000011001100020c01003a4906086300000012000d00160c0100443d0508070000 *0012000d00580c0100541705084100000012000d008d0c0100040d08080400000011001100cf0c *0100742c05080700000012000d00150d01008ce4070804000000110011002d0d010030e7070804 *000000110011006b0d0100e41006085f00000012000d00880d01003c0e06080800000011000d00 *9d0d0100601805080c00000011000d00d70d0100240708080400000011001100190e0100a4d706 *086000000012000d002c0e0100c8a306080c00000011000d003b0e010094f805080c0000001200 *0d00510e0100e00f08080400000011001100750e0100000000009400000012000000870e0100d4 *0905085800000012000d00bf0e0100f0e507080400000011001100060f0100d802080804000000 *11001100520f0100f01808080400000011001100780f0100ec3e06080c00000011000d008d0f01 *008cf705081000000011000d00a50f0100b0b205087d00000012000d00c50f0100849805080700 *000012000d00d90f010098af05081800000011000d00fa0f010004fb070804000000110011003c *1001007c110808040000001100110064100100d83406080800000011000d007b1001005ceb0608 *0c00000011000d009110010050da05081000000011000d00b61001003405080804000000110011 *00f7100100603605080700000012000d002d110100b40b05080800000011000d006811010040ef *07080400000011001100aa110100a30707080e00000012000d00b51101006c1905080300000012 *000d00f11101008ce9070804000000110011002c12010077780608e200000012000d0042120100 *d4f406080800000011000d00551201000f4906080b00000012000d00671201005c110808040000 *001100110085120100bc0708080400000011001100c7120100f0c604080c00000011000d000613 *0100cc4f05080c00000012000d004d1301004dea06080600000012000d00661301002445060803 *00000012000d008b130100ecc304080800000011000d00ce1301001c2406086e00000012000d00 *e3130100bc060808040000001100110025140100d80c05080f00000012000d006f14010090f606 *084e00000012000d00831401005a5e0708c300000012000d0091140100a00f0808040000001100 *1100a6140100109205080c00000011000d00ba140100240b05080300000012000d00f3140100f0 *4205080700000012000d00261501003c0708080400000011001100681501002cc906080c000000 *11000d007c15010064ec06080800000011000d0089150100b4ff04080c00000012000d00cf1501 *00bcaa05080300000012000d00e71501001cce05080300000012000d0004160100880008080400 *00001100110046160100dc0c0808040000001100110088160100bc4605084a00000012000d00cc *160100980f08080400000011001100e316010038b906080c00000011000d00f716010084b40508 *0700000012000d000c170100e07705080c00000012000d0056170100ec18080804000000110011 *007a17010068fd04080300000012000d00c2170100347a05084100000012000d00d91701000000 *0000af00000012000000ed170100dc07080804000000110011002f180100c41408080400000011 *00110047180100a84e05080800000011000d0081180100e017080804000000110011009b180100 *4c3405080300000012000d00e91801004d4e06082200000012000d00f318010044c60508070000 *0012000d0015190100347905087d00000012000d003319010064e4070800000000110211004019 *01007c1606080800000011000d00551901003415080804000000110011006d190100f8f3040810 *00000011000d00a319010074ec06080800000011000d00b719010014e706087600000012000d00 *c91901008c0b080804000000110011000b1a0100343805085f00000012000d00411a01000c9705 *080800000011000d005c1a0100524806080f00000012000d00661a010050fd0408080000001100 *0d00a91a01002c7905080700000012000d00c61a01003cf007080400000011001100081b0100ac *d00608e300000012000d00161b0100343405080800000011000d00611b0100d8e5050858000000 *12000d007e1b0100c00f08080400000011001100981b010054f907080400000011001100da1b01 *009cd504080700000012000d00fe1b01006c1208080400000011001100181c0100bcd205080c00 *000012000d002c1c010038fd070804000000110011006e1c0100d4c605080c00000012000d0099 *1c0100d49c05080300000012000d00ba1c01003c9f05080300000012000d00d61c0100ecfa0608 *1e00000012000d00ec1c01007c7705080800000011000d00221d0100d5530608e400000012000d *002a1d010010d405080c00000011000d00471d01005c1f05080700000012000d007e1d01000c0f *08080400000011001100a01d0100781806088f00000012000d00c61d0100c4fc05080c00000011 *000d00e81d010018b505080700000012000d00fd1d0100201708080400000011001100171e0100 *542706086700000012000d003b1e0100ac04080804000000110011007c1e0100cb5606083c0000 *0012000d00871e01004c0006080800000011000d009e1e0100b4f307080400000011001100e01e *010004d806085100000012000d00f41e0100ac0d08080400000011001100361f01004c0d080804 *00000011001100781f010020f107080400000011001100ba1f0100e41808080400000011001100 *dc1f01001409080804000000110011001e200100dcfa05080b00000012000d0040200100c0e907 *08040000001100110082200100e08407086200000012000d0092200100e8970508030000001200 *0d00ad200100b40d08080400000011001100ef2001001cde06089400000012000d0001210100d0 *fe0708040000001100110043210100000006080c00000011000d0056210100cc0b050803000000 *12000d0093210100000000006100000012000000a121010018f804080800000011000d00cf2101 *00d40c080804000000110011001122010000000000a9010000120000002622010038fd04080800 *000011000d006722010040f304080c00000012000d00ab220100300b05080800000011000d00e3 *220100581c05080700000012000d001b23010090ae05080500000012000d00402301009c150808 *040000001100110055230100b07c06084900000012000d00622301008c0c080804000000110011 *00a4230100080a07082600000012000d00ae2301000c2106080600000012000d00d3230100f413 *08080400000011001100eb230100bca105080800000011000d0007240100bb5606081000000012 *000d000f240100fc9d05087d00000012000d002324010064fb06080800000011000d0038240100 *844706081c00000012000d00462401005ceb0708040000001100110088240100443a0508070000 *0012000d00c9240100f84f05080c00000012000d000b250100843306080800000011000d002225 *0100c8d304080800000011000d005c250100f4bd04081800000011000d006d250100f828050855 *00000012000d00a6250100000000006306000012000000bb250100b43005080700000012000d00 *ef250100b8f804082000000012000d00292601009412080804000000110011004b26010078f307 *0804000000110011008d260100949705080800000011000d00a626010018020808040000001100 *1100e7260100c41508080400000011001100ff26010018ff0708040000001100110041270100c8 *3705080800000011000d0080270100f8c304080800000011000d00c22701008040050825000000 *12000d000928010008f7070804000000110011004b280100b8f5070804000000110011008d2801 *009cf307080400000011001100cf28010014040808040000001100110010290100e8f704080600 *000012000d0042290100140e08080400000011001100842901003cf907080400000011001100c6 *290100d8d304080800000011000d00032a0100bc6d06088100000012000d00192a0100740c0508 *5800000012000d00442a0100040908080400000011001100862a0100540b05080800000011000d *00be2a010060f006082c00000011000d00d32a0100342a08080400000011001800e02a01000000 *00006201000012000000ef2a0100249f05080300000012000d000b2b0100940a08080400000011 *0011004d2b01009c1e05082d00000012000d007e2b01006c0d06085800000012000d00942b0100 *8c0708080400000011001100d62b01004cf507080400000011001100182c01001cbe04080c0000 *0012000d00262c0100ad6206080b00000012000d00342c010028ef07080400000011001100762c *0100f87005080c00000011000d00bf2c0100dce507080400000011001100f22c01003412080804 *00000011001100162d01004cff04081000000011000d00532d0100db8906081100000012000d00 *672d010004d604080700000012000d008e2d0100680008080400000011001100cf2d0100000000 *000000000012000000d92d010028ef06080800000011000d00ec2d0100a02b0808040000001100 *1800fd2d0100fc03080804000000110011003e2e0100e80105082a00000012000d007d2e0100b4 *3e05080300000012000d00bd2e0100340408080400000011001100fe2e01005c0d060808000000 *11000d001b2f010064fe070804000000110011005d2f0100902506085200000012000d007b2f01 *00e8fb07080400000011001100bd2f010008f407080400000011001100ff2f0100403b06080800 *000011000d001f30010080e8070804000000110011006b300100ccf607080400000011001100ad *30010098eb07080400000011001100ef300100440d06080800000011000d000e310100101e0508 *3700000012000d0044310100a04706081200000012000d0054310100ec0a080804000000110011 *0096310100e40d08080400000011001100d831010054d606083700000012000d00ec3101004034 *05080800000011000d0036320100b0ee06080800000011000d004432010018f006080800000011 *000d0055320100d017080804000000110011006f3201000cf607080400000011001100b2320100 *b42d08080400000011001800ce32010074c105085d00000012000d00f03201002ce70708040000 *00110011002c330100d8a305080300000012000d004f33010090ea070804000000110011009033 *0100c0b405085800000012000d00c233010014f1070804000000110011000434010098fd040803 *00000012000d0049340100a40d080804000000110011008b340100000000003400000012000000 *a73401006cc806080c00000011000d00b8340100d4f407080400000011001100fa3401006ce607 *08040000001100110037350100943805080700000012000d0079350100bc0f0808040000001100 *1100903501000000000000000000120000009d3501007c1b05080700000012000d00d335010000 *4605082600000012000d000836010064a505080700000012000d00223601004cff04080c000000 *12000d0060360100980008080400000011001100a1360100f00b05080800000011000d00da3601 *003c0e06085800000012000d00f0360100d48905080700000012000d0012370100e80008080400 *00001100110053370100cc3b05080700000012000d0097370100e49506080100000012000d00a2 *37010044ee07080400000011001100e4370100043d05080700000012000d0028380100034d0608 *2300000012000d0035380100302c0808040000001100180040380100a000080804000000110011 *00813801006cfc07080400000011001100c3380100640005080c00000011000d000839010038f4 *070804000000110011004a39010084120808040000001100110060390100bcee07080400000011 *001100a2390100c55406082600000012000d00b939010098bc05082000000012000d00da390100 *87600608e800000012000d00e7390100f0820708e501000012020d00f1390100d8340608580000 *0012000d00093a0100cc8005083700000012000d00243a010000e905080800000011000d00393a *010050eb070804000000110011007b3a010098a405080c00000012000d009d3a01002c38050807 *00000012000d00d23a0100740c08080400000011001100143b010014da04080700000012000d00 *423b010098fd04080800000011000d00863b0100e87105080800000011000d00ce3b0100d80c05 *080c00000011000d00173c01004c0308080400000011001100583c0100ec0c0808040000001100 *11009a3c0100540608080400000011001100dc3c0100c8e8070804000000110011000c3d0100c8 *3705080300000012000d004c3d010070c704083200000012000d007c3d01002819080804000000 *11001100923d010034f507080400000011001100d43d0100bca105080300000012000d00f13d01 *0018f007080400000011001100333e0100384605080700000012000d006d3e0100fc3605087d00 *000012000d00a33e0100ecc304080300000012000d00e73e0100d18806083d00000012000d00f8 *3e01006cff070804000000110011003a3f010058fe06082f00000012000d004d3f010000f10608 *0600000012000d005f3f010054a305080800000011000d00793f0100fc1f06081000000011000d *00983f01001c0e08080400000011001100da3f0100e8e9070804000000110011001b40010098a1 *05080800000011000d0031400100fc18080804000000110011005140010099e60408a800000012 *000d007c400100bcd506083700000012000d008d400100103306080800000011000d00a4400100 *54c406080900000012000d00ba4001004c500608ad00000012000d00cb40010044420608580000 *0012000d00e3400100901308080400000011001100f9400100a00007082c00000011000d000c41 *01001403080804000000110011004c410100542706081800000011000d006f410100bcfd040808 *00000011000d00b6410100ce9306083f00000012000d00c8410100500605080c00000011000d00 *05420100b80006082000000012000d001d420100b4ca0608a800000012000d0027420100b08107 *083e01000012020d003142010090f006082a00000012000d00464201006fc40608090000001200 *0d005c4201003c0f080804000000110011008942010064f507080400000011001100cb4201004c *3d05082d00000012000d000e430100640005080f00000012000d00544301001c15080804000000 *110011006c430100689b06080c00000011000d007a4301009d5706082f00000012000d008b4301 *0028c206084f00000012000d00a7430100540b08080400000011001100e9430100b80108080400 *0000110011002a440100402606081800000011000d005344010094110808040000001100110069 *440100040608080400000011001100ab440100588705084800000012000d00d444010000ce0508 *0600000012000d00ee440100b405080804000000110011002f450100dc15080804000000110011 *00534501006c070808040000001100110095450100788105082d00000012000d00aa4501008988 *06084800000012000d00b6450100c01106080c00000011000d00cb450100d43705085500000012 *000d000546010084f3070804000000110011004746010028000808040000001100110087460100 *98bc05081000000011000d00a7460100b0e907080400000011001100f0460100c8a306084d0200 *0012000d00fe460100a84206084700000012000d0025470100b0fa070804000000110011006747 *0100602e05084b00000012000d00b1470100101808080400000011001100cb470100140f080804 *00000011001100ee470100f49d05080700000012000d0001480100ec4505080800000011000d00 *424801005e8e06085400000012000d004f48010038fb05080500000012000d0071480100d40508 *080400000011001100b248010008d404080300000012000d00ec4801007c340508080000001100 *0d003449010044f407080400000011001100764901000000000071040000120000008149010064 *e505080800000011000d009d490100a0ef07080400000011001100df49010014d4040803000000 *12000d001c4a0100d8f6070804000000110011005e4a010028ab05080800000011000d007a4a01 *00849a05080300000012000d00964a0100640c08080400000011001100d84a0100840a08080400 *0000110011001a4b0100e801080804000000110011005b4b01002ceb070804000000110011009e *4b0100208405080300000012000d00b84b010098f107080400000011001100fa4b010080020808 *04000000110011003c4c01000405080804000000110011007d4c0100a4f1070804000000110011 *00bf4c0100b43e05080800000011000d00fe4c0100e41006080c00000011000d001a4d010074f7 *070804000000110011005c4d0100b07d06087d00000012000d00694d0100749705080800000011 *000d00824d010084f206080800000011000d00954d0100040405080c00000011000d00d04d0100 *6f4e06080800000012000d00dc4d01001c0a080804000000110011001e4e0100c0970508080000 *0011000d00384e0100e0f806084e00000012000d004d4e010000000000b802000012000000584e *0100e89604087001000012000b005e4e010058fb07080400000011001100a04e010064dc040855 *00000012000d00c74e010008fa07080400000011001100094f01009cf007080400000011001100 *4b4f010070e905085800000012000d00614f0100fcb305080700000012000d007b4f0100982c08 *080400000011001800854f0100802d06081000000011000d00a04f0100b0280508070000001200 *0d00d34f0100804806081f00000012000d00ea4f0100004a06085a00000012000d00fb4f010000 *000000000000001200000006500100602d080840000000110018001a500100de46060829000000 *12000d002650010090f007080400000011001100685001008cf707080400000011001100aa5001 *0030fd05083600000012000d00ce500100940c0808040000001100110010510100f4ef07080400 *00001100110052510100583b06080800000011000d0072510100b41906080a00000012000d0095 *510100c80405082f00000012000d00d3510100dcfe0708040000001100110015520100b55f0608 *a800000012000d00225201006ca105082300000012000d0036520100c800080804000000110011 *0077520100843005082d00000012000d00af5201006ce804080c00000011000d00ed520100ac9c *05080c00000011000d0004530100c40d0808040000001100110046530100681808080400000011 *00110068530100ec13080804000000110011008553010024ea07080400000011001100c6530100 *d4a904080c00000011000d00d5530100743105080c00000011000d0021540100fc140808040000 *0011001100395401002810080804000000110011005e540100d018080804000000110011007e54 *01009c0708080400000011001100c054010068ea04080800000011000d000055010004c4040803 *00000012000d00435501008e0807080501000012000d004d550100000000000000000012000000 *55550100a28906081700000012000d0065550100541508080400000011001100845501008cf107 *080400000011001100c655010064ef070804000000110011000856010040390608580000001200 *0d002056010068e807080400000011001100555601007818080804000000110011006e560100f8 *f704080600000012000d00a2560100081908080400000011001100cc5601005083050807000000 *12000d00e1560100c8f707080400000011001100235701003d6e06084d03000012000d002e5701 *0050f105083000000012000d00425701001cc905085f00000012000d005e570100200d06080600 *000012000d0083570100a87605080500000012000d00c657010040000808040000001100110007 *58010014a305080700000012000d001c580100244d05080700000012000d0050580100340f0808 *04000000110011007e5801006e5706082f00000012000d009158010080fd06081e00000012000d *00a85801007c0308080400000011001100e9580100e40c080804000000110011002b590100202c *080804000000110018003459010084ea070804000000110011007559010048ec06081800000011 *000d0082590100c03e05089500000012000d00b9590100303c06080c00000011000d00cf590100 *d4c605080c00000011000d00f9590100a40c080804000000110011003b5a01002cef05080c0000 *0011000d004c5a010090b505081000000011000d00705a0100882606080500000012000d00995a *0100a4ce05081800000011000d00b95a0100d0ef07080400000011001100fb5a0100e88305082d *00000012000d00125b0100c03506080800000011000d00295b010000000000c501000012000000 *3b5b010004fe070804000000110011007d5b0100d80b05080300000012000d00bc5b0100e83805 *080700000012000d00ff5b0100800008080400000011001100405c0100e8e50708040000001100 *1100825c010008ee06080800000011000d00995c01002cfd04080300000012000d00e35c010038 *a004080c00000012000d00fb5c010074f906084e00000012000d00105d01003b48060817000000 *12000d001a5d0100d8df06086f00000012000d00335d010058ef07080400000011001100755d01 *00e40005080c00000011000d00b85d0100a8e907080400000011001100ee5d010050d205080c00 *000011000d00015e0100481e05080700000012000d00375e01000d4806081700000012000d0041 *5e0100c89c05080300000012000d005f5e010078fc07080400000011001100a15e010030f60708 *0400000011001100e45e01000c2106080800000011000d00085f010098a105080300000012000d *001f5f0100c80108080400000011001100605f0100f0cd05080600000012000d00775f01002404 *08080400000011001100b85f010068f107080400000011001100fa5f0100fcea07080400000011 *0011003c6001006cbe04080c00000011000d00496001005ce60708040000001100110087600100 *075706081500000012000d0095600100dcf005085f00000012000d00a860010074140808040000 *0011001100bb600100b80008080400000011001100fc600100101305083d00000012000d003c61 *0100b28e06087700000012000d004a610100402906080800000011000d006161010000ed05080c *00000011000d007d610100b0eb07080400000011001100bf610100a0d306082200000012000d00 *d061010094aa05080c00000011000d00f261010030fc070804000000110011003462010044de04 *080c00000012000d006662010020b205080700000012000d00896201004cc60508410000001200 *0d00ac620100c00b05080800000011000d00e6620100418506080000000010000d00f0620100e4 *0e08080400000011001100286301001c0f0808040000001100110048630100809405080c000000 *11000d005d63010094ca06082000000012000d006b6301006ced05082f00000012000d00806301 *00c8d805082000000012000d00a1630100787a05080700000012000d00b66301002c0408080400 *000011001100f763010018ea070804000000110011003864010024ff070804000000110011007a *640100502905080700000012000d00ae640100143006080800000011000d00c2640100f8b00508 *0a00000012000d00da6401008c04080804000000110011001b65010000c506080402000012000d *002865010008be04080500000012000d0039650100282c0808040000001100180045650100b8e2 *05081000000011000d0064650100100d06080800000011000d0087650100000000003a00000012 *00000099650100a8f007080400000011001100db650100d4aa05080300000012000d00f4650100 *fc0f080804000000110011000e6601002ce8070804000000110011004266010040020808040000 *001100110084660100a0f807080400000011001100c6660100e41906080a00000012000d00ea66 *01009cf9070804000000110011002c6701006e0207089b00000012000d0040670100a802080804 *0000001100110082670100ac0308080400000011001100c367010010fb07080400000011001100 *0568010054ed06080800000011000d001e680100bc0d0808040000001100110060680100f00b05 *080300000012000d009a680100184f05082d00000012000d00d2680100d8fc0708040000001100 *110014690100743c05080700000012000d005769010038e7070804000000110011009469010088 *9606085900000012000d00a2690100ece804080300000012000d00e3690100e0fa070804000000 *11001100256a0100e4e807080400000011001100746a0100e00008080400000011001100b56a01 *009ce907080400000011001100f16a010094e904085800000012000d002c6b010070fb07080400 *0000110011006e6b01005c1106085800000012000d00896b0100f00f08080400000011001100af *6b0100cf4e06080b00000012000d00bd6b0100b41906081800000011000d00df6b010028ab0508 *0300000012000d00fc6b01006c1808080400000011001100156c010038f705080c00000012000d *00356c0100f03306080800000011000d004c6c01000000000058000000120000005f6c0100a415 *08080400000011001100776c0100d00e05086300000012000d00a86c01005ce707080400000011 *001100e76c0100401108080400000011001100036d010058ef06080800000011000d001a6d0100 *c4e605085800000012000d00376d01006cf307080400000011001100796d0100d8ed0708040000 *0011001100bb6d0100142f06080800000011000d00d26d0100e0a505081000000011000d00f36d *0100c09705080300000012000d000e6e01000001080804000000110011004f6e01002084050808 *00000011000d00686e0100b01608080400000011001100826e0100c89005080300000012000d00 *aa6e0100fde404087a00000012000d00d56e0100ecf107080400000011001100176f010028f507 *080400000011001100596f010074f1070804000000110011009b6f0100108f05080c0000001100 *0d00c16f010008f1070804000000110011000370010050ea05085800000012000d00197001003c *2e080804000000110018002d7001007017080804000000110011004770010008fd06081e000000 *12000d005e70010038ee07080400000011001100a0700100703405080800000011000d00f27001 *0058fe0708040000001100110034710100000000003c0000001200000049710100cc0908080400 *0000110011008b710100a4fd04080800000011000d00cb710100ace7070804000000110011000b *7201005c1905080600000012000d004f7201004cb505082300000012000d0067720100b4070808 *0400000011001100a9720100b40b05080300000012000d00e5720100af7906085f00000012000d *00fa720100c0120808040000001100110019730100e8ec070804000000110011005b730100cc0b *05080800000011000d0097730100d87105080500000012000d00d6730100000000004700000012 *000000e97301005ce60608b700000012000d00f873010000000000130200001200000003740100 *a0020808040000001100110045740100ecaa05080300000012000d005f74010074160808040000 *0011001100797401007cf807080400000011001100bb7401006c0608080400000011001100fd74 *0100e4e206087d00000012000d00107501001cab05080300000012000d002a7501007081050807 *00000012000d003e750100ccff0708040000001100110080750100db5106085800000012000d00 *957501004a4606082900000012000d00a1750100c0a005080700000012000d00b575010004e807 *080400000011001100ef7501006c9a05080800000011000d000a76010010e70708040000001100 *110036760100b4ed04081000000011000d006c760100181008080400000011001100887601009f *4806081f00000012000d009f760100442a08080400000011001800ab7601006ca0050807000000 *12000d00be7601009f4c06082600000012000d00ca760100549606082b00000012000d00d77601 *00908e05087300000012000d00fa760100e404080804000000110011003b77010010ce05080300 *000012000d005577010040f8070804000000110011009777010038fd04080300000012000d00d9 *77010074fd04080800000011000d0023780100740d0808040000001100110065780100fc090808 *0400000011001100a7780100281d06086900000012000d00cc780100780b05080800000011000d *00057901003c0b05080800000011000d003d79010074d206082200000012000d004e790100fa48 *06080d00000012000d005d790100c403080804000000110011009e790100100108080400000011 *001100df7901005cf704081000000011000d00137a0100889606080800000011000d00207a0100 *ec0d08080400000011001100627a0100d8be04080800000011000d00767a010080170808040000 *0011001100907a0100482a080804000000110018009f7a0100f8e607080400000011001100d67a *010080d105080c00000011000d00ea7a010028cf05080500000012000d000a7b010041ea060806 *00000012000d00237b0100f8fd07080400000011001100657b01001ce807080400000011001100 *997b0100601608080400000011001100bf7b010090ff07080400000011001100017c0100443506 *080800000011000d00187c010048e605085800000012000d00357c01000c0805080c0000001100 *0d006e7c010014b105087d00000012000d00847c010098ec06080800000011000d00937c0100b9 *7206081100000012000d00a37c010050ab0608b802000012000d00b27c01002c12080804000000 *11001100da7c01002cf7070804000000110011001c7d0100081008080400000011001100367d01 *00b4f007080400000011001100787d0100dc0a08080400000011001100ba7d0100203a06085800 *000012000d00d27d0100c4fc05085d00000012000d00f57d0100bc4e05080700000012000d002a *7e010060f0070804000000110011006c7e0100d4e507080400000011001100a47e010090f60608 *0800000011000d00b77e010048d504080700000012000d00e37e0100040405082f00000012000d *001f7f0100580208080400000011001100617f0100fce405085800000012000d007e7f010090b5 *05082300000012000d00a37f010048d406080c00000011000d00ba7f0100cc0808080400000011 *001100fc7f0100d80f05080c00000011000d00328001000013080804000000110011004a800100 *4c9605080c00000011000d005e80010010da04080300000012000d009e800100ac6306081c0000 *0012000d00b1800100f81706080c00000012000d00cc800100402708080400000011001800de80 *0100c4cc05081000000011000d00f9800100d4c105080700000012000d0013810100b4e5070804 *0000001100110044810100e4070808040000001100110086810100c82f05080700000012000d00 *c78101003c0b05080300000012000d0000820100800f0808040000001100110027820100ac0e08 *080400000011001100698201007c0c08080400000011001100ab82010044270808040000001100 *1800bd820100445306081300000012000d00c9820100b0f7070804000000110011000b83010088 *100808040000001100110025830100307305083000000012000d006683010038f1070804000000 *11001100a8830100309d05080300000012000d00c8830100e09c05080800000011000d00ee8301 *00f0c604080f00000012000d002e840100588305085500000012000d004484010080d105080800 *000012000d005984010060000808040000001100110099840100540c08080400000011001100db *840100040a080804000000110011001d85010084e8070804000000110011005e850100343d0608 *0c00000011000d0080850100c0e707080400000011001100c88501003013080804000000110011 *00e0850100240a0808040000001100110022860100000000000c020000120000003386010074fa *06081e00000012000d0049860100f43105080800000011000d008e86010040ef06080800000011 *000d00a28601000c9d05080300000012000d00ca860100749905083700000012000d00de860100 *04da04080800000011000d00168701000a7806081f00000012000d002387010020fa0708040000 *0011001100658701001014080804000000110011008d870100800305080c00000012000d00c887 *010094e904080800000011000d0002880100184506080800000011000d002f8801004c5e060806 *00000012000d003d880100440607080100000012000d0050880100f4e707080400000011001100 *90880100bce607080400000011001100c98801000c1508080400000011001100e1880100fc0208 *0804000000110011002189010040fb070804000000110011006389010000000000430000001200 *00006f89010014ae06080c00000011000d0080890100ec0208080400000011001100c089010094 *f204080c00000011000d00018a0100d40e08080400000011001100438a01006ce8070804000000 *110011007b8a0100b4e807080400000011001100ac8a010000e807080400000011001100e88a01 *00d4eb070804000000110011002a8b0100340b080804000000110011006c8b010090d10608e300 *000012000d007a8b0100ac0e06080800000011000d008f8b0100c8f006082b00000012000d009f *8b0100109805080700000012000d00b38b010008fa06084e00000012000d00c88b01001c0d0808 *04000000110011000a8c0100b0fd04080800000011000d00518c01004cec04081000000011000d *00878c01000c2f05080700000012000d00d28c010058e6070804000000110011000e8d01000000 *00000106000012000000198d0100c8cb05080800000011000d00428d01008ce607080400000011 *001100858d010010ce05080800000011000d009e8d01006a0a07081100000012000d00af8d0100 *0c9f05080800000011000d00c98d010028fb06081e00000012000d00df8d010078d60508050000 *0012000d00048e0100a80108080400000011001100458e0100dcc005080c00000011000d00678e *0100e0aa05080800000011000d00828e0100b89306081600000012000d00948e0100c095060801 *00000012000d00a18e010030d404080600000012000d00d78e010068ee07080400000011001100 *198f010010fa05080800000011000d003e8f0100d3df04086300000012000d00698f0100883405 *080800000011000d00b38f01007c3706080800000011000d00ca8f01005cf10708040000001100 *11000c900100a84405080700000012000d0041900100a40f080804000000110011005690010094 *0b0808040000001100110098900100186d06089200000012000d00a89001009842050855000000 *12000d00e5900100743105080c00000012000d0032910100540d08080400000011001100749101 *00e8fe07080400000011001100b69101005ce907080400000011001100f19101002cc805080c00 *000011000d0018920100b40c080804000000110011005a92010034ef070804000000110011009c *9201006cf007080400000011001100de920100200d06080800000011000d000293010035ea0608 *0600000012000d001b930100489f05080800000011000d0033930100956706081200000012000d *0040930100c4e8070804000000110011007093010000000000990c000012000000839301000019 *08080400000011001100a89301009c0c08080400000011001100ea930100980108080400000011 *0011002b940100ecee070804000000110011006d94010060f605082500000012000d0086940100 *38840508b300000012000d00a0940100e8f807080400000011001100e2940100cca30508080000 *0011000d000195010024e7070804000000110011003d950100bcf7070804000000110011007f95 *0100e41508080400000011001100a795010040c705084300000012000d00d2950100300f080804 *00000011001100fd950100fc0b080804000000110011003f9601004c7205082800000012000d00 *85960100ace807080400000011001100bc960100104f05080700000012000d00f3960100c40a08 *080400000011001100359701007d6306081300000012000d0044970100e4ff04080c0000001100 *0d008a970100e0f107080400000011001100cc9701004c1905080600000012000d000f98010020 *eb070804000000110011005198010000000000973d000012000000659801005ccf05082f000000 *12000d008f980100f4b105080700000012000d00ac98010004da04080300000012000d00e59801 *002c0b0808040000001100110027990100597906085600000012000d003a99010050aa05083700 *000012000d004f990100981f05085f00000012000d007e990100f4e807080400000011001100cf *990100943a06085800000012000d00e7990100bc9c05080300000012000d000a9a0100bc800508 *0600000012000d002e9a0100c4e607080400000011001100739a0100e4e5070804000000110011 *00ae9a0100d04106080800000011000d00c59a0100609d05080300000012000d00ed9a01005409 *080804000000110011002f9b010090fc06081e00000012000d00459b010090e507080400000011 *001100859b0100401205083700000012000d00bc9b01008cf407080400000011001100fe9b0100 *4416080804000000110011001b9c01007000080804000000110011005d9c0100f81706080c0000 *0011000d00779c0100c4cc05084000000012000d00939c0100b40308080400000011001100d49c *0100382305082800000012000d00029d010070e905080800000011000d00179d0100f8fa070804 *00000011001100599d0100000000004a05000012000000649d0100ecc906089c00000012000d00 *6e9d010064e505085800000012000d008b9d0100747e05081000000011000d00ab9d010058ec07 *080400000011001100ed9d01005c1905080800000011000d00309e0100a8f60708040000001100 *1100729e010004c706080500000012000d00819e0100c8f107080400000011001100c39e0100ac *4406080300000012000d00e99e0100f84506082900000012000d00f69e0100a02d080804000000 *11001800039f0100c8a005085500000012000d00189f01001cab05080800000011000d00319f01 *0050da05082000000012000d00579f0100e08305080700000012000d006d9f0100f41008080400 *000011001100979f010020a605083a00000012000d00b89f0100b04405086900000012000d00ee *9f0100b4100808040000001100110013a0010000f90708040000001100110055a00100a42d0808 *040000001100180069a00100e0120808040000001100110088a00100ace206081a00000012000d *009ba00100207505080800000011000d00d2a0010098f40708040000001100110014a101003c09 *0808040000001100110056a1010050e60708040000001100110095a10100194f06080800000012 *000d00a3a1010010fe07080400000011001100e5a10100f8f704080800000011000d0018a20100 *4a4307082800000012000d0025a20100dc4406080300000012000d004ca201005c0b0808040000 *00110011008ea20100f4b406080c00000011000d00a1a2010024f907080400000011001100e3a2 *01003c1905080800000011000d0022a30100789306081a00000012000d0037a3010024e8050858 *00000012000d004da30100c4ec070804000000110011008fa30100189805086900000012000d00 *a4a30100501708080400000011001100bea30100e4ff04080f00000012000d0005a40100ec8405 *080700000012000d001aa40100ec7506083100000012000d002da4010010e20508580000001200 *0d0048a40100a4a105080300000012000d0062a401003c9d05080300000012000d0085a40100dc *f207080400000011001100c7a401004c060808040000001100110009a501004c17050807000000 *12000d003da50100fc0a0708490e000012000d004ca50100b8e90708040000001100110094a501 *00d43b05089f00000012000d00d9a50100f4d404080700000012000d0001a60100cc1508080400 *00001100110024a60100e0cd05080800000011000d003da6010010ab05080800000011000d0059 *a60100a00506081000000011000d0078a60100f0f205083d00000012000d0095a6010004120808 *0400000011001100c0a601002c1108080400000011001100dca6010014fa070804000000110011 *001ea70100802a0808040000001100180028a701007415080804000000110011003ea70100b83e *05080700000012000d0074a7010000000000230000001200000082a701008c0a08080400000011 *001100c4a7010040d706083d00000012000d00d9a7010060f905080c00000011000d00ffa70100 *b8f80708040000001100110041a80100240b0808040000001100110083a8010088430508690000 *0012000d00bba8010034e707080400000011001100f8a80100a02c0808040000001100180002a9 *01005b7506089100000012000d0016a90100b42e05085500000012000d0061a901007c77050858 *00000012000d0098a90100dc1008080400000011001100c3a9010090fc06080800000011000d00 *d8a901009e6a06087700000012000d00e9a90100c8d805081000000011000d0009aa010030de05 *080c00000011000d002eaa0100c4f80708040000001100110070aa010094c406080e0000001200 *0d0080aa0100b09d04080000000012000d0087aa01003cc406080600000012000d009baa010060 *0108080400000011001100dcaa0100f0ea070804000000110011001eab0100e80f080804000000 *1100110040ab01008c0d0808040000001100110082ab0100cc0608080400000011001100c4ab01 *00ec9f05080c00000012000d00d9ab0100509a04087601000012000000e7ab0100742f06080800 *000011000d0002ac01002411080804000000110011001cac0100910a07080100000012000d002e *ac01006c0c0808040000001100110070ac0100e43c06080c00000011000d0099ac0100742f0608 *5b00000012000d00b5ac0100e80105081800000011000d00f3ac01004c14080804000000110011 *0018ad0100909a05087d00000012000d0033ad0100649505080c00000011000d0046ad0100094f *06080800000012000d0057ad0100a4140808040000001100110080ad0100bcab05085500000012 *000d009cad0100c0ea07080400000011001100dfad0100549606082c00000011000d00edad0100 *c4f2070804000000110011002fae0100a07505085800000012000d006eae0100d0910508070000 *0012000d0082ae0100d49005080300000012000d00adae0100240808080400000011001100efae *0100ac140808040000001100110011af0100840f0808040000001100110029af01009424050807 *00000012000d0060af01000c1006080800000011000d0075af0100780206083200000012000d00 *9caf01005cfa07080400000011001100deaf0100003b06080600000012000d0005b0010008ee07 *08040000001100110047b00100e89706080c00000011000d0055b001005c140808040000001100 *11007bb00100dc0208080400000011001100bab00100bc1508080400000011001100d2b00100e4 *fd04082800000012000d0011b10100b4130808040000001100110027b10100080f080804000000 *1100110048b1010078ea0708040000001100110089b101004c0a08080400000011001100cbb101 *00c8a905082900000012000d00e7b10100ec8105080c00000011000d00fbb10100e89706086401 *000012000d0008b201004e5206081500000012000d0023b2010028f804080600000012000d0054 *b2010054f00708040000001100110096b2010024450508bd00000012000d00d0b201004c340508 *0800000011000d001db30100bcf4070804000000110011005fb301007810080804000000110011 *007db301002cc805080c00000012000d00a5b30100d8fe06080c00000011000d00b7b3010060ea *07080400000011001100f8b30100e0fe04085800000012000d0030b4010074fd07080400000011 *00110072b401009c2805080800000011000d00aeb40100fc0708080400000011001100f0b40100 *9c2805080600000012000d002db50100977b06081c00000012000d0045b50100d0f80708040000 *001100110087b50100ec9606080800000011000d0093b50100506506082500000012000d00acb5 *0100444206080800000011000d00c3b5010054040808040000001100110004b601000c9606081b *00000012000d0016b60100e84406080800000011000d0039b6010040ec07080400000011001100 *7bb6010014ad0508db00000012000d008eb601007b0a07081600000012000d009db60100bcab05 *081000000011000d00b8b60100bc1605080700000012000d00ecb60100b9890608220000001200 *0d0000b70100035306082200000012000d000fb701007c4006081000000011000d0035b70100d8 *bf04083700000012000d005eb70100e8f507080400000011001100a1b7010034f2070804000000 *11001100e3b7010010da06089400000012000d00f6b70100f0f205081000000011000d0012b801 *0014120808040000001100110035b801002c19080800080000110011004ab80100d0cd05080800 *000011000d0060b80100f4ec07080400000011001100a3b8010054ea07080400000011001100e4 *b8010050cc05080c00000011000d00f9b80100994e06080b00000012000d0006b90100ecfa0608 *0800000011000d001bb90100c8ee06080800000011000d002eb901003c08080804000000110011 *0071b90100d8be04080300000012000d0086b9010064fb07080400000011001100c8b9010094d1 *05080c00000012000d00e0b90100b04e05080c00000011000d001cba0100465e06080600000012 *000d0034ba0100734606082900000012000d0040ba0100fc9605080800000011000d005cba0100 *6c9d05088700000012000d0073ba0100843705082d00000012000d00a8ba01000ce90708040000 *0011001100f6ba010050d605082800000012000d001cbb0100fcf3070804000000110011005ebb *0100540708080400000011001100a0bb010060e807080400000011001100dabb0100c4e7070804 *0000001100110020bc0100ec0b0808040000001100110062bc0100083706080800000011000d00 *79bc0100a0ef06080800000011000d0095bc0100f89b05080c00000011000d00acbc0100f8c304 *080300000012000d00efbc01005c0a0808040000001100110031bd010040e80608100000001200 *0d0047bd01000cf90708040000001100110089bd0100401308080400000011001100a1bd010034 *0308080400000011001100e2bd0100749e04084b00000012000d00f2bd010060a3050808000000 *11000d000fbe01007c080808040000001100110052be010018c004086900000012000d0083be01 *00fcf506080800000011000d0096be01008c0508080400000011001100d7be01000c0408080400 *00001100110018bf01003c0b080804000000110011005abf010034fe070804000000110011009c *bf01001c0b08080400000011001100debf0100402906085800000012000d00f6bf0100c4f70508 *4300000012000d0011c001006c1905080800000011000d004cc00100083005080700000012000d *007ec0010098d206082200000012000d0097c00100bc7905083700000012000d00b1c001009811 *08080400000011001100c7c001004ccc0608c600000012000d00d4c001006c9a05080300000012 *000d00f0c00100e4130808040000001100110007c10100d0f5070804000000110011004ac10100 *dcfb06081e00000012000d0060c1010034f807080400000011001100a2c1010068fd0408080000 *0011000d00e9c1010018fc070804000000110011002bc201007cec070804000000110011006dc2 *0100541605080700000012000d00a3c20100cc8805080700000012000d00bfc20100202d080834 *00000011001800c9c20100f84205088700000012000d00fdc20100402606084600000012000d00 *27c3010094ec0708040000001100110069c3010094140808040000001100110084c3010094d105 *080c00000011000d009bc3010044fd06080800000011000d00b1c30100dc180808040000001100 *1100d6c30100ece60708040000001100110018c40100382c0808040000001100180028c40100f4 *06080804000000110011006ac401000c0908080400000011001100acc40100cce6070804000000 *11001100e5c40100e8180808040000001100110004c50100000000004c0000001200000019c501 *00c02d0808780000001100180028c50100a89f06080402000012000d0035c50100e0a904080500 *000012000d0044c50100902506080c00000011000d0061c50100c8e907080400000011001100ac *c50100300008080400000011001100ecc50100f0ad05080700000012000d000ac60100c02b0508 *b300000012000d0053c60100b88305080600000012000d0074c6010000f6070804000000110011 *00b7c601002c4d05082d00000012000d00ecc60100e4ed070804000000110011002ec70100cc97 *05080300000012000d004cc701003ce80708040000001100110080c70100ca7206081800000012 *000d0091c70100e4fd04081800000011000d00cfc70100d4030808040000001100110010c80100 *0000000000000000120000001bc80100000000001c000000120000002fc8010074e90708040000 *00110011006ac8010044f707080400000011001100acc80100a4e406081300000012000d00bfc8 *0100549d05080300000012000d00e4c8010088dd06089400000012000d00fbc80100f436050807 *00000012000d0030c9010040e9070804000000110011006dc901007c9205083600000012000d00 *8dc90100bceb07080400000011001100cfc90100c01106083000000012000d00e5c9010090ac05 *080700000012000d00f7c90100bc030808040000001100110038ca0100fcf504080c0000001100 *0d007aca0100f97c06085900000012000d0089ca0100068806088300000012000d0097ca0100b0 *1706080c00000011000d00acca0100b02d08080400000011001800baca0100f40c080804000000 *11001100fcca010078f9070804000000110011003ecb01009c12080804000000110011005ecb01 *000000000000000000120000006ccb010084ff07080400000011001100aecb0100d1e004089100 *000012000d00d9cb010058160808040000001100110005cc01006c0105085d00000012000d002a *cc01005cfd04080800000011000d006fcc01007c4006082000000012000d0096cc01009ce80708 *0400000011001100d8cc010063520608a000000012000d00e0cc010014f4070804000000110011 *0022cd0100fced0708040000001100110064cd010070f507080400000011001100a6cd01009ced *07080400000011001100e9cd010038e705080800000011000d00fecd0100589906080402000012 *000d000bce0100d40b080804000000110011004dce0100f4110808040000001100110077ce0100 *489f05080300000012000d0090ce010014ef04080c00000012000d00d3ce0100f8010808040000 *001100110014cf010064e60708040000001100110055cf0100e40b0808040000001100110097cf *0100d0ec07080400000011001100d9cf010078e304089100000012000d0004d001007819050808 *00000011000d0042d00100603f05086900000012000d006ed0010058fe06080c00000011000d00 *80d0010014fd07080400000011001100c2d0010028f804080800000011000d00f2d00100b43906 *080800000011000d0009d101003c0e080804000000110011004bd101004c4506080c0000001100 *0d0072d10100c01906080500000012000d0094d101004c0b08080400000011001100d6d101002f *4e06081e00000012000d00e3d1010074eb0708040000001100110025d20100f40f080804000000 *1100110042d201006c9905080700000012000d0055d201004cf806080800000011000d0069d201 *00308405080700000012000d0082d20100589706088200000012000d0095d2010084c206080c00 *000011000d00bbd20100303606085800000012000d00d3d201000c3d05083700000012000d0018 *d301003802080804000000110011005ad30100882a05087300000012000d0096d30100a0360608 *5800000012000d00aed30100683b06080800000011000d00d1d301008010080804000000110011 *00f9d301005c1605085f00000012000d0030d40100ccfc06081e00000012000d0047d40100a8f3 *0708040000001100110089d40100941e05080700000012000d00b9d4010014e807080400000011 *00110005d501004c0c0808040000001100110047d50100382305080c00000011000d0074d50100 *f49705080800000011000d0091d5010040f406084e00000012000d00a5d50100e0e106081b0000 *0012000d00bad50100343f06085b00000012000d00ded501004cec0708040000001100110020d6 *0100b4090808040000001100110062d6010020ee07080400000011001100a4d601000000000027 *04000012000000add6010054c305087300000012000d00cad601001c0308080400000011001100 *0ad70100a04f05080c00000011000d004cd70100264d06081b00000012000d0059d70100100d06 *080600000012000d007dd70100dcef07080400000011001100bfd70100787b0508250000001200 *0d00ded70100ec9f05081000000011000d00f2d70100a07505080800000011000d0030d8010024 *a606085a02000012000d003ed80100841005085d01000012000d0069d80100d838060858000000 *12000d0081d801007ce607080400000011001100b9d80100f81808080400000011001100e2d801 *00c8d304080600000012000d001dd90100eb6706081400000012000d0030d90100301408080400 *00001100110054d901007ce9070804000000110011008fd90100242c080804000000110018009b *d9010018c706080c00000011000d00aad90100bccb05080800000011000d00d0d90100bce90708 *04000000110011001cda010000000000590500001200000027da0100fc0b05080800000011000d *0063da0100004506080300000012000d008eda01000000000000000000120000009dda01006445 *06082900000012000d00aada010058f507080400000011001100ecda0100c8e206081a00000012 *000d0000db0100ccea0708040000001100110042db0100402a0808040000001100180051db0100 *7c3d05080700000012000d0089db010004b105080500000012000d00a0db010028a405080c0000 *0011000d00c2db0100ac0f08080400000011001100dddb0100442005080800000011000d000fdc *010044b10608a103000012000d0020dc010068010808040000001100110061dc01004c00060858 *00000012000d0079dc0100649505082300000012000d008ddc0100e0cd05080600000012000d00 *a7dc0100d41e05088700000012000d00dcdc01004cf806084e00000012000d00f1dc0100541208 *0804000000110011001cdd01007cc805080c00000012000d0044dd010074e70708040000001100 *110084dd0100dc2005082000000012000d00b2dd0100f8f805080c00000012000d00c8dd010028 *f8070804000000110011000ade010054f3070804000000110011004cde010050e806088d000000 *12000d005ade01002c09080804000000110011009cde0100780206081000000011000d00c2de01 *009c8005080600000012000d00e7de0100ec9905086900000012000d00fdde0100482505080700 *000012000d002edf0100748905085f00000012000d004ddf0100614c06082300000012000d0059 *df0100fce8070804000000110011009fdf0100bcfd07080400000011001100e1df01009c180808 *040000001100110007e0010064110808040000001100110020e00100740b080804000000110011 *0062e00100000000008b0000001200000075e00100940608080400000011001100b7e00100280f *06085800000012000d00cde00100e0f4070804000000110011000fe10100d88305080600000012 *000d002de101009c0b080804000000110011006fe10100ec10080804000000110011009ce10100 *103005086900000012000d00cfe10100f44a06085800000012000d00e6e10100bce70708040000 *00110011002fe2010010c404087300000012000d0066e201003d7306081e02000012000d0076e2 *0100780108080400000011001100b7e201007c3505080700000012000d00f1e2010038b3050837 *00000012000d001be301007ca205085500000012000d0030e301000c0e08080400000011001100 *72e3010024dc04083700000012000d0099e3010028d005082300000012000d00bbe30100d4ee07 *080400000011001100fde301008c0505080c00000011000d0038e40100a4a10508080000001100 *0d0051e4010054e9070804000000110011008be401007f6006080800000012000d009be40100e8 *7105085800000012000d00e4e4010038e80708040000001100110018e5010050ab06080c000000 *11000d0028e501007408080804000000110011006be501000c9805080800000011000d0087e501 *00e88b05080700000012000d00a9e50100e84c05080300000012000d00e9e5010000ea07080400 *0000110011002ae6010044cc06080600000012000d003fe6010064d90608ab00000012000d0056 *e60100d8e405080800000011000d0079e60100640908080400000011001100bbe601009c0e0808 *0400000011001100fde601004406080804000000110011003fe70100b0de06089400000012000d *0050e70100582e05080700000012000d0099e70100bcd404083700000012000d00c2e70100b012 *08080400000011001100e1e701003ced0708040000001100110024e80100c4ff06080c00000011 *000d0036e8010020e904085c00000011000d007be8010018c706082e00000012000d0089e80100 *540308080400000011001100cae8010024ed070804000000110011000de90100898d0608140000 *0012000d0019e901005c0d06080300000012000d0037e901005c8606089300000012000d0045e9 *01005c2005080700000012000d0074e90100602e080800100000110018007fe901001002080804 *00000011001100c0e9010030de05083f00000012000d00e6e9010078e507080400000011001100 *fae90100000000004c0000001200000011ea0100881205080800000011000d0054ea0100b0f904 *082000000012000d008eea010000000000b10200001200000099ea0100f0100808040000001100 *1100c3ea0100489705080300000012000d00deea0100d40905080800000011000d0015eb010094 *16080804000000110011002feb010020160808040000001100110056eb0100540b050803000000 *12000d008feb010030f804081400000011000d00c1eb0100fc080808040000001100110003ec01 *0024ed06080800000011000d0017ec0100941d06080500000012000d003bec0100841508080400 *00001100110053ec010000000000d70000001200000062ec0100840808080400000011001100a5 *ec010008e806083500000012000d00baec0100ac9f04080c00000011000d00cfec010060180808 *0400000011001100f4ec010094150808040000001100110008ed0100fcf6070804000000110011 *004aed0100f43405080700000012000d007fed010000000000610000001200000090ed0100e8c8 *05080c00000011000d00b6ed0100203d06080500000012000d00d7ed0100201308080400000011 *001100efed0100be940608ff00000012000d0002ee010084030808040000001100110043ee0100 *08c404080700000012000d0079ee01009ce707080400000011001100b3ee010068110808040000 *0011001100d6ee0100d04106085800000012000d00eeee0100140b0808040000001100110030ef *01009cbf05082300000012000d0059ef010054f6070804000000110011009cef010044e4070800 *0000001000f1ffafef010034d506088800000012000d00bfef010094d305082300000012000d00 *dcef0100b87a05080700000012000d00f1ef0100ccdd04086900000012000d0017f001001c1208 *0804000000110011003af00100ecfa070804000000110011007cf001000cf30708040000001100 *1100bef0010010f605080800000011000d00d9f00100b0ee070804000000110011001bf1010037 *5f06087e00000012000d0029f10100ff6706089f02000012000d0034f10100d8a3050808000000 *11000d0056f10100da0407089b00000012000d006af10100c4f507080400000011001100acf101 *006ced05080c00000011000d00c0f10100789a05080300000012000d00d9f1010048f307080400 *0000110011001bf2010048f6070804000000110011005ef2010000000000ff000000120000006f *f20100000000003d020000120000007ef20100508507085800000012000d008ef2010094c90508 *3f00000012000d00a6f2010070f207080400000011001100e8f20100483e05085800000012000d *002ef301009405080804000000110011006ff30100443506085800000012000d0087f3010004b4 *05087d00000012000d00a2f30100340c08080400000011001100e4f301006c0b08080400000011 *00110026f40100c0f00708040000001100110068f401003c0607082c00000011000d007bf40100 *d88305080800000011000d0098f40100f40208080400000011001100d8f40100b49905082d0000 *0012000d00f2f4010070140808040000001100110008f50100442005080600000012000d003bf5 *0100f89b05080b00000012000d0053f50100d8d005080c00000011000d006ff501000ae204087a *00000012000d009af50100ac7805080c00000011000d00d4f50100341408080400000011001100 *f9f50100c40c080804000000110011003bf601005000080804000000110011007bf60100009f05 *080800000011000d0092f60100e07705080c00000011000d00dbf60100b95406080c0000001200 *0d00ebf60100a8b005080700000012000d0002f701001cce05080800000011000d001ef7010008 *fd06080800000011000d0034f70100b37b06082300000012000d0042f70100902c080804000000 *1100180054f70100114f06080800000012000d005ff7010038270808000000001000f1ff6bf701 *00900108080400000011001100acf70100649f05080c00000012000d00c3f701001c0c08080400 *00001100110005f8010078000808040000001100110046f80100f8ad05085500000012000d0065 *f8010004e10608ba00000012000d007af80100dc0d08080400000011001100bcf801006b510608 *7000000012000d00ccf8010050d205080c00000012000d00e0f801007c8c05083c00000012000d *000bf90100dc0e080804000000110011004df90100fc05080804000000110011008ff901001819 *08080400000011001100a8f901005cfd04080300000012000d00eef901004c1008080400000011 *0011000dfa0100249f05080800000011000d0028fa01004cf2070804000000110011006afa0100 *50d605081800000011000d008ffa01005cdb05080c00000011000d00b0fa0100604b0608a50000 *0012000d00b5fa0100081906080500000012000d00dafa010018f9070804000000110011001cfb *0100ec07080804000000110011005efb010084f607080400000011001100a0fb01002c05080804 *00000011001100e1fb0100de6206088c00000012000d00eafb0100f4b406083804000012000d00 *fcfb0100c8aa05080800000011000d0016fc0100a40b0808040000001100110058fc01005cd406 *083500000012000d006afc01002c3b05089f00000012000d00a9fc010030e60708040000001100 *1100eafc0100bc3705080800000011000d0026fd0100747e05083200000012000d0047fd010010 *da04080800000011000d0086fd0100e0f806080800000011000d009afd01009029050807000000 *12000d00d1fd01003f760608c000000012000d00e5fd01007c0f0808040000001100110007fe01 *001c080808040000001100110049fe0100689105080700000012000d005cfe010004e904080300 *000012000d00a1fe01006cc806080600000012000d00b1fe0100741108080400000011001100d5 *fe01004c040808040000001100110016ff010064fe04080c00000011000d0046ff0100dc970508 *0400000011000d0060ff01009c0308080400000011001100a1ff010094e805080800000011000d *00b6ff010008e9070804000000110011000000020030fd05080c00000011000d0023000200c0fc *0708040000001100110065000200244806081700000012000d006e000200617407088806000012 *000d007c00020074a205080700000012000d0090000200240d08080400000011001100d2000200 *70010808040000001100110013010200843306085800000012000d002b010200b4790508070000 *0012000d004401020078f0070804000000110011008601020054db04080700000012000d00a901 *0200c8fa07080400000011001100eb010200fcf9070804000000110011002d02020024fe060828 *00000012000d0040020200a8c206086000000012000d005e020200242505082300000012000d00 *9402020000ce05080800000011000d00ad020200303b06080800000011000d00d3020200040c08 *080400000011001100150302007c1606085800000012000d002b0302004c4b0608130000001200 *0d0038030200380d06080300000012000d0055030200040b080804000000110011009703020014 *eb07080400000011001100d9030200e89506082200000012000d00e703020074fa060808000000 *11000d00fc03020000000000000000001200000003040200840d08080400000011001100450402 *0038fa0708040000001100110087040200ccf907080400000011001100c90402002cf605080c00 *000011000d00e00402003c9705080300000012000d00f804020064a305080700000012000d000c *0502003c03080804000000110011004d050200ac0e06085800000012000d006305020000000000 *e800000012000000800502000000000000000000120000008d0502001c19080804000000110011 *00a7050200e4e405080300000012000d00ce050200949705080600000012000d00e805020014d4 *04080800000011000d002406020000ed070804000000110011006706020064fe04085d00000012 *000d0098060200c40408080400000011001100d9060200cc05080804000000110011001a070200 *525e0608b700000012000d002607020060fc070804000000110011006807020064060808040000 *0011001100aa070200e41108080400000011001100d207020000000000a701000012000000e007 *0200b0e5070804000000110011001108020044e40708000000001000f1ff22080200d8f0070804 *000000110011006408020088f104083200000012000d009b080200b82d08080400000011001800 *b9080200a01308080400000011001100cd080200540e080804000000110011000f090200301008 *08040000001100110033090200b4ff04081000000011000d0078090200f0380508a90000001200 *0d00bc09020054fc06081e00000012000d00d2090200a49705080800000011000d00eb090200f4 *e9070804000000110011002c0a02007ce406080500000012000d00390a0200a43905089f000000 *12000d00780a02007c3405080300000012000d00c10a0200c4ea05080c00000012000d00e10a02 *00e01606080c00000011000d00010b020070fc04082000000012000d003c0b0200303606080800 *000011000d00530b02002019080804000000110011006c0b02004cd005080500000012000d008d *0b02007ceb06080c00000011000d00a20b0200241208080400000011001100ca0b0200d4e60708 *0400000011001100030c0200f0f907080400000011001100450c020020d404080800000011000d *007c0c020024e805080800000011000d00910c0200dcfb07080400000011001100d30c0200c40f *08080400000011001100f40c0200ccc805080d00000012000d001d0d02001c0708080400000011 *0011005f0d020014e907080400000011001100a50d0200fc0a08080400000011001100e70d0200 *0c0808080400000011001100290e02000ced070804000000110011006c0e02003cea0708040000 *0011001100ad0e0200441505080700000012000d00e00e0200e0e804080300000012000d00260f *02005c7005089000000012000d006c0f0200c4e605080800000011000d00880f020030d3050858 *00000012000d00a60f0200147b05085500000012000d00bf0f0200e8ec06080800000011000d00 *ce0f02009cf60708040000001100110010100200d02f05083700000012000d005210020060e607 *08040000001100110092100200cce807080400000011001100cc10020028340508080000001100 *0d0021110200d4ec06080800000011000d0030110200a00007089800000012000d0042110200d8 *c906080c00000011000d005111020010fb05081800000011000d0073110200e40a060810000000 *11000d008f11020078b305084100000012000d00bc11020094fb07080400000011001100fe1102 *00cce5070804000000110011002f1202005c120808040000001100110045120200203b06080600 *000012000d006d120200e4c404080700000012000d009d120200a8e807080400000011001100dd *120200a80b05080800000011000d00151302000c16080804000000110011003b13020064970508 *0600000012000d0052130200844c06081b00000012000d005e1302000000000046010000120000 *006e1302009c2606080c00000011000d0097130200c80208080400000011001100d0130200667c *06084a00000012000d00df1302007c9205080c00000011000d00fe1302009c0608080400000011 *0011004014020024f0070804000000110011008214020000e907080400000011001100cb140200 *e40005080f00000012000d000f150200a0e6070804000000110011004915020090420508070000 *0012000d00851502007c3706085800000012000d009d150200b8e406084900000012000d00ac15 *0200a8d304080800000011000d00e0150200a83e05080800000011000d001c1602007018080804 *0000001100110034160200acec06080800000011000d0043160200240508080400000011001100 *84160200fcf504082000000012000d00c716020040d404080700000012000d00ee160200ab7a06 *08cb00000012000d00031702008405080804000000110011004417020000000000f70100001200 *000057170200f4dc06089400000012000d00691702005e5706081000000012000d007717020070 *130808040000001100110099170200202c06082000000012000d00ba1702006c11080804000000 *11001100e6170200684706081c00000012000d00f31702006014080804000000110011000e1802 *00749705080600000012000d0028180200cc8605087d00000012000d0046180200f01906080500 *000012000d0069180200b40408080400000011001100aa180200dcf005080800000011000d00bc *180200540808080400000011001100ff1802006cf60708040000001100110042190200943a0608 *0800000011000d0059190200acbf04082300000012000d007e1902003c11080804000000110011 *00a4190200c07a05084b00000012000d00ba190200ac7805081700000012000d00f51902007405 *08080400000011001100361a020050cc05085d00000012000d004c1a0200756506082500000012 *000d005f1a0200603806080800000011000d00761a020070e807080400000011001100a31a0200 *00e905085800000012000d00b91a0200a4da06089400000012000d00cd1a0200ec3e06080c0000 *0012000d00e31a0200840408080400000011001100241b02000c0708080400000011001100661b *0200d41108080400000011001100861b02000c0608080400000011001100c81b0200c883050808 *00000011000d00e21b0200e4a305083700000012000d00f91b0200981205086900000012000d00 *2e1c020050f105081000000011000d00411c0200304506080300000012000d006b1c02003c4506 *080800000011000d008f1c02007cc805080c00000011000d00b61c0200640e0808040000001100 *1100f81c0200bc08080804000000110011003a1d02001408080804000000110011007c1d020000 *0000006f00000012000000911d0200ac7105081800000011000d00d01d0200b883050808000000 *11000d00f01d020028d005081800000011000d00111e0200e00108080400000011001100521e02 *0068fa07080400000011001100941e0200000000008500000012000000a61e02001c0508080400 *000011001100e71e0200acec07080400000011001100291f020060e40708000000002000110034 *1f02001d4e06081200000012000d003f1f0200340a08080400000011001100811f0200d4080808 *0400000011001100c31f0200d4e804080800000011000d000620020068e6070804000000110011 *00412002000cf106080900000012000d004a200200542005080600000012000d0080200200c407 *08080400000011001100c220020064f807080400000011001100042102006ce804085f00000012 *000d00432102008c0505082f00000012000d007f2102003c9f05080800000011000d009a210200 *0ce707080400000011001100c4210200c41605088700000012000d00f9210200000000004c0000 *00120000000922020060e906083d00000012000d001a2202006405080804000000110011005b22 *020090f9070804000000110011009d220200d43f05083700000012000d00d12202002409080804 *000000110011001323020040f507080400000011001100552302002c0a08080400000011001100 *97230200d80d05080c00000012000d00d1230200dce80708040000001100110009240200802a05 *080700000012000d004424020054f804080c00000011000d0082240200f09c0508060000001200 *0d00a8240200eceb07080400000011001100ea24020044de04080c00000011000d001b25020044 *0f0808040000001100110044250200498906083700000012000d005925020094f805080c000000 *11000d006e2502002cfa07080400000011001100b0250200c44e05084b00000012000d00e62502 *0098ca05083800000012000d000a260200603806085800000012000d00222602002cf107080400 *00001100110064260200889e05080c00000011000d007b260200b84406080300000012000d00a6 *2602002c1008080400000011001100ca2602002c07080804000000110011000c270200cc0c0808 *04000000110011004e2702002c0d0808040000001100110090270200e8d304080600000012000d *00cc270200b4e60708040000001100110005280200307d0708b800000012020d001228020028b2 *05087d00000012000d00362802000c000808040000001100110077280200b0fa06081e00000012 *000d008d280200f8c406080800000011000d009c280200a0e906088a00000012000d00a9280200 *901205080700000012000d00dd280200e09c05080600000012000d000429020020e80708040000 *0011001100382902006c8905080700000012000d005629020070ff06080c00000011000d006829 *0200529406080c00000012000d0072290200d48507084900000012000e00782902000747060829 *00000012000d0084290200109b05080700000012000d009a290200a4bf04080700000012000d00 *be290200000000008500000012000000cf290200f43a06080800000011000d00f82902008a4f06 *085000000012000d00022a0200801205080800000011000d00422a0200ecfd0708040000001100 *1100842a0200489705080800000011000d009e2a02004cfe07080400000011001100e02a0200f0 *1208080400000011001100f82a02009cea07080400000011001100392b020050fd040803000000 *12000d007d2b0200c0af05080500000012000d009e2b0200ac2906082800000012000d00bc2b02 *0084e507080400000011001100cc2b0200c8a905081000000011000d00e72b0200787b05080c00 *000011000d00052c0200f08b05087d00000012000d00282c0200fc7905082d00000012000d0047 *2c02006ce907080400000011001100822c02006c7107080e00000012000d008c2c0200c8e50608 *9200000012000d009f2c0200881508080400000011001100bc2c020040bf05084e00000012000d *00d92c0200e4ea070804000000110011001b2d020004e7070804000000110011004a2d02009019 *05080800000011000d008b2d0200780b05080300000012000d00c52d0200740c05080800000011 *000d00ef2d0200b4ed04083200000012000d00262e0200240e08080400000011001100682e0200 *44fd04080800000011000d00b02e0200f8f107080400000011001100f22e02009c0b0508030000 *0012000d002d2f020008d404080800000011000d00662f020059df04087a00000012000d00912f *020028c405084b00000012000d00ba2f0200f40708080400000011001100fc2f020018f8040806 *00000012000d002b3002002c0f0808040000001100110053300200f8ca05080700000012000d00 *65300200640a08080400000011001100a730020038f705080c00000011000d00c6300200f09c05 *080800000011000d00eb30020000000000db01000012000000fd300200889a0508070000001200 *0d001731020084fc070804000000110011005931020064f2070804000000110011009b31020070 *e507080400000011001100ad31020000cb0508b300000012000d00c0310200040e080804000000 *1100110002320200d02806080800000011000d0020320200657207089500000012000d002b3202 *002ca105080c00000012000d004932020028d704081000000011000d007e32020078fa05085800 *000012000d00a432020064e707080400000011001100e732020053ea06080600000012000d0000 *33020024f60708040000001100110043330200ec040808040000001100110084330200641f0508 *2300000012000d00bc330200981308080400000011001100d2330200ac0a080804000000110011 *0014340200d0cd05080600000012000d002b34020088f104081000000011000d0061340200a403 *07089b00000012000d007534020088f807080400000011001100b7340200a8d304080600000012 *000d00ec340200e8910608cb00000012000d00f53402006c0d06080800000011000d000a350200 *8c06080804000000110011004c35020000000000b9010000120000005f35020080430508070000 *0012000d0096350200b08105082d00000012000d00aa350200841905080800000011000d00e835 *0200103b06080600000012000d000d3602005c160808040000001100110039360200ece8040808 *00000011000d00793602000000000036000000120000008a3602001c8105080700000012000d00 *a0360200900f08080400000011001100b836020060f905082000000012000d00df360200e0ee07 *08040000001100110021370200c44406080800000011000d004a37020094080808040000001100 *11008d3702001c2c0808040000001100180096370200255306081f00000012000d00a237020074 *f004081000000011000d00d8370200649705080800000011000d00ee370200bcd20608e3000000 *12000d00fc370200bc05080804000000110011003d380200cc03080804000000110011007e3802 *00000000002c010000120000008b3802004c1905080800000011000d00cd380200309f05080300 *000012000d00e638020020fc05080c00000011000d0008390200c88305080600000012000d0023 *390200bcfd04080300000012000d006b39020098fa07080400000011001100ad390200cc0a0808 *0400000011001100ef390200144005085500000012000d002b3a02000016080804000000110011 *00453a02007c0b08080400000011001100873a0200f0ed07080400000011001100c93a0200180b *05080800000011000d00013b0200940f08080400000011001100183b0200a0fe07080400000011 *0011005a3b0200c0ef04080c00000011000d009e3b020066c406080900000012000d00b43b0200 *2cce05080c00000012000d00cb3b0200f403080804000000110011000c3c0200fc2a0508070000 *0012000d00533c02000e8906083b00000012000d00683c0200b8fb07080400000011001100aa3c *0200a88105080700000012000d00bd3c0200e0ee06080800000011000d00d33c02007813080804 *00000011001100f23c0200f0be0408b300000012000d00103d0200a8f907080400000011001100 *523d0200000000002300000012000000623d02008c14080804000000110011007c3d020060f605 *081800000011000d00943d0200e88d05089f00000012000d00b63d0200840c0808040000001100 *1100f83d0200001d05083700000012000d002d3e0200e0e804080800000011000d00723e02000c *0a08080400000011001100b43e0200f8f304083200000012000d00eb3e020068e7070804000000 *11001100313f020010ef06080800000011000d00463f0200b01008080400000011001100713f02 *00a00f06085800000012000d00873f020050d504084b00000012000d00b43f0200b01706082000 *000012000d00ca3f0200443205082800000012000d0008400200f8e5070804000000110011004d *400200b81808080400000011001100674002000000000030000000120000007a400200b4080808 *0400000011001100bc400200c01708080400000011001100d6400200bcaa05080800000011000d *00ed400200bcfa070804000000110011002f41020080c806080c00000011000d004341020028fb *06080800000011000d0058410200c0ec06080800000011000d006741020004f507080400000011 *001100a9410200b4f907080400000011001100eb4102007cf2070804000000110011002d420200 *6c0105080c00000011000d0051420200000000003a0000001200000069420200c4090808040000 *0011001100ab420200ac9f05082900000012000d00c342020094f204080c00000012000d000543 *0200589706080800000011000d0017430200bc4605081000000011000d005a430200883b060865 *00000012000d00714302005c1106080800000011000d008b430200e81008080400000011001100 *b843020010ef07080400000011001100fa43020008e70708040000001100110028440200dcf807 *0804000000110011006a440200d8ea07080400000011001100ac440200103b0608080000001100 *0d00d044020018010808040000001100110011450200f03306085800000012000d0029450200cc *0d080804000000110011006b450200f40b08080400000011001100ad45020054e7070804000000 *11001100ea45020054fc070804000000110011002c460200601708080400000011001100464602 *00741208080400000011001100634602009c3905080700000012000d00a1460200849a05080800 *000011000d00bc460200140d08080400000011001100fe46020014070808040000001100110040 *470200d8e505080800000011000d005c470200380107089b00000012000d0070470200d40d0808 *0400000011001100b24702001cef07080400000011001100f4470200843d0508b300000012000d *002d4802007c3705080700000012000d00614802003c9705080800000011000d007848020044b5 *05080700000012000d008f480200e0eb07080400000011001100d14802002cea06080300000012 *000d00e948020060ed070804000000110011002c49020000000000000000001200000035490200 *20ff06084100000012000d0048490200440d080804000000110011008a4902004ce80708040000 *0011001100c0490200000c05085400000011000d00fd490200dcc005085d00000012000d00204a *0200ac10080804000000110011003f4a02000c3605080700000012000d00754a0200d00d060858 *00000012000d00924a0200c4d306082f00000012000d009e4a02000c1008080400000011001100 *b54a020030f006080800000011000d00c84a0200759006081800000012000d00da4a02005c0408 *0804000000110011001b4b020050f7070804000000110011005d4b0200c0140808040000001100 *11007d4b02007c0d08080400000011001100bf4b0200c0a105080700000012000d00d34b0200e2 *7206081500000012000d00e64b0200807605081800000011000d00294c020080fd040808000000 *11000d00734c020080ee07080400000011001100b54c0200a8eb06080c00000011000d00ca4c02 *00d42c06080800000011000d00f24c0200fc1f06080c00000012000d00124d020068f506080800 *000011000d00254d02008c1608080400000011001100454d020030df05080800000011000d0058 *4d0200885606083300000012000d00674d02002c0c08080400000011001100a94d02003c450608 *0300000012000d00ce4d0200cc9705080800000011000d00eb4d020088f2070804000000110011 *002d4e02000c0b05080800000011000d00654e0200c8eb07080400000011001100a74e020008fd *07080400000011001100e94e0200643406080800000011000d00004f0200f81308080400000011 *001100184f0200d8cb05080c00000012000d00324f0200c44406080300000012000d005c4f0200 *9a6506081500000012000d006c4f02008d4506082900000012000d00794f020024210608580000 *0012000d00954f0200641608080400000011001100b64f0200041a06080c00000011000d00d64f *0200b64506082100000012000d00e34f0200ec080808040000001100110025500200a42c080804 *000000110018002e50020038d404080800000011000d0069500200280f08080400000011001100 *85500200000000004a000000120000009c500200acfe07080400000011001100de500200781006 *080800000011000d0004510200609a05080300000012000d001d510200d8380608080000001100 *0d0034510200fcd404084b00000012000d005d51020028a405080c00000012000d00805102005c *0808080400000011001100c3510200401d0508c700000012000d00fa51020088e7070804000000 *110011003b5202001cfe070804000000110011007d52020040f304080c00000011000d00c05202 *009cb105085500000012000d00dd520200bccb05080300000012000d0004530200ccfc06080800 *000011000d001a5302001a4906080d00000012000d002b530200549d05080800000011000d004f *530200b40b080804000000110011009153020048d404086900000012000d00b9530200e0a50508 *2100000012000d00db5302004ccf06085e01000012000d00e55302004018080804000000110011 *00ff530200b0e705080800000011000d00145402008cfb04082000000012000d004f540200ecc4 *04089f00000012000d00805402002fea06080600000012000d009954020050ea05080800000011 *000d00ae54020010e205080800000011000d00c8540200441108080400000011001100e0540200 *642005086900000012000d00105502002c2c080804000000110018001355020040390608080000 *0011000d002a5502003407080804000000110011006c550200480208080400000011001100ae55 *020038db06089400000012000d00c2550200801108080400000011001100e15502000c9d050808 *00000011000d0008560200bc5f07081600000012000d001a56020060ff07080400000011001100 *5c560200ac4406080800000011000d0081560200440708080400000011001100c35602007cfb07 *080400000011001100055702001ce904080300000012000d004557020054970508080000001100 *0d0060570200041008080400000011001100795702004c9005080700000012000d0090570200a0 *0506085600000012000d00b057020080fa07080400000011001100f2570200a8ea070804000000 *110011003458020034160808040000001100110052580200249d05080800000011000d00735802 *008cfd04080800000011000d00bd5802005cfd07080400000011001100ff58020050e907080400 *0000110011003a590200609a05080800000011000d0052590200f80f0808040000001100110075 *590200880f080804000000110011008b590200b8a106080c00000011000d009959020000000000 *2300000012000000ac590200500108080400000011001100ed5902009000080804000000110011 *002e5a0200acfb07080400000011001100705a02008d9006089e00000012000d007f5a0200dc0b *08080400000011001100c15a020000000000d200000012000000d15a0200944406080800000011 *000d00f75a0200440d06080300000012000d00175b0200d49805085800000012000d00305b0200 *e0e507080400000011001100645b0200d04406080300000012000d00945b0200d4150808040000 *0011001100b15b020018ed07080400000011001100f45b02009c8005080800000011000d00185c *02008802080804000000110011005a5c0200a07c05083200000012000d007a5c02000000000000 *00000012000000825c0200343f06080c00000011000d00a55c0200789a05080800000011000d00 *bd5c020004d705085d00000012000d00e55c02003c9d05080800000011000d00075d0200b4ff07 *080400000011001100495d0200c4dc04084100000012000d00735d0200ac0c0808040000001100 *1100b55d0200bcdc04080700000012000d00de5d0200a81905081000000011000d00125e020078 *1c06081800000011000d00295e020008ea04080800000011000d005e5e0200ac2505084d000000 *12000d00935e0200780208080400000011001100d65e0200c40508080400000011001100175f02 *0028ec06080c00000011000d002d5f0200d011080804000000110011004c5f0200e40608080400 *0000110011008e5f0200ac2505081000000011000d00c25f020048f00708040000001100110004 *600200ac2805080800000011000d003b6002002cab05080700000012000d004f600200203b0608 *0800000011000d007660020040fe07080400000011001100b8600200fc9605080600000012000d *00d5600200d0f2070804000000110011001761020020e906083d00000012000d0027610200d49c *05080800000011000d0047610200f81c05080700000012000d007b6102009ce607080400000011 *001100bc61020080f107080400000011001100fe61020018fc06080800000011000d0013620200 *207505085800000012000d004b62020020d404080600000012000d0083620200ed7b0608790000 *0012000d008d6202003c0d08080400000011001100cf62020044fd070804000000110011001163 *0200a8fa04082000000012000d004c63020060dc06089400000012000d005f6302008cb4050823 *00000012000d0075630200200208080400000011001100b6630200fc3405087d00000012000d00 *ec63020004dc05085d00000012000d000e640200d40a0808040000001100110050640200e8ed05 *082300000012000d0068640200fcf506084e00000012000d007c640200fce106084e0000001200 *0d0091640200f8aa05080300000012000d00ae6402007cf507080400000011001100f0640200e8 *9705080800000011000d000a650200d800080804000000110011004b6502007c18080804000000 *110011007765020088f507080400000011001100b9650200400f05080c00000011000d00f46502 *00d016080804000000110011001f660200d4f406084e00000012000d0033660200cc1608080400 *000011001100566602003ceb06080c00000011000d006f660200840b05080800000011000d00a8 *660200e0e807080400000011001100db66020010ed06080800000011000d00ea66020045060708 *5e01000012000d00f5660200bc2706080500000012000d0018670200683b06080600000012000d *003c6702006cf9070804000000110011007e670200249d05080300000012000d00a0670200309f *05080800000011000d00b8670200a82d08080400000011001800c96702002c0308080400000011 *0011000a6802007f4e06080900000012000d00166802009cff0708040000001100110058680200 *381205080700000012000d008e680200a00108080400000011001100cf68020010e90408030000 *0012000d0015690200801808080400000011001100396902003801080804000000110011007b69 *0200e01606086600000012000d009c690200a4e907080400000011001100d36902001e56060833 *00000012000d00e2690200f85406089a00000012000d00e7690200d4a205080700000012000d00 *f9690200389905083200000012000d000e6a02007403080804000000110011004f6a02006c9e04 *080700000012000d005e6a020008d505081000000011000d00836a020038270808000000001000 *f1ff8a6a02000c0508080400000011001100cb6a02009cfc070804000000110011000d6b020034 *ca05080800000011000d00266b020050ee07080400000011001100686b020028d7040828000000 *12000d009e6b0200a88507080000000012020d00b56b0200e01608080400000011001100d36b02 *0094aa05080c00000012000d00f66b020038b90608de04000012000d00096c0200c49506081f00 *000012000d00186c020098fd070804000000110011005a6c0200e4e70708040000001100110097 *6c020080250808000000001100f1ffad6c020000000000c700000012000000bd6c020084110808 *0400000011001100d76c02001c0908080400000011001100196d0200f8e7070804000000110011 *00536d02008c18080804000000110011006b6d0200fc430508a900000012000d009e6d0200440c *08080400000011001100e06d0200e03e0808000000001000f1ffe56d0200f4d506085d00000012 *000d00ff6d0200515606083700000012000d000f6e0200340808080400000011001100526e0200 *ac9c05080800000012000d006a6e02002c21080808010000110011007e6e0200c8e40508060000 *0012000d00a36e0200500208080400000011001100e56e0200cc0708080400000011001100276f *0200040408080400000011001100686f0200984e05080800000011000d00a36f02004bc4060809 *00000012000d00b96f020024e807080400000011001100ed6f02005c0c08080400000011001100 *2f70020050fa0708040000001100110071700200bcfd06081e00000012000d0088700200640708 *080400000011001100ca70020004e904080800000011000d000e710200d48d06085b0000001200 *0d001d710200224007082800000012000d0028710200ac07080804000000110011006a710200b4 *fc07080400000011001100ac71020070ec07080400000011001100ee710200dcfa05080c000000 *11000d000f720200e04c06082300000012000d001b72020036e004089b00000012000d00467202 *00dcfb06080800000011000d005b72020088d904082300000012000d008c7202005cdb05085d00 *000012000d00ae720200e09005088700000012000d00cb7202002000080804000000110011000c *7302004c4506081700000012000d0034730200925506085e00000012000d003f730200f0170808 *040000001100110059730200c00b05080300000012000d009473020064a105080700000012000d *00a7730200c8ed07080400000011001100e1730200f87005089000000012000d002b7402005812 *08080400000011001100537402008811080804000000110011006a74020080e507080400000011 *0011007a740200f8f707080400000011001100bc7402001cf207080400000011001100fe740200 *f84f05080c00000011000d003f750200601c05089500000012000d007875020030180808040000 *0011001100927502001cec07080400000011001100d475020074a005084b00000012000d00e875 *0200c0f3070804000000110011002a7602001419080804000000110011003f7602003b57060814 *00000012000d004a7602005416080804000000110011006a760200385206081600000012000d00 *85760200b0f407080400000011001100c7760200d8f30708040000001100110009770200649d05 *080700000012000d001f770200109205085d00000012000d003477020078190508030000001200 *0d0073770200582905083700000012000d00a877020084e406080600000012000d00ba77020038 *f707080400000011001100fc77020084ec06080800000011000d000b7802007c07080804000000 *110011004d7802005dc406080900000012000d006378020009e404087a00000012000d008e7802 *00101308080400000011001100a67802004cef07080400000011001100e878020094ca06080c00 *000011000d00f77802000000000032000000120000000979020010f2070804000000110011004b *790200083706085800000012000d0063790200649f05080c00000011000d007979020000000608 *0c00000012000d008d790200b8a106080402000012000d009a790200a8ed070804000000110011 *00de790200900705082000000012000d00167a0200000000004300000012000000287a020008fa *06080800000011000d003c7a0200202c06080c00000011000d005c7a020048ff07080400000011 *0011009e7a0200ac2d08080400000011001800af7a0200acf207080400000011001100f17a0200 *6c0b05080300000012000d002a7b0200640d080804000000110011006c7b020034090808040000 *0011001100ae7b02004c0808080400000011001100f17b0200f4a905080700000012000d00087c *020068f7070804000000110011004a7c020094be04080c00000011000d005a7c0200a4fd070804 *000000110011009c7c020058e807080400000011001100d27c0200d4e804080300000012000d00 *167d0200f815080804000000110011003b7d02008cfd070804000000110011007d7d020048c706 *089100000012000d008e7d020098af05082800000012000d00b07d020028f20708040000001100 *1100f27d020054ed07080400000011001100357e02000c9805080300000012000d00527e0200c8 *fd04080300000012000d00967e020030b305080700000012000d00bf7e0200840e080804000000 *11001100017f0200db4806081f00000012000d00197f0200a407080804000000110011005b7f02 *003c1408080400000011001100807f0200549f05080300000012000d009c7f0200bce507080400 *000011001100ce7f0200fc0d080804000000110011001080020094040808040000001100110051 *8002008ce8070804000000110011008d800200188506084600000012000d00948002004cfb0708 *0400000011001100d680020004ab05080800000011000d00ef80020048c106087000000011000d *00068102008cc806089100000012000d0015810200ff7007083500000012000d002081020084f9 *070804000000110011006281020048e00608ba00000012000d0078810200d8e707080400000011 *001100b9810200774e06080800000012000d00c481020034f904082000000012000d0000820200 *d01805080c00000012000d003e820200d013080804000000110011006082020048310608100000 *0011000d0075820200d818080804000000110011009b820200a40608080400000011001100dd82 *02008ce406080300000012000d00f082020034fb070804000000110011003283020068ae050818 *00000011000d0057830200345206080100000012000d0062830200d4f707080400000011001100 *a4830200d45f07087b10000012000d00b1830200a4ee07080400000011001100f3830200280108 *08040000001100110034840200804005081000000011000d007a84020098170508070000001200 *0d00ac840200484f05080700000012000d00e6840200dcc706088400000012000d00f484020074 *ee070804000000110011003685020000110808040000001100110054850200f0f106084e000000 *12000d0068850200dc0408080400000011001100a985020044ed06080800000011000d00bd8502 *0024fe06080c00000011000d00cf850200a03206085800000012000d00e7850200901108080400 *000011001100fd850200214606082900000012000d000a860200107605085800000012000d0049 *860200bcb305080700000012000d005e860200809405083800000012000d0074860200d8fe0608 *3b00000012000d0087860200589906080c00000011000d0095860200074906080800000012000d *00a48602008ce707080400000011001100d78602002cfa04080c00000011000d00128702000000 *0000af000000120000002587020064c205080700000012000d003b8702007c0508080400000011 *0011007c870200ec4505080600000012000d00be87020060e707080400000011001100ff870200 *d41306082000000012000d001a880200a0f5070804000000110011005c880200a8fa04080c0000 *0011000d0096880200244506080800000011000d00ba880200940d08080400000011001100fc88 *020058f2070804000000110011003e8902004022080886000000110011004c890200a413080804 *00000011001100618902001ca305082d00000012000d00778902005cf407080400000011001100 *b98902003e4c06082300000012000d00c4890200c81808080400000011001100ed8902007c0908 *0804000000110011002f8a0200600b05080800000011000d00678a020064ec0708040000001100 *1100a98a020034ed06080800000011000d00bb8a020020fd07080400000011001100fd8a0200d4 *e807080400000011001100348b0200c0f907080400000011001100768b0200d01805080c000000 *11000d00b38b0200bd4606082100000012000d00bf8b020060f907080400000011001100018c02 *00b43605080700000012000d00388c0200d02d05088700000012000d007e8c020070f604080c00 *000011000d00b28c0200b00108080400000011001100f38c0200e40b05080300000012000d002e *8d0200ec4c05080700000012000d006c8d02003c0a08080400000011001100ae8d020064080808 *0400000011001100f18d02006ce707080400000011001100378e02001c06080804000000110011 *00798e0200000000008401000012000000878e0200003b06080800000011000d00ad8e020020cd *06080c00000011000d00bd8e020070fc04080c00000011000d00f78e0200ac0508080400000011 *001100388f02001cf8070804000000110011007a8f020084e707080400000011001100b98f0200 *f4f207080400000011001100fb8f02008ca80608b602000012000d000a900200e8440608030000 *0012000d002e9002005405080804000000110011006f900200bc0908080400000011001100b190 *0200e8d304080800000011000d00ec9002003ce70708040000001100110029910200c8e6070804 *0000001100110070910200040808080400000011001100b2910200ec1108080400000011001100 *da910200f43105080300000012000d0020920200298f06081001000012000d0029920200d8d005 *082900000012000d004692020028e707080400000011001100849202000cb10508070000001200 *0d0099920200a04406080800000011000d00bd920200d4fa07080400000011001100ff92020094 *d305080c00000011000d001b9302000cff070804000000110011005d930200882106080c000000 *11000d007d93020040bf05080c00000011000d009993020024c30608eb00000012000d00ab9302 *003c0608080400000011001100ed9302007404080804000000110011002e940200c4eb04080c00 *000011000d006d940200e7e204089100000012000d009894020044e40708000000001000f1ffab *940200ac9f04082000000012000d00c194020044050808040000001100110002950200a80b0508 *0300000012000d003b950200c0ef04080c00000012000d0080950200c4b305083700000012000d *00969502000c9705080600000012000d00b2950200b00208080400000011001100f3950200a89f *06080c00000011000d00019602009d8d06081f00000012000d0008960200882106082000000012 *000d00299602003cc406082c00000011000d003e960200707f07083302000012020d0047960200 *20a605081000000011000d0067960200189b0508d100000012000d007e960200c89c0508080000 *0011000d009b960200007706081100000012000d00aa96020094e807080400000011001100e396 *020050e70708040000001100110028970200b8f706080800000011000d003c9702000000000099 *0000001200000057970200acf80708040000001100110099970200788a05081000000011000d00 *c4970200a0170508b300000012000d00f797020098f70708040000001100110039980200f05506 *082e00000012000d003f980200282d05080700000012000d00829802003cf30708040000001100 *1100c498020044080808040000001100110007990200b8ef0708040000001100110049990200b0 *fd04080300000012000d009199020030ea07080400000011001100d2990200e4d105080c000000 *11000d00e5990200e41906081800000011000d00089a020078e707080400000011001100449a02 *00c54c06081b00000012000d004f9a0200f47905080700000012000d006d9a0200ccc805080c00 *000011000d00959a0200e40208080400000011001100d59a0200f48507080400000011000f00e4 *9a0200549005086900000012000d00fc9a0200acc004081000000011000d00399b020094c90508 *1000000011000d00509b020084c206082100000012000d00779b0200946106081000000012000d *00869b02006c0a08080400000011001100c89b0200c41308080400000011001100e29b020090c2 *05080700000012000d00f49b020098ee07080400000011001100369c020008f804080800000011 *000d00689c02004cec04083200000012000d009f9c0200dc8905088700000012000d00c29c0200 *240b05080800000011000d00fa9c020090ed070804000000110011003d9d020028fe0708040000 *00110011007f9d020008f804080600000012000d00b29d0200280f06080800000011000d00c79d *02003c1905080600000012000d00079e0200f4e6070804000000110011003e9e02005016080804 *00000011001100559e020090f607080400000011001100979e020094be04083c00000012000d00 *a89e0200241806080c00000011000d00cf9e0200fc0608080400000011001100119f0200402e08 *0804000000110018002a9f02000c7b05080700000012000d00429f020000140808040000001100 *11006a9f020084ed07080400000011001100ad9f0200140508080400000011001100ee9f020040 *0a0508c400000012000d0038a00200889d06081102000012000d0045a00200b0e6070804000000 *1100110087a00200704605080700000012000d00bda00200c4eb04080f00000012000d00fda002 *0028c405080c00000011000d0025a1020064fb06081e00000012000d003ba102002cfd04080800 *000011000d0084a10200a46106087a00000012000d0097a1020058d806080b01000012000d00ad *a1020034ca05085800000012000d00c7a10200e40a0808040000001100110009a20200f0e70708 *040000001100110047a20200bc0b0808040000001100110089a2020034ec070804000000110011 *00cca202005801080804000000110011000da30200d8ff070804000000110011004fa3020020b5 *05082300000012000d0065a302001cf605080300000012000d0084a3020070dc05080c00000011 *000d00aca3020070d905082000000012000d00d2a3020098020808040000001100110014a40200 *ecaa05080800000011000d002da40200e8e7070804000000110011006ba40200b8f804080c0000 *0011000d00a4a40200414d06082600000012000d00b1a4020074fa07080400000011001100f3a4 *020040100808040000001100110011a50200b8020808040000001100110049a5020030f0060803 *00000012000d005da502005d6006082200000012000d0068a50200d01208080400000011001100 *87a50200a49705080600000012000d00a1a50200d0fb07080400000011001100e3a50200e0d606 *085e00000012000d00f1a50200a4030808040000001100110032a60200588705080c0000001100 *0d005aa60200d4aa05080800000011000d0072a6020081c406080900000012000d0088a6020000 *000000000000001200000094a60200c40608080400000011001100d6a60200b4e7070804000000 *110011001ea7020010ab05080300000012000d003ba70200297806084e00000012000d0049a702 *0048ea070804000000110011008aa702009c2c0808040000001100180094a70200884e06080900 *000012000d00a1a7020054a305080300000012000d00bca70200000000000d00000012000000cb *a7020060d005081f00000012000d00f1a702009c050808040000001100110032a80200d8010808 *040000001100110073a80200a82c0808040000001100180080a802000c4506080800000011000d *00a6a80200b8e205082000000012000d00c6a8020044d105080c00000012000d00dea80200c0b4 *05080c00000011000d000fa9020008eb0708040000001100110051a90200e40b05080800000011 *000d008ba90200f8b005081800000011000d00a2a90200f4f507080400000011001100e5a90200 *000000000000000012000000f2a90200e4090808040000001100110034aa02005c0d0808040000 *001100110076aa0200f8160808040000001100110094aa0200a04f05080c00000012000d00d7aa *0200c0000808040000001100110018ab0200e4f0070804000000110011005aab02006c0d080804 *000000110011009cab0200d40708080400000011001100deab0200040206085800000012000d00 *f7ab02000000000031000000120000000aac020050180808040000001100110024ac02002c8405 *080300000012000d0041ac0200901905080300000012000d0083ac02003c040808040000001100 *1100c4ac0200ec1408080400000011001100dcac0200a4e80708040000001100110019ad020090 *fc070804000000110011005bad0200000000006a010000120000006dad020034cd0608ce000000 *12000d007cad0200a44e06080800000012000d0088ad0200b8fe07080400000011001100caad02 *00d89705080800000011000d00e4ad0200b4060808040000001100110026ae02009c0408080400 *00001100110067ae020068f407080400000011001100a9ae0200609406085e00000012000d00c1 *ae0200ac0b0808040000001100110003af02005c060808040000001100110045af02002cf40708 *040000001100110087af020030ed07080400000011001100caaf0200342c080804000000110018 *00cfaf0200c8aa05080300000012000d00eaaf0200143006086c00000012000d00ffaf02006802 *0808040000001100110041b0020038100808040000001100110064b00200849705080600000012 *000d007eb00200ece807080400000011001100beb00200580008080400000011001100feb00200 *d49005080800000011000d0028b10200f8000808040000001100110069b1020060e40708000000 *001000110076b1020094e805085800000012000d008cb102000c9f05080300000012000d00a7b1 *020098ac05087300000012000d00bab10200e84c05080800000011000d00f9b10200b8ef060808 *00000011000d0011b202006cbe04080c00000012000d001fb20200f8aa05080800000011000d00 *3bb2020010d405082000000012000d0059b20200440b080804000000110011009bb202000cc305 *080700000012000d00b0b20200389905080c00000011000d00c4b2020078930508450000001200 *0d00e9b2020048c804081000000011000d002ab302008c03080804000000110011006bb3020048 *3e05080c00000011000d00b0b30200ac2e05080700000012000d00fab30200440e080804000000 *110011003cb4020088ef070804000000110011007eb40200d8ea04082800000012000d00bdb402 *00fcec06080800000011000d00ccb4020070ef070804000000110011000eb502009c0908080400 *00001100110050b50200d02806085800000012000d006fb5020098c205087300000012000d0082 *b50200107605080800000011000d00c0b502004c4706081c00000012000d00cfb5020030730508 *1000000011000d000fb60200ac060808040000001100110051b60200b40a080804000000110011 *0093b6020044fd06081e00000012000d00aab60200acf306084e00000012000d00beb60200883b *06081800000011000d00d4b60200109c05080c00000011000d00eeb60200e0e905080800000011 *000d0003b70200f43a06080300000012000d002db70200784d05082000000012000d0067b70200 *e8160808040000001100110081b70200f1e50408a800000012000d00acb7020000000000000000 *0020000000c0b70200000000007100000012000000d9b70200a81905080c00000012000d000eb8 *02006a6306081300000012000d0018b8020008ea04085800000012000d004eb802003352060801 *00000012000d0057b8020004ce06084501000012000d0062b80200583b06080600000012000d00 *83b802004a4007082c00000012000d008cb80200a04406080300000012000d00b1b802008cfd04 *080300000012000d00fcb80200981f05080c00000011000d002ab902005ce80708040000001100 *110062b9020068cb06083100000012000d0070b90200f8d304080800000011000d00aeb90200d8 *d304080600000012000d00ecb902008c110808040000001100110006ba0200683605084b000000 *12000d003dba0200f44406080800000011000d0065ba0200140a08080400000011001100a7ba02 *00c4f705081000000011000d00c1ba020004ef0708040000001100110003bb020090e406081300 *000012000d001fbb0200004506080800000011000d0049bb0200ac7105082a00000012000d0089 *bb020044be04080c00000011000d0096bb02008cea06082c00000011000d00acbb0200c4ef0708 *0400000011001100eebb02008cfb04080c00000011000d0028bc02008c0f080804000000110011 *003fbc020024d805082000000012000d0060bc020090e4070804000000110011007abc0200902f *05083700000012000d00bdbc0200e0e60708040000001100110003bd0200e40a06082300000012 *000d0020bd0200c48005080700000012000d003abd020084e90708040000001100110075bd0200 *080108080400000011001100b6bd02001e6206088f00000012000d00c4bd02005c050808040000 *001100110005be0200c8f40708040000001100110047be020084dd04080700000012000d006bbe *020020f407080400000011001100adbe020080e707080400000011001100f0be0200c02c080858 *00000011001800f9be02009ce50708040000001100110037bf0200189f05080300000012000d00 *50bf0200b4e90708040000001100110094bf0200614806081f00000012000d00aabf0200c40808 *080400000011001100ecbf0200d000080804000000110011002dc00200dcda04080c0000001100 *0d006cc00200cc4d06081b00000012000d007cc00200fc0408080400000011001100bdc0020000 *1808080400000011001100d7c00200acef0708040000001100110019c1020058e7070804000000 *110011005dc10200411b0708c200000012000d0065c10200ac0808080400000011001100a7c102 *0014ef04080c00000011000d00e9c10200000000004c00000012000000fec102000c1006085800 *000012000d0014c202007c040808040000001100110055c20200900b05080300000012000d008f *c20200f8ee07080400000011001100d1c20200f44305080700000012000d0003c30200a4ce0508 *8100000012000d0024c30200843505088700000012000d005fc30200784605082d00000012000d *0096c302000000000000000000120000009cc3020038c906089100000012000d00abc30200b8ec *07080400000011001100edc30200acd705085d00000012000d0016c40200249705080300000012 *000d002ec40200789305080c00000011000d0052c4020060f60708040000001100110095c40200 *340d08080400000011001100d7c40200a84206080c00000011000d00fdc40200b4140808040000 *00110011001cc502001c2505080700000012000d0051c5020048000808040000001100110091c5 *020094b105080700000012000d00adc50200e0e806083d00000012000d00bdc502001c45050807 *00000012000d00f6c50200a07c05081000000011000d0015c60200242106080800000011000d00 *30c602002cf605080b00000012000d0048c602005c09080804000000110011008ac602006c0508 *080400000011001100cbc6020074f4070804000000110011000dc70200b0fd0708040000001100 *11004fc70200009805080800000011000d0068c7020088fe07080400000011001100aac7020068 *eb07080400000011001100ecc7020058eb04080c00000011000d0023c8020000000000d2000000 *1200000031c8020044e90708040000001100110068c80200ece5070804000000110011009cc802 *00c0ff07080400000011001100dec80200249705080800000011000d00f5c802008a4d06084200 *000012000d0002c90200d00f0808040000001100110024c90200347107083700000012000d0034 *c9020084090808040000001100110076c902002e5c07087200000012000d0086c9020030d30508 *0c00000011000d00a3c90200cc3705080700000012000d00dcc90200382a080804000000110018 *00edc90200d8f9070804000000110011002fca020028160808040000001100110051ca020034cd *06080c00000011000d0061ca0200a4eb07080400000011001100a3ca0200e8c805080d00000012 *000d00caca0200fca905084b00000012000d00e2ca02002c7a05080700000012000d00f8ca0200 *6814080804000000110011000ecb020010ec0708040000001100110050cb0200e4140808040000 *001100110068cb0200a0fb07080400000011001100aacb0200b4ed07080400000011001100eccb *02000c0b05080300000012000d0025cc0200dced06080800000011000d003bcc0200ec09080804 *000000110011007dcc020068ae05082800000012000d00a3cc0200a0e807080400000011001100 *e2cc0200309d05080800000011000d0001cd0200929306082600000012000d0013cd0200283405 *080300000012000d0069cd0200077306083600000012000d007acd020070dc0508300000001200 *0d00a3cd0200201008080400000011001100bccd0200f0fc07080400000011001100fecd0200dc *0f080804000000110011001bce0200ac1c06080500000012000d0032ce0200fc13080804000000 *110011005bce020088f605080500000012000d0073ce0200140705080c00000011000d00aace02 *00e74d06081b00000012000d00b4ce0200343d06082300000012000d00d7ce0200ac9705080c00 *000011000d00f6ce020088ef06080800000011000d0008cf0200e0e70708040000001100110044 *cf0200d0010808040000001100110085cf02005cdb0408bd00000012000d00a9cf020044150808 *0400000011001100d2cf0200140c0808040000001100110014d002003016080804000000110011 *0034d00200f0f00708040000001100110076d00200b84406080800000011000d00a0d00200a40e *08080400000011001100e2d0020064040808040000001100110023d10200ccdb06089400000012 *000d0035d1020000000000aa0200001200000040d10200303b06080600000012000d0067d10200 *a4fa07080400000011001100a9d10200f8fd06081e00000012000d00c0d1020018160808040000 *0011001100dad10200182707081100000012000d00e3d102008cdd04083700000012000d0008d2 *0200f4bd04081100000012000d001ad2020000000000000000002000000029d2020054fc060808 *00000011000d003ed2020038eb0708040000001100110080d20200000000008100000012000000 *91d2020010e904080800000011000d00d6d20200e0aa05080300000012000d00f2d20200b0a105 *080300000012000d000cd30200e4be04080300000012000d0024d30200dc440608080000001100 *0d004ad30200cc04080804000000110011008bd30200c8e405080800000011000d00afd3020050 *2505084100000012000d00e1d30200e8e80708040000001100110022d40200143d06080a000000 *12000d0044d40200d8cb05080c00000011000d005dd40200e0fd070804000000110011009fd402 *00807a05083700000012000d00b5d4020068fd07080400000011001100003c636f6d6d616e6420 *6c696e653e002f7573722f7372632f7061636b616765732f4255494c442f676c6962632d322e33 *2f63632f636f6e6669672e68003c6275696c742d696e3e006162692d6e6f74652e53002f757372 *2f7372632f7061636b616765732f4255494c442f676c6962632d322e332f63632f6373752f6162 *692d7461672e6800737573652d6e6f74652e5300696e69742e63002f7573722f7372632f706163 *6b616765732f4255494c442f676c6962632d322e332f63632f6373752f637274692e53002f7573 *722f7372632f7061636b616765732f4255494c442f676c6962632d322e332f63632f6373752f64 *6566732e6800696e697466696e692e630063616c6c5f676d6f6e5f737461727400637274737475 *66662e63005f5f43544f525f4c4953545f5f005f5f44544f525f4c4953545f5f005f5f4a43525f *4c4953545f5f00702e3000636f6d706c657465642e31005f5f646f5f676c6f62616c5f64746f72 *735f617578006672616d655f64756d6d79005f5f43544f525f454e445f5f005f5f44544f525f45 *4e445f5f005f5f4652414d455f454e445f5f005f5f4a43525f454e445f5f005f5f646f5f676c6f *62616c5f63746f72735f617578002f7573722f7372632f7061636b616765732f4255494c442f67 *6c6962632d322e332f63632f6373752f6372746e2e5300676863373530302e6863005f6d6f6475 *6c655f7265676973746572656400723547735f636c6f7375726500723547755f636c6f73757265 *00723547775f636c6f7375726500723547775f696e666f00723547775f656e747279007335554f *5f696e666f007335554f5f72657400733555435f696e666f00733555445f696e666f0073355544 *5f72657400733555435f72657400733555425f696e666f00733555425f72657400723547795f63 *6c6f7375726500723547795f696e666f00723547795f656e747279007335554d5f696e666f0073 *35554d5f72657400723547415f636c6f7375726500723547415f696e666f00723547415f656e74 *7279007335554b5f696e666f007335554b5f72657400723547435f636c6f737572650072354743 *5f696e666f00723547435f656e74727900733555495f696e666f00733555495f72657400723547 *455f636c6f7375726500723547455f696e666f00723547455f656e74727900733555475f696e66 *6f00733555475f72657400723547475f636c6f7375726500723547475f696e666f00723547475f *73727400723547475f656e74727900733549645f696e666f00733549655f696e666f0073354965 *5f72657400733549645f72657400723547495f636c6f73757265007235474b5f636c6f73757265 *007235474d5f636c6f73757265007235474d5f696e666f007235474d5f737274007235474d5f65 *6e74727900733555765f696e666f00733555415f696e666f00733555415f726574007335557a5f *696e666f007335557a5f72657400733555795f696e666f00733555795f72657400733555785f69 *6e666f00733555785f72657400733555765f726574007235474f5f636c6f737572650072354751 *5f636c6f7375726500723547515f696e666f00723547515f73727400723547515f656e74727900 *723547535f636c6f7375726500723547535f696e666f00723547535f73727400723547535f656e *747279007335556a5f696e666f00733555755f696e666f00733555755f72657400733555745f69 *6e666f00733555745f72657400733555735f696e666f00733555735f72657400733555725f696e *666f00733555725f72657400733555705f696e666f00733555705f726574007335556f5f696e66 *6f007335556f5f726574007335556e5f696e666f007335556e5f726574007335556c5f696e666f *007335556c5f726574007335556b5f696e666f007335556b5f726574007335556a5f7265740072 *3547555f636c6f7375726500723547575f636c6f7375726500723547595f636c6f737572650072 *3548305f636c6f7375726500723548325f636c6f7375726500723548325f696e666f0072354832 *5f656e747279004d61696e5f6d61696e5f737274007335534e5f696e666f007335534e5f737274 *64007335534f5f73727464007335544f5f696e666f007335544f5f726574007335544e5f696e66 *6f007335544e5f726574007335544d5f696e666f007335544d5f726574007335544c5f696e666f *007335544c5f72657400733554495f696e666f00733554495f7265740073354d425f696e666f00 *73354d425f7265740073354d445f696e666f0073354d445f656e747279007335544b5f696e666f *007335544b5f72657400733554455f696e666f00733554455f7265740073354e395f696e666f00 *73354e395f7265740073354e625f696e666f0073354e625f656e74727900733554475f696e666f *00733554475f72657400733554415f696e666f00733554415f7265740073354e485f696e666f00 *73354e485f7265740073354e4a5f696e666f0073354e4a5f656e74727900733554435f696e666f *00733554435f72657400733554775f696e666f00733554775f7265740073354f655f696e666f00 *73354f655f7265740073354f675f696e666f0073354f675f656e74727900733554795f696e666f *00733554795f72657400733554735f696e666f00733554735f7265740073354f4c5f696e666f00 *73354f4c5f7265740073354f4e5f696e666f0073354f4e5f656e74727900733554755f696e666f *00733554755f726574007335546f5f696e666f007335546f5f72657400733550695f696e666f00 *733550695f726574007335506b5f696e666f007335506b5f656e74727900733554715f696e666f *00733554715f726574007335546c5f696e666f007335546c5f726574007335546b5f315f616c74 *007335546b5f325f616c74007335546b5f7674626c007335546a5f315f616c74007335546a5f64 *666c74007335546a5f7674626c007335507a5f696e666f007335507a5f656e747279007335524e *5f736c6f77007335524e5f656e747279007335527a5f736c6f77007335527a5f656e7472790073 *3555635f696e666f00733555635f72657400733555625f696e666f00733555625f726574007335 *55615f696e666f00733555615f72657400733555395f696e666f00733555395f72657400733555 *375f696e666f00733555375f72657400733555365f696e666f00733555365f7265740073355535 *5f696e666f00733555355f72657400733555345f696e666f00733555345f72657400733555325f *696e666f00733555325f72657400733555305f696e666f00733555305f726574007335545a5f69 *6e666f007335545a5f72657400733554595f696e666f00733554595f72657400733554585f696e *666f00733554585f726574007335527a5f696e666f00733555665f696e666f00733555665f7265 *7400733555645f696e666f00733555645f72657400733554565f696e666f00733554565f726574 *00733554555f696e666f00733554555f72657400733554545f696e666f00733554545f72657400 *733554535f696e666f00733554535f72657400733554525f696e666f00733554525f7265740073 *35524e5f696e666f00733555695f696e666f00733555695f72657400733555675f696e666f0073 *3555675f72657400733554505f696e666f00733554505f72657400733554685f696e666f007335 *54685f72657400733554675f696e666f00733554675f72657400733554665f696e666f00733554 *665f72657400733554655f696e666f00733554655f72657400733554645f696e666f0073355464 *5f72657400733554635f696e666f00733554635f72657400733554625f696e666f00733554625f *72657400733554615f696e666f00733554615f72657400733554385f696e666f00733554385f72 *657400733554365f696e666f00733554365f72657400733554345f696e666f00733554345f7265 *7400733554325f696e666f00733554325f72657400733554305f696e666f00733554305f726574 *00733553595f696e666f00733553595f72657400733553585f696e666f00733553585f72657400 *733553575f696e666f00733553575f72657400733553565f696e666f00733553565f7265740073 *3553545f696e666f00733553545f72657400733553535f696e666f00733553535f726574007335 *53525f696e666f00733553525f7265740073354b345f696e666f0073354b345f72657400733553 *505f696e666f00733553505f726574007335534f5f696e666f007335534f5f726574007335534e *5f726574005a434d61696e5f6d61696e5f737274007335534b5f696e666f007335534b5f726574 *00733553485f696e666f00733553485f72657400733553455f696e666f00733553455f72657400 *67686331363038382e68630067686331363036382e68630067686331353933362e686300676863 *31343932352e68630067686331343531372e68630047726170686963737a6955497a69474c5554 *7a6943616c6c6261636b737a69526567697374726174696f6e5f73657443616c6c6261636b5f73 *727400733359555f696e666f0073335a785f315f616c7400733359615f696e666f00733359615f *656e7472790073335a7a5f696e666f0073335a7a5f7265740073335a795f696e666f0073335a79 *5f7265740073335a785f325f616c740073335a785f7674626c00733359675f696e666f00733359 *675f7265740073335a425f315f616c7400733359775f696e666f00733359775f656e7472790073 *335a435f696e666f0073335a435f7265740073335a425f325f616c740073335a425f7674626c00 *73335a765f696e666f0073335a765f72657400733359435f696e666f00733359435f7265740073 *335a465f696e666f0073335a465f72657400733359555f7265740067686331353032312e686300 *733957395f696e666f00733846345f736c6f7700733846345f656e74727900733957615f696e66 *6f00733957615f72657400733846345f696e666f00733957395f72657400733957355f696e666f *00733846435f736c6f7700733846435f656e74727900733957365f696e666f00733957365f7265 *7400733846435f696e666f00733957355f72657400733955685f696e666f00733955695f696e66 *6f00733955695f72657400733955685f72657400733853655f696e666f00733853625f696e666f *00733853625f656e74727900733853655f656e7472790047726170686963737a6955497a69474c *55547a6943616c6c6261636b737a6957696e646f775f6b6579626f6172644d6f75736543616c6c *6261636b5f73727400733952565f7674626c00733953325f696e666f00733953325f7265740073 *3953305f696e666f00733953305f72657400733952595f696e666f00733952595f726574007339 *52575f696e666f00733952575f72657400733952565f315f616c7400733961485f696e666f0073 *3961485f656e74727900733961785f696e666f00733961785f656e747279007339616e5f696e66 *6f007339616e5f656e74727900733953345f696e666f00733953345f726574007339614f5f696e *666f007339614f5f656e74727900733962435f696e666f00733962435f656e7472790073396273 *5f696e666f00733962735f656e74727900733962695f696e666f00733962695f656e7472790073 *3953615f696e666f00733953615f72657400733962495f696e666f00733962495f656e74727900 *733963775f696e666f00733963775f656e747279007339636d5f696e666f007339636d5f656e74 *727900733963635f696e666f00733963635f656e74727900733953675f696e666f00733953675f *72657400733963435f696e666f00733963435f656e74727900733964715f696e666f0073396471 *5f656e74727900733964675f696e666f00733964675f656e74727900733964365f696e666f0073 *3964365f656e747279007339536d5f696e666f007339536d5f72657400733964775f696e666f00 *733964775f656e747279007339656d5f696e666f007339656d5f656e74727900733965635f696e *666f00733965635f656e74727900733965325f696e666f00733965325f656e7472790073395373 *5f696e666f00733953735f72657400733965735f696e666f00733965735f656e74727900733953 *715f696e666f00733953715f726574007339536b5f696e666f007339536b5f7265740073395365 *5f696e666f00733953655f72657400733953385f696e666f00733953385f72657400733952565f *325f616c740067686331343439312e68630067686331313736312e68630067686331333837392e *68630067686331333732352e68630067686331343132372e68630067686331333533332e686300 *67686331323431332e686300733577625f696e666f00733577625f726574004772617068696373 *7a6955497a69474c55547a69496e697469616c697a7a6174696f6e5f696e697469616c697a7a65 *5f7372740073354b655f696e666f0073357a625f696e666f0073357a625f656e7472790073354b *6a5f696e666f0073354b6a5f7265740073354b695f696e666f0073354b695f7265740073354b67 *5f696e666f0073354b675f72657400733579595f696e666f00733579595f7265740073357a665f *696e666f0073357a665f656e7472790073357a695f696e666f0073357a695f656e747279007335 *4b6b5f696e666f0073354b6b5f72657400733579735f696e666f00733579735f7265740073354b *655f7265740073354d325f7674626c0073354d325f315f616c740073354d335f696e666f007335 *4d335f7265740073354d325f325f616c740073354d315f696e666f0073354d315f726574006768 *6331353935322e68630067686331333930332e68630067686331343333392e6863006768633132 *3339312e68630067686331343433352e68630067686331323130352e6863006768633133303733 *2e686300733470475f696e666f00733468725f736c6f7700733468725f656e7472790073347048 *5f696e666f00733470485f72657400733468725f696e666f00733470475f7265740057696e646f *775f737475622e630047726170686963737a6955497a69474c55547a6943616c6c6261636b737a *69526567697374726174696f6e5f7265676973746572466f72436c65616e75705f737274007334 *30485f696e666f007334304e5f696e666f007334304e5f726574007334304d5f696e666f007334 *304d5f726574007334304b5f696e666f007334304b5f726574007334304a5f315f616c74007334 *304a5f325f616c74007334304a5f7674626c00733430485f7265740047726170686963737a6955 *497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a644c72334a *316c766c32385f737274007334305a5f696e666f007334305a5f7265740047726170686963737a *6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f7a644c7238774a6c766c *355f73727400733955665f696e666f00733955675f696e666f00733955675f7265740073395566 *5f7265740047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e *646f775f7a644c723878486139305f73727400733854525f696e666f007338544f5f696e666f00 *7338544f5f656e74727900733955375f696e666f00733955375f726574007338544b5f696e666f *007338544b5f656e74727900733854525f656e7472790047726170686963737a6955497a69474c *55547a6943616c6c6261636b737a6957696e646f775f7a644c7238784a6139315f737274007338 *556a5f696e666f00733855675f696e666f00733855675f656e74727900733955355f696e666f00 *733955355f72657400733855635f696e666f00733855635f656e747279007338556a5f656e7472 *7900733955335f696e666f00733855425f736c6f7700733855425f656e74727900733955345f69 *6e666f00733955345f72657400733855425f696e666f00733955335f72657400733955315f696e *666f00733855535f736c6f7700733855535f656e74727900733955325f696e666f00733955325f *72657400733855535f696e666f00733955315f7265740047726170686963737a6955497a69474c *55547a6943616c6c6261636b737a6957696e646f775f7a644c7238784c6139325f737274007338 *56755f696e666f00733856725f696e666f00733856725f656e747279007338566e5f696e666f00 *7338566e5f656e74727900733856755f656e7472790047726170686963737a6955497a69474c55 *547a6943616c6c6261636b737a6957696e646f775f7a644c7238784e6139335f73727400733856 *4c5f696e666f00733856495f696e666f00733856495f656e74727900733856455f696e666f0073 *3856455f656e747279007338564c5f656e74727900733954585f696e666f00733857335f736c6f *7700733857335f656e74727900733954595f696e666f00733954595f72657400733857335f696e *666f00733954585f72657400733954565f696e666f007338576b5f736c6f77007338576b5f656e *74727900733954575f696e666f00733954575f726574007338576b5f696e666f00733954565f72 *65740047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f *775f7a644c723878506139345f73727400733858305f696e666f00733857585f696e666f007338 *57585f656e74727900733857545f696e666f00733857545f656e74727900733857515f696e666f *00733857515f656e74727900733858305f656e74727900733954525f696e666f00733858695f73 *6c6f7700733858695f656e74727900733954535f696e666f00733954535f72657400733858695f *696e666f00733954525f7265740073354d385f7674626c0073354d385f315f616c740073357844 *5f696e666f00733578445f7265740073354d385f325f616c740073354d345f7674626c0073354d *345f315f616c740073354d375f696e666f0073354d375f7265740073354d365f696e666f007335 *4d365f7265740073354d355f696e666f0073354d355f7265740073354d345f325f616c74004772 *6170686963737a6955497a69474c55547a6954797065735f756e6d61727368616c4d6f75736542 *7574746f6e5f73727400733275765f696e666f00733275765f7265740047726170686963737a69 *55497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7468655363 *6176656e6765725f73727400733430695f696e666f007334306a5f696e666f007334306a5f7265 *7400733430695f72657400733430655f696e666f00733430665f696e666f00733430665f726574 *00733430655f72657400733430615f696e666f00733430625f696e666f00733430625f72657400 *733430615f72657400733430365f696e666f00733430375f696e666f00733430375f7265740073 *3430365f726574007333556e5f696e666f00733430345f315f616c7400733430355f335f616c74 *00733430355f64666c7400733430355f7674626c00733430345f325f616c7400733430345f335f *616c7400733430345f7674626c007333556f5f696e666f007333556f5f726574007333556e5f72 *657400733355485f696e666f00733430325f315f616c7400733430335f335f616c740073343033 *5f64666c7400733430335f7674626c00733430325f325f616c7400733430325f335f616c740073 *3430325f7674626c00733355475f696e666f00733355475f72657400733355485f726574007333 *5a4b5f696e666f0073335a4d5f315f616c740073335a4d5f325f616c740073335a4d5f335f616c *740073335a4d5f7674626c0073335a4c5f696e666f0073335a4c5f7265740073335a4b5f726574 *00733431305f696e666f00733431305f7265740047726170686963737a6955497a69474c55547a *6943616c6c6261636b737a6957696e646f775f6c766c335f7372740047726170686963737a6955 *497a69474c55547a6943616c6c6261636b737a6957696e646f775f756e6d61727368616c4b6579 *53746174655f737274007339556b5f696e666f007339556b5f7265740047726170686963737a69 *55497a69474c55547a6943616c6c6261636b737a6957696e646f775f7a644c725872756e6d6172 *7368616c5370656369616c4b65795f737274007339556a5f696e666f007339556a5f7265740073 *3955395f696e666f00733955615f696e666f00733955615f72657400733955395f726574007339 *545a5f696e666f00733955305f696e666f00733955305f726574007339545a5f72657400733954 *545f696e666f00733954555f696e666f00733954555f72657400733954545f7265740047726170 *686963737a6955497a69474c55547a6954797065735f6c766c315f737274004772617068696373 *7a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a644c *723348566c766c32375f73727400733430515f696e666f00733430515f72657400733430465f76 *74626c00733430425f315f616c7400733430435f315f616c7400733430435f325f616c74007334 *30435f7674626c00733430425f325f616c7400733430425f7674626c00733351665f696e666f00 *733351665f72657400733430445f315f616c7400733430445f325f616c7400733430445f767462 *6c007333516a5f696e666f007333516a5f72657400733430465f315f616c7400733430465f325f *616c7400733352465f696e666f007333524b5f696e666f007333524b5f72657400733352465f72 *6574007334306b5f7674626c007334306b5f315f616c74007334306c5f315f616c74007334306c *5f64666c74007334306c5f7674626c007334306b5f325f616c74007334306b5f335f616c740073 *3430675f7674626c00733430675f315f616c7400733430685f315f616c7400733430685f64666c *7400733430685f7674626c00733430675f325f616c7400733430675f335f616c7400733430635f *7674626c00733430635f315f616c7400733430645f335f616c7400733430645f64666c74007334 *30645f7674626c00733430635f325f616c7400733430635f335f616c7400733430385f7674626c *00733430385f315f616c7400733430395f335f616c7400733430395f64666c7400733430395f76 *74626c00733430385f325f616c7400733430385f335f616c740073335a495f696e666f0073335a *4a5f696e666f0073335a4a5f7265740073335a495f7265740073335a475f696e666f0073335a48 *5f696e666f0073335a485f7265740073335a475f726574007334314f5f7674626c0073334a765f *696e666f0073334a765f7265740073334a715f696e666f0073334a715f72657400733431555f31 *5f616c7400733431555f325f616c7400733431555f7674626c007334314f5f315f616c74007334 *31505f315f616c740073334a555f696e666f0073334a555f7265740073334a515f696e666f0073 *334a515f72657400733431525f696e666f00733431525f72657400733431515f696e666f007334 *31515f72657400733431505f325f616c7400733431505f7674626c007334314f5f325f616c7400 *47726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f7a *644c7238774c7a6477756e6d61727368616c5370656369616c4b65795f73727400733430575f69 *6e666f00733430585f696e666f00733430585f72657400733430575f7265740047726170686963 *737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a64 *4c723348546c766c32365f73727400733430535f696e666f00733430555f696e666f0073343055 *5f72657400733430535f7265740073335a555f7674626c0073335a5a5f315f616c740073335a5a *5f325f616c740073335a5a5f7674626c0073335a555f315f616c740073335a565f315f616c7400 *73335a585f696e666f0073335a585f7265740073335a575f696e666f0073335a575f7265740073 *335a565f325f616c740073335a565f7674626c0073335a555f325f616c74005265676973747261 *74696f6e5f737475622e6300733431585f7674626c00733431585f315f616c74007334315a5f69 *6e666f007334315a5f72657400733431595f696e666f00733431595f72657400733431585f325f *616c7400733356375f696e666f00733356635f696e666f00733356635f72657400733356375f72 *65740067686331313531302e686300676863363035302e686300676863353631322e6863006768 *6331323638372e68630067686332343431352e686300733276415f696e666f00733277635f696e *666f00733277625f736c6f7700733277625f656e74727900733277615f696e666f00733277615f *72657400733277625f696e666f00733276715f696e666f00733276715f72657400733276415f65 *6e74727900733277325f736c6f7700733277325f656e747279007332764d5f736c6f7700733276 *4d5f656e747279007332764d5f696e666f00733277385f696e666f00733277385f726574007332 *77375f696e666f00733277375f72657400733277355f696e666f00733277355f72657400733277 *325f696e666f00733277635f656e74727900676863353431302e68630067686333313236342e68 *630067686332313939362e686300676863353934382e686300676863333230362e686300676863 *32333238312e68630067686332343932392e686300736238595f696e666f007362385a5f696e66 *6f007362385a5f72657400736238595f72657400736238575f696e666f00736238585f696e666f *00736238585f72657400736238575f7265740047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a69436f6f72645472616e735f61325f73727400736270665f767462 *6c007362706c5f696e666f007362706c5f726574007362706a5f696e666f007362706a5f726574 *00736270695f696e666f00736270695f72657400736270685f696e666f00736270685f72657400 *736270675f696e666f00736270675f72657400736270665f315f616c74007362706d5f696e666f *007362706d5f72657400736270665f325f616c74007362706e5f696e666f007362706e5f726574 *00736270665f335f616c74007362706f5f696e666f007362706f5f72657400736270665f345f61 *6c7400736270705f696e666f00736270705f72657400736270665f355f616c7400676863333138 *30322e68630067686332343333372e6863006768633430302e68630067686331333139392e6863 *0067686332303633302e68630067686332313930342e68630067686333323231362e6863006768 *6333303532362e686300676863323838362e68630047726170686963737a6952656e646572696e *677a694f70656e474c7a69474c7a69466f675f666f675f73727400733458345f696e666f007334 *58345f726574007334574c5f7674626c00733457515f696e666f00733457515f72657400733457 *505f696e666f00733457505f726574007334574f5f696e666f007334574f5f726574007334574e *5f696e666f007334574e5f726574007334574d5f696e666f007334574d5f726574007334574c5f *315f616c7400733457545f696e666f00733457545f72657400733457535f696e666f0073345753 *5f72657400733457525f696e666f00733457525f726574007334574c5f325f616c740073345757 *5f696e666f00733457575f72657400733457565f696e666f00733457565f72657400733457555f *696e666f00733457555f726574007334574c5f335f616c7400733457445f696e666f007334574b *5f696e666f007334574b5f726574007334574a5f696e666f007334574a5f72657400733457495f *696e666f00733457495f72657400733457485f696e666f00733457485f72657400733457475f69 *6e666f00733457475f72657400733457465f696e666f00733457465f72657400733457445f7265 *7400676863313334302e68630067686331333137352e68630067686333303239362e6863004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6948696e74735f7a64 *7768696e745f7372740073336a6e5f696e666f0073336a535f696e666f0073336a6a5f696e666f *00733370355f696e666f00733370355f7265740073336a6e5f656e74727900733370385f696e66 *6f00733370385f72657400733370375f315f616c7400733370395f696e666f00733370395f7265 *7400733370375f325f616c7400733370615f696e666f00733370615f72657400733370375f335f *616c7400733370375f7674626c00733370365f696e666f00733370365f7265740073336a535f65 *6e7472790073336a6a5f736c6f770073336a6a5f656e74727900733370625f696e666f00733370 *625f7265740073336a675f696e666f0073336a675f656e7472790067686333323034302e686300 *676863353433302e68630067686331343730342e686300676863323132332e6863006768633239 *3430342e68630067686332373531342e68630067686332383131362e6863006768633237393738 *2e68630067686332373433352e68630067686332383533322e68630067686332393135302e6863 *0067686332383738322e68630067686332363730352e68630067686332363831372e6863006768 *6332363733392e686300676863353534382e68630067686333323632322e686300676863333237 *31342e68630067686332343137352e6863007332316e5f696e666f007332316e5f726574006768 *6331343733362e68630047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f676574496e7465676572315f73727400736c436b5f696e66 *6f00736c66525f696e666f00736c66525f656e74727900736c436e5f696e666f00736c436e5f72 *657400736c436d5f315f616c7400736c667a5f696e666f00736c667a5f656e74727900736c4372 *5f696e666f00736c43725f72657400736c43715f696e666f00736c43715f72657400736c436d5f *325f616c7400736c436d5f7674626c00736c436b5f72657400676863353634322e686300676863 *313633342e686300676863353939342e68630067686333313935322e6863006768633239373930 *2e68630067686333323039302e68630067686331333038372e68630067686333303138382e6863 *00676863353339342e686300676863333838362e686300676863343533322e6863006768633533 *31352e686300676863343136342e68630067686332363839332e686300676863333638392e6863 *00676863333232342e686300676863333931312e68630067686332393432302e68630067686331 *343636322e68630067686333303535302e68630067686332303635362e68630047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a69566572746578537065635f7074 *727a75676c466f67436f6f7264664558545f7372740067686331313435382e6863006768633133 *3135372e68630067686331323735372e68630047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c557a694572726f7273496e7465726e616c5f7265636f72644572726f *72436f64655f73727400733379695f696e666f007333796e5f315f616c74007333796e5f325f61 *6c74007333796e5f7674626c007333796d5f315f616c7400733379715f315f616c740073337971 *5f325f616c7400733379715f7674626c007333796d5f325f616c74007333796d5f7674626c0073 *33786d5f696e666f007333786d5f656e747279007333796c5f696e666f007333796c5f72657400 *7333796b5f696e666f007333796b5f72657400733379695f7265740067686332393639382e6863 *0067686332353834392e68630067686332393637302e68630067686331303835362e6863006768 *6332333835352e68630067686332343435332e686300733277645f696e666f00733277645f7265 *7400676863313839322e686300676863313131332e68630047726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a64776d616b65436170 *6162696c6974795f7372740073354e4f5f696e666f0073354f6a5f696e666f00733552535f696e *666f00733552535f7265740073354e4f5f656e74727900733552545f315f616c7400733552575f *696e666f00733552575f72657400733552565f696e666f00733552565f72657400733552555f31 *5f616c7400733552595f696e666f00733552595f72657400733552585f696e666f00733552585f *72657400733552555f325f616c7400733552555f7674626c00733552545f325f616c7400733552 *545f7674626c0073354f6a5f736c6f770073354f6a5f656e74727900733553305f696e666f0073 *3553305f726574007335525a5f315f616c740073354f625f696e666f0073354f625f656e747279 *00733553335f696e666f00733553335f72657400733553325f696e666f00733553325f72657400 *7335525a5f325f616c74007335525a5f7674626c00676863313733342e68630067686332363236 *352e68630047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6948 *696e74735f7a644c723367616c766c31305f73727400733370635f696e666f0073336a375f696e *666f0073336a375f656e7472790073336a395f64666c740073336a395f7674626c00733370635f *7265740067686332363634312e68630067686332353937332e686300676863353437322e686300 *736c43525f696e666f00736c43525f72657400736c43515f696e666f00736c43515f7265740073 *6c43505f696e666f00736c43505f7265740047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a69566572746578537065635f7a644c72616a5a5a6c766c34325f7372 *74007333414b5f696e666f00733375565f696e666f00733375565f656e747279007333414b5f72 *65740047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69457874 *656e73696f6e735f67657450726f63416464726573735f737274007331444f5f696e666f007331 *44425f696e666f00733144425f656e74727900733144445f696e666f00733144445f656e747279 *00733144465f696e666f00733144465f656e747279007331444d5f696e666f007331444d5f7265 *74007331444f5f7265740073337a6e5f696e666f0073337a6e5f72657400733144515f696e666f *007331446a5f736c6f77007331446a5f656e74727900733144525f696e666f00733144525f7265 *74007331446a5f696e666f00733144515f7265740048734f70656e474c2e630067686331343437 *392e6863006768633934332e68630067686331343230342e68630067686331353530302e686300 *676863333639382e686300676863363730322e68630067686331343431372e686300733375375f *726574007333486a5f315f616c7400733348745f315f616c7400733348745f325f616c74007333 *48745f335f616c7400733348745f7674626c007333486c5f696e666f007333486c5f7265740073 *33486a5f325f616c74007333486a5f7674626c00733375375f696e666f00446174617a6946696e *6974654d61705f64656c46726f6d464d5f73727400733377645f696e666f00733377645f656e74 *727900733347555f315f616c7400733377665f64666c7400733377665f7674626c00733348345f *315f616c7400733348345f325f616c7400733377695f64666c7400733377695f7674626c007333 *48345f335f616c7400733348345f7674626c00733347575f696e666f00733347575f7265740073 *3347555f325f616c7400733347555f7674626c00446174617a6946696e6974654d61705f616464 *546f464d7a75435f737274007333474a5f315f616c74007333786f5f64666c74007333786f5f76 *74626c00733347535f315f616c7400733347535f325f616c7400733378725f64666c7400733378 *725f7674626c00733347535f335f616c7400733347535f7674626c007333474b5f696e666f0073 *33474b5f726574007333474a5f325f616c74007333474a5f7674626c0067686331383731352e68 *6300676863363934342e68630067686331353438322e686300676863363732342e686300733377 *415f696e666f007333776d5f72657400733439755f315f616c7400733439765f696e666f007334 *39765f726574007333776c5f696e666f007333776c5f656e74727900733439755f325f616c7400 *733439755f7674626c007333776d5f696e666f00733439455f696e666f00733439455f72657400 *733377415f656e7472790067686332393733352e68630067686332393830332e68630067686331 *303236392e686300676863353239362e68630067686331313834392e686300733333575f696e66 *6f007333394d5f315f616c74007333394e5f696e666f007333394e5f72657400733334495f656e *747279007333394d5f325f616c74007333394d5f7674626c00733334495f696e666f0073333951 *5f696e666f00733339515f726574007333394f5f696e666f007333394f5f726574007333394b5f *696e666f007333394b5f72657400733333575f72657400733258505f696e666f00733361685f69 *6e666f00733258505f656e74727900733259565f696e666f00733259565f72657400733361695f *696e666f00733361695f72657400733361685f7265740067686331303732392e68630067686331 *313632372e68630067686331313635392e68630067686331313737372e686300466f726569676e *7a694d61727368616c7a6941727261795f7769746841727261794c656e305f737274007332776a *5f696e666f00733246315f696e666f00733246315f726574007332455a5f696e666f007332455a *5f72657400733245585f696e666f00733245585f72657400733245575f696e666f00733245575f *72657400733276535f696e666f00733276535f726574007332776a5f72657400733271555f7265 *7400733247445f696e666f00733247445f72657400733247765f696e666f00733247765f726574 *00733247755f696e666f00733247755f726574007332476d5f696e666f007332476d5f72657400 *733271555f696e666f0067686331323232352e68630067686331313732312e6863007332676b5f *7674626c007332676b5f315f616c7400733262745f696e666f00733262745f656e747279007332 *62765f696e666f00733262765f656e747279007332676b5f325f616c7400676863343033352e68 *6300676863363333342e68630067686333313738372e68630067686332393330322e6863004748 *437a69426173655f6c766c375f73727400733249705f696e666f00733249705f656e7472790073 *3249725f696e666f00733249725f656e747279007332494a5f696e666f007332494a5f656e7472 *79007332494c5f696e666f007332494c5f656e7472790073324a365f696e666f0073324a365f65 *6e74727900733250445f315f616c7400733250445f325f616c7400733250445f7674626c007332 *50455f7674626c00733250455f315f616c740073324a705f696e666f0073324a705f656e747279 *00733250455f325f616c7400733250465f7674626c00733250465f315f616c740073324a425f69 *6e666f0073324a425f656e74727900733250465f325f616c7400676863333633392e6863006768 *6333303836332e686300676863333935372e6863004748437a694572725f756e646566696e6564 *5f73727400676863333430342e68630067686333323635302e68630067686331313532372e6863 *0067686331333331352e686300676863323136372e68630073376e495f696e666f0073376e495f *7265740073376e6f5f696e666f0073376e6f5f72657400676863353335302e686300733864325f *696e666f00733864335f696e666f00733864335f72657400733864325f72657400676863333035 *39302e686300733268725f7674626c00733268725f315f616c7400733268725f325f616c740047 *48437a694c6973745f7461696c5f73727400733266365f7674626c00733266365f315f616c7400 *733266365f325f616c740067686333313532352e686300676863333630382e6863007373545f69 *6e666f007373545f72657400676863333532312e686300676863313833382e6863006768633332 *3230332e68630067686333313732382e686300676863323133342e68630067686333313137342e *686300676863353331322e686300676863363235332e686300733236725f696e666f0073323674 *5f696e666f00733236745f72657400733236735f696e666f00733236735f72657400733236725f *72657400733235465f696e666f00733235475f696e666f00733235475f72657400733235465f72 *65740067686331343739392e6863004748437a69546f7048616e646c65725f7a644c723153636c *766c325f737274004748437a69546f7048616e646c65725f746f7048616e646c65725f73727400 *733155555f696e666f00733155535f736c6f7700733155535f656e747279007331564d5f696e66 *6f007331564d5f726574007331564b5f696e666f007331564b5f72657400733156495f696e666f *00733156495f72657400733155535f696e666f00733156425f315f616c7400733156485f736c6f *7700733156485f656e74727900733156475f696e666f00733156475f72657400733156455f696e *666f00733156455f72657400733156435f696e666f00733156435f72657400733156485f696e66 *6f00733156425f64666c7400733156425f7674626c00733156785f315f616c7400733156415f73 *6c6f7700733156415f656e747279007331567a5f696e666f007331567a5f72657400733156415f *696e666f00733156795f696e666f00733156795f72657400733156785f325f616c740073315678 *5f7674626c00733154565f696e666f00733154565f72657400733155555f656e74727900474843 *7a69546f7048616e646c65725f72756e494f5f73727400676863363633342e6863006768633135 *3830302e686300734e775f696e666f00734e775f72657400676863343130392e6863004748437a *69576f72645f7a64777a64646d73686f775f73727400736135525f696e666f00733833445f7674 *626c00733833445f64666c7400736135525f72657400676863333838322e686300676863313431 *38342e68630067686332313333372e686300733252535f696e666f0073324d585f696e666f0073 *324d585f656e747279007332525a5f696e666f007332525a5f72657400733252575f696e666f00 *733252575f72657400733252555f696e666f00733252555f72657400733252535f726574007332 *524a5f696e666f00733252525f696e666f00733252525f72657400733252515f696e666f007332 *52515f726574007332524e5f696e666f007332524e5f726574007332524c5f696e666f00733252 *4c5f726574007332524a5f7265740067686331393632332e68630067686331343131332e686300 *676863333432392e686300676863393030352e68630067686331323836312e6863006768633132 *3332372e686300676863313034372e686300676863313137362e68630067686331313030312e68 *6300676863313234342e68630067686333313530372e686300436f6e74726f6c7a694578636570 *74696f6e5f756e636175676874457863657074696f6e48616e646c65725f737274006768633130 *3938352e68630067686333303832372e686300446174617a6946696e6974654d61705f7a64776d *6b42616c4272616e63685f7372740073334a655f7674626c007333494c5f315f616c740073336c *475f64666c740073336c475f7674626c007333494f5f315f616c740073336d625f315f616c7400 *73336d625f325f616c740073336d625f7674626c0073336d675f696e666f0073336d675f726574 *00733349555f315f616c7400733349555f325f616c7400733349555f7674626c0073336c525f64 *666c740073336c525f7674626c007333494f5f325f616c74007333494f5f7674626c0073336d70 *5f696e666f0073336d705f726574007333495a5f315f616c74007333495a5f325f616c74007333 *495a5f7674626c0073336d795f696e666f0073336d795f7265740073334a345f315f616c740073 *334a345f325f616c740073334a345f7674626c007333494c5f325f616c74007333494c5f767462 *6c00733349655f315f616c740073336e6d5f315f616c740073336e6d5f325f616c740073336e6d *5f7674626c0073336e725f696e666f0073336e725f72657400733349775f315f616c7400733349 *775f325f616c7400733349775f7674626c00733349685f315f616c740073336f325f315f616c74 *0073336f325f325f616c740073336f325f7674626c0073336f375f696e666f0073336f375f7265 *74007333496e5f315f616c74007333496e5f325f616c74007333496e5f7674626c0073336e495f *64666c740073336e495f7674626c00733349685f325f616c7400733349685f7674626c0073336f *675f696e666f0073336f675f72657400733349425f315f616c7400733349425f325f616c740073 *3349425f7674626c0073336f705f696e666f0073336f705f72657400733349475f315f616c7400 *733349475f325f616c7400733349475f7674626c00733349655f325f616c7400733349655f7674 *626c0073336f795f696e666f0073336f795f7265740073334a395f315f616c740073334a395f32 *5f616c740073334a395f7674626c0073336f485f696e666f0073336f485f7265740073334a655f *315f616c740073334a655f325f616c7400446174617a6946696e6974654d61705f7a6477676c75 *6542616c5f73727400733371645f7674626c00733371645f315f616c7400733370545f315f616c *7400733349365f696e666f00733349365f72657400733371305f696e666f00733371305f656e74 *727900733371665f64666c7400733371665f7674626c00733349315f696e666f00733349315f72 *6574007333716e5f696e666f007333716e5f656e74727900733371425f64666c7400733371425f *7674626c00733370545f325f616c7400733370545f7674626c00733371645f325f616c74007333 *4a775f7674626c00733369685f315f616c7400733369685f325f616c7400733369685f7674626c *007333696d5f696e666f007333696d5f7265740073334a775f315f616c740073334a775f325f61 *6c7400446174617a6946696e6974654d61705f7a644c7233675a5a6c766c355f73727400446174 *617a6946696e6974654d61705f7a644c723368316c766c365f73727400676863363936302e6863 *0067686331323330392e68630067686331323230372e68630067686331313932372e6863006768 *6331323239312e6863007332756a5f696e666f007332756a5f656e74727900733246695f696e66 *6f00733246695f72657400733246685f315f616c7400733246415f736c6f7700733246415f656e *74727900733246795f696e666f00733246795f72657400733246715f696e666f00733246715f72 *657400733246415f696e666f00733246685f325f616c7400733246685f7674626c006768633430 *37392e686300676863393130312e68630073336e585f696e666f0073336e595f696e666f007333 *6e595f7265740073336e585f72657400733254795f696e666f0073336e575f696e666f00733254 *795f656e7472790073336e565f696e666f0073336e565f7265740073336e555f696e666f007333 *6e555f7265740073336e575f656e7472790073336e535f696e666f0073336e535f726574007333 *6e515f696e666f0073336e525f696e666f0073336e525f7265740073336e515f72657400474843 *7a694572725f7061744572726f725f737274007351475f696e666f007351475f656e7472790073 *485a5f696e666f0073485a5f656e7472790067686331333935372e686300733268695f7674626c *00733268695f315f616c7400733268695f325f616c74004748437a694c6973745f6c766c31325f *737274004748437a694e756d5f7a647773686f7773507265635f73727400733267715f7674626c *00733267715f315f616c7400733236425f696e666f00733236425f656e74727900733267715f32 *5f616c74007379785f696e666f007379795f696e666f007379795f726574007379785f72657400 *733156775f696e666f00733156775f726574004748437a69546f7048616e646c65725f7265706f *7274537461636b4f766572666c6f775f73727400733156685f696e666f007331566b5f315f616c *74007331566c5f696e666f007331566c5f726574007331566b5f325f616c74007331566b5f7674 *626c007331566a5f696e666f007331566a5f72657400733156685f726574004748437a69546f70 *48616e646c65725f7a644c723153616c766c315f73727400734c595f72657400734e795f696e66 *6f00734e795f72657400734c595f696e666f00733968745f696e666f00733968745f7265740073 *3956655f696e666f00733956655f72657400733956645f696e666f00733956645f726574007339 *56625f696e666f00733956635f696e666f00733956635f72657400733956625f72657400733956 *395f696e666f00733956615f696e666f00733956615f72657400733956395f7265740073395637 *5f696e666f00733956385f696e666f00733956385f72657400733956375f726574004748437a69 *576f72645f7a64646d73686f774c697374335f73727400733253645f7674626c00733253645f31 *5f616c7400733253655f696e666f00733253655f72657400733253645f325f616c740073325336 *5f7674626c00733253365f315f616c7400733253395f696e666f00733253395f72657400733253 *385f696e666f00733253385f72657400733253375f696e666f00733253375f7265740073325336 *5f325f616c7400436f6e74726f6c7a69457863657074696f6e5f7a644c72324a646c766c31365f *737274007332534a5f696e666f00733252525f656e74727900733252545f64666c740073325254 *5f7674626c007332534a5f72657400436f6e74726f6c7a69457863657074696f6e5f7a644c7232 *4a666c766c31375f73727400733253495f696e666f00733253495f72657400446174617a694669 *6e6974654d61705f7a644c72336872706f6c797a756661696c5f73727400446174617a6946696e *6974654d61705f7a644c72336874706f6c797a756661696c315f73727400446174617a6946696e *6974654d61705f7a647766696e644d61785f7372740073334b325f7674626c0073334b325f315f *616c740073336b795f315f616c740073336b795f325f616c740073336b795f7674626c0073334b *325f325f616c7400446174617a6946696e6974654d61705f7a647766696e644d696e5f73727400 *73334a555f7674626c0073334a555f315f616c740073336b535f315f616c740073336b535f325f *616c740073336b535f7674626c0073334a555f325f616c7400446174617a6946696e6974654d61 *705f706f6c797a7564656c6574654d696e5f7372740073334a4e5f7674626c0073334a4e5f315f *616c7400733370395f64666c7400733370395f7674626c0073334a4e5f325f616c740044617461 *7a6946696e6974654d61705f706f6c797a7564656c6574654d61785f7372740073334a475f7674 *626c0073334a475f315f616c7400733370755f315f616c7400733370775f64666c740073337077 *5f7674626c00733370755f325f616c7400733370755f7674626c0073334a475f325f616c740044 *6174617a6946696e6974654d61705f7a644c723367526c766c315f73727400446174617a694669 *6e6974654d61705f7a644c723367546c766c325f737274007333324b5f696e666f00733339545f *315f616c7400733339555f696e666f00733339555f72657400733333745f656e74727900733339 *545f325f616c7400733339545f7674626c00733333745f696e666f00733339585f696e666f0073 *3339585f72657400733339565f696e666f00733339565f72657400733339525f696e666f007333 *39525f726574007333324b5f72657400733244485f696e666f00733244485f656e747279007332 *444a5f696e666f007332444a5f656e747279004748437a694572725f756e74616e676c655f7372 *74007350425f7674626c0073504d5f696e666f0073504d5f656e7472790073504f5f696e666f00 *73504f5f656e747279007350515f696e666f007350515f656e747279007350535f696e666f0073 *50535f726574007352695f315f616c740073526a5f696e666f0073526a5f726574007352695f32 *5f616c74007352695f7674626c007352685f696e666f007352685f726574007350425f64666c74 *004748437a69494f426173655f7a647773686f777350726563365f7372740073376b315f696e66 *6f0073376b315f737274640073376b355f696e666f0073376b355f726574007336576a5f696e66 *6f007336576a5f656e7472790073376b335f315f616c740073376b335f325f616c740073376b33 *5f335f616c740073376b335f7674626c0073376b325f315f616c740073376b325f325f616c7400 *73376b325f335f616c740073376b325f345f616c740073376b325f355f616c740073376b325f76 *74626c0073376b315f726574004748437a69494f426173655f7a647773686f777350726563325f *73727400733771385f7674626c00733671755f315f616c7400733671775f696e666f0073367177 *5f656e74727900733671755f325f616c7400733671755f7674626c00733671795f696e666f0073 *3671795f656e74727900733771385f315f616c74007336716a5f315f616c74007336716d5f696e *666f007336716d5f656e747279007336716a5f325f616c74007336716a5f7674626c007336716f *5f696e666f007336716f5f656e74727900733771385f325f616c74004748437a694c6973745f7a *644c723155536c766c31315f737274007332674c5f696e666f007332674c5f7265740073323834 *5f7674626c00733238345f315f616c74007332674d5f315f616c74007332374f5f696e666f0073 *32374f5f656e747279007332674d5f325f616c74007332674d5f7674626c00733238345f325f61 *6c74007332674b5f7674626c00733230465f696e666f00733230465f726574007332674b5f315f *616c7400733230515f696e666f00733230515f726574007332674c5f315f616c7400733230595f *696e666f00733230595f726574007332674c5f325f616c74007332674c5f7674626c007332674b *5f325f616c74004748437a694e756d5f6a746f735f73727400733267725f7674626c0073326772 *5f315f616c74007332366b5f64666c74007332366b5f7674626c00733267735f315f616c740073 *3267735f325f616c7400733267735f7674626c007332366e5f696e666f007332366e5f656e7472 *7900733267725f325f616c74004748437a6953686f775f7a64646d73686f774c6973745f737274 *0073314a6d5f696e666f00733152355f696e666f0073314a6d5f656e74727900733152335f315f *616c7400733152345f315f616c740073314a485f696e666f0073314a485f656e74727900733152 *345f325f616c7400733152345f7674626c0073314a445f696e666f0073314a445f656e74727900 *73314a4c5f696e666f0073314a4c5f656e7472790073314a4e5f696e666f0073314a4e5f656e74 *727900733152335f325f616c7400733152335f7674626c00733152355f656e747279004748437a *69546f7048616e646c65725f64735f73727400733154305f7674626c00733154305f315f616c74 *00733154305f325f616c7400736133725f7674626c00736133725f315f616c7400736133725f32 *5f616c74004748437a69576f72645f7a64646d73686f775f73727400736131345f696e666f0073 *6131345f726574004748437a69576f72645f73686f777350726563335f7372740073396d565f69 *6e666f00733955775f696e666f0073396d565f656e74727900733955765f696e666f0073395576 *5f72657400733955775f656e74727900733951315f696e666f00733951325f696e666f00733951 *325f72657400733951315f726574007339505a5f696e666f00733951305f696e666f0073395130 *5f726574007339505a5f72657400733254445f696e666f00733254465f696e666f00733254465f *72657400733254455f696e666f00733254455f72657400733254445f72657400436f6e74726f6c *7a69457863657074696f6e5f7a644c72324a6264735f73727400733252735f7674626c00733252 *735f315f616c7400733252735f325f616c7400446174617a6946696e6974654d61705f7a644c72 *33686e6c766c31375f73727400446174617a6946696e6974654d61705f7a644c723368706c766c *31385f73727400733246345f696e666f00733246345f656e74727900733246365f696e666f0073 *3246365f656e74727900733246475f696e666f00733246475f656e74727900733247795f696e66 *6f00733247795f656e74727900733248475f696e666f00733248475f656e7472790073526c5f69 *6e666f0073526c5f726574004748437a6948616e646c655f6c766c35375f73727400733948495f *696e666f00733948535f315f616c7400733948565f696e666f00733948565f7265740073394855 *5f696e666f00733948555f72657400733948535f325f616c7400733948535f7674626c00733948 *525f696e666f00733948525f72657400733948505f696e666f00733948505f7265740073394849 *5f726574004748437a6948616e646c655f7374646f75745f737274004748437a6948616e646c65 *5f77616e745772697461626c6548616e646c657a715f73727400733852525f696e666f00733944 *775f315f616c7400733944775f325f616c7400733944775f335f616c7400733944445f736c6f77 *00733944445f656e74727900733944425f696e666f00733944425f72657400733852475f696e66 *6f00733852475f656e74727900733944415f696e666f00733944415f726574007339447a5f315f *616c74007339447a5f325f616c74007339447a5f7674626c007338524c5f696e666f007338524c *5f72657400733944785f696e666f00733944785f72657400733944445f696e666f00733944775f *365f616c7400733944775f64666c7400733944775f7674626c00733852305f696e666f00733852 *305f72657400733852525f656e747279004748437a69494f426173655f7a647773686f77735072 *6563355f7372740073364c465f696e666f0073376d645f7674626c0073364c6e5f315f616c7400 *73364c735f696e666f0073364c735f656e7472790073364c6e5f325f616c740073364c6e5f7674 *626c0073364c755f696e666f0073364c755f656e7472790073364c775f696e666f0073364c775f *656e7472790073364c425f315f616c740073364c445f696e666f0073364c445f656e7472790073 *364c425f325f616c740073364c425f7674626c0073364c465f656e7472790073376d655f315f61 *6c740073364d315f696e666f0073364d315f656e7472790073364d355f696e666f0073364d355f *656e7472790073376d665f315f616c740073364c535f696e666f0073364c535f656e7472790073 *364c575f696e666f0073364c575f656e7472790073376d665f325f616c740073376d665f767462 *6c0073376d655f325f616c740073376d655f7674626c0073376d645f315f616c740073364d395f *696e666f0073364d395f656e7472790073376d645f325f616c74004748437a69494f426173655f *73686f777350726563385f7372740073376b385f7674626c0073376b385f315f616c740073376b *635f696e666f0073376b635f72657400733656615f696e666f00733656615f656e747279007336 *56635f696e666f00733656635f656e7472790073376b625f696e666f0073376b625f7265740073 *3656685f696e666f00733656685f656e7472790073376b395f696e666f0073376b395f72657400 *73376b385f325f616c74004748437a694c6973745f7a644c723155516c766c31305f7372740073 *32696b5f7674626c007332696d5f315f616c7400733231555f696e666f00733231555f72657400 *7332696d5f325f616c74007332696d5f7674626c007332696c5f696e666f007332696c5f726574 *007332696b5f315f616c74007332696e5f315f616c74007332696e5f325f616c74007332696e5f *7674626c007332696b5f325f616c74007332356c5f7674626c00733269615f696e666f00733269 *615f72657400733269395f696e666f00733269395f72657400733235625f315f616c7400733269 *365f696e666f00733269365f72657400733235625f325f616c7400733235625f7674626c007332 *356c5f315f616c7400733269335f696e666f00733269335f72657400733269315f315f616c7400 *733269325f696e666f00733269325f72657400733269315f325f616c7400733269315f7674626c *007332356c5f325f616c74007331444d5f656e74727900733152375f696e666f00733152375f72 *657400736130755f696e666f00736130755f72657400733254475f696e666f00733254475f7265 *74004748437a6948616e646c655f7a6477666c75736857726974654275666665725f7372740073 *394b365f696e666f0073394b375f696e666f0073394b375f7265740073394b365f726574004748 *437a6948616e646c655f696f657a756e6f745772697461626c655f737274004748437a6948616e *646c655f696f657a75636c6f73656448616e646c655f73727400733843735f696e666f00733843 *735f736c6f7700733843735f656e74727900733843395f696e666f00733843395f656e74727900 *733843335f696e666f00733843335f72657400733843635f696e666f00733843635f7265740073 *3843665f696e666f00733843665f656e747279007338436f5f696e666f007338436f5f72657400 *733947375f696e666f00733947375f72657400733947365f696e666f00733947365f7265740073 *3947355f696e666f00733947355f726574004748437a6948616e646c655f6c766c39345f737274 *00733944505f696e666f00733944515f696e666f00733944515f72657400733944505f72657400 *4748437a6948616e646c655f7a6477666c757368526561644275666665725f7372740073394447 *5f696e666f00733851655f736c6f7700733851655f656e747279007339444b5f696e666f007339 *444b5f72657400733851655f696e666f007339444c5f696e666f007339444c5f72657400733944 *4a5f696e666f007339444a5f72657400733944485f696e666f00733944485f7265740073394447 *5f726574004748437a69494f426173655f7a647773686f777350726563345f7372740073377054 *5f696e666f00733673465f64666c7400733673465f7674626c00733770545f7372746400733770 *545f726574007331535a5f7674626c00733153485f315f616c74007332694f5f696e666f007332 *694f5f72657400733153485f325f616c7400733153485f7674626c007332694c5f696e666f0073 *32694c5f726574007331535a5f315f616c74007332694b5f696e666f007332694b5f7265740073 *3269495f315f616c74007332694a5f696e666f007332694a5f72657400733269495f325f616c74 *00733269495f7674626c007331535a5f325f616c7400733144785f696e666f00733144765f696e *666f00733144745f696e666f00733144745f656e74727900733144765f656e7472790073314478 *5f656e74727900736133715f696e666f00736133715f72657400733339475f696e666f00733339 *485f315f616c7400733339495f696e666f00733339495f72657400733339485f325f616c740073 *3339485f7674626c00733339475f7265740073386a555f696e666f0073386a4d5f696e666f0073 *386a555f736c6f770073386a555f656e7472790073386a525f696e666f0073386a525f72657400 *73386a4d5f736c6f770073386a4d5f656e74727900733949535f696e666f00733949535f726574 *004748437a6948616e646c655f6d6b53746448616e646c655f73727400733948705f696e666f00 *733875675f696e666f00733875675f72657400733875645f696e666f00733875645f7265740073 *38756c5f696e666f007338756c5f656e74727900733875795f736c6f7700733875795f656e7472 *7900733948745f696e666f00733948745f72657400733875795f696e666f00733948755f696e66 *6f00733948755f726574007338757a5f696e666f007338757a5f72657400733948715f696e666f *00733948715f72657400733948705f72657400733947665f696e666f00733947695f696e666f00 *733947695f72657400733947665f7265740073394b315f696e666f0073394b315f726574004748 *437a6948616e646c655f6765744275666665725f73727400733944565f696e666f0073384f325f *696e666f0073384f325f656e747279007339445a5f696e666f007339445a5f7265740073394459 *5f696e666f00733944595f72657400733944585f696e666f00733944585f72657400733944575f *696e666f00733944575f72657400733944565f7265740073394a5a5f696e666f0073394a5a5f72 *65740073394a525f696e666f0073394a545f696e666f0073394a545f7265740073394a525f7265 *74004748437a6948616e646c655f6132345f737274007339444e5f696e666f007339444f5f696e *666f007339444f5f726574007339444e5f7265740073386d565f696e666f0073386d565f726574 *00733361435f696e666f0073325a5a5f696e666f0073325a5a5f656e74727900733361435f7265 *7400733338535f696e666f00733338545f315f616c7400733338575f696e666f00733338575f72 *657400733338555f696e666f00733338555f72657400733338545f325f616c7400733338545f76 *74626c00733338535f72657400733949565f696e666f00733949565f726574007338664e5f696e *666f0073394a715f315f616c740073394a715f325f616c740073394a715f7674626c007338664c *5f315f616c74007338664c5f325f616c74007338664c5f7674626c007338664e5f656e74727900 *4748437a6948616e646c655f666c75736857726974654275666665724f6e6c795f737274007339 *48775f696e666f00733948465f315f616c7400733948485f696e666f00733948485f7265740073 *3948475f696e666f00733948475f72657400733948465f325f616c7400733948465f7674626c00 *733874735f696e666f00733874735f72657400733948445f696e666f00733948445f7265740073 *3948775f7265740073325a645f696e666f0073325a645f736c6f770073325a645f656e74727900 *73325a355f696e666f0073325a355f656e74727900733361485f696e666f00733361485f726574 *00733361475f696e666f00733361475f72657400733361465f696e666f00733361465f72657400 *6c6f6e676c6f6e672e630077726974654572726f722e630041646a7573746f722e630065786563 *50616765005f5f6f6273637572655f6363616c6c5f7265745f636f6465004d61696e2e63005274 *734150492e63007274734170694361706162696c69747900527473537461727475702e63006873 *5f696e69745f636f756e740073617665645f7465726d696f7300696e69745f737461636b005274 *735574696c732e63005f5f47656e53796d436f756e746572005363686564756c652e63006e6578 *745f7468726561645f6964007368757474696e675f646f776e5f7363686564756c657200736368 *6564756c6500646574656374426c61636b486f6c65730072656164795f746f5f67630074687265 *6164537461636b4f766572666c6f770064656c657465546872656164496d6d6564696174656c79 *0073757370656e6465645f6363616c6c696e675f74687265616473007363686564756c65546872 *6561645f00776169745468726561645f00416c6c526f6f74730065787472615f726f6f74730075 *6e626c6f636b4f6e654c6f636b656400756e626c6f636b546872656164007072696e7454687265 *6164426c6f636b616765007072696e745468726561645374617475730053656c6563742e630053 *69676e616c732e630068616e646c657273006e48616e646c657273006e5f6861736b656c6c5f68 *616e646c657273006d6f72655f68616e646c65727300636f6e745f68616e646c65720067656e65 *7269635f68616e646c657200757365725369676e616c730073617665645369676e616c73007368 *7574646f776e5f68616e646c657200537461626c652e6300737461626c655f7074725f66726565 *005350545f73697a650061646472546f537461626c65486173680072656d6f7665496e64697265 *6374696f6e730053746174732e63005469636b735065725365636f6e6400456c61707365645469 *6d6553746172740043757272656e74456c617073656454696d650043757272656e745573657254 *696d6500496e69745573657254696d6500496e6974456c617073656454696d6500496e6974456c *61707365645374616d70004d75745573657254696d65004d7574456c617073656454696d65004d *7574456c61707365645374616d7000457869745573657254696d650045786974456c6170736564 *54696d650047435f746f745f616c6c6f630047435f746f745f636f706965640047435f73746172 *745f74696d650047435f746f745f74696d65004743655f73746172745f74696d65004743655f74 *6f745f74696d65004d61785265736964656e6379004176675265736964656e6379005265736964 *656e637953616d706c65730047435f73746172745f6661756c74730047435f656e645f6661756c *74730067657454696d657300706167654661756c74730047435f636f6c6c5f74696d6573007275 *625f62656c6c005374674352756e2e63005374675072696d466c6f61742e630053746f72616765 *2e63007374674465616c6c6f63466f72474d50007374675265616c6c6f63466f72474d50007374 *67416c6c6f63466f72474d50005468726561644c6162656c732e63007468726561644c6162656c *730054696d65722e63007469636b735f746f5f637478745f7377697463680068616e646c655f74 *69636b005765616b2e6300466c616744656661756c74732e63004d616c6c6f634661696c2e6300 *4f6e457869742e63004f75744f66486561702e6300537461636b4f766572666c6f772e63004170 *706c792e6863004175746f4170706c792e6863007374675f61705f73746b5f6e007374675f7374 *6b5f736176655f6e007374675f61705f73746b5f70007374675f73746b5f736176655f70007374 *675f61705f73746b5f66007374675f73746b5f736176655f66007374675f61705f73746b5f6400 *7374675f73746b5f736176655f64007374675f61705f73746b5f6c007374675f73746b5f736176 *655f6c007374675f61705f73746b5f6e6e007374675f73746b5f736176655f6e6e007374675f61 *705f73746b5f6e70007374675f73746b5f736176655f6e70007374675f61705f73746b5f706e00 *7374675f73746b5f736176655f706e007374675f61705f73746b5f7070007374675f73746b5f73 *6176655f7070007374675f61705f73746b5f6e6e6e007374675f73746b5f736176655f6e6e6e00 *7374675f61705f73746b5f6e6e70007374675f73746b5f736176655f6e6e70007374675f61705f *73746b5f6e706e007374675f73746b5f736176655f6e706e007374675f61705f73746b5f6e7070 *007374675f73746b5f736176655f6e7070007374675f61705f73746b5f706e6e007374675f7374 *6b5f736176655f706e6e007374675f61705f73746b5f706e70007374675f73746b5f736176655f *706e70007374675f61705f73746b5f70706e007374675f73746b5f736176655f70706e00737467 *5f61705f73746b5f707070007374675f73746b5f736176655f707070007374675f61705f73746b *5f70707070007374675f73746b5f736176655f70707070007374675f61705f73746b5f70707070 *70007374675f73746b5f736176655f7070707070007374675f61705f73746b5f70707070707000 *7374675f73746b5f736176655f707070707070007374675f61705f73746b5f7070707070707000 *7374675f73746b5f736176655f70707070707070007374675f61705f73746b5f70707070707070 *70007374675f73746b5f736176655f707070707070707000457863657074696f6e2e6863004865 *6170537461636b436865636b2e6863007374675f626c6f636b5f74616b656d7661725f72657400 *7374675f626c6f636b5f7075746d7661725f726574005072696d4f70732e6863005374674d6973 *63436c6f73757265732e6863007374675f63746f695f7265745f5231705f375f72657400737467 *5f63746f695f7265745f5231705f365f726574007374675f63746f695f7265745f5231705f355f *726574007374675f63746f695f7265745f5231705f345f726574007374675f63746f695f726574 *5f5231705f335f726574007374675f63746f695f7265745f5231705f325f726574007374675f63 *746f695f7265745f5231705f315f726574007374675f63746f695f7265745f5231705f305f7265 *74007374675f63746f695f7265745f5231705f726574007374675f63746f695f7265745f523175 *6e70745f656e747279007374675f63746f695f7265745f52316e5f656e747279007374675f6374 *6f695f7265745f46315f656e747279007374675f63746f695f7265745f44315f656e7472790073 *74675f63746f695f7265745f4c315f656e747279007374675f63746f695f7265745f565f656e74 *7279007374675f6170706c795f696e746572705f656e747279007374675f494e445f656e747279 *007374675f494e445f6469726563745f656e747279007374675f494e445f305f656e7472790073 *74675f494e445f315f656e747279007374675f494e445f325f656e747279007374675f494e445f *335f656e747279007374675f494e445f345f656e747279007374675f494e445f355f656e747279 *007374675f494e445f365f656e747279007374675f494e445f375f656e747279007374675f494e *445f5354415449435f656e747279007374675f494e445f5045524d5f656e747279007374675f49 *4e445f4f4c4447454e5f656e747279007374675f494e445f4f4c4447454e5f5045524d5f656e74 *7279007374675f424c41434b484f4c455f656e747279007374675f424c41434b484f4c455f4251 *5f656e747279007374675f4341465f424c41434b484f4c455f656e747279007374675f54534f5f *656e747279007374675f4556414355415445445f656e747279007374675f5745414b5f656e7472 *79007374675f444541445f5745414b5f656e747279007374675f4e4f5f46494e414c495a45525f *656e747279007374675f464f524549474e5f656e747279007374675f535441424c455f4e414d45 *5f656e747279007374675f46554c4c5f4d5641525f656e747279007374675f454d5054595f4d56 *41525f656e747279007374675f454e445f54534f5f51554555455f656e747279007374675f454e *445f4d55545f4c4953545f656e747279007374675f4d55545f434f4e535f656e74727900737467 *5f454e445f455843455054494f4e5f4c4953545f656e747279007374675f455843455054494f4e *5f434f4e535f656e747279007374675f4152525f574f5244535f656e747279007374675f4d5554 *5f4152525f505452535f656e747279007374675f4d55545f4152525f505452535f46524f5a454e *5f656e747279007374675f4d55545f5641525f656e74727900537467537461727475702e686300 *5374675374645468756e6b732e6863007374675f73656c5f7265745f305f7570645f696e666f00 *7374675f73656c5f7265745f305f7570645f726574007374675f73656c5f7265745f315f757064 *5f696e666f007374675f73656c5f7265745f315f7570645f726574007374675f73656c5f726574 *5f325f7570645f696e666f007374675f73656c5f7265745f325f7570645f726574007374675f73 *656c5f7265745f335f7570645f696e666f007374675f73656c5f7265745f335f7570645f726574 *007374675f73656c5f7265745f345f7570645f696e666f007374675f73656c5f7265745f345f75 *70645f726574007374675f73656c5f7265745f355f7570645f696e666f007374675f73656c5f72 *65745f355f7570645f726574007374675f73656c5f7265745f365f7570645f696e666f00737467 *5f73656c5f7265745f365f7570645f726574007374675f73656c5f7265745f375f7570645f696e *666f007374675f73656c5f7265745f375f7570645f726574007374675f73656c5f7265745f385f *7570645f696e666f007374675f73656c5f7265745f385f7570645f726574007374675f73656c5f *7265745f395f7570645f696e666f007374675f73656c5f7265745f395f7570645f726574007374 *675f73656c5f7265745f31305f7570645f696e666f007374675f73656c5f7265745f31305f7570 *645f726574007374675f73656c5f7265745f31315f7570645f696e666f007374675f73656c5f72 *65745f31315f7570645f726574007374675f73656c5f7265745f31325f7570645f696e666f0073 *74675f73656c5f7265745f31325f7570645f726574007374675f73656c5f7265745f31335f7570 *645f696e666f007374675f73656c5f7265745f31335f7570645f726574007374675f73656c5f72 *65745f31345f7570645f696e666f007374675f73656c5f7265745f31345f7570645f7265740073 *74675f73656c5f7265745f31355f7570645f696e666f007374675f73656c5f7265745f31355f75 *70645f726574007374675f73656c5f7265745f305f6e6f7570645f696e666f007374675f73656c *5f7265745f305f6e6f7570645f726574007374675f73656c5f7265745f315f6e6f7570645f696e *666f007374675f73656c5f7265745f315f6e6f7570645f726574007374675f73656c5f7265745f *325f6e6f7570645f696e666f007374675f73656c5f7265745f325f6e6f7570645f726574007374 *675f73656c5f7265745f335f6e6f7570645f696e666f007374675f73656c5f7265745f335f6e6f *7570645f726574007374675f73656c5f7265745f345f6e6f7570645f696e666f007374675f7365 *6c5f7265745f345f6e6f7570645f726574007374675f73656c5f7265745f355f6e6f7570645f69 *6e666f007374675f73656c5f7265745f355f6e6f7570645f726574007374675f73656c5f726574 *5f365f6e6f7570645f696e666f007374675f73656c5f7265745f365f6e6f7570645f7265740073 *74675f73656c5f7265745f375f6e6f7570645f696e666f007374675f73656c5f7265745f375f6e *6f7570645f726574007374675f73656c5f7265745f385f6e6f7570645f696e666f007374675f73 *656c5f7265745f385f6e6f7570645f726574007374675f73656c5f7265745f395f6e6f7570645f *696e666f007374675f73656c5f7265745f395f6e6f7570645f726574007374675f73656c5f7265 *745f31305f6e6f7570645f696e666f007374675f73656c5f7265745f31305f6e6f7570645f7265 *74007374675f73656c5f7265745f31315f6e6f7570645f696e666f007374675f73656c5f726574 *5f31315f6e6f7570645f726574007374675f73656c5f7265745f31325f6e6f7570645f696e666f *007374675f73656c5f7265745f31325f6e6f7570645f726574007374675f73656c5f7265745f31 *335f6e6f7570645f696e666f007374675f73656c5f7265745f31335f6e6f7570645f7265740073 *74675f73656c5f7265745f31345f6e6f7570645f696e666f007374675f73656c5f7265745f3134 *5f6e6f7570645f726574007374675f73656c5f7265745f31355f6e6f7570645f696e666f007374 *675f73656c5f7265745f31355f6e6f7570645f72657400557064617465732e6863007374675f73 *65715f6672616d655f72657400426c6f636b416c6c6f632e6300667265655f6c69737400616c6c *6f634d65676147726f757000696e69744d426c6f636b00667265654d65676147726f7570004361 *706162696c6974792e6300696e69744361706162696c69747900436c6f73757265466c6167732e *630047432e6300673073305f70636e745f6b657074007468756e6b5f73656c6563746f725f6465 *7074680067635f616c6c6f635f626c6f636b004e006e65775f626c6f636b73006d616a6f725f67 *63007374617469635f6f626a65637473007a65726f5f6d757461626c655f6c697374006f6c645f *746f5f626c6f636b73006d61726b5f737461636b5f626465736372006d61726b5f737461636b00 *6d61726b5f7370006d61726b5f73706c696d0073636176656e67655f6c61726765007363617665 *6e67655f6d75745f6f6e63655f6c69737400657661635f67656e0073636176656e676500736361 *76656e67655f6d757461626c655f6c697374006d61726b5f726f6f74006d61726b5f7765616b5f *7074725f6c697374007765616b5f7374616765006f6c645f616c6c5f7468726561647300736361 *76656e67655f737461746963006d61726b5f737461636b5f6f766572666c6f776564006f6c6467 *656e5f7363616e5f62640073636176656e67655f6d61726b5f737461636b007472617665727365 *5f7765616b5f7074725f6c697374007a65726f5f7374617469635f6f626a6563745f6c69737400 *657661637561746500636f707950617274006d6b4d7574436f6e73006661696c65645f746f5f65 *766163006576616c5f7468756e6b5f73656c6563746f720073636176656e67655f6c617267655f *7372745f6269746d61700073636176656e676554534f0073636176656e67655f737461636b0073 *636176656e67655f6c617267655f6269746d6170006f6c6467656e5f7363616e0073636176656e *67655f6f6e65007468726561644c617a79426c61636b486f6c650074687265616453717565657a *65537461636b004743436f6d706163742e63007468726561645f73746174696300746872656164 *5f737461636b007468726561645f54534f007570646174655f6677645f6c617267650075706461 *74655f667764007468726561645f6f626a007570646174655f6677645f636f6d70616374007570 *646174655f626b77645f636f6d70616374007468726561645f6d75745f6f6e63655f6c69737400 *74687265616400486173682e630068617368576f7264006861736853747200636f6d7061726557 *6f726400636f6d7061726553747200616c6c6f635365676d656e7400657870616e640066726565 *4c69737400616c6c6f63486173684c6973740066726565486173684c69737400616c6c6f634861 *73685461626c655f00496e7465727072657465722e63006170705f707472735f6974626c004974 *696d65722e6300696e7374616c6c5f7674616c726d5f68616e646c6572004d426c6f636b2e6300 *6d795f6d6d61700067656e5f6d61705f6d626c6f636b73006e6578745f726571756573742e3000 *527473466c6167732e630075736167655f746578740073706c6974527473466c61677300646563 *6f6465006261645f6f7074696f6e006f70656e5f73746174735f66696c65005274734f7074732e *63006c6962676363322e6300656c662d696e69742e630047726170686963737a6955497a69474c *55547a6943616c6c6261636b737a6957696e646f775f64386f42004748437a69494f426173655f *5265736f75726365427573795f636c6f737572650047726170686963737a6952656e646572696e *677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b334f6c766c363339 *5f636c6f73757265004748437a69494f426173655f486561704f766572666c6f775f636c6f7375 *72650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726a55416c766c3439365f636c6f7375726500686561704f76657266 *6c6f770047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e64 *6f775f4b657946345f636c6f7375726500436f6e74726f6c7a69457863657074696f6e5f7a644c *72324a6264735f656e747279004748437a69494f426173655f45786974457863657074696f6e5f *7374617469635f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c *7a69474c7a6951756572795574696c735f7a644c726a52696c766c3434355f636c6f7375726500 *47726170686963737a6955497a69474c55547a6943616c6c6261636b737a695265676973747261 *74696f6e5f7a644c72483974686543616c6c6261636b5461626c655f656e747279004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f *7a644c726a57696c69743132385f636c6f73757265004748437a69426173655f7a644c7232694f *6c766c365f696e666f00446174617a6946696e6974654d61705f7a644c723367546c766c325f63 *6c6f73757265007374675f61705f365f7570645f656e7472790047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a4f6d6c *6974355f636c6f73757265005f5f737467696e69745f47726170686963737a6955497a69474c55 *547a6943616c6c6261636b737a69476c6f62616c004748437a69494f426173655f7a644c723661 *6f6135305f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726b37536c766c3730325f636c6f73757265004772 *6170686963737a6955497a69474c55547a6943616c6c6261636b737a6952656769737472617469 *6f6e5f7a64777a737a655f656e7472790047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a6951756572795574696c735f7a644c726a5a5a716c766c3537315f636c *6f73757265005f5f676d706e5f636d700047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a694361706162696c6974795f7a644c7235754c6c766c38335f636c6f73 *7572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175 *6572795574696c735f7a644c726b334d6c69743234345f636c6f73757265004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f6c766c *325f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726a5a5a366c766c3536365f636c6f73757265006f *6c645f7765616b5f7074725f6c697374004748437a69494f426173655f6c766c35335f636c6f73 *757265004748437a694e756d5f7a6c5f656e747279007374675f626c6f636b5f74616b656d7661 *725f696e666f0047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6952 *6567697374726174696f6e5f7a644c72483974686543616c6c6261636b5461626c655f696e666f *006d616b65537461626c654e616d657a685f666173740047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b62366c766c37 *35325f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b *737a69526567697374726174696f6e5f5265736861706543425f7374617469635f696e666f0047 *48437a69494f426173655f557365724572726f725f636c6f7375726500466f726569676e7a6943 *7a69537472696e675f776974684341537472696e675f656e74727900756c6c6f6e675f666f726d *61745f737472696e670047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726a54796c766c3438305f636c6f73757265004748 *437a69494f426173655f5061747465726e4d617463684661696c5f7374617469635f656e747279 *007374675f73656c5f305f7570645f696e666f0047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a59516c766c3536325f *636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a69 *526567697374726174696f6e5f7a644c72483974686543616c6c6261636b5461626c655f636c6f *737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6943 *61706162696c6974795f7a644c723578566c766c3133325f636c6f7375726500446174617a6946 *696e6974654d61705f7a644c723368316c766c365f636c6f7375726500676c7574537065636961 *6c46756e630047726170686963737a6955497a69474c55547a6943616c6c6261636b737a695265 *67697374726174696f6e5f7a644c723348506c766c32355f736c6f77007374675f696e74657270 *5f636f6e737472335f656e7472790047726170686963737a6955497a69474c55547a6943616c6c *6261636b737a69526567697374726174696f6e5f7a6466457143616c6c6261636b49445f636c6f *737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6943 *61706162696c6974795f7a644c723579566c697436365f636c6f73757265007374675f45564143 *55415445445f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a6951756572795574696c735f7a644c726a586b6c69743134345f636c6f737572650047 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574 *696c735f7a644c726a59306c766c3534395f636c6f73757265006e65774279746541727261797a *685f666173740047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *6951756572795574696c735f7a644c726a56416c69743131375f636c6f73757265004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f *7a644c726a53366c697436335f636c6f737572650047726170686963737a6952656e646572696e *677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a58536c766c353437 *5f636c6f73757265004748437a69494f426173655f526561644275666665725f636c6f73757265 *005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a6951756572795574696c735f00446174617a6946696e6974654d61705f4272616e6368 *5f636f6e5f696e666f007374675f657869740047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a69426567696e456e645f6c766c335f696e666f00676c466f676676 *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726b37306c69743239345f636c6f73757265007374675f61705f355f7570 *645f696e666f004748437a69494f426173655f7a647773686f777350726563345f737274640047 *726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f6134 *5f656e7472790047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957 *696e646f775f4b657946365f7374617469635f656e747279007374675f73656c5f31335f6e6f75 *70645f696e666f0047726170686963737a6955497a69474c55547a6943616c6c6261636b737a69 *57696e646f775f7a644c723877486c766c345f696e666f0047726170686963737a6955497a6947 *4c55547a6943616c6c6261636b737a6957696e646f775f6d616b65446973706c617943616c6c62 *61636b5f636c6f7375726500616c6c6f63617465645f62797465730047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b63 *386c766c3736385f636c6f73757265005f5f737467696e69745f47726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a69506f6c79676f6e735f004748437a69494f4261 *73655f494f457863657074696f6e5f636f6e5f656e747279006e657744796e4341460047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726b39346c69743332365f636c6f73757265007274735f6d6b4368617200446174617a *6946696e6974654d61705f6c766c345f656e74727900696e697453746f72616765005f5f737467 *696e69745f47726170686963737a6955497a69474c55547a69496e697469616c697a7a6174696f *6e5f004748437a69496e745f636f6d70617265325f636c6f7375726500446174617a6946696e69 *74654d61705f7a644c72336872706f6c797a756661696c5f696e666f0047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b *34456c766c3635325f636c6f737572650047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a69436f6f72645472616e735f506f736974696f6e5f636f6e5f656e7472 *79007374675f67635f756e70745f72315f7265740047726170686963737a6952656e646572696e *677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c723579426c697436315f *636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a694361706162696c6974795f7a644c7235774e6c697433335f636c6f73757265004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f *7a644c726a51436c697434305f636c6f737572650047726170686963737a6955497a69474c5554 *7a6943616c6c6261636b737a69526567697374726174696f6e5f7a657a65315f636c6f73757265 *007374675f73656c5f315f6e6f7570645f696e666f007374675f54534f5f696e666f0047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726a58656c766c3533375f636c6f73757265004748437a69494f426173655f6c766c35 *355f696e666f004748437a69546f7048616e646c65725f64735f636c6f73757265004748437a69 *494f426173655f426c6f636b65644f6e446561644d5661725f7374617469635f656e747279005f *5f737467696e69745f4748437a69466c6f617400696e6974527473466c61677344656661756c74 *730047726170686963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374 *726174696f6e5f7a64777a657a655f696e666f0047726170686963737a6955497a69474c55547a *6943616c6c6261636b737a6957696e646f775f7a644c7238774a6c766c355f656e747279004772 *6170686963737a6955497a69474c55547a6943616c6c6261636b737a6952656769737472617469 *6f6e5f537061636562616c6c427574746f6e43425f636c6f73757265004748437a69496e745f49 *387a685f636f6e5f656e747279005f5f737467696e69745f47726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c0047726170686963737a6955497a69474c55547a694361 *6c6c6261636b737a69526567697374726174696f6e5f5370656369616c43425f7374617469635f *656e747279007374675f4152525f574f5244535f696e666f004748437a6948616e646c655f6132 *345f636c6f7375726500676c48696e74007374675f73656c5f31355f6e6f7570645f696e666f00 *7374675f61705f335f7570645f656e7472790047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b39436c766c3732395f63 *6c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *694361706162696c6974795f7a644c723579546c766c3134375f636c6f73757265005f5f737467 *696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6952 *656374616e676c65735f00436f6e74726f6c7a69457863657074696f6e5f7a644c72324a356c76 *6c31345f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c *7a69474c7a6951756572795574696c735f7a644c726a55456c766c3439375f636c6f7375726500 *4748437a6948616e646c655f666c75736857726974654275666665724f6e6c795f636c6f737572 *650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726b62596c69743337315f636c6f73757265005f5f6469766469330044 *6174617a695475706c655f5a32545f7374617469635f696e666f0047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a69566572746578537065635f7a644c72616a48 *6c766c33345f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c62 *61636b737a69526567697374726174696f6e5f7a644c723348546c766c32365f696e666f004772 *6170686963737a6955497a69474c55547a6943616c6c6261636b737a6952656769737472617469 *6f6e5f7a64646d7a6c7a65315f656e747279004748437a69494f426173655f4578697445786365 *7074696f6e5f636f6e5f656e7472790047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a6951756572795574696c735f7a644c726b61656c69743334345f636c6f73 *7572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e64 *6f775f4b657946365f7374617469635f696e666f004748437a69576f72645f7a6d335f656e7472 *790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726b37796c766c3639375f636c6f737572650047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b *30416c766c3538395f636c6f73757265007374675f73656c5f31315f7570645f656e7472790047 *726170686963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174 *696f6e5f7a64777a64646d7a677a655f636c6f737572650047726170686963737a6955497a6947 *4c55547a69496e697469616c697a7a6174696f6e5f7a644c72356d457a647767656e657269634c *656e677468315f636c6f73757265007374675f73656c5f305f7570645f656e7472790047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726a5a5a306c69743137305f636c6f737572650047726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b37436c766c *3639385f636c6f73757265007374675f67635f6c310047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c7235797a7a6c766c31 *34325f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a6948696e74735f466173746573745f7374617469635f656e7472790047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a64 *4c726b624d6c69743336385f636c6f73757265007374675f75745f315f305f756e7265675f696e *666f00466f726569676e7a69437a69537472696e675f776974684341537472696e675f696e666f *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726a51556c766c3433395f636c6f737572650047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b32 *516c766c3632345f636c6f73757265005f5f737467696e69745f4748437a694c69737400474843 *7a694572725f756e74616e676c655f656e747279004748437a6948616e646c655f66647a757374 *646f75745f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a69426173696354797065735f456e61626c65645f7374617469635f656e74727900 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565727955 *74696c735f7a644c726b63416c766c3737355f636c6f73757265004748437a69494f426173655f *6c766c35345f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a6951756572795574696c735f7a644c726b30516c766c3539335f636c6f737572 *650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f77 *5f7a644c7238774c7a6477756e6d61727368616c5370656369616c4b65795f696e666f00676364 *496e747a685f66617374004748437a6948616e646c655f6c766c32375f636c6f73757265004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c735f7a644c726b32736c766c3631385f636c6f737572650047726170686963737a6955497a69 *474c55547a6943616c6c6261636b737a6957696e646f775f7a644c72574a676c75744d6f757365 *46756e635f656e747279007374675f454e445f4d55545f4c4953545f696e666f00676c466f6766 *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f6c69676874496e646578546f456e756d5f636c6f73757265005f5f737467696e69 *745f466f726569676e7a6953746f7261626c65005f5f737467696e69745f47726170686963737a *6955497a69474c55547a694f7665726c61790047726170686963737a6955497a69474c55547a69 *43616c6c6261636b737a69526567697374726174696f6e5f636f6d706172655f696e666f005f5f *737467696e69745f47726170686963737a6955497a69474c55547a69436f6e7374616e74730047 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574 *696c735f7a644c726b63656c69743337355f636c6f737572650047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c557a694572726f7273496e7465726e616c5f676574 *474c4572726f72734175785f636c6f737572650047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6951756572795574696c735f476574556e7061636b434d594b48 *696e745f7374617469635f656e7472790047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a6951756572795574696c735f7a644c726a53576c697437365f636c6f73 *7572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361 *706162696c6974795f7a644c723576786c766c39355f636c6f737572650047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c72 *35784a6c766c3132395f636c6f73757265007374675f61705f737461636b5f656e747269657300 *466f726569676e7a69437a694572726f725f7468726f774572726e6f496652657472794d617942 *6c6f636b5f656e747279005f5f737467696e69745f47726170686963737a6952656e646572696e *677a694f70656e474c7a69474c7a695072696d69746976654d6f6465005f5f737467696e69745f *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69427566666572 *4f626a656374730047726170686963737a6955497a69474c55547a6943616c6c6261636b737a69 *57696e646f775f4b657946365f636c6f73757265005f5f737467696e69745f4772617068696373 *7a6955497a69474c55547a6947616d654d6f64655f004748437a69426173655f5a30545f636c6f *737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e *646f775f4b6579486f6d655f636c6f737572650047726170686963737a6955497a69474c55547a *6943616c6c6261636b737a69526567697374726174696f6e5f7a657a65315f696e666f005f5f73 *7472746f645f696e7465726e616c4040474c4942435f322e3000756e626c6f636b4f6e6500466f *726569676e7a69437a694572726f725f7468726f774572726e6f496652657472795f656e747279 *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726b31676c69743230355f636c6f7375726500636d70496e74656765727a *685f66617374005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a694269746d6170735f004748437a69494f426173655f756e7361666550 *6572666f726d494f5f656e7472790047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a6951756572795574696c735f7a644c726b61346c766c3733365f636c6f7375 *72650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f *775f6b6579626f6172644d6f75736543616c6c6261636b5f636c6f737572650047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a64 *4c726a58456c69743134395f636c6f737572650047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b35456c69743237335f *636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f7a644c726a5a5a596c69743138355f636c6f7375726500477261 *70686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c *735f7a644c726a55536c69743130365f636c6f737572650047726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b31576c766c *3631305f636c6f73757265004748437a695074725f706c75735074725f696e666f004772617068 *6963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f64386f750047 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574 *696c735f7a644c726b32326c69743231375f636c6f73757265004748437a694e756d5f7a647771 *756f7452656d496e74656765725f636c6f737572650047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b36556c766c3638 *375f636c6f73757265005f5f737467696e69745f47726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a69436f6f72645472616e735f0047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b63476c *69743338325f636c6f73757265005f5f737467696e69745f4748437a6953746f7261626c655f00 *47726170686963737a6955497a69474c55547a69496e697469616c697a7a6174696f6e5f6d6172 *7368616c446973706c61794d6f64655f636c6f7375726500737461727454696d65720047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726b31516c69743231345f636c6f737572650047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b32476c697432 *32375f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a6951756572795574696c735f7a644c726b31796c766c3630345f636c6f737572650047 *48437a69494f426173655f7a644c723661656134355f696e666f0047726170686963737a695549 *7a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f43616c6c626163 *6b49445f636f6e5f656e747279004748437a69494f426173655f426c6f636b65644f6e44656164 *4d5661725f7374617469635f696e666f004748437a69494f426173655f6c766c34375f656e7472 *79004748437a69426173655f5a4d5a4e5f7374617469635f656e7472790047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c72 *6a52366c766c3434325f636c6f73757265007374675f72616973655f656e747279005f5f737467 *696e69745f466f726569676e7a69537461626c655074725f0047726170686963737a6955497a69 *474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a644c72334852676f *5f656e747279007274735f61726776005f5f656e636f6465446f75626c65007374675f626c6f63 *6b5f74616b656d766172005f5f737467696e69745f466f726569676e7a694d61727368616c7a69 *506f6f6c00466f726569676e7a694d61727368616c7a6941727261795f7769746841727261794c *656e305f656e7472790047726170686963737a6955497a69474c55547a6943616c6c6261636b73 *7a6957696e646f775f4d6f757365427574746f6e5f7374617469635f656e747279004748437a69 *4c6973745f7a64777370616e5f696e666f0047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a6953746174655661725f53746174655661725f636f6e5f656e747279 *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162 *696c6974795f7a64776d616b654361706162696c6974795f636c6f737572650047726170686963 *737a6955497a69474c55547a69496e697469616c697a7a6174696f6e5f6d61727368616c446973 *706c61794d6f64655f696e666f004d61696e5f6d61696e5f696e666f00736967616374696f6e40 *40474c4942435f322e30005f5f737467696e69745f466f726569676e7a69435f007274735f6576 *616c004748437a6948616e646c655f7769746848616e646c657a757a715f636c6f737572650047 *48437a69494f426173655f48616e646c657a757a755f636f6e5f656e747279004748437a69494f *426173655f6c766c34355f696e666f0047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a6951756572795574696c735f7a644c726b30436c69743139355f636c6f73 *7572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e64 *6f775f7a644c723878506139345f636c6f737572650047726170686963737a6955497a69474c55 *547a6943616c6c6261636b737a6957696e646f775f61365f696e666f004748437a69494f426173 *655f6137305f636c6f73757265007374675f41505f656e7472790047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a5161 *6c697433335f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c62 *61636b737a69526567697374726174696f6e5f7a64646d7a67315f696e666f0063617463687a68 *5f666173740047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *51756572795574696c735f7a644c726a5a5a576c766c3537395f636c6f73757265004748437a69 *53545265665f53545265665f7374617469635f656e7472790047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b30776c76 *6c3538385f636c6f7375726500684f70656e474c5f67657450726f634164647265737300737467 *5f73656c5f375f6e6f7570645f656e7472790047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a55696c697439375f636c *6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *51756572795574696c735f7a644c726a50386c697431375f636c6f737572650047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a64 *4c726a4f436c6974395f636c6f737572650047726170686963737a6955497a69474c55547a6943 *616c6c6261636b737a6957696e646f775f64386f480047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b35616c766c3636 *305f636c6f73757265004748437a6953686f775f69746f735f696e666f005f5f737467696e6974 *5f47726170686963737a6952656e646572696e677a694f70656e474c004748437a69494f426173 *655f4173796e63457863657074696f6e5f636f6e5f696e666f0047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a58716c *766c3534305f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c62 *61636b737a6957696e646f775f4b657946385f7374617469635f656e74727900737461745f6578 *697400676c75745370656369616c557046756e63004d61696e5f7a646766726f6d53746174655f *696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951 *756572795574696c735f7a644c726a56576c766c3531375f636c6f737572650047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a64 *4c726a56716c766c3530395f636c6f737572650047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a5a5a776c6974313738 *5f636c6f73757265004748437a694c6973745f7a644c72397a7a7072656c7a756c6973747a7573 *74725f656e747279005f5f737467696e69745f466f726569676e7a69437a694572726f72004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69466f675f61325f69 *6e666f005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a69416e7469616c696173696e675f007374675f73656c5f355f7570645f696e66 *6f004748437a69494f426173655f4275666665725f636f6e5f696e666f004748437a6953686f77 *5f5a434453686f775f7374617469635f696e666f0047726170686963737a6955497a69474c5554 *7a6943616c6c6261636b737a69526567697374726174696f6e5f7a644c723348566c766c32375f *736c6f7700446174617a694c6973745f73756d5f636c6f737572650047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b34 *366c69743234395f636c6f73757265004748437a69426173655f437a685f7374617469635f656e *7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175 *6572795574696c735f7a644c726a55656c697439365f636c6f737572650047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c72 *6a4f536c697431335f636c6f73757265005f5f737467696e69745f47726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a69457874656e73696f6e735f005f5f73746769 *6e69745f47726170686963737a6955497a69474c55547a6943616c6c6261636b73007374675f61 *705f70707070705f696e666f007274735f676574576f72643332004748437a69494f426173655f *5265736f7572636556616e69736865645f7374617469635f696e666f0047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b *39616c766c3732325f636c6f737572650047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a6951756572795574696c735f7a644c726b37656c766c3639325f636c6f *73757265007374675f73656c5f345f7570645f696e666f0047726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a56776c6974 *3131365f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c *7a69474c7a6951756572795574696c735f7a644c726a56736c69743131355f636c6f7375726500 *7374675f4d55545f4152525f505452535f46524f5a454e5f696e666f007374675f73656c5f315f *7570645f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a694361706162696c6974795f7a644c72357a7a4a6c766c3136305f636c6f73757265005f5f *737467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a694576616c7561746f7273006e657750696e6e65644279746541727261797a685f6661737400 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565727955 *74696c735f7a644c726b32346c766c3631325f636c6f73757265005f5f737467696e69745f4772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c73005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a69416e7469616c696173696e67004748437a695074725f46756e5074725f636f6e *5f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *4361706162696c6974795f7a644c723576566c766c3130315f636c6f7375726500477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a *644c726b316d6c766c3630315f636c6f737572650047726170686963737a6952656e646572696e *677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c723578356c766c313139 *5f636c6f73757265004748437a695061636b5f756e7061636b43537472696e675f636c6f737572 *65007374675f61705f385f7570645f696e666f007374675f61705f6c5f696e666f005f5f737467 *696e69745f4748437a69526561645f0047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a694361706162696c6974795f7a644c723576546c697431395f636c6f7375 *72650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726a58636c69743134325f636c6f73757265005f5f737467696e6974 *5f466f726569676e7a69437a69537472696e67006c6f6f6b7570537461626c654e616d65007274 *735f6d6b46756e507472004748437a69494f426173655f4173796e63457863657074696f6e5f63 *6f6e5f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a6951756572795574696c735f7a644c726a51656c697433345f636c6f737572650047726170 *686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f4b65794631 *325f7374617469635f696e666f004748437a6953686f775f7a64646d73686f774c6973745f636c *6f73757265004748437a69494f426173655f4c696e65427566666572696e675f636c6f73757265 *007374675f73656c5f31345f6e6f7570645f696e666f004748437a69494f426173655f7a644c72 *3661696134375f636c6f737572650047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a6951756572795574696c735f476574466f6748696e745f7374617469635f69 *6e666f00436f6e74726f6c7a69457863657074696f6e5f7a644c72324a356c766c31345f696e66 *6f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726a57716c69743133305f636c6f737572650047726170686963737a69 *55497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a657a655f *656e747279007374675f6e6f666f726365494f5f696e666f005f5f737467696e69745f47726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a69506978656c5265637461 *6e676c65737a69486973746f6772616d5f0047726170686963737a6955497a69474c55547a6943 *616c6c6261636b737a6957696e646f775f55705f7374617469635f696e666f004748437a69494f *426173655f7a644c723661696134375f696e666f007374675f42434f5f656e7472790047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726b336d6c766c3633325f636c6f737572650047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b34326c697432 *34385f636c6f73757265005f5f737467696e69745f4748437a69576f72645f006763537461626c *655074725461626c6500466f726569676e7a6953746f7261626c655f706f6c797a75616c69676e *6d656e74325f636c6f73757265004748437a6948616e646c655f6c766c32335f636c6f73757265 *004748437a69494f426173655f6136345f656e747279007374675f61705f645f72657400477261 *70686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974 *795f7a644c723579356c697435335f636c6f7375726500676c75744b6579626f61726446756e63 *004748437a694e756d5f7a647773686f7773507265635f636c6f73757265004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c *726a4f776c766c3430325f636c6f737572650047726170686963737a6955497a69474c55547a69 *496e697469616c697a7a6174696f6e5f7a64776c676f5f696e666f0047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c723577 *566c697433355f636c6f7375726500446174617a6946696e6974654d61705f4272616e63685f63 *6f6e5f656e7472790072656d6f7665486173685461626c65004748437a69494f426173655f4861 *7264776172654661756c745f636c6f737572650047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b38556c766c3731385f *636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f47657447656e65726174654d69706d617048696e745f73746174 *69635f656e747279004748437a69576f72645f7a70335f696e666f005f5f737467696e69745f46 *6f726569676e7a69537461626c65507472004748437a69494f426173655f7a647773686f777350 *726563325f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726b63756c69743337395f636c6f73757265004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c735f7a644c726a516b6c766c3433305f636c6f73757265005f5f737467696e69745f4748437a *69546f7048616e646c65725f0047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a6951756572795574696c735f7a644c726b38736c766c3731315f636c6f73757265 *005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a69536176696e6753746174655f0047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a6951756572795574696c735f7a644c726a5a5a4d6c69743138325f63 *6c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957 *696e646f775f436861725f7374617469635f696e666f0047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a57656c697431 *32375f636c6f73757265004748437a6948616e646c655f7374646f75745f696e666f0047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726a506d6c766c3431355f636c6f73757265004748437a69496e745f4936347a685f73 *74617469635f696e666f005f5f737467696e69745f47726170686963737a6952656e646572696e *677a694f70656e474c7a69474c557a694572726f72730047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a69466f675f4578705f7374617469635f696e666f007274 *735f676574466c6f6174004748437a69546f7048616e646c65725f7265706f7274537461636b4f *766572666c6f775f696e666f004748437a694c6973745f7a644c723155536c766c31315f656e74 *7279004748437a695765616b5f72756e46696e616c697a7a657242617463685f636c6f73757265 *004748437a69576f72645f6c6974375f636c6f73757265004748437a694c6973745f7370616e5f *636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a69 *526567697374726174696f6e5f7a644c72334a356c766c33305f636c6f73757265007374675f73 *656c5f355f6e6f7570645f656e7472790047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a694361706162696c6974795f7a644c72357a7a746c766c3135365f636c *6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *51756572795574696c735f7a644c726a4f6f6c766c3430305f636c6f73757265005f5f73746769 *6e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c55004748 *437a69494f426173655f6137375f636c6f73757265004748437a6953746f7261626c655f726561 *645074724f66665074725f696e666f0047726170686963737a6955497a69474c55547a6943616c *6c6261636b737a6957696e646f775f4b65794631315f7374617469635f656e74727900696e7365 *7274486173685461626c650047726170686963737a6952656e646572696e677a694f70656e474c *7a69474c7a6951756572795574696c735f7a644c726a554f6c69743130355f636c6f7375726500 *47726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f4b *657955705f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a6951756572795574696c735f7a644c726b30676c766c3538345f636c6f73757265 *005f5f737467696e69745f466f726569676e7a69437a6954797065735f007374675f6361746368 *5f6672616d655f305f726574004748437a6948616e646c655f6132345f656e747279004748437a *69494f426173655f4d5661725f636f6e5f656e7472790047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a55476c697431 *30335f636c6f73757265004748437a69494f426173655f494f457863657074696f6e5f636f6e5f *696e666f007274735f6d6b496e7400666f726b7a685f666173740064656c657465416c6c546872 *65616473004748437a69426173655f47545f636c6f737572650047726170686963737a6955497a *69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f43616c6c6261636b *49445f636f6e5f696e666f004d61696e5f66335f636c6f737572650047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b63 *796c69743338305f636c6f737572650047726170686963737a6955497a69474c55547a6943616c *6c6261636b737a6957696e646f775f4b65794631305f636c6f737572650047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f47657450 *6f696e74536d6f6f746848696e745f7374617469635f656e747279004748437a69576f72645f7a *64646d73686f775f636c6f737572650047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a6951756572795574696c735f476574466f6748696e745f7374617469635f *656e7472790068735f6164645f726f6f740063726561746541646a7573746f72004748437a6949 *4f426173655f6c766c34365f636c6f737572650047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b63306c766c3736365f *636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f7a644c726a53386c766c3435385f636c6f737572650047726170 *686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f4b65794c65 *66745f7374617469635f696e666f0047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a6951756572795574696c735f7a644c726b37636c69743239375f636c6f7375 *72650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726a584d6c69743135315f636c6f737572650047726170686963737a *6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f53706163 *6562616c6c4d6f74696f6e43425f7374617469635f656e747279005f5f737467696e69745f4772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69546578747572696e *677a69506978656c496e7465726e616c466f726d617400446174617a6946696e6974654d61705f *7a6477676c756542616c5f636c6f737572650047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a694361706162696c6974795f7a644c723578446c697434365f636c *6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *51756572795574696c735f7a644c726a58776c69743134375f636c6f7375726500477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a *644c726a544f6c766c3438345f636c6f73757265007374675f73656c5f31345f7570645f696e66 *6f007274735f676574496e743332004748437a69426173655f7a644c7232694f6c766c365f636c *6f7375726500676574416c6c6f636174696f6e73005f5f737467696e69745f4748437a6953545f *004748437a694e756d5f4a7a685f636f6e5f696e666f0047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b626f6c697433 *36325f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b *737a69526567697374726174696f6e5f74686553636176656e6765725f656e74727900756e7361 *66655468617741727261797a685f66617374007374675f4d55545f4152525f505452535f696e66 *6f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f476574466f6748696e745f636c6f737572650047726170686963737a6955497a *69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f506173736976654d *6f74696f6e43425f7374617469635f656e747279004748437a69426173655f5a30545f73746174 *69635f656e747279005f44594e414d4943004748437a69494f426173655f7a644c723661656134 *355f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726a52556c697436305f636c6f7375726500477261 *70686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c *735f47657454657874757265436f6d7072657373696f6e48696e745f7374617469635f656e7472 *790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f676574496e7465676572315f696e666f007374675f73656c5f335f7570645f65 *6e74727900446174617a6946696e6974654d61705f7a644c7233686e6c766c31375f656e747279 *004748437a69576f72645f7369676e756d335f696e666f0047726170686963737a6955497a6947 *4c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7265676973746572466f *72436c65616e75705f696e666f007374675f626c6f636b4173796e63457863657074696f6e737a *685f7265745f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c *7a69474c7a6951756572795574696c735f7a644c726b366b6c766c3637385f636c6f7375726500 *5f5f737467696e69745f53797374656d7a69506f7369787a695479706573004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c *723575566c6974345f636c6f737572650047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a6948696e74735f7a644c723367616c766c31305f696e666f007374675f *7570645f6672616d655f355f7265740047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a6951756572795574696c735f47657447656e65726174654d69706d617048 *696e745f7374617469635f696e666f004748437a69494f426173655f6c766c34375f636c6f7375 *7265004748437a69576f72645f7a657a65345f696e666f0047726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c7235787a7a6c69 *7434355f636c6f73757265005f5f737467696e69745f47726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a69546578747572696e677a69506172616d65746572735f00 *47726170686963737a6955497a69474c55547a69496e697469616c697a7a6174696f6e5f6d6172 *7368616c446973706c61794d6f64655f656e7472790047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a69457874656e73696f6e735f6c766c5f696e666f00477261 *70686963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f *6e5f636f6d706172655f656e7472790047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a694361706162696c6974795f7a644c723578376c697433385f636c6f7375 *7265004748437a694572725f6c766c375f656e747279004748437a69494f426173655f6c766c35 *385f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f7a644c726a50636c697431385f636c6f73757265004748437a69 *53686f775f5a434453686f775f636f6e5f656e747279004748437a69494f426173655f55736572 *4572726f725f7374617469635f696e666f0047726170686963737a6955497a69474c55547a6943 *616c6c6261636b737a69526567697374726174696f6e5f73657443616c6c6261636b5f656e7472 *79005f5f676d707a5f6469766578616374007374675f61705f385f7570645f656e747279004772 *6170686963737a6955497a69474c55547a6943616c6c6261636b737a6952656769737472617469 *6f6e5f7a64777a64646d7a677a655f696e666f0047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b32456c766c3632315f *636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f7a644c726b61556c766c3734395f636c6f73757265006973466c *6f61744e614e0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *6951756572795574696c735f7a644c726b36756c69743238365f636c6f73757265004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f *7a644c726b62456c69743336365f636c6f737572650047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a576f6c766c3532 *345f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b73 *7a69526567697374726174696f6e5f7a64646d7a677a65315f696e666f0047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c72 *6b31556c69743231355f636c6f73757265004748437a69576f72645f7a64664571576f72643332 *5f636c6f73757265007374675f7570645f6672616d655f375f726574005f5f737467696e69745f *4748437a69456e756d5f007374675f73656c5f355f6e6f7570645f696e666f004748437a694572 *725f7a644c7250636c766c31345f636c6f737572650047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b32386c766c3631 *335f636c6f73757265005f5f737467696e69745f4748437a694c6973745f004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c *726a51576c697434355f636c6f737572650047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a694361706162696c6974795f7a644c7235795a5a6c697436375f636c *6f7375726500436f6e74726f6c7a69457863657074696f6e5f756e636175676874457863657074 *696f6e48616e646c65725f636c6f737572650047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f636c6970506c616e65496e64657854 *6f456e756d5f696e666f007374675f61705f70705f696e666f005f5f737467696e69745f466f72 *6569676e7a694d61727368616c00676c754275696c6433444d69706d61704c6576656c73007461 *6b654d5661727a685f66617374004748437a69494f426173655f556e737570706f727465644f70 *65726174696f6e5f7374617469635f656e7472790047726170686963737a6955497a69474c5554 *7a6943616c6c6261636b737a69526567697374726174696f6e5f5370656369616c43425f737461 *7469635f696e666f00466f726569676e7a6953746f7261626c655f706f6c797a7573697a7a654f *66325f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a6951756572795574696c735f7a644c726a54346c697437385f636c6f73757265004748 *437a6948616e646c655f7a6477666c75736857726974654275666665725f696e666f0047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726a55386c766c3438395f636c6f737572650047726170686963737a6955497a69474c *55547a6943616c6c6261636b737a6957696e646f775f4b657946395f7374617469635f696e666f *0047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6952656769737472 *6174696f6e5f49646c6543425f7374617469635f696e666f007374675f424c41434b484f4c455f *696e666f004748437a69426173655f4c545f7374617469635f696e666f0047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c557a694572726f7273496e7465726e616c *5f7a644c7233696e6c766c32305f656e747279005f5f737467696e69745f47726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a69506978656c52656374616e676c6573 *7a69436f6c6f725461626c655f0053797374656d7a69456e7669726f6e6d656e745f6765744172 *67735f636c6f7375726500446174617a6946696e6974654d61705f706f6c797a7564656c657465 *4d696e5f696e666f004748437a6948616e646c655f64735f636c6f7375726500676c436f6c6f72 *336600436f6e74726f6c7a69457863657074696f6e5f7a644c72324a646c766c31365f656e7472 *790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f476574506f696e74536d6f6f746848696e745f636c6f73757265004772617068 *6963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f4b657946325f *7374617469635f656e747279007374675f6571496e743634007374675f6d696e7573496e743634 *0047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f *4b657950616765446f776e5f7374617469635f696e666f005f5f737467696e69745f4748437a69 *426173655f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *566572746578537065635f7074727a75676c466f67436f6f7264664558545f636c6f7375726500 *47726170686963737a6955497a69474c55547a6943616c6c6261636b737a695265676973747261 *74696f6e5f5461626c65744d6f74696f6e43425f636c6f73757265005f5f737467696e69745f47 *726170686963737a6952656e646572696e677a694f70656e474c5f004748437a69426173655f43 *7a685f7374617469635f696e666f004748437a6948616e646c655f6c766c36385f636c6f737572 *650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726a544d6c697438395f636c6f73757265005f5f737467696e69745f47 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6954657874757269 *6e677a694170706c69636174696f6e5f004d61696e5f66315f696e666f005f5f737467696e6974 *5f466f726569676e7a694d61727368616c5f00696e746572727570746564007374675f756e6368 *65636b6564495368696674524136340047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a6951756572795574696c735f7a644c726a5a5a556c69743138345f636c6f *73757265004748437a69576f72645f7a64646d73686f775f656e7472790047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c72 *357a7a766c697437355f636c6f73757265005f5f6465636f6465446f75626c65005f5f73746769 *6e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c557a6945 *72726f7273496e7465726e616c0047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a694361706162696c6974795f7a644c723578336c697433375f636c6f73757265 *005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a69457863657074696f6e0047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a69457874656e73696f6e735f6c766c5f656e74727900466f726569676e7a69 *437a694572726f725f7468726f774572726e6f496652657472794d6179426c6f636b5f696e666f *004748437a69426173655f426f6f6c5f636c6f737572655f74626c007374675f67635f756e6278 *5f72315f726574007274735f6d6b466c6f617400446174617a6946696e6974654d61705f7a6477 *6d6b42616c4272616e63685f636c6f737572650047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a69426567696e456e645f72656e6465725072696d69746976655f *696e666f0047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e *646f775f436861725f7374617469635f656e7472790047726170686963737a6955497a69474c55 *547a6943616c6c6261636b737a6957696e646f775f4b657946375f636c6f73757265007374675f *7570645f6672616d655f335f72657400466f726569676e7a69437a694572726f725f7a64776363 *616c6c325f696e666f004748437a69457863657074696f6e5f6361746368457863657074696f6e *5f696e666f004748437a69494f426173655f556e736174697366696564436f6e73747261696e74 *735f7374617469635f696e666f0047726170686963737a6955497a69474c55547a69496e697469 *616c697a7a6174696f6e5f7a644c72356d47676f315f656e7472790047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b62 *6d6c766c3735365f636c6f73757265004748437a694c6973745f726576657273655f696e666f00 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565727955 *74696c735f7a644c726b376f6c69743330305f636c6f737572650047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a5949 *6c766c3536305f636c6f737572650047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a6951756572795574696c735f7a644c726a566d6c766c3530385f636c6f7375 *72650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69436170 *6162696c6974795f7a644c723578466c766c3132385f636c6f73757265005f5f737467696e6974 *5f446174617a695475706c655f005f5f737467696e69745f446174617a69486173685461626c65 *5f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726b33496c69743234335f636c6f737572650047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c7235 *79466c697436325f636c6f737572650047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a6951756572795574696c735f7a644c726b38576c69743332345f636c6f73 *7572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e64 *6f775f6b6579626f6172644d6f75736543616c6c6261636b5f656e74727900616e795573657248 *616e646c6572730047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f7a644c726b32716c69743232335f636c6f737572650047726170 *686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f6138385f69 *6e666f004748437a6948616e646c655f6765744275666665725f656e7472790047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c557a694572726f7273496e7465726e *616c5f676574474c4572726f72734175785f696e666f004748437a69494f426173655f4e6f6e54 *65726d696e6174696f6e5f7374617469635f696e666f004748437a69496e745f7a64777a657a65 *5f736c6f77005f5f737467696e69745f446174617a69494f5265665f007374675f73656c5f3130 *5f7570645f696e666f004748437a69494f426173655f6c766c36325f656e747279004772617068 *6963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f446f776e5f63 *6c6f73757265007374675f63617463685f696e666f007374675f61705f707070705f7265740047 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574 *696c735f7a644c726a52676c697435305f636c6f737572650047726170686963737a6955497a69 *474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f446973706c61794342 *5f636c6f73757265005f5f737467696e69745f47726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a69506978656c52656374616e676c65737a694d696e6d61785f0044 *6174617a6946696e6974654d61705f6c766c345f696e666f004748437a69494f426173655f756e *73616665506572666f726d494f5f696e666f0047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a52326c766c3434315f63 *6c6f73757265007374675f706c7573496e74363400466f726569676e7a694d61727368616c7a69 *41727261795f6c766c5f636c6f7375726500446174617a6946696e6974654d61705f7a64776669 *6e644d61785f696e666f004748437a694e756d5f6c766c31315f636c6f73757265004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f *7a644c726b63326c69743337325f636c6f737572650074696d657374616d70004748437a695368 *6f775f73686f77735f636c6f73757265005f5f737467696e69745f4748437a6945786365707469 *6f6e0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726b374b6c766c3730305f636c6f73757265007374675f73746f705f *7468726561645f726574004748437a69494f426173655f6c766c35325f636c6f73757265004748 *437a694c6973745f7a644c723155656c766c5f636c6f73757265007274735f676574426f6f6c00 *4748437a69494f426173655f6c766c34355f656e747279005f5f737467696e69745f5a434d6169 *6e007274735f676574446f75626c65007374675f7570645f6672616d655f315f72657400466f72 *6569676e7a69437a694572726f725f7468726f774572726e6f496652657472794d6179426c6f63 *6b5f636c6f737572650077726974654040474c4942435f322e30007374675f63746f695f726574 *5f565f696e666f004748437a69576f72645f7a64646d73686f774c697374335f636c6f73757265 *00466f726569676e7a694d61727368616c7a695574696c735f776974684d616e795f656e747279 *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726a5a5a436c766c3537345f636c6f7375726500466f726569676e7a694d *61727368616c7a695574696c735f776974684d616e795f636c6f7375726500446174617a694669 *6e6974654d61705f4272616e63685f7374617469635f696e666f005f5f737467696e69745f4748 *437a694172725f0047726170686963737a6955497a69474c55547a6943616c6c6261636b737a69 *57696e646f775f4b657946345f7374617469635f656e747279007374675f73656c5f335f757064 *5f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c557a *694572726f7273496e7465726e616c5f7a644c7233696e6c766c32305f636c6f73757265004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c735f7a644c726b306b6c766c3538355f636c6f7375726500696e6974537461626c6550747254 *61626c65007374675f776f72643634546f496e743634005f5f737467696e69745f477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a69494f53746174655f005f5f73 *7467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *695072696d69746976654d6f64655f007374675f63746f695f7265745f4c315f696e666f006861 *6e646c655369676e616c73496e5468697354687265616400446174617a6946696e6974654d6170 *5f7a644c723367546c766c325f696e666f0047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a6951756572795574696c735f7a644c726a57676c766c3532325f636c *6f73757265004748437a69494f426173655f48616e646c657a757a755f7374617469635f656e74 *72790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726a53516c766c3436395f636c6f737572650047726170686963737a *6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f636f6d70 *617265315f696e666f007374675f73656c5f325f7570645f656e7472790047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a69426173696354797065735f456e6162 *6c65645f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c *7a69474c7a6951756572795574696c735f7a644c726a4f4d6c766c3430365f636c6f7375726500 *7374675f67635f66315f7265740047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a6951756572795574696c735f7a644c726b636b6c766c3737315f636c6f737572 *650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726a57596c766c3533335f636c6f73757265004748437a69576f72645f *7a646653686f77576f726433325f636c6f73757265004748437a695061636b5f756e7061636b43 *537472696e675f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c *7a69474c557a694572726f7273496e7465726e616c5f7265636f72644572726f72436f64655f63 *6c6f73757265005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a69506572467261676d656e745f005f5f737467696e69745f5072656c75 *64650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726a54716c766c3437385f636c6f73757265007374675f61705f375f *7570645f656e74727900626c6f636b65645f71756575655f746c0047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b3671 *6c69743238355f636c6f737572650047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a69436f6f72645472616e735f7a645753697a7a655f656e747279004748437a *69426173655f6c766c375f636c6f737572650047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b30756c69743139335f63 *6c6f737572650072657365744e75727365726965730047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c72357a7a4c6c697437 *395f636c6f73757265004748437a69496e745f4931367a685f636f6e5f696e666f004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6948696e74735f4e69636573 *745f7374617469635f656e747279007374675f6172675f6269746d617073005f5f737467696e69 *745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6950697865 *6c52656374616e676c65737a69526173746572697a7a6174696f6e5f004748437a69494f426173 *655f416c72656164794578697374735f636c6f737572650047726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b62576c766c *3736355f636c6f73757265006d61696e5f74687265616473004d61696e5f53746174655f737461 *7469635f696e666f00737472636d704040474c4942435f322e3000446174617a6946696e697465 *4d61705f7a644c72336874706f6c797a756661696c315f696e666f004748437a69494f42617365 *5f42756666657253746174655f636c6f737572655f74626c005f5f737467696e69745f47726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a69546578747572696e677a *69546578506172616d657465725f0067656e53796d5a68004748437a69426173655f5a43444f72 *645f7374617469635f656e74727900446174617a6946696e6974654d61705f7a644c723368316c *766c365f696e666f005f5f737467696e69745f47726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a694672616d656275666665725f0064655265665765616b7a685f66 *61737400446174617a6946696e6974654d61705f6c766c345f636c6f7375726500477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a *644c726a50326c766c3431305f636c6f73757265004748437a69494f426173655f6c766c35335f *656e7472790047726170686963737a6955497a69474c55547a6943616c6c6261636b737a695769 *6e646f775f7a644c72574a676c75744d6f75736546756e635f696e666f0047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f6c766c33 *5f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a6951756572795574696c735f7a644c726a51366c697433325f636c6f737572650047726170 *686963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e *5f746865436c65616e75704c6973745f656e7472790047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b32776c766c3631 *395f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726b38716c69743331365f636c6f73757265005f5f *737467696e69745f47726170686963737a6955497a69474c55547a69466f6e74735f0047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726b37756c766c3639365f636c6f737572650047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b336b6c697432 *33375f636c6f73757265007374675f73656c5f31305f7570645f656e74727900436f6e74726f6c *7a69457863657074696f6e5f7a644c7232497a7a7a64776c766c5f656e747279007374675f6170 *5f335f7570645f696e666f00466f726569676e7a694d61727368616c7a6941727261795f7a6477 *7065656b41727261795f696e666f005f5f696e745f656e636f6465466c6f6174004748437a6942 *6173655f7a707a705f656e7472790047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a6951756572795574696c735f7a644c726a56696c766c3530375f636c6f7375 *7265004748437a69494f426173655f4d5661725f636f6e5f696e666f0047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a *59346c766c3535305f636c6f737572650053797374656d7a69457869745f6c766c5f636c6f7375 *72650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726b396d6c766c3732355f636c6f73757265004748437a69494f4261 *73655f6c766c36335f696e666f007374675f72656d576f726436340047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b61 *306c766c3733355f636c6f737572650047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a6951756572795574696c735f7a644c726b31616c766c3539385f636c6f73 *7572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361 *706162696c6974795f7a644c72357a7a6e6c697437335f636c6f73757265005f5f737467696e69 *745f4748437a6953746f7261626c650047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a6951756572795574696c735f7a644c726a51736c766c3433325f636c6f73 *7572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361 *706162696c6974795f7a644c723576316c766c38375f636c6f73757265004748437a6942617365 *5f5a434445715f636f6e5f656e747279005f66705f687700737461745f656e644743004748437a *69494f426173655f48617264776172654661756c745f7374617469635f656e747279004748437a *69494f426173655f6136335f656e7472790047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a6951756572795574696c735f7a644c726b62476c766c3736315f636c *6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a695265 *67697374726174696f6e5f7a644c723348506c766c32355f696e666f004748437a6948616e646c *655f64454641554c547a754255464645527a7553495a5a455f656e747279004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c *726b33476c766c3633375f636c6f73757265007374675f666f726365494f5f696e666f00477261 *70686963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f *6e5f7a644c72334852676f5f636c6f73757265004748437a69494f426173655f6c766c34365f69 *6e666f005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a69546578747572696e677a69506978656c496e7465726e616c466f726d61745f *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726b31536c766c3630395f636c6f737572650047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a69457874656e73696f6e735f7a6477636361 *6c6c5f636c6f73757265007274735f676574576f726431360047726170686963737a6955497a69 *474c55547a6943616c6c6261636b737a6957696e646f775f61345f696e666f00737461745f656e *6445786974005f5f737467696e69745f4748437a69537461626c650047726170686963737a6955 *497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f4a6f79737469 *636b43425f7374617469635f696e666f004748437a694572725f756e74616e676c655f696e666f *00466f726569676e7a69437a694572726f725f7468726f774572726e6f5f636c6f737572650044 *6174617a6946696e6974654d61705f7a644c7233674e7a64776d6b4272616e63685f696e666f00 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565727955 *74696c735f7a644c726b33736c69743233395f636c6f737572650047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b3236 *6c69743231385f636c6f737572650047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a694361706162696c6974795f7a644c723577706c697432375f636c6f737572 *650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726a584f6c766c3534365f636c6f737572650047726170686963737a69 *55497a69474c55547a6954797065735f4c656674427574746f6e5f7374617469635f696e666f00 *4748437a69494f426173655f556e736174697366696564436f6e73747261696e74735f636c6f73 *75726500706572726f724040474c4942435f322e30004d61696e5f66325f656e74727900477261 *70686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c *735f7a644c726a52496c697435375f636c6f73757265005f5f737467696e69745f477261706869 *63737a6955497a69474c55547a6953746174655f0047726170686963737a6952656e646572696e *677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c723579726c766c313430 *5f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a *6957696e646f775f4b657952696768745f636c6f73757265007374675f696e746572705f636f6e *737472385f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a6951756572795574696c735f7a644c726b62436c766c3736305f636c6f737572650047 *726170686963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174 *696f6e5f7265676973746572466f72436c65616e75705f656e747279005f5f737467696e69745f *53797374656d7a69457869745f0047726170686963737a6955497a69474c55547a695479706573 *5f6c766c315f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a6951756572795574696c735f7a644c726b384d6c766c3731365f636c6f737572 *6500736967696e746572727570744040474c4942435f322e30004748437a69496e745f636f6d70 *617265325f656e7472790047726170686963737a6955497a69474c55547a6943616c6c6261636b *737a6957696e646f775f7a644c7238784c6139325f656e747279007274735f6576616c494f0073 *74675f776f72643634546f576f72640047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a694361706162696c6974795f7a644c723579746c697435395f636c6f7375 *72650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726a546d6c766c3437375f636c6f737572650047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c72 *6b31456c69743231315f636c6f737572650047726170686963737a6955497a69474c55547a6943 *616c6c6261636b737a6957696e646f775f7a644c725750676c75745370656369616c46756e635f *636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *557a694572726f7273496e7465726e616c5f6c766c31395f636c6f737572650047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a64 *4c726a554d6c766c3439395f636c6f737572650047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a69566572746578537065635f436f6c6f72345f636f6e5f656e74 *72790047726170686963737a6955497a69474c55547a6943616c6c6261636b737a695265676973 *74726174696f6e5f7a644c7233484e6c766c32345f736c6f77004748437a69494f426173655f48 *616e646c657a757a755f7374617469635f696e666f0047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a57436c69743133 *335f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726b35796c766c3636365f636c6f73757265005f5f *737467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a69546578747572696e677a695175657269657300667072696e74664040474c4942435f322e30 *00636f6d70616374005f5f737467696e69745f47726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a69506f6c79676f6e4d6f646500666f726b4040474c4942435f322e *30007274735f6576616c4c617a79494f004748437a6948616e646c655f6c766c35375f696e666f *007374675f464f524549474e5f696e666f007274735f676574576f726438004748437a69494f42 *6173655f6e6577494f5265665f656e747279007374675f6e65576f72643634004748437a694861 *6e646c655f6c766c36365f636c6f73757265005f5f737467696e69745f47726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a69506978656c52656374616e676c65737a *69436f6e766f6c7574696f6e0047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a6948696e74735f466f675f7374617469635f656e747279005f5f737467696e6974 *5f446174617a69576f72645f00676574656e764040474c4942435f322e30004748437a69494f42 *6173655f6c766c36315f636c6f73757265005f5f737467696e69745f546578747a695061727365 *72436f6d62696e61746f72737a6952656164507265630047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c723577486c766c31 *31335f636c6f73757265005f5f737467696e69745f47726170686963737a6955497a69474c5554 *7a695374617465004748437a6948616e646c655f7a6477666c757368526561644275666665725f *696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951 *756572795574696c735f7a644c726a534d6c766c3436385f636c6f737572650047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a64 *4c723578316c766c3131385f636c6f73757265005f5f737467696e69745f47726170686963737a *6955497a69474c555400676c75744d61696e4c6f6f7000436f6e74726f6c7a6945786365707469 *6f6e5f7a644c7232497a7a7a64776c766c5f636c6f73757265004748437a69494f426173655f49 *6e76616c6964417267756d656e745f7374617469635f656e74727900446174617a694c6973745f *6c766c385f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a6951756572795574696c735f7a644c726b31416c69743231305f636c6f73757265 *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726a55576c69743130375f636c6f737572650063616c634e656564656400 *5f5f696e745f656e636f6465446f75626c65004748437a69494f426173655f416c726561647945 *78697374735f7374617469635f656e747279007374675f74696d6573496e743634005f5f737467 *696e69745f466f726569676e7a694d61727368616c7a695574696c73005f5f737467696e69745f *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a694c696e655365 *676d656e74730066666c7573684040474c4942435f322e300047726170686963737a6955497a69 *474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a737a65315f656e74 *72790047726170686963737a6955497a69474c55547a6943616c6c6261636b737a695265676973 *74726174696f6e5f7a644c72334a316c766c32385f636c6f737572650047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a64776c69 *676874496e646578546f456e756d5f696e666f005f5f737467696e69745f53797374656d7a6949 *4f7a69556e736166655f004d61696e5f53746174655f636c6f73757265007374675f696e69745f *7265740047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175 *6572795574696c735f7a644c726b35556c69743237375f636c6f73757265006465636f6465446f *75626c657a685f666173740047726170686963737a6952656e646572696e677a694f70656e474c *7a69474c557a694572726f7273496e7465726e616c5f6c6974325f636c6f73757265004748437a *69537461626c655f537461626c655074725f636f6e5f656e7472790047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b61 *576c69743335355f636c6f73757265004748437a69494f426173655f6136395f636c6f73757265 *005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a69436f6d70617269736f6e46756e6374696f6e5f0047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a50346c69 *7431365f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c626163 *6b737a69526567697374726174696f6e5f74686553636176656e6765725f636c6f737572650047 *48437a6948616e646c655f6c766c39335f656e747279004748437a69576f72645f5733327a685f *636f6e5f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726b344b6c69743235395f636c6f73757265005f5f *737467696e69745f47726170686963737a6955497a69474c55547a6957696e646f77007374675f *67635f66756e5f7265740047726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a6948696e74735f7a644c723366576c6974325f636c6f73757265004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c *726a56616c766c3530355f636c6f737572650047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b62556c69743337305f63 *6c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *6951756572795574696c735f7a644c726b61596c766c3735305f636c6f73757265004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f *7a644c726a57736c766c3532355f636c6f73757265007374675f454e445f455843455054494f4e *5f4c4953545f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a6951756572795574696c735f7a644c726b37576c766c3730335f636c6f737572 *650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726b32756c69743232345f636c6f737572650047726170686963737a69 *55497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f4b6579626f *617264557043425f636c6f737572650047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a6951756572795574696c735f7a644c726a556d6c697439385f636c6f7375 *72650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726a536f6c766c3436325f636c6f7375726500466f726569676e7a69 *53746f7261626c655f706f6c797a75706f6b65427974654f6666325f696e666f00676c56657274 *65783366005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a69426c656e64696e67466163746f725f0047726170686963737a6955497a69 *474c55547a6943616c6c6261636b737a6957696e646f775f4b65794631325f636c6f7375726500 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69457874656e73 *696f6e735f67657450726f63416464726573735f636c6f737572650047726170686963737a6955 *497a69474c55547a6954797065735f4c656674427574746f6e5f636c6f73757265004772617068 *6963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f *7a64777a64646d7a6c7a655f656e7472790047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a6948696e74735f7a644c723367386c6974385f636c6f737572650047 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574 *696c735f7a644c726a50776c697432335f636c6f73757265007374675f626c6f636b4173796e63 *457863657074696f6e737a685f7265745f696e666f0047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b34576c69743236 *325f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f4765745061636b434d594b48696e745f636c6f7375726500 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c557a694572726f72 *73496e7465726e616c5f6c6974315f636c6f73757265004748437a694c6973745f7a6477737061 *6e5f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726b366f6c766c3637395f636c6f73757265004748 *437a6953686f775f6c766c31345f636c6f737572650047726170686963737a6955497a69474c55 *547a6954797065735f756e6d61727368616c4d6f757365427574746f6e5f656e7472790072756e *5f71756575655f68640047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726b63616c69743337345f636c6f73757265004748 *437a69494f426173655f6c766c35385f696e666f0047726170686963737a6952656e646572696e *677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c723576506c697431385f *636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f6c766c315f636c6f73757265004748437a69494f426173655f61 *37325f696e666f007374675f61705f7070765f696e666f004748437a6948616e646c655f6d6b53 *746448616e646c655f696e666f0047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a6951756572795574696c735f7a644c726b62736c69743336335f636c6f737572 *650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6943617061 *62696c6974795f7a644c72357a7a466c766c3135395f636c6f737572650047726170686963737a *6955497a69474c55547a69496e697469616c697a7a6174696f6e5f7a64776d61727368616c4469 *73706c61794d6f64655f656e747279004d61696e5f6d61696e5f656e747279004748437a694e75 *6d5f706c7573496e74656765725f696e666f0053797374656d7a69506f7369787a69496e746572 *6e616c735f7a64776363616c6c36375f656e7472790047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b34696c69743235 *325f636c6f73757265005f5f66696e695f61727261795f656e640047726170686963737a695549 *7a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f4469616c734342 *5f7374617469635f656e747279004748437a694572725f756e646566696e65645f696e666f0047 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574 *696c735f7a644c726b30716c69743139325f636c6f737572650047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a536d6c *697436375f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a6951756572795574696c735f7a644c726b63436c69743338315f636c6f73757265 *006765747275736167654040474c4942435f322e3000436f6e74726f6c7a69457863657074696f *6e5f7a644c72324a316c766c31325f656e7472790047726170686963737a6952656e646572696e *677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b38456c766c373134 *5f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a *6957696e646f775f64386f7a0047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a6951756572795574696c735f7a644c726b304d6c766c3539325f636c6f73757265 *00446174617a694c6973745f73756d5f656e7472790047726170686963737a6955497a69474c55 *547a6943616c6c6261636b737a69526567697374726174696f6e5f537061636562616c6c526f74 *61746543425f7374617469635f656e7472790073746172745469636b6572004748437a694e756d *5f6c766c31355f636c6f73757265004748437a6948616e646c655f7769746848616e646c657a75 *7a715f656e747279004748437a69494f426173655f7a647773686f777350726563365f73727464 *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726a55716c697439395f636c6f737572650047726170686963737a695549 *7a69474c55547a6943616c6c6261636b737a6957696e646f775f64386f46007374675f63617463 *685f6672616d655f365f7265740047726170686963737a6955497a69474c55547a6943616c6c62 *61636b737a6957696e646f775f4b65794631315f636c6f73757265004748437a69494f42617365 *5f6136395f656e747279005f5f737467696e69745f47726170686963737a6952656e646572696e *677a694f70656e474c7a69474c7a69506978656c52656374616e676c65737a6952657365740047 *726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f4b65 *79496e736572745f7374617469635f656e74727900676c757443726561746557696e646f77005f *5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a69506978656c52656374616e676c65737a69506978656c4d6170005f5f737467696e69745f *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69466565646261 *636b004748437a6948616e646c655f6c766c39345f656e747279007374675f67635f6c315f696e *666f00616c6c6f63486173685461626c6500786f72496e74656765727a685f6661737400474843 *7a69494f426173655f6c766c35305f656e74727900466f726569676e7a6953746f7261626c655f *5a434453746f7261626c655f636f6e5f696e666f005f5f737467696e69745f4772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a694275666665724f626a656374735f *005f5f737467696e69745f4748437a695765616b005f5f737467696e69745f4772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a69506f696e74506172616d65746572 *5f007374675f73656c5f375f7570645f656e7472790047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a56326c766c3530 *335f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726a524b6c766c3435325f636c6f73757265004772 *6170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f61365f *656e747279004748437a6953686f775f69746f737a715f656e7472790047726170686963737a69 *55497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a644c7233 *48546c766c32365f656e747279006d6d617036344040474c4942435f322e310063616c63416c6c *6f6361746564007374675f696e746572705f636f6e737472355f656e74727900676c7574476574 *4d6f64696669657273005f5f737467696e69745f4748437a6953686f775f004748437a69576561 *6b5f7a647772756e46696e616c697a7a657242617463685f696e666f007374675f696e74656765 *72546f496e743634005f5f737467696e69745f47726170686963737a6955497a69474c55547a69 *4f626a656374730047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f7a644c726b316b6c69743230365f636c6f73757265004748437a *69494f426173655f496e7465727275707465645f636c6f737572650047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a56 *476c766c3531335f636c6f737572650047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a6951756572795574696c735f4765744c696e65536d6f6f746848696e745f *7374617469635f656e7472790047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a6951756572795574696c735f7a644c726a4f716c6974365f636c6f737572650073 *74675f696e7465676572546f576f72643634005f5f737467696e69745f47726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a69546578747572696e677a695465787475 *7265556e6974005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a69436f6c6f7253756d5f0047726170686963737a6952656e646572696e *677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b39306c6974333235 *5f636c6f73757265005f5f737467696e69745f47726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a69506978656c52656374616e676c65737a69486973746f6772616d *004d61696e5f7a6467746f53746174655f636c6f737572650047726170686963737a6955497a69 *474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a64646d7a6c7a6531 *5f636c6f73757265004748437a694c6973745f7a644c723155516c766c31305f656e7472790047 *48437a69494f426173655f6135325f696e666f0047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a69436f6f72645472616e735f7a645753697a7a655f696e666f00 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565727955 *74696c735f7a644c726a57536c69743133375f636c6f7375726500696e7432496e74656765727a *685f66617374007374675f61705f70765f696e666f004748437a69576f72645f7a737a65345f65 *6e747279004748437a69494f426173655f756e73616665506572666f726d494f5f636c6f737572 *650073656c6563744040474c4942435f322e300047726170686963737a6955497a69474c55547a *6943616c6c6261636b737a6957696e646f775f7a644c723877446c766c325f656e747279004772 *6170686963737a6955497a69474c55547a6943616c6c6261636b737a6952656769737472617469 *6f6e5f7265676973746572466f72436c65616e75705f636c6f737572650047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a69457874656e73696f6e735f684f7065 *6e474c7a7567657450726f63416464726573735f636c6f73757265004748437a69494f42617365 *5f496e617070726f707269617465547970655f636c6f73757265004748437a6948616e646c655f *6131385f696e666f004748437a69576f72645f7a64646d73686f775f696e666f005f5f73746769 *6e69745f53797374656d7a69506f7369787a6954797065735f005f5f737467696e69745f474843 *7a69456e756d0053797374656d7a69456e7669726f6e6d656e745f676574417267735f696e666f *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726b36636c766c3637365f636c6f73757265004748437a695765616b5f7a *647772756e46696e616c697a7a657242617463685f636c6f73757265004748437a69494f426173 *655f6c766c35315f696e666f007374675f63746f695f7265745f52316e5f696e666f0044617461 *7a6946696e6974654d61705f706f6c797a7564656c6574654d61785f696e666f00477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a *644c726a53536c697437355f636c6f73757265005f5f737467696e69745f47726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a6952656e6465724d6f64650047726170 *686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f4b65795269 *6768745f7374617469635f696e666f0047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a6951756572795574696c735f7a644c726a51306c766c3432355f636c6f73 *75726500616c6c6f63426c6f636b0047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a69436f6f72645472616e735f53697a7a655f636f6e5f656e74727900477261 *70686963737a6952656e646572696e677a694f70656e474c7a69474c7a6948696e74735f7a644c *723367366c6974375f636c6f7375726500656e6c61726765537461626c655074725461626c6500 *7374675f73656c5f365f7570645f696e666f007374675f696e743634546f576f72643634004748 *437a694e756d5f7a7a65726f496e74656765725f636c6f737572650047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a59 *366c69743135365f636c6f737572650047726170686963737a6955497a69474c55547a6943616c *6c6261636b737a6957696e646f775f6d616b65446973706c617943616c6c6261636b5f696e666f *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f636c6970506c616e65496e646578546f456e756d5f656e747279007374675f696e *746572705f636f6e737472365f656e747279004748437a69494f426173655f54696d6545787069 *7265645f7374617469635f656e7472790047726170686963737a6955497a69474c55547a694361 *6c6c6261636b737a69526567697374726174696f6e5f43616c6c6261636b49445f737461746963 *5f696e666f004748437a6953686f775f69746f735f656e7472790047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a5732 *6c69743132345f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c *6261636b737a69526567697374726174696f6e5f7a644c7248316d616b6554696d657243616c6c *6261636b5f656e747279007374675f73656c5f395f7570645f656e747279006672656548617368 *5461626c65004748437a69426173655f4c545f636c6f73757265004748437a69426173655f6c76 *6c375f696e666f0047726170686963737a6955497a69474c55547a6943616c6c6261636b737a69 *57696e646f775f4b657946335f7374617469635f656e747279005f5f737467696e69745f477261 *70686963737a6952656e646572696e677a694f70656e474c7a69474c557a694d61747269780047 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574 *696c735f7a644c726a58346c69743134305f636c6f73757265007374675f67635f756e62785f72 *315f696e666f007374675f494e445f696e666f0047726170686963737a6955497a69474c55547a *6943616c6c6261636b737a6957696e646f775f7a644c725872756e6d61727368616c5370656369 *616c4b65795f656e747279004748437a69576f72645f577a685f636f6e5f656e74727900474843 *7a694e756d5f5a43444e756d5f7374617469635f656e7472790047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c7235767a7a *6c697431345f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a6951756572795574696c735f7a644c726b38476c69743332305f636c6f737572 *650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6943617061 *62696c6974795f7a64776d616b654361706162696c6974795f656e747279004748437a69426173 *655f547275655f636c6f73757265007374675f61705f707070707070705f696e666f005f5f7374 *67696e69745f546578747a6953686f770047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a69457874656e73696f6e735f684f70656e474c7a7567657450726f6341 *6464726573735f656e747279004748437a69494f426173655f496e76616c6964417267756d656e *745f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b73 *7a69526567697374726174696f6e5f57696e646f7753746174757343425f7374617469635f656e *747279005f5f737467696e69745f446174617a6941727261795f007374726572726f724040474c *4942435f322e300047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f7a644c726a596d6c69743136305f636c6f73757265004748437a *69494f426173655f6134345f636c6f737572650047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6948696e74735f4e69636573745f7374617469635f696e666f00 *4748437a69494f426173655f6c766c35375f636c6f737572650047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f476574506f6c7967 *6f6e536d6f6f746848696e745f7374617469635f656e747279007274735f6170706c79005f5f73 *7467696e69745f466f726569676e7a694d61727368616c7a694572726f72005f5f737467696e69 *745f436f6e74726f6c7a69457863657074696f6e5f005f5f64736f5f68616e646c65004748437a *6953686f775f6c766c31335f696e666f004748437a69494f426173655f6137385f636c6f737572 *650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f77 *5f7a644c723878506139345f696e666f007374675f494e445f6469726563745f696e666f007472 *795075744d5661727a685f666173740047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a6951756572795574696c735f7a644c726b35596c69743237385f636c6f73 *757265005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a69546578747572696e675f004748437a69426173655f547275655f7374617469 *635f696e666f007374675f6e6f7436340047726170686963737a6955497a69474c55547a694361 *6c6c6261636b737a69526567697374726174696f6e5f43726f7373696e6743425f737461746963 *5f696e666f005f5f737467696e69745f436f6e74726f6c7a69457863657074696f6e0047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726a526d6c766c3434365f636c6f73757265007374675f67635f67656e5f6870004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c735f476574506f696e74536d6f6f746848696e745f7374617469635f696e666f004748437a69 *494f426173655f7a644c7236616d6134395f656e747279004748437a69494f426173655f746872 *6f775f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a6951756572795574696c735f7a644c726b33536c766c3634305f636c6f73757265005f *5f737467696e69745f47726170686963737a6955497a69474c55547a69466f6e7473004748437a *694572725f756e74616e676c655f636c6f73757265004748437a69576f72645f7a70335f656e74 *72790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726b39656c766c3732335f636c6f7375726500466f726569676e7a69 *53746f7261626c655f706f6c797a757065656b427974654f6666325f656e747279004748437a69 *494f426173655f494f4572726f725f7374617469635f656e747279004748437a69496e745f4933 *327a685f7374617469635f656e747279007374675f73656c5f325f6e6f7570645f656e74727900 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69457874656e73 *696f6e735f6c766c315f696e666f0068735f657869740053797374656d7a69456e7669726f6e6d *656e745f676f325f696e666f005f5f737467696e69745f47726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a69466c75736846696e69736800446174617a6946696e69 *74654d61705f64656c46726f6d464d5f636c6f73757265004748437a6948616e646c655f7a6477 *666c75736857726974654275666665725f656e74727900446174617a6946696e6974654d61705f *7a644c723368706c766c31385f696e666f005f5f737467696e69745f446174617a69426f6f6c00 *4748437a69494f426173655f6c766c34355f636c6f73757265004748437a6948616e646c655f7a *647777726974655261774275666665725f656e7472790047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a524d6c697435 *385f636c6f73757265005f737467417373657274004748437a6948616e646c655f6c766c32335f *696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951 *756572795574696c735f7a644c726a57386c766c3532305f636c6f7375726500776f726432496e *74656765727a685f666173740047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a6951756572795574696c735f7a644c726b616d6c69743334365f636c6f73757265 *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726b39416c69743333345f636c6f737572650047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a53 *416c766c3436355f636c6f73757265004748437a69494f426173655f50726f746f636f6c457272 *6f725f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a6951756572795574696c735f7a644c726b30536c69743139395f636c6f737572650043 *6f6e74726f6c7a69457863657074696f6e5f7a644c72324a396b5f656e74727900477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a69566572746578537065635f7a *644c72616a5a5a6c766c34325f636c6f73757265005f5f6c6962635f6373755f66696e69004748 *437a69426173655f5a43444f72645f636f6e5f656e7472790047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b61716c69 *743334375f636c6f7375726500616e64496e74656765727a685f66617374004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c *726b62716c766c3735375f636c6f73757265004748437a694572725f6c766c395f696e666f0047 *726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f4b65 *795061676555705f7374617469635f656e74727900676c757447657457696e646f770047726170 *686963737a6955497a69474c55547a6954797065735f576865656c55705f7374617469635f696e *666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726b38436c69743331395f636c6f7375726500746373657461747472 *4040474c4942435f322e300047726170686963737a6955497a69474c55547a6943616c6c626163 *6b737a69526567697374726174696f6e5f4d6f74696f6e43425f7374617469635f696e666f0047 *726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f7a64 *4c72574e676c75745370656369616c557046756e635f656e7472790047726170686963737a6955 *497a69474c55547a6943616c6c6261636b737a6957696e646f775f4b657946345f737461746963 *5f696e666f005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a69446973706c61794c697374730053797374656d7a69456e7669726f6e6d *656e745f67657450726f674e616d655f736c6f77004748437a6953686f775f61315f636c6f7375 *726500737461745f656e64496e69740047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a6951756572795574696c735f7a644c726b38326c69743331305f636c6f73 *7572650066726565436861696e004748437a69494f426173655f577269746548616e646c655f73 *74617469635f656e747279004748437a69576f72645f7a737a65345f636c6f7375726500474843 *7a695074725f46756e5074725f7374617469635f696e666f0073746746726565005f5f73746769 *6e69745f4748437a69496e745f007374675f73656c5f345f6e6f7570645f696e666f007374675f *71756f74496e7436340047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a694361706162696c6974795f7a644c723577506c766c3131355f636c6f73757265005f5f *737467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a69546578747572696e677a69506172616d65746572730047726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c7a6951756572795574696c735f6d61727368616c476574 *504e616d655f656e747279004748437a69494f426173655f6c766c34385f696e666f0047726170 *686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f5370656369 *616c4b65795f636f6e5f696e666f005a434d61696e5f6d61696e5f696e666f005f5f737467696e *69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a694c696e *655365676d656e74735f007365746c6f63616c654040474c4942435f322e30005f5f737467696e *69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69506f6c *79676f6e730047726170686963737a6955497a69474c55547a6943616c6c6261636b737a695265 *67697374726174696f6e5f7a64646d7a6c315f656e747279004748437a69494f426173655f7a64 *7773686f777350726563365f636c6f737572650047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a564f6c766c3531355f *636c6f73757265004748437a69426173655f45515f7374617469635f696e666f00477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a *644c7235794e6c697436345f636c6f73757265004748437a6953686f775f6c766c31365f636c6f *737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951 *756572795574696c735f7a644c726b624f6c766c3736335f636c6f737572650047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a6953746174655661725f53746174 *655661725f7374617469635f696e666f0047726170686963737a6955497a69474c55547a694361 *6c6c6261636b737a69526567697374726174696f6e5f446973706c617943425f7374617469635f *696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c557a69 *4572726f7273496e7465726e616c5f7265636f72644572726f72436f64655f656e747279004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c735f7a644c726b30496c766c3539315f636c6f737572650047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a59556c76 *6c3536335f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a6951756572795574696c735f7a644c726a57306c766c3531385f636c6f73757265 *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726a51796c697433395f636c6f737572650047726170686963737a695549 *7a69474c55547a6954797065735f4c656674427574746f6e5f7374617469635f656e7472790047 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574 *696c735f7a644c726b62636c69743335395f636c6f737572650047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b334b6c *766c3633385f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c62 *61636b737a6957696e646f775f5370656369616c4b65795f7374617469635f696e666f0077616b *655570536c656570696e67546872656164730047726170686963737a6955497a69474c55547a69 *54797065735f7a644c72326a776c766c5f656e7472790047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b304b6c697431 *39375f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b *737a6957696e646f775f4b657946375f7374617469635f696e666f007374675f73746f705f7468 *726561645f696e666f0072756e5f71756575655f746c00676c7550657273706563746976650047 *48437a69496e745f4931367a685f7374617469635f656e7472790047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b3359 *6c69743234375f636c6f73757265005f5f737467696e69745f47726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a69466163655f004748437a69494f426173655f6134 *345f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f7a644c726a58496c69743135305f636c6f737572650047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726a596b6c766c3535345f636c6f73757265004d61696e5f66315f656e747279006578 *69745363686564756c65720047726170686963737a6952656e646572696e677a694f70656e474c *7a69474c7a6951756572795574696c735f7a644c726a50536c766c3432335f636c6f7375726500 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565727955 *74696c735f7a6477636c6970506c616e65496e646578546f456e756d5f696e666f004772617068 *6963737a6955497a69474c55547a69496e697469616c697a7a6174696f6e5f7a64776c676f5f63 *6c6f7375726500446174617a6946696e6974654d61705f7a644c723367526c766c315f636c6f73 *7572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e64 *6f775f756e6d61727368616c4b657953746174655f696e666f006973466c6f61744e6567617469 *76655a65726f005f5f737467696e69745f47726170686963737a6955497a69474c55547a694761 *6d654d6f64650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *694361706162696c6974795f7a644c7235766a6c697431305f636c6f7375726500676c44697361 *626c65007374675f46554c4c5f4d5641525f696e666f00737461626c655f7074725f7461626c65 *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726a516d6c697433365f636c6f737572650047726170686963737a695549 *7a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a644c72334856 *6c766c32375f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c *7a69474c7a69566572746578537065635f436f6c6f72345f7374617469635f656e747279004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c735f7a644c726a514f6c697434335f636c6f73757265004748437a69494f426173655f4d5661 *725f7374617469635f696e666f0047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a6951756572795574696c735f7a644c726b61516c766c3734385f636c6f737572 *65004748437a69576f72645f7a6477746f496e7465676572315f656e7472790047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a64 *4c726b37716c766c3639355f636c6f737572650047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a57416c766c3532375f *636c6f73757265004748437a69494f426173655f48616e646c657a757a755f636f6e5f696e666f *0047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6952656769737472 *6174696f6e5f7a644c7248316d616b6554696d657243616c6c6261636b5f636c6f737572650047 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574 *696c735f7a644c726b306f6c766c3538365f636c6f737572650047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c723578396c *766c3132305f636c6f73757265004748437a69494f426173655f4275666665725f737461746963 *5f696e666f005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a69457863657074696f6e5f007374675f6e6567617465496e743634004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c735f7a644c726b34476c69743235385f636c6f737572650047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b614f6c69 *743335335f636c6f73757265006d6b466f726569676e4f626a7a685f6661737400477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f47 *65744c696e65536d6f6f746848696e745f7374617469635f696e666f007374675f5745414b5f69 *6e666f007374675f4d55545f5641525f696e666f004748437a69494f426173655f6c766c35365f *636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f7a644c726a5a5a6d6c766c3537305f636c6f7375726500474843 *5f5a434343616c6c61626c655f7374617469635f696e666f00446174617a6946696e6974654d61 *705f7a644c723368316c766c365f656e7472790047726170686963737a6955497a69474c55547a *6943616c6c6261636b737a69526567697374726174696f6e5f7a64646d7a67315f636c6f737572 *65004748437a69537461626c655f537461626c655074725f7374617469635f656e747279004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c69 *74795f7a644c7235764a6c766c39385f636c6f7375726500436f6e74726f6c7a69457863657074 *696f6e5f756e636175676874457863657074696f6e48616e646c65725f656e7472790047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726a53776c766c3436345f636c6f737572650047726170686963737a6955497a69474c *55547a6943616c6c6261636b737a69526567697374726174696f6e5f427574746f6e426f784342 *5f7374617469635f656e7472790047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a6951756572795574696c735f7a644c726b61696c69743334355f636c6f737572 *65005f5f6572726e6f5f6c6f636174696f6e4040474c4942435f322e30007374675f67635f766f *69645f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f7a644c726a58476c766c3534345f636c6f737572650047726170 *686963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e *5f7a644c72334556615f636c6f73757265005f5f737467696e69745f47726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a69546578747572696e677a694170706c6963 *6174696f6e004748437a694572725f6572726f725f636c6f7375726500676c4d61747269784d6f *6465005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a69436f6f72645472616e730047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a69426567696e456e645f6c766c335f656e747279005f5f737467696e *69745f4748437a69546f7048616e646c65720047726170686963737a6955497a69474c55547a69 *43616c6c6261636b737a6957696e646f775f756e6d61727368616c4b657953746174655f656e74 *72790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69436170 *6162696c6974795f7a644c723576486c697431365f636c6f737572650047726170686963737a69 *55497a69474c55547a6943616c6c6261636b737a6957696e646f775f4b6579456e645f73746174 *69635f696e666f004748437a69494f426173655f6135325f656e747279005f5f737467696e6974 *5f466f726569676e7a694d61727368616c7a69416c6c6f630047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c7235776c6c69 *7432365f636c6f73757265005f5f737467696e69745f47726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a69546578747572696e677a6953706563696669636174696f *6e004f6e45786974486f6f6b0047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a6951756572795574696c735f7a644c726a4f456c766c3430345f636c6f73757265 *005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a69546578747572696e677a6954657874757265546172676574007274735f6d6b576f72 *643136006f6c646573745f67656e0047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a694361706162696c6974795f7a644c7235764c6c697431375f636c6f737572 *650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726b38386c766c3730365f636c6f737572650047726170686963737a69 *55497a69474c55547a6943616c6c6261636b737a6957696e646f775f7a644c7257526d616b6553 *70656369616c43616c6c6261636b5f696e666f0047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a57516c766c3533315f *636c6f73757265004748437a694572725f6c766c365f636c6f737572650047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c72 *6a50696c766c3431345f636c6f737572650073687574646f776e4861736b656c6c416e64457869 *7400446174617a6946696e6974654d61705f7a6477676c756542616c5f656e7472790063726561 *7465546872656164005f5f756d6f64646933004748437a69494f426173655f6c766c35315f656e *747279005f5f737467696e69745f446174617a6946696e6974654d61705f004748437a69494f42 *6173655f6136375f696e666f0047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a694361706162696c6974795f7a644c7235774c6c766c3131345f636c6f73757265 *004748437a6953746f7261626c655f726561645074724f66665074725f656e747279005f5f7374 *67696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *546578747572696e670047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726b37516c69743330375f636c6f73757265005f5f *737467696e69745f47726170686963737a6955497a69474c55547a69496e697469616c697a7a61 *74696f6e0047726170686963737a6955497a69474c55547a6943616c6c6261636b737a69526567 *697374726174696f6e5f427574746f6e426f7843425f7374617469635f696e666f004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c557a694572726f7273496e7465 *726e616c5f7468655265636f726465644572726f72735f696e666f0047726170686963737a6955 *497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a644c724831 *6d616b6554696d657243616c6c6261636b5f696e666f0047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a4f576c697431 *345f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726b384f6c69743332325f636c6f73757265004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c735f7a644c726a56636c69743131315f636c6f737572650047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a69466f675f61335f636c6f73757265004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6953746174655661725f5374 *6174655661725f7374617469635f656e7472790047726170686963737a6955497a69474c55547a *6943616c6c6261636b737a6957696e646f775f6138385f656e747279007374675f64756d6d795f *7265745f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c *7a69474c7a6951756572795574696c735f7a644c726a59636c766c3535325f636c6f7375726500 *4748437a695074725f46756e5074725f7374617469635f656e7472790047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a *52616c766c3434335f636c6f73757265005f5f737467696e69745f47726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a69426c656e64696e67466163746f72005f5f73 *7467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *6953656c656374696f6e5f0047726170686963737a6955497a69474c55547a6943616c6c626163 *6b737a69526567697374726174696f6e5f43616c6c6261636b49445f7374617469635f656e7472 *79006973446f75626c65496e66696e6974650047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b63676c766c3737305f63 *6c6f73757265007374675f61705f325f7570645f656e747279007374675f6e6f666f726365494f *5f726574004748437a6953545265665f53545265665f636f6e5f696e666f004748437a69494f42 *6173655f7a647773686f777350726563345f696e666f0047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b62676c697433 *36305f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a694361706162696c6974795f7a644c723575506c766c38345f636c6f73757265004748 *437a695074725f5074725f636f6e5f696e666f004748437a69494f426173655f54696d65457870 *697265645f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261 *636b737a6957696e646f775f64386f4a006e65774d75745661727a685f66617374004748437a69 *494f426173655f6c766c34375f696e666f007374675f63617463685f6672616d655f325f726574 *007274735f6576616c537461626c65494f004748437a6948616e646c655f6c766c37345f656e74 *7279004748437a694e756d5f6c766c365f636c6f73757265007374675f7570645f6672616d655f *696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951 *756572795574696c735f7a644c726a4f756c6974375f636c6f73757265004748437a6948616e64 *6c655f7a647777726974655261774275666665725f696e666f0047726170686963737a6955497a *69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f5461626c65744275 *74746f6e43425f7374617469635f696e666f0072656d6f76655468726561644c6162656c004772 *6170686963737a6955497a69474c55547a6943616c6c6261636b737a6952656769737472617469 *6f6e5f7a64777a64646d7a6c7a655f696e666f004748437a6948616e646c655f6c766c35375f65 *6e747279007374675f67635f6431005f5f75646976646933007374675f72657475726e546f5374 *61636b546f70007374675f63617463685f6672616d655f355f72657400466f726569676e7a694d *61727368616c7a6941727261795f7a64777065656b41727261795f636c6f737572650047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726a59736c766c3535365f636c6f73757265005f5f737467696e69745f477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a69546578747572696e677a6954 *657874757265556e69745f0047726170686963737a6955497a69474c55547a6943616c6c626163 *6b737a6957696e646f775f7a644c7257526d616b655370656369616c43616c6c6261636b5f656e *747279004748437a69494f426173655f6137325f636c6f73757265007374675f61705f645f696e *666f007365744e6f6e426c6f636b696e67466400626c6f636b4173796e63457863657074696f6e *737a685f666173740047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a6951756572795574696c735f7a644c726b35776c69743237315f636c6f7375726500477261 *70686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974 *795f7a644c723579316c697435325f636c6f737572650053797374656d7a69506f7369787a6949 *6e7465726e616c735f7a64776363616c6c36365f696e666f004748437a69576f72645f7a74335f *636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f7a644c726a55796c69743130315f636c6f7375726500466f7265 *69676e7a69437a69537472696e675f7a64777065656b4341537472696e675f656e747279004748 *437a694e756d5f4a7a685f7374617469635f656e7472790047726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a54556c6974 *39315f636c6f7375726500436f6e74726f6c7a69457863657074696f6e5f7a644c72324942615f *636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f7a644c726a58736c69743134365f636c6f73757265005f5f7374 *67696e69745f446174617a69496e745f006973446f75626c654e614e004748437a694e756d5f6a *746f737a715f696e666f005f5f737467696e69745f47726170686963737a6952656e646572696e *677a694f70656e474c7a69474c7a69537472696e67517565726965735f0047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c72 *6a56536c766c3531365f636c6f737572650047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a694361706162696c6974795f7a644c7235754e6c6974325f636c6f73 *75726500446174617a6946696e6974654d61705f7a6477676c756542616c5f696e666f00477261 *70686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c *735f636c6970506c616e65496e646578546f456e756d5f636c6f73757265007374675f61705f70 *765f72657400466f726569676e7a69437a694572726f725f6572726e6f546f494f4572726f725f *656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *51756572795574696c735f7a644c726b354b6c766c3636395f636c6f73757265005f5f73746769 *6e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695069 *78656c52656374616e676c65737a69506978656c53746f726167655f004748437a69494f426173 *655f6c766c36305f636c6f7375726500446174617a6946696e6974654d61705f616464546f464d *7a75435f636c6f73757265005f5f737467696e69745f4748437a69496e74004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a69426173696354797065735f446973 *61626c65645f7374617469635f696e666f00616c6c6f634e75727365727900436f6e74726f6c7a *69457863657074696f6e5f7a644c72324a6264735f736c6f770047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a55616c *697439355f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261 *636b737a6957696e646f775f4d6f646966696572735f636f6e5f656e7472790047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f4765 *745061636b434d594b48696e745f7374617469635f696e666f0047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a57556c *766c3533325f636c6f73757265005f5f676d707a5f676364004748437a69494f426173655f7a64 *4c7236616b6134385f696e666f0047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a6951756572795574696c735f7a644c726a51776c766c3433335f636c6f737572 *650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f77 *5f4d6f646966696572735f7374617469635f656e7472790047726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b30736c766c *3538375f636c6f73757265004748437a69576f72645f5736347a685f7374617469635f696e666f *004748437a69466c6f61745f467a685f7374617469635f656e7472790047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b *37496c69743330355f636c6f737572650047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a6951756572795574696c735f7a644c726b33516c69743234355f636c6f *737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6943 *61706162696c6974795f7a644c723579706c697435385f636c6f73757265004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c *7235777a7a6c766c3131315f636c6f7375726500446174617a695475706c655f5a32545f636f6e *5f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *6951756572795574696c735f7a644c726a54656c766c3437355f636c6f73757265004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f *7a644c72357a7a446c697437375f636c6f737572650047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a53756c69743639 *5f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a6951756572795574696c735f7a644c726a54696c766c3437365f636c6f7375726500477261 *70686963737a6952656e646572696e677a694f70656e474c7a69474c7a69566572746578537065 *635f436f6c6f72345f7374617469635f696e666f004748437a694c6973745f7a644c723155516c *766c31305f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726b31696c766c3630305f636c6f73757265007374 *61745f73746172744743004748437a69426173655f5a435f7374617469635f696e666f00737467 *5f73656c5f325f7570645f696e666f0047726170686963737a6955497a69474c55547a6943616c *6c6261636b737a69526567697374726174696f6e5f7a64777a64646d7a6c5f696e666f00727473 *5f676574436861720047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a6951756572795574696c735f7a644c726b33306c69743233325f636c6f7375726500474843 *7a69426173655f5a437a745a435f636f6e5f696e666f007374675f73656c5f31335f7570645f65 *6e747279005f5f676d707a5f6d756c005f696e69740047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b36456c766c3638 *335f636c6f73757265005f5f737467696e69745f47726170686963737a6955497a69474c55547a *694f7665726c61795f0047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726b34516c766c3635355f636c6f73757265004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c735f7a644c726a52536c766c3435345f636c6f73757265004748437a69494f426173655f6136 *385f656e747279005f5f737467696e69745f546578747a69526561647a694c65780070726f675f *61726763004748437a6948616e646c655f6765744275666665725f696e666f005f5f737467696e *69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69494f53 *74617465007374675f756e636865636b65645368696674524c3634007772697465457272537472 *696e675f5f00676c56696577706f72740070656e64696e675f68616e646c65725f627566007374 *675f6c74496e7436340047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726a524f6c766c3435335f636c6f73757265004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c735f7a644c726b31716c766c3630325f636c6f73757265004748437a69426173655f756e7061 *636b43537472696e67557466387a685f656e7472790047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b38366c69743331 *315f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726a51596c766c3434305f636c6f73757265004748 *437a69494f426173655f46696c6548616e646c655f636f6e5f696e666f004748437a6948616e64 *6c655f696f657a756e6f745772697461626c655f656e7472790047726170686963737a6955497a *69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a64777a64646d7a *677a655f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726b62756c766c3735385f636c6f73757265007265 *73756d65546872656164005f5f737467696e69745f4748437a695074725f004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c *723577356c697432325f636c6f73757265005f5f737467696e69745f47726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a69506f6c79676f6e4d6f64655f0047726170 *686963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e *5f7a644c72334a316c766c32385f696e666f004748437a69494f426173655f7a6457494f5f696e *666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726b61796c69743334395f636c6f73757265004748437a69494f4261 *73655f4275666665724c6973744e696c5f636c6f73757265004748437a69576f72645f73686f77 *7350726563335f636c6f737572650047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a694361706162696c6974795f7a644c723576396c766c38395f636c6f737572 *65004d61696e5f6d61696e5f737274640047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a695072696d69746976654d6f64655f7a64776d61727368616c5072696d *69746976654d6f64655f696e666f004748437a69494f426173655f6135335f636c6f7375726500 *4748437a6953746f7261626c655f77726974655074724f66665074725f636c6f73757265004748 *437a69494f426173655f4e6f537563685468696e675f636c6f737572650047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c72 *6a58516c69743135325f636c6f737572650047726170686963737a6955497a69474c55547a6943 *616c6c6261636b737a69526567697374726174696f6e5f746865436c65616e75704c6973745f69 *6e666f0047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6952656769 *7374726174696f6e5f5265736861706543425f7374617469635f656e747279006672656547726f *757000676c426567696e006973466c6f6174496e66696e697465004748437a694c6973745f7a64 *4c723155516c766c31305f636c6f737572650047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a54616c766c3437345f63 *6c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *6951756572795574696c735f7a644c726a51636c766c3432385f636c6f73757265004748437a69 *494f426173655f6c766c36315f656e7472790047726170686963737a6955497a69474c55547a69 *43616c6c6261636b737a6957696e646f775f4b6579456e645f636c6f73757265004748437a6953 *686f775f69746f737a715f636c6f737572650047726170686963737a6955497a69474c55547a69 *54797065735f4d6964646c65427574746f6e5f7374617469635f656e74727900466f726569676e *7a69437a694572726f725f7a644c723257747a64776363616c6c5f636c6f73757265005f5f7374 *67696e69745f446174617a694c6973740047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a6951756572795574696c735f7a644c726b314b6c766c3630375f636c6f *737572650061776169744576656e74004748437a694e756d5f6a746f735f656e74727900474843 *7a69426173655f7a644c7232694f6c766c365f656e747279004748437a69494f426173655f5772 *6974654275666665725f7374617469635f656e7472790047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c557a694572726f7273496e7465726e616c5f7a644c723369 *6e6c766c32305f736c6f770047726170686963737a6952656e646572696e677a694f70656e474c *7a69474c7a694361706162696c6974795f7a644c7235755a5a6c6974355f636c6f73757265005f *5f737467696e69745f4748437a695354526566005f5f737467696e69745f47726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a69446174615479706500466f72656967 *6e7a694d61727368616c7a6941727261795f7769746841727261794c656e305f636c6f73757265 *0072657365744e6f6e426c6f636b696e674664007374675f73656c5f31335f6e6f7570645f656e *7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175 *6572795574696c735f7a644c726a506b6c697432305f636c6f737572650047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c72 *6b384b6c69743332315f636c6f7375726500616c6c6f635f48700047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c72357646 *6c766c39375f636c6f73757265007374675f42434f5f696e666f005f5f737467696e69745f4772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695665727465785370 *65635f004748437a6953686f775f69746f737a715f696e666f00466f726569676e7a6953746f72 *61626c655f706f6c797a757065656b427974654f6666325f696e666f0047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b *38656c69743331335f636c6f73757265004748437a694e756d5f7a6c5f696e666f00446174617a *6946696e6974654d61705f7a64776d6b42616c4272616e63685f696e666f0053797374656d7a69 *506f7369787a69496e7465726e616c735f7a64776363616c6c36365f736c6f77004748437a6954 *6f7048616e646c65725f7a644c723153346c766c5f696e666f0047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a514d6c *766c3433375f636c6f73757265005f5f737467696e69745f446174617a694d617962655f004748 *437a69494f426173655f6c766c35335f696e666f006d616c6c6f634040474c4942435f322e3000 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565727955 *74696c735f7a644c726b616b6c766c3734305f636c6f737572650047726170686963737a695549 *7a69474c55547a6943616c6c6261636b737a6957696e646f775f4b657950616765446f776e5f73 *74617469635f656e747279005f5f737467696e69745f47726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a69546578747572696e677a69456e7669726f6e6d656e7473 *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162 *696c6974795f7a644c723576766c697431335f636c6f737572650047726170686963737a695549 *7a69474c55547a69496e697469616c697a7a6174696f6e5f7a64776d61727368616c446973706c *61794d6f64655f636c6f73757265007374675f4341465f424c41434b484f4c455f696e666f0047 *726170686963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174 *696f6e5f4f7665726c6179446973706c617943425f7374617469635f656e747279004d61696e5f *7a646766726f6d53746174655f656e747279007374675f73656c5f31345f7570645f656e747279 *007374675f786f72363400636f6d706c656d656e74496e74656765727a685f6661737400477261 *70686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c *735f7a644c726a51386c766c3432375f636c6f737572650047726170686963737a6955497a6947 *4c55547a6943616c6c6261636b737a6957696e646f775f7a644c72574c6d616b654d6f75736543 *616c6c6261636b5f696e666f0047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a6948696e74735f4e69636573745f636c6f73757265004748437a69576f72645f7a *74335f696e666f005f5f737467696e69745f47726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a69457874656e73696f6e73007374675f616e643634004748437a6949 *4f426173655f494f4572726f725f636f6e5f656e7472790047726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b38636c766c *3730375f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c *7a69474c7a6951756572795574696c735f7a644c726a5a5a796c766c3537335f636c6f73757265 *004748437a69494f426173655f577269746548616e646c655f7374617469635f696e666f004748 *437a695074725f5074725f636f6e5f656e7472790047726170686963737a6952656e646572696e *677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c723579396c697435345f *636c6f73757265004748437a694e756d5f4a7a685f636f6e5f656e747279004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c *726a51476c697434315f636c6f737572650047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a6951756572795574696c735f7a644c726a53596c766c3437315f636c *6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *4361706162696c6974795f7a644c7235776a6c766c3130375f636c6f73757265004d61696e5f66 *335f696e666f0047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6952 *6567697374726174696f6e5f5370656369616c43425f636c6f7375726500737461636b4f766572 *666c6f77004748437a694e756d5f6c69745f656e747279004748437a694572725f615f636c6f73 *7572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361 *706162696c6974795f7a644c723576586c697432305f636c6f737572650047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a69426567696e456e645f72656e646572 *5072696d69746976655f656e74727900726573697a654e757273657279004748437a6948616e64 *6c655f6c766c32365f696e666f004748437a694c6973745f7a644c723155536c766c31315f696e *666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69436170 *6162696c6974795f7a644c723578686c766c3132325f636c6f73757265007374675f626c6f636b *5f6e6f72656773004748437a695765616b5f72756e46696e616c697a7a657242617463685f696e *666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726b374f6c766c3730315f636c6f737572650047726170686963737a *6955497a69474c55547a6957696e646f775f676c757443726561746557696e646f775f656e7472 *79005f5f737467696e69745f53797374656d7a69506f7369787a69496e7465726e616c73005f5f *737467696e69745f466f726569676e7a694d61727368616c7a694572726f725f00477261706869 *63737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f4b6579446f776e *5f7374617469635f696e666f0053746752657475726e0047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f6c766c5f636c6f73757265 *00446174617a6946696e6974654d61705f456d707479464d5f636c6f73757265004748437a6942 *6173655f666f6c64725f696e666f007374675f67635f64315f726574004748437a694c6973745f *7370616e5f656e74727900446174617a6946696e6974654d61705f7a647766696e644d696e5f65 *6e747279005f5f737467696e69745f446174617a69426974730047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a514b6c *697434325f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a694361706162696c6974795f7a644c723576356c766c38385f636c6f7375726500 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565727955 *74696c735f7a644c726b62536c766c3736345f636c6f73757265005f5f737467696e69745f4772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695065656b506f6b65 *004748437a6948616e646c655f64735f696e666f0053797374656d7a69457869745f6c766c315f *656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *51756572795574696c735f7a644c726a52776c697435345f636c6f737572650072616973657a68 *5f66617374005a434d61696e5f6d61696e5f736c6f770067656e65726174696f6e73004748437a *69494f426173655f7a647773686f777350726563365f696e666f004748437a69494f426173655f *526561644275666665725f7374617469635f696e666f006d756e6d61704040474c4942435f322e *300047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726a52576c766c3435355f636c6f73757265004748437a69576f72645f *57387a685f636f6e5f656e747279004748437a69494f426173655f7a6457494f5f636c6f737572 *650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f77 *5f4b657946355f636c6f737572650047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a694361706162696c6974795f7a644c72357a7a376c697436395f636c6f7375 *72650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726b32556c766c3632355f636c6f73757265004748437a6948616e64 *6c655f696f657a75636c6f73656448616e646c655f656e7472790047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b3467 *6c766c3634365f636c6f73757265007374675f7570645f6672616d655f325f7265740047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c697479 *5f7a644c72357a7a586c697438325f636c6f737572650047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a50496c697432 *365f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726b36676c766c3637375f636c6f73757265007374 *675f494e445f4f4c4447454e5f5045524d5f696e666f0047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b61756c697433 *34385f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b *737a6957696e646f775f4b6579456e645f7374617469635f656e747279005f5f737467696e6974 *5f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69506978656c *466f726d61745f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f7a644c726b38496c766c3731355f636c6f73757265005f5f7374 *67696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *546578747572696e677a69546578506172616d657465720047726170686963737a6955497a6947 *4c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a64646d6d6178315f63 *6c6f73757265007374675f5041505f656e7472790047726170686963737a6955497a69474c5554 *7a6943616c6c6261636b737a69526567697374726174696f6e5f4d6f75736543425f7374617469 *635f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f7a644c726b36306c766c3637335f636c6f737572650047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a695072696d69746976654d *6f64655f7a64776d61727368616c5072696d69746976654d6f64655f636c6f7375726500477261 *70686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974 *795f7a644c723577686c697432355f636c6f737572650047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6948696e74735f7a644c723367616c766c31305f636c6f *737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a69526567 *697374726174696f6e5f7a644c72334556615f656e7472790047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b364d6c76 *6c3638355f636c6f73757265004748437a694c6973745f7a644c723155656c766c5f656e747279 *004748437a69494f426173655f426c6f636b65644f6e446561644d5661725f636c6f7375726500 *7274735f676574576f72643634004748437a6948616e646c655f696f657a756e6f745772697461 *626c655f696e666f004748437a69576f72645f5736347a685f7374617469635f656e7472790047 *48437a69496e745f7a64777a657a655f636c6f73757265004748437a69576f72645f7a64776672 *6f6d496e7465676572335f656e747279004748437a69494f426173655f6c766c34395f696e666f *006d656d6d6f76654040474c4942435f322e30004748437a6953686f775f6c766c31335f636c6f *737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a69526567 *697374726174696f6e5f643343560047726170686963737a6955497a69474c55547a6943616c6c *6261636b737a69526567697374726174696f6e5f43726f7373696e6743425f636c6f7375726500 *4748437a694c6973745f706f6c797a757265765f636c6f73757265007374675f454e445f54534f *5f51554555455f696e666f004748437a69494f426173655f7a644c723661716135315f656e7472 *790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726a564b6c766c3531345f636c6f737572650047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a *4f346c766c3339355f636c6f73757265004748437a6948616e646c655f6c766c39335f696e666f *004748437a69546f7048616e646c65725f7a644c723153636c766c325f696e666f004748437a69 *426173655f5a437a745a435f636f6e5f656e7472790047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c723577786c69743239 *5f636c6f7375726500446174617a695475706c655f5a32545f636f6e5f696e666f004748437a69 *48616e646c655f6c766c37355f636c6f7375726500466f726569676e7a6953746f7261626c655f *5a434453746f7261626c655f636f6e5f656e7472790047726170686963737a6955497a69474c55 *547a6943616c6c6261636b737a6957696e646f775f64386f470047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a54476c *766c3438325f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a6951756572795574696c735f7a644c726a59386c766c3535315f636c6f737572 *650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726a54326c766c3437325f636c6f7375726500466f726569676e7a694d *61727368616c7a695574696c735f776974684d616e795f696e666f0047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a53 *736c766c3436335f636c6f73757265004748437a69494f426173655f6137305f656e7472790072 *657375727265637465645f74687265616473004748437a69494f426173655f6c766c35305f636c *6f73757265007374675f73656c5f31315f6e6f7570645f656e7472790047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a *4f416c766c3430335f636c6f737572650047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a6951756572795574696c735f47657454657874757265436f6d70726573 *73696f6e48696e745f7374617469635f696e666f0047726170686963737a6952656e646572696e *677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b614d6c766c373437 *5f636c6f73757265007365746974696d65724040474c4942435f322e300047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c72 *6b326d6c69743232325f636c6f737572650047726170686963737a6955497a69474c55547a6943 *616c6c6261636b737a69526567697374726174696f6e5f4469616c7343425f7374617469635f69 *6e666f0047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e64 *6f775f756e6d61727368616c4b657953746174655f636c6f737572650047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a69436f6f72645472616e735f50726f6a65 *6374696f6e5f7374617469635f656e747279005f5f737467696e69745f446174617a6945697468 *65725f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175 *6572795574696c735f7a644c726a59326c69743135355f636c6f73757265004772617068696373 *7a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f4b657952696768745f *7374617469635f656e74727900746872656164537461626c655074725461626c65004748437a69 *494f426173655f7a644c7236616d6134395f636c6f737572650047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c723579586c *766c3134385f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c62 *61636b737a6957696e646f775f4b65795061676555705f7374617469635f696e666f0047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6956657274657853706563 *5f7a644c72616a5a5a6c766c34325f736c6f7700676c7574496e697457696e646f7753697a6500 *7075744d5661727a685f66617374005f5f676d707a5f636f6d0047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c72357a7a54 *6c697438315f636c6f73757265004748437a69576f72645f5731367a685f636f6e5f656e747279 *004748437a6948616e646c655f6c766c32365f636c6f737572650047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b3249 *6c766c3632325f636c6f737572650047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a6951756572795574696c735f7a644c726a566f6c69743131345f636c6f7375 *7265006465636f6465466c6f61747a685f66617374004748437a69576f72645f5736347a685f63 *6f6e5f656e747279005f5f737467696e69745f446174617a69496e740047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b *634d6c766c3737385f636c6f73757265007274735f636865636b53636865645374617475730073 *74675f6774496e743634005f5f737467696e69745f4748437a695061636b004772617068696373 *7a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f7a644c723877446c76 *6c325f636c6f73757265004748437a69466c6f61745f447a685f7374617469635f696e666f0047 *726170686963737a6955497a69474c55547a6954797065735f576865656c446f776e5f636c6f73 *7572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e64 *6f775f7a644c7238784a6139315f696e666f004748437a695074725f6e756c6c46756e5074725f *636c6f73757265007374675f756e636865636b65644953686966744c363400616c6c5f74687265 *616473005f5f737467696e69745f4748437a694e756d007274735f6d6b496e743634007374675f *61705f305f726574005f5f737467696e69745f466f726569676e7a694d61727368616c7a695574 *696c735f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951 *756572795574696c735f7a644c726a53656c697436355f636c6f73757265004748437a694e756d *5f5a43444e756d5f636f6e5f656e7472790047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a6951756572795574696c735f7a644c726b326f6c766c3631375f636c *6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a695265 *67697374726174696f6e5f4d6f74696f6e43425f7374617469635f656e74727900477261706869 *63737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f53 *7061636562616c6c4d6f74696f6e43425f7374617469635f696e666f0047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b *39556c69743333395f636c6f737572650047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a6951756572795574696c735f7a644c726b324b6c69743232385f636c6f *73757265004748437a6948616e646c655f7a6477666c757368526561644275666665725f656e74 *72790047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f *775f4b65794631305f7374617469635f696e666f0047726170686963737a6955497a69474c5554 *7a6943616c6c6261636b737a6957696e646f775f4b657946355f7374617469635f696e666f0073 *74675f7969656c645f6e6f72656773007374675f696e74546f496e743634004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c *726a50556c697432395f636c6f737572650047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a694361706162696c6974795f7a644c723577466c697433315f636c6f *737572650047726170686963737a6955497a69474c55547a6954797065735f756e6d6172736861 *6c4d6f757365427574746f6e5f696e666f007374675f5041505f696e666f004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c *726b61536c69743335345f636c6f73757265004d61696e5f53746174655f636f6e5f696e666f00 *4748437a69494f426173655f6c766c35315f636c6f7375726500636f6e746578745f7377697463 *680047726170686963737a6955497a69474c55547a6954797065735f756e6d61727368616c4d6f *757365427574746f6e5f636c6f73757265004748437a69576f72645f616273335f696e666f0047 *48437a69546f7048616e646c65725f7a644c723153346c766c5f736c6f77007374675f696e7465 *72705f636f6e737472345f656e7472790047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a6951756572795574696c735f7a644c726b61676c766c3733395f636c6f *737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e *646f775f4b657946315f636c6f73757265004748437a6948616e646c655f7a6477777269746552 *61774275666665725f636c6f737572650047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a6951756572795574696c735f7a644c726b63736c766c3737335f636c6f *73757265004748437a69494f426173655f6c766c35325f696e666f004748437a69494f42617365 *5f7a644c7236616f6135305f656e7472790047726170686963737a6955497a69474c55547a6943 *616c6c6261636b737a69526567697374726174696f6e5f7a64777a737a655f696e666f005f5f73 *7467696e69745f53797374656d7a69494f5f007374675f494e445f315f696e666f00696e697455 *7365725369676e616c73007374675f61705f7070705f72657400446174617a6946696e6974654d *61705f706f6c797a7564656c6574654d61785f636c6f737572650047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b3055 *6c766c3539345f636c6f73757265004748437a694c6973745f726576657273655f636c6f737572 *650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726a53306c766c3435365f636c6f737572650047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b *34796c69743235365f636c6f73757265004748437a69494f426173655f6c766c36335f656e7472 *7900446174617a6946696e6974654d61705f7a644c723368706c766c31385f656e747279005f5f *737467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a69506978656c446174610047726170686963737a6952656e646572696e677a694f70656e474c *7a69474c7a6951756572795574696c735f7a644c726a52796c766c3434395f636c6f7375726500 *47726170686963737a6955497a69474c55547a69496e697469616c697a7a6174696f6e5f696e69 *7469616c697a7a655f636c6f73757265007374675f73656c5f395f7570645f696e666f005f5f73 *7467696e69745f47726170686963737a6955497a69474c55547a69446576696365436f6e74726f *6c0047726170686963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374 *726174696f6e5f7a64777a64646d7a6c5f656e7472790047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c72357a7a6a6c6974 *37325f636c6f73757265004748437a69494f426173655f7a644c723661696134375f656e747279 *00446174617a6946696e6974654d61705f7a64776d6b42616c4272616e63685f656e7472790073 *74675f626c6f636b5f7075746d7661725f696e666f0047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b30696c69743139 *305f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b73 *7a69526567697374726174696f6e5f7a657a655f696e666f004748437a69494f426173655f6136 *345f636c6f73757265004748437a69426173655f7a707a705f696e666f0047726170686963737a *6955497a69474c55547a69496e697469616c697a7a6174696f6e5f446f75626c65427566666572 *65645f7374617469635f656e74727900706572666f726d474357697468526f6f7473004748437a *69576f72645f746f496e7465676572325f656e747279007374646f75744040474c4942435f322e *30004748437a694e756d5f7a647773686f7773507265635f696e666f005f5f737467696e69745f *446174617a69486173685461626c650047726170686963737a6955497a69474c55547a6943616c *6c6261636b737a6957696e646f775f61365f636c6f737572650047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a59716c *69743136315f636c6f73757265005f5f737467696e69745f47726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c7a69506978656c52656374616e676c65737a6953696e6b *0047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f *4b657946355f7374617469635f656e747279004748437a69426173655f756e7061636b466f6c64 *7243537472696e677a685f636c6f737572650047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b63716c69743337385f63 *6c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *6951756572795574696c735f7a644c726b37556c69743330385f636c6f73757265007374646572 *724040474c4942435f322e300073657450726f67417267760047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b31436c76 *6c3630355f636c6f737572650053797374656d7a69457869745f6c766c315f636c6f7375726500 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69457874656e73 *696f6e735f67657450726f63416464726573735f656e7472790047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a53496c *766c3436375f636c6f73757265004748437a69494f426173655f4572726f7243616c6c5f636f6e *5f656e747279004748437a69494f426173655f537461636b4f766572666c6f775f737461746963 *5f696e666f0047726170686963737a6955497a69474c55547a6943616c6c6261636b737a695769 *6e646f775f6d616b65446973706c617943616c6c6261636b5f656e747279005f5f737467696e69 *745f446174617a694c6973745f004748437a69576f72645f616273335f656e7472790047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c697479 *5f7a644c723576666c6974395f636c6f737572650047726170686963737a6952656e646572696e *677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b37416c6974333033 *5f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a6951756572795574696c735f7a644c726b324f6c69743232395f636c6f7375726500477261 *70686963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f *6e5f7a644c723348546c766c32365f636c6f7375726500466f726569676e7a69437a694572726f *725f7468726f774572726e6f5f696e666f0047726170686963737a6955497a69474c55547a6943 *616c6c6261636b737a6957696e646f775f7a644c7257526d616b655370656369616c43616c6c62 *61636b5f636c6f73757265004748437a69494f426173655f6136375f636c6f7375726500477261 *70686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c *735f7a644c726b33346c69743233335f636c6f737572650061626f72744040474c4942435f322e *30007374675f73656c5f305f6e6f7570645f656e7472790047726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c7a695072696d69746976654d6f64655f547269616e676c *65735f7374617469635f696e666f007374675f454d5054595f4d5641525f696e666f004748437a *69494f426173655f4173796e63457863657074696f6e5f7374617469635f656e747279005f5f73 *7467696e69745f4748437a694572725f0047726170686963737a6955497a69474c55547a69496e *697469616c697a7a6174696f6e5f5247424d6f64655f7374617469635f696e666f006765745374 *61626c655074720047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f7a644c726b34596c766c3635375f636c6f7375726500436f6e74 *726f6c7a69457863657074696f6e5f7a644c72324a336c766c31335f636c6f7375726500477261 *70686963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f *6e5f636f6d70617265315f656e7472790047726170686963737a6955497a69474c55547a694361 *6c6c6261636b737a69526567697374726174696f6e5f7a644c72334556615f696e666f00474843 *7a69494f426173655f556e737570706f727465644f7065726174696f6e5f7374617469635f696e *666f006973546872656164426f756e6400696e6974426c6f636b416c6c6f6361746f7200477261 *70686963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f *6e5f7a64777a64646d7a6c7a655f636c6f737572650047726170686963737a6955497a69474c55 *547a6943616c6c6261636b737a6957696e646f775f7a644c7238784a6139315f636c6f73757265 *004748437a69494f426173655f6137315f636c6f737572650047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a4f696c69 *74345f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a6951756572795574696c735f7a644c726b36776c766c3638315f636c6f73757265005f *5f676d707a5f696e6974007374675f61705f707070705f696e666f0047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a4f *616c6974325f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c62 *61636b737a6957696e646f775f7a644c725750676c75745370656369616c46756e635f696e666f *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726b634b6c69743338335f636c6f737572650047726170686963737a6955 *497a69474c55547a6943616c6c6261636b737a6957696e646f775f4b6579496e736572745f636c *6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *466f675f666f675f636c6f737572650047726170686963737a6955497a69474c55547a6943616c *6c6261636b737a69526567697374726174696f6e5f7a64777a737a655f636c6f73757265004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c69 *74795f7a644c723578746c766c3132355f636c6f737572650047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b35676c69 *743236375f636c6f73757265007374675f67656e5f7969656c64004748437a69494f426173655f *6135335f696e666f007374675f666f726365494f5f726574005f5f737467696e69745f4748437a *69436f6e63007374675f73656c5f31355f7570645f656e7472790047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b3963 *6c69743332385f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c *6261636b737a69526567697374726174696f6e5f5461626c65744d6f74696f6e43425f73746174 *69635f696e666f0047726170686963737a6955497a69474c55547a6943616c6c6261636b737a69 *57696e646f775f7a644c723878486139305f696e666f005f5f737467696e69745f477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a69506978656c52656374616e67 *6c65737a69526173746572697a7a6174696f6e0047726170686963737a6955497a69474c55547a *6943616c6c6261636b737a69526567697374726174696f6e5f4d6f75736543425f636c6f737572 *65005f5f676d707a5f786f72004748437a69494f426173655f5061747465726e4d617463684661 *696c5f7374617469635f696e666f0047726170686963737a6955497a69474c55547a6943616c6c *6261636b737a69526567697374726174696f6e5f746865436c65616e75704c6973745f636c6f73 *757265004748437a694e756d5f5a43444e756d5f636f6e5f696e666f00696e6974436170616269 *6c6974696573004748437a69496e745f49387a685f7374617469635f696e666f007374675f7365 *6c5f335f6e6f7570645f656e74727900436f6e74726f6c7a69457863657074696f6e5f7a644c72 *324a666c766c31375f736c6f770047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a694361706162696c6974795f7a644c723578546c697435305f636c6f73757265 *00446174617a6946696e6974654d61705f7a644c7233675a5a6c766c355f696e666f004748437a *69576f72645f57387a685f7374617469635f696e666f006c6f6f6b75705468726561644c616265 *6c0064656661756c7473486f6f6b0047726170686963737a6955497a69474c55547a6943616c6c *6261636b737a6957696e646f775f55705f7374617469635f656e7472790047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c72 *6a4f516c766c3430375f636c6f7375726500436f6e74726f6c7a69457863657074696f6e5f7a64 *4c72324a316c766c31325f696e666f0047726170686963737a6955497a69474c55547a6943616c *6c6261636b737a6957696e646f775f64386f770047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6951756572795574696c735f476574556e7061636b434d594b48 *696e745f7374617469635f696e666f004748437a69494f426173655f6c766c35375f696e666f00 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565727955 *74696c735f7a644c726a53556c766c3437305f636c6f73757265005f5f737467696e69745f4772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c557a6951756164726963 *73004748437a69426173655f45515f636c6f737572650047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b36326c697432 *37395f636c6f73757265007072696e74416c6c54687265616473005f5f737467696e69745f4772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c557a69496e697469616c *697a7a6174696f6e5f0047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a695072696d69746976654d6f64655f7a64776d61727368616c5072696d69746976654d6f *64655f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a6951756572795574696c735f7a644c726b39456c69743333355f636c6f7375726500477261 *70686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c *735f7a644c726b62796c766c3735395f636c6f737572650047726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c7a6948696e74735f7a644c723366556c6974315f636c6f *7375726500466f726569676e7a6953746f7261626c655f706f6c797a757a64646d7065656b325f *696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951 *756572795574696c735f7a644c726b386d6c69743331355f636c6f737572650047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a64 *4c726a50576c766c3432345f636c6f737572650047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a52436c766c3435305f *636c6f73757265004748437a69494f426173655f57726974654275666665725f7374617469635f *696e666f007374675f696e746572705f636f6e737472325f656e747279004748437a69496e745f *4936347a685f636f6e5f696e666f0064656c6574655468726561640047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a69466f675f61325f636c6f73757265007379 *73636f6e664040474c4942435f322e30004748437a69494f426173655f5265736f757263655661 *6e69736865645f636c6f737572650047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a6951756572795574696c735f7a644c726b38616c69743331325f636c6f7375 *72650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69436170 *6162696c6974795f7a644c7235784c6c697434385f636c6f737572650047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a *50796c766c3431385f636c6f73757265004748437a69546f7048616e646c65725f64735f656e74 *7279005f5f737467696e69745f446174617a695479706561626c655f0047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b *33696c766c3633315f636c6f73757265004748437a69537461626c655f537461626c655074725f *636f6e5f696e666f0047726170686963737a6955497a69474c55547a6943616c6c6261636b737a *69526567697374726174696f6e5f7a64646d7a6c315f636c6f737572650047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c72 *6b31476c766c3630365f636c6f73757265004748437a6948616e646c655f7a6477666c75736857 *726974654275666665725f636c6f7375726500466f726569676e7a6953746f7261626c655f706f *6c797a75706f6b65427974654f6666325f656e74727900466f726569676e7a69437a6953747269 *6e675f7a64777065656b4341537472696e675f636c6f737572650047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b3653 *6c69743239325f636c6f737572650047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c557a694572726f7273496e7465726e616c5f676574474c4572726f7273417578 *5f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *69436f6f72645472616e735f61325f636c6f73757265005f5f737467696e69745f477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a69506978656c466f726d617400 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565727955 *74696c735f7a644c726b346d6c69743235335f636c6f7375726500706572666f726d4d616a6f72 *47430047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f *775f7a644c7257586d616b654b6579626f61726443616c6c6261636b5f696e666f004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f *7a644c726a54436c766c3438315f636c6f737572650047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a69436f6f72645472616e735f4d6f64656c766965775f7374 *617469635f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a694361706162696c6974795f7a644c723577766c766c3131305f636c6f737572650076 *667072696e74664040474c4942435f322e30004748437a69546f7048616e646c65725f7265706f *7274537461636b4f766572666c6f775f656e747279005f5f737467696e69745f53797374656d7a *69494f7a69556e736166650047726170686963737a6955497a69474c55547a69496e697469616c *697a7a6174696f6e5f5247424d6f64655f7374617469635f656e7472790047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c72 *6b35636c69743236365f636c6f73757265006d61726b537461626c655074725461626c65005f5f *737467696e69745f4748437a695765616b5f0047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a69466f675f666f675f656e7472790047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f47657450657273 *70656374697665436f7272656374696f6e48696e745f636c6f73757265004748437a69494f4261 *73655f6c766c36345f656e747279004748437a69494f426173655f557365724572726f725f7374 *617469635f656e74727900446174617a6946696e6974654d61705f4272616e63685f7374617469 *635f656e7472790047726170686963737a6955497a69474c55547a6943616c6c6261636b737a69 *57696e646f775f7a644c725756676c75744b6579626f61726446756e635f636c6f737572650047 *726170686963737a6955497a69474c55547a69496e697469616c697a7a6174696f6e5f446f7562 *6c6542756666657265645f636c6f73757265004748437a6948616e646c655f6c766c36365f696e *666f004748437a69494f426173655f4e6f6e5465726d696e6174696f6e5f7374617469635f656e *7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175 *6572795574696c735f7a644c726b316f6c69743230375f636c6f73757265007374675f73656c5f *395f6e6f7570645f656e7472790047726170686963737a6955497a69474c55547a6943616c6c62 *61636b737a69526567697374726174696f6e5f73657443616c6c6261636b5f636c6f7375726500 *5f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a69426173696354797065735f0047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a6951756572795574696c735f7a644c726a58696c766c3533385f636c6f73 *757265004748437a694e756d5f7a644c72314d646c766c395f636c6f7375726500477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a *644c7235766e6c69743131315f636c6f73757265004748437a69576f72645f746f496e74656765 *72325f696e666f004748437a694e756d5f7a647773686f7773507265635f656e74727900477261 *70686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c *735f7a644c726a504d6c697432375f636c6f737572650047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a69466f675f61335f656e747279004748437a69494f4261 *73655f6136385f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c *7a69474c7a6951756572795574696c735f7a644c726b36386c766c3637355f636c6f7375726500 *5f5f676d707a5f616e64007374675f67635f6631004748437a69494f426173655f7a644c723661 *6b6134385f656e74727900446174617a6946696e6974654d61705f616464546f464d7a75435f69 *6e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361 *706162696c6974795f7a644c723579626c766c3133365f636c6f73757265004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a69436f6f72645472616e735f50726f *6a656374696f6e5f7374617469635f696e666f0047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b30636c766c3538335f *636c6f73757265007261697365494f7a685f666173740047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a54756c766c34 *37395f636c6f73757265004748437a69494f426173655f5265736f75726365427573795f737461 *7469635f656e747279007374675f6c74576f7264363400616c6c6f635f626c6f636b73005f5f73 *7467696e69745f4748437a695061636b5f004748437a69576f72645f5736347a685f636f6e5f69 *6e666f00446174617a6946696e6974654d61705f706f6c797a7564656c6574654d61785f656e74 *7279005f5f737467696e69745f446174617a694d6179626500466f726569676e7a6953746f7261 *626c655f706f6c797a757a64646d706f6b65325f636c6f73757265004748437a69546f7048616e *646c65725f746f7048616e646c65725f656e747279005f5f737467696e69745f47726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c557a6951756164726963735f004461 *74617a6946696e6974654d61705f7a644c7233675a5a6c766c355f636c6f737572650047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726b33716c766c3633335f636c6f737572650070696e6e65645f6f626a6563745f626c *6f636b004748437a69494f426173655f7a644c723661716135315f636c6f7375726500696e7465 *67657232496e747a685f666173740047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a6948696e74735f7a644c723366796c766c5f696e666f004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c *726a586d6c766c3533395f636c6f737572650047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b31636c69743230345f63 *6c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6952 *6567697374726174696f6e5f4b6579626f61726443425f636c6f73757265007274735f67657446 *756e5074720047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *51756572795574696c735f7a644c726b616f6c766c3734315f636c6f7375726500477261706869 *63737a6955497a69474c55547a6954797065735f4d6964646c65427574746f6e5f737461746963 *5f696e666f00746872656164506175736564004748437a69494f426173655f50726f746f636f6c *4572726f725f7374617469635f656e7472790047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b35416c69743237325f63 *6c6f73757265007374675f61705f7070707070705f696e666f0047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b33436c *766c3633365f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a69436f6f72645472616e735f4d6f64656c766965775f636f6e5f696e666f0069 *6e69745468726561644c6162656c5461626c65004748437a69494f426173655f6136355f656e74 *72790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69436170 *6162696c6974795f7a644c7235794c6c766c3134355f636c6f73757265005f5f737467696e6974 *5f4748437a69436f6e635f004748437a69494f426173655f6c766c34385f636c6f737572650047 *726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f7a64 *4c7257586d616b654b6579626f61726443616c6c6261636b5f656e747279005f5f737467696e69 *745f446174617a69576f7264006d61726b5369676e616c48616e646c657273004748437a694572 *725f7a644c7250616c766c31335f656e747279004748437a695074725f5074725f737461746963 *5f656e747279004748437a69494f426173655f4572726f7243616c6c5f7374617469635f656e74 *72790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726a55596c766c3530325f636c6f737572650047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c72 *6a56386c69743131305f636c6f73757265005f5f737467696e69745f47726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a69436f6c6f7253756d004761726261676543 *6f6c6c6563740047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *6951756572795574696c735f7a64776c69676874496e646578546f456e756d5f636c6f73757265 *005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a69546578747572696e677a6953706563696669636174696f6e5f005f5f737467696e69 *745f47726170686963737a6955497a69474c55547a69446562756767696e67004748437a695368 *6f775f7a647773686f775369676e6564496e745f636c6f73757265004748437a694e756d5f537a *685f7374617469635f696e666f004748437a69576f72645f5733327a685f7374617469635f696e *666f004748437a69494f426173655f7a647773686f777350726563355f696e666f004748437a69 *53686f775f7a64646d73686f774c6973745f656e74727900446174617a6946696e6974654d6170 *5f7a644c72336874706f6c797a756661696c315f636c6f73757265004748437a694572725f7a64 *4c724f516c766c335f636c6f737572650047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a6951756572795574696c735f7a644c726b34556c766c3635365f636c6f *73757265006e6f636c6473746f70004748437a694e756d5f6c766c385f636c6f73757265005f5f *737467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a695665727465785370656300676c75744d6f75736546756e630047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b3355 *6c69743234365f636c6f737572650066696e616c697a7a655765616b7a685f6661737400436f6e *74726f6c7a69457863657074696f6e5f7a644c7232495a5a6c766c31315f696e666f0047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726b33326c766c3632375f636c6f737572650047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b35386c697432 *36355f636c6f73757265005f5f737467696e69745f47726170686963737a6952656e646572696e *677a694f70656e474c7a69474c557a694d69706d617070696e675f0047726170686963737a6955 *497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a64646d6d69 *6e315f636c6f737572650070726f675f6e616d650073746172745369676e616c48616e646c6572 *73005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c *7a69474c7a69506978656c52656374616e676c65737a69506978656c5472616e736665725f0047 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69457874656e7369 *6f6e735f6c766c315f656e74727900466f726569676e7a694d61727368616c7a6941727261795f *706f6b654172726179305f636c6f73757265007374675f73656c5f395f6e6f7570645f696e666f *007265737572726563745468726561647300446174617a6946696e6974654d61705f7a64776669 *6e644d696e5f696e666f004748437a69426173655f756e7061636b417070656e6443537472696e *677a685f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a6951756572795574696c735f7a644c726b33366c766c3632385f636c6f7375726500737467 *5f63617463685f656e747279005f7374617274007374675f63617463685f6672616d655f726574 *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162 *696c6974795f7a644c7235786a6c697434315f636c6f737572650047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c72357766 *6c766c3130365f636c6f73757265004748437a69494f426173655f537461636b4f766572666c6f *775f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726b61366c69743334325f636c6f73757265004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c735f7a644c726a57616c69743132365f636c6f73757265004748437a694c6973745f7461696c *5f656e74727900676c75556e50726f6a65637434004748437a6948616e646c655f7345454b7a75 *4355525f696e666f004748437a694572725f7061744572726f725f636c6f737572650072656c65 *6173654361706162696c6974790047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a6951756572795574696c735f7a644c726b374d6c69743330365f636c6f737572 *650053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c36375f69 *6e666f004748437a6948616e646c655f7345454b7a754355525f656e7472790047726170686963 *737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a64 *4c723348566c766c32375f696e666f00446174617a6946696e6974654d61705f7a644c72336870 *6c766c31385f636c6f73757265005f5f737467696e69745f4748437a69466f726569676e507472 *5f004748437a69426173655f6d61705f696e666f007274735f676574537461626c655074720047 *48437a6948616e646c655f77616e745772697461626c6548616e646c657a715f636c6f73757265 *004748437a69576f72645f7a64777a64646d73686f775f656e7472790047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c7235 *765a5a6c766c3130325f636c6f73757265007374675f61705f305f696e666f0047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a64 *4c726a55516c766c3530305f636c6f737572650047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a69566572746578537065635f7a644c72616a486c766c33345f65 *6e747279005f5f737467696e69745f4748437a694261736500466f726569676e7a6953746f7261 *626c655f5a434453746f7261626c655f7374617469635f656e7472790047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a *59576c69743136395f636c6f73757265004748437a69494f426173655f7a647773686f77735072 *6563355f636c6f73757265004748437a69426173655f666f6c64725f636c6f73757265005f5f73 *7467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *694672616d65627566666572004748437a69494f426173655f6137385f696e666f004748437a69 *48616e646c655f77616e745772697461626c6548616e646c657a715f656e747279004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f *7a644c726b35696c766c3636325f636c6f73757265004748437a69494f426173655f4c696e6542 *7566666572696e675f7374617469635f656e7472790047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a4f6b6c766c3339 *395f636c6f73757265007374675f61705f765f696e666f004748437a69426173655f756e706163 *6b43537472696e67557466387a685f636c6f737572650047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a4f326c69745f *636c6f73757265004748437a6953686f775f6c766c31355f636c6f737572650047726170686963 *737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a64 *4c7233484e6c766c32345f656e747279004748437a694e756d5f6a746f735f636c6f7375726500 *446174617a6946696e6974654d61705f6c6f6f6b7570464d5f636c6f7375726500477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a *644c723576426c766c39365f636c6f737572650047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b336f6c69743233385f *636c6f73757265004748437a69546f7048616e646c65725f72756e494f5f656e74727900446174 *617a694c6973745f73756d5f696e666f007374675f61705f765f726574005f5f6873636f72655f *7365745f73617665645f7465726d696f730047726170686963737a6955497a69474c55547a6954 *797065735f576865656c446f776e5f7374617469635f656e7472790047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a52 *756c766c3434385f636c6f73757265005f5f737467696e69745f47726170686963737a6952656e *646572696e677a694f70656e474c7a69474c557a6954657373656c6c6174696f6e5f0047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f476574506f6c79676f6e536d6f6f746848696e745f7374617469635f696e666f004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f *7a644c726a58796c766c3534325f636c6f73757265004748437a69576f72645f7a64777a64646d *73686f775f636c6f7375726500466f726569676e7a6953746f7261626c655f706f6c797a757a64 *646d7065656b325f656e747279007374675f61705f345f7570645f696e666f0047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a64 *4c723576746c766c39345f636c6f737572650047726170686963737a6955497a69474c55547a69 *43616c6c6261636b737a6957696e646f775f7a644c723877486c766c345f656e74727900477261 *70686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c *735f7a644c726b39796c766c3732385f636c6f737572650047726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c7a6948696e74735f446f6e74436172655f737461746963 *5f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *51756572795574696c735f7a644c726a59436c69743136345f636c6f7375726500477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a6948696e74735f446f6e744361 *72655f7374617469635f656e747279006d75745f757365725f74696d655f647572696e675f4743 *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726b33616c766c3632395f636c6f73757265007374675f41505f696e666f *006177616b656e426c6f636b656451756575654e6f4c6f636b004748437a6948616e646c655f6c *766c37345f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726a52346c697434375f636c6f7375726500537461 *636b4f766572666c6f77486f6f6b004748437a69494f426173655f4f746865724572726f725f73 *74617469635f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a694361706162696c6974795f7a644c723579336c766c3133345f636c6f73757265005f *5f737467696e69745f5072656c7564655f00677261624361706162696c697479004748437a6957 *6f72645f7a64777a64646d73686f775f696e666f005f5f737467696e69745f4772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a69436c697070696e67006973466c6f *617444656e6f726d616c697a656400737461727475704861736b656c6c004748437a6948616e64 *6c655f666c75736857726974654275666665724f6e6c795f696e666f005f5f737467696e69745f *47726170686963737a6955497a69474c55547a6943616c6c6261636b735f004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c *726a5a5a616c766c3536375f636c6f737572650047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a55346c766c3438385f *636c6f7375726500706c7573496e74656765727a685f66617374004748437a6953686f775f7a64 *646d73686f774c6973745f696e666f00446174617a6946696e6974654d61705f7a647766696e64 *4d61785f636c6f73757265007374675f434841524c494b455f636c6f73757265004748437a694e *756d5f537a685f636f6e5f696e666f0047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a694361706162696c6974795f7a644c72357a7a316c766c3134395f636c6f *737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6943 *61706162696c6974795f7a644c723576706c766c39335f636c6f73757265004748437a694c6973 *745f6c766c31325f696e666f007274735f676574496e743634007374675f73656c5f325f6e6f75 *70645f696e666f007374675f444541445f5745414b5f696e666f0047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a5a5a *386c69743137325f636c6f73757265004d61696e5f53746174655f636f6e5f656e747279004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c735f7a644c726b36496c766c3638345f636c6f73757265004748437a69576f72645f6e656761 *7465335f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6948696e74735f48696e744d6f64655f636c6f737572655f74626c00727473537570706f *727473426f756e6454687265616473007374675f6765496e743634004748437a69426173655f46 *616c73655f7374617469635f696e666f005f5f737467696e69745f4748437a69494f426173655f *005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a6953746174655661725f0047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a6951756572795574696c735f47657454657874757265436f6d707265737369 *6f6e48696e745f636c6f7375726500436f6e74726f6c7a69457863657074696f6e5f7a644c7232 *4a666c766c31375f656e7472790047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a6951756572795574696c735f7a644c726a57776c766c3532365f636c6f737572 *650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726a58676c69743134335f636c6f737572650047726170686963737a69 *55497a69474c55547a6943616c6c6261636b737a6957696e646f775f4b657950616765446f776e *5f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a *6957696e646f775f7a644c72574c6d616b654d6f75736543616c6c6261636b5f636c6f73757265 *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726b364b6c69743239305f636c6f73757265004748437a69494f42617365 *5f6c766c35365f696e666f007374675f454e445f455843455054494f4e5f4c4953545f696e666f *004748437a69494f426173655f7468726f775f696e666f0047726170686963737a6955497a6947 *4c55547a6943616c6c6261636b737a69526567697374726174696f6e5f446973706c617943425f *7374617469635f656e7472790047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a6951756572795574696c735f7a644c726b33776c69743234305f636c6f73757265 *006465526566537461626c655074727a685f666173740047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b33756c766c36 *33345f636c6f73757265004748437a69494f426173655f6136385f636c6f737572650047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726a4f4b6c697431315f636c6f73757265005f5f737467696e69745f4d61696e5f0047 *48437a6953545265665f53545265665f7374617469635f696e666f0047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a5a *5a456c69743138305f636c6f73757265005f5f737467696e69745f47726170686963737a695549 *7a69474c55547a6943616c6c6261636b737a69476c6f62616c5f007374675f73656c5f385f7570 *645f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *6951756572795574696c735f7a644c726a54416c697438365f636c6f7375726500477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a *644c726a51756c697433385f636c6f737572650047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b356b6c69743236385f *636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f7a644c726b61416c766c3734345f636c6f737572650047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726b35346c69743236345f636c6f73757265004748437a6948616e646c655f6c766c32 *365f656e747279004748437a69576f72645f73686f777350726563335f656e7472790047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a69436f6f72645472616e73 *5f53697a7a655f636f6e5f696e666f005f5f737467696e69745f47726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a69506f696e7473007374675f7969656c645f746f *5f696e746572707265746572005f5f737467696e69745f436f6e74726f6c7a694d6f6e61645f00 *4748437a69576f72645f7a70335f636c6f73757265005f5f7374675f67635f66756e004748437a *69466c6f61745f447a685f7374617469635f656e747279004748437a69576f72645f6c6974385f *636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f7a644c726a5a5a326c766c3536355f636c6f7375726500737467 *5f73656c5f365f6e6f7570645f656e7472790047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b326b6c766c3631365f63 *6c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6952 *6567697374726174696f6e5f57696e646f7753746174757343425f7374617469635f696e666f00 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565727955 *74696c735f7a644c726b37476c766c3639395f636c6f737572650047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c7235796e *6c766c3133395f636c6f73757265005f5f737467696e69745f47726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a694361706162696c697479005f5f737467696e6974 *5f466f726569676e7a69437a6954797065730064756d6d795f74736f005f5f737467696e69745f *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c557a694d61747269 *785f0053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c36365f *656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *4361706162696c6974795f7a644c723579766c766c3134315f636c6f73757265004748437a6948 *616e646c655f7374646f75745f636c6f73757265004748437a69576f72645f6e6567617465335f *696e666f007374675f73656c5f31325f6e6f7570645f696e666f004748437a69494f426173655f *5065726d697373696f6e44656e6965645f636c6f737572650047726170686963737a6955497a69 *474c55547a6943616c6c6261636b737a6957696e646f775f7a644c72574a676c75744d6f757365 *46756e635f636c6f7375726500746f74616c5f616c6c6f63617465640047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a *57756c69743133315f636c6f737572650047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a6951756572795574696c735f7a644c726b304f6c69743139385f636c6f *737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e *646f775f7a644c7238784c6139325f636c6f73757265004748437a69494f426173655f4f746865 *724572726f725f636c6f73757265007369676164647365744040474c4942435f322e30004d6169 *6e4361706162696c697479007374675f61705f6e5f726574004d61696e5f6d61696e5f736c6f77 *004748437a69576f72645f7a6477746f496e7465676572315f696e666f0047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c557a694572726f7273496e7465726e616c *5f7468655265636f726465644572726f72735f636c6f737572650047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c72357552 *6c6974335f636c6f73757265005f5f737467696e69745f53797374656d7a69456e7669726f6e6d *656e74005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a69506978656c52656374616e676c65737a69436f6e766f6c7574696f6e5f0044 *6174617a694d617962655f4e6f7468696e675f7374617469635f656e7472790047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a64 *4c726a5a5a696c766c3536395f636c6f73757265005f5f737467696e69745f4772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6944617461547970655f0047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726a4f386c766c3339365f636c6f73757265004748437a69426173655f5a437a745a43 *5f7374617469635f656e7472790047726170686963737a6955497a69474c55547a6943616c6c62 *61636b737a6957696e646f775f4b657946395f636c6f7375726500626c6f636b55736572536967 *6e616c730047726170686963737a6955497a69474c55547a6943616c6c6261636b737a69526567 *697374726174696f6e5f7a644c7233484e6c766c32345f696e666f0047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a51 *326c697433315f636c6f7375726500676c4765744572726f7200676c7574496e6974446973706c *61794d6f64650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *6948696e74735f7a644c723367306c6974345f636c6f737572650047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b3132 *6c766c3539365f636c6f73757265006973456d7074794d5661727a685f66617374004748437a69 *494f426173655f494f457863657074696f6e5f7374617469635f656e7472790064697645786163 *74496e74656765727a685f66617374005f5f737467696e69745f47726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6953656c656374696f6e0047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a69426173696354797065735f44697361 *626c65645f636c6f73757265004748437a69426173655f756e7061636b43537472696e677a685f *656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *4361706162696c6974795f7a644c7235786c6c766c3132335f636c6f73757265004748437a694e *756d5f6a746f737a715f656e747279005f5f737467696e69745f4e756d65726963004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f *7a644c726a50516c697432385f636c6f737572650047726170686963737a6955497a69474c5554 *7a69496e697469616c697a7a6174696f6e5f7a644c72356d457a647767656e657269634c656e67 *7468315f696e666f00737461745f737461727445786974005f5f6465636f6465466c6f61740047 *48437a6953686f775f73686f77735f696e666f007765616b5f7074725f6c697374004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f *7a644c726b38536c69743332335f636c6f737572650047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b34346c766c3634 *335f636c6f73757265004748437a69494f426173655f45786974537563636573735f636c6f7375 *726500676c476574496e7465676572760047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a6951756572795574696c735f7a644c726b636f6c766c3737325f636c6f *737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e *646f775f64386f790053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363 *616c6c36365f636c6f737572650047726170686963737a6955497a69474c55547a695479706573 *5f6c766c315f656e7472790047726170686963737a6955497a69474c55547a6943616c6c626163 *6b737a69526567697374726174696f6e5f5669736962696c69747943425f7374617469635f696e *666f004748437a6948616e646c655f666c75736857726974654275666665724f6e6c795f656e74 *72790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69426567 *696e456e645f72656e6465725072696d69746976655f636c6f737572650068735f696e69740047 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574 *696c735f7a644c726a57456c766c3532385f636c6f737572650047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a4f676c *766c3339385f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a6951756572795574696c735f7a644c726a59776c766c3535375f636c6f737572 *650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6943617061 *62696c6974795f7a644c72357a7a566c766c3136335f636c6f73757265004748437a69494f4261 *73655f6136335f696e666f007374675f61705f665f7265740047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b36796c69 *743238375f636c6f7375726500446174617a6946696e6974654d61705f7a644c72336872706f6c *797a756661696c5f636c6f73757265004748437a69496e745f4936347a685f636f6e5f656e7472 *790047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f77 *5f7a644c725756676c75744b6579626f61726446756e635f656e7472790047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c72 *3579786c697436305f636c6f737572650047726170686963737a6955497a69474c55547a694361 *6c6c6261636b737a69526567697374726174696f6e5f4d656e7553746174757343425f636c6f73 *7572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175 *6572795574696c735f7a644c726b36476c69743238395f636c6f73757265004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c *723579506c766c3134365f636c6f737572650047726170686963737a6955497a69474c55547a69 *43616c6c6261636b737a6957696e646f775f64386f440047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a69436f6f72645472616e735f53697a7a655f7374617469 *635f696e666f005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f *70656e474c7a69474c555f007374675f61705f325f7570645f696e666f0047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c72 *6b39326c766c3732305f636c6f737572650047726170686963737a6955497a69474c55547a6954 *797065735f576865656c446f776e5f7374617469635f696e666f004748437a69494f426173655f *6c766c36325f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a6951756572795574696c735f7a644c726b62776c69743336345f636c6f737572650046 *6f726569676e7a69437a694572726f725f7a644c723257747a64776363616c6c5f696e666f0047 *48437a6948616e646c655f696f657a756e6f745772697461626c655f736c6f7700477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a *644c726b35736c69743237305f636c6f73757265007274735f6d6b537472696e67004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f *7a644c723577586c766c3131375f636c6f73757265004748437a69494f426173655f446561646c *6f636b5f636c6f73757265005f5f737467696e69745f4748437a69457272007374675f73656c5f *31325f7570645f696e666f005f5f737467696e69745f446174617a695479706561626c65007374 *675f41505f535441434b5f656e747279007374675f756e626c6f636b4173796e63457863657074 *696f6e737a685f7265745f696e666f004748437a69494f426173655f6c766c35345f656e747279 *005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a69546578747572696e677a69546578747572655461726765745f004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c *72357a7a336c697436385f636c6f73757265005f5f737467696e69745f47726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a69506978656c52656374616e676c65735f *004748437a69494f426173655f6c766c35355f656e747279004748437a69494f426173655f4669 *6c6548616e646c655f7374617469635f696e666f0053797374656d7a69456e7669726f6e6d656e *745f67657450726f674e616d655f636c6f73757265005f5f737467696e69745f47726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f0073 *74675f73656c5f31305f6e6f7570645f656e7472790047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a57346c766c3531 *395f636c6f73757265005f5f737467696e69745f47726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a69466163650047726170686963737a6955497a69474c55547a69 *43616c6c6261636b737a6957696e646f775f7a644c7238774c7a6477756e6d61727368616c5370 *656369616c4b65795f636c6f737572650047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a6951756572795574696c735f7a644c726b37776c69743330325f636c6f *737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6946 *6f675f61335f696e666f004748437a69426173655f5a43444f72645f7374617469635f696e666f *007374675f73656c5f355f7570645f656e74727900676364496e7465676572496e747a685f6661 *7374004748437a6948616e646c655f7a64776175676d656e74494f4572726f725f656e74727900 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69436170616269 *6c6974795f7a644c723579376c766c3133355f636c6f737572650047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b3261 *6c69743231395f636c6f737572650047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a6951756572795574696c735f7a644c726a4f736c766c3430315f636c6f7375 *726500676c7574496e6974005f5f737467696e69745f466f726569676e7a69437a694572726f72 *5f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726a4f796c6974385f636c6f737572650047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f6c69676874496e *646578546f456e756d5f696e666f007274735f6d6b576f72643332004748437a69494f42617365 *5f526561644275666665725f7374617469635f656e7472790047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a51516c76 *6c3433385f636c6f7375726500446174617a6946696e6974654d61705f6c6f6f6b7570464d5f65 *6e747279004748437a694c6973745f7461696c5f696e666f0047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a69566572746578537065635f7a644c72616a486c76 *6c33345f696e666f007374675f61705f70705f726574005f5f737467696e69745f477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c5f004748437a69494f426173655f *6c766c36305f656e7472790047726170686963737a6955497a69474c55547a6943616c6c626163 *6b737a69526567697374726174696f6e5f6c766c5f636c6f73757265004748437a69494f426173 *655f556e737570706f727465644f7065726174696f6e5f636c6f73757265004772617068696373 *7a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f5370656369616c4b65 *795f636f6e5f656e7472790072616973654173796e63576974684c6f636b00436f6e74726f6c7a *69457863657074696f6e5f7a644c72324a396b5f636c6f737572650047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6948696e74735f7a644c723367326c697435 *5f636c6f7375726500616c6c6f635f48704c696d007374675f656e7465725f696e666f00474843 *7a69494f426173655f5061747465726e4d617463684661696c5f636f6e5f696e666f0047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a6477636c6970506c616e65496e646578546f456e756d5f636c6f73757265005f5f676d707a *5f696f720047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e *646f775f4b6579496e736572745f7374617469635f696e666f004748437a69494f426173655f49 *6e617070726f707269617465547970655f7374617469635f656e74727900676c4c6f6164496465 *6e74697479007374675f6774576f726436340047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a596f6c766c3535355f63 *6c6f7375726500696e746567657232576f72647a685f666173740047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c72357733 *6c766c3130335f636c6f7375726500736c656570696e675f7175657565005f5f737467696e6974 *5f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695665727465 *784172726179730053797374656d7a69457869745f6c766c315f736c6f77004748437a6953746f *7261626c655f77726974655074724f66665074725f696e666f004748437a694572725f756e6465 *66696e65645f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a69466f675f4578705f636f6e5f696e666f007374675f61705f70707070705f72 *65740047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69436170 *6162696c6974795f7a644c7235786e6c697434325f636c6f73757265004748437a6948616e646c *655f6c766c32335f656e747279004748437a69426173655f6d61705f656e747279004748437a69 *4e756d5f537a685f7374617469635f656e747279005f5f737467696e69745f4772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a69466565646261636b5f007374675f *73656c5f31325f7570645f656e74727900466f726569676e7a69437a69537472696e675f776974 *684341537472696e674c656e5f636c6f7375726500466f726569676e7a6953746f7261626c655f *706f6c797a757a64646d706f6b65325f656e7472790047726170686963737a6955497a69474c55 *547a6943616c6c6261636b737a69526567697374726174696f6e5f427574746f6e426f7843425f *636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a69466f675f61325f656e747279004748437a69576f72645f7a657a65345f656e747279004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c735f7a644c726b32676c766c3631355f636c6f737572650047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a56436c76 *6c3531325f636c6f73757265006e657742434f7a685f666173740047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b3134 *6c69743230325f636c6f73757265004748437a6948616e646c655f77616e745772697461626c65 *48616e646c657a715f696e666f00446174617a6946696e6974654d61705f456d707479464d5f73 *74617469635f656e747279005f5f737467696e69745f4748437a69466c6f61745f005f5f737467 *696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6948 *696e7473005f5f737467696e69745f466f726569676e7a69466f726569676e5074725f00727473 *5f6d6b496e7431360047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a6951756572795574696c735f4765744c696e65536d6f6f746848696e745f636c6f73757265 *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726b39576c766c3733345f636c6f73757265004748437a6948616e646c65 *5f7a64776175676d656e74494f4572726f725f636c6f73757265004748437a695074725f706c75 *735074725f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a6951756572795574696c735f7a644c726b354d6c69743237355f636c6f73757265 *006c7365656b36344040474c4942435f322e310047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a56496c69743131395f *636c6f73757265004748437a69494f426173655f6137315f656e7472790047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c72 *6a584b6c766c3534355f636c6f7375726500446174617a694d617962655f4a7573745f73746174 *69635f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a6951756572795574696c735f7a644c726b36366c69743238305f636c6f7375726500466f72 *6569676e7a6953746f7261626c655f706f6c797a75706f6b65427974654f6666325f636c6f7375 *7265005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a69506f696e74735f00667265654861736b656c6c46756e6374696f6e5074720047 *726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f7a64 *4c7257586d616b654b6579626f61726443616c6c6261636b5f636c6f73757265005f5f73746769 *6e69745f47726170686963737a6955497a69474c55547a6943616c6c6261636b737a6952656769 *7374726174696f6e5f007374675f7369675f696e7374616c6c0047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c723578766c *697434345f636c6f73757265005f5f737467696e69745f47726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6952656164436f7079506978656c73005f5f737467696e *69745f546578747a69506172736572436f6d62696e61746f72737a6952656164505f005f5f7374 *67696e69745f4748437a695265616c5f0047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a6951756572795574696c735f7a644c726b62386c69743335385f636c6f *73757265005f5f737467696e69745f47726170686963737a6955497a69474c55547a694f626a65 *6374735f004748437a69546f7048616e646c65725f7a644c723153616c766c315f656e74727900 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565727955 *74696c735f7a644c726a50716c766c3431365f636c6f737572650047726170686963737a695549 *7a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a64777a64646d *7a675f696e666f004748437a695074725f5074725f7374617469635f696e666f00477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a6948696e74735f7a644c723366 *536c69745f636c6f73757265007274735f67657454687265616449640047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c557a694572726f7273496e7465726e616c5f *7468655265636f726465644572726f72735f656e7472790047726170686963737a6955497a6947 *4c55547a6943616c6c6261636b737a6957696e646f775f4b657946385f636c6f73757265007374 *675f61705f7070705f696e666f0047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a6951756572795574696c735f7a644c726a5a5a416c69743137395f636c6f7375 *7265004748437a69426173655f5a434445715f7374617469635f696e666f005f5f737467696e69 *745f466f726569676e7a694d61727368616c7a6941727261790047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f436170466f675f73 *74617469635f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c *7a69474c7a694361706162696c6974795f7a644c723575586c766c38365f636c6f737572650073 *74675f75745f315f305f756e7265675f72657400776f72643634546f496e74656765727a685f66 *617374004748437a69494f426173655f45786974457863657074696f6e5f636f6e5f696e666f00 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565727955 *74696c735f7a644c726b31776c69743230395f636c6f737572650047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b6369 *6c69743337365f636c6f737572650047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a6951756572795574696c735f7a644c726a56346c69743130395f636c6f7375 *7265006f72496e74656765727a685f66617374005f5f737467696e69745f47726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a69506978656c52656374616e676c6573 *7a69506978656c53746f72616765005f5f737467696e69745f47726170686963737a6955497a69 *474c55547a69436f6e7374616e74735f004748437a69494f426173655f7a644c7236616b613438 *5f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a694361706162696c6974795f7a644c72357a7a706c766c3135355f636c6f73757265007374 *675f61705f375f7570645f696e666f0047726170686963737a6955497a69474c55547a6943616c *6c6261636b737a69526567697374726174696f6e5f43616c6c6261636b547970655f636c6f7375 *72655f74626c007374675f656e7465725f7265740047726170686963737a6952656e646572696e *677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a50306c697431355f *636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a694361706162696c6974795f7a644c72357a7a686c766c3135335f636c6f7375726500657869 *7453746f72616765004748437a69494f426173655f4d5661725f7374617469635f656e74727900 *5f5f656e636f6465466c6f6174005f5f737467696e69745f47726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c7a69466f67006d626c6f636b5f6d617000477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a *644c7235794a6c697436335f636c6f73757265004748437a69426173655f756e7061636b417070 *656e6443537472696e677a685f656e747279005a434d61696e5f6d61696e5f636c6f7375726500 *73696770726f636d61736b4040474c4942435f322e300047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a69426173696354797065735f4361706162696c6974795f *636c6f737572655f74626c0047726170686963737a6955497a69474c55547a6943616c6c626163 *6b737a69526567697374726174696f6e5f7a64646d7a67315f656e747279005f5f676d707a5f61 *646400466f726569676e7a6953746f7261626c655f706f6c797a757a64646d7065656b325f636c *6f73757265004748437a69426173655f497a685f7374617469635f656e74727900477261706869 *63737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f7a644c72387744 *6c766c325f696e666f004748437a6948616e646c655f6c766c36375f636c6f7375726500474843 *7a6948616e646c655f7a6477666c757368526561644275666665725f636c6f7375726500477261 *70686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f4b657946 *375f7374617469635f656e7472790047726170686963737a6955497a69474c55547a6954797065 *735f4d6f757365427574746f6e5f636c6f737572655f74626c0047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b30476c *69743139365f636c6f73757265007374675f494e445f5354415449435f696e666f004748437a69 *48616e646c655f7a6477666c757368526561644275666665725f736c6f77004748437a694e756d *5f6a746f737a715f636c6f73757265005f5f676d707a5f666469765f7172004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c *726a5a5a496c69743138315f636c6f73757265006d616b65537461626c655074727a685f666173 *74004d61696e5f7a6467746f53746174655f696e666f004748437a69494f426173655f496c6c65 *67616c4f7065726174696f6e5f636c6f73757265004748437a6953686f775f615f636c6f737572 *650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726b30456c766c3539305f636c6f73757265005f5f737467696e69745f *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69526173746572 *506f730070617573654040474c4942435f322e3000466f726569676e7a6953746f7261626c655f *706f6c797a7573697a7a654f66325f696e666f00466f726569676e7a69437a694572726f725f7a *64776363616c6c325f736c6f77004748437a69494f426173655f6136365f636c6f737572650073 *63686564756c6546696e616c697a6572730047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a6951756572795574696c735f7a644c726a506f6c697432315f636c6f *73757265005f5f737467696e69745f47726170686963737a6955497a69474c55547a6943616c6c *6261636b737a69526567697374726174696f6e0047726170686963737a6955497a69474c55547a *6943616c6c6261636b737a6957696e646f775f7a644c723877486c766c345f636c6f7375726500 *4748437a69546f7048616e646c65725f7a644c723153346c766c5f636c6f73757265004748437a *6948616e646c655f6c766c36365f656e7472790047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b35306c69743236335f *636c6f7375726500446174617a6946696e6974654d61705f7a644c7233674e7a64776d6b427261 *6e63685f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726a5a5a4b6c766c3537365f636c6f73757265005f *5f66696e695f61727261795f7374617274006e657741727261797a685f66617374005379737465 *6d7a69456e7669726f6e6d656e745f676f5f656e747279005f5f737467696e69745f446174617a *6943686172005f5f737467696e69745f47726170686963737a6955497a69474c55547a6957696e *646f775f00446174617a6946696e6974654d61705f7a647766696e644d696e5f636c6f73757265 *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726b36346c766c3637345f636c6f737572650047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a56 *656c766c3530365f636c6f73757265004748437a6953686f775f5a434453686f775f636f6e5f69 *6e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175 *6572795574696c735f7a644c726a50656c766c3431335f636c6f737572650073757370656e6454 *68726561640072616973654173796e63004748437a69537461626c655f537461626c655074725f *7374617469635f696e666f007374675f7570645f6672616d655f365f7265740047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a64 *4c726a59596c766c3536345f636c6f73757265004748437a694c6973745f7370616e5f696e666f *004748437a69466c6f61745f467a685f636f6e5f656e7472790047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a56796c *766c3531315f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a6951756572795574696c735f7a644c726a5a5a476c766c3537355f636c6f7375 *72650066707574634040474c4942435f322e30005f5f676d707a5f746469765f7172005f5f6c69 *62635f6373755f696e6974004748437a694572725f7061744572726f725f656e74727900477261 *70686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c *735f7a644c726a556f6c766c3439335f636c6f737572650047726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c7a69566572746578537065635f7074727a75676c466f67 *436f6f7264664558545f656e7472790047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a6951756572795574696c735f7a644c726a54456c697438375f636c6f7375 *7265004748437a69494f426173655f6c766c35325f656e747279005f5f737467696e69745f5465 *78747a69526561647a694c65785f0047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a6951756572795574696c735f7a644c726b376b6c69743239395f636c6f7375 *72650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726b35496c69743237345f636c6f737572650047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c72 *6a53346c766c3435375f636c6f73757265007374675f7365715f6672616d655f696e666f004461 *74617a694d617962655f4a7573745f7374617469635f696e666f0047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a4f65 *6c6974335f636c6f73757265005f5f737467696e69745f4748437a69457863657074696f6e5f00 *4748437a694572725f6c766c395f636c6f737572650047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a69466f675f4578705f636f6e5f656e747279004748437a69 *494f426173655f7468726f775f656e747279004748437a69576f72645f66726f6d496e74656765 *72335f696e666f0047726170686963737a6955497a69474c55547a6943616c6c6261636b737a69 *57696e646f775f64386f410047726170686963737a6952656e646572696e677a694f70656e474c *7a69474c7a69457874656e73696f6e735f7a64776363616c6c5f696e666f00436f6e74726f6c7a *69457863657074696f6e5f7a644c72324a6264735f636c6f737572650047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b *38756c69743331375f636c6f737572650047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a694361706162696c6974795f7a644c723576376c6974375f636c6f7375 *7265004748437a69496e745f49387a685f636f6e5f696e666f0047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a69457874656e73696f6e735f684f70656e474c7a *7567657450726f63416464726573735f696e666f0073687574646f776e4861736b656c6c005f5f *737467696e69745f53797374656d7a6945786974004748437a694e756d5f5a43444e756d5f7374 *617469635f696e666f007374675f73656c5f31315f6e6f7570645f696e666f006d75745f757365 *725f74696d65006d626c6f636b735f616c6c6f6361746564007274735f676574507472005f5f62 *73735f73746172740047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a694361706162696c6974795f7a644c723578486c697434375f636c6f73757265004748437a *694c6973745f7a64776c656e5f656e7472790047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b37386c69743239365f63 *6c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *694361706162696c6974795f7a644c723576726c697431325f636c6f73757265005f5f73746769 *6e69745f53797374656d7a69456e7669726f6e6d656e745f006469764d6f64496e74656765727a *685f666173740047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *6951756572795574696c735f7a644c726b614b6c69743335325f636c6f73757265007274735f65 *76616c4c617a79494f5f004748437a69576f72645f7a74335f656e74727900466f726569676e7a *694d61727368616c7a6941727261795f7a64777065656b41727261795f656e7472790047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726b634f6c69743338345f636c6f737572650047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a55756c697431 *30305f636c6f73757265007374675f4e4f5f46494e414c495a45525f636c6f7375726500477261 *70686963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f *6e5f5669736962696c69747943425f7374617469635f656e747279004748437a69576f72645f7a *64664e756d576f726433325f636c6f73757265004748437a69496e745f4931367a685f73746174 *69635f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f7a644c726a55636c766c3439305f636c6f7375726500436f6e74 *726f6c7a69457863657074696f6e5f7a644c72324a666c766c31375f696e666f00446174617a69 *46696e6974654d61705f7a644c723367526c766c315f696e666f006d61696e004748437a694861 *6e646c655f7a6477666c75736857726974654275666665725f736c6f770047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c72 *6b33796c766c3633355f636c6f737572650047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a6951756572795574696c735f7a644c726a59756c69743136325f636c *6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *51756572795574696c735f7a644c726b30306c766c3538305f636c6f7375726500477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a *644c726a534f6c697437345f636c6f7375726500476574526f6f7473007374675f61705f707070 *7070705f726574004748437a69576f72645f577a685f7374617469635f696e666f004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f *7a644c726b36616c69743238315f636c6f73757265007374675f626c6f636b5f7075746d766172 *005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a69546578747572696e677a69517565726965735f0047726170686963737a6955497a69 *474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a644c72334a336c76 *6c32395f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c *7a69474c7a6953746174655661725f53746174655661725f636f6e5f696e666f00446174617a69 *46696e6974654d61705f616464546f464d7a75435f656e7472790047726170686963737a695549 *7a69474c55547a69496e697469616c697a7a6174696f6e5f446f75626c6542756666657265645f *7374617469635f696e666f007374675f73656c5f31335f7570645f696e666f005f5f737467696e *69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69506572 *467261676d656e7400696e697444656661756c7448616e646c657273004748437a69426173655f *756e7061636b43537472696e677a685f636c6f737572650047726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a59536c6974 *3136385f636c6f73757265005f5f737467696e69745f4748437a69417272004772617068696373 *7a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f537065 *6369616c557043425f7374617469635f656e747279007374675f67635f766f69645f7265740047 *48437a69546f7048616e646c65725f7a644c723153616c766c315f636c6f737572650047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726a52306c697434365f636c6f737572650047726170686963737a6955497a69474c55 *547a6943616c6c6261636b737a6957696e646f775f6c766c335f696e666f004748437a69426173 *655f5a30545f636c6f737572655f74626c0047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a6951756572795574696c735f7a644c726a50416c697432345f636c6f *73757265004748437a69494f426173655f6136365f696e666f0047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f47657447656e6572 *6174654d69706d617048696e745f636c6f73757265004748437a69426173655f756e7061636b43 *537472696e67557466387a685f696e666f0047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a6951756572795574696c735f7a644c726b38416c766c3731335f636c *6f73757265007374675f6f723634007365747570527473466c616773005f5f737467696e69745f *4748437a695265616c0047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726b39676c69743332395f636c6f73757265004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c69 *74795f7a644c723578726c697434335f636c6f73757265004748437a69494f426173655f6c766c *34385f656e747279005f5f737467696e69745f436f6e74726f6c7a694d6f6e6164004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f *7a644c726a52476c766c3435315f636c6f73757265005f5f737467696e69745f47726170686963 *737a6955497a69474c55547a694d656e750047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a6951756572795574696c735f7a644c726b35536c766c3637315f636c *6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *51756572795574696c735f7a644c726b344d6c766c3635345f636c6f73757265007374675f6170 *5f315f7570645f656e74727900756e626c6f636b4173796e63457863657074696f6e737a685f66 *617374005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a69474c626f6f6c65616e5f004748437a694e756d5f4a7a685f7374617469635f *696e666f004748437a69494f426173655f4275666665724c6973744e696c5f7374617469635f69 *6e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175 *6572795574696c735f7a644c726b36576c69743239335f636c6f73757265004748437a6953686f *775f6c766c31335f656e74727900696e697441646a7573746f72004748437a69494f426173655f *4275666665725f636f6e5f656e7472790047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a6951756572795574696c735f7a644c726b34536c69743236315f636c6f *737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6943 *61706162696c6974795f7a644c723577726c766c3130395f636c6f73757265004f75744f664865 *6170486f6f6b007374675f73656c5f305f6e6f7570645f696e666f00676c466f67690047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726b61326c69743334315f636c6f737572650047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b35366c766c36 *35395f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a6951756572795574696c735f7a644c726b34776c766c3635305f636c6f737572650047 *48437a69546f7048616e646c65725f6b5f696e666f004748437a69426173655f497a685f636f6e *5f656e747279005f5f737467696e69745f4748437a6953686f770047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a4f4f *6c697431325f636c6f73757265004748437a69494f426173655f6135335f656e747279005f5f6c *6962635f73746172745f6d61696e4040474c4942435f322e3000676c436c656172436f6c6f7200 *7374675f454e445f54534f5f51554555455f636c6f73757265004748437a69494f426173655f45 *786974457863657074696f6e5f7374617469635f656e747279004748437a69426173655f45515f *7374617469635f656e7472790047726170686963737a6955497a69474c55547a6943616c6c6261 *636b737a6957696e646f775f4d6f646966696572735f7374617469635f696e666f004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f *7a644c72357a7a356c766c3135305f636c6f737572650047726170686963737a6955497a69474c *55547a6943616c6c6261636b737a6957696e646f775f6c766c335f656e74727900477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a *644c726a52596c697436315f636c6f737572650047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a55366c697439345f63 *6c6f7375726500666f726b50726f636573730047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b38346c766c3730355f63 *6c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *6951756572795574696c735f7a644c726a566b6c69743131335f636c6f7375726500436f6e7472 *6f6c7a69457863657074696f6e5f7a644c72324a646c766c31365f636c6f73757265005f5f676d *707a5f746469765f720047726170686963737a6955497a69474c55547a6943616c6c6261636b73 *7a6957696e646f775f61345f636c6f73757265005f5f696e69745f61727261795f656e64004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c735f7a644c726a53636c766c3435395f636c6f737572650047726170686963737a6955497a69 *474c55547a6943616c6c6261636b737a6957696e646f775f7a644c7238784e6139335f656e7472 *79004748435f5a434352657475726e61626c655f7374617469635f696e666f004748437a694e75 *6d5f7a6c5f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a6951756572795574696c735f7a644c726b62496c69743336375f636c6f73757265 *004748437a69546f7048616e646c65725f7a644c723153636c766c325f636c6f73757265004772 *6170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f7a644c *725872756e6d61727368616c5370656369616c4b65795f696e666f005f5f737467696e69745f47 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6954657874757269 *6e677a69456e7669726f6e6d656e74735f007374675f73656c5f385f6e6f7570645f656e747279 *004748437a69426173655f47545f7374617469635f696e666f0047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c723575546c *766c38355f636c6f73757265007969656c647a685f66617374005f5f737467696e69745f477261 *70686963737a6952656e646572696e677a694f70656e474c7a69474c7a69546578747572696e67 *7a694f626a656374735f0047726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a6951756572795574696c735f4765745061636b434d594b48696e745f7374617469635f *656e747279004748437a69494f426173655f7a647773686f777350726563325f656e7472790047 *48437a6953686f775f7a647773686f775369676e6564496e745f696e666f004772617068696373 *7a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f636f6d *70617265325f656e747279004748437a69494f426173655f6c766c35345f696e666f007374675f *454e445f4d55545f4c4953545f636c6f73757265004748437a69546f7048616e646c65725f7a64 *4c723153616c766c315f736c6f77007374675f63746f695f7265745f46315f696e666f00446174 *617a6946696e6974654d61705f706f6c797a7564656c6574654d696e5f636c6f73757265004772 *6170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f7a644c *7238784e6139335f636c6f737572650047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a6951756572795574696c735f7a644c726b34496c766c3635335f636c6f73 *7572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e64 *6f775f446f776e5f7374617469635f696e666f004748437a69494f426173655f6136355f696e66 *6f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726b376d6c766c3639345f636c6f73757265004748437a69494f426173 *655f686561704f766572666c6f775f636c6f7375726500466f726569676e7a6953746f7261626c *655f706f6c797a75616c69676e6d656e74325f656e7472790047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a574f6c69 *743133365f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a6951756572795574696c735f476574556e7061636b434d594b48696e745f636c6f *737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951 *756572795574696c735f7a644c726b344f6c69743236305f636c6f737572650047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a64 *4c726a594b6c69743136365f636c6f737572650047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a694361706162696c6974795f7a644c72357a7a396c766c313531 *5f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a694361706162696c6974795f7a644c723576686c766c39315f636c6f73757265005f5f7374 *67696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *4269746d6170730047726170686963737a6955497a69474c55547a6943616c6c6261636b737a69 *526567697374726174696f6e5f4b6579626f617264557043425f7374617469635f656e74727900 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565727955 *74696c735f7a64776c69676874496e646578546f456e756d5f656e747279004748437a69494f42 *6173655f7a644c723661716135315f696e666f004748437a69576f72645f7a64646d73686f774c *697374335f656e747279005f5f737467696e69745f446174617a6944796e616d69635f00737467 *5f494e445f355f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c *7a69474c7a6951756572795574696c735f7a644c726b30386c766c3538325f636c6f7375726500 *5f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a69506978656c52656374616e676c65737a6953696e6b5f0047726170686963737a695549 *7a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f5370656369616c *557043425f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a694672616d656275666665725f6c6974325f636c6f737572650047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f4765 *745065727370656374697665436f7272656374696f6e48696e745f7374617469635f696e666f00 *7374675f494e445f345f696e666f007374675f7570645f6672616d655f726574007374675f6763 *5f66315f696e666f00436f6e74726f6c7a69457863657074696f6e5f7a644c72324a6264735f69 *6e666f004748437a69494f426173655f73686f777350726563385f696e666f005f5f737467696e *69745f546578747a69506172736572436f6d62696e61746f72737a6952656164507265635f0047 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574 *696c735f7a644c726b36596c766c3638385f636c6f737572650047726170686963737a6955497a *69474c55547a6943616c6c6261636b737a6957696e646f775f55705f636c6f7375726500474843 *7a694572725f6c766c375f636c6f73757265004748437a69494f426173655f426c6f636b427566 *666572696e675f7374617469635f656e747279005f5f737467696e69745f47726170686963737a *6955497a69474c55547a6943616c6c6261636b737a6957696e646f770047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a69436f6f72645472616e735f7a6457506f *736974696f6e5f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c *6261636b737a6957696e646f775f4b657955705f7374617469635f696e666f004748437a694861 *6e646c655f696f657a75636c6f73656448616e646c655f636c6f73757265004748437a69426173 *655f5a435f636f6e5f656e747279007274735f6d6b496e74333200676c75745377617042756666 *65727300466f726569676e7a69437a694572726f725f7468726f774572726e6f49665265747279 *5f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *457874656e73696f6e735f6c766c315f636c6f7375726500737461745f7374617274496e697400 *4748437a69426173655f756e7061636b43537472696e677a685f696e666f004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c *726a564d6c69743132305f636c6f737572650047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a52656c766c3434345f63 *6c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *6951756572795574696c735f476574506f6c79676f6e536d6f6f746848696e745f636c6f737572 *650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f77 *5f7a644c72574c6d616b654d6f75736543616c6c6261636b5f656e747279004772617068696373 *7a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f7a644c7238774a6c76 *6c355f636c6f73757265005f5f737467696e69745f47726170686963737a6952656e646572696e *677a694f70656e474c7a69474c557a69496e697469616c697a7a6174696f6e004748437a69494f *426173655f6c766c35375f656e747279006e65774d5661727a685f666173740047726170686963 *737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f436861725f636f6e *5f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *566572746578537065635f436f6c6f72345f636f6e5f696e666f004748437a6953686f775f6c76 *6c31385f636c6f73757265007374675f494e445f325f696e666f0047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a534b *6c697437335f636c6f737572650047726170686963737a6955497a69474c55547a69496e697469 *616c697a7a6174696f6e5f7a644c72356d457a647767656e657269634c656e677468315f656e74 *7279005f5f737467696e69745f47726170686963737a6955497a69474c55547a69436f6c6f726d *617000757064617465537461626c655074725461626c650047726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a54776c6974 *38355f636c6f73757265007265616c6c6f634040474c4942435f322e300072656d496e74656765 *727a685f6661737400726573657447656e53796d5a68004748437a69494f426173655f7a647773 *686f777350726563325f636c6f73757265004748437a6948616e646c655f6175676d656e74494f *4572726f725f656e747279004748437a69546f7048616e646c65725f7265706f7274537461636b *4f766572666c6f775f636c6f73757265007374675f72656d496e743634004748437a6942617365 *5f7a7a65726f496e745f636c6f73757265004748437a69426173655f5a435f7374617469635f65 *6e747279005f5f737467696e69745f466f726569676e7a69437a69537472696e675f004748437a *6948616e646c655f696f657a75636c6f73656448616e646c655f736c6f77004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c *726a52516c697435395f636c6f73757265004748437a694e756d5f6c69745f696e666f00477261 *70686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c *735f7a644c726a5a5a6b6c69743137355f636c6f737572650047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a5a5a536c *766c3537385f636c6f73757265004748437a69494f426173655f6c766c36345f696e666f005f5f *737467696e69745f47726170686963737a6955497a69474c55547a69426567696e5f004748437a *69457863657074696f6e5f6361746368457863657074696f6e5f636c6f73757265005f5f737467 *696e69745f446174617a69436861725f0047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a69457874656e73696f6e735f7a64776363616c6c5f656e747279004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c735f7a644c726a546f6c697438335f636c6f73757265004748437a694c6973745f6c766c3132 *5f656e747279006177616b656e426c6f636b65645175657565004748437a69494f426173655f6c *766c35395f696e666f0047726170686963737a6955497a69474c55547a6954797065735f7a644c *72326a776c766c5f636c6f73757265004748437a69494f426173655f6136375f656e747279006d *696e7573496e74656765727a685f66617374004748437a6948616e646c655f6131385f656e7472 *790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726a52736c697435335f636c6f737572650047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a57 *476c69743133345f636c6f737572650053797374656d7a69456e7669726f6e6d656e745f676f32 *5f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a6951756572795574696c735f7a644c726a55436c69743130325f636c6f7375726500446174 *617a694d617962655f4a7573745f636f6e5f696e666f005f5f737467696e69745f4748437a6953 *7461626c655f005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a69426567696e456e645f004748437a694e756d5f6a746f735f696e666f *004748437a69494f426173655f5265736f7572636556616e69736865645f7374617469635f656e *747279004748437a69494f426173655f496e7465727275707465645f7374617469635f696e666f *00466f726569676e7a6953746f7261626c655f706f6c797a757a64646d706f6b65325f696e666f *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726b62516c69743336395f636c6f737572650047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b30 *616c69743138385f636c6f737572650047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a6951756572795574696c735f7a644c726a594f6c69743136375f636c6f73 *75726500676c5847657450726f63416464726573734152420047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a69566572746578537065635f7a644c72616a5a5a6c *766c34325f696e666f00446174617a694d617962655f4e6f7468696e675f7374617469635f696e *666f004748437a69546f7048616e646c65725f7a644c723153616c766c315f696e666f00477261 *70686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974 *795f7a644c7235796c6c697435375f636c6f737572650047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b356d6c766c36 *36335f636c6f7375726500676c7574506f73745265646973706c61790047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a *53476c697437325f636c6f737572650047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a694361706162696c6974795f7a644c723579446c766c3134335f636c6f73 *75726500646174615f7374617274007274735f6d6b426f6f6c0047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b33636c *69743233355f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a6951756572795574696c735f7a644c726b306d6c69743139315f636c6f737572 *650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374 *726174696f6e5f4b6579626f61726443425f7374617469635f696e666f0047726170686963737a *6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f49646c65 *43425f636c6f73757265007374675f696e69740047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a69466f675f4578705f7374617469635f656e7472790047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726a59616c69743135375f636c6f737572650047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b32416c766c36 *32305f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b *737a69526567697374726174696f6e5f7a644c72334a316c766c32385f656e7472790047726170 *686963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e *5f7a64777a64646d7a675f656e747279004748437a69496e745f4933327a685f7374617469635f *696e666f0047726170686963737a6955497a69474c55547a6954797065735f576865656c55705f *636c6f73757265005f5f737467696e69745f47726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a69436c697070696e675f00676c7574446973706c617946756e630077 *61697457726974657a685f666173740047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a6951756572795574696c735f7a644c726a54676c697438315f636c6f7375 *72650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726b34636c766c3634355f636c6f73757265005f5f737467696e6974 *5f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c557a694572726f *72735f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175 *6572795574696c735f7a644c726b31306c69743230315f636c6f73757265004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c *726a59676c766c3535335f636c6f737572650047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b33386c69743233345f63 *6c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6952 *6567697374726174696f6e5f7a64777a657a655f656e7472790047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6948696e74735f446f6e74436172655f636c6f73 *757265005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a69506978656c52656374616e676c65730047726170686963737a6955497a6947 *4c55547a6943616c6c6261636b737a69526567697374726174696f6e5f74686553636176656e67 *65725f696e666f004748437a69494f426173655f486561704f766572666c6f775f737461746963 *5f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *694361706162696c6974795f7a644c723578426c766c3132375f636c6f73757265004772617068 *6963737a6955497a69474c55547a6957696e646f775f676c757443726561746557696e646f775f *696e666f00466f726569676e7a6953746f7261626c655f7a646653746f7261626c655074725f63 *6c6f73757265006973446f75626c654e656761746976655a65726f004748437a69576f72645f7a *737a65345f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726b35326c766c3635385f636c6f73757265005f5f *737467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a69506978656c446174615f004748437a69457863657074696f6e5f6361746368457863657074 *696f6e5f656e747279004748437a69494f426173655f6c766c35395f656e747279004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f *7a644c726a53456c766c3436365f636c6f73757265004748437a69496e745f636f6d7061726532 *5f696e666f004748437a69494f426173655f5265736f757263654578686175737465645f737461 *7469635f656e747279004748437a6953746f7261626c655f726561645074724f66665074725f63 *6c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *6951756572795574696c735f7a644c726a57576c69743133385f636c6f73757265004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f *7a644c726b38796c69743331385f636c6f737572650047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b396b6c69743333 *305f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b73 *7a6957696e646f775f4d6f757365427574746f6e5f636f6e5f656e747279004772617068696373 *7a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f7a644c723878486139 *305f636c6f73757265005f5f666978756e7364666469005f5f737467696e69745f53797374656d *7a69506f7369787a69496e7465726e616c735f0047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a69566572746578537065635f7a644c72616a586c766c34315f63 *6c6f73757265007374675f73656c5f315f6e6f7570645f656e747279007374675f72616973655f *696e666f0064656c61797a685f66617374005f5f737467696e69745f47726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a69426567696e456e64004748437a69494f42 *6173655f537461636b4f766572666c6f775f7374617469635f656e747279004772617068696373 *7a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f4b657946325f636c6f *73757265005f5f737467696e69745f466f726569676e7a69466f726569676e507472007374675f *61705f365f7570645f696e666f0073746f7054696d6572005f66696e69007374675f6c65496e74 *3634005f5f737467696e69745f4748437a6948616e646c65005f5f737467696e69745f47726170 *686963737a6955497a69474c55547a69426567696e0066636e746c4040474c4942435f322e3000 *4748437a69494f426173655f496c6c6567616c4f7065726174696f6e5f7374617469635f696e66 *6f007274735f6576616c5f0047726170686963737a6952656e646572696e677a694f70656e474c *7a69474c7a69426173696354797065735f456e61626c65645f7374617469635f696e666f004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c735f7a644c726b61636c766c3733385f636c6f73757265004748437a69426173655f497a685f *7374617469635f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c *7a69474c7a6951756572795574696c735f7a644c726b61496c766c3734365f636c6f7375726500 *4748437a69494f426173655f6136335f636c6f737572650047726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c7235764e6c766c *39395f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b *737a69526567697374726174696f6e5f43726f7373696e6743425f7374617469635f656e747279 *0053797374656d7a69456e7669726f6e6d656e745f676574417267735f736c6f77004748437a69 *48616e646c655f6d6b53746448616e646c655f656e747279004d61696e5f66325f636c6f737572 *65004748437a69546f7048616e646c65725f72756e494f5f696e666f00446174617a6946696e69 *74654d61705f6c6f6f6b7570464d5f696e666f005f5f737467696e69745f466f726569676e7a69 *4d61727368616c7a6941727261795f005f5f737467696e69745f436f6e74726f6c7a694d6f6e61 *647a694669785f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6948696e74735f7a644c723366596c6974335f636c6f73757265006765744d426c6f636b0074 *727954616b654d5661727a685f66617374004748437a694e756d5f706c7573496e74656765725f *636c6f7375726500446174617a6946696e6974654d61705f756e6974464d5f656e747279004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c69 *74795f7a644c723577626c766c3130355f636c6f737572650047726170686963737a6955497a69 *474c55547a6954797065735f4d6964646c65427574746f6e5f636c6f7375726500477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a69436f6f72645472616e735f50 *6f736974696f6e5f7374617469635f696e666f0047726170686963737a6955497a69474c55547a *6943616c6c6261636b737a6957696e646f775f4b65794631305f7374617469635f656e74727900 *47726170686963737a6955497a69474c55547a6954797065735f7a644c72326a776c766c5f696e *666f0047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f *775f7a644c7238784a6139315f656e7472790047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b626b6c69743336315f63 *6c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6952 *6567697374726174696f6e5f506173736976654d6f74696f6e43425f7374617469635f696e666f *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726a544b6c766c3438335f636c6f737572650047726170686963737a6955 *497a69474c55547a6943616c6c6261636b737a6957696e646f775f4b65794c6566745f73746174 *69635f656e7472790047726170686963737a6955497a69474c55547a6943616c6c6261636b737a *6957696e646f775f4d6f646966696572735f636f6e5f696e666f0047726170686963737a695549 *7a69474c55547a6943616c6c6261636b737a6957696e646f775f64386f7600466f726569676e7a *694d61727368616c7a6941727261795f706f6b654172726179305f656e74727900477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a *644c726a59796c69743136335f636c6f737572650047726170686963737a6955497a69474c5554 *7a6954797065735f576865656c55705f7374617469635f656e74727900466f726569676e7a6943 *7a69537472696e675f776974684341537472696e675f636c6f73757265005f5f737467696e6974 *5f4748437a69494f0047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a6951756572795574696c735f7a644c726b33416c69743234315f636c6f7375726500474843 *7a69576f72645f7a647766726f6d496e7465676572335f696e666f004748437a69494f42617365 *5f486561704f766572666c6f775f7374617469635f696e666f0066636c6f73654040474c494243 *5f322e31005f5f737467696e69745f4748437a69466f726569676e507472004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c *726b38676c766c3730385f636c6f737572650047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a556b6c766c3439325f63 *6c6f73757265004d61696e5f6d61696e5f636c6f73757265005f5f737467696e69745f4748437a *69494f5f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951 *756572795574696c735f7a644c726b62346c69743335375f636c6f73757265004748437a694861 *6e646c655f7a644c723861706c766c32355f696e666f006765744d426c6f636b73004748437a69 *5061636b5f756e7061636b43537472696e675f656e7472790047726170686963737a6955497a69 *474c55547a69496e697469616c697a7a6174696f6e5f696e697469616c697a7a655f696e666f00 *436f6e74726f6c7a69457863657074696f6e5f7a644c72324a356c766c31345f656e7472790047 *726170686963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174 *696f6e5f57696e646f7753746174757343425f636c6f73757265007374675f696e746572705f63 *6f6e737472375f656e7472790047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a6951756572795574696c735f7a644c726a5a5a756c766c3537325f636c6f737572 *650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726a53696c697436365f636c6f73757265005f5f737467696e69745f47 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69466c7573684669 *6e6973685f004748437a694e756d5f6c766c375f636c6f737572650047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b34 *616c69743235305f636c6f73757265004748437a694e756d5f537a685f636f6e5f656e74727900 *47726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f7a *644c7238784e6139335f696e666f007374675f7570645f6672616d655f345f7265740047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726b324d6c766c3632335f636c6f737572650047726170686963737a6955497a69474c *55547a6943616c6c6261636b737a6957696e646f775f436861725f636f6e5f656e747279006361 *6c634c697665004748437a69494f426173655f6134345f696e666f0047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a56 *456c69743131385f636c6f7375726500737472726368724040474c4942435f322e30005f5f7374 *67696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c557a *694d69706d617070696e67005f5f737467696e69745f446174617a6949785f0047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a69436f6f72645472616e735f506f *736974696f6e5f636f6e5f696e666f004748437a69494f426173655f426c6f636b427566666572 *696e675f636f6e5f656e74727900466f726569676e7a69437a694572726f725f7468726f774572 *726e6f496652657472795f636c6f737572650047726170686963737a6955497a69474c55547a69 *43616c6c6261636b737a69526567697374726174696f6e5f4d6f75736543425f7374617469635f *696e666f0074696d65734040474c4942435f322e30005f5f737467696e69745f446174617a6949 *4f526566004748437a69426173655f46616c73655f636c6f7375726500436f6e74726f6c7a6945 *7863657074696f6e5f7a644c7232495a5a6c766c31315f656e7472790047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a *50756c766c3431375f636c6f73757265004748437a69494f426173655f5065726d697373696f6e *44656e6965645f7374617469635f696e666f0047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a5a5a516c69743138335f *636c6f73757265006361665f6c6973740067657450726f67417267760047726170686963737a69 *55497a69474c55547a6943616c6c6261636b737a6957696e646f775f7a644c7238784c6139325f *696e666f004748437a69426173655f5a435f636f6e5f696e666f007374675f67656e5f626c6f63 *6b0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726a54596c697439325f636c6f737572650047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a50 *596c697433305f636c6f73757265005f5f676d706e5f6763645f310047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a69436f6f72645472616e735f4d6f64656c76 *6965775f7374617469635f696e666f004748437a69496e745f4933327a685f636f6e5f656e7472 *7900446174617a6946696e6974654d61705f7a644c7233686e6c766c31375f696e666f00446174 *617a694d617962655f4a7573745f636f6e5f656e7472790047726170686963737a6955497a6947 *4c55547a6943616c6c6261636b737a69526567697374726174696f6e5f5461626c657442757474 *6f6e43425f7374617469635f656e7472790047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a6951756572795574696c735f7a644c726b35436c766c3636375f636c *6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *51756572795574696c735f7a644c726b34716c69743235345f636c6f73757265005f5f73746769 *6e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c557a6945 *72726f7273496e7465726e616c5f004748437a6948616e646c655f6c766c37365f636c6f737572 *650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726b35516c69743237365f636c6f737572650047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a *4f636c766c3339375f636c6f737572650047726170686963737a6955497a69474c55547a694361 *6c6c6261636b737a6957696e646f775f4b657946325f7374617469635f696e666f004748437a69 *426173655f5a4d5a4e5f636c6f737572650047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a6951756572795574696c735f7a644c726b62616c766c3735335f636c *6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a695769 *6e646f775f7a644c725754676c75744b6579626f617264557046756e635f696e666f007374675f *63617463685f6672616d655f345f726574004748437a695074725f706c75735074725f656e7472 *790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726a51696c697433355f636c6f73757265005f5f737467696e69745f47 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69506978656c5265 *6374616e676c65737a69436f6c6f725461626c65006973446f75626c6544656e6f726d616c697a *65640047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726b37616c766c3639315f636c6f73757265005f5f737467696e6974 *5f446174617a694978007374675f4e4f5f46494e414c495a45525f696e666f004748437a694c69 *73745f7a644c723155536c766c31315f636c6f73757265005f5f737467696e69745f4772617068 *6963737a6955497a69474c55545f0047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a6951756572795574696c735f7a644c726b346b6c766c3634375f636c6f7375 *726500676c75745265736861706546756e63004748437a6948616e646c655f6c766c35375f636c *6f73757265004748437a69546f7048616e646c65725f64735f696e666f005f5f737467696e6974 *5f466f726569676e7a694d61727368616c7a69506f6f6c5f0047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b37596c69 *743330395f636c6f73757265005f5f737467696e69745f47726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6945646765466c61675f0047726170686963737a695549 *7a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f4b6579626f6172 *64557043425f7374617469635f696e666f0047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a6951756572795574696c735f7a644c726b32536c69743233305f636c *6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a695769 *6e646f775f7a644c723878506139345f656e7472790047726170686963737a6955497a69474c55 *547a6943616c6c6261636b737a69526567697374726174696f6e5f537061636562616c6c4d6f74 *696f6e43425f636c6f73757265007374675f535441424c455f4e414d455f696e666f0044617461 *7a6946696e6974654d61705f7a644c7233674e7a64776d6b4272616e63685f636c6f7375726500 *4748437a69494f426173655f6137325f656e747279005f5f737467696e69745f47726170686963 *737a6955497a69474c55547a69446576696365436f6e74726f6c5f004748437a6953686f775f73 *686f77735f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a6951756572795574696c735f676574496e7465676572315f656e747279004772617068 *6963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f *7a64664f726443616c6c6261636b49445f636c6f73757265004748437a6948616e646c655f6c76 *6c37345f636c6f7375726500666f70656e36344040474c4942435f322e31004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c *726b30366c69743138375f636c6f73757265004748437a69494f426173655f6c766c35355f636c *6f73757265004748437a69576f72645f577a685f636f6e5f696e666f0047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b *354f6c766c3637305f636c6f73757265007374675f67635f756e70745f72315f696e666f007374 *675f73656c5f335f6e6f7570645f696e666f007374675f494e445f335f696e666f004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f *7a644c726a58576c766c3534385f636c6f737572650047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b346f6c766c3634 *385f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726a55736c766c3439345f636c6f73757265004772 *6170686963737a6955497a69474c55547a6954797065735f6c766c315f696e666f006765747469 *6d656f666461794040474c4942435f322e300047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b32696c69743232315f63 *6c6f73757265004748437a694c6973745f726576657273655f656e747279004772617068696373 *7a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f7a644c725750676c75 *745370656369616c46756e635f656e747279007374675f41505f535441434b5f696e666f004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c69 *74795f7a64776d616b654361706162696c6974795f696e666f004748437a69496e745f7a64777a *657a655f656e747279004748437a694c6973745f7a644c723155656c766c5f696e666f00466f72 *6569676e7a6953746f7261626c655f706f6c797a757065656b427974654f6666325f636c6f7375 *72650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726a504b6c766c3432315f636c6f737572650047726170686963737a *6955497a69474c55547a6954797065735f5269676874427574746f6e5f636c6f73757265004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c735f7a644c726b33656c766c3633305f636c6f737572650047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c723577376c76 *6c3130345f636c6f73757265004748437a69494f426173655f426c6f636b427566666572696e67 *5f636f6e5f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a694361706162696c6974795f7a644c7235774a6c697433325f636c6f7375726500474843 *7a69494f426173655f6c766c34395f656e7472790047726170686963737a6952656e646572696e *677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b61436c6974333530 *5f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a6951756572795574696c735f7a644c726b364f6c69743239315f636c6f7375726500477261 *70686963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f *6e5f4d6f74696f6e43425f636c6f737572650047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b38306c766c3730345f63 *6c6f73757265004748437a69494f426173655f6c766c34395f636c6f73757265004748437a6945 *72725f7a644c7250616c766c31335f636c6f73757265005f5f737467696e69745f477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a69546578747572696e677a694f *626a65637473004748437a69466c6f61745f467a685f7374617469635f696e666f004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f *7a644c726b39386c69743332375f636c6f737572650047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a574b6c69743133 *355f636c6f73757265004748437a69494f426173655f7a644c7236616d6134395f696e666f0073 *74675f7570645f6672616d655f305f7265740047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b61476c69743335315f63 *6c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *6951756572795574696c735f7a644c726a504f6c766c3432325f636c6f73757265005f5f737467 *696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6956 *65727465784172726179735f005f5f737467696e69745f47726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a695374617465566172004748437a69426173655f497a68 *5f636f6e5f696e666f005f5f737467696e69745f446174617a6945697468657200477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a *644c723578786c766c3132365f636c6f73757265007374675f696e746572705f636f6e7374725f *656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *4361706162696c6974795f7a644c72357a7a426c766c3135385f636c6f7375726500676c456e61 *626c65007374675f61705f355f7570645f656e7472790047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b39776c697433 *33335f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b *737a6957696e646f775f4b65794c6566745f636c6f737572650047726170686963737a6955497a *69474c55547a6943616c6c6261636b737a6957696e646f775f5370656369616c4b65795f636c6f *737572655f74626c00446174617a6946696e6974654d61705f7a644c7233675a5a6c766c355f65 *6e74727900446174617a6946696e6974654d61705f756e6974464d5f636c6f73757265005f5f73 *7467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *6952656374616e676c6573004748437a69494f426173655f7a644c723661656134355f656e7472 *79007374675f626c6f636b5f31004748437a694c6973745f7461696c5f636c6f73757265007374 *675f64756d6d795f7265745f696e666f0074696479416c6c6f636174654c697374730047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726a52386c697434385f636c6f737572650047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b31366c766c3539 *375f636c6f73757265004748437a69494f426173655f57726974654275666665725f636c6f7375 *72650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726b39596c69743334305f636c6f73757265005f5f737467696e6974 *5f4748437a695265616400756e626c6f636b557365725369676e616c730047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c557a694572726f7273496e7465726e616c *5f7a644c7233696e6c766c32305f696e666f0047726170686963737a6955497a69474c55547a69 *43616c6c6261636b737a69526567697374726174696f6e5f537061636562616c6c526f74617465 *43425f7374617469635f696e666f0047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a6951756572795574696c735f7a644c726a4f596c766c3430395f636c6f7375 *7265007374675f63746f695f7265745f44315f696e666f004748437a6948616e646c655f644546 *41554c547a754255464645527a7553495a5a455f696e666f004748437a69494f426173655f7a64 *7773686f777350726563345f656e747279007374675f73656c5f375f7570645f696e666f004748 *437a6948616e646c655f6d6b53746448616e646c655f636c6f73757265004748437a694572725f *6c766c375f696e666f0073746743616c6c6f6342797465730047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b37676c69 *743239385f636c6f73757265004748437a69494f426173655f496e7465727275707465645f7374 *617469635f656e747279004748437a69426173655f5a437a745a435f7374617469635f696e666f *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726a55776c766c3439355f636c6f737572650047726170686963737a6955 *497a69474c55547a6943616c6c6261636b737a6957696e646f775f4b657946315f737461746963 *5f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *4361706162696c6974795f7a644c723578706c766c3132345f636c6f7375726500477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a *644c726b38596c766c3731395f636c6f73757265004748437a69494f426173655f6c766c35305f *696e666f004748437a69576f72645f7a657a65345f636c6f73757265004748437a694c6973745f *706f6c797a757265765f656e747279004748437a69494f426173655f5065726d697373696f6e44 *656e6965645f7374617469635f656e74727900696e74657272757074537467527473007374675f *6765576f72643634004748437a694c6973745f7a644c7231554f6c766c395f656e747279004748 *437a6948616e646c655f7a644c723861706c766c32355f636c6f73757265004748437a6948616e *646c655f7769746848616e646c657a757a715f696e666f007374675f6571576f72643634004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c735f7a644c726b30796c69743139345f636c6f73757265007274735f61726763004772617068 *6963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f4b6579537461 *74655f636c6f737572655f74626c00446174617a694d617962655f4e6f7468696e675f636c6f73 *75726500736967656d7074797365744040474c4942435f322e300047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b6265 *6c766c3735345f636c6f73757265004748437a694c6973745f7a644c72397a7a7072656c7a756c *6973747a757374725f696e666f004748437a69466c6f61745f447a685f636f6e5f656e74727900 *4748437a69494f426173655f6c766c36305f696e666f005f5f737467696e69745f477261706869 *63737a6955497a69474c55547a69446562756767696e675f004748437a6953746f7261626c655f *77726974655074724f66665074725f656e7472790047726170686963737a6952656e646572696e *677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a5a5a6f6c69743137 *365f636c6f73757265005f5f737467696e69745f47726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a694576616c7561746f72735f0047726170686963737a6955497a *69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a644c7233484e6c *766c32345f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a6951756572795574696c735f7a644c726b61736c766c3734325f636c6f73757265 *0047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f *7a644c72574e676c75745370656369616c557046756e635f696e666f005f5f737467696e69745f *53797374656d7a69494f7a694572726f725f004748437a69494f426173655f5061747465726e4d *617463684661696c5f636f6e5f656e747279007374675f73656c5f31305f6e6f7570645f696e66 *6f007374675f776f7264546f576f72643634004748437a69494f426173655f494f457863657074 *696f6e5f7374617469635f696e666f0047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a6951756572795574696c735f7a644c726b36696c69743238335f636c6f73 *757265005f5f737467696e69745f47726170686963737a6955497a69474c55547a69436f6c6f72 *6d61705f004748437a69546f7048616e646c65725f7a644c723153636c766c325f656e74727900 *7374675f67635f7574004748437a69494f426173655f6c766c36335f636c6f7375726500474843 *7a69494f426173655f6136345f696e666f0047726170686963737a6955497a69474c55547a6943 *616c6c6261636b737a69526567697374726174696f6e5f7a64646d6d6178315f656e747279005f *5f737467696e69745f47726170686963737a6955497a69474c55547a6943616c6c6261636b737a *6957696e646f775f007374675f696e746572705f636f6e737472315f656e747279004748437a69 *494f426173655f6137305f696e666f004748437a694572725f7a644c7250616c766c31335f696e *666f004748437a694c6973745f6c766c31325f636c6f73757265005f5f737467696e69745f4772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69466f675f00673000 *4748437a69494f426173655f6c766c36315f696e666f0047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a58306c697431 *33395f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a694361706162696c6974795f7a644c72357a7a626c697437305f636c6f737572650074 *696d6573496e74656765727a685f66617374004748437a69576f72645f66726f6d496e74656765 *72335f636c6f73757265004748437a69494f426173655f4173796e63457863657074696f6e5f73 *74617469635f696e666f00616c6c6f63537472486173685461626c650047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b *63636c766c3736395f636c6f73757265004748437a69494f426173655f5265736f757263654275 *73795f7374617469635f696e666f0047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a6951756572795574696c735f7a644c726a58386c69743134315f636c6f7375 *72650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726b36516c766c3638365f636c6f737572650047726170686963737a *6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f49646c65 *43425f7374617469635f656e747279004748437a69426173655f5a4d5a4e5f7374617469635f69 *6e666f004748437a694c6973745f7a64776c656e5f636c6f73757265005f5f737467696e69745f *466f726569676e7a69507472004748437a69494f426173655f7a647773686f777350726563355f *656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *51756572795574696c735f7a644c726b35756c766c3636355f636c6f7375726500477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a *644c723576526c766c3130305f636c6f73757265004748437a694c6973745f7a644c7231554f6c *766c395f636c6f73757265004748437a69494f426173655f446561646c6f636b5f737461746963 *5f696e666f0047726170686963737a6955497a69474c55547a6943616c6c6261636b737a695265 *67697374726174696f6e5f537061636562616c6c427574746f6e43425f7374617469635f696e66 *6f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726b39716c766c3732365f636c6f737572650047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f436170466f *675f636c6f73757265004748437a69466c6f61745f447a685f636f6e5f696e666f004748437a69 *494f426173655f4e6f6e5465726d696e6174696f6e5f636c6f73757265004748437a6942617365 *5f6d61705f636c6f73757265007374675f61705f705f696e666f00676c75744b6579626f617264 *557046756e630047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *694361706162696c6974795f7a644c723578626c697433395f636c6f7375726500477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a *644c723576446c697431355f636c6f737572650047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b37366c766c3639305f *636c6f7375726500616c6c6f6361746550696e6e65640047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b36436c697432 *38385f636c6f7375726500657869744040474c4942435f322e30004748437a69494f426173655f *416c72656164794578697374735f7374617469635f696e666f004748437a69494f426173655f42 *75666665725f7374617469635f656e747279004748437a694572725f756e646566696e65645f65 *6e7472790047726170686963737a6955497a69474c55547a69496e697469616c697a7a6174696f *6e5f5247424d6f64655f636c6f73757265004748437a69494f426173655f556e73617469736669 *6564436f6e73747261696e74735f7374617469635f656e747279004748437a69576f72645f746f *496e7465676572325f636c6f737572650047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a694361706162696c6974795f7a644c72357a7a646c766c3135325f636c *6f7375726500446174617a6946696e6974654d61705f456d707479464d5f7374617469635f696e *666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69436170 *6162696c6974795f7a644c72357a7a486c697437385f636c6f7375726500446174617a6946696e *6974654d61705f64656c46726f6d464d5f656e74727900676c436c656172004748437a6948616e *646c655f7a64776175676d656e74494f4572726f725f696e666f004748437a69466c6f61745f46 *7a685f636f6e5f696e666f00446174617a6946696e6974654d61705f7a644c72336872706f6c79 *7a756661696c5f656e747279004748437a69494f426173655f4572726f7243616c6c5f73746174 *69635f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f7a644c726b63456c766c3737365f636c6f73757265005f5f7374 *67696e69745f47726170686963737a6955497a69474c55547a6951756572795574696c735f0047 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574 *696c735f7a644c726b38696c69743331345f636c6f73757265005f5f737467696e69745f477261 *70686963737a6955497a69474c55547a6951756572795574696c730047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a69436f6f72645472616e735f61325f696e66 *6f004748437a6948616e646c655f6c766c39345f696e666f0047726170686963737a6955497a69 *474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f6c766c5f696e666f00 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6948696e74735f *7a647768696e745f656e7472790047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a694361706162696c6974795f7a644c72357a7a7a7a6c697437365f636c6f7375 *72650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726a55326c697439335f636c6f73757265007374675f6170706c795f *696e746572705f696e666f0053797374656d7a69456e7669726f6e6d656e745f676f5f636c6f73 *7572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175 *6572795574696c735f7a644c726a576d6c69743132395f636c6f73757265004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6948696e74735f7a647768696e745f *696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951 *756572795574696c735f7a644c726a52716c766c3434375f636c6f737572650047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a6948696e74735f466f675f737461 *7469635f696e666f005f5f737467696e69745f4748437a69576f7264004748437a69494f426173 *655f426c6f636b427566666572696e675f7374617469635f696e666f0047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b *61456c766c3734355f636c6f73757265004748437a69426173655f46616c73655f737461746963 *5f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *6951756572795574696c735f7a644c726a55556c766c3530315f636c6f73757265007761697452 *6561647a685f66617374004748437a69494f426173655f494f4572726f725f7374617469635f69 *6e666f005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a6945646765466c61670047726170686963737a6955497a69474c55547a694361 *6c6c6261636b737a69526567697374726174696f6e5f7a644c723348506c766c32355f636c6f73 *7572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175 *6572795574696c735f7a644c726a54366c766c3437335f636c6f73757265007374675f73656c5f *375f6e6f7570645f696e666f0047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a6948696e74735f7a644c723366796c766c5f656e7472790047726170686963737a *6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f446f776e5f7374617469 *635f656e74727900696e697453746174730047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a6951756572795574696c735f7a644c726b39736c69743333325f636c *6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *51756572795574696c735f7a644c726b39696c766c3732345f636c6f7375726500477261706869 *63737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a *64646d6d696e315f656e7472790071756f74496e74656765727a685f66617374005f5f73746769 *6e69745f546578747a6953686f775f0047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a694361706162696c6974795f7a644c723579526c697436355f636c6f7375 *7265005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a69526173746572506f735f00446174617a6946696e6974654d61705f7a644c7233 *67546c766c325f656e7472790047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a6951756572795574696c735f7a644c726b34756c69743235355f636c6f73757265 *004748437a694c6973745f7a64777370616e5f656e747279007374675f73656c5f385f7570645f *656e74727900636d70496e7465676572496e747a685f66617374004748437a69576f72645f5731 *367a685f7374617469635f656e7472790047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a6951756572795574696c735f7a644c726a59416c766c3535385f636c6f *73757265004748437a69426173655f5a43444f72645f636f6e5f696e666f004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c *723577646c697432345f636c6f737572650053797374656d7a69506f7369787a69496e7465726e *616c735f7a64776363616c6c36375f636c6f737572650047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a59456c766c35 *35395f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b *737a69526567697374726174696f6e5f7a644c72334852676f5f696e666f004748437a6948616e *646c655f64454641554c547a754255464645527a7553495a5a455f636c6f73757265007374675f *73656c5f365f7570645f656e747279004748437a6948616e646c655f6175676d656e74494f4572 *726f725f636c6f73757265007374675f63746f695f7265745f5231756e70745f696e666f004772 *6170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f4b6579 *4631315f7374617469635f696e666f0047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a6948696e74735f466f675f636c6f73757265007374675f494e445f375f69 *6e666f00616c6c6f6347726f7570004748437a6948616e646c655f7a6477777269746552617742 *75666665725f736c6f77004748437a69494f426173655f46696c6548616e646c655f7374617469 *635f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f7a644c726b34306c766c3634325f636c6f73757265004748437a *69494f426173655f446561646c6f636b5f7374617469635f656e747279004748437a69496e745f *4933327a685f636f6e5f696e666f00616c6c6f635f626c6f636b735f6c696d0047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a64 *4c726a4f476c697431305f636c6f73757265007274735f676574496e7438004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c *726b63776c766c3737345f636c6f73757265005f5f737467696e69745f47726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6942617369635479706573004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f *7a644c723578506c697434395f636c6f737572650047726170686963737a6955497a69474c5554 *7a6943616c6c6261636b737a69526567697374726174696f6e5f4d656e7553746174757343425f *7374617469635f656e74727900466f726569676e7a69437a694572726f725f7a64776363616c6c *325f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a694361706162696c6974795f7a644c7235775a5a6c697433365f636c6f73757265004748 *437a6953686f775f7a647773686f775369676e6564496e745f656e747279004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6948696e74735f466173746573745f *636c6f73757265007374674d616c6c6f6342797465730062617266005f5f737467696e69745f47 *48437a695354004748437a694572725f6572726f725f656e7472790047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a50 *676c697431395f636c6f73757265005f5f737467696e69745f4d61696e00436f6e74726f6c7a69 *457863657074696f6e5f7a644c72324a646c766c31365f696e666f005f65646174610047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726a53796c697437305f636c6f737572650047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b386f6c766c3731 *305f636c6f73757265004748437a694572725f7a644c724f516c766c335f696e666f0047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726a4f496c766c3430355f636c6f737572650047726170686963737a6955497a69474c *55547a69496e697469616c697a7a6174696f6e5f696e697469616c697a7a655f656e747279005f *5f693638362e6765745f70635f7468756e6b2e6278004748437a6948616e646c655f6765744275 *666665725f636c6f73757265004748437a695765616b5f72756e46696e616c697a7a6572426174 *63685f656e747279007374675f61705f707070707070705f726574004d616c6c6f634661696c48 *6f6f6b0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175 *6572795574696c735f7a644c726b394b6c766c3733315f636c6f73757265004772617068696373 *7a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f636f6d *70617265315f636c6f73757265005f474c4f42414c5f4f46465345545f5441424c455f00667265 *654040474c4942435f322e30004748437a69576f72645f7369676e756d335f636c6f7375726500 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565727955 *74696c735f7a644c726b30576c69743230305f636c6f737572650047726170686963737a695549 *7a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a737a65315f63 *6c6f73757265004748437a6948616e646c655f6131385f636c6f73757265005f5f737467696e69 *745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c557a694e5552 *42535f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175 *6572795574696c735f7a644c726b37736c69743330315f636c6f73757265005f656e640061746f *6d69634d6f646966794d75745661727a685f66617374007374675265616c6c6f63427974657300 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565727955 *74696c735f7a644c726a5a5a346c69743137315f636c6f73757265004748437a69494f42617365 *5f7a6457494f5f656e747279007374675f494e544c494b455f636c6f73757265004748437a6949 *4f426173655f45786974537563636573735f7374617469635f656e747279004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c *72357a7a666c697437315f636c6f737572650047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a59656c69743135385f63 *6c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *6951756572795574696c735f7a644c726a51716c697433375f636c6f7375726500477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a6948696e74735f466173746573 *745f7374617469635f696e666f007374675f63617463685f6672616d655f315f72657400477261 *70686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f4b657946 *335f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726b37456c69743330345f636c6f73757265004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c735f7a644c726b35656c766c3636315f636c6f73757265007374675f73656c5f31345f6e6f75 *70645f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a6951756572795574696c735f7a644c726a586f6c69743134355f636c6f7375726500477261 *70686963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f *6e5f5370656369616c557043425f7374617469635f696e666f00616c6c6f634e75727365726965 *7300726576657274434146730047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a6951756572795574696c735f7a644c726a58596c69743135345f636c6f73757265 *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726b38776c766c3731325f636c6f737572650047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c723579 *6a6c766c3133385f636c6f7375726500436f6e74726f6c7a69457863657074696f6e5f7a644c72 *324a396b5f696e666f007274735f6d6b576f7264380047726170686963737a6955497a69474c55 *547a6943616c6c6261636b737a6957696e646f775f64386f78007374675f73656c5f365f6e6f75 *70645f696e666f0047726170686963737a6955497a69474c55547a69496e697469616c697a7a61 *74696f6e5f7a64776c676f5f656e74727900446174617a6946696e6974654d61705f7a644c7233 *67526c766c315f656e747279005f5f737467696e69745f466f726569676e7a6953746f7261626c *655f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69436170 *6162696c6974795f7a644c7235754a6c697431315f636c6f7375726500466f726569676e7a6943 *7a694572726f725f7a644c723257747a64776363616c6c5f656e7472790070726f675f62656c63 *68004748437a69494f426173655f6c766c35385f636c6f737572650047726170686963737a6955 *497a69474c55547a6943616c6c6261636b737a6957696e646f775f4b6579446f776e5f73746174 *69635f656e747279005f5f737467696e69745f4748437a695074720047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6948696e74735f7a644c723366796c766c5f *636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f7a6477636c6970506c616e65496e646578546f456e756d5f656e *747279004748437a69426173655f756e7061636b417070656e6443537472696e677a685f636c6f *73757265004748437a69576f72645f616273335f636c6f73757265004d61696e5f66315f636c6f *737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951 *756572795574696c735f7a644c726b32306c766c3631315f636c6f737572650047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a64 *4c726a54576c766c3438365f636c6f737572650047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6951756572795574696c735f6d61727368616c476574504e616d *655f696e666f005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a69446973706c61794c697374735f004748437a69494f426173655f6c76 *6c36325f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c *7a69474c7a694361706162696c6974795f7a644c723578526c766c3133315f636c6f7375726500 *5f5f737467696e69745f4748437a694e756d5f0047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a57636c766c3532315f *636c6f73757265006e6578745f70656e64696e675f68616e646c6572007374675f7374726c656e *004748437a69576f72645f7a6477746f496e7465676572315f636c6f73757265005f5f6873636f *72655f6765745f73617665645f7465726d696f730047726170686963737a6952656e646572696e *677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a58756c766c353431 *5f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a6951756572795574696c735f7a644c726a576b6c766c3532335f636c6f73757265005f5f73 *7467696e69745f4748437a69494f42617365004748437a69426173655f6c766c375f656e747279 *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69436f6f7264 *5472616e735f53697a7a655f7374617469635f656e747279005f5f737467696e69745f47726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a695065656b506f6b655f00 *6d7954687265616449647a685f666173740047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a6951756572795574696c735f7a644c726b30596c766c3539355f636c *6f73757265007374675f494e445f305f696e666f0047726170686963737a6952656e646572696e *677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a58416c6974313438 *5f636c6f73757265007374675f63617463685f6672616d655f335f726574004772617068696373 *7a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f64386f45004748437a *69494f426173655f6136355f636c6f737572650047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a51346c766c3432365f *636c6f73757265007374675f67635f64315f696e666f006973617474794040474c4942435f322e *300047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726a54536c766c3438355f636c6f73757265004748437a69494f426173 *655f6c766c35365f656e747279004748437a694c6973745f7a64776c656e5f696e666f00474843 *7a694572725f6c766c395f656e747279007374675f61705f705f7265740047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c72 *357a7a5a5a6c766c3136345f636c6f737572650047726170686963737a6955497a69474c55547a *6943616c6c6261636b737a69526567697374726174696f6e5f7a657a65315f656e747279006d65 *6d7365744040474c4942435f322e30007374675f73656c5f31355f7570645f696e666f00474843 *7a6948616e646c655f6175676d656e74494f4572726f725f696e666f0047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b *63346c766c3736375f636c6f7375726500736d616c6c5f616c6c6f635f6c697374004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f *7a644c726a55496c766c3439385f636c6f737572650047726170686963737a6955497a69474c55 *547a6943616c6c6261636b737a6957696e646f775f4b657946395f7374617469635f656e747279 *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726b394d6c69743333375f636c6f737572650047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b31 *386c69743230335f636c6f737572650047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a6951756572795574696c735f7a644c726a5a5a676c69743137345f636c6f *73757265005f5f737467696e69745f4748437a69556e69636f64650047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b31 *656c766c3539395f636c6f73757265004d61696e5f53746174655f696e666f0047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a64 *4c726b394f6c766c3733325f636c6f737572650047726170686963737a6955497a69474c55547a *6943616c6c6261636b737a6957696e646f775f4b6579446f776e5f636c6f737572650047726170 *686963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e *5f4b6579626f61726443425f7374617469635f656e747279004748437a6948616e646c655f696f *657a756e6f745772697461626c655f636c6f737572650047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b39476c766c37 *33305f636c6f73757265005f5f7374675f67635f656e7465725f310053797374656d7a69456e76 *69726f6e6d656e745f676574417267735f656e7472790047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a55306c766c34 *38375f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a694361706162696c6974795f7a644c72357a7a786c766c3135375f636c6f7375726500 *4748437a69426173655f5a434445715f7374617469635f656e7472790047726170686963737a69 *55497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f4a6f797374 *69636b43425f7374617469635f656e747279005f5f737467696e69745f546578747a6950617273 *6572436f6d62696e61746f72737a6952656164500047726170686963737a6952656e646572696e *677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b63366c6974333733 *5f636c6f73757265007374675f756e636865636b6564495368696674524c363400477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a *644c726a58556c69743135335f636c6f7375726500446174617a6946696e6974654d61705f7a64 *4c7233686e6c766c31375f636c6f73757265004748437a69496e745f4936347a685f7374617469 *635f656e7472790047726170686963737a6955497a69474c55547a6943616c6c6261636b737a69 *57696e646f775f6138385f636c6f737572650047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b62306c69743335365f63 *6c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *6951756572795574696c735f7a644c726a52416c697435355f636c6f7375726500477261706869 *63737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a *64777a657a655f636c6f737572650053746752756e0047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b36416c766c3638 *325f636c6f73757265004748437a69576f72645f5733327a685f636f6e5f696e666f007374675f *737461636b5f736176655f656e7472696573007374675f67635f756e70745f72310073746f7054 *69636b65720047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *51756572795574696c735f7a644c726b34386c766c3634345f636c6f737572650071756f745265 *6d496e74656765727a685f666173740047726170686963737a6955497a69474c55547a6943616c *6c6261636b737a69526567697374726174696f6e5f7a644c723348566c766c32375f636c6f7375 *7265007274735f676574496e740047726170686963737a6955497a69474c55547a6943616c6c62 *61636b737a69526567697374726174696f6e5f7a64646d7a677a65315f656e7472790047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a69436f6f72645472616e73 *5f7a6457506f736974696f6e5f656e747279004748437a69576f72645f7a647766726f6d496e74 *65676572335f636c6f73757265004748437a6948616e646c655f6132345f696e666f004748437a *69494f426173655f5265736f757263654578686175737465645f636c6f73757265004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f *7a644c726a56516c69743132315f636c6f73757265006c6162656c5468726561647a685f666173 *740047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726b36736c766c3638305f636c6f737572650053797374656d7a69456e *7669726f6e6d656e745f67657450726f674e616d655f696e666f007274735f756e6c6f636b0047 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574 *696c735f7a644c726b314f6c766c3630385f636c6f7375726500696e7465727072657442434f00 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565727955 *74696c735f7a644c726a50616c766c3431325f636c6f737572650047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c72357752 *6c697433345f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c557a694572726f7273496e7465726e616c5f7265636f72644572726f72436f6465 *5f696e666f005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a69436f6c6f7273005f5f737467696e69745f47726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a69506f696e74506172616d6574657200737467 *5f67635f6e6f726567730047726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a6951756572795574696c735f7a644c726a4f556c766c3430385f636c6f737572650046 *6f726569676e7a6953746f7261626c655f6c766c5f636c6f73757265007374675f73656c5f315f *7570645f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726a53616c697436345f636c6f7375726500737467 *5f494e445f4f4c4447454e5f696e666f007374675f61705f315f7570645f696e666f004748437a *69494f426173655f6c766c34365f656e747279004748437a69576f72645f7a6d335f636c6f7375 *7265007374675f6c65576f726436340047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a69566572746578537065635f7a644c72616a586c766c34315f656e747279 *005f5f737467696e69745f546578747a6952656164004748437a69426173655f666f6c64725f65 *6e747279007374675f61705f345f7570645f656e747279007374675f61705f665f696e666f0073 *74675f696e743634546f496e740047726170686963737a6955497a69474c55547a6943616c6c62 *61636b737a6957696e646f775f6c766c335f636c6f737572650047726170686963737a6955497a *69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a64646d7a6c7a65 *315f696e666f007374726e6370794040474c4942435f322e30005f5f737467696e69745f446174 *617a695475706c650047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a6951756572795574696c735f7a644c726a54736c697438345f636c6f737572650047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6942617369635479706573 *5f44697361626c65645f7374617469635f656e7472790047726170686963737a6955497a69474c *55547a6943616c6c6261636b737a69526567697374726174696f6e5f5669736962696c69747943 *425f636c6f73757265004748437a694e756d5f706c7573496e74656765725f656e747279004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c735f7a644c726a594d6c766c3536315f636c6f737572650047726170686963737a6955497a69 *474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a64646d6d696e315f *696e666f004748437a69494f426173655f54696d65457870697265645f7374617469635f696e66 *6f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726b61616c69743334335f636c6f737572650047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a *55676c766c3439315f636c6f7375726500636c6f737572655f666c616773004748437a694e756d *5f6c69745f636c6f73757265005f5f737467696e69745f4748437a6953545265665f0047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726a58326c766c3533345f636c6f73757265007274735f6d6b496e743800466f726569 *676e7a69437a694572726f725f6572726e6f546f494f4572726f725f636c6f7375726500477261 *70686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c *735f7a644c726b31496c69743231325f636c6f737572650047726170686963737a6955497a6947 *4c55547a6943616c6c6261636b737a6957696e646f775f4b657946385f7374617469635f696e66 *6f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6943617061 *62696c6974795f7a644c723579666c766c3133375f636c6f73757265007374675f494e445f5045 *524d5f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f7a644c726b39366c766c3732315f636c6f737572650047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6948696e74735f7a647768 *696e745f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c *7a69474c7a6951756572795574696c735f7a644c726b34736c766c3634395f636c6f7375726500 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69436f6f726454 *72616e735f7a6457506f736974696f6e5f696e666f007374675f6e65496e743634004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f *7a644c726b33576c766c3634315f636c6f73757265005f5f737467696e69745f47726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a69536176696e675374617465005f *5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a69506978656c52656374616e676c65737a69506978656c4d61705f0047726170686963737a *6955497a69474c55547a69496e697469616c697a7a6174696f6e5f7a644c72356d47676f315f69 *6e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361 *706162696c6974795f7a644c723578586c697435315f636c6f737572650047726170686963737a *6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f4b6579486f6d655f7374 *617469635f656e747279005f5f737467696e69745f47726170686963737a6952656e646572696e *677a694f70656e474c7a69474c7a69436f6d70617269736f6e46756e6374696f6e004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f *7a644c726b33676c69743233365f636c6f737572650047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a5a5a736c697431 *37375f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b *737a69526567697374726174696f6e5f537061636562616c6c526f7461746543425f636c6f7375 *72650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726a554b6c69743130345f636c6f73757265005f5f676d707a5f7464 *69765f71004748437a69494f426173655f4c696e65427566666572696e675f7374617469635f69 *6e666f007374675f67635f66756e5f696e666f0047726170686963737a6955497a69474c55547a *6943616c6c6261636b737a69526567697374726174696f6e5f636f6d70617265325f696e666f00 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565727955 *74696c735f7a644c726a54516c697439305f636c6f737572650047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b32636c *766c3631345f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c62 *61636b737a69526567697374726174696f6e5f4a6f79737469636b43425f636c6f737572650047 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574 *696c735f7a644c726a56366c766c3530345f636c6f73757265007374675f61705f7070765f7265 *74004748437a69494f426173655f4f746865724572726f725f7374617469635f656e7472790047 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574 *696c735f7a644c726a54386c697437395f636c6f737572650047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b32656c69 *743232305f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261 *636b737a6957696e646f775f4d6f757365427574746f6e5f636f6e5f696e666f00477261706869 *63737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f63 *6f6d70617265325f636c6f737572650047726170686963737a6955497a69474c55547a6943616c *6c6261636b737a6957696e646f775f7a644c725754676c75744b6579626f617264557046756e63 *5f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a6951756572795574696c735f7a644c726a59476c69743136355f636c6f7375726500436f6e *74726f6c7a69457863657074696f6e5f7a644c72324a666c766c31375f636c6f73757265004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695072696d69746976 *654d6f64655f547269616e676c65735f7374617469635f656e74727900616c6c6f636174650047 *48437a69576f72645f66726f6d496e7465676572335f656e7472790047726170686963737a6955 *497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a64646d7a67 *7a65315f636c6f73757265005f5f737467696e69745f53797374656d7a69494f004748437a6949 *4f426173655f4e6f537563685468696e675f7374617469635f696e666f0047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c72 *6b35576c766c3637325f636c6f737572650053797374656d7a69456e7669726f6e6d656e745f67 *6f5f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *6951756572795574696c735f7a644c726b624b6c766c3736325f636c6f73757265004748437a69 *4e756d5f7a647771756f7452656d496e74656765725f696e666f00446174617a6946696e697465 *4d61705f756e6974464d5f696e666f006b696c6c5468726561647a685f66617374004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f *7a644c726a56306c69743130385f636c6f737572650047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a526b6c69743531 *5f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a *6957696e646f775f6d616b655265736861706543616c6c6261636b5f696e666f00477261706869 *63737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f64386f43005f5f *696e69745f61727261795f7374617274004d61696e5f7a6467746f53746174655f656e74727900 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565727955 *74696c735f7a644c726a54306c697437375f636c6f737572650047726170686963737a6955497a *69474c55547a6943616c6c6261636b737a6957696e646f775f4b657955705f7374617469635f65 *6e7472790047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e *646f775f7a644c725754676c75744b6579626f617264557046756e635f656e747279005f5f7374 *67696e69745f546578747a69526561645f004748437a69426173655f547275655f737461746963 *5f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *694361706162696c6974795f7a644c723541316c697438335f636c6f73757265007374675f6170 *5f6e5f696e666f006e6577434146004748437a694e756d5f7a647771756f7452656d496e746567 *65725f656e747279007374675f63617463685f6672616d655f696e666f005f5f6d6f6464693300 *4748437a69546f7048616e646c65725f746f7048616e646c65725f696e666f005f5f737467696e *69745f4748437a6948616e646c655f004748437a69494f426173655f494f4572726f725f636f6e *5f696e666f006465526566537461626c655074720047726170686963737a6955497a69474c5554 *7a6943616c6c6261636b737a69526567697374726174696f6e5f7a657a655f636c6f7375726500 *47726170686963737a6955497a69474c55547a6943616c6c6261636b737a695265676973747261 *74696f6e5f4f7665726c6179446973706c617943425f636c6f73757265007374675f73656c5f31 *315f7570645f696e666f005f5f676d705f7365745f6d656d6f72795f66756e6374696f6e730047 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574 *696c735f7a644c726b32596c766c3632365f636c6f7375726500466f726569676e7a694d617273 *68616c7a6941727261795f7769746841727261794c656e305f696e666f005f5f737467696e6974 *5f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69436f6c6f72 *735f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726b31756c766c3630335f636c6f737572650062656c6368005f5f73 *7467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *69506978656c52656374616e676c65737a694d696e6d61780047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a56756c76 *6c3531305f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a6951756572795574696c735f7a644c726a5a5a636c69743137335f636c6f737572 *650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726a51456c766c3433355f636c6f737572650047726170686963737a69 *55497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f5461626c65 *744d6f74696f6e43425f7374617469635f656e7472790047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c723576646c766c39 *305f636c6f73757265004748437a69576f72645f7a6d335f696e666f004748437a6948616e646c *655f696f657a75636c6f73656448616e646c655f696e666f0047726170686963737a6955497a69 *474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f4469616c7343425f63 *6c6f73757265007274735f6d6b576f7264005f5f737467696e69745f436f6e74726f6c7a694d6f *6e61647a6946697800466f726569676e7a6953746f7261626c655f706f6c797a75616c69676e6d *656e74325f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726a4f366c6974315f636c6f73757265005f494f5f *737464696e5f75736564005f5f737467696e69745f466f726569676e7a695074725f0047726170 *686963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e *5f73657443616c6c6261636b5f696e666f004748437a694572725f7061744572726f725f696e66 *6f007374675f756e626c6f636b4173796e63457863657074696f6e737a685f7265745f656e7472 *79007363686564756c655468726561640047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a6951756572795574696c735f7a644c726b33456c69743234325f636c6f *73757265004748437a69546f7048616e646c65725f6b5f636c6f73757265005f5f737467696e69 *745f466f726569676e0047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726a50366c766c3431315f636c6f73757265004772 *6170686963737a6955497a69474c55547a6954797065735f5269676874427574746f6e5f737461 *7469635f696e666f0047726170686963737a6955497a69474c55547a6943616c6c6261636b737a *6957696e646f775f7a644c723878486139305f656e747279005f5f737467696e69745f466f7265 *69676e7a694d61727368616c7a69416c6c6f635f0047726170686963737a6955497a69474c5554 *7a6943616c6c6261636b737a6957696e646f775f4b657946335f7374617469635f696e666f0047 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c *6974795f7a644c72357a7a526c766c3136325f636c6f737572650047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b6177 *6c766c3734335f636c6f737572650047726170686963737a6955497a69474c55547a6954797065 *735f5269676874427574746f6e5f7374617469635f656e747279004748437a69494f426173655f *6137315f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a69436f6f72645472616e735f4d6f64656c766965775f636f6e5f656e747279004772617068 *6963737a6955497a69474c55547a69496e697469616c697a7a6174696f6e5f7a644c72356d4767 *6f315f636c6f73757265004748437a6953686f775f69746f735f636c6f73757265004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f *7a644c726b30346c766c3538315f636c6f73757265004d61696e5f53746174655f656e74727900 *436f6e74726f6c7a69457863657074696f6e5f7a644c7232497a7a7a64776c766c5f696e666f00 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565727955 *74696c735f7a644c726a57796c69743133325f636c6f737572650073636176656e6765645f7374 *617469635f6f626a65637473005f5f737467696e69745f446174617a6944796e616d696300436f *6e74726f6c7a69457863657074696f6e5f7a644c72324a316c766c31325f636c6f737572650047 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c *6974795f7a644c72357a7a4e6c766c3136315f636c6f737572650047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a5343 *6c697437315f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c62 *61636b737a6957696e646f775f7a644c7238774c7a6477756e6d61727368616c5370656369616c *4b65795f656e747279007374675f61705f6c5f7265740047726170686963737a6955497a69474c *55547a6943616c6c6261636b737a6957696e646f775f6d616b655265736861706543616c6c6261 *636b5f636c6f73757265005f5f737467696e69745f47726170686963737a6952656e646572696e *677a694f70656e474c7a69474c7a694275666665724d6f64650047726170686963737a6955497a *69474c55547a6943616c6c6261636b737a6957696e646f775f6d616b655265736861706543616c *6c6261636b5f656e74727900466f726569676e7a694d61727368616c7a6941727261795f706f6b *654172726179305f696e666f007374675f73656c5f345f6e6f7570645f656e7472790047726170 *686963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e *5f4f7665726c6179446973706c617943425f7374617469635f696e666f007363686564756c6557 *61697454687265616400696e743634546f496e74656765727a685f66617374004748437a694572 *725f7a644c724f516c766c335f656e7472790047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b34436c69743235375f63 *6c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6952 *6567697374726174696f6e5f7a64777a64646d7a675f636c6f737572650047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c72 *6b366d6c69743238345f636c6f737572650047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a694361706162696c6974795f7a644c7235785a5a6c766c3133335f63 *6c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *694361706162696c6974795f7a644c723578666c697434305f636c6f7375726500477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a *644c726b63516c766c3737395f636c6f73757265005f5f737467696e69745f446174617a69426f *6f6c5f004748437a6953686f775f5a434453686f775f7374617469635f656e74727900466f7265 *69676e7a69437a69537472696e675f776974684341537472696e674c656e5f696e666f00446174 *617a6946696e6974654d61705f706f6c797a7564656c6574654d696e5f656e7472790047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c697479 *5f7a644c72357a7a506c697438305f636c6f73757265004748437a69576f72645f5731367a685f *636f6e5f696e666f0047726170686963737a6955497a69474c55547a6943616c6c6261636b737a *69526567697374726174696f6e5f7a64777a64646d7a6c5f636c6f737572650047726170686963 *737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a64 *646d7a6c315f696e666f007274735f6d6b576f726436340047726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b35716c766c *3636345f636c6f73757265004748437a69546f7048616e646c65725f72756e494f5f636c6f7375 *72650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69457874 *656e73696f6e735f6c766c5f636c6f73757265007374675f64756d6d795f7265745f656e747279 *00636d705f746872656164004748437a69494f426173655f7a644c7236616f6135305f636c6f73 *757265004748437a69426173655f47545f7374617469635f656e7472790047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c72 *6b37696c766c3639335f636c6f73757265006d6b5765616b7a685f666173740047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a64 *4c726a50456c697432355f636c6f7375726500466f726569676e7a69437a69537472696e675f7a *64777065656b4341537472696e675f696e666f004748437a69576f72645f57387a685f636f6e5f *696e666f007374675f63617463685f6672616d655f375f72657400676c4973456e61626c656400 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565727955 *74696c735f7a644c726a57366c69743132355f636c6f737572650047726170686963737a695549 *7a69474c55547a6943616c6c6261636b737a6957696e646f775f7a644c725872756e6d61727368 *616c5370656369616c4b65795f636c6f73757265004748437a69576f72645f5733327a685f7374 *617469635f656e7472790066726565537461626c655074720047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c7235766c6c76 *6c39325f636c6f737572650070726f675f61726776007274735f676574496e743136004748437a *6953545265665f53545265665f636f6e5f656e747279006162734040474c4942435f322e300047 *48437a695765616b5f7a647772756e46696e616c697a7a657242617463685f656e747279004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c735f7a644c726a54496c697438385f636c6f737572650047726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c723579686c6974 *35365f636c6f73757265006768635f7274735f6f707473004748437a69494f426173655f486172 *64776172654661756c745f7374617469635f696e666f004748437a69494f426173655f7a647773 *686f777350726563365f656e747279004748437a69576f72645f7369676e756d335f656e747279 *00436f6e74726f6c7a69457863657074696f6e5f756e636175676874457863657074696f6e4861 *6e646c65725f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a694361706162696c6974795f7a644c7235776e6c766c3130385f636c6f737572650047 *726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f4b65 *79486f6d655f7374617469635f696e666f0053797374656d7a69457869745f6c766c315f696e66 *6f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726a5a5a656c766c3536385f636c6f7375726500676c5472616e736c61 *7465660047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175 *6572795574696c735f7a644c726b32796c69743232355f636c6f73757265004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c *726b39496c69743333365f636c6f73757265004748437a6948616e646c655f7345454b7a754355 *525f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f6c69676874496e646578546f456e756d5f656e7472790047 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c *6974795f7a644c723577316c697432315f636c6f737572650047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a53676c76 *6c3436305f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a6951756572795574696c735f7a644c726b39516c69743333385f636c6f73757265 *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726a59696c69743135395f636c6f73757265004748437a6948616e646c65 *5f7374646f75745f656e74727900737072696e74664040474c4942435f322e30004748437a6949 *4f426173655f6c766c36345f636c6f7375726500446174617a695475706c655f5a32545f737461 *7469635f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a69436f6f72645472616e735f506f736974696f6e5f7374617469635f656e747279004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c735f7a644c726a51536c697434345f636c6f73757265004748437a69494f426173655f613532 *5f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a69436f6f72645472616e735f7a645753697a7a655f636c6f73757265004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c *726b386b6c766c3730395f636c6f73757265006677726974654040474c4942435f322e30007374 *675f67635f67656e5f726574007274735f676574576f72640047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b62696c76 *6c3735355f636c6f73757265004748437a69426173655f5a30545f7374617469635f696e666f00 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565727955 *74696c735f7a644c726a56596c69743132335f636c6f737572650047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a5245 *6c697435365f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a6951756572795574696c735f7a644c726a58366c766c3533355f636c6f737572 *650066696e616c697a655765616b506f696e746572734e6f770047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b36656c *69743238325f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a6951756572795574696c735f7a644c726a56676c69743131325f636c6f737572 *650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726a574d6c766c3533305f636c6f737572650047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c7235 *7a7a6c6c766c3135345f636c6f737572650067307330004748437a69576f72645f577a685f7374 *617469635f656e747279004748437a6948616e646c655f64735f656e7472790047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a64 *4c72357a7a726c697437345f636c6f73757265004748437a69546f7048616e646c65725f746f70 *48616e646c65725f636c6f73757265004748437a69426173655f4c545f7374617469635f656e74 *72790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f676574496e7465676572315f636c6f737572650047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c723576 *626c6974385f636c6f7375726500466f726569676e7a6953746f7261626c655f5a434453746f72 *61626c655f7374617469635f696e666f0047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a694361706162696c6974795f7a644c723577746c697432385f636c6f73 *757265005f5f646174615f7374617274004748437a69494f426173655f6136365f656e74727900 *4748437a69496e745f49387a685f7374617469635f656e747279005f5f737467696e69745f4e75 *6d657269635f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *694361706162696c6974795f436170466f675f7374617469635f696e666f007374675f45584345 *5054494f4e5f434f4e535f696e666f004d61696e5f66335f656e747279004748437a69576f7264 *5f5731367a685f7374617469635f696e666f0053797374656d7a69456e7669726f6e6d656e745f *676f325f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726b356f6c69743236395f636c6f73757265005f5f *737467696e69745f466f726569676e7a6943004748437a694572725f6572726f725f696e666f00 *4748437a69426173655f756e7061636b466f6c647243537472696e677a685f656e747279004772 *6170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f6b6579 *626f6172644d6f75736543616c6c6261636b5f696e666f0047726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a50736c6974 *32325f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a69566572746578537065635f7074727a75676c466f67436f6f7264664558545f696e66 *6f005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c *7a69474c7a69506978656c52656374616e676c65737a69506978656c5472616e73666572004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c735f7a644c726b62416c69743336355f636c6f737572650047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a516f6c76 *6c3433315f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261 *636b737a69526567697374726174696f6e5f7a644c723348506c766c32355f656e747279007374 *675f494e445f365f696e666f0047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a6951756572795574696c735f7a644c726a51676c766c3432395f636c6f73757265 *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726b31596c69743231365f636c6f73757265004748437a6948616e646c65 *5f7a644c723861706c766c32355f656e747279005f5f737467696e69745f466f726569676e5f00 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69566572746578 *537065635f7a644c72616a586c766c34315f696e666f007374675f71756f74576f726436340047 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69457874656e7369 *6f6e735f67657450726f63416464726573735f696e666f0047726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a56556c6974 *3132325f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c *7a69474c7a6951756572795574696c735f7a644c726b34656c69743235315f636c6f7375726500 *7374675f73656c5f31325f6e6f7570645f656e747279007374675f73656c5f345f7570645f656e *747279004748437a69496e745f7a64777a657a655f696e666f004748437a69494f426173655f6e *6577494f5265665f696e666f004748437a69494f426173655f6136395f696e666f004748437a69 *494f426173655f496c6c6567616c4f7065726174696f6e5f7374617469635f656e747279004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6948696e74735f7a64 *4c723367616c766c31305f656e747279004748437a6948616e646c655f6c766c39335f636c6f73 *7572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e64 *6f775f64386f49005f4a765f5265676973746572436c6173736573005f5f63747970655f625f6c *6f634040474c4942435f322e330047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a69436f6f72645472616e735f61325f656e74727900706572666f726d47430047 *726170686963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174 *696f6e5f6c766c5f656e747279007274735f6c6f636b007374675f67635f67656e004748437a69 *494f426173655f46696c6548616e646c655f636f6e5f656e747279006d61726b43414673004748 *437a69494f426173655f4e6f537563685468696e675f7374617469635f656e7472790047726170 *686963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e *5f537061636562616c6c427574746f6e43425f7374617469635f656e7472790047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a69466f675f666f675f696e666f00 *47726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f4b *65795061676555705f636c6f73757265007374675f67635f6c315f726574004772617068696373 *7a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f4d6f75736542757474 *6f6e5f7374617469635f696e666f0047726170686963737a6955497a69474c55547a6943616c6c *6261636b737a6957696e646f775f5370656369616c4b65795f7374617469635f656e7472790047 *48437a69576f72645f6e6567617465335f636c6f73757265005f5f737467696e69745f47726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6952656e6465724d6f6465 *5f004748437a69494f426173655f496e76616c6964417267756d656e745f7374617469635f696e *666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726b32576c69743233315f636c6f73757265004748437a69576f7264 *5f73686f777350726563335f696e666f0047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a6951756572795574696c735f7a644c726a50476c766c3432305f636c6f *7375726500697343757272656e74546872656164426f756e647a685f66617374004748437a6949 *4f426173655f496e617070726f707269617465547970655f7374617469635f696e666f00477261 *70686963737a6952656e646572696e677a694f70656e474c7a69474c7a69566572746578537065 *635f7a644c72616a5a5a6c766c34325f656e747279004d61696e5f66325f696e666f007374675f *63746f695f7265745f5231705f696e666f0047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a6951756572795574696c735f7a644c726a51496c766c3433365f636c *6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a695265 *67697374726174696f6e5f7a64646d6d6178315f696e666f004748437a69426173655f7a707a70 *5f636c6f7375726500446174617a6946696e6974654d61705f7a647766696e644d61785f656e74 *7279004d61696e5f7a646766726f6d53746174655f636c6f73757265005f5f737467696e69745f *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69506978656c52 *656374616e676c65737a6952657365745f0047726170686963737a6955497a69474c55547a6943 *616c6c6261636b737a6957696e646f775f7a644c72574e676c75745370656369616c557046756e *635f636c6f73757265004748437a69494f426173655f73686f777350726563385f656e74727900 *5f5f737467696e69745f446174617a6946696e6974654d61700047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6948696e74735f7a644c723367346c6974365f63 *6c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *694361706162696c6974795f7a644c723577426c697433305f636c6f7375726500696e69745363 *686564756c65720047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f7a644c726a54636c697438305f636c6f73757265004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f *7a644c726a58436c766c3534335f636c6f73757265005f5f737467696e69745f47726170686963 *737a6955497a69474c55547a6954797065730047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a57496c766c3532395f63 *6c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6952 *6567697374726174696f6e5f5461626c6574427574746f6e43425f636c6f737572650052747346 *6c6167730047726170686963737a6955497a69474c55547a6943616c6c6261636b737a69526567 *697374726174696f6e5f5265736861706543425f636c6f73757265004748437a69496e745f4931 *367a685f636f6e5f656e7472790047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a6951756572795574696c735f6d61727368616c476574504e616d655f636c6f73 *757265007374675f756e636865636b656453686966744c36340047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b30656c *69743138395f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a694361706162696c6974795f7a644c723577396c697432335f636c6f73757265 *0047726170686963737a6955497a69474c55547a69496e697469616c697a7a6174696f6e5f7a64 *776d61727368616c446973706c61794d6f64655f696e666f007274735f6d6b537461626c655074 *720047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726a53716c697436385f636c6f73757265004748437a69494f42617365 *5f6c766c35395f636c6f737572650047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a6951756572795574696c735f7a644c726a51416c766c3433345f636c6f7375 *72650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a695265676973 *74726174696f6e5f506173736976654d6f74696f6e43425f636c6f73757265006973416c697665 *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726b30326c69743138365f636c6f737572650047726170686963737a6955 *497a69474c55547a6943616c6c6261636b737a6957696e646f775f7a644c725756676c75744b65 *79626f61726446756e635f696e666f0073696764656c7365744040474c4942435f322e30004748 *437a69494f426173655f6137385f656e7472790047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a526f6c697435325f63 *6c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957 *696e646f775f4b65794631325f7374617469635f656e7472790047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a50436c *766c3431395f636c6f73757265005f5f737467696e69745f47726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c557a694e55524253004748437a69546f7048616e646c65 *725f7a644c723153346c766c5f656e747279005f5f737467696e69745f47726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6952656164436f7079506978656c735f00 *5f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a694275666665724d6f64655f00676c456e64007374675f67635f756e62785f7231004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c69 *74795f7a644c723579486c766c3134345f636c6f7375726500446174617a6946696e6974654d61 *705f7a644c72336874706f6c797a756661696c315f656e747279004748437a69426173655f437a *685f636f6e5f656e747279004748437a69426173655f756e7061636b466f6c647243537472696e *677a685f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a6951756572795574696c735f7a644c726a5a5a4f6c766c3537375f636c6f73757265004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c735f7a644c726b396f6c69743333315f636c6f7375726500466f726569676e7a69437a694572 *726f725f6572726e6f546f494f4572726f725f696e666f004748437a69494f426173655f73686f *777350726563385f636c6f73757265005f5f737467696e69745f47726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a69474c626f6f6c65616e0047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c72 *3576336c6974365f636c6f73757265005f5f737467696e69745f53797374656d7a69494f7a6945 *72726f72006d6b4170557064307a685f66617374005f5f737467696e69745f4772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c557a6954657373656c6c6174696f6e00 *446174617a6946696e6974654d61705f64656c46726f6d464d5f696e666f004748437a694c6973 *745f7a644c7231554f6c766c395f696e666f004748437a69546f7048616e646c65725f6b5f656e *7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175 *6572795574696c735f7a644c726b31736c69743230385f636c6f73757265004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c *726a546b6c697438325f636c6f737572650047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a6951756572795574696c735f7a644c726a58616c766c3533365f636c *6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *51756572795574696c735f7a644c726b39536c766c3733335f636c6f73757265004748437a6942 *6173655f5a434445715f636f6e5f696e666f0047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b62326c766c3735315f63 *6c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *694361706162696c6974795f7a644c723577546c766c3131365f636c6f73757265004772617068 *6963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f7a644c723877 *4a6c766c355f696e666f00676c757454696d657246756e630047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a69426567696e456e645f6c766c335f636c6f737572 *650047726170686963737a6955497a69474c55547a6957696e646f775f676c7574437265617465 *57696e646f775f636c6f737572650047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a6951756572795574696c735f7a644c726b63496c766c3737375f636c6f7375 *7265004748437a69426173655f437a685f636f6e5f696e666f007274735f6d6b446f75626c6500 *4748437a69494f426173655f737461636b4f766572666c6f775f636c6f73757265006765746f75 *7274696d656f666461790047726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a6951756572795574696c735f7a644c726b314d6c69743231335f636c6f73757265006c *6f6f6b7570486173685461626c65004748437a69576f72645f7a64646d73686f774c697374335f *696e666f005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a69537472696e675175657269657300626c6f636b65645f71756575655f6864 *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726b34416c766c3635315f636c6f73757265004748437a69494f42617365 *5f7a647773686f777350726563345f636c6f73757265007374675f67635f67656e5f696e666f00 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69436170616269 *6c6974795f7a644c723578646c766c3132315f636c6f7375726500466f726569676e7a6953746f *7261626c655f706f6c797a7573697a7a654f66325f656e747279005f5f737467696e69745f4748 *437a69556e69636f64655f005f5f737467696e69745f446174617a694172726179004748437a69 *4572725f6c766c385f636c6f737572650047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a694361706162696c6974795f7a644c7235784e6c766c3133305f636c6f *73757265004748437a69494f426173655f6134365f636c6f737572650047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b *37326c766c3638395f636c6f737572650047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a694361706162696c6974795f7a644c723541336c766c3136355f636c6f *737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e *646f775f4b657946315f7374617469635f656e747279007374675f424c41434b484f4c455f4251 *5f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *51756572795574696c735f7a644c726b32436c69743232365f636c6f737572650053797374656d *7a69456e7669726f6e6d656e745f67657450726f674e616d655f656e7472790047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a69436f6f72645472616e735f5072 *6f6a656374696f6e5f636c6f73757265004748437a69494f426173655f4572726f7243616c6c5f *636f6e5f696e666f007570646174655468726561644c6162656c0047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f47657450657273 *70656374697665436f7272656374696f6e48696e745f7374617469635f656e7472790061776169 *74557365725369676e616c7300466f726569676e7a69437a69537472696e675f77697468434153 *7472696e674c656e5f656e747279004748437a695074725f6e756c6c5074725f636c6f73757265 *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726b38516c766c3731375f636c6f73757265004748437a69494f42617365 *5f6e6577494f5265665f636c6f73757265004748437a6948616e646c655f6c766c39345f736c6f *7700436f6e74726f6c7a69457863657074696f6e5f7a644c7232495a5a6c766c31315f636c6f73 *757265004748437a69546f7048616e646c65725f64735f736c6f770047726170686963737a6955 *497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a737a65315f *696e666f007274735f6d6b50747200466f726569676e7a69437a694572726f725f7468726f7745 *72726e6f5f656e747279004748437a69426173655f4f72646572696e675f636c6f737572655f74 *626c007374675f4d55545f434f4e535f696e666f0047726170686963737a6955497a69474c5554 *7a6943616c6c6261636b737a69526567697374726174696f6e5f636f6d706172655f636c6f7375 *72650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69436170 *6162696c6974795f7a644c723579646c697435355f636c6f73757265005f5f737467696e69745f *47726170686963737a6955497a69474c55547a694d656e755f004748437a694c6973745f7a644c *72397a7a7072656c7a756c6973747a757374725f636c6f737572650047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b37 *346c69743239355f636c6f73757265004748437a69494f426173655f577269746548616e646c65 *5f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a6951756572795574696c735f7a644c726a536b6c766c3436315f636c6f7375726500474843 *7a69494f426173655f5265736f757263654578686175737465645f7374617469635f696e666f00 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565727955 *74696c735f7a644c726b636d6c69743337375f636c6f737572650047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a5263 *6c697434395f636c6f7375726500676364496e74656765727a685f66617374005f5f676d707a5f *737562004748437a69494f426173655f4275666665724c6973744e696c5f7374617469635f656e *7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175 *6572795574696c735f7a644c726b35476c766c3636385f636c6f73757265007374675f73656c5f *31355f6e6f7570645f656e747279004748437a6948616e646c655f6c766c39345f636c6f737572 *65006d6f76655f54534f005f5f737467696e69745f47726170686963737a6955497a69474c5554 *7a6954797065735f005a434d61696e5f6d61696e5f656e747279005f5f676d6f6e5f7374617274 *5f5f007374675f73656c5f385f6e6f7570645f696e666f0047726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c723577446c766c *3131325f636c6f73757265006c646578704040474c4942435f322e300047726170686963737a69 *55497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f4d656e7553 *746174757343425f7374617469635f696e666f004748437a69576f72645f57387a685f73746174 *69635f656e747279004748437a695074725f46756e5074725f636f6e5f656e747279004d61696e *5f53746174655f7374617469635f656e747279004748437a69494f426173655f50726f746f636f *6c4572726f725f7374617469635f696e666f0047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a53326c697436325f636c *6f73757265004748437a69494f426173655f45786974537563636573735f7374617469635f696e *666f005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a6948696e74735f0047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a695072696d69746976654d6f64655f547269616e676c65735f636c6f73757265 *00466f726569676e7a69437a694572726f725f7a64776363616c6c325f656e747279004748437a *694c6973745f706f6c797a757265765f696e666f0047726170686963737a6952656e646572696e *677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b61386c766c373337 *5f636c6f73757265005f5f737467696e69745f446174617a69426974735f004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c *726b39756c766c3732375f636c6f7375726500 hunk ./include/HsGLUT.h 16 -#include "config.h" +#include "ghcconfig.h" hunk ./package.conf.in 1 -#include "config.h" +#include "ghcconfig.h" binary ./examples/RedBook/FogCoord oldhex *7f454c460101010000000000000000000200030001000000b09d04083400000068da0300000000 *003400200009002800260023000600000034000000348004083480040820010000200100000500 *000004000000030000005401000054810408548104081300000013000000040000000100000001 *000000000000000080040800800408445403004454030005000000001000000100000060540300 *60e4070860e40708d8420000805a00000600000000100000020000004c9403004c2408084c2408 *082001000020010000060000000400000004000000680100006881040868810408200000002000 *000004000000040000000400000088010000888104088881040818000000180000000400000004 *00000050e574641854030018d4070818d407082c0000002c000000040000000400000051e57464 *000000000000000000000000000000000000000007000000040000002f6c69622f6c642d6c696e *75782e736f2e320000040000001000000001000000474e55000000000002000000020000000500 *000005000000020000000100000053755345000000000901000061000000770000002800000006 *000000540000002e000000000000003f000000020000004b000000000000003c00000076000000 *140000005e0000000c00000055000000530000004d00000032000000500000001e000000600000 *00520000006a00000041000000670000004c00000024000000630000006e000000000000004000 *0000290000000f000000690000006f0000000000000034000000270000006d0000000000000000 *000000000000000000000008000000000000005b00000071000000460000006100000000000000 *000000000000000000000000720000000000000038000000750000004e0000002a000000730000 *003d00000066000000420000001000000043000000000000007000000044000000620000005100 *0000000000000d0000000000000000000000000000003300000000000000740000000700000009 *000000000000003b0000005c000000000000006c00000000000000590000000000000015000000 *5d000000580000002f000000680000005f000000000000000e0000002500000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000000000000000000000000000000000000a000000120000001d000000 *000000000000000000000000000000001300000000000000230000000000000000000000180000 *001a000000000000000000000000000000220000001b0000000000000000000000000000000000 *000016000000000000001c00000000000000360000000000000000000000000000002c0000002b *00000000000000000000000000000000000000000000003e000000000000000000000000000000 *000000000100000000000000300000003100000004000000000000001f00000000000000000000 *004900000017000000000000000500000039000000000000004a00000020000000000000000000 *000000000000000000003a00000048000000470000000000000035000000260000000b00000056 *00000057000000640000002d000000190000000000000065000000450000000300000000000000 *00000000370000006b0000005a00000000000000000000004f0000000000000011000000210000 *0000000000000000000000000000000000de0200000000000058000000120000000e0000000000 *000023000000120000004b02000000000000000000001200000053020000000000000000000012 *00000044020000000000000000000012000000ef0300000000000052000000120000009d040000 *0000000053000000120000001e0000000000000023000000120000003000000000000000230000 *0012000000410000004c240808000000001100f1ffe902000000000000c202000012000000b502 *0000b09704084901000012000000c8010000000000000000000012000000fe040000000000007c *00000012000000bb0400000000000025000000120000004304000000000000d500000012000000 *da03000000000000b2000000120000006205000000000000210000001200000098040000000000 *005a00000012000000320400000000000006010000120000004a00000000000000650200001200 *00005f04000000000000f200000012000000d20100000000000000000000120000008604000000 *0000003a0000001200000057000000000000005b00000012000000e2040000000000009c000000 *120000006800000000000000380000001200000058040000000000009400000012000000140400 *0000000000af00000012000000790000000000000061000000120000005705000000000000a901 *000012000000d1040000000000006306000012000000dd01000000000000620100001200000068 *020000000000000000000012000000040500000000000034000000120000003702000000000000 *0000000012000000f90200000000000071040000120000000403000000000000b8020000120000 *0020030000e89604087001000012000b0087000000000000000000000012000000290200000000 *000000000000120000004a04000000000000c50100001200000025040000000000003a00000012 *0000001d04000000000000580000001200000039040000000000003c0000001200000092000000 *0000000047000000120000000f0300000000000013020000120000000104000040270808040000 *0011001800db04000044270808040000001100180070040000000000000c020000120000001a03 *000000000000430000001200000026030000000000000106000012000000e70300000000000099 *0c0000120000006105000000000000973d00001200000031030000000000004a05000012000000 *a5000000000000002300000012000000a7020000509a0408760100001200000066040000000000 *004c0000001200000087020000000000000000000012000000b3000000000000001c0000001200 *00005a020000000000000000000012000000c70000000000000027040000120000003c03000000 *0000005905000012000000d000000000000000000000001200000045050000000000008b000000 *120000006f050000000000004c000000120000004703000000000000b102000012000000520300 *0000000000d700000012000000d4030000000000006100000012000000e904000000000000ff00 *00001200000061030000000000003d020000120000008a05000038270808000000001000f1fff7 *0100000000000000000000120000003305000000000000e800000012000000fe01000000000000 *00000000120000007003000000000000a701000012000000df0000000000000046010000120000 *009004000000000000f70100001200000092020000000000006f00000012000000ef0000000000 *0000850000001200000001010000000000004c0000001200000011010000d48507084900000012 *000e0051050000000000008500000012000000ca04000000000000db0100001200000076040000 *00000000b9010000120000002c0400000000000036000000120000007e030000000000002c0100 *0012000000170100000000000023000000120000007b050000000000003000000012000000a704 *0000000000003a000000120000007202000000000000000000001200000008040000000000004a *00000012000000270100000000000023000000120000001505000000000000d200000012000000 *0b0200000000000000000000120000008305000038270808000000001000f1ff3a010000802508 *08000000001100f1ff6a05000000000000c70000001200000096050000e03e0808000000001000 *f1ff51040000000000003200000012000000b40400000000000043000000120000007e04000000 *000000af000000120000008b030000000000008401000012000000990300000000000099000000 *1200000024050000f48507080400000011000f007b0200000000000000000000120000004d0500 *00000000000d0000001200000050010000000000000000000012000000c2040000000000003100 *000012000000fd040000000000006a010000120000005d010000000000000000000020000000ef *0400000000000071000000120000001a050000000000004c000000120000003102000000000000 *00000000120000007101000000000000d200000012000000b403000000000000aa020000120000 *007f010000000000000000000020000000cc020000000000008100000012000000006c6962676c *75742e736f2e3300676c75745370656369616c46756e6300676c75745370656369616c55704675 *6e6300676c75744b6579626f61726446756e63005f44594e414d494300676c75744d61696e4c6f *6f7000676c757443726561746557696e646f7700676c75744765744d6f6469666965727300676c *757447657457696e646f7700676c56696577706f727400676c7574496e697457696e646f775369 *7a6500676c75744d6f75736546756e6300676c7574496e6974446973706c61794d6f646500676c *7574496e697400676c4c6f61644964656e7469747900676c757453776170427566666572730067 *6c7574506f73745265646973706c617900676c7574446973706c617946756e63005f66696e6900 *676c75745265736861706546756e6300676c75744b6579626f617264557046756e63005f474c4f *42414c5f4f46465345545f5441424c455f00676c5472616e736c61746566005f4a765f52656769 *73746572436c617373657300676c757454696d657246756e63005f5f676d6f6e5f73746172745f *5f006c6962534d2e736f2e36006c69624943452e736f2e36006c6962586d752e736f2e36006c69 *6258692e736f2e36006c6962474c552e736f2e3100676c436f6c6f72336600676c566572746578 *336600676c755065727370656374697665006c6962474c2e736f2e3100676c466f676900676c43 *6c656172436f6c6f7200676c436c656172006c69625831312e736f2e36006c69626d2e736f2e36 *00676c426567696e00676c456e6400676c4d61747269784d6f646500676c466f676600676c466f *67667600676c48696e7400676c476574496e74656765727600676c44697361626c6500676c456e *61626c6500676c4973456e61626c656400676c4765744572726f7200676c5847657450726f6341 *64647265737341524200676c75556e50726f6a6563743400676c754275696c6433444d69706d61 *704c6576656c73006c64657870006c6962676d702e736f2e33005f5f676d706e5f636d70005f5f *676d707a5f6469766578616374005f5f676d707a5f676364005f5f676d707a5f6d756c005f5f67 *6d707a5f636f6d005f5f676d707a5f696e6974005f5f676d707a5f786f72005f5f676d707a5f61 *6e64005f5f676d707a5f696f72005f5f676d707a5f616464005f5f676d707a5f666469765f7172 *005f5f676d707a5f746469765f7172005f5f676d707a5f746469765f72005f5f676d706e5f6763 *645f31005f5f676d707a5f746469765f71005f5f676d705f7365745f6d656d6f72795f66756e63 *74696f6e73005f5f676d707a5f737562006c6962646c2e736f2e32006c6962632e736f2e360070 *6175736500736967696e7465727275707400737973636f6e66005f5f737472746f645f696e7465 *726e616c007374646f757400736967656d707479736574007374726572726f72006d656d6d6f76 *65006d756e6d61700074696d657300676574656e76007365746974696d657200706572726f7200 *6d616c6c6f63006973617474790073656c6563740066666c757368007369676164647365740061 *626f72740073747272636872007374726e63707900676574727573616765007265616c6c6f6300 *666f726b00736967616374696f6e0067657474696d656f66646179006d656d7365740073747263 *6d7000737072696e74660066636c6f7365007365746c6f63616c6500737464657272006d6d6170 *3634006670757463005f5f63747970655f625f6c6f6300667772697465005f5f6572726e6f5f6c *6f636174696f6e00657869740073696764656c736574005f494f5f737464696e5f75736564005f *5f6c6962635f73746172745f6d61696e006c7365656b3634006162730066636e746c0074637365 *74617474720076667072696e746600667265650073696770726f636d61736b00666f70656e3634 *005f6564617461005f5f6273735f7374617274005f656e6400474c4942435f322e3000474c4942 *435f322e3300474c4942435f322e31000000000000000000000000000002000200000000000100 *000000000000020002000200020002000200020000000200000002000000030000000200020000 *000200020000000000020000000000000001000000000002000200020002000000000002000200 *020000000000020002000000000000000200000000000000000000000000030002000000000002 *000200000001000000020000000000000002000000000000000100020003000200020000000000 *030002000000020000000200000001000100020001000200020002000000000001000000020000 *000200020000000400020000000000000000000500010001001f02000010000000200000001069 *690d000005009b0500000000000001000300ca03000010000000000000001369690d00000400a5 *050000100000001169690d00000300af050000100000001069690d000002009b05000000000000 *3427080806750000402708080530000044270808053100008c2508080701000090250808070200 *00942508080703000098250808070400009c25080807050000a025080807060000a42508080707 *0000a825080807080000ac25080807090000b0250808070b0000b4250808070c0000b825080807 *0d0000bc250808070e0000c0250808070f0000c425080807100000c825080807110000cc250808 *07120000d025080807130000d425080807140000d825080807150000dc25080807160000e02508 *0807170000e425080807180000e825080807190000ec250808071a0000f0250808071b0000f425 *0808071c0000f8250808071d0000fc250808071e000000260808071f0000042608080720000008 *260808072100000c26080807220000102608080723000014260808072400001826080807250000 *1c260808072600002026080807280000242608080729000028260808072a00002c260808072b00 *0030260808072c000034260808072d000038260808072e00003c260808072f0000402608080732 *0000442608080733000048260808073400004c2608080735000050260808073600005426080807 *37000058260808073800005c2608080739000060260808073a000064260808073b000068260808 *073c00006c260808073d000070260808073e000074260808073f000078260808074000007c2608 *08074100008026080807420000842608080743000088260808074400008c260808074500009026 *080807460000942608080747000098260808074900009c260808074a0000a0260808074b0000a4 *260808074c0000a8260808074d0000ac260808074e0000b0260808074f0000b426080807500000 *b826080807510000bc26080807530000c026080807540000c426080807550000c8260808075600 *00cc26080807570000d026080807580000d426080807590000d8260808075a0000dc260808075b *0000e0260808075c0000e4260808075d0000e8260808075e0000ec260808075f0000f026080807 *620000f426080807640000f826080807650000fc26080807660000002708080767000004270808 *0768000008270808076a00000c270808076b000010270808076c000014270808076d0000182708 *08076e00001c270808077000002027080807710000242708080772000028270808077300002c27 *08080774000030270808077600005589e583ec08e8e1060000e848070000e8b3ee0200c9c300ff *3584250808ff258825080800000000ff258c2508086800000000e9e0ffffffff25902508086808 *000000e9d0ffffffff25942508086810000000e9c0ffffffff25982508086818000000e9b0ffff *ffff259c2508086820000000e9a0ffffffff25a02508086828000000e990ffffffff25a4250808 *6830000000e980ffffffff25a82508086838000000e970ffffffff25ac2508086840000000e960 *ffffffff25b02508086848000000e950ffffffff25b42508086850000000e940ffffffff25b825 *08086858000000e930ffffffff25bc2508086860000000e920ffffffff25c02508086868000000 *e910ffffffff25c42508086870000000e900ffffffff25c82508086878000000e9f0feffffff25 *cc2508086880000000e9e0feffffff25d02508086888000000e9d0feffffff25d4250808689000 *0000e9c0feffffff25d82508086898000000e9b0feffffff25dc25080868a0000000e9a0feffff *ff25e025080868a8000000e990feffffff25e425080868b0000000e980feffffff25e825080868 *b8000000e970feffffff25ec25080868c0000000e960feffffff25f025080868c8000000e950fe *ffffff25f425080868d0000000e940feffffff25f825080868d8000000e930feffffff25fc2508 *0868e0000000e920feffffff250026080868e8000000e910feffffff250426080868f0000000e9 *00feffffff250826080868f8000000e9f0fdffffff250c2608086800010000e9e0fdffffff2510 *2608086808010000e9d0fdffffff25142608086810010000e9c0fdffffff251826080868180100 *00e9b0fdffffff251c2608086820010000e9a0fdffffff25202608086828010000e990fdffffff *25242608086830010000e980fdffffff25282608086838010000e970fdffffff252c2608086840 *010000e960fdffffff25302608086848010000e950fdffffff25342608086850010000e940fdff *ffff25382608086858010000e930fdffffff253c2608086860010000e920fdffffff2540260808 *6868010000e910fdffffff25442608086870010000e900fdffffff25482608086878010000e9f0 *fcffffff254c2608086880010000e9e0fcffffff25502608086888010000e9d0fcffffff255426 *08086890010000e9c0fcffffff25582608086898010000e9b0fcffffff255c26080868a0010000 *e9a0fcffffff256026080868a8010000e990fcffffff256426080868b0010000e980fcffffff25 *6826080868b8010000e970fcffffff256c26080868c0010000e960fcffffff257026080868c801 *0000e950fcffffff257426080868d0010000e940fcffffff257826080868d8010000e930fcffff *ff257c26080868e0010000e920fcffffff258026080868e8010000e910fcffffff258426080868 *f0010000e900fcffffff258826080868f8010000e9f0fbffffff258c2608086800020000e9e0fb *ffffff25902608086808020000e9d0fbffffff25942608086810020000e9c0fbffffff25982608 *086818020000e9b0fbffffff259c2608086820020000e9a0fbffffff25a02608086828020000e9 *90fbffffff25a42608086830020000e980fbffffff25a82608086838020000e970fbffffff25ac *2608086840020000e960fbffffff25b02608086848020000e950fbffffff25b426080868500200 *00e940fbffffff25b82608086858020000e930fbffffff25bc2608086860020000e920fbffffff *25c02608086868020000e910fbffffff25c42608086870020000e900fbffffff25c82608086878 *020000e9f0faffffff25cc2608086880020000e9e0faffffff25d02608086888020000e9d0faff *ffff25d42608086890020000e9c0faffffff25d82608086898020000e9b0faffffff25dc260808 *68a0020000e9a0faffffff25e026080868a8020000e990faffffff25e426080868b0020000e980 *faffffff25e826080868b8020000e970faffffff25ec26080868c0020000e960faffffff25f026 *080868c8020000e950faffffff25f426080868d0020000e940faffffff25f826080868d8020000 *e930faffffff25fc26080868e0020000e920faffffff250027080868e8020000e910faffffff25 *0427080868f0020000e900faffffff250827080868f8020000e9f0f9ffffff250c270808680003 *0000e9e0f9ffffff25102708086808030000e9d0f9ffffff25142708086810030000e9c0f9ffff *ff25182708086818030000e9b0f9ffffff251c2708086820030000e9a0f9ffffff252027080868 *28030000e990f9ffffff25242708086830030000e980f9ffffff25282708086838030000e970f9 *ffffff252c2708086840030000e960f9ffffff25302708086848030000e950f9ffff31ed5e89e1 *83e4f050545268e08407086850850708515668604b0608e87ffdfffff490905589e553e8000000 *005b81c3a3870300528b83b401000085c07402ffd0585bc9c390909090909090909090905589e5 *5050803d4827080800752ea168e407088b1085d2741c8db4260000000083c004a368e40708ffd2 *a168e407088b1085d275ebc6054827080801c9c389f65589e551518b157c25080885d27419b800 *00000085c0741083ec0c687c250808e89b61fbf783c410c9c39090b8749e0408ffe090833d4c27 *080800753cc7054c27080801000000c74500b0b0050883c504c74500f0be040883c504c7450024 *81050883c504c7450014ad050883c504c745006ca5050883c50483ed04ff650090b86c9e0408ff *e09000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c7 *47f808ee060883ec0c56e8a1ee010083c4088d47f8894604c70624ed06088d55f8c702a0000708 *894204c745f4589f040883ed0c6a006a00e8c5e7010083c410d95c24048b442404894424088b44 *2408894424048b4424048945fc83ed048b4504eb9a000000002400000083c7083b7b5c7615c743 *6c02000000c74320ff000100b84ccf0608ffe0c747fc789a05088b4500894424048b4424048944 *24088b44240889078d77fc83c508b8a0000708ebd589f60400010000000000110000008d45fc3b *4354730abe8ce407088b43fcffe08b7500c7450014a004088b06ebf0010000002400000083c710 *3b7b5c760cc7436c040000008b43f8ffe0c747f4d8be04088b45048947f88b46048947fc8b4608 *89078d77f483c5088b4500ebdb9000000000240000008b46048945008b7608c745fcd49f040883 *ed04ff268d76000400010000000000110000008b7500c745004ca00408ff260000000024000000 *83c7183b7b5c760cc7436c060000008b43f8ffe0c747ecc09705088b46088947f08b460c8947f4 *c747f8c09705088b46048947fc8d47ec89078d77f883c5048b4500ebce00000200180000008d45 *f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e8d9 *ec010083c4088d47f8894604c70624ed06088d55f8c702a0000708894204c745f420a1040883ed *0c6a006a01e8fde5010083c410d95c24048b442404894424088b442408894424048b4424048945 *fc83ed048b4504eb9a000000002400000083c7083b7b5c7615c7436c02000000c74320ff000100 *b84ccf0608ffe0c747fc789a05088b4500894424048b442404894424088b44240889078d77fc83 *c508b8a0000708ebd589f600000200180000008d45f03b4354720883c70c3b7b5c760cc7436c03 *0000008b43f8ffe0c747f808ee060883ec0c56e801ec010083c4088d47f8894604c70624ed0608 *8d55f8c702a0000708894204c745f4f8a1040883ed0c6a006a0ae825e5010083c410d95c24048b *442404894424088b442408894424048b4424048945fc83ed048b4504eb9a000000002400000083 *c7083b7b5c7615c7436c02000000c74320ff000100b84ccf0608ffe0c747fc789a05088b450089 *4424048b442404894424088b44240889078d77fc83c508b8a0000708ebd589f600000200180000 *008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c *56e829eb010083c4088d47f8894604c70624ed06088d55f8c702a0000708894204c745f4d0a204 *0883ed0c6a006a05e84de4010083c410d95c24048b442404894424088b442408894424048b4424 *048945fc83ed048b4504eb9a000000002400000083c7083b7b5c7615c7436c02000000c74320ff *000100b84ccf0608ffe0c747fc789a05088b4500894424048b442404894424088b44240889078d *77fc83c508b8a0000708ebd589f600000200180000008d45f03b4354720883c70c3b7b5c760cc7 *436c030000008b43f8ffe0c747f808ee060883ec0c56e851ea010083c4088d47f8894604c70624 *ed06088d55f8c702a0000708894204c745f4a8a3040883ed0c6a006a00e875e3010083c410d95c *24048b442404894424088b442408894424048b4424048945fc83ed048b4504eb9a000000002400 *000083c7083b7b5c7615c7436c02000000c74320ff000100b84ccf0608ffe0c747fc789a05088b *4500894424048b442404894424088b44240889078d77fc83c508b8a0000708ebd589f694e40708 *c4e40708f0a3040800000200180003008d45f03b4354720883c70c3b7b5c760cc7436c03000000 *8b43f8ffe0c747f808ee060883ec0c56e86de9010083c4108d47f8894604c70624ed06088d55f8 *c702a0000708894204bec4e40708c745f4b4a4040883ed0c8b06ebc089f6010000002400000083 *c7143b7b5c760cc7436c050000008b43f8ffe0c747f0a83e05088b45048947f4c747f86ce40708 *c747fc6ce4070889378d77f083c508b8a0000708ebd489f6f0a304080000000024000100897500 *be94e40708c745fc68a4040883ed04ff26ace80708c4e40708c8a4040804000200000000001100 *03008d45f83b4354730abef8e407088b43fcffe0c745f8ece40708c745fce4a5040883ed08b8a8 *190508ebe689f60000000024000000be9c0f080883c504ff6500900000000024000000c7450014 *a50408e87cf6ffffff65009021000000240000008b45048944240c8b44240c894424188b450489 *44240c8b44240c894424148b46048944240c8b44240c89442410c7450428a5040883c5048b4424 *188944240c8b442414894424088b4424108944240483ec04ff742408ff742410ff742418e87df7 *ffff83c410ff65008d760001000000240000008b55048b4604894424048b442404894424088b44 *240889450489d6c7450040a50408ff26cca404080100000024000100bec4e40708c74500b4a504 *08ff2689f64c100808f4a5040800000200180001008d45f03b4354720883c70c3b7b5c760cc743 *6c030000008b43f8ffe0c747f808ee060883ec0c56e86de7010083c4108d47f8894604c70624ed *06088d55f8c702a0000708894204c745f400e50708c745f04c10080883ed10b8ec810508ebbb90 *ace80708b4e40708c4e4070864a604080400020000000000110007008d45fc3b4354730abe20e5 *07088b43fcffe08b7500c74500d0a804088b06ebf00000000024000000be9c0f080883c504ff65 *009021000000240000008b4504894424088b4424083500000080894424188b4604894424088b44 *2408894424148b4604894424088b442408894424108b4424188944240cc74504a8a6040883c504 *8b442414894424088b442410894424048b44240c89042483ec04ff742404ff74240cff742414e8 *f5f5ffff83c410ff65008d76006ca6040800000000240001008b4604894424048b442404894424 *088b442408894500bec4e40708c745fcbca6040883ed04ff269068a604080000000024000300be *b4e40708c7450040a70408ff2689f668a604080000000024000300c7450074a70408e824f3ffff *ff65009064a604080000000024000700c745fcece40708c7450090a7040883ed04e9e671000089 *f664a604080000000024000700c744244000000000c744244400804640c744243800000000c744 *243c0000f03fc744243000000000c74424340000d03fc744242800000000c744242c00003940c7 *4500aca704088b4424408b54244489442420895424248b4424388b54243c894424188954241c8b *4424308b54243489442410895424148b4424288b54242c894424088954240cff74240cff74240c *ff74241cff74241cff74242cff74242cff74243cff74243ce884f0ffff83c420ff650089f664a6 *04080000000024000700c74500d0a70408e824f2ffffff65009064a604080000000024000700c7 *45fca0e80708c7450090a8040883ed04e9e670000089f664a6040800000000240007008b56048b *4608c74500aca8040850526a006a00e878f0ffff83c410ff650089f600000200180000008d45f0 *3b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e879e4 *010083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f450e50708c745f0 *d0e5070883ed10b864950508ebbb90b4e80708c0e5070818e90708d4e80708d4e5070890e50708 *7ce4070894e40708a4e40708b4e40708c4e40708d4e40708f8e4070810e5070828e5070860e507 *08e0a9040800000000d4a9040800000100000000001100ffff8d45e03b4354730abe70e507088b *43fcffe0c745fcc0bd040883ed04b868ae0508ebed9058a9040810000000ffff0000e9cbffffff *8d760058a9040810000000ffff000058a9040810000000ffff00000000000024000000be9c0f08 *0883c504ff6500900000000024000000c7450008aa0408e888f1ffffff65009000000000240000 *00be9c0f080883c504ff6500900000000024000000c7450034aa0408e85cf1ffffff6500904200 *00002400000083c7083b7b5c760cc7436c020000008b43f8ffe08b4508890424d905f8850708d8 *0424d95c24088b4604890424d9442408d90424d9c9dae9dfe0f6c445740d8b750483c50c83ef08 *8b06ebc68b4508890424d905f8850708d80424d95c2404c747fc789a05088b4424048904248b04 *2489078d77fc83c50cb8a0000708eb939070a9040800000000240001008975fc8b460489442404 *8b442404894424088b442408894500be7ce40708c745f860aa040883ed08ff2689f670a9040801 *000100130001008d45ec3b435473058b43f8ffe08d45f8c700a00007088970048b7604c745f4ec *aa040883ed0c8b06ebe189f60000000024000000be9c0f080883c504ff65009042000000240000 *0083c7083b7b5c760cc7436c020000008b43f8ffe08b4508890424d905fc850708d80424d95c24 *088b4604890424d9442408d90424d9c9dae9dfe0f6c445740d8b750483c50c83ef088b06ebc68b *4508890424d905fc850708d80424d95c2404c747fc789a05088b4424048904248b042489078d77 *fc83c50cb8a0000708eb939070a9040800000000240001008975fc8b4604894424048b44240489 *4424088b442408894500be7ce40708c745f86cab040883ed08ff2689f670a90408010001001300 *01008d45ec3b435473058b43f8ffe08d45f8c700a00007088970048b7604c745f4f8ab040883ed *0c8b06ebe189f60000000024000000be9c0f080883c504ff650090420000002400000083c7083b *7b5c760cc7436c020000008b43f8ffe08b4508890424d90500860708d80424d95c24088b460489 *0424d9442408d90424d9c9dae9dfe0f6c445740d8b750483c50c83ef088b06ebc68b4508890424 *d90500860708d80424d95c2404c747fc789a05088b4424048904248b042489078d77fc83c50cb8 *a0000708eb939070a9040800000000240001008975fc8b4604894424048b442404894424088b44 *2408894500be7ce40708c745f878ac040883ed08ff2689f670a9040801000100130001008d45ec *3b435473058b43f8ffe08d45f8c700a00007088970048b7604c745f404ad040883ed0c8b06ebe1 *89f60000000024000000be9c0f080883c504ff650090420000002400000083c7083b7b5c760cc7 *436c020000008b43f8ffe08b4508890424d90504860708d80424d95c24088b4604890424d94424 *08d90424d9c9dae9dfe0f6c445740d8b750483c50c83ef088b06ebc68b4508890424d905048607 *08d80424d95c2404c747fc789a05088b4424048904248b042489078d77fc83c50cb8a0000708eb *939070a9040800000000240001008975fc8b4604894424048b442404894424088b442408894500 *be7ce40708c745f884ad040883ed08ff2689f670a9040801000100130001008d45ec3b43547305 *8b43f8ffe08d45f8c700a00007088970048b7604c745f410ae040883ed0c8b06ebe189f6000000 *0024000000be9c0f080883c504ff650090420000002400000083c7083b7b5c760cc7436c020000 *008b43f8ffe08b4508890424d90508860708d80424d95c24088b4604890424d9442408d90424d9 *c9dae9dfe0f6c445740d8b750483c50c83ef088b06ebc68b4508890424d90508860708d80424d9 *5c2404c747fc789a05088b4424048904248b042489078d77fc83c50cb8a0000708eb939070a904 *0800000000240001008975fc8b4604894424048b442404894424088b442408894500be7ce40708 *c745f890ae040883ed08ff2689f670a9040801000100130001008d45ec3b435473058b43f8ffe0 *8d45f8c700a00007088970048b7604c745f41caf040883ed0c8b06ebe189f60000000024000000 *be9c0f080883c504ff650090420000002400000083c7083b7b5c760cc7436c020000008b43f8ff *e08b4508890424d9050c860708d80424d95c24088b4604890424d9442408d90424d9c9dae9dfe0 *f6c445740d8b750483c50c83ef088b06ebc68b4508890424d9050c860708d80424d95c2404c747 *fc789a05088b4424048904248b042489078d77fc83c50cb8a0000708eb939070a9040800000000 *240001008975fc8b4604894424048b442404894424088b442408894500be7ce40708c745f89caf *040883ed08ff2689f670a9040801000100130001008d45ec3b435473058b43f8ffe08d45f8c700 *a00007088970048b7604c745f428b0040883ed0c8b06ebe189f60000000024000000be9c0f0808 *83c504ff65009070a90408440000002400410083c70c3b7b5c760cc7436c030000008b43f8ffe0 *8b460483e81b83f84b0f874f010000ff248510860708c745101caa040883c51083ef0c83ec0868 *52840000eb15c7451048aa040883c51083ef0c83ec0868518400006850840000e834eaffff83c4 *10e9150100008b45108b4004c747f824ab04088947fc8b55108d47f8894204c7451058ab0408eb *208b450c8b4004c747f830ac04088947fc8b550c8d47f8894204c7451064ac040883c510e852ea *ffffe9c60000008b45048b4004c747f83cad04088947fc8b55048d47f8894204c7451070ad0408 *ebd18b45108b4004c747f848ae04088947fc8b55108d47f8894204c745107cae0408ebaf8b450c *8b4004c747f854af04088947fc8b550c8d47f8894204c7451088af0408eb8d8b45048b4004c747 *f860b004088947fc8b55048d47f8894204c7451094b00408e968ffffffc7451074e40708eb07c7 *45106ce4070883c51083ef0cb8e0a40408e9b0feffff83c51483ef0cb8f8b00508e9a0feffffbe *9c0f080883c51483ef0c8b4500e98dfeffff8d76008b7508c74500acb00408ff26be9c0f080883 *c514ff65009040b2040834b2040870a9040804000000250041008b55088b460489450889d6c745 *0060b20408ff26be9c0f080883c514ff65009074b2040874b2040860b2040870a9040804000000 *2500410070a9040817000500030000000b0041008d45fc3b435473058b43fcffe08b4608894508 *8b460489450c8b55008b460c89450089d6c745fc98b2040883ed048b06ebd989f6e95b0500008d *7600e9470300008d76000000000024000000be9c0f080883c504ff650090e6070000240000008b *4604894424088b4424083500000080894424188b4510894424088b442408894424148b45048944 *24088b442408894424108b4424188944240cc74518f4b2040883c5188b442414894424088b4424 *10894424048b44240c89042483ec04ff742404ff74240cff742414e8e9e4ffff83c410ff65008d *760078a90408e607000024000100bea4e40708c7450008b30408ff2689f678a90408e607000024 *0001008b550c8b4604894424048b44240489442408c745008cb304088b4424088944240483ec0c *ff742410ffd283c410ff650078a90408e6050000240001008b45148b7004c74500a8b30408ff26 *9078a90408e6050000240001008b4604894424148b4424143500000080894424288b4504894424 *148b4424143500000080894424248b442424894424208b4510894424148b4424148944241c8b44 *242889442418c74500e4b304088b442420894424148b44241c894424108b4424188944240c83ec *04ff742410ff742418ff742420e8e6e3ffff83c410ff650078a90408e605000024000300beb4e4 *0708c7450000b40408ff2689f678a90408e6050000240003008b550c8b4604894424048b442404 *89442408c745008cb404088b4424088944240483ec0cff742410ffd283c410ff650078a90408e6 *010000240003008b45188b7004c74500a8b40408ff269078a9040864000000240003008b450089 *4424088b4424083500000080894424188b4500894424088b442408894424148b44241889442410 *8b450c894424088b4424088944240cc745fce4b4040883ed048b442414894424088b4424108944 *24048b44240c89042483ec04ff742404ff74240cff742414e8f1e2ffff83c410ff65008d760078 *a904086400000024000300c7450000b5040883ec086a006a02e858d1010083c410d95c24048b44 *2404894424088b442408894424048b4424048945fc83ed04ff65049078a9040864000000240003 *008b55048b4604894424048b44240489442408c7450084b504088b4424088944240483ec0cff74 *2410ffd283c410ff650078a9040844000000240003008b55048b460489450489d6c74500c8b504 *08ff26e4b204080000000060a9040800000100030001000b00c1008d45e43b435473058b43fcff *e08b46048b40048945f08b4610894424048b442404894424088b4424088945f48b460c8945f88b *46088945fcbe18e90708c745ec04b6040883ed148b06ebc0900000000024000000be9c0f080883 *c504ff6500900000000024000000c7450084b60408e8dce4ffffff65009060a904086500000024 *00c10083c7143b7b5c7615c7436c05000000c74320ff000000b84ccf0608ffe0c747f030b60408 *8b45148947f48b45108947f88b450c8947fc8b4504894424048b442404894424088b4424088907 *8d47f0894510c7450cc8a30608c74508e8e80708c7451498b6040883c508b810130508ebab60a9 *0408240000002400c1008b4604894424088b4424088944240c8b44240c8945008b450489442408 *8b44240889442418b80000403f894424148b4604894424088b44240889442410c745fcb4b60408 *83ed048b442418894424088b4424148944240c8b4424108944240483ec04ff742408ff742414ff *742414e81de0ffff83c410ff65008d760060a90408030000002400c1018b4604894424048b4424 *04894424088b442408894500bec4e40708c745fc30b7040883ed04ff269060a904080300000024 *00e101be94e40708c74500b8b70408ff2689f660a90408030000002400e1018b4604c74500ecb7 *040883ec0c50e875e4ffff83c410ff65008d7600dcb204080000000060a9040800000100030000 *000b00e1098d45e83b435473058b43fcffe08b460c8945f48b46088945f88b46048945fcbe10e5 *0708c745f008b8040883ed108b06ebd989f60000000024000000be9c0f080883c504ff65009000 *00000024000000c7450078b804088b43608968308b53688d470489420483ec086a0053e88aa601 *0083c41089442408e887dfffff83ec086a00ff742414e8eea6010083c4108b43608b6830058800 *00008943548b43688b780483ef0489c28b4018c1e00c030283e80489435cff650060a904080300 *00002400e90983c7183b7b5c7615c7436c06000000c74320fe000000b84ccf0608ffe0c747ec3c *b804088b450c8947f08b45088947f48b45048947f8c747fcc88305088d47ec89078d47fc894508 *c74504b8e50708c74500b4e50708c745fc98e50708c7450c8cb8040883ed04b8acc00408ebad89 *f65ca90408030000002400f31b83c7183b7b5c7615c7436c06000000c74320fe000000b84ccf06 *08ffe0c747eca8b204088b450c8947f08b45088947f48b45048947f8c747fcc88305088d47ec89 *078d47fc8945fcc7450000b9040883ed04b848c80408ebc28d76005ca90408030000002400f33b *c745fc28e50708c745f8bce50708c745f4b0e50708c745f09ce50708c745007cb9040883ed10e9 *9d060000905ca90408e60000002400f33b8b450c894424188b442418894424288b450889442418 *8b442418894424248b4504894424188b442418894424208b4604894424188b4424188944241cc7 *450ce4b9040883c50c8b442428894424188b442424894424148b442420894424108b44241c8944 *240cff74240cff742414ff74241cff742424e8c9e0ffff83c410ff65008d76005ca90408c60000 *002400f33b8b55048b4604894424048b442404894424088b44240889450489d6c745001cba0408 *ff265ca90408860000002400f33b8b55088b4604894424048b442404894424088b442408894508 *89d6c74500acba0408ff265ca90408060000002400f33b8b550c8b4604894424048b4424048944 *24088b44240889450c89d6c74500dcba0408ff265ca90408030000002400f33b8b46108945f88b *460c8945fc8b46088945008b7604c745f40cbb040883ed0cff268d76005ca90408030000002400 *f33fbed4e40708c745003cbb0408ff2689f65ca90408030000002400f33fc745006cbb040883ec *0868518400006850840000e89fdfffff83c410ff6500905ca90408030000002400f33f8b7500c7 *4500dce80708c7450488bb040883ed04e9fbe701008d76005ca90408030000002400f73fc745fc *e0e80708c74500b4bb040883ed04e9ba69000089f65ca90408030000002400f73fc745fcd4e407 *08c74500dcbb040883ed04e92267000089f65ca90408030000002400f73fc745fc34e50708c745 *0000bc040883ed04e9a264000089f65ca90408030000002400f73fc745fc98e807088b7608c745 *0024bc040883ed08e967e701008d760058a90408020000002400ef7f897500beb4e80708c745fc *48bc040883ed04ff2658a90408010000002400ef7f897500bea4e40708c745fc70bc040883ed04 *e9151902009058a90408000000002400ef7f897500beb4e40708c745fc90bc040883ed04e9f118 *02009058a90408000000002400ef7fbe94e40708c74500b4bc0408e9d31802008d760058a90408 *010000002400ef7fc74500ece507088b45048945fcc74504d8bc040883ed04e910c8000058a904 *08010000002400ef7fc74500f8bc040883ec0868f401000068f4010000e887dcffff83c410ff65 *009058a90408010000002400ef7fc7450020bd040883ec0c56e824ddffff83c410ff650089f658 *a90408010000002400efffc745fc60e50708c745f800000000c745004cbd040883ed08e9fb1b00 *008d7600f4a90408010000002400ffff8975fc8b45048945f8c7450070bd040883ed08e9741900 *00e8a90408000000002400ffff897500c745fc9cbd040883ed04e9c6f1000089f670e507083810 *080808be040800000000d4bd0408000001000000000011000300c7430438100808be70e50708e9 *9f0602008d7600e9e7ffffff8d76000400010000000000110000008b7500c7450030be0408ff26 *00000000240000008b760483c504ff260400010000000000110000008b7500c7450058be0408ff *2600000000240000008b760883c504ff260400010000000000110000008b7500c7450080be0408 *ff2600000000240000008b760c83c504ff2616000300000000001100000083c7103b7b5c7611c7 *436c04000000be8ce507088b43fcffe0c747f4d8be04088b45008947f88b45048947fc8b450889 *078d77f483c50c8b4500ebdb0300000001000000ff6500900300000009000000ff650090b8f0be *0408ffe090833d50270808000f85a0000000c7055027080801000000c7450050d5040883c504c7 *45000cd6040883c504c74500fcd4040883c504c7450024dc040883c504c74500a4d5040883c504 *c7450010dd040883c504c7450048d4040883c504c74500d8bf040883c504c745005cdb040883c5 *04c7450064dc040883c504c74500ccdd040883c504c74500acbf040883c504c745001cda040883 *c504c745004410050883c504c7450014ad050883c50483ed04ff650090b8acbf0408ffe090833d *54270808007514c7055427080801000000c7450014ad050883c50483ed04ff650090b8d8bf0408 *ffe090833d58270808007528c7055827080801000000c74500ecc4040883c504c7450018c00408 *83c504c7450014ad050883c50483ed04ff650090b818c00408ffe090833d5c27080800755ac705 *5c27080801000000c74500bcd4040883c504c7450010c4040883c504c745008437050883c504c7 *4500841b050883c504c745005490050883c504c74500d488050883c504c74500fc79050883c504 *c7450014ad050883c50483ed04ff6500909090bc0f0808a0e50708f0e507080c0f0808140f0808 *20e6070884c00408170005000000000011003f008d45ec3b4354730abe90e507088b43fcffe08b *7500c7450094c304088b06ebf0c74510181008088b750883c50ce9eae2010089f694c004080300 *0000120001008d45e43b435473058b43f8ffe08d45f8c700a00007088970048b460c8945f48b46 *088945f08b46048945ecc745e8200f0808c745e4f8e5070883ed1cb8747e0508ebc89094c00408 *840000002400010083c7103b7b5c760cc7436c040000008b43f8ffe08b46048b4004c747f4ecc0 *04088947f88b45048947fc8b451089078b56048d47f48942048b750883c50cb8c8a30608ebcd8d *760088c004088401000024000900897510bea0e50708c745003cc10408ff268d76008b46048945 *fc8b750cc7450090c1040883ed08e90ce20100a4c10408ccc0040888c004080401000025000900 *88c0040804000000240009008b7510c74500d0c10408ff2683c504ebef8d760090c00408020000 *00150001008d45ec3b435473058b43f8ffe08d45f8c700a00007088970048b46048945f48b4608 *8945f0c745ecf8e5070883ed14b8a07c0508ebd589f688c004080500000024000d0083c70c3b7b *5c7615c7436c03000000c74320fe000000b84ccf0608ffe08b45048b5004c747f8fcc104088b45 *088947fc89178b55048d47f889420483c504b8dcc10408ebd68d76008b46048945fcc7450040c2 *040883ed04e9bf2400008d760088c20408e8c1040888c004080500000025000f0088c004080400 *000024000f008b46048b50048b45048945f88955f4c745f0f8e507088b4604894500c745fcb4c2 *040883ed10e98db800009088c004082400000024000f00897504bea0e50708c74500c0c20408ff *268d760084c004080400000024003f0083c71c3b7b5c7615c7436c07000000c74320ff000000b8 *4ccf0608ffe085f67519c7451020e60708bebc0f080883c50c83ef1cb8b8a10608ebe1c747e830 *9f05088977ecc747f0c88305088d47e88947f4c747f8e0c304088d47f08947fc8b450489078d77 *f8b8f8c20408ebae8d760084c004080300000024003f008b06668b40fe25ffff000083f8157414 *83f8167516be30e6070883ed04b8f8c20408ffe0be40e60708ebef897500c745fc18c3040883ed *04e8ffd4ffff89c68b4500ebde0200000004000000ff6500900200000009000000ff6500900000 *00000a000000ff650090000000000a000200ff650090b810c40408ffe090833d60270808007564 *c7056027080801000000c745008437050883c504c74500ccdd040883c504c74500fcb1050883c5 *04c745005490050883c504c74500d488050883c504c745002481050883c504c74500cc80050883 *c504c74500bc79050883c504c7450014ad050883c50483ed04ff65009000000200180000008d45 *f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e8e5 *c8010083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f49ce6070883ed *0cb8689c0508ebc2b8ecc40408ffe090833d64270808000f858c000000c7056427080801000000 *c7450010dd040883c504c745008cdd040883c504c74500bcd4040883c504c7450010c4040883c5 *04c745008437050883c504c74500841b050883c504c745005490050883c504c74500d488050883 *c504c74500e883050883c504c74500c07a050883c504c74500807a050883c504c74500bc790508 *83c504c7450014ad050883c50483ed04ff6500900400010000000000110000008b7500c7450008 *c60408ff26eb2e89f60000000024000000be9c0f080883c504ff650090a4c50408000000000000 *000000000100000001000d0000008d45fc3b435473058b43fcffe08b4604c745fcb0c5040883ed *0483ec0c50e829d6ffff83c4108b4500ebe090000000002400000083c7083b7b5c760cc7436c02 *0000008b43f8ffe0c747fcd4c504088b460489078d47fc894500b8ac9c0508ebe5909090040001 *0000000000110000008b7500c74500b4c60408ff26eb2e89f60000000024000000be9c0f080883 *c504ff65009050c60408000000000000000000000100000001000d0000008d45fc3b435473058b *43fcffe08b4604c745fc5cc6040883ed0483ec0c50e81dd5ffff83c4108b4500ebe09000000000 *2400000083c7083b7b5c760cc7436c020000008b43f8ffe0c747fc80c604088b460489078d47fc *894500b8ac9c0508ebe59090900400020000000000110000008b7500c7450044c70408e9092102 *0090000000002400000083c7083b7b5c7615c7436c02000000c74320ff000000b84ccf0608ffe0 *c747fcb0a1050889378d77fc83c5048b4500ebea8d76000000000024000000c7450008c7040883 *ec046810df0408566a01e80783010083c41089c6ff65009004000200000000001100000083c708 *3b7b5c7611c7436c02000000bebce507088b43fcffe0c747fce8c704088b450089078d47fc8945 *00b8c4eb0408ebe589f602000000150000008d45f03b435473058b43f8ffe08d45f8c700a00007 *088970048b46088945f48b46048945f083ed10b860180508ebdc900b000200010000000c000000 *83c70c3b7b5c760cc7436c030000008b43fcffe0c747f8acc704088b45008947fc8b450489078d *47f88945048b7604b8b8a10608ebdc909090e507086c0f08086c0f0808a0e60708a0e60708e4e6 *070820c80408040002000000000011003f008d45ec3b4354730abec0e507088b43fcffe08b7500 *c74500a0d304088b06ebf020c804080000000024002100c74500280f0808c745fce4e60708c745 *f8ece60708c745f458e6070883ed0ce914f8ffff20c804080000000024003100c745fc280f0808 *c745f8d4e60708c745f4e0e60708c745f060e60708c7450074c8040883ed10e9ddf7ffff9020c8 *04080000000024003900c745fc280f0808c745f8cce60708c745f4dce60708c745f05ce60708c7 *4500a4c8040883ed10e9a5f7ffff9020c804080000000024003d00c745fc280f0808c745f8bce6 *0708c745f4c8e60708c745f054e60708c74500dcc8040883ed10e96df7ffff90c745fc280f0808 *c745f8b4e60708c745f4c4e60708c745f050e60708c7450014c9040883ed10e941f7ffff900000 *0200140000008d45f83b435473058b43f8ffe08d45f8c700a0000708897004f6460404750ebecc *e5070889c5a18c000708ebdebec8e5070883ed08a190000708ebcf00000200140000008d45f83b *435473058b43f8ffe08d45f8c700a0000708897004f6460402750ebecce5070889c5a18c000708 *ebdebec8e5070883ed08a190000708ebcf00000200140000008d45f83b435473058b43f8ffe08d *45f8c700a0000708897004f6460401750ebecce5070889c5a18c000708ebdebec8e5070883ed08 *a190000708ebcf030000002400000083c73c3b7b5c7615c7436c0f000000c74320ff000000b84c *cf0608ffe0c747c874c904088977ccc747d4b8c904088977d8c747e0fcc904088977e4c747ec08 *d404088d47e08947f08d47d48947f48d47c88947f8c747fca8d304088b450889078b450c894508 *c7450ce8970608c74500c8e507088d47fc8945fc8b75048d47ec89450483ed08b814ae0608eb8e *8d76000b000300010000000c0000008d45f03b435473058b43fcffe08b46048945fcc745f840ca *040883ed08e8a2cdffff89c68b4500ebe28d760000000200140000008d45f83b435473058b43f8 *ffe08d45f8c700a0000708897004f6460404750ebecce5070889c5a18c000708ebdebec8e50708 *83ed08a190000708ebcf00000200140000008d45f83b435473058b43f8ffe08d45f8c700a00007 *08897004f6460402750ebecce5070889c5a18c000708ebdebec8e5070883ed08a190000708ebcf *00000200140000008d45f83b435473058b43f8ffe08d45f8c700a0000708897004f6460401750e *becce5070889c5a18c000708ebdebec8e5070883ed08a190000708ebcf030000002400000083c7 *3c3b7b5c7615c7436c0f000000c74320ff000000b84ccf0608ffe0c747c810cb04088977ccc747 *d454cb04088977d8c747e098cb04088977e4c747ec08d404088d47e08947f08d47d48947f48d47 *c88947f8c747fca8d304088b450889078b450c894508c7450ce8970608c74500cce507088d47fc *8945fc8b75048d47ec89450483ed08b814ae0608eb8e8d76000b000300010000000c0000008d45 *f03b435473058b43fcffe08b46048945fcc745f8dccb040883ed08e806ccffff89c68b4500ebe2 *8d760000000200140000008d45f83b435473058b43f8ffe08d45f8c700a0000708897004f64604 *04750ebecce5070889c5a18c000708ebdebec8e5070883ed08a190000708ebcf00000200140000 *008d45f83b435473058b43f8ffe08d45f8c700a0000708897004f6460402750ebecce5070889c5 *a18c000708ebdebec8e5070883ed08a190000708ebcf00000200140000008d45f83b435473058b *43f8ffe08d45f8c700a0000708897004f6460401750ebecce5070889c5a18c000708ebdebec8e5 *070883ed08a190000708ebcf030000002400000083c73c3b7b5c7615c7436c0f000000c74320ff *000000b84ccf0608ffe0c747c8accc04088977ccc747d4f0cc04088977d8c747e034cd04088977 *e4c747ec08d404088d47e08947f08d47d48947f48d47c88947f8c747fcc8d304088b450889078b *450c894508c7450ce8970608c74500c8e507088d47fc8945fc8b75048d47ec89450483ed08b814 *ae0608eb8e8d76000b000300010000000c0000008d45f03b435473058b43fcffe08b46048945fc *c745f878cd040883ed08e86acaffff89c68b4500ebe28d760000000200140000008d45f83b4354 *73058b43f8ffe08d45f8c700a0000708897004f6460404750ebecce5070889c5a18c000708ebde *bec8e5070883ed08a190000708ebcf00000200140000008d45f83b435473058b43f8ffe08d45f8 *c700a0000708897004f6460402750ebecce5070889c5a18c000708ebdebec8e5070883ed08a190 *000708ebcf00000200140000008d45f83b435473058b43f8ffe08d45f8c700a0000708897004f6 *460401750ebecce5070889c5a18c000708ebdebec8e5070883ed08a190000708ebcf0300000024 *00000083c73c3b7b5c7615c7436c0f000000c74320ff000000b84ccf0608ffe0c747c848ce0408 *8977ccc747d48cce04088977d8c747e0d0ce04088977e4c747ec08d404088d47e08947f08d47d4 *8947f48d47c88947f8c747fcc8d304088b450889078b450c894508c7450ce8970608c74500cce5 *07088d47fc8945fc8b75048d47ec89450483ed08b814ae0608eb8e8d76000b000300010000000c *0000008d45f03b435473058b43fcffe08b46048945fcc745f814cf040883ed08e8cec8ffff89c6 *8b4500ebe28d760000000200140000008d45f83b435473058b43f8ffe08d45f8c700a000070889 *7004f6460404750ebecce5070889c5a18c000708ebdebec8e5070883ed08a190000708ebcf0000 *0200140000008d45f83b435473058b43f8ffe08d45f8c700a0000708897004f6460402750ebecc *e5070889c5a18c000708ebdebec8e5070883ed08a190000708ebcf00000200140000008d45f83b *435473058b43f8ffe08d45f8c700a0000708897004f6460401750ebecce5070889c5a18c000708 *ebdebec8e5070883ed08a190000708ebcf040000002400000083c73c3b7b5c7615c7436c0f0000 *00c74320ff000000b84ccf0608ffe0c747c8e4cf04088977ccc747d428d004088977d8c747e06c *d004088977e4c747ec08d404088d47e08947f08d47d48947f48d47c88947f8c747fce8d304088b *450889078d47ec8945088d47fc8945008b75048b450c8945048b451089450cc74510e897060883 *ed04b814ae0608eb8f16000400010000000c0000008d45f43b435473058b43fcffe08b46048945 *fcc745f8b0d0040883ed08e836c7ffff89c68b4500ebe28d760020c80408010000002400210083 *c7103b7b5c7615c7436c04000000c74320fe000000b84ccf0608ffe0c747f448d104088b450489 *47f8c747fcc88305088d47f489078d47fc894504c74500e4e60708c745fcece60708c745f858e6 *070883ed08b8acc00408ebc09020c80408010000002400310083c7103b7b5c7615c7436c040000 *00c74320fe000000b84ccf0608ffe0c747f4b0cf04088b45048947f8c747fcc88305088d47f489 *078d47fc8945fcc745f8d4e60708c745f4e0e60708c745f060e60708c7450080d1040883ed10b8 *acc00408ebb989f620c80408010000002400390083c7103b7b5c7615c7436c04000000c74320fe *000000b84ccf0608ffe0c747f414ce04088b45048947f8c747fcc88305088d47f489078d47fc89 *45fcc745f8cce60708c745f4dce60708c745f05ce60708c74500e8d1040883ed10b8acc00408eb *b989f620c804080100000024003d0083c7103b7b5c7615c7436c04000000c74320fe000000b84c *cf0608ffe0c747f478cc04088b45048947f8c747fcc88305088d47f489078d47fc8945fcc745f8 *bce60708c745f4c8e60708c745f054e60708c7450058d2040883ed10b8acc00408ebb989f683c7 *103b7b5c760cc7436c040000008b43f8ffe0c747f4dcca04088b46048947f8c747fcc88305088d *47f489078d47fc8945f8c745f4b4e60708c745f0c4e60708c745ec50e607088b4604894500c745 *fcc8d2040883ed14b8acc00408ebb3902cd3040840c9040820c804080000000025003f00010000 *00020000008b4500ff60f089f601000000090000008b4500ff60f0909001000000020001008b45 *00ff60ec89f601000000090001008b4500ff60ec909001000000020002008b4500ff60e889f601 *000000090002008b4500ff60e890900300000001000000ff6500900300000009000000ff650090 *000000000a0000008b4500ff60f09090000000000a0001008b4500ff60ec89f6c8e50708cce507 *08b848d40408ffe090833d6827080800755ac7056827080801000000c74500c4dc040883c504c7 *4500ccdd040883c504c74500bcd4040883c504c74500c03e050883c504c745008437050883c504 *c745004012050883c504c74500d488050883c504c7450014ad050883c50483ed04ff6500909090 *b8bcd40408ffe090833d6c270808007528c7056c27080801000000c74500d488050883c504c745 *004012050883c504c7450014ad050883c50483ed04ff650090b8fcd40408ffe090833d70270808 *00753cc7057027080801000000c745008437050883c504c74500d43f050883c504c7450014b105 *0883c504c74500f8ad050883c504c7450014ad050883c50483ed04ff650090b850d50408ffe090 *833d7427080800753cc7057427080801000000c74500bcd4040883c504c74500c4dc040883c504 *c745008437050883c504c74500d488050883c504c7450014ad050883c50483ed04ff650090b8a4 *d50408ffe090833d78270808007550c7057827080801000000c745005490050883c504c7450040 *12050883c504c74500d488050883c504c74500cc86050883c504c74500c07a050883c504c74500 *bc79050883c504c7450014ad050883c50483ed04ff650090b80cd60408ffe090833d7c27080800 *0f8582000000c7057c27080801000000c74500ccdd040883c504c745001cda040883c504c74500 *8cdd040883c504c74500bcd4040883c504c745008437050883c504c74500841b050883c504c745 *004012050883c504c74500d488050883c504c74500cc86050883c504c745005883050883c504c7 *4500bc79050883c504c7450014ad050883c50483ed04ff65009090900400010000000000110000 *008d45fc3b4354730abed0e507088b43fcffe08b45008945fcc74500e4d6040883ed04b8dcda04 *08ebe78d7600000000002400000083c7083b7b5c760ec7436c02000000b838c90608ffe0c747fc *04ab050889378d77fc83c5048b4500ebea90900c100808340f080810d704080b00030000000000 *110003008d45e83b4354730abed4e507088b43fcffe0be04000000c745fc64d9040883ed04b8e4 *d40608ebe810d7040801000100130001008d45f43b435473058b43f8ffe08d45f8c700a0000708 *8970048b46048945f483ed0cb8ec9f0508ebe28d760010d70408000000002400010083c70c3b7b *5c7615c7436c03000000c74320fe000000b84ccf0608ffe0c747f85cd704088977fc8d77f883c5 *048b4500ebe989f610d7040800000000240001008975fcc7450094d7040883ed04e98a1e000089 *f610d7040842000000240001008b45088b00894500c745fc440f0808c74508d4d7040883ed04e9 *6ab4000089f610d7040821000000240001008975008b55048b4604c745fcf4d7040883ed0483ec *085052e863c2ffff83c410ff65009010d704080b000300000001000d0001008d45f83b43547305 *8b43fcffe08b55048b460489450489d6c7450020d804088b06ebe89010d7040804000200000001 *000d0003008d45f43b4354720883c7083b7b5c760cc7436c020000008b43fcffe0c747fc54d804 *088b460489078b45008945fc8d47fc894500c745f820100808c745f4440f080883ed0cb8788a05 *08ebcec30000002400000083c510ff650089f610d70408030000002400030083c7143b7b5c760e *c7436c05000000b838c90608ffe08b550483c2088d46018902c747f088d804088957f4c747f864 *9705088b45088947fc8b450c8907c745fce89706088d47f08945f88d47f88945f4c745f02c0f08 *08c74500dcd8040883ed10b8108f0508ebac10d7040802000000240003008b45088945f8897500 *c745fcf0d8040883ed08e9801c00000900020000000000110000008d45fc3b4354730abedce507 *088b43fcffe08b7504c745fcfcd9040883ed048b06ebed908b750483c50cff65008d7600220000 *00240000008b45040b460489450483c504e9b7ffffff8d76008b46088945088b7604c74500c0d9 *0408ff2689f6d4d90408acd90408000000006200000025000000000000000a000100ff65009000 *0000000a000900ff650090b81cda0408ffe090833d80270808000f85a0000000c7058027080801 *000000c74500c4dc040883c504c745008cdd040883c504c74500bcd4040883c504c74500843705 *0883c504c74500841b050883c504c74500f8ad050883c504c74500e090050883c504c745005490 *050883c504c74500908e050883c504c74500f08b050883c504c74500d488050883c504c74500cc *86050883c504c745005883050883c504c74500807a050883c504c7450014ad050883c50483ed04 *ff6500900400010000000000110000008b7500c74500f0da0408ff2600000000240000008b0666 *8b40fe25ffff000083f80a774cff248540870708be8000000083c5048b4500ffe0be02000000eb *f1be20000000ebeabe10000000ebe3be04000000ebdcbe08000000ebd5be00020000ebcebe0100 *0000ebc7be00000000ebc0be00010000ebb990b85cdb0408ffe090833d84270808000f85aa0000 *00c7058427080801000000c7450010c4040883c504c74500ecc4040883c504c74500ccdd040883 *c504c745008cdd040883c504c74500c4dc040883c504c74500bcd4040883c504c7450084370508 *83c504c74500fcb1050883c504c74500bc79050883c504c745005490050883c504c74500d48805 *0883c504c74500cc86050883c504c745002481050883c504c74500cc80050883c504c74500347a *050883c504c7450014ad050883c50483ed04ff6500909090b824dc0408ffe090833d8827080800 *7528c7058827080801000000c745004012050883c504c74500b044050883c504c7450014ad0508 *83c50483ed04ff650090b864dc0408ffe090833d8c270808007546c7058c27080801000000c745 *00c4dc040883c504c74500ccdd040883c504c74500bcd4040883c504c745008437050883c504c7 *45004012050883c504c7450014ad050883c50483ed04ff6500909090b8c4dc0408ffe090833d90 *270808007532c7059027080801000000c74500d488050883c504c745004012050883c504c74500 *bc79050883c504c7450014ad050883c50483ed04ff6500909090b810dd0408ffe090833d942708 *08007564c7059427080801000000c7450064dc040883c504c74500c4dc040883c504c74500bcd4 *040883c504c745008437050883c504c74500841b050883c504c745004012050883c504c74500d4 *88050883c504c74500bc79050883c504c7450014ad050883c50483ed04ff650090b88cdd0408ff *e090833d98270808007528c7059827080801000000c74500d488050883c504c74500bcd4040883 *c504c7450014ad050883c50483ed04ff650090b8ccdd0408ffe090833d9c27080800755ac7059c *27080801000000c74500c4dc040883c504c745008cdd040883c504c74500bcd4040883c504c745 *008437050883c504c74500841b050883c504c74500d488050883c504c74500cc86050883c504c7 *450014ad050883c50483ed04ff65009090900400010000000000110000008b7500c74500e0de04 *08ff26eb5689f6000000002400000083c7083b7b5c7615c7436c02000000c74320ff000000b84c *cf0608ffe0c747fc309f050889378d77fc83c5048b4500ebea8d760050de040800000000000000 *0000000100000001000d0000008d45fc3b435473058b43fcffe08b4604c745fc5cde040883ed04 *83ec0c50e8b5b9ffff83c41089c68b4500ebde8d7600000000002400000083c7083b7b5c760cc7 *436c020000008b43f8ffe0c747fca8de04088b460489078d47fc894500b8ac9c0508ebe5909090 *5589e583ec08e8187301008b4508c1e00483ec088b15a02b0808ff34026840100808e8166f0100 *83c4088d55fc5250e89670010083c40850686c870708e889720100e8dd720100c9c35589e55383 *ec04e8ce7201008b4508c1e0048b15a02b08088b1c0283ec0cff7510e8056d010083c4085053e8 *c46e010089c383c404ff7514e8ee6c010083c4085053e8ad6e010083c408506840100808e89f6e *010083c4088d55f85250e81f70010083c408506898870708e812720100e8667201008b5dfcc9c3 *5589e55383ec04e8547201008b4508c1e0048b15a02b08088b1c0283ec0cff7510e88b6c010083 *c4085053e84a6e010083c408506840100808e83c6e010083c4088d55f85250e8bc6f010083c408 *5068c4870708e8af710100e8037201008b5dfcc9c35589e5565383ec108a5d10e8ed7101008b45 *08c1e0048b15a02b08088b340283ec0c81e3ff00000053e87c6c010083c4085056e8df6d010089 *c383c404ff7514e8096c010083c4085053e8c86d010089c383c404ff7518e8f26b010083c40850 *53e8b16d010083c408506840100808e8a36d010083c4088d55f45250e8236f010083c4085068f0 *870708e816710100e86a7101008d65f85b5e5dc35589e55383ec04e8567101008b4508c1e0048b *15a02b08088b1c0283ec0cff7510e88d6b010083c4085053e84c6d010089c383c404ff7514e876 *6b010083c4085053e8356d010089c383c404ff7518e85f6b010083c4085053e81e6d010083c408 *506840100808e8106d010083c4088d55f85250e8906e010083c40850681c880708e883700100e8 *d77001008b5dfcc9c35589e55383ec04e8c57001008b4508c1e0048b15a02b08088b1c0283ec0c *ff7510e8fc6a010083c4085053e8bb6c010089c383c404ff7514e8e56a010083c4085053e8a46c *010089c383c404ff7518e8ce6a010083c4085053e88d6c010089c383c404ff751ce8b76a010083 *c4085053e8766c010083c408506840100808e8686c010083c4088d55f85250e8e86d010083c408 *506848880708e8db6f0100e82f7001008b5dfcc9c35589e55383ec04e81d7001008b4508c1e004 *8b15a02b08088b1c0283ec0cff7510e8546a010083c4085053e8136c010089c383c404ff7514e8 *3d6a010083c4085053e8fc6b010083c408506840100808e8ee6b010083c4088d55f85250e86e6d *010083c408506874880708e8616f0100e8b56f01008b5dfcc9c35589e55383ec04e8a36f01008b *4508c1e0048b15a02b08088b1c0283ec0cff7510e8da69010083c4085053e8996b010083c40850 *6840100808e88b6b010083c4088d55f85250e80b6d010083c4085068a0880708e8fe6e0100e852 *6f01008b5dfcc9c35589e55383ec04e8406f01008b4508c1e0048b15a02b08088b1c0283ec0cff *7510e81669010083c4085053e8366b010089c383c404ff7514e8ff68010083c4085053e81f6b01 *0089c383c404ff7518e8e868010083c4085053e8086b010083c408506840100808e8fa6a010083 *c4088d55f85250e87a6c010083c4085068cc880708e86d6e0100e8c16e01008b5dfcc9c35589e5 *5383ec04e8af6e01008b4508c1e0048b15a02b08088b1c0283ec0cff7510e88568010083c40850 *53e8a56a010089c383c404ff7514e86e68010083c4085053e88e6a010089c383c404ff7518e857 *68010083c4085053e8776a010083c408506840100808e8696a010083c4088d55f85250e8e96b01 *0083c4085068f8880708e8dc6d0100e8306e01008b5dfcc9c35589e55383ec04e81e6e01008b45 *08c1e0048b15a02b08088b1c0283ec0cff7510e85568010083c4085053e8146a010089c383c404 *ff7514e83e68010083c4085053e8fd69010083c408506840100808e8ef69010083c4088d55f852 *50e86f6b010083c408506824890708e8626d0100e8b66d01008b5dfcc9c35589e55383ec04e8a4 *6d01008b4508c1e0048b15a02b08088b1c0283ec0cff7510e8db67010083c4085053e89a690100 *89c383c404ff7514e8c467010083c4085053e88369010083c408506840100808e87569010083c4 *088d55f85250e8f56a010083c408506850890708e8e86c0100e83c6d01008b5dfcc9c35589e553 *83ec04e82a6d01008b4508c1e0048b15a02b08088b1c0283ec0cff7510e80067010083c4085053 *e82069010089c383c404ff7514e8e966010083c4085053e80969010083c408506840100808e8fb *68010083c4088d55f85250e87b6a010083c40850687c890708e86e6c0100e8c26c01008b5dfcc9 *c35589e55383ec04e8b06c01008b4508c1e0048b15a02b08088b1c0283ec0cff7510e8e7660100 *83c4085053e8a668010089c383c404ff7514e8d066010083c4085053e88f68010083c408506840 *100808e88168010083c4088d55f85250e8016a010083c4085068a8890708e8f46b0100e8486c01 *008b5dfcc9c35589e55383ec04e8366c01008b4508c1e0048b15a02b08088b1c0283ec0cff7510 *e86d66010083c4085053e82c68010089c383c404ff7514e85666010083c4085053e81568010089 *c383c404ff7518e83f66010083c4085053e8fe67010089c383c404ff751ce82866010083c40850 *53e8e767010083c408506840100808e8d967010083c4088d55f85250e85969010083c4085068d4 *890708e84c6b0100e8a06b01008b5dfcc9c35589e55383ec04e88e6b01008b4508c1e0048b15a0 *2b08088b1c0283ec0cff7510e86766010083c4085053e88467010089c383c404ff7514e8ae6501 *0083c4085053e86d67010089c383c404ff7518e89765010083c4085053e85667010089c383c404 *ff751ce88065010083c4085053e83f67010083c408506840100808e83167010083c4088d55f852 *50e8b168010083c4085068008a0708e8a46a0100e8f86a01008b5dfcc9c39090908ce6070814e7 *070844e704080400020000000000110003008d45fc3b4354730abef0e507088b43fcffe0be8ce6 *0708c745fc14e8040883ed048b06ebeb8d76000000000024000000be9c0f080883c504ff650090 *00000000240000008b4604c745008ce7040883ec046a00506a00e8c9b5ffff83c410ff65008d76 *0000000000240000008b46048b7004c74500a0e70408ff2690be14e70708c74500c8e70408ff26 *89f6be9c0f080883c504ff650090e8e70408d8e7040848e70408000000002500010048e7040801 *0000002400010083c70c3b7b5c760cc7436c030000008b43f8ffe08b46048b4804c747f8649705 *088b45048947fc890f8b56048d47f889420489cec7450408e8040883c5048b06ebd090906ce607 *087ce6070858e8040800000200180003008d45f03b4354720883c70c3b7b5c760cc7436c030000 *008b43f8ffe0c747f808ee060883ec0c56e805a5010083c4108d47f8894604c70624ed06088d55 *f8c702a0000708894204c745f47ce60708c745f06ce6070883ed10b84c960508ebbb9000000000 *0a000300ff650090000000000a000400ff650090000000000a000500ff650090000000000a000b *00ff650090000000000a000c00ff650090000000000a001500ff650090000000000a001600ff65 *009098e5070850e707089ce5070850e6070854e6070858e6070854e7070858e707085ce7070860 *e7070864e707085ce6070860e6070868e707086ce7070870e7070874e7070878e707087ce70708 *80e7070884e7070864e6070868e6070867657443616c6c6261636b49440089f600000200180000 *008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c *56e8dda3010083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f47ce904 *0883ed0cb87c920508ebc23a206e6f2063757272656e742077696e646f77000000020018000000 *8d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56 *e869a3010083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f4ece90408 *83ed0cb87c920508ebc200000200180000008d45f43b4354720883c70c3b7b5c760cc7436c0300 *00008b43f8ffe0c747f808ee060883ec0c56e809a3010083c4108d47f8894604c70624ed06088d *55f8c702a0000708894204c745f488e7070883ed0cb8689c0508ebc200eb040800000000000000 *000000010000000000110000008d45fc3b4354730abe9ce607088b43fcffe0be1c0f0808c745fc *10eb040883ed04b8bcd50608ebe8e9d3ffffff8d7600000000002400000083c7083b7b5c7615c7 *436c02000000c74320fe000000b84ccf0608ffe0c747fc54a3050889378d77fc83c5048b4500eb *ea909090bc0f08089ce7070844eb040800000200180003008d45f03b4354720883c70c3b7b5c76 *0cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e819a2010083c4108d47f8894604c7 *0624ed06088d55f8c702a0000708894204c745f49ce70708bebc0f080883ed10b8b8a10608ebbd *9090900400020000000000110000008b7500c7450018ec0408e935fc0100900000000024000000 *83c7083b7b5c7615c7436c02000000c74320ff000000b84ccf0608ffe0c747fcb0a1050889378d *77fc83c5048b4500ebea8d76000000000024000000c74500dceb040883ec046859df0408566a01 *e8335e010083c41089c6ff6500906c0f080838ec040804000200000000001100010083c7083b7b *5c7611c7436c02000000beb4e607088b43fcffe0c747fc54ed04088b450089078d47fc894500b8 *e4ff0408ebe589f602000000150000008d45f03b435473058b43f8ffe08d45f8c700a000070889 *70048b46088945f48b46048945f083ed10b8d0180508ebdc9038ec0408000000002400010083c7 *083b7b5c760cc7436c020000008b43f8ffe0817e04ffff1000760fbe6c0f080883c50483ef088b *06ebe68b4604c747fc2497050889078d77fc83c504b8a0000708ebcd8d760038ec040801000100 *130001008d45f43b435473058b43f8ffe08d45f8c700a00007088970048b7604c745f4c4ec0408 *83ed0c8b06ebe189f638ec040816000300010000000c00010083c7183b7b5c760cc7436c060000 *008b43fcffe0c747ec88ec04088b45048947f08b45088947f4c747f818ed04088b45008947fc8d *47ec8945088d47f88945048b7604b824a60608ebc890906c0f0808a0ed04080400020000000000 *1100010083c7083b7b5c7611c7436c02000000bebce607088b43fcffe0c747fcbcee04088b4500 *89078d47fc894500b8e4ff0408ebe589f602000000150000008d45f03b435473058b43f8ffe08d *45f8c700a00007088970048b46088945f48b46048945f083ed10b8d0180508ebdc90a0ed040800 *0000002400010083c7083b7b5c760cc7436c020000008b43f8ffe0817e04ffff1000760fbe6c0f *080883c50483ef088b06ebe68b4604c747fc2497050889078d77fc83c504b8a0000708ebcd8d76 *00a0ed040801000100130001008d45f43b435473058b43f8ffe08d45f8c700a00007088970048b *7604c745f42cee040883ed0c8b06ebe189f6a0ed040816000300010000000c00010083c7183b7b *5c760cc7436c060000008b43fcffe0c747ecf0ed04088b45048947f08b45088947f4c747f880ee *04088b45008947fc8d47ec8945088d47f88945048b7604b824a60608ebc8909004000100000000 *00110000008b7500c7450084ef0408ff26eb2e89f60000000024000000be9c0f080883c504ff65 *009020ef0408000000000000000000000100000001000d0000008d45fc3b435473058b43fcffe0 *8b4604c745fc2cef040883ed0483ec0c50e81da8ffff83c4108b4500ebe0900000000024000000 *83c7083b7b5c760cc7436c020000008b43f8ffe0c747fc50ef04088b460489078d47fc894500b8 *ac9c0508ebe59090900400010000000000110000008b7500c7450030f00408ff26eb2e89f60000 *000024000000be9c0f080883c504ff650090ccef0408000000000000000000000100000001000d *0000008d45fc3b435473058b43fcffe08b4604c745fcd8ef040883ed0483ec0c50e851acffff83 *c4108b4500ebe090000000002400000083c7083b7b5c760cc7436c020000008b43f8ffe0c747fc *fcef04088b460489078d47fc894500b8ac9c0508ebe5909090a0e6070860f00408040002000000 *00001100010083c7083b7b5c7611c7436c02000000becce607088b43fcffe0c747fc28f104088b *450089078d47fc894500b864000508ebe589f602000000150000008d45f03b435473058b43f8ff *e08d45f8c700a00007088970048b46088945f48b46048945f083ed10b8d0180508ebdc9060f004 *0801000100130001008d45f43b435473058b43f8ffe08d45f8c700a00007088970048b46048945 *f483ed0cb8b4ff0408ebe28d760060f0040816000300010000000c00010083c7183b7b5c760cc7 *436c060000008b43fcffe0c747ecb0f004088b45048947f08b45088947f4c747f8ecf004088b45 *008947fc8d47ec8945088d47f88945048b7604b824a60608ebc89090a0e6070874f10408040002 *00000000001100010083c7083b7b5c7611c7436c02000000bed4e607088b43fcffe0c747fc3cf2 *04088b450089078d47fc894500b864000508ebe589f602000000150000008d45f03b435473058b *43f8ffe08d45f8c700a00007088970048b46088945f48b46048945f083ed10b8d0180508ebdc90 *74f1040801000100130001008d45f43b435473058b43f8ffe08d45f8c700a00007088970048b46 *048945f483ed0cb8b4ff0408ebe28d760074f1040816000300010000000c00010083c7183b7b5c *760cc7436c060000008b43fcffe0c747ecc4f104088b45048947f08b45088947f4c747f800f204 *088b45008947fc8d47ec8945088d47f88945048b7604b824a60608ebc890900400010000000000 *110000008b7500c7450004f30408ff26eb2e89f60000000024000000be9c0f080883c504ff6500 *90a0f20408000000000000000000000100000001000d0000008d45fc3b435473058b43fcffe08b *4604c745fcacf2040883ed0483ec0c50e82da4ffff83c4108b4500ebe090000000002400000083 *c7083b7b5c760cc7436c020000008b43f8ffe0c747fcd0f204088b460489078d47fc894500b8ac *9c0508ebe59090900400010000000000110000008b7500c74500b0f30408ff26eb2e89f6000000 *0024000000be9c0f080883c504ff6500904cf30408000000000000000000000100000001000d00 *00008d45fc3b435473058b43fcffe08b4604c745fc58f3040883ed0483ec0c50e8e1a3ffff83c4 *108b4500ebe090000000002400000083c7083b7b5c760cc7436c020000008b43f8ffe0c747fc7c *f304088b460489078d47fc894500b8ac9c0508ebe59090908ce70708f8e60708e0f30408040002 *00000000001100030083c7083b7b5c7611c7436c02000000bee4e607088b43fcffe0c747fce4f4 *04088b450089078d47fc894500b8e4000508ebe589f602000000150000008d45f03b435473058b *43f8ffe08d45f8c700a00007088970048b46088945f48b46048945f083ed10b8d0180508ebdc90 *e0f3040801000100130001008d45f43b435473058b43f8ffe08d45f8c700a00007088970048b46 *048945f483ed0cb84cff0408ebe28d7600e4f3040801000100130001008d45f43b435473058b43 *f8ffe08d45f8c700a00007088970048b46048945f483ed0cb85cf70408ebe28d7600e0f3040817 *000400010000000c00030083c7243b7b5c760cc7436c090000008b43fcffe0c747e034f404088b *45088947e48b450c8947e8c747ec70f404088b45048947f0c747f8a8f404088b45008947fc8d47 *e089450c8d47ec8945088d47f88945048b7604b850ab0608ebb590909004000100000000001100 *00008b7500c74500c0f50408ff26eb2e89f60000000024000000be9c0f080883c504ff6500905c *f50408000000000000000000000100000001000d0000008d45fc3b435473058b43fcffe08b4604 *c745fc68f5040883ed0483ec0c50e891a4ffff83c4108b4500ebe090000000002400000083c708 *3b7b5c760cc7436c020000008b43f8ffe0c747fc8cf504088b460489078d47fc894500b8ac9c05 *08ebe59090900400010000000000110000008d45fc3b4354730abef0e607088b43fcffe08b7500 *c7450064f604088b06ebf0be0000000083c504ff65009000000000240000004683c504ff650090 *8b46088945fcc7450030f6040883ed04e9afffffff8d760038f604081cf6040800000000000000 *00250000000400020000000000110000008d45f83b4354730abef4e607088b43fcffe08b7500c7 *450048f704088b06ebf0be940f080883c504ff650090010000002400000083c70c3b7b5c7615c7 *436c03000000c74320fe000000b84ccf0608ffe0c747f8649705088b45048947fc89378d77f883 *c5088b4500ebe49001000000240000008b45048945fc897504c74500a4f6040883ed04e974ffff *ff01000000240000008b46048945fcc74500e4f6040883ed04e93f9000008d76008b4608894500 *8b7604c745fc04f7040883ed04ff268d76001cf7040890f60408000000000000000025000000c8 *e7070848f704080400010000000000110001008b7500c7450074f70408ff2648f7040800000000 *240001008b460483f8047757ff24852c8a0708be00e7070883c5048b45008b40f0ffe0be04e707 *0883c5048b45008b40ecebeebe08e7070883c5048b45008b40e8ebdebe0ce7070883c5048b4500 *8b40e4ebcebe10e7070883c5048b45008b40e0ebbebec8e7070883c5048b06ebb290000000000a *0000008b4500ff60f09090000000000a0001008b4500ff60ec9090000000000a0002008b4500ff *60e89090000000000a0003008b4500ff60e49090000000000a0004008b4500ff60e089f600e707 *0804e7070808e707080ce7070810e707088ce6070844f8040800000200180001008d45f43b4354 *720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e81d95010083 *c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f4d8e7070883ed0cb8689c *0508ebc20b00020000000000110000008d45f83b4354730abe24e707088b43fcffe08b7500c745 *0008f904088b06ebf002000000240000008b45048945008b46048945048b45088945fc8b460889 *450883ed04e9040b000001000000240000008b46088945008b55048b460489450489d6c745fce0 *f8040883ed04ff269090900b00020000000000110000008d45f83b4354730abe28e707088b43fc *ffe08b7500c7450084f904088b06ebf002000000240000008b45048945008b46048945048b4508 *8945fc8b460889450883ed04e94c0b000001000000240000008b46088945008b55048b46048945 *0489d6c745fc5cf9040883ed04ff269090900b00020000000000110000008d45f83b4354730abe *2ce707088b43fcffe08b7500c7450000fa04088b06ebf002000000240000008b45048945008b46 *048945048b45088945fc8b460889450883ed04e9940b000001000000240000008b46088945008b *55048b460489450489d6c745fcd8f9040883ed04ff269090900b00020000000000110000008d45 *f83b4354730abe30e707088b43fcffe08b7500c745007cfa04088b06ebf002000000240000008b *45048945008b46048945048b45088945fc8b460889450883ed04e9dc0b00000100000024000000 *8b46088945008b55048b460489450489d6c745fc54fa040883ed04ff269090900b000200000000 *00110000008d45ec3b4354730abe34e707088b43fcffe08b7500c7450060fb04088b06ebf08b75 *0c83c514ff268b750883c50cff268b750483c50cff26d0fa0408d8fa0408d8fa04080000000002 *000000250000008b4508894500c74508f8fa0408e97608000089f68b751083c514ff260cfb0408 *f8fa0408c8fa040800000000040000002500000003000000240000008b46048945f88b450c8945 *f48b460889450089750cc745fc2cfb040883ed0ce9e006000001000000240000008b46088945fc *8975008b55048b460489450489d6c745f834fb040883ed08ff260b00020000000000110000008d *45ec3b4354730abe38e707088b43fcffe08b7500c7450044fc04088b06ebf08b751083c514ff26 *8b750483c50cff268b750883c50cff26b4fb0408bcfb0408bcfb04080000000002000000250000 *008b4508894500c74508dcfb0408e99207000089f68b750c83c514ff26f0fb0408dcfb0408acfb *040800000000040000002500000003000000240000008b46048945f88b450c8945f48b46088945 *0089750cc745fc10fc040883ed0ce9fc05000001000000240000008b46088945fc8975008b5504 *8b460489450489d6c745f818fc040883ed08ff260b00020000000000110000008d45f43b435473 *0abe3ce707088b43fcffe08b7500c7450004fd04088b06ebf0bea00f080883c50c8b4500ff60f0 *89f683c504e9d8060000bea80f080883c50c8b4500ff60e889f6a8fc0408a0fc040890fc040800 *000000020000002500000002000000240000008b46048945fc8b45088945f88b4608894508c745 *00d0fc040883ed08e93f0500008d760001000000240000008b46088945008b55048b4604894504 *89d6c745fcd8fc040883ed04ff26909090000000000a000100ff650090000000000a000600ff65 *0090000000000a000700ff650090000000000a000800ff650090000000000a000900ff65009000 *0000000a000a00ff650090000000000a000d00ff650090000000000a000e00ff65009000000000 *0a000f00ff650090000000000a001000ff650090000000000a001100ff650090000000000a0012 *00ff650090000000000a001300ff650090000000000a001400ff6500900cfe0408000000000000 *00000000010000000000110000008d45fc3b4354730abe88e707088b43fcffe0be940f0808c745 *fc1cfe040883ed04b8bcd50608ebe8e9d3ffffff8d7600000000002400000083c7083b7b5c7615 *c7436c02000000c74320fe000000b84ccf0608ffe0c747fc54a3050889378d77fc83c5048b4500 *ebea909090bc0f080804e8070850fe040800000200180003008d45f03b4354720883c70c3b7b5c *760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e80d8f010083c4108d47f8894604 *c70624ed06088d55f8c702a0000708894204c745f404e80708bebc0f080883ed10b8b8a10608eb *bd909090756e6d61727368616c5370656369616c4b65790000000200180000008d45f43b435472 *0883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e8918e010083c4 *108d47f8894604c70624ed06088d55f8c702a0000708894204c745f4c4fe040883ed0cb87c9205 *08ebc28ce7070838ff04080400010000000000110001008b7500c7450064ff0408ff2638ff0408 *00000000240001008b460485c0740783f8017412eb20bec8e5070883c5048b45008b40f0ffe0be *cce5070883c5048b45008b40ecebeebe8ce7070883c5048b06ebe29090a0e60708a0ff04080400 *010000000000110001008b7500c74500ccff0408ff26a0ff040800000000240001008b46048945 *00e9690a0000900400020000000000110000008b7500c7450038000508e915e801009000000000 *2400000083c7083b7b5c7615c7436c02000000c74320ff000000b84ccf0608ffe0c747fcb0a105 *0889378d77fc83c5048b4500ebea8d76000000000024000000c74500fcff040883ec046836e004 *08566a01e8134a010083c41089c6ff6500900400020000000000110000008b7500c74500b80005 *08e995e7010090000000002400000083c7083b7b5c7615c7436c02000000c74320ff000000b84c *cf0608ffe0c747fcb0a1050889378d77fc83c5048b4500ebea8d76000000000024000000c74500 *7c00050883ec0468d1e00408566a01e89349010083c41089c6ff65009004000200000000001100 *00008b7500c7450038010508e915e7010090000000002400000083c7083b7b5c7615c7436c0200 *0000c74320ff000000b84ccf0608ffe0c747fcb0a1050889378d77fc83c5048b4500ebea8d7600 *0000000024000000c74500fc00050883ec046862e10408566a01e81349010083c41089c6ff6500 *90bc0f080870e807085801050800000200180003008d45f03b4354720883c70c3b7b5c760cc743 *6c030000008b43f8ffe0c747f808ee060883ec0c56e8058c010083c4108d47f8894604c70624ed *06088d55f8c702a0000708894204c745f470e80708bebc0f080883ed10b8b8a10608ebbd909090 *8ce607081402050800000000cc0105080000010000000000110001008d45f83b4354730abed8e7 *07088b43fcffe0c745f884e80708c745fc2402050883ed08b8d80c0508ebe689f6e9cfffffff8d *76000000000024000000897500e9e49900000b00020000000000110000008d45f83b4354730abe *e0e707088b43fcffe08b7500c745fc7403050883ed048b06ebed90bea40f080883c5088b4500ff *60ec89f6bea40f080883c5088b4500ff60ec89f68b45048945008b4604894504e9fb9b00008d76 *007c0205086c0205080000000001000000250000008b55048b460489450489d6c74500a4020508 *ff26a40205085c020508000000000100000025000000230000002400000039750474253975047c *10bea80f080883c5108b45008b40e8ffe0bea00f080883c5108b45008b40f0ebee8b7508c74508 *cc02050883c5088b06ebdd90be00000000ebbd90be01000000ebb5901803050810030508000000 *00230000002500000002000000240000008975008b7508c745fc3403050883ed04ff2689f6be00 *000000ebe590be01000000ebdd9058030508500305080000000002000000250000000b00020000 *000000110000008b7500c74500e0030508ff2621000000240000008b068b40fcc1e81039450474 *253945047c10bea80f080883c5088b45008b40e8ffe0bea00f080883c5088b45008b40f0ebeebe *a40f080883c5088b45008b40ecebde89f601000000240000008b068b40fcc1e8108b7504894504 *c7450094030508ff26901700040000000000110000008d45f83b4354730abee8e707088b43fcff *e08b45088945fc8b45008945f8c74500bc04050883ed08b838020508ebe190be980f080883c510 *8b4500ff60ec89f6be980f080883c5048b4500ff60ec89f6be900f080883c5048b4500ff60f089 *f65404050854040508440405080000000000000000250000008b450c894508c7450c7c04050883 *c504e9effeffff8d7600be900f080883c5108b4500ff60f089f6940405087c0405083404050800 *00000043000000250000001700040000000000110000008d45f83b4354730abeece707088b43fc *ffe08b45088945fc8b45008945f8c745008005050883ed08b838020508ebe190be900f080883c5 *108b4500ff60f089f6be900f080883c5048b4500ff60f089f6be980f080883c5048b4500ff60ec *89f61805050818050508080505080000000000000000250000008b450c894508c7450c40050508 *83c504e92bfeffff8d7600be980f080883c5108b4500ff60ec89f65805050840050508f8040508 *0000000043000000250000001700040000000000110000008d45f83b4354730abef0e707088b43 *fcffe08b45088945fc8b45008945f8c745004406050883ed08b838020508ebe190be900f080883 *c5108b4500ff60f089f6be980f080883c5048b4500ff60ec89f6be900f080883c5048b4500ff60 *f089f6cc050508dc050508dc0505080000000000000000250000008b450c894508c7450c040605 *0883c504e967fdffff8d7600be980f080883c5108b4500ff60ec89f61c06050804060508bc0505 *080000000043000000250000001700040000000000110000008d45f83b4354730abef4e707088b *43fcffe08b45088945fc8b45008945f8c745000807050883ed08b838020508ebe190be980f0808 *83c5108b4500ff60ec89f6be900f080883c5048b4500ff60f089f6be980f080883c5048b4500ff *60ec89f690060508a0060508a00605080000000000000000250000008b450c894508c7450cc806 *050883c504e9a3fcffff8d7600be900f080883c5108b4500ff60f089f6e0060508c80605088006 *05080000000043000000250000000b00020000000000110000008d45f83b4354730abef8e70708 *8b43fcffe08b7500c74500640705088b06ebf002000000240000008b45048945008b4604894504 *8b45088945fc8b460889450883ed04e9b000000001000000240000008b46088945008b55048b46 *0489450489d6c745fc3c07050883ed04ff269090900b00020000000000110000008d45f83b4354 *730abefce707088b43fcffe08b7500c74500e00705088b06ebf002000000240000008b45048945 *008b46048945048b45088945fc8b460889450883ed04e90006000001000000240000008b460889 *45008b55048b460489450489d6c745fcb807050883ed04ff269090901700040000000000110000 *008b7500c74500b8090508ff2621000000240000008b068b40fcc1e8103945047510be900f0808 *83c5088b45008b40f0ffe0be980f080883c5088b45008b40ecebee8d760001000000240000008b *068b40fcc1e8108b7504894504c7450020080508ff26908b7504c745085808050883c508ff2690 *be980f080883c5108b4500ff60ec89f680080508700805080000000043000000250000008b7508 *c74500a4080508ff26be980f080883c5108b4500ff60ec89f621000000240000008b068b40fcc1 *e8103945047510be900f080883c5088b45008b40f0ffe0be980f080883c5088b45008b40ecebee *8d760001000000240000008b068b40fcc1e8108b7504894504c74500c8080508ff269043000000 *240000008b45083b460475118b7504c745080009050883c5088b06ffe0be980f080883c5108b45 *008b40ecebee8d760003000000240000008b55088b460489450889d6c7450020090508ff268b55 *088b460489450889d6c7450054090508ff2668090508b00805080000000003000000250000008b *55088b460489450889d6c7450090090508ff2690090508a4080508000000000300000025000000 *756e6d61727368616c4b657953746174650089f600000200180000008d45f43b4354720883c70c *3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e89d83010083c4108d47f8 *894604c70624ed06088d55f8c702a0000708894204c745f4b809050883ed0cb87c920508ebc2a0 *e607082c0a05080300010000000000110001008b450083f86c0f87a9000000ff2485408a0708be *1ce8070883c5048b4500ffe0be20e80708ebf1be24e80708ebeabe28e80708ebe3be2ce80708eb *dcbe30e80708ebd5be34e80708ebcebe38e80708ebc7be3ce80708ebc0be40e80708ebb9be44e8 *0708ebb2be48e80708ebabbe4ce80708eba4be50e80708eb9dbe54e80708eb96be58e80708eb8f *be5ce80708eb88be60e80708eb81be64e80708e977ffffffbe68e80708e96dffffffbe6ce80708 *e963ffffffbea0e6070883c5048b06e95affffff000000000a000000ff650090000000000a0001 *00ff650090000000000a000200ff650090000000000a000300ff650090000000000a000400ff65 *0090000000000a000500ff650090000000000a000600ff650090000000000a000700ff65009000 *0000000a000800ff650090000000000a000900ff650090000000000a000a00ff65009000000000 *0a000b00ff650090000000000a000c00ff650090000000000a000d00ff650090000000000a000e *00ff650090000000000a000f00ff650090000000000a001000ff650090000000000a001100ff65 *0090000000000a001200ff650090000000000a001300ff650090000000000a001400ff6500901c *e8070820e8070824e8070828e807082ce8070830e8070834e8070838e807083ce8070840e80708 *44e8070848e807084ce8070850e8070854e8070858e807085ce8070860e8070864e8070868e807 *086ce80708756e6d61727368616c4d6f757365427574746f6e008d760000000200180000008d45 *f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e8fd *80010083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f4540c050883ed *0cb87c920508ebc20400020000000000110000008b7500c745002c0d0508e921db010090000000 *002400000083c7083b7b5c7615c7436c02000000c74320ff000000b84ccf0608ffe0c747fcb0a1 *050889378d77fc83c5048b4500ebea8d76000000000024000000c74500f00c050883ec0468d00e *0508566a01e81f3d010083c41089c6ff6500908ce607084c0d0508040002000000000011000100 *8d45f83b4354730abe84e807088b43fcffe0be8ce60708c74500ac0d05088b06ebee89f6010000 *00240000008b4504c74004940f0808be9c0f080883c508ff65008d760000000000240000008b46 *048b40048945f88b4604894500c745fc8c0d050883ed08e9760100009090170004000000000011 *0000008b7500c74500d00e0508ff268b450489450883c508e9e601000089f6be900f080883c510 *8b4500ff60f089f6f40d0508e40d05080000000043000000250000008b7508c74500180e0508ff *26be900f080883c5108b4500ff60f089f643000000240000008b45083b460475108b4504894508 *83c508b8d80f0508ffe0be900f080883c5108b45008b40f0ebee03000000240000008b55088b46 *0489450889d6c745003c0e0508ff268b55088b460489450889d6c745006c0e0508ff26800e0508 *240e05080000000003000000250000008b55088b460489450889d6c74500a80e0508ff26a80e05 *08180e05080000000003000000250000005589e55383ec04e8574301008b4508c1e0048b15a02b *08088b1c0283ec0cff7510e88e3d010083c4085053e84d3f010083c408506840100808e83f3f01 *0083c4088d55f85250e8bf40010083c4085068f48b0708e8b2420100e8064301008b5dfcc9c390 *0400020000000000110000008d45fc3b4354730abe90e807088b43fcffe08b7500c74500cc0f05 *088b06ebf0be9c0f080883c504ff650090010000002400000083c504e9c4ffffff010000002400 *00008b4604c74500740f050883ec0c50e85d3b010083c410ff65008d76008b46088945008b7604 *c745fc840f050883ed04ff268d7600a00f0508600f05080000000000000000250000000b000200 *00000000110000008b7500c7450024100508ff2621000000240000008b068b40fcc1e810394504 *0f94c025ff0000008944240883c5088b3485149705088b542408c1e2028b450029d0ff60f00100 *0000240000008b068b40fcc1e8108b7504894504c74500ec0f0508ff2690b844100508ffe09083 *3da0270808007528c705a027080801000000c745008410050883c504c74500603f050883c504c7 *450014ad050883c50483ed04ff650090b884100508ffe090833da4270808000f854a010000c705 *a427080801000000c74500d437050883c504c74500bc36050883c504c745008437050883c504c7 *45005025050883c504c74500641f050883c504c74500601c050883c504c74500d41e050883c504 *c74500fc36050883c504c74500401d050883c504c745008435050883c504c745009c24050883c5 *04c745009829050883c504c745006420050883c504c745005417050883c504c745003438050883 *c504c745004c15050883c504c74500882a050883c504c74500bc30050883c504c74500f8280508 *83c504c745001030050883c504c74500ec11050883c504c74500a017050883c504c74500fc3405 *0883c504c74500c416050883c504c74500841b050883c504c745001436050883c504c74500a015 *050883c504c74500843d050883c504c74500c03e050883c504c745009812050883c504c7450040 *12050883c504c7450014ad050883c50483ed04ff6500909090b8ec110508ffe090833da8270808 *00753cc705a827080801000000c745009434050883c504c745008437050883c504c74500401205 *0883c504c745005c16050883c504c7450014ad050883c50483ed04ff650090b840120508ffe090 *833dac270808007528c705ac27080801000000c745007881050883c504c74500f484050883c504 *c7450014ad050883c50483ed04ff650090000000000a0001008b4500ff60ec89f640e9070898e8 *0708b898120508ffe090833db027080800755ac705b027080801000000c745009434050883c504 *c745008437050883c504c745000032050883c504c74500501e050883c504c74500101e050883c5 *04c74500001d050883c504c745004012050883c504c7450014ad050883c50483ed04ff65009090 *9004000100000000001100000083c7143b7b5c7611c7436c05000000be9ce807088b43fcffe0c7 *47f0e81305088b45008947f4c747fc101505088d47f089078d77fc83c5048b4500ebda8d7600eb *2e89f60000000024000000be9c0f080883c504ff65009050130508000000000000000000000100 *000001000d0000008d45fc3b435473058b43fcffe08b4604c745fc5c13050883ed0483ec0c50e8 *cd85ffff83c4108b4500ebe090000000002400000083c7083b7b5c760ec7436c02000000b838c9 *0608ffe0c747fc8013050889378d77fc83c504b8a0000708ebe801000100130000008d45f03b43 *5473058b43f8ffe08d45f8c700a00007088970048b46048945f0c745f4b413050883ed10b87431 *0508ebdbe9bf0000008d7600eb1a89f620140508000000000000000000000100010000000c0000 *008b7604e964ae010001000000240000008b750483c508ff65008d760000000000240000008975 *00c745fc4c14050883ed04e8fe88ffffff65008d7600010000002400000083c7083b7b5c7615c7 *436c02000000c74320fe000000b84ccf0608ffe0c747fc3c1405088b45048907c7430444e90708 *8d77fcc745046014050883c504b8a4c40608ebd718140508000000000000000000000100020000 *000e0000008d45f43b435473058b43fcffe08b46088945fc8b7604c745f88014050883ed0cb8e8 *970608ebe49004000200010000000c00000083c70c3b7b5c760cc7436c030000008b43fcffe0c7 *47f8dc1405088b46048947fc8b450089078d77f883c504b828c20608ebdf90b84c150508ffe090 *833db427080800753cc705b427080801000000c74500841b050883c504c74500c03e050883c504 *c745004012050883c504c745005490050883c504c7450014ad050883c50483ed04ff650090b8a0 *150508ffe090833db8270808000f85a0000000c705b827080801000000c74500843d050883c504 *c745001440050883c504c745008437050883c504c745009434050883c504c745005829050883c5 *04c745002425050883c504c74500501e050883c504c74500101e050883c504c745004012050883 *c504c74500e090050883c504c745005490050883c504c74500f08b050883c504c74500dc890508 *83c504c74500bc79050883c504c7450014ad050883c50483ed04ff650090b85c160508ffe09083 *3dbc270808007550c705bc27080801000000c745008437050883c504c745001440050883c504c7 *45009434050883c504c745002425050883c504c745004012050883c504c74500bc79050883c504 *c7450014ad050883c50483ed04ff650090b8c4160508ffe090833dc0270808007578c705c02708 *0801000000c745008437050883c504c745001440050883c504c745009434050883c504c7450058 *29050883c504c74500841b050883c504c745005c16050883c504c745004012050883c504c74500 *5490050883c504c74500908e050883c504c74500dc89050883c504c7450014ad050883c50483ed *04ff650090b854170508ffe090833dc4270808007532c705c427080801000000c7450040120508 *83c504c745008437050883c504c745005c16050883c504c7450014ad050883c50483ed04ff6500 *909090b8a0170508ffe090833dc8270808000f85a0000000c705c827080801000000c74500c03e *050883c504c745001440050883c504c745008437050883c504c745009434050883c504c7450058 *29050883c504c745009c1e050883c504c745004012050883c504c745005c16050883c504c74500 *e090050883c504c745005490050883c504c74500908e050883c504c74500f08b050883c504c745 *00dc89050883c504c74500bc79050883c504c7450014ad050883c50483ed04ff6500900b000200 *00000000110000008b7500c74500b0180508ff26210000002400000083c70c3b7b5c760cc7436c *030000008b43f8ffe0c747f86c1905088b45048947fc8b460489078d77f883c5088b4500ebe18d *760001000000240000008b55048b460489450489d6c7450074180508ff260b0002000000000011 *0000008b7500c7450020190508ff26210000002400000083c70c3b7b5c760cc7436c030000008b *43f8ffe0c747f8841905088b45048947fc8b460489078d77f883c5088b4500ebe18d7600010000 *00240000008b55048b460489450489d6c74500e4180508ff2601000000020000008b4500ff60f0 *89f601000000090000008b4500ff60f09090000000000a0001008b4500ff60ec90900000020006 *000000ff650090000002000a000000ff6500900000020006000000ff650090000002000a000000 *ff65009038e90708941905080400020000000000110001008b7500c745007c1b0508ff26000000 *0024000000be9c0f080883c504ff6500900000000024000000be9c0f080883c504ff6500900000 *000024000000be9c0f080883c504ff6500900000000024000000be9c0f080883c504ff65009094 *19050800000000240001008b460483f801742e83f8017f0685c07409eb4583f81f742feb3ec745 *00d019050883ec0c6800170000e8f27effff83c4108b4500ffe0c74500e419050883ec0c680a85 *0000ebe2c74500f819050883ec0c6841870000ebd183f81e7e0ec7450028e90708b880400508eb *c90522870000c74500bc19050883ec0c50ebac8d76008b7604c74500101a0508ff260000000024 *000000be9c0f080883c504ff650090c74500a41a050883ec0c6801170000e86c7effff83c410ff *650089f60000000024000000be9c0f080883c504ff650090c74500d41a050883ec0c6802170000 *e83c7effff83c410ff650089f60000000024000000be9c0f080883c504ff650090c74500041b05 *0883ec0c6800180000e80c7effff83c410ff650089f60000000024000000be9c0f080883c504ff *650090c74500341b050883ec0c6840880000e8dc7dffff83c410ff650089f6401b0508101b0508 *e01a0508b01a0508901a0508941905080000000025000100b8841b0508ffe090833dcc27080800 *0f85be000000c705cc27080801000000c74500c03e050883c504c745001440050883c504c74500 *4c3d050883c504c745008437050883c504c745009434050883c504c745005829050883c504c745 *00501e050883c504c74500101e050883c504c745004012050883c504c745005c16050883c504c7 *4500e090050883c504c745005490050883c504c74500908e050883c504c74500f08b050883c504 *c74500dc89050883c504c745007489050883c504c74500bc79050883c504c7450014ad050883c5 *0483ed04ff6500909090b8601c0508ffe090833dd0270808000f8582000000c705d02708080100 *0000c745008437050883c504c745001440050883c504c745009434050883c504c7450024250508 *83c504c74500101e050883c504c74500843d050883c504c745002c4d050883c504c74500a01505 *0883c504c745004012050883c504c745005490050883c504c74500bc79050883c504c7450014ad *050883c50483ed04ff6500909090b8001d0508ffe090833dd4270808007528c705d42708080100 *0000c745004012050883c504c745002425050883c504c7450014ad050883c50483ed04ff650090 *b8401d0508ffe090833dd8270808000f85b4000000c705d827080801000000c74500843d050883 *c504c74500c03e050883c504c745008437050883c504c745009434050883c504c74500bc300508 *83c504c745008430050883c504c745005829050883c504c745004012050883c504c745005c1605 *0883c504c74500e090050883c504c745005490050883c504c74500f08b050883c504c74500dc89 *050883c504c745007489050883c504c745005883050883c504c74500bc79050883c504c7450014 *ad050883c50483ed04ff650090b8101e0508ffe090833ddc270808007528c705dc270808010000 *00c745003479050883c504c745002481050883c504c7450014ad050883c50483ed04ff650090b8 *501e0508ffe090833de0270808007532c705e027080801000000c745005490050883c504c74500 *fcb1050883c504c74500cc86050883c504c7450014ad050883c50483ed04ff6500909090b89c1e *0508ffe090833de427080800751ec705e427080801000000c7450014ad050883c504c745004012 *050883c50483ed04ff6500909090b8d41e0508ffe090833de8270808007578c705e82708080100 *0000c745008437050883c504c74500c03e050883c504c74500fc36050883c504c7450068360508 *83c504c74500b828050883c504c745004012050883c504c74500e090050883c504c74500549005 *0883c504c74500f08b050883c504c74500bc79050883c504c7450014ad050883c50483ed04ff65 *0090b8641f0508ffe090833dec270808007514c705ec27080801000000c7450014ad050883c504 *83ed04ff65009048e90708881f050800000200180001008d45f03b4354720883c70c3b7b5c760c *c7436c030000008b43f8ffe0c747f808ee060883ec0c56e8d96d010083c4108d47f8894604c706 *24ed06088d55f8c702a0000708894204c745f050e90708c745f40020050883ed10b8bc460508eb *bb90000000002400000083c70c3b7b5c7615c7436c03000000c74320fe000001b84ccf0608ffe0 *c747f8bc3705088977fc8b450089078d77f883c508b8a0000708ebe29090900100000002000100 *8b4500ff60ec89f601000000090001008b4500ff60ec9090b864200508ffe090833df027080800 *755ac705f027080801000000c745008437050883c504c74500c03e050883c504c7450094340508 *83c504c745004012050883c504c745005c16050883c504c745005490050883c504c74500908e05 *0883c504c7450014ad050883c50483ed04ff65009090900400020000000000110000008d45f83b *4354730abec4e807088b43fcffe08b7500c745002c2305088b06ebf00000000024000000be9c0f *080883c504ff65009000000000240000008b4604894424048b44240489442408c7450004210508 *8b4424088944240483ec08ff74240c68640b0000e80976ffff83c410ff65008d76004200000024 *0000008b7504c745081821050883c508ff269042000000240000008b4604894424048b44240489 *442408c74500582105088b4424088944240483ec08ff74240c68630b0000e8b175ffff83c410ff *65008d760002000000240000008b7508c7450070210508ff268b46048945008b46088945fcc745 *f8b021050883ed0883ec08680126000068650b0000e85c79ffff83c410ff650089f60000000024 *000000be9c0f080883c504ff65009000000000240000008b4604894424048b44240489442408c7 *4500f42105088b4424088944240483ec08ff74240c68620b0000e81975ffff83c410ff65008d76 *0001000000240000008b7504c745040822050883c504ff26908b4604894500c745fc4822050883 *ed0483ec08680008000068650b0000e8c678ffff83c410ff65000000000024000000be9c0f0808 *83c504ff65009000000000240000008b4604894424048b44240489442408c74500882205088b44 *24088944240483ec08ff74240c68620b0000e88574ffff83c410ff65008d760001000000240000 *008b7504c745049c22050883c504ff26908b4604894500c745fcdc22050883ed0483ec08680108 *000068650b0000e83278ffff83c410ff6500ec22050858220508bc210508000000000000000025 *0000000400020000000000110000008d45f03b4354730abec8e807088b43fcffe0be10000000c7 *45fc8024050883ed04b8e4d40608ebe80100000024000000be9c0f080883c508ff650090220000 *00240000008b55048b4604894424048b442404894424088b44240889420c8b4504c74504682305 *0883c50483ec085068660b0000e88073ffff83c410ff650089f6c4000000240000008b550c8b46 *04894424048b442404894424088b4424088942088b7504c745087c23050883c508ff2684000000 *240000008b550c8b4604894424048b442404894424088b4424088942048b7508c74500c0230508 *ff268d760004000000240000008b551083c2088b4604894424048b442404894424088b44240889 *028b750c89550cc74500f0230508ff2689f601000000240000008b46108945f88b460c8945fc8b *46088945008b7604c745f42024050883ed0cff268d7600010000002400000089f08b7504894504 *c7450054240508ff26909090b89c240508ffe090833df427080800756ec705f427080801000000 *c74500c03e050883c504c745001440050883c504c745008437050883c504c745009434050883c5 *04c745002425050883c504c745004012050883c504c745005c16050883c504c745007846050883 *c504c74500bc79050883c504c7450014ad050883c50483ed04ff6500909090b824250508ffe090 *833df8270808007514c705f827080801000000c7450014ad050883c50483ed04ff650090b85025 *0508ffe090833dfc270808007532c705fc27080801000000c745009434050883c504c745008437 *050883c504c745004012050883c504c7450014ad050883c50483ed04ff6500909090ece807089c *e907089425050804000100000000001100030083c71c3b7b5c7611c7436c07000000bed4e80708 *8b43fcffe0c747e8682605088b45008947ecc747f47c2705088d47e88947f8c747fc542805088b *450089078d47f48945008d77fc8b4504ebca8d760000000000240000008b06668b40fe25ffff00 *0083f8077745ff2485288c0708be5ce9070883c504e9dc840000be64e90708ebf1be6ce90708eb *eabe74e90708ebe3be7ce90708ebdcbe84e90708ebd5be8ce90708ebcebe94e90708ebc7be54e9 *0708ebc001000100130000008d45f43b435473058b43f8ffe08d45f8c700a00007088970048b76 *04c745f40426050883ed0c8b06ebe189f60000000024000000be9c0f080883c504ff6500908b45 *04c745049c26050883c50483ec08680011000050e87d70ffff83c410ff65008d76000000000024 *000000be9c0f080883c504ff6500908b4504c74504d426050883c50483ec08680111000050e845 *70ffff83c410ff65008d76000000000024000000be9c0f080883c504ff6500908b4504c745040c *27050883c50483ec08680211000050e80d70ffff83c410ff65008d760018270508e0260508a826 *050800000000210000002500000001000000240000008b55048b460489450489d6c74500542705 *08ff2604000200010000000c0000008d45fc3b435473058b43fcffe08b7604c745fc5c27050883 *ed048b06ebed89f6e9b30000008d760000000000240000008b06668b40fe25ffff000083f80777 *45ff2485488c0708be10e9070883c504e9d0d80100be0ce90708ebf1be08e90708ebeabe04e907 *08ebe3be00e90708ebdcbefce80708ebd5bef8e80708ebcebef4e80708ebc7be14e90708ebc001 *000100130000008d45f43b435473058b43f8ffe08d45f8c700a00007088970048b7604c745f4ac *27050883ed0c8b06ebe189f69c270508000000009425050800000100010000000c0003008d45f8 *3b4354720883c70c3b7b5c760cc7436c030000008b43fcffe0c747f8102805088b46048947fc8d *47f88945fcc745f89ce9070883ed08b844320508ebda000000000a0000008b4500ff60f0909000 *0000000a000400ff650090b8b8280508ffe090833d00280808007528c7050028080801000000c7 *45005490050883c504c74500e090050883c504c7450014ad050883c50483ed04ff650090b8f828 *0508ffe090833d04280808007546c7050428080801000000c745009434050883c504c745008437 *050883c504c745004012050883c504c745005c16050883c504c74500bc79050883c504c7450014 *ad050883c50483ed04ff6500909090b858290508ffe090833d08280808007528c7050828080801 *000000c745005490050883c504c74500e090050883c504c7450014ad050883c50483ed04ff6500 *90b898290508ffe090833d0c280808000f85d2000000c7050c28080801000000c7450084370508 *83c504c74500c03e050883c504c745009434050883c504c745005829050883c504c74500242505 *0883c504c74500a017050883c504c745009c1e050883c504c74500501e050883c504c74500101e *050883c504c74500841b050883c504c74500f44c050883c504c745004046050883c504c7450040 *12050883c504c745005c16050883c504c74500a015050883c504c745005490050883c504c74500 *f08b050883c504c74500dc89050883c504c74500bc79050883c504c7450014ad050883c50483ed *04ff6500909090b8882a0508ffe090833d10280808007564c7051028080801000000c74500302d *050883c504c74500142f050883c504c745007c2c050883c504c74500c02b050883c504c7450004 *2b050883c504c74500d02d050883c504c74500b42e050883c504c74500602e050883c504c74500 *14ad050883c50483ed04ff650090b8042b0508ffe090833d14280808000f85a0000000c7051428 *080801000000c74500c03e050883c504c745001440050883c504c745008437050883c504c74500 *f43a050883c504c74500c44e050883c504c745005829050883c504c74500501e050883c504c745 *00841b050883c504c745004012050883c504c745005c16050883c504c74500e090050883c504c7 *45005490050883c504c74500908e050883c504c74500dc89050883c504c7450014ad050883c504 *83ed04ff650090b8c02b0508ffe090833d18280808000f85a0000000c7051828080801000000c7 *4500c03e050883c504c745001440050883c504c745008437050883c504c74500f43a050883c504 *c74500c44e050883c504c745005829050883c504c74500501e050883c504c74500841b050883c5 *04c745004012050883c504c745005c16050883c504c74500e090050883c504c745005490050883 *c504c74500908e050883c504c74500dc89050883c504c7450014ad050883c50483ed04ff650090 *b87c2c0508ffe090833d1c280808000f8596000000c7051c28080801000000c745008437050883 *c504c74500c03e050883c504c74500902f050883c504c74500d02f050883c504c74500042b0508 *83c504c74500f43a050883c504c74500c44e050883c504c745005829050883c504c74500501e05 *0883c504c745004012050883c504c745005c16050883c504c745005490050883c504c74500dc89 *050883c504c7450014ad050883c50483ed04ff6500909090b8302d0508ffe090833d2028080800 *0f8582000000c7052028080801000000c74500d02f050883c504c745008437050883c504c74500 *902f050883c504c74500f43a050883c504c74500c44e050883c504c745005829050883c504c745 *00501e050883c504c745004012050883c504c745005c16050883c504c745005490050883c504c7 *4500dc89050883c504c7450014ad050883c50483ed04ff6500909090b8d02d0508ffe090833d24 *280808007578c7052428080801000000c745008437050883c504c74500c03e050883c504c74500 *9434050883c504c745004012050883c504c74500e090050883c504c745005490050883c504c745 *00f08b050883c504c745007489050883c504c74500f484050883c504c745005883050883c504c7 *450014ad050883c50483ed04ff650090b8602e0508ffe090833d2828080800753cc70528280808 *01000000c745009434050883c504c745008437050883c504c745002425050883c504c745004012 *050883c504c7450014ad050883c50483ed04ff650090b8b42e0508ffe090833d2c280808007546 *c7052c28080801000000c745008437050883c504c74500c03e050883c504c745009434050883c5 *04c745004012050883c504c745005c16050883c504c7450014ad050883c50483ed04ff65009090 *90b8142f0508ffe090833d30280808007564c7053028080801000000c745009434050883c504c7 *45008437050883c504c74500184f050883c504c74500c44e050883c504c74500841b050883c504 *c745004012050883c504c745005490050883c504c74500bc79050883c504c7450014ad050883c5 *0483ed04ff650090b8902f0508ffe090833d34280808007528c7053428080801000000c7450040 *12050883c504c745002425050883c504c7450014ad050883c50483ed04ff650090b8d02f0508ff *e090833d38280808007528c7053828080801000000c745004012050883c504c745002425050883 *c504c7450014ad050883c50483ed04ff650090b810300508ffe090833d3c28080800755ac7053c *28080801000000c74500504f050883c504c745008437050883c504c745009434050883c504c745 *004012050883c504c745005c16050883c504c74500f08b050883c504c74500bc79050883c504c7 *450014ad050883c50483ed04ff6500909090b884300508ffe090833d4028080800751ec7054028 *080801000000c7450014ad050883c504c745004012050883c50483ed04ff6500909090b8bc3005 *08ffe090833d44280808000f8596000000c7054428080801000000c74500bc36050883c504c745 *008437050883c504c745009434050883c504c745008430050883c504c74500882a050883c504c7 *4500a017050883c504c745009c1e050883c504c745004012050883c504c745005c16050883c504 *c745005490050883c504c74500f08b050883c504c745007489050883c504c74500bc79050883c5 *04c7450014ad050883c50483ed04ff65009090900400010000000000110000008b7500c7450088 *310508ff2600000000240000008b06668b40fe25ffff000083f808774cff2485688c0708be0800 *000083c5048b4500ffe0be07000000ebf1be06000000ebeabe05000000ebe3be04000000ebdcbe *03000000ebd5be02000000ebcebe01000000ebc7be00000000ebc0be09000000ebb99000000000 *0a000400ff650090b800320508ffe090833d4828080800751ec7054828080801000000c7450014 *ad050883c504c745004012050883c50483ed04ff650090909038e90708303205080b0003000000 *0000110001008d45f43b4354730abeece807088b43fcffe0be04000000c745fc0034050883ed04 *b8e4d40608ebe801000100160000008d45f03b4354720883c7083b7b5c760cc7436c020000008b *43f8ffe08d45f8c700a0000708897004c747fc309f05088b460889078d47fc8945f48b760483ed *10b8b8a10608ebd390230000002400000083c70c3b7b5c7615c7436c03000000c74320fe000000 *b84ccf0608ffe08b45048b10c747f8743205088b45088947fc89178d77f883c5108b4500ebdfc7 *45fc30e90708c74500c432050883ed04e96a0d000089f601000100160000008d45f03b43547208 *83c7083b7b5c760cc7436c020000008b43f8ffe08d45f8c700a0000708897004c747fc309f0508 *8b460889078d47fc8945f48b760483ed10b8b8a10608ebd390230000002400000083c70c3b7b5c *7615c7436c03000000c74320ff000000b84ccf0608ffe08b45048b10c747f8203305088b450889 *47fc89178d77f883c5108b4500ebdf23000000240000008b56048b4504c745007033050883ec08 *5052e8c566ffff83c410ff65008d76008b7604c74500b4330508ff26d433050800330508303205 *0823000000250001003032050802000000240001008d56088b45088945f8895500897508c745fc *f433050883ed08e9da1b00009090000000000a006b00ff650090000000000a006c00ff65009000 *0000000a006d00ff650090000000000a006e00ff650090000000000a006f00ff65009000000000 *0a007000ff650090000000000a007100ff650090000000000a007101ff650090000000000a0072 *01ff650090b894340508ffe090833d4c280808007550c7054c28080801000000c7450058290508 *83c504c745001440050883c504c745004012050883c504c745005490050883c504c74500f08b05 *0883c504c74500dc89050883c504c7450014ad050883c50483ed04ff650090b8fc340508ffe090 *833d5028080800756ec7055028080801000000c745008437050883c504c74500c03e050883c504 *c745009434050883c504c74500501e050883c504c745005c16050883c504c745002425050883c5 *04c745004012050883c504c745005490050883c504c745007881050883c504c7450014ad050883 *c50483ed04ff6500909090b884350508ffe090833d54280808007578c7055428080801000000c7 *45008437050883c504c745001440050883c504c745009434050883c504c74500882a050883c504 *c74500c44e050883c504c74500841b050883c504c745009c24050883c504c745007846050883c5 *04c745004012050883c504c745005490050883c504c7450014ad050883c50483ed04ff650090b8 *14360508ffe090833d5828080800753cc7055828080801000000c745004012050883c504c74500 *c03e050883c504c745005490050883c504c745007881050883c504c7450014ad050883c50483ed *04ff650090b868360508ffe090833d5c28080800753cc7055c28080801000000c7450094340508 *83c504c745008437050883c504c74500101e050883c504c745004012050883c504c7450014ad05 *0883c50483ed04ff650090b8bc360508ffe090833d60280808007528c7056028080801000000c7 *45004012050883c504c74500101e050883c504c7450014ad050883c50483ed04ff650090b8fc36 *0508ffe090833d6428080800756ec7056428080801000000c745006836050883c504c745008437 *050883c504c745009434050883c504c74500b828050883c504c74500101e050883c504c7450040 *12050883c504c745005490050883c504c74500f08b050883c504c74500bc79050883c504c74500 *14ad050883c50483ed04ff6500909090b884370508ffe090833d6828080800751ec70568280808 *01000000c7450014ad050883c504c745002481050883c50483ed04ff6500909090020000000400 *0000ff6500900200000009000000ff650090b8d4370508ffe090833d6c280808007546c7056c28 *080801000000c745004012050883c504c745008437050883c504c745005490050883c504c74500 *cc86050883c504c74500bc79050883c504c7450014ad050883c50483ed04ff6500909090b83438 *0508ffe090833d70280808007550c7057028080801000000c745009c38050883c504c745002c3b *050883c504c74500f038050883c504c74500a439050883c504c745004c3a050883c504c74500d4 *3b050883c504c7450014ad050883c50483ed04ff650090b89c380508ffe090833d742808080075 *3cc7057428080801000000c745008437050883c504c74500d43b050883c504c745005c16050883 *c504c745004012050883c504c7450014ad050883c50483ed04ff650090b8f0380508ffe090833d *78280808000f8596000000c7057828080801000000c745004c3d050883c504c74500c03e050883 *c504c745004c3a050883c504c745008437050883c504c745009829050883c504c7450058290508 *83c504c745004046050883c504c745004012050883c504c74500908e050883c504c74500e09005 *0883c504c745005490050883c504c74500dc89050883c504c74500bc79050883c504c7450014ad *050883c50483ed04ff6500909090b8a4390508ffe090833d7c280808000f858c000000c7057c28 *080801000000c74500d43b050883c504c745000c3d050883c504c745007c3c050883c504c74500 *8437050883c504c745009434050883c504c745002425050883c504c74500a015050883c504c745 *004012050883c504c745005490050883c504c74500f08b050883c504c745005883050883c504c7 *4500bc79050883c504c7450014ad050883c50483ed04ff650090b84c3a0508ffe090833d802808 *08000f858c000000c7058028080801000000c74500c03e050883c504c745001440050883c504c7 *4500f43a050883c504c745007c3c050883c504c74500d43b050883c504c745008437050883c504 *c745009434050883c504c745009829050883c504c74500841b050883c504c74500f44c050883c5 *04c745005c16050883c504c745004012050883c504c7450014ad050883c50483ed04ff650090b8 *f43a0508ffe090833d8428080800751ec7058428080801000000c7450014ad050883c504c74500 *4012050883c50483ed04ff6500909090b82c3b0508ffe090833d88280808000f858c000000c705 *8828080801000000c745000c3d050883c504c74500c03e050883c504c74500d43b050883c504c7 *45008437050883c504c74500882a050883c504c74500f43a050883c504c745005829050883c504 *c745002425050883c504c745004012050883c504c745005490050883c504c74500dc89050883c5 *04c74500bc79050883c504c7450014ad050883c50483ed04ff650090b8d43b0508ffe090833d8c *280808000f858c000000c7058c28080801000000c745008437050883c504c745000c3d050883c5 *04c745009434050883c504c74500882a050883c504c74500f43a050883c504c74500c44e050883 *c504c74500501e050883c504c74500841b050883c504c745004012050883c504c7450054900508 *83c504c74500f08b050883c504c74500bc79050883c504c7450014ad050883c50483ed04ff6500 *90b87c3c0508ffe090833d90280808007578c7059028080801000000c745000c3d050883c504c7 *4500c03e050883c504c745008437050883c504c745005829050883c504c745004012050883c504 *c745005490050883c504c74500e090050883c504c74500908e050883c504c74500dc89050883c5 *04c74500bc79050883c504c7450014ad050883c50483ed04ff650090b80c3d0508ffe090833d94 *280808007528c7059428080801000000c745004012050883c504c74500882a050883c504c74500 *14ad050883c50483ed04ff650090b84c3d0508ffe090833d9828080800751ec705982808080100 *0000c7450014ad050883c504c745004012050883c50483ed04ff6500909090b8843d0508ffe090 *833d9c280808000f85a0000000c7059c28080801000000c745004c3d050883c504c74500144005 *0883c504c745008437050883c504c745009812050883c504c745000032050883c504c745009434 *050883c504c74500501e050883c504c745002c4d050883c504c745004012050883c504c745005c *16050883c504c74500e090050883c504c745005490050883c504c74500dc89050883c504c74500 *bc79050883c504c7450014ad050883c50483ed04ff650090c0e90708383e050800000200180001 *008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c *56e8294f010083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f4c0e907 *0883ed0cb8689c0508ebc20400000001000000ff6500900400000009000000ff650090b8c03e05 *08ffe090833da0280808000f8582000000c705a028080801000000c745008437050883c504c745 *004c3d050883c504c745009434050883c504c745005829050883c504c745002425050883c504c7 *4500501e050883c504c745004012050883c504c74500e090050883c504c745005490050883c504 *c74500f484050883c504c745007881050883c504c7450014ad050883c50483ed04ff6500909090 *b8603f0508ffe090833da428080800755ac705a428080801000000c74500fc43050883c504c745 *00d43f050883c504c74500b044050883c504c745002445050883c504c74500f842050883c504c7 *45008843050883c504c745009842050883c504c7450014ad050883c50483ed04ff6500909090b8 *d43f0508ffe090833da8280808007528c705a828080801000000c745008437050883c504c74500 *1440050883c504c7450014ad050883c50483ed04ff650090b814400508ffe090833dac28080800 *7546c705ac28080801000000c74500fcb1050883c504c745004012050883c504c7450024810508 *83c504c74500cc86050883c504c745005490050883c504c7450014ad050883c50483ed04ff6500 *909090c8e907086c4005080400020000000000110001008d45ec3b4354730abe38e907088b43fc *ffe0bec8e90708c745fc7842050883ed048b06ebeb8d760083c70c3b7b5c760cc7436c03000000 *8b43f8ffe0c747f8649705088b45048947fcc707940f08088d77f883c510a18c000708ebdebe94 *0f080883c510ff259000070889f6dc400508a840050800000000c3000000250000008b750cc745 *0000410508ff2683c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8649705088b45048947 *fcc707940f08088d77f883c510a18c000708ebdebe940f080883c510ff259000070889f6404105 *080c41050800000000c3000000250000008b45088945fc8b450c8945f8c745006441050883ed08 *e9cd54000090644105080041050800000000030000002500000004000000120000008d45e03b43 *5473058b43f8ffe08d45f8c700a00007088970048b46108945ec8b460c8945f08b46088945f48b *7604c745e89441050883ed188b06ebcf040000002400000083c7203b7b5c7615c7436c08000000 *c74320fe000000b84ccf0608ffe0c747e49c4105088b45088947e88b45048947ec8977f08b4510 *8947f4c747f8208405088d47e48947fcc707900f08088b550c8d47f8894204be9c0f080883c514 *8b4500ebb989f60200000024000000c745f4940f08088b46048945fc8b4608894500c745f8e041 *050883ed0ce9de2f000089f601000000240000008b46048b500489450089d6c745fc4c42050883 *ed04ff2690b898420508ffe090833db0280808007546c705b028080801000000c7450040120508 *83c504c745008437050883c504c74500cc86050883c504c745005490050883c504c74500bc7905 *0883c504c7450014ad050883c50483ed04ff6500909090b8f8420508ffe090833db42808080075 *78c705b428080801000000c74500c03e050883c504c745001440050883c504c745002425050883 *c504c74500501e050883c504c74500841b050883c504c745004012050883c504c74500e0900508 *83c504c745005490050883c504c74500f08b050883c504c74500dc89050883c504c7450014ad05 *0883c50483ed04ff650090b888430508ffe090833db828080800755ac705b828080801000000c7 *45000c3d050883c504c745001440050883c504c74500f43a050883c504c74500c44e050883c504 *c74500841b050883c504c745004012050883c504c745005490050883c504c7450014ad050883c5 *0483ed04ff6500909090b8fc430508ffe090833dbc280808000f8596000000c705bc2808080100 *0000c74500c03e050883c504c745001440050883c504c745009812050883c504c7450000320508 *83c504c745002425050883c504c74500101e050883c504c74500841b050883c504c745005c1605 *0883c504c745004012050883c504c74500e090050883c504c745005490050883c504c74500f08b *050883c504c74500bc79050883c504c7450014ad050883c50483ed04ff6500909090b8b0440508 *ffe090833dc028080800755ac705c028080801000000c745002425050883c504c7450014400508 *83c504c74500101e050883c504c74500a017050883c504c745004012050883c504c74500549005 *0883c504c74500bc79050883c504c7450014ad050883c50483ed04ff6500909090b824450508ff *e090833dc4280808000f85aa000000c705c428080801000000c74500c03e050883c504c7450014 *40050883c504c745009812050883c504c745000032050883c504c745002425050883c504c74500 *101e050883c504c74500001d050883c504c745004012050883c504c74500e090050883c504c745 *005490050883c504c74500e88d050883c504c74500f08b050883c504c74500dc89050883c504c7 *45002481050883c504c74500bc79050883c504c7450014ad050883c50483ed04ff650090909000 *0000000a0000008b4500ff60f090900400020000000000110000008d45fc3b4354730abe44e907 *088b43fcffe0c745fc3046050883ed04e84f57ffff8b4500ebea89f6010000002400000083c504 *e9c0550000b840460508ffe090833dc828080800751ec705c828080801000000c7450014ad0508 *83c504c745004012050883c50483ed04ff6500909090b878460508ffe090833dcc28080800751e *c705cc28080801000000c7450014ad050883c504c745004012050883c50483ed04ff6500909090 *38e90708a846050804000100000000001100010083c71c3b7b5c7611c7436c07000000be48e907 *088b43fcffe0c747e8744a05088b45008947ecc747f48c4b05088d47e88947f8c747fcc04c0508 *89078d47f48945008d77fc8b4504ebcd89f600000000240000008b06668b40fe25ffff000083f8 *530f873b030000ff24858c8c0708bee8e9070883c504c7442408c8830508ff642408bef4e90708 *ebeabe00ea0708ebe3be0cea0708ebdcbe18ea0708ebd5be24ea0708ebcebe30ea0708ebc7be3c *ea0708ebc0be48ea0708ebb9be54ea0708ebb2be60ea0708ebabbe6cea0708eba4be78ea0708eb *9dbe84ea0708eb96be90ea0708eb8fbe9cea0708eb88bea8ea0708eb81beb4ea0708e977ffffff *bec0ea0708e96dffffffbeccea0708e963ffffffbed8ea0708e959ffffffbee4ea0708e94fffff *ffbef0ea0708e945ffffffbefcea0708e93bffffffbe08eb0708e931ffffffbe14eb0708e927ff *ffffbe20eb0708e91dffffffbe2ceb0708e913ffffffbe38eb0708e909ffffffbe44eb0708e9ff *feffffbe50eb0708e9f5feffffbe5ceb0708e9ebfeffffbe68eb0708e9e1feffffbe74eb0708e9 *d7feffffbe80eb0708e9cdfeffffbe8ceb0708e9c3feffffbe98eb0708e9b9feffffbea4eb0708 *e9affeffffbeb0eb0708e9a5feffffbebceb0708e99bfeffffbec8eb0708e991feffffbed4eb07 *08e987feffffbee0eb0708e97dfeffffbeeceb0708e973feffffbef8eb0708e969feffffbe04ec *0708e95ffeffffbe10ec0708e955feffffbe1cec0708e94bfeffffbe28ec0708e941feffffbe34 *ec0708e937feffffbe40ec0708e92dfeffffbe4cec0708e923feffffbe58ec0708e919feffffbe *64ec0708e90ffeffffbe70ec0708e905feffffbe7cec0708e9fbfdffffbe88ec0708e9f1fdffff *be94ec0708e9e7fdffffbea0ec0708e9ddfdffffbeacec0708e9d3fdffffbeb8ec0708e9c9fdff *ffbec4ec0708e9bffdffffbed0ec0708e9b5fdffffbedcec0708e9abfdffffbee8ec0708e9a1fd *ffffbef4ec0708e997fdffffbe00ed0708e98dfdffffbe0ced0708e983fdffff8b4604894500c7 *442408a04f0508e97bfdffff8b4604894500c7442408cc4f0508e968fdffffbe18ed0708e953fd *ffffbe24ed0708e949fdffffbe30ed0708e93ffdffffbe3ced0708e935fdffffbe48ed0708e92b *fdffffbe54ed0708e921fdffffbe60ed0708e917fdffffbe6ced0708e90dfdffffbe78ed0708e9 *03fdffffbe84ed0708e9f9fcffffbe90ed0708e9effcffffbe9ced0708e9e5fcffffbea8ed0708 *e9dbfcffffbeb4ed0708e9d1fcffffbedce90708e9c7fcffff8d760001000100130000008d45f4 *3b435473058b43f8ffe08d45f8c700a00007088970048b7604c745f41047050883ed0c8b06ebe1 *89f6c7450430e9070883c504e9d1f5ffff900000000024000000be9c0f080883c504ff65009000 *000000240000008b4604c74500b84a050883ec0c50e8314effff83c410ff65008d76008b7504c7 *4504cc4a050883c504ff26900000000024000000be9c0f080883c504ff65009000000000240000 *008b4604c74500004b050883ec0c50e82951ffff83c410ff65008d76008b7504c74504144b0508 *83c504ff2690304b0508e84a05080000000001000000250000008b55048b460489450489d6c745 *00544b0508ff26544b0508a04a0508a84605080100000025000100a84605080400020001000000 *0c0001008d45fc3b435473058b43fcffe08b7604c745fc7c4b050883ed048b06ebed89f6e90f01 *00008d76000000000024000000be40e9070883c504ff650090c745fc30e90708c74500bc4b0508 *83ed04e9a2f4ffff89f600000200140000008d45f83b435473058b43f8ffe08d45f8c700a00007 *08897004807e0400750ebe40e9070889c5a190000708ebdebe98e8070883ed08a18c000708ebcf *000000002400000083c70c3b7b5c7615c7436c03000000c74320ff000000b84ccf0608ffe0c747 *f8e84b05088977fc8d77f883c5048b4500ebe989f600000000240000008b4604c745002c4c0508 *83ec0c50e88550ffff83c41025ff00000089c6ff65008b7604c74500684c0508ff26884c0508c8 *4b0508a84605080000000025000100ac4b050800000000a846050800000100010000000c000100 *8d45f83b435473058b43fcffe08b7604c745fca84c050883ed048b06ebed9090000000000a0000 *00ff650090b8f44c0508ffe090833dd028080800751ec705d028080801000000c7450014ad0508 *83c504c745004012050883c50483ed04ff6500909090b82c4d0508ffe090833dd428080800751e *c705d428080801000000c7450014ad050883c504c745004012050883c50483ed04ff6500909090 *bc0f080878100808c8ed07085c4d05080400010000000000110007008d45f83b4354730abe9ce9 *07088b43fcffe08b7500c74500004e05088b06ebf0604d050800000200140001008d45f43b4354 *73058b43f8ffe08d45f8c700a00007088970048b46048945f483ed0cb8bcab0508ebe28d760089 *7500bebc0f080883ed04e9d8530100d04d0508d04d05085c4d050800000000250001005c4d0508 *000000002400070083c70c3b7b5c760cc7436c030000008b43f8ffe08b46043d00110000745c3d *0111000074423d021100007428c747f8a44d05088947fc8d47f88945fcc745f8c8ed0708c74500 *f44d050883ed08b84c960508ebbebea8e9070883c50483ef0c8b45008b40e8ebabbea4e9070883 *c50483ef0c8b45008b40eceb98bedce8070883c50483ef0c8b45008b40f0eb8590909000000000 *0a0001008b4500ff60ec9090000000000a0002008b4500ff60e889f6dce80708a4e90708a8e907 *08b8c44e0508ffe090833dd828080800753cc705d828080801000000c745002c4d050883c504c7 *4500184f050883c504c745004012050883c504c745005490050883c504c7450014ad050883c504 *83ed04ff650090b8184f0508ffe090833ddc28080800751ec705dc28080801000000c7450014ad *050883c504c745004012050883c50483ed04ff6500909090b8504f0508ffe090833de028080800 *7532c705e028080801000000c745004012050883c504c74500501e050883c504c7450054900508 *83c504c7450014ad050883c50483ed04ff65009090900400010000000000110000008b7500c745 *00b44f0508ff2600000000240000008b4604894500e99d20000090040001000000000011000000 *8b7500c74500e04f0508ff2600000000240000008b4604894500e90d2100009004000100000000 *00110000008b7500c745000c500508ff2600000000240000008b06668b40fe25ffff00003d8701 *00000f8718200000ff2485dc8d0708bee4ed070883c504c7442408c8830508ff642408bef0ed07 *0883c504c7442408c8830508ebeabefced070883c504c7442408c8830508ebd8be08ee070883c5 *04c7442408c8830508ebc6be14ee070883c504c7442408c8830508ebb4be20ee070883c504c744 *2408c8830508eba2be2cee070883c504c7442408c8830508eb90be38ee070883c504c7442408c8 *830508e97bffffffbe44ee070883c504c7442408c8830508e966ffffffbe50ee070883c504c744 *2408c8830508e951ffffffbe5cee070883c504c7442408c8830508e93cffffffbe68ee070883c5 *04c7442408c8830508e927ffffffbe74ee070883c504c7442408c8830508e912ffffffbe80ee07 *0883c504c7442408c8830508e9fdfeffffbe8cee070883c504c7442408c8830508e9e8feffffbe *98ee070883c504c7442408c8830508e9d3feffffbea4ee070883c504c7442408c8830508e9befe *ffffbeb0ee070883c504c7442408c8830508e9a9feffffbebcee070883c504c7442408c8830508 *e994feffffbec8ee070883c504c7442408c8830508e97ffeffffbed4ee070883c504c7442408c8 *830508e96afeffffbee0ee070883c504c7442408c8830508e955feffffbeecee070883c504c744 *2408c8830508e940feffffbef8ee070883c504c7442408c8830508e92bfeffffbe04ef070883c5 *04c7442408c8830508e916feffffbe10ef070883c504c7442408c8830508e901feffffbe1cef07 *0883c504c7442408c8830508e9ecfdffffbe28ef070883c504c7442408c8830508e9d7fdffffbe *34ef070883c504c7442408c8830508e9c2fdffffbe40ef070883c504c7442408c8830508e9adfd *ffffbe4cef070883c504c7442408c8830508e998fdffffbe58ef070883c504c7442408c8830508 *e983fdffffbe64ef070883c504c7442408c8830508e96efdffffbe70ef070883c504c7442408c8 *830508e959fdffffbe7cef070883c504c7442408c8830508e944fdffffbe88ef070883c504c744 *2408c8830508e92ffdffffbe94ef070883c504c7442408c8830508e91afdffffbea0ef070883c5 *04c7442408c8830508e905fdffffbeacef070883c504c7442408c8830508e9f0fcffffbeb8ef07 *0883c504c7442408c8830508e9dbfcffffbec4ef070883c504c7442408c8830508e9c6fcffffbe *d0ef070883c504c7442408c8830508e9b1fcffffbedcef070883c504c7442408c8830508e99cfc *ffffbee8ef070883c504c7442408c8830508e987fcffffbef4ef070883c504c7442408c8830508 *e972fcffffbe00f0070883c504c7442408c8830508e95dfcffffbe0cf0070883c504c7442408c8 *830508e948fcffffbe18f0070883c504c7442408c8830508e933fcffffbe24f0070883c504c744 *2408c8830508e91efcffffbe30f0070883c504c7442408c8830508e909fcffffbe3cf0070883c5 *04c7442408c8830508e9f4fbffffbe48f0070883c504c7442408c8830508e9dffbffffbe54f007 *0883c504c7442408c8830508e9cafbffffbe60f0070883c504c7442408c8830508e9b5fbffffbe *6cf0070883c504c7442408c8830508e9a0fbffffbe78f0070883c504c7442408c8830508e98bfb *ffffbe84f0070883c504c7442408c8830508e976fbffffbe90f0070883c504c7442408c8830508 *e961fbffffbe9cf0070883c504c7442408c8830508e94cfbffffbea8f0070883c504c7442408c8 *830508e937fbffffbeb4f0070883c504c7442408c8830508e922fbffffbec0f0070883c504c744 *2408c8830508e90dfbffffbeccf0070883c504c7442408c8830508e9f8faffffbed8f0070883c5 *04c7442408c8830508e9e3faffffbee4f0070883c504c7442408c8830508e9cefaffffbef0f007 *0883c504c7442408c8830508e9b9faffffbefcf0070883c504c7442408c8830508e9a4faffffbe *08f1070883c504c7442408c8830508e98ffaffffbe14f1070883c504c7442408c8830508e97afa *ffffbe20f1070883c504c7442408c8830508e965faffffbe2cf1070883c504c7442408c8830508 *e950faffffbe38f1070883c504c7442408c8830508e93bfaffffbe44f1070883c504c7442408c8 *830508e926faffffbe50f1070883c504c7442408c8830508e911faffffbe5cf1070883c504c744 *2408c8830508e9fcf9ffffbe68f1070883c504c7442408c8830508e9e7f9ffffbe74f1070883c5 *04c7442408c8830508e9d2f9ffffbe80f1070883c504c7442408c8830508e9bdf9ffffbe8cf107 *0883c504c7442408c8830508e9a8f9ffffbe98f1070883c504c7442408c8830508e993f9ffffbe *a4f1070883c504c7442408c8830508e97ef9ffffbeb0f1070883c504c7442408c8830508e969f9 *ffffbebcf1070883c504c7442408c8830508e954f9ffffbec8f1070883c504c7442408c8830508 *e93ff9ffffbed4f1070883c504c7442408c8830508e92af9ffffbee0f1070883c504c7442408c8 *830508e915f9ffffbeecf1070883c504c7442408c8830508e900f9ffffbef8f1070883c504c744 *2408c8830508e9ebf8ffffbe04f2070883c504c7442408c8830508e9d6f8ffffbe10f2070883c5 *04c7442408c8830508e9c1f8ffffbe1cf2070883c504c7442408c8830508e9acf8ffffbe28f207 *0883c504c7442408c8830508e997f8ffffbe34f2070883c504c7442408c8830508e982f8ffffbe *40f2070883c504c7442408c8830508e96df8ffffbe4cf2070883c504c7442408c8830508e958f8 *ffffbe58f2070883c504c7442408c8830508e943f8ffffbe64f2070883c504c7442408c8830508 *e92ef8ffffbe70f2070883c504c7442408c8830508e919f8ffffbe7cf2070883c504c7442408c8 *830508e904f8ffffbe88f2070883c504c7442408c8830508e9eff7ffffbe94f2070883c504c744 *2408c8830508e9daf7ffffbea0f2070883c504c7442408c8830508e9c5f7ffffbeacf2070883c5 *04c7442408c8830508e9b0f7ffffbeb8f2070883c504c7442408c8830508e99bf7ffffbec4f207 *0883c504c7442408c8830508e986f7ffffbed0f2070883c504c7442408c8830508e971f7ffffbe *dcf2070883c504c7442408c8830508e95cf7ffffbee8f2070883c504c7442408c8830508e947f7 *ffffbef4f2070883c504c7442408c8830508e932f7ffffbe00f3070883c504c7442408c8830508 *e91df7ffffbe0cf3070883c504c7442408c8830508e908f7ffffbe18f3070883c504c7442408c8 *830508e9f3f6ffffbe9cff070883c504c7442408c8830508e9def6ffffbe24f3070883c504c744 *2408c8830508e9c9f6ffffbe30f3070883c504c7442408c8830508e9b4f6ffffbe3cf3070883c5 *04c7442408c8830508e99ff6ffffbe48f3070883c504c7442408c8830508e98af6ffffbe54f307 *0883c504c7442408c8830508e975f6ffffbe60f3070883c504c7442408c8830508e960f6ffffbe *6cf3070883c504c7442408c8830508e94bf6ffffbe78f3070883c504c7442408c8830508e936f6 *ffffbe84f3070883c504c7442408c8830508e921f6ffffbe90f3070883c504c7442408c8830508 *e90cf6ffffbe9cf3070883c504c7442408c8830508e9f7f5ffffbea8f3070883c504c7442408c8 *830508e9e2f5ffffbeb4f3070883c504c7442408c8830508e9cdf5ffffbec0f3070883c504c744 *2408c8830508e9b8f5ffffbeccf3070883c504c7442408c8830508e9a3f5ffffbed8f3070883c5 *04c7442408c8830508e98ef5ffffbee4f3070883c504c7442408c8830508e979f5ffffbef0f307 *0883c504c7442408c8830508e964f5ffffbefcf3070883c504c7442408c8830508e94ff5ffffbe *08f4070883c504c7442408c8830508e93af5ffffbe14f4070883c504c7442408c8830508e925f5 *ffffbe20f4070883c504c7442408c8830508e910f5ffffbe2cf4070883c504c7442408c8830508 *e9fbf4ffffbe38f4070883c504c7442408c8830508e9e6f4ffffbe44f4070883c504c7442408c8 *830508e9d1f4ffffbe50f4070883c504c7442408c8830508e9bcf4ffffbe5cf4070883c504c744 *2408c8830508e9a7f4ffffbe68f4070883c504c7442408c8830508e992f4ffffbe74f4070883c5 *04c7442408c8830508e97df4ffff8b4604894500c7442408a04f0508e96af4ffff8b4604894500 *c7442408cc4f0508e957f4ffffbe80f4070883c504c7442408c8830508e942f4ffffbe8cf40708 *83c504c7442408c8830508e92df4ffffbe98f4070883c504c7442408c8830508e918f4ffffbea4 *f4070883c504c7442408c8830508e903f4ffffbeb0f4070883c504c7442408c8830508e9eef3ff *ffbebcf4070883c504c7442408c8830508e9d9f3ffffbec8f4070883c504c7442408c8830508e9 *c4f3ffffbed4f4070883c504c7442408c8830508e9aff3ffffbee0f4070883c504c7442408c883 *0508e99af3ffffbeecf4070883c504c7442408c8830508e985f3ffffbef8f4070883c504c74424 *08c8830508e970f3ffffbe04f5070883c504c7442408c8830508e95bf3ffffbe10f5070883c504 *c7442408c8830508e946f3ffffbe1cf5070883c504c7442408c8830508e931f3ffffbe28f50708 *83c504c7442408c8830508e91cf3ffffbe34f5070883c504c7442408c8830508e907f3ffffbe40 *f5070883c504c7442408c8830508e9f2f2ffffbe4cf5070883c504c7442408c8830508e9ddf2ff *ffbe58f5070883c504c7442408c8830508e9c8f2ffffbe64f5070883c504c7442408c8830508e9 *b3f2ffffbe70f5070883c504c7442408c8830508e99ef2ffffbe7cf5070883c504c7442408c883 *0508e989f2ffffbe88f5070883c504c7442408c8830508e974f2ffffbe94f5070883c504c74424 *08c8830508e95ff2ffffbea0f5070883c504c7442408c8830508e94af2ffffbeacf5070883c504 *c7442408c8830508e935f2ffffbeb8f5070883c504c7442408c8830508e920f2ffffbec4f50708 *83c504c7442408c8830508e90bf2ffffbed0f5070883c504c7442408c8830508e9f6f1ffffbedc *f5070883c504c7442408c8830508e9e1f1ffffbee8f5070883c504c7442408c8830508e9ccf1ff *ffbe9cff070883c504c7442408c8830508e9b7f1ffffbef4f5070883c504c7442408c8830508e9 *a2f1ffffbe00f6070883c504c7442408c8830508e98df1ffffbe0cf6070883c504c7442408c883 *0508e978f1ffffbe18f6070883c504c7442408c8830508e963f1ffffbe24f6070883c504c74424 *08c8830508e94ef1ffffbe30f6070883c504c7442408c8830508e939f1ffffbe3cf6070883c504 *c7442408c8830508e924f1ffffbe48f6070883c504c7442408c8830508e90ff1ffffbe54f60708 *83c504c7442408c8830508e9faf0ffffbe60f6070883c504c7442408c8830508e9e5f0ffffbe6c *f6070883c504c7442408c8830508e9d0f0ffffbe78f6070883c504c7442408c8830508e9bbf0ff *ffbe84f6070883c504c7442408c8830508e9a6f0ffffbe90f6070883c504c7442408c8830508e9 *91f0ffffbe9cf6070883c504c7442408c8830508e97cf0ffffbea8f6070883c504c7442408c883 *0508e967f0ffffbeb4f6070883c504c7442408c8830508e952f0ffffbec0f6070883c504c74424 *08c8830508e93df0ffffbeccf6070883c504c7442408c8830508e928f0ffffbed8f6070883c504 *c7442408c8830508e913f0ffffbee4f6070883c504c7442408c8830508e9feefffffbef0f60708 *83c504c7442408c8830508e9e9efffffbefcf6070883c504c7442408c8830508e9d4efffffbe08 *f7070883c504c7442408c8830508e9bfefffffbe14f7070883c504c7442408c8830508e9aaefff *ffbe20f7070883c504c7442408c8830508e995efffffbe2cf7070883c504c7442408c8830508e9 *80efffffbe38f7070883c504c7442408c8830508e96befffffbe44f7070883c504c7442408c883 *0508e956efffffbe50f7070883c504c7442408c8830508e941efffffbe5cf7070883c504c74424 *08c8830508e92cefffffbe68f7070883c504c7442408c8830508e917efffffbe74f7070883c504 *c7442408c8830508e902efffffbe80f7070883c504c7442408c8830508e9edeeffffbe8cf70708 *83c504c7442408c8830508e9d8eeffffbe98f7070883c504c7442408c8830508e9c3eeffffbea4 *f7070883c504c7442408c8830508e9aeeeffffbeb0f7070883c504c7442408c8830508e999eeff *ffbebcf7070883c504c7442408c8830508e984eeffffbec8f7070883c504c7442408c8830508e9 *6feeffffbed4f7070883c504c7442408c8830508e95aeeffffbee0f7070883c504c7442408c883 *0508e945eeffffbeecf7070883c504c7442408c8830508e930eeffffbef8f7070883c504c74424 *08c8830508e91beeffffbe04f8070883c504c7442408c8830508e906eeffffbe10f8070883c504 *c7442408c8830508e9f1edffffbe1cf8070883c504c7442408c8830508e9dcedffffbe28f80708 *83c504c7442408c8830508e9c7edffffbe34f8070883c504c7442408c8830508e9b2edffffbe40 *f8070883c504c7442408c8830508e99dedffffbe4cf8070883c504c7442408c8830508e988edff *ffbe58f8070883c504c7442408c8830508e973edffffbe64f8070883c504c7442408c8830508e9 *5eedffffbe70f8070883c504c7442408c8830508e949edffffbe7cf8070883c504c7442408c883 *0508e934edffffbe88f8070883c504c7442408c8830508e91fedffffbe94f8070883c504c74424 *08c8830508e90aedffffbea0f8070883c504c7442408c8830508e9f5ecffffbeacf8070883c504 *c7442408c8830508e9e0ecffffbeb8f8070883c504c7442408c8830508e9cbecffffbec4f80708 *83c504c7442408c8830508e9b6ecffffbed0f8070883c504c7442408c8830508e9a1ecffffbedc *f8070883c504c7442408c8830508e98cecffffbee8f8070883c504c7442408c8830508e977ecff *ffbef4f8070883c504c7442408c8830508e962ecffffbe00f9070883c504c7442408c8830508e9 *4decffffbe0cf9070883c504c7442408c8830508e938ecffffbe18f9070883c504c7442408c883 *0508e923ecffffbe24f9070883c504c7442408c8830508e90eecffffbe30f9070883c504c74424 *08c8830508e9f9ebffffbe3cf9070883c504c7442408c8830508e9e4ebffffbe48f9070883c504 *c7442408c8830508e9cfebffffbe54f9070883c504c7442408c8830508e9baebffffbe60f90708 *83c504c7442408c8830508e9a5ebffffbe6cf9070883c504c7442408c8830508e990ebffffbe78 *f9070883c504c7442408c8830508e97bebffffbe84f9070883c504c7442408c8830508e966ebff *ffbe90f9070883c504c7442408c8830508e951ebffffbe9cf9070883c504c7442408c8830508e9 *3cebffffbea8f9070883c504c7442408c8830508e927ebffffbeb4f9070883c504c7442408c883 *0508e912ebffffbec0f9070883c504c7442408c8830508e9fdeaffffbeccf9070883c504c74424 *08c8830508e9e8eaffffbed8f9070883c504c7442408c8830508e9d3eaffffbee4f9070883c504 *c7442408c8830508e9beeaffffbef0f9070883c504c7442408c8830508e9a9eaffffbefcf90708 *83c504c7442408c8830508e994eaffffbe08fa070883c504c7442408c8830508e97feaffffbe14 *fa070883c504c7442408c8830508e96aeaffffbe20fa070883c504c7442408c8830508e955eaff *ffbe2cfa070883c504c7442408c8830508e940eaffffbe38fa070883c504c7442408c8830508e9 *2beaffffbe44fa070883c504c7442408c8830508e916eaffffbe50fa070883c504c7442408c883 *0508e901eaffffbe5cfa070883c504c7442408c8830508e9ece9ffffbe68fa070883c504c74424 *08c8830508e9d7e9ffffbe74fa070883c504c7442408c8830508e9c2e9ffffbe80fa070883c504 *c7442408c8830508e9ade9ffffbe8cfa070883c504c7442408c8830508e998e9ffffbe98fa0708 *83c504c7442408c8830508e983e9ffffbea4fa070883c504c7442408c8830508e96ee9ffffbeb0 *fa070883c504c7442408c8830508e959e9ffffbebcfa070883c504c7442408c8830508e944e9ff *ffbec8fa070883c504c7442408c8830508e92fe9ffffbed4fa070883c504c7442408c8830508e9 *1ae9ffffbee0fa070883c504c7442408c8830508e905e9ffffbeecfa070883c504c7442408c883 *0508e9f0e8ffffbef8fa070883c504c7442408c8830508e9dbe8ffffbe04fb070883c504c74424 *08c8830508e9c6e8ffffbe10fb070883c504c7442408c8830508e9b1e8ffffbe1cfb070883c504 *c7442408c8830508e99ce8ffffbe28fb070883c504c7442408c8830508e987e8ffffbe34fb0708 *83c504c7442408c8830508e972e8ffffbe40fb070883c504c7442408c8830508e95de8ffffbe4c *fb070883c504c7442408c8830508e948e8ffffbe58fb070883c504c7442408c8830508e933e8ff *ffbe64fb070883c504c7442408c8830508e91ee8ffffbe70fb070883c504c7442408c8830508e9 *09e8ffffbe7cfb070883c504c7442408c8830508e9f4e7ffffbe88fb070883c504c7442408c883 *0508e9dfe7ffffbe94fb070883c504c7442408c8830508e9cae7ffffbea0fb070883c504c74424 *08c8830508e9b5e7ffffbeacfb070883c504c7442408c8830508e9a0e7ffffbeb8fb070883c504 *c7442408c8830508e98be7ffffbea8ff070883c504c7442408c8830508e976e7ffffbea8ff0708 *83c504c7442408c8830508e961e7ffffbec4fb070883c504c7442408c8830508e94ce7ffffbed0 *fb070883c504c7442408c8830508e937e7ffffbedcfb070883c504c7442408c8830508e922e7ff *ffbee8fb070883c504c7442408c8830508e90de7ffffbef4fb070883c504c7442408c8830508e9 *f8e6ffffbe00fc070883c504c7442408c8830508e9e3e6ffffbe0cfc070883c504c7442408c883 *0508e9cee6ffffbe18fc070883c504c7442408c8830508e9b9e6ffffbe24fc070883c504c74424 *08c8830508e9a4e6ffffbe30fc070883c504c7442408c8830508e98fe6ffffbe3cfc070883c504 *c7442408c8830508e97ae6ffffbe48fc070883c504c7442408c8830508e965e6ffffbe54fc0708 *83c504c7442408c8830508e950e6ffffbe60fc070883c504c7442408c8830508e93be6ffffbe6c *fc070883c504c7442408c8830508e926e6ffffbe78fc070883c504c7442408c8830508e911e6ff *ffbe84fc070883c504c7442408c8830508e9fce5ffffbe90fc070883c504c7442408c8830508e9 *e7e5ffffbe9cfc070883c504c7442408c8830508e9d2e5ffffbea8fc070883c504c7442408c883 *0508e9bde5ffffbeb4fc070883c504c7442408c8830508e9a8e5ffffbec0fc070883c504c74424 *08c8830508e993e5ffffbeccfc070883c504c7442408c8830508e97ee5ffffbed8fc070883c504 *c7442408c8830508e969e5ffffbee4fc070883c504c7442408c8830508e954e5ffffbef0fc0708 *83c504c7442408c8830508e93fe5ffffbefcfc070883c504c7442408c8830508e92ae5ffffbe08 *fd070883c504c7442408c8830508e915e5ffffbe14fd070883c504c7442408c8830508e900e5ff *ffbe20fd070883c504c7442408c8830508e9ebe4ffffbe2cfd070883c504c7442408c8830508e9 *d6e4ffffbe38fd070883c504c7442408c8830508e9c1e4ffffbe44fd070883c504c7442408c883 *0508e9ace4ffffbe50fd070883c504c7442408c8830508e997e4ffffbe5cfd070883c504c74424 *08c8830508e982e4ffffbe68fd070883c504c7442408c8830508e96de4ffffbe74fd070883c504 *c7442408c8830508e958e4ffffbe80fd070883c504c7442408c8830508e943e4ffffbe8cfd0708 *83c504c7442408c8830508e92ee4ffffbe98fd070883c504c7442408c8830508e919e4ffffbea4 *fd070883c504c7442408c8830508e904e4ffffbeb0fd070883c504c7442408c8830508e9efe3ff *ffbebcfd070883c504c7442408c8830508e9dae3ffffbec8fd070883c504c7442408c8830508e9 *c5e3ffffbed4fd070883c504c7442408c8830508e9b0e3ffffbee0fd070883c504c7442408c883 *0508e99be3ffffbeecfd070883c504c7442408c8830508e986e3ffffbef8fd070883c504c74424 *08c8830508e971e3ffffbe04fe070883c504c7442408c8830508e95ce3ffffbe10fe070883c504 *c7442408c8830508e947e3ffffbe1cfe070883c504c7442408c8830508e932e3ffffbe28fe0708 *83c504c7442408c8830508e91de3ffffbe34fe070883c504c7442408c8830508e908e3ffffbe40 *fe070883c504c7442408c8830508e9f3e2ffffbe4cfe070883c504c7442408c8830508e9dee2ff *ffbe58fe070883c504c7442408c8830508e9c9e2ffffbe64fe070883c504c7442408c8830508e9 *b4e2ffffbe70fe070883c504c7442408c8830508e99fe2ffffbe7cfe070883c504c7442408c883 *0508e98ae2ffffbe88fe070883c504c7442408c8830508e975e2ffffbe94fe070883c504c74424 *08c8830508e960e2ffffbea0fe070883c504c7442408c8830508e94be2ffffbeacfe070883c504 *c7442408c8830508e936e2ffffbeb8fe070883c504c7442408c8830508e921e2ffffbeb4ff0708 *83c504c7442408c8830508e90ce2ffffbec0ff070883c504c7442408c8830508e9f7e1ffffbecc *ff070883c504c7442408c8830508e9e2e1ffffbed8ff070883c504c7442408c8830508e9cde1ff *ffbec4fe070883c504c7442408c8830508e9b8e1ffffbed0fe070883c504c7442408c8830508e9 *a3e1ffffbedcfe070883c504c7442408c8830508e98ee1ffffbeb4ff070883c504c7442408c883 *0508e979e1ffffbec0ff070883c504c7442408c8830508e964e1ffffbee8fe070883c504c74424 *08c8830508e94fe1ffffbef4fe070883c504c7442408c8830508e93ae1ffffbeccff070883c504 *c7442408c8830508e925e1ffffbed8ff070883c504c7442408c8830508e910e1ffffbe00ff0708 *83c504c7442408c8830508e9fbe0ffffbe0cff070883c504c7442408c8830508e9e6e0ffffbe18 *ff070883c504c7442408c8830508e9d1e0ffffbe24ff070883c504c7442408c8830508e9bce0ff *ffbe30ff070883c504c7442408c8830508e9a7e0ffffbe3cff070883c504c7442408c8830508e9 *92e0ffffbe48ff070883c504c7442408c8830508e97de0ffffbe54ff070883c504c7442408c883 *0508e968e0ffffbe60ff070883c504c7442408c8830508e953e0ffffbe6cff070883c504c74424 *08c8830508e93ee0ffffbe78ff070883c504c7442408c8830508e929e0ffffbe84ff070883c504 *c7442408c8830508e914e0ffffbe90ff070883c504c7442408c8830508e9ffdfffffbed8ed0708 *83c504c7442408c8830508e9eadfffff9003000100000000001100000083c7103b7b5c7611c743 *6c04000000beb8e907088b43fcffe08b450085c07510c747f404ab0508c747f800400000eb3385 *c07e493dff0f00007512bee4ff070883c50483ef10b8c8830508ebca3dfe0f00007f2905004000 *00c747f404ab05088947f8c747fcc88305088d47f489078d77fc83c5048b45008b40eceb9abe28 *0f080883c50483ef108b45008b40f0eb8703000100000000001100000083c7103b7b5c7611c743 *6c04000000bebce907088b43fcffe08b450085c07510c747f404ab0508c747f800300000eb3385 *c07e493dff0f00007512bef0ff070883c50483ef10b8c8830508ebca3dfe0f00007f2905003000 *00c747f404ab05088947f8c747fcc88305088d47f489078d77fc83c5048b45008b40eceb9abe28 *0f080883c50483ef108b45008b40f0eb87c0ed0708fcff07080c000808d8710508000000008871 *05080000010000000000110007008d45f83b4354730abec0e907088b43fcffe0c745fc0c000808 *c745f8fcff070883ed08b830730508ebe689f6e9cfffffff90909000000200180000008d45f43b *4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e8891b01 *0083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f41c00080883ed0cb8 *689c0508ebc20400020000000000110000008d45fc3b4354730abed8e907088b43fcffe0c745fc *b072050883ed04e80328ffff89c68b4500ebe801000100130000008d45f43b435473058b43f8ff *e08d45f8c700a00007088970048b46048945f483ed0cb8ac9f0508ebe28d760001000000240000 *0083c7143b7b5c7615c7436c05000000c74320ff000000b84ccf0608ffe085f6751bc747f07c72 *05088b45048947f48d77f083c50883ef088b4500ebdfc747f004ab05088977f4c747f864970508 *8d47f08947fc8b450489078d47f889450483c504b84c720508ebb3b8020808c802080818730508 *0b00030000000000110003008d45f43b4354730abec0ed07088b43fcffe0c745f8d80208088b45 *048945f4c745fce874050883ed0cb824850508ebe01873050801000100130001008d45f03b4354 *73058b43f8ffe08d45f8c700a00007088970048b46048945f4c745f0b802080883ed10b84c9605 *08ebdb1873050802000000150001008d45f03b4354720883c70c3b7b5c760cc7436c030000008b *43f8ffe08d45f8c700a0000708897004c747f86c7305088b46088947fc8d47f88945f48b460489 *45f083ed10b84c960508ebcf901873050802000000150003008d45f03b4354720883c70c3b7b5c *760cc7436c030000008b43f8ffe08d45f8c700a0000708897004c747f8a87305088b46048947fc *8b460889078d47f88945f4c745f0c802080883ed10b84c960508ebc98d76001873050802000000 *2400030083c72c3b7b5c760cc7436c0b0000008b43f8ffe0837e0400740b83c50c83ef2c8b4500 *ebedc747d8007405088b45088947dc8b45048947e0c747e4c89c0508c747e8280f0808c747ece4 *0f0808c747f0940f08088d47d88947f4c747f8280f0808c747fc489d05088d47e489078d77fc83 *c50cb804c70608eb9889f6187305080200000024000300c7450060740508ff26909090756e6d61 *727368616c48696e744d6f64653a20696c6c6567616c2076616c7565200089f600000200180000 *008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c *56e85118010083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f4f47405 *0883ed0cb87c920508ebc2474c5f4558545f666f675f636f6f7264206f72204f70656e474c2031 *2e34009000000200180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ff *e0c747f808ee060883ec0c56e8d117010083c4108d47f8894604c70624ed06088d55f8c702a000 *0708894204c745f47875050883ed0cb87c920508ebc2676c466f67436f6f726466455854009000 *000200180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808 *ee060883ec0c56e86117010083c4108d47f8894604c70624ed06088d55f8c702a0000708894204 *c745f4f875050883ed0cb87c920508ebc2a8760508000000000000000000000100000000001100 *00008d45fc3b4354730abe1c0008088b43fcffe0bef40e0808c745fcb876050883ed04b8bcd506 *08ebe8e9d3ffffff8d7600000000002400000083c7083b7b5c7615c7436c02000000c74320fe00 *0000b84ccf0608ffe0c747fc54a3050889378d77fc83c5048b4500ebea9090902c20636865636b *20666f7220008d760000000200180000008d45f43b4354720883c70c3b7b5c760cc7436c030000 *008b43f8ffe0c747f808ee060883ec0c56e86d16010083c4108d47f8894604c70624ed06088d55 *f8c702a0000708894204c745f4ec76050883ed0cb87c920508ebc2756e6b6e6f776e204f70656e *474c2063616c6c20008d760000000200180000008d45f43b4354720883c70c3b7b5c760cc7436c *030000008b43f8ffe0c747f808ee060883ec0c56e8f515010083c4108d47f8894604c70624ed06 *088d55f8c702a0000708894204c745f45c77050883ed0cb87c920508ebc2040001000000000011 *0000008b7500c7450070780508ff26eb5689f6000000002400000083c7083b7b5c7615c7436c02 *000000c74320ff000000b84ccf0608ffe0c747fcb0a1050889378d77fc83c5048b4500ebea8d76 *00ec770508000000000000000000000100000001000d0000008d45f83b435473058b43fcffe08b *46048945f8c745fcf877050883ed08b8ac780508ebe7000000002400000083c7083b7b5c760cc7 *436c020000008b43f8ffe0c747fc447805088b460489078d47fc894500b8ac9c0508ebe5909090 *0300020000000000110000008b450083c50483ec0c50e80900000083c41089c6ff6500905589e5 *57565383ec188b5d0853e8ca22ffff83c41089c185c0754189debffc930708b90e000000fcf3a6 *0f97c20f92c0b9509a040838c2742389debf0a940708b917000000fcf3a60f97c20f92c0b9b097 *040838c27405b90000000089c88d65f45b5e5f5dc39090b834790508ffe090833de42808080075 *6ec705e428080801000000c74500fcb1050883c504c74500147b050883c504c745009cb1050883 *c504c7450014ad050883c504c74500cc86050883c504c74500189b050883c504c745006c9d0508 *83c504c745001898050883c504c74500b499050883c504c74500d891050883c50483ed04ff6500 *909090b8bc790508ffe090833de8280808007528c705e828080801000000c7450028a0050883c5 *04c74500d891050883c504c74500e883050883c50483ed04ff650090b8fc790508ffe090833dec *28080800751ec705ec28080801000000c7450014ad050883c504c7450014b1050883c50483ed04 *ff6500909090b8347a0508ffe090833df0280808007532c705f028080801000000c74500749905 *0883c504c745003884050883c504c745007091050883c504c74500b081050883c50483ed04ff65 *00909090b8807a0508ffe090833df4280808007528c705f428080801000000c745007ca2050883 *c504c74500d891050883c504c7450074a0050883c50483ed04ff650090b8c07a0508ffe090833d *f828080800753cc705f828080801000000c74500fca9050883c504c7450074a0050883c504c745 *00c8a1050883c504c745006ca3050883c504c74500d891050883c50483ed04ff650090b8147b05 *08ffe090833dfc280808007546c705fc28080801000000c745007499050883c504c7450074a005 *0883c504c745006ca3050883c504c74500d891050883c504c74500e883050883c504c745003884 *050883c50483ed04ff65009090901600030000000000110000008d45e43b4354730abe080f0808 *8b43fcffe08b45088945f88b750483ed08b87c7c0508ebeb8d7600be280f080883c5188b4500ff *60f089f68b751483c508e9c10000009083c7083b7b5c760cc7436c020000008b43f8ffe0c747fc *c88305088b450489078d77fc83c51c8b45008b40ecebe489f68b750c83c508e98500000090ec7b *0508bc7b0508b07b050800000000060400002500000006000000240000008b45188945fc8b4508 *8945f88b7608c74500107c050883ed0ce9ee29010089f68b46088945008b46108945088b460c89 *45108b46048945148b750cc745fc187c050883ed04ff2690387c0508a07b050800000000450300 *0025000000c300000024000000c745fc747c050883ed04ff269c100808a4100808887c05081600 *0300000000001100030083c7083b7b5c7611c7436c02000000be0c0f08088b43fcffe0c747fc34 *7e05088b450089078d77fc83c504b8347e0508ebe589f6be1c0f080883c5108b4500ff60f089f6 *8b45048945188b450c8945108b451489450c89751483c50ce98f3800008d7600e47c0508e47c05 *08887c050846050000250001008b45188945fc8b45088945f88b7510c74500187d050883ed08e9 *fe00000089f68b45048945188b450889451483c514e94c3f00008975148b450889450c8b451089 *45088b450489451083c508e9273800008d76004c7d05084c7d0508887c05088502000025000100 *8b45188945008b45048945fc8b7510c74504807d050883ed04e99600000089f6807d0508387d05 *08187d0508887c05080600000025000300887c050806000000240003008b45148945fc8b451889 *45f88b7608c74500b87d050883ed0ce94228010089f68b46108945f88b460c8945fc8b46088945 *008b55088b460489450889d6c745f4c47d050883ed0cff268d7600e47d0508d47c0508887c0508 *0300000025000300887c05080b000200010000000c0003008d45e03b435473058b43fcffe08975 *fc8b55008b460489450089d6c745f8247e050883ed088b06ebe29090909c100808607e05081800 *0500000000001100010083c7083b7b5c7611c7436c02000000be140f08088b43fcffe0c747fc68 *8005088b450089078d77fc83c504b868800508ebe589f683c510e9904000008b45048945208975 *1c8b45188945148b450c89451883c514e9c33600008d7600b07e0508b07e0508607e0508481b00 *00250001008b45248945008b45208945fc8b450c8945f88b45188945f48b7514c74504e47e0508 *83ed0ce95a01000089f683c7283b7b5c760cc7436c0a0000008b43f8ffe0c747dc94fe06088b45 *188947e08b45108947e48b45248947e8c747ecac8005088b45208947f08d47dc8947f48b450c89 *47f88b45088947fc8b450489078d77ec83c5288b45008b40ecebb39089751c8b45048945188b45 *148945108b450889451483c510e9033600008d7600707f0508707f0508607e0508870d00002500 *01008b45248945048b45208945008b45088945fc8b45188945f88b7514c74508a47f050883ed08 *e99a00000089f6a47f0508107f0508e47e0508607e05082900000025000100607e050829000000 *240001008b451c8945fc8b45208945f88b7608c74500e87f050883ed0ce91226010089f68b4614 *8945f48b46108945f88b460c8945fc8b46088945008b550c8b460489450c89d6c745f0f47f0508 *83ed10ff269014800508a87e0508607e05080500000025000100607e050817000400010000000c *0001008d45dc3b435473058b43fcffe08975fc8b55048b460489450489d6c745f85880050883ed *088b06ebe2909090000000000a0000008b4500ff60f0909004000100010001008b4500ff60ec89 *f604000100090001008b4500ff60ec9090b8cc800508ffe090833d00290808007528c705002908 *0801000000c74500e883050883c504c74500d891050883c504c7450014ad050883c50483ed04ff *6500900b00020000000000110000008b750483c504e93915010090b824810508ffe090833d0429 *080800753cc7050429080801000000c745006c9d050883c504c7450050aa050883c504c745001c *a3050883c504c74500d891050883c504c7450014ad050883c50483ed04ff650090b878810508ff *e090833d0829080800751ec7050829080801000000c74500d891050883c504c74500fc9d050883 *c50483ed04ff6500909090b8b0810508ffe090833d0c29080800751ec7050c29080801000000c7 *450014ad050883c504c745007091050883c50483ed04ff65009090900b00020000000000110000 *008d45f43b4354720883c70c3b7b5c7611c7436c03000000be240f08088b43fcffe0c747f82483 *05088b45008947fc8d47f88945f88b750483ed08b8f4820508ebde8d76008b750483c510e91914 *01009002000000240000008b45088b55048955088945048b760ce9cc2301000300000012000000 *8d45ec3b435473058b43f8ffe08d45f8c700a00007088970048b460c8945f08b46088945f48b76 *04c745ec4482050883ed148b06ebd589f683c7103b7b5c760cc7436c040000008b43f8ffe0c747 *f4608205088b450c8947f88b45048947fc8b460489078d47f48945048b760883c504b8f4820508 *ebd39098820508308205080000000044010000250000004200000024000000c745fcec82050883 *ed04ff260000000024000000c74500d41008088b762483ed04e99e1e010089f601000100130000 *008d45f03b435473058b43f8ffe08d45f8c700a00007088970048b7604c745f40883050883ed0c *8b06ebe19090b858830508ffe090833d10290808007546c7051029080801000000c7450028a005 *0883c504c74500d891050883c504c745007ca2050883c504c7450074a0050883c504c74500c07a *050883c504c74500e883050883c50483ed04ff6500909090000000000a0000008b4500ff60f090 *9001000000020001008b4500ff60ec89f601000000090001008b4500ff60ec9090b8e8830508ff *e090833d1429080800751ec7051429080801000000c745007499050883c504c74500d891050883 *c50483ed04ff65009090900200000004000000ff6500900200000009000000ff650090b8388405 *08ffe090833d18290808000f85a0000000c7051829080801000000c745006ca1050883c504c745 *00e4a3050883c504c745006c9d050883c504c745007ca2050883c504c74500ec99050883c504c7 *450074a0050883c504c745007499050883c504c745006ca3050883c504c74500d891050883c504 *c745005883050883c504c74500f484050883c504c745007881050883c504c745004cb5050883c5 *04c74500e883050883c504c74500dcc1050883c50483ed04ff650090b8f4840508ffe090833d1c *290808007514c7051c29080801000000c7450034ab050883c50483ed04ff6500900b0003000000 *0000110000008d45f03b4354730abe2c0f08088b43fcffe0c745f8000000008b45008945f4c745 *fcb486050883ed0cb8649f0508ebe08b55088b450cc6041000be9c0f080883c510ff65008d7600 *84010000240000000fbe4e048b550c8b4510880c10ff45108b450489450c8b750883c50ceb3a89 *f68b46088945008b7604c745fc7485050883ed04ff268d7600948505085485050800000000c300 *0000250000000a000300000001000d0000008d45f43b435473058b43fcffe08975fc8b55008b46 *0489450089d6c745f8c085050883ed088b06ebe28d7600420000002400000083c50cff650089f6 *230000002400000083c7083b7b5c7615c7436c02000000c74320fe000000b84ccf0608ffe0c747 *fc98a105088b450489078d47fc8945008b750cc745040086050883ed04b8c8a30608ebd8900200 *00002400000083c7083b7b5c7615c7436c02000000c74320fe000000b84ccf0608ffe08d5608c7 *47fccc8505088917c745f8000000008b45048945f48955008975048d77fcc745fc1086050883ed *0cb8cc850508ebcb020000002400000046c745005c860508e9234e0100909090b8cc860508ffe0 *90833d2029080800756ec7052029080801000000c745006c9d050883c504c74500d891050883c5 *04c7450074a0050883c504c745007ca2050883c504c7450028a0050883c504c74500f484050883 *c504c74500e090050883c504c745005490050883c504c74500d488050883c504c74500f08b0508 *83c50483ed04ff65009090900300020000000000110000008d45f83b4354720883c7083b7b5c76 *11c7436c02000000be300f08088b43fcffe0c747fcac8705088b45008907c745f8000000008d77 *fcc745fcc088050883ed08b8ac870508ebd703000200000001000d00000083c7083b7b5c760cc7 *436c020000008b43fcffe08b56048b4500803c10007517c747fc3c9705088b450089078d77fc83 *c5048b4500ebdbff450083ef08b8ac870508ebce210000002400000083c7143b7b5c761cc7436c *05000000c74504f8870508c74320fe000100b84ccf0608ffe08b55088b45000fbe0410837d0000 *7e2f8b55004a25ff000000c747f0249705088947f4c747f8649705088d47f08947fc8937895500 *8d77f8b8f8870508ebbf25ff000000c747f0249705088947f4c747f8649705088d47f08947fc89 *378d77f883c50c8b4500eb962100000024000000837e04007e168b4604488945fcbe940f080883 *ed04b8f8870508ffe0be940f080883c5088b4500ebf18d76002100000024000000c745008c8805 *08ff26909090b8d4880508ffe090833d24290808000f8582000000c7052429080801000000c745 *00c8a1050883c504c7450074a0050883c504c745006ca3050883c504c745007ca2050883c504c7 *45008c98050883c504c74500ec99050883c504c74500d891050883c504c745003884050883c504 *c74500f484050883c504c745007881050883c504c74500807a050883c504c74500e090050883c5 *0483ed04ff6500909090b874890508ffe090833d28290808007550c7052829080801000000c745 *007499050883c504c74500909a050883c504c7450074a0050883c504c745006c9d050883c504c7 *4500d891050883c504c74500e090050883c504c745005490050883c50483ed04ff650090b8dc89 *0508ffe090833d2c290808007578c7052c29080801000000c74500d891050883c504c7450074a0 *050883c504c745007499050883c504c745006ca1050883c504c745007ca2050883c504c745006c *9d050883c504c745007489050883c504c74500e090050883c504c74500d488050883c504c74500 *5490050883c504c74500e883050883c50483ed04ff650090ac0f0808648a050817000500000000 *00110001008d45e83b4354730abe340f08088b43fcffe08b7500c74500c08b05088b06ebf04200 *00002400000083c50cff650089f6240000002400000083c7083b7b5c7615c7436c02000000c743 *20fe000000b84ccf0608ffe0c747fc3c9705088b450489078b45088945048d47fc8945008b7510 *c74508a08a050883ed04b88ca80608ebd28d7600450000002400000083c7083b7b5c7615c7436c *02000000c74320fe000000b84ccf0608ffe08d4608c747fc98a105088907c74500e89706088b45 *108945fc8d47fc8945f88b450c8945f48b45048945f08d47fc89450c897510c74504b08a050883 *ed10b828c40508ebb989f645000000240000008b4508400faf460489c6c74500048b0508e95e49 *010089f6648a05080500000024000100c745fcac0f08088b450889750889c6c74500708b050883 *ed08e90616010089f6648a05080300000024000100c745f4000000008b45088945f08975fc8b46 *04894500c745f8948b050883ed10e97f130000909090b8f08b0508ffe090833d3029080800756e *c7053029080801000000c745007499050883c504c74500d891050883c504c7450028a0050883c5 *04c7450074a0050883c504c745006c9d050883c504c74500908e050883c504c74500dc89050883 *c504c74500e090050883c504c745005490050883c504c74500bc79050883c50483ed04ff650090 *90901400040000000000110000008d45e83b4354730abe3c0f08088b43fcffe0837d04007e178b *450448c745f8940f080889c683ed08b8bc8d0508ebe1be940f080883c50c8b4500ebd445010000 *2400000083c70c3b7b5c7615c7436c03000000c74320fe000000b84ccf0608ffe0c747f8649705 *088977fc8b450489078b55104a8d47f889450489d683c504b8bc8d0508ebd989f6450100002400 *000083c7083b7b5c760cc7436c020000008b43f8ffe0c747fc3c9705088b451089078d47fc8945 *fc8b45148945f88b760cc74500c08c050883ed0cb88ca80608ebd2c50300002400000083c70c3b *7b5c7615c7436c03000000c74320fe000000b84ccf0608ffe0c747f8649705088977fc8b450489 *078d77f883c5188b4500ebe490c501000024000000c745fce01008088b45148945f88b760cc745 *00548d050883ed0ce9d91a010090430000002400000085f675118b7508c745fc948d050883ed04 *8b06ffe089750c8b7508c745fc0c8d0508ebeab8e88d0508ffe090833d34290808000f858c0000 *00c7053429080801000000c745005490050883c504c74500e090050883c504c745004cc6050883 *c504c74500f08b050883c504c74500dc89050883c504c745005883050883c504c74500bc790508 *83c504c7450074a0050883c504c7450028a0050883c504c745006c9d050883c504c74500b49905 *0883c504c745007499050883c504c74500d891050883c50483ed04ff650090b8908e0508ffe090 *833d38290808007564c7053829080801000000c7450074a0050883c504c74500d891050883c504 *c745007ca2050883c504c745006c9d050883c504c74500dc89050883c504c74500d488050883c5 *04c74500e090050883c504c745005490050883c504c74500e883050883c50483ed04ff65009016 *00030000000000110000008d45fc3b4354730abe400f08088b43fcffe08b7504c745fc4c900508 *83ed048b06ebed908b750cc7450c940f080883c508e97212010089f604000100020000000e0000 *008d45fc3b4354720883c70c3b7b5c760cc7436c030000008b43fcffe0c747f8649705088b4604 *8947fc8b450089078d47f88945008b760883ed04b8b8a10608ebd98d760004000100030000000b *0000008d45f83b4354720883c70c3b7b5c760cc7436c030000008b43fcffe0c747f8548f05088b *45008947fc8b460c89078d47f88945008b46088945fc8b46048945f883ed08b8108f0508ebd089 *f683c7103b7b5c760cc7436c040000008b43f8ffe0c747f4a48f05088b45048947f88b46088947 *fc8b450c89078d47f489450c8b46048945088b750483c504b824a60608ebcd8d7600f08f050834 *8f0508000000004300000025000000b854900508ffe090833d3c29080800755ac7053c29080801 *000000c745006ca3050883c504c7450098ac050883c504c7450028a0050883c504c7450074a005 *0883c504c74500d891050883c504c745007499050883c504c745006c9d050883c504c745006ca1 *050883c50483ed04ff65009090900800000001000000ff6500900800000009000000ff650090b8 *e0900508ffe090833d40290808007578c7054029080801000000c745006c9d050883c504c74500 *d891050883c504c745007499050883c504c74500ec99050883c504c745006ca1050883c504c745 *00e4a3050883c504c7450034ab050883c504c74500fc9d050883c504c7450074a0050883c504c7 *450004a5050883c504c74500bc79050883c50483ed04ff650090b870910508ffe090833d442908 *08007550c7054429080801000000c7450028a0050883c504c745006ca3050883c504c74500d891 *050883c504c74500dca2050883c504c7450074a0050883c504c745008c98050883c504c7450074 *99050883c50483ed04ff650090b8d8910508ffe090833d48290808007514c70548290808010000 *00c745007499050883c50483ed04ff650090bc0f080808110808fc91050800000200180003008d *45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e8 *61fb000083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f408110808be *bc0f080883ed10b8b8a10608ebbd90909003000100000000001100000083c7083b7b5c7611c743 *6c02000000be7c0f08088b43fcffe0c747fcf89205088b45008907c74500000000008d77fcb8f8 *920508ebe189f601000100160000008d45f43b435473058b43f8ffe08d45f8c700a00007088970 *048b4608408945f48b760483ed0cb8f8920508ebde8d760003000100000001000d00000083c720 *3b7b5c760cc7436c080000008b43fcffe08b56048b45008a141081e2ff00000085d27513be940f *080883c50483ef208b45008b40f0ebd8c747e4bc9205088977e88b45008947ecc747f024970508 *8957f4c747f8649705088d47f08947fc8d47e489078d77f883c5048b45008b40eceb9e12000300 *000000001100000083c7103b7b5c7611c7436c04000000be800f08088b43fcffe0c747f4049405 *088b45048947f88b45088947fc8b45008907c74508000000008d77f483c508b804940508ebd28d *760001000100160000008d45f43b435473058b43f8ffe08d45f8c700a00007088970048b460840 *8945f48b760483ed0cb804940508ebde8d760003000100020001000b0000008d45f83b43547208 *83c7143b7b5c760cc7436c050000008b43fcffe08b560c8b45008a141081e2ff00000085d2750d *8b760883ef14b854960608ebdec747f0c89305088977f48b45008947f8c747fc2497050889178d *47f08945008d47fc8945fc8b760483ed08b824a60608ebac909016000300000000001100000083 *c70c3b7b5c7611c7436c03000000be840f08088b43fcffe0c747f8289505088b45008947fc8b45 *0489078d77f883c508b828950508ebdf8b750483c50ce9910101009083c70c3b7b5c760cc7436c *030000008b43f8ffe0c747f858fe06088b450c8947fc8b460889078d47f889450c8b55088b4604 *89450889d683c504b824a60608ebd18d7600c4940508b894050800000000030000002500000004 *000100020000000e0000008d45f43b435473058b43fcffe08b46088945f88b46048945fc8b4500 *89750089c6c745f41c95050883ed0c8b06ebdc900b00020000000000110000008d45fc3b435473 *0abe880f08088b43fcffe08b7504c745fc4096050883ed048b06ebed90be940f080883c50c8b45 *00ff60f089f602000000150000008d45f03b435473058b43f8ffe08d45f8c700a0000708897004 *8b46088945f48b46048945f083ed10b864950508ebdc9083c7243b7b5c760cc7436c090000008b *43f8ffe0c747e0a09505088b45048947e48b46088947e8c747ec58fe06088b45048947f08b4604 *8947f4c747f8649705088d47ec8947fc8d47e089078d77f883c50c8b45008b40ecebb889f6d095 *0508889505080000000042000000250000000b00020000000000110000008b7500c74500f49605 *08ff268b750483c508ff2602000000150000008d45f03b435473058b43f8ffe08d45f8c700a000 *07088970048b46088945f48b46048945f083ed10b84c960508ebdc9083c7183b7b5c760cc7436c *060000008b43f8ffe0c747ec689605088b46088947f08b45048947f4c747f8649705088b460489 *47fc8d47ec89078d77f883c5088b45008b40ecebcb909896050858960508000000000100000025 *000000000000000a0000008b4500ff60f09090000000000a0001008b4500ff60ec89f6900f0808 *980f08080000010003000000ff650090000001000a000000ff6500900000010003000000ff6500 *90000001000a000000ff650090000000000a0000008b4500ff60f0909002000000040001008b45 *00ff60ec89f602000000090001008b4500ff60ec9090000000000a0000008b4500ff60f0909000 *0000000a0001008b4500ff60ec9090000000000a0002008b4500ff60e889f6a00f0808a40f0808 *a80f08080200000004000000ff6500900200000009000000ff650090000000000a000000ff6500 *909c0f08080800000001000000ff6500900800000009000000ff6500900200000004000000ff65 *00900200000009000000ff650090b818980508ffe090833d4c29080800755ac7054c2908080100 *0000c74500c8a0050883c504c745006ca1050883c504c74500b499050883c504c74500d8910508 *83c504c745007ca2050883c504c7450074a0050883c504c745006c9d050883c504c74500e88305 *0883c50483ed04ff6500909090b88c980508ffe090833d50290808007528c70550290808010000 *00c74500d891050883c504c745006cc2050883c504c745007499050883c50483ed04ff65009018 *110808c498050800000200180001008d45f43b4354720883c70c3b7b5c760cc7436c030000008b *43f8ffe0c747f808ee060883ec0c56e89df4000083c4108d47f8894604c70624ed06088d55f8c7 *02a0000708894204c745f41811080883ed0cb8f89b0508ebc204000100000000001100000083c7 *083b7b5c7611c7436c02000000bebc0f08088b43fcffe0c747fc309d05088b450089078d47fc89 *4500b8f89b0508ebe59090b874990508ffe090833d54290808007528c7055429080801000000c7 *450028a0050883c504c74500b499050883c504c74500d891050883c50483ed04ff650090b8b499 *0508ffe090833d5829080800751ec7055829080801000000c74500d891050883c504c745006c9d *050883c50483ed04ff6500909090b8ec990508ffe090833d5c29080800755ac7055c2908080100 *0000c745007ca2050883c504c745007091050883c504c7450074a0050883c504c745006ca30508 *83c504c745008c98050883c504c7450028a0050883c504c74500d891050883c504c74500e88305 *0883c50483ed04ff65009090900000020006000000ff650090000002000a000000ff6500900000 *010003000000ff650090000001000a000000ff650090b8909a0508ffe090833d6029080800756e *c7056029080801000000c745007499050883c504c745006ca3050883c504c745006ca1050883c5 *04c745006c9d050883c504c74500d891050883c504c7450028a0050883c504c745003884050883 *c504c74500e090050883c504c745005490050883c504c74500bc79050883c50483ed04ff650090 *9090b8189b0508ffe090833d64290808000f85be000000c7056429080801000000c745007ca205 *0883c504c745001898050883c504c745006ca3050883c504c7450074a0050883c504c745008c98 *050883c504c74500b499050883c504c745006c9d050883c504c7450028a0050883c504c74500c8 *a1050883c504c74500d891050883c504c745007091050883c504c7450028b2050883c504c74500 *9cb1050883c504c7450014c3050883c504c7450098c2050883c504c74500e883050883c504c745 *00807a050883c504c74500bc79050883c50483ed04ff6500909090040001000000000011000000 *8b750083c504e9fd280100900400020000000000110000008b7500c74500289c0508e99d390100 *90000000002400000083c7083b7b5c7615c7436c02000000c74320fe000000b84ccf0608ffe0c7 *47fc54a3050889378d77fc83c5048b4500ebea9090900400010000000000110000008d45fc3b43 *54730abee00f08088b43fcffe08b7500c74500989c050883ed04b8e8970608ebea89f600000000 *24000000e9b7f900009090900400010000000000110000008b7500e9a0f90000000000000a0007 *00ff6500900500000001000000ff6500900500000009000000ff650090000000000a0000008b45 *00ff60f09090000000000a0001008b4500ff60ec90900100000002000300ff6500900100000009 *000300ff650090000000000a000400ff650090000000000a000500ff6500900100000002000700 *ff6500900100000009000700ff6500900100000002000900ff6500900100000009000900ff6500 *90000000000a000b00ff650090b86c9d0508ffe090833d68290808007578c70568290808010000 *00c7450028a0050883c504c74500c8a1050883c504c745006ca3050883c504c74500e883050883 *c504c7450074a0050883c504c74500d891050883c504c745001ca3050883c504c745008c980508 *83c504c745007091050883c504c74500dca2050883c504c74500147b050883c50483ed04ff6500 *90b8fc9d0508ffe090833d6c29080800756ec7056c29080801000000c7450034ab050883c504c7 *45006ca3050883c504c745007091050883c504c74500c8a1050883c504c745007ca2050883c504 *c7450074a0050883c504c745008c98050883c504c74500d891050883c504c74500807a050883c5 *04c745007499050883c50483ed04ff65009090900b00020000000000110000008b7500c74500e4 *9e0508ff2621000000240000008b45043b460474253b46047c10bea80f080883c5088b45008b40 *e8ffe0bea00f080883c5088b45008b40f0ebeebea40f080883c5088b45008b40ecebde8d760001 *000000240000008b55048b460489450489d6c745009c9e0508ff260000010003000000ff650090 *000001000a000000ff6500900000010003000000ff650090000001000a000000ff650090000001 *0003000000ff650090000001000a000000ff6500900000020006000000ff650090000002000a00 *0000ff6500900a00020000000000110000008b7500c74500a09f0508ff268b750483c508ff6500 *8d7600ff45048b4608894500e9daffffff89f67c9f0508709f0508000000002100000025000000 *0400010000000000110000008d45fc3b4354730abe081008088b43fcffe08b45008945fcc74500 *940f080883ed04b8d8cb0508ebe790909044110808d89f05080400010000000000110001008b75 *00c7450020a00508ff26be4411080883c504ff2689f68b760883c504ff2604a00508f89f0508d8 *9f05080000000025000100b828a00508ffe090833d70290808007532c7057029080801000000c7 *4500e883050883c504c74500d891050883c504c745006cc2050883c504c745007499050883c504 *83ed04ff6500909090b874a00508ffe090833d7429080800753cc7057429080801000000c74500 *8c98050883c504c745006ca3050883c504c7450028a0050883c504c74500d891050883c504c745 *007499050883c50483ed04ff650090b8c8a00508ffe090833d78290808007546c7057829080801 *000000c7450074a0050883c504c745006ca1050883c504c74500dca2050883c504c7450028a005 *0883c504c74500d891050883c504c745007499050883c50483ed04ff6500909090040001000000 *0000110000008b7500c7450040a10508ff260000000024000000837e0400740d8b4604894500b8 *7c920508ffe0be940f080883c5048b45008b40f0ebee90b86ca10508ffe090833d7c2908080075 *14c7057c29080801000000c74500d891050883c50483ed04ff6500900000010003000000ff6500 *90000001000a000000ff6500900000010003000000ff650090000001000a000000ff650090b8c8 *a10508ffe090833d80290808000f8596000000c7058029080801000000c745007499050883c504 *c74500fca9050883c504c74500d891050883c504c745007091050883c504c745006ca3050883c5 *04c7450028a0050883c504c74500ec99050883c504c745007ca2050883c504c7450074a0050883 *c504c745004cb5050883c504c74500e883050883c504c7450078b3050883c504c7450004b40508 *83c504c7450038b3050883c50483ed04ff6500909090b87ca20508ffe090833d84290808007546 *c7058429080801000000c745008c98050883c504c745006ca3050883c504c7450028a0050883c5 *04c7450074a0050883c504c74500d891050883c504c745007499050883c50483ed04ff65009090 *90b8dca20508ffe090833d88290808007528c7058829080801000000c745006ca3050883c504c7 *450074a0050883c504c74500d891050883c50483ed04ff650090b81ca30508ffe090833d8c2908 *0800751ec7058c29080801000000c74500dca2050883c504c74500d891050883c50483ed04ff65 *009090900100000002000000ff6500900100000009000000ff650090b86ca30508ffe090833d90 *290808007546c7059029080801000000c745004cb5050883c504c7450028a0050883c504c74500 *e883050883c504c745008c98050883c504c74500d891050883c504c745007499050883c50483ed *04ff65009090900000010003000000ff650090000001000a000000ff650090b8e4a30508ffe090 *833d94290808007528c7059429080801000000c74500d891050883c504c745006c9d050883c504 *c745006ca1050883c50483ed04ff6500901600040000000000110000008b7500c7450078a40508 *ff2662000000240000008b4d088b55048b460489048abe9c0f080883c50cff6500902200000024 *0000008b55088b460489450889d6c745003ca40508ff2602000000240000008b55048b46048945 *0489d6c745005ca40508ff260b00030000000000110000008b7500c74500e8a40508ff26210000 *002400000083c7083b7b5c760cc7436c020000008b43f8ffe08b46048b55048b0482c747fc98a1 *050889078d77fc83c5088b4500ebe18d760001000000240000008b55048b460489450489d6c745 *00aca40508ff26b804a50508ffe090833d98290808007550c7059829080801000000c745006c9d *050883c504c74500d891050883c504c74500ec99050883c504c745006ca1050883c504c74500e4 *a3050883c504c7450034ab050883c504c74500fc9d050883c50483ed04ff650090b86ca50508ff *e090833d9c290808007550c7059c29080801000000c74500b499050883c504c745006c9d050883 *c504c745005490050883c504c74500cc86050883c504c745003479050883c504c7450014b10508 *83c504c7450014ad050883c50483ed04ff65009038100808cca505080400010000000000110001 *008d45fc3b4354730abe301008088b43fcffe0be3810080883ed04b8b8a10608ebef8d76008c10 *08086c1108083010080804a6050804000200000000001100070083c70c3b7b5c7611c7436c0300 *0000be381008088b43fcffe0c747f888a905088b45008947fcc74304301008088d77f883c504b8 *a4c40608ebdd89f6eb7289f60000000024000000be9c0f080883c504ff65009000000000240000 *00c7450068a6050883ec0c6a01e85eae00008d760001000000240000008b46048b50048b450489 *450089d6c745047ca6050883ed04e913fd00008d76005ca605080000000004a605080000010001 *0000000c0001008d45f43b435473058b43fcffe08b46048945fcbe8c100808c745f898a6050883 *ed088b06ebe589f6be7411080883c508e99b5901008d7600eb7289f60000000024000000be9c0f *080883c504ff6500900000000024000000c7450014a7050883ec0c6a01e8b2ad00008d76000100 *0000240000008b46048b50048b450489450089d6c7450428a7050883ed04e967fc00008d760008 *a705080000000004a6050800000100010000000c0001008d45f43b435473058b43fcffe08b4604 *8945fcbe8c100808c745f844a7050883ed088b06ebe589f683c7083b7b5c760cc7436c02000000 *8b43f8ffe0c747fc7ca705088b450489078d77fc83c508b8a0000708ebe58d7600a4a70508a4a7 *0508f8a6050804a605080100000025000300be6811080883c504e9a75801008d7600eb2e89f600 *00000024000000be9c0f080883c504ff650090fca7050800000000000000000000010000000100 *0d0000008d45fc3b435473058b43fcffe08b460489442408c745fc08a8050883ed048b43608968 *308b53688d470489420483ec086a0053e8d3b6000083c40489442410ff742414e851ac000083c4 *086a00ff742410e833b7000083c4108b43608b683005880000008943548b43688b780483ef0489 *c28b4018c1e00c030283e80489435c8b4500eb868d7600000000002400000083c7083b7b5c760c *c7436c020000008b43f8ffe0c747fc2ca805088b460489078d77fc83c504b8a0000708ebe58d76 *008b7604c74500bca80508ff26eca80508eca7050800000000000000002500000004a605080000 *0000240003008b06668b40fe25ffff000083f803740783f8087416eb208975008b7604c745fcec *a7050883ed048b06ffe08b7604c745000ca90508ebf083c7083b7b5c760cc7436c020000008b43 *f8ebdec747fcd0a6050889378d77fc83c504b8a0000708ebc88d760004a6050801000100130003 *008d45f03b435473058b43f8ffe08d45f8c700a00007088970048b7604c745f418a9050883ed0c *8b06ebe1909038100808b4a905080400020000000000110001008d45fc3b4354730abe40100808 *8b43fcffe08b45008945fcc745003810080883ed04b898ca0508ebe7909090b8fca90508ffe090 *833da029080800753cc705a029080801000000c7450034ab050883c504c7450074a0050883c504 *c74500fc9d050883c504c745007ca2050883c504c74500d891050883c50483ed04ff650090b850 *aa0508ffe090833da4290808007528c705a429080801000000c74500e883050883c504c745006c *9d050883c504c74500d891050883c50483ed04ff6500900b00030000000000110000008b7500c7 *4500a8aa0508ff2601000000240000008b4604894500e9ad250000900000010003000000ff6500 *90000001000a000000ff6500900000010003000000ff650090000001000a000000ff6500900000 *010003000000ff650090000001000a000000ff6500900000010003000000ff650090000001000a *000000ff6500900000020006000000ff650090000002000a000000ff650090b834ab0508ffe090 *833da8290808007564c705a829080801000000c745007091050883c504c745006ca3050883c504 *c74500c8a1050883c504c745007ca2050883c504c7450074a0050883c504c745008c98050883c5 *04c74500d891050883c504c74500807a050883c504c745007499050883c50483ed04ff65009054 *110808a8ab05080300010000000000110001008d45f83b4354720883c7083b7b5c7611c7436c02 *000000be781008088b43fcffe08b450085c0791389c6c7450050ac050883ef08b804d80608ebe4 *c747fcd0cd050889078d77fcc7450044ac0508b814ac0508ebca8d7600c74500940f08088975fc *c745f80000000083ed08e9972000008d760014ac050814ac0508a8ab05080000000025000100a8 *ab0508000000002400010083c70c3b7b5c7615c7436c03000000c74320ff000001b84ccf0608ff *e0c747f8f0cd05088b45008947fc89378d77f8c7450444ac050883c504b814ac0508ebdbb898ac *0508ffe090833dac290808007564c705ac29080801000000c7450038b3050883c504c7450004b4 *050883c504c74500e883050883c504c745006ca3050883c504c7450074a0050883c504c74500ec *99050883c504c745007ca2050883c504c74500c8a1050883c504c74500d891050883c50483ed04 *ff650090b814ad0508ffe090833db0290808000f85c8000000c705b029080801000000c745006c *a3050883c504c745007499050883c504c74500ec99050883c504c745007ca2050883c504c74500 *74a0050883c504c745008c98050883c504c74500c8a1050883c504c74500b499050883c504c745 *006c9d050883c504c74500d891050883c504c745006cc2050883c504c7450020b5050883c504c7 *4500e883050883c504c745004cb5050883c504c745005883050883c504c745008cb4050883c504 *c74500c4b3050883c504c7450014b1050883c504c74500bc79050883c50483ed04ff650090b8f8 *ad0508ffe090833db4290808007546c705b429080801000000c74500bc79050883c504c745006c *9d050883c504c745003479050883c504c7450014c3050883c504c7450098c2050883c504c74500 *14ad050883c50483ed04ff650090909090ae050800000000000000000000010000000000110000 *008d45f03b4354730abe801008088b43fcffe0be04000000c745fc68af050883ed04b8e4d40608 *ebe8e9d3ffffff8d760001000100130000008d45f03b435473058b43f8ffe08d45f8c700a00007 *088970048b46048945f48b46048945f083ed10b894d30508ebdc90020000002400000083c70c3b *7b5c7615c7436c03000000c74320fe000000b84ccf0608ffe0c747f8a0ae05088977fc8d77f883 *c50c8b4500ebe989f623000000240000008b45048b008b00894500c74504d8ae0508e92ed8ffff *89f601000000240000008d56088b4d0483c1088975008955fcc745f814af050883ed0883ec0852 *51e8cea3000083c410ff65008d76000000000024000000897500be04000000c745fc34af050883 *ed04e96525010090c0af050800000000000000000000010000000000110000008d45e83b435473 *0abe841008088b43fcffe0be04000000c745fc90b0050883ed04b8e4d40608ebe8e9d3ffffff8d *7600020000002400000083c50cff650089f602000000240000008975fcc74500d0af050883ed04 *e91e24000089f6640000002400000083c7083b7b5c7615c7436c02000000c74320ff000000b84c *cf0608ffe08b45048b108b45088b0083c004c747fc98a1050889074a8d47fc894504895500c745 *fc440f0808c74508e0af050883ed04b87c8c0508ebc68d760001000000240000008d56088b4d04 *83c1088975008955fc894df8c745f4fcaf050883ed0c83ec085251e8a3a2000083c410ff650000 *00000024000000897500be04000000c745fc5cb0050883ed04e93d24010090b8b0b00508ffe090 *833db829080800751ec705b829080801000000c7450014ad050883c504c745006c9d050883c504 *83ed04ff650090909004b105080000000000000000000001000000000011000000bed8110808e9 *0216010089f6e9efffffff909090b814b10508ffe090833dbc29080800756ec705bc2908080100 *0000c745006ca3050883c504c745009cb1050883c504c74500c8a1050883c504c7450074a00508 *83c504c74500b499050883c504c74500dca2050883c504c7450000cb050883c504c74500189b05 *0883c504c745006c9d050883c504c74500d891050883c50483ed04ff6500909090b89cb10508ff *e090833dc0290808007546c705c029080801000000c74500b499050883c504c745008cb4050883 *c504c745006c9d050883c504c74500d891050883c504c74500e883050883c504c745004cb50508 *83c50483ed04ff6500909090b8fcb10508ffe090833dc4290808007514c705c429080801000000 *c745006c9d050883c50483ed04ff650090b828b20508ffe090833dc829080800756ec705c82908 *0801000000c745007ca2050883c504c745006c9d050883c504c7450074a0050883c504c74500d8 *91050883c504c74500e883050883c504c74500807a050883c504c7450014c3050883c504c74500 *98c2050883c504c74500b0b2050883c504c74500bc79050883c50483ed04ff6500909090b8b0b2 *0508ffe090833dcc29080800756ec705cc29080801000000c74500c8a1050883c504c745006ca3 *050883c504c745007ca2050883c504c7450074a0050883c504c745008c98050883c504c74500d8 *91050883c504c74500807a050883c504c745003884050883c504c7450014c3050883c504c74500 *98c2050883c50483ed04ff6500909090b838b30508ffe090833dd0290808007528c705d0290808 *01000000c74500bc79050883c504c74500d891050883c504c74500fca9050883c50483ed04ff65 *0090b878b30508ffe090833dd4290808007532c705d429080801000000c7450074a0050883c504 *c74500d891050883c504c74500bc79050883c504c7450038b3050883c50483ed04ff6500909090 *b8c4b30508ffe090833dd8290808007528c705d829080801000000c7450078b3050883c504c745 *0004b4050883c504c74500c8a1050883c50483ed04ff650090b804b40508ffe090833ddc290808 *00756ec705dc29080801000000c74500e883050883c504c74500bc79050883c504c745008c9805 *0883c504c7450028a0050883c504c745007ca2050883c504c745006ca3050883c504c7450074a0 *050883c504c74500d891050883c504c7450038b3050883c504c74500fca9050883c50483ed04ff *6500909090b88cb40508ffe090833de0290808007514c705e029080801000000c745006ca30508 *83c50483ed04ff650090e4110808b0b4050800000200180001008d45f43b4354720883c70c3b7b *5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e8b1d8000083c4108d47f88946 *04c70624ed06088d55f8c702a0000708894204c745f4ec11080883ed0cb8689c0508ebc2b820b5 *0508ffe090833de4290808007514c705e429080801000000c74500d891050883c50483ed04ff65 *0090b84cb50508ffe090833de8290808007514c705e829080801000000c74500d891050883c504 *83ed04ff650090b4100808c4100808f41108080412080870b50508170004000000000011000f00 *8d45e03b4354730abe9c1008088b43fcffe08b7508c745fc74bc050883ed048b06ebed90bec410 *080883c514ff2689f68975188b450c8945148b451c8945108b450489451c83c510e9bf0900008d *7600c0b50508c0b50508000000004707000025000000be0412080883c520ff2689f683c7183b7b *5c760cc7436c060000008b43f8ffe08b551842c747ecac8005088b45108947f08b450c8947f48b *45048947f8c747fc1c0f080889178d77ec83c51c8b45008b40ecebca83c7183b7b5c760cc7436c *060000008b43f8ffe08b551842035614c747ecac8005088b45108947f08b450c8947f48b450489 *47f88977fc89178d77ec83c51c8b45008b40ecebcb9048b6050800b60508000000004606000025 *00000007000000240000008b45048945008b45188945fc8b450c8945f88b451c8945f489751cc7 *4504a4b6050883ed0ce9c608000089f6be00000000ebcd908b7614ebc78d7600e0b60508d8b605 *08000000000700000025000000897508c74500fcb60508ff26fcb60508fcb60508000000004700 *0000250000008b460c8945fc8b45188945f88b45148945f48b45108945f08b46088945108b4604 *8945148b4610894518c745001cb7050883ed10e9470800008d76001cb70508f4b505087cb50508 *47000000250001007cb5050828000000240001008b450401c039c67c118b750cc745046cb70508 *83c5048b06ffe08b450c8945008b451c8945fc8b45188945f88b45148945f4c74504f4b5050883 *ed0cb89cbf0508ebd590be00000000ebb5908b7614ebaf8d7600c4b70508bcb705087cb5050828 *000000250001007cb5050807000000240001008975008b7508c745fce0b7050883ed04ff2689f6 *be00000000ebe5908b7614ebdf8d760008b8050800b805087cb5050807000000250001008b4604 *8945108b46088945008b460c8945fc8b46108945f88b7610c745f424b8050883ed0cff269024b8 *0508b4b5050874b505080401000025000500beb410080883c514ff2689f683c7183b7b5c760cc7 *436c060000008b43f8ffe08b551c42c747ecac8005088b450c8947f08b45088947f48b45048947 *f8c747fc1c0f080889178d77ec83c5208b45008b40ecebca83c7183b7b5c760cc7436c06000000 *8b43f8ffe08b551c42035614c747ecac8005088b450c8947f08b45088947f48b45048947f88977 *fc89178d77ec83c5208b45008b40ecebcb90b4b805086cb8050800000000070f00002500000007 *000000240000008b451c8945fc8b45188945f88b45148945f48b45108945f089751cc7450010b9 *050883ed10e95a06000089f6be00000000ebcd908b7614ebc78d76004cb9050844b90508000000 *000700000025000000bef411080883c520ff2689f683c7183b7b5c760cc7436c060000008b43f8 *ffe08b551c42c747ecac8005088b450c8947f08b45088947f48b45048947f8c747fc1c0f080889 *178d77ec83c5208b45008b40ecebca83c7183b7b5c760cc7436c060000008b43f8ffe08b551c42 *035614c747ecac8005088b450c8947f08b45088947f48b45048947f88977fc89178d77ec83c520 *8b45008b40ecebcb90bcb9050874b9050800000000070f00002500000007000000240000008b45 *1c8945fc8b45188945f88b45148945f48b45108945f089751cc7450018ba050883ed10e9520500 *0089f6be00000000ebcd908b7614ebc78d760054ba05084cba0508000000000700000025000000 *897500c745fc70ba050883ed04ff269070ba050870ba05080000000006000000250000008b460c *8945008b45048945fc8b45088945f88b450c8945f48b46088945088b460489450c8b4610894518 *c7450494ba050883ed0ce9cf0400008d760094ba050868b9050878b50508070400002500010078 *b5050828000000240001008b450401c039c67c118b751cc74504e4ba050883c5048b06ffe08b75 *08c7450468b90508ebed89f6be00000000ebd1908b7614ebcb8d760020bb050818bb050878b505 *08280000002500010078b5050807000000240001008975008b7518c745fc3cbb050883ed04ff26 *89f6be00000000ebe5908b7614ebdf8d760064bb05085cbb050878b5050807000000250001008b *461089450c8b46048945008b46088945fc8b460c8945f88b760cc745f480bb050883ed0cff2690 *80bb050860b8050870b50508840000002500050070b505082500000024000f0089f003450483f8 *017e128b45048d048039c67f1e8d04b63945047f0a83c508b89cbf0508ffe08b7510c74504bcbb *0508eb0a8b7514c7450460b8050883c5048b06ebe190be00000000ebb5908b7614ebaf8d760014 *bc05080cbc050870b505082500000025000f0070b505080400000024000f008975008b7510c745 *fc30bc050883ed04ff2689f6be00000000ebe5908b7614ebdf8d760058bc050850bc050870b505 *080400000025000f00141208081c1208089c100808241208082c12080874bc05080b0002000000 *000011001f008d45f83b4354730abea41008088b43fcffe08b7500c7450034bf05088b06ebf08b *750483c508ff268b750483c50cff26000000002400000083c70c3b7b5c7615c7436c03000000c7 *4320fe000001b84ccf0608ffe0c747f8208405088977fc8b450089078d77f883c508b8a0000708 *ebe28d760078bc050801000100130001008d45f03b435473058b43f8ffe08d45f8c700a0000708 *8970048b46048945f0c745f4d0bc050883ed10b8c8d80508ebdb83c7183b7b5c760cc7436c0600 *00008b43f8ffe0c747ecf0f106088b45088947f0c747f85cf106088b45088947fc8975088d47ec *8945008d47f88945fc83ed04b890b50508ebcb9048bd050848bd05087cbc050802000000250001 *00000000002400000083c70c3b7b5c7615c7436c03000000c74320fe000001b84ccf0608ffe0c7 *47f8208405088977fc8b450089078d77f883c508b8a0000708ebe28d760074bc05080100010013 *0001008d45f03b435473058b43f8ffe08d45f8c700a00007088970048b46048945f0c745f4acbd *050883ed10b824d80508ebdb83c7183b7b5c760cc7436c060000008b43f8ffe0c747ecf0f10608 *8b45048947f0c747f85cf106088b45048947fc8975048d47ec8945008d47f88945fc83ed04b890 *b50508ebcb9024be050824be05087cbc0508020000002500010083c70c3b7b5c760cc7436c0300 *00008b43f8ffe08b46143b45087f2dc747f8f4bd05088b45048947fc8b45048945fc8d47f88945 *04897508c7450080be050883ed04b850da0508ebc9c747f818bd05088977fc8975fc8d47f88945 *08c74500a4bd050883ed04b870d90508eba58d760080be0508c0bc050874bc0508420000002500 *1f008975008b55048b461489450489d6c745fc04bf050883ed04ff2689f604bf0508b8bc050874 *bc05080100000025001f000b000200000000001100000083c7183b7b5c7611c7436c06000000be *ac1008088b43fcffe0c747ecac8005088b45008947f08b45048947f4c747f81c0f0808c747fc1c *0f0808c707010000008d77ec83c5088b45008b40ecebc990901700040000000000110000008d45 *fc3b4354730abeb01008088b43fcffe08b7508c745fca4c0050883ed048b06ebed9083c7183b7b *5c760cc7436c060000008b43f8ffe08b551042c747ecac8005088b45048947f08b45088947f48b *450c8947f8c747fc1c0f080889178d77ec83c5148b45008b40ecebca83c7183b7b5c760cc7436c *060000008b43f8ffe08b551042035614c747ecac8005088b45048947f08b45088947f48b450c89 *47f88977fc89178d77ec83c5148b45008b40ecebcb9008c00508c0bf0508000000000401000025 *00000004000000240000008b451089751089c6c7450064c00508ff268d7600be00000000ebe590 *8b7614ebdf8d760088c0050880c00508000000000400000025000000446174612f46696e697465 *4d61702e68733a283631372c34292d283632302c3730297c636173650024110808ccc005080000 *0200180001008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee *060883ec0c56e895cc000083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c7 *45f4a4c00508be2411080883ed10b8a89f0608ebbd909090446174612f46696e6974654d61702e *68733a283631302c34292d283631332c3730297c63617365002411080864c10508000002001800 *01008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec *0c56e8fdcb000083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f43cc1 *0508be2411080883ed10b8a89f0608ebbd909090b8dcc10508ffe090833dec290808007578c705 *ec29080801000000c745007499050883c504c74500bc79050883c504c745006c9d050883c504c7 *45007ca2050883c504c7450074a0050883c504c745007881050883c504c745005883050883c504 *c74500e883050883c504c74500807a050883c504c745006cc2050883c504c74500d891050883c5 *0483ed04ff650090b86cc20508ffe090833df0290808007514c705f029080801000000c74500d8 *91050883c50483ed04ff650090b898c20508ffe090833df4290808007564c705f4290808010000 *00c74500d0c3050883c504c74500fcb1050883c504c74500e090050883c504c7450098c6050883 *c504c745007489050883c504c745005490050883c504c74500f484050883c504c7450078810508 *83c504c74500807a050883c50483ed04ff650090b814c30508ffe090833df8290808007528c705 *f829080801000000c74500cc86050883c504c7450054c3050883c504c74500d488050883c50483 *ed04ff650090b854c30508ffe090833dfc290808007564c705fc29080801000000c7450074a005 *0883c504c74500d891050883c504c745006c9d050883c504c74500e883050883c504c745004cc6 *050883c504c74500cc86050883c504c74500d488050883c504c745005490050883c504c74500e0 *90050883c50483ed04ff650090b8d0c30508ffe090833d002a080800753cc705002a0808010000 *00c74500e88d050883c504c74500908e050883c504c745004cc6050883c504c74500f08b050883 *c504c74500dc89050883c50483ed04ff65009017000400000000001100000083c7103b7b5c7611 *c7436c04000000bedc1008088b43fcffe0c747f40cc605088b45008947f88b45088947fc8b4504 *89078b450c894508c7450c000000008d77f483c508b80cc60508ebcc90450300002400000083c7 *083b7b5c760cc7436c020000008b43f8ffe0c747fc3c9705088b451489078b45048945148d47fc *8945108b761083c508b850ab0608ebd98d76008b7510c745007cc40508ff26e99b0000008d7600 *85030000240000008b451040c74514e89706088945108b450889450c8b750483c50ce919010000 *90050100002400000083c7083b7b5c760cc7436c020000008b43f8ffe0c747fc3c9705088b4510 *8907c745fce89706088b450c8945f88d47fc8945f48b45148945f08b7610c74500d4c4050883ed *14b850ab0608ebc58d7600c4c40508000000000000000000000100050001000b0000008d45d43b *435473058b43fcffe08b46148945ec8b46108945f08b460c8945f48b46188945f88b46088945fc *8b7604c745e8fcc4050883ed188b06ebcf83c71c3b7b5c760cc7436c070000008b43f8ffe0c747 *e864c505088b45108947ec8b450c8947f08b46048947f48b46088947f88b45088947fc8b451489 *078d77e883c5188b4500ebc98d7600a0c50508b8c405080000000005020000250000000a000200 *030000000b0000008d45f03b435473058b43fcffe08b460c8945f48975f88b46088945fc8b5500 *8b460489450089d6c745f000c6050883ed108b06ebd6909090b84cc60508ffe090833d042a0808 *007532c705042a080801000000c7450074a0050883c504c745006c9d050883c504c74500d89105 *0883c504c745005490050883c50483ed04ff6500909090b898c60508ffe090833d082a08080075 *1ec705082a080801000000c74500e4a3050883c504c745007499050883c50483ed04ff65009090 *900b00030000000000110000008b7500c7450020c70508ff26210000002400000083c7083b7b5c *760cc7436c020000008b43f8ffe08b45040346048b00c747fc98a1050889078d77fc83c5088b45 *00ebe201000000240000008b55048b460489450489d6c74500e8c60508ff260b00020000000000 *1100000083c7143b7b5c7611c7436c05000000beec1008088b43fcffe0c747f08cc705088b4500 *8947f48b45048947f8c747fc00c805088d47f089078d77fc83c5088b4500ebd490020000001500 *00008d45f03b435473058b43f8ffe08d45f8c700a00007088970048b46088945f48b46048945f0 *83ed10b82cce0508ebdc9021000000240000008b55048b46048902be9c0f080883c508ff650090 *01000000240000008b55048b460489450489d6c74500c4c70508ff2604000200010000000c0000 *008d45fc3b435473058b43fcffe08b7604c745fce0c7050883ed048b06ebed9090040002000000 *0000110000008b7500c7450040c80508ff26000000002400000083c7083b7b5c760cc7436c0200 *00008b43f8ffe08b46048b00c747fc98a1050889078d77fc83c5048b4500ebe59090900b000300 *00000000110000008b7500c74500acc80508ff2621000000240000008b55048b46048902be9c0f *080883c508ff65009001000000240000008b55048b460489450489d6c7450090c80508ff260400 *01000000000011000000be0011080883c504e963ceffff909090040001000000000011000000be *0011080883c504e947ceffff9090905072656c7564652e6368723a2062616420617267756d656e *740089f600000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ff *e0c747f808ee060883ec0c56e855c4000083c4108d47f8894604c70624ed06088d55f8c702a000 *0708894204c745f4940f0808c745f0f8c8050883ed10b830de0508ebbb905c1208082c1108087c *c9050803000100000000001100030083c7143b7b5c7611c7436c05000000be241108088b43fcff *e0c747f0e0c905088b45008947f4c747fcbccb05088d47f089078d47fc894500b8f89b0508ebd8 *907cc9050800000200140003008d45f03b435473058b43f8ffe08d45f8c700a0000708897004c7 *45f42c1108088b46048945f083ed10b89cdf0508ebdb4e6f6e2d65786861757374697665207061 *747465726e7320696e009000000200180000008d45f43b4354720883c70c3b7b5c760cc7436c03 *0000008b43f8ffe0c747f808ee060883ec0c56e83dc3000083c4108d47f8894604c70624ed0608 *8d55f8c702a0000708894204c745f410ca050883ed0cb87c920508ebc20b000300000000001100 *000083c7083b7b5c7611c7436c02000000be3c1108088b43fcffe0c747fcdcca05088b45048907 *8d47fc8943048b750083c508b8a4c40608ebdf04000100010000000c0000008d45fc3b43547305 *8b43fcffe08b760483ed04b8b8a10608ebf19090b800cb0508ffe090833d0c2a0808000f85a000 *0000c7050c2a080801000000c7450028a0050883c504c74500b499050883c504c745006ca30508 *83c504c7450074a0050883c504c745007ca2050883c504c74500189b050883c504c745006c9d05 *0883c504c74500d891050883c504c745008c98050883c504c7450028b2050883c504c74500bc79 *050883c504c74500e883050883c504c745009cb1050883c504c7450014c3050883c504c7450098 *c2050883c50483ed04ff6500900100000002000c00ff6500900100000009000c00ff6500900b00 *020000000000110000008b7500c745003ccc0508ff268b750483c508ff2683c70c3b7b5c760cc7 *436c030000008b43f8ffe0c747f8649705088b46048947fc8b450489078d47f88945048b460889 *4500b8d8cb0508ebd98d7600eccb0508e4cb0508000000000100000025000000bc0f0808781308 *083ccc050800000200180003008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8 *ffe0c747f808ee060883ec0c56e821c1000083c4108d47f8894604c70624ed06088d55f8c702a0 *000708894204c745f478130808bebc0f080883ed10b8b8a10608ebbd909090a4130808b0cc0508 *1200030000000000110001008d45f83b4354730abe541108088b43fcffe0837d00067e1ec745fc *5c1108088b45048945f8c74500c8cd050883ed08b82cef0508ebda83c504b850f10508ebd083c5 *04e944240000b0cc050802000000150001008d45f03b4354720883c70c3b7b5c760cc7436c0300 *00008b43f8ffe08d45f8c700a0000708897004c747f864970508c747fc901308088b460889078d *47f88945f48b46048945f083ed10b850f10508ebc98d760083c7183b7b5c760cc7436c06000000 *8b43f8ffe0c747ec18cd05088b45048947f08b45088947f4c747f864970508c747fc981308088d *47ec89078d77f883c50c8b45008b40ecebca6ccd050804cd0508b0cc0508020000002500010000 *000100030000008b4500ff60f089f6000001000a0000008b4500ff60f090900100010005000100 *8b4500ff60ec89f601000100090001008b4500ff60ec90900900000001000000ff650090090000 *0009000000ff6500900b00020000000000110000008b7500c7450078ce0508ff26210000002400 *000083c7083b7b5c760cc7436c020000008b43f8ffe08b4504034604c747fc98a1050889078d77 *fc83c5088b4500ebe489f601000000240000008b55048b460489450489d6c7450040ce0508ff26 *28cf050800000000000000000000010000000000110000008d45fc3b4354730abe681108088b43 *fcffe0c745fc38cf050883ed048b43608968308b53688d470489420483ec086a0053e85d900000 *83c404894424146a00e8dd85000083c4086a00ff742414e8bf90000083c4108b43608b68300588 *0000008943548b43688b780483ef0489c28b4018c1e00c030283e80489435c8b4500eb8f8d7600 *e977ffffff8d76000000000024000000be9c0f080883c504ff650090ac0f0808c813080844cf05 *080400020000000000110003008d45fc3b4354730abe6c1108088b43fcffe0c74304c4130808be *c8130808c745fcfccf050883ed04b8a4c40608ebe190beac0f080883c504ff6500900000000024 *000000be9c0f080883c504ff650090c74500a0cf050883ec0c6a02e82e8500008d7600accf0508 *8ccf050844cf0508000000002500010044cf050801000000240001008b7504c74504d4cf050883 *c504ff269044cf05080100000024000100c74500e0cf0508e8ff860000ff6500906c1108084cd0 *0508000000000cd005080000010000000000110001008d45fc3b4354730abe741108088b43fcff *e0c745fc980f080883ed04b85ccf0508ebed90e9d7ffffff909090090003000000000011000000 *8d45f83b4354730abe7c1108088b43fcffe08b750083ed04b898d00508ebf19022000000240000 *008b7504eb0b8d7600220000002400000089f085f6750dbe9c0f080883c50c8b4500ffe0488b55 *088b54820c89450489d6c7450088d0050883ed04b8e8970608ebe0909090040001000000000011 *0000008d45fc3b4354730abe801108088b43fcffe08b45008945fcc745000cd1050883ed04b838 *f70508ebe78d7600000000002400000083c7083b7b5c760ec7436c02000000b838c90608ffe0c7 *47fc04ab050889378d77fc83c5048b4500ebea90900400010000000000110000008b7500c74500 *58d10508ff260000000024000000837e0400740dbedc13080883c504e999d9ffffbee4130808eb *f190900400010000000000110000008b750083c504ff260400010000000000110000008b7500c7 *4500a8d10508ff26000000002400000083c7083b7b5c760cc7436c020000008b43f8ffe08b4604 *f7d8c747fc04ab050889078d77fc83c5048b4500ebe59090900b00020000000000110000008b75 *00c7450030d20508ff26210000002400000083c7083b7b5c760cc7436c020000008b43f8ffe08b *45042b4604c747fc04ab050889078d77fc83c5088b4500ebe489f601000000240000008b55048b *460489450489d6c74500f8d10508ff260b00020000000000110000008b7500c745009cd20508ff *26210000002400000083c7083b7b5c760cc7436c020000008b43f8ffe08b45040faf4604c747fc *04ab050889078d77fc83c5088b4500ebe39001000000240000008b55048b460489450489d6c745 *0064d20508ff260b00020000000000110000008b7500c7450008d30508ff262100000024000000 *83c7083b7b5c760cc7436c020000008b43f8ffe08b4504034604c747fc04ab050889078d77fc83 *c5088b4500ebe489f601000000240000008b55048b460489450489d6c74500d0d20508ff26bc13 *0808bc1108081cd3050800000200180003008d45f43b4354720883c70c3b7b5c760cc7436c0300 *00008b43f8ffe0c747f808ee060883ec0c56e841ba000083c4108d47f8894604c70624ed06088d *55f8c702a0000708894204c745f4bc11080883ed0cb8f0f20508ebc20b00020000000000110000 *008d45fc3b4354730abed01108088b43fcffe08b7504c745fc04d4050883ed048b06ebed908b75 *0483c50cff260200000024000000837e042f75068b450889450483c504e9b8ffffff8b46088945 *088b7604c74500c8d30508ff2689f6dcd30508b8d3050800000000420000002500000004000200 *00000000110000008d45f83b4354730abed41108088b43fcffe08b7500c74500e8d405088b06eb *f0be940f080883c504ff650090010000002400000083c70c3b7b5c7615c7436c03000000c74320 *fe000000b84ccf0608ffe0c747f8649705088b45048947fc89378d77f883c5088b4500ebe49001 *000000240000008b45048945fc897504c7450044d4050883ed04e974ffffff0100000024000000 *8b46048945fcc7450084d4050883ed04e99fb2ffff8d76008b46088945008b7604c745fca4d405 *0883ed04ff268d7600bcd4050830d4050800000000000000002500000094120808001408082014 *080834140808e8d40508040002000000000011000f008d45f83b4354730abee41108088b43fcff *e0c7430430140808be34140808c745fcecd5050883ed04b8a4c40608ebe190e8d4050800000000 *240003008b06668b40fe25ffff000083f805740783f807740eeb11be0014080883c5048b06ffe0 *8b7604ebf4c74500101408088975fc83ed04b8b8e20508ebe5e8d4050801000100130003008d45 *f03b435473058b43f8ffe08d45f8c700a00007088970048b7604c745f444d5050883ed0c8b06eb *e189f6c74500fc1308088975fc83ed04e9a606000089f6b8d50508b8d505080000000000000000 *25000000e8d40508010000002400070083c70c3b7b5c7615c7436c03000000c74320fe000000b8 *4ccf0608ffe0c747f88cd505088b45048947fc8d47f8894500c745fc20140808c74504e0d50508 *83ed04b84c960508ebd3e411080878d605080000000034d605080000010000000000110001008d *45fc3b4354730abeec1108088b43fcffe0bee4110808c745fc88d6050883ed04b8bcd50608ebe8 *e9d3ffffff8d7600000000002400000083c7083b7b5c7615c7436c02000000c74320fe000000b8 *4ccf0608ffe0c747fc54a3050889378d77fc83c5048b4500ebea909090446174612f46696e6974 *654d61702e68733a283634302c34292d283634322c3738297c66756e6374696f6e20646f75626c *655f52008d760024110808f4d6050800000200180001008d45f03b4354720883c70c3b7b5c760c *c7436c030000008b43f8ffe0c747f808ee060883ec0c56e86db6000083c4108d47f8894604c706 *24ed06088d55f8c702a0000708894204c745f4bcd60508be2411080883ed10b8a89f0608ebbd90 *9090446174612f46696e6974654d61702e68733a283633332c34292d283633352c3738297c6675 *6e6374696f6e20646f75626c655f4c008d7600241108089cd7050800000200180001008d45f03b *4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e8c5b500 *0083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f464d70508be241108 *0883ed10b8a89f0608ebbd9090904c140808141208080cd805080400010000000000110003008d *45f83b4354730abe141208088b43fcffe08b7500c74500b0d805088b06ebf0be4c14080883c504 *ff2689f68b75088b450489450883c508ff65049089750883c508e9b9ffffff9060d8050850d805 *0810d8050802000000250001008b46088945fc8b46048945008b7610c745f880d8050883ed08ff *269080d8050844d805080cd8050800000000250003003c1408081c120808b0d805080400010000 *000000110003008d45f83b4354730abe1c1208088b43fcffe08b7500c7450054d905088b06ebf0 *be3c14080883c504ff2689f68b75088b450489450883c508ff65049089750883c508e9b9ffffff *9004d90508f4d80508b4d8050802000000250001008b46088945fc8b46048945008b760cc745f8 *24d9050883ed08ff269024d90508e8d80508b0d805080000000025000300441208089c10080824 *12080854d905080400010000000000110007008d45f03b4354730abe241208088b43fcffe08b75 *00c7450034da05088b06ebf0be4412080883c504ff2689f68b750483c510ff268b450c8945008b *450489450c8b4508894504897508e9d2dbffff89f6a4d90508a4d9050858d90508030000002500 *01008975fcc74500d4d9050883ed04e98affffff89f6d4d905089cd9050858d905080300000025 *0003008b46108945f88b46088945fc8b46048945008b760cc745f4fcd9050883ed0cff268d7600 *fcd9050890d9050854d905080000000025000700341208089c1008082c12080834da0508040001 *0000000000110007008d45f03b4354730abe2c1208088b43fcffe08b7500c7450014db05088b06 *ebf0be3412080883c504ff2689f68b750483c510ff268b55088b45048945088955048b450c8945 *0089750ce9f2daffff89f684da050884da050838da050803000000250001008975fcc74500b4da *050883ed04e98affffff89f6b4da05087cda050838da050803000000250003008b460c8945f88b *46088945fc8b46048945008b7610c745f4dcda050883ed0cff268d7600dcda050870da050834da *05080000000025000700446174612f46696e6974654d61702e68733a283737302c30292d283737 *312c3834297c66756e6374696f6e2064656c6574654d61780089f6241108084cdb050800000200 *180001008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee0608 *83ec0c56e815b2000083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f4 *14db0508be2411080883ed10b8a89f0608ebbd909090446174612f46696e6974654d61702e6873 *3a283736322c30292d283736332c3834297c66756e6374696f6e2064656c6574654d696e0089f6 *24110808f4db050800000200180001008d45f03b4354720883c70c3b7b5c760cc7436c03000000 *8b43f8ffe0c747f808ee060883ec0c56e86db1000083c4108d47f8894604c70624ed06088d55f8 *c702a0000708894204c745f4bcdb0508be2411080883ed10b8a89f0608ebbd9090900b00030000 *000000110000008d45ec3b4354730abe541208088b43fcffe0c745f8000000008b45008945f4c7 *45fc10de050883ed0cb8649f0508ebe0be9c0f080883c510ff65009084010000240000000fbe4e *048b550c8b4510880c10ff45108b450489450c8b750883c50ceb3a89f68b46088945008b7604c7 *45fcb4dc050883ed04ff268d7600d4dc0508a0dc050800000000c3000000250000000a00030000 *0001000d0000008d45f43b435473058b43fcffe08975fc8b55008b460489450089d6c745f800dd *050883ed088b06ebe28d7600420000002400000083c50cff650089f6640000002400000083c71c *3b7b5c7615c7436c07000000c74320fe000000b84ccf0608ffe0c747e83c9705088b45088947ec *c747f098a105088b45048947f4c747f8208405088d47f08947fc8d47e889078d47f88945048b75 *10c7450840dd0508b8c8a30608ebbb230000002400000083c7083b7b5c7615c7436c02000000c7 *4320fe000000b84ccf0608ffe08d5608c747fc0cdd05088917c745f8000000008b45088945f489 *55008975088d77fcc745fc50dd050883ed0cb80cdd0508ebcb0200000024000000897500c745fc *b8dd050883ed04e9c2f60000909009000200000000001100000083c70c3b7b5c7611c7436c0300 *0000be581208088b43fcffe0c747f8b4de05088b45048947fc8b45008907c74504000000008d77 *f883c504b8b4de0508ebd89001000100160000008d45f43b435473058b43f8ffe08d45f8c700a0 *0007088970048b4608408945f48b760483ed0cb8b4de0508ebde8d760003000100010001000f00 *000083c7203b7b5c760cc7436c080000008b43fcffe08b56088b45008a141081e2ff00000085d2 *750d8b760483c50483ef208b06ebdec747e478de05088977e88b45008947ecc747f02497050889 *57f4c747f8649705088d47f08947fc8d47e489078d77f883c5048b45008b40eceba490903a2000 *9000000200180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747 *f808ee060883ec0c56e841ae000083c4108d47f8894604c70624ed06088d55f8c702a000070889 *4204c745f424df050883ed0cb87c920508ebc25c12080888df0508090002000000000011000100 *8d45f43b4354730abe6c1208088b43fcffe08b45008945fcc74500f4e1050883ed04b830fd0508 *ebe78d760001000100130000008d45f03b435473058b43f8ffe08d45f8c700a0000708897004c7 *45f4841208088b46048945f083ed10b84c960508ebdb02000000150000008d45f03b4354720883 *c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700a0000708897004c747f8d0df05088b *46088947fc8d47f88945f48b46048945f083ed10b84c960508ebcf9088df050802000000150001 *008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700a000070889 *7004c747f808e005088b46048947fc8b460889078d47f88945f4c745f05c12080883ed10b84c96 *0508ebc98d760088df0508630000002400010083c70c3b7b5c761cc7436c03000000c74504c0e0 *0508c74320fe000001b84ccf0608ffe0c747f860e005088b45108947fc8b450089078d47f88945 *1089750c83c50cb84c960508ebd98d7600c745f8940f08088b750483ed08eba59088df05080300 *00002400010083c70c3b7b5c760cc7436c030000008b43f8ffe0837e047c7521c747f864970508 *c747fc681408088b450489078d47f88945fc8b750883ed04eb10c745fc940f08088b750883ed04 *83ef0cb8c0e00508ebc089f68b46088945008b7604c745fc28e1050883ed04ff268d76007ce105 *080ce1050888df0508020000002500010088df050801000000240001008975048b7500c74500a8 *e10508ff26908975fcc745f870140808c74500b4e1050883ed08e90b0c00008d7600c4e10508c4 *e1050888df050801000000250001005072656c7564652e756e646566696e65640089f600000200 *180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee0608 *83ec0c56e861ab000083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f4 *f4e1050883ed0cb87c920508ebc2a0120808b0120808c0120808d0120808e0120808f012080800 *13080810130808201308083013080840130808501308086013080870130808ac140808b4140808 *d8e205080b000200000000001100ffff8d45f03b4354730abe941208088b43fcffe08b7500c745 *000ce405088b06ebf068e2050810000000ffff000068e2050810000000ffff0000a0e205080100 *0000240001008b46148945008b46108945fc8b460c8945f88b46088945f48b46048945f083ed10 *e97e22000089f6a4e2050802000000150001008d45ec3b435473058b43f8ffe08d45f8c700a000 *07088970048b46048945f48b46088945f0c745ec6014080883ed14b8e40a0608ebd589f6c74500 *40130808e9d8b2ffffc7450050130808e9ccb2ffffc7450060130808e9c0b2ffff80e3050874e3 *050868e3050890e205080100000025000700c74500f0120808e99cb2ffffc7450000130808e990 *b2ffffc7450010130808e984b2ffffc7450020130808e978b2ffffc7450030130808e96cb2ffff *d4e30508c8e30508bce30508b0e30508a4e305087ce205080100000025001f00e4e20508010000 *002400ffff8b06668b40fe25ffff000083f80e7707ff24859c9407088b4604894500b84c960508 *ffe0c74500a0120808ebf08b7604c74500fce20508eb7383c70c3b7b5c760cc7436c030000008b *43f8ebd5c747f830e305088b45048947fc8b460489078d47f8894504c74500b0120808ebafc745 *00c0120808eba6c74500d0120808eb9dc74500e0120808eb948b7604c74500a4e30508eb178b46 *04894500b8c4ea0508eb808b7604c7450000e405088b06e96fffffff90000000000a0000008b45 *00ff60f090900100000002000800ff6500900100000009000800ff6500903c3c6c6f6f703e3e00 *8d760000000200180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0 *c747f808ee060883ec0c56e875a8000083c4108d47f8894604c70624ed06088d55f8c702a00007 *08894204c745f4e8e4050883ed0cb87c920508ebc2657869743a20009000000200180000008d45 *f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e80d *a8000083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f454e5050883ed *0cb87c920508ebc2756e6b6e6f776e20657863657074696f6e0089f600000200180000008d45f4 *3b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e899a7 *000083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f4bce5050883ed0c *b87c920508ebc23c3c646561646c6f636b3e3e008d760000000200180000008d45f43b43547208 *83c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e829a7000083c410 *8d47f8894604c70624ed06088d55f8c702a0000708894204c745f430e6050883ed0cb87c920508 *ebc274687265616420626c6f636b656420696e646566696e6974656c790000000200180000008d *45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e8 *ada6000083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f4a0e6050883 *ed0cb87c920508ebc261726974686d65746963206f766572666c6f770000000200180000008d45 *f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e839 *a6000083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f41ce7050883ed *0cb87c920508ebc261726974686d6574696320756e646572666c6f77008d760000000200180000 *008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c *56e8c1a5000083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f490e705 *0883ed0cb87c920508ebc26c6f7373206f6620707265636973696f6e0089f60000020018000000 *8d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56 *e84da5000083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f408e80508 *83ed0cb87c920508ebc2646976696465206279207a65726f009000000200180000008d45f43b43 *54720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e8dda40000 *83c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f47ce8050883ed0cb87c *920508ebc264656e6f726d616c008d760000000200180000008d45f43b4354720883c70c3b7b5c *760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e871a4000083c4108d47f8894604 *c70624ed06088d55f8c702a0000708894204c745f4ece8050883ed0cb87c920508ebc273746163 *6b206f766572666c6f77009000000200180000008d45f43b4354720883c70c3b7b5c760cc7436c *030000008b43f8ffe0c747f808ee060883ec0c56e801a4000083c4108d47f8894604c70624ed06 *088d55f8c702a0000708894204c745f458e9050883ed0cb87c920508ebc268656170206f766572 *666c6f770089f600000200180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b *43f8ffe0c747f808ee060883ec0c56e891a3000083c4108d47f8894604c70624ed06088d55f8c7 *02a0000708894204c745f4c8e9050883ed0cb87c920508ebc2746872656164206b696c6c656400 *89f600000200180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c7 *47f808ee060883ec0c56e821a3000083c4108d47f8894604c70624ed06088d55f8c702a0000708 *894204c745f438ea050883ed0cb87c920508ebc2c41408080c1508081c150808a8ea05080b0002 *0000000000110007008b7500c74500ecec0508ff268b750483c508ff2602000000150000008d45 *f03b435473058b43f8ffe08d45f8c700a00007088970048b46048945f48b46088945f083ed10b8 *4c960508ebdc9083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8e0ea05088b45048947 *fc89378d47f8894504c74500c4140808b84c960508ebdb9010eb0508d0ea0508a8ea0508010000 *0025000100a8ea050802000000150001008d45f03b435473058b43f8ffe08d45f8c700a0000708 *8970048b46048945f48b7608c745f05ceb050883ed108b06ebdb83c70c3b7b5c760cc7436c0300 *00008b43f8ffe0c747f868eb05088b45048947fc8b460489078d47f8894504c745000c150808b8 *4c960508ebd889f68b750483c508ff2602000000150000008d45f03b435473058b43f8ffe08d45 *f8c700a00007088970048b46088945f48b46048945f083ed10b84c960508ebdc9083c70c3b7b5c *760cc7436c030000008b43f8ffe0c747f8e4eb05088977fc8b450489078d47f8894504c74500c4 *140808b84c960508ebdb9014ec0508d4eb0508a8ea05080100000025000100a8ea050802000000 *150001008d45f03b435473058b43f8ffe08d45f8c700a00007088970048b46088945f48b7604c7 *45f060ec050883ed108b06ebdb83c70c3b7b5c760cc7436c030000008b43f8ffe0c747f86cec05 *088b46048947fc8b450489078d47f8894504c745001c150808b84c960508ebd889f69cec050898 *eb0508a8ea050801000000250007004415080854150808ecec050800000200180003008d45f03b *4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e871a000 *0083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f454150808c745f044 *15080883ed10b84c960508ebbb900b00020000000000110000008d45fc3b4354730abe88130808 *8b43fcffe08b45008945fc8b4504894500c74504a4ed050883ed04b8e8ed0508ebe19000000000 *2400000083c70c3b7b5c7615c7436c03000000c74320fe000001b84ccf0608ffe0c747f8208405 *088977fc8b450089078d77f883c5088b4500ebe4900b00020000000000110000008d45ec3b4354 *730abe8c1308088b43fcffe08b7504c745fc20ef050883ed048b06ebed90c74508940f0808be94 *0f080883c508ff650489f68b4504894510be940f080883c510ff65048d76000200000015000000 *8d45f03b435473058b43f8ffe08d45f8c700a00007088970048b46088945f48b46048945f083ed *10b86ced0508ebdc9083c7303b7b5c760cc7436c0c0000008b43f8ffe0c747d43cee05088b450c *8947d88b45088947dcc747e0f0f106088d47d48947e4c747ec5cf106088947f0c747f864970508 *8b45108947fc8d47ec89078d47e08945108d77f883c5108b4504ebb18d76006cee050820ee0508 *0000000004000000250000008b46048945f48975fc8b46088945008b46048945088b7504c745f8 *e4ee050883ed10e9adb2000090e4ee05080cee05080000000042000000250000000b0002000000 *0000110000008d45fc3b4354730abea01308088b43fcffe08b7500c74500d4f005088b06ebf08b *45043b46040f9cc025ff0000008944240883c5088b3485149705088b542408c1e2028b450029d0 *ff60f090000000002400000085f60f9fc025ff0000008944240883c5048b3485149705088b5424 *08c1e2028b450029d0ff60f0908b45048943088b46048943048b7608c7450480ef050883c504e9 *36f2000089f6a8ef05084cef05080000000021000000250000008b55048b460489450489d6c745 *00dcef0508ff26000000002400000089f0c1e81f8944240883c5048b3485149705088b542408c1 *e2028b450029d0ff60f089f68b46048943088b45048943048b7508c74508f8ef050883c508e9c2 *f1000089f6000000002400000089f0c1e81f8944240883c5048b3485149705088b542408c1e202 *8b450029d0ff60f089f68b460489430c8b46088943088b45048943048b7508c7450844f0050883 *c508e9c0f1000068f005081cf005080000000042000000250000008b46048945008b55048b4608 *89450489d6c745fca0f0050883ed04ff268d7600a0f00508dcef05080000000001000000250000 *0000000200180000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747 *f808ee060883ec0c56e8959c000083c4108d47f8894604c70624ed06088d55f8c702a000070889 *4204c745f48c150808c745f07c15080883ed10b8d4130608ebbb90a41308083cf105080b000200 *00000000110001008d45f43b4354730abeb41308088b43fcffe0c745f85c1108088b45008945f4 *c745fcdcf2050883ed0cb82cef0508ebe083c504e938200000897500e93020000088f1050888f1 *050800000000010000002500000083c7083b7b5c760cc7436c020000008b43f8ffe08b46043d00 *0000807513bea4130808c74500a4f1050883ef088b06ebe1f7d8c747fcd0cd050889078d77fcc7 *4500a4f10508b888f10508ebc58d760083c70c3b7b5c760cc7436c030000008b43f8ffe08b5608 *f7dac747f8f0cd05088b46048947fc89178d77f8c74500a4f10508b888f10508ebd98d7600f4f1 *0508a4f105083cf1050801000000250001003cf1050802000000150001008d45f03b435473058b *43f8ffe08d45f8c700a00007088970048b46088945f48b7604c745f044f2050883ed108b06ebdb *83c7183b7b5c760cc7436c060000008b43f8ffe0c747ec50f205088b45048947f08b45088947f4 *c747f864970508c747fc741508088d47ec89078d77f883c50c8b45008b40ecebca80f2050880f1 *05083cf105080200000025000100a4150808dcf2050804000100000000001100010083c7143b7b *5c7611c7436c05000000bebc1308088b43fcffe0c747f038f305088b45008947f4c747fce0f505 *088d47f089078d77fc83c5048b4500ebda8d760001000100130000008d45f43b435473058b43f8 *ffe08d45f8c700a00007088970048b46048945f483ed0cb8b0170608ebe28d7600c74504a41508 *0883c504e9d9a2ffff9083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f864970508c747 *fcbc1508088b450489078d77f883c5108b45008b40ecebdd8d760004000000120000008d45ec3b *4354720883c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700a0000708897004c747f8 *58fe06088b46108947fc8b460c89078d47f88945f48b46088945f08b760483ed14b824a60608eb *c79083c7203b7b5c760cc7436c080000008b43f8ffe0c747e4b4f305088b450c8947e88b460489 *47ec8b46088947f08b45088947f4c747f864970508c747fcc41508088d47e489078d77f883c510 *8b45008b40ecebbe08f4050874f3050800000000030000002500000004000100020000000e0000 *008d45f43b435473058b43fcffe08b46088945f88975fc8b55008b460489450089d6c745f470f4 *050883ed0c8b06ebdc9003000000120000008d45f43b4354720883c70c3b7b5c760cc7436c0300 *00008b43f8ffe08d45f8c700a0000708897004c747f87cf405088b46048947fc8b460889078b46 *0c8945f48d77f883ed0cb87cf40508ebcd8d760004000000120000008d45ec3b4354720883c710 *3b7b5c760cc7436c040000008b43f8ffe08d45f8c700a0000708897004c747f4b4f405088b4604 *8947f88b460c8947fc8b461089078d47f48945f48b46088945f08b760483ed14b824a60608ebc1 *8d760083c7203b7b5c760cc7436c080000008b43f8ffe0c747e40cf505088b45048947e88b4604 *8947ec8b45088947f08b46088947f4c747f864970508c747fcb41508088d47e489078d77f883c5 *0c8b45008b40ecebbe68f5050864f30508dcf205080200000025000100dcf205080b0002000100 *00000c0001008d45fc3b435473058b43fcffe08b55008b460489450089d6c745fcd0f5050883ed *048b06ebe590900300000001000000ff6500900300000009000000ff6500900400020000000000 *11000000be9c0f080883c504ff650090941408088c1408087c140808a414080888f60508000000 *0038f60508000001000000000011000f008d45f03b4354730abec81308088b43fcffe0be941408 *08c745fc2cf7050883ed048b06ebeb8d7600e9d3ffffff8d760083c7083b7b5c760cc7436c0200 *00008b43f8ffe0c747fc500d06088b46088907c745008c1408088d47fc8945fc8975f8c745f47c *14080883ed0cb878020608ebd18d760083c7083b7b5c760cc7436c020000008b43f8ffe0c747fc *500d06088b460c8907c745008c1408088d47fc8945fc8975f8c745f47c14080883ed0cb8780206 *08ebd18d7600d4f6050890f605083cf6050800000000250007000400010000000000110000008b *7500c7450078f70508ff268b760483c504ff65008d76008b46048943048b760883c504e967eb00 *008d760050f7050844f705080000000000000000250000005411080878f7050804000100000000 *00110001008b7500c74500a4f70508ff2678f7050800000000240001008b4604894500e90db4ff *ff9054110808b0f705080b000200000000001100010083c7183b7b5c7611c7436c06000000beec *1308088b43fcffe0c747ec10f805088b45048947f0c747f864f805088d47ec8947fc8b45008907 *8d77f883c5088b4500ebd49001000100130000008d45f43b435473058b43f8ffe08d45f8c700a0 *0007088970048b46048945f483ed0cb8f8170608ebe28d7600b0f7050802000000240001008b46 *04894500e971d4ffff90b0f7050804000100020000000e0001008d45f83b435473058b43fcffe0 *8b46048945fc8b7608c745f848f8050883ed088b06ebe70b00020000000000110000008b7500c7 *4500d8f80508ff2621000000240000008b45043b46047510be900f080883c5088b45008b40f0ff *e0be980f080883c5088b45008b40ecebee01000000240000008b55048b460489450489d6c74500 *a8f80508ff260b00020000000000110000008b7500c7450040f90508ff2621000000240000008b *45043b46040f94c025ff0000008944240883c5088b3485149705088b542408c1e2028b450029d0 *ff60f09001000000240000008b55048b460489450489d6c745000cf90508ff2604000200000000 *00110000008d45fc3b4354730abefc1308088b43fcffe08b7500c74500c0f905088b06ebf02100 *0000240000008b45048945008b4604894504e98b1e00008d760001000000240000008b55048b46 *0489450489d6c7450088f90508ff2600000000240000008b46088945008b7604c745fca4f90508 *83ed04ff269090906e6f207468726561647320746f2072756e3a2020696e66696e697465206c6f *6f70206f7220646561646c6f636b3f009000000200180000008d45f43b4354720883c70c3b7b5c *760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e86193000083c4108d47f8894604 *c70624ed06088d55f8c702a0000708894204c745f4d8f9050883ed0cb87c920508ebc24661696c *3a20009000000200180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ff *e0c747f808ee060883ec0c56e8f992000083c4108d47f8894604c70624ed06088d55f8c702a000 *0708894204c745f468fa050883ed0cb87c920508ebc2040002000000000011000000be9c0f0808 *83c504ff650090941408088c1408087c140808a414080838fb050800000000e8fa050800000100 *0000000011000f008d45f03b4354730abe341408088b43fcffe0be94140808c745fcdcfb050883 *ed048b06ebeb8d7600e9d3ffffff8d760083c7083b7b5c760cc7436c020000008b43f8ffe0c747 *fc500d06088b46088907c745008c1408088d47fc8945fc8975f8c745f47c14080883ed0cb87802 *0608ebd18d760083c7083b7b5c760cc7436c020000008b43f8ffe0c747fc500d06088b460c8907 *c745008c1408088d47fc8945fc8975f8c745f47c14080883ed0cb878020608ebd18d760084fb05 *0840fb0508ecfa05080000000025000700446174612f46696e6974654d61702e68733a28373538 *2c30292d283735392c3530297c66756e6374696f6e2066696e644d696e002411080810fc050800 *000200180001008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808 *ee060883ec0c56e85191000083c4108d47f8894604c70624ed06088d55f8c702a0000708894204 *c745f4dcfb0508be2411080883ed10b8a89f0608ebbd909090446174612f46696e6974654d6170 *2e68733a283736362c30292d283736372c3530297c66756e6374696f6e2066696e644d61780024 *110808b4fc050800000200180001008d45f03b4354720883c70c3b7b5c760cc7436c030000008b *43f8ffe0c747f808ee060883ec0c56e8ad90000083c4108d47f8894604c70624ed06088d55f8c7 *02a0000708894204c745f480fc0508be2411080883ed10b8a89f0608ebbd909090030001000000 *00001100000083c7083b7b5c7611c7436c02000000be5c1408088b43fcffe0c747fc54fe05088b *45008907c74500000000008d77fcb854fe0508ebe189f601000100160000008d45f43b43547305 *8b43f8ffe08d45f8c700a00007088970048b4608408945f48b760483ed0cb854fe0508ebde8d76 *0001000100160000008d45f43b435473058b43f8ffe08d45f8c700a00007088970048b460883c0 *028945f48b760483ed0cb854fe0508ebdc9001000100160000008d45f43b435473058b43f8ffe0 *8d45f8c700a00007088970048b460883c0038945f48b760483ed0cb854fe0508ebdc9001000100 *160000008d45f43b435473058b43f8ffe08d45f8c700a00007088970048b460883c0048945f48b *760483ed0cb854fe0508ebdc9003000100000001000d00000083c7203b7b5c760cc7436c080000 *008b43fcffe08b56048b4500b9000000008a0c10894c240885c97513be940f080883c50483ef20 *8b45008b40f0ebd5837c24087f0f8615010000817c2408df0000000f86d7000000817c2408ef00 *00007673c747e418fe05088977e88b45008947ec8b450083c0038b4e04ba000000008a14088954 *24148b550083c2028b46048a040225ff000000c1e006894424108b5500428b46048a140281e2ff *000000c1e20c8b442408c1e0128d8402000038fc8b5424108d841000e0ffff8b4c24148d440880 *eb4ec747e4e0fd05088977e88b45008947ec8b450083c0028b4e04ba000000008a140889542418 *8b5500428b46048a140281e2ff000000c1e2068b442408c1e00c8d840200e0f1ff8b5424188d44 *1080c747f0249705088947f4eb4ec747e4a8fd05088977e88b45008947ec8b5500428b46048a14 *0281e2ff0000008b442408c1e0068d840280cfffffebc4c747e470fd05088977e88b45008947ec *c747f0249705088b4c2408894ff4c747f8649705088d47f08947fc8d47e489078d77f883c5048b *45008b40ece974feffff90900400010000000000110000008b7500c7450014000608ff26000000 *0024000000837e047c7510be900f080883c5048b45008b40f0ffe0be980f080883c5048b45008b *40ecebee909068466c757368009000000200180000008d45f43b4354720883c70c3b7b5c760cc7 *436c030000008b43f8ffe0c747f808ee060883ec0c56e8258d000083c4108d47f8894604c70624 *ed06088d55f8c702a0000708894204c745f43c00060883ed0cb87c920508ebc2e4150808a40006 *080400020000000000110001008d45e03b4354730abe8c1408088b43fcffe08b7500c74500dc01 *06088b06ebf0be9c0f080883c51cff65009042000000240000008b4504897004be9c0f080883c5 *0cff65008d7600a4000608a6050000240001008b45108945008b45088945fc8b45048945088b45 *0c894504c7450cc01408088b46048945f8c74510ec00060883ed08e9381700008b45103b450c75 *0dbe9c0f080883c51c8b4500ffe08b7518c745000c0106088b06ebf09040010608d8000608a400 *0608a601000025000100a400060802000000240001008b46148945f48b46048945f88b46108945 *fc8b460c8945008b7608c745f07801060883ed10ff2690a400060801000000240001008b46048b *500489450089d6c745fc8401060883ed04ff2690a400060800000000240001008b46048945008b *7618c745fcb801060883ed04ff2690909018160808f401060800000200180001008d45f43b4354 *720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e86d8b000083 *c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f41816080883ed0cb8689c *0508ebc200160808ec150808201608085c02060817000500000000001100070083c7083b7b5c76 *11c7436c02000000bea41408088b43fcffe0c747fc580506088b450c89078d47fc89450cb8041a *0608ebe589f6be0c16080883c514ff650090be0c16080883c514ff650090bef815080883c514ff *650090e99f0100008d7600000000002400000083c7183b7b5c760cc7436c060000008b43f8ffe0 *c747ec380d06088b46048947f0c747f4c01408088b460c8947f88b46108947fc8b461489078d77 *ec83c504b8a0000708ebcc89f601000100130000008d45f43b435473058b43f8ffe08d45f8c700 *a00007088970048b7604c745f4e002060883ed0c8b06ebe189f6440000002400000083c70c3b7b *5c7615c7436c03000000c74320fe000000b84ccf0608ffe0c747f8300306088977fc8b55048d47 *f88942048b750c83c50cb8c8a30608ebde8d76008b550c8b450889450c8955088b4510894504c7 *4510bc1408088b45148945008b451c8945fcc745146403060883ed04e9501900008b45188b5504 *8950048b752083c520e9dc9f0000d8030608a403060864020608c9010000250001006402060804 *000000240001008975f08b46148945f48b46108945f88b460c8945fc8b46048945008b7608c745 *ec0004060883ed14ff2689f66402060803000000240001008b46048b500489450089d6c745fc0c *04060883ed04ff2690d0020608000000006402060800000100040000000b0001008d45d43b4354 *73058b43fcffe08b46108945f48b46088945f88b46048945fc8b760cc745f04404060883ed108b *06ebdb83c7143b7b5c760cc7436c050000008b43f8ffe0c747f0740406088b450c8947f48b4510 *8947f88b45088947fc8b450489078d77f083c5148b4500ebd58d76008b75108b450c89451083c5 *0ce9c39c00008d7600a4040608e4040608e4040608c4020608b8020608ac0206085c0206080400 *0000250007005c02060801000000240007008b46048945f88b46188945fc8975008b7608c745f4 *1c05060883ed0cff2689f65c02060804000100010000000c0007008d45f03b435473058b43fcff *e08b55008b460489450089d6c745fc2805060883ed048b06ebe59090c4140808d4140808341508 *082816080880050608190006000000000011000f008d45fc3b4354720883c7143b7b5c7611c743 *6c05000000beac1408088b43fcffe0c747f0d80706088b45048947f48b450c8947f88b45148947 *fc8b450889078d47f08945148b7510c745fccc0a060883ed048b06ebc989f68b750483c508ff26 *02000000150000008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8 *c700a0000708897004c747f864970508c747fce41408088b460889078d47f88945f48b46048945 *f083ed10b84c960508ebc98d760083c70c3b7b5c760cc7436c030000008b43f8ffe0c747f80806 *06088977fc8b450489078d47f8894504c74500d4140808b84c960508ebdb905c060608f8050608 *8405060801000000250001008405060802000000150001008d45f03b435473058b43f8ffe08d45 *f8c700a00007088970048b46088945f48b7604c745f0a806060883ed108b06ebdb840506080300 *0000120005008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700 *a0000708897004c747f8b40606088b46088947fc8b460c89078d47f88945f48b46048945f083ed *10b8fc1f0608ebca8b750483c508ff268005060801000100130001008d45f03b435473058b43f8 *ffe08d45f8c700a00007088970048b46048945f4c745f0c414080883ed10b84c960508ebdb83c7 *0c3b7b5c760cc7436c030000008b43f8ffe0c747f8540706088b45048947fc8d47f88945048975 *00b84c960508ebe18d760084070608400706088005060801000000250001008005060804000000 *12000b008d45f03b4354720883c7103b7b5c760cc7436c040000008b43f8ffe08d45f8c700a000 *0708897004c747f4f00606088b46048947f88b46088947fc8b460c89078d47f48945f48b7610c7 *45f0cc07060883ed108b06ebc3908b750483c508ff268005060801000100130001008d45f03b43 *5473058b43f8ffe08d45f8c700a00007088970048b46048945f4c745f0c414080883ed10b84c96 *0508ebdb8005060802000000150001008d45f03b4354720883c7183b7b5c760cc7436c06000000 *8b43f8ffe08d45f8c700a0000708897004c747ec440806088b46048947f0c747f864970508c747 *fc2c1508088d47ec89078d47f88945f48b46088945f083ed10b84c960508ebbc89f683c70c3b7b *5c760cc7436c030000008b43f8ffe0c747f8800806088b45048947fc8b460489078d47f8894504 *c7450034150808b84c960508ebd889f68005060801000100130001008d45f03b435473058b43f8 *ffe08d45f8c700a00007088970048b46048945f4c745f0c414080883ed10b84c960508ebdb8005 *060802000000150001008d45f03b4354720883c7183b7b5c760cc7436c060000008b43f8ffe08d *45f8c700a0000708897004c747ec280906088b46048947f0c747f864970508c747fc2c1508088d *47ec89078d47f88945f48b46088945f083ed10b84c960508ebbc89f683c70c3b7b5c760cc7436c *030000008b43f8ffe0c747f8640906088b45048947fc8b460489078d47f8894504c74500341508 *08b84c960508ebd889f6c4090608e00806088005060801000000250005008b7604c74500140a06 *08ff26140a0608300806088005060801000000250005008b7504c74514340a060883c514ff2690 *8005060801000100130001008d45f03b435473058b43f8ffe08d45f8c700a00007088970048b46 *048945f4c745f0c414080883ed10b84c960508ebdb83c70c3b7b5c760cc7436c030000008b43f8 *ffe0c747f8500a06088b45188947fc8d47f88945188b460489451483c514b84c960508ebdb9080 *0a0608340a060880050608c603000025000500ec140808fc140808cc0a06081600030000000000 *110003008d45fc3b4354730abeb41408088b43fcffe08b7504c745fc080d060883ed048b06ebed *90c74508ec14080883c508e9358bffff90010000002400000083c70c3b7b5c760cc7436c030000 *008b43f8ffe0c747f864970508c747fc941508088b450489078d47f88945048b4604894500c745 *fc0b00000083ed04b8e0160608ebce02000000150000008d45ec3b435473058b43f8ffe08d45f8 *c700a00007088970048b46088945f48b7604c745f0200b060883ed108b06ebdbd00a0608020000 *00150001008d45f03b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700a0 *000708897004c747f86c0b06088b46048947fc8b460889078d47f88945f4c745f0fc14080883ed *10b84c960508ebc98d760001000000240000008b4604894500c745fc0b00000083ed04e9c70a00 *008d760002000000150000008d45ec3b435473058b43f8ffe08d45f8c700a00007088970048b46 *088945f48b7604c745f0040c060883ed108b06ebdbd00a0608020000002400010083c7183b7b5c *760cc7436c060000008b43f8ffe0837e040a7f2dc747ec240c06088b45048947f08b45088947f4 *8d47ec894508c74504fc14080883c50483ef0cb84c960508ebcbc747eca80b06088b45048947f0 *8b45088947f4c747f864970508c747fc9c1508088d47ec89078d77f883c50c8b45008b40eceb97 *908b46048945088b7504c74504600c060883c504ff268d7600dc0c0608080b0608cc0a06084300 *000025000300000000000a0000008b4500ff60f09090000000000a0001008b4500ff60ec89f6bc *140808c01408080200030001000000ff6500900200030009000000ff6500900100000002000000 *ff6500900100000009000000ff6500903a20009000000200180000008d45f43b4354720883c70c *3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e80580000083c4108d47f8 *894604c70624ed06088d55f8c702a0000708894204c745f4600d060883ed0cb87c920508ebc220 *28009000000200180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0 *c747f808ee060883ec0c56e8a17f000083c4108d47f8894604c70624ed06088d55f8c702a00007 *08894204c745f4c40d060883ed0cb87c920508ebc2457869745375636365737300000002001800 *00008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec *0c56e8357f000083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f4280e *060883ed0cb87c920508ebc2457869744661696c75726520008d760000000200180000008d45f4 *3b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e8c57e *000083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f4940e060883ed0c *b87c920508ebc2617272617920696e646578206f7574206f662072616e6765008d760000000200 *180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee0608 *83ec0c56e8497e000083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f4 *040f060883ed0cb87c920508ebc2756e646566696e656420617272617920656c656d656e740000 *000200180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808 *ee060883ec0c56e8d17d000083c4108d47f8894604c70624ed06088d55f8c702a0000708894204 *c745f4800f060883ed0cb87c920508ebc27b68616e646c653a200089f600000200180000008d45 *f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e865 *7d000083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f4f80f060883ed *0cb87c920508ebc25072656c7564652e008d760000000200180000008d45f43b4354720883c70c *3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e8f97c000083c4108d47f8 *894604c70624ed06088d55f8c702a0000708894204c745f46410060883ed0cb87c920508ebc264 *15080834160808d010060800000200180003008d45f03b4354720883c70c3b7b5c760cc7436c03 *0000008b43f8ffe0c747f808ee060883ec0c56e88d7c000083c4108d47f8894604c70624ed0608 *8d55f8c702a0000708894204c745f464150808c745f03416080883ed10b84c960508ebbb903a20 *656d707479206c697374008d760000000200180000008d45f43b4354720883c70c3b7b5c760cc7 *436c030000008b43f8ffe0c747f808ee060883ec0c56e8157c000083c4108d47f8894604c70624 *ed06088d55f8c702a0000708894204c745f44411060883ed0cb87c920508ebc20b000200000000 *00110000008d45f43b4354730abe841508088b43fcffe0c745f8441608088b45008945f4c745fc *c813060883ed0cb82cef0508ebe083c7143b7b5c760cc7436c050000008b43f8ffe08b460483c0 *30c747f0249705088947f4c747f8649705088d47f08947fc8b450889078d47f889450883c504b8 *c0110608ebcc89f6020000002400000083c7143b7b5c760ec7436c05000000b838c90608ffe08d *4630c747f0249705088947f4c747f8649705088d47f08947fc8b450889078d47f889450883c504 *b8c0110608ebcf8d76008b46048943048b7608c7450040120608e90fd000008d760088120608f0 *11060800000000020000002500000001000000240000008975048b7500c74500b4120608ff2690 *c74500441608088b45048945fcc74504bc12060883ed04e9a00e000083c7143b7b5c760cc7436c *050000008b43f8ffe08b460483c030c747f0249705088947f4c747f8649705088d47f08947fc8b *450489078d77f883c5088b45008b40ecebce010000002400000083c7143b7b5c760ec7436c0500 *0000b838c90608ffe08d4630c747f0249705088947f4c747f8649705088d47f08947fc8b450489 *078d77f883c5088b45008b40ecebd1908b46048943048b7608c7450034130608e91fcf00008d76 *0078130608e81206080000000001000000250000008b7504c74504a413060883c504ff2690a413 *0608cc1206080000000002000000250000000b00020000000000110000008d45f03b4354730abe *881508088b43fcffe08b7500c74500701606088b06ebf0c40100002400000083c7183b7b5c7615 *c7436c06000000c74320ff000001b84ccf0608ffe0c747ecf0cd05088b45008947f08977f4c747 *f8f0cd05088b45088947fc8b451489078d47ec8945148d47f889451083c510b8d4130608ebc68d *7600620000002400000089750c8b7508c745fcfc13060883ed04e933c300008d760083c7083b7b *5c760cc7436c020000008b43f8ffe08b450489c1034e04334604f7d089ca33550485c27817c747 *fcd0cd0508890f8d77fc83c5088b45008b40f0ebd18b46048945008b7504c745fc5c14060883ed *0483ef08b8a4d70608ebb489f6420000002400000083c70c3b7b5c7615c7436c03000000c74320 *ff000001b84ccf0608ffe0c747f8f0cd05088b45008947fc89378b450889450c8d47f889450883 *c508b8d4130608ebd989f68975008b7504c745fcdc14060883ed04e96fc200008d760020150608 *741406080000000021000000250000008b55048b460489450489d6c745004c150608ff26010000 *002400000083c70c3b7b5c7615c7436c03000000c74320ff000001b84ccf0608ffe0c747f8f0cd *05088b45008947fc89378b45088945048d47f889450883c504b8d4130608ebd989f68b7604c745 *086815060883c508e9e6c1000089f6000000002400000083c70c3b7b5c7615c7436c03000000c7 *4320ff000001b84ccf0608ffe0c747f8f0cd05088b45008947fc89378d77f883c5088b45008b40 *ecebe189f68b460489430c8b46088943088b45048943048b7508c7450cc815060883c50ce9e8c3 *000004160608ac1506080000000043000000250000008b46048945fc8b46088945008b45048975 *0489c6c745f83c16060883ed08ff263c1606084c1506080000000001000000250000005b5d0090 *00000200180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8 *08ee060883ec0c56e8f576000083c4108d47f8894604c70624ed06088d55f8c702a00007088942 *04c745f47016060883ed0cb87c920508ebc210000300000000001100000083c7183b7b5c7611c7 *436c06000000becc1508088b43fcffe0837d0400793a837d00067e34c747ec501706088b450889 *47f08b45048947f4c747f864970508c747fc9c1508088d47ec89078d77f883c50c8b45008b40ec *ebbe83c50483ef18b81c240608ebb189f601000100160000008d45f03b4354720883c70c3b7b5c *760cc7436c030000008b43f8ffe08d45f8c700a0000708897004c747f864970508c747fc941508 *088b460489078d47f88945f48b46088945f083ed10b81c240608ebc99090900400010000000000 *110000008d45fc3b4354730abed01508088b43fcffe08b7500c74500d81706088b06ebf0000000 *0024000000c74500601408088b760483ed04e9ce89000090900400010000000000110000008b75 *00c745000c180608ff2600000000240000008b4604894500e9790d000090080003000000000011 *0000008b55008b4504c745044c18060883c50483ec085052e8c231000083c410ff650000000000 *24000000be9c0f080883c504ff65009064160808e415080808190608a603000058180608000007 *0000000000110003008d45e43b4354720883c7183b7b5c7611c7436c06000000bee41508088b43 *fcffe08b450c89c22b55087531c747ec380d06088b45048947f08b45148947f4c747f800000000 *c747fc000000008b451089078d77ec83c5188b4500ebc38955f48b45088945f08b45048945ec8b *45008945e8c745e4641608088955fcc745f88c19060883ed1c83ef18b854270608eb9090e96bff *ffff8d76005c180608670700002400010083c7183b7b5c760cc7436c060000008b43f8ffe08b46 *043b45047c31c747ec380d06088b450c8947f08b451c8947f4c747f800000000c747fc00000000 *8b451889078d77ec83c5208b4500ebc58b451003460489451083c50883ef18b878180608ebaf90 *5c1806086707000024000100c745001c190608ff26909090ec150808c019060800000000981906 *08000001000000000011000100beec150808e946ad000089f6e9efffffff90909000160808f019 *060800000000c8190608000001000000000011000100be00160808e916ad000089f6e9efffffff *90909017000500000000001100000083c7143b7b5c7611c7436c05000000be141608088b43fcff *e0c747f0241c06088b45088947f48b450c8947f88b45008947fc8b450489078d77f083c510b828 *c20608ebd3e9d70100008d760003000000120000008d45ec3b435473058b43f8ffe08d45f8c700 *a00007088970048b460c8945f48b46088945f08b46048945ec83ed14b8202c0608ebd68d760083 *000000240000008b06668378fe09754683c7183b7b5c760cc7436c060000008b43f8ffe0c747ec *581a06088b46048947f08b45088947f48b45048947f8c747fc489d05088d47ec89078d77fc83c5 *10b804c70608ebcc89750c83c50cb8f89b0508ebbf03000000240000008b750cc74500981a0608 *ff2604000200040000000b0000008d45f43b435473058b43fcffe08b460c8945fc8b46108945f8 *8b46088943048b7604c745f4fc1a060883ed0cb85ce60608ebd89042000000240000008b750483 *c50cff65008d7600c40000002400000089750c8b45108943048b7504c74508501b060883c508e9 *ddca000090040000002400000083c7203b7b5c7615c7436c08000000c74320fe000000b84ccf06 *08ffe0c747e4141b06088b45048947e88977ec8b450c8947f08b45088947f4c747f858fe06088b *45108947fc89378975108d47e48943048d77f8c74500641b0608b8a4c40608ebb989f603000000 *240000008b46048945008b7604c745fc881b060883ed04e9f8c80000481a060800000000000000 *0000000100040000000b0000008d45ec3b435473058b43fcffe08b46108945f48b460c8945f88b *46088945fc8b7604c745f0f41b060883ed108b06ebdbd0160808e4150808e8160808ac1c060800 *000000541c06080000010000000000110007008d45ec3b4354730abe181608088b43fcffe0c745 *f8c0140808c745f484160808c745fcf81c060883ed0cb8802d0608ebdf8d7600e9c7ffffff8d76 *00581c060800000000240003008b46088945008b46048945fcc745f830160808c745f4e8160808 *c745f08416080883ed10e9c30c00008d7600581c06080000000024000300c74500c01c0608ff26 *909090f81608087416080808170808941d060886030000041d0608000007000000000011000700 *8d45f43b4354720883c7183b7b5c7611c7436c06000000be201608088b43fcffe08b45083b450c *74118b7500c74500701f060883ef188b06ebe5c747ec380d06088b45048947f08b45148947f48b *45088947f88b450c8947fc8b451089078d77ec83c5188b4500ebb68d7600e98fffffff8d7600eb *7a89f60000000024000000c744240400000000c704240000000083c70c3b7b5c7615c7436c0300 *0000c74320ff000200b84ccf0608ffe0c747f8489f05088d57fc8b4d00890c248b450489442404 *890a8b4c2404894a048d77f883c50c8b4500ebd3909c1d06080000000000000000000001000000 *04000b000000c744240400000000c70424000000008d45ec3b435473058b43fcffe08b46108945 *f88d55f08d46088b08890c248b400489442404890a8b4c2404894a048b46048945ecc745fca81d *060883ed14b840260608ebc6c50100002400000083c7183b7b5c7615c7436c06000000c74320fe *000000b84ccf0608ffe0c747ec380d06088b45048947f08b45148947f4c747f800000000c747fc *000000008b451089078d77ec83c5188b4500ebcd89f6081d0608e80e000024000300c744240400 *000000c704240000000083c7143b7b5c760cc7436c050000008b43f8ffe0c747f0181e06088b45 *188947f48d57f88d45048b08890c248b400489442404890a8b4c2404894a048b460489078d47f0 *894508c7450474160808c7450018170808c7450c741e0608b89c260608ebaf89f6041d0608c501 *000024000700bef8160808c745fcd01e060883ed04ff268d7600041d0608c5010000240007008b *55082b550c8b460489450cc74500501f060883ec0c52e86e29000083c4108d4df8890189510489 *cdff65082017080830170808401708085017080860170808701708088017080890170808a01708 *08b0170808c0170808d0170808e0170808f0170808001808081018080820180808301808084018 *080850180808082006080b000200000000001100ffff8b7500c7450048200608ff269c1f060814 *000000ffff0f00897500e93076ffff14200608142006080000000001000000250000009c1f0608 *14000000ffff0f0030200608010000002400ffff8b06668b40fe25ffff000083f8120f879b0000 *00ff2485d8940708be40180808c74500302006088b06ffe0be30180808ebeebe20180808ebe7be *10180808ebe0be00180808ebd9bef0170808ebd2bee0170808ebcbbed0170808ebc4bec0170808 *ebbdbeb0170808ebb6bea0170808ebafbe90170808eba8be80170808eba1be70170808eb9abe60 *170808eb93be50170808eb8cbe40170808eb85be30170808e97bffffffbe20170808e971ffffff *be50180808e967ffffff909090000000000a0003008b4500ff60e490907461696c008d76000000 *0200180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee *060883ec0c56e84d6c000083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c7 *45f41421060883ed0cb87c920508ebc20b00020000000000110000008d45f83b4354730abe4c16 *08088b43fcffe08b7500c74500102406088b06ebf083c7103b7b5c760cc7436c040000008b43f8 *ffe08b550489d0c1fa1ff77e04894424088b550489d0c1fa1ff77e04c747f4d0cd05088957f8c7 *47fcd0cd05088b44240889078d47f48945048d77fc83c5048b4504ebbc89f64200000024000000 *83c70c3b7b5c7615c7436c03000000c74320ff000001b84ccf0608ffe0c747f8f0cd05088b4500 *8947fc89378b450889450c8d47f889450883c508b888210608ebd989f68975008b7504c745fc08 *22060883ed04e943b500008d76004c220608a82106080000000021000000250000000100000024 *00000083c70c3b7b5c7615c7436c03000000c74320ff000001b84ccf0608ffe0c747f8f0cd0508 *8b45008947fc89378d47f889450483c504b888210608ebdf8b46043d000000807513be00000080 *c7450080220608b8a4d70608ffe08b7504894504c74500782206088b06ebed89f6010000002400 *000083c70c3b7b5c7615c7436c03000000c74320ff000001b84ccf0608ffe0c747f8f0cd05088b *45008947fc89378b45088945048d47f889450883c504b888210608ebd989f68b7604c74508f422 *060883c508e95ab4000089f6000000002400000083c7183b7b5c7615c7436c06000000c74320ff *000102b84ccf0608ffe0c747ecf0cd05088b45088947f08b45008947f4c747f8f0cd05088b4504 *8947fc89378d47ec89450c8d77f883c50c8b4504ebcb8b460489430c8b46088943088b45048943 *048b7508c7450c5423060883c50ce980bc0000a423060838230608000000004300000025000000 *8b46048945fc8b46088945008b450489750489c6c745f8dc23060883ed08ff26dc230608bc2206 *0800000000010000002500000009000200000000001100000083c7183b7b5c7611c7436c060000 *00be501608088b43fcffe0837d0000780a83ef18b8303c0608ebee8b450089c2f7da85d27809c7 *47ec54250608eb07c747ece82406088b45048947f08957f4c747f864970508c747fc701808088d *47ec89078d77f883c5088b45008b40eceba989f601000100160000008d45f03b435473058b43f8 *ffe08d45f8c700a00007088970048b4e08ba6766666689c8f7eac1fa0289c8c1f81f29c28d1492 *01d229ca8b46048945f48955f083ed10b8303c0608ebc28d760001000100160000008d45f03b43 *54720883c70c3b7b5c760cc7436c030000008b43f8ffe08d45f8c700a0000708897004c747f894 *2406088b46048947fc8b460889078b4e08ba6766666689c8f7eac1fa02c1f91f29d18d47f88945 *f4894df083ed10b8303c0608ebb98d760001000100160000008d45f03b435473058b43f8ffe08d *45f8c700a00007088970048b46048945f48b46088945f083ed10b8303c0608ebdc900300010000 *000000110000008d45fc3b4354720883c7083b7b5c7611c7436c02000000be541608088b43fcff *e08b450085c0791389c6c74500ec25060883ef08b804d80608ebe4c747fcd0cd050889078d77fc *83c5048b45008b40f0ebcd89f6000000002400000083c70c3b7b5c7615c7436c03000000c74320 *ff000001b84ccf0608ffe0c747f8f0cd05088b45008947fc89378d77f883c5088b45008b40eceb *e1909088260608e401000000000000000004000000000011000000c744240400000000c7042400 *0000008b55008d45048b08890c248b4004894424048b450c83c51050ff742408ff74240852e85a *74feff83c4108d4df8890189510489cdff650889f6e9b3ffffff90909016000400000000001100 *00008d45f03b4354730abe5c1608088b43fcffe08b7508c745fc2427060883ed08b8e8970608eb *ea89f68b750483c514ff65008d7600030000002400000083fe04750a83c504b89c260608ffe08b *450889450c83c50cb8343d0608ebee90c74504d826060883c504e90d16000090f8260608c42606 *0800000000040000002500000003000000240000008975f88975008b7504c745fc1c27060883ed *0ce97c7a0000bc270608450300000000000000000600000000001100000083c71c3b7b5c7611c7 *436c07000000be601608088b43fcffe0c747e8f42706088b45048947ecc747f0702806088b4508 *8947f48b45048947f88b450c8947fc8b451089078d47e88945108d47f089450c8b4500894508c7 *45048c18080883c504b8143e0608ebb090e993ffffff8d7600eb2e89f60000000024000000be9c *0f080883c504ff650090c4270608000000000000000000000100000001000d0000008d45fc3b43 *5473058b43fcffe08b7604c745fcd027060883ed04b860e90608ebea8d7600eb5689f600000000 *2400000083c7083b7b5c7615c7436c02000000c74320ff000000b84ccf0608ffe0c747fc309f05 *0889378d77fc83c5048b4500ebea8d760018280608000000000000000000000100010003000b00 *00008d45fc3b435473058b43fcffe08b4608894424088b460483c0088b4e0c8b5610c745fc2428 *060883ed0483ec045201c850ff742414e8266ffeff83c41089c68b4500ebc7666c757368577269 *7465427566666572008d760000000200180000008d45f43b4354720883c70c3b7b5c760cc7436c *030000008b43f8ffe0c747f808ee060883ec0c56e8a164000083c4108d47f8894604c70624ed06 *088d55f8c702a0000708894204c745f4b428060883ed0cb87c920508ebc2666c75736852656164 *4275666665720000000200180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b *43f8ffe0c747f808ee060883ec0c56e83164000083c4108d47f8894604c70624ed06088d55f8c7 *02a0000708894204c745f42829060883ed0cb87c920508ebc2e415080898290608180006000000 *0000110001008d45f83b4354730abe8c1608088b43fcffe0be68180808c745fc002c060883ed04 *b8bcd50608ebe8040000002400000083c72c3b7b5c760cc7436c0b0000008b43f8ffe0c747d854 *a305088b45048947dcc747e0403b06088b45108947e48b450c8947e8c747ec900f0808c747f090 *0f08088b45088947f48977f88d47d88947fcc707280f08088d77e083c514b8a0000708ebae0400 *0000240000008b451089751089c6c74500dc290608ff268d760005000000120000008d45e43b43 *5473058b43f8ffe08d45f8c700a00007088970048b46148945e88b46108945ec8b460c8945f08b *46088945f48b7604c745e4482a060883ed1c8b06ebc989f6eb2e89f69829060800000000240001 *00897500e9bc150000a82a0608000000009829060800000100010000000c0001008d45fc3b4354 *73058b43fcffe08b7604c745fcb82a060883ed04b804e50608ebea8d7600c40000002400000083 *c70c3b7b5c7615c7436c03000000c74320fe000000b84ccf0608ffe0c747f8583b06088b450489 *47fc8b451089078d77f883c5148b4500ebe189f698290608c40000002400010083c7083b7b5c76 *0ec7436c02000000b8dcc70608ffe0c747fcd82a06088b451089078d47fc894308c743049c0f08 *088b7510c74500042b0608b8e0d60608ebd498290608060000002400010083c7183b7b5c7615c7 *436c06000000c74320fe000000b84ccf0608ffe0c747ec642a06088b45088947f08b45148947f4 *8b45108947f88b45188947fc8b450489078975188d47ec894304c745084c2b060883c508b85ce6 *0608ebc090982906080500000024000100897500c745fc982b060883ed04e9a6b8000090901600 *030000000000110000008d45f43b4354730abecc1608088b43fcffe08b7500c745009c2c06088b *06ebf0000000002400000083c7183b7b5c7615c7436c06000000c74320fe000004b84ccf0608ff *e0c747ecc89c05088977f08b45008947f48b45048947f88b45088947fc8b450c89078d77ec83c5 *148b4500ebd28d760002000000240000008b45048945008b45088945048b46148945fc8b461089 *45f88b46088945f4c74508482c060883ed0ce96b12000090909000000200180000008d45f43b43 *54720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e89d600000 *83c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f4382d060883ed0cbe00 *2000008b4500ebbf90000000002400000083c7083b7b5c7615c7436c02000000c74320ff000000 *b84ccf0608ffe0c747fc3c97050889378d77fc83c504b8a0000708ebe890d01608086c2d06080b *00030000000000110001008d45f83b4354730abee01608088b43fcffe0bed0160808c745fce82e *060883ed048b06ebeb8d760000000200140000008d45f83b435473058b43f8ffe08d45f8c700a0 *000708897004837e0400750ebe9018080889c5b8103b0608ebdebe6418080883ed08a18c000708 *ebcf010000002400000083c7203b7b5c7615c7436c08000000c74320ff000000b84ccf0608ffe0 *c747e4b02d06088977e8c747f054a305088b45048947f4c747f8208405088d47f08947fc8d47e4 *89078d77f883c5088b4500ebca8d760001000000240000008b46048945fcc74500f42d060883ed *04e97f0e00008d760042000000240000008975088b7504c74504502e060883c504ff2689f62300 *00002400000083c7183b7b5c7615c7436c06000000c74320fe000000b84ccf0608ffe0c747ec38 *0d06088977f08b450c8947f4c747f800000000c747fc000000008b450489078d77ecc74504702e *060883c504b8bcd50608ebc702000000240000008b46048945008b7604c745fc8c2e060883ed04 *e994a500003c7374646f75743e008d760000000200180000008d45f43b4354720883c70c3b7b5c *760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e85d5e000083c4108d47f8894604 *c70624ed06088d55f8c702a0000708894204c745f4002f060883ed0cb87c920508ebc200000200 *180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee0608 *83ec0c56e8fd5d000083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f4 *d82f060883ed0cbe010000008b4500ebbf90000000002400000083c7083b7b5c7615c7436c0200 *0000c74320ff000000b84ccf0608ffe0c747fc309f050889378d77fc83c504b8a0000708ebe890 *00000200180000008d45ec3b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f8 *08ee060883ec0c56e85d5d00008d47f8894604c70624ed06088d55f8c702a0000708894204c745 *f4ec30060883ed0cc7042401000000e88c18000083c4108d4df8890189510489cd8b4508ebae00 *00000024000000c744240400000000c704240000000083c70c3b7b5c7615c7436c03000000c743 *20ff000200b84ccf0608ffe0c747f8489f05088d57fc8b4d00890c248b450489442404890a8b4c *2404894a048d77f883c50cb8a0000708ebd18d76000000000024000000c744240400000000c704 *24000000008b55008914248b450489442404c745088830060883c50883ec08ff74240cff74240c *e87e16000083c4108d4df8890189510489cdff6508909008170808343106080400010000000000 *110001008d45f43b4354730abe181708088b43fcffe08b7500c74500dc3106088b06ebf0620000 *0024000000c744240c00000000c744240800000000c744241400000000c7442410000000008d55 *fc8d45048b08894c24108b400489442414890a8b4c2414894a048d55048d46048b08894c24088b *40048944240c890a8b4c240c894a0483ed04e9b8090000343106080000000024000100c7442404 *00000000c70424000000008d55fc8d46048b08890c248b400489442404890a8b4c2404894a04be *08170808c745f87031060883ed08ff2690616c7265616479206578697374730090000002001800 *00008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec *0c56e8415b000083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f41832 *060883ed0cb87c920508ebc2646f6573206e6f74206578697374009000000200180000008d45f4 *3b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e8d15a *000083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f48832060883ed0c *b87c920508ebc27265736f7572636520627573790089f600000200180000008d45f43b43547208 *83c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e8615a000083c410 *8d47f8894604c70624ed06088d55f8c702a0000708894204c745f4f832060883ed0cb87c920508 *ebc27265736f7572636520657868617573746564009000000200180000008d45f43b4354720883 *c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e8ed59000083c4108d *47f8894604c70624ed06088d55f8c702a0000708894204c745f46833060883ed0cb87c920508eb *c2656e64206f662066696c650000000200180000008d45f43b4354720883c70c3b7b5c760cc743 *6c030000008b43f8ffe0c747f808ee060883ec0c56e88159000083c4108d47f8894604c70624ed *06088d55f8c702a0000708894204c745f4dc33060883ed0cb87c920508ebc2696c6c6567616c20 *6f7065726174696f6e0089f600000200180000008d45f43b4354720883c70c3b7b5c760cc7436c *030000008b43f8ffe0c747f808ee060883ec0c56e80d59000083c4108d47f8894604c70624ed06 *088d55f8c702a0000708894204c745f44834060883ed0cb87c920508ebc27065726d697373696f *6e2064656e6965640089f600000200180000008d45f43b4354720883c70c3b7b5c760cc7436c03 *0000008b43f8ffe0c747f808ee060883ec0c56e89958000083c4108d47f8894604c70624ed0608 *8d55f8c702a0000708894204c745f4bc34060883ed0cb87c920508ebc275736572206572726f72 *009000000200180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c7 *47f808ee060883ec0c56e82d58000083c4108d47f8894604c70624ed06088d55f8c702a0000708 *894204c745f43035060883ed0cb87c920508ebc2756e7361746973696669656420636f6e737472 *61696e7473008d760000000200180000008d45f43b4354720883c70c3b7b5c760cc7436c030000 *008b43f8ffe0c747f808ee060883ec0c56e8b157000083c4108d47f8894604c70624ed06088d55 *f8c702a0000708894204c745f49c35060883ed0cb87c920508ebc273797374656d206572726f72 *008d760000000200180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ff *e0c747f808ee060883ec0c56e84157000083c4108d47f8894604c70624ed06088d55f8c702a000 *0708894204c745f41836060883ed0cb87c920508ebc270726f746f636f6c206572726f72009000 *000200180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808 *ee060883ec0c56e8d156000083c4108d47f8894604c70624ed06088d55f8c702a0000708894204 *c745f48836060883ed0cb87c920508ebc26661696c6564009000000200180000008d45f43b4354 *720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e86956000083 *c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745f4f836060883ed0cb87c92 *0508ebc2696e76616c696420617267756d656e74008d760000000200180000008d45f43b435472 *0883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e8f555000083c4 *108d47f8894604c70624ed06088d55f8c702a0000708894204c745f46037060883ed0cb87c9205 *08ebc2696e617070726f7072696174652074797065009000000200180000008d45f43b43547208 *83c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e88155000083c410 *8d47f8894604c70624ed06088d55f8c702a0000708894204c745f4d437060883ed0cb87c920508 *ebc26861726477617265206661756c74009000000200180000008d45f43b4354720883c70c3b7b *5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e81155000083c4108d47f88946 *04c70624ed06088d55f8c702a0000708894204c745f44838060883ed0cb87c920508ebc2756e73 *7570706f72746564206f7065726174696f6e0089f600000200180000008d45f43b4354720883c7 *0c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e89954000083c4108d47 *f8894604c70624ed06088d55f8c702a0000708894204c745f4b838060883ed0cb87c920508ebc2 *74696d656f75740000000200180000008d45f43b4354720883c70c3b7b5c760cc7436c03000000 *8b43f8ffe0c747f808ee060883ec0c56e83154000083c4108d47f8894604c70624ed06088d55f8 *c702a0000708894204c745f43039060883ed0cb87c920508ebc27265736f757263652076616e69 *736865640089f600000200180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b *43f8ffe0c747f808ee060883ec0c56e8bd53000083c4108d47f8894604c70624ed06088d55f8c7 *02a0000708894204c745f49839060883ed0cb87c920508ebc2696e746572727570746564000000 *0200180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee *060883ec0c56e85153000083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c7 *45f40c3a060883ed0cb87c920508ebc2756e6b6e6f776e20494f206572726f72008d7600000002 *00180000008d45f43b4354720883c70c3b7b5c760cc7436c030000008b43f8ffe0c747f808ee06 *0883ec0c56e8dd52000083c4108d47f8894604c70624ed06088d55f8c702a0000708894204c745 *f4783a060883ed0cb87c920508ebc2000000000a000500ff650090000000000a0001008b4500ff *60ec909001000000020002008b4500ff60e889f601000000090002008b4500ff60e89090000000 *000a0000008b4500ff60f090900800000001000000ff6500900800000009000000ff6500900200 *0000040000008b4500ff60f089f602000000090000008b4500ff60f09090f03b0608e401000000 *000000000002000000000011000000c744240c00000000c744240800000000c744241400000000 *c7442410000000008b5500895424108b4504894424148d45088b10895424088b40048944240cc7 *450c003c060883c50cff74240cff74240cff74241cff74241ce8b70a000083c41089c6ff65008d *7600e993ffffff8d7600000000002400000085f67510be900f080883c5048b45008b40f0ffe0be *980f080883c5048b45008b40ecebee09000200000000001100000083c7143b7b5c7611c7436c05 *000000be781808088b43fcffe0837d00097e568b5500b80a00000089c189d0c1fa1ff7f983c230 *c747f0249705088957f4c747f8649705088d47f08947fc8b450489078b4d00ba6766666689c8f7 *eac1fa0289c8c1f81f29c28d47f8894504895500b8303c0608eba28b450083c030c747f0249705 *088947f4c747f8649705088d47f08947fc8b450489078d77f883c5088b45008b40ece96fffffff *0300020000000000110000008b450083c50483ec0c50e8bd5ffeff83c41089c6ff650090203d06 *080000000000000000000001000000000011000000e8075cfeff8b30ff650089f6e9efffffff90 *90900400020000000000110000008d45fc3b4354730abe841808088b43fcffe0c745fcc03d0608 *83ed04b8143d0608ebed9001000100160000008d45e83b4354720883c7083b7b5c760cc7436c02 *0000008b43f8ffe08d45f8c700a0000708897004c747fc309f05088b46088907c745f4280f0808 *c745f0280f08088d47fc8945ec8b46048945e883ed18b8a8420608ebc2010000002400000083c7 *143b7b5c7615c7436c05000000c74320ff000000b84ccf0608ffe0c747f0603d06088b45048947 *f48977f8c747fc489d05088d47f089078d77fc83c508b804c70608ebd590901700050000000000 *110000008d45f03b4354730abe881808088b43fcffe08b7508c745fcc83e060883ed08b8e89706 *08ebea89f68b750483c518ff65008d7600040000002400000083c504e9bcffffff040000002400 *000083fe04740783fe0b740ceb1e83c504b8143e0608ffe08b7510c74500503e060883ed04b8e8 *970608ebea8b450889451083c510b8343d0608ebda89f6c74504603e060883c504e969feffff90 *9c3e06083c3e060800000000050000002500000004000000240000008975f88975008b7504c745 *fcc03e060883ed0ce9d86200000400010000000000110000008b7500c74500003f0608ff260000 *000024000000837e04ff7510be980f080883c5048b45008b40ecffe0be900f080883c5048b4500 *8b40f0ebee909018000500000000001100000083c7143b7b5c7611c7436c05000000be9c180808 *8b43fcffe0c747f0384006088b45108947f48b45088947f8c747fcc88305088b451089078d47f0 *8945108b450c8945088b450489450c8b45008945048d77fc83c5048b4510ebbc9083c7083b7b5c *760cc7436c020000008b43f8ffe0c747fcc88305088b460489078d77fc83c504a18c000708ebe5 *8d760083c7083b7b5c760cc7436c020000008b43f8ffe0c747fcc88305088b460489078d77fc83 *c504a18c000708ebe58d7600c03f0608903f06080000000000000000250000008b7504c7450404 *40060883c504ff269083c508ff268d760014400608044006080000000001000000250000000200 *0000150000008d45f03b435473058b43f8ffe08d45f8c700a00007088970048b46048945f48b76 *08c745f03040060883ed108b06ebdbe4150808684006080400020000000000110001008d45e03b *4354730abea01808088b43fcffe08b7500c74500904106088b06ebf08b55188b4514894204be9c *0f080883c520ff650042000000240000008b4504897004be9c0f080883c50cff65008d76006840 *0608e70a0000240001008b550c8b450489450c8955048b4510894500c74510c01408088b460489 *45fcc74514b840060883ed04e972d7ffff89f68b751cc74500d8400608ff26084106089c400608 *68400608e7000000250001006840060802000000240001008b46148945f08b46108945f48b460c *8945f88b46048945fc8975008b7608c745ec2841060883ed14ff2689f668400608010000002400 *01008b46048b500489450089d6c745fc3441060883ed04ff26906840060800000000240001008b *46048945008b7618c745fc6c41060883ed04ff2690909068616e646c65206973206e6f74206f70 *656e20666f722077726974696e67009000000200180000008d45f43b4354720883c70c3b7b5c76 *0cc7436c030000008b43f8ffe0c747f808ee060883ec0c56e8a14b000083c4108d47f8894604c7 *0624ed06088d55f8c702a0000708894204c745f4a841060883ed0cb87c920508ebc268616e646c *6520697320636c6f736564008d760000000200180000008d45f43b4354720883c70c3b7b5c760c *c7436c030000008b43f8ffe0c747f808ee060883ec0c56e82d4b000083c4108d47f8894604c706 *24ed06088d55f8c702a0000708894204c745f42842060883ed0cb87c920508ebc2170004000000 *00001100000083c7143b7b5c7611c7436c05000000bec81808088b43fcffe0c747f05c4406088b *45048947f48b45088947f88b45008947fc8b450c89078d47f089450c83c50cb8689c0508ebd090 *e9670100008d760000000200140000008d45f83b435473058b43f8ffe08d45f8c700a000070889 *70048b460483f87a7770ff248524950708be04190808eb67bef4180808eb60becc180808eb59be *f0180808eb52beec180808eb4bbee4180808eb44bedc180808eb3dbe60180808eb36bed0180808 *eb2fbee0180808eb28be00190808eb21befc180808eb1abed4180808eb13bed8180808eb0cbef8 *180808eb05bee818080883ed08b8a0000708e968ffffff90240000002400000083c7243b7b5c76 *15c7436c09000000c74320fe000000b84ccf0608ffe0c747e0004306088b45048947e4c747ecc8 *9c05088b45108947f08d47e08947f48b450c8947f88977fc8b450889078d77ec83c5148b4500eb *c589f624000000240000008975fcc74500ac43060883ed04e93a43ffff89f60300000024000000 *8b46048945f88b4604894500c745fc0c44060883ed08e90901000090f042060800000000000000 *0000000100040000000b0000008d45e83b435473058b43fcffe08b46108945f48b460c8945f88b *46088945fc8b7604c745f02844060883ed108b06ebdb000000000a000000ff650090000000000a *000100ff650090000000000a000200ff650090000000000a000300ff650090000000000a000600 *ff650090000000000a000800ff650090000000000a000a00ff650090000000000a000b00ff6500 *90000000000a000c00ff650090000000000a000d00ff650090000000000a000e00ff6500900000 *00000a000f00ff650090000000000a001000ff650090000000000a001100ff650090000000000a *001200ff6500900300020000000000110000008b450083c50483ec0c50e86553feff83c41089c6 *ff6500905589e556538b5d088b750c8b55108b4d14b80100000039ce770b720439d37705b80000 *00005b5e5dc35589e556538b5d088b750c8b55108b4d14b80100000039ce770b720439d37305b8 *000000005b5e5dc35589e5538b45088b550c8b4d108b5d1431c831da09d00f94c025ff0000005b *5dc35589e5538b45088b550c8b4d108b5d1431c831da09d00f95c025ff0000005b5dc35589e556 *538b5d088b750c8b55108b4d14b80100000039ce720b770439d37205b8000000005b5e5dc35589 *e556538b5d088b750c8b55108b4d14b80100000039ce720b770439d37605b8000000005b5e5dc3 *5589e556538b5d088b750c8b55108b4d14b80100000039ce7f0b7c0439d37705b8000000005b5e *5dc35589e556538b5d088b750c8b55108b4d14b80100000039ce7f0b7c0439d37305b800000000 *5b5e5dc35589e5538b45088b550c8b4d108b5d1431c831da09d00f94c025ff0000005b5dc35589 *e5538b45088b550c8b4d108b5d1431c831da09d00f95c025ff0000005b5dc35589e556538b5d08 *8b750c8b55108b4d14b80100000039ce7c0b7f0439d37205b8000000005b5e5dc35589e556538b *5d088b750c8b55108b4d14b80100000039ce7c0b7f0439d37605b8000000005b5e5dc35589e583 *ec08ff7514ff7510ff750cff7508e8a93b010083c410c9c35589e583ec08ff7514ff7510ff750c *ff7508e84d3a010083c410c9c35589e583ec08ff7514ff7510ff750cff7508e8f137010083c410 *c9c35589e583ec08ff7514ff7510ff750cff7508e85536010083c410c9c35589e58b45088b550c *f7d883d200f7da5dc35589e58b45108b551403450813550c5dc35589e58b45088b550c2b45101b *55145dc35589e557565383ec0c8b4d108b5d148b4508f7e18945e88b75080faff389d701f70faf *4d0c8d0c39894dec8b45e88b55ec83c40c5b5e5f5dc35589e5538b45088b550c8b4d108b5d1421 *c821da5b5dc35589e5538b45088b550c8b4d108b5d1409c809da5b5dc35589e5538b45088b550c *8b4d108b5d1431c831da5b5dc35589e58b45088b550cf7d0f7d25dc35589e58b4d108b45088b55 *0c0fa5c2d3e0f6c120740789c2b8000000005dc35589e58b4d108b45088b550c0fadd0d3eaf6c1 *20740789d0ba000000005dc35589e58b4d108b45088b550c0fa5c2d3e0f6c120740789c2b80000 *00005dc35589e58b4d108b45088b550c0fadd0d3faf6c120740589d0c1fa1f5dc35589e58b4d10 *8b45088b550c0fadd0d3eaf6c120740789d0ba000000005dc35589e58b450889c2c1fa1f5dc355 *89e58b45085dc35589e58b45088b550c5dc35589e58b4508ba000000005dc35589e58b45085dc3 *5589e58b45088b550c5dc35589e556538b450c8b7508b900000000bb0000000085f6744285f67f *0783feff7410eb1783fe0175128b08bb00000000eb298b08bb00000000eb198b08bb000000008b *400489c2b80000000001c111d385f67907f7d983d300f7db89c889da5b5e5dc35589e556538b45 *0c8b7508b900000000bb0000000085f6744285f67f0783feff7410eb1783fe0175128b08bb0000 *0000eb298b08bb00000000eb198b08bb000000008b400489c2b80000000001c111d385f67907f7 *d983d300f7db89c889da5b5e5dc35589e557565383ec188b750c8b7d08c645f30a6a02e8540d00 *0083c410eb0ee8fc4efeff833804752929de01df83ec0456576a02e8974dfeff89c383c41039f0 *7cdd83ec046a018d45f3506a02e87e4dfeff8d65f45b5e5f5dc39090b801000000c3565383ec04 *8b5424108b5c24148b742418b80000000085d2740783fa017437eb6b83ec0868109707086a0ee8 *8c0b000083c41085c07455c60058c6400168895802c6400650c64007b8897008c6400cffc6400d *e0eb3683ec0868109707086a11e8570b000083c41085c07420c60068895801c64005b8897006c6 *400a68c7400b0c190808c6400fffc64010e083c4045b5ec35383ec088b5c24108a033c680f95c2 *3c580f95c021d0a801741683ec04536820970708ff3544270808e8ee4cfeffeb23803b68750883 *ec0cff7301eb0683ec0cff7302e8ed2c0000c60300891c24e8740b000083c4185bc383ec146a00 *680c190808e801ffffff83c41cc3905589e55383ec0483e4f083ec0468c09e0408ff750cff7508 *e886070000e8b106000083c4086a006878e50708e86805000089c3e89c06000083c41083fb0274 *1383fb02770783fb017434eb3983fb037416eb3283ec0c6850970708e8d2090000b8fa000000eb *1283ec0c68bd970708e8be090000b8fc00000083c410eb14b800000000eb0d83ec0c6878970708 *e80609000083ec0c50e8ca080000b8000000008b5dfcc9c390909083ec186a02e817430000c700 *249705088b54242089500483c41cc383ec186a02e8fc420000c7003c9705088b54242089500483 *c41cc35383ec148a5c241c6a02e8dc420000c700009f050881e3ff00000089580483c4185bc353 *83ec148b5c241c6a02e8b9420000c700189f050881e3ffff000089580483c4185bc383ec186a02 *e89b420000c700309f05088b54242089500483c41cc3565383ec108b5c241c8b7424206a03e876 *420000c700489f050889580489700883c4145b5ec383ec186a02e85a420000c700bcaa05088b54 *242089500483c41cc35383ec148a5c241c6a02e83a420000c700d4aa050881e3ff000000895804 *83c4185bc35383ec148b5c241c6a02e817420000c700ecaa050881e3ffff000089580483c4185b *c383ec186a02e8f9410000c70004ab05088b54242089500483c41cc3565383ec108b5c241c8b74 *24206a03e8d4410000c7001cab050889580489700883c4145b5ec383ec186a02e8b8410000c700 *789a05088b542420895424188b54241889500483c41cc383ec288b44242c8b5424308944241c89 *5424206a03e885410000c700609a05088b5424208b4c242489542418894c241c8b5424188b4c24 *1c89500489480883c42cc383ec186a02e853410000c700cca305088b54242089500483c41cc383 *ec186a02e838410000c70098a105088b54242089500483c41cc383ec186a02e81d410000c700b0 *a105088b54242089500483c41cc3b8980f0808837c2404007505b8900f0808c383ec18ff74241c *e8acffffff83c408506814100808e80400000083c41cc383ec186a03e8d2400000c70058fe0608 *8b5424208950048b54242489500883c41cc38b4424048b4004c38b4424048b4004c38b4424040f *be4004c38b4424040fbf4004c38b4424048b4004c38b4424048b50088b4004c38b4424048b4004 *c38b4424048a400425ff000000c38b442404668b400425ffff0000c38b4424048b4004c38b4424 *048b50088b4004c383ec048b4424088b4004890424d9042483c404c383ec0c8b4424108b50088b *400489042489542404dd042483c40cc38b4424048b4004c38b4424048b4004c38b4424048b4004 *c38b4424048b0083e80866837806000f95c025ff000000c35383ec148b1d102a0808c705102a08 *0800000000ff35cc2c0808e83011000083c40c8b48308d51fc8950308b5424148951fc8b48308d *51fc895030c741fc18c7060853ff74241c50e81f12000083c4185bc35383ec148b1d102a0808c7 *05102a080800000000ff742420e8e010000083c40c8b48308d51fc8950308b5424148951fc8b48 *308d51fc895030c741fc18c7060853ff74242050e8cf11000083c4185bc35383ec148b1d102a08 *08c705102a080800000000ff35cc2c0808e88e10000083c40c8b48308d51fc895030c741fcc8f0 *06088b48308d51fc895030c741fce89706088b48308d51fc8950308b5424148951fc8b48308d51 *fc895030c741fc18c7060853ff74241c50e85d11000083c4185bc3565383ec108b7424208b4424 *1cc1e0048b15a02b08088b1c02ff35cc2c0808e81710000083c40c8b48308d51fc895030c741fc *c8f006088b48308d51fc895030c741fce89706088b48308d51fc8950308959fc8b48308d51fc89 *5030c741fc18c70608ff35102a08088d5424085250e8e410000089c3c705102a08080000000083 *c41083f8010f94c285f60f95c021d0a801741183ec0cff74240ce81e270000890683c41089d883 *c4045b5ec35383ec148b1d102a0808c705102a080800000000ff35cc2c0808e86f0f000083c40c *8b48308d51fc895030c741fc00f106088b48308d51fc895030c741fce89706088b48308d51fc89 *50308b5424148951fc8b48308d51fc895030c741fc18c7060853ff74241c50e83e10000083c418 *5bc35383ec148b1d102a0808c705102a080800000000ff742420e8ff0e000083c40c8b48308d51 *fc895030c741fc00f106088b48308d51fc895030c741fce89706088b48308d51fc8950308b5424 *148951fc8b48308d51fc895030c741fc18c7060853ff74242050e8ce0f000083c4185bc383ec0c *8b5424108b44241483f802741383f802770783f801743aeb1d83f803740deb1683ec085268a297 *0708eb1583ec085268b9970708eb0a83ec04505268c9970708e86f030000c7042401000000e8bc *02000083c40cc3c3c39090908b542404b80000000083fa0277078b0495182a0808c38b54240483 *fa02770b8b442408890495182a0808c3565383ec048b5c24108b742414ff05142a0808833d142a *0808017f7ee8e2290000e873200100e83243000085db742785f6742368603e080868a42c0808ff *3653e8b92101008b03a3982c08088b06a39c2c080883c410e8600f0000e829370000e849240000 *e8ab40000083ec0c6a14e866410000e811290000e8d81f0000e85923000083c40868cca107086a *00e8fb45feffe8b629000083c41083c4045b5ec383ec148d44241c508d44241c50e84effffff83 *c404ff742424e83600000083c41cc38b5424048b4c240885d27407a1982c0808890285c97407a1 *9c2c08088901c38b442404a3982c08088b442408a39c2c0808c3565383ec048b742410833d142a *0808007f0d83ec0c68fc970708e88201000083ec0c6a04e8c5b2000089c38b00a3242a0808c700 *06f10608ba0100000083c41085f6740da1242a0808897004ba02000000a1242a08088d0490a318 *2e080883ec0868c82d0808680cf10608e851310000891c24e8bfb4000083c4145b5ec35381ec08 *010000833d142a0808007f0d83ec0c68e5970708e806010000ff0d142a0808833d142a0808000f *8fac000000e8ef280000e851400000e8990e0000e83940000083ec0c6a00e84b030000c7042401 *000000e83f030000c7042402000000e83303000083c4048d9c248c00000053e81548feff83c408 *6a1653e80a46feff83c40c8d44240450536a00e87a46feffbb0000000083c41083ec0c53e8c1fd *ffff83c41085c0740f83ec04506a0053e85644feff83c4104383fb027edb83ec046a008d442408 *506a02e83c46feffe8a9280000e8db38000083c41081c4080100005bc383ec0ce814ffffff83c4 *0cc383ec0c833d142a0808017516e80e410000e8fafeffff83ec0cff74241ce80400000083c40c *c383ec18ff74241ce88947feff905383ec088d5c2414833d9c2c0808007424833da02c08080074 *1b83ec04ff35a02c08086829980708ff3544270808e8e542feffeb14ff35442708086a106a0168 *2d980708e8ff47feff83c40c53ff742418ff3544270808e8cc44feff83c408ff35442708086a0a *e8bc45feffff35442708086a756a0168b0980708e8c847feff83c414ff3544270808e8ca42feff *c70424fe000000e859ffffff5383ec088d5c2414833d9c2c0808007425833da02c080800741c83 *ec04ff35a02c0808683e980708ff3544270808e84b42feff83c41083ec0453ff742418ff354427 *0808e84544feff83c408ff35442708086a0ae83545feff83c4185bc383ec0c8d44241483ec0450 *ff742418ff3544270808e81644feff83c408ff35442708086a0ae80645feff83c41cc35383ec14 *8b5c241c53e85443feff83c41085c0751983ec08ff74241c53e8843f0000c70424fe000000e89f *feffff83c4085bc35383ec108b5c241c53ff74241ce82d45feff83c41085c0751983ec08ff7424 *2053e84d3f0000c70424fe000000e868feffff83c4085bc35383ec108b44241c8b5c24180fafd8 *ff74242053e87dffffffba0000000083c41039da7d09c60402004239da7cf783c4085bc383ec18 *ff74241ce8d945feff83c41cc383ec18ff3540270808e87741feffff742424ff74242468289907 *08ff3544270808e81f41feff83c414ff3544270808e85141feff83c410e8d942feff83ec18a1c8 *2c0808c1e00250e8f43e000083c41cc383ec14a1d02c0808c1e00c506a00e8b93e0000c70424fb *000000e8b0fdffff8b54240489d0803a0074064080380075fa29d0c3a1282a08088d5001891528 *2a0808c3c705282a080800000000b800000000c35383ec108b5c24186a0353e85244feff83c410 *f6c408741283ec0480e4f7506a0453e83b44feff83c41083c4085bc35383ec108b5c24186a0353 *e82344feff83c410f6c408751283ec0480cc08506a0453e80c44feff83c41083c4085bc3555756 *5383ec0c8b5c24208b7424248b7c24288b6c242c83fe000f87d900000081fbe7030000770b83ec *04536843980708eb4783fe000f87bd00000081fb3f420f0077446a0068e80300005653e8d22a01 *0083c4105083ec0c6a0068e80300005653e87d29010083c41c50b84798070885ed7505b8529807 *085057e8e444feff83c410e9fc00000083fe00776c81fbffc99a3b776483ec106a0068e8030000 *5653e87e2a010083c414506a0068e80300005653e82c29010083c4106a0068e80300005250e85b *2a010083c4105083ec0c6a006840420f005653e80629010083c41c50b85c98070885ed0f858b00 *0000b86e980708e98100000083ec106a0068e80300005653e81a2a010083c4185083ec046a0068 *e80300005653e8c528010083c4106a0068e80300005250e8f429010083c414506a006840420f00 *5653e8a228010083c4106a0068e80300005250e8d129010083c4105083ec0c6a006800ca9a3b56 *53e87c28010083c41c50b87e98070885ed7505b8979807085057e8e343feff83c42089f883c40c *5b5e5f5dc390905557565383ec188b6c242cc7442410000000008b442430894424148d44241450 *e8fab0000083c410833d4c2a0808007417c7054c2a080800000000c744240401000000e8650500 *00813d14190808602d08087405e8a61b0000813d382a08081c190808750c813d402a08081c1908 *08741e83ec0c813d302a08081c1908080f94c025ff00000050e85514000083c410833d4c2a0808 *007590813d302a08081c1908080f85b5000000813d382a08081c1908080f85a5000000813d402a *08081c1908080f859500000083ec086a0168de620608e8c9b0000083c410813d302a08081c1908 *087577e8ce100000813d302a08081c1908087566e89f18000085c07425e8a6180000833d4c2a08 *08000f8516ffffff813d14190808602d0808743fe8dc1a0000eb388b152c2a08088b02668b4012 *25ffff00004883f802771483ec0868f80f0808ff32e8580d000083c410eb0d83ec0c684c990708 *e95d0300008b15302a080881fa1c19080874258b4204a3302a0808c742041c190808813d302a08 *081c190808750ac705342a08081c19080889d38b442408895068833d142d0808007530813d302a *08081c1908087518813d382a08081c190808750c813d402a08081c190808740cc705482a080801 *000000eb0ac705482a080800000000668b431089c681e6ffff0000e8d73dfeff8b5320891083fe *01742d83fe01721183fe02740583fe047531bf04000000eb3783ec088b44241083c008506890f0 *0608e89a290000eb0c83ec0cff742414e84804010089c783c410eb0d83ec0c687c990708e97602 *00008b4424088b5868e8743dfeff8b0089432083ff040f8753020000ff24bdc09b07088b442408 *817874000400000f86c50000008b40748d3c85ff0f0000c1ef0c89f80305a02d08083b05a82d08 *080f83a4000000a3a02d080883ec0c57e844aa000089c68b4424188b40708946088b4424188b40 *708b400c89460c8b4424188b407083c41083780c0074088b400c897008eb0f8b542408a1342c08 *0889700489726c8b4424088b407089700c89f289f8c1e0058d043039c6731f89c1a1342c080889 *4214c7421000000000c7421c0000000083c22039ca72e3a1342c08080178088b442408897070a1 *302a0808894304891d302a0808eb2e83ec0c53e8aae60000c705582a080801000000c705482a08 *0801000000a1302a0808894304891d302a080883c410813d342a08081c1908080f8546010000e9 *2b01000083ec0c53e867e60000891c24e8dd06000089c283c410837b240074058b43248910a130 *2a08088942048915302a0808813d342a08081c1908080f85020100008915342a0808e9f7000000 *668b431025ffff000039f00f8503feffff83ec0c53e80ce6000083c410e9a300000083ec0cff35 *44270808e8fc3afeff891c24e8eee5000083c410e9b7000000395d00757a66837b1004751a837d *0800740b8b45088b53308b52048910c7450401000000eb1c837d080074098b4508c70000000000 *837c24040119c083c003894504837d0c00750a8b4510a32c2a0808eb098b550c8b451089421083 *7d1000740a8b4510c7400c0000000083ec0cff742414e8b6ac000083c41c5b5e5f5dc3837b2400 *7432813d302a08081c1908087508891d302a0808eb08a1342a0808895804891d342a0808eb0e83 *ec085768a0990708e8ddf6ffff833d582a0808000f845cfbffff83ec086a0068de620608e8c5ac *0000c705582a080800000000e93bfbffffb800000000c3b800000000c35383ec08e8d8f3ffffe8 *c039feff89c385c00f8593000000c705342a08081c190808c705302a08081c190808a1442a0808 *3d1c19080874198b580483ec0c50e81109000083c41089d881fb1c19080875e78b152c2a080885 *d2741e8b4210a32c2a080883ec0c52e8fdf7ffff83c4108b152c2a080885d275e283ec086a00ff *74241ce873f1ffff83c40850684c9c0708e8f4f2ffffe848f3ffffe8e4f4ffffc7042400000000 *e8eef5ffffe832f3ffff89d883c4085bc35383ec08a1442a08083d1c19080874198b580c83ec0c *50e87008000083c41089d881fb1c19080875e783c4085bc3575653e8e139feff8b388b74241083 *ee088b466866c74010000083ec0cff7668e8eee300008b5668a1542a08088942048b4668a3542a *08088b466883c41083781800751266c7401207008b4668c740181c190808eb098b466866c74012 *08008b46688b581c83ec0c56e8ecaa0000e87639feff893883c41089d85b5e5fc357565383ec10 *8b742420e85c39feff8b3883ec0c8d44241850e8a8aa0000ba542a08088b1d542a080883c41081 *fb1c190808742239731c74108d53048b5b0481fb1c19080875edeb0d8b4304890281fb1c190808 *750d83ec0c68c8990708e8e0f4ffffc743041c19080866837b1207751583ec0cff7318e81f0500 *00c743180000000083c41066c7431200008b44240c895868e8d338feff89388b44240c83c00883 *c4105b5e5fc38b4424048b481c8b4424088b501cb8ffffffff39d1720a39d10f97c025ff000000 *c38b4424048b401cc35557565383ec0c8b44242083f8257705b8260000008d70f383ec0c50e881 *2e000089c3c70080ee060866c740100000a11019080889431cff051019080866c743120000c743 *1800000000c7432000000000c743240000000089732883c4108b0dc82c080881f900f80300764e *ba00f8030089c889d5ba00000000f7f581fafffb0100771a89cac1ea0bb820080402f7e289d0c1 *e00729d089c1c1e10beb1c89cac1ea0bb820080402f7e289d0c1e00729d0c1e00b8d8800f80300 *8d41f389432c8d14b38d4230894330c7423060f00608a1442a080889430c891d442a080889d883 *c40c5b5e5f5dc38b542404a1302a08088942048915302a0808813d342a08081c19080875068915 *342a0808c383ec18ff74241ce8cfffffff83c41cc35383ec108b5c241868589c07086a14e866f4 *ffff89c289188943248b442424894208c7420400000000a12c2a0808894210c7420c0000000083 *c41085c0740389500c89152c2a0808a1302a0808894304891d302a0808813d342a08081c190808 *7506891d342a080883ec08ff74242052e89f00000083c4185bc383ec0cc705302a08081c190808 *c705342a08081c190808c705382a08081c190808c7053c2a08081c190808c705402a08081c1908 *08c705542a08081c190808c7052c2a080800000000c705442a08081c190808c705482a08080000 *0000c7054c2a0808000000008b0d102d0808ba6766666689c8f7eac1fa0389c8c1f81f29c28915 *142d0808e8c1a7000083c40cc3c705502a080801000000c3565383ec0c8b5c2418ff74241c53e8 *91f6ffff8b7304891c24e8e5f3ffff89f083c4145b5ec35383ec088b5c2410813d302a08081c19 *0808741683ec0c68302a0808ffd3c70424342a0808ffd383c410813d382a08081c190808741683 *ec0c68382a0808ffd3c704243c2a0808ffd383c410813d402a08081c190808740d83ec0c68402a *0808ffd383c410813d542a08081c190808740d83ec0c68542a0808ffd383c41083ec0c53e88712 *000083c4185bc383ec146a0068de620608e883a7000083c41cc383ec146a0168de620608e870a7 *000083c41cc35383ec148b5c241c53e840ffffff891c24ff155c2a080883c4185bc383ec148b44 *2418a35c2a08086a006890630608e838a7000083c41cc35557565383ec0c8b6c24208b45283b45 *2c721883ec0868d00f080855e81604000089e883c410e9250100008b45288b552c01c039d07602 *89d08d1c853310000081e300f0ffffc1eb0289d981fb00f80300764eba00f8030089d889d7ba00 *000000f7f781fafffb0100771a89dac1ea0bb820080402f7e289d0c1e00729d089c1c1e10beb1c *89dac1ea0bb820080402f7e289d0c1e00729d0c1e00b8d8800f8030089cb8d41f38944240883ec *0c51e8ae2a000089442414fcb90d00000089c789eef3a58b45288d4485008b553029d083c0348b *4c24148d1c99895c241083e0fc2944241089d689c289c1c1e9028b7c2410f3a589fb83e00285c0 *740c668b0666890783c30283c60289d083e00185c074048a0688038b5424108b4424148950308b *4c241889482866c7451003008945048b45288d44853489453066c7451200008b7c2414c7470800 *00000083c41089f883c40c5b5e5f5dc38b54240466c7421200008b4a04a1302a08088942048915 *302a0808813d342a08081c19080875068915342a080889c8c383ec0c8b4424103d1c1908087413 *83ec0c50e8b9ffffff83c4103d1c19080875ed83c40cc383ec0c8b4424103d1c190808741383ec *0c50e894ffffff83c4103d1c19080875ed83c40cc3c7054c2a080801000000c705482a08080100 *0000c35756538b5c241066837b12000f84d0010000668b431225ffff000083f8060f876e010000 *ff2485d49b0708be1c1908088b7b148d4f048b570439f2742a39da75168b43048901395f0c0f85 *5f01000089770ce9570100008d4a0489d68b520481fa1c19080875d683ec0c68e8990708e92601 *00008b43148d48048b500481fa1c190808741639da0f841c0100008d4a048b520481fa1c190808 *75ea83ec0c680c9a0708e9f20000008b43146683781003750a8b4004668378100374f68d48188b *501881fa1c190808741639da0f84d70000008d4a048b520481fa1c19080875ea83ec0c68389a07 *08e9ad000000b9000000008b15382a080881fa1c190808744e39da753d85c975238b4304a3382a *0808391d3c2a08080f8592000000c7053c2a08081c190808e9830000008b420489410439153c2a *08087575890d3c2a0808eb6d89d18b520481fa1c19080875b283ec0c68649a0708eb42b9000000 *008b15402a080881fa1c190808741d39da750c85c9742c8b4204894104eb3389d18b520481fa1c *19080875e383ec0c68889a0708eb0883ec0c68639c0708e8aaedffff8b4304a3402a0808eb058b *43048901c743041c19080866c743120000c7431400000000a1302a0808894304891d302a080881 *3d342a08081c1908087506891d342a08085b5e5fc383ec146a00ff74241ce85c00000083c41cc3 *5383ec088b5c2410668b43106683f8040f94c26683f8020f94c009d0a801751f668b431283e807 *6683f801760c83ec0c53e8d2fdffff83c41066c74310020083c4085bc383ec14ff74241cff7424 *1ce80400000083c41cc35557565383ec0c8b542420668b42106683f8040f94c26683f8020f94c0 *09d0a8010f857002000083ec0cff74242ce87dfdffff8b4424308b703083c410813e18c7060875 *0583c604eb0983ee04c706281908088d6e048b4e0483e90c668379082a0f84ac00000066837908 *2b0f95c2837c2424000f94c009d0a8010f8492000000668379082c0f84870000008b550083ea0c *668b420825ffff000083e82383f8067737ff2485f09b07088b450489c2c1ea18c1e81025ff0000 *008d441015eb218b450483c003eb198b42048b00eb118b45048b401883c002eb078b420483e01f *408d6c85008b4d0083e90c668379082a7421668379082b0f95c2837c2424000f94c009d0a80174 *0b668379082c0f8579ffffff668b410825ffff000083f82b741d83f82b7f0a83f82a745fe95a01 *000083f82c0f843f010000e94c01000083ec0c6a02e8e2250000c700f8c406088b542434895004 *8d75fc83c4108b542420837a18007507c742181c1908088906c746fc18c706088d46fc8b542420 *89423066c742100000e90d01000089eb29f389d8c1f8028d58ff83c00283ec0c50e88825000089 *c78958048b0689470883c604ba0000000083c41039da730e8b068944970c83c6044239da72f2c7 *07589706088b4d048b11668b42fc25ffff0000f6840041220808010f858300000081fadced0608 *750e83ec0cff7104e878fbffff83c4108b4d0489c82500f00f00c1e80789ca81e20000f0ff89c3 *09d3837b1000750e8979048b4504c70064ec0608eb408b45048978048b4d048139dced06087426 *8b43108d04c08b15282c08088b4482148941088b43108d04c08b4d048b15282c0808894c82148b *4504c70044ed060883c604893ee9dbfdffff83c6048b44242066c740100200897030eb0d83ec0c *68719c0708e862eaffff83c40c5b5e5f5dc35383ec088b54241081fa1c19080874628b5a0ca144 *2a080889420c8915442a0808668b421225ffff000083f801740f83f801723483f802740f83f803 *751d83ec0868f00f0808eb0883ec0868f80f080852e80bfdffff83c410eb0d83ec0c68b09a0708 *e8f2e9ffff89da81fb1c190808759e83c4085bc35756538b35442a080881fe1c1908080f84c400 *000066837e1003750a8b760466837e100374f666837e12020f85990000008b7e148b4e308b0183 *e80c668b400825ffff000083f82a740783f82c747beb1d397904751383ec0868f80f080856e886 *fcffff83c410eb6183c108ebc98b1183ea0c668b420825ffff000083e82383f8067737ff24850c *9c07088b410489c2c1ea18c1e81025ff0000008d541015eb218b510483c203eb198b42048b10eb *118b41048b501883c202eb078b520483e21f428d0c91e96dffffff8b760c81fe1c1908080f853c *ffffff5b5e5fc383ec0c8b542410668b421225ffff000083f8080f87a5000000ff2485289c0708 *83ec04ff7214687c9c0708eb0b83ec04ff7214689a9c0708ff3544270808e8db2bfeffeb7583ec *04ff721468b79c0708ebe6ff35442708086a156a0168cb9c0708eb5283ec048b4214ff701c68e4 *9a0708ebc5ff35442708086a1a6a0168e19c0708eb31ff35442708086a0e6a0168fc9c0708eb20 *ff35442708086a1e6a0168189b0708eb0fff35442708086a406a0168389b0708e89430feff83c4 *1cc352ff721c668b421225ffff000050687c9b0708e830e8ffff83ec0c8b542410668b421025ff *ff000083f802740783f8047413eb27ff35442708086a0f6a01680b9d0708eb0fff35442708086a *0d6a01681b9d0708e83730feffeb0983ec0c52e8defeffff83c41cc35383ec08ff35442708086a *0d6a0168299d0708e81030feff8b1d442a080883c41081fb1c190808746453ff731c68379d0708 *ff3544270808e8bb2afeff83c404ff731ce85826000083c41085c0741783ec045068489d0708ff *3544270808e8952afeff83c41083ec0c53e841ffffff83c408ff35442708086a0ae8892dfeff83 *c4108b5b0c81fb1c190808759c83c4085bc383ec18ff74241ce86af7ffff83c41cc3909056538b *5c240cb900000000813d402a08081c1908087465a1402a080889c289de2b701485f67e558b4204 *a3402a080866c742120000c742041c190808a1302a08088942048915302a0808813d342a08081c *19080875068915342a0808b901000000813d402a08081c190808740f8b15402a080889d82b4214 *85c07fab89c85b5ec35557565381ec1c010000bbffffffffc744240400000000c7442408000000 *00c744240c00000000e8cb020100a3602a080889c783ec0c50e843ffffff83c41085c00f85fb02 *0000be0000000083bc243001000000742cbeffffff07813d402a08081c190808741ba1402a0808 *8b401429f88d04808d04808d04808d048089c6c1e605b800000000bd200000008dbc2490000000 *89e9fcf3ab8d7c241089e9fcf3ab8b0d382a080881f91c19080874628b7904668b411225ffff00 *0083f804740783f805741deb338b411439c37d0289c389c2c1ea0583e01f0fab849490000000eb *258b411439c37d0289c389c2c1ea0583e01f0fab449410eb0d83ec0c68509d0708e99a01000089 *f981ff1c190808759eba83de1b4389f0f7e2c1ea128954240889d1c1e10529d189c8c1e00629c8 *8d04c2c1e00629c68974240ce9a4000000e89e29feff8338047454c7442404010000008338090f *84b400000083ec10e88029feff83c40cff30685b9d0708ff3544270808e85b28feff83c404ff35 *44270808e88d28feffc704245f9d0708e82128feffc70424669d0708e903010000813d14190808 *602d0808740ae86f050000e98e010000833d4c2a0808000f858101000083ec10e82e0101008904 *24e8aefdffff83c410813d302a08081c1908080f855e01000083ec0c8d4c2414516a008d442424 *508d8424a8000000508d430150e86f28feff83c42085c00f8831ffffffbd000000008b44240483 *c8010f84fe0000008b0d382a080881f91c1908080f84c50000008b7904668b411225ffff000083 *f804740783f8057426eb4ebe00000000837c240400753b8b411489c283e21fc1e8050fa3948490 *0000000f92c2eb1fbe00000000837c24040075178b411489c283e21fc1e8050fa35484100f92c2 *84d27414be01000000eb0d83ec0c68749d0708e815e4ffff85f6742f66c741120000c741041c19 *0808a1302a0808894104890d302a0808813d342a08081c1908087519890d342a0808eb1185ed75 *08890d382a0808eb03894d0489cd89f981ff1c1908080f853bffffff85ed7516c7053c2a08081c *190808c705382a08081c190808eb0dc745041c190808892d3c2a080883bc243001000000741983 *3d4c2a0808007510813d302a08081c1908080f84e5fcffff81c41c0100005b5e5f5dc39090c353 *83ec088b5c24103b1d882a08087c66833d842a080800751783ec08687f9d07088d049d04000000 *50e863e4ffffeb1b83ec04687f9d07088d049d0400000050ff35842a0808e879e4ffffa3842a08 *0883c4108b15882a080839da7f11a1842a0808c70490ffffffff4239da7eef8d4301a3882a0808 *83c4085bc383ec186a00e88be5ffff83c41cc3565381ec840000008bb424900000008b0d141908 *08a1842a08088b14b08d4104a314190808c1e204a1a02b08088b04108901813d14190808a02d08 *08751983ec0c688d9d0708e831e3ffffc7042401000000e87ee2ffff83ec0c8d5c240c53e8e629 *feff83c4085653e8dc27feff83c40c6a00536a01e84f28feff83c41083fe12750d83ec0c6a12e8 *65ffffff83c410c705482a08080100000081c4840000005b5ec383ec1868a02a0808e89a29feff *83c41cc383ec1068202b080868a02a08086a00e80228feff83c41cc383ec106a0068202b08086a *02e8ed27feff83c41cc3833d8c2a0808000f95c025ff000000c383ec0c813d14190808602d0808 *7523833d4c2a080800751ae8ec27feff813d14190808602d08087509833d4c2a08080074e683c4 *0cc35557565381ecac0100008b9c24c00100008bbc24c40100008bac24c801000085db0f88c701 *000083ec0c8db4242c01000056e8ec28feff83c41085c00f85ac01000083ec085356e8d726feff *83c41085c00f859701000083ec048d8424a400000050566a00e83927feff83c41085c00f857901 *000083ec0c53e8d2fdffffa1842a08088b14988954241cc78424a40000000000000083c41083ff *fe741d83fffe7f0e8d470583f8010f8793000000eb5583ffff7429e987000000a1842a0808c704 *98feffffff83ec085368a02a0808e84f29feffc744242001000000eb22a1842a0808c70498ffff *ffff83ec085368a02a0808e82b29feffc74424200000000083c410eb498b5500a1842a08088914 *9883ec085368a02a0808e80526feffc74424201672060883c41083fffb750bc784249400000000 *000080ff058c2a0808eb0d83ec0c68a69d0708e86de0ffff83bc24cc0100000074158d7c2414fc *b9200000008bb424cc010000f3a5eb1083ec0c8d44242050e8a927feff83c410b80000000083fb *11750e833d802a0808007405b8010000000984249400000083ec046a008d4424185053e88722fe *ff83c41085c0751b83ec046a008d8424a8000000506a02e8dc25feff83c41085c07427837c240c *00781983ec0ca1842a0808ff3498e807030000ff0d8c2a080883c410bafdffffffeb1c8b44240c *83c0038b54240c83f802760c8b44240c894500bafcffffff89d081c4ac0100005b5e5f5dc35383 *ec08e866fdffff813d14190808602d080874728b15141908088d42fca3141908088b5afc83ec0c *ff35cc2c0808e8f8eaffff8b48308d51fc895030c741fc00f106088b48308d51fc895030c741fc *e89706088b48308d51fc8950308959fc8b48308d51fc895030c741fc18c70608890424e8c1ebff *ff83c410813d14190808602d0808758ee8fbfcffff83c4085bc3565383ec048b7424108b1d1419 *080881fb602d0808741483eb0483ec0c53ffd683c41081fb602d080875ec83c4045b5ec383ec0c *833d4c2a080800740d83ec0c68fc000000e8b5deffffe85fefffff83c40cc35381ec34010000c7 *84249c0000001d7606088d9c249c0000008d8424a000000050e8fb25feffc78424240100000000 *000083c40c8d44240450536a02e8f020feff83c41085c0741083ec0c68c09d0708e8fedeffff83 *c41083ec086a016a02e85d21feffc78424a00000000872060883c4048d9c249c0000008d8424a0 *00000050e89b25feffc78424240100000000000083c40c8d44240450536a12e89020feff83c410 *85c0741083ec0c68ec9d0708e89edeffff83c41081c4280100005bc3908b442404c1e0048b15a0 *2b08088b0402c3c3538b5c24088b0b668b41fc6683f81e0f94c26683f8220f94c009d0a8017515 *668379fc1f740e668379fc207407668379fc2175328b5b048b0b668b41fc6683f81e0f94c26683 *f8220f94c009d0a80175e3668379fc1f74dc668379fc2074d5668379fc2174ce89d85bc3565383 *ec048b742410833da42b0808007505e8e400000083ec0c56e876ffffff89c683c40850ff35ac2b *0808e881e4000083c41085c075508b0da02b0808a1a42b080889c329cbc1fb048b00a3a42b0808 *89dac1e204c744110800000000a1a02b0808893410a1a02b0808c744100c0000000083ec045356 *ff35ac2b0808e813e5000089d883c41083c4045b5ec383ec18ff74241ce866ffffff8b0da02b08 *0889c2c1e204ff44110883c41cc35383ec088b442410c1e0040305a02b0808ff480883780c0075 *2f83780800752989c3833800741583ec046a00ff30ff35ac2b0808e831e5000083c410a1a42b08 *088903891da42b080883c4085bc35383ec088b1da82b080885db7567c705a82b08084000000083 *ec0868179e07086800040000e87dddffffa3a02b080883c4108d5010b90000000005f003000039 *d072208908c7400400000000c7400800000000c7400c0000000089c183e81039d073e08915a42b *0808e8c1e60000a3ac2b0808eb688b15a82b08088d0412a3a82b080883ec0468179e0708c1e205 *52ff35a02b0808e840ddffffa3a02b080883c41089dac1e2048d0c10bb000000008d440af039c8 *72208918c7400400000000c7400800000000c7400c0000000089c383e81039c873e0890da42b08 *0883c4085bc35756538b7c2410a1a82b0808c1e0048b15a02b08088d34028d5a1039f373338b0b *85c974263b0da02b08080f92c239f10f93c009d0a8017412894b04837b0800740983ec0c53ffd7 *83c41083c31039f372cd5b5e5fc35756538b7c2410a1a82b0808c1e0048b15a02b08088d34028d *5a1039f3733c837b0c00740c83ec0c8d430c50ffd783c4108b0385c0741d3b05a02b08080f92c2 *39f00f93c009d0a801740983ec0c53ffd783c41083c31039f372c45b5e5fc3575653a1a82b0808 *c1e0048b15a02b08088d34028d5a1039f3737e837b0c00741183ec0cff730ce807a1000089430c *83c4108b0385c0745a3b05a02b08080f92c239f00f93c009d0a8017446837b08007540837b0c00 *752b89df833b00741583ec046a00ff33ff35ac2b0808e814e3000083c410a1a42b08088907893d *a42b0808eb0f83ec0cff33e8a6a00000890383c41083c31039f372825b5e5fc35756538b7c2410 *85ff7426833dac2b080800741d83ec086a00ff35ac2b0808e88be30000e8d2e40000a3ac2b0808 *83c410a1a82b0808c1e0048b15a02b08088d34028d5a1039f3737e833b007522837b0400746c83 *ec046a00ff7304ff35ac2b0808e881e20000c7430400000000eb4d8b033b05a02b0808720439f0 *724285ff740583ec04eb1d8b033b4304743283ec046a00ff7304ff35ac2b0808e847e2000083c4 *0c89d82b05a02b0808c1f80450ff33ff35ac2b0808e8aae1000083c41083c31039f372825b5e5f *c3909083ec288d44240c50e87b20feffa3b82b08088b442410a3bc2b080883c42cc3a1f02b0808 *2b05f42b080850db04248d642404db05b02b0808def9c383ec0ce8bdffffffa1bc2b08082b05f4 *2b080850db0424db05b02b0808def983c410c383ec648d442408506a00e88b1cfeff8b44243483 *c46cc35383ec088b1dc02c0808833dc42c0808037621536a446a0168309e0708e83121feff536a *3a6a0168789e0708e82221feff83c42083ec0868a6a10708a1f02c0808c1e00250e8e7d9ffffa3 *182c0808ba0000000083c4103b15f02c08087315a1182c0808c7049000000000423b15f02c0808 *72eb83c4085bc383ec186a02e8a01dfeff83c41083f8ff7520ff35442708086a226a0168b49e07 *08e8b420feffc7042401000000e853d8ffffa3b02b0808e8d6feffffa1b82b0808a3b42b080883 *c40cc383ec0ce8c0feffffa1bc2b0808a3c02b0808a1b82b0808a3c82b0808a1b42b08083b05b8 *2b08087e0cc705c42b080800000000eb10a1b82b08082b05b42b0808a3c42b080883c40cc383ec *0ce877feffffa1b82b0808a3d42b08082b05fc2b08082b05c82b0808a3d02b080885c0790ac705 *d02b080800000000a1bc2b08082b05f42b08082b05c02b0808a3cc2b080885c0790ac705cc2b08 *080000000083c40cc383ec0ce81efeffffa1bc2b08082b05cc2b08082b05f42b08082b05c02b08 *08a3d82b0808a1b82b08082b05d42b0808a3dc2b0808833dd82b080800790ac705d82b08080000 *0000833ddc2b080800790ac705dc2b08080000000083c40cc383ec0ca1082d080885c0743883f8 *017620ff35442708086a046a0168b0a10708e86b1ffeffc705142c080801000000eb1083ec08ff *35442708086a07e82f1dfeff83c410833dc42c080800742ce876fdffffa1bc2b0808a3f02b0808 *a1b82b0808a3f82b0808833dc42c080800740ae8b2fdffffa30c2c080883c40cc35557565383ec *0c8b6c24308b35c02c0808833dc42c0808000f8454010000e828fdffffa1bc2b0808894424088b *1db82b080889c72b3df02b080889d82b05f82b080889442404833dc42c0808040f94c285f60f95 *c021d0a8010f84a6000000e845fdffff89042483ec0c8b442434c1e002508b442434c1e002508b *442434c1e0025068b5a1070856e85619feff83c414558b150c2c080889d02b05102c0808508b44 *241429d05089d82b05b42b080850db04248d6424ecdb05b02b0808dcf9d9c9dd5c2410db442438 *d8f1dd5c2408db442434d8f1dd1c2457db04248d6424fcdef1dd1c2468d89e070856e8f318feff *8b442440a3102c080883c43456e82119feff83c410a1182c0808013ca88b44242cba0000000001 *05e82b08081115ec2b08088b442420ba000000000105e02b08081115e42b0808013df42b08088b *4424040105fc2b0808a1f02c08084839c575218b4424283b05002c08087605a3002c0808ff0508 *2c08088b4424280105042c0808833d142c0808007421ff35442708086a086a0168c4a10708e884 *1dfeffc705142c08080000000083c41083c40c5b5e5f5dc35557565381ec3c0200008bbc245002 *00008b35c02c0808833dc42c0808000f8409050000c744242000000000e876fbffffa1bc2b0808 *8944240ca1b82b08082b05b42b08088944242489fac1fa1f013de02b08081115e42b0808db4424 *0cd9eed9c9dae9dfe080e44580f4407508c744240c01000000db442424d9eed9c9dae9dfe080e4 *4580f4407508c744242401000000bb000000003b1df02c0808731c8b0d282c08088b15f02c0808 *8d04db8b6c811c016c24204339d372f0833dc42c0808030f97c285f60f95c021d0a801743f83ec *0c68cca1070868cca107088d04bd000000005068cda1070856e84f17feff83c418b800000000ba *000000005250525068dea1070856e83317feff83c420833dc42c0808020f97c285f60f95c021d0 *a8010f840d0300006a018d5c243453a1e02b08088b15e42b08080fa4c202c1e0025250e8b3d6ff *ff83c40c53680c9f070856e8e816feff6a0153a1e82b08088b15ec2b08080fa4c202c1e0025250 *e888d6ffff83c41c5368eda1070856e8bd16feff83c410833d082c080800742c6a0153a1002c08 *08c1e002ba000000005250e856d6ffffff35082c08085368309f070856e88816feff83c42083ec *08566a0ae88a19feffbb0000000083c4103b1df02c0808733a83ec10a1182c0808db0498db05b0 *2b0808def9dd1c24538d14dba1282c0808ff74901c68609f070856e83c16feff83c420433b1df0 *2c080872c683ec04a1902c080825ff0f000050688c9f070856e81716feff83ec08db05c42b0808 *db05b02b0808dcf9d9c9dd5c2408db05c02b0808def1dd1c2468ac9f070856e8ea15feff83c408 *db05d02b0808db05b02b0808dcf9d9c9dd5c2408db05cc2b0808def1dd1c2468d49f070856e8bd *15feff83c408db05fc2b0808db05b02b0808dcf9d9c9dd5c2408db05f42b0808def1dd1c2468fc *9f070856e89015feff83c408db05dc2b0808db05b02b0808dcf9d9c9dd5c2408db05d82b0808de *f1dd1c246824a0070856e86315feff83c408db44243cdd5c2430db05b02b0808dd442430d8f1dd *5c2408db442424dd542428def1dd1c24684ca0070856e83015feff83c408db05fc2b0808db05b0 *2b0808dcf9d90520a20708dccadd442430d8f2defbd9cadd5c2408db05f42b0808d8f1decadc7c *2428def9dd1c246878a0070856e8eb14feff83c4208b44240c3b05f42b0808750d6a018d442434 *506a006a00eb5d6a018d44243450a1e02b08088b15e42b08080fa4c202c1e0025250df2c248d64 *240885d27906d80524a20708dd5c2430dd4424308b4424142b05f42b080850db04248d6424fcdb *05b02b0808def9def9dd1c24e897f9000083c4085250e829d4ffff83c40c8d4424345068a4a007 *0856e85a14feff83c4088b4424142b05f42b08082b05c02b080850db04248d6424f4db05b02b08 *08dcf9d9c9d80d20a20708db44243cd8f2d8f9dd5c2408db442424def2def1dd1c2468d0a00708 *56e80d14feff83c420833dc42c0808020f94c285f60f95c021d0a8010f84bf000000a1e02b0808 *8b15e42b08080fa4c202c1e0025250680aa2070856e8d213feff83ec24db05fc2b0808db05b02b *0808dcf9d9c9dd5c2428db05f42b0808d8f1dd5c2420db05d02b0808d8f1dd5c2418db05cc2b08 *08d8f1dd5c2410db05c42b0808d8f1dd5c2408db05c02b0808def1dd1c24a1902c080825ff0f00 *0050ff35082c0808a1002c0808c1e00250b800000000833d082c0808007413a1042c0808c1e002 *ba00000000f735082c080850ff7424646810a1070856e83513feff83c45083ec0c56e86913feff *83c4103b3544270808740c83ec0c56e8e516feff83c41081c43c0200005b5e5f5dc3b804000000 *f725382c0808c390909081ec1c20000089e0050020000089580089700489780889680c8b9c2424 *2000008b842420200000ffe089f089e281c2002000008b5a008b72048b7a088b6a0c81c41c2000 *00c39090565383ec148b7424208b5c2424c744240800000000c744240c0000000089f0c1f81f89 *c131f129c1497828d90528a20708dd442408d8c98b048bba000000005250df2c248d642408dec1 *dd5c24084979e0ddd8dd442408d9eed9c9dde1dfe0ddd980e44580fc40741c83ec04ff74242c8d *6424f8dd1c24e8c417feffdd5c241883c410eb02ddd885f679058074240f80dd44240883c4145b *5ec35383ec088b5c241089dac1fa1f89d031d829d050db04248d642404dd1c24dd0424d9eed9c9 *dde1dfe0ddd980e44580fc40741c83ec04ff7424188d6424f8dd1c24e86017feffdd5c241083c4 *10eb02ddd885db79058074240780dd042483c4085bc3565383ec148b7424208b5c2424b8000000 *008944241089f0c1f81f89c131f129c1497828d90528a20708d9c0d84c24108b048bba00000000 *5250df2c248d642408dec1d95c24104979e0ddd8d9442410d9eed9c9dde1dfe0ddd980e44580fc *40741c83ec04ff74242c8d6424f8dd1c24e8cf16feffd95c242083c410eb02ddd885f679058074 *241380d944241083c4145b5ec35383ec088b5c241089dac1fa1f89d031d829d050db04248d6424 *04d95c2404d9442404d9eed9c9dde1dfe0ddd980e44580fc40741c83ec04ff7424188d6424f8dd *1c24e86916feffd95c241483c410eb02ddd885db79058074240780d944240483c4085bc3555756 *5383ec0c8b7424208b6c24248b4424288b54242c890424895424048b04248b54240489c3c70602 *00000085c07518f7c2ffffff7f7510c7460400000000c7450000000000eb61c746040200000089 *d1c1e91481e1ff07000081e93304000089d781e2ffff0f0081f9cdfbffff740881ca00001000eb *1c41f7c200001000751389d8c1e81f8d145001db49f7c20000100074ed894d008b460889188b46 *0889500485ff7903f75e0483c40c5b5e5f5dc356538b4c240c8b5c24108b542414c70101000000 *f7c2ffffff7f750fc7410400000000c70300000000eb55c741040100000089d0c1f81725ff0000 *002d96000000890389d681e2ffff7f003d6affffff740881ca00008000eb1a8b03408903f7c200 *008000750d01d248f7c20000800074f589038b4108891085f67903f759045b5ec35383ec088b44 *24108b542414890424895424048b14248b4c2404bb0000000089c8c1e81425ff0700003dff0700 *007511f7c1ffff0f00750485d27405bb0100000089d883c4085bc35383ec088b4424108b542414 *890424895424048b14248b4c2404bb0000000089c825ffffff7f3d0000f07f750985d27505bb01 *00000089d883c4085bc383ec0c8b4424108b542414890424895424048b14248b4c2404b8000000 *00f7c10000f07f7511f7c1ffff0f00750485d27405b80100000083c40cc35383ec088b4424108b *542414890424895424048b14248b4c2404bb0000000081f900000080750985d27505bb01000000 *89d883c4085bc38b542404b90000000089d0c1e8173cff750df7c2ffff7f007405b90100000089 *c8c38b44240425ffffff7f3d0000807f0f94c025ff000000c38b542404b90000000089d0c1e817 *84c0750df7c2ffff7f007405b90100000089c8c3817c2404000000800f94c025ff000000c35557 *565383ec0c833d282c0808000f8581030000833dd02c0808007412a1dc2c08083b05d02c080876 *05a3d02c0808833dd02c0808007426a1d42c08083b05d02c0808761983ec0c682ca20708e854cb *ffffc7042401000000e83612feffe8f57b000083ec0868a7a20708a1f02c08088d04c0c1e00250 *e8b6cbffffa3282c0808bd0000000083c4103b2df02c0808733b8d44ed008b15282c08088d0482 *8928c7401020190808c7401420190808c7401c00000000c7402000000000c7400c00000000453b *2df02c080872c58b15282c080889152c2c0808a1f02c08088d04c08d4482dca3302c0808833df0 *2c0808017679c74008010000008b1d302c080883ec0868b9a207086a50e824cbffff89430483c4 *10bd00000000833df02c08080174708d5ced00c1e3028b15f42c0808a1282c0808895418088b35 *282c080883ec0868d0a20708a1f42c08088d0480c1e00450e8dbcaffff89441e0483c41045a1f0 *2c08084839c572b9eb27a12c2c0808c74008010000008b1d2c2c080883ec0868d0a207086a50e8 *a6caffff89430483c410bd000000003b2df02c08080f83ca000000bf000000008b15282c080889 *d68d04ed0000000089c301e83b7c82080f839b0000008d4c1d00c1e1028d04bfc1e00403440e04 *8938c7400400000000c7403400000000c740080000000089ca0315282c0808895010896814c740 *2400000000c7402800000000c7402c00000000c7403c00000000c7403800000000c74018000000 *00c7401c00000000c7404000000000c7404400000000c7404800000000c7402000000000c7404c *00000000478b35282c08083b7c0e080f8265ffffff453b2df02c08080f8236ffffffbd00000000 *833df02c08080174728b15282c080889d38d04ed0000000089c601e8bf00000000837c82080174 *298d4c3500c1e1028b5c0b048d04bfc1e0048d5403508954030c478b1d282c08088b440b084839 *c772d78b0d282c08088d54ed00c1e2028b5c11048d04bfc1e0048b5411288954030c45a1f02c08 *084839c5728e833dfc2c080800742a833df02c080801751283ec0c6870a20708e8f8c8ffff83c4 *10eb0fa1302c08088b4004c7402001000000a1302c08088b400489400ca1282c0808c7400c0000 *0000a1282c08088b4004a3342c0808e89f000000c705b02d080800000000c7051c2c0808000000 *00c705ac2d080800000000c705a02d080800000000a1d42c0808a3a82d080883ec04688b910608 *6853910608682b910608e8720ffeff83c41083c40c5b5e5f5dc383ec1ce8fb030000890424e838 *f2ffff83c41cc38b542404c7420c00000000a1302c08088b4014894208a1302c0808895014c38b *4424048b1089500c8b151c2c0808895008a31c2c0808c35383ec108b1d342c0808ff35d42c0808 *6a00e8730000008943048b15d42c0808a1342c0808895008a1342c0808c7403000000000a1342c *0808c74034000000008b15342c08088b4204a32c2e08088b4204a3302e080883c4185bc3a1342c *08088b500485d2740c8b028942048b520885d275f4a1342c08088b500489152c2e08088b4004a3 *302e0808c35756538b5c24108b7c2414be0000000039fe7333e82c79000089c289580885db7403 *89430ca1342c0808894214c7421000000000c7421c000000008b0289420489d34639fe72cdc743 *0c0000000089d85b5e5fc35756538b7c24108b1d342c08088b730839fe745f39fe723da1342c08 *088b500439fe761f8b5a08c7430c000000002b721883ec0c52e8a279000089da83c41039fe77e1 *a1342c080889500439fe731c8b1d342c080883ec0889f829f050ff7304e847ffffff89430483c4 *10a1342c08088978085b5e5fc35557565383ec0c8b7c242081ff3203000076718d1cbdff0f0000 *c1eb0c83ec0c53e8f676000089c283c41089c58b0d342c08088d71188b4118894208c7420c0000 *00008379180074068b411889500c892ea1342c080801581cc7421000000000a1342c0808894214 *c7421c020000008b028d04b8894204011da02d08088b02e984000000833dac2d0808007410a120 *2c08088d04b83b05242c0808765b833dac2d080800740e8b15202c0808a1ac2d0808895004e8c1 *77000089c2a1ac2d08088942088915ac2d0808c7421000000000a1342c0808894214c7421c0000 *00008b02a3202c08088b020500100000a3242c0808ff05a02d08088b15202c08088d04baa3202c *080889d083c40c5b5e5f5dc38b15a02d0808c1e20aa1242c08082b05202c0808c1f80289d129c1 *833da42d08080074158b15a42d08088b022b42040500100000c1f80229c189c8c3833dac2d0808 *00740e8b15202c0808a1ac2d0808895004c35756538b5c24108b0da42d080881fb32030000760e *83ec0c53e87efeffff83c410eb774383e3fe85c974118b41048d14988b01050010000039c27653 *e8d576000089c1a3a42d080889c78b15342c08088d72188b4218894108c7410c00000000837a18 *0074068b421889480c893ec7411000000000a1342c0808894114c7411c060000008b01894104ff *05a02d08088b51048d049a89410489d05b5e5fc35383ec148b5c241c83c305c1eb028d430250e8 *e7fdffffc700d0ef060889580483c00883c4185bc35756538b74241483ec0cff742424e8c5ffff *ff89c7bb000000008b4c242089c283c41039f3730b8a01880243414239f372f589f85b5e5fc3c3 *565383ec048b35302e0808a1342c08088b5808c1e30ae892feffff8d14188b460885c0740d81ea *000400008b400885c075f38b0e8d8100100000394604730f89c82b46040500100000c1f80229c2 *0115382c080889d083c4045b5ec35557565383ec08bd00000000833df02c0808017522a1342c08 *088b4834c1e10a8b502c8b42042b02c1e8028d840800fcffffe98c000000be000000003b35f02c *0808737da1282c0808894424048b3df02c0808893c24bb000000008b4c24048d04f50000000089 *c201f03b5c8108734b89cf89f009d874308d04168d149bc1e204035481048b421c034208c1e00a *8dac2800fcffff837a2c00740d8b522c8b42042b02c1e80201c54389f98d14f5000000008d0416 *3b5c870872b7463b3424729589e883c4085b5e5f5dc35557565383ec10c744240c00000000bd00 *000000b8000000003b05f02c08080f83920000008b15282c0808895424048b1df02c0808891c24 *bf000000008b4c24048d04ed0000000089c201e83b7c8108735f894c240889e809f8743f89cb8d *4c1500c1e1028d04bfc1e0048b540b048d34028b420803421c3b440b0c7616837e200075108b46 *088b54240c8d14428954240ceb078b5e08015c240c478b4c24088d14ed000000008d4415003b7c *810872a5453b2c2472818b44240c83c4105b5e5f5dc3909083ec0c833d3c2c080800750ae81dcc *0000a33c2c080883c40cc35383ec148b5c241c53e82e00000083c40cff74241853ff353c2c0808 *e85fc9000083c4185bc383ec14ff742418ff353c2c0808e864c8000083c41cc3565383ec0c8b74 *241856ff353c2c0808e84bc8000089c383c41085c0741b83ec045056ff353c2c0808e897c90000 *891c24e8b7c2ffff83c41083c4045b5ec3909090833d142d0808007e23ff0d402c0808833d402c *0808007f14a1142d0808a3402c0808c705482a080801000000c383ec146810940608ff74241ce8 *42dc000083c41cc383ec0ce8a5dc000083c40cc3909083ec0ce8cbbdffff8b15b02d080885d274 *438b4210a3b02d0808813ac8ee06087429c702c8ee0608817a0c18190808741a83ec086a00ff72 *0ce85bbcffffe891bdffffe88bbdffff83c4108b15b02d080885d275bde87abdffff83c40cc356 *5383ec048b742410bb0000000089f285f6741e817a0c181908080f95c025ff00000001c3c702c8 *ee06088b521085d275e285db0f84bf00000083ec0c8d430350e825faffff89c1c70000f00608c7 *400800000000895804bb0000000089f283c41085f67418817a0c1819080874088b420c8944990c *438b521085d275e88b35cc2c080883ec085183ec1053e8d4b6ffff83c408506848100808e8f0b8 *ffff83c41450e8e7b8ffff89c3893424e817cbffff8b48308d51fc895030c741fc00f106088b48 *308d51fc895030c741fce89706088b48308d51fc8950308959fc8b48308d51fc895030c741fc18 *c70608890424e8e0cbffff83c41083c4045b5ec3909090c390909083ec0cff742414ff74241468 *e4a20708ff3544270808e83102feff83c41cc390c390909083ec0c8b54241489d0c1e814505268 *1ca30708ff3544270808e80a02feff83c41cc3909083ec10ff7424146884a30708ff3544270808 *e8ed01feff83c41cc3905496060854960608549606085496060854960608549606085496060854 *96060800000000000000002400000083c5048b06668b40fc25ffff000083e80b83f8177711ff24 *85d8a307088b7604ebe18b4500ffe08b06ebfa90000000001c00000089f2668b460625ffff0000 *89442408c1e00289e929c13b4b54731083ed048b4304894500b88cc80608ffe08b442408c1e002 *29c58b760883c20cb9000000003b4c240873108b0289448d0083c204413b4c240872f08b06ebd0 *8d7600000000001b00000089f2668b460625ffff000089442408c1e00289e929c189c883e8083b *435473058b43f8ffe08d45f8c700a00007088970048b442408c1e00289e929c18d69f88b760883 *c20cb9000000003b4c240873108b0289448d0083c204413b4c240872f08b06ebbf000000001d00 *000089f28b460489442408c1e00289e929c189c883e8083b435473058b43f8ffe08d45f8c700a0 *0007088970048b442408c1e00289e929c18d69f88b760883c20cb9000000003b4c240873108b02 *89448d0083c204413b4c240872f08b06668b40fc25ffff000083e80b83f8177711ff248538a407 *088b7604ebe18b4500eb9f8b06eb9b90900000000000000000240000008b1683ea08668b420425 *ffff000083e80b83f8260f873d010000ff248568a507088b461489c281e2ffff000083fa017523 *83c504b848ec0608ffe0668b42fe89c281e2ffff000083fa01750883c504e9f400000083c70c3b *7b5c7609c7436c03000000eb68b803000000c1e00289f929c189c883c004c700889606084a6689 *500489700866c74006000089c6e9a50000008b460489c281e2ffff000083fa01751183c504c743 *04e8970608b888960608eb8789742418668b460625ffff000083c0038d3c873b7b5c761289436c *c74500e89706088b43f8e95dffffffc1e00289f929c183c104c701889606088d42ff668941048b *542418668b4206668941068b4208894108668b42066689442412ba000000006685c0741c25ffff *0000894424148b4424188b44900c8944910c423b54241472ed89ce83c5048b4500e9f8feffffc7 *4500e89706088b06e9eafeffff8b7604e9a9feffff83ec0c6898a40708e8acbbffff0000000021 *000000240000008b1683ea08668b420425ffff000083e80b83f8260f87dd010000ff248504a607 *08668b461489c181e1ffff000083f901750a83c504b848ec0608ffe083c7103b7b5c775bb80400 *0000c1e00289fa29c283c204c702889606088d41ff6689420489720866c742060100b900000000 *8b448d0489448a0c4174f5e956010000668b42fe89c181e1ffff000083f901750883c504e95101 *000083c7103b7b5c7609c7436c04000000eb7ab804000000c1e00289fa29c283c204c702889606 *088d41ff6689420489720866c742060100b9000000008b448d0489448a0c4174f5e9f200000066 *8b460489c181e1ffff000083f901751483c504c7430458990608b888960608e933ffffff897424 *18668b460625ffff000083c0048d3c873b7b5c761289436cc74500589906088b43f8e909ffffff *c1e00289fa29c283c20489542414c702889606088d41ff668942048b4c2418668b410640668942 *068b4108894208668b410689c2c7442408000000006685c0742b81e2ffff00008954240c8b5424 *088b4c24188b44910c8b4c24148944910c42895424088b44240c39c272dfc7442408000000008b *542418668b420625ffff0000894424108b4c2410034c24088b4424088b4485048b54241489448a *0cff44240874e289d683c5088b4500e959feffffc74500589906088b06e94bfeffff8b7604e909 *feffff83ec0c68a5a40708e89cb9ffff0000000062000000240000008b1683ea08668b420425ff *ff000083e80b83f8260f87ea010000ff2485a0a60708668b461489c181e1ffff000083f901750a *83c504b848ec0608ffe083c7143b7b5c775eb805000000c1e00289fa29c283c204c70288960608 *8d41ff6689420489720866c742060200b9000000008b448d0489448a0c4183f90176f2e9600100 *00668b42fe89c181e1ffff000083f901750883c504e95b01000083c7143b7b5c7609c7436c0500 *0000eb7db805000000c1e00289fa29c283c204c702889606088d41ff6689420489720866c74206 *0200b9000000008b448d0489448a0c4183f90176f2e9f9000000668b460489c181e1ffff000083 *f901751483c504c74304689b0608b888960608e92dffffff89742418668b460625ffff000083c0 *058d3c873b7b5c761289436cc74500689b06088b43f8e903ffffffc1e00289fa29c283c2048954 *2414c702889606088d41ff668942048b4c2418668b410683c002668942068b4108894208668b41 *0689c2c7442408000000006685c0742b81e2ffff00008954240c8b5424088b4c24188b44910c8b *4c24148944910c42895424088b44240c39c272dfc7442408000000008b542418668b420625ffff *0000894424108b4c2410034c24088b4424088b4485048b54241489448a0cff442408837c240801 *76dd89d683c50c8b4500e94cfeffffc74500689b06088b06e93efeffff8b7604e9fcfdffff83ec *0c68b2a40708e87fb7ffff8d76000000000062000000240000008b1683ea08668b420425ffff00 *0083e80b83f8260f87ea010000ff24853ca70708668b461489c181e1ffff000083f901750a83c5 *04b848ec0608ffe083c7143b7b5c775eb805000000c1e00289fa29c283c204c702889606088d41 *ff6689420489720866c742060200b9000000008b448d0489448a0c4183f90176f2e96001000066 *8b42fe89c181e1ffff000083f901750883c504e95b01000083c7143b7b5c7609c7436c05000000 *eb7db805000000c1e00289fa29c283c204c702889606088d41ff6689420489720866c742060200 *b9000000008b448d0489448a0c4183f90176f2e9f9000000668b460489c181e1ffff000083f901 *751483c504c74304889d0608b888960608e92dffffff89742418668b460625ffff000083c0058d *3c873b7b5c761289436cc74500889d06088b43f8e903ffffffc1e00289fa29c283c20489542414 *c702889606088d41ff668942048b4c2418668b410683c002668942068b4108894208668b410689 *c2c7442408000000006685c0742b81e2ffff00008954240c8b5424088b4c24188b44910c8b4c24 *148944910c42895424088b44240c39c272dfc7442408000000008b542418668b420625ffff0000 *894424108b4c2410034c24088b4424088b4485048b54241489448a0cff442408837c24080176dd *89d683c50c8b4500e94cfeffffc74500889d06088b06e93efeffff8b7604e9fcfdffff83ec0c68 *bfa40708e85fb5ffff8d76000000000021000000240000008b1683ea08668b420425ffff000083 *e80b83f8260f87dd010000ff2485d8a70708668b461489c181e1ffff000083f901750a83c504b8 *48ec0608ffe083c7103b7b5c775bb804000000c1e00289fa29c283c204c702889606088d41ff66 *89420489720866c742060100b9000000008b448d0489448a0c4174f5e956010000668b42fe89c1 *81e1ffff000083f901750883c504e95101000083c7103b7b5c7609c7436c04000000eb7ab80400 *0000c1e00289fa29c283c204c702889606088d41ff6689420489720866c742060100b900000000 *8b448d0489448a0c4174f5e9f2000000668b460489c181e1ffff000083f901751483c504c74304 *a89f0608b888960608e933ffffff89742418668b460625ffff000083c0048d3c873b7b5c761289 *436cc74500a89f06088b43f8e909ffffffc1e00289fa29c283c20489542414c702889606088d41 *ff668942048b4c2418668b410640668942068b4108894208668b410689c2c74424080000000066 *85c0742b81e2ffff00008954240c8b5424088b4c24188b44910c8b4c24148944910c4289542408 *8b44240c39c272dfc7442408000000008b542418668b420625ffff0000894424108b4c2410034c *24088b4424088b4485048b54241489448a0cff44240874e289d683c5088b4500e959feffffc745 *00a89f06088b06e94bfeffff8b7604e909feffff83ec0c68cca40708e84cb3ffff000000000100 *0000240000008b1683ea08668b420425ffff000083e80b83f8260f87dd010000ff248574a80708 *668b461489c181e1ffff000083f901750a83c504b848ec0608ffe083c7103b7b5c775bb8040000 *00c1e00289fa29c283c204c702889606088d41ff6689420489720866c742060100b9000000008b *448d0489448a0c4174f5e956010000668b42fe89c181e1ffff000083f901750883c504e9510100 *0083c7103b7b5c7609c7436c04000000eb7ab804000000c1e00289fa29c283c204c70288960608 *8d41ff6689420489720866c742060100b9000000008b448d0489448a0c4174f5e9f2000000668b *460489c181e1ffff000083f901751483c504c74304b8a10608b888960608e933ffffff89742418 *668b460625ffff000083c0048d3c873b7b5c761289436cc74500b8a106088b43f8e909ffffffc1 *e00289fa29c283c20489542414c702889606088d41ff668942048b4c2418668b41064066894206 *8b4108894208668b410689c2c7442408000000006685c0742b81e2ffff00008954240c8b542408 *8b4c24188b44910c8b4c24148944910c42895424088b44240c39c272dfc7442408000000008b54 *2418668b420625ffff0000894424108b4c2410034c24088b4424088b4485048b54241489448a0c *ff44240874e289d683c5088b4500e959feffffc74500b8a106088b06e94bfeffff8b7604e909fe *ffff83ec0c68d9a40708e83cb1ffff0000000001000000240000008b1683ea08668b420425ffff *000083e80b83f8260f8726020000ff248510a90708668b461489c181e1ffff000083f90175148b *4504894500c74504e8970608b848ec0608ffe083f902750583c504ebef83c7103b7b5c7772b804 *000000c1e00289fa29c283c204c702889606088d41fe6689420489720866c742060100b9000000 *008b448d0489448a0c4174f5e98b010000668b42fe89c181e1ffff000083f90175128b45048945 *00c74504e8970608e97c01000083f902750883c504e96f01000083c7103b7b5c760cc7436c0400 *0000e995000000b804000000c1e00289fa29c283c204c702889606088d41fe6689420489720866 *c742060100b9000000008b448d0489448a0c4174f5e90d010000668b460489c181e1ffff000083 *f90175168b4504894500c74504e8970608c74304b8a10608eb0f83f902751483c504c74304c8a3 *0608b888960608e9f4feffff89742418668b460625ffff000083c0048d3c873b7b5c761289436c *c74500c8a306088b43f8e9cafeffffc1e00289fa29c283c20489542414c702889606088d41fe66 *8942048b4c2418668b410640668942068b4108894208668b410689c2c7442408000000006685c0 *742b81e2ffff00008954240c8b5424088b4c24188b44910c8b4c24148944910c42895424088b44 *240c39c272dfc7442408000000008b542418668b420625ffff0000894424108b4c2410034c2408 *8b4424088b4485048b54241489448a0cff44240874e289d683c5088b4500e91afeffffc74500c8 *a306088b06e90cfeffff8b7604e9c0fdffff83ec0c68e6a40708e8e3aeffff8d76000000000002 *000000240000008b1683ea08668b420425ffff000083e80b83f8260f8733020000ff2485aca907 *08668b461489c181e1ffff000083f90175148b4504894500c74504b8a10608b848ec0608ffe083 *f902750583c504ebef83c7143b7b5c7775b805000000c1e00289fa29c283c204c702889606088d *41fe6689420489720866c742060200b9000000008b448d0489448a0c4183f90176f2e995010000 *668b42fe89c181e1ffff000083f90175128b4504894500c74504b8a10608e98601000083f90275 *0883c504e97901000083c7143b7b5c760cc7436c05000000e998000000b805000000c1e00289fa *29c283c204c702889606088d41fe6689420489720866c742060200b9000000008b448d0489448a *0c4183f90176f2e914010000668b460489c181e1ffff000083f90175168b4504894500c74504b8 *a10608c74304b8a10608eb0f83f902751483c504c7430424a60608b888960608e9eefeffff8974 *2418668b460625ffff000083c0058d3c873b7b5c761289436cc7450024a606088b43f8e9c4feff *ffc1e00289fa29c283c20489542414c702889606088d41fe668942048b4c2418668b410683c002 *668942068b4108894208668b410689c2c7442408000000006685c0742b81e2ffff00008954240c *8b5424088b4c24188b44910c8b4c24148944910c42895424088b44240c39c272dfc74424080000 *00008b542418668b420625ffff0000894424108b4c2410034c24088b4424088b4485048b542414 *89448a0cff442408837c24080176dd89d683c50c8b4500e90dfeffffc7450024a606088b06e9ff *fdffff8b7604e9b3fdffff83ec0c68f4a40708e87aacffff89f60000000002000000240000008b *1683ea08668b420425ffff000083e80b83f8260f878f020000ff248548aa0708668b461489c181 *e1ffff000083f90175148b4504894500c74504c8a30608b848ec0608ffe083f90275158b450489 *45008b4508894504c74508e8970608ebdf83f903750583c504ebd583c7143b7b5c0f8792000000 *b805000000c1e00289fa29c283c204c702889606088d41fd6689420489720866c742060200b900 *0000008b448d0489448a0c4183f90176f2e9d3010000668b42fe89c181e1ffff000083f9017512 *8b4504894500c74504c8a30608e9c401000083f90275188b45048945008b4508894504c74508e8 *970608e9a701000083f903750883c504e99a01000083c7143b7b5c760cc7436c05000000e9b900 *0000b805000000c1e00289fa29c283c204c702889606088d41fd6689420489720866c742060200 *b9000000008b448d0489448a0c4183f90176f2e935010000668b460489c181e1ffff000083f901 *75168b4504894500c74504c8a30608c74304b8a10608eb3083f902751c8b45048945008b450889 *4504c74508e8970608c7430424a60608eb0f83f903751483c504c743048ca80608b888960608e9 *92feffff89742418668b460625ffff000083c0058d3c873b7b5c761289436cc745008ca806088b *43f8e968feffffc1e00289fa29c283c20489542414c702889606088d41fd668942048b4c241866 *8b410683c002668942068b4108894208668b410689c2c7442408000000006685c0742b81e2ffff *00008954240c8b5424088b4c24188b44910c8b4c24148944910c42895424088b44240c39c272df *c7442408000000008b542418668b420625ffff0000894424108b4c2410034c24088b4424088b44 *85048b54241489448a0cff442408837c24080176dd89d683c50c8b4500e9b1fdffffc745008ca8 *06088b06e9a3fdffff8b7604e957fdffff83ec0c6802a50708e8b6a9ffff89f600000000030000 *00240000008b1683ea08668b420425ffff000083e80b83f8260f8791020000ff2485e4aa070866 *8b461489c281e2ffff000083fa0175148b4504894500c7450424a60608b848ec0608ffe083fa02 *75158b45048945008b4508894504c74508b8a10608ebdf83fa03750583c504ebd583c7183b7b5c *0f8792000000b806000000c1e00289f929c183c104c701889606088d42fd6689410489710866c7 *41060300ba000000008b4495048944910c4283fa0276f2e999000000668b42fe89c281e2ffff00 *0083fa0175128b4504894500c7450424a60608e9c601000083fa0275188b45048945008b450889 *4504c74508b8a10608e9a901000083fa03750883c504e99c01000083c7183b7b5c760cc7436c06 *000000e9bb000000b806000000c1e00289f929c183c104c701889606088d42fd66894104897108 *66c741060300ba000000008b4495048944910c4283fa0276f289cee937010000668b460489c281 *e2ffff000083fa0175168b4504894500c7450424a60608c74304b8a10608eb3083fa02751c8b45 *048945008b4508894504c74508b8a10608c7430424a60608eb0f83fa03751483c504c7430450ab *0608b888960608e990feffff89742418668b460625ffff000083c0068d3c873b7b5c761289436c *c7450050ab06088b43f8e966feffffc1e00289f929c183c104894c2414c701889606088d42fd66 *8941048b542418668b420683c003668941068b4208894108668b420689c2c74424080000000066 *85c0742b81e2ffff00008954240c8b4c24088b5424188b448a0c8b54241489448a0c41894c2408 *8b44240c39c172dfc7442408000000008b542418668b420625ffff0000894424108b4c2410034c *24088b4424088b4485048b54241489448a0cff442408837c24080276dd89d683c5108b4500e9af *fdffffc7450050ab06088b06e9a1fdffff8b7604e955fdffff83ec0c6811a50708e8f0a6ffff00 *00000004000000240000008b1683ea08668b420425ffff000083e80b83f8260f87fb020000ff24 *8580ab0708668b461489c281e2ffff000083fa0175148b4504894500c7450450ab0608b848ec06 *08ffe083fa0275158b45048945008b4508894504c7450824a60608ebdf83fa03751b8b45048945 *008b45088945048b450c894508c7450cb8a10608ebbf83fa04750583c504ebb583c71c3b7b5c0f *87b5000000b807000000c1e00289f929c183c104c701889606088d42fc6689410489710866c741 *060400ba000000008b4495048944910c4283fa0376f2e9bc000000668b42fe89c281e2ffff0000 *83fa0175128b4504894500c7450450ab0608e91002000083fa0275188b45048945008b45088945 *04c7450824a60608e9f301000083fa03751e8b45048945008b45088945048b450c894508c7450c *b8a10608e9d001000083fa04750883c504e9c301000083c71c3b7b5c760cc7436c07000000e9e2 *000000b807000000c1e00289f929c183c104c701889606088d42fc6689410489710866c7410604 *00ba000000008b4495048944910c4283fa0376f289cee95e010000668b460489c281e2ffff0000 *83fa0175168b4504894500c7450450ab0608c74304b8a10608eb5783fa02751c8b45048945008b *4508894504c7450824a60608c7430424a60608eb3683fa0375228b45048945008b45088945048b *450c894508c7450cb8a10608c7430450ab0608eb0f83fa04751483c504c7430414ae0608b88896 *0608e926feffff89742418668b460625ffff000083c0078d3c873b7b5c761289436cc7450014ae *06088b43f8e9fcfdffffc1e00289f929c183c104894c2414c701889606088d42fc668941048b54 *2418668b420683c004668941068b4208894108668b420689c2c7442408000000006685c0742b81 *e2ffff00008954240c8b4c24088b5424188b448a0c8b54241489448a0c41894c24088b44240c39 *c172dfc7442408000000008b542418668b420625ffff0000894424108b4c2410034c24088b4424 *088b4485048b54241489448a0cff442408837c24080376dd89d683c5148b4500e945fdffffc745 *0014ae06088b06e937fdffff8b7604e9ebfcffff83ec0c6820a50708e8c2a3ffff89f600000000 *05000000240000008b1683ea08668b420425ffff000083e80b83f8260f877a030000ff24851cac *0708668b461489c281e2ffff000083fa0175148b4504894500c7450414ae0608b848ec0608ffe0 *83fa0275158b45048945008b4508894504c7450850ab0608ebdf83fa03751b8b45048945008b45 *088945048b450c894508c7450c24a60608ebbf83fa0475218b45048945008b45088945048b450c *8945088b451089450cc74510b8a10608eb9983fa05750583c504eb8f83c7203b7b5c0f87de0000 *00b808000000c1e00289f929c183c104c701889606088d42fb6689410489710866c741060500ba *000000008b4495048944910c4283fa0476f2e9e5000000668b42fe89c281e2ffff000083fa0175 *128b4504894500c7450414ae0608e96902000083fa0275188b45048945008b4508894504c74508 *50ab0608e94c02000083fa03751e8b45048945008b45088945048b450c894508c7450c24a60608 *e92902000083fa0475248b45048945008b45088945048b450c8945088b451089450cc74510b8a1 *0608e90002000083fa05750883c504e9f301000083c7203b7b5c760cc7436c08000000e9120100 *00b808000000c1e00289f929c183c104c701889606088d42fb6689410489710866c741060500ba *000000008b4495048944910c4283fa0476f289cee98e010000668b460489c281e2ffff000083fa *0175198b4504894500c7450414ae0608c74304b8a10608e98400000083fa02751c8b4504894500 *8b4508894504c7450850ab0608c7430424a60608eb6383fa0375228b45048945008b4508894504 *8b450c894508c7450c24a60608c7430450ab0608eb3c83fa0475288b45048945008b4508894504 *8b450c8945088b451089450cc74510b8a10608c7430414ae0608eb0f83fa05751483c504c74304 *44b10608b888960608e9a7fdffff89742418668b460625ffff000083c0088d3c873b7b5c761289 *436cc7450044b106088b43f8e97dfdffffc1e00289f929c183c104894c2414c701889606088d42 *fb668941048b542418668b420683c005668941068b4208894108668b420689c2c7442408000000 *006685c0742b81e2ffff00008954240c8b4c24088b5424188b448a0c8b54241489448a0c41894c *24088b44240c39c172dfc7442408000000008b542418668b420625ffff0000894424108b4c2410 *034c24088b4424088b4485048b54241489448a0cff442408837c24080476dd89d683c5188b4500 *e9c6fcffffc7450044b106088b06e9b8fcffff8b7604e96cfcffff83ec0c6830a50708e813a0ff *ff8d76000000000006000000240000008b1683ea08668b420425ffff000083e80b83f8260f8711 *040000ff2485b8ac0708668b461489c281e2ffff000083fa0175148b4504894500c7450444b106 *08b848ec0608ffe083fa0275158b45048945008b4508894504c7450814ae0608ebdf83fa03751b *8b45048945008b45088945048b450c894508c7450c50ab0608ebbf83fa0475218b45048945008b *45088945048b450c8945088b451089450cc7451024a60608eb9983fa05752a8b45048945008b45 *088945048b450c8945088b451089450c8b4514894510c74514b8a10608e96affffff83fa067508 *83c504e95dffffff83c7243b7b5c0f870d010000b809000000c1e00289f929c183c104c7018896 *06088d42fa6689410489710866c741060600ba000000008b4495048944910c4283fa0576f2e914 *010000668b42fe89c281e2ffff000083fa0175128b4504894500c7450444b10608e9ce02000083 *fa0275188b45048945008b4508894504c7450814ae0608e9b102000083fa03751e8b4504894500 *8b45088945048b450c894508c7450c50ab0608e98e02000083fa0475248b45048945008b450889 *45048b450c8945088b451089450cc7451024a60608e96502000083fa05752a8b45048945008b45 *088945048b450c8945088b451089450c8b4514894510c74514b8a10608e93602000083fa067508 *83c504e92902000083c7243b7b5c760cc7436c09000000e948010000b809000000c1e00289f929 *c183c104c701889606088d42fa6689410489710866c741060600ba000000008b4495048944910c *4283fa0576f289cee9c4010000668b460489c281e2ffff000083fa0175198b4504894500c74504 *44b10608c74304b8a10608e9ba00000083fa02751f8b45048945008b4508894504c7450814ae06 *08c7430424a60608e99600000083fa0375228b45048945008b45088945048b450c894508c7450c *50ab0608c7430450ab0608eb6f83fa0475288b45048945008b45088945048b450c8945088b4510 *89450cc7451024a60608c7430414ae0608eb4283fa05752e8b45048945008b45088945048b450c *8945088b451089450c8b4514894510c74514b8a10608c7430444b10608eb0f83fa06751483c504 *c74304f4b40608b888960608e910fdffff89742418668b460625ffff000083c0098d3c873b7b5c *761289436cc74500f4b406088b43f8e9e6fcffffc1e00289f929c183c104894c2414c701889606 *088d42fa668941048b542418668b420683c006668941068b4208894108668b420689c2c7442408 *000000006685c0742b81e2ffff00008954240c8b4c24088b5424188b448a0c8b54241489448a0c *41894c24088b44240c39c172dfc7442408000000008b542418668b420625ffff0000894424108b *4c2410034c24088b4424088b4485048b54241489448a0cff442408837c24080576dd89d683c51c *8b4500e92ffcffffc74500f4b406088b06e921fcffff8b7604e9d5fbffff83ec0c6841a50708e8 *cc9bffff0000000007000000240000008b1683ea08668b420425ffff000083e80b83f8260f87b7 *040000ff248554ad0708668b461489c281e2ffff000083fa0175148b4504894500c74504f4b406 *08b848ec0608ffe083fa0275158b45048945008b4508894504c7450844b10608ebdf83fa03751b *8b45048945008b45088945048b450c894508c7450c14ae0608ebbf83fa0475218b45048945008b *45088945048b450c8945088b451089450cc7451050ab0608eb9983fa05752a8b45048945008b45 *088945048b450c8945088b451089450c8b4514894510c7451424a60608e96affffff83fa067530 *8b45048945008b45088945048b450c8945088b451089450c8b45148945108b4518894514c74518 *b8a10608e935ffffff83fa07750883c504e928ffffff83c7283b7b5c0f8742010000b80a000000 *c1e00289f929c183c104c701889606088d42f96689410489710866c741060700ba000000008b44 *95048944910c4283fa0676f2e949010000668b42fe89c281e2ffff000083fa0175128b45048945 *00c74504f4b40608e93f03000083fa0275188b45048945008b4508894504c7450844b10608e922 *03000083fa03751e8b45048945008b45088945048b450c894508c7450c14ae0608e9ff02000083 *fa0475248b45048945008b45088945048b450c8945088b451089450cc7451050ab0608e9d60200 *0083fa05752a8b45048945008b45088945048b450c8945088b451089450c8b4514894510c74514 *24a60608e9a702000083fa0675308b45048945008b45088945048b450c8945088b451089450c8b *45148945108b4518894514c74518b8a10608e97202000083fa07750883c504e96502000083c728 *3b7b5c760cc7436c0a000000e984010000b80a000000c1e00289f929c183c104c701889606088d *42f96689410489710866c741060700ba000000008b4495048944910c4283fa0676f289cee90002 *0000668b460489c281e2ffff000083fa0175198b4504894500c74504f4b40608c74304b8a10608 *e9f600000083fa02751f8b45048945008b4508894504c7450844b10608c7430424a60608e9d200 *000083fa0375258b45048945008b45088945048b450c894508c7450c14ae0608c7430450ab0608 *e9a800000083fa0475288b45048945008b45088945048b450c8945088b451089450cc7451050ab *0608c7430414ae0608eb7b83fa05752e8b45048945008b45088945048b450c8945088b45108945 *0c8b4514894510c7451424a60608c7430444b10608eb4883fa0675348b45048945008b45088945 *048b450c8945088b451089450c8b45148945108b4518894514c74518b8a10608c74304f4b40608 *eb0f83fa07751483c504c7430438b90608b888960608e96afcffff89742418668b460625ffff00 *0083c00a8d3c873b7b5c761289436cc7450038b906088b43f8e940fcffffc1e00289f929c183c1 *04894c2414c701889606088d42f9668941048b542418668b420683c007668941068b4208894108 *668b420689c2c7442408000000006685c0742b81e2ffff00008954240c8b4c24088b5424188b44 *8a0c8b54241489448a0c41894c24088b44240c39c172dfc7442408000000008b542418668b4206 *25ffff0000894424108b4c2410034c24088b4424088b4485048b54241489448a0cff442408837c *24080676dd89d683c5208b4500e989fbffffc7450038b906088b06e97bfbffff8b7604e92ffbff *ff83ec0c6853a50708e8e296ffff89f6ff2689f683ed0c897508c7450400000000c7450020cd06 *08e9a70900008d7600ff2689f683ed0c897508c7450400000000c7450020cd0608e9870900008d *7600ff2689f683ed0c897508c7450400000000c7450020cd0608e9670900008d7600ff2689f683 *ed0c897508c7450400000000c7450020cd0608e9470900008d7600ff2689f683ed0c897508c745 *0400000000c7450020cd0608e9270900008d7600ff2689f683ed0c897508c7450400000000c745 *0020cd0608e9070900008d7600ff2689f683ed0c897508c7450400000000c7450020cd0608e9e7 *0800008d7600ff2689f683ed0c897508c7450400000000c7450020cd0608e9c70800008d7600ff *2689f683ed0c897508c7450400000000c7450020cd0608e9a70800008d7600ff2689f683ed0c89 *7508c7450400000000c7450020cd0608e9870800008d7600ff2689f683ed0c897508c745040000 *0000c7450020cd0608e9670800008d7600ff2689f683ed0c897508c7450400000000c7450020cd *0608e9470800008d7600ff2689f683ed0c897508c7450400000000c7450020cd0608e927080000 *8d7600ff2689f683ed0c897508c7450400000000c7450020cd0608e9070800008d7600ff2689f6 *83ed0c897508c7450400000000c7450020cd0608e9e70700008d7600ff2689f683ed0c897508c7 *450400000000c7450020cd0608e9c70700008d7600ff2689f683ed0c897508c7450400000000c7 *450020cd0608e9a70700008d7600ff2689f683ed0c897508c7450400000000c7450020cd0608e9 *870700008d7600ff2689f683ed0c897508c7450400000000c7450020cd0608e9670700008d7600 *ff2689f683ed0c897508c7450400000000c7450020cd0608e9470700008d7600ff2689f683ed0c *897508c7450400000000c7450020cd0608e9270700008d7600ff2689f683ed0c897508c7450400 *000000c7450020cd0608e9070700008d760000000000000000000000000018be060838be060858 *be060878be060898be0608b8be0608d8be0608f8be060818bf0608000000000000000000000000 *38bf060858bf060878bf060898bf0608b8bf0608d8bf0608f8bf060818c0060838c0060858c006 *0878c0060898c00608b8c006080000000000000000000000001cbe06083cbe06085cbe06087cbe *06089cbe0608bcbe0608dcbe0608fcbe06081cbf06080000000000000000000000003cbf06085c *bf06087cbf06089cbf0608bcbf0608dcbf0608fcbf06081cc006083cc006085cc006087cc00608 *9cc00608bcc0060800000000000000000000000021000000010000002100000062000000620000 *0062000000220000004200000002000000000000000000000000000000e300000063000000a300 *000023000000c30000004300000083000000030000000400000005000000060000000700000008 *0000008d45f83b43547315c74320fe000000c7432428c20608b804ce0608ffe08b436083781800 *751fc740181c190808817d0014c30608750583c504eb0a83ed04c7450084c2060883ed04b8e897 *0608ebcc9000000000000000002400000083ec0c8b4360ff7018e8e3a2ffff83c4108b4360c740 *180000000083c504ff65008d76008d45f83b43547315c74320fe000000c74324a8c20608b804ce *0608ffe08b436083781800743083ec0cff7018e89ca2ffff83c4108b4360c7401800000000817d *0084c20608750583c504eb0a83ed04c7450014c3060883ed04b8e8970608ebbb00000000000000 *00240000008b4360c740181c19080883c504ff650066837e1003750a8b760466837e100374f683 *7e1800745e668b461225ffff000083f801740d83f801720f83e80383f8037707b801000000eb05 *b80000000085c075338b53608b46188942048b43608946188b436066c7401203008b4360897014 *c74320fc000000c7432424c30608b8bcd20608ffe03b7360755d8b43608968308b53688d470489 *420483ec08ff730456e832a4ffff83c4108b43606683781002750cbe04000000b841850608ebc5 *8b43608b683005880000008943548b43688b780483ef0489c28b4018c1e00c030283e80489435c *eb0f83ec08ff730456e8e4a3ffff83c4108b4500eb889081c4060878c406086fc4060866c40608 *5dc4060854c406084bc4060842c4060800000000220000002b00000083c50cff650083c50c8b45 *00ff60f083c50c8b4500ff60ec83c50c8b4500ff60e883c50c8b4500ff60e483c50c8b4500ff60 *e083c50c8b4500ff60dc83c50c8b4500ff60d883c50c8b4500ff60d489f6020000000b0000008b *46088943048b7604e90200000089f68d45f03b43547315c74320fc000000c74324a4c40608b804 *ce0608ffe083ed0cc745003cc406088b43048945088b4360837818000f95c025ff000000894504 *83ed04b8e8970608ebd28d760001000000120000008b7604e90000000083ec0c6a03e81fcaffff *83c41089442414c700f8c406088b442414897004896c24188b5424188b0a83e90c894c240c668b *410825ffff000083e82383f806773bff2485f0ad07088b420489c2c1ea18c1e81025ff0000008d *441015eb298b420483c003eb218b54240c8b42048b00eb158b42048b401883c002eb0b8b54240c *8b420483e01f408b5424188d048289442410668b410825ffff000083f82b0f841c01000083f82b *7f0a83f82a7413e90001000083f82c0f84c6000000e9f20000008b5424188b42048138dced0608 *750e83ec0cff7004e89b9fffff83c4108b4424188b480489c82500f00f00c1e80789ca81e20000 *f0ff09d0894424088378100075168b5424148951048b5424188b4204c70064ec0608eb5c8b5424 *188b42048b5424148950048b4424188b48048139dced060874328b5424088b42108d04c08b1528 *2c08088b4482148941088b5424088b42108d04c08b5424188b4a048b15282c0808894c82148b54 *24188b4204c70044ed06088b44241089442418e9a1feffff8b43608b50288d6c90308975008b43 *6066c7401002008b43608968308b53688d4704894204be04000000b841850608ffe08b54241089 *542418e963feffff8b4424188b500889c583c50c83780400750a83ed04c7450084c206088b4360 *837818007507c740181c19080883ed08c74504e897060889750089d683ed04b8b8a10608ebace9 *f7fdffff9090900000000001000000240000008b750483c5088b06668b40fc25ffff000083e80b *83f8177711ff24850cae07088b7604ebe18b4500ffe08b06ebfa89f683ed08897504c7450018c7 *06083b7b5c765b8b436cc1e00229c7817b6c0004000077438b43688d57048950048b4368837808 *0074318b40088943688b780483ef0489c28b4018c1e00c030283e80489435c833d482a08080074 *07be02000000eb118b4500ffe0be00000000eb05be010000008b43608968308b53688d47048942 *048b436066c740100000b841850608ebd38d76003b7b5c765b8b436cc1e00229c7817b6c000400 *0077438b43688d57048950048b43688378080074318b40088943688b780483ef0489c28b4018c1 *e00c030283e80489435c833d482a0808007407be02000000eb118b4500ffe0be00000000eb05be *010000008b43608968308b53688d47048942048b436066c740100000b841850608ebd300000000 *000000002400000083c504ff650089f60000000001000000240000008b750483c508ff65008d76 *0083ed08897504c7450080c806083b7b5c765b8b436cc1e00229c7817b6c0004000077438b4368 *8d57048950048b43688378080074318b40088943688b780483ef0489c28b4018c1e00c030283e8 *0489435c833d482a0808007407be02000000eb118b4500ffe0be00000000eb05be010000008b43 *608968308b53688d47048942048b436066c740100000b841850608ebd38d760000000000210000 *00240000008b750483c508ff65008d760083ed08897504c745002cc906083b7b5c765b8b436cc1 *e00229c7817b6c0004000077438b43688d57048950048b43688378080074318b40088943688b78 *0483ef0489c28b4018c1e00c030283e80489435c833d482a0808007407be02000000eb118b4500 *ffe0be00000000eb05be010000008b43608968308b53688d47048942048b436066c740100000b8 *41850608ebd38d76000000000021000000240000008b4504894424088b44240889432883c508ff *650083ed088b4328894424088b442408894504c74500d8c906083b7b5c765b8b436cc1e00229c7 *817b6c0004000077438b43688d57048950048b43688378080074318b40088943688b780483ef04 *89c28b4018c1e00c030283e80489435c833d482a0808007407be02000000eb118b4500ffe0be00 *000000eb05be010000008b43608968308b53688d47048942048b436066c740100000b841850608 *ebd30000000062000000240000008b45048b5508890424895424048b04248b5424048943388953 *3c83c50cff650083ed0c8b43388b533c890424895424048b04248b542404894504895508c74500 *94ca06083b7b5c765b8b436cc1e00229c7817b6c0004000077438b43688d57048950048b436883 *78080074318b40088943688b780483ef0489c28b4018c1e00c030283e80489435c833d482a0808 *007407be02000000eb118b4500ffe0be00000000eb05be010000008b43608968308b53688d4704 *8942048b436066c740100000b841850608ebd3000000006200000024000000c744240400000000 *c70424000000008d45048b108914248b4004894424048b04248b54240489434889534c83c50cff *65008d760083ed0c8d4d048b43488b534c8901895104c7450068cb06083b7b5c765b8b436cc1e0 *0229c7817b6c0004000077438b43688d57048950048b43688378080074318b40088943688b7804 *83ef0489c28b4018c1e00c030283e80489435c833d482a0808007407be02000000eb118b4500ff *e0be00000000eb05be010000008b43608968308b53688d47048942048b436066c740100000b841 *850608ebd300000000010000002400000083c504ff650489f68b0683e8186683780c0075058b40 *04eb1e6683780c0175078b40048b00eb13668b400c25ffff00008b0485b8c1060883e01f83ed0c *897508894504c7450020cd06083b7b5c765b8b436cc1e00229c7817b6c0004000077438b43688d *57048950048b43688378080074318b40088943688b780483ef0489c28b4018c1e00c030283e804 *89435c833d482a0808007407be02000000eb118b4500ffe0be00000000eb05be010000008b4360 *8968308b53688d47048942048b436066c740100000b841850608ebd389f6000000000000000029 *0000008b750883c50cff26000000000000000028000000c744240400000000c70424000000008d *454c8b108914248b4004894424048b04248b54240489434889534c8b45448b5548894424108954 *24148b4424108b5424148943408953448b453c8b554089442410895424148b4424108b54241489 *433889533c8b45388944240c8b44240c8943348b45348944240c8b44240c8943308b4530894424 *0c8b44240c89432c8b452c8944240c8b44240c8943288b452889431c8b45248943188b45208943 *148b451c8943108b451889430c8b45148943088b45108943048b750c83c554ff65b489f683ed54 *8d4d4c8b43488b534c89018951048b43408b534489442410895424148b4424108b542414894544 *8955488b43388b533c89442410895424148b4424108b54241489453c8955408b43348944240c8b *44240c8945388b43308944240c8b44240c8945348b432c8944240c8b44240c8945308b43288944 *240c8b44240c89452c8b431c8945288b43188945248b43148945208b431089451c8b430c894518 *8b43088945148b430489451089750c8b43248945088b4320894504c7450034cd06083b7b5c765b *8b436cc1e00229c7817b6c0004000077438b43688d57048950048b43688378080074318b400889 *43688b780483ef0489c28b4018c1e00c030283e80489435c833d482a0808007407be02000000eb *118b4500ffe0be00000000eb05be010000008b43608968308b53688d47048942048b436066c740 *100000b841850608ebd38d7600b8000000008a4322ba000000008a532301d08b44850089432483 *ed548d4d4c8b43488b534c89018951048b43408b534489442410895424148b4424108b54241489 *45448955488b43388b533c89442410895424148b4424108b54241489453c8955408b4334894424 *0c8b44240c8945388b43308944240c8b44240c8945348b432c8944240c8b44240c8945308b4328 *8944240c8b44240c89452c8b431c8945288b43188945248b43148945208b431089451c8b430c89 *45188b43088945148b430489451089750c8b43248945088b4320894504c7450034cd06083b7b5c *765b8b436cc1e00229c7817b6c0004000077438b43688d57048950048b43688378080074318b40 *088943688b780483ef0489c28b4018c1e00c030283e80489435c833d482a0808007407be020000 *00eb118b4500ffe0be00000000eb05be010000008b43608968308b53688d47048942048b436066 *c740100000b841850608ebd389f683ed548d4d4c8b43488b534c89018951048b43408b53448944 *2410895424148b4424108b5424148945448955488b43388b533c89442410895424148b4424108b *54241489453c8955408b43348944240c8b44240c8945388b43308944240c8b44240c8945348b43 *2c8944240c8b44240c8945308b43288944240c8b44240c89452c8b431c8945288b43188945248b *43148945208b431089451c8b430c8945188b43088945148b430489451089750c8b43248945088b *4320894504c7450034cd06088b43608968308b53688d47048942048b436066c740100000be0000 *0000e9b2b3ffff9083ed548d4d4c8b43488b534c89018951048b43408b53448944241089542414 *8b4424108b5424148945448955488b43388b533c89442410895424148b4424108b54241489453c *8955408b43348944240c8b44240c8945388b43308944240c8b44240c8945348b432c8944240c8b *44240c8945308b43288944240c8b44240c89452c8b431c8945288b43188945248b43148945208b *431089451c8b430c8945188b43088945148b430489451089750c8b43248945088b4320894504c7 *450034cd06088b43608968308b53688d47048942048b436066c740100000be02000000e9ceb2ff *ff908b43608968308b53688d47048942048b436066c740100000be02000000e9abb2ffff89f68b *43608968308b53688d47048942048b436066c740100100be02000000e987b2ffff89f683ed548d *4d4c8b43488b534c89018951048b43408b534489442410895424148b4424108b54241489454489 *55488b43388b533c89442410895424148b4424108b54241489453c8955408b43348944240c8b44 *240c8945388b43308944240c8b44240c8945348b432c8944240c8b44240c8945308b4328894424 *0c8b44240c89452c8b431c8945288b43188945248b43148945208b431089451c8b430c8945188b *43088945148b430489451089750c8b43248945088b4320894504c7450034cd06088b4360896830 *8b53688d47048942048b436066c740100000be03000000e9a2b1ffff908b43608968308b53688d *47048942048b436066c740100000be03000000e97fb1ffff89f683ed08897504c7450018c70608 *8b43608968308b53688d47048942048b436066c740100000be03000000e94eb1ffff9000000000 *01000000240000008b750483c508e9f91000009083ed08897504c7450000d406088b4360896830 *8b53688d47048942048b436066c740100000be03000000e906b1ffff9000000000020000002400 *00008b45088943048b750483c50ce9031200008d760083ed0c8b4304894508897504c7450048d4 *06088b43608968308b53688d47048942048b436066c740100000be03000000e9b0b0ffff909090 *a1a02d08083b05a82d08087215c74320ff000000c7432494d40608b8acd00608ffe08d4603c1e8 *028944240883c00283ec0c50e85dbaffff83c410c700d0ef06088b54240889500489c68b4500eb *d190a1a02d08083b05a82d08087215c74320ff000000c74324e4d40608b8acd00608ffe08d4603 *c1e8028944240883c00283ec0c50e871bbffff83c410c700d0ef06088b54240889500489c68b45 *00ebd19089742414a1a02d08083b05a82d08087215c74320fd000000c7432434d50608b8acd006 *08ffe08b44241483c0038944241883ec0c50e8bbb9ffff83c41089c1c700e8ef06088b54241489 *50048b4304894424108d410c8b542418c1e2028954240c8d140a39d073198b54240c01ca895424 *088b542410891083c0043b44240872f189ce8b4500eb9c83c70c3b7b5c761cc7436c03000000c7 *4320fe000000c74324bcd50608b804ce0608ffe08d47f8c70018f0060889700489c68b4500ebeb *9083c7243b7b5c761cc7436c09000000c74320fc000000c74324f4d50608b804ce0608ffe08b4e *048d47f8c70058fe06088b53048950048948088d50f4c740f45cf106088942048956048d50e8c7 *40e8f0f1060889420489d68b4500ebc58d760083c7083b7b5c761cc7436c02000000c74320ff00 *0000c7432454d60608b804ce0608ffe08d47fcc700f8ee060889700489c68b4500ebeb90c706e8 *ef0608837e080075458974240889f181e100f00f00c1e90789f0250000f0ff09c1837910007427 *8b41108d04c08b15282c08088b4482108946088b41108d04c08b15282c08088b4c2408894c8210 *ff6500837b08007507c743081819080883c7143b7b5c761cc7436c05000000c74320f8000000c7 *4324e0d60608b804ce0608ffe08d47f0c700b0ee06088970048b53048950088b530889500c8b15 *b02d0808895010a3b02d080889c68b4500ebd189f6813ec8ee06087514be00000000c745fc1819 *080883ed048b4504ffe0c706c8ee06088b4e0c8b461089460481f91819080874d5be0100000089 *4dfcebd78d7600b90000000089f2813eb0ee06087508b9010000008b560889ce8955fc83ed04ff *650489f689f083c70c3b7b5c761cc7436c03000000c74320ff000000c74324a4d70608b804ce06 *08ffe08d57f8c702d0ef0608c742040100000085f67909b9fffffffff7d8eb0eb90000000085f6 *7e07b901000000890789ce8955fc83ed048b4504ebc483c70c3b7b5c761cc7436c03000000c743 *20ff000000c7432404d80608b804ce0608ffe08d47f8c700d0ef0608c7400401000000b9000000 *0085f67407b901000000893789ce8945fc83ed048b4504ebd18d76008b43488b534c8944242089 *542424c744241c0000000083e80183daff83fa017211770583f8fe760ac744241802000000eb08 *c7442418010000008b5424188d7c97083b7b5c761d89d083c00289436cc74320ff000000c74324 *58d80608b804ce0608ffe08b442418c1e00289fa29c283ea0489542414c702d0ef06088b442418 *894204837c2424007915c744241c01000000f75c24208354242400f75c24246a016a00ff74242c *ff74242ce8a8a8000083c410894424088954240c837c2418027512b9020000008b5424208957fc *8b442408eb18b9000000008b5424240b542420740bb9010000008b4424208907837c241c007402 *f7d989ce8b5424148955fc83ed048b4504e957ffffff908b43488b534c894424108954241483fa *0119d283c2028d7c97083b7b5c761b8d420289436cc74320ff000000c7432464d90608b804ce06 *08ffe08d04950000000089f929c183e904894c240cc701d0ef06088951046a016a00ff74241cff *74241ce8e6a7000083c410837c2414007610ba020000008b4c2410894ffc8907eb1aba00000000 *8b4424140b442410740bba010000008b4c2410890f89d68b44240c8945fc83ed048b4504eb8d90 *a1a02d08083b05a82d08087215c74320f5000000c7432410da0608b8acd00608ffe08b53048b4b *0c8b43088944240c8b4204894424308974243483c208895424388b4104894424208b44240c8944 *242483c108894c242883ec0c8d44241c50e87cbffdff83c40c8d442424508d442438508d44241c *50e865c0fdff83c4108b7424148b44241883e8088945fc83ed048b4504eb8ca1a02d08083b05a8 *2d08087215c74320f5000000c74324a4da0608b8acd00608ffe08b53048b4b0c8b43088944240c *8b4204894424308974243483c208895424388b4104894424208b44240c8944242483c108894c24 *2883ec0c8d44241c50e8e8befdff83c40c8d442424508d442438508d44241c50e871c2fdff83c4 *108b7424148b44241883e8088945fc83ed048b4504eb8ca1a02d08083b05a82d08087215c74320 *f5000000c7432438db0608b8acd00608ffe08b53048b4b0c8b43088944240c8b42048944243089 *74243483c208895424388b4104894424208b44240c8944242483c108894c242883ec0c8d44241c *50e854befdff83c40c8d442424508d442438508d44241c50e89dbdfdff83c4108b7424148b4424 *1883e8088945fc83ed048b4504eb8ca1a02d08083b05a82d08087215c74320f5000000c74324cc *db0608b8acd00608ffe08b53048b4b0c8b43088944240c8b4204894424308974243483c2088954 *24388b4104894424208b44240c8944242483c108894c242883ec0c8d44241c50e8c0bdfdff83c4 *0c8d442424508d442438508d44241c50e8f9bcfdff83c4108b7424148b44241883e8088945fc83 *ed048b4504eb8ca1a02d08083b05a82d08087215c74320f5000000c7432460dc0608b8acd00608 *ffe08b53048b4b0c8b43088944240c8b4204894424308974243483c208895424388b4104894424 *208b44240c8944242483c108894c242883ec0c8d44241c50e82cbdfdff83c40c8d442424508d44 *2438508d44241c50e805c0fdff83c4108b7424148b44241883e8088945fc83ed048b4504eb8ca1 *a02d08083b05a82d08087215c74320f5000000c74324f4dc0608b8acd00608ffe08b53048b4b0c *8b43088944240c8b4204894424308974243483c208895424388b4104894424208b44240c894424 *2483c108894c242883ec0c8d44241c50e898bcfdff83c40c8d442424508d442438508d44241c50 *e801befdff83c4108b7424148b44241883e8088945fc83ed048b4504eb8ca1a02d08083b05a82d *08087215c74320f5000000c7432488dd0608b8acd00608ffe08b53048b4b0c8b43088944240c8b *4204894424308974243483c208895424388b4104894424208b44240c8944242483c108894c2428 *83ec0c8d44241c50e804bcfdff83c40c8d442424508d442438508d44241c50e89db9fdff83c410 *8b7424148b44241883e8088945fc83ed048b4504eb8ca1a02d08083b05a82d08087215c74320f5 *000000c743241cde0608b8acd00608ffe08b53048b4b0c8b43088944240c8b4204894424308974 *243483c208895424388b4104894424208b44240c8944242483c108894c242883ec0c8d44241c50 *e870bbfdff83c40c8d442424508d442438508d44241c50e899bbfdff83c4108b7424148b442418 *83e8088945fc83ed048b4504eb8ca1a02d08083b05a82d08087215c74320f5000000c74324b0de *0608b8acd00608ffe08b53048b4b0c8b43088944240c8b4204894424308974243483c208895424 *388b4104894424208b44240c8944242483c108894c242883ec0c8d44241c50e8dcbafdff83c40c *8d442424508d442438508d44241c50e885bbfdff83c4108b7424148b44241883e8088945fc83ed *048b4504eb8ca1a02d08083b05a82d08087215c74320f5000000c7432444df0608b8acd00608ff *e08b53048b4b0c8b43088944240c8b4204894424308974243483c208895424388b410489442420 *8b44240c8944242483c108894c242883ec0c8d44241c50e848bafdff83c40c8d442424508d4424 *38508d44241c50e841bafdff83c4108b7424148b44241883e8088945fc83ed048b4504eb8ca1a0 *2d08083b05a82d08087215c74320fd000000c74324d8df0608b8acd00608ffe08b43048b500489 *5424108974241483c0088944241883ec0c8d44240c50e8d4b9fdff83c4088d442418508d44240c *50e8a2b9fdff83c4108b7424048b44240883e8088945fc83ed048b4504ebb190a1a02d08083b05 *a82d08087215c74320f5000000c7432448e00608b8acd00608ffe08b53048b4b0c8b4308894424 *0c8b4204894424408974244483c208895424488b4104894424308b44240c8944243483c108894c *243883ec0c8d44242c50e844b9fdff83c4048d44241c50e837b9fdff83c4108d442430508d4424 *44508d442418508d44242c50e85bbafdff83c4108b7424248b4424148945f48b44242883e80889 *45f88b44241883e8088945fc83ed0c8b450ce966ffffff89f6a1a02d08083b05a82d08087215c7 *4320f5000000c7432404e10608b8acd00608ffe08b53048b4b0c8b43088944240c8b4204894424 *408974244483c208895424488b4104894424308b44240c8944243483c108894c243883ec0c8d44 *242c50e888b8fdff83c4048d44241c50e87bb8fdff83c4108d442430508d442444508d44241850 *8d44242c50e86fb9fdff83c4108b7424248b4424148945f48b44242883e8088945f88b44241883 *e8088945fc83ed0c8b450ce966ffffff89f68974240883ec04ff73046a018d44241450e83abafd *ff83c41089c6ff650089f683ec04ff7308568b430483c00850e81dbafdff83c41089c6ff650090 *89f1b8000000008b530885d27e07b801000000eb0b85d27907b8fffffffff7da39c1740989ce29 *c68b4500ffe085c9740a8b43048b400839d07507be00000000ebe689ce39d077e089cef7deebda *89f6897424088b430839c6740729c68b4500ffe0837c240800742a83ec0cff742414e89fbafdff *83c40c8b4b0483c1088b530c83c208505251e888b4fdff83c41085c07507be00000000ebc3f7d0 *33442408c1e81f83f80119c089c683ce01ebae90b80000000085f6740c8b43048b400885f67902 *f7d889c6ff650089f6b80000000085f6740c8b43048b400885f67902f7d889c6ff650089f68b43 *288944240c83c70c3b7b5c761cc7436c03000000c74320ff000000c74324e4e20608b804ce0608 *ffe08d47f889442404c700d0ef0608c74004010000008b44240483c0088944241883ec04ff7424 *108d442410508d44241c50e8c2a4ffff83c4108b7424088b4424148945f88b4424048945fc83ed *088b4508ebac8d76008b43388b533c894424088954240c83c7103b7b5c761cc7436c04000000c7 *4320ff000000c7432464e30608b804ce0608ffe08d47f4890424c700d0ef0608c7400402000000 *8b042483c00889442418ff74240cff74240c8d44240c508d44241c50e88aa3ffff83c4108b7424 *048b4424148945f88b04248945fc83ed088b4508ebae89f6a1a02d08083b05a82d08087215c743 *20fe000000c74324e8e30608b8acd00608ffe08974240883ec0cff35cc2c0808e86b7cffff83c4 *0489c28b48308d41fc894230c741fc00f106088b4a308d41fc894230c741fce89706088b4a308d *41fc8942308b4424148941fc8b4a308d41fc894230c741fc18c7060889d652e82b7dffff83c410 *c705482a0808010000008b4500eb8d90e9f3edffff8d76008b7360ff650089f6ff65009083ec0c *ff7360e8b179ffff83c41089c6ff650090813e40ef06080f94c025ff00000089c6ff65009083c7 *143b7b5c761cc7436c05000000c74320ff000000c74324b8e40608b804ce0608ffe08d47f0c700 *40ef0608c7400c1c190808c740041c190808c740101c19080889c68b4500ebd98d760089742408 *813e40ef06087548817e041c19080875088b4360894604eb0d8b4424088b500c8b43608942048b *4360c740041c1908088b436066c7401201008b43608b5424088950148b436089420cb80cd40608 *ffe08b4424088b4010894424048b542408817a041c190808743b8b52048b42308b480883c00c89 *42308b542408894a1083ec0cff7204e81988ffff83c4108b5424088942043d1c190808751ac742 *0c1c190808eb118b442408c70040ef0608c740101c1908088b7424048b4500eb918d7600897424 *08813e40ef06087514be00000000c745fc1819080883ed048b4504ffe08b4424088b4010894424 *048b542408817a041c190808743b8b52048b42308b480883c00c8942308b542408894a1083ec0c *ff7204e88987ffff83c4108b5424088942043d1c190808751ac7420c1c190808eb118b442408c7 *40101c190808c70040ef0608be010000008b5424048955fceb8689f689742408813e28ef060875 *48817e041c19080875088b4360894604eb0d8b4424088b500c8b43608942048b4360c740041c19 *08088b436066c7401201008b43608b5424088950148b436089420cb85cd40608ffe08b44240881 *78041c19080874418b40048b50308b43048942048b5424088b42048b4030c70080c8060883ec0c *ff7204e8c686ffff83c4108b5424088942043d1c1908087519c7420c1c190808eb108b43048b54 *2408894210c70228ef06088b4500eb9b9089742408813e28ef0608750abe000000008b4500ffe0 *8b4424088178041c19080874418b40048b50308b43048942048b5424088b42048b4030c70080c8 *060883ec0cff7204e84c86ffff83c4108b5424088942043d1c19080875b6c7420c1c190808ebad *8b43048b542408894210c70228ef0608eb9b89f683c7083b7b5c761cc7436c02000000c74320fe *000000c743248ce70608b804ce0608ffe083ec0c56e8c38fffff83c41089c1c1e00489442408a1 *a02b08088b542408837c100c00751b8d57fcc70210ef0608894a04a1a02b08088b4c2408895408 *0ceb0e89cac1e204a1a02b08088b54100c89d68b4500eba98d7600a1a02d08083b05a82d080872 *15c74320fe000000c7432408e80608b8acd00608ffe083ec0c56e8d78fffff83c41089c68b4500 *ebeb8d760089f2c1e204a1a02b08088b3410ff65008b4314894424088b500483c2068d3c973b7b *5c761889536cc74320d0000000c7432450e80608b804ce0608ffe08d04950000000089f929c183 *c104c70148ec06088971048b43048941088b430889410c8b430c894110668b4310668941146689 *5116ba000000008b4424083b500473168b4424088b44900889449118428b4424083b500472ea89 *ce8b4500eb9e8d760083c70c3b7b5c761cc7436c03000000c74320fe000000c74324e0e80608b8 *04ce0608ffe08d47f8c700ec96060866c74006000089700889c68b4500ebe58d76008b436066c7 *401204008b4360897014813d382a08081c190808750a8b4360a3382a0808eb0b8b5360a13c2a08 *088950048b4360a33c2a0808e943eaffff8d76008b436066c7401205008b4360897014813d382a *08081c190808750a8b4360a3382a0808eb0b8b5360a13c2a08088950048b4360a33c2a0808e903 *eaffff8d76008b436066c7401206008d8e1f4e0000b8ad8bdb68f7e9c1fa0d89c8c1f81f29c289 *542404e86b8700008b4c240401c18b4360894814c7442408000000008b15402a080881fa1c1908 *087419394a147314895424088b520481fa1c1908087405394a1472ec8b4360895004837c240800 *750a8b4360a3402a0808eb0a8b43608b542408894204e976e9ffff9090ff65008b4500ff60f08b *4500ff60ec8b4500ff60e88b4500ff60e48b4500ff60e08b4500ff60dc8b4500ff60d88b4500ff *60d4901ceb06080aeb0608f8ea0608e6ea0608d4ea0608c2ea0608b0ea06089eea060800000000 *000000002300000083ed08897504c7450018c70608e9fae7ffff83ed08897504c7450018c70608 *e9e8e7ffff83ed08897504c7450018c70608e9d6e7ffff83ed08897504c7450018c70608e9c4e7 *ffff83ed08897504c7450018c70608e9b2e7ffff83ed08897504c7450018c70608e9a0e7ffff83 *ed08897504c7450018c70608e98ee7ffff83ed08897504c7450018c70608e97ce7ffff83ed0889 *7504c7450018c70608e96ae7ffff89f600000000000000002300000083ed08897504c7450080c8 *0608e94ae7ffff89f600000000000000002300000083ed08897504c745002cc90608e92ae7ffff *89f600000000000000002300000083ed088b4328894424088b442408894504c74500d8c90608e9 *ffe6ffff8d760000000000000000002300000083ed0c8b43388b533c890424895424048b04248b *542404894504895508c7450094ca0608e9c7e6ffff8d760000000000000000002300000083ed0c *8d45048b53488b4b4c8910894804c7450068cb0608e99be6ffff8d760000000000000000002300 *000083ed04c745006cc80608e97de6ffff90000000000000000023000000e96be6ffff8d760000 *000000000000000000000002000000040000001a00000083ed08897504c7450028ec0608e93ee6 *ffff89f6010000001e0000008b7604ff268d7600010000001e0000008b7604ff650089f6010000 *001e0000008b76048b4500ff60f08d7600010000001e0000008b76048b4500ff60ec8d76000100 *00001e0000008b76048b4500ff60e88d7600010000001e0000008b76048b4500ff60e48d760001 *0000001e0000008b76048b4500ff60e08d7600010000001e0000008b76048b4500ff60dc8d7600 *010000001e0000008b76048b4500ff60d88d7600010000001e0000008b76048b4500ff60d48d76 *0001000000220000008b7604ff268d760001000100200000008b7604ff268d7600010001001f00 *00008b7604ff268d760001000100210000008b7604ff268d7600000002002e0000008b4360c740 *041c1908088b43608946048b436066c7401202008b4360897014c706dced06088974240889f181 *e100f00f00c1e90789f0250000f0ff09c18379100074278b41108d04c08b15282c08088b448210 *8946088b41108d04c08b15282c08088b4c2408894c8210e9f1e5ffff90010001002f0000008b53 *608b46048942048b43608946048b436066c7401202008b4360897014e9c5e5ffff90000002002d *0000008b4360c740041c1908088b43608946048b436066c7401202008b4360897014c706dced06 *088974240889f181e100f00f00c1e90789f0250000f0ff09c18379100074278b41108d04c08b15 *282c08088b4482108946088b41108d04c08b15282c08088b4c2408894c8210e94de5ffff900000 *00003b00000083ec0c686cae0708e86b66ffff8d7600010000004000000083ec0c6880ae0708e8 *5366ffff8d7600000004003800000083ec0c689aae0708e83b66ffff8d76000000040001000000 *83ec0c68afae0708e82366ffff8d7600000000000a00000083ec0c68c9ae0708e80b66ffff8d76 *00000001003900000083ec0c68e6ae0708e8f365ffff8d7600000001003a00000083ec0c68feae *0708e8db65ffff8d7600040000003200000083ec0c681aaf0708e8c365ffff8d76000400000032 *00000083ec0c6834af0708e8ab65ffff8d7600000000000a00000083ec0c684faf0708e89365ff *ff8d7600000000000a00000083ec0c686daf0708e87b65ffff8d7600010001003700000083ec0c *688aaf0708e86365ffff8d7600000000000a00000083ec0c68a3af0708e84b65ffff8d76000100 *01000100000083ec0c68c6af0708e83365ffff8d7600000000003300000083ec0c68e5af0708e8 *1b65ffff8d7600000000003400000083ec0c68ffaf0708e80365ffff8d76000000000035000000 *83ec0c681cb00708e8eb64ffff8d7600010001003600000083ec0c6840b00708e8d364ffff8d76 *00000000000a000000ff65009060f0060860f0060860f0060860f0060860f0060860f0060860f0 *060860f0060800000000000000002c00000083ed04897504c7450018c706088b436066c7401004 *008b43608968308b53688d4704894204be04000000e9b294ffff908b43608b6830058800000089 *43548b43688b780483ef0489c28b4018c1e00c030283e80489435cff650089f600000000000000 *002400000083c5048b06668b40fc25ffff000083e80b83f8177711ff248558b007088b7604ebe1 *8b4500ffe08b06ebfa9000000000000000002400000083c504ff6500e93694ffff908b6b5083ed *04ff65009090900000000000000000240000008b760483c5048b06668b40fc25ffff000083e80b *83f8177711ff2485b8b007088b7604ebe18b4500ffe08b06ebfa89f600000000190000008d45f4 *3b435473058b43f8ffe08d45f8c700a0000708897004c745f424f106088b760483ed0c8b06668b *40fc25ffff000083e80b83f8177711ff248518b107088b7604ebe18b4500ebc18b06ebbd89f600 *00000000000000240000008b760883c5048b06668b40fc25ffff000083e80b83f8177711ff2485 *78b107088b7604ebe18b4500ffe08b06ebfa89f601000000190000008d45f43b435473058b43f8 *ffe08d45f8c700a0000708897004c745f4b8f106088b760483ed0c8b06668b40fc25ffff000083 *e80b83f8177711ff2485d8b107088b7604ebe18b4500ebc18b06ebbd89f6000000000000000024 *0000008b760c83c5048b06668b40fc25ffff000083e80b83f8177711ff248538b207088b7604eb *e18b4500ffe08b06ebfa89f602000000190000008d45f43b435473058b43f8ffe08d45f8c700a0 *000708897004c745f44cf206088b760483ed0c8b06668b40fc25ffff000083e80b83f8177711ff *248598b207088b7604ebe18b4500ebc18b06ebbd89f60000000000000000240000008b761083c5 *048b06668b40fc25ffff000083e80b83f8177711ff2485f8b207088b7604ebe18b4500ffe08b06 *ebfa89f603000000190000008d45f43b435473058b43f8ffe08d45f8c700a0000708897004c745 *f4e0f206088b760483ed0c8b06668b40fc25ffff000083e80b83f8177711ff248558b307088b76 *04ebe18b4500ebc18b06ebbd89f60000000000000000240000008b761483c5048b06668b40fc25 *ffff000083e80b83f8177711ff2485b8b307088b7604ebe18b4500ffe08b06ebfa89f604000000 *190000008d45f43b435473058b43f8ffe08d45f8c700a0000708897004c745f474f306088b7604 *83ed0c8b06668b40fc25ffff000083e80b83f8177711ff248518b407088b7604ebe18b4500ebc1 *8b06ebbd89f60000000000000000240000008b761883c5048b06668b40fc25ffff000083e80b83 *f8177711ff248578b407088b7604ebe18b4500ffe08b06ebfa89f605000000190000008d45f43b *435473058b43f8ffe08d45f8c700a0000708897004c745f408f406088b760483ed0c8b06668b40 *fc25ffff000083e80b83f8177711ff2485d8b407088b7604ebe18b4500ebc18b06ebbd89f60000 *000000000000240000008b761c83c5048b06668b40fc25ffff000083e80b83f8177711ff248538 *b507088b7604ebe18b4500ffe08b06ebfa89f606000000190000008d45f43b435473058b43f8ff *e08d45f8c700a0000708897004c745f49cf406088b760483ed0c8b06668b40fc25ffff000083e8 *0b83f8177711ff248598b507088b7604ebe18b4500ebc18b06ebbd89f600000000000000002400 *00008b762083c5048b06668b40fc25ffff000083e80b83f8177711ff2485f8b507088b7604ebe1 *8b4500ffe08b06ebfa89f607000000190000008d45f43b435473058b43f8ffe08d45f8c700a000 *0708897004c745f430f506088b760483ed0c8b06668b40fc25ffff000083e80b83f8177711ff24 *8558b607088b7604ebe18b4500ebc18b06ebbd89f60000000000000000240000008b762483c504 *8b06668b40fc25ffff000083e80b83f8177711ff2485b8b607088b7604ebe18b4500ffe08b06eb *fa89f608000000190000008d45f43b435473058b43f8ffe08d45f8c700a0000708897004c745f4 *c4f506088b760483ed0c8b06668b40fc25ffff000083e80b83f8177711ff248518b707088b7604 *ebe18b4500ebc18b06ebbd89f60000000000000000240000008b762883c5048b06668b40fc25ff *ff000083e80b83f8177711ff248578b707088b7604ebe18b4500ffe08b06ebfa89f60900000019 *0000008d45f43b435473058b43f8ffe08d45f8c700a0000708897004c745f458f606088b760483 *ed0c8b06668b40fc25ffff000083e80b83f8177711ff2485d8b707088b7604ebe18b4500ebc18b *06ebbd89f60000000000000000240000008b762c83c5048b06668b40fc25ffff000083e80b83f8 *177711ff248538b807088b7604ebe18b4500ffe08b06ebfa89f60a000000190000008d45f43b43 *5473058b43f8ffe08d45f8c700a0000708897004c745f4ecf606088b760483ed0c8b06668b40fc *25ffff000083e80b83f8177711ff248598b807088b7604ebe18b4500ebc18b06ebbd89f6000000 *0000000000240000008b763083c5048b06668b40fc25ffff000083e80b83f8177711ff2485f8b8 *07088b7604ebe18b4500ffe08b06ebfa89f60b000000190000008d45f43b435473058b43f8ffe0 *8d45f8c700a0000708897004c745f480f706088b760483ed0c8b06668b40fc25ffff000083e80b *83f8177711ff248558b907088b7604ebe18b4500ebc18b06ebbd89f60000000000000000240000 *008b763483c5048b06668b40fc25ffff000083e80b83f8177711ff2485b8b907088b7604ebe18b *4500ffe08b06ebfa89f60c000000190000008d45f43b435473058b43f8ffe08d45f8c700a00007 *08897004c745f414f806088b760483ed0c8b06668b40fc25ffff000083e80b83f8177711ff2485 *18ba07088b7604ebe18b4500ebc18b06ebbd89f60000000000000000240000008b763883c5048b *06668b40fc25ffff000083e80b83f8177711ff248578ba07088b7604ebe18b4500ffe08b06ebfa *89f60d000000190000008d45f43b435473058b43f8ffe08d45f8c700a0000708897004c745f4a8 *f806088b760483ed0c8b06668b40fc25ffff000083e80b83f8177711ff2485d8ba07088b7604eb *e18b4500ebc18b06ebbd89f60000000000000000240000008b763c83c5048b06668b40fc25ffff *000083e80b83f8177711ff248538bb07088b7604ebe18b4500ffe08b06ebfa89f60e0000001900 *00008d45f43b435473058b43f8ffe08d45f8c700a0000708897004c745f43cf906088b760483ed *0c8b06668b40fc25ffff000083e80b83f8177711ff248598bb07088b7604ebe18b4500ebc18b06 *ebbd89f60000000000000000240000008b764083c5048b06668b40fc25ffff000083e80b83f817 *7711ff2485f8bb07088b7604ebe18b4500ffe08b06ebfa89f60f000000190000008d45f43b4354 *73058b43f8ffe08d45f8c700a0000708897004c745f4d0f906088b760483ed0c8b06668b40fc25 *ffff000083e80b83f8177711ff248558bc07088b7604ebe18b4500ebc18b06ebbd89f600000000 *00000000240000008b760483c504ff2600000000190000008d45fc3b435473058b43f8ffe0c745 *fc64fa06088b760483ed048b06ebed89f60000000000000000240000008b760883c504ff260100 *0000190000008d45fc3b435473058b43f8ffe0c745fca0fa06088b760483ed048b06ebed89f600 *00000000000000240000008b760c83c504ff2602000000190000008d45fc3b435473058b43f8ff *e0c745fcdcfa06088b760483ed048b06ebed89f60000000000000000240000008b761083c504ff *2603000000190000008d45fc3b435473058b43f8ffe0c745fc18fb06088b760483ed048b06ebed *89f60000000000000000240000008b761483c504ff2604000000190000008d45fc3b435473058b *43f8ffe0c745fc54fb06088b760483ed048b06ebed89f60000000000000000240000008b761883 *c504ff2605000000190000008d45fc3b435473058b43f8ffe0c745fc90fb06088b760483ed048b *06ebed89f60000000000000000240000008b761c83c504ff2606000000190000008d45fc3b4354 *73058b43f8ffe0c745fcccfb06088b760483ed048b06ebed89f60000000000000000240000008b *762083c504ff2607000000190000008d45fc3b435473058b43f8ffe0c745fc08fc06088b760483 *ed048b06ebed89f60000000000000000240000008b762483c504ff2608000000190000008d45fc *3b435473058b43f8ffe0c745fc44fc06088b760483ed048b06ebed89f600000000000000002400 *00008b762883c504ff2609000000190000008d45fc3b435473058b43f8ffe0c745fc80fc06088b *760483ed048b06ebed89f60000000000000000240000008b762c83c504ff260a00000019000000 *8d45fc3b435473058b43f8ffe0c745fcbcfc06088b760483ed048b06ebed89f600000000000000 *00240000008b763083c504ff260b000000190000008d45fc3b435473058b43f8ffe0c745fcf8fc *06088b760483ed048b06ebed89f60000000000000000240000008b763483c504ff260c00000019 *0000008d45fc3b435473058b43f8ffe0c745fc34fd06088b760483ed048b06ebed89f600000000 *00000000240000008b763883c504ff260d000000190000008d45fc3b435473058b43f8ffe0c745 *fc70fd06088b760483ed048b06ebed89f60000000000000000240000008b763c83c504ff260e00 *0000190000008d45fc3b435473058b43f8ffe0c745fcacfd06088b760483ed048b06ebed89f600 *00000000000000240000008b764083c504ff260f000000190000008d45fc3b435473058b43f8ff *e0c745fce8fd06088b760483ed048b06ebed89f60000000001000100130000008d45f43b435473 *058b43f8ffe08d45f8c700a00007088970048b760489c583ed04b854960608ebe3000000000200 *0000150000008d45f03b435473058b43f8ffe08d45f8c700a00007088970048b46088945f48b76 *0483ed0c83ed04b8b8a10608ebdc900000000003000000120000008d45ec3b435473058b43f8ff *e08d45f8c700a00007088970048b460c8945f48b46088945f08b760483ed1083ed04b824a60608 *ebd68d76000000000004000000120000008d45e83b435473058b43f8ffe08d45f8c700a0000708 *8970048b46108945f48b460c8945f08b46088945ec8b760483ed1483ed04b850ab0608ebd09000 *00000005000000120000008d45e43b435473058b43f8ffe08d45f8c700a00007088970048b4614 *8945f48b46108945f08b460c8945ec8b46088945e88b760483ed1883ed04b814ae0608ebca8d76 *000000000006000000120000008d45e03b435473058b43f8ffe08d45f8c700a00007088970048b *46188945f48b46148945f08b46108945ec8b460c8945e88b46088945e48b760483ed1c83ed04b8 *44b10608ebc4900000000007000000120000008d45dc3b435473058b43f8ffe08d45f8c700a000 *07088970048b461c8945f48b46188945f08b46148945ec8b46108945e88b460c8945e48b460889 *45e08b760483ed2083ed04b8f4b40608ebbe8d76000000000008000000120000008d45d83b4354 *73058b43f8ffe08d45f8c700a00007088970048b46208945f48b461c8945f08b46188945ec8b46 *148945e88b46108945e48b460c8945e08b46088945dc8b760483ed2483ed04b838b90608ebb890 *75050708da0407083f040708a4030708090307086e020708d30107083801070800000000010000 *002a0000008b45048944240883c5088138dced0608750e83ec0cff7004e8b864ffff83c4108b44 *24082500f00f00c1e8078b54240881e20000f0ff89c109d18379100075128b542408897204c702 *74ec06088b4500ffe08b4424088970048138dced0608742b8b41108d04c08b15282c08088b4482 *148b5424088942088b41108d04c08b15282c08088b4c2408894c82148b442408c70044ed0608eb *b58b45048944240883c5088138dced0608750e83ec0cff7004e82064ffff83c4108b4424082500 *f00f00c1e8078b54240881e20000f0ff89c109d18379100075158b542408897204c70284ec0608 *8b45008b40f0ffe08b4424088970048138dced0608742b8b41108d04c08b15282c08088b448214 *8b5424088942088b41108d04c08b15282c08088b4c2408894c82148b442408c70044ed0608ebb2 *8b45048944240883c5088138dced0608750e83ec0cff7004e88563ffff83c4108b4424082500f0 *0f00c1e8078b54240881e20000f0ff89c109d18379100075158b542408897204c70298ec06088b *45008b40ecffe08b4424088970048138dced0608742b8b41108d04c08b15282c08088b4482148b *5424088942088b41108d04c08b15282c08088b4c2408894c82148b442408c70044ed0608ebb28b *45048944240883c5088138dced0608750e83ec0cff7004e8ea62ffff83c4108b4424082500f00f *00c1e8078b54240881e20000f0ff89c109d18379100075158b542408897204c702acec06088b45 *008b40e8ffe08b4424088970048138dced0608742b8b41108d04c08b15282c08088b4482148b54 *24088942088b41108d04c08b15282c08088b4c2408894c82148b442408c70044ed0608ebb28b45 *048944240883c5088138dced0608750e83ec0cff7004e84f62ffff83c4108b4424082500f00f00 *c1e8078b54240881e20000f0ff89c109d18379100075158b542408897204c702c0ec06088b4500 *8b40e4ffe08b4424088970048138dced0608742b8b41108d04c08b15282c08088b4482148b5424 *088942088b41108d04c08b15282c08088b4c2408894c82148b442408c70044ed0608ebb28b4504 *8944240883c5088138dced0608750e83ec0cff7004e8b461ffff83c4108b4424082500f00f00c1 *e8078b54240881e20000f0ff89c109d18379100075158b542408897204c702d4ec06088b45008b *40e0ffe08b4424088970048138dced0608742b8b41108d04c08b15282c08088b4482148b542408 *8942088b41108d04c08b15282c08088b4c2408894c82148b442408c70044ed0608ebb28b450489 *44240883c5088138dced0608750e83ec0cff7004e81961ffff83c4108b4424082500f00f00c1e8 *078b54240881e20000f0ff89c109d18379100075158b542408897204c702e8ec06088b45008b40 *dcffe08b4424088970048138dced0608742b8b41108d04c08b15282c08088b4482148b54240889 *42088b41108d04c08b15282c08088b4c2408894c82148b442408c70044ed0608ebb28b45048944 *240883c5088138dced0608750e83ec0cff7004e87e60ffff83c4108b4424082500f00f00c1e807 *8b54240881e20000f0ff89c109d18379100075158b542408897204c702fcec06088b45008b40d8 *ffe08b4424088970048138dced0608742b8b41108d04c08b15282c08088b4482148b5424088942 *088b41108d04c08b15282c08088b4c2408894c82148b442408c70044ed0608ebb28b4504894424 *0883c5088138dced0608750e83ec0cff7004e8e35fffff83c4108b4424082500f00f00c1e8078b *54240881e20000f0ff89c109d18379100075158b542408897204c70210ed06088b45008b40d4ff *e08b4424088970048138dced0608742b8b41108d04c08b15282c08088b4482148b542408894208 *8b41108d04c08b15282c08088b4c2408894c82148b442408c70044ed0608ebb23c0607083c0607 *083c0607083c0607083c0607083c0607083c0607083c06070800000000000000002400000083c5 *04ff65009090c35557565383ec0c8b74242081fefe000000762983ec0c89f0c1e00c05ff1f0000 *c1e8144050e84201000083c410e9240100008b43088902e918010000ba442c08088b1d442c0808 *85db746339731874e2397318764f8b431829f0894318c1e00501c389f789d985f60f84e6000000 *8973188b03894304ba010000008d432039f20f83ce000000c7400400000000c740180000000089 *48084283c02039fa72e7e9b00000008d53088b5b0885db759de8746a000089c783ec0c50e82b03 *00008d5f4083c41089f589d985f6742e8973188b4740894304ba010000008d476039f27319c740 *0400000000c74018000000008948084283c02039ea72e781fefd0000007752bafe00000089f0c1 *e0058d3c1829f2742d8957188b07894704b9010000008d472039d17319c7400400000000c74018 *000000008978084183c02039d172e783ec0c89f0c1e0058d041850e8f800000083c41089d883c4 *0c5b5e5f5dc383ec186a01e898feffff83c41cc35557565383ec0c8b6c2420bb00000000be0000 *0000bf00000000b9000000008b15442c080885d27438817a18fe000000752185f6740b8b010500 *0010003902740b89d689cfbb01000000eb014339eb7414eb05be0000000089d18b520885d275c8 *39eb751685ff750a8b4208a3442c0808eb218b4208894708eb1983ec0c55e8306a000089c38904 *24e8ef0100008d734083c410bbfe00000089f1c74618fe0000008b06894604ba010000008d4620 *c7400400000000c74018000000008948084283c02039da72e789e8c1e00883e80289461889f083 *c40c5b5e5f5dc3565383ec048b4c2410817918fe000000761183ec0c51e8ea00000083c410e9dc *000000bb000000008b15442c080885d274158b023b01730f89d38b520885d274068b023b0172f1 *85db7510a1442c0808894108890d442c0808eb5a8b4308894108894b0889ce85c974478b531889 *d0c1e00c03033b01753989d00341188943188b41088943088b7118ba0000000089c839f27319c7 *400400000000c740180000000089580883c0204239f272e789d8eb0289f089c18b510885d27443 *8b591889d8c1e00c03013b02753589d80342188941188b42088941088b7218bb0000000089d039 *f37319c7400400000000c740180000000089480883c0204339f372e783c4045b5ec35756538b5c *24108b4318c1e00c89c6c1ee1446745cbffe00000083ec0c89d8250000f0ff50e87100000083c4 *1089d9c74318fe0000008b03894304ba010000008d4320c7400400000000c74018000000008948 *084283c02039fa72e783ec0c53e896feffff83c41081c3000010004e75a95b5e5fc35383ec088b *44241085c074158b580883ec0c50e86efeffff89d883c41085db75eb83c4085bc3538b4424088d *90002000008d48400500f00f0089c339c2770f891183c12081c20010000039da76f15bc38b4424 *04c70048c70608c740044ccc0608c383ec1868c02d0808e8e1ffffff83c41cc383ec0c8b442410 *c700c02d0808e8ff66ffff83c40cc3c390905383ec088b5c2410e802fdffff89c18b4314894110 *895914c74108000000008b43143b05502c08080f96c025ff00000089411c837b2c00740f8b432c *8b53248950048b432c894808894b2c8b018943240500100000894328ff4334ff056c2c080889c8 *83c4085bc35557565383ec4cc744242000000000c744241800000000e8b267ffffe89372ffffe8 *6a86ffff89442424837c2464007417a1f02c080848a3502c0808c705542c080801000000eb72c7 *05502c080800000000c744241400000000b8000000003b05f02c0808733a8b1d282c08088b35f0 *2c08088b5424148d04d2c1e0028b4c03048b510803511c3b54030c720a8b4c2414890d502c0808 *ff4424143974241472d2a1f02c0808483905502c08080f94c025ff000000a3542c0808c7054c2c *080801000000c705402e080801000000833d542c080800741f83ec0ca1f02c08088d04c0c1e002 *0305282c0808ff70f0e81334000083c410833df02c0808017521a1342c08088b50308915682c08 *08c7403000000000a1342c0808c7403400000000c7056c2c080800000000c7442414000000008b *4424148d14c0c1e202a1282c0808c744101420190808a1282c0808c744101020190808bf000000 *00a1282c08083b7c10080f83f30000008b5424148d04d2c1e002894424108b4c241409f9750d83 *3df02c0808010f87bc0000008d04bfc1e0048b15282c080889c68b4c241003740a04c746240000 *0000c7462c00000000c746300000000083ec0c56e8d7fdffff89c28946308b0089463c895638c7 *464000000000c7464400000000c74648000000008b561883c41085d2740b83621cfe8b520885d2 *75f5837e2000744b8b4608c1e00c89c5c1ed05743e83ec0c8d85ff0f0000c1e80c50e82cf9ffff *89464c8b1883c40c556a0053e8968ffdff83c4108b560485d27411895a0c83eb80834a1c088b52 *0885d275ef47a1282c08088b5424103b7c10080f821bffffffff4424148b4c24143b0d502c0808 *0f86c1feffffa1502c080840894424143b05f02c08080f83ad000000bf000000008b15282c0808 *89d38b442414c1e00389c1034424143b7c820873798b4424148d14088d04bfc1e00489c6037493 *04837e2c00751683ec0c56e8cffcffff894604c746080100000083c4108b462489463c8b462c89 *4638c7463000000000c7463400000000c7464000000000c7464400000000c7464800000000478b *1d282c08088b4c2414c1e1038b5424148d040a3b7c83087287ff4424148b4c24143b0df02c0808 *0f8253ffffff833d542c080800743883ec0c6a04e802f8ffffa3702c08088b00a3742c0808a378 *2c08080500400000a37c2c080883c410eb1883ec0c56e8f9300000e98f020000c705702c080800 *000000a1f02c080848894424143b05502c080876368b0d282c08088b5424148d04d2c1e0028b54 *0110895401188b15282c0808c744021020190808ff4c24148b4c24143b0d502c080877caa1f02c *080848894424143b05502c0808766f83ec0c8b5424208d1cd2c1e30289d80305282c080850e8eb *2900008b4c2424890d582c0808a1282c080883c4108b5418084a89d378298d04c98d3485000000 *0083ec0c8d049bc1e0048b15282c08080344320450e8ab18000083c4104b79e1ff4c24148b4c24 *143b0d502c08087791a1f02c080848894424143b05502c0808766f83ec0c8b5424208d1cd2c1e3 *0289d80305282c080850e8342a00008b4c2424890d582c0808a1282c080883c4108b5418084a89 *d378298d04c98d34850000000083ec0c8d049bc1e0048b15282c08080344320450e82a18000083 *c4104b79e1ff4c24148b4c24143b0d502c08087791c705582c08080000000083ec0c68031c0708 *e86e300000c705582c080800000000c70424031c0708ff542470c70424b02d0808e8200b0000a1 *b02d0808a3382e0808c705b02d080800000000c7055c2c080800000000a1442a0808a3602c0808 *c705442a08081c190808c7053c2e08081c190808c70424031c0708e81469ffff83c410bd000000 *00833d542c080800740e833d4c2c0808017405e8ef2a0000833d802c080800751f833d842c0808 *007516833d702c0808007417a1782c08083b05742c0808740ae8561f0000bd010000008b1df02c *08084b787e8b15282c08088d04db8b4c820849786b8d3c850000000085db0f94c285c90f94c021 *d0a8017409833df02c08080177488d0489c1e0048b15282c080889c603743a04891d582c08088b *462c3b463875088b463c3b4624731683ec0c56e8d9160000bd0100000083c410e957ffffff837e *40000f854cfdffff49799c4b798285ed0f8523ffffffe81b08000085c00f8516ffffff8b1d2c2a *080885db742783ec0cff33e8fb09000083c41085c0750d83ec0c68b8bc0708e89e43ffff89038b *5b1085db75d9e8a668ffffc744241400000000b8000000003b05f02c08087378bf000000008b15 *282c080889d38b442414c1e00389c1034424143b7c820873488b4424148d14088d04bfc1e00489 *c6037493048b54241409fa7509833df02c08080177098b562c8b4624894204478b1d282c08088b *4c2414c1e1038b5424148d040a3b7c830872b8ff4424148b4c24143b0df02c08087288833d542c *0808007424a1302c08088b40048378200074168b40088944241883ec0cff74246ce8843e000083 *c410a16c2c0808c1e00a8944241cc744241400000000b8000000003b05f02c08080f83fa010000 *8b5424143b15502c080877118b15282c08088b4c24148d04c9ff44821cbf000000008b15282c08 *0889d38b442414c1e00389c1034424143b7c82080f83a50100008b4424148d14088d04bfc1e004 *89c6037493048b54241409fa7509833df02c08080177208b4c24143b0d502c080877148b562c8b *022b42040500100000c1f8022944241c8b4424143b05502c08080f87e4000000837e200074098b *4424182b4608eb038b4608c1e00a014424208b54241409fa0f8486000000837e200074498b5630 *85d2740b83621cfe8b520885d275f5837e040075088b4630894604eb1e8b560485d274178b5a08 *85db75068b463089420883621cf789da85db75e98b4608034634894608eb2983ec0cff7604e8ad *f6ffff8b56308956048b463489460883c41085d2740b83621cfe8b520885d275f5c74630000000 *00c74634000000008b561885d274158b5a0883ec0c52e8f4f4ffff89da83c41085db75eb8b5644 *85d2740b83621cfe8b520885d275f58b46448946188b4648eb4b8b564485d2742e8d6e188b5a08 *83621cfe89d18b4618894208c7420c00000000837e180074068b461889500c894d0089da85db75 *d58b4608034634894608c74634000000008b461c03464889461c478b1d282c08088b4c2414c1e1 *038b5424148d040a3b7c83080f825bfeffffff4424148b4c24143b0df02c08080f8206feffff83 *3d542c0808000f84fc010000833df02c0808010f86ef0100008b35d02c08088b2df02c0808a130 *2c08088b50048b420803421c8944240c8b44240cba000000005250df2c248d642408dc0de02c08 *08dd5c2440a1d82c0808ba000000005250df2c248d642408dd5c2438dd442438dd442440d9c9dd *e1dfe0ddd9f6c4017406ddd8dd442440d97c2436668b442436b40c6689442434d96c2434df7c24 *28d96c24368b44242889c3ba000000005256df2c248d642408dc0de82c0808d83508bd0708dd5c *2438a1d42c0808ba000000005250df2c248d642408dd5c2440dd442440dd442438d9c9dde1dfe0 *ddd9f6c4017406ddd8dd442438d96c2434df7c2428d96c24368b44242889c7833df02c08080176 *5c833dfc2c080800754285f6744fa1302c08088b40048b4008ba000000005250df2c248d642408 *ba000000005256df2c248d642408dc0d002d0808d83520a20708d9c9dae9dfe0f6c4457511a130 *2c08088b4004c7402001000000eb0fa1302c08088b4004c740200000000085f6745f39fe7305e8 *5041ffffa1302c08088b400483782000741d8d441bfe8d55fe0fafc28d041801f839f0762a89f3 *29fb8d542dfdeb138d542dfe89d80fafc201f839f0761189f329fb89d889d1ba00000000f7f189 *c33b5c240c7305e8fa40ffffc744241400000000396c2414731a8b4424148d14c0a1282c080889 *5c900cff442414396c241472e6e8997bffff89c5833dac2d080800741183ec0cff35ac2d0808e8 *a0f3ffff83c410c705ac2d080800000000c705a02d080800000000c705202c080800000000c705 *242c080800000000a1d42c0808a3a82d0808c705a42d080800000000833d702c080800741183ec *0cff35702c0808e8d0f1ffff83c410c744241400000000bf000000008b15282c080889d38b4424 *14c1e00389c1034424143b7c820873488b4424148d14088d04bfc1e00489c603749304837e2000 *7414837e4c00740e83ec0cff764ce87bf1ffff83c410478b1d282c08088b4c2414c1e1038b5424 *148d040a3b7c830872b8ff4424148b4c24143b0d502c08087688833df02c0808010f8504010000 *833d682c080800741183ec0cff35682c0808e8a3f2ffff83c410a1342c08088b503085d2740ec7 *421c000000008b520885d275f2a1342c08088b4834bed02c0808833dd02c0808007470ba000000 *005251df2c248d642408dc0de02c0808d8c0a1d02c0808ba000000005250df2c24d9c98d642408 *dae9dfe0f6c445753c8d1409a1d02c080889c329d38d049b8d0480c1e002ba00000000f73650db *04248d642404dd05e82c0808dae9dfe0f6c4457505e8183fffff89d9eb44ba000000005251df2c *248d642408dc0de02c0808d97c2436668b442436b40c6689442434d96c2434df7c2428d96c2436 *8b44242889c13b05d42c080873068b0dd42c080883ec0c51eb77833ddc2c0808007465e8537aff *ff89c1833d502c0808007521a16c2c08088d04808d0480c1e0028b1d342c0808ba00000000f773 *08a3c8220808a1dc2c080829c88d14808d1492c1e202a1c822080883c06489c189d0c1fa1ff7f9 *3b05d42c08087d05a1d42c080883ec0c50eb0983ec0cff35d42c0808e8e475ffff83c410833d54 *2c080800741183ec0cff35402e0808e8e626000083c410e83f75ffff83ec0cff35382e0808e8c0 *7bffff83c404ff353c2e0808e89251ffff83c404ff35542c0808e89161ffff83c404ff35502c08 *08ff74242c55ff742438ff742440e8f864ffff83c420e8a559ffff83c44c5b5e5f5dc3575653bf *000000008b155c2c080883fa010f84f300000083fa017213b80000000083fa020f84aa010000e9 *98010000c705582c080800000000be382e08088b1d382e080885db0f848b000000813bc8ee0608 *74158b03668b40fc25ffff000083f838740c83f84075578b53048916eb5d83ec0cff7304e88101 *000083c41085c074368943048b4308e8400300008943088b430ce83503000089430c8b43108906 *8b5310a1b02d0808894310891db02d0808bf01000000eb158d73108b5310eb0d83ec0c680cbd07 *08e90201000089d385d20f8575ffffff85ff0f85e10000008b1d382e080885db74128b430ce8dc *02000089430c8b5b1085db75eec7055c2c080801000000e9b6000000be602c08088b1d602c0808 *81fb1c190808746d83ec0c53e8d600000089c283c41085c0740289c3668b431025ffff000083f8 *03741183f803770583f802eb0383f8047407eb118b5304eb298b530cc7430c1c190808eb1d85d2 *75088d730c8b530ceb138b530ca1442a080889430c891d442a0808891689d381fa1c1908087593 *a1602c08083d1c19080874208b580ce82f0200008b153c2e080889500ca33c2e080889d881fb1c *19080875e0c7055c2c080802000000b801000000eb0d83ec0c68d2bc0708e8df39ffff5b5e5fc3 *5383ec088b5c24108b0385c07411e8e201000089038d58108b401085c075ef83c4085bc3555756 *538b7424148b2d502c08088b3e83ef0889f0c1e81489f180b8602e0808000f849400000089f025 *00f00f00c1e80789f281e20000f0ff09d089f1396810777989f1f6401c017571b900000000f640 *1c027566f6401c08742089f12b08c1f90289cbc1eb058b500c83e11fb801000000d3e089f18504 *9a7540668b470425ffff000083f83b741983f83b7f0a83e81e83f8047720eb1683f84075198b4e *04eb19b90000000066837e1003750d8b7604e958ffffffb90000000089c85b5e5f5dc35383ec08 *8b5c24108b03e800010000890383c4085bc35557565383ec0c8b7c24208b6c24248b5c24288b74 *242c8b46143b05582c08087312a1582c08088d04c08b15282c08088b7482048b46248d04a83b46 *28720c83ec0c56e833eeffff83c4108b4e2489fa85db740d8b02890183c20483c1044b75f38b46 *248d14a8895624c70798ee060889470483c40c5b5e5f5dc3565383ec048b4424148b70048b4624 *83c00c3b4628720c83ec0c56e8e0edffff83c4108b5e248d430c894624c70388ef06088b442410 *89430489d981e100f00f00c1e90789d8250000f0ff09c18379100074238b41108d04c08b15282c *08088b4482148943088b41108d04c08b15282c0808895c821489d883c4045b5ec35557565383ec *0c89c389d8c1e81480b8602e0808000f845b01000089d82500f00f00c1e80789da81e20000f0ff *09c28b42103b05502c08087740f6421c020f84b80000008b0b83e908668379043b750b66837b10 *030f84b007000089d82500f00f00c1e80789da81e20000f0ff89c109d1f6411c01741e8b41103b *05582c08080f83a2050000c705642c080801000000e9930500008b511483790c00740b8b510c8b *4108894208eb068b41088942188379080074098b51088b410c89420c8b41148b500c8b42143b05 *582c08087312a1582c08088d04c08b15282c08088b5482048951148b42148941108b4240894108 *894a4083491c01e92c050000f6421c08746e8b3289d929f1c1f90289c8c1e8058b520c83e11fbf *0100000089fdd3e5852c820f850005000089d929f1c1f90289c8c1e80583e11fd3e7093c82a178 *2c08083b057c2c08087214c705802c080801000000a1742c0808a3782c0808a1782c0808891883 *05782c080804e9b80400008b42148b780c8b0b83e908668b410425ffff000083f8400f87cf0600 *00ff2485d0be070889dd668b0125ffff0000668b510281e2ffff00008d5c020189fe8b47143b05 *582c08087312a1582c08088d04c08b15282c08088b7482048b46248d04983b4628720c83ec0c56 *e8a3ebffff83c4108b4e2489ea85db0f84010600008b02890183c20483c1044b75f3e9ef050000 *8b4b04813b249705080f94c281f9ff0000000f96c021d08d14cd2c190808a8010f854c06000081 *3b3c9705080f94c283f9f00f9dc021d0a80174108d14cdac21080883f9100f8e2706000089ddbe *0200000089fb8b47143b05582c08087312a1582c08088d04c08b15282c08088b5c82048b43248d *04b03b4328720c83ec0c53e8fceaffff83c4108b4b2489ea85f60f84ce0200008b02890183c204 *83c1044e75f3e9bc02000089ddbe0300000089fb8b47143b05582c08087312a1582c08088d04c0 *8b15282c08088b5c82048b43248d04b03b4328720c83ec0c53e8a0eaffff83c4108b4b2489ea85 *f60f84720200008b02890183c20483c1044e75f3e96002000089ddbe0300000089fb8b47143b05 *582c08087312a1582c08088d04c08b15282c08088b5c82048b43248d04b03b4328720c83ec0c53 *e844eaffff83c4108b4b2489ea85f60f84160200008b02890183c20483c1044e75f3e904020000 *89dd668b0125ffff0000668b510281e2ffff00008d5c020189fe8b47143b05582c08087312a158 *2c08088d04c08b15282c08088b7482048b46248d04983b4628720c83ec0c56e8d7e9ffff83c410 *8b4e2489ea85db0f84350400008b02890183c20483c1044b75f3e92304000089dd668b431689c3 *81e3ffff000089fe8b47143b05582c08087312a1582c08088d04c08b15282c08088b7482048b46 *248d04983b4628720c83ec0c56e874e9ffff83c4108b4e2489ea85db0f84d20300008b02890183 *c20483c1044b75f3e9c0030000576a016a0353e8ccfaffff89c283c410e92e04000089ddbe0300 *000089fb8b47143b05582c08087312a1582c08088d04c08b15282c08088b5c82048b43248d04b0 *3b4328720c83ec0c53e803e9ffff83c4108b4b2489ea85f60f84d50000008b02890183c20483c1 *044e75f3e9c3000000833d482c080808765589ddbe0300000089fb8b47143b05582c08087312a1 *582c08088d04c08b15282c08088b5c82048b43248d04b03b4328720c83ec0c53e89ee8ffff83c4 *108b4b2489ea85f674748b02890183c20483c1044e75f3eb6583ec0853ff31e87303000083c410 *85c0755e89ddbe0300000089fb8b47143b05582c08087312a1582c08088d04c08b15282c08088b *5c82048b43248d04b03b4328720c83ec0c53e837e8ffff83c4108b4b2489ea85f6740d8b028901 *83c20483c1044e75f38b4324894b24e987020000ff05482c0808e886faffffff0d482c0808c703 *98ee0608894304e97202000066837906000f848f000000833d542c0808000f8482000000837b0c *00757ca14c2c080889430ceb6c6683790600746b833d542c0808007462837b0400755ca14c2c08 *08894304eb4c833d542c0808007449837b0c007543837b0800753da14c2c0808894308eb2d833d *542c080800742a668b1181e2ffff0000668b410225ffff000001c2837c930400750fa14c2c0808 *89449304891d4c2c080889dae94402000083ec085368e9bc0708e93102000089dd668b430625ff *ff00008d580389fe8b47143b05582c08087312a1582c08088d04c08b15282c08088b7482048b46 *248d04983b4628720c83ec0c56e804e7ffff83c4108b4e2489ea85db0f84620100008b02890183 *c20483c1044b75f3e95001000089dd8b5b0483c30389fe8b47143b05582c08087312a1582c0808 *8d04c08b15282c08088b7482048b46248d04983b4628720c83ec0c56e8a7e6ffff83c4108b4e24 *89ea85db0f84050100008b02890183c20483c1044b75f3e9f3000000833d582c08080074388b53 *0489d0c1e81480b8602e080800742789d02500f00f00c1e80781e20000f0ff09d08b40103b0558 *2c0808730ac705642c0808010000008b5304e92d01000089dd8b5b0483c30289fe8b47143b0558 *2c08087312a1582c08088d04c08b15282c08088b7482048b46248d04983b4628720c83ec0c56e8 *01e6ffff83c4108b4e2489ea85db74638b02890183c20483c1044b75f3eb5489dd8b5b0483c303 *89fe8b47143b05582c08087312a1582c08088d04c08b15282c08088b7482048b46248d04983b46 *28720c83ec0c56e8abe5ffff83c4108b4e2489ea85db740d8b02890183c20483c1044b75f38b46 *24894e24c7450098ee060889450489c2eb6f66837b100375088b5b04e9f6f7ffff8b432883c00d *576a0d5053e8e4f6ffff89c683c4085053e8d70100008b53308b4e3083c4108b43288d44833439 *c273158b02890183c20483c1048b43288d44833439c272eb89f2eb1783ec08668b410425ffff00 *00506830bd0708e8732fffff89d083c40c5b5e5f5dc35557565383ec0c8b7c24248b77048b2f89 *f82500f00f00c1e80789fa81e20000f0ff09d08b4010ba000000003b05502c08080f8747010000 *c70764ed060889f281e200f00f00c1ea0789f0250000f0ff09c289f0c1e81480b8602e08080074 *308b421ca8017522a808742589f12b0ac1f90289cbc1eb058b520c83e11fb801000000d3e08504 *9a7407b801000000eb05b80000000085c00f85db0000008b1683ea08668b420425ffff000083f8 *400f87ad000000ff2485d4bf07088b4424208b74860489f281e200f00f00c1ea0789f0250000f0 *ff09c289f0c1e81480b8602e08080074308b421ca8017522a808742589f12b0ac1f90289cbc1eb *058b520c83e11fb801000000d3e085049a7407b801000000eb05b80000000089f285c0745feb56 *8b7604e914ffffffff05482c0808833d482c080808773f83ec0856ff32e8bcfeffffff0d482c08 *0883c41085c07427894604c70664ec060889c6e9ddfeffff83ec08668b420425ffff0000506854 *bd0708e8f12dffff892fba0000000089d083c40c5b5e5f5dc38b54240889d02b44240483e0fc01 *4230c35557565383ec0cbd000000008b4424208b58088b4004894424088b4424208b30bf000000 *003b7c2408732bf6c30174078b06e8b2f5ffff4783c604f7c71f000000750b458b4424208b5ca8 *08eb02d1eb3b7c240872d583c40c5b5e5f5dc35383ec088b5c24108b4304e87bf5ffff89430466 *8b4312486683f802770b8b4314e865f5ffff894314837b1800740b8b4318e854f5ffff89431883 *ec088b43288d44833450ff7330e87815000083c4185bc35557565383ec0ca1582c08088904248b *5424208b723c8b4a38894c2404c705642c0808000000003b4a2c75093b72240f83c30700008b54 *24048b4424203b502c74133b7204750e8b4a08894c24048b31e9890700008b1e83eb0889742408 *668b430425ffff000083f83b0f8722070000ff2485d8c00708c705582c0808000000008b4604e8 *b0f4ffff8946048b460ce8a5f4ffff89460c8b4610e89af4ffff8946108b0424a3582c080889f1 *81e100f00f00c1e90789f0250000f0ff09c18379100074238b41108d04c08b15282c08088b4482 *108946088b41108d04c08b15282c080889748210c705642c08080000000083c614e9b10600008d *53f0668b421689c381e3ffff00008b7a0881fbffff0000750683ec0c57eb3485db7454f6c30174 *078b07e810f4ffff83c704d1eb75edeb3f668b430689c781e7ffff00008b5bfc81ffffff000075 *0e83ec0c53e8fefdffff83c410eb1a85ff7416f7c70100000074078b03e8cff3ffff83c304d1ef *75ea8b4608e8c0f3ffff894608e9ea030000668b430689c781e7ffff00008b5bfc81ffffff0000 *0f849601000085ff0f84c7030000f7c70100000074078b03e886f3ffff83c304d1ef75eae9ac03 *00008d53f0668b421689c381e3ffff00008b7a0881fbffff0000750e83ec0c57e86efdffff83c4 *10eb1785db7413f6c30174078b07e842f3ffff83c704d1eb75ed8b4604e833f3ffff894604eb7d *668b430689c781e7ffff00008b5bfc81ffffff00000f848100000085ff0f8448030000f7c70100 *000074078b03e8fcf2ffff83c304d1ef75eae92d0300008d53f0668b421689c381e3ffff00008b *7a0881fbffff0000750e83ec0c57e8e4fcffff83c410eb1785db7413f6c30174078b07e8b8f2ff *ff83c704d1eb75ed83c608e91a050000668b430689c781e7ffff00008b5bfc81ffffff00007506 *83ec0c53eb4185ff0f84c1020000f7c70100000074078b03e875f2ffff83c304d1ef75eae9a602 *00008d53f0668b421689c381e3ffff00008b7a0881fbffff0000751183ec0c57e85dfcffff83c4 *10e97b02000085db0f8473020000f6c30174078b07e82af2ffff83c704d1eb75ede95b02000066 *8b430689c781e7ffff00008b5bfc81ffffff0000750683ec0c53eb4185ff0f842b020000f7c701 *00000074078b03e8eaf1ffff83c304d1ef75eae9100200008d53f0668b421689c381e3ffff0000 *8b7a0881fbffff0000751183ec0c57e8d2fbffff83c410e9e501000085db0f84dd010000f6c301 *74078b07e89ff1ffff83c704d1eb75ede9c50100008d53f0668b421689c781e7ffff00008b6a08 *81ffffff0000743485ff7459f7c70100000074088b4500e865f1ffff83c504d1ef75e9eb40668b *430689c781e7ffff00008b6bfc81ffffff0000750e83ec0c55e853fbffff83c410eb1b85ff7417 *f7c70100000074088b4500e823f1ffff83c504d1ef75e9668b0325ffff00008d7c860483c60439 *fe73108b06e802f1ffff890683c60439fe72f0668b4302eb308b4604e8ebf0ffff8946048b4608 *e8e0f0ffff8946088b460ce8d5f0ffff89460c8b4610e8caf0ffff894610668b461625ffff0000 *e90d0300008b5424208b42108338007406c70654ed06088b4604e89ff0ffff894604833d642c08 *08000f84cc000000c705642c08080000000089f181e100f00f00c1e90789f0250000f0ff09c183 *7910000f84a40000008b41108d04c08b15282c08088b4482148946088b41108d04c08b15282c08 *0889748214eb7fc705582c0808000000008b4604e830f0ffff8946048b0c24890d582c0808eb0b *8b4604e81af0ffff89460489f181e100f00f00c1e90789f0250000f0ff09c18379100074238b41 *108d04c08b15282c08088b4482108946088b41108d04c08b15282c080889748210c705642c0808 *00000000eb0b8b4604e8c6efffff89460483c60ce92c0200008b4608e8b3efffff89460883ec08 *8b46048d44860c508d460c50e8d60f00008b46048d74860c83c410e9fe01000089f58b4608e883 *efffff8946088b1083ea188d7e0c668b460689c681e6ffff0000668b420c25ffff000083f80174 *1783f8017f0685c07409eb3283f8027411eb2b8b4204eb3683ec0456ff720457eb0f83ec04568b *450883c018508d450c50e80c0f000083c4108d3cb7eb3b668b420c25ffff00008b0485b8c10608 *89c3c1eb05668b450689c681e6ffff000085f67416f6c30175098b07e8f0eeffff890783c704d1 *eb4e75ea89fee9500100008b460483c002e928010000c705582c0808000000008b460483c0038d *1c8683c60c39de73108b06e8b3eeffff890683c60439de72f08b0424a3582c08088b4c240881e1 *00f00f00c1e9078b442408250000f0ff09c183791000742b8b41108d04c08b15282c08088b4482 *108b5424088942088b41108d04c08b15282c08088b4c2408894c8210c705642c080800000000e9 *bb000000c74608000000008b460483c0038d1c8683c60c39de0f83a00000008b06e828eeffff89 *0683c60439de72f0e98b00000089f3c705582c08080000000083ec0c56e87af8ffff8b442410a3 *582c080883c41089f181e100f00f00c1e90789f0250000f0ff09c18379100074238b41108d04c0 *8b15282c08088b4482108946088b41108d04c08b15282c080889748210c705642c080800000000 *8b432883c00d8d3486eb1883ec0456668b430425ffff0000506880bd0708e87525ffff833d642c *080800742bc705642c08080000000083ec08a1582c08088d04c08b15282c08088d048250ff7424 *14e8e0ecffff83c4108b4c24048b5424203b4a2c0f8546f8ffff3b72240f823df8ffff8b542404 *8b44242089503889703c83c40c5b5e5f5dc35557565383ec0ca1302c08088b00a3582c08088944 *2404a1782c080889c23b05742c08080f846d05000089d08d52fc8915782c08088b58fc8b3383ee *08895c2408668b460425ffff000083f83b0f87ad040000ff2485c8c10708c705582c0808000000 *008b4304e8bfecffff8943048b430ce8b4ecffff89430c8b4310e8a9ecffff894310e90c040000 *8d56f0668b421689c681e6ffff00008b7a0881feffff0000750683ec0c57eb3785f67457f7c601 *00000074078b07e86eecffff83c704d1ee75eaeb3f668b460689c781e7ffff00008b76fc81ffff *ff0000750e83ec0c56e85cf6ffff83c410eb1a85ff7416f7c70100000074078b06e82decffff83 *c604d1ef75ea8b4308e81eecffff894308e9730200008d56f0668b421689c681e6ffff00008b7a *0881feffff0000750683ec0c57eb3e85f60f844b020000f7c60100000074078b07e8dfebffff83 *c704d1ee75eae930020000668b460689c781e7ffff00008b76fc81ffffff0000751183ec0c56e8 *caf5ffff83c410e90802000085ff0f8400020000f7c70100000074078b06e894ebffff83c604d1 *ef75eae9e50100008d56f0668b421689c381e3ffff00008b720881fbffff0000743785db0f8453 *030000f6c30174078b06e85aebffff83c604d1eb75ede93b030000668b460689c381e3ffff0000 *8b76fc81fbffff0000750e83ec0c56e845f5ffffe9f902000085db0f840e030000f6c30174078b *06e815ebffff83c604d1eb75ede9f60200008d56f0668b421689c781e7ffff00008b6a0881ffff *ff0000743485ff7459f7c70100000074088b4500e8dbeaffff83c504d1ef75e9eb40668b460689 *c781e7ffff00008b6efc81ffffff0000750e83ec0c55e8c9f4ffff83c410eb1b85ff7417f7c701 *00000074088b4500e899eaffff83c504d1ef75e9668b0625ffff00008d74830483c30439f30f83 *680200008b03e874eaffff890383c30439f372f0e9530200008b4304e85eeaffff8943048b4308 *e853eaffff8943088b430ce848eaffff89430c8b4310e83deaffff894310e9220200008b4304e8 *2deaffff894304833d642c0808000f849101000089d981e100f00f00c1e90789d8250000f0ff09 *c1837910000f84730100008b41108d04c08b15282c08088b4482148943088b41108d04c08b1528 *2c0808895c8214e94b010000c705582c0808000000008b4304e8c5e9ffff8943048b7c2404893d *582c0808e9270100008b4304e8abe9ffff894304e9170100008b4304e89be9ffff894304e98001 *00008b4308e88be9ffff89430883ec088b43048d44830c508d430c50e8ae090000e93f01000089 *dd8b4308e865e9ffff8943088b1083ea188d7b0c668b430689c381e3ffff0000668b420c25ffff *000083f801741783f8017f0685c07409eb2f83f8027411eb288b4204eb3383ec0453ff720457eb *0f83ec04538b450883c018508d450c50e8ee080000e9d6000000668b420c25ffff00008b0485b8 *c1060889c6c1ee05668b450689c381e3ffff000085db0f84ca000000f7c60100000075098b07e8 *cee8ffff890783c704d1ee4b75e7e9ac000000c705582c0808000000008b430483c0038d348383 *c30c39f373108b03e89ee8ffff890383c30439f372f08b442404a3582c0808c705642c08080000 *0000eb6dc74308000000008b430483c0038d348383c30c39f373568b03e862e8ffff890383c304 *39f372f0eb44c705582c08080000000083ec0c53e8b9f2ffff8b7c2414893d582c0808c705642c *08080000000083c410eb1883ec0453668b460425ffff00005068b8bd0708e8f91fffff833d642c *080800742bc705642c08080000000083ec08a1582c08088d04c08b15282c08088d048250ff7424 *14e864e7ffff83c4108b4c240883c1048b4424082500f00f00c1e8078b54240881e20000f0ff09 *d02b08c1f90289cbc1eb058b500c83e11fb801000000d3e009049a8b15782c08083b15742c0808 *0f8593faffff833d802c080800742a833d842c0808007521c705802c080800000000a1302c0808 *8b40048b4004a3842c08088b00a3882c0808833d842c0808000f84aa0000008b1d842c0808be01 *000000eb078305882c080804a1882c08083b4304731b89c12b0bc1f90289cac1ea058b430c83e1 *1f89f7d3e7853c9074d4a1842c08088b35882c08083b700473448d4e042b08c1f90289cbc1eb05 *8b500c83e11fb801000000d3e085049a74058d4608eb338b15882c0808a1782c08088910830578 *2c0808048305882c080808e9b3f9ffffa1842c08088b4008a3842c080885c0740c8b00a3882c08 *08e956ffffff83c40c5b5e5f5dc35557565383ec0c8b5c24208b3d582c08088b1383ea08668b42 *0425ffff000083f83b0f8715020000ff2485b8c20708668b0225ffff00008d74830483c30439f3 *0f830e0200008b03e855e6ffff890383c30439f372f0e9f90100008b4304e83fe6ffff894304e9 *e9010000c705582c08080000000089d981e100f00f00c1e90789d8250000f0ff09c18379100074 *238b41108d04c08b15282c08088b4482108943088b41108d04c08b15282c0808895c82108b4304 *83c0038d348383c30c39f30f83980000008b03e8d5e5ffff890383c30439f372f0e983000000c7 *4308000000008b430483c0038d348383c30c39f30f835e0100008b03e8a5e5ffff890383c30439 *f372f0e949010000c705582c08080000000083ec0c53e8f9efffff83c41089d981e100f00f00c1 *e90789d8250000f0ff09c18379100074238b41108d04c08b15282c08088b4482108943088b4110 *8d04c08b15282c0808895c8210893d582c0808c705642c080800000000e9e10000008b4308e827 *e5ffff89430883ec088b43048d44830c508d430c50e84a050000eb6489dd8b4308e804e5ffff89 *43088b1083ea188d7b0c668b430689c381e3ffff0000668b420c25ffff000083f801741783f801 *7f0685c07409eb2f83f8027411eb288b4204eb3383ec0453ff720457eb0f83ec04538b450883c0 *18508d450c50e88d04000083c410eb57668b420c25ffff00008b0485b8c1060889c6c1ee05668b *450689c381e3ffff000085db7432f7c60100000075098b07e871e4ffff890783c704d1ee4b75e7 *eb1783ec08668b420425ffff00005068f8bd0708e8341cffffa1642c0808c705642c0808000000 *0083c40c5b5e5f5dc35557565383ec0c8b7c24208b5f14bd201908088b73088b07a3582c0808c7 *05642c08080000000039eb0f84900000008b1383ea08668b420425ffff000083f8227f0c83f821 *7d0e83f81f7409eb4983f837742beb428b4304e8dae3ffff894304833d642c080800740cc70564 *2c080800000000eb1bc7430800000000eb3083ec0cff7304e80cfdffff83c41085c0741e896b08 *89ddeb1783ec08668b420425ffff0000506818be0708e86f1bffff89f38b760881fb201908080f *8570ffffff896f1483c40c5b5e5f5dc35557565383ec0c8b6c24208b75188b460889442408c705 *582c080800000000c705642c08080000000081fe201908080f84710100008b1683ea08668b4204 *25ffff000083e81f83f81c0f8729010000ff2485a8c307088b45108946088975108b460483c003 *8d3c868d5e0c39fb0f831c0100008b03e8f3e2ffff890383c30439fb72f0e9070100008b4500a3 *582c08088b460483c0038d3c868d5e0c39fb73108b03e8c6e2ffff890383c30439fb72f0c70558 *2c080800000000c7460800000000833d642c0808000f84c1000000c705642c08080000000083ec *085556e80de2ffffeb358b4604e881e2ffff8946048b460ce876e2ffff89460c8b4610e86be2ff *ff894610eb2283ec0c56e8d2ecffff8b451089460889751083c410eb718b4604e847e2ffff8946 *048b4510894608897510eb5b8b4500a3582c08088b4604e829e2ffff894604c705582c08080000 *0000833d642c0808007415c705642c0808000000008b4514894608897514eb20c7460800000000 *eb1783ec08668b420425ffff0000506844be0708e8c419ffff8b7424088b46088944240881fe20 *1908080f858ffeffff83c40c5b5e5f5dc3565383ec048b1d4c2c0808a1302c08088b00a3582c08 *0883fb010f847c0100008b0b8d71f8668b51f881e2ffff0000668b460225ffff000001c28b4493 *04a34c2c0808668b51f881e2ffff0000668b460225ffff000001c2a1402e080889449304891d40 *2e0808668b460425ffff000083f8110f849700000083f8117f0e83f8090f84ca000000e9ea0000 *0083f818744b83f8220f85dc0000008b4304e81de1ffff894304833d642c0808000f84db000000 *c705642c0808000000008b4308a3402e0808a1302c08088b4014894308a1302c0808895814e9b1 *000000668b460689c381e3ffff00008b76fc81fbffff0000743785db0f8492000000f6c3017407 *8b06e8b8e0ffff83c604d1eb75edeb7d8d56f0668b421689c381e3ffff00008b720881fbffff00 *00750e83ec0c56e8a3eaffff83c410eb5585db7451f6c30174078b06e877e0ffff83c604d1eb75 *edeb3c668b0625ffff00008d74830483c30439f373298b03e854e0ffff890383c30439f372f0eb *1783ec08668b460425ffff0000506870be0708e81818ffff8b1d4c2c080883fb010f8584feffff *83c4045b5ec35557565383ec0c8b742420bd000000008b4424248b5804bf000000003b7c242873 *2df6c30175098b06e8efdfffff89064783c604f7c71f000000750b458b4424248b5ca804eb02d1 *eb3b7c242872d383c40c5b5e5f5dc35557565383ec0c8b7c24203b7c24240f83fc0100008b0783 *e80c89442408668b400825ffff000083e82383f8090f87b9010000ff24851cc407088b4704e884 *dfffff89470483c708e9ba0100008b5424088b420489c583e51f83c70489ee89c3c1eb0585ed74 *16f6c30175098b07e853dfffff890783c704d1eb4e75ea8b542408668b420a89c381e3ffff0000 *8b3281fbffff0000750b83ec0c56e83de9ffffeb4385db0f845d010000f6c30174078b06e810df *ffff83c604d1eb75ede94501000083c7048b07e8fadeffff890783c7048b581883ec045383c018 *5057e8c7feffff8d3c9f83c410e91a0100008b5424088b42048b1883c70483ec0453ff720457e8 *a3feffff8d3c9f83c410e96cffffff8b6f048d770cbf0800000089eb81e3ffff0000f6c3017509 *8b06e896deffff890683c604d1eb4f75ea89e8c1e80e25fc0300008d7c3028c1ed180f84b60000 *008b07e86edeffff890783c7044d75f1e9a20000008b4708e859deffff8947088b1083ea1883c7 *0c668b420c25ffff000085c0740783f8017407eb208b4204eb2b8b42048b1883ec04535057e808 *feffff83c4108d3c9fe9d1feffff668b420c25ffff00008b0485b8c1060889c6c1ee0589c383e3 *1f85db0f84affefffff7c60100000075098b07e8e9ddffff890783c704d1ee4b75e7e991feffff *83ec088b542410668b420825ffff0000506894be0708e8a515ffff3b7c24240f8204feffff83c4 *0c5b5e5f5dc35756538b5c24108b534085d274578d7b448b420889434089d18b4344894208c742 *0c00000000837b440074068b434489500c890f8b43480342188943488b3283ec0c56e8c3f6ffff *83c41085c0740f83ec08ff731056e8d4dcffff83c4108b534085d275ac5b5e5fc38b4c240483f9 *01742a8b01668b50f881e2ffff0000668b40fa25ffff000001c28b449104c74491040000000089 *c183f80175d6c38b54240481fa2019080874138b4208c742080000000089c23d2019080875edc3 *8b151c2c080885d274138b420c8902c7420c000000008b520885d275edc7051c2c080800000000 *c3565383ec048b7424108b1d1c2c080885db741383ec0c8d430450ffd683c4108b5b0885db75ed *83c4045b5ec3538b4424088b48308b0183e80c668b400825ffff000083f82a740b83f82c0f8484 *000000eb268b4104813864ed060874778138dced0608740e813808ee06087406c70064ed060883 *c108ebbc8b1183ea0c668b420825ffff000083e82383f8067737ff248544c407088b410489c2c1 *ea18c1e81025ff0000008d541015eb218b510483c203eb198b42048b10eb118b41048b501883c2 *02eb078b520483e21f428d0c91e960ffffff5bc35557565383ec1cc7442414000000008b542430 *8b42288d448234894424108b5a30c744241800000000bd000000008d7bf839c30f83aa0100008b *0383e80c668378082a0f852501000089de8b4304813864ed0608751085ed0f84850100008d7bf8 *e97d010000837c2418000f84c80000008b4424143943040f84b10000008b4b048b11668b42fc25 *ffff0000f6840041220808010f859500000081fadced0608750e83ec0cff7104e8a823ffff83c4 *108b4e0489c82500f00f00c1e80789ca81e20000f0ff09d08944240c8378100075128b54241489 *51048b4604c70064ec0608eb4c8b46048b5424148950048b4e048139dced0608742e8b54240c8b *42108d04c08b15282c08088b4482148941088b54240c8b42108d04c08b4e048b15282c0808894c *82148b4604c70044ed060883c502892b897b04eb308b4304813864ed060874168138dced060874 *0e813808ee06087406c70064ed0608c7442418010000008b76048974241483c308eb6bc7442418 *0000000085ed74038d7bf8bd000000008b1383ea0c668b420825ffff000083e82383f8067737ff *248560c407088b430489c2c1ea18c1e81025ff0000008d541015eb218b530483c203eb198b4204 *8b10eb118b43048b501883c202eb078b520483e21f428d1c933b5c24100f8256feffff8d5f0889 *de8b4424303b7830762a8b07c1e00229c389d88b7f048d5f0829d829c683ec04505356e87156fd *ff83c4108b5424303b7a3077d68b44243089703083c41c5b5e5f5dc383ec0c8b442410833df82c *080801750b83ec0c50e8bdfdffffeb0983ec0c50e808fdffff83c41cc390905383ec088b5c2410 *83fb010f84a70000008b0b83e908668b410425ffff000083f811745583f8117f0783f8097450eb *6883f818743f83f822755e8b4b0489c8c1e81480b8602e080800742489c82500f00f00c1e80789 *ca81e20000f0ff09d0f6401c01750a8b018943048d430589018b5b08eb3b8b5b0ceb368b5b04eb *31668b1181e2ffff0000668b410225ffff000001c28b5c9304eb1783ec08668b410425ffff0000 *50687cc40708e8d510ffff83fb010f8559ffffff83c4085bc35557565383ec3c8b5c24503b5c24 *540f83120400008b1383ea0c668b420825ffff000083e82383f8090f87d7030000ff248534c507 *088b6b0489e981e1ffff000083c30cbf08000000f6c10175338b3389f0c1e81480b8602e080800 *742389f02500f00f00c1e80789f281e20000f0ff09d0f6401c0175098b0689038d4301890683c3 *04d1e94f75c089e8c1e80e25fc0300008d5c182889efc1ef180f847b0300008b0b89c8c1e81480 *b8602e080800742389c82500f00f00c1e80789ca81e20000f0ff09d0f6401c0175098b0189038d *4301890183c3044f75c7e93d0300008b420489c1c1e90583c30489c783e71f0f8427030000f6c1 *0175338b3389f0c1e81480b8602e080800742389f02500f00f00c1e80789f281e20000f0ff09d0 *f6401c0175098b0689038d4301890683c304d1e94f75c0e9e202000083c3048b0b89c8c1e81480 *b8602e080800742389c82500f00f00c1e80789ca81e20000f0ff09d0f6401c0175098b0189038d *4301890183c3048b41188944243889df8d51188954243489442430c744242c000000008b711cbd *0000000039c57361f7c60100000075338b0f89c8c1e81480b8602e080800742389c82500f00f00 *c1e80789ca81e20000f0ff09d0f6401c0175098b0189078d470189014583c704f7c51f00000075 *12ff44242c8b44242c8b5424348b748204eb02d1ee3b6c2430729f8b4424388d1c83e914020000 *83c3048b42048b3889dd89442428897c2424c744241c000000008b7004c744242000000000397c *24207369f7c60100000075358b4d0089c8c1e81480b8602e080800742489c82500f00f00c1e807 *89ca81e20000f0ff09d0f6401c01750a8b018945008d45018901ff44242083c504f64424201f75 *12ff44241c8b54241c8b4424288b749004eb02d1ee8b5424243954242072978d1cbbe978010000 *89de8b43088b00a80174078b40ffa80175f98d58e88b4e0889c8c1e81480b8602e080800742489 *c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01750a8b018946088d460989018d7e0c66 *8b430c25ffff000085c0740a83f801740de99b0000008b4304e9a30000008b43048b3089fd8944 *241889742414c744240c000000008b5804c744241000000000397424107366f6c30175358b4d00 *89c8c1e81480b8602e080800742489c82500f00f00c1e80789ca81e20000f0ff09d0f6401c0175 *0a8b018945008d45018901ff44241083c504f64424101f7512ff44240c8b44240c8b5424188b5c *8204eb02d1eb8b44241439442410729a8d3cb7eb5e668b430c25ffff00008b0485b8c1060889c3 *c1eb0589c683e61f85f67440f6c30175338b0f89c8c1e81480b8602e080800742389c82500f00f *00c1e80789ca81e20000f0ff09d0f6401c0175098b0189078d4701890183c704d1eb4e75c089fb *eb1783ec08668b420825ffff00005068a0c40708e8aa0cffff3b5c24540f82eefbffff83c43c5b *5e5f5dc35383ec088b5c24108b4b0489c8c1e81480b8602e080800742489c82500f00f00c1e807 *89ca81e20000f0ff09d0f6401c01750a8b018943048d430589018b4b0c89c8c1e81480b8602e08 *0800742489c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01750a8b0189430c8d430d89 *01668b4312486683f80277358b4b1489c8c1e81480b8602e080800742489c82500f00f00c1e807 *89ca81e20000f0ff09d0f6401c01750a8b018943148d43158901837b180074358b4b1889c8c1e8 *1480b8602e080800742489c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01750a8b0189 *43188d4319890183ec088b43288d44833450ff7330e8d1faffff8b432883c00d8d048383c4185b *c35557565383ec1c837c2430000f84290300008b4424308b088b1183ea08668b420425ffff0000 *83e81c83f81f0f87df020000ff24855cc507088b410483c0038d348183c10c39f10f83db020000 *8b1989d8c1e81480b8602e080800742389d82500f00f00c1e80789da81e20000f0ff09d0f6401c *0175098b0389018d4101890383c10439f172c6e99c02000083ec0c51e85dfeffffeb4b89ce8b59 *0889d8c1e81480b8602e080800742489d82500f00f00c1e80789da81e20000f0ff09d0f6401c01 *750a8b038941088d4109890383ec088b46048d44860c508d460c50e8e1f9ffff83c410e93e0200 *00894c24188b41088b00a80174078b40ffa80175f98d50e88b7c241883c70c8b4c2418668b4106 *89c381e3ffff0000668b420c25ffff000083f801742483f8017f0985c07413e93001000083f802 *0f8496000000e9220100008b4204e92a0100008b520489542414895c2410c744240c000000008b *7204bd0000000039dd0f8363010000f7c60100000075338b0f89c8c1e81480b8602e0808007423 *89c82500f00f00c1e80789ca81e20000f0ff09d0f6401c0175098b0189078d470189014583c704 *f7c51f0000007512ff44240c8b44240c8b5424148b748204eb02d1ee3b6c2410729fe9fd000000 *8b7c241883c70c8b4c24188b41088d501889542408895c2404c70424000000008b701cbd000000 *0039dd0f83cd000000f7c60100000075338b0f89c8c1e81480b8602e080800742389c82500f00f *00c1e80789ca81e20000f0ff09d0f6401c0175098b0189078d470189014583c704f7c51f000000 *7510ff04248b0c248b4424088b748804eb02d1ee3b6c240472a1eb6c668b420c25ffff00008b04 *85b8c1060889c6c1ee058b542418668b420689c381e3ffff000085db7443f7c60100000075338b *0f89c8c1e81480b8602e080800742389c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01 *75098b0189078d4701890183c704d1ee4b75bd8b4424188b480889c8c1e81480b8602e08080074 *4389c82500f00f00c1e80789ca81e20000f0ff09d0f6401c0175298b018b54241889420889d083 *c0098901eb1783ec08668b420425ffff00005068dcc40708e86208ffff8b4c24308b4908894c24 *3085c90f85d7fcffff83c41c5b5e5f5dc35383ec088b5c241085db74278b133b530473198b0283 *e80883ec085250e8b006000089c283c4103b430472e78b5b0885db75d983c4085bc35557565383 *ec0c8b742420897424048b068944240885f60f84e40000008b1e3b5e047208e9cd00000083c304 *3b5e04731e89d92b0ec1f90289cac1ea058b460c83e11fbf01000000d3e7853c9074da3b5e040f *839e0000008b03a80174078b40ffa80175f983e80889dd83ec085350e82606000089c389c729ef *c1ff028b4424188d14b88b4c24148b01050010000083c41039c276328d4d042b0ec1f90289cac1 *ea0583e11fb801000000d3e089c1f7d18b460c210c908b4c24048b4908894c24048b0189442408 *8b4c24088b5500f6c201740b4a8b02890a89c2a80175f58955008b4c24088d0cb9894c24083b5e *040f8236ffffff8b760885f60f851cffffff83c40c5b5e5f5dc35557565383ec1c8b4424308b40 *048944241489c78b1089542418c744240c0100000085c00f84be0100008b373b77040f83a80100 *00bb01000000eb0383c6043b7704731b89f12b0fc1f90289cac1ea058b470c83e11f89ddd3e585 *2c9074dd3b77040f83750100008d4e042b0fc1f90289cbc1eb058b570c83e11fb801000000d3e0 *85049a751c8b5424188b4424148950048b4808894c24148b19895c2418ff44240c89f38b4c2418 *8b16f6c201740b4a8b02890a89c2a80175f589138b2e83ed08896c241089e9668b450425ffff00 *0083f83b7743ff2485dcc50708b802000000eb4bb803000000eb44668b460625ffff0000eb0b8b *460483c002eb318b460483c003eb298b462883c00deb21668b461625ffff0000eb16668b1181e2 *ffff0000668b410225ffff00008d44100189c53974241874198b5c241889f189c285c0740d8b01 *890383c10483c3044a75f38b542410668b420425ffff0000f68400402208082074458b4c241881 *e100f00f00c1e9078b442418250000f0ff09c18379100074278b41108d04c08b15282c08088b44 *82108b5c24188943088b41108d04c08b15282c0808895c82108b442410668378043b751083ec08 *ff74242056e862d7ffff83c4108d04ad000000000144241801c63b77040f8258feffff8b7f0885 *ff0f8542feffff8b4c24188b542414894a04837a0800741983ec0cff7208e812baffff8b5c2424 *c743080000000083c4108b44240c8b6c24308945088b44240c83c41c5b5e5f5dc356538b74240c *8b5e1481fb20190808743f8b4b0889c8c1e81480b8602e080800742489c82500f00f00c1e80789 *ca81e20000f0ff09d0f6401c01750a8b018943088d4309890189cb81f92019080875c18b4e1489 *c8c1e81480b8602e080800742489c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01750a *8b018946148d461589015b5ec357565383ec0c6849530708ff54242083c410833db02d08080074 *3b8b0db02d080889c8c1e81480b8602e080800742789c82500f00f00c1e80789ca81e20000f0ff *09d0f6401c01750d8b01a3b02d0808c701b12d0808833d382e080800743b8b0d382e080889c8c1 *e81480b8602e080800742789c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01750d8b01 *a3382e0808c701392e0808be010000003b35f02c080873628d04f68b15282c08088d1c828b4b10 *89c8c1e81480b8602e080800742489c82500f00f00c1e80789ca81e20000f0ff09d0f6401c0175 *0a8b018943108d4311890183ec0c8d04f68b15282c08088d048250e87bfeffff83c410463b35f0 *2c0808729e8b0d442a080889c8c1e81480b8602e080800742789c82500f00f00c1e80789ca81e2 *0000f0ff09d0f6401c01750d8b01a3442a0808c701452a08088b0d3c2e080889c8c1e81480b860 *2e080800742789c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01750d8b01a33c2e0808 *c7013d2e08088b0d2c2a080885c9743a8b1989d8c1e81480b8602e080800742389d82500f00f00 *c1e80789da81e20000f0ff09d0f6401c0175098b0389018d410189038b491085c975c683ec0cff *35402e0808e800f1ffffc7042449530708e82f27ffffc7042449530708e8beedffffbe00000000 *83c4103b35f02c08080f8388000000bf000000008b15282c080889d38d04f50000000089c101f0 *3b7c8208735d8d040e8d14bfc1e2040354830489d383ec0cff7230e8d9f9ffff83c404ff7344e8 *8bf6ffffa1f02c08084883c41039c67514837b0400740e83ec0cff7304e8e8f9ffff83c410478b *1d282c08088d0cf5000000008d040e3b7c830872a3463b35f02c08080f8278ffffffa1302c0808 *8b5804837b0400740f83ec0c53e8b3faffff83c4108943085b5e5fc3538b5c24088b0b89c8c1e8 *1480b8602e080800742389c82500f00f00c1e80789ca81e20000f0ff09d0f6401c0175098b0189 *038d430189015bc35557565383ec2c8b7424408b5c2444668b460425ffff000083f83b0f878106 *0000ff2485ccc607088b4b0489c8c1e81480b8602e080800742489c82500f00f00c1e80789ca81 *e20000f0ff09d0f6401c01750a8b018943048d430589018d4308e9540600008b4b0489c8c1e814 *80b8602e080800742489c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01750a8b018943 *048d430589018b4b0889c8c1e81480b8602e0808000f84ed02000089c82500f00f00c1e80789ca *81e20000f0ff09d0f6401c010f85cf0200008b018943088d4309e9c002000089de8b4b0489c8c1 *e81480b8602e080800742489c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01750a8b01 *8943048d430589018b4e0889c8c1e81480b8602e080800742489c82500f00f00c1e80789ca81e2 *0000f0ff09d0f6401c01750a8b018946088d460989018b4e0c89c8c1e81480b8602e0808007424 *89c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01750a8b0189460c8d460d89018b4e10 *89c8c1e81480b8602e080800742489c82500f00f00c1e80789ca81e20000f0ff09d0f6401c0175 *0a8b018946108d46118901668b4616eb51668b0625ffff00008d7c830483c30439fb733a8b0b89 *c8c1e81480b8602e080800742389c82500f00f00c1e80789ca81e20000f0ff09d0f6401c017509 *8b0189038d4301890183c30439fb72c6668b460225ffff0000e93004000089de8b4b0489c8c1e8 *1480b8602e080800742489c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01750a8b0189 *43048d430589018b4e0889c8c1e81480b8602e080800742489c82500f00f00c1e80789ca81e200 *00f0ff09d0f6401c01750a8b018946088d460989018b4e0c89c8c1e81480b8602e080800742489 *c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01750a8b0189460c8d460d8901837e1000 *0f84a3000000eb6c89de8b4b0489c8c1e81480b8602e080800742489c82500f00f00c1e80789ca *81e20000f0ff09d0f6401c01750a8b018943048d430589018b4e0c89c8c1e81480b8602e080800 *742489c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01750a8b0189460c8d460d89018b *4e1089c8c1e81480b8602e080800742489c82500f00f00c1e80789ca81e20000f0ff09d0f6401c *01750a8b018946108d461189018d4314e9520300008b4b0489c8c1e81480b8602e080800742489 *c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01750a8b018943048d430589018d430ce9 *1503000089de8b4b0889c8c1e81480b8602e080800742489c82500f00f00c1e80789ca81e20000 *f0ff09d0f6401c01750a8b018943088d4309890183ec088b46048d44860c508d460c50e8bfecff *ff83c4108b46048d44860ce9bb020000895c24288b43088b00a80174078b40ffa80175f98d50e8 *8b6c242883c50c8b4c2428668b410689c681e6ffff0000668b420c25ffff000083f801742483f8 *017f0985c07413e94501000083f8020f84a0000000e9370100008b4204e93f01000089ef8b5204 *8954242489742420c7442418000000008b5a04c744241c000000003974241c0f83ff000000f6c3 *0175338b0f89c8c1e81480b8602e080800742389c82500f00f00c1e80789ca81e20000f0ff09d0 *f6401c0175098b0189078d47018901ff44241c83c704f644241c1f7512ff4424188b4424188b54 *24248b5c8204eb02d1eb8b4c2420394c241c729ce9960000008b7c242883c70c8b5424288b4208 *8d4818894c241489742410c7442408000000008b581cc744240c000000003974240c7364f6c301 *75338b0f89c8c1e81480b8602e080800742389c82500f00f00c1e80789ca81e20000f0ff09d0f6 *401c0175098b0189078d47018901ff44240c83c704f644240c1f7512ff4424088b4424088b5424 *148b5c8204eb02d1eb8b4c2410394c240c729c8d6cb500eb6b668b420c25ffff00008b0485b8c1 *060889c3c1eb058b542428668b420689c681e6ffff000085f67442f6c30175358b4d0089c8c1e8 *1480b8602e080800742489c82500f00f00c1e80789ca81e20000f0ff09d0f6401c01750a8b0189 *45008d4501890183c504d1eb4e75be8b4424288b480889c8c1e81480b8602e080800742a89c825 *00f00f00c1e80789ca81e20000f0ff09d0f6401c0175108b018b54242889420889d083c0098901 *89e8eb7e8b430483c0028d0483eb738b430483c0038d348383c30c39f3733a8b0b89c8c1e81480 *b8602e080800742389c82500f00f00c1e80789ca81e20000f0ff09d0f6401c0175098b0189038d *4301890183c30439f372c689d8eb2583ec0c53e840eeffff83c410eb1783ec08668b460425ffff *000050680cc50708e8bcfafeff83c42c5b5e5f5dc38b5424048b44240889c1c1e90289c8234208 *3b027d0589c823420cc35756538b7424108b7c2414b900000000803f00741ebb07001000c1e107 *0fbe0701c189ca89c8c1fa1ff7fb89d147803f0075e789c82346083b067d0589c823460c5b5e5f *c38b442408394424040f94c025ff000000c383ec14ff74241cff74241ce81a3dfdff85c00f94c0 *25ff00000083c41cc383ec1468bcc707086800100000e838fbfeff8b4c24248b54242089448a18 *83c41cc35557565383ec1c8b7c24308b1789d00347043dffff0f000f8f1301000089d085d27905 *05ff030000c1f80a894424188b1789d085d279068d82ff0300002500fcffff29c2895424148b47 *0489c5032f89e885ed79068d85ff030000c1f80a8944241089e885ed79068d85ff0300002500fc *ffff89ea29c28954240c751083ec08ff74241857e854ffffff83c4108b074089073b47047519c7 *070000000001c08947048b470c89470801c083c80189470cff4714c744240400000000c7442408 *000000008b4c24188b448f188b5424148b1c9085db74348b730883ec08ff3357ff971810000083 *c41039e8750d8b4c2404894b08895c2404eb0b8b442408894308895c240889f385f675cc8b5424 *188b4497188b5424088b4c24148914888b4c24108b448f188b4c24048b54240c890c9083c41c5b *5e5f5dc35756538b7424108b7c241483ec085756ff961810000089c185c079068d80ff03000089 *c3c1fb0a89c885c979068d81ff0300002500fcffff89ca29c28b449e188b1c9083c41085db741f *83ec0857ff33ff961c10000083c41085c074058b4304eb0c8b5b0885db75e1b8000000005b5e5f *c35383ec088b0d8c2c080885c9740a8b4108a38c2c0808eb4083ec0868c9c7070868fc0f0000e8 *54f9feff89c18d400ca38c2c080889c283c4108d81f00f000089c339c2730c8d420c89420889c2 *39d872f4c742080000000089c883c4085bc38b542404a18c2c080889420889158c2c0808c35557 *565383ec0c8b7424208b6c2424ff46108b46148d04803946107c0c83ec0c56e8befdffff83c410 *83ec085556ff961810000089c285c079068d80ff03000089c7c1ff0a89d085d279068d82ff0300 *002500fcffff89d329c3e82fffffff89288b5424388950048b54be188b149a8950088b54be1889 *049a83c41c5b5e5f5dc35557565383ec148b7424288b6c242cbf000000005556ff961810000089 *c285c079068d80ff030000c1f80a8944241889d085d279068d82ff0300002500fcffff29c28954 *24148b5424188b4496188b4c24148b1c8883c41085db745e83ec0855ff33ff961c10000083c410 *85c07442837c24280074098b442428394304753285ff75148b4c24088b548e188b43088b4c2404 *89048aeb068b430889470883ec0c53e8c6feffffff4e108b430483c410eb0e89df8b5b0885db75 *a2b80000000083c40c5b5e5f5dc35557565383ec0c8b6c24248b5424208b420403024889442408 *85c0790505ff030000c1f80a894424088b4c24208b410489c703394f89f885ff79068d87ff0300 *002500fcffff29c7837c240800786085ff783a8b5424088b4c24208b4491188b1cb885db74248b *730885ed740b83ec0cff7304ffd583c41083ec0c53e824feffff83c41089f385f675dc4f79c683 *ec0c8b4424148b54242cff748218e8c0f7feffbfff03000083c410ff4c240879a083ec0cff7424 *2ce8a6f7feff83c41c5b5e5f5dc35383ec1068d7c707086820100000e8eef6feff89c383c4086a *0050e897fbffff8b531883c4108d820010000039c27315c7020000000083c2048b431805001000 *0039c272ebc70300000000c7430400040000c74308ff030000c7430cff070000c7431000000000 *c74314000400008b4424108983181000008b44241489831c10000089d883c4085bc383ec1468a5 *5a070868445a0708e865ffffff83c41cc383ec1468b65a070868605a0708e84fffffff83c41cc3 *90905557565383ec4c8b5424608b42688b6830058800000089442420817d0018c70608750583c5 *04eb1c817d0028ec06080f85f10200008b4d04894c241c83c508e9f00500008b5d00895c241c83 *c5048b74241c8b06668b40fc25ffff000083f8220f8791000000ff248534c807088b44241c8b40 *048944241cebd48b5c241c668b430689c181e1ffff00008d048d0000000089ea29c289d083e808 *3b442420731f83ed08895d04c7450018c706088b4c24608b41688968308b4168e97e06000083ed *08c74500a0000708895d048d048d0000000029c5ba0000000039ca730d8b44930c894495004239 *ca72f38b5b08895c241ce93d05000083ed088b5c241c895d04c7450018c70608e97d0200008b45 *00668b40fc25ffff000083f824742183f8247f0e83f8230f84a9040000e9cc01000083f82a0f84 *2d010000e9be0100008b4500c744241801000000bf000000003de89706080f843f020000c74424 *1801000000bf010000003d589906080f8427020000c744241801000000bf020000003d689b0608 *0f840f020000c744241801000000bf020000003d889d06080f84f7010000c744241801000000bf *010000003da89f06080f84df010000c744241801000000bf010000003db8a106080f84c7010000 *c744241802000000bf020000003d24a606080f84af010000c744241803000000bf030000003d50 *ab06080f8497010000c744241804000000bf040000003d14ae06080f847f010000c74424180500 *0000bf050000003d44b106080f8467010000c744241806000000bf060000003df4b406080f844f *010000c744241807000000bf070000003d38b906080f8437010000e9960000008b45048138dced *0608750e83ec0cff7004e82403ffff83c4108b4d0489c82500f00f00c1e80789ca81e20000f0ff *89c309d3837b100075128b44241c8941048b4504c70064ec0608eb448b45048b54241c8950048b *4d048139dced060874268b43108d04c08b15282c08088b4482148941088b43108d04c08b4d048b *15282c0808894c82148b4504c70044ed060883c508e910feffff83ed088b4c241c894d04c74500 *18c706088b5c24608b43688968308b436866c740100000e9cc0b00008b550083ea0c668b420825 *ffff000083e82383f8067737ff2485c0c807088b450489c2c1ea18c1e81025ff0000008d541015 *eb218b550483c203eb198b42048b10eb118b45048b501883c202eb078b520483e21f428b449500 *668378fc230f84860200008b7424608b46688968308b4668eb828b54241c8b02668b40fc25ffff *000083f81a0f845f01000083f81c0f85f801000089d68b42088b00668378fc1a0f85e601000083 *c504668b420489c281e2ffff00003b542418735db90000000039d1730d8b448d0089448dfc4139 *d172f38b44241829d08b0485c8220808894495fc83ed04668b460625ffff00008d148500000000 *29d5b90000000039c1734f8b448e0c89448d0041668b460625ffff000039c172eaeb373b542418 *753d668b460625ffff00008d14850000000029d5b90000000039c173168b448e0c89448d004166 *8b460625ffff000039c172ea8b76088974241ce9b3010000668b460625ffff00008d44070383ec *0c50e8be2affff89c3c70088960608668b4604662b44242866894304668b460601f8668943068b *460889430883c410668b460689c2b9000000006685c0741381e2ffff00008b448e0c89448b0c41 *39d172f3b90000000039f9731c668b460689c681e6ffff00008d14318b448d008944930c4139f9 *72f0895c241ce99900000083c5048b4c241c668b411489c381e3ffff00003b5c2418732fba0000 *000039da730d8b449500894495fc4239da72f38b44241829d88b0485c822080889449dfc83ed04 *e9dc0000003b5c24180f84d20000008d470383ec0c50e8e729ffff89c1c7008896060889d8662b *442428668941048b5c242c89590866897906ba0000000083c41039fa730d8b4495008944910c42 *39fa72f3894c241c8d6cbd00e95bfbffff83ed088b74241c897504c7450018c706088b5424608b *42688968308b4268e946fdffff83ed048b4c241c894d008b5d08895c241ca1a02d08083b05a82d *08080f82a700000083ed04c7450018c706088b7424608b46688968308b4668eb4f8b5495048954 *241ca1a02d08083b05a82d080872798b5424608b42688968308b4268eb2ba1a02d08083b05a82d *0808722e83ed088b4c241c894d04c7450028ec06088b5c24608b43688968308b436866c7401001 *00b800000000e9040a00008d8538ffffff3b442420732383ed088b74241c897504c7450028ec06 *088b5424608b42688968308b4268e99f000000c7442414010000008b4c241c8b590483c308895c *24108b710883c6088974240c8b410c83c00c894424088b511083c208895424048b4c24148b5c24 *10668b044b25ffff000041894c241483f8330f8775090000ff2485dcc807088b7424148b542410 *668b047225ffff000046897424148d04850400000089e929c13b4c242073b383ed088b5c241c89 *5d04c7450028ec06088b7424608b46688968308b466866c740100100b801000000e9260900008b *5424148b4c2410668b045125ffff000042895424148b448500e9a00000008b5c24148b74241066 *8b045e25ffff000043668b145e81e2ffff000043895c24148b4485008945fc8b4495008945f8e9 *730100008b5424148b4c2410668b045125ffff0000428954241489d3668b145181e2ffff000043 *668b0c5981e1ffff000043895c24148b4485008945fc8b4495008945f88b448d008945f483ed0c *e9e3feffff8b5424148b4c2410668b045125ffff000042895424148b5c24088b04838945fce9e4 *0200008b7424148b542410668b047225ffff00004689742414c745f88cea0608e9870000008b5c *24148b742410668b045e25ffff000043895c2414c745f83ceb0608e98b0000008b4c24148b5c24 *10668b044b25ffff000041894c2414c745f85ceb0608e98f0000008b5424148b4c2410668b0451 *25ffff00004289542414c745f87ceb06088b5c24088b0483eb708b7424148b542410668b047225 *ffff00004689742414c745f8a8eb06088b4c24088b0481eb4a8b5c24148b742410668b045e25ff *ff000043895c2414c745f8e0eb06088b5424088b0482eb248b4c24148b5c2410668b044b25ffff *000041894c2414c745f80cec06088b7424088b04868945fc83ed08e9b7fdffff83ed04c74500a8 *9f0608e9a8fdffff83ed04c74500e8970608e999fdffff83ed04c7450058990608e98afdffff83 *ed04c74500689b0608e97bfdffff83ed04c74500889d0608e96cfdffff83ed04c74500b8a10608 *e95dfdffff83ed04c7450024a60608e94efdffff83ed04c7450050ab0608e93ffdffff83ed04c7 *450014ae0608e930fdffff83ed04c7450044b10608e921fdffff83ed04c74500f4b40608e912fd *ffff83ed04c7450038b90608e903fdffff8b5424148b4c2410668b045189c381e3ffff00004266 *8b045189c181e1ffff000042895424148d048d0000000029c5ba0000000039ca0f8dc7fcffff8d *041a8b74240c8b0486894495004239ca7cede9affcffff8b5424148b4c2410668b045189c181e1 *ffff0000428b5c2410668b045389c381e3ffff0000428954241449780e8d140b8b448d00894495 *004979f28d6c9d00e96bfcffff8b7424148b542410668b047289c381e3ffff000046897424148d *430383f8037305b80300000083ec0c50e8bf24ffff83c4108945fc66895806c700ec960608eb50 *8b4c24148b5c2410668b044b89c681e6ffff000041668b044b89c381e3ffff000041894c24148d *430383f8027305b80200000083ec0c50e87124ffff83c4108945fc6689580666897004c7008896 *060883ed04e9d2fbffff8b7424148b542410668b047225ffff000046668b147281e2ffff000046 *897424148b5c85008b4500894308b90000000039d17d0d8b448d0489448b0c4139d17cf38d6c95 *04e988fbffff8b5c24148b742410668b045e89c181e1ffff000043895c24148b5d008d048d0000 *000029c5ba0000000039ca0f8d56fbffff8b449304894495004239ca7cf3e944fbffff8b542414 *8b4c2410668b045189c681e6ffff000042668b045189c381e3ffff000042895424148b5424048b *04b2668b50f881e2ffff0000668b40fa25ffff00008d44100183f8027305b80200000083ec0c50 *e87023ffff83c41089c18b5424048b04b28901ba0000000039da7d0d8b449500894491044239da *7cf38d6c9dfc894d00e9bdfaffff8b4c24148b5c2410668b144b81e2ffff000041894c2414668b *044b89c181e1ffff0000ff4424148b45008b00668b40fe25ffff000039d0eb638b7424148b4424 *10668b147081e2ffff000046668b047089c181e1ffff000046897424148b45008b00668b40fe25 *ffff000039d0eb658b5c24148b742410668b045e25ffff000043668b145e89d181e1ffff000043 *895c24148b55048b5c240c3b14830f8c1bfaffffe9030200008b7424148b542410668b047225ff *ff000046668b147289d181e1ffff000046897424148b55048b5c240c3b14830f84e3f9ffffe9cb *0100008b7424148b442410668b0c7081e1ffff000046668b047089c381e3ffff00004689742414 *8b45048b550889442430895424348b4424308b54243489442440895424448b74240c8b048e8b54 *8e0489442430895424348b4424308b542434894424388954243cdd442440dd442438d9c9dae9df *e0f6c4010f8562f9ffffeb7f8b5424148b5c2410668b0c5381e1ffff000042668b045389c381e3 *ffff000042895424148b45048b550889442440895424448b4424408b5424448944243089542434 *8b74240c8b048e8b548e0489442440895424448b4424408b542444894424388954243cdd442430 *dd442438d9c9dae9dfe080e44580fc400f84e1f8ffff895c2414e9d8f8ffff8b4c24148b5c2410 *668b144b81e2ffff000041894c2414668b044b89c181e1ffff0000ff4424148b4504894424248b *4424248944242c8b74240c8b0496894424248b44242489442428d944242cd9442428d9c9dae9df *e0f6c4010f8578f8ffffeb638b4c24148b5c2410668b144b81e2ffff000041894c2414668b044b *89c181e1ffff0000ff4424148b45048944242c8b44242c894424248b74240c8b04968944242c8b *44242c89442428d9442424d9442428d9c9dae9dfe080e44580fc400f8413f8ffff894c2414e90a *f8ffff833d482a0808000f846ff1ffff83ed04c7450018c706088b5424608b42688968308b4268 *66c740100100b802000000e9770100008b4d00894c241c83c504e902f2ffff83ed04c7450080c8 *0608e90cf4ffff83ed04c745002cc90608e9fdf3ffff83ed04c74500d8c90608e9eef3ffff83ed *04c7450094ca0608e9dff3ffff83ed04c7450068cb0608e9d0f3ffff83ed04c745006cc80608e9 *c1f3ffff8b5c24148b742410668b145e81e2ffff000043668b045e43895c24149801449500e947 *f7ffff8b4424148b542410668b1c4281e3ffff0000408944241489c1668b044225ffff00004189 *4c24148b54240c8b3482e88e29fdff89c78b4c24608b41688b4020890783ed54c1e31080cbff89 *5d04c7450034cd06088b416889683083ec086a0089c883c00850e86eeffeff89c383c4048b5424 *6c8b42688b403083c05450ffd683c4086a0053e8cceffeff89442470836c2470088b4c24708b41 *688d9888000000895c24308b683083c5548b1789502083c410e990f6ffff8b7424148b54241066 *8b047225ffff000089442414e976f6ffff83ec0c68e6c70708eb0883ec0c6804c80708e8b1e4fe *ff83c44c5b5e5f5dc3905381eca40000008b8424ac0000008944240c8d5c240c8d44241050e8f0 *2bfdffc78424940000000000000083c40c6a00536a1ae8e826fdff81c4a80000005bc35383ec24 *8b5c242cff742430e8afffffffe88e000000a3602a0808bad34d621089d8f7e2c1ea0689542418 *8d14928d14928d1492c1e20329d38d1c9b8d1c9b8d1c9bc1e303895c241c8b4424188b54241c89 *4424108954241483c40c6a008d442408506a01e8b628fdff83c4285bc383ec20c744240c000000 *00c7442410000000008b44240c8b54241089442404895424086a008d442408506a01e88028fdff *83c42cc35383ec106a008d44240c50e8fc2afdff8b4424108d1c808d1c9b8b4c2414baad8bdb68 *89c8f7eac1fa0dc1f91f29ca8d045a83c4185bc39083ec186a01e8ef00000083c41cc35383ec0c *8b5c24186a006a006aff6a226a0753ff74242ce8fa26fdff83c42083f8ff7551e87d27fdff8338 *0c740d833816752281fbffffffbf761a83ec085368acc90708e8cfe3feffc7042401000000e81c *e3feff83ec10e84927fdff83c404ff30e8df26fdff83c4085068efc90708e809e3feff83c4085b *c35756538b7c241081c70000100083ec08576a00e86effffff89c389c681e6ffff0f0083c408b8 *0000100029f05053e86927fdff83c41083f8ff741b85f67e2483ec08568d041f29f050e84e27fd *ff83c41083f8ff750d83ec0c68d0c90708e8a1e2feff29f381c30000100089d85b5e5fc3565383 *ec048b5c241089dec1e614833d942c080800743a83ec0856ff35942c0808e8effeffff89c183c4 *10a9ffff0f00742d83ec085650e8ef26fdff83c41083f8ff750d83ec0c6803ca0708e842e2feff *83ec0c56e835ffffff89c183c4108d040ea3942c0808ba0000000039da731789d0c1e0148d0408 *c1e814c680602e0808014239da72e9011d902c080889c883c4045b5ec39090c705c02c08080000 *0000c705c42c080800000000c705c82c080800002000c705cc2c080800010000c705d42c080840 *000000c705d82c080800010000c705d02c080800000000c705dc2c080800000000c705e82c0808 *00000000c705ec2c080800000840c705e02c080800000000c705e42c080800000040c705f02c08 *0802000000c705f42c080802000000c705f82c080801000000c705fc2c080800000000c705002d *080800000000c705042d080800003e40c705102d080814000000c35557565383ec0c8b6c2420e8 *8529fdff8b10eb01450fbe4500f64442012075f489efe86e29fdff8b10eb01470fbe07f6444201 *207505803f0075f039fd745f8b44242483381e7e0f83ec086a1f688cd20708e8e6e0feff83ec08 *681cca070889fe29ee8d460150e8f7e1feff89c383c40c565550e89c28fdffc6041e008b542434 *8b028b542438891c828b442434ff0083c41089fd803f000f856dffffff83c40c5b5e5f5dc35557 *565383ec34c7442414000000006a2f8b442450ff30e87327fdff83c41085c0740940eb0c46e951 *0100008b5424448b02a3a02c08088b4c24408b39be01000000c701010000008b442448c7000000 *0000833da82c080800741683ec04ff74245050ff35a82c0808e8ecfeffff83c41083ec0c6837ca *0708e85123fdff83c41085c0741483ec04ff742450ff74245050e8c4feffff83c410bd00000000 *39fe0f8df600000083ec088b54244cff34b2683eca0708e8c522fdff83c41085c00f8461ffffff *8b4c24448b1cb183ec08536844ca0708e8a522fdff83c41085c00f849800000083ec08536847ca *0708e88c22fdff83c41085c07507bd01000000eb7183ec088b44244cff34b0683fca0708e86a22 *fdff83c41085c07507bd00000000eb4f83fd01751f8b542448833a1e7f168b128b4c24448b04b1 *8b4c244c8904918b442448eb1885ed75188b4c24408b118b4c24448b04b18904918b442440ff00 *eb0f83ec086a1f688cd20708e825dffeff4639fe0f8c2bffffffeb1f39fe7d1b8b4c24408b118b *4c24448b04b18904918b442440ff004639fe7ce58b5424408b028b4c2444c70481000000008b54 *24488b028b4c244cc7048100000000be000000003b320f8d6b0400008b54244c8b04b280382d74 *2283ec0cff3540270808e80a22fdff83c4088b4c2454ff34b1684cca0708e9200400008b54244c *8b04b20fbe400183e83f83f8390f87fa030000ff248528d3070883ec0c8b4c24588b04b183c002 *50e88605000085c0790505ff0f0000c1f80ca3d42c0808e9bc010000c705082d080801000000e9 *da0300008b54244c8b04b280780200743f83c00283ec046a006a0050e89320fdff83c410dd5c24 *188b4424188b54241c89442420895424248b4424208b542424a3002d08088915042d0808e98e03 *0000c705fc2c080801000000e97f0300008b4c244c8b04b183c00283ec046a006a0050e83e20fd *ff83c410dd5c24208b4424208b542424894424188954241c8b4424188b54241ca3e02c08088915 *e42c0808d9eedd05e02c0808d9c9dae9dfe0f6c4450f8527030000eb02ddd883ec0c8b542458ff *34b2e88f050000e90c03000083ec0c8b4c24588b04b183c00250e883040000c1e802a3c82c0808 *e9c200000083ec0c8b5424588b04b283c00250e863040000c1e802a3cc2c0808e9fa00000083ec *0c8b5424588b04b283c00250e84304000085c0790505ff0f0000c1f80ca3d02c0808e9d1000000 *8b54244c8b04b283c00283ec046a006a0050e8651ffdff83c410dd5c24208b4424208b54242489 *4424188954241c8b4424188b54241ca3e82c08088915ec2c0808dd05e82c0808d9eedde9dfe0f6 *c4450f842bffffffd90520a20708e90fffffff83ec0c8b4c24588b04b183c00250e8b9030000a3 *f02c080883c41085c00f852202000083ec0c8b442458ff34b0e9fafeffff83ec0c8b5424588b04 *b283c00250e887030000a3f42c0808eb2483ec0c8b5424588b04b283c00250e86d03000085c079 *0505ff0f0000c1f80ca3dc2c080883c41085c00f85ca01000083ec0c8b4c2458ff34b1e9a2feff *ffc705c42c080804000000eb16c705c42c080803000000eb0ac705c42c08080200000083ec0868 *68ca0708ff7424588b442458ff30ff7424588b542458ff3256e8d6010000a3c02c080883c42085 *c00f8567010000c744240c01000000e95a010000c705f82c080800000000e94b01000083ec0c68 *acd20708e92e0100008b4c244c8b04b180780200750fc705102d080800000000e9220100008b54 *244c8b04b283c00283ec046a006a0050e8e11dfdff83c410dd5c24208b4424208b542424894424 *188954241cd90518d30708dc4c2418d97c2416668b442416b40c6689442414d96c2414db5c2410 *d96c24168b4c2410ba6766666689c8f7eac1fa0389c8c1f81f29c28d149289d1c1e1020f95c283 *f9130f9ec021d0a8017405b914000000890d102d0808e99000000083ec0c68d0d20708eb7683ec *0c6875ca0708eb6c83ec0c688eca0708eb6283ec0c68f4d20708eb588b54244c8b04b20fbe4002 *83f863742383f8637f0685c07409eb2283f8747413eb1b83ec088b4c2454ff34b168a6ca0708eb *2583ec0c68c0ca0708eb1b83ec088b442454ff34b0eb0a83ec088b542454ff34b268d5ca0708e8 *13dbfeffc744241c0100000083c410468b4c24483b310f8c95fbffff837c240c00744383ec0cff *3540270808e8a41dfdffbb0023080883c410833d0023080800741a83ec08ff336829cb0708e824 *dbfeff83c41083c304833b0075e683ec0c6a01e80adafeff83c42c5b5e5f5dc35557565381ec94 *0000008bac24a80000008bbc24b80000008b04af83c00268ecca070850e8ce1cfdff83c41085c0 *75088b3544270808eb478b04af80780200740e83ec0868f3ca070883c00250eb2683ec048b8424 *ac000000ff30ffb424bc0000008d5c240c53e8db21fdff83c40868f3ca070853e8cd20fdff89c6 *83c41085f6751c83ec048b04af83c0025068f5ca0708ff3544270808e88a1cfdffeb7cbb000000 *003b9c24a40000007d2583ec048b8424ac000000ff3498680fcb070856e8621cfdff83c410433b *9c24a40000007cdb566a056a016813cb0708e87621fdffbb0000000083c4103b9c24ac0000007d *1e83ec04ff349f680fcb070856e8241cfdff83c410433b9c24ac0000007ce283ec08566a0ae81c *1ffdff89f081c49c0000005b5e5f5dc3575383ec248b5c2430b800000000803b000f84d7000000 *83ec046a006a0053e82b1bfdff83c410dd5c24088b4424088b54240c89442410895424148b4424 *108b542414894424188954241c89dffcb9ffffffffb000f2aef7d10fbe4c0bfe83f9670f94c283 *f9470f94c009d0a8017408d9051cd30708eb4c83f96d0f94c283f94d0f94c009d0a8017408d905 *20d30708eb3283f96b0f94c283f94b0f94c009d0a8017408d90518d30708eb1883f9770f94c283 *f9570f94c009d0a801740ed90524d30708dc4c2418dd5c2418d97c2406668b442406b40c668944 *2404dd442418d96c2404db1c24d96c24068b042483c4245b5fc383ec14ff7424186819cb0708e8 *7cd8feffc7042401000000e8c9d7feff909090909090909090909090909055e8000000005981c1 *4aa8000089e5575683ec18dd4508d98190aeffffdde1dfe0f6c445750fddd8ddd831c031d283c4 *185e5f5dc3d9c1d97deed88994aeffff668b45eeb40c31f6668945ecd96decdf7de0d96dee8b45 *e05056df2c2489c783c40885c0784add5df0dd45f0deeadde9dfe0f6c445751fd9e0d96decdf7d *e0d96dee31d28b45e029c619d789f089fa83c4185e5f5dc3d96decdf7de0d96dee31d28b45e001 *c611d7ebe18db600000000d881a47cffffebae90909090909090905589e5575683ec28c745e800 *0000008b7d0cc745ec00000000c745f4000000008b75088b45108b551485ff0f881f01000085d2 *0f882d0100008975e08945d48955e489fe85d2753939f8766c89fa8b45e0f775d489c7c745d000 *0000008b55d0897de88955ec8b4df48b45e88b55ec85c97407f7d883d200f7da83c4285e5f5dc3 *31ffc745d0000000003975e477ce0fbd45e489c783f71f754a8b4dd43b75e40f97c2394de0bf01 *0000000f93c009d0a80175a231ffeb9e8b7dd485ff750eb80100000031c931d2f7f18945d489f0 *31d2f775d48945d08b45e0f775d489c7e979ffffffb82000000089f929f88b55e48945dc8b45d4 *d3e28a4ddcd3e809c289f9d365d48955e48a4ddc89f28b45e0d3ea89f9d3e68a4ddcd3e809c689 *f989f0f775e489d689c78b45d4d365e0f7e739f2771539f20f94c23b45e00f97c021d0a8010f84 *0effffff4fe908ffffff89f6f7de83d700c745f4fffffffff7df85d20f89d3fefffff7d8f755f4 *83d200f7dae9c4feffff90909090909090909090905589e5575683ec38c745e0000000008b7d0c *c745e400000000c745ec000000008b75088b45108b551485ff0f88ef01000085d20f88d7010000 *8d4df08945c4894de88955dc8975d8897dd485d2755139f8767d89f089faf775c48b7de88955d8 *85ff741b8b45d8c745e4000000008945e08b45e88b55e08b4de489108948048b45ec85c0743b8b *45f08b55f4f7d883d200f7da83c4385e5f5dc38db6000000008b55d43955dc76588975e08955e4 *8b45e08b55e48945f08955f48b45ec85c075c58b45f08b55f483c4385e5f5dc389f68b45c485c0 *750db80100000031d2f775c48945c48b45d48b55dcf775c48b45d88955d4f775c4e95fffffff90 *8d7426000fbd45dc83f01f8945cc75548b55dc8b4dc43955d40f97c2394dd80f93c009d0a80174 *118b55d48b45d829c81b55dc8945d88955d48b75e885f60f843fffffff8b45d88b55d48b4de889 *45e08955e48b45e08b55e48901895104e920ffffff908b4dccb82000000029c88b55dc8945d08a *4dccd3e28b45c48a4dd0d3e809c28a4dccd365c48955dc8a4dd08b55d48b75d4d3ea8a4dcc8b45 *d8d3e68a4dd0d3e809c68a4dcc8975d489f0f775dc8955d4d365d8f765c489d689c73b55d47712 *3b55d40f94c23b45d80f97c021d0a80174062b7dc41b75dc8b55e885d20f849dfeffff8a4dd08b *55d48b45d829f819f28955d4d3e28a4dcc8945d8d3e809c28b45d4d3e88955e08945e4e963feff *ff89f6f7d883d200f7dae91dfeffff8d742600f7de83d700c745ecfffffffff7dfe9fefdffff90 *9090909090909090909090905589e5575683ec20c745f0000000008b75088b55148b7d0c8b4510 *8975e8c745f4000000008945dc8955ec89fe85d2752f39f8766289fa8b45e8f775dc89c7c745d8 *000000008b55d8897df08955f48b45f08b55f483c4205e5f5dc38d74260031ffc745d800000000 *3975ec77d80fbd45ec89c783f71f755b8b4ddc3b75ec0f97c2394de8bf010000000f93c009d0a8 *0175ac31ffeba88b45dc85c0750eb80100000031c931d2f7f18945dc89f031d2f775dc8945d88b *45e8f775dc89c78b55d8897df08955f48b45f08b55f483c4205e5f5dc3b82000000089f929f88b *55ec8945e48b45dcd3e28a4de4d3e809c289f9d365dc8955ec8a4de489f28b45e8d3ea89f9d3e6 *8a4de4d3e809c689f989f0f775ec89d689c78b45dcd365e8f7e739f2771539f20f94c23b45e80f *97c021d0a8010f8407ffffff4fe901ffffff90905589e5575683ec388d4df08b55148b75088b7d *0c8b4510c745e000000000c745e400000000894dec8945c48955dc8975d8897dd485d2753d39f8 *766489f089faf775c48b75ec8955d885f6741b8b45d8c745e4000000008945e08b45ec8b55e08b *4de489108948048b45f08b55f483c4385e5f5dc38b55d43955dc76538975e08955e48b45e08b55 *e48945f08955f48b45f08b55f483c4385e5f5dc38d7426008b7dc485ff750db80100000031d2f7 *75c48945c48b45d48b55dcf775c48b45d88955d4f775c4e978ffffff908d7426000fbd45dc83f0 *1f8945cc755b8b55dc8b4dc43955d40f97c2394dd80f93c009d0a80174118b55d48b45d829c81b *55dc8945d88955d48b4dec85c90f8458ffffff8b45d88b55d48b4dec8945e08955e48b45e08b55 *e489018951048b45f08b55f483c4385e5f5dc38b55ccb82000000029d08a4dcc8945d08b55dcd3 *e28b45c48a4dd0d3e809c28a4dccd365c48955dc8a4dd08b55d48b75d4d3ea8a4dcc8b45d8d3e6 *8a4dd0d3e809c68a4dcc8975d489f0f775dc8955d4d365d8f765c489d689c73b55d477123b55d4 *0f94c23b45d80f97c021d0a80174062b7dc41b75dc8b45ec85c00f84affeffff8a4dd08b55d48b *45d829f819f28955d4d3e28a4dcc8945d8d3e809c28b45d4d3e88955e08945e4e975feffff9090 *9090909090909090905589e583ec18895df4e8ba00000081c392a00000897dfc8d83c4beffff8d *bbc4beffff8975f829f8c1f80285c08d70ff7512e8bd0000008b5df48b75f88b7dfc89ec5dc3ff *14b789f04e85c075f689f6e89f0000008b5df48b75f88b7dfc89ec5dc38db426000000008dbc27 *000000005589e583ec18895df48975f831f6e84500000081c31da00000897dfce87711fdff8d93 *c4beffff8d83c4beffff29c2c1fa0239d673158945f089d7908d742600ff14b0468b45f039fe72 *f58b5df48b75f88b7dfc89ec5dc38b1c24c3909090905589e55352bb6c250808a16c25080883f8 *ff740c83eb04ffd08b0383f8ff75f4585b5dc35589e553e8000000005b81c3a39f000050e81618 *fdff595bc9c3000003000000010002000000803e0000803e0000803e000080be000080be000080 *be0eb204081eb204081eb204081eb204081eb204081eb204081eb204081eb204081eb204081eb2 *04081eb204081eb204081eb204081eb204081eb204081eb204081eb204081eb204081eb204081e *b204081eb20408c9b1040814b1040836b1040863b104081eb204081eb204081eb204081eb20408 *85b10408a7b104081eb204081eb204081eb204081eb204081eb204081eb204081eb204081eb204 *081eb20408edb004081eb204081eb204081eb204081eb204081eb204081eb204081eb204081eb2 *04081eb204081eb204081eb204081eb204081eb204081eb204081eb204081eb204081eb204081e *b204081eb204081eb204081eb204081eb204081eb204081eb204081eb204081eb204081eb20408 *1eb204081eb204081eb20408eeb10408d6b004081eb204081eb20408f7b1040845db040845db04 *083edb040837db040830db040829db040822db04081bdb040845db040814db040807db04084772 *6170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f64386f *75000047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f *775f64386f76000047726170686963737a6955497a69474c55547a6943616c6c6261636b737a69 *57696e646f775f64386f77000047726170686963737a6955497a69474c55547a6943616c6c6261 *636b737a6957696e646f775f64386f78000047726170686963737a6955497a69474c55547a6943 *616c6c6261636b737a6957696e646f775f64386f79000047726170686963737a6955497a69474c *55547a6943616c6c6261636b737a6957696e646f775f64386f7a000047726170686963737a6955 *497a69474c55547a6943616c6c6261636b737a6957696e646f775f64386f410000477261706869 *63737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f64386f42000047 *726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f6438 *6f43000047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e64 *6f775f64386f44000047726170686963737a6955497a69474c55547a6943616c6c6261636b737a *6957696e646f775f64386f45000047726170686963737a6955497a69474c55547a6943616c6c62 *61636b737a6957696e646f775f64386f46000047726170686963737a6955497a69474c55547a69 *43616c6c6261636b737a6957696e646f775f64386f47000047726170686963737a6955497a6947 *4c55547a6943616c6c6261636b737a6957696e646f775f64386f48000047726170686963737a69 *55497a69474c55547a6943616c6c6261636b737a6957696e646f775f64386f4900004772617068 *6963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f64386f4a0000 *83f7040893f70408a3f70408b3f70408c3f70408f50a0508530a0508600a0508670a05086e0a05 *08750a05087c0a0508830a05088a0a0508910a0508980a05089f0a0508a60a0508f50a0508f50a *0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f5 *0a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508 *f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a05 *08f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a *0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f5 *0a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508 *f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a05 *08f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a *0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508f50a0508ad0a0508b40a0508bb *0a0508c20a0508c90a0508d00a0508d70a0508e10a0508eb0a050847726170686963737a695549 *7a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f64334356000000 *00522605084b260508442605083d260508362605082f260508282605081b260508fa270508f327 *0508ec270508e5270508de270508d7270508d0270508c3270508dd310508d6310508cf310508c8 *310508c1310508ba310508b3310508ac3105089f310508554a05084b4a0508414a0508374a0508 *2d4a0508234a0508194a05080f4a0508054a0508fb490508f1490508e7490508dd490508d34905 *08c0490508ad490508a3490508994905088f490508854905087b49050871490508674905085d49 *050853490508494905083f490508354905082b49050821490508174905080d49050803490508f9 *480508ef480508e5480508db480508d1480508c7480508bd480508b3480508a94805089f480508 *954805088b48050881480508774805086d48050863480508594805084f480508454805083b4805 *0831480508274805081d4805081348050809480508ff470508f5470508eb470508e1470508d747 *0508cd470508c3470508b9470508af470508a8470508a14705089a470508934705088c47050885 *4705087e470508774705087047050869470508624705085b470508544705084d47050846470508 *3f4705082b4705082570050810700508fb6f0508e66f0508d16f0508bc6f0508a76f0508926f05 *087d6f0508686f0508536f05083e6f0508296f0508146f0508ff6e0508ea6e0508d56e0508c06e *0508ab6e0508966e0508816e05086c6e0508576e0508426e05082d6e0508186e0508036e0508ee *6d0508d96d0508c46d0508af6d05089a6d0508856d0508706d05085b6d0508466d0508316d0508 *1c6d0508076d0508f26c0508dd6c0508c86c0508b36c05089e6c0508896c0508746c05085f6c05 *084a6c0508356c0508206c05080b6c0508f66b0508e16b0508cc6b0508b76b0508a26b05088d6b *0508786b0508636b05084e6b0508396b0508246b05080f6b0508fa6a0508e56a0508d06a0508bb *6a0508a66a0508916a05087c6a0508676a0508526a05083d6a0508286a0508136a0508fe690508 *e9690508d4690508bf690508aa69050895690508806905086b69050856690508416905082c6905 *081769050802690508ed680508d8680508c3680508ae68050899680508846805086f6805085a68 *050845680508306805081b68050806680508f1670508dc670508c7670508b26705089d67050888 *670508736705085e67050849670508346705081f6705080a670508f5660508e0660508cb660508 *b6660508a16605088c66050877660508626605084d66050838660508236605080e660508f96505 *08e4650508cf650508ba650508a5650508906505087b65050866650508516505083c6505082765 *050812650508fd640508e8640508d3640508be640508a9640508946405087f6405086a64050855 *640508406405082b6405081664050801640508ec630508d7630508c2630508ad63050898630508 *836305086e63050859630508446305082f6305081a63050805630508f0620508db620508c66205 *08b16205089c62050887620508726205085d62050848620508336205081e62050809620508f461 *0508df610508ca610508b5610508a06105088b61050876610508616105084c6105083761050822 *6105080d610508f8600508e3600508ce600508b9600508a46005088f6005087a60050865600508 *506005083b6005082660050811600508fc5f0508e75f0508d25f0508bd5f0508a85f0508935f05 *087e5f0508695f0508545f05083f5f05082a5f0508155f0508005f0508eb5e0508d65e0508c15e *0508ac5e0508975e0508825e05086d5e0508585e0508435e05082e5e0508195e0508045e0508ef *5d0508da5d0508c55d0508b05d05089b5d0508865d0508715d05085c5d0508475d0508325d0508 *1d5d0508085d0508f35c0508de5c0508c95c0508b45c05089f5c05088a5c0508755c0508605c05 *084b5c0508365c0508215c05080c5c0508f75b0508e25b0508cf5b0508bc5b0508a75b0508925b *05087d5b0508685b0508535b05083e5b0508295b0508145b0508ff5a0508ea5a0508d55a0508c0 *5a0508ab5a0508965a0508815a05086c5a0508575a0508425a05082d5a0508185a0508035a0508 *ee590508d9590508c4590508af5905089a59050885590508705905085b59050846590508315905 *081c59050807590508f2580508dd580508c8580508b35805089e58050889580508745805085f58 *05084a58050835580508205805080b580508f6570508e1570508cc570508b7570508a25705088d *57050878570508635705084e57050839570508245705080f570508fa560508e5560508d0560508 *bb560508a6560508915605087c56050867560508525605083d5605082856050813560508fe5505 *08e9550508d4550508bf550508aa55050895550508805505086b55050856550508415505082c55 *05081755050802550508ed540508d8540508c3540508ae54050899540508845405086f5405085a *54050845540508305405081b54050806540508f1530508dc530508c7530508b25305089d530508 *88530508735305085e53050849530508345305081f5305080a530508f5520508e0520508cb5205 *08b6520508a15205088c52050877520508625205084d52050838520508235205080e520508f951 *0508e4510508cf510508ba510508a5510508905105087b51050866510508515105083c51050827 *51050812510508fd500508e8500508d3500508be500508a9500508975005088550050873500508 *615005084f5005083d50050829500508676c75556e50726f6a6563743400676c754275696c6433 *444d69706d61704c6576656c7300db0f49400000003f0000003f0000003f0000003f0000003fdb *0f4940182d4454fb2109400000003fdb0f49400000003f0000003f0000003f0000003f0000003f *db0f4940182d4454fb2109400000003fdb0f49400000003f0000003f0000003f0000003f000000 *3fdb0f4940182d4454fb2109400000003f000000aee40508a1e4050823e4050895e405088ce405 *0883e405087ae4050823e4050845e4050839e4050823e4050830e4050823e4050823e4050823e4 *0508ed200608e3200608dc200608d5200608ce200608c7200608c0200608b9200608b2200608ab *200608a42006089d200608962006088f20060888200608812006087a2006087320060863200608 *91430608524306086043060860430608284306082f430608604306088343060844430608914306 *086043060883430608834306085243060891430608444306087c430608364306088a4306088a43 *06083d4306083d430608444306088343060883430608594306087c43060852430608834306088a *43060852430608834306086e430608444306088a4306087c43060844430608834306088a430608 *674306084443060891430608604306086e43060891430608914306089143060891430608914306 *089143060891430608914306089143060891430608914306089143060891430608914306089143 *060891430608444306086043060875430608834306086043060891430608594306086e43060891 *430608674306086e4306084b4306088a430608914306083d430608914306089143060891430608 *6e4306089143060891430608914306089143060891430608444306089143060891430608834306 *084443060844430608834306084b4306088a4306084b4306088a4306088a4306088a4306088a43 *06087c4306088a4306086e430608604306086e430608914306086e430608834306083643060844 *43060859430608834306087543060860430608604306086043060836430608364306086e430608 *91430608914306089143060891430608914306085243060863726561746541646a7573746f7200 *00667265654861736b656c6c46756e6374696f6e5074723a206e6f7420666f72206d652c206775 *76212025700a000000006d61696e20746872656164206578697465642028756e63617567687420 *657863657074696f6e29006d61696e2074687265616420636f6d706c6574656420776974682069 *6e76616c6964207374617475730025733a20756e63617567687420657863657074696f6e002573 *3a20696e7465727275707465640025733a2052657475726e20636f64652028256429206e6f7420 *6f6b00746f6f206d616e792068735f657869742829730000000068735f6164645f726f6f742829 *206d7573742062652063616c6c65642061667465722068735f696e697428290025733a20696e74 *65726e616c206572726f723a200025733a2000256c7500256c752c25332e336c7500256c752533 *2e336c7500256c752c25332e336c752c25332e336c7500256c7525332e336c7525332e336c7500 *256c752c25332e336c752c25332e336c752c25332e336c7500256c7525332e336c7525332e336c *7525332e336c750000000020202020506c65617365207265706f72742074686973206173206120 *62756720746f20676c6173676f772d6861736b656c6c2d62756773406861736b656c6c2e6f7267 *2c0a202020206f7220687474703a2f2f7777772e736f75726365666f7267652e6e65742f70726f *6a656374732f6768632f0a000000415353455254494f4e204641494c45443a2066696c65202573 *2c206c696e652025750a00646561646c6f636b3a206d61696e2074687265616420626c6f636b65 *6420696e206120737472616e67652077617900007363686564756c653a20696e76616c69642077 *6861745f6e657874206669656c640000007363686564756c653a20696e76616c69642074687265 *61642072657475726e20636f646520256400726573756d655468726561643a2074687265616420 *6e6f7420666f756e640000756e626c6f636b54687265616420284d564152293a2054534f206e6f *7420666f756e6400756e626c6f636b5468726561642028424c41434b484f4c45293a2054534f20 *6e6f7420666f756e6400000000756e626c6f636b5468726561642028457863657074696f6e293a *2054534f206e6f7420666f756e6400000000756e626c6f636b5468726561642028492f4f293a20 *54534f206e6f7420666f756e640000756e626c6f636b546872656164202864656c6179293a2054 *534f206e6f7420666f756e6400000000726573757272656374546872656164733a207468726561 *6420626c6f636b656420696e206120737472616e676520776179000000697320626c6f636b6564 *206f6e2064656c69766572696e6720616e20657863657074696f6e20746f207468726561642025 *640000697320626c6f636b6564206f6e20616e2065787465726e616c2063616c6c000069732062 *6c6f636b6564206f6e20616e2065787465726e616c2063616c6c2028657863657074696f6e7320 *7765726520616c726561647920626c6f636b656429000000007072696e74546872656164426c6f *636b6167653a20737472616e67652074736f2d3e7768795f626c6f636b65643a20256420666f72 *2054534f2025642028256429000000c15b0608da5c0608245d0608465d0608645d060841670608 *da65060823660608576606089c6606089c66060807670608ce680608d9680608d9680608c76806 *08c7680608a9680608bf680608c56b0608d06b0608d06b0608be6b0608be6b0608a06b0608b66b *0608766c0608446c0608656c0608556c0608126c06081f6c0608376c0608876c0608986c060866 *6f726b50726f63657373007761697454687265616400756e626c6f636b54687265616400726169 *73654173796e6300697320626c6f636b6564206f6e20726561642066726f6d2066642025640069 *7320626c6f636b6564206f6e20777269746520746f20666420256400697320626c6f636b656420 *756e74696c20256400697320626c6f636b6564206f6e20616e204d56617200697320626c6f636b *6564206f6e206120626c61636b20686f6c65006973206e6f7420626c6f636b6564006861732062 *65656e206b696c6c65640068617320636f6d706c6574656400616c6c20746872656164733a0a00 *09746872656164202564204020257020005b222573225d200041776169744576656e740025640a *0073656c6563740073656c656374206661696c65640061776169744576656e74006d6f72655f68 *616e646c65727300746f6f206d616e792070656e64696e67207369676e616c73007374675f7369 *675f696e7374616c6c3a206261642073706900007761726e696e673a206661696c656420746f20 *696e7374616c6c20534947494e542068616e646c65720000007761726e696e673a206661696c65 *6420746f20696e7374616c6c20534947434f4e542068616e646c657200656e6c61726765537461 *626c655074725461626c650000000020202020416c6c6f6320202020436f6c6c65637420202020 *4c6976652020202047432020202047432020202020544f542020202020544f5420205061676520 *466c74730a00000000202020206279746573202020202062797465732020202020627974657320 *20757365722020656c6170202020207573657220202020656c61700a0000737461745f696e6974 *3a206261642063616c6c20746f2027737973636f6e6627210a00002025352e32662025352e3266 *2025372e32662025372e32662025346c642025346c6420202847656e3a2025326c64290a000000 *002531317320627974657320616c6c6f636174656420696e2074686520686561700a0000002531 *3173206279746573206d6178696d756d207265736964656e63792028256c642073616d706c6528 *7329290a0000002531316420636f6c6c656374696f6e7320696e2067656e65726174696f6e2025 *64202825362e326673290a000a2531316c64204d6220746f74616c206d656d6f727920696e2075 *73650a0a002020494e4954202074696d65202025362e32667320202825362e32667320656c6170 *736564290a0020204d555420202074696d65202025362e32667320202825362e32667320656c61 *70736564290a00202047432020202074696d65202025362e32667320202825362e32667320656c *6170736564290a00202045584954202074696d65202025362e32667320202825362e3266732065 *6c6170736564290a002020546f74616c2074696d65202025362e32667320202825362e32667320 *656c6170736564290a0a000000002020252547432074696d65202020202025352e316625252020 *28252e3166252520656c6170736564290a0a002020416c6c6f6320726174652020202025732062 *7974657320706572204d5554207365636f6e640a0a000000202050726f64756374697669747920 *25352e31662525206f6620746f74616c20757365722c20252e31662525206f6620746f74616c20 *656c61707365640a0a002564204743732c20256c642f256c64206176672f6d6178206279746573 *207265736964656e63792028256c642073616d706c6573292c20256c754d20696e207573652c20 *252e326620494e49542028252e326620656c6170736564292c20252e3266204d55542028252e32 *6620656c6170736564292c20252e32662047432028252e326620656c617073656429203a676863 *3e3e0a00696e6974537461747300204743200025396c642025396c642025396c64000808082020 *0808080025396c642025392e39732025392e3973002025352e32662025352e32660a0a00253131 *7320627974657320636f7069656420647572696e672047430a003c3c6768633a20256c6c752062 *797465732c200000000000c8420000805f0000804f6d6178696d756d20686561702073697a6520 *282d4d2920697320736d616c6c6572207468616e206d696e696d756d20616c6c6f632061726561 *2073697a6520282d4129005741524e494e473a20636f6d70616374696f6e20697320696e636f6d *70617469626c652077697468202d47313b2064697361626c656400696e697453746f726167653a *2067656e7300696e697453746f726167653a206c617374207374657000696e697453746f726167 *653a20737465707300006d616c6c6f633a206661696c6564206f6e207265717565737420666f72 *20256c752062797465733b206d6573736167653a2025730a000000486561702065786861757374 *65643b0a43757272656e74206d6178696d756d20686561702073697a6520697320256c75206279 *7465732028256c75204d62293b0a75736520602b525453202d4d3c73697a653e2720746f20696e *6372656173652069742e0a000000537461636b207370616365206f766572666c6f773a20637572 *72656e742073697a6520256c642062797465732e0a55736520602b525453202d4b73697a652720 *746f20696e6372656173652069742e0a0000000076960608769606087696060876960608769606 *0876960608769606087b9606087b9606087b9606087b9606087b9606087b9606087b9606087b96 *0608769606087b960608769606087b9606087196060871960608719606087196060871960608d1 *970608d1970608d1970608d1970608d1970608d1970608d1970608d6970608d6970608d6970608 *d6970608d6970608d6970608d6970608d6970608d1970608d6970608d1970608d6970608cc9706 *08cc970608cc970608cc970608cc9706087374675f61705f765f726574007374675f61705f665f *726574007374675f61705f645f726574007374675f61705f6c5f726574007374675f61705f6e5f *726574007374675f61705f705f726574007374675f61705f70765f726574007374675f61705f70 *705f726574007374675f61705f7070765f726574007374675f61705f7070705f72657400737467 *5f61705f707070705f726574007374675f61705f70707070705f726574007374675f61705f7070 *707070705f726574007374675f61705f707070707070705f726574000000239806082398060823 *980608239806082398060823980608239806082999060829990608299906082999060829990608 *299906082999060829990608099806082999060879980608299906083799060837990608379906 *0837990608379906083f9906083f9906083f9906083f9906083f9906083f9906083f9906083f99 *06083f9906083f9906082999060829990608299906082999060829990608d6990608d6990608d6 *990608d6990608d6990608d6990608d6990608399b0608399b0608399b0608399b0608399b0608 *399b0608399b0608399b060879990608399b06083a9a0608399b0608479b0608479b0608479b06 *08479b0608479b06084f9b06084f9b06084f9b06084f9b06084f9b06084f9b06084f9b06084f9b *06084f9b06084f9b0608399b0608399b0608399b0608399b0608399b0608e99b0608e99b0608e9 *9b0608e99b0608e99b0608e99b0608e99b0608569d0608569d0608569d0608569d0608569d0608 *569d0608569d0608569d0608899b0608569d0608509c0608569d0608649d0608649d0608649d06 *08649d0608649d06086c9d06086c9d06086c9d06086c9d06086c9d06086c9d06086c9d06086c9d *06086c9d06086c9d0608569d0608569d0608569d0608569d0608569d0608099e0608099e060809 *9e0608099e0608099e0608099e0608099e0608769f0608769f0608769f0608769f0608769f0608 *769f0608769f0608769f0608a99d0608769f0608709e0608769f0608849f0608849f0608849f06 *08849f0608849f06088c9f06088c9f06088c9f06088c9f06088c9f06088c9f06088c9f06088c9f *06088c9f06088c9f0608769f0608769f0608769f0608769f0608769f060826a0060826a0060826 *a0060826a0060826a0060826a0060826a0060889a1060889a1060889a1060889a1060889a10608 *89a1060889a1060889a10608c99f060889a106088aa0060889a1060897a1060897a1060897a106 *0897a1060897a106089fa106089fa106089fa106089fa106089fa106089fa106089fa106089fa1 *06089fa106089fa1060889a1060889a1060889a1060889a1060889a1060836a2060836a2060836 *a2060836a2060836a2060836a2060836a2060899a3060899a3060899a3060899a3060899a30608 *99a3060899a3060899a30608d9a1060899a306089aa2060899a30608a7a30608a7a30608a7a306 *08a7a30608a7a30608afa30608afa30608afa30608afa30608afa30608afa30608afa30608afa3 *0608afa30608afa3060899a3060899a3060899a3060899a3060899a306085aa406085aa406085a *a406085aa406085aa406085aa406085aa40608f2a50608f2a50608f2a50608f2a50608f2a50608 *f2a50608f2a50608f2a50608e9a30608f2a50608d8a40608f2a5060800a6060800a6060800a606 *0800a6060800a6060808a6060808a6060808a6060808a6060808a6060808a6060808a6060808a6 *060808a6060808a60608f2a50608f2a50608f2a50608f2a50608f2a50608b9a60608b9a60608b9 *a60608b9a60608b9a60608b9a60608b9a606085ba806085ba806085ba806085ba806085ba80608 *5ba806085ba806085ba8060845a606085ba806083aa706085ba8060869a8060869a8060869a806 *0869a8060869a8060871a8060871a8060871a8060871a8060871a8060871a8060871a8060871a8 *060871a8060871a806085ba806085ba806085ba806085ba806085ba806083fa906083fa906083f *a906083fa906083fa906083fa906083fa906081fab06081fab06081fab06081fab06081fab0608 *1fab06081fab06081fab0608ada806081fab0608dda906081fab06082dab06082dab06082dab06 *082dab06082dab060835ab060835ab060835ab060835ab060835ab060835ab060835ab060835ab *060835ab060835ab06081fab06081fab06081fab06081fab06081fab060803ac060803ac060803 *ac060803ac060803ac060803ac060803ac0608e5ad0608e5ad0608e5ad0608e5ad0608e5ad0608 *e5ad0608e5ad0608e5ad060871ab0608e5ad0608a3ac0608e5ad0608f3ad0608f3ad0608f3ad06 *08f3ad0608f3ad0608fbad0608fbad0608fbad0608fbad0608fbad0608fbad0608fbad0608fbad *0608fbad0608fbad0608e5ad0608e5ad0608e5ad0608e5ad0608e5ad0608e7ae0608e7ae0608e7 *ae0608e7ae0608e7ae0608e7ae0608e7ae060813b1060813b1060813b1060813b1060813b10608 *13b1060813b1060813b1060835ae060813b10608aaaf060813b1060821b1060821b1060821b106 *0821b1060821b1060829b1060829b1060829b1060829b1060829b1060829b1060829b1060829b1 *060829b1060829b1060813b1060813b1060813b1060813b1060813b106083db206083db206083d *b206083db206083db206083db206083db20608c2b40608c2b40608c2b40608c2b40608c2b40608 *c2b40608c2b40608c2b4060865b10608c2b4060829b30608c2b40608d0b40608d0b40608d0b406 *08d0b40608d0b40608d8b40608d8b40608d8b40608d8b40608d8b40608d8b40608d8b40608d8b4 *0608d8b40608d8b40608c2b40608c2b40608c2b40608c2b40608c2b406081fb606081fb606081f *b606081fb606081fb606081fb606081fb6060809b9060809b9060809b9060809b9060809b90608 *09b9060809b9060809b9060815b5060809b906083ab7060809b9060817b9060817b9060817b906 *0817b9060817b906081fb906081fb906081fb906081fb906081fb906081fb906081fb906081fb9 *06081fb906081fb9060809b9060809b9060809b9060809b9060809b9060898ba060898ba060898 *ba060898ba060898ba060898ba060898ba0608f3bd0608f3bd0608f3bd0608f3bd0608f3bd0608 *f3bd0608f3bd0608f3bd060859b90608f3bd0608e8bb0608f3bd060801be060801be060801be06 *0801be060801be060809be060809be060809be060809be060809be060809be060809be060809be *060809be060809be0608f3bd0608f3bd0608f3bd0608f3bd0608f3bd060870c506087bc506087b *c5060865c5060865c5060847c506085dc506083dc706083dc706083dc706083dc706083dc70608 *3dc706083dc7060842c7060842c7060842c7060842c7060842c7060842c7060842c7060842c706 *083dc7060842c706083dc7060842c7060838c7060838c7060838c7060838c7060838c706085453 *4f206f626a65637420656e74657265642100455641435541544544206f626a65637420656e7465 *72656421005745414b206f626a65637420656e74657265642100444541445f5745414b206f626a *65637420656e746572656421004e4f5f46494e414c495a4552206f626a65637420656e74657265 *642100464f524549474e206f626a65637420656e74657265642100535441424c455f4e414d4520 *6f626a65637420656e7465726564210046554c4c5f4d564152206f626a65637420656e74657265 *642100454d5054595f4d564152206f626a65637420656e74657265642100454e445f54534f5f51 *55455545206f626a65637420656e74657265642100454e445f4d55545f4c495354206f626a6563 *7420656e746572656421004d55545f434f4e53206f626a65637420656e74657265642100454e44 *5f455843455054494f4e5f4c495354206f626a65637420656e7465726564210045584345505449 *4f4e5f434f4e53206f626a65637420656e746572656421004152525f574f524453206f626a6563 *7420656e746572656421004d55545f4152525f50545253206f626a65637420656e746572656421 *004d55545f4152525f505452535f46524f5a454e206f626a65637420656e746572656421004d55 *545f564152206f626a65637420656e74657265642100eaf00608eaf00608eaf00608eaf00608ea *f00608eaf00608eaf00608eff00608eff00608eff00608eff00608eff00608eff00608eff00608 *eff00608eaf00608eff00608eaf00608eff00608e5f00608e5f00608e5f00608e5f00608e5f006 *0849f1060849f1060849f1060849f1060849f1060849f1060849f106084ef106084ef106084ef1 *06084ef106084ef106084ef106084ef106084ef1060849f106084ef1060849f106084ef1060844 *f1060844f1060844f1060844f1060844f10608a1f10608a1f10608a1f10608a1f10608a1f10608 *a1f10608a1f10608a6f10608a6f10608a6f10608a6f10608a6f10608a6f10608a6f10608a6f106 *08a1f10608a6f10608a1f10608a6f106089cf106089cf106089cf106089cf106089cf10608ddf1 *0608ddf10608ddf10608ddf10608ddf10608ddf10608ddf10608e2f10608e2f10608e2f10608e2 *f10608e2f10608e2f10608e2f10608e2f10608ddf10608e2f10608ddf10608e2f10608d8f10608 *d8f10608d8f10608d8f10608d8f1060835f2060835f2060835f2060835f2060835f2060835f206 *0835f206083af206083af206083af206083af206083af206083af206083af206083af2060835f2 *06083af2060835f206083af2060830f2060830f2060830f2060830f2060830f2060871f2060871 *f2060871f2060871f2060871f2060871f2060871f2060876f2060876f2060876f2060876f20608 *76f2060876f2060876f2060876f2060871f2060876f2060871f2060876f206086cf206086cf206 *086cf206086cf206086cf20608c9f20608c9f20608c9f20608c9f20608c9f20608c9f20608c9f2 *0608cef20608cef20608cef20608cef20608cef20608cef20608cef20608cef20608c9f20608ce *f20608c9f20608cef20608c4f20608c4f20608c4f20608c4f20608c4f2060805f3060805f30608 *05f3060805f3060805f3060805f3060805f306080af306080af306080af306080af306080af306 *080af306080af306080af3060805f306080af3060805f306080af3060800f3060800f3060800f3 *060800f3060800f306085df306085df306085df306085df306085df306085df306085df3060862 *f3060862f3060862f3060862f3060862f3060862f3060862f3060862f306085df3060862f30608 *5df3060862f3060858f3060858f3060858f3060858f3060858f3060899f3060899f3060899f306 *0899f3060899f3060899f3060899f306089ef306089ef306089ef306089ef306089ef306089ef3 *06089ef306089ef3060899f306089ef3060899f306089ef3060894f3060894f3060894f3060894 *f3060894f30608f1f30608f1f30608f1f30608f1f30608f1f30608f1f30608f1f30608f6f30608 *f6f30608f6f30608f6f30608f6f30608f6f30608f6f30608f6f30608f1f30608f6f30608f1f306 *08f6f30608ecf30608ecf30608ecf30608ecf30608ecf306082df406082df406082df406082df4 *06082df406082df406082df4060832f4060832f4060832f4060832f4060832f4060832f4060832 *f4060832f406082df4060832f406082df4060832f4060828f4060828f4060828f4060828f40608 *28f4060885f4060885f4060885f4060885f4060885f4060885f4060885f406088af406088af406 *088af406088af406088af406088af406088af406088af4060885f406088af4060885f406088af4 *060880f4060880f4060880f4060880f4060880f40608c1f40608c1f40608c1f40608c1f40608c1 *f40608c1f40608c1f40608c6f40608c6f40608c6f40608c6f40608c6f40608c6f40608c6f40608 *c6f40608c1f40608c6f40608c1f40608c6f40608bcf40608bcf40608bcf40608bcf40608bcf406 *0819f5060819f5060819f5060819f5060819f5060819f5060819f506081ef506081ef506081ef5 *06081ef506081ef506081ef506081ef506081ef5060819f506081ef5060819f506081ef5060814 *f5060814f5060814f5060814f5060814f5060855f5060855f5060855f5060855f5060855f50608 *55f5060855f506085af506085af506085af506085af506085af506085af506085af506085af506 *0855f506085af5060855f506085af5060850f5060850f5060850f5060850f5060850f50608adf5 *0608adf50608adf50608adf50608adf50608adf50608adf50608b2f50608b2f50608b2f50608b2 *f50608b2f50608b2f50608b2f50608b2f50608adf50608b2f50608adf50608b2f50608a8f50608 *a8f50608a8f50608a8f50608a8f50608e9f50608e9f50608e9f50608e9f50608e9f50608e9f506 *08e9f50608eef50608eef50608eef50608eef50608eef50608eef50608eef50608eef50608e9f5 *0608eef50608e9f50608eef50608e4f50608e4f50608e4f50608e4f50608e4f5060841f6060841 *f6060841f6060841f6060841f6060841f6060841f6060846f6060846f6060846f6060846f60608 *46f6060846f6060846f6060846f6060841f6060846f6060841f6060846f606083cf606083cf606 *083cf606083cf606083cf606087df606087df606087df606087df606087df606087df606087df6 *060882f6060882f6060882f6060882f6060882f6060882f6060882f6060882f606087df6060882 *f606087df6060882f6060878f6060878f6060878f6060878f6060878f60608d5f60608d5f60608 *d5f60608d5f60608d5f60608d5f60608d5f60608daf60608daf60608daf60608daf60608daf606 *08daf60608daf60608daf60608d5f60608daf60608d5f60608daf60608d0f60608d0f60608d0f6 *0608d0f60608d0f6060811f7060811f7060811f7060811f7060811f7060811f7060811f7060816 *f7060816f7060816f7060816f7060816f7060816f7060816f7060816f7060811f7060816f70608 *11f7060816f706080cf706080cf706080cf706080cf706080cf7060869f7060869f7060869f706 *0869f7060869f7060869f7060869f706086ef706086ef706086ef706086ef706086ef706086ef7 *06086ef706086ef7060869f706086ef7060869f706086ef7060864f7060864f7060864f7060864 *f7060864f70608a5f70608a5f70608a5f70608a5f70608a5f70608a5f70608a5f70608aaf70608 *aaf70608aaf70608aaf70608aaf70608aaf70608aaf70608aaf70608a5f70608aaf70608a5f706 *08aaf70608a0f70608a0f70608a0f70608a0f70608a0f70608fdf70608fdf70608fdf70608fdf7 *0608fdf70608fdf70608fdf7060802f8060802f8060802f8060802f8060802f8060802f8060802 *f8060802f80608fdf7060802f80608fdf7060802f80608f8f70608f8f70608f8f70608f8f70608 *f8f7060839f8060839f8060839f8060839f8060839f8060839f8060839f806083ef806083ef806 *083ef806083ef806083ef806083ef806083ef806083ef8060839f806083ef8060839f806083ef8 *060834f8060834f8060834f8060834f8060834f8060891f8060891f8060891f8060891f8060891 *f8060891f8060891f8060896f8060896f8060896f8060896f8060896f8060896f8060896f80608 *96f8060891f8060896f8060891f8060896f806088cf806088cf806088cf806088cf806088cf806 *08cdf80608cdf80608cdf80608cdf80608cdf80608cdf80608cdf80608d2f80608d2f80608d2f8 *0608d2f80608d2f80608d2f80608d2f80608d2f80608cdf80608d2f80608cdf80608d2f80608c8 *f80608c8f80608c8f80608c8f80608c8f8060825f9060825f9060825f9060825f9060825f90608 *25f9060825f906082af906082af906082af906082af906082af906082af906082af906082af906 *0825f906082af9060825f906082af9060820f9060820f9060820f9060820f9060820f9060861f9 *060861f9060861f9060861f9060861f9060861f9060861f9060866f9060866f9060866f9060866 *f9060866f9060866f9060866f9060866f9060861f9060866f9060861f9060866f906085cf90608 *5cf906085cf906085cf906085cf90608b9f90608b9f90608b9f90608b9f90608b9f90608b9f906 *08b9f90608bef90608bef90608bef90608bef90608bef90608bef90608bef90608bef90608b9f9 *0608bef90608b9f90608bef90608b4f90608b4f90608b4f90608b4f90608b4f90608f5f90608f5 *f90608f5f90608f5f90608f5f90608f5f90608f5f90608faf90608faf90608faf90608faf90608 *faf90608faf90608faf90608faf90608f5f90608faf90608f5f90608faf90608f0f90608f0f906 *08f0f90608f0f90608f0f906084dfa06084dfa06084dfa06084dfa06084dfa06084dfa06084dfa *060852fa060852fa060852fa060852fa060852fa060852fa060852fa060852fa06084dfa060852 *fa06084dfa060852fa060848fa060848fa060848fa060848fa060848fa06086d61696e20746872 *65616420686173206265656e20474327640074726176657273655f7765616b5f7074725f6c6973 *740065766163756174653a20737461636b206672616d652061742025700a000000000048437472 *6176657273655f7765616b5f7074725f6c6973743a206e6f74205745414b000000006576616375 *6174653a20737472616e676520636c6f7375726520747970652025640000006576616c5f746875 *6e6b5f73656c6563746f723a20737472616e67652073656c656374656520256400000000736361 *76656e67653a20756e696d706c656d656e7465642f737472616e676520636c6f73757265207479 *706520256420402025700000000073636176656e67655f6d61726b5f737461636b3a20756e696d *706c656d656e7465642f737472616e676520636c6f737572652074797065202564204020257000 *73636176656e67655f6f6e653a20737472616e6765206f626a6563742025640073636176656e67 *655f6d75745f6f6e63655f6c6973743a20737472616e6765206f626a6563743f20256400007363 *6176656e67655f6d757461626c655f6c6973743a20737472616e6765206f626a6563743f202564 *00000073636176656e67655f7374617469633a20737472616e676520636c6f7375726520256400 *73636176656e67655f737461636b3a2077656972642061637469766174696f6e207265636f7264 *20666f756e64206f6e20737461636b3a20256400006e250708722007085e1f0708131f07081620 *070816200708162007083a2307083a230708072307083a230708722007085e1f07085e1f070816 *2007081620070816200708c822070872200708ba1f0708ba1f0708ba1f0708ba1f0708ba1f0708 *a0220708b3210708df2007084f2307084f230708b22307081d2507081d25070872200708722007 *08e82207084123070841230708412307084123070841230708412307086e250708412307084123 *0708412307084221070842210708572107084221070842210708a61e070858240708ae240708ae *240708a61e07086e250708722007087220070872200708162507086e2507086e2507086e250708 *6e2507080f240708f02607084a2607084a2607084a2607084a2607084a2607084a260708f02607 *08f02607084a2607084a260708f0260708f0260708f0260708f0260708f0260708f0260708f026 *070807270708072707080727070807270708072707080727070807270708b9260708f026070807 *270708f026070807270708b1260708b1260708b1260708b1260708b1260708f0260708f0260708 *f0260708f0260708f0260708f0260708f0260708f0260708f0260708f026070807270708072707 *08072707080727070807270708f0260708f0260708f0260708f0260708f0260708f0260708f026 *0708f0260708f0260708f0260708f0260708f0260708f0260708f0260708072707086b2f0708f6 *2b0708d7290708612a07084a290708442d07084f2d07086b2f07086b2f07086b2f07086b2f0708 *7f2b070898290708222a0708d2280708342b0708a92a07086b2f0708b62b07085a290708e42907 *080b290708f42a0708692a07086b2f0708442d07081f2c0708852d0708852d0708572d07086b2f *07086b2f0708592c07086b2c07086b2f07086b2f07086b2f07086b2f07086b2f07086b2f07086b *2f07086b2f07086b2f07086b2f07086b2f07084f2d07084f2d0708f02c07084f2d07084f2d0708 *50280708332e07083e2e0708c82e0708d02c0708382d0708f62b0708f62b0708f62b0708f82e07 *08e7340708803207086f330708ff340708ec3007086f330708ff340708e7340708e7340708e734 *0708e734070809320708fc3007088a31070871300708fc3007088a310708e7340708403207083f *310708c4310708ad3007083f310708c4310708e73407086f330708ac320708a3330708a3330708 *7f330708e7340708dd320708ff340708dd320708e7340708e7340708e7340708e7340708e73407 *08e7340708e7340708e7340708e7340708e7340708e7340708ff340708ff3407085f330708ff34 *0708ff34070841300708ff34070853340708923407083b33070886340708803207088032070880 *320708bb340708ad3807089f3607089f3607089f3607089f3607089f3607089f360708ad380708 *ad380708ad380708ad3807089f3607089f3607089f3607089f3607089f3607089f360708ad3807 *089f3607089f3607089f3607089f3607089f3607089f360708ad380708cb360708ad3807080438 *070804380708e3370708ad380708c43807089f3607089f360708ad380708ad380708ad380708ad *380708ad380708ad380708ad380708ad380708ad380708ad380708ad380708c4380708c4380708 *ad380708c4380708c4380708ad380708c4380708db3607084b370708ad380708ad3807089f3607 *089f360708ad3807087b370708d93a07081d3b0708d93a07081d3b07081d3b07081d3b07081d3b *07081d3b07081d3b07081d3b07081d3b07081d3b07081d3b07081d3b07081d3b07081d3b0708c3 *3a07081d3b07081d3b0708893a07081d3b0708fb3907082d3a0708c33a07081d3b07081d3b0708 *1d3b07081d3b0708ac3a07080e3e0708993d0708993d0708393e0708393e07085d3e0708b13e07 *08863d0708993d0708993d0708044107080f4107080f410708fd400708fd400708df400708f540 *0708e4420708ef420708ef420708dd420708dd420708bf420708d54207087468726561645f7374 *617469633a20737472616e676520636c6f737572652025640000007468726561645f737461636b *3a2077656972642061637469766174696f6e207265636f726420666f756e64206f6e2073746163 *6b3a202564000000007570646174655f6677645f6c617267653a20756e6b6e6f776e2f73747261 *6e6765206f626a65637420202564000000007570646174655f6677643a20756e6b6e6f776e2f73 *7472616e6765206f626a6563742020256400006c45070811450708114507083a4607083a460708 *67440708d6460708114507081145070811450708584a0708054a07087f4c07087f4c07087f4c07 *087f4c07087f4c07087f4c07087f4c07087f4c07087f4c07087f4c07087f4c07087f4c07087f4c *07087f4c07087f4c07087f4c07087f4c07087f4c07087f4c07087f4c07087f4c0708964c0708a7 *490708a74907087f4c07087f4c07087f4c07087f4c07087f4c0708fa4907080b4f07080b4f0708 *cf4e0708cf4e0708d64e0708d64e0708d64e07080b4f07080b4f07080b4f07080b4f07080b4f07 *08cf4e0708cf4e0708d64e0708d64e0708d64e07080b4f07080b4f0708d64e0708d64e0708d64e *0708d64e0708d64e07080b4f0708d64e0708004f0708dd4e0708dd4e0708f04e07080b4f07080b *4f07080b4f07080b4f07080b4f07080b4f07080b4f07080b4f07080b4f07080b4f07080b4f0708 *0b4f07080b4f07080b4f07080b4f07080b4f07080b4f07080b4f07080b4f07080b4f07080b4f07 *08e84e0708f04e0708f04e07080b4f07080b4f07080b4f07080b4f07080b4f0708f84e0708255a *070839550708ab530708e0530708e8530708ea5607081f570708255a0708255a0708255a070825 *5a070839550708ab530708e0530708e8530708ea5607081f570708255a070839550708ea560708 *1f570708e8530708ea5607081f570708255a0708ea5607085d5407088157070881570708275707 *08255a0708ea56070839550708ea560708255a0708255a0708255a0708255a0708255a0708255a *0708255a0708255a0708255a0708255a0708255a07083955070839550708395507083955070839 *55070841560708be590708c9590708c95907083955070839550708945507083955070839550708 *175a0708616c6c6f635365676d656e7400616c6c6f63486173684c69737400616c6c6f63486173 *685461626c6500696e7465727072657442434f3a20686974206120434153454641494c0000696e *7465727072657442434f3a20756e6b6e6f776e206f7220756e696d706c656d656e746564206f70 *636f6465000000cb600708e1600708e1600708e1600708e1600708e1600708e1600708e1600708 *e1600708e1600708e1600708e1600708e1600708e1600708e1600708e1600708e1600708e16007 *08cb600708cb600708cb600708cb600708cb600708cb600708cb600708cb600708e16007084e60 *0708e1600708cb60070841600708416007084160070841600708416007083d6307084863070848 *6307083663070836630708186307082e6307083a700708cc660708216707084067070874670708 *c3670708e86707080a6807082c6807084e680708746807089a680708c0680708a3690708ef6807 *080d6907081c6907082b690708fe6807083a690708496907085869070867690708766907088569 *070894690708f76907083b6a07087c6a0708d46a07081e6b0708626b0708586c0708906c0708ce *6d0708306e0708c86c0708466d0708e96b0708226c070830700708167007085f6f0708396f0708 *9c6e0708d06e0708df6e0708ee6e0708fd6e07080c6f07081b6f07082a6f07086f7574206f6620 *6d656d6f7279202872657175657374656420256420627974657329000067656e5f6d61705f6d62 *6c6f636b733a206d756e6d6170206661696c6564006765744d426c6f636b3a206d6d61703a2025 *73006765744d426c6f636b3a206d756e6d6170206661696c656400527473466c6167732e633a73 *706c6974527473466c616773282900474843525453002d2d525453002d2d002b52545300756e65 *787065637465642052545320617267756d656e743a2025730025302e313232732e73746174006e *6f74206275696c7420666f723a202d706172616c6c656c006e6f74206275696c7420666f723a20 *2d6772616e73696d00696e636f6d706c65746520525453206f7074696f6e3a202573006e6f7420 *6275696c7420666f723a202d70726f6600756e6b6e6f776e20525453206f7074696f6e3a202573 *0073746465727200770043616e2774206f70656e2073746174732066696c652025730a00257320 *002b525453200062616420525453206f7074696f6e3a2025730055736167653a203c70726f673e *203c617267733e205b2b525453203c7274736f7074733e207c202d525453203c617267733e5d20 *2e2e2e202d2d525453203c617267733e000000002020202b52545320202020496e646963617465 *732072756e2074696d652073797374656d206f7074696f6e7320666f6c6c6f77002020202d5254 *5320202020496e646963617465732070726f6772616d20617267756d656e747320666f6c6c6f77 *00000020202d2d52545320202020496e64696361746573207468617420414c4c20737562736571 *75656e7420617267756d656e74732077696c6c20626520676976656e20746f2074686500202020 *202020202020202070726f6772616d2028696e636c7564696e6720616e79206f66207468657365 *2052545320666c6167732900000054686520666f6c6c6f77696e672072756e2074696d65207379 *7374656d206f7074696f6e732061726520617661696c61626c653a0000000020202d3f20202020 *2020205072696e74732074686973206d65737361676520616e642065786974733b207468652070 *726f6772616d206973206e6f7420657865637574656400000020202d4b3c73697a653e20536574 *7320746865206d6178696d756d20737461636b2073697a65202864656661756c7420384d292020 *4567733a202d4b33326b2020202d4b3531326b0000000020202d6b3c73697a653e205365747320 *74686520696e697469616c2074687265616420737461636b2073697a65202864656661756c7420 *316b2920204567733a202d6b346b2020202d6b326d0000000020202d413c73697a653e20536574 *7320746865206d696e696d756d20616c6c6f636174696f6e20617265612073697a652028646566 *61756c74203235366b29204567733a202d41316d202d4131306b0020202d4d3c73697a653e2053 *65747320746865206d6178696d756d20686561702073697a65202864656661756c7420756e6c69 *6d697465642920204567733a202d4d3235366b202d4d31470020202d483c73697a653e20536574 *7320746865206d696e696d756d20686561702073697a65202864656661756c7420304d29202020 *4567733a202d4832346d20202d48314700000020202d6d3c6e3e202020204d696e696d756d2025 *206f662068656170207768696368206d75737420626520617661696c61626c6520286465666175 *6c742033252900000020202d473c6e3e202020204e756d626572206f662067656e65726174696f *6e73202864656661756c743a20322900000020202d543c6e3e202020204e756d626572206f6620 *737465707320696e20796f756e6765722067656e65726174696f6e73202864656661756c743a20 *3229000020202d633c6e3e202020204175746f2d656e61626c6520636f6d70616374696f6e206f *6620746865206f6c646573742067656e65726174696f6e207768656e206c697665206461746120 *69730000000020202020202020202020206174206c65617374203c6e3e25206f6620746865206d *6178696d756d20686561702073697a65207365742077697468202d4d202864656661756c743a20 *333025290000000020202d6320202020202020456e61626c6520636f6d70616374696f6e20666f *7220616c6c206d616a6f7220636f6c6c656374696f6e73000020202d743c66696c653e204f6e65 *2d6c696e65204743207374617469737469637320202864656661756c742066696c653a203c7072 *6f6772616d3e2e737461742900000020202d733c66696c653e2053756d6d617279202047432073 *74617469737469637320202877697468202d5373746465727220676f696e6720746f2073746465 *727229000020202d533c66696c653e2044657461696c6564204743207374617469737469637300 *000020202d5a20202020202020446f6e27742073717565657a65206f7574207570646174652066 *72616d6573206f6e20737461636b206f766572666c6f770000000020202d422020202020202053 *6f756e64207468652062656c6c20617420746865207374617274206f6620656163682067617262 *61676520636f6c6c656374696f6e00000020202d433c736563733e2020436f6e746578742d7377 *6974636820696e74657276616c20696e207365636f6e6473000020202020202020202020202020 *2020202830206f72206e6f20617267756d656e74206d65616e7320737769746368206173206f66 *74656e20617320706f737369626c65290000000020202020202020202020202020202020746865 *2064656661756c74206973202e3032207365633b207265736f6c7574696f6e206973202e303220 *736563000000525453206f7074696f6e73206d617920616c736f20626520737065636966696564 *207573696e67207468652047484352545320656e7669726f6e6d656e74207661726961626c652e *000000004f7468657220525453206f7074696f6e73206d617920626520617661696c61626c6520 *666f722070726f6772616d7320636f6d70696c6564206120646966666572656e74207761792e00 *00005468652047484320557365722773204775696465206861732066756c6c2064657461696c73 *2e0000746f6f206d616e792052545320617267756d656e747320286d617820256429006e6f7420 *6275696c7420666f723a202d70726f66206f72202d706172616c6c656c0000006e6f7420627569 *6c7420666f723a202d706172616c6c656c206f72202d736d70000000006e6f74206275696c7420 *666f723a207469636b792d7469636b792073746174730000000000007a44286b6e4e0024744900 *008040237907086b7a070878760708a17607084c7907086b7a07086b7a07080b77070845780708 *917807086b7a07086b7a07087b7707086b7a0708bb7707086b7a07086b7a07083f7907086b7a07 *08557a0708cf780708777807086b7a07086b7a07086b7a07086b7a07086b7a0708307907086b7a *07086b7a07086b7a07086b7a07086b7a07086b7a07086b7a07080e7a0708b07607086b7a0708fa *7907086b7a07086b7a0708557a07086b7a07086b7a07089b7707086b7a0708e47707086b7a0708 *6b7a07083f790708047a0708187a0708db780708e77807086b7a07086b7a07086b7a0708227a07 *08000000000000802f011b033b944f000004000000d8a9ffffb04f000058abffffd04f000098ad *fffff04f0000d8aeffff1050000000000000000000000000000000000000000000000000000000 *000000000000000000000078250808849a05080000803e849a0508000080bed09e040800000000 *0000000000000000ac9f040838a0040898a0040800000000000000000000000070a10408000000 *00000000000000000048a2040800000000000000000000000020a3040800000000000000000000 *000004a404080000000000000000000000003c9f0508000000004c190508e4e4070801000000e0 *a404080000000074970508cce80708940f08080100000004a60408000000000000000000000000 *80a6040800000000d883050820e5070800000000542005086ce407080100000074970508e0e507 *08940f08080100000074970508e4e5070840e5070801000000f8a8040800000000000000000000 *0000b0a9040800000000f4bd0408000000001cbe040844be04086cbe040894be0408acc0040800 *000000f8c3040804c404088cc4040800000000000000000000000098c5040844c60408f0c60408 *70c7040848c804080000000020d4040830d40408b0d6040828d704080000000088d9040804da04 *0810da0408dcda040844de04085ce7040800000000f497050840e707083ce7070824e7070828e7 *07082ce7070830e7070838e7070834e70708010000006ce80408000000000000000000000000ec *c30408280f080868e6070801000000ecc30408280f080864e6070801000000d4e80408e0e80408 *ece80408f8e8040804e9040810e904081ce9040894e9040800000000000000000000000008ea04 *0800000000000000000000000068ea0408000000000000000000000000d8ea040858eb04080000 *00000000000000000000c4eb04084cec040800000000b4ed04080000000014ef0408c0ef040874 *f004080000000088f104080000000094f2040840f30408f8f304080000000050f50408fcf50408 *70f604085cf7040800000000e8f70408f8f7040808f8040818f8040828f8040854f80408000000 *000000000000000000b8f8040834f90408b0f904082cfa0408a8fa04088cfb040870fc04080c98 *0508fce70708f8e70708010000002cfd040838fd040844fd040850fd04085cfd040868fd040874 *fd040880fd04088cfd040898fd0408a4fd0408b0fd0408bcfd0408c8fd0408e4fd040864fe0408 *000000000000000000000000e0fe04080000000000000000000000004cff040800000000b4ff04 *0800000000e4ff040864000508e40005086c010508000000000000000000000000e80105080000 *0000380205088003050804040508c80405088c0505085006050814070508900705080c080508d4 *090508000000000000000000000000400a0508000000000c0b0508180b0508240b0508300b0508 *3c0b0508480b0508540b0508600b05086c0b0508780b0508840b0508900b05089c0b0508a80b05 *08b40b0508c00b0508cc0b0508d80b0508e40b0508f00b0508fc0b0508740c0508000000000000 *000000000000d80c0508600d050800000000d80d0508400f0508d80f050880120508101305085c *19050860180508d0180508a819050800000000981f0508000000000000000000000000dc200508 *3823050810ab050800400000ac250508000000009c280508ac28050874310508f4310508443205 *08000000002834050834340508403405084c3405085834050864340508703405087c3405088834 *0508483e050800000000000000000000000010ab05080105000010ab0508000500008040050800 *000000ec45050800460508bc46050800000000e84c050810ab05080f80000010ab05080e800000 *10ab0508ef84000010ab05089281000010ab0508540c000010ab0508530c000010ab0508520c00 *0010ab0508510c000010ab0508500c0000784d050800000000984e0508a84e0508a04f0508cc4f *0508f84f05085c700508f8700508ac71050800000000e87105080000000000000000000000004c *720508d88305082000080801000000d88305082800080801000000d88305083000080801000000 *d88305083800080801000000d88305084000080801000000d88305084800080801000000d88305 *085000080801000000d88305085800080801000000d88305086000080801000000d88305086800 *080801000000d88305087000080801000000d88305087800080801000000d88305088000080801 *000000d88305088800080801000000d88305089000080801000000d88305089800080801000000 *d8830508a000080801000000d8830508a800080801000000d8830508b000080801000000d88305 *08b800080801000000d8830508c000080801000000d8830508c800080801000000d8830508d000 *080801000000d8830508d800080801000000d8830508e000080801000000d8830508e800080801 *000000d8830508f000080801000000d8830508f800080801000000d88305080001080801000000 *d88305080801080801000000d88305081001080801000000d88305081801080801000000d88305 *082001080801000000d88305082801080801000000d88305083001080801000000d88305083801 *080801000000d88305084001080801000000d88305084801080801000000d88305085001080801 *000000d88305085801080801000000d88305086001080801000000d88305086801080801000000 *d88305087001080801000000d88305087801080801000000d88305088001080801000000d88305 *088801080801000000d88305089001080801000000d88305089801080801000000d8830508a001 *080801000000d8830508a801080801000000d8830508b001080801000000d8830508b801080801 *000000d8830508c001080801000000d8830508c801080801000000d8830508d001080801000000 *d8830508d801080801000000d8830508e001080801000000d8830508e801080801000000d88305 *08f001080801000000d8830508f801080801000000d88305080002080801000000d88305080802 *080801000000d88305081002080801000000d88305081802080801000000d88305082002080801 *000000d88305082802080801000000d88305083002080801000000d88305083802080801000000 *d88305084002080801000000d88305084802080801000000d88305085002080801000000d88305 *085802080801000000d88305086002080801000000d88305086802080801000000d88305087002 *080801000000d88305087802080801000000d88305088002080801000000d88305088802080801 *000000d88305089002080801000000d88305089802080801000000d8830508a002080801000000 *d8830508a802080801000000d8830508b002080801000000307305080000000020750508000000 *000000000000000000d8830508dc02080801000000d8830508e402080801000000d8830508ec02 *080801000000d8830508f402080801000000d8830508fc02080801000000d88305080403080801 *000000d88305080c03080801000000d88305081403080801000000d88305081c03080801000000 *d88305082403080801000000d88305082c03080801000000d88305083403080801000000d88305 *083c03080801000000d88305084403080801000000d88305084c03080801000000d88305085403 *080801000000d88305085c03080801000000d88305086403080801000000d88305086c03080801 *000000d88305087403080801000000d88305087c03080801000000d88305088403080801000000 *d88305088c03080801000000d88305089403080801000000d88305089c03080801000000d88305 *08a403080801000000d8830508ac03080801000000d8830508b403080801000000d8830508bc03 *080801000000d8830508c403080801000000d8830508cc03080801000000d8830508d403080801 *000000d8830508dc03080801000000d8830508e403080801000000d8830508ec03080801000000 *d8830508f403080801000000d8830508fc03080801000000d88305080404080801000000d88305 *080c04080801000000d88305081404080801000000d88305081c04080801000000d88305082404 *080801000000d88305082c04080801000000d88305083404080801000000d88305083c04080801 *000000d88305084404080801000000d88305084c04080801000000d88305085404080801000000 *d88305085c04080801000000d88305086404080801000000d88305086c04080801000000d88305 *087404080801000000d88305087c04080801000000d88305088404080801000000d88305088c04 *080801000000d88305089404080801000000d88305089c04080801000000d8830508a404080801 *000000d8830508ac04080801000000d8830508b404080801000000d8830508bc04080801000000 *d8830508c404080801000000d8830508cc04080801000000d8830508d404080801000000d88305 *08dc04080801000000d8830508e404080801000000d8830508ec04080801000000d8830508f404 *080801000000d8830508fc04080801000000d88305080405080801000000d88305080c05080801 *000000d88305081405080801000000d88305081c05080801000000d88305082405080801000000 *d88305082c05080801000000d88305083405080801000000d88305083c05080801000000d88305 *084405080801000000d88305084c05080801000000d88305085405080801000000d88305085c05 *080801000000d88305086405080801000000d88305086c05080801000000d88305087405080801 *000000d88305087c05080801000000d88305088405080801000000d88305088c05080801000000 *d88305089405080801000000d88305089c05080801000000d8830508a405080801000000d88305 *08ac05080801000000d8830508b405080801000000d8830508bc05080801000000d8830508c405 *080801000000d8830508cc05080801000000d8830508d405080801000000d8830508dc05080801 *000000d8830508e405080801000000d8830508ec05080801000000d8830508f405080801000000 *d8830508fc05080801000000d88305080406080801000000d88305080c06080801000000d88305 *081406080801000000d88305081c06080801000000d88305082406080801000000d88305082c06 *080801000000d88305083406080801000000d88305083c06080801000000d88305084406080801 *000000d88305084c06080801000000d88305085406080801000000d88305085c06080801000000 *d88305086406080801000000d88305086c06080801000000d88305087406080801000000d88305 *087c06080801000000d88305088406080801000000d88305088c06080801000000d88305089406 *080801000000d88305089c06080801000000d8830508a406080801000000d8830508ac06080801 *000000d8830508b406080801000000d8830508bc06080801000000d8830508c406080801000000 *d8830508cc06080801000000d8830508d406080801000000d8830508dc06080801000000d88305 *08e406080801000000d8830508ec06080801000000d8830508f406080801000000d8830508fc06 *080801000000d88305080407080801000000d88305080c07080801000000d88305081407080801 *000000d88305081c07080801000000d88305082407080801000000d88305082c07080801000000 *d88305083407080801000000d88305083c07080801000000d88305084407080801000000d88305 *084c07080801000000d88305085407080801000000d88305085c07080801000000d88305086407 *080801000000d88305086c07080801000000d88305087407080801000000d88305087c07080801 *000000d88305088407080801000000d88305088c07080801000000d88305089407080801000000 *d88305089c07080801000000d8830508a407080801000000d8830508ac07080801000000d88305 *08b407080801000000d8830508bc07080801000000d8830508c407080801000000d8830508cc07 *080801000000d8830508d407080801000000d8830508dc07080801000000d8830508e407080801 *000000d8830508ec07080801000000d8830508f407080801000000d8830508fc07080801000000 *d88305080408080801000000d88305080c08080801000000d88305081408080801000000d88305 *081c08080801000000d88305082408080801000000d88305082c08080801000000d88305083408 *080801000000d88305083c08080801000000d88305084408080801000000d88305084c08080801 *000000d88305085408080801000000d88305085c08080801000000d88305086408080801000000 *d88305086c08080801000000d88305087408080801000000d88305087c08080801000000d88305 *088408080801000000d88305088c08080801000000d88305089408080801000000d88305089c08 *080801000000d8830508a408080801000000d8830508ac08080801000000d8830508b408080801 *000000d8830508bc08080801000000d8830508c408080801000000d8830508cc08080801000000 *d8830508d408080801000000d8830508dc08080801000000d8830508e408080801000000d88305 *08ec08080801000000d8830508f408080801000000d8830508fc08080801000000d88305080409 *080801000000d88305080c09080801000000d88305081409080801000000d88305081c09080801 *000000d88305082409080801000000d88305082c09080801000000d88305083409080801000000 *d88305083c09080801000000d88305084409080801000000d88305084c09080801000000d88305 *085409080801000000d88305085c09080801000000d88305086409080801000000d88305086c09 *080801000000d88305087409080801000000d88305087c09080801000000d88305088409080801 *000000d88305088c09080801000000d88305089409080801000000d88305089c09080801000000 *d8830508a409080801000000d8830508ac09080801000000d8830508b409080801000000d88305 *08bc09080801000000d8830508c409080801000000d8830508cc09080801000000d8830508d409 *080801000000d8830508dc09080801000000d8830508e409080801000000d8830508ec09080801 *000000d8830508f409080801000000d8830508fc09080801000000d8830508040a080801000000 *d88305080c0a080801000000d8830508140a080801000000d88305081c0a080801000000d88305 *08240a080801000000d88305082c0a080801000000d8830508340a080801000000d88305083c0a *080801000000d8830508440a080801000000d88305084c0a080801000000d8830508540a080801 *000000d88305085c0a080801000000d8830508640a080801000000d88305086c0a080801000000 *d8830508740a080801000000d88305087c0a080801000000d8830508840a080801000000d88305 *088c0a080801000000d8830508940a080801000000d88305089c0a080801000000d8830508a40a *080801000000d8830508ac0a080801000000d8830508b40a080801000000d8830508bc0a080801 *000000d8830508c40a080801000000d8830508cc0a080801000000d8830508d40a080801000000 *d8830508dc0a080801000000d8830508e40a080801000000d8830508ec0a080801000000d88305 *08f40a080801000000d8830508fc0a080801000000d8830508040b080801000000d88305080c0b *080801000000d8830508140b080801000000d88305081c0b080801000000d8830508240b080801 *000000d88305082c0b080801000000d8830508340b080801000000d88305083c0b080801000000 *d8830508440b080801000000d88305084c0b080801000000d8830508540b080801000000d88305 *085c0b080801000000d8830508640b080801000000d88305086c0b080801000000d8830508740b *080801000000d88305087c0b080801000000d8830508840b080801000000d88305088c0b080801 *000000d8830508940b080801000000d88305089c0b080801000000d8830508a40b080801000000 *d8830508ac0b080801000000d8830508b40b080801000000d8830508bc0b080801000000d88305 *08c40b080801000000d8830508cc0b080801000000d8830508d40b080801000000d8830508dc0b *080801000000d8830508e40b080801000000d8830508ec0b080801000000d8830508f40b080801 *000000d8830508fc0b080801000000d8830508040c080801000000d88305080c0c080801000000 *d8830508140c080801000000d88305081c0c080801000000d8830508240c080801000000d88305 *082c0c080801000000d8830508340c080801000000d88305083c0c080801000000d8830508440c *080801000000d88305084c0c080801000000d8830508540c080801000000d88305085c0c080801 *000000d8830508640c080801000000d88305086c0c080801000000d8830508740c080801000000 *d88305087c0c080801000000d8830508840c080801000000d88305088c0c080801000000d88305 *08940c080801000000d88305089c0c080801000000d8830508a40c080801000000d8830508ac0c *080801000000d8830508b40c080801000000d8830508bc0c080801000000d8830508c40c080801 *000000d8830508cc0c080801000000d8830508d40c080801000000d8830508dc0c080801000000 *d8830508e40c080801000000d8830508ec0c080801000000d8830508f40c080801000000d88305 *08fc0c080801000000d8830508040d080801000000d88305080c0d080801000000d8830508140d *080801000000d88305081c0d080801000000d8830508240d080801000000d88305082c0d080801 *000000d8830508340d080801000000d88305083c0d080801000000d8830508440d080801000000 *d88305084c0d080801000000d8830508540d080801000000d88305085c0d080801000000d88305 *08640d080801000000d88305086c0d080801000000d8830508740d080801000000d88305087c0d *080801000000d8830508840d080801000000d88305088c0d080801000000d8830508940d080801 *000000d88305089c0d080801000000d8830508a40d080801000000d8830508ac0d080801000000 *d8830508b40d080801000000d8830508bc0d080801000000d8830508c40d080801000000d88305 *08cc0d080801000000d8830508d40d080801000000d8830508dc0d080801000000d8830508e40d *080801000000d8830508ec0d080801000000d8830508f40d080801000000d8830508fc0d080801 *000000d8830508040e080801000000d88305080c0e080801000000d8830508140e080801000000 *d88305081c0e080801000000d8830508240e080801000000d88305082c0e080801000000d88305 *08340e080801000000d88305083c0e080801000000d8830508440e080801000000d88305084c0e *080801000000d8830508540e080801000000d88305085c0e080801000000d8830508640e080801 *000000d88305086c0e080801000000d8830508740e080801000000d88305087c0e080801000000 *d8830508840e080801000000d88305088c0e080801000000d8830508940e080801000000d88305 *089c0e080801000000d8830508a40e080801000000d8830508ac0e080801000000d8830508b40e *080801000000d8830508bc0e080801000000d8830508c40e080801000000d8830508cc0e080801 *000000d8830508d40e080801000000d8830508dc0e080801000000d8830508e40e080801000000 *d8830508ec0e080801000000a07505080000000000000000000000001076050800000000000000 *00000000008076050810ab0508bc80000010ab05086292010010ab05081089000010ab05086188 *000010ab05085885000010ab05089088000010ab05084f86000010ab05084088000010ab0508ad *86000010ab0508a786000010ab0508a686000010ab05081385000010ab05085884000010ab0508 *d280000010ab0508d180000010ab0508d080000010ab0508a080000010ab05089f80000010ab05 *089e80000010ab05089d80000010ab05086f80000010ab0508fb81000010ab05083a80000010ab *05082e80000010ab05082480000010ab05081280000010ab05081180000010ab05081080000010 *ab05084488000010ab05085e84000010ab05085784000010ab05087980000010ab050878800000 *10ab05087780000010ab05087680000010ab05087580000010ab05087480000010ab0508378000 *0010ab0508022a000010ab0508012a000010ab0508800d000010ab0508a10b000010ab0508570b *000010ab0508110c000010ab0508410b000010ab0508200b000010ab0508100b000010ab0508b6 *0d000010ab0508b50d000010ab0508b40d000010ab0508b30d000010ab0508b20d000010ab0508 *b10d000010ab0508b00d000010ab0508b80d000010ab0508b70d000010ab0508960d000010ab05 *08950d000010ab0508940d000010ab0508930d000010ab0508920d000010ab0508910d000010ab *0508900d000010ab0508980d000010ab0508970d000010ab0508630c000010ab0508620c000010 *ab0508610c000010ab0508600c000010ab0508710b000010ab0508900b000010ab0508d00b0000 *10ab0508f20b000010ab0508f10b000010ab0508e20b000010ab0508c00b000010ab0508440b00 *0010ab0508420b000010ab0508240b000010ab0508e10d000010ab0508e00d000010ab0508500b *000010ab0508600b0000047705080000000000000000000000007c770508000000000000000000 *000000e077050810ab05084086000010ab05084186000010ab0508f684000010ab050814850000 *10ab05089d88000010ab05089c88000010ab05089b88000010ab05089a88000010ab0508998800 *0010ab05089888000010ab05089788000010ab05089688000010ab05089588000010ab05089488 *000010ab05081189000010ab05085985000010ab05089188000010ab05085a85000010ab050805 *85000010ab05080485000010ab0508a981000010ab0508a881000010ab05080f80000010ab0508 *0e80000010ab0508cb80000010ab0508ca80000010ab0508c980000010ab0508c880000010ab05 *084388000010ab05084288000010ab05084188000010ab05084088000010ab0508ad86000010ab *0508ab86000010ab0508aa86000010ab0508a986000010ab0508a886000010ab05083f87000010 *ab05083e87000010ab05083d87000010ab05083c87000010ab05083b87000010ab05083a870000 *10ab05083987000010ab05083887000010ab05083787000010ab05083687000010ab0508358700 *0010ab05083487000010ab05083387000010ab05083287000010ab05083187000010ab05083087 *000010ab05082f87000010ab05082e87000010ab05082d87000010ab05082c87000010ab05082b *87000010ab05082a87000010ab05082987000010ab05082887000010ab05082787000010ab0508 *2687000010ab05082587000010ab05082487000010ab05082387000010ab05082287000010ab05 *080a85000010ab05080017000010ab0508a786000010ab0508a686000010ab0508a586000010ab *0508a486000010ab0508a386000010ab0508a286000010ab05081c85000010ab05081385000010 *ab0508e284000010ab0508e184000010ab0508e084000010ab0508e980000010ab0508e8800000 *10ab0508bb80000010ab0508ba80000010ab0508b980000010ab0508b880000010ab0508b78000 *0010ab0508b680000010ab0508b580000010ab0508b480000010ab0508b380000010ab0508b280 *000010ab0508b180000010ab05082981000010ab05082881000010ab05082781000010ab050826 *81000010ab0508ab80000010ab0508aa80000010ab0508a980000010ab0508a880000010ab0508 *a080000010ab05089f80000010ab05089e80000010ab05089d80000010ab0508ff84000010ab05 *08fd84000010ab05087380000010ab05086f80000010ab05086e80000010ab05086d80000010ab *05086c80000010ab05086b80000010ab0508fb81000010ab05083a80000010ab05085984000010 *ab05085884000010ab05082e80000010ab05082480000010ab05082380000010ab050822800000 *10ab05082180000010ab05082080000010ab05081f80000010ab05081e80000010ab05081d8000 *0010ab05081c80000010ab05081b80000010ab05081a80000010ab05081280000010ab05081180 *000010ab05081080000010ab0508d280000010ab0508d180000010ab0508d080000010ab050809 *80000010ab05080580000010ab0508f881000010ab0508e684000010ab0508e584000010ab0508 *e484000010ab0508e384000010ab05084888000010ab05084788000010ab05084688000010ab05 *085c84000010ab05085b84000010ab05085a84000010ab05085584000010ab05085484000010ab *05088c80000010ab05088a80000010ab05088980000010ab05088880000010ab05088680000010 *ab05088580000010ab05088380000010ab05088280000010ab05088180000010ab05087f800000 *10ab05087e80000010ab05087c80000010ab05087b80000010ab05087a80000010ab0508448800 *0010ab05085e84000010ab05085784000010ab05087980000010ab05087880000010ab05087780 *000010ab05087680000010ab05087580000010ab05087480000010ab05086980000010ab050868 *80000010ab05083880000010ab05083780000010ab0508022a000010ab0508012a000010ab0508 *002a000010ab0508f40d000010ab0508f20d000010ab0508f10d000010ab0508e10d000010ab05 *08e00d000010ab0508d30d000010ab0508d20d000010ab0508d10d000010ab0508d00d000010ab *0508b80d000010ab0508b70d000010ab0508b60d000010ab0508b50d000010ab0508b40d000010 *ab0508b30d000010ab0508b20d000010ab0508b10d000010ab0508b00d000010ab0508980d0000 *10ab0508970d000010ab0508960d000010ab0508950d000010ab0508940d000010ab0508930d00 *0010ab0508920d000010ab0508910d000010ab0508900d000010ab0508800d000010ab0508700d *000010ab05085b0d000010ab05085a0d000010ab0508590d000010ab0508580d000010ab050857 *0d000010ab0508560d000010ab0508550d000010ab0508540d000010ab0508530d000010ab0508 *520d000010ab0508510d000010ab0508500d000010ab05083b0d000010ab05083a0d000010ab05 *08390d000010ab0508380d000010ab0508370d000010ab0508360d000010ab0508350d000010ab *0508340d000010ab0508330d000010ab0508320d000010ab0508310d000010ab0508300d000010 *ab05081f0d000010ab05081e0d000010ab05081d0d000010ab05081c0d000010ab05081b0d0000 *10ab05081a0d000010ab0508190d000010ab0508180d000010ab0508170d000010ab0508160d00 *0010ab0508150d000010ab0508140d000010ab0508130d000010ab0508120d000010ab0508110d *000010ab0508100d000010ab0508050d000010ab0508040d000010ab0508030d000010ab050802 *0d000010ab0508010d000010ab0508000d000010ab0508f50c000010ab0508f40c000010ab0508 *f30c000010ab0508f20c000010ab0508f10c000010ab0508f00c000010ab0508b90c000010ab05 *08b80c000010ab0508b70c000010ab0508b60c000010ab0508b50c000010ab0508b40c000010ab *0508b30c000010ab0508b20c000010ab0508b10c000010ab0508b00c000010ab0508630c000010 *ab0508620c000010ab0508610c000010ab0508600c000010ab0508ef84000010ab050892810000 *10ab0508540c000010ab0508530c000010ab0508520c000010ab0508510c000010ab0508500c00 *0010ab0508400c000010ab0508330c000010ab0508320c000010ab0508310c000010ab0508300c *000010ab0508230c000010ab0508220c000010ab0508210c000010ab0508200c000010ab050811 *0c000010ab0508100c000010ab0508020c000010ab0508010c000010ab0508000c000010ab0508 *f20b000010ab0508f00b000010ab0508e20b000010ab0508e10b000010ab0508e00b000010ab05 *08d00b000010ab0508c20b000010ab0508c10b000010ab0508c00b000010ab0508b10b000010ab *0508b00b000010ab0508a80b000010ab0508a70b000010ab0508a60b000010ab0508a50b000010 *ab0508a40b000010ab0508a30b000010ab0508a20b000010ab0508a10b000010ab0508a00b0000 *10ab0508980b000010ab0508970b000010ab0508960b000010ab0508950b000010ab0508940b00 *0010ab0508930b000010ab0508920b000010ab0508910b000010ab0508900b000010ab0508800b *000010ab0508740b000010ab0508730b000010ab0508720b000010ab0508710b000010ab050870 *0b000010ab05085384000010ab05085084000010ab0508660b000010ab0508650b000010ab0508 *640b000010ab0508630b000010ab0508620b000010ab0508610b000010ab0508600b000010ab05 *08570b000010ab0508560b000010ab0508550b000010ab0508540b000010ab0508530b000010ab *0508520b000010ab0508510b000010ab0508500b000010ab0508460b000010ab0508450b000010 *ab0508440b000010ab0508430b000010ab0508420b000010ab0508410b000010ab0508400b0000 *10ab0508330b000010ab0508320b000010ab0508310b000010ab0508300b000010ab05086e8400 *0010ab05086d84000010ab0508260b000010ab0508250b000010ab0508240b000010ab0508210b *000010ab0508200b000010ab0508110b000010ab0508100b000010ab05084588000010ab050809 *0b000010ab0508080b000010ab0508070b000010ab0508060b000010ab0508050b000010ab0508 *040b000010ab0508030b000010ab0508020b000010ab0508010b000010ab0508000b000010ab05 *086a80000010ab0508f10b000010ab0508230b000010ab0508220b000010ab0508130b000010ab *0508120b000010ab0508ff4f000010ab0508ff3f00002c840508940f0808980f080801000000ac *780508787b0508a07c050800000000747e0508000000009c80050810810508ec810508b8830508 *2485050858870508788a0508000000007c8c0508108f0508d4900508fc100808f81008082c1008 *0828100808e8100808ec100808f0100808f4100808010000001092050800000000000000000000 *00007c9205087893050880940508649505084c960508fc960508549705080c970508d897050884 *97050894970508a4970508d498050800000000000000000000000038990508f89b05080c9d0508 *ec0f0808010000000c9d0508e80f080801000000109c0508689c0508bc9c0508e09c0508f09c05 *08189d0508249d0508609d0508ac9c0508889e0508649f0508ac9f0508ec9f0508000000002ca1 *0508bca1050800000000a4a105080000000028a4050898a40508e0a505080000000020a6050800 *000000c8a905080000000094aa05081cce05089c110808bc110808981108089411080890110808 *8c11080888110808841108088011080800000000bcab05080000000068ae050898af0508f8b005 *08c0b4050800000000000000000000000090b505080000000098bc05080000000040bf05089cbf *0508dcc0050800000000000000000000000074c10508000000000000000000000000e0cd050800 *00000028c405084897050800000000d4c6050840c705082cc805087cc80508ccc80508e8c80508 *48970508040000001cc905080000000000000000000000003c9d0508741208080000000094c905 *080000000034ca050800000000000000000000000098ca0508d8cb050850cc0508000000000000 *000000000000c4cc050800000000e0cd0508000000002cce0508a4ce05085ccf05080000000028 *d005080000000060d00508d8d0050844d1050880d1050894d10508e4d1050850d20508bcd20508 *0c980508f8130808f41308080100000030d305080000000000000000000000001cf60508ec1308 *08d4130808ac1108080000000094d3050810d40508e4e405089c1208080100000008d505080000 *000050d605080000000004d70508000000000000000000000000acd70508000000000000000000 *00000024d8050800000000c8d805080000000070d905080000000050da0508000000005cdb0508 *00000000000000000000000004dc050800000000000000000000000070dc050830de050830df05 *080000000000000000000000009cdf05080000000010e205080000000000000000000000007497 *050874140808940f080801000000b8e2050800000000c8e40508fce40508000000000000000000 *00000064e50508000000000000000000000000d8e5050800000000000000000000000048e60508 *000000000000000000000000c4e6050800000000000000000000000038e7050800000000000000 *0000000000b0e7050800000000000000000000000024e8050800000000000000000000000094e8 *050800000000000000000000000000e9050800000000000000000000000070e905080000000000 *00000000000000e0e9050800000000000000000000000050ea0508000000000000000000000000 *c4ea05080000000000ed05080000000000000000000000006ced0508e8ed050830970508290000 *0030970508280000002cef0508dcf0050800000000000000000000000050f1050800000000f0f2 *0508000000002cf6050860f605080000000038f705088cf705080000000010ab05080100000010 *ab050800000000c4f705080000000094f80508f8f8050860f9050810fa05080000000000000000 *0000000074970508dc150808940f08080100000078fa0508000000000000000000000000dcfa05 *0810fb05080000000020fc0508000000000000000000000000c4fc050800000000000000000000 *000030fd05084897050800000000309705082000000000000608309705080a0000004c00060800 *0000000000000000000000b8000608000000000402060800000000000000000000000078020608 *00000000a005060800000000e40a060800000000100d0608200d06086c0d060800000000000000 *0000000000d00d060800000000000000000000000030970508290000003c0e0608000000000000 *000000000000ac0e0608000000000000000000000000280f0608000000000000000000000000a0 *0f0608000000000000000000000000309705087d0000000c100608000000000000000000000000 *78100608000000000000000000000000e41006080000000000000000000000005c110608000000 *000000000000000000309705082d000000e0cd050801000000c0110608d4130608e0cd0508ffff *ff7f309705082900000030970508280000007c160608000000000000000000000000309705085b *000000309705085d000000309705082c000000e0160608b0170608f81706082418060830970508 *0a0000007818060800000000549d05089416080800000000b419060800000000549d0508b01608 *0800000000e419060800000000041a0608781c060800000000281d060800000000fc1f06080000 *00000c21060824210608000000000000000000000000e0cd05080a000000882106081c24060890 *250608402606089c26060854270608d02806080000000000000000000000004029060800000000 *00000000000000004897050801000000ac29060800000000d49c0508280f080860180808940f08 *08a8180808280f080800000000d49c0508280f080860180808940f0808b8180808280f08080000 *0000202c0608d42c0608000000000000000000000000802d060800000000142f06080000000000 *00000000000000742f060800000000000000000000000014300608000000000000000000000000 *483106080000000030320608000000000000000000000000a03206080000000000000000000000 *001033060800000000000000000000000084330608000000000000000000000000f03306080000 *0000000000000000000064340608000000000000000000000000d8340608000000000000000000 *00000044350608000000000000000000000000c035060800000000000000000000000030360608 *000000000000000000000000a03606080000000000000000000000000837060800000000000000 *00000000007c370608000000000000000000000000f03706080000000000000000000000006038 *0608000000000000000000000000d8380608000000000000000000000000403906080000000000 *00000000000000b4390608000000000000000000000000203a0608000000000000000000000000 *943a0608000000000000000000000000f43a0608003b0608303b0608883b0608309705082d0000 *00303c0608e43c0608143d0608343d0608143e0608ec3e0608203b0608280f080801000000343f *06087c40060800000000d041060800000000000000000000000044420608000000000000000000 *000000a842060894440608a0440608ac440608b8440608c4440608d0440608dc440608e8440608 *f4440608004506080c4506081845060824450608304506083c4506084c45060883c404c3010000 *00602d0808e0ee060858ef060870ef0608a0ef060830f006083097050800000000309705080100 *000030970508020000003097050803000000309705080400000030970508050000003097050806 *000000309705080700000030970508080000003097050809000000309705080a00000030970508 *0b000000309705080c000000309705080d000000309705080e000000309705080f000000309705 *081000000030970508110000003097050812000000309705081300000030970508140000003097 *050815000000309705081600000030970508170000003097050818000000309705081900000030 *9705081a000000309705081b000000309705081c000000309705081d000000309705081e000000 *309705081f00000030970508200000003097050821000000309705082200000030970508230000 *003097050824000000309705082500000030970508260000003097050827000000309705082800 *00003097050829000000309705082a000000309705082b000000309705082c000000309705082d *000000309705082e000000309705082f0000003097050830000000309705083100000030970508 *320000003097050833000000309705083400000030970508350000003097050836000000309705 *083700000030970508380000003097050839000000309705083a000000309705083b0000003097 *05083c000000309705083d000000309705083e000000309705083f000000309705084000000030 *970508410000003097050842000000309705084300000030970508440000003097050845000000 *3097050846000000309705084700000030970508480000003097050849000000309705084a0000 *00309705084b000000309705084c000000309705084d000000309705084e000000309705084f00 *000030970508500000003097050851000000309705085200000030970508530000003097050854 *000000309705085500000030970508560000003097050857000000309705085800000030970508 *59000000309705085a000000309705085b000000309705085c000000309705085d000000309705 *085e000000309705085f0000003097050860000000309705086100000030970508620000003097 *050863000000309705086400000030970508650000003097050866000000309705086700000030 *970508680000003097050869000000309705086a000000309705086b000000309705086c000000 *309705086d000000309705086e000000309705086f000000309705087000000030970508710000 *003097050872000000309705087300000030970508740000003097050875000000309705087600 *0000309705087700000030970508780000003097050879000000309705087a000000309705087b *000000309705087c000000309705087d000000309705087e000000309705087f00000030970508 *800000003097050881000000309705088200000030970508830000003097050884000000309705 *088500000030970508860000003097050887000000309705088800000030970508890000003097 *05088a000000309705088b000000309705088c000000309705088d000000309705088e00000030 *9705088f0000003097050890000000309705089100000030970508920000003097050893000000 *309705089400000030970508950000003097050896000000309705089700000030970508980000 *003097050899000000309705089a000000309705089b000000309705089c000000309705089d00 *0000309705089e000000309705089f00000030970508a000000030970508a100000030970508a2 *00000030970508a300000030970508a400000030970508a500000030970508a600000030970508 *a700000030970508a800000030970508a900000030970508aa00000030970508ab000000309705 *08ac00000030970508ad00000030970508ae00000030970508af00000030970508b00000003097 *0508b100000030970508b200000030970508b300000030970508b400000030970508b500000030 *970508b600000030970508b700000030970508b800000030970508b900000030970508ba000000 *30970508bb00000030970508bc00000030970508bd00000030970508be00000030970508bf0000 *0030970508c000000030970508c100000030970508c200000030970508c300000030970508c400 *000030970508c500000030970508c600000030970508c700000030970508c800000030970508c9 *00000030970508ca00000030970508cb00000030970508cc00000030970508cd00000030970508 *ce00000030970508cf00000030970508d000000030970508d100000030970508d2000000309705 *08d300000030970508d400000030970508d500000030970508d600000030970508d70000003097 *0508d800000030970508d900000030970508da00000030970508db00000030970508dc00000030 *970508dd00000030970508de00000030970508df00000030970508e000000030970508e1000000 *30970508e200000030970508e300000030970508e400000030970508e500000030970508e60000 *0030970508e700000030970508e800000030970508e900000030970508ea00000030970508eb00 *000030970508ec00000030970508ed00000030970508ee00000030970508ef00000030970508f0 *00000030970508f100000030970508f200000030970508f300000030970508f400000030970508 *f500000030970508f600000030970508f700000030970508f800000030970508f9000000309705 *08fa00000030970508fb00000030970508fc00000030970508fd00000030970508fe0000003097 *0508ff00000048970508f0ffffff48970508f1ffffff48970508f2ffffff48970508f3ffffff48 *970508f4ffffff48970508f5ffffff48970508f6ffffff48970508f7ffffff48970508f8ffffff *48970508f9ffffff48970508faffffff48970508fbffffff48970508fcffffff48970508fdffff *ff48970508feffffff48970508ffffffff48970508000000004897050801000000489705080200 *000048970508030000004897050804000000489705080500000048970508060000004897050807 *00000048970508080000004897050809000000489705080a000000489705080b00000048970508 *0c000000489705080d000000489705080e000000489705080f0000004897050810000000000000 *00000000000000000000000500050005000500050005000d000d000d000d008500850085008500 *850085008d009200920092009200920092009a009200050010000500100004010401040104010c *010200820082008000800080000000020002000200460044006400440044006500450065004500 *650045004500450045006500650065006400640000004500250000001e000000b8a1060824a606 *0850ab060814ae060844b10608f4b4060838b90608000000000000000000000000000000000000 *000000000000cca107082ccb0708cca1070874cb0708a8cb0708d8cb070820cc0708cca1070858 *cc0708cca1070890cc0708cca10708d8cc070824cd0708cca1070874cd0708c4cd070810ce0708 *58ce07089cce0708ccce07080ccf07085ccf0708accf0708cca10708e4cf070828d007086cd007 *08cca10708cca1070890d00708d0d00708cca1070814d1070844d107088cd10708cca10708cca1 *0708ccd10708cca1070818d2070864d20708cca10708000000001400000000000000017a520001 *7c08011b0c0404880100001c0000001c000000205affff7501000000410e088502420d05458604 *870300001c0000003c000000805bffff3302000000410e088502420d05458604870300001c0000 *005c000000a05dffff3e01000000410e088502420d05458604870300001c0000007c000000c05e *ffffe501000000410e088502420d0545860487030000000000000100000001000000010000008e *010000010000009901000001000000a501000001000000b101000001000000bc01000001000000 *ec0100000100000013020000010000001f02000001000000d202000001000000bf030000010000 *00ca0300000c000000e89604080d000000d485070804000000a081040805000000788c04080600 *0000088504080a000000b90500000b000000100000001500000000000000030000008025080802 *000000500300001400000011000000170000009893040811000000809304081200000018000000 *1300000008000000feffff6f20930408ffffff6f02000000f0ffff6f3292040800000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000ffffffff00000000ffffffff00000000000000004c24080800000000000000001697040826 *97040836970408469704085697040866970408769704088697040896970408a6970408b6970408 *c6970408d6970408e6970408f69704080698040816980408269804083698040846980408569804 *0866980408769804088698040896980408a6980408b6980408c6980408d6980408e6980408f698 *040806990408169904082699040836990408469904085699040866990408769904088699040896 *990408a6990408b6990408c6990408d6990408e6990408f6990408069a0408169a0408269a0408 *369a0408469a0408569a0408669a0408769a0408869a0408969a0408a69a0408b69a0408c69a04 *08d69a0408e69a0408f69a0408069b0408169b0408269b0408369b0408469b0408569b0408669b *0408769b0408869b0408969b0408a69b0408b69b0408c69b0408d69b0408e69b0408f69b040806 *9c0408169c0408269c0408369c0408469c0408569c0408669c0408769c0408869c0408969c0408 *a69c0408b69c0408c69c0408d69c0408e69c0408f69c0408069d0408169d0408269d0408369d04 *08469d0408569d0408669d0408769d0408869d0408969d0408a69d040800000000000000000000 *0000004743433a2028474e552920332e332e33202853755345204c696e75782900004743433a20 *28474e552920332e332e33202853755345204c696e75782900004743433a2028474e552920332e *332e33202853755345204c696e75782900004743433a2028474e552920332e332e332028537553 *45204c696e75782900004743433a2028474e552920332e332e33202853755345204c696e757829 *00004743433a2028474e552920332e332e33202853755345204c696e75782900004743433a2028 *474e552920332e332e33202853755345204c696e75782900004743433a2028474e552920332e33 *2e33202853755345204c696e75782900004743433a2028474e552920332e332e33202853755345 *204c696e75782900004743433a2028474e552920332e332e33202853755345204c696e75782900 *004743433a2028474e552920332e332e33202853755345204c696e75782900004743433a202847 *4e552920332e332e33202853755345204c696e75782900004743433a2028474e552920332e332e *33202853755345204c696e75782900004743433a2028474e552920332e332e3320285375534520 *4c696e75782900004743433a2028474e552920332e332e33202853755345204c696e7578290000 *4743433a2028474e552920332e332e33202853755345204c696e75782900004743433a2028474e *552920332e332e33202853755345204c696e75782900004743433a2028474e552920332e332e33 *202853755345204c696e75782900004743433a2028474e552920332e332e33202853755345204c *696e75782900004743433a2028474e552920332e332e33202853755345204c696e757829000047 *43433a2028474e552920332e332e33202853755345204c696e75782900004743433a2028474e55 *2920332e332e33202853755345204c696e75782900004743433a2028474e552920332e332e3320 *2853755345204c696e75782900004743433a2028474e552920332e332e33202853755345204c69 *6e75782900004743433a2028474e552920332e332e33202853755345204c696e75782900004743 *433a2028474e552920332e332e33202853755345204c696e75782900004743433a2028474e5529 *20332e332e33202853755345204c696e75782900004743433a2028474e552920332e332e332028 *53755345204c696e75782900004743433a2028474e552920332e332e33202853755345204c696e *75782900004743433a2028474e552920332e332e33202853755345204c696e7578290000474343 *3a2028474e552920332e332e33202853755345204c696e75782900004743433a2028474e552920 *332e332e33202853755345204c696e75782900004743433a2028474e552920332e332e33202853 *755345204c696e75782900004743433a2028474e552920332e332e33202853755345204c696e75 *782900004743433a2028474e552920332e332e33202853755345204c696e75782900004743433a *2028474e552920332e332e33202853755345204c696e75782900004743433a2028474e55292033 *2e332e33202853755345204c696e75782900004743433a2028474e552920332e332e3320285375 *5345204c696e75782900004743433a2028474e552920332e332e33202853755345204c696e7578 *2900004743433a2028474e552920332e332e33202853755345204c696e75782900004743433a20 *28474e552920332e332e33202853755345204c696e75782900004743433a2028474e552920332e *332e33202853755345204c696e75782900004743433a2028474e552920332e332e332028537553 *45204c696e75782900004743433a2028474e552920332e332e33202853755345204c696e757829 *00004743433a2028474e552920332e332e33202853755345204c696e75782900004743433a2028 *474e552920332e332e33202853755345204c696e75782900004743433a2028474e552920332e33 *2e33202853755345204c696e75782900004743433a2028474e552920332e332e33202853755345 *204c696e757829001c000000020000000000040000000000b09d04082200000000000000000000 *002c000000020002010000040000000000d485070811000000e89604080b000000d49d04082100 *000000000000000000001c00000002007f010000040000000000307d0708b80000000000000000 *0000001c0000000200ad040000040000000000f07d07087501000000000000000000001c000000 *02001b0a0000040000000000707f07083302000000000000000000001c00000002008c0f000004 *0000000000b08107083e01000000000000000000001c0000000200b2140000040000000000f082 *0708e501000000000000000000001c0000000200e7190000040000000000e0840708c800000000 *00000000000000240000000200f51a0000040000000000ea85070804000000fd96040802000000 *00000000000000002100000002007100000091000000790000005f494f5f737464696e5f757365 *6400000000001f00000002007f0100002e030000d00200005f5f666978756e7364666469000000 *00001b0000000200ad0400006e0500003d0300005f5f64697664693300000000001b0000000200 *1b0a0000710500003d0300005f5f6d6f6464693300000000001c00000002008c0f000026050000 *320300005f5f7564697664693300000000001c0000000200b214000035050000320300005f5f75 *6d6f646469330000000000360000000200e71900000e010000450000005f5f6c6962635f637375 *5f66696e69006a0000005f5f6c6962635f6373755f696e697400000000006d0000000200000000 *00040100000000b09d0408d29d04082e2e2f737973646570732f693338362f656c662f73746172 *742e53002f7573722f7372632f7061636b616765732f4255494c442f676c6962632d322e332f63 *737500474e5520415320322e31352e39302e302e312e310001808d00000002001400000004018b *000000d49d0408d49d04081d030000210000007600000001026900000004070213000000010802 *00000000020702640000000407021500000001060247000000020503696e740004050251000000 *0805025f00000008070256000000040502690000000407021c0000000106048f00000001198b00 *0000010503f4850708054f00000000790000000200560000000401af0000002f7573722f737263 *2f7061636b616765732f4255494c442f676c6962632d322e332f63632f6373752f637274692e53 *002f7573722f7372632f7061636b616765732f4255494c442f676c6962632d322e332f63737500 *474e5520415320322e31352e39302e302e312e310001802a030000020066000000040140010000 *e87d0708307d07083502000059010000760000000102696e740004050369000000040703640000 *000407036900000004070313000000010803000000000207031500000001060347000000020503 *510000000805035f000000080704d0010000058f7600000003560000000405043501000005905d *00000005048e000000031c00000001060604072a020000ac00000094032e082602000004090125 *00000002230008f6000000040e0188000000022304085f020000040f0188000000022308084501 *00000410018800000002230c08f401000004110188000000022310089e00000004120188000000 *02231408490200000413018800000002231808210100000414018800000002231c08bf00000004 *15018800000002232008030100000417018800000002232408e401000004180188000000022328 *089e0100000419018800000002232c0809020000041b01680200000223300812020000041d016e *0200000223340857020000041f012500000002233808ab0100000423012500000002233c08be01 *00000425016b00000002234008d000000004290148000000022344086c020000042a014f000000 *02234608b5000000042b0174020000022347083f010000042f018402000002234808c201000004 *38017d00000002234c08e2000000043e019500000002235408e9000000043f0195000000022358 *08530100000441012500000002235c08110100000443018a02000002236000099301000004ad07 *68020000b30100000c04b30adc00000004b4680200000223000aca01000004b56e020000022304 *0acb00000004b925000000022308000504310200000504970000000b840200008e0000000c2c00 *0000000005042a0200000b9a0200008e0000000c2c0000003300042e020000024d5d000000042d *020000024e6400000003f00000000404041a010000025ac202000003dd010000080403d8010000 *0c040d13030000011902000001a703019a020000307d0708e87d070801550e610001a603b70200 *00015c0f620001a803b7020000015b10760001a903a502000000000000001103020000038e6e02 *00000101112e010000038f6e0200000101006a05000002004e0100000401fe010000657f0708f0 *7d07083502000059010000760000000102696e7400040503690000000407036400000004070369 *000000040703130000000108030000000002070315000000010603470000000205035100000008 *05035f000000080704d0010000058f7600000003560000000405043501000005905d0000000504 *8e000000031c00000001060604072a020000ac00000094032e0826020000040901250000000223 *0008f6000000040e0188000000022304085f020000040f01880000000223080845010000041001 *8800000002230c08f401000004110188000000022310089e000000041201880000000223140849 *0200000413018800000002231808210100000414018800000002231c08bf000000041501880000 *0002232008030100000417018800000002232408e401000004180188000000022328089e010000 *0419018800000002232c0809020000041b01680200000223300812020000041d016e0200000223 *340857020000041f012500000002233808ab0100000423012500000002233c08be010000042501 *6b00000002234008d000000004290148000000022344086c020000042a014f00000002234608b5 *000000042b0174020000022347083f010000042f018402000002234808c20100000438017d0000 *0002234c08e2000000043e019500000002235408e9000000043f01950000000223580853010000 *0441012500000002235c08110100000443018a02000002236000099301000004ad0768020000b3 *0100000c04b30adc00000004b4680200000223000aca01000004b56e0200000223040acb000000 *04b925000000022308000504310200000504970000000b840200008e0000000c2c000000000005 *042a0200000b9a0200008e0000000c2c000000330004a0020000024925000000049f020000024a *3a000000042e020000024d5d000000042d020000024e6400000003f0000000040403dd01000008 *0403d80100000c04047b020000027a250000000d12030000b802000008021e010e6c6f7700021e *019a020000022300089a020000021e019a020000022304000f3103000008022901107300022701 *e6020000106c6c00022801b00200000011a702000002290112030000126304000001af02000001 *e10201b0020000f07d0708657f0708015513750001e002b00200002800000013760001e002b002 *00004e00000014630001e202db0200000291741575750001e30231030000740000001576760001 *e302310300009c00000015770001e402b0020000c4000000164f04000063040000297e0708567e *07081775040000177f04000017890400001894040000029168199f04000019aa04000019b50400 *001ac0040000dc0000001acb040000f00000001ad6040000040100001ae1040000180100001aec *040000410100001af7040000540100001a02050000930100001a0d050000bf0100001a17050000 *d30100001b000000001a35050000fc0100001a400500002502000000001c7f7e0708857e07081a *270500004e02000000001d4d0500008502000001060201bb020000021e6e00010502bb0200001e *6400010502bb0200001e7270000105024d0500001f777700010702310300001f6e6e0001080231 *0300001f646400010802310300001f727200010902310300001f643000010a02a50200001f6431 *00010a02a50200001f6e3000010a02a50200001f6e3100010a02a50200001f6e3200010a02a502 *00001f713000010b02a50200001f713100010b02a50200001f6200010c02a50200001f626d0001 *0c02a502000020340500002192020000019802a502000000221f6d310001b602a50200001f6d30 *0001b602a502000000000504bb0200002303020000038e6e0200000101232e010000038f6e0200 *000101006d0500000200fe020000040102030000a3810708707f07083502000059010000760000 *000102696e74000405036900000004070364000000040703690000000407031300000001080300 *0000000207031500000001060347000000020503510000000805035f000000080704d001000005 *8f7600000003560000000405043501000005905d00000005048e000000031c0000000106060407 *2a020000ac00000094032e08260200000409012500000002230008f6000000040e018800000002 *2304085f020000040f018800000002230808450100000410018800000002230c08f40100000411 *0188000000022310089e0000000412018800000002231408490200000413018800000002231808 *210100000414018800000002231c08bf0000000415018800000002232008030100000417018800 *000002232408e401000004180188000000022328089e0100000419018800000002232c08090200 *00041b01680200000223300812020000041d016e0200000223340857020000041f012500000002 *233808ab0100000423012500000002233c08be0100000425016b00000002234008d00000000429 *0148000000022344086c020000042a014f00000002234608b5000000042b017402000002234708 *3f010000042f018402000002234808c20100000438017d00000002234c08e2000000043e019500 *000002235408e9000000043f019500000002235808530100000441012500000002235c08110100 *000443018a02000002236000099301000004ad0768020000b30100000c04b30adc00000004b468 *0200000223000aca01000004b56e0200000223040acb00000004b9250000000223080005043102 *00000504970000000b840200008e0000000c2c000000000005042a0200000b9a0200008e000000 *0c2c000000330004a0020000024925000000049f020000024a3a000000042e020000024d5d0000 *00042d020000024e6400000003f0000000040403dd010000080403d80100000c04047b02000002 *7a250000000d12030000b802000008021e010e6c6f7700021e019a020000022300089a02000002 *1e019a020000022304000f3103000008022901107300022701e6020000106c6c00022801b00200 *000011a702000002290112030000126604000001c102000001fb0201b0020000707f0708a38107 *08015513750001fa02b00200006c02000013760001fa02b00200009202000014630001fc02db02 *000002916c1575750001fd0231030000b80200001576760001fd02310300002003000014770001 *fe02b0020000029170165204000066040000a97f0708ef7f070817780400001782040000188c04 *000048030000199704000019a204000019ad0400001ab80400000291601bc30400005c0300001b *ce040000700300001bd9040000840300001be4040000980300001bef040000ac0300001bfa0400 *00bf0300001b05050000fe0300001b10050000110400001b1a050000250400001c180000001b38 *050000450400001b430500006e04000000001d70800708748007081b2a0500009704000000001e *500500008502000001060201bb020000021f6e00010502bb0200001f6400010502bb0200001f72 *7000010502500500002077770001070231030000206e6e00010802310300002064640001080231 *030000207272000109023103000020643000010a02a502000020643100010a02a5020000206e30 *00010a02a5020000206e3100010a02a5020000206e3200010a02a502000020713000010b02a502 *000020713100010b02a5020000206200010c02a502000020626d00010c02a50200002137050000 *2292020000019802a50200000023206d310001b602a5020000206d300001b602a5020000000005 *04bb0200002403020000038e6e0200000101242e010000038f6e020000010100220500000200b7 *04000004011d040000ee820708b08107083502000059010000760000000102696e740004050369 *000000040703640000000407036900000004070313000000010803000000000207031500000001 *060347000000020503510000000805035f000000080704d0010000058f76000000035600000004 *05043501000005905d00000005048e000000031c00000001060604072a020000ac00000094032e *08260200000409012500000002230008f6000000040e0188000000022304085f020000040f0188 *00000002230808450100000410018800000002230c08f401000004110188000000022310089e00 *000004120188000000022314084902000004130188000000022318082101000004140188000000 *02231c08bf0000000415018800000002232008030100000417018800000002232408e401000004 *180188000000022328089e0100000419018800000002232c0809020000041b0168020000022330 *0812020000041d016e0200000223340857020000041f012500000002233808ab01000004230125 *00000002233c08be0100000425016b00000002234008d000000004290148000000022344086c02 *0000042a014f00000002234608b5000000042b0174020000022347083f010000042f0184020000 *02234808c20100000438017d00000002234c08e2000000043e019500000002235408e900000004 *3f019500000002235808530100000441012500000002235c08110100000443018a020000022360 *00099301000004ad0768020000b30100000c04b30adc00000004b4680200000223000aca010000 *04b56e0200000223040acb00000004b925000000022308000504310200000504970000000b8402 *00008e0000000c2c000000000005042a0200000b9a0200008e0000000c2c000000330004a00200 *00024925000000049f020000024a3a000000042e020000024d5d000000042d020000024e640000 *0003f0000000040403dd010000080403d80100000c040d07030000b802000008021e010e6c6f77 *00021e019a020000022300089a020000021e019a020000022304000f2603000008022901107300 *022701db020000106c6c00022801b00200000011a702000002290107030000121b04000001ca02 *000001200301bb020000b0810708ee8207080155136e00011f03bb020000b5040000136400011f *03bb0200000f05000014070400001b040000cb810708ff810708152d0400001537040000154104 *0000164c04000002917017570400001762040000176d040000167804000002915c168304000002 *916c168e04000002916818990400006a05000018a40400009e05000018af040000b105000018ba *040000f005000016c504000002916418cf0400001c060000193000000018ed0400004506000018 *f80400006e06000000001a1e8207082482070818df0400009706000000001b0505000085020000 *01060201bb020000021c6e00010502bb0200001c6400010502bb0200001c727000010502050500 *001d777700010702260300001d6e6e00010802260300001d646400010802260300001d72720001 *0902260300001d643000010a02a50200001d643100010a02a50200001d6e3000010a02a5020000 *1d6e3100010a02a50200001d6e3200010a02a50200001d713000010b02a50200001d713100010b *02a50200001d6200010c02a50200001d626d00010c02a50200001eec0400001f92020000019802 *a502000000201d6d310001b602a50200001d6d300001b602a502000000000504bb020000210302 *0000038e6e0200000101212e010000038f6e0200000101003105000002004906000004011d0500 *00d5840708f08207083502000059010000760000000102696e7400040503690000000407036400 *000004070369000000040703130000000108030000000002070315000000010603470000000205 *03510000000805035f000000080704d0010000058f760000000356000000040504350100000590 *5d00000005048e000000031c00000001060604072a020000ac00000094032e0826020000040901 *2500000002230008f6000000040e0188000000022304085f020000040f01880000000223080845 *0100000410018800000002230c08f401000004110188000000022310089e000000041201880000 *0002231408490200000413018800000002231808210100000414018800000002231c08bf000000 *0415018800000002232008030100000417018800000002232408e4010000041801880000000223 *28089e0100000419018800000002232c0809020000041b01680200000223300812020000041d01 *6e0200000223340857020000041f012500000002233808ab0100000423012500000002233c08be *0100000425016b00000002234008d000000004290148000000022344086c020000042a014f0000 *0002234608b5000000042b0174020000022347083f010000042f018402000002234808c2010000 *0438017d00000002234c08e2000000043e019500000002235408e9000000043f01950000000223 *5808530100000441012500000002235c08110100000443018a02000002236000099301000004ad *0768020000b30100000c04b30adc00000004b4680200000223000aca01000004b56e0200000223 *040acb00000004b925000000022308000504310200000504970000000b840200008e0000000c2c *000000000005042a0200000b9a0200008e0000000c2c000000330004a002000002492500000004 *9f020000024a3a000000042e020000024d5d000000042d020000024e6400000003f00000000404 *03dd010000080403d80100000c040d07030000b802000008021e010e6c6f7700021e019a020000 *022300089a020000021e019a020000022304000f2603000008022901107300022701db02000010 *6c6c00022801b00200000011a702000002290107030000122a04000001d402000001140301bb02 *0000f0820708d58407080155137500011303bb020000b5060000137600011303bb020000960700 *00147700011503bb0200001408000015160400002a040000f882070858830708163c0400001646 *040000175004000002916c185b04000018660400001871040000197c0400000291601987040000 *029144199204000002915c199d04000002915819a80400000291541ab30400004c0800001abe04 *00005f0800001ac90400009e08000019d404000002915019de04000002914c1b480000001afc04 *0000b10800001a07050000cf08000000001cc0830708c48307081aee040000ed08000000001d14 *0500008502000001060201bb020000021e6e00010502bb0200001e6400010502bb0200001e7270 *00010502140500001f777700010702260300001f6e6e00010802260300001f6464000108022603 *00001f727200010902260300001f643000010a02a50200001f643100010a02a50200001f6e3000 *010a02a50200001f6e3100010a02a50200001f6e3200010a02a50200001f713000010b02a50200 *001f713100010b02a50200001f6200010c02a50200001f626d00010c02a502000020fb04000021 *92020000019802a502000000221f6d310001b602a50200001f6d300001b602a502000000000504 *bb0200002303020000038e6e0200000101232e010000038f6e0200000101000a0100000200f307 *0000040138060000a8850708e08407081903000021000000760000000102696e7400040503ee02 *000002d5370000000469000000040704560000000405056a00000001de020000014a01e0840708 *428507080155066900014c2c0000000b0900000005a00000000135030000012c0150850708a885 *07080155076000000008580300000140a000000006690001412c000000290900000000092c0000 *000ab0000000b20000000b000c010d04b00000000e06030000011aa500000001010ad0000000b2 *0000000b000ef5020000011bc500000001010ae8000000b20000000b000e45030000011cdd0000 *0001010a00010000b20000000b000e24030000011df50000000101007900000002009a08000004 *01c70600002f7573722f7372632f7061636b616765732f4255494c442f676c6962632d322e332f *63632f6373752f6372746e2e53002f7573722f7372632f7061636b616765732f4255494c442f67 *6c6962632d322e332f63737500474e5520415320322e31352e39302e302e312e31000180011100 *10061101120103081b0825081305000000011101100612011101030e1b0e250e130b0000022400 *030e0b0b3e0b000003240003080b0b3e0b0000043400030e3a0b3b0b49133f0c020a0000052600 *4913000000011100100603081b0825081305000000011101100612011101030e1b0e250e130b00 *0002240003080b0b3e0b0000032400030e0b0b3e0b0000041600030e3a0b3b0b49130000050f00 *0b0b49130000060f000b0b00000713010113030e0b0b3a0b3b0b0000080d00030e3a0b3b054913 *380a0000091600030e3a0b3b0b00000a0d00030e3a0b3b0b4913380a00000b0101011349130000 *0c210049132f0b00000d2e0101133f0c030e3a0b3b05270c491311011201400a00000e05000308 *3a0b3b054913020a00000f340003083a0b3b054913020a000010340003083a0b3b054913020600 *00113400030e3a0b3b0b49133f0c3c0c000000011101100612011101030e1b0e250e130b000002 *240003080b0b3e0b0000032400030e0b0b3e0b0000041600030e3a0b3b0b49130000050f000b0b *49130000060f000b0b00000713010113030e0b0b3a0b3b0b0000080d00030e3a0b3b054913380a *0000091600030e3a0b3b0b00000a0d00030e3a0b3b0b4913380a00000b01010113491300000c21 *0049132f0b00000d13010113030e0b0b3a0b3b0500000e0d0003083a0b3b054913380a00000f17 *0101130b0b3a0b3b050000100d0003083a0b3b0549130000111600030e3a0b3b0549130000122e *0101133f0c030e3a0b3b05270c491311011201400a000013050003083a0b3b0549130206000014 *340003083a0b3b054913020a000015340003083a0b3b05491302060000161d0101133113110112 *010000170500311300001834003113020a0000193400311300001a34003113020600001b0b0155 *0600001c0b011101120100001d2e010113030e3a0b3b05270c4913200b00001e050003083a0b3b *05491300001f340003083a0b3b0549130000200b0101130000213400030e3a0b3b054913000022 *0b010000233400030e3a0b3b0b49133f0c3c0c000000011101100612011101030e1b0e250e130b *000002240003080b0b3e0b0000032400030e0b0b3e0b0000041600030e3a0b3b0b49130000050f *000b0b49130000060f000b0b00000713010113030e0b0b3a0b3b0b0000080d00030e3a0b3b0549 *13380a0000091600030e3a0b3b0b00000a0d00030e3a0b3b0b4913380a00000b01010113491300 *000c210049132f0b00000d13010113030e0b0b3a0b3b0500000e0d0003083a0b3b054913380a00 *000f170101130b0b3a0b3b050000100d0003083a0b3b0549130000111600030e3a0b3b05491300 *00122e0101133f0c030e3a0b3b05270c491311011201400a000013050003083a0b3b0549130206 *000014340003083a0b3b054913020a000015340003083a0b3b05491302060000161d0101133113 *11011201000017050031130000180500311302060000193400311300001a34003113020a00001b *34003113020600001c0b01550600001d0b011101120100001e2e010113030e3a0b3b05270c4913 *200b00001f050003083a0b3b054913000020340003083a0b3b0549130000210b01011300002234 *00030e3a0b3b0549130000230b010000243400030e3a0b3b0b49133f0c3c0c0000000111011006 *12011101030e1b0e250e130b000002240003080b0b3e0b0000032400030e0b0b3e0b0000041600 *030e3a0b3b0b49130000050f000b0b49130000060f000b0b00000713010113030e0b0b3a0b3b0b *0000080d00030e3a0b3b054913380a0000091600030e3a0b3b0b00000a0d00030e3a0b3b0b4913 *380a00000b01010113491300000c210049132f0b00000d13010113030e0b0b3a0b3b0500000e0d *0003083a0b3b054913380a00000f170101130b0b3a0b3b050000100d0003083a0b3b0549130000 *111600030e3a0b3b0549130000122e0101133f0c030e3a0b3b05270c491311011201400a000013 *050003083a0b3b05491302060000141d0101133113110112010000150500311300001634003113 *020a000017340031130000183400311302060000190b01550600001a0b011101120100001b2e01 *0113030e3a0b3b05270c4913200b00001c050003083a0b3b05491300001d340003083a0b3b0549 *1300001e0b01011300001f3400030e3a0b3b0549130000200b010000213400030e3a0b3b0b4913 *3f0c3c0c000000011101100612011101030e1b0e250e130b000002240003080b0b3e0b00000324 *00030e0b0b3e0b0000041600030e3a0b3b0b49130000050f000b0b49130000060f000b0b000007 *13010113030e0b0b3a0b3b0b0000080d00030e3a0b3b054913380a0000091600030e3a0b3b0b00 *000a0d00030e3a0b3b0b4913380a00000b01010113491300000c210049132f0b00000d13010113 *030e0b0b3a0b3b0500000e0d0003083a0b3b054913380a00000f170101130b0b3a0b3b05000010 *0d0003083a0b3b0549130000111600030e3a0b3b0549130000122e0101133f0c030e3a0b3b0527 *0c491311011201400a000013050003083a0b3b0549130206000014340003083a0b3b0549130206 *0000151d0101133113110112010000160500311300001705003113020a00001834003113000019 *34003113020a00001a34003113020600001b0b01550600001c0b011101120100001d2e01011303 *0e3a0b3b05270c4913200b00001e050003083a0b3b05491300001f340003083a0b3b0549130000 *200b0101130000213400030e3a0b3b0549130000220b010000233400030e3a0b3b0b49133f0c3c *0c000000011101100612011101030e1b0e250e130b000002240003080b0b3e0b0000031600030e *3a0b3b0b49130000042400030e0b0b3e0b0000052e0101133f0c030e3a0b3b0b270c1101120140 *0a000006340003083a0b3b0b491302060000070b0155060000083400030e3a0b3b0b4913000009 *2600491300000a01010113491300000b210000000c1500270c00000d0f000b0b491300000e3400 *030e3a0b3b0b49133f0c3c0c000000011100100603081b08250813050000005300000002002f00 *00000101fb0e0a0001010101000000012e2e2f737973646570732f693338362f656c6600007374 *6172742e530001000000000502b09d0408032e01301e313a221f03191d56571e1f595802010001 *01160000000200100000000101fb0e0a0001010101000000010000160000000200100000000101 *fb0e0a00010101010000000100002000000002001a0000000101fb0e0a00010101010000000100 *696e69742e6300000000008d0000000200430000000101fb0e0a0001010101000000012f757372 *2f7372632f7061636b616765732f4255494c442f676c6962632d322e332f63632f637375000063 *7274692e530001000000000502d48507080333011e2c1e571e640201000101000502e896040803 *23011e2c3a0205000101000502d49d0408030b011e2c1e571e641e642c2c2d1e1e1e0201000101 *a00000000200740000000101fb0e0a0001010101000000012e2e2f2e2e2f676363002f7573722f *696e636c756465002f7573722f696e636c7564652f6269747300006c6962676363322e63000100 *006c6962676363322e6800010000737464696f2e68000200006c6962696f2e6800020000747970 *65732e680003000000000502307d070803a607010867e203127f0371712e3666642af2532de58e *083ca80222000101160000000200100000000101fb0e0a0001010101000000010000e600000002 *00740000000101fb0e0a0001010101000000012e2e2f2e2e2f676363002f7573722f696e636c75 *6465002f7573722f696e636c7564652f6269747300006c6962676363322e63000100006c696267 *6363322e6800010000737464696f2e68000200006c6962696f2e680002000074797065732e6800 *03000000000502f07d070803e00501e63472753a658203a77e7f373a3b2e494b03ad019b030f71 *383a03183903957e3903eb0163487403907f713074030b5548030a7108584a03fd7e4772d59c84 *038a015557292d373bb8543b56382caa2d8e363c2d08811e032371d580020f0001011600000002 *00100000000101fb0e0a0001010101000000010000fd0000000200740000000101fb0e0a000101 *0101000000012e2e2f2e2e2f676363002f7573722f696e636c756465002f7573722f696e636c75 *64652f6269747300006c6962676363322e63000100006c6962676363322e680001000073746469 *6f2e68000200006c6962696f2e680002000074797065732e680003000000000502707f070803fa *0501e63472753a658203807e7f030b39037539030c393a3a3c494b031271343e493a7003a10139 *0338d372c803f77ec5030a7f3a3a03f900b7c903987e8d72c78e383a03ee00c548030a7f087408 *16ab3a3a373a3a08179d373be2623b64382ce2383c7d3c73086669ac38c6543a48543a03369bec *0213000101160000000200100000000101fb0e0a0001010101000000010000e200000002007400 *00000101fb0e0a0001010101000000012e2e2f2e2e2f676363002f7573722f696e636c75646500 *2f7573722f696e636c7564652f6269747300006c6962676363322e63000100006c696267636332 *2e6800010000737464696f2e68000200006c6962696f2e680002000074797065732e6800030000 *00000502b0810708039f060103f37d089b038d023903f17d713a3b2e494b03ad019b030f71383a *03c9003903e37efd3074030b5548030a7108584a03fd7e4772d59c03af017f383a03c900390397 *7fc557292d373bb8543b56382caa2d8e363c2d08811e0205000101160000000200100000000101 *fb0e0a0001010101000000010000fd0000000200740000000101fb0e0a0001010101000000012e *2e2f2e2e2f676363002f7573722f696e636c756465002f7573722f696e636c7564652f62697473 *00006c6962676363322e63000100006c6962676363322e6800010000737464696f2e6800020000 *6c6962696f2e680002000074797065732e680003000000000502f08207080393060103f27d7f03 *8e023903f27d088d030b393a3a3a3c494b031271343e493a7003a1013903c700d36403eb7e7103 *0a7f3a3a038801b764038c7ea972c78e383a03ee00c548030a7f08740816ab3a3a373a3a03e800 *a964039f7f719d373be2623b64382ce2383c7d3c73086669ac38c6543a48543a02080001011600 *00000200100000000101fb0e0a00010101010000000100008b0000000200590000000101fb0e0a *0001010101000000012f7573722f6c69622f6763632d6c69622f693538362d737573652d6c696e *75782f332e332e332f696e636c7564650000656c662d696e69742e63000000007374646465662e *680001000000000502e084070803c900010865b53b567556c1ba56035a089b0316b7036a2b0310 *d35b08d43883020d0001016b0000000200430000000101fb0e0a0001010101000000012f757372 *2f7372632f7061636b616765732f4255494c442f676c6962632d322e332f63632f637375000063 *72746e2e530001000000000502ea8507080312011e1e1e0201000101000502fd9604080309011e *0201000101000010000000ffffffff0100017c080c0404880100001c00000000000000307d0708 *b8000000410e0885024e0d05458604870300000010000000ffffffff0100017c080c0404880100 *001c00000034000000f07d070875010000410e088502420d05458604870300000010000000ffff *ffff0100017c080c0404880100001c00000068000000707f070833020000410e088502420d0545 *8604870300000010000000ffffffff0100017c080c0404880100001c0000009c000000b0810708 *3e010000410e088502420d05458604870300000010000000ffffffff0100017c080c0404880100 *001c000000d0000000f0820708e5010000410e088502420d05458604870300000010000000ffff *ffff0100017c080c0404880100002000000004010000e084070862000000410e088502420d0546 *83054e87034f86040000001c000000040100005085070858000000410e088502420d0549860483 *0550870373686f727420756e7369676e656420696e7400756e7369676e65642063686172002f75 *73722f7372632f7061636b616765732f4255494c442f676c6962632d322e332f6373750073686f *727420696e74006c6f6e67206c6f6e6720696e74006c6f6e67206c6f6e6720756e7369676e6564 *20696e7400474e55204320332e332e33202853755345204c696e757829005f494f5f737464696e *5f75736564005f494f5f77726974655f707472005f494f5f46494c45005f73686f727462756600 *5f494f5f6275665f656e64005f706f73005f6375725f636f6c756d6e005f6e657874005f5f7061 *6431005f5f7061643200666c6f6174005f494f5f726561645f707472005f494f5f736176655f62 *617365005f756e757365643200444674797065005f494f5f6275665f62617365007374646f7574 *005f5f6f666636345f74005f6c6f636b005f494f5f726561645f62617365005f6d6f6465002f75 *73722f7372632f7061636b616765732f4255494c442f6763632d332e332e332f6f626a2d693538 *362d737573652d6c696e75782f676363005f494f5f6c6f636b5f74005f494f5f736176655f656e *64005f666c61677332005f494f5f6d61726b6572005f6f6c645f6f6666736574005f7362756600 *5f5f6f66665f74006c6f6e6720646f75626c65005f494f5f6261636b75705f62617365005f494f *5f77726974655f6261736500737464696e005f6d61726b657273005f636861696e005f5f666978 *756e7364666469005f666c6167730055444974797065002e2e2f2e2e2f6763632f6c6962676363 *322e63005f494f5f77726974655f656e64005f66696c656e6f005f494f5f726561645f656e6400 *5f767461626c655f6f666673657400776f72645f74797065005f5f756469766d6f64646934005f *5f6362746d7000686967680055534974797065004457756e696f6e005f5f646976646933004457 *737472756374005f5f6d6f64646933005f5f75646976646933005f5f756d6f64646933005f5f6c *6962635f6373755f66696e690073697a655f74005f5f696e69745f61727261795f656e64005f5f *696e69745f61727261795f737461727400656c662d696e69742e63005f5f66696e695f61727261 *795f656e64005f5f6c6962635f6373755f696e6974005f5f66696e695f61727261795f73746172 *740073697a65005f00000093000000060056930457930496000000b80000000600569304579304 *0000000000000000000000000f000000020091080f00000075010000080091089308910c930400 *000000000000000000000026000000020091102600000075010000080091109304911493040000 *000000000000230000004400000006005693045793044e01000075010000060056930457930400 *00000000000000290000004400000006005093045293044e010000750100000600509304529304 *00000000000000006f0000007d000000060050930452930400000000000000003c0000004e0100 *000200915400000000000000003f0000004e010000020091640000000000000000390000004e01 *0000020091600000000000000000440000007e00000001005681000000150100000100561c0100 *004e01000001005600000000000000000c0100002f010000010052000000000000000056000000 *7f0000000100578300000095000000010057ab000000b8000000010057df000000e40000000100 *57270100004e010000010057000000000000000056000000810000000200915083000000b80000 *0002009150d40000004e010000020091500000000000000000f00000004e0100000200915c0000 *00000000000095000000ab000000010057e4000000e9000000010057eb000000ff000000010057 *000000000000000056000000600000000100522f01000038010000010052480100004e01000001 *00520000000000000000560000006c0000000100502a0100003e010000010050480100004e0100 *00010050000000000000000093000000ae000000010050e4000000e90000000100500000000000 *000000000000000f000000020091080f00000033020000080091089308910c9304000000000000 *000000000000260000000200911026000000330200000800911093049114930400000000000000 *00230000004f00000006005693045793047f0000009700000006005693045793049a000000cb00 *00000600569304579304fb0000003801000006005693045793045f010000910100000600569304 *5793040e0200003302000006005693045793040000000000000000290000004b00000006005093 *045293040e02000033020000060050930452930400000000000000003f0000000e020000020091 *6800000000000000003c0000000e020000020091440000000000000000420000000e0200000200 *915c0000000000000000450000000e020000020091580000000000000000480000000e02000002 *00915400000000000000008e010000b60100000100520000000000000000550000006700000001 *00507f00000082000000010050f0000000fb000000010050aa010000c5010000010050d1010000 *eb0100000100500000000000000000e7000000f000000001005000000000000000006d0100000e *020000020091500000000000000000c1000000ce0000000200914c070100000e0200000200914c *00000000000000007100000097000000010056c1000000cb000000010056b80100000e02000001 *005600000000000000007100000098000000010057c1000000cc000000010057ba0100000e0200 *000100570000000000000000040100001e0100000100505f010000680100000100500000000000 *00000000000000150000000200910815000000310000000700569304910c9304310000005c0000 *00080091089304910c93045c00000062000000070091089304579304620000003e010000080091 *089304910c93040000000000000000000000001200000002009110120000003100000008009110 *930891149304310000005c000000080091109304911493045c0000007200000007005093049114 *9304720000003e0100000800911093049114930400000000000000002d00000059000000010056 *5c000000d1000000010056d4000000050100000100560c0100003e010000010056000000000000 *0000fc0000001f01000001005200000000000000003f0000005a00000001005762000000740000 *000100578a00000097000000010057be000000d2000000010057170100003e0100000100570000 *0000000000003f0000005c00000002009158620000009700000002009158b30000003e01000002 *0091580000000000000000740000008a000000010057d4000000d9000000010057db000000ef00 *000001005700000000000000003f000000490000000100521f0100002801000001005238010000 *3e01000001005200000000000000003f000000520000000100501a0100002e0100000100503801 *00003e0100000100500000000000000000720000008d000000010050d4000000d9000000010050 *000000000000000000000000110000000200910811000000460000000700569304910c93044600 *000075000000080091089304910c930475000000990000000600569304579304990000009a0000 *000700910893045793049a0000009c000000080091089304910c93049c000000cb000000070056 *9304910c9304cb0000003401000006005693045793043401000035010000070091089304579304 *3501000037010000080091089304910c9304370100006801000006005693045793046801000091 *01000007009108930457930491010000e5010000080091089304910c9304000000000000000000 *0000000b000000020091100b000000380000000800911093089114930438000000750000000800 *9110930491149304750000008600000007005093049114930486000000cb000000080091109304 *91149304cb000000d4000000070050930491149304d4000000e501000008009110930491149304 *00000000000000006e000000710000000600509304529304950000009800000006005093045293 *04300100003301000006005093045293040000000000000000650100008d010000010052000000 *00000000003e00000050000000010050680000006b000000010050c0000000cb00000001005081 *0100009c010000010050a8010000b10100000100500000000000000000b7000000c00000000100 *5000000000000000005a000000720000000100568f010000e50100000100560000000000000000 *5a0000007300000001005791010000e50100000100570000000000000000d4000000ee00000001 *0050370100003f0100000100500000000000000000300000003d000000010056440000005b0000 *0001005600000000000000007e000000c100000001005600000000000000005600000060000000 *e40000005001000000000000000000007a0000007f000000600100001002000000000000000000 *003f00000049000000d40000003e0100000000000000000000630000006800000037010000e501 *000000000000000000007c0000008c00000091000000c80000000000000000000000002e73796d *746162002e737472746162002e7368737472746162002e696e74657270002e6e6f74652e414249 *2d746167002e6e6f74652e53755345002e68617368002e64796e73796d002e64796e737472002e *676e752e76657273696f6e002e676e752e76657273696f6e5f72002e72656c2e64796e002e7265 *6c2e706c74002e696e6974002e74657874002e66696e69002e726f64617461002e65685f667261 *6d655f686472002e64617461002e65685f6672616d65002e64796e616d6963002e63746f727300 *2e64746f7273002e6a6372002e676f74002e627373002e636f6d6d656e74002e64656275675f61 *72616e676573002e64656275675f7075626e616d6573002e64656275675f696e666f002e646562 *75675f616262726576002e64656275675f6c696e65002e64656275675f6672616d65002e646562 *75675f737472002e64656275675f6c6f63002e64656275675f72616e6765730000000000000000 *00000000000000000000000000000000000000000000000000000000000000000000001b000000 *010000000200000054810408540100001300000000000000000000000100000000000000230000 *000700000002000000688104086801000020000000000000000000000004000000000000003100 *00000700000002000000888104088801000018000000000000000000000004000000000000003c *0000000500000002000000a0810408a00100006803000005000000000000000400000004000000 *420000000b00000002000000088504080805000070070000060000000100000004000000100000 *004a0000000300000002000000788c0408780c0000b90500000000000000000000010000000000 *000052000000ffffff6f020000003292040832120000ee00000005000000000000000200000002 *0000005f000000feffff6f02000000209304082013000060000000060000000200000004000000 *000000006e00000009000000020000008093040880130000180000000500000000000000040000 *0008000000770000000900000002000000989304089813000050030000050000000c0000000400 *000008000000800000000100000006000000e8960408e816000017000000000000000000000004 *000000000000007b00000001000000060000000097040800170000b00600000000000000000000 *0400000004000000860000000100000006000000b09d0408b01d000024e8020000000000000000 *0010000000000000008c0000000100000006000000d4850708d40503001a000000000000000000 *00000400000000000000920000000100000002000000f0850708f0050300284e00000000000000 *00000004000000000000009a000000010000000200000018d40708185403002c00000000000000 *000000000400000000000000a8000000010000000300000060e4070860540300503f0000000000 *00000000002000000000000000ae0000000100000002000000b0230808b09303009c0000000000 *0000000000000400000000000000b800000006000000030000004c2408084c9403002001000006 *000000000000000400000008000000c100000001000000030000006c2508086c95030008000000 *00000000000000000400000000000000c800000001000000030000007425080874950300080000 *0000000000000000000400000000000000cf00000001000000030000007c2508087c9503000400 *000000000000000000000400000000000000d400000001000000030000008025080880950300b8 *01000000000000000000000400000004000000d900000008000000030000004027080840970300 *a017000000000000000000002000000000000000de000000010000000000000000000000409703 *00d005000000000000000000000100000000000000e7000000010000000000000000000000109d *03003801000000000000000000000800000000000000f600000001000000000000000000000048 *9e0300000100000000000000000000010000000000000006010000010000000000000000000000 *489f0300721b000000000000000000000100000000000000120100000100000000000000000000 *00baba0300aa080000000000000000000001000000000000002001000001000000000000000000 *000064c3030036070000000000000000000001000000000000002c010000010000000000000000 *0000009cca03005c01000000000000000000000400000000000000390100000100000030000000 *00000000f8cb03005d030000000000000000000001000000010000004401000001000000000000 *000000000055cf03003c090000000000000000000001000000000000004f010000010000000000 *00000000000091d803007800000000000000000000000100000000000000110000000300000000 *0000000000000009d903005d010000000000000000000001000000000000000100000002000000 *000000000000000058e00300a0f0010025000000dd100000040000001000000009000000030000 *000000000000000000f8d00500f7d4020000000000000000000100000000000000000000000000 *000000000000000000000000000054810408000000000300010000000000688104080000000003 *0002000000000088810408000000000300030000000000a0810408000000000300040000000000 *08850408000000000300050000000000788c040800000000030006000000000032920408000000 *000300070000000000209304080000000003000800000000008093040800000000030009000000 *0000989304080000000003000a0000000000e89604080000000003000b00000000000097040800 *00000003000c0000000000b09d04080000000003000d0000000000d48507080000000003000e00 *00000000f08507080000000003000f000000000018d4070800000000030010000000000060e407 *08000000000300110000000000b02308080000000003001200000000004c240808000000000300 *1300000000006c250808000000000300140000000000742508080000000003001500000000007c *250808000000000300160000000000802508080000000003001700000000004027080800000000 *030018000000000000000000000000000300190000000000000000000000000003001a00000000 *00000000000000000003001b0000000000000000000000000003001c0000000000000000000000 *000003001d0000000000000000000000000003001e0000000000000000000000000003001f0000 *000000000000000000000003002000000000000000000000000000030021000000000000000000 *000000000300220000000000000000000000000003002300000000000000000000000000030024 *00000000000000000000000000030025000100000000000000000000000400f1ff100000000000 *0000000000000400f1ff0100000000000000000000000400f1ff3e000000000000000000000004 *00f1ff4900000000000000000000000400f1ff5400000000000000000000000400f1ff49000000 *00000000000000000400f1ff1000000000000000000000000400f1ff4900000000000000000000 *000400f1ff0100000000000000000000000400f1ff1000000000000000000000000400f1ff0100 *000000000000000000000400f1ff3e00000000000000000000000400f1ff490000000000000000 *0000000400f1ff8700000000000000000000000400f1ff1000000000000000000000000400f1ff *8700000000000000000000000400f1ff0100000000000000000000000400f1ff10000000000000 *00000000000400f1ff0100000000000000000000000400f1ff3e00000000000000000000000400 *f1ff8700000000000000000000000400f1ff9300000000000000000000000400f1ff9a00000000 *000000000000000400f1ffca00000000000000000000000400f1fffa0000000000000000000000 *0400f1ff9a00000000000000000000000400f1ff0100000000000000000000000400f1ff100000 *0000000000000000000400f1ff0100000000000000000000000400f1ff3e000000000000000000 *00000400f1ff9a00000000000000000000000400f1ff05010000d49d04080000000002000d0015 *01000000000000000000000400f1ff200100006c25080800000000010014002e01000074250808 *00000000010015003c0100007c25080800000000010016004901000068e4070800000000010011 *004d01000048270808010000000100180059010000009e04080000000002000d006f010000409e *04080000000002000d001501000000000000000000000400f1ff7b010000702508080000000001 *0014008801000078250808000000000100150095010000482408080000000001001200a3010000 *7c2508080000000001001600af010000b08507080000000002000d00c501000000000000000000 *000400f1ffca00000000000000000000000400f1fffa00000000000000000000000400f1ffc501 *000000000000000000000400f1ff0100000000000000000000000400f1ff100000000000000000 *0000000400f1ff0100000000000000000000000400f1ff3e00000000000000000000000400f1ff *c501000000000000000000000400f1fff501000000000000000000000400f1ff000200004c2708 *080400000001001800130200006ce4070804000000010011002002000074e40708040000000100 *11002d0200007ce4070804000000010011003a020000d09e04080800000001000d0044020000d0 *9e04088000000002000d004f020000589f04080800000001000d0059020000589f040846000000 *02000d006202000014a004080800000001000d006c020000d49f04080800000001000d00760200 *00d49f04083700000002000d007f02000014a004081500000002000d00880200004ca004080800 *000001000d00920200004ca004084400000002000d009b02000094e407080400000001001100a8 *02000098a004080800000001000d00b202000098a004088000000002000d00bd02000020a10408 *0800000001000d00c702000020a104084600000002000d00d0020000a4e4070804000000010011 *00dd02000070a104080800000001000d00e702000070a104088000000002000d00f2020000f8a1 *04080800000001000d00fc020000f8a104084600000002000d0005030000b4e407080400000001 *0011001203000048a204080800000001000d001c03000048a204088000000002000d0027030000 *d0a204080800000001000d0031030000d0a204084600000002000d003a030000c4e40708040000 *00010011004703000020a304080800000001000d005103000020a304088000000002000d005c03 *0000a8a304080800000001000d0066030000a8a304084600000002000d006f030000d4e4070804 *000000010011007c03000004a404080c00000001000d0086030000f0a304080800000001000d00 *8f03000004a404085a00000002000d009a030000b4a404080c00000001000d00a403000068a404 *080800000001000d00ae03000068a404083e00000002000d00b7030000b4a40408140000000200 *0d00c0030000e4e407080400000001001100cd030000ece407080400000001001100da030000f8 *e407080400000001001100e7030000e0a404081000000001000d00f1030000c8a4040808000000 *01000d00fa030000e0a404082a00000002000d0005040000e4a504080c00000001000d000f0400 *0014a504080800000001000d001904000014a504080b00000002000d002204000028a504080800 *000001000d002c04000028a504080f00000002000d003504000040a504080800000001000d003f *04000040a504086900000002000d0048040000b4a504080800000001000d0052040000b4a50408 *2400000002000d005b040000e4a504080e00000002000d006404000000e5070804000000010011 *007104000010e5070804000000010011007e04000004a604080c00000001000d0088040000f4a5 *04080400000001000d009104000004a604085f00000002000d009c04000020e507080400000001 *001100a904000080a604081000000001000d00b304000064a604080c00000001000d00bc040000 *80a604082000000002000d00c7040000d0a804080c00000001000d00d1040000a8a60408080000 *0001000d00db040000a8a604080b00000002000d00e4040000bca604080800000001000d00ee04 *0000bca604087500000002000d00f704000040a704080c00000001000d000105000040a7040827 *00000002000d000a05000074a704080c00000001000d001405000074a704080e00000002000d00 *1d05000090a704080c00000001000d002705000090a704080f00000002000d0030050000aca704 *080c00000001000d003a050000aca704081600000002000d0043050000d0a704080c0000000100 *0d004d050000d0a70408b200000002000d005605000090a804080c00000001000d006005000090 *a804080f00000002000d0069050000aca804080c00000001000d0073050000aca8040816000000 *02000d007c050000d0a804081e00000002000d008505000028e507080400000001001100920500 *0034e5070804000000010011009f05000040e507080400000001001100ac05000050e507080400 *000001001100b905000060e507080400000001001100c6050000f8a804080800000001000d00d0 *050000f8a804085f00000002000d00db05000058a904084000000001000d00e9050000c0bd0408 *0c00000001000d00f3050000e8a904080c00000001000d00fd050000f4a904080c00000001000d *000706000008aa04080800000001000d001106000008aa04080b00000002000d001a0600001caa *04080800000001000d00240600001caa04080f00000002000d002d06000034aa04080800000001 *000d003706000034aa04080b00000002000d004006000048aa04080800000001000d004a060000 *48aa04080f00000002000d005306000060aa04080800000001000d005d06000060aa04087f0000 *0002000d0066060000ecaa04080c00000001000d0070060000ecaa04082a00000002000d007906 *000024ab04080c00000001000d008306000024ab04082a00000002000d008e06000058ab040808 *00000001000d009806000058ab04080b00000002000d00a10600006cab04080800000001000d00 *ab0600006cab04087f00000002000d00b4060000f8ab04080c00000001000d00be060000f8ab04 *082a00000002000d00c706000030ac04080c00000001000d00d106000030ac04082a0000000200 *0d00dc06000064ac04080800000001000d00e606000064ac04080b00000002000d00ef06000078 *ac04080800000001000d00f906000078ac04087f00000002000d000207000004ad04080c000000 *01000d000c07000004ad04082a00000002000d00150700003cad04080c00000001000d001f0700 *003cad04082a00000002000d002a07000070ad04080800000001000d003407000070ad04080b00 *000002000d003d07000084ad04080800000001000d004707000084ad04087f00000002000d0050 *07000010ae04080c00000001000d005a07000010ae04082a00000002000d006307000048ae0408 *0c00000001000d006d07000048ae04082a00000002000d00780700007cae04080800000001000d *00820700007cae04080b00000002000d008b07000090ae04080800000001000d009507000090ae *04087f00000002000d009e0700001caf04080c00000001000d00a80700001caf04082a00000002 *000d00b107000054af04080c00000001000d00bb07000054af04082a00000002000d00c6070000 *88af04080800000001000d00d007000088af04080b00000002000d00d90700009caf0408080000 *0001000d00e30700009caf04087f00000002000d00ec07000028b004080c00000001000d00f607 *000028b004082a00000002000d00ff07000060b004080c00000001000d000908000060b004082a *00000002000d001408000094b004080800000001000d001e08000094b004080b00000002000d00 *27080000acb004080c00000001000d0031080000acb004088501000002000d003a08000034b204 *080c00000002000d004508000040b204080b00000002000d005008000060b20408140000000100 *0d005a08000060b204081400000002000d006508000074b204080b00000002000d006f08000098 *b204081800000001000d0079080000a8b204081000000001000d0083080000a8b2040832000000 *02000d008e080000dcb204080500000002000d00980800003cb804083200000002000d00a30800 *00e4b204080500000002000d00ad08000030b604084b00000002000d00b8080000f4b204080800 *000001000d00c2080000f4b204080b00000002000d00cb08000008b304080800000001000d00d5 *08000008b304087500000002000d00de0800008cb304080c00000001000d00e80800008cb30408 *0e00000002000d00f1080000a8b304080c00000001000d00fb080000a8b304083000000002000d *0004090000e4b304080c00000001000d000e090000e4b304080f00000002000d001709000000b4 *04080c00000001000d002109000000b404088000000002000d002a0900008cb404080c00000001 *000d00340900008cb404080e00000002000d003d090000a8b404080c00000001000d0047090000 *a8b404083000000002000d0050090000e4b404080c00000001000d005a090000e4b404080f0000 *0002000d006309000000b504080c00000001000d006d09000000b504087500000002000d007609 *000084b504080c00000001000d008009000084b504083700000002000d0089090000c8b504080c *00000001000d0093090000c8b504083000000002000d009c09000004b604080c00000001000d00 *a609000004b604081400000002000d00af09000030b604081800000001000d00b909000084b604 *080800000001000d00c309000084b604080b00000002000d00cc09000098b60408080000000100 *0d00d609000098b604080f00000002000d00df090000b4b604080c00000001000d00e9090000b4 *b604087000000002000d00f209000030b704080c00000001000d00fc09000030b7040879000000 *02000d00050a0000b8b704080c00000001000d000f0a0000b8b704082700000002000d00180a00 *00ecb704080c00000001000d00220a0000ecb704080e00000002000d002b0a000008b804080c00 *000001000d00350a000008b804081900000002000d003e0a00003cb804081800000001000d0048 *0a000078b804080800000001000d00520a000078b804080b00000002000d005b0a00008cb80408 *0800000001000d00650a00008cb804086800000002000d006e0a000000b904080c00000001000d *00780a000000b904086e00000002000d00810a00007cb904080c00000001000d008b0a00007cb9 *04085900000002000d00940a0000e4b904080c00000001000d009e0a0000e4b904082b00000002 *000d00a70a00001cba04080c00000001000d00b10a00001cba04088100000002000d00ba0a0000 *acba04080c00000001000d00c40a0000acba04082400000002000d00cd0a0000dcba04080c0000 *0001000d00d70a0000dcba04082400000002000d00e00a00000cbb04080c00000001000d00ea0a *00000cbb04082400000002000d00f30a00003cbb04080c00000001000d00fd0a00003cbb040821 *00000002000d00060b00006cbb04080c00000001000d00100b00006cbb04080e00000002000d00 *190b000088bb04080c00000001000d00230b000088bb04081f00000002000d002c0b0000b4bb04 *080c00000001000d00360b0000b4bb04081900000002000d003f0b0000dcbb04080c0000000100 *0d00490b0000dcbb04081600000002000d00520b000000bc04080c00000001000d005c0b000000 *bc04081600000002000d00650b000024bc04080c00000001000d006f0b000024bc040816000000 *02000d00780b000048bc04080c00000001000d00820b000048bc04081900000002000d008b0b00 *0070bc04080c00000001000d00950b000070bc04081400000002000d009e0b000090bc04080c00 *000001000d00a80b000090bc04081700000002000d00b10b0000b4bc04080c00000001000d00bb *0b0000b4bc04081700000002000d00c40b0000d8bc04080c00000001000d00ce0b0000d8bc0408 *1100000002000d00d70b0000f8bc04080c00000001000d00e10b0000f8bc04081c00000002000d *00ea0b000020bd04080c00000001000d00f40b000020bd04081f00000002000d00fd0b00004cbd *04080c00000001000d00070c00004cbd04081600000002000d00100c000070bd04080c00000001 *000d001a0c000070bd04081d00000002000d00230c00009cbd04080c00000001000d002d0c0000 *9cbd04081800000002000d00360c0000c0bd04081200000002000d003f0c0000d4bd0408080000 *0001000d004f0c000030be04080800000001000d00590c000030be04080800000002000d00620c *000058be04080800000001000d006c0c000058be04080800000002000d00750c000080be040808 *00000001000d007f0c000080be04080800000002000d00880c000000000000000000000400f1ff *00020000502708080400000001001800940c000000000000000000000400f1ff00020000542708 *080400000001001800a00c000000000000000000000400f1ff0002000058270808040000000100 *1800ac0c000000000000000000000400f1ff000200005c2708080400000001001800b80c000000 *000000000000000400f1ffc40c000084c004081800000001000d00000d000094c304080c000000 *01000d000a0d0000ccc004081200000002000d00150d0000ecc004080c00000001000d001f0d00 *00ecc004084300000002000d002a0d00003cc104080c00000001000d00340d00003cc104084500 *000002000d003d0d000090c104080c00000001000d00470d000090c104081100000002000d0050 *0d0000a4c104081800000002000d005b0d0000d0c104081400000001000d00650d0000dcc10408 *0c00000001000d006f0d0000dcc104080c00000002000d00780d0000e8c104080500000002000d *00830d0000fcc104080c00000001000d008d0d0000fcc104083600000002000d00980d000040c2 *04080c00000001000d00a20d000040c204084500000002000d00ab0d000088c204081500000002 *000d00b60d0000b4c204081400000001000d00c00d0000c0c204080c00000001000d00ca0d0000 *c0c204082b00000002000d00d30d0000f8c204080c00000001000d00dd0d0000f8c20408110000 *0002000d00e60d000018c304080c00000001000d00f00d000018c304086d00000002000d00f90d *000094c304084400000002000d00b80c000000000000000000000400f1ffb80c00000000000000 *0000000400f1ffb80c000000000000000000000400f1ffb80c000000000000000000000400f1ff *b80c000000000000000000000400f1ffb80c000000000000000000000400f1ff00020000602708 *080400000001001800b80c000000000000000000000400f1ff020e000000000000000000000400 *f1ff00020000642708080400000001001800020e000000000000000000000400f1ff0e0e000008 *c604080800000001000d00180e0000a4c504080200000002000d00220e0000d4c504082b000000 *02000d002d0e0000b0c504080800000001000d00370e0000b0c504080b00000002000d00400e00 *00d4c504081800000001000d004a0e000008c604082d00000002000d00020e0000000000000000 *00000400f1ff530e0000b4c604080800000001000d005d0e000050c604080200000002000d0067 *0e000080c604082b00000002000d00720e00005cc604080800000001000d007c0e00005cc60408 *0b00000002000d00850e000080c604081800000001000d008f0e0000b4c604082d00000002000d *00020e000000000000000000000400f1ff980e000044c704080800000001000d00a20e000008c7 *04080800000001000d00ac0e000008c704083100000002000d00b50e000044c704081f00000002 *000d00020e000000000000000000000400f1ffbe0e0000e8c704080c00000001000d00c80e0000 *acc704080800000001000d00d20e0000acc704082f00000002000d00dd0e0000e8c70408360000 *0002000d00020e000000000000000000000400f1ffe80e000020c804081800000001000d00280f *0000a0d304081400000001000d00320f000074c804080c00000001000d003c0f000074c8040824 *00000002000d00450f0000a4c804080c00000001000d004f0f0000a4c804082b00000002000d00 *580f0000dcc804080c00000001000d00620f0000dcc804082b00000002000d006b0f000014c904 *080c00000001000d00750f000014c904082b00000002000d007e0f000040c904082b0000000200 *0d00890f000074c904080800000001000d00930f000074c904083c00000002000d009e0f0000b8 *c904080800000001000d00a80f0000b8c904083c00000002000d00b30f0000fcc9040808000000 *01000d00bd0f0000fcc904083c00000002000d00c80f000040ca04080800000001000d00d20f00 *0040ca04088d00000002000d00db0f0000dcca04080c00000001000d00e50f0000dcca04082900 *000002000d00f00f000010cb04080800000001000d00fa0f000010cb04083c00000002000d0005 *10000054cb04080800000001000d000f10000054cb04083c00000002000d001a10000098cb0408 *0800000001000d002410000098cb04083c00000002000d002f100000dccb04080800000001000d *0039100000dccb04088d00000002000d004210000078cc04080c00000001000d004c10000078cc *04082900000002000d0057100000accc04080800000001000d0061100000accc04083c00000002 *000d006c100000f0cc04080800000001000d0076100000f0cc04083c00000002000d0081100000 *34cd04080800000001000d008b10000034cd04083c00000002000d009610000078cd0408080000 *0001000d00a010000078cd04088d00000002000d00a910000014ce04080c00000001000d00b310 *000014ce04082900000002000d00be10000048ce04080800000001000d00c810000048ce04083c *00000002000d00d31000008cce04080800000001000d00dd1000008cce04083c00000002000d00 *e8100000d0ce04080800000001000d00f2100000d0ce04083c00000002000d00fd10000014cf04 *080800000001000d000711000014cf04088d00000002000d0010110000b0cf04080c0000000100 *0d001a110000b0cf04082900000002000d0025110000e4cf04080800000001000d002f110000e4 *cf04083c00000002000d003a11000028d004080800000001000d004411000028d004083c000000 *02000d004f1100006cd004080800000001000d00591100006cd004083c00000002000d00641100 *00b0d004080800000001000d006e110000b0d004088c00000002000d007711000048d104080c00 *000001000d008111000048d104082900000002000d008c11000080d104080c00000001000d0096 *11000080d104085b00000002000d009f110000e8d104080c00000001000d00a9110000e8d10408 *6200000002000d00b211000058d204080c00000001000d00bc11000058d204086200000002000d *00c5110000c8d204080c00000001000d00cf110000c8d204086200000002000d00d81100002cd3 *04085f00000002000d00020e000000000000000000000400f1ff020e0000000000000000000004 *00f1ff020e000000000000000000000400f1ff020e000000000000000000000400f1ff020e0000 *00000000000000000400f1ff020e000000000000000000000400f1ff020e000000000000000000 *000400f1ff020e000000000000000000000400f1ffe311000000000000000000000400f1ff0002 *0000682708080400000001001800ef11000000000000000000000400f1ff000200006c27080804 *00000001001800fb11000000000000000000000400f1ff00020000702708080400000001001800 *0712000000000000000000000400f1ff0002000074270808040000000100180013120000000000 *00000000000400f1ff000200007827080804000000010018001f12000000000000000000000400 *f1ff000200007c27080804000000010018002b12000000000000000000000400f1ff37120000e4 *d604080800000001000d0041120000e4d604082a00000002000d002b1200000000000000000000 *0400f1ff4a12000010d704080800000001000d007e12000064d904080c00000001000d00881200 *005cd704080c00000001000d00921200005cd704082900000002000d009d12000094d704080c00 *000001000d00a712000094d704083200000002000d00b0120000d4d704080c00000001000d00ba *120000d4d704081200000002000d00c3120000f4d704080c00000001000d00cd120000f4d70408 *1e00000002000d00d612000020d804080c00000001000d00e012000020d804082300000002000d *00e912000054d804081000000001000d00f312000054d804082300000002000d00fe12000088d8 *04081000000001000d000813000088d804084c00000002000d0013130000dcd804080800000001 *000d001d130000dcd804080600000002000d0026130000f0d804080c00000001000d0030130000 *f0d804086800000002000d003913000064d904081800000002000d002b12000000000000000000 *000400f1ff42130000fcd904081400000001000d004c130000acd904080900000002000d005713 *0000c0d904080800000001000d0061130000c0d904081100000002000d006a130000d4d9040812 *00000002000d002b12000000000000000000000400f1ff2b12000000000000000000000400f1ff *2b12000000000000000000000400f1ff2b12000000000000000000000400f1ff2b120000000000 *00000000000400f1ff000200008027080804000000010018002b12000000000000000000000400 *f1ff75130000f0da04080800000001000d007f130000f0da04086300000002000d008813000000 *000000000000000400f1ff00020000842708080400000001001800941300000000000000000000 *0400f1ff00020000882708080400000001001800a013000000000000000000000400f1ff000200 *008c2708080400000001001800ac13000000000000000000000400f1ff00020000902708080400 *000001001800b813000000000000000000000400f1ff00020000942708080400000001001800c4 *13000000000000000000000400f1ff00020000982708080400000001001800d013000000000000 *000000000400f1ff000200009c2708080400000001001800d013000000000000000000000400f1 *ffdc130000e0de04080800000001000d00e613000050de04080200000002000d00f0130000a8de *04082d00000002000d00fb1300005cde04080800000001000d00051400005cde04083100000002 *000d000e140000a8de04081800000001000d0018140000e0de04082d00000002000d0021140000 *00000000000000000400f1ffb80c000000000000000000000400f1ff2f14000044e70408080000 *0001000d007214000014e804080c00000001000d007c1400008ce704080800000001000d008614 *00008ce704080b00000002000d008f140000a0e704080800000001000d0099140000a0e704081d *00000002000d00a2140000c8e704080800000001000d00ac140000c8e704080f00000002000d00 *b5140000d8e704080e00000002000d00c0140000e8e704080b00000002000d00cb14000008e804 *081400000001000d00d514000014e804084200000002000d00b80c000000000000000000000400 *f1ffb80c000000000000000000000400f1ffde14000058e804080800000001000d00b80c000000 *000000000000000400f1ffb80c000000000000000000000400f1ffb80c00000000000000000000 *0400f1ffb80c000000000000000000000400f1ffb80c000000000000000000000400f1ffb80c00 *0000000000000000000400f1ffb80c000000000000000000000400f1ffb80c0000000000000000 *00000400f1ffb80c000000000000000000000400f1ffb80c000000000000000000000400f1ffb8 *0c000000000000000000000400f1ffb80c000000000000000000000400f1ffb80c000000000000 *000000000400f1ffb80c000000000000000000000400f1ffb80c000000000000000000000400f1 *ffb80c000000000000000000000400f1ffb80c000000000000000000000400f1ffb80c00000000 *0000000000000400f1ffb80c000000000000000000000400f1ffb80c0000000000000000000004 *00f1ff1b15000010eb04080800000001000d002515000010eb04083100000002000d00020e0000 *00000000000000000400f1ff2e15000044eb04080800000001000d00020e000000000000000000 *000400f1ff6415000018ec04080800000001000d006e150000dceb04080800000001000d007815 *0000dceb04083100000002000d008115000018ec04081f00000002000d00020e00000000000000 *0000000400f1ff8a15000038ec04080400000001000d00bf15000054ed04081000000001000d00 *c915000088ec04080800000001000d00d315000088ec04082f00000002000d00de150000c4ec04 *080c00000001000d00e8150000c4ec04084500000002000d00f115000018ed04080c0000000100 *0d00fb15000018ed04082a00000002000d000616000054ed04084a00000002000d00020e000000 *000000000000000400f1ff11160000a0ed04080400000001000d0046160000bcee040810000000 *01000d0050160000f0ed04080800000001000d005a160000f0ed04082f00000002000d00651600 *002cee04080c00000001000d006f1600002cee04084500000002000d007816000080ee04080c00 *000001000d008216000080ee04082a00000002000d008d160000bcee04084a00000002000d0002 *0e000000000000000000000400f1ff9816000084ef04080800000001000d00a216000020ef0408 *0200000002000d00ac16000050ef04082b00000002000d00b71600002cef04080800000001000d *00c11600002cef04080b00000002000d00ca16000050ef04081800000001000d00d416000084ef *04082d00000002000d00020e000000000000000000000400f1ffdd16000030f004080800000001 *000d00e7160000ccef04080200000002000d00f1160000fcef04082b00000002000d00fc160000 *d8ef04080800000001000d0006170000d8ef04080b00000002000d000f170000fcef0408180000 *0001000d001917000030f004082d00000002000d00020e000000000000000000000400f1ff2217 *000060f004080400000001000d005717000028f104081000000001000d0061170000b0f0040808 *00000001000d006b170000b0f004082f00000002000d0076170000ecf004080c00000001000d00 *80170000ecf004082900000002000d008b17000028f104084a00000002000d00020e0000000000 *00000000000400f1ff9617000074f104080400000001000d00cb1700003cf20408100000000100 *0d00d5170000c4f104080800000001000d00df170000c4f104082f00000002000d00ea17000000 *f204080c00000001000d00f417000000f204082900000002000d00ff1700003cf204084a000000 *02000d00020e000000000000000000000400f1ff0a18000004f304080800000001000d00141800 *00a0f204080200000002000d001e180000d0f204082b00000002000d0029180000acf204080800 *000001000d0033180000acf204080b00000002000d003c180000d0f204081800000001000d0046 *18000004f304082d00000002000d00020e000000000000000000000400f1ff4f180000b0f30408 *0800000001000d00591800004cf304080200000002000d00631800007cf304082b00000002000d *006e18000058f304080800000001000d007818000058f304080b00000002000d00811800007cf3 *04081800000001000d008b180000b0f304082d00000002000d00020e0000000000000000000004 *00f1ff94180000e0f304080800000001000d00c9180000e4f404081000000001000d00d3180000 *34f404080800000001000d00dd18000034f404082f00000002000d00e818000070f404080c0000 *0001000d00f218000070f404082900000002000d00fd180000a8f404080c00000001000d000719 *0000a8f404082900000002000d0012190000e4f404085d00000002000d00020e00000000000000 *0000000400f1ff1d190000c0f504080800000001000d00271900005cf504080200000002000d00 *311900008cf504082b00000002000d003c19000068f504080800000001000d004619000068f504 *080b00000002000d004f1900008cf504081800000001000d0059190000c0f504082d0000000200 *0d002b12000000000000000000000400f1ff6219000064f604081400000001000d006c1900001c *f604080b00000002000d007719000030f604080800000001000d008119000030f6040807000000 *02000d008a19000038f604081500000002000d002b12000000000000000000000400f1ff951900 *0048f704081400000001000d009f19000090f604080b00000002000d00aa190000a4f604080800 *000001000d00b4190000a4f604083700000002000d00bd190000e4f604080800000001000d00c7 *190000e4f604081800000002000d00d019000004f704080800000001000d00da19000004f70408 *1500000002000d00e31900001cf704081500000002000d00c413000000000000000000000400f1 *ffee19000048f704080400000001000d00211a000074f704080c00000001000d002b1a000074f7 *04086b00000002000d00c413000000000000000000000400f1ffc4130000000000000000000004 *00f1ffc413000000000000000000000400f1ffc413000000000000000000000400f1ffc4130000 *00000000000000000400f1ffc413000000000000000000000400f1ffc413000000000000000000 *000400f1ffc413000000000000000000000400f1ffc413000000000000000000000400f1ffc413 *000000000000000000000400f1ffb80c000000000000000000000400f1ff341a000044f8040804 *00000001000d00b80c000000000000000000000400f1ff711a000008f904080800000001000d00 *7b1a0000e0f804080800000001000d00851a0000e0f804082000000002000d008e1a000008f904 *081d00000002000d00b80c000000000000000000000400f1ff971a000084f90408080000000100 *0d00a11a00005cf904080800000001000d00ab1a00005cf904082000000002000d00b41a000084 *f904081d00000002000d00b80c000000000000000000000400f1ffbd1a000000fa040808000000 *01000d00c71a0000d8f904080800000001000d00d11a0000d8f904082000000002000d00da1a00 *0000fa04081d00000002000d00b80c000000000000000000000400f1ffe31a00007cfa04080800 *000001000d00ed1a000054fa04080800000001000d00f71a000054fa04082000000002000d0000 *1b00007cfa04081d00000002000d00b80c000000000000000000000400f1ff091b000060fb0408 *0800000001000d00131b0000c8fa04080800000002000d001e1b0000d0fa04080800000002000d *00291b0000d8fa04080800000002000d00331b0000f8fa04081800000001000d003d1b0000f8fa *04081200000002000d00481b00000cfb04080800000002000d00531b00002cfb04081800000001 *000d005d1b000034fb04080800000001000d00671b000034fb04082400000002000d00701b0000 *60fb04082000000002000d00b80c000000000000000000000400f1ff791b000044fc0408080000 *0001000d00831b0000acfb04080800000002000d008e1b0000b4fb04080800000002000d00991b *0000bcfb04080800000002000d00a31b0000dcfb04081800000001000d00ad1b0000dcfb040812 *00000002000d00b81b0000f0fb04080800000002000d00c31b000010fc04081800000001000d00 *cd1b000018fc04080800000001000d00d71b000018fc04082400000002000d00e01b000044fc04 *082000000002000d00b80c000000000000000000000400f1ffe91b000004fd0408080000000100 *0d00f31b000090fc04080e00000002000d00fe1b0000a0fc04080800000002000d00091c0000a8 *fc04080e00000002000d00141c0000d0fc04081800000001000d001e1c0000d8fc040808000000 *01000d00281c0000d8fc04082100000002000d00311c000004fd04081d00000002000d00b80c00 *0000000000000000000400f1ffb80c000000000000000000000400f1ffb80c0000000000000000 *00000400f1ffb80c000000000000000000000400f1ffb80c000000000000000000000400f1ffb8 *0c000000000000000000000400f1ffb80c000000000000000000000400f1ffb80c000000000000 *000000000400f1ffb80c000000000000000000000400f1ffb80c000000000000000000000400f1 *ffb80c000000000000000000000400f1ffb80c000000000000000000000400f1ffb80c00000000 *0000000000000400f1ffb80c000000000000000000000400f1ffb80c0000000000000000000004 *00f1ffb80c000000000000000000000400f1ffb80c000000000000000000000400f1ffb80c0000 *00000000000000000400f1ffb80c000000000000000000000400f1ffb80c000000000000000000 *000400f1ffb80c000000000000000000000400f1ffb80c000000000000000000000400f1ffb80c *000000000000000000000400f1ffb80c000000000000000000000400f1ffb80c00000000000000 *0000000400f1ffb80c000000000000000000000400f1ffb80c000000000000000000000400f1ff *b80c000000000000000000000400f1ffb80c000000000000000000000400f1ffb80c0000000000 *00000000000400f1ff3a1c00001cfe04080800000001000d00441c00001cfe0408310000000200 *0d00020e000000000000000000000400f1ff4d1c000050fe04080800000001000d00020e000000 *000000000000000400f1ff020e000000000000000000000400f1ff7c1c000038ff040804000000 *01000d00b81c000064ff04080c00000001000d00c21c000064ff04083a00000002000d00020e00 *0000000000000000000400f1ffcb1c0000a0ff04080400000001000d000f1d0000ccff04080c00 *000001000d00191d0000ccff04080b00000002000d00020e000000000000000000000400f1ff22 *1d0000380005080800000001000d002c1d0000fcff04080800000001000d00361d0000fcff0408 *3100000002000d003f1d0000380005081f00000002000d00020e000000000000000000000400f1 *ff481d0000b80005080800000001000d00521d00007c0005080800000001000d005c1d00007c00 *05083100000002000d00651d0000b80005081f00000002000d00020e0000000000000000000004 *00f1ff6e1d0000380105080800000001000d00781d0000fc0005080800000001000d00821d0000 *fc0005083100000002000d008b1d0000380105081f00000002000d00c413000000000000000000 *000400f1ff941d0000580105080800000001000d00b80c000000000000000000000400f1ffb71d *0000cc0105080400000001000d00f41d0000240205080800000001000d00fe1d00002402050808 *00000002000d00b80c000000000000000000000400f1ff071e0000740305081400000001000d00 *111e00005c0205080e00000002000d001c1e00006c0205080e00000002000d00271e00007c0205 *081100000002000d00321e0000a40205081400000001000d003c1e0000a4020508140000000200 *0d00471e0000cc0205081400000001000d00511e0000d40205080800000001000d005b1e0000d4 *0205083b00000002000d00641e0000100305080700000002000d006f1e00001803050807000000 *02000d007a1e0000340305081400000001000d00841e00003c0305080800000001000d008e1e00 *003c0305081200000002000d00971e0000500305080700000002000d00a21e0000580305080700 *000002000d00b80c000000000000000000000400f1ffad1e0000e00305080800000001000d00b7 *1e0000940305080800000001000d00c11e0000940305084200000002000d00ca1e0000e0030508 *1700000002000d00b80c000000000000000000000400f1ffd31e0000bc0405081800000001000d *00dd1e0000340405080e00000002000d00e81e0000440405080e00000002000d00f31e00005404 *05080e00000002000d00fd1e00007c0405081800000001000d00071f00007c0405081500000002 *000d00121f0000940405080e00000002000d00b80c000000000000000000000400f1ff1d1f0000 *800505081800000001000d00271f0000f80405080e00000002000d00321f0000080505080e0000 *0002000d003d1f0000180505080e00000002000d00471f0000400505081800000001000d00511f *0000400505081500000002000d005c1f0000580505080e00000002000d00b80c00000000000000 *0000000400f1ff671f0000440605081800000001000d00711f0000bc0505080e00000002000d00 *7c1f0000cc0505080e00000002000d00871f0000dc0505080e00000002000d00911f0000040605 *081800000001000d009b1f0000040605081500000002000d00a61f00001c0605080e0000000200 *0d00b80c000000000000000000000400f1ffb11f0000080705081800000001000d00bb1f000080 *0605080e00000002000d00c61f0000900605080e00000002000d00d11f0000a00605080e000000 *02000d00db1f0000c80605081800000001000d00e51f0000c80605081500000002000d00f01f00 *00e00605080e00000002000d00b80c000000000000000000000400f1fffb1f0000640705080800 *000001000d00052000003c0705080800000001000d000f2000003c0705082000000002000d0018 *200000640705081d00000002000d00b80c000000000000000000000400f1ff21200000e0070508 *0800000001000d002b200000b80705080800000001000d0035200000b80705082000000002000d *003e200000e00705081d00000002000d00b80c000000000000000000000400f1ff47200000b809 *05081400000001000d0051200000200805080800000001000d005b200000200805082d00000002 *000d0064200000580805080800000001000d006e200000580805081700000002000d0077200000 *700805080f00000002000d0082200000800805080e00000002000d008d200000a4080508140000 *0001000d0097200000a40805080c00000002000d00a2200000b00805080e00000002000d00ad20 *0000c80805080800000001000d00b7200000c80805082d00000002000d00c02000000009050808 *00000001000d00ca200000000905081700000002000d00d3200000200905080800000001000d00 *dd200000200905082900000002000d00e6200000540905080800000001000d00f0200000540905 *081400000002000d00f9200000680905081400000002000d000421000090090508140000000100 *0d000e210000900905081400000002000d00020e000000000000000000000400f1ff020e000000 *000000000000000400f1ff192100002c0a05080400000001000d00020e00000000000000000000 *0400f1ff020e000000000000000000000400f1ff020e000000000000000000000400f1ff020e00 *0000000000000000000400f1ff020e000000000000000000000400f1ff020e0000000000000000 *00000400f1ff020e000000000000000000000400f1ff020e000000000000000000000400f1ff02 *0e000000000000000000000400f1ff020e000000000000000000000400f1ff020e000000000000 *000000000400f1ff020e000000000000000000000400f1ff020e000000000000000000000400f1 *ff020e000000000000000000000400f1ff020e000000000000000000000400f1ff020e00000000 *0000000000000400f1ff020e000000000000000000000400f1ff020e0000000000000000000004 *00f1ff020e000000000000000000000400f1ff020e000000000000000000000400f1ff020e0000 *00000000000000000400f1ff020e000000000000000000000400f1ff020e000000000000000000 *000400f1ff020e000000000000000000000400f1ff020e000000000000000000000400f1ff020e *000000000000000000000400f1ff020e000000000000000000000400f1ff020e00000000000000 *0000000400f1ff020e000000000000000000000400f1ff020e000000000000000000000400f1ff *020e000000000000000000000400f1ff020e000000000000000000000400f1ff020e0000000000 *00000000000400f1ff020e000000000000000000000400f1ff020e000000000000000000000400 *f1ff020e000000000000000000000400f1ff020e000000000000000000000400f1ff020e000000 *000000000000000400f1ff020e000000000000000000000400f1ff020e00000000000000000000 *0400f1ff020e000000000000000000000400f1ff020e000000000000000000000400f1ffc41300 *0000000000000000000400f1ffb80c000000000000000000000400f1ff612100002c0d05080800 *000001000d006b210000f00c05080800000001000d0075210000f00c05083100000002000d007e *2100002c0d05081f00000002000d00b80c000000000000000000000400f1ff872100004c0d0508 *0400000001000d00c4210000ac0d05080800000001000d00ce2100008c0d05080800000001000d *00d82100008c0d05081500000002000d00e1210000ac0d05081e00000002000d00b80c00000000 *0000000000000400f1ffea210000d00e05081400000001000d00f4210000e40d05080e00000002 *000d00ff210000f40d05080e00000002000d000a220000180e05081400000001000d0014220000 *180e05080c00000002000d001f220000240e05080e00000002000d002a2200003c0e0508080000 *0001000d00342200003c0e05082800000002000d003d2200006c0e05080800000001000d004722 *00006c0e05081400000002000d0050220000800e05081400000002000d005b220000a80e050814 *00000001000d0065220000a80e05081400000002000d007022000000000000000000000400f1ff *b80c000000000000000000000400f1ff84220000cc0f05081400000001000d008e220000600f05 *080b00000002000d0099220000740f05080800000001000d00a3220000740f0508080000000200 *0d00ac220000840f05080800000001000d00b6220000840f05081900000002000d00bf220000a0 *0f05081500000002000d00b80c000000000000000000000400f1ffca2200002410050808000000 *01000d00d4220000ec0f05080800000001000d00de220000ec0f05083000000002000d00e72200 *00241005081700000002000d00f022000000000000000000000400f1ff00020000a02708080400 *000001001800fc22000000000000000000000400f1ff00020000a4270808040000000100180007 *23000000000000000000000400f1ff00020000a827080804000000010018001223000000000000 *000000000400f1ff00020000ac27080804000000010018001223000000000000000000000400f1 *ff1223000000000000000000000400f1ff1e23000000000000000000000400f1ff00020000b027 *080804000000010018001e23000000000000000000000400f1ff2a230000e81305080800000001 *000d0034230000101505080c00000001000d003e230000501305080200000002000d0048230000 *801305082b00000002000d00532300005c1305080800000001000d005d2300005c1305080b0000 *0002000d0066230000801305081800000001000d0070230000b41305080800000001000d007a23 *0000b41305082c00000002000d0083230000e81305083000000002000d008e2300001814050805 *00000002000d0098230000dc1405082700000002000d00a3230000201405080200000002000d00 *ad2300003c1405080800000002000d00b82300003c1405081800000001000d00c22300004c1405 *080800000001000d00cc2300004c1405080900000002000d00d523000060140508080000000100 *0d00df230000601405081500000002000d00e8230000801405080800000001000d00f223000080 *1405084400000002000d00fb230000dc1405081800000001000d00052400001015050833000000 *02000d001024000000000000000000000400f1ff00020000b427080804000000010018001b2400 *0000000000000000000400f1ff00020000b8270808040000000100180027240000000000000000 *00000400f1ff00020000bc27080804000000010018003324000000000000000000000400f1ff00 *020000c027080804000000010018003e24000000000000000000000400f1ff00020000c4270808 *04000000010018004924000000000000000000000400f1ff00020000c827080804000000010018 *005524000000000000000000000400f1ff5524000000000000000000000400f1ff61240000b018 *05080800000001000d006b240000741805080800000001000d0075240000741805083100000002 *000d007e240000b01805081400000002000d005524000000000000000000000400f1ff87240000 *201905080800000001000d0091240000e41805080800000001000d009b240000e4180508310000 *0002000d00a4240000201905081400000002000d005524000000000000000000000400f1ff5524 *000000000000000000000400f1ff5524000000000000000000000400f1ff552400000000000000 *0000000400f1ff5524000000000000000000000400f1ffad240000941905080400000001000d00 *e02400007c1b05082000000001000d00ea240000bc1905080800000001000d00f4240000bc1905 *080b00000002000d00fd240000d01905080800000001000d0007250000d01905080b0000000200 *0d0010250000e41905080800000001000d001a250000e41905080b00000002000d0023250000f8 *1905080800000001000d002d250000f81905080b00000002000d0036250000101a05080c000000 *01000d0040250000101a05087d00000002000d0049250000901a05080c00000002000d00542500 *00a41a05080800000001000d005e250000a41a05080b00000002000d0067250000b01a05081a00 *000002000d0072250000d41a05080800000001000d007c250000d41a05080b00000002000d0085 *250000e01a05081a00000002000d0090250000041b05080800000001000d009a250000041b0508 *0b00000002000d00a3250000101b05081a00000002000d00ae250000341b05080800000001000d *00b8250000341b05080b00000002000d00c1250000401b05081a00000002000d00552400000000 *0000000000000400f1ff00020000cc2708080400000001001800cc250000000000000000000004 *00f1ff00020000d02708080400000001001800d825000000000000000000000400f1ff00020000 *d42708080400000001001800e425000000000000000000000400f1ff00020000d8270808040000 *0001001800ee25000000000000000000000400f1ff00020000dc2708080400000001001800fa25 *000000000000000000000400f1ff00020000e02708080400000001001800062600000000000000 *0000000400f1ff00020000e427080804000000010018001226000000000000000000000400f1ff *00020000e827080804000000010018001e26000000000000000000000400f1ff00020000ec2708 *0804000000010018002a26000000000000000000000400f1ff35260000881f0508040000000100 *0d0062260000002005080800000001000d006c260000002005083900000002000d002a26000000 *000000000000000400f1ff2a26000000000000000000000400f1ff00020000f027080804000000 *010018002a26000000000000000000000400f1ff752600002c2305081800000001000d007f2600 *00042105080800000001000d0089260000042105080b00000002000d0092260000182105080800 *000001000d009c260000182105083500000002000d00a5260000582105080800000001000d00af *260000582105080f00000002000d00b8260000702105080800000001000d00c226000070210508 *3500000002000d00cb260000b02105080800000001000d00d5260000b02105080c00000002000d *00de260000bc2105082e00000002000d00e9260000f42105080800000001000d00f3260000f421 *05080b00000002000d00fc260000082205080800000001000d0006270000082205083500000002 *000d000f270000482205080800000001000d0019270000482205080f00000002000d0022270000 *582205082800000002000d002d270000882205080800000001000d0037270000882205080b0000 *0002000d00402700009c2205080800000001000d004a2700009c2205083500000002000d005327 *0000dc2205080800000001000d005d270000dc2205080f00000002000d0066270000ec22050828 *00000002000d002a26000000000000000000000400f1ff71270000802405080800000001000d00 *7b270000682305080800000001000d0085270000682305080b00000002000d008e2700007c2305 *080800000001000d00982700007c2305083a00000002000d00a1270000c0230508080000000100 *0d00ab270000c02305082800000002000d00b4270000f02305080800000001000d00be270000f0 *2305082500000002000d00c7270000202405080800000001000d00d1270000202405082a000000 *02000d00da270000542405080800000001000d00e4270000542405082100000002000d00ed2700 *00802405081100000002000d00f627000000000000000000000400f1ff00020000f42708080400 *000001001800f627000000000000000000000400f1ff0128000000000000000000000400f1ff00 *020000f827080804000000010018000d28000000000000000000000400f1ff00020000fc270808 *04000000010018000d28000000000000000000000400f1ff19280000942505080800000001000d *004c280000682605080800000001000d00562800007c2705080c00000001000d00602800005428 *05081800000001000d006a280000042605080800000001000d0074280000042605085c00000002 *000d007d280000682605082a00000002000d00882800009c2605080800000001000d0092280000 *9c2605080b00000002000d009b280000a82605082100000002000d00a6280000d4260508080000 *0001000d00b0280000d42605080b00000002000d00b9280000e02605082100000002000d00c428 *00000c2705080800000001000d00ce2800000c2705080b00000002000d00d72800001827050821 *00000002000d00e2280000542705081800000001000d00ec2800005c2705080800000001000d00 *f62800005c2705081400000002000d00ff2800007c2705081e00000002000d000a2900009c2705 *080500000002000d0014290000542805084000000002000d001f290000ac270508080000000100 *0d0029290000ac2705085c00000002000d0032290000102805080800000001000d003c29000010 *2805082a00000002000d000d28000000000000000000000400f1ff0d2800000000000000000000 *0400f1ff0d28000000000000000000000400f1ff0d28000000000000000000000400f1ff472900 *0000000000000000000400f1ff0002000000280808040000000100180053290000000000000000 *00000400f1ff000200000428080804000000010018005e29000000000000000000000400f1ff00 *0200000828080804000000010018006a29000000000000000000000400f1ff000200000c280808 *04000000010018007529000000000000000000000400f1ff000200001028080804000000010018 *008129000000000000000000000400f1ff000200001428080804000000010018008d2900000000 *0000000000000400f1ff0002000018280808040000000100180099290000000000000000000004 *00f1ff000200001c2808080400000001001800a529000000000000000000000400f1ff00020000 *202808080400000001001800b129000000000000000000000400f1ff0002000024280808040000 *0001001800bd29000000000000000000000400f1ff00020000282808080400000001001800c929 *000000000000000000000400f1ff000200002c2808080400000001001800d52900000000000000 *0000000400f1ff00020000302808080400000001001800e129000000000000000000000400f1ff *00020000342808080400000001001800ed29000000000000000000000400f1ff00020000382808 *080400000001001800f929000000000000000000000400f1ff000200003c280808040000000100 *1800042a000000000000000000000400f1ff00020000402808080400000001001800102a000000 *000000000000000400f1ff000200004428080804000000010018001c2a00000000000000000000 *0400f1ff282a0000883105080800000001000d00322a0000883105086300000002000d001c2a00 *0000000000000000000400f1ff1c2a000000000000000000000400f1ff1c2a0000000000000000 *00000400f1ff000200004828080804000000010018003b2a000000000000000000000400f1ff47 *2a0000303205080400000001000d00832a0000003405080c00000001000d008d2a000074320508 *0800000001000d00972a0000743205084700000002000d00a22a0000c43205080800000001000d *00ac2a0000c43205083c00000002000d00b52a0000003305081600000002000d00c02a00002033 *05080800000001000d00ca2a0000203305084700000002000d00d52a0000703305080800000001 *000d00df2a0000703305083c00000002000d00e82a0000b43305080800000001000d00f22a0000 *b43305081d00000002000d00fb2a0000d43305080c00000002000d00062b0000f4330508140000 *0001000d00102b0000003405081e00000002000d003b2a000000000000000000000400f1ff3b2a *000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000 *0000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff *3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000 *00000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400 *f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000 *000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000000000 *0400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00 *0000000000000000000400f1ff000200004c2808080400000001001800192b0000000000000000 *00000400f1ff00020000502808080400000001001800242b000000000000000000000400f1ff00 *0200005428080804000000010018002f2b000000000000000000000400f1ff0002000058280808 *04000000010018003a2b000000000000000000000400f1ff000200005c28080804000000010018 *00462b000000000000000000000400f1ff00020000602808080400000001001800522b00000000 *0000000000000400f1ff000200006428080804000000010018005e2b0000000000000000000004 *00f1ff000200006828080804000000010018005e2b000000000000000000000400f1ff6a2b0000 *00000000000000000400f1ff000200006c2808080400000001001800762b000000000000000000 *000400f1ff00020000702808080400000001001800812b000000000000000000000400f1ff0002 *00007428080804000000010018008c2b000000000000000000000400f1ff000200007828080804 *00000001001800972b000000000000000000000400f1ff000200007c2808080400000001001800 *a22b000000000000000000000400f1ff00020000802808080400000001001800ad2b0000000000 *00000000000400f1ff00020000842808080400000001001800b92b000000000000000000000400 *f1ff00020000882808080400000001001800c42b000000000000000000000400f1ff000200008c *2808080400000001001800cf2b000000000000000000000400f1ff000200009028080804000000 *01001800da2b000000000000000000000400f1ff00020000942808080400000001001800e62b00 *0000000000000000000400f1ff00020000982808080400000001001800f22b0000000000000000 *00000400f1ff000200009c2808080400000001001800fe2b000000000000000000000400f1ff0a *2c0000383e05080400000001000d00fe2b000000000000000000000400f1fffe2b000000000000 *000000000400f1ff00020000a028080804000000010018004e2c000000000000000000000400f1 *ff00020000a428080804000000010018005a2c000000000000000000000400f1ff00020000a828 *08080400000001001800662c000000000000000000000400f1ff00020000ac2808080400000001 *001800662c000000000000000000000400f1ff662c000000000000000000000400f1ff662c0000 *00000000000000000400f1ff722c00006c4005080400000001000d00b72c000078420508080000 *0001000d00c12c0000a84005083400000002000d00cc2c0000dc4005080e00000002000d00d72c *0000004105081400000001000d00e12c0000004105080c00000002000d00ec2c00000c41050834 *00000002000d00f72c0000404105080e00000002000d00022d0000644105081400000001000d00 *0c2d0000644105081b00000002000d00172d0000944105081400000001000d00212d00009c4105 *080800000001000d002b2d00009c4105083c00000002000d00362d0000e0410508080000000100 *0d00402d0000e04105086200000002000d00492d00004c4205080800000001000d00532d00004c *4205082200000002000d005c2d0000784205081700000002000d00652d00000000000000000000 *0400f1ff00020000b02808080400000001001800712d000000000000000000000400f1ff000200 *00b428080804000000010018007d2d000000000000000000000400f1ff00020000b82808080400 *000001001800892d000000000000000000000400f1ff00020000bc280808040000000100180095 *2d000000000000000000000400f1ff00020000c02808080400000001001800a12d000000000000 *000000000400f1ff00020000c428080804000000010018001223000000000000000000000400f1 *ff1223000000000000000000000400f1ff1e23000000000000000000000400f1ffad2d00003046 *05080800000001000d00b72d0000304605080800000002000d00c02d0000000000000000000004 *00f1ff00020000c82808080400000001001800cb2d000000000000000000000400f1ff00020000 *cc28080804000000010018002724000000000000000000000400f1ffd62d0000a8460508040000 *0001000d00182e0000744a05080800000001000d00b10700008c4b05081000000001000d00222e *0000c04c05081800000001000d002c2e0000104705080800000001000d00362e00001047050859 *03000002000d003f2e0000744a05082a00000002000d004a2e0000a04a05080f00000002000d00 *552e0000b84a05080800000001000d005f2e0000b84a05080b00000002000d00682e0000cc4a05 *080800000001000d00722e0000cc4a05081900000002000d007b2e0000e84a05080f0000000200 *0d00862e0000004b05080800000001000d00902e0000004b05080b00000002000d00992e000014 *4b05080800000001000d00a32e0000144b05081900000002000d00ac2e0000304b05080f000000 *02000d00b72e0000544b05081400000001000d00c12e0000544b05081400000002000d00cc2e00 *007c4b05081400000001000d00bb0700008c4b05081e00000002000d00d62e0000ac4b05080500 *000002000d00e02e0000c04c05081e00000002000d00eb2e0000bc4b05080800000001000d00f5 *2e0000bc4b05080b00000002000d00fe2e0000c84b05081600000002000d00092f0000e84b0508 *0800000001000d00132f0000e84b05083c00000002000d001e2f00002c4c05080800000001000d *00282f00002c4c05083200000002000d00312f0000684c05080800000001000d003b2f0000684c *05082000000002000d00442f0000884c05080c00000002000d004f2f0000a84c05081400000001 *000d002724000000000000000000000400f1ff2724000000000000000000000400f1ff592f0000 *00000000000000000400f1ff00020000d02808080400000001001800642f000000000000000000 *000400f1ff00020000d428080804000000010018000d28000000000000000000000400f1ff0d28 *000000000000000000000400f1ff0d28000000000000000000000400f1ff0d2800000000000000 *0000000400f1ff0d28000000000000000000000400f1ff0d28000000000000000000000400f1ff *0d28000000000000000000000400f1ff0d28000000000000000000000400f1ff0d280000000000 *00000000000400f1ff0d28000000000000000000000400f1ff702f00005c4d05080c0000000100 *0d00a82f0000004e05080c00000001000d00b22f0000a44d05080c00000001000d00bc2f0000a4 *4d05082900000002000d00c72f0000d04d05081000000002000d00d12f0000f44d050814000000 *01000d00db2f0000004e05088d00000002000d000d28000000000000000000000400f1ff0d2800 *0000000000000000000400f1ff0d28000000000000000000000400f1ff0d280000000000000000 *00000400f1ffe42f000000000000000000000400f1ff00020000d82808080400000001001800f0 *2f000000000000000000000400f1ff00020000dc2808080400000001001800fc2f000000000000 *000000000400f1ff00020000e028080804000000010018003b2a000000000000000000000400f1 *ff07300000b44f05080800000001000d0011300000b44f05080b00000002000d003b2a00000000 *0000000000000400f1ff1a300000e04f05080800000001000d0024300000e04f05080b00000002 *000d003b2a000000000000000000000400f1ff2d3000000c5005080800000001000d0037300000 *0c5005084320000002000d003b2a000000000000000000000400f1ff3b2a000000000000000000 *000400f1fffe2b000000000000000000000400f1ff40300000887105080c00000001000d00662c *000000000000000000000400f1ff662c000000000000000000000400f1ff7e300000b072050808 *00000001000d00883000007c7205080800000001000d00923000007c7205082900000002000d00 *9d300000b07205086800000002000d002724000000000000000000000400f1ff27240000000000 *00000000000400f1ff2724000000000000000000000400f1ff2724000000000000000000000400 *f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff2724000000 *000000000000000400f1ff2724000000000000000000000400f1ff272400000000000000000000 *0400f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff272400 *0000000000000000000400f1ff2724000000000000000000000400f1ff27240000000000000000 *00000400f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff27 *24000000000000000000000400f1ff2724000000000000000000000400f1ff2724000000000000 *000000000400f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1 *ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff272400000000 *0000000000000400f1ff2724000000000000000000000400f1ff27240000000000000000000004 *00f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff27240000 *00000000000000000400f1ff2724000000000000000000000400f1ff2724000000000000000000 *000400f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff2724 *000000000000000000000400f1ff2724000000000000000000000400f1ff272400000000000000 *0000000400f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff *2724000000000000000000000400f1ff2724000000000000000000000400f1ff27240000000000 *00000000000400f1ff2724000000000000000000000400f1ff2724000000000000000000000400 *f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff2724000000 *000000000000000400f1ff2724000000000000000000000400f1ff272400000000000000000000 *0400f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff272400 *0000000000000000000400f1ff2724000000000000000000000400f1ff27240000000000000000 *00000400f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff27 *24000000000000000000000400f1ff2724000000000000000000000400f1ff2724000000000000 *000000000400f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1 *ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff272400000000 *0000000000000400f1ff2724000000000000000000000400f1ff27240000000000000000000004 *00f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff27240000 *00000000000000000400f1ff2724000000000000000000000400f1ff2724000000000000000000 *000400f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff2724 *000000000000000000000400f1ff2724000000000000000000000400f1ff272400000000000000 *0000000400f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff *2724000000000000000000000400f1ff2724000000000000000000000400f1ff27240000000000 *00000000000400f1ff2724000000000000000000000400f1ff2724000000000000000000000400 *f1ff2724000000000000000000000400f1fffa25000000000000000000000400f1ffa630000018 *7305080800000001000d00e5300000e87405080c00000001000d00ef3000006c7305080c000000 *01000d00f93000006c7305083000000002000d0004310000a87305080c00000001000d000e3100 *00a87305084b00000002000d0019310000007405080c00000001000d0023310000007405085100 *000002000d002e310000607405080c00000001000d0038310000607405087a00000002000d0041 *310000e87405080900000002000d000d28000000000000000000000400f1ff3b2a000000000000 *000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1 *ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000 *0000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000000004 *00f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000 *00000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000 *000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a *000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000 *0000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff *3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000 *00000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400 *f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000 *000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000000000 *0400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00 *0000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000 *00000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b *2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000 *000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1 *ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000 *0000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000000004 *00f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000 *00000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000 *000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a *000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000 *0000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff *3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000 *00000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400 *f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000 *000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000000000 *0400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00 *0000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000 *00000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b *2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000 *000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1 *ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000 *0000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000000004 *00f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000 *00000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000 *000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a *000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000 *0000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff *3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000 *00000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400 *f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000 *000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000000000 *0400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00 *0000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000 *00000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b *2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000 *000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1 *ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000 *0000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000000004 *00f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000 *00000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000 *000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a *000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000 *0000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff *3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000 *00000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400 *f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000 *000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000000000 *0400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00 *0000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000 *00000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b *2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000 *000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1 *ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000 *0000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000000004 *00f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000 *00000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000 *000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a *000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000 *0000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff *3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000 *00000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400 *f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000 *000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000000000 *0400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00 *0000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000 *00000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b *2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000 *000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1 *ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000 *0000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000000004 *00f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000 *00000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000 *000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a *000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000 *0000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff *3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000 *00000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400 *f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000 *000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000000000 *0400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00 *0000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000 *00000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b *2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000 *000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1 *ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000 *0000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000000004 *00f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000 *00000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000 *000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a *000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000 *0000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff *3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000 *00000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400 *f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000 *000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000000000 *0400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00 *0000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000 *00000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b *2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000 *000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1 *ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000 *0000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000000004 *00f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000 *00000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000 *000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a *000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000 *0000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff *3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000 *00000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400 *f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000 *000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000000000 *0400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00 *0000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000 *00000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b *2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000 *000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1 *ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000 *0000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000000004 *00f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000 *00000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000 *000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a *000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000 *0000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff *3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000 *00000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400 *f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000 *000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000000000 *0400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00 *0000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000 *00000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b *2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000 *000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1 *ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000 *0000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000000004 *00f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000 *00000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000 *000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a *000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000 *0000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff *3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000 *00000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400 *f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000 *000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000000000 *0400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00 *0000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000 *00000400f1ff3b2a000000000000000000000400f1fffe2b000000000000000000000400f1fffe *2b000000000000000000000400f1ff662c000000000000000000000400f1ff4a310000b8760508 *0800000001000d0054310000b87605083100000002000d002724000000000000000000000400f1 *ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff272400000000 *0000000000000400f1ff2724000000000000000000000400f1ff27240000000000000000000004 *00f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff27240000 *00000000000000000400f1ff2724000000000000000000000400f1ff2724000000000000000000 *000400f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff2724 *000000000000000000000400f1ff2724000000000000000000000400f1ff272400000000000000 *0000000400f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff *2724000000000000000000000400f1ff2724000000000000000000000400f1ff27240000000000 *00000000000400f1ff2724000000000000000000000400f1ff2724000000000000000000000400 *f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff2724000000 *000000000000000400f1ff2724000000000000000000000400f1ff272400000000000000000000 *0400f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff272400 *0000000000000000000400f1ff2724000000000000000000000400f1ff27240000000000000000 *00000400f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff27 *24000000000000000000000400f1ff2724000000000000000000000400f1ff2724000000000000 *000000000400f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1 *ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff272400000000 *0000000000000400f1ff2724000000000000000000000400f1ff27240000000000000000000004 *00f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff27240000 *00000000000000000400f1ff2724000000000000000000000400f1ff2724000000000000000000 *000400f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff2724 *000000000000000000000400f1ff2724000000000000000000000400f1ff272400000000000000 *0000000400f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff *2724000000000000000000000400f1ff2724000000000000000000000400f1ff27240000000000 *00000000000400f1ff2724000000000000000000000400f1ff2724000000000000000000000400 *f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff2724000000 *000000000000000400f1ff2724000000000000000000000400f1ff272400000000000000000000 *0400f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff272400 *0000000000000000000400f1ff2724000000000000000000000400f1ff27240000000000000000 *00000400f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff27 *24000000000000000000000400f1ff2724000000000000000000000400f1ff2724000000000000 *000000000400f1ff2724000000000000000000000400f1ff2724000000000000000000000400f1 *ff2724000000000000000000000400f1ff2724000000000000000000000400f1ff272400000000 *0000000000000400f1ff2724000000000000000000000400f1fffa250000000000000000000004 *00f1fffa25000000000000000000000400f1fffa25000000000000000000000400f1ff5d310000 *707805080800000001000d0067310000ec7705080200000002000d007131000044780508240000 *0002000d007c310000f87705080800000001000d0086310000f87705083100000002000d008f31 *0000447805081800000001000d0099310000707805082d00000002000d003b2a00000000000000 *0000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff *3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000 *00000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400 *f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000 *000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000000000 *0400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00 *0000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000 *00000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b *2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000 *000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1 *ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000 *0000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000000004 *00f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000 *00000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000 *000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a *000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000 *0000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff *3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000 *00000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400 *f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000 *000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000000000 *0400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00 *0000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000 *00000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b *2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000 *000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1 *ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000 *0000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000000004 *00f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000 *00000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000 *000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a *000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000 *0000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff *3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000 *00000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400 *f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000 *000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000000000 *0400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00 *0000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000 *00000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b *2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000 *000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1 *ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000 *0000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000000004 *00f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000 *00000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000 *000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a *000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000 *0000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff *3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000 *00000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400 *f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000 *000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000000000 *0400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00 *0000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000 *00000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b *2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000 *000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1 *ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000 *0000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000000004 *00f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000 *00000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000 *000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a *000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000 *0000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff *3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000 *00000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400 *f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000 *000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000000000 *0400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00 *0000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000 *00000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b *2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000 *000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1 *ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000 *0000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000000004 *00f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000 *00000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000 *000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a *000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000 *0000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff *3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000 *00000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400 *f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000 *000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000000000 *0400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00 *0000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000 *00000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b *2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000 *000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1 *ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000 *0000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000000004 *00f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000 *00000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000 *000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a *000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000 *0000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff *3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000 *00000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400 *f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000 *000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000000000 *0400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00 *0000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000 *00000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b *2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000 *000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1 *ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000 *0000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000000004 *00f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000 *00000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000 *000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a *000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000 *0000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff *3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000 *00000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400 *f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000 *000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000000000 *0400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00 *0000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000 *00000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b *2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000 *000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1 *ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000 *0000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000000004 *00f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000 *00000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000 *000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a *000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000 *0000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff *3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000 *00000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400 *f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000 *000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000000000 *0400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00 *0000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000 *00000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b *2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000 *000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1 *ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000 *0000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000000004 *00f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000 *00000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000 *000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a *000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000 *0000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff *3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000 *00000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400 *f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000 *000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000000000000000 *0400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00 *0000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000 *00000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b *2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000 *000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1 *ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a00000000 *0000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000000000000000000004 *00f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a0000 *00000000000000000400f1ff3b2a000000000000000000000400f1ff3b2a000000000000000000 *000400f1ff3b2a000000000000000000000400f1ff662c000000000000000000000400f1fffa25 *000000000000000000000400f1ffa231000000000000000000000400f1ffad3100000000000000 *0000000400f1ff00020000e42808080400000001001800b931000000000000000000000400f1ff *00020000e82808080400000001001800c331000000000000000000000400f1ff00020000ec2808 *080400000001001800cf31000000000000000000000400f1ff00020000f0280808040000000100 *1800db31000000000000000000000400f1ff00020000f42808080400000001001800e631000000 *000000000000000400f1ff00020000f82808080400000001001800f13100000000000000000000 *0400f1ff00020000fc28080804000000010018009413000000000000000000000400f1fffd3100 *007c7c05080c00000002000d0006320000a07b05080e00000002000d0011320000b07b05080b00 *000002000d001c320000bc7b05082e00000002000d0027320000ec7b05080b00000002000d0032 *320000107c05081800000001000d003c320000187c05080800000001000d0046320000187c0508 *1e00000002000d004f320000387c05082700000002000d005a320000747c05081400000001000d *00643200007c7c05080800000001000d009413000000000000000000000400f1ff6e320000887c *05080800000001000d008c320000347e05081000000001000d0096320000347e05082900000002 *000d00a1320000d47c05080e00000002000d00ac320000e47c05081d00000002000d00b6320000 *187d05081400000001000d00c0320000187d05081e00000002000d00cb320000387d0508140000 *0002000d00d63200004c7d05081d00000002000d00e0320000807d05081400000001000d00ea32 *0000807d05081e00000002000d00f5320000b87d05081800000001000d00ff320000c47d05080c *00000001000d0009330000c47d05081e00000002000d0012330000e47d05082900000002000d00 *1d330000247e05081400000001000d009413000000000000000000000400f1ff27330000607e05 *080400000001000d00212d0000688005081000000001000d002b2d000068800508290000000200 *0d0046330000a87e05080800000002000d0051330000b07e05081d00000002000d005b330000e4 *7e05081400000001000d0065330000e47e05082a00000002000d0070330000107f05085f000000 *02000d007b330000707f05081d00000002000d0085330000a47f05081400000001000d008f3300 *00a47f05082a00000002000d009a330000e87f05081800000001000d00a4330000f47f05080c00 *000001000d00ae330000f47f05081e00000002000d00b7330000148005082f00000002000d00c2 *330000588005081400000001000d009413000000000000000000000400f1ff9413000000000000 *000000000400f1ff9413000000000000000000000400f1ff9413000000000000000000000400f1 *ff000200000029080804000000010018009413000000000000000000000400f1ffcc3300000000 *0000000000000400f1ff00020000042908080400000001001800d8330000000000000000000004 *00f1ff00020000082908080400000001001800e333000000000000000000000400f1ff00020000 *0c2908080400000001001800ef33000000000000000000000400f1fffa33000024830508080000 *0001000d0004340000f48205080c00000002000d000d340000308205080b00000002000d001834 *0000448205080800000001000d0022340000448205081400000002000d002b3400006082050808 *00000001000d0035340000608205083600000002000d0040340000988205083f00000002000d00 *4b340000ec8205081400000001000d0055340000f48205080800000001000d005f340000088305 *080800000001000d0069340000088305081200000002000d0072340000248305082a0000000200 *0d00ef33000000000000000000000400f1ff000200001029080804000000010018007d34000000 *000000000000000400f1ff7d34000000000000000000000400f1ff7d3400000000000000000000 *0400f1ff7d34000000000000000000000400f1ff00020000142908080400000001001800893400 *0000000000000000000400f1ff9534000000000000000000000400f1ff00020000182908080400 *000001001800a134000000000000000000000400f1ff000200001c2908080400000001001800ac *34000000000000000000000400f1ffb8340000b48605080800000001000d00c234000054850508 *1500000002000d00cd340000748505080800000001000d00d7340000748505081e00000002000d *00e0340000cc8505082900000002000d00eb340000948505081500000002000d00f6340000c085 *05081400000001000d0000350000cc8505080c00000001000d000a350000008605080800000001 *000d0014350000008605080600000002000d001d350000108605080800000001000d0027350000 *108605084300000002000d00303500005c8605080800000001000d003a3500005c860508500000 *0002000d0043350000b48605080d00000002000d00ac34000000000000000000000400f1ff0002 *0000202908080400000001001800ac34000000000000000000000400f1ff4c350000ac8705080c *00000001000d0056350000c08805080800000001000d0060350000ac8705084400000002000d00 *6b350000f88705080800000001000d0075350000f88705088c00000002000d007e3500008c8805 *080800000001000d00883500008c8805082900000002000d0091350000c0880508090000000200 *0d009a35000000000000000000000400f1ff00020000242908080400000001001800a635000000 *000000000000000400f1ff00020000282908080400000001001800b23500000000000000000000 *0400f1ff000200002c2908080400000001001800be35000000000000000000000400f1ffca3500 *00648a05080400000001000d00f4350000c08b05080c00000001000d00fe350000a08a05080800 *000001000d0008360000a08a05080600000002000d0011360000b08a05080800000001000d001b *360000b08a05084900000002000d0024360000048b05080800000001000d002e360000048b0508 *6200000002000d0037360000708b05080800000001000d0041360000708b05081600000002000d *004a360000948b05080c00000001000d0054360000948b05081e00000002000d005d360000c08b *05082500000002000d00be35000000000000000000000400f1ff00020000302908080400000001 *001800be35000000000000000000000400f1ff66360000bc8d05082400000002000d006f360000 *c08c05080800000001000d0079360000c08c05084200000002000d00823600000c8d0508080000 *0001000d008c3600000c8d05084000000002000d0095360000548d05080800000001000d009f36 *0000548d05083700000002000d00a8360000948d05080800000001000d00b2360000948d05081f *00000002000d00bb360000bc8d05080800000001000d00c536000000000000000000000400f1ff *00020000342908080400000001001800d136000000000000000000000400f1ff00020000382908 *080400000001001800d136000000000000000000000400f1ffdd3600004c900508140000000100 *0d00e7360000348f05081200000002000d00f2360000548f05080c00000001000d00fc36000054 *8f05084100000002000d0007370000a48f05080c00000001000d0011370000a48f05084a000000 *02000d001c370000f08f05084500000002000d002737000000000000000000000400f1ff000200 *003c29080804000000010018003237000000000000000000000400f1ff32370000000000000000 *00000400f1ff3237000000000000000000000400f1ff000200004029080804000000010018003d *37000000000000000000000400f1ff000200004429080804000000010018004937000000000000 *000000000400f1ff000200004829080804000000010018004937000000000000000000000400f1 *ff55370000fc9105080800000001000d004937000000000000000000000400f1ff68370000f892 *05080c00000001000d0072370000f89205087400000002000d007d370000bc9205080800000001 *000d0087370000bc9205082d00000002000d0092370000049405080c00000001000d009c370000 *049405086e00000002000d00a7370000c89305080800000001000d00b1370000c89305082d0000 *0002000d004937000000000000000000000400f1ffbc370000289505080c00000001000d00c637 *0000289505082f00000002000d00d1370000b89405080b00000002000d00dc370000c494050841 *00000002000d00e73700001c9505081400000001000d00f1370000409605081400000001000d00 *fb370000889505080e00000002000d0006380000a09505080800000001000d0010380000a09505 *082f00000002000d001b380000d09505085a00000002000d0026380000f4960508140000000100 *0d0030380000589605080800000002000d003b380000689605080800000001000d004538000068 *9605082f00000002000d0050380000989605084700000002000d00493700000000000000000000 *0400f1ff4937000000000000000000000400f1ff4937000000000000000000000400f1ff493700 *0000000000000000000400f1ff4937000000000000000000000400f1ff49370000000000000000 *00000400f1ff4937000000000000000000000400f1ff4937000000000000000000000400f1ff49 *37000000000000000000000400f1ff4937000000000000000000000400f1ff4937000000000000 *000000000400f1ff4937000000000000000000000400f1ff4937000000000000000000000400f1 *ff4937000000000000000000000400f1ff4937000000000000000000000400f1ff493700000000 *0000000000000400f1ff4937000000000000000000000400f1ff49370000000000000000000004 *00f1ff4937000000000000000000000400f1ff4937000000000000000000000400f1ff5b380000 *00000000000000000400f1ff000200004c29080804000000010018006638000000000000000000 *000400f1ff000200005029080804000000010018007238000000000000000000000400f1ff7d38 *0000c49805080400000001000d007238000000000000000000000400f1ff723800000000000000 *0000000400f1ff000200005429080804000000010018009438000000000000000000000400f1ff *000200005829080804000000010018009f38000000000000000000000400f1ff000200005c2908 *0804000000010018009f38000000000000000000000400f1ff9f38000000000000000000000400 *f1ffab38000000000000000000000400f1ff00020000602908080400000001001800b738000000 *000000000000000400f1ff00020000642908080400000001001800c33800000000000000000000 *0400f1ffc338000000000000000000000400f1ffc338000000000000000000000400f1ffc33800 *0000000000000000000400f1ffce380000289c05080800000001000d00d8380000289c05083100 *000002000d00c338000000000000000000000400f1ffe1380000989c05080800000001000d00eb *380000989c05080500000002000d00c338000000000000000000000400f1ffc338000000000000 *000000000400f1ffc338000000000000000000000400f1ffc338000000000000000000000400f1 *ffc338000000000000000000000400f1ffc338000000000000000000000400f1ffc33800000000 *0000000000000400f1ffc338000000000000000000000400f1ffc3380000000000000000000004 *00f1ffc338000000000000000000000400f1ffc338000000000000000000000400f1ffc3380000 *00000000000000000400f1ffc338000000000000000000000400f1ffc338000000000000000000 *000400f1ffc338000000000000000000000400f1ffc338000000000000000000000400f1ffc338 *000000000000000000000400f1ffc338000000000000000000000400f1ff000200006829080804 *00000001001800f438000000000000000000000400f1ff000200006c2908080400000001001800 *f438000000000000000000000400f1ffff380000e49e05080800000001000d00093900009c9e05 *080800000001000d00133900009c9e05083d00000002000d001c390000e49e0508140000000200 *0d00f438000000000000000000000400f1fff438000000000000000000000400f1fff438000000 *000000000000000400f1fff438000000000000000000000400f1ff253900000000000000000000 *0400f1ff31390000a09f05081400000001000d003b390000709f05080900000002000d00463900 *007c9f05080e00000002000d002539000000000000000000000400f1ff25390000000000000000 *00000400f1ff51390000d89f05080400000001000d006439000020a005081400000001000d006e *390000f89f05080a00000002000d007939000004a005080800000002000d002539000000000000 *000000000400f1ff000200007029080804000000010018008439000000000000000000000400f1 *ff000200007429080804000000010018009039000000000000000000000400f1ff000200007829 *080804000000010018009039000000000000000000000400f1ff9b39000040a105080800000001 *000d00a439000040a105082300000002000d00ac39000000000000000000000400f1ff00020000 *7c2908080400000001001800ac39000000000000000000000400f1ffac39000000000000000000 *000400f1ffac39000000000000000000000400f1ffac39000000000000000000000400f1ffb739 *000000000000000000000400f1ff00020000802908080400000001001800c23900000000000000 *0000000400f1ff00020000842908080400000001001800ce39000000000000000000000400f1ff *00020000882908080400000001001800da39000000000000000000000400f1ff000200008c2908 *080400000001001800da39000000000000000000000400f1ffe539000000000000000000000400 *f1ff00020000902908080400000001001800f139000000000000000000000400f1fff139000000 *000000000000000400f1ff00020000942908080400000001001800fc3900000000000000000000 *0400f1ff073a000078a405080800000001000d00113a00003ca405080800000001000d001b3a00 *003ca405081700000002000d00243a00005ca405080800000001000d002e3a00005ca405081400 *000002000d00373a000078a405081400000002000d00fc39000000000000000000000400f1ff40 *3a0000e8a405080800000001000d004a3a0000aca405080800000001000d00543a0000aca40508 *3100000002000d005d3a0000e8a405081400000002000d00fc39000000000000000000000400f1 *ff00020000982908080400000001001800663a000000000000000000000400f1ff000200009c29 *08080400000001001800663a000000000000000000000400f1ff723a0000cca505080400000001 *000d00923a000004a605080c00000001000d00b13a000088a905080c00000001000d00bb3a0000 *5ca605080200000002000d00c53a0000d0a605082600000002000d00d03a000068a60508080000 *0001000d00da3a000068a605080b00000002000d00e33a00007ca605080800000001000d00ed3a *00007ca605081100000002000d00f63a000098a605080800000001000d00003b000098a605081d *00000002000d00093b0000d0a605081800000001000d00133b0000f8a605080d00000002000d00 *1e3b000008a705080200000002000d00283b00007ca705082600000002000d00333b000014a705 *080800000001000d003d3b000014a705080b00000002000d00463b000028a70508080000000100 *0d00503b000028a705081100000002000d00593b000044a705080800000001000d00633b000044 *a705081d00000002000d006c3b00007ca705081800000001000d00763b0000a4a705082d000000 *02000d00803b0000eca705081800000001000d008a3b0000eca705080d00000002000d00953b00 *00fca705080200000002000d009f3b00002ca805088500000002000d00aa3b000008a805080800 *000001000d00b43b000008a805080b00000002000d00bd3b00002ca805081800000001000d00c7 *3b0000bca805080800000001000d00d13b0000bca805082d00000002000d00da3b0000eca80508 *0c00000002000d00e53b00000ca905081400000001000d00ef3b000018a905080c00000001000d *00f93b000018a905086100000002000d00023c000088a905082a00000002000d00663a00000000 *0000000000000400f1ff0d3c0000b4a905080400000001000d00273c0000000000000000000004 *00f1ff00020000a02908080400000001001800323c000000000000000000000400f1ff00020000 *a42908080400000001001800323c000000000000000000000400f1ff3e3c0000a8aa0508080000 *0001000d00473c0000a8aa05080b00000002000d004f3c000000000000000000000400f1ff4f3c *000000000000000000000400f1ff4f3c000000000000000000000400f1ff4f3c00000000000000 *0000000400f1ff4f3c000000000000000000000400f1ff4f3c000000000000000000000400f1ff *4f3c000000000000000000000400f1ff00020000a829080804000000010018004f3c0000000000 *00000000000400f1ff5a3c0000a8ab05080400000001000d00743c000050ac05080c0000000100 *0d007e3c000044ac05081400000001000d00883c000014ac05081900000002000d00923c000050 *ac05084000000002000d009b3c000000000000000000000400f1ff00020000ac29080804000000 *01001800a63c000000000000000000000400f1ff00020000b02908080400000001001800b23c00 *0000000000000000000400f1ff00020000b42908080400000001001800b23c0000000000000000 *00000400f1ffbe3c000068af05080800000001000d00c83c0000a0ae05080800000001000d00d2 *3c0000a0ae05082f00000002000d00dd3c0000d8ae05080800000001000d00e73c0000d8ae0508 *3200000002000d00f03c000014af05080800000001000d00fa3c000014af05081600000002000d *00033d000034af05080800000001000d000d3d000034af05082900000002000d00163d000068af *05081700000002000d00b23c000000000000000000000400f1ff1f3d000090b005080800000001 *000d00293d0000d0af05080800000001000d00333d0000d0af05080600000002000d003c3d0000 *e0af05080800000001000d00463d0000e0af05081200000002000d004f3d0000fcaf0508080000 *0001000d00593d0000fcaf05085500000002000d00623d00005cb005080800000001000d006c3d *00005cb005082c00000002000d00753d000090b005081700000002000d007e3d00000000000000 *0000000400f1ff00020000b829080804000000010018007e3d000000000000000000000400f1ff *8a3d000000000000000000000400f1ff00020000bc2908080400000001001800963d0000000000 *00000000000400f1ff00020000c02908080400000001001800a13d000000000000000000000400 *f1ff00020000c42908080400000001001800ac3d000000000000000000000400f1ff00020000c8 *2908080400000001001800b83d000000000000000000000400f1ff00020000cc29080804000000 *01001800c43d000000000000000000000400f1ff00020000d02908080400000001001800cf3d00 *0000000000000000000400f1ff00020000d42908080400000001001800da3d0000000000000000 *00000400f1ff00020000d82908080400000001001800e63d000000000000000000000400f1ff00 *020000dc2908080400000001001800f13d000000000000000000000400f1ff00020000e0290808 *0400000001001800ad31000000000000000000000400f1fffd3d0000b0b405080400000001000d *002d3e000000000000000000000400f1ff00020000e42908080400000001001800393e00000000 *0000000000000400f1ff00020000e8290808040000000100180094130000000000000000000004 *00f1ff453e000070b505081000000001000d00683e000074bc05081400000001000d00723e0000 *b4b505080a00000002000d007d3e0000c0b505081d00000002000d00873e0000f4b50508140000 *0001000d00913e0000f4b505080a00000002000d009c3e000000b605084800000002000d00a73e *000048b605084700000002000d00b23e0000a4b605081400000001000d00bc3e0000acb6050808 *00000001000d00c63e0000acb605082a00000002000d00cf3e0000d8b605080700000002000d00 *da3e0000e0b605080500000002000d00e53e0000fcb605081400000001000d00ef3e0000fcb605 *080c00000002000d00f93e00001cb705081400000001000d00033f00001cb70508390000000200 *0d000e3f00006cb705081400000001000d00183f000078b705080c00000001000d00223f000078 *b705084300000002000d002b3f0000bcb705080700000002000d00363f0000c4b7050805000000 *02000d00413f0000e0b705081400000001000d004b3f0000ecb705080c00000001000d00553f00 *00ecb705081200000002000d005e3f000000b805080700000002000d00693f000008b805080500 *000002000d00743f000024b805081400000001000d007e3f000024b805082700000002000d0089 *3f000060b805081400000001000d00933f000060b805080a00000002000d009e3f00006cb80508 *4800000002000d00a93f0000b4b805084700000002000d00b43f000010b905081400000001000d *00be3f000018b905080800000001000d00c83f000018b905082a00000002000d00d13f000044b9 *05080700000002000d00dc3f00004cb905080500000002000d00e73f000068b905081400000001 *000d00f13f000068b905080a00000002000d00fc3f000074b905084800000002000d0007400000 *bcb905084700000002000d001240000018ba05081400000001000d001c40000020ba0508080000 *0001000d002640000020ba05082a00000002000d002f4000004cba05080700000002000d003a40 *000054ba05080500000002000d004540000070ba05081400000001000d004f40000070ba05080f *00000002000d005940000094ba05081400000001000d006340000094ba05083900000002000d00 *6e400000e4ba05081400000001000d0078400000f0ba05080c00000001000d0082400000f0ba05 *082600000002000d008b40000018bb05080700000002000d009640000020bb0508050000000200 *0d00a14000003cbb05081400000001000d00ab40000048bb05080c00000001000d00b540000048 *bb05081200000002000d00be4000005cbb05080700000002000d00c940000064bb050805000000 *02000d00d440000080bb05081400000001000d00de40000080bb05082700000002000d00e94000 *00bcbb05081400000001000d00f3400000c8bb05080c00000001000d00fd400000c8bb05084300 *000002000d00064100000cbc05080700000002000d001141000014bc05080500000002000d001c *41000030bc05081400000001000d00264100003cbc05080c00000001000d00304100003cbc0508 *1200000002000d003941000050bc05080700000002000d004441000058bc05080500000002000d *009413000000000000000000000400f1ff4f41000074bc05081400000001000d006e41000034bf *05081400000001000d0078410000b8bc05080800000002000d0083410000c0bc05080800000002 *000d008e410000d0bc05080800000001000d0098410000d0bc05083900000002000d00a1410000 *18bd05080c00000001000d00ab41000018bd05083000000002000d00b641000048bd0508470000 *0002000d00c0410000a4bd05081400000001000d00ca410000acbd05080800000001000d00d441 *0000acbd05083900000002000d00dd410000f4bd05080c00000001000d00e7410000f4bd050830 *00000002000d00f241000024be05084700000002000d00fc41000080be05081400000001000d00 *0642000080be05086d00000002000d001142000004bf05081400000001000d001b42000004bf05 *081a00000002000d009413000000000000000000000400f1ff9413000000000000000000000400 *f1ff26420000a4c005081400000001000d0030420000c0bf05084800000002000d003b42000008 *c005084700000002000d004642000064c005081400000001000d00504200006cc0050808000000 *01000d005a4200006cc005081100000002000d006342000080c005080700000002000d006e4200 *0088c005080500000002000d009413000000000000000000000400f1ff79420000ccc005080400 *000001000d009413000000000000000000000400f1ff9a42000064c105080400000001000d00ba *42000000000000000000000400f1ff00020000ec2908080400000001001800ef33000000000000 *000000000400f1ff8934000000000000000000000400f1ff00020000f029080804000000010018 *00c542000000000000000000000400f1ff00020000f42908080400000001001800d14200000000 *0000000000000400f1ff00020000f82908080400000001001800dd420000000000000000000004 *00f1ff00020000fc2908080400000001001800e942000000000000000000000400f1ff00020000 *002a08080400000001001800be35000000000000000000000400f1fff54200000cc605080c0000 *0001000d00ff4200000cc605083500000002000d000a4300007cc405080800000001000d001443 *00007cc405083900000002000d001d430000b8c405080c00000002000d0028430000c4c4050805 *00000002000d003243000064c505083c00000002000d003d430000d4c405080800000001000d00 *47430000d4c405081f00000002000d0050430000fcc405080800000001000d005a430000fcc405 *084d00000002000d006343000064c505081800000001000d006d430000a0c50508490000000200 *0d007843000000c605081400000001000d00be35000000000000000000000400f1ff8243000000 *000000000000000400f1ff00020000042a080804000000010018008d4300000000000000000000 *0400f1ff00020000082a080804000000010018003237000000000000000000000400f1ff984300 *0020c705080800000001000d00a2430000e8c605080800000001000d00ac430000e8c605083000 *000002000d00b543000020c705081400000002000d003237000000000000000000000400f1ffbe *4300008cc705080800000001000d00c843000000c805080c00000001000d00d24300008cc70508 *2f00000002000d00dd430000c4c705080800000001000d00e7430000c4c705081300000002000d *00f0430000e0c705080800000001000d00fa430000e0c705081400000002000d000344000000c8 *05081e00000002000d003237000000000000000000000400f1ff0e44000040c805080800000001 *000d001844000040c805082d00000002000d003237000000000000000000000400f1ff21440000 *acc805080800000001000d002b44000090c805080800000001000d003544000090c80508130000 *0002000d003e440000acc805081400000002000d003237000000000000000000000400f1ff3237 *000000000000000000000400f1ff3237000000000000000000000400f1ff493700000000000000 *0000000400f1ff7238000000000000000000000400f1ff7238000000000000000000000400f1ff *474400007cc905080800000001000d005d440000e0c905080c00000001000d0066440000e0c905 *083000000002000d007238000000000000000000000400f1ff9438000000000000000000000400 *f1ff70440000dcca05080c00000001000d0079440000dcca05081a00000002000d008344000000 *000000000000000400f1ff000200000c2a08080400000001001800c33800000000000000000000 *0400f1ff2539000000000000000000000400f1ff8f4400003ccc05081400000001000d00994400 *00e4cb05080800000002000d00a4440000eccb05083900000002000d0025390000000000000000 *00000400f1ffaf4400003ccc05080800000001000d008439000000000000000000000400f1ffc3 *440000b0cc05080400000001000d00dd440000c8cd05081400000001000d00e744000004cd0508 *0800000002000d00f244000018cd05080c00000001000d00fc44000018cd05085100000002000d *00074500006ccd05084800000002000d008439000000000000000000000400f1ff843900000000 *0000000000000400f1ff8439000000000000000000000400f1ff84390000000000000000000004 *00f1ffac39000000000000000000000400f1ff1245000078ce05080800000001000d001b450000 *40ce05080800000001000d002445000040ce05082e00000002000d002c45000078ce0508140000 *0002000d00663a000000000000000000000400f1ff3445000038cf05080800000001000d003e45 *000038cf05080b00000002000d00663a000000000000000000000400f1ff4745000044cf050808 *00000001000d006f450000fccf05080c00000001000d00794500008ccf05080b00000002000d00 *84450000a0cf05080800000001000d008e450000a0cf05080b00000002000d0097450000accf05 *081100000002000d00a2450000d4cf05081400000001000d00ac450000e0cf05080c0000000100 *0d00b6450000e0cf05080f00000002000d00bf450000fccf05080f00000002000d00663a000000 *000000000000000400f1ffc84500000cd005080400000001000d00323c00000000000000000000 *0400f1ffe845000098d005083100000002000d00f045000088d005080800000001000d00f94500 *0088d005080500000002000d000146000098d005080800000001000d004f3c0000000000000000 *00000400f1ff0a4600000cd105080800000001000d00144600000cd105082a00000002000d004f *3c000000000000000000000400f1ff1d46000058d105080800000001000d002746000058d10508 *1a00000002000d004f3c000000000000000000000400f1ff4f3c000000000000000000000400f1 *ff30460000a8d105080800000001000d003a460000a8d105082d00000002000d004f3c00000000 *0000000000000400f1ff4346000030d205080800000001000d004d460000f8d105080800000001 *000d0057460000f8d105082e00000002000d006046000030d205081400000002000d004f3c0000 *00000000000000000400f1ff694600009cd205080800000001000d007346000064d20508080000 *0001000d007d46000064d205082f00000002000d00864600009cd205081400000002000d004f3c *000000000000000000000400f1ff8f46000008d305080800000001000d0099460000d0d2050808 *00000001000d00a3460000d0d205082e00000002000d00ac46000008d305081400000002000d00 *4f3c000000000000000000000400f1ff4f3c000000000000000000000400f1ffb54600001cd305 *080800000001000d00b23c000000000000000000000400f1ffd146000004d40508140000000100 *0d00db460000b8d305080800000002000d00e6460000c8d305080800000001000d00f0460000c8 *d305081400000002000d00f9460000dcd305081200000002000d00b23c00000000000000000000 *0400f1ff04470000e8d405081400000001000d000e47000030d405080b00000002000d00194700 *0044d405080800000001000d002347000044d405083700000002000d002c47000084d405080800 *000001000d003647000084d405081800000002000d003f470000a4d405080800000001000d0049 *470000a4d405081500000002000d0052470000bcd405081500000002000d007e3d000000000000 *000000000400f1ffad31000000000000000000000400f1ff5d470000e8d405081000000001000d *0081470000ecd505080c00000001000d004f3d000044d505080c00000001000d00593d000044d5 *05083c00000002000d00293d00008cd505080c00000001000d008b4700008cd505082a00000002 *000d0096470000b8d505081200000002000d00a0470000e0d505081400000001000d00aa470000 *ecd505084800000002000d00ad31000000000000000000000400f1ffb347000034d60508040000 *0001000d00d747000088d605080800000001000d00e147000088d605083100000002000d009413 *000000000000000000000400f1ffea470000f4d605080400000001000d00941300000000000000 *0000000400f1ff104800009cd705080400000001000d009413000000000000000000000400f1ff *374800000cd805080800000001000d0056480000b0d805081400000001000d006048000044d805 *080a00000002000d006b48000050d805080f00000002000d007648000060d805080b0000000200 *0d008148000080d805081400000001000d008b48000080d805081b00000002000d009413000000 *000000000000000400f1ff96480000b0d805080800000001000d00b548000054d9050814000000 *01000d00bf480000e8d805080a00000002000d00ca480000f4d805080f00000002000d00d54800 *0004d905080b00000002000d00e048000024d905081400000001000d00ea48000024d905081b00 *000002000d009413000000000000000000000400f1fff548000054d905080c00000001000d0019 *49000034da05081400000001000d002349000090d905080a00000002000d009b2800009cd90508 *0800000002000d002e490000a4d905081a00000002000d0038490000d4d905081400000001000d *00b9280000d4d905081200000002000d00e2280000fcd905081400000001000d0042490000fcd9 *05082100000002000d009413000000000000000000000400f1ff4d49000034da05080c00000001 *000d007149000014db05081400000001000d007b49000070da05080a00000002000d0086490000 *7cda05080800000002000d009149000084da05081a00000002000d009b490000b4da0508140000 *0001000d00a5490000b4da05081200000002000d00b0490000dcda05081400000001000d00ba49 *0000dcda05082100000002000d009413000000000000000000000400f1ffc54900004cdb050804 *00000001000d009413000000000000000000000400f1ffe5490000f4db05080400000001000d00 *ac34000000000000000000000400f1ff054a000010de05080800000001000d000f4a0000a0dc05 *080b00000002000d001a4a0000b4dc05080800000001000d00244a0000b4dc05081e0000000200 *0d002d4a00000cdd05082900000002000d00384a0000d4dc05081500000002000d00434a000000 *dd05081400000001000d004d4a00000cdd05080c00000001000d00574a000040dd050808000000 *01000d00614a000040dd05080600000002000d006a4a000050dd05080800000001000d00744a00 *0050dd05086000000002000d007d4a0000b8dd05080800000001000d00874a0000b8dd05085000 *000002000d00904a000010de05081200000002000d004937000000000000000000000400f1ff99 *4a0000b4de05080c00000001000d00a34a0000b4de05086e00000002000d00ae4a000078de0508 *0800000001000d00b84a000078de05082d00000002000d007238000000000000000000000400f1 *ff7238000000000000000000000400f1ffc34a000088df05080400000001000d00d94a0000f4e1 *05081400000001000d00e24a0000d0df05080800000001000d00eb4a0000d0df05083000000002 *000d00f54a000008e005080800000001000d00fe4a000008e005084b00000002000d00084b0000 *60e005080c00000001000d00114b000060e005085100000002000d001b4b0000c0e005080c0000 *0001000d00244b0000c0e005084900000002000d002c4b00000ce105080f00000002000d00364b *000028e105080c00000001000d003f4b000028e105085200000002000d00474b00007ce1050815 *00000002000d00514b0000a8e105081400000001000d005a4b0000b4e105080c00000001000d00 *634b0000b4e105080f00000002000d006b4b0000c4e105081900000002000d0072380000000000 *00000000000400f1ff7238000000000000000000000400f1ffc338000000000000000000000400 *f1ff744b000068e205084000000001000d00924b00000ce405080c00000001000d009c4b0000e4 *e205080c00000001000d00a64b0000fce205080c00000001000d00b04b0000fce2050826000000 *02000d00b94b000030e305080c00000001000d00c34b000030e305083600000002000d00ce4b00 *0068e305080c00000002000d00d94b000074e305080c00000002000d00e44b000080e305080c00 *000002000d00ef4b0000a4e305081800000001000d00f94b0000a4e305080c00000002000d0004 *4c0000b0e305080c00000002000d000f4c0000bce305080c00000002000d001a4c0000c8e30508 *0c00000002000d00254c0000d4e305080c00000002000d00304c000000e405082000000001000d *003a4c00000ce40508b300000002000d00c338000000000000000000000400f1ffc33800000000 *0000000000000400f1ffc338000000000000000000000400f1ffc3380000000000000000000004 *00f1ffc338000000000000000000000400f1ffc338000000000000000000000400f1ffc3380000 *00000000000000000400f1ffc338000000000000000000000400f1ffc338000000000000000000 *000400f1ffc338000000000000000000000400f1ffc338000000000000000000000400f1ffc338 *000000000000000000000400f1ffc338000000000000000000000400f1ffc33800000000000000 *0000000400f1ffc338000000000000000000000400f1ffc338000000000000000000000400f1ff *c338000000000000000000000400f1ff434c0000a8ea05080c00000001000d00614c0000ecec05 *081400000001000d006b4c0000d0ea05080800000002000d00764c0000e0ea0508080000000100 *0d00804c0000e0ea05082f00000002000d008b4c000010eb05083700000002000d00964c00005c *eb05081400000001000d00a04c000068eb05080c00000001000d00aa4c000068eb050830000000 *02000d00b54c000098eb05083a00000002000d00c04c0000d4eb05080800000002000d00cb4c00 *00e4eb05080800000001000d00d54c0000e4eb05082f00000002000d00e04c000014ec05083700 *000002000d00eb4c000060ec05081400000001000d00f54c00006cec05080c00000001000d00ff *4c00006cec05083000000002000d000a4d00009cec05083a00000002000d002539000000000000 *000000000400f1ff154d0000ecec05080800000001000d002539000000000000000000000400f1 *ff304d0000a4ed05080800000001000d003a4d0000a4ed05083700000002000d00434d000020ef *05081400000001000d004d4d00000cee05081200000002000d00584d000020ee05081100000002 *000d00634d00003cee05080800000001000d006d4d00003cee05082f00000002000d00784d0000 *6cee05086100000002000d00834d0000e4ee05081400000001000d008d4d0000e4ee0508270000 *0002000d008439000000000000000000000400f1ff8439000000000000000000000400f1ff8439 *000000000000000000000400f1ff984d0000d4f005081400000001000d00584d00004cef05082b *00000002000d00a24d000080ef05080800000001000d00ac4d000080ef05082700000002000d00 *784d0000a8ef05081e00000002000d00834d0000dcef05081400000001000d00b54d0000dcef05 *081400000002000d00c04d0000f8ef05080800000001000d00ca4d0000f8ef0508220000000200 *0d00d34d00001cf005081e00000002000d00de4d000044f005080800000001000d00e84d000044 *f005082200000002000d00f14d000068f005082400000002000d00fc4d0000a0f0050814000000 *01000d00064e0000a0f005081d00000002000d008439000000000000000000000400f1ff843900 *0000000000000000000400f1ff114e00003cf105080400000001000d00234e0000dcf205081400 *000001000d002d4e000080f105080800000002000d00384e000088f105080800000002000d0042 *4e0000a4f105081400000001000d004c4e0000a4f105084d00000002000d00574e0000f4f10508 *3900000002000d00624e000044f205081400000001000d006c4e000050f205080c00000001000d *00764e000050f205083000000002000d00814e000080f205084800000002000d00e53900000000 *0000000000000400f1ff8c4e0000dcf205080400000001000d00a74e000038f305080800000001 *000d00b14e0000e0f505081000000001000d00bb4e000038f305082900000002000d00c64e0000 *64f305080f00000002000d00d14e000074f305083500000002000d00dc4e0000b4f30508080000 *0001000d00e64e0000b4f305085300000002000d00f14e000008f405085400000002000d00fc4e *000070f405081400000001000d00064f00007cf405080c00000001000d00104f00007cf405082f *00000002000d001b4f0000b4f405080800000001000d00254f0000b4f405084d00000002000d00 *304f00000cf505080800000001000d003a4f00000cf505085900000002000d00454f000068f505 *085400000002000d00504f0000d0f505081400000001000d005a4f0000e0f50508260000000200 *0d00e539000000000000000000000400f1ff663a000000000000000000000400f1ff663a000000 *000000000000000400f1ff654f000038f605081000000001000d007c4f00002cf7050814000000 *01000d00864f000090f605084100000002000d00914f0000d4f605084100000002000d004f3c00 *0000000000000000000400f1ff9c4f000078f705081400000001000d00a64f000044f705080900 *000002000d00b14f000050f705081100000002000d004f3c000000000000000000000400f1ffbc *4f000078f705080400000001000d00d34f0000a4f705080c00000001000d00dd4f0000a4f70508 *0b00000002000d004f3c000000000000000000000400f1ff4f3c000000000000000000000400f1 *ff4f3c000000000000000000000400f1ffe64f0000b0f705080400000001000d00ff4f000010f8 *05080800000001000d000950000064f805081000000001000d001350000010f805082900000002 *000d001e50000048f805080c00000001000d002850000048f805080b00000002000d0031500000 *64f805082400000002000d004f3c000000000000000000000400f1ff3c500000d8f80508080000 *0001000d0046500000a8f805080800000001000d0050500000a8f805082800000002000d005950 *0000d8f805081400000002000d004f3c000000000000000000000400f1ff6250000040f9050808 *00000001000d006c5000000cf905080800000001000d00765000000cf905082b00000002000d00 *7f50000040f905081400000002000d00ad31000000000000000000000400f1ff88500000c0f905 *080800000001000d009250000088f905080800000001000d009c50000088f90508110000000200 *0d00a5500000a4f905080800000001000d00af500000a4f905081400000002000d00b8500000c0 *f905081500000002000d00ad31000000000000000000000400f1ffad3100000000000000000000 *0400f1ffad31000000000000000000000400f1ffad31000000000000000000000400f1ffad3100 *0000000000000000000400f1ffc1500000e8fa05081000000001000d00e2500000dcfb05081400 *000001000d00ec50000040fb05084100000002000d00f750000084fb05084100000002000d0094 *13000000000000000000000400f1ff0251000010fc05080400000001000d009413000000000000 *000000000400f1ff23510000b4fc05080400000001000d004937000000000000000000000400f1 *ff4451000054fe05080c00000001000d004e51000054fe05089e01000002000d005951000070fd *05080800000001000d006351000070fd05082d00000002000d006e510000a8fd05080800000001 *000d0078510000a8fd05082f00000002000d0083510000e0fd05080800000001000d008d510000 *e0fd05082f00000002000d009851000018fe05080800000001000d00a251000018fe05082f0000 *0002000d004937000000000000000000000400f1ff7238000000000000000000000400f1ff7238 *000000000000000000000400f1ffad510000140006080800000001000d00b65100001400060826 *00000002000d007238000000000000000000000400f1ffb738000000000000000000000400f1ff *b738000000000000000000000400f1ffbe510000a40006080400000001000d00d4510000dc0106 *080c00000001000d00de510000d80006080b00000002000d00e9510000ec000608080000000100 *0d00f3510000ec0006081100000002000d00fc5100000c0106080c00000001000d00065200000c *0106083400000002000d000f520000400106082300000002000d001a5200007801060814000000 *01000d0024520000840106080c00000001000d002e520000840106082700000002000d00375200 *00b80106080c00000001000d0041520000b80106081700000002000d004a520000dc0106081500 *000002000d00b738000000000000000000000400f1ff53520000f40106080400000001000d00b7 *38000000000000000000000400f1ff6a5200005c0206080c00000001000d008f52000058050608 *1000000001000d0099520000ac0206080b00000002000d00a4520000b80206080b00000002000d *00af520000c40206080b00000002000d00ba520000d00206080500000002000d00c45200007404 *06083000000002000d00cf520000e00206080800000001000d00d9520000e00206084600000002 *000d00e2520000300306080800000001000d00ec520000300306082a00000002000d00f7520000 *640306080800000001000d0001530000640306083d00000002000d000a530000a4030608340000 *0002000d0015530000d80306081400000002000d0020530000000406081400000001000d002a53 *00000c0406080c00000001000d00345300000c0406082a00000002000d003d530000440406080c *00000001000d0047530000440406081700000002000d0050530000740406081800000001000d00 *5a530000a40406083d00000002000d0065530000e40406081100000002000d006f5300001c0506 *082400000001000d0079530000280506080c00000001000d0083530000280506081e0000000200 *0d008c530000580506082600000002000d00c338000000000000000000000400f1ff9753000080 *0506081000000001000d00b5530000d80706080c00000001000d00bf530000cc0a060814000000 *01000d00c9530000f80506080800000002000d00d4530000080606080800000001000d00de5300 *00080606085100000002000d00e95300005c0606083700000002000d00f4530000a80606081400 *000001000d00fe530000b40606080c00000001000d0008540000b40606083000000002000d0013 *540000f00606080c00000001000d001d540000f00606085000000002000d002854000040070608 *0800000002000d0033540000540706080c00000001000d003d540000540706083000000002000d *0048540000840706083100000002000d0053540000cc0706081400000001000d005d540000d807 *06085700000002000d0068540000300806080800000002000d0073540000440806080c00000001 *000d007d540000440806083000000002000d0088540000800806080c00000001000d0092540000 *800806085e00000002000d009d540000e00806083a00000002000d00a8540000280906080c0000 *0001000d00b2540000280906083000000002000d00bd540000640906080c00000001000d00c754 *0000640906085e00000002000d00d2540000c40906083a00000002000d00dd540000140a060814 *00000001000d00e7540000140a06080c00000002000d00f2540000340a06081400000001000d00 *fc540000340a06080f00000002000d0007550000500a06080c00000001000d0011550000500a06 *083000000002000d001c550000800a06083700000002000d00c338000000000000000000000400 *f1ff27550000cc0a06080800000001000d0042550000080d06081400000001000d004c55000008 *0b06080f00000002000d0057550000200b06080800000001000d0061550000200b060844000000 *02000d006a5500006c0b06080800000001000d00745500006c0b06083000000002000d007f5500 *00a80b06080c00000001000d0089550000a80b06085100000002000d0094550000040c06080800 *000001000d009e550000040c06081500000002000d00a7550000240c06080800000001000d00b1 *550000240c06083000000002000d00bc550000600c06080c00000001000d00c6550000600c0608 *7b00000002000d00cf550000dc0c06081500000002000d00c338000000000000000000000400f1 *ffc338000000000000000000000400f1ffc338000000000000000000000400f1ffc33800000000 *0000000000000400f1ffc338000000000000000000000400f1ffc3380000000000000000000004 *00f1ffc338000000000000000000000400f1ffc338000000000000000000000400f1ffc3380000 *00000000000000000400f1ffc338000000000000000000000400f1ffc338000000000000000000 *000400f1ffc338000000000000000000000400f1ffc338000000000000000000000400f1ffc338 *000000000000000000000400f1ffc338000000000000000000000400f1ff253900000000000000 *0000000400f1ff2539000000000000000000000400f1ffda550000d01006080800000001000d00 *2539000000000000000000000400f1ff8439000000000000000000000400f1ff84390000000000 *00000000000400f1ff8439000000000000000000000400f1fff5550000c8130608140000000100 *0d00ff550000f01106084600000002000d000a560000401206080800000001000d001456000040 *1206084500000002000d001d560000881206081500000002000d0028560000b412060814000000 *01000d0032560000bc1206080800000001000d003c560000bc1206080f00000002000d00455600 *00cc1206081c00000002000d0050560000e81206084400000002000d00282a0000341306080800 *000001000d00322a0000341306084300000002000d005b560000781306081500000002000d0066 *560000a41306081400000001000d0070560000a41306080f00000002000d008439000000000000 *000000000400f1ff7b560000701606081400000001000d0085560000fc1306080800000001000d *008f560000fc1306085500000002000d00985600005c1406080800000001000d00a25600005c14 *06081500000002000d00ab560000741406085e00000002000d00b6560000dc1406080800000001 *000d00c0560000dc1406084200000002000d00c9560000201506081500000002000d00d4560000 *4c1506081400000001000d00de5600004c1506081400000002000d00e956000068150608080000 *0001000d00f3560000681506084200000002000d00fc560000ac1506081200000002000d000757 *0000c81506080800000001000d0011570000c81506083a00000002000d001a5700000416060824 *00000002000d00255700003c1606081400000001000d002f5700003c1606082000000002000d00 *8439000000000000000000000400f1ffe539000000000000000000000400f1ffe5390000000000 *00000000000400f1ffe539000000000000000000000400f1ffe539000000000000000000000400 *f1ffe539000000000000000000000400f1ffe539000000000000000000000400f1ffe539000000 *000000000000000400f1ff2e310000501706080800000001000d003a5700005017060851000000 *02000d00e539000000000000000000000400f1ff45570000d81706080800000001000d004f5700 *00d81706081200000002000d004f3c000000000000000000000400f1ff585700000c1806080800 *000001000d00625700000c1806080b00000002000d00ad31000000000000000000000400f1ff6b *5700004c1806080800000001000d00755700004c1806080b00000002000d00ad31000000000000 *000000000400f1ffb738000000000000000000000400f1ff7e570000581806080800000001000d *00a25700008c1906080c00000001000d00ac5700001c1906080c00000001000d00b65700001c19 *06086300000002000d00bf5700008c1906080900000002000d00b7380000000000000000000004 *00f1ffb738000000000000000000000400f1ffc8570000981906080400000001000d00b7380000 *00000000000000000400f1ffb738000000000000000000000400f1ffe9570000c8190608040000 *0001000d00b738000000000000000000000400f1ff0b580000241c06081800000001000d001558 *0000481a06080500000002000d001f580000241c06083000000002000d002a580000581a060808 *00000001000d0034580000581a06083500000002000d003f580000981a06080800000001000d00 *49580000981a06085c00000002000d0052580000fc1a06080800000001000d005c580000fc1a06 *080c00000002000d0065580000141b06080c00000001000d006f580000141b0608330000000200 *0d007a580000501b06080800000001000d0084580000501b06080900000002000d008d58000064 *1b06080800000001000d0097580000641b06081b00000002000d00a0580000881b060808000000 *01000d00aa580000881b06086200000002000d00b3580000f41b06080800000001000d00bd5800 *00f41b06081800000002000d00b738000000000000000000000400f1ffc6580000541c06080c00 *000001000d00dc580000f81c06080c00000001000d00e6580000c01c06080c00000001000d00f0 *580000c01c06082900000002000d00f9580000f81c06080900000002000d00b738000000000000 *000000000400f1ff02590000041d06080c00000001000d0025590000701f06080c00000001000d *002f5900009c1d06080200000002000d0039590000181e06085400000002000d0044590000a81d *06080800000001000d004e590000a81d06085700000002000d0057590000181e06081800000001 *000d0061590000741e06080800000001000d006b590000741e06084e00000002000d0074590000 *d01e06080c00000001000d007e590000d01e06087200000002000d0087590000501f06080c0000 *0001000d0091590000501f06081100000002000d009a590000701f06082c00000002000d00c338 *000000000000000000000400f1ffa35900009c1f06085000000001000d00c1590000482006080c *00000001000d00cb590000142006080800000002000d00d5590000302006081400000001000d00 *df590000302006080c00000001000d00e959000048200608b900000002000d00c3380000000000 *00000000000400f1ffc338000000000000000000000400f1ff2539000000000000000000000400 *f1ff8439000000000000000000000400f1ff8439000000000000000000000400f1fff259000010 *2406081400000001000d00fc590000a82106085600000002000d00075a00000822060808000000 *01000d00115a0000082206084200000002000d001a5a00004c2206081500000002000d00255a00 *00782206081400000001000d002f5a0000802206080800000001000d00395a0000802206083c00 *000002000d00425a0000bc2206082e00000002000d004d5a0000f42206080800000001000d0057 *5a0000f42206084200000002000d00605a0000382306081200000002000d006b5a000054230608 *0800000001000d00755a0000542306085000000002000d007e5a0000a42306082400000002000d *00895a0000dc2306081400000001000d00935a0000dc2306082000000002000d00e53900000000 *0000000000000400f1ff9e5a0000542506080800000001000d00a85a0000e82406080800000001 *000d00b25a0000942406080800000001000d00bc5a0000942406084900000002000d00c75a0000 *e82406086100000002000d00d25a0000542506082f00000002000d004f3c000000000000000000 *000400f1ffdd5a0000ec2506080800000001000d00e75a0000ec2506083a00000002000d00ac3d *000000000000000000000400f1ffdd42000000000000000000000400f1fff05a00002427060808 *00000001000d00fa5a0000c42606080900000002000d00055b0000d82606080800000001000d00 *0f5b0000d82606081f00000002000d00185b0000f82606080f00000002000d00235b00001c2706 *081400000001000d002d5b0000242706081800000002000d00b738000000000000000000000400 *f1ff365b0000f42706081800000001000d00405b0000702806081800000001000d004a5b0000c4 *2706080200000002000d00545b0000f42706082100000002000d005f5b0000d027060808000000 *01000d00695b0000d02706080b00000002000d00725b0000182806080200000002000d007c5b00 *00702806084400000002000d00875b0000242806080800000001000d00915b0000242806083100 *000002000d00b738000000000000000000000400f1ffb738000000000000000000000400f1ffb7 *38000000000000000000000400f1ffb738000000000000000000000400f1ff9a5b000098290608 *0400000001000d00b65b0000002c06080c00000001000d00c05b0000dc2906080800000001000d *00ca5b0000dc2906086400000002000d00d35b0000482a06080800000001000d00dd5b0000482a *06081100000002000d00e65b0000642a06080800000001000d00f05b0000642a06084200000002 *000d00fb5b0000a82a06080200000002000d00055c0000d82a06082100000002000d00105c0000 *b82a06080c00000001000d001a5c0000b82a06080800000002000d00235c0000d82a0608180000 *0001000d002d5c0000042b06080800000001000d00375c0000042b06083a00000002000d00405c *00004c2b06080c00000001000d004a5c00004c2b06084000000002000d00535c0000982b06080c *00000001000d005d5c0000982b06085b00000002000d00665c0000002c06081200000002000d00 *b738000000000000000000000400f1ffb738000000000000000000000400f1ffb7380000000000 *00000000000400f1ff6f5c00009c2c06080800000001000d00795c0000482c0608080000000100 *0d00835c0000482c06084900000002000d008c5c00009c2c06082d00000002000d00b738000000 *000000000000000400f1ff955c0000382d06080800000001000d009f5c0000382d060833000000 *02000d00b738000000000000000000000400f1ffa85c00006c2d06080400000001000d00c25c00 *00e82e06080800000001000d00cc5c0000b02d06080800000001000d00d65c0000b02d06083c00 *000002000d00e15c0000f42d06080800000001000d00eb5c0000f42d06085100000002000d00f4 *5c0000502e06080800000001000d00fe5c0000502e06081500000002000d00075d0000702e0608 *0800000001000d00115d0000702e06081200000002000d001a5d00008c2e06080800000001000d *00245d00008c2e06085400000002000d002d5d0000e82e06081800000002000d00b73800000000 *0000000000000400f1ffb738000000000000000000000400f1ff365d0000d82f06080800000001 *000d00405d0000d82f06083300000002000d00b738000000000000000000000400f1ff495d0000 *ec3006080800000001000d00535d0000883006080800000001000d005d5d000088300608590000 *0002000d00665d0000ec3006084600000002000d00b738000000000000000000000400f1ff6f5d *0000343106080400000001000d00835d0000dc3106080c00000001000d008d5d00007031060808 *00000001000d00975d0000703106086000000002000d00a05d0000dc3106083b00000002000d00 *c338000000000000000000000400f1ffc338000000000000000000000400f1ffc3380000000000 *00000000000400f1ffc338000000000000000000000400f1ffc338000000000000000000000400 *f1ffc338000000000000000000000400f1ffc338000000000000000000000400f1ffc338000000 *000000000000000400f1ffc338000000000000000000000400f1ffc33800000000000000000000 *0400f1ffc338000000000000000000000400f1ffc338000000000000000000000400f1ffc33800 *0000000000000000000400f1ffc338000000000000000000000400f1ffc3380000000000000000 *00000400f1ffc338000000000000000000000400f1ffc338000000000000000000000400f1ffc3 *38000000000000000000000400f1ffc338000000000000000000000400f1ffc338000000000000 *000000000400f1ffc338000000000000000000000400f1ffc338000000000000000000000400f1 *ffc338000000000000000000000400f1ffc338000000000000000000000400f1ffc33800000000 *0000000000000400f1ffc338000000000000000000000400f1ffc3380000000000000000000004 *00f1ffc338000000000000000000000400f1ffc338000000000000000000000400f1fff4380000 *00000000000000000400f1ffa95d0000003c06080800000001000d00b35d0000003c0608240000 *0002000d00e539000000000000000000000400f1ffe539000000000000000000000400f1ffac3d *000000000000000000000400f1ffdd42000000000000000000000400f1ffdd4200000000000000 *0000000400f1ffbc5d0000c03d06080800000001000d00c65d0000603d06080800000001000d00 *d05d0000603d06085800000002000d00db5d0000c03d06084600000002000d00dd420000000000 *00000000000400f1ffe45d0000c83e06080800000001000d00ee5d00003c3e0608090000000200 *0d00f95d0000503e06080800000001000d00035e0000503e06080800000002000d000c5e000060 *3e06080800000001000d00165e0000603e06083a00000002000d001f5e00009c3e06080f000000 *02000d002a5e0000c03e06081400000001000d00345e0000c83e06081800000002000d00b73800 *0000000000000000000400f1ff3d5e0000003f06080800000001000d00475e0000003f06082600 *000002000d00b738000000000000000000000400f1ffb738000000000000000000000400f1ff50 *5e0000384006080800000001000d005a5e0000903f06082d00000002000d00655e0000c03f0608 *2d00000002000d00705e0000044006081400000001000d007a5e0000044006080f00000002000d *00855e0000144006080500000002000d00905e0000304006081400000001000d009a5e00003840 *06083000000002000d00b738000000000000000000000400f1ffa55e0000684006080400000001 *000d00ca5e0000904106080c00000001000d00d45e00009c4006081400000002000d00df5e0000 *b84006080800000001000d00e95e0000b84006081100000002000d00f25e0000d84006080c0000 *0001000d00fc5e0000d84006082e00000002000d00055f0000084106080c00000002000d00105f *0000284106081400000001000d001a5f0000344106080c00000001000d00245f0000344106082a *00000002000d002d5f00006c4106080c00000001000d00375f00006c4106081700000002000d00 *405f0000904106081500000002000d00b738000000000000000000000400f1ffb7380000000000 *00000000000400f1ffdd42000000000000000000000400f1ff495f00005c440608180000000100 *0d00535f0000f04206080500000002000d005d5f00005c4406083000000002000d00685f000000 *4306080800000001000d00725f000000430608a300000002000d007d5f0000ac43060808000000 *01000d00875f0000ac4306085600000002000d00905f00000c4406080800000001000d009a5f00 *000c4406081200000002000d00a35f0000284406080800000001000d00ad5f0000284406081b00 *000002000d00c338000000000000000000000400f1ffc338000000000000000000000400f1ffc3 *38000000000000000000000400f1ffc338000000000000000000000400f1ffc338000000000000 *000000000400f1ffc338000000000000000000000400f1ffc338000000000000000000000400f1 *ffc338000000000000000000000400f1ffc338000000000000000000000400f1ffc33800000000 *0000000000000400f1ffc338000000000000000000000400f1ffc3380000000000000000000004 *00f1ffc338000000000000000000000400f1ffc338000000000000000000000400f1ffc3380000 *00000000000000000400f1ffc338000000000000000000000400f1ffc338000000000000000000 *000400f1ffc338000000000000000000000400f1ffc338000000000000000000000400f1ffc338 *000000000000000000000400f1ffc338000000000000000000000400f1ffc33800000000000000 *0000000400f1ffc338000000000000000000000400f1ffc338000000000000000000000400f1ff *c338000000000000000000000400f1ffc338000000000000000000000400f1ffc3380000000000 *00000000000400f1ffc338000000000000000000000400f1ffc338000000000000000000000400 *f1ffc338000000000000000000000400f1ffdd42000000000000000000000400f1ffb65f000000 *000000000000000400f1ffc15f000000000000000000000400f1ffce5f00000000000000000000 *0400f1ffd95f00005c4a06080600000002000d00e25f00000c1908080400000001001100fb5f00 *0000000000000000000400f1ff0260000000000000000000000400f1ff0b600000102a08080400 *0000010018001c60000000000000000000000400f1ff29600000142a0808040000000100180037 *600000182a08080c0000000100180045600000242a080804000000010018005060000000000000 *000000000400f1ff5b600000282a080804000000010018006b60000000000000000000000400f1 *ff7660000010190808040000000100110085600000502a080804000000010018009d6000005c59 *0608ea04000002000d00a6600000156b0608dd00000002000d00b7600000582a08080400000001 *001800c3600000c86306085801000002000d00d7600000a76706084400000002000d00ef600000 *542a080804000000010018000a6100006f6106082500000002000d001a610000b8620608260000 *0002000d0026610000906306081c00000002000d002f6100005c2a080804000000010018003b61 *0000206506083000000002000d004c610000af650608e601000002000d005a610000f26b0608d6 *00000002000d006e610000c86c06085000000002000d008061000000000000000000000400f1ff *8961000000000000000000000400f1ff93610000842a080804000000010018009c610000882a08 *080400000001001800a66100008c2a08080400000001001800b96100008d7106087b0000000200 *0d00c7610000087206080e00000002000d00d461000016720608a300000002000d00e4610000a0 *2a08088000000001001800f0610000202b08088000000001001800fd6100001d76060822000000 *02000d000e62000000000000000000000400f1ff17620000a42b08080400000001001800276200 *00a82b0808040000000100180030620000ac2b0808040000000100180041620000127706086a00 *000002000d005462000000000000000000000400f1ff5c620000b02b080804000000010018006b *620000b42b080804000000010018007c620000b82b080804000000010018008f620000bc2b0808 *04000000010018009f620000c02b08080400000001001800ac620000c42b080804000000010018 *00bc620000c82b08080400000001001800cd620000cc2b08080400000001001800d9620000d02b *08080400000001001800e8620000d42b08080400000001001800f8620000d82b08080400000001 *00180005630000dc2b0808040000000100180015630000e02b0808080000000100180022630000 *e82b0808080000000100180030630000f02b080804000000010018003e630000f42b0808040000 *00010018004a630000f82b0808040000000100180059630000fc2b080804000000010018006663 *0000002c0808040000000100180073630000042c0808040000000100180080630000082c080804 *00000001001800916300000c2c08080400000001001800a1630000102c08080400000001001800 *af630000787b06081f00000002000d00b8630000d67b06081700000002000d00c3630000182c08 *080400000001001800d1630000142c08080400000001001800da63000000000000000000000400 *f1ffe463000000000000000000000400f1fff363000000000000000000000400f1fffd6300008b *9106080100000002000d000e640000539106083800000002000d001f6400002b91060828000000 *02000d002e64000000000000000000000400f1ff3d6400003c2c080804000000010018004a6400 *0000000000000000000400f1ff52640000402c0808040000000100180067640000109406082d00 *000002000d007364000000000000000000000400f1ff7a64000000000000000000000400f1ff89 *64000000000000000000000400f1ff9664000000000000000000000400f1ff9f64000000000000 *000000000400f1ffab64000000000000000000000400f1ffbb64000000000000000000000400f1 *ffc464000000000000000000000400f1ffd164000018be06080200000002000d00de6400001cbe *06081900000002000d00ed64000038be06080200000002000d00fa6400003cbe06081900000002 *000d000965000058be06080200000002000d00166500005cbe06081900000002000d0025650000 *78be06080200000002000d00326500007cbe06081900000002000d004165000098be0608020000 *0002000d004e6500009cbe06081900000002000d005d650000b8be06080200000002000d006b65 *0000bcbe06081900000002000d007b650000d8be06080200000002000d0089650000dcbe060819 *00000002000d0099650000f8be06080200000002000d00a7650000fcbe06081900000002000d00 *b765000018bf06080200000002000d00c56500001cbf06081900000002000d00d565000038bf06 *080200000002000d00e46500003cbf06081900000002000d00f565000058bf0608020000000200 *0d00046600005cbf06081900000002000d001566000078bf06080200000002000d00246600007c *bf06081900000002000d003566000098bf06080200000002000d00446600009cbf060819000000 *02000d0055660000b8bf06080200000002000d0064660000bcbf06081900000002000d00756600 *00d8bf06080200000002000d0084660000dcbf06081900000002000d0095660000f8bf06080200 *000002000d00a4660000fcbf06081900000002000d00b566000018c006080200000002000d00c4 *6600001cc006081900000002000d00d566000038c006080200000002000d00e56600003cc00608 *1900000002000d00f766000058c006080200000002000d00086700005cc006081900000002000d *001b67000078c006080200000002000d002d6700007cc006081900000002000d004167000098c0 *06080200000002000d00546700009cc006081900000002000d0069670000b8c006080200000002 *000d007d670000bcc006081900000002000d009367000000000000000000000400f1ffa0670000 *00000000000000000400f1ffb267000000d406080b00000002000d00c967000048d40608110000 *0002000d00df67000000000000000000000400f1ffea67000000000000000000000400f1fffd67 *00001ceb06081200000002000d00146800000aeb06081200000002000d002b680000f8ea060812 *00000002000d0042680000e6ea06081200000002000d0059680000d4ea06081200000002000d00 *70680000c2ea06081200000002000d0087680000b0ea06081200000002000d009e6800009eea06 *081200000002000d00b56800008cea06081200000002000d00ca6800003ceb0608120000000200 *0d00e46800005ceb06081200000002000d00fb6800007ceb06081d00000002000d0011690000a8 *eb06082900000002000d0027690000e0eb06081d00000002000d003d6900000cec06080f000000 *02000d005269000028ec06080500000002000d006969000064ec06080500000002000d00776900 *0074ec06080600000002000d008c69000084ec06080900000002000d009c69000098ec06080900 *000002000d00ac690000acec06080900000002000d00bc690000c0ec06080900000002000d00cc *690000d4ec06080900000002000d00dc690000e8ec06080900000002000d00ec690000fcec0608 *0900000002000d00fc69000010ed06080900000002000d000c6a000024ed06080500000002000d *00216a000034ed06080500000002000d00346a000044ed06080500000002000d00496a000054ed *06080500000002000d00636a000064ed06086f00000002000d00776a0000dced06082300000002 *000d008e6a000008ee06086f00000002000d00a66a000080ee06080d00000002000d00b46a0000 *98ee06080d00000002000d00c86a0000b0ee06080d00000002000d00d76a0000c8ee06080d0000 *0002000d00eb6a0000e0ee06080d00000002000d00026b0000f8ee06080d00000002000d00146b *000010ef06080d00000002000d002a6b000028ef06080d00000002000d003e6b000040ef06080d *00000002000d00536b000058ef06080d00000002000d006b6b000070ef06080d00000002000d00 *826b000088ef06080d00000002000d00956b0000a0ef06080d00000002000d00b26b0000b8ef06 *080d00000002000d00cb6b0000d0ef06080d00000002000d00df6b0000e8ef06080d0000000200 *0d00f66b000000f006080d00000002000d00146c000018f006080d00000002000d00266c000000 *000000000000000400f1ff346c000000000000000000000400f1ff446c000024f106080c000000 *01000d005b6c000024f106082e00000002000d00716c0000b8f106080c00000001000d00886c00 *00b8f106082e00000002000d009e6c00004cf206080c00000001000d00b56c00004cf206082e00 *000002000d00cb6c0000e0f206080c00000001000d00e26c0000e0f206082e00000002000d00f8 *6c000074f306080c00000001000d000f6d000074f306082e00000002000d00256d000008f40608 *0c00000001000d003c6d000008f406082e00000002000d00526d00009cf406080c00000001000d *00696d00009cf406082e00000002000d007f6d000030f506080c00000001000d00966d000030f5 *06082e00000002000d00ac6d0000c4f506080c00000001000d00c36d0000c4f506082e00000002 *000d00d96d000058f606080c00000001000d00f06d000058f606082e00000002000d00066e0000 *ecf606080c00000001000d001e6e0000ecf606082e00000002000d00356e000080f706080c0000 *0001000d004d6e000080f706082e00000002000d00646e000014f806080c00000001000d007c6e *000014f806082e00000002000d00936e0000a8f806080c00000001000d00ab6e0000a8f806082e *00000002000d00c26e00003cf906080c00000001000d00da6e00003cf906082e00000002000d00 *f16e0000d0f906080c00000001000d00096f0000d0f906082e00000002000d00206f000064fa06 *080c00000001000d00396f000064fa06080800000002000d00516f0000a0fa06080c0000000100 *0d006a6f0000a0fa06080800000002000d00826f0000dcfa06080c00000001000d009b6f0000dc *fa06080800000002000d00b36f000018fb06080c00000001000d00cc6f000018fb060808000000 *02000d00e46f000054fb06080c00000001000d00fd6f000054fb06080800000002000d00157000 *0090fb06080c00000001000d002e70000090fb06080800000002000d0046700000ccfb06080c00 *000001000d005f700000ccfb06080800000002000d007770000008fc06080c00000001000d0090 *70000008fc06080800000002000d00a870000044fc06080c00000001000d00c170000044fc0608 *0800000002000d00d970000080fc06080c00000001000d00f270000080fc06080800000002000d *000a710000bcfc06080c00000001000d0024710000bcfc06080800000002000d003d710000f8fc *06080c00000001000d0057710000f8fc06080800000002000d007071000034fd06080c00000001 *000d008a71000034fd06080800000002000d00a371000070fd06080c00000001000d00bd710000 *70fd06080800000002000d00d6710000acfd06080c00000001000d00f0710000acfd0608080000 *0002000d0009720000e8fd06080c00000001000d0023720000e8fd06080800000002000d003c72 *000000000000000000000400f1ff477200003c0607080600000002000d00597200000000000000 *0000000400f1ff66720000442c0808040000000100180070720000b1070708dd00000002000d00 *7f7200002e0a07082a00000002000d008a720000930907087500000002000d0098720000000000 *00000000000400f1ffa5720000580a07081200000002000d00b472000000000000000000000400 *f1ffc372000000000000000000000400f1ffc8720000c82208080400000001001100d772000048 *2c08080400000001001800ec720000940a07086800000002000d00fb720000502c080804000000 *01001800fd7200006c2c0808040000000100180008730000542c08080400000001001800117300 *004c2c0808040000000100180020730000024007082000000002000d0032730000682c08080400 *00000100180040730000702c0808040000000100180052730000742c080804000000010018005d *730000782c08080400000001001800657300007c2c0808040000000100180070730000653f0708 *6900000002000d007f730000db380708ca00000002000d0096730000582c080804000000010018 *009f730000d92707080e08000002000d00a8730000a5390708ae01000002000d00be730000031c *07081600000002000d00c87300001d1b07082400000002000d00db7300005c2c08080400000001 *001800e6730000602c08080400000001001800f6730000533b0708a201000002000d0006740000 *802c080804000000010018001c740000842c080804000000010018002b740000e72f0708890600 *0002000d003f74000045190708d801000002000d0056740000ce3f07083400000002000d006e74 *0000121d07087d08000002000d0077740000191c07087b00000002000d0080740000941c07087e *00000002000d008a740000642c08080400000001001800997400008f2507088901000002000d00 *ad740000292707085e00000002000d00c7740000872707085200000002000d00d37400004c3d07 *081902000002000d00e2740000f53c07085700000002000d00f8740000882c0808040000000100 *180004750000703607086b02000002000d001175000076400708aa00000002000d002575000020 *4107082a02000002000d003875000000000000000000000400f1ff4475000074430708bd000000 *02000d0052750000314407082f04000002000d005f750000604807080e01000002000d006a7500 *006e4907084303000002000d007b750000b14c07083800000002000d008675000083530708c106 *000002000d0091750000e94c07080901000002000d00a4750000f24d07082902000002000d00b8 *7500001b5007088800000002000d00cd750000495307083a00000002000d00d475000000000000 *000000000400f1ffdb750000445a07081c00000002000d00e4750000605a07084500000002000d *00ec750000a55a07081100000002000d00f8750000b65a07081e00000002000d0003760000d45a *07082200000002000d0010760000f65a07083801000002000d00177600008c2c08080400000001 *00180020760000a05c07085f00000002000d002e760000ff5c07081300000002000d003b760000 *1d5f07088900000002000d004b76000000000000000000000400f1ff59760000cc2208081c0000 *00010011006776000000000000000000000400f1ff70760000507007084000000002000d008776 *000000000000000000000400f1ff907600007a7107087a00000002000d0098760000f471070871 *00000002000d00a8760000942c08080400000001001800b776000000000000000000000400f1ff *c276000000230808b000000001001100cd760000bb730708a600000002000d00db760000117c07 *08f400000002000d00e2760000057d07081d00000002000d00ed760000e97a0708280100000200 *0d00fd76000000000000000000000400f1ff0777000000000000000000000400f1ff0777000000 *000000000000000400f1ff0777000000000000000000000400f1ff077700000000000000000000 *0400f1ff0777000000000000000000000400f1ff1177000000000000000000000400f1ff1c7700 *0084e204086300000012000d0047770000d418080804000000110011006877000048f907080400 *000011001100aa770000ec0f08080400000011001100cb77000094f2070804000000110011000d *7800001c5706081f00000012000d001a78000028e8070804000000110011004e78000010fb0508 *2500000012000d0071780000e4e405080800000011000d009778000030f0070804000000110011 *00d97800008cc404085800000012000d0022790000dc0608080400000011001100647900001cc9 *05080800000011000d007f790000441208080400000011001100a379000070ff06084700000012 *000d00b6790000040308080400000011001100f679000010c004080700000012000d00267a0000 *48e605080800000011000d00427a00003cfc07080400000011001100847a00000c0805080c0000 *0012000d00be7a000018f607080400000011001100017b00000000000058000000120000000c7b *0000dce9070804000000110011004d7b00007c0a080804000000110011008f7b0000ec0e080804 *00000011001100c87b0000dcf5070804000000110011000b7c0000382e08080400000011001800 *1d7c0000a01708080400000011001100377c00002cef05082000000012000d00497c000000d406 *080c00000011000d00617c00008cc404080800000011000d00a97c00008ce70608790000001200 *0d00bf7c000094fe07080400000011001100017d000004c404080800000011000d00437d0000e4 *0f08080400000011001100617d0000248505083000000012000d00877d0000cc5706088e010000 *12000d009c7d0000d4f107080400000011001100de7d0000c8cb05080300000012000d00087e00 *005cf106080800000011000d001b7e0000acf5070804000000110011005d7e0000a0e507080400 *000011001100a87e000028ec07080400000011001100ea7e0000c410080804000000110011000e *7f00000000000023000000120000001e7f000000eb04080500000012000d005c7f00003bea0608 *0600000012000d00757f000040e707080400000011001100b97f00002802080804000000110011 *00fa7f000098ee06080800000011000d000d8000005c07080804000000110011004f80000010f5 *070804000000110011009180000094d406084f00000012000d00a5800000840608080400000011 *001100e7800000d4040808040000001100110028810000f8f4070804000000110011006a810000 *bc140808040000001100110089810000943405085f00000012000d00c0810000ac800508080000 *0011000d00e0810000eb5406080c00000012000d00e9810000004605080c00000011000d001d82 *0000000000000000000012000000258200000c0c080804000000110011006782000020ff06080c *00000011000d0079820000082006080c00000011000d009882000098c504080c00000012000d00 *c7820000480b05080300000012000d000083000080fd06080800000011000d0016830000e0fe04 *080800000011000d004d830000b8e5070804000000110011008f830000399006083c0000001200 *0d009f83000054ff07080400000011001100e1830000bc300508a900000012000d001684000048 *9d05080300000012000d0038840000bc8d06081800000012000d00428400000c0d080804000000 *1100110084840000084c06081b00000012000d008f840000108105080b00000012000d00aa8400 *00ec8906089d03000012000d00b68400001cda0408b300000012000d00e5840000001008080400 *000011001100ff84000004d705080c00000011000d0026850000e4f90708040000001100110068 *850000841905080300000012000d00a785000080c806080900000012000d00ba85000000020808 *0400000011001100fb8500002001080804000000110011003c8600001c04080804000000110011 *007d860000fce707080400000011001100b7860000b0fa06080800000011000d00cc86000080ee *06080800000011000d00d986000080f4070804000000110011001b870000a03606080800000011 *000d0032870000c813080804000000110011004d870000189d05080300000012000d0078870000 *e49905080700000012000d008d870000fc720708bf00000012000d00a2870000d80d05080c0000 *0011000d00db87000058eb04085d00000012000d001388000070e7070804000000110011005988 *0000009f05080300000012000d00718800007c1005080700000012000d009b880000f8e8040803 *00000012000d00de880000d0ef06080800000011000d00f1880000181708080400000011001100 *0989000000000000000000001200000010890000f8fd06080800000011000d002689000094fe06 *083500000012000d003989000080fd070804000000110011007b890000dcec0708040000001100 *1100bd890000143605084b00000012000d00f48900002014080804000000110011001c8a0000a0 *f2070804000000110011005e8a0000a01808080400000011001100878a0000740e080804000000 *11001100c98a0000f07d07087501000012020d00d28a00002c8405080800000011000d00ee8a00 *00fcff070804000000110011002f8b0000600d05081000000011000d006d8b00002cfa04082000 *000012000d00a98b0000d8e405080300000012000d00cd8b00009c0d080804000000110011000f *8c0000480b05080800000011000d00478c0000e4d105080c00000012000d005b8c000000fc0708 *04000000110011009d8c0000f0f607080400000011001100df8c0000b8f706084e00000012000d *00f48c0000ece707080400000011001100348d0000f0e607080400000011001100798d00005cf1 *06084e00000012000d008d8d00002c0808080400000011001100d08d00000cfc07080400000011 *001100128e00009ccb06089c00000012000d001c8e0000a0ec070804000000110011005f8e0000 *984e05080600000012000d009b8e00005c0e08080400000011001100dd8e000044cc06080c0000 *0011000d00f38e0000248505080c00000011000d00188f0000e8ef070804000000110011005a8f *000094f8070804000000110011009c8f000020a005080700000012000d00b08f00009cdf050829 *00000012000d00c88f0000841608080400000011001100e78f0000801205080600000012000d00 *28900000a8ff070804000000110011006a900000b017080804000000110011008490000020f707 *080400000011001100c6900000400a05081000000011000d000f910000c0e106081e0000001200 *0d001d910000901808080400000011001100379100004cf8070804000000110011007991000050 *f504080c00000012000d00b991000070ef06080800000011000d00cf9100000000000000000000 *12000000d6910000ace9070804000000110011001b920000d89005080700000012000d00379200 *005cdc04080700000012000d005d920000380205080c00000011000d0096920000b4d404080700 *000012000d00be920000940e0808040000001100110000930000d8e90708040000001100110048 *930000883405080300000012000d00939300003c0508080400000011001100d49300006cea0708 *04000000110011001594000004ec0708040000001100110057940000d8c006087000000011000d *006c940000143e06082600000012000d009e940000f83105080700000012000d00d79400009815 *05080700000012000d001095000030e807080400000011001100449500000cd604089500000012 *000d006c9500009c0f080804000000110011008295000064e807080400000011001100b8950000 *900705080c00000011000d00ef9500000000000052000000120000000c960000aa6d0608100000 *0012000d00179600009c2606082600000012000d00419600004409080804000000110011008396 *00004ce206085f00000012000d00959600004c1505084b00000012000d00c9960000689c050826 *00000012000d00eb960000d4fd070804000000110011002d970000c0e507080400000011001100 *71970000840708080400000011001100b3970000640b08080400000011001100f5970000a40808 *080400000011001100389800002c06080804000000110011007a980000ecf70708040000001100 *1100bc9800002cce05080c00000011000d00d298000010df04084900000012000d00fd980000a4 *09080804000000110011003f9900004c16080804000000110011006299000088fb070804000000 *11001100a4990000841b0508d100000012000d00db990000cc0e080804000000110011001d9a00 *0004a505085f00000012000d00369a0000d0e507080400000011001100759a00003d9406081500 *000012000d00809a00008c0908080400000011001100c29a0000f4090808040000001100110004 *9b0000a4f707080400000011001100469b0000d00d06080800000011000d00629b0000e0c30408 *0300000012000d00a39b0000189d05080800000011000d00cd9b0000103306085800000012000d *00e59b0000549705080600000012000d00019c00000cf007080400000011001100439c0000f8c4 *06080800000012000d00539c000098c605082d00000012000d00719c0000400f05082000000012 *000d00ad9c0000603e08088000000011001800b69c0000608506089a00000012000d00c59c0000 *0cd406082f00000012000d00d89c0000e08d05080700000012000d00f99c0000788a0508200000 *0012000d00259d0000f8d304080600000012000d00649d0000e8ed05080c00000011000d007b9d *0000bc3705080300000012000d00b89d000048e907080400000011001100fe9d0000b0d604080c *00000011000d003a9e0000b0a904081800000011000d00499e0000000000005300000012000000 *5e9e000014c305083700000012000d00749e0000384f06085200000012000d007d9e0000141608 *080400000011001100a09e0000403b06080300000012000d00c19e000030320608080000001100 *0d00d89e0000f408080804000000110011001a9f0000e4e607080400000011001100539f000044 *c604080c00000011000d00819f0000601308080400000011001100999f0000ec96060864000000 *12000d00a69f0000e40308080400000011001100e79f0000b0f904080c00000011000d0020a000 *00a4c406084900000012000d002da0000078f60708040000001100110070a0000060a305080300 *000012000d008ea00000e4f607080400000011001100d0a00000c47805086600000012000d00e7 *a0000018fc06081e00000012000d00fda00000e405080804000000110011003ea1000064030808 *04000000110011007fa10000240308080400000011001100bfa1000077e504087a00000012000d *00eaa1000044fa070804000000110011002ca200001c2406080c00000011000d0040a200003c10 *05080700000012000d0066a20000009d05080800000011000d008aa20000a4f407080400000011 *001100cca20000600b05080300000012000d0005a30000d17f06083805000012000d000fa30000 *00000000230000001200000021a3000038a004080c00000011000d0038a3000090f30708040000 *00110011007aa3000030f307080400000011001100bca300006c0808080400000011001100ffa3 *0000781006085800000012000d0026a400004cc305080700000012000d0042a40000dc2005080c *00000011000d006fa40000ec1105084b00000012000d00a8a4000040f406080800000011000d00 *bba40000380d06080800000011000d00d7a400001cf605080800000011000d00f5a40000140205 *080500000012000d0033a50000240f080804000000110011004aa50000a40a0808040000001100 *11008ca50000309705080300000012000d00a7a50000dc0508080400000011001100e8a5000044 *030808040000001100110029a60000501e05084100000012000d0060a60000d0bf040807000000 *12000d0088a6000044b106080c00000011000d009aa60000c74e06080800000012000d00a8a600 *00304506080800000011000d00d1a600002cfd0708040000001100110013a70000c4fb07080400 *00001100110055a70000acf306080800000011000d0068a700007c0608080400000011001100aa *a70000740608080400000011001100eca7000000f006080800000011000d0009a80000f0f10608 *0800000011000d001ca8000078ed070804000000110011005fa80000381d05080700000012000d *0095a80000e4d406084f00000012000d00afa8000004f807080400000011001100f1a800008c34 *05080700000012000d0027a90000e41105080700000012000d005fa90000b0a105080800000011 *000d0078a90000b4ea07080400000011001100baa9000080f707080400000011001100fca90000 *8ceb070804000000110011003eaa00001410080804000000110011005eaa0000200007080c0000 *0011000d0070aa0000889d06080c00000011000d007eaa0000c8a10508a900000012000d0093aa *0000b00008080400000011001100d4aa00004c070808040000001100110016ab0000c486050807 *00000012000d0033ab00007c7706088e00000012000d0044ab0000024e06081b00000012000d00 *51ab0000009d05080300000012000d0076ab0000ec0308080400000011001100b7ab0000900b05 *080800000011000d00f0ab0000bc13080804000000110011000fac000064180808040000001100 *110031ac0000bcfd06080800000011000d0047ac0000a0120808040000001100110066ac000058 *3405080800000011000d00a9ac000078fa05080800000011000d00ceac0000ec06080804000000 *1100110010ad0000d80f05080c00000012000d0047ad000000f106080c00000011000d005aad00 *007c2c0508a900000012000d00a1ad000030d404080800000011000d00d6ad0000fce405080800 *000011000d00f2ad000048ec06081200000012000d0000ae0000f4f80708040000001100110042 *ae00009c0a0808040000001100110084ae000034ab05087300000012000d0099ae00000e7a0608 *9d00000012000d00aaae0000f81008080400000011001100d5ae00007c14080804000000110011 *00efae0000b0e705085800000012000d0005af0000689b06081102000012000d0012af0000c001 *0808040000001100110053af000000000000230000001200000064af0000541108080400000011 *00110082af00002cee07080400000011001100c4af000088d904080c00000011000d00f4af0000 *30010808040000001100110035b00000ac8005080600000012000d0056b00000935d0708c70000 *0012000d0066b00000f4180808040000001100110088b00000fcfc07080400000011001100cab0 *0000643405080300000012000d0019b10000bcd205080c00000011000d002cb1000090c6050807 *00000012000d0049b10000c4ea05081000000011000d0068b10000b40e08080400000011001100 *aab100007cef07080400000011001100ecb100006ca505085f00000012000d0007b20000a8fc07 *08040000001100110049b20000bc3605083700000012000d0081b200008c080808040000001100 *1100c4b20000b8d304080800000011000d00fbb20000d406080804000000110011003db3000004 *0206080c00000011000d0055b30000c8ee0708040000001100110097b30000549f050808000000 *11000d00b2b30000cc3f05080700000012000d00e5b30000542005080800000011000d001ab400 *00da4e06081400000012000d0027b400005ccf05081000000011000d0050b4000000ed05085f00 *000012000d006db4000048100808040000001100110092b40000dc1308080400000011001100a9 *b40000881308080400000011001100c0b4000040e60708040000001100110001b50000a0fb0608 *1e00000012000d0017b5000048ed070804000000110011005ab5000014ee070804000000110011 *009cb50000583f05080700000012000d00c7b500002c1508080400000011001100dfb5000098a4 *05080c00000011000d0000b60000840b05080300000012000d003ab60000125d07088100000012 *000d004ab600002406080804000000110011008cb6000050e807080400000011001100c0b60000 *b4f60708040000001100110002b70000d48805089500000012000d001fb7000042c40608090000 *0012000d0035b70000483106082000000012000d004bb70000500d06080300000012000d0066b7 *0000140608080400000011001100a8b70000489d05080800000011000d00c9b70000234c06081b *00000012000d00d3b70000e8e306089300000012000d00dfb70000095f06082e00000012000d00 *f0b70000a80f0808040000001100110005b80000e0c304080800000011000d0045b8000088e507 *08040000001100110055b80000bc0e0808040000001100110097b8000040e80708040000001100 *1100ccb80000343405080300000012000d0018b90000d4130808040000001100110033b9000058 *3405080300000012000d0077b90000575306087e00000012000d0083b90000624a060892000000 *12000d0092b90000301708080400000011001100acb900003cff07080400000011001100eeb900 *00ccf00708040000001100110030ba00009c0b05080800000011000d006aba0000240c08080400 *000011001100acba0000940708080400000011001100eeba000074fd04080300000012000d0039 *bb0000ec3a05080700000012000d0083bb0000a41008080400000011001100a6bb000088010808 *0400000011001100e7bb000074070808040000001100110029bc000004f2070804000000110011 *006bbc000074f906080800000011000d007fbc0000914e06080800000012000d008cbc00000811 *08080400000011001100aabc0000098506080c00000012000d00b9bc0000dca205083700000012 *000d00ccbc0000f0cd05080800000011000d00e2bc00002c0e0808040000001100110024bd0000 *54f804085800000012000d0063bd00008cd606085400000012000d007abd0000e8ef0608080000 *0011000d0090bd000004e907080400000011001100cfbd000044fd04080300000012000d0018be *0000d89705080300000012000d0033be00004c240808000000001100f1ff3cbe0000d414080804 *000000110011005bbe0000bc04080804000000110011009cbe0000703405080300000012000d00 *efbe0000443205081000000011000d002cbf000018f306084e00000012000d0040bf000020fc05 *085d00000012000d0063bf000044d105080c00000011000d007abf00005ce70408100000001100 *0d00bebf000014c306081000000012000d00e3bf00001cfb0708040000001100110025c00000a8 *b205080700000012000d0044c0000038000808040000001100110084c00000784d050810000000 *11000d00bdc000003f0407089b00000012000d00d1c00000643405080800000011000d001fc100 *0040170808040000001100110039c10000f8f805080c00000011000d004ec10000800108080400 *00001100110090c100004c3a05089f00000012000d00d2c10000b0d604082900000012000d000f *c20000047705080800000011000d0044c20000380205082300000012000d007ec2000048010808 *0400000011001100bfc2000030df05085800000012000d00d3c20000f03706085800000012000d *00ebc200006c03080804000000110011002cc3000010f605080300000012000d0048c30000bc9c *05080800000011000d006ac30000acc004082000000012000d00a8c3000000000000c202000012 *000000b8c30000200007085300000012000d00cbc30000c80405080c00000011000d0008c40000 *70f8070804000000110011004ac4000070fe070804000000110011008cc4000080890608220000 *0012000d0097c40000cc0b08080400000011001100d9c400004c0e080804000000110011001bc5 *0000e4f3070804000000110011005dc5000034f904080c00000011000d0098c500009409080804 *00000011001100dac500009c1108080400000011001100f8c50000750507089b00000012000d00 *0cc600008c9805083700000012000d0021c60000a0fb06080800000011000d0036c60000181108 *08040000001100110053c6000010f80708040000001100110095c6000028a00508410000001200 *0d00aac60000440408080400000011001100ebc600003002080804000000110011002dc700008c *100808040000001100110061c70000cc4f05080c00000011000d00a7c7000024a606080c000000 *11000d00b6c70000c8c305080700000012000d00d1c70000b09704084901000012000000e8c700 *0004e50608c100000012000d00f8c70000184506080300000012000d0026c80000f8e804080800 *000011000d0068c80000fc100808040000001100110091c800004c0508080400000011001100d2 *c80000781806081800000011000d00f7c8000040f20708040000001100110039c900006c0b0508 *0800000011000d0071c900001ce904080800000011000d00b0c9000064ed06080800000011000d *00c3c90000849705080800000011000d00dcc90000807605082800000012000d0020ca0000042b *0508b300000012000d0068ca00008410080804000000110011008cca000070d905081000000011 *000d00b1ca0000081708080400000011001100c8ca0000000000000000000012000000d2ca0000 *08d505082f00000012000d00f8ca0000f8e8070804000000110011003fcb0000180b0508030000 *0012000d0078cb00009c4606082100000012000d0084cb0000c34706081100000012000d0093cb *0000d80b05080800000011000d00d1cb0000d89105082300000012000d00e6cb000018e9070804 *000000110011002ecc00007ce70708040000001100110071cc0000441005083700000012000d00 *98cc0000309705080800000011000d00b2cc0000ec1508080400000011001100cccc0000a40508 *0804000000110011000dcd00009c3805084b00000012000d0050cd00001cbe04080c0000001100 *0d005dcd0000d0c305084b00000012000d0079cd00004c2a0808040000001100180085cd0000be *4806081d00000012000d009dcd00009c0808080400000011001100e0cd00008cf705080c000000 *12000d00f9cd00007002080804000000110011003bce000054870608b200000012000d004ace00 *000c4005080700000012000d0085ce0000400108080400000011001100c6ce0000081e05080700 *000012000d00fbce0000047705085800000012000d0031cf0000143e06080c00000011000d0062 *cf0000149705080800000011000d007dcf00002cc906080900000012000d0090cf0000674d0608 *2300000012000d009ccf00009c1008080400000011001100c3cf0000101305080c00000011000d *0002d00000b8d304080600000012000d003ad0000034e8070804000000110011006ed000000903 *07089b00000012000d0082d00000143d06081800000011000d00a3d0000098ca05080c00000011 *000d00c6d00000d04406080800000011000d00f5d0000070f604082000000012000d002ad10000 *c4fe070804000000110011006cd10000ac9f05080c00000011000d0083d100003c0c0808040000 *0011001100c5d1000094f50708040000001100110007d2000024f30708040000001100110049d2 *0000f8eb070804000000110011008bd200006cc205082300000012000d00a2d20000dcc1050887 *00000012000d00bdd20000740a08080400000011001100ffd20000080208080400000011001100 *40d30000fc0c0808040000001100110082d3000048c804082000000012000d00c4d30000f77206 *081000000012000d00d4d30000d4090808040000001100110016d4000070c704080c0000001100 *0d0045d40000802d06082500000012000d0061d400004c7205080c00000011000d00a6d4000060 *9d05080800000011000d00cdd40000f03b06080500000012000d00e3d40000248105084b000000 *12000d00fad4000024f706080800000011000d000ed50000b43906085800000012000d0026d500 *00c8e50708040000001100110059d5000094c406080800000011000d0068d5000014ae06082203 *000012000d0078d500006c0408080400000011001100b9d5000098e507080400000011001100f7 *d50000302d05089500000012000d003bd60000108105080c00000011000d0055d60000689c0508 *0c00000011000d0076d6000000f007080400000011001100b8d60000b24706081100000012000d *00c6d60000e01008080400000011001100ead6000024d805081000000011000d000ad700007c15 *0808040000001100110021d700007c0e0808040000001100110063d70000602a08080400000011 *0018006dd70000d0150808040000001100110085d70000ac9905080700000012000d009ed70000 *24fc07080400000011001100e0d7000060f006082f00000012000d00f4d7000090170808040000 *00110011000ed800006415080804000000110011002bd80000214f06081700000012000d0037d8 *0000303206085800000012000d004fd80000c09e04080700000012000d0060d80000ee4e06081b *00000012000d006ed80000d30107089b00000012000d0082d80000881808080400000011001100 *b6d80000000000007c00000012000000c7d800000cec06080c00000011000d00dbd80000ac1108 *080400000011001100fbd80000108f05082300000012000d0022d900003cf60708040000001100 *110065d90000400f080804000000110011008ed90000bc8005080800000011000d00b1d9000070 *9105085f00000012000d00c5d90000300b05080300000012000d00fed9000018f3060808000000 *11000d0011da00001c000808040000001100110057da0000c0f60708040000001100110099da00 *00117706080100000012000d00acda00002f4906080b00000012000d00beda0000b82805083700 *000012000d00f2da0000003205082d00000012000d002cdb0000e0eb06080c00000011000d0041 *db00008c7106080100000012000d005bdb000004dc05080c00000011000d007cdb0000ccf30708 *0400000011001100bedb00004c3b06080300000012000d00e2db000050f1070804000000110011 *0024dc0000800305080c00000011000d005edc000084f206084e00000012000d0072dc000098e8 *07080400000011001100aedc00005cee07080400000011001100f0dc0000d8c906081400000012 *000d00fedc000078ff0708040000001100110040dd000050f40708040000001100110082dd0000 *bc1108080400000011001100a2dd00002ca105080c00000011000d00bfdd000038e90708040000 *001100110008de000098290508e500000012000d0040de00000cad05080700000012000d0052de *0000bcf10708040000001100110094de0000c4ff06084d00000012000d00a7de00003c2a080804 *00000011001800b8de0000c40b08080400000011001100fade0000601805080c00000012000d00 *35df00006c0f080804000000110011004cdf0000e408080804000000110011008edf00002f8e06 *082f00000012000d009ddf0000900208080400000011001100dfdf0000189f0508080000001100 *0d00f7df0000a84e05080600000012000d0032e00000b8c106087000000011000d0042e0000014 *2f05087300000012000d008ee00000cc1808080400000011001100b0e0000030ff070804000000 *11001100f2e000002c2a08080400000011001800ffe00000e4be04080800000011000d0016e100 *0000000000250000001200000028e10000acd705080c00000011000d0050e10000280d06080800 *000011000d0074e100007c3c05088700000012000d00b8e100004f5706080f00000012000d00c1 *e10000f49705080300000012000d00dfe1000074c105080c00000011000d0000e200009c240508 *7d00000012000d0038e2000080d706082200000012000d0049e20000200f080804000000110011 *0066e200008cee07080400000011001100a8e20000c03506085800000012000d00c0e2000050f5 *04080c00000011000d00ffe20000f0ff0708040000001100110038e30000dc0308080400000011 *00110079e3000068ea04085800000012000d00bae3000058f807080400000011001100fce30000 *bc0c080804000000110011003ee40000a4d504085f00000012000d0063e40000f4fb0708040000 *0011001100a5e40000440a08080400000011001100e7e4000024f706084e00000012000d00fce4 *0000241806082000000012000d0024e5000094fe06080c00000011000d0036e500007c8c05080c *00000011000d0060e50000ef8606086500000012000d0072e500004c9605080c00000012000d00 *87e5000018f307080400000011001100c9e50000500d06080800000011000d00e3e500001cf507 *08040000001100110025e60000d811080804000000110011003ee6000050fd0708040000001100 *110080e60000203a06080800000011000d0097e60000304706081c00000012000d00a5e60000c8 *fd07080400000011001100e7e600005cf70708040000001100110029e700006002080804000000 *110011006be70000fca405080700000012000d0083e7000094ef07080400000011001100c5e700 *000cea0708040000001100110006e80000009805080300000012000d0020e80000f08507080400 *000011000f0027e800002d7e0608a401000012000d0032e800000c4506080300000012000d0059 *e8000038e705085800000012000d006fe8000000ff07080400000011001100b1e80000d8ea0408 *1800000011000d00efe80000d42c06085b00000012000d0018e9000030f9070804000000110011 *005ae90000c8f006080c00000011000d006be9000090e807080400000011001100a9e90000a032 *06080800000011000d00c0e90000f43a05082d00000012000d000bea0000e0f707080400000011 *0011004dea0000040f080804000000110011008aea0000b94e06080e00000012000d0098ea0000 *98c504080c00000011000d00c6ea0000527d06085e00000012000d00d3ea0000dca30508070000 *0012000d00e9ea0000c8fd04080800000011000d002ceb00009cdf05081000000011000d0043eb *000084180808040000001100110068eb00009cbf05080c00000011000d0090eb0000540a080804 *00000011001100d2eb0000ac090808040000001100110014ec0000f00008080400000011001100 *55ec0000ecf40708040000001100110097ec0000e8f704080800000011000d00c8ec0000e01808 *080400000011001100f3ec000000000000d50000001200000005ed000044be04080c0000001200 *0d0013ed0000a4040808040000001100110054ed000010dd04087300000012000d0079ed000088 *ec07080400000011001100bbed000054e807080400000011001100f2ed000059ea060806000000 *12000d000bee0000f4fe070804000000110011004dee00005ce704082500000012000d0092ee00 *00b0b005082d00000012000d00aaee0000c8e707080400000011001100d1ee0000e4fc07080400 *00001100110013ef000000000000b2000000120000002bef0000889e05080c00000012000d0043 *ef000074f004083200000012000d007aef0000da4f06087200000012000d0085ef000027490608 *0800000012000d0096ef0000f00108080400000011001100d7ef0000b0f1070804000000110011 *0019f000007409080804000000110011005bf00000dce6070804000000110011009ff00000f40e *08080400000011001100def00000b8f20708040000001100110020f10000a83e05080300000012 *000d005df100000cfe04080500000012000d009bf100004c3b06080800000011000d00bef10000 *04070808040000001100110000f200008cfa0708040000001100110042f20000243b0508070000 *0012000d0080f2000000000000210000001200000093f20000a3500708a602000012000d009bf2 *00007c3005080700000012000d00d2f20000000000005a00000012000000e2f20000f950060872 *00000012000d00f1f20000b80006081000000011000d0008f30000f8ee06080800000011000d00 *19f30000ac4e06080d00000012000d0026f30000109c05080f00000012000d0041f30000d74506 *082100000012000d004ef30000a8180808040000001100110068f30000b82b0508070000001200 *0d00b0f30000ac2805080300000012000d00e8f30000f48405082300000012000d00fef3000000 *000000060100001200000010f400002018080804000000110011002af4000070b3050807000000 *12000d0056f4000044eb0708040000001100110098f4000008dd04080700000012000d00bcf400 *00281d06081800000011000d00e0f4000044f10708040000001100110022f5000080eb07080400 *00001100110064f50000e8be04080700000012000d0081f500000000000065020000120000008e *f50000d81508080400000011001100b8f50000f44406080300000012000d00e1f50000d4100808 *0400000011001100f9f500006c09080804000000110011003bf600003406080804000000110011 *007df60000b3920608c300000012000d0088f60000fa8506086200000012000d009bf600009444 *06080300000012000d00c2f60000d44706083900000012000d00d1f60000888e05080700000012 *000d00f3f60000f02805080700000012000d002bf7000000000000f2000000120000003df70000 *140705082000000012000d0075f7000020e607080400000011001100b6f700005c7005080c0000 *0011000d00fbf70000fcb105082300000012000d0019f800008ce5070804000000110011002cf8 *000006f106080500000012000d0039f80000840b080804000000110011007bf8000064e3060882 *00000012000d008ff8000030e907080400000011001100cdf80000cca305080300000012000d00 *edf80000f40d080804000000110011002ff9000050130808040000001100110047f90000f44c05 *082d00000012000d0086f900005c0308080400000011001100c7f9000014e70708040000001100 *110008fa0000142f06085800000012000d0020fa000004ab05080300000012000d003afa0000f4 *0a080804000000110011007cfa0000c4dd04080700000012000d00a1fa000020cd060808000000 *12000d00b0fa000064e907080400000011001100ebfa000000f3070804000000110011002dfb00 *006c0e080804000000110011006ffb00007cfe07080400000011001100b1fb0000f0f307080400 *000011001100f3fb000024190808040000001100110012fc000048fc0708040000001100110054 *fc0000dc090808040000001100110096fc000054e607080400000011001100d7fc0000ec050808 *040000001100110018fd0000fcf0070804000000110011005afd000040c705080c00000011000d *0084fd00000000000000000000120000008ffd0000404605082d00000012000d00cafd000048e8 *07080400000011001100fffd0000c0ed0708040000001100110042fe000000e707080400000011 *0011006ffe0000500605082f00000012000d00adfe000094e907080400000011001100e8fe0000 *94030808040000001100110029ff000014c306080c00000011000d004dff00000c0b0808040000 *00110011008fff000010e907080400000011001100d3ff000028e9070804000000110011001100 *01008c13080804000000110011002b00010028fb070804000000110011006d000100b415080804 *00000011001100850001005cf704080c00000012000d00ba000100302a08080400000011001800 *c70001008c0e0808040000001100110009010100f03706080800000011000d0020010100a80008 *08040000001100110061010100e4ff070804000000110011009a010100a00f0608080000001100 *0d00af0101008ca806080c00000011000d00bf010100ac2906081000000011000d00dc01010034 *0e080804000000110011001e0201006ced0708040000001100110061020100dcda04080c000000 *12000d00a1020100b0a904082300000012000d00b1020100d41306080c00000011000d00cb0201 *00e43c06081700000012000d00f5020100bc0a080804000000110011003703010044e407080000 *00001000f1ff48030100a4fd04080300000012000d0089030100d49805080c00000011000d00a1 *030100dc0808080400000011001100e3030100f4040808040000001100110024040100c40e0808 *040000001100110066040100000000003a000000120000007b04010010fa05085800000012000d *00a1040100ccfc07080400000011001100e304010062e10408a800000012000d000e05010014f7 *0708040000001100110050050100ec8105084100000012000d006505010080fd04080300000012 *000d00b0050100907007086f00000012000d00bc0501008c1508080400000011001100d3050100 *041a06084400000012000d00f4050100d8e205080c00000011000d0013060100f4050808040000 *00110011005406010083e404087a00000012000d007f06010078c406080900000012000d009506 *010044e807080400000011001100ca060100e0e905085800000012000d00e0060100882f050807 *00000012000d0022070100fc0b05080300000012000d005f070100000000005b00000012000000 *70070100c82d05080700000012000d00b5070100cc1e05080700000012000d00e9070100781c06 *083100000012000d000108010068cb06080c00000011000d0010080100a65f0708160000001200 *0d001f08010044df06089400000012000d0031080100643406085800000012000d0049080100c8 *9005080800000011000d0070080100a0150508b300000012000d00aa08010048aa050807000000 *12000d00be080100504f05084100000012000d00f908010068f506084e00000012000d000d0901 *00e8f2070804000000110011004f09010084f0070804000000110011009109010044c604080c00 *000012000d00c0090100303c0608a800000012000d00d7090100600d05082200000012000d0016 *0a0100000000009c00000012000000280a01008c9106085c00000012000d00360a010047ea0608 *0600000012000d004f0a0100000000003800000012000000600a01006ca305085500000012000d *00750a010060d005080c00000011000d009a0a01009d4906086300000012000d00ad0a01001cdc *04080700000012000d00d30a01004c0908080400000011001100150b0100041908080400000011 *001100350b010060f307080400000011001100770b0100403405080300000012000d00c20b0100 *0c0308080400000011001100020c01003a4906086300000012000d00160c0100443d0508070000 *0012000d00580c0100541705084100000012000d008d0c0100040d08080400000011001100cf0c *0100742c05080700000012000d00150d01008ce4070804000000110011002d0d010030e7070804 *000000110011006b0d0100e41006085f00000012000d00880d01003c0e06080800000011000d00 *9d0d0100601805080c00000011000d00d70d0100240708080400000011001100190e0100a4d706 *086000000012000d002c0e0100c8a306080c00000011000d003b0e010094f805080c0000001200 *0d00510e0100e00f08080400000011001100750e0100000000009400000012000000870e0100d4 *0905085800000012000d00bf0e0100f0e507080400000011001100060f0100d802080804000000 *11001100520f0100f01808080400000011001100780f0100ec3e06080c00000011000d008d0f01 *008cf705081000000011000d00a50f0100b0b205087d00000012000d00c50f0100849805080700 *000012000d00d90f010098af05081800000011000d00fa0f010004fb070804000000110011003c *1001007c110808040000001100110064100100d83406080800000011000d007b1001005ceb0608 *0c00000011000d009110010050da05081000000011000d00b61001003405080804000000110011 *00f7100100603605080700000012000d002d110100b40b05080800000011000d006811010040ef *07080400000011001100aa110100a30707080e00000012000d00b51101006c1905080300000012 *000d00f11101008ce9070804000000110011002c12010077780608e200000012000d0042120100 *d4f406080800000011000d00551201000f4906080b00000012000d00671201005c110808040000 *001100110085120100bc0708080400000011001100c7120100f0c604080c00000011000d000613 *0100cc4f05080c00000012000d004d1301004dea06080600000012000d00661301002445060803 *00000012000d008b130100ecc304080800000011000d00ce1301001c2406086e00000012000d00 *e3130100bc060808040000001100110025140100d80c05080f00000012000d006f14010090f606 *084e00000012000d00831401005a5e0708c300000012000d0091140100a00f0808040000001100 *1100a6140100109205080c00000011000d00ba140100240b05080300000012000d00f3140100f0 *4205080700000012000d00261501003c0708080400000011001100681501002cc906080c000000 *11000d007c15010064ec06080800000011000d0089150100b4ff04080c00000012000d00cf1501 *00bcaa05080300000012000d00e71501001cce05080300000012000d0004160100880008080400 *00001100110046160100dc0c0808040000001100110088160100bc4605084a00000012000d00cc *160100980f08080400000011001100e316010038b906080c00000011000d00f716010084b40508 *0700000012000d000c170100e07705080c00000012000d0056170100ec18080804000000110011 *007a17010068fd04080300000012000d00c2170100347a05084100000012000d00d91701000000 *0000af00000012000000ed170100dc07080804000000110011002f180100c41408080400000011 *00110047180100a84e05080800000011000d0081180100e017080804000000110011009b180100 *4c3405080300000012000d00e91801004d4e06082200000012000d00f318010044c60508070000 *0012000d0015190100347905087d00000012000d003319010064e4070800000000110211004019 *01007c1606080800000011000d00551901003415080804000000110011006d190100f8f3040810 *00000011000d00a319010074ec06080800000011000d00b719010014e706087600000012000d00 *c91901008c0b080804000000110011000b1a0100343805085f00000012000d00411a01000c9705 *080800000011000d005c1a0100524806080f00000012000d00661a010050fd0408080000001100 *0d00a91a01002c7905080700000012000d00c61a01003cf007080400000011001100081b0100ac *d00608e300000012000d00161b0100343405080800000011000d00611b0100d8e5050858000000 *12000d007e1b0100c00f08080400000011001100981b010054f907080400000011001100da1b01 *009cd504080700000012000d00fe1b01006c1208080400000011001100181c0100bcd205080c00 *000012000d002c1c010038fd070804000000110011006e1c0100d4c605080c00000012000d0099 *1c0100d49c05080300000012000d00ba1c01003c9f05080300000012000d00d61c0100ecfa0608 *1e00000012000d00ec1c01007c7705080800000011000d00221d0100d5530608e400000012000d *002a1d010010d405080c00000011000d00471d01005c1f05080700000012000d007e1d01000c0f *08080400000011001100a01d0100781806088f00000012000d00c61d0100c4fc05080c00000011 *000d00e81d010018b505080700000012000d00fd1d0100201708080400000011001100171e0100 *542706086700000012000d003b1e0100ac04080804000000110011007c1e0100cb5606083c0000 *0012000d00871e01004c0006080800000011000d009e1e0100b4f307080400000011001100e01e *010004d806085100000012000d00f41e0100ac0d08080400000011001100361f01004c0d080804 *00000011001100781f010020f107080400000011001100ba1f0100e41808080400000011001100 *dc1f01001409080804000000110011001e200100dcfa05080b00000012000d0040200100c0e907 *08040000001100110082200100e08407086200000012000d0092200100e8970508030000001200 *0d00ad200100b40d08080400000011001100ef2001001cde06089400000012000d0001210100d0 *fe0708040000001100110043210100000006080c00000011000d0056210100cc0b050803000000 *12000d0093210100000000006100000012000000a121010018f804080800000011000d00cf2101 *00d40c080804000000110011001122010000000000a9010000120000002622010038fd04080800 *000011000d006722010040f304080c00000012000d00ab220100300b05080800000011000d00e3 *220100581c05080700000012000d001b23010090ae05080500000012000d00402301009c150808 *040000001100110055230100b07c06084900000012000d00622301008c0c080804000000110011 *00a4230100080a07082600000012000d00ae2301000c2106080600000012000d00d3230100f413 *08080400000011001100eb230100bca105080800000011000d0007240100bb5606081000000012 *000d000f240100fc9d05087d00000012000d002324010064fb06080800000011000d0038240100 *844706081c00000012000d00462401005ceb0708040000001100110088240100443a0508070000 *0012000d00c9240100f84f05080c00000012000d000b250100843306080800000011000d002225 *0100c8d304080800000011000d005c250100f4bd04081800000011000d006d250100f828050855 *00000012000d00a6250100000000006306000012000000bb250100b43005080700000012000d00 *ef250100b8f804082000000012000d00292601009412080804000000110011004b26010078f307 *0804000000110011008d260100949705080800000011000d00a626010018020808040000001100 *1100e7260100c41508080400000011001100ff26010018ff0708040000001100110041270100c8 *3705080800000011000d0080270100f8c304080800000011000d00c22701008040050825000000 *12000d000928010008f7070804000000110011004b280100b8f5070804000000110011008d2801 *009cf307080400000011001100cf28010014040808040000001100110010290100e8f704080600 *000012000d0042290100140e08080400000011001100842901003cf907080400000011001100c6 *290100d8d304080800000011000d00032a0100bc6d06088100000012000d00192a0100740c0508 *5800000012000d00442a0100040908080400000011001100862a0100540b05080800000011000d *00be2a010060f006082c00000011000d00d32a0100342a08080400000011001800e02a01000000 *00006201000012000000ef2a0100249f05080300000012000d000b2b0100940a08080400000011 *0011004d2b01009c1e05082d00000012000d007e2b01006c0d06085800000012000d00942b0100 *8c0708080400000011001100d62b01004cf507080400000011001100182c01001cbe04080c0000 *0012000d00262c0100ad6206080b00000012000d00342c010028ef07080400000011001100762c *0100f87005080c00000011000d00bf2c0100dce507080400000011001100f22c01003412080804 *00000011001100162d01004cff04081000000011000d00532d0100db8906081100000012000d00 *672d010004d604080700000012000d008e2d0100680008080400000011001100cf2d0100000000 *000000000012000000d92d010028ef06080800000011000d00ec2d0100a02b0808040000001100 *1800fd2d0100fc03080804000000110011003e2e0100e80105082a00000012000d007d2e0100b4 *3e05080300000012000d00bd2e0100340408080400000011001100fe2e01005c0d060808000000 *11000d001b2f010064fe070804000000110011005d2f0100902506085200000012000d007b2f01 *00e8fb07080400000011001100bd2f010008f407080400000011001100ff2f0100403b06080800 *000011000d001f30010080e8070804000000110011006b300100ccf607080400000011001100ad *30010098eb07080400000011001100ef300100440d06080800000011000d000e310100101e0508 *3700000012000d0044310100a04706081200000012000d0054310100ec0a080804000000110011 *0096310100e40d08080400000011001100d831010054d606083700000012000d00ec3101004034 *05080800000011000d0036320100b0ee06080800000011000d004432010018f006080800000011 *000d0055320100d017080804000000110011006f3201000cf607080400000011001100b2320100 *b42d08080400000011001800ce32010074c105085d00000012000d00f03201002ce70708040000 *00110011002c330100d8a305080300000012000d004f33010090ea070804000000110011009033 *0100c0b405085800000012000d00c233010014f1070804000000110011000434010098fd040803 *00000012000d0049340100a40d080804000000110011008b340100000000003400000012000000 *a73401006cc806080c00000011000d00b8340100d4f407080400000011001100fa3401006ce607 *08040000001100110037350100943805080700000012000d0079350100bc0f0808040000001100 *1100903501000000000000000000120000009d3501007c1b05080700000012000d00d335010000 *4605082600000012000d000836010064a505080700000012000d00223601004cff04080c000000 *12000d0060360100980008080400000011001100a1360100f00b05080800000011000d00da3601 *003c0e06085800000012000d00f0360100d48905080700000012000d0012370100e80008080400 *00001100110053370100cc3b05080700000012000d0097370100e49506080100000012000d00a2 *37010044ee07080400000011001100e4370100043d05080700000012000d0028380100034d0608 *2300000012000d0035380100302c0808040000001100180040380100a000080804000000110011 *00813801006cfc07080400000011001100c3380100640005080c00000011000d000839010038f4 *070804000000110011004a39010084120808040000001100110060390100bcee07080400000011 *001100a2390100c55406082600000012000d00b939010098bc05082000000012000d00da390100 *87600608e800000012000d00e7390100f0820708e501000012020d00f1390100d8340608580000 *0012000d00093a0100cc8005083700000012000d00243a010000e905080800000011000d00393a *010050eb070804000000110011007b3a010098a405080c00000012000d009d3a01002c38050807 *00000012000d00d23a0100740c08080400000011001100143b010014da04080700000012000d00 *423b010098fd04080800000011000d00863b0100e87105080800000011000d00ce3b0100d80c05 *080c00000011000d00173c01004c0308080400000011001100583c0100ec0c0808040000001100 *11009a3c0100540608080400000011001100dc3c0100c8e8070804000000110011000c3d0100c8 *3705080300000012000d004c3d010070c704083200000012000d007c3d01002819080804000000 *11001100923d010034f507080400000011001100d43d0100bca105080300000012000d00f13d01 *0018f007080400000011001100333e0100384605080700000012000d006d3e0100fc3605087d00 *000012000d00a33e0100ecc304080300000012000d00e73e0100d18806083d00000012000d00f8 *3e01006cff070804000000110011003a3f010058fe06082f00000012000d004d3f010000f10608 *0600000012000d005f3f010054a305080800000011000d00793f0100fc1f06081000000011000d *00983f01001c0e08080400000011001100da3f0100e8e9070804000000110011001b40010098a1 *05080800000011000d0031400100fc18080804000000110011005140010099e60408a800000012 *000d007c400100bcd506083700000012000d008d400100103306080800000011000d00a4400100 *54c406080900000012000d00ba4001004c500608ad00000012000d00cb40010044420608580000 *0012000d00e3400100901308080400000011001100f9400100a00007082c00000011000d000c41 *01001403080804000000110011004c410100542706081800000011000d006f410100bcfd040808 *00000011000d00b6410100ce9306083f00000012000d00c8410100500605080c00000011000d00 *05420100b80006082000000012000d001d420100b4ca0608a800000012000d0027420100b08107 *083e01000012020d003142010090f006082a00000012000d00464201006fc40608090000001200 *0d005c4201003c0f080804000000110011008942010064f507080400000011001100cb4201004c *3d05082d00000012000d000e430100640005080f00000012000d00544301001c15080804000000 *110011006c430100689b06080c00000011000d007a4301009d5706082f00000012000d008b4301 *0028c206084f00000012000d00a7430100540b08080400000011001100e9430100b80108080400 *0000110011002a440100402606081800000011000d005344010094110808040000001100110069 *440100040608080400000011001100ab440100588705084800000012000d00d444010000ce0508 *0600000012000d00ee440100b405080804000000110011002f450100dc15080804000000110011 *00534501006c070808040000001100110095450100788105082d00000012000d00aa4501008988 *06084800000012000d00b6450100c01106080c00000011000d00cb450100d43705085500000012 *000d000546010084f3070804000000110011004746010028000808040000001100110087460100 *98bc05081000000011000d00a7460100b0e907080400000011001100f0460100c8a306084d0200 *0012000d00fe460100a84206084700000012000d0025470100b0fa070804000000110011006747 *0100602e05084b00000012000d00b1470100101808080400000011001100cb470100140f080804 *00000011001100ee470100f49d05080700000012000d0001480100ec4505080800000011000d00 *424801005e8e06085400000012000d004f48010038fb05080500000012000d0071480100d40508 *080400000011001100b248010008d404080300000012000d00ec4801007c340508080000001100 *0d003449010044f407080400000011001100764901000000000071040000120000008149010064 *e505080800000011000d009d490100a0ef07080400000011001100df49010014d4040803000000 *12000d001c4a0100d8f6070804000000110011005e4a010028ab05080800000011000d007a4a01 *00849a05080300000012000d00964a0100640c08080400000011001100d84a0100840a08080400 *0000110011001a4b0100e801080804000000110011005b4b01002ceb070804000000110011009e *4b0100208405080300000012000d00b84b010098f107080400000011001100fa4b010080020808 *04000000110011003c4c01000405080804000000110011007d4c0100a4f1070804000000110011 *00bf4c0100b43e05080800000011000d00fe4c0100e41006080c00000011000d001a4d010074f7 *070804000000110011005c4d0100b07d06087d00000012000d00694d0100749705080800000011 *000d00824d010084f206080800000011000d00954d0100040405080c00000011000d00d04d0100 *6f4e06080800000012000d00dc4d01001c0a080804000000110011001e4e0100c0970508080000 *0011000d00384e0100e0f806084e00000012000d004d4e010000000000b802000012000000584e *0100e89604087001000012000b005e4e010058fb07080400000011001100a04e010064dc040855 *00000012000d00c74e010008fa07080400000011001100094f01009cf007080400000011001100 *4b4f010070e905085800000012000d00614f0100fcb305080700000012000d007b4f0100982c08 *080400000011001800854f0100802d06081000000011000d00a04f0100b0280508070000001200 *0d00d34f0100804806081f00000012000d00ea4f0100004a06085a00000012000d00fb4f010000 *000000000000001200000006500100602d080840000000110018001a500100de46060829000000 *12000d002650010090f007080400000011001100685001008cf707080400000011001100aa5001 *0030fd05083600000012000d00ce500100940c0808040000001100110010510100f4ef07080400 *00001100110052510100583b06080800000011000d0072510100b41906080a00000012000d0095 *510100c80405082f00000012000d00d3510100dcfe0708040000001100110015520100b55f0608 *a800000012000d00225201006ca105082300000012000d0036520100c800080804000000110011 *0077520100843005082d00000012000d00af5201006ce804080c00000011000d00ed520100ac9c *05080c00000011000d0004530100c40d0808040000001100110046530100681808080400000011 *00110068530100ec13080804000000110011008553010024ea07080400000011001100c6530100 *d4a904080c00000011000d00d5530100743105080c00000011000d0021540100fc140808040000 *0011001100395401002810080804000000110011005e540100d018080804000000110011007e54 *01009c0708080400000011001100c054010068ea04080800000011000d000055010004c4040803 *00000012000d00435501008e0807080501000012000d004d550100000000000000000012000000 *55550100a28906081700000012000d0065550100541508080400000011001100845501008cf107 *080400000011001100c655010064ef070804000000110011000856010040390608580000001200 *0d002056010068e807080400000011001100555601007818080804000000110011006e560100f8 *f704080600000012000d00a2560100081908080400000011001100cc5601005083050807000000 *12000d00e1560100c8f707080400000011001100235701003d6e06084d03000012000d002e5701 *0050f105083000000012000d00425701001cc905085f00000012000d005e570100200d06080600 *000012000d0083570100a87605080500000012000d00c657010040000808040000001100110007 *58010014a305080700000012000d001c580100244d05080700000012000d0050580100340f0808 *04000000110011007e5801006e5706082f00000012000d009158010080fd06081e00000012000d *00a85801007c0308080400000011001100e9580100e40c080804000000110011002b590100202c *080804000000110018003459010084ea070804000000110011007559010048ec06081800000011 *000d0082590100c03e05089500000012000d00b9590100303c06080c00000011000d00cf590100 *d4c605080c00000011000d00f9590100a40c080804000000110011003b5a01002cef05080c0000 *0011000d004c5a010090b505081000000011000d00705a0100882606080500000012000d00995a *0100a4ce05081800000011000d00b95a0100d0ef07080400000011001100fb5a0100e88305082d *00000012000d00125b0100c03506080800000011000d00295b010000000000c501000012000000 *3b5b010004fe070804000000110011007d5b0100d80b05080300000012000d00bc5b0100e83805 *080700000012000d00ff5b0100800008080400000011001100405c0100e8e50708040000001100 *1100825c010008ee06080800000011000d00995c01002cfd04080300000012000d00e35c010038 *a004080c00000012000d00fb5c010074f906084e00000012000d00105d01003b48060817000000 *12000d001a5d0100d8df06086f00000012000d00335d010058ef07080400000011001100755d01 *00e40005080c00000011000d00b85d0100a8e907080400000011001100ee5d010050d205080c00 *000011000d00015e0100481e05080700000012000d00375e01000d4806081700000012000d0041 *5e0100c89c05080300000012000d005f5e010078fc07080400000011001100a15e010030f60708 *0400000011001100e45e01000c2106080800000011000d00085f010098a105080300000012000d *001f5f0100c80108080400000011001100605f0100f0cd05080600000012000d00775f01002404 *08080400000011001100b85f010068f107080400000011001100fa5f0100fcea07080400000011 *0011003c6001006cbe04080c00000011000d00496001005ce60708040000001100110087600100 *075706081500000012000d0095600100dcf005085f00000012000d00a860010074140808040000 *0011001100bb600100b80008080400000011001100fc600100101305083d00000012000d003c61 *0100b28e06087700000012000d004a610100402906080800000011000d006161010000ed05080c *00000011000d007d610100b0eb07080400000011001100bf610100a0d306082200000012000d00 *d061010094aa05080c00000011000d00f261010030fc070804000000110011003462010044de04 *080c00000012000d006662010020b205080700000012000d00896201004cc60508410000001200 *0d00ac620100c00b05080800000011000d00e6620100418506080000000010000d00f0620100e4 *0e08080400000011001100286301001c0f0808040000001100110048630100809405080c000000 *11000d005d63010094ca06082000000012000d006b6301006ced05082f00000012000d00806301 *00c8d805082000000012000d00a1630100787a05080700000012000d00b66301002c0408080400 *000011001100f763010018ea070804000000110011003864010024ff070804000000110011007a *640100502905080700000012000d00ae640100143006080800000011000d00c2640100f8b00508 *0a00000012000d00da6401008c04080804000000110011001b65010000c506080402000012000d *002865010008be04080500000012000d0039650100282c0808040000001100180045650100b8e2 *05081000000011000d0064650100100d06080800000011000d0087650100000000003a00000012 *00000099650100a8f007080400000011001100db650100d4aa05080300000012000d00f4650100 *fc0f080804000000110011000e6601002ce8070804000000110011004266010040020808040000 *001100110084660100a0f807080400000011001100c6660100e41906080a00000012000d00ea66 *01009cf9070804000000110011002c6701006e0207089b00000012000d0040670100a802080804 *0000001100110082670100ac0308080400000011001100c367010010fb07080400000011001100 *0568010054ed06080800000011000d001e680100bc0d0808040000001100110060680100f00b05 *080300000012000d009a680100184f05082d00000012000d00d2680100d8fc0708040000001100 *110014690100743c05080700000012000d005769010038e7070804000000110011009469010088 *9606085900000012000d00a2690100ece804080300000012000d00e3690100e0fa070804000000 *11001100256a0100e4e807080400000011001100746a0100e00008080400000011001100b56a01 *009ce907080400000011001100f16a010094e904085800000012000d002c6b010070fb07080400 *0000110011006e6b01005c1106085800000012000d00896b0100f00f08080400000011001100af *6b0100cf4e06080b00000012000d00bd6b0100b41906081800000011000d00df6b010028ab0508 *0300000012000d00fc6b01006c1808080400000011001100156c010038f705080c00000012000d *00356c0100f03306080800000011000d004c6c01000000000058000000120000005f6c0100a415 *08080400000011001100776c0100d00e05086300000012000d00a86c01005ce707080400000011 *001100e76c0100401108080400000011001100036d010058ef06080800000011000d001a6d0100 *c4e605085800000012000d00376d01006cf307080400000011001100796d0100d8ed0708040000 *0011001100bb6d0100142f06080800000011000d00d26d0100e0a505081000000011000d00f36d *0100c09705080300000012000d000e6e01000001080804000000110011004f6e01002084050808 *00000011000d00686e0100b01608080400000011001100826e0100c89005080300000012000d00 *aa6e0100fde404087a00000012000d00d56e0100ecf107080400000011001100176f010028f507 *080400000011001100596f010074f1070804000000110011009b6f0100108f05080c0000001100 *0d00c16f010008f1070804000000110011000370010050ea05085800000012000d00197001003c *2e080804000000110018002d7001007017080804000000110011004770010008fd06081e000000 *12000d005e70010038ee07080400000011001100a0700100703405080800000011000d00f27001 *0058fe0708040000001100110034710100000000003c0000001200000049710100cc0908080400 *0000110011008b710100a4fd04080800000011000d00cb710100ace7070804000000110011000b *7201005c1905080600000012000d004f7201004cb505082300000012000d0067720100b4070808 *0400000011001100a9720100b40b05080300000012000d00e5720100af7906085f00000012000d *00fa720100c0120808040000001100110019730100e8ec070804000000110011005b730100cc0b *05080800000011000d0097730100d87105080500000012000d00d6730100000000004700000012 *000000e97301005ce60608b700000012000d00f873010000000000130200001200000003740100 *a0020808040000001100110045740100ecaa05080300000012000d005f74010074160808040000 *0011001100797401007cf807080400000011001100bb7401006c0608080400000011001100fd74 *0100e4e206087d00000012000d00107501001cab05080300000012000d002a7501007081050807 *00000012000d003e750100ccff0708040000001100110080750100db5106085800000012000d00 *957501004a4606082900000012000d00a1750100c0a005080700000012000d00b575010004e807 *080400000011001100ef7501006c9a05080800000011000d000a76010010e70708040000001100 *110036760100b4ed04081000000011000d006c760100181008080400000011001100887601009f *4806081f00000012000d009f760100442a08080400000011001800ab7601006ca0050807000000 *12000d00be7601009f4c06082600000012000d00ca760100549606082b00000012000d00d77601 *00908e05087300000012000d00fa760100e404080804000000110011003b77010010ce05080300 *000012000d005577010040f8070804000000110011009777010038fd04080300000012000d00d9 *77010074fd04080800000011000d0023780100740d0808040000001100110065780100fc090808 *0400000011001100a7780100281d06086900000012000d00cc780100780b05080800000011000d *00057901003c0b05080800000011000d003d79010074d206082200000012000d004e790100fa48 *06080d00000012000d005d790100c403080804000000110011009e790100100108080400000011 *001100df7901005cf704081000000011000d00137a0100889606080800000011000d00207a0100 *ec0d08080400000011001100627a0100d8be04080800000011000d00767a010080170808040000 *0011001100907a0100482a080804000000110018009f7a0100f8e607080400000011001100d67a *010080d105080c00000011000d00ea7a010028cf05080500000012000d000a7b010041ea060806 *00000012000d00237b0100f8fd07080400000011001100657b01001ce807080400000011001100 *997b0100601608080400000011001100bf7b010090ff07080400000011001100017c0100443506 *080800000011000d00187c010048e605085800000012000d00357c01000c0805080c0000001100 *0d006e7c010014b105087d00000012000d00847c010098ec06080800000011000d00937c0100b9 *7206081100000012000d00a37c010050ab0608b802000012000d00b27c01002c12080804000000 *11001100da7c01002cf7070804000000110011001c7d0100081008080400000011001100367d01 *00b4f007080400000011001100787d0100dc0a08080400000011001100ba7d0100203a06085800 *000012000d00d27d0100c4fc05085d00000012000d00f57d0100bc4e05080700000012000d002a *7e010060f0070804000000110011006c7e0100d4e507080400000011001100a47e010090f60608 *0800000011000d00b77e010048d504080700000012000d00e37e0100040405082f00000012000d *001f7f0100580208080400000011001100617f0100fce405085800000012000d007e7f010090b5 *05082300000012000d00a37f010048d406080c00000011000d00ba7f0100cc0808080400000011 *001100fc7f0100d80f05080c00000011000d00328001000013080804000000110011004a800100 *4c9605080c00000011000d005e80010010da04080300000012000d009e800100ac6306081c0000 *0012000d00b1800100f81706080c00000012000d00cc800100402708080400000011001800de80 *0100c4cc05081000000011000d00f9800100d4c105080700000012000d0013810100b4e5070804 *0000001100110044810100e4070808040000001100110086810100c82f05080700000012000d00 *c78101003c0b05080300000012000d0000820100800f0808040000001100110027820100ac0e08 *080400000011001100698201007c0c08080400000011001100ab82010044270808040000001100 *1800bd820100445306081300000012000d00c9820100b0f7070804000000110011000b83010088 *100808040000001100110025830100307305083000000012000d006683010038f1070804000000 *11001100a8830100309d05080300000012000d00c8830100e09c05080800000011000d00ee8301 *00f0c604080f00000012000d002e840100588305085500000012000d004484010080d105080800 *000012000d005984010060000808040000001100110099840100540c08080400000011001100db *840100040a080804000000110011001d85010084e8070804000000110011005e850100343d0608 *0c00000011000d0080850100c0e707080400000011001100c88501003013080804000000110011 *00e0850100240a0808040000001100110022860100000000000c020000120000003386010074fa *06081e00000012000d0049860100f43105080800000011000d008e86010040ef06080800000011 *000d00a28601000c9d05080300000012000d00ca860100749905083700000012000d00de860100 *04da04080800000011000d00168701000a7806081f00000012000d002387010020fa0708040000 *0011001100658701001014080804000000110011008d870100800305080c00000012000d00c887 *010094e904080800000011000d0002880100184506080800000011000d002f8801004c5e060806 *00000012000d003d880100440607080100000012000d0050880100f4e707080400000011001100 *90880100bce607080400000011001100c98801000c1508080400000011001100e1880100fc0208 *0804000000110011002189010040fb070804000000110011006389010000000000430000001200 *00006f89010014ae06080c00000011000d0080890100ec0208080400000011001100c089010094 *f204080c00000011000d00018a0100d40e08080400000011001100438a01006ce8070804000000 *110011007b8a0100b4e807080400000011001100ac8a010000e807080400000011001100e88a01 *00d4eb070804000000110011002a8b0100340b080804000000110011006c8b010090d10608e300 *000012000d007a8b0100ac0e06080800000011000d008f8b0100c8f006082b00000012000d009f *8b0100109805080700000012000d00b38b010008fa06084e00000012000d00c88b01001c0d0808 *04000000110011000a8c0100b0fd04080800000011000d00518c01004cec04081000000011000d *00878c01000c2f05080700000012000d00d28c010058e6070804000000110011000e8d01000000 *00000106000012000000198d0100c8cb05080800000011000d00428d01008ce607080400000011 *001100858d010010ce05080800000011000d009e8d01006a0a07081100000012000d00af8d0100 *0c9f05080800000011000d00c98d010028fb06081e00000012000d00df8d010078d60508050000 *0012000d00048e0100a80108080400000011001100458e0100dcc005080c00000011000d00678e *0100e0aa05080800000011000d00828e0100b89306081600000012000d00948e0100c095060801 *00000012000d00a18e010030d404080600000012000d00d78e010068ee07080400000011001100 *198f010010fa05080800000011000d003e8f0100d3df04086300000012000d00698f0100883405 *080800000011000d00b38f01007c3706080800000011000d00ca8f01005cf10708040000001100 *11000c900100a84405080700000012000d0041900100a40f080804000000110011005690010094 *0b0808040000001100110098900100186d06089200000012000d00a89001009842050855000000 *12000d00e5900100743105080c00000012000d0032910100540d08080400000011001100749101 *00e8fe07080400000011001100b69101005ce907080400000011001100f19101002cc805080c00 *000011000d0018920100b40c080804000000110011005a92010034ef070804000000110011009c *9201006cf007080400000011001100de920100200d06080800000011000d000293010035ea0608 *0600000012000d001b930100489f05080800000011000d0033930100956706081200000012000d *0040930100c4e8070804000000110011007093010000000000990c000012000000839301000019 *08080400000011001100a89301009c0c08080400000011001100ea930100980108080400000011 *0011002b940100ecee070804000000110011006d94010060f605082500000012000d0086940100 *38840508b300000012000d00a0940100e8f807080400000011001100e2940100cca30508080000 *0011000d000195010024e7070804000000110011003d950100bcf7070804000000110011007f95 *0100e41508080400000011001100a795010040c705084300000012000d00d2950100300f080804 *00000011001100fd950100fc0b080804000000110011003f9601004c7205082800000012000d00 *85960100ace807080400000011001100bc960100104f05080700000012000d00f3960100c40a08 *080400000011001100359701007d6306081300000012000d0044970100e4ff04080c0000001100 *0d008a970100e0f107080400000011001100cc9701004c1905080600000012000d000f98010020 *eb070804000000110011005198010000000000973d000012000000659801005ccf05082f000000 *12000d008f980100f4b105080700000012000d00ac98010004da04080300000012000d00e59801 *002c0b0808040000001100110027990100597906085600000012000d003a99010050aa05083700 *000012000d004f990100981f05085f00000012000d007e990100f4e807080400000011001100cf *990100943a06085800000012000d00e7990100bc9c05080300000012000d000a9a0100bc800508 *0600000012000d002e9a0100c4e607080400000011001100739a0100e4e5070804000000110011 *00ae9a0100d04106080800000011000d00c59a0100609d05080300000012000d00ed9a01005409 *080804000000110011002f9b010090fc06081e00000012000d00459b010090e507080400000011 *001100859b0100401205083700000012000d00bc9b01008cf407080400000011001100fe9b0100 *4416080804000000110011001b9c01007000080804000000110011005d9c0100f81706080c0000 *0011000d00779c0100c4cc05084000000012000d00939c0100b40308080400000011001100d49c *0100382305082800000012000d00029d010070e905080800000011000d00179d0100f8fa070804 *00000011001100599d0100000000004a05000012000000649d0100ecc906089c00000012000d00 *6e9d010064e505085800000012000d008b9d0100747e05081000000011000d00ab9d010058ec07 *080400000011001100ed9d01005c1905080800000011000d00309e0100a8f60708040000001100 *1100729e010004c706080500000012000d00819e0100c8f107080400000011001100c39e0100ac *4406080300000012000d00e99e0100f84506082900000012000d00f69e0100a02d080804000000 *11001800039f0100c8a005085500000012000d00189f01001cab05080800000011000d00319f01 *0050da05082000000012000d00579f0100e08305080700000012000d006d9f0100f41008080400 *000011001100979f010020a605083a00000012000d00b89f0100b04405086900000012000d00ee *9f0100b4100808040000001100110013a0010000f90708040000001100110055a00100a42d0808 *040000001100180069a00100e0120808040000001100110088a00100ace206081a00000012000d *009ba00100207505080800000011000d00d2a0010098f40708040000001100110014a101003c09 *0808040000001100110056a1010050e60708040000001100110095a10100194f06080800000012 *000d00a3a1010010fe07080400000011001100e5a10100f8f704080800000011000d0018a20100 *4a4307082800000012000d0025a20100dc4406080300000012000d004ca201005c0b0808040000 *00110011008ea20100f4b406080c00000011000d00a1a2010024f907080400000011001100e3a2 *01003c1905080800000011000d0022a30100789306081a00000012000d0037a3010024e8050858 *00000012000d004da30100c4ec070804000000110011008fa30100189805086900000012000d00 *a4a30100501708080400000011001100bea30100e4ff04080f00000012000d0005a40100ec8405 *080700000012000d001aa40100ec7506083100000012000d002da4010010e20508580000001200 *0d0048a40100a4a105080300000012000d0062a401003c9d05080300000012000d0085a40100dc *f207080400000011001100c7a401004c060808040000001100110009a501004c17050807000000 *12000d003da50100fc0a0708490e000012000d004ca50100b8e90708040000001100110094a501 *00d43b05089f00000012000d00d9a50100f4d404080700000012000d0001a60100cc1508080400 *00001100110024a60100e0cd05080800000011000d003da6010010ab05080800000011000d0059 *a60100a00506081000000011000d0078a60100f0f205083d00000012000d0095a6010004120808 *0400000011001100c0a601002c1108080400000011001100dca6010014fa070804000000110011 *001ea70100802a0808040000001100180028a701007415080804000000110011003ea70100b83e *05080700000012000d0074a7010000000000230000001200000082a701008c0a08080400000011 *001100c4a7010040d706083d00000012000d00d9a7010060f905080c00000011000d00ffa70100 *b8f80708040000001100110041a80100240b0808040000001100110083a8010088430508690000 *0012000d00bba8010034e707080400000011001100f8a80100a02c0808040000001100180002a9 *01005b7506089100000012000d0016a90100b42e05085500000012000d0061a901007c77050858 *00000012000d0098a90100dc1008080400000011001100c3a9010090fc06080800000011000d00 *d8a901009e6a06087700000012000d00e9a90100c8d805081000000011000d0009aa010030de05 *080c00000011000d002eaa0100c4f80708040000001100110070aa010094c406080e0000001200 *0d0080aa0100b09d04080000000012000d0087aa01003cc406080600000012000d009baa010060 *0108080400000011001100dcaa0100f0ea070804000000110011001eab0100e80f080804000000 *1100110040ab01008c0d0808040000001100110082ab0100cc0608080400000011001100c4ab01 *00ec9f05080c00000012000d00d9ab0100509a04087601000012000000e7ab0100742f06080800 *000011000d0002ac01002411080804000000110011001cac0100910a07080100000012000d002e *ac01006c0c0808040000001100110070ac0100e43c06080c00000011000d0099ac0100742f0608 *5b00000012000d00b5ac0100e80105081800000011000d00f3ac01004c14080804000000110011 *0018ad0100909a05087d00000012000d0033ad0100649505080c00000011000d0046ad0100094f *06080800000012000d0057ad0100a4140808040000001100110080ad0100bcab05085500000012 *000d009cad0100c0ea07080400000011001100dfad0100549606082c00000011000d00edad0100 *c4f2070804000000110011002fae0100a07505085800000012000d006eae0100d0910508070000 *0012000d0082ae0100d49005080300000012000d00adae0100240808080400000011001100efae *0100ac140808040000001100110011af0100840f0808040000001100110029af01009424050807 *00000012000d0060af01000c1006080800000011000d0075af0100780206083200000012000d00 *9caf01005cfa07080400000011001100deaf0100003b06080600000012000d0005b0010008ee07 *08040000001100110047b00100e89706080c00000011000d0055b001005c140808040000001100 *11007bb00100dc0208080400000011001100bab00100bc1508080400000011001100d2b00100e4 *fd04082800000012000d0011b10100b4130808040000001100110027b10100080f080804000000 *1100110048b1010078ea0708040000001100110089b101004c0a08080400000011001100cbb101 *00c8a905082900000012000d00e7b10100ec8105080c00000011000d00fbb10100e89706086401 *000012000d0008b201004e5206081500000012000d0023b2010028f804080600000012000d0054 *b2010054f00708040000001100110096b2010024450508bd00000012000d00d0b201004c340508 *0800000011000d001db30100bcf4070804000000110011005fb301007810080804000000110011 *007db301002cc805080c00000012000d00a5b30100d8fe06080c00000011000d00b7b3010060ea *07080400000011001100f8b30100e0fe04085800000012000d0030b4010074fd07080400000011 *00110072b401009c2805080800000011000d00aeb40100fc0708080400000011001100f0b40100 *9c2805080600000012000d002db50100977b06081c00000012000d0045b50100d0f80708040000 *001100110087b50100ec9606080800000011000d0093b50100506506082500000012000d00acb5 *0100444206080800000011000d00c3b5010054040808040000001100110004b601000c9606081b *00000012000d0016b60100e84406080800000011000d0039b6010040ec07080400000011001100 *7bb6010014ad0508db00000012000d008eb601007b0a07081600000012000d009db60100bcab05 *081000000011000d00b8b60100bc1605080700000012000d00ecb60100b9890608220000001200 *0d0000b70100035306082200000012000d000fb701007c4006081000000011000d0035b70100d8 *bf04083700000012000d005eb70100e8f507080400000011001100a1b7010034f2070804000000 *11001100e3b7010010da06089400000012000d00f6b70100f0f205081000000011000d0012b801 *0014120808040000001100110035b801002c19080800080000110011004ab80100d0cd05080800 *000011000d0060b80100f4ec07080400000011001100a3b8010054ea07080400000011001100e4 *b8010050cc05080c00000011000d00f9b80100994e06080b00000012000d0006b90100ecfa0608 *0800000011000d001bb90100c8ee06080800000011000d002eb901003c08080804000000110011 *0071b90100d8be04080300000012000d0086b9010064fb07080400000011001100c8b9010094d1 *05080c00000012000d00e0b90100b04e05080c00000011000d001cba0100465e06080600000012 *000d0034ba0100734606082900000012000d0040ba0100fc9605080800000011000d005cba0100 *6c9d05088700000012000d0073ba0100843705082d00000012000d00a8ba01000ce90708040000 *0011001100f6ba010050d605082800000012000d001cbb0100fcf3070804000000110011005ebb *0100540708080400000011001100a0bb010060e807080400000011001100dabb0100c4e7070804 *0000001100110020bc0100ec0b0808040000001100110062bc0100083706080800000011000d00 *79bc0100a0ef06080800000011000d0095bc0100f89b05080c00000011000d00acbc0100f8c304 *080300000012000d00efbc01005c0a0808040000001100110031bd010040e80608100000001200 *0d0047bd01000cf90708040000001100110089bd0100401308080400000011001100a1bd010034 *0308080400000011001100e2bd0100749e04084b00000012000d00f2bd010060a3050808000000 *11000d000fbe01007c080808040000001100110052be010018c004086900000012000d0083be01 *00fcf506080800000011000d0096be01008c0508080400000011001100d7be01000c0408080400 *00001100110018bf01003c0b080804000000110011005abf010034fe070804000000110011009c *bf01001c0b08080400000011001100debf0100402906085800000012000d00f6bf0100c4f70508 *4300000012000d0011c001006c1905080800000011000d004cc00100083005080700000012000d *007ec0010098d206082200000012000d0097c00100bc7905083700000012000d00b1c001009811 *08080400000011001100c7c001004ccc0608c600000012000d00d4c001006c9a05080300000012 *000d00f0c00100e4130808040000001100110007c10100d0f5070804000000110011004ac10100 *dcfb06081e00000012000d0060c1010034f807080400000011001100a2c1010068fd0408080000 *0011000d00e9c1010018fc070804000000110011002bc201007cec070804000000110011006dc2 *0100541605080700000012000d00a3c20100cc8805080700000012000d00bfc20100202d080834 *00000011001800c9c20100f84205088700000012000d00fdc20100402606084600000012000d00 *27c3010094ec0708040000001100110069c3010094140808040000001100110084c3010094d105 *080c00000011000d009bc3010044fd06080800000011000d00b1c30100dc180808040000001100 *1100d6c30100ece60708040000001100110018c40100382c0808040000001100180028c40100f4 *06080804000000110011006ac401000c0908080400000011001100acc40100cce6070804000000 *11001100e5c40100e8180808040000001100110004c50100000000004c0000001200000019c501 *00c02d0808780000001100180028c50100a89f06080402000012000d0035c50100e0a904080500 *000012000d0044c50100902506080c00000011000d0061c50100c8e907080400000011001100ac *c50100300008080400000011001100ecc50100f0ad05080700000012000d000ac60100c02b0508 *b300000012000d0053c60100b88305080600000012000d0074c6010000f6070804000000110011 *00b7c601002c4d05082d00000012000d00ecc60100e4ed070804000000110011002ec70100cc97 *05080300000012000d004cc701003ce80708040000001100110080c70100ca7206081800000012 *000d0091c70100e4fd04081800000011000d00cfc70100d4030808040000001100110010c80100 *0000000000000000120000001bc80100000000001c000000120000002fc8010074e90708040000 *00110011006ac8010044f707080400000011001100acc80100a4e406081300000012000d00bfc8 *0100549d05080300000012000d00e4c8010088dd06089400000012000d00fbc80100f436050807 *00000012000d0030c9010040e9070804000000110011006dc901007c9205083600000012000d00 *8dc90100bceb07080400000011001100cfc90100c01106083000000012000d00e5c9010090ac05 *080700000012000d00f7c90100bc030808040000001100110038ca0100fcf504080c0000001100 *0d007aca0100f97c06085900000012000d0089ca0100068806088300000012000d0097ca0100b0 *1706080c00000011000d00acca0100b02d08080400000011001800baca0100f40c080804000000 *11001100fcca010078f9070804000000110011003ecb01009c12080804000000110011005ecb01 *000000000000000000120000006ccb010084ff07080400000011001100aecb0100d1e004089100 *000012000d00d9cb010058160808040000001100110005cc01006c0105085d00000012000d002a *cc01005cfd04080800000011000d006fcc01007c4006082000000012000d0096cc01009ce80708 *0400000011001100d8cc010063520608a000000012000d00e0cc010014f4070804000000110011 *0022cd0100fced0708040000001100110064cd010070f507080400000011001100a6cd01009ced *07080400000011001100e9cd010038e705080800000011000d00fecd0100589906080402000012 *000d000bce0100d40b080804000000110011004dce0100f4110808040000001100110077ce0100 *489f05080300000012000d0090ce010014ef04080c00000012000d00d3ce0100f8010808040000 *001100110014cf010064e60708040000001100110055cf0100e40b0808040000001100110097cf *0100d0ec07080400000011001100d9cf010078e304089100000012000d0004d001007819050808 *00000011000d0042d00100603f05086900000012000d006ed0010058fe06080c00000011000d00 *80d0010014fd07080400000011001100c2d0010028f804080800000011000d00f2d00100b43906 *080800000011000d0009d101003c0e080804000000110011004bd101004c4506080c0000001100 *0d0072d10100c01906080500000012000d0094d101004c0b08080400000011001100d6d101002f *4e06081e00000012000d00e3d1010074eb0708040000001100110025d20100f40f080804000000 *1100110042d201006c9905080700000012000d0055d201004cf806080800000011000d0069d201 *00308405080700000012000d0082d20100589706088200000012000d0095d2010084c206080c00 *000011000d00bbd20100303606085800000012000d00d3d201000c3d05083700000012000d0018 *d301003802080804000000110011005ad30100882a05087300000012000d0096d30100a0360608 *5800000012000d00aed30100683b06080800000011000d00d1d301008010080804000000110011 *00f9d301005c1605085f00000012000d0030d40100ccfc06081e00000012000d0047d40100a8f3 *0708040000001100110089d40100941e05080700000012000d00b9d4010014e807080400000011 *00110005d501004c0c0808040000001100110047d50100382305080c00000011000d0074d50100 *f49705080800000011000d0091d5010040f406084e00000012000d00a5d50100e0e106081b0000 *0012000d00bad50100343f06085b00000012000d00ded501004cec0708040000001100110020d6 *0100b4090808040000001100110062d6010020ee07080400000011001100a4d601000000000027 *04000012000000add6010054c305087300000012000d00cad601001c0308080400000011001100 *0ad70100a04f05080c00000011000d004cd70100264d06081b00000012000d0059d70100100d06 *080600000012000d007dd70100dcef07080400000011001100bfd70100787b0508250000001200 *0d00ded70100ec9f05081000000011000d00f2d70100a07505080800000011000d0030d8010024 *a606085a02000012000d003ed80100841005085d01000012000d0069d80100d838060858000000 *12000d0081d801007ce607080400000011001100b9d80100f81808080400000011001100e2d801 *00c8d304080600000012000d001dd90100eb6706081400000012000d0030d90100301408080400 *00001100110054d901007ce9070804000000110011008fd90100242c080804000000110018009b *d9010018c706080c00000011000d00aad90100bccb05080800000011000d00d0d90100bce90708 *04000000110011001cda010000000000590500001200000027da0100fc0b05080800000011000d *0063da0100004506080300000012000d008eda01000000000000000000120000009dda01006445 *06082900000012000d00aada010058f507080400000011001100ecda0100c8e206081a00000012 *000d0000db0100ccea0708040000001100110042db0100402a0808040000001100180051db0100 *7c3d05080700000012000d0089db010004b105080500000012000d00a0db010028a405080c0000 *0011000d00c2db0100ac0f08080400000011001100dddb0100442005080800000011000d000fdc *010044b10608a103000012000d0020dc010068010808040000001100110061dc01004c00060858 *00000012000d0079dc0100649505082300000012000d008ddc0100e0cd05080600000012000d00 *a7dc0100d41e05088700000012000d00dcdc01004cf806084e00000012000d00f1dc0100541208 *0804000000110011001cdd01007cc805080c00000012000d0044dd010074e70708040000001100 *110084dd0100dc2005082000000012000d00b2dd0100f8f805080c00000012000d00c8dd010028 *f8070804000000110011000ade010054f3070804000000110011004cde010050e806088d000000 *12000d005ade01002c09080804000000110011009cde0100780206081000000011000d00c2de01 *009c8005080600000012000d00e7de0100ec9905086900000012000d00fdde0100482505080700 *000012000d002edf0100748905085f00000012000d004ddf0100614c06082300000012000d0059 *df0100fce8070804000000110011009fdf0100bcfd07080400000011001100e1df01009c180808 *040000001100110007e0010064110808040000001100110020e00100740b080804000000110011 *0062e00100000000008b0000001200000075e00100940608080400000011001100b7e00100280f *06085800000012000d00cde00100e0f4070804000000110011000fe10100d88305080600000012 *000d002de101009c0b080804000000110011006fe10100ec10080804000000110011009ce10100 *103005086900000012000d00cfe10100f44a06085800000012000d00e6e10100bce70708040000 *00110011002fe2010010c404087300000012000d0066e201003d7306081e02000012000d0076e2 *0100780108080400000011001100b7e201007c3505080700000012000d00f1e2010038b3050837 *00000012000d001be301007ca205085500000012000d0030e301000c0e08080400000011001100 *72e3010024dc04083700000012000d0099e3010028d005082300000012000d00bbe30100d4ee07 *080400000011001100fde301008c0505080c00000011000d0038e40100a4a10508080000001100 *0d0051e4010054e9070804000000110011008be401007f6006080800000012000d009be40100e8 *7105085800000012000d00e4e4010038e80708040000001100110018e5010050ab06080c000000 *11000d0028e501007408080804000000110011006be501000c9805080800000011000d0087e501 *00e88b05080700000012000d00a9e50100e84c05080300000012000d00e9e5010000ea07080400 *0000110011002ae6010044cc06080600000012000d003fe6010064d90608ab00000012000d0056 *e60100d8e405080800000011000d0079e60100640908080400000011001100bbe601009c0e0808 *0400000011001100fde601004406080804000000110011003fe70100b0de06089400000012000d *0050e70100582e05080700000012000d0099e70100bcd404083700000012000d00c2e70100b012 *08080400000011001100e1e701003ced0708040000001100110024e80100c4ff06080c00000011 *000d0036e8010020e904085c00000011000d007be8010018c706082e00000012000d0089e80100 *540308080400000011001100cae8010024ed070804000000110011000de90100898d0608140000 *0012000d0019e901005c0d06080300000012000d0037e901005c8606089300000012000d0045e9 *01005c2005080700000012000d0074e90100602e080800100000110018007fe901001002080804 *00000011001100c0e9010030de05083f00000012000d00e6e9010078e507080400000011001100 *fae90100000000004c0000001200000011ea0100881205080800000011000d0054ea0100b0f904 *082000000012000d008eea010000000000b10200001200000099ea0100f0100808040000001100 *1100c3ea0100489705080300000012000d00deea0100d40905080800000011000d0015eb010094 *16080804000000110011002feb010020160808040000001100110056eb0100540b050803000000 *12000d008feb010030f804081400000011000d00c1eb0100fc080808040000001100110003ec01 *0024ed06080800000011000d0017ec0100941d06080500000012000d003bec0100841508080400 *00001100110053ec010000000000d70000001200000062ec0100840808080400000011001100a5 *ec010008e806083500000012000d00baec0100ac9f04080c00000011000d00cfec010060180808 *0400000011001100f4ec010094150808040000001100110008ed0100fcf6070804000000110011 *004aed0100f43405080700000012000d007fed010000000000610000001200000090ed0100e8c8 *05080c00000011000d00b6ed0100203d06080500000012000d00d7ed0100201308080400000011 *001100efed0100be940608ff00000012000d0002ee010084030808040000001100110043ee0100 *08c404080700000012000d0079ee01009ce707080400000011001100b3ee010068110808040000 *0011001100d6ee0100d04106085800000012000d00eeee0100140b0808040000001100110030ef *01009cbf05082300000012000d0059ef010054f6070804000000110011009cef010044e4070800 *0000001000f1ffafef010034d506088800000012000d00bfef010094d305082300000012000d00 *dcef0100b87a05080700000012000d00f1ef0100ccdd04086900000012000d0017f001001c1208 *0804000000110011003af00100ecfa070804000000110011007cf001000cf30708040000001100 *1100bef0010010f605080800000011000d00d9f00100b0ee070804000000110011001bf1010037 *5f06087e00000012000d0029f10100ff6706089f02000012000d0034f10100d8a3050808000000 *11000d0056f10100da0407089b00000012000d006af10100c4f507080400000011001100acf101 *006ced05080c00000011000d00c0f10100789a05080300000012000d00d9f1010048f307080400 *0000110011001bf2010048f6070804000000110011005ef2010000000000ff000000120000006f *f20100000000003d020000120000007ef20100508507085800000012000d008ef2010094c90508 *3f00000012000d00a6f2010070f207080400000011001100e8f20100483e05085800000012000d *002ef301009405080804000000110011006ff30100443506085800000012000d0087f3010004b4 *05087d00000012000d00a2f30100340c08080400000011001100e4f301006c0b08080400000011 *00110026f40100c0f00708040000001100110068f401003c0607082c00000011000d007bf40100 *d88305080800000011000d0098f40100f40208080400000011001100d8f40100b49905082d0000 *0012000d00f2f4010070140808040000001100110008f50100442005080600000012000d003bf5 *0100f89b05080b00000012000d0053f50100d8d005080c00000011000d006ff501000ae204087a *00000012000d009af50100ac7805080c00000011000d00d4f50100341408080400000011001100 *f9f50100c40c080804000000110011003bf601005000080804000000110011007bf60100009f05 *080800000011000d0092f60100e07705080c00000011000d00dbf60100b95406080c0000001200 *0d00ebf60100a8b005080700000012000d0002f701001cce05080800000011000d001ef7010008 *fd06080800000011000d0034f70100b37b06082300000012000d0042f70100902c080804000000 *1100180054f70100114f06080800000012000d005ff7010038270808000000001000f1ff6bf701 *00900108080400000011001100acf70100649f05080c00000012000d00c3f701001c0c08080400 *00001100110005f8010078000808040000001100110046f80100f8ad05085500000012000d0065 *f8010004e10608ba00000012000d007af80100dc0d08080400000011001100bcf801006b510608 *7000000012000d00ccf8010050d205080c00000012000d00e0f801007c8c05083c00000012000d *000bf90100dc0e080804000000110011004df90100fc05080804000000110011008ff901001819 *08080400000011001100a8f901005cfd04080300000012000d00eef901004c1008080400000011 *0011000dfa0100249f05080800000011000d0028fa01004cf2070804000000110011006afa0100 *50d605081800000011000d008ffa01005cdb05080c00000011000d00b0fa0100604b0608a50000 *0012000d00b5fa0100081906080500000012000d00dafa010018f9070804000000110011001cfb *0100ec07080804000000110011005efb010084f607080400000011001100a0fb01002c05080804 *00000011001100e1fb0100de6206088c00000012000d00eafb0100f4b406083804000012000d00 *fcfb0100c8aa05080800000011000d0016fc0100a40b0808040000001100110058fc01005cd406 *083500000012000d006afc01002c3b05089f00000012000d00a9fc010030e60708040000001100 *1100eafc0100bc3705080800000011000d0026fd0100747e05083200000012000d0047fd010010 *da04080800000011000d0086fd0100e0f806080800000011000d009afd01009029050807000000 *12000d00d1fd01003f760608c000000012000d00e5fd01007c0f0808040000001100110007fe01 *001c080808040000001100110049fe0100689105080700000012000d005cfe010004e904080300 *000012000d00a1fe01006cc806080600000012000d00b1fe0100741108080400000011001100d5 *fe01004c040808040000001100110016ff010064fe04080c00000011000d0046ff0100dc970508 *0400000011000d0060ff01009c0308080400000011001100a1ff010094e805080800000011000d *00b6ff010008e9070804000000110011000000020030fd05080c00000011000d0023000200c0fc *0708040000001100110065000200244806081700000012000d006e000200617407088806000012 *000d007c00020074a205080700000012000d0090000200240d08080400000011001100d2000200 *70010808040000001100110013010200843306085800000012000d002b010200b4790508070000 *0012000d004401020078f0070804000000110011008601020054db04080700000012000d00a901 *0200c8fa07080400000011001100eb010200fcf9070804000000110011002d02020024fe060828 *00000012000d0040020200a8c206086000000012000d005e020200242505082300000012000d00 *9402020000ce05080800000011000d00ad020200303b06080800000011000d00d3020200040c08 *080400000011001100150302007c1606085800000012000d002b0302004c4b0608130000001200 *0d0038030200380d06080300000012000d0055030200040b080804000000110011009703020014 *eb07080400000011001100d9030200e89506082200000012000d00e703020074fa060808000000 *11000d00fc03020000000000000000001200000003040200840d08080400000011001100450402 *0038fa0708040000001100110087040200ccf907080400000011001100c90402002cf605080c00 *000011000d00e00402003c9705080300000012000d00f804020064a305080700000012000d000c *0502003c03080804000000110011004d050200ac0e06085800000012000d006305020000000000 *e800000012000000800502000000000000000000120000008d0502001c19080804000000110011 *00a7050200e4e405080300000012000d00ce050200949705080600000012000d00e805020014d4 *04080800000011000d002406020000ed070804000000110011006706020064fe04085d00000012 *000d0098060200c40408080400000011001100d9060200cc05080804000000110011001a070200 *525e0608b700000012000d002607020060fc070804000000110011006807020064060808040000 *0011001100aa070200e41108080400000011001100d207020000000000a701000012000000e007 *0200b0e5070804000000110011001108020044e40708000000001000f1ff22080200d8f0070804 *000000110011006408020088f104083200000012000d009b080200b82d08080400000011001800 *b9080200a01308080400000011001100cd080200540e080804000000110011000f090200301008 *08040000001100110033090200b4ff04081000000011000d0078090200f0380508a90000001200 *0d00bc09020054fc06081e00000012000d00d2090200a49705080800000011000d00eb090200f4 *e9070804000000110011002c0a02007ce406080500000012000d00390a0200a43905089f000000 *12000d00780a02007c3405080300000012000d00c10a0200c4ea05080c00000012000d00e10a02 *00e01606080c00000011000d00010b020070fc04082000000012000d003c0b0200303606080800 *000011000d00530b02002019080804000000110011006c0b02004cd005080500000012000d008d *0b02007ceb06080c00000011000d00a20b0200241208080400000011001100ca0b0200d4e60708 *0400000011001100030c0200f0f907080400000011001100450c020020d404080800000011000d *007c0c020024e805080800000011000d00910c0200dcfb07080400000011001100d30c0200c40f *08080400000011001100f40c0200ccc805080d00000012000d001d0d02001c0708080400000011 *0011005f0d020014e907080400000011001100a50d0200fc0a08080400000011001100e70d0200 *0c0808080400000011001100290e02000ced070804000000110011006c0e02003cea0708040000 *0011001100ad0e0200441505080700000012000d00e00e0200e0e804080300000012000d00260f *02005c7005089000000012000d006c0f0200c4e605080800000011000d00880f020030d3050858 *00000012000d00a60f0200147b05085500000012000d00bf0f0200e8ec06080800000011000d00 *ce0f02009cf60708040000001100110010100200d02f05083700000012000d005210020060e607 *08040000001100110092100200cce807080400000011001100cc10020028340508080000001100 *0d0021110200d4ec06080800000011000d0030110200a00007089800000012000d0042110200d8 *c906080c00000011000d005111020010fb05081800000011000d0073110200e40a060810000000 *11000d008f11020078b305084100000012000d00bc11020094fb07080400000011001100fe1102 *00cce5070804000000110011002f1202005c120808040000001100110045120200203b06080600 *000012000d006d120200e4c404080700000012000d009d120200a8e807080400000011001100dd *120200a80b05080800000011000d00151302000c16080804000000110011003b13020064970508 *0600000012000d0052130200844c06081b00000012000d005e1302000000000046010000120000 *006e1302009c2606080c00000011000d0097130200c80208080400000011001100d0130200667c *06084a00000012000d00df1302007c9205080c00000011000d00fe1302009c0608080400000011 *0011004014020024f0070804000000110011008214020000e907080400000011001100cb140200 *e40005080f00000012000d000f150200a0e6070804000000110011004915020090420508070000 *0012000d00851502007c3706085800000012000d009d150200b8e406084900000012000d00ac15 *0200a8d304080800000011000d00e0150200a83e05080800000011000d001c1602007018080804 *0000001100110034160200acec06080800000011000d0043160200240508080400000011001100 *84160200fcf504082000000012000d00c716020040d404080700000012000d00ee160200ab7a06 *08cb00000012000d00031702008405080804000000110011004417020000000000f70100001200 *000057170200f4dc06089400000012000d00691702005e5706081000000012000d007717020070 *130808040000001100110099170200202c06082000000012000d00ba1702006c11080804000000 *11001100e6170200684706081c00000012000d00f31702006014080804000000110011000e1802 *00749705080600000012000d0028180200cc8605087d00000012000d0046180200f01906080500 *000012000d0069180200b40408080400000011001100aa180200dcf005080800000011000d00bc *180200540808080400000011001100ff1802006cf60708040000001100110042190200943a0608 *0800000011000d0059190200acbf04082300000012000d007e1902003c11080804000000110011 *00a4190200c07a05084b00000012000d00ba190200ac7805081700000012000d00f51902007405 *08080400000011001100361a020050cc05085d00000012000d004c1a0200756506082500000012 *000d005f1a0200603806080800000011000d00761a020070e807080400000011001100a31a0200 *00e905085800000012000d00b91a0200a4da06089400000012000d00cd1a0200ec3e06080c0000 *0012000d00e31a0200840408080400000011001100241b02000c0708080400000011001100661b *0200d41108080400000011001100861b02000c0608080400000011001100c81b0200c883050808 *00000011000d00e21b0200e4a305083700000012000d00f91b0200981205086900000012000d00 *2e1c020050f105081000000011000d00411c0200304506080300000012000d006b1c02003c4506 *080800000011000d008f1c02007cc805080c00000011000d00b61c0200640e0808040000001100 *1100f81c0200bc08080804000000110011003a1d02001408080804000000110011007c1d020000 *0000006f00000012000000911d0200ac7105081800000011000d00d01d0200b883050808000000 *11000d00f01d020028d005081800000011000d00111e0200e00108080400000011001100521e02 *0068fa07080400000011001100941e0200000000008500000012000000a61e02001c0508080400 *000011001100e71e0200acec07080400000011001100291f020060e40708000000002000110034 *1f02001d4e06081200000012000d003f1f0200340a08080400000011001100811f0200d4080808 *0400000011001100c31f0200d4e804080800000011000d000620020068e6070804000000110011 *00412002000cf106080900000012000d004a200200542005080600000012000d0080200200c407 *08080400000011001100c220020064f807080400000011001100042102006ce804085f00000012 *000d00432102008c0505082f00000012000d007f2102003c9f05080800000011000d009a210200 *0ce707080400000011001100c4210200c41605088700000012000d00f9210200000000004c0000 *00120000000922020060e906083d00000012000d001a2202006405080804000000110011005b22 *020090f9070804000000110011009d220200d43f05083700000012000d00d12202002409080804 *000000110011001323020040f507080400000011001100552302002c0a08080400000011001100 *97230200d80d05080c00000012000d00d1230200dce80708040000001100110009240200802a05 *080700000012000d004424020054f804080c00000011000d0082240200f09c0508060000001200 *0d00a8240200eceb07080400000011001100ea24020044de04080c00000011000d001b25020044 *0f0808040000001100110044250200498906083700000012000d005925020094f805080c000000 *11000d006e2502002cfa07080400000011001100b0250200c44e05084b00000012000d00e62502 *0098ca05083800000012000d000a260200603806085800000012000d00222602002cf107080400 *00001100110064260200889e05080c00000011000d007b260200b84406080300000012000d00a6 *2602002c1008080400000011001100ca2602002c07080804000000110011000c270200cc0c0808 *04000000110011004e2702002c0d0808040000001100110090270200e8d304080600000012000d *00cc270200b4e60708040000001100110005280200307d0708b800000012020d001228020028b2 *05087d00000012000d00362802000c000808040000001100110077280200b0fa06081e00000012 *000d008d280200f8c406080800000011000d009c280200a0e906088a00000012000d00a9280200 *901205080700000012000d00dd280200e09c05080600000012000d000429020020e80708040000 *0011001100382902006c8905080700000012000d005629020070ff06080c00000011000d006829 *0200529406080c00000012000d0072290200d48507084900000012000e00782902000747060829 *00000012000d0084290200109b05080700000012000d009a290200a4bf04080700000012000d00 *be290200000000008500000012000000cf290200f43a06080800000011000d00f82902008a4f06 *085000000012000d00022a0200801205080800000011000d00422a0200ecfd0708040000001100 *1100842a0200489705080800000011000d009e2a02004cfe07080400000011001100e02a0200f0 *1208080400000011001100f82a02009cea07080400000011001100392b020050fd040803000000 *12000d007d2b0200c0af05080500000012000d009e2b0200ac2906082800000012000d00bc2b02 *0084e507080400000011001100cc2b0200c8a905081000000011000d00e72b0200787b05080c00 *000011000d00052c0200f08b05087d00000012000d00282c0200fc7905082d00000012000d0047 *2c02006ce907080400000011001100822c02006c7107080e00000012000d008c2c0200c8e50608 *9200000012000d009f2c0200881508080400000011001100bc2c020040bf05084e00000012000d *00d92c0200e4ea070804000000110011001b2d020004e7070804000000110011004a2d02009019 *05080800000011000d008b2d0200780b05080300000012000d00c52d0200740c05080800000011 *000d00ef2d0200b4ed04083200000012000d00262e0200240e08080400000011001100682e0200 *44fd04080800000011000d00b02e0200f8f107080400000011001100f22e02009c0b0508030000 *0012000d002d2f020008d404080800000011000d00662f020059df04087a00000012000d00912f *020028c405084b00000012000d00ba2f0200f40708080400000011001100fc2f020018f8040806 *00000012000d002b3002002c0f0808040000001100110053300200f8ca05080700000012000d00 *65300200640a08080400000011001100a730020038f705080c00000011000d00c6300200f09c05 *080800000011000d00eb30020000000000db01000012000000fd300200889a0508070000001200 *0d001731020084fc070804000000110011005931020064f2070804000000110011009b31020070 *e507080400000011001100ad31020000cb0508b300000012000d00c0310200040e080804000000 *1100110002320200d02806080800000011000d0020320200657207089500000012000d002b3202 *002ca105080c00000012000d004932020028d704081000000011000d007e32020078fa05085800 *000012000d00a432020064e707080400000011001100e732020053ea06080600000012000d0000 *33020024f60708040000001100110043330200ec040808040000001100110084330200641f0508 *2300000012000d00bc330200981308080400000011001100d2330200ac0a080804000000110011 *0014340200d0cd05080600000012000d002b34020088f104081000000011000d0061340200a403 *07089b00000012000d007534020088f807080400000011001100b7340200a8d304080600000012 *000d00ec340200e8910608cb00000012000d00f53402006c0d06080800000011000d000a350200 *8c06080804000000110011004c35020000000000b9010000120000005f35020080430508070000 *0012000d0096350200b08105082d00000012000d00aa350200841905080800000011000d00e835 *0200103b06080600000012000d000d3602005c160808040000001100110039360200ece8040808 *00000011000d00793602000000000036000000120000008a3602001c8105080700000012000d00 *a0360200900f08080400000011001100b836020060f905082000000012000d00df360200e0ee07 *08040000001100110021370200c44406080800000011000d004a37020094080808040000001100 *11008d3702001c2c0808040000001100180096370200255306081f00000012000d00a237020074 *f004081000000011000d00d8370200649705080800000011000d00ee370200bcd20608e3000000 *12000d00fc370200bc05080804000000110011003d380200cc03080804000000110011007e3802 *00000000002c010000120000008b3802004c1905080800000011000d00cd380200309f05080300 *000012000d00e638020020fc05080c00000011000d0008390200c88305080600000012000d0023 *390200bcfd04080300000012000d006b39020098fa07080400000011001100ad390200cc0a0808 *0400000011001100ef390200144005085500000012000d002b3a02000016080804000000110011 *00453a02007c0b08080400000011001100873a0200f0ed07080400000011001100c93a0200180b *05080800000011000d00013b0200940f08080400000011001100183b0200a0fe07080400000011 *0011005a3b0200c0ef04080c00000011000d009e3b020066c406080900000012000d00b43b0200 *2cce05080c00000012000d00cb3b0200f403080804000000110011000c3c0200fc2a0508070000 *0012000d00533c02000e8906083b00000012000d00683c0200b8fb07080400000011001100aa3c *0200a88105080700000012000d00bd3c0200e0ee06080800000011000d00d33c02007813080804 *00000011001100f23c0200f0be0408b300000012000d00103d0200a8f907080400000011001100 *523d0200000000002300000012000000623d02008c14080804000000110011007c3d020060f605 *081800000011000d00943d0200e88d05089f00000012000d00b63d0200840c0808040000001100 *1100f83d0200001d05083700000012000d002d3e0200e0e804080800000011000d00723e02000c *0a08080400000011001100b43e0200f8f304083200000012000d00eb3e020068e7070804000000 *11001100313f020010ef06080800000011000d00463f0200b01008080400000011001100713f02 *00a00f06085800000012000d00873f020050d504084b00000012000d00b43f0200b01706082000 *000012000d00ca3f0200443205082800000012000d0008400200f8e5070804000000110011004d *400200b81808080400000011001100674002000000000030000000120000007a400200b4080808 *0400000011001100bc400200c01708080400000011001100d6400200bcaa05080800000011000d *00ed400200bcfa070804000000110011002f41020080c806080c00000011000d004341020028fb *06080800000011000d0058410200c0ec06080800000011000d006741020004f507080400000011 *001100a9410200b4f907080400000011001100eb4102007cf2070804000000110011002d420200 *6c0105080c00000011000d0051420200000000003a0000001200000069420200c4090808040000 *0011001100ab420200ac9f05082900000012000d00c342020094f204080c00000012000d000543 *0200589706080800000011000d0017430200bc4605081000000011000d005a430200883b060865 *00000012000d00714302005c1106080800000011000d008b430200e81008080400000011001100 *b843020010ef07080400000011001100fa43020008e70708040000001100110028440200dcf807 *0804000000110011006a440200d8ea07080400000011001100ac440200103b0608080000001100 *0d00d044020018010808040000001100110011450200f03306085800000012000d0029450200cc *0d080804000000110011006b450200f40b08080400000011001100ad45020054e7070804000000 *11001100ea45020054fc070804000000110011002c460200601708080400000011001100464602 *00741208080400000011001100634602009c3905080700000012000d00a1460200849a05080800 *000011000d00bc460200140d08080400000011001100fe46020014070808040000001100110040 *470200d8e505080800000011000d005c470200380107089b00000012000d0070470200d40d0808 *0400000011001100b24702001cef07080400000011001100f4470200843d0508b300000012000d *002d4802007c3705080700000012000d00614802003c9705080800000011000d007848020044b5 *05080700000012000d008f480200e0eb07080400000011001100d14802002cea06080300000012 *000d00e948020060ed070804000000110011002c49020000000000000000001200000035490200 *20ff06084100000012000d0048490200440d080804000000110011008a4902004ce80708040000 *0011001100c0490200000c05085400000011000d00fd490200dcc005085d00000012000d00204a *0200ac10080804000000110011003f4a02000c3605080700000012000d00754a0200d00d060858 *00000012000d00924a0200c4d306082f00000012000d009e4a02000c1008080400000011001100 *b54a020030f006080800000011000d00c84a0200759006081800000012000d00da4a02005c0408 *0804000000110011001b4b020050f7070804000000110011005d4b0200c0140808040000001100 *11007d4b02007c0d08080400000011001100bf4b0200c0a105080700000012000d00d34b0200e2 *7206081500000012000d00e64b0200807605081800000011000d00294c020080fd040808000000 *11000d00734c020080ee07080400000011001100b54c0200a8eb06080c00000011000d00ca4c02 *00d42c06080800000011000d00f24c0200fc1f06080c00000012000d00124d020068f506080800 *000011000d00254d02008c1608080400000011001100454d020030df05080800000011000d0058 *4d0200885606083300000012000d00674d02002c0c08080400000011001100a94d02003c450608 *0300000012000d00ce4d0200cc9705080800000011000d00eb4d020088f2070804000000110011 *002d4e02000c0b05080800000011000d00654e0200c8eb07080400000011001100a74e020008fd *07080400000011001100e94e0200643406080800000011000d00004f0200f81308080400000011 *001100184f0200d8cb05080c00000012000d00324f0200c44406080300000012000d005c4f0200 *9a6506081500000012000d006c4f02008d4506082900000012000d00794f020024210608580000 *0012000d00954f0200641608080400000011001100b64f0200041a06080c00000011000d00d64f *0200b64506082100000012000d00e34f0200ec080808040000001100110025500200a42c080804 *000000110018002e50020038d404080800000011000d0069500200280f08080400000011001100 *85500200000000004a000000120000009c500200acfe07080400000011001100de500200781006 *080800000011000d0004510200609a05080300000012000d001d510200d8380608080000001100 *0d0034510200fcd404084b00000012000d005d51020028a405080c00000012000d00805102005c *0808080400000011001100c3510200401d0508c700000012000d00fa51020088e7070804000000 *110011003b5202001cfe070804000000110011007d52020040f304080c00000011000d00c05202 *009cb105085500000012000d00dd520200bccb05080300000012000d0004530200ccfc06080800 *000011000d001a5302001a4906080d00000012000d002b530200549d05080800000011000d004f *530200b40b080804000000110011009153020048d404086900000012000d00b9530200e0a50508 *2100000012000d00db5302004ccf06085e01000012000d00e55302004018080804000000110011 *00ff530200b0e705080800000011000d00145402008cfb04082000000012000d004f540200ecc4 *04089f00000012000d00805402002fea06080600000012000d009954020050ea05080800000011 *000d00ae54020010e205080800000011000d00c8540200441108080400000011001100e0540200 *642005086900000012000d00105502002c2c080804000000110018001355020040390608080000 *0011000d002a5502003407080804000000110011006c550200480208080400000011001100ae55 *020038db06089400000012000d00c2550200801108080400000011001100e15502000c9d050808 *00000011000d0008560200bc5f07081600000012000d001a56020060ff07080400000011001100 *5c560200ac4406080800000011000d0081560200440708080400000011001100c35602007cfb07 *080400000011001100055702001ce904080300000012000d004557020054970508080000001100 *0d0060570200041008080400000011001100795702004c9005080700000012000d0090570200a0 *0506085600000012000d00b057020080fa07080400000011001100f2570200a8ea070804000000 *110011003458020034160808040000001100110052580200249d05080800000011000d00735802 *008cfd04080800000011000d00bd5802005cfd07080400000011001100ff58020050e907080400 *0000110011003a590200609a05080800000011000d0052590200f80f0808040000001100110075 *590200880f080804000000110011008b590200b8a106080c00000011000d009959020000000000 *2300000012000000ac590200500108080400000011001100ed5902009000080804000000110011 *002e5a0200acfb07080400000011001100705a02008d9006089e00000012000d007f5a0200dc0b *08080400000011001100c15a020000000000d200000012000000d15a0200944406080800000011 *000d00f75a0200440d06080300000012000d00175b0200d49805085800000012000d00305b0200 *e0e507080400000011001100645b0200d04406080300000012000d00945b0200d4150808040000 *0011001100b15b020018ed07080400000011001100f45b02009c8005080800000011000d00185c *02008802080804000000110011005a5c0200a07c05083200000012000d007a5c02000000000000 *00000012000000825c0200343f06080c00000011000d00a55c0200789a05080800000011000d00 *bd5c020004d705085d00000012000d00e55c02003c9d05080800000011000d00075d0200b4ff07 *080400000011001100495d0200c4dc04084100000012000d00735d0200ac0c0808040000001100 *1100b55d0200bcdc04080700000012000d00de5d0200a81905081000000011000d00125e020078 *1c06081800000011000d00295e020008ea04080800000011000d005e5e0200ac2505084d000000 *12000d00935e0200780208080400000011001100d65e0200c40508080400000011001100175f02 *0028ec06080c00000011000d002d5f0200d011080804000000110011004c5f0200e40608080400 *0000110011008e5f0200ac2505081000000011000d00c25f020048f00708040000001100110004 *600200ac2805080800000011000d003b6002002cab05080700000012000d004f600200203b0608 *0800000011000d007660020040fe07080400000011001100b8600200fc9605080600000012000d *00d5600200d0f2070804000000110011001761020020e906083d00000012000d0027610200d49c *05080800000011000d0047610200f81c05080700000012000d007b6102009ce607080400000011 *001100bc61020080f107080400000011001100fe61020018fc06080800000011000d0013620200 *207505085800000012000d004b62020020d404080600000012000d0083620200ed7b0608790000 *0012000d008d6202003c0d08080400000011001100cf62020044fd070804000000110011001163 *0200a8fa04082000000012000d004c63020060dc06089400000012000d005f6302008cb4050823 *00000012000d0075630200200208080400000011001100b6630200fc3405087d00000012000d00 *ec63020004dc05085d00000012000d000e640200d40a0808040000001100110050640200e8ed05 *082300000012000d0068640200fcf506084e00000012000d007c640200fce106084e0000001200 *0d0091640200f8aa05080300000012000d00ae6402007cf507080400000011001100f0640200e8 *9705080800000011000d000a650200d800080804000000110011004b6502007c18080804000000 *110011007765020088f507080400000011001100b9650200400f05080c00000011000d00f46502 *00d016080804000000110011001f660200d4f406084e00000012000d0033660200cc1608080400 *000011001100566602003ceb06080c00000011000d006f660200840b05080800000011000d00a8 *660200e0e807080400000011001100db66020010ed06080800000011000d00ea66020045060708 *5e01000012000d00f5660200bc2706080500000012000d0018670200683b06080600000012000d *003c6702006cf9070804000000110011007e670200249d05080300000012000d00a0670200309f *05080800000011000d00b8670200a82d08080400000011001800c96702002c0308080400000011 *0011000a6802007f4e06080900000012000d00166802009cff0708040000001100110058680200 *381205080700000012000d008e680200a00108080400000011001100cf68020010e90408030000 *0012000d0015690200801808080400000011001100396902003801080804000000110011007b69 *0200e01606086600000012000d009c690200a4e907080400000011001100d36902001e56060833 *00000012000d00e2690200f85406089a00000012000d00e7690200d4a205080700000012000d00 *f9690200389905083200000012000d000e6a02007403080804000000110011004f6a02006c9e04 *080700000012000d005e6a020008d505081000000011000d00836a020038270808000000001000 *f1ff8a6a02000c0508080400000011001100cb6a02009cfc070804000000110011000d6b020034 *ca05080800000011000d00266b020050ee07080400000011001100686b020028d7040828000000 *12000d009e6b0200a88507080000000012020d00b56b0200e01608080400000011001100d36b02 *0094aa05080c00000012000d00f66b020038b90608de04000012000d00096c0200c49506081f00 *000012000d00186c020098fd070804000000110011005a6c0200e4e70708040000001100110097 *6c020080250808000000001100f1ffad6c020000000000c700000012000000bd6c020084110808 *0400000011001100d76c02001c0908080400000011001100196d0200f8e7070804000000110011 *00536d02008c18080804000000110011006b6d0200fc430508a900000012000d009e6d0200440c *08080400000011001100e06d0200e03e0808000000001000f1ffe56d0200f4d506085d00000012 *000d00ff6d0200515606083700000012000d000f6e0200340808080400000011001100526e0200 *ac9c05080800000012000d006a6e02002c21080808010000110011007e6e0200c8e40508060000 *0012000d00a36e0200500208080400000011001100e56e0200cc0708080400000011001100276f *0200040408080400000011001100686f0200984e05080800000011000d00a36f02004bc4060809 *00000012000d00b96f020024e807080400000011001100ed6f02005c0c08080400000011001100 *2f70020050fa0708040000001100110071700200bcfd06081e00000012000d0088700200640708 *080400000011001100ca70020004e904080800000011000d000e710200d48d06085b0000001200 *0d001d710200224007082800000012000d0028710200ac07080804000000110011006a710200b4 *fc07080400000011001100ac71020070ec07080400000011001100ee710200dcfa05080c000000 *11000d000f720200e04c06082300000012000d001b72020036e004089b00000012000d00467202 *00dcfb06080800000011000d005b72020088d904082300000012000d008c7202005cdb05085d00 *000012000d00ae720200e09005088700000012000d00cb7202002000080804000000110011000c *7302004c4506081700000012000d0034730200925506085e00000012000d003f730200f0170808 *040000001100110059730200c00b05080300000012000d009473020064a105080700000012000d *00a7730200c8ed07080400000011001100e1730200f87005089000000012000d002b7402005812 *08080400000011001100537402008811080804000000110011006a74020080e507080400000011 *0011007a740200f8f707080400000011001100bc7402001cf207080400000011001100fe740200 *f84f05080c00000011000d003f750200601c05089500000012000d007875020030180808040000 *0011001100927502001cec07080400000011001100d475020074a005084b00000012000d00e875 *0200c0f3070804000000110011002a7602001419080804000000110011003f7602003b57060814 *00000012000d004a7602005416080804000000110011006a760200385206081600000012000d00 *85760200b0f407080400000011001100c7760200d8f30708040000001100110009770200649d05 *080700000012000d001f770200109205085d00000012000d003477020078190508030000001200 *0d0073770200582905083700000012000d00a877020084e406080600000012000d00ba77020038 *f707080400000011001100fc77020084ec06080800000011000d000b7802007c07080804000000 *110011004d7802005dc406080900000012000d006378020009e404087a00000012000d008e7802 *00101308080400000011001100a67802004cef07080400000011001100e878020094ca06080c00 *000011000d00f77802000000000032000000120000000979020010f2070804000000110011004b *790200083706085800000012000d0063790200649f05080c00000011000d007979020000000608 *0c00000012000d008d790200b8a106080402000012000d009a790200a8ed070804000000110011 *00de790200900705082000000012000d00167a0200000000004300000012000000287a020008fa *06080800000011000d003c7a0200202c06080c00000011000d005c7a020048ff07080400000011 *0011009e7a0200ac2d08080400000011001800af7a0200acf207080400000011001100f17a0200 *6c0b05080300000012000d002a7b0200640d080804000000110011006c7b020034090808040000 *0011001100ae7b02004c0808080400000011001100f17b0200f4a905080700000012000d00087c *020068f7070804000000110011004a7c020094be04080c00000011000d005a7c0200a4fd070804 *000000110011009c7c020058e807080400000011001100d27c0200d4e804080300000012000d00 *167d0200f815080804000000110011003b7d02008cfd070804000000110011007d7d020048c706 *089100000012000d008e7d020098af05082800000012000d00b07d020028f20708040000001100 *1100f27d020054ed07080400000011001100357e02000c9805080300000012000d00527e0200c8 *fd04080300000012000d00967e020030b305080700000012000d00bf7e0200840e080804000000 *11001100017f0200db4806081f00000012000d00197f0200a407080804000000110011005b7f02 *003c1408080400000011001100807f0200549f05080300000012000d009c7f0200bce507080400 *000011001100ce7f0200fc0d080804000000110011001080020094040808040000001100110051 *8002008ce8070804000000110011008d800200188506084600000012000d00948002004cfb0708 *0400000011001100d680020004ab05080800000011000d00ef80020048c106087000000011000d *00068102008cc806089100000012000d0015810200ff7007083500000012000d002081020084f9 *070804000000110011006281020048e00608ba00000012000d0078810200d8e707080400000011 *001100b9810200774e06080800000012000d00c481020034f904082000000012000d0000820200 *d01805080c00000012000d003e820200d013080804000000110011006082020048310608100000 *0011000d0075820200d818080804000000110011009b820200a40608080400000011001100dd82 *02008ce406080300000012000d00f082020034fb070804000000110011003283020068ae050818 *00000011000d0057830200345206080100000012000d0062830200d4f707080400000011001100 *a4830200d45f07087b10000012000d00b1830200a4ee07080400000011001100f3830200280108 *08040000001100110034840200804005081000000011000d007a84020098170508070000001200 *0d00ac840200484f05080700000012000d00e6840200dcc706088400000012000d00f484020074 *ee070804000000110011003685020000110808040000001100110054850200f0f106084e000000 *12000d0068850200dc0408080400000011001100a985020044ed06080800000011000d00bd8502 *0024fe06080c00000011000d00cf850200a03206085800000012000d00e7850200901108080400 *000011001100fd850200214606082900000012000d000a860200107605085800000012000d0049 *860200bcb305080700000012000d005e860200809405083800000012000d0074860200d8fe0608 *3b00000012000d0087860200589906080c00000011000d0095860200074906080800000012000d *00a48602008ce707080400000011001100d78602002cfa04080c00000011000d00128702000000 *0000af000000120000002587020064c205080700000012000d003b8702007c0508080400000011 *0011007c870200ec4505080600000012000d00be87020060e707080400000011001100ff870200 *d41306082000000012000d001a880200a0f5070804000000110011005c880200a8fa04080c0000 *0011000d0096880200244506080800000011000d00ba880200940d08080400000011001100fc88 *020058f2070804000000110011003e8902004022080886000000110011004c890200a413080804 *00000011001100618902001ca305082d00000012000d00778902005cf407080400000011001100 *b98902003e4c06082300000012000d00c4890200c81808080400000011001100ed8902007c0908 *0804000000110011002f8a0200600b05080800000011000d00678a020064ec0708040000001100 *1100a98a020034ed06080800000011000d00bb8a020020fd07080400000011001100fd8a0200d4 *e807080400000011001100348b0200c0f907080400000011001100768b0200d01805080c000000 *11000d00b38b0200bd4606082100000012000d00bf8b020060f907080400000011001100018c02 *00b43605080700000012000d00388c0200d02d05088700000012000d007e8c020070f604080c00 *000011000d00b28c0200b00108080400000011001100f38c0200e40b05080300000012000d002e *8d0200ec4c05080700000012000d006c8d02003c0a08080400000011001100ae8d020064080808 *0400000011001100f18d02006ce707080400000011001100378e02001c06080804000000110011 *00798e0200000000008401000012000000878e0200003b06080800000011000d00ad8e020020cd *06080c00000011000d00bd8e020070fc04080c00000011000d00f78e0200ac0508080400000011 *001100388f02001cf8070804000000110011007a8f020084e707080400000011001100b98f0200 *f4f207080400000011001100fb8f02008ca80608b602000012000d000a900200e8440608030000 *0012000d002e9002005405080804000000110011006f900200bc0908080400000011001100b190 *0200e8d304080800000011000d00ec9002003ce70708040000001100110029910200c8e6070804 *0000001100110070910200040808080400000011001100b2910200ec1108080400000011001100 *da910200f43105080300000012000d0020920200298f06081001000012000d0029920200d8d005 *082900000012000d004692020028e707080400000011001100849202000cb10508070000001200 *0d0099920200a04406080800000011000d00bd920200d4fa07080400000011001100ff92020094 *d305080c00000011000d001b9302000cff070804000000110011005d930200882106080c000000 *11000d007d93020040bf05080c00000011000d009993020024c30608eb00000012000d00ab9302 *003c0608080400000011001100ed9302007404080804000000110011002e940200c4eb04080c00 *000011000d006d940200e7e204089100000012000d009894020044e40708000000001000f1ffab *940200ac9f04082000000012000d00c194020044050808040000001100110002950200a80b0508 *0300000012000d003b950200c0ef04080c00000012000d0080950200c4b305083700000012000d *00969502000c9705080600000012000d00b2950200b00208080400000011001100f3950200a89f *06080c00000011000d00019602009d8d06081f00000012000d0008960200882106082000000012 *000d00299602003cc406082c00000011000d003e960200707f07083302000012020d0047960200 *20a605081000000011000d0067960200189b0508d100000012000d007e960200c89c0508080000 *0011000d009b960200007706081100000012000d00aa96020094e807080400000011001100e396 *020050e70708040000001100110028970200b8f706080800000011000d003c9702000000000099 *0000001200000057970200acf80708040000001100110099970200788a05081000000011000d00 *c4970200a0170508b300000012000d00f797020098f70708040000001100110039980200f05506 *082e00000012000d003f980200282d05080700000012000d00829802003cf30708040000001100 *1100c498020044080808040000001100110007990200b8ef0708040000001100110049990200b0 *fd04080300000012000d009199020030ea07080400000011001100d2990200e4d105080c000000 *11000d00e5990200e41906081800000011000d00089a020078e707080400000011001100449a02 *00c54c06081b00000012000d004f9a0200f47905080700000012000d006d9a0200ccc805080c00 *000011000d00959a0200e40208080400000011001100d59a0200f48507080400000011000f00e4 *9a0200549005086900000012000d00fc9a0200acc004081000000011000d00399b020094c90508 *1000000011000d00509b020084c206082100000012000d00779b0200946106081000000012000d *00869b02006c0a08080400000011001100c89b0200c41308080400000011001100e29b020090c2 *05080700000012000d00f49b020098ee07080400000011001100369c020008f804080800000011 *000d00689c02004cec04083200000012000d009f9c0200dc8905088700000012000d00c29c0200 *240b05080800000011000d00fa9c020090ed070804000000110011003d9d020028fe0708040000 *00110011007f9d020008f804080600000012000d00b29d0200280f06080800000011000d00c79d *02003c1905080600000012000d00079e0200f4e6070804000000110011003e9e02005016080804 *00000011001100559e020090f607080400000011001100979e020094be04083c00000012000d00 *a89e0200241806080c00000011000d00cf9e0200fc0608080400000011001100119f0200402e08 *0804000000110018002a9f02000c7b05080700000012000d00429f020000140808040000001100 *11006a9f020084ed07080400000011001100ad9f0200140508080400000011001100ee9f020040 *0a0508c400000012000d0038a00200889d06081102000012000d0045a00200b0e6070804000000 *1100110087a00200704605080700000012000d00bda00200c4eb04080f00000012000d00fda002 *0028c405080c00000011000d0025a1020064fb06081e00000012000d003ba102002cfd04080800 *000011000d0084a10200a46106087a00000012000d0097a1020058d806080b01000012000d00ad *a1020034ca05085800000012000d00c7a10200e40a0808040000001100110009a20200f0e70708 *040000001100110047a20200bc0b0808040000001100110089a2020034ec070804000000110011 *00cca202005801080804000000110011000da30200d8ff070804000000110011004fa3020020b5 *05082300000012000d0065a302001cf605080300000012000d0084a3020070dc05080c00000011 *000d00aca3020070d905082000000012000d00d2a3020098020808040000001100110014a40200 *ecaa05080800000011000d002da40200e8e7070804000000110011006ba40200b8f804080c0000 *0011000d00a4a40200414d06082600000012000d00b1a4020074fa07080400000011001100f3a4 *020040100808040000001100110011a50200b8020808040000001100110049a5020030f0060803 *00000012000d005da502005d6006082200000012000d0068a50200d01208080400000011001100 *87a50200a49705080600000012000d00a1a50200d0fb07080400000011001100e3a50200e0d606 *085e00000012000d00f1a50200a4030808040000001100110032a60200588705080c0000001100 *0d005aa60200d4aa05080800000011000d0072a6020081c406080900000012000d0088a6020000 *000000000000001200000094a60200c40608080400000011001100d6a60200b4e7070804000000 *110011001ea7020010ab05080300000012000d003ba70200297806084e00000012000d0049a702 *0048ea070804000000110011008aa702009c2c0808040000001100180094a70200884e06080900 *000012000d00a1a7020054a305080300000012000d00bca70200000000000d00000012000000cb *a7020060d005081f00000012000d00f1a702009c050808040000001100110032a80200d8010808 *040000001100110073a80200a82c0808040000001100180080a802000c4506080800000011000d *00a6a80200b8e205082000000012000d00c6a8020044d105080c00000012000d00dea80200c0b4 *05080c00000011000d000fa9020008eb0708040000001100110051a90200e40b05080800000011 *000d008ba90200f8b005081800000011000d00a2a90200f4f507080400000011001100e5a90200 *000000000000000012000000f2a90200e4090808040000001100110034aa02005c0d0808040000 *001100110076aa0200f8160808040000001100110094aa0200a04f05080c00000012000d00d7aa *0200c0000808040000001100110018ab0200e4f0070804000000110011005aab02006c0d080804 *000000110011009cab0200d40708080400000011001100deab0200040206085800000012000d00 *f7ab02000000000031000000120000000aac020050180808040000001100110024ac02002c8405 *080300000012000d0041ac0200901905080300000012000d0083ac02003c040808040000001100 *1100c4ac0200ec1408080400000011001100dcac0200a4e80708040000001100110019ad020090 *fc070804000000110011005bad0200000000006a010000120000006dad020034cd0608ce000000 *12000d007cad0200a44e06080800000012000d0088ad0200b8fe07080400000011001100caad02 *00d89705080800000011000d00e4ad0200b4060808040000001100110026ae02009c0408080400 *00001100110067ae020068f407080400000011001100a9ae0200609406085e00000012000d00c1 *ae0200ac0b0808040000001100110003af02005c060808040000001100110045af02002cf40708 *040000001100110087af020030ed07080400000011001100caaf0200342c080804000000110018 *00cfaf0200c8aa05080300000012000d00eaaf0200143006086c00000012000d00ffaf02006802 *0808040000001100110041b0020038100808040000001100110064b00200849705080600000012 *000d007eb00200ece807080400000011001100beb00200580008080400000011001100feb00200 *d49005080800000011000d0028b10200f8000808040000001100110069b1020060e40708000000 *001000110076b1020094e805085800000012000d008cb102000c9f05080300000012000d00a7b1 *020098ac05087300000012000d00bab10200e84c05080800000011000d00f9b10200b8ef060808 *00000011000d0011b202006cbe04080c00000012000d001fb20200f8aa05080800000011000d00 *3bb2020010d405082000000012000d0059b20200440b080804000000110011009bb202000cc305 *080700000012000d00b0b20200389905080c00000011000d00c4b2020078930508450000001200 *0d00e9b2020048c804081000000011000d002ab302008c03080804000000110011006bb3020048 *3e05080c00000011000d00b0b30200ac2e05080700000012000d00fab30200440e080804000000 *110011003cb4020088ef070804000000110011007eb40200d8ea04082800000012000d00bdb402 *00fcec06080800000011000d00ccb4020070ef070804000000110011000eb502009c0908080400 *00001100110050b50200d02806085800000012000d006fb5020098c205087300000012000d0082 *b50200107605080800000011000d00c0b502004c4706081c00000012000d00cfb5020030730508 *1000000011000d000fb60200ac060808040000001100110051b60200b40a080804000000110011 *0093b6020044fd06081e00000012000d00aab60200acf306084e00000012000d00beb60200883b *06081800000011000d00d4b60200109c05080c00000011000d00eeb60200e0e905080800000011 *000d0003b70200f43a06080300000012000d002db70200784d05082000000012000d0067b70200 *e8160808040000001100110081b70200f1e50408a800000012000d00acb7020000000000000000 *0020000000c0b70200000000007100000012000000d9b70200a81905080c00000012000d000eb8 *02006a6306081300000012000d0018b8020008ea04085800000012000d004eb802003352060801 *00000012000d0057b8020004ce06084501000012000d0062b80200583b06080600000012000d00 *83b802004a4007082c00000012000d008cb80200a04406080300000012000d00b1b802008cfd04 *080300000012000d00fcb80200981f05080c00000011000d002ab902005ce80708040000001100 *110062b9020068cb06083100000012000d0070b90200f8d304080800000011000d00aeb90200d8 *d304080600000012000d00ecb902008c110808040000001100110006ba0200683605084b000000 *12000d003dba0200f44406080800000011000d0065ba0200140a08080400000011001100a7ba02 *00c4f705081000000011000d00c1ba020004ef0708040000001100110003bb020090e406081300 *000012000d001fbb0200004506080800000011000d0049bb0200ac7105082a00000012000d0089 *bb020044be04080c00000011000d0096bb02008cea06082c00000011000d00acbb0200c4ef0708 *0400000011001100eebb02008cfb04080c00000011000d0028bc02008c0f080804000000110011 *003fbc020024d805082000000012000d0060bc020090e4070804000000110011007abc0200902f *05083700000012000d00bdbc0200e0e60708040000001100110003bd0200e40a06082300000012 *000d0020bd0200c48005080700000012000d003abd020084e90708040000001100110075bd0200 *080108080400000011001100b6bd02001e6206088f00000012000d00c4bd02005c050808040000 *001100110005be0200c8f40708040000001100110047be020084dd04080700000012000d006bbe *020020f407080400000011001100adbe020080e707080400000011001100f0be0200c02c080858 *00000011001800f9be02009ce50708040000001100110037bf0200189f05080300000012000d00 *50bf0200b4e90708040000001100110094bf0200614806081f00000012000d00aabf0200c40808 *080400000011001100ecbf0200d000080804000000110011002dc00200dcda04080c0000001100 *0d006cc00200cc4d06081b00000012000d007cc00200fc0408080400000011001100bdc0020000 *1808080400000011001100d7c00200acef0708040000001100110019c1020058e7070804000000 *110011005dc10200411b0708c200000012000d0065c10200ac0808080400000011001100a7c102 *0014ef04080c00000011000d00e9c10200000000004c00000012000000fec102000c1006085800 *000012000d0014c202007c040808040000001100110055c20200900b05080300000012000d008f *c20200f8ee07080400000011001100d1c20200f44305080700000012000d0003c30200a4ce0508 *8100000012000d0024c30200843505088700000012000d005fc30200784605082d00000012000d *0096c302000000000000000000120000009cc3020038c906089100000012000d00abc30200b8ec *07080400000011001100edc30200acd705085d00000012000d0016c40200249705080300000012 *000d002ec40200789305080c00000011000d0052c4020060f60708040000001100110095c40200 *340d08080400000011001100d7c40200a84206080c00000011000d00fdc40200b4140808040000 *00110011001cc502001c2505080700000012000d0051c5020048000808040000001100110091c5 *020094b105080700000012000d00adc50200e0e806083d00000012000d00bdc502001c45050807 *00000012000d00f6c50200a07c05081000000011000d0015c60200242106080800000011000d00 *30c602002cf605080b00000012000d0048c602005c09080804000000110011008ac602006c0508 *080400000011001100cbc6020074f4070804000000110011000dc70200b0fd0708040000001100 *11004fc70200009805080800000011000d0068c7020088fe07080400000011001100aac7020068 *eb07080400000011001100ecc7020058eb04080c00000011000d0023c8020000000000d2000000 *1200000031c8020044e90708040000001100110068c80200ece5070804000000110011009cc802 *00c0ff07080400000011001100dec80200249705080800000011000d00f5c802008a4d06084200 *000012000d0002c90200d00f0808040000001100110024c90200347107083700000012000d0034 *c9020084090808040000001100110076c902002e5c07087200000012000d0086c9020030d30508 *0c00000011000d00a3c90200cc3705080700000012000d00dcc90200382a080804000000110018 *00edc90200d8f9070804000000110011002fca020028160808040000001100110051ca020034cd *06080c00000011000d0061ca0200a4eb07080400000011001100a3ca0200e8c805080d00000012 *000d00caca0200fca905084b00000012000d00e2ca02002c7a05080700000012000d00f8ca0200 *6814080804000000110011000ecb020010ec0708040000001100110050cb0200e4140808040000 *001100110068cb0200a0fb07080400000011001100aacb0200b4ed07080400000011001100eccb *02000c0b05080300000012000d0025cc0200dced06080800000011000d003bcc0200ec09080804 *000000110011007dcc020068ae05082800000012000d00a3cc0200a0e807080400000011001100 *e2cc0200309d05080800000011000d0001cd0200929306082600000012000d0013cd0200283405 *080300000012000d0069cd0200077306083600000012000d007acd020070dc0508300000001200 *0d00a3cd0200201008080400000011001100bccd0200f0fc07080400000011001100fecd0200dc *0f080804000000110011001bce0200ac1c06080500000012000d0032ce0200fc13080804000000 *110011005bce020088f605080500000012000d0073ce0200140705080c00000011000d00aace02 *00e74d06081b00000012000d00b4ce0200343d06082300000012000d00d7ce0200ac9705080c00 *000011000d00f6ce020088ef06080800000011000d0008cf0200e0e70708040000001100110044 *cf0200d0010808040000001100110085cf02005cdb0408bd00000012000d00a9cf020044150808 *0400000011001100d2cf0200140c0808040000001100110014d002003016080804000000110011 *0034d00200f0f00708040000001100110076d00200b84406080800000011000d00a0d00200a40e *08080400000011001100e2d0020064040808040000001100110023d10200ccdb06089400000012 *000d0035d1020000000000aa0200001200000040d10200303b06080600000012000d0067d10200 *a4fa07080400000011001100a9d10200f8fd06081e00000012000d00c0d1020018160808040000 *0011001100dad10200182707081100000012000d00e3d102008cdd04083700000012000d0008d2 *0200f4bd04081100000012000d001ad2020000000000000000002000000029d2020054fc060808 *00000011000d003ed2020038eb0708040000001100110080d20200000000008100000012000000 *91d2020010e904080800000011000d00d6d20200e0aa05080300000012000d00f2d20200b0a105 *080300000012000d000cd30200e4be04080300000012000d0024d30200dc440608080000001100 *0d004ad30200cc04080804000000110011008bd30200c8e405080800000011000d00afd3020050 *2505084100000012000d00e1d30200e8e80708040000001100110022d40200143d06080a000000 *12000d0044d40200d8cb05080c00000011000d005dd40200e0fd070804000000110011009fd402 *00807a05083700000012000d00b5d4020068fd07080400000011001100003c636f6d6d616e6420 *6c696e653e002f7573722f7372632f7061636b616765732f4255494c442f676c6962632d322e33 *2f63632f636f6e6669672e68003c6275696c742d696e3e006162692d6e6f74652e53002f757372 *2f7372632f7061636b616765732f4255494c442f676c6962632d322e332f63632f6373752f6162 *692d7461672e6800737573652d6e6f74652e5300696e69742e63002f7573722f7372632f706163 *6b616765732f4255494c442f676c6962632d322e332f63632f6373752f637274692e53002f7573 *722f7372632f7061636b616765732f4255494c442f676c6962632d322e332f63632f6373752f64 *6566732e6800696e697466696e692e630063616c6c5f676d6f6e5f737461727400637274737475 *66662e63005f5f43544f525f4c4953545f5f005f5f44544f525f4c4953545f5f005f5f4a43525f *4c4953545f5f00702e3000636f6d706c657465642e31005f5f646f5f676c6f62616c5f64746f72 *735f617578006672616d655f64756d6d79005f5f43544f525f454e445f5f005f5f44544f525f45 *4e445f5f005f5f4652414d455f454e445f5f005f5f4a43525f454e445f5f005f5f646f5f676c6f *62616c5f63746f72735f617578002f7573722f7372632f7061636b616765732f4255494c442f67 *6c6962632d322e332f63632f6373752f6372746e2e5300676863373530302e6863005f6d6f6475 *6c655f7265676973746572656400723547735f636c6f7375726500723547755f636c6f73757265 *00723547775f636c6f7375726500723547775f696e666f00723547775f656e747279007335554f *5f696e666f007335554f5f72657400733555435f696e666f00733555445f696e666f0073355544 *5f72657400733555435f72657400733555425f696e666f00733555425f72657400723547795f63 *6c6f7375726500723547795f696e666f00723547795f656e747279007335554d5f696e666f0073 *35554d5f72657400723547415f636c6f7375726500723547415f696e666f00723547415f656e74 *7279007335554b5f696e666f007335554b5f72657400723547435f636c6f737572650072354743 *5f696e666f00723547435f656e74727900733555495f696e666f00733555495f72657400723547 *455f636c6f7375726500723547455f696e666f00723547455f656e74727900733555475f696e66 *6f00733555475f72657400723547475f636c6f7375726500723547475f696e666f00723547475f *73727400723547475f656e74727900733549645f696e666f00733549655f696e666f0073354965 *5f72657400733549645f72657400723547495f636c6f73757265007235474b5f636c6f73757265 *007235474d5f636c6f73757265007235474d5f696e666f007235474d5f737274007235474d5f65 *6e74727900733555765f696e666f00733555415f696e666f00733555415f726574007335557a5f *696e666f007335557a5f72657400733555795f696e666f00733555795f72657400733555785f69 *6e666f00733555785f72657400733555765f726574007235474f5f636c6f737572650072354751 *5f636c6f7375726500723547515f696e666f00723547515f73727400723547515f656e74727900 *723547535f636c6f7375726500723547535f696e666f00723547535f73727400723547535f656e *747279007335556a5f696e666f00733555755f696e666f00733555755f72657400733555745f69 *6e666f00733555745f72657400733555735f696e666f00733555735f72657400733555725f696e *666f00733555725f72657400733555705f696e666f00733555705f726574007335556f5f696e66 *6f007335556f5f726574007335556e5f696e666f007335556e5f726574007335556c5f696e666f *007335556c5f726574007335556b5f696e666f007335556b5f726574007335556a5f7265740072 *3547555f636c6f7375726500723547575f636c6f7375726500723547595f636c6f737572650072 *3548305f636c6f7375726500723548325f636c6f7375726500723548325f696e666f0072354832 *5f656e747279004d61696e5f6d61696e5f737274007335534e5f696e666f007335534e5f737274 *64007335534f5f73727464007335544f5f696e666f007335544f5f726574007335544e5f696e66 *6f007335544e5f726574007335544d5f696e666f007335544d5f726574007335544c5f696e666f *007335544c5f72657400733554495f696e666f00733554495f7265740073354d425f696e666f00 *73354d425f7265740073354d445f696e666f0073354d445f656e747279007335544b5f696e666f *007335544b5f72657400733554455f696e666f00733554455f7265740073354e395f696e666f00 *73354e395f7265740073354e625f696e666f0073354e625f656e74727900733554475f696e666f *00733554475f72657400733554415f696e666f00733554415f7265740073354e485f696e666f00 *73354e485f7265740073354e4a5f696e666f0073354e4a5f656e74727900733554435f696e666f *00733554435f72657400733554775f696e666f00733554775f7265740073354f655f696e666f00 *73354f655f7265740073354f675f696e666f0073354f675f656e74727900733554795f696e666f *00733554795f72657400733554735f696e666f00733554735f7265740073354f4c5f696e666f00 *73354f4c5f7265740073354f4e5f696e666f0073354f4e5f656e74727900733554755f696e666f *00733554755f726574007335546f5f696e666f007335546f5f72657400733550695f696e666f00 *733550695f726574007335506b5f696e666f007335506b5f656e74727900733554715f696e666f *00733554715f726574007335546c5f696e666f007335546c5f726574007335546b5f315f616c74 *007335546b5f325f616c74007335546b5f7674626c007335546a5f315f616c74007335546a5f64 *666c74007335546a5f7674626c007335507a5f696e666f007335507a5f656e747279007335524e *5f736c6f77007335524e5f656e747279007335527a5f736c6f77007335527a5f656e7472790073 *3555635f696e666f00733555635f72657400733555625f696e666f00733555625f726574007335 *55615f696e666f00733555615f72657400733555395f696e666f00733555395f72657400733555 *375f696e666f00733555375f72657400733555365f696e666f00733555365f7265740073355535 *5f696e666f00733555355f72657400733555345f696e666f00733555345f72657400733555325f *696e666f00733555325f72657400733555305f696e666f00733555305f726574007335545a5f69 *6e666f007335545a5f72657400733554595f696e666f00733554595f72657400733554585f696e *666f00733554585f726574007335527a5f696e666f00733555665f696e666f00733555665f7265 *7400733555645f696e666f00733555645f72657400733554565f696e666f00733554565f726574 *00733554555f696e666f00733554555f72657400733554545f696e666f00733554545f72657400 *733554535f696e666f00733554535f72657400733554525f696e666f00733554525f7265740073 *35524e5f696e666f00733555695f696e666f00733555695f72657400733555675f696e666f0073 *3555675f72657400733554505f696e666f00733554505f72657400733554685f696e666f007335 *54685f72657400733554675f696e666f00733554675f72657400733554665f696e666f00733554 *665f72657400733554655f696e666f00733554655f72657400733554645f696e666f0073355464 *5f72657400733554635f696e666f00733554635f72657400733554625f696e666f00733554625f *72657400733554615f696e666f00733554615f72657400733554385f696e666f00733554385f72 *657400733554365f696e666f00733554365f72657400733554345f696e666f00733554345f7265 *7400733554325f696e666f00733554325f72657400733554305f696e666f00733554305f726574 *00733553595f696e666f00733553595f72657400733553585f696e666f00733553585f72657400 *733553575f696e666f00733553575f72657400733553565f696e666f00733553565f7265740073 *3553545f696e666f00733553545f72657400733553535f696e666f00733553535f726574007335 *53525f696e666f00733553525f7265740073354b345f696e666f0073354b345f72657400733553 *505f696e666f00733553505f726574007335534f5f696e666f007335534f5f726574007335534e *5f726574005a434d61696e5f6d61696e5f737274007335534b5f696e666f007335534b5f726574 *00733553485f696e666f00733553485f72657400733553455f696e666f00733553455f72657400 *67686331363038382e68630067686331363036382e68630067686331353933362e686300676863 *31343932352e68630067686331343531372e68630047726170686963737a6955497a69474c5554 *7a6943616c6c6261636b737a69526567697374726174696f6e5f73657443616c6c6261636b5f73 *727400733359555f696e666f0073335a785f315f616c7400733359615f696e666f00733359615f *656e7472790073335a7a5f696e666f0073335a7a5f7265740073335a795f696e666f0073335a79 *5f7265740073335a785f325f616c740073335a785f7674626c00733359675f696e666f00733359 *675f7265740073335a425f315f616c7400733359775f696e666f00733359775f656e7472790073 *335a435f696e666f0073335a435f7265740073335a425f325f616c740073335a425f7674626c00 *73335a765f696e666f0073335a765f72657400733359435f696e666f00733359435f7265740073 *335a465f696e666f0073335a465f72657400733359555f7265740067686331353032312e686300 *733957395f696e666f00733846345f736c6f7700733846345f656e74727900733957615f696e66 *6f00733957615f72657400733846345f696e666f00733957395f72657400733957355f696e666f *00733846435f736c6f7700733846435f656e74727900733957365f696e666f00733957365f7265 *7400733846435f696e666f00733957355f72657400733955685f696e666f00733955695f696e66 *6f00733955695f72657400733955685f72657400733853655f696e666f00733853625f696e666f *00733853625f656e74727900733853655f656e7472790047726170686963737a6955497a69474c *55547a6943616c6c6261636b737a6957696e646f775f6b6579626f6172644d6f75736543616c6c *6261636b5f73727400733952565f7674626c00733953325f696e666f00733953325f7265740073 *3953305f696e666f00733953305f72657400733952595f696e666f00733952595f726574007339 *52575f696e666f00733952575f72657400733952565f315f616c7400733961485f696e666f0073 *3961485f656e74727900733961785f696e666f00733961785f656e747279007339616e5f696e66 *6f007339616e5f656e74727900733953345f696e666f00733953345f726574007339614f5f696e *666f007339614f5f656e74727900733962435f696e666f00733962435f656e7472790073396273 *5f696e666f00733962735f656e74727900733962695f696e666f00733962695f656e7472790073 *3953615f696e666f00733953615f72657400733962495f696e666f00733962495f656e74727900 *733963775f696e666f00733963775f656e747279007339636d5f696e666f007339636d5f656e74 *727900733963635f696e666f00733963635f656e74727900733953675f696e666f00733953675f *72657400733963435f696e666f00733963435f656e74727900733964715f696e666f0073396471 *5f656e74727900733964675f696e666f00733964675f656e74727900733964365f696e666f0073 *3964365f656e747279007339536d5f696e666f007339536d5f72657400733964775f696e666f00 *733964775f656e747279007339656d5f696e666f007339656d5f656e74727900733965635f696e *666f00733965635f656e74727900733965325f696e666f00733965325f656e7472790073395373 *5f696e666f00733953735f72657400733965735f696e666f00733965735f656e74727900733953 *715f696e666f00733953715f726574007339536b5f696e666f007339536b5f7265740073395365 *5f696e666f00733953655f72657400733953385f696e666f00733953385f72657400733952565f *325f616c740067686331343439312e68630067686331313736312e68630067686331333837392e *68630067686331333732352e68630067686331343132372e68630067686331333533332e686300 *67686331323431332e686300733577625f696e666f00733577625f726574004772617068696373 *7a6955497a69474c55547a69496e697469616c697a7a6174696f6e5f696e697469616c697a7a65 *5f7372740073354b655f696e666f0073357a625f696e666f0073357a625f656e7472790073354b *6a5f696e666f0073354b6a5f7265740073354b695f696e666f0073354b695f7265740073354b67 *5f696e666f0073354b675f72657400733579595f696e666f00733579595f7265740073357a665f *696e666f0073357a665f656e7472790073357a695f696e666f0073357a695f656e747279007335 *4b6b5f696e666f0073354b6b5f72657400733579735f696e666f00733579735f7265740073354b *655f7265740073354d325f7674626c0073354d325f315f616c740073354d335f696e666f007335 *4d335f7265740073354d325f325f616c740073354d315f696e666f0073354d315f726574006768 *6331353935322e68630067686331333930332e68630067686331343333392e6863006768633132 *3339312e68630067686331343433352e68630067686331323130352e6863006768633133303733 *2e686300733470475f696e666f00733468725f736c6f7700733468725f656e7472790073347048 *5f696e666f00733470485f72657400733468725f696e666f00733470475f7265740057696e646f *775f737475622e630047726170686963737a6955497a69474c55547a6943616c6c6261636b737a *69526567697374726174696f6e5f7265676973746572466f72436c65616e75705f737274007334 *30485f696e666f007334304e5f696e666f007334304e5f726574007334304d5f696e666f007334 *304d5f726574007334304b5f696e666f007334304b5f726574007334304a5f315f616c74007334 *304a5f325f616c74007334304a5f7674626c00733430485f7265740047726170686963737a6955 *497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a644c72334a *316c766c32385f737274007334305a5f696e666f007334305a5f7265740047726170686963737a *6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f7a644c7238774a6c766c *355f73727400733955665f696e666f00733955675f696e666f00733955675f7265740073395566 *5f7265740047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e *646f775f7a644c723878486139305f73727400733854525f696e666f007338544f5f696e666f00 *7338544f5f656e74727900733955375f696e666f00733955375f726574007338544b5f696e666f *007338544b5f656e74727900733854525f656e7472790047726170686963737a6955497a69474c *55547a6943616c6c6261636b737a6957696e646f775f7a644c7238784a6139315f737274007338 *556a5f696e666f00733855675f696e666f00733855675f656e74727900733955355f696e666f00 *733955355f72657400733855635f696e666f00733855635f656e747279007338556a5f656e7472 *7900733955335f696e666f00733855425f736c6f7700733855425f656e74727900733955345f69 *6e666f00733955345f72657400733855425f696e666f00733955335f72657400733955315f696e *666f00733855535f736c6f7700733855535f656e74727900733955325f696e666f00733955325f *72657400733855535f696e666f00733955315f7265740047726170686963737a6955497a69474c *55547a6943616c6c6261636b737a6957696e646f775f7a644c7238784c6139325f737274007338 *56755f696e666f00733856725f696e666f00733856725f656e747279007338566e5f696e666f00 *7338566e5f656e74727900733856755f656e7472790047726170686963737a6955497a69474c55 *547a6943616c6c6261636b737a6957696e646f775f7a644c7238784e6139335f73727400733856 *4c5f696e666f00733856495f696e666f00733856495f656e74727900733856455f696e666f0073 *3856455f656e747279007338564c5f656e74727900733954585f696e666f00733857335f736c6f *7700733857335f656e74727900733954595f696e666f00733954595f72657400733857335f696e *666f00733954585f72657400733954565f696e666f007338576b5f736c6f77007338576b5f656e *74727900733954575f696e666f00733954575f726574007338576b5f696e666f00733954565f72 *65740047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f *775f7a644c723878506139345f73727400733858305f696e666f00733857585f696e666f007338 *57585f656e74727900733857545f696e666f00733857545f656e74727900733857515f696e666f *00733857515f656e74727900733858305f656e74727900733954525f696e666f00733858695f73 *6c6f7700733858695f656e74727900733954535f696e666f00733954535f72657400733858695f *696e666f00733954525f7265740073354d385f7674626c0073354d385f315f616c740073357844 *5f696e666f00733578445f7265740073354d385f325f616c740073354d345f7674626c0073354d *345f315f616c740073354d375f696e666f0073354d375f7265740073354d365f696e666f007335 *4d365f7265740073354d355f696e666f0073354d355f7265740073354d345f325f616c74004772 *6170686963737a6955497a69474c55547a6954797065735f756e6d61727368616c4d6f75736542 *7574746f6e5f73727400733275765f696e666f00733275765f7265740047726170686963737a69 *55497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7468655363 *6176656e6765725f73727400733430695f696e666f007334306a5f696e666f007334306a5f7265 *7400733430695f72657400733430655f696e666f00733430665f696e666f00733430665f726574 *00733430655f72657400733430615f696e666f00733430625f696e666f00733430625f72657400 *733430615f72657400733430365f696e666f00733430375f696e666f00733430375f7265740073 *3430365f726574007333556e5f696e666f00733430345f315f616c7400733430355f335f616c74 *00733430355f64666c7400733430355f7674626c00733430345f325f616c7400733430345f335f *616c7400733430345f7674626c007333556f5f696e666f007333556f5f726574007333556e5f72 *657400733355485f696e666f00733430325f315f616c7400733430335f335f616c740073343033 *5f64666c7400733430335f7674626c00733430325f325f616c7400733430325f335f616c740073 *3430325f7674626c00733355475f696e666f00733355475f72657400733355485f726574007333 *5a4b5f696e666f0073335a4d5f315f616c740073335a4d5f325f616c740073335a4d5f335f616c *740073335a4d5f7674626c0073335a4c5f696e666f0073335a4c5f7265740073335a4b5f726574 *00733431305f696e666f00733431305f7265740047726170686963737a6955497a69474c55547a *6943616c6c6261636b737a6957696e646f775f6c766c335f7372740047726170686963737a6955 *497a69474c55547a6943616c6c6261636b737a6957696e646f775f756e6d61727368616c4b6579 *53746174655f737274007339556b5f696e666f007339556b5f7265740047726170686963737a69 *55497a69474c55547a6943616c6c6261636b737a6957696e646f775f7a644c725872756e6d6172 *7368616c5370656369616c4b65795f737274007339556a5f696e666f007339556a5f7265740073 *3955395f696e666f00733955615f696e666f00733955615f72657400733955395f726574007339 *545a5f696e666f00733955305f696e666f00733955305f726574007339545a5f72657400733954 *545f696e666f00733954555f696e666f00733954555f72657400733954545f7265740047726170 *686963737a6955497a69474c55547a6954797065735f6c766c315f737274004772617068696373 *7a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a644c *723348566c766c32375f73727400733430515f696e666f00733430515f72657400733430465f76 *74626c00733430425f315f616c7400733430435f315f616c7400733430435f325f616c74007334 *30435f7674626c00733430425f325f616c7400733430425f7674626c00733351665f696e666f00 *733351665f72657400733430445f315f616c7400733430445f325f616c7400733430445f767462 *6c007333516a5f696e666f007333516a5f72657400733430465f315f616c7400733430465f325f *616c7400733352465f696e666f007333524b5f696e666f007333524b5f72657400733352465f72 *6574007334306b5f7674626c007334306b5f315f616c74007334306c5f315f616c74007334306c *5f64666c74007334306c5f7674626c007334306b5f325f616c74007334306b5f335f616c740073 *3430675f7674626c00733430675f315f616c7400733430685f315f616c7400733430685f64666c *7400733430685f7674626c00733430675f325f616c7400733430675f335f616c7400733430635f *7674626c00733430635f315f616c7400733430645f335f616c7400733430645f64666c74007334 *30645f7674626c00733430635f325f616c7400733430635f335f616c7400733430385f7674626c *00733430385f315f616c7400733430395f335f616c7400733430395f64666c7400733430395f76 *74626c00733430385f325f616c7400733430385f335f616c740073335a495f696e666f0073335a *4a5f696e666f0073335a4a5f7265740073335a495f7265740073335a475f696e666f0073335a48 *5f696e666f0073335a485f7265740073335a475f726574007334314f5f7674626c0073334a765f *696e666f0073334a765f7265740073334a715f696e666f0073334a715f72657400733431555f31 *5f616c7400733431555f325f616c7400733431555f7674626c007334314f5f315f616c74007334 *31505f315f616c740073334a555f696e666f0073334a555f7265740073334a515f696e666f0073 *334a515f72657400733431525f696e666f00733431525f72657400733431515f696e666f007334 *31515f72657400733431505f325f616c7400733431505f7674626c007334314f5f325f616c7400 *47726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f7a *644c7238774c7a6477756e6d61727368616c5370656369616c4b65795f73727400733430575f69 *6e666f00733430585f696e666f00733430585f72657400733430575f7265740047726170686963 *737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a64 *4c723348546c766c32365f73727400733430535f696e666f00733430555f696e666f0073343055 *5f72657400733430535f7265740073335a555f7674626c0073335a5a5f315f616c740073335a5a *5f325f616c740073335a5a5f7674626c0073335a555f315f616c740073335a565f315f616c7400 *73335a585f696e666f0073335a585f7265740073335a575f696e666f0073335a575f7265740073 *335a565f325f616c740073335a565f7674626c0073335a555f325f616c74005265676973747261 *74696f6e5f737475622e6300733431585f7674626c00733431585f315f616c74007334315a5f69 *6e666f007334315a5f72657400733431595f696e666f00733431595f72657400733431585f325f *616c7400733356375f696e666f00733356635f696e666f00733356635f72657400733356375f72 *65740067686331313531302e686300676863363035302e686300676863353631322e6863006768 *6331323638372e68630067686332343431352e686300733276415f696e666f00733277635f696e *666f00733277625f736c6f7700733277625f656e74727900733277615f696e666f00733277615f *72657400733277625f696e666f00733276715f696e666f00733276715f72657400733276415f65 *6e74727900733277325f736c6f7700733277325f656e747279007332764d5f736c6f7700733276 *4d5f656e747279007332764d5f696e666f00733277385f696e666f00733277385f726574007332 *77375f696e666f00733277375f72657400733277355f696e666f00733277355f72657400733277 *325f696e666f00733277635f656e74727900676863353431302e68630067686333313236342e68 *630067686332313939362e686300676863353934382e686300676863333230362e686300676863 *32333238312e68630067686332343932392e686300736238595f696e666f007362385a5f696e66 *6f007362385a5f72657400736238595f72657400736238575f696e666f00736238585f696e666f *00736238585f72657400736238575f7265740047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a69436f6f72645472616e735f61325f73727400736270665f767462 *6c007362706c5f696e666f007362706c5f726574007362706a5f696e666f007362706a5f726574 *00736270695f696e666f00736270695f72657400736270685f696e666f00736270685f72657400 *736270675f696e666f00736270675f72657400736270665f315f616c74007362706d5f696e666f *007362706d5f72657400736270665f325f616c74007362706e5f696e666f007362706e5f726574 *00736270665f335f616c74007362706f5f696e666f007362706f5f72657400736270665f345f61 *6c7400736270705f696e666f00736270705f72657400736270665f355f616c7400676863333138 *30322e68630067686332343333372e6863006768633430302e68630067686331333139392e6863 *0067686332303633302e68630067686332313930342e68630067686333323231362e6863006768 *6333303532362e686300676863323838362e68630047726170686963737a6952656e646572696e *677a694f70656e474c7a69474c7a69466f675f666f675f73727400733458345f696e666f007334 *58345f726574007334574c5f7674626c00733457515f696e666f00733457515f72657400733457 *505f696e666f00733457505f726574007334574f5f696e666f007334574f5f726574007334574e *5f696e666f007334574e5f726574007334574d5f696e666f007334574d5f726574007334574c5f *315f616c7400733457545f696e666f00733457545f72657400733457535f696e666f0073345753 *5f72657400733457525f696e666f00733457525f726574007334574c5f325f616c740073345757 *5f696e666f00733457575f72657400733457565f696e666f00733457565f72657400733457555f *696e666f00733457555f726574007334574c5f335f616c7400733457445f696e666f007334574b *5f696e666f007334574b5f726574007334574a5f696e666f007334574a5f72657400733457495f *696e666f00733457495f72657400733457485f696e666f00733457485f72657400733457475f69 *6e666f00733457475f72657400733457465f696e666f00733457465f72657400733457445f7265 *7400676863313334302e68630067686331333137352e68630067686333303239362e6863004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6948696e74735f7a64 *7768696e745f7372740073336a6e5f696e666f0073336a535f696e666f0073336a6a5f696e666f *00733370355f696e666f00733370355f7265740073336a6e5f656e74727900733370385f696e66 *6f00733370385f72657400733370375f315f616c7400733370395f696e666f00733370395f7265 *7400733370375f325f616c7400733370615f696e666f00733370615f72657400733370375f335f *616c7400733370375f7674626c00733370365f696e666f00733370365f7265740073336a535f65 *6e7472790073336a6a5f736c6f770073336a6a5f656e74727900733370625f696e666f00733370 *625f7265740073336a675f696e666f0073336a675f656e7472790067686333323034302e686300 *676863353433302e68630067686331343730342e686300676863323132332e6863006768633239 *3430342e68630067686332373531342e68630067686332383131362e6863006768633237393738 *2e68630067686332373433352e68630067686332383533322e68630067686332393135302e6863 *0067686332383738322e68630067686332363730352e68630067686332363831372e6863006768 *6332363733392e686300676863353534382e68630067686333323632322e686300676863333237 *31342e68630067686332343137352e6863007332316e5f696e666f007332316e5f726574006768 *6331343733362e68630047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f676574496e7465676572315f73727400736c436b5f696e66 *6f00736c66525f696e666f00736c66525f656e74727900736c436e5f696e666f00736c436e5f72 *657400736c436d5f315f616c7400736c667a5f696e666f00736c667a5f656e74727900736c4372 *5f696e666f00736c43725f72657400736c43715f696e666f00736c43715f72657400736c436d5f *325f616c7400736c436d5f7674626c00736c436b5f72657400676863353634322e686300676863 *313633342e686300676863353939342e68630067686333313935322e6863006768633239373930 *2e68630067686333323039302e68630067686331333038372e68630067686333303138382e6863 *00676863353339342e686300676863333838362e686300676863343533322e6863006768633533 *31352e686300676863343136342e68630067686332363839332e686300676863333638392e6863 *00676863333232342e686300676863333931312e68630067686332393432302e68630067686331 *343636322e68630067686333303535302e68630067686332303635362e68630047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a69566572746578537065635f7074 *727a75676c466f67436f6f7264664558545f7372740067686331313435382e6863006768633133 *3135372e68630067686331323735372e68630047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c557a694572726f7273496e7465726e616c5f7265636f72644572726f *72436f64655f73727400733379695f696e666f007333796e5f315f616c74007333796e5f325f61 *6c74007333796e5f7674626c007333796d5f315f616c7400733379715f315f616c740073337971 *5f325f616c7400733379715f7674626c007333796d5f325f616c74007333796d5f7674626c0073 *33786d5f696e666f007333786d5f656e747279007333796c5f696e666f007333796c5f72657400 *7333796b5f696e666f007333796b5f72657400733379695f7265740067686332393639382e6863 *0067686332353834392e68630067686332393637302e68630067686331303835362e6863006768 *6332333835352e68630067686332343435332e686300733277645f696e666f00733277645f7265 *7400676863313839322e686300676863313131332e68630047726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a64776d616b65436170 *6162696c6974795f7372740073354e4f5f696e666f0073354f6a5f696e666f00733552535f696e *666f00733552535f7265740073354e4f5f656e74727900733552545f315f616c7400733552575f *696e666f00733552575f72657400733552565f696e666f00733552565f72657400733552555f31 *5f616c7400733552595f696e666f00733552595f72657400733552585f696e666f00733552585f *72657400733552555f325f616c7400733552555f7674626c00733552545f325f616c7400733552 *545f7674626c0073354f6a5f736c6f770073354f6a5f656e74727900733553305f696e666f0073 *3553305f726574007335525a5f315f616c740073354f625f696e666f0073354f625f656e747279 *00733553335f696e666f00733553335f72657400733553325f696e666f00733553325f72657400 *7335525a5f325f616c74007335525a5f7674626c00676863313733342e68630067686332363236 *352e68630047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6948 *696e74735f7a644c723367616c766c31305f73727400733370635f696e666f0073336a375f696e *666f0073336a375f656e7472790073336a395f64666c740073336a395f7674626c00733370635f *7265740067686332363634312e68630067686332353937332e686300676863353437322e686300 *736c43525f696e666f00736c43525f72657400736c43515f696e666f00736c43515f7265740073 *6c43505f696e666f00736c43505f7265740047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a69566572746578537065635f7a644c72616a5a5a6c766c34325f7372 *74007333414b5f696e666f00733375565f696e666f00733375565f656e747279007333414b5f72 *65740047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69457874 *656e73696f6e735f67657450726f63416464726573735f737274007331444f5f696e666f007331 *44425f696e666f00733144425f656e74727900733144445f696e666f00733144445f656e747279 *00733144465f696e666f00733144465f656e747279007331444d5f696e666f007331444d5f7265 *74007331444f5f7265740073337a6e5f696e666f0073337a6e5f72657400733144515f696e666f *007331446a5f736c6f77007331446a5f656e74727900733144525f696e666f00733144525f7265 *74007331446a5f696e666f00733144515f7265740048734f70656e474c2e630067686331343437 *392e6863006768633934332e68630067686331343230342e68630067686331353530302e686300 *676863333639382e686300676863363730322e68630067686331343431372e686300733375375f *726574007333486a5f315f616c7400733348745f315f616c7400733348745f325f616c74007333 *48745f335f616c7400733348745f7674626c007333486c5f696e666f007333486c5f7265740073 *33486a5f325f616c74007333486a5f7674626c00733375375f696e666f00446174617a6946696e *6974654d61705f64656c46726f6d464d5f73727400733377645f696e666f00733377645f656e74 *727900733347555f315f616c7400733377665f64666c7400733377665f7674626c00733348345f *315f616c7400733348345f325f616c7400733377695f64666c7400733377695f7674626c007333 *48345f335f616c7400733348345f7674626c00733347575f696e666f00733347575f7265740073 *3347555f325f616c7400733347555f7674626c00446174617a6946696e6974654d61705f616464 *546f464d7a75435f737274007333474a5f315f616c74007333786f5f64666c74007333786f5f76 *74626c00733347535f315f616c7400733347535f325f616c7400733378725f64666c7400733378 *725f7674626c00733347535f335f616c7400733347535f7674626c007333474b5f696e666f0073 *33474b5f726574007333474a5f325f616c74007333474a5f7674626c0067686331383731352e68 *6300676863363934342e68630067686331353438322e686300676863363732342e686300733377 *415f696e666f007333776d5f72657400733439755f315f616c7400733439765f696e666f007334 *39765f726574007333776c5f696e666f007333776c5f656e74727900733439755f325f616c7400 *733439755f7674626c007333776d5f696e666f00733439455f696e666f00733439455f72657400 *733377415f656e7472790067686332393733352e68630067686332393830332e68630067686331 *303236392e686300676863353239362e68630067686331313834392e686300733333575f696e66 *6f007333394d5f315f616c74007333394e5f696e666f007333394e5f72657400733334495f656e *747279007333394d5f325f616c74007333394d5f7674626c00733334495f696e666f0073333951 *5f696e666f00733339515f726574007333394f5f696e666f007333394f5f726574007333394b5f *696e666f007333394b5f72657400733333575f72657400733258505f696e666f00733361685f69 *6e666f00733258505f656e74727900733259565f696e666f00733259565f72657400733361695f *696e666f00733361695f72657400733361685f7265740067686331303732392e68630067686331 *313632372e68630067686331313635392e68630067686331313737372e686300466f726569676e *7a694d61727368616c7a6941727261795f7769746841727261794c656e305f737274007332776a *5f696e666f00733246315f696e666f00733246315f726574007332455a5f696e666f007332455a *5f72657400733245585f696e666f00733245585f72657400733245575f696e666f00733245575f *72657400733276535f696e666f00733276535f726574007332776a5f72657400733271555f7265 *7400733247445f696e666f00733247445f72657400733247765f696e666f00733247765f726574 *00733247755f696e666f00733247755f726574007332476d5f696e666f007332476d5f72657400 *733271555f696e666f0067686331323232352e68630067686331313732312e6863007332676b5f *7674626c007332676b5f315f616c7400733262745f696e666f00733262745f656e747279007332 *62765f696e666f00733262765f656e747279007332676b5f325f616c7400676863343033352e68 *6300676863363333342e68630067686333313738372e68630067686332393330322e6863004748 *437a69426173655f6c766c375f73727400733249705f696e666f00733249705f656e7472790073 *3249725f696e666f00733249725f656e747279007332494a5f696e666f007332494a5f656e7472 *79007332494c5f696e666f007332494c5f656e7472790073324a365f696e666f0073324a365f65 *6e74727900733250445f315f616c7400733250445f325f616c7400733250445f7674626c007332 *50455f7674626c00733250455f315f616c740073324a705f696e666f0073324a705f656e747279 *00733250455f325f616c7400733250465f7674626c00733250465f315f616c740073324a425f69 *6e666f0073324a425f656e74727900733250465f325f616c7400676863333633392e6863006768 *6333303836332e686300676863333935372e6863004748437a694572725f756e646566696e6564 *5f73727400676863333430342e68630067686333323635302e68630067686331313532372e6863 *0067686331333331352e686300676863323136372e68630073376e495f696e666f0073376e495f *7265740073376e6f5f696e666f0073376e6f5f72657400676863353335302e686300733864325f *696e666f00733864335f696e666f00733864335f72657400733864325f72657400676863333035 *39302e686300733268725f7674626c00733268725f315f616c7400733268725f325f616c740047 *48437a694c6973745f7461696c5f73727400733266365f7674626c00733266365f315f616c7400 *733266365f325f616c740067686333313532352e686300676863333630382e6863007373545f69 *6e666f007373545f72657400676863333532312e686300676863313833382e6863006768633332 *3230332e68630067686333313732382e686300676863323133342e68630067686333313137342e *686300676863353331322e686300676863363235332e686300733236725f696e666f0073323674 *5f696e666f00733236745f72657400733236735f696e666f00733236735f72657400733236725f *72657400733235465f696e666f00733235475f696e666f00733235475f72657400733235465f72 *65740067686331343739392e6863004748437a69546f7048616e646c65725f7a644c723153636c *766c325f737274004748437a69546f7048616e646c65725f746f7048616e646c65725f73727400 *733155555f696e666f00733155535f736c6f7700733155535f656e747279007331564d5f696e66 *6f007331564d5f726574007331564b5f696e666f007331564b5f72657400733156495f696e666f *00733156495f72657400733155535f696e666f00733156425f315f616c7400733156485f736c6f *7700733156485f656e74727900733156475f696e666f00733156475f72657400733156455f696e *666f00733156455f72657400733156435f696e666f00733156435f72657400733156485f696e66 *6f00733156425f64666c7400733156425f7674626c00733156785f315f616c7400733156415f73 *6c6f7700733156415f656e747279007331567a5f696e666f007331567a5f72657400733156415f *696e666f00733156795f696e666f00733156795f72657400733156785f325f616c740073315678 *5f7674626c00733154565f696e666f00733154565f72657400733155555f656e74727900474843 *7a69546f7048616e646c65725f72756e494f5f73727400676863363633342e6863006768633135 *3830302e686300734e775f696e666f00734e775f72657400676863343130392e6863004748437a *69576f72645f7a64777a64646d73686f775f73727400736135525f696e666f00733833445f7674 *626c00733833445f64666c7400736135525f72657400676863333838322e686300676863313431 *38342e68630067686332313333372e686300733252535f696e666f0073324d585f696e666f0073 *324d585f656e747279007332525a5f696e666f007332525a5f72657400733252575f696e666f00 *733252575f72657400733252555f696e666f00733252555f72657400733252535f726574007332 *524a5f696e666f00733252525f696e666f00733252525f72657400733252515f696e666f007332 *52515f726574007332524e5f696e666f007332524e5f726574007332524c5f696e666f00733252 *4c5f726574007332524a5f7265740067686331393632332e68630067686331343131332e686300 *676863333432392e686300676863393030352e68630067686331323836312e6863006768633132 *3332372e686300676863313034372e686300676863313137362e68630067686331313030312e68 *6300676863313234342e68630067686333313530372e686300436f6e74726f6c7a694578636570 *74696f6e5f756e636175676874457863657074696f6e48616e646c65725f737274006768633130 *3938352e68630067686333303832372e686300446174617a6946696e6974654d61705f7a64776d *6b42616c4272616e63685f7372740073334a655f7674626c007333494c5f315f616c740073336c *475f64666c740073336c475f7674626c007333494f5f315f616c740073336d625f315f616c7400 *73336d625f325f616c740073336d625f7674626c0073336d675f696e666f0073336d675f726574 *00733349555f315f616c7400733349555f325f616c7400733349555f7674626c0073336c525f64 *666c740073336c525f7674626c007333494f5f325f616c74007333494f5f7674626c0073336d70 *5f696e666f0073336d705f726574007333495a5f315f616c74007333495a5f325f616c74007333 *495a5f7674626c0073336d795f696e666f0073336d795f7265740073334a345f315f616c740073 *334a345f325f616c740073334a345f7674626c007333494c5f325f616c74007333494c5f767462 *6c00733349655f315f616c740073336e6d5f315f616c740073336e6d5f325f616c740073336e6d *5f7674626c0073336e725f696e666f0073336e725f72657400733349775f315f616c7400733349 *775f325f616c7400733349775f7674626c00733349685f315f616c740073336f325f315f616c74 *0073336f325f325f616c740073336f325f7674626c0073336f375f696e666f0073336f375f7265 *74007333496e5f315f616c74007333496e5f325f616c74007333496e5f7674626c0073336e495f *64666c740073336e495f7674626c00733349685f325f616c7400733349685f7674626c0073336f *675f696e666f0073336f675f72657400733349425f315f616c7400733349425f325f616c740073 *3349425f7674626c0073336f705f696e666f0073336f705f72657400733349475f315f616c7400 *733349475f325f616c7400733349475f7674626c00733349655f325f616c7400733349655f7674 *626c0073336f795f696e666f0073336f795f7265740073334a395f315f616c740073334a395f32 *5f616c740073334a395f7674626c0073336f485f696e666f0073336f485f7265740073334a655f *315f616c740073334a655f325f616c7400446174617a6946696e6974654d61705f7a6477676c75 *6542616c5f73727400733371645f7674626c00733371645f315f616c7400733370545f315f616c *7400733349365f696e666f00733349365f72657400733371305f696e666f00733371305f656e74 *727900733371665f64666c7400733371665f7674626c00733349315f696e666f00733349315f72 *6574007333716e5f696e666f007333716e5f656e74727900733371425f64666c7400733371425f *7674626c00733370545f325f616c7400733370545f7674626c00733371645f325f616c74007333 *4a775f7674626c00733369685f315f616c7400733369685f325f616c7400733369685f7674626c *007333696d5f696e666f007333696d5f7265740073334a775f315f616c740073334a775f325f61 *6c7400446174617a6946696e6974654d61705f7a644c7233675a5a6c766c355f73727400446174 *617a6946696e6974654d61705f7a644c723368316c766c365f73727400676863363936302e6863 *0067686331323330392e68630067686331323230372e68630067686331313932372e6863006768 *6331323239312e6863007332756a5f696e666f007332756a5f656e74727900733246695f696e66 *6f00733246695f72657400733246685f315f616c7400733246415f736c6f7700733246415f656e *74727900733246795f696e666f00733246795f72657400733246715f696e666f00733246715f72 *657400733246415f696e666f00733246685f325f616c7400733246685f7674626c006768633430 *37392e686300676863393130312e68630073336e585f696e666f0073336e595f696e666f007333 *6e595f7265740073336e585f72657400733254795f696e666f0073336e575f696e666f00733254 *795f656e7472790073336e565f696e666f0073336e565f7265740073336e555f696e666f007333 *6e555f7265740073336e575f656e7472790073336e535f696e666f0073336e535f726574007333 *6e515f696e666f0073336e525f696e666f0073336e525f7265740073336e515f72657400474843 *7a694572725f7061744572726f725f737274007351475f696e666f007351475f656e7472790073 *485a5f696e666f0073485a5f656e7472790067686331333935372e686300733268695f7674626c *00733268695f315f616c7400733268695f325f616c74004748437a694c6973745f6c766c31325f *737274004748437a694e756d5f7a647773686f7773507265635f73727400733267715f7674626c *00733267715f315f616c7400733236425f696e666f00733236425f656e74727900733267715f32 *5f616c74007379785f696e666f007379795f696e666f007379795f726574007379785f72657400 *733156775f696e666f00733156775f726574004748437a69546f7048616e646c65725f7265706f *7274537461636b4f766572666c6f775f73727400733156685f696e666f007331566b5f315f616c *74007331566c5f696e666f007331566c5f726574007331566b5f325f616c74007331566b5f7674 *626c007331566a5f696e666f007331566a5f72657400733156685f726574004748437a69546f70 *48616e646c65725f7a644c723153616c766c315f73727400734c595f72657400734e795f696e66 *6f00734e795f72657400734c595f696e666f00733968745f696e666f00733968745f7265740073 *3956655f696e666f00733956655f72657400733956645f696e666f00733956645f726574007339 *56625f696e666f00733956635f696e666f00733956635f72657400733956625f72657400733956 *395f696e666f00733956615f696e666f00733956615f72657400733956395f7265740073395637 *5f696e666f00733956385f696e666f00733956385f72657400733956375f726574004748437a69 *576f72645f7a64646d73686f774c697374335f73727400733253645f7674626c00733253645f31 *5f616c7400733253655f696e666f00733253655f72657400733253645f325f616c740073325336 *5f7674626c00733253365f315f616c7400733253395f696e666f00733253395f72657400733253 *385f696e666f00733253385f72657400733253375f696e666f00733253375f7265740073325336 *5f325f616c7400436f6e74726f6c7a69457863657074696f6e5f7a644c72324a646c766c31365f *737274007332534a5f696e666f00733252525f656e74727900733252545f64666c740073325254 *5f7674626c007332534a5f72657400436f6e74726f6c7a69457863657074696f6e5f7a644c7232 *4a666c766c31375f73727400733253495f696e666f00733253495f72657400446174617a694669 *6e6974654d61705f7a644c72336872706f6c797a756661696c5f73727400446174617a6946696e *6974654d61705f7a644c72336874706f6c797a756661696c315f73727400446174617a6946696e *6974654d61705f7a647766696e644d61785f7372740073334b325f7674626c0073334b325f315f *616c740073336b795f315f616c740073336b795f325f616c740073336b795f7674626c0073334b *325f325f616c7400446174617a6946696e6974654d61705f7a647766696e644d696e5f73727400 *73334a555f7674626c0073334a555f315f616c740073336b535f315f616c740073336b535f325f *616c740073336b535f7674626c0073334a555f325f616c7400446174617a6946696e6974654d61 *705f706f6c797a7564656c6574654d696e5f7372740073334a4e5f7674626c0073334a4e5f315f *616c7400733370395f64666c7400733370395f7674626c0073334a4e5f325f616c740044617461 *7a6946696e6974654d61705f706f6c797a7564656c6574654d61785f7372740073334a475f7674 *626c0073334a475f315f616c7400733370755f315f616c7400733370775f64666c740073337077 *5f7674626c00733370755f325f616c7400733370755f7674626c0073334a475f325f616c740044 *6174617a6946696e6974654d61705f7a644c723367526c766c315f73727400446174617a694669 *6e6974654d61705f7a644c723367546c766c325f737274007333324b5f696e666f00733339545f *315f616c7400733339555f696e666f00733339555f72657400733333745f656e74727900733339 *545f325f616c7400733339545f7674626c00733333745f696e666f00733339585f696e666f0073 *3339585f72657400733339565f696e666f00733339565f72657400733339525f696e666f007333 *39525f726574007333324b5f72657400733244485f696e666f00733244485f656e747279007332 *444a5f696e666f007332444a5f656e747279004748437a694572725f756e74616e676c655f7372 *74007350425f7674626c0073504d5f696e666f0073504d5f656e7472790073504f5f696e666f00 *73504f5f656e747279007350515f696e666f007350515f656e747279007350535f696e666f0073 *50535f726574007352695f315f616c740073526a5f696e666f0073526a5f726574007352695f32 *5f616c74007352695f7674626c007352685f696e666f007352685f726574007350425f64666c74 *004748437a69494f426173655f7a647773686f777350726563365f7372740073376b315f696e66 *6f0073376b315f737274640073376b355f696e666f0073376b355f726574007336576a5f696e66 *6f007336576a5f656e7472790073376b335f315f616c740073376b335f325f616c740073376b33 *5f335f616c740073376b335f7674626c0073376b325f315f616c740073376b325f325f616c7400 *73376b325f335f616c740073376b325f345f616c740073376b325f355f616c740073376b325f76 *74626c0073376b315f726574004748437a69494f426173655f7a647773686f777350726563325f *73727400733771385f7674626c00733671755f315f616c7400733671775f696e666f0073367177 *5f656e74727900733671755f325f616c7400733671755f7674626c00733671795f696e666f0073 *3671795f656e74727900733771385f315f616c74007336716a5f315f616c74007336716d5f696e *666f007336716d5f656e747279007336716a5f325f616c74007336716a5f7674626c007336716f *5f696e666f007336716f5f656e74727900733771385f325f616c74004748437a694c6973745f7a *644c723155536c766c31315f737274007332674c5f696e666f007332674c5f7265740073323834 *5f7674626c00733238345f315f616c74007332674d5f315f616c74007332374f5f696e666f0073 *32374f5f656e747279007332674d5f325f616c74007332674d5f7674626c00733238345f325f61 *6c74007332674b5f7674626c00733230465f696e666f00733230465f726574007332674b5f315f *616c7400733230515f696e666f00733230515f726574007332674c5f315f616c7400733230595f *696e666f00733230595f726574007332674c5f325f616c74007332674c5f7674626c007332674b *5f325f616c74004748437a694e756d5f6a746f735f73727400733267725f7674626c0073326772 *5f315f616c74007332366b5f64666c74007332366b5f7674626c00733267735f315f616c740073 *3267735f325f616c7400733267735f7674626c007332366e5f696e666f007332366e5f656e7472 *7900733267725f325f616c74004748437a6953686f775f7a64646d73686f774c6973745f737274 *0073314a6d5f696e666f00733152355f696e666f0073314a6d5f656e74727900733152335f315f *616c7400733152345f315f616c740073314a485f696e666f0073314a485f656e74727900733152 *345f325f616c7400733152345f7674626c0073314a445f696e666f0073314a445f656e74727900 *73314a4c5f696e666f0073314a4c5f656e7472790073314a4e5f696e666f0073314a4e5f656e74 *727900733152335f325f616c7400733152335f7674626c00733152355f656e747279004748437a *69546f7048616e646c65725f64735f73727400733154305f7674626c00733154305f315f616c74 *00733154305f325f616c7400736133725f7674626c00736133725f315f616c7400736133725f32 *5f616c74004748437a69576f72645f7a64646d73686f775f73727400736131345f696e666f0073 *6131345f726574004748437a69576f72645f73686f777350726563335f7372740073396d565f69 *6e666f00733955775f696e666f0073396d565f656e74727900733955765f696e666f0073395576 *5f72657400733955775f656e74727900733951315f696e666f00733951325f696e666f00733951 *325f72657400733951315f726574007339505a5f696e666f00733951305f696e666f0073395130 *5f726574007339505a5f72657400733254445f696e666f00733254465f696e666f00733254465f *72657400733254455f696e666f00733254455f72657400733254445f72657400436f6e74726f6c *7a69457863657074696f6e5f7a644c72324a6264735f73727400733252735f7674626c00733252 *735f315f616c7400733252735f325f616c7400446174617a6946696e6974654d61705f7a644c72 *33686e6c766c31375f73727400446174617a6946696e6974654d61705f7a644c723368706c766c *31385f73727400733246345f696e666f00733246345f656e74727900733246365f696e666f0073 *3246365f656e74727900733246475f696e666f00733246475f656e74727900733247795f696e66 *6f00733247795f656e74727900733248475f696e666f00733248475f656e7472790073526c5f69 *6e666f0073526c5f726574004748437a6948616e646c655f6c766c35375f73727400733948495f *696e666f00733948535f315f616c7400733948565f696e666f00733948565f7265740073394855 *5f696e666f00733948555f72657400733948535f325f616c7400733948535f7674626c00733948 *525f696e666f00733948525f72657400733948505f696e666f00733948505f7265740073394849 *5f726574004748437a6948616e646c655f7374646f75745f737274004748437a6948616e646c65 *5f77616e745772697461626c6548616e646c657a715f73727400733852525f696e666f00733944 *775f315f616c7400733944775f325f616c7400733944775f335f616c7400733944445f736c6f77 *00733944445f656e74727900733944425f696e666f00733944425f72657400733852475f696e66 *6f00733852475f656e74727900733944415f696e666f00733944415f726574007339447a5f315f *616c74007339447a5f325f616c74007339447a5f7674626c007338524c5f696e666f007338524c *5f72657400733944785f696e666f00733944785f72657400733944445f696e666f00733944775f *365f616c7400733944775f64666c7400733944775f7674626c00733852305f696e666f00733852 *305f72657400733852525f656e747279004748437a69494f426173655f7a647773686f77735072 *6563355f7372740073364c465f696e666f0073376d645f7674626c0073364c6e5f315f616c7400 *73364c735f696e666f0073364c735f656e7472790073364c6e5f325f616c740073364c6e5f7674 *626c0073364c755f696e666f0073364c755f656e7472790073364c775f696e666f0073364c775f *656e7472790073364c425f315f616c740073364c445f696e666f0073364c445f656e7472790073 *364c425f325f616c740073364c425f7674626c0073364c465f656e7472790073376d655f315f61 *6c740073364d315f696e666f0073364d315f656e7472790073364d355f696e666f0073364d355f *656e7472790073376d665f315f616c740073364c535f696e666f0073364c535f656e7472790073 *364c575f696e666f0073364c575f656e7472790073376d665f325f616c740073376d665f767462 *6c0073376d655f325f616c740073376d655f7674626c0073376d645f315f616c740073364d395f *696e666f0073364d395f656e7472790073376d645f325f616c74004748437a69494f426173655f *73686f777350726563385f7372740073376b385f7674626c0073376b385f315f616c740073376b *635f696e666f0073376b635f72657400733656615f696e666f00733656615f656e747279007336 *56635f696e666f00733656635f656e7472790073376b625f696e666f0073376b625f7265740073 *3656685f696e666f00733656685f656e7472790073376b395f696e666f0073376b395f72657400 *73376b385f325f616c74004748437a694c6973745f7a644c723155516c766c31305f7372740073 *32696b5f7674626c007332696d5f315f616c7400733231555f696e666f00733231555f72657400 *7332696d5f325f616c74007332696d5f7674626c007332696c5f696e666f007332696c5f726574 *007332696b5f315f616c74007332696e5f315f616c74007332696e5f325f616c74007332696e5f *7674626c007332696b5f325f616c74007332356c5f7674626c00733269615f696e666f00733269 *615f72657400733269395f696e666f00733269395f72657400733235625f315f616c7400733269 *365f696e666f00733269365f72657400733235625f325f616c7400733235625f7674626c007332 *356c5f315f616c7400733269335f696e666f00733269335f72657400733269315f315f616c7400 *733269325f696e666f00733269325f72657400733269315f325f616c7400733269315f7674626c *007332356c5f325f616c74007331444d5f656e74727900733152375f696e666f00733152375f72 *657400736130755f696e666f00736130755f72657400733254475f696e666f00733254475f7265 *74004748437a6948616e646c655f7a6477666c75736857726974654275666665725f7372740073 *394b365f696e666f0073394b375f696e666f0073394b375f7265740073394b365f726574004748 *437a6948616e646c655f696f657a756e6f745772697461626c655f737274004748437a6948616e *646c655f696f657a75636c6f73656448616e646c655f73727400733843735f696e666f00733843 *735f736c6f7700733843735f656e74727900733843395f696e666f00733843395f656e74727900 *733843335f696e666f00733843335f72657400733843635f696e666f00733843635f7265740073 *3843665f696e666f00733843665f656e747279007338436f5f696e666f007338436f5f72657400 *733947375f696e666f00733947375f72657400733947365f696e666f00733947365f7265740073 *3947355f696e666f00733947355f726574004748437a6948616e646c655f6c766c39345f737274 *00733944505f696e666f00733944515f696e666f00733944515f72657400733944505f72657400 *4748437a6948616e646c655f7a6477666c757368526561644275666665725f7372740073394447 *5f696e666f00733851655f736c6f7700733851655f656e747279007339444b5f696e666f007339 *444b5f72657400733851655f696e666f007339444c5f696e666f007339444c5f72657400733944 *4a5f696e666f007339444a5f72657400733944485f696e666f00733944485f7265740073394447 *5f726574004748437a69494f426173655f7a647773686f777350726563345f7372740073377054 *5f696e666f00733673465f64666c7400733673465f7674626c00733770545f7372746400733770 *545f726574007331535a5f7674626c00733153485f315f616c74007332694f5f696e666f007332 *694f5f72657400733153485f325f616c7400733153485f7674626c007332694c5f696e666f0073 *32694c5f726574007331535a5f315f616c74007332694b5f696e666f007332694b5f7265740073 *3269495f315f616c74007332694a5f696e666f007332694a5f72657400733269495f325f616c74 *00733269495f7674626c007331535a5f325f616c7400733144785f696e666f00733144765f696e *666f00733144745f696e666f00733144745f656e74727900733144765f656e7472790073314478 *5f656e74727900736133715f696e666f00736133715f72657400733339475f696e666f00733339 *485f315f616c7400733339495f696e666f00733339495f72657400733339485f325f616c740073 *3339485f7674626c00733339475f7265740073386a555f696e666f0073386a4d5f696e666f0073 *386a555f736c6f770073386a555f656e7472790073386a525f696e666f0073386a525f72657400 *73386a4d5f736c6f770073386a4d5f656e74727900733949535f696e666f00733949535f726574 *004748437a6948616e646c655f6d6b53746448616e646c655f73727400733948705f696e666f00 *733875675f696e666f00733875675f72657400733875645f696e666f00733875645f7265740073 *38756c5f696e666f007338756c5f656e74727900733875795f736c6f7700733875795f656e7472 *7900733948745f696e666f00733948745f72657400733875795f696e666f00733948755f696e66 *6f00733948755f726574007338757a5f696e666f007338757a5f72657400733948715f696e666f *00733948715f72657400733948705f72657400733947665f696e666f00733947695f696e666f00 *733947695f72657400733947665f7265740073394b315f696e666f0073394b315f726574004748 *437a6948616e646c655f6765744275666665725f73727400733944565f696e666f0073384f325f *696e666f0073384f325f656e747279007339445a5f696e666f007339445a5f7265740073394459 *5f696e666f00733944595f72657400733944585f696e666f00733944585f72657400733944575f *696e666f00733944575f72657400733944565f7265740073394a5a5f696e666f0073394a5a5f72 *65740073394a525f696e666f0073394a545f696e666f0073394a545f7265740073394a525f7265 *74004748437a6948616e646c655f6132345f737274007339444e5f696e666f007339444f5f696e *666f007339444f5f726574007339444e5f7265740073386d565f696e666f0073386d565f726574 *00733361435f696e666f0073325a5a5f696e666f0073325a5a5f656e74727900733361435f7265 *7400733338535f696e666f00733338545f315f616c7400733338575f696e666f00733338575f72 *657400733338555f696e666f00733338555f72657400733338545f325f616c7400733338545f76 *74626c00733338535f72657400733949565f696e666f00733949565f726574007338664e5f696e *666f0073394a715f315f616c740073394a715f325f616c740073394a715f7674626c007338664c *5f315f616c74007338664c5f325f616c74007338664c5f7674626c007338664e5f656e74727900 *4748437a6948616e646c655f666c75736857726974654275666665724f6e6c795f737274007339 *48775f696e666f00733948465f315f616c7400733948485f696e666f00733948485f7265740073 *3948475f696e666f00733948475f72657400733948465f325f616c7400733948465f7674626c00 *733874735f696e666f00733874735f72657400733948445f696e666f00733948445f7265740073 *3948775f7265740073325a645f696e666f0073325a645f736c6f770073325a645f656e74727900 *73325a355f696e666f0073325a355f656e74727900733361485f696e666f00733361485f726574 *00733361475f696e666f00733361475f72657400733361465f696e666f00733361465f72657400 *6c6f6e676c6f6e672e630077726974654572726f722e630041646a7573746f722e630065786563 *50616765005f5f6f6273637572655f6363616c6c5f7265745f636f6465004d61696e2e63005274 *734150492e63007274734170694361706162696c69747900527473537461727475702e63006873 *5f696e69745f636f756e740073617665645f7465726d696f7300696e69745f737461636b005274 *735574696c732e63005f5f47656e53796d436f756e746572005363686564756c652e63006e6578 *745f7468726561645f6964007368757474696e675f646f776e5f7363686564756c657200736368 *6564756c6500646574656374426c61636b486f6c65730072656164795f746f5f67630074687265 *6164537461636b4f766572666c6f770064656c657465546872656164496d6d6564696174656c79 *0073757370656e6465645f6363616c6c696e675f74687265616473007363686564756c65546872 *6561645f00776169745468726561645f00416c6c526f6f74730065787472615f726f6f74730075 *6e626c6f636b4f6e654c6f636b656400756e626c6f636b546872656164007072696e7454687265 *6164426c6f636b616765007072696e745468726561645374617475730053656c6563742e630053 *69676e616c732e630068616e646c657273006e48616e646c657273006e5f6861736b656c6c5f68 *616e646c657273006d6f72655f68616e646c65727300636f6e745f68616e646c65720067656e65 *7269635f68616e646c657200757365725369676e616c730073617665645369676e616c73007368 *7574646f776e5f68616e646c657200537461626c652e6300737461626c655f7074725f66726565 *005350545f73697a650061646472546f537461626c65486173680072656d6f7665496e64697265 *6374696f6e730053746174732e63005469636b735065725365636f6e6400456c61707365645469 *6d6553746172740043757272656e74456c617073656454696d650043757272656e745573657254 *696d6500496e69745573657254696d6500496e6974456c617073656454696d6500496e6974456c *61707365645374616d70004d75745573657254696d65004d7574456c617073656454696d65004d *7574456c61707365645374616d7000457869745573657254696d650045786974456c6170736564 *54696d650047435f746f745f616c6c6f630047435f746f745f636f706965640047435f73746172 *745f74696d650047435f746f745f74696d65004743655f73746172745f74696d65004743655f74 *6f745f74696d65004d61785265736964656e6379004176675265736964656e6379005265736964 *656e637953616d706c65730047435f73746172745f6661756c74730047435f656e645f6661756c *74730067657454696d657300706167654661756c74730047435f636f6c6c5f74696d6573007275 *625f62656c6c005374674352756e2e63005374675072696d466c6f61742e630053746f72616765 *2e63007374674465616c6c6f63466f72474d50007374675265616c6c6f63466f72474d50007374 *67416c6c6f63466f72474d50005468726561644c6162656c732e63007468726561644c6162656c *730054696d65722e63007469636b735f746f5f637478745f7377697463680068616e646c655f74 *69636b005765616b2e6300466c616744656661756c74732e63004d616c6c6f634661696c2e6300 *4f6e457869742e63004f75744f66486561702e6300537461636b4f766572666c6f772e63004170 *706c792e6863004175746f4170706c792e6863007374675f61705f73746b5f6e007374675f7374 *6b5f736176655f6e007374675f61705f73746b5f70007374675f73746b5f736176655f70007374 *675f61705f73746b5f66007374675f73746b5f736176655f66007374675f61705f73746b5f6400 *7374675f73746b5f736176655f64007374675f61705f73746b5f6c007374675f73746b5f736176 *655f6c007374675f61705f73746b5f6e6e007374675f73746b5f736176655f6e6e007374675f61 *705f73746b5f6e70007374675f73746b5f736176655f6e70007374675f61705f73746b5f706e00 *7374675f73746b5f736176655f706e007374675f61705f73746b5f7070007374675f73746b5f73 *6176655f7070007374675f61705f73746b5f6e6e6e007374675f73746b5f736176655f6e6e6e00 *7374675f61705f73746b5f6e6e70007374675f73746b5f736176655f6e6e70007374675f61705f *73746b5f6e706e007374675f73746b5f736176655f6e706e007374675f61705f73746b5f6e7070 *007374675f73746b5f736176655f6e7070007374675f61705f73746b5f706e6e007374675f7374 *6b5f736176655f706e6e007374675f61705f73746b5f706e70007374675f73746b5f736176655f *706e70007374675f61705f73746b5f70706e007374675f73746b5f736176655f70706e00737467 *5f61705f73746b5f707070007374675f73746b5f736176655f707070007374675f61705f73746b *5f70707070007374675f73746b5f736176655f70707070007374675f61705f73746b5f70707070 *70007374675f73746b5f736176655f7070707070007374675f61705f73746b5f70707070707000 *7374675f73746b5f736176655f707070707070007374675f61705f73746b5f7070707070707000 *7374675f73746b5f736176655f70707070707070007374675f61705f73746b5f70707070707070 *70007374675f73746b5f736176655f707070707070707000457863657074696f6e2e6863004865 *6170537461636b436865636b2e6863007374675f626c6f636b5f74616b656d7661725f72657400 *7374675f626c6f636b5f7075746d7661725f726574005072696d4f70732e6863005374674d6973 *63436c6f73757265732e6863007374675f63746f695f7265745f5231705f375f72657400737467 *5f63746f695f7265745f5231705f365f726574007374675f63746f695f7265745f5231705f355f *726574007374675f63746f695f7265745f5231705f345f726574007374675f63746f695f726574 *5f5231705f335f726574007374675f63746f695f7265745f5231705f325f726574007374675f63 *746f695f7265745f5231705f315f726574007374675f63746f695f7265745f5231705f305f7265 *74007374675f63746f695f7265745f5231705f726574007374675f63746f695f7265745f523175 *6e70745f656e747279007374675f63746f695f7265745f52316e5f656e747279007374675f6374 *6f695f7265745f46315f656e747279007374675f63746f695f7265745f44315f656e7472790073 *74675f63746f695f7265745f4c315f656e747279007374675f63746f695f7265745f565f656e74 *7279007374675f6170706c795f696e746572705f656e747279007374675f494e445f656e747279 *007374675f494e445f6469726563745f656e747279007374675f494e445f305f656e7472790073 *74675f494e445f315f656e747279007374675f494e445f325f656e747279007374675f494e445f *335f656e747279007374675f494e445f345f656e747279007374675f494e445f355f656e747279 *007374675f494e445f365f656e747279007374675f494e445f375f656e747279007374675f494e *445f5354415449435f656e747279007374675f494e445f5045524d5f656e747279007374675f49 *4e445f4f4c4447454e5f656e747279007374675f494e445f4f4c4447454e5f5045524d5f656e74 *7279007374675f424c41434b484f4c455f656e747279007374675f424c41434b484f4c455f4251 *5f656e747279007374675f4341465f424c41434b484f4c455f656e747279007374675f54534f5f *656e747279007374675f4556414355415445445f656e747279007374675f5745414b5f656e7472 *79007374675f444541445f5745414b5f656e747279007374675f4e4f5f46494e414c495a45525f *656e747279007374675f464f524549474e5f656e747279007374675f535441424c455f4e414d45 *5f656e747279007374675f46554c4c5f4d5641525f656e747279007374675f454d5054595f4d56 *41525f656e747279007374675f454e445f54534f5f51554555455f656e747279007374675f454e *445f4d55545f4c4953545f656e747279007374675f4d55545f434f4e535f656e74727900737467 *5f454e445f455843455054494f4e5f4c4953545f656e747279007374675f455843455054494f4e *5f434f4e535f656e747279007374675f4152525f574f5244535f656e747279007374675f4d5554 *5f4152525f505452535f656e747279007374675f4d55545f4152525f505452535f46524f5a454e *5f656e747279007374675f4d55545f5641525f656e74727900537467537461727475702e686300 *5374675374645468756e6b732e6863007374675f73656c5f7265745f305f7570645f696e666f00 *7374675f73656c5f7265745f305f7570645f726574007374675f73656c5f7265745f315f757064 *5f696e666f007374675f73656c5f7265745f315f7570645f726574007374675f73656c5f726574 *5f325f7570645f696e666f007374675f73656c5f7265745f325f7570645f726574007374675f73 *656c5f7265745f335f7570645f696e666f007374675f73656c5f7265745f335f7570645f726574 *007374675f73656c5f7265745f345f7570645f696e666f007374675f73656c5f7265745f345f75 *70645f726574007374675f73656c5f7265745f355f7570645f696e666f007374675f73656c5f72 *65745f355f7570645f726574007374675f73656c5f7265745f365f7570645f696e666f00737467 *5f73656c5f7265745f365f7570645f726574007374675f73656c5f7265745f375f7570645f696e *666f007374675f73656c5f7265745f375f7570645f726574007374675f73656c5f7265745f385f *7570645f696e666f007374675f73656c5f7265745f385f7570645f726574007374675f73656c5f *7265745f395f7570645f696e666f007374675f73656c5f7265745f395f7570645f726574007374 *675f73656c5f7265745f31305f7570645f696e666f007374675f73656c5f7265745f31305f7570 *645f726574007374675f73656c5f7265745f31315f7570645f696e666f007374675f73656c5f72 *65745f31315f7570645f726574007374675f73656c5f7265745f31325f7570645f696e666f0073 *74675f73656c5f7265745f31325f7570645f726574007374675f73656c5f7265745f31335f7570 *645f696e666f007374675f73656c5f7265745f31335f7570645f726574007374675f73656c5f72 *65745f31345f7570645f696e666f007374675f73656c5f7265745f31345f7570645f7265740073 *74675f73656c5f7265745f31355f7570645f696e666f007374675f73656c5f7265745f31355f75 *70645f726574007374675f73656c5f7265745f305f6e6f7570645f696e666f007374675f73656c *5f7265745f305f6e6f7570645f726574007374675f73656c5f7265745f315f6e6f7570645f696e *666f007374675f73656c5f7265745f315f6e6f7570645f726574007374675f73656c5f7265745f *325f6e6f7570645f696e666f007374675f73656c5f7265745f325f6e6f7570645f726574007374 *675f73656c5f7265745f335f6e6f7570645f696e666f007374675f73656c5f7265745f335f6e6f *7570645f726574007374675f73656c5f7265745f345f6e6f7570645f696e666f007374675f7365 *6c5f7265745f345f6e6f7570645f726574007374675f73656c5f7265745f355f6e6f7570645f69 *6e666f007374675f73656c5f7265745f355f6e6f7570645f726574007374675f73656c5f726574 *5f365f6e6f7570645f696e666f007374675f73656c5f7265745f365f6e6f7570645f7265740073 *74675f73656c5f7265745f375f6e6f7570645f696e666f007374675f73656c5f7265745f375f6e *6f7570645f726574007374675f73656c5f7265745f385f6e6f7570645f696e666f007374675f73 *656c5f7265745f385f6e6f7570645f726574007374675f73656c5f7265745f395f6e6f7570645f *696e666f007374675f73656c5f7265745f395f6e6f7570645f726574007374675f73656c5f7265 *745f31305f6e6f7570645f696e666f007374675f73656c5f7265745f31305f6e6f7570645f7265 *74007374675f73656c5f7265745f31315f6e6f7570645f696e666f007374675f73656c5f726574 *5f31315f6e6f7570645f726574007374675f73656c5f7265745f31325f6e6f7570645f696e666f *007374675f73656c5f7265745f31325f6e6f7570645f726574007374675f73656c5f7265745f31 *335f6e6f7570645f696e666f007374675f73656c5f7265745f31335f6e6f7570645f7265740073 *74675f73656c5f7265745f31345f6e6f7570645f696e666f007374675f73656c5f7265745f3134 *5f6e6f7570645f726574007374675f73656c5f7265745f31355f6e6f7570645f696e666f007374 *675f73656c5f7265745f31355f6e6f7570645f72657400557064617465732e6863007374675f73 *65715f6672616d655f72657400426c6f636b416c6c6f632e6300667265655f6c69737400616c6c *6f634d65676147726f757000696e69744d426c6f636b00667265654d65676147726f7570004361 *706162696c6974792e6300696e69744361706162696c69747900436c6f73757265466c6167732e *630047432e6300673073305f70636e745f6b657074007468756e6b5f73656c6563746f725f6465 *7074680067635f616c6c6f635f626c6f636b004e006e65775f626c6f636b73006d616a6f725f67 *63007374617469635f6f626a65637473007a65726f5f6d757461626c655f6c697374006f6c645f *746f5f626c6f636b73006d61726b5f737461636b5f626465736372006d61726b5f737461636b00 *6d61726b5f7370006d61726b5f73706c696d0073636176656e67655f6c61726765007363617665 *6e67655f6d75745f6f6e63655f6c69737400657661635f67656e0073636176656e676500736361 *76656e67655f6d757461626c655f6c697374006d61726b5f726f6f74006d61726b5f7765616b5f *7074725f6c697374007765616b5f7374616765006f6c645f616c6c5f7468726561647300736361 *76656e67655f737461746963006d61726b5f737461636b5f6f766572666c6f776564006f6c6467 *656e5f7363616e5f62640073636176656e67655f6d61726b5f737461636b007472617665727365 *5f7765616b5f7074725f6c697374007a65726f5f7374617469635f6f626a6563745f6c69737400 *657661637561746500636f707950617274006d6b4d7574436f6e73006661696c65645f746f5f65 *766163006576616c5f7468756e6b5f73656c6563746f720073636176656e67655f6c617267655f *7372745f6269746d61700073636176656e676554534f0073636176656e67655f737461636b0073 *636176656e67655f6c617267655f6269746d6170006f6c6467656e5f7363616e0073636176656e *67655f6f6e65007468726561644c617a79426c61636b486f6c650074687265616453717565657a *65537461636b004743436f6d706163742e63007468726561645f73746174696300746872656164 *5f737461636b007468726561645f54534f007570646174655f6677645f6c617267650075706461 *74655f667764007468726561645f6f626a007570646174655f6677645f636f6d70616374007570 *646174655f626b77645f636f6d70616374007468726561645f6d75745f6f6e63655f6c69737400 *74687265616400486173682e630068617368576f7264006861736853747200636f6d7061726557 *6f726400636f6d7061726553747200616c6c6f635365676d656e7400657870616e640066726565 *4c69737400616c6c6f63486173684c6973740066726565486173684c69737400616c6c6f634861 *73685461626c655f00496e7465727072657465722e63006170705f707472735f6974626c004974 *696d65722e6300696e7374616c6c5f7674616c726d5f68616e646c6572004d426c6f636b2e6300 *6d795f6d6d61700067656e5f6d61705f6d626c6f636b73006e6578745f726571756573742e3000 *527473466c6167732e630075736167655f746578740073706c6974527473466c61677300646563 *6f6465006261645f6f7074696f6e006f70656e5f73746174735f66696c65005274734f7074732e *63006c6962676363322e6300656c662d696e69742e630047726170686963737a6955497a69474c *55547a6943616c6c6261636b737a6957696e646f775f64386f42004748437a69494f426173655f *5265736f75726365427573795f636c6f737572650047726170686963737a6952656e646572696e *677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b334f6c766c363339 *5f636c6f73757265004748437a69494f426173655f486561704f766572666c6f775f636c6f7375 *72650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726a55416c766c3439365f636c6f7375726500686561704f76657266 *6c6f770047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e64 *6f775f4b657946345f636c6f7375726500436f6e74726f6c7a69457863657074696f6e5f7a644c *72324a6264735f656e747279004748437a69494f426173655f45786974457863657074696f6e5f *7374617469635f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c *7a69474c7a6951756572795574696c735f7a644c726a52696c766c3434355f636c6f7375726500 *47726170686963737a6955497a69474c55547a6943616c6c6261636b737a695265676973747261 *74696f6e5f7a644c72483974686543616c6c6261636b5461626c655f656e747279004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f *7a644c726a57696c69743132385f636c6f73757265004748437a69426173655f7a644c7232694f *6c766c365f696e666f00446174617a6946696e6974654d61705f7a644c723367546c766c325f63 *6c6f73757265007374675f61705f365f7570645f656e7472790047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a4f6d6c *6974355f636c6f73757265005f5f737467696e69745f47726170686963737a6955497a69474c55 *547a6943616c6c6261636b737a69476c6f62616c004748437a69494f426173655f7a644c723661 *6f6135305f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726b37536c766c3730325f636c6f73757265004772 *6170686963737a6955497a69474c55547a6943616c6c6261636b737a6952656769737472617469 *6f6e5f7a64777a737a655f656e7472790047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a6951756572795574696c735f7a644c726a5a5a716c766c3537315f636c *6f73757265005f5f676d706e5f636d700047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a694361706162696c6974795f7a644c7235754c6c766c38335f636c6f73 *7572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175 *6572795574696c735f7a644c726b334d6c69743234345f636c6f73757265004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f6c766c *325f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726a5a5a366c766c3536365f636c6f73757265006f *6c645f7765616b5f7074725f6c697374004748437a69494f426173655f6c766c35335f636c6f73 *757265004748437a694e756d5f7a6c5f656e747279007374675f626c6f636b5f74616b656d7661 *725f696e666f0047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6952 *6567697374726174696f6e5f7a644c72483974686543616c6c6261636b5461626c655f696e666f *006d616b65537461626c654e616d657a685f666173740047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b62366c766c37 *35325f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b *737a69526567697374726174696f6e5f5265736861706543425f7374617469635f696e666f0047 *48437a69494f426173655f557365724572726f725f636c6f7375726500466f726569676e7a6943 *7a69537472696e675f776974684341537472696e675f656e74727900756c6c6f6e675f666f726d *61745f737472696e670047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726a54796c766c3438305f636c6f73757265004748 *437a69494f426173655f5061747465726e4d617463684661696c5f7374617469635f656e747279 *007374675f73656c5f305f7570645f696e666f0047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a59516c766c3536325f *636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a69 *526567697374726174696f6e5f7a644c72483974686543616c6c6261636b5461626c655f636c6f *737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6943 *61706162696c6974795f7a644c723578566c766c3133325f636c6f7375726500446174617a6946 *696e6974654d61705f7a644c723368316c766c365f636c6f7375726500676c7574537065636961 *6c46756e630047726170686963737a6955497a69474c55547a6943616c6c6261636b737a695265 *67697374726174696f6e5f7a644c723348506c766c32355f736c6f77007374675f696e74657270 *5f636f6e737472335f656e7472790047726170686963737a6955497a69474c55547a6943616c6c *6261636b737a69526567697374726174696f6e5f7a6466457143616c6c6261636b49445f636c6f *737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6943 *61706162696c6974795f7a644c723579566c697436365f636c6f73757265007374675f45564143 *55415445445f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a6951756572795574696c735f7a644c726a586b6c69743134345f636c6f737572650047 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574 *696c735f7a644c726a59306c766c3534395f636c6f73757265006e65774279746541727261797a *685f666173740047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *6951756572795574696c735f7a644c726a56416c69743131375f636c6f73757265004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f *7a644c726a53366c697436335f636c6f737572650047726170686963737a6952656e646572696e *677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a58536c766c353437 *5f636c6f73757265004748437a69494f426173655f526561644275666665725f636c6f73757265 *005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a6951756572795574696c735f00446174617a6946696e6974654d61705f4272616e6368 *5f636f6e5f696e666f007374675f657869740047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a69426567696e456e645f6c766c335f696e666f00676c466f676676 *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726b37306c69743239345f636c6f73757265007374675f61705f355f7570 *645f696e666f004748437a69494f426173655f7a647773686f777350726563345f737274640047 *726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f6134 *5f656e7472790047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957 *696e646f775f4b657946365f7374617469635f656e747279007374675f73656c5f31335f6e6f75 *70645f696e666f0047726170686963737a6955497a69474c55547a6943616c6c6261636b737a69 *57696e646f775f7a644c723877486c766c345f696e666f0047726170686963737a6955497a6947 *4c55547a6943616c6c6261636b737a6957696e646f775f6d616b65446973706c617943616c6c62 *61636b5f636c6f7375726500616c6c6f63617465645f62797465730047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b63 *386c766c3736385f636c6f73757265005f5f737467696e69745f47726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a69506f6c79676f6e735f004748437a69494f4261 *73655f494f457863657074696f6e5f636f6e5f656e747279006e657744796e4341460047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726b39346c69743332365f636c6f73757265007274735f6d6b4368617200446174617a *6946696e6974654d61705f6c766c345f656e74727900696e697453746f72616765005f5f737467 *696e69745f47726170686963737a6955497a69474c55547a69496e697469616c697a7a6174696f *6e5f004748437a69496e745f636f6d70617265325f636c6f7375726500446174617a6946696e69 *74654d61705f7a644c72336872706f6c797a756661696c5f696e666f0047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b *34456c766c3635325f636c6f737572650047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a69436f6f72645472616e735f506f736974696f6e5f636f6e5f656e7472 *79007374675f67635f756e70745f72315f7265740047726170686963737a6952656e646572696e *677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c723579426c697436315f *636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a694361706162696c6974795f7a644c7235774e6c697433335f636c6f73757265004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f *7a644c726a51436c697434305f636c6f737572650047726170686963737a6955497a69474c5554 *7a6943616c6c6261636b737a69526567697374726174696f6e5f7a657a65315f636c6f73757265 *007374675f73656c5f315f6e6f7570645f696e666f007374675f54534f5f696e666f0047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726a58656c766c3533375f636c6f73757265004748437a69494f426173655f6c766c35 *355f696e666f004748437a69546f7048616e646c65725f64735f636c6f73757265004748437a69 *494f426173655f426c6f636b65644f6e446561644d5661725f7374617469635f656e747279005f *5f737467696e69745f4748437a69466c6f617400696e6974527473466c61677344656661756c74 *730047726170686963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374 *726174696f6e5f7a64777a657a655f696e666f0047726170686963737a6955497a69474c55547a *6943616c6c6261636b737a6957696e646f775f7a644c7238774a6c766c355f656e747279004772 *6170686963737a6955497a69474c55547a6943616c6c6261636b737a6952656769737472617469 *6f6e5f537061636562616c6c427574746f6e43425f636c6f73757265004748437a69496e745f49 *387a685f636f6e5f656e747279005f5f737467696e69745f47726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c0047726170686963737a6955497a69474c55547a694361 *6c6c6261636b737a69526567697374726174696f6e5f5370656369616c43425f7374617469635f *656e747279007374675f4152525f574f5244535f696e666f004748437a6948616e646c655f6132 *345f636c6f7375726500676c48696e74007374675f73656c5f31355f6e6f7570645f696e666f00 *7374675f61705f335f7570645f656e7472790047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b39436c766c3732395f63 *6c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *694361706162696c6974795f7a644c723579546c766c3134375f636c6f73757265005f5f737467 *696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6952 *656374616e676c65735f00436f6e74726f6c7a69457863657074696f6e5f7a644c72324a356c76 *6c31345f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c *7a69474c7a6951756572795574696c735f7a644c726a55456c766c3439375f636c6f7375726500 *4748437a6948616e646c655f666c75736857726974654275666665724f6e6c795f636c6f737572 *650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726b62596c69743337315f636c6f73757265005f5f6469766469330044 *6174617a695475706c655f5a32545f7374617469635f696e666f0047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a69566572746578537065635f7a644c72616a48 *6c766c33345f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c62 *61636b737a69526567697374726174696f6e5f7a644c723348546c766c32365f696e666f004772 *6170686963737a6955497a69474c55547a6943616c6c6261636b737a6952656769737472617469 *6f6e5f7a64646d7a6c7a65315f656e747279004748437a69494f426173655f4578697445786365 *7074696f6e5f636f6e5f656e7472790047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a6951756572795574696c735f7a644c726b61656c69743334345f636c6f73 *7572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e64 *6f775f4b657946365f7374617469635f696e666f004748437a69576f72645f7a6d335f656e7472 *790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726b37796c766c3639375f636c6f737572650047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b *30416c766c3538395f636c6f73757265007374675f73656c5f31315f7570645f656e7472790047 *726170686963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174 *696f6e5f7a64777a64646d7a677a655f636c6f737572650047726170686963737a6955497a6947 *4c55547a69496e697469616c697a7a6174696f6e5f7a644c72356d457a647767656e657269634c *656e677468315f636c6f73757265007374675f73656c5f305f7570645f656e7472790047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726a5a5a306c69743137305f636c6f737572650047726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b37436c766c *3639385f636c6f73757265007374675f67635f6c310047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c7235797a7a6c766c31 *34325f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a6948696e74735f466173746573745f7374617469635f656e7472790047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a64 *4c726b624d6c69743336385f636c6f73757265007374675f75745f315f305f756e7265675f696e *666f00466f726569676e7a69437a69537472696e675f776974684341537472696e675f696e666f *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726a51556c766c3433395f636c6f737572650047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b32 *516c766c3632345f636c6f73757265005f5f737467696e69745f4748437a694c69737400474843 *7a694572725f756e74616e676c655f656e747279004748437a6948616e646c655f66647a757374 *646f75745f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a69426173696354797065735f456e61626c65645f7374617469635f656e74727900 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565727955 *74696c735f7a644c726b63416c766c3737355f636c6f73757265004748437a69494f426173655f *6c766c35345f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a6951756572795574696c735f7a644c726b30516c766c3539335f636c6f737572 *650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f77 *5f7a644c7238774c7a6477756e6d61727368616c5370656369616c4b65795f696e666f00676364 *496e747a685f66617374004748437a6948616e646c655f6c766c32375f636c6f73757265004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c735f7a644c726b32736c766c3631385f636c6f737572650047726170686963737a6955497a69 *474c55547a6943616c6c6261636b737a6957696e646f775f7a644c72574a676c75744d6f757365 *46756e635f656e747279007374675f454e445f4d55545f4c4953545f696e666f00676c466f6766 *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f6c69676874496e646578546f456e756d5f636c6f73757265005f5f737467696e69 *745f466f726569676e7a6953746f7261626c65005f5f737467696e69745f47726170686963737a *6955497a69474c55547a694f7665726c61790047726170686963737a6955497a69474c55547a69 *43616c6c6261636b737a69526567697374726174696f6e5f636f6d706172655f696e666f005f5f *737467696e69745f47726170686963737a6955497a69474c55547a69436f6e7374616e74730047 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574 *696c735f7a644c726b63656c69743337355f636c6f737572650047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c557a694572726f7273496e7465726e616c5f676574 *474c4572726f72734175785f636c6f737572650047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6951756572795574696c735f476574556e7061636b434d594b48 *696e745f7374617469635f656e7472790047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a6951756572795574696c735f7a644c726a53576c697437365f636c6f73 *7572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361 *706162696c6974795f7a644c723576786c766c39355f636c6f737572650047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c72 *35784a6c766c3132395f636c6f73757265007374675f61705f737461636b5f656e747269657300 *466f726569676e7a69437a694572726f725f7468726f774572726e6f496652657472794d617942 *6c6f636b5f656e747279005f5f737467696e69745f47726170686963737a6952656e646572696e *677a694f70656e474c7a69474c7a695072696d69746976654d6f6465005f5f737467696e69745f *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69427566666572 *4f626a656374730047726170686963737a6955497a69474c55547a6943616c6c6261636b737a69 *57696e646f775f4b657946365f636c6f73757265005f5f737467696e69745f4772617068696373 *7a6955497a69474c55547a6947616d654d6f64655f004748437a69426173655f5a30545f636c6f *737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e *646f775f4b6579486f6d655f636c6f737572650047726170686963737a6955497a69474c55547a *6943616c6c6261636b737a69526567697374726174696f6e5f7a657a65315f696e666f005f5f73 *7472746f645f696e7465726e616c4040474c4942435f322e3000756e626c6f636b4f6e6500466f *726569676e7a69437a694572726f725f7468726f774572726e6f496652657472795f656e747279 *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726b31676c69743230355f636c6f7375726500636d70496e74656765727a *685f66617374005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a694269746d6170735f004748437a69494f426173655f756e7361666550 *6572666f726d494f5f656e7472790047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a6951756572795574696c735f7a644c726b61346c766c3733365f636c6f7375 *72650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f *775f6b6579626f6172644d6f75736543616c6c6261636b5f636c6f737572650047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a64 *4c726a58456c69743134395f636c6f737572650047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b35456c69743237335f *636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f7a644c726a5a5a596c69743138355f636c6f7375726500477261 *70686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c *735f7a644c726a55536c69743130365f636c6f737572650047726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b31576c766c *3631305f636c6f73757265004748437a695074725f706c75735074725f696e666f004772617068 *6963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f64386f750047 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574 *696c735f7a644c726b32326c69743231375f636c6f73757265004748437a694e756d5f7a647771 *756f7452656d496e74656765725f636c6f737572650047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b36556c766c3638 *375f636c6f73757265005f5f737467696e69745f47726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a69436f6f72645472616e735f0047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b63476c *69743338325f636c6f73757265005f5f737467696e69745f4748437a6953746f7261626c655f00 *47726170686963737a6955497a69474c55547a69496e697469616c697a7a6174696f6e5f6d6172 *7368616c446973706c61794d6f64655f636c6f7375726500737461727454696d65720047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726b31516c69743231345f636c6f737572650047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b32476c697432 *32375f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a6951756572795574696c735f7a644c726b31796c766c3630345f636c6f737572650047 *48437a69494f426173655f7a644c723661656134355f696e666f0047726170686963737a695549 *7a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f43616c6c626163 *6b49445f636f6e5f656e747279004748437a69494f426173655f426c6f636b65644f6e44656164 *4d5661725f7374617469635f696e666f004748437a69494f426173655f6c766c34375f656e7472 *79004748437a69426173655f5a4d5a4e5f7374617469635f656e7472790047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c72 *6a52366c766c3434325f636c6f73757265007374675f72616973655f656e747279005f5f737467 *696e69745f466f726569676e7a69537461626c655074725f0047726170686963737a6955497a69 *474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a644c72334852676f *5f656e747279007274735f61726776005f5f656e636f6465446f75626c65007374675f626c6f63 *6b5f74616b656d766172005f5f737467696e69745f466f726569676e7a694d61727368616c7a69 *506f6f6c00466f726569676e7a694d61727368616c7a6941727261795f7769746841727261794c *656e305f656e7472790047726170686963737a6955497a69474c55547a6943616c6c6261636b73 *7a6957696e646f775f4d6f757365427574746f6e5f7374617469635f656e747279004748437a69 *4c6973745f7a64777370616e5f696e666f0047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a6953746174655661725f53746174655661725f636f6e5f656e747279 *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162 *696c6974795f7a64776d616b654361706162696c6974795f636c6f737572650047726170686963 *737a6955497a69474c55547a69496e697469616c697a7a6174696f6e5f6d61727368616c446973 *706c61794d6f64655f696e666f004d61696e5f6d61696e5f696e666f00736967616374696f6e40 *40474c4942435f322e30005f5f737467696e69745f466f726569676e7a69435f007274735f6576 *616c004748437a6948616e646c655f7769746848616e646c657a757a715f636c6f737572650047 *48437a69494f426173655f48616e646c657a757a755f636f6e5f656e747279004748437a69494f *426173655f6c766c34355f696e666f0047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a6951756572795574696c735f7a644c726b30436c69743139355f636c6f73 *7572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e64 *6f775f7a644c723878506139345f636c6f737572650047726170686963737a6955497a69474c55 *547a6943616c6c6261636b737a6957696e646f775f61365f696e666f004748437a69494f426173 *655f6137305f636c6f73757265007374675f41505f656e7472790047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a5161 *6c697433335f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c62 *61636b737a69526567697374726174696f6e5f7a64646d7a67315f696e666f0063617463687a68 *5f666173740047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *51756572795574696c735f7a644c726a5a5a576c766c3537395f636c6f73757265004748437a69 *53545265665f53545265665f7374617469635f656e7472790047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b30776c76 *6c3538385f636c6f7375726500684f70656e474c5f67657450726f634164647265737300737467 *5f73656c5f375f6e6f7570645f656e7472790047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a55696c697439375f636c *6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *51756572795574696c735f7a644c726a50386c697431375f636c6f737572650047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a64 *4c726a4f436c6974395f636c6f737572650047726170686963737a6955497a69474c55547a6943 *616c6c6261636b737a6957696e646f775f64386f480047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b35616c766c3636 *305f636c6f73757265004748437a6953686f775f69746f735f696e666f005f5f737467696e6974 *5f47726170686963737a6952656e646572696e677a694f70656e474c004748437a69494f426173 *655f4173796e63457863657074696f6e5f636f6e5f696e666f0047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a58716c *766c3534305f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c62 *61636b737a6957696e646f775f4b657946385f7374617469635f656e74727900737461745f6578 *697400676c75745370656369616c557046756e63004d61696e5f7a646766726f6d53746174655f *696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951 *756572795574696c735f7a644c726a56576c766c3531375f636c6f737572650047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a64 *4c726a56716c766c3530395f636c6f737572650047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a5a5a776c6974313738 *5f636c6f73757265004748437a694c6973745f7a644c72397a7a7072656c7a756c6973747a7573 *74725f656e747279005f5f737467696e69745f466f726569676e7a69437a694572726f72004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69466f675f61325f69 *6e666f005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a69416e7469616c696173696e675f007374675f73656c5f355f7570645f696e66 *6f004748437a69494f426173655f4275666665725f636f6e5f696e666f004748437a6953686f77 *5f5a434453686f775f7374617469635f696e666f0047726170686963737a6955497a69474c5554 *7a6943616c6c6261636b737a69526567697374726174696f6e5f7a644c723348566c766c32375f *736c6f7700446174617a694c6973745f73756d5f636c6f737572650047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b34 *366c69743234395f636c6f73757265004748437a69426173655f437a685f7374617469635f656e *7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175 *6572795574696c735f7a644c726a55656c697439365f636c6f737572650047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c72 *6a4f536c697431335f636c6f73757265005f5f737467696e69745f47726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a69457874656e73696f6e735f005f5f73746769 *6e69745f47726170686963737a6955497a69474c55547a6943616c6c6261636b73007374675f61 *705f70707070705f696e666f007274735f676574576f72643332004748437a69494f426173655f *5265736f7572636556616e69736865645f7374617469635f696e666f0047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b *39616c766c3732325f636c6f737572650047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a6951756572795574696c735f7a644c726b37656c766c3639325f636c6f *73757265007374675f73656c5f345f7570645f696e666f0047726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a56776c6974 *3131365f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c *7a69474c7a6951756572795574696c735f7a644c726a56736c69743131355f636c6f7375726500 *7374675f4d55545f4152525f505452535f46524f5a454e5f696e666f007374675f73656c5f315f *7570645f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a694361706162696c6974795f7a644c72357a7a4a6c766c3136305f636c6f73757265005f5f *737467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a694576616c7561746f7273006e657750696e6e65644279746541727261797a685f6661737400 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565727955 *74696c735f7a644c726b32346c766c3631325f636c6f73757265005f5f737467696e69745f4772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c73005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a69416e7469616c696173696e67004748437a695074725f46756e5074725f636f6e *5f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *4361706162696c6974795f7a644c723576566c766c3130315f636c6f7375726500477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a *644c726b316d6c766c3630315f636c6f737572650047726170686963737a6952656e646572696e *677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c723578356c766c313139 *5f636c6f73757265004748437a695061636b5f756e7061636b43537472696e675f636c6f737572 *65007374675f61705f385f7570645f696e666f007374675f61705f6c5f696e666f005f5f737467 *696e69745f4748437a69526561645f0047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a694361706162696c6974795f7a644c723576546c697431395f636c6f7375 *72650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726a58636c69743134325f636c6f73757265005f5f737467696e6974 *5f466f726569676e7a69437a69537472696e67006c6f6f6b7570537461626c654e616d65007274 *735f6d6b46756e507472004748437a69494f426173655f4173796e63457863657074696f6e5f63 *6f6e5f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a6951756572795574696c735f7a644c726a51656c697433345f636c6f737572650047726170 *686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f4b65794631 *325f7374617469635f696e666f004748437a6953686f775f7a64646d73686f774c6973745f636c *6f73757265004748437a69494f426173655f4c696e65427566666572696e675f636c6f73757265 *007374675f73656c5f31345f6e6f7570645f696e666f004748437a69494f426173655f7a644c72 *3661696134375f636c6f737572650047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a6951756572795574696c735f476574466f6748696e745f7374617469635f69 *6e666f00436f6e74726f6c7a69457863657074696f6e5f7a644c72324a356c766c31345f696e66 *6f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726a57716c69743133305f636c6f737572650047726170686963737a69 *55497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a657a655f *656e747279007374675f6e6f666f726365494f5f696e666f005f5f737467696e69745f47726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a69506978656c5265637461 *6e676c65737a69486973746f6772616d5f0047726170686963737a6955497a69474c55547a6943 *616c6c6261636b737a6957696e646f775f55705f7374617469635f696e666f004748437a69494f *426173655f7a644c723661696134375f696e666f007374675f42434f5f656e7472790047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726b336d6c766c3633325f636c6f737572650047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b34326c697432 *34385f636c6f73757265005f5f737467696e69745f4748437a69576f72645f006763537461626c *655074725461626c6500466f726569676e7a6953746f7261626c655f706f6c797a75616c69676e *6d656e74325f636c6f73757265004748437a6948616e646c655f6c766c32335f636c6f73757265 *004748437a69494f426173655f6136345f656e747279007374675f61705f645f72657400477261 *70686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974 *795f7a644c723579356c697435335f636c6f7375726500676c75744b6579626f61726446756e63 *004748437a694e756d5f7a647773686f7773507265635f636c6f73757265004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c *726a4f776c766c3430325f636c6f737572650047726170686963737a6955497a69474c55547a69 *496e697469616c697a7a6174696f6e5f7a64776c676f5f696e666f0047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c723577 *566c697433355f636c6f7375726500446174617a6946696e6974654d61705f4272616e63685f63 *6f6e5f656e7472790072656d6f7665486173685461626c65004748437a69494f426173655f4861 *7264776172654661756c745f636c6f737572650047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b38556c766c3731385f *636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f47657447656e65726174654d69706d617048696e745f73746174 *69635f656e747279004748437a69576f72645f7a70335f696e666f005f5f737467696e69745f46 *6f726569676e7a69537461626c65507472004748437a69494f426173655f7a647773686f777350 *726563325f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726b63756c69743337395f636c6f73757265004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c735f7a644c726a516b6c766c3433305f636c6f73757265005f5f737467696e69745f4748437a *69546f7048616e646c65725f0047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a6951756572795574696c735f7a644c726b38736c766c3731315f636c6f73757265 *005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a69536176696e6753746174655f0047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a6951756572795574696c735f7a644c726a5a5a4d6c69743138325f63 *6c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957 *696e646f775f436861725f7374617469635f696e666f0047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a57656c697431 *32375f636c6f73757265004748437a6948616e646c655f7374646f75745f696e666f0047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726a506d6c766c3431355f636c6f73757265004748437a69496e745f4936347a685f73 *74617469635f696e666f005f5f737467696e69745f47726170686963737a6952656e646572696e *677a694f70656e474c7a69474c557a694572726f72730047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a69466f675f4578705f7374617469635f696e666f007274 *735f676574466c6f6174004748437a69546f7048616e646c65725f7265706f7274537461636b4f *766572666c6f775f696e666f004748437a694c6973745f7a644c723155536c766c31315f656e74 *7279004748437a695765616b5f72756e46696e616c697a7a657242617463685f636c6f73757265 *004748437a69576f72645f6c6974375f636c6f73757265004748437a694c6973745f7370616e5f *636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a69 *526567697374726174696f6e5f7a644c72334a356c766c33305f636c6f73757265007374675f73 *656c5f355f6e6f7570645f656e7472790047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a694361706162696c6974795f7a644c72357a7a746c766c3135365f636c *6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *51756572795574696c735f7a644c726a4f6f6c766c3430305f636c6f73757265005f5f73746769 *6e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c55004748 *437a69494f426173655f6137375f636c6f73757265004748437a6953746f7261626c655f726561 *645074724f66665074725f696e666f0047726170686963737a6955497a69474c55547a6943616c *6c6261636b737a6957696e646f775f4b65794631315f7374617469635f656e74727900696e7365 *7274486173685461626c650047726170686963737a6952656e646572696e677a694f70656e474c *7a69474c7a6951756572795574696c735f7a644c726a554f6c69743130355f636c6f7375726500 *47726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f4b *657955705f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a6951756572795574696c735f7a644c726b30676c766c3538345f636c6f73757265 *005f5f737467696e69745f466f726569676e7a69437a6954797065735f007374675f6361746368 *5f6672616d655f305f726574004748437a6948616e646c655f6132345f656e747279004748437a *69494f426173655f4d5661725f636f6e5f656e7472790047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a55476c697431 *30335f636c6f73757265004748437a69494f426173655f494f457863657074696f6e5f636f6e5f *696e666f007274735f6d6b496e7400666f726b7a685f666173740064656c657465416c6c546872 *65616473004748437a69426173655f47545f636c6f737572650047726170686963737a6955497a *69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f43616c6c6261636b *49445f636f6e5f696e666f004d61696e5f66335f636c6f737572650047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b63 *796c69743338305f636c6f737572650047726170686963737a6955497a69474c55547a6943616c *6c6261636b737a6957696e646f775f4b65794631305f636c6f737572650047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f47657450 *6f696e74536d6f6f746848696e745f7374617469635f656e747279004748437a69576f72645f7a *64646d73686f775f636c6f737572650047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a6951756572795574696c735f476574466f6748696e745f7374617469635f *656e7472790068735f6164645f726f6f740063726561746541646a7573746f72004748437a6949 *4f426173655f6c766c34365f636c6f737572650047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b63306c766c3736365f *636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f7a644c726a53386c766c3435385f636c6f737572650047726170 *686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f4b65794c65 *66745f7374617469635f696e666f0047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a6951756572795574696c735f7a644c726b37636c69743239375f636c6f7375 *72650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726a584d6c69743135315f636c6f737572650047726170686963737a *6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f53706163 *6562616c6c4d6f74696f6e43425f7374617469635f656e747279005f5f737467696e69745f4772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69546578747572696e *677a69506978656c496e7465726e616c466f726d617400446174617a6946696e6974654d61705f *7a6477676c756542616c5f636c6f737572650047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a694361706162696c6974795f7a644c723578446c697434365f636c *6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *51756572795574696c735f7a644c726a58776c69743134375f636c6f7375726500477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a *644c726a544f6c766c3438345f636c6f73757265007374675f73656c5f31345f7570645f696e66 *6f007274735f676574496e743332004748437a69426173655f7a644c7232694f6c766c365f636c *6f7375726500676574416c6c6f636174696f6e73005f5f737467696e69745f4748437a6953545f *004748437a694e756d5f4a7a685f636f6e5f696e666f0047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b626f6c697433 *36325f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b *737a69526567697374726174696f6e5f74686553636176656e6765725f656e74727900756e7361 *66655468617741727261797a685f66617374007374675f4d55545f4152525f505452535f696e66 *6f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f476574466f6748696e745f636c6f737572650047726170686963737a6955497a *69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f506173736976654d *6f74696f6e43425f7374617469635f656e747279004748437a69426173655f5a30545f73746174 *69635f656e747279005f44594e414d4943004748437a69494f426173655f7a644c723661656134 *355f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726a52556c697436305f636c6f7375726500477261 *70686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c *735f47657454657874757265436f6d7072657373696f6e48696e745f7374617469635f656e7472 *790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f676574496e7465676572315f696e666f007374675f73656c5f335f7570645f65 *6e74727900446174617a6946696e6974654d61705f7a644c7233686e6c766c31375f656e747279 *004748437a69576f72645f7369676e756d335f696e666f0047726170686963737a6955497a6947 *4c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7265676973746572466f *72436c65616e75705f696e666f007374675f626c6f636b4173796e63457863657074696f6e737a *685f7265745f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c *7a69474c7a6951756572795574696c735f7a644c726b366b6c766c3637385f636c6f7375726500 *5f5f737467696e69745f53797374656d7a69506f7369787a695479706573004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c *723575566c6974345f636c6f737572650047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a6948696e74735f7a644c723367616c766c31305f696e666f007374675f *7570645f6672616d655f355f7265740047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a6951756572795574696c735f47657447656e65726174654d69706d617048 *696e745f7374617469635f696e666f004748437a69494f426173655f6c766c34375f636c6f7375 *7265004748437a69576f72645f7a657a65345f696e666f0047726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c7235787a7a6c69 *7434355f636c6f73757265005f5f737467696e69745f47726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a69546578747572696e677a69506172616d65746572735f00 *47726170686963737a6955497a69474c55547a69496e697469616c697a7a6174696f6e5f6d6172 *7368616c446973706c61794d6f64655f656e7472790047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a69457874656e73696f6e735f6c766c5f696e666f00477261 *70686963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f *6e5f636f6d706172655f656e7472790047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a694361706162696c6974795f7a644c723578376c697433385f636c6f7375 *7265004748437a694572725f6c766c375f656e747279004748437a69494f426173655f6c766c35 *385f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f7a644c726a50636c697431385f636c6f73757265004748437a69 *53686f775f5a434453686f775f636f6e5f656e747279004748437a69494f426173655f55736572 *4572726f725f7374617469635f696e666f0047726170686963737a6955497a69474c55547a6943 *616c6c6261636b737a69526567697374726174696f6e5f73657443616c6c6261636b5f656e7472 *79005f5f676d707a5f6469766578616374007374675f61705f385f7570645f656e747279004772 *6170686963737a6955497a69474c55547a6943616c6c6261636b737a6952656769737472617469 *6f6e5f7a64777a64646d7a677a655f696e666f0047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b32456c766c3632315f *636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f7a644c726b61556c766c3734395f636c6f73757265006973466c *6f61744e614e0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *6951756572795574696c735f7a644c726b36756c69743238365f636c6f73757265004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f *7a644c726b62456c69743336365f636c6f737572650047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a576f6c766c3532 *345f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b73 *7a69526567697374726174696f6e5f7a64646d7a677a65315f696e666f0047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c72 *6b31556c69743231355f636c6f73757265004748437a69576f72645f7a64664571576f72643332 *5f636c6f73757265007374675f7570645f6672616d655f375f726574005f5f737467696e69745f *4748437a69456e756d5f007374675f73656c5f355f6e6f7570645f696e666f004748437a694572 *725f7a644c7250636c766c31345f636c6f737572650047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b32386c766c3631 *335f636c6f73757265005f5f737467696e69745f4748437a694c6973745f004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c *726a51576c697434355f636c6f737572650047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a694361706162696c6974795f7a644c7235795a5a6c697436375f636c *6f7375726500436f6e74726f6c7a69457863657074696f6e5f756e636175676874457863657074 *696f6e48616e646c65725f636c6f737572650047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f636c6970506c616e65496e64657854 *6f456e756d5f696e666f007374675f61705f70705f696e666f005f5f737467696e69745f466f72 *6569676e7a694d61727368616c00676c754275696c6433444d69706d61704c6576656c73007461 *6b654d5661727a685f66617374004748437a69494f426173655f556e737570706f727465644f70 *65726174696f6e5f7374617469635f656e7472790047726170686963737a6955497a69474c5554 *7a6943616c6c6261636b737a69526567697374726174696f6e5f5370656369616c43425f737461 *7469635f696e666f00466f726569676e7a6953746f7261626c655f706f6c797a7573697a7a654f *66325f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a6951756572795574696c735f7a644c726a54346c697437385f636c6f73757265004748 *437a6948616e646c655f7a6477666c75736857726974654275666665725f696e666f0047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726a55386c766c3438395f636c6f737572650047726170686963737a6955497a69474c *55547a6943616c6c6261636b737a6957696e646f775f4b657946395f7374617469635f696e666f *0047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6952656769737472 *6174696f6e5f49646c6543425f7374617469635f696e666f007374675f424c41434b484f4c455f *696e666f004748437a69426173655f4c545f7374617469635f696e666f0047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c557a694572726f7273496e7465726e616c *5f7a644c7233696e6c766c32305f656e747279005f5f737467696e69745f47726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a69506978656c52656374616e676c6573 *7a69436f6c6f725461626c655f0053797374656d7a69456e7669726f6e6d656e745f6765744172 *67735f636c6f7375726500446174617a6946696e6974654d61705f706f6c797a7564656c657465 *4d696e5f696e666f004748437a6948616e646c655f64735f636c6f7375726500676c436f6c6f72 *336600436f6e74726f6c7a69457863657074696f6e5f7a644c72324a646c766c31365f656e7472 *790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f476574506f696e74536d6f6f746848696e745f636c6f73757265004772617068 *6963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f4b657946325f *7374617469635f656e747279007374675f6571496e743634007374675f6d696e7573496e743634 *0047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f *4b657950616765446f776e5f7374617469635f696e666f005f5f737467696e69745f4748437a69 *426173655f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *566572746578537065635f7074727a75676c466f67436f6f7264664558545f636c6f7375726500 *47726170686963737a6955497a69474c55547a6943616c6c6261636b737a695265676973747261 *74696f6e5f5461626c65744d6f74696f6e43425f636c6f73757265005f5f737467696e69745f47 *726170686963737a6952656e646572696e677a694f70656e474c5f004748437a69426173655f43 *7a685f7374617469635f696e666f004748437a6948616e646c655f6c766c36385f636c6f737572 *650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726a544d6c697438395f636c6f73757265005f5f737467696e69745f47 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6954657874757269 *6e677a694170706c69636174696f6e5f004d61696e5f66315f696e666f005f5f737467696e6974 *5f466f726569676e7a694d61727368616c5f00696e746572727570746564007374675f756e6368 *65636b6564495368696674524136340047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a6951756572795574696c735f7a644c726a5a5a556c69743138345f636c6f *73757265004748437a69576f72645f7a64646d73686f775f656e7472790047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c72 *357a7a766c697437355f636c6f73757265005f5f6465636f6465446f75626c65005f5f73746769 *6e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c557a6945 *72726f7273496e7465726e616c0047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a694361706162696c6974795f7a644c723578336c697433375f636c6f73757265 *005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a69457863657074696f6e0047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a69457874656e73696f6e735f6c766c5f656e74727900466f726569676e7a69 *437a694572726f725f7468726f774572726e6f496652657472794d6179426c6f636b5f696e666f *004748437a69426173655f426f6f6c5f636c6f737572655f74626c007374675f67635f756e6278 *5f72315f726574007274735f6d6b466c6f617400446174617a6946696e6974654d61705f7a6477 *6d6b42616c4272616e63685f636c6f737572650047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a69426567696e456e645f72656e6465725072696d69746976655f *696e666f0047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e *646f775f436861725f7374617469635f656e7472790047726170686963737a6955497a69474c55 *547a6943616c6c6261636b737a6957696e646f775f4b657946375f636c6f73757265007374675f *7570645f6672616d655f335f72657400466f726569676e7a69437a694572726f725f7a64776363 *616c6c325f696e666f004748437a69457863657074696f6e5f6361746368457863657074696f6e *5f696e666f004748437a69494f426173655f556e736174697366696564436f6e73747261696e74 *735f7374617469635f696e666f0047726170686963737a6955497a69474c55547a69496e697469 *616c697a7a6174696f6e5f7a644c72356d47676f315f656e7472790047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b62 *6d6c766c3735365f636c6f73757265004748437a694c6973745f726576657273655f696e666f00 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565727955 *74696c735f7a644c726b376f6c69743330305f636c6f737572650047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a5949 *6c766c3536305f636c6f737572650047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a6951756572795574696c735f7a644c726a566d6c766c3530385f636c6f7375 *72650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69436170 *6162696c6974795f7a644c723578466c766c3132385f636c6f73757265005f5f737467696e6974 *5f446174617a695475706c655f005f5f737467696e69745f446174617a69486173685461626c65 *5f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726b33496c69743234335f636c6f737572650047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c7235 *79466c697436325f636c6f737572650047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a6951756572795574696c735f7a644c726b38576c69743332345f636c6f73 *7572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e64 *6f775f6b6579626f6172644d6f75736543616c6c6261636b5f656e74727900616e795573657248 *616e646c6572730047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f7a644c726b32716c69743232335f636c6f737572650047726170 *686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f6138385f69 *6e666f004748437a6948616e646c655f6765744275666665725f656e7472790047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c557a694572726f7273496e7465726e *616c5f676574474c4572726f72734175785f696e666f004748437a69494f426173655f4e6f6e54 *65726d696e6174696f6e5f7374617469635f696e666f004748437a69496e745f7a64777a657a65 *5f736c6f77005f5f737467696e69745f446174617a69494f5265665f007374675f73656c5f3130 *5f7570645f696e666f004748437a69494f426173655f6c766c36325f656e747279004772617068 *6963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f446f776e5f63 *6c6f73757265007374675f63617463685f696e666f007374675f61705f707070705f7265740047 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574 *696c735f7a644c726a52676c697435305f636c6f737572650047726170686963737a6955497a69 *474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f446973706c61794342 *5f636c6f73757265005f5f737467696e69745f47726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a69506978656c52656374616e676c65737a694d696e6d61785f0044 *6174617a6946696e6974654d61705f6c766c345f696e666f004748437a69494f426173655f756e *73616665506572666f726d494f5f696e666f0047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a52326c766c3434315f63 *6c6f73757265007374675f706c7573496e74363400466f726569676e7a694d61727368616c7a69 *41727261795f6c766c5f636c6f7375726500446174617a6946696e6974654d61705f7a64776669 *6e644d61785f696e666f004748437a694e756d5f6c766c31315f636c6f73757265004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f *7a644c726b63326c69743337325f636c6f737572650074696d657374616d70004748437a695368 *6f775f73686f77735f636c6f73757265005f5f737467696e69745f4748437a6945786365707469 *6f6e0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726b374b6c766c3730305f636c6f73757265007374675f73746f705f *7468726561645f726574004748437a69494f426173655f6c766c35325f636c6f73757265004748 *437a694c6973745f7a644c723155656c766c5f636c6f73757265007274735f676574426f6f6c00 *4748437a69494f426173655f6c766c34355f656e747279005f5f737467696e69745f5a434d6169 *6e007274735f676574446f75626c65007374675f7570645f6672616d655f315f72657400466f72 *6569676e7a69437a694572726f725f7468726f774572726e6f496652657472794d6179426c6f63 *6b5f636c6f737572650077726974654040474c4942435f322e30007374675f63746f695f726574 *5f565f696e666f004748437a69576f72645f7a64646d73686f774c697374335f636c6f73757265 *00466f726569676e7a694d61727368616c7a695574696c735f776974684d616e795f656e747279 *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726a5a5a436c766c3537345f636c6f7375726500466f726569676e7a694d *61727368616c7a695574696c735f776974684d616e795f636c6f7375726500446174617a694669 *6e6974654d61705f4272616e63685f7374617469635f696e666f005f5f737467696e69745f4748 *437a694172725f0047726170686963737a6955497a69474c55547a6943616c6c6261636b737a69 *57696e646f775f4b657946345f7374617469635f656e747279007374675f73656c5f335f757064 *5f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c557a *694572726f7273496e7465726e616c5f7a644c7233696e6c766c32305f636c6f73757265004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c735f7a644c726b306b6c766c3538355f636c6f7375726500696e6974537461626c6550747254 *61626c65007374675f776f72643634546f496e743634005f5f737467696e69745f477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a69494f53746174655f005f5f73 *7467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *695072696d69746976654d6f64655f007374675f63746f695f7265745f4c315f696e666f006861 *6e646c655369676e616c73496e5468697354687265616400446174617a6946696e6974654d6170 *5f7a644c723367546c766c325f696e666f0047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a6951756572795574696c735f7a644c726a57676c766c3532325f636c *6f73757265004748437a69494f426173655f48616e646c657a757a755f7374617469635f656e74 *72790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726a53516c766c3436395f636c6f737572650047726170686963737a *6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f636f6d70 *617265315f696e666f007374675f73656c5f325f7570645f656e7472790047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a69426173696354797065735f456e6162 *6c65645f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c *7a69474c7a6951756572795574696c735f7a644c726a4f4d6c766c3430365f636c6f7375726500 *7374675f67635f66315f7265740047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a6951756572795574696c735f7a644c726b636b6c766c3737315f636c6f737572 *650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726a57596c766c3533335f636c6f73757265004748437a69576f72645f *7a646653686f77576f726433325f636c6f73757265004748437a695061636b5f756e7061636b43 *537472696e675f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c *7a69474c557a694572726f7273496e7465726e616c5f7265636f72644572726f72436f64655f63 *6c6f73757265005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a69506572467261676d656e745f005f5f737467696e69745f5072656c75 *64650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726a54716c766c3437385f636c6f73757265007374675f61705f375f *7570645f656e74727900626c6f636b65645f71756575655f746c0047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b3671 *6c69743238355f636c6f737572650047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a69436f6f72645472616e735f7a645753697a7a655f656e747279004748437a *69426173655f6c766c375f636c6f737572650047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b30756c69743139335f63 *6c6f737572650072657365744e75727365726965730047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c72357a7a4c6c697437 *395f636c6f73757265004748437a69496e745f4931367a685f636f6e5f696e666f004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6948696e74735f4e69636573 *745f7374617469635f656e747279007374675f6172675f6269746d617073005f5f737467696e69 *745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6950697865 *6c52656374616e676c65737a69526173746572697a7a6174696f6e5f004748437a69494f426173 *655f416c72656164794578697374735f636c6f737572650047726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b62576c766c *3736355f636c6f73757265006d61696e5f74687265616473004d61696e5f53746174655f737461 *7469635f696e666f00737472636d704040474c4942435f322e3000446174617a6946696e697465 *4d61705f7a644c72336874706f6c797a756661696c315f696e666f004748437a69494f42617365 *5f42756666657253746174655f636c6f737572655f74626c005f5f737467696e69745f47726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a69546578747572696e677a *69546578506172616d657465725f0067656e53796d5a68004748437a69426173655f5a43444f72 *645f7374617469635f656e74727900446174617a6946696e6974654d61705f7a644c723368316c *766c365f696e666f005f5f737467696e69745f47726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a694672616d656275666665725f0064655265665765616b7a685f66 *61737400446174617a6946696e6974654d61705f6c766c345f636c6f7375726500477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a *644c726a50326c766c3431305f636c6f73757265004748437a69494f426173655f6c766c35335f *656e7472790047726170686963737a6955497a69474c55547a6943616c6c6261636b737a695769 *6e646f775f7a644c72574a676c75744d6f75736546756e635f696e666f0047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f6c766c33 *5f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a6951756572795574696c735f7a644c726a51366c697433325f636c6f737572650047726170 *686963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e *5f746865436c65616e75704c6973745f656e7472790047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b32776c766c3631 *395f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726b38716c69743331365f636c6f73757265005f5f *737467696e69745f47726170686963737a6955497a69474c55547a69466f6e74735f0047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726b37756c766c3639365f636c6f737572650047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b336b6c697432 *33375f636c6f73757265007374675f73656c5f31305f7570645f656e74727900436f6e74726f6c *7a69457863657074696f6e5f7a644c7232497a7a7a64776c766c5f656e747279007374675f6170 *5f335f7570645f696e666f00466f726569676e7a694d61727368616c7a6941727261795f7a6477 *7065656b41727261795f696e666f005f5f696e745f656e636f6465466c6f6174004748437a6942 *6173655f7a707a705f656e7472790047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a6951756572795574696c735f7a644c726a56696c766c3530375f636c6f7375 *7265004748437a69494f426173655f4d5661725f636f6e5f696e666f0047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a *59346c766c3535305f636c6f737572650053797374656d7a69457869745f6c766c5f636c6f7375 *72650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726b396d6c766c3732355f636c6f73757265004748437a69494f4261 *73655f6c766c36335f696e666f007374675f72656d576f726436340047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b61 *306c766c3733355f636c6f737572650047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a6951756572795574696c735f7a644c726b31616c766c3539385f636c6f73 *7572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361 *706162696c6974795f7a644c72357a7a6e6c697437335f636c6f73757265005f5f737467696e69 *745f4748437a6953746f7261626c650047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a6951756572795574696c735f7a644c726a51736c766c3433325f636c6f73 *7572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361 *706162696c6974795f7a644c723576316c766c38375f636c6f73757265004748437a6942617365 *5f5a434445715f636f6e5f656e747279005f66705f687700737461745f656e644743004748437a *69494f426173655f48617264776172654661756c745f7374617469635f656e747279004748437a *69494f426173655f6136335f656e7472790047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a6951756572795574696c735f7a644c726b62476c766c3736315f636c *6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a695265 *67697374726174696f6e5f7a644c723348506c766c32355f696e666f004748437a6948616e646c *655f64454641554c547a754255464645527a7553495a5a455f656e747279004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c *726b33476c766c3633375f636c6f73757265007374675f666f726365494f5f696e666f00477261 *70686963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f *6e5f7a644c72334852676f5f636c6f73757265004748437a69494f426173655f6c766c34365f69 *6e666f005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a69546578747572696e677a69506978656c496e7465726e616c466f726d61745f *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726b31536c766c3630395f636c6f737572650047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a69457874656e73696f6e735f7a6477636361 *6c6c5f636c6f73757265007274735f676574576f726431360047726170686963737a6955497a69 *474c55547a6943616c6c6261636b737a6957696e646f775f61345f696e666f00737461745f656e *6445786974005f5f737467696e69745f4748437a69537461626c650047726170686963737a6955 *497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f4a6f79737469 *636b43425f7374617469635f696e666f004748437a694572725f756e74616e676c655f696e666f *00466f726569676e7a69437a694572726f725f7468726f774572726e6f5f636c6f737572650044 *6174617a6946696e6974654d61705f7a644c7233674e7a64776d6b4272616e63685f696e666f00 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565727955 *74696c735f7a644c726b33736c69743233395f636c6f737572650047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b3236 *6c69743231385f636c6f737572650047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a694361706162696c6974795f7a644c723577706c697432375f636c6f737572 *650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726a584f6c766c3534365f636c6f737572650047726170686963737a69 *55497a69474c55547a6954797065735f4c656674427574746f6e5f7374617469635f696e666f00 *4748437a69494f426173655f556e736174697366696564436f6e73747261696e74735f636c6f73 *75726500706572726f724040474c4942435f322e30004d61696e5f66325f656e74727900477261 *70686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c *735f7a644c726a52496c697435375f636c6f73757265005f5f737467696e69745f477261706869 *63737a6955497a69474c55547a6953746174655f0047726170686963737a6952656e646572696e *677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c723579726c766c313430 *5f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a *6957696e646f775f4b657952696768745f636c6f73757265007374675f696e746572705f636f6e *737472385f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a6951756572795574696c735f7a644c726b62436c766c3736305f636c6f737572650047 *726170686963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174 *696f6e5f7265676973746572466f72436c65616e75705f656e747279005f5f737467696e69745f *53797374656d7a69457869745f0047726170686963737a6955497a69474c55547a695479706573 *5f6c766c315f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a6951756572795574696c735f7a644c726b384d6c766c3731365f636c6f737572 *6500736967696e746572727570744040474c4942435f322e30004748437a69496e745f636f6d70 *617265325f656e7472790047726170686963737a6955497a69474c55547a6943616c6c6261636b *737a6957696e646f775f7a644c7238784c6139325f656e747279007274735f6576616c494f0073 *74675f776f72643634546f576f72640047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a694361706162696c6974795f7a644c723579746c697435395f636c6f7375 *72650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726a546d6c766c3437375f636c6f737572650047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c72 *6b31456c69743231315f636c6f737572650047726170686963737a6955497a69474c55547a6943 *616c6c6261636b737a6957696e646f775f7a644c725750676c75745370656369616c46756e635f *636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *557a694572726f7273496e7465726e616c5f6c766c31395f636c6f737572650047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a64 *4c726a554d6c766c3439395f636c6f737572650047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a69566572746578537065635f436f6c6f72345f636f6e5f656e74 *72790047726170686963737a6955497a69474c55547a6943616c6c6261636b737a695265676973 *74726174696f6e5f7a644c7233484e6c766c32345f736c6f77004748437a69494f426173655f48 *616e646c657a757a755f7374617469635f696e666f0047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a57436c69743133 *335f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726b35796c766c3636365f636c6f73757265005f5f *737467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a69546578747572696e677a695175657269657300667072696e74664040474c4942435f322e30 *00636f6d70616374005f5f737467696e69745f47726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a69506f6c79676f6e4d6f646500666f726b4040474c4942435f322e *30007274735f6576616c4c617a79494f004748437a6948616e646c655f6c766c35375f696e666f *007374675f464f524549474e5f696e666f007274735f676574576f726438004748437a69494f42 *6173655f6e6577494f5265665f656e747279007374675f6e65576f72643634004748437a694861 *6e646c655f6c766c36365f636c6f73757265005f5f737467696e69745f47726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a69506978656c52656374616e676c65737a *69436f6e766f6c7574696f6e0047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a6948696e74735f466f675f7374617469635f656e747279005f5f737467696e6974 *5f446174617a69576f72645f00676574656e764040474c4942435f322e30004748437a69494f42 *6173655f6c766c36315f636c6f73757265005f5f737467696e69745f546578747a695061727365 *72436f6d62696e61746f72737a6952656164507265630047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c723577486c766c31 *31335f636c6f73757265005f5f737467696e69745f47726170686963737a6955497a69474c5554 *7a695374617465004748437a6948616e646c655f7a6477666c757368526561644275666665725f *696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951 *756572795574696c735f7a644c726a534d6c766c3436385f636c6f737572650047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a64 *4c723578316c766c3131385f636c6f73757265005f5f737467696e69745f47726170686963737a *6955497a69474c555400676c75744d61696e4c6f6f7000436f6e74726f6c7a6945786365707469 *6f6e5f7a644c7232497a7a7a64776c766c5f636c6f73757265004748437a69494f426173655f49 *6e76616c6964417267756d656e745f7374617469635f656e74727900446174617a694c6973745f *6c766c385f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a6951756572795574696c735f7a644c726b31416c69743231305f636c6f73757265 *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726a55576c69743130375f636c6f737572650063616c634e656564656400 *5f5f696e745f656e636f6465446f75626c65004748437a69494f426173655f416c726561647945 *78697374735f7374617469635f656e747279007374675f74696d6573496e743634005f5f737467 *696e69745f466f726569676e7a694d61727368616c7a695574696c73005f5f737467696e69745f *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a694c696e655365 *676d656e74730066666c7573684040474c4942435f322e300047726170686963737a6955497a69 *474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a737a65315f656e74 *72790047726170686963737a6955497a69474c55547a6943616c6c6261636b737a695265676973 *74726174696f6e5f7a644c72334a316c766c32385f636c6f737572650047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a64776c69 *676874496e646578546f456e756d5f696e666f005f5f737467696e69745f53797374656d7a6949 *4f7a69556e736166655f004d61696e5f53746174655f636c6f73757265007374675f696e69745f *7265740047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175 *6572795574696c735f7a644c726b35556c69743237375f636c6f73757265006465636f6465446f *75626c657a685f666173740047726170686963737a6952656e646572696e677a694f70656e474c *7a69474c557a694572726f7273496e7465726e616c5f6c6974325f636c6f73757265004748437a *69537461626c655f537461626c655074725f636f6e5f656e7472790047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b61 *576c69743335355f636c6f73757265004748437a69494f426173655f6136395f636c6f73757265 *005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a69436f6d70617269736f6e46756e6374696f6e5f0047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a50346c69 *7431365f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c626163 *6b737a69526567697374726174696f6e5f74686553636176656e6765725f636c6f737572650047 *48437a6948616e646c655f6c766c39335f656e747279004748437a69576f72645f5733327a685f *636f6e5f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726b344b6c69743235395f636c6f73757265005f5f *737467696e69745f47726170686963737a6955497a69474c55547a6957696e646f77007374675f *67635f66756e5f7265740047726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a6948696e74735f7a644c723366576c6974325f636c6f73757265004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c *726a56616c766c3530355f636c6f737572650047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b62556c69743337305f63 *6c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *6951756572795574696c735f7a644c726b61596c766c3735305f636c6f73757265004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f *7a644c726a57736c766c3532355f636c6f73757265007374675f454e445f455843455054494f4e *5f4c4953545f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a6951756572795574696c735f7a644c726b37576c766c3730335f636c6f737572 *650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726b32756c69743232345f636c6f737572650047726170686963737a69 *55497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f4b6579626f *617264557043425f636c6f737572650047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a6951756572795574696c735f7a644c726a556d6c697439385f636c6f7375 *72650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726a536f6c766c3436325f636c6f7375726500466f726569676e7a69 *53746f7261626c655f706f6c797a75706f6b65427974654f6666325f696e666f00676c56657274 *65783366005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a69426c656e64696e67466163746f725f0047726170686963737a6955497a69 *474c55547a6943616c6c6261636b737a6957696e646f775f4b65794631325f636c6f7375726500 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69457874656e73 *696f6e735f67657450726f63416464726573735f636c6f737572650047726170686963737a6955 *497a69474c55547a6954797065735f4c656674427574746f6e5f636c6f73757265004772617068 *6963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f *7a64777a64646d7a6c7a655f656e7472790047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a6948696e74735f7a644c723367386c6974385f636c6f737572650047 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574 *696c735f7a644c726a50776c697432335f636c6f73757265007374675f626c6f636b4173796e63 *457863657074696f6e737a685f7265745f696e666f0047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b34576c69743236 *325f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f4765745061636b434d594b48696e745f636c6f7375726500 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c557a694572726f72 *73496e7465726e616c5f6c6974315f636c6f73757265004748437a694c6973745f7a6477737061 *6e5f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726b366f6c766c3637395f636c6f73757265004748 *437a6953686f775f6c766c31345f636c6f737572650047726170686963737a6955497a69474c55 *547a6954797065735f756e6d61727368616c4d6f757365427574746f6e5f656e7472790072756e *5f71756575655f68640047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726b63616c69743337345f636c6f73757265004748 *437a69494f426173655f6c766c35385f696e666f0047726170686963737a6952656e646572696e *677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c723576506c697431385f *636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f6c766c315f636c6f73757265004748437a69494f426173655f61 *37325f696e666f007374675f61705f7070765f696e666f004748437a6948616e646c655f6d6b53 *746448616e646c655f696e666f0047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a6951756572795574696c735f7a644c726b62736c69743336335f636c6f737572 *650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6943617061 *62696c6974795f7a644c72357a7a466c766c3135395f636c6f737572650047726170686963737a *6955497a69474c55547a69496e697469616c697a7a6174696f6e5f7a64776d61727368616c4469 *73706c61794d6f64655f656e747279004d61696e5f6d61696e5f656e747279004748437a694e75 *6d5f706c7573496e74656765725f696e666f0053797374656d7a69506f7369787a69496e746572 *6e616c735f7a64776363616c6c36375f656e7472790047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b34696c69743235 *325f636c6f73757265005f5f66696e695f61727261795f656e640047726170686963737a695549 *7a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f4469616c734342 *5f7374617469635f656e747279004748437a694572725f756e646566696e65645f696e666f0047 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574 *696c735f7a644c726b30716c69743139325f636c6f737572650047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a536d6c *697436375f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a6951756572795574696c735f7a644c726b63436c69743338315f636c6f73757265 *006765747275736167654040474c4942435f322e3000436f6e74726f6c7a69457863657074696f *6e5f7a644c72324a316c766c31325f656e7472790047726170686963737a6952656e646572696e *677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b38456c766c373134 *5f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a *6957696e646f775f64386f7a0047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a6951756572795574696c735f7a644c726b304d6c766c3539325f636c6f73757265 *00446174617a694c6973745f73756d5f656e7472790047726170686963737a6955497a69474c55 *547a6943616c6c6261636b737a69526567697374726174696f6e5f537061636562616c6c526f74 *61746543425f7374617469635f656e7472790073746172745469636b6572004748437a694e756d *5f6c766c31355f636c6f73757265004748437a6948616e646c655f7769746848616e646c657a75 *7a715f656e747279004748437a69494f426173655f7a647773686f777350726563365f73727464 *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726a55716c697439395f636c6f737572650047726170686963737a695549 *7a69474c55547a6943616c6c6261636b737a6957696e646f775f64386f46007374675f63617463 *685f6672616d655f365f7265740047726170686963737a6955497a69474c55547a6943616c6c62 *61636b737a6957696e646f775f4b65794631315f636c6f73757265004748437a69494f42617365 *5f6136395f656e747279005f5f737467696e69745f47726170686963737a6952656e646572696e *677a694f70656e474c7a69474c7a69506978656c52656374616e676c65737a6952657365740047 *726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f4b65 *79496e736572745f7374617469635f656e74727900676c757443726561746557696e646f77005f *5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a69506978656c52656374616e676c65737a69506978656c4d6170005f5f737467696e69745f *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69466565646261 *636b004748437a6948616e646c655f6c766c39345f656e747279007374675f67635f6c315f696e *666f00616c6c6f63486173685461626c6500786f72496e74656765727a685f6661737400474843 *7a69494f426173655f6c766c35305f656e74727900466f726569676e7a6953746f7261626c655f *5a434453746f7261626c655f636f6e5f696e666f005f5f737467696e69745f4772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a694275666665724f626a656374735f *005f5f737467696e69745f4748437a695765616b005f5f737467696e69745f4772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a69506f696e74506172616d65746572 *5f007374675f73656c5f375f7570645f656e7472790047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a56326c766c3530 *335f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726a524b6c766c3435325f636c6f73757265004772 *6170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f61365f *656e747279004748437a6953686f775f69746f737a715f656e7472790047726170686963737a69 *55497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a644c7233 *48546c766c32365f656e747279006d6d617036344040474c4942435f322e310063616c63416c6c *6f6361746564007374675f696e746572705f636f6e737472355f656e74727900676c7574476574 *4d6f64696669657273005f5f737467696e69745f4748437a6953686f775f004748437a69576561 *6b5f7a647772756e46696e616c697a7a657242617463685f696e666f007374675f696e74656765 *72546f496e743634005f5f737467696e69745f47726170686963737a6955497a69474c55547a69 *4f626a656374730047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f7a644c726b316b6c69743230365f636c6f73757265004748437a *69494f426173655f496e7465727275707465645f636c6f737572650047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a56 *476c766c3531335f636c6f737572650047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a6951756572795574696c735f4765744c696e65536d6f6f746848696e745f *7374617469635f656e7472790047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a6951756572795574696c735f7a644c726a4f716c6974365f636c6f737572650073 *74675f696e7465676572546f576f72643634005f5f737467696e69745f47726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a69546578747572696e677a695465787475 *7265556e6974005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a69436f6c6f7253756d5f0047726170686963737a6952656e646572696e *677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b39306c6974333235 *5f636c6f73757265005f5f737467696e69745f47726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a69506978656c52656374616e676c65737a69486973746f6772616d *004d61696e5f7a6467746f53746174655f636c6f737572650047726170686963737a6955497a69 *474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a64646d7a6c7a6531 *5f636c6f73757265004748437a694c6973745f7a644c723155516c766c31305f656e7472790047 *48437a69494f426173655f6135325f696e666f0047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a69436f6f72645472616e735f7a645753697a7a655f696e666f00 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565727955 *74696c735f7a644c726a57536c69743133375f636c6f7375726500696e7432496e74656765727a *685f66617374007374675f61705f70765f696e666f004748437a69576f72645f7a737a65345f65 *6e747279004748437a69494f426173655f756e73616665506572666f726d494f5f636c6f737572 *650073656c6563744040474c4942435f322e300047726170686963737a6955497a69474c55547a *6943616c6c6261636b737a6957696e646f775f7a644c723877446c766c325f656e747279004772 *6170686963737a6955497a69474c55547a6943616c6c6261636b737a6952656769737472617469 *6f6e5f7265676973746572466f72436c65616e75705f636c6f737572650047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a69457874656e73696f6e735f684f7065 *6e474c7a7567657450726f63416464726573735f636c6f73757265004748437a69494f42617365 *5f496e617070726f707269617465547970655f636c6f73757265004748437a6948616e646c655f *6131385f696e666f004748437a69576f72645f7a64646d73686f775f696e666f005f5f73746769 *6e69745f53797374656d7a69506f7369787a6954797065735f005f5f737467696e69745f474843 *7a69456e756d0053797374656d7a69456e7669726f6e6d656e745f676574417267735f696e666f *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726b36636c766c3637365f636c6f73757265004748437a695765616b5f7a *647772756e46696e616c697a7a657242617463685f636c6f73757265004748437a69494f426173 *655f6c766c35315f696e666f007374675f63746f695f7265745f52316e5f696e666f0044617461 *7a6946696e6974654d61705f706f6c797a7564656c6574654d61785f696e666f00477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a *644c726a53536c697437355f636c6f73757265005f5f737467696e69745f47726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a6952656e6465724d6f64650047726170 *686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f4b65795269 *6768745f7374617469635f696e666f0047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a6951756572795574696c735f7a644c726a51306c766c3432355f636c6f73 *75726500616c6c6f63426c6f636b0047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a69436f6f72645472616e735f53697a7a655f636f6e5f656e74727900477261 *70686963737a6952656e646572696e677a694f70656e474c7a69474c7a6948696e74735f7a644c *723367366c6974375f636c6f7375726500656e6c61726765537461626c655074725461626c6500 *7374675f73656c5f365f7570645f696e666f007374675f696e743634546f576f72643634004748 *437a694e756d5f7a7a65726f496e74656765725f636c6f737572650047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a59 *366c69743135365f636c6f737572650047726170686963737a6955497a69474c55547a6943616c *6c6261636b737a6957696e646f775f6d616b65446973706c617943616c6c6261636b5f696e666f *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f636c6970506c616e65496e646578546f456e756d5f656e747279007374675f696e *746572705f636f6e737472365f656e747279004748437a69494f426173655f54696d6545787069 *7265645f7374617469635f656e7472790047726170686963737a6955497a69474c55547a694361 *6c6c6261636b737a69526567697374726174696f6e5f43616c6c6261636b49445f737461746963 *5f696e666f004748437a6953686f775f69746f735f656e7472790047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a5732 *6c69743132345f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c *6261636b737a69526567697374726174696f6e5f7a644c7248316d616b6554696d657243616c6c *6261636b5f656e747279007374675f73656c5f395f7570645f656e747279006672656548617368 *5461626c65004748437a69426173655f4c545f636c6f73757265004748437a69426173655f6c76 *6c375f696e666f0047726170686963737a6955497a69474c55547a6943616c6c6261636b737a69 *57696e646f775f4b657946335f7374617469635f656e747279005f5f737467696e69745f477261 *70686963737a6952656e646572696e677a694f70656e474c7a69474c557a694d61747269780047 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574 *696c735f7a644c726a58346c69743134305f636c6f73757265007374675f67635f756e62785f72 *315f696e666f007374675f494e445f696e666f0047726170686963737a6955497a69474c55547a *6943616c6c6261636b737a6957696e646f775f7a644c725872756e6d61727368616c5370656369 *616c4b65795f656e747279004748437a69576f72645f577a685f636f6e5f656e74727900474843 *7a694e756d5f5a43444e756d5f7374617469635f656e7472790047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c7235767a7a *6c697431345f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a6951756572795574696c735f7a644c726b38476c69743332305f636c6f737572 *650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6943617061 *62696c6974795f7a64776d616b654361706162696c6974795f656e747279004748437a69426173 *655f547275655f636c6f73757265007374675f61705f707070707070705f696e666f005f5f7374 *67696e69745f546578747a6953686f770047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a69457874656e73696f6e735f684f70656e474c7a7567657450726f6341 *6464726573735f656e747279004748437a69494f426173655f496e76616c6964417267756d656e *745f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b73 *7a69526567697374726174696f6e5f57696e646f7753746174757343425f7374617469635f656e *747279005f5f737467696e69745f446174617a6941727261795f007374726572726f724040474c *4942435f322e300047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f7a644c726a596d6c69743136305f636c6f73757265004748437a *69494f426173655f6134345f636c6f737572650047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6948696e74735f4e69636573745f7374617469635f696e666f00 *4748437a69494f426173655f6c766c35375f636c6f737572650047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f476574506f6c7967 *6f6e536d6f6f746848696e745f7374617469635f656e747279007274735f6170706c79005f5f73 *7467696e69745f466f726569676e7a694d61727368616c7a694572726f72005f5f737467696e69 *745f436f6e74726f6c7a69457863657074696f6e5f005f5f64736f5f68616e646c65004748437a *6953686f775f6c766c31335f696e666f004748437a69494f426173655f6137385f636c6f737572 *650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f77 *5f7a644c723878506139345f696e666f007374675f494e445f6469726563745f696e666f007472 *795075744d5661727a685f666173740047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a6951756572795574696c735f7a644c726b35596c69743237385f636c6f73 *757265005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a69546578747572696e675f004748437a69426173655f547275655f7374617469 *635f696e666f007374675f6e6f7436340047726170686963737a6955497a69474c55547a694361 *6c6c6261636b737a69526567697374726174696f6e5f43726f7373696e6743425f737461746963 *5f696e666f005f5f737467696e69745f436f6e74726f6c7a69457863657074696f6e0047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726a526d6c766c3434365f636c6f73757265007374675f67635f67656e5f6870004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c735f476574506f696e74536d6f6f746848696e745f7374617469635f696e666f004748437a69 *494f426173655f7a644c7236616d6134395f656e747279004748437a69494f426173655f746872 *6f775f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a6951756572795574696c735f7a644c726b33536c766c3634305f636c6f73757265005f *5f737467696e69745f47726170686963737a6955497a69474c55547a69466f6e7473004748437a *694572725f756e74616e676c655f636c6f73757265004748437a69576f72645f7a70335f656e74 *72790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726b39656c766c3732335f636c6f7375726500466f726569676e7a69 *53746f7261626c655f706f6c797a757065656b427974654f6666325f656e747279004748437a69 *494f426173655f494f4572726f725f7374617469635f656e747279004748437a69496e745f4933 *327a685f7374617469635f656e747279007374675f73656c5f325f6e6f7570645f656e74727900 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69457874656e73 *696f6e735f6c766c315f696e666f0068735f657869740053797374656d7a69456e7669726f6e6d *656e745f676f325f696e666f005f5f737467696e69745f47726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a69466c75736846696e69736800446174617a6946696e69 *74654d61705f64656c46726f6d464d5f636c6f73757265004748437a6948616e646c655f7a6477 *666c75736857726974654275666665725f656e74727900446174617a6946696e6974654d61705f *7a644c723368706c766c31385f696e666f005f5f737467696e69745f446174617a69426f6f6c00 *4748437a69494f426173655f6c766c34355f636c6f73757265004748437a6948616e646c655f7a *647777726974655261774275666665725f656e7472790047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a524d6c697435 *385f636c6f73757265005f737467417373657274004748437a6948616e646c655f6c766c32335f *696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951 *756572795574696c735f7a644c726a57386c766c3532305f636c6f7375726500776f726432496e *74656765727a685f666173740047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a6951756572795574696c735f7a644c726b616d6c69743334365f636c6f73757265 *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726b39416c69743333345f636c6f737572650047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a53 *416c766c3436355f636c6f73757265004748437a69494f426173655f50726f746f636f6c457272 *6f725f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a6951756572795574696c735f7a644c726b30536c69743139395f636c6f737572650043 *6f6e74726f6c7a69457863657074696f6e5f7a644c72324a396b5f656e74727900477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a69566572746578537065635f7a *644c72616a5a5a6c766c34325f636c6f73757265005f5f6c6962635f6373755f66696e69004748 *437a69426173655f5a43444f72645f636f6e5f656e7472790047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b61716c69 *743334375f636c6f7375726500616e64496e74656765727a685f66617374004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c *726b62716c766c3735375f636c6f73757265004748437a694572725f6c766c395f696e666f0047 *726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f4b65 *795061676555705f7374617469635f656e74727900676c757447657457696e646f770047726170 *686963737a6955497a69474c55547a6954797065735f576865656c55705f7374617469635f696e *666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726b38436c69743331395f636c6f7375726500746373657461747472 *4040474c4942435f322e300047726170686963737a6955497a69474c55547a6943616c6c626163 *6b737a69526567697374726174696f6e5f4d6f74696f6e43425f7374617469635f696e666f0047 *726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f7a64 *4c72574e676c75745370656369616c557046756e635f656e7472790047726170686963737a6955 *497a69474c55547a6943616c6c6261636b737a6957696e646f775f4b657946345f737461746963 *5f696e666f005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a69446973706c61794c697374730053797374656d7a69456e7669726f6e6d *656e745f67657450726f674e616d655f736c6f77004748437a6953686f775f61315f636c6f7375 *726500737461745f656e64496e69740047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a6951756572795574696c735f7a644c726b38326c69743331305f636c6f73 *7572650066726565436861696e004748437a69494f426173655f577269746548616e646c655f73 *74617469635f656e747279004748437a69576f72645f7a737a65345f636c6f7375726500474843 *7a695074725f46756e5074725f7374617469635f696e666f0073746746726565005f5f73746769 *6e69745f4748437a69496e745f007374675f73656c5f345f6e6f7570645f696e666f007374675f *71756f74496e7436340047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a694361706162696c6974795f7a644c723577506c766c3131355f636c6f73757265005f5f *737467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a69546578747572696e677a69506172616d65746572730047726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c7a6951756572795574696c735f6d61727368616c476574 *504e616d655f656e747279004748437a69494f426173655f6c766c34385f696e666f0047726170 *686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f5370656369 *616c4b65795f636f6e5f696e666f005a434d61696e5f6d61696e5f696e666f005f5f737467696e *69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a694c696e *655365676d656e74735f007365746c6f63616c654040474c4942435f322e30005f5f737467696e *69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69506f6c *79676f6e730047726170686963737a6955497a69474c55547a6943616c6c6261636b737a695265 *67697374726174696f6e5f7a64646d7a6c315f656e747279004748437a69494f426173655f7a64 *7773686f777350726563365f636c6f737572650047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a564f6c766c3531355f *636c6f73757265004748437a69426173655f45515f7374617469635f696e666f00477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a *644c7235794e6c697436345f636c6f73757265004748437a6953686f775f6c766c31365f636c6f *737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951 *756572795574696c735f7a644c726b624f6c766c3736335f636c6f737572650047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a6953746174655661725f53746174 *655661725f7374617469635f696e666f0047726170686963737a6955497a69474c55547a694361 *6c6c6261636b737a69526567697374726174696f6e5f446973706c617943425f7374617469635f *696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c557a69 *4572726f7273496e7465726e616c5f7265636f72644572726f72436f64655f656e747279004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c735f7a644c726b30496c766c3539315f636c6f737572650047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a59556c76 *6c3536335f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a6951756572795574696c735f7a644c726a57306c766c3531385f636c6f73757265 *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726a51796c697433395f636c6f737572650047726170686963737a695549 *7a69474c55547a6954797065735f4c656674427574746f6e5f7374617469635f656e7472790047 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574 *696c735f7a644c726b62636c69743335395f636c6f737572650047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b334b6c *766c3633385f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c62 *61636b737a6957696e646f775f5370656369616c4b65795f7374617469635f696e666f0077616b *655570536c656570696e67546872656164730047726170686963737a6955497a69474c55547a69 *54797065735f7a644c72326a776c766c5f656e7472790047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b304b6c697431 *39375f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b *737a6957696e646f775f4b657946375f7374617469635f696e666f007374675f73746f705f7468 *726561645f696e666f0072756e5f71756575655f746c00676c7550657273706563746976650047 *48437a69496e745f4931367a685f7374617469635f656e7472790047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b3359 *6c69743234375f636c6f73757265005f5f737467696e69745f47726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a69466163655f004748437a69494f426173655f6134 *345f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f7a644c726a58496c69743135305f636c6f737572650047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726a596b6c766c3535345f636c6f73757265004d61696e5f66315f656e747279006578 *69745363686564756c65720047726170686963737a6952656e646572696e677a694f70656e474c *7a69474c7a6951756572795574696c735f7a644c726a50536c766c3432335f636c6f7375726500 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565727955 *74696c735f7a6477636c6970506c616e65496e646578546f456e756d5f696e666f004772617068 *6963737a6955497a69474c55547a69496e697469616c697a7a6174696f6e5f7a64776c676f5f63 *6c6f7375726500446174617a6946696e6974654d61705f7a644c723367526c766c315f636c6f73 *7572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e64 *6f775f756e6d61727368616c4b657953746174655f696e666f006973466c6f61744e6567617469 *76655a65726f005f5f737467696e69745f47726170686963737a6955497a69474c55547a694761 *6d654d6f64650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *694361706162696c6974795f7a644c7235766a6c697431305f636c6f7375726500676c44697361 *626c65007374675f46554c4c5f4d5641525f696e666f00737461626c655f7074725f7461626c65 *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726a516d6c697433365f636c6f737572650047726170686963737a695549 *7a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a644c72334856 *6c766c32375f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c *7a69474c7a69566572746578537065635f436f6c6f72345f7374617469635f656e747279004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c735f7a644c726a514f6c697434335f636c6f73757265004748437a69494f426173655f4d5661 *725f7374617469635f696e666f0047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a6951756572795574696c735f7a644c726b61516c766c3734385f636c6f737572 *65004748437a69576f72645f7a6477746f496e7465676572315f656e7472790047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a64 *4c726b37716c766c3639355f636c6f737572650047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a57416c766c3532375f *636c6f73757265004748437a69494f426173655f48616e646c657a757a755f636f6e5f696e666f *0047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6952656769737472 *6174696f6e5f7a644c7248316d616b6554696d657243616c6c6261636b5f636c6f737572650047 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574 *696c735f7a644c726b306f6c766c3538365f636c6f737572650047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c723578396c *766c3132305f636c6f73757265004748437a69494f426173655f4275666665725f737461746963 *5f696e666f005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a69457863657074696f6e5f007374675f6e6567617465496e743634004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c735f7a644c726b34476c69743235385f636c6f737572650047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b614f6c69 *743335335f636c6f73757265006d6b466f726569676e4f626a7a685f6661737400477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f47 *65744c696e65536d6f6f746848696e745f7374617469635f696e666f007374675f5745414b5f69 *6e666f007374675f4d55545f5641525f696e666f004748437a69494f426173655f6c766c35365f *636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f7a644c726a5a5a6d6c766c3537305f636c6f7375726500474843 *5f5a434343616c6c61626c655f7374617469635f696e666f00446174617a6946696e6974654d61 *705f7a644c723368316c766c365f656e7472790047726170686963737a6955497a69474c55547a *6943616c6c6261636b737a69526567697374726174696f6e5f7a64646d7a67315f636c6f737572 *65004748437a69537461626c655f537461626c655074725f7374617469635f656e747279004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c69 *74795f7a644c7235764a6c766c39385f636c6f7375726500436f6e74726f6c7a69457863657074 *696f6e5f756e636175676874457863657074696f6e48616e646c65725f656e7472790047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726a53776c766c3436345f636c6f737572650047726170686963737a6955497a69474c *55547a6943616c6c6261636b737a69526567697374726174696f6e5f427574746f6e426f784342 *5f7374617469635f656e7472790047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a6951756572795574696c735f7a644c726b61696c69743334355f636c6f737572 *65005f5f6572726e6f5f6c6f636174696f6e4040474c4942435f322e30007374675f67635f766f *69645f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f7a644c726a58476c766c3534345f636c6f737572650047726170 *686963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e *5f7a644c72334556615f636c6f73757265005f5f737467696e69745f47726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a69546578747572696e677a694170706c6963 *6174696f6e004748437a694572725f6572726f725f636c6f7375726500676c4d61747269784d6f *6465005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a69436f6f72645472616e730047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a69426567696e456e645f6c766c335f656e747279005f5f737467696e *69745f4748437a69546f7048616e646c65720047726170686963737a6955497a69474c55547a69 *43616c6c6261636b737a6957696e646f775f756e6d61727368616c4b657953746174655f656e74 *72790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69436170 *6162696c6974795f7a644c723576486c697431365f636c6f737572650047726170686963737a69 *55497a69474c55547a6943616c6c6261636b737a6957696e646f775f4b6579456e645f73746174 *69635f696e666f004748437a69494f426173655f6135325f656e747279005f5f737467696e6974 *5f466f726569676e7a694d61727368616c7a69416c6c6f630047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c7235776c6c69 *7432365f636c6f73757265005f5f737467696e69745f47726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a69546578747572696e677a6953706563696669636174696f *6e004f6e45786974486f6f6b0047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a6951756572795574696c735f7a644c726a4f456c766c3430345f636c6f73757265 *005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a69546578747572696e677a6954657874757265546172676574007274735f6d6b576f72 *643136006f6c646573745f67656e0047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a694361706162696c6974795f7a644c7235764c6c697431375f636c6f737572 *650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726b38386c766c3730365f636c6f737572650047726170686963737a69 *55497a69474c55547a6943616c6c6261636b737a6957696e646f775f7a644c7257526d616b6553 *70656369616c43616c6c6261636b5f696e666f0047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a57516c766c3533315f *636c6f73757265004748437a694572725f6c766c365f636c6f737572650047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c72 *6a50696c766c3431345f636c6f737572650073687574646f776e4861736b656c6c416e64457869 *7400446174617a6946696e6974654d61705f7a6477676c756542616c5f656e7472790063726561 *7465546872656164005f5f756d6f64646933004748437a69494f426173655f6c766c35315f656e *747279005f5f737467696e69745f446174617a6946696e6974654d61705f004748437a69494f42 *6173655f6136375f696e666f0047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a694361706162696c6974795f7a644c7235774c6c766c3131345f636c6f73757265 *004748437a6953746f7261626c655f726561645074724f66665074725f656e747279005f5f7374 *67696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *546578747572696e670047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726b37516c69743330375f636c6f73757265005f5f *737467696e69745f47726170686963737a6955497a69474c55547a69496e697469616c697a7a61 *74696f6e0047726170686963737a6955497a69474c55547a6943616c6c6261636b737a69526567 *697374726174696f6e5f427574746f6e426f7843425f7374617469635f696e666f004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c557a694572726f7273496e7465 *726e616c5f7468655265636f726465644572726f72735f696e666f0047726170686963737a6955 *497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a644c724831 *6d616b6554696d657243616c6c6261636b5f696e666f0047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a4f576c697431 *345f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726b384f6c69743332325f636c6f73757265004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c735f7a644c726a56636c69743131315f636c6f737572650047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a69466f675f61335f636c6f73757265004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6953746174655661725f5374 *6174655661725f7374617469635f656e7472790047726170686963737a6955497a69474c55547a *6943616c6c6261636b737a6957696e646f775f6138385f656e747279007374675f64756d6d795f *7265745f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c *7a69474c7a6951756572795574696c735f7a644c726a59636c766c3535325f636c6f7375726500 *4748437a695074725f46756e5074725f7374617469635f656e7472790047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a *52616c766c3434335f636c6f73757265005f5f737467696e69745f47726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a69426c656e64696e67466163746f72005f5f73 *7467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *6953656c656374696f6e5f0047726170686963737a6955497a69474c55547a6943616c6c626163 *6b737a69526567697374726174696f6e5f43616c6c6261636b49445f7374617469635f656e7472 *79006973446f75626c65496e66696e6974650047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b63676c766c3737305f63 *6c6f73757265007374675f61705f325f7570645f656e747279007374675f6e6f666f726365494f *5f726574004748437a6953545265665f53545265665f636f6e5f696e666f004748437a69494f42 *6173655f7a647773686f777350726563345f696e666f0047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b62676c697433 *36305f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a694361706162696c6974795f7a644c723575506c766c38345f636c6f73757265004748 *437a695074725f5074725f636f6e5f696e666f004748437a69494f426173655f54696d65457870 *697265645f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261 *636b737a6957696e646f775f64386f4a006e65774d75745661727a685f66617374004748437a69 *494f426173655f6c766c34375f696e666f007374675f63617463685f6672616d655f325f726574 *007274735f6576616c537461626c65494f004748437a6948616e646c655f6c766c37345f656e74 *7279004748437a694e756d5f6c766c365f636c6f73757265007374675f7570645f6672616d655f *696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951 *756572795574696c735f7a644c726a4f756c6974375f636c6f73757265004748437a6948616e64 *6c655f7a647777726974655261774275666665725f696e666f0047726170686963737a6955497a *69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f5461626c65744275 *74746f6e43425f7374617469635f696e666f0072656d6f76655468726561644c6162656c004772 *6170686963737a6955497a69474c55547a6943616c6c6261636b737a6952656769737472617469 *6f6e5f7a64777a64646d7a6c7a655f696e666f004748437a6948616e646c655f6c766c35375f65 *6e747279007374675f67635f6431005f5f75646976646933007374675f72657475726e546f5374 *61636b546f70007374675f63617463685f6672616d655f355f72657400466f726569676e7a694d *61727368616c7a6941727261795f7a64777065656b41727261795f636c6f737572650047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726a59736c766c3535365f636c6f73757265005f5f737467696e69745f477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a69546578747572696e677a6954 *657874757265556e69745f0047726170686963737a6955497a69474c55547a6943616c6c626163 *6b737a6957696e646f775f7a644c7257526d616b655370656369616c43616c6c6261636b5f656e *747279004748437a69494f426173655f6137325f636c6f73757265007374675f61705f645f696e *666f007365744e6f6e426c6f636b696e67466400626c6f636b4173796e63457863657074696f6e *737a685f666173740047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a6951756572795574696c735f7a644c726b35776c69743237315f636c6f7375726500477261 *70686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974 *795f7a644c723579316c697435325f636c6f737572650053797374656d7a69506f7369787a6949 *6e7465726e616c735f7a64776363616c6c36365f696e666f004748437a69576f72645f7a74335f *636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f7a644c726a55796c69743130315f636c6f7375726500466f7265 *69676e7a69437a69537472696e675f7a64777065656b4341537472696e675f656e747279004748 *437a694e756d5f4a7a685f7374617469635f656e7472790047726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a54556c6974 *39315f636c6f7375726500436f6e74726f6c7a69457863657074696f6e5f7a644c72324942615f *636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f7a644c726a58736c69743134365f636c6f73757265005f5f7374 *67696e69745f446174617a69496e745f006973446f75626c654e614e004748437a694e756d5f6a *746f737a715f696e666f005f5f737467696e69745f47726170686963737a6952656e646572696e *677a694f70656e474c7a69474c7a69537472696e67517565726965735f0047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c72 *6a56536c766c3531365f636c6f737572650047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a694361706162696c6974795f7a644c7235754e6c6974325f636c6f73 *75726500446174617a6946696e6974654d61705f7a6477676c756542616c5f696e666f00477261 *70686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c *735f636c6970506c616e65496e646578546f456e756d5f636c6f73757265007374675f61705f70 *765f72657400466f726569676e7a69437a694572726f725f6572726e6f546f494f4572726f725f *656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *51756572795574696c735f7a644c726b354b6c766c3636395f636c6f73757265005f5f73746769 *6e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695069 *78656c52656374616e676c65737a69506978656c53746f726167655f004748437a69494f426173 *655f6c766c36305f636c6f7375726500446174617a6946696e6974654d61705f616464546f464d *7a75435f636c6f73757265005f5f737467696e69745f4748437a69496e74004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a69426173696354797065735f446973 *61626c65645f7374617469635f696e666f00616c6c6f634e75727365727900436f6e74726f6c7a *69457863657074696f6e5f7a644c72324a6264735f736c6f770047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a55616c *697439355f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261 *636b737a6957696e646f775f4d6f646966696572735f636f6e5f656e7472790047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f4765 *745061636b434d594b48696e745f7374617469635f696e666f0047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a57556c *766c3533325f636c6f73757265005f5f676d707a5f676364004748437a69494f426173655f7a64 *4c7236616b6134385f696e666f0047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a6951756572795574696c735f7a644c726a51776c766c3433335f636c6f737572 *650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f77 *5f4d6f646966696572735f7374617469635f656e7472790047726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b30736c766c *3538375f636c6f73757265004748437a69576f72645f5736347a685f7374617469635f696e666f *004748437a69466c6f61745f467a685f7374617469635f656e7472790047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b *37496c69743330355f636c6f737572650047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a6951756572795574696c735f7a644c726b33516c69743234355f636c6f *737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6943 *61706162696c6974795f7a644c723579706c697435385f636c6f73757265004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c *7235777a7a6c766c3131315f636c6f7375726500446174617a695475706c655f5a32545f636f6e *5f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *6951756572795574696c735f7a644c726a54656c766c3437355f636c6f73757265004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f *7a644c72357a7a446c697437375f636c6f737572650047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a53756c69743639 *5f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a6951756572795574696c735f7a644c726a54696c766c3437365f636c6f7375726500477261 *70686963737a6952656e646572696e677a694f70656e474c7a69474c7a69566572746578537065 *635f436f6c6f72345f7374617469635f696e666f004748437a694c6973745f7a644c723155516c *766c31305f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726b31696c766c3630305f636c6f73757265007374 *61745f73746172744743004748437a69426173655f5a435f7374617469635f696e666f00737467 *5f73656c5f325f7570645f696e666f0047726170686963737a6955497a69474c55547a6943616c *6c6261636b737a69526567697374726174696f6e5f7a64777a64646d7a6c5f696e666f00727473 *5f676574436861720047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a6951756572795574696c735f7a644c726b33306c69743233325f636c6f7375726500474843 *7a69426173655f5a437a745a435f636f6e5f696e666f007374675f73656c5f31335f7570645f65 *6e747279005f5f676d707a5f6d756c005f696e69740047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b36456c766c3638 *335f636c6f73757265005f5f737467696e69745f47726170686963737a6955497a69474c55547a *694f7665726c61795f0047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726b34516c766c3635355f636c6f73757265004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c735f7a644c726a52536c766c3435345f636c6f73757265004748437a69494f426173655f6136 *385f656e747279005f5f737467696e69745f546578747a69526561647a694c65780070726f675f *61726763004748437a6948616e646c655f6765744275666665725f696e666f005f5f737467696e *69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69494f53 *74617465007374675f756e636865636b65645368696674524c3634007772697465457272537472 *696e675f5f00676c56696577706f72740070656e64696e675f68616e646c65725f627566007374 *675f6c74496e7436340047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726a524f6c766c3435335f636c6f73757265004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c735f7a644c726b31716c766c3630325f636c6f73757265004748437a69426173655f756e7061 *636b43537472696e67557466387a685f656e7472790047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b38366c69743331 *315f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726a51596c766c3434305f636c6f73757265004748 *437a69494f426173655f46696c6548616e646c655f636f6e5f696e666f004748437a6948616e64 *6c655f696f657a756e6f745772697461626c655f656e7472790047726170686963737a6955497a *69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a64777a64646d7a *677a655f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726b62756c766c3735385f636c6f73757265007265 *73756d65546872656164005f5f737467696e69745f4748437a695074725f004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c *723577356c697432325f636c6f73757265005f5f737467696e69745f47726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a69506f6c79676f6e4d6f64655f0047726170 *686963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e *5f7a644c72334a316c766c32385f696e666f004748437a69494f426173655f7a6457494f5f696e *666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726b61796c69743334395f636c6f73757265004748437a69494f4261 *73655f4275666665724c6973744e696c5f636c6f73757265004748437a69576f72645f73686f77 *7350726563335f636c6f737572650047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a694361706162696c6974795f7a644c723576396c766c38395f636c6f737572 *65004d61696e5f6d61696e5f737274640047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a695072696d69746976654d6f64655f7a64776d61727368616c5072696d *69746976654d6f64655f696e666f004748437a69494f426173655f6135335f636c6f7375726500 *4748437a6953746f7261626c655f77726974655074724f66665074725f636c6f73757265004748 *437a69494f426173655f4e6f537563685468696e675f636c6f737572650047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c72 *6a58516c69743135325f636c6f737572650047726170686963737a6955497a69474c55547a6943 *616c6c6261636b737a69526567697374726174696f6e5f746865436c65616e75704c6973745f69 *6e666f0047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6952656769 *7374726174696f6e5f5265736861706543425f7374617469635f656e747279006672656547726f *757000676c426567696e006973466c6f6174496e66696e697465004748437a694c6973745f7a64 *4c723155516c766c31305f636c6f737572650047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a54616c766c3437345f63 *6c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *6951756572795574696c735f7a644c726a51636c766c3432385f636c6f73757265004748437a69 *494f426173655f6c766c36315f656e7472790047726170686963737a6955497a69474c55547a69 *43616c6c6261636b737a6957696e646f775f4b6579456e645f636c6f73757265004748437a6953 *686f775f69746f737a715f636c6f737572650047726170686963737a6955497a69474c55547a69 *54797065735f4d6964646c65427574746f6e5f7374617469635f656e74727900466f726569676e *7a69437a694572726f725f7a644c723257747a64776363616c6c5f636c6f73757265005f5f7374 *67696e69745f446174617a694c6973740047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a6951756572795574696c735f7a644c726b314b6c766c3630375f636c6f *737572650061776169744576656e74004748437a694e756d5f6a746f735f656e74727900474843 *7a69426173655f7a644c7232694f6c766c365f656e747279004748437a69494f426173655f5772 *6974654275666665725f7374617469635f656e7472790047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c557a694572726f7273496e7465726e616c5f7a644c723369 *6e6c766c32305f736c6f770047726170686963737a6952656e646572696e677a694f70656e474c *7a69474c7a694361706162696c6974795f7a644c7235755a5a6c6974355f636c6f73757265005f *5f737467696e69745f4748437a695354526566005f5f737467696e69745f47726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a69446174615479706500466f72656967 *6e7a694d61727368616c7a6941727261795f7769746841727261794c656e305f636c6f73757265 *0072657365744e6f6e426c6f636b696e674664007374675f73656c5f31335f6e6f7570645f656e *7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175 *6572795574696c735f7a644c726a506b6c697432305f636c6f737572650047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c72 *6b384b6c69743332315f636c6f7375726500616c6c6f635f48700047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c72357646 *6c766c39375f636c6f73757265007374675f42434f5f696e666f005f5f737467696e69745f4772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695665727465785370 *65635f004748437a6953686f775f69746f737a715f696e666f00466f726569676e7a6953746f72 *61626c655f706f6c797a757065656b427974654f6666325f696e666f0047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b *38656c69743331335f636c6f73757265004748437a694e756d5f7a6c5f696e666f00446174617a *6946696e6974654d61705f7a64776d6b42616c4272616e63685f696e666f0053797374656d7a69 *506f7369787a69496e7465726e616c735f7a64776363616c6c36365f736c6f77004748437a6954 *6f7048616e646c65725f7a644c723153346c766c5f696e666f0047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a514d6c *766c3433375f636c6f73757265005f5f737467696e69745f446174617a694d617962655f004748 *437a69494f426173655f6c766c35335f696e666f006d616c6c6f634040474c4942435f322e3000 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565727955 *74696c735f7a644c726b616b6c766c3734305f636c6f737572650047726170686963737a695549 *7a69474c55547a6943616c6c6261636b737a6957696e646f775f4b657950616765446f776e5f73 *74617469635f656e747279005f5f737467696e69745f47726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a69546578747572696e677a69456e7669726f6e6d656e7473 *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162 *696c6974795f7a644c723576766c697431335f636c6f737572650047726170686963737a695549 *7a69474c55547a69496e697469616c697a7a6174696f6e5f7a64776d61727368616c446973706c *61794d6f64655f636c6f73757265007374675f4341465f424c41434b484f4c455f696e666f0047 *726170686963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174 *696f6e5f4f7665726c6179446973706c617943425f7374617469635f656e747279004d61696e5f *7a646766726f6d53746174655f656e747279007374675f73656c5f31345f7570645f656e747279 *007374675f786f72363400636f6d706c656d656e74496e74656765727a685f6661737400477261 *70686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c *735f7a644c726a51386c766c3432375f636c6f737572650047726170686963737a6955497a6947 *4c55547a6943616c6c6261636b737a6957696e646f775f7a644c72574c6d616b654d6f75736543 *616c6c6261636b5f696e666f0047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a6948696e74735f4e69636573745f636c6f73757265004748437a69576f72645f7a *74335f696e666f005f5f737467696e69745f47726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a69457874656e73696f6e73007374675f616e643634004748437a6949 *4f426173655f494f4572726f725f636f6e5f656e7472790047726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b38636c766c *3730375f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c *7a69474c7a6951756572795574696c735f7a644c726a5a5a796c766c3537335f636c6f73757265 *004748437a69494f426173655f577269746548616e646c655f7374617469635f696e666f004748 *437a695074725f5074725f636f6e5f656e7472790047726170686963737a6952656e646572696e *677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c723579396c697435345f *636c6f73757265004748437a694e756d5f4a7a685f636f6e5f656e747279004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c *726a51476c697434315f636c6f737572650047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a6951756572795574696c735f7a644c726a53596c766c3437315f636c *6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *4361706162696c6974795f7a644c7235776a6c766c3130375f636c6f73757265004d61696e5f66 *335f696e666f0047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6952 *6567697374726174696f6e5f5370656369616c43425f636c6f7375726500737461636b4f766572 *666c6f77004748437a694e756d5f6c69745f656e747279004748437a694572725f615f636c6f73 *7572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361 *706162696c6974795f7a644c723576586c697432305f636c6f737572650047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a69426567696e456e645f72656e646572 *5072696d69746976655f656e74727900726573697a654e757273657279004748437a6948616e64 *6c655f6c766c32365f696e666f004748437a694c6973745f7a644c723155536c766c31315f696e *666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69436170 *6162696c6974795f7a644c723578686c766c3132325f636c6f73757265007374675f626c6f636b *5f6e6f72656773004748437a695765616b5f72756e46696e616c697a7a657242617463685f696e *666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726b374f6c766c3730315f636c6f737572650047726170686963737a *6955497a69474c55547a6957696e646f775f676c757443726561746557696e646f775f656e7472 *79005f5f737467696e69745f53797374656d7a69506f7369787a69496e7465726e616c73005f5f *737467696e69745f466f726569676e7a694d61727368616c7a694572726f725f00477261706869 *63737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f4b6579446f776e *5f7374617469635f696e666f0053746752657475726e0047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f6c766c5f636c6f73757265 *00446174617a6946696e6974654d61705f456d707479464d5f636c6f73757265004748437a6942 *6173655f666f6c64725f696e666f007374675f67635f64315f726574004748437a694c6973745f *7370616e5f656e74727900446174617a6946696e6974654d61705f7a647766696e644d696e5f65 *6e747279005f5f737467696e69745f446174617a69426974730047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a514b6c *697434325f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a694361706162696c6974795f7a644c723576356c766c38385f636c6f7375726500 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565727955 *74696c735f7a644c726b62536c766c3736345f636c6f73757265005f5f737467696e69745f4772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695065656b506f6b65 *004748437a6948616e646c655f64735f696e666f0053797374656d7a69457869745f6c766c315f *656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *51756572795574696c735f7a644c726a52776c697435345f636c6f737572650072616973657a68 *5f66617374005a434d61696e5f6d61696e5f736c6f770067656e65726174696f6e73004748437a *69494f426173655f7a647773686f777350726563365f696e666f004748437a69494f426173655f *526561644275666665725f7374617469635f696e666f006d756e6d61704040474c4942435f322e *300047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726a52576c766c3435355f636c6f73757265004748437a69576f72645f *57387a685f636f6e5f656e747279004748437a69494f426173655f7a6457494f5f636c6f737572 *650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f77 *5f4b657946355f636c6f737572650047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a694361706162696c6974795f7a644c72357a7a376c697436395f636c6f7375 *72650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726b32556c766c3632355f636c6f73757265004748437a6948616e64 *6c655f696f657a75636c6f73656448616e646c655f656e7472790047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b3467 *6c766c3634365f636c6f73757265007374675f7570645f6672616d655f325f7265740047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c697479 *5f7a644c72357a7a586c697438325f636c6f737572650047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a50496c697432 *365f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726b36676c766c3637375f636c6f73757265007374 *675f494e445f4f4c4447454e5f5045524d5f696e666f0047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b61756c697433 *34385f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b *737a6957696e646f775f4b6579456e645f7374617469635f656e747279005f5f737467696e6974 *5f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69506978656c *466f726d61745f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f7a644c726b38496c766c3731355f636c6f73757265005f5f7374 *67696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *546578747572696e677a69546578506172616d657465720047726170686963737a6955497a6947 *4c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a64646d6d6178315f63 *6c6f73757265007374675f5041505f656e7472790047726170686963737a6955497a69474c5554 *7a6943616c6c6261636b737a69526567697374726174696f6e5f4d6f75736543425f7374617469 *635f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f7a644c726b36306c766c3637335f636c6f737572650047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a695072696d69746976654d *6f64655f7a64776d61727368616c5072696d69746976654d6f64655f636c6f7375726500477261 *70686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974 *795f7a644c723577686c697432355f636c6f737572650047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6948696e74735f7a644c723367616c766c31305f636c6f *737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a69526567 *697374726174696f6e5f7a644c72334556615f656e7472790047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b364d6c76 *6c3638355f636c6f73757265004748437a694c6973745f7a644c723155656c766c5f656e747279 *004748437a69494f426173655f426c6f636b65644f6e446561644d5661725f636c6f7375726500 *7274735f676574576f72643634004748437a6948616e646c655f696f657a756e6f745772697461 *626c655f696e666f004748437a69576f72645f5736347a685f7374617469635f656e7472790047 *48437a69496e745f7a64777a657a655f636c6f73757265004748437a69576f72645f7a64776672 *6f6d496e7465676572335f656e747279004748437a69494f426173655f6c766c34395f696e666f *006d656d6d6f76654040474c4942435f322e30004748437a6953686f775f6c766c31335f636c6f *737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a69526567 *697374726174696f6e5f643343560047726170686963737a6955497a69474c55547a6943616c6c *6261636b737a69526567697374726174696f6e5f43726f7373696e6743425f636c6f7375726500 *4748437a694c6973745f706f6c797a757265765f636c6f73757265007374675f454e445f54534f *5f51554555455f696e666f004748437a69494f426173655f7a644c723661716135315f656e7472 *790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726a564b6c766c3531345f636c6f737572650047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a *4f346c766c3339355f636c6f73757265004748437a6948616e646c655f6c766c39335f696e666f *004748437a69546f7048616e646c65725f7a644c723153636c766c325f696e666f004748437a69 *426173655f5a437a745a435f636f6e5f656e7472790047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c723577786c69743239 *5f636c6f7375726500446174617a695475706c655f5a32545f636f6e5f696e666f004748437a69 *48616e646c655f6c766c37355f636c6f7375726500466f726569676e7a6953746f7261626c655f *5a434453746f7261626c655f636f6e5f656e7472790047726170686963737a6955497a69474c55 *547a6943616c6c6261636b737a6957696e646f775f64386f470047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a54476c *766c3438325f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a6951756572795574696c735f7a644c726a59386c766c3535315f636c6f737572 *650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726a54326c766c3437325f636c6f7375726500466f726569676e7a694d *61727368616c7a695574696c735f776974684d616e795f696e666f0047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a53 *736c766c3436335f636c6f73757265004748437a69494f426173655f6137305f656e7472790072 *657375727265637465645f74687265616473004748437a69494f426173655f6c766c35305f636c *6f73757265007374675f73656c5f31315f6e6f7570645f656e7472790047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a *4f416c766c3430335f636c6f737572650047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a6951756572795574696c735f47657454657874757265436f6d70726573 *73696f6e48696e745f7374617469635f696e666f0047726170686963737a6952656e646572696e *677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b614d6c766c373437 *5f636c6f73757265007365746974696d65724040474c4942435f322e300047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c72 *6b326d6c69743232325f636c6f737572650047726170686963737a6955497a69474c55547a6943 *616c6c6261636b737a69526567697374726174696f6e5f4469616c7343425f7374617469635f69 *6e666f0047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e64 *6f775f756e6d61727368616c4b657953746174655f636c6f737572650047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a69436f6f72645472616e735f50726f6a65 *6374696f6e5f7374617469635f656e747279005f5f737467696e69745f446174617a6945697468 *65725f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175 *6572795574696c735f7a644c726a59326c69743135355f636c6f73757265004772617068696373 *7a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f4b657952696768745f *7374617469635f656e74727900746872656164537461626c655074725461626c65004748437a69 *494f426173655f7a644c7236616d6134395f636c6f737572650047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c723579586c *766c3134385f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c62 *61636b737a6957696e646f775f4b65795061676555705f7374617469635f696e666f0047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6956657274657853706563 *5f7a644c72616a5a5a6c766c34325f736c6f7700676c7574496e697457696e646f7753697a6500 *7075744d5661727a685f66617374005f5f676d707a5f636f6d0047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c72357a7a54 *6c697438315f636c6f73757265004748437a69576f72645f5731367a685f636f6e5f656e747279 *004748437a6948616e646c655f6c766c32365f636c6f737572650047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b3249 *6c766c3632325f636c6f737572650047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a6951756572795574696c735f7a644c726a566f6c69743131345f636c6f7375 *7265006465636f6465466c6f61747a685f66617374004748437a69576f72645f5736347a685f63 *6f6e5f656e747279005f5f737467696e69745f446174617a69496e740047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b *634d6c766c3737385f636c6f73757265007274735f636865636b53636865645374617475730073 *74675f6774496e743634005f5f737467696e69745f4748437a695061636b004772617068696373 *7a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f7a644c723877446c76 *6c325f636c6f73757265004748437a69466c6f61745f447a685f7374617469635f696e666f0047 *726170686963737a6955497a69474c55547a6954797065735f576865656c446f776e5f636c6f73 *7572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e64 *6f775f7a644c7238784a6139315f696e666f004748437a695074725f6e756c6c46756e5074725f *636c6f73757265007374675f756e636865636b65644953686966744c363400616c6c5f74687265 *616473005f5f737467696e69745f4748437a694e756d007274735f6d6b496e743634007374675f *61705f305f726574005f5f737467696e69745f466f726569676e7a694d61727368616c7a695574 *696c735f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951 *756572795574696c735f7a644c726a53656c697436355f636c6f73757265004748437a694e756d *5f5a43444e756d5f636f6e5f656e7472790047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a6951756572795574696c735f7a644c726b326f6c766c3631375f636c *6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a695265 *67697374726174696f6e5f4d6f74696f6e43425f7374617469635f656e74727900477261706869 *63737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f53 *7061636562616c6c4d6f74696f6e43425f7374617469635f696e666f0047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b *39556c69743333395f636c6f737572650047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a6951756572795574696c735f7a644c726b324b6c69743232385f636c6f *73757265004748437a6948616e646c655f7a6477666c757368526561644275666665725f656e74 *72790047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f *775f4b65794631305f7374617469635f696e666f0047726170686963737a6955497a69474c5554 *7a6943616c6c6261636b737a6957696e646f775f4b657946355f7374617469635f696e666f0073 *74675f7969656c645f6e6f72656773007374675f696e74546f496e743634004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c *726a50556c697432395f636c6f737572650047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a694361706162696c6974795f7a644c723577466c697433315f636c6f *737572650047726170686963737a6955497a69474c55547a6954797065735f756e6d6172736861 *6c4d6f757365427574746f6e5f696e666f007374675f5041505f696e666f004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c *726b61536c69743335345f636c6f73757265004d61696e5f53746174655f636f6e5f696e666f00 *4748437a69494f426173655f6c766c35315f636c6f7375726500636f6e746578745f7377697463 *680047726170686963737a6955497a69474c55547a6954797065735f756e6d61727368616c4d6f *757365427574746f6e5f636c6f73757265004748437a69576f72645f616273335f696e666f0047 *48437a69546f7048616e646c65725f7a644c723153346c766c5f736c6f77007374675f696e7465 *72705f636f6e737472345f656e7472790047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a6951756572795574696c735f7a644c726b61676c766c3733395f636c6f *737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e *646f775f4b657946315f636c6f73757265004748437a6948616e646c655f7a6477777269746552 *61774275666665725f636c6f737572650047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a6951756572795574696c735f7a644c726b63736c766c3737335f636c6f *73757265004748437a69494f426173655f6c766c35325f696e666f004748437a69494f42617365 *5f7a644c7236616f6135305f656e7472790047726170686963737a6955497a69474c55547a6943 *616c6c6261636b737a69526567697374726174696f6e5f7a64777a737a655f696e666f005f5f73 *7467696e69745f53797374656d7a69494f5f007374675f494e445f315f696e666f00696e697455 *7365725369676e616c73007374675f61705f7070705f72657400446174617a6946696e6974654d *61705f706f6c797a7564656c6574654d61785f636c6f737572650047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b3055 *6c766c3539345f636c6f73757265004748437a694c6973745f726576657273655f636c6f737572 *650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726a53306c766c3435365f636c6f737572650047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b *34796c69743235365f636c6f73757265004748437a69494f426173655f6c766c36335f656e7472 *7900446174617a6946696e6974654d61705f7a644c723368706c766c31385f656e747279005f5f *737467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a69506978656c446174610047726170686963737a6952656e646572696e677a694f70656e474c *7a69474c7a6951756572795574696c735f7a644c726a52796c766c3434395f636c6f7375726500 *47726170686963737a6955497a69474c55547a69496e697469616c697a7a6174696f6e5f696e69 *7469616c697a7a655f636c6f73757265007374675f73656c5f395f7570645f696e666f005f5f73 *7467696e69745f47726170686963737a6955497a69474c55547a69446576696365436f6e74726f *6c0047726170686963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374 *726174696f6e5f7a64777a64646d7a6c5f656e7472790047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c72357a7a6a6c6974 *37325f636c6f73757265004748437a69494f426173655f7a644c723661696134375f656e747279 *00446174617a6946696e6974654d61705f7a64776d6b42616c4272616e63685f656e7472790073 *74675f626c6f636b5f7075746d7661725f696e666f0047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b30696c69743139 *305f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b73 *7a69526567697374726174696f6e5f7a657a655f696e666f004748437a69494f426173655f6136 *345f636c6f73757265004748437a69426173655f7a707a705f696e666f0047726170686963737a *6955497a69474c55547a69496e697469616c697a7a6174696f6e5f446f75626c65427566666572 *65645f7374617469635f656e74727900706572666f726d474357697468526f6f7473004748437a *69576f72645f746f496e7465676572325f656e747279007374646f75744040474c4942435f322e *30004748437a694e756d5f7a647773686f7773507265635f696e666f005f5f737467696e69745f *446174617a69486173685461626c650047726170686963737a6955497a69474c55547a6943616c *6c6261636b737a6957696e646f775f61365f636c6f737572650047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a59716c *69743136315f636c6f73757265005f5f737467696e69745f47726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c7a69506978656c52656374616e676c65737a6953696e6b *0047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f *4b657946355f7374617469635f656e747279004748437a69426173655f756e7061636b466f6c64 *7243537472696e677a685f636c6f737572650047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b63716c69743337385f63 *6c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *6951756572795574696c735f7a644c726b37556c69743330385f636c6f73757265007374646572 *724040474c4942435f322e300073657450726f67417267760047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b31436c76 *6c3630355f636c6f737572650053797374656d7a69457869745f6c766c315f636c6f7375726500 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69457874656e73 *696f6e735f67657450726f63416464726573735f656e7472790047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a53496c *766c3436375f636c6f73757265004748437a69494f426173655f4572726f7243616c6c5f636f6e *5f656e747279004748437a69494f426173655f537461636b4f766572666c6f775f737461746963 *5f696e666f0047726170686963737a6955497a69474c55547a6943616c6c6261636b737a695769 *6e646f775f6d616b65446973706c617943616c6c6261636b5f656e747279005f5f737467696e69 *745f446174617a694c6973745f004748437a69576f72645f616273335f656e7472790047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c697479 *5f7a644c723576666c6974395f636c6f737572650047726170686963737a6952656e646572696e *677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b37416c6974333033 *5f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a6951756572795574696c735f7a644c726b324f6c69743232395f636c6f7375726500477261 *70686963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f *6e5f7a644c723348546c766c32365f636c6f7375726500466f726569676e7a69437a694572726f *725f7468726f774572726e6f5f696e666f0047726170686963737a6955497a69474c55547a6943 *616c6c6261636b737a6957696e646f775f7a644c7257526d616b655370656369616c43616c6c62 *61636b5f636c6f73757265004748437a69494f426173655f6136375f636c6f7375726500477261 *70686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c *735f7a644c726b33346c69743233335f636c6f737572650061626f72744040474c4942435f322e *30007374675f73656c5f305f6e6f7570645f656e7472790047726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c7a695072696d69746976654d6f64655f547269616e676c *65735f7374617469635f696e666f007374675f454d5054595f4d5641525f696e666f004748437a *69494f426173655f4173796e63457863657074696f6e5f7374617469635f656e747279005f5f73 *7467696e69745f4748437a694572725f0047726170686963737a6955497a69474c55547a69496e *697469616c697a7a6174696f6e5f5247424d6f64655f7374617469635f696e666f006765745374 *61626c655074720047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f7a644c726b34596c766c3635375f636c6f7375726500436f6e74 *726f6c7a69457863657074696f6e5f7a644c72324a336c766c31335f636c6f7375726500477261 *70686963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f *6e5f636f6d70617265315f656e7472790047726170686963737a6955497a69474c55547a694361 *6c6c6261636b737a69526567697374726174696f6e5f7a644c72334556615f696e666f00474843 *7a69494f426173655f556e737570706f727465644f7065726174696f6e5f7374617469635f696e *666f006973546872656164426f756e6400696e6974426c6f636b416c6c6f6361746f7200477261 *70686963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f *6e5f7a64777a64646d7a6c7a655f636c6f737572650047726170686963737a6955497a69474c55 *547a6943616c6c6261636b737a6957696e646f775f7a644c7238784a6139315f636c6f73757265 *004748437a69494f426173655f6137315f636c6f737572650047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a4f696c69 *74345f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a6951756572795574696c735f7a644c726b36776c766c3638315f636c6f73757265005f *5f676d707a5f696e6974007374675f61705f707070705f696e666f0047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a4f *616c6974325f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c62 *61636b737a6957696e646f775f7a644c725750676c75745370656369616c46756e635f696e666f *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726b634b6c69743338335f636c6f737572650047726170686963737a6955 *497a69474c55547a6943616c6c6261636b737a6957696e646f775f4b6579496e736572745f636c *6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *466f675f666f675f636c6f737572650047726170686963737a6955497a69474c55547a6943616c *6c6261636b737a69526567697374726174696f6e5f7a64777a737a655f636c6f73757265004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c69 *74795f7a644c723578746c766c3132355f636c6f737572650047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b35676c69 *743236375f636c6f73757265007374675f67656e5f7969656c64004748437a69494f426173655f *6135335f696e666f007374675f666f726365494f5f726574005f5f737467696e69745f4748437a *69436f6e63007374675f73656c5f31355f7570645f656e7472790047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b3963 *6c69743332385f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c *6261636b737a69526567697374726174696f6e5f5461626c65744d6f74696f6e43425f73746174 *69635f696e666f0047726170686963737a6955497a69474c55547a6943616c6c6261636b737a69 *57696e646f775f7a644c723878486139305f696e666f005f5f737467696e69745f477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a69506978656c52656374616e67 *6c65737a69526173746572697a7a6174696f6e0047726170686963737a6955497a69474c55547a *6943616c6c6261636b737a69526567697374726174696f6e5f4d6f75736543425f636c6f737572 *65005f5f676d707a5f786f72004748437a69494f426173655f5061747465726e4d617463684661 *696c5f7374617469635f696e666f0047726170686963737a6955497a69474c55547a6943616c6c *6261636b737a69526567697374726174696f6e5f746865436c65616e75704c6973745f636c6f73 *757265004748437a694e756d5f5a43444e756d5f636f6e5f696e666f00696e6974436170616269 *6c6974696573004748437a69496e745f49387a685f7374617469635f696e666f007374675f7365 *6c5f335f6e6f7570645f656e74727900436f6e74726f6c7a69457863657074696f6e5f7a644c72 *324a666c766c31375f736c6f770047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a694361706162696c6974795f7a644c723578546c697435305f636c6f73757265 *00446174617a6946696e6974654d61705f7a644c7233675a5a6c766c355f696e666f004748437a *69576f72645f57387a685f7374617469635f696e666f006c6f6f6b75705468726561644c616265 *6c0064656661756c7473486f6f6b0047726170686963737a6955497a69474c55547a6943616c6c *6261636b737a6957696e646f775f55705f7374617469635f656e7472790047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c72 *6a4f516c766c3430375f636c6f7375726500436f6e74726f6c7a69457863657074696f6e5f7a64 *4c72324a316c766c31325f696e666f0047726170686963737a6955497a69474c55547a6943616c *6c6261636b737a6957696e646f775f64386f770047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6951756572795574696c735f476574556e7061636b434d594b48 *696e745f7374617469635f696e666f004748437a69494f426173655f6c766c35375f696e666f00 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565727955 *74696c735f7a644c726a53556c766c3437305f636c6f73757265005f5f737467696e69745f4772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c557a6951756164726963 *73004748437a69426173655f45515f636c6f737572650047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b36326c697432 *37395f636c6f73757265007072696e74416c6c54687265616473005f5f737467696e69745f4772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c557a69496e697469616c *697a7a6174696f6e5f0047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a695072696d69746976654d6f64655f7a64776d61727368616c5072696d69746976654d6f *64655f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a6951756572795574696c735f7a644c726b39456c69743333355f636c6f7375726500477261 *70686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c *735f7a644c726b62796c766c3735395f636c6f737572650047726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c7a6948696e74735f7a644c723366556c6974315f636c6f *7375726500466f726569676e7a6953746f7261626c655f706f6c797a757a64646d7065656b325f *696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951 *756572795574696c735f7a644c726b386d6c69743331355f636c6f737572650047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a64 *4c726a50576c766c3432345f636c6f737572650047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a52436c766c3435305f *636c6f73757265004748437a69494f426173655f57726974654275666665725f7374617469635f *696e666f007374675f696e746572705f636f6e737472325f656e747279004748437a69496e745f *4936347a685f636f6e5f696e666f0064656c6574655468726561640047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a69466f675f61325f636c6f73757265007379 *73636f6e664040474c4942435f322e30004748437a69494f426173655f5265736f757263655661 *6e69736865645f636c6f737572650047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a6951756572795574696c735f7a644c726b38616c69743331325f636c6f7375 *72650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69436170 *6162696c6974795f7a644c7235784c6c697434385f636c6f737572650047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a *50796c766c3431385f636c6f73757265004748437a69546f7048616e646c65725f64735f656e74 *7279005f5f737467696e69745f446174617a695479706561626c655f0047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b *33696c766c3633315f636c6f73757265004748437a69537461626c655f537461626c655074725f *636f6e5f696e666f0047726170686963737a6955497a69474c55547a6943616c6c6261636b737a *69526567697374726174696f6e5f7a64646d7a6c315f636c6f737572650047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c72 *6b31476c766c3630365f636c6f73757265004748437a6948616e646c655f7a6477666c75736857 *726974654275666665725f636c6f7375726500466f726569676e7a6953746f7261626c655f706f *6c797a75706f6b65427974654f6666325f656e74727900466f726569676e7a69437a6953747269 *6e675f7a64777065656b4341537472696e675f636c6f737572650047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b3653 *6c69743239325f636c6f737572650047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c557a694572726f7273496e7465726e616c5f676574474c4572726f7273417578 *5f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *69436f6f72645472616e735f61325f636c6f73757265005f5f737467696e69745f477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a69506978656c466f726d617400 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565727955 *74696c735f7a644c726b346d6c69743235335f636c6f7375726500706572666f726d4d616a6f72 *47430047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f *775f7a644c7257586d616b654b6579626f61726443616c6c6261636b5f696e666f004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f *7a644c726a54436c766c3438315f636c6f737572650047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a69436f6f72645472616e735f4d6f64656c766965775f7374 *617469635f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a694361706162696c6974795f7a644c723577766c766c3131305f636c6f737572650076 *667072696e74664040474c4942435f322e30004748437a69546f7048616e646c65725f7265706f *7274537461636b4f766572666c6f775f656e747279005f5f737467696e69745f53797374656d7a *69494f7a69556e736166650047726170686963737a6955497a69474c55547a69496e697469616c *697a7a6174696f6e5f5247424d6f64655f7374617469635f656e7472790047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c72 *6b35636c69743236365f636c6f73757265006d61726b537461626c655074725461626c65005f5f *737467696e69745f4748437a695765616b5f0047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a69466f675f666f675f656e7472790047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f47657450657273 *70656374697665436f7272656374696f6e48696e745f636c6f73757265004748437a69494f4261 *73655f6c766c36345f656e747279004748437a69494f426173655f557365724572726f725f7374 *617469635f656e74727900446174617a6946696e6974654d61705f4272616e63685f7374617469 *635f656e7472790047726170686963737a6955497a69474c55547a6943616c6c6261636b737a69 *57696e646f775f7a644c725756676c75744b6579626f61726446756e635f636c6f737572650047 *726170686963737a6955497a69474c55547a69496e697469616c697a7a6174696f6e5f446f7562 *6c6542756666657265645f636c6f73757265004748437a6948616e646c655f6c766c36365f696e *666f004748437a69494f426173655f4e6f6e5465726d696e6174696f6e5f7374617469635f656e *7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175 *6572795574696c735f7a644c726b316f6c69743230375f636c6f73757265007374675f73656c5f *395f6e6f7570645f656e7472790047726170686963737a6955497a69474c55547a6943616c6c62 *61636b737a69526567697374726174696f6e5f73657443616c6c6261636b5f636c6f7375726500 *5f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a69426173696354797065735f0047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a6951756572795574696c735f7a644c726a58696c766c3533385f636c6f73 *757265004748437a694e756d5f7a644c72314d646c766c395f636c6f7375726500477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a *644c7235766e6c69743131315f636c6f73757265004748437a69576f72645f746f496e74656765 *72325f696e666f004748437a694e756d5f7a647773686f7773507265635f656e74727900477261 *70686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c *735f7a644c726a504d6c697432375f636c6f737572650047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a69466f675f61335f656e747279004748437a69494f4261 *73655f6136385f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c *7a69474c7a6951756572795574696c735f7a644c726b36386c766c3637355f636c6f7375726500 *5f5f676d707a5f616e64007374675f67635f6631004748437a69494f426173655f7a644c723661 *6b6134385f656e74727900446174617a6946696e6974654d61705f616464546f464d7a75435f69 *6e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361 *706162696c6974795f7a644c723579626c766c3133365f636c6f73757265004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a69436f6f72645472616e735f50726f *6a656374696f6e5f7374617469635f696e666f0047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b30636c766c3538335f *636c6f73757265007261697365494f7a685f666173740047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a54756c766c34 *37395f636c6f73757265004748437a69494f426173655f5265736f75726365427573795f737461 *7469635f656e747279007374675f6c74576f7264363400616c6c6f635f626c6f636b73005f5f73 *7467696e69745f4748437a695061636b5f004748437a69576f72645f5736347a685f636f6e5f69 *6e666f00446174617a6946696e6974654d61705f706f6c797a7564656c6574654d61785f656e74 *7279005f5f737467696e69745f446174617a694d6179626500466f726569676e7a6953746f7261 *626c655f706f6c797a757a64646d706f6b65325f636c6f73757265004748437a69546f7048616e *646c65725f746f7048616e646c65725f656e747279005f5f737467696e69745f47726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c557a6951756164726963735f004461 *74617a6946696e6974654d61705f7a644c7233675a5a6c766c355f636c6f737572650047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726b33716c766c3633335f636c6f737572650070696e6e65645f6f626a6563745f626c *6f636b004748437a69494f426173655f7a644c723661716135315f636c6f7375726500696e7465 *67657232496e747a685f666173740047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a6948696e74735f7a644c723366796c766c5f696e666f004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c *726a586d6c766c3533395f636c6f737572650047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b31636c69743230345f63 *6c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6952 *6567697374726174696f6e5f4b6579626f61726443425f636c6f73757265007274735f67657446 *756e5074720047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *51756572795574696c735f7a644c726b616f6c766c3734315f636c6f7375726500477261706869 *63737a6955497a69474c55547a6954797065735f4d6964646c65427574746f6e5f737461746963 *5f696e666f00746872656164506175736564004748437a69494f426173655f50726f746f636f6c *4572726f725f7374617469635f656e7472790047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b35416c69743237325f63 *6c6f73757265007374675f61705f7070707070705f696e666f0047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b33436c *766c3633365f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a69436f6f72645472616e735f4d6f64656c766965775f636f6e5f696e666f0069 *6e69745468726561644c6162656c5461626c65004748437a69494f426173655f6136355f656e74 *72790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69436170 *6162696c6974795f7a644c7235794c6c766c3134355f636c6f73757265005f5f737467696e6974 *5f4748437a69436f6e635f004748437a69494f426173655f6c766c34385f636c6f737572650047 *726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f7a64 *4c7257586d616b654b6579626f61726443616c6c6261636b5f656e747279005f5f737467696e69 *745f446174617a69576f7264006d61726b5369676e616c48616e646c657273004748437a694572 *725f7a644c7250616c766c31335f656e747279004748437a695074725f5074725f737461746963 *5f656e747279004748437a69494f426173655f4572726f7243616c6c5f7374617469635f656e74 *72790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726a55596c766c3530325f636c6f737572650047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c72 *6a56386c69743131305f636c6f73757265005f5f737467696e69745f47726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a69436f6c6f7253756d004761726261676543 *6f6c6c6563740047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *6951756572795574696c735f7a64776c69676874496e646578546f456e756d5f636c6f73757265 *005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a69546578747572696e677a6953706563696669636174696f6e5f005f5f737467696e69 *745f47726170686963737a6955497a69474c55547a69446562756767696e67004748437a695368 *6f775f7a647773686f775369676e6564496e745f636c6f73757265004748437a694e756d5f537a *685f7374617469635f696e666f004748437a69576f72645f5733327a685f7374617469635f696e *666f004748437a69494f426173655f7a647773686f777350726563355f696e666f004748437a69 *53686f775f7a64646d73686f774c6973745f656e74727900446174617a6946696e6974654d6170 *5f7a644c72336874706f6c797a756661696c315f636c6f73757265004748437a694572725f7a64 *4c724f516c766c335f636c6f737572650047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a6951756572795574696c735f7a644c726b34556c766c3635365f636c6f *73757265006e6f636c6473746f70004748437a694e756d5f6c766c385f636c6f73757265005f5f *737467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a695665727465785370656300676c75744d6f75736546756e630047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b3355 *6c69743234365f636c6f737572650066696e616c697a7a655765616b7a685f6661737400436f6e *74726f6c7a69457863657074696f6e5f7a644c7232495a5a6c766c31315f696e666f0047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726b33326c766c3632375f636c6f737572650047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b35386c697432 *36355f636c6f73757265005f5f737467696e69745f47726170686963737a6952656e646572696e *677a694f70656e474c7a69474c557a694d69706d617070696e675f0047726170686963737a6955 *497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a64646d6d69 *6e315f636c6f737572650070726f675f6e616d650073746172745369676e616c48616e646c6572 *73005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c *7a69474c7a69506978656c52656374616e676c65737a69506978656c5472616e736665725f0047 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69457874656e7369 *6f6e735f6c766c315f656e74727900466f726569676e7a694d61727368616c7a6941727261795f *706f6b654172726179305f636c6f73757265007374675f73656c5f395f6e6f7570645f696e666f *007265737572726563745468726561647300446174617a6946696e6974654d61705f7a64776669 *6e644d696e5f696e666f004748437a69426173655f756e7061636b417070656e6443537472696e *677a685f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a6951756572795574696c735f7a644c726b33366c766c3632385f636c6f7375726500737467 *5f63617463685f656e747279005f7374617274007374675f63617463685f6672616d655f726574 *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162 *696c6974795f7a644c7235786a6c697434315f636c6f737572650047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c72357766 *6c766c3130365f636c6f73757265004748437a69494f426173655f537461636b4f766572666c6f *775f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726b61366c69743334325f636c6f73757265004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c735f7a644c726a57616c69743132365f636c6f73757265004748437a694c6973745f7461696c *5f656e74727900676c75556e50726f6a65637434004748437a6948616e646c655f7345454b7a75 *4355525f696e666f004748437a694572725f7061744572726f725f636c6f737572650072656c65 *6173654361706162696c6974790047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a6951756572795574696c735f7a644c726b374d6c69743330365f636c6f737572 *650053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c36375f69 *6e666f004748437a6948616e646c655f7345454b7a754355525f656e7472790047726170686963 *737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a64 *4c723348566c766c32375f696e666f00446174617a6946696e6974654d61705f7a644c72336870 *6c766c31385f636c6f73757265005f5f737467696e69745f4748437a69466f726569676e507472 *5f004748437a69426173655f6d61705f696e666f007274735f676574537461626c655074720047 *48437a6948616e646c655f77616e745772697461626c6548616e646c657a715f636c6f73757265 *004748437a69576f72645f7a64777a64646d73686f775f656e7472790047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c7235 *765a5a6c766c3130325f636c6f73757265007374675f61705f305f696e666f0047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a64 *4c726a55516c766c3530305f636c6f737572650047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a69566572746578537065635f7a644c72616a486c766c33345f65 *6e747279005f5f737467696e69745f4748437a694261736500466f726569676e7a6953746f7261 *626c655f5a434453746f7261626c655f7374617469635f656e7472790047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a *59576c69743136395f636c6f73757265004748437a69494f426173655f7a647773686f77735072 *6563355f636c6f73757265004748437a69426173655f666f6c64725f636c6f73757265005f5f73 *7467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *694672616d65627566666572004748437a69494f426173655f6137385f696e666f004748437a69 *48616e646c655f77616e745772697461626c6548616e646c657a715f656e747279004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f *7a644c726b35696c766c3636325f636c6f73757265004748437a69494f426173655f4c696e6542 *7566666572696e675f7374617469635f656e7472790047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a4f6b6c766c3339 *395f636c6f73757265007374675f61705f765f696e666f004748437a69426173655f756e706163 *6b43537472696e67557466387a685f636c6f737572650047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a4f326c69745f *636c6f73757265004748437a6953686f775f6c766c31355f636c6f737572650047726170686963 *737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a64 *4c7233484e6c766c32345f656e747279004748437a694e756d5f6a746f735f636c6f7375726500 *446174617a6946696e6974654d61705f6c6f6f6b7570464d5f636c6f7375726500477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a *644c723576426c766c39365f636c6f737572650047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b336f6c69743233385f *636c6f73757265004748437a69546f7048616e646c65725f72756e494f5f656e74727900446174 *617a694c6973745f73756d5f696e666f007374675f61705f765f726574005f5f6873636f72655f *7365745f73617665645f7465726d696f730047726170686963737a6955497a69474c55547a6954 *797065735f576865656c446f776e5f7374617469635f656e7472790047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a52 *756c766c3434385f636c6f73757265005f5f737467696e69745f47726170686963737a6952656e *646572696e677a694f70656e474c7a69474c557a6954657373656c6c6174696f6e5f0047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f476574506f6c79676f6e536d6f6f746848696e745f7374617469635f696e666f004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f *7a644c726a58796c766c3534325f636c6f73757265004748437a69576f72645f7a64777a64646d *73686f775f636c6f7375726500466f726569676e7a6953746f7261626c655f706f6c797a757a64 *646d7065656b325f656e747279007374675f61705f345f7570645f696e666f0047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a64 *4c723576746c766c39345f636c6f737572650047726170686963737a6955497a69474c55547a69 *43616c6c6261636b737a6957696e646f775f7a644c723877486c766c345f656e74727900477261 *70686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c *735f7a644c726b39796c766c3732385f636c6f737572650047726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c7a6948696e74735f446f6e74436172655f737461746963 *5f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *51756572795574696c735f7a644c726a59436c69743136345f636c6f7375726500477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a6948696e74735f446f6e744361 *72655f7374617469635f656e747279006d75745f757365725f74696d655f647572696e675f4743 *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726b33616c766c3632395f636c6f73757265007374675f41505f696e666f *006177616b656e426c6f636b656451756575654e6f4c6f636b004748437a6948616e646c655f6c *766c37345f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726a52346c697434375f636c6f7375726500537461 *636b4f766572666c6f77486f6f6b004748437a69494f426173655f4f746865724572726f725f73 *74617469635f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a694361706162696c6974795f7a644c723579336c766c3133345f636c6f73757265005f *5f737467696e69745f5072656c7564655f00677261624361706162696c697479004748437a6957 *6f72645f7a64777a64646d73686f775f696e666f005f5f737467696e69745f4772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a69436c697070696e67006973466c6f *617444656e6f726d616c697a656400737461727475704861736b656c6c004748437a6948616e64 *6c655f666c75736857726974654275666665724f6e6c795f696e666f005f5f737467696e69745f *47726170686963737a6955497a69474c55547a6943616c6c6261636b735f004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c *726a5a5a616c766c3536375f636c6f737572650047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a55346c766c3438385f *636c6f7375726500706c7573496e74656765727a685f66617374004748437a6953686f775f7a64 *646d73686f774c6973745f696e666f00446174617a6946696e6974654d61705f7a647766696e64 *4d61785f636c6f73757265007374675f434841524c494b455f636c6f73757265004748437a694e *756d5f537a685f636f6e5f696e666f0047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a694361706162696c6974795f7a644c72357a7a316c766c3134395f636c6f *737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6943 *61706162696c6974795f7a644c723576706c766c39335f636c6f73757265004748437a694c6973 *745f6c766c31325f696e666f007274735f676574496e743634007374675f73656c5f325f6e6f75 *70645f696e666f007374675f444541445f5745414b5f696e666f0047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a5a5a *386c69743137325f636c6f73757265004d61696e5f53746174655f636f6e5f656e747279004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c735f7a644c726b36496c766c3638345f636c6f73757265004748437a69576f72645f6e656761 *7465335f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6948696e74735f48696e744d6f64655f636c6f737572655f74626c00727473537570706f *727473426f756e6454687265616473007374675f6765496e743634004748437a69426173655f46 *616c73655f7374617469635f696e666f005f5f737467696e69745f4748437a69494f426173655f *005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a6953746174655661725f0047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a6951756572795574696c735f47657454657874757265436f6d707265737369 *6f6e48696e745f636c6f7375726500436f6e74726f6c7a69457863657074696f6e5f7a644c7232 *4a666c766c31375f656e7472790047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a6951756572795574696c735f7a644c726a57776c766c3532365f636c6f737572 *650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726a58676c69743134335f636c6f737572650047726170686963737a69 *55497a69474c55547a6943616c6c6261636b737a6957696e646f775f4b657950616765446f776e *5f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a *6957696e646f775f7a644c72574c6d616b654d6f75736543616c6c6261636b5f636c6f73757265 *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726b364b6c69743239305f636c6f73757265004748437a69494f42617365 *5f6c766c35365f696e666f007374675f454e445f455843455054494f4e5f4c4953545f696e666f *004748437a69494f426173655f7468726f775f696e666f0047726170686963737a6955497a6947 *4c55547a6943616c6c6261636b737a69526567697374726174696f6e5f446973706c617943425f *7374617469635f656e7472790047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a6951756572795574696c735f7a644c726b33776c69743234305f636c6f73757265 *006465526566537461626c655074727a685f666173740047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b33756c766c36 *33345f636c6f73757265004748437a69494f426173655f6136385f636c6f737572650047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726a4f4b6c697431315f636c6f73757265005f5f737467696e69745f4d61696e5f0047 *48437a6953545265665f53545265665f7374617469635f696e666f0047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a5a *5a456c69743138305f636c6f73757265005f5f737467696e69745f47726170686963737a695549 *7a69474c55547a6943616c6c6261636b737a69476c6f62616c5f007374675f73656c5f385f7570 *645f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *6951756572795574696c735f7a644c726a54416c697438365f636c6f7375726500477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a *644c726a51756c697433385f636c6f737572650047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b356b6c69743236385f *636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f7a644c726b61416c766c3734345f636c6f737572650047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726b35346c69743236345f636c6f73757265004748437a6948616e646c655f6c766c32 *365f656e747279004748437a69576f72645f73686f777350726563335f656e7472790047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a69436f6f72645472616e73 *5f53697a7a655f636f6e5f696e666f005f5f737467696e69745f47726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a69506f696e7473007374675f7969656c645f746f *5f696e746572707265746572005f5f737467696e69745f436f6e74726f6c7a694d6f6e61645f00 *4748437a69576f72645f7a70335f636c6f73757265005f5f7374675f67635f66756e004748437a *69466c6f61745f447a685f7374617469635f656e747279004748437a69576f72645f6c6974385f *636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f7a644c726a5a5a326c766c3536355f636c6f7375726500737467 *5f73656c5f365f6e6f7570645f656e7472790047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b326b6c766c3631365f63 *6c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6952 *6567697374726174696f6e5f57696e646f7753746174757343425f7374617469635f696e666f00 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565727955 *74696c735f7a644c726b37476c766c3639395f636c6f737572650047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c7235796e *6c766c3133395f636c6f73757265005f5f737467696e69745f47726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a694361706162696c697479005f5f737467696e6974 *5f466f726569676e7a69437a6954797065730064756d6d795f74736f005f5f737467696e69745f *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c557a694d61747269 *785f0053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363616c6c36365f *656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *4361706162696c6974795f7a644c723579766c766c3134315f636c6f73757265004748437a6948 *616e646c655f7374646f75745f636c6f73757265004748437a69576f72645f6e6567617465335f *696e666f007374675f73656c5f31325f6e6f7570645f696e666f004748437a69494f426173655f *5065726d697373696f6e44656e6965645f636c6f737572650047726170686963737a6955497a69 *474c55547a6943616c6c6261636b737a6957696e646f775f7a644c72574a676c75744d6f757365 *46756e635f636c6f7375726500746f74616c5f616c6c6f63617465640047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a *57756c69743133315f636c6f737572650047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a6951756572795574696c735f7a644c726b304f6c69743139385f636c6f *737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e *646f775f7a644c7238784c6139325f636c6f73757265004748437a69494f426173655f4f746865 *724572726f725f636c6f73757265007369676164647365744040474c4942435f322e30004d6169 *6e4361706162696c697479007374675f61705f6e5f726574004d61696e5f6d61696e5f736c6f77 *004748437a69576f72645f7a6477746f496e7465676572315f696e666f0047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c557a694572726f7273496e7465726e616c *5f7468655265636f726465644572726f72735f636c6f737572650047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c72357552 *6c6974335f636c6f73757265005f5f737467696e69745f53797374656d7a69456e7669726f6e6d *656e74005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a69506978656c52656374616e676c65737a69436f6e766f6c7574696f6e5f0044 *6174617a694d617962655f4e6f7468696e675f7374617469635f656e7472790047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a64 *4c726a5a5a696c766c3536395f636c6f73757265005f5f737467696e69745f4772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6944617461547970655f0047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726a4f386c766c3339365f636c6f73757265004748437a69426173655f5a437a745a43 *5f7374617469635f656e7472790047726170686963737a6955497a69474c55547a6943616c6c62 *61636b737a6957696e646f775f4b657946395f636c6f7375726500626c6f636b55736572536967 *6e616c730047726170686963737a6955497a69474c55547a6943616c6c6261636b737a69526567 *697374726174696f6e5f7a644c7233484e6c766c32345f696e666f0047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a51 *326c697433315f636c6f7375726500676c4765744572726f7200676c7574496e6974446973706c *61794d6f64650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *6948696e74735f7a644c723367306c6974345f636c6f737572650047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b3132 *6c766c3539365f636c6f73757265006973456d7074794d5661727a685f66617374004748437a69 *494f426173655f494f457863657074696f6e5f7374617469635f656e7472790064697645786163 *74496e74656765727a685f66617374005f5f737467696e69745f47726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6953656c656374696f6e0047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a69426173696354797065735f44697361 *626c65645f636c6f73757265004748437a69426173655f756e7061636b43537472696e677a685f *656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *4361706162696c6974795f7a644c7235786c6c766c3132335f636c6f73757265004748437a694e *756d5f6a746f737a715f656e747279005f5f737467696e69745f4e756d65726963004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f *7a644c726a50516c697432385f636c6f737572650047726170686963737a6955497a69474c5554 *7a69496e697469616c697a7a6174696f6e5f7a644c72356d457a647767656e657269634c656e67 *7468315f696e666f00737461745f737461727445786974005f5f6465636f6465466c6f61740047 *48437a6953686f775f73686f77735f696e666f007765616b5f7074725f6c697374004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f *7a644c726b38536c69743332335f636c6f737572650047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b34346c766c3634 *335f636c6f73757265004748437a69494f426173655f45786974537563636573735f636c6f7375 *726500676c476574496e7465676572760047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a6951756572795574696c735f7a644c726b636f6c766c3737325f636c6f *737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e *646f775f64386f790053797374656d7a69506f7369787a69496e7465726e616c735f7a64776363 *616c6c36365f636c6f737572650047726170686963737a6955497a69474c55547a695479706573 *5f6c766c315f656e7472790047726170686963737a6955497a69474c55547a6943616c6c626163 *6b737a69526567697374726174696f6e5f5669736962696c69747943425f7374617469635f696e *666f004748437a6948616e646c655f666c75736857726974654275666665724f6e6c795f656e74 *72790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69426567 *696e456e645f72656e6465725072696d69746976655f636c6f737572650068735f696e69740047 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574 *696c735f7a644c726a57456c766c3532385f636c6f737572650047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a4f676c *766c3339385f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a6951756572795574696c735f7a644c726a59776c766c3535375f636c6f737572 *650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6943617061 *62696c6974795f7a644c72357a7a566c766c3136335f636c6f73757265004748437a69494f4261 *73655f6136335f696e666f007374675f61705f665f7265740047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b36796c69 *743238375f636c6f7375726500446174617a6946696e6974654d61705f7a644c72336872706f6c *797a756661696c5f636c6f73757265004748437a69496e745f4936347a685f636f6e5f656e7472 *790047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f77 *5f7a644c725756676c75744b6579626f61726446756e635f656e7472790047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c72 *3579786c697436305f636c6f737572650047726170686963737a6955497a69474c55547a694361 *6c6c6261636b737a69526567697374726174696f6e5f4d656e7553746174757343425f636c6f73 *7572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175 *6572795574696c735f7a644c726b36476c69743238395f636c6f73757265004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c *723579506c766c3134365f636c6f737572650047726170686963737a6955497a69474c55547a69 *43616c6c6261636b737a6957696e646f775f64386f440047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a69436f6f72645472616e735f53697a7a655f7374617469 *635f696e666f005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f *70656e474c7a69474c555f007374675f61705f325f7570645f696e666f0047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c72 *6b39326c766c3732305f636c6f737572650047726170686963737a6955497a69474c55547a6954 *797065735f576865656c446f776e5f7374617469635f696e666f004748437a69494f426173655f *6c766c36325f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a6951756572795574696c735f7a644c726b62776c69743336345f636c6f737572650046 *6f726569676e7a69437a694572726f725f7a644c723257747a64776363616c6c5f696e666f0047 *48437a6948616e646c655f696f657a756e6f745772697461626c655f736c6f7700477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a *644c726b35736c69743237305f636c6f73757265007274735f6d6b537472696e67004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f *7a644c723577586c766c3131375f636c6f73757265004748437a69494f426173655f446561646c *6f636b5f636c6f73757265005f5f737467696e69745f4748437a69457272007374675f73656c5f *31325f7570645f696e666f005f5f737467696e69745f446174617a695479706561626c65007374 *675f41505f535441434b5f656e747279007374675f756e626c6f636b4173796e63457863657074 *696f6e737a685f7265745f696e666f004748437a69494f426173655f6c766c35345f656e747279 *005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a69546578747572696e677a69546578747572655461726765745f004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c *72357a7a336c697436385f636c6f73757265005f5f737467696e69745f47726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a69506978656c52656374616e676c65735f *004748437a69494f426173655f6c766c35355f656e747279004748437a69494f426173655f4669 *6c6548616e646c655f7374617469635f696e666f0053797374656d7a69456e7669726f6e6d656e *745f67657450726f674e616d655f636c6f73757265005f5f737467696e69745f47726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f0073 *74675f73656c5f31305f6e6f7570645f656e7472790047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a57346c766c3531 *395f636c6f73757265005f5f737467696e69745f47726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a69466163650047726170686963737a6955497a69474c55547a69 *43616c6c6261636b737a6957696e646f775f7a644c7238774c7a6477756e6d61727368616c5370 *656369616c4b65795f636c6f737572650047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a6951756572795574696c735f7a644c726b37776c69743330325f636c6f *737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6946 *6f675f61335f696e666f004748437a69426173655f5a43444f72645f7374617469635f696e666f *007374675f73656c5f355f7570645f656e74727900676364496e7465676572496e747a685f6661 *7374004748437a6948616e646c655f7a64776175676d656e74494f4572726f725f656e74727900 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69436170616269 *6c6974795f7a644c723579376c766c3133355f636c6f737572650047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b3261 *6c69743231395f636c6f737572650047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a6951756572795574696c735f7a644c726a4f736c766c3430315f636c6f7375 *726500676c7574496e6974005f5f737467696e69745f466f726569676e7a69437a694572726f72 *5f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726a4f796c6974385f636c6f737572650047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f6c69676874496e *646578546f456e756d5f696e666f007274735f6d6b576f72643332004748437a69494f42617365 *5f526561644275666665725f7374617469635f656e7472790047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a51516c76 *6c3433385f636c6f7375726500446174617a6946696e6974654d61705f6c6f6f6b7570464d5f65 *6e747279004748437a694c6973745f7461696c5f696e666f0047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a69566572746578537065635f7a644c72616a486c76 *6c33345f696e666f007374675f61705f70705f726574005f5f737467696e69745f477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c5f004748437a69494f426173655f *6c766c36305f656e7472790047726170686963737a6955497a69474c55547a6943616c6c626163 *6b737a69526567697374726174696f6e5f6c766c5f636c6f73757265004748437a69494f426173 *655f556e737570706f727465644f7065726174696f6e5f636c6f73757265004772617068696373 *7a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f5370656369616c4b65 *795f636f6e5f656e7472790072616973654173796e63576974684c6f636b00436f6e74726f6c7a *69457863657074696f6e5f7a644c72324a396b5f636c6f737572650047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6948696e74735f7a644c723367326c697435 *5f636c6f7375726500616c6c6f635f48704c696d007374675f656e7465725f696e666f00474843 *7a69494f426173655f5061747465726e4d617463684661696c5f636f6e5f696e666f0047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a6477636c6970506c616e65496e646578546f456e756d5f636c6f73757265005f5f676d707a *5f696f720047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e *646f775f4b6579496e736572745f7374617469635f696e666f004748437a69494f426173655f49 *6e617070726f707269617465547970655f7374617469635f656e74727900676c4c6f6164496465 *6e74697479007374675f6774576f726436340047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a596f6c766c3535355f63 *6c6f7375726500696e746567657232576f72647a685f666173740047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c72357733 *6c766c3130335f636c6f7375726500736c656570696e675f7175657565005f5f737467696e6974 *5f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695665727465 *784172726179730053797374656d7a69457869745f6c766c315f736c6f77004748437a6953746f *7261626c655f77726974655074724f66665074725f696e666f004748437a694572725f756e6465 *66696e65645f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a69466f675f4578705f636f6e5f696e666f007374675f61705f70707070705f72 *65740047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69436170 *6162696c6974795f7a644c7235786e6c697434325f636c6f73757265004748437a6948616e646c *655f6c766c32335f656e747279004748437a69426173655f6d61705f656e747279004748437a69 *4e756d5f537a685f7374617469635f656e747279005f5f737467696e69745f4772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a69466565646261636b5f007374675f *73656c5f31325f7570645f656e74727900466f726569676e7a69437a69537472696e675f776974 *684341537472696e674c656e5f636c6f7375726500466f726569676e7a6953746f7261626c655f *706f6c797a757a64646d706f6b65325f656e7472790047726170686963737a6955497a69474c55 *547a6943616c6c6261636b737a69526567697374726174696f6e5f427574746f6e426f7843425f *636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a69466f675f61325f656e747279004748437a69576f72645f7a657a65345f656e747279004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c735f7a644c726b32676c766c3631355f636c6f737572650047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a56436c76 *6c3531325f636c6f73757265006e657742434f7a685f666173740047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b3134 *6c69743230325f636c6f73757265004748437a6948616e646c655f77616e745772697461626c65 *48616e646c657a715f696e666f00446174617a6946696e6974654d61705f456d707479464d5f73 *74617469635f656e747279005f5f737467696e69745f4748437a69466c6f61745f005f5f737467 *696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6948 *696e7473005f5f737467696e69745f466f726569676e7a69466f726569676e5074725f00727473 *5f6d6b496e7431360047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a6951756572795574696c735f4765744c696e65536d6f6f746848696e745f636c6f73757265 *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726b39576c766c3733345f636c6f73757265004748437a6948616e646c65 *5f7a64776175676d656e74494f4572726f725f636c6f73757265004748437a695074725f706c75 *735074725f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a6951756572795574696c735f7a644c726b354d6c69743237355f636c6f73757265 *006c7365656b36344040474c4942435f322e310047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a56496c69743131395f *636c6f73757265004748437a69494f426173655f6137315f656e7472790047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c72 *6a584b6c766c3534355f636c6f7375726500446174617a694d617962655f4a7573745f73746174 *69635f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a6951756572795574696c735f7a644c726b36366c69743238305f636c6f7375726500466f72 *6569676e7a6953746f7261626c655f706f6c797a75706f6b65427974654f6666325f636c6f7375 *7265005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a69506f696e74735f00667265654861736b656c6c46756e6374696f6e5074720047 *726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f7a64 *4c7257586d616b654b6579626f61726443616c6c6261636b5f636c6f73757265005f5f73746769 *6e69745f47726170686963737a6955497a69474c55547a6943616c6c6261636b737a6952656769 *7374726174696f6e5f007374675f7369675f696e7374616c6c0047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c723578766c *697434345f636c6f73757265005f5f737467696e69745f47726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6952656164436f7079506978656c73005f5f737467696e *69745f546578747a69506172736572436f6d62696e61746f72737a6952656164505f005f5f7374 *67696e69745f4748437a695265616c5f0047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a6951756572795574696c735f7a644c726b62386c69743335385f636c6f *73757265005f5f737467696e69745f47726170686963737a6955497a69474c55547a694f626a65 *6374735f004748437a69546f7048616e646c65725f7a644c723153616c766c315f656e74727900 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565727955 *74696c735f7a644c726a50716c766c3431365f636c6f737572650047726170686963737a695549 *7a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a64777a64646d *7a675f696e666f004748437a695074725f5074725f7374617469635f696e666f00477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a6948696e74735f7a644c723366 *536c69745f636c6f73757265007274735f67657454687265616449640047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c557a694572726f7273496e7465726e616c5f *7468655265636f726465644572726f72735f656e7472790047726170686963737a6955497a6947 *4c55547a6943616c6c6261636b737a6957696e646f775f4b657946385f636c6f73757265007374 *675f61705f7070705f696e666f0047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a6951756572795574696c735f7a644c726a5a5a416c69743137395f636c6f7375 *7265004748437a69426173655f5a434445715f7374617469635f696e666f005f5f737467696e69 *745f466f726569676e7a694d61727368616c7a6941727261790047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f436170466f675f73 *74617469635f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c *7a69474c7a694361706162696c6974795f7a644c723575586c766c38365f636c6f737572650073 *74675f75745f315f305f756e7265675f72657400776f72643634546f496e74656765727a685f66 *617374004748437a69494f426173655f45786974457863657074696f6e5f636f6e5f696e666f00 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565727955 *74696c735f7a644c726b31776c69743230395f636c6f737572650047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b6369 *6c69743337365f636c6f737572650047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a6951756572795574696c735f7a644c726a56346c69743130395f636c6f7375 *7265006f72496e74656765727a685f66617374005f5f737467696e69745f47726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a69506978656c52656374616e676c6573 *7a69506978656c53746f72616765005f5f737467696e69745f47726170686963737a6955497a69 *474c55547a69436f6e7374616e74735f004748437a69494f426173655f7a644c7236616b613438 *5f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a694361706162696c6974795f7a644c72357a7a706c766c3135355f636c6f73757265007374 *675f61705f375f7570645f696e666f0047726170686963737a6955497a69474c55547a6943616c *6c6261636b737a69526567697374726174696f6e5f43616c6c6261636b547970655f636c6f7375 *72655f74626c007374675f656e7465725f7265740047726170686963737a6952656e646572696e *677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a50306c697431355f *636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a694361706162696c6974795f7a644c72357a7a686c766c3135335f636c6f7375726500657869 *7453746f72616765004748437a69494f426173655f4d5661725f7374617469635f656e74727900 *5f5f656e636f6465466c6f6174005f5f737467696e69745f47726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c7a69466f67006d626c6f636b5f6d617000477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a *644c7235794a6c697436335f636c6f73757265004748437a69426173655f756e7061636b417070 *656e6443537472696e677a685f656e747279005a434d61696e5f6d61696e5f636c6f7375726500 *73696770726f636d61736b4040474c4942435f322e300047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a69426173696354797065735f4361706162696c6974795f *636c6f737572655f74626c0047726170686963737a6955497a69474c55547a6943616c6c626163 *6b737a69526567697374726174696f6e5f7a64646d7a67315f656e747279005f5f676d707a5f61 *646400466f726569676e7a6953746f7261626c655f706f6c797a757a64646d7065656b325f636c *6f73757265004748437a69426173655f497a685f7374617469635f656e74727900477261706869 *63737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f7a644c72387744 *6c766c325f696e666f004748437a6948616e646c655f6c766c36375f636c6f7375726500474843 *7a6948616e646c655f7a6477666c757368526561644275666665725f636c6f7375726500477261 *70686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f4b657946 *375f7374617469635f656e7472790047726170686963737a6955497a69474c55547a6954797065 *735f4d6f757365427574746f6e5f636c6f737572655f74626c0047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b30476c *69743139365f636c6f73757265007374675f494e445f5354415449435f696e666f004748437a69 *48616e646c655f7a6477666c757368526561644275666665725f736c6f77004748437a694e756d *5f6a746f737a715f636c6f73757265005f5f676d707a5f666469765f7172004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c *726a5a5a496c69743138315f636c6f73757265006d616b65537461626c655074727a685f666173 *74004d61696e5f7a6467746f53746174655f696e666f004748437a69494f426173655f496c6c65 *67616c4f7065726174696f6e5f636c6f73757265004748437a6953686f775f615f636c6f737572 *650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726b30456c766c3539305f636c6f73757265005f5f737467696e69745f *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69526173746572 *506f730070617573654040474c4942435f322e3000466f726569676e7a6953746f7261626c655f *706f6c797a7573697a7a654f66325f696e666f00466f726569676e7a69437a694572726f725f7a *64776363616c6c325f736c6f77004748437a69494f426173655f6136365f636c6f737572650073 *63686564756c6546696e616c697a6572730047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a6951756572795574696c735f7a644c726a506f6c697432315f636c6f *73757265005f5f737467696e69745f47726170686963737a6955497a69474c55547a6943616c6c *6261636b737a69526567697374726174696f6e0047726170686963737a6955497a69474c55547a *6943616c6c6261636b737a6957696e646f775f7a644c723877486c766c345f636c6f7375726500 *4748437a69546f7048616e646c65725f7a644c723153346c766c5f636c6f73757265004748437a *6948616e646c655f6c766c36365f656e7472790047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b35306c69743236335f *636c6f7375726500446174617a6946696e6974654d61705f7a644c7233674e7a64776d6b427261 *6e63685f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726a5a5a4b6c766c3537365f636c6f73757265005f *5f66696e695f61727261795f7374617274006e657741727261797a685f66617374005379737465 *6d7a69456e7669726f6e6d656e745f676f5f656e747279005f5f737467696e69745f446174617a *6943686172005f5f737467696e69745f47726170686963737a6955497a69474c55547a6957696e *646f775f00446174617a6946696e6974654d61705f7a647766696e644d696e5f636c6f73757265 *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726b36346c766c3637345f636c6f737572650047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a56 *656c766c3530365f636c6f73757265004748437a6953686f775f5a434453686f775f636f6e5f69 *6e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175 *6572795574696c735f7a644c726a50656c766c3431335f636c6f737572650073757370656e6454 *68726561640072616973654173796e63004748437a69537461626c655f537461626c655074725f *7374617469635f696e666f007374675f7570645f6672616d655f365f7265740047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a64 *4c726a59596c766c3536345f636c6f73757265004748437a694c6973745f7370616e5f696e666f *004748437a69466c6f61745f467a685f636f6e5f656e7472790047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a56796c *766c3531315f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a6951756572795574696c735f7a644c726a5a5a476c766c3537355f636c6f7375 *72650066707574634040474c4942435f322e30005f5f676d707a5f746469765f7172005f5f6c69 *62635f6373755f696e6974004748437a694572725f7061744572726f725f656e74727900477261 *70686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c *735f7a644c726a556f6c766c3439335f636c6f737572650047726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c7a69566572746578537065635f7074727a75676c466f67 *436f6f7264664558545f656e7472790047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a6951756572795574696c735f7a644c726a54456c697438375f636c6f7375 *7265004748437a69494f426173655f6c766c35325f656e747279005f5f737467696e69745f5465 *78747a69526561647a694c65785f0047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a6951756572795574696c735f7a644c726b376b6c69743239395f636c6f7375 *72650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726b35496c69743237345f636c6f737572650047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c72 *6a53346c766c3435375f636c6f73757265007374675f7365715f6672616d655f696e666f004461 *74617a694d617962655f4a7573745f7374617469635f696e666f0047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a4f65 *6c6974335f636c6f73757265005f5f737467696e69745f4748437a69457863657074696f6e5f00 *4748437a694572725f6c766c395f636c6f737572650047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a69466f675f4578705f636f6e5f656e747279004748437a69 *494f426173655f7468726f775f656e747279004748437a69576f72645f66726f6d496e74656765 *72335f696e666f0047726170686963737a6955497a69474c55547a6943616c6c6261636b737a69 *57696e646f775f64386f410047726170686963737a6952656e646572696e677a694f70656e474c *7a69474c7a69457874656e73696f6e735f7a64776363616c6c5f696e666f00436f6e74726f6c7a *69457863657074696f6e5f7a644c72324a6264735f636c6f737572650047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b *38756c69743331375f636c6f737572650047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a694361706162696c6974795f7a644c723576376c6974375f636c6f7375 *7265004748437a69496e745f49387a685f636f6e5f696e666f0047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a69457874656e73696f6e735f684f70656e474c7a *7567657450726f63416464726573735f696e666f0073687574646f776e4861736b656c6c005f5f *737467696e69745f53797374656d7a6945786974004748437a694e756d5f5a43444e756d5f7374 *617469635f696e666f007374675f73656c5f31315f6e6f7570645f696e666f006d75745f757365 *725f74696d65006d626c6f636b735f616c6c6f6361746564007274735f676574507472005f5f62 *73735f73746172740047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a694361706162696c6974795f7a644c723578486c697434375f636c6f73757265004748437a *694c6973745f7a64776c656e5f656e7472790047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b37386c69743239365f63 *6c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *694361706162696c6974795f7a644c723576726c697431325f636c6f73757265005f5f73746769 *6e69745f53797374656d7a69456e7669726f6e6d656e745f006469764d6f64496e74656765727a *685f666173740047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *6951756572795574696c735f7a644c726b614b6c69743335325f636c6f73757265007274735f65 *76616c4c617a79494f5f004748437a69576f72645f7a74335f656e74727900466f726569676e7a *694d61727368616c7a6941727261795f7a64777065656b41727261795f656e7472790047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726b634f6c69743338345f636c6f737572650047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a55756c697431 *30305f636c6f73757265007374675f4e4f5f46494e414c495a45525f636c6f7375726500477261 *70686963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f *6e5f5669736962696c69747943425f7374617469635f656e747279004748437a69576f72645f7a *64664e756d576f726433325f636c6f73757265004748437a69496e745f4931367a685f73746174 *69635f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f7a644c726a55636c766c3439305f636c6f7375726500436f6e74 *726f6c7a69457863657074696f6e5f7a644c72324a666c766c31375f696e666f00446174617a69 *46696e6974654d61705f7a644c723367526c766c315f696e666f006d61696e004748437a694861 *6e646c655f7a6477666c75736857726974654275666665725f736c6f770047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c72 *6b33796c766c3633355f636c6f737572650047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a6951756572795574696c735f7a644c726a59756c69743136325f636c *6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *51756572795574696c735f7a644c726b30306c766c3538305f636c6f7375726500477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a *644c726a534f6c697437345f636c6f7375726500476574526f6f7473007374675f61705f707070 *7070705f726574004748437a69576f72645f577a685f7374617469635f696e666f004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f *7a644c726b36616c69743238315f636c6f73757265007374675f626c6f636b5f7075746d766172 *005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a69546578747572696e677a69517565726965735f0047726170686963737a6955497a69 *474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a644c72334a336c76 *6c32395f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c *7a69474c7a6953746174655661725f53746174655661725f636f6e5f696e666f00446174617a69 *46696e6974654d61705f616464546f464d7a75435f656e7472790047726170686963737a695549 *7a69474c55547a69496e697469616c697a7a6174696f6e5f446f75626c6542756666657265645f *7374617469635f696e666f007374675f73656c5f31335f7570645f696e666f005f5f737467696e *69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69506572 *467261676d656e7400696e697444656661756c7448616e646c657273004748437a69426173655f *756e7061636b43537472696e677a685f636c6f737572650047726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a59536c6974 *3136385f636c6f73757265005f5f737467696e69745f4748437a69417272004772617068696373 *7a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f537065 *6369616c557043425f7374617469635f656e747279007374675f67635f766f69645f7265740047 *48437a69546f7048616e646c65725f7a644c723153616c766c315f636c6f737572650047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726a52306c697434365f636c6f737572650047726170686963737a6955497a69474c55 *547a6943616c6c6261636b737a6957696e646f775f6c766c335f696e666f004748437a69426173 *655f5a30545f636c6f737572655f74626c0047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a6951756572795574696c735f7a644c726a50416c697432345f636c6f *73757265004748437a69494f426173655f6136365f696e666f0047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f47657447656e6572 *6174654d69706d617048696e745f636c6f73757265004748437a69426173655f756e7061636b43 *537472696e67557466387a685f696e666f0047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a6951756572795574696c735f7a644c726b38416c766c3731335f636c *6f73757265007374675f6f723634007365747570527473466c616773005f5f737467696e69745f *4748437a695265616c0047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726b39676c69743332395f636c6f73757265004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c69 *74795f7a644c723578726c697434335f636c6f73757265004748437a69494f426173655f6c766c *34385f656e747279005f5f737467696e69745f436f6e74726f6c7a694d6f6e6164004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f *7a644c726a52476c766c3435315f636c6f73757265005f5f737467696e69745f47726170686963 *737a6955497a69474c55547a694d656e750047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a6951756572795574696c735f7a644c726b35536c766c3637315f636c *6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *51756572795574696c735f7a644c726b344d6c766c3635345f636c6f73757265007374675f6170 *5f315f7570645f656e74727900756e626c6f636b4173796e63457863657074696f6e737a685f66 *617374005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a69474c626f6f6c65616e5f004748437a694e756d5f4a7a685f7374617469635f *696e666f004748437a69494f426173655f4275666665724c6973744e696c5f7374617469635f69 *6e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175 *6572795574696c735f7a644c726b36576c69743239335f636c6f73757265004748437a6953686f *775f6c766c31335f656e74727900696e697441646a7573746f72004748437a69494f426173655f *4275666665725f636f6e5f656e7472790047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a6951756572795574696c735f7a644c726b34536c69743236315f636c6f *737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6943 *61706162696c6974795f7a644c723577726c766c3130395f636c6f73757265004f75744f664865 *6170486f6f6b007374675f73656c5f305f6e6f7570645f696e666f00676c466f67690047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726b61326c69743334315f636c6f737572650047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b35366c766c36 *35395f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a6951756572795574696c735f7a644c726b34776c766c3635305f636c6f737572650047 *48437a69546f7048616e646c65725f6b5f696e666f004748437a69426173655f497a685f636f6e *5f656e747279005f5f737467696e69745f4748437a6953686f770047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a4f4f *6c697431325f636c6f73757265004748437a69494f426173655f6135335f656e747279005f5f6c *6962635f73746172745f6d61696e4040474c4942435f322e3000676c436c656172436f6c6f7200 *7374675f454e445f54534f5f51554555455f636c6f73757265004748437a69494f426173655f45 *786974457863657074696f6e5f7374617469635f656e747279004748437a69426173655f45515f *7374617469635f656e7472790047726170686963737a6955497a69474c55547a6943616c6c6261 *636b737a6957696e646f775f4d6f646966696572735f7374617469635f696e666f004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f *7a644c72357a7a356c766c3135305f636c6f737572650047726170686963737a6955497a69474c *55547a6943616c6c6261636b737a6957696e646f775f6c766c335f656e74727900477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a *644c726a52596c697436315f636c6f737572650047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a55366c697439345f63 *6c6f7375726500666f726b50726f636573730047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b38346c766c3730355f63 *6c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *6951756572795574696c735f7a644c726a566b6c69743131335f636c6f7375726500436f6e7472 *6f6c7a69457863657074696f6e5f7a644c72324a646c766c31365f636c6f73757265005f5f676d *707a5f746469765f720047726170686963737a6955497a69474c55547a6943616c6c6261636b73 *7a6957696e646f775f61345f636c6f73757265005f5f696e69745f61727261795f656e64004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c735f7a644c726a53636c766c3435395f636c6f737572650047726170686963737a6955497a69 *474c55547a6943616c6c6261636b737a6957696e646f775f7a644c7238784e6139335f656e7472 *79004748435f5a434352657475726e61626c655f7374617469635f696e666f004748437a694e75 *6d5f7a6c5f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a6951756572795574696c735f7a644c726b62496c69743336375f636c6f73757265 *004748437a69546f7048616e646c65725f7a644c723153636c766c325f636c6f73757265004772 *6170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f7a644c *725872756e6d61727368616c5370656369616c4b65795f696e666f005f5f737467696e69745f47 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6954657874757269 *6e677a69456e7669726f6e6d656e74735f007374675f73656c5f385f6e6f7570645f656e747279 *004748437a69426173655f47545f7374617469635f696e666f0047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c723575546c *766c38355f636c6f73757265007969656c647a685f66617374005f5f737467696e69745f477261 *70686963737a6952656e646572696e677a694f70656e474c7a69474c7a69546578747572696e67 *7a694f626a656374735f0047726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a6951756572795574696c735f4765745061636b434d594b48696e745f7374617469635f *656e747279004748437a69494f426173655f7a647773686f777350726563325f656e7472790047 *48437a6953686f775f7a647773686f775369676e6564496e745f696e666f004772617068696373 *7a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f636f6d *70617265325f656e747279004748437a69494f426173655f6c766c35345f696e666f007374675f *454e445f4d55545f4c4953545f636c6f73757265004748437a69546f7048616e646c65725f7a64 *4c723153616c766c315f736c6f77007374675f63746f695f7265745f46315f696e666f00446174 *617a6946696e6974654d61705f706f6c797a7564656c6574654d696e5f636c6f73757265004772 *6170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f7a644c *7238784e6139335f636c6f737572650047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a6951756572795574696c735f7a644c726b34496c766c3635335f636c6f73 *7572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e64 *6f775f446f776e5f7374617469635f696e666f004748437a69494f426173655f6136355f696e66 *6f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726b376d6c766c3639345f636c6f73757265004748437a69494f426173 *655f686561704f766572666c6f775f636c6f7375726500466f726569676e7a6953746f7261626c *655f706f6c797a75616c69676e6d656e74325f656e7472790047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a574f6c69 *743133365f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a6951756572795574696c735f476574556e7061636b434d594b48696e745f636c6f *737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951 *756572795574696c735f7a644c726b344f6c69743236305f636c6f737572650047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a64 *4c726a594b6c69743136365f636c6f737572650047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a694361706162696c6974795f7a644c72357a7a396c766c313531 *5f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a694361706162696c6974795f7a644c723576686c766c39315f636c6f73757265005f5f7374 *67696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *4269746d6170730047726170686963737a6955497a69474c55547a6943616c6c6261636b737a69 *526567697374726174696f6e5f4b6579626f617264557043425f7374617469635f656e74727900 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565727955 *74696c735f7a64776c69676874496e646578546f456e756d5f656e747279004748437a69494f42 *6173655f7a644c723661716135315f696e666f004748437a69576f72645f7a64646d73686f774c *697374335f656e747279005f5f737467696e69745f446174617a6944796e616d69635f00737467 *5f494e445f355f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c *7a69474c7a6951756572795574696c735f7a644c726b30386c766c3538325f636c6f7375726500 *5f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a69506978656c52656374616e676c65737a6953696e6b5f0047726170686963737a695549 *7a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f5370656369616c *557043425f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a694672616d656275666665725f6c6974325f636c6f737572650047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f4765 *745065727370656374697665436f7272656374696f6e48696e745f7374617469635f696e666f00 *7374675f494e445f345f696e666f007374675f7570645f6672616d655f726574007374675f6763 *5f66315f696e666f00436f6e74726f6c7a69457863657074696f6e5f7a644c72324a6264735f69 *6e666f004748437a69494f426173655f73686f777350726563385f696e666f005f5f737467696e *69745f546578747a69506172736572436f6d62696e61746f72737a6952656164507265635f0047 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574 *696c735f7a644c726b36596c766c3638385f636c6f737572650047726170686963737a6955497a *69474c55547a6943616c6c6261636b737a6957696e646f775f55705f636c6f7375726500474843 *7a694572725f6c766c375f636c6f73757265004748437a69494f426173655f426c6f636b427566 *666572696e675f7374617469635f656e747279005f5f737467696e69745f47726170686963737a *6955497a69474c55547a6943616c6c6261636b737a6957696e646f770047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a69436f6f72645472616e735f7a6457506f *736974696f6e5f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c *6261636b737a6957696e646f775f4b657955705f7374617469635f696e666f004748437a694861 *6e646c655f696f657a75636c6f73656448616e646c655f636c6f73757265004748437a69426173 *655f5a435f636f6e5f656e747279007274735f6d6b496e74333200676c75745377617042756666 *65727300466f726569676e7a69437a694572726f725f7468726f774572726e6f49665265747279 *5f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *457874656e73696f6e735f6c766c315f636c6f7375726500737461745f7374617274496e697400 *4748437a69426173655f756e7061636b43537472696e677a685f696e666f004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c *726a564d6c69743132305f636c6f737572650047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a52656c766c3434345f63 *6c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *6951756572795574696c735f476574506f6c79676f6e536d6f6f746848696e745f636c6f737572 *650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f77 *5f7a644c72574c6d616b654d6f75736543616c6c6261636b5f656e747279004772617068696373 *7a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f7a644c7238774a6c76 *6c355f636c6f73757265005f5f737467696e69745f47726170686963737a6952656e646572696e *677a694f70656e474c7a69474c557a69496e697469616c697a7a6174696f6e004748437a69494f *426173655f6c766c35375f656e747279006e65774d5661727a685f666173740047726170686963 *737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f436861725f636f6e *5f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *566572746578537065635f436f6c6f72345f636f6e5f696e666f004748437a6953686f775f6c76 *6c31385f636c6f73757265007374675f494e445f325f696e666f0047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a534b *6c697437335f636c6f737572650047726170686963737a6955497a69474c55547a69496e697469 *616c697a7a6174696f6e5f7a644c72356d457a647767656e657269634c656e677468315f656e74 *7279005f5f737467696e69745f47726170686963737a6955497a69474c55547a69436f6c6f726d *617000757064617465537461626c655074725461626c650047726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a54776c6974 *38355f636c6f73757265007265616c6c6f634040474c4942435f322e300072656d496e74656765 *727a685f6661737400726573657447656e53796d5a68004748437a69494f426173655f7a647773 *686f777350726563325f636c6f73757265004748437a6948616e646c655f6175676d656e74494f *4572726f725f656e747279004748437a69546f7048616e646c65725f7265706f7274537461636b *4f766572666c6f775f636c6f73757265007374675f72656d496e743634004748437a6942617365 *5f7a7a65726f496e745f636c6f73757265004748437a69426173655f5a435f7374617469635f65 *6e747279005f5f737467696e69745f466f726569676e7a69437a69537472696e675f004748437a *6948616e646c655f696f657a75636c6f73656448616e646c655f736c6f77004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c *726a52516c697435395f636c6f73757265004748437a694e756d5f6c69745f696e666f00477261 *70686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c *735f7a644c726a5a5a6b6c69743137355f636c6f737572650047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a5a5a536c *766c3537385f636c6f73757265004748437a69494f426173655f6c766c36345f696e666f005f5f *737467696e69745f47726170686963737a6955497a69474c55547a69426567696e5f004748437a *69457863657074696f6e5f6361746368457863657074696f6e5f636c6f73757265005f5f737467 *696e69745f446174617a69436861725f0047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a69457874656e73696f6e735f7a64776363616c6c5f656e747279004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c735f7a644c726a546f6c697438335f636c6f73757265004748437a694c6973745f6c766c3132 *5f656e747279006177616b656e426c6f636b65645175657565004748437a69494f426173655f6c *766c35395f696e666f0047726170686963737a6955497a69474c55547a6954797065735f7a644c *72326a776c766c5f636c6f73757265004748437a69494f426173655f6136375f656e747279006d *696e7573496e74656765727a685f66617374004748437a6948616e646c655f6131385f656e7472 *790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726a52736c697435335f636c6f737572650047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a57 *476c69743133345f636c6f737572650053797374656d7a69456e7669726f6e6d656e745f676f32 *5f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a6951756572795574696c735f7a644c726a55436c69743130325f636c6f7375726500446174 *617a694d617962655f4a7573745f636f6e5f696e666f005f5f737467696e69745f4748437a6953 *7461626c655f005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a69426567696e456e645f004748437a694e756d5f6a746f735f696e666f *004748437a69494f426173655f5265736f7572636556616e69736865645f7374617469635f656e *747279004748437a69494f426173655f496e7465727275707465645f7374617469635f696e666f *00466f726569676e7a6953746f7261626c655f706f6c797a757a64646d706f6b65325f696e666f *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726b62516c69743336395f636c6f737572650047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b30 *616c69743138385f636c6f737572650047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a6951756572795574696c735f7a644c726a594f6c69743136375f636c6f73 *75726500676c5847657450726f63416464726573734152420047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a69566572746578537065635f7a644c72616a5a5a6c *766c34325f696e666f00446174617a694d617962655f4e6f7468696e675f7374617469635f696e *666f004748437a69546f7048616e646c65725f7a644c723153616c766c315f696e666f00477261 *70686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974 *795f7a644c7235796c6c697435375f636c6f737572650047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b356d6c766c36 *36335f636c6f7375726500676c7574506f73745265646973706c61790047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a *53476c697437325f636c6f737572650047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a694361706162696c6974795f7a644c723579446c766c3134335f636c6f73 *75726500646174615f7374617274007274735f6d6b426f6f6c0047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b33636c *69743233355f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a6951756572795574696c735f7a644c726b306d6c69743139315f636c6f737572 *650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374 *726174696f6e5f4b6579626f61726443425f7374617469635f696e666f0047726170686963737a *6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f49646c65 *43425f636c6f73757265007374675f696e69740047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a69466f675f4578705f7374617469635f656e7472790047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726a59616c69743135375f636c6f737572650047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b32416c766c36 *32305f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b *737a69526567697374726174696f6e5f7a644c72334a316c766c32385f656e7472790047726170 *686963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e *5f7a64777a64646d7a675f656e747279004748437a69496e745f4933327a685f7374617469635f *696e666f0047726170686963737a6955497a69474c55547a6954797065735f576865656c55705f *636c6f73757265005f5f737467696e69745f47726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a69436c697070696e675f00676c7574446973706c617946756e630077 *61697457726974657a685f666173740047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a6951756572795574696c735f7a644c726a54676c697438315f636c6f7375 *72650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726b34636c766c3634355f636c6f73757265005f5f737467696e6974 *5f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c557a694572726f *72735f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175 *6572795574696c735f7a644c726b31306c69743230315f636c6f73757265004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c *726a59676c766c3535335f636c6f737572650047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b33386c69743233345f63 *6c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6952 *6567697374726174696f6e5f7a64777a657a655f656e7472790047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6948696e74735f446f6e74436172655f636c6f73 *757265005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a69506978656c52656374616e676c65730047726170686963737a6955497a6947 *4c55547a6943616c6c6261636b737a69526567697374726174696f6e5f74686553636176656e67 *65725f696e666f004748437a69494f426173655f486561704f766572666c6f775f737461746963 *5f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *694361706162696c6974795f7a644c723578426c766c3132375f636c6f73757265004772617068 *6963737a6955497a69474c55547a6957696e646f775f676c757443726561746557696e646f775f *696e666f00466f726569676e7a6953746f7261626c655f7a646653746f7261626c655074725f63 *6c6f73757265006973446f75626c654e656761746976655a65726f004748437a69576f72645f7a *737a65345f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726b35326c766c3635385f636c6f73757265005f5f *737467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a69506978656c446174615f004748437a69457863657074696f6e5f6361746368457863657074 *696f6e5f656e747279004748437a69494f426173655f6c766c35395f656e747279004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f *7a644c726a53456c766c3436365f636c6f73757265004748437a69496e745f636f6d7061726532 *5f696e666f004748437a69494f426173655f5265736f757263654578686175737465645f737461 *7469635f656e747279004748437a6953746f7261626c655f726561645074724f66665074725f63 *6c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *6951756572795574696c735f7a644c726a57576c69743133385f636c6f73757265004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f *7a644c726b38796c69743331385f636c6f737572650047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b396b6c69743333 *305f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b73 *7a6957696e646f775f4d6f757365427574746f6e5f636f6e5f656e747279004772617068696373 *7a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f7a644c723878486139 *305f636c6f73757265005f5f666978756e7364666469005f5f737467696e69745f53797374656d *7a69506f7369787a69496e7465726e616c735f0047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a69566572746578537065635f7a644c72616a586c766c34315f63 *6c6f73757265007374675f73656c5f315f6e6f7570645f656e747279007374675f72616973655f *696e666f0064656c61797a685f66617374005f5f737467696e69745f47726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a69426567696e456e64004748437a69494f42 *6173655f537461636b4f766572666c6f775f7374617469635f656e747279004772617068696373 *7a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f4b657946325f636c6f *73757265005f5f737467696e69745f466f726569676e7a69466f726569676e507472007374675f *61705f365f7570645f696e666f0073746f7054696d6572005f66696e69007374675f6c65496e74 *3634005f5f737467696e69745f4748437a6948616e646c65005f5f737467696e69745f47726170 *686963737a6955497a69474c55547a69426567696e0066636e746c4040474c4942435f322e3000 *4748437a69494f426173655f496c6c6567616c4f7065726174696f6e5f7374617469635f696e66 *6f007274735f6576616c5f0047726170686963737a6952656e646572696e677a694f70656e474c *7a69474c7a69426173696354797065735f456e61626c65645f7374617469635f696e666f004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c735f7a644c726b61636c766c3733385f636c6f73757265004748437a69426173655f497a685f *7374617469635f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c *7a69474c7a6951756572795574696c735f7a644c726b61496c766c3734365f636c6f7375726500 *4748437a69494f426173655f6136335f636c6f737572650047726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c7235764e6c766c *39395f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b *737a69526567697374726174696f6e5f43726f7373696e6743425f7374617469635f656e747279 *0053797374656d7a69456e7669726f6e6d656e745f676574417267735f736c6f77004748437a69 *48616e646c655f6d6b53746448616e646c655f656e747279004d61696e5f66325f636c6f737572 *65004748437a69546f7048616e646c65725f72756e494f5f696e666f00446174617a6946696e69 *74654d61705f6c6f6f6b7570464d5f696e666f005f5f737467696e69745f466f726569676e7a69 *4d61727368616c7a6941727261795f005f5f737467696e69745f436f6e74726f6c7a694d6f6e61 *647a694669785f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6948696e74735f7a644c723366596c6974335f636c6f73757265006765744d426c6f636b0074 *727954616b654d5661727a685f66617374004748437a694e756d5f706c7573496e74656765725f *636c6f7375726500446174617a6946696e6974654d61705f756e6974464d5f656e747279004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c69 *74795f7a644c723577626c766c3130355f636c6f737572650047726170686963737a6955497a69 *474c55547a6954797065735f4d6964646c65427574746f6e5f636c6f7375726500477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a69436f6f72645472616e735f50 *6f736974696f6e5f7374617469635f696e666f0047726170686963737a6955497a69474c55547a *6943616c6c6261636b737a6957696e646f775f4b65794631305f7374617469635f656e74727900 *47726170686963737a6955497a69474c55547a6954797065735f7a644c72326a776c766c5f696e *666f0047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f *775f7a644c7238784a6139315f656e7472790047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b626b6c69743336315f63 *6c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6952 *6567697374726174696f6e5f506173736976654d6f74696f6e43425f7374617469635f696e666f *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726a544b6c766c3438335f636c6f737572650047726170686963737a6955 *497a69474c55547a6943616c6c6261636b737a6957696e646f775f4b65794c6566745f73746174 *69635f656e7472790047726170686963737a6955497a69474c55547a6943616c6c6261636b737a *6957696e646f775f4d6f646966696572735f636f6e5f696e666f0047726170686963737a695549 *7a69474c55547a6943616c6c6261636b737a6957696e646f775f64386f7600466f726569676e7a *694d61727368616c7a6941727261795f706f6b654172726179305f656e74727900477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a *644c726a59796c69743136335f636c6f737572650047726170686963737a6955497a69474c5554 *7a6954797065735f576865656c55705f7374617469635f656e74727900466f726569676e7a6943 *7a69537472696e675f776974684341537472696e675f636c6f73757265005f5f737467696e6974 *5f4748437a69494f0047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a6951756572795574696c735f7a644c726b33416c69743234315f636c6f7375726500474843 *7a69576f72645f7a647766726f6d496e7465676572335f696e666f004748437a69494f42617365 *5f486561704f766572666c6f775f7374617469635f696e666f0066636c6f73654040474c494243 *5f322e31005f5f737467696e69745f4748437a69466f726569676e507472004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c *726b38676c766c3730385f636c6f737572650047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a556b6c766c3439325f63 *6c6f73757265004d61696e5f6d61696e5f636c6f73757265005f5f737467696e69745f4748437a *69494f5f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951 *756572795574696c735f7a644c726b62346c69743335375f636c6f73757265004748437a694861 *6e646c655f7a644c723861706c766c32355f696e666f006765744d426c6f636b73004748437a69 *5061636b5f756e7061636b43537472696e675f656e7472790047726170686963737a6955497a69 *474c55547a69496e697469616c697a7a6174696f6e5f696e697469616c697a7a655f696e666f00 *436f6e74726f6c7a69457863657074696f6e5f7a644c72324a356c766c31345f656e7472790047 *726170686963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174 *696f6e5f57696e646f7753746174757343425f636c6f73757265007374675f696e746572705f63 *6f6e737472375f656e7472790047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a6951756572795574696c735f7a644c726a5a5a756c766c3537325f636c6f737572 *650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726a53696c697436365f636c6f73757265005f5f737467696e69745f47 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69466c7573684669 *6e6973685f004748437a694e756d5f6c766c375f636c6f737572650047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b34 *616c69743235305f636c6f73757265004748437a694e756d5f537a685f636f6e5f656e74727900 *47726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f7a *644c7238784e6139335f696e666f007374675f7570645f6672616d655f345f7265740047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726b324d6c766c3632335f636c6f737572650047726170686963737a6955497a69474c *55547a6943616c6c6261636b737a6957696e646f775f436861725f636f6e5f656e747279006361 *6c634c697665004748437a69494f426173655f6134345f696e666f0047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a56 *456c69743131385f636c6f7375726500737472726368724040474c4942435f322e30005f5f7374 *67696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c557a *694d69706d617070696e67005f5f737467696e69745f446174617a6949785f0047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a69436f6f72645472616e735f506f *736974696f6e5f636f6e5f696e666f004748437a69494f426173655f426c6f636b427566666572 *696e675f636f6e5f656e74727900466f726569676e7a69437a694572726f725f7468726f774572 *726e6f496652657472795f636c6f737572650047726170686963737a6955497a69474c55547a69 *43616c6c6261636b737a69526567697374726174696f6e5f4d6f75736543425f7374617469635f *696e666f0074696d65734040474c4942435f322e30005f5f737467696e69745f446174617a6949 *4f526566004748437a69426173655f46616c73655f636c6f7375726500436f6e74726f6c7a6945 *7863657074696f6e5f7a644c7232495a5a6c766c31315f656e7472790047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a *50756c766c3431375f636c6f73757265004748437a69494f426173655f5065726d697373696f6e *44656e6965645f7374617469635f696e666f0047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a5a5a516c69743138335f *636c6f73757265006361665f6c6973740067657450726f67417267760047726170686963737a69 *55497a69474c55547a6943616c6c6261636b737a6957696e646f775f7a644c7238784c6139325f *696e666f004748437a69426173655f5a435f636f6e5f696e666f007374675f67656e5f626c6f63 *6b0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726a54596c697439325f636c6f737572650047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a50 *596c697433305f636c6f73757265005f5f676d706e5f6763645f310047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a69436f6f72645472616e735f4d6f64656c76 *6965775f7374617469635f696e666f004748437a69496e745f4933327a685f636f6e5f656e7472 *7900446174617a6946696e6974654d61705f7a644c7233686e6c766c31375f696e666f00446174 *617a694d617962655f4a7573745f636f6e5f656e7472790047726170686963737a6955497a6947 *4c55547a6943616c6c6261636b737a69526567697374726174696f6e5f5461626c657442757474 *6f6e43425f7374617469635f656e7472790047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a6951756572795574696c735f7a644c726b35436c766c3636375f636c *6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *51756572795574696c735f7a644c726b34716c69743235345f636c6f73757265005f5f73746769 *6e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c557a6945 *72726f7273496e7465726e616c5f004748437a6948616e646c655f6c766c37365f636c6f737572 *650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726b35516c69743237365f636c6f737572650047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a *4f636c766c3339375f636c6f737572650047726170686963737a6955497a69474c55547a694361 *6c6c6261636b737a6957696e646f775f4b657946325f7374617469635f696e666f004748437a69 *426173655f5a4d5a4e5f636c6f737572650047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a6951756572795574696c735f7a644c726b62616c766c3735335f636c *6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a695769 *6e646f775f7a644c725754676c75744b6579626f617264557046756e635f696e666f007374675f *63617463685f6672616d655f345f726574004748437a695074725f706c75735074725f656e7472 *790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726a51696c697433355f636c6f73757265005f5f737467696e69745f47 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69506978656c5265 *6374616e676c65737a69436f6c6f725461626c65006973446f75626c6544656e6f726d616c697a *65640047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726b37616c766c3639315f636c6f73757265005f5f737467696e6974 *5f446174617a694978007374675f4e4f5f46494e414c495a45525f696e666f004748437a694c69 *73745f7a644c723155536c766c31315f636c6f73757265005f5f737467696e69745f4772617068 *6963737a6955497a69474c55545f0047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a6951756572795574696c735f7a644c726b346b6c766c3634375f636c6f7375 *726500676c75745265736861706546756e63004748437a6948616e646c655f6c766c35375f636c *6f73757265004748437a69546f7048616e646c65725f64735f696e666f005f5f737467696e6974 *5f466f726569676e7a694d61727368616c7a69506f6f6c5f0047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b37596c69 *743330395f636c6f73757265005f5f737467696e69745f47726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6945646765466c61675f0047726170686963737a695549 *7a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f4b6579626f6172 *64557043425f7374617469635f696e666f0047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a6951756572795574696c735f7a644c726b32536c69743233305f636c *6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a695769 *6e646f775f7a644c723878506139345f656e7472790047726170686963737a6955497a69474c55 *547a6943616c6c6261636b737a69526567697374726174696f6e5f537061636562616c6c4d6f74 *696f6e43425f636c6f73757265007374675f535441424c455f4e414d455f696e666f0044617461 *7a6946696e6974654d61705f7a644c7233674e7a64776d6b4272616e63685f636c6f7375726500 *4748437a69494f426173655f6137325f656e747279005f5f737467696e69745f47726170686963 *737a6955497a69474c55547a69446576696365436f6e74726f6c5f004748437a6953686f775f73 *686f77735f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a6951756572795574696c735f676574496e7465676572315f656e747279004772617068 *6963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f *7a64664f726443616c6c6261636b49445f636c6f73757265004748437a6948616e646c655f6c76 *6c37345f636c6f7375726500666f70656e36344040474c4942435f322e31004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c *726b30366c69743138375f636c6f73757265004748437a69494f426173655f6c766c35355f636c *6f73757265004748437a69576f72645f577a685f636f6e5f696e666f0047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b *354f6c766c3637305f636c6f73757265007374675f67635f756e70745f72315f696e666f007374 *675f73656c5f335f6e6f7570645f696e666f007374675f494e445f335f696e666f004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f *7a644c726a58576c766c3534385f636c6f737572650047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b346f6c766c3634 *385f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726a55736c766c3439345f636c6f73757265004772 *6170686963737a6955497a69474c55547a6954797065735f6c766c315f696e666f006765747469 *6d656f666461794040474c4942435f322e300047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b32696c69743232315f63 *6c6f73757265004748437a694c6973745f726576657273655f656e747279004772617068696373 *7a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f7a644c725750676c75 *745370656369616c46756e635f656e747279007374675f41505f535441434b5f696e666f004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c69 *74795f7a64776d616b654361706162696c6974795f696e666f004748437a69496e745f7a64777a *657a655f656e747279004748437a694c6973745f7a644c723155656c766c5f696e666f00466f72 *6569676e7a6953746f7261626c655f706f6c797a757065656b427974654f6666325f636c6f7375 *72650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726a504b6c766c3432315f636c6f737572650047726170686963737a *6955497a69474c55547a6954797065735f5269676874427574746f6e5f636c6f73757265004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c735f7a644c726b33656c766c3633305f636c6f737572650047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c723577376c76 *6c3130345f636c6f73757265004748437a69494f426173655f426c6f636b427566666572696e67 *5f636f6e5f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a694361706162696c6974795f7a644c7235774a6c697433325f636c6f7375726500474843 *7a69494f426173655f6c766c34395f656e7472790047726170686963737a6952656e646572696e *677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b61436c6974333530 *5f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a6951756572795574696c735f7a644c726b364f6c69743239315f636c6f7375726500477261 *70686963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f *6e5f4d6f74696f6e43425f636c6f737572650047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b38306c766c3730345f63 *6c6f73757265004748437a69494f426173655f6c766c34395f636c6f73757265004748437a6945 *72725f7a644c7250616c766c31335f636c6f73757265005f5f737467696e69745f477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a69546578747572696e677a694f *626a65637473004748437a69466c6f61745f467a685f7374617469635f696e666f004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f *7a644c726b39386c69743332375f636c6f737572650047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a574b6c69743133 *355f636c6f73757265004748437a69494f426173655f7a644c7236616d6134395f696e666f0073 *74675f7570645f6672616d655f305f7265740047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b61476c69743335315f63 *6c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *6951756572795574696c735f7a644c726a504f6c766c3432325f636c6f73757265005f5f737467 *696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6956 *65727465784172726179735f005f5f737467696e69745f47726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a695374617465566172004748437a69426173655f497a68 *5f636f6e5f696e666f005f5f737467696e69745f446174617a6945697468657200477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a *644c723578786c766c3132365f636c6f73757265007374675f696e746572705f636f6e7374725f *656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *4361706162696c6974795f7a644c72357a7a426c766c3135385f636c6f7375726500676c456e61 *626c65007374675f61705f355f7570645f656e7472790047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b39776c697433 *33335f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b *737a6957696e646f775f4b65794c6566745f636c6f737572650047726170686963737a6955497a *69474c55547a6943616c6c6261636b737a6957696e646f775f5370656369616c4b65795f636c6f *737572655f74626c00446174617a6946696e6974654d61705f7a644c7233675a5a6c766c355f65 *6e74727900446174617a6946696e6974654d61705f756e6974464d5f636c6f73757265005f5f73 *7467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *6952656374616e676c6573004748437a69494f426173655f7a644c723661656134355f656e7472 *79007374675f626c6f636b5f31004748437a694c6973745f7461696c5f636c6f73757265007374 *675f64756d6d795f7265745f696e666f0074696479416c6c6f636174654c697374730047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726a52386c697434385f636c6f737572650047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b31366c766c3539 *375f636c6f73757265004748437a69494f426173655f57726974654275666665725f636c6f7375 *72650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726b39596c69743334305f636c6f73757265005f5f737467696e6974 *5f4748437a695265616400756e626c6f636b557365725369676e616c730047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c557a694572726f7273496e7465726e616c *5f7a644c7233696e6c766c32305f696e666f0047726170686963737a6955497a69474c55547a69 *43616c6c6261636b737a69526567697374726174696f6e5f537061636562616c6c526f74617465 *43425f7374617469635f696e666f0047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a6951756572795574696c735f7a644c726a4f596c766c3430395f636c6f7375 *7265007374675f63746f695f7265745f44315f696e666f004748437a6948616e646c655f644546 *41554c547a754255464645527a7553495a5a455f696e666f004748437a69494f426173655f7a64 *7773686f777350726563345f656e747279007374675f73656c5f375f7570645f696e666f004748 *437a6948616e646c655f6d6b53746448616e646c655f636c6f73757265004748437a694572725f *6c766c375f696e666f0073746743616c6c6f6342797465730047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b37676c69 *743239385f636c6f73757265004748437a69494f426173655f496e7465727275707465645f7374 *617469635f656e747279004748437a69426173655f5a437a745a435f7374617469635f696e666f *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726a55776c766c3439355f636c6f737572650047726170686963737a6955 *497a69474c55547a6943616c6c6261636b737a6957696e646f775f4b657946315f737461746963 *5f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *4361706162696c6974795f7a644c723578706c766c3132345f636c6f7375726500477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a *644c726b38596c766c3731395f636c6f73757265004748437a69494f426173655f6c766c35305f *696e666f004748437a69576f72645f7a657a65345f636c6f73757265004748437a694c6973745f *706f6c797a757265765f656e747279004748437a69494f426173655f5065726d697373696f6e44 *656e6965645f7374617469635f656e74727900696e74657272757074537467527473007374675f *6765576f72643634004748437a694c6973745f7a644c7231554f6c766c395f656e747279004748 *437a6948616e646c655f7a644c723861706c766c32355f636c6f73757265004748437a6948616e *646c655f7769746848616e646c657a757a715f696e666f007374675f6571576f72643634004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c735f7a644c726b30796c69743139345f636c6f73757265007274735f61726763004772617068 *6963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f4b6579537461 *74655f636c6f737572655f74626c00446174617a694d617962655f4e6f7468696e675f636c6f73 *75726500736967656d7074797365744040474c4942435f322e300047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b6265 *6c766c3735345f636c6f73757265004748437a694c6973745f7a644c72397a7a7072656c7a756c *6973747a757374725f696e666f004748437a69466c6f61745f447a685f636f6e5f656e74727900 *4748437a69494f426173655f6c766c36305f696e666f005f5f737467696e69745f477261706869 *63737a6955497a69474c55547a69446562756767696e675f004748437a6953746f7261626c655f *77726974655074724f66665074725f656e7472790047726170686963737a6952656e646572696e *677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a5a5a6f6c69743137 *365f636c6f73757265005f5f737467696e69745f47726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a694576616c7561746f72735f0047726170686963737a6955497a *69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a644c7233484e6c *766c32345f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a6951756572795574696c735f7a644c726b61736c766c3734325f636c6f73757265 *0047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f *7a644c72574e676c75745370656369616c557046756e635f696e666f005f5f737467696e69745f *53797374656d7a69494f7a694572726f725f004748437a69494f426173655f5061747465726e4d *617463684661696c5f636f6e5f656e747279007374675f73656c5f31305f6e6f7570645f696e66 *6f007374675f776f7264546f576f72643634004748437a69494f426173655f494f457863657074 *696f6e5f7374617469635f696e666f0047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a6951756572795574696c735f7a644c726b36696c69743238335f636c6f73 *757265005f5f737467696e69745f47726170686963737a6955497a69474c55547a69436f6c6f72 *6d61705f004748437a69546f7048616e646c65725f7a644c723153636c766c325f656e74727900 *7374675f67635f7574004748437a69494f426173655f6c766c36335f636c6f7375726500474843 *7a69494f426173655f6136345f696e666f0047726170686963737a6955497a69474c55547a6943 *616c6c6261636b737a69526567697374726174696f6e5f7a64646d6d6178315f656e747279005f *5f737467696e69745f47726170686963737a6955497a69474c55547a6943616c6c6261636b737a *6957696e646f775f007374675f696e746572705f636f6e737472315f656e747279004748437a69 *494f426173655f6137305f696e666f004748437a694572725f7a644c7250616c766c31335f696e *666f004748437a694c6973745f6c766c31325f636c6f73757265005f5f737467696e69745f4772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69466f675f00673000 *4748437a69494f426173655f6c766c36315f696e666f0047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a58306c697431 *33395f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a694361706162696c6974795f7a644c72357a7a626c697437305f636c6f737572650074 *696d6573496e74656765727a685f66617374004748437a69576f72645f66726f6d496e74656765 *72335f636c6f73757265004748437a69494f426173655f4173796e63457863657074696f6e5f73 *74617469635f696e666f00616c6c6f63537472486173685461626c650047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b *63636c766c3736395f636c6f73757265004748437a69494f426173655f5265736f757263654275 *73795f7374617469635f696e666f0047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a6951756572795574696c735f7a644c726a58386c69743134315f636c6f7375 *72650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726b36516c766c3638365f636c6f737572650047726170686963737a *6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f49646c65 *43425f7374617469635f656e747279004748437a69426173655f5a4d5a4e5f7374617469635f69 *6e666f004748437a694c6973745f7a64776c656e5f636c6f73757265005f5f737467696e69745f *466f726569676e7a69507472004748437a69494f426173655f7a647773686f777350726563355f *656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *51756572795574696c735f7a644c726b35756c766c3636355f636c6f7375726500477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a *644c723576526c766c3130305f636c6f73757265004748437a694c6973745f7a644c7231554f6c *766c395f636c6f73757265004748437a69494f426173655f446561646c6f636b5f737461746963 *5f696e666f0047726170686963737a6955497a69474c55547a6943616c6c6261636b737a695265 *67697374726174696f6e5f537061636562616c6c427574746f6e43425f7374617469635f696e66 *6f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726b39716c766c3732365f636c6f737572650047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f436170466f *675f636c6f73757265004748437a69466c6f61745f447a685f636f6e5f696e666f004748437a69 *494f426173655f4e6f6e5465726d696e6174696f6e5f636c6f73757265004748437a6942617365 *5f6d61705f636c6f73757265007374675f61705f705f696e666f00676c75744b6579626f617264 *557046756e630047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *694361706162696c6974795f7a644c723578626c697433395f636c6f7375726500477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a *644c723576446c697431355f636c6f737572650047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b37366c766c3639305f *636c6f7375726500616c6c6f6361746550696e6e65640047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b36436c697432 *38385f636c6f7375726500657869744040474c4942435f322e30004748437a69494f426173655f *416c72656164794578697374735f7374617469635f696e666f004748437a69494f426173655f42 *75666665725f7374617469635f656e747279004748437a694572725f756e646566696e65645f65 *6e7472790047726170686963737a6955497a69474c55547a69496e697469616c697a7a6174696f *6e5f5247424d6f64655f636c6f73757265004748437a69494f426173655f556e73617469736669 *6564436f6e73747261696e74735f7374617469635f656e747279004748437a69576f72645f746f *496e7465676572325f636c6f737572650047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a694361706162696c6974795f7a644c72357a7a646c766c3135325f636c *6f7375726500446174617a6946696e6974654d61705f456d707479464d5f7374617469635f696e *666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69436170 *6162696c6974795f7a644c72357a7a486c697437385f636c6f7375726500446174617a6946696e *6974654d61705f64656c46726f6d464d5f656e74727900676c436c656172004748437a6948616e *646c655f7a64776175676d656e74494f4572726f725f696e666f004748437a69466c6f61745f46 *7a685f636f6e5f696e666f00446174617a6946696e6974654d61705f7a644c72336872706f6c79 *7a756661696c5f656e747279004748437a69494f426173655f4572726f7243616c6c5f73746174 *69635f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f7a644c726b63456c766c3737365f636c6f73757265005f5f7374 *67696e69745f47726170686963737a6955497a69474c55547a6951756572795574696c735f0047 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574 *696c735f7a644c726b38696c69743331345f636c6f73757265005f5f737467696e69745f477261 *70686963737a6955497a69474c55547a6951756572795574696c730047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a69436f6f72645472616e735f61325f696e66 *6f004748437a6948616e646c655f6c766c39345f696e666f0047726170686963737a6955497a69 *474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f6c766c5f696e666f00 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6948696e74735f *7a647768696e745f656e7472790047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a694361706162696c6974795f7a644c72357a7a7a7a6c697437365f636c6f7375 *72650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726a55326c697439335f636c6f73757265007374675f6170706c795f *696e746572705f696e666f0053797374656d7a69456e7669726f6e6d656e745f676f5f636c6f73 *7572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175 *6572795574696c735f7a644c726a576d6c69743132395f636c6f73757265004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6948696e74735f7a647768696e745f *696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951 *756572795574696c735f7a644c726a52716c766c3434375f636c6f737572650047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a6948696e74735f466f675f737461 *7469635f696e666f005f5f737467696e69745f4748437a69576f7264004748437a69494f426173 *655f426c6f636b427566666572696e675f7374617469635f696e666f0047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b *61456c766c3734355f636c6f73757265004748437a69426173655f46616c73655f737461746963 *5f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *6951756572795574696c735f7a644c726a55556c766c3530315f636c6f73757265007761697452 *6561647a685f66617374004748437a69494f426173655f494f4572726f725f7374617469635f69 *6e666f005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a6945646765466c61670047726170686963737a6955497a69474c55547a694361 *6c6c6261636b737a69526567697374726174696f6e5f7a644c723348506c766c32355f636c6f73 *7572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175 *6572795574696c735f7a644c726a54366c766c3437335f636c6f73757265007374675f73656c5f *375f6e6f7570645f696e666f0047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a6948696e74735f7a644c723366796c766c5f656e7472790047726170686963737a *6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f446f776e5f7374617469 *635f656e74727900696e697453746174730047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a6951756572795574696c735f7a644c726b39736c69743333325f636c *6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *51756572795574696c735f7a644c726b39696c766c3732345f636c6f7375726500477261706869 *63737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a *64646d6d696e315f656e7472790071756f74496e74656765727a685f66617374005f5f73746769 *6e69745f546578747a6953686f775f0047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a694361706162696c6974795f7a644c723579526c697436355f636c6f7375 *7265005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a69526173746572506f735f00446174617a6946696e6974654d61705f7a644c7233 *67546c766c325f656e7472790047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a6951756572795574696c735f7a644c726b34756c69743235355f636c6f73757265 *004748437a694c6973745f7a64777370616e5f656e747279007374675f73656c5f385f7570645f *656e74727900636d70496e7465676572496e747a685f66617374004748437a69576f72645f5731 *367a685f7374617469635f656e7472790047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a6951756572795574696c735f7a644c726a59416c766c3535385f636c6f *73757265004748437a69426173655f5a43444f72645f636f6e5f696e666f004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c *723577646c697432345f636c6f737572650053797374656d7a69506f7369787a69496e7465726e *616c735f7a64776363616c6c36375f636c6f737572650047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a59456c766c35 *35395f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b *737a69526567697374726174696f6e5f7a644c72334852676f5f696e666f004748437a6948616e *646c655f64454641554c547a754255464645527a7553495a5a455f636c6f73757265007374675f *73656c5f365f7570645f656e747279004748437a6948616e646c655f6175676d656e74494f4572 *726f725f636c6f73757265007374675f63746f695f7265745f5231756e70745f696e666f004772 *6170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f4b6579 *4631315f7374617469635f696e666f0047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a6948696e74735f466f675f636c6f73757265007374675f494e445f375f69 *6e666f00616c6c6f6347726f7570004748437a6948616e646c655f7a6477777269746552617742 *75666665725f736c6f77004748437a69494f426173655f46696c6548616e646c655f7374617469 *635f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f7a644c726b34306c766c3634325f636c6f73757265004748437a *69494f426173655f446561646c6f636b5f7374617469635f656e747279004748437a69496e745f *4933327a685f636f6e5f696e666f00616c6c6f635f626c6f636b735f6c696d0047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a64 *4c726a4f476c697431305f636c6f73757265007274735f676574496e7438004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c *726b63776c766c3737345f636c6f73757265005f5f737467696e69745f47726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6942617369635479706573004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f *7a644c723578506c697434395f636c6f737572650047726170686963737a6955497a69474c5554 *7a6943616c6c6261636b737a69526567697374726174696f6e5f4d656e7553746174757343425f *7374617469635f656e74727900466f726569676e7a69437a694572726f725f7a64776363616c6c *325f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a694361706162696c6974795f7a644c7235775a5a6c697433365f636c6f73757265004748 *437a6953686f775f7a647773686f775369676e6564496e745f656e747279004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6948696e74735f466173746573745f *636c6f73757265007374674d616c6c6f6342797465730062617266005f5f737467696e69745f47 *48437a695354004748437a694572725f6572726f725f656e7472790047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a50 *676c697431395f636c6f73757265005f5f737467696e69745f4d61696e00436f6e74726f6c7a69 *457863657074696f6e5f7a644c72324a646c766c31365f696e666f005f65646174610047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726a53796c697437305f636c6f737572650047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b386f6c766c3731 *305f636c6f73757265004748437a694572725f7a644c724f516c766c335f696e666f0047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726a4f496c766c3430355f636c6f737572650047726170686963737a6955497a69474c *55547a69496e697469616c697a7a6174696f6e5f696e697469616c697a7a655f656e747279005f *5f693638362e6765745f70635f7468756e6b2e6278004748437a6948616e646c655f6765744275 *666665725f636c6f73757265004748437a695765616b5f72756e46696e616c697a7a6572426174 *63685f656e747279007374675f61705f707070707070705f726574004d616c6c6f634661696c48 *6f6f6b0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175 *6572795574696c735f7a644c726b394b6c766c3733315f636c6f73757265004772617068696373 *7a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f636f6d *70617265315f636c6f73757265005f474c4f42414c5f4f46465345545f5441424c455f00667265 *654040474c4942435f322e30004748437a69576f72645f7369676e756d335f636c6f7375726500 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565727955 *74696c735f7a644c726b30576c69743230305f636c6f737572650047726170686963737a695549 *7a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a737a65315f63 *6c6f73757265004748437a6948616e646c655f6131385f636c6f73757265005f5f737467696e69 *745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c557a694e5552 *42535f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175 *6572795574696c735f7a644c726b37736c69743330315f636c6f73757265005f656e640061746f *6d69634d6f646966794d75745661727a685f66617374007374675265616c6c6f63427974657300 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565727955 *74696c735f7a644c726a5a5a346c69743137315f636c6f73757265004748437a69494f42617365 *5f7a6457494f5f656e747279007374675f494e544c494b455f636c6f73757265004748437a6949 *4f426173655f45786974537563636573735f7374617469635f656e747279004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c *72357a7a666c697437315f636c6f737572650047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a59656c69743135385f63 *6c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *6951756572795574696c735f7a644c726a51716c697433375f636c6f7375726500477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a6948696e74735f466173746573 *745f7374617469635f696e666f007374675f63617463685f6672616d655f315f72657400477261 *70686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f4b657946 *335f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726b37456c69743330345f636c6f73757265004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c735f7a644c726b35656c766c3636315f636c6f73757265007374675f73656c5f31345f6e6f75 *70645f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a6951756572795574696c735f7a644c726a586f6c69743134355f636c6f7375726500477261 *70686963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f *6e5f5370656369616c557043425f7374617469635f696e666f00616c6c6f634e75727365726965 *7300726576657274434146730047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a6951756572795574696c735f7a644c726a58596c69743135345f636c6f73757265 *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726b38776c766c3731325f636c6f737572650047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c723579 *6a6c766c3133385f636c6f7375726500436f6e74726f6c7a69457863657074696f6e5f7a644c72 *324a396b5f696e666f007274735f6d6b576f7264380047726170686963737a6955497a69474c55 *547a6943616c6c6261636b737a6957696e646f775f64386f78007374675f73656c5f365f6e6f75 *70645f696e666f0047726170686963737a6955497a69474c55547a69496e697469616c697a7a61 *74696f6e5f7a64776c676f5f656e74727900446174617a6946696e6974654d61705f7a644c7233 *67526c766c315f656e747279005f5f737467696e69745f466f726569676e7a6953746f7261626c *655f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69436170 *6162696c6974795f7a644c7235754a6c697431315f636c6f7375726500466f726569676e7a6943 *7a694572726f725f7a644c723257747a64776363616c6c5f656e7472790070726f675f62656c63 *68004748437a69494f426173655f6c766c35385f636c6f737572650047726170686963737a6955 *497a69474c55547a6943616c6c6261636b737a6957696e646f775f4b6579446f776e5f73746174 *69635f656e747279005f5f737467696e69745f4748437a695074720047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6948696e74735f7a644c723366796c766c5f *636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f7a6477636c6970506c616e65496e646578546f456e756d5f656e *747279004748437a69426173655f756e7061636b417070656e6443537472696e677a685f636c6f *73757265004748437a69576f72645f616273335f636c6f73757265004d61696e5f66315f636c6f *737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951 *756572795574696c735f7a644c726b32306c766c3631315f636c6f737572650047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a64 *4c726a54576c766c3438365f636c6f737572650047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6951756572795574696c735f6d61727368616c476574504e616d *655f696e666f005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a69446973706c61794c697374735f004748437a69494f426173655f6c76 *6c36325f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c *7a69474c7a694361706162696c6974795f7a644c723578526c766c3133315f636c6f7375726500 *5f5f737467696e69745f4748437a694e756d5f0047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a57636c766c3532315f *636c6f73757265006e6578745f70656e64696e675f68616e646c6572007374675f7374726c656e *004748437a69576f72645f7a6477746f496e7465676572315f636c6f73757265005f5f6873636f *72655f6765745f73617665645f7465726d696f730047726170686963737a6952656e646572696e *677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a58756c766c353431 *5f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a6951756572795574696c735f7a644c726a576b6c766c3532335f636c6f73757265005f5f73 *7467696e69745f4748437a69494f42617365004748437a69426173655f6c766c375f656e747279 *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69436f6f7264 *5472616e735f53697a7a655f7374617469635f656e747279005f5f737467696e69745f47726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a695065656b506f6b655f00 *6d7954687265616449647a685f666173740047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a6951756572795574696c735f7a644c726b30596c766c3539355f636c *6f73757265007374675f494e445f305f696e666f0047726170686963737a6952656e646572696e *677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a58416c6974313438 *5f636c6f73757265007374675f63617463685f6672616d655f335f726574004772617068696373 *7a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f64386f45004748437a *69494f426173655f6136355f636c6f737572650047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a51346c766c3432365f *636c6f73757265007374675f67635f64315f696e666f006973617474794040474c4942435f322e *300047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726a54536c766c3438355f636c6f73757265004748437a69494f426173 *655f6c766c35365f656e747279004748437a694c6973745f7a64776c656e5f696e666f00474843 *7a694572725f6c766c395f656e747279007374675f61705f705f7265740047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c72 *357a7a5a5a6c766c3136345f636c6f737572650047726170686963737a6955497a69474c55547a *6943616c6c6261636b737a69526567697374726174696f6e5f7a657a65315f656e747279006d65 *6d7365744040474c4942435f322e30007374675f73656c5f31355f7570645f696e666f00474843 *7a6948616e646c655f6175676d656e74494f4572726f725f696e666f0047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b *63346c766c3736375f636c6f7375726500736d616c6c5f616c6c6f635f6c697374004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f *7a644c726a55496c766c3439385f636c6f737572650047726170686963737a6955497a69474c55 *547a6943616c6c6261636b737a6957696e646f775f4b657946395f7374617469635f656e747279 *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726b394d6c69743333375f636c6f737572650047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b31 *386c69743230335f636c6f737572650047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a6951756572795574696c735f7a644c726a5a5a676c69743137345f636c6f *73757265005f5f737467696e69745f4748437a69556e69636f64650047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b31 *656c766c3539395f636c6f73757265004d61696e5f53746174655f696e666f0047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a64 *4c726b394f6c766c3733325f636c6f737572650047726170686963737a6955497a69474c55547a *6943616c6c6261636b737a6957696e646f775f4b6579446f776e5f636c6f737572650047726170 *686963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e *5f4b6579626f61726443425f7374617469635f656e747279004748437a6948616e646c655f696f *657a756e6f745772697461626c655f636c6f737572650047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b39476c766c37 *33305f636c6f73757265005f5f7374675f67635f656e7465725f310053797374656d7a69456e76 *69726f6e6d656e745f676574417267735f656e7472790047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a55306c766c34 *38375f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a694361706162696c6974795f7a644c72357a7a786c766c3135375f636c6f7375726500 *4748437a69426173655f5a434445715f7374617469635f656e7472790047726170686963737a69 *55497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f4a6f797374 *69636b43425f7374617469635f656e747279005f5f737467696e69745f546578747a6950617273 *6572436f6d62696e61746f72737a6952656164500047726170686963737a6952656e646572696e *677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b63366c6974333733 *5f636c6f73757265007374675f756e636865636b6564495368696674524c363400477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a *644c726a58556c69743135335f636c6f7375726500446174617a6946696e6974654d61705f7a64 *4c7233686e6c766c31375f636c6f73757265004748437a69496e745f4936347a685f7374617469 *635f656e7472790047726170686963737a6955497a69474c55547a6943616c6c6261636b737a69 *57696e646f775f6138385f636c6f737572650047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b62306c69743335365f63 *6c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *6951756572795574696c735f7a644c726a52416c697435355f636c6f7375726500477261706869 *63737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a *64777a657a655f636c6f737572650053746752756e0047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b36416c766c3638 *325f636c6f73757265004748437a69576f72645f5733327a685f636f6e5f696e666f007374675f *737461636b5f736176655f656e7472696573007374675f67635f756e70745f72310073746f7054 *69636b65720047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *51756572795574696c735f7a644c726b34386c766c3634345f636c6f737572650071756f745265 *6d496e74656765727a685f666173740047726170686963737a6955497a69474c55547a6943616c *6c6261636b737a69526567697374726174696f6e5f7a644c723348566c766c32375f636c6f7375 *7265007274735f676574496e740047726170686963737a6955497a69474c55547a6943616c6c62 *61636b737a69526567697374726174696f6e5f7a64646d7a677a65315f656e7472790047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a69436f6f72645472616e73 *5f7a6457506f736974696f6e5f656e747279004748437a69576f72645f7a647766726f6d496e74 *65676572335f636c6f73757265004748437a6948616e646c655f6132345f696e666f004748437a *69494f426173655f5265736f757263654578686175737465645f636c6f73757265004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f *7a644c726a56516c69743132315f636c6f73757265006c6162656c5468726561647a685f666173 *740047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726b36736c766c3638305f636c6f737572650053797374656d7a69456e *7669726f6e6d656e745f67657450726f674e616d655f696e666f007274735f756e6c6f636b0047 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574 *696c735f7a644c726b314f6c766c3630385f636c6f7375726500696e7465727072657442434f00 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565727955 *74696c735f7a644c726a50616c766c3431325f636c6f737572650047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c72357752 *6c697433345f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c557a694572726f7273496e7465726e616c5f7265636f72644572726f72436f6465 *5f696e666f005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a69436f6c6f7273005f5f737467696e69745f47726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a69506f696e74506172616d6574657200737467 *5f67635f6e6f726567730047726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a6951756572795574696c735f7a644c726a4f556c766c3430385f636c6f737572650046 *6f726569676e7a6953746f7261626c655f6c766c5f636c6f73757265007374675f73656c5f315f *7570645f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726a53616c697436345f636c6f7375726500737467 *5f494e445f4f4c4447454e5f696e666f007374675f61705f315f7570645f696e666f004748437a *69494f426173655f6c766c34365f656e747279004748437a69576f72645f7a6d335f636c6f7375 *7265007374675f6c65576f726436340047726170686963737a6952656e646572696e677a694f70 *656e474c7a69474c7a69566572746578537065635f7a644c72616a586c766c34315f656e747279 *005f5f737467696e69745f546578747a6952656164004748437a69426173655f666f6c64725f65 *6e747279007374675f61705f345f7570645f656e747279007374675f61705f665f696e666f0073 *74675f696e743634546f496e740047726170686963737a6955497a69474c55547a6943616c6c62 *61636b737a6957696e646f775f6c766c335f636c6f737572650047726170686963737a6955497a *69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a64646d7a6c7a65 *315f696e666f007374726e6370794040474c4942435f322e30005f5f737467696e69745f446174 *617a695475706c650047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a6951756572795574696c735f7a644c726a54736c697438345f636c6f737572650047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6942617369635479706573 *5f44697361626c65645f7374617469635f656e7472790047726170686963737a6955497a69474c *55547a6943616c6c6261636b737a69526567697374726174696f6e5f5669736962696c69747943 *425f636c6f73757265004748437a694e756d5f706c7573496e74656765725f656e747279004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c735f7a644c726a594d6c766c3536315f636c6f737572650047726170686963737a6955497a69 *474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a64646d6d696e315f *696e666f004748437a69494f426173655f54696d65457870697265645f7374617469635f696e66 *6f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726b61616c69743334335f636c6f737572650047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a *55676c766c3439315f636c6f7375726500636c6f737572655f666c616773004748437a694e756d *5f6c69745f636c6f73757265005f5f737467696e69745f4748437a6953545265665f0047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c73 *5f7a644c726a58326c766c3533345f636c6f73757265007274735f6d6b496e743800466f726569 *676e7a69437a694572726f725f6572726e6f546f494f4572726f725f636c6f7375726500477261 *70686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c *735f7a644c726b31496c69743231325f636c6f737572650047726170686963737a6955497a6947 *4c55547a6943616c6c6261636b737a6957696e646f775f4b657946385f7374617469635f696e66 *6f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6943617061 *62696c6974795f7a644c723579666c766c3133375f636c6f73757265007374675f494e445f5045 *524d5f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f7a644c726b39366c766c3732315f636c6f737572650047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6948696e74735f7a647768 *696e745f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c *7a69474c7a6951756572795574696c735f7a644c726b34736c766c3634395f636c6f7375726500 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69436f6f726454 *72616e735f7a6457506f736974696f6e5f696e666f007374675f6e65496e743634004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f *7a644c726b33576c766c3634315f636c6f73757265005f5f737467696e69745f47726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a69536176696e675374617465005f *5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a69506978656c52656374616e676c65737a69506978656c4d61705f0047726170686963737a *6955497a69474c55547a69496e697469616c697a7a6174696f6e5f7a644c72356d47676f315f69 *6e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361 *706162696c6974795f7a644c723578586c697435315f636c6f737572650047726170686963737a *6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f4b6579486f6d655f7374 *617469635f656e747279005f5f737467696e69745f47726170686963737a6952656e646572696e *677a694f70656e474c7a69474c7a69436f6d70617269736f6e46756e6374696f6e004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f *7a644c726b33676c69743233365f636c6f737572650047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a5a5a736c697431 *37375f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b *737a69526567697374726174696f6e5f537061636562616c6c526f7461746543425f636c6f7375 *72650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726a554b6c69743130345f636c6f73757265005f5f676d707a5f7464 *69765f71004748437a69494f426173655f4c696e65427566666572696e675f7374617469635f69 *6e666f007374675f67635f66756e5f696e666f0047726170686963737a6955497a69474c55547a *6943616c6c6261636b737a69526567697374726174696f6e5f636f6d70617265325f696e666f00 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565727955 *74696c735f7a644c726a54516c697439305f636c6f737572650047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b32636c *766c3631345f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c62 *61636b737a69526567697374726174696f6e5f4a6f79737469636b43425f636c6f737572650047 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574 *696c735f7a644c726a56366c766c3530345f636c6f73757265007374675f61705f7070765f7265 *74004748437a69494f426173655f4f746865724572726f725f7374617469635f656e7472790047 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574 *696c735f7a644c726a54386c697437395f636c6f737572650047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b32656c69 *743232305f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261 *636b737a6957696e646f775f4d6f757365427574746f6e5f636f6e5f696e666f00477261706869 *63737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f63 *6f6d70617265325f636c6f737572650047726170686963737a6955497a69474c55547a6943616c *6c6261636b737a6957696e646f775f7a644c725754676c75744b6579626f617264557046756e63 *5f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a6951756572795574696c735f7a644c726a59476c69743136355f636c6f7375726500436f6e *74726f6c7a69457863657074696f6e5f7a644c72324a666c766c31375f636c6f73757265004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695072696d69746976 *654d6f64655f547269616e676c65735f7374617469635f656e74727900616c6c6f636174650047 *48437a69576f72645f66726f6d496e7465676572335f656e7472790047726170686963737a6955 *497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a64646d7a67 *7a65315f636c6f73757265005f5f737467696e69745f53797374656d7a69494f004748437a6949 *4f426173655f4e6f537563685468696e675f7374617469635f696e666f0047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c72 *6b35576c766c3637325f636c6f737572650053797374656d7a69456e7669726f6e6d656e745f67 *6f5f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *6951756572795574696c735f7a644c726b624b6c766c3736325f636c6f73757265004748437a69 *4e756d5f7a647771756f7452656d496e74656765725f696e666f00446174617a6946696e697465 *4d61705f756e6974464d5f696e666f006b696c6c5468726561647a685f66617374004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f *7a644c726a56306c69743130385f636c6f737572650047726170686963737a6952656e64657269 *6e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a526b6c69743531 *5f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a *6957696e646f775f6d616b655265736861706543616c6c6261636b5f696e666f00477261706869 *63737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f64386f43005f5f *696e69745f61727261795f7374617274004d61696e5f7a6467746f53746174655f656e74727900 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565727955 *74696c735f7a644c726a54306c697437375f636c6f737572650047726170686963737a6955497a *69474c55547a6943616c6c6261636b737a6957696e646f775f4b657955705f7374617469635f65 *6e7472790047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e *646f775f7a644c725754676c75744b6579626f617264557046756e635f656e747279005f5f7374 *67696e69745f546578747a69526561645f004748437a69426173655f547275655f737461746963 *5f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *694361706162696c6974795f7a644c723541316c697438335f636c6f73757265007374675f6170 *5f6e5f696e666f006e6577434146004748437a694e756d5f7a647771756f7452656d496e746567 *65725f656e747279007374675f63617463685f6672616d655f696e666f005f5f6d6f6464693300 *4748437a69546f7048616e646c65725f746f7048616e646c65725f696e666f005f5f737467696e *69745f4748437a6948616e646c655f004748437a69494f426173655f494f4572726f725f636f6e *5f696e666f006465526566537461626c655074720047726170686963737a6955497a69474c5554 *7a6943616c6c6261636b737a69526567697374726174696f6e5f7a657a655f636c6f7375726500 *47726170686963737a6955497a69474c55547a6943616c6c6261636b737a695265676973747261 *74696f6e5f4f7665726c6179446973706c617943425f636c6f73757265007374675f73656c5f31 *315f7570645f696e666f005f5f676d705f7365745f6d656d6f72795f66756e6374696f6e730047 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574 *696c735f7a644c726b32596c766c3632365f636c6f7375726500466f726569676e7a694d617273 *68616c7a6941727261795f7769746841727261794c656e305f696e666f005f5f737467696e6974 *5f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69436f6c6f72 *735f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726b31756c766c3630335f636c6f737572650062656c6368005f5f73 *7467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *69506978656c52656374616e676c65737a694d696e6d61780047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a56756c76 *6c3531305f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a6951756572795574696c735f7a644c726a5a5a636c69743137335f636c6f737572 *650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726a51456c766c3433355f636c6f737572650047726170686963737a69 *55497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f5461626c65 *744d6f74696f6e43425f7374617469635f656e7472790047726170686963737a6952656e646572 *696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c723576646c766c39 *305f636c6f73757265004748437a69576f72645f7a6d335f696e666f004748437a6948616e646c *655f696f657a75636c6f73656448616e646c655f696e666f0047726170686963737a6955497a69 *474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f4469616c7343425f63 *6c6f73757265007274735f6d6b576f7264005f5f737467696e69745f436f6e74726f6c7a694d6f *6e61647a6946697800466f726569676e7a6953746f7261626c655f706f6c797a75616c69676e6d *656e74325f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726a4f366c6974315f636c6f73757265005f494f5f *737464696e5f75736564005f5f737467696e69745f466f726569676e7a695074725f0047726170 *686963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e *5f73657443616c6c6261636b5f696e666f004748437a694572725f7061744572726f725f696e66 *6f007374675f756e626c6f636b4173796e63457863657074696f6e737a685f7265745f656e7472 *79007363686564756c655468726561640047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a6951756572795574696c735f7a644c726b33456c69743234325f636c6f *73757265004748437a69546f7048616e646c65725f6b5f636c6f73757265005f5f737467696e69 *745f466f726569676e0047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726a50366c766c3431315f636c6f73757265004772 *6170686963737a6955497a69474c55547a6954797065735f5269676874427574746f6e5f737461 *7469635f696e666f0047726170686963737a6955497a69474c55547a6943616c6c6261636b737a *6957696e646f775f7a644c723878486139305f656e747279005f5f737467696e69745f466f7265 *69676e7a694d61727368616c7a69416c6c6f635f0047726170686963737a6955497a69474c5554 *7a6943616c6c6261636b737a6957696e646f775f4b657946335f7374617469635f696e666f0047 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c *6974795f7a644c72357a7a526c766c3136325f636c6f737572650047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b6177 *6c766c3734335f636c6f737572650047726170686963737a6955497a69474c55547a6954797065 *735f5269676874427574746f6e5f7374617469635f656e747279004748437a69494f426173655f *6137315f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a69436f6f72645472616e735f4d6f64656c766965775f636f6e5f656e747279004772617068 *6963737a6955497a69474c55547a69496e697469616c697a7a6174696f6e5f7a644c72356d4767 *6f315f636c6f73757265004748437a6953686f775f69746f735f636c6f73757265004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f *7a644c726b30346c766c3538315f636c6f73757265004d61696e5f53746174655f656e74727900 *436f6e74726f6c7a69457863657074696f6e5f7a644c7232497a7a7a64776c766c5f696e666f00 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565727955 *74696c735f7a644c726a57796c69743133325f636c6f737572650073636176656e6765645f7374 *617469635f6f626a65637473005f5f737467696e69745f446174617a6944796e616d696300436f *6e74726f6c7a69457863657074696f6e5f7a644c72324a316c766c31325f636c6f737572650047 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c *6974795f7a644c72357a7a4e6c766c3136315f636c6f737572650047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a5343 *6c697437315f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c62 *61636b737a6957696e646f775f7a644c7238774c7a6477756e6d61727368616c5370656369616c *4b65795f656e747279007374675f61705f6c5f7265740047726170686963737a6955497a69474c *55547a6943616c6c6261636b737a6957696e646f775f6d616b655265736861706543616c6c6261 *636b5f636c6f73757265005f5f737467696e69745f47726170686963737a6952656e646572696e *677a694f70656e474c7a69474c7a694275666665724d6f64650047726170686963737a6955497a *69474c55547a6943616c6c6261636b737a6957696e646f775f6d616b655265736861706543616c *6c6261636b5f656e74727900466f726569676e7a694d61727368616c7a6941727261795f706f6b *654172726179305f696e666f007374675f73656c5f345f6e6f7570645f656e7472790047726170 *686963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e *5f4f7665726c6179446973706c617943425f7374617469635f696e666f007363686564756c6557 *61697454687265616400696e743634546f496e74656765727a685f66617374004748437a694572 *725f7a644c724f516c766c335f656e7472790047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b34436c69743235375f63 *6c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6952 *6567697374726174696f6e5f7a64777a64646d7a675f636c6f737572650047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c72 *6b366d6c69743238345f636c6f737572650047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a694361706162696c6974795f7a644c7235785a5a6c766c3133335f63 *6c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *694361706162696c6974795f7a644c723578666c697434305f636c6f7375726500477261706869 *63737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a *644c726b63516c766c3737395f636c6f73757265005f5f737467696e69745f446174617a69426f *6f6c5f004748437a6953686f775f5a434453686f775f7374617469635f656e74727900466f7265 *69676e7a69437a69537472696e675f776974684341537472696e674c656e5f696e666f00446174 *617a6946696e6974654d61705f706f6c797a7564656c6574654d696e5f656e7472790047726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c697479 *5f7a644c72357a7a506c697438305f636c6f73757265004748437a69576f72645f5731367a685f *636f6e5f696e666f0047726170686963737a6955497a69474c55547a6943616c6c6261636b737a *69526567697374726174696f6e5f7a64777a64646d7a6c5f636c6f737572650047726170686963 *737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a64 *646d7a6c315f696e666f007274735f6d6b576f726436340047726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b35716c766c *3636345f636c6f73757265004748437a69546f7048616e646c65725f72756e494f5f636c6f7375 *72650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69457874 *656e73696f6e735f6c766c5f636c6f73757265007374675f64756d6d795f7265745f656e747279 *00636d705f746872656164004748437a69494f426173655f7a644c7236616f6135305f636c6f73 *757265004748437a69426173655f47545f7374617469635f656e7472790047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c72 *6b37696c766c3639335f636c6f73757265006d6b5765616b7a685f666173740047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a64 *4c726a50456c697432355f636c6f7375726500466f726569676e7a69437a69537472696e675f7a *64777065656b4341537472696e675f696e666f004748437a69576f72645f57387a685f636f6e5f *696e666f007374675f63617463685f6672616d655f375f72657400676c4973456e61626c656400 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565727955 *74696c735f7a644c726a57366c69743132355f636c6f737572650047726170686963737a695549 *7a69474c55547a6943616c6c6261636b737a6957696e646f775f7a644c725872756e6d61727368 *616c5370656369616c4b65795f636c6f73757265004748437a69576f72645f5733327a685f7374 *617469635f656e7472790066726565537461626c655074720047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c7235766c6c76 *6c39325f636c6f737572650070726f675f61726776007274735f676574496e743136004748437a *6953545265665f53545265665f636f6e5f656e747279006162734040474c4942435f322e300047 *48437a695765616b5f7a647772756e46696e616c697a7a657242617463685f656e747279004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c735f7a644c726a54496c697438385f636c6f737572650047726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c723579686c6974 *35365f636c6f73757265006768635f7274735f6f707473004748437a69494f426173655f486172 *64776172654661756c745f7374617469635f696e666f004748437a69494f426173655f7a647773 *686f777350726563365f656e747279004748437a69576f72645f7369676e756d335f656e747279 *00436f6e74726f6c7a69457863657074696f6e5f756e636175676874457863657074696f6e4861 *6e646c65725f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a694361706162696c6974795f7a644c7235776e6c766c3130385f636c6f737572650047 *726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f4b65 *79486f6d655f7374617469635f696e666f0053797374656d7a69457869745f6c766c315f696e66 *6f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726a5a5a656c766c3536385f636c6f7375726500676c5472616e736c61 *7465660047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175 *6572795574696c735f7a644c726b32796c69743232355f636c6f73757265004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c *726b39496c69743333365f636c6f73757265004748437a6948616e646c655f7345454b7a754355 *525f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f6c69676874496e646578546f456e756d5f656e7472790047 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c *6974795f7a644c723577316c697432315f636c6f737572650047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a53676c76 *6c3436305f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a6951756572795574696c735f7a644c726b39516c69743333385f636c6f73757265 *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726a59696c69743135395f636c6f73757265004748437a6948616e646c65 *5f7374646f75745f656e74727900737072696e74664040474c4942435f322e30004748437a6949 *4f426173655f6c766c36345f636c6f7375726500446174617a695475706c655f5a32545f737461 *7469635f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a69436f6f72645472616e735f506f736974696f6e5f7374617469635f656e747279004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c735f7a644c726a51536c697434345f636c6f73757265004748437a69494f426173655f613532 *5f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a69436f6f72645472616e735f7a645753697a7a655f636c6f73757265004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c *726b386b6c766c3730395f636c6f73757265006677726974654040474c4942435f322e30007374 *675f67635f67656e5f726574007274735f676574576f72640047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b62696c76 *6c3735355f636c6f73757265004748437a69426173655f5a30545f7374617469635f696e666f00 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565727955 *74696c735f7a644c726a56596c69743132335f636c6f737572650047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a5245 *6c697435365f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a6951756572795574696c735f7a644c726a58366c766c3533355f636c6f737572 *650066696e616c697a655765616b506f696e746572734e6f770047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b36656c *69743238325f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a6951756572795574696c735f7a644c726a56676c69743131325f636c6f737572 *650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726a574d6c766c3533305f636c6f737572650047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c7235 *7a7a6c6c766c3135345f636c6f737572650067307330004748437a69576f72645f577a685f7374 *617469635f656e747279004748437a6948616e646c655f64735f656e7472790047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a64 *4c72357a7a726c697437345f636c6f73757265004748437a69546f7048616e646c65725f746f70 *48616e646c65725f636c6f73757265004748437a69426173655f4c545f7374617469635f656e74 *72790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f676574496e7465676572315f636c6f737572650047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c723576 *626c6974385f636c6f7375726500466f726569676e7a6953746f7261626c655f5a434453746f72 *61626c655f7374617469635f696e666f0047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a694361706162696c6974795f7a644c723577746c697432385f636c6f73 *757265005f5f646174615f7374617274004748437a69494f426173655f6136365f656e74727900 *4748437a69496e745f49387a685f7374617469635f656e747279005f5f737467696e69745f4e75 *6d657269635f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *694361706162696c6974795f436170466f675f7374617469635f696e666f007374675f45584345 *5054494f4e5f434f4e535f696e666f004d61696e5f66335f656e747279004748437a69576f7264 *5f5731367a685f7374617469635f696e666f0053797374656d7a69456e7669726f6e6d656e745f *676f325f656e7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a6951756572795574696c735f7a644c726b356f6c69743236395f636c6f73757265005f5f *737467696e69745f466f726569676e7a6943004748437a694572725f6572726f725f696e666f00 *4748437a69426173655f756e7061636b466f6c647243537472696e677a685f656e747279004772 *6170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f6b6579 *626f6172644d6f75736543616c6c6261636b5f696e666f0047726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a50736c6974 *32325f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a69566572746578537065635f7074727a75676c466f67436f6f7264664558545f696e66 *6f005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c *7a69474c7a69506978656c52656374616e676c65737a69506978656c5472616e73666572004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c735f7a644c726b62416c69743336355f636c6f737572650047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a516f6c76 *6c3433315f636c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261 *636b737a69526567697374726174696f6e5f7a644c723348506c766c32355f656e747279007374 *675f494e445f365f696e666f0047726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a6951756572795574696c735f7a644c726a51676c766c3432395f636c6f73757265 *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726b31596c69743231365f636c6f73757265004748437a6948616e646c65 *5f7a644c723861706c766c32355f656e747279005f5f737467696e69745f466f726569676e5f00 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69566572746578 *537065635f7a644c72616a586c766c34315f696e666f007374675f71756f74576f726436340047 *726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69457874656e7369 *6f6e735f67657450726f63416464726573735f696e666f0047726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a56556c6974 *3132325f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c *7a69474c7a6951756572795574696c735f7a644c726b34656c69743235315f636c6f7375726500 *7374675f73656c5f31325f6e6f7570645f656e747279007374675f73656c5f345f7570645f656e *747279004748437a69496e745f7a64777a657a655f696e666f004748437a69494f426173655f6e *6577494f5265665f696e666f004748437a69494f426173655f6136395f696e666f004748437a69 *494f426173655f496c6c6567616c4f7065726174696f6e5f7374617469635f656e747279004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6948696e74735f7a64 *4c723367616c766c31305f656e747279004748437a6948616e646c655f6c766c39335f636c6f73 *7572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e64 *6f775f64386f49005f4a765f5265676973746572436c6173736573005f5f63747970655f625f6c *6f634040474c4942435f322e330047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a69436f6f72645472616e735f61325f656e74727900706572666f726d47430047 *726170686963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174 *696f6e5f6c766c5f656e747279007274735f6c6f636b007374675f67635f67656e004748437a69 *494f426173655f46696c6548616e646c655f636f6e5f656e747279006d61726b43414673004748 *437a69494f426173655f4e6f537563685468696e675f7374617469635f656e7472790047726170 *686963737a6955497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e *5f537061636562616c6c427574746f6e43425f7374617469635f656e7472790047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a69466f675f666f675f696e666f00 *47726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f4b *65795061676555705f636c6f73757265007374675f67635f6c315f726574004772617068696373 *7a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f4d6f75736542757474 *6f6e5f7374617469635f696e666f0047726170686963737a6955497a69474c55547a6943616c6c *6261636b737a6957696e646f775f5370656369616c4b65795f7374617469635f656e7472790047 *48437a69576f72645f6e6567617465335f636c6f73757265005f5f737467696e69745f47726170 *686963737a6952656e646572696e677a694f70656e474c7a69474c7a6952656e6465724d6f6465 *5f004748437a69494f426173655f496e76616c6964417267756d656e745f7374617469635f696e *666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565 *72795574696c735f7a644c726b32576c69743233315f636c6f73757265004748437a69576f7264 *5f73686f777350726563335f696e666f0047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a6951756572795574696c735f7a644c726a50476c766c3432305f636c6f *7375726500697343757272656e74546872656164426f756e647a685f66617374004748437a6949 *4f426173655f496e617070726f707269617465547970655f7374617469635f696e666f00477261 *70686963737a6952656e646572696e677a694f70656e474c7a69474c7a69566572746578537065 *635f7a644c72616a5a5a6c766c34325f656e747279004d61696e5f66325f696e666f007374675f *63746f695f7265745f5231705f696e666f0047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a6951756572795574696c735f7a644c726a51496c766c3433365f636c *6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a695265 *67697374726174696f6e5f7a64646d6d6178315f696e666f004748437a69426173655f7a707a70 *5f636c6f7375726500446174617a6946696e6974654d61705f7a647766696e644d61785f656e74 *7279004d61696e5f7a646766726f6d53746174655f636c6f73757265005f5f737467696e69745f *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69506978656c52 *656374616e676c65737a6952657365745f0047726170686963737a6955497a69474c55547a6943 *616c6c6261636b737a6957696e646f775f7a644c72574e676c75745370656369616c557046756e *635f636c6f73757265004748437a69494f426173655f73686f777350726563385f656e74727900 *5f5f737467696e69745f446174617a6946696e6974654d61700047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6948696e74735f7a644c723367346c6974365f63 *6c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *694361706162696c6974795f7a644c723577426c697433305f636c6f7375726500696e69745363 *686564756c65720047726170686963737a6952656e646572696e677a694f70656e474c7a69474c *7a6951756572795574696c735f7a644c726a54636c697438305f636c6f73757265004772617068 *6963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f *7a644c726a58436c766c3534335f636c6f73757265005f5f737467696e69745f47726170686963 *737a6955497a69474c55547a6954797065730047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a57496c766c3532395f63 *6c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6952 *6567697374726174696f6e5f5461626c6574427574746f6e43425f636c6f737572650052747346 *6c6167730047726170686963737a6955497a69474c55547a6943616c6c6261636b737a69526567 *697374726174696f6e5f5265736861706543425f636c6f73757265004748437a69496e745f4931 *367a685f636f6e5f656e7472790047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a6951756572795574696c735f6d61727368616c476574504e616d655f636c6f73 *757265007374675f756e636865636b656453686966744c36340047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b30656c *69743138395f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a694361706162696c6974795f7a644c723577396c697432335f636c6f73757265 *0047726170686963737a6955497a69474c55547a69496e697469616c697a7a6174696f6e5f7a64 *776d61727368616c446973706c61794d6f64655f696e666f007274735f6d6b537461626c655074 *720047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a6951756572 *795574696c735f7a644c726a53716c697436385f636c6f73757265004748437a69494f42617365 *5f6c766c35395f636c6f737572650047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a6951756572795574696c735f7a644c726a51416c766c3433345f636c6f7375 *72650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a695265676973 *74726174696f6e5f506173736976654d6f74696f6e43425f636c6f73757265006973416c697665 *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726b30326c69743138365f636c6f737572650047726170686963737a6955 *497a69474c55547a6943616c6c6261636b737a6957696e646f775f7a644c725756676c75744b65 *79626f61726446756e635f696e666f0073696764656c7365744040474c4942435f322e30004748 *437a69494f426173655f6137385f656e7472790047726170686963737a6952656e646572696e67 *7a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a526f6c697435325f63 *6c6f737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957 *696e646f775f4b65794631325f7374617469635f656e7472790047726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a50436c *766c3431395f636c6f73757265005f5f737467696e69745f47726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c557a694e55524253004748437a69546f7048616e646c65 *725f7a644c723153346c766c5f656e747279005f5f737467696e69745f47726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6952656164436f7079506978656c735f00 *5f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e474c7a69 *474c7a694275666665724d6f64655f00676c456e64007374675f67635f756e62785f7231004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c69 *74795f7a644c723579486c766c3134345f636c6f7375726500446174617a6946696e6974654d61 *705f7a644c72336874706f6c797a756661696c315f656e747279004748437a69426173655f437a *685f636f6e5f656e747279004748437a69426173655f756e7061636b466f6c647243537472696e *677a685f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a6951756572795574696c735f7a644c726a5a5a4f6c766c3537375f636c6f73757265004772 *6170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279557469 *6c735f7a644c726b396f6c69743333315f636c6f7375726500466f726569676e7a69437a694572 *726f725f6572726e6f546f494f4572726f725f696e666f004748437a69494f426173655f73686f *777350726563385f636c6f73757265005f5f737467696e69745f47726170686963737a6952656e *646572696e677a694f70656e474c7a69474c7a69474c626f6f6c65616e0047726170686963737a *6952656e646572696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c72 *3576336c6974365f636c6f73757265005f5f737467696e69745f53797374656d7a69494f7a6945 *72726f72006d6b4170557064307a685f66617374005f5f737467696e69745f4772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c557a6954657373656c6c6174696f6e00 *446174617a6946696e6974654d61705f64656c46726f6d464d5f696e666f004748437a694c6973 *745f7a644c7231554f6c766c395f696e666f004748437a69546f7048616e646c65725f6b5f656e *7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175 *6572795574696c735f7a644c726b31736c69743230385f636c6f73757265004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c *726a546b6c697438325f636c6f737572650047726170686963737a6952656e646572696e677a69 *4f70656e474c7a69474c7a6951756572795574696c735f7a644c726a58616c766c3533365f636c *6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *51756572795574696c735f7a644c726b39536c766c3733335f636c6f73757265004748437a6942 *6173655f5a434445715f636f6e5f696e666f0047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b62326c766c3735315f63 *6c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a *694361706162696c6974795f7a644c723577546c766c3131365f636c6f73757265004772617068 *6963737a6955497a69474c55547a6943616c6c6261636b737a6957696e646f775f7a644c723877 *4a6c766c355f696e666f00676c757454696d657246756e630047726170686963737a6952656e64 *6572696e677a694f70656e474c7a69474c7a69426567696e456e645f6c766c335f636c6f737572 *650047726170686963737a6955497a69474c55547a6957696e646f775f676c7574437265617465 *57696e646f775f636c6f737572650047726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a6951756572795574696c735f7a644c726b63496c766c3737375f636c6f7375 *7265004748437a69426173655f437a685f636f6e5f696e666f007274735f6d6b446f75626c6500 *4748437a69494f426173655f737461636b4f766572666c6f775f636c6f73757265006765746f75 *7274696d656f666461790047726170686963737a6952656e646572696e677a694f70656e474c7a *69474c7a6951756572795574696c735f7a644c726b314d6c69743231335f636c6f73757265006c *6f6f6b7570486173685461626c65004748437a69576f72645f7a64646d73686f774c697374335f *696e666f005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f7065 *6e474c7a69474c7a69537472696e675175657269657300626c6f636b65645f71756575655f6864 *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726b34416c766c3635315f636c6f73757265004748437a69494f42617365 *5f7a647773686f777350726563345f636c6f73757265007374675f67635f67656e5f696e666f00 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69436170616269 *6c6974795f7a644c723578646c766c3132315f636c6f7375726500466f726569676e7a6953746f *7261626c655f706f6c797a7573697a7a654f66325f656e747279005f5f737467696e69745f4748 *437a69556e69636f64655f005f5f737467696e69745f446174617a694172726179004748437a69 *4572725f6c766c385f636c6f737572650047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a694361706162696c6974795f7a644c7235784e6c766c3133305f636c6f *73757265004748437a69494f426173655f6134365f636c6f737572650047726170686963737a69 *52656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b *37326c766c3638395f636c6f737572650047726170686963737a6952656e646572696e677a694f *70656e474c7a69474c7a694361706162696c6974795f7a644c723541336c766c3136355f636c6f *737572650047726170686963737a6955497a69474c55547a6943616c6c6261636b737a6957696e *646f775f4b657946315f7374617469635f656e747279007374675f424c41434b484f4c455f4251 *5f696e666f0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69 *51756572795574696c735f7a644c726b32436c69743232365f636c6f737572650053797374656d *7a69456e7669726f6e6d656e745f67657450726f674e616d655f656e7472790047726170686963 *737a6952656e646572696e677a694f70656e474c7a69474c7a69436f6f72645472616e735f5072 *6f6a656374696f6e5f636c6f73757265004748437a69494f426173655f4572726f7243616c6c5f *636f6e5f696e666f007570646174655468726561644c6162656c0047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f47657450657273 *70656374697665436f7272656374696f6e48696e745f7374617469635f656e7472790061776169 *74557365725369676e616c7300466f726569676e7a69437a69537472696e675f77697468434153 *7472696e674c656e5f656e747279004748437a695074725f6e756c6c5074725f636c6f73757265 *0047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175657279 *5574696c735f7a644c726b38516c766c3731375f636c6f73757265004748437a69494f42617365 *5f6e6577494f5265665f636c6f73757265004748437a6948616e646c655f6c766c39345f736c6f *7700436f6e74726f6c7a69457863657074696f6e5f7a644c7232495a5a6c766c31315f636c6f73 *757265004748437a69546f7048616e646c65725f64735f736c6f770047726170686963737a6955 *497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f7a737a65315f *696e666f007274735f6d6b50747200466f726569676e7a69437a694572726f725f7468726f7745 *72726e6f5f656e747279004748437a69426173655f4f72646572696e675f636c6f737572655f74 *626c007374675f4d55545f434f4e535f696e666f0047726170686963737a6955497a69474c5554 *7a6943616c6c6261636b737a69526567697374726174696f6e5f636f6d706172655f636c6f7375 *72650047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69436170 *6162696c6974795f7a644c723579646c697435355f636c6f73757265005f5f737467696e69745f *47726170686963737a6955497a69474c55547a694d656e755f004748437a694c6973745f7a644c *72397a7a7072656c7a756c6973747a757374725f636c6f737572650047726170686963737a6952 *656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b37 *346c69743239355f636c6f73757265004748437a69494f426173655f577269746548616e646c65 *5f636c6f737572650047726170686963737a6952656e646572696e677a694f70656e474c7a6947 *4c7a6951756572795574696c735f7a644c726a536b6c766c3436315f636c6f7375726500474843 *7a69494f426173655f5265736f757263654578686175737465645f7374617469635f696e666f00 *47726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a69517565727955 *74696c735f7a644c726b636d6c69743337375f636c6f737572650047726170686963737a695265 *6e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a5263 *6c697434395f636c6f7375726500676364496e74656765727a685f66617374005f5f676d707a5f *737562004748437a69494f426173655f4275666665724c6973744e696c5f7374617469635f656e *7472790047726170686963737a6952656e646572696e677a694f70656e474c7a69474c7a695175 *6572795574696c735f7a644c726b35476c766c3636385f636c6f73757265007374675f73656c5f *31355f6e6f7570645f656e747279004748437a6948616e646c655f6c766c39345f636c6f737572 *65006d6f76655f54534f005f5f737467696e69745f47726170686963737a6955497a69474c5554 *7a6954797065735f005a434d61696e5f6d61696e5f656e747279005f5f676d6f6e5f7374617274 *5f5f007374675f73656c5f385f6e6f7570645f696e666f0047726170686963737a6952656e6465 *72696e677a694f70656e474c7a69474c7a694361706162696c6974795f7a644c723577446c766c *3131325f636c6f73757265006c646578704040474c4942435f322e300047726170686963737a69 *55497a69474c55547a6943616c6c6261636b737a69526567697374726174696f6e5f4d656e7553 *746174757343425f7374617469635f696e666f004748437a69576f72645f57387a685f73746174 *69635f656e747279004748437a695074725f46756e5074725f636f6e5f656e747279004d61696e *5f53746174655f7374617469635f656e747279004748437a69494f426173655f50726f746f636f *6c4572726f725f7374617469635f696e666f0047726170686963737a6952656e646572696e677a *694f70656e474c7a69474c7a6951756572795574696c735f7a644c726a53326c697436325f636c *6f73757265004748437a69494f426173655f45786974537563636573735f7374617469635f696e *666f005f5f737467696e69745f47726170686963737a6952656e646572696e677a694f70656e47 *4c7a69474c7a6948696e74735f0047726170686963737a6952656e646572696e677a694f70656e *474c7a69474c7a695072696d69746976654d6f64655f547269616e676c65735f636c6f73757265 *00466f726569676e7a69437a694572726f725f7a64776363616c6c325f656e747279004748437a *694c6973745f706f6c797a757265765f696e666f0047726170686963737a6952656e646572696e *677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c726b61386c766c373337 *5f636c6f73757265005f5f737467696e69745f446174617a69426974735f004772617068696373 *7a6952656e646572696e677a694f70656e474c7a69474c7a6951756572795574696c735f7a644c *726b39756c766c3732375f636c6f7375726500 newhex * rmfile ./examples/RedBook/FogCoord addfile ./examples/RedBook/FogCoord.hs hunk ./examples/Misc/FogCoordinate.hs 1 -{- - FogCoordinate.hs (adapted from smooth.c which is (c) Silicon Graphics, Inc.) - Copyright (c) Sven Panne 2002-2004 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program demonstrates per-vertex fog coordinates. --} - -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - -myInit :: IO () -myInit = do - let c = Color4 0.5 0.5 0.5 1.0 - clearColor $= c - fogColor $= c - fogMode $= Exp2 0.4; - fogCoordSrc $= FogCoord - shadeModel $= Smooth - -triangle :: IO () -triangle = - -- resolve overloading, not needed in "real" programs - let vertex2f = vertex :: Vertex2 GLfloat -> IO () - fogCoordf = fogCoord :: FogCoord1 GLfloat -> IO () - color3f = color :: Color3 GLfloat -> IO () - in renderPrimitive Triangles $ do - color3f (Color3 1 0 0) - fogCoordf (FogCoord1 0) - vertex2f (Vertex2 5 5) - color3f (Color3 0 1 0) - fogCoordf (FogCoord1 3) - vertex2f (Vertex2 12.5 5) - color3f (Color3 0 0 1) - fogCoordf (FogCoord1 7) - vertex2f (Vertex2 5 25) - -display :: DisplayCallback -display = do - clear [ ColorBuffer ] - fog $= Disabled - triangle - preservingMatrix $ do - let translatef = translate :: Vector3 GLfloat -> IO () - translatef (Vector3 12.5 0 0) - fog $= Enabled - triangle - flush - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - let wf = fromIntegral w - hf = fromIntegral h - if w <= h - then ortho2D 0 30 0 (30 * hf/wf) - else ortho2D 0 (30 * wf/hf) 0 30 - matrixMode $= Modelview 0 - -keyboard :: KeyboardMouseCallback -keyboard (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard _ _ _ _ = return () - -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode ] - initialWindowSize $= Size 500 500 - initialWindowPosition $= Position 100 100 - createWindow progName - myInit - displayCallback $= display - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just keyboard - mainLoop rmfile ./examples/Misc/FogCoordinate.hs hunk ./examples/RedBook/FogCoord.hs 1 +{- + FogCoord.hs (adapted from fogcoord.c which is (c) Silicon Graphics, Inc) + Copyright (c) Sven Panne 2002-2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program demonstrates the use of explicit fog coordinates. You can press + the keyboard and change the fog coordinate value at any vertex. You can also + switch between using explicit fog coordinates and the default fog generation + mode. + + Pressing the 'f' and 'b' keys move the viewer forward and backwards. Pressing + 'c' initiates the default fog generation. Pressing capital 'C' restores + explicit fog coordinates. Pressing '1', '2', '3', '8', '9', and '0' add or + subtract from the fog coordinate values at one of the three vertices of the + triangle. +-} + +import Control.Monad ( when ) +import Data.IORef ( IORef, newIORef ) +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +data State = State { f1, f2, f3 :: IORef (FogCoord1 GLfloat) } + +makeState :: IO State +makeState = do + f1' <- newIORef (FogCoord1 1) + f2' <- newIORef (FogCoord1 5) + f3' <- newIORef (FogCoord1 10) + return $ State f1' f2' f3' + +-- Initialize fog +myInit :: IO () +myInit = do + let theFogColor = Color4 0 0.25 0.25 1 + fog $= Enabled + fogMode $= Exp 0.25 + fogColor $= theFogColor + hint Fog $= DontCare + fogCoordSrc $= FogCoord + clearColor $= theFogColor + +drawTriangle :: State -> (State -> IORef (FogCoord1 GLfloat)) -> Vertex3 GLfloat -> IO () +drawTriangle state f v = do + fc <- get (f state) + fogCoord fc + vertex v + +-- display draws a triangle at an angle. +display :: State -> DisplayCallback +display state = do + clear [ ColorBuffer ] + + color (Color3 1 0.75 (0 :: GLfloat)) + renderPrimitive Triangles $ do + drawTriangle state f1 (Vertex3 2 (-2) 0 ) + drawTriangle state f2 (Vertex3 (-2) 0 (-5)) + drawTriangle state f3 (Vertex3 0 2 (-10)) + + swapBuffers + +reshape :: ReshapeCallback +reshape size = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + perspective 45 1 0.25 25 + matrixMode $= Modelview 0 + loadIdentity + translate (Vector3 0 0 (-5 :: GLfloat)) + +keyboard :: State -> KeyboardMouseCallback +keyboard state (Char c) Down _ _ = case c of + 'c' -> setSrc FragmentDepth + 'C' -> setSrc FogCoord + '1' -> inc f1 0.25 + '2' -> inc f2 0.25 + '3' -> inc f3 0.25 + '8' -> inc f1 (-0.25) + '9' -> inc f2 (-0.25) + '0' -> inc f3 (-0.25) + 'b' -> trans (-0.25) + 'f' -> trans 0.25 + '\27' -> exitWith ExitSuccess + _ -> return () + where setSrc :: FogCoordSrc -> IO () + setSrc s = do + fogCoordSrc $= s + postRedisplay Nothing + + inc :: (State -> IORef (FogCoord1 GLfloat)) -> GLfloat -> IO () + inc f x = do + FogCoord1 oldValue <- get (f state) + let newValue = oldValue + x + when (newValue > 0) $ do + f state $= FogCoord1 newValue + postRedisplay Nothing + + trans :: GLfloat -> IO () + trans x = do + matrixMode $= Modelview 0 + translate (Vector3 0 0 x) + postRedisplay Nothing +keyboard _ _ _ _ _ = return () + +-- Main Loop: Open window with initial window size, title bar, RGBA display +-- mode, and handle input events. +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ DoubleBuffered, RGBMode ] + initialWindowSize $= Size 500 500 + createWindow progName + state <- makeState + myInit + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just (keyboard state) + displayCallback $= display state + mainLoop + + hunk ./examples/Misc/Makefile 14 -SRC_HC_OPTS += -Wall -package GLUT +SRC_HC_OPTS += -Wall -O -package GLUT hunk ./examples/RedBook/Makefile 14 -SRC_HC_OPTS += -Wall -package GLUT +SRC_HC_OPTS += -Wall -O -package GLUT adddir ./examples/BOGLGP addfile ./examples/BOGLGP/Makefile addfile ./examples/BOGLGP/Simple.hs hunk ./examples/BOGLGP/Makefile 1 +# ----------------------------------------------------------------------------- + +TOP = ../../.. +include $(TOP)/mk/boilerplate.mk + +# ----------------------------------------------------------------------------- + +EXAMPLES := $(wildcard *.hs) +BINS := $(addsuffix $(exeext),$(EXAMPLES:.hs=)) +CLEAN_FILES += $(BINS) + +HC = $(GHC_INPLACE) +MKDEPENDHS = $(GHC_INPLACE) +SRC_HC_OPTS += -Wall -O -package GLUT + +all:: $(BINS) + +$(BINS): %$(exeext): %.o + $(HC) -o $@ $(HC_OPTS) $(LD_OPTS) $< + +# ----------------------------------------------------------------------------- + +include $(TOP)/mk/target.mk hunk ./examples/BOGLGP/Simple.hs 1 +{- + Simple.hs (adapted from Simple.cpp which is (c) Astle/Hawkins) + Copyright (c) Sven Panne 2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE +-} + +import Control.Monad ( unless ) +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT hiding ( initialize ) + +---------------------------------------------------------------------------- +-- Setup GLUT and OpenGL, drop into the event loop +---------------------------------------------------------------------------- +main :: IO () +main = do + -- Setup the basic GLUT stuff + getArgsAndInitialize + initialDisplayMode $= [ DoubleBuffered, RGBMode, WithDepthBuffer ] + + -- Create the window + initialWindowSize $= Size 1024 768 + initialWindowPosition $= Position 100 150 + createWindow "BOGLGP Chapter 1" + + initialize + + -- Register the event callback functions + displayCallback $= display + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just keyboardMouseHandler + -- No need for an idle callback here, this would just hog the CPU + -- without any visible effect + + -- At this point, control is relinquished to the GLUT event handler. + -- Control is returned as events occur, via the callback functions. + mainLoop + +---------------------------------------------------------------------------- +-- One time setup, including creating menus, creating a light, setting the +-- shading mode and clear color, and loading textures. +---------------------------------------------------------------------------- +initialize :: IO () +initialize = do + -- set up the only meny + attachMenu RightButton (Menu [MenuEntry "Exit" (exitWith ExitSuccess)]) + + depthFunc $= Just Less + +---------------------------------------------------------------------------- +-- Handle mouse and keyboard events. For this simple demo, just exit on a +-- left click or when q is pressed. +---------------------------------------------------------------------------- +keyboardMouseHandler :: KeyboardMouseCallback +keyboardMouseHandler (MouseButton LeftButton)_ _ _ = exitWith ExitSuccess +keyboardMouseHandler (Char 'q') _ _ _ = exitWith ExitSuccess +keyboardMouseHandler _ _ _ _ = postRedisplay Nothing + +---------------------------------------------------------------------------- +-- Reset the viewport for window changes +---------------------------------------------------------------------------- +reshape :: ReshapeCallback +reshape size@(Size width height) = + unless (height == 0) $ do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + perspective 90 (fromIntegral width / fromIntegral height) 1 100 + + matrixMode $= Modelview 0 + +---------------------------------------------------------------------------- +-- Clear and redraw the scene. +---------------------------------------------------------------------------- +display :: DisplayCallback +display = do + -- set up the camera + loadIdentity + lookAt (Vertex3 0 1 6) (Vertex3 0 0 0) (Vector3 0 1 0) + + -- clear the screen + clear [ ColorBuffer, DepthBuffer ] + + -- resolve overloading, not needed in "real" programs + let color3f = color :: Color3 GLfloat -> IO () + vertex3f = vertex :: Vertex3 GLfloat -> IO () + + -- draw a triangle + renderPrimitive Triangles $ do + color3f (Color3 1 0 0) + vertex3f (Vertex3 2 2.5 (-1)) + color3f (Color3 0 1 0) + vertex3f (Vertex3 (-3.5) (-2.5) (-1)) + color3f (Color3 0 0 1) + vertex3f (Vertex3 2 (-4) 0) + + -- draw a polygon + renderPrimitive Polygon $ do + color3f (Color3 1 1 1) + vertex3f (Vertex3 (-1) 2 0) + color3f (Color3 1 1 0) + vertex3f (Vertex3 (-3) (-0.5) 0) + color3f (Color3 0 1 1) + vertex3f (Vertex3 (-1.5) (-3) 0) + color3f (Color3 0 0 0) + vertex3f (Vertex3 1 (-2) 0) + color3f (Color3 1 0 1) + vertex3f (Vertex3 1 1 0) + + -- draw everything and swap the display buffer + swapBuffers hunk ./examples/Makefile 9 -SUBDIRS = RedBook Misc +SUBDIRS = RedBook BOGLGP Misc hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 565 + deriving ( Eq, Ord, Show ) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 727 + deriving ( Eq, Ord, Show ) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 734 + deriving ( Eq, Ord, Show ) hunk ./Graphics/UI/GLUT/GameMode.hs 155 + deriving ( Eq, Ord, Show ) hunk ./Graphics/UI/GLUT/Callbacks/Registration.hs 41 - deriving ( Eq, Ord, Show ) + deriving ( Eq, Ord ) hunk ./Graphics/UI/GLUT/Callbacks/Registration.hs 53 - deriving ( Eq, Ord, Show ) + deriving ( Eq, Ord ) hunk ./Graphics/UI/GLUT/Menu.hs 144 - deriving ( Eq, Ord, Show ) + deriving ( Eq, Ord ) hunk ./Graphics/UI/GLUT/Overlay.hs 132 - deriving ( Eq, Ord ) + deriving ( Eq, Ord, Show ) adddir ./examples/BOGLGP/Chapter01 addfile ./examples/BOGLGP/Chapter01/Makefile addfile ./examples/BOGLGP/Chapter01/OnYourOwn1.hs addfile ./examples/BOGLGP/Chapter01/Simple.hs adddir ./examples/BOGLGP/Chapter02 addfile ./examples/BOGLGP/Chapter02/Makefile addfile ./examples/BOGLGP/Chapter02/OnYourOwn1.hs addfile ./examples/BOGLGP/Chapter02/OpenGLApplication.hs adddir ./examples/BOGLGP/Chapter03 addfile ./examples/BOGLGP/Chapter03/Makefile hunk ./examples/BOGLGP/Chapter01/Makefile 1 +# ----------------------------------------------------------------------------- + +TOP = ../../../.. +include $(TOP)/mk/boilerplate.mk + +# ----------------------------------------------------------------------------- + +EXAMPLES := $(wildcard *.hs) +BINS := $(addsuffix $(exeext),$(EXAMPLES:.hs=)) +CLEAN_FILES += $(BINS) + +HC = $(GHC_INPLACE) +MKDEPENDHS = $(GHC_INPLACE) +SRC_HC_OPTS += -Wall -O -package GLUT + +all:: $(BINS) + +$(BINS): %$(exeext): %.o + $(HC) -o $@ $(HC_OPTS) $(LD_OPTS) $< + +# ----------------------------------------------------------------------------- + +include $(TOP)/mk/target.mk hunk ./examples/BOGLGP/Chapter01/OnYourOwn1.hs 1 +{- + OnYourOwn1.hs (adapted from Simple.cpp which is (c) 2004 Astle/Hawkins) + Copyright (c) Sven Panne 2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE +-} + +import Control.Monad ( unless ) +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT hiding ( initialize ) + +---------------------------------------------------------------------------- +-- Setup GLUT and OpenGL, drop into the event loop. +---------------------------------------------------------------------------- +main :: IO () +main = do + -- Setup the basic GLUT stuff + getArgsAndInitialize + initialDisplayMode $= [ DoubleBuffered, RGBMode, WithDepthBuffer ] + + -- Create the window + initialWindowSize $= Size 1024 768 + initialWindowPosition $= Position 100 150 + createWindow "BOGLGP Chapter 1 - On Your Own 1" + + initialize + + -- Register the event callback functions + displayCallback $= display + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just keyboardMouseHandler + -- No need for an idle callback here, this would just hog the CPU + -- without any visible effect + + -- At this point, control is relinquished to the GLUT event handler. + -- Control is returned as events occur, via the callback functions. + mainLoop + +---------------------------------------------------------------------------- +-- One time setup, including creating menus, creating a light, setting the +-- shading mode and clear color, and loading textures. +---------------------------------------------------------------------------- +initialize :: IO () +initialize = do + -- set up the only meny + attachMenu RightButton (Menu [MenuEntry "Exit" (exitWith ExitSuccess)]) + + depthFunc $= Just Less + +---------------------------------------------------------------------------- +-- Handle mouse and keyboard events. For this simple demo, just exit on a +-- left click or when q is pressed. +---------------------------------------------------------------------------- +keyboardMouseHandler :: KeyboardMouseCallback +keyboardMouseHandler (MouseButton LeftButton)_ _ _ = exitWith ExitSuccess +keyboardMouseHandler (Char 'q') _ _ _ = exitWith ExitSuccess +keyboardMouseHandler _ _ _ _ = postRedisplay Nothing + +---------------------------------------------------------------------------- +-- Reset the viewport for window changes. +---------------------------------------------------------------------------- +reshape :: ReshapeCallback +reshape size@(Size width height) = + unless (height == 0) $ do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + perspective 90 (fromIntegral width / fromIntegral height) 1 100 + + matrixMode $= Modelview 0 + +---------------------------------------------------------------------------- +-- Clear and redraw the scene. +---------------------------------------------------------------------------- +display :: DisplayCallback +display = do + -- set up the camera + loadIdentity + lookAt (Vertex3 0 1 6) (Vertex3 0 0 0) (Vector3 0 1 0) + + -- clear the screen + clear [ ColorBuffer, DepthBuffer ] + + -- resolve overloading, not needed in "real" programs + let color3f = color :: Color3 GLfloat -> IO () + vertex3f = vertex :: Vertex3 GLfloat -> IO () + + -- draw a triangle + renderPrimitive Triangles $ do + color3f (Color3 1 0 0) + vertex3f (Vertex3 2 2.5 (-1)) + color3f (Color3 1 0 0) + vertex3f (Vertex3 (-3.5) (-2.5) (-1)) + color3f (Color3 1 0 0) + vertex3f (Vertex3 2 (-4) 0) + + -- draw a polygon + renderPrimitive Polygon $ do + color3f (Color3 0 0 1) + vertex3f (Vertex3 (-1) 2 0) + color3f (Color3 0 0 1) + vertex3f (Vertex3 (-3) (-0.5) 0) + color3f (Color3 0 0 1) + vertex3f (Vertex3 (-1.5) (-3) 0) + color3f (Color3 0 0 1) + vertex3f (Vertex3 1 (-2) 0) + color3f (Color3 0 0 1) + vertex3f (Vertex3 1 1 0) + + -- draw everything and swap the display buffer + swapBuffers hunk ./examples/BOGLGP/Chapter01/Simple.hs 1 +{- + Simple.hs (adapted from Simple.cpp which is (c) 2004 Astle/Hawkins) + Copyright (c) Sven Panne 2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE +-} + +import Control.Monad ( unless ) +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT hiding ( initialize ) + +---------------------------------------------------------------------------- +-- Setup GLUT and OpenGL, drop into the event loop. +---------------------------------------------------------------------------- +main :: IO () +main = do + -- Setup the basic GLUT stuff + getArgsAndInitialize + initialDisplayMode $= [ DoubleBuffered, RGBMode, WithDepthBuffer ] + + -- Create the window + initialWindowSize $= Size 1024 768 + initialWindowPosition $= Position 100 150 + createWindow "BOGLGP Chapter 1" + + initialize + + -- Register the event callback functions + displayCallback $= display + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just keyboardMouseHandler + -- No need for an idle callback here, this would just hog the CPU + -- without any visible effect + + -- At this point, control is relinquished to the GLUT event handler. + -- Control is returned as events occur, via the callback functions. + mainLoop + +---------------------------------------------------------------------------- +-- One time setup, including creating menus, creating a light, setting the +-- shading mode and clear color, and loading textures. +---------------------------------------------------------------------------- +initialize :: IO () +initialize = do + -- set up the only meny + attachMenu RightButton (Menu [MenuEntry "Exit" (exitWith ExitSuccess)]) + + depthFunc $= Just Less + +---------------------------------------------------------------------------- +-- Handle mouse and keyboard events. For this simple demo, just exit on a +-- left click or when q is pressed. +---------------------------------------------------------------------------- +keyboardMouseHandler :: KeyboardMouseCallback +keyboardMouseHandler (MouseButton LeftButton)_ _ _ = exitWith ExitSuccess +keyboardMouseHandler (Char 'q') _ _ _ = exitWith ExitSuccess +keyboardMouseHandler _ _ _ _ = postRedisplay Nothing + +---------------------------------------------------------------------------- +-- Reset the viewport for window changes. +---------------------------------------------------------------------------- +reshape :: ReshapeCallback +reshape size@(Size width height) = + unless (height == 0) $ do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + perspective 90 (fromIntegral width / fromIntegral height) 1 100 + + matrixMode $= Modelview 0 + +---------------------------------------------------------------------------- +-- Clear and redraw the scene. +---------------------------------------------------------------------------- +display :: DisplayCallback +display = do + -- set up the camera + loadIdentity + lookAt (Vertex3 0 1 6) (Vertex3 0 0 0) (Vector3 0 1 0) + + -- clear the screen + clear [ ColorBuffer, DepthBuffer ] + + -- resolve overloading, not needed in "real" programs + let color3f = color :: Color3 GLfloat -> IO () + vertex3f = vertex :: Vertex3 GLfloat -> IO () + + -- draw a triangle + renderPrimitive Triangles $ do + color3f (Color3 1 0 0) + vertex3f (Vertex3 2 2.5 (-1)) + color3f (Color3 0 1 0) + vertex3f (Vertex3 (-3.5) (-2.5) (-1)) + color3f (Color3 0 0 1) + vertex3f (Vertex3 2 (-4) 0) + + -- draw a polygon + renderPrimitive Polygon $ do + color3f (Color3 1 1 1) + vertex3f (Vertex3 (-1) 2 0) + color3f (Color3 1 1 0) + vertex3f (Vertex3 (-3) (-0.5) 0) + color3f (Color3 0 1 1) + vertex3f (Vertex3 (-1.5) (-3) 0) + color3f (Color3 0 0 0) + vertex3f (Vertex3 1 (-2) 0) + color3f (Color3 1 0 1) + vertex3f (Vertex3 1 1 0) + + -- draw everything and swap the display buffer + swapBuffers hunk ./examples/BOGLGP/Chapter02/Makefile 1 +# ----------------------------------------------------------------------------- + +TOP = ../../../.. +include $(TOP)/mk/boilerplate.mk + +# ----------------------------------------------------------------------------- + +EXAMPLES := $(wildcard *.hs) +BINS := $(addsuffix $(exeext),$(EXAMPLES:.hs=)) +CLEAN_FILES += $(BINS) + +HC = $(GHC_INPLACE) +MKDEPENDHS = $(GHC_INPLACE) +SRC_HC_OPTS += -Wall -O -package GLUT + +all:: $(BINS) + +$(BINS): %$(exeext): %.o + $(HC) -o $@ $(HC_OPTS) $(LD_OPTS) $< + +# ----------------------------------------------------------------------------- + +include $(TOP)/mk/target.mk hunk ./examples/BOGLGP/Chapter02/OnYourOwn1.hs 1 +{- + OnYourOwn1.hs (adapted from OpenGLApplication which is (c) 2004 Astle/Hawkins) + Copyright (c) Sven Panne 2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE +-} + +import Data.IORef ( IORef, newIORef ) +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT hiding ( initialize ) + +---------------------------------------------------------------------------- +-- Setup GLUT and OpenGL, drop into the event loop. +---------------------------------------------------------------------------- +main :: IO () +main = do + -- Setup the basic GLUT stuff + getArgsAndInitialize + initialDisplayMode $= [ DoubleBuffered, RGBMode, WithDepthBuffer ] + + -- Create the window + initialWindowSize $= Size 800 600 + createWindow "BOGLGP - Chapter 2 - On Your Own 1" + + state <- initialize + + -- Register the event callback functions + displayCallback $= do render state; swapBuffers + reshapeCallback $= Just setupProjection + keyboardMouseCallback $= Just keyboardMouseHandler + idleCallback $= Just (do prepare state; postRedisplay Nothing) + + -- At this point, control is relinquished to the GLUT event handler. + -- Control is returned as events occur, via the callback functions. + mainLoop + +---------------------------------------------------------------------------- +-- Handle mouse and keyboard events. For this simple demo, just exit when +-- ESCAPE is pressed. +---------------------------------------------------------------------------- +keyboardMouseHandler :: KeyboardMouseCallback +keyboardMouseHandler (Char '\27') Down _ _ = exitWith ExitSuccess +keyboardMouseHandler _ _ _ _ = return () + +---------------------------------------------------------------------------- +-- The globale state, which is only the current angle in this simple demo. +-- We don't need the window dimensions here, they are not used and would +-- be easily available via GLUT anyway. +---------------------------------------------------------------------------- +data State = State { angle :: IORef GLfloat } + +makeState :: IO State +makeState = do + a <- newIORef 0 + return $ State { angle = a } + +---------------------------------------------------------------------------- +-- Do one time setup, i.e. set the clear color and create the global state. +---------------------------------------------------------------------------- +initialize :: IO State +initialize = do + -- clear to black background + clearColor $= Color4 1 1 1 0 + + makeState + +---------------------------------------------------------------------------- +-- Reset the viewport for window changes. +---------------------------------------------------------------------------- +setupProjection :: ReshapeCallback +setupProjection (Size width height) = do + -- don't want a divide by zero + let h = max 1 height + -- reset the viewport to new dimensions + viewport $= (Position 0 0, Size width h) + -- set projection matrix as the current matrix + matrixMode $= Projection + -- reset projection matrix + loadIdentity + + -- calculate aspect ratio of window + perspective 52 (fromIntegral width / fromIntegral h) 1 1000 + + -- set modelview matrix + matrixMode $= Modelview 0 + -- reset modelview matrix + loadIdentity + +---------------------------------------------------------------------------- +-- Perform any data-specific updates for a frame. Here we only increment the +-- angle for the rotation of the triangle. +---------------------------------------------------------------------------- +prepare :: State -> IdleCallback +prepare state = do + angle state $~ (+ 0.1) + +---------------------------------------------------------------------------- +-- Clear and redraw the scene. +---------------------------------------------------------------------------- +render :: State -> DisplayCallback +render state = do + -- clear screen and depth buffer + clear [ ColorBuffer, DepthBuffer ] + loadIdentity + + -- resolve overloading, not needed in "real" programs + let translate3f = translate :: Vector3 GLfloat -> IO () + color3f = color :: Color3 GLfloat -> IO () + vertex3f = vertex :: Vertex3 GLfloat -> IO () + + -- move back 5 units and rotate about all 3 axes + translate3f (Vector3 0 0 (-5)) + a <- get (angle state) + rotate a (Vector3 1 0 0) + rotate a (Vector3 0 1 0) + rotate a (Vector3 0 0 1) + + -- red color + color3f (Color3 1 0 0) + + -- draw the triangle such that the rotation point is in the center + renderPrimitive Triangles $ do + vertex3f (Vertex3 1 (-1) 0) + vertex3f (Vertex3 (-1) (-1) 0) + vertex3f (Vertex3 0 1 0) hunk ./examples/BOGLGP/Chapter02/OpenGLApplication.hs 1 +{- + OpenGLApplication.hs (adapted from OpenGLApplication which is (c) 2004 Astle/Hawkins) + Copyright (c) Sven Panne 2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE +-} + +import Data.IORef ( IORef, newIORef ) +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT hiding ( initialize ) + +---------------------------------------------------------------------------- +-- Setup GLUT and OpenGL, drop into the event loop. +---------------------------------------------------------------------------- +main :: IO () +main = do + -- Setup the basic GLUT stuff + getArgsAndInitialize + initialDisplayMode $= [ DoubleBuffered, RGBMode, WithDepthBuffer ] + + -- Create the window + initialWindowSize $= Size 800 600 + get gameModeInfo >>= print + gameModeCapabilities $= [ Where' GameModeWidth IsEqualTo 800, + Where' GameModeHeight IsEqualTo 600 ] + get gameModeInfo >>= print + createWindow "BOGLGP - Chapter 2 - OpenGL Application" + fullScreen + + state <- initialize + + -- Register the event callback functions + displayCallback $= do render state; swapBuffers + reshapeCallback $= Just setupProjection + keyboardMouseCallback $= Just keyboardMouseHandler + idleCallback $= Just (do prepare state; postRedisplay Nothing) + + -- At this point, control is relinquished to the GLUT event handler. + -- Control is returned as events occur, via the callback functions. + mainLoop + +---------------------------------------------------------------------------- +-- Handle mouse and keyboard events. For this simple demo, just exit when +-- ESCAPE is pressed. +---------------------------------------------------------------------------- +keyboardMouseHandler :: KeyboardMouseCallback +keyboardMouseHandler (Char '\27') Down _ _ = exitWith ExitSuccess +keyboardMouseHandler _ _ _ _ = return () + +---------------------------------------------------------------------------- +-- The globale state, which is only the current angle in this simple demo. +-- We don't need the window dimensions here, they are not used and would +-- be easily available via GLUT anyway. +---------------------------------------------------------------------------- +data State = State { angle :: IORef GLfloat } + +makeState :: IO State +makeState = do + a <- newIORef 0 + return $ State { angle = a } + +---------------------------------------------------------------------------- +-- Do one time setup, i.e. set the clear color and create the global state. +---------------------------------------------------------------------------- +initialize :: IO State +initialize = do + -- clear to black background + clearColor $= Color4 0 0 0 0 + + makeState + +---------------------------------------------------------------------------- +-- Reset the viewport for window changes. +---------------------------------------------------------------------------- +setupProjection :: ReshapeCallback +setupProjection (Size width height) = do + -- don't want a divide by zero + let h = max 1 height + -- reset the viewport to new dimensions + viewport $= (Position 0 0, Size width h) + -- set projection matrix as the current matrix + matrixMode $= Projection + -- reset projection matrix + loadIdentity + + -- calculate aspect ratio of window + perspective 52 (fromIntegral width / fromIntegral h) 1 1000 + + -- set modelview matrix + matrixMode $= Modelview 0 + -- reset modelview matrix + loadIdentity + +---------------------------------------------------------------------------- +-- Perform any data-specific updates for a frame. Here we only increment the +-- angle for the rotation of the triangle. +---------------------------------------------------------------------------- +prepare :: State -> IdleCallback +prepare state = do + angle state $~ (+ 0.1) + +---------------------------------------------------------------------------- +-- Clear and redraw the scene. +---------------------------------------------------------------------------- +render :: State -> DisplayCallback +render state = do + -- clear screen and depth buffer + clear [ ColorBuffer, DepthBuffer ] + loadIdentity + + -- resolve overloading, not needed in "real" programs + let translate3f = translate :: Vector3 GLfloat -> IO () + color3f = color :: Color3 GLfloat -> IO () + vertex3f = vertex :: Vertex3 GLfloat -> IO () + + -- move back 5 units and rotate about all 3 axes + translate3f (Vector3 0 0 (-5)) + a <- get (angle state) + rotate a (Vector3 1 0 0) + rotate a (Vector3 0 1 0) + rotate a (Vector3 0 0 1) + + -- lime greenish color + color3f (Color3 0.7 1 0.3) + + -- draw the triangle such that the rotation point is in the center + renderPrimitive Triangles $ do + vertex3f (Vertex3 1 (-1) 0) + vertex3f (Vertex3 (-1) (-1) 0) + vertex3f (Vertex3 0 1 0) hunk ./examples/BOGLGP/Chapter03/Makefile 1 +# ----------------------------------------------------------------------------- + +TOP = ../../../.. +include $(TOP)/mk/boilerplate.mk + +# ----------------------------------------------------------------------------- + +EXAMPLES := $(wildcard *.hs) +BINS := $(addsuffix $(exeext),$(EXAMPLES:.hs=)) +CLEAN_FILES += $(BINS) + +HC = $(GHC_INPLACE) +MKDEPENDHS = $(GHC_INPLACE) +SRC_HC_OPTS += -Wall -O -package GLUT + +all:: $(BINS) + +$(BINS): %$(exeext): %.o + $(HC) -o $@ $(HC_OPTS) $(LD_OPTS) $< + +# ----------------------------------------------------------------------------- + +include $(TOP)/mk/target.mk hunk ./examples/BOGLGP/Makefile 8 -EXAMPLES := $(wildcard *.hs) -BINS := $(addsuffix $(exeext),$(EXAMPLES:.hs=)) -CLEAN_FILES += $(BINS) - -HC = $(GHC_INPLACE) -MKDEPENDHS = $(GHC_INPLACE) -SRC_HC_OPTS += -Wall -O -package GLUT - -all:: $(BINS) - -$(BINS): %$(exeext): %.o - $(HC) -o $@ $(HC_OPTS) $(LD_OPTS) $< +SUBDIRS = Chapter01 Chapter02 Chapter03 hunk ./examples/BOGLGP/Simple.hs 1 -{- - Simple.hs (adapted from Simple.cpp which is (c) Astle/Hawkins) - Copyright (c) Sven Panne 2004 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE --} - -import Control.Monad ( unless ) -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT hiding ( initialize ) - ----------------------------------------------------------------------------- --- Setup GLUT and OpenGL, drop into the event loop ----------------------------------------------------------------------------- -main :: IO () -main = do - -- Setup the basic GLUT stuff - getArgsAndInitialize - initialDisplayMode $= [ DoubleBuffered, RGBMode, WithDepthBuffer ] - - -- Create the window - initialWindowSize $= Size 1024 768 - initialWindowPosition $= Position 100 150 - createWindow "BOGLGP Chapter 1" - - initialize - - -- Register the event callback functions - displayCallback $= display - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just keyboardMouseHandler - -- No need for an idle callback here, this would just hog the CPU - -- without any visible effect - - -- At this point, control is relinquished to the GLUT event handler. - -- Control is returned as events occur, via the callback functions. - mainLoop - ----------------------------------------------------------------------------- --- One time setup, including creating menus, creating a light, setting the --- shading mode and clear color, and loading textures. ----------------------------------------------------------------------------- -initialize :: IO () -initialize = do - -- set up the only meny - attachMenu RightButton (Menu [MenuEntry "Exit" (exitWith ExitSuccess)]) - - depthFunc $= Just Less - ----------------------------------------------------------------------------- --- Handle mouse and keyboard events. For this simple demo, just exit on a --- left click or when q is pressed. ----------------------------------------------------------------------------- -keyboardMouseHandler :: KeyboardMouseCallback -keyboardMouseHandler (MouseButton LeftButton)_ _ _ = exitWith ExitSuccess -keyboardMouseHandler (Char 'q') _ _ _ = exitWith ExitSuccess -keyboardMouseHandler _ _ _ _ = postRedisplay Nothing - ----------------------------------------------------------------------------- --- Reset the viewport for window changes ----------------------------------------------------------------------------- -reshape :: ReshapeCallback -reshape size@(Size width height) = - unless (height == 0) $ do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - perspective 90 (fromIntegral width / fromIntegral height) 1 100 - - matrixMode $= Modelview 0 - ----------------------------------------------------------------------------- --- Clear and redraw the scene. ----------------------------------------------------------------------------- -display :: DisplayCallback -display = do - -- set up the camera - loadIdentity - lookAt (Vertex3 0 1 6) (Vertex3 0 0 0) (Vector3 0 1 0) - - -- clear the screen - clear [ ColorBuffer, DepthBuffer ] - - -- resolve overloading, not needed in "real" programs - let color3f = color :: Color3 GLfloat -> IO () - vertex3f = vertex :: Vertex3 GLfloat -> IO () - - -- draw a triangle - renderPrimitive Triangles $ do - color3f (Color3 1 0 0) - vertex3f (Vertex3 2 2.5 (-1)) - color3f (Color3 0 1 0) - vertex3f (Vertex3 (-3.5) (-2.5) (-1)) - color3f (Color3 0 0 1) - vertex3f (Vertex3 2 (-4) 0) - - -- draw a polygon - renderPrimitive Polygon $ do - color3f (Color3 1 1 1) - vertex3f (Vertex3 (-1) 2 0) - color3f (Color3 1 1 0) - vertex3f (Vertex3 (-3) (-0.5) 0) - color3f (Color3 0 1 1) - vertex3f (Vertex3 (-1.5) (-3) 0) - color3f (Color3 0 0 0) - vertex3f (Vertex3 1 (-2) 0) - color3f (Color3 1 0 1) - vertex3f (Vertex3 1 1 0) - - -- draw everything and swap the display buffer - swapBuffers rmfile ./examples/BOGLGP/Simple.hs hunk ./examples/RedBook/FogCoord.hs 31 - return $ State f1' f2' f3' + return $ State { f1 = f1', f2 = f2', f3 = f3' } hunk ./Graphics/UI/GLUT/GameMode.hs 106 -gameModeCapabilities = makeSettableStateVar $ \settings -> - withCString - (concat . intersperse " " . map gameModeCapabilityDescriptionToString $ - settings) - glutGameModeString +gameModeCapabilities = makeSettableStateVar $ \ds -> + withCString (descriptionsToString ds) glutGameModeString hunk ./Graphics/UI/GLUT/GameMode.hs 112 +-- freeglut currently handles only simple game mode descriptions like "WxH:B@R", +-- so we try hard to use this format instead of the more general format allowed +-- by the "real" GLUT. +descriptionsToString :: [GameModeCapabilityDescription] -> String +descriptionsToString ds = + let ws = [ x | Where' GameModeWidth IsEqualTo x <- ds ] + hs = [ x | Where' GameModeHeight IsEqualTo x <- ds ] + bs = [ x | Where' GameModeBitsPerPlane IsEqualTo x <- ds ] + rs = [ x | Where' GameModeRefreshRate IsEqualTo x <- ds ] + allSimple = (length ws + length hs + length bs + length rs) == (length ds) + dimensionsOK = (null ws) == (null hs) + in if allSimple && dimensionsOK + then simpleCapStr ws hs bs rs + else generalCapStr ds + +simpleCapStr :: [Int] -> [Int] -> [Int] -> [Int] -> String +simpleCapStr ws hs bs rs = + showCap "" ws ++ showCap "x" hs ++ showCap ":" bs ++ showCap "@" rs + where showCap _ [] = "" + showCap prefix (x:_) = prefix ++ show x + +generalCapStr :: [GameModeCapabilityDescription] -> String +generalCapStr = + concat . intersperse " " . map gameModeCapabilityDescriptionToString + hunk ./examples/BOGLGP/Chapter02/OpenGLApplication.hs 8 +import Control.Monad ( when ) hunk ./examples/BOGLGP/Chapter02/OpenGLApplication.hs 10 +import System.Console.GetOpt hunk ./examples/BOGLGP/Chapter02/OpenGLApplication.hs 20 - getArgsAndInitialize - initialDisplayMode $= [ DoubleBuffered, RGBMode, WithDepthBuffer ] + (progName, args) <- getArgsAndInitialize + let header = "Usage: " ++ progName ++ " [OPTION...]" + flags <- case getOpt Permute options args of + (fs,[],[]) -> return fs + (_,_,errs) -> ioError (userError (concat errs ++ usageInfo header options)) hunk ./examples/BOGLGP/Chapter02/OpenGLApplication.hs 26 - -- Create the window - initialWindowSize $= Size 800 600 - get gameModeInfo >>= print - gameModeCapabilities $= [ Where' GameModeWidth IsEqualTo 800, - Where' GameModeHeight IsEqualTo 600 ] - get gameModeInfo >>= print - createWindow "BOGLGP - Chapter 2 - OpenGL Application" - fullScreen + if null [ () | Fullscreen <- flags ] + then do + -- Create the window + initialDisplayMode $= [ DoubleBuffered, RGBMode, WithDepthBuffer ] + initialWindowSize $= Size 800 600 + createWindow "BOGLGP - Chapter 2 - OpenGL Application" + return () + else do + gameModeCapabilities $= [ Where' GameModeWidth IsEqualTo 800, + Where' GameModeHeight IsEqualTo 600 ] + enterGameMode + return () hunk ./examples/BOGLGP/Chapter02/OpenGLApplication.hs 51 +data Flag = ShowHelp | Fullscreen + +options :: [OptDescr Flag] +options = + [ Option ['?','h'] ["help"] (NoArg ShowHelp) "show help" + , Option ['f'] ["fullscreen"] (NoArg Fullscreen) "use fullscreen mode" + ] + hunk ./examples/BOGLGP/Chapter02/OpenGLApplication.hs 64 -keyboardMouseHandler (Char '\27') Down _ _ = exitWith ExitSuccess +keyboardMouseHandler (Char '\27') Down _ _ = safeExitWith ExitSuccess hunk ./examples/BOGLGP/Chapter02/OpenGLApplication.hs 67 +safeExitWith :: ExitCode -> IO a +safeExitWith code = do + gma <- get gameModeActive + when gma leaveGameMode + exitWith code + hunk ./examples/BOGLGP/Chapter02/OnYourOwn1.hs 2 - OnYourOwn1.hs (adapted from OpenGLApplication which is (c) 2004 Astle/Hawkins) + OpenGLApplication.hs (adapted from OpenGLApplication which is (c) 2004 Astle/Hawkins) hunk ./examples/BOGLGP/Chapter02/OnYourOwn1.hs 8 +import Control.Monad ( when, unless ) hunk ./examples/BOGLGP/Chapter02/OnYourOwn1.hs 10 -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) hunk ./examples/BOGLGP/Chapter02/OnYourOwn1.hs 11 +import System.Console.GetOpt +import System.Environment ( getProgName ) +import System.Exit ( exitWith, ExitCode(..) ) +import System.IO ( hPutStr, stderr ) hunk ./examples/BOGLGP/Chapter02/OnYourOwn1.hs 22 - getArgsAndInitialize - initialDisplayMode $= [ DoubleBuffered, RGBMode, WithDepthBuffer ] - - -- Create the window - initialWindowSize $= Size 800 600 - createWindow "BOGLGP - Chapter 2 - On Your Own 1" + (_, args) <- getArgsAndInitialize + opts <- parseOptions args + (if useFullscreen opts then fullscreenMode else windowedMode) opts hunk ./examples/BOGLGP/Chapter02/OnYourOwn1.hs 38 +fullscreenMode :: Options -> IO () +fullscreenMode opts = do + let addCapability c = maybe id (\x -> (Where' c IsEqualTo x :)) + gameModeCapabilities $= + (addCapability GameModeWidth (Just (windowWidth opts)) . + addCapability GameModeHeight (Just (windowHeight opts)) . + addCapability GameModeBitsPerPlane (bpp opts) . + addCapability GameModeRefreshRate (refreshRate opts)) [] + (_, modeChanged) <- enterGameMode + unless modeChanged $ do + hPutStr stderr "Could not enter fullscreen mode, using windowed mode\n" + windowedMode (opts { useFullscreen = False } ) + +windowedMode :: Options -> IO () +windowedMode opts = do + initialDisplayMode $= [ DoubleBuffered, RGBMode, WithDepthBuffer ] + initialWindowSize $= getSize opts + createWindow "BOGLGP - Chapter 2 - OpenGL Application" + return () + +---------------------------------------------------------------------------- +-- Option handling +---------------------------------------------------------------------------- +data Options = Options { + useFullscreen :: Bool, + windowWidth :: Int, + windowHeight :: Int, + bpp :: Maybe Int, + refreshRate :: Maybe Int + } + +startOpt :: Options +startOpt = Options { + useFullscreen = False, + windowWidth = 800, + windowHeight = 600, + bpp = Nothing, + refreshRate = Nothing + } + +getSize :: Options -> Size +getSize opts = + Size (fromIntegral (windowWidth opts)) (fromIntegral (windowHeight opts)) + +options :: [OptDescr (Options -> IO Options)] +options = [ + Option ['f'] ["fullscreen"] + (NoArg (\opt -> return opt { useFullscreen = True })) + "use fullscreen mode if possible", + Option ['w'] ["width"] + (ReqArg (\arg opt -> do w <- readInt "WIDTH" arg + return opt { windowWidth = w }) + "WIDTH") + "use window width WIDTH", + Option ['h'] ["height"] + (ReqArg (\arg opt -> do h <- readInt "HEIGHT" arg + return opt { windowHeight = h }) + "HEIGHT") + "use window height HEIGHT", + Option ['b'] ["bpp"] + (ReqArg (\arg opt -> do b <- readInt "BPP" arg + return opt { bpp = Just b }) + "BPP") + "use BPP bits per plane (ignored in windowed mode)", + Option ['r'] ["refresh-rate"] + (ReqArg (\arg opt -> do r <- readInt "HZ" arg + return opt { refreshRate = Just r }) + "HZ") + "use refresh rate HZ (ignored in windowed mode)", + Option ['?'] ["help"] + (NoArg (\_ -> do usage >>= putStr + safeExitWith ExitSuccess)) + "show help" ] + +readInt :: String -> String -> IO Int +readInt name arg = + case reads arg of + ((x,[]) : _) -> return x + _ -> dieWith ["Can't parse " ++ name ++ " argument '" ++ arg ++ "'\n"] + +usage :: IO String +usage = do + progName <- getProgName + return $ usageInfo ("Usage: " ++ progName ++ " [OPTION...]") options + +parseOptions :: [String] -> IO Options +parseOptions args = do + let (optsActions, nonOptions, errs) = getOpt Permute options args + unless (null nonOptions && null errs) (dieWith errs) + foldl (>>=) (return startOpt) optsActions + +dieWith :: [String] -> IO a +dieWith errs = do + u <- usage + mapM_ (hPutStr stderr) (errs ++ [u]) + safeExitWith (ExitFailure 1) + hunk ./examples/BOGLGP/Chapter02/OnYourOwn1.hs 140 -keyboardMouseHandler (Char '\27') Down _ _ = exitWith ExitSuccess +keyboardMouseHandler (Char '\27') Down _ _ = safeExitWith ExitSuccess hunk ./examples/BOGLGP/Chapter02/OnYourOwn1.hs 143 +safeExitWith :: ExitCode -> IO a +safeExitWith code = do + gma <- get gameModeActive + when gma leaveGameMode + exitWith code + hunk ./examples/BOGLGP/Chapter02/OnYourOwn1.hs 166 - -- clear to black background + -- clear to white background hunk ./examples/BOGLGP/Chapter02/OpenGLApplication.hs 8 -import Control.Monad ( when ) +import Control.Monad ( when, unless ) hunk ./examples/BOGLGP/Chapter02/OpenGLApplication.hs 10 -import System.Console.GetOpt -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) hunk ./examples/BOGLGP/Chapter02/OpenGLApplication.hs 11 +import System.Console.GetOpt +import System.Environment ( getProgName ) +import System.Exit ( exitWith, ExitCode(..) ) +import System.IO ( hPutStr, stderr ) hunk ./examples/BOGLGP/Chapter02/OpenGLApplication.hs 22 - (progName, args) <- getArgsAndInitialize - let header = "Usage: " ++ progName ++ " [OPTION...]" - flags <- case getOpt Permute options args of - (fs,[],[]) -> return fs - (_,_,errs) -> ioError (userError (concat errs ++ usageInfo header options)) - - if null [ () | Fullscreen <- flags ] - then do - -- Create the window - initialDisplayMode $= [ DoubleBuffered, RGBMode, WithDepthBuffer ] - initialWindowSize $= Size 800 600 - createWindow "BOGLGP - Chapter 2 - OpenGL Application" - return () - else do - gameModeCapabilities $= [ Where' GameModeWidth IsEqualTo 800, - Where' GameModeHeight IsEqualTo 600 ] - enterGameMode - return () + (_, args) <- getArgsAndInitialize + opts <- parseOptions args + (if useFullscreen opts then fullscreenMode else windowedMode) opts hunk ./examples/BOGLGP/Chapter02/OpenGLApplication.hs 38 -data Flag = ShowHelp | Fullscreen +fullscreenMode :: Options -> IO () +fullscreenMode opts = do + let addCapability c = maybe id (\x -> (Where' c IsEqualTo x :)) + gameModeCapabilities $= + (addCapability GameModeWidth (Just (windowWidth opts)) . + addCapability GameModeHeight (Just (windowHeight opts)) . + addCapability GameModeBitsPerPlane (bpp opts) . + addCapability GameModeRefreshRate (refreshRate opts)) [] + (_, modeChanged) <- enterGameMode + unless modeChanged $ do + hPutStr stderr "Could not enter fullscreen mode, using windowed mode\n" + windowedMode (opts { useFullscreen = False } ) + +windowedMode :: Options -> IO () +windowedMode opts = do + initialDisplayMode $= [ DoubleBuffered, RGBMode, WithDepthBuffer ] + initialWindowSize $= getSize opts + createWindow "BOGLGP - Chapter 2 - OpenGL Application" + return () + +---------------------------------------------------------------------------- +-- Option handling +---------------------------------------------------------------------------- +data Options = Options { + useFullscreen :: Bool, + windowWidth :: Int, + windowHeight :: Int, + bpp :: Maybe Int, + refreshRate :: Maybe Int + } + +startOpt :: Options +startOpt = Options { + useFullscreen = False, + windowWidth = 800, + windowHeight = 600, + bpp = Nothing, + refreshRate = Nothing + } + +getSize :: Options -> Size +getSize opts = + Size (fromIntegral (windowWidth opts)) (fromIntegral (windowHeight opts)) + +options :: [OptDescr (Options -> IO Options)] +options = [ + Option ['f'] ["fullscreen"] + (NoArg (\opt -> return opt { useFullscreen = True })) + "use fullscreen mode if possible", + Option ['w'] ["width"] + (ReqArg (\arg opt -> do w <- readInt "WIDTH" arg + return opt { windowWidth = w }) + "WIDTH") + "use window width WIDTH", + Option ['h'] ["height"] + (ReqArg (\arg opt -> do h <- readInt "HEIGHT" arg + return opt { windowHeight = h }) + "HEIGHT") + "use window height HEIGHT", + Option ['b'] ["bpp"] + (ReqArg (\arg opt -> do b <- readInt "BPP" arg + return opt { bpp = Just b }) + "BPP") + "use BPP bits per plane (ignored in windowed mode)", + Option ['r'] ["refresh-rate"] + (ReqArg (\arg opt -> do r <- readInt "HZ" arg + return opt { refreshRate = Just r }) + "HZ") + "use refresh rate HZ (ignored in windowed mode)", + Option ['?'] ["help"] + (NoArg (\_ -> do usage >>= putStr + safeExitWith ExitSuccess)) + "show help" ] + +readInt :: String -> String -> IO Int +readInt name arg = + case reads arg of + ((x,[]) : _) -> return x + _ -> dieWith ["Can't parse " ++ name ++ " argument '" ++ arg ++ "'\n"] + +usage :: IO String +usage = do + progName <- getProgName + return $ usageInfo ("Usage: " ++ progName ++ " [OPTION...]") options + +parseOptions :: [String] -> IO Options +parseOptions args = do + let (optsActions, nonOptions, errs) = getOpt Permute options args + unless (null nonOptions && null errs) (dieWith errs) + foldl (>>=) (return startOpt) optsActions hunk ./examples/BOGLGP/Chapter02/OpenGLApplication.hs 129 -options :: [OptDescr Flag] -options = - [ Option ['?','h'] ["help"] (NoArg ShowHelp) "show help" - , Option ['f'] ["fullscreen"] (NoArg Fullscreen) "use fullscreen mode" - ] +dieWith :: [String] -> IO a +dieWith errs = do + u <- usage + mapM_ (hPutStr stderr) (errs ++ [u]) + safeExitWith (ExitFailure 1) hunk ./examples/BOGLGP/Chapter02/OnYourOwn1.hs 2 - OpenGLApplication.hs (adapted from OpenGLApplication which is (c) 2004 Astle/Hawkins) + OnYourOwn1.hs (adapted from OpenGLApplication which is (c) 2004 Astle/Hawkins) hunk ./examples/BOGLGP/Chapter02/OnYourOwn1.hs 55 - createWindow "BOGLGP - Chapter 2 - OpenGL Application" + createWindow "BOGLGP - Chapter 2 - On Your Own 1" hunk ./examples/BOGLGP/Chapter01/OnYourOwn1.hs 12 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter01/OnYourOwn1.hs 14 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter01/OnYourOwn1.hs 39 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter01/OnYourOwn1.hs 42 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter01/OnYourOwn1.hs 50 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter01/OnYourOwn1.hs 53 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter01/OnYourOwn1.hs 59 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter01/OnYourOwn1.hs 61 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter01/OnYourOwn1.hs 72 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter01/OnYourOwn1.hs 74 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter01/Simple.hs 12 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter01/Simple.hs 14 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter01/Simple.hs 39 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter01/Simple.hs 42 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter01/Simple.hs 50 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter01/Simple.hs 53 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter01/Simple.hs 59 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter01/Simple.hs 61 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter01/Simple.hs 72 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter01/Simple.hs 74 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter02/OnYourOwn1.hs 10 +import Data.Maybe ( isJust ) hunk ./examples/BOGLGP/Chapter02/OnYourOwn1.hs 17 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter02/OnYourOwn1.hs 19 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter02/OnYourOwn1.hs 25 + initialDisplayMode $= [ DoubleBuffered, RGBMode, WithDepthBuffer ] hunk ./examples/BOGLGP/Chapter02/OnYourOwn1.hs 48 - (_, modeChanged) <- enterGameMode - unless modeChanged $ do - hPutStr stderr "Could not enter fullscreen mode, using windowed mode\n" - windowedMode (opts { useFullscreen = False } ) + enterGameMode + maybeWin <- get currentWindow + if isJust maybeWin + then cursor $= None + else do + hPutStr stderr "Could not enter fullscreen mode, using windowed mode\n" + windowedMode (opts { useFullscreen = False } ) hunk ./examples/BOGLGP/Chapter02/OnYourOwn1.hs 58 - initialDisplayMode $= [ DoubleBuffered, RGBMode, WithDepthBuffer ] - initialWindowSize $= getSize opts - createWindow "BOGLGP - Chapter 2 - On Your Own 1" + initialWindowSize $= + Size (fromIntegral (windowWidth opts)) (fromIntegral (windowHeight opts)) + createWindow "BOGLGP - Chapter 2 - OpenGL Application" hunk ./examples/BOGLGP/Chapter02/OnYourOwn1.hs 63 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter02/OnYourOwn1.hs 65 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter02/OnYourOwn1.hs 83 -getSize :: Options -> Size -getSize opts = - Size (fromIntegral (windowWidth opts)) (fromIntegral (windowHeight opts)) - hunk ./examples/BOGLGP/Chapter02/OnYourOwn1.hs 136 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter02/OnYourOwn1.hs 139 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter02/OnYourOwn1.hs 150 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter02/OnYourOwn1.hs 154 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter02/OnYourOwn1.hs 162 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter02/OnYourOwn1.hs 164 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter02/OnYourOwn1.hs 172 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter02/OnYourOwn1.hs 174 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter02/OnYourOwn1.hs 194 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter02/OnYourOwn1.hs 197 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter02/OnYourOwn1.hs 202 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter02/OnYourOwn1.hs 204 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter02/OpenGLApplication.hs 10 +import Data.Maybe ( isJust ) hunk ./examples/BOGLGP/Chapter02/OpenGLApplication.hs 17 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter02/OpenGLApplication.hs 19 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter02/OpenGLApplication.hs 25 + initialDisplayMode $= [ DoubleBuffered, RGBMode, WithDepthBuffer ] hunk ./examples/BOGLGP/Chapter02/OpenGLApplication.hs 48 - (_, modeChanged) <- enterGameMode - unless modeChanged $ do - hPutStr stderr "Could not enter fullscreen mode, using windowed mode\n" - windowedMode (opts { useFullscreen = False } ) + enterGameMode + maybeWin <- get currentWindow + if isJust maybeWin + then cursor $= None + else do + hPutStr stderr "Could not enter fullscreen mode, using windowed mode\n" + windowedMode (opts { useFullscreen = False } ) hunk ./examples/BOGLGP/Chapter02/OpenGLApplication.hs 58 - initialDisplayMode $= [ DoubleBuffered, RGBMode, WithDepthBuffer ] - initialWindowSize $= getSize opts + initialWindowSize $= + Size (fromIntegral (windowWidth opts)) (fromIntegral (windowHeight opts)) hunk ./examples/BOGLGP/Chapter02/OpenGLApplication.hs 63 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter02/OpenGLApplication.hs 65 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter02/OpenGLApplication.hs 83 -getSize :: Options -> Size -getSize opts = - Size (fromIntegral (windowWidth opts)) (fromIntegral (windowHeight opts)) - hunk ./examples/BOGLGP/Chapter02/OpenGLApplication.hs 136 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter02/OpenGLApplication.hs 139 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter02/OpenGLApplication.hs 150 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter02/OpenGLApplication.hs 154 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter02/OpenGLApplication.hs 162 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter02/OpenGLApplication.hs 164 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter02/OpenGLApplication.hs 172 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter02/OpenGLApplication.hs 174 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter02/OpenGLApplication.hs 194 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter02/OpenGLApplication.hs 197 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter02/OpenGLApplication.hs 202 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./examples/BOGLGP/Chapter02/OpenGLApplication.hs 204 ----------------------------------------------------------------------------- +-------------------------------------------------------------------------------- hunk ./Graphics/UI/GLUT/GameMode.hs 19 --- /X Implementation Notes:/ Note that game mode is not fully supported in --- GLUT for X, it is essentially the same as using --- 'Graphics.UI.GLUT.Window.fullScreen', with the additional restrictions --- mentioned above. +-- /X Implementation Notes:/ Note that game mode is not fully supported in the +-- original GLUT for X, it is essentially the same as using +-- 'Graphics.UI.GLUT.Window.fullScreen'. The GLUT clone freeglut +-- (see ) does not have this restriction. hunk ./Graphics/UI/GLUT/GameMode.hs 146 --- --- /X Implementation Notes:/ GLUT for X never changes the display mode, but --- simply creates a full screen window, requesting absolutely no decorations --- from the window manager. hunk ./Graphics/UI/GLUT/GameMode.hs 181 --- --- /X Implementation Notes:/ GLUT for X will always return 'Nothing'. addfile ./examples/BOGLGP/Chapter03/Points.hs hunk ./examples/BOGLGP/Chapter03/Points.hs 1 +{- + Points.hs (adapted from Points which is (c) 2004 Astle/Hawkins) + Copyright (c) Sven Panne 2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE +-} + +import Control.Monad ( when, unless, zipWithM_ ) +import Data.Maybe ( isJust ) +import Graphics.UI.GLUT hiding ( initialize ) +import System.Console.GetOpt +import System.Environment ( getProgName ) +import System.Exit ( exitWith, ExitCode(..) ) +import System.IO ( hPutStr, stderr ) + +-------------------------------------------------------------------------------- +-- Setup GLUT and OpenGL, drop into the event loop. +-------------------------------------------------------------------------------- +main :: IO () +main = do + -- Setup the basic GLUT stuff + (_, args) <- getArgsAndInitialize + opts <- parseOptions args + initialDisplayMode $= [ DoubleBuffered, RGBMode, WithDepthBuffer ] + (if useFullscreen opts then fullscreenMode else windowedMode) opts + + initialize + + -- Register the event callback functions + displayCallback $= do render; swapBuffers + reshapeCallback $= Just setupProjection + keyboardMouseCallback $= Just keyboardMouseHandler + -- No need for an idle callback here, this would just hog the CPU + -- without any visible effect + + -- At this point, control is relinquished to the GLUT event handler. + -- Control is returned as events occur, via the callback functions. + mainLoop + +fullscreenMode :: Options -> IO () +fullscreenMode opts = do + let addCapability c = maybe id (\x -> (Where' c IsEqualTo x :)) + gameModeCapabilities $= + (addCapability GameModeWidth (Just (windowWidth opts)) . + addCapability GameModeHeight (Just (windowHeight opts)) . + addCapability GameModeBitsPerPlane (bpp opts) . + addCapability GameModeRefreshRate (refreshRate opts)) [] + enterGameMode + maybeWin <- get currentWindow + if isJust maybeWin + then cursor $= None + else do + hPutStr stderr "Could not enter fullscreen mode, using windowed mode\n" + windowedMode (opts { useFullscreen = False } ) + +windowedMode :: Options -> IO () +windowedMode opts = do + initialWindowSize $= + Size (fromIntegral (windowWidth opts)) (fromIntegral (windowHeight opts)) + createWindow "BOGLGP - Chapter 3 - Points" + return () + +-------------------------------------------------------------------------------- +-- Option handling +-------------------------------------------------------------------------------- +data Options = Options { + useFullscreen :: Bool, + windowWidth :: Int, + windowHeight :: Int, + bpp :: Maybe Int, + refreshRate :: Maybe Int + } + +startOpt :: Options +startOpt = Options { + useFullscreen = False, + windowWidth = 800, + windowHeight = 600, + bpp = Nothing, + refreshRate = Nothing + } + +options :: [OptDescr (Options -> IO Options)] +options = [ + Option ['f'] ["fullscreen"] + (NoArg (\opt -> return opt { useFullscreen = True })) + "use fullscreen mode if possible", + Option ['w'] ["width"] + (ReqArg (\arg opt -> do w <- readInt "WIDTH" arg + return opt { windowWidth = w }) + "WIDTH") + "use window width WIDTH", + Option ['h'] ["height"] + (ReqArg (\arg opt -> do h <- readInt "HEIGHT" arg + return opt { windowHeight = h }) + "HEIGHT") + "use window height HEIGHT", + Option ['b'] ["bpp"] + (ReqArg (\arg opt -> do b <- readInt "BPP" arg + return opt { bpp = Just b }) + "BPP") + "use BPP bits per plane (ignored in windowed mode)", + Option ['r'] ["refresh-rate"] + (ReqArg (\arg opt -> do r <- readInt "HZ" arg + return opt { refreshRate = Just r }) + "HZ") + "use refresh rate HZ (ignored in windowed mode)", + Option ['?'] ["help"] + (NoArg (\_ -> do usage >>= putStr + safeExitWith ExitSuccess)) + "show help" ] + +readInt :: String -> String -> IO Int +readInt name arg = + case reads arg of + ((x,[]) : _) -> return x + _ -> dieWith ["Can't parse " ++ name ++ " argument '" ++ arg ++ "'\n"] + +usage :: IO String +usage = do + progName <- getProgName + return $ usageInfo ("Usage: " ++ progName ++ " [OPTION...]") options + +parseOptions :: [String] -> IO Options +parseOptions args = do + let (optsActions, nonOptions, errs) = getOpt Permute options args + unless (null nonOptions && null errs) (dieWith errs) + foldl (>>=) (return startOpt) optsActions + +dieWith :: [String] -> IO a +dieWith errs = do + u <- usage + mapM_ (hPutStr stderr) (errs ++ [u]) + safeExitWith (ExitFailure 1) + +-------------------------------------------------------------------------------- +-- Handle mouse and keyboard events. For this simple demo, just exit when +-- ESCAPE is pressed. +-------------------------------------------------------------------------------- +keyboardMouseHandler :: KeyboardMouseCallback +keyboardMouseHandler (Char '\27') Down _ _ = safeExitWith ExitSuccess +keyboardMouseHandler _ _ _ _ = return () + +safeExitWith :: ExitCode -> IO a +safeExitWith code = do + gma <- get gameModeActive + when gma leaveGameMode + exitWith code + +-------------------------------------------------------------------------------- +-- Do one time setup, i.e. set the clear color. +-------------------------------------------------------------------------------- +initialize :: IO () +initialize = clearColor $= Color4 0 0 0 0 + +-------------------------------------------------------------------------------- +-- Reset the viewport for window changes. +-------------------------------------------------------------------------------- +setupProjection :: ReshapeCallback +setupProjection (Size width height) = do + -- don't want a divide by zero + let h = max 1 height + -- reset the viewport to new dimensions + viewport $= (Position 0 0, Size width h) + -- set projection matrix as the current matrix + matrixMode $= Projection + -- reset projection matrix + loadIdentity + + -- calculate aspect ratio of window + perspective 52 (fromIntegral width / fromIntegral h) 1 1000 + + -- set modelview matrix + matrixMode $= Modelview 0 + -- reset modelview matrix + loadIdentity + +-------------------------------------------------------------------------------- +-- Clear and redraw the scene. +-------------------------------------------------------------------------------- +render :: DisplayCallback +render = do + -- clear screen and depth buffer + clear [ ColorBuffer, DepthBuffer ] + loadIdentity + lookAt (Vertex3 0 6 0.1) (Vertex3 0 0 0) (Vector3 0 1 0) + + -- draw a line of points of increasing size + zipWithM_ (\ps point -> do + -- set the point size + pointSize $= ps + -- draw the point + renderPrimitive Points $ + vertex (Vertex3 point 0 0)) + [ 0.5 .. ] + [ -4, -3.5 .. 4.5 :: GLfloat ] addfile ./examples/BOGLGP/Chapter03/Lines.hs hunk ./examples/BOGLGP/Chapter03/Lines.hs 1 +{- + Lines.hs (adapted from Lines which is (c) 2004 Astle/Hawkins) + Copyright (c) Sven Panne 2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE +-} + +import Control.Monad ( when, unless, zipWithM_ ) +import Data.Maybe ( isJust ) +import Graphics.UI.GLUT hiding ( initialize ) +import System.Console.GetOpt +import System.Environment ( getProgName ) +import System.Exit ( exitWith, ExitCode(..) ) +import System.IO ( hPutStr, stderr ) + +-------------------------------------------------------------------------------- +-- Setup GLUT and OpenGL, drop into the event loop. +-------------------------------------------------------------------------------- +main :: IO () +main = do + -- Setup the basic GLUT stuff + (_, args) <- getArgsAndInitialize + opts <- parseOptions args + initialDisplayMode $= [ DoubleBuffered, RGBMode, WithDepthBuffer ] + (if useFullscreen opts then fullscreenMode else windowedMode) opts + + initialize + + -- Register the event callback functions + displayCallback $= do render; swapBuffers + reshapeCallback $= Just setupProjection + keyboardMouseCallback $= Just keyboardMouseHandler + -- No need for an idle callback here, this would just hog the CPU + -- without any visible effect + + -- At this point, control is relinquished to the GLUT event handler. + -- Control is returned as events occur, via the callback functions. + mainLoop + +fullscreenMode :: Options -> IO () +fullscreenMode opts = do + let addCapability c = maybe id (\x -> (Where' c IsEqualTo x :)) + gameModeCapabilities $= + (addCapability GameModeWidth (Just (windowWidth opts)) . + addCapability GameModeHeight (Just (windowHeight opts)) . + addCapability GameModeBitsPerPlane (bpp opts) . + addCapability GameModeRefreshRate (refreshRate opts)) [] + enterGameMode + maybeWin <- get currentWindow + if isJust maybeWin + then cursor $= None + else do + hPutStr stderr "Could not enter fullscreen mode, using windowed mode\n" + windowedMode (opts { useFullscreen = False } ) + +windowedMode :: Options -> IO () +windowedMode opts = do + initialWindowSize $= + Size (fromIntegral (windowWidth opts)) (fromIntegral (windowHeight opts)) + createWindow "BOGLGP - Chapter 3 - Lines" + return () + +-------------------------------------------------------------------------------- +-- Option handling +-------------------------------------------------------------------------------- +data Options = Options { + useFullscreen :: Bool, + windowWidth :: Int, + windowHeight :: Int, + bpp :: Maybe Int, + refreshRate :: Maybe Int + } + +startOpt :: Options +startOpt = Options { + useFullscreen = False, + windowWidth = 800, + windowHeight = 600, + bpp = Nothing, + refreshRate = Nothing + } + +options :: [OptDescr (Options -> IO Options)] +options = [ + Option ['f'] ["fullscreen"] + (NoArg (\opt -> return opt { useFullscreen = True })) + "use fullscreen mode if possible", + Option ['w'] ["width"] + (ReqArg (\arg opt -> do w <- readInt "WIDTH" arg + return opt { windowWidth = w }) + "WIDTH") + "use window width WIDTH", + Option ['h'] ["height"] + (ReqArg (\arg opt -> do h <- readInt "HEIGHT" arg + return opt { windowHeight = h }) + "HEIGHT") + "use window height HEIGHT", + Option ['b'] ["bpp"] + (ReqArg (\arg opt -> do b <- readInt "BPP" arg + return opt { bpp = Just b }) + "BPP") + "use BPP bits per plane (ignored in windowed mode)", + Option ['r'] ["refresh-rate"] + (ReqArg (\arg opt -> do r <- readInt "HZ" arg + return opt { refreshRate = Just r }) + "HZ") + "use refresh rate HZ (ignored in windowed mode)", + Option ['?'] ["help"] + (NoArg (\_ -> do usage >>= putStr + safeExitWith ExitSuccess)) + "show help" ] + +readInt :: String -> String -> IO Int +readInt name arg = + case reads arg of + ((x,[]) : _) -> return x + _ -> dieWith ["Can't parse " ++ name ++ " argument '" ++ arg ++ "'\n"] + +usage :: IO String +usage = do + progName <- getProgName + return $ usageInfo ("Usage: " ++ progName ++ " [OPTION...]") options + +parseOptions :: [String] -> IO Options +parseOptions args = do + let (optsActions, nonOptions, errs) = getOpt Permute options args + unless (null nonOptions && null errs) (dieWith errs) + foldl (>>=) (return startOpt) optsActions + +dieWith :: [String] -> IO a +dieWith errs = do + u <- usage + mapM_ (hPutStr stderr) (errs ++ [u]) + safeExitWith (ExitFailure 1) + +-------------------------------------------------------------------------------- +-- Handle mouse and keyboard events. For this simple demo, just exit when +-- ESCAPE is pressed. +-------------------------------------------------------------------------------- +keyboardMouseHandler :: KeyboardMouseCallback +keyboardMouseHandler (Char '\27') Down _ _ = safeExitWith ExitSuccess +keyboardMouseHandler _ _ _ _ = return () + +safeExitWith :: ExitCode -> IO a +safeExitWith code = do + gma <- get gameModeActive + when gma leaveGameMode + exitWith code + +-------------------------------------------------------------------------------- +-- Do one time setup, i.e. set the clear color. +-------------------------------------------------------------------------------- +initialize :: IO () +initialize = clearColor $= Color4 0 0 0 0 + +-------------------------------------------------------------------------------- +-- Reset the viewport for window changes. +-------------------------------------------------------------------------------- +setupProjection :: ReshapeCallback +setupProjection (Size width height) = do + -- don't want a divide by zero + let h = max 1 height + -- reset the viewport to new dimensions + viewport $= (Position 0 0, Size width h) + -- set projection matrix as the current matrix + matrixMode $= Projection + -- reset projection matrix + loadIdentity + + -- calculate aspect ratio of window + perspective 52 (fromIntegral width / fromIntegral h) 1 1000 + + -- set modelview matrix + matrixMode $= Modelview 0 + -- reset modelview matrix + loadIdentity + +-------------------------------------------------------------------------------- +-- Clear and redraw the scene. +-------------------------------------------------------------------------------- +render :: DisplayCallback +render = do + -- clear screen and depth buffer + clear [ ColorBuffer, DepthBuffer ] + loadIdentity + lookAt (Vertex3 0 10 0.1) (Vertex3 0 0 0) (Vector3 0 1 0) + + -- function to draw a series of lines of increasing width + let drawLines x = zipWithM_ (\lw line -> do + -- set the line width + lineWidth $= lw + + -- draw the line + renderPrimitive Lines $ do + vertex (Vertex3 x 0 (line - 3)) + vertex (Vertex3 (x + 4) 0 (line - 3))) + [ 0.5 .. ] + [ 0, 0.5 .. 6.5 :: GLfloat ] + + -- draw a series of lines of increasing width without stippling + drawLines (-5) + + -- set the stipple pattern, 0xAAAA = 1010 1010 1010 1010 + lineStipple $= Just (2, 0xAAAA) + + -- draw a series of lines of increasing width with stippling + drawLines 1 + + -- disable stippling + lineStipple $= Nothing addfile ./examples/BOGLGP/Chapter03/Polygons.hs addfile ./examples/BOGLGP/Chapter03/TrianglesQuads.hs hunk ./examples/BOGLGP/Chapter03/Polygons.hs 1 +{- + Polygons.hs (adapted from Polygons which is (c) 2004 Astle/Hawkins) + Copyright (c) Sven Panne 2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE +-} + +import Control.Monad ( when, unless ) +import Data.IORef ( IORef, newIORef ) +import Data.Maybe ( isJust ) +import Graphics.UI.GLUT hiding ( initialize ) +import System.Console.GetOpt +import System.Environment ( getProgName ) +import System.Exit ( exitWith, ExitCode(..) ) +import System.IO ( hPutStr, stderr ) + +-------------------------------------------------------------------------------- +-- Setup GLUT and OpenGL, drop into the event loop. +-------------------------------------------------------------------------------- +main :: IO () +main = do + -- Setup the basic GLUT stuff + (_, args) <- getArgsAndInitialize + opts <- parseOptions args + initialDisplayMode $= [ DoubleBuffered, RGBMode, WithDepthBuffer ] + (if useFullscreen opts then fullscreenMode else windowedMode) opts + + state <- initialize + + -- Register the event callback functions + displayCallback $= do render state; swapBuffers + reshapeCallback $= Just setupProjection + keyboardMouseCallback $= Just keyboardMouseHandler + idleCallback $= Just (postRedisplay Nothing) + + -- At this point, control is relinquished to the GLUT event handler. + -- Control is returned as events occur, via the callback functions. + mainLoop + +fullscreenMode :: Options -> IO () +fullscreenMode opts = do + let addCapability c = maybe id (\x -> (Where' c IsEqualTo x :)) + gameModeCapabilities $= + (addCapability GameModeWidth (Just (windowWidth opts)) . + addCapability GameModeHeight (Just (windowHeight opts)) . + addCapability GameModeBitsPerPlane (bpp opts) . + addCapability GameModeRefreshRate (refreshRate opts)) [] + enterGameMode + maybeWin <- get currentWindow + if isJust maybeWin + then cursor $= None + else do + hPutStr stderr "Could not enter fullscreen mode, using windowed mode\n" + windowedMode (opts { useFullscreen = False } ) + +windowedMode :: Options -> IO () +windowedMode opts = do + initialWindowSize $= + Size (fromIntegral (windowWidth opts)) (fromIntegral (windowHeight opts)) + createWindow "BOGLGP - Chapter 3 - Polygons" + return () + +-------------------------------------------------------------------------------- +-- Option handling +-------------------------------------------------------------------------------- +data Options = Options { + useFullscreen :: Bool, + windowWidth :: Int, + windowHeight :: Int, + bpp :: Maybe Int, + refreshRate :: Maybe Int + } + +startOpt :: Options +startOpt = Options { + useFullscreen = False, + windowWidth = 800, + windowHeight = 600, + bpp = Nothing, + refreshRate = Nothing + } + +options :: [OptDescr (Options -> IO Options)] +options = [ + Option ['f'] ["fullscreen"] + (NoArg (\opt -> return opt { useFullscreen = True })) + "use fullscreen mode if possible", + Option ['w'] ["width"] + (ReqArg (\arg opt -> do w <- readInt "WIDTH" arg + return opt { windowWidth = w }) + "WIDTH") + "use window width WIDTH", + Option ['h'] ["height"] + (ReqArg (\arg opt -> do h <- readInt "HEIGHT" arg + return opt { windowHeight = h }) + "HEIGHT") + "use window height HEIGHT", + Option ['b'] ["bpp"] + (ReqArg (\arg opt -> do b <- readInt "BPP" arg + return opt { bpp = Just b }) + "BPP") + "use BPP bits per plane (ignored in windowed mode)", + Option ['r'] ["refresh-rate"] + (ReqArg (\arg opt -> do r <- readInt "HZ" arg + return opt { refreshRate = Just r }) + "HZ") + "use refresh rate HZ (ignored in windowed mode)", + Option ['?'] ["help"] + (NoArg (\_ -> do usage >>= putStr + safeExitWith ExitSuccess)) + "show help" ] + +readInt :: String -> String -> IO Int +readInt name arg = + case reads arg of + ((x,[]) : _) -> return x + _ -> dieWith ["Can't parse " ++ name ++ " argument '" ++ arg ++ "'\n"] + +usage :: IO String +usage = do + progName <- getProgName + return $ usageInfo ("Usage: " ++ progName ++ " [OPTION...]") options + +parseOptions :: [String] -> IO Options +parseOptions args = do + let (optsActions, nonOptions, errs) = getOpt Permute options args + unless (null nonOptions && null errs) (dieWith errs) + foldl (>>=) (return startOpt) optsActions + +dieWith :: [String] -> IO a +dieWith errs = do + u <- usage + mapM_ (hPutStr stderr) (errs ++ [u]) + safeExitWith (ExitFailure 1) + +-------------------------------------------------------------------------------- +-- Handle mouse and keyboard events. For this simple demo, just exit when +-- ESCAPE is pressed. +-------------------------------------------------------------------------------- +keyboardMouseHandler :: KeyboardMouseCallback +keyboardMouseHandler (Char '\27') Down _ _ = safeExitWith ExitSuccess +keyboardMouseHandler _ _ _ _ = return () + +safeExitWith :: ExitCode -> IO a +safeExitWith code = do + gma <- get gameModeActive + when gma leaveGameMode + exitWith code + +-------------------------------------------------------------------------------- +-- The globale state, which is only the current angle in this simple demo. +-- We don't need the window dimensions here, they are not used and would +-- be easily available via GLUT anyway. +-------------------------------------------------------------------------------- +data State = State { angle :: IORef GLfloat } + +makeState :: IO State +makeState = do + a <- newIORef 0 + return $ State { angle = a } + +-------------------------------------------------------------------------------- +-- Do one time setup, i.e. set the clear color and create the global state. +-- Note that there is no need to set the polygon mode here, because we always +-- set the front and back mode together. +-------------------------------------------------------------------------------- +initialize :: IO State +initialize = do + -- clear to black background + clearColor $= Color4 0 0 0 0 + + makeState + +-------------------------------------------------------------------------------- +-- Reset the viewport for window changes. +-------------------------------------------------------------------------------- +setupProjection :: ReshapeCallback +setupProjection (Size width height) = do + -- don't want a divide by zero + let h = max 1 height + -- reset the viewport to new dimensions + viewport $= (Position 0 0, Size width h) + -- set projection matrix as the current matrix + matrixMode $= Projection + -- reset projection matrix + loadIdentity + + -- calculate aspect ratio of window + perspective 52 (fromIntegral width / fromIntegral h) 1 1000 + + -- set modelview matrix + matrixMode $= Modelview 0 + -- reset modelview matrix + loadIdentity + +-------------------------------------------------------------------------------- +-- Clear and redraw the scene. +-------------------------------------------------------------------------------- +render :: State -> DisplayCallback +render state = do + -- clear screen and depth buffer + clear [ ColorBuffer, DepthBuffer ] + loadIdentity + lookAt (Vertex3 0 10 0.1) (Vertex3 0 0 0) (Vector3 0 1 0) + + a <- get (angle state) + mapM_ (draw2DSquare a) [ + (Line, Fill, -4, Color3 1 0 0), + (Fill, Point, -2, Color3 0 1 0), + (Fill, Fill, 0, Color3 0 0 1), + (Fill, Line, 2, Color3 1 0 1), + (Line, Line, 4, Color3 1 1 0)] + + angle state $~ (+ 0.2) + +draw2DSquare :: + GLfloat -> (PolygonMode, PolygonMode, GLfloat, Color3 GLfloat) -> IO () +draw2DSquare a (polygonModeFront, polygonModeBack, deltaX, c) = do + polygonMode $= (polygonModeFront, polygonModeBack) + preservingMatrix $ do + translate (Vector3 deltaX 0 0) + rotate a (Vector3 0 0 1) + color c + renderPrimitive Polygon $ do + -- resolve overloading, not needed in "real" programs + let vertex3f = vertex :: Vertex3 GLfloat -> IO () + vertex3f (Vertex3 (-0.5) 0 0 ) + vertex3f (Vertex3 0.5 0 0 ) + vertex3f (Vertex3 0.5 0 (-1)) + vertex3f (Vertex3 (-0.5) 0 (-1)) hunk ./examples/BOGLGP/Chapter03/TrianglesQuads.hs 1 +{- + TrianglesQuads.hs (adapted from TrianglesQuads.hs which is (c) 2004 Astle/Hawkins) + Copyright (c) Sven Panne 2004 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE +-} + +import Control.Monad ( when, unless ) +import Data.Maybe ( isJust ) +import Graphics.UI.GLUT hiding ( initialize ) +import System.Console.GetOpt +import System.Environment ( getProgName ) +import System.Exit ( exitWith, ExitCode(..) ) +import System.IO ( hPutStr, stderr ) + +-------------------------------------------------------------------------------- +-- Setup GLUT and OpenGL, drop into the event loop. +-------------------------------------------------------------------------------- +main :: IO () +main = do + -- Setup the basic GLUT stuff + (_, args) <- getArgsAndInitialize + opts <- parseOptions args + initialDisplayMode $= [ DoubleBuffered, RGBMode, WithDepthBuffer ] + (if useFullscreen opts then fullscreenMode else windowedMode) opts + + initialize + + -- Register the event callback functions + displayCallback $= do render; swapBuffers + reshapeCallback $= Just setupProjection + keyboardMouseCallback $= Just keyboardMouseHandler + -- No need for an idle callback here, this would just hog the CPU + -- without any visible effect + + -- At this point, control is relinquished to the GLUT event handler. + -- Control is returned as events occur, via the callback functions. + mainLoop + +fullscreenMode :: Options -> IO () +fullscreenMode opts = do + let addCapability c = maybe id (\x -> (Where' c IsEqualTo x :)) + gameModeCapabilities $= + (addCapability GameModeWidth (Just (windowWidth opts)) . + addCapability GameModeHeight (Just (windowHeight opts)) . + addCapability GameModeBitsPerPlane (bpp opts) . + addCapability GameModeRefreshRate (refreshRate opts)) [] + enterGameMode + maybeWin <- get currentWindow + if isJust maybeWin + then cursor $= None + else do + hPutStr stderr "Could not enter fullscreen mode, using windowed mode\n" + windowedMode (opts { useFullscreen = False } ) + +windowedMode :: Options -> IO () +windowedMode opts = do + initialWindowSize $= + Size (fromIntegral (windowWidth opts)) (fromIntegral (windowHeight opts)) + createWindow "BOGLGP - Chapter 3 - TrianglesQuads" + return () + +-------------------------------------------------------------------------------- +-- Option handling +-------------------------------------------------------------------------------- +data Options = Options { + useFullscreen :: Bool, + windowWidth :: Int, + windowHeight :: Int, + bpp :: Maybe Int, + refreshRate :: Maybe Int + } + +startOpt :: Options +startOpt = Options { + useFullscreen = False, + windowWidth = 800, + windowHeight = 600, + bpp = Nothing, + refreshRate = Nothing + } + +options :: [OptDescr (Options -> IO Options)] +options = [ + Option ['f'] ["fullscreen"] + (NoArg (\opt -> return opt { useFullscreen = True })) + "use fullscreen mode if possible", + Option ['w'] ["width"] + (ReqArg (\arg opt -> do w <- readInt "WIDTH" arg + return opt { windowWidth = w }) + "WIDTH") + "use window width WIDTH", + Option ['h'] ["height"] + (ReqArg (\arg opt -> do h <- readInt "HEIGHT" arg + return opt { windowHeight = h }) + "HEIGHT") + "use window height HEIGHT", + Option ['b'] ["bpp"] + (ReqArg (\arg opt -> do b <- readInt "BPP" arg + return opt { bpp = Just b }) + "BPP") + "use BPP bits per plane (ignored in windowed mode)", + Option ['r'] ["refresh-rate"] + (ReqArg (\arg opt -> do r <- readInt "HZ" arg + return opt { refreshRate = Just r }) + "HZ") + "use refresh rate HZ (ignored in windowed mode)", + Option ['?'] ["help"] + (NoArg (\_ -> do usage >>= putStr + safeExitWith ExitSuccess)) + "show help" ] + +readInt :: String -> String -> IO Int +readInt name arg = + case reads arg of + ((x,[]) : _) -> return x + _ -> dieWith ["Can't parse " ++ name ++ " argument '" ++ arg ++ "'\n"] + +usage :: IO String +usage = do + progName <- getProgName + return $ usageInfo ("Usage: " ++ progName ++ " [OPTION...]") options + +parseOptions :: [String] -> IO Options +parseOptions args = do + let (optsActions, nonOptions, errs) = getOpt Permute options args + unless (null nonOptions && null errs) (dieWith errs) + foldl (>>=) (return startOpt) optsActions + +dieWith :: [String] -> IO a +dieWith errs = do + u <- usage + mapM_ (hPutStr stderr) (errs ++ [u]) + safeExitWith (ExitFailure 1) + +-------------------------------------------------------------------------------- +-- Handle mouse and keyboard events. For this simple demo, just exit when +-- ESCAPE is pressed. +-------------------------------------------------------------------------------- +keyboardMouseHandler :: KeyboardMouseCallback +keyboardMouseHandler (Char '\27') Down _ _ = safeExitWith ExitSuccess +keyboardMouseHandler _ _ _ _ = return () + +safeExitWith :: ExitCode -> IO a +safeExitWith code = do + gma <- get gameModeActive + when gma leaveGameMode + exitWith code + +-------------------------------------------------------------------------------- +-- Do one time setup, i.e. set the clear color. +-------------------------------------------------------------------------------- +initialize :: IO () +initialize = clearColor $= Color4 0 0 0 0 + +-------------------------------------------------------------------------------- +-- Reset the viewport for window changes. +-------------------------------------------------------------------------------- +setupProjection :: ReshapeCallback +setupProjection (Size width height) = do + -- don't want a divide by zero + let h = max 1 height + -- reset the viewport to new dimensions + viewport $= (Position 0 0, Size width h) + -- set projection matrix as the current matrix + matrixMode $= Projection + -- reset projection matrix + loadIdentity + + -- calculate aspect ratio of window + perspective 52 (fromIntegral width / fromIntegral h) 1 1000 + + -- set modelview matrix + matrixMode $= Modelview 0 + -- reset modelview matrix + loadIdentity + +-------------------------------------------------------------------------------- +-- Clear and redraw the scene. +-------------------------------------------------------------------------------- +render :: DisplayCallback +render = do + -- clear screen and depth buffer + clear [ ColorBuffer, DepthBuffer ] + loadIdentity + lookAt (Vertex3 0 10 0.1) (Vertex3 0 0 0) (Vector3 0 1 0) + + -- resolve overloading, not needed in "real" programs + let translate3f = translate :: Vector3 GLfloat -> IO () + + -- top left + preservingMatrix $ do + translate3f (Vector3 (-6) 0 (-4)) + drawPoints + + -- top middle + preservingMatrix $ do + polygonMode $= (Fill, Fill) + translate3f (Vector3 (-2) 0 (-4)) + drawTriangles + + -- top right + preservingMatrix $ do + polygonMode $= (Line, Line) + translate3f (Vector3 2 0 (-4)) + drawQuads + + -- bottom left + preservingMatrix $ do + polygonMode $= (Line, Line) + translate3f (Vector3 (-6) 0 0.5) + drawTriangleStrip + + -- bottom middle + preservingMatrix $ do + polygonMode $= (Line, Line) + translate3f (Vector3 (-2) 0 0.5) + drawTriangleFan + + -- bottom right + preservingMatrix $ do + polygonMode $= (Line, Line) + translate3f (Vector3 2 0 0.5) + drawQuadStrip + +-- Hello, this is C... :-) +for :: [GLfloat] -> (GLfloat -> IO ()) -> IO () +for = flip mapM_ + +-- draw grid of points showing dataset we are working with +drawPoints :: IO () +drawPoints = do + pointSize $= 4 + renderPrimitive Points $ + for [ 0 .. 3 ] $ \x -> + for [ 0 .. 3 ] $ \z -> + vertex (Vertex3 x 0 z) + +-- draw grid as individual triangles +drawTriangles :: IO () +drawTriangles = + renderPrimitive Triangles $ + for [ 0 .. 2 ] $ \x -> + for [ 0 .. 2 ] $ \z -> do + vertex (Vertex3 x 0 z ) + vertex (Vertex3 (x + 1) 0 z ) + vertex (Vertex3 x 0 (z + 1)) + +-- draw grid as triangle fan +drawTriangleFan :: IO () +drawTriangleFan = + renderPrimitive TriangleFan $ do + -- center vertex of fan + vertex (Vertex3 0 0 (0 :: GLfloat)) + + -- bottom side + for [ 3, 2 .. 0 ] $ \x -> + vertex (Vertex3 x 0 3) + + -- right side + for [ 3, 2 .. 0 ] $ \z -> + vertex (Vertex3 3 0 z) + +-- draw grid as triangle strips +drawTriangleStrip :: IO () +drawTriangleStrip = + -- 3 rows of triangle strips + for [ 0 .. 2 ] $ \x -> + renderPrimitive TriangleStrip $ + for [ 0 .. 2 ] $ \z -> do + vertex (Vertex3 x 0 z ) + vertex (Vertex3 (x + 1) 0 z ) + vertex (Vertex3 x 0 (z + 1)) + vertex (Vertex3 (x + 1) 0 (z + 1)) + +-- draw grid as individual quads +drawQuads :: IO () +drawQuads = + renderPrimitive Quads $ + for [ 0 .. 2 ] $ \x -> + for [ 0 .. 2 ] $ \z -> do + vertex (Vertex3 x 0 z ) + vertex (Vertex3 (x + 1) 0 z ) + vertex (Vertex3 (x + 1) 0 (z + 1)) + vertex (Vertex3 x 0 (z + 1)) + +-- draw grid as quad strips +drawQuadStrip :: IO () +drawQuadStrip = + for [ 0 .. 2 ] $ \x -> + renderPrimitive QuadStrip $ + for [ 0 .. 3 ] $ \z -> do + vertex (Vertex3 x 0 z) + vertex (Vertex3 (x + 1) 0 z) hunk ./examples/RedBook/Alpha.hs 27 - blendEquation $= Just FuncAdd - blendFunc $= (SrcAlpha, OneMinusSrcAlpha) + blendEquation $= FuncAdd + blendFunc $= Just (SrcAlpha, OneMinusSrcAlpha) hunk ./examples/RedBook/BlendEqn.hs 26 - blendFunc $= (One, One) - blendEquation $= Just FuncAdd + blendFunc $= Just (One, One) + blendEquation $= FuncAdd hunk ./examples/RedBook/BlendEqn.hs 80 - blendEquation $= Just e + blendEquation $= e hunk ./examples/RedBook/Alpha.hs 27 - blendEquation $= FuncAdd - blendFunc $= Just (SrcAlpha, OneMinusSrcAlpha) + blend $= Enabled + blendFunc $= (SrcAlpha, OneMinusSrcAlpha) hunk ./examples/RedBook/BlendEqn.hs 26 - blendFunc $= Just (One, One) - blendEquation $= FuncAdd + blendFunc $= (One, One) + blend $= Enabled addfile ./include/HsGLUT.h.in hunk ./Makefile 5 +-include config.mk + +ifneq "$(GLUT_BUILD_PACKAGE)" "no" hunk ./Makefile 57 +DIST_CLEAN_FILES += config.cache config.status config.mk + +extraclean:: + $(RM) -rf autom4te.cache + +# ----------------------------------------------------------------------------- + +endif + hunk ./include/HsGLUT.h 1 -/* ----------------------------------------------------------------------------- - * - * Module : C support for Graphics.UI.GLUT.Fonts - * Copyright : (c) Sven Panne 2002-2004 - * License : BSD-style (see the file libraries/GLUT/LICENSE) - * - * Maintainer : sven.panne@aedion.de - * Stability : provisional - * Portability : portable - * - * -------------------------------------------------------------------------- */ - -#ifndef HSGLUT_H -#define HSGLUT_H - -#include "ghcconfig.h" - -#ifdef USE_QUARTZ_OPENGL /* Mac OS X only */ -#include -#else -#if HAVE_WINDOWS_H -#include -#endif -#if HAVE_GL_GLUT_H -#include -#else -#include "glut_local.h" -#endif -#endif - -extern void* hOpenGL_marshalBitmapFont(int fontID); -extern void* hOpenGL_marshalStrokeFont(int fontID); - -#endif rmfile ./include/HsGLUT.h hunk ./include/HsGLUT.h.in 1 +/* ----------------------------------------------------------------------------- + * + * Module : C support for Graphics.UI.GLUT.Fonts + * Copyright : (c) Sven Panne 2002-2004 + * License : BSD-style (see the file libraries/GLUT/LICENSE) + * + * Maintainer : sven.panne@aedion.de + * Stability : provisional + * Portability : portable + * + * -------------------------------------------------------------------------- */ + +#ifndef HSGLUT_H +#define HSGLUT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_GL_GLUT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_WINDOWS_H + +/* Define to 1 if native OpenGL should be used on Mac OS X */ +#undef USE_QUARTZ_OPENGL + +#ifdef USE_QUARTZ_OPENGL /* Mac OS X only */ +#include +#else +#if HAVE_WINDOWS_H +#include +#endif +#if HAVE_GL_GLUT_H +#include +#else +#include "glut_local.h" +#endif +#endif + +extern void* hOpenGL_marshalBitmapFont(int fontID); +extern void* hOpenGL_marshalStrokeFont(int fontID); + +#endif addfile ./aclocal.m4 addfile ./config.mk.in addfile ./configure.ac hunk ./aclocal.m4 1 +# Extra autoconf macros for the Glasgow fptools +# +# To be a good autoconf citizen, names of local macros have prefixed with FP_ to +# ensure we don't clash with any pre-supplied autoconf ones. + +dnl ** Map an arithmetic C type to a Haskell type. +dnl Based on autconf's AC_CHECK_SIZEOF. + +dnl FPTOOLS_CHECK_HTYPE(TYPE [, DEFAULT_VALUE, [, VALUE-FOR-CROSS-COMPILATION]) +AC_DEFUN(FPTOOLS_CHECK_HTYPE, +[changequote(<<, >>)dnl +dnl The name to #define. +define(<>, translit(htype_$1, [a-z *], [A-Z_P]))dnl +dnl The cache variable name. +define(<>, translit(fptools_cv_htype_$1, [ *], [_p]))dnl +define(<>, translit(fptools_cv_htype_sup_$1, [ *], [_p]))dnl +changequote([, ])dnl +AC_MSG_CHECKING(Haskell type for $1) +AC_CACHE_VAL(AC_CV_NAME, +[AC_CV_NAME_supported=yes +fp_check_htype_save_cppflags="$CPPFLAGS" +CPPFLAGS="$CPPFLAGS $X_CFLAGS" +AC_RUN_IFELSE([AC_LANG_SOURCE([[#include +#include + +#if HAVE_SYS_TYPES_H +# include +#endif + +#if HAVE_UNISTD_H +# include +#endif + +#if HAVE_SYS_STAT_H +# include +#endif + +#if HAVE_FCNTL_H +# include +#endif + +#if HAVE_SIGNAL_H +# include +#endif + +#if HAVE_TIME_H +# include +#endif + +#if HAVE_TERMIOS_H +# include +#endif + +#if HAVE_STRING_H +# include +#endif + +#if HAVE_CTYPE_H +# include +#endif + +#if defined(HAVE_GL_GL_H) +# include +#elif defined(HAVE_OPENGL_GL_H) +# include +#endif + +#if defined(HAVE_AL_ALC_H) +# include +#elif defined(HAVE_OPENAL_ALC_H) +# include +#endif + +#if HAVE_SYS_RESOURCE_H +# include +#endif + +typedef $1 testing; + +main() { + FILE *f=fopen("conftestval", "w"); + if (!f) exit(1); + if (((testing)((int)((testing)1.4))) == ((testing)1.4)) { + fprintf(f, "%s%d\n", + ((testing)(-1) < (testing)0) ? "Int" : "Word", + sizeof(testing)*8); + } else { + fprintf(f,"%s\n", + (sizeof(testing) > sizeof(double)) ? "LDouble" : + (sizeof(testing) == sizeof(double)) ? "Double" : "Float"); + } + fclose(f); + exit(0); +}]])],[AC_CV_NAME=`cat conftestval`], +[ifelse([$2], , [AC_CV_NAME=NotReallyAType; AC_CV_NAME_supported=no], [AC_CV_NAME=$2])], +[ifelse([$3], , [AC_CV_NAME=NotReallyATypeCross; AC_CV_NAME_supported=no], [AC_CV_NAME=$3])])]) dnl +CPPFLAGS="$fp_check_htype_save_cppflags" +if test "$AC_CV_NAME_supported" = yes; then + AC_MSG_RESULT($AC_CV_NAME) + AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME, [Define to Haskell type for $1]) +else + AC_MSG_RESULT([not supported]) +fi +undefine([AC_TYPE_NAME])dnl +undefine([AC_CV_NAME])dnl +undefine([AC_CV_NAME_supported])dnl +]) + + +# FP_ARG_OPENGL +# ------------- +AC_DEFUN([FP_ARG_OPENGL], +[AC_ARG_ENABLE([opengl], + [AC_HELP_STRING([--enable-opengl], + [build a Haskell binding for OpenGL (GL/GLU). On Mac OS X, use + --enable-opengl=x11 to use X11 instead of the "native" libraries. + (default=autodetect)])], + [enable_opengl=$enableval], + [enable_opengl=yes]) +])# FP_ARG_OPENGL + + +# FP_ARG_GLUT +# ------------- +AC_DEFUN([FP_ARG_GLUT], +[AC_REQUIRE([FP_ARG_OPENGL]) +AC_ARG_ENABLE([glut], + [AC_HELP_STRING([--enable-glut], + [build a Haskell binding for GLUT (default=autodetect)])], + [enable_glut=$enableval], + [enable_glut=yes]) +])# FP_ARG_GLUT + + +# FP_CHECK_QUARTZ_OPENGL +# ---------------------- +AC_DEFUN([FP_CHECK_QUARTZ_OPENGL], +[AC_REQUIRE([FP_ARG_OPENGL]) +AC_REQUIRE([AC_CANONICAL_TARGET]) + +use_quartz_opengl=no +if test x"$enable_opengl" = xyes; then + case $target_os in + darwin*) + AC_DEFINE([USE_QUARTZ_OPENGL], [1], + [Define to 1 if native OpenGL should be used on Mac OS X]) + use_quartz_opengl=yes + ;; + esac +fi +])# FP_CHECK_QUARTZ_OPENGL + + +# FP_CHECK_WIN32 +# -------------- +# If Windows is the target platform (e.g. MinGW/MSYS or Cygwin with +# -mno-cygwin), the variable "fp_is_win32" is set to "yes", otherwise (e.g. *nix +# systems or plain Cygwin) it is set to "no". +AC_DEFUN([FP_CHECK_WIN32], +[AC_CACHE_CHECK([for Windows environment], [fp_cv_is_win32], + [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [ +#if !_WIN32 + syntax error; +#endif +])], [fp_cv_is_win32=yes], [fp_cv_is_win32=no])]) +fp_is_win32="$fp_cv_is_win32"[]dnl +])# FP_CHECK_WIN32 + + +# FP_PATH_XTRA +# ------------ +# Same as AC_PATH_XTRA, but works even for broken Cygwins which try to include +# the non-existant header when -mno-cygwin is used. +AC_DEFUN([FP_PATH_XTRA], +[AC_REQUIRE([FP_CHECK_WIN32]) +if test x"$fp_is_win32" = xyes; then + no_x=yes +else + AC_PATH_XTRA +fi +])# FP_PATH_XTRA + + +# FP_CHECK_GL_HELPER(LIBNAME, LIBS, INCLUDES, FUNCTION-BODY) +# ---------------------------------------------------------- +# Try each library in LIBS to successfully link INCLUDES plus FUNCTION-BODY, +# setting LIBNAME_CFLAGS and LIBNAME_LIBS to the corresponding values. Sets +# no_LIBNAME to "yes" if no suitable library was found. (LIBNAME_CFLAGS0 +# contains the value of LIBNAME_CFLAGS without CPPFLAGS, and LIBNAME_LIBS0 +# contains the value of LIBNAME_LIBS without LDFLAGS, but these are only +# used internally.) +AC_DEFUN([FP_CHECK_GL_HELPER], +[AC_CACHE_CHECK([for $1 library], [fp_cv_check_$1_lib], + [fp_cv_check_$1_lib="no" + fp_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS ${$1_CFLAGS}" + fp_save_LIBS="$LIBS" + for fp_try_lib in $2; do + # transform "-lfoo" to "foo.lib" when using cl + if test x"$CC" = xcl; then + fp_try_lib=`echo $fp_try_lib | sed -e 's/^-l//' -e 's/$/.lib/'` + fi + LIBS="$fp_try_lib ${$1_LIBS} $fp_save_LIBS" + AC_LINK_IFELSE([AC_LANG_PROGRAM([$3], [$4])], [fp_cv_check_$1_lib="$fp_try_lib ${$1_LIBS}"; break]) + done + LIBS="$fp_save_LIBS" + CPPFLAGS="$fp_save_CPPFLAGS"]) + + if test x"$fp_cv_check_$1_lib" = xno; then + no_$1=yes + $1_CFLAGS= + $1_LIBS= + else + $1_CFLAGS0="${$1_CFLAGS}" + $1_CFLAGS="$CPPFLAGS ${$1_CFLAGS0}" + $1_LIBS0="$fp_cv_check_$1_lib" + $1_LIBS="$LDFLAGS ${$1_LIBS0}" + fi +])# FP_CHECK_GL_HELPER + + +# FP_CHECK_GL +# ----------- +AC_DEFUN([FP_CHECK_GL], +[AC_REQUIRE([FP_PATH_XTRA]) +AC_REQUIRE([FP_CHECK_QUARTZ_OPENGL]) +AC_REQUIRE([FP_CHECK_WIN32]) + +if test x"$use_quartz_opengl" = xno; then + AC_CHECK_LIB([m], [atan], [GL_LIBS="-lm $GL_LIBS"]) + + if test x"$no_x" != xyes; then + test -n "$x_includes" && GL_CFLAGS="-I$x_includes $GL_CFLAGS" + test -n "$x_libraries" && GL_LIBS="-L$x_libraries -lX11 $GL_LIBS" + fi + + FP_CHECK_GL_HELPER([GL], [-lGL -lopengl32], [@%:@include ], [glEnd()]) + + if test x"$fp_is_win32" = xyes; then + # Ugly: To get wglGetProcAddress on Windows, we have to link with + # opengl32.dll, too, even when we are using Cygwin with X11. + case "$GL_LIBS" in + *-lopengl32*|*opengl32.lib*) ;; + *) fp_save_LIBS="$LIBS" + LIBS="$LIBS -lopengl32" + AC_LINK_IFELSE([AC_LANG_PROGRAM([[@%:@include ]], [[glEnd()]])], + [GL_LIBS="$GL_LIBS -lopengl32"; GL_LIBS0="$GL_LIBS0 -lopengl32"]) + LIBS="$fp_save_LIBS" + ;; + esac + fi +fi +AC_SUBST([GL_CFLAGS]) +AC_SUBST([GL_LIBS]) +])# FP_CHECK_GL + + +# FP_CHECK_GLU +# ------------ +AC_DEFUN([FP_CHECK_GLU], +[AC_REQUIRE([FP_CHECK_GL])dnl +GLU_CFLAGS="$GL_CFLAGS0" +GLU_LIBS="$GL_LIBS0" + +if test x"$use_quartz_opengl" = xno; then + FP_CHECK_GL_HELPER([GLU], [-lglu32 -lGLU], [@%:@include ], [gluNewQuadric()]) +fi + +AC_SUBST([GLU_CFLAGS]) +AC_SUBST([GLU_LIBS]) +])# FP_CHECK_GLU + + +# FP_CHECK_GLUT +# ------------- +AC_DEFUN([FP_CHECK_GLUT], +[AC_REQUIRE([FP_CHECK_GLU]) +AC_REQUIRE([FP_CHECK_QUARTZ_OPENGL]) + +if test x"$use_quartz_opengl" = xno; then + GLUT_CFLAGS="$GLU_CFLAGS0" + GLUT_LIBS="$GLU_LIBS0" + + if test x"$no_x" != xyes; then + GLUT_LIBS="$X_PRE_LIBS -lXmu -lXi $X_EXTRA_LIBS $GLUT_LIBS" + fi + + AC_CHECK_HEADERS([windows.h GL/glut.h]) + # Note 1: On Cygwin with X11, GL/GLU functions use the "normal" calling + # convention, but GLUT functions use stdcall. To get this right, it is + # necessary to include first. + # Note 2: MinGW/MSYS comes without a GLUT header, so we use Cygwin's one in + # that case. + FP_CHECK_GL_HELPER([GLUT], [-lglut32 -lglut], [ +#if HAVE_WINDOWS_H +#include +#endif +#if HAVE_GL_GLUT_H +#include +#else +#include "glut_local.h" +#endif + ], [glutMainLoop()]) +fi + +AC_SUBST([GLUT_CFLAGS]) +AC_SUBST([GLUT_LIBS]) +])# FP_CHECK_GLUT hunk ./config.mk.in 1 +GLUT_BUILD_PACKAGE=@GLUT_BUILD_PACKAGE@ +GLUT_LIBS=@GLUT_LIBS@ +GLUT_CFLAGS=@GLUT_CFLAGS@ hunk ./configure.ac 1 +AC_INIT([Haskell GLUT package], [2.0], [sven.panne@aedion.de], [GLUT]) + +# Safety check: Ensure that we are in the correct source directory. +AC_CONFIG_SRCDIR([include/HsGLUT.h.in]) + +# The first file mentioned below will be generated by autoheader and contains +# defines which are needed during package build time only. The second header +# contains all kinds of stuff which is needed for using this package. +AC_CONFIG_HEADERS([include/HsGLUTConfig.h include/HsGLUT.h]) + +# We set this to "yes" later when we have found GLUT libs and headers. +GLUT_BUILD_PACKAGE=no +AC_SUBST([GLUT_BUILD_PACKAGE]) + +# Shall we build this package at all? +FP_ARG_GLUT + +if test x"$enable_glut" = xyes; then + +# Check for GLUT include paths and libraries +FP_CHECK_GLUT + +if test "$GLUT_LIBS" = no; then + AC_MSG_WARN([no GLUT library found, so this package will not be built]) +else + +# check for GLUT include files +glut_found_header=no +fp_save_cppflags="$CPPFLAGS" +CPPFLAGS="$CPPFLAGS $X_CFLAGS" +AC_CHECK_HEADERS([GL/glut.h OpenGL/glut.h], [glut_found_header=yes]) +CPPFLAGS="$fp_save_cppflags" + +if test "$glut_found_header" = no; then + AC_MSG_WARN([no GLUT header found, so this package will not be built]) +else + +GLUT_BUILD_PACKAGE=yes + +AC_CHECK_HEADERS([windows.h]) + +fi +fi +fi + +AC_CONFIG_FILES([config.mk]) +AC_OUTPUT hunk ./Makefile 40 +PACKAGE_CPP_OPTS += -DGLUT_EXTRA_LIBS='$(patsubst %,$(comma)"%",$(GLUT_EXTRA_LIBS))' +PACKAGE_CPP_OPTS += -DGLUT_FRAMEWORKS='"$(GLUT_FRAMEWORKS)"' hunk ./aclocal.m4 151 + +GLU_FRAMEWORKS= +GLUT_FRAMEWORKS= +GLUT_EXTRA_LIBS= +if test x"$use_quartz_opengl" = xyes; then + GLU_FRAMEWORKS=OpenGL + GLUT_FRAMEWORKS=GLUT + GLUT_EXTRA_LIBS=objc +fi +AC_SUBST([GLU_FRAMEWORKS]) +AC_SUBST([GLUT_FRAMEWORKS]) +AC_SUBST([GLUT_EXTRA_LIBS]) hunk ./config.mk.in 4 +GLUT_EXTRA_LIBS=@GLUT_EXTRA_LIBS@ +GLUT_FRAMEWORKS=@GLUT_FRAMEWORKS@ hunk ./package.conf.in 1 -#include "ghcconfig.h" - hunk ./package.conf.in 2 - name = "GLUT", - auto = True, + name = "GLUT", + auto = True, hunk ./package.conf.in 5 - import_dirs = [ "$libdir/imports" ], + import_dirs = [ "$libdir/imports" ], hunk ./package.conf.in 7 - import_dirs = [ "$libdir/libraries/GLUT" ], + import_dirs = [ "$libdir/libraries/GLUT" ], hunk ./package.conf.in 9 - source_dirs = [], + source_dirs = [], hunk ./package.conf.in 11 - library_dirs = [ "$libdir" ], + library_dirs = [ "$libdir" ], hunk ./package.conf.in 13 - library_dirs = [ "$libdir/libraries/GLUT" - , "$libdir/libraries/GLUT/cbits" ], -#endif - hs_libraries = [ "HSGLUT" ], -#ifdef USE_QUARTZ_OPENGL - extra_libraries = [ "HSGLUT_cbits", "objc" ], -#else - extra_libraries = [ "HSGLUT_cbits"], + library_dirs = [ "$libdir/libraries/GLUT" + , "$libdir/libraries/GLUT/cbits" ], hunk ./package.conf.in 16 + hs_libraries = [ "HSGLUT" ], + extra_libraries = [ "HSGLUT_cbits" GLUT_EXTRA_LIBS ], hunk ./package.conf.in 19 - include_dirs = [], + include_dirs = [], hunk ./package.conf.in 21 - include_dirs = [ "$libdir/libraries/GLUT/include" ], -#endif - c_includes = [ "HsGLUT.h" ], - package_deps = [ "base", "OpenGL" ], - extra_ghc_opts = [], - extra_cc_opts = [ "" GLUT_CFLAGS ], -#ifdef USE_QUARTZ_OPENGL - extra_frameworks = [ "GLUT" ], + include_dirs = [ "$libdir/libraries/GLUT/include" ], hunk ./package.conf.in 23 - extra_ld_opts = [ "" GLUT_LIBS ] + c_includes = [ "HsGLUT.h" ], + package_deps = [ "base", "OpenGL" ], + extra_ghc_opts = [], + extra_cc_opts = [ "" GLUT_CFLAGS ], + extra_frameworks = [ GLUT_FRAMEWORKS ], + extra_ld_opts = [ "" GLUT_LIBS ] hunk ./Makefile 23 +VERSION = 1.0 hunk ./package.conf.in 1 -Package { - name = "GLUT", - auto = True, -#ifdef INSTALLING - import_dirs = [ "$libdir/imports" ], -#else - import_dirs = [ "$libdir/libraries/GLUT" ], -#endif - source_dirs = [], +name: GLUT +version: 1.0 +license: BSD3 +maintainer: +exposed: True + +exposed-modules: + Graphics.UI.GLUT.Callbacks.Global, + Graphics.UI.GLUT.Callbacks.Registration, + Graphics.UI.GLUT.Callbacks.Window, + Graphics.UI.GLUT.Begin, + Graphics.UI.GLUT.Callbacks, + Graphics.UI.GLUT.Colormap, + Graphics.UI.GLUT.Constants, + Graphics.UI.GLUT.Debugging, + Graphics.UI.GLUT.DeviceControl, + Graphics.UI.GLUT.Fonts, + Graphics.UI.GLUT.GameMode, + Graphics.UI.GLUT.Initialization, + Graphics.UI.GLUT.Menu, + Graphics.UI.GLUT.Objects, + Graphics.UI.GLUT.Overlay, + Graphics.UI.GLUT.QueryUtils, + Graphics.UI.GLUT.State, + Graphics.UI.GLUT.Types, + Graphics.UI.GLUT.Window, + Graphics.UI.GLUT + +hidden-modules: + +import-dirs: IMPORT_DIR + hunk ./package.conf.in 34 - library_dirs = [ "$libdir" ], +library-dirs: "$libdir" hunk ./package.conf.in 36 - library_dirs = [ "$libdir/libraries/GLUT" - , "$libdir/libraries/GLUT/cbits" ], +library-dirs: "$libdir/libraries/GLUT", + "$libdir/libraries/GLUT/cbits" hunk ./package.conf.in 39 - hs_libraries = [ "HSGLUT" ], - extra_libraries = [ "HSGLUT_cbits" GLUT_EXTRA_LIBS ], + +hs-libraries: "HSGLUT" +extra-libs: "HSGLUT_cbits" GLUT_EXTRA_LIBS + hunk ./package.conf.in 44 - include_dirs = [], +include-dirs: hunk ./package.conf.in 46 - include_dirs = [ "$libdir/libraries/GLUT/include" ], +include-dirs: "$libdir/libraries/GLUT/include" hunk ./package.conf.in 48 - c_includes = [ "HsGLUT.h" ], - package_deps = [ "base", "OpenGL" ], - extra_ghc_opts = [], - extra_cc_opts = [ "" GLUT_CFLAGS ], - extra_frameworks = [ GLUT_FRAMEWORKS ], - extra_ld_opts = [ "" GLUT_LIBS ] -} + +includes: "HsGLUT.h" +depends: base, OpenGL +extra-hugs-opts: +extra-cc-opts: "" GLUT_CFLAGS +extra-ld-opts: "" GLUT_LIBS +framework-dirs: +extra_frameworks: GLUT_FRAMEWORKS + +haddock-interfaces: +haddock-html: hunk ./package.conf.in 1 -name: GLUT -version: 1.0 +name: PACKAGE +version: VERSION hunk ./package.conf.in 4 -maintainer: +maintainer: sven.panne@aedion.de hunk ./Makefile 36 - -# yeuch, have to get GLUT_CFLAGS & GLUT_LIBS in through CPP to package.conf.in -comma = , -PACKAGE_CPP_OPTS += -DGLUT_CFLAGS='$(patsubst %,$(comma)"%",$(GLUT_CFLAGS))' -PACKAGE_CPP_OPTS += -DGLUT_LIBS='$(patsubst %,$(comma)"%",$(GLUT_LIBS))' -PACKAGE_CPP_OPTS += -DGLUT_EXTRA_LIBS='$(patsubst %,$(comma)"%",$(GLUT_EXTRA_LIBS))' -PACKAGE_CPP_OPTS += -DGLUT_FRAMEWORKS='"$(GLUT_FRAMEWORKS)"' hunk ./configure.ac 41 + +AC_DEFINE_UNQUOTED([GLUT_EXTRA_LIBS], + [`echo HSGLUT_cbits $GLUT_EXTRA_LIBS | sed -e 's/[[^ ]]*/,"&"/g' -e 's/^ *,//'`], + [Extra libraries for GLUT, as a list of string literals.]) + +AC_DEFINE_UNQUOTED([GLUT_CFLAGS], + [`echo '' $GLUT_CFLAGS | sed -e 's/-[[^ ]]*/,"&"/g' -e 's/^ *,//'`], + [C flags for GLUT, as a list of string literals.]) + +AC_DEFINE_UNQUOTED([GLUT_LIBS], + [`echo '' $GLUT_LIBS | sed -e 's/-[[^ ]]*/,"&"/g' -e 's/^ *,//'`], + [Library flags for GLUT, as a list of string literals.]) + +AC_DEFINE_UNQUOTED([GLUT_FRAMEWORKS], + [`echo '' $GLUT_FRAMEWORKS | sed -e 's/-[[^ ]]*/,"&"/g' -e 's/^ *,//'`], + [Framework flags for GLUT, as a list of string literals.]) hunk ./package.conf.in 1 +#include "HsGLUTConfig.h" + hunk ./package.conf.in 43 -extra-libs: "HSGLUT_cbits" GLUT_EXTRA_LIBS +extra-libs: GLUT_EXTRA_LIBS hunk ./package.conf.in 54 -extra-cc-opts: "" GLUT_CFLAGS -extra-ld-opts: "" GLUT_LIBS +extra-cc-opts: GLUT_CFLAGS +extra-ld-opts: GLUT_LIBS hunk ./Makefile 22 -PACKAGE = GLUT -VERSION = 1.0 hunk ./Makefile 33 +PACKAGE_CPP_OPTS += -DMAINTAINER=$(MAINTAINER) + hunk ./config.mk.in 6 +PACKAGE=@PACKAGE_TARNAME@ +VERSION=@PACKAGE_VERSION@ +MAINTAINER=@PACKAGE_BUGREPORT@ hunk ./package.conf.in 6 -maintainer: sven.panne@aedion.de +maintainer: MAINTAINER hunk ./package.conf.in 10 - Graphics.UI.GLUT.Callbacks.Global, - Graphics.UI.GLUT.Callbacks.Registration, - Graphics.UI.GLUT.Callbacks.Window, hunk ./package.conf.in 11 + Graphics.UI.GLUT.Callbacks.Global, hunk ./package.conf.in 13 + Graphics.UI.GLUT.Callbacks.Window, hunk ./package.conf.in 15 - Graphics.UI.GLUT.Constants, hunk ./package.conf.in 19 + Graphics.UI.GLUT, hunk ./package.conf.in 24 - Graphics.UI.GLUT.QueryUtils, hunk ./package.conf.in 25 - Graphics.UI.GLUT.Types, - Graphics.UI.GLUT.Window, - Graphics.UI.GLUT + Graphics.UI.GLUT.Window hunk ./package.conf.in 28 + Graphics.UI.GLUT.Callbacks.Registration, + Graphics.UI.GLUT.Constants, + Graphics.UI.GLUT.QueryUtils, + Graphics.UI.GLUT.Types hunk ./config.mk.in 2 +ifneq "$(GLUT_BUILD_PACKAGE)" "no" hunk ./config.mk.in 10 +endif addfile ./Graphics/UI/GLUT/FreeGLUT.hs hunk ./Graphics/UI/GLUT/Constants.hs 142 - glut_WINDOW_FORMAT_ID :: GLenum + glut_WINDOW_FORMAT_ID, glut_ACTION_ON_WINDOW_CLOSE, glut_WINDOW_BORDER_WIDTH, + glut_WINDOW_HEADER_HEIGHT, glut_VERSION, glut_RENDERING_CONTEXT, + glut_DIRECT_RENDERING :: GLenum hunk ./Graphics/UI/GLUT/Constants.hs 181 +glut_ACTION_ON_WINDOW_CLOSE = 505 +glut_WINDOW_BORDER_WIDTH = 506 +glut_WINDOW_HEADER_HEIGHT = 507 +glut_VERSION = 508 +glut_RENDERING_CONTEXT = 509 +glut_DIRECT_RENDERING = 510 hunk ./Graphics/UI/GLUT/Constants.hs 315 +----------------------------------------------------------------------------- +-- * Direct/indirect rendering context options (has meaning only in unix/x11), +-- see glut_DIRECT_RENDERING +glut_FORCE_INDIRECT_CONTEXT, glut_ALLOW_DIRECT_CONTEXT, + glut_TRY_DIRECT_CONTEXT, glut_FORCE_DIRECT_CONTEXT :: CInt +glut_FORCE_INDIRECT_CONTEXT = 0 +glut_ALLOW_DIRECT_CONTEXT = 1 +glut_TRY_DIRECT_CONTEXT = 2 +glut_FORCE_DIRECT_CONTEXT = 3 + +----------------------------------------------------------------------------- +-- * Behaviour when the user clicks on an "x" to close a window, see +-- glut_ACTION_ON_WINDOW_CLOSE +glut_ACTION_EXIT, glut_ACTION_GLUTMAINLOOP_RETURNS, + glut_ACTION_CONTINUE_EXECUTION :: CInt +glut_ACTION_EXIT = 0 +glut_ACTION_GLUTMAINLOOP_RETURNS = 1 +glut_ACTION_CONTINUE_EXECUTION = 2 + +----------------------------------------------------------------------------- +-- * Create a new rendering context when the user opens a new window? See +-- glut_RENDERING_CONTEXT +glut_CREATE_NEW_CONTEXT, glut_USE_CURRENT_CONTEXT :: CInt +glut_CREATE_NEW_CONTEXT = 0 +glut_USE_CURRENT_CONTEXT = 1 + hunk ./Graphics/UI/GLUT/FreeGLUT.hs 1 +-- #hide +----------------------------------------------------------------------------- +-- | +-- Module : Graphics.UI.GLUT.FreeGLUT +-- Copyright : (c) Sven Panne 2002-2004 +-- License : BSD-style (see the file libraries/GLUT/LICENSE) +-- +-- Maintainer : sven.panne@aedion.de +-- Stability : stable +-- Portability : portable +-- +-- This purely internal module handles all freeglut specific stuff. +-- +----------------------------------------------------------------------------- + +module Graphics.UI.GLUT.FreeGLUT where + +import Foreign.Ptr ( Ptr, FunPtr ) +import Foreign.C.String ( CString ) +import Foreign.C.Types ( CInt ) +import Graphics.Rendering.OpenGL.GL.BasicTypes ( + GLint, GLenum, GLfloat, GLdouble ) + +----------------------------------------------------------------------------- +-- Process loop function +foreign import CALLCONV unsafe "glutMainLoopEvent" + glutMainLoopEvent :: IO () + +foreign import CALLCONV unsafe "glutLeaveMainLoop" + glutLeaveMainLoop :: IO () + +----------------------------------------------------------------------------- +-- Window-specific callback functions +{- +foreign import CALLCONV unsafe "glutMouseWheelFunc" + void glutMouseWheelFunc( void (* callback)( int, int, int, int ) ); + +foreign import CALLCONV unsafe "glutCloseFunc" + void glutCloseFunc( void (* callback)( void ) ); + +foreign import CALLCONV unsafe "glutWMCloseFunc" + void glutWMCloseFunc( void (* callback)( void ) ); + +foreign import CALLCONV unsafe "glutMenuDestroyFunc" + void glutMenuDestroyFunc( void (* callback)( void ) ); +-} +----------------------------------------------------------------------------- +-- State setting and retrieval functions +foreign import CALLCONV unsafe "glutSetOption" + glutSetOption :: GLenum -> CInt -> IO () + +----------------------------------------------------------------------------- +-- User-data manipulation +foreign import CALLCONV unsafe "glutGetWindowData" + glutGetWindowData :: IO (Ptr a) + +foreign import CALLCONV unsafe "glutSetWindowData" + glutSetWindowData :: Ptr a -> IO () + +foreign import CALLCONV unsafe "glutGetMenuData" + glutGetMenuData :: IO (Ptr a) + +foreign import CALLCONV unsafe "glutSetMenuData" + glutSetMenuData :: Ptr a -> IO () + +----------------------------------------------------------------------------- +-- Font stuff +foreign import CALLCONV unsafe "glutBitmapHeight" + glutBitmapHeight :: Ptr a -> IO CInt + +foreign import CALLCONV unsafe "glutStrokeHeight" + glutStrokeHeight :: Ptr a -> IO GLfloat + +foreign import CALLCONV unsafe "glutBitmapString" + glutBitmapString :: Ptr a -> CString -> IO () + +foreign import CALLCONV unsafe "glutStrokeString" + glutStrokeString :: Ptr a -> CString -> IO () + +----------------------------------------------------------------------------- +-- Geometry functions +foreign import CALLCONV unsafe "glutWireRhombicDodecahedron" + glutWireRhombicDodecahedron :: IO () + +foreign import CALLCONV unsafe "glutSolidRhombicDodecahedron" + glutSolidRhombicDodecahedron :: IO () + +foreign import CALLCONV unsafe "glutWireSierpinskiSponge" + glutWireSierpinskiSponge :: CInt -> Ptr GLdouble -> GLdouble -> IO () + +foreign import CALLCONV unsafe "glutSolidSierpinskiSponge" + glutSolidSierpinskiSponge :: CInt -> Ptr GLdouble -> GLdouble -> IO () + +foreign import CALLCONV unsafe "glutWireCylinder" + glutWireCylinder :: GLdouble -> GLdouble -> GLint -> GLint -> IO () + +foreign import CALLCONV unsafe "glutSolidCylinder" + glutSolidCylinder :: GLdouble -> GLdouble -> GLint -> GLint -> IO () + +----------------------------------------------------------------------------- +-- Extension functions +foreign import CALLCONV unsafe "glutGetProcAddress" + glutGetProcAddress :: CString -> IO (FunPtr a) hunk ./Graphics/UI/GLUT.hs 77 + +import Graphics.UI.GLUT.FreeGLUT hunk ./include/HsGLUT.h.in 37 + +#if FREEGLUT +#include +#endif hunk ./Graphics/UI/GLUT/Fonts.hs 33 -{-# CBITS HsGLUT.c #-} +{-# CFILES cbits/HsGLUT.c #-} hunk ./Makefile 53 -DIST_CLEAN_FILES += config.cache config.status config.mk +LATE_DIST_CLEAN_FILES += config.cache config.status config.mk hunk ./package.conf.in 10 + Graphics.UI.GLUT, hunk ./package.conf.in 12 - Graphics.UI.GLUT.Callbacks.Global, hunk ./package.conf.in 13 + Graphics.UI.GLUT.Callbacks.Global, hunk ./package.conf.in 20 - Graphics.UI.GLUT, hunk ./package.conf.in 30 + Graphics.UI.GLUT.FreeGLUT, hunk ./Graphics/UI/GLUT/Constants.hs 142 - glut_WINDOW_FORMAT_ID, glut_ACTION_ON_WINDOW_CLOSE, glut_WINDOW_BORDER_WIDTH, - glut_WINDOW_HEADER_HEIGHT, glut_VERSION, glut_RENDERING_CONTEXT, - glut_DIRECT_RENDERING :: GLenum + glut_WINDOW_FORMAT_ID :: GLenum hunk ./Graphics/UI/GLUT/Constants.hs 179 -glut_ACTION_ON_WINDOW_CLOSE = 505 -glut_WINDOW_BORDER_WIDTH = 506 -glut_WINDOW_HEADER_HEIGHT = 507 -glut_VERSION = 508 -glut_RENDERING_CONTEXT = 509 -glut_DIRECT_RENDERING = 510 hunk ./Graphics/UI/GLUT/Constants.hs 307 ------------------------------------------------------------------------------ --- * Direct/indirect rendering context options (has meaning only in unix/x11), --- see glut_DIRECT_RENDERING -glut_FORCE_INDIRECT_CONTEXT, glut_ALLOW_DIRECT_CONTEXT, - glut_TRY_DIRECT_CONTEXT, glut_FORCE_DIRECT_CONTEXT :: CInt -glut_FORCE_INDIRECT_CONTEXT = 0 -glut_ALLOW_DIRECT_CONTEXT = 1 -glut_TRY_DIRECT_CONTEXT = 2 -glut_FORCE_DIRECT_CONTEXT = 3 - ------------------------------------------------------------------------------ --- * Behaviour when the user clicks on an "x" to close a window, see --- glut_ACTION_ON_WINDOW_CLOSE -glut_ACTION_EXIT, glut_ACTION_GLUTMAINLOOP_RETURNS, - glut_ACTION_CONTINUE_EXECUTION :: CInt -glut_ACTION_EXIT = 0 -glut_ACTION_GLUTMAINLOOP_RETURNS = 1 -glut_ACTION_CONTINUE_EXECUTION = 2 - ------------------------------------------------------------------------------ --- * Create a new rendering context when the user opens a new window? See --- glut_RENDERING_CONTEXT -glut_CREATE_NEW_CONTEXT, glut_USE_CURRENT_CONTEXT :: CInt -glut_CREATE_NEW_CONTEXT = 0 -glut_USE_CURRENT_CONTEXT = 1 - hunk ./Graphics/UI/GLUT/FreeGLUT.hs 24 +----------------------------------------------------------------------------- +-- New glutGet parameters + +glut_ACTION_ON_WINDOW_CLOSE, glut_WINDOW_BORDER_WIDTH, + glut_WINDOW_HEADER_HEIGHT, glut_VERSION, glut_RENDERING_CONTEXT, + glut_DIRECT_RENDERING :: GLenum +glut_ACTION_ON_WINDOW_CLOSE = 505 +glut_WINDOW_BORDER_WIDTH = 506 +glut_WINDOW_HEADER_HEIGHT = 507 +glut_VERSION = 508 +glut_RENDERING_CONTEXT = 509 +glut_DIRECT_RENDERING = 510 + +----------------------------------------------------------------------------- +-- Direct/indirect rendering context options (has meaning only in unix/x11), +-- see glut_DIRECT_RENDERING (freeglut extension) + +glut_FORCE_INDIRECT_CONTEXT, glut_ALLOW_DIRECT_CONTEXT, + glut_TRY_DIRECT_CONTEXT, glut_FORCE_DIRECT_CONTEXT :: CInt +glut_FORCE_INDIRECT_CONTEXT = 0 +glut_ALLOW_DIRECT_CONTEXT = 1 +glut_TRY_DIRECT_CONTEXT = 2 +glut_FORCE_DIRECT_CONTEXT = 3 + +----------------------------------------------------------------------------- +-- Behaviour when the user clicks on an "x" to close a window, see +-- glut_ACTION_ON_WINDOW_CLOSE (freeglut extension) + +glut_ACTION_EXIT, glut_ACTION_GLUTMAINLOOP_RETURNS, + glut_ACTION_CONTINUE_EXECUTION :: CInt +glut_ACTION_EXIT = 0 +glut_ACTION_GLUTMAINLOOP_RETURNS = 1 +glut_ACTION_CONTINUE_EXECUTION = 2 + +----------------------------------------------------------------------------- +-- Create a new rendering context when the user opens a new window? See +-- glut_RENDERING_CONTEXT (freeglut extension) + +glut_CREATE_NEW_CONTEXT, glut_USE_CURRENT_CONTEXT :: CInt +glut_CREATE_NEW_CONTEXT = 0 +glut_USE_CURRENT_CONTEXT = 1 + hunk ./Graphics/UI/GLUT/FreeGLUT.hs 68 + hunk ./Graphics/UI/GLUT/FreeGLUT.hs 92 + hunk ./Graphics/UI/GLUT/FreeGLUT.hs 98 + hunk ./Graphics/UI/GLUT/FreeGLUT.hs 113 + hunk ./Graphics/UI/GLUT/FreeGLUT.hs 128 + hunk ./Graphics/UI/GLUT/Fonts.hs 102 -foreign import ccall unsafe "hOpenGL_marshalBitmapFont" - hOpenGL_marshalBitmapFont :: CInt -> IO GLUTbitmapFont +foreign import ccall unsafe "hs_GLUT_marshalBitmapFont" + hs_GLUT_marshalBitmapFont :: CInt -> IO GLUTbitmapFont hunk ./Graphics/UI/GLUT/Fonts.hs 107 - Fixed8By13 -> hOpenGL_marshalBitmapFont 0 - Fixed9By15 -> hOpenGL_marshalBitmapFont 1 - TimesRoman10 -> hOpenGL_marshalBitmapFont 2 - TimesRoman24 -> hOpenGL_marshalBitmapFont 3 - Helvetica10 -> hOpenGL_marshalBitmapFont 4 - Helvetica12 -> hOpenGL_marshalBitmapFont 5 - Helvetica18 -> hOpenGL_marshalBitmapFont 6 + Fixed8By13 -> hs_GLUT_marshalBitmapFont 0 + Fixed9By15 -> hs_GLUT_marshalBitmapFont 1 + TimesRoman10 -> hs_GLUT_marshalBitmapFont 2 + TimesRoman24 -> hs_GLUT_marshalBitmapFont 3 + Helvetica10 -> hs_GLUT_marshalBitmapFont 4 + Helvetica12 -> hs_GLUT_marshalBitmapFont 5 + Helvetica18 -> hs_GLUT_marshalBitmapFont 6 hunk ./Graphics/UI/GLUT/Fonts.hs 131 -foreign import ccall unsafe "hOpenGL_marshalStrokeFont" - hOpenGL_marshalStrokeFont :: CInt -> IO GLUTstrokeFont +foreign import ccall unsafe "hs_GLUT_marshalStrokeFont" + hs_GLUT_marshalStrokeFont :: CInt -> IO GLUTstrokeFont hunk ./Graphics/UI/GLUT/Fonts.hs 136 - Roman -> hOpenGL_marshalStrokeFont 0 - MonoRoman -> hOpenGL_marshalStrokeFont 1 + Roman -> hs_GLUT_marshalStrokeFont 0 + MonoRoman -> hs_GLUT_marshalStrokeFont 1 hunk ./cbits/HsGLUT.c 16 -hOpenGL_marshalBitmapFont(int fontID) +hs_GLUT_marshalBitmapFont(int fontID) hunk ./cbits/HsGLUT.c 31 -hOpenGL_marshalStrokeFont(int fontID) +hs_GLUT_marshalStrokeFont(int fontID) hunk ./include/HsGLUT.h.in 42 -extern void* hOpenGL_marshalBitmapFont(int fontID); -extern void* hOpenGL_marshalStrokeFont(int fontID); +extern void* hs_GLUT_marshalBitmapFont(int fontID); +extern void* hs_GLUT_marshalStrokeFont(int fontID); addfile ./Graphics/UI/GLUT/Extensions.hs addfile ./include/HsGLUTExt.h hunk ./Graphics/UI/GLUT/Extensions.hs 1 +-- #hide +-------------------------------------------------------------------------------- +-- | +-- Module : Graphics.UI.GLUT.Extensions +-- Copyright : (c) Sven Panne 2002-2004 +-- License : BSD-style (see the file libraries/OpenGL/LICENSE) +-- +-- Maintainer : sven.panne@aedion.de +-- Stability : provisional +-- Portability : portable +-- +-- This is a purely internal module for handling an OpenGL-like extension +-- mechanism for GLUT. +-- +-------------------------------------------------------------------------------- + +module Graphics.UI.GLUT.Extensions ( + FunPtr, unsafePerformIO, + Invoker, getProcAddress -- used only internally +) where + +import Foreign.C.String ( CString, withCString ) +import Foreign.Ptr ( FunPtr, nullFunPtr ) +import System.IO.Unsafe ( unsafePerformIO ) + +-------------------------------------------------------------------------------- + +type Invoker a = FunPtr a -> a + +getProcAddress :: String -> String -> IO (FunPtr a) +getProcAddress ext call = + throwIfNull ("unknown GLUT call " ++ call ++ ", check for " ++ ext) $ + withCString call hs_GLUT_getProcAddress + +throwIfNull :: String -> IO (FunPtr a) -> IO (FunPtr a) +throwIfNull msg act = do + res <- act + if res == nullFunPtr + then ioError (userError msg) + else return res + +foreign import CALLCONV unsafe "hs_GLUT_getProcAddress" hs_GLUT_getProcAddress + :: CString -> IO (FunPtr a) hunk ./cbits/HsGLUT.c 40 +/* procName is really a const char*, but currently we can't specify this in + Haskell's FFI and consequently get a warning from the C compiler. */ +void* +hs_GLUT_getProcAddress(char *procName) +{ +#if (FREEGLUT || GLUT_API_VERSION >= 5) + return glutGetProcAddress(procName); +#else + return NULL; +#endif +} + hunk ./include/HsGLUT.h.in 44 +extern void* hs_GLUT_getProcAddress(char *procName); hunk ./include/HsGLUTExt.h 1 +/* ----------------------------------------------------------------------------- + * + * Module : GLUT extension support for Graphics.UI.GLUT + * Copyright : (c) Sven Panne 2002-2004 + * License : BSD-style (see the file libraries/OpenGL/LICENSE) + * + * Maintainer : sven.panne@aedion.de + * Stability : provisional + * Portability : portable + * + * This header should only define preprocessor macros! + * + * -------------------------------------------------------------------------- */ + +#ifndef HSGLUTEXT_H +#define HSGLUTEXT_H + +/* NOTE: The macro must immediately start with the foreign declaration, + otherwise the magic mangler (hack_foreign) in the Hugs build system + doesn't recognize it. */ +#define EXTENSION_ENTRY(_msg,_entry,_ty) \ +foreign import CALLCONV unsafe "dynamic" dyn_/**/_entry :: Graphics.UI.GLUT.Extensions.Invoker (_ty) ; \ +_entry :: (_ty) ; \ +_entry = dyn_/**/_entry ptr_/**/_entry ; \ +ptr_/**/_entry :: FunPtr a ; \ +ptr_/**/_entry = unsafePerformIO (Graphics.UI.GLUT.Extensions.getProcAddress (_msg) ("_entry")) ; \ +{-# NOINLINE ptr_/**/_entry #-} + +#endif hunk ./package.conf.in 30 + Graphics.UI.GLUT.Extensions, hunk ./Graphics/UI/GLUT/Begin.hs 19 - mainLoop + mainLoop, mainLoopEvent, leaveMainLoop hunk ./Graphics/UI/GLUT/Begin.hs 22 +import Graphics.UI.GLUT.Extensions + +-------------------------------------------------------------------------------- + +#include "HsGLUTExt.h" + +-------------------------------------------------------------------------------- + hunk ./Graphics/UI/GLUT/Begin.hs 36 +-------------------------------------------------------------------------------- + +-- | (/freeglut only/) Process one iteration's worth of events in its event loop. +-- This allows the application to control its own event loop and still use the +-- GLUT package. + +mainLoopEvent :: IO () +mainLoopEvent = glutMainLoopEvent + +EXTENSION_ENTRY("freeglut",glutMainLoopEvent,IO ()) + +-------------------------------------------------------------------------------- + +-- | (/freeglut only/) Stop the event loop. If the GLUT_ACTION_ON_WINDOW_CLOSE +-- option has been set to GLUT_ACTION_CONTINUE_EXECUTION, control will return +-- to the function which called 'mainLoop'; otherwise the application will exit. +-- +-- If the application has two nested calls to 'mainLoop' and calls +-- 'leaveMainLoop', the behaviour is undefined. It may leave only the inner +-- nested loop or it may leave both loops. If the reader has a strong preference +-- for one behaviour over the other he should contact the freeglut Programming +-- Consortium and ask for the code to be fixed. + +leaveMainLoop :: IO () +leaveMainLoop = glutLeaveMainLoop + +EXTENSION_ENTRY("freeglut",glutLeaveMainLoop,IO ()) + hunk ./Graphics/UI/GLUT/Callbacks/Registration.hs 41 + | CloseCB -- freeglut only hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 23 + -- * Window close callback + CloseCallback, closeCallback, + hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 257 +-------------------------------------------------------------------------------- + +type CloseCallback = IO () + +closeCallback :: SettableStateVar (Maybe CloseCallback) +closeCallback = makeSettableStateVar $ + setCallback CloseCB glutCloseFunc makeCloseCallback + +foreign import ccall "wrapper" + makeCloseCallback :: CloseCallback -> IO (FunPtr CloseCallback) + +foreign import CALLCONV unsafe "glutCloseFunc" + glutCloseFunc :: FunPtr CloseCallback -> IO () + hunk ./Graphics/UI/GLUT/FreeGLUT.hs 18 -import Foreign.Ptr ( Ptr, FunPtr ) -import Foreign.C.String ( CString ) +import Foreign.Ptr ( Ptr ) hunk ./Graphics/UI/GLUT/FreeGLUT.hs 66 --- Process loop function - -foreign import CALLCONV unsafe "glutMainLoopEvent" - glutMainLoopEvent :: IO () - -foreign import CALLCONV unsafe "glutLeaveMainLoop" - glutLeaveMainLoop :: IO () - ------------------------------------------------------------------------------ --- Window-specific callback functions -{- -foreign import CALLCONV unsafe "glutMouseWheelFunc" - void glutMouseWheelFunc( void (* callback)( int, int, int, int ) ); - -foreign import CALLCONV unsafe "glutCloseFunc" - void glutCloseFunc( void (* callback)( void ) ); - -foreign import CALLCONV unsafe "glutWMCloseFunc" - void glutWMCloseFunc( void (* callback)( void ) ); - -foreign import CALLCONV unsafe "glutMenuDestroyFunc" - void glutMenuDestroyFunc( void (* callback)( void ) ); --} ------------------------------------------------------------------------------ hunk ./Graphics/UI/GLUT/FreeGLUT.hs 71 ------------------------------------------------------------------------------ --- User-data manipulation - -foreign import CALLCONV unsafe "glutGetWindowData" - glutGetWindowData :: IO (Ptr a) - -foreign import CALLCONV unsafe "glutSetWindowData" - glutSetWindowData :: Ptr a -> IO () - -foreign import CALLCONV unsafe "glutGetMenuData" - glutGetMenuData :: IO (Ptr a) - -foreign import CALLCONV unsafe "glutSetMenuData" - glutSetMenuData :: Ptr a -> IO () - hunk ./Graphics/UI/GLUT/FreeGLUT.hs 80 -foreign import CALLCONV unsafe "glutBitmapString" - glutBitmapString :: Ptr a -> CString -> IO () - -foreign import CALLCONV unsafe "glutStrokeString" - glutStrokeString :: Ptr a -> CString -> IO () - hunk ./Graphics/UI/GLUT/FreeGLUT.hs 101 ------------------------------------------------------------------------------ --- Extension functions -foreign import CALLCONV unsafe "glutGetProcAddress" - glutGetProcAddress :: CString -> IO (FunPtr a) - hunk ./cbits/HsGLUT.c 48 - return NULL; + return (void*)0; hunk ./Graphics/UI/GLUT/Fonts.hs 30 -import Graphics.Rendering.OpenGL.GL.BasicTypes ( GLint ) +import Graphics.Rendering.OpenGL.GL.BasicTypes ( GLint, GLfloat ) hunk ./Graphics/UI/GLUT/Fonts.hs 60 + -- | (/freeglut only/) For a bitmap font, return the maximum height of the + -- characters in the given font measured in pixels. For a stroke font, + -- return the width in units. + + fontHeight :: a -> IO GLfloat hunk ./Graphics/UI/GLUT/Fonts.hs 67 - renderString = bitmapString - stringWidth f = liftM fromIntegral . bitmapLength f + renderString = bitmapString + stringWidth = bitmapLength + fontHeight = bitmapHeight hunk ./Graphics/UI/GLUT/Fonts.hs 73 - renderString = strokeString - stringWidth f = liftM fromIntegral . strokeLength f + renderString = strokeString + stringWidth = strokeLength + fontHeight = strokeHeight hunk ./Graphics/UI/GLUT/Fonts.hs 166 -foreign import CALLCONV unsafe "glutStrokeCharacter" glutStrokeCharacter :: - GLUTstrokeFont -> CInt -> IO () +foreign import CALLCONV unsafe "glutStrokeCharacter" + glutStrokeCharacter :: GLUTstrokeFont -> CInt -> IO () hunk ./Graphics/UI/GLUT/Fonts.hs 174 - -> IO CInt -- ^ Width in pixels. + -> IO GLint -- ^ Width in pixels. hunk ./Graphics/UI/GLUT/Fonts.hs 177 - withCString s (glutBitmapLength i) + liftM fromIntegral $ withCString s (glutBitmapLength i) hunk ./Graphics/UI/GLUT/Fonts.hs 179 -foreign import CALLCONV unsafe "glutBitmapLength" glutBitmapLength :: - GLUTbitmapFont -> CString -> IO CInt +foreign import CALLCONV unsafe "glutBitmapLength" + glutBitmapLength :: GLUTbitmapFont -> CString -> IO CInt hunk ./Graphics/UI/GLUT/Fonts.hs 187 - -> IO CInt -- ^ Width in units. + -> IO GLint -- ^ Width in units. hunk ./Graphics/UI/GLUT/Fonts.hs 190 - withCString s (glutStrokeLength i) + liftM fromIntegral $ withCString s (glutStrokeLength i) + +foreign import CALLCONV unsafe "glutStrokeLength" + glutStrokeLength :: GLUTstrokeFont -> CString -> IO CInt + +-------------------------------------------------------------------------------- + +bitmapHeight :: BitmapFont -- ^ Bitmap font to use. + -> IO GLfloat -- ^ Height in pixels. +bitmapHeight f = liftM fromIntegral $ glutBitmapHeight =<< marhshalBitmapFont f + +foreign import CALLCONV unsafe "glutBitmapHeight" + glutBitmapHeight :: GLUTbitmapFont -> IO CInt + +-------------------------------------------------------------------------------- + +strokeHeight :: StrokeFont -- ^ Stroke font to use. + -> IO GLfloat -- ^ Height in units. +strokeHeight f = glutStrokeHeight =<< marhshalStrokeFont f hunk ./Graphics/UI/GLUT/Fonts.hs 210 -foreign import CALLCONV unsafe "glutStrokeLength" glutStrokeLength :: - GLUTstrokeFont -> CString -> IO CInt +foreign import CALLCONV unsafe "glutStrokeHeight" + glutStrokeHeight :: GLUTstrokeFont -> IO GLfloat hunk ./Graphics/UI/GLUT/FreeGLUT.hs 20 -import Graphics.Rendering.OpenGL.GL.BasicTypes ( - GLint, GLenum, GLfloat, GLdouble ) +import Graphics.Rendering.OpenGL.GL.BasicTypes ( GLint, GLenum, GLdouble ) hunk ./Graphics/UI/GLUT/FreeGLUT.hs 70 ------------------------------------------------------------------------------ --- Font stuff - -foreign import CALLCONV unsafe "glutBitmapHeight" - glutBitmapHeight :: Ptr a -> IO CInt - -foreign import CALLCONV unsafe "glutStrokeHeight" - glutStrokeHeight :: Ptr a -> IO GLfloat - hunk ./Graphics/UI/GLUT/Begin.hs 45 -EXTENSION_ENTRY("freeglut",glutMainLoopEvent,IO ()) +EXTENSION_ENTRY(safe,"freeglut",glutMainLoopEvent,IO ()) hunk ./Graphics/UI/GLUT/Begin.hs 62 -EXTENSION_ENTRY("freeglut",glutLeaveMainLoop,IO ()) +EXTENSION_ENTRY(safe,"freeglut",glutLeaveMainLoop,IO ()) hunk ./include/HsGLUTExt.h 21 -#define EXTENSION_ENTRY(_msg,_entry,_ty) \ -foreign import CALLCONV unsafe "dynamic" dyn_/**/_entry :: Graphics.UI.GLUT.Extensions.Invoker (_ty) ; \ +#define EXTENSION_ENTRY(_saftey,_msg,_entry,_ty) \ +foreign import CALLCONV _saftey "dynamic" dyn_/**/_entry :: Graphics.UI.GLUT.Extensions.Invoker (_ty) ; \ hunk ./Graphics/UI/GLUT/Fonts.hs 31 +import Graphics.UI.GLUT.Extensions hunk ./Graphics/UI/GLUT/Fonts.hs 39 +#include "HsGLUTExt.h" + +-------------------------------------------------------------------------------- + hunk ./Graphics/UI/GLUT/Fonts.hs 206 -foreign import CALLCONV unsafe "glutBitmapHeight" - glutBitmapHeight :: GLUTbitmapFont -> IO CInt +EXTENSION_ENTRY(unsafe,"freeglut",glutBitmapHeight,GLUTbitmapFont -> IO CInt) hunk ./Graphics/UI/GLUT/Fonts.hs 214 -foreign import CALLCONV unsafe "glutStrokeHeight" - glutStrokeHeight :: GLUTstrokeFont -> IO GLfloat +EXTENSION_ENTRY(unsafe,"freeglut",glutStrokeHeight,GLUTstrokeFont -> IO GLfloat) hunk ./Graphics/UI/GLUT/FreeGLUT.hs 18 -import Foreign.Ptr ( Ptr ) hunk ./Graphics/UI/GLUT/FreeGLUT.hs 19 -import Graphics.Rendering.OpenGL.GL.BasicTypes ( GLint, GLenum, GLdouble ) +import Graphics.Rendering.OpenGL.GL.BasicTypes ( GLenum ) hunk ./Graphics/UI/GLUT/FreeGLUT.hs 69 ------------------------------------------------------------------------------ --- Geometry functions - -foreign import CALLCONV unsafe "glutWireRhombicDodecahedron" - glutWireRhombicDodecahedron :: IO () - -foreign import CALLCONV unsafe "glutSolidRhombicDodecahedron" - glutSolidRhombicDodecahedron :: IO () - -foreign import CALLCONV unsafe "glutWireSierpinskiSponge" - glutWireSierpinskiSponge :: CInt -> Ptr GLdouble -> GLdouble -> IO () - -foreign import CALLCONV unsafe "glutSolidSierpinskiSponge" - glutSolidSierpinskiSponge :: CInt -> Ptr GLdouble -> GLdouble -> IO () - -foreign import CALLCONV unsafe "glutWireCylinder" - glutWireCylinder :: GLdouble -> GLdouble -> GLint -> GLint -> IO () - -foreign import CALLCONV unsafe "glutSolidCylinder" - glutSolidCylinder :: GLdouble -> GLdouble -> GLint -> GLint -> IO () - hunk ./Graphics/UI/GLUT/Objects.hs 36 -import Graphics.Rendering.OpenGL.GL.BasicTypes ( GLint ) +import Foreign.C.Types ( CInt ) +import Foreign.Marshal.Utils ( with ) +import Foreign.Ptr ( Ptr ) +import Graphics.Rendering.OpenGL.GL.BasicTypes ( GLint, GLdouble ) +import Graphics.Rendering.OpenGL.GL.VertexSpec ( Vertex3(..) ) hunk ./Graphics/UI/GLUT/Objects.hs 42 +import Graphics.UI.GLUT.Extensions + +-------------------------------------------------------------------------------- + +#include "HsGLUTExt.h" hunk ./Graphics/UI/GLUT/Objects.hs 104 + | -- | (/freeglut only/) A rhombic dodecahedron whose corners are at most a + -- distance of one from the origin. The rhombic dodecahedron has faces + -- which are identical rhombi, but which have some vertices at which three + -- faces meet and some vertices at which four faces meet. The length of + -- each side is @(sqrt 3)\/2@. Vertices at which four faces meet are found + -- at @(0, 0, +\/-1)@ and @(+\/-(sqrt 2)\/2, +\/-(sqrt 2)\/2, 0)@. + RhombicDodecahedron + | -- |(/freeglut only/) A cylinder + Cylinder' Radius Height Slices Stacks + | -- |(/freeglut only/) A Sierpinski sponge + SierpinskiSponge NumLevels Height hunk ./Graphics/UI/GLUT/Objects.hs 119 -type Sides = GLint -type Rings = GLint +type Sides = GLint +type Rings = GLint +type NumLevels = GLint hunk ./Graphics/UI/GLUT/Objects.hs 128 -renderObject Solid (Cube h) = solidCube h -renderObject Wireframe (Cube h) = wireCube h -renderObject Solid Dodecahedron = solidDodecahedron -renderObject Wireframe Dodecahedron = wireDodecahedron -renderObject Solid Icosahedron = solidIcosahedron -renderObject Wireframe Icosahedron = wireIcosahedron -renderObject Solid Octahedron = solidOctahedron -renderObject Wireframe Octahedron = wireOctahedron -renderObject Solid Tetrahedron = solidTetrahedron -renderObject Wireframe Tetrahedron = wireTetrahedron -renderObject Solid (Sphere' r s t) = solidSphere r s t -renderObject Wireframe (Sphere' r s t) = wireSphere r s t -renderObject Solid (Cone r h s t) = solidCone r h s t -renderObject Wireframe (Cone r h s t) = wireCone r h s t -renderObject Solid (Torus i o s r) = solidTorus i o s r -renderObject Wireframe (Torus i o s r) = wireTorus i o s r -renderObject Solid (Teapot h) = solidTeapot h -renderObject Wireframe (Teapot h) = wireTeapot h +renderObject Solid (Cube h) = solidCube h +renderObject Wireframe (Cube h) = wireCube h +renderObject Solid Dodecahedron = solidDodecahedron +renderObject Wireframe Dodecahedron = wireDodecahedron +renderObject Solid Icosahedron = solidIcosahedron +renderObject Wireframe Icosahedron = wireIcosahedron +renderObject Solid Octahedron = solidOctahedron +renderObject Wireframe Octahedron = wireOctahedron +renderObject Solid Tetrahedron = solidTetrahedron +renderObject Wireframe Tetrahedron = wireTetrahedron +renderObject Solid (Sphere' r s t) = solidSphere r s t +renderObject Wireframe (Sphere' r s t) = wireSphere r s t +renderObject Solid (Cone r h s t) = solidCone r h s t +renderObject Wireframe (Cone r h s t) = wireCone r h s t +renderObject Solid (Torus i o s r) = solidTorus i o s r +renderObject Wireframe (Torus i o s r) = wireTorus i o s r +renderObject Solid (Teapot h) = solidTeapot h +renderObject Wireframe (Teapot h) = wireTeapot h +renderObject Solid RhombicDodecahedron = glutSolidRhombicDodecahedron +renderObject Wireframe RhombicDodecahedron = glutWireRhombicDodecahedron +renderObject Solid (Cylinder' r h s t) = glutSolidCylinder r h s t +renderObject Wireframe (Cylinder' r h s t) = glutWireCylinder r h s t +renderObject Solid (SierpinskiSponge n h) = solidSierpinskiSponge n h +renderObject Wireframe (SierpinskiSponge n h) = wireSierpinskiSponge n h hunk ./Graphics/UI/GLUT/Objects.hs 304 +-------------------------------------------------------------------------------- + +EXTENSION_ENTRY(unsafe,"freeglut",glutSolidRhombicDodecahedron,IO ()) + +EXTENSION_ENTRY(unsafe,"freeglut",glutWireRhombicDodecahedron,IO ()) + +-------------------------------------------------------------------------------- + +EXTENSION_ENTRY(unsafe,"freeglut",glutSolidCylinder,Radius -> Height -> Slices -> Stacks -> IO ()) + +EXTENSION_ENTRY(unsafe,"freeglut",glutWireCylinder,Radius -> Height -> Slices -> Stacks -> IO ()) + +-------------------------------------------------------------------------------- + +solidSierpinskiSponge :: NumLevels -> Height -> IO () +solidSierpinskiSponge = sierpinskiSponge glutSolidSierpinskiSponge + +EXTENSION_ENTRY(unsafe,"freeglut",glutSolidSierpinskiSponge,CInt -> Ptr (Vertex3 GLdouble) -> Height -> IO ()) + +wireSierpinskiSponge :: NumLevels -> Height -> IO () +wireSierpinskiSponge = sierpinskiSponge glutWireSierpinskiSponge + +EXTENSION_ENTRY(unsafe,"freeglut",glutWireSierpinskiSponge,CInt -> Ptr (Vertex3 GLdouble) -> Height -> IO ()) + +sierpinskiSponge :: (CInt -> Ptr (Vertex3 GLdouble) -> Height -> IO ()) -> NumLevels -> Height -> IO () +sierpinskiSponge f n h = + with (Vertex3 0 0 0) $ \offsetBuf -> + f (fromIntegral n) offsetBuf h + hunk ./cbits/HsGLUT.c 15 +/* needed only for GLUT_GET_PROC_ADDRESS_IS_BROKEN */ +#include "HsGLUT.h" + hunk ./cbits/HsGLUT.c 49 +#if GLUT_GET_PROC_ADDRESS_IS_BROKEN + /* There are a few typos/omissions in freeglut 2.20 */ + if (strcmp(procName, "glutWireCylinder" ) == 0) return (void*)glutWireCylinder; + if (strcmp(procName, "glutSolidCylinder" ) == 0) return (void*)glutSolidCylinder; + if (strcmp(procName, "glutWireSierpinskiSponge" ) == 0) return (void*)glutWireSierpinskiSponge; + if (strcmp(procName, "glutSolidSierpinskiSponge") == 0) return (void*)glutSolidSierpinskiSponge; +#endif hunk ./Graphics/UI/GLUT/Objects.hs 30 - Sides, Rings, + Sides, Rings, NumLevels, hunk ./cbits/HsGLUT.c 17 + +#if (FREEGLUT || GLUT_API_VERSION >= 5) && GLUT_GET_PROC_ADDRESS_IS_BROKEN +#include +#endif hunk ./Graphics/UI/GLUT/Objects.hs 61 --- | GLUT offers three types of objects: +-- | GLUT offers five types of objects: hunk ./Graphics/UI/GLUT/Objects.hs 66 +-- * A rhombic dodecahedron, see +-- . +-- hunk ./Graphics/UI/GLUT/Objects.hs 74 +-- +-- * A Sierpinski sponge, see +-- . hunk ./Graphics/UI/GLUT/Objects.hs 94 + | -- | (/freeglut only/) A rhombic dodecahedron whose corners are at most a + -- distance of one from the origin. The rhombic dodecahedron has faces + -- which are identical rhombi, but which have some vertices at which three + -- faces meet and some vertices at which four faces meet. The length of + -- each side is @(sqrt 3)\/2@. Vertices at which four faces meet are found + -- at @(0, 0, +\/-1)@ and @(+\/-(sqrt 2)\/2, +\/-(sqrt 2)\/2, 0)@. + RhombicDodecahedron hunk ./Graphics/UI/GLUT/Objects.hs 110 + | -- |(/freeglut only/) A cylinder oriented along the Z axis. The base of the + -- cylinder is placed at Z = 0, and the top at Z = the given height. The + -- cylinder is subdivided around the Z axis into slices, and along the Z + -- axis into stacks. + Cylinder' Radius Height Slices Stacks hunk ./Graphics/UI/GLUT/Objects.hs 122 - | -- | (/freeglut only/) A rhombic dodecahedron whose corners are at most a - -- distance of one from the origin. The rhombic dodecahedron has faces - -- which are identical rhombi, but which have some vertices at which three - -- faces meet and some vertices at which four faces meet. The length of - -- each side is @(sqrt 3)\/2@. Vertices at which four faces meet are found - -- at @(0, 0, +\/-1)@ and @(+\/-(sqrt 2)\/2, +\/-(sqrt 2)\/2, 0)@. - RhombicDodecahedron - | -- |(/freeglut only/) A cylinder - Cylinder' Radius Height Slices Stacks - | -- |(/freeglut only/) A Sierpinski sponge - SierpinskiSponge NumLevels Height + | -- |(/freeglut only/) A Sierpinski sponge of a given level, where a level + -- 0 sponge is the same as a 'Tetrahedron'. + SierpinskiSponge NumLevels hunk ./Graphics/UI/GLUT/Objects.hs 138 -renderObject Solid (Cube h) = solidCube h -renderObject Wireframe (Cube h) = wireCube h -renderObject Solid Dodecahedron = solidDodecahedron -renderObject Wireframe Dodecahedron = wireDodecahedron -renderObject Solid Icosahedron = solidIcosahedron -renderObject Wireframe Icosahedron = wireIcosahedron -renderObject Solid Octahedron = solidOctahedron -renderObject Wireframe Octahedron = wireOctahedron -renderObject Solid Tetrahedron = solidTetrahedron -renderObject Wireframe Tetrahedron = wireTetrahedron -renderObject Solid (Sphere' r s t) = solidSphere r s t -renderObject Wireframe (Sphere' r s t) = wireSphere r s t -renderObject Solid (Cone r h s t) = solidCone r h s t -renderObject Wireframe (Cone r h s t) = wireCone r h s t -renderObject Solid (Torus i o s r) = solidTorus i o s r -renderObject Wireframe (Torus i o s r) = wireTorus i o s r -renderObject Solid (Teapot h) = solidTeapot h -renderObject Wireframe (Teapot h) = wireTeapot h -renderObject Solid RhombicDodecahedron = glutSolidRhombicDodecahedron -renderObject Wireframe RhombicDodecahedron = glutWireRhombicDodecahedron -renderObject Solid (Cylinder' r h s t) = glutSolidCylinder r h s t -renderObject Wireframe (Cylinder' r h s t) = glutWireCylinder r h s t -renderObject Solid (SierpinskiSponge n h) = solidSierpinskiSponge n h -renderObject Wireframe (SierpinskiSponge n h) = wireSierpinskiSponge n h +renderObject Solid (Cube h) = solidCube h +renderObject Wireframe (Cube h) = wireCube h +renderObject Solid Dodecahedron = solidDodecahedron +renderObject Wireframe Dodecahedron = wireDodecahedron +renderObject Solid Icosahedron = solidIcosahedron +renderObject Wireframe Icosahedron = wireIcosahedron +renderObject Solid Octahedron = solidOctahedron +renderObject Wireframe Octahedron = wireOctahedron +renderObject Solid Tetrahedron = solidTetrahedron +renderObject Wireframe Tetrahedron = wireTetrahedron +renderObject Solid RhombicDodecahedron = glutSolidRhombicDodecahedron +renderObject Wireframe RhombicDodecahedron = glutWireRhombicDodecahedron +renderObject Solid (Sphere' r s t) = solidSphere r s t +renderObject Wireframe (Sphere' r s t) = wireSphere r s t +renderObject Solid (Cone r h s t) = solidCone r h s t +renderObject Wireframe (Cone r h s t) = wireCone r h s t +renderObject Solid (Cylinder' r h s t) = glutSolidCylinder r h s t +renderObject Wireframe (Cylinder' r h s t) = glutWireCylinder r h s t +renderObject Solid (Torus i o s r) = solidTorus i o s r +renderObject Wireframe (Torus i o s r) = wireTorus i o s r +renderObject Solid (Teapot h) = solidTeapot h +renderObject Wireframe (Teapot h) = wireTeapot h +renderObject Solid (SierpinskiSponge n) = solidSierpinskiSponge n +renderObject Wireframe (SierpinskiSponge n) = wireSierpinskiSponge n hunk ./Graphics/UI/GLUT/Objects.hs 230 +EXTENSION_ENTRY(unsafe,"freeglut",glutSolidRhombicDodecahedron,IO ()) + +EXTENSION_ENTRY(unsafe,"freeglut",glutWireRhombicDodecahedron,IO ()) + +-------------------------------------------------------------------------------- + hunk ./Graphics/UI/GLUT/Objects.hs 286 +EXTENSION_ENTRY(unsafe,"freeglut",glutSolidCylinder,Radius -> Height -> Slices -> Stacks -> IO ()) + +EXTENSION_ENTRY(unsafe,"freeglut",glutWireCylinder,Radius -> Height -> Slices -> Stacks -> IO ()) + +-------------------------------------------------------------------------------- + hunk ./Graphics/UI/GLUT/Objects.hs 328 -EXTENSION_ENTRY(unsafe,"freeglut",glutSolidRhombicDodecahedron,IO ()) - -EXTENSION_ENTRY(unsafe,"freeglut",glutWireRhombicDodecahedron,IO ()) - --------------------------------------------------------------------------------- - -EXTENSION_ENTRY(unsafe,"freeglut",glutSolidCylinder,Radius -> Height -> Slices -> Stacks -> IO ()) - -EXTENSION_ENTRY(unsafe,"freeglut",glutWireCylinder,Radius -> Height -> Slices -> Stacks -> IO ()) - --------------------------------------------------------------------------------- - -solidSierpinskiSponge :: NumLevels -> Height -> IO () +solidSierpinskiSponge :: NumLevels -> IO () hunk ./Graphics/UI/GLUT/Objects.hs 333 -wireSierpinskiSponge :: NumLevels -> Height -> IO () +wireSierpinskiSponge :: NumLevels -> IO () hunk ./Graphics/UI/GLUT/Objects.hs 338 -sierpinskiSponge :: (CInt -> Ptr (Vertex3 GLdouble) -> Height -> IO ()) -> NumLevels -> Height -> IO () -sierpinskiSponge f n h = +-- for consistency, we hide the offset and scale on the Haskell side +sierpinskiSponge :: (CInt -> Ptr (Vertex3 GLdouble) -> Height -> IO ()) -> NumLevels -> IO () +sierpinskiSponge f n = hunk ./Graphics/UI/GLUT/Objects.hs 342 - f (fromIntegral n) offsetBuf h + f (fromIntegral n) offsetBuf 1 hunk ./package.conf.in 59 -extra_frameworks: GLUT_FRAMEWORKS +extra-frameworks: GLUT_FRAMEWORKS hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 55 -import Foreign.Ptr ( FunPtr ) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 73 +import Graphics.UI.GLUT.Extensions + +-------------------------------------------------------------------------------- + +#include "HsGLUTExt.h" hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 272 -foreign import CALLCONV unsafe "glutCloseFunc" - glutCloseFunc :: FunPtr CloseCallback -> IO () +EXTENSION_ENTRY(unsafe,"freeglut",glutCloseFunc,FunPtr CloseCallback -> IO ()) hunk ./Graphics/UI/GLUT/FreeGLUT.hs 20 +import Graphics.UI.GLUT.Extensions + +-------------------------------------------------------------------------------- + +#include "HsGLUTExt.h" hunk ./Graphics/UI/GLUT/FreeGLUT.hs 71 -foreign import CALLCONV unsafe "glutSetOption" - glutSetOption :: GLenum -> CInt -> IO () +EXTENSION_ENTRY(unsafe,"freeglut",glutSetOption,GLenum -> CInt -> IO ()) hunk ./cbits/HsGLUT.c 16 -#include "HsGLUT.h" +#include "HsGLUTConfig.h" hunk ./Makefile 38 + +package.conf.inplace \ +package.conf.installed : include/HsGLUTConfig.h + +Graphics/UI/GLUT/Begin.$(way_)o \ +Graphics/UI/GLUT/Callbacks/Window.$(way_)o \ +Graphics/UI/GLUT/Fonts.$(way_)o \ +Graphics/UI/GLUT/FreeGLUT.$(way_)o \ +Graphics/UI/GLUT/Objects.$(way_)o : include/HsGLUTExt.h + +# ----------------------------------------------------------------------------- hunk ./Graphics/UI/GLUT/Constants.hs 142 - glut_WINDOW_FORMAT_ID :: GLenum + glut_WINDOW_FORMAT_ID, glut_ACTION_ON_WINDOW_CLOSE, glut_WINDOW_BORDER_WIDTH, + glut_WINDOW_HEADER_HEIGHT, glut_VERSION, glut_RENDERING_CONTEXT, + glut_DIRECT_RENDERING :: GLenum hunk ./Graphics/UI/GLUT/Constants.hs 181 +glut_ACTION_ON_WINDOW_CLOSE = 505 +glut_WINDOW_BORDER_WIDTH = 506 +glut_WINDOW_HEADER_HEIGHT = 507 +glut_VERSION = 508 +glut_RENDERING_CONTEXT = 509 +glut_DIRECT_RENDERING = 510 hunk ./Graphics/UI/GLUT/Constants.hs 315 +----------------------------------------------------------------------------- +-- Direct/indirect rendering context options (has meaning only in unix/x11), +-- see glut_DIRECT_RENDERING (freeglut extension) +glut_FORCE_INDIRECT_CONTEXT, glut_ALLOW_DIRECT_CONTEXT, + glut_TRY_DIRECT_CONTEXT, glut_FORCE_DIRECT_CONTEXT :: CInt +glut_FORCE_INDIRECT_CONTEXT = 0 +glut_ALLOW_DIRECT_CONTEXT = 1 +glut_TRY_DIRECT_CONTEXT = 2 +glut_FORCE_DIRECT_CONTEXT = 3 + +----------------------------------------------------------------------------- +-- Behaviour when the user clicks on an "x" to close a window, see +-- glut_ACTION_ON_WINDOW_CLOSE (freeglut extension) +glut_ACTION_EXIT, glut_ACTION_GLUTMAINLOOP_RETURNS, + glut_ACTION_CONTINUE_EXECUTION :: CInt +glut_ACTION_EXIT = 0 +glut_ACTION_GLUTMAINLOOP_RETURNS = 1 +glut_ACTION_CONTINUE_EXECUTION = 2 + +----------------------------------------------------------------------------- +-- Create a new rendering context when the user opens a new window? See +-- glut_RENDERING_CONTEXT (freeglut extension) +glut_CREATE_NEW_CONTEXT, glut_USE_CURRENT_CONTEXT :: CInt +glut_CREATE_NEW_CONTEXT = 0 +glut_USE_CURRENT_CONTEXT = 1 + hunk ./Graphics/UI/GLUT/Extensions.hs 19 - Invoker, getProcAddress -- used only internally + Invoker, getProcAddress, getProcAddressInternal -- used only internally hunk ./Graphics/UI/GLUT/Extensions.hs 33 - withCString call hs_GLUT_getProcAddress + getProcAddressInternal call hunk ./Graphics/UI/GLUT/Extensions.hs 42 +getProcAddressInternal :: String -> IO (FunPtr a) +getProcAddressInternal call = withCString call hs_GLUT_getProcAddress + hunk ./Graphics/UI/GLUT/FreeGLUT.hs 1 --- #hide ------------------------------------------------------------------------------ --- | --- Module : Graphics.UI.GLUT.FreeGLUT --- Copyright : (c) Sven Panne 2002-2004 --- License : BSD-style (see the file libraries/GLUT/LICENSE) --- --- Maintainer : sven.panne@aedion.de --- Stability : stable --- Portability : portable --- --- This purely internal module handles all freeglut specific stuff. --- ------------------------------------------------------------------------------ - -module Graphics.UI.GLUT.FreeGLUT where - -import Foreign.C.Types ( CInt ) -import Graphics.Rendering.OpenGL.GL.BasicTypes ( GLenum ) -import Graphics.UI.GLUT.Extensions - --------------------------------------------------------------------------------- - -#include "HsGLUTExt.h" - ------------------------------------------------------------------------------ --- New glutGet parameters - -glut_ACTION_ON_WINDOW_CLOSE, glut_WINDOW_BORDER_WIDTH, - glut_WINDOW_HEADER_HEIGHT, glut_VERSION, glut_RENDERING_CONTEXT, - glut_DIRECT_RENDERING :: GLenum -glut_ACTION_ON_WINDOW_CLOSE = 505 -glut_WINDOW_BORDER_WIDTH = 506 -glut_WINDOW_HEADER_HEIGHT = 507 -glut_VERSION = 508 -glut_RENDERING_CONTEXT = 509 -glut_DIRECT_RENDERING = 510 - ------------------------------------------------------------------------------ --- Direct/indirect rendering context options (has meaning only in unix/x11), --- see glut_DIRECT_RENDERING (freeglut extension) - -glut_FORCE_INDIRECT_CONTEXT, glut_ALLOW_DIRECT_CONTEXT, - glut_TRY_DIRECT_CONTEXT, glut_FORCE_DIRECT_CONTEXT :: CInt -glut_FORCE_INDIRECT_CONTEXT = 0 -glut_ALLOW_DIRECT_CONTEXT = 1 -glut_TRY_DIRECT_CONTEXT = 2 -glut_FORCE_DIRECT_CONTEXT = 3 - ------------------------------------------------------------------------------ --- Behaviour when the user clicks on an "x" to close a window, see --- glut_ACTION_ON_WINDOW_CLOSE (freeglut extension) - -glut_ACTION_EXIT, glut_ACTION_GLUTMAINLOOP_RETURNS, - glut_ACTION_CONTINUE_EXECUTION :: CInt -glut_ACTION_EXIT = 0 -glut_ACTION_GLUTMAINLOOP_RETURNS = 1 -glut_ACTION_CONTINUE_EXECUTION = 2 - ------------------------------------------------------------------------------ --- Create a new rendering context when the user opens a new window? See --- glut_RENDERING_CONTEXT (freeglut extension) - -glut_CREATE_NEW_CONTEXT, glut_USE_CURRENT_CONTEXT :: CInt -glut_CREATE_NEW_CONTEXT = 0 -glut_USE_CURRENT_CONTEXT = 1 - ------------------------------------------------------------------------------ --- State setting and retrieval functions - -EXTENSION_ENTRY(unsafe,"freeglut",glutSetOption,GLenum -> CInt -> IO ()) rmfile ./Graphics/UI/GLUT/FreeGLUT.hs hunk ./Graphics/UI/GLUT/Initialization.hs 39 - initialDisplayCapabilities + initialDisplayCapabilities, + + -- * Controlling the rendering context + RenderingContext(..), renderingContext hunk ./Graphics/UI/GLUT/Initialization.hs 66 - glut_DISPLAY_MODE_POSSIBLE ) -import Graphics.UI.GLUT.QueryUtils ( simpleGet ) + glut_DISPLAY_MODE_POSSIBLE, + glut_RENDERING_CONTEXT, glut_CREATE_NEW_CONTEXT, glut_USE_CURRENT_CONTEXT ) +import Graphics.UI.GLUT.QueryUtils ( simpleGet, glutSetOption ) hunk ./Graphics/UI/GLUT/Initialization.hs 497 +----------------------------------------------------------------------------- + +-- | The rendering context for new windows. + +data RenderingContext + = -- | Create a new context via @glXCreateContext@ or @wglCreateContext@ + -- (default). + CreateNewContext + | -- | Re-use the current rendering context. + UseCurrentContext + deriving ( Eq, Ord, Show ) + +marshalRenderingContext :: RenderingContext -> CInt +marshalRenderingContext CreateNewContext = glut_CREATE_NEW_CONTEXT +marshalRenderingContext UseCurrentContext = glut_USE_CURRENT_CONTEXT + +unmarshalRenderingContext :: CInt -> RenderingContext +unmarshalRenderingContext r + | r == glut_CREATE_NEW_CONTEXT = CreateNewContext + | r == glut_USE_CURRENT_CONTEXT = UseCurrentContext + | otherwise = error "unmarshalRenderingContext" + +----------------------------------------------------------------------------- + +-- | (/freeglut only/) Contains the rendering context for new windows. + +renderingContext :: StateVar RenderingContext +renderingContext = + makeStateVar + (simpleGet unmarshalRenderingContext glut_RENDERING_CONTEXT) + (glutSetOption glut_RENDERING_CONTEXT . marshalRenderingContext) + hunk ./Graphics/UI/GLUT/QueryUtils.hs 17 - Getter, simpleGet, layerGet, deviceGet + Getter, simpleGet, layerGet, deviceGet, glutSetOption hunk ./Graphics/UI/GLUT/QueryUtils.hs 23 +import Graphics.UI.GLUT.Extensions + +-------------------------------------------------------------------------------- + +#include "HsGLUTExt.h" hunk ./Graphics/UI/GLUT/QueryUtils.hs 46 +-- Not really a query function, but it's quite handy to have it here +EXTENSION_ENTRY(unsafe,"freeglut",glutSetOption,GLenum -> CInt -> IO ()) + hunk ./Graphics/UI/GLUT/State.hs 17 + -- * State of all windows + windowBorderWidth, windowHeaderHeight, + hunk ./Graphics/UI/GLUT/State.hs 27 - -- * Timing - elapsedTime, - hunk ./Graphics/UI/GLUT/State.hs 30 + -- * Timing + elapsedTime, + hunk ./Graphics/UI/GLUT/State.hs 42 - AxisCount, PollRate, joystickInfo + AxisCount, PollRate, joystickInfo, + + -- * GLUT information + glutVersion hunk ./Graphics/UI/GLUT/State.hs 50 +import Foreign.Ptr ( nullFunPtr ) hunk ./Graphics/UI/GLUT/State.hs 73 - glut_JOYSTICK_AXES ) + glut_JOYSTICK_AXES, + glut_VERSION, glut_WINDOW_BORDER_WIDTH, glut_WINDOW_HEADER_HEIGHT ) + hunk ./Graphics/UI/GLUT/State.hs 78 +import Graphics.UI.GLUT.Extensions ( getProcAddressInternal ) hunk ./Graphics/UI/GLUT/State.hs 310 +----------------------------------------------------------------------------- + +-- | Contains version of GLUT in the form of +-- @/flavour/ /major/./minor/./patchlevel/@, where @/flavour/@ is one of +-- @GLUT@, @freeglut@ or @OpenGLUT@. + +glutVersion :: GettableStateVar String +glutVersion = makeGettableStateVar $ do + let isGLUT = isUnknown "glutSetOption" + isFreeglut = isUnknown "glutSetWindowStayOnTop" + isUnknown = liftM (== nullFunPtr) . getProcAddressInternal + showVersionPart x = shows (x `mod` 100) + showVersion v = showVersionPart (v `div` 10000) . showChar '.' . + showVersionPart (v `div` 100) . showChar '.' . + showVersionPart v + g <- isGLUT + if g + then return "GLUT 3.7" -- ToDo: just guessing + else do f <- isFreeglut + v <- simpleGet id glut_VERSION + let prefix = if f then "freeglut" else "OpenGLUT" + return $ showString prefix . showChar ' ' . showVersion v $ "" + +----------------------------------------------------------------------------- + +-- | (/freeglut only/) Contains the thickness of the sizing border around the +-- perimeter of a window that can be resized, in pixels. + +windowBorderWidth :: GettableStateVar Int +windowBorderWidth = + makeGettableStateVar (simpleGet fromIntegral glut_WINDOW_BORDER_WIDTH) + +----------------------------------------------------------------------------- + +-- | (/freeglut only/) Contains the height of the header\/caption area of a +-- window in pixels. + +windowHeaderHeight :: GettableStateVar Int +windowHeaderHeight = + makeGettableStateVar (simpleGet fromIntegral glut_WINDOW_HEADER_HEIGHT) + + hunk ./Graphics/UI/GLUT.hs 77 - -import Graphics.UI.GLUT.FreeGLUT hunk ./Makefile 45 -Graphics/UI/GLUT/FreeGLUT.$(way_)o \ -Graphics/UI/GLUT/Objects.$(way_)o : include/HsGLUTExt.h +Graphics/UI/GLUT/Objects.$(way_)o \ +Graphics/UI/GLUT/QueryUtils.$(way_)o : include/HsGLUTExt.h hunk ./package.conf.in 31 - Graphics.UI.GLUT.FreeGLUT, hunk ./Graphics/UI/GLUT/Begin.hs 13 --- 'mainLoop'. +-- 'mainLoop' or handle events iteratively with 'mainLoopEvent'. hunk ./Graphics/UI/GLUT/Begin.hs 18 - -- * Functions - mainLoop, mainLoopEvent, leaveMainLoop + -- * Handling events + mainLoop, mainLoopEvent, leaveMainLoop, + + -- * Controlling the behaviour when windows are closed + ActionOnWindowClose(..), actionOnWindowClose hunk ./Graphics/UI/GLUT/Begin.hs 25 +import Foreign.C.Types ( CInt ) +import Graphics.Rendering.OpenGL.GL.StateVar ( StateVar, makeStateVar ) +import Graphics.UI.GLUT.Constants ( + glut_ACTION_ON_WINDOW_CLOSE, glut_ACTION_EXIT, + glut_ACTION_GLUTMAINLOOP_RETURNS, glut_ACTION_CONTINUE_EXECUTION ) +import Graphics.UI.GLUT.QueryUtils ( simpleGet, glutSetOption ) hunk ./Graphics/UI/GLUT/Begin.hs 58 --- | (/freeglut only/) Stop the event loop. If the GLUT_ACTION_ON_WINDOW_CLOSE --- option has been set to GLUT_ACTION_CONTINUE_EXECUTION, control will return --- to the function which called 'mainLoop'; otherwise the application will exit. +-- | (/freeglut only/) Stop the event loop. If 'actionOnWindowClose' contains +-- 'ContinueExectuion', control will return to the function which called +-- 'mainLoop'; otherwise the application will exit. hunk ./Graphics/UI/GLUT/Begin.hs 73 +-------------------------------------------------------------------------------- + +data ActionOnWindowClose + = Exit + | GLUTMainLoopReturns + | ContinueExectuion + deriving ( Eq, Ord, Show ) + +marshalActionOnWindowClose :: ActionOnWindowClose -> CInt +marshalActionOnWindowClose x = case x of + Exit -> glut_ACTION_EXIT + GLUTMainLoopReturns -> glut_ACTION_GLUTMAINLOOP_RETURNS + ContinueExectuion -> glut_ACTION_CONTINUE_EXECUTION + +unmarshalActionOnWindowClose :: CInt -> ActionOnWindowClose +unmarshalActionOnWindowClose x + | x == glut_ACTION_EXIT = Exit + | x == glut_ACTION_GLUTMAINLOOP_RETURNS = GLUTMainLoopReturns + | x == glut_ACTION_CONTINUE_EXECUTION = ContinueExectuion + | otherwise = error ("unmarshalActionOnWindowClose: illegal value " ++ show x) + +----------------------------------------------------------------------------- + +-- | (/freeglut only/) Behaviour when the user closes a window. + +actionOnWindowClose :: StateVar ActionOnWindowClose +actionOnWindowClose = + makeStateVar + (simpleGet unmarshalActionOnWindowClose glut_ACTION_ON_WINDOW_CLOSE) + (glutSetOption glut_ACTION_ON_WINDOW_CLOSE . marshalActionOnWindowClose) + hunk ./Graphics/UI/GLUT/Initialization.hs 41 - -- * Controlling the rendering context - RenderingContext(..), renderingContext + -- * Controlling the creation of rendering contexts + RenderingContext(..), renderingContext, + + -- * Direct\/indirect rendering + DirectRendering(..), directRendering hunk ./Graphics/UI/GLUT/Initialization.hs 70 - glut_RENDERING_CONTEXT, glut_CREATE_NEW_CONTEXT, glut_USE_CURRENT_CONTEXT ) + glut_RENDERING_CONTEXT, glut_CREATE_NEW_CONTEXT, glut_USE_CURRENT_CONTEXT, + glut_DIRECT_RENDERING, + glut_FORCE_INDIRECT_CONTEXT, glut_ALLOW_DIRECT_CONTEXT, + glut_TRY_DIRECT_CONTEXT, glut_FORCE_DIRECT_CONTEXT ) hunk ./Graphics/UI/GLUT/Initialization.hs 505 --- | The rendering context for new windows. +-- | How rendering context for new windows are created. hunk ./Graphics/UI/GLUT/Initialization.hs 527 --- | (/freeglut only/) Contains the rendering context for new windows. +-- | (/freeglut only/) Controls the creation of rendering contexts for new +-- windows. hunk ./Graphics/UI/GLUT/Initialization.hs 536 +----------------------------------------------------------------------------- + +-- | The kind of GLX rendering context used. Direct rendering provides a +-- performance advantage in some implementations. However, direct rendering +-- contexts cannot be shared outside a single process, and they may be unable +-- to render to GLX pixmaps. + +data DirectRendering + = -- | Rendering is always done through the X server. This corresponds to + -- the command line argument @-indirect@, see 'initialize'. + ForceIndirectContext + | -- | Try to use direct rendering, silently using indirect rendering if this + -- is not possible. + AllowDirectContext + | -- | Try to use direct rendering, issue a warning and use indirect + -- rendering if this is not possible. + TryDirectContext + | -- | Try to use direct rendering, issue an error and terminate the program + -- if this is not possible.This corresponds to the command line argument + -- @-direct@, see 'initialize'. + ForceDirectContext + deriving ( Eq, Ord, Show ) + +marshalDirectRendering :: DirectRendering -> CInt +marshalDirectRendering x = case x of + ForceIndirectContext -> glut_FORCE_INDIRECT_CONTEXT + AllowDirectContext -> glut_ALLOW_DIRECT_CONTEXT + TryDirectContext -> glut_TRY_DIRECT_CONTEXT + ForceDirectContext -> glut_FORCE_DIRECT_CONTEXT + +unmarshalDirectRendering :: CInt -> DirectRendering +unmarshalDirectRendering x + | x == glut_FORCE_INDIRECT_CONTEXT = ForceIndirectContext + | x == glut_ALLOW_DIRECT_CONTEXT = AllowDirectContext + | x == glut_TRY_DIRECT_CONTEXT = TryDirectContext + | x == glut_FORCE_DIRECT_CONTEXT = ForceDirectContext + | otherwise = error ("unmarshalDirectRendering: illegal value " ++ show x) + +----------------------------------------------------------------------------- + +-- | (/freeglut on X11 only/) Controls which kind of rendering context is +-- created when a new one is required. + +directRendering :: StateVar DirectRendering +directRendering = + makeStateVar + (simpleGet unmarshalDirectRendering glut_DIRECT_RENDERING) + (glutSetOption glut_DIRECT_RENDERING . marshalDirectRendering) + hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 42 -unmarshalMenuUsage u - | u == glut_MENU_NOT_IN_USE = NotInUse - | u == glut_MENU_IN_USE = InUse - | otherwise = error "unmarshalMenuUsage" +unmarshalMenuUsage x + | x == glut_MENU_NOT_IN_USE = NotInUse + | x == glut_MENU_IN_USE = InUse + | otherwise = error ("unmarshalMenuUsage: illegal value " ++ show x) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 228 -unmarshalVisibility v - | v == glut_NOT_VISIBLE = NotVisible - | v == glut_VISIBLE = Visible - | otherwise = error "unmarshalVisibility" +unmarshalVisibility x + | x == glut_NOT_VISIBLE = NotVisible + | x == glut_VISIBLE = Visible + | otherwise = error ("unmarshalVisibility: illegal value " ++ show x) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 333 -unmarshalSpecialKey k - | k == glut_KEY_F1 = KeyF1 - | k == glut_KEY_F2 = KeyF2 - | k == glut_KEY_F3 = KeyF3 - | k == glut_KEY_F4 = KeyF4 - | k == glut_KEY_F5 = KeyF5 - | k == glut_KEY_F6 = KeyF6 - | k == glut_KEY_F7 = KeyF7 - | k == glut_KEY_F8 = KeyF8 - | k == glut_KEY_F9 = KeyF9 - | k == glut_KEY_F10 = KeyF10 - | k == glut_KEY_F11 = KeyF11 - | k == glut_KEY_F12 = KeyF12 - | k == glut_KEY_LEFT = KeyLeft - | k == glut_KEY_UP = KeyUp - | k == glut_KEY_RIGHT = KeyRight - | k == glut_KEY_DOWN = KeyDown - | k == glut_KEY_PAGE_UP = KeyPageUp - | k == glut_KEY_PAGE_DOWN = KeyPageDown - | k == glut_KEY_HOME = KeyHome - | k == glut_KEY_END = KeyEnd - | k == glut_KEY_INSERT = KeyInsert - | otherwise = error "unmarshalSpecialKey" +unmarshalSpecialKey x + | x == glut_KEY_F1 = KeyF1 + | x == glut_KEY_F2 = KeyF2 + | x == glut_KEY_F3 = KeyF3 + | x == glut_KEY_F4 = KeyF4 + | x == glut_KEY_F5 = KeyF5 + | x == glut_KEY_F6 = KeyF6 + | x == glut_KEY_F7 = KeyF7 + | x == glut_KEY_F8 = KeyF8 + | x == glut_KEY_F9 = KeyF9 + | x == glut_KEY_F10 = KeyF10 + | x == glut_KEY_F11 = KeyF11 + | x == glut_KEY_F12 = KeyF12 + | x == glut_KEY_LEFT = KeyLeft + | x == glut_KEY_UP = KeyUp + | x == glut_KEY_RIGHT = KeyRight + | x == glut_KEY_DOWN = KeyDown + | x == glut_KEY_PAGE_UP = KeyPageUp + | x == glut_KEY_PAGE_DOWN = KeyPageDown + | x == glut_KEY_HOME = KeyHome + | x == glut_KEY_END = KeyEnd + | x == glut_KEY_INSERT = KeyInsert + | otherwise = error ("unmarshalSpecialKey: illegal value " ++ show x) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 396 -unmarshalKeyState s - | s == glut_DOWN = Down - | s == glut_UP = Up - | otherwise = error "unmarshalKeyState" +unmarshalKeyState x + | x == glut_DOWN = Down + | x == glut_UP = Up + | otherwise = error ("unmarshalKeyState: illegal value " ++ show x) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 533 -unmarshalCrossing c - | c == glut_LEFT = WindowLeft - | c == glut_ENTERED = WindowEntered - | otherwise = error "unmarshalCrossing" +unmarshalCrossing x + | x == glut_LEFT = WindowLeft + | x == glut_ENTERED = WindowEntered + | otherwise = error ("unmarshalCrossing: illegal value " ++ show x) hunk ./Graphics/UI/GLUT/DeviceControl.hs 40 -marshalGlobalKeyRepeat GlobalKeyRepeatOff = glut_KEY_REPEAT_OFF -marshalGlobalKeyRepeat GlobalKeyRepeatOn = glut_KEY_REPEAT_ON -marshalGlobalKeyRepeat GlobalKeyRepeatDefault = glut_KEY_REPEAT_DEFAULT +marshalGlobalKeyRepeat x = case x of + GlobalKeyRepeatOff -> glut_KEY_REPEAT_OFF + GlobalKeyRepeatOn -> glut_KEY_REPEAT_ON + GlobalKeyRepeatDefault -> glut_KEY_REPEAT_DEFAULT hunk ./Graphics/UI/GLUT/DeviceControl.hs 46 -unmarshalGlobalKeyRepeat r - | r == glut_KEY_REPEAT_OFF = GlobalKeyRepeatOff - | r == glut_KEY_REPEAT_ON = GlobalKeyRepeatOn - | r == glut_KEY_REPEAT_DEFAULT = GlobalKeyRepeatDefault - | otherwise = error "unmarshalGlobalKeyRepeat" +unmarshalGlobalKeyRepeat x + | x == glut_KEY_REPEAT_OFF = GlobalKeyRepeatOff + | x == glut_KEY_REPEAT_ON = GlobalKeyRepeatOn + | x == glut_KEY_REPEAT_DEFAULT = GlobalKeyRepeatDefault + | otherwise = error ("unmarshalGlobalKeyRepeat: illegal value " ++ show x) hunk ./Graphics/UI/GLUT/DeviceControl.hs 95 -marshalPerWindowKeyRepeat PerWindowKeyRepeatOff = 0 -marshalPerWindowKeyRepeat PerWindowKeyRepeatOn = 1 +marshalPerWindowKeyRepeat x = case x of + PerWindowKeyRepeatOff -> 0 + PerWindowKeyRepeatOn -> 1 hunk ./Graphics/UI/GLUT/DeviceControl.hs 100 -unmarshalPerWindowKeyRepeat 0 = PerWindowKeyRepeatOff -unmarshalPerWindowKeyRepeat _ = PerWindowKeyRepeatOn +unmarshalPerWindowKeyRepeat x + | x == 0 = PerWindowKeyRepeatOff + | otherwise = PerWindowKeyRepeatOn hunk ./Graphics/UI/GLUT/Fonts.hs 118 -marhshalBitmapFont f = case f of - Fixed8By13 -> hs_GLUT_marshalBitmapFont 0 - Fixed9By15 -> hs_GLUT_marshalBitmapFont 1 +marhshalBitmapFont x = case x of + Fixed8By13 -> hs_GLUT_marshalBitmapFont 0 + Fixed9By15 -> hs_GLUT_marshalBitmapFont 1 hunk ./Graphics/UI/GLUT/Fonts.hs 123 - Helvetica10 -> hs_GLUT_marshalBitmapFont 4 - Helvetica12 -> hs_GLUT_marshalBitmapFont 5 - Helvetica18 -> hs_GLUT_marshalBitmapFont 6 + Helvetica10 -> hs_GLUT_marshalBitmapFont 4 + Helvetica12 -> hs_GLUT_marshalBitmapFont 5 + Helvetica18 -> hs_GLUT_marshalBitmapFont 6 hunk ./Graphics/UI/GLUT/Fonts.hs 147 -marhshalStrokeFont f = case f of - Roman -> hs_GLUT_marshalStrokeFont 0 +marhshalStrokeFont x = case x of + Roman -> hs_GLUT_marshalStrokeFont 0 hunk ./Graphics/UI/GLUT/Initialization.hs 240 - RGBAMode -> glut_RGBA - RGBMode -> glut_RGB - IndexMode -> glut_INDEX - SingleBuffered -> glut_SINGLE - DoubleBuffered -> glut_DOUBLE - WithAccumBuffer -> glut_ACCUM + RGBAMode -> glut_RGBA + RGBMode -> glut_RGB + IndexMode -> glut_INDEX + SingleBuffered -> glut_SINGLE + DoubleBuffered -> glut_DOUBLE + WithAccumBuffer -> glut_ACCUM hunk ./Graphics/UI/GLUT/Initialization.hs 247 - WithDepthBuffer -> glut_DEPTH - WithStencilBuffer -> glut_STENCIL - Multisampling -> glut_MULTISAMPLE - Stereoscopic -> glut_STEREO - LuminanceMode -> glut_LUMINANCE + WithDepthBuffer -> glut_DEPTH + WithStencilBuffer -> glut_STENCIL + Multisampling -> glut_MULTISAMPLE + Stereoscopic -> glut_STEREO + LuminanceMode -> glut_LUMINANCE hunk ./Graphics/UI/GLUT/Overlay.hs 135 -marshalLayer l = case l of - Normal -> glut_NORMAL +marshalLayer x = case x of + Normal -> glut_NORMAL hunk ./Graphics/UI/GLUT/Overlay.hs 140 -unmarshalLayer l - | l == glut_NORMAL = Normal - | l == glut_OVERLAY = Overlay - | otherwise = error "unmarshalLayer" +unmarshalLayer x + | x == glut_NORMAL = Normal + | x == glut_OVERLAY = Overlay + | otherwise = error ("unmarshalLayer: illegal value " ++ show x) hunk ./Graphics/UI/GLUT/State.hs 187 - marshalDamagedLayer Normal = glut_NORMAL_DAMAGED - marshalDamagedLayer Overlay = glut_OVERLAY_DAMAGED + marshalDamagedLayer x = case x of + Normal -> glut_NORMAL_DAMAGED + Overlay -> glut_OVERLAY_DAMAGED hunk ./Graphics/UI/GLUT/Types.hs 88 -marshalMouseButton LeftButton = glut_LEFT_BUTTON -marshalMouseButton MiddleButton = glut_MIDDLE_BUTTON -marshalMouseButton RightButton = glut_RIGHT_BUTTON -marshalMouseButton WheelUp = glut_WHEEL_UP -marshalMouseButton WheelDown = glut_WHEEL_DOWN +marshalMouseButton x = case x of + LeftButton -> glut_LEFT_BUTTON + MiddleButton -> glut_MIDDLE_BUTTON + RightButton -> glut_RIGHT_BUTTON + WheelUp ->glut_WHEEL_UP + WheelDown -> glut_WHEEL_DOWN hunk ./Graphics/UI/GLUT/Types.hs 96 -unmarshalMouseButton b - | b == glut_LEFT_BUTTON = LeftButton - | b == glut_MIDDLE_BUTTON = MiddleButton - | b == glut_RIGHT_BUTTON = RightButton - | b == glut_WHEEL_UP = WheelUp - | b == glut_WHEEL_DOWN = WheelDown - | otherwise = error "unmarshalMouseButton" +unmarshalMouseButton x + | x == glut_LEFT_BUTTON = LeftButton + | x == glut_MIDDLE_BUTTON = MiddleButton + | x == glut_RIGHT_BUTTON = RightButton + | x == glut_WHEEL_UP = WheelUp + | x == glut_WHEEL_DOWN = WheelDown + | otherwise = error ("unmarshalMouseButton: illegal value " ++ show x) hunk ./Graphics/UI/GLUT/Window.hs 433 -marshalCursor c = case c of - RightArrow -> glut_CURSOR_RIGHT_ARROW - LeftArrow -> glut_CURSOR_LEFT_ARROW - Info -> glut_CURSOR_INFO - Destroy -> glut_CURSOR_DESTROY - Help -> glut_CURSOR_HELP - Cycle -> glut_CURSOR_CYCLE - Spray -> glut_CURSOR_SPRAY - Wait -> glut_CURSOR_WAIT - Text -> glut_CURSOR_TEXT - Crosshair -> glut_CURSOR_CROSSHAIR - UpDown -> glut_CURSOR_UP_DOWN - LeftRight -> glut_CURSOR_LEFT_RIGHT - TopSide -> glut_CURSOR_TOP_SIDE - BottomSide -> glut_CURSOR_BOTTOM_SIDE - LeftSide -> glut_CURSOR_LEFT_SIDE - RightSide -> glut_CURSOR_RIGHT_SIDE - TopLeftCorner -> glut_CURSOR_TOP_LEFT_CORNER - TopRightCorner -> glut_CURSOR_TOP_RIGHT_CORNER +marshalCursor x = case x of + RightArrow -> glut_CURSOR_RIGHT_ARROW + LeftArrow -> glut_CURSOR_LEFT_ARROW + Info -> glut_CURSOR_INFO + Destroy -> glut_CURSOR_DESTROY + Help -> glut_CURSOR_HELP + Cycle -> glut_CURSOR_CYCLE + Spray -> glut_CURSOR_SPRAY + Wait -> glut_CURSOR_WAIT + Text -> glut_CURSOR_TEXT + Crosshair -> glut_CURSOR_CROSSHAIR + UpDown -> glut_CURSOR_UP_DOWN + LeftRight -> glut_CURSOR_LEFT_RIGHT + TopSide -> glut_CURSOR_TOP_SIDE + BottomSide -> glut_CURSOR_BOTTOM_SIDE + LeftSide -> glut_CURSOR_LEFT_SIDE + RightSide -> glut_CURSOR_RIGHT_SIDE + TopLeftCorner -> glut_CURSOR_TOP_LEFT_CORNER + TopRightCorner -> glut_CURSOR_TOP_RIGHT_CORNER hunk ./Graphics/UI/GLUT/Window.hs 453 - BottomLeftCorner -> glut_CURSOR_BOTTOM_LEFT_CORNER - Inherit -> glut_CURSOR_INHERIT - None -> glut_CURSOR_NONE - FullCrosshair -> glut_CURSOR_FULL_CROSSHAIR + BottomLeftCorner -> glut_CURSOR_BOTTOM_LEFT_CORNER + Inherit -> glut_CURSOR_INHERIT + None -> glut_CURSOR_NONE + FullCrosshair -> glut_CURSOR_FULL_CROSSHAIR hunk ./Graphics/UI/GLUT/Window.hs 459 -unmarshalCursor c - | c == glut_CURSOR_RIGHT_ARROW = RightArrow - | c == glut_CURSOR_LEFT_ARROW = LeftArrow - | c == glut_CURSOR_INFO = Info - | c == glut_CURSOR_DESTROY = Destroy - | c == glut_CURSOR_HELP = Help - | c == glut_CURSOR_CYCLE = Cycle - | c == glut_CURSOR_SPRAY = Spray - | c == glut_CURSOR_WAIT = Wait - | c == glut_CURSOR_TEXT = Text - | c == glut_CURSOR_CROSSHAIR = Crosshair - | c == glut_CURSOR_UP_DOWN = UpDown - | c == glut_CURSOR_LEFT_RIGHT = LeftRight - | c == glut_CURSOR_TOP_SIDE = TopSide - | c == glut_CURSOR_BOTTOM_SIDE = BottomSide - | c == glut_CURSOR_LEFT_SIDE = LeftSide - | c == glut_CURSOR_RIGHT_SIDE = RightSide - | c == glut_CURSOR_TOP_LEFT_CORNER = TopLeftCorner - | c == glut_CURSOR_TOP_RIGHT_CORNER = TopRightCorner - | c == glut_CURSOR_BOTTOM_RIGHT_CORNER = BottomRightCorner - | c == glut_CURSOR_BOTTOM_LEFT_CORNER = BottomLeftCorner - | c == glut_CURSOR_INHERIT = Inherit - | c == glut_CURSOR_NONE = None - | c == glut_CURSOR_FULL_CROSSHAIR = FullCrosshair - | otherwise = error "unmarshalCursor" +unmarshalCursor x + | x == glut_CURSOR_RIGHT_ARROW = RightArrow + | x == glut_CURSOR_LEFT_ARROW = LeftArrow + | x == glut_CURSOR_INFO = Info + | x == glut_CURSOR_DESTROY = Destroy + | x == glut_CURSOR_HELP = Help + | x == glut_CURSOR_CYCLE = Cycle + | x == glut_CURSOR_SPRAY = Spray + | x == glut_CURSOR_WAIT = Wait + | x == glut_CURSOR_TEXT = Text + | x == glut_CURSOR_CROSSHAIR = Crosshair + | x == glut_CURSOR_UP_DOWN = UpDown + | x == glut_CURSOR_LEFT_RIGHT = LeftRight + | x == glut_CURSOR_TOP_SIDE = TopSide + | x == glut_CURSOR_BOTTOM_SIDE = BottomSide + | x == glut_CURSOR_LEFT_SIDE = LeftSide + | x == glut_CURSOR_RIGHT_SIDE = RightSide + | x == glut_CURSOR_TOP_LEFT_CORNER = TopLeftCorner + | x == glut_CURSOR_TOP_RIGHT_CORNER = TopRightCorner + | x == glut_CURSOR_BOTTOM_RIGHT_CORNER = BottomRightCorner + | x == glut_CURSOR_BOTTOM_LEFT_CORNER = BottomLeftCorner + | x == glut_CURSOR_INHERIT = Inherit + | x == glut_CURSOR_NONE = None + | x == glut_CURSOR_FULL_CROSSHAIR = FullCrosshair + | otherwise = error ("unmarshalCursor: illegal value " ++ show x) hunk ./Graphics/UI/GLUT.hs 12 --- independent toolkit for writing OpenGL programs. +-- independent toolkit for writing OpenGL programs. It includes support for +-- the extended functionality available in freeglut (see +-- ) and OpenGLUT (see +-- ), too. hunk ./Graphics/UI/GLUT/Begin.hs 39 --- | Enter the GLUT event processing loop. This routine should be called at most --- once in a GLUT program. Once called, this routine will never return. It will --- call as necessary any callbacks that have been registered. +-- | Enter the GLUT event processing loop; it will call as necessary any +-- callbacks that have been registered. This routine should be called at most +-- once in a GLUT program. hunk ./Graphics/UI/GLUT/Begin.hs 59 --- 'ContinueExectuion', control will return to the function which called --- 'mainLoop'; otherwise the application will exit. +-- 'Exit', the application will exit; otherwise control will return to the +-- function which called 'mainLoop'. hunk ./Graphics/UI/GLUT/Begin.hs 75 +-- | The behaviour when the user closes a window. + hunk ./Graphics/UI/GLUT/Begin.hs 78 - = Exit - | GLUTMainLoopReturns - | ContinueExectuion + = -- | Exit the whole program when any window is closed or 'leaveMainLoop' + -- is called (default). + Exit + | -- | Return from mainLoop when any window is closed. + MainLoopReturns + | -- | Return from mainLoop after the last window is closed. + ContinueExectuion hunk ./Graphics/UI/GLUT/Begin.hs 90 - GLUTMainLoopReturns -> glut_ACTION_GLUTMAINLOOP_RETURNS + MainLoopReturns -> glut_ACTION_GLUTMAINLOOP_RETURNS hunk ./Graphics/UI/GLUT/Begin.hs 96 - | x == glut_ACTION_GLUTMAINLOOP_RETURNS = GLUTMainLoopReturns + | x == glut_ACTION_GLUTMAINLOOP_RETURNS = MainLoopReturns hunk ./Graphics/UI/GLUT/Begin.hs 102 --- | (/freeglut only/) Behaviour when the user closes a window. +-- | (/freeglut only/) Controls the behaviour when the user closes a window. hunk ./Graphics/UI/GLUT/DeviceControl.hs 96 - PerWindowKeyRepeatOff -> 0 - PerWindowKeyRepeatOn -> 1 + PerWindowKeyRepeatOn -> 0 + PerWindowKeyRepeatOff -> 1 hunk ./Graphics/UI/GLUT/DeviceControl.hs 101 - | x == 0 = PerWindowKeyRepeatOff - | otherwise = PerWindowKeyRepeatOn + | x == 0 = PerWindowKeyRepeatOn + | otherwise = PerWindowKeyRepeatOff addfile ./Setup.description hunk ./Setup.description 1 +name: GLUT +version: 2.0 +license: BSD3 +maintainer: Sven Panne +package-url: http://www.haskell.org/HOpenGL/ +category: Graphics +description: + A Haskell binding for the OpenGL Utility Toolkit, a window + system independent toolkit for writing OpenGL programs. For more + information about the C library on which this binding is based, + please see: . +exposed-modules: + Graphics.UI.GLUT, + Graphics.UI.GLUT.Begin, + Graphics.UI.GLUT.Callbacks, + Graphics.UI.GLUT.Callbacks.Global, + Graphics.UI.GLUT.Callbacks.Window, + Graphics.UI.GLUT.Colormap, + Graphics.UI.GLUT.Debugging, + Graphics.UI.GLUT.DeviceControl, + Graphics.UI.GLUT.Fonts, + Graphics.UI.GLUT.GameMode, + Graphics.UI.GLUT.Initialization, + Graphics.UI.GLUT.Menu, + Graphics.UI.GLUT.Objects, + Graphics.UI.GLUT.Overlay, + Graphics.UI.GLUT.State, + Graphics.UI.GLUT.Window +modules: + Graphics.UI.GLUT, + Graphics.UI.GLUT.Begin, + Graphics.UI.GLUT.Callbacks, + Graphics.UI.GLUT.Callbacks.Global, + Graphics.UI.GLUT.Callbacks.Window, + Graphics.UI.GLUT.Colormap, + Graphics.UI.GLUT.Debugging, + Graphics.UI.GLUT.DeviceControl, + Graphics.UI.GLUT.Fonts, + Graphics.UI.GLUT.GameMode, + Graphics.UI.GLUT.Initialization, + Graphics.UI.GLUT.Menu, + Graphics.UI.GLUT.Objects, + Graphics.UI.GLUT.Overlay, + Graphics.UI.GLUT.State, + Graphics.UI.GLUT.Window, + -- hidden-modules: + Graphics.UI.GLUT.Callbacks.Registration, + Graphics.UI.GLUT.Constants, + Graphics.UI.GLUT.Extensions, + Graphics.UI.GLUT.QueryUtils, + Graphics.UI.GLUT.Types +includes: "HsGLUT.h" +c-sources: cbits/HsGLUT.c +build-depends: base, OpenGL +extensions: CPP addfile ./Setup.buildinfo.in hunk ./Setup.buildinfo.in 1 +-- @configure_input@ +-- System-dependent values used by HugsSetup.hs + +build-package: @BUILD_PACKAGE_BOOL@ +cc-options: -DCALLCONV=@CALLCONV@ -Iinclude @GLUT_CFLAGS@ +ld-options: @GLUT_LIBS@ +frameworks: @GLUT_FRAMEWORKS@ hunk ./configure.ac 62 -AC_CONFIG_FILES([config.mk]) +if test "$GLUT_BUILD_PACKAGE" = yes; then + BUILD_PACKAGE_BOOL=True +else + BUILD_PACKAGE_BOOL=False +fi +AC_SUBST([BUILD_PACKAGE_BOOL]) + +case "$target" in +*-mingw32) CALLCONV=stdcall ;; +*) CALLCONV=ccall ;; +esac +AC_SUBST([CALLCONV]) + +AC_CONFIG_FILES([config.mk Setup.buildinfo]) hunk ./examples/Misc/Gears.hs 224 -data Flag = GLInfo | Exit deriving ( Eq, Ord, Show ) +data Flag = GLInfo | AutoExit deriving ( Eq, Ord, Show ) hunk ./examples/Misc/Gears.hs 228 - Option ['i'] ["info"] (NoArg GLInfo) "print gl information", - Option ['e'] ["exit"] (NoArg Exit ) "auto exit after 30 seconds" ] + Option ['i'] ["info"] (NoArg GLInfo) "print gl information", + Option ['e'] ["exit"] (NoArg AutoExit) "auto exit after 30 seconds" ] hunk ./examples/Misc/Gears.hs 275 - let autoexit = if Exit `elem` flags then 30 else 0 + let autoexit = if AutoExit `elem` flags then 30 else 0 hunk ./Setup.description 29 -modules: - Graphics.UI.GLUT, - Graphics.UI.GLUT.Begin, - Graphics.UI.GLUT.Callbacks, - Graphics.UI.GLUT.Callbacks.Global, - Graphics.UI.GLUT.Callbacks.Window, - Graphics.UI.GLUT.Colormap, - Graphics.UI.GLUT.Debugging, - Graphics.UI.GLUT.DeviceControl, - Graphics.UI.GLUT.Fonts, - Graphics.UI.GLUT.GameMode, - Graphics.UI.GLUT.Initialization, - Graphics.UI.GLUT.Menu, - Graphics.UI.GLUT.Objects, - Graphics.UI.GLUT.Overlay, - Graphics.UI.GLUT.State, - Graphics.UI.GLUT.Window, - -- hidden-modules: +hidden-modules: hunk ./Setup.buildinfo.in 3 - +-- hunk ./configure.ac 31 -AC_CHECK_HEADERS([GL/glut.h OpenGL/glut.h], [glut_found_header=yes]) +AC_CHECK_HEADERS([GL/glut.h GLUT/glut.h], [glut_found_header=yes]) hunk ./Setup.buildinfo.in 5 -cc-options: -DCALLCONV=@CALLCONV@ -Iinclude @GLUT_CFLAGS@ +cc-options: -DCALLCONV=@CALLCONV@ @GLUT_CFLAGS@ hunk ./Setup.description 35 +include-dirs: include addfile ./GLUT.cabal hunk ./GLUT.cabal 1 +name: GLUT +version: 2.0 +license: BSD3 +maintainer: Sven Panne +package-url: http://www.haskell.org/HOpenGL/ +category: Graphics +description: + A Haskell binding for the OpenGL Utility Toolkit, a window + system independent toolkit for writing OpenGL programs. For more + information about the C library on which this binding is based, + please see: . +exposed-modules: + Graphics.UI.GLUT, + Graphics.UI.GLUT.Begin, + Graphics.UI.GLUT.Callbacks, + Graphics.UI.GLUT.Callbacks.Global, + Graphics.UI.GLUT.Callbacks.Window, + Graphics.UI.GLUT.Colormap, + Graphics.UI.GLUT.Debugging, + Graphics.UI.GLUT.DeviceControl, + Graphics.UI.GLUT.Fonts, + Graphics.UI.GLUT.GameMode, + Graphics.UI.GLUT.Initialization, + Graphics.UI.GLUT.Menu, + Graphics.UI.GLUT.Objects, + Graphics.UI.GLUT.Overlay, + Graphics.UI.GLUT.State, + Graphics.UI.GLUT.Window +hidden-modules: + Graphics.UI.GLUT.Callbacks.Registration, + Graphics.UI.GLUT.Constants, + Graphics.UI.GLUT.Extensions, + Graphics.UI.GLUT.QueryUtils, + Graphics.UI.GLUT.Types +include-dirs: include +includes: "HsGLUT.h" +c-sources: cbits/HsGLUT.c +build-depends: base, OpenGL +extensions: CPP hunk ./Setup.description 1 -name: GLUT -version: 2.0 -license: BSD3 -maintainer: Sven Panne -package-url: http://www.haskell.org/HOpenGL/ -category: Graphics -description: - A Haskell binding for the OpenGL Utility Toolkit, a window - system independent toolkit for writing OpenGL programs. For more - information about the C library on which this binding is based, - please see: . -exposed-modules: - Graphics.UI.GLUT, - Graphics.UI.GLUT.Begin, - Graphics.UI.GLUT.Callbacks, - Graphics.UI.GLUT.Callbacks.Global, - Graphics.UI.GLUT.Callbacks.Window, - Graphics.UI.GLUT.Colormap, - Graphics.UI.GLUT.Debugging, - Graphics.UI.GLUT.DeviceControl, - Graphics.UI.GLUT.Fonts, - Graphics.UI.GLUT.GameMode, - Graphics.UI.GLUT.Initialization, - Graphics.UI.GLUT.Menu, - Graphics.UI.GLUT.Objects, - Graphics.UI.GLUT.Overlay, - Graphics.UI.GLUT.State, - Graphics.UI.GLUT.Window -hidden-modules: - Graphics.UI.GLUT.Callbacks.Registration, - Graphics.UI.GLUT.Constants, - Graphics.UI.GLUT.Extensions, - Graphics.UI.GLUT.QueryUtils, - Graphics.UI.GLUT.Types -include-dirs: include -includes: "HsGLUT.h" -c-sources: cbits/HsGLUT.c -build-depends: base, OpenGL -extensions: CPP rmfile ./Setup.description addfile ./GLUT.buildinfo.in hunk ./GLUT.buildinfo.in 1 +-- @configure_input@ +-- System-dependent values used by HugsSetup.hs +-- +build-package: @BUILD_PACKAGE_BOOL@ +cc-options: -DCALLCONV=@CALLCONV@ @GLUT_CFLAGS@ +ld-options: @GLUT_LIBS@ +frameworks: @GLUT_FRAMEWORKS@ hunk ./Setup.buildinfo.in 1 --- @configure_input@ --- System-dependent values used by HugsSetup.hs --- -build-package: @BUILD_PACKAGE_BOOL@ -cc-options: -DCALLCONV=@CALLCONV@ @GLUT_CFLAGS@ -ld-options: @GLUT_LIBS@ -frameworks: @GLUT_FRAMEWORKS@ rmfile ./Setup.buildinfo.in hunk ./configure.ac 75 -AC_CONFIG_FILES([config.mk Setup.buildinfo]) +AC_CONFIG_FILES([config.mk GLUT.buildinfo]) hunk ./GLUT.cabal 5 -package-url: http://www.haskell.org/HOpenGL/ +homepage: http://www.haskell.org/HOpenGL/ hunk ./GLUT.buildinfo.in 2 --- System-dependent values used by HugsSetup.hs +-- System-dependent values used by Distribution.Simple.defaultUserHooks hunk ./GLUT.buildinfo.in 4 -build-package: @BUILD_PACKAGE_BOOL@ +buildable: @BUILD_PACKAGE_BOOL@ hunk ./package.conf.in 36 -#ifdef INSTALLING -library-dirs: "$libdir" -#else -library-dirs: "$libdir/libraries/GLUT", - "$libdir/libraries/GLUT/cbits" +library-dirs: LIB_DIR +#ifndef INSTALLING + , LIB_DIR"/cbits" hunk ./package.conf.in 43 - -#ifdef INSTALLING -include-dirs: -#else -include-dirs: "$libdir/libraries/GLUT/include" -#endif - +include-dirs: INCLUDE_DIR hunk ./package.conf.in 52 -haddock-interfaces: -haddock-html: +haddock-interfaces: HADDOCK_IFACE +haddock-html: HTML_DIR hunk ./GLUT.cabal 4 +license-file: LICENSE hunk ./GLUT.cabal 8 +synopsis: A binding for the OpenGL Utility Toolkit hunk ./GLUT.cabal 31 -hidden-modules: +other-modules: hunk ./Graphics/UI/GLUT/Callbacks/Registration.hs 21 -import Data.FiniteMap ( FiniteMap, emptyFM, lookupFM, addToFM, delFromFM ) hunk ./Graphics/UI/GLUT/Callbacks/Registration.hs 22 +import qualified Data.Map as Map ( empty, lookup, insert, delete ) +import Data.Map ( Map ) hunk ./Graphics/UI/GLUT/Callbacks/Registration.hs 85 -type CallbackTable a = FiniteMap CallbackID (FunPtr a) +type CallbackTable a = Map CallbackID (FunPtr a) hunk ./Graphics/UI/GLUT/Callbacks/Registration.hs 88 -emptyCallbackTable = emptyFM +emptyCallbackTable = Map.empty hunk ./Graphics/UI/GLUT/Callbacks/Registration.hs 92 - liftM (flip lookupFM callbackID) getCallbackTable + liftM (Map.lookup callbackID) getCallbackTable hunk ./Graphics/UI/GLUT/Callbacks/Registration.hs 96 - modifyCallbackTable (flip delFromFM callbackID) + modifyCallbackTable (Map.delete callbackID) hunk ./Graphics/UI/GLUT/Callbacks/Registration.hs 100 - modifyCallbackTable (\table -> addToFM table callbackID funPtr) + modifyCallbackTable (Map.insert callbackID funPtr) hunk ./Graphics/UI/GLUT/Callbacks/Registration.hs 169 - + hunk ./Graphics/UI/GLUT/Menu.hs 24 -import Data.FiniteMap ( FiniteMap, emptyFM, lookupFM, addToFM, delFromFM ) hunk ./Graphics/UI/GLUT/Menu.hs 25 +import qualified Data.Map as Map ( empty, lookup, insert, delete ) +import Data.Map ( Map ) hunk ./Graphics/UI/GLUT/Menu.hs 149 -type MenuTable = FiniteMap MenuHook Destructor +type MenuTable = Map MenuHook Destructor hunk ./Graphics/UI/GLUT/Menu.hs 152 -emptyMenuTable = emptyFM +emptyMenuTable = Map.empty hunk ./Graphics/UI/GLUT/Menu.hs 156 - liftM (flip lookupFM callbackID) getMenuTable + liftM (Map.lookup callbackID) getMenuTable hunk ./Graphics/UI/GLUT/Menu.hs 160 - modifyMenuTable (flip delFromFM callbackID) + modifyMenuTable (Map.delete callbackID) hunk ./Graphics/UI/GLUT/Menu.hs 164 - modifyMenuTable (\table -> addToFM table callbackID funPtr) + modifyMenuTable (Map.insert callbackID funPtr) hunk ./package.conf.in 42 -extra-libs: GLUT_EXTRA_LIBS +extra-libraries: GLUT_EXTRA_LIBS hunk ./package.conf.in 46 -extra-hugs-opts: -extra-cc-opts: GLUT_CFLAGS -extra-ld-opts: GLUT_LIBS +hugs-options: +cc-options: GLUT_CFLAGS +ld-options: GLUT_LIBS hunk ./package.conf.in 50 -extra-frameworks: GLUT_FRAMEWORKS +frameworks: GLUT_FRAMEWORKS hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 188 --- 'viewport' ('Graphics.Rendering.OpenGL.GL.CoordTrans.Position' 0 0) ('Graphics.Rendering.OpenGL.GL.CoordTrans.Size' /width/ /height/) +-- 'Graphics.Rendering.OpenGL.GL.CoordTrans.viewport' ('Graphics.Rendering.OpenGL.GL.CoordTrans.Position' 0 0) ('Graphics.Rendering.OpenGL.GL.CoordTrans.Size' /width/ /height/) hunk ./Graphics/UI/GLUT/Colormap.hs 94 --- setting cells in the colormap via 'coloMapEntry' since that will force an +-- setting cells in the colormap via 'colorMapEntry' since that will force an hunk ./Graphics/UI/GLUT/Initialization.hs 19 --- 'initialize'. For example, 'initialWindowSize' can be set to @('WindowSize' +-- 'initialize'. For example, 'initialWindowSize' can be set to @('Size' hunk ./Graphics/UI/GLUT/Initialization.hs 87 --- 'initialized.' also processes command line options, but the specific options +-- 'initialize' also processes command line options, but the specific options hunk ./Graphics/UI/GLUT/Initialization.hs 296 --- of 'DisplayMode'\'s constructors. +-- of the constructors of 'DisplayMode'. hunk ./Graphics/UI/GLUT/Initialization.hs 341 - -- available by simply specifying \"'With' 'Samples'\". + -- available by simply specifying \"'With' 'DisplaySamples'\". hunk ./Graphics/UI/GLUT/Initialization.hs 350 - -- the 'XStaticGray' capability. SGI InfiniteReality (and + -- the 'DisplayXStaticGray' capability. SGI InfiniteReality (and hunk ./Graphics/UI/GLUT/Initialization.hs 362 - -- 'initialDisplayCapabilitiesString' also returns the first + -- 'initialDisplayCapabilities' also uses the first hunk ./Graphics/UI/GLUT/Initialization.hs 384 - -- by number. 'Win32PFD' can only be used with 'Where'. + -- by number. 'DisplayWin32PFD' can only be used with 'Where'. hunk ./Graphics/UI/GLUT/Initialization.hs 387 - -- number. 'XVisual' requires a relation and numeric value. + -- number. 'DisplayXVisual' requires a relation and numeric value. hunk ./Graphics/UI/GLUT/Menu.hs 181 --- be used when calling 'setMenu'. Implicitly, the /current menu/ is set to the --- newly created menu. +-- be used when setting 'currentMenu'. Implicitly, the /current menu/ is set to +-- the newly created menu. hunk ./Graphics/UI/GLUT/Menu.hs 200 --- menu/ becomes invalid and 'getMenu' will return 'Nothing'. +-- menu/ becomes invalid and 'currentMenu' will contain 'Nothing'. hunk ./Graphics/UI/GLUT/Overlay.hs 100 --- 'establishOverlay' will fail with a fatal error if called. +-- 'setHasOverlay' will fail with a fatal error if called. hunk ./Graphics/UI/GLUT/Overlay.hs 110 --- 'showOverlay' will not actually display the overlay unless the window is also --- shown (and even a shown window may be obscured by other windows, thereby --- obscuring the overlay). It is typically faster and less resource intensive to --- use the routines below to control the display status of an overlay as opposed --- to removing and re-establishing the overlay. - +-- setting 'overlayVisible' to 'True' will not actually display the overlay +-- unless the window is also shown (and even a shown window may be obscured by +-- other windows, thereby obscuring the overlay). It is typically faster and +-- less resource intensive to use the routines below to control the display +-- status of an overlay as opposed to removing and re-establishing the overlay. hunk ./Graphics/UI/GLUT/Window.hs 91 --- identifier for the window, which can be used when calling 'setWindow'. +-- identifier for the window, which can be used with 'currentWindow'. hunk ./Graphics/UI/GLUT/Window.hs 208 --- The advantage of this routine is that it saves the cost of a 'setWindow' call --- (entailing an expensive OpenGL context switch), which is particularly useful --- when multiple windows need redisplays posted at the same time. +-- The advantage of this routine is that it saves the cost of using +-- 'currentWindow' (entailing an expensive OpenGL context switch), which is +-- particularly useful when multiple windows need redisplays posted at the same +-- time. hunk ./Graphics/UI/GLUT/Window.hs 255 --- windows should be repositioned according 'windowPosition'\'s value. +-- windows should be repositioned according to the value of 'windowPosition'. hunk ./Graphics/UI/GLUT/Window.hs 281 --- should be reshaped according 'windowSize'\'s value. Whether a reshape +-- should be reshaped according to the value of 'windowSize'. Whether a reshape hunk ./Makefile 64 -LATE_DIST_CLEAN_FILES += config.cache config.status config.mk +DIST_CLEAN_FILES += HsGLUTConfig.h GLUT.buildinfo config.cache config.status +LATE_DIST_CLEAN_FILES += config.mk hunk ./Makefile 62 +endif + hunk ./Makefile 74 -endif - hunk ./Makefile 66 -DIST_CLEAN_FILES += HsGLUTConfig.h GLUT.buildinfo config.cache config.status +DIST_CLEAN_FILES += GLUT.buildinfo config.cache config.status hunk ./include/Makefile 10 + +DIST_CLEAN_FILES += HsGLUT.h HsGLUTConfig.h hunk ./aclocal.m4 242 - AC_CHECK_LIB([m], [atan], [GL_LIBS="-lm $GL_LIBS"]) + AC_CHECK_FUNC(atan,[fp_libm_not_needed=yes],[fp_libm_not_needed=dunno]) + if test x"$fp_libm_not_needed" = xdunno; then + AC_CHECK_LIB([m], [atan], [GL_LIBS="-lm $GL_LIBS"]) + fi hunk ./Graphics/UI/GLUT/Begin.hs 4 --- Copyright : (c) Sven Panne 2002-2004 +-- Copyright : (c) Sven Panne 2002-2005 hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 4 --- Copyright : (c) Sven Panne 2002-2004 +-- Copyright : (c) Sven Panne 2002-2005 hunk ./Graphics/UI/GLUT/Callbacks/Registration.hs 5 --- Copyright : (c) Sven Panne 2002-2004 +-- Copyright : (c) Sven Panne 2002-2005 hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 4 --- Copyright : (c) Sven Panne 2002-2004 +-- Copyright : (c) Sven Panne 2002-2005 hunk ./Graphics/UI/GLUT/Callbacks.hs 4 --- Copyright : (c) Sven Panne 2002-2004 +-- Copyright : (c) Sven Panne 2002-2005 hunk ./Graphics/UI/GLUT/Colormap.hs 4 --- Copyright : (c) Sven Panne 2002-2004 +-- Copyright : (c) Sven Panne 2002-2005 hunk ./Graphics/UI/GLUT/Constants.hs 5 --- Copyright : (c) Sven Panne 2002-2004 +-- Copyright : (c) Sven Panne 2002-2005 hunk ./Graphics/UI/GLUT/Debugging.hs 4 --- Copyright : (c) Sven Panne 2002-2004 +-- Copyright : (c) Sven Panne 2002-2005 hunk ./Graphics/UI/GLUT/DeviceControl.hs 4 --- Copyright : (c) Sven Panne 2002-2004 +-- Copyright : (c) Sven Panne 2002-2005 hunk ./Graphics/UI/GLUT/Extensions.hs 5 --- Copyright : (c) Sven Panne 2002-2004 +-- Copyright : (c) Sven Panne 2002-2005 hunk ./Graphics/UI/GLUT/Fonts.hs 4 --- Copyright : (c) Sven Panne 2002-2004 +-- Copyright : (c) Sven Panne 2002-2005 hunk ./Graphics/UI/GLUT/GameMode.hs 4 --- Copyright : (c) Sven Panne 2002-2004 +-- Copyright : (c) Sven Panne 2002-2005 hunk ./Graphics/UI/GLUT/Initialization.hs 4 --- Copyright : (c) Sven Panne 2002-2004 +-- Copyright : (c) Sven Panne 2002-2005 hunk ./Graphics/UI/GLUT/Menu.hs 4 --- Copyright : (c) Sven Panne 2002-2004 +-- Copyright : (c) Sven Panne 2002-2005 hunk ./Graphics/UI/GLUT/Objects.hs 4 --- Copyright : (c) Sven Panne 2002-2004 +-- Copyright : (c) Sven Panne 2002-2005 hunk ./Graphics/UI/GLUT/Overlay.hs 4 --- Copyright : (c) Sven Panne 2002-2004 +-- Copyright : (c) Sven Panne 2002-2005 hunk ./Graphics/UI/GLUT/QueryUtils.hs 5 --- Copyright : (c) Sven Panne 2002-2004 +-- Copyright : (c) Sven Panne 2002-2005 hunk ./Graphics/UI/GLUT/State.hs 4 --- Copyright : (c) Sven Panne 2002-2004 +-- Copyright : (c) Sven Panne 2002-2005 hunk ./Graphics/UI/GLUT/Types.hs 5 --- Copyright : (c) Sven Panne 2002-2004 +-- Copyright : (c) Sven Panne 2002-2005 hunk ./Graphics/UI/GLUT/Window.hs 4 --- Copyright : (c) Sven Panne 2002-2004 +-- Copyright : (c) Sven Panne 2002-2005 hunk ./Graphics/UI/GLUT.hs 4 --- Copyright : (c) Sven Panne 2002-2004 +-- Copyright : (c) Sven Panne 2002-2005 hunk ./LICENSE 1 -Copyright (c) 2002-2004, Sven Panne +Copyright (c) 2002-2005, Sven Panne hunk ./cbits/HsGLUT.c 4 - * Copyright : (c) Sven Panne 2002-2004 + * Copyright : (c) Sven Panne 2002-2005 hunk ./examples/BOGLGP/Chapter01/OnYourOwn1.hs 3 - Copyright (c) Sven Panne 2004 + Copyright (c) Sven Panne 2004-2005 hunk ./examples/BOGLGP/Chapter01/Simple.hs 3 - Copyright (c) Sven Panne 2004 + Copyright (c) Sven Panne 2004-2005 hunk ./examples/BOGLGP/Chapter02/OnYourOwn1.hs 3 - Copyright (c) Sven Panne 2004 + Copyright (c) Sven Panne 2004-2005 hunk ./examples/BOGLGP/Chapter02/OpenGLApplication.hs 3 - Copyright (c) Sven Panne 2004 + Copyright (c) Sven Panne 2004-2005 hunk ./examples/BOGLGP/Chapter03/Lines.hs 3 - Copyright (c) Sven Panne 2004 + Copyright (c) Sven Panne 2004-2005 hunk ./examples/BOGLGP/Chapter03/Points.hs 3 - Copyright (c) Sven Panne 2004 + Copyright (c) Sven Panne 2004-2005 hunk ./examples/BOGLGP/Chapter03/Polygons.hs 3 - Copyright (c) Sven Panne 2004 + Copyright (c) Sven Panne 2004-2005 hunk ./examples/BOGLGP/Chapter03/TrianglesQuads.hs 3 - Copyright (c) Sven Panne 2004 + Copyright (c) Sven Panne 2004-2005 hunk ./examples/Misc/ARBOcclude.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/Misc/ExtractContours.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/Misc/Pitfall14.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/Misc/Triangulate.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/Alpha.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/BezCurve.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/BezMesh.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/BezSurf.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/BlendEqn.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/Checker.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/Clip.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/ColorMat.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/ColorMatrix.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/ColorTable.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/Combiner.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/Convolution.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/Cube.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/CubeMap.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/DList.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/Double.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/DrawF.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/Feedback.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/Fog.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/FogCoord.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/Font.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/Hello.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/Histogram.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/Image.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/Light.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/Lines.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/MVArray.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/Material.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/Minmax.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/Mipmap.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/Model.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/MoveLight.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/MultiTex.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/PickDepth.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/PickSquare.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/Planet.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/Polys.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/Quadric.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/ReadImage.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/Robot.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/Scene.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/Select.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/ShadowMap.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/Smooth.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/SurfPoints.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/Surface.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/Teapots.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/Tess.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/TessWind.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/TexBind.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/TexGen.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/TexProx.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/TexSub.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/Texture3D.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/TextureSurf.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/Trim.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/UnProject.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/VArray.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./examples/RedBook/Wrap.hs 3 - Copyright (c) Sven Panne 2002-2004 + Copyright (c) Sven Panne 2002-2005 hunk ./include/HsGLUT.h.in 4 - * Copyright : (c) Sven Panne 2002-2004 + * Copyright : (c) Sven Panne 2002-2005 hunk ./include/HsGLUTExt.h 4 - * Copyright : (c) Sven Panne 2002-2004 + * Copyright : (c) Sven Panne 2002-2005 hunk ./Graphics/UI/GLUT/Constants.hs 25 - glut_LUMINANCE :: CUInt + glut_LUMINANCE, glut_AUX1, glut_AUX2, glut_AUX3, glut_AUX4 :: CUInt hunk ./Graphics/UI/GLUT/Constants.hs 38 +glut_AUX1 = 0x1000 +glut_AUX2 = 0x2000 +glut_AUX3 = 0x4000 +glut_AUX4 = 0x8000 hunk ./Graphics/UI/GLUT/Initialization.hs 67 - glut_LUMINANCE, + glut_LUMINANCE, glut_AUX1, glut_AUX2, glut_AUX3, glut_AUX4, hunk ./Graphics/UI/GLUT/Initialization.hs 230 + | WithAuxBuffers Int -- ^ (/freeglut only/) Select a window with /n/ (1 .. 4) auxiliary buffers. Any /n/ outside the range 1 .. 4 is a fatal error. hunk ./Graphics/UI/GLUT/Initialization.hs 250 + WithAuxBuffers 1 -> glut_AUX1 + WithAuxBuffers 2 -> glut_AUX2 + WithAuxBuffers 3 -> glut_AUX3 + WithAuxBuffers 4 -> glut_AUX4 + WithAuxBuffers n -> + error ("marshalDisplayMode: illegal number of auxiliary buffers: " ++ show n) hunk ./Graphics/UI/GLUT/Initialization.hs 281 - WithStencilBuffer, Multisampling, Stereoscopic, LuminanceMode ] + WithStencilBuffer, WithAuxBuffers 1, WithAuxBuffers 2, + WithAuxBuffers 3, WithAuxBuffers 4, Multisampling, Stereoscopic, + LuminanceMode ] hunk ./Graphics/UI/GLUT/Initialization.hs 368 + | DisplayAux -- ^ (/freeglut only/) Number of auxiliary buffers. Default is + -- \"'IsEqualTo' @1@\". hunk ./Graphics/UI/GLUT/Initialization.hs 444 + DisplayAux -> "aux" hunk ./aclocal.m4 303 - AC_CHECK_HEADERS([windows.h GL/glut.h]) + AC_CHECK_HEADERS([windows.h]) + + fp_save_cppflags="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $X_CFLAGS" + AC_CHECK_HEADERS([GL/glut.h]) + CPPFLAGS="$fp_save_cppflags" + hunk ./cbits/Makefile 5 +-include ../config.mk + +# HACK +PACKAGE= hunk ./cbits/Makefile 12 -SRC_CC_OPTS += -Wall -I$(GHC_INCLUDE_DIR) -I../include +SRC_CC_OPTS += -Wall -I$(GHC_INCLUDE_DIR) -I../include $(GLUT_CFLAGS) hunk ./GLUT.cabal 14 +other-files: + -- The first three files are not in this directory of the CVS + -- repository; copy them from ../.. + config.guess config.sub install-sh configure.ac + configure config.mk.in GLUT.buildinfo.in + include/HsGLUTConfig.h.in include/HsGLUT.h.in + include/HsGLUTExt.h hunk ./GLUT.cabal 48 -extensions: CPP +extensions: CPP, ForeignFunctionInterface hunk ./GLUT.buildinfo.in 5 +ghc-options: -DCALLCONV=@CALLCONV@ hunk ./examples/BOGLGP/Chapter01/OnYourOwn1.hs 24 - createWindow "BOGLGP Chapter 1 - On Your Own 1" + createWindow "BOGLGP - Chapter 1 - On Your Own 1" hunk ./examples/BOGLGP/Chapter01/Simple.hs 24 - createWindow "BOGLGP Chapter 1" + createWindow "BOGLGP - Chapter 1 - Simple" hunk ./examples/BOGLGP/Chapter02/OnYourOwn1.hs 60 - createWindow "BOGLGP - Chapter 2 - OpenGL Application" + createWindow "BOGLGP - Chapter 2 - On Your Own 1" addfile ./examples/BOGLGP/Chapter03/OnYourOwn1.hs hunk ./examples/BOGLGP/Chapter03/OnYourOwn1.hs 1 +{- + OnYourOwn1.hs (adapted from CGfxOpenGL.cpp which is (c) 2004 Astle/Hawkins) + Copyright (c) Sven Panne 2005 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE +-} + +import Control.Monad ( when, unless ) +import Data.Maybe ( isJust ) +import Graphics.UI.GLUT hiding ( initialize ) +import System.Console.GetOpt +import System.Environment ( getProgName ) +import System.Exit ( exitWith, ExitCode(..) ) +import System.IO ( hPutStr, stderr ) + +-------------------------------------------------------------------------------- +-- Setup GLUT and OpenGL, drop into the event loop. +-------------------------------------------------------------------------------- +main :: IO () +main = do + -- Setup the basic GLUT stuff + (_, args) <- getArgsAndInitialize + opts <- parseOptions args + initialDisplayMode $= [ DoubleBuffered, RGBMode, WithDepthBuffer ] + (if useFullscreen opts then fullscreenMode else windowedMode) opts + + initialize + + -- Register the event callback functions + displayCallback $= do render; swapBuffers + reshapeCallback $= Just setupProjection + keyboardMouseCallback $= Just keyboardMouseHandler + -- No need for an idle callback here, this would just hog the CPU + -- without any visible effect + + -- At this point, control is relinquished to the GLUT event handler. + -- Control is returned as events occur, via the callback functions. + mainLoop + +fullscreenMode :: Options -> IO () +fullscreenMode opts = do + let addCapability c = maybe id (\x -> (Where' c IsEqualTo x :)) + gameModeCapabilities $= + (addCapability GameModeWidth (Just (windowWidth opts)) . + addCapability GameModeHeight (Just (windowHeight opts)) . + addCapability GameModeBitsPerPlane (bpp opts) . + addCapability GameModeRefreshRate (refreshRate opts)) [] + enterGameMode + maybeWin <- get currentWindow + if isJust maybeWin + then cursor $= None + else do + hPutStr stderr "Could not enter fullscreen mode, using windowed mode\n" + windowedMode (opts { useFullscreen = False } ) + +windowedMode :: Options -> IO () +windowedMode opts = do + initialWindowSize $= + Size (fromIntegral (windowWidth opts)) (fromIntegral (windowHeight opts)) + createWindow "BOGLGP - Chapter 3 - On Your Own 1" + return () + +-------------------------------------------------------------------------------- +-- Option handling +-------------------------------------------------------------------------------- +data Options = Options { + useFullscreen :: Bool, + windowWidth :: Int, + windowHeight :: Int, + bpp :: Maybe Int, + refreshRate :: Maybe Int + } + +startOpt :: Options +startOpt = Options { + useFullscreen = False, + windowWidth = 800, + windowHeight = 600, + bpp = Nothing, + refreshRate = Nothing + } + +options :: [OptDescr (Options -> IO Options)] +options = [ + Option ['f'] ["fullscreen"] + (NoArg (\opt -> return opt { useFullscreen = True })) + "use fullscreen mode if possible", + Option ['w'] ["width"] + (ReqArg (\arg opt -> do w <- readInt "WIDTH" arg + return opt { windowWidth = w }) + "WIDTH") + "use window width WIDTH", + Option ['h'] ["height"] + (ReqArg (\arg opt -> do h <- readInt "HEIGHT" arg + return opt { windowHeight = h }) + "HEIGHT") + "use window height HEIGHT", + Option ['b'] ["bpp"] + (ReqArg (\arg opt -> do b <- readInt "BPP" arg + return opt { bpp = Just b }) + "BPP") + "use BPP bits per plane (ignored in windowed mode)", + Option ['r'] ["refresh-rate"] + (ReqArg (\arg opt -> do r <- readInt "HZ" arg + return opt { refreshRate = Just r }) + "HZ") + "use refresh rate HZ (ignored in windowed mode)", + Option ['?'] ["help"] + (NoArg (\_ -> do usage >>= putStr + safeExitWith ExitSuccess)) + "show help" ] + +readInt :: String -> String -> IO Int +readInt name arg = + case reads arg of + ((x,[]) : _) -> return x + _ -> dieWith ["Can't parse " ++ name ++ " argument '" ++ arg ++ "'\n"] + +usage :: IO String +usage = do + progName <- getProgName + return $ usageInfo ("Usage: " ++ progName ++ " [OPTION...]") options + +parseOptions :: [String] -> IO Options +parseOptions args = do + let (optsActions, nonOptions, errs) = getOpt Permute options args + unless (null nonOptions && null errs) (dieWith errs) + foldl (>>=) (return startOpt) optsActions + +dieWith :: [String] -> IO a +dieWith errs = do + u <- usage + mapM_ (hPutStr stderr) (errs ++ [u]) + safeExitWith (ExitFailure 1) + +-------------------------------------------------------------------------------- +-- Handle mouse and keyboard events. For this simple demo, just exit when +-- ESCAPE is pressed. +-------------------------------------------------------------------------------- +keyboardMouseHandler :: KeyboardMouseCallback +keyboardMouseHandler (Char '\27') Down _ _ = safeExitWith ExitSuccess +keyboardMouseHandler _ _ _ _ = return () + +safeExitWith :: ExitCode -> IO a +safeExitWith code = do + gma <- get gameModeActive + when gma leaveGameMode + exitWith code + +-------------------------------------------------------------------------------- +-- Do one time setup, i.e. set the clear color. +-------------------------------------------------------------------------------- +initialize :: IO () +initialize = do + -- clear to black background + clearColor $= Color4 0 0 0 0 + +-------------------------------------------------------------------------------- +-- Reset the viewport for window changes. +-------------------------------------------------------------------------------- +setupProjection :: ReshapeCallback +setupProjection (Size width height) = do + -- don't want a divide by zero + let h = max 1 height + -- reset the viewport to new dimensions + viewport $= (Position 0 0, Size width h) + -- set projection matrix as the current matrix + matrixMode $= Projection + -- reset projection matrix + loadIdentity + + -- calculate aspect ratio of window + perspective 52 (fromIntegral width / fromIntegral h) 1 1000 + + -- set modelview matrix + matrixMode $= Modelview 0 + -- reset modelview matrix + loadIdentity + +-------------------------------------------------------------------------------- +-- Clear and redraw the scene. +-------------------------------------------------------------------------------- +render :: DisplayCallback +render = do + -- clear screen and depth buffer + clear [ ColorBuffer, DepthBuffer ] + loadIdentity + lookAt (Vertex3 0 10 0.1) (Vertex3 0 0 0) (Vector3 0 1 0) + + -- resolve overloading, not needed in "real" programs + let color3f = color :: Color3 GLfloat -> IO () + + color3f (Color3 1 1 1) + + drawCircleApproximation 2 10 False + +-- Hello, this is C... :-) +for :: [GLint] -> (GLint -> IO ()) -> IO () +for = flip mapM_ + +drawCircleApproximation :: GLfloat -> GLint -> Bool -> IO () +drawCircleApproximation radius numberOfSides edgeOnly = + -- if edge only, use line strips; otherwise, use polygons + renderPrimitive (if edgeOnly then LineStrip else Polygon) $ do + + -- calculate each vertex on the circle + for [ 0 .. numberOfSides - 1 ] $ \v -> do + + -- calculate the angle of the current vertex + let angle = fromIntegral v * 2 * pi / fromIntegral numberOfSides + + -- draw the current vertex at the correct radius + vertex (Vertex3 (cos angle * radius) 0 (sin angle * radius)) + + -- if drawing edge only, then need to complete the loop with first vertex + when edgeOnly $ + vertex (Vertex3 radius 0 0) hunk ./examples/BOGLGP/Chapter03/OnYourOwn1.hs 2 - OnYourOwn1.hs (adapted from CGfxOpenGL.cpp which is (c) 2004 Astle/Hawkins) + OnYourOwn1.hs (adapted from OnYourOwn1 which is (c) 2004 Astle/Hawkins) hunk ./examples/BOGLGP/Chapter03/TrianglesQuads.hs 2 - TrianglesQuads.hs (adapted from TrianglesQuads.hs which is (c) 2004 Astle/Hawkins) + TrianglesQuads.hs (adapted from TrianglesQuads which is (c) 2004 Astle/Hawkins) hunk ./configure.ac 69 -case "$target" in +case "$host" in hunk ./Makefile 7 +ifneq "$(findstring clean, $(MAKECMDGOALS))" "" +# if we're cleaning, then config.mk might have been cleaned already +GLUT_BUILD_PACKAGE=yes +PACKAGE=GLUT +endif + hunk ./Makefile 72 -DIST_CLEAN_FILES += GLUT.buildinfo config.cache config.status -LATE_DIST_CLEAN_FILES += config.mk +DIST_CLEAN_FILES += GLUT.buildinfo config.cache config.status config.mk hunk ./GLUT.cabal 14 -other-files: +extra-source-files: hunk ./GLUT.cabal 17 - config.guess config.sub install-sh configure.ac - configure config.mk.in GLUT.buildinfo.in + config.guess config.sub install-sh + configure.ac configure config.mk.in GLUT.buildinfo.in hunk ./GLUT.cabal 21 +extra-tmp-files: + config.log config.status autom4te.cache + config.mk GLUT.buildinfo include/HsGLUTConfig.h include/HsGLUT.h hunk ./aclocal.m4 10 -AC_DEFUN(FPTOOLS_CHECK_HTYPE, +AC_DEFUN([FPTOOLS_CHECK_HTYPE], hunk ./aclocal.m4 67 + +#if defined(HAVE_AL_AL_H) +# include +#elif defined(HAVE_OPENAL_AL_H) +# include +#endif hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 218 - = NotVisible -- ^ The /current window/ is totally or partially visible. GLUT + = NotVisible -- ^ No part of the /current window/ is visible, i.e., until the + -- window\'s visibility changes, all further rendering to the + -- window is discarded. + | Visible -- ^ The /current window/ is totally or partially visible. GLUT hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 225 - | Visible -- ^ No part of the /current window/ is visible, i.e., until the - -- window\'s visibility changes, all further rendering to the - -- window is discarded. hunk ./aclocal.m4 102 -[ifelse([$3], , [AC_CV_NAME=NotReallyATypeCross; AC_CV_NAME_supported=no], [AC_CV_NAME=$3])])]) dnl -CPPFLAGS="$fp_check_htype_save_cppflags" +[ifelse([$3], , [AC_CV_NAME=NotReallyATypeCross; AC_CV_NAME_supported=no], [AC_CV_NAME=$3])]) +CPPFLAGS="$fp_check_htype_save_cppflags"]) dnl hunk ./Graphics/UI/GLUT/Callbacks/Registration.hs 20 -import Control.Monad ( liftM, when ) +import Control.Monad ( when ) hunk ./Graphics/UI/GLUT/Callbacks/Registration.hs 61 - else liftM Just $ getCurrentWindow "getCallbackID" + else fmap Just $ getCurrentWindow "getCallbackID" hunk ./Graphics/UI/GLUT/Callbacks/Registration.hs 92 - liftM (Map.lookup callbackID) getCallbackTable + fmap (Map.lookup callbackID) getCallbackTable hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 50 -import Control.Monad ( liftM ) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 434 -getModifiers = liftM unmarshalModifiers glutGetModifiers +getModifiers = fmap unmarshalModifiers glutGetModifiers hunk ./Graphics/UI/GLUT/Fonts.hs 25 -import Control.Monad ( liftM ) hunk ./Graphics/UI/GLUT/Fonts.hs 181 - liftM fromIntegral $ withCString s (glutBitmapLength i) + fmap fromIntegral $ withCString s (glutBitmapLength i) hunk ./Graphics/UI/GLUT/Fonts.hs 194 - liftM fromIntegral $ withCString s (glutStrokeLength i) + fmap fromIntegral $ withCString s (glutStrokeLength i) hunk ./Graphics/UI/GLUT/Fonts.hs 203 -bitmapHeight f = liftM fromIntegral $ glutBitmapHeight =<< marhshalBitmapFont f +bitmapHeight f = fmap fromIntegral $ glutBitmapHeight =<< marhshalBitmapFont f hunk ./Graphics/UI/GLUT/GameMode.hs 33 -import Control.Monad ( liftM ) hunk ./Graphics/UI/GLUT/GameMode.hs 195 -getBool = liftM (/= 0) . glutGameModeGet +getBool = fmap (/= 0) . glutGameModeGet hunk ./Graphics/UI/GLUT/Menu.hs 30 -import Control.Monad ( liftM, unless, zipWithM, when ) +import Control.Monad ( unless, zipWithM, when ) hunk ./Graphics/UI/GLUT/Menu.hs 156 - liftM (Map.lookup callbackID) getMenuTable + fmap (Map.lookup callbackID) getMenuTable hunk ./Graphics/UI/GLUT/QueryUtils.hs 20 -import Control.Monad ( liftM ) hunk ./Graphics/UI/GLUT/QueryUtils.hs 34 -makeGetter g f = liftM f . g +makeGetter g f = fmap f . g hunk ./Graphics/UI/GLUT/State.hs 48 -import Control.Monad ( liftM ) hunk ./Graphics/UI/GLUT/State.hs 308 - if hasDevice then liftM Just act else return Nothing + if hasDevice then fmap Just act else return Nothing hunk ./Graphics/UI/GLUT/State.hs 320 - isUnknown = liftM (== nullFunPtr) . getProcAddressInternal + isUnknown = fmap (== nullFunPtr) . getProcAddressInternal hunk ./examples/RedBook/Checker.hs 12 -import Control.Monad ( liftM, when ) +import Control.Monad ( when ) hunk ./examples/RedBook/Checker.hs 42 - then liftM listToMaybe $ genObjectNames 1 + then fmap listToMaybe $ genObjectNames 1 hunk ./examples/RedBook/Image.hs 18 -import Control.Monad ( liftM ) hunk ./examples/RedBook/Image.hs 39 - liftM (PixelData RGB UnsignedByte) $ + fmap (PixelData RGB UnsignedByte) $ hunk ./examples/RedBook/Mipmap.hs 13 -import Control.Monad ( liftM, when ) +import Control.Monad ( when ) hunk ./examples/RedBook/Mipmap.hs 40 - then liftM listToMaybe $ genObjectNames 1 + then fmap listToMaybe $ genObjectNames 1 hunk ./examples/RedBook/ReadImage.hs 17 -import Control.Monad ( liftM, when ) +import Control.Monad ( when ) hunk ./examples/RedBook/ReadImage.hs 44 - liftM word32BigEndianToGLsizei $ peek buf + fmap word32BigEndianToGLsizei $ peek buf hunk ./examples/RedBook/TexGen.hs 17 -import Control.Monad ( liftM, when ) +import Control.Monad ( when ) hunk ./examples/RedBook/TexGen.hs 50 - then liftM listToMaybe $ genObjectNames 1 + then fmap listToMaybe $ genObjectNames 1 hunk ./examples/RedBook/TexSub.hs 13 -import Control.Monad ( liftM, when ) +import Control.Monad ( when ) hunk ./examples/RedBook/TexSub.hs 29 - liftM (PixelData RGBA UnsignedByte) $ + fmap (PixelData RGBA UnsignedByte) $ hunk ./examples/RedBook/Wrap.hs 16 -import Control.Monad ( liftM, when ) +import Control.Monad ( when ) hunk ./examples/RedBook/Wrap.hs 46 - then liftM listToMaybe $ genObjectNames 1 + then fmap listToMaybe $ genObjectNames 1 hunk ./Graphics/UI/GLUT/Callbacks/Registration.hs 1 +{-# OPTIONS_GHC -fno-cse #-} + hunk ./Graphics/UI/GLUT/Menu.hs 1 +{-# OPTIONS_GHC -fno-cse #-} + hunk ./GLUT.cabal 13 - please see: . + please see: . hunk ./prologue.txt 4 -. +. addfile ./examples/RedBook/AAIndex.hs hunk ./examples/RedBook/AAIndex.hs 1 +{- + AAIndex.hs (adapted from aaindex.c which is (c) Silicon Graphics, Inc.) + Copyright (c) Sven Panne 2002-2006 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program draws shows how to draw anti-aliased lines in color index + mode. It draws two diagonal lines to form an X; when 'r' is typed in the + window, the lines are rotated in opposite directions. +-} + +import Data.Char ( toLower ) +import Data.IORef ( IORef, newIORef ) +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +data State = State { rotAngle :: IORef Int } + +makeState :: IO State +makeState = do + r <- newIORef 0 + return $ State { rotAngle = r } + +rampSize, ramp1Start, ramp2Start :: GLint +rampSize = 16 +ramp1Start = 32 +ramp2Start = 48 + +-- Initialize antialiasing for color index mode, including loading a green color +-- ramp starting at ramp1Start, and a blue color ramp starting at ramp2Start. +-- The ramps must be a multiple of 16. +myInit :: IO () +myInit = do + flip mapM_ [ 0 .. rampSize - 1 ] $ \i -> do + let shade = fromIntegral i / fromIntegral rampSize + colorMapEntry (Index1 (ramp1Start + i)) $= Color3 0 shade 0 + colorMapEntry (Index1 (ramp2Start + i)) $= Color3 0 0 shade + + lineSmooth $= Enabled + hint LineSmooth $= DontCare + lineWidth $= 1.5 + + clearIndex $= Index1 (fromIntegral ramp1Start) + +-- Draw 2 diagonal lines to form an X +display :: State -> DisplayCallback +display state = do + r <- get (rotAngle state) + clear [ ColorBuffer ] + + -- resolve overloading, not needed in "real" programs + let vertex2f = vertex :: Vertex2 GLfloat -> IO () + + index (Index1 ramp1Start) + preservingMatrix $ do + rotate (-(fromIntegral r :: GLfloat)) (Vector3 0 0 0.1) + renderPrimitive Lines $ do + vertex2f (Vertex2 (-0.5) 0.5) + vertex2f (Vertex2 0.5 (-0.5)) + + index (Index1 ramp2Start) + preservingMatrix $ do + rotate (fromIntegral r :: GLfloat) (Vector3 0 0 0.1) + renderPrimitive Lines $ do + vertex2f (Vertex2 0.5 0.5) + vertex2f (Vertex2 (-0.5) (-0.5)) + + flush + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + let wf = fromIntegral w + hf = fromIntegral h + if w <= h + then ortho2D (-1) 1 (-1*hf/wf) (1*hf/wf) + else ortho2D (-1*wf/hf) (1*wf/hf) (-1) 1 + matrixMode $= Modelview 0 + loadIdentity + +keyboard :: State -> KeyboardMouseCallback +keyboard state (Char c) Down _ _ = case toLower c of + 'r' -> do rotAngle state $~ ((`mod` 360) . (+ 30)); postRedisplay Nothing + '\27' -> exitWith ExitSuccess + _ -> return () +keyboard _ _ _ _ _ = return () + +-- Main Loop +-- Open window with initial window size, title bar, +-- color index display mode, and handle input events. +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, IndexMode ] + initialWindowSize $= Size 200 200 + createWindow progName + state <- makeState + myInit + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just (keyboard state) + displayCallback $= display state + mainLoop addfile ./examples/RedBook/AARGB.hs hunk ./examples/RedBook/AARGB.hs 1 +{- + AARGB.hs (adapted from aargb.c which is (c) Silicon Graphics, Inc.) + Copyright (c) Sven Panne 2002-2006 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program draws shows how to draw anti-aliased lines. It draws two + diagonal lines to form an X; when 'r' is typed in the window, the lines are + rotated in opposite directions. +-} + +import Data.Char ( toLower ) +import Data.IORef ( IORef, newIORef ) +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +data State = State { rotAngle :: IORef Int } + +makeState :: IO State +makeState = do + r <- newIORef 0 + return $ State { rotAngle = r } + +-- Initialize antialiasing for RGBA mode, including alpha blending, hint, and +-- line width. Print out implementation specific info on line width granularity +-- and width. +myInit :: IO () +myInit = do + g <- get smoothLineWidthGranularity + putStrLn ("smoothLineWidthGranularity is " ++ show g) + + r <- get smoothLineWidthRange + putStrLn ("smoothLineWidthRange is " ++ show r) + + lineSmooth $= Enabled + + blend $= Enabled + blendFunc $= (SrcAlpha, OneMinusSrcAlpha) + hint LineSmooth $= DontCare + lineWidth $= 1.5 + + clearColor $= Color4 0 0 0 0 + +-- Draw 2 diagonal lines to form an X +display :: State -> DisplayCallback +display state = do + r <- get (rotAngle state) + clear [ ColorBuffer ] + + -- resolve overloading, not needed in "real" programs + let color3f = color :: Color3 GLfloat -> IO () + vertex2f = vertex :: Vertex2 GLfloat -> IO () + + color3f (Color3 0 1 0) + preservingMatrix $ do + rotate (-(fromIntegral r :: GLfloat)) (Vector3 0 0 0.1) + renderPrimitive Lines $ do + vertex2f (Vertex2 (-0.5) 0.5) + vertex2f (Vertex2 0.5 (-0.5)) + + color3f (Color3 0 0 1) + preservingMatrix $ do + rotate (fromIntegral r :: GLfloat) (Vector3 0 0 0.1) + renderPrimitive Lines $ do + vertex2f (Vertex2 0.5 0.5) + vertex2f (Vertex2 (-0.5) (-0.5)) + + flush + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + let wf = fromIntegral w + hf = fromIntegral h + if w <= h + then ortho2D (-1) 1 (-1*hf/wf) (1*hf/wf) + else ortho2D (-1*wf/hf) (1*wf/hf) (-1) 1 + matrixMode $= Modelview 0 + loadIdentity + +keyboard :: State -> KeyboardMouseCallback +keyboard state (Char c) Down _ _ = case toLower c of + 'r' -> do rotAngle state $~ ((`mod` 360) . (+ 30)); postRedisplay Nothing + '\27' -> exitWith ExitSuccess + _ -> return () +keyboard _ _ _ _ _ = return () + +-- Main Loop +-- Open window with initial window size, title bar, +-- RGBA display mode, and handle input events. +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, RGBMode ] + initialWindowSize $= Size 200 200 + createWindow progName + state <- makeState + myInit + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just (keyboard state) + displayCallback $= display state + mainLoop addfile ./examples/RedBook/Alpha3D.hs hunk ./examples/RedBook/Alpha3D.hs 1 +{- + Alpha3D.hs (adapted from alpha3D.c which is (c) Silicon Graphics, Inc.) + Copyright (c) Sven Panne 2002-2006 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program demonstrates how to intermix opaque and alpha blended polygons + in the same scene, by using depthMask. Press the 'a' key to animate moving + the transparent object through the opaque object. Press the 'r' key to reset + the scene. +-} + +import Data.Char ( toLower ) +import Data.IORef ( IORef, newIORef ) +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +maxZ, minZ, zInc :: GLfloat +maxZ = 8 +minZ = -8 +zInc = 0.4 + +-- We don't animate via the idle callback, because this is way too fast on +-- modern computers. A timer with the delay below is used instead for redraw. +delay :: Timeout +delay = 100 + +data State = State { solidZ, transparentZ :: IORef GLfloat } + +makeState :: IO State +makeState = do + s <- newIORef maxZ + t <- newIORef minZ + return $ State { solidZ = s, transparentZ = t } + +data DisplayLists = DisplayLists { sphereList, cubeList :: DisplayList } + +myInit :: IO DisplayLists +myInit = do + materialSpecular Front $= Color4 1 1 1 0.15 + materialShininess Front $= 100 + position (Light 0) $= Vertex4 0.5 0.5 1 0 + + lighting $= Enabled + light (Light 0) $= Enabled + depthFunc $= Just Less + + s <- defineNewList Compile $ renderObject Solid (Sphere' 0.4 16 16) + c <- defineNewList Compile $ renderObject Solid (Cube 0.6) + return $ DisplayLists { sphereList = s, cubeList = c } + +display :: State -> DisplayLists -> DisplayCallback +display state displayLists = do + clear [ ColorBuffer, DepthBuffer ] + + preservingMatrix $ do + s <- get (solidZ state) + translate (Vector3 (-0.15) (-0.15) s) + materialEmission Front $= Color4 0 0 0 1 + materialDiffuse Front $= Color4 0.75 0.75 0 1 + callList (sphereList displayLists) + + preservingMatrix $ do + t <- get (transparentZ state) + translate (Vector3 (0.15) (0.15) t) + rotate (15 :: GLfloat) (Vector3 1 1 0) + rotate (30 :: GLfloat) (Vector3 0 1 0) + materialEmission Front $= Color4 0 0.3 0.3 0.6 + materialDiffuse Front $= Color4 0 0.8 0.8 0.6 + blend $= Enabled + depthMask $= Disabled + blendFunc $= (SrcAlpha, One) + callList (cubeList displayLists) + depthMask $= Enabled + blend $= Disabled + + flush + swapBuffers + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + let wf = fromIntegral w + hf = fromIntegral h + if w <= h + then ortho (-1.5) 1.5 (-1.5*hf/wf) (1.5*hf/wf) (-10) 10 + else ortho (-1.5*wf/hf) (1.5*wf/hf) (-1.5) 1.5 (-10) 10 + matrixMode $= Modelview 0 + loadIdentity + +animate :: State -> TimerCallback +animate state = do + s <- get (solidZ state) + t <- get (transparentZ state) + if (s <= minZ || t >= maxZ) + then idleCallback $= Nothing + else do + solidZ state $~ (+ (- zInc)) + transparentZ state $~ (+ zInc) + addTimerCallback delay (animate state) + postRedisplay Nothing + +keyboard :: State -> KeyboardMouseCallback +keyboard state (Char c) Down _ _ = case toLower c of + 'a' -> do solidZ state $= maxZ; transparentZ state $= minZ; addTimerCallback delay (animate state) + 'r' -> do solidZ state $= maxZ; transparentZ state $= minZ; postRedisplay Nothing + '\27' -> exitWith ExitSuccess + _ -> return () +keyboard _ _ _ _ _ = return () + +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + -- The original C example uses single buffering, which flickers a lot. + initialDisplayMode $= [ DoubleBuffered, RGBMode, WithDepthBuffer ] + initialWindowSize $= Size 500 500 + createWindow progName + state <- makeState + displayLists <- myInit + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just (keyboard state) + displayCallback $= display state displayLists + mainLoop addfile ./examples/RedBook/FogIndex.hs hunk ./examples/RedBook/FogIndex.hs 1 +{- + FogIndex.hs (adapted from fogindex.c which is (c) Silicon Graphics, Inc) + Copyright (c) Sven Panne 2002-2005 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program draws 5 wireframe spheres, each at a different z distance from + the eye, in linear fog. +-} + +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +-- Initialize color map and fog. Set screen clear color to end of color ramp. +numColors, rampStart :: GLint +numColors = 32 +rampStart = 16 + +myInit :: IO () +myInit = do + depthFunc $= Just Less + + flip mapM_ [ 0 .. numColors - 1 ] $ \i -> do + let shade = fromIntegral (numColors - i) / fromIntegral numColors + colorMapEntry (Index1 (rampStart + i)) $= Color3 shade shade shade + fog $= Enabled + + fogMode $= Linear 1 6 + fogIndex $= Index1 numColors + hint Fog $= Nicest + clearIndex $= Index1 (fromIntegral (numColors + rampStart - 1)) + +renderSpehere :: Vector3 GLfloat -> IO () +renderSpehere xyz = + preservingMatrix $ do + translate xyz + renderObject Wireframe (Sphere' 0.4 16 16) + +-- display draws 5 spheres at different z positions. +display :: DisplayCallback +display = do + clear [ ColorBuffer, DepthBuffer ] + index (Index1 rampStart) + mapM_ renderSpehere [ Vector3 x (-0.5) (-3 - x) | x <- [-2 .. 2] ] + flush + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + let wf = fromIntegral w + hf = fromIntegral h + if w <= h + then ortho (-2.5) 2.5 (-2.5*hf/wf) (2.5*hf/wf) (-10.0) 10.0 + else ortho (-2.5*wf/hf) (2.5*wf/hf) (-2.5) 2.5 (-10.0) 10.0 + matrixMode $= Modelview 0 + loadIdentity + +keyboard :: KeyboardMouseCallback +keyboard (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard _ _ _ _ = return () + +-- Main Loop: Open window with initial window size, title bar, color index +-- display mode, depth buffer, and handle input events. +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, IndexMode, WithDepthBuffer ] + initialWindowSize $= Size 500 500 + createWindow progName + myInit + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just keyboard + displayCallback $= display + mainLoop hunk ./examples/RedBook/Alpha3D.hs 77 - flush addfile ./examples/RedBook/Multisamp.hs hunk ./examples/RedBook/Multisamp.hs 1 +{- + Multisamp.hs (adapted from multisamp.c which is (c) Silicon Graphics, Inc.) + Copyright (c) Sven Panne 2002-2006 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program draws shows how to use multisampling to draw anti-aliased + geometric primitives. The same display list, a pinwheel of triangles and + lines of varying widths, is rendered twice. Multisampling is enabled when the + left side is drawn. Multisampling is disabled when the right side is drawn. + + Pressing the 'b' key toggles drawing of the checkerboard background. + Antialiasing is sometimes easier to see when objects are rendered over a + contrasting background. +-} + +import Control.Monad ( when ) +import Data.Char ( toLower ) +import Data.IORef ( IORef, newIORef ) +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +data State = State { bgToggle :: IORef Bool } + +makeState :: IO State +makeState = do + b <- newIORef True + return $ State { bgToggle = b } + +data DisplayLists = DisplayLists { pinwheelList, backgroundList :: DisplayList } + +-- Print out state values related to multisampling. Create display list with +-- "pinwheel" of lines and triangles. +myInit :: IO DisplayLists +myInit = do + clearColor $= Color4 0 0 0 0 + sb <- get sampleBuffers + putStrLn ("number of sample buffers is " ++ show sb) + s <- get samples + putStrLn ("number of samples is " ++ show s) + + -- resolve overloading, not needed in "real" programs + let color3f = color :: Color3 GLfloat -> IO () + vertex2f = vertex :: Vertex2 GLfloat -> IO () + + p <- defineNewList Compile $ do + flip mapM_ [ 0 .. 18 ] $ \i -> + preservingMatrix $ do + rotate (360 * fromIntegral i / 19 :: GLfloat) (Vector3 0 0 1) + color3f (Color3 1 1 1) + lineWidth $= fromIntegral ((i `mod` 3 :: Int) + 1) + renderPrimitive Lines $ do + vertex2f (Vertex2 0.25 0.05) + vertex2f (Vertex2 0.9 0.2) + color3f (Color3 0 1 1) + renderPrimitive Triangles $ do + vertex2f (Vertex2 0.25 0) + vertex2f (Vertex2 0.9 0) + vertex2f (Vertex2 0.875 0.1) + + b <- defineNewList Compile $ do + color3f (Color3 1 0.5 0) + renderPrimitive Quads $ + flip mapM_ [ 0 .. 15 ] $ \i -> + flip mapM_ [ 0 .. 15 ] $ \j -> + when (((i + j) `mod` 2 :: Int) == 0) $ do + let ii = fromIntegral i * 0.25 + jj = fromIntegral j * 0.25 + vertex2f (Vertex2 (-2.0 + ii) (-2.0 + jj)) + vertex2f (Vertex2 (-2.0 + ii) (-1.75 + jj)) + vertex2f (Vertex2 (-1.75 + ii) (-1.75 + jj)) + vertex2f (Vertex2 (-1.75 + ii) (-2.0 + jj)) + + return $ DisplayLists { pinwheelList = p, backgroundList = b } + +-- Draw two sets of primitives, so that you can compare the user of +-- multisampling against its absence. +-- +-- This code enables antialiasing and draws one display list and disables and +-- draws the other display list +display :: State -> DisplayLists -> DisplayCallback +display state displayLists = do + clear [ ColorBuffer ] + + t <- get (bgToggle state) + when t $ + callList (backgroundList displayLists) + + -- resolve overloading, not needed in "real" programs + let translatef = translate :: Vector3 GLfloat -> IO () + + multisample $= Enabled + preservingMatrix $ do + translatef (Vector3 (-1) 0 0) + callList (pinwheelList displayLists) + + multisample $= Disabled + preservingMatrix $ do + translatef (Vector3 1 0 0) + callList (pinwheelList displayLists) + + swapBuffers + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + let wf = fromIntegral w + hf = fromIntegral h + if w <= 2 * h + then ortho2D (-2) 2 (-2*hf/wf) (2*hf/wf) + else ortho2D (-2*wf/hf) (2*wf/hf) (-2) 2 + matrixMode $= Modelview 0 + loadIdentity + +keyboard :: State -> KeyboardMouseCallback +keyboard state (Char c) Down _ _ = case toLower c of + 'b' -> do bgToggle state $~ not; postRedisplay Nothing + '\27' -> exitWith ExitSuccess + _ -> return () +keyboard _ _ _ _ _ = return () + +-- Main Loop: Open window with initial window size, title bar, RGBA display +-- mode, and handle input events. +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + -- The original C example uses single buffering, which flickers a lot. + initialDisplayMode $= [ DoubleBuffered, RGBMode, Multisampling ] + initialWindowSize $= Size 600 300 + createWindow progName + state <- makeState + displayLists <- myInit + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just (keyboard state) + displayCallback $= display state displayLists + mainLoop hunk ./examples/RedBook/Multisamp.hs 129 - -- The original C example uses single buffering, which flickers a lot. addfile ./examples/RedBook/PointP.hs hunk ./examples/RedBook/PointP.hs 1 +{- + PointP.hs (adapted from pointp.c which is (c) Silicon Graphics, Inc.) + Copyright (c) Sven Panne 2002-2006 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program demonstrates point parameters and their effect on point + primitives. 250 points are randomly generated within a 10 by 10 by 40 region, + centered at the origin. In some modes (including the default), points that + are closer to the viewer will appear larger. + + Pressing the 'c', 'l', and 'q' keys switch the point parameters attenuation + mode to constant, linear, or quadratic, respectively. + + Pressing the 'f' and 'b' keys move the viewer forward and backwards. In + either linear or quadratic attenuation mode, the distance from the viewer to + the point will change the size of the point primitive. + + Pressing the '+' and '-' keys will change the current point size. In this + program, the point size is bounded, so it will not get less than 2, nor + greater than the maximum returned by pointSizeRange. +-} + +import Control.Monad ( when, unless ) +import Data.IORef ( IORef, newIORef ) +import System.Exit ( exitWith, ExitCode(ExitSuccess), exitFailure ) +import System.Random ( randomRIO ) +import Graphics.UI.GLUT + +type Attenuation = (GLfloat,GLfloat,GLfloat) + +constant, linear, quadratic :: Attenuation +constant = (1, 0, 0 ) +linear = (0, 0.12, 0 ) +quadratic = (0, 0, 0.01) + +data State = State { distance :: IORef GLfloat } + +makeState :: IO State +makeState = do + d <- newIORef (-10) + return $ State { distance = d } + +randomColor :: IO (Color3 GLfloat) +randomColor = do + g <- randomRIO (0.5, 1) + b <- randomRIO (0, 1) + return $ Color3 1 g b + +randomVertex :: IO (Vertex3 GLfloat) +randomVertex = do + x <- randomRIO (-5, 5) + y <- randomRIO (-5, 5) + z <- randomRIO (-5, -45) + return $ Vertex3 x y z + +myInit :: IO DisplayList +myInit = do + pointList <- defineNewList Compile $ + renderPrimitive Points $ + sequence_ $ replicate 250 $ do + color =<< randomColor + vertex =<< randomVertex + + depthFunc $= Just Less + pointSmooth $= Enabled + blend $= Enabled + blendFunc $= (SrcAlpha, OneMinusSrcAlpha) + pointSize $= 7 + + pointDistanceAttenuation $= linear + pointFadeThresholdSize $= 2 + + return pointList + +display :: State -> DisplayList -> DisplayCallback +display state pointList = do + clear [ ColorBuffer, DepthBuffer ] + d <- get (distance state) + loadIdentity + translate (Vector3 0 0 d) + callList pointList + swapBuffers + +reshape :: ReshapeCallback +reshape size = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + perspective 35 1 0.25 200 + matrixMode $= Modelview 0 + +setPointDistanceAttenuation :: Attenuation -> IO () +setPointDistanceAttenuation att = do + pointDistanceAttenuation $= att + postRedisplay Nothing + +incDistance :: State -> GLfloat -> IO () +incDistance state inc = do + distance state $~ (+ inc) + postRedisplay Nothing + +incPointSize :: GLfloat -> IO () +incPointSize inc = do + newPointSize <- fmap (+ inc) $ get pointSize + (_,maxPointSize) <- get pointSizeRange + when (2 <= newPointSize && newPointSize <= maxPointSize) $ do + pointSize $= newPointSize + postRedisplay Nothing + +keyboard :: State -> KeyboardMouseCallback +keyboard state (Char c) Down _ _ = case c of + 'c' -> setPointDistanceAttenuation constant + 'l' -> setPointDistanceAttenuation linear + 'q' -> setPointDistanceAttenuation quadratic + 'b' -> incDistance state (-0.5) + 'f' -> incDistance state 0.5 + '+' -> incPointSize 1 + '-' -> incPointSize (-1) + '\27' -> exitWith ExitSuccess + _ -> return () +keyboard _ _ _ _ _ = return () + +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ RGBMode, DoubleBuffered, WithDepthBuffer, Multisampling ] + initialWindowSize $= Size 500 500 + initialWindowPosition $= Position 100 100 + createWindow progName + + -- We have to do this *after* createWindow, otherwise we have no OpenGL + -- context. Note that the original C example simply tests for OpenGL 1.4 at + -- compile time, we do a runtime check for the needed extension. + extensions <- get glExtensions + unless ("GL_ARB_point_parameters" `elem` extensions) $ do + putStrLn "Sorry, this demo requires the GL_ARB_point_parameters extension." + exitFailure + + state <- makeState + pointList <- myInit + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just (keyboard state) + displayCallback $= display state pointList + mainLoop addfile ./examples/RedBook/PolyOff.hs hunk ./examples/RedBook/PolyOff.hs 1 +{- + PolyOff.hs (adapted from polyoff.c which is (c) Silicon Graphics, Inc.) + Copyright (c) Sven Panne 2002-2006 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program demonstrates polygon offset to draw a shaded polygon and its + wireframe counterpart without ugly visual artifacts ("stitching"). +-} + +import Control.Monad ( when ) +import Data.IORef ( IORef, newIORef ) +import System.Exit ( exitWith, ExitCode(ExitSuccess), exitFailure ) +import Graphics.UI.GLUT + +data State = State { + spinX, spinY :: IORef GLfloat, + tDist :: IORef GLfloat, + polyFactor :: IORef GLfloat, + polyUnits :: IORef GLfloat + } + +makeState :: IO State +makeState = do + x <- newIORef 0 + y <- newIORef 0 + t <- newIORef 0 + f <- newIORef 1 + u <- newIORef 1 + return $ State { spinX = x, spinY = y, tDist = t, polyFactor = f, polyUnits = u } + +-- display draws two spheres, one with a gray, diffuse material, the other +-- sphere with a magenta material with a specular highlight. +display :: State -> DisplayList -> DisplayCallback +display state sphereList = do + clear [ ColorBuffer, DepthBuffer ] + preservingMatrix $ do + t <- get (tDist state) + translate (Vector3 0 0 t) + x <- get (spinX state) + rotate x (Vector3 1 0 0) + y <- get (spinY state) + rotate y (Vector3 0 1 0) + + materialAmbientAndDiffuse Front $= Color4 0.8 0.8 0.8 1 + materialSpecular Front $= Color4 0 0 0 1 + materialShininess Front $= 0 + lighting $= Enabled + light (Light 0) $= Enabled + polygonOffsetFill $= Enabled + f <- get (polyFactor state) + u <- get (polyUnits state) + polygonOffset $= (f, u) + callList sphereList + polygonOffsetFill $= Disabled + + lighting $= Disabled + light (Light 0) $= Disabled + color (Color3 1 1 (1 :: GLfloat)) + polygonMode $= (Line, Line) + callList sphereList + polygonMode $= (Fill, Fill) + + flush + +-- specify initial properties +-- create display list with sphere +-- initialize lighting and depth buffer +gfxinit :: IO DisplayList +gfxinit = do + clearColor $= Color4 0 0 0 1 + + sphereList <- defineNewList Compile $ + renderObject Solid (Sphere' 1 20 12) + + depthFunc $= Just Less + + ambient (Light 0) $= Color4 0 0 0 1 + diffuse (Light 0) $= Color4 1 1 1 1 + specular (Light 0) $= Color4 1 1 1 1 + position (Light 0) $= Vertex4 1 1 1 0 + lightModelAmbient $= Color4 0.2 0.2 0.2 1 + + return sphereList + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + perspective 45 (fromIntegral w / fromIntegral h) 1 10 + matrixMode $= Modelview 0 + loadIdentity + lookAt (Vertex3 0 0 5) (Vertex3 0 0 0) (Vector3 0 1 0) + +incSpin :: IORef GLfloat -> IO () +incSpin spinRef = do + let wrap n s = if s > n then s - n else s + spinRef $~ (wrap 360 . (+ 5)) + postRedisplay Nothing + +incDist :: State -> GLfloat -> IO () +incDist state inc = do + newDist <- fmap (+ inc) $ get (tDist state) + when (-5 <= newDist && newDist <= 4) $ do + tDist state $= newDist + postRedisplay Nothing + +incPoly :: String -> IORef GLfloat -> GLfloat -> IO () +incPoly name polyRef inc = do + polyRef $~ (+ inc) + p <- get polyRef + putStrLn (name ++ " is " ++ show p) + postRedisplay Nothing + +keyboardMouse :: State -> KeyboardMouseCallback +keyboardMouse state k Down _ _ = case k of + (MouseButton LeftButton) -> incSpin (spinX state) + (MouseButton MiddleButton) -> incSpin (spinY state) + (MouseButton RightButton) -> exitWith ExitSuccess + (Char 't') -> incDist state 0.5 + (Char 'T') -> incDist state (-0.5) + (Char 'F') -> incPoly "polyFactor" (polyFactor state) 0.1 + (Char 'f') -> incPoly "polyFactor" (polyFactor state) (-0.1) + (Char 'U') -> incPoly "polyUnits" (polyUnits state) 1 + (Char 'u') -> incPoly "polyUnits" (polyUnits state) (-1) + _ -> return () +keyboardMouse _ _ _ _ _ = return () + +-- Main Loop: Open window with initial window size, title bar, RGBA display +-- mode, and handle input events. +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] + createWindow progName + + -- we have to do this *after* createWindow, otherwise we have no OpenGL context + version <- get glVersion + when (take 3 version == "1.0") $ do + putStrLn "This program demonstrates a feature which is not in OpenGL Version 1.0." + putStrLn "If your implementation of OpenGL Version 1.0 has the right extensions," + putStrLn "you may be able to modify this program to make it run." + exitFailure + + state <- makeState + sphereList <- gfxinit + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just (keyboardMouse state) + displayCallback $= display state sphereList + mainLoop hunk ./examples/RedBook/Histogram.hs 67 + postRedisplay Nothing addfile ./examples/RedBook/Torus.hs hunk ./examples/RedBook/Torus.hs 1 +{- + Torus.hs (adapted from torus.c which is (c) Silicon Graphics, Inc.) + Copyright (c) Sven Panne 2002-2006 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program demonstrates the creation of a display list. +-} + +import Data.Char ( toLower ) +import Data.IORef ( IORef, newIORef ) +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +data State = State { spinX, spinY :: IORef GLfloat } + +makeState :: IO State +makeState = do + x <- newIORef 0 + y <- newIORef 0 + return $ State { spinX = x, spinY = y } + +torus :: Int -> Int -> IO () +torus numC numT = do + let stepC = 2 * pi / fromIntegral numC :: GLfloat + stepT = 2 * pi / fromIntegral numT + flip mapM_ [ 0 .. numC - 1 ] $ \i -> + renderPrimitive QuadStrip $ + flip mapM_ [ 0 .. numT ] $ \j -> + flip mapM_ [ 1, 0 ] $ \k -> do + let s = (fromIntegral ((i + k) `mod` numC) + 0.5) * stepC + t = (fromIntegral ( j `mod` numT) ) * stepT + x = (1 + 0.1 * cos s) * cos t + y = (1 + 0.1 * cos s) * sin t + z = 0.1 * sin s + vertex (Vertex3 x y z) + +myInit :: IO DisplayList +myInit = do + theTorus <- defineNewList Compile $ + torus 8 25 + shadeModel $= Flat + clearColor $= Color4 0 0 0 0 + return theTorus + +display :: State -> DisplayList -> DisplayCallback +display state theTorus = do + clear [ ColorBuffer ] + loadIdentity + lookAt (Vertex3 0 0 10) (Vertex3 0 0 0) (Vector3 0 1 0) + x <- get (spinX state) + rotate x (Vector3 1 0 0) + y <- get (spinY state) + rotate y (Vector3 0 1 0) + color (Color3 1 1 (1 :: GLfloat)) + callList theTorus + flush + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + perspective 30 (fromIntegral w / fromIntegral h) 1 100 + matrixMode $= Modelview 0 + +incSpin :: IORef GLfloat -> IO () +incSpin spinRef = do + let wrap n s = if s > n then s - n else s + spinRef $~ (wrap 360 . (+ 30)) + postRedisplay Nothing + +keyboard :: State -> KeyboardMouseCallback +keyboard state (Char c) Down _ _ = case toLower c of + 'x' -> incSpin (spinX state) + 'y' -> incSpin (spinY state) + 'i' -> do spinX state $= 0; spinY state $= 0; postRedisplay Nothing + '\27' -> exitWith ExitSuccess + _ -> return () +keyboard _ _ _ _ _ = return () + +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, RGBMode ] + initialWindowSize $= Size 200 200 + createWindow progName + state <- makeState + theTorus <- myInit + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just (keyboard state) + displayCallback $= display state theTorus + mainLoop hunk ./examples/RedBook/Font.hs 7 - Draws some text in a bitmapped font. Uses bitmap and other pixel - routines. Also demonstrates use of display lists. + Draws some text in a bitmapped font. Uses bitmap and other pixel routines. + Also demonstrates use of display lists. hunk ./examples/RedBook/Font.hs 12 -import Data.Char ( ord ) -import Data.List ( genericLength ) -import Foreign ( withArray ) +import Data.List ( genericDrop, genericLength ) +import Foreign.C.String ( castCharToCChar ) +import Foreign.Marshal.Array ( withArray ) hunk ./examples/RedBook/Font.hs 51 +charToGLubyte :: Char -> GLubyte +charToGLubyte = fromIntegral . castCharToCChar + hunk ./examples/RedBook/Font.hs 59 - let listsStartingWith ch = drop (ord ch) fontDisplayLists + let listsStartingWith ch = genericDrop (charToGLubyte ch) fontDisplayLists hunk ./examples/RedBook/Font.hs 78 - withArray (stringToGLubytes s) $ + withArray (map charToGLubyte s) $ hunk ./examples/RedBook/Font.hs 81 -stringToGLubytes :: String -> [GLubyte] -stringToGLubytes = map (fromIntegral . ord) - addfile ./examples/RedBook/Stroke.hs hunk ./examples/RedBook/Stroke.hs 1 +{- + Stroke.hs (adapted from stroke.c which is (c) Silicon Graphics, Inc.) + Copyright (c) Sven Panne 2002-2006 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program demonstrates some characters of a stroke (vector) font. The + characters are represented by display lists, which are given numbers which + correspond to the ASCII values of the characters. Use of callLists is + demonstrated. +-} + +import Data.List ( genericLength ) +import Foreign.C.String ( castCharToCChar ) +import Foreign.Marshal.Array ( withArray ) +import Graphics.UI.GLUT +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) + +aData, eData, pData, rData, sData :: [[Vertex2 GLfloat]] +aData = [ + [ Vertex2 0 0, Vertex2 0 9, Vertex2 1 10, Vertex2 4 10, Vertex2 5 9, + Vertex2 5 0 ], + [ Vertex2 0 5, Vertex2 5 5 ] ] + +eData = [ + [ Vertex2 5 0, Vertex2 0 0, Vertex2 0 10, Vertex2 5 10 ], + [ Vertex2 0 5, Vertex2 4 5 ] ] + +pData = [ + [ Vertex2 0 0, Vertex2 0 10, Vertex2 4 10, Vertex2 5 9, Vertex2 5 6, + Vertex2 4 5, Vertex2 0 5 ] ] + +rData = [ + [ Vertex2 0 0, Vertex2 0 10, Vertex2 4 10, Vertex2 5 9, Vertex2 5 6, + Vertex2 4 5, Vertex2 0 5 ], + [ Vertex2 3 5, Vertex2 5 0 ] ] + +sData = [ + [ Vertex2 0 1, Vertex2 1 0, Vertex2 4 0, Vertex2 5 1, Vertex2 5 4, + Vertex2 4 5, Vertex2 1 5, Vertex2 0 6, Vertex2 0 9, Vertex2 1 10, + Vertex2 4 10, Vertex2 5 9 ] ] + +advance :: IO () +advance = translate (Vector3 8 0 (0 :: GLfloat)) + +-- drawLetter renders a letter with line segments given by the list of line +-- strips. +drawLetter :: [[Vertex2 GLfloat]] -> IO () +drawLetter lineStrips = do + mapM_ (renderPrimitive LineStrip . mapM_ vertex) lineStrips + advance + +charToGLubyte :: Char -> GLubyte +charToGLubyte = fromIntegral . castCharToCChar + +myInit :: IO () +myInit = do + shadeModel $= Flat + + (base@(DisplayList b):_) <- genObjectNames 128 + listBase $= base + let charToDisplayList c = DisplayList (b + fromIntegral (charToGLubyte c)) + mapM_ (\(c, d) -> defineList (charToDisplayList c) Compile d) + [ ('A', drawLetter aData), + ('E', drawLetter eData), + ('P', drawLetter pData), + ('R', drawLetter rData), + ('S', drawLetter sData), + (' ', advance) ] + +test1, test2 :: String +test1 = "A SPARE SERAPE APPEARS AS" +test2 = "APES PREPARE RARE PEPPERS" + +printStrokedString :: String -> IO () +printStrokedString s = + withArray (map charToGLubyte s) $ + callLists (genericLength s) UnsignedByte + +display :: DisplayCallback +display = do + clear [ ColorBuffer ] + + -- resolve overloading, not needed in "real" programs + let color3f = color :: Color3 GLfloat -> IO () + scalef = scale :: GLfloat -> GLfloat -> GLfloat -> IO () + translatef = translate :: Vector3 GLfloat -> IO () + + color3f (Color3 1 1 1) + preservingMatrix $ do + scalef 2 2 2 + translatef (Vector3 10 30 0) + printStrokedString test1 + preservingMatrix $ do + scalef 2 2 2 + translatef (Vector3 10 13 0) + printStrokedString test2 + flush + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + ortho2D 0 (fromIntegral w) 0 (fromIntegral h) + matrixMode $= Modelview 0 + +keyboard :: KeyboardMouseCallback +keyboard (Char c) Down _ _ = case c of + ' ' -> postRedisplay Nothing + '\27' -> exitWith ExitSuccess + _ -> return () +keyboard _ _ _ _ = return () + +-- Main Loop: Open window with initial window size, title bar, RGBA display +-- mode, and handle input events. +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, RGBMode ] + initialWindowSize $= Size 440 120 + createWindow progName + myInit + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just keyboard + displayCallback $= display + mainLoop addfile ./examples/RedBook/Stencil.hs hunk ./examples/RedBook/Stencil.hs 1 +{- + Stencil.hs (adapted from stencil.c which is (c) Silicon Graphics, Inc.) + Copyright (c) Sven Panne 2002-2006 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program demonstrates use of the stencil buffer for masking + nonrectangular regions. Whenever the window is redrawn, a value of 1 is drawn + into a diamond-shaped region in the stencil buffer. Elsewhere in the stencil + buffer, the value is 0. Then a blue sphere is drawn where the stencil value + is 1, and yellow torii are drawn where the stencil value is not 1. +-} + +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +data DisplayLists = DisplayLists { yellowMat, blueMat :: DisplayList } + +myInit :: IO DisplayLists +myInit = do + y <- defineNewList Compile $ do + materialDiffuse Front $= Color4 0.7 0.7 0 1 + materialSpecular Front $= Color4 1 1 1 1 + materialShininess Front $= 64 + + b <- defineNewList Compile $ do + materialDiffuse Front $= Color4 0.1 0.1 0.7 1 + materialSpecular Front $= Color4 0.1 1 1 1 + materialShininess Front $= 45 + + position (Light 0) $= Vertex4 1 1 1 0 + + light (Light 0) $= Enabled + lighting $= Enabled + depthFunc $= Just Less + + clearStencil $= 0 + stencilTest $= Enabled + + return $ DisplayLists { yellowMat = y, blueMat = b } + +-- Draw a sphere in a diamond-shaped section in the middle of a window with 2 +-- torii. +display :: DisplayLists -> DisplayCallback +display displayLists = do + clear [ ColorBuffer, DepthBuffer ] + + -- draw blue sphere where the stencil is 1 + stencilFunc $= (Equal, 1, 1) + stencilOp $= (OpKeep, OpKeep, OpKeep) + callList (blueMat displayLists) + renderObject Solid (Sphere' 0.5 15 15) + + -- resolve overloading, not needed in "real" programs + let rotatef = rotate :: GLfloat -> Vector3 GLfloat -> IO () + + -- draw the tori where the stencil is not 1 + stencilFunc $= (Notequal, 1, 1) + preservingMatrix $ do + rotatef 45 (Vector3 0 0 1) + rotatef 45 (Vector3 0 1 0) + callList (yellowMat displayLists) + renderObject Solid (Torus 0.275 0.85 15 15) + preservingMatrix $ do + rotatef 90 (Vector3 1 0 0) + renderObject Solid (Torus 0.275 0.85 15 15) + + flush + +-- Whenever the window is reshaped, redefine the coordinate system and redraw +-- the stencil area. +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + + -- create a diamond shaped stencil area + matrixMode $= Projection + loadIdentity + let wf = fromIntegral w + hf = fromIntegral h + if w <= h + then ortho2D (-3) 3 (-3*hf/wf) (3*hf/wf) + else ortho2D (-3*wf/hf) (3*wf/hf) (-3) 3 + matrixMode $= Modelview 0 + loadIdentity + + -- resolve overloading, not needed in "real" programs + let vertex2f = vertex :: Vertex2 GLfloat -> IO () + translatef = translate :: Vector3 GLfloat -> IO () + + clear [ StencilBuffer ] + stencilFunc $= (Always, 1, 1) + stencilOp $= (OpReplace, OpReplace, OpReplace) + renderPrimitive Quads $ do + vertex2f (Vertex2 (-1) 0) + vertex2f (Vertex2 0 1) + vertex2f (Vertex2 1 0) + vertex2f (Vertex2 0 (-1)) + + matrixMode $= Projection + loadIdentity + perspective 45 (wf/hf) 3 7 + matrixMode $= Modelview 0 + loadIdentity + translatef (Vector3 0 0 (-5)) + +keyboard :: KeyboardMouseCallback +keyboard (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard _ _ _ _ = return () + +-- Main Loop: Be certain to request stencil bits. +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer, WithStencilBuffer ] + initialWindowSize $= Size 400 400 + initialWindowPosition $= Position 100 100 + createWindow progName + displayLists <- myInit + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just keyboard + displayCallback $= display displayLists + mainLoop hunk ./examples/RedBook/Teapots.hs 35 -renderTeapot :: DisplayList -> Vector3 GLfloat -> Color4 GLfloat -> Color4 GLfloat -> Color4 GLfloat -> GLfloat -> IO () +renderTeapot :: DisplayList -> Vector3 GLfloat -> Color4 GLfloat + -> Color4 GLfloat -> Color4 GLfloat -> GLfloat -> IO () hunk ./examples/RedBook/Teapots.hs 40 - materialAmbient Front $= amb - materialDiffuse Front $= dif - materialSpecular Front $= spec + materialAmbient Front $= amb + materialDiffuse Front $= dif + materialSpecular Front $= spec hunk ./examples/RedBook/Teapots.hs 53 - renderTeapot teapotList (Vector3 2 17 0) (Color4 0.0215 0.1745 0.0215 1) (Color4 0.07568 0.61424 0.07568 1) (Color4 0.633 0.727811 0.633 1) 0.6 - renderTeapot teapotList (Vector3 2 14 0) (Color4 0.135 0.2225 0.1575 1) (Color4 0.54 0.89 0.63 1) (Color4 0.316228 0.316228 0.316228 1) 0.1 - renderTeapot teapotList (Vector3 2 11 0) (Color4 0.05375 0.05 0.06625 1) (Color4 0.18275 0.17 0.22525 1) (Color4 0.332741 0.328634 0.346435 1) 0.3 - renderTeapot teapotList (Vector3 2 8 0) (Color4 0.25 0.20725 0.20725 1) (Color4 1 0.829 0.829 1) (Color4 0.296648 0.296648 0.296648 1) 0.088 - renderTeapot teapotList (Vector3 2 5 0) (Color4 0.1745 0.01175 0.01175 1) (Color4 0.61424 0.04136 0.04136 1) (Color4 0.727811 0.626959 0.626959 1) 0.6 - renderTeapot teapotList (Vector3 2 2 0) (Color4 0.1 0.18725 0.1745 1) (Color4 0.396 0.74151 0.69102 1) (Color4 0.297254 0.30829 0.306678 1) 0.1 - renderTeapot teapotList (Vector3 6 17 0) (Color4 0.329412 0.223529 0.027451 1) (Color4 0.780392 0.568627 0.113725 1) (Color4 0.992157 0.941176 0.807843 1) 0.21794872 - renderTeapot teapotList (Vector3 6 14 0) (Color4 0.2125 0.1275 0.054 1) (Color4 0.714 0.4284 0.18144 1) (Color4 0.393548 0.271906 0.166721 1) 0.2 - renderTeapot teapotList (Vector3 6 11 0) (Color4 0.25 0.25 0.25 1) (Color4 0.4 0.4 0.4 1) (Color4 0.774597 0.774597 0.774597 1) 0.6 - renderTeapot teapotList (Vector3 6 8 0) (Color4 0.19125 0.0735 0.0225 1) (Color4 0.7038 0.27048 0.0828 1) (Color4 0.256777 0.137622 0.086014 1) 0.1 - renderTeapot teapotList (Vector3 6 5 0) (Color4 0.24725 0.1995 0.0745 1) (Color4 0.75164 0.60648 0.22648 1) (Color4 0.628281 0.555802 0.366065 1) 0.4 - renderTeapot teapotList (Vector3 6 2 0) (Color4 0.19225 0.19225 0.19225 1) (Color4 0.50754 0.50754 0.50754 1) (Color4 0.508273 0.508273 0.508273 1) 0.4 - renderTeapot teapotList (Vector3 10 17 0) (Color4 0 0 0 1) (Color4 0.01 0.01 0.01 1) (Color4 0.50 0.50 0.50 1) 0.25 - renderTeapot teapotList (Vector3 10 14 0) (Color4 0 0.1 0.06 1) (Color4 0 0.50980392 0.50980392 1) (Color4 0.50196078 0.50196078 0.50196078 1) 0.25 - renderTeapot teapotList (Vector3 10 11 0) (Color4 0 0 0 1) (Color4 0.1 0.35 0.1 1) (Color4 0.45 0.55 0.45 1) 0.25 - renderTeapot teapotList (Vector3 10 8 0) (Color4 0 0 0 1) (Color4 0.5 0 0 1) (Color4 0.7 0.6 0.6 1) 0.25 - renderTeapot teapotList (Vector3 10 5 0) (Color4 0 0 0 1) (Color4 0.55 0.55 0.55 1) (Color4 0.70 0.70 0.70 1) 0.25 - renderTeapot teapotList (Vector3 10 2 0) (Color4 0 0 0 1) (Color4 0.5 0.5 0 1) (Color4 0.60 0.60 0.50 1) 0.25 - renderTeapot teapotList (Vector3 14 17 0) (Color4 0.02 0.02 0.02 1) (Color4 0.01 0.01 0.01 1) (Color4 0.4 0.4 0.4 1) 0.078125 - renderTeapot teapotList (Vector3 14 14 0) (Color4 0 0.05 0.05 1) (Color4 0.4 0.5 0.5 1) (Color4 0.04 0.7 0.7 1) 0.078125 - renderTeapot teapotList (Vector3 14 11 0) (Color4 0 0.05 0 1) (Color4 0.4 0.5 0.4 1) (Color4 0.04 0.7 0.04 1) 0.078125 - renderTeapot teapotList (Vector3 14 8 0) (Color4 0.05 0 0 1) (Color4 0.5 0.4 0.4 1) (Color4 0.7 0.04 0.04 1) 0.078125 - renderTeapot teapotList (Vector3 14 5 0) (Color4 0.05 0.05 0.05 1) (Color4 0.5 0.5 0.5 1) (Color4 0.7 0.7 0.7 1) 0.078125 - renderTeapot teapotList (Vector3 14 2 0) (Color4 0.05 0.05 0 1) (Color4 0.5 0.5 0.4 1) (Color4 0.7 0.7 0.04 1) 0.078125 + renderTeapot teapotList + (Vector3 2 17 0) + (Color4 0.0215 0.1745 0.0215 1) + (Color4 0.07568 0.61424 0.07568 1) + (Color4 0.633 0.727811 0.633 1) + 0.6 + renderTeapot teapotList + (Vector3 2 14 0) + (Color4 0.135 0.2225 0.1575 1) + (Color4 0.54 0.89 0.63 1) + (Color4 0.316228 0.316228 0.316228 1) + 0.1 + renderTeapot teapotList + (Vector3 2 11 0) + (Color4 0.05375 0.05 0.06625 1) + (Color4 0.18275 0.17 0.22525 1) + (Color4 0.332741 0.328634 0.346435 1) + 0.3 + renderTeapot teapotList + (Vector3 2 8 0) + (Color4 0.25 0.20725 0.20725 1) + (Color4 1 0.829 0.829 1) + (Color4 0.296648 0.296648 0.296648 1) + 0.088 + renderTeapot teapotList + (Vector3 2 5 0) + (Color4 0.1745 0.01175 0.01175 1) + (Color4 0.61424 0.04136 0.04136 1) + (Color4 0.727811 0.626959 0.626959 1) + 0.6 + renderTeapot teapotList + (Vector3 2 2 0) + (Color4 0.1 0.18725 0.1745 1) + (Color4 0.396 0.74151 0.69102 1) + (Color4 0.297254 0.30829 0.306678 1) + 0.1 + renderTeapot teapotList + (Vector3 6 17 0) + (Color4 0.329412 0.223529 0.027451 1) + (Color4 0.780392 0.568627 0.113725 1) + (Color4 0.992157 0.941176 0.807843 1) + 0.21794872 + renderTeapot teapotList + (Vector3 6 14 0) + (Color4 0.2125 0.1275 0.054 1) + (Color4 0.714 0.4284 0.18144 1) + (Color4 0.393548 0.271906 0.166721 1) + 0.2 + renderTeapot teapotList + (Vector3 6 11 0) + (Color4 0.25 0.25 0.25 1) + (Color4 0.4 0.4 0.4 1) + (Color4 0.774597 0.774597 0.774597 1) + 0.6 + renderTeapot teapotList + (Vector3 6 8 0) + (Color4 0.19125 0.0735 0.0225 1) + (Color4 0.7038 0.27048 0.0828 1) + (Color4 0.256777 0.137622 0.086014 1) + 0.1 + renderTeapot teapotList + (Vector3 6 5 0) + (Color4 0.24725 0.1995 0.0745 1) + (Color4 0.75164 0.60648 0.22648 1) + (Color4 0.628281 0.555802 0.366065 1) + 0.4 + renderTeapot teapotList + (Vector3 6 2 0) + (Color4 0.19225 0.19225 0.19225 1) + (Color4 0.50754 0.50754 0.50754 1) + (Color4 0.508273 0.508273 0.508273 1) + 0.4 + renderTeapot teapotList + (Vector3 10 17 0) + (Color4 0 0 0 1) + (Color4 0.01 0.01 0.01 1) + (Color4 0.50 0.50 0.50 1) + 0.25 + renderTeapot teapotList + (Vector3 10 14 0) + (Color4 0 0.1 0.06 1) + (Color4 0 0.50980392 0.50980392 1) + (Color4 0.50196078 0.50196078 0.50196078 1) + 0.25 + renderTeapot teapotList + (Vector3 10 11 0) + (Color4 0 0 0 1) + (Color4 0.1 0.35 0.1 1) + (Color4 0.45 0.55 0.45 1) + 0.25 + renderTeapot teapotList + (Vector3 10 8 0) + (Color4 0 0 0 1) + (Color4 0.5 0 0 1) + (Color4 0.7 0.6 0.6 1) + 0.25 + renderTeapot teapotList + (Vector3 10 5 0) + (Color4 0 0 0 1) + (Color4 0.55 0.55 0.55 1) + (Color4 0.70 0.70 0.70 1) + 0.25 + renderTeapot teapotList + (Vector3 10 2 0) + (Color4 0 0 0 1) + (Color4 0.5 0.5 0 1) + (Color4 0.60 0.60 0.50 1) + 0.25 + renderTeapot teapotList + (Vector3 14 17 0) + (Color4 0.02 0.02 0.02 1) + (Color4 0.01 0.01 0.01 1) + (Color4 0.4 0.4 0.4 1) + 0.078125 + renderTeapot teapotList + (Vector3 14 14 0) + (Color4 0 0.05 0.05 1) + (Color4 0.4 0.5 0.5 1) + (Color4 0.04 0.7 0.7 1) + 0.078125 + renderTeapot teapotList + (Vector3 14 11 0) + (Color4 0 0.05 0 1) + (Color4 0.4 0.5 0.4 1) + (Color4 0.04 0.7 0.04 1) + 0.078125 + renderTeapot teapotList + (Vector3 14 8 0) + (Color4 0.05 0 0 1) + (Color4 0.5 0.4 0.4 1) + (Color4 0.7 0.04 0.04 1) + 0.078125 + renderTeapot teapotList + (Vector3 14 5 0) + (Color4 0.05 0.05 0.05 1) + (Color4 0.5 0.5 0.5 1) + (Color4 0.7 0.7 0.7 1) + 0.078125 + renderTeapot teapotList + (Vector3 14 2 0) + (Color4 0.05 0.05 0 1) + (Color4 0.5 0.5 0.4 1) + (Color4 0.7 0.7 0.04 1) + 0.078125 addfile ./examples/RedBook/DOF.hs hunk ./examples/RedBook/DOF.hs 1 +{- + DOF.hs (adapted from dof.c which is (c) Silicon Graphics, Inc.) + Copyright (c) Sven Panne 2002-2006 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + This program demonstrates use of the accumulation buffer to create an + out-of-focus depth-of-field effect. The teapots are drawn several times into + the accumulation buffer. The viewing volume is jittered, except at the focal + point, where the viewing volume is at the same position, each time. In this + case, the gold teapot remains in focus. +-} + +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +-- j8 contains values in the range -.5 < x < .5, -.5 < y < .5, and have a +-- gaussian distribution around the origin. Use these to do model jittering for +-- scene anti-aliasing and view volume jittering for depth of field effects. Use +-- in conjunction with the accwindow routine. +j8 :: [Vector2 GLdouble] +j8 = [ + Vector2 (-0.334818) 0.435331 , + Vector2 0.286438 (-0.393495), + Vector2 0.459462 0.141540 , + Vector2 (-0.414498) (-0.192829), + Vector2 (-0.183790) 0.082102 , + Vector2 (-0.079263) (-0.317383), + Vector2 0.102254 0.299133 , + Vector2 0.164216 (-0.054399) ] + +-- The first 6 arguments are identical to the frustum call. pixD is anti-alias +-- jitter in pixels. Use (Vector2 0 0) for no anti-alias jitter. eyeD is +-- depth-of field jitter in pixels. Use (Vector2 0 0) for no depth of field +-- effects. focus is distance from eye to plane in focus. focus must be greater +-- than, but not equal to 0. Note that accFrustum calls translate. You will +-- probably want to insure that your ModelView matrix has been initialized to +-- identity before calling accFrustum. +accFrustum :: GLdouble -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> GLdouble + -> Vector2 GLdouble -> Vector2 GLdouble -> GLdouble -> IO () +accFrustum left right bottom top zNear zFar + (Vector2 pixDx pixDy) (Vector2 eyeDx eyeDy) focus = do + (_, Size w h) <- get viewport + + let xWSize = right - left; + yWSize = top - bottom; + + dx = -(pixDx * xWSize / fromIntegral w + eyeDx * zNear / focus) + dy = -(pixDy * yWSize / fromIntegral h + eyeDy * zNear / focus) + + matrixMode $= Projection + loadIdentity + frustum (left + dx) (right + dx) (bottom + dy) (top + dy) zNear zFar + matrixMode $= Modelview 0 + loadIdentity + translate (Vector3 (-eyeDx) (-eyeDy) 0) + +-- The first 4 arguments are identical to the perspective call. pixD is +-- anti-alias jitter in pixels. Use (Vector2 0 0) for no anti-alias jitter. eyeD +-- is depth-of field jitter in pixels. Use (Vector2 0 0) for no depth of field +-- effects. focus is distance from eye to plane in focus. focus must be greater +-- than, but not equal to 0. Note that accPerspective calls accFrustum. +accPerspective :: GLdouble -> GLdouble -> GLdouble -> GLdouble + -> Vector2 GLdouble -> Vector2 GLdouble -> GLdouble -> IO () +accPerspective fovY aspect zNear zFar pixD eyeD focus = do + let fov2 = ((fovY * pi) / 180) / 2 + + top = zNear / (cos fov2 / sin fov2) + bottom = -top + + right = top * aspect + left = -right + + accFrustum left right bottom top zNear zFar pixD eyeD focus + +myInit :: IO DisplayList +myInit = do + ambient (Light 0) $= Color4 0 0 0 1 + diffuse (Light 0) $= Color4 1 1 1 1 + position (Light 0) $= Vertex4 0 3 3 0 + + lightModelAmbient $= Color4 0.2 0.2 0.2 1 + lightModelLocalViewer $= Disabled + + frontFace $= CW + lighting $= Enabled + light (Light 0) $= Enabled + autoNormal $= Enabled + normalize $= Enabled + depthFunc $= Just Less + + clearColor $= Color4 0 0 0 0 + clearAccum $= Color4 0 0 0 0 + -- make teapot display list + defineNewList Compile $ + renderObject Solid (Teapot 0.5) + +-- Move object into position, specify the material properties, draw a teapot. +renderTeapot :: DisplayList -> Vector3 GLfloat -> Color4 GLfloat + -> Color4 GLfloat -> Color4 GLfloat -> GLfloat -> IO () +renderTeapot teapotList pos amb dif spec shine = + preservingMatrix $ do + translate pos + materialAmbient Front $= amb + materialDiffuse Front $= dif + materialSpecular Front $= spec + materialShininess Front $= shine * 128 + callList teapotList + +-- display draws 5 teapots into the accumulation buffer several times; each time +-- with a jittered perspective. The focal point is at z = 5.0, so the gold +-- teapot will stay in focus. The amount of jitter is adjusted by the magnitude +-- of the accPerspective jitter; in this example, 0.33. In this example, the +-- teapots are drawn 8 times. +display :: DisplayList -> DisplayCallback +display teapotList = do + (_, Size w h) <- get viewport + clear [ AccumBuffer ] + + flip mapM_ j8 $ \(Vector2 x y) -> do + clear [ ColorBuffer, DepthBuffer ] + accPerspective 45 (fromIntegral w / fromIntegral h) 1 15 + (Vector2 0 0) (Vector2 (0.33 * x) (0.33 * y)) 5 + + -- ruby, gold, silver, emerald, and cyan teapots + renderTeapot teapotList + (Vector3 (-1.1) (-0.5) (-4.5)) + (Color4 0.1745 0.01175 0.01175 1) + (Color4 0.61424 0.04136 0.04136 1) + (Color4 0.727811 0.626959 0.626959 1) + 0.6 + renderTeapot teapotList + (Vector3 (-0.5) (-0.5) (-5.0)) + (Color4 0.24725 0.1995 0.0745 1) + (Color4 0.75164 0.60648 0.22648 1) + (Color4 0.628281 0.555802 0.366065 1) + 0.4 + renderTeapot teapotList + (Vector3 0.2 (-0.5) (-5.5)) + (Color4 0.19225 0.19225 0.19225 1) + (Color4 0.50754 0.50754 0.50754 1) + (Color4 0.508273 0.508273 0.508273 1) + 0.4 + renderTeapot teapotList + (Vector3 1.0 (-0.5) (-6.0)) + (Color4 0.0215 0.1745 0.0215 1) + (Color4 0.07568 0.61424 0.07568 1) + (Color4 0.633 0.727811 0.633 1) + 0.6 + renderTeapot teapotList + (Vector3 1.8 (-0.5) (-6.5)) + (Color4 0.0 0.1 0.06 1) + (Color4 0.0 0.50980392 0.50980392 1) + (Color4 0.50196078 0.50196078 0.50196078 1) + 0.25 + accum Accum 0.125 + + accum Return 1 + flush + +reshape :: ReshapeCallback +reshape size = do + viewport $= (Position 0 0, size) + +keyboard :: KeyboardMouseCallback +keyboard (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard _ _ _ _ = return () + +-- Main Loop: Be certain you request an accumulation buffer. +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, RGBMode, WithAccumBuffer, WithDepthBuffer ] + initialWindowSize $= Size 400 400 + initialWindowPosition $= Position 100 100 + createWindow progName + teapotList <- myInit + reshapeCallback $= Just reshape + keyboardMouseCallback $= Just keyboard + displayCallback $= display teapotList + mainLoop addfile ./examples/RedBook/AccAnti.hs hunk ./examples/RedBook/AccAnti.hs 1 +{- + AccAnti.hs (adapted from accanti.c which is (c) Silicon Graphics, Inc.) + Copyright (c) Sven Panne 2002-2006 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + Use the accumulation buffer to do full-scene antialiasing on a scene with + orthographic parallel projection. +-} + +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +-- j8 contains values in the range -.5 < x < .5, -.5 < y < .5, and have a +-- gaussian distribution around the origin. Use these to do model jittering for +-- scene anti-aliasing and view volume jittering for depth of field effects. Use +-- in conjunction with the accwindow routine. +j8 :: [Vector2 GLdouble] +j8 = [ + Vector2 (-0.334818) 0.435331 , + Vector2 0.286438 (-0.393495), + Vector2 0.459462 0.141540 , + Vector2 (-0.414498) (-0.192829), + Vector2 (-0.183790) 0.082102 , + Vector2 (-0.079263) (-0.317383), + Vector2 0.102254 0.299133 , + Vector2 0.164216 (-0.054399) ] + +-- Initialize lighting and other values. +myInit :: IO () +myInit = do + materialAmbient Front $= Color4 1 1 1 1 + materialSpecular Front $= Color4 1 1 1 1 + materialShininess Front $= 50 + position (Light 0) $= Vertex4 0 0 10 1 + lightModelAmbient $= Color4 0.2 0.2 0.2 1 + + lighting $= Enabled + light (Light 0) $= Enabled + depthFunc $= Just Less + shadeModel $= Flat + + clearColor $= Color4 0 0 0 0 + clearAccum $= Color4 0 0 0 0 + +displayObjects :: IO () +displayObjects = do + -- resolve overloading, not needed in "real" programs + let translatef = translate :: Vector3 GLfloat -> IO () + rotatef = rotate :: GLfloat -> Vector3 GLfloat -> IO () + + preservingMatrix $ do + rotatef 30 (Vector3 1 0 0) + + preservingMatrix $ do + translatef (Vector3 (-0.80) 0.35 0) + rotatef 100 (Vector3 1 0 0) + materialDiffuse Front $= Color4 0.7 0.7 0 1 + renderObject Solid (Torus 0.275 0.85 16 16) + + preservingMatrix $ do + translatef (Vector3 (-0.75) (-0.50) 0) + rotatef 45 (Vector3 0 0 1) + rotatef 45 (Vector3 1 0 0) + materialDiffuse Front $= Color4 0 0.7 0.7 1 + renderObject Solid (Cube 1.5) + + preservingMatrix $ do + translatef (Vector3 0.75 0.60 0) + rotatef 30 (Vector3 1 0 0) + materialDiffuse Front $= Color4 0.7 0 0.7 1 + renderObject Solid (Sphere' 1 16 16) + + preservingMatrix $ do + translatef (Vector3 0.70 (-0.90) 0.25) + materialDiffuse Front $= Color4 0.7 0.4 0.4 1 + renderObject Solid Octahedron + +-- display draws 5 teapots into the accumulation buffer several times; each time +-- with a jittered perspective. The focal point is at z = 5.0, so the gold +-- teapot will stay in focus. The amount of jitter is adjusted by the magnitude +-- of the accPerspective jitter; in this example, 0.33. In this example, the +-- teapots are drawn 8 times. +display :: DisplayCallback +display = do + (_, Size w h) <- get viewport + + clear [ AccumBuffer ] + flip mapM_ j8 $ \(Vector2 x y) -> do + clear [ ColorBuffer, DepthBuffer ] + preservingMatrix $ do + -- Note that 4.5 is the distance in world space between left and right + -- and bottom and top. This formula converts fractional pixel movement + -- to world coordinates. + translate (Vector3 (x*4.5/fromIntegral w) (y*4.5/fromIntegral h) 0) + displayObjects + accum Accum 0.125 + + accum Return 1 + flush + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + viewport $= (Position 0 0, size) + matrixMode $= Projection + loadIdentity + let wf = fromIntegral w + hf = fromIntegral h + if w <= h + then ortho (-2.25) 2.25 (-2.25*hf/wf) (2.25*hf/wf) (-10) 10 + else ortho (-2.25*wf/hf) (2.25*wf/hf) (-2.25) 2.25 (-10) 10 + matrixMode $= Modelview 0 + loadIdentity + +keyboard :: KeyboardMouseCallback +keyboard (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard _ _ _ _ = return () + +-- Main Loop: Be certain to request an accumulation buffer. +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, RGBMode, WithAccumBuffer, WithDepthBuffer ] + initialWindowSize $= Size 250 250 + initialWindowPosition $= Position 100 100 + createWindow progName + myInit + reshapeCallback $= Just reshape + displayCallback $= display + keyboardMouseCallback $= Just keyboard + mainLoop addfile ./examples/RedBook/AccPersp.hs hunk ./examples/RedBook/AccPersp.hs 1 +{- + AccPersp.hs (adapted from accpersp.c which is (c) Silicon Graphics, Inc.) + Copyright (c) Sven Panne 2002-2006 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE + + Use the accumulation buffer to do full-scene antialiasing on a scene with + perspective projection, using the special routines accFrustum and + accPerspective. +-} + +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) +import Graphics.UI.GLUT + +-- j8 contains values in the range -.5 < x < .5, -.5 < y < .5, and have a +-- gaussian distribution around the origin. Use these to do model jittering for +-- scene anti-aliasing and view volume jittering for depth of field effects. Use +-- in conjunction with the accwindow routine. +j8 :: [Vector2 GLdouble] +j8 = [ + Vector2 (-0.334818) 0.435331 , + Vector2 0.286438 (-0.393495), + Vector2 0.459462 0.141540 , + Vector2 (-0.414498) (-0.192829), + Vector2 (-0.183790) 0.082102 , + Vector2 (-0.079263) (-0.317383), + Vector2 0.102254 0.299133 , + Vector2 0.164216 (-0.054399) ] + +-- The first 6 arguments are identical to the frustum call. pixD is anti-alias +-- jitter in pixels. Use (Vector2 0 0) for no anti-alias jitter. eyeD is +-- depth-of field jitter in pixels. Use (Vector2 0 0) for no depth of field +-- effects. focus is distance from eye to plane in focus. focus must be greater +-- than, but not equal to 0. Note that accFrustum calls translate. You will +-- probably want to insure that your ModelView matrix has been initialized to +-- identity before calling accFrustum. +accFrustum :: GLdouble -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> GLdouble + -> Vector2 GLdouble -> Vector2 GLdouble -> GLdouble -> IO () +accFrustum left right bottom top zNear zFar + (Vector2 pixDx pixDy) (Vector2 eyeDx eyeDy) focus = do + (_, Size w h) <- get viewport + + let xWSize = right - left; + yWSize = top - bottom; + + dx = -(pixDx * xWSize / fromIntegral w + eyeDx * zNear / focus) + dy = -(pixDy * yWSize / fromIntegral h + eyeDy * zNear / focus) + + matrixMode $= Projection + loadIdentity + frustum (left + dx) (right + dx) (bottom + dy) (top + dy) zNear zFar + matrixMode $= Modelview 0 + loadIdentity + translate (Vector3 (-eyeDx) (-eyeDy) 0) + +-- The first 4 arguments are identical to the perspective call. pixD is +-- anti-alias jitter in pixels. Use (Vector2 0 0) for no anti-alias jitter. eyeD +-- is depth-of field jitter in pixels. Use (Vector2 0 0) for no depth of field +-- effects. focus is distance from eye to plane in focus. focus must be greater +-- than, but not equal to 0. Note that accPerspective calls accFrustum. +accPerspective :: GLdouble -> GLdouble -> GLdouble -> GLdouble + -> Vector2 GLdouble -> Vector2 GLdouble -> GLdouble -> IO () +accPerspective fovY aspect zNear zFar pixD eyeD focus = do + let fov2 = ((fovY * pi) / 180) / 2 + + top = zNear / (cos fov2 / sin fov2) + bottom = -top + + right = top * aspect + left = -right + + accFrustum left right bottom top zNear zFar pixD eyeD focus + +-- Initialize lighting and other values. +myInit :: IO () +myInit = do + materialAmbient Front $= Color4 1 1 1 1 + materialSpecular Front $= Color4 1 1 1 1 + materialShininess Front $= 50 + position (Light 0) $= Vertex4 0 0 10 1 + lightModelAmbient $= Color4 0.2 0.2 0.2 1 + + lighting $= Enabled + light (Light 0) $= Enabled + depthFunc $= Just Less + shadeModel $= Flat + + clearColor $= Color4 0 0 0 0 + clearAccum $= Color4 0 0 0 0 + +displayObjects :: IO () +displayObjects = do + -- resolve overloading, not needed in "real" programs + let translatef = translate :: Vector3 GLfloat -> IO () + rotatef = rotate :: GLfloat -> Vector3 GLfloat -> IO () + + preservingMatrix $ do + translatef (Vector3 0 0 (-5)) + rotatef 30 (Vector3 1 0 0) + + preservingMatrix $ do + translatef (Vector3 (-0.80) 0.35 0) + rotatef 100 (Vector3 1 0 0) + materialDiffuse Front $= Color4 0.7 0.7 0 1 + renderObject Solid (Torus 0.275 0.85 16 16) + + preservingMatrix $ do + translatef (Vector3 (-0.75) (-0.50) 0) + rotatef 45 (Vector3 0 0 1) + rotatef 45 (Vector3 1 0 0) + materialDiffuse Front $= Color4 0 0.7 0.7 1 + renderObject Solid (Cube 1.5) + + preservingMatrix $ do + translatef (Vector3 0.75 0.60 0) + rotatef 30 (Vector3 1 0 0) + materialDiffuse Front $= Color4 0.7 0 0.7 1 + renderObject Solid (Sphere' 1 16 16) + + preservingMatrix $ do + translatef (Vector3 0.70 (-0.90) 0.25) + materialDiffuse Front $= Color4 0.7 0.4 0.4 1 + renderObject Solid Octahedron + +-- display draws 5 teapots into the accumulation buffer several times; each time +-- with a jittered perspective. The focal point is at z = 5.0, so the gold +-- teapot will stay in focus. The amount of jitter is adjusted by the magnitude +-- of the accPerspective jitter; in this example, 0.33. In this example, the +-- teapots are drawn 8 times. +display :: DisplayCallback +display = do + (_, Size w h) <- get viewport + + clear [ AccumBuffer ] + flip mapM_ j8 $ \(Vector2 x y) -> do + clear [ ColorBuffer, DepthBuffer ] + accPerspective 50 (fromIntegral w / fromIntegral h) 1 15 + (Vector2 x y) (Vector2 0 0) 1 + displayObjects + accum Accum 0.125 + + accum Return 1 + flush + +reshape :: ReshapeCallback +reshape size = do + viewport $= (Position 0 0, size) + +keyboard :: KeyboardMouseCallback +keyboard (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard _ _ _ _ = return () + +-- Main Loop: Be certain you request an accumulation buffer. +main :: IO () +main = do + (progName, _args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, RGBMode, WithAccumBuffer, WithDepthBuffer ] + initialWindowSize $= Size 250 250 + initialWindowPosition $= Position 100 100 + createWindow progName + myInit + reshapeCallback $= Just reshape + displayCallback $= display + keyboardMouseCallback $= Just keyboard + mainLoop hunk ./examples/RedBook/AccAnti.hs 87 - hunk ./examples/RedBook/AccAnti.hs 88 + hunk ./examples/RedBook/AccAnti.hs 97 - accum Accum 0.125 + accum Accum (recip (fromIntegral (length j8))) hunk ./examples/RedBook/AccPersp.hs 133 - hunk ./examples/RedBook/AccPersp.hs 134 + hunk ./examples/RedBook/AccPersp.hs 140 - accum Accum 0.125 + accum Accum (recip (fromIntegral (length j8))) hunk ./examples/RedBook/DOF.hs 156 - accum Accum 0.125 - + accum Accum (recip (fromIntegral (length j8))) hunk ./examples/RedBook/AccAnti.hs 11 +import Data.List ( genericLength ) hunk ./examples/RedBook/AccAnti.hs 98 - accum Accum (recip (fromIntegral (length j8))) + accum Accum (recip (genericLength j8)) hunk ./examples/RedBook/AccPersp.hs 12 +import Data.List ( genericLength ) hunk ./examples/RedBook/AccPersp.hs 141 - accum Accum (recip (fromIntegral (length j8))) + accum Accum (recip (genericLength j8)) hunk ./examples/RedBook/DOF.hs 14 +import Data.List ( genericLength ) hunk ./examples/RedBook/DOF.hs 157 - accum Accum (recip (fromIntegral (length j8))) + accum Accum (recip (genericLength j8)) + addfile ./config.guess addfile ./config.sub addfile ./install-sh hunk ./GLUT.cabal 15 - -- The first three files are not in this directory of the CVS - -- repository; copy them from ../.. hunk ./config.guess 1 +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. + +timestamp='2006-02-23' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA +# 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + + +# Originally written by Per Bothner . +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# The plan is that this can be called by configure scripts if you +# don't specify an explicit build system type. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; set_cc_for_build= ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep __ELF__ >/dev/null + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + exit ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit ;; + *:SolidBSD:*:*) + echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + exit ;; + macppc:MirBSD:*:*) + echo powerppc-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit ;; + arm:riscos:*:*|arm:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + i86pc:SunOS:5.*:*) + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && + dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`$dummy $dummyarg` && + { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos${UNAME_RELEASE} + exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit ;; + *:AIX:*:[45]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + eval $set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + grep __LP64__ >/dev/null + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 + exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:FreeBSD:*:*) + case ${UNAME_MACHINE} in + pc98) + echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + *) + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + esac + exit ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit ;; + i*:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit ;; + i*:MSYS_NT-*:*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 + exit ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit ;; + x86:Interix*:[345]*) + echo i586-pc-interix${UNAME_RELEASE} + exit ;; + EM64T:Interix*:[345]*) + echo x86_64-unknown-interix${UNAME_RELEASE} + exit ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + *:GNU:*:*) + # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu + exit ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit ;; + arm*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + cris:Linux:*:*) + echo cris-axis-linux-gnu + exit ;; + crisv32:Linux:*:*) + echo crisv32-axis-linux-gnu + exit ;; + frv:Linux:*:*) + echo frv-unknown-linux-gnu + exit ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + mips:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips + #undef mipsel + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mipsel + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips + #else + CPU= + #endif + #endif +EOF + eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' + /^CPU/{ + s: ::g + p + }'`" + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } + ;; + mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips64 + #undef mips64el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mips64el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips64 + #else + CPU= + #endif + #endif +EOF + eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' + /^CPU/{ + s: ::g + p + }'`" + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } + ;; + or32:Linux:*:*) + echo or32-unknown-linux-gnu + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-gnu ;; + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; + esac + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + vax:Linux:*:*) + echo ${UNAME_MACHINE}-dec-linux-gnu + exit ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu + exit ;; + i*86:Linux:*:*) + # The BFD linker knows what the default object file format is, so + # first see if it will tell us. cd to the root directory to prevent + # problems with other programs or directories called `ld' in the path. + # Set LC_ALL=C to ensure ld outputs messages in English. + ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ + | sed -ne '/supported targets:/!d + s/[ ][ ]*/ /g + s/.*supported targets: *// + s/ .*// + p'` + case "$ld_supported_targets" in + elf32-i386) + TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" + ;; + a.out-i386-linux) + echo "${UNAME_MACHINE}-pc-linux-gnuaout" + exit ;; + coff-i386) + echo "${UNAME_MACHINE}-pc-linux-gnucoff" + exit ;; + "") + # Either a pre-BFD a.out linker (linux-gnuoldld) or + # one that does not give us useful --help. + echo "${UNAME_MACHINE}-pc-linux-gnuoldld" + exit ;; + esac + # Determine whether the default compiler is a.out or elf + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + #ifdef __ELF__ + # ifdef __GLIBC__ + # if __GLIBC__ >= 2 + LIBC=gnu + # else + LIBC=gnulibc1 + # endif + # else + LIBC=gnulibc1 + # endif + #else + #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__sun) + LIBC=gnu + #else + LIBC=gnuaout + #endif + #endif + #ifdef __dietlibc__ + LIBC=dietlibc + #endif +EOF + eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' + /^LIBC/{ + s: ::g + p + }'`" + test x"${LIBC}" != x && { + echo "${UNAME_MACHINE}-pc-linux-${LIBC}" + exit + } + test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } + ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i386. + echo i386-pc-msdosdjgpp + exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo ${UNAME_MACHINE}-stratus-vos + exit ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + case $UNAME_PROCESSOR in + unknown) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + NSE-?:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; + NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "${UNAME_MACHINE}" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + exit ;; + i*86:rdos:*:*) + echo ${UNAME_MACHINE}-pc-rdos + exit ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +eval $set_cc_for_build +cat >$dummy.c < +# include +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix\n"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +# if !defined (ultrix) +# include +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + c34*) + echo c34-convex-bsd + exit ;; + c38*) + echo c38-convex-bsd + exit ;; + c4*) + echo c4-convex-bsd + exit ;; + esac +fi + +cat >&2 < in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: hunk ./config.sub 1 +#! /bin/sh +# Configuration validation subroutine script. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. + +timestamp='2006-02-23' + +# This file is (in principle) common to ALL GNU software. +# The presence of a machine in this file suggests that SOME GNU software +# can handle that machine. It does not imply ALL GNU software can. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA +# 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + + +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ + uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis | -knuth | -cray) + os= + basic_machine=$1 + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco6) + os=-sco5v6 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ + | bfin \ + | c4x | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | m32r | m32rle | m68000 | m68k | m88k | maxq | mb | microblaze | mcore \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64vr | mips64vrel \ + | mips64orion | mips64orionel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | mt \ + | msp430 \ + | nios | nios2 \ + | ns16k | ns32k \ + | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ + | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b \ + | strongarm \ + | tahoe | thumb | tic4x | tic80 | tron \ + | v850 | v850e \ + | we32k \ + | x86 | xscale | xscalee[bl] | xstormy16 | xtensa \ + | z8k) + basic_machine=$basic_machine-unknown + ;; + m32c) + basic_machine=$basic_machine-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12) + # Motorola 68HC11/12. + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + ms1) + basic_machine=mt-unknown + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ + | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ + | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ + | nios-* | nios2-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ + | romp-* | rs6000-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tron-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \ + | xstormy16-* | xtensa-* \ + | ymp-* \ + | z8k-*) + ;; + m32c-*) + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16c) + basic_machine=cr16c-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + ms1-*) + basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pc98) + basic_machine=i386-pc + ;; + pc98-*) + basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc) basic_machine=powerpc-unknown + ;; + ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rdos) + basic_machine=i386-pc + os=-rdos + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tic54x | c54x*) + basic_machine=tic54x-unknown + os=-coff + ;; + tic55x | c55x*) + basic_machine=tic55x-unknown + os=-coff + ;; + tic6x | c6x*) + basic_machine=tic6x-unknown + os=-coff + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + mmix) + basic_machine=mmix-knuth + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sparc | sparcv8 | sparcv9 | sparcv9b) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ + | -openbsd* | -solidbsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -tpf*) + os=-tpf + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -kaos*) + os=-kaos + ;; + -zvmoe) + os=-zvmoe + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + m68*-cisco) + os=-aout + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-haiku) + os=-haiku + ;; + *-ibm) + os=-aix + ;; + *-knuth) + os=-mmixware + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: hunk ./install-sh 1 +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2003-09-24.23 + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. It can only install one file at a time, a restriction +# shared with many OS's install programs. + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +transformbasename= +transform_arg= +instcmd="$mvprog" +chmodcmd="$chmodprog 0755" +chowncmd= +chgrpcmd= +stripcmd= +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src= +dst= +dir_arg= + +usage="Usage: $0 [OPTION]... SRCFILE DSTFILE + or: $0 -d DIR1 DIR2... + +In the first form, install SRCFILE to DSTFILE, removing SRCFILE by default. +In the second, create the directory path DIR. + +Options: +-b=TRANSFORMBASENAME +-c copy source (using $cpprog) instead of moving (using $mvprog). +-d create directories instead of installing files. +-g GROUP $chgrp installed files to GROUP. +-m MODE $chmod installed files to MODE. +-o USER $chown installed files to USER. +-s strip installed files (using $stripprog). +-t=TRANSFORM +--help display this help and exit. +--version display version info and exit. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG +" + +while test -n "$1"; do + case $1 in + -b=*) transformbasename=`echo $1 | sed 's/-b=//'` + shift + continue;; + + -c) instcmd=$cpprog + shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + --help) echo "$usage"; exit 0;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -s) stripcmd=$stripprog + shift + continue;; + + -t=*) transformarg=`echo $1 | sed 's/-t=//'` + shift + continue;; + + --version) echo "$0 $scriptversion"; exit 0;; + + *) if test -z "$src"; then + src=$1 + else + # this colon is to work around a 386BSD /bin/sh bug + : + dst=$1 + fi + shift + continue;; + esac +done + +if test -z "$src"; then + echo "$0: no input file specified." >&2 + exit 1 +fi + +# Protect names starting with `-'. +case $src in + -*) src=./$src ;; +esac + +if test -n "$dir_arg"; then + dst=$src + src= + + if test -d "$dst"; then + instcmd=: + chmodcmd= + else + instcmd=$mkdirprog + fi +else + # Waiting for this to be detected by the "$instcmd $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dst"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + + # Protect names starting with `-'. + case $dst in + -*) dst=./$dst ;; + esac + + # If destination is a directory, append the input filename; won't work + # if double slashes aren't ignored. + if test -d "$dst"; then + dst=$dst/`basename "$src"` + fi +fi + +# This sed command emulates the dirname command. +dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` + +# Make sure that the destination directory exists. + +# Skip lots of stat calls in the usual case. +if test ! -d "$dstdir"; then + defaultIFS=' + ' + IFS="${IFS-$defaultIFS}" + + oIFS=$IFS + # Some sh's can't handle IFS=/ for some reason. + IFS='%' + set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` + IFS=$oIFS + + pathcomp= + + while test $# -ne 0 ; do + pathcomp=$pathcomp$1 + shift + test -d "$pathcomp" || $mkdirprog "$pathcomp" + pathcomp=$pathcomp/ + done +fi + +if test -n "$dir_arg"; then + $doit $instcmd "$dst" \ + && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \ + && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \ + && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \ + && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; } + +else + # If we're going to rename the final executable, determine the name now. + if test -z "$transformarg"; then + dstfile=`basename "$dst"` + else + dstfile=`basename "$dst" $transformbasename \ + | sed $transformarg`$transformbasename + fi + + # don't allow the sed command to completely eliminate the filename. + test -z "$dstfile" && dstfile=`basename "$dst"` + + # Make a couple of temp file names in the proper directory. + dsttmp=$dstdir/_inst.$$_ + rmtmp=$dstdir/_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0 + trap '(exit $?); exit' 1 2 13 15 + + # Move or copy the file name to the temp name + $doit $instcmd "$src" "$dsttmp" && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $instcmd $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \ + && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \ + && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \ + && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } && + + # Now remove or move aside any old file at destination location. We + # try this two ways since rm can't unlink itself on some systems and + # the destination file might be busy for other reasons. In this case, + # the final cleanup might fail but the new file should still install + # successfully. + { + if test -f "$dstdir/$dstfile"; then + $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \ + || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \ + || { + echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 + (exit 1); exit + } + else + : + fi + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" +fi && + +# The final little trick to "correctly" pass the exit status to the exit trap. +{ + (exit 0); exit +} + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: addfile ./Setup.hs hunk ./Setup.hs 1 +module Main (main) where + +import Distribution.Simple (defaultMainWithHooks, defaultUserHooks) + +main :: IO () +main = defaultMainWithHooks defaultUserHooks hunk ./Makefile 22 + +EXCLUDED_SRCS += Setup.hs hunk ./Makefile 23 -EXCLUDED_SRCS += Setup.hs - hunk ./Makefile 70 +EXCLUDED_SRCS += Setup.hs + hunk ./GLUT.cabal 46 -includes: "HsGLUT.h" +install-includes: HsGLUT.h hunk ./examples/RedBook/SurfPoints.hs 24 -import Foreign.Ptr ( castPtr ) hunk ./examples/RedBook/SurfPoints.hs 71 - setDisplayMode nurbsObj Fill' - checkForError nurbsObj $ - withBeginCallback nurbsObj print $ - withVertexCallback nurbsObj print $ - withNormalCallback nurbsObj print $ - withEndCallback nurbsObj (putStrLn "end") $ + setDisplayMode' nurbsObj Fill' + checkForNURBSError nurbsObj $ + withNURBSBeginCallback nurbsObj print $ + withNURBSVertexCallback nurbsObj print $ + withNURBSNormalCallback nurbsObj print $ + withNURBSEndCallback nurbsObj (putStrLn "end") $ hunk ./examples/RedBook/SurfPoints.hs 80 - gluNurbsSurface nurbsObj 8 kBuf 8 kBuf (4 * 3) 3 (castPtr cBuf) 4 4 0xdb7 -- GL_MAP2_VERTEX_3 + nurbsSurface nurbsObj 8 kBuf 8 kBuf (4 * 3) 3 cBuf 4 4 hunk ./examples/RedBook/Surface.hs 19 -import Foreign.Ptr ( castPtr ) hunk ./examples/RedBook/Surface.hs 65 - setDisplayMode nurbsObj Fill' - checkForError nurbsObj $ + setDisplayMode' nurbsObj Fill' + checkForNURBSError nurbsObj $ hunk ./examples/RedBook/Surface.hs 70 - gluNurbsSurface nurbsObj 8 kBuf 8 kBuf (4 * 3) 3 (castPtr cBuf) 4 4 0xdb7 -- GL_MAP2_VERTEX_3 + nurbsSurface nurbsObj 8 kBuf 8 kBuf (4 * 3) 3 cBuf 4 4 hunk ./examples/RedBook/Trim.hs 15 -import Foreign.Ptr ( castPtr ) hunk ./examples/RedBook/Trim.hs 63 - setDisplayMode nurbsObj Fill' - checkForError nurbsObj $ + setDisplayMode' nurbsObj Fill' + checkForNURBSError nurbsObj $ hunk ./examples/RedBook/Trim.hs 68 - gluNurbsSurface nurbsObj 8 kBuf 8 kBuf (4 * 3) 3 (castPtr cBuf) 4 4 0xdb7 -- GL_MAP2_VERTEX_3 + nurbsSurface nurbsObj 8 kBuf 8 kBuf (4 * 3) 3 cBuf 4 4 hunk ./examples/RedBook/Trim.hs 71 - gluPwlCurve nurbsObj 5 (castPtr edgePtBuf) 2 100210 -- GLU_MAP1_TRIM_2 + pwlCurve nurbsObj 5 edgePtBuf 2 hunk ./examples/RedBook/Trim.hs 75 - gluNurbsCurve nurbsObj 8 curveKnotsBuf 2 (castPtr curvePtBuf) 4 100210 -- GLU_MAP1_TRIM_2 + trimmingCurve nurbsObj 8 curveKnotsBuf 2 curvePtBuf 4 hunk ./examples/RedBook/Trim.hs 77 - gluPwlCurve nurbsObj 3 (castPtr pwlPtBuf) 2 100210 -- GLU_MAP1_TRIM_2 + pwlCurve nurbsObj 3 pwlPtBuf 2 hunk ./examples/RedBook/PolyOff.hs 139 - version <- get glVersion - when (take 3 version == "1.0") $ do + version <- get (majorMinor glVersion) + when (version == (1,0)) $ do hunk ./examples/RedBook/SurfPoints.hs 21 -import Control.Monad ( when, unless ) +import Control.Monad ( when ) hunk ./examples/RedBook/SurfPoints.hs 117 - version <- get gluVersion - unless (take 3 version == "1.3") $ do + version <- get (majorMinor gluVersion) + when (version < (1,3)) $ do hunk ./examples/RedBook/TexBind.hs 98 - version <- get glVersion - when (take 3 version == "1.0") $ do + version <- get (majorMinor glVersion) + when (version == (1,0)) $ do hunk ./examples/RedBook/TexProx.hs 49 - version <- get glVersion - when (take 3 version == "1.0") $ do + version <- get (majorMinor glVersion) + when (version == (1,0)) $ do hunk ./examples/RedBook/TexSub.hs 110 - version <- get glVersion - when (take 3 version == "1.0") $ do + version <- get (majorMinor glVersion) + when (version == (1,0)) $ do hunk ./examples/RedBook/VArray.hs 130 - version <- get glVersion - when (take 3 version == "1.0") $ do + version <- get (majorMinor glVersion) + when (version == (1,0)) $ do adddir ./examples/OrangeBook adddir ./examples/OrangeBook/ogl2brick hunk ./examples/Makefile 9 -SUBDIRS = RedBook BOGLGP Misc +SUBDIRS = RedBook OrangeBook BOGLGP Misc addfile ./examples/OrangeBook/3Dlabs-License.txt hunk ./examples/OrangeBook/3Dlabs-License.txt 1 +Copyright (C) 2002-2005 3Dlabs Inc. Ltd. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + + Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + Neither the name of 3Dlabs Inc. Ltd. nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + + addfile ./examples/OrangeBook/Makefile hunk ./examples/OrangeBook/Makefile 1 +# ----------------------------------------------------------------------------- + +TOP = ../../.. +include $(TOP)/mk/boilerplate.mk + +# ----------------------------------------------------------------------------- + +ifeq "$(way)" "" +SUBDIRS = ogl2brick +endif + +# ----------------------------------------------------------------------------- + +include $(TOP)/mk/target.mk addfile ./examples/OrangeBook/ogl2brick/Brick.frag hunk ./examples/OrangeBook/ogl2brick/Brick.frag 1 - +// +// Fragment shader for procedural bricks +// +// Authors: Dave Baldwin, Steve Koren, Randi Rost +// based on a shader by Darwyn Peachey +// +// Copyright (c) 2002-2004 3Dlabs Inc. Ltd. +// +// See 3Dlabs-License.txt for license information +// + +uniform vec3 BrickColor, MortarColor; +uniform vec2 BrickSize; +uniform vec2 BrickPct; + +varying vec2 MCposition; +varying float LightIntensity; + +void main(void) +{ + vec3 color; + vec2 position, useBrick; + + position = MCposition / BrickSize; + + if (fract(position.y * 0.5) > 0.5) + position.x += 0.5; + + position = fract(position); + + useBrick = step(position, BrickPct); + + color = mix(MortarColor, BrickColor, useBrick.x * useBrick.y); + color *= LightIntensity; + gl_FragColor = vec4 (color, 1.0); +} addfile ./examples/OrangeBook/ogl2brick/Brick.hs hunk ./examples/OrangeBook/ogl2brick/Brick.hs 1 +{- + Brick.hs (adapted from ogl2brick.c which is (c) 3Dlabs Inc. Ltd.) + Copyright (c) Sven Panne 2006 + This file is part of HOpenGL and distributed under a BSD-style license + See the file libraries/GLUT/LICENSE +-} + +import Control.Monad +import Data.IORef +import System.Exit +import Graphics.UI.GLUT + +inertiaThreshold, inertiaFactor :: GLfloat +inertiaThreshold = 1 +inertiaFactor = 0.5 + +scaleFactor, scaleIncrement :: GLfloat +scaleFactor = 0.01 +scaleIncrement = 0.5 + +timerFrequencyMillis :: Timeout +timerFrequencyMillis = 20 + +clearColors :: [Color4 GLfloat] +clearColors = [ + Color4 0.0 0.0 0.0 1, + Color4 0.2 0.2 0.3 1, + Color4 0.7 0.7 0.7 1 ] + +models :: [IO ()] +models = [ + drawCube, + renderObject Solid (Teapot 0.6), + renderObject Solid (Sphere' 0.6 64 64), + renderObject Solid (Torus 0.2 0.6 64 64) ] + +initialDiff :: Vector3 GLfloat +initialDiff = Vector3 206 16 10 + +initialInertia :: Vector3 GLfloat +initialInertia = Vector3 (-0.5) 0 0 + +data State = State { + diff :: IORef (Vector3 GLfloat), + lastIncr :: IORef (Vector3 GLfloat), + inertia :: IORef (Vector3 GLfloat), + inertiaOld :: IORef (Vector3 GLfloat), + theScale :: IORef GLfloat, + lastPosition :: IORef Position, + shouldRotate :: IORef Bool, + colorCycle :: IORef [Color4 GLfloat], + modelCycle :: IORef [IO ()], + modifiers :: IORef Modifiers + } + +makeState :: IO State +makeState = do + di <- newIORef initialDiff + li <- newIORef 0 + ia <- newIORef initialInertia + io <- newIORef 0 + sc <- newIORef 1 + lp <- newIORef (Position (-1) (-1)) + sr <- newIORef True + cc <- newIORef (cycle clearColors) + mc <- newIORef (cycle models) + mo <- newIORef (Modifiers Up Up Up) + return $ State { + diff = di, + lastIncr = li, + inertia = ia, + inertiaOld = io, + theScale = sc, + lastPosition = lp, + shouldRotate = sr, + colorCycle = cc, + modelCycle = mc, + modifiers = mo + } + +instance Num a => Num (Vector3 a) where + (Vector3 x1 y1 z1) + (Vector3 x2 y2 z2) = + Vector3 (x1 + x2) (y1 + y2) (z1 + z2) + (Vector3 x1 y1 z1) - (Vector3 x2 y2 z2) = + Vector3 (x1 - x2) (y1 - y2) (z1 - z2) + (Vector3 x1 y1 z1) * (Vector3 x2 y2 z2) = + Vector3 (x1 * x2) (y1 * y2) (z1 * z2) + negate (Vector3 x y z) = + Vector3 (negate x) (negate y) (negate z) + abs (Vector3 x y z) = + Vector3 (abs x) (abs y) (abs z) + signum (Vector3 x y z) = + Vector3 (signum x) (signum y) (signum z) + fromInteger i = + Vector3 (fromInteger i) (fromInteger i) (fromInteger i) + +fromScalar :: Num a => a -> Vector3 a +fromScalar s = Vector3 s s s + +step :: (Num a, Ord a) => Vector3 a -> Vector3 a -> Vector3 a +step (Vector3 x1 y1 z1) (Vector3 x2 y2 z2) = + Vector3 (s x1 x2) (s y1 y2) (s z1 z2) + where s e x = if x < e then 0 else 1 + +dot :: Num a => Vector3 a -> Vector3 a -> a +dot (Vector3 x1 y1 z1) (Vector3 x2 y2 z2) = x1 * x2 + y1 * y2 + z1 * z2 + +nextClearColor :: State -> IO () +nextClearColor state = do + cc <- get (colorCycle state) + clearColor $= head cc + colorCycle state $~ tail + +drawFace :: Normal3 GLfloat -> Vertex3 GLfloat -> Vertex3 GLfloat + -> Vertex3 GLfloat -> Vertex3 GLfloat -> IO () +drawFace p q r s t = do + let texCoord2f = texCoord :: TexCoord2 GLfloat -> IO () + normal p + texCoord2f (TexCoord2 1 1) + vertex q + texCoord2f (TexCoord2 0 1) + vertex r + texCoord2f (TexCoord2 0 0) + vertex s + texCoord2f (TexCoord2 1 0) + vertex t + +drawCube :: IO () +drawCube = do + let size = 1 + sc = 0.2 + delta = 0.1 + + a = Vertex3 size size ( size * sc + delta) + b = Vertex3 size size (-size * sc + delta) + c = Vertex3 size (-size) (-size * sc) + d = Vertex3 size (-size) ( size * sc) + e = Vertex3 (-size) size ( size * sc + delta) + f = Vertex3 (-size) size (-size * sc + delta) + g = Vertex3 (-size) (-size) (-size * sc) + h = Vertex3 (-size) (-size) ( size * sc) + + i = Normal3 1 0 0 + k = Normal3 (-1) 0 0 + l = Normal3 0 0 (-1) + m = Normal3 0 0 1 + n = Normal3 0 1 0 + o = Normal3 0 (-1) 0 + + renderPrimitive Quads $ do + drawFace i d c b a + drawFace k g h e f + drawFace l c g f b + drawFace m h d a e + drawFace n e a b f + drawFace o g c d h + +display :: State -> DisplayCallback +display state = do + loadIdentity + translate (Vector3 0 0 (-5 :: GLfloat)) + + Vector3 xDiff yDiff zDiff <- get (diff state) + rotate yDiff (Vector3 1 0 0) + rotate xDiff (Vector3 0 1 0) + rotate zDiff (Vector3 0 0 1) + + sc <- get (theScale state) + scale sc sc sc + + clear [ ColorBuffer, DepthBuffer ] + (drawModel:_) <- get (modelCycle state) + drawModel + + flush + swapBuffers + +toggleRotation :: State -> IO () +toggleRotation state = do + rot <- get (shouldRotate state) + shouldRotate state $~ not + if rot + then do + ia <- get (inertia state) + inertiaOld state $= ia + else do + io <- get (inertiaOld state) + inertia state $= io + -- To prevent confusion, force some rotation + when (dot io io == 0) $ + inertia state $= initialInertia + +printHelp :: IO () +printHelp = mapM_ putStrLn [ + "", + "Keyboard commands:", + "", + "b - Toggle among background clear colors", + "q, - Quit", + "t - Toggle among models to render", + "? - Help", + " - reset zoom and rotation", + " or - stop rotation", + "<+>, <-> or - zoom model", + " or - rotate model", + ""] + +keyboard :: State -> KeyboardMouseCallback +keyboard state key keyState mods _ = do + modifiers state $= mods + postRedisplay Nothing + case (key, keyState) of + (Char 'b', Down) -> nextClearColor state + (Char 'q', Down) -> exitWith ExitSuccess + (Char '\27', Down) -> exitWith ExitSuccess + (Char 't', Down) -> modelCycle state $~ tail + (Char ' ', Down) -> toggleRotation state + (Char '+', Down) -> theScale state $~ (+ scaleIncrement) + (Char '-', Down) -> theScale state $~ (+ (- scaleIncrement)) + (Char _, Down) -> printHelp + (SpecialKey KeyHome, Down) -> do + diff state $= initialDiff + lastIncr state $= 0 + inertia state $= initialInertia + theScale state $= 1 + (SpecialKey KeyLeft, Down) -> diff state $~ (+ (- Vector3 1 0 0)) + (SpecialKey KeyRight, Down) -> diff state $~ (+ Vector3 1 0 0) + (SpecialKey KeyUp, Down) -> diff state $~ (+ (- Vector3 0 1 0)) + (SpecialKey KeyDown, Down) -> diff state $~ (+ Vector3 0 1 0) + (MouseButton LeftButton, Down) -> do + inertia state $= 0 + lastIncr state $= 0 + (MouseButton LeftButton, Up) -> do + lastPosition state $= Position (-1) (-1) + li <- get (lastIncr state) + ia <- get (inertia state) + let t = fromScalar inertiaThreshold + f = fromScalar inertiaFactor + l = (1 - (step (-t) li)) * ((li + t) * f - ia) + r = (step t li) * ((li - t) * f - ia) + inertia state $= l + ia + r + lastIncr state $= 0 + (_, _) -> return () + +motion :: State -> MotionCallback +motion state pos@(Position x y) = do + postRedisplay Nothing + Position xt yt <- get (lastPosition state) + lastPosition state $= pos + when (xt /= -1 || yt /= -1) $ do + let li@(Vector3 xl yl _) = Vector3 (fromIntegral (x - xt)) (fromIntegral (y - yt)) 0 + lastIncr state $= li + when (xt /= -1) $ do + mods <- get (modifiers state) + if ctrl mods == Down + then do diff state $~ (+ Vector3 0 0 xl) + theScale state $~ (+ (yl * scaleFactor)) + else diff state $~ (+ li) + +timer :: State -> TimerCallback +timer state = do + rot <- get (shouldRotate state) + when rot $ do + ia <- get (inertia state) + diff state $~ (+ ia) + postRedisplay Nothing + addTimerCallback timerFrequencyMillis (timer state) + +reshape :: ReshapeCallback +reshape size@(Size w h) = do + let vp = 0.8 + aspect = fromIntegral w / fromIntegral h + + viewport $= (Position 0 0, size) + + matrixMode $= Projection + loadIdentity + frustum (-vp) vp (-vp / aspect) (vp / aspect) 3 10 + + matrixMode $= Modelview 0 + loadIdentity + translate (Vector3 0 0 (-5 :: GLfloat)) + +readAndCompileShader :: Shader s => FilePath -> IO s +readAndCompileShader filePath = do + [shader] <- genObjectNames 1 + src <- readFile filePath + shaderSource shader $= [src] + compileShader shader +-- printOpenGLError(); // Check for OpenGL errors +-- glGetShaderiv(brickVS, GL_COMPILE_STATUS, &vertCompiled); + return shader + +installBrickShaders :: VertexShader -> FragmentShader -> IO () +installBrickShaders vs fs = do + [brickProg] <- genObjectNames 1 + attachedShaders brickProg $= ([vs], [fs]) + linkProgram brickProg + currentProgram $= Just brickProg + + let setUniform var val = do + loc <- get (uniformLocation brickProg var) + uniform loc val + + setUniform "BrickColor" (Color3 1.0 0.3 (0.2 :: GLfloat)) + setUniform "MortarColor" (Color3 0.85 0.86 (0.84 :: GLfloat)) + setUniform "BrickSize" (Vertex2 0.30 (0.15 :: GLfloat)) + setUniform "BrickPct" (Vertex2 0.90 (0.85 :: GLfloat)) + setUniform "LightPosition" (Vertex3 0 0 (4 :: GLfloat)) + +-- Make sure that GLSL is supported by the driver, either directly by the core +-- or via an extension. +glslSupported :: IO Bool +glslSupported = do + version <- get (majorMinor glVersion) + if version >= (2,0) + then return True + else do extensions <- get glExtensions + return ("GL_ARB_shading_language_100" `elem` extensions) + +main :: IO () +main = do + getArgsAndInitialize + initialDisplayMode $= [ RGBMode, WithDepthBuffer, DoubleBuffered ] + initialWindowSize $= Size 500 500 + createWindow "3Dlabs Brick Shader" + + -- Note: We don't use an idle callback, we redisplay more intelligently. + state <- makeState + displayCallback $= display state + keyboardMouseCallback $= Just (keyboard state) + reshapeCallback $= Just reshape + motionCallback $= Just (motion state) + addTimerCallback timerFrequencyMillis (timer state) + + glslSupp <- glslSupported + if glslSupp + then do + vs <- readAndCompileShader "Brick.vert" + fs <- readAndCompileShader "Brick.frag" + installBrickShaders vs fs + else do + putStrLn "No GLSL support found, shaders are not used" + materialDiffuse Front $= Color4 1 0.3 0.2 1 + materialSpecular Front $= Color4 0.3 0.3 0.3 1 + materialShininess Front $= 16 + position (Light 0) $= Vertex4 0 0 4 0 + lighting $= Enabled + light (Light 0) $= Enabled + + depthFunc $= Just Less + nextClearColor state + + -- display help + keyboard state (Char '?') Down (Modifiers Up Up Up) (Position 0 0) + + mainLoop addfile ./examples/OrangeBook/ogl2brick/Brick.vert hunk ./examples/OrangeBook/ogl2brick/Brick.vert 1 - +// +// Vertex shader for procedural bricks +// +// Authors: Dave Baldwin, Steve Koren, Randi Rost +// based on a shader by Darwyn Peachey +// +// Copyright (c) 2002-2004 3Dlabs Inc. Ltd. +// +// See 3Dlabs-License.txt for license information +// + +uniform vec3 LightPosition; + +const float SpecularContribution = 0.3; +const float DiffuseContribution = 1.0 - SpecularContribution; + +varying float LightIntensity; +varying vec2 MCposition; + +void main(void) +{ + vec3 ecPosition = vec3 (gl_ModelViewMatrix * gl_Vertex); + vec3 tnorm = normalize(gl_NormalMatrix * gl_Normal); + vec3 lightVec = normalize(LightPosition - ecPosition); + vec3 reflectVec = reflect(-lightVec, tnorm); + vec3 viewVec = normalize(-ecPosition); + float diffuse = max(dot(lightVec, tnorm), 0.0); + float spec = 0.0; + + if (diffuse > 0.0) + { + spec = max(dot(reflectVec, viewVec), 0.0); + spec = pow(spec, 16.0); + } + + LightIntensity = DiffuseContribution * diffuse + + SpecularContribution * spec; + + MCposition = gl_Vertex.xy; + gl_Position = ftransform(); +} addfile ./examples/OrangeBook/ogl2brick/Makefile hunk ./examples/OrangeBook/ogl2brick/Makefile 1 +# ----------------------------------------------------------------------------- + +TOP = ../../../.. +include $(TOP)/mk/boilerplate.mk + +# ----------------------------------------------------------------------------- + +EXAMPLES := $(wildcard *.hs) +BINS := $(addsuffix $(exeext),$(EXAMPLES:.hs=)) +CLEAN_FILES += $(BINS) + +HC = $(GHC_INPLACE) +MKDEPENDHS = $(GHC_INPLACE) +SRC_HC_OPTS += -Wall -O -package GLUT + +all:: $(BINS) + +$(BINS): %$(exeext): %.o + $(HC) -o $@ $(HC_OPTS) $(LD_OPTS) $< + +# ----------------------------------------------------------------------------- + +include $(TOP)/mk/target.mk hunk ./GLUT.cabal 2 -version: 2.0 +version: 2.1 hunk ./configure.ac 1 -AC_INIT([Haskell GLUT package], [2.0], [sven.panne@aedion.de], [GLUT]) +AC_INIT([Haskell GLUT package], [2.1], [sven.panne@aedion.de], [GLUT]) hunk ./GLUT.cabal 48 -build-depends: base, OpenGL +build-depends: base, OpenGL >= 2.2 hunk ./Graphics/UI/GLUT/Begin.hs 6 --- +-- hunk ./Graphics/UI/GLUT/Begin.hs 66 --- Consortium and ask for the code to be fixed. +-- Consortium and ask for the code to be fixed. hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 6 --- +-- hunk ./Graphics/UI/GLUT/Callbacks/Registration.hs 9 --- +-- hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 6 --- +-- hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 242 --- +-- hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 776 -setTabletCallback (Just cb) = do +setTabletCallback (Just cb) = do hunk ./Graphics/UI/GLUT/Callbacks.hs 6 --- +-- hunk ./Graphics/UI/GLUT/Colormap.hs 6 --- +-- hunk ./Graphics/UI/GLUT/Constants.hs 7 --- +-- hunk ./Graphics/UI/GLUT/Debugging.hs 6 --- +-- hunk ./Graphics/UI/GLUT/DeviceControl.hs 6 --- +-- hunk ./Graphics/UI/GLUT/Extensions.hs 7 --- +-- hunk ./Graphics/UI/GLUT/Fonts.hs 6 --- +-- hunk ./Graphics/UI/GLUT/GameMode.hs 6 --- +-- hunk ./Graphics/UI/GLUT/Initialization.hs 6 --- +-- hunk ./Graphics/UI/GLUT/Menu.hs 8 --- +-- hunk ./Graphics/UI/GLUT/Objects.hs 6 --- +-- hunk ./Graphics/UI/GLUT/Objects.hs 99 - -- at @(0, 0, +\/-1)@ and @(+\/-(sqrt 2)\/2, +\/-(sqrt 2)\/2, 0)@. + -- at @(0, 0, +\/-1)@ and @(+\/-(sqrt 2)\/2, +\/-(sqrt 2)\/2, 0)@. hunk ./Graphics/UI/GLUT/Objects.hs 123 - -- 0 sponge is the same as a 'Tetrahedron'. + -- 0 sponge is the same as a 'Tetrahedron'. hunk ./Graphics/UI/GLUT/Objects.hs 151 -renderObject Wireframe (Sphere' r s t) = wireSphere r s t +renderObject Wireframe (Sphere' r s t) = wireSphere r s t hunk ./Graphics/UI/GLUT/Objects.hs 157 -renderObject Wireframe (Torus i o s r) = wireTorus i o s r +renderObject Wireframe (Torus i o s r) = wireTorus i o s r hunk ./Graphics/UI/GLUT/Objects.hs 316 -foreign import CALLCONV unsafe "glutSolidTeapot" solidTeapot +foreign import CALLCONV unsafe "glutSolidTeapot" solidTeapot hunk ./Graphics/UI/GLUT/Overlay.hs 6 --- +-- hunk ./Graphics/UI/GLUT/Overlay.hs 68 --- +-- hunk ./Graphics/UI/GLUT/Overlay.hs 78 --- +-- hunk ./Graphics/UI/GLUT/QueryUtils.hs 7 --- +-- hunk ./Graphics/UI/GLUT/State.hs 6 --- +-- hunk ./Graphics/UI/GLUT/Types.hs 7 --- +-- hunk ./Graphics/UI/GLUT/Window.hs 6 --- +-- hunk ./Graphics/UI/GLUT/Window.hs 211 --- time. +-- time. hunk ./Graphics/UI/GLUT.hs 6 --- +-- hunk ./cbits/HsGLUT.c 6 - * + * hunk ./examples/Misc/ARBOcclude.hs 45 - lastTime state $= time + lastTime state $= time hunk ./examples/Misc/Gears.hs 36 - v <- newIORef (20, 30, 0) + v <- newIORef (20, 30, 0) hunk ./examples/Misc/Gears.hs 42 --- +-- hunk ./examples/Misc/Gears.hs 98 -gearBack r0 r1 _ w da teeth i angle = do +gearBack r0 r1 _ w da teeth i angle = do hunk ./examples/Misc/Gears.hs 148 - + hunk ./examples/Misc/Gears.hs 176 - swapBuffers + swapBuffers hunk ./examples/Misc/Gears.hs 232 -opts args = +opts args = hunk ./examples/OrangeBook/ogl2brick/Brick.frag 10 -// +// hunk ./examples/OrangeBook/ogl2brick/Brick.frag 23 - + hunk ./examples/OrangeBook/ogl2brick/Brick.frag 37 + hunk ./examples/OrangeBook/ogl2brick/Brick.vert 7 -// Copyright (c) 2002-2004 3Dlabs Inc. Ltd. +// Copyright (c) 2002-2004 3Dlabs Inc. Ltd. hunk ./examples/OrangeBook/ogl2brick/Brick.vert 42 + hunk ./examples/RedBook/AAIndex.hs 32 -myInit :: IO () +myInit :: IO () hunk ./examples/RedBook/AAIndex.hs 91 --- Open window with initial window size, title bar, +-- Open window with initial window size, title bar, hunk ./examples/RedBook/AARGB.hs 27 -myInit :: IO () +myInit :: IO () hunk ./examples/RedBook/AARGB.hs 32 - r <- get smoothLineWidthRange + r <- get smoothLineWidthRange hunk ./examples/RedBook/AARGB.hs 91 --- Open window with initial window size, title bar, +-- Open window with initial window size, title bar, hunk ./examples/RedBook/BlendEqn.hs 11 - + hunk ./examples/RedBook/Checker.hs 59 - + hunk ./examples/RedBook/ColorMatrix.hs 8 - + hunk ./examples/RedBook/Combiner.hs 132 - -- interpolate combine with constant color; 1 texture unit + -- interpolate combine with constant color; 1 texture unit hunk ./examples/RedBook/DList.hs 7 - This program demonstrates how to make and execute a - display list. Note that attributes, such as current + This program demonstrates how to make and execute a + display list. Note that attributes, such as current hunk ./examples/RedBook/DList.hs 73 --- Open window with initial window size, title bar, +-- Open window with initial window size, title bar, hunk ./examples/RedBook/DOF.hs 82 - + hunk ./examples/RedBook/DrawF.hs 49 --- Open window with initial window size, title bar, +-- Open window with initial window size, title bar, hunk ./examples/RedBook/Font.hs 81 --- Everything above this line could be in a library --- that defines a font. To make it work, you've got --- to call makeRasterFont before you start making +-- Everything above this line could be in a library +-- that defines a font. To make it work, you've got +-- to call makeRasterFont before you start making hunk ./examples/RedBook/Font.hs 114 --- Open window with initial window size, title bar, +-- Open window with initial window size, title bar, hunk ./examples/RedBook/Hello.hs 32 -myInit :: IO () +myInit :: IO () hunk ./examples/RedBook/MVArray.hs 48 - makeMultiDrawInfo [ [ 0, 1, 2, 3, 4, 5, 6 ], + makeMultiDrawInfo [ [ 0, 1, 2, 3, 4, 5, 6 ], hunk ./examples/RedBook/PolyOff.hs 67 --- create display list with sphere +-- create display list with sphere hunk ./examples/RedBook/ShadowMap.hs 131 - + hunk ./examples/RedBook/TessWind.hs 177 -nextWindingRule r = case r of +nextWindingRule r = case r of hunk ./examples/RedBook/TexSub.hs 61 - + hunk ./examples/RedBook/Wrap.hs 63 - + hunk ./include/HsGLUT.h.in 6 - * + * hunk ./include/HsGLUTExt.h 6 - * + * hunk ./examples/OrangeBook/ogl2brick/Brick.hs 108 -nextClearColor :: State -> IO () -nextClearColor state = do - cc <- get (colorCycle state) - clearColor $= head cc - colorCycle state $~ tail - hunk ./examples/OrangeBook/ogl2brick/Brick.hs 172 +nextClearColor :: State -> IO () +nextClearColor state = do + cc <- get (colorCycle state) + clearColor $= head cc + colorCycle state $~ tail + hunk ./examples/OrangeBook/ogl2brick/Brick.hs 208 +resetState :: State -> IO () +resetState state = do + diff state $= initialDiff + lastIncr state $= 0 + inertia state $= initialInertia + theScale state $= 1 + +calcInertia :: State -> IO () +calcInertia state = do + lastPosition state $= Position (-1) (-1) + li <- get (lastIncr state) + ia <- get (inertia state) + let t = fromScalar inertiaThreshold + f = fromScalar inertiaFactor + l = (1 - (step (-t) li)) * ((li + t) * f - ia) + r = (step t li) * ((li - t) * f - ia) + inertia state $= l + ia + r + lastIncr state $= 0 + hunk ./examples/OrangeBook/ogl2brick/Brick.hs 240 - (SpecialKey KeyHome, Down) -> do - diff state $= initialDiff - lastIncr state $= 0 - inertia state $= initialInertia - theScale state $= 1 + (SpecialKey KeyHome, Down) -> resetState state hunk ./examples/OrangeBook/ogl2brick/Brick.hs 248 - (MouseButton LeftButton, Up) -> do - lastPosition state $= Position (-1) (-1) - li <- get (lastIncr state) - ia <- get (inertia state) - let t = fromScalar inertiaThreshold - f = fromScalar inertiaFactor - l = (1 - (step (-t) li)) * ((li + t) * f - ia) - r = (step t li) * ((li - t) * f - ia) - inertia state $= l + ia + r - lastIncr state $= 0 + (MouseButton LeftButton, Up) -> calcInertia state hunk ./examples/OrangeBook/ogl2brick/Brick.hs 290 +-- Make sure that GLSL is supported by the driver, either directly by the core +-- or via an extension. +checkGLSLSupport :: IO () +checkGLSLSupport = do + version <- get (majorMinor glVersion) + unless (version >= (2,0)) $ do + extensions <- get glExtensions + unless ("GL_ARB_shading_language_100" `elem` extensions) $ + ioError (userError "No GLSL support found.") + hunk ./examples/OrangeBook/ogl2brick/Brick.hs 302 - [shader] <- genObjectNames 1 hunk ./examples/OrangeBook/ogl2brick/Brick.hs 303 + [shader] <- genObjectNames 1 hunk ./examples/OrangeBook/ogl2brick/Brick.hs 306 --- printOpenGLError(); // Check for OpenGL errors --- glGetShaderiv(brickVS, GL_COMPILE_STATUS, &vertCompiled); + reportErrors + ok <- get (compileStatus shader) + unless ok $ do + deleteObjectNames [shader] + ioError (userError "shader compilation failed") hunk ./examples/OrangeBook/ogl2brick/Brick.hs 313 -installBrickShaders :: VertexShader -> FragmentShader -> IO () +installBrickShaders :: [VertexShader] -> [FragmentShader] -> IO () hunk ./examples/OrangeBook/ogl2brick/Brick.hs 316 - attachedShaders brickProg $= ([vs], [fs]) + attachedShaders brickProg $= (vs, fs) hunk ./examples/OrangeBook/ogl2brick/Brick.hs 318 + reportErrors + ok <- get (linkStatus brickProg) + unless ok $ do + deleteObjectNames [brickProg] + ioError (userError "linking failed") + hunk ./examples/OrangeBook/ogl2brick/Brick.hs 327 - loc <- get (uniformLocation brickProg var) - uniform loc val + loc <- get (uniformLocation brickProg var) + reportErrors + uniform loc val hunk ./examples/OrangeBook/ogl2brick/Brick.hs 337 --- Make sure that GLSL is supported by the driver, either directly by the core --- or via an extension. -glslSupported :: IO Bool -glslSupported = do - version <- get (majorMinor glVersion) - if version >= (2,0) - then return True - else do extensions <- get glExtensions - return ("GL_ARB_shading_language_100" `elem` extensions) - hunk ./examples/OrangeBook/ogl2brick/Brick.hs 352 - glslSupp <- glslSupported - if glslSupp - then do + catch + (do checkGLSLSupport hunk ./examples/OrangeBook/ogl2brick/Brick.hs 356 - installBrickShaders vs fs - else do - putStrLn "No GLSL support found, shaders are not used" + installBrickShaders [vs] [fs]) + (\exception -> do + print exception + putStrLn "Using fixed function pipeline." hunk ./examples/OrangeBook/ogl2brick/Brick.hs 365 - light (Light 0) $= Enabled + light (Light 0) $= Enabled) hunk ./examples/OrangeBook/ogl2brick/Brick.hs 308 + infoLog <- get (shaderInfoLog shader) + mapM_ putStrLn ["Shader info log for '" ++ filePath ++ "':", infoLog, ""] hunk ./examples/OrangeBook/ogl2brick/Brick.hs 322 + infoLog <- get (programInfoLog brickProg) + mapM_ putStrLn ["Program info log:", infoLog, ""] hunk ./examples/OrangeBook/ogl2brick/Brick.hs 331 - loc <- get (uniformLocation brickProg var) + location <- get (uniformLocation brickProg var) hunk ./examples/OrangeBook/ogl2brick/Brick.hs 333 - uniform loc val + uniform location $= val addfile ./README hunk ./README 1 +To build this package using Cabal directly from darcs, you must run +"autoreconf" before the usual Cabal build steps (configure/build/install). +autoreconf is included in the GNU autoconf tools. There is no need to run +the "configure" script: the "setup configure" step will do this for you. hunk ./Graphics/UI/GLUT/Extensions.hs 45 -foreign import CALLCONV unsafe "hs_GLUT_getProcAddress" hs_GLUT_getProcAddress +foreign import ccall unsafe "hs_GLUT_getProcAddress" hs_GLUT_getProcAddress hunk ./Setup.hs 1 + hunk ./Setup.hs 4 -import Distribution.Simple (defaultMainWithHooks, defaultUserHooks) +import Data.List +import Distribution.Simple +import Distribution.PackageDescription +import Distribution.PreProcess +import Distribution.Setup +import Distribution.Simple.LocalBuildInfo +import System.Environment hunk ./Setup.hs 13 -main = defaultMainWithHooks defaultUserHooks +main = do args <- getArgs + let (ghcArgs, args') = extractGhcArgs args + (_, args'') = extractConfigureArgs args' + hooks = defaultUserHooks { + buildHook = add_ghc_options ghcArgs + $ buildHook defaultUserHooks } + withArgs args'' $ defaultMainWithHooks hooks + +extractGhcArgs :: [String] -> ([String], [String]) +extractGhcArgs = extractPrefixArgs "--ghc-option=" + +extractConfigureArgs :: [String] -> ([String], [String]) +extractConfigureArgs = extractPrefixArgs "--configure-option=" + +extractPrefixArgs :: String -> [String] -> ([String], [String]) +extractPrefixArgs prefix args + = let f [] = ([], []) + f (x:xs) = case f xs of + (wantedArgs, otherArgs) -> + case removePrefix prefix x of + Just wantedArg -> + (wantedArg:wantedArgs, otherArgs) + Nothing -> + (wantedArgs, x:otherArgs) + in f args + +removePrefix :: String -> String -> Maybe String +removePrefix "" ys = Just ys +removePrefix (x:xs) (y:ys) + | x == y = removePrefix xs ys + | otherwise = Nothing + +type Hook a = PackageDescription -> LocalBuildInfo -> Maybe UserHooks -> a + -> IO () + +add_ghc_options :: [String] -> Hook a -> Hook a +add_ghc_options args f pd lbi muhs x + = do let lib' = case library pd of + Just lib -> + let bi = libBuildInfo lib + opts = options bi ++ [(GHC, args)] + bi' = bi { options = opts } + in lib { libBuildInfo = bi' } + Nothing -> error "Expected a library" + pd' = pd { library = Just lib' } + f pd' lbi muhs x + hunk ./Setup.hs 7 -import Distribution.PreProcess hunk ./Setup.hs 27 -extractPrefixArgs prefix args +extractPrefixArgs the_prefix args hunk ./Setup.hs 31 - case removePrefix prefix x of + case removePrefix the_prefix x of hunk ./Setup.hs 40 +removePrefix _ "" = Nothing hunk ./Setup.hs 45 -type Hook a = PackageDescription -> LocalBuildInfo -> Maybe UserHooks -> a - -> IO () +type Hook a = PackageDescription -> LocalBuildInfo -> UserHooks -> a -> IO () hunk ./Setup.hs 48 -add_ghc_options args f pd lbi muhs x +add_ghc_options args f pd lbi uhs x hunk ./Setup.hs 57 - f pd' lbi muhs x + f pd' lbi uhs x hunk ./GLUT.cabal 2 -version: 2.1 +version: 2.1.1 hunk ./configure.ac 1 -AC_INIT([Haskell GLUT package], [2.1], [sven.panne@aedion.de], [GLUT]) +AC_INIT([Haskell GLUT package], [2.1.1], [sven.panne@aedion.de], [GLUT]) hunk ./configure.ac 24 - AC_MSG_WARN([no GLUT library found, so this package will not be built]) -else + AC_MSG_FAILURE([no GLUT library found, so this package cannot be built]) +fi hunk ./configure.ac 35 - AC_MSG_WARN([no GLUT header found, so this package will not be built]) -else + AC_MSG_FAILURE([no GLUT header found, so this package cannot be built]) +fi hunk ./configure.ac 59 -fi -fi hunk ./GLUT.cabal 46 +includes: HsGLUT.h hunk ./Makefile 1 -# ----------------------------------------------------------------------------- - -TOP = .. -include $(TOP)/mk/boilerplate.mk --include config.mk - -ifneq "$(findstring clean, $(MAKECMDGOALS))" "" -# if we're cleaning, then config.mk might have been cleaned already -GLUT_BUILD_PACKAGE=yes -PACKAGE=GLUT -endif - -ifneq "$(GLUT_BUILD_PACKAGE)" "no" - -# ----------------------------------------------------------------------------- - -SUBDIRS = cbits include - -ifeq "$(IncludeExampleDirsInBuild)" "YES" -SUBDIRS += examples -endif - -ALL_DIRS = \ - Graphics/UI \ - Graphics/UI/GLUT \ - Graphics/UI/GLUT/Callbacks - -PACKAGE_DEPS = base OpenGL - -SRC_HC_OPTS += -Wall -fffi -Iinclude '-\#include "HsGLUT.h"' -cpp - -# WinDoze DLL hell -ifeq "$(TARGETPLATFORM)" "i386-unknown-mingw32" -SRC_HC_OPTS += -DCALLCONV=stdcall -else -SRC_HC_OPTS += -DCALLCONV=ccall -endif - -PACKAGE_CPP_OPTS += -DMAINTAINER=$(MAINTAINER) - -SRC_HADDOCK_OPTS += -t "HOpenGL Libraries (GLUT package)" - -# ----------------------------------------------------------------------------- - -package.conf.inplace \ -package.conf.installed : include/HsGLUTConfig.h - -Graphics/UI/GLUT/Begin.$(way_)o \ -Graphics/UI/GLUT/Callbacks/Window.$(way_)o \ -Graphics/UI/GLUT/Fonts.$(way_)o \ -Graphics/UI/GLUT/Objects.$(way_)o \ -Graphics/UI/GLUT/QueryUtils.$(way_)o : include/HsGLUTExt.h - -# ----------------------------------------------------------------------------- - -STUBOBJS += \ - Graphics/UI/GLUT/Menu_stub.$(way_)o \ - Graphics/UI/GLUT/Callbacks/Global_stub.$(way_)o \ - Graphics/UI/GLUT/Callbacks/Registration_stub.$(way_)o \ - Graphics/UI/GLUT/Callbacks/Window_stub.$(way_)o - -CLEAN_FILES += $(STUBOBJS) \ - Graphics/UI/GLUT/Menu_stub.[ch] \ - Graphics/UI/GLUT/Callbacks/Global_stub.[ch] \ - Graphics/UI/GLUT/Callbacks/Registration_stub.[ch] \ - Graphics/UI/GLUT/Callbacks/Window_stub.[ch] - -endif - -EXCLUDED_SRCS += Setup.hs - -# ----------------------------------------------------------------------------- - -DIST_CLEAN_FILES += GLUT.buildinfo config.cache config.status config.mk - -extraclean:: - $(RM) -rf autom4te.cache - -# ----------------------------------------------------------------------------- - -include $(TOP)/mk/target.mk rmfile ./Makefile hunk ./package.conf.in 1 -#include "HsGLUTConfig.h" - -name: PACKAGE -version: VERSION -license: BSD3 -maintainer: MAINTAINER -exposed: True - -exposed-modules: - Graphics.UI.GLUT, - Graphics.UI.GLUT.Begin, - Graphics.UI.GLUT.Callbacks, - Graphics.UI.GLUT.Callbacks.Global, - Graphics.UI.GLUT.Callbacks.Window, - Graphics.UI.GLUT.Colormap, - Graphics.UI.GLUT.Debugging, - Graphics.UI.GLUT.DeviceControl, - Graphics.UI.GLUT.Fonts, - Graphics.UI.GLUT.GameMode, - Graphics.UI.GLUT.Initialization, - Graphics.UI.GLUT.Menu, - Graphics.UI.GLUT.Objects, - Graphics.UI.GLUT.Overlay, - Graphics.UI.GLUT.State, - Graphics.UI.GLUT.Window - -hidden-modules: - Graphics.UI.GLUT.Callbacks.Registration, - Graphics.UI.GLUT.Constants, - Graphics.UI.GLUT.Extensions, - Graphics.UI.GLUT.QueryUtils, - Graphics.UI.GLUT.Types - -import-dirs: IMPORT_DIR - -library-dirs: LIB_DIR -#ifndef INSTALLING - , LIB_DIR"/cbits" -#endif - -hs-libraries: "HSGLUT" -extra-libraries: GLUT_EXTRA_LIBS -include-dirs: INCLUDE_DIR -includes: "HsGLUT.h" -depends: base, OpenGL -hugs-options: -cc-options: GLUT_CFLAGS -ld-options: GLUT_LIBS -framework-dirs: -frameworks: GLUT_FRAMEWORKS - -haddock-interfaces: HADDOCK_IFACE -haddock-html: HTML_DIR rmfile ./package.conf.in hunk ./Setup.hs 1 - hunk ./Setup.hs 3 -import Data.List hunk ./Setup.hs 4 -import Distribution.PackageDescription -import Distribution.Setup -import Distribution.Simple.LocalBuildInfo -import System.Environment hunk ./Setup.hs 6 -main = do args <- getArgs - let (ghcArgs, args') = extractGhcArgs args - (_, args'') = extractConfigureArgs args' - hooks = defaultUserHooks { - buildHook = add_ghc_options ghcArgs - $ buildHook defaultUserHooks } - withArgs args'' $ defaultMainWithHooks hooks - -extractGhcArgs :: [String] -> ([String], [String]) -extractGhcArgs = extractPrefixArgs "--ghc-option=" - -extractConfigureArgs :: [String] -> ([String], [String]) -extractConfigureArgs = extractPrefixArgs "--configure-option=" - -extractPrefixArgs :: String -> [String] -> ([String], [String]) -extractPrefixArgs the_prefix args - = let f [] = ([], []) - f (x:xs) = case f xs of - (wantedArgs, otherArgs) -> - case removePrefix the_prefix x of - Just wantedArg -> - (wantedArg:wantedArgs, otherArgs) - Nothing -> - (wantedArgs, x:otherArgs) - in f args - -removePrefix :: String -> String -> Maybe String -removePrefix "" ys = Just ys -removePrefix _ "" = Nothing -removePrefix (x:xs) (y:ys) - | x == y = removePrefix xs ys - | otherwise = Nothing - -type Hook a = PackageDescription -> LocalBuildInfo -> UserHooks -> a -> IO () - -add_ghc_options :: [String] -> Hook a -> Hook a -add_ghc_options args f pd lbi uhs x - = do let lib' = case library pd of - Just lib -> - let bi = libBuildInfo lib - opts = options bi ++ [(GHC, args)] - bi' = bi { options = opts } - in lib { libBuildInfo = bi' } - Nothing -> error "Expected a library" - pd' = pd { library = Just lib' } - f pd' lbi uhs x - +main = defaultMainWithHooks defaultUserHooks hunk ./GLUT.cabal 49 -build-depends: base, OpenGL >= 2.2 +build-depends: base, containers, OpenGL >= 2.2 hunk ./GLUT.cabal 49 -build-depends: base, containers, OpenGL >= 2.2 +build-depends: base, array, containers, OpenGL >= 2.2 hunk ./examples/BOGLGP/Chapter01/Makefile 3 -TOP = ../../../.. +TOP = ../../../../.. hunk ./examples/BOGLGP/Chapter02/Makefile 3 -TOP = ../../../.. +TOP = ../../../../.. hunk ./examples/BOGLGP/Chapter03/Makefile 3 -TOP = ../../../.. +TOP = ../../../../.. hunk ./examples/BOGLGP/Makefile 3 -TOP = ../../.. +TOP = ../../../.. hunk ./examples/Makefile 3 -TOP = ../.. +TOP = ../../.. hunk ./examples/Misc/Makefile 3 -TOP = ../../.. +TOP = ../../../.. hunk ./examples/OrangeBook/Makefile 3 -TOP = ../../.. +TOP = ../../../.. hunk ./examples/OrangeBook/ogl2brick/Makefile 3 -TOP = ../../../.. +TOP = ../../../../.. hunk ./examples/RedBook/Makefile 3 -TOP = ../../.. +TOP = ../../../.. hunk ./GLUT.cabal 14 +build-type: Configure +cabal-version: >=1.2 hunk ./GLUT.cabal 24 -exposed-modules: - Graphics.UI.GLUT, - Graphics.UI.GLUT.Begin, - Graphics.UI.GLUT.Callbacks, - Graphics.UI.GLUT.Callbacks.Global, - Graphics.UI.GLUT.Callbacks.Window, - Graphics.UI.GLUT.Colormap, - Graphics.UI.GLUT.Debugging, - Graphics.UI.GLUT.DeviceControl, - Graphics.UI.GLUT.Fonts, - Graphics.UI.GLUT.GameMode, - Graphics.UI.GLUT.Initialization, - Graphics.UI.GLUT.Menu, - Graphics.UI.GLUT.Objects, - Graphics.UI.GLUT.Overlay, - Graphics.UI.GLUT.State, - Graphics.UI.GLUT.Window -other-modules: - Graphics.UI.GLUT.Callbacks.Registration, - Graphics.UI.GLUT.Constants, - Graphics.UI.GLUT.Extensions, - Graphics.UI.GLUT.QueryUtils, - Graphics.UI.GLUT.Types -include-dirs: include -includes: HsGLUT.h -install-includes: HsGLUT.h -c-sources: cbits/HsGLUT.c -build-depends: base, array, containers, OpenGL >= 2.2 -extensions: CPP, ForeignFunctionInterface + +flag split-base + +library + exposed-modules: + Graphics.UI.GLUT, + Graphics.UI.GLUT.Begin, + Graphics.UI.GLUT.Callbacks, + Graphics.UI.GLUT.Callbacks.Global, + Graphics.UI.GLUT.Callbacks.Window, + Graphics.UI.GLUT.Colormap, + Graphics.UI.GLUT.Debugging, + Graphics.UI.GLUT.DeviceControl, + Graphics.UI.GLUT.Fonts, + Graphics.UI.GLUT.GameMode, + Graphics.UI.GLUT.Initialization, + Graphics.UI.GLUT.Menu, + Graphics.UI.GLUT.Objects, + Graphics.UI.GLUT.Overlay, + Graphics.UI.GLUT.State, + Graphics.UI.GLUT.Window + other-modules: + Graphics.UI.GLUT.Callbacks.Registration, + Graphics.UI.GLUT.Constants, + Graphics.UI.GLUT.Extensions, + Graphics.UI.GLUT.QueryUtils, + Graphics.UI.GLUT.Types + include-dirs: include + includes: HsGLUT.h + install-includes: HsGLUT.h + c-sources: cbits/HsGLUT.c + if flag(split-base) + build-depends: base >= 3, array, containers + else + build-depends: base < 3 + build-depends: OpenGL >= 2.2 + extensions: CPP, ForeignFunctionInterface hunk ./GLUT.cabal 2 -version: 2.1.1 +version: 2.1.1.1 hunk ./configure.ac 10 + +# Necessary for Cabal, which passes with --with-cc flag on Windows: +AC_ARG_WITH([cc], + [C compiler], + [CC=$withval]) +AC_PROG_CC() hunk ./GLUT.cabal 2 -version: 2.1.1.1 +version: 2.1.1.2 hunk ./config.mk.in 1 -GLUT_BUILD_PACKAGE=@GLUT_BUILD_PACKAGE@ -ifneq "$(GLUT_BUILD_PACKAGE)" "no" -GLUT_LIBS=@GLUT_LIBS@ -GLUT_CFLAGS=@GLUT_CFLAGS@ -GLUT_EXTRA_LIBS=@GLUT_EXTRA_LIBS@ -GLUT_FRAMEWORKS=@GLUT_FRAMEWORKS@ -PACKAGE=@PACKAGE_TARNAME@ -VERSION=@PACKAGE_VERSION@ -MAINTAINER=@PACKAGE_BUGREPORT@ -endif rmfile ./config.mk.in hunk ./GLUT.cabal 18 - configure.ac configure config.mk.in GLUT.buildinfo.in + configure.ac configure GLUT.buildinfo.in hunk ./GLUT.cabal 23 - config.mk GLUT.buildinfo include/HsGLUTConfig.h include/HsGLUT.h + GLUT.buildinfo include/HsGLUTConfig.h include/HsGLUT.h hunk ./configure.ac 19 -AC_SUBST([GLUT_BUILD_PACKAGE]) hunk ./configure.ac 78 -AC_CONFIG_FILES([config.mk GLUT.buildinfo]) +AC_CONFIG_FILES([GLUT.buildinfo]) hunk ./Setup.hs 6 -main = defaultMainWithHooks defaultUserHooks +main = defaultMainWithHooks autoconfUserHooks hunk ./aclocal.m4 337 + +# FP_ARG_COMPILER +# ------------- +AC_DEFUN([FP_ARG_COMPILER], +[AC_ARG_WITH([compiler], + [AC_HELP_STRING([--with-compiler@<:@=HC@:>@], + [use the given Haskell compiler (default=ghc)])], + [with_compiler=$withval], + [with_compiler=ghc]) +])# FP_ARG_COMPILER + hunk ./configure.ac 17 +# we do not really care about this here, but this avoids a warning about an +# unknown option +FP_ARG_COMPILER + hunk ./GLUT.cabal 2 -version: 2.1.1.2 +version: 2.2 hunk ./configure.ac 1 -AC_INIT([Haskell GLUT package], [2.1.1], [sven.panne@aedion.de], [GLUT]) +AC_INIT([Haskell GLUT package], [2.2], [sven.panne@aedion.de], [GLUT]) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 64 - glut_KEY_INSERT, + glut_KEY_INSERT, glut_KEY_NUM_LOCK, glut_KEY_BEGIN, glut_KEY_DELETE, hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 329 + | KeyNumLock + | KeyBegin + | KeyDelete hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 357 + | x == glut_KEY_NUM_LOCK = KeyNumLock + | x == glut_KEY_BEGIN = KeyBegin + | x == glut_KEY_DELETE = KeyDelete hunk ./Graphics/UI/GLUT/Constants.hs 80 - glut_KEY_PAGE_DOWN, glut_KEY_HOME, glut_KEY_END, glut_KEY_INSERT :: CInt + glut_KEY_PAGE_DOWN, glut_KEY_HOME, glut_KEY_END, glut_KEY_INSERT, + glut_KEY_NUM_LOCK, glut_KEY_BEGIN, glut_KEY_DELETE :: CInt hunk ./Graphics/UI/GLUT/Constants.hs 91 +glut_KEY_NUM_LOCK = 109 +glut_KEY_BEGIN = 110 +glut_KEY_DELETE = 111 hunk ./Graphics/UI/GLUT/Constants.hs 25 - glut_LUMINANCE, glut_AUX1, glut_AUX2, glut_AUX3, glut_AUX4 :: CUInt + glut_LUMINANCE, glut_CAPTIONLESS, glut_BORDERLESS, glut_AUX1, glut_AUX2, + glut_AUX3, glut_AUX4 :: CUInt hunk ./Graphics/UI/GLUT/Constants.hs 39 +glut_CAPTIONLESS = 0x0400 +glut_BORDERLESS = 0x0800 hunk ./Graphics/UI/GLUT/Initialization.hs 65 - glut_RGBA, glut_RGB, glut_INDEX, glut_SINGLE, glut_DOUBLE, glut_ACCUM, - glut_ALPHA, glut_DEPTH, glut_STENCIL, glut_MULTISAMPLE, glut_STEREO, - glut_LUMINANCE, glut_AUX1, glut_AUX2, glut_AUX3, glut_AUX4, + glut_RGBA, glut_RGB, glut_INDEX, glut_LUMINANCE, + glut_ALPHA, glut_ACCUM, glut_DEPTH, glut_STENCIL, + glut_AUX1, glut_AUX2, glut_AUX3, glut_AUX4, + glut_SINGLE, glut_DOUBLE, glut_MULTISAMPLE, glut_STEREO, + glut_CAPTIONLESS, glut_BORDERLESS, hunk ./Graphics/UI/GLUT/Initialization.hs 238 - | Stereoscopic -- ^ Select A Stereo Window. + | Stereoscopic -- ^ Select a stereo window. + | Captionless -- ^ Select a window without a caption (/freeglut only/). + | Borderless -- ^ Select a window without any borders (/freeglut only/). hunk ./Graphics/UI/GLUT/Initialization.hs 248 - SingleBuffered -> glut_SINGLE - DoubleBuffered -> glut_DOUBLE - WithAccumBuffer -> glut_ACCUM + LuminanceMode -> glut_LUMINANCE hunk ./Graphics/UI/GLUT/Initialization.hs 250 + WithAccumBuffer -> glut_ACCUM hunk ./Graphics/UI/GLUT/Initialization.hs 259 + SingleBuffered -> glut_SINGLE + DoubleBuffered -> glut_DOUBLE hunk ./Graphics/UI/GLUT/Initialization.hs 263 - LuminanceMode -> glut_LUMINANCE + Captionless -> glut_CAPTIONLESS + Borderless -> glut_BORDERLESS hunk ./Graphics/UI/GLUT/Constants.hs 155 - glut_DIRECT_RENDERING :: GLenum + glut_DIRECT_RENDERING, glut_INIT_MAJOR_VERSION, glut_INIT_MINOR_VERSION, + glut_INIT_FLAGS :: GLenum hunk ./Graphics/UI/GLUT/Constants.hs 199 +glut_INIT_MAJOR_VERSION = 512 +glut_INIT_MINOR_VERSION = 513 +glut_INIT_FLAGS = 514 hunk ./Graphics/UI/GLUT/Constants.hs 355 + +----------------------------------------------------------------------------- +-- OpenGL 3.x context creation flags (freeglut extension) +glut_DEBUG, glut_FORWARD_COMPATIBLE :: CInt +glut_DEBUG = 1 +glut_FORWARD_COMPATIBLE = 2 hunk ./Graphics/UI/GLUT/Initialization.hs 45 - DirectRendering(..), directRendering + DirectRendering(..), directRendering, + + -- * OpenGL 3.x context support + initContextVersion, ContextFlag(..), initContextFlags hunk ./Graphics/UI/GLUT/Initialization.hs 78 - glut_TRY_DIRECT_CONTEXT, glut_FORCE_DIRECT_CONTEXT ) + glut_TRY_DIRECT_CONTEXT, glut_FORCE_DIRECT_CONTEXT, + glut_INIT_MAJOR_VERSION, glut_INIT_MINOR_VERSION, + glut_DEBUG, glut_FORWARD_COMPATIBLE, glut_INIT_FLAGS ) +import Graphics.UI.GLUT.Extensions hunk ./Graphics/UI/GLUT/Initialization.hs 87 +#include "HsGLUTExt.h" + +-------------------------------------------------------------------------------- + hunk ./Graphics/UI/GLUT/Initialization.hs 612 + +----------------------------------------------------------------------------- + +-- | (/freeglut only/) Controls the API major\/minor version of the OpenGL +-- context. If a version less than or equal to 2.1 is requested, the context +-- returned may implement any version no less than that requested and no +-- greater than 2.1. If version 3.0 is requested, the context returned must +-- implement exactly version 3.0. Versioning behavior once GL versions beyond +-- 3.0 are defined will be defined by an amendment to the OpenGL specification +-- to define dependencies on such GL versions. +-- +-- 'Graphics.Rendering.OpenGL.GL.StringQueries.glVersion' and +-- 'Graphics.Rendering.OpenGL.GL.StringQueries.majorMinor' will return the +-- actual version supported by a context. +-- +-- The default context version is (1, 0), which will typically return an +-- OpenGL 2.1 context, if one is available. + +initContextVersion :: StateVar (Int, Int) +initContextVersion = makeStateVar getContextVersion setContextVersion + +getContextVersion :: IO (Int, Int) +getContextVersion = do + major <- simpleGet fromIntegral glut_INIT_MAJOR_VERSION + minor <- simpleGet fromIntegral glut_INIT_MINOR_VERSION + return (major, minor) + +setContextVersion :: (Int, Int) -> IO () +setContextVersion (major, minor) = + glutInitContextVersion (fromIntegral major) (fromIntegral minor) + +EXTENSION_ENTRY(unsafe,"freeglut",glutInitContextVersion,CInt -> CInt -> IO ()) + +----------------------------------------------------------------------------- + +-- | A flag affecting the rendering context to create, used in conjunction +-- with 'initContextFlags'. + +data ContextFlag + = -- | Debug contexts are intended for use during application development, + -- and provide additional runtime checking, validation, and logging + -- functionality while possibly incurring performance penalties. The + -- additional functionality provided by debug contexts may vary according + -- to the implementation. In some cases a debug context may be identical + -- to a non-debug context. + DebugContext + | -- | Forward-compatible contexts are defined only for OpenGL versions 3.0 + -- and later. They must not support functionality marked as /deprecated/ + -- by that version of the API, while a non-forward-compatible context must + -- support all functionality in that version, deprecated or not. + ForwardCompatibleContext + deriving ( Eq, Ord, Show ) + +marshalContextFlag :: ContextFlag -> CInt +marshalContextFlag x = case x of + DebugContext -> glut_DEBUG + ForwardCompatibleContext -> glut_FORWARD_COMPATIBLE + +----------------------------------------------------------------------------- + +-- | (/freeglut only/) Controls the set of flags for the rendering context. + +initContextFlags :: StateVar [ContextFlag] +initContextFlags = makeStateVar getContextFlags setContextFlags + +getContextFlags :: IO [ContextFlag] +getContextFlags = simpleGet i2cfs glut_INIT_FLAGS + +i2cfs :: CInt -> [ContextFlag] +i2cfs bitfield = + [ c | c <- [ DebugContext, ForwardCompatibleContext ] + , (fromIntegral bitfield .&. marshalContextFlag c) /= 0 ] + +setContextFlags :: [ContextFlag] -> IO () +setContextFlags = glutInitContextFlags . toBitfield marshalContextFlag + +EXTENSION_ENTRY(unsafe,"freeglut",glutInitContextFlags,CInt -> IO ()) hunk ./Graphics/UI/GLUT/Initialization.hs 295 - [ c | c <- [ RGBAMode, RGBMode, IndexMode, SingleBuffered, DoubleBuffered, - WithAccumBuffer, WithAlphaComponent, WithDepthBuffer, - WithStencilBuffer, WithAuxBuffers 1, WithAuxBuffers 2, - WithAuxBuffers 3, WithAuxBuffers 4, Multisampling, Stereoscopic, - LuminanceMode ] + [ c | c <- [ RGBAMode, RGBMode, IndexMode, LuminanceMode, WithAlphaComponent, + WithAccumBuffer, WithDepthBuffer, WithStencilBuffer, + WithAuxBuffers 1, WithAuxBuffers 2, WithAuxBuffers 3, + WithAuxBuffers 4, SingleBuffered, DoubleBuffered, Multisampling, + Stereoscopic, Captionless, Borderless ] hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 20 - -- * Callback for visibility changes + -- * Callbacks for visibility changes hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 22 + WindowState(..), WindowStateCallback, windowStateCallback, hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 61 + glut_HIDDEN, glut_FULLY_RETAINED, glut_PARTIALLY_RETAINED, glut_FULLY_COVERED, hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 236 --- | A visibilty callback +-- | A visibility callback hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 249 +-- +-- Note that you can either use 'visibilityCallback' or 'windowStateCallback', +-- but not both, because the former is implemented via the latter. hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 267 +-- | The window state of the /current window/ + +data WindowState + = Unmapped -- ^ The /current window/ is unmapped. + | FullyRetained -- ^ The /current window/ is unobscured. + | PartiallyRetained -- ^ The /current window/ is partially obscured. + | FullyCovered -- ^ The /current window/ is fully obscured. + deriving ( Eq, Ord, Show ) + +unmarshalWindowState :: CInt -> WindowState +unmarshalWindowState x + | x == glut_HIDDEN = Unmapped + | x == glut_FULLY_RETAINED = FullyRetained + | x == glut_PARTIALLY_RETAINED = PartiallyRetained + | x == glut_FULLY_COVERED = FullyCovered + | otherwise = error ("unmarshalWindowState: illegal value " ++ show x) + +-------------------------------------------------------------------------------- + +-- | A window state callback + +type WindowStateCallback = WindowState -> IO () + +type WindowStateCallback_ = CInt -> IO () + +-- | (/freeglut only/) Controls the window state callback for the /current +-- window./ The window state callback for a window is called when the window +-- state of a window changes. +-- +-- If the window state callback for a window is disabled and later re-enabled, +-- the window state state of the window is undefined; any change in the window +-- state will be reported, that is if you disable a window state callback and +-- re-enable the callback, you are guaranteed the next window state change will +-- be reported. +-- +-- Note that you can either use 'visibilityCallback' or 'windowStateCallback', +-- but not both, because the former is implemented via the latter. + +windowStateCallback :: SettableStateVar (Maybe WindowStateCallback) +windowStateCallback = makeSettableStateVar $ + setCallback WindowStatusCB glutWindowStateFunc + (makeWindowStateCallback . unmarshal) + where unmarshal cb = cb . unmarshalWindowState + +foreign import ccall "wrapper" makeWindowStateCallback :: + WindowStateCallback_ -> IO (FunPtr WindowStateCallback_) + +EXTENSION_ENTRY(unsafe,"freeglut",glutWindowStateFunc,FunPtr WindowStateCallback_ -> IO ()) + +-------------------------------------------------------------------------------- + hunk ./Graphics/UI/GLUT/Callbacks/Registration.hs 45 + | MouseWheelCB -- freeglut only hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 31 + -- * Mouse wheel callback + WheelNumber, WheelDirection, MouseWheelCallback, mouseWheelCallback, + hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 295 --- | (/freeglut only/) Controls the window state callback for the /current --- window./ The window state callback for a window is called when the window --- state of a window changes. +-- | (/freeglut only/) Controls the window state callback for the +-- /current window./ The window state callback for a window is called when the +-- window state of a window changes. hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 548 +type WheelNumber = Int + +type WheelDirection = Int + +type MouseWheelCallback = WheelNumber -> WheelDirection -> Position -> IO () + +type MouseWheelCallback_ = CInt -> CInt -> CInt -> CInt -> IO () + +-- | (/freeglut only/) Controls the mouse wheel callback for the +-- /current window./ The mouse wheel callback for a window is called when a +-- mouse wheel is used and the wheel number is greater than or equal to +-- 'Graphics.UI.GLUT.State.numMouseButtons'. + +mouseWheelCallback :: SettableStateVar (Maybe MouseWheelCallback) +mouseWheelCallback = makeSettableStateVar $ + setCallback MouseWheelCB glutMouseWheelFunc (makeMouseWheelCallback . unmarshal) + where unmarshal cb n d x y = cb (fromIntegral n) (fromIntegral d) + (Position (fromIntegral x) (fromIntegral y)) + +foreign import ccall "wrapper" makeMouseWheelCallback :: + MouseWheelCallback_ -> IO (FunPtr MouseWheelCallback_) + +EXTENSION_ENTRY(unsafe,"freeglut",glutMouseWheelFunc,FunPtr MouseWheelCallback_ -> IO ()) + +-------------------------------------------------------------------------------- + hunk ./Graphics/UI/GLUT/Initialization.hs 48 - initContextVersion, ContextFlag(..), initContextFlags + initialContextVersion, ContextFlag(..), initialContextFlags hunk ./Graphics/UI/GLUT/Initialization.hs 630 -initContextVersion :: StateVar (Int, Int) -initContextVersion = makeStateVar getContextVersion setContextVersion +initialContextVersion :: StateVar (Int, Int) +initialContextVersion = makeStateVar getContextVersion setContextVersion hunk ./Graphics/UI/GLUT/Initialization.hs 648 --- with 'initContextFlags'. +-- with 'initialContextFlags'. hunk ./Graphics/UI/GLUT/Initialization.hs 674 -initContextFlags :: StateVar [ContextFlag] -initContextFlags = makeStateVar getContextFlags setContextFlags +initialContextFlags :: StateVar [ContextFlag] +initialContextFlags = makeStateVar getContextFlags setContextFlags hunk ./Graphics/UI/GLUT/Initialization.hs 51 -import Data.Bits ( Bits((.|.),(.&.)) ) -import Data.List ( genericLength, intersperse ) +import Control.Monad ( when ) +import Data.Bits ( Bits((.|.),(.&.)), complement ) +import Data.List ( genericLength, intersperse, mapAccumR ) hunk ./Graphics/UI/GLUT/Initialization.hs 58 -import Foreign.Ptr ( Ptr, nullPtr ) +import Foreign.Ptr ( Ptr, nullPtr, nullFunPtr ) hunk ./Graphics/UI/GLUT/Initialization.hs 65 - StateVar, makeStateVar ) + StateVar, makeStateVar, HasGetter(..), HasSetter(..) ) hunk ./Graphics/UI/GLUT/Initialization.hs 230 - = RGBAMode -- ^ Select an RGBA mode window. This is the default if neither 'RGBAMode' nor 'IndexMode' are specified. - | RGBMode -- ^ An alias for 'RGBAMode'. - | IndexMode -- ^ Select a color index mode window. This overrides 'RGBAMode' if it is also specified. - | LuminanceMode -- ^ Select a window with a \"luminance\" color model. This model provides the functionality of OpenGL\'s - -- RGBA color model, but the green and blue components are not maintained in the frame buffer. Instead - -- each pixel\'s red component is converted to an index between zero and 'Graphics.UI.GLUT.Colormap.numColorMapEntries' - -- and looked up in a per-window color map to determine the color of pixels within the window. The initial - -- colormap of 'LuminanceMode' windows is initialized to be a linear gray ramp, but can be modified with GLUT\'s - -- colormap actions. /Implementation Notes:/ 'LuminanceMode' is not supported on most OpenGL platforms. - | WithAlphaComponent -- ^ Select a window with an alpha component to the color buffer(s). - | WithAccumBuffer -- ^ Select a window with an accumulation buffer. - | WithDepthBuffer -- ^ Select a window with a depth buffer. - | WithStencilBuffer -- ^ Select a window with a stencil buffer. - | WithAuxBuffers Int -- ^ (/freeglut only/) Select a window with /n/ (1 .. 4) auxiliary buffers. Any /n/ outside the range 1 .. 4 is a fatal error. - | SingleBuffered -- ^ Select a single buffered window. This is the default if neither 'DoubleBuffered' nor 'SingleBuffered' are specified. - | DoubleBuffered -- ^ Select a double buffered window. This overrides 'SingleBuffered' if it is also specified. - | Multisampling -- ^ Select a window with multisampling support. If multisampling is not available, a non-multisampling - -- window will automatically be chosen. Note: both the OpenGL client-side and server-side implementations - -- must support the @GLX_SAMPLE_SGIS@ extension for multisampling to be available. - | Stereoscopic -- ^ Select a stereo window. - | Captionless -- ^ Select a window without a caption (/freeglut only/). - | Borderless -- ^ Select a window without any borders (/freeglut only/). + = RGBAMode + -- ^ Select an RGBA mode window. This is the default if neither 'RGBAMode' + -- nor 'IndexMode' are specified. + | RGBMode + -- ^ An alias for 'RGBAMode'. + | IndexMode + -- ^ Select a color index mode window. This overrides 'RGBAMode' if it is + -- also specified. + | LuminanceMode + -- ^ Select a window with a \"luminance\" color model. This model provides + -- the functionality of OpenGL\'s RGBA color model, but the green and blue + -- components are not maintained in the frame buffer. Instead each pixel\'s + -- red component is converted to an index between zero and + -- 'Graphics.UI.GLUT.Colormap.numColorMapEntries' and looked up in a + -- per-window color map to determine the color of pixels within the window. + -- The initial colormap of 'LuminanceMode' windows is initialized to be a + -- linear gray ramp, but can be modified with GLUT\'s colormap actions. + -- /Implementation Notes:/ 'LuminanceMode' is not supported on most OpenGL + -- platforms. + | WithAlphaComponent + -- ^ Select a window with an alpha component to the color buffer(s). + | WithAccumBuffer + -- ^ Select a window with an accumulation buffer. + | WithDepthBuffer + -- ^ Select a window with a depth buffer. + | WithStencilBuffer + -- ^ Select a window with a stencil buffer. + | WithAuxBuffers Int + -- ^ (/freeglut only/) Select a window with /n/ (1 .. 4) auxiliary buffers. + -- Any /n/ outside the range 1 .. 4 is a fatal error. + | SingleBuffered + -- ^ Select a single buffered window. This is the default if neither + -- 'DoubleBuffered' nor 'SingleBuffered' are specified. + | DoubleBuffered + -- ^ Select a double buffered window. This overrides 'SingleBuffered' if it + -- is also specified. + | Multisampling + -- ^ Select a window with multisampling support. If multisampling is not + -- available, a non-multisampling window will automatically be chosen. + -- Note: both the OpenGL client-side and server-side implementations must + -- support the @GLX_SAMPLE_SGIS@ extension for multisampling to be + -- available. Deprecated, use 'WithSamplesPerPixel'. + | WithSamplesPerPixel Int + -- ^ Select a window with multisampling, using the given samples per pixel. + | Stereoscopic + -- ^ Select a stereo window. + | Captionless + -- ^ Select a window without a caption (/freeglut only/). + | Borderless + -- ^ Select a window without any borders (/freeglut only/). hunk ./Graphics/UI/GLUT/Initialization.hs 301 + WithSamplesPerPixel _ -> error ("marshalDisplayMode: this should not happen") hunk ./Graphics/UI/GLUT/Initialization.hs 321 -getInitialDisplayMode = simpleGet i2dms glut_INIT_DISPLAY_MODE +getInitialDisplayMode = do + mode <- simpleGet fromIntegral glut_INIT_DISPLAY_MODE + let displayModes = i2dms (mode .&. complement glut_MULTISAMPLE) + if mode .&. glut_MULTISAMPLE == 0 + then return displayModes + else do + n <- get samplesPerPixel + return $ WithSamplesPerPixel n : displayModes hunk ./Graphics/UI/GLUT/Initialization.hs 330 -i2dms :: CInt -> [DisplayMode] -i2dms bitfield = - [ c | c <- [ RGBAMode, RGBMode, IndexMode, LuminanceMode, WithAlphaComponent, +i2dms :: CUInt -> [DisplayMode] +i2dms bitfield | IndexMode `elem` modes || LuminanceMode `elem` modes = modes + | otherwise = RGBAMode : modes + where modes = i2dmsWithoutRGBA bitfield + +i2dmsWithoutRGBA :: CUInt -> [DisplayMode] +i2dmsWithoutRGBA bitfield = + [ c | c <- [ IndexMode, LuminanceMode, WithAlphaComponent, hunk ./Graphics/UI/GLUT/Initialization.hs 342 - , (fromIntegral bitfield .&. marshalDisplayMode c) /= 0 ] + , (bitfield .&. marshalDisplayMode c) /= 0 ] hunk ./Graphics/UI/GLUT/Initialization.hs 345 -setInitialDisplayMode = glutInitDisplayMode . toBitfield marshalDisplayMode +setInitialDisplayMode modes = do + let (spps, transformedModes) = mapAccumR handleMultisampling [] modes + mapM_ (samplesPerPixel $=) spps + glutInitDisplayMode (toBitfield marshalDisplayMode transformedModes) + +handleMultisampling :: [Int] -> DisplayMode -> ([Int], DisplayMode) +handleMultisampling spps (WithSamplesPerPixel spp) = (spp : spps, Multisampling) +handleMultisampling spps mode = (spps, mode) hunk ./Graphics/UI/GLUT/Initialization.hs 369 +samplesPerPixel :: StateVar Int +samplesPerPixel = makeStateVar getSamplesPerPixel setSamplesPerPixel + +getSamplesPerPixel :: IO Int +getSamplesPerPixel = do + m <- multisamplingSupported + if m + then simpleGet fromIntegral (fromIntegral glut_MULTISAMPLE) + else return defaultSamplesPerPixels + +defaultSamplesPerPixels :: Int +defaultSamplesPerPixels = 4 + +setSamplesPerPixel :: Int -> IO () +setSamplesPerPixel spp = do + m <- multisamplingSupported + when m $ + glutSetOption (fromIntegral glut_MULTISAMPLE) (fromIntegral spp) + +multisamplingSupported :: IO Bool +multisamplingSupported = isKnown "glutGetModeValues" + where isKnown = fmap (/= nullFunPtr) . getProcAddressInternal + +-------------------------------------------------------------------------------- + hunk ./Graphics/UI/GLUT/Constants.hs 149 - glut_SCREEN_WIDTH, glut_SCREEN_HEIGHT, glut_SCREEN_WIDTH_MM, - glut_SCREEN_HEIGHT_MM, glut_MENU_NUM_ITEMS, glut_DISPLAY_MODE_POSSIBLE, - glut_INIT_WINDOW_X, glut_INIT_WINDOW_Y, glut_INIT_WINDOW_WIDTH, - glut_INIT_WINDOW_HEIGHT, glut_INIT_DISPLAY_MODE, glut_ELAPSED_TIME, - glut_WINDOW_FORMAT_ID, glut_ACTION_ON_WINDOW_CLOSE, glut_WINDOW_BORDER_WIDTH, - glut_WINDOW_HEADER_HEIGHT, glut_VERSION, glut_RENDERING_CONTEXT, - glut_DIRECT_RENDERING, glut_INIT_MAJOR_VERSION, glut_INIT_MINOR_VERSION, - glut_INIT_FLAGS :: GLenum + glut_INIT_STATE, glut_SCREEN_WIDTH, glut_SCREEN_HEIGHT, + glut_SCREEN_WIDTH_MM, glut_SCREEN_HEIGHT_MM, glut_MENU_NUM_ITEMS, + glut_DISPLAY_MODE_POSSIBLE, glut_INIT_WINDOW_X, glut_INIT_WINDOW_Y, + glut_INIT_WINDOW_WIDTH, glut_INIT_WINDOW_HEIGHT, glut_INIT_DISPLAY_MODE, + glut_ELAPSED_TIME, glut_WINDOW_FORMAT_ID, glut_ACTION_ON_WINDOW_CLOSE, + glut_WINDOW_BORDER_WIDTH, glut_WINDOW_HEADER_HEIGHT, glut_VERSION, + glut_RENDERING_CONTEXT, glut_DIRECT_RENDERING, glut_INIT_MAJOR_VERSION, + glut_INIT_MINOR_VERSION, glut_INIT_FLAGS :: GLenum hunk ./Graphics/UI/GLUT/Constants.hs 180 +glut_INIT_STATE = 124 hunk ./Graphics/UI/GLUT/Initialization.hs 29 - initialize, getArgsAndInitialize, + initialize, getArgsAndInitialize, exit, hunk ./Graphics/UI/GLUT/Initialization.hs 161 +----------------------------------------------------------------------------- + +-- | (/freeglut only/) De-initialize GLUT. After this, one has to use +-- 'initialize' or 'getArgsAndInitialize' to initialize GLUT again. + +exit :: IO () +exit = glutExit + +EXTENSION_ENTRY(unsafe,"freeglut",glutExit,IO ()) + hunk ./Graphics/UI/GLUT/State.hs 45 - glutVersion + glutVersion, initState hunk ./Graphics/UI/GLUT/State.hs 73 - glut_VERSION, glut_WINDOW_BORDER_WIDTH, glut_WINDOW_HEADER_HEIGHT ) + glut_VERSION, glut_WINDOW_BORDER_WIDTH, glut_WINDOW_HEADER_HEIGHT, + glut_INIT_STATE ) hunk ./Graphics/UI/GLUT/State.hs 352 +----------------------------------------------------------------------------- + +-- | (/freeglut only/) Contains 'True' if GLUT has been initialized +-- with 'Graphics.UI.GLUT.Initialization.initialize' or +-- 'Graphics.UI.GLUT.Initialization.getArgsAndInitialize' has and not yet +-- been de-initialized with 'Graphics.UI.GLUT.Initialization.exit'. Contains +-- 'False' otherwise. + +initState :: GettableStateVar Bool +initState = makeGettableStateVar$ simpleGet i2b glut_INIT_STATE hunk ./Graphics/UI/GLUT/Constants.hs 155 - glut_RENDERING_CONTEXT, glut_DIRECT_RENDERING, glut_INIT_MAJOR_VERSION, - glut_INIT_MINOR_VERSION, glut_INIT_FLAGS :: GLenum + glut_RENDERING_CONTEXT, glut_DIRECT_RENDERING, glut_FULL_SCREEN, + glut_INIT_MAJOR_VERSION, glut_INIT_MINOR_VERSION, glut_INIT_FLAGS :: GLenum hunk ./Graphics/UI/GLUT/Constants.hs 200 +glut_FULL_SCREEN = 511 hunk ./Graphics/UI/GLUT/State.hs 26 + fullScreenMode, hunk ./Graphics/UI/GLUT/State.hs 49 +import Control.Monad ( unless ) hunk ./Graphics/UI/GLUT/State.hs 55 - GettableStateVar, makeGettableStateVar ) + StateVar, makeStateVar, GettableStateVar, makeGettableStateVar ) hunk ./Graphics/UI/GLUT/State.hs 68 + glut_FULL_SCREEN, hunk ./Graphics/UI/GLUT/State.hs 78 - hunk ./Graphics/UI/GLUT/State.hs 80 +import Graphics.UI.GLUT.Window ( fullScreenToggle ) hunk ./Graphics/UI/GLUT/State.hs 174 +-- | (/freeglut only/) Contains 'True' if the /current window/ is in full screen +-- mode, 'False' otherwise. + +fullScreenMode :: StateVar Bool +fullScreenMode = makeStateVar getFullScreenMode setFullScreenMode + +getFullScreenMode :: IO Bool +getFullScreenMode = simpleGet i2b glut_FULL_SCREEN + +setFullScreenMode :: Bool -> IO () +setFullScreenMode newMode = do + oldMode <- getFullScreenMode + unless (newMode == oldMode) fullScreenToggle + +-------------------------------------------------------------------------------- + hunk ./Graphics/UI/GLUT/Window.hs 36 - windowPosition, windowSize, fullScreen, + windowPosition, windowSize, fullScreen, fullScreenToggle, hunk ./Graphics/UI/GLUT/Window.hs 74 +import Graphics.UI.GLUT.Extensions hunk ./Graphics/UI/GLUT/Window.hs 80 +#include "HsGLUTExt.h" + +-------------------------------------------------------------------------------- + hunk ./Graphics/UI/GLUT/Window.hs 327 +-- | (/freeglut only/) Toggle between windowed and full screen mode. + +fullScreenToggle :: IO () +fullScreenToggle = glutFullScreenToggle + +EXTENSION_ENTRY(unsafe,"freeglut",glutFullScreenToggle,IO ()) + +-------------------------------------------------------------------------------- + hunk ./Graphics/UI/GLUT/Constants.hs 364 +----------------------------------------------------------------------------- +-- glutGetModeValues parameter (freeglut extension) +glut_AUX :: GLenum +glut_AUX = 0x1000 + hunk ./Graphics/UI/GLUT/State.hs 44 + supportedNumAuxBuffers, supportedSamplesPerPixel, hunk ./Graphics/UI/GLUT/State.hs 52 -import Foreign.Ptr ( nullFunPtr ) +import Foreign.Marshal.Alloc ( alloca ) +import Foreign.Marshal.Array ( peekArray ) +import Foreign.Ptr ( Ptr, nullFunPtr ) +import Foreign.Storable ( Storable(..) ) hunk ./Graphics/UI/GLUT/State.hs 80 + glut_AUX, glut_MULTISAMPLE, hunk ./Graphics/UI/GLUT/State.hs 86 -import Graphics.UI.GLUT.Extensions ( getProcAddressInternal ) +import Graphics.UI.GLUT.Extensions + +-------------------------------------------------------------------------------- + +#include "HsGLUTExt.h" hunk ./Graphics/UI/GLUT/State.hs 325 +----------------------------------------------------------------------------- + +-- | (/freeglut only/) Contains a list of the number of auxiliary buffers +-- supported, in increasing order. + +supportedNumAuxBuffers :: GettableStateVar [Int] +supportedNumAuxBuffers = getModeValues glut_AUX + +-- | (/freeglut only/) Contains a list of the number of samples per pixel +-- supported for multisampling, in increasing order. + +supportedSamplesPerPixel :: GettableStateVar [SampleCount] +supportedSamplesPerPixel = getModeValues (fromIntegral glut_MULTISAMPLE) + +getModeValues :: Integral a => GLenum -> GettableStateVar [a] +getModeValues what = makeGettableStateVar $ + alloca $ \sizeBuffer -> do + valuesBuffer <- glutGetModeValues what sizeBuffer + size <- peek sizeBuffer + fmap (map fromIntegral) $ peekArray (fromIntegral size) valuesBuffer + +EXTENSION_ENTRY(unsafe,"freeglut",glutGetModeValues,GLenum -> Ptr CInt -> IO (Ptr CInt)) + hunk ./GLUT.cabal 2 -version: 2.2 +version: 2.1.2.0 hunk ./GLUT.cabal 6 +bug-reports: mailto:hopengl@haskell.org hunk ./configure.ac 1 -AC_INIT([Haskell GLUT package], [2.2], [sven.panne@aedion.de], [GLUT]) +AC_INIT([Haskell GLUT package], [2.1.2.0], [sven.panne@aedion.de], [GLUT]) hunk ./GLUT.cabal 2 -version: 2.1.2.0 +version: 2.1.2.1 hunk ./configure.ac 1 -AC_INIT([Haskell GLUT package], [2.1.2.0], [sven.panne@aedion.de], [GLUT]) +AC_INIT([Haskell GLUT package], [2.1.2.1], [sven.panne@aedion.de], [GLUT]) hunk ./Makefile.inc 1 -# Hey Emacs, this is a -*- makefile -*- ! - -ifeq "" "${MKDIR}" -MKDIR:=$(shell pwd) -#MKDIR:=$(PWD) -else -MKDIR:=$(patsubst %/$(notdir ${MKDIR}),%, ${MKDIR}) -endif -include ${MKDIR}/Makefile.inc rmfile ./Makefile.inc hunk ./Makefile.nhc98 1 -# Hey Emacs, this is a -*- makefile -*- ! - -THISPKG = GLUT -SEARCH = -package base -package OpenGL -EXTRA_H_FLAGS = -DCALLCONV=ccall -SRCS = \ - Graphics/UI/GLUT.hs \ - Graphics/UI/GLUT/Begin.hs \ - Graphics/UI/GLUT/Callbacks.hs \ - Graphics/UI/GLUT/Callbacks/Global.hs \ - Graphics/UI/GLUT/Callbacks/Registration.hs \ - Graphics/UI/GLUT/Callbacks/Window.hs \ - Graphics/UI/GLUT/Colormap.hs \ - Graphics/UI/GLUT/Constants.hs \ - Graphics/UI/GLUT/Debugging.hs \ - Graphics/UI/GLUT/DeviceControl.hs \ - Graphics/UI/GLUT/Fonts.hs \ - Graphics/UI/GLUT/GameMode.hs \ - Graphics/UI/GLUT/Initialization.hs \ - Graphics/UI/GLUT/Menu.hs \ - Graphics/UI/GLUT/Objects.hs \ - Graphics/UI/GLUT/Overlay.hs \ - Graphics/UI/GLUT/QueryUtils.hs \ - Graphics/UI/GLUT/State.hs \ - Graphics/UI/GLUT/Types.hs \ - Graphics/UI/GLUT/Window.hs - -# Here are the main rules. -include ../Makefile.common - -# Here are the dependencies. -$(OBJDIR)/Graphics/UI/GLUT.$O: \ - $(OBJDIR)/Graphics/UI/GLUT/Begin.$O \ - $(OBJDIR)/Graphics/UI/GLUT/Callbacks.$O \ - $(OBJDIR)/Graphics/UI/GLUT/Colormap.$O \ - $(OBJDIR)/Graphics/UI/GLUT/Debugging.$O \ - $(OBJDIR)/Graphics/UI/GLUT/DeviceControl.$O \ - $(OBJDIR)/Graphics/UI/GLUT/Fonts.$O \ - $(OBJDIR)/Graphics/UI/GLUT/GameMode.$O \ - $(OBJDIR)/Graphics/UI/GLUT/Initialization.$O \ - $(OBJDIR)/Graphics/UI/GLUT/Menu.$O \ - $(OBJDIR)/Graphics/UI/GLUT/Objects.$O \ - $(OBJDIR)/Graphics/UI/GLUT/Overlay.$O \ - $(OBJDIR)/Graphics/UI/GLUT/State.$O \ - $(OBJDIR)/Graphics/UI/GLUT/Window.$O -$(OBJDIR)/Graphics/UI/GLUT/Callbacks.$O: \ - $(OBJDIR)/Graphics/UI/GLUT/Callbacks/Global.$O \ - $(OBJDIR)/Graphics/UI/GLUT/Callbacks/Window.$O -$(OBJDIR)/Graphics/UI/GLUT/Callbacks/Global.$O: \ - $(OBJDIR)/Graphics/UI/GLUT/Callbacks/Registration.$O \ - $(OBJDIR)/Graphics/UI/GLUT/Constants.$O -$(OBJDIR)/Graphics/UI/GLUT/Callbacks/Registration.$O: \ - $(OBJDIR)/Graphics/UI/GLUT/Window.$O -$(OBJDIR)/Graphics/UI/GLUT/Callbacks/Window.$O: \ - $(OBJDIR)/Graphics/UI/GLUT/Callbacks/Registration.$O \ - $(OBJDIR)/Graphics/UI/GLUT/Constants.$O \ - $(OBJDIR)/Graphics/UI/GLUT/State.$O \ - $(OBJDIR)/Graphics/UI/GLUT/Types.$O -$(OBJDIR)/Graphics/UI/GLUT/Colormap.$O: \ - $(OBJDIR)/Graphics/UI/GLUT/Constants.$O \ - $(OBJDIR)/Graphics/UI/GLUT/QueryUtils.$O \ - $(OBJDIR)/Graphics/UI/GLUT/Window.$O -$(OBJDIR)/Graphics/UI/GLUT/DeviceControl.$O: \ - $(OBJDIR)/Graphics/UI/GLUT/Constants.$O \ - $(OBJDIR)/Graphics/UI/GLUT/QueryUtils.$O -$(OBJDIR)/Graphics/UI/GLUT/GameMode.$O: \ - $(OBJDIR)/Graphics/UI/GLUT/Constants.$O \ - $(OBJDIR)/Graphics/UI/GLUT/Initialization.$O \ - $(OBJDIR)/Graphics/UI/GLUT/Types.$O \ - $(OBJDIR)/Graphics/UI/GLUT/Window.$O -$(OBJDIR)/Graphics/UI/GLUT/Initialization.$O: \ - $(OBJDIR)/Graphics/UI/GLUT/Constants.$O \ - $(OBJDIR)/Graphics/UI/GLUT/QueryUtils.$O \ - $(OBJDIR)/Graphics/UI/GLUT/Types.$O -$(OBJDIR)/Graphics/UI/GLUT/Menu.$O: \ - $(OBJDIR)/Graphics/UI/GLUT/Callbacks/Registration.$O \ - $(OBJDIR)/Graphics/UI/GLUT/Callbacks/Window.$O \ - $(OBJDIR)/Graphics/UI/GLUT/Constants.$O \ - $(OBJDIR)/Graphics/UI/GLUT/QueryUtils.$O \ - $(OBJDIR)/Graphics/UI/GLUT/Types.$O \ - $(OBJDIR)/Graphics/UI/GLUT/Window.$O -$(OBJDIR)/Graphics/UI/GLUT/Overlay.$O: \ - $(OBJDIR)/Graphics/UI/GLUT/Constants.$O \ - $(OBJDIR)/Graphics/UI/GLUT/QueryUtils.$O \ - $(OBJDIR)/Graphics/UI/GLUT/Window.$O -$(OBJDIR)/Graphics/UI/GLUT/State.$O: \ - $(OBJDIR)/Graphics/UI/GLUT/Constants.$O \ - $(OBJDIR)/Graphics/UI/GLUT/Overlay.$O \ - $(OBJDIR)/Graphics/UI/GLUT/QueryUtils.$O -$(OBJDIR)/Graphics/UI/GLUT/Types.$O: \ - $(OBJDIR)/Graphics/UI/GLUT/Constants.$O -$(OBJDIR)/Graphics/UI/GLUT/Window.$O: \ - $(OBJDIR)/Graphics/UI/GLUT/Constants.$O \ - $(OBJDIR)/Graphics/UI/GLUT/QueryUtils.$O \ - $(OBJDIR)/Graphics/UI/GLUT/Types.$O - -# C-files dependencies. -Graphics/UI/GLUT.$C: \ - Graphics/UI/GLUT/Begin.$C \ - Graphics/UI/GLUT/Callbacks.$C \ - Graphics/UI/GLUT/Colormap.$C \ - Graphics/UI/GLUT/Debugging.$C \ - Graphics/UI/GLUT/DeviceControl.$C \ - Graphics/UI/GLUT/Fonts.$C \ - Graphics/UI/GLUT/GameMode.$C \ - Graphics/UI/GLUT/Initialization.$C \ - Graphics/UI/GLUT/Menu.$C \ - Graphics/UI/GLUT/Objects.$C \ - Graphics/UI/GLUT/Overlay.$C \ - Graphics/UI/GLUT/State.$C \ - Graphics/UI/GLUT/Window.$C -Graphics/UI/GLUT/Callbacks.$C: \ - Graphics/UI/GLUT/Callbacks/Global.$C \ - Graphics/UI/GLUT/Callbacks/Window.$C -Graphics/UI/GLUT/Callbacks/Global.$C: \ - Graphics/UI/GLUT/Callbacks/Registration.$C \ - Graphics/UI/GLUT/Constants.$C -Graphics/UI/GLUT/Callbacks/Registration.$C: \ - Graphics/UI/GLUT/Window.$C -Graphics/UI/GLUT/Callbacks/Window.$C: \ - Graphics/UI/GLUT/Callbacks/Registration.$C \ - Graphics/UI/GLUT/Constants.$C \ - Graphics/UI/GLUT/State.$C \ - Graphics/UI/GLUT/Types.$C -Graphics/UI/GLUT/Colormap.$C: \ - Graphics/UI/GLUT/Constants.$C \ - Graphics/UI/GLUT/QueryUtils.$C \ - Graphics/UI/GLUT/Window.$C -Graphics/UI/GLUT/DeviceControl.$C: \ - Graphics/UI/GLUT/Constants.$C \ - Graphics/UI/GLUT/QueryUtils.$C -Graphics/UI/GLUT/GameMode.$C: \ - Graphics/UI/GLUT/Constants.$C \ - Graphics/UI/GLUT/Initialization.$C \ - Graphics/UI/GLUT/Types.$C \ - Graphics/UI/GLUT/Window.$C -Graphics/UI/GLUT/Initialization.$C: \ - Graphics/UI/GLUT/Constants.$C \ - Graphics/UI/GLUT/QueryUtils.$C \ - Graphics/UI/GLUT/Types.$C -Graphics/UI/GLUT/Menu.$C: \ - Graphics/UI/GLUT/Callbacks/Registration.$C \ - Graphics/UI/GLUT/Callbacks/Window.$C \ - Graphics/UI/GLUT/Constants.$C \ - Graphics/UI/GLUT/QueryUtils.$C \ - Graphics/UI/GLUT/Types.$C \ - Graphics/UI/GLUT/Window.$C -Graphics/UI/GLUT/Overlay.$C: \ - Graphics/UI/GLUT/Constants.$C \ - Graphics/UI/GLUT/QueryUtils.$C \ - Graphics/UI/GLUT/Window.$C -Graphics/UI/GLUT/State.$C: \ - Graphics/UI/GLUT/Constants.$C \ - Graphics/UI/GLUT/Overlay.$C \ - Graphics/UI/GLUT/QueryUtils.$C -Graphics/UI/GLUT/Types.$C: \ - Graphics/UI/GLUT/Constants.$C -Graphics/UI/GLUT/Window.$C: \ - Graphics/UI/GLUT/Constants.$C \ - Graphics/UI/GLUT/QueryUtils.$C \ - Graphics/UI/GLUT/Types.$C rmfile ./Makefile.nhc98 hunk ./cbits/Makefile 1 -# ----------------------------------------------------------------------------- - -TOP = ../.. -include $(TOP)/mk/boilerplate.mk --include ../config.mk - -# HACK -PACKAGE= - -# ----------------------------------------------------------------------------- - -SRC_CC_OPTS += -Wall -I$(GHC_INCLUDE_DIR) -I../include $(GLUT_CFLAGS) - -LIBRARY = libHSGLUT_cbits.a -LIBOBJS = $(C_OBJS) - -# ----------------------------------------------------------------------------- -# Per-module flags - -# ----------------------------------------------------------------------------- - -include $(TOP)/mk/target.mk rmfile ./cbits/Makefile hunk ./doc/Makefile 1 -QUIP := quip - -IMG_DIR := images -SCRIPT_DIR := scripts - -FIGS := $(wildcard $(IMG_DIR)/*.fig) -GIFS := $(wildcard $(IMG_DIR)/*.gif) -PDFS := $(GIFS:.gif=.pdf) $(FIGS:.fig=.pdf) -EPSFS := $(GIFS:.gif=.epsf) $(FIGS:.fig=.epsf) - -all: tutorial.pdf tutorial.ps tutorial_examples.tar.gz - -%.pdf: %.fig - fig2dev -L pdf $< $@ - -%.epsf: %.fig - fig2dev -L eps $< $@ - -%.pdf: %.gif - convert $< $@ - -%.epsf: %.gif - convert $< $@ - -%.tex: %.xml \ - $(SCRIPT_DIR)/transformscript.xsl \ - $(SCRIPT_DIR)/transformscript.xquery \ - $(SCRIPT_DIR)/deleteTags.xquery \ - $(SCRIPT_DIR)/latexVerbatim.xquery - $(QUIP) -exit_on_fail -value_output -input $< -o $@ \ - -include $(SCRIPT_DIR)/transformscript.xquery \ - -include $(SCRIPT_DIR)/deleteTags.xquery \ - $(SCRIPT_DIR)/latexVerbatim.xquery - -# NOTE: Strangely enough, the PDF and the DVI output differs a bit, so we keep -# the intermediate files apart in the two rules below. - -tutorial.pdf: tutorial.tex bib.bib $(PDFS) - cp $< tutorial_pdf.tex - pdflatex tutorial_pdf - -bibtex tutorial_pdf - makeindex Klassen - pdflatex tutorial_pdf - pdflatex tutorial_pdf - $(RM) $@ - mv tutorial_pdf.pdf $@ - -tutorial.dvi: tutorial.tex bib.bib $(EPSFS) - cp $< tutorial_ltx.tex - latex tutorial_ltx - -bibtex tutorial_ltx - makeindex Klassen - latex tutorial_ltx - latex tutorial_ltx - $(RM) $@ - mv tutorial_ltx.dvi $@ - -tutorial.ps: tutorial.dvi $(EPSFS) - dvips -o tutorial.ps tutorial.dvi - -tutorial_examples.tar.gz: tutorial.xml extractExamples $(SCRIPT_DIR)/deleteTags.xquery - ./extractExamples - -clean:: - $(RM) *.aux *.bbl *.blg *.dvi *.idx *.ilg *.ind *.lof *.log *.pdf *.ps *.tex *.toc - $(RM) $(PDFS) - $(RM) $(EPSFS) - rm -rf bin obj src - $(RM) code.xml header.xml klasse.xml examples.html tutorial_examples.tar.gz rmfile ./doc/Makefile hunk ./examples/BOGLGP/Chapter01/Makefile 1 -# ----------------------------------------------------------------------------- - -TOP = ../../../../.. -include $(TOP)/mk/boilerplate.mk - -# ----------------------------------------------------------------------------- - -EXAMPLES := $(wildcard *.hs) -BINS := $(addsuffix $(exeext),$(EXAMPLES:.hs=)) -CLEAN_FILES += $(BINS) - -HC = $(GHC_INPLACE) -MKDEPENDHS = $(GHC_INPLACE) -SRC_HC_OPTS += -Wall -O -package GLUT - -all:: $(BINS) - -$(BINS): %$(exeext): %.o - $(HC) -o $@ $(HC_OPTS) $(LD_OPTS) $< - -# ----------------------------------------------------------------------------- - -include $(TOP)/mk/target.mk rmfile ./examples/BOGLGP/Chapter01/Makefile hunk ./examples/BOGLGP/Chapter02/Makefile 1 -# ----------------------------------------------------------------------------- - -TOP = ../../../../.. -include $(TOP)/mk/boilerplate.mk - -# ----------------------------------------------------------------------------- - -EXAMPLES := $(wildcard *.hs) -BINS := $(addsuffix $(exeext),$(EXAMPLES:.hs=)) -CLEAN_FILES += $(BINS) - -HC = $(GHC_INPLACE) -MKDEPENDHS = $(GHC_INPLACE) -SRC_HC_OPTS += -Wall -O -package GLUT - -all:: $(BINS) - -$(BINS): %$(exeext): %.o - $(HC) -o $@ $(HC_OPTS) $(LD_OPTS) $< - -# ----------------------------------------------------------------------------- - -include $(TOP)/mk/target.mk rmfile ./examples/BOGLGP/Chapter02/Makefile hunk ./examples/BOGLGP/Chapter03/Makefile 1 -# ----------------------------------------------------------------------------- - -TOP = ../../../../.. -include $(TOP)/mk/boilerplate.mk - -# ----------------------------------------------------------------------------- - -EXAMPLES := $(wildcard *.hs) -BINS := $(addsuffix $(exeext),$(EXAMPLES:.hs=)) -CLEAN_FILES += $(BINS) - -HC = $(GHC_INPLACE) -MKDEPENDHS = $(GHC_INPLACE) -SRC_HC_OPTS += -Wall -O -package GLUT - -all:: $(BINS) - -$(BINS): %$(exeext): %.o - $(HC) -o $@ $(HC_OPTS) $(LD_OPTS) $< - -# ----------------------------------------------------------------------------- - -include $(TOP)/mk/target.mk rmfile ./examples/BOGLGP/Chapter03/Makefile hunk ./examples/BOGLGP/Makefile 1 -# ----------------------------------------------------------------------------- - -TOP = ../../../.. -include $(TOP)/mk/boilerplate.mk - -# ----------------------------------------------------------------------------- - -SUBDIRS = Chapter01 Chapter02 Chapter03 - -# ----------------------------------------------------------------------------- - -include $(TOP)/mk/target.mk rmfile ./examples/BOGLGP/Makefile hunk ./examples/Makefile 1 -# ----------------------------------------------------------------------------- - -TOP = ../../.. -include $(TOP)/mk/boilerplate.mk - -# ----------------------------------------------------------------------------- - -ifeq "$(way)" "" -SUBDIRS = RedBook OrangeBook BOGLGP Misc -endif - -# ----------------------------------------------------------------------------- - -include $(TOP)/mk/target.mk rmfile ./examples/Makefile hunk ./examples/Misc/Makefile 1 -# ----------------------------------------------------------------------------- - -TOP = ../../../.. -include $(TOP)/mk/boilerplate.mk - -# ----------------------------------------------------------------------------- - -EXAMPLES := $(wildcard *.hs) -BINS := $(addsuffix $(exeext),$(EXAMPLES:.hs=)) -CLEAN_FILES += $(BINS) - -HC = $(GHC_INPLACE) -MKDEPENDHS = $(GHC_INPLACE) -SRC_HC_OPTS += -Wall -O -package GLUT - -all:: $(BINS) - -$(BINS): %$(exeext): %.o - $(HC) -o $@ $(HC_OPTS) $(LD_OPTS) $< - -# ----------------------------------------------------------------------------- - -include $(TOP)/mk/target.mk rmfile ./examples/Misc/Makefile hunk ./examples/OrangeBook/Makefile 1 -# ----------------------------------------------------------------------------- - -TOP = ../../../.. -include $(TOP)/mk/boilerplate.mk - -# ----------------------------------------------------------------------------- - -ifeq "$(way)" "" -SUBDIRS = ogl2brick -endif - -# ----------------------------------------------------------------------------- - -include $(TOP)/mk/target.mk rmfile ./examples/OrangeBook/Makefile hunk ./examples/OrangeBook/ogl2brick/Makefile 1 -# ----------------------------------------------------------------------------- - -TOP = ../../../../.. -include $(TOP)/mk/boilerplate.mk - -# ----------------------------------------------------------------------------- - -EXAMPLES := $(wildcard *.hs) -BINS := $(addsuffix $(exeext),$(EXAMPLES:.hs=)) -CLEAN_FILES += $(BINS) - -HC = $(GHC_INPLACE) -MKDEPENDHS = $(GHC_INPLACE) -SRC_HC_OPTS += -Wall -O -package GLUT - -all:: $(BINS) - -$(BINS): %$(exeext): %.o - $(HC) -o $@ $(HC_OPTS) $(LD_OPTS) $< - -# ----------------------------------------------------------------------------- - -include $(TOP)/mk/target.mk rmfile ./examples/OrangeBook/ogl2brick/Makefile hunk ./examples/RedBook/Makefile 1 -# ----------------------------------------------------------------------------- - -TOP = ../../../.. -include $(TOP)/mk/boilerplate.mk - -# ----------------------------------------------------------------------------- - -EXAMPLES := $(filter-out ReadImage.hs,$(wildcard *.hs)) -BINS := $(addsuffix $(exeext),$(EXAMPLES:.hs=)) -CLEAN_FILES += $(BINS) - -HC = $(GHC_INPLACE) -MKDEPENDHS = $(GHC_INPLACE) -SRC_HC_OPTS += -Wall -O -package GLUT - -all:: $(BINS) - -USES_READIMAGE = ColorTable Convolution ColorMatrix Histogram Minmax - -.PRECIOUS: ReadImage.o -$(addsuffix .o,$(USES_READIMAGE)): ReadImage.hi -$(addsuffix $(exeext),$(USES_READIMAGE)): ReadImage.o - -$(BINS): %$(exeext): %.o - $(HC) -o $@ $(HC_OPTS) $(LD_OPTS) $< $(patsubst %,ReadImage.o,$(filter $(<:.o=),$(USES_READIMAGE))) - -# ----------------------------------------------------------------------------- - -include $(TOP)/mk/target.mk rmfile ./examples/RedBook/Makefile hunk ./include/Makefile 1 -# ----------------------------------------------------------------------------- - -TOP = ../.. -include $(TOP)/mk/boilerplate.mk - -H_FILES = $(wildcard *.h) - -includedir = $(libdir)/include -INSTALL_INCLUDES = $(H_FILES) - -DIST_CLEAN_FILES += HsGLUT.h HsGLUTConfig.h - -include $(TOP)/mk/target.mk rmfile ./include/Makefile hunk ./prologue.txt 1 -The @GLUT@ package contains a Haskell binding for the OpenGL Utility Toolkit, a -window system independent toolkit for writing OpenGL programs. For more -information about the C library on which this binding is based, please see: -. rmfile ./prologue.txt hunk ./GLUT.cabal 18 - config.guess config.sub install-sh - configure.ac configure GLUT.buildinfo.in - include/HsGLUTConfig.h.in include/HsGLUT.h.in + GLUT.buildinfo.in + README + aclocal.m4 + config.guess + config.sub + configure + configure.ac + examples/BOGLGP/Chapter01/OnYourOwn1.hs + examples/BOGLGP/Chapter01/Simple.hs + examples/BOGLGP/Chapter02/OnYourOwn1.hs + examples/BOGLGP/Chapter02/OpenGLApplication.hs + examples/BOGLGP/Chapter03/Lines.hs + examples/BOGLGP/Chapter03/OnYourOwn1.hs + examples/BOGLGP/Chapter03/Points.hs + examples/BOGLGP/Chapter03/Polygons.hs + examples/BOGLGP/Chapter03/TrianglesQuads.hs + examples/Misc/ARBOcclude.hs + examples/Misc/ExtractContours.hs + examples/Misc/Gears.hs + examples/Misc/Pitfall14.hs + examples/Misc/Triangulate.hs + examples/OrangeBook/3Dlabs-License.txt + examples/OrangeBook/ogl2brick/Brick.frag + examples/OrangeBook/ogl2brick/Brick.hs + examples/OrangeBook/ogl2brick/Brick.vert + examples/RedBook/00-README + examples/RedBook/AAIndex.hs + examples/RedBook/AARGB.hs + examples/RedBook/AccAnti.hs + examples/RedBook/AccPersp.hs + examples/RedBook/Alpha.hs + examples/RedBook/Alpha3D.hs + examples/RedBook/BezCurve.hs + examples/RedBook/BezMesh.hs + examples/RedBook/BezSurf.hs + examples/RedBook/BlendEqn.hs + examples/RedBook/Checker.hs + examples/RedBook/Clip.hs + examples/RedBook/ColorMat.hs + examples/RedBook/ColorMatrix.hs + examples/RedBook/ColorTable.hs + examples/RedBook/Combiner.hs + examples/RedBook/Convolution.hs + examples/RedBook/Cube.hs + examples/RedBook/CubeMap.hs + examples/RedBook/DList.hs + examples/RedBook/DOF.hs + examples/RedBook/Data/leeds.bin + examples/RedBook/Double.hs + examples/RedBook/DrawF.hs + examples/RedBook/Feedback.hs + examples/RedBook/Fog.hs + examples/RedBook/FogCoord.hs + examples/RedBook/FogIndex.hs + examples/RedBook/Font.hs + examples/RedBook/Hello.hs + examples/RedBook/Histogram.hs + examples/RedBook/Image.hs + examples/RedBook/Light.hs + examples/RedBook/Lines.hs + examples/RedBook/MVArray.hs + examples/RedBook/Material.hs + examples/RedBook/Minmax.hs + examples/RedBook/Mipmap.hs + examples/RedBook/Model.hs + examples/RedBook/MoveLight.hs + examples/RedBook/MultiTex.hs + examples/RedBook/Multisamp.hs + examples/RedBook/PickDepth.hs + examples/RedBook/PickSquare.hs + examples/RedBook/Planet.hs + examples/RedBook/PointP.hs + examples/RedBook/PolyOff.hs + examples/RedBook/Polys.hs + examples/RedBook/Quadric.hs + examples/RedBook/ReadImage.hs + examples/RedBook/Robot.hs + examples/RedBook/Scene.hs + examples/RedBook/Select.hs + examples/RedBook/ShadowMap.hs + examples/RedBook/Smooth.hs + examples/RedBook/Stencil.hs + examples/RedBook/Stroke.hs + examples/RedBook/SurfPoints.hs + examples/RedBook/Surface.hs + examples/RedBook/Teapots.hs + examples/RedBook/Tess.hs + examples/RedBook/TessWind.hs + examples/RedBook/TexBind.hs + examples/RedBook/TexGen.hs + examples/RedBook/TexProx.hs + examples/RedBook/TexSub.hs + examples/RedBook/Texture3D.hs + examples/RedBook/TextureSurf.hs + examples/RedBook/Torus.hs + examples/RedBook/Trim.hs + examples/RedBook/UnProject.hs + examples/RedBook/VArray.hs + examples/RedBook/Wrap.hs + include/HsGLUT.h.in + include/HsGLUTConfig.h.in hunk ./GLUT.cabal 120 + install-sh hunk ./GLUT.cabal 2 -version: 2.1.2.1 +version: 2.2.0.0 hunk ./GLUT.cabal 159 - build-depends: OpenGL >= 2.2 + build-depends: OpenGL >= 2.3, StateVar hunk ./Graphics/UI/GLUT/Begin.hs 25 -import Foreign.C.Types ( CInt ) -import Graphics.Rendering.OpenGL.GL.StateVar ( StateVar, makeStateVar ) -import Graphics.UI.GLUT.Constants ( - glut_ACTION_ON_WINDOW_CLOSE, glut_ACTION_EXIT, - glut_ACTION_GLUTMAINLOOP_RETURNS, glut_ACTION_CONTINUE_EXECUTION ) -import Graphics.UI.GLUT.QueryUtils ( simpleGet, glutSetOption ) +import Foreign.C.Types +import Graphics.Rendering.OpenGL +import Graphics.UI.GLUT.Constants +import Graphics.UI.GLUT.QueryUtils hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 24 -import Control.Monad.Fix ( MonadFix(..) ) -import Foreign.C.Types ( CInt, CUInt ) -import Foreign.Ptr ( FunPtr ) -import Graphics.Rendering.OpenGL.GL.CoordTrans ( Position(..) ) -import Graphics.Rendering.OpenGL.GL.StateVar ( - SettableStateVar, makeSettableStateVar ) -import Graphics.UI.GLUT.Constants ( glut_MENU_NOT_IN_USE, glut_MENU_IN_USE ) -import Graphics.UI.GLUT.Callbacks.Registration ( - CallbackType(..), setCallback, registerForCleanup ) +import Control.Monad.Fix +import Foreign.C.Types +import Foreign.Ptr +import Graphics.Rendering.OpenGL +import Graphics.UI.GLUT.Constants +import Graphics.UI.GLUT.Callbacks.Registration hunk ./Graphics/UI/GLUT/Callbacks/Registration.hs 22 -import Control.Monad ( when ) -import Data.IORef ( IORef, newIORef, readIORef, writeIORef, modifyIORef ) +import Control.Monad +import Data.IORef hunk ./Graphics/UI/GLUT/Callbacks/Registration.hs 26 -import Foreign.C.Types ( CInt, CUInt ) -import Foreign.Ptr ( FunPtr, nullFunPtr, freeHaskellFunPtr ) -import System.IO.Unsafe ( unsafePerformIO ) -import Graphics.Rendering.OpenGL.GL.StateVar ( HasGetter(get) ) -import Graphics.UI.GLUT.Window ( Window, currentWindow ) +import Data.StateVar +import Foreign.C.Types +import Foreign.Ptr +import Graphics.UI.GLUT.Window +import System.IO.Unsafe hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 54 -import Data.Bits ( Bits((.&.)) ) -import Data.Char ( chr ) -import Data.Maybe ( fromJust ) -import Foreign.C.Types ( CInt, CUInt, CUChar ) -import Graphics.Rendering.OpenGL.GL.CoordTrans ( Position(..), Size(..) ) -import Graphics.Rendering.OpenGL.GL.StateVar ( - SettableStateVar, makeSettableStateVar ) -import Graphics.UI.GLUT.Callbacks.Registration ( CallbackType(..), setCallback ) -import Graphics.UI.GLUT.Constants ( - glut_NOT_VISIBLE, glut_VISIBLE, - glut_HIDDEN, glut_FULLY_RETAINED, glut_PARTIALLY_RETAINED, glut_FULLY_COVERED, - glut_KEY_F1, glut_KEY_F2, glut_KEY_F3, glut_KEY_F4, glut_KEY_F5, glut_KEY_F6, - glut_KEY_F7, glut_KEY_F8, glut_KEY_F9, glut_KEY_F10, glut_KEY_F11, - glut_KEY_F12, glut_KEY_LEFT, glut_KEY_UP, glut_KEY_RIGHT, glut_KEY_DOWN, - glut_KEY_PAGE_UP, glut_KEY_PAGE_DOWN, glut_KEY_HOME, glut_KEY_END, - glut_KEY_INSERT, glut_KEY_NUM_LOCK, glut_KEY_BEGIN, glut_KEY_DELETE, - glut_DOWN, glut_UP, - glut_ACTIVE_SHIFT, glut_ACTIVE_CTRL, glut_ACTIVE_ALT, - glut_LEFT, glut_ENTERED, - glut_JOYSTICK_BUTTON_A, glut_JOYSTICK_BUTTON_B, - glut_JOYSTICK_BUTTON_C, glut_JOYSTICK_BUTTON_D ) -import Graphics.UI.GLUT.State ( PollRate ) -import Graphics.UI.GLUT.Types ( MouseButton(..), unmarshalMouseButton ) +import Data.Bits hiding ( shift ) +import Data.Char +import Data.Maybe +import Foreign.C.Types +import Graphics.Rendering.OpenGL +import Graphics.UI.GLUT.Callbacks.Registration +import Graphics.UI.GLUT.Constants +import Graphics.UI.GLUT.State +import Graphics.UI.GLUT.Types hunk ./Graphics/UI/GLUT/Colormap.hs 44 -import Foreign.C.Types ( CInt ) -import Graphics.Rendering.OpenGL.GL.BasicTypes ( GLint, GLfloat ) -import Graphics.Rendering.OpenGL.GL.StateVar ( - GettableStateVar, makeGettableStateVar, StateVar, makeStateVar ) -import Graphics.Rendering.OpenGL.GL.VertexSpec ( Color3(..), Index1(..) ) -import Graphics.UI.GLUT.Constants ( - glut_RED, glut_GREEN, glut_BLUE, - glut_WINDOW_COLORMAP_SIZE, glut_TRANSPARENT_INDEX ) -import Graphics.UI.GLUT.QueryUtils ( simpleGet, layerGet ) -import Graphics.UI.GLUT.Window ( Window ) +import Foreign.C.Types +import Graphics.Rendering.OpenGL +import Graphics.UI.GLUT.Constants +import Graphics.UI.GLUT.QueryUtils +import Graphics.UI.GLUT.Window hunk ./Graphics/UI/GLUT/Constants.hs 18 -import Foreign.C.Types ( CInt, CUInt ) -import Graphics.Rendering.OpenGL.GL.BasicTypes ( GLenum ) +import Foreign.C.Types +import Graphics.Rendering.OpenGL hunk ./Graphics/UI/GLUT/Debugging.hs 20 -import System.Environment ( getProgName ) -import System.IO ( hPutStrLn, stderr ) -import Graphics.Rendering.OpenGL.GL.StateVar ( HasGetter(get) ) -import Graphics.Rendering.OpenGL.GLU.Errors ( Error(..), errors ) +import System.Environment +import System.IO +import Graphics.Rendering.OpenGL hunk ./Graphics/UI/GLUT/DeviceControl.hs 22 -import Foreign.C.Types ( CInt ) -import Graphics.Rendering.OpenGL.GL.StateVar ( StateVar, makeStateVar ) -import Graphics.UI.GLUT.Constants ( - glut_KEY_REPEAT_OFF, glut_KEY_REPEAT_ON, glut_KEY_REPEAT_DEFAULT, - glut_DEVICE_KEY_REPEAT, glut_DEVICE_IGNORE_KEY_REPEAT ) -import Graphics.UI.GLUT.QueryUtils ( deviceGet ) +import Foreign.C.Types +import Graphics.Rendering.OpenGL +import Graphics.UI.GLUT.Constants +import Graphics.UI.GLUT.QueryUtils hunk ./Graphics/UI/GLUT/Fonts.hs 25 -import Data.Char ( ord ) -import Foreign.C.String ( CString, withCString ) -import Foreign.C.Types ( CInt ) -import Foreign.Ptr ( Ptr ) -import Graphics.Rendering.OpenGL.GL.BasicTypes ( GLint, GLfloat ) +import Data.Char +import Foreign.C.String +import Foreign.C.Types +import Foreign.Ptr +import Graphics.Rendering.OpenGL hunk ./Graphics/UI/GLUT/GameMode.hs 33 -import Data.List ( intersperse ) -import Foreign.C.String ( CString, withCString ) -import Foreign.C.Types ( CInt ) -import Graphics.Rendering.OpenGL.GL.BasicTypes ( GLenum ) -import Graphics.Rendering.OpenGL.GL.CoordTrans ( Size(..) ) -import Graphics.Rendering.OpenGL.GL.StateVar ( - GettableStateVar, makeGettableStateVar, - SettableStateVar, makeSettableStateVar ) -import Graphics.UI.GLUT.Constants ( - glut_GAME_MODE_DISPLAY_CHANGED, glut_GAME_MODE_POSSIBLE, - glut_GAME_MODE_WIDTH, glut_GAME_MODE_HEIGHT, - glut_GAME_MODE_PIXEL_DEPTH, glut_GAME_MODE_REFRESH_RATE, - glut_GAME_MODE_ACTIVE ) -import Graphics.UI.GLUT.Types ( makeWindow, relationToString ) -import Graphics.UI.GLUT.Window ( Window ) -import Graphics.UI.GLUT.Initialization ( Relation(..) ) +import Data.List +import Foreign.C.String +import Foreign.C.Types +import Graphics.Rendering.OpenGL +import Graphics.UI.GLUT.Constants +import Graphics.UI.GLUT.Types +import Graphics.UI.GLUT.Window +import Graphics.UI.GLUT.Initialization hunk ./Graphics/UI/GLUT/Initialization.hs 51 -import Control.Monad ( when ) -import Data.Bits ( Bits((.|.),(.&.)), complement ) -import Data.List ( genericLength, intersperse, mapAccumR ) -import Foreign.C.String ( CString, withCString, peekCString ) -import Foreign.C.Types ( CInt, CUInt ) -import Foreign.Marshal.Array ( withArray0, peekArray ) -import Foreign.Marshal.Utils ( with, withMany ) -import Foreign.Ptr ( Ptr, nullPtr, nullFunPtr ) -import Foreign.Storable ( Storable(..) ) -import System.Environment ( getProgName, getArgs ) -import Graphics.Rendering.OpenGL.GL.CoordTrans ( Position(..), Size(..) ) -import Graphics.Rendering.OpenGL.GL.StateVar ( - GettableStateVar, makeGettableStateVar, - SettableStateVar, makeSettableStateVar, - StateVar, makeStateVar, HasGetter(..), HasSetter(..) ) -import Graphics.UI.GLUT.Constants ( - glut_INIT_WINDOW_X, glut_INIT_WINDOW_Y, - glut_INIT_WINDOW_WIDTH, glut_INIT_WINDOW_HEIGHT, - glut_RGBA, glut_RGB, glut_INDEX, glut_LUMINANCE, - glut_ALPHA, glut_ACCUM, glut_DEPTH, glut_STENCIL, - glut_AUX1, glut_AUX2, glut_AUX3, glut_AUX4, - glut_SINGLE, glut_DOUBLE, glut_MULTISAMPLE, glut_STEREO, - glut_CAPTIONLESS, glut_BORDERLESS, - glut_INIT_DISPLAY_MODE, - glut_DISPLAY_MODE_POSSIBLE, - glut_RENDERING_CONTEXT, glut_CREATE_NEW_CONTEXT, glut_USE_CURRENT_CONTEXT, - glut_DIRECT_RENDERING, - glut_FORCE_INDIRECT_CONTEXT, glut_ALLOW_DIRECT_CONTEXT, - glut_TRY_DIRECT_CONTEXT, glut_FORCE_DIRECT_CONTEXT, - glut_INIT_MAJOR_VERSION, glut_INIT_MINOR_VERSION, - glut_DEBUG, glut_FORWARD_COMPATIBLE, glut_INIT_FLAGS ) +import Control.Monad +import Data.Bits +import Data.List +import Foreign.C.String +import Foreign.C.Types +import Foreign.Marshal.Array +import Foreign.Marshal.Utils +import Foreign.Ptr +import Foreign.Storable +import System.Environment +import Graphics.Rendering.OpenGL +import Graphics.UI.GLUT.Constants hunk ./Graphics/UI/GLUT/Initialization.hs 64 -import Graphics.UI.GLUT.QueryUtils ( simpleGet, glutSetOption ) -import Graphics.UI.GLUT.Types ( Relation(..), relationToString ) +import Graphics.UI.GLUT.QueryUtils +import Graphics.UI.GLUT.Types hunk ./Graphics/UI/GLUT/Menu.hs 25 -import Data.Array ( listArray, (!) ) -import Data.IORef ( IORef, newIORef, readIORef, modifyIORef ) +import Data.Array +import Data.IORef hunk ./Graphics/UI/GLUT/Menu.hs 29 -import Foreign.C.String ( CString, withCString ) -import Foreign.C.Types ( CInt ) -import Foreign.Ptr ( FunPtr, freeHaskellFunPtr ) -import Control.Monad ( unless, zipWithM, when ) -import System.IO.Unsafe ( unsafePerformIO ) -import Graphics.Rendering.OpenGL.GL.StateVar ( - HasGetter(get), HasSetter(($=)), - GettableStateVar, makeGettableStateVar, - StateVar, makeStateVar ) -import Graphics.UI.GLUT.Constants ( glut_MENU_NUM_ITEMS ) -import Graphics.UI.GLUT.QueryUtils ( simpleGet ) -import Graphics.UI.GLUT.Types ( marshalMouseButton ) -import Graphics.UI.GLUT.Window ( Window ) -import Graphics.UI.GLUT.Callbacks.Registration ( getCurrentWindow ) -import Graphics.UI.GLUT.Callbacks.Window ( MouseButton ) +import Foreign.C.String +import Foreign.C.Types +import Foreign.Ptr +import Control.Monad +import System.IO.Unsafe +import Graphics.Rendering.OpenGL +import Graphics.UI.GLUT.Constants +import Graphics.UI.GLUT.QueryUtils +import Graphics.UI.GLUT.Types +import Graphics.UI.GLUT.Window +import Graphics.UI.GLUT.Callbacks.Registration +import Graphics.UI.GLUT.Callbacks.Window hunk ./Graphics/UI/GLUT/Objects.hs 36 -import Foreign.C.Types ( CInt ) -import Foreign.Marshal.Utils ( with ) -import Foreign.Ptr ( Ptr ) -import Graphics.Rendering.OpenGL.GL.BasicTypes ( GLint, GLdouble ) -import Graphics.Rendering.OpenGL.GL.VertexSpec ( Vertex3(..) ) -import Graphics.Rendering.OpenGL.GLU.Quadrics ( Radius, Height, Slices, Stacks ) +import Foreign.C.Types +import Foreign.Marshal.Utils +import Foreign.Ptr +import Graphics.Rendering.OpenGL hunk ./Graphics/UI/GLUT/Overlay.hs 33 -import Graphics.Rendering.OpenGL.GL.BasicTypes ( GLenum ) -import Graphics.Rendering.OpenGL.GL.StateVar ( - GettableStateVar, makeGettableStateVar, - SettableStateVar, makeSettableStateVar, - StateVar, makeStateVar ) -import Graphics.UI.GLUT.Constants ( - glut_OVERLAY_POSSIBLE, glut_HAS_OVERLAY, glut_NORMAL, glut_OVERLAY, - glut_LAYER_IN_USE ) -import Graphics.UI.GLUT.QueryUtils ( layerGet ) -#ifdef __NHC__ -import NHC.FFI ( CInt ) -#endif -import Graphics.UI.GLUT.Window ( Window ) +import Graphics.Rendering.OpenGL +import Graphics.UI.GLUT.Constants +import Graphics.UI.GLUT.QueryUtils +import Graphics.UI.GLUT.Window hunk ./Graphics/UI/GLUT/QueryUtils.hs 20 -import Foreign.C.Types ( CInt ) -import Graphics.Rendering.OpenGL.GL.BasicTypes ( GLenum ) +import Foreign.C.Types hunk ./Graphics/UI/GLUT/QueryUtils.hs 22 +import Graphics.Rendering.OpenGL hunk ./Graphics/UI/GLUT/State.hs 50 -import Control.Monad ( unless ) -import Foreign.C.Types ( CInt ) -import Foreign.Marshal.Alloc ( alloca ) -import Foreign.Marshal.Array ( peekArray ) -import Foreign.Ptr ( Ptr, nullFunPtr ) -import Foreign.Storable ( Storable(..) ) -import Graphics.Rendering.OpenGL.GL.BasicTypes ( GLenum ) -import Graphics.Rendering.OpenGL.GL.CoordTrans ( Size(..) ) -import Graphics.Rendering.OpenGL.GL.StateVar ( - StateVar, makeStateVar, GettableStateVar, makeGettableStateVar ) -import Graphics.UI.GLUT.Constants ( - glut_WINDOW_RGBA, - glut_WINDOW_RED_SIZE, glut_WINDOW_GREEN_SIZE, glut_WINDOW_BLUE_SIZE, - glut_WINDOW_ALPHA_SIZE, glut_WINDOW_BUFFER_SIZE, - glut_WINDOW_DOUBLEBUFFER, glut_WINDOW_STEREO, - glut_WINDOW_ACCUM_RED_SIZE, glut_WINDOW_ACCUM_GREEN_SIZE, - glut_WINDOW_ACCUM_BLUE_SIZE, glut_WINDOW_ACCUM_ALPHA_SIZE, - glut_WINDOW_DEPTH_SIZE, glut_WINDOW_STENCIL_SIZE, glut_WINDOW_NUM_SAMPLES, - glut_WINDOW_FORMAT_ID, glut_ELAPSED_TIME, - glut_NORMAL_DAMAGED, glut_OVERLAY_DAMAGED, - glut_SCREEN_WIDTH, glut_SCREEN_HEIGHT, - glut_SCREEN_WIDTH_MM, glut_SCREEN_HEIGHT_MM, - glut_FULL_SCREEN, - glut_HAS_KEYBOARD, - glut_HAS_MOUSE, glut_NUM_MOUSE_BUTTONS, - glut_HAS_SPACEBALL, glut_NUM_SPACEBALL_BUTTONS, - glut_HAS_DIAL_AND_BUTTON_BOX, glut_NUM_DIALS, glut_NUM_BUTTON_BOX_BUTTONS, - glut_HAS_TABLET, glut_NUM_TABLET_BUTTONS, - glut_HAS_JOYSTICK, glut_JOYSTICK_BUTTONS, glut_JOYSTICK_POLL_RATE, - glut_JOYSTICK_AXES, - glut_AUX, glut_MULTISAMPLE, - glut_VERSION, glut_WINDOW_BORDER_WIDTH, glut_WINDOW_HEADER_HEIGHT, - glut_INIT_STATE ) -import Graphics.UI.GLUT.Overlay ( Layer(..) ) -import Graphics.UI.GLUT.QueryUtils ( simpleGet, layerGet, deviceGet ) -import Graphics.UI.GLUT.Window ( fullScreenToggle ) +import Control.Monad +import Foreign.C.Types +import Foreign.Marshal.Alloc +import Foreign.Marshal.Array +import Foreign.Ptr +import Foreign.Storable +import Graphics.Rendering.OpenGL +import Graphics.UI.GLUT.Constants +import Graphics.UI.GLUT.Overlay +import Graphics.UI.GLUT.QueryUtils +import Graphics.UI.GLUT.Window hunk ./Graphics/UI/GLUT/Window.hs 55 -import Foreign.C.String ( CString, withCString ) -import Foreign.C.Types ( CInt ) -import Graphics.Rendering.OpenGL.GL.CoordTrans ( Position(..), Size(..) ) -import Graphics.Rendering.OpenGL.GL.StateVar ( - GettableStateVar, makeGettableStateVar, - SettableStateVar, makeSettableStateVar, - StateVar, makeStateVar ) -import Graphics.UI.GLUT.Constants ( - glut_WINDOW_PARENT, glut_WINDOW_NUM_CHILDREN, - glut_WINDOW_X, glut_WINDOW_Y, glut_WINDOW_WIDTH, glut_WINDOW_HEIGHT, - glut_CURSOR_RIGHT_ARROW, glut_CURSOR_LEFT_ARROW, glut_CURSOR_INFO, - glut_CURSOR_DESTROY, glut_CURSOR_HELP, glut_CURSOR_CYCLE, glut_CURSOR_SPRAY, - glut_CURSOR_WAIT, glut_CURSOR_TEXT, glut_CURSOR_CROSSHAIR, - glut_CURSOR_UP_DOWN, glut_CURSOR_LEFT_RIGHT, glut_CURSOR_TOP_SIDE, - glut_CURSOR_BOTTOM_SIDE, glut_CURSOR_LEFT_SIDE, glut_CURSOR_RIGHT_SIDE, - glut_CURSOR_TOP_LEFT_CORNER, glut_CURSOR_TOP_RIGHT_CORNER, - glut_CURSOR_BOTTOM_RIGHT_CORNER, glut_CURSOR_BOTTOM_LEFT_CORNER, - glut_CURSOR_INHERIT, glut_CURSOR_NONE, glut_CURSOR_FULL_CROSSHAIR, - glut_WINDOW_CURSOR ) +import Data.StateVar +import Foreign.C.String +import Foreign.C.Types +import Graphics.Rendering.OpenGL.GL.CoordTrans +import Graphics.UI.GLUT.Constants hunk ./Graphics/UI/GLUT/Window.hs 61 -import Graphics.UI.GLUT.QueryUtils ( simpleGet ) -import Graphics.UI.GLUT.Types ( Window, makeWindow ) +import Graphics.UI.GLUT.QueryUtils +import Graphics.UI.GLUT.Types hunk ./examples/Misc/Triangulate.hs 83 +-- CFloat has no Random instance, so we go via Float +randomGLfloat :: IO GLfloat +randomGLfloat = fmap (realToFrac :: Float -> GLfloat) randomIO + hunk ./examples/Misc/Triangulate.hs 89 - r <- randomIO - g <- randomIO - b <- randomIO - -- resolve overloading, not needed in "real" programs - let color3f = color :: Color3 GLfloat -> IO () - color3f (Color3 r g b) + r <- randomGLfloat + g <- randomGLfloat + b <- randomGLfloat + color (Color3 r g b) hunk ./examples/RedBook/PickSquare.hs 17 -type Board = Array (GLint,GLint) (IORef Int) +type Board = Array (Int,Int) (IORef Int) hunk ./examples/RedBook/PickSquare.hs 49 - rect (Vertex2 i j) (Vertex2 (i + 1) (j + 1)) + let vertex2i :: Int -> Int -> Vertex2 GLint + vertex2i x y = Vertex2 (fromIntegral x) (fromIntegral y) + rect (vertex2i i j) (vertex2i (i + 1) (j + 1)) hunk ./examples/RedBook/PointP.hs 44 +-- CFloat has no Random instance, so we go via Float +randomGLfloat :: (GLfloat, GLfloat) -> IO GLfloat +randomGLfloat = fmap floatToGLfloat . randomRIO . fmapPair glFloatToFloat + where fmapPair f (x, y) = (f x, f y) + floatToGLfloat = realToFrac :: Float -> GLfloat + glFloatToFloat = realToFrac :: GLfloat -> Float + hunk ./examples/RedBook/PointP.hs 53 - g <- randomRIO (0.5, 1) - b <- randomRIO (0, 1) + g <- randomGLfloat (0.5, 1) + b <- randomGLfloat (0, 1) hunk ./examples/RedBook/PointP.hs 59 - x <- randomRIO (-5, 5) - y <- randomRIO (-5, 5) - z <- randomRIO (-5, -45) + x <- randomGLfloat (-5, 5) + y <- randomGLfloat (-5, 5) + z <- randomGLfloat (-5, -45) hunk ./examples/RedBook/MultiTex.hs 100 - exts <- get glExtensions - unless ("GL_ARB_multitexture" `elem` exts && - "GL_EXT_texture_object" `elem` exts) $ do - putStrLn "Sorry, this demo requires the GL_ARB_multitexture and GL_EXT_texture_object extensions." - exitFailure + version <- get (majorMinor glVersion) + unless (version >= (1, 3)) $ do + exts <- get glExtensions + unless ("GL_ARB_multitexture" `elem` exts && -- part of 1.3 core + "GL_EXT_texture_object" `elem` exts) $ do -- part of 1.1 core + putStrLn "Sorry, this demo requires the GL_ARB_multitexture and GL_EXT_texture_object extensions." + exitFailure hunk ./examples/RedBook/SurfPoints.hs 25 -import System.Exit ( exitWith, ExitCode(ExitSuccess), exitFailure ) +import System.Exit ( exitWith, ExitCode(ExitSuccess) ) hunk ./examples/RedBook/SurfPoints.hs 123 - exitFailure + putStrLn "Continuing anyway..." hunk ./Graphics/UI/GLUT/Begin.hs 25 +import Data.StateVar hunk ./Graphics/UI/GLUT/Begin.hs 27 -import Graphics.Rendering.OpenGL hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 25 +import Data.StateVar hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 28 -import Graphics.Rendering.OpenGL +import Graphics.Rendering.OpenGL ( Position(..) ) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 57 +import Data.StateVar hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 59 -import Graphics.Rendering.OpenGL +import Graphics.Rendering.OpenGL ( Position(..), Size(..) ) hunk ./Graphics/UI/GLUT/Colormap.hs 44 +import Data.StateVar hunk ./Graphics/UI/GLUT/Colormap.hs 46 -import Graphics.Rendering.OpenGL +import Graphics.Rendering.OpenGL ( GLfloat, GLint, Color3(..), Index1(..) ) hunk ./Graphics/UI/GLUT/Constants.hs 19 -import Graphics.Rendering.OpenGL +import Graphics.Rendering.OpenGL ( GLenum ) hunk ./Graphics/UI/GLUT/Debugging.hs 20 +import Data.StateVar hunk ./Graphics/UI/GLUT/Debugging.hs 23 -import Graphics.Rendering.OpenGL +import Graphics.Rendering.OpenGL ( Error(..), errors ) hunk ./Graphics/UI/GLUT/DeviceControl.hs 22 +import Data.StateVar hunk ./Graphics/UI/GLUT/DeviceControl.hs 24 -import Graphics.Rendering.OpenGL hunk ./Graphics/UI/GLUT/Fonts.hs 29 -import Graphics.Rendering.OpenGL +import Graphics.Rendering.OpenGL ( GLint, GLfloat ) hunk ./Graphics/UI/GLUT/GameMode.hs 34 +import Data.StateVar hunk ./Graphics/UI/GLUT/GameMode.hs 37 -import Graphics.Rendering.OpenGL +import Graphics.Rendering.OpenGL ( GLenum, Size(..) ) hunk ./Graphics/UI/GLUT/Initialization.hs 54 +import Data.StateVar hunk ./Graphics/UI/GLUT/Initialization.hs 62 -import Graphics.Rendering.OpenGL +import Graphics.Rendering.OpenGL ( Position(..), Size(..) ) hunk ./Graphics/UI/GLUT/Menu.hs 29 +import Data.StateVar hunk ./Graphics/UI/GLUT/Menu.hs 35 -import Graphics.Rendering.OpenGL hunk ./Graphics/UI/GLUT/Objects.hs 39 -import Graphics.Rendering.OpenGL +import Graphics.Rendering.OpenGL ( Height, Radius, Slices, Stacks, GLint, GLdouble, Vertex3(..) ) hunk ./Graphics/UI/GLUT/Overlay.hs 33 -import Graphics.Rendering.OpenGL +import Data.StateVar +import Graphics.Rendering.OpenGL ( GLenum ) hunk ./Graphics/UI/GLUT/QueryUtils.hs 21 +import Graphics.Rendering.OpenGL ( GLenum ) hunk ./Graphics/UI/GLUT/QueryUtils.hs 23 -import Graphics.Rendering.OpenGL hunk ./Graphics/UI/GLUT/State.hs 51 +import Data.StateVar hunk ./Graphics/UI/GLUT/State.hs 57 -import Graphics.Rendering.OpenGL +import Graphics.Rendering.OpenGL ( GLenum, Size(..) ) hunk ./Graphics/UI/GLUT/Window.hs 58 -import Graphics.Rendering.OpenGL.GL.CoordTrans +import Graphics.Rendering.OpenGL ( Position(..), Size(..) ) hunk ./GLUT.cabal 159 - build-depends: OpenGL >= 2.3, StateVar + build-depends: OpenGL >= 2.3, StateVar, Tensor hunk ./Graphics/UI/GLUT/Objects.hs 36 +import Data.Tensor hunk ./Graphics/UI/GLUT/Objects.hs 40 -import Graphics.Rendering.OpenGL ( Height, Radius, Slices, Stacks, GLint, GLdouble, Vertex3(..) ) +import Graphics.Rendering.OpenGL ( Height, Radius, Slices, Stacks, GLint, GLdouble ) addfile ./examples/Misc/SmoothOpenGL3.hs hunk ./examples/Misc/SmoothOpenGL3.hs 1 +{- + SmoothOpenGL3.hs (adapted from freeglut's smooth_opengl3.c example) + Copyright (c) Sven Panne 2009 + This file is part of HOpenGL and distributed under a BSD-style license + See the file LICENSE +-} + +import Control.Monad +import Data.List +import Foreign.Marshal.Array +import Foreign.Ptr +import Foreign.Storable +import Graphics.Rendering.OpenGL.Raw.Core31 +import Graphics.UI.GLUT +import System.Exit +import System.IO + +data State = State { + vertexBufferName :: BufferObject, + fgProjectionMatrixIndex :: UniformLocation, + fgColorIndex :: AttribLocation , + fgVertexIndex :: AttribLocation, + projectionMatrix :: GLmatrix GLfloat } + +checkError :: String -> IO () +checkError functionName = get errors >>= mapM_ reportError + where reportError e = + hPutStrLn stderr (showError e ++ " detected in " ++ functionName) + showError (Error category message) = + "GL error" ++ show category ++ " (" ++ message ++ ")" + +varray :: [GLfloat] +varray = [ + 1, 0, 0, -- red + 5, 5, -- lower left + + 0, 1, 0, -- green + 25, 5, -- lower right + + 0, 0, 1, -- blue + 5, 25 ] -- upper left + +numColorComponents :: NumComponents +numColorComponents = 3 + +numVertexComponents :: NumComponents +numVertexComponents = 2 + +sizeOfComponent :: Int +sizeOfComponent = sizeOf (head varray) + +stride :: Stride +stride = fromIntegral sizeOfComponent * fromIntegral (numColorComponents + numVertexComponents) + +sizeOfVarray :: Int +sizeOfVarray = length varray * sizeOfComponent + +numElements :: NumArrayIndices +numElements = fromIntegral sizeOfVarray `div` fromIntegral stride + +initBuffer :: IO BufferObject +initBuffer = do + [bufferObject] <- genObjectNames 1 + bindBuffer ArrayBuffer $= Just bufferObject + withArray varray $ \buffer -> + bufferData ArrayBuffer $= (fromIntegral sizeOfVarray, buffer, StaticDraw) + checkError "initBuffer" + return bufferObject + +vertexShaderSource :: String +vertexShaderSource = unlines [ + "#version 140", + "uniform mat4 fg_ProjectionMatrix;", + "in vec4 fg_Color;", + "in vec4 fg_Vertex;", + "smooth out vec4 fg_SmoothColor;", + "void main()", + "{", + " fg_SmoothColor = fg_Color;", + " gl_Position = fg_ProjectionMatrix * fg_Vertex;", + "}" ] + +fragmentShaderSource :: String +fragmentShaderSource = unlines [ + "#version 140", + "smooth in vec4 fg_SmoothColor;", + "out vec4 fg_FragColor;", + "void main(void)", + "{", + " fg_FragColor = fg_SmoothColor;", + "}" ] + +checked :: (t -> IO ()) -> (t -> GettableStateVar Bool) -> (t -> GettableStateVar String) -> String -> t -> IO () +checked action getStatus getInfoLog message object = do + action object + status <- get (getStatus object) + unless status $ + hPutStrLn stderr . ((message ++ " log: ") ++) =<< get (getInfoLog object) + +compileAndCheck :: Shader s => s -> IO () +compileAndCheck = checked compileShader compileStatus shaderInfoLog "compile" + +compileShaderSource :: Shader s => [String] -> IO s +compileShaderSource source = do + [shader] <- genObjectNames 1 + shaderSource shader $= source + compileAndCheck shader + return shader + +linkAndCheck :: Program -> IO () +linkAndCheck = checked linkProgram linkStatus programInfoLog "link" + +createProgram :: [VertexShader] -> [FragmentShader] -> IO Program +createProgram vertexShaders fragmentShaders = do + [program] <- genObjectNames 1 + attachedShaders program $= (vertexShaders, fragmentShaders) + linkAndCheck program + return program + +initShader :: IO (UniformLocation, AttribLocation, AttribLocation) +initShader = do + vertexShader <- compileShaderSource [vertexShaderSource] + fragmentShader <- compileShaderSource [fragmentShaderSource] + program <- createProgram [vertexShader] [fragmentShader] + currentProgram $= Just program + + projectionMatrixIndex <- get (uniformLocation program "fg_ProjectionMatrix") + + colorIndex <- get (attribLocation program "fg_Color") + vertexAttribArray colorIndex $= Enabled + + vertexIndex <- get (attribLocation program "fg_Vertex") + vertexAttribArray vertexIndex $= Enabled + + checkError "initShader" + return (projectionMatrixIndex, colorIndex, vertexIndex) + +initRendering :: IO () +initRendering = do + clearColor $= Color4 0 0 0 0 + checkError "initRendering" + +myInit :: IO State +myInit = do + bufferObject <- initBuffer + (projectionMatrixIndex, colorIndex, vertexIndex) <- initShader + initRendering + m <- newMatrix ColumnMajor (replicate 16 0) + return $ State { + vertexBufferName = bufferObject, + fgProjectionMatrixIndex = projectionMatrixIndex, + fgColorIndex = colorIndex, + fgVertexIndex = vertexIndex, + projectionMatrix = m } + +dumpInfo :: IO () +dumpInfo = do + let dump message var = putStrLn . ((message ++ ": ") ++) =<< get var + dump "Vendor" vendor + dump "Renderer" renderer + dump "Version" glVersion + dump "GLSL" shadingLanguageVersion + checkError "dumpInfo" + +bufferObjectPtr :: Integral a => a -> Ptr b +bufferObjectPtr = plusPtr (nullPtr :: Ptr GLchar) . fromIntegral + +vertexArrayDescriptor :: NumComponents -> NumComponents -> VertexArrayDescriptor a +vertexArrayDescriptor count offset = + VertexArrayDescriptor count Float stride (bufferObjectPtr (fromIntegral sizeOfComponent * offset)) + +triangle :: State -> IO () +triangle state = do + withMatrix (projectionMatrix state) $ \order buffer -> + uniformMatrix4fv (fgProjectionMatrixIndex state) 1 (order == RowMajor) buffer + bindBuffer ArrayBuffer $= Just (vertexBufferName state) + vertexAttribPointer (fgColorIndex state) $= + (ToFloat, vertexArrayDescriptor numColorComponents 0) + vertexAttribPointer (fgVertexIndex state) $= + (ToFloat, vertexArrayDescriptor numVertexComponents numColorComponents) + drawArrays Triangles 0 numElements + checkError "triangle" + +-- The OpenGL package offers no interface for glUniformMatrix*fv yet +uniformMatrix4fv :: UniformLocation -> GLsizei -> Bool -> Ptr GLfloat -> IO () +uniformMatrix4fv location count = + glUniformMatrix4fv (uniformLocationToGLint location) count . marshalGLboolean + where marshalGLboolean x = fromIntegral $ case x of + False -> gl_FALSE + True -> gl_TRUE + -- MEGA HACK because UniformLocation is abstract + uniformLocationToGLint = read . head . tail . words . show + +display :: State -> DisplayCallback +display state = do + clear [ ColorBuffer ] + triangle state + flush + checkError "display" + +loadOrtho :: (Matrix m, MatrixComponent a, Fractional a) => m a -> a -> a -> a -> a -> a -> a -> IO () +loadOrtho m l r b t n f = + fillMatrix m [ + [2 / (r - l), + 0, + 0, + 0], + + [0, + 2 / (t - b), + 0, + 0], + + [0, + 0, + -2 / (f - n), + 0], + + [-(r + l) / (r - l), + -(t + b) / (t - b), + -(f + n) / (f - n), + 1 ]] + +fillMatrix :: (Matrix m, MatrixComponent a) => m a -> [[a]] -> IO () +fillMatrix m xs = + withMatrix m $ \order buffer -> + pokeArray buffer . concat . rearrange order $ xs + +rearrange :: MatrixOrder -> [[a]] -> [[a]] +rearrange ColumnMajor = id +rearrange RowMajor = transpose + +loadOrtho2D :: (Matrix m, MatrixComponent a, Fractional a) => m a -> a -> a -> a -> a -> IO () +loadOrtho2D m l r b t = loadOrtho m l r b t (-1) 1 + +reshape :: State -> ReshapeCallback +reshape state size@(Size w h) = do + viewport $= (Position 0 0, size) + let wf = fromIntegral w + hf = fromIntegral h + if w <= h + then loadOrtho2D (projectionMatrix state) 0 30 0 (30 * hf / wf) + else loadOrtho2D (projectionMatrix state) 0 (30 * wf / hf) 0 30 + checkError "reshape" + +keyboard :: KeyboardMouseCallback +keyboard (Char '\27') Down _ _ = exitWith ExitSuccess +keyboard _ _ _ _ = return () + +main :: IO () +main = do + (progName, args) <- getArgsAndInitialize + initialDisplayMode $= [ SingleBuffered, RGBMode ] + -- add command line argument "classic" for a pre-3.x context + unless (args == ["classic"]) $ do + initialContextVersion $= (3, 1) + initialContextFlags $= [ ForwardCompatibleContext, DebugContext ] + initialWindowSize $= Size 500 500 + initialWindowPosition $= Position 100 100 + createWindow progName + dumpInfo + state <- myInit + displayCallback $= display state + reshapeCallback $= Just (reshape state) + keyboardMouseCallback $= Just keyboard + mainLoop hunk ./GLUT.cabal 38 + examples/Misc/SmoothOpenGL3.hs hunk ./GLUT.cabal 157 - build-depends: base >= 3, array, containers + build-depends: base >= 3 && <5, array, containers hunk ./GLUT.cabal 159 - build-depends: base < 3 + build-depends: base < 3 hunk ./GLUT.buildinfo.in 1 --- @configure_input@ --- System-dependent values used by Distribution.Simple.defaultUserHooks --- -buildable: @BUILD_PACKAGE_BOOL@ -ghc-options: -DCALLCONV=@CALLCONV@ -cc-options: -DCALLCONV=@CALLCONV@ @GLUT_CFLAGS@ -ld-options: @GLUT_LIBS@ -frameworks: @GLUT_FRAMEWORKS@ rmfile ./GLUT.buildinfo.in hunk ./GLUT.cabal 1 -name: GLUT -version: 2.2.0.0 -license: BSD3 -license-file: LICENSE -maintainer: Sven Panne -bug-reports: mailto:hopengl@haskell.org -homepage: http://www.haskell.org/HOpenGL/ -category: Graphics -synopsis: A binding for the OpenGL Utility Toolkit +name: GLUT +version: 2.2.0.1 +license: BSD3 +license-file: LICENSE +maintainer: Sven Panne +bug-reports: mailto:hopengl@haskell.org +homepage: http://www.haskell.org/HOpenGL/ +category: Graphics +synopsis: A binding for the OpenGL Utility Toolkit hunk ./GLUT.cabal 11 - A Haskell binding for the OpenGL Utility Toolkit, a window - system independent toolkit for writing OpenGL programs. For more - information about the C library on which this binding is based, - please see: . -build-type: Configure -cabal-version: >=1.2 + A Haskell binding for the OpenGL Utility Toolkit, a window system independent + toolkit for writing OpenGL programs. For more information about the C library + on which this binding is based, please see: + . +build-type: Simple +cabal-version: >=1.2 hunk ./GLUT.cabal 18 - GLUT.buildinfo.in - README - aclocal.m4 - config.guess - config.sub - configure - configure.ac - examples/BOGLGP/Chapter01/OnYourOwn1.hs - examples/BOGLGP/Chapter01/Simple.hs - examples/BOGLGP/Chapter02/OnYourOwn1.hs - examples/BOGLGP/Chapter02/OpenGLApplication.hs - examples/BOGLGP/Chapter03/Lines.hs - examples/BOGLGP/Chapter03/OnYourOwn1.hs - examples/BOGLGP/Chapter03/Points.hs - examples/BOGLGP/Chapter03/Polygons.hs - examples/BOGLGP/Chapter03/TrianglesQuads.hs - examples/Misc/ARBOcclude.hs - examples/Misc/ExtractContours.hs - examples/Misc/Gears.hs - examples/Misc/Pitfall14.hs - examples/Misc/SmoothOpenGL3.hs - examples/Misc/Triangulate.hs - examples/OrangeBook/3Dlabs-License.txt - examples/OrangeBook/ogl2brick/Brick.frag - examples/OrangeBook/ogl2brick/Brick.hs - examples/OrangeBook/ogl2brick/Brick.vert - examples/RedBook/00-README - examples/RedBook/AAIndex.hs - examples/RedBook/AARGB.hs - examples/RedBook/AccAnti.hs - examples/RedBook/AccPersp.hs - examples/RedBook/Alpha.hs - examples/RedBook/Alpha3D.hs - examples/RedBook/BezCurve.hs - examples/RedBook/BezMesh.hs - examples/RedBook/BezSurf.hs - examples/RedBook/BlendEqn.hs - examples/RedBook/Checker.hs - examples/RedBook/Clip.hs - examples/RedBook/ColorMat.hs - examples/RedBook/ColorMatrix.hs - examples/RedBook/ColorTable.hs - examples/RedBook/Combiner.hs - examples/RedBook/Convolution.hs - examples/RedBook/Cube.hs - examples/RedBook/CubeMap.hs - examples/RedBook/DList.hs - examples/RedBook/DOF.hs - examples/RedBook/Data/leeds.bin - examples/RedBook/Double.hs - examples/RedBook/DrawF.hs - examples/RedBook/Feedback.hs - examples/RedBook/Fog.hs - examples/RedBook/FogCoord.hs - examples/RedBook/FogIndex.hs - examples/RedBook/Font.hs - examples/RedBook/Hello.hs - examples/RedBook/Histogram.hs - examples/RedBook/Image.hs - examples/RedBook/Light.hs - examples/RedBook/Lines.hs - examples/RedBook/MVArray.hs - examples/RedBook/Material.hs - examples/RedBook/Minmax.hs - examples/RedBook/Mipmap.hs - examples/RedBook/Model.hs - examples/RedBook/MoveLight.hs - examples/RedBook/MultiTex.hs - examples/RedBook/Multisamp.hs - examples/RedBook/PickDepth.hs - examples/RedBook/PickSquare.hs - examples/RedBook/Planet.hs - examples/RedBook/PointP.hs - examples/RedBook/PolyOff.hs - examples/RedBook/Polys.hs - examples/RedBook/Quadric.hs - examples/RedBook/ReadImage.hs - examples/RedBook/Robot.hs - examples/RedBook/Scene.hs - examples/RedBook/Select.hs - examples/RedBook/ShadowMap.hs - examples/RedBook/Smooth.hs - examples/RedBook/Stencil.hs - examples/RedBook/Stroke.hs - examples/RedBook/SurfPoints.hs - examples/RedBook/Surface.hs - examples/RedBook/Teapots.hs - examples/RedBook/Tess.hs - examples/RedBook/TessWind.hs - examples/RedBook/TexBind.hs - examples/RedBook/TexGen.hs - examples/RedBook/TexProx.hs - examples/RedBook/TexSub.hs - examples/RedBook/Texture3D.hs - examples/RedBook/TextureSurf.hs - examples/RedBook/Torus.hs - examples/RedBook/Trim.hs - examples/RedBook/UnProject.hs - examples/RedBook/VArray.hs - examples/RedBook/Wrap.hs - include/HsGLUT.h.in - include/HsGLUTConfig.h.in - include/HsGLUTExt.h - install-sh -extra-tmp-files: - config.log config.status autom4te.cache - GLUT.buildinfo include/HsGLUTConfig.h include/HsGLUT.h + README + examples/BOGLGP/Chapter01/OnYourOwn1.hs + examples/BOGLGP/Chapter01/Simple.hs + examples/BOGLGP/Chapter02/OnYourOwn1.hs + examples/BOGLGP/Chapter02/OpenGLApplication.hs + examples/BOGLGP/Chapter03/Lines.hs + examples/BOGLGP/Chapter03/OnYourOwn1.hs + examples/BOGLGP/Chapter03/Points.hs + examples/BOGLGP/Chapter03/Polygons.hs + examples/BOGLGP/Chapter03/TrianglesQuads.hs + examples/Misc/ARBOcclude.hs + examples/Misc/ExtractContours.hs + examples/Misc/Gears.hs + examples/Misc/Pitfall14.hs + examples/Misc/SmoothOpenGL3.hs + examples/Misc/Triangulate.hs + examples/OrangeBook/3Dlabs-License.txt + examples/OrangeBook/ogl2brick/Brick.frag + examples/OrangeBook/ogl2brick/Brick.hs + examples/OrangeBook/ogl2brick/Brick.vert + examples/RedBook/00-README + examples/RedBook/AAIndex.hs + examples/RedBook/AARGB.hs + examples/RedBook/AccAnti.hs + examples/RedBook/AccPersp.hs + examples/RedBook/Alpha.hs + examples/RedBook/Alpha3D.hs + examples/RedBook/BezCurve.hs + examples/RedBook/BezMesh.hs + examples/RedBook/BezSurf.hs + examples/RedBook/BlendEqn.hs + examples/RedBook/Checker.hs + examples/RedBook/Clip.hs + examples/RedBook/ColorMat.hs + examples/RedBook/ColorMatrix.hs + examples/RedBook/ColorTable.hs + examples/RedBook/Combiner.hs + examples/RedBook/Convolution.hs + examples/RedBook/Cube.hs + examples/RedBook/CubeMap.hs + examples/RedBook/DList.hs + examples/RedBook/DOF.hs + examples/RedBook/Data/leeds.bin + examples/RedBook/Double.hs + examples/RedBook/DrawF.hs + examples/RedBook/Feedback.hs + examples/RedBook/Fog.hs + examples/RedBook/FogCoord.hs + examples/RedBook/FogIndex.hs + examples/RedBook/Font.hs + examples/RedBook/Hello.hs + examples/RedBook/Histogram.hs + examples/RedBook/Image.hs + examples/RedBook/Light.hs + examples/RedBook/Lines.hs + examples/RedBook/MVArray.hs + examples/RedBook/Material.hs + examples/RedBook/Minmax.hs + examples/RedBook/Mipmap.hs + examples/RedBook/Model.hs + examples/RedBook/MoveLight.hs + examples/RedBook/MultiTex.hs + examples/RedBook/Multisamp.hs + examples/RedBook/PickDepth.hs + examples/RedBook/PickSquare.hs + examples/RedBook/Planet.hs + examples/RedBook/PointP.hs + examples/RedBook/PolyOff.hs + examples/RedBook/Polys.hs + examples/RedBook/Quadric.hs + examples/RedBook/ReadImage.hs + examples/RedBook/Robot.hs + examples/RedBook/Scene.hs + examples/RedBook/Select.hs + examples/RedBook/ShadowMap.hs + examples/RedBook/Smooth.hs + examples/RedBook/Stencil.hs + examples/RedBook/Stroke.hs + examples/RedBook/SurfPoints.hs + examples/RedBook/Surface.hs + examples/RedBook/Teapots.hs + examples/RedBook/Tess.hs + examples/RedBook/TessWind.hs + examples/RedBook/TexBind.hs + examples/RedBook/TexGen.hs + examples/RedBook/TexProx.hs + examples/RedBook/TexSub.hs + examples/RedBook/Texture3D.hs + examples/RedBook/TextureSurf.hs + examples/RedBook/Torus.hs + examples/RedBook/Trim.hs + examples/RedBook/UnProject.hs + examples/RedBook/VArray.hs + examples/RedBook/Wrap.hs + include/HsGLUTExt.h hunk ./GLUT.cabal 116 +flag UseNativeWindowsLibraries + description: + When compiling under Windows, use the native libraries instead of e.g. the + ones coming with Cygwin. + hunk ./GLUT.cabal 122 - exposed-modules: - Graphics.UI.GLUT, - Graphics.UI.GLUT.Begin, - Graphics.UI.GLUT.Callbacks, - Graphics.UI.GLUT.Callbacks.Global, - Graphics.UI.GLUT.Callbacks.Window, - Graphics.UI.GLUT.Colormap, - Graphics.UI.GLUT.Debugging, - Graphics.UI.GLUT.DeviceControl, - Graphics.UI.GLUT.Fonts, - Graphics.UI.GLUT.GameMode, - Graphics.UI.GLUT.Initialization, - Graphics.UI.GLUT.Menu, - Graphics.UI.GLUT.Objects, - Graphics.UI.GLUT.Overlay, - Graphics.UI.GLUT.State, - Graphics.UI.GLUT.Window - other-modules: - Graphics.UI.GLUT.Callbacks.Registration, - Graphics.UI.GLUT.Constants, - Graphics.UI.GLUT.Extensions, - Graphics.UI.GLUT.QueryUtils, - Graphics.UI.GLUT.Types - include-dirs: include - includes: HsGLUT.h - install-includes: HsGLUT.h - c-sources: cbits/HsGLUT.c - if flag(split-base) - build-depends: base >= 3 && <5, array, containers - else - build-depends: base < 3 - build-depends: OpenGL >= 2.3, StateVar, Tensor - extensions: CPP, ForeignFunctionInterface + exposed-modules: + Graphics.UI.GLUT, + Graphics.UI.GLUT.Begin, + Graphics.UI.GLUT.Callbacks, + Graphics.UI.GLUT.Callbacks.Global, + Graphics.UI.GLUT.Callbacks.Window, + Graphics.UI.GLUT.Colormap, + Graphics.UI.GLUT.Debugging, + Graphics.UI.GLUT.DeviceControl, + Graphics.UI.GLUT.Fonts, + Graphics.UI.GLUT.GameMode, + Graphics.UI.GLUT.Initialization, + Graphics.UI.GLUT.Menu, + Graphics.UI.GLUT.Objects, + Graphics.UI.GLUT.Overlay, + Graphics.UI.GLUT.State, + Graphics.UI.GLUT.Window + other-modules: + Graphics.UI.GLUT.Callbacks.Registration, + Graphics.UI.GLUT.QueryUtils, + Graphics.UI.GLUT.Raw, + Graphics.UI.GLUT.Raw.APIEntry, + Graphics.UI.GLUT.Raw.Callbacks, + Graphics.UI.GLUT.Raw.Fonts, + Graphics.UI.GLUT.Raw.Functions, + Graphics.UI.GLUT.Raw.Tokens, + Graphics.UI.GLUT.Types + include-dirs: include + c-sources: + cbits/HsGLUT.c + if flag(split-base) + build-depends: base >= 3 && <5, array, containers + else + build-depends: base < 3 + build-depends: OpenGL >= 2.3, StateVar, Tensor + ghc-options: -Wall + if os(windows) && flag(UseNativeWindowsLibraries) + cpp-options: "-DCALLCONV=stdcall" + extra-libraries: glut32 + cc-options: "-DUSE_GETPROCADDRESS" + else + cpp-options: "-DCALLCONV=ccall" + extra-libraries: glut + if os(darwin) + cc-options: "-DUSE_NSADDRESSOFSYMBOL" + else + cc-options: "-DUSE_DLSYM" hunk ./Graphics/UI/GLUT/Begin.hs 27 -import Graphics.UI.GLUT.Constants hunk ./Graphics/UI/GLUT/Begin.hs 28 -import Graphics.UI.GLUT.Extensions - --------------------------------------------------------------------------------- - -#include "HsGLUTExt.h" +import Graphics.UI.GLUT.Raw hunk ./Graphics/UI/GLUT/Begin.hs 36 -foreign import CALLCONV safe "glutMainLoop" mainLoop :: IO () +mainLoop :: IO () +mainLoop = glutMainLoop hunk ./Graphics/UI/GLUT/Begin.hs 48 -EXTENSION_ENTRY(safe,"freeglut",glutMainLoopEvent,IO ()) - hunk ./Graphics/UI/GLUT/Begin.hs 63 -EXTENSION_ENTRY(safe,"freeglut",glutLeaveMainLoop,IO ()) - hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 27 -import Foreign.Ptr hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 28 -import Graphics.UI.GLUT.Constants hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 29 +import Graphics.UI.GLUT.Raw hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 46 -type MenuStatusCallback' = CInt -> CInt -> CInt -> IO () - hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 68 - (makeMenuStatusCallback . unmarshal) + (makeMenuStatusFunc . unmarshal) hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 73 -foreign import ccall "wrapper" makeMenuStatusCallback :: - MenuStatusCallback' -> IO (FunPtr MenuStatusCallback') - -foreign import CALLCONV unsafe "glutMenuStatusFunc" glutMenuStatusFunc :: - FunPtr MenuStatusCallback' -> IO () - hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 91 - makeSettableStateVar $ setCallback IdleCB glutIdleFunc makeIdleCallback - -foreign import ccall "wrapper" makeIdleCallback :: - IdleCallback -> IO (FunPtr IdleCallback) - -foreign import CALLCONV unsafe "glutIdleFunc" glutIdleFunc :: - FunPtr IdleCallback -> IO () + makeSettableStateVar $ setCallback IdleCB glutIdleFunc makeIdleFunc hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 100 -type TimerCallback' = CInt -> IO () - hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 111 - funPtr <- mfix (\self -> makeTimerCallback (\_ -> do registerForCleanup self - timerCallback)) + funPtr <- mfix (\self -> makeTimerFunc (\_ -> do registerForCleanup self + timerCallback)) hunk ./Graphics/UI/GLUT/Callbacks/Global.hs 114 - -foreign import ccall "wrapper" makeTimerCallback :: - TimerCallback' -> IO (FunPtr TimerCallback') - -foreign import CALLCONV unsafe "glutTimerFunc" glutTimerFunc :: - CUInt -> FunPtr TimerCallback' -> CInt -> IO () hunk ./Graphics/UI/GLUT/Callbacks/Registration.hs 27 -import Foreign.C.Types hunk ./Graphics/UI/GLUT/Callbacks/Registration.hs 28 +import Graphics.UI.GLUT.Raw hunk ./Graphics/UI/GLUT/Callbacks/Registration.hs 124 -theScavenger :: IORef (FunPtr TimerCallback) -theScavenger = unsafePerformIO (newIORef =<< makeTimerCallback (\_ -> do +theScavenger :: IORef (FunPtr TimerFunc) +theScavenger = unsafePerformIO (newIORef =<< makeTimerFunc (\_ -> do hunk ./Graphics/UI/GLUT/Callbacks/Registration.hs 130 -getScavenger :: IO (FunPtr TimerCallback) +getScavenger :: IO (FunPtr TimerFunc) hunk ./Graphics/UI/GLUT/Callbacks/Registration.hs 133 --- More or less copied from Global.hs to avoid mutual dependencies - -type TimerCallback = CInt -> IO () - -foreign import ccall "wrapper" makeTimerCallback :: - TimerCallback -> IO (FunPtr TimerCallback) - -foreign import CALLCONV unsafe "glutTimerFunc" glutTimerFunc :: - CUInt -> FunPtr TimerCallback -> CInt -> IO () - hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 61 -import Graphics.UI.GLUT.Constants +import Graphics.UI.GLUT.Raw hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 64 -import Graphics.UI.GLUT.Extensions - --------------------------------------------------------------------------------- - -#include "HsGLUTExt.h" hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 110 - setCallback DisplayCB glutDisplayFunc makeDisplayCallback . Just - -foreign import ccall "wrapper" makeDisplayCallback :: - DisplayCallback -> IO (FunPtr DisplayCallback) - -foreign import CALLCONV unsafe "glutDisplayFunc" glutDisplayFunc :: - FunPtr DisplayCallback -> IO () + setCallback DisplayCB glutDisplayFunc makeDisplayFunc . Just hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 143 - setCallback OverlayDisplayCB glutOverlayDisplayFunc makeDisplayCallback - -foreign import CALLCONV unsafe "glutOverlayDisplayFunc" glutOverlayDisplayFunc - :: FunPtr DisplayCallback -> IO () + setCallback OverlayDisplayCB glutOverlayDisplayFunc makeOverlayDisplayFunc hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 151 -type ReshapeCallback' = CInt -> CInt -> IO () - hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 179 - setCallback ReshapeCB glutReshapeFunc (makeReshapeCallback . unmarshal) + setCallback ReshapeCB glutReshapeFunc (makeReshapeFunc . unmarshal) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 182 -foreign import ccall "wrapper" makeReshapeCallback :: - ReshapeCallback' -> IO (FunPtr ReshapeCallback') - -foreign import CALLCONV unsafe "glutReshapeFunc" glutReshapeFunc :: - FunPtr ReshapeCallback' -> IO () - hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 208 -type VisibilityCallback' = CInt -> IO () - hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 222 - (makeVisibilityCallback . unmarshal) + (makeVisibilityFunc . unmarshal) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 225 -foreign import ccall "wrapper" makeVisibilityCallback :: - VisibilityCallback' -> IO (FunPtr VisibilityCallback') - -foreign import CALLCONV unsafe "glutVisibilityFunc" glutVisibilityFunc :: - FunPtr VisibilityCallback' -> IO () - hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 250 -type WindowStateCallback_ = CInt -> IO () - --- | (/freeglut only/) Controls the window state callback for the +-- | Controls the window state callback for the hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 265 - setCallback WindowStatusCB glutWindowStateFunc - (makeWindowStateCallback . unmarshal) + setCallback WindowStatusCB glutWindowStatusFunc + (makeWindowStatusFunc . unmarshal) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 269 -foreign import ccall "wrapper" makeWindowStateCallback :: - WindowStateCallback_ -> IO (FunPtr WindowStateCallback_) - -EXTENSION_ENTRY(unsafe,"freeglut",glutWindowStateFunc,FunPtr WindowStateCallback_ -> IO ()) - hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 275 - setCallback CloseCB glutCloseFunc makeCloseCallback - -foreign import ccall "wrapper" - makeCloseCallback :: CloseCallback -> IO (FunPtr CloseCallback) - -EXTENSION_ENTRY(unsafe,"freeglut",glutCloseFunc,FunPtr CloseCallback -> IO ()) + setCallback CloseCB glutCloseFunc makeCloseFunc hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 281 -type KeyboardCallback' = CUChar -> CInt -> CInt -> IO () - hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 283 - setCallback KeyboardCB glutKeyboardFunc (makeKeyboardCallback . unmarshal) + setCallback KeyboardCB glutKeyboardFunc (makeKeyboardFunc . unmarshal) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 287 -foreign import ccall "wrapper" makeKeyboardCallback :: - KeyboardCallback' -> IO (FunPtr KeyboardCallback') - -foreign import CALLCONV unsafe "glutKeyboardFunc" glutKeyboardFunc :: - FunPtr KeyboardCallback' -> IO () - hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 292 - (makeKeyboardCallback . unmarshal) + (makeKeyboardUpFunc . unmarshal) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 296 -foreign import CALLCONV unsafe "glutKeyboardUpFunc" glutKeyboardUpFunc :: - FunPtr KeyboardCallback' -> IO () - hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 359 -type SpecialCallback' = CInt -> CInt -> CInt -> IO () - hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 361 - setCallback SpecialCB glutSpecialFunc (makeSpecialCallback . unmarshal) + setCallback SpecialCB glutSpecialFunc (makeSpecialFunc . unmarshal) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 365 -foreign import ccall "wrapper" makeSpecialCallback :: - SpecialCallback' -> IO (FunPtr SpecialCallback') - -foreign import CALLCONV unsafe "glutSpecialFunc" glutSpecialFunc :: - FunPtr SpecialCallback' -> IO () - hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 369 - setCallback SpecialUpCB glutSpecialUpFunc (makeSpecialCallback . unmarshal) + setCallback SpecialUpCB glutSpecialUpFunc (makeSpecialUpFunc . unmarshal) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 373 -foreign import CALLCONV unsafe "glutSpecialUpFunc" glutSpecialUpFunc :: - FunPtr SpecialCallback' -> IO () - hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 392 -type MouseCallback' = CInt -> CInt -> CInt -> CInt -> IO () - hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 394 - setCallback MouseCB glutMouseFunc (makeMouseCallback . unmarshal) + setCallback MouseCB glutMouseFunc (makeMouseFunc . unmarshal) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 399 -foreign import ccall "wrapper" makeMouseCallback :: - MouseCallback' -> IO (FunPtr MouseCallback') - -foreign import CALLCONV unsafe "glutMouseFunc" glutMouseFunc :: - FunPtr MouseCallback' -> IO () - hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 416 -foreign import CALLCONV unsafe "glutGetModifiers" glutGetModifiers :: IO CInt - hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 467 -type MouseWheelCallback_ = CInt -> CInt -> CInt -> CInt -> IO () - hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 474 - setCallback MouseWheelCB glutMouseWheelFunc (makeMouseWheelCallback . unmarshal) + setCallback MouseWheelCB glutMouseWheelFunc (makeMouseWheelFunc . unmarshal) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 478 -foreign import ccall "wrapper" makeMouseWheelCallback :: - MouseWheelCallback_ -> IO (FunPtr MouseWheelCallback_) - -EXTENSION_ENTRY(unsafe,"freeglut",glutMouseWheelFunc,FunPtr MouseWheelCallback_ -> IO ()) - hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 484 -type MotionCallback' = CInt -> CInt -> IO () - hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 491 - setCallback MotionCB glutMotionFunc (makeMotionCallback . unmarshal) + setCallback MotionCB glutMotionFunc (makeMotionFunc . unmarshal) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 494 -foreign import ccall "wrapper" makeMotionCallback :: - MotionCallback' -> IO (FunPtr MotionCallback') - -foreign import CALLCONV unsafe "glutMotionFunc" glutMotionFunc :: - FunPtr MotionCallback' -> IO () - hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 504 - (makeMotionCallback . unmarshal) + (makePassiveMotionFunc . unmarshal) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 507 -foreign import CALLCONV unsafe "glutPassiveMotionFunc" glutPassiveMotionFunc :: - FunPtr MotionCallback' -> IO () - hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 529 -type CrossingCallback' = CInt -> IO () - hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 537 - setCallback CrossingCB glutEntryFunc (makeCrossingCallback . unmarshal) + setCallback CrossingCB glutEntryFunc (makeEntryFunc . unmarshal) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 540 -foreign import ccall "wrapper" makeCrossingCallback :: - CrossingCallback' -> IO (FunPtr CrossingCallback') - -foreign import CALLCONV unsafe "glutEntryFunc" glutEntryFunc :: - FunPtr CrossingCallback' -> IO () - hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 599 - (makeSpaceballMotionCallback . unmarshal) + (makeSpaceballMotionFunc . unmarshal) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 603 -foreign import ccall "wrapper" makeSpaceballMotionCallback :: - SpaceballMotionCallback -> IO (FunPtr SpaceballMotionCallback) - -foreign import CALLCONV unsafe "glutSpaceballMotionFunc" glutSpaceballMotionFunc - :: FunPtr SpaceballMotionCallback -> IO () - hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 611 - (makeSpaceballRotationCallback . unmarshal) + (makeSpaceballRotateFunc . unmarshal) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 615 -foreign import ccall "wrapper" makeSpaceballRotationCallback :: - SpaceballRotationCallback -> IO (FunPtr SpaceballRotationCallback) - -foreign import CALLCONV unsafe "glutSpaceballRotateFunc" glutSpaceballRotateFunc - :: FunPtr SpaceballRotationCallback -> IO () - hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 619 -type SpaceballButtonCallback' = CInt -> CInt -> IO () - hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 622 - (makeSpaceballButtonCallback . unmarshal) + (makeSpaceballButtonFunc . unmarshal) hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 625 -foreign import ccall "wrapper" makeSpaceballButtonCallback :: - SpaceballButtonCallback' -> IO (FunPtr SpaceballButtonCallback') - -foreign import CALLCONV unsafe "glutSpaceballButtonFunc" - glutSpaceballButtonFunc :: FunPtr SpaceballButtonCallback' -> IO () - hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 668 -type ButtonBoxCallback' = CInt -> CInt -> IO () - hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 673 -foreign import ccall "wrapper" makeButtonBoxFunc :: - ButtonBoxCallback' -> IO (FunPtr ButtonBoxCallback') - -foreign import CALLCONV unsafe "glutButtonBoxFunc" glutButtonBoxFunc :: - FunPtr ButtonBoxCallback' -> IO () - hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 677 -type DialsCallback' = CInt -> CInt -> IO () - hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 682 -foreign import ccall "wrapper" makeDialsFunc :: - DialsCallback -> IO (FunPtr DialsCallback') - -foreign import CALLCONV unsafe "glutDialsFunc" glutDialsFunc :: - FunPtr DialsCallback' -> IO () - hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 726 -type TabletMotionCallback' = CInt -> CInt -> IO () - hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 733 -foreign import ccall "wrapper" makeTabletMotionFunc :: - TabletMotionCallback' -> IO (FunPtr TabletMotionCallback') - -foreign import CALLCONV unsafe "glutTabletMotionFunc" glutTabletMotionFunc :: - FunPtr TabletMotionCallback' -> IO () - hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 737 -type TabletButtonCallback' = CInt -> CInt -> CInt -> CInt -> IO () - hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 745 -foreign import ccall "wrapper" makeTabletButtonFunc :: - TabletButtonCallback' -> IO (FunPtr TabletButtonCallback') - -foreign import CALLCONV unsafe "glutTabletButtonFunc" glutTabletButtonFunc :: - FunPtr TabletButtonCallback' -> IO () - hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 783 -type JoystickCallback' = CUInt -> CInt -> CInt -> CInt -> IO () - hunk ./Graphics/UI/GLUT/Callbacks/Window.hs 802 - -foreign import ccall "wrapper" makeJoystickFunc :: - JoystickCallback' -> IO (FunPtr JoystickCallback') - -foreign import CALLCONV unsafe "glutJoystickFunc" glutJoystickFunc :: - FunPtr JoystickCallback' -> CInt -> IO () hunk ./Graphics/UI/GLUT/Colormap.hs 47 -import Graphics.UI.GLUT.Constants hunk ./Graphics/UI/GLUT/Colormap.hs 48 +import Graphics.UI.GLUT.Raw +import Graphics.UI.GLUT.Types hunk ./Graphics/UI/GLUT/Colormap.hs 72 -foreign import CALLCONV unsafe "glutSetColor" glutSetColor :: - CInt -> GLfloat -> GLfloat -> GLfloat -> IO () - hunk ./Graphics/UI/GLUT/Colormap.hs 79 -foreign import CALLCONV unsafe "glutGetColor" glutGetColor :: - CInt -> CInt -> IO GLfloat - hunk ./Graphics/UI/GLUT/Colormap.hs 90 -foreign import CALLCONV unsafe "glutCopyColormap" copyColormap :: - Window -> IO () +copyColormap :: Window -> IO () +copyColormap (Window win) = glutCopyColormap win hunk ./Graphics/UI/GLUT/Constants.hs 1 --- #hide ------------------------------------------------------------------------------ --- | --- Module : Graphics.UI.GLUT.Constants --- Copyright : (c) Sven Panne 2002-2005 --- License : BSD-style (see the file libraries/GLUT/LICENSE) --- --- Maintainer : sven.panne@aedion.de --- Stability : stable --- Portability : portable --- --- This purely internal module defines all numeric GLUT constants. --- ------------------------------------------------------------------------------ - -module Graphics.UI.GLUT.Constants where - -import Foreign.C.Types -import Graphics.Rendering.OpenGL ( GLenum ) - ------------------------------------------------------------------------------ --- * Display mode bit masks -glut_RGB, glut_RGBA, glut_INDEX, glut_SINGLE, glut_DOUBLE, glut_ACCUM, - glut_ALPHA, glut_DEPTH, glut_STENCIL, glut_MULTISAMPLE, glut_STEREO, - glut_LUMINANCE, glut_CAPTIONLESS, glut_BORDERLESS, glut_AUX1, glut_AUX2, - glut_AUX3, glut_AUX4 :: CUInt -glut_RGB = 0x0000 -glut_RGBA = glut_RGB -glut_INDEX = 0x0001 -glut_SINGLE = 0x0000 -glut_DOUBLE = 0x0002 -glut_ACCUM = 0x0004 -glut_ALPHA = 0x0008 -glut_DEPTH = 0x0010 -glut_STENCIL = 0x0020 -glut_MULTISAMPLE = 0x0080 -glut_STEREO = 0x0100 -glut_LUMINANCE = 0x0200 -glut_CAPTIONLESS = 0x0400 -glut_BORDERLESS = 0x0800 -glut_AUX1 = 0x1000 -glut_AUX2 = 0x2000 -glut_AUX3 = 0x4000 -glut_AUX4 = 0x8000 - ------------------------------------------------------------------------------ --- * Mouse buttons -glut_LEFT_BUTTON, glut_MIDDLE_BUTTON, glut_RIGHT_BUTTON, glut_WHEEL_UP, - glut_WHEEL_DOWN :: CInt -glut_LEFT_BUTTON = 0 -glut_MIDDLE_BUTTON = 1 -glut_RIGHT_BUTTON = 2 -glut_WHEEL_UP = 3 -glut_WHEEL_DOWN = 4 - ------------------------------------------------------------------------------ --- * Mouse button state -glut_DOWN, glut_UP :: CInt -glut_DOWN = 0 -glut_UP = 1 - ------------------------------------------------------------------------------ --- * Function keys -glut_KEY_F1, glut_KEY_F2, glut_KEY_F3, glut_KEY_F4, glut_KEY_F5, glut_KEY_F6, - glut_KEY_F7, glut_KEY_F8, glut_KEY_F9, glut_KEY_F10, glut_KEY_F11, - glut_KEY_F12 :: CInt -glut_KEY_F1 = 1 -glut_KEY_F2 = 2 -glut_KEY_F3 = 3 -glut_KEY_F4 = 4 -glut_KEY_F5 = 5 -glut_KEY_F6 = 6 -glut_KEY_F7 = 7 -glut_KEY_F8 = 8 -glut_KEY_F9 = 9 -glut_KEY_F10 = 10 -glut_KEY_F11 = 11 -glut_KEY_F12 = 12 - ------------------------------------------------------------------------------ --- * Directional Keys -glut_KEY_LEFT, glut_KEY_UP, glut_KEY_RIGHT, glut_KEY_DOWN, glut_KEY_PAGE_UP, - glut_KEY_PAGE_DOWN, glut_KEY_HOME, glut_KEY_END, glut_KEY_INSERT, - glut_KEY_NUM_LOCK, glut_KEY_BEGIN, glut_KEY_DELETE :: CInt -glut_KEY_LEFT = 100 -glut_KEY_UP = 101 -glut_KEY_RIGHT = 102 -glut_KEY_DOWN = 103 -glut_KEY_PAGE_UP = 104 -glut_KEY_PAGE_DOWN = 105 -glut_KEY_HOME = 106 -glut_KEY_END = 107 -glut_KEY_INSERT = 108 -glut_KEY_NUM_LOCK = 109 -glut_KEY_BEGIN = 110 -glut_KEY_DELETE = 111 - ------------------------------------------------------------------------------ --- * Entry\/exit state -glut_LEFT, glut_ENTERED :: CInt -glut_LEFT = 0 -glut_ENTERED = 1 - ------------------------------------------------------------------------------ --- * Menu usage state -glut_MENU_NOT_IN_USE, glut_MENU_IN_USE :: CInt -glut_MENU_NOT_IN_USE = 0 -glut_MENU_IN_USE = 1 - ------------------------------------------------------------------------------ --- * Visibility state -glut_NOT_VISIBLE, glut_VISIBLE :: CInt -glut_NOT_VISIBLE = 0 -glut_VISIBLE = 1 - ------------------------------------------------------------------------------ --- * Window status state -glut_HIDDEN, glut_FULLY_RETAINED, glut_PARTIALLY_RETAINED, - glut_FULLY_COVERED :: CInt -glut_HIDDEN = 0 -glut_FULLY_RETAINED = 1 -glut_PARTIALLY_RETAINED = 2 -glut_FULLY_COVERED = 3 - ------------------------------------------------------------------------------ --- * Color index component selection values -glut_RED, glut_GREEN, glut_BLUE :: CInt -glut_RED = 0 -glut_GREEN = 1 -glut_BLUE = 2 - ------------------------------------------------------------------------------ --- * Layers in use -glut_NORMAL, glut_OVERLAY :: GLenum -glut_NORMAL = 0 -glut_OVERLAY = 1 - ------------------------------------------------------------------------------ --- * @glutGet@ parameters - -glut_WINDOW_X, glut_WINDOW_Y, glut_WINDOW_WIDTH, glut_WINDOW_HEIGHT, - glut_WINDOW_BUFFER_SIZE, glut_WINDOW_STENCIL_SIZE, glut_WINDOW_DEPTH_SIZE, - glut_WINDOW_RED_SIZE, glut_WINDOW_GREEN_SIZE, glut_WINDOW_BLUE_SIZE, - glut_WINDOW_ALPHA_SIZE, glut_WINDOW_ACCUM_RED_SIZE, - glut_WINDOW_ACCUM_GREEN_SIZE, glut_WINDOW_ACCUM_BLUE_SIZE, - glut_WINDOW_ACCUM_ALPHA_SIZE, glut_WINDOW_DOUBLEBUFFER, glut_WINDOW_RGBA, - glut_WINDOW_PARENT, glut_WINDOW_NUM_CHILDREN, glut_WINDOW_COLORMAP_SIZE, - glut_WINDOW_NUM_SAMPLES, glut_WINDOW_STEREO, glut_WINDOW_CURSOR, - glut_INIT_STATE, glut_SCREEN_WIDTH, glut_SCREEN_HEIGHT, - glut_SCREEN_WIDTH_MM, glut_SCREEN_HEIGHT_MM, glut_MENU_NUM_ITEMS, - glut_DISPLAY_MODE_POSSIBLE, glut_INIT_WINDOW_X, glut_INIT_WINDOW_Y, - glut_INIT_WINDOW_WIDTH, glut_INIT_WINDOW_HEIGHT, glut_INIT_DISPLAY_MODE, - glut_ELAPSED_TIME, glut_WINDOW_FORMAT_ID, glut_ACTION_ON_WINDOW_CLOSE, - glut_WINDOW_BORDER_WIDTH, glut_WINDOW_HEADER_HEIGHT, glut_VERSION, - glut_RENDERING_CONTEXT, glut_DIRECT_RENDERING, glut_FULL_SCREEN, - glut_INIT_MAJOR_VERSION, glut_INIT_MINOR_VERSION, glut_INIT_FLAGS :: GLenum -glut_WINDOW_X = 100 -glut_WINDOW_Y = 101 -glut_WINDOW_WIDTH = 102 -glut_WINDOW_HEIGHT = 103 -glut_WINDOW_BUFFER_SIZE = 104 -glut_WINDOW_STENCIL_SIZE = 105 -glut_WINDOW_DEPTH_SIZE = 106 -glut_WINDOW_RED_SIZE = 107 -glut_WINDOW_GREEN_SIZE = 108 -glut_WINDOW_BLUE_SIZE = 109 -glut_WINDOW_ALPHA_SIZE = 110 -glut_WINDOW_ACCUM_RED_SIZE = 111 -glut_WINDOW_ACCUM_GREEN_SIZE = 112 -glut_WINDOW_ACCUM_BLUE_SIZE = 113 -glut_WINDOW_ACCUM_ALPHA_SIZE = 114 -glut_WINDOW_DOUBLEBUFFER = 115 -glut_WINDOW_RGBA = 116 -glut_WINDOW_PARENT = 117 -glut_WINDOW_NUM_CHILDREN = 118 -glut_WINDOW_COLORMAP_SIZE = 119 -glut_WINDOW_NUM_SAMPLES = 120 -glut_WINDOW_STEREO = 121 -glut_WINDOW_CURSOR = 122 -glut_INIT_STATE = 124 -glut_SCREEN_WIDTH = 200 -glut_SCREEN_HEIGHT = 201 -glut_SCREEN_WIDTH_MM = 202 -glut_SCREEN_HEIGHT_MM = 203 -glut_MENU_NUM_ITEMS = 300 -glut_DISPLAY_MODE_POSSIBLE = 400 -glut_INIT_WINDOW_X = 500 -glut_INIT_WINDOW_Y = 501 -glut_INIT_WINDOW_WIDTH = 502 -glut_INIT_WINDOW_HEIGHT = 503 -glut_INIT_DISPLAY_MODE = 504 -glut_ELAPSED_TIME = 700 -glut_WINDOW_FORMAT_ID = 123 -glut_ACTION_ON_WINDOW_CLOSE = 505 -glut_WINDOW_BORDER_WIDTH = 506 -glut_WINDOW_HEADER_HEIGHT = 507 -glut_VERSION = 508 -glut_RENDERING_CONTEXT = 509 -glut_DIRECT_RENDERING = 510 -glut_FULL_SCREEN = 511 -glut_INIT_MAJOR_VERSION = 512 -glut_INIT_MINOR_VERSION = 513 -glut_INIT_FLAGS = 514 - ------------------------------------------------------------------------------ --- * @glutDeviceGet@ parameters -glut_HAS_KEYBOARD, glut_HAS_MOUSE, glut_HAS_SPACEBALL, - glut_HAS_DIAL_AND_BUTTON_BOX, glut_HAS_TABLET, glut_NUM_MOUSE_BUTTONS, - glut_NUM_SPACEBALL_BUTTONS, glut_NUM_BUTTON_BOX_BUTTONS, glut_NUM_DIALS, - glut_NUM_TABLET_BUTTONS, glut_DEVICE_IGNORE_KEY_REPEAT, - glut_DEVICE_KEY_REPEAT, glut_HAS_JOYSTICK, glut_OWNS_JOYSTICK, - glut_JOYSTICK_BUTTONS, glut_JOYSTICK_AXES, glut_JOYSTICK_POLL_RATE :: GLenum -glut_HAS_KEYBOARD = 600 -glut_HAS_MOUSE = 601 -glut_HAS_SPACEBALL = 602 -glut_HAS_DIAL_AND_BUTTON_BOX = 603 -glut_HAS_TABLET = 604 -glut_NUM_MOUSE_BUTTONS = 605 -glut_NUM_SPACEBALL_BUTTONS = 606 -glut_NUM_BUTTON_BOX_BUTTONS = 607 -glut_NUM_DIALS = 608 -glut_NUM_TABLET_BUTTONS = 609 -glut_DEVICE_IGNORE_KEY_REPEAT = 610 -glut_DEVICE_KEY_REPEAT = 611 -glut_HAS_JOYSTICK = 612 -glut_OWNS_JOYSTICK = 613 -glut_JOYSTICK_BUTTONS = 614 -glut_JOYSTICK_AXES = 615 -glut_JOYSTICK_POLL_RATE = 616 - ------------------------------------------------------------------------------ --- * @glutLayerGet@ parameters -glut_OVERLAY_POSSIBLE, glut_LAYER_IN_USE, glut_HAS_OVERLAY, - glut_TRANSPARENT_INDEX, glut_NORMAL_DAMAGED, glut_OVERLAY_DAMAGED :: GLenum - -glut_OVERLAY_POSSIBLE = 800 -glut_LAYER_IN_USE = 801 -glut_HAS_OVERLAY = 802 -glut_TRANSPARENT_INDEX = 803 -glut_NORMAL_DAMAGED = 804 -glut_OVERLAY_DAMAGED = 805 - ------------------------------------------------------------------------------ --- * @glutVideoResizeGet@ parameters -glut_VIDEO_RESIZE_POSSIBLE, glut_VIDEO_RESIZE_IN_USE, - glut_VIDEO_RESIZE_X_DELTA, glut_VIDEO_RESIZE_Y_DELTA, - glut_VIDEO_RESIZE_WIDTH_DELTA, glut_VIDEO_RESIZE_HEIGHT_DELTA, - glut_VIDEO_RESIZE_X, glut_VIDEO_RESIZE_Y, glut_VIDEO_RESIZE_WIDTH, - glut_VIDEO_RESIZE_HEIGHT :: CInt -glut_VIDEO_RESIZE_POSSIBLE = 900 -glut_VIDEO_RESIZE_IN_USE = 901 -glut_VIDEO_RESIZE_X_DELTA = 902 -glut_VIDEO_RESIZE_Y_DELTA = 903 -glut_VIDEO_RESIZE_WIDTH_DELTA = 904 -glut_VIDEO_RESIZE_HEIGHT_DELTA = 905 -glut_VIDEO_RESIZE_X = 906 -glut_VIDEO_RESIZE_Y = 907 -glut_VIDEO_RESIZE_WIDTH = 908 -glut_VIDEO_RESIZE_HEIGHT = 909 - ------------------------------------------------------------------------------ --- * @glutGetModifiers@ return mask -glut_ACTIVE_SHIFT, glut_ACTIVE_CTRL, glut_ACTIVE_ALT :: CInt -glut_ACTIVE_SHIFT = 0x01 -glut_ACTIVE_CTRL = 0x02 -glut_ACTIVE_ALT = 0x04 - ------------------------------------------------------------------------------ --- * @glutSetCursor@ parameters -glut_CURSOR_RIGHT_ARROW, glut_CURSOR_LEFT_ARROW, glut_CURSOR_INFO, - glut_CURSOR_DESTROY, glut_CURSOR_HELP, glut_CURSOR_CYCLE, - glut_CURSOR_SPRAY, glut_CURSOR_WAIT, glut_CURSOR_TEXT, - glut_CURSOR_CROSSHAIR, glut_CURSOR_UP_DOWN, glut_CURSOR_LEFT_RIGHT, - glut_CURSOR_TOP_SIDE, glut_CURSOR_BOTTOM_SIDE, glut_CURSOR_LEFT_SIDE, - glut_CURSOR_RIGHT_SIDE, glut_CURSOR_TOP_LEFT_CORNER, - glut_CURSOR_TOP_RIGHT_CORNER, glut_CURSOR_BOTTOM_RIGHT_CORNER, - glut_CURSOR_BOTTOM_LEFT_CORNER, glut_CURSOR_INHERIT, glut_CURSOR_NONE, - glut_CURSOR_FULL_CROSSHAIR :: CInt -glut_CURSOR_RIGHT_ARROW = 0 -glut_CURSOR_LEFT_ARROW = 1 -glut_CURSOR_INFO = 2 -glut_CURSOR_DESTROY = 3 -glut_CURSOR_HELP = 4 -glut_CURSOR_CYCLE = 5 -glut_CURSOR_SPRAY = 6 -glut_CURSOR_WAIT = 7 -glut_CURSOR_TEXT = 8 -glut_CURSOR_CROSSHAIR = 9 -glut_CURSOR_UP_DOWN = 10 -glut_CURSOR_LEFT_RIGHT = 11 -glut_CURSOR_TOP_SIDE = 12 -glut_CURSOR_BOTTOM_SIDE = 13 -glut_CURSOR_LEFT_SIDE = 14 -glut_CURSOR_RIGHT_SIDE = 15 -glut_CURSOR_TOP_LEFT_CORNER = 16 -glut_CURSOR_TOP_RIGHT_CORNER = 17 -glut_CURSOR_BOTTOM_RIGHT_CORNER = 18 -glut_CURSOR_BOTTOM_LEFT_CORNER = 19 -glut_CURSOR_INHERIT = 100 -glut_CURSOR_NONE = 101 -glut_CURSOR_FULL_CROSSHAIR = 102 - ------------------------------------------------------------------------------ --- * @glutSetKeyRepeat@ modes -glut_KEY_REPEAT_OFF, glut_KEY_REPEAT_ON, glut_KEY_REPEAT_DEFAULT :: CInt -glut_KEY_REPEAT_OFF = 0 -glut_KEY_REPEAT_ON = 1 -glut_KEY_REPEAT_DEFAULT = 2 - ------------------------------------------------------------------------------ --- * Joystick button masks -glut_JOYSTICK_BUTTON_A, glut_JOYSTICK_BUTTON_B, glut_JOYSTICK_BUTTON_C, - glut_JOYSTICK_BUTTON_D :: CUInt -glut_JOYSTICK_BUTTON_A = 0x01 -glut_JOYSTICK_BUTTON_B = 0x02 -glut_JOYSTICK_BUTTON_C = 0x04 -glut_JOYSTICK_BUTTON_D = 0x08 - ------------------------------------------------------------------------------ --- @glutGameModeGet@ parameters -glut_GAME_MODE_ACTIVE, glut_GAME_MODE_POSSIBLE, glut_GAME_MODE_WIDTH, - glut_GAME_MODE_HEIGHT, glut_GAME_MODE_PIXEL_DEPTH, - glut_GAME_MODE_REFRESH_RATE, glut_GAME_MODE_DISPLAY_CHANGED :: GLenum -glut_GAME_MODE_ACTIVE = 0 -glut_GAME_MODE_POSSIBLE = 1 -glut_GAME_MODE_WIDTH = 2 -glut_GAME_MODE_HEIGHT = 3 -glut_GAME_MODE_PIXEL_DEPTH = 4 -glut_GAME_MODE_REFRESH_RATE = 5 -glut_GAME_MODE_DISPLAY_CHANGED = 6 - ------------------------------------------------------------------------------ --- Direct/indirect rendering context options (has meaning only in unix/x11), --- see glut_DIRECT_RENDERING (freeglut extension) -glut_FORCE_INDIRECT_CONTEXT, glut_ALLOW_DIRECT_CONTEXT, - glut_TRY_DIRECT_CONTEXT, glut_FORCE_DIRECT_CONTEXT :: CInt -glut_FORCE_INDIRECT_CONTEXT = 0 -glut_ALLOW_DIRECT_CONTEXT = 1 -glut_TRY_DIRECT_CONTEXT = 2 -glut_FORCE_DIRECT_CONTEXT = 3 - ------------------------------------------------------------------------------ --- Behaviour when the user clicks on an "x" to close a window, see --- glut_ACTION_ON_WINDOW_CLOSE (freeglut extension) -glut_ACTION_EXIT, glut_ACTION_GLUTMAINLOOP_RETURNS, - glut_ACTION_CONTINUE_EXECUTION :: CInt -glut_ACTION_EXIT = 0 -glut_ACTION_GLUTMAINLOOP_RETURNS = 1 -glut_ACTION_CONTINUE_EXECUTION = 2 - ------------------------------------------------------------------------------ --- Create a new rendering context when the user opens a new window? See --- glut_RENDERING_CONTEXT (freeglut extension) -glut_CREATE_NEW_CONTEXT, glut_USE_CURRENT_CONTEXT :: CInt -glut_CREATE_NEW_CONTEXT = 0 -glut_USE_CURRENT_CONTEXT = 1 - ------------------------------------------------------------------------------ --- OpenGL 3.x context creation flags (freeglut extension) -glut_DEBUG, glut_FORWARD_COMPATIBLE :: CInt -glut_DEBUG = 1 -glut_FORWARD_COMPATIBLE = 2 - ------------------------------------------------------------------------------ --- glutGetModeValues parameter (freeglut extension) -glut_AUX :: GLenum -glut_AUX = 0x1000 rmfile ./Graphics/UI/GLUT/Constants.hs hunk ./Graphics/UI/GLUT/Debugging.hs 21 +import Graphics.Rendering.OpenGL ( Error(..), errors ) hunk ./Graphics/UI/GLUT/Debugging.hs 24 -import Graphics.Rendering.OpenGL ( Error(..), errors ) hunk ./Graphics/UI/GLUT/DeviceControl.hs 24 -import Graphics.UI.GLUT.Constants hunk ./Graphics/UI/GLUT/DeviceControl.hs 25 +import Graphics.UI.GLUT.Raw hunk ./Graphics/UI/GLUT/DeviceControl.hs 45 - | x == glut_KEY_REPEAT_OFF = GlobalKeyRepeatOff - | x == glut_KEY_REPEAT_ON = GlobalKeyRepeatOn + | x == glut_KEY_REPEAT_OFF = GlobalKeyRepeatOff + | x == glut_KEY_REPEAT_ON = GlobalKeyRepeatOn hunk ./Graphics/UI/GLUT/DeviceControl.hs 80 -foreign import CALLCONV unsafe "glutSetKeyRepeat" glutSetKeyRepeat :: - CInt -> IO () - hunk ./Graphics/UI/GLUT/DeviceControl.hs 114 -foreign import CALLCONV unsafe "glutIgnoreKeyRepeat" glutIgnoreKeyRepeat :: - CInt -> IO () - hunk ./Graphics/UI/GLUT/DeviceControl.hs 120 - -foreign import CALLCONV unsafe "glutForceJoystickFunc" forceJoystickCallback :: - IO () + +forceJoystickCallback :: IO () +forceJoystickCallback = glutForceJoystickFunc hunk ./Graphics/UI/GLUT/Extensions.hs 1 --- #hide --------------------------------------------------------------------------------- --- | --- Module : Graphics.UI.GLUT.Extensions --- Copyright : (c) Sven Panne 2002-2005 --- License : BSD-style (see the file libraries/OpenGL/LICENSE) --- --- Maintainer : sven.panne@aedion.de --- Stability : provisional --- Portability : portable --- --- This is a purely internal module for handling an OpenGL-like extension --- mechanism for GLUT. --- --------------------------------------------------------------------------------- - -module Graphics.UI.GLUT.Extensions ( - FunPtr, unsafePerformIO, - Invoker, getProcAddress, getProcAddressInternal -- used only internally -) where - -import Foreign.C.String ( CString, withCString ) -import Foreign.Ptr ( FunPtr, nullFunPtr ) -import System.IO.Unsafe ( unsafePerformIO ) - --------------------------------------------------------------------------------- - -type Invoker a = FunPtr a -> a - -getProcAddress :: String -> String -> IO (FunPtr a) -getProcAddress ext call = - throwIfNull ("unknown GLUT call " ++ call ++ ", check for " ++ ext) $ - getProcAddressInternal call - -throwIfNull :: String -> IO (FunPtr a) -> IO (FunPtr a) -throwIfNull msg act = do - res <- act - if res == nullFunPtr - then ioError (userError msg) - else return res - -getProcAddressInternal :: String -> IO (FunPtr a) -getProcAddressInternal call = withCString call hs_GLUT_getProcAddress - -foreign import ccall unsafe "hs_GLUT_getProcAddress" hs_GLUT_getProcAddress - :: CString -> IO (FunPtr a) rmfile ./Graphics/UI/GLUT/Extensions.hs hunk ./Graphics/UI/GLUT/Fonts.hs 30 -import Graphics.UI.GLUT.Extensions - -#ifdef __HUGS__ -{-# CFILES cbits/HsGLUT.c #-} -#endif - --------------------------------------------------------------------------------- - -#include "HsGLUTExt.h" +import Graphics.UI.GLUT.Raw hunk ./Graphics/UI/GLUT/Fonts.hs 105 -foreign import ccall unsafe "hs_GLUT_marshalBitmapFont" - hs_GLUT_marshalBitmapFont :: CInt -> IO GLUTbitmapFont - hunk ./Graphics/UI/GLUT/Fonts.hs 131 -foreign import ccall unsafe "hs_GLUT_marshalStrokeFont" - hs_GLUT_marshalStrokeFont :: CInt -> IO GLUTstrokeFont - hunk ./Graphics/UI/GLUT/Fonts.hs 146 -foreign import CALLCONV "glutBitmapCharacter" glutBitmapCharacter :: - GLUTbitmapFont -> CInt -> IO () - hunk ./Graphics/UI/GLUT/Fonts.hs 153 -foreign import CALLCONV unsafe "glutStrokeCharacter" - glutStrokeCharacter :: GLUTstrokeFont -> CInt -> IO () - hunk ./Graphics/UI/GLUT/Fonts.hs 161 - fmap fromIntegral $ withCString s (glutBitmapLength i) - -foreign import CALLCONV unsafe "glutBitmapLength" - glutBitmapLength :: GLUTbitmapFont -> CString -> IO CInt + fmap fromIntegral $ withCString s (glutBitmapLength i . castPtr) hunk ./Graphics/UI/GLUT/Fonts.hs 171 - fmap fromIntegral $ withCString s (glutStrokeLength i) - -foreign import CALLCONV unsafe "glutStrokeLength" - glutStrokeLength :: GLUTstrokeFont -> CString -> IO CInt + fmap fromIntegral $ withCString s (glutStrokeLength i . castPtr) hunk ./Graphics/UI/GLUT/Fonts.hs 179 -EXTENSION_ENTRY(unsafe,"freeglut",glutBitmapHeight,GLUTbitmapFont -> IO CInt) - hunk ./Graphics/UI/GLUT/Fonts.hs 184 - -EXTENSION_ENTRY(unsafe,"freeglut",glutStrokeHeight,GLUTstrokeFont -> IO GLfloat) hunk ./Graphics/UI/GLUT/GameMode.hs 36 -import Foreign.C.Types hunk ./Graphics/UI/GLUT/GameMode.hs 37 -import Graphics.UI.GLUT.Constants +import Graphics.UI.GLUT.Raw hunk ./Graphics/UI/GLUT/GameMode.hs 40 -import Graphics.UI.GLUT.Initialization hunk ./Graphics/UI/GLUT/GameMode.hs 99 -foreign import CALLCONV unsafe "glutGameModeString" glutGameModeString :: - CString -> IO () - hunk ./Graphics/UI/GLUT/GameMode.hs 138 - return (makeWindow w, c) - -foreign import CALLCONV unsafe "glutEnterGameMode" glutEnterGameMode :: IO CInt + return (Window w, c) hunk ./Graphics/UI/GLUT/GameMode.hs 145 -foreign import CALLCONV unsafe "glutLeaveGameMode" leaveGameMode :: IO () +leaveGameMode :: IO () +leaveGameMode = glutLeaveGameMode hunk ./Graphics/UI/GLUT/GameMode.hs 184 -foreign import CALLCONV unsafe "glutGameModeGet" glutGameModeGet :: - GLenum -> IO CInt - hunk ./Graphics/UI/GLUT/Initialization.hs 61 -import System.Environment hunk ./Graphics/UI/GLUT/Initialization.hs 62 -import Graphics.UI.GLUT.Constants -import Graphics.UI.GLUT.Extensions hunk ./Graphics/UI/GLUT/Initialization.hs 63 +import Graphics.UI.GLUT.Raw hunk ./Graphics/UI/GLUT/Initialization.hs 65 - --------------------------------------------------------------------------------- - -#include "HsGLUTExt.h" +import System.Environment hunk ./Graphics/UI/GLUT/Initialization.hs 125 -foreign import CALLCONV unsafe "glutInit" glutInit :: - Ptr CInt -> Ptr CString -> IO () - hunk ./Graphics/UI/GLUT/Initialization.hs 143 -EXTENSION_ENTRY(unsafe,"freeglut",glutExit,IO ()) - hunk ./Graphics/UI/GLUT/Initialization.hs 171 -foreign import CALLCONV unsafe "glutInitWindowPosition" glutInitWindowPosition - :: CInt -> CInt -> IO () - hunk ./Graphics/UI/GLUT/Initialization.hs 200 -foreign import CALLCONV unsafe "glutInitWindowSize" glutInitWindowSize :: - CInt -> CInt -> IO () - hunk ./Graphics/UI/GLUT/Initialization.hs 333 -foreign import CALLCONV unsafe "glutInitDisplayMode" glutInitDisplayMode :: - CUInt -> IO () - hunk ./Graphics/UI/GLUT/Initialization.hs 363 - where isKnown = fmap (/= nullFunPtr) . getProcAddressInternal + where isKnown = fmap (/= nullFunPtr) . getAPIEntryInternal hunk ./Graphics/UI/GLUT/Initialization.hs 575 -foreign import CALLCONV unsafe "glutInitDisplayString" glutInitDisplayString :: - CString -> IO () - hunk ./Graphics/UI/GLUT/Initialization.hs 687 -EXTENSION_ENTRY(unsafe,"freeglut",glutInitContextVersion,CInt -> CInt -> IO ()) - hunk ./Graphics/UI/GLUT/Initialization.hs 729 - -EXTENSION_ENTRY(unsafe,"freeglut",glutInitContextFlags,CInt -> IO ()) hunk ./Graphics/UI/GLUT/Menu.hs 28 +import Control.Monad hunk ./Graphics/UI/GLUT/Menu.hs 34 -import Control.Monad -import System.IO.Unsafe -import Graphics.UI.GLUT.Constants +import Graphics.UI.GLUT.Callbacks.Registration hunk ./Graphics/UI/GLUT/Menu.hs 36 +import Graphics.UI.GLUT.Raw hunk ./Graphics/UI/GLUT/Menu.hs 39 -import Graphics.UI.GLUT.Callbacks.Registration -import Graphics.UI.GLUT.Callbacks.Window +import System.IO.Unsafe hunk ./Graphics/UI/GLUT/Menu.hs 168 -type Item = CInt - --------------------------------------------------------------------------------- - --- | The type of a menu callback action that is called when a menu entry from a --- menu is selected. The value passed to the callback is determined by the value --- for the selected menu entry. - -type MenuCB = CInt -> IO () - --- | Create a new pop-up menu and return a unique identifier for it, which can --- be used when setting 'currentMenu'. Implicitly, the /current menu/ is set to --- the newly created menu. --- --- When the menu callback is called because a menu entry is selected for the --- menu, the /current menu/ will be implicitly set to the menu with the selected --- entry before the callback is made. --- --- /X Implementation Notes:/ If available, GLUT for X will take advantage of --- overlay planes for implementing pop-up menus. The use of overlay planes can --- eliminate display callbacks when pop-up menus are deactivated. The --- @SERVER_OVERLAY_VISUALS@ convention is used to determine if overlay visuals --- are available. - -foreign import CALLCONV unsafe "glutCreateMenu" glutCreateMenu :: - FunPtr MenuCB -> IO MenuID - -foreign import ccall "wrapper" makeMenuFunc :: MenuCB -> IO (FunPtr MenuCB) - --- | Destroy the specified menu. If it was the /current menu/, the /current --- menu/ becomes invalid and 'currentMenu' will contain 'Nothing'. - -foreign import CALLCONV unsafe "glutDestroyMenu" glutDestroyMenu :: - MenuID -> IO () hunk ./Graphics/UI/GLUT/Menu.hs 177 -foreign import CALLCONV unsafe "glutSetMenu" glutSetMenu :: MenuID -> IO () - -foreign import CALLCONV unsafe "glutGetMenu" glutGetMenu :: IO MenuID - hunk ./Graphics/UI/GLUT/Menu.hs 193 -foreign import CALLCONV unsafe "glutAddMenuEntry" glutAddMenuEntry :: - CString -> Value -> IO () - hunk ./Graphics/UI/GLUT/Menu.hs 201 -foreign import CALLCONV unsafe "glutAddSubMenu" glutAddSubMenu :: - CString -> MenuID -> IO () - hunk ./Graphics/UI/GLUT/Menu.hs 229 --- | Remove the menu item at the given position, regardless of whether it is a --- menu entry or sub-menu trigger. The position must be between 1 (the topmost --- menu item) and 'Graphics.UI.GLUT.State.getNumMenuItems' inclusive. Menu items --- below the removed menu item are renumbered. - -foreign import CALLCONV unsafe "glutRemoveMenuItem" glutRemoveMenuItem :: - Item -> IO () - --------------------------------------------------------------------------------- - hunk ./Graphics/UI/GLUT/Menu.hs 238 -foreign import CALLCONV unsafe "glutAttachMenu" glutAttachMenu :: CInt -> IO () - hunk ./Graphics/UI/GLUT/Menu.hs 243 -foreign import CALLCONV unsafe "glutDetachMenu" glutDetachMenu :: CInt -> IO () - hunk ./Graphics/UI/GLUT/Objects.hs 41 -import Graphics.UI.GLUT.Extensions - --------------------------------------------------------------------------------- - -#include "HsGLUTExt.h" +import Graphics.UI.GLUT.Raw hunk ./Graphics/UI/GLUT/Objects.hs 163 -foreign import CALLCONV unsafe "glutSolidCube" solidCube +solidCube hunk ./Graphics/UI/GLUT/Objects.hs 166 +solidCube = glutSolidCube hunk ./Graphics/UI/GLUT/Objects.hs 171 -foreign import CALLCONV unsafe "glutWireCube" wireCube +wireCube hunk ./Graphics/UI/GLUT/Objects.hs 174 +wireCube = glutWireCube hunk ./Graphics/UI/GLUT/Objects.hs 181 -foreign import CALLCONV unsafe "glutSolidDodecahedron" solidDodecahedron :: - IO () +solidDodecahedron :: IO () +solidDodecahedron = glutSolidDodecahedron hunk ./Graphics/UI/GLUT/Objects.hs 187 -foreign import CALLCONV unsafe "glutWireDodecahedron" wireDodecahedron :: IO () +wireDodecahedron :: IO () +wireDodecahedron = glutWireDodecahedron hunk ./Graphics/UI/GLUT/Objects.hs 195 -foreign import CALLCONV unsafe "glutWireIcosahedron" wireIcosahedron :: IO () +wireIcosahedron :: IO () +wireIcosahedron = glutWireIcosahedron hunk ./Graphics/UI/GLUT/Objects.hs 201 -foreign import CALLCONV unsafe "glutSolidIcosahedron" solidIcosahedron :: IO () +solidIcosahedron :: IO () +solidIcosahedron = glutSolidIcosahedron hunk ./Graphics/UI/GLUT/Objects.hs 209 -foreign import CALLCONV unsafe "glutSolidOctahedron" solidOctahedron :: IO () +solidOctahedron :: IO () +solidOctahedron = glutSolidOctahedron hunk ./Graphics/UI/GLUT/Objects.hs 215 -foreign import CALLCONV unsafe "glutWireOctahedron" wireOctahedron :: IO () +wireOctahedron :: IO () +wireOctahedron = glutWireOctahedron hunk ./Graphics/UI/GLUT/Objects.hs 223 -foreign import CALLCONV unsafe "glutWireTetrahedron" wireTetrahedron :: IO () +wireTetrahedron :: IO () +wireTetrahedron = glutWireTetrahedron hunk ./Graphics/UI/GLUT/Objects.hs 229 -foreign import CALLCONV unsafe "glutSolidTetrahedron" solidTetrahedron :: IO () - --------------------------------------------------------------------------------- - -EXTENSION_ENTRY(unsafe,"freeglut",glutSolidRhombicDodecahedron,IO ()) - -EXTENSION_ENTRY(unsafe,"freeglut",glutWireRhombicDodecahedron,IO ()) +solidTetrahedron :: IO () +solidTetrahedron = glutSolidTetrahedron hunk ./Graphics/UI/GLUT/Objects.hs 238 -foreign import CALLCONV unsafe "glutSolidSphere" solidSphere +solidSphere hunk ./Graphics/UI/GLUT/Objects.hs 245 +solidSphere = glutSolidSphere hunk ./Graphics/UI/GLUT/Objects.hs 251 -foreign import CALLCONV unsafe "glutWireSphere" wireSphere +wireSphere hunk ./Graphics/UI/GLUT/Objects.hs 258 +wireSphere = glutWireSphere hunk ./Graphics/UI/GLUT/Objects.hs 266 -foreign import CALLCONV unsafe "glutSolidCone" solidCone +solidCone hunk ./Graphics/UI/GLUT/Objects.hs 272 +solidCone = glutSolidCone hunk ./Graphics/UI/GLUT/Objects.hs 278 -foreign import CALLCONV unsafe "glutWireCone" wireCone +wireCone hunk ./Graphics/UI/GLUT/Objects.hs 284 - --------------------------------------------------------------------------------- - -EXTENSION_ENTRY(unsafe,"freeglut",glutSolidCylinder,Radius -> Height -> Slices -> Stacks -> IO ()) - -EXTENSION_ENTRY(unsafe,"freeglut",glutWireCylinder,Radius -> Height -> Slices -> Stacks -> IO ()) +wireCone = glutWireCone hunk ./Graphics/UI/GLUT/Objects.hs 291 -foreign import CALLCONV unsafe "glutSolidTorus" solidTorus +solidTorus hunk ./Graphics/UI/GLUT/Objects.hs 297 +solidTorus = glutSolidTorus hunk ./Graphics/UI/GLUT/Objects.hs 302 -foreign import CALLCONV unsafe "glutWireTorus" wireTorus +wireTorus hunk ./Graphics/UI/GLUT/Objects.hs 308 +wireTorus = glutWireTorus hunk ./Graphics/UI/GLUT/Objects.hs 314 -foreign import CALLCONV unsafe "glutSolidTeapot" solidTeapot +solidTeapot hunk ./Graphics/UI/GLUT/Objects.hs 317 +solidTeapot = glutSolidTeapot hunk ./Graphics/UI/GLUT/Objects.hs 321 -foreign import CALLCONV unsafe "glutWireTeapot" wireTeapot +wireTeapot hunk ./Graphics/UI/GLUT/Objects.hs 324 +wireTeapot = glutWireTeapot hunk ./Graphics/UI/GLUT/Objects.hs 331 -EXTENSION_ENTRY(unsafe,"freeglut",glutSolidSierpinskiSponge,CInt -> Ptr (Vertex3 GLdouble) -> Height -> IO ()) - hunk ./Graphics/UI/GLUT/Objects.hs 334 -EXTENSION_ENTRY(unsafe,"freeglut",glutWireSierpinskiSponge,CInt -> Ptr (Vertex3 GLdouble) -> Height -> IO ()) - hunk ./Graphics/UI/GLUT/Objects.hs 335 -sierpinskiSponge :: (CInt -> Ptr (Vertex3 GLdouble) -> Height -> IO ()) -> NumLevels -> IO () +sierpinskiSponge :: (CInt -> Ptr GLdouble -> Height -> IO ()) -> NumLevels -> IO () hunk ./Graphics/UI/GLUT/Objects.hs 338 - f (fromIntegral n) offsetBuf 1 + f (fromIntegral n) ((castPtr :: Ptr (Vertex3 GLdouble) -> Ptr GLdouble) offsetBuf) 1 hunk ./Graphics/UI/GLUT/Overlay.hs 35 -import Graphics.UI.GLUT.Constants hunk ./Graphics/UI/GLUT/Overlay.hs 36 +import Graphics.UI.GLUT.Raw +import Graphics.UI.GLUT.Types hunk ./Graphics/UI/GLUT/Overlay.hs 82 -foreign import CALLCONV safe "glutRemoveOverlay" glutRemoveOverlay :: IO () - -foreign import CALLCONV safe "glutEstablishOverlay" glutEstablishOverlay :: IO () - hunk ./Graphics/UI/GLUT/Overlay.hs 110 -foreign import CALLCONV safe "glutShowOverlay" glutShowOverlay :: IO () - -foreign import CALLCONV safe "glutHideOverlay" glutHideOverlay :: IO () - hunk ./Graphics/UI/GLUT/Overlay.hs 144 -foreign import CALLCONV safe "glutUseLayer" glutUseLayer :: GLenum -> IO () - hunk ./Graphics/UI/GLUT/Overlay.hs 168 - maybe glutPostOverlayRedisplay glutPostWindowOverlayRedisplay - -foreign import CALLCONV safe "glutPostOverlayRedisplay" - glutPostOverlayRedisplay :: IO () - -foreign import CALLCONV safe "glutPostWindowOverlayRedisplay" - glutPostWindowOverlayRedisplay :: Window -> IO () + maybe glutPostOverlayRedisplay (\(Window win) -> glutPostWindowOverlayRedisplay win) hunk ./Graphics/UI/GLUT/QueryUtils.hs 17 - Getter, simpleGet, layerGet, deviceGet, glutSetOption + Getter, simpleGet, layerGet, deviceGet hunk ./Graphics/UI/GLUT/QueryUtils.hs 22 -import Graphics.UI.GLUT.Extensions - --------------------------------------------------------------------------------- - -#include "HsGLUTExt.h" +import Graphics.UI.GLUT.Raw hunk ./Graphics/UI/GLUT/QueryUtils.hs 36 - -foreign import CALLCONV unsafe "glutGet" glutGet :: PrimGetter -foreign import CALLCONV unsafe "glutLayerGet" glutLayerGet :: PrimGetter -foreign import CALLCONV unsafe "glutDeviceGet" glutDeviceGet :: PrimGetter - --- Not really a query function, but it's quite handy to have it here -EXTENSION_ENTRY(unsafe,"freeglut",glutSetOption,GLenum -> CInt -> IO ()) adddir ./Graphics/UI/GLUT/Raw addfile ./Graphics/UI/GLUT/Raw.hs hunk ./Graphics/UI/GLUT/Raw.hs 1 +-- #hide +----------------------------------------------------------------------------- +-- | +-- Module : Graphics.UI.GLUT.Raw +-- Copyright : (c) Sven Panne 2009 +-- License : BSD-style (see the file LICENSE) +-- +-- Maintainer : sven.panne@aedion.de +-- Stability : stable +-- Portability : portable +-- +-- A convenience module, combining all raw GLUT modules. +-- +----------------------------------------------------------------------------- + +module Graphics.UI.GLUT.Raw ( + module Graphics.UI.GLUT.Raw.APIEntry, + module Graphics.UI.GLUT.Raw.Callbacks, + module Graphics.UI.GLUT.Raw.Fonts, + module Graphics.UI.GLUT.Raw.Functions, + module Graphics.UI.GLUT.Raw.Tokens +) where + +import Graphics.UI.GLUT.Raw.APIEntry +import Graphics.UI.GLUT.Raw.Callbacks +import Graphics.UI.GLUT.Raw.Fonts +import Graphics.UI.GLUT.Raw.Functions +import Graphics.UI.GLUT.Raw.Tokens addfile ./Graphics/UI/GLUT/Raw/APIEntry.hs hunk ./Graphics/UI/GLUT/Raw/APIEntry.hs 1 +{-# LANGUAGE ForeignFunctionInterface, CPP #-} +-- #hide +-------------------------------------------------------------------------------- +-- | +-- Module : Graphics.UI.GLUT.Raw.APIEntry +-- Copyright : (c) Sven Panne 2002-2009 +-- License : BSD-style (see the file LICENSE) +-- +-- Maintainer : sven.panne@aedion.de +-- Stability : provisional +-- Portability : portable +-- +-- This is a purely internal module for handling an OpenGL-like extension +-- mechanism for GLUT. +-- +-------------------------------------------------------------------------------- + +module Graphics.UI.GLUT.Raw.APIEntry ( + Invoker, getAPIEntry, getAPIEntryInternal, + FunPtr, unsafePerformIO +) where + +import Foreign.C.String +import Foreign.Marshal.Error +import Foreign.Ptr +import System.IO.Unsafe + +#ifdef __HUGS__ +{-# CFILES cbits/HsGLUT.c #-} +#endif + +-------------------------------------------------------------------------------- + +type Invoker a = FunPtr a -> a + +-- | Retrieve a GLUT API entry by name. Throws a userError when no entry with +-- the given name was found. +getAPIEntry :: String -> IO (FunPtr a) +getAPIEntry extensionEntry = + throwIfNullFunPtr ("unknown GLUT entry " ++ extensionEntry) $ + getAPIEntryInternal extensionEntry + +throwIfNullFunPtr :: String -> IO (FunPtr a) -> IO (FunPtr a) +throwIfNullFunPtr = throwIf (== nullFunPtr) . const + +getAPIEntryInternal :: String -> IO (FunPtr a) +getAPIEntryInternal extensionEntry = + withCString extensionEntry hs_GLUT_getProcAddress + +foreign import ccall unsafe "hs_GLUT_getProcAddress" + hs_GLUT_getProcAddress :: CString -> IO (FunPtr a) addfile ./Graphics/UI/GLUT/Raw/Callbacks.hs hunk ./Graphics/UI/GLUT/Raw/Callbacks.hs 1 +{-# LANGUAGE ForeignFunctionInterface #-} +-- #hide +----------------------------------------------------------------------------- +-- | +-- Module : Graphics.UI.GLUT.Raw.Callbacks +-- Copyright : (c) Sven Panne 2009 +-- License : BSD-style (see the file LICENSE) +-- +-- Maintainer : sven.panne@aedion.de +-- Stability : stable +-- Portability : portable +-- +-- All GLUT callbacks. +-- +----------------------------------------------------------------------------- + +module Graphics.UI.GLUT.Raw.Callbacks ( + MenuFunc, makeMenuFunc, + ButtonBoxFunc, makeButtonBoxFunc, + CloseFunc, makeCloseFunc, + DialsFunc, makeDialsFunc, + DisplayFunc, makeDisplayFunc, + EntryFunc, makeEntryFunc, + IdleFunc, makeIdleFunc, + JoystickFunc, makeJoystickFunc, + KeyboardFunc, makeKeyboardFunc, + KeyboardUpFunc, makeKeyboardUpFunc, + MenuDestroyFunc, makeMenuDestroyFunc, + MenuStateFunc, makeMenuStateFunc, + MenuStatusFunc, makeMenuStatusFunc, + MotionFunc, makeMotionFunc, + MouseFunc, makeMouseFunc, + MouseWheelFunc, makeMouseWheelFunc, + OverlayDisplayFunc, makeOverlayDisplayFunc, + PassiveMotionFunc, makePassiveMotionFunc, + ReshapeFunc, makeReshapeFunc, + SpaceballButtonFunc, makeSpaceballButtonFunc, + SpaceballMotionFunc, makeSpaceballMotionFunc, + SpaceballRotateFunc, makeSpaceballRotateFunc, + SpecialFunc, makeSpecialFunc, + SpecialUpFunc, makeSpecialUpFunc, + TabletButtonFunc, makeTabletButtonFunc, + TabletMotionFunc, makeTabletMotionFunc, + TimerFunc, makeTimerFunc, + VisibilityFunc, makeVisibilityFunc, + WMCloseFunc, makeWMCloseFunc, + WindowStatusFunc, makeWindowStatusFunc +) where + +import Foreign.C.Types +import Foreign.Ptr + +type MenuFunc = CInt -> IO () + +foreign import ccall "wrapper" + makeMenuFunc :: MenuFunc -> IO (FunPtr MenuFunc) + +type ButtonBoxFunc = CInt -> CInt -> IO () + +foreign import ccall "wrapper" + makeButtonBoxFunc :: ButtonBoxFunc -> IO (FunPtr ButtonBoxFunc) + +type CloseFunc = IO () + +foreign import ccall "wrapper" + makeCloseFunc :: CloseFunc -> IO (FunPtr CloseFunc) + +type DialsFunc = CInt -> CInt -> IO () + +foreign import ccall "wrapper" + makeDialsFunc :: DialsFunc -> IO (FunPtr DialsFunc) + +type DisplayFunc = IO () + +foreign import ccall "wrapper" + makeDisplayFunc :: DisplayFunc -> IO (FunPtr DisplayFunc) + +type EntryFunc = CInt -> IO () + +foreign import ccall "wrapper" + makeEntryFunc :: EntryFunc -> IO (FunPtr EntryFunc) + +type IdleFunc = IO () + +foreign import ccall "wrapper" + makeIdleFunc :: IdleFunc -> IO (FunPtr IdleFunc) + +type JoystickFunc = CUInt -> CInt -> CInt -> CInt -> IO () + +foreign import ccall "wrapper" + makeJoystickFunc :: JoystickFunc -> IO (FunPtr JoystickFunc) + +type KeyboardFunc = CUChar -> CInt -> CInt -> IO () + +foreign import ccall "wrapper" + makeKeyboardFunc :: KeyboardFunc -> IO (FunPtr KeyboardFunc) + +type KeyboardUpFunc = CUChar -> CInt -> CInt -> IO () + +foreign import ccall "wrapper" + makeKeyboardUpFunc :: KeyboardUpFunc -> IO (FunPtr KeyboardUpFunc) + +type MenuDestroyFunc = IO () + +foreign import ccall "wrapper" + makeMenuDestroyFunc :: MenuDestroyFunc -> IO (FunPtr MenuDestroyFunc) + +type MenuStateFunc = CInt -> IO () + +foreign import ccall "wrapper" + makeMenuStateFunc :: MenuStateFunc -> IO (FunPtr MenuStateFunc) + +type MenuStatusFunc = CInt -> CInt -> CInt -> IO () + +foreign import ccall "wrapper" + makeMenuStatusFunc :: MenuStatusFunc -> IO (FunPtr MenuStatusFunc) + +type MotionFunc = CInt -> CInt -> IO () + +foreign import ccall "wrapper" + makeMotionFunc :: MotionFunc -> IO (FunPtr MotionFunc) + +type MouseFunc = CInt -> CInt -> CInt -> CInt -> IO () + +foreign import ccall "wrapper" + makeMouseFunc :: MouseFunc -> IO (FunPtr MouseFunc) + +type MouseWheelFunc = CInt -> CInt -> CInt -> CInt -> IO () + +foreign import ccall "wrapper" + makeMouseWheelFunc :: MouseWheelFunc -> IO (FunPtr MouseWheelFunc) + +type OverlayDisplayFunc = IO () + +foreign import ccall "wrapper" + makeOverlayDisplayFunc :: OverlayDisplayFunc -> IO (FunPtr OverlayDisplayFunc) + +type PassiveMotionFunc = CInt -> CInt -> IO () + +foreign import ccall "wrapper" + makePassiveMotionFunc :: PassiveMotionFunc -> IO (FunPtr PassiveMotionFunc) + +type ReshapeFunc = CInt -> CInt -> IO () + +foreign import ccall "wrapper" + makeReshapeFunc :: ReshapeFunc -> IO (FunPtr ReshapeFunc) + +type SpaceballButtonFunc = CInt -> CInt -> IO () + +foreign import ccall "wrapper" + makeSpaceballButtonFunc :: SpaceballButtonFunc -> IO (FunPtr SpaceballButtonFunc) + +type SpaceballMotionFunc = CInt -> CInt -> CInt -> IO () + +foreign import ccall "wrapper" + makeSpaceballMotionFunc :: SpaceballMotionFunc -> IO (FunPtr SpaceballMotionFunc) + +type SpaceballRotateFunc = CInt -> CInt -> CInt -> IO () + +foreign import ccall "wrapper" + makeSpaceballRotateFunc :: SpaceballRotateFunc -> IO (FunPtr SpaceballRotateFunc) + +type SpecialFunc = CInt -> CInt -> CInt -> IO () + +foreign import ccall "wrapper" + makeSpecialFunc :: SpecialFunc -> IO (FunPtr SpecialFunc) + +type SpecialUpFunc = CInt -> CInt -> CInt -> IO () + +foreign import ccall "wrapper" + makeSpecialUpFunc :: SpecialUpFunc -> IO (FunPtr SpecialUpFunc) + +type TabletButtonFunc = CInt -> CInt -> CInt -> CInt -> IO () + +foreign import ccall "wrapper" + makeTabletButtonFunc :: TabletButtonFunc -> IO (FunPtr TabletButtonFunc) + +type TabletMotionFunc = CInt -> CInt -> IO () + +foreign import ccall "wrapper" + makeTabletMotionFunc :: TabletMotionFunc -> IO (FunPtr TabletMotionFunc) + +type TimerFunc = CInt -> IO () + +foreign import ccall "wrapper" + makeTimerFunc :: TimerFunc -> IO (FunPtr TimerFunc) + +type VisibilityFunc = CInt -> IO () + +foreign import ccall "wrapper" + makeVisibilityFunc :: VisibilityFunc -> IO (FunPtr VisibilityFunc) + +type WMCloseFunc = IO () + +foreign import ccall "wrapper" + makeWMCloseFunc :: WMCloseFunc -> IO (FunPtr WMCloseFunc) + +type WindowStatusFunc = CInt -> IO () + +foreign import ccall "wrapper" + makeWindowStatusFunc :: WindowStatusFunc -> IO (FunPtr WindowStatusFunc) addfile ./Graphics/UI/GLUT/Raw/Fonts.hs hunk ./Graphics/UI/GLUT/Raw/Fonts.hs 1 +{-# LANGUAGE ForeignFunctionInterface #-} +-- #hide +----------------------------------------------------------------------------- +-- | +-- Module : Graphics.UI.GLUT.Raw.Fonts +-- Copyright : (c) Sven Panne 2009 +-- License : BSD-style (see the file LICENSE) +-- +-- Maintainer : sven.panne@aedion.de +-- Stability : stable +-- Portability : portable +-- +-- Our own functions to access font identifiers in a portable way. +-- +----------------------------------------------------------------------------- + +module Graphics.UI.GLUT.Raw.Fonts ( + hs_GLUT_marshalBitmapFont, + hs_GLUT_marshalStrokeFont +) where + +import Foreign.C.Types +import Foreign.Ptr + +foreign import ccall unsafe "hs_GLUT_marshalBitmapFont" + hs_GLUT_marshalBitmapFont :: CInt -> IO (Ptr a) + +foreign import ccall unsafe "hs_GLUT_marshalStrokeFont" + hs_GLUT_marshalStrokeFont :: CInt -> IO (Ptr a) addfile ./Graphics/UI/GLUT/Raw/Functions.hs hunk ./Graphics/UI/GLUT/Raw/Functions.hs 1 +{-# LANGUAGE ForeignFunctionInterface, CPP #-} +-- #hide +----------------------------------------------------------------------------- +-- | +-- Module : Graphics.UI.GLUT.Raw.Functions +-- Copyright : (c) Sven Panne 2009 +-- License : BSD-style (see the file LICENSE) +-- +-- Maintainer : sven.panne@aedion.de +-- Stability : stable +-- Portability : portable +-- +-- All raw functions from GLUT and freeglut. +-- +----------------------------------------------------------------------------- + +module Graphics.UI.GLUT.Raw.Functions ( + glutGetProcAddress, + glutGetColor, + glutStrokeHeight, + glutBitmapHeight, + glutBitmapLength, + glutBitmapWidth, + glutCreateMenu, + glutCreateSubWindow, + glutCreateWindow, + glutDeviceGet, + glutEnterGameMode, + glutExtensionSupported, + glutGameModeGet, + glutGet, + glutGetMenu, + glutGetModifiers, + glutGetWindow, + glutLayerGet, + glutStrokeLength, + glutStrokeWidth, + glutVideoResizeGet, + glutGetModeValues, + glutAddMenuEntry, + glutAddSubMenu, + glutAttachMenu, + glutBitmapCharacter, + glutBitmapString, + glutButtonBoxFunc, + glutChangeToMenuEntry, + glutChangeToSubMenu, + glutCloseFunc, + glutCopyColormap, + glutDestroyMenu, + glutDestroyWindow, + glutDetachMenu, + glutDialsFunc, + glutDisplayFunc, + glutEntryFunc, + glutEstablishOverlay, + glutExit, + glutForceJoystickFunc, + glutFullScreen, + glutFullScreenToggle, + glutGameModeString, + glutHideOverlay, + glutHideWindow, + glutIconifyWindow, + glutIdleFunc, + glutIgnoreKeyRepeat, + glutInit, + glutInitContextFlags, + glutInitContextVersion, + glutInitDisplayMode, + glutInitDisplayString, + glutInitWindowPosition, + glutInitWindowSize, + glutJoystickFunc, + glutKeyboardFunc, + glutKeyboardUpFunc, + glutLeaveGameMode, + glutLeaveMainLoop, + glutMainLoop, + glutMainLoopEvent, + glutMenuDestroyFunc, + glutMenuStateFunc, + glutMenuStatusFunc, + glutMotionFunc, + glutMouseFunc, + glutMouseWheelFunc, + glutOverlayDisplayFunc, + glutPassiveMotionFunc, + glutPopWindow, + glutPositionWindow, + glutPostOverlayRedisplay, + glutPostRedisplay, + glutPostWindowOverlayRedisplay, + glutPostWindowRedisplay, + glutPushWindow, + glutRemoveMenuItem, + glutRemoveOverlay, + glutReportErrors, + glutReshapeFunc, + glutReshapeWindow, + glutSetColor, + glutSetCursor, + glutSetIconTitle, + glutSetKeyRepeat, + glutSetMenu, + glutSetMenuData, + glutSetOption, + glutSetWindow, + glutSetWindowData, + glutSetWindowTitle, + glutSetupVideoResizing, + glutShowOverlay, + glutShowWindow, + glutSolidCone, + glutSolidCube, + glutSolidCylinder, + glutSolidDodecahedron, + glutSolidIcosahedron, + glutSolidOctahedron, + glutSolidRhombicDodecahedron, + glutSolidSierpinskiSponge, + glutSolidSphere, + glutSolidTeapot, + glutSolidTetrahedron, + glutSolidTorus, + glutSpaceballButtonFunc, + glutSpaceballMotionFunc, + glutSpaceballRotateFunc, + glutSpecialFunc, + glutSpecialUpFunc, + glutStopVideoResizing, + glutStrokeCharacter, + glutStrokeString, + glutSwapBuffers, + glutTabletButtonFunc, + glutTabletMotionFunc, + glutTimerFunc, + glutUseLayer, + glutVideoPan, + glutVideoResize, + glutVisibilityFunc, + glutWMCloseFunc, + glutWarpPointer, + glutWindowStatusFunc, + glutWireCone, + glutWireCube, + glutWireCylinder, + glutWireDodecahedron, + glutWireIcosahedron, + glutWireOctahedron, + glutWireRhombicDodecahedron, + glutWireSierpinskiSponge, + glutWireSphere, + glutWireTeapot, + glutWireTetrahedron, + glutWireTorus, + glutGetMenuData, + glutGetWindowData +) where + +import Foreign.C.Types +import Foreign.Ptr +import Graphics.Rendering.OpenGL ( GLint, GLenum, GLfloat, GLdouble ) +import Graphics.UI.GLUT.Raw.APIEntry +import Graphics.UI.GLUT.Raw.Callbacks + +#include "HsGLUTExt.h" + +API_ENTRY(glutGetProcAddress,Ptr CChar -> IO (FunPtr a)) +API_ENTRY(glutGetColor,CInt -> CInt -> IO GLfloat) +API_ENTRY(glutStrokeHeight,Ptr a -> IO GLfloat) +API_ENTRY(glutBitmapHeight,Ptr a -> IO CInt) +API_ENTRY(glutBitmapLength,Ptr a -> Ptr CUChar -> IO CInt) +API_ENTRY(glutBitmapWidth,Ptr a -> CInt -> IO CInt) +API_ENTRY(glutCreateMenu,FunPtr MenuFunc -> IO CInt) +API_ENTRY(glutCreateSubWindow,CInt -> CInt -> CInt -> CInt -> CInt -> IO CInt) +API_ENTRY(glutCreateWindow,Ptr CChar -> IO CInt) +API_ENTRY(glutDeviceGet,GLenum -> IO CInt) +API_ENTRY(glutEnterGameMode,IO CInt) +API_ENTRY(glutExtensionSupported,Ptr CChar -> IO CInt) +API_ENTRY(glutGameModeGet,GLenum -> IO CInt) +API_ENTRY(glutGet,GLenum -> IO CInt) +API_ENTRY(glutGetMenu,IO CInt) +API_ENTRY(glutGetModifiers,IO CInt) +API_ENTRY(glutGetWindow,IO CInt) +API_ENTRY(glutLayerGet,GLenum -> IO CInt) +API_ENTRY(glutStrokeLength,Ptr a -> Ptr CUChar -> IO CInt) +API_ENTRY(glutStrokeWidth,Ptr a -> CInt -> IO CInt) +API_ENTRY(glutVideoResizeGet,GLenum -> IO CInt) +API_ENTRY(glutGetModeValues,GLenum -> Ptr CInt -> IO (Ptr CInt)) +API_ENTRY(glutAddMenuEntry,Ptr CChar -> CInt -> IO ()) +API_ENTRY(glutAddSubMenu,Ptr CChar -> CInt -> IO ()) +API_ENTRY(glutAttachMenu,CInt -> IO ()) +API_ENTRY(glutBitmapCharacter,Ptr a -> CInt -> IO ()) +API_ENTRY(glutBitmapString,Ptr a -> Ptr CUChar -> IO ()) +API_ENTRY(glutButtonBoxFunc,FunPtr ButtonBoxFunc -> IO ()) +API_ENTRY(glutChangeToMenuEntry,CInt -> Ptr CChar -> CInt -> IO ()) +API_ENTRY(glutChangeToSubMenu,CInt -> Ptr CChar -> CInt -> IO ()) +API_ENTRY(glutCloseFunc,FunPtr CloseFunc -> IO ()) +API_ENTRY(glutCopyColormap,CInt -> IO ()) +API_ENTRY(glutDestroyMenu,CInt -> IO ()) +API_ENTRY(glutDestroyWindow,CInt -> IO ()) +API_ENTRY(glutDetachMenu,CInt -> IO ()) +API_ENTRY(glutDialsFunc,FunPtr DialsFunc -> IO ()) +API_ENTRY(glutDisplayFunc,FunPtr DisplayFunc -> IO ()) +API_ENTRY(glutEntryFunc,FunPtr EntryFunc -> IO ()) +API_ENTRY_SAFE(glutEstablishOverlay,IO ()) +API_ENTRY(glutExit,IO ()) +API_ENTRY(glutForceJoystickFunc,IO ()) +API_ENTRY(glutFullScreen,IO ()) +API_ENTRY(glutFullScreenToggle,IO ()) +API_ENTRY(glutGameModeString,Ptr CChar -> IO ()) +API_ENTRY_SAFE(glutHideOverlay,IO ()) +API_ENTRY(glutHideWindow,IO ()) +API_ENTRY(glutIconifyWindow,IO ()) +API_ENTRY(glutIdleFunc,FunPtr IdleFunc -> IO ()) +API_ENTRY(glutIgnoreKeyRepeat,CInt -> IO ()) +API_ENTRY(glutInit,Ptr CInt -> Ptr (Ptr CChar) -> IO ()) +API_ENTRY(glutInitContextFlags,CInt -> IO ()) +API_ENTRY(glutInitContextVersion,CInt -> CInt -> IO ()) +API_ENTRY(glutInitDisplayMode,CUInt -> IO ()) +API_ENTRY(glutInitDisplayString,Ptr CChar -> IO ()) +API_ENTRY(glutInitWindowPosition,CInt -> CInt -> IO ()) +API_ENTRY(glutInitWindowSize,CInt -> CInt -> IO ()) +API_ENTRY(glutJoystickFunc,FunPtr JoystickFunc -> CInt -> IO ()) +API_ENTRY(glutKeyboardFunc,FunPtr KeyboardFunc -> IO ()) +API_ENTRY(glutKeyboardUpFunc,FunPtr KeyboardUpFunc -> IO ()) +API_ENTRY(glutLeaveGameMode,IO ()) +API_ENTRY_SAFE(glutLeaveMainLoop,IO ()) +API_ENTRY_SAFE(glutMainLoop,IO ()) +API_ENTRY_SAFE(glutMainLoopEvent,IO ()) +API_ENTRY(glutMenuDestroyFunc,FunPtr MenuDestroyFunc -> IO ()) +API_ENTRY(glutMenuStateFunc,FunPtr MenuStateFunc -> IO ()) +API_ENTRY(glutMenuStatusFunc,FunPtr MenuStatusFunc -> IO ()) +API_ENTRY(glutMotionFunc,FunPtr MotionFunc -> IO ()) +API_ENTRY(glutMouseFunc,FunPtr MouseFunc -> IO ()) +API_ENTRY(glutMouseWheelFunc,FunPtr MouseWheelFunc -> IO ()) +API_ENTRY(glutOverlayDisplayFunc,FunPtr OverlayDisplayFunc -> IO ()) +API_ENTRY(glutPassiveMotionFunc,FunPtr PassiveMotionFunc -> IO ()) +API_ENTRY(glutPopWindow,IO ()) +API_ENTRY(glutPositionWindow,CInt -> CInt -> IO ()) +API_ENTRY_SAFE(glutPostOverlayRedisplay,IO ()) +API_ENTRY(glutPostRedisplay,IO ()) +API_ENTRY_SAFE(glutPostWindowOverlayRedisplay,CInt -> IO ()) +API_ENTRY(glutPostWindowRedisplay,CInt -> IO ()) +API_ENTRY(glutPushWindow,IO ()) +API_ENTRY(glutRemoveMenuItem,CInt -> IO ()) +API_ENTRY_SAFE(glutRemoveOverlay,IO ()) +API_ENTRY(glutReportErrors,IO ()) +API_ENTRY(glutReshapeFunc,FunPtr ReshapeFunc -> IO ()) +API_ENTRY(glutReshapeWindow,CInt -> CInt -> IO ()) +API_ENTRY(glutSetColor,CInt -> GLfloat -> GLfloat -> GLfloat -> IO ()) +API_ENTRY(glutSetCursor,CInt -> IO ()) +API_ENTRY(glutSetIconTitle,Ptr CChar -> IO ()) +API_ENTRY(glutSetKeyRepeat,CInt -> IO ()) +API_ENTRY(glutSetMenu,CInt -> IO ()) +API_ENTRY(glutSetMenuData,Ptr a -> IO ()) +API_ENTRY(glutSetOption,GLenum -> CInt -> IO ()) +API_ENTRY(glutSetWindow,CInt -> IO ()) +API_ENTRY(glutSetWindowData,Ptr a -> IO ()) +API_ENTRY(glutSetWindowTitle,Ptr CChar -> IO ()) +API_ENTRY(glutSetupVideoResizing,IO ()) +API_ENTRY_SAFE(glutShowOverlay,IO ()) +API_ENTRY(glutShowWindow,IO ()) +API_ENTRY(glutSolidCone,GLdouble -> GLdouble -> GLint -> GLint -> IO ()) +API_ENTRY(glutSolidCube,GLdouble -> IO ()) +API_ENTRY(glutSolidCylinder,GLdouble -> GLdouble -> GLint -> GLint -> IO ()) +API_ENTRY(glutSolidDodecahedron,IO ()) +API_ENTRY(glutSolidIcosahedron,IO ()) +API_ENTRY(glutSolidOctahedron,IO ()) +API_ENTRY(glutSolidRhombicDodecahedron,IO ()) +API_ENTRY(glutSolidSierpinskiSponge,CInt -> Ptr GLdouble -> GLdouble -> IO ()) +API_ENTRY(glutSolidSphere,GLdouble -> GLint -> GLint -> IO ()) +API_ENTRY(glutSolidTeapot,GLdouble -> IO ()) +API_ENTRY(glutSolidTetrahedron,IO ()) +API_ENTRY(glutSolidTorus,GLdouble -> GLdouble -> GLint -> GLint -> IO ()) +API_ENTRY(glutSpaceballButtonFunc,FunPtr SpaceballButtonFunc -> IO ()) +API_ENTRY(glutSpaceballMotionFunc,FunPtr SpaceballMotionFunc -> IO ()) +API_ENTRY(glutSpaceballRotateFunc,FunPtr SpaceballRotateFunc -> IO ()) +API_ENTRY(glutSpecialFunc,FunPtr SpecialFunc -> IO ()) +API_ENTRY(glutSpecialUpFunc,FunPtr SpecialUpFunc -> IO ()) +API_ENTRY(glutStopVideoResizing,IO ()) +API_ENTRY(glutStrokeCharacter,Ptr a -> CInt -> IO ()) +API_ENTRY(glutStrokeString,Ptr a -> Ptr CUChar -> IO ()) +API_ENTRY(glutSwapBuffers,IO ()) +API_ENTRY(glutTabletButtonFunc,FunPtr TabletButtonFunc -> IO ()) +API_ENTRY(glutTabletMotionFunc,FunPtr TabletMotionFunc -> IO ()) +API_ENTRY(glutTimerFunc,CUInt -> FunPtr TimerFunc -> CInt -> IO ()) +API_ENTRY_SAFE(glutUseLayer,GLenum -> IO ()) +API_ENTRY(glutVideoPan,CInt -> CInt -> CInt -> CInt -> IO ()) +API_ENTRY(glutVideoResize,CInt -> CInt -> CInt -> CInt -> IO ()) +API_ENTRY(glutVisibilityFunc,FunPtr VisibilityFunc -> IO ()) +API_ENTRY(glutWMCloseFunc,FunPtr WMCloseFunc -> IO ()) +API_ENTRY(glutWarpPointer,CInt -> CInt -> IO ()) +API_ENTRY(glutWindowStatusFunc,FunPtr WindowStatusFunc -> IO ()) +API_ENTRY(glutWireCone,GLdouble -> GLdouble -> GLint -> GLint -> IO ()) +API_ENTRY(glutWireCube,GLdouble -> IO ()) +API_ENTRY(glutWireCylinder,GLdouble -> GLdouble -> GLint -> GLint -> IO ()) +API_ENTRY(glutWireDodecahedron,IO ()) +API_ENTRY(glutWireIcosahedron,IO ()) +API_ENTRY(glutWireOctahedron,IO ()) +API_ENTRY(glutWireRhombicDodecahedron,IO ()) +API_ENTRY(glutWireSierpinskiSponge,CInt -> Ptr GLdouble -> GLdouble -> IO ()) +API_ENTRY(glutWireSphere,GLdouble -> GLint -> GLint -> IO ()) +API_ENTRY(glutWireTeapot,GLdouble -> IO ()) +API_ENTRY(glutWireTetrahedron,IO ()) +API_ENTRY(glutWireTorus,GLdouble -> GLdouble -> GLint -> GLint -> IO ()) +API_ENTRY(glutGetMenuData,IO (Ptr a)) +API_ENTRY(glutGetWindowData,IO (Ptr a)) addfile ./Graphics/UI/GLUT/Raw/Tokens.hs hunk ./Graphics/UI/GLUT/Raw/Tokens.hs 1 +-- #hide +----------------------------------------------------------------------------- +-- | +-- Module : Graphics.UI.GLUT.Raw.Tokens +-- Copyright : (c) Sven Panne 2009 +-- License : BSD-style (see the file LICENSE) +-- +-- Maintainer : sven.panne@aedion.de +-- Stability : stable +-- Portability : portable +-- +-- All tokens from GLUT and freeglut. +-- +----------------------------------------------------------------------------- + +module Graphics.UI.GLUT.Raw.Tokens where + +import Foreign.C.Types +import Graphics.Rendering.OpenGL ( GLenum ) + +glut_ACCUM :: GLenum +glut_ACCUM = 0x0004 + +glut_ACTION_CONTINUE_EXECUTION :: CInt +glut_ACTION_CONTINUE_EXECUTION = 2 + +glut_ACTION_EXIT :: CInt +glut_ACTION_EXIT = 0 + +glut_ACTION_GLUTMAINLOOP_RETURNS :: CInt +glut_ACTION_GLUTMAINLOOP_RETURNS = 1 + +glut_ACTION_ON_WINDOW_CLOSE :: GLenum +glut_ACTION_ON_WINDOW_CLOSE = 0x01F9 + +glut_ACTIVE_ALT :: CInt +glut_ACTIVE_ALT = 0x0004 + +glut_ACTIVE_CTRL :: CInt +glut_ACTIVE_CTRL = 0x0002 + +glut_ACTIVE_SHIFT :: CInt +glut_ACTIVE_SHIFT = 0x0001 + +glut_ALLOW_DIRECT_CONTEXT :: CInt +glut_ALLOW_DIRECT_CONTEXT = 1 + +glut_ALPHA :: GLenum +glut_ALPHA = 0x0008 + +glut_AUX :: GLenum +glut_AUX = 0x1000 + +glut_AUX1 :: GLenum +glut_AUX1 = 0x1000 + +glut_AUX2 :: GLenum +glut_AUX2 = 0x2000 + +glut_AUX3 :: GLenum +glut_AUX3 = 0x4000 + +glut_AUX4 :: GLenum +glut_AUX4 = 0x8000 + +glut_BLUE :: CInt +glut_BLUE = 0x0002 + +glut_BORDERLESS :: GLenum +glut_BORDERLESS = 0x0800 + +glut_CAPTIONLESS :: GLenum +glut_CAPTIONLESS = 0x0400 + +glut_CREATE_NEW_CONTEXT :: CInt +glut_CREATE_NEW_CONTEXT = 0 + +glut_CURSOR_BOTTOM_LEFT_CORNER :: CInt +glut_CURSOR_BOTTOM_LEFT_CORNER = 0x0013 + +glut_CURSOR_BOTTOM_RIGHT_CORNER :: CInt +glut_CURSOR_BOTTOM_RIGHT_CORNER = 0x0012 + +glut_CURSOR_BOTTOM_SIDE :: CInt +glut_CURSOR_BOTTOM_SIDE = 0x000D + +glut_CURSOR_CROSSHAIR :: CInt +glut_CURSOR_CROSSHAIR = 0x0009 + +glut_CURSOR_CYCLE :: CInt +glut_CURSOR_CYCLE = 0x0005 + +glut_CURSOR_DESTROY :: CInt +glut_CURSOR_DESTROY = 0x0003 + +glut_CURSOR_FULL_CROSSHAIR :: CInt +glut_CURSOR_FULL_CROSSHAIR = 0x0066 + +glut_CURSOR_HELP :: CInt +glut_CURSOR_HELP = 0x0004 + +glut_CURSOR_INFO :: CInt +glut_CURSOR_INFO = 0x0002 + +glut_CURSOR_INHERIT :: CInt +glut_CURSOR_INHERIT = 0x0064 + +glut_CURSOR_LEFT_ARROW :: CInt +glut_CURSOR_LEFT_ARROW = 0x0001 + +glut_CURSOR_LEFT_RIGHT :: CInt +glut_CURSOR_LEFT_RIGHT = 0x000B + +glut_CURSOR_LEFT_SIDE :: CInt +glut_CURSOR_LEFT_SIDE = 0x000E + +glut_CURSOR_NONE :: CInt +glut_CURSOR_NONE = 0x0065 + +glut_CURSOR_RIGHT_ARROW :: CInt +glut_CURSOR_RIGHT_ARROW = 0x0000 + +glut_CURSOR_RIGHT_SIDE :: CInt +glut_CURSOR_RIGHT_SIDE = 0x000F + +glut_CURSOR_SPRAY :: CInt +glut_CURSOR_SPRAY = 0x0006 + +glut_CURSOR_TEXT :: CInt +glut_CURSOR_TEXT = 0x0008 + +glut_CURSOR_TOP_LEFT_CORNER :: CInt +glut_CURSOR_TOP_LEFT_CORNER = 0x0010 + +glut_CURSOR_TOP_RIGHT_CORNER :: CInt +glut_CURSOR_TOP_RIGHT_CORNER = 0x0011 + +glut_CURSOR_TOP_SIDE :: CInt +glut_CURSOR_TOP_SIDE = 0x000C + +glut_CURSOR_UP_DOWN :: CInt +glut_CURSOR_UP_DOWN = 0x000A + +glut_CURSOR_WAIT :: CInt +glut_CURSOR_WAIT = 0x0007 + +glut_DEBUG :: CInt +glut_DEBUG = 0x0001 + +glut_DEPTH :: GLenum +glut_DEPTH = 0x0010 + +glut_DEVICE_IGNORE_KEY_REPEAT :: GLenum +glut_DEVICE_IGNORE_KEY_REPEAT = 0x0262 + +glut_DEVICE_KEY_REPEAT :: GLenum +glut_DEVICE_KEY_REPEAT = 0x0263 + +glut_DIRECT_RENDERING :: GLenum +glut_DIRECT_RENDERING = 0x01FE + +glut_DISPLAY_MODE_POSSIBLE :: GLenum +glut_DISPLAY_MODE_POSSIBLE = 0x0190 + +glut_DOUBLE :: GLenum +glut_DOUBLE = 0x0002 + +glut_DOWN :: CInt +glut_DOWN = 0x0000 + +glut_ELAPSED_TIME :: GLenum +glut_ELAPSED_TIME = 0x02BC + +glut_ENTERED :: CInt +glut_ENTERED = 0x0001 + +glut_FORCE_DIRECT_CONTEXT :: CInt +glut_FORCE_DIRECT_CONTEXT = 3 + +glut_FORCE_INDIRECT_CONTEXT :: CInt +glut_FORCE_INDIRECT_CONTEXT = 0 + +glut_FORWARD_COMPATIBLE :: CInt +glut_FORWARD_COMPATIBLE = 0x0002 + +glut_FULLY_COVERED :: CInt +glut_FULLY_COVERED = 0x0003 + +glut_FULLY_RETAINED :: CInt +glut_FULLY_RETAINED = 0x0001 + +glut_FULL_SCREEN :: GLenum +glut_FULL_SCREEN = 0x01FF + +glut_GAME_MODE_ACTIVE :: GLenum +glut_GAME_MODE_ACTIVE = 0x0000 + +glut_GAME_MODE_DISPLAY_CHANGED :: GLenum +glut_GAME_MODE_DISPLAY_CHANGED = 0x0006 + +glut_GAME_MODE_HEIGHT :: GLenum +glut_GAME_MODE_HEIGHT = 0x0003 + +glut_GAME_MODE_PIXEL_DEPTH :: GLenum +glut_GAME_MODE_PIXEL_DEPTH = 0x0004 + +glut_GAME_MODE_POSSIBLE :: GLenum +glut_GAME_MODE_POSSIBLE = 0x0001 + +glut_GAME_MODE_REFRESH_RATE :: GLenum +glut_GAME_MODE_REFRESH_RATE = 0x0005 + +glut_GAME_MODE_WIDTH :: GLenum +glut_GAME_MODE_WIDTH = 0x0002 + +glut_GREEN :: CInt +glut_GREEN = 0x0001 + +glut_HAS_DIAL_AND_BUTTON_BOX :: GLenum +glut_HAS_DIAL_AND_BUTTON_BOX = 0x025B + +glut_HAS_JOYSTICK :: GLenum +glut_HAS_JOYSTICK = 0x0264 + +glut_HAS_KEYBOARD :: GLenum +glut_HAS_KEYBOARD = 0x0258 + +glut_HAS_MOUSE :: GLenum +glut_HAS_MOUSE = 0x0259 + +glut_HAS_OVERLAY :: GLenum +glut_HAS_OVERLAY = 0x0322 + +glut_HAS_SPACEBALL :: GLenum +glut_HAS_SPACEBALL = 0x025A + +glut_HAS_TABLET :: GLenum +glut_HAS_TABLET = 0x025C + +glut_HIDDEN :: CInt +glut_HIDDEN = 0x0000 + +glut_INDEX :: GLenum +glut_INDEX = 0x0001 + +glut_INIT_DISPLAY_MODE :: GLenum +glut_INIT_DISPLAY_MODE = 0x01F8 + +glut_INIT_FLAGS :: GLenum +glut_INIT_FLAGS = 0x0202 + +glut_INIT_MAJOR_VERSION :: GLenum +glut_INIT_MAJOR_VERSION = 0x0200 + +glut_INIT_MINOR_VERSION :: GLenum +glut_INIT_MINOR_VERSION = 0x0201 + +glut_INIT_STATE :: GLenum +glut_INIT_STATE = 0x007C + +glut_INIT_WINDOW_HEIGHT :: GLenum +glut_INIT_WINDOW_HEIGHT = 0x01F7 + +glut_INIT_WINDOW_WIDTH :: GLenum +glut_INIT_WINDOW_WIDTH = 0x01F6 + +glut_INIT_WINDOW_X :: GLenum +glut_INIT_WINDOW_X = 0x01F4 + +glut_INIT_WINDOW_Y :: GLenum +glut_INIT_WINDOW_Y = 0x01F5 + +glut_JOYSTICK_AXES :: GLenum +glut_JOYSTICK_AXES = 0x0267 + +glut_JOYSTICK_BUTTONS :: GLenum +glut_JOYSTICK_BUTTONS = 0x0266 + +glut_JOYSTICK_BUTTON_A :: GLenum +glut_JOYSTICK_BUTTON_A = 0x0001 + +glut_JOYSTICK_BUTTON_B :: GLenum +glut_JOYSTICK_BUTTON_B = 0x0002 + +glut_JOYSTICK_BUTTON_C :: GLenum +glut_JOYSTICK_BUTTON_C = 0x0004 + +glut_JOYSTICK_BUTTON_D :: GLenum +glut_JOYSTICK_BUTTON_D = 0x0008 + +glut_JOYSTICK_POLL_RATE :: GLenum +glut_JOYSTICK_POLL_RATE = 0x0268 + +glut_KEY_BEGIN :: CInt +glut_KEY_BEGIN = 0x006E + +glut_KEY_DELETE :: CInt +glut_KEY_DELETE = 0x006F + +glut_KEY_DOWN :: CInt +glut_KEY_DOWN = 0x0067 + +glut_KEY_END :: CInt +glut_KEY_END = 0x006B + +glut_KEY_F1 :: CInt +glut_KEY_F1 = 0x0001 + +glut_KEY_F10 :: CInt +glut_KEY_F10 = 0x000A + +glut_KEY_F11 :: CInt +glut_KEY_F11 = 0x000B + +glut_KEY_F12 :: CInt +glut_KEY_F12 = 0x000C + +glut_KEY_F2 :: CInt +glut_KEY_F2 = 0x0002 + +glut_KEY_F3 :: CInt +glut_KEY_F3 = 0x0003 + +glut_KEY_F4 :: CInt +glut_KEY_F4 = 0x0004 + +glut_KEY_F5 :: CInt +glut_KEY_F5 = 0x0005 + +glut_KEY_F6 :: CInt +glut_KEY_F6 = 0x0006 + +glut_KEY_F7 :: CInt +glut_KEY_F7 = 0x0007 + +glut_KEY_F8 :: CInt +glut_KEY_F8 = 0x0008 + +glut_KEY_F9 :: CInt +glut_KEY_F9 = 0x0009 + +glut_KEY_HOME :: CInt +glut_KEY_HOME = 0x006A + +glut_KEY_INSERT :: CInt +glut_KEY_INSERT = 0x006C + +glut_KEY_LEFT :: CInt +glut_KEY_LEFT = 0x0064 + +glut_KEY_NUM_LOCK :: CInt +glut_KEY_NUM_LOCK = 0x006D + +glut_KEY_PAGE_DOWN :: CInt +glut_KEY_PAGE_DOWN = 0x0069 + +glut_KEY_PAGE_UP :: CInt +glut_KEY_PAGE_UP = 0x0068 + +glut_KEY_REPEAT_DEFAULT :: CInt +glut_KEY_REPEAT_DEFAULT = 0x0002 + +glut_KEY_REPEAT_OFF :: CInt +glut_KEY_REPEAT_OFF = 0x0000 + +glut_KEY_REPEAT_ON :: CInt +glut_KEY_REPEAT_ON = 0x0001 + +glut_KEY_RIGHT :: CInt +glut_KEY_RIGHT = 0x0066 + +glut_KEY_UP :: CInt +glut_KEY_UP = 0x0065 + +glut_LAYER_IN_USE :: GLenum +glut_LAYER_IN_USE = 0x0321 + +glut_LEFT :: CInt +glut_LEFT = 0x0000 + +glut_LEFT_BUTTON :: CInt +glut_LEFT_BUTTON = 0x0000 + +glut_LUMINANCE :: GLenum +glut_LUMINANCE = 0x0200 + +glut_MENU_IN_USE :: CInt +glut_MENU_IN_USE = 0x0001 + +glut_MENU_NOT_IN_USE :: CInt +glut_MENU_NOT_IN_USE = 0x0000 + +glut_MENU_NUM_ITEMS :: GLenum +glut_MENU_NUM_ITEMS = 0x012C + +glut_MIDDLE_BUTTON :: CInt +glut_MIDDLE_BUTTON = 0x0001 + +glut_MULTISAMPLE :: GLenum +glut_MULTISAMPLE = 0x0080 + +glut_NORMAL :: GLenum +glut_NORMAL = 0x0000 + +glut_NORMAL_DAMAGED :: GLenum +glut_NORMAL_DAMAGED = 0x0324 + +glut_NOT_VISIBLE :: CInt +glut_NOT_VISIBLE = 0x0000 + +glut_NUM_BUTTON_BOX_BUTTONS :: GLenum +glut_NUM_BUTTON_BOX_BUTTONS = 0x025F + +glut_NUM_DIALS :: GLenum +glut_NUM_DIALS = 0x0260 + +glut_NUM_MOUSE_BUTTONS :: GLenum +glut_NUM_MOUSE_BUTTONS = 0x025D + +glut_NUM_SPACEBALL_BUTTONS :: GLenum +glut_NUM_SPACEBALL_BUTTONS = 0x025E + +glut_NUM_TABLET_BUTTONS :: GLenum +glut_NUM_TABLET_BUTTONS = 0x0261 + +glut_OVERLAY :: GLenum +glut_OVERLAY = 0x0001 + +glut_OVERLAY_DAMAGED :: GLenum +glut_OVERLAY_DAMAGED = 0x0325 + +glut_OVERLAY_POSSIBLE :: GLenum +glut_OVERLAY_POSSIBLE = 0x0320 + +glut_OWNS_JOYSTICK :: GLenum +glut_OWNS_JOYSTICK = 0x0265 + +glut_PARTIALLY_RETAINED :: CInt +glut_PARTIALLY_RETAINED = 0x0002 + +glut_RED :: CInt +glut_RED = 0x0000 + +glut_RENDERING_CONTEXT :: GLenum +glut_RENDERING_CONTEXT = 0x01FD + +glut_RGB :: GLenum +glut_RGB = 0x0000 + +glut_RGBA :: GLenum +glut_RGBA = 0x0000 + +glut_RIGHT_BUTTON :: CInt +glut_RIGHT_BUTTON = 0x0002 + +glut_SCREEN_HEIGHT :: GLenum +glut_SCREEN_HEIGHT = 0x00C9 + +glut_SCREEN_HEIGHT_MM :: GLenum +glut_SCREEN_HEIGHT_MM = 0x00CB + +glut_SCREEN_WIDTH :: GLenum +glut_SCREEN_WIDTH = 0x00C8 + +glut_SCREEN_WIDTH_MM :: GLenum +glut_SCREEN_WIDTH_MM = 0x00CA + +glut_SINGLE :: GLenum +glut_SINGLE = 0x0000 + +glut_STENCIL :: GLenum +glut_STENCIL = 0x0020 + +glut_STEREO :: GLenum +glut_STEREO = 0x0100 + +glut_TRANSPARENT_INDEX :: GLenum +glut_TRANSPARENT_INDEX = 0x0323 + +glut_TRY_DIRECT_CONTEXT :: CInt +glut_TRY_DIRECT_CONTEXT = 2 + +glut_UP :: CInt +glut_UP = 0x0001 + +glut_USE_CURRENT_CONTEXT :: CInt +glut_USE_CURRENT_CONTEXT = 1 + +glut_VERSION :: GLenum +glut_VERSION = 0x01FC + +glut_VIDEO_RESIZE_HEIGHT :: GLenum +glut_VIDEO_RESIZE_HEIGHT = 0x038D + +glut_VIDEO_RESIZE_HEIGHT_DELTA :: GLenum +glut_VIDEO_RESIZE_HEIGHT_DELTA = 0x0389 + +glut_VIDEO_RESIZE_IN_USE :: GLenum +glut_VIDEO_RESIZE_IN_USE = 0x0385 + +glut_VIDEO_RESIZE_POSSIBLE :: GLenum +glut_VIDEO_RESIZE_POSSIBLE = 0x0384 + +glut_VIDEO_RESIZE_WIDTH :: GLenum +glut_VIDEO_RESIZE_WIDTH = 0x038C + +glut_VIDEO_RESIZE_WIDTH_DELTA :: GLenum +glut_VIDEO_RESIZE_WIDTH_DELTA = 0x0388 + +glut_VIDEO_RESIZE_X :: GLenum +glut_VIDEO_RESIZE_X = 0x038A + +glut_VIDEO_RESIZE_X_DELTA :: GLenum +glut_VIDEO_RESIZE_X_DELTA = 0x0386 + +glut_VIDEO_RESIZE_Y :: GLenum +glut_VIDEO_RESIZE_Y = 0x038B + +glut_VIDEO_RESIZE_Y_DELTA :: GLenum +glut_VIDEO_RESIZE_Y_DELTA = 0x0387 + +glut_VISIBLE :: CInt +glut_VISIBLE = 0x0001 + +glut_WINDOW_ACCUM_ALPHA_SIZE :: GLenum +glut_WINDOW_ACCUM_ALPHA_SIZE = 0x0072 + +glut_WINDOW_ACCUM_BLUE_SIZE :: GLenum +glut_WINDOW_ACCUM_BLUE_SIZE = 0x0071 + +glut_WINDOW_ACCUM_GREEN_SIZE :: GLenum +glut_WINDOW_ACCUM_GREEN_SIZE = 0x0070 + +glut_WINDOW_ACCUM_RED_SIZE :: GLenum +glut_WINDOW_ACCUM_RED_SIZE = 0x006F + +glut_WINDOW_ALPHA_SIZE :: GLenum +glut_WINDOW_ALPHA_SIZE = 0x006E + +glut_WINDOW_BLUE_SIZE :: GLenum +glut_WINDOW_BLUE_SIZE = 0x006D + +glut_WINDOW_BORDER_WIDTH :: GLenum +glut_WINDOW_BORDER_WIDTH = 0x01FA + +glut_WINDOW_BUFFER_SIZE :: GLenum +glut_WINDOW_BUFFER_SIZE = 0x0068 + +glut_WINDOW_COLORMAP_SIZE :: GLenum +glut_WINDOW_COLORMAP_SIZE = 0x0077 + +glut_WINDOW_CURSOR :: GLenum +glut_WINDOW_CURSOR = 0x007A + +glut_WINDOW_DEPTH_SIZE :: GLenum +glut_WINDOW_DEPTH_SIZE = 0x006A + +glut_WINDOW_DOUBLEBUFFER :: GLenum +glut_WINDOW_DOUBLEBUFFER = 0x0073 + +glut_WINDOW_FORMAT_ID :: GLenum +glut_WINDOW_FORMAT_ID = 0x007B + +glut_WINDOW_GREEN_SIZE :: GLenum +glut_WINDOW_GREEN_SIZE = 0x006C + +glut_WINDOW_HEADER_HEIGHT :: GLenum +glut_WINDOW_HEADER_HEIGHT = 0x01FB + +glut_WINDOW_HEIGHT :: GLenum +glut_WINDOW_HEIGHT = 0x0067 + +glut_WINDOW_NUM_CHILDREN :: GLenum +glut_WINDOW_NUM_CHILDREN = 0x0076 + +glut_WINDOW_NUM_SAMPLES :: GLenum +glut_WINDOW_NUM_SAMPLES = 0x0078 + +glut_WINDOW_PARENT :: GLenum +glut_WINDOW_PARENT = 0x0075 + +glut_WINDOW_RED_SIZE :: GLenum +glut_WINDOW_RED_SIZE = 0x006B + +glut_WINDOW_RGBA :: GLenum +glut_WINDOW_RGBA = 0x0074 + +glut_WINDOW_STENCIL_SIZE :: GLenum +glut_WINDOW_STENCIL_SIZE = 0x0069 + +glut_WINDOW_STEREO :: GLenum +glut_WINDOW_STEREO = 0x0079 + +glut_WINDOW_WIDTH :: GLenum +glut_WINDOW_WIDTH = 0x0066 + +glut_WINDOW_X :: GLenum +glut_WINDOW_X = 0x0064 + +glut_WINDOW_Y :: GLenum +glut_WINDOW_Y = 0x0065 hunk ./Graphics/UI/GLUT/State.hs 17 - -- * State of all windows - windowBorderWidth, windowHeaderHeight, + -- * State of all windows + windowBorderWidth, windowHeaderHeight, hunk ./Graphics/UI/GLUT/State.hs 20 - -- * State of the /current window/ - rgba, - BufferDepth, rgbaBufferDepths, colorBufferDepth, - doubleBuffered, stereo, - accumBufferDepths, depthBufferDepth, stencilBufferDepth, - SampleCount, sampleCount, formatID, - fullScreenMode, + -- * State of the /current window/ + rgba, + BufferDepth, rgbaBufferDepths, colorBufferDepth, + doubleBuffered, stereo, + accumBufferDepths, depthBufferDepth, stencilBufferDepth, + SampleCount, sampleCount, formatID, + fullScreenMode, hunk ./Graphics/UI/GLUT/State.hs 28 - -- * GLUT state pertaining to the layers of the /current window/ - damaged, + -- * GLUT state pertaining to the layers of the /current window/ + damaged, hunk ./Graphics/UI/GLUT/State.hs 31 - -- * Timing - elapsedTime, + -- * Timing + elapsedTime, hunk ./Graphics/UI/GLUT/State.hs 34 - -- * Device information + -- * Device information hunk ./Graphics/UI/GLUT/State.hs 36 - -- $DeviceInformation - screenSize, screenSizeMM, - hasKeyboard, - ButtonCount, numMouseButtons, - numSpaceballButtons, - DialCount, numDialsAndButtons, - numTabletButtons, - AxisCount, PollRate, joystickInfo, - supportedNumAuxBuffers, supportedSamplesPerPixel, + -- $DeviceInformation + screenSize, screenSizeMM, + hasKeyboard, + ButtonCount, numMouseButtons, + numSpaceballButtons, + DialCount, numDialsAndButtons, + numTabletButtons, + AxisCount, PollRate, joystickInfo, + supportedNumAuxBuffers, supportedSamplesPerPixel, hunk ./Graphics/UI/GLUT/State.hs 46 - -- * GLUT information - glutVersion, initState + -- * GLUT information + glutVersion, initState hunk ./Graphics/UI/GLUT/State.hs 58 -import Graphics.UI.GLUT.Constants hunk ./Graphics/UI/GLUT/State.hs 60 +import Graphics.UI.GLUT.Raw hunk ./Graphics/UI/GLUT/State.hs 62 -import Graphics.UI.GLUT.Extensions - --------------------------------------------------------------------------------- - -#include "HsGLUTExt.h" hunk ./Graphics/UI/GLUT/State.hs 317 -EXTENSION_ENTRY(unsafe,"freeglut",glutGetModeValues,GLenum -> Ptr CInt -> IO (Ptr CInt)) - hunk ./Graphics/UI/GLUT/State.hs 341 - isUnknown = fmap (== nullFunPtr) . getProcAddressInternal + isUnknown = fmap (== nullFunPtr) . getAPIEntryInternal hunk ./Graphics/UI/GLUT/Types.hs 18 - Window, -- constructor used only internally - makeWindow, -- used only internally + Window(..), -- constructor used only internally hunk ./Graphics/UI/GLUT/Types.hs 25 -import Foreign.C.Types ( CInt ) -import Graphics.UI.GLUT.Constants ( - glut_LEFT_BUTTON, glut_MIDDLE_BUTTON, glut_RIGHT_BUTTON, - glut_WHEEL_UP, glut_WHEEL_DOWN ) +import Foreign.C.Types +import Graphics.UI.GLUT.Raw hunk ./Graphics/UI/GLUT/Types.hs 35 -makeWindow :: CInt -> Window -makeWindow = Window - hunk ./Graphics/UI/GLUT/Types.hs 86 - WheelUp ->glut_WHEEL_UP + WheelUp -> glut_WHEEL_UP hunk ./Graphics/UI/GLUT/Types.hs 97 + +glut_WHEEL_UP :: CInt +glut_WHEEL_UP = 3 + +glut_WHEEL_DOWN :: CInt +glut_WHEEL_DOWN = 4 hunk ./Graphics/UI/GLUT/Window.hs 59 -import Graphics.UI.GLUT.Constants -import Graphics.UI.GLUT.Extensions hunk ./Graphics/UI/GLUT/Window.hs 60 +import Graphics.UI.GLUT.Raw hunk ./Graphics/UI/GLUT/Window.hs 65 -#include "HsGLUTExt.h" - --------------------------------------------------------------------------------- - hunk ./Graphics/UI/GLUT/Window.hs 92 -createWindow name = withCString name glutCreateWindow - -foreign import CALLCONV unsafe "glutCreateWindow" glutCreateWindow :: - CString -> IO Window +createWindow name = fmap Window $ withCString name glutCreateWindow hunk ./Graphics/UI/GLUT/Window.hs 106 -createSubWindow win (Position x y) (Size w h) = - glutCreateSubWindow win - (fromIntegral x) (fromIntegral y) - (fromIntegral w) (fromIntegral h) - -foreign import CALLCONV unsafe "glutCreateSubWindow" glutCreateSubWindow :: - Window -> CInt -> CInt -> CInt -> CInt -> IO Window +createSubWindow (Window win) (Position x y) (Size w h) = + fmap Window $ + glutCreateSubWindow win + (fromIntegral x) (fromIntegral y) + (fromIntegral w) (fromIntegral h) hunk ./Graphics/UI/GLUT/Window.hs 120 - getWindow (simpleGet makeWindow glut_WINDOW_PARENT) + getWindow (simpleGet Window glut_WINDOW_PARENT) hunk ./Graphics/UI/GLUT/Window.hs 141 -foreign import CALLCONV unsafe "glutDestroyWindow" destroyWindow :: - Window -> IO () +destroyWindow :: Window -> IO () +destroyWindow (Window win) = glutDestroyWindow win hunk ./Graphics/UI/GLUT/Window.hs 153 - makeStateVar (getWindow glutGetWindow) (maybe (return ()) glutSetWindow) + makeStateVar + (getWindow (fmap Window glutGetWindow)) + (maybe (return ()) (\(Window win) -> glutSetWindow win)) hunk ./Graphics/UI/GLUT/Window.hs 160 - return $ if win == makeWindow 0 then Nothing else Just win - -foreign import CALLCONV unsafe "glutSetWindow" glutSetWindow :: Window -> IO () - -foreign import CALLCONV unsafe "glutGetWindow" glutGetWindow :: IO Window + return $ if win == Window 0 then Nothing else Just win hunk ./Graphics/UI/GLUT/Window.hs 180 -postRedisplay = maybe glutPostRedisplay glutPostWindowRedisplay - -foreign import CALLCONV unsafe "glutPostRedisplay" glutPostRedisplay :: IO () +postRedisplay = maybe glutPostRedisplay (\(Window win) -> glutPostWindowRedisplay win) hunk ./Graphics/UI/GLUT/Window.hs 190 -foreign import CALLCONV unsafe "glutPostWindowRedisplay" - glutPostWindowRedisplay :: Window -> IO () - hunk ./Graphics/UI/GLUT/Window.hs 206 -foreign import CALLCONV unsafe "glutSwapBuffers" swapBuffers :: IO () +swapBuffers :: IO () +swapBuffers = glutSwapBuffers hunk ./Graphics/UI/GLUT/Window.hs 239 -foreign import CALLCONV unsafe "glutPositionWindow" glutPositionWindow :: - CInt -> CInt -> IO () - hunk ./Graphics/UI/GLUT/Window.hs 264 -foreign import CALLCONV unsafe "glutReshapeWindow" glutReshapeWindow :: - CInt -> CInt -> IO () - hunk ./Graphics/UI/GLUT/Window.hs 287 -foreign import CALLCONV unsafe "glutFullScreen" fullScreen :: IO () +fullScreen :: IO () +fullScreen = glutFullScreen hunk ./Graphics/UI/GLUT/Window.hs 297 -EXTENSION_ENTRY(unsafe,"freeglut",glutFullScreenToggle,IO ()) - hunk ./Graphics/UI/GLUT/Window.hs 310 -foreign import CALLCONV unsafe "glutPushWindow" pushWindow :: IO () +pushWindow :: IO () +pushWindow = glutPushWindow hunk ./Graphics/UI/GLUT/Window.hs 316 -foreign import CALLCONV unsafe "glutPopWindow" popWindow :: IO () +popWindow :: IO () +popWindow = glutPopWindow hunk ./Graphics/UI/GLUT/Window.hs 344 -foreign import CALLCONV unsafe "glutShowWindow" glutShowWindow :: IO () - -foreign import CALLCONV unsafe "glutHideWindow" glutHideWindow :: IO () - -foreign import CALLCONV unsafe "glutIconifyWindow" glutIconifyWindow :: IO () - hunk ./Graphics/UI/GLUT/Window.hs 363 -foreign import CALLCONV unsafe "glutSetWindowTitle" glutSetWindowTitle :: - CString -> IO () - hunk ./Graphics/UI/GLUT/Window.hs 370 -foreign import CALLCONV unsafe "glutSetIconTitle" glutSetIconTitle :: - CString -> IO () - hunk ./Graphics/UI/GLUT/Window.hs 471 -foreign import CALLCONV unsafe "glutSetCursor" glutSetCursor :: CInt -> IO () - hunk ./Graphics/UI/GLUT/Window.hs 493 - -foreign import CALLCONV unsafe "glutWarpPointer" glutWarpPointer :: - CInt -> CInt -> IO () hunk ./Setup.hs 1 -module Main (main) where - hunk ./Setup.hs 2 - -main :: IO () -main = defaultMainWithHooks autoconfUserHooks +main = defaultMain hunk ./aclocal.m4 1 -# Extra autoconf macros for the Glasgow fptools -# -# To be a good autoconf citizen, names of local macros have prefixed with FP_ to -# ensure we don't clash with any pre-supplied autoconf ones. - -dnl ** Map an arithmetic C type to a Haskell type. -dnl Based on autconf's AC_CHECK_SIZEOF. - -dnl FPTOOLS_CHECK_HTYPE(TYPE [, DEFAULT_VALUE, [, VALUE-FOR-CROSS-COMPILATION]) -AC_DEFUN([FPTOOLS_CHECK_HTYPE], -[changequote(<<, >>)dnl -dnl The name to #define. -define(<>, translit(htype_$1, [a-z *], [A-Z_P]))dnl -dnl The cache variable name. -define(<>, translit(fptools_cv_htype_$1, [ *], [_p]))dnl -define(<>, translit(fptools_cv_htype_sup_$1, [ *], [_p]))dnl -changequote([, ])dnl -AC_MSG_CHECKING(Haskell type for $1) -AC_CACHE_VAL(AC_CV_NAME, -[AC_CV_NAME_supported=yes -fp_check_htype_save_cppflags="$CPPFLAGS" -CPPFLAGS="$CPPFLAGS $X_CFLAGS" -AC_RUN_IFELSE([AC_LANG_SOURCE([[#include -#include - -#if HAVE_SYS_TYPES_H -# include -#endif - -#if HAVE_UNISTD_H -# include -#endif - -#if HAVE_SYS_STAT_H -# include -#endif - -#if HAVE_FCNTL_H -# include -#endif - -#if HAVE_SIGNAL_H -# include -#endif - -#if HAVE_TIME_H -# include -#endif - -#if HAVE_TERMIOS_H -# include -#endif - -#if HAVE_STRING_H -# include -#endif - -#if HAVE_CTYPE_H -# include -#endif - -#if defined(HAVE_GL_GL_H) -# include -#elif defined(HAVE_OPENGL_GL_H) -# include -#endif - -#if defined(HAVE_AL_AL_H) -# include -#elif defined(HAVE_OPENAL_AL_H) -# include -#endif - -#if defined(HAVE_AL_ALC_H) -# include -#elif defined(HAVE_OPENAL_ALC_H) -# include -#endif - -#if HAVE_SYS_RESOURCE_H -# include -#endif - -typedef $1 testing; - -main() { - FILE *f=fopen("conftestval", "w"); - if (!f) exit(1); - if (((testing)((int)((testing)1.4))) == ((testing)1.4)) { - fprintf(f, "%s%d\n", - ((testing)(-1) < (testing)0) ? "Int" : "Word", - sizeof(testing)*8); - } else { - fprintf(f,"%s\n", - (sizeof(testing) > sizeof(double)) ? "LDouble" : - (sizeof(testing) == sizeof(double)) ? "Double" : "Float"); - } - fclose(f); - exit(0); -}]])],[AC_CV_NAME=`cat conftestval`], -[ifelse([$2], , [AC_CV_NAME=NotReallyAType; AC_CV_NAME_supported=no], [AC_CV_NAME=$2])], -[ifelse([$3], , [AC_CV_NAME=NotReallyATypeCross; AC_CV_NAME_supported=no], [AC_CV_NAME=$3])]) -CPPFLAGS="$fp_check_htype_save_cppflags"]) dnl -if test "$AC_CV_NAME_supported" = yes; then - AC_MSG_RESULT($AC_CV_NAME) - AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME, [Define to Haskell type for $1]) -else - AC_MSG_RESULT([not supported]) -fi -undefine([AC_TYPE_NAME])dnl -undefine([AC_CV_NAME])dnl -undefine([AC_CV_NAME_supported])dnl -]) - - -# FP_ARG_OPENGL -# ------------- -AC_DEFUN([FP_ARG_OPENGL], -[AC_ARG_ENABLE([opengl], - [AC_HELP_STRING([--enable-opengl], - [build a Haskell binding for OpenGL (GL/GLU). On Mac OS X, use - --enable-opengl=x11 to use X11 instead of the "native" libraries. - (default=autodetect)])], - [enable_opengl=$enableval], - [enable_opengl=yes]) -])# FP_ARG_OPENGL - - -# FP_ARG_GLUT -# ------------- -AC_DEFUN([FP_ARG_GLUT], -[AC_REQUIRE([FP_ARG_OPENGL]) -AC_ARG_ENABLE([glut], - [AC_HELP_STRING([--enable-glut], - [build a Haskell binding for GLUT (default=autodetect)])], - [enable_glut=$enableval], - [enable_glut=yes]) -])# FP_ARG_GLUT - - -# FP_CHECK_QUARTZ_OPENGL -# ---------------------- -AC_DEFUN([FP_CHECK_QUARTZ_OPENGL], -[AC_REQUIRE([FP_ARG_OPENGL]) -AC_REQUIRE([AC_CANONICAL_TARGET]) - -use_quartz_opengl=no -if test x"$enable_opengl" = xyes; then - case $target_os in - darwin*) - AC_DEFINE([USE_QUARTZ_OPENGL], [1], - [Define to 1 if native OpenGL should be used on Mac OS X]) - use_quartz_opengl=yes - ;; - esac -fi - -GLU_FRAMEWORKS= -GLUT_FRAMEWORKS= -GLUT_EXTRA_LIBS= -if test x"$use_quartz_opengl" = xyes; then - GLU_FRAMEWORKS=OpenGL - GLUT_FRAMEWORKS=GLUT - GLUT_EXTRA_LIBS=objc -fi -AC_SUBST([GLU_FRAMEWORKS]) -AC_SUBST([GLUT_FRAMEWORKS]) -AC_SUBST([GLUT_EXTRA_LIBS]) -])# FP_CHECK_QUARTZ_OPENGL - - -# FP_CHECK_WIN32 -# -------------- -# If Windows is the target platform (e.g. MinGW/MSYS or Cygwin with -# -mno-cygwin), the variable "fp_is_win32" is set to "yes", otherwise (e.g. *nix -# systems or plain Cygwin) it is set to "no". -AC_DEFUN([FP_CHECK_WIN32], -[AC_CACHE_CHECK([for Windows environment], [fp_cv_is_win32], - [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [ -#if !_WIN32 - syntax error; -#endif -])], [fp_cv_is_win32=yes], [fp_cv_is_win32=no])]) -fp_is_win32="$fp_cv_is_win32"[]dnl -])# FP_CHECK_WIN32 - - -# FP_PATH_XTRA -# ------------ -# Same as AC_PATH_XTRA, but works even for broken Cygwins which try to include -# the non-existant header when -mno-cygwin is used. -AC_DEFUN([FP_PATH_XTRA], -[AC_REQUIRE([FP_CHECK_WIN32]) -if test x"$fp_is_win32" = xyes; then - no_x=yes -else - AC_PATH_XTRA -fi -])# FP_PATH_XTRA - - -# FP_CHECK_GL_HELPER(LIBNAME, LIBS, INCLUDES, FUNCTION-BODY) -# ---------------------------------------------------------- -# Try each library in LIBS to successfully link INCLUDES plus FUNCTION-BODY, -# setting LIBNAME_CFLAGS and LIBNAME_LIBS to the corresponding values. Sets -# no_LIBNAME to "yes" if no suitable library was found. (LIBNAME_CFLAGS0 -# contains the value of LIBNAME_CFLAGS without CPPFLAGS, and LIBNAME_LIBS0 -# contains the value of LIBNAME_LIBS without LDFLAGS, but these are only -# used internally.) -AC_DEFUN([FP_CHECK_GL_HELPER], -[AC_CACHE_CHECK([for $1 library], [fp_cv_check_$1_lib], - [fp_cv_check_$1_lib="no" - fp_save_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS ${$1_CFLAGS}" - fp_save_LIBS="$LIBS" - for fp_try_lib in $2; do - # transform "-lfoo" to "foo.lib" when using cl - if test x"$CC" = xcl; then - fp_try_lib=`echo $fp_try_lib | sed -e 's/^-l//' -e 's/$/.lib/'` - fi - LIBS="$fp_try_lib ${$1_LIBS} $fp_save_LIBS" - AC_LINK_IFELSE([AC_LANG_PROGRAM([$3], [$4])], [fp_cv_check_$1_lib="$fp_try_lib ${$1_LIBS}"; break]) - done - LIBS="$fp_save_LIBS" - CPPFLAGS="$fp_save_CPPFLAGS"]) - - if test x"$fp_cv_check_$1_lib" = xno; then - no_$1=yes - $1_CFLAGS= - $1_LIBS= - else - $1_CFLAGS0="${$1_CFLAGS}" - $1_CFLAGS="$CPPFLAGS ${$1_CFLAGS0}" - $1_LIBS0="$fp_cv_check_$1_lib" - $1_LIBS="$LDFLAGS ${$1_LIBS0}" - fi -])# FP_CHECK_GL_HELPER - - -# FP_CHECK_GL -# ----------- -AC_DEFUN([FP_CHECK_GL], -[AC_REQUIRE([FP_PATH_XTRA]) -AC_REQUIRE([FP_CHECK_QUARTZ_OPENGL]) -AC_REQUIRE([FP_CHECK_WIN32]) - -if test x"$use_quartz_opengl" = xno; then - AC_CHECK_FUNC(atan,[fp_libm_not_needed=yes],[fp_libm_not_needed=dunno]) - if test x"$fp_libm_not_needed" = xdunno; then - AC_CHECK_LIB([m], [atan], [GL_LIBS="-lm $GL_LIBS"]) - fi - - if test x"$no_x" != xyes; then - test -n "$x_includes" && GL_CFLAGS="-I$x_includes $GL_CFLAGS" - test -n "$x_libraries" && GL_LIBS="-L$x_libraries -lX11 $GL_LIBS" - fi - - FP_CHECK_GL_HELPER([GL], [-lGL -lopengl32], [@%:@include ], [glEnd()]) - - if test x"$fp_is_win32" = xyes; then - # Ugly: To get wglGetProcAddress on Windows, we have to link with - # opengl32.dll, too, even when we are using Cygwin with X11. - case "$GL_LIBS" in - *-lopengl32*|*opengl32.lib*) ;; - *) fp_save_LIBS="$LIBS" - LIBS="$LIBS -lopengl32" - AC_LINK_IFELSE([AC_LANG_PROGRAM([[@%:@include ]], [[glEnd()]])], - [GL_LIBS="$GL_LIBS -lopengl32"; GL_LIBS0="$GL_LIBS0 -lopengl32"]) - LIBS="$fp_save_LIBS" - ;; - esac - fi -fi -AC_SUBST([GL_CFLAGS]) -AC_SUBST([GL_LIBS]) -])# FP_CHECK_GL - - -# FP_CHECK_GLU -# ------------ -AC_DEFUN([FP_CHECK_GLU], -[AC_REQUIRE([FP_CHECK_GL])dnl -GLU_CFLAGS="$GL_CFLAGS0" -GLU_LIBS="$GL_LIBS0" - -if test x"$use_quartz_opengl" = xno; then - FP_CHECK_GL_HELPER([GLU], [-lglu32 -lGLU], [@%:@include ], [gluNewQuadric()]) -fi - -AC_SUBST([GLU_CFLAGS]) -AC_SUBST([GLU_LIBS]) -])# FP_CHECK_GLU - - -# FP_CHECK_GLUT -# ------------- -AC_DEFUN([FP_CHECK_GLUT], -[AC_REQUIRE([FP_CHECK_GLU]) -AC_REQUIRE([FP_CHECK_QUARTZ_OPENGL]) - -if test x"$use_quartz_opengl" = xno; then - GLUT_CFLAGS="$GLU_CFLAGS0" - GLUT_LIBS="$GLU_LIBS0" - - if test x"$no_x" != xyes; then - GLUT_LIBS="$X_PRE_LIBS -lXmu -lXi $X_EXTRA_LIBS $GLUT_LIBS" - fi - - AC_CHECK_HEADERS([windows.h]) - - fp_save_cppflags="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS $X_CFLAGS" - AC_CHECK_HEADERS([GL/glut.h]) - CPPFLAGS="$fp_save_cppflags" - - # Note 1: On Cygwin with X11, GL/GLU functions use the "normal" calling - # convention, but GLUT functions use stdcall. To get this right, it is - # necessary to include first. - # Note 2: MinGW/MSYS comes without a GLUT header, so we use Cygwin's one in - # that case. - FP_CHECK_GL_HELPER([GLUT], [-lglut32 -lglut], [ -#if HAVE_WINDOWS_H -#include -#endif -#if HAVE_GL_GLUT_H -#include -#else -#include "glut_local.h" -#endif - ], [glutMainLoop()]) -fi - -AC_SUBST([GLUT_CFLAGS]) -AC_SUBST([GLUT_LIBS]) -])# FP_CHECK_GLUT - - -# FP_ARG_COMPILER -# ------------- -AC_DEFUN([FP_ARG_COMPILER], -[AC_ARG_WITH([compiler], - [AC_HELP_STRING([--with-compiler@<:@=HC@:>@], - [use the given Haskell compiler (default=ghc)])], - [with_compiler=$withval], - [with_compiler=ghc]) -])# FP_ARG_COMPILER rmfile ./aclocal.m4 hunk ./cbits/HsGLUT.c 3 - * Module : C support for Graphics.UI.GLUT.Fonts - * Copyright : (c) Sven Panne 2002-2005 - * License : BSD-style (see the file libraries/GLUT/LICENSE) + * Module : C support for Graphics.UI.GLUT.Raw + * Copyright : (c) Sven Panne 2002-2009 + * License : BSD-style (see the file LICENSE) hunk ./cbits/HsGLUT.c 13 -#include "HsGLUT.h" +#if defined(_MSC_VER) || defined(__CYGWIN__) || defined(__MINGW32__) || defined(__WATCOMC__) hunk ./cbits/HsGLUT.c 15 -/* needed only for GLUT_GET_PROC_ADDRESS_IS_BROKEN */ -#include "HsGLUTConfig.h" +#define GLUT_STROKE_ROMAN ((void *)0x0000) +#define GLUT_STROKE_MONO_ROMAN ((void *)0x0001) +#define GLUT_BITMAP_9_BY_15 ((void *)0x0002) +#define GLUT_BITMAP_8_BY_13 ((void *)0x0003) +#define GLUT_BITMAP_TIMES_ROMAN_10 ((void *)0x0004) +#define GLUT_BITMAP_TIMES_ROMAN_24 ((void *)0x0005) +#define GLUT_BITMAP_HELVETICA_10 ((void *)0x0006) +#define GLUT_BITMAP_HELVETICA_12 ((void *)0x0007) +#define GLUT_BITMAP_HELVETICA_18 ((void *)0x0008) + +#else + +extern void* glutStrokeRoman; +extern void* glutStrokeMonoRoman; +extern void* glutBitmap9By15; +extern void* glutBitmap8By13; +extern void* glutBitmapTimesRoman10; +extern void* glutBitmapTimesRoman24; +extern void* glutBitmapHelvetica10; +extern void* glutBitmapHelvetica12; +extern void* glutBitmapHelvetica18; + +#define GLUT_STROKE_ROMAN ((void *)&glutStrokeRoman) +#define GLUT_STROKE_MONO_ROMAN ((void *)&glutStrokeMonoRoman) +#define GLUT_BITMAP_9_BY_15 ((void *)&glutBitmap9By15) +#define GLUT_BITMAP_8_BY_13 ((void *)&glutBitmap8By13) +#define GLUT_BITMAP_TIMES_ROMAN_10 ((void *)&glutBitmapTimesRoman10) +#define GLUT_BITMAP_TIMES_ROMAN_24 ((void *)&glutBitmapTimesRoman24) +#define GLUT_BITMAP_HELVETICA_10 ((void *)&glutBitmapHelvetica10) +#define GLUT_BITMAP_HELVETICA_12 ((void *)&glutBitmapHelvetica12) +#define GLUT_BITMAP_HELVETICA_18 ((void *)&glutBitmapHelvetica18) hunk ./cbits/HsGLUT.c 47 -#if (FREEGLUT || GLUT_API_VERSION >= 5) && GLUT_GET_PROC_ADDRESS_IS_BROKEN -#include hunk ./cbits/HsGLUT.c 74 -/* procName is really a const char*, but currently we can't specify this in - Haskell's FFI and consequently get a warning from the C compiler. */ +/* -------------------------------------------------------------------------- */ +#if defined(USE_GETPROCADDRESS) + +#define WIN32_LEAN_AND_MEAN +#include + hunk ./cbits/HsGLUT.c 81 -hs_GLUT_getProcAddress(char *procName) +hs_GLUT_getProcAddress(const char *name) hunk ./cbits/HsGLUT.c 83 -#if (FREEGLUT || GLUT_API_VERSION >= 5) -#if GLUT_GET_PROC_ADDRESS_IS_BROKEN - /* There are a few typos/omissions in freeglut 2.20 */ - if (strcmp(procName, "glutWireCylinder" ) == 0) return (void*)glutWireCylinder; - if (strcmp(procName, "glutSolidCylinder" ) == 0) return (void*)glutSolidCylinder; - if (strcmp(procName, "glutWireSierpinskiSponge" ) == 0) return (void*)glutWireSierpinskiSponge; - if (strcmp(procName, "glutSolidSierpinskiSponge") == 0) return (void*)glutSolidSierpinskiSponge; -#endif - return glutGetProcAddress(procName); + static int firstTime = 1; + static HMODULE handle = NULL; + + if (firstTime) { + firstTime = 0; + handle = LoadLibrary(TEXT("glut32")); + } + + return handle ? GetProcAddress(handle, name) : NULL; +} + +/* -------------------------------------------------------------------------- */ +#elif defined(USE_NSADDRESSOFSYMBOL) + +#include +#include +#include + +void* +hs_GLUT_getProcAddress(const char *name) +{ + NSSymbol symbol; + + /* Prepend a '_' for the Unix C symbol mangling convention */ + char* symbolName = (char*)malloc(strlen(name) + 2); + if (!symbolName) { + return NULL; + } + symbolName[0] = '_'; + strcpy(symbolName + 1, name); + + if (!NSIsSymbolNameDefined(symbolName)) { + free(symbolName); + return NULL; + } + + symbol = NSLookupAndBindSymbol(symbolName); + free(symbolName); + if (!symbol) { + return NULL; + } + + return NSAddressOfSymbol(symbol); +} + +/* -------------------------------------------------------------------------- */ +#elif defined(USE_DLSYM) + +#include +#include + +void* +hs_GLUT_getProcAddress(const char *name) +{ + static int firstTime = 1; + static void *handle = NULL; + + if (firstTime) { + firstTime = 0; + /* Get a handle for our executable. */ + handle = dlopen(NULL, RTLD_LAZY); + } + + return handle ? dlsym(handle, name) : NULL; +} + +/* -------------------------------------------------------------------------- */ hunk ./cbits/HsGLUT.c 151 - return (void*)0; + +#error "Don't know how to retrieve GLUT entries" + hunk ./cbits/HsGLUT.c 155 -} hunk ./config.guess 1 -#! /bin/sh -# Attempt to guess a canonical system name. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. - -timestamp='2006-02-23' - -# This file is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA -# 02110-1301, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - - -# Originally written by Per Bothner . -# Please send patches to . Submit a context -# diff and a properly formatted ChangeLog entry. -# -# This script attempts to guess a canonical system name similar to -# config.sub. If it succeeds, it prints the system name on stdout, and -# exits with 0. Otherwise, it exits with 1. -# -# The plan is that this can be called by configure scripts if you -# don't specify an explicit build system type. - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] - -Output the configuration name of the system \`$me' is run on. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to ." - -version="\ -GNU config.guess ($timestamp) - -Originally written by Per Bothner. -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 -Free Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit ;; - --version | -v ) - echo "$version" ; exit ;; - --help | --h* | -h ) - echo "$usage"; exit ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" >&2 - exit 1 ;; - * ) - break ;; - esac -done - -if test $# != 0; then - echo "$me: too many arguments$help" >&2 - exit 1 -fi - -trap 'exit 1' 1 2 15 - -# CC_FOR_BUILD -- compiler used by this script. Note that the use of a -# compiler to aid in system detection is discouraged as it requires -# temporary files to be created and, as you can see below, it is a -# headache to deal with in a portable fashion. - -# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still -# use `HOST_CC' if defined, but it is deprecated. - -# Portable tmp directory creation inspired by the Autoconf team. - -set_cc_for_build=' -trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; -trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; -: ${TMPDIR=/tmp} ; - { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || - { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || - { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || - { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; -dummy=$tmp/dummy ; -tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; -case $CC_FOR_BUILD,$HOST_CC,$CC in - ,,) echo "int x;" > $dummy.c ; - for c in cc gcc c89 c99 ; do - if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then - CC_FOR_BUILD="$c"; break ; - fi ; - done ; - if test x"$CC_FOR_BUILD" = x ; then - CC_FOR_BUILD=no_compiler_found ; - fi - ;; - ,,*) CC_FOR_BUILD=$CC ;; - ,*,*) CC_FOR_BUILD=$HOST_CC ;; -esac ; set_cc_for_build= ;' - -# This is needed to find uname on a Pyramid OSx when run in the BSD universe. -# (ghazi@noc.rutgers.edu 1994-08-24) -if (test -f /.attbin/uname) >/dev/null 2>&1 ; then - PATH=$PATH:/.attbin ; export PATH -fi - -UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown -UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown -UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown - -# Note: order is significant - the case branches are not exclusive. - -case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in - *:NetBSD:*:*) - # NetBSD (nbsd) targets should (where applicable) match one or - # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, - # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently - # switched to ELF, *-*-netbsd* would select the old - # object file format. This provides both forward - # compatibility and a consistent mechanism for selecting the - # object file format. - # - # Note: NetBSD doesn't particularly care about the vendor - # portion of the name. We always set it to "unknown". - sysctl="sysctl -n hw.machine_arch" - UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ - /usr/sbin/$sysctl 2>/dev/null || echo unknown)` - case "${UNAME_MACHINE_ARCH}" in - armeb) machine=armeb-unknown ;; - arm*) machine=arm-unknown ;; - sh3el) machine=shl-unknown ;; - sh3eb) machine=sh-unknown ;; - *) machine=${UNAME_MACHINE_ARCH}-unknown ;; - esac - # The Operating System including object format, if it has switched - # to ELF recently, or will in the future. - case "${UNAME_MACHINE_ARCH}" in - arm*|i386|m68k|ns32k|sh3*|sparc|vax) - eval $set_cc_for_build - if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep __ELF__ >/dev/null - then - # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). - # Return netbsd for either. FIX? - os=netbsd - else - os=netbsdelf - fi - ;; - *) - os=netbsd - ;; - esac - # The OS release - # Debian GNU/NetBSD machines have a different userland, and - # thus, need a distinct triplet. However, they do not need - # kernel version information, so it can be replaced with a - # suitable tag, in the style of linux-gnu. - case "${UNAME_VERSION}" in - Debian*) - release='-gnu' - ;; - *) - release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` - ;; - esac - # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: - # contains redundant information, the shorter form: - # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "${machine}-${os}${release}" - exit ;; - *:OpenBSD:*:*) - UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} - exit ;; - *:ekkoBSD:*:*) - echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} - exit ;; - *:SolidBSD:*:*) - echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} - exit ;; - macppc:MirBSD:*:*) - echo powerppc-unknown-mirbsd${UNAME_RELEASE} - exit ;; - *:MirBSD:*:*) - echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} - exit ;; - alpha:OSF1:*:*) - case $UNAME_RELEASE in - *4.0) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` - ;; - *5.*) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` - ;; - esac - # According to Compaq, /usr/sbin/psrinfo has been available on - # OSF/1 and Tru64 systems produced since 1995. I hope that - # covers most systems running today. This code pipes the CPU - # types through head -n 1, so we only detect the type of CPU 0. - ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` - case "$ALPHA_CPU_TYPE" in - "EV4 (21064)") - UNAME_MACHINE="alpha" ;; - "EV4.5 (21064)") - UNAME_MACHINE="alpha" ;; - "LCA4 (21066/21068)") - UNAME_MACHINE="alpha" ;; - "EV5 (21164)") - UNAME_MACHINE="alphaev5" ;; - "EV5.6 (21164A)") - UNAME_MACHINE="alphaev56" ;; - "EV5.6 (21164PC)") - UNAME_MACHINE="alphapca56" ;; - "EV5.7 (21164PC)") - UNAME_MACHINE="alphapca57" ;; - "EV6 (21264)") - UNAME_MACHINE="alphaev6" ;; - "EV6.7 (21264A)") - UNAME_MACHINE="alphaev67" ;; - "EV6.8CB (21264C)") - UNAME_MACHINE="alphaev68" ;; - "EV6.8AL (21264B)") - UNAME_MACHINE="alphaev68" ;; - "EV6.8CX (21264D)") - UNAME_MACHINE="alphaev68" ;; - "EV6.9A (21264/EV69A)") - UNAME_MACHINE="alphaev69" ;; - "EV7 (21364)") - UNAME_MACHINE="alphaev7" ;; - "EV7.9 (21364A)") - UNAME_MACHINE="alphaev79" ;; - esac - # A Pn.n version is a patched version. - # A Vn.n version is a released version. - # A Tn.n version is a released field test version. - # A Xn.n version is an unreleased experimental baselevel. - # 1.2 uses "1.2" for uname -r. - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - exit ;; - Alpha\ *:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # Should we change UNAME_MACHINE based on the output of uname instead - # of the specific Alpha model? - echo alpha-pc-interix - exit ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 - exit ;; - Amiga*:UNIX_System_V:4.0:*) - echo m68k-unknown-sysv4 - exit ;; - *:[Aa]miga[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-amigaos - exit ;; - *:[Mm]orph[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-morphos - exit ;; - *:OS/390:*:*) - echo i370-ibm-openedition - exit ;; - *:z/VM:*:*) - echo s390-ibm-zvmoe - exit ;; - *:OS400:*:*) - echo powerpc-ibm-os400 - exit ;; - arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix${UNAME_RELEASE} - exit ;; - arm:riscos:*:*|arm:RISCOS:*:*) - echo arm-unknown-riscos - exit ;; - SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) - echo hppa1.1-hitachi-hiuxmpp - exit ;; - Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) - # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "`(/bin/universe) 2>/dev/null`" = att ; then - echo pyramid-pyramid-sysv3 - else - echo pyramid-pyramid-bsd - fi - exit ;; - NILE*:*:*:dcosx) - echo pyramid-pyramid-svr4 - exit ;; - DRS?6000:unix:4.0:6*) - echo sparc-icl-nx6 - exit ;; - DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) - case `/usr/bin/uname -p` in - sparc) echo sparc-icl-nx7; exit ;; - esac ;; - sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - i86pc:SunOS:5.*:*) - echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:6*:*) - # According to config.sub, this is the proper way to canonicalize - # SunOS6. Hard to guess exactly what SunOS6 will be like, but - # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in - Series*|S4*) - UNAME_RELEASE=`uname -v` - ;; - esac - # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` - exit ;; - sun3*:SunOS:*:*) - echo m68k-sun-sunos${UNAME_RELEASE} - exit ;; - sun*:*:4.2BSD:*) - UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 - case "`/bin/arch`" in - sun3) - echo m68k-sun-sunos${UNAME_RELEASE} - ;; - sun4) - echo sparc-sun-sunos${UNAME_RELEASE} - ;; - esac - exit ;; - aushp:SunOS:*:*) - echo sparc-auspex-sunos${UNAME_RELEASE} - exit ;; - # The situation for MiNT is a little confusing. The machine name - # can be virtually everything (everything which is not - # "atarist" or "atariste" at least should have a processor - # > m68000). The system name ranges from "MiNT" over "FreeMiNT" - # to the lowercase version "mint" (or "freemint"). Finally - # the system name "TOS" denotes a system which is actually not - # MiNT. But MiNT is downward compatible to TOS, so this should - # be no problem. - atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint${UNAME_RELEASE} - exit ;; - hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint${UNAME_RELEASE} - exit ;; - *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint${UNAME_RELEASE} - exit ;; - m68k:machten:*:*) - echo m68k-apple-machten${UNAME_RELEASE} - exit ;; - powerpc:machten:*:*) - echo powerpc-apple-machten${UNAME_RELEASE} - exit ;; - RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 - exit ;; - RISC*:ULTRIX:*:*) - echo mips-dec-ultrix${UNAME_RELEASE} - exit ;; - VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix${UNAME_RELEASE} - exit ;; - 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix${UNAME_RELEASE} - exit ;; - mips:*:*:UMIPS | mips:*:*:RISCos) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c -#ifdef __cplusplus -#include /* for printf() prototype */ - int main (int argc, char *argv[]) { -#else - int main (argc, argv) int argc; char *argv[]; { -#endif - #if defined (host_mips) && defined (MIPSEB) - #if defined (SYSTYPE_SYSV) - printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_SVR4) - printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) - printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); - #endif - #endif - exit (-1); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c && - dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && - SYSTEM_NAME=`$dummy $dummyarg` && - { echo "$SYSTEM_NAME"; exit; } - echo mips-mips-riscos${UNAME_RELEASE} - exit ;; - Motorola:PowerMAX_OS:*:*) - echo powerpc-motorola-powermax - exit ;; - Motorola:*:4.3:PL8-*) - echo powerpc-harris-powermax - exit ;; - Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) - echo powerpc-harris-powermax - exit ;; - Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix - exit ;; - m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit ;; - m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit ;; - m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit ;; - AViiON:dgux:*:*) - # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] - then - if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ - [ ${TARGET_BINARY_INTERFACE}x = x ] - then - echo m88k-dg-dgux${UNAME_RELEASE} - else - echo m88k-dg-dguxbcs${UNAME_RELEASE} - fi - else - echo i586-dg-dgux${UNAME_RELEASE} - fi - exit ;; - M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit ;; - M88*:*:R3*:*) - # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit ;; - XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit ;; - Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit ;; - *:IRIX*:*:*) - echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` - exit ;; - ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' - i*86:AIX:*:*) - echo i386-ibm-aix - exit ;; - ia64:AIX:*:*) - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} - exit ;; - *:AIX:2:3) - if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - - main() - { - if (!__power_pc()) - exit(1); - puts("powerpc-ibm-aix3.2.5"); - exit(0); - } -EOF - if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` - then - echo "$SYSTEM_NAME" - else - echo rs6000-ibm-aix3.2.5 - fi - elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 - else - echo rs6000-ibm-aix3.2 - fi - exit ;; - *:AIX:*:[45]) - IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` - if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then - IBM_ARCH=rs6000 - else - IBM_ARCH=powerpc - fi - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${IBM_ARCH}-ibm-aix${IBM_REV} - exit ;; - *:AIX:*:*) - echo rs6000-ibm-aix - exit ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) - echo romp-ibm-bsd4.4 - exit ;; - ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to - exit ;; # report: romp-ibm BSD 4.3 - *:BOSX:*:*) - echo rs6000-bull-bosx - exit ;; - DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit ;; - 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit ;; - hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit ;; - 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - case "${UNAME_MACHINE}" in - 9000/31? ) HP_ARCH=m68000 ;; - 9000/[34]?? ) HP_ARCH=m68k ;; - 9000/[678][0-9][0-9]) - if [ -x /usr/bin/getconf ]; then - sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` - sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 - 532) # CPU_PA_RISC2_0 - case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; - '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 - esac ;; - esac - fi - if [ "${HP_ARCH}" = "" ]; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - - #define _HPUX_SOURCE - #include - #include - - int main () - { - #if defined(_SC_KERNEL_BITS) - long bits = sysconf(_SC_KERNEL_BITS); - #endif - long cpu = sysconf (_SC_CPU_VERSION); - - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1"); break; - case CPU_PA_RISC2_0: - #if defined(_SC_KERNEL_BITS) - switch (bits) - { - case 64: puts ("hppa2.0w"); break; - case 32: puts ("hppa2.0n"); break; - default: puts ("hppa2.0"); break; - } break; - #else /* !defined(_SC_KERNEL_BITS) */ - puts ("hppa2.0"); break; - #endif - default: puts ("hppa1.0"); break; - } - exit (0); - } -EOF - (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` - test -z "$HP_ARCH" && HP_ARCH=hppa - fi ;; - esac - if [ ${HP_ARCH} = "hppa2.0w" ] - then - eval $set_cc_for_build - - # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating - # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler - # generating 64-bit code. GNU and HP use different nomenclature: - # - # $ CC_FOR_BUILD=cc ./config.guess - # => hppa2.0w-hp-hpux11.23 - # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess - # => hppa64-hp-hpux11.23 - - if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | - grep __LP64__ >/dev/null - then - HP_ARCH="hppa2.0w" - else - HP_ARCH="hppa64" - fi - fi - echo ${HP_ARCH}-hp-hpux${HPUX_REV} - exit ;; - ia64:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - echo ia64-hp-hpux${HPUX_REV} - exit ;; - 3050*:HI-UX:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - int - main () - { - long cpu = sysconf (_SC_CPU_VERSION); - /* The order matters, because CPU_IS_HP_MC68K erroneously returns - true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct - results, however. */ - if (CPU_IS_PA_RISC (cpu)) - { - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; - case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; - default: puts ("hppa-hitachi-hiuxwe2"); break; - } - } - else if (CPU_IS_HP_MC68K (cpu)) - puts ("m68k-hitachi-hiuxwe2"); - else puts ("unknown-hitachi-hiuxwe2"); - exit (0); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && - { echo "$SYSTEM_NAME"; exit; } - echo unknown-hitachi-hiuxwe2 - exit ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) - echo hppa1.1-hp-bsd - exit ;; - 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit ;; - *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) - echo hppa1.0-hp-mpeix - exit ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) - echo hppa1.1-hp-osf - exit ;; - hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit ;; - i*86:OSF1:*:*) - if [ -x /usr/sbin/sysversion ] ; then - echo ${UNAME_MACHINE}-unknown-osf1mk - else - echo ${UNAME_MACHINE}-unknown-osf1 - fi - exit ;; - parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit ;; - C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit ;; - C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit ;; - C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit ;; - C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit ;; - C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit ;; - CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*[A-Z]90:*:*:*) - echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ - | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ - -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ - -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*TS:*:*:*) - echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*SV1:*:*:*) - echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - *:UNICOS/mp:*:*) - echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) - FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; - 5000:UNIX_System_V:4.*:*) - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` - echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; - i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} - exit ;; - sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi${UNAME_RELEASE} - exit ;; - *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} - exit ;; - *:FreeBSD:*:*) - case ${UNAME_MACHINE} in - pc98) - echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - *) - echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - esac - exit ;; - i*:CYGWIN*:*) - echo ${UNAME_MACHINE}-pc-cygwin - exit ;; - i*:MINGW*:*) - echo ${UNAME_MACHINE}-pc-mingw32 - exit ;; - i*:MSYS_NT-*:*:*) - echo ${UNAME_MACHINE}-pc-mingw32 - exit ;; - i*:windows32*:*) - # uname -m includes "-pc" on this system. - echo ${UNAME_MACHINE}-mingw32 - exit ;; - i*:PW*:*) - echo ${UNAME_MACHINE}-pc-pw32 - exit ;; - x86:Interix*:[345]*) - echo i586-pc-interix${UNAME_RELEASE} - exit ;; - EM64T:Interix*:[345]*) - echo x86_64-unknown-interix${UNAME_RELEASE} - exit ;; - [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) - echo i${UNAME_MACHINE}-pc-mks - exit ;; - i*:Windows_NT*:* | Pentium*:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we - # UNAME_MACHINE based on the output of uname instead of i386? - echo i586-pc-interix - exit ;; - i*:UWIN*:*) - echo ${UNAME_MACHINE}-pc-uwin - exit ;; - amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) - echo x86_64-unknown-cygwin - exit ;; - p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin - exit ;; - prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - *:GNU:*:*) - # the GNU system - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` - exit ;; - *:GNU/*:*:*) - # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu - exit ;; - i*86:Minix:*:*) - echo ${UNAME_MACHINE}-pc-minix - exit ;; - arm*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - cris:Linux:*:*) - echo cris-axis-linux-gnu - exit ;; - crisv32:Linux:*:*) - echo crisv32-axis-linux-gnu - exit ;; - frv:Linux:*:*) - echo frv-unknown-linux-gnu - exit ;; - ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - m32r*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - mips:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #undef CPU - #undef mips - #undef mipsel - #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=mipsel - #else - #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=mips - #else - CPU= - #endif - #endif -EOF - eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' - /^CPU/{ - s: ::g - p - }'`" - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } - ;; - mips64:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #undef CPU - #undef mips64 - #undef mips64el - #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=mips64el - #else - #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=mips64 - #else - CPU= - #endif - #endif -EOF - eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' - /^CPU/{ - s: ::g - p - }'`" - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } - ;; - or32:Linux:*:*) - echo or32-unknown-linux-gnu - exit ;; - ppc:Linux:*:*) - echo powerpc-unknown-linux-gnu - exit ;; - ppc64:Linux:*:*) - echo powerpc64-unknown-linux-gnu - exit ;; - alpha:Linux:*:*) - case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in - EV5) UNAME_MACHINE=alphaev5 ;; - EV56) UNAME_MACHINE=alphaev56 ;; - PCA56) UNAME_MACHINE=alphapca56 ;; - PCA57) UNAME_MACHINE=alphapca56 ;; - EV6) UNAME_MACHINE=alphaev6 ;; - EV67) UNAME_MACHINE=alphaev67 ;; - EV68*) UNAME_MACHINE=alphaev68 ;; - esac - objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null - if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi - echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} - exit ;; - parisc:Linux:*:* | hppa:Linux:*:*) - # Look for CPU level - case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-gnu ;; - PA8*) echo hppa2.0-unknown-linux-gnu ;; - *) echo hppa-unknown-linux-gnu ;; - esac - exit ;; - parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-gnu - exit ;; - s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux - exit ;; - sh64*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - vax:Linux:*:*) - echo ${UNAME_MACHINE}-dec-linux-gnu - exit ;; - x86_64:Linux:*:*) - echo x86_64-unknown-linux-gnu - exit ;; - i*86:Linux:*:*) - # The BFD linker knows what the default object file format is, so - # first see if it will tell us. cd to the root directory to prevent - # problems with other programs or directories called `ld' in the path. - # Set LC_ALL=C to ensure ld outputs messages in English. - ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ - | sed -ne '/supported targets:/!d - s/[ ][ ]*/ /g - s/.*supported targets: *// - s/ .*// - p'` - case "$ld_supported_targets" in - elf32-i386) - TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" - ;; - a.out-i386-linux) - echo "${UNAME_MACHINE}-pc-linux-gnuaout" - exit ;; - coff-i386) - echo "${UNAME_MACHINE}-pc-linux-gnucoff" - exit ;; - "") - # Either a pre-BFD a.out linker (linux-gnuoldld) or - # one that does not give us useful --help. - echo "${UNAME_MACHINE}-pc-linux-gnuoldld" - exit ;; - esac - # Determine whether the default compiler is a.out or elf - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - #ifdef __ELF__ - # ifdef __GLIBC__ - # if __GLIBC__ >= 2 - LIBC=gnu - # else - LIBC=gnulibc1 - # endif - # else - LIBC=gnulibc1 - # endif - #else - #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__sun) - LIBC=gnu - #else - LIBC=gnuaout - #endif - #endif - #ifdef __dietlibc__ - LIBC=dietlibc - #endif -EOF - eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' - /^LIBC/{ - s: ::g - p - }'`" - test x"${LIBC}" != x && { - echo "${UNAME_MACHINE}-pc-linux-${LIBC}" - exit - } - test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } - ;; - i*86:DYNIX/ptx:4*:*) - # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. - # earlier versions are messed up and put the nodename in both - # sysname and nodename. - echo i386-sequent-sysv4 - exit ;; - i*86:UNIX_SV:4.2MP:2.*) - # Unixware is an offshoot of SVR4, but it has its own version - # number series starting with 2... - # I am not positive that other SVR4 systems won't match this, - # I just have to hope. -- rms. - # Use sysv4.2uw... so that sysv4* matches it. - echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} - exit ;; - i*86:OS/2:*:*) - # If we were able to find `uname', then EMX Unix compatibility - # is probably installed. - echo ${UNAME_MACHINE}-pc-os2-emx - exit ;; - i*86:XTS-300:*:STOP) - echo ${UNAME_MACHINE}-unknown-stop - exit ;; - i*86:atheos:*:*) - echo ${UNAME_MACHINE}-unknown-atheos - exit ;; - i*86:syllable:*:*) - echo ${UNAME_MACHINE}-pc-syllable - exit ;; - i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} - exit ;; - i*86:*DOS:*:*) - echo ${UNAME_MACHINE}-pc-msdosdjgpp - exit ;; - i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) - UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` - if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} - else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} - fi - exit ;; - i*86:*:5:[678]*) - # UnixWare 7.x, OpenUNIX and OpenServer 6. - case `/bin/uname -X | grep "^Machine"` in - *486*) UNAME_MACHINE=i486 ;; - *Pentium) UNAME_MACHINE=i586 ;; - *Pent*|*Celeron) UNAME_MACHINE=i686 ;; - esac - echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} - exit ;; - i*86:*:3.2:*) - if test -f /usr/options/cb.name; then - UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then - UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` - (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 - (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ - && UNAME_MACHINE=i586 - (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ - && UNAME_MACHINE=i686 - (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ - && UNAME_MACHINE=i686 - echo ${UNAME_MACHINE}-pc-sco$UNAME_REL - else - echo ${UNAME_MACHINE}-pc-sysv32 - fi - exit ;; - pc:*:*:*) - # Left here for compatibility: - # uname -m prints for DJGPP always 'pc', but it prints nothing about - # the processor, so we play safe by assuming i386. - echo i386-pc-msdosdjgpp - exit ;; - Intel:Mach:3*:*) - echo i386-pc-mach3 - exit ;; - paragon:*:*:*) - echo i860-intel-osf1 - exit ;; - i860:*:4.*:*) # i860-SVR4 - if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 - else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 - fi - exit ;; - mini*:CTIX:SYS*5:*) - # "miniframe" - echo m68010-convergent-sysv - exit ;; - mc68k:UNIX:SYSTEM5:3.51m) - echo m68k-convergent-sysv - exit ;; - M680?0:D-NIX:5.3:*) - echo m68k-diab-dnix - exit ;; - M68*:*:R3V[5678]*:*) - test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; - 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) - OS_REL='' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; - 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4; exit; } ;; - m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos${UNAME_RELEASE} - exit ;; - mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit ;; - TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos${UNAME_RELEASE} - exit ;; - rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos${UNAME_RELEASE} - exit ;; - PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) - echo powerpc-unknown-lynxos${UNAME_RELEASE} - exit ;; - SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv${UNAME_RELEASE} - exit ;; - RM*:ReliantUNIX-*:*:*) - echo mips-sni-sysv4 - exit ;; - RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit ;; - *:SINIX-*:*:*) - if uname -p 2>/dev/null >/dev/null ; then - UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo ${UNAME_MACHINE}-sni-sysv4 - else - echo ns32k-sni-sysv - fi - exit ;; - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says - echo i586-unisys-sysv4 - exit ;; - *:UNIX_System_V:4*:FTX*) - # From Gerald Hewes . - # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 - exit ;; - *:*:*:FTX*) - # From seanf@swdc.stratus.com. - echo i860-stratus-sysv4 - exit ;; - i*86:VOS:*:*) - # From Paul.Green@stratus.com. - echo ${UNAME_MACHINE}-stratus-vos - exit ;; - *:VOS:*:*) - # From Paul.Green@stratus.com. - echo hppa1.1-stratus-vos - exit ;; - mc68*:A/UX:*:*) - echo m68k-apple-aux${UNAME_RELEASE} - exit ;; - news*:NEWS-OS:6*:*) - echo mips-sony-newsos6 - exit ;; - R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) - if [ -d /usr/nec ]; then - echo mips-nec-sysv${UNAME_RELEASE} - else - echo mips-unknown-sysv${UNAME_RELEASE} - fi - exit ;; - BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos - exit ;; - BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos - exit ;; - BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos - exit ;; - SX-4:SUPER-UX:*:*) - echo sx4-nec-superux${UNAME_RELEASE} - exit ;; - SX-5:SUPER-UX:*:*) - echo sx5-nec-superux${UNAME_RELEASE} - exit ;; - SX-6:SUPER-UX:*:*) - echo sx6-nec-superux${UNAME_RELEASE} - exit ;; - Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody${UNAME_RELEASE} - exit ;; - *:Rhapsody:*:*) - echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} - exit ;; - *:Darwin:*:*) - UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown - case $UNAME_PROCESSOR in - unknown) UNAME_PROCESSOR=powerpc ;; - esac - echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} - exit ;; - *:procnto*:*:* | *:QNX:[0123456789]*:*) - UNAME_PROCESSOR=`uname -p` - if test "$UNAME_PROCESSOR" = "x86"; then - UNAME_PROCESSOR=i386 - UNAME_MACHINE=pc - fi - echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} - exit ;; - *:QNX:*:4*) - echo i386-pc-qnx - exit ;; - NSE-?:NONSTOP_KERNEL:*:*) - echo nse-tandem-nsk${UNAME_RELEASE} - exit ;; - NSR-?:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk${UNAME_RELEASE} - exit ;; - *:NonStop-UX:*:*) - echo mips-compaq-nonstopux - exit ;; - BS2000:POSIX*:*:*) - echo bs2000-siemens-sysv - exit ;; - DS/*:UNIX_System_V:*:*) - echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} - exit ;; - *:Plan9:*:*) - # "uname -m" is not consistent, so use $cputype instead. 386 - # is converted to i386 for consistency with other x86 - # operating systems. - if test "$cputype" = "386"; then - UNAME_MACHINE=i386 - else - UNAME_MACHINE="$cputype" - fi - echo ${UNAME_MACHINE}-unknown-plan9 - exit ;; - *:TOPS-10:*:*) - echo pdp10-unknown-tops10 - exit ;; - *:TENEX:*:*) - echo pdp10-unknown-tenex - exit ;; - KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) - echo pdp10-dec-tops20 - exit ;; - XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) - echo pdp10-xkl-tops20 - exit ;; - *:TOPS-20:*:*) - echo pdp10-unknown-tops20 - exit ;; - *:ITS:*:*) - echo pdp10-unknown-its - exit ;; - SEI:*:*:SEIUX) - echo mips-sei-seiux${UNAME_RELEASE} - exit ;; - *:DragonFly:*:*) - echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` - exit ;; - *:*VMS:*:*) - UNAME_MACHINE=`(uname -p) 2>/dev/null` - case "${UNAME_MACHINE}" in - A*) echo alpha-dec-vms ; exit ;; - I*) echo ia64-dec-vms ; exit ;; - V*) echo vax-dec-vms ; exit ;; - esac ;; - *:XENIX:*:SysV) - echo i386-pc-xenix - exit ;; - i*86:skyos:*:*) - echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' - exit ;; - i*86:rdos:*:*) - echo ${UNAME_MACHINE}-pc-rdos - exit ;; -esac - -#echo '(No uname command or uname output not recognized.)' 1>&2 -#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 - -eval $set_cc_for_build -cat >$dummy.c < -# include -#endif -main () -{ -#if defined (sony) -#if defined (MIPSEB) - /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, - I don't know.... */ - printf ("mips-sony-bsd\n"); exit (0); -#else -#include - printf ("m68k-sony-newsos%s\n", -#ifdef NEWSOS4 - "4" -#else - "" -#endif - ); exit (0); -#endif -#endif - -#if defined (__arm) && defined (__acorn) && defined (__unix) - printf ("arm-acorn-riscix\n"); exit (0); -#endif - -#if defined (hp300) && !defined (hpux) - printf ("m68k-hp-bsd\n"); exit (0); -#endif - -#if defined (NeXT) -#if !defined (__ARCHITECTURE__) -#define __ARCHITECTURE__ "m68k" -#endif - int version; - version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; - if (version < 4) - printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); - else - printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); - exit (0); -#endif - -#if defined (MULTIMAX) || defined (n16) -#if defined (UMAXV) - printf ("ns32k-encore-sysv\n"); exit (0); -#else -#if defined (CMU) - printf ("ns32k-encore-mach\n"); exit (0); -#else - printf ("ns32k-encore-bsd\n"); exit (0); -#endif -#endif -#endif - -#if defined (__386BSD__) - printf ("i386-pc-bsd\n"); exit (0); -#endif - -#if defined (sequent) -#if defined (i386) - printf ("i386-sequent-dynix\n"); exit (0); -#endif -#if defined (ns32000) - printf ("ns32k-sequent-dynix\n"); exit (0); -#endif -#endif - -#if defined (_SEQUENT_) - struct utsname un; - - uname(&un); - - if (strncmp(un.version, "V2", 2) == 0) { - printf ("i386-sequent-ptx2\n"); exit (0); - } - if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ - printf ("i386-sequent-ptx1\n"); exit (0); - } - printf ("i386-sequent-ptx\n"); exit (0); - -#endif - -#if defined (vax) -# if !defined (ultrix) -# include -# if defined (BSD) -# if BSD == 43 - printf ("vax-dec-bsd4.3\n"); exit (0); -# else -# if BSD == 199006 - printf ("vax-dec-bsd4.3reno\n"); exit (0); -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# endif -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# else - printf ("vax-dec-ultrix\n"); exit (0); -# endif -#endif - -#if defined (alliant) && defined (i860) - printf ("i860-alliant-bsd\n"); exit (0); -#endif - - exit (1); -} -EOF - -$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && - { echo "$SYSTEM_NAME"; exit; } - -# Apollos put the system type in the environment. - -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } - -# Convex versions that predate uname can use getsysinfo(1) - -if [ -x /usr/convex/getsysinfo ] -then - case `getsysinfo -f cpu_type` in - c1*) - echo c1-convex-bsd - exit ;; - c2*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit ;; - c34*) - echo c34-convex-bsd - exit ;; - c38*) - echo c38-convex-bsd - exit ;; - c4*) - echo c4-convex-bsd - exit ;; - esac -fi - -cat >&2 < in order to provide the needed -information to handle your system. - -config.guess timestamp = $timestamp - -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null` - -hostinfo = `(hostinfo) 2>/dev/null` -/bin/universe = `(/bin/universe) 2>/dev/null` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` -/bin/arch = `(/bin/arch) 2>/dev/null` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` - -UNAME_MACHINE = ${UNAME_MACHINE} -UNAME_RELEASE = ${UNAME_RELEASE} -UNAME_SYSTEM = ${UNAME_SYSTEM} -UNAME_VERSION = ${UNAME_VERSION} -EOF - -exit 1 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: rmfile ./config.guess hunk ./config.sub 1 -#! /bin/sh -# Configuration validation subroutine script. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. - -timestamp='2006-02-23' - -# This file is (in principle) common to ALL GNU software. -# The presence of a machine in this file suggests that SOME GNU software -# can handle that machine. It does not imply ALL GNU software can. -# -# This file is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA -# 02110-1301, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - - -# Please send patches to . Submit a context -# diff and a properly formatted ChangeLog entry. -# -# Configuration subroutine to validate and canonicalize a configuration type. -# Supply the specified configuration type as an argument. -# If it is invalid, we print an error message on stderr and exit with code 1. -# Otherwise, we print the canonical config type on stdout and succeed. - -# This file is supposed to be the same for all GNU packages -# and recognize all the CPU types, system types and aliases -# that are meaningful with *any* GNU software. -# Each package is responsible for reporting which valid configurations -# it does not support. The user should be able to distinguish -# a failure to support a valid configuration from a meaningless -# configuration. - -# The goal of this file is to map all the various variations of a given -# machine specification into a single specification in the form: -# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM -# or in some cases, the newer four-part form: -# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM -# It is wrong to echo any other type of specification. - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] CPU-MFR-OPSYS - $0 [OPTION] ALIAS - -Canonicalize a configuration name. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to ." - -version="\ -GNU config.sub ($timestamp) - -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 -Free Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit ;; - --version | -v ) - echo "$version" ; exit ;; - --help | --h* | -h ) - echo "$usage"; exit ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" - exit 1 ;; - - *local*) - # First pass through any local machine types. - echo $1 - exit ;; - - * ) - break ;; - esac -done - -case $# in - 0) echo "$me: missing argument$help" >&2 - exit 1;; - 1) ;; - *) echo "$me: too many arguments$help" >&2 - exit 1;; -esac - -# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). -# Here we must recognize all the valid KERNEL-OS combinations. -maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` -case $maybe_os in - nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ - uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ - storm-chaos* | os2-emx* | rtmk-nova*) - os=-$maybe_os - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` - ;; - *) - basic_machine=`echo $1 | sed 's/-[^-]*$//'` - if [ $basic_machine != $1 ] - then os=`echo $1 | sed 's/.*-/-/'` - else os=; fi - ;; -esac - -### Let's recognize common machines as not being operating systems so -### that things like config.sub decstation-3100 work. We also -### recognize some manufacturers as not being operating systems, so we -### can provide default operating systems below. -case $os in - -sun*os*) - # Prevent following clause from handling this invalid input. - ;; - -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ - -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ - -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ - -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ - -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ - -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple | -axis | -knuth | -cray) - os= - basic_machine=$1 - ;; - -sim | -cisco | -oki | -wec | -winbond) - os= - basic_machine=$1 - ;; - -scout) - ;; - -wrs) - os=-vxworks - basic_machine=$1 - ;; - -chorusos*) - os=-chorusos - basic_machine=$1 - ;; - -chorusrdb) - os=-chorusrdb - basic_machine=$1 - ;; - -hiux*) - os=-hiuxwe2 - ;; - -sco6) - os=-sco5v6 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco5) - os=-sco3.2v5 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco4) - os=-sco3.2v4 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2.[4-9]*) - os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2v[4-9]*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco5v6*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco*) - os=-sco3.2v2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -udk*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -isc) - os=-isc2.2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -clix*) - basic_machine=clipper-intergraph - ;; - -isc*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -lynx*) - os=-lynxos - ;; - -ptx*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` - ;; - -windowsnt*) - os=`echo $os | sed -e 's/windowsnt/winnt/'` - ;; - -psos*) - os=-psos - ;; - -mint | -mint[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; -esac - -# Decode aliases for certain CPU-COMPANY combinations. -case $basic_machine in - # Recognize the basic CPU types without company name. - # Some are omitted here because they have special meanings below. - 1750a | 580 \ - | a29k \ - | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ - | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ - | am33_2.0 \ - | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ - | bfin \ - | c4x | clipper \ - | d10v | d30v | dlx | dsp16xx \ - | fr30 | frv \ - | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ - | i370 | i860 | i960 | ia64 \ - | ip2k | iq2000 \ - | m32r | m32rle | m68000 | m68k | m88k | maxq | mb | microblaze | mcore \ - | mips | mipsbe | mipseb | mipsel | mipsle \ - | mips16 \ - | mips64 | mips64el \ - | mips64vr | mips64vrel \ - | mips64orion | mips64orionel \ - | mips64vr4100 | mips64vr4100el \ - | mips64vr4300 | mips64vr4300el \ - | mips64vr5000 | mips64vr5000el \ - | mips64vr5900 | mips64vr5900el \ - | mipsisa32 | mipsisa32el \ - | mipsisa32r2 | mipsisa32r2el \ - | mipsisa64 | mipsisa64el \ - | mipsisa64r2 | mipsisa64r2el \ - | mipsisa64sb1 | mipsisa64sb1el \ - | mipsisa64sr71k | mipsisa64sr71kel \ - | mipstx39 | mipstx39el \ - | mn10200 | mn10300 \ - | mt \ - | msp430 \ - | nios | nios2 \ - | ns16k | ns32k \ - | or32 \ - | pdp10 | pdp11 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ - | pyramid \ - | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ - | sh64 | sh64le \ - | sparc | sparc64 | sparc64b | sparc86x | sparclet | sparclite \ - | sparcv8 | sparcv9 | sparcv9b \ - | strongarm \ - | tahoe | thumb | tic4x | tic80 | tron \ - | v850 | v850e \ - | we32k \ - | x86 | xscale | xscalee[bl] | xstormy16 | xtensa \ - | z8k) - basic_machine=$basic_machine-unknown - ;; - m32c) - basic_machine=$basic_machine-unknown - ;; - m6811 | m68hc11 | m6812 | m68hc12) - # Motorola 68HC11/12. - basic_machine=$basic_machine-unknown - os=-none - ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) - ;; - ms1) - basic_machine=mt-unknown - ;; - - # We use `pc' rather than `unknown' - # because (1) that's what they normally are, and - # (2) the word "unknown" tends to confuse beginning users. - i*86 | x86_64) - basic_machine=$basic_machine-pc - ;; - # Object if more than one company name word. - *-*-*) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; - # Recognize the basic CPU types with company name. - 580-* \ - | a29k-* \ - | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ - | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ - | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ - | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ - | avr-* \ - | bfin-* | bs2000-* \ - | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ - | clipper-* | craynv-* | cydra-* \ - | d10v-* | d30v-* | dlx-* \ - | elxsi-* \ - | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ - | h8300-* | h8500-* \ - | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ - | i*86-* | i860-* | i960-* | ia64-* \ - | ip2k-* | iq2000-* \ - | m32r-* | m32rle-* \ - | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | maxq-* | mcore-* \ - | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ - | mips16-* \ - | mips64-* | mips64el-* \ - | mips64vr-* | mips64vrel-* \ - | mips64orion-* | mips64orionel-* \ - | mips64vr4100-* | mips64vr4100el-* \ - | mips64vr4300-* | mips64vr4300el-* \ - | mips64vr5000-* | mips64vr5000el-* \ - | mips64vr5900-* | mips64vr5900el-* \ - | mipsisa32-* | mipsisa32el-* \ - | mipsisa32r2-* | mipsisa32r2el-* \ - | mipsisa64-* | mipsisa64el-* \ - | mipsisa64r2-* | mipsisa64r2el-* \ - | mipsisa64sb1-* | mipsisa64sb1el-* \ - | mipsisa64sr71k-* | mipsisa64sr71kel-* \ - | mipstx39-* | mipstx39el-* \ - | mmix-* \ - | mt-* \ - | msp430-* \ - | nios-* | nios2-* \ - | none-* | np1-* | ns16k-* | ns32k-* \ - | orion-* \ - | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ - | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ - | pyramid-* \ - | romp-* | rs6000-* \ - | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | shbe-* \ - | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ - | sparc-* | sparc64-* | sparc64b-* | sparc86x-* | sparclet-* \ - | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ - | tahoe-* | thumb-* \ - | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ - | tron-* \ - | v850-* | v850e-* | vax-* \ - | we32k-* \ - | x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \ - | xstormy16-* | xtensa-* \ - | ymp-* \ - | z8k-*) - ;; - m32c-*) - ;; - # Recognize the various machine names and aliases which stand - # for a CPU type and a company and sometimes even an OS. - 386bsd) - basic_machine=i386-unknown - os=-bsd - ;; - 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) - basic_machine=m68000-att - ;; - 3b*) - basic_machine=we32k-att - ;; - a29khif) - basic_machine=a29k-amd - os=-udi - ;; - abacus) - basic_machine=abacus-unknown - ;; - adobe68k) - basic_machine=m68010-adobe - os=-scout - ;; - alliant | fx80) - basic_machine=fx80-alliant - ;; - altos | altos3068) - basic_machine=m68k-altos - ;; - am29k) - basic_machine=a29k-none - os=-bsd - ;; - amd64) - basic_machine=x86_64-pc - ;; - amd64-*) - basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - amdahl) - basic_machine=580-amdahl - os=-sysv - ;; - amiga | amiga-*) - basic_machine=m68k-unknown - ;; - amigaos | amigados) - basic_machine=m68k-unknown - os=-amigaos - ;; - amigaunix | amix) - basic_machine=m68k-unknown - os=-sysv4 - ;; - apollo68) - basic_machine=m68k-apollo - os=-sysv - ;; - apollo68bsd) - basic_machine=m68k-apollo - os=-bsd - ;; - aux) - basic_machine=m68k-apple - os=-aux - ;; - balance) - basic_machine=ns32k-sequent - os=-dynix - ;; - c90) - basic_machine=c90-cray - os=-unicos - ;; - convex-c1) - basic_machine=c1-convex - os=-bsd - ;; - convex-c2) - basic_machine=c2-convex - os=-bsd - ;; - convex-c32) - basic_machine=c32-convex - os=-bsd - ;; - convex-c34) - basic_machine=c34-convex - os=-bsd - ;; - convex-c38) - basic_machine=c38-convex - os=-bsd - ;; - cray | j90) - basic_machine=j90-cray - os=-unicos - ;; - craynv) - basic_machine=craynv-cray - os=-unicosmp - ;; - cr16c) - basic_machine=cr16c-unknown - os=-elf - ;; - crds | unos) - basic_machine=m68k-crds - ;; - crisv32 | crisv32-* | etraxfs*) - basic_machine=crisv32-axis - ;; - cris | cris-* | etrax*) - basic_machine=cris-axis - ;; - crx) - basic_machine=crx-unknown - os=-elf - ;; - da30 | da30-*) - basic_machine=m68k-da30 - ;; - decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) - basic_machine=mips-dec - ;; - decsystem10* | dec10*) - basic_machine=pdp10-dec - os=-tops10 - ;; - decsystem20* | dec20*) - basic_machine=pdp10-dec - os=-tops20 - ;; - delta | 3300 | motorola-3300 | motorola-delta \ - | 3300-motorola | delta-motorola) - basic_machine=m68k-motorola - ;; - delta88) - basic_machine=m88k-motorola - os=-sysv3 - ;; - djgpp) - basic_machine=i586-pc - os=-msdosdjgpp - ;; - dpx20 | dpx20-*) - basic_machine=rs6000-bull - os=-bosx - ;; - dpx2* | dpx2*-bull) - basic_machine=m68k-bull - os=-sysv3 - ;; - ebmon29k) - basic_machine=a29k-amd - os=-ebmon - ;; - elxsi) - basic_machine=elxsi-elxsi - os=-bsd - ;; - encore | umax | mmax) - basic_machine=ns32k-encore - ;; - es1800 | OSE68k | ose68k | ose | OSE) - basic_machine=m68k-ericsson - os=-ose - ;; - fx2800) - basic_machine=i860-alliant - ;; - genix) - basic_machine=ns32k-ns - ;; - gmicro) - basic_machine=tron-gmicro - os=-sysv - ;; - go32) - basic_machine=i386-pc - os=-go32 - ;; - h3050r* | hiux*) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - h8300hms) - basic_machine=h8300-hitachi - os=-hms - ;; - h8300xray) - basic_machine=h8300-hitachi - os=-xray - ;; - h8500hms) - basic_machine=h8500-hitachi - os=-hms - ;; - harris) - basic_machine=m88k-harris - os=-sysv3 - ;; - hp300-*) - basic_machine=m68k-hp - ;; - hp300bsd) - basic_machine=m68k-hp - os=-bsd - ;; - hp300hpux) - basic_machine=m68k-hp - os=-hpux - ;; - hp3k9[0-9][0-9] | hp9[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k2[0-9][0-9] | hp9k31[0-9]) - basic_machine=m68000-hp - ;; - hp9k3[2-9][0-9]) - basic_machine=m68k-hp - ;; - hp9k6[0-9][0-9] | hp6[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k7[0-79][0-9] | hp7[0-79][0-9]) - basic_machine=hppa1.1-hp - ;; - hp9k78[0-9] | hp78[0-9]) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][13679] | hp8[0-9][13679]) - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][0-9] | hp8[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hppa-next) - os=-nextstep3 - ;; - hppaosf) - basic_machine=hppa1.1-hp - os=-osf - ;; - hppro) - basic_machine=hppa1.1-hp - os=-proelf - ;; - i370-ibm* | ibm*) - basic_machine=i370-ibm - ;; -# I'm not sure what "Sysv32" means. Should this be sysv3.2? - i*86v32) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv32 - ;; - i*86v4*) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv4 - ;; - i*86v) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv - ;; - i*86sol2) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-solaris2 - ;; - i386mach) - basic_machine=i386-mach - os=-mach - ;; - i386-vsta | vsta) - basic_machine=i386-unknown - os=-vsta - ;; - iris | iris4d) - basic_machine=mips-sgi - case $os in - -irix*) - ;; - *) - os=-irix4 - ;; - esac - ;; - isi68 | isi) - basic_machine=m68k-isi - os=-sysv - ;; - m88k-omron*) - basic_machine=m88k-omron - ;; - magnum | m3230) - basic_machine=mips-mips - os=-sysv - ;; - merlin) - basic_machine=ns32k-utek - os=-sysv - ;; - mingw32) - basic_machine=i386-pc - os=-mingw32 - ;; - miniframe) - basic_machine=m68000-convergent - ;; - *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; - mips3*-*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` - ;; - mips3*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown - ;; - monitor) - basic_machine=m68k-rom68k - os=-coff - ;; - morphos) - basic_machine=powerpc-unknown - os=-morphos - ;; - msdos) - basic_machine=i386-pc - os=-msdos - ;; - ms1-*) - basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` - ;; - mvs) - basic_machine=i370-ibm - os=-mvs - ;; - ncr3000) - basic_machine=i486-ncr - os=-sysv4 - ;; - netbsd386) - basic_machine=i386-unknown - os=-netbsd - ;; - netwinder) - basic_machine=armv4l-rebel - os=-linux - ;; - news | news700 | news800 | news900) - basic_machine=m68k-sony - os=-newsos - ;; - news1000) - basic_machine=m68030-sony - os=-newsos - ;; - news-3600 | risc-news) - basic_machine=mips-sony - os=-newsos - ;; - necv70) - basic_machine=v70-nec - os=-sysv - ;; - next | m*-next ) - basic_machine=m68k-next - case $os in - -nextstep* ) - ;; - -ns2*) - os=-nextstep2 - ;; - *) - os=-nextstep3 - ;; - esac - ;; - nh3000) - basic_machine=m68k-harris - os=-cxux - ;; - nh[45]000) - basic_machine=m88k-harris - os=-cxux - ;; - nindy960) - basic_machine=i960-intel - os=-nindy - ;; - mon960) - basic_machine=i960-intel - os=-mon960 - ;; - nonstopux) - basic_machine=mips-compaq - os=-nonstopux - ;; - np1) - basic_machine=np1-gould - ;; - nsr-tandem) - basic_machine=nsr-tandem - ;; - op50n-* | op60c-*) - basic_machine=hppa1.1-oki - os=-proelf - ;; - openrisc | openrisc-*) - basic_machine=or32-unknown - ;; - os400) - basic_machine=powerpc-ibm - os=-os400 - ;; - OSE68000 | ose68000) - basic_machine=m68000-ericsson - os=-ose - ;; - os68k) - basic_machine=m68k-none - os=-os68k - ;; - pa-hitachi) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - paragon) - basic_machine=i860-intel - os=-osf - ;; - pbd) - basic_machine=sparc-tti - ;; - pbb) - basic_machine=m68k-tti - ;; - pc532 | pc532-*) - basic_machine=ns32k-pc532 - ;; - pc98) - basic_machine=i386-pc - ;; - pc98-*) - basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentium | p5 | k5 | k6 | nexgen | viac3) - basic_machine=i586-pc - ;; - pentiumpro | p6 | 6x86 | athlon | athlon_*) - basic_machine=i686-pc - ;; - pentiumii | pentium2 | pentiumiii | pentium3) - basic_machine=i686-pc - ;; - pentium4) - basic_machine=i786-pc - ;; - pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) - basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumpro-* | p6-* | 6x86-* | athlon-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentium4-*) - basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pn) - basic_machine=pn-gould - ;; - power) basic_machine=power-ibm - ;; - ppc) basic_machine=powerpc-unknown - ;; - ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppcle | powerpclittle | ppc-le | powerpc-little) - basic_machine=powerpcle-unknown - ;; - ppcle-* | powerpclittle-*) - basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64) basic_machine=powerpc64-unknown - ;; - ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64le | powerpc64little | ppc64-le | powerpc64-little) - basic_machine=powerpc64le-unknown - ;; - ppc64le-* | powerpc64little-*) - basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ps2) - basic_machine=i386-ibm - ;; - pw32) - basic_machine=i586-unknown - os=-pw32 - ;; - rdos) - basic_machine=i386-pc - os=-rdos - ;; - rom68k) - basic_machine=m68k-rom68k - os=-coff - ;; - rm[46]00) - basic_machine=mips-siemens - ;; - rtpc | rtpc-*) - basic_machine=romp-ibm - ;; - s390 | s390-*) - basic_machine=s390-ibm - ;; - s390x | s390x-*) - basic_machine=s390x-ibm - ;; - sa29200) - basic_machine=a29k-amd - os=-udi - ;; - sb1) - basic_machine=mipsisa64sb1-unknown - ;; - sb1el) - basic_machine=mipsisa64sb1el-unknown - ;; - sei) - basic_machine=mips-sei - os=-seiux - ;; - sequent) - basic_machine=i386-sequent - ;; - sh) - basic_machine=sh-hitachi - os=-hms - ;; - sh64) - basic_machine=sh64-unknown - ;; - sparclite-wrs | simso-wrs) - basic_machine=sparclite-wrs - os=-vxworks - ;; - sps7) - basic_machine=m68k-bull - os=-sysv2 - ;; - spur) - basic_machine=spur-unknown - ;; - st2000) - basic_machine=m68k-tandem - ;; - stratus) - basic_machine=i860-stratus - os=-sysv4 - ;; - sun2) - basic_machine=m68000-sun - ;; - sun2os3) - basic_machine=m68000-sun - os=-sunos3 - ;; - sun2os4) - basic_machine=m68000-sun - os=-sunos4 - ;; - sun3os3) - basic_machine=m68k-sun - os=-sunos3 - ;; - sun3os4) - basic_machine=m68k-sun - os=-sunos4 - ;; - sun4os3) - basic_machine=sparc-sun - os=-sunos3 - ;; - sun4os4) - basic_machine=sparc-sun - os=-sunos4 - ;; - sun4sol2) - basic_machine=sparc-sun - os=-solaris2 - ;; - sun3 | sun3-*) - basic_machine=m68k-sun - ;; - sun4) - basic_machine=sparc-sun - ;; - sun386 | sun386i | roadrunner) - basic_machine=i386-sun - ;; - sv1) - basic_machine=sv1-cray - os=-unicos - ;; - symmetry) - basic_machine=i386-sequent - os=-dynix - ;; - t3e) - basic_machine=alphaev5-cray - os=-unicos - ;; - t90) - basic_machine=t90-cray - os=-unicos - ;; - tic54x | c54x*) - basic_machine=tic54x-unknown - os=-coff - ;; - tic55x | c55x*) - basic_machine=tic55x-unknown - os=-coff - ;; - tic6x | c6x*) - basic_machine=tic6x-unknown - os=-coff - ;; - tx39) - basic_machine=mipstx39-unknown - ;; - tx39el) - basic_machine=mipstx39el-unknown - ;; - toad1) - basic_machine=pdp10-xkl - os=-tops20 - ;; - tower | tower-32) - basic_machine=m68k-ncr - ;; - tpf) - basic_machine=s390x-ibm - os=-tpf - ;; - udi29k) - basic_machine=a29k-amd - os=-udi - ;; - ultra3) - basic_machine=a29k-nyu - os=-sym1 - ;; - v810 | necv810) - basic_machine=v810-nec - os=-none - ;; - vaxv) - basic_machine=vax-dec - os=-sysv - ;; - vms) - basic_machine=vax-dec - os=-vms - ;; - vpp*|vx|vx-*) - basic_machine=f301-fujitsu - ;; - vxworks960) - basic_machine=i960-wrs - os=-vxworks - ;; - vxworks68) - basic_machine=m68k-wrs - os=-vxworks - ;; - vxworks29k) - basic_machine=a29k-wrs - os=-vxworks - ;; - w65*) - basic_machine=w65-wdc - os=-none - ;; - w89k-*) - basic_machine=hppa1.1-winbond - os=-proelf - ;; - xbox) - basic_machine=i686-pc - os=-mingw32 - ;; - xps | xps100) - basic_machine=xps100-honeywell - ;; - ymp) - basic_machine=ymp-cray - os=-unicos - ;; - z8k-*-coff) - basic_machine=z8k-unknown - os=-sim - ;; - none) - basic_machine=none-none - os=-none - ;; - -# Here we handle the default manufacturer of certain CPU types. It is in -# some cases the only manufacturer, in others, it is the most popular. - w89k) - basic_machine=hppa1.1-winbond - ;; - op50n) - basic_machine=hppa1.1-oki - ;; - op60c) - basic_machine=hppa1.1-oki - ;; - romp) - basic_machine=romp-ibm - ;; - mmix) - basic_machine=mmix-knuth - ;; - rs6000) - basic_machine=rs6000-ibm - ;; - vax) - basic_machine=vax-dec - ;; - pdp10) - # there are many clones, so DEC is not a safe bet - basic_machine=pdp10-unknown - ;; - pdp11) - basic_machine=pdp11-dec - ;; - we32k) - basic_machine=we32k-att - ;; - sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) - basic_machine=sh-unknown - ;; - sparc | sparcv8 | sparcv9 | sparcv9b) - basic_machine=sparc-sun - ;; - cydra) - basic_machine=cydra-cydrome - ;; - orion) - basic_machine=orion-highlevel - ;; - orion105) - basic_machine=clipper-highlevel - ;; - mac | mpw | mac-mpw) - basic_machine=m68k-apple - ;; - pmac | pmac-mpw) - basic_machine=powerpc-apple - ;; - *-unknown) - # Make sure to match an already-canonicalized machine name. - ;; - *) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; -esac - -# Here we canonicalize certain aliases for manufacturers. -case $basic_machine in - *-digital*) - basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` - ;; - *-commodore*) - basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` - ;; - *) - ;; -esac - -# Decode manufacturer-specific aliases for certain operating systems. - -if [ x"$os" != x"" ] -then -case $os in - # First match some system type aliases - # that might get confused with valid system types. - # -solaris* is a basic system type, with this one exception. - -solaris1 | -solaris1.*) - os=`echo $os | sed -e 's|solaris1|sunos4|'` - ;; - -solaris) - os=-solaris2 - ;; - -svr4*) - os=-sysv4 - ;; - -unixware*) - os=-sysv4.2uw - ;; - -gnu/linux*) - os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` - ;; - # First accept the basic system types. - # The portable systems comes first. - # Each alternative MUST END IN A *, to match a version number. - # -sysv* is not here because it comes later, after sysvr4. - -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ - | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* \ - | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ - | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ - | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ - | -openbsd* | -solidbsd* \ - | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ - | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ - | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ - | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* \ - | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ - | -uxpv* | -beos* | -mpeix* | -udk* \ - | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ - | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ - | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ - | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ - | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ - | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ - | -skyos* | -haiku* | -rdos*) - # Remember, each alternative MUST END IN *, to match a version number. - ;; - -qnx*) - case $basic_machine in - x86-* | i*86-*) - ;; - *) - os=-nto$os - ;; - esac - ;; - -nto-qnx*) - ;; - -nto*) - os=`echo $os | sed -e 's|nto|nto-qnx|'` - ;; - -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ - | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ - | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) - ;; - -mac*) - os=`echo $os | sed -e 's|mac|macos|'` - ;; - -linux-dietlibc) - os=-linux-dietlibc - ;; - -linux*) - os=`echo $os | sed -e 's|linux|linux-gnu|'` - ;; - -sunos5*) - os=`echo $os | sed -e 's|sunos5|solaris2|'` - ;; - -sunos6*) - os=`echo $os | sed -e 's|sunos6|solaris3|'` - ;; - -opened*) - os=-openedition - ;; - -os400*) - os=-os400 - ;; - -wince*) - os=-wince - ;; - -osfrose*) - os=-osfrose - ;; - -osf*) - os=-osf - ;; - -utek*) - os=-bsd - ;; - -dynix*) - os=-bsd - ;; - -acis*) - os=-aos - ;; - -atheos*) - os=-atheos - ;; - -syllable*) - os=-syllable - ;; - -386bsd) - os=-bsd - ;; - -ctix* | -uts*) - os=-sysv - ;; - -nova*) - os=-rtmk-nova - ;; - -ns2 ) - os=-nextstep2 - ;; - -nsk*) - os=-nsk - ;; - # Preserve the version number of sinix5. - -sinix5.*) - os=`echo $os | sed -e 's|sinix|sysv|'` - ;; - -sinix*) - os=-sysv4 - ;; - -tpf*) - os=-tpf - ;; - -triton*) - os=-sysv3 - ;; - -oss*) - os=-sysv3 - ;; - -svr4) - os=-sysv4 - ;; - -svr3) - os=-sysv3 - ;; - -sysvr4) - os=-sysv4 - ;; - # This must come after -sysvr4. - -sysv*) - ;; - -ose*) - os=-ose - ;; - -es1800*) - os=-ose - ;; - -xenix) - os=-xenix - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - os=-mint - ;; - -aros*) - os=-aros - ;; - -kaos*) - os=-kaos - ;; - -zvmoe) - os=-zvmoe - ;; - -none) - ;; - *) - # Get rid of the `-' at the beginning of $os. - os=`echo $os | sed 's/[^-]*-//'` - echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 - exit 1 - ;; -esac -else - -# Here we handle the default operating systems that come with various machines. -# The value should be what the vendor currently ships out the door with their -# machine or put another way, the most popular os provided with the machine. - -# Note that if you're going to try to match "-MANUFACTURER" here (say, -# "-sun"), then you have to tell the case statement up towards the top -# that MANUFACTURER isn't an operating system. Otherwise, code above -# will signal an error saying that MANUFACTURER isn't an operating -# system, and we'll never get to this point. - -case $basic_machine in - *-acorn) - os=-riscix1.2 - ;; - arm*-rebel) - os=-linux - ;; - arm*-semi) - os=-aout - ;; - c4x-* | tic4x-*) - os=-coff - ;; - # This must come before the *-dec entry. - pdp10-*) - os=-tops20 - ;; - pdp11-*) - os=-none - ;; - *-dec | vax-*) - os=-ultrix4.2 - ;; - m68*-apollo) - os=-domain - ;; - i386-sun) - os=-sunos4.0.2 - ;; - m68000-sun) - os=-sunos3 - # This also exists in the configure program, but was not the - # default. - # os=-sunos4 - ;; - m68*-cisco) - os=-aout - ;; - mips*-cisco) - os=-elf - ;; - mips*-*) - os=-elf - ;; - or32-*) - os=-coff - ;; - *-tti) # must be before sparc entry or we get the wrong os. - os=-sysv3 - ;; - sparc-* | *-sun) - os=-sunos4.1.1 - ;; - *-be) - os=-beos - ;; - *-haiku) - os=-haiku - ;; - *-ibm) - os=-aix - ;; - *-knuth) - os=-mmixware - ;; - *-wec) - os=-proelf - ;; - *-winbond) - os=-proelf - ;; - *-oki) - os=-proelf - ;; - *-hp) - os=-hpux - ;; - *-hitachi) - os=-hiux - ;; - i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) - os=-sysv - ;; - *-cbm) - os=-amigaos - ;; - *-dg) - os=-dgux - ;; - *-dolphin) - os=-sysv3 - ;; - m68k-ccur) - os=-rtu - ;; - m88k-omron*) - os=-luna - ;; - *-next ) - os=-nextstep - ;; - *-sequent) - os=-ptx - ;; - *-crds) - os=-unos - ;; - *-ns) - os=-genix - ;; - i370-*) - os=-mvs - ;; - *-next) - os=-nextstep3 - ;; - *-gould) - os=-sysv - ;; - *-highlevel) - os=-bsd - ;; - *-encore) - os=-bsd - ;; - *-sgi) - os=-irix - ;; - *-siemens) - os=-sysv4 - ;; - *-masscomp) - os=-rtu - ;; - f30[01]-fujitsu | f700-fujitsu) - os=-uxpv - ;; - *-rom68k) - os=-coff - ;; - *-*bug) - os=-coff - ;; - *-apple) - os=-macos - ;; - *-atari*) - os=-mint - ;; - *) - os=-none - ;; -esac -fi - -# Here we handle the case where we know the os, and the CPU type, but not the -# manufacturer. We pick the logical manufacturer. -vendor=unknown -case $basic_machine in - *-unknown) - case $os in - -riscix*) - vendor=acorn - ;; - -sunos*) - vendor=sun - ;; - -aix*) - vendor=ibm - ;; - -beos*) - vendor=be - ;; - -hpux*) - vendor=hp - ;; - -mpeix*) - vendor=hp - ;; - -hiux*) - vendor=hitachi - ;; - -unos*) - vendor=crds - ;; - -dgux*) - vendor=dg - ;; - -luna*) - vendor=omron - ;; - -genix*) - vendor=ns - ;; - -mvs* | -opened*) - vendor=ibm - ;; - -os400*) - vendor=ibm - ;; - -ptx*) - vendor=sequent - ;; - -tpf*) - vendor=ibm - ;; - -vxsim* | -vxworks* | -windiss*) - vendor=wrs - ;; - -aux*) - vendor=apple - ;; - -hms*) - vendor=hitachi - ;; - -mpw* | -macos*) - vendor=apple - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - vendor=atari - ;; - -vos*) - vendor=stratus - ;; - esac - basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` - ;; -esac - -echo $basic_machine$os -exit - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: rmfile ./config.sub hunk ./configure.ac 1 -AC_INIT([Haskell GLUT package], [2.1.2.1], [sven.panne@aedion.de], [GLUT]) - -# Safety check: Ensure that we are in the correct source directory. -AC_CONFIG_SRCDIR([include/HsGLUT.h.in]) - -# The first file mentioned below will be generated by autoheader and contains -# defines which are needed during package build time only. The second header -# contains all kinds of stuff which is needed for using this package. -AC_CONFIG_HEADERS([include/HsGLUTConfig.h include/HsGLUT.h]) - -# Necessary for Cabal, which passes with --with-cc flag on Windows: -AC_ARG_WITH([cc], - [C compiler], - [CC=$withval]) -AC_PROG_CC() - -# we do not really care about this here, but this avoids a warning about an -# unknown option -FP_ARG_COMPILER - -# We set this to "yes" later when we have found GLUT libs and headers. -GLUT_BUILD_PACKAGE=no - -# Shall we build this package at all? -FP_ARG_GLUT - -if test x"$enable_glut" = xyes; then - -# Check for GLUT include paths and libraries -FP_CHECK_GLUT - -if test "$GLUT_LIBS" = no; then - AC_MSG_FAILURE([no GLUT library found, so this package cannot be built]) -fi - -# check for GLUT include files -glut_found_header=no -fp_save_cppflags="$CPPFLAGS" -CPPFLAGS="$CPPFLAGS $X_CFLAGS" -AC_CHECK_HEADERS([GL/glut.h GLUT/glut.h], [glut_found_header=yes]) -CPPFLAGS="$fp_save_cppflags" - -if test "$glut_found_header" = no; then - AC_MSG_FAILURE([no GLUT header found, so this package cannot be built]) -fi - -GLUT_BUILD_PACKAGE=yes - -AC_CHECK_HEADERS([windows.h]) - -AC_DEFINE_UNQUOTED([GLUT_EXTRA_LIBS], - [`echo HSGLUT_cbits $GLUT_EXTRA_LIBS | sed -e 's/[[^ ]]*/,"&"/g' -e 's/^ *,//'`], - [Extra libraries for GLUT, as a list of string literals.]) - -AC_DEFINE_UNQUOTED([GLUT_CFLAGS], - [`echo '' $GLUT_CFLAGS | sed -e 's/-[[^ ]]*/,"&"/g' -e 's/^ *,//'`], - [C flags for GLUT, as a list of string literals.]) - -AC_DEFINE_UNQUOTED([GLUT_LIBS], - [`echo '' $GLUT_LIBS | sed -e 's/-[[^ ]]*/,"&"/g' -e 's/^ *,//'`], - [Library flags for GLUT, as a list of string literals.]) - -AC_DEFINE_UNQUOTED([GLUT_FRAMEWORKS], - [`echo '' $GLUT_FRAMEWORKS | sed -e 's/-[[^ ]]*/,"&"/g' -e 's/^ *,//'`], - [Framework flags for GLUT, as a list of string literals.]) - -fi - -if test "$GLUT_BUILD_PACKAGE" = yes; then - BUILD_PACKAGE_BOOL=True -else - BUILD_PACKAGE_BOOL=False -fi -AC_SUBST([BUILD_PACKAGE_BOOL]) - -case "$host" in -*-mingw32) CALLCONV=stdcall ;; -*) CALLCONV=ccall ;; -esac -AC_SUBST([CALLCONV]) - -AC_CONFIG_FILES([GLUT.buildinfo]) -AC_OUTPUT rmfile ./configure.ac hunk ./include/HsGLUT.h.in 1 -/* ----------------------------------------------------------------------------- - * - * Module : C support for Graphics.UI.GLUT.Fonts - * Copyright : (c) Sven Panne 2002-2005 - * License : BSD-style (see the file libraries/GLUT/LICENSE) - * - * Maintainer : sven.panne@aedion.de - * Stability : provisional - * Portability : portable - * - * -------------------------------------------------------------------------- */ - -#ifndef HSGLUT_H -#define HSGLUT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_GL_GLUT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_WINDOWS_H - -/* Define to 1 if native OpenGL should be used on Mac OS X */ -#undef USE_QUARTZ_OPENGL - -#ifdef USE_QUARTZ_OPENGL /* Mac OS X only */ -#include -#else -#if HAVE_WINDOWS_H -#include -#endif -#if HAVE_GL_GLUT_H -#include -#else -#include "glut_local.h" -#endif -#endif - -#if FREEGLUT -#include -#endif - -extern void* hs_GLUT_marshalBitmapFont(int fontID); -extern void* hs_GLUT_marshalStrokeFont(int fontID); -extern void* hs_GLUT_getProcAddress(char *procName); - -#endif rmfile ./include/HsGLUT.h.in hunk ./include/HsGLUTExt.h 21 -#define EXTENSION_ENTRY(_saftey,_msg,_entry,_ty) \ -foreign import CALLCONV _saftey "dynamic" dyn_/**/_entry :: Graphics.UI.GLUT.Extensions.Invoker (_ty) ; \ +#define API_ENTRY_INTERNAL(_entry,_ty,_safety) \ +foreign import CALLCONV _safety "dynamic" dyn_/**/_entry :: Graphics.UI.GLUT.Raw.APIEntry.Invoker (_ty) ; \ hunk ./include/HsGLUTExt.h 26 -ptr_/**/_entry = unsafePerformIO (Graphics.UI.GLUT.Extensions.getProcAddress (_msg) ("_entry")) ; \ +ptr_/**/_entry = unsafePerformIO (Graphics.UI.GLUT.Raw.APIEntry.getAPIEntry "_entry") ; \ hunk ./include/HsGLUTExt.h 29 +#define API_ENTRY(_entry,_ty) API_ENTRY_INTERNAL(_entry,_ty,unsafe) + +#define API_ENTRY_SAFE(_entry,_ty) API_ENTRY_INTERNAL(_entry,_ty,safe) + hunk ./install-sh 1 -#!/bin/sh -# install - install a program, script, or datafile - -scriptversion=2003-09-24.23 - -# This originates from X11R5 (mit/util/scripts/install.sh), which was -# later released in X11R6 (xc/config/util/install.sh) with the -# following copyright and license. -# -# Copyright (C) 1994 X Consortium -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to -# deal in the Software without restriction, including without limitation the -# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -# sell copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- -# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -# -# Except as contained in this notice, the name of the X Consortium shall not -# be used in advertising or otherwise to promote the sale, use or other deal- -# ings in this Software without prior written authorization from the X Consor- -# tium. -# -# -# FSF changes to this file are in the public domain. -# -# Calling this script install-sh is preferred over install.sh, to prevent -# `make' implicit rules from creating a file called install from it -# when there is no Makefile. -# -# This script is compatible with the BSD install script, but was written -# from scratch. It can only install one file at a time, a restriction -# shared with many OS's install programs. - -# set DOITPROG to echo to test this script - -# Don't use :- since 4.3BSD and earlier shells don't like it. -doit="${DOITPROG-}" - -# put in absolute paths if you don't have them in your path; or use env. vars. - -mvprog="${MVPROG-mv}" -cpprog="${CPPROG-cp}" -chmodprog="${CHMODPROG-chmod}" -chownprog="${CHOWNPROG-chown}" -chgrpprog="${CHGRPPROG-chgrp}" -stripprog="${STRIPPROG-strip}" -rmprog="${RMPROG-rm}" -mkdirprog="${MKDIRPROG-mkdir}" - -transformbasename= -transform_arg= -instcmd="$mvprog" -chmodcmd="$chmodprog 0755" -chowncmd= -chgrpcmd= -stripcmd= -rmcmd="$rmprog -f" -mvcmd="$mvprog" -src= -dst= -dir_arg= - -usage="Usage: $0 [OPTION]... SRCFILE DSTFILE - or: $0 -d DIR1 DIR2... - -In the first form, install SRCFILE to DSTFILE, removing SRCFILE by default. -In the second, create the directory path DIR. - -Options: --b=TRANSFORMBASENAME --c copy source (using $cpprog) instead of moving (using $mvprog). --d create directories instead of installing files. --g GROUP $chgrp installed files to GROUP. --m MODE $chmod installed files to MODE. --o USER $chown installed files to USER. --s strip installed files (using $stripprog). --t=TRANSFORM ---help display this help and exit. ---version display version info and exit. - -Environment variables override the default commands: - CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG -" - -while test -n "$1"; do - case $1 in - -b=*) transformbasename=`echo $1 | sed 's/-b=//'` - shift - continue;; - - -c) instcmd=$cpprog - shift - continue;; - - -d) dir_arg=true - shift - continue;; - - -g) chgrpcmd="$chgrpprog $2" - shift - shift - continue;; - - --help) echo "$usage"; exit 0;; - - -m) chmodcmd="$chmodprog $2" - shift - shift - continue;; - - -o) chowncmd="$chownprog $2" - shift - shift - continue;; - - -s) stripcmd=$stripprog - shift - continue;; - - -t=*) transformarg=`echo $1 | sed 's/-t=//'` - shift - continue;; - - --version) echo "$0 $scriptversion"; exit 0;; - - *) if test -z "$src"; then - src=$1 - else - # this colon is to work around a 386BSD /bin/sh bug - : - dst=$1 - fi - shift - continue;; - esac -done - -if test -z "$src"; then - echo "$0: no input file specified." >&2 - exit 1 -fi - -# Protect names starting with `-'. -case $src in - -*) src=./$src ;; -esac - -if test -n "$dir_arg"; then - dst=$src - src= - - if test -d "$dst"; then - instcmd=: - chmodcmd= - else - instcmd=$mkdirprog - fi -else - # Waiting for this to be detected by the "$instcmd $src $dsttmp" command - # might cause directories to be created, which would be especially bad - # if $src (and thus $dsttmp) contains '*'. - if test ! -f "$src" && test ! -d "$src"; then - echo "$0: $src does not exist." >&2 - exit 1 - fi - - if test -z "$dst"; then - echo "$0: no destination specified." >&2 - exit 1 - fi - - # Protect names starting with `-'. - case $dst in - -*) dst=./$dst ;; - esac - - # If destination is a directory, append the input filename; won't work - # if double slashes aren't ignored. - if test -d "$dst"; then - dst=$dst/`basename "$src"` - fi -fi - -# This sed command emulates the dirname command. -dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` - -# Make sure that the destination directory exists. - -# Skip lots of stat calls in the usual case. -if test ! -d "$dstdir"; then - defaultIFS=' - ' - IFS="${IFS-$defaultIFS}" - - oIFS=$IFS - # Some sh's can't handle IFS=/ for some reason. - IFS='%' - set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` - IFS=$oIFS - - pathcomp= - - while test $# -ne 0 ; do - pathcomp=$pathcomp$1 - shift - test -d "$pathcomp" || $mkdirprog "$pathcomp" - pathcomp=$pathcomp/ - done -fi - -if test -n "$dir_arg"; then - $doit $instcmd "$dst" \ - && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \ - && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \ - && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \ - && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; } - -else - # If we're going to rename the final executable, determine the name now. - if test -z "$transformarg"; then - dstfile=`basename "$dst"` - else - dstfile=`basename "$dst" $transformbasename \ - | sed $transformarg`$transformbasename - fi - - # don't allow the sed command to completely eliminate the filename. - test -z "$dstfile" && dstfile=`basename "$dst"` - - # Make a couple of temp file names in the proper directory. - dsttmp=$dstdir/_inst.$$_ - rmtmp=$dstdir/_rm.$$_ - - # Trap to clean up those temp files at exit. - trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0 - trap '(exit $?); exit' 1 2 13 15 - - # Move or copy the file name to the temp name - $doit $instcmd "$src" "$dsttmp" && - - # and set any options; do chmod last to preserve setuid bits. - # - # If any of these fail, we abort the whole thing. If we want to - # ignore errors from any of these, just make sure not to ignore - # errors from the above "$doit $instcmd $src $dsttmp" command. - # - { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \ - && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \ - && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \ - && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } && - - # Now remove or move aside any old file at destination location. We - # try this two ways since rm can't unlink itself on some systems and - # the destination file might be busy for other reasons. In this case, - # the final cleanup might fail but the new file should still install - # successfully. - { - if test -f "$dstdir/$dstfile"; then - $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \ - || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \ - || { - echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 - (exit 1); exit - } - else - : - fi - } && - - # Now rename the file to the real destination. - $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" -fi && - -# The final little trick to "correctly" pass the exit status to the exit trap. -{ - (exit 0); exit -} - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" -# End: rmfile ./install-sh hunk ./GLUT.cabal 2 -version: 2.2.0.1 +version: 2.2.1.0 hunk ./Graphics/UI/GLUT/Initialization.hs 48 - initialContextVersion, ContextFlag(..), initialContextFlags + initialContextVersion, ContextFlag(..), initialContextFlags, + ContextProfile(..), initialContextProfile hunk ./Graphics/UI/GLUT/Initialization.hs 257 + | SRGBMode + -- ^ Select an sRGB mode window (/freeglut only/). hunk ./Graphics/UI/GLUT/Initialization.hs 284 + SRGBMode -> glut_SRGB hunk ./Graphics/UI/GLUT/Initialization.hs 321 - Stereoscopic, Captionless, Borderless ] + Stereoscopic, Captionless, Borderless, SRGBMode ] hunk ./Graphics/UI/GLUT/Initialization.hs 733 + + +----------------------------------------------------------------------------- + +-- | An OpenGL API profile, affecting the rendering context to create, used +-- in conjunction with 'initialContextProfile'. + +data ContextProfile + = -- | The OpenGL /core/ profile, which all OpenGL 3.2 implementations + -- are required to support. + CoreProfile + | -- | The OpenGL /compatibility/ profile, which is optional for OpenGL + -- 3.2 implementations. + CompatibilityProfile + deriving ( Eq, Ord, Show ) + +marshalContextProfile :: ContextProfile -> CInt +marshalContextProfile x = case x of + CoreProfile -> glut_CORE_PROFILE + CompatibilityProfile -> glut_COMPATIBILITY_PROFILE + +----------------------------------------------------------------------------- + +-- | (/freeglut only/) Controls the set of profiles for the rendering context. + +initialContextProfile :: StateVar [ContextProfile] +initialContextProfile = makeStateVar getContextProfiles setContextProfiles + +getContextProfiles :: IO [ContextProfile] +getContextProfiles = simpleGet i2cps glut_INIT_PROFILE + +i2cps :: CInt -> [ContextProfile] +i2cps bitfield = + [ c | c <- [ CoreProfile, CompatibilityProfile ] + , (fromIntegral bitfield .&. marshalContextProfile c) /= 0 ] + +setContextProfiles :: [ContextProfile] -> IO () +setContextProfiles = glutInitContextProfile . toBitfield marshalContextProfile hunk ./Graphics/UI/GLUT/Raw/Functions.hs 70 + glutInitContextProfile, hunk ./Graphics/UI/GLUT/Raw/Functions.hs 222 +API_ENTRY(glutInitContextProfile,CInt -> IO ()) hunk ./Graphics/UI/GLUT/Raw/Tokens.hs 75 +glut_CORE_PROFILE :: CInt +glut_CORE_PROFILE = 0x0001 + +glut_COMPATIBILITY_PROFILE :: CInt +glut_COMPATIBILITY_PROFILE = 0x0002 + hunk ./Graphics/UI/GLUT/Raw/Tokens.hs 264 +glut_INIT_PROFILE :: GLenum +glut_INIT_PROFILE = 0x0203 + hunk ./Graphics/UI/GLUT/Raw/Tokens.hs 480 +glut_SRGB :: GLenum +glut_SRGB = 0x1000 + hunk ./GLUT.cabal 2 -version: 2.2.1.0 +version: 2.2.2.0 hunk ./Graphics/UI/GLUT/Types.hs 79 + | AdditionalButton Int hunk ./Graphics/UI/GLUT/Types.hs 89 + AdditionalButton b -> fromIntegral b hunk ./Graphics/UI/GLUT/Types.hs 98 - | otherwise = error ("unmarshalMouseButton: illegal value " ++ show x) + | otherwise = AdditionalButton (fromIntegral x) hunk ./Graphics/UI/GLUT/Raw/Tokens.hs 21 -glut_ACCUM :: GLenum +glut_ACCUM :: CUInt hunk ./Graphics/UI/GLUT/Raw/Tokens.hs 48 -glut_ALPHA :: GLenum +glut_ALPHA :: CUInt hunk ./Graphics/UI/GLUT/Raw/Tokens.hs 54 -glut_AUX1 :: GLenum +glut_AUX1 :: CUInt hunk ./Graphics/UI/GLUT/Raw/Tokens.hs 57 -glut_AUX2 :: GLenum +glut_AUX2 :: CUInt hunk ./Graphics/UI/GLUT/Raw/Tokens.hs 60 -glut_AUX3 :: GLenum +glut_AUX3 :: CUInt hunk ./Graphics/UI/GLUT/Raw/Tokens.hs 63 -glut_AUX4 :: GLenum +glut_AUX4 :: CUInt hunk ./Graphics/UI/GLUT/Raw/Tokens.hs 69 -glut_BORDERLESS :: GLenum +glut_BORDERLESS :: CUInt hunk ./Graphics/UI/GLUT/Raw/Tokens.hs 72 -glut_CAPTIONLESS :: GLenum +glut_CAPTIONLESS :: CUInt hunk ./Graphics/UI/GLUT/Raw/Tokens.hs 156 -glut_DEPTH :: GLenum +glut_DEPTH :: CUInt hunk ./Graphics/UI/GLUT/Raw/Tokens.hs 171 -glut_DOUBLE :: GLenum +glut_DOUBLE :: CUInt hunk ./Graphics/UI/GLUT/Raw/Tokens.hs 249 -glut_INDEX :: GLenum +glut_INDEX :: CUInt hunk ./Graphics/UI/GLUT/Raw/Tokens.hs 288 -glut_JOYSTICK_BUTTON_A :: GLenum +glut_JOYSTICK_BUTTON_A :: CUInt hunk ./Graphics/UI/GLUT/Raw/Tokens.hs 291 -glut_JOYSTICK_BUTTON_B :: GLenum +glut_JOYSTICK_BUTTON_B :: CUInt hunk ./Graphics/UI/GLUT/Raw/Tokens.hs 294 -glut_JOYSTICK_BUTTON_C :: GLenum +glut_JOYSTICK_BUTTON_C :: CUInt hunk ./Graphics/UI/GLUT/Raw/Tokens.hs 297 -glut_JOYSTICK_BUTTON_D :: GLenum +glut_JOYSTICK_BUTTON_D :: CUInt hunk ./Graphics/UI/GLUT/Raw/Tokens.hs 393 -glut_LUMINANCE :: GLenum +glut_LUMINANCE :: CUInt hunk ./Graphics/UI/GLUT/Raw/Tokens.hs 408 -glut_MULTISAMPLE :: GLenum +glut_MULTISAMPLE :: CUInt hunk ./Graphics/UI/GLUT/Raw/Tokens.hs 456 -glut_RGB :: GLenum +glut_RGB :: CUInt hunk ./Graphics/UI/GLUT/Raw/Tokens.hs 459 -glut_RGBA :: GLenum +glut_RGBA :: CUInt hunk ./Graphics/UI/GLUT/Raw/Tokens.hs 477 -glut_SINGLE :: GLenum +glut_SINGLE :: CUInt hunk ./Graphics/UI/GLUT/Raw/Tokens.hs 480 -glut_SRGB :: GLenum +glut_SRGB :: CUInt hunk ./Graphics/UI/GLUT/Raw/Tokens.hs 483 -glut_STENCIL :: GLenum +glut_STENCIL :: CUInt hunk ./Graphics/UI/GLUT/Raw/Tokens.hs 486 -glut_STEREO :: GLenum +glut_STEREO :: CUInt hunk ./examples/Misc/ExtractContours.hs 51 -star :: ComplexPolygon (Color3 GLclampf) +star :: ComplexPolygon (Color3 GLfloat) hunk ./examples/Misc/ExtractContours.hs 60 -combineColors :: Combiner (Color3 GLclampf) +combineColors :: Combiner (Color3 GLfloat) hunk ./examples/RedBook/Tess.hs 51 -star :: ComplexPolygon (Color3 GLclampf) +star :: ComplexPolygon (Color3 GLfloat) hunk ./examples/RedBook/Tess.hs 60 -combineColors :: Combiner (Color3 GLclampf) +combineColors :: Combiner (Color3 GLfloat) hunk ./examples/RedBook/Image.hs 74 - let screenY = height - y + let screenY = fromIntegral height - y hunk ./examples/RedBook/UnProject.hs 34 - let realY = h - y -1 + let realY = fromIntegral h - y -1 hunk ./examples/OrangeBook/ogl2brick/Brick.hs 8 +import Prelude hiding ( sum ) +import Control.Applicative hunk ./examples/OrangeBook/ogl2brick/Brick.hs 11 +import Data.Foldable ( Foldable, sum ) hunk ./examples/OrangeBook/ogl2brick/Brick.hs 16 +infixl 6 $+, $- +infixl 7 $* + hunk ./examples/OrangeBook/ogl2brick/Brick.hs 30 -clearColors :: [Color4 GLfloat] +clearColors :: [Color4 GLclampf] hunk ./examples/OrangeBook/ogl2brick/Brick.hs 57 - colorCycle :: IORef [Color4 GLfloat], + colorCycle :: IORef [Color4 GLclampf], hunk ./examples/OrangeBook/ogl2brick/Brick.hs 65 - li <- newIORef 0 + li <- newIORef (pure 0) hunk ./examples/OrangeBook/ogl2brick/Brick.hs 67 - io <- newIORef 0 + io <- newIORef (pure 0) hunk ./examples/OrangeBook/ogl2brick/Brick.hs 87 -instance Num a => Num (Vector3 a) where - (Vector3 x1 y1 z1) + (Vector3 x2 y2 z2) = - Vector3 (x1 + x2) (y1 + y2) (z1 + z2) - (Vector3 x1 y1 z1) - (Vector3 x2 y2 z2) = - Vector3 (x1 - x2) (y1 - y2) (z1 - z2) - (Vector3 x1 y1 z1) * (Vector3 x2 y2 z2) = - Vector3 (x1 * x2) (y1 * y2) (z1 * z2) - negate (Vector3 x y z) = - Vector3 (negate x) (negate y) (negate z) - abs (Vector3 x y z) = - Vector3 (abs x) (abs y) (abs z) - signum (Vector3 x y z) = - Vector3 (signum x) (signum y) (signum z) - fromInteger i = - Vector3 (fromInteger i) (fromInteger i) (fromInteger i) - -fromScalar :: Num a => a -> Vector3 a -fromScalar s = Vector3 s s s +-- Our tiny vector math library... +($+), ($-), ($*) :: (Applicative t, Num a) => t a -> t a -> t a +($+) = liftA2 (+) +($-) = liftA2 (-) +($*) = liftA2 (*) hunk ./examples/OrangeBook/ogl2brick/Brick.hs 93 -step :: (Num a, Ord a) => Vector3 a -> Vector3 a -> Vector3 a -step (Vector3 x1 y1 z1) (Vector3 x2 y2 z2) = - Vector3 (s x1 x2) (s y1 y2) (s z1 z2) - where s e x = if x < e then 0 else 1 +step :: (Applicative t, Num a, Ord a) => t a -> t a -> t a +step = liftA2 (\e x -> if x < e then 0 else 1) hunk ./examples/OrangeBook/ogl2brick/Brick.hs 96 -dot :: Num a => Vector3 a -> Vector3 a -> a -dot (Vector3 x1 y1 z1) (Vector3 x2 y2 z2) = x1 * x2 + y1 * y2 + z1 * z2 +dot :: (Applicative t, Foldable t, Num a) => t a -> t a -> a +dot v1 v2 = sum (v1 $* v2) hunk ./examples/OrangeBook/ogl2brick/Brick.hs 202 - lastIncr state $= 0 + lastIncr state $= pure 0 hunk ./examples/OrangeBook/ogl2brick/Brick.hs 211 - let t = fromScalar inertiaThreshold - f = fromScalar inertiaFactor - l = (1 - (step (-t) li)) * ((li + t) * f - ia) - r = (step t li) * ((li - t) * f - ia) - inertia state $= l + ia + r - lastIncr state $= 0 + let t = pure inertiaThreshold + f = pure inertiaFactor + l = (pure 1 $- (step (fmap negate t) li)) $* ((li $+ t) $* f $- ia) + r = (step t li) $* ((li $- t) $* f $- ia) + inertia state $= l $+ ia $+ r + lastIncr state $= pure 0 hunk ./examples/OrangeBook/ogl2brick/Brick.hs 232 - (SpecialKey KeyLeft, Down) -> diff state $~ (+ (- Vector3 1 0 0)) - (SpecialKey KeyRight, Down) -> diff state $~ (+ Vector3 1 0 0) - (SpecialKey KeyUp, Down) -> diff state $~ (+ (- Vector3 0 1 0)) - (SpecialKey KeyDown, Down) -> diff state $~ (+ Vector3 0 1 0) + (SpecialKey KeyLeft, Down) -> diff state $~ ($- Vector3 1 0 0) + (SpecialKey KeyRight, Down) -> diff state $~ ($+ Vector3 1 0 0) + (SpecialKey KeyUp, Down) -> diff state $~ ($- Vector3 0 1 0) + (SpecialKey KeyDown, Down) -> diff state $~ ($+ Vector3 0 1 0) hunk ./examples/OrangeBook/ogl2brick/Brick.hs 237 - inertia state $= 0 - lastIncr state $= 0 + inertia state $= pure 0 + lastIncr state $= pure 0 hunk ./examples/OrangeBook/ogl2brick/Brick.hs 253 - then do diff state $~ (+ Vector3 0 0 xl) + then do diff state $~ ($+ Vector3 0 0 xl) hunk ./examples/OrangeBook/ogl2brick/Brick.hs 255 - else diff state $~ (+ li) + else diff state $~ ($+ li) hunk ./examples/OrangeBook/ogl2brick/Brick.hs 262 - diff state $~ (+ ia) + diff state $~ ($+ ia) hunk ./GLUT.cabal 160 - extra-libraries: glut32 hunk ./GLUT.cabal 161 + extra-libraries: glut32 hunk ./GLUT.cabal 164 - extra-libraries: glut + cc-options: "-DUSE_DLSYM" hunk ./GLUT.cabal 166 - cc-options: "-DUSE_NSADDRESSOFSYMBOL" + frameworks: GLUT hunk ./GLUT.cabal 168 - cc-options: "-DUSE_DLSYM" + extra-libraries: glut