cuda 0.3.2.2 → 0.4.0.0
raw patch · 88 files changed
+5708/−11060 lines, 88 filessetup-changed
Files
- Foreign/CUDA.hs +1/−1
- Foreign/CUDA/Analysis.hs +4/−8
- Foreign/CUDA/Analysis/Device.chs +59/−33
- Foreign/CUDA/Analysis/Occupancy.hs +1/−1
- Foreign/CUDA/Driver.hs +15/−15
- Foreign/CUDA/Driver/Context.chs +145/−39
- Foreign/CUDA/Driver/Device.chs +55/−34
- Foreign/CUDA/Driver/Error.chs +16/−10
- Foreign/CUDA/Driver/Event.chs +16/−20
- Foreign/CUDA/Driver/Exec.chs +84/−32
- Foreign/CUDA/Driver/Marshal.chs +176/−31
- Foreign/CUDA/Driver/Module.chs +9/−10
- Foreign/CUDA/Driver/Stream.chs +9/−7
- Foreign/CUDA/Driver/Texture.chs +54/−35
- Foreign/CUDA/Driver/Utils.chs +2/−6
- Foreign/CUDA/Ptr.hs +1/−1
- Foreign/CUDA/Runtime.hs +13/−13
- Foreign/CUDA/Runtime/Device.chs +232/−49
- Foreign/CUDA/Runtime/Error.chs +15/−8
- Foreign/CUDA/Runtime/Event.chs +36/−10
- Foreign/CUDA/Runtime/Exec.chs +16/−18
- Foreign/CUDA/Runtime/Marshal.chs +19/−19
- Foreign/CUDA/Runtime/Stream.chs +6/−8
- Foreign/CUDA/Runtime/Texture.chs +8/−7
- Foreign/CUDA/Runtime/Thread.chs +29/−46
- Foreign/CUDA/Runtime/Utils.chs +2/−5
- Setup.hs +80/−2
- cbits/stubs.c +26/−0
- cbits/stubs.h +14/−0
- configure +4542/−4916
- configure.ac +14/−13
- cuda.cabal +9/−21
- examples/Makefile +0/−18
- examples/common/common.mk +0/−413
- examples/common/include/cudpp/LICENSE +0/−25
- examples/common/include/cudpp/cudpp_globals.h +0/−56
- examples/common/include/cudpp/shared_mem.h +0/−115
- examples/common/include/cudpp/type_vector.h +0/−51
- examples/common/include/operator.h +0/−114
- examples/common/include/utils.h +0/−146
- examples/common/src/C2HS.hs +0/−224
- examples/common/src/PrettyPrint.hs +0/−61
- examples/common/src/RandomVector.hs +0/−101
- examples/common/src/Time.hs +0/−52
- examples/common/src/cudpp/LICENSE +0/−25
- examples/common/src/cudpp/scan_cta.cu +0/−617
- examples/common/src/cudpp/scan_kernel.cu +0/−113
- examples/common/src/cudpp/vector_kernel.cu +0/−444
- examples/src/bandwidthTest/BandwidthTest.hs +0/−221
- examples/src/bandwidthTest/Makefile +0/−18
- examples/src/bandwidthTest/results/GT120.pdf binary
- examples/src/bandwidthTest/results/Tesla.pdf binary
- examples/src/fold/Fold.chs +0/−79
- examples/src/fold/Makefile +0/−18
- examples/src/fold/fold.cu +0/−223
- examples/src/fold/fold.h +0/−32
- examples/src/matrixMul/LICENSE +0/−187
- examples/src/matrixMul/Makefile +0/−18
- examples/src/matrixMul/MatrixMul.hs +0/−114
- examples/src/matrixMul/matrix_mul.cu +0/−110
- examples/src/matrixMul/matrix_mul.h +0/−33
- examples/src/matrixMulDrv/LICENSE +0/−187
- examples/src/matrixMulDrv/Makefile +0/−18
- examples/src/matrixMulDrv/MatrixMul.hs +0/−155
- examples/src/matrixMulDrv/matrix_mul.cu +0/−110
- examples/src/matrixMulDrv/matrix_mul.h +0/−33
- examples/src/scan/Makefile +0/−18
- examples/src/scan/Scan.chs +0/−112
- examples/src/scan/scan.cu +0/−204
- examples/src/scan/scan.h +0/−26
- examples/src/simpleTexture/Makefile +0/−18
- examples/src/simpleTexture/SimpleTexture.hs +0/−68
- examples/src/simpleTexture/data/lena_bw.pgm +0/−5
- examples/src/simpleTexture/data/ref_rotated.pgm +0/−5
- examples/src/simpleTexture/simpleTexture.cu +0/−47
- examples/src/smvm/Makefile +0/−20
- examples/src/smvm/SMVM.chs +0/−201
- examples/src/smvm/smvm-csr.cu +0/−246
- examples/src/smvm/smvm-cudpp.cu +0/−56
- examples/src/smvm/smvm.h +0/−33
- examples/src/smvm/texture.h +0/−94
- examples/src/sort/Makefile +0/−19
- examples/src/sort/Sort.chs +0/−98
- examples/src/sort/radix_sort.cu +0/−61
- examples/src/sort/sort.h +0/−23
- examples/src/vectorAddDrv/Makefile +0/−18
- examples/src/vectorAddDrv/VectorAdd.hs +0/−121
- examples/src/vectorAddDrv/vector_add.cu +0/−18
Foreign/CUDA.hs view
@@ -1,7 +1,7 @@ -------------------------------------------------------------------------------- -- | -- Module : Foreign.CUDA--- Copyright : (c) [2009..2010] Trevor L. McDonell+-- Copyright : (c) [2009..2011] Trevor L. McDonell -- License : BSD -- -- Top level bindings. By default, expose the C-for-CUDA runtime API bindings,
Foreign/CUDA/Analysis.hs view
@@ -1,20 +1,16 @@ -------------------------------------------------------------------------------- -- | -- Module : Foreign.CUDA.Analysis--- Copyright : (c) [2009..2010] Trevor L. McDonell+-- Copyright : (c) [2009..2011] Trevor L. McDonell -- License : BSD -- -- Meta-module exporting CUDA analysis routines -- -------------------------------------------------------------------------------- -module Foreign.CUDA.Analysis- (- module Foreign.CUDA.Analysis.Device,- module Foreign.CUDA.Analysis.Occupancy- )+module Foreign.CUDA.Analysis (module Analysis) where -import Foreign.CUDA.Analysis.Device-import Foreign.CUDA.Analysis.Occupancy+import Foreign.CUDA.Analysis.Device as Analysis+import Foreign.CUDA.Analysis.Occupancy as Analysis
Foreign/CUDA/Analysis/Device.chs view
@@ -1,7 +1,7 @@ -------------------------------------------------------------------------------- -- | -- Module : Foreign.CUDA.Analysis.Device--- Copyright : (c) [2009..2010] Trevor L. McDonell+-- Copyright : (c) [2009..2011] Trevor L. McDonell -- License : BSD -- -- Common device functions@@ -11,7 +11,7 @@ module Foreign.CUDA.Analysis.Device ( Compute, ComputeMode(..),- DeviceProperties(..), DeviceResources(..), Allocation(..),+ DeviceProperties(..), DeviceResources(..), Allocation(..), PCI(..), resources ) where@@ -39,38 +39,65 @@ -- data DeviceProperties = DeviceProperties {- deviceName :: String, -- ^ Identifier- computeCapability :: Compute, -- ^ Supported compute capability- totalGlobalMem :: Int64, -- ^ Available global memory on the device in bytes- totalConstMem :: Int64, -- ^ Available constant memory on the device in bytes- sharedMemPerBlock :: Int64, -- ^ Available shared memory per block in bytes- regsPerBlock :: Int, -- ^ 32-bit registers per block- warpSize :: Int, -- ^ Warp size in threads (SIMD width)- maxThreadsPerBlock :: Int, -- ^ Max number of threads per block- maxBlockSize :: (Int,Int,Int), -- ^ Max size of each dimension of a block- maxGridSize :: (Int,Int,Int), -- ^ Max size of each dimension of a grid+ deviceName :: String, -- ^ Identifier+ computeCapability :: Compute, -- ^ Supported compute capability+ totalGlobalMem :: Int64, -- ^ Available global memory on the device in bytes+ totalConstMem :: Int64, -- ^ Available constant memory on the device in bytes+ sharedMemPerBlock :: Int64, -- ^ Available shared memory per block in bytes+ regsPerBlock :: Int, -- ^ 32-bit registers per block+ warpSize :: Int, -- ^ Warp size in threads (SIMD width)+ maxThreadsPerBlock :: Int, -- ^ Max number of threads per block+#if CUDA_VERSION >= 4000+ maxThreadsPerMultiProcessor :: Int, -- ^ Max number of threads per multiprocessor+#endif+ maxBlockSize :: (Int,Int,Int), -- ^ Max size of each dimension of a block+ maxGridSize :: (Int,Int,Int), -- ^ Max size of each dimension of a grid #if CUDA_VERSION >= 3000- maxTextureDim1D :: Int, -- ^ Maximum texture dimensions- maxTextureDim2D :: (Int,Int),- maxTextureDim3D :: (Int,Int,Int),+ maxTextureDim1D :: Int, -- ^ Maximum texture dimensions+ maxTextureDim2D :: (Int,Int),+ maxTextureDim3D :: (Int,Int,Int), #endif- clockRate :: Int, -- ^ Clock frequency in kilohertz- multiProcessorCount :: Int, -- ^ Number of multiprocessors on the device- memPitch :: Int64, -- ^ Max pitch in bytes allowed by memory copies- textureAlignment :: Int64, -- ^ Alignment requirement for textures- computeMode :: ComputeMode,- deviceOverlap :: Bool, -- ^ Device can concurrently copy memory and execute a kernel+ clockRate :: Int, -- ^ Clock frequency in kilohertz+ multiProcessorCount :: Int, -- ^ Number of multiprocessors on the device+ memPitch :: Int64, -- ^ Max pitch in bytes allowed by memory copies+#if CUDA_VERSION >= 4000+ memBusWidth :: Int, -- ^ Global memory bus width in bits+ memClockRate :: Int, -- ^ Peak memory clock frequency in kilohertz+#endif+ textureAlignment :: Int64, -- ^ Alignment requirement for textures+ computeMode :: ComputeMode,+ deviceOverlap :: Bool, -- ^ Device can concurrently copy memory and execute a kernel #if CUDA_VERSION >= 3000- concurrentKernels :: Bool, -- ^ Device can possibly execute multiple kernels concurrently- eccEnabled :: Bool, -- ^ Device supports and has enabled error correction+ concurrentKernels :: Bool, -- ^ Device can possibly execute multiple kernels concurrently+ eccEnabled :: Bool, -- ^ Device supports and has enabled error correction #endif- kernelExecTimeoutEnabled :: Bool, -- ^ Whether there is a runtime limit on kernels- integrated :: Bool, -- ^ As opposed to discrete- canMapHostMemory :: Bool -- ^ Device can use pinned memory+#if CUDA_VERSION >= 4000+ asyncEngineCount :: Int, -- ^ Number of asynchronous engines+ cacheMemL2 :: Int, -- ^ Size of the L2 cache in bytes+ tccDriverEnabled :: Bool, -- ^ Whether this is a Tesla device using the TCC driver+ pciInfo :: PCI, -- ^ PCI device information for the device+#endif+ kernelExecTimeoutEnabled :: Bool, -- ^ Whether there is a runtime limit on kernels+ integrated :: Bool, -- ^ As opposed to discrete+#if CUDA_VERSION >= 4000+ canMapHostMemory :: Bool, -- ^ Device can use pinned memory+ unifiedAddressing :: Bool -- ^ Device shares a unified address space with the host+#else+ canMapHostMemory :: Bool -- ^ Device can use pinned memory+#endif } deriving (Show) +data PCI = PCI+ {+ busID :: Int, -- ^ PCI bus ID of the device+ deviceID :: Int, -- ^ PCI device ID+ domainID :: Int -- ^ PCI domain ID+ }+ deriving (Show)++ -- GPU Hardware Resources -- data Allocation = Warp | Block@@ -90,15 +117,15 @@ -- |--- Extract some additional hardware resource limitations for a given device--- TLM: default to highest compute capability, when no specific data available?+-- Extract some additional hardware resource limitations for a given device. If+-- an exact match is not found, choose a sensible default. -- resources :: DeviceProperties -> DeviceResources-resources dev = fromMaybe err (lookup compute gpuData)+resources dev = fromMaybe def (lookup compute gpuData) where- compute = computeCapability dev- err = error $ "No data for device: "- ++ shows (deviceName dev) " (compute " ++ shows compute ")"+ compute = computeCapability dev+ def | compute < 1.0 = snd $ head gpuData+ | otherwise = snd $ last gpuData gpuData = [(1.0, DeviceResources 32 768 8 24 16384 512 8192 256 2 Block)@@ -106,6 +133,5 @@ ,(1.2, DeviceResources 32 1024 8 32 16384 512 16384 512 2 Block) ,(1.3, DeviceResources 32 1024 8 32 16384 512 16384 512 2 Block) ,(2.0, DeviceResources 32 1536 8 48 49152 128 32768 64 1 Warp)- ,(2.1, DeviceResources 32 1536 8 48 49152 128 32768 64 1 Warp) ]
Foreign/CUDA/Analysis/Occupancy.hs view
@@ -1,7 +1,7 @@ -------------------------------------------------------------------------------- -- | -- Module : Foreign.CUDA.Analysis.Occupancy--- Copyright : (c) [2009..2010] Trevor L. McDonell+-- Copyright : (c) [2009..2011] Trevor L. McDonell -- License : BSD -- -- Occupancy calculations for CUDA kernels
Foreign/CUDA/Driver.hs view
@@ -1,32 +1,32 @@ -------------------------------------------------------------------------------- -- | -- Module : Foreign.CUDA.Driver--- Copyright : (c) [2009..2010] Trevor L. McDonell+-- Copyright : (c) [2009..2011] Trevor L. McDonell -- License : BSD -- -- Top level bindings to CUDA driver API -- -------------------------------------------------------------------------------- -module Foreign.CUDA.Driver- (- module Foreign.CUDA.Ptr,- module Foreign.CUDA.Driver.Context,- module Foreign.CUDA.Driver.Device,- module Foreign.CUDA.Driver.Error,- module Foreign.CUDA.Driver.Exec,- module Foreign.CUDA.Driver.Marshal,- module Foreign.CUDA.Driver.Module,- module Foreign.CUDA.Driver.Utils- )- where+module Foreign.CUDA.Driver ( + module Foreign.CUDA.Ptr,+ module Foreign.CUDA.Driver.Context,+ module Foreign.CUDA.Driver.Device,+ module Foreign.CUDA.Driver.Error,+ module Foreign.CUDA.Driver.Exec,+ module Foreign.CUDA.Driver.Marshal,+ module Foreign.CUDA.Driver.Module,+ module Foreign.CUDA.Driver.Utils++) where+ import Foreign.CUDA.Ptr-import Foreign.CUDA.Driver.Context+import Foreign.CUDA.Driver.Context hiding ( device, useContext ) import Foreign.CUDA.Driver.Device import Foreign.CUDA.Driver.Error import Foreign.CUDA.Driver.Exec-import Foreign.CUDA.Driver.Marshal hiding (useDeviceHandle, peekDeviceHandle)+import Foreign.CUDA.Driver.Marshal hiding ( useDeviceHandle, peekDeviceHandle ) import Foreign.CUDA.Driver.Module import Foreign.CUDA.Driver.Utils
Foreign/CUDA/Driver/Context.chs view
@@ -1,39 +1,36 @@-{-# LANGUAGE ForeignFunctionInterface #-}+{-# LANGUAGE CPP, ForeignFunctionInterface, EmptyDataDecls #-} -------------------------------------------------------------------------------- -- | -- Module : Foreign.CUDA.Driver.Context--- Copyright : (c) [2009..2010] Trevor L. McDonell+-- Copyright : (c) [2009..2011] Trevor L. McDonell -- License : BSD -- -- Context management for low-level driver interface -- -------------------------------------------------------------------------------- +module Foreign.CUDA.Driver.Context (++ -- * Context Management+ Context(..), ContextFlag(..),+ create, attach, detach, destroy, device, pop, push, sync, get, set,++ -- * Peer Access+ PeerFlag,+ accessible, add, remove,++ -- * Cache Configuration+ Cache(..), Limit(..),+ getLimit, setLimit, setCacheConfig++) where+ #include <cuda.h> #include "cbits/stubs.h" {# context lib="cuda" #} -module Foreign.CUDA.Driver.Context- (- Context, ContextFlag(..),-#if CUDA_VERSION >= 3010- Limit(..),-#endif-#if CUDA_VERSION >= 3020- Cache(..),-#endif- create, attach, detach, destroy, current, pop, push, sync,-#if CUDA_VERSION >= 3010- getLimit, setLimit-#endif-#if CUDA_VERSION >= 3020- , setCacheConfig-#endif- )- where- -- Friends-import Foreign.CUDA.Driver.Device+import Foreign.CUDA.Driver.Device (Device(..)) import Foreign.CUDA.Driver.Error import Foreign.CUDA.Internal.C2HS @@ -60,24 +57,41 @@ { underscoreToCase } with prefix="CU_CTX" deriving (Eq, Show) #} --#if CUDA_VERSION >= 3010 -- | -- Device limits flags --+#if CUDA_VERSION < 3010+data Limit+#else {# enum CUlimit_enum as Limit { underscoreToCase } with prefix="CU_LIMIT" deriving (Eq, Show) #} #endif-#if CUDA_VERSION >= 3020+ -- | -- Device cache configuration flags --+#if CUDA_VERSION < 3020+data Cache+#else {# enum CUfunc_cache_enum as Cache { underscoreToCase } with prefix="CU_FUNC_CACHE" deriving (Eq, Show) #} #endif +-- |+-- Possible option values for direct peer memory access+--+data PeerFlag+instance Enum PeerFlag where+++#if CUDA_VERSION >= 4000+{-# DEPRECATED attach, detach "deprecated as of CUDA-4.0" #-}+{-# DEPRECATED BlockingSync "use SchedBlockingSync instead" #-}+#endif++ -------------------------------------------------------------------------------- -- Context management --------------------------------------------------------------------------------@@ -130,10 +144,38 @@ -- |+-- Return the context bound to the calling CPU thread. Requires cuda-4.0.+--+get :: IO Context+#if CUDA_VERSION < 4000+get = requireSDK 4.0 "get"+#else+get = resultIfOk =<< cuCtxGetCurrent++{# fun unsafe cuCtxGetCurrent+ { alloca- `Context' peekCtx* } -> `Status' cToEnum #}+ where peekCtx = liftM Context . peek+#endif+++-- |+-- Bind the specified context to the calling thread. Requires cuda-4.0.+--+set :: Context -> IO ()+#if CUDA_VERSION < 4000+set _ = requireSDK 4.0 "set"+#else+set ctx = nothingIfOk =<< cuCtxSetCurrent ctx++{# fun unsafe cuCtxSetCurrent+ { useContext `Context' } -> `Status' cToEnum #}+#endif++-- | -- Return the device of the currently active context ---current :: IO Device-current = resultIfOk =<< cuCtxGetDevice+device :: IO Device+device = resultIfOk =<< cuCtxGetDevice {# fun unsafe cuCtxGetDevice { alloca- `Device' dev* } -> `Status' cToEnum #}@@ -142,8 +184,8 @@ -- | -- Pop the current CUDA context from the CPU thread. The context must have a--- single usage count (matching calls to attach/detach). If successful, the new--- context is returned, and the old may be attached to a different CPU.+-- single usage count (matching calls to 'attach' and 'detach'). If successful,+-- the new context is returned, and the old may be attached to a different CPU. -- pop :: IO Context pop = resultIfOk =<< cuCtxPopCurrent@@ -155,7 +197,7 @@ -- | -- Push the given context onto the CPU's thread stack of current contexts. The--- context must be floating (via `pop'), i.e. not attached to any thread.+-- context must be floating (via 'pop'), i.e. not attached to any thread. -- push :: Context -> IO () push ctx = nothingIfOk =<< cuCtxPushCurrent ctx@@ -175,37 +217,101 @@ --------------------------------------------------------------------------------+-- Peer access+--------------------------------------------------------------------------------++-- |+-- Queries if the first device can directly access the memory of the second. If+-- direct access is possible, it can then be enabled with 'add'. Requires+-- cuda-4.0.+--+accessible :: Device -> Device -> IO Bool+#if CUDA_VERSION < 4000+accessible _ _ = requireSDK 4.0 "accessible"+#else+accessible dev peer = resultIfOk =<< cuDeviceCanAccessPeer dev peer++{# fun unsafe cuDeviceCanAccessPeer+ { alloca- `Bool' peekBool*+ , useDevice `Device'+ , useDevice `Device' } -> `Status' cToEnum #}+#endif+++-- |+-- If the devices of both the current and supplied contexts support unified+-- addressing, then enable allocations in the supplied context to be accessible+-- by the current context. Requires cuda-4.0.+--+add :: Context -> [PeerFlag] -> IO ()+#if CUDA_VERSION < 4000+add _ _ = requireSDK 4.0 "add"+#else+add ctx flags = nothingIfOk =<< cuCtxEnablePeerAccess ctx flags++{# fun unsafe cuCtxEnablePeerAccess+ { useContext `Context'+ , combineBitMasks `[PeerFlag]' } -> `Status' cToEnum #}+#endif+++-- |+-- Disable direct memory access from the current context to the supplied+-- context. Requires cuda-4.0.+--+remove :: Context -> IO ()+#if CUDA_VERSION < 4000+remove _ = requireSDK 4.0 "remove"+#else+remove ctx = nothingIfOk =<< cuCtxDisablePeerAccess ctx++{# fun unsafe cuCtxDisablePeerAccess+ { useContext `Context' } -> `Status' cToEnum #}+#endif+++-------------------------------------------------------------------------------- -- Cache configuration -------------------------------------------------------------------------------- -#if CUDA_VERSION >= 3010 -- |--- Query compute 2.0 call stack limits+-- Query compute 2.0 call stack limits. Requires cuda-3.1. -- getLimit :: Limit -> IO Int+#if CUDA_VERSION < 3010+getLimit _ = requireSDK 3.1 "getLimit"+#else getLimit l = resultIfOk =<< cuCtxGetLimit l +{# fun unsafe cuCtxGetLimit+ { alloca- `Int' peekIntConv*+ , cFromEnum `Limit' } -> `Status' cToEnum #}+#endif+ -- |--- Specify the size of the call stack, for compute 2.0 devices+-- Specify the size of the call stack, for compute 2.0 devices. Requires+-- cuda-3.1. -- setLimit :: Limit -> Int -> IO ()+#if CUDA_VERSION < 3010+setLimit _ _ = requireSDK 3.1 "setLimit"+#else setLimit l n = nothingIfOk =<< cuCtxSetLimit l n -{# fun unsafe cuCtxGetLimit- { alloca- `Int' peekIntConv*- , cFromEnum `Limit' } -> `Status' cToEnum #}- {# fun unsafe cuCtxSetLimit { cFromEnum `Limit' , cIntConv `Int' } -> `Status' cToEnum #} #endif-#if CUDA_VERSION >= 3020+ -- | -- On devices where the L1 cache and shared memory use the same hardware -- resources, this sets the preferred cache configuration for the current--- context. This is only a preference.+-- context. This is only a preference. Requires cuda-3.2. -- setCacheConfig :: Cache -> IO ()+#if CUDA_VERSION < 3020+setCacheConfig _ = requireSDK 3.2 "setCacheConfig"+#else setCacheConfig c = nothingIfOk =<< cuCtxSetCacheConfig c {# fun unsafe cuCtxSetCacheConfig
Foreign/CUDA/Driver/Device.chs view
@@ -1,23 +1,23 @@-{-# LANGUAGE ForeignFunctionInterface, EmptyDataDecls #-}+{-# LANGUAGE CPP, ForeignFunctionInterface, EmptyDataDecls #-} -------------------------------------------------------------------------------- -- | -- Module : Foreign.CUDA.Driver.Device--- Copyright : (c) [2009..2010] Trevor L. McDonell+-- Copyright : (c) [2009..2011] Trevor L. McDonell -- License : BSD -- -- Device management for low-level driver interface -- -------------------------------------------------------------------------------- -module Foreign.CUDA.Driver.Device- (- Device(..), -- should be exported abstractly- DeviceProperties(..), DeviceAttribute(..), ComputeMode(..), InitFlag,+module Foreign.CUDA.Driver.Device ( - initialise, capability, device, attribute, count, name, props, totalMem- )- where+ -- * Device Management+ Device(..), -- should be exported abstractly+ DeviceProperties(..), DeviceAttribute(..), ComputeMode(..), InitFlag,+ initialise, capability, device, attribute, count, name, props, totalMem +) where+ #include <cuda.h> #include "cbits/stubs.h" {# context lib="cuda" #}@@ -108,7 +108,6 @@ -- exports actual option values. -- data InitFlag- instance Enum InitFlag where @@ -229,35 +228,57 @@ u32 <- attribute d MaximumTexture3dHeight u33 <- attribute d MaximumTexture3dDepth #endif+#if CUDA_VERSION >= 4000+ ae <- attribute d AsyncEngineCount+ l2 <- attribute d L2CacheSize+ tm <- attribute d MaxThreadsPerMultiprocessor+ mw <- attribute d GlobalMemoryBusWidth+ mc <- attribute d MemoryClockRate+ pb <- attribute d PciBusId+ pd <- attribute d PciDeviceId+ pm <- attribute d PciDomainId+ ua <- toBool `fmap` attribute d UnifiedAddressing+ tcc <- toBool `fmap` attribute d TccDriver+#endif return DeviceProperties {- deviceName = n,- computeCapability = cc,- totalGlobalMem = gm,- totalConstMem = cuTotalConstMem p,- sharedMemPerBlock = cuSharedMemPerBlock p,- regsPerBlock = cuRegsPerBlock p,- warpSize = cuWarpSize p,- maxThreadsPerBlock = cuMaxThreadsPerBlock p,- maxBlockSize = cuMaxBlockSize p,- maxGridSize = cuMaxGridSize p,- clockRate = cuClockRate p,- multiProcessorCount = pc,- memPitch = cuMemPitch p,- textureAlignment = cuTextureAlignment p,- computeMode = md,- deviceOverlap = ov,+ deviceName = n,+ computeCapability = cc,+ totalGlobalMem = gm,+ totalConstMem = cuTotalConstMem p,+ sharedMemPerBlock = cuSharedMemPerBlock p,+ regsPerBlock = cuRegsPerBlock p,+ warpSize = cuWarpSize p,+ maxThreadsPerBlock = cuMaxThreadsPerBlock p,+ maxBlockSize = cuMaxBlockSize p,+ maxGridSize = cuMaxGridSize p,+ clockRate = cuClockRate p,+ multiProcessorCount = pc,+ memPitch = cuMemPitch p,+ textureAlignment = cuTextureAlignment p,+ computeMode = md,+ deviceOverlap = ov, #if CUDA_VERSION >= 3000- concurrentKernels = ck,- eccEnabled = ee,- maxTextureDim1D = u1,- maxTextureDim2D = (u21,u22),- maxTextureDim3D = (u31,u32,u33),+ concurrentKernels = ck,+ eccEnabled = ee,+ maxTextureDim1D = u1,+ maxTextureDim2D = (u21,u22),+ maxTextureDim3D = (u31,u32,u33), #endif- kernelExecTimeoutEnabled = ke,- integrated = tg,- canMapHostMemory = hm+#if CUDA_VERSION >= 4000+ asyncEngineCount = ae,+ cacheMemL2 = l2,+ maxThreadsPerMultiProcessor = tm,+ memBusWidth = mw,+ memClockRate = mc,+ pciInfo = PCI pb pd pm,+ tccDriverEnabled = tcc,+ unifiedAddressing = ua,+#endif+ kernelExecTimeoutEnabled = ke,+ integrated = tg,+ canMapHostMemory = hm }
Foreign/CUDA/Driver/Error.chs view
@@ -2,7 +2,7 @@ -------------------------------------------------------------------------------- -- | -- Module : Foreign.CUDA.Driver.Error--- Copyright : (c) [2009..2010] Trevor L. McDonell+-- Copyright : (c) [2009..2011] Trevor L. McDonell -- License : BSD -- -- Error handling@@ -82,6 +82,17 @@ #if CUDA_VERSION >= 3020 describe OperatingSystem = "operating system call failed" #endif+#if CUDA_VERSION >= 4000+describe ProfilerDisabled = "profiling APIs disabled: application running with visual profiler"+describe ProfilerNotInitialized = "profiler not initialised"+describe ProfilerAlreadyStarted = "profiler already started"+describe ProfilerAlreadyStopped = "profiler already stopped"+describe ContextAlreadyInUse = "context is already bound to a thread and in use"+describe PeerAccessAlreadyEnabled = "peer access already enabled"+describe PeerAccessNotEnabled = "peer access has not been enabled"+describe PrimaryContextActive = "primary context for this device has already been initialised"+describe ContextIsDestroyed = "context already destroyed"+#endif describe Unknown = "unknown error" @@ -107,17 +118,12 @@ cudaError :: String -> IO a cudaError s = throwIO (UserError s) - -- |--- Run a CUDA computation+-- A specially formatted error message ---{--runCUDA f = runEMT $ do- f `catchWithSrcLoc` \l e -> lift (handle l e)- where- handle :: CallTrace -> CUDAException -> IO ()- handle l e = putStrLn $ showExceptionWithTrace l e--}+requireSDK :: Double -> String -> IO a+requireSDK v s = cudaError ("'" ++ s ++ "' requires at least cuda-" ++ show v)+ -------------------------------------------------------------------------------- -- Helper Functions
Foreign/CUDA/Driver/Event.chs view
@@ -1,30 +1,26 @@-{-# LANGUAGE ForeignFunctionInterface, EmptyDataDecls #-}+{-# LANGUAGE CPP, ForeignFunctionInterface, EmptyDataDecls #-} -------------------------------------------------------------------------------- -- | -- Module : Foreign.CUDA.Driver.Event--- Copyright : (c) [2009..2010] Trevor L. McDonell+-- Copyright : (c) [2009..2011] Trevor L. McDonell -- License : BSD -- -- Event management for low-level driver interface -- -------------------------------------------------------------------------------- +module Foreign.CUDA.Driver.Event (++ -- * Event Management+ Event, EventFlag(..), WaitFlag,+ create, destroy, elapsedTime, query, record, wait, block++) where+ #include <cuda.h>+#include "cbits/stubs.h" {# context lib="cuda" #} -module Foreign.CUDA.Driver.Event- (- Event, EventFlag(..),-#if CUDA_VERSION >= 3020- WaitFlag,-#endif- create, destroy, elapsedTime, query, record, block-#if CUDA_VERSION >= 3020- , wait-#endif- )- where- -- Friends import Foreign.CUDA.Internal.C2HS import Foreign.CUDA.Driver.Error@@ -45,7 +41,6 @@ -- newtype Event = Event { useEvent :: {# type CUevent #}} - -- | -- Event creation flags --@@ -53,7 +48,6 @@ { underscoreToCase } with prefix="CU_EVENT" deriving (Eq, Show) #} - -- | -- Possible option flags for waiting for events --@@ -129,12 +123,14 @@ , useStream `Stream' } -> `Status' cToEnum #} -#if CUDA_VERSION >= 3020 -- |--- Marks all future work submitted to the (optional) stream wait until the given--- event reports completion before beginning execution.+-- Makes all future work submitted to the (optional) stream wait until the given+-- event reports completion before beginning execution. Requires cuda-3.2. -- wait :: Event -> Maybe Stream -> [WaitFlag] -> IO ()+#if CUDA_VERSION < 3020+wait _ _ _ = requireSDK 3.2 "wait"+#else wait ev mst flags = nothingIfOk =<< case mst of Just st -> cuStreamWaitEvent st ev flags
Foreign/CUDA/Driver/Exec.chs view
@@ -1,31 +1,26 @@-{-# LANGUAGE GADTs, ForeignFunctionInterface #-}+{-# LANGUAGE GADTs, CPP, ForeignFunctionInterface, EmptyDataDecls #-} -------------------------------------------------------------------------------- -- | -- Module : Foreign.CUDA.Driver.Exec--- Copyright : (c) [2009..2010] Trevor L. McDonell+-- Copyright : (c) [2009..2011] Trevor L. McDonell -- License : BSD -- -- Kernel execution control for low-level driver interface -- -------------------------------------------------------------------------------- +module Foreign.CUDA.Driver.Exec (++ -- * Kernel Execution+ Fun(Fun), FunParam(..), FunAttribute(..), CacheConfig(..),+ requires, setBlockShape, setSharedSize, setParams, setCacheConfigFun,+ launch, launchKernel++) where+ #include <cuda.h> {# context lib="cuda" #} -module Foreign.CUDA.Driver.Exec- (- Fun(Fun), FunParam(..), FunAttribute(..),-#if CUDA_VERSION >= 3000- CacheConfig(..),-#endif- requires, setBlockShape, setSharedSize, setParams,-#if CUDA_VERSION >= 3000- setCacheConfigFun,-#endif- launch- )- where- -- Friends import Foreign.CUDA.Internal.C2HS import Foreign.CUDA.Driver.Error@@ -35,9 +30,19 @@ -- System import Foreign import Foreign.C+import Data.Maybe import Control.Monad (zipWithM_) +#if CUDA_VERSION >= 3020+{-# DEPRECATED TArg "as of CUDA version 3.2" #-}+#endif+#if CUDA_VERSION >= 4000+{-# DEPRECATED setBlockShape, setSharedSize, setParams, launch+ "use launchKernel instead" #-}+#endif++ -------------------------------------------------------------------------------- -- Data Types --------------------------------------------------------------------------------@@ -56,10 +61,12 @@ , MAX_THREADS_PER_BLOCK as MaxKernelThreadsPerBlock } with prefix="CU_FUNC_ATTRIBUTE" deriving (Eq, Show) #} -#if CUDA_VERSION >= 3000 -- | -- Cache configuration preference --+#if CUDA_VERSION < 3000+data CacheConfig+#else {# enum CUfunc_cache_enum as CacheConfig { underscoreToCase } with prefix="CU_FUNC_CACHE_PREFER" deriving (Eq, Show) #}@@ -69,9 +76,9 @@ -- Kernel function parameters -- data FunParam where- IArg :: Int -> FunParam- FArg :: Float -> FunParam- TArg :: Texture -> FunParam -- deprecated+ IArg :: Int -> FunParam+ FArg :: Float -> FunParam+ TArg :: Texture -> FunParam VArg :: Storable a => a -> FunParam @@ -92,8 +99,8 @@ -- |--- Specify the (x,y,z) dimensions of the thread blocks that are created when the--- given kernel function is lanched+-- Specify the @(x,y,z)@ dimensions of the thread blocks that are created when+-- the given kernel function is launched. -- setBlockShape :: Fun -> (Int,Int,Int) -> IO () setBlockShape fn (x,y,z) = nothingIfOk =<< cuFuncSetBlockShape fn x y z@@ -116,7 +123,7 @@ { useFun `Fun' , cIntConv `Integer' } -> `Status' cToEnum #} -#if CUDA_VERSION >= 3000+ -- | -- On devices where the L1 cache and shared memory use the same hardware -- resources, this sets the preferred cache configuration for the given device@@ -127,6 +134,9 @@ -- synchronisation point for streamed kernel launches. -- setCacheConfigFun :: Fun -> CacheConfig -> IO ()+#if CUDA_VERSION < 3000+setCacheConfigFun _ _ = requireSDK 3.0 "setCacheConfigFun"+#else setCacheConfigFun fn pref = nothingIfOk =<< cuFuncSetCacheConfig fn pref {# fun unsafe cuFuncSetCacheConfig@@ -135,9 +145,9 @@ #endif -- |--- Invoke the kernel on a size (w,h) grid of blocks. Each block contains the--- number of threads specified by a previous call to `setBlockShape'. The launch--- may also be associated with a specific `Stream'.+-- Invoke the kernel on a size @(w,h)@ grid of blocks. Each block contains the+-- number of threads specified by a previous call to 'setBlockShape'. The launch+-- may also be associated with a specific 'Stream'. -- launch :: Fun -> (Int,Int) -> Maybe Stream -> IO () launch fn (w,h) mst =@@ -152,6 +162,54 @@ , useStream `Stream' } -> `Status' cToEnum #} +-- |+-- Invoke a kernel on a @(gx * gy * gz)@ grid of blocks, where each block+-- contains @(tx * ty * tz)@ threads and has access to a given number of bytes+-- of shared memory. The launch may also be associated with a specific 'Stream'.+--+launchKernel+ :: Fun -- ^ function to execute+ -> (Int,Int,Int) -- ^ block grid dimension+ -> (Int,Int,Int) -- ^ thread block shape+ -> Int -- ^ shared memory (bytes)+ -> Maybe Stream -- ^ (optional) stream to execute in+ -> [FunParam] -- ^ list of function parameters+ -> IO ()+#if CUDA_VERSION >= 4000+launchKernel fn (gx,gy,gz) (tx,ty,tz) sm mst args+ = (=<<) nothingIfOk+ $ withMany withFP args+ $ \pa -> withArray pa+ $ \pp -> cuLaunchKernel fn gx gy gz tx ty tz sm st pp nullPtr+ where+ st = fromMaybe (Stream nullPtr) mst++ withFP :: FunParam -> (Ptr FunParam -> IO b) -> IO b+ withFP p f = case p of+ IArg v -> with v (f . castPtr)+ FArg v -> with v (f . castPtr)+ VArg v -> with v (f . castPtr)+ TArg _ -> error "launchKernel: TArg is deprecated"+++{# fun unsafe cuLaunchKernel+ { useFun `Fun'+ , `Int', `Int', `Int'+ , `Int', `Int', `Int'+ , `Int'+ , useStream `Stream'+ , castPtr `Ptr (Ptr FunParam)'+ , castPtr `Ptr (Ptr ())' } -> `Status' cToEnum #}++#else+launchKernel fn (gx,gy,_) (tx,ty,tz) sm mst args = do+ setParams fn args+ setSharedSize fn (toInteger sm)+ setBlockShape fn (tx,ty,tz)+ launch fn (gx,gy) mst+#endif++ -------------------------------------------------------------------------------- -- Kernel function parameters --------------------------------------------------------------------------------@@ -173,11 +231,7 @@ set f o (IArg v) = nothingIfOk =<< cuParamSeti f o v set f o (FArg v) = nothingIfOk =<< cuParamSetf f o v-#if CUDA_VERSION < 3020 set f _ (TArg v) = nothingIfOk =<< cuParamSetTexRef f (-1) v-#else- set _ _ (TArg _) = return ()-#endif set f o (VArg v) = with v $ \p -> (nothingIfOk =<< cuParamSetv f o p (sizeOf v)) @@ -202,10 +256,8 @@ , castPtr `Ptr a' , `Int' } -> `Status' cToEnum #} -#if CUDA_VERSION < 3020 {# fun unsafe cuParamSetTexRef { useFun `Fun' , `Int' -- must be CU_PARAM_TR_DEFAULT (-1) , useTexture `Texture' } -> `Status' cToEnum #}-#endif
Foreign/CUDA/Driver/Marshal.chs view
@@ -1,39 +1,43 @@-{-# LANGUAGE ForeignFunctionInterface #-}+{-# LANGUAGE CPP, ForeignFunctionInterface #-}+{-# OPTIONS_HADDOCK prune #-} -------------------------------------------------------------------------------- -- | -- Module : Foreign.CUDA.Driver.Marshal--- Copyright : (c) [2009..2010] Trevor L. McDonell+-- Copyright : (c) [2009..2011] Trevor L. McDonell -- License : BSD -- -- Memory management for low-level driver interface -- -------------------------------------------------------------------------------- -module Foreign.CUDA.Driver.Marshal- (- -- * Host Allocation- AllocFlag(..), mallocHostArray, freeHost,+module Foreign.CUDA.Driver.Marshal ( - -- * Device Allocation- mallocArray, allocaArray, free,+ -- * Host Allocation+ AllocFlag(..),+ mallocHostArray, freeHost, registerArray, unregisterArray, - -- * Marshalling- peekArray, peekArrayAsync, peekListArray,- pokeArray, pokeArrayAsync, pokeListArray,- copyArrayAsync,+ -- * Device Allocation+ mallocArray, allocaArray, free, - -- * Combined Allocation and Marshalling- newListArray, newListArrayLen,- withListArray, withListArrayLen,+ -- * Marshalling+ peekArray, peekArrayAsync, peekListArray,+ pokeArray, pokeArrayAsync, pokeListArray,+ copyArrayAsync,+ copyArrayPeer, copyArrayPeerAsync, - -- * Utility- memset, getDevicePtr, getBasePtr, getMemInfo,+ -- * Combined Allocation and Marshalling+ newListArray, newListArrayLen,+ withListArray, withListArrayLen, - -- Internal- useDeviceHandle, peekDeviceHandle- )- where+ -- * Utility+ memset, memsetAsync,+ getDevicePtr, getBasePtr, getMemInfo, + -- Internal+ useDeviceHandle, peekDeviceHandle++) where+ #include <cuda.h> #include "cbits/stubs.h" {# context lib="cuda" #}@@ -42,10 +46,12 @@ import Foreign.CUDA.Ptr import Foreign.CUDA.Driver.Error import Foreign.CUDA.Driver.Stream (Stream(..))+import Foreign.CUDA.Driver.Context (Context(..)) import Foreign.CUDA.Internal.C2HS -- System import Data.Int+import Data.Maybe import Unsafe.Coerce import Control.Applicative import Control.Exception.Extensible@@ -53,7 +59,7 @@ import Foreign.C import Foreign.Ptr import Foreign.Storable-import qualified Foreign.Marshal as F+import qualified Foreign.Marshal as F #c typedef enum CUmemhostalloc_option_enum {@@ -111,6 +117,56 @@ useHP = castPtr . useHostPtr +-- |+-- Page-locks the specified array (on the host) and maps it for the device(s) as+-- specified by the given allocation flags. Subsequently, the memory is accessed+-- directly by the device so can be read and written with much higher bandwidth+-- than pageable memory that has not been registered. The memory range is added+-- to the same tracking mechanism as 'mallocHostArray' to automatically+-- accelerate calls to functions such as 'pokeArray'.+--+-- Note that page-locking excessive amounts of memory may degrade system+-- performance, since it reduces the amount of pageable memory available. This+-- is best used sparingly to allocate staging areas for data exchange.+--+-- This function is not yet implemented on Mac OS X. Requires cuda-4.0.+--+registerArray :: Storable a => [AllocFlag] -> Int -> Ptr a -> IO (HostPtr a)+#if CUDA_VERSION < 4000+registerArray _ _ = requireSDK 4.0 "registerArray"+#else+registerArray flags n = go undefined+ where+ go :: Storable b => b -> Ptr b -> IO (HostPtr b)+ go x p = do+ status <- cuMemHostRegister p (n * sizeOf x) flags+ resultIfOk (status,HostPtr p)++{# fun unsafe cuMemHostRegister+ { castPtr `Ptr a'+ , `Int'+ , combineBitMasks `[AllocFlag]' } -> `Status' cToEnum #}+#endif+++-- |+-- Unmaps the memory from the given pointer, and makes it pageable again.+--+-- This function is not yet implemented on Mac OS X. Requires cuda-4.0.+--+unregisterArray :: HostPtr a -> IO (Ptr a)+#if CUDA_VERSION < 4000+unregisterArray _ = requireSDK 4.0 "unregisterArray"+#else+unregisterArray (HostPtr p) = do+ status <- cuMemHostUnregister p+ resultIfOk (status,p)++{# fun unsafe cuMemHostUnregister+ { castPtr `Ptr a' } -> `Status' cToEnum #}+#endif++ -------------------------------------------------------------------------------- -- Device Allocation --------------------------------------------------------------------------------@@ -184,10 +240,7 @@ peekArrayAsync n dptr hptr mst = doPeek undefined dptr where doPeek :: Storable a' => a' -> DevicePtr a' -> IO ()- doPeek x _ =- nothingIfOk =<< case mst of- Nothing -> cuMemcpyDtoHAsync hptr dptr (n * sizeOf x) (Stream nullPtr)- Just st -> cuMemcpyDtoHAsync hptr dptr (n * sizeOf x) st+ doPeek x _ = nothingIfOk =<< cuMemcpyDtoHAsync hptr dptr (n * sizeOf x) (fromMaybe (Stream nullPtr) mst) {# fun unsafe cuMemcpyDtoHAsync { useHP `HostPtr a'@@ -233,10 +286,7 @@ pokeArrayAsync n hptr dptr mst = dopoke undefined dptr where dopoke :: Storable a' => a' -> DevicePtr a' -> IO ()- dopoke x _ =- nothingIfOk =<< case mst of- Nothing -> cuMemcpyHtoDAsync dptr hptr (n * sizeOf x) (Stream nullPtr)- Just st -> cuMemcpyHtoDAsync dptr hptr (n * sizeOf x) st+ dopoke x _ = nothingIfOk =<< cuMemcpyHtoDAsync dptr hptr (n * sizeOf x) (fromMaybe (Stream nullPtr) mst) {# fun unsafe cuMemcpyHtoDAsync { useDeviceHandle `DevicePtr a'@@ -274,6 +324,65 @@ , `Int' } -> `Status' cToEnum #} +-- |+-- Copies an array from device memory in one context to device memory in another+-- context. Note that this function is asynchronous with respect to the host,+-- but serialised with respect to all pending and future asynchronous work in+-- the source and destination contexts. To avoid this synchronisation, use+-- 'copyArrayPeerAsync' instead.+--+copyArrayPeer :: Storable a+ => Int -- ^ number of array elements+ -> DevicePtr a -> Context -- ^ source array and context+ -> DevicePtr a -> Context -- ^ destination array and context+ -> IO ()+#if CUDA_VERSION < 4000+copyArrayPeer _ _ _ _ _ = requireSDK 4.0 "copyArrayPeer"+#else+copyArrayPeer n src srcCtx dst dstCtx = go undefined src dst+ where+ go :: Storable b => b -> DevicePtr b -> DevicePtr b -> IO ()+ go x _ _ = nothingIfOk =<< cuMemcpyPeer dst dstCtx src srcCtx (n * sizeOf x)++{# fun unsafe cuMemcpyPeer+ { useDeviceHandle `DevicePtr a'+ , useContext `Context'+ , useDeviceHandle `DevicePtr a'+ , useContext `Context'+ , `Int' } -> `Status' cToEnum #}+#endif+++-- |+-- Copies from device memory in one context to device memory in another context.+-- Note that this function is asynchronous with respect to the host and all work+-- in other streams and devices.+--+copyArrayPeerAsync :: Storable a+ => Int -- ^ number of array elements+ -> DevicePtr a -> Context -- ^ source array and context+ -> DevicePtr a -> Context -- ^ destination array and device context+ -> Maybe Stream -- ^ stream to associate with+ -> IO ()+#if CUDA_VERSION < 4000+copyArrayPeerAsync _ _ _ _ _ _ = requireSDK 4.0 "copyArrayPeerAsync"+#else+copyArrayPeerAsync n src srcCtx dst dstCtx st = go undefined src dst+ where+ go :: Storable b => b -> DevicePtr b -> DevicePtr b -> IO ()+ go x _ _ = nothingIfOk =<< cuMemcpyPeerAsync dst dstCtx src srcCtx (n * sizeOf x) stream+ stream = fromMaybe (Stream nullPtr) st++{# fun unsafe cuMemcpyPeerAsync+ { useDeviceHandle `DevicePtr a'+ , useContext `Context'+ , useDeviceHandle `DevicePtr a'+ , useContext `Context'+ , `Int'+ , useStream `Stream' } -> `Status' cToEnum #}+#endif++ -------------------------------------------------------------------------------- -- Combined Allocation and Marshalling --------------------------------------------------------------------------------@@ -363,6 +472,43 @@ -- |+-- Set the number of data elements to the specified value, which may be either+-- 8-, 16-, or 32-bits wide. The operation is asynchronous and may optionally be+-- associated with a stream. Requires cuda-3.2.+--+memsetAsync :: Storable a => DevicePtr a -> Int -> a -> Maybe Stream -> IO ()+#if CUDA_VERSION < 3020+memsetAsync _ _ _ _ = requireSDK 3.2 "memsetAsync"+#else+memsetAsync dptr n val mst = case sizeOf val of+ 1 -> nothingIfOk =<< cuMemsetD8Async dptr val n stream+ 2 -> nothingIfOk =<< cuMemsetD16Async dptr val n stream+ 4 -> nothingIfOk =<< cuMemsetD32Async dptr val n stream+ _ -> cudaError "can only memset 8-, 16-, and 32-bit values"+ where+ stream = fromMaybe (Stream nullPtr) mst++{# fun unsafe cuMemsetD8Async+ { useDeviceHandle `DevicePtr a'+ , unsafeCoerce `a'+ , `Int'+ , useStream `Stream' } -> `Status' cToEnum #}++{# fun unsafe cuMemsetD16Async+ { useDeviceHandle `DevicePtr a'+ , unsafeCoerce `a'+ , `Int'+ , useStream `Stream' } -> `Status' cToEnum #}++{# fun unsafe cuMemsetD32Async+ { useDeviceHandle `DevicePtr a'+ , unsafeCoerce `a'+ , `Int'+ , useStream `Stream' } -> `Status' cToEnum #}+#endif+++-- | -- Return the device pointer associated with a mapped, pinned host buffer, which -- was allocated with the 'DeviceMapped' option by 'mallocHostArray'. --@@ -394,7 +540,6 @@ where alloca' :: Storable a => (Ptr a -> IO b) -> IO b alloca' = F.alloca- -- | -- Return the amount of free and total memory respectively available to the
Foreign/CUDA/Driver/Module.chs view
@@ -2,22 +2,21 @@ -------------------------------------------------------------------------------- -- | -- Module : Foreign.CUDA.Driver.Module--- Copyright : (c) [2009..2010] Trevor L. McDonell+-- Copyright : (c) [2009..2011] Trevor L. McDonell -- License : BSD -- -- Module management for low-level driver interface -- -------------------------------------------------------------------------------- -module Foreign.CUDA.Driver.Module- (- Module,- JITOption(..), JITTarget(..), JITResult(..),- getFun, getPtr, getTex,- loadFile, loadData, loadDataEx, unload- )- where+module Foreign.CUDA.Driver.Module ( + -- * Module Management+ Module, JITOption(..), JITTarget(..), JITResult(..),+ getFun, getPtr, getTex, loadFile, loadData, loadDataEx, unload++) where+ #include <cuda.h> #include "cbits/stubs.h" {# context lib="cuda" #}@@ -38,7 +37,7 @@ import Control.Monad (liftM) import Control.Exception.Extensible (throwIO) import Data.ByteString.Char8 (ByteString)-import qualified Data.ByteString.Char8 as B+import qualified Data.ByteString.Char8 as B --------------------------------------------------------------------------------
Foreign/CUDA/Driver/Stream.chs view
@@ -2,21 +2,23 @@ -------------------------------------------------------------------------------- -- | -- Module : Foreign.CUDA.Driver.Stream--- Copyright : (c) [2009..2010] Trevor L. McDonell+-- Copyright : (c) [2009..2011] Trevor L. McDonell -- License : BSD -- -- Stream management for low-level driver interface -- -------------------------------------------------------------------------------- -module Foreign.CUDA.Driver.Stream- (- Stream(..), StreamFlag,- create, destroy, finished, block- )- where+module Foreign.CUDA.Driver.Stream ( + -- * Stream Management+ Stream(..), StreamFlag,+ create, destroy, finished, block++) where+ #include <cuda.h>+#include "cbits/stubs.h" {# context lib="cuda" #} -- Friends
Foreign/CUDA/Driver/Texture.chs view
@@ -1,33 +1,33 @@ {-# LANGUAGE ForeignFunctionInterface #-}+{-# OPTIONS_HADDOCK prune #-} -------------------------------------------------------------------------------- -- | -- Module : Foreign.CUDA.Driver.Texture--- Copyright : (c) [2009..2010] Trevor L. McDonell+-- Copyright : (c) [2009..2011] Trevor L. McDonell -- License : BSD -- -- Texture management for low-level driver interface -- -------------------------------------------------------------------------------- +module Foreign.CUDA.Driver.Texture (++ -- * Texture Reference Management+ Texture(..), Format(..), AddressMode(..), FilterMode(..), ReadMode(..),+ create, destroy,+ bind, bind2D,+ getAddressMode, getFilterMode, getFormat,+ setAddressMode, setFilterMode, setFormat, setReadMode,++ -- Internal+ peekTex++) where+ #include <cuda.h> #include "cbits/stubs.h" {# context lib="cuda" #} -module Foreign.CUDA.Driver.Texture- (- Texture(..), Format(..), AddressMode(..), FilterMode(..), ReadMode(..),-#if CUDA_VERSION < 3020- create, destroy,-#endif- bind, bind2D,- getAddressMode, getFilterMode, getFormat,- setAddressMode, setFilterMode, setFormat, setReadMode,-- -- Internal- peekTex- )- where- -- Friends import Foreign.CUDA.Ptr import Foreign.CUDA.Driver.Error@@ -39,12 +39,17 @@ import Foreign.C import Control.Monad +#if CUDA_VERSION >= 3020+{-# DEPRECATED create, destroy "as of CUDA version 3.2" #-}+#endif + -------------------------------------------------------------------------------- -- Data Types -------------------------------------------------------------------------------- --- |A texture reference+-- |+-- A texture reference -- newtype Texture = Texture { useTexture :: {# type CUtexref #}} @@ -54,19 +59,22 @@ peek p = Texture `fmap` peek (castPtr p) poke p t = poke (castPtr p) (useTexture t) --- |Texture reference addressing modes+-- |+-- Texture reference addressing modes -- {# enum CUaddress_mode as AddressMode { underscoreToCase } with prefix="CU_TR_ADDRESS_MODE" deriving (Eq, Show) #} --- |Texture reference filtering mode+-- |+-- Texture reference filtering mode -- {# enum CUfilter_mode as FilterMode { underscoreToCase } with prefix="CU_TR_FILTER_MODE" deriving (Eq, Show) #} --- |Texture read mode options+-- |+-- Texture read mode options -- #c typedef enum CUtexture_flag_enum {@@ -79,7 +87,8 @@ { underscoreToCase } with prefix="CU_TEXTURE_FLAG" deriving (Eq, Show) #} --- |Texture data formats+-- |+-- Texture data formats -- {# enum CUarray_format as Format { underscoreToCase@@ -96,8 +105,8 @@ -- Texture management -------------------------------------------------------------------------------- -#if CUDA_VERSION < 3020--- |Create a new texture reference. Once created, the application must call+-- |+-- Create a new texture reference. Once created, the application must call -- 'setPtr' to associate the reference with allocated memory. Other texture -- reference functions are used to specify the format and interpretation to be -- used when the memory is read through this reference.@@ -109,16 +118,18 @@ { alloca- `Texture' peekTex* } -> `Status' cToEnum #} --- |Destroy a texture reference+-- |+-- Destroy a texture reference -- destroy :: Texture -> IO () destroy tex = nothingIfOk =<< cuTexRefDestroy tex {# fun unsafe cuTexRefDestroy { useTexture `Texture' } -> `Status' cToEnum #}-#endif --- |Bind a linear array address of the given size (bytes) as a texture++-- |+-- Bind a linear array address of the given size (bytes) as a texture -- reference. Any previously bound references are unbound. -- bind :: Texture -> DevicePtr a -> Int64 -> IO ()@@ -131,7 +142,8 @@ , `Int64' } -> `Status' cToEnum #} --- |Bind a linear address range to the given texture reference as a+-- |+-- Bind a linear address range to the given texture reference as a -- two-dimensional arena. Any previously bound reference is unbound. Note that -- calls to 'setFormat' can not follow a call to 'bind2D' for the same texture -- reference.@@ -150,7 +162,8 @@ , `Int64' } -> `Status' cToEnum #} --- |Get the addressing mode used by a texture reference, corresponding to the+-- |+-- Get the addressing mode used by a texture reference, corresponding to the -- given dimension (currently the only supported dimension values are 0 or 1). -- getAddressMode :: Texture -> Int -> IO AddressMode@@ -162,7 +175,8 @@ , `Int' } -> `Status' cToEnum #} --- |Get the filtering mode used by a texture reference+-- |+-- Get the filtering mode used by a texture reference -- getFilterMode :: Texture -> IO FilterMode getFilterMode tex = resultIfOk =<< cuTexRefGetFilterMode tex@@ -172,7 +186,8 @@ , useTexture `Texture' } -> `Status' cToEnum #} --- |Get the data format and number of channel components of the bound texture+-- |+-- Get the data format and number of channel components of the bound texture -- getFormat :: Texture -> IO (Format, Int) getFormat tex = do@@ -185,7 +200,8 @@ , useTexture `Texture' } -> `Status' cToEnum #} --- |Specify the addressing mode for the given dimension of a texture reference+-- |+-- Specify the addressing mode for the given dimension of a texture reference -- setAddressMode :: Texture -> Int -> AddressMode -> IO () setAddressMode tex dim mode = nothingIfOk =<< cuTexRefSetAddressMode tex dim mode@@ -196,7 +212,8 @@ , cFromEnum `AddressMode' } -> `Status' cToEnum #} --- |Specify the filtering mode to be used when reading memory through a texture+-- |+-- Specify the filtering mode to be used when reading memory through a texture -- reference -- setFilterMode :: Texture -> FilterMode -> IO ()@@ -207,7 +224,8 @@ , cFromEnum `FilterMode' } -> `Status' cToEnum #} --- |Specify additional characteristics for reading and indexing the texture+-- |+-- Specify additional characteristics for reading and indexing the texture -- reference -- setReadMode :: Texture -> ReadMode -> IO ()@@ -218,8 +236,9 @@ , cFromEnum `ReadMode' } -> `Status' cToEnum #} --- |Specify the format of the data and number of packed components per element--- to be read by the texture reference+-- |+-- Specify the format of the data and number of packed components per element to+-- be read by the texture reference -- setFormat :: Texture -> Format -> Int -> IO () setFormat tex fmt chn = nothingIfOk =<< cuTexRefSetFormat tex fmt chn
Foreign/CUDA/Driver/Utils.chs view
@@ -2,22 +2,18 @@ -------------------------------------------------------------------------------- -- | -- Module : Foreign.CUDA.Driver.Utils--- Copyright : (c) [2009..2010] Trevor L. McDonell+-- Copyright : (c) [2009..2011] Trevor L. McDonell -- License : BSD -- -- Utility functions -- -------------------------------------------------------------------------------- -module Foreign.CUDA.Driver.Utils- (- driverVersion- )+module Foreign.CUDA.Driver.Utils (driverVersion) where #include <cuda.h> {# context lib="cuda" #}- -- Friends import Foreign.CUDA.Driver.Error
Foreign/CUDA/Ptr.hs view
@@ -1,7 +1,7 @@ -------------------------------------------------------------------------------- -- | -- Module : Foreign.CUDA.Ptr--- Copyright : (c) [2009..2010] Trevor L. McDonell+-- Copyright : (c) [2009..2011] Trevor L. McDonell -- License : BSD -- -- A common interface for host and device pointers. While it is possible mix the
Foreign/CUDA/Runtime.hs view
@@ -1,30 +1,30 @@ -------------------------------------------------------------------------------- -- | -- Module : Foreign.CUDA.Runtime--- Copyright : (c) [2009..2010] Trevor L. McDonell+-- Copyright : (c) [2009..2011] Trevor L. McDonell -- License : BSD -- -- Top level bindings to the C-for-CUDA runtime API -- -------------------------------------------------------------------------------- -module Foreign.CUDA.Runtime- (- module Foreign.CUDA.Ptr,- module Foreign.CUDA.Runtime.Device,- module Foreign.CUDA.Runtime.Error,- module Foreign.CUDA.Runtime.Exec,- module Foreign.CUDA.Runtime.Marshal,- module Foreign.CUDA.Runtime.Thread,- module Foreign.CUDA.Runtime.Utils- )- where+module Foreign.CUDA.Runtime ( + module Foreign.CUDA.Ptr,+ module Foreign.CUDA.Runtime.Device,+ module Foreign.CUDA.Runtime.Error,+ module Foreign.CUDA.Runtime.Exec,+ module Foreign.CUDA.Runtime.Marshal,+ module Foreign.CUDA.Runtime.Thread,+ module Foreign.CUDA.Runtime.Utils++) where+ import Foreign.CUDA.Ptr import Foreign.CUDA.Runtime.Device import Foreign.CUDA.Runtime.Error import Foreign.CUDA.Runtime.Exec import Foreign.CUDA.Runtime.Marshal-import Foreign.CUDA.Runtime.Thread+import Foreign.CUDA.Runtime.Thread ( exit ) import Foreign.CUDA.Runtime.Utils
Foreign/CUDA/Runtime/Device.chs view
@@ -1,23 +1,30 @@-{-# LANGUAGE ForeignFunctionInterface #-}+{-# LANGUAGE CPP, ForeignFunctionInterface, EmptyDataDecls #-} -------------------------------------------------------------------------------- -- | -- Module : Foreign.CUDA.Runtime.Device--- Copyright : (c) [2009..2010] Trevor L. McDonell+-- Copyright : (c) [2009..2011] Trevor L. McDonell -- License : BSD -- -- Device management routines -- -------------------------------------------------------------------------------- -module Foreign.CUDA.Runtime.Device- (- ComputeMode(..), DeviceFlag(..), DeviceProperties(..),+module Foreign.CUDA.Runtime.Device ( - -- ** Device management- choose, get, count, props, set, setFlags, setOrder- )- where+ -- * Device Management+ ComputeMode(..), Device, DeviceFlag(..), DeviceProperties(..),+ choose, get, count, props, set, setFlags, setOrder, reset, sync, + -- * Peer Access+ PeerFlag,+ accessible, add, remove,++ -- * Cache Configuration+ Limit(..),+ getLimit, setLimit++) where+ #include <cuda_runtime_api.h> {# context lib="cudart" #} @@ -52,8 +59,12 @@ -- Data Types -------------------------------------------------------------------------------- -{# pointer *cudaDeviceProp as ^ foreign -> DeviceProperties nocode #}+-- |+-- A device identifier+--+type Device = Int +{# pointer *cudaDeviceProp as ^ foreign -> DeviceProperties nocode #} -- | -- Device execution flags@@ -92,6 +103,18 @@ #if CUDART_VERSION >= 3010 ee <- cToBool `fmap` {#get cudaDeviceProp.ECCEnabled#} p #endif+#if CUDART_VERSION >= 4000+ ae <- cIntConv `fmap` {#get cudaDeviceProp.asyncEngineCount#} p+ l2 <- cIntConv `fmap` {#get cudaDeviceProp.l2CacheSize#} p+ tm <- cIntConv `fmap` {#get cudaDeviceProp.maxThreadsPerMultiProcessor#} p+ mw <- cIntConv `fmap` {#get cudaDeviceProp.memoryBusWidth#} p+ mc <- cIntConv `fmap` {#get cudaDeviceProp.memoryClockRate#} p+ pb <- cIntConv `fmap` {#get cudaDeviceProp.pciBusID#} p+ pd <- cIntConv `fmap` {#get cudaDeviceProp.pciDeviceID#} p+ pm <- cIntConv `fmap` {#get cudaDeviceProp.pciDomainID#} p+ tc <- cToBool `fmap` {#get cudaDeviceProp.tccDriver#} p+ ua <- cToBool `fmap` {#get cudaDeviceProp.unifiedAddressing#} p+#endif -- -- C->Haskell returns the wrong type when accessing static arrays in@@ -108,49 +131,61 @@ return DeviceProperties {- deviceName = n,- computeCapability = v1 + v2 / max 10 (10^ ((ceiling . logBase 10) v2 :: Int)),- totalGlobalMem = gm,- totalConstMem = cm,- sharedMemPerBlock = sm,- regsPerBlock = rb,- warpSize = ws,- maxThreadsPerBlock = tb,- maxBlockSize = (t1,t2,t3),- maxGridSize = (g1,g2,g3),- clockRate = cl,- multiProcessorCount = pc,- memPitch = mp,- textureAlignment = ta,- computeMode = md,- deviceOverlap = ov,+ deviceName = n,+ computeCapability =+ v1 + v2 / max 10 (10^ ((ceiling . logBase 10) v2 :: Int)),+ totalGlobalMem = gm,+ totalConstMem = cm,+ sharedMemPerBlock = sm,+ regsPerBlock = rb,+ warpSize = ws,+ maxThreadsPerBlock = tb,+ maxBlockSize = (t1,t2,t3),+ maxGridSize = (g1,g2,g3),+ clockRate = cl,+ multiProcessorCount = pc,+ memPitch = mp,+ textureAlignment = ta,+ computeMode = md,+ deviceOverlap = ov, #if CUDART_VERSION >= 3000- concurrentKernels = ck,- maxTextureDim1D = u1,- maxTextureDim2D = (u21,u22),- maxTextureDim3D = (u31,u32,u33),+ concurrentKernels = ck,+ maxTextureDim1D = u1,+ maxTextureDim2D = (u21,u22),+ maxTextureDim3D = (u31,u32,u33), #endif #if CUDART_VERSION >= 3010- eccEnabled = ee,+ eccEnabled = ee, #endif #if CUDART_VERSION >= 3000 && CUDART_VERSION < 3010- eccEnabled = False, -- not visible from runtime API < 3.1+ -- not visible from runtime API < 3.1+ eccEnabled = False, #endif- kernelExecTimeoutEnabled = ke,- integrated = tg,- canMapHostMemory = hm+#if CUDART_VERSION >= 4000+ asyncEngineCount = ae,+ cacheMemL2 = l2,+ maxThreadsPerMultiProcessor = tm,+ memBusWidth = mw,+ memClockRate = mc,+ tccDriverEnabled = tc,+ unifiedAddressing = ua,+ pciInfo = PCI pb pd pm,+#endif+ kernelExecTimeoutEnabled = ke,+ integrated = tg,+ canMapHostMemory = hm } ----------------------------------------------------------------------------------- Functions+-- Device Management -------------------------------------------------------------------------------- -- | -- Select the compute device which best matches the given criteria ---choose :: DeviceProperties -> IO Int-choose dev = resultIfOk =<< cudaChooseDevice dev+choose :: DeviceProperties -> IO Device+choose dev = resultIfOk =<< cudaChooseDevice dev {# fun unsafe cudaChooseDevice { alloca- `Int' peekIntConv*@@ -162,8 +197,8 @@ -- | -- Returns which device is currently being used ---get :: IO Int-get = resultIfOk =<< cudaGetDevice+get :: IO Device+get = resultIfOk =<< cudaGetDevice {# fun unsafe cudaGetDevice { alloca- `Int' peekIntConv* } -> `Status' cToEnum #}@@ -174,7 +209,7 @@ -- capability >= 1.0 -- count :: IO Int-count = resultIfOk =<< cudaGetDeviceCount+count = resultIfOk =<< cudaGetDeviceCount {# fun unsafe cudaGetDeviceCount { alloca- `Int' peekIntConv* } -> `Status' cToEnum #}@@ -183,8 +218,8 @@ -- | -- Return information about the selected compute device ---props :: Int -> IO DeviceProperties-props n = resultIfOk =<< cudaGetDeviceProperties n+props :: Device -> IO DeviceProperties+props n = resultIfOk =<< cudaGetDeviceProperties n {# fun unsafe cudaGetDeviceProperties { alloca- `DeviceProperties' peek*@@ -194,8 +229,8 @@ -- | -- Set device to be used for GPU execution ---set :: Int -> IO ()-set n = nothingIfOk =<< cudaSetDevice n+set :: Device -> IO ()+set n = nothingIfOk =<< cudaSetDevice n {# fun unsafe cudaSetDevice { `Int' } -> `Status' cToEnum #}@@ -204,8 +239,8 @@ -- | -- Set flags to be used for device executions ---setFlags :: [DeviceFlag] -> IO ()-setFlags f = nothingIfOk =<< cudaSetDeviceFlags (combineBitMasks f)+setFlags :: [DeviceFlag] -> IO ()+setFlags f = nothingIfOk =<< cudaSetDeviceFlags (combineBitMasks f) {# fun unsafe cudaSetDeviceFlags { `Int' } -> `Status' cToEnum #}@@ -214,12 +249,160 @@ -- | -- Set list of devices for CUDA execution in priority order ---setOrder :: [Int] -> IO ()-setOrder l = nothingIfOk =<< cudaSetValidDevices l (length l)+setOrder :: [Device] -> IO ()+setOrder l = nothingIfOk =<< cudaSetValidDevices l (length l) {# fun unsafe cudaSetValidDevices { withArrayIntConv* `[Int]' , `Int' } -> `Status' cToEnum #} where withArrayIntConv = withArray . map cIntConv++-- |+-- Block until the device has completed all preceding requested tasks. Returns+-- an error if one of the tasks fails.+--+sync :: IO ()+#if CUDART_VERSION < 4000+sync = nothingIfOk =<< cudaThreadSynchronize+{# fun unsafe cudaThreadSynchronize { } -> `Status' cToEnum #}+#else+sync = nothingIfOk =<< cudaDeviceSynchronize+{# fun unsafe cudaDeviceSynchronize { } -> `Status' cToEnum #}+#endif++-- |+-- Explicitly destroys and cleans up all runtime resources associated with the+-- current device in the current process. Any subsequent API call will+-- reinitialise the device.+--+-- Note that this function will reset the device immediately. It is the caller’s+-- responsibility to ensure that the device is not being accessed by any other+-- host threads from the process when this function is called.+--+reset :: IO ()+#if CUDART_VERSION >= 4000+reset = nothingIfOk =<< cudaDeviceReset+{# fun unsafe cudaDeviceReset { } -> `Status' cToEnum #}+#else+reset = nothingIfOk =<< cudaThreadExit+{# fun unsafe cudaThreadExit { } -> `Status' cToEnum #}+#endif+++--------------------------------------------------------------------------------+-- Peer Access+--------------------------------------------------------------------------------++-- |+-- Possible option values for direct peer memory access+--+data PeerFlag+instance Enum PeerFlag where++-- |+-- Queries if the first device can directly access the memory of the second. If+-- direct access is possible, it can then be enabled with 'add'. Requires+-- cuda-4.0.+--+accessible :: Device -> Device -> IO Bool+#if CUDART_VERSION < 4000+accessible _ _ = requireSDK 4.0 "accessible"+#else+accessible dev peer = resultIfOk =<< cudaDeviceCanAccessPeer dev peer++{# fun unsafe cudaDeviceCanAccessPeer+ { alloca- `Bool' peekBool*+ , cIntConv `Device'+ , cIntConv `Device' } -> `Status' cToEnum #}+#endif++-- |+-- If the devices of both the current and supplied contexts support unified+-- addressing, then enable allocations in the supplied context to be accessible+-- by the current context. Requires cuda-4.0.+--+add :: Device -> [PeerFlag] -> IO ()+#if CUDART_VERSION < 4000+add _ _ = requireSDK 4.0 "add"+#else+add dev flags = nothingIfOk =<< cudaDeviceEnablePeerAccess dev flags++{# fun unsafe cudaDeviceEnablePeerAccess+ { cIntConv `Device'+ , combineBitMasks `[PeerFlag]' } -> `Status' cToEnum #}+#endif+++-- |+-- Disable direct memory access from the current context to the supplied+-- context. Requires cuda-4.0.+--+remove :: Device -> IO ()+#if CUDART_VERSION < 4000+remove _ = requireSDK 4.0 "remove"+#else+remove dev = nothingIfOk =<< cudaDeviceDisablePeerAccess dev++{# fun unsafe cudaDeviceDisablePeerAccess+ { cIntConv `Device' } -> `Status' cToEnum #}+#endif+++--------------------------------------------------------------------------------+-- Cache Configuration+--------------------------------------------------------------------------------++-- |+-- Device limit flags+--+#if CUDART_VERSION < 3010+data Limit+#else+{# enum cudaLimit as Limit+ { underscoreToCase }+ with prefix="cudaLimit" deriving (Eq, Show) #}+#endif+++-- |+-- Query compute 2.0 call stack limits. Requires cuda-3.1.+--+getLimit :: Limit -> IO Int+#if CUDART_VERSION < 3010+getLimit _ = requireSDK 3.1 "getLimit"+#elif CUDART_VERSION < 4000+getLimit l = resultIfOk =<< cudaThreadGetLimit l++{# fun unsafe cudaThreadGetLimit+ { alloca- `Int' peekIntConv*+ , cFromEnum `Limit' } -> `Status' cToEnum #}+#else+getLimit l = resultIfOk =<< cudaDeviceGetLimit l++{# fun unsafe cudaDeviceGetLimit+ { alloca- `Int' peekIntConv*+ , cFromEnum `Limit' } -> `Status' cToEnum #}+#endif+++-- |+-- Set compute 2.0 call stack limits. Requires cuda-3.1.+--+setLimit :: Limit -> Int -> IO ()+#if CUDART_VERSION < 3010+setLimit _ _ = requireSDK 3.1 "setLimit"+#elif CUDART_VERSION < 4000+setLimit l n = nothingIfOk =<< cudaThreadSetLimit l n++{# fun unsafe cudaThreadSetLimit+ { cFromEnum `Limit'+ , cIntConv `Int' } -> `Status' cToEnum #}+#else+setLimit l n = nothingIfOk =<< cudaDeviceSetLimit l n++{# fun unsafe cudaDeviceSetLimit+ { cFromEnum `Limit'+ , cIntConv `Int' } -> `Status' cToEnum #}+#endif
Foreign/CUDA/Runtime/Error.chs view
@@ -2,22 +2,23 @@ -------------------------------------------------------------------------------- -- | -- Module : Foreign.CUDA.Runtime.Error--- Copyright : (c) [2009..2010] Trevor L. McDonell+-- Copyright : (c) [2009..2011] Trevor L. McDonell -- License : BSD -- -- Error handling functions -- -------------------------------------------------------------------------------- -module Foreign.CUDA.Runtime.Error- (- Status(..), CUDAException(..),- cudaError, describe,- resultIfOk, nothingIfOk- )- where+module Foreign.CUDA.Runtime.Error ( + Status(..), CUDAException(..), + cudaError, describe, requireSDK,+ resultIfOk, nothingIfOk++) where++ -- Friends import Foreign.CUDA.Internal.C2HS @@ -64,6 +65,12 @@ -- cudaError :: String -> IO a cudaError s = throwIO (UserError s)++-- |+-- A specially formatted error message+--+requireSDK :: Double -> String -> IO a+requireSDK v s = cudaError ("'" ++ s ++ "' requires at least cuda-" ++ show v) --------------------------------------------------------------------------------
Foreign/CUDA/Runtime/Event.chs view
@@ -1,33 +1,35 @@-{-# LANGUAGE ForeignFunctionInterface #-}+{-# LANGUAGE CPP, ForeignFunctionInterface, EmptyDataDecls #-} -------------------------------------------------------------------------------- -- | -- Module : Foreign.CUDA.Driver.Event--- Copyright : (c) [2009..2010] Trevor L. McDonell+-- Copyright : (c) [2009..2011] Trevor L. McDonell -- License : BSD -- -- Event management for C-for-CUDA runtime environment -- -------------------------------------------------------------------------------- -module Foreign.CUDA.Runtime.Event- (- Event, EventFlag(..),- create, destroy, elapsedTime, query, record, block- )- where+module Foreign.CUDA.Runtime.Event ( + -- * Event Management+ Event, EventFlag(..), WaitFlag,+ create, destroy, elapsedTime, query, record, wait, block++) where+ #include <cuda_runtime_api.h> {# context lib="cudart" #} -- Friends import Foreign.CUDA.Runtime.Error-import Foreign.CUDA.Runtime.Stream (Stream(..), defaultStream)+import Foreign.CUDA.Runtime.Stream ( Stream(..), defaultStream ) import Foreign.CUDA.Internal.C2HS -- System import Foreign import Foreign.C-import Control.Monad (liftM)+import Control.Monad ( liftM )+import Data.Maybe ( fromMaybe ) #c@@ -53,7 +55,13 @@ { underscoreToCase } with prefix="CUDA_EVENT_OPTION" deriving (Eq,Show) #} +-- |+-- Possible option flags for waiting for events+--+data WaitFlag+instance Enum WaitFlag where + -------------------------------------------------------------------------------- -- Event management --------------------------------------------------------------------------------@@ -119,6 +127,24 @@ { useEvent `Event' , useStream `Stream' } -> `Status' cToEnum #} ++-- |+-- Makes all future work submitted to the (optional) stream wait until the given+-- event reports completion before beginning execution. Requires cuda-3.2.+--+wait :: Event -> Maybe Stream -> [WaitFlag] -> IO ()+#if CUDART_VERSION < 3020+wait _ _ _ = requireSDK 3.2 "wait"+#else+wait ev mst flags =+ let st = fromMaybe defaultStream mst+ in nothingIfOk =<< cudaStreamWaitEvent st ev flags++{# fun unsafe cudaStreamWaitEvent+ { useStream `Stream'+ , useEvent `Event'+ , combineBitMasks `[WaitFlag]' } -> `Status' cToEnum #}+#endif -- | -- Wait until the event has been recorded
Foreign/CUDA/Runtime/Exec.chs view
@@ -1,32 +1,26 @@-{-# LANGUAGE GADTs, ForeignFunctionInterface #-}+{-# LANGUAGE GADTs, CPP, ForeignFunctionInterface #-} -------------------------------------------------------------------------------- -- | -- Module : Foreign.CUDA.Runtime.Exec--- Copyright : (c) [2009..2010] Trevor L. McDonell+-- Copyright : (c) [2009..2011] Trevor L. McDonell -- License : BSD -- -- Kernel execution control for C-for-CUDA runtime interface -- -------------------------------------------------------------------------------- +module Foreign.CUDA.Runtime.Exec (++ -- * Kernel Execution+ FunAttributes(..), FunParam(..), CacheConfig(..),+ attributes, setConfig, setParams, setCacheConfig, launch++) where+ #include "cbits/stubs.h" #include <cuda_runtime_api.h> {# context lib="cudart" #} -module Foreign.CUDA.Runtime.Exec- (- FunAttributes(..), FunParam(..),-#if CUDART_VERSION >= 3000- CacheConfig(..),-#endif- attributes, setConfig, setParams,-#if CUDART_VERSION >= 3000- setCacheConfig,-#endif- launch- )- where- -- Friends import Foreign.CUDA.Runtime.Stream import Foreign.CUDA.Runtime.Error@@ -81,7 +75,9 @@ numRegs = nr } -#if CUDART_VERSION >= 3000+#if CUDART_VERSION < 3000+data CacheConfig+#else -- | -- Cache configuration preference --@@ -184,7 +180,6 @@ peek' = peek . castPtr -#if CUDART_VERSION >= 3000 -- | -- On devices where the L1 cache and shared memory use the same hardware -- resources, this sets the preferred cache configuration for the given device@@ -195,6 +190,9 @@ -- synchronisation point for streamed kernel launches -- setCacheConfig :: String -> CacheConfig -> IO ()+#if CUDART_VERSION < 3000+setCacheConfig _ _ = requireSDK 3.0 "setCacheConfig"+#else setCacheConfig fn pref = nothingIfOk =<< cudaFuncSetCacheConfig fn pref {# fun unsafe cudaFuncSetCacheConfig
Foreign/CUDA/Runtime/Marshal.chs view
@@ -2,35 +2,35 @@ -------------------------------------------------------------------------------- -- | -- Module : Foreign.CUDA.Runtime.Marshal--- Copyright : (c) [2009..2010] Trevor L. McDonell+-- Copyright : (c) [2009..2011] Trevor L. McDonell -- License : BSD -- -- Memory management for CUDA devices -- -------------------------------------------------------------------------------- -module Foreign.CUDA.Runtime.Marshal- (- -- * Host Allocation- AllocFlag(..),- mallocHostArray, freeHost,+module Foreign.CUDA.Runtime.Marshal ( - -- * Device Allocation- mallocArray, allocaArray, free,+ -- * Host Allocation+ AllocFlag(..),+ mallocHostArray, freeHost, - -- * Marshalling- peekArray, peekArrayAsync, peekListArray,- pokeArray, pokeArrayAsync, pokeListArray,- copyArray, copyArrayAsync,+ -- * Device Allocation+ mallocArray, allocaArray, free, - -- * Combined Allocation and Marshalling- newListArray, newListArrayLen,- withListArray, withListArrayLen,+ -- * Marshalling+ peekArray, peekArrayAsync, peekListArray,+ pokeArray, pokeArrayAsync, pokeListArray,+ copyArray, copyArrayAsync, - -- * Utility- memset- )- where+ -- * Combined Allocation and Marshalling+ newListArray, newListArrayLen,+ withListArray, withListArrayLen,++ -- * Utility+ memset++) where #include <cuda_runtime_api.h> {# context lib="cudart" #}
Foreign/CUDA/Runtime/Stream.chs view
@@ -2,22 +2,20 @@ -------------------------------------------------------------------------------- -- | -- Module : Foreign.CUDA.Runtime.Stream--- Copyright : (c) [2009..2010] Trevor L. McDonell+-- Copyright : (c) [2009..2011] Trevor L. McDonell -- License : BSD -- -- Stream management routines -- -------------------------------------------------------------------------------- +module Foreign.CUDA.Runtime.Stream ( -module Foreign.CUDA.Runtime.Stream- (- Stream(..),+ -- * Stream Management+ Stream(..),+ create, destroy, finished, block, defaultStream - -- ** Stream management- create, destroy, finished, block, defaultStream- )- where+) where #include <cuda_runtime_api.h> {# context lib="cudart" #}
Foreign/CUDA/Runtime/Texture.chs view
@@ -2,19 +2,20 @@ -------------------------------------------------------------------------------- -- | -- Module : Foreign.CUDA.Runtime.Texture--- Copyright : (c) [2009..2010] Trevor L. McDonell+-- Copyright : (c) [2009..2011] Trevor L. McDonell -- License : BSD -- -- Texture references -- -------------------------------------------------------------------------------- -module Foreign.CUDA.Runtime.Texture- (- Texture(..), FormatKind(..), AddressMode(..), FilterMode(..), FormatDesc(..),- bind, bind2D- )- where+module Foreign.CUDA.Runtime.Texture (++ -- * Texture Reference Management+ Texture(..), FormatKind(..), AddressMode(..), FilterMode(..), FormatDesc(..),+ bind, bind2D++) where -- Friends import Foreign.CUDA.Ptr
Foreign/CUDA/Runtime/Thread.chs view
@@ -1,40 +1,26 @@-{-# LANGUAGE ForeignFunctionInterface #-} -------------------------------------------------------------------------------- -- | -- Module : Foreign.CUDA.Runtime.Thread--- Copyright : (c) [2009..2010] Trevor L. McDonell+-- Copyright : (c) [2009..2011] Trevor L. McDonell -- License : BSD -- -- Thread management routines -- -------------------------------------------------------------------------------- -#include <cuda_runtime_api.h>-{# context lib="cudart" #}- module Foreign.CUDA.Runtime.Thread- (-#if CUDART_VERSION >= 3010- Limit(..), getLimit, setLimit,-#endif- sync, exit- )- where+ {-# DEPRECATED "superseded by functions in Device module" #-} ( --- Friends-import Foreign.CUDA.Runtime.Error-import Foreign.CUDA.Internal.C2HS+ -- * Cache configuration+ D.Limit(..),+ getLimit, setLimit, --- System-import Foreign-import Foreign.C+ -- * Thread management+ sync, exit +) where -#if CUDART_VERSION >= 3010-{# enum cudaLimit as Limit- { underscoreToCase }- with prefix="cudaLimit" deriving (Eq, Show) #}-#endif+import qualified Foreign.CUDA.Runtime.Device as D -------------------------------------------------------------------------------- -- Thread management@@ -45,10 +31,10 @@ -- an error if one of the tasks fails. -- sync :: IO ()-sync = nothingIfOk =<< cudaThreadSynchronize--{# fun unsafe cudaThreadSynchronize- { } -> `Status' cToEnum #}+sync = D.sync+#if CUDART_VERSION >= 4000+{-# DEPRECATED exit "use 'Foreign.CUDA.Runtime.Device.sync' instead" #-}+#endif -- |@@ -57,31 +43,28 @@ -- Implicitly called on thread exit. -- exit :: IO ()-exit = nothingIfOk =<< cudaThreadExit--{# fun unsafe cudaThreadExit- { } -> `Status' cToEnum #}+exit = D.reset+#if CUDART_VERSION >= 4000+{-# DEPRECATED exit "use 'Foreign.CUDA.Runtime.Device.reset' instead" #-}+#endif -#if CUDART_VERSION >= 3010 -- |--- Query compute 2.0 call stack limits+-- Query compute 2.0 call stack limits. Requires cuda-3.1. ---getLimit :: Limit -> IO Int-getLimit l = resultIfOk =<< cudaThreadGetLimit l+getLimit :: D.Limit -> IO Int+getLimit = D.getLimit+#if CUDART_VERSION >= 4000+{-# DEPRECATED exit "use 'Foreign.CUDA.Runtime.Device.getLimit' instead" #-}+#endif + -- |--- Set compute 2.0 call stack limits+-- Set compute 2.0 call stack limits. Requires cuda-3.1. ---setLimit :: Limit -> Int -> IO ()-setLimit l n = nothingIfOk =<< cudaThreadSetLimit l n--{# fun unsafe cudaThreadGetLimit- { alloca- `Int' peekIntConv*- , cFromEnum `Limit' } -> `Status' cToEnum #}--{# fun unsafe cudaThreadSetLimit- { cFromEnum `Limit'- , cIntConv `Int' } -> `Status' cToEnum #}+setLimit :: D.Limit -> Int -> IO ()+setLimit = D.setLimit+#if CUDART_VERSION >= 4000+{-# DEPRECATED exit "use 'Foreign.CUDA.Runtime.Device.setLimit' instead" #-} #endif
Foreign/CUDA/Runtime/Utils.chs view
@@ -2,17 +2,14 @@ -------------------------------------------------------------------------------- -- | -- Module : Foreign.CUDA.Runtime.Utils--- Copyright : (c) [2009..2010] Trevor L. McDonell+-- Copyright : (c) [2009..2011] Trevor L. McDonell -- License : BSD -- -- Utility functions -- -------------------------------------------------------------------------------- -module Foreign.CUDA.Runtime.Utils- (- runtimeVersion, driverVersion- )+module Foreign.CUDA.Runtime.Utils (runtimeVersion, driverVersion) where #include <cuda_runtime_api.h>
Setup.hs view
@@ -1,18 +1,96 @@+import Distribution.PackageDescription+import Distribution.PackageDescription.Parse+import Distribution.Verbosity+import Distribution.System import Distribution.Simple+import Distribution.Simple.Utils+import Distribution.Simple.Setup+import Distribution.Simple.Command import Distribution.Simple.Program import Distribution.Simple.LocalBuildInfo-import Distribution.Simple.PreProcess hiding (ppC2hs)-import Distribution.PackageDescription+import Distribution.Simple.PreProcess hiding (ppC2hs)++import Control.Exception.Extensible import System.FilePath+import System.Directory+import System.Environment+import System.IO.Error hiding (catch)+import Prelude hiding (catch) +-- Replicate the invocation of the postConf script, so that we can insert the+-- arguments of --extra-include-dirs and --extra-lib-dirs as paths in CPPFLAGS+-- and LDFLAGS into the environment+-- main :: IO () main = defaultMainWithHooks customHooks where preprocessors = hookedPreProcessors autoconfUserHooks customHooks = autoconfUserHooks {+ postConf = defaultPostConf, hookedPreProcessors = ("chs",ppC2hs) : filter (\x -> fst x /= "chs") preprocessors }++ defaultPostConf :: Args -> ConfigFlags -> PackageDescription -> LocalBuildInfo -> IO ()+ defaultPostConf args flags pkg_descr lbi+ = let verbosity = fromFlag (configVerbosity flags)+ in do+ noExtraFlags args+ confExists <- doesFileExist "configure"+ if confExists+ then runConfigureScript verbosity False flags lbi+ else die "configure script not found."++ pbi <- getHookedBuildInfo verbosity+ let pkg_descr' = updatePackageDescription pbi pkg_descr+ postConf simpleUserHooks args flags pkg_descr' lbi+++runConfigureScript :: Verbosity -> Bool -> ConfigFlags -> LocalBuildInfo -> IO ()+runConfigureScript verbosity backwardsCompatHack flags lbi = do+ env <- getEnvironment+ (ccProg, ccFlags) <- configureCCompiler verbosity (withPrograms lbi)++ let env' = foldr appendToEnvironment env+ [("CC", ccProg)+ ,("CFLAGS", unwords ccFlags)+ ,("CPPFLAGS", concatMap ("-I"++) (configExtraIncludeDirs flags))+ ,("LDFLAGS", concatMap ("-L"++) (configExtraLibDirs flags))+ ]++ handleNoWindowsSH $ rawSystemExitWithEnv verbosity "sh" args env'++ where+ args = "configure" : configureArgs backwardsCompatHack flags++ appendToEnvironment (key, val) [] = [(key, val)]+ appendToEnvironment (key, val) (kv@(k, v) : rest)+ | key == k = (key, v ++ " " ++ val) : rest+ | otherwise = kv : appendToEnvironment (key, val) rest++ handleNoWindowsSH action+ | buildOS /= Windows+ = action++ | otherwise+ = action+ `catch` \ioe -> if isDoesNotExistError ioe+ then die notFoundMsg+ else throwIO ioe++ notFoundMsg = "The package has a './configure' script. This requires a "+ ++ "Unix compatibility toolchain such as MinGW+MSYS or Cygwin."+++getHookedBuildInfo :: Verbosity -> IO HookedBuildInfo+getHookedBuildInfo verbosity = do+ maybe_infoFile <- defaultHookedPackageDesc+ case maybe_infoFile of+ Nothing -> return emptyHookedBuildInfo+ Just infoFile -> do+ info verbosity $ "Reading parameters from " ++ infoFile+ readHookedBuildInfo verbosity infoFile+ -- Replicate the default C2HS preprocessor hook here, and inject a value for -- extra-c2hs-options, if it was present in the buildinfo file
cbits/stubs.c view
@@ -122,4 +122,30 @@ } #endif+#if CUDA_VERSION >= 4000+CUresult CUDAAPI cuCtxDestroy(CUcontext ctx)+{+ return cuCtxDestroy_v2(ctx);+} +CUresult CUDAAPI cuCtxPopCurrent(CUcontext *pctx)+{+ return cuCtxPopCurrent_v2(pctx);+}++CUresult CUDAAPI cuCtxPushCurrent(CUcontext ctx)+{+ return cuCtxPushCurrent_v2(ctx);+}++CUresult CUDAAPI cuStreamDestroy(CUstream hStream)+{+ return cuStreamDestroy_v2(hStream);+}++CUresult CUDAAPI cuEventDestroy(CUevent hEvent)+{+ return cuEventDestroy_v2(hEvent);+}++#endif
cbits/stubs.h view
@@ -113,6 +113,20 @@ // CUresult CUDAAPI cuGraphicsResourceGetMappedPointer(CUdeviceptr *pDevPtr, unsigned int *pSize, CUgraphicsResource resource); #endif +#if CUDA_VERSION >= 4000+#undef cuCtxDestroy+#undef cuCtxPopCurrent+#undef cuCtxPushCurrent+#undef cuStreamDestroy+#undef cuEventDestroy++CUresult CUDAAPI cuCtxDestroy(CUcontext ctx);+CUresult CUDAAPI cuCtxPopCurrent(CUcontext *pctx);+CUresult CUDAAPI cuCtxPushCurrent(CUcontext ctx);+CUresult CUDAAPI cuStreamDestroy(CUstream hStream);+CUresult CUDAAPI cuEventDestroy(CUevent hEvent);+#endif+ #ifdef __cplusplus } #endif
configure view
@@ -1,4921 +1,4547 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles.-# Generated by GNU Autoconf 2.61 for Haskell CUDA bindings 0.3.2.-#-# Report bugs to <tmcdonell@cse.unsw.edu.au>.-#-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,-# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.-# This configure script is free software; the Free Software Foundation-# gives unlimited permission to copy, distribute and modify it.-## --------------------- ##-## M4sh Initialization. ##-## --------------------- ##--# Be more Bourne compatible-DUALCASE=1; export DUALCASE # for MKS sh-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then- emulate sh- NULLCMD=:- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which- # is contrary to our usage. Disable this feature.- alias -g '${1+"$@"}'='"$@"'- setopt NO_GLOB_SUBST-else- case `(set -o) 2>/dev/null` in- *posix*) set -o posix ;;-esac--fi-----# PATH needs CR-# Avoid depending upon Character Ranges.-as_cr_letters='abcdefghijklmnopqrstuvwxyz'-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'-as_cr_Letters=$as_cr_letters$as_cr_LETTERS-as_cr_digits='0123456789'-as_cr_alnum=$as_cr_Letters$as_cr_digits--# The user is always right.-if test "${PATH_SEPARATOR+set}" != set; then- echo "#! /bin/sh" >conf$$.sh- echo "exit 0" >>conf$$.sh- chmod +x conf$$.sh- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then- PATH_SEPARATOR=';'- else- PATH_SEPARATOR=:- fi- rm -f conf$$.sh-fi--# Support unset when possible.-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then- as_unset=unset-else- as_unset=false-fi---# IFS-# We need space, tab and new line, in precisely that order. Quoting is-# there to prevent editors from complaining about space-tab.-# (If _AS_PATH_WALK were called with IFS unset, it would disable word-# splitting by setting IFS to empty value.)-as_nl='-'-IFS=" "" $as_nl"--# Find who we are. Look in the path if we contain no directory separator.-case $0 in- *[\\/]* ) as_myself=$0 ;;- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH-do- IFS=$as_save_IFS- test -z "$as_dir" && as_dir=.- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break-done-IFS=$as_save_IFS-- ;;-esac-# We did not find ourselves, most probably we were run as `sh COMMAND'-# in which case we are not to be found in the path.-if test "x$as_myself" = x; then- as_myself=$0-fi-if test ! -f "$as_myself"; then- echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2- { (exit 1); exit 1; }-fi--# Work around bugs in pre-3.0 UWIN ksh.-for as_var in ENV MAIL MAILPATH-do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var-done-PS1='$ '-PS2='> '-PS4='+ '--# NLS nuisances.-for as_var in \- LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \- LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \- LC_TELEPHONE LC_TIME-do- if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then- eval $as_var=C; export $as_var- else- ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var- fi-done--# Required to use basename.-if expr a : '\(a\)' >/dev/null 2>&1 &&- test "X`expr 00001 : '.*\(...\)'`" = X001; then- as_expr=expr-else- as_expr=false-fi--if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then- as_basename=basename-else- as_basename=false-fi---# Name of the executable.-as_me=`$as_basename -- "$0" ||-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \- X"$0" : 'X\(//\)$' \| \- X"$0" : 'X\(/\)' \| . 2>/dev/null ||-echo X/"$0" |- sed '/^.*\/\([^/][^/]*\)\/*$/{- s//\1/- q- }- /^X\/\(\/\/\)$/{- s//\1/- q- }- /^X\/\(\/\).*/{- s//\1/- q- }- s/.*/./; q'`--# CDPATH.-$as_unset CDPATH---if test "x$CONFIG_SHELL" = x; then- if (eval ":") 2>/dev/null; then- as_have_required=yes-else- as_have_required=no-fi-- if test $as_have_required = yes && (eval ":-(as_func_return () {- (exit \$1)-}-as_func_success () {- as_func_return 0-}-as_func_failure () {- as_func_return 1-}-as_func_ret_success () {- return 0-}-as_func_ret_failure () {- return 1-}--exitcode=0-if as_func_success; then- :-else- exitcode=1- echo as_func_success failed.-fi--if as_func_failure; then- exitcode=1- echo as_func_failure succeeded.-fi--if as_func_ret_success; then- :-else- exitcode=1- echo as_func_ret_success failed.-fi--if as_func_ret_failure; then- exitcode=1- echo as_func_ret_failure succeeded.-fi--if ( set x; as_func_ret_success y && test x = \"\$1\" ); then- :-else- exitcode=1- echo positional parameters were not saved.-fi--test \$exitcode = 0) || { (exit 1); exit 1; }--(- as_lineno_1=\$LINENO- as_lineno_2=\$LINENO- test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" &&- test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; }-") 2> /dev/null; then- :-else- as_candidate_shells=- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH-do- IFS=$as_save_IFS- test -z "$as_dir" && as_dir=.- case $as_dir in- /*)- for as_base in sh bash ksh sh5; do- as_candidate_shells="$as_candidate_shells $as_dir/$as_base"- done;;- esac-done-IFS=$as_save_IFS--- for as_shell in $as_candidate_shells $SHELL; do- # Try only shells that exist, to save several forks.- if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&- { ("$as_shell") 2> /dev/null <<\_ASEOF-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then- emulate sh- NULLCMD=:- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which- # is contrary to our usage. Disable this feature.- alias -g '${1+"$@"}'='"$@"'- setopt NO_GLOB_SUBST-else- case `(set -o) 2>/dev/null` in- *posix*) set -o posix ;;-esac--fi---:-_ASEOF-}; then- CONFIG_SHELL=$as_shell- as_have_required=yes- if { "$as_shell" 2> /dev/null <<\_ASEOF-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then- emulate sh- NULLCMD=:- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which- # is contrary to our usage. Disable this feature.- alias -g '${1+"$@"}'='"$@"'- setopt NO_GLOB_SUBST-else- case `(set -o) 2>/dev/null` in- *posix*) set -o posix ;;-esac--fi---:-(as_func_return () {- (exit $1)-}-as_func_success () {- as_func_return 0-}-as_func_failure () {- as_func_return 1-}-as_func_ret_success () {- return 0-}-as_func_ret_failure () {- return 1-}--exitcode=0-if as_func_success; then- :-else- exitcode=1- echo as_func_success failed.-fi--if as_func_failure; then- exitcode=1- echo as_func_failure succeeded.-fi--if as_func_ret_success; then- :-else- exitcode=1- echo as_func_ret_success failed.-fi--if as_func_ret_failure; then- exitcode=1- echo as_func_ret_failure succeeded.-fi--if ( set x; as_func_ret_success y && test x = "$1" ); then- :-else- exitcode=1- echo positional parameters were not saved.-fi--test $exitcode = 0) || { (exit 1); exit 1; }--(- as_lineno_1=$LINENO- as_lineno_2=$LINENO- test "x$as_lineno_1" != "x$as_lineno_2" &&- test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; }--_ASEOF-}; then- break-fi--fi-- done-- if test "x$CONFIG_SHELL" != x; then- for as_var in BASH_ENV ENV- do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var- done- export CONFIG_SHELL- exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}-fi--- if test $as_have_required = no; then- echo This script requires a shell more modern than all the- echo shells that I found on your system. Please install a- echo modern shell, or manually run the script under such a- echo shell if you do have one.- { (exit 1); exit 1; }-fi---fi--fi----(eval "as_func_return () {- (exit \$1)-}-as_func_success () {- as_func_return 0-}-as_func_failure () {- as_func_return 1-}-as_func_ret_success () {- return 0-}-as_func_ret_failure () {- return 1-}--exitcode=0-if as_func_success; then- :-else- exitcode=1- echo as_func_success failed.-fi--if as_func_failure; then- exitcode=1- echo as_func_failure succeeded.-fi--if as_func_ret_success; then- :-else- exitcode=1- echo as_func_ret_success failed.-fi--if as_func_ret_failure; then- exitcode=1- echo as_func_ret_failure succeeded.-fi--if ( set x; as_func_ret_success y && test x = \"\$1\" ); then- :-else- exitcode=1- echo positional parameters were not saved.-fi--test \$exitcode = 0") || {- echo No shell found that supports shell functions.- echo Please tell autoconf@gnu.org about your system,- echo including any error possibly output before this- echo message-}---- as_lineno_1=$LINENO- as_lineno_2=$LINENO- test "x$as_lineno_1" != "x$as_lineno_2" &&- test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {-- # Create $as_me.lineno as a copy of $as_myself, but with $LINENO- # uniformly replaced by the line number. The first 'sed' inserts a- # line-number line after each line using $LINENO; the second 'sed'- # does the real work. The second script uses 'N' to pair each- # line-number line with the line containing $LINENO, and appends- # trailing '-' during substitution so that $LINENO is not a special- # case at line end.- # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the- # scripts with optimization help from Paolo Bonzini. Blame Lee- # E. McMahon (1931-1989) for sed's syntax. :-)- sed -n '- p- /[$]LINENO/=- ' <$as_myself |- sed '- s/[$]LINENO.*/&-/- t lineno- b- :lineno- N- :loop- s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/- t loop- s/-\n.*//- ' >$as_me.lineno &&- chmod +x "$as_me.lineno" ||- { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2- { (exit 1); exit 1; }; }-- # Don't try to exec as it changes $[0], causing all sort of problems- # (the dirname of $[0] is not the place where we might find the- # original and so on. Autoconf is especially sensitive to this).- . "./$as_me.lineno"- # Exit status is that of the last command.- exit-}---if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then- as_dirname=dirname-else- as_dirname=false-fi--ECHO_C= ECHO_N= ECHO_T=-case `echo -n x` in--n*)- case `echo 'x\c'` in- *c*) ECHO_T=' ';; # ECHO_T is single tab character.- *) ECHO_C='\c';;- esac;;-*)- ECHO_N='-n';;-esac--if expr a : '\(a\)' >/dev/null 2>&1 &&- test "X`expr 00001 : '.*\(...\)'`" = X001; then- as_expr=expr-else- as_expr=false-fi--rm -f conf$$ conf$$.exe conf$$.file-if test -d conf$$.dir; then- rm -f conf$$.dir/conf$$.file-else- rm -f conf$$.dir- mkdir conf$$.dir-fi-echo >conf$$.file-if ln -s conf$$.file conf$$ 2>/dev/null; then- as_ln_s='ln -s'- # ... but there are two gotchas:- # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.- # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.- # In both cases, we have to default to `cp -p'.- ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||- as_ln_s='cp -p'-elif ln conf$$.file conf$$ 2>/dev/null; then- as_ln_s=ln-else- as_ln_s='cp -p'-fi-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file-rmdir conf$$.dir 2>/dev/null--if mkdir -p . 2>/dev/null; then- as_mkdir_p=:-else- test -d ./-p && rmdir ./-p- as_mkdir_p=false-fi--if test -x / >/dev/null 2>&1; then- as_test_x='test -x'-else- if ls -dL / >/dev/null 2>&1; then- as_ls_L_option=L- else- as_ls_L_option=- fi- as_test_x='- eval sh -c '\''- if test -d "$1"; then- test -d "$1/.";- else- case $1 in- -*)set "./$1";;- esac;- case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in- ???[sx]*):;;*)false;;esac;fi- '\'' sh- '-fi-as_executable_p=$as_test_x--# Sed expression to map a string onto a valid CPP name.-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"--# Sed expression to map a string onto a valid variable name.-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"----exec 7<&0 </dev/null 6>&1--# Name of the host.-# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,-# so uname gets run too.-ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`--#-# Initializations.-#-ac_default_prefix=/usr/local-ac_clean_files=-ac_config_libobj_dir=.-LIBOBJS=-cross_compiling=no-subdirs=-MFLAGS=-MAKEFLAGS=-SHELL=${CONFIG_SHELL-/bin/sh}--# Identity of this package.-PACKAGE_NAME='Haskell CUDA bindings'-PACKAGE_TARNAME='cuda'-PACKAGE_VERSION='0.3.2'-PACKAGE_STRING='Haskell CUDA bindings 0.3.2'-PACKAGE_BUGREPORT='tmcdonell@cse.unsw.edu.au'--ac_unique_file="Foreign/CUDA.hs"-# Factoring default headers for most tests.-ac_includes_default="\-#include <stdio.h>-#ifdef HAVE_SYS_TYPES_H-# include <sys/types.h>-#endif-#ifdef HAVE_SYS_STAT_H-# include <sys/stat.h>-#endif-#ifdef STDC_HEADERS-# include <stdlib.h>-# include <stddef.h>-#else-# ifdef HAVE_STDLIB_H-# include <stdlib.h>-# endif-#endif-#ifdef HAVE_STRING_H-# if !defined STDC_HEADERS && defined HAVE_MEMORY_H-# include <memory.h>-# endif-# include <string.h>-#endif-#ifdef HAVE_STRINGS_H-# include <strings.h>-#endif-#ifdef HAVE_INTTYPES_H-# include <inttypes.h>-#endif-#ifdef HAVE_STDINT_H-# include <stdint.h>-#endif-#ifdef HAVE_UNISTD_H-# include <unistd.h>-#endif"--ac_subst_vars='SHELL-PATH_SEPARATOR-PACKAGE_NAME-PACKAGE_TARNAME-PACKAGE_VERSION-PACKAGE_STRING-PACKAGE_BUGREPORT-exec_prefix-prefix-program_transform_name-bindir-sbindir-libexecdir-datarootdir-datadir-sysconfdir-sharedstatedir-localstatedir-includedir-oldincludedir-docdir-infodir-htmldir-dvidir-pdfdir-psdir-libdir-localedir-mandir-DEFS-ECHO_C-ECHO_N-ECHO_T-LIBS-build_alias-host_alias-target_alias-CXX-CXXFLAGS-LDFLAGS-CPPFLAGS-ac_ct_CXX-EXEEXT-OBJEXT-build-build_cpu-build_vendor-build_os-host-host_cpu-host_vendor-host_os-target-target_cpu-target_vendor-target_os-NVCC-CC-CFLAGS-ac_ct_CC-CPP-GREP-EGREP-cuda_cppflags-cuda_ldflags-cuda_c2hsflags-LIBOBJS-LTLIBOBJS'-ac_subst_files=''- ac_precious_vars='build_alias-host_alias-target_alias-CXX-CXXFLAGS-LDFLAGS-LIBS-CPPFLAGS-CCC-CC-CFLAGS-CPP'---# Initialize some variables set by options.-ac_init_help=-ac_init_version=false-# The variables have the same names as the options, with-# dashes changed to underlines.-cache_file=/dev/null-exec_prefix=NONE-no_create=-no_recursion=-prefix=NONE-program_prefix=NONE-program_suffix=NONE-program_transform_name=s,x,x,-silent=-site=-srcdir=-verbose=-x_includes=NONE-x_libraries=NONE--# Installation directory options.-# These are left unexpanded so users can "make install exec_prefix=/foo"-# and all the variables that are supposed to be based on exec_prefix-# by default will actually change.-# Use braces instead of parens because sh, perl, etc. also accept them.-# (The list follows the same order as the GNU Coding Standards.)-bindir='${exec_prefix}/bin'-sbindir='${exec_prefix}/sbin'-libexecdir='${exec_prefix}/libexec'-datarootdir='${prefix}/share'-datadir='${datarootdir}'-sysconfdir='${prefix}/etc'-sharedstatedir='${prefix}/com'-localstatedir='${prefix}/var'-includedir='${prefix}/include'-oldincludedir='/usr/include'-docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'-infodir='${datarootdir}/info'-htmldir='${docdir}'-dvidir='${docdir}'-pdfdir='${docdir}'-psdir='${docdir}'-libdir='${exec_prefix}/lib'-localedir='${datarootdir}/locale'-mandir='${datarootdir}/man'--ac_prev=-ac_dashdash=-for ac_option-do- # If the previous option needs an argument, assign it.- if test -n "$ac_prev"; then- eval $ac_prev=\$ac_option- ac_prev=- continue- fi-- case $ac_option in- *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;- *) ac_optarg=yes ;;- esac-- # Accept the important Cygnus configure options, so we can diagnose typos.-- case $ac_dashdash$ac_option in- --)- ac_dashdash=yes ;;-- -bindir | --bindir | --bindi | --bind | --bin | --bi)- ac_prev=bindir ;;- -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)- bindir=$ac_optarg ;;-- -build | --build | --buil | --bui | --bu)- ac_prev=build_alias ;;- -build=* | --build=* | --buil=* | --bui=* | --bu=*)- build_alias=$ac_optarg ;;-- -cache-file | --cache-file | --cache-fil | --cache-fi \- | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)- ac_prev=cache_file ;;- -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \- | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)- cache_file=$ac_optarg ;;-- --config-cache | -C)- cache_file=config.cache ;;-- -datadir | --datadir | --datadi | --datad)- ac_prev=datadir ;;- -datadir=* | --datadir=* | --datadi=* | --datad=*)- datadir=$ac_optarg ;;-- -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \- | --dataroo | --dataro | --datar)- ac_prev=datarootdir ;;- -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \- | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)- datarootdir=$ac_optarg ;;-- -disable-* | --disable-*)- ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`- # Reject names that are not valid shell variable names.- expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&- { echo "$as_me: error: invalid feature name: $ac_feature" >&2- { (exit 1); exit 1; }; }- ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`- eval enable_$ac_feature=no ;;-- -docdir | --docdir | --docdi | --doc | --do)- ac_prev=docdir ;;- -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)- docdir=$ac_optarg ;;-- -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)- ac_prev=dvidir ;;- -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)- dvidir=$ac_optarg ;;-- -enable-* | --enable-*)- ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`- # Reject names that are not valid shell variable names.- expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&- { echo "$as_me: error: invalid feature name: $ac_feature" >&2- { (exit 1); exit 1; }; }- ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`- eval enable_$ac_feature=\$ac_optarg ;;-- -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \- | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \- | --exec | --exe | --ex)- ac_prev=exec_prefix ;;- -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \- | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \- | --exec=* | --exe=* | --ex=*)- exec_prefix=$ac_optarg ;;-- -gas | --gas | --ga | --g)- # Obsolete; use --with-gas.- with_gas=yes ;;-- -help | --help | --hel | --he | -h)- ac_init_help=long ;;- -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)- ac_init_help=recursive ;;- -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)- ac_init_help=short ;;-- -host | --host | --hos | --ho)- ac_prev=host_alias ;;- -host=* | --host=* | --hos=* | --ho=*)- host_alias=$ac_optarg ;;-- -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)- ac_prev=htmldir ;;- -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \- | --ht=*)- htmldir=$ac_optarg ;;-- -includedir | --includedir | --includedi | --included | --include \- | --includ | --inclu | --incl | --inc)- ac_prev=includedir ;;- -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \- | --includ=* | --inclu=* | --incl=* | --inc=*)- includedir=$ac_optarg ;;-- -infodir | --infodir | --infodi | --infod | --info | --inf)- ac_prev=infodir ;;- -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)- infodir=$ac_optarg ;;-- -libdir | --libdir | --libdi | --libd)- ac_prev=libdir ;;- -libdir=* | --libdir=* | --libdi=* | --libd=*)- libdir=$ac_optarg ;;-- -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \- | --libexe | --libex | --libe)- ac_prev=libexecdir ;;- -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \- | --libexe=* | --libex=* | --libe=*)- libexecdir=$ac_optarg ;;-- -localedir | --localedir | --localedi | --localed | --locale)- ac_prev=localedir ;;- -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)- localedir=$ac_optarg ;;-- -localstatedir | --localstatedir | --localstatedi | --localstated \- | --localstate | --localstat | --localsta | --localst | --locals)- ac_prev=localstatedir ;;- -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \- | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)- localstatedir=$ac_optarg ;;-- -mandir | --mandir | --mandi | --mand | --man | --ma | --m)- ac_prev=mandir ;;- -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)- mandir=$ac_optarg ;;-- -nfp | --nfp | --nf)- # Obsolete; use --without-fp.- with_fp=no ;;-- -no-create | --no-create | --no-creat | --no-crea | --no-cre \- | --no-cr | --no-c | -n)- no_create=yes ;;-- -no-recursion | --no-recursion | --no-recursio | --no-recursi \- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)- no_recursion=yes ;;-- -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \- | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \- | --oldin | --oldi | --old | --ol | --o)- ac_prev=oldincludedir ;;- -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \- | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \- | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)- oldincludedir=$ac_optarg ;;-- -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)- ac_prev=prefix ;;- -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)- prefix=$ac_optarg ;;-- -program-prefix | --program-prefix | --program-prefi | --program-pref \- | --program-pre | --program-pr | --program-p)- ac_prev=program_prefix ;;- -program-prefix=* | --program-prefix=* | --program-prefi=* \- | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)- program_prefix=$ac_optarg ;;-- -program-suffix | --program-suffix | --program-suffi | --program-suff \- | --program-suf | --program-su | --program-s)- ac_prev=program_suffix ;;- -program-suffix=* | --program-suffix=* | --program-suffi=* \- | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)- program_suffix=$ac_optarg ;;-- -program-transform-name | --program-transform-name \- | --program-transform-nam | --program-transform-na \- | --program-transform-n | --program-transform- \- | --program-transform | --program-transfor \- | --program-transfo | --program-transf \- | --program-trans | --program-tran \- | --progr-tra | --program-tr | --program-t)- ac_prev=program_transform_name ;;- -program-transform-name=* | --program-transform-name=* \- | --program-transform-nam=* | --program-transform-na=* \- | --program-transform-n=* | --program-transform-=* \- | --program-transform=* | --program-transfor=* \- | --program-transfo=* | --program-transf=* \- | --program-trans=* | --program-tran=* \- | --progr-tra=* | --program-tr=* | --program-t=*)- program_transform_name=$ac_optarg ;;-- -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)- ac_prev=pdfdir ;;- -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)- pdfdir=$ac_optarg ;;-- -psdir | --psdir | --psdi | --psd | --ps)- ac_prev=psdir ;;- -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)- psdir=$ac_optarg ;;-- -q | -quiet | --quiet | --quie | --qui | --qu | --q \- | -silent | --silent | --silen | --sile | --sil)- silent=yes ;;-- -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)- ac_prev=sbindir ;;- -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \- | --sbi=* | --sb=*)- sbindir=$ac_optarg ;;-- -sharedstatedir | --sharedstatedir | --sharedstatedi \- | --sharedstated | --sharedstate | --sharedstat | --sharedsta \- | --sharedst | --shareds | --shared | --share | --shar \- | --sha | --sh)- ac_prev=sharedstatedir ;;- -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \- | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \- | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \- | --sha=* | --sh=*)- sharedstatedir=$ac_optarg ;;-- -site | --site | --sit)- ac_prev=site ;;- -site=* | --site=* | --sit=*)- site=$ac_optarg ;;-- -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)- ac_prev=srcdir ;;- -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)- srcdir=$ac_optarg ;;-- -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \- | --syscon | --sysco | --sysc | --sys | --sy)- ac_prev=sysconfdir ;;- -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \- | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)- sysconfdir=$ac_optarg ;;-- -target | --target | --targe | --targ | --tar | --ta | --t)- ac_prev=target_alias ;;- -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)- target_alias=$ac_optarg ;;-- -v | -verbose | --verbose | --verbos | --verbo | --verb)- verbose=yes ;;-- -version | --version | --versio | --versi | --vers | -V)- ac_init_version=: ;;-- -with-* | --with-*)- ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`- # Reject names that are not valid shell variable names.- expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&- { echo "$as_me: error: invalid package name: $ac_package" >&2- { (exit 1); exit 1; }; }- ac_package=`echo $ac_package | sed 's/[-.]/_/g'`- eval with_$ac_package=\$ac_optarg ;;-- -without-* | --without-*)- ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`- # Reject names that are not valid shell variable names.- expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&- { echo "$as_me: error: invalid package name: $ac_package" >&2- { (exit 1); exit 1; }; }- ac_package=`echo $ac_package | sed 's/[-.]/_/g'`- eval with_$ac_package=no ;;-- --x)- # Obsolete; use --with-x.- with_x=yes ;;-- -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \- | --x-incl | --x-inc | --x-in | --x-i)- ac_prev=x_includes ;;- -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \- | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)- x_includes=$ac_optarg ;;-- -x-libraries | --x-libraries | --x-librarie | --x-librari \- | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)- ac_prev=x_libraries ;;- -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \- | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)- x_libraries=$ac_optarg ;;-- -*) { echo "$as_me: error: unrecognized option: $ac_option-Try \`$0 --help' for more information." >&2- { (exit 1); exit 1; }; }- ;;-- *=*)- ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`- # Reject names that are not valid shell variable names.- expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&- { echo "$as_me: error: invalid variable name: $ac_envvar" >&2- { (exit 1); exit 1; }; }- eval $ac_envvar=\$ac_optarg- export $ac_envvar ;;-- *)- # FIXME: should be removed in autoconf 3.0.- echo "$as_me: WARNING: you should use --build, --host, --target" >&2- expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&- echo "$as_me: WARNING: invalid host type: $ac_option" >&2- : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}- ;;-- esac-done--if test -n "$ac_prev"; then- ac_option=--`echo $ac_prev | sed 's/_/-/g'`- { echo "$as_me: error: missing argument to $ac_option" >&2- { (exit 1); exit 1; }; }-fi--# Be sure to have absolute directory names.-for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \- datadir sysconfdir sharedstatedir localstatedir includedir \- oldincludedir docdir infodir htmldir dvidir pdfdir psdir \- libdir localedir mandir-do- eval ac_val=\$$ac_var- case $ac_val in- [\\/$]* | ?:[\\/]* ) continue;;- NONE | '' ) case $ac_var in *prefix ) continue;; esac;;- esac- { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2- { (exit 1); exit 1; }; }-done--# There might be people who depend on the old broken behavior: `$host'-# used to hold the argument of --host etc.-# FIXME: To remove some day.-build=$build_alias-host=$host_alias-target=$target_alias--# FIXME: To remove some day.-if test "x$host_alias" != x; then- if test "x$build_alias" = x; then- cross_compiling=maybe- echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.- If a cross compiler is detected then cross compile mode will be used." >&2- elif test "x$build_alias" != "x$host_alias"; then- cross_compiling=yes- fi-fi--ac_tool_prefix=-test -n "$host_alias" && ac_tool_prefix=$host_alias---test "$silent" = yes && exec 6>/dev/null---ac_pwd=`pwd` && test -n "$ac_pwd" &&-ac_ls_di=`ls -di .` &&-ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||- { echo "$as_me: error: Working directory cannot be determined" >&2- { (exit 1); exit 1; }; }-test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||- { echo "$as_me: error: pwd does not report name of working directory" >&2- { (exit 1); exit 1; }; }---# Find the source files, if location was not specified.-if test -z "$srcdir"; then- ac_srcdir_defaulted=yes- # Try the directory containing this script, then the parent directory.- ac_confdir=`$as_dirname -- "$0" ||-$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \- X"$0" : 'X\(//\)[^/]' \| \- X"$0" : 'X\(//\)$' \| \- X"$0" : 'X\(/\)' \| . 2>/dev/null ||-echo X"$0" |- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{- s//\1/- q- }- /^X\(\/\/\)[^/].*/{- s//\1/- q- }- /^X\(\/\/\)$/{- s//\1/- q- }- /^X\(\/\).*/{- s//\1/- q- }- s/.*/./; q'`- srcdir=$ac_confdir- if test ! -r "$srcdir/$ac_unique_file"; then- srcdir=..- fi-else- ac_srcdir_defaulted=no-fi-if test ! -r "$srcdir/$ac_unique_file"; then- test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2- { (exit 1); exit 1; }; }-fi-ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"-ac_abs_confdir=`(- cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2- { (exit 1); exit 1; }; }- pwd)`-# When building in place, set srcdir=.-if test "$ac_abs_confdir" = "$ac_pwd"; then- srcdir=.-fi-# Remove unnecessary trailing slashes from srcdir.-# Double slashes in file names in object file debugging info-# mess up M-x gdb in Emacs.-case $srcdir in-*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;-esac-for ac_var in $ac_precious_vars; do- eval ac_env_${ac_var}_set=\${${ac_var}+set}- eval ac_env_${ac_var}_value=\$${ac_var}- eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}- eval ac_cv_env_${ac_var}_value=\$${ac_var}-done--#-# Report the --help message.-#-if test "$ac_init_help" = "long"; then- # Omit some internal or obsolete options to make the list less imposing.- # This message is too long to be a string in the A/UX 3.1 sh.- cat <<_ACEOF-\`configure' configures Haskell CUDA bindings 0.3.2 to adapt to many kinds of systems.--Usage: $0 [OPTION]... [VAR=VALUE]...--To assign environment variables (e.g., CC, CFLAGS...), specify them as-VAR=VALUE. See below for descriptions of some of the useful variables.--Defaults for the options are specified in brackets.--Configuration:- -h, --help display this help and exit- --help=short display options specific to this package- --help=recursive display the short help of all the included packages- -V, --version display version information and exit- -q, --quiet, --silent do not print \`checking...' messages- --cache-file=FILE cache test results in FILE [disabled]- -C, --config-cache alias for \`--cache-file=config.cache'- -n, --no-create do not create output files- --srcdir=DIR find the sources in DIR [configure dir or \`..']--Installation directories:- --prefix=PREFIX install architecture-independent files in PREFIX- [$ac_default_prefix]- --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX- [PREFIX]--By default, \`make install' will install all the files in-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify-an installation prefix other than \`$ac_default_prefix' using \`--prefix',-for instance \`--prefix=\$HOME'.--For better control, use the options below.--Fine tuning of the installation directories:- --bindir=DIR user executables [EPREFIX/bin]- --sbindir=DIR system admin executables [EPREFIX/sbin]- --libexecdir=DIR program executables [EPREFIX/libexec]- --sysconfdir=DIR read-only single-machine data [PREFIX/etc]- --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]- --localstatedir=DIR modifiable single-machine data [PREFIX/var]- --libdir=DIR object code libraries [EPREFIX/lib]- --includedir=DIR C header files [PREFIX/include]- --oldincludedir=DIR C header files for non-gcc [/usr/include]- --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]- --datadir=DIR read-only architecture-independent data [DATAROOTDIR]- --infodir=DIR info documentation [DATAROOTDIR/info]- --localedir=DIR locale-dependent data [DATAROOTDIR/locale]- --mandir=DIR man documentation [DATAROOTDIR/man]- --docdir=DIR documentation root [DATAROOTDIR/doc/cuda]- --htmldir=DIR html documentation [DOCDIR]- --dvidir=DIR dvi documentation [DOCDIR]- --pdfdir=DIR pdf documentation [DOCDIR]- --psdir=DIR ps documentation [DOCDIR]-_ACEOF-- cat <<\_ACEOF--System types:- --build=BUILD configure for building on BUILD [guessed]- --host=HOST cross-compile to build programs to run on HOST [BUILD]- --target=TARGET configure for building compilers for TARGET [HOST]-_ACEOF-fi--if test -n "$ac_init_help"; then- case $ac_init_help in- short | recursive ) echo "Configuration of Haskell CUDA bindings 0.3.2:";;- esac- cat <<\_ACEOF--Some influential environment variables:- CXX C++ compiler command- CXXFLAGS C++ compiler flags- LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a- nonstandard directory <lib dir>- LIBS libraries to pass to the linker, e.g. -l<library>- CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if- you have headers in a nonstandard directory <include dir>- CC C compiler command- CFLAGS C compiler flags- CPP C preprocessor--Use these variables to override the choices made by `configure' or to help-it to find libraries and programs with nonstandard names/locations.--Report bugs to <tmcdonell@cse.unsw.edu.au>.-_ACEOF-ac_status=$?-fi--if test "$ac_init_help" = "recursive"; then- # If there are subdirs, report their specific --help.- for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue- test -d "$ac_dir" || continue- ac_builddir=.--case "$ac_dir" in-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;-*)- ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`- # A ".." for each directory in $ac_dir_suffix.- ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`- case $ac_top_builddir_sub in- "") ac_top_builddir_sub=. ac_top_build_prefix= ;;- *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;- esac ;;-esac-ac_abs_top_builddir=$ac_pwd-ac_abs_builddir=$ac_pwd$ac_dir_suffix-# for backward compatibility:-ac_top_builddir=$ac_top_build_prefix--case $srcdir in- .) # We are building in place.- ac_srcdir=.- ac_top_srcdir=$ac_top_builddir_sub- ac_abs_top_srcdir=$ac_pwd ;;- [\\/]* | ?:[\\/]* ) # Absolute name.- ac_srcdir=$srcdir$ac_dir_suffix;- ac_top_srcdir=$srcdir- ac_abs_top_srcdir=$srcdir ;;- *) # Relative name.- ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix- ac_top_srcdir=$ac_top_build_prefix$srcdir- ac_abs_top_srcdir=$ac_pwd/$srcdir ;;-esac-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix-- cd "$ac_dir" || { ac_status=$?; continue; }- # Check for guested configure.- if test -f "$ac_srcdir/configure.gnu"; then- echo &&- $SHELL "$ac_srcdir/configure.gnu" --help=recursive- elif test -f "$ac_srcdir/configure"; then- echo &&- $SHELL "$ac_srcdir/configure" --help=recursive- else- echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2- fi || ac_status=$?- cd "$ac_pwd" || { ac_status=$?; break; }- done-fi--test -n "$ac_init_help" && exit $ac_status-if $ac_init_version; then- cat <<\_ACEOF-Haskell CUDA bindings configure 0.3.2-generated by GNU Autoconf 2.61--Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,-2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.-This configure script is free software; the Free Software Foundation-gives unlimited permission to copy, distribute and modify it.-_ACEOF- exit-fi-cat >config.log <<_ACEOF-This file contains any messages produced by compilers while-running configure, to aid debugging if configure makes a mistake.--It was created by Haskell CUDA bindings $as_me 0.3.2, which was-generated by GNU Autoconf 2.61. Invocation command line was-- $ $0 $@--_ACEOF-exec 5>>config.log-{-cat <<_ASUNAME-## --------- ##-## Platform. ##-## --------- ##--hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`-uname -m = `(uname -m) 2>/dev/null || echo unknown`-uname -r = `(uname -r) 2>/dev/null || echo unknown`-uname -s = `(uname -s) 2>/dev/null || echo unknown`-uname -v = `(uname -v) 2>/dev/null || echo unknown`--/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`-/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`--/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`-/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`-/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown`-/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`-/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`-/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`--_ASUNAME--as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH-do- IFS=$as_save_IFS- test -z "$as_dir" && as_dir=.- echo "PATH: $as_dir"-done-IFS=$as_save_IFS--} >&5--cat >&5 <<_ACEOF---## ----------- ##-## Core tests. ##-## ----------- ##--_ACEOF---# Keep a trace of the command line.-# Strip out --no-create and --no-recursion so they do not pile up.-# Strip out --silent because we don't want to record it for future runs.-# Also quote any args containing shell meta-characters.-# Make two passes to allow for proper duplicate-argument suppression.-ac_configure_args=-ac_configure_args0=-ac_configure_args1=-ac_must_keep_next=false-for ac_pass in 1 2-do- for ac_arg- do- case $ac_arg in- -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;- -q | -quiet | --quiet | --quie | --qui | --qu | --q \- | -silent | --silent | --silen | --sile | --sil)- continue ;;- *\'*)- ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;- esac- case $ac_pass in- 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;- 2)- ac_configure_args1="$ac_configure_args1 '$ac_arg'"- if test $ac_must_keep_next = true; then- ac_must_keep_next=false # Got value, back to normal.- else- case $ac_arg in- *=* | --config-cache | -C | -disable-* | --disable-* \- | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \- | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \- | -with-* | --with-* | -without-* | --without-* | --x)- case "$ac_configure_args0 " in- "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;- esac- ;;- -* ) ac_must_keep_next=true ;;- esac- fi- ac_configure_args="$ac_configure_args '$ac_arg'"- ;;- esac- done-done-$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }-$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }--# When interrupted or exit'd, cleanup temporary files, and complete-# config.log. We remove comments because anyway the quotes in there-# would cause problems or look ugly.-# WARNING: Use '\'' to represent an apostrophe within the trap.-# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.-trap 'exit_status=$?- # Save into config.log some information that might help in debugging.- {- echo-- cat <<\_ASBOX-## ---------------- ##-## Cache variables. ##-## ---------------- ##-_ASBOX- echo- # The following way of writing the cache mishandles newlines in values,-(- for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do- eval ac_val=\$$ac_var- case $ac_val in #(- *${as_nl}*)- case $ac_var in #(- *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5-echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;- esac- case $ac_var in #(- _ | IFS | as_nl) ;; #(- *) $as_unset $ac_var ;;- esac ;;- esac- done- (set) 2>&1 |- case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(- *${as_nl}ac_space=\ *)- sed -n \- "s/'\''/'\''\\\\'\'''\''/g;- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"- ;; #(- *)- sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"- ;;- esac |- sort-)- echo-- cat <<\_ASBOX-## ----------------- ##-## Output variables. ##-## ----------------- ##-_ASBOX- echo- for ac_var in $ac_subst_vars- do- eval ac_val=\$$ac_var- case $ac_val in- *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;- esac- echo "$ac_var='\''$ac_val'\''"- done | sort- echo-- if test -n "$ac_subst_files"; then- cat <<\_ASBOX-## ------------------- ##-## File substitutions. ##-## ------------------- ##-_ASBOX- echo- for ac_var in $ac_subst_files- do- eval ac_val=\$$ac_var- case $ac_val in- *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;- esac- echo "$ac_var='\''$ac_val'\''"- done | sort- echo- fi-- if test -s confdefs.h; then- cat <<\_ASBOX-## ----------- ##-## confdefs.h. ##-## ----------- ##-_ASBOX- echo- cat confdefs.h- echo- fi- test "$ac_signal" != 0 &&- echo "$as_me: caught signal $ac_signal"- echo "$as_me: exit $exit_status"- } >&5- rm -f core *.core core.conftest.* &&- rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&- exit $exit_status-' 0-for ac_signal in 1 2 13 15; do- trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal-done-ac_signal=0--# confdefs.h avoids OS command line length limits that DEFS can exceed.-rm -f -r conftest* confdefs.h--# Predefined preprocessor variables.--cat >>confdefs.h <<_ACEOF-#define PACKAGE_NAME "$PACKAGE_NAME"-_ACEOF---cat >>confdefs.h <<_ACEOF-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"-_ACEOF---cat >>confdefs.h <<_ACEOF-#define PACKAGE_VERSION "$PACKAGE_VERSION"-_ACEOF---cat >>confdefs.h <<_ACEOF-#define PACKAGE_STRING "$PACKAGE_STRING"-_ACEOF---cat >>confdefs.h <<_ACEOF-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"-_ACEOF---# Let the site file select an alternate cache file if it wants to.-# Prefer explicitly selected file to automatically selected ones.-if test -n "$CONFIG_SITE"; then- set x "$CONFIG_SITE"-elif test "x$prefix" != xNONE; then- set x "$prefix/share/config.site" "$prefix/etc/config.site"-else- set x "$ac_default_prefix/share/config.site" \- "$ac_default_prefix/etc/config.site"-fi-shift-for ac_site_file-do- if test -r "$ac_site_file"; then- { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5-echo "$as_me: loading site script $ac_site_file" >&6;}- sed 's/^/| /' "$ac_site_file" >&5- . "$ac_site_file"- fi-done--if test -r "$cache_file"; then- # Some versions of bash will fail to source /dev/null (special- # files actually), so we avoid doing that.- if test -f "$cache_file"; then- { echo "$as_me:$LINENO: loading cache $cache_file" >&5-echo "$as_me: loading cache $cache_file" >&6;}- case $cache_file in- [\\/]* | ?:[\\/]* ) . "$cache_file";;- *) . "./$cache_file";;- esac- fi-else- { echo "$as_me:$LINENO: creating cache $cache_file" >&5-echo "$as_me: creating cache $cache_file" >&6;}- >$cache_file-fi--# Check that the precious variables saved in the cache have kept the same-# value.-ac_cache_corrupted=false-for ac_var in $ac_precious_vars; do- eval ac_old_set=\$ac_cv_env_${ac_var}_set- eval ac_new_set=\$ac_env_${ac_var}_set- eval ac_old_val=\$ac_cv_env_${ac_var}_value- eval ac_new_val=\$ac_env_${ac_var}_value- case $ac_old_set,$ac_new_set in- set,)- { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5-echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}- ac_cache_corrupted=: ;;- ,set)- { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5-echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}- ac_cache_corrupted=: ;;- ,);;- *)- if test "x$ac_old_val" != "x$ac_new_val"; then- { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5-echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}- { echo "$as_me:$LINENO: former value: $ac_old_val" >&5-echo "$as_me: former value: $ac_old_val" >&2;}- { echo "$as_me:$LINENO: current value: $ac_new_val" >&5-echo "$as_me: current value: $ac_new_val" >&2;}- ac_cache_corrupted=:- fi;;- esac- # Pass precious variables to config.status.- if test "$ac_new_set" = set; then- case $ac_new_val in- *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;- *) ac_arg=$ac_var=$ac_new_val ;;- esac- case " $ac_configure_args " in- *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.- *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;- esac- fi-done-if $ac_cache_corrupted; then- { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5-echo "$as_me: error: changes in the environment can compromise the build" >&2;}- { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5-echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}- { (exit 1); exit 1; }; }-fi--------------------------ac_ext=c-ac_cpp='$CPP $CPPFLAGS'-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'-ac_compiler_gnu=$ac_cv_c_compiler_gnu----ac_config_files="$ac_config_files cuda.buildinfo"--ac_ext=cpp-ac_cpp='$CXXCPP $CPPFLAGS'-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu-if test -z "$CXX"; then- if test -n "$CCC"; then- CXX=$CCC- else- if test -n "$ac_tool_prefix"; then- for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC- do- # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.-set dummy $ac_tool_prefix$ac_prog; ac_word=$2-{ echo "$as_me:$LINENO: checking for $ac_word" >&5-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }-if test "${ac_cv_prog_CXX+set}" = set; then- echo $ECHO_N "(cached) $ECHO_C" >&6-else- if test -n "$CXX"; then- ac_cv_prog_CXX="$CXX" # Let the user override the test.-else-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH-do- IFS=$as_save_IFS- test -z "$as_dir" && as_dir=.- for ac_exec_ext in '' $ac_executable_extensions; do- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then- ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5- break 2- fi-done-done-IFS=$as_save_IFS--fi-fi-CXX=$ac_cv_prog_CXX-if test -n "$CXX"; then- { echo "$as_me:$LINENO: result: $CXX" >&5-echo "${ECHO_T}$CXX" >&6; }-else- { echo "$as_me:$LINENO: result: no" >&5-echo "${ECHO_T}no" >&6; }-fi--- test -n "$CXX" && break- done-fi-if test -z "$CXX"; then- ac_ct_CXX=$CXX- for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC-do- # Extract the first word of "$ac_prog", so it can be a program name with args.-set dummy $ac_prog; ac_word=$2-{ echo "$as_me:$LINENO: checking for $ac_word" >&5-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }-if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then- echo $ECHO_N "(cached) $ECHO_C" >&6-else- if test -n "$ac_ct_CXX"; then- ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.-else-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH-do- IFS=$as_save_IFS- test -z "$as_dir" && as_dir=.- for ac_exec_ext in '' $ac_executable_extensions; do- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then- ac_cv_prog_ac_ct_CXX="$ac_prog"- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5- break 2- fi-done-done-IFS=$as_save_IFS--fi-fi-ac_ct_CXX=$ac_cv_prog_ac_ct_CXX-if test -n "$ac_ct_CXX"; then- { echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5-echo "${ECHO_T}$ac_ct_CXX" >&6; }-else- { echo "$as_me:$LINENO: result: no" >&5-echo "${ECHO_T}no" >&6; }-fi--- test -n "$ac_ct_CXX" && break-done-- if test "x$ac_ct_CXX" = x; then- CXX="g++"- else- case $cross_compiling:$ac_tool_warned in-yes:)-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools-whose name does not start with the host triplet. If you think this-configuration is useful to you, please write to autoconf@gnu.org." >&5-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools-whose name does not start with the host triplet. If you think this-configuration is useful to you, please write to autoconf@gnu.org." >&2;}-ac_tool_warned=yes ;;-esac- CXX=$ac_ct_CXX- fi-fi-- fi-fi-# Provide some information about the compiler.-echo "$as_me:$LINENO: checking for C++ compiler version" >&5-ac_compiler=`set X $ac_compile; echo $2`-{ (ac_try="$ac_compiler --version >&5"-case "(($ac_try" in- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;- *) ac_try_echo=$ac_try;;-esac-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5- (eval "$ac_compiler --version >&5") 2>&5- ac_status=$?- echo "$as_me:$LINENO: \$? = $ac_status" >&5- (exit $ac_status); }-{ (ac_try="$ac_compiler -v >&5"-case "(($ac_try" in- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;- *) ac_try_echo=$ac_try;;-esac-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5- (eval "$ac_compiler -v >&5") 2>&5- ac_status=$?- echo "$as_me:$LINENO: \$? = $ac_status" >&5- (exit $ac_status); }-{ (ac_try="$ac_compiler -V >&5"-case "(($ac_try" in- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;- *) ac_try_echo=$ac_try;;-esac-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5- (eval "$ac_compiler -V >&5") 2>&5- ac_status=$?- echo "$as_me:$LINENO: \$? = $ac_status" >&5- (exit $ac_status); }--cat >conftest.$ac_ext <<_ACEOF-/* confdefs.h. */-_ACEOF-cat confdefs.h >>conftest.$ac_ext-cat >>conftest.$ac_ext <<_ACEOF-/* end confdefs.h. */--int-main ()-{-- ;- return 0;-}-_ACEOF-ac_clean_files_save=$ac_clean_files-ac_clean_files="$ac_clean_files a.out a.exe b.out"-# Try to create an executable without -o first, disregard a.out.-# It will help us diagnose broken compilers, and finding out an intuition-# of exeext.-{ echo "$as_me:$LINENO: checking for C++ compiler default output file name" >&5-echo $ECHO_N "checking for C++ compiler default output file name... $ECHO_C" >&6; }-ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`-#-# List of possible output files, starting from the most likely.-# The algorithm is not robust to junk in `.', hence go to wildcards (a.*)-# only as a last resort. b.out is created by i960 compilers.-ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out'-#-# The IRIX 6 linker writes into existing files which may not be-# executable, retaining their permissions. Remove them first so a-# subsequent execution test works.-ac_rmfiles=-for ac_file in $ac_files-do- case $ac_file in- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;- * ) ac_rmfiles="$ac_rmfiles $ac_file";;- esac-done-rm -f $ac_rmfiles--if { (ac_try="$ac_link_default"-case "(($ac_try" in- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;- *) ac_try_echo=$ac_try;;-esac-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5- (eval "$ac_link_default") 2>&5- ac_status=$?- echo "$as_me:$LINENO: \$? = $ac_status" >&5- (exit $ac_status); }; then- # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.-# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'-# in a Makefile. We should not override ac_cv_exeext if it was cached,-# so that the user can short-circuit this test for compilers unknown to-# Autoconf.-for ac_file in $ac_files ''-do- test -f "$ac_file" || continue- case $ac_file in- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj )- ;;- [ab].out )- # We found the default executable, but exeext='' is most- # certainly right.- break;;- *.* )- if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;- then :; else- ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`- fi- # We set ac_cv_exeext here because the later test for it is not- # safe: cross compilers may not add the suffix if given an `-o'- # argument, so we may need to know it at that point already.- # Even if this section looks crufty: it has the advantage of- # actually working.- break;;- * )- break;;- esac-done-test "$ac_cv_exeext" = no && ac_cv_exeext=--else- ac_file=''-fi--{ echo "$as_me:$LINENO: result: $ac_file" >&5-echo "${ECHO_T}$ac_file" >&6; }-if test -z "$ac_file"; then- echo "$as_me: failed program was:" >&5-sed 's/^/| /' conftest.$ac_ext >&5--{ { echo "$as_me:$LINENO: error: C++ compiler cannot create executables-See \`config.log' for more details." >&5-echo "$as_me: error: C++ compiler cannot create executables-See \`config.log' for more details." >&2;}- { (exit 77); exit 77; }; }-fi--ac_exeext=$ac_cv_exeext--# Check that the compiler produces executables we can run. If not, either-# the compiler is broken, or we cross compile.-{ echo "$as_me:$LINENO: checking whether the C++ compiler works" >&5-echo $ECHO_N "checking whether the C++ compiler works... $ECHO_C" >&6; }-# FIXME: These cross compiler hacks should be removed for Autoconf 3.0-# If not cross compiling, check that we can run a simple program.-if test "$cross_compiling" != yes; then- if { ac_try='./$ac_file'- { (case "(($ac_try" in- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;- *) ac_try_echo=$ac_try;;-esac-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5- (eval "$ac_try") 2>&5- ac_status=$?- echo "$as_me:$LINENO: \$? = $ac_status" >&5- (exit $ac_status); }; }; then- cross_compiling=no- else- if test "$cross_compiling" = maybe; then- cross_compiling=yes- else- { { echo "$as_me:$LINENO: error: cannot run C++ compiled programs.-If you meant to cross compile, use \`--host'.-See \`config.log' for more details." >&5-echo "$as_me: error: cannot run C++ compiled programs.-If you meant to cross compile, use \`--host'.-See \`config.log' for more details." >&2;}- { (exit 1); exit 1; }; }- fi- fi-fi-{ echo "$as_me:$LINENO: result: yes" >&5-echo "${ECHO_T}yes" >&6; }--rm -f a.out a.exe conftest$ac_cv_exeext b.out-ac_clean_files=$ac_clean_files_save-# Check that the compiler produces executables we can run. If not, either-# the compiler is broken, or we cross compile.-{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5-echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; }-{ echo "$as_me:$LINENO: result: $cross_compiling" >&5-echo "${ECHO_T}$cross_compiling" >&6; }--{ echo "$as_me:$LINENO: checking for suffix of executables" >&5-echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; }-if { (ac_try="$ac_link"-case "(($ac_try" in- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;- *) ac_try_echo=$ac_try;;-esac-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5- (eval "$ac_link") 2>&5- ac_status=$?- echo "$as_me:$LINENO: \$? = $ac_status" >&5- (exit $ac_status); }; then- # If both `conftest.exe' and `conftest' are `present' (well, observable)-# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will-# work properly (i.e., refer to `conftest.exe'), while it won't with-# `rm'.-for ac_file in conftest.exe conftest conftest.*; do- test -f "$ac_file" || continue- case $ac_file in- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;- *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`- break;;- * ) break;;- esac-done-else- { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link-See \`config.log' for more details." >&5-echo "$as_me: error: cannot compute suffix of executables: cannot compile and link-See \`config.log' for more details." >&2;}- { (exit 1); exit 1; }; }-fi--rm -f conftest$ac_cv_exeext-{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5-echo "${ECHO_T}$ac_cv_exeext" >&6; }--rm -f conftest.$ac_ext-EXEEXT=$ac_cv_exeext-ac_exeext=$EXEEXT-{ echo "$as_me:$LINENO: checking for suffix of object files" >&5-echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; }-if test "${ac_cv_objext+set}" = set; then- echo $ECHO_N "(cached) $ECHO_C" >&6-else- cat >conftest.$ac_ext <<_ACEOF-/* confdefs.h. */-_ACEOF-cat confdefs.h >>conftest.$ac_ext-cat >>conftest.$ac_ext <<_ACEOF-/* end confdefs.h. */--int-main ()-{-- ;- return 0;-}-_ACEOF-rm -f conftest.o conftest.obj-if { (ac_try="$ac_compile"-case "(($ac_try" in- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;- *) ac_try_echo=$ac_try;;-esac-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5- (eval "$ac_compile") 2>&5- ac_status=$?- echo "$as_me:$LINENO: \$? = $ac_status" >&5- (exit $ac_status); }; then- for ac_file in conftest.o conftest.obj conftest.*; do- test -f "$ac_file" || continue;- case $ac_file in- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;;- *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`- break;;- esac-done-else- echo "$as_me: failed program was:" >&5-sed 's/^/| /' conftest.$ac_ext >&5--{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile-See \`config.log' for more details." >&5-echo "$as_me: error: cannot compute suffix of object files: cannot compile-See \`config.log' for more details." >&2;}- { (exit 1); exit 1; }; }-fi--rm -f conftest.$ac_cv_objext conftest.$ac_ext-fi-{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5-echo "${ECHO_T}$ac_cv_objext" >&6; }-OBJEXT=$ac_cv_objext-ac_objext=$OBJEXT-{ echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5-echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6; }-if test "${ac_cv_cxx_compiler_gnu+set}" = set; then- echo $ECHO_N "(cached) $ECHO_C" >&6-else- cat >conftest.$ac_ext <<_ACEOF-/* confdefs.h. */-_ACEOF-cat confdefs.h >>conftest.$ac_ext-cat >>conftest.$ac_ext <<_ACEOF-/* end confdefs.h. */--int-main ()-{-#ifndef __GNUC__- choke me-#endif-- ;- return 0;-}-_ACEOF-rm -f conftest.$ac_objext-if { (ac_try="$ac_compile"-case "(($ac_try" in- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;- *) ac_try_echo=$ac_try;;-esac-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5- (eval "$ac_compile") 2>conftest.er1- ac_status=$?- grep -v '^ *+' conftest.er1 >conftest.err- rm -f conftest.er1- cat conftest.err >&5- echo "$as_me:$LINENO: \$? = $ac_status" >&5- (exit $ac_status); } && {- test -z "$ac_cxx_werror_flag" ||- test ! -s conftest.err- } && test -s conftest.$ac_objext; then- ac_compiler_gnu=yes-else- echo "$as_me: failed program was:" >&5-sed 's/^/| /' conftest.$ac_ext >&5-- ac_compiler_gnu=no-fi--rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext-ac_cv_cxx_compiler_gnu=$ac_compiler_gnu--fi-{ echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5-echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6; }-GXX=`test $ac_compiler_gnu = yes && echo yes`-ac_test_CXXFLAGS=${CXXFLAGS+set}-ac_save_CXXFLAGS=$CXXFLAGS-{ echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5-echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6; }-if test "${ac_cv_prog_cxx_g+set}" = set; then- echo $ECHO_N "(cached) $ECHO_C" >&6-else- ac_save_cxx_werror_flag=$ac_cxx_werror_flag- ac_cxx_werror_flag=yes- ac_cv_prog_cxx_g=no- CXXFLAGS="-g"- cat >conftest.$ac_ext <<_ACEOF-/* confdefs.h. */-_ACEOF-cat confdefs.h >>conftest.$ac_ext-cat >>conftest.$ac_ext <<_ACEOF-/* end confdefs.h. */--int-main ()-{-- ;- return 0;-}-_ACEOF-rm -f conftest.$ac_objext-if { (ac_try="$ac_compile"-case "(($ac_try" in- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;- *) ac_try_echo=$ac_try;;-esac-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5- (eval "$ac_compile") 2>conftest.er1- ac_status=$?- grep -v '^ *+' conftest.er1 >conftest.err- rm -f conftest.er1- cat conftest.err >&5- echo "$as_me:$LINENO: \$? = $ac_status" >&5- (exit $ac_status); } && {- test -z "$ac_cxx_werror_flag" ||- test ! -s conftest.err- } && test -s conftest.$ac_objext; then- ac_cv_prog_cxx_g=yes-else- echo "$as_me: failed program was:" >&5-sed 's/^/| /' conftest.$ac_ext >&5-- CXXFLAGS=""- cat >conftest.$ac_ext <<_ACEOF-/* confdefs.h. */-_ACEOF-cat confdefs.h >>conftest.$ac_ext-cat >>conftest.$ac_ext <<_ACEOF-/* end confdefs.h. */--int-main ()-{-- ;- return 0;-}-_ACEOF-rm -f conftest.$ac_objext-if { (ac_try="$ac_compile"-case "(($ac_try" in- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;- *) ac_try_echo=$ac_try;;-esac-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5- (eval "$ac_compile") 2>conftest.er1- ac_status=$?- grep -v '^ *+' conftest.er1 >conftest.err- rm -f conftest.er1- cat conftest.err >&5- echo "$as_me:$LINENO: \$? = $ac_status" >&5- (exit $ac_status); } && {- test -z "$ac_cxx_werror_flag" ||- test ! -s conftest.err- } && test -s conftest.$ac_objext; then- :-else- echo "$as_me: failed program was:" >&5-sed 's/^/| /' conftest.$ac_ext >&5-- ac_cxx_werror_flag=$ac_save_cxx_werror_flag- CXXFLAGS="-g"- cat >conftest.$ac_ext <<_ACEOF-/* confdefs.h. */-_ACEOF-cat confdefs.h >>conftest.$ac_ext-cat >>conftest.$ac_ext <<_ACEOF-/* end confdefs.h. */--int-main ()-{-- ;- return 0;-}-_ACEOF-rm -f conftest.$ac_objext-if { (ac_try="$ac_compile"-case "(($ac_try" in- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;- *) ac_try_echo=$ac_try;;-esac-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5- (eval "$ac_compile") 2>conftest.er1- ac_status=$?- grep -v '^ *+' conftest.er1 >conftest.err- rm -f conftest.er1- cat conftest.err >&5- echo "$as_me:$LINENO: \$? = $ac_status" >&5- (exit $ac_status); } && {- test -z "$ac_cxx_werror_flag" ||- test ! -s conftest.err- } && test -s conftest.$ac_objext; then- ac_cv_prog_cxx_g=yes-else- echo "$as_me: failed program was:" >&5-sed 's/^/| /' conftest.$ac_ext >&5---fi--rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext-fi--rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext-fi--rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext- ac_cxx_werror_flag=$ac_save_cxx_werror_flag-fi-{ echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5-echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6; }-if test "$ac_test_CXXFLAGS" = set; then- CXXFLAGS=$ac_save_CXXFLAGS-elif test $ac_cv_prog_cxx_g = yes; then- if test "$GXX" = yes; then- CXXFLAGS="-g -O2"- else- CXXFLAGS="-g"- fi-else- if test "$GXX" = yes; then- CXXFLAGS="-O2"- else- CXXFLAGS=- fi-fi-ac_ext=c-ac_cpp='$CPP $CPPFLAGS'-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'-ac_compiler_gnu=$ac_cv_c_compiler_gnu---# Determine the target platform-#-ac_aux_dir=-for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do- if test -f "$ac_dir/install-sh"; then- ac_aux_dir=$ac_dir- ac_install_sh="$ac_aux_dir/install-sh -c"- break- elif test -f "$ac_dir/install.sh"; then- ac_aux_dir=$ac_dir- ac_install_sh="$ac_aux_dir/install.sh -c"- break- elif test -f "$ac_dir/shtool"; then- ac_aux_dir=$ac_dir- ac_install_sh="$ac_aux_dir/shtool install -c"- break- fi-done-if test -z "$ac_aux_dir"; then- { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5-echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;}- { (exit 1); exit 1; }; }-fi--# These three variables are undocumented and unsupported,-# and are intended to be withdrawn in a future Autoconf release.-# They can cause serious problems if a builder's source tree is in a directory-# whose full name contains unusual characters.-ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.-ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.-ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.---# Make sure we can run config.sub.-$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||- { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5-echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;}- { (exit 1); exit 1; }; }--{ echo "$as_me:$LINENO: checking build system type" >&5-echo $ECHO_N "checking build system type... $ECHO_C" >&6; }-if test "${ac_cv_build+set}" = set; then- echo $ECHO_N "(cached) $ECHO_C" >&6-else- ac_build_alias=$build_alias-test "x$ac_build_alias" = x &&- ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`-test "x$ac_build_alias" = x &&- { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5-echo "$as_me: error: cannot guess build type; you must specify one" >&2;}- { (exit 1); exit 1; }; }-ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||- { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5-echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;}- { (exit 1); exit 1; }; }--fi-{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5-echo "${ECHO_T}$ac_cv_build" >&6; }-case $ac_cv_build in-*-*-*) ;;-*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5-echo "$as_me: error: invalid value of canonical build" >&2;}- { (exit 1); exit 1; }; };;-esac-build=$ac_cv_build-ac_save_IFS=$IFS; IFS='-'-set x $ac_cv_build-shift-build_cpu=$1-build_vendor=$2-shift; shift-# Remember, the first character of IFS is used to create $*,-# except with old shells:-build_os=$*-IFS=$ac_save_IFS-case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac---{ echo "$as_me:$LINENO: checking host system type" >&5-echo $ECHO_N "checking host system type... $ECHO_C" >&6; }-if test "${ac_cv_host+set}" = set; then- echo $ECHO_N "(cached) $ECHO_C" >&6-else- if test "x$host_alias" = x; then- ac_cv_host=$ac_cv_build-else- ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||- { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5-echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;}- { (exit 1); exit 1; }; }-fi--fi-{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5-echo "${ECHO_T}$ac_cv_host" >&6; }-case $ac_cv_host in-*-*-*) ;;-*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5-echo "$as_me: error: invalid value of canonical host" >&2;}- { (exit 1); exit 1; }; };;-esac-host=$ac_cv_host-ac_save_IFS=$IFS; IFS='-'-set x $ac_cv_host-shift-host_cpu=$1-host_vendor=$2-shift; shift-# Remember, the first character of IFS is used to create $*,-# except with old shells:-host_os=$*-IFS=$ac_save_IFS-case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac---{ echo "$as_me:$LINENO: checking target system type" >&5-echo $ECHO_N "checking target system type... $ECHO_C" >&6; }-if test "${ac_cv_target+set}" = set; then- echo $ECHO_N "(cached) $ECHO_C" >&6-else- if test "x$target_alias" = x; then- ac_cv_target=$ac_cv_host-else- ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` ||- { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&5-echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&2;}- { (exit 1); exit 1; }; }-fi--fi-{ echo "$as_me:$LINENO: result: $ac_cv_target" >&5-echo "${ECHO_T}$ac_cv_target" >&6; }-case $ac_cv_target in-*-*-*) ;;-*) { { echo "$as_me:$LINENO: error: invalid value of canonical target" >&5-echo "$as_me: error: invalid value of canonical target" >&2;}- { (exit 1); exit 1; }; };;-esac-target=$ac_cv_target-ac_save_IFS=$IFS; IFS='-'-set x $ac_cv_target-shift-target_cpu=$1-target_vendor=$2-shift; shift-# Remember, the first character of IFS is used to create $*,-# except with old shells:-target_os=$*-IFS=$ac_save_IFS-case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac---# The aliases save the names the user supplied, while $host etc.-# will get canonicalized.-test -n "$target_alias" &&- test "$program_prefix$program_suffix$program_transform_name" = \- NONENONEs,x,x, &&- program_prefix=${target_alias}---# Search the user's PATH for the 'nvcc' compiler. If it is found, add this-# prefix to the include and library search directories. Additionally, set nvcc-# as the C preprocessor for c2hs (only, or it won't try to link cudart)-#-# Extract the first word of "nvcc", so it can be a program name with args.-set dummy nvcc; ac_word=$2-{ echo "$as_me:$LINENO: checking for $ac_word" >&5-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }-if test "${ac_cv_path_NVCC+set}" = set; then- echo $ECHO_N "(cached) $ECHO_C" >&6-else- case $NVCC in- [\\/]* | ?:[\\/]*)- ac_cv_path_NVCC="$NVCC" # Let the user override the test with a path.- ;;- *)- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH-do- IFS=$as_save_IFS- test -z "$as_dir" && as_dir=.- for ac_exec_ext in '' $ac_executable_extensions; do- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then- ac_cv_path_NVCC="$as_dir/$ac_word$ac_exec_ext"- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5- break 2- fi-done-done-IFS=$as_save_IFS-- ;;-esac-fi-NVCC=$ac_cv_path_NVCC-if test -n "$NVCC"; then- { echo "$as_me:$LINENO: result: $NVCC" >&5-echo "${ECHO_T}$NVCC" >&6; }-else- { echo "$as_me:$LINENO: result: no" >&5-echo "${ECHO_T}no" >&6; }-fi---if test "$NVCC" != ""; then- cuda_prefix="$(dirname $(dirname $NVCC))"- cuda_c2hsflags+="--cpp=$NVCC --cppopts=-E "- CPPFLAGS+="-I${cuda_prefix}/include "-# CC=${NVCC}-- case $target in- x86_64*) LDFLAGS+="-L${cuda_prefix}/lib64 " ;;- *) LDFLAGS+="-L${cuda_prefix}/lib " ;;- esac-fi--# Snow Leopard (Mac OS X 10.6) provides a C extension for creating lambda-like-# closure expressions (blocks), the syntax for which confuses the c2hs-# preprocessor. We disable this by undefining the __BLOCKS__ macro.-#-{ echo "$as_me:$LINENO: checking for Apple Blocks extension" >&5-echo $ECHO_N "checking for Apple Blocks extension... $ECHO_C" >&6; }-if test -r "/System/Library/CoreServices/SystemVersion.plist"; then- SNOWLEOPARD=`grep '<string>10.6' /System/Library/CoreServices/SystemVersion.plist`-fi-if test "$SNOWLEOPARD" != ""; then- cuda_c2hsflags+="--cppopts=-U__BLOCKS__ "- { echo "$as_me:$LINENO: result: yes" >&5-echo "${ECHO_T}yes" >&6; }-else- { echo "$as_me:$LINENO: result: no" >&5-echo "${ECHO_T}no" >&6; }-fi--# Make sure both the driver and runtime are found-#-longerror='-********************************************************************************--The configuration process failed to locate your CUDA installation. Ensure that-you have installed the driver and developer toolkit, available from:-- http://developer.nvidia.com/object/cuda.html--Then make sure that "nvcc" is available in your PATH, or set the appropriate-directories with --extra-include-dirs and --extra-lib-dirs.--********************************************************************************'--ac_ext=c-ac_cpp='$CPP $CPPFLAGS'-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'-ac_compiler_gnu=$ac_cv_c_compiler_gnu-if test -n "$ac_tool_prefix"; then- # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.-set dummy ${ac_tool_prefix}gcc; ac_word=$2-{ echo "$as_me:$LINENO: checking for $ac_word" >&5-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }-if test "${ac_cv_prog_CC+set}" = set; then- echo $ECHO_N "(cached) $ECHO_C" >&6-else- if test -n "$CC"; then- ac_cv_prog_CC="$CC" # Let the user override the test.-else-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH-do- IFS=$as_save_IFS- test -z "$as_dir" && as_dir=.- for ac_exec_ext in '' $ac_executable_extensions; do- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then- ac_cv_prog_CC="${ac_tool_prefix}gcc"- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5- break 2- fi-done-done-IFS=$as_save_IFS--fi-fi-CC=$ac_cv_prog_CC-if test -n "$CC"; then- { echo "$as_me:$LINENO: result: $CC" >&5-echo "${ECHO_T}$CC" >&6; }-else- { echo "$as_me:$LINENO: result: no" >&5-echo "${ECHO_T}no" >&6; }-fi---fi-if test -z "$ac_cv_prog_CC"; then- ac_ct_CC=$CC- # Extract the first word of "gcc", so it can be a program name with args.-set dummy gcc; ac_word=$2-{ echo "$as_me:$LINENO: checking for $ac_word" >&5-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then- echo $ECHO_N "(cached) $ECHO_C" >&6-else- if test -n "$ac_ct_CC"; then- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.-else-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH-do- IFS=$as_save_IFS- test -z "$as_dir" && as_dir=.- for ac_exec_ext in '' $ac_executable_extensions; do- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then- ac_cv_prog_ac_ct_CC="gcc"- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5- break 2- fi-done-done-IFS=$as_save_IFS--fi-fi-ac_ct_CC=$ac_cv_prog_ac_ct_CC-if test -n "$ac_ct_CC"; then- { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5-echo "${ECHO_T}$ac_ct_CC" >&6; }-else- { echo "$as_me:$LINENO: result: no" >&5-echo "${ECHO_T}no" >&6; }-fi-- if test "x$ac_ct_CC" = x; then- CC=""- else- case $cross_compiling:$ac_tool_warned in-yes:)-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools-whose name does not start with the host triplet. If you think this-configuration is useful to you, please write to autoconf@gnu.org." >&5-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools-whose name does not start with the host triplet. If you think this-configuration is useful to you, please write to autoconf@gnu.org." >&2;}-ac_tool_warned=yes ;;-esac- CC=$ac_ct_CC- fi-else- CC="$ac_cv_prog_CC"-fi--if test -z "$CC"; then- if test -n "$ac_tool_prefix"; then- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.-set dummy ${ac_tool_prefix}cc; ac_word=$2-{ echo "$as_me:$LINENO: checking for $ac_word" >&5-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }-if test "${ac_cv_prog_CC+set}" = set; then- echo $ECHO_N "(cached) $ECHO_C" >&6-else- if test -n "$CC"; then- ac_cv_prog_CC="$CC" # Let the user override the test.-else-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH-do- IFS=$as_save_IFS- test -z "$as_dir" && as_dir=.- for ac_exec_ext in '' $ac_executable_extensions; do- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then- ac_cv_prog_CC="${ac_tool_prefix}cc"- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5- break 2- fi-done-done-IFS=$as_save_IFS--fi-fi-CC=$ac_cv_prog_CC-if test -n "$CC"; then- { echo "$as_me:$LINENO: result: $CC" >&5-echo "${ECHO_T}$CC" >&6; }-else- { echo "$as_me:$LINENO: result: no" >&5-echo "${ECHO_T}no" >&6; }-fi--- fi-fi-if test -z "$CC"; then- # Extract the first word of "cc", so it can be a program name with args.-set dummy cc; ac_word=$2-{ echo "$as_me:$LINENO: checking for $ac_word" >&5-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }-if test "${ac_cv_prog_CC+set}" = set; then- echo $ECHO_N "(cached) $ECHO_C" >&6-else- if test -n "$CC"; then- ac_cv_prog_CC="$CC" # Let the user override the test.-else- ac_prog_rejected=no-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH-do- IFS=$as_save_IFS- test -z "$as_dir" && as_dir=.- for ac_exec_ext in '' $ac_executable_extensions; do- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then- if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then- ac_prog_rejected=yes- continue- fi- ac_cv_prog_CC="cc"- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5- break 2- fi-done-done-IFS=$as_save_IFS--if test $ac_prog_rejected = yes; then- # We found a bogon in the path, so make sure we never use it.- set dummy $ac_cv_prog_CC- shift- if test $# != 0; then- # We chose a different compiler from the bogus one.- # However, it has the same basename, so the bogon will be chosen- # first if we set CC to just the basename; use the full file name.- shift- ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"- fi-fi-fi-fi-CC=$ac_cv_prog_CC-if test -n "$CC"; then- { echo "$as_me:$LINENO: result: $CC" >&5-echo "${ECHO_T}$CC" >&6; }-else- { echo "$as_me:$LINENO: result: no" >&5-echo "${ECHO_T}no" >&6; }-fi---fi-if test -z "$CC"; then- if test -n "$ac_tool_prefix"; then- for ac_prog in cl.exe- do- # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.-set dummy $ac_tool_prefix$ac_prog; ac_word=$2-{ echo "$as_me:$LINENO: checking for $ac_word" >&5-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }-if test "${ac_cv_prog_CC+set}" = set; then- echo $ECHO_N "(cached) $ECHO_C" >&6-else- if test -n "$CC"; then- ac_cv_prog_CC="$CC" # Let the user override the test.-else-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH-do- IFS=$as_save_IFS- test -z "$as_dir" && as_dir=.- for ac_exec_ext in '' $ac_executable_extensions; do- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then- ac_cv_prog_CC="$ac_tool_prefix$ac_prog"- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5- break 2- fi-done-done-IFS=$as_save_IFS--fi-fi-CC=$ac_cv_prog_CC-if test -n "$CC"; then- { echo "$as_me:$LINENO: result: $CC" >&5-echo "${ECHO_T}$CC" >&6; }-else- { echo "$as_me:$LINENO: result: no" >&5-echo "${ECHO_T}no" >&6; }-fi--- test -n "$CC" && break- done-fi-if test -z "$CC"; then- ac_ct_CC=$CC- for ac_prog in cl.exe-do- # Extract the first word of "$ac_prog", so it can be a program name with args.-set dummy $ac_prog; ac_word=$2-{ echo "$as_me:$LINENO: checking for $ac_word" >&5-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then- echo $ECHO_N "(cached) $ECHO_C" >&6-else- if test -n "$ac_ct_CC"; then- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.-else-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH-do- IFS=$as_save_IFS- test -z "$as_dir" && as_dir=.- for ac_exec_ext in '' $ac_executable_extensions; do- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then- ac_cv_prog_ac_ct_CC="$ac_prog"- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5- break 2- fi-done-done-IFS=$as_save_IFS--fi-fi-ac_ct_CC=$ac_cv_prog_ac_ct_CC-if test -n "$ac_ct_CC"; then- { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5-echo "${ECHO_T}$ac_ct_CC" >&6; }-else- { echo "$as_me:$LINENO: result: no" >&5-echo "${ECHO_T}no" >&6; }-fi--- test -n "$ac_ct_CC" && break-done-- if test "x$ac_ct_CC" = x; then- CC=""- else- case $cross_compiling:$ac_tool_warned in-yes:)-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools-whose name does not start with the host triplet. If you think this-configuration is useful to you, please write to autoconf@gnu.org." >&5-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools-whose name does not start with the host triplet. If you think this-configuration is useful to you, please write to autoconf@gnu.org." >&2;}-ac_tool_warned=yes ;;-esac- CC=$ac_ct_CC- fi-fi--fi---test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH-See \`config.log' for more details." >&5-echo "$as_me: error: no acceptable C compiler found in \$PATH-See \`config.log' for more details." >&2;}- { (exit 1); exit 1; }; }--# Provide some information about the compiler.-echo "$as_me:$LINENO: checking for C compiler version" >&5-ac_compiler=`set X $ac_compile; echo $2`-{ (ac_try="$ac_compiler --version >&5"-case "(($ac_try" in- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;- *) ac_try_echo=$ac_try;;-esac-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5- (eval "$ac_compiler --version >&5") 2>&5- ac_status=$?- echo "$as_me:$LINENO: \$? = $ac_status" >&5- (exit $ac_status); }-{ (ac_try="$ac_compiler -v >&5"-case "(($ac_try" in- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;- *) ac_try_echo=$ac_try;;-esac-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5- (eval "$ac_compiler -v >&5") 2>&5- ac_status=$?- echo "$as_me:$LINENO: \$? = $ac_status" >&5- (exit $ac_status); }-{ (ac_try="$ac_compiler -V >&5"-case "(($ac_try" in- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;- *) ac_try_echo=$ac_try;;-esac-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5- (eval "$ac_compiler -V >&5") 2>&5- ac_status=$?- echo "$as_me:$LINENO: \$? = $ac_status" >&5- (exit $ac_status); }--{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; }-if test "${ac_cv_c_compiler_gnu+set}" = set; then- echo $ECHO_N "(cached) $ECHO_C" >&6-else- cat >conftest.$ac_ext <<_ACEOF-/* confdefs.h. */-_ACEOF-cat confdefs.h >>conftest.$ac_ext-cat >>conftest.$ac_ext <<_ACEOF-/* end confdefs.h. */--int-main ()-{-#ifndef __GNUC__- choke me-#endif-- ;- return 0;-}-_ACEOF-rm -f conftest.$ac_objext-if { (ac_try="$ac_compile"-case "(($ac_try" in- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;- *) ac_try_echo=$ac_try;;-esac-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5- (eval "$ac_compile") 2>conftest.er1- ac_status=$?- grep -v '^ *+' conftest.er1 >conftest.err- rm -f conftest.er1- cat conftest.err >&5- echo "$as_me:$LINENO: \$? = $ac_status" >&5- (exit $ac_status); } && {- test -z "$ac_c_werror_flag" ||- test ! -s conftest.err- } && test -s conftest.$ac_objext; then- ac_compiler_gnu=yes-else- echo "$as_me: failed program was:" >&5-sed 's/^/| /' conftest.$ac_ext >&5-- ac_compiler_gnu=no-fi--rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext-ac_cv_c_compiler_gnu=$ac_compiler_gnu--fi-{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; }-GCC=`test $ac_compiler_gnu = yes && echo yes`-ac_test_CFLAGS=${CFLAGS+set}-ac_save_CFLAGS=$CFLAGS-{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; }-if test "${ac_cv_prog_cc_g+set}" = set; then- echo $ECHO_N "(cached) $ECHO_C" >&6-else- ac_save_c_werror_flag=$ac_c_werror_flag- ac_c_werror_flag=yes- ac_cv_prog_cc_g=no- CFLAGS="-g"- cat >conftest.$ac_ext <<_ACEOF-/* confdefs.h. */-_ACEOF-cat confdefs.h >>conftest.$ac_ext-cat >>conftest.$ac_ext <<_ACEOF-/* end confdefs.h. */--int-main ()-{-- ;- return 0;-}-_ACEOF-rm -f conftest.$ac_objext-if { (ac_try="$ac_compile"-case "(($ac_try" in- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;- *) ac_try_echo=$ac_try;;-esac-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5- (eval "$ac_compile") 2>conftest.er1- ac_status=$?- grep -v '^ *+' conftest.er1 >conftest.err- rm -f conftest.er1- cat conftest.err >&5- echo "$as_me:$LINENO: \$? = $ac_status" >&5- (exit $ac_status); } && {- test -z "$ac_c_werror_flag" ||- test ! -s conftest.err- } && test -s conftest.$ac_objext; then- ac_cv_prog_cc_g=yes-else- echo "$as_me: failed program was:" >&5-sed 's/^/| /' conftest.$ac_ext >&5-- CFLAGS=""- cat >conftest.$ac_ext <<_ACEOF-/* confdefs.h. */-_ACEOF-cat confdefs.h >>conftest.$ac_ext-cat >>conftest.$ac_ext <<_ACEOF-/* end confdefs.h. */--int-main ()-{-- ;- return 0;-}-_ACEOF-rm -f conftest.$ac_objext-if { (ac_try="$ac_compile"-case "(($ac_try" in- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;- *) ac_try_echo=$ac_try;;-esac-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5- (eval "$ac_compile") 2>conftest.er1- ac_status=$?- grep -v '^ *+' conftest.er1 >conftest.err- rm -f conftest.er1- cat conftest.err >&5- echo "$as_me:$LINENO: \$? = $ac_status" >&5- (exit $ac_status); } && {- test -z "$ac_c_werror_flag" ||- test ! -s conftest.err- } && test -s conftest.$ac_objext; then- :-else- echo "$as_me: failed program was:" >&5-sed 's/^/| /' conftest.$ac_ext >&5-- ac_c_werror_flag=$ac_save_c_werror_flag- CFLAGS="-g"- cat >conftest.$ac_ext <<_ACEOF-/* confdefs.h. */-_ACEOF-cat confdefs.h >>conftest.$ac_ext-cat >>conftest.$ac_ext <<_ACEOF-/* end confdefs.h. */--int-main ()-{-- ;- return 0;-}-_ACEOF-rm -f conftest.$ac_objext-if { (ac_try="$ac_compile"-case "(($ac_try" in- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;- *) ac_try_echo=$ac_try;;-esac-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5- (eval "$ac_compile") 2>conftest.er1- ac_status=$?- grep -v '^ *+' conftest.er1 >conftest.err- rm -f conftest.er1- cat conftest.err >&5- echo "$as_me:$LINENO: \$? = $ac_status" >&5- (exit $ac_status); } && {- test -z "$ac_c_werror_flag" ||- test ! -s conftest.err- } && test -s conftest.$ac_objext; then- ac_cv_prog_cc_g=yes-else- echo "$as_me: failed program was:" >&5-sed 's/^/| /' conftest.$ac_ext >&5---fi--rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext-fi--rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext-fi--rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext- ac_c_werror_flag=$ac_save_c_werror_flag-fi-{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5-echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; }-if test "$ac_test_CFLAGS" = set; then- CFLAGS=$ac_save_CFLAGS-elif test $ac_cv_prog_cc_g = yes; then- if test "$GCC" = yes; then- CFLAGS="-g -O2"- else- CFLAGS="-g"- fi-else- if test "$GCC" = yes; then- CFLAGS="-O2"- else- CFLAGS=- fi-fi-{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5-echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; }-if test "${ac_cv_prog_cc_c89+set}" = set; then- echo $ECHO_N "(cached) $ECHO_C" >&6-else- ac_cv_prog_cc_c89=no-ac_save_CC=$CC-cat >conftest.$ac_ext <<_ACEOF-/* confdefs.h. */-_ACEOF-cat confdefs.h >>conftest.$ac_ext-cat >>conftest.$ac_ext <<_ACEOF-/* end confdefs.h. */-#include <stdarg.h>-#include <stdio.h>-#include <sys/types.h>-#include <sys/stat.h>-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */-struct buf { int x; };-FILE * (*rcsopen) (struct buf *, struct stat *, int);-static char *e (p, i)- char **p;- int i;-{- return p[i];-}-static char *f (char * (*g) (char **, int), char **p, ...)-{- char *s;- va_list v;- va_start (v,p);- s = g (p, va_arg (v,int));- va_end (v);- return s;-}--/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has- function prototypes and stuff, but not '\xHH' hex character constants.- These don't provoke an error unfortunately, instead are silently treated- as 'x'. The following induces an error, until -std is added to get- proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an- array size at least. It's necessary to write '\x00'==0 to get something- that's true only with -std. */-int osf4_cc_array ['\x00' == 0 ? 1 : -1];--/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters- inside strings and character constants. */-#define FOO(x) 'x'-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];--int test (int i, double x);-struct s1 {int (*f) (int a);};-struct s2 {int (*f) (double a);};-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);-int argc;-char **argv;-int-main ()-{-return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];- ;- return 0;-}-_ACEOF-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \- -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"-do- CC="$ac_save_CC $ac_arg"- rm -f conftest.$ac_objext-if { (ac_try="$ac_compile"-case "(($ac_try" in- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;- *) ac_try_echo=$ac_try;;-esac-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5- (eval "$ac_compile") 2>conftest.er1- ac_status=$?- grep -v '^ *+' conftest.er1 >conftest.err- rm -f conftest.er1- cat conftest.err >&5- echo "$as_me:$LINENO: \$? = $ac_status" >&5- (exit $ac_status); } && {- test -z "$ac_c_werror_flag" ||- test ! -s conftest.err- } && test -s conftest.$ac_objext; then- ac_cv_prog_cc_c89=$ac_arg-else- echo "$as_me: failed program was:" >&5-sed 's/^/| /' conftest.$ac_ext >&5---fi--rm -f core conftest.err conftest.$ac_objext- test "x$ac_cv_prog_cc_c89" != "xno" && break-done-rm -f conftest.$ac_ext-CC=$ac_save_CC--fi-# AC_CACHE_VAL-case "x$ac_cv_prog_cc_c89" in- x)- { echo "$as_me:$LINENO: result: none needed" >&5-echo "${ECHO_T}none needed" >&6; } ;;- xno)- { echo "$as_me:$LINENO: result: unsupported" >&5-echo "${ECHO_T}unsupported" >&6; } ;;- *)- CC="$CC $ac_cv_prog_cc_c89"- { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5-echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;;-esac---ac_ext=c-ac_cpp='$CPP $CPPFLAGS'-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'-ac_compiler_gnu=$ac_cv_c_compiler_gnu---ac_ext=c-ac_cpp='$CPP $CPPFLAGS'-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'-ac_compiler_gnu=$ac_cv_c_compiler_gnu-{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5-echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; }-# On Suns, sometimes $CPP names a directory.-if test -n "$CPP" && test -d "$CPP"; then- CPP=-fi-if test -z "$CPP"; then- if test "${ac_cv_prog_CPP+set}" = set; then- echo $ECHO_N "(cached) $ECHO_C" >&6-else- # Double quotes because CPP needs to be expanded- for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"- do- ac_preproc_ok=false-for ac_c_preproc_warn_flag in '' yes-do- # Use a header file that comes with gcc, so configuring glibc- # with a fresh cross-compiler works.- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since- # <limits.h> exists even on freestanding compilers.- # On the NeXT, cc -E runs the code through the compiler's parser,- # not just through cpp. "Syntax error" is here to catch this case.- cat >conftest.$ac_ext <<_ACEOF-/* confdefs.h. */-_ACEOF-cat confdefs.h >>conftest.$ac_ext-cat >>conftest.$ac_ext <<_ACEOF-/* end confdefs.h. */-#ifdef __STDC__-# include <limits.h>-#else-# include <assert.h>-#endif- Syntax error-_ACEOF-if { (ac_try="$ac_cpp conftest.$ac_ext"-case "(($ac_try" in- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;- *) ac_try_echo=$ac_try;;-esac-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1- ac_status=$?- grep -v '^ *+' conftest.er1 >conftest.err- rm -f conftest.er1- cat conftest.err >&5- echo "$as_me:$LINENO: \$? = $ac_status" >&5- (exit $ac_status); } >/dev/null && {- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||- test ! -s conftest.err- }; then- :-else- echo "$as_me: failed program was:" >&5-sed 's/^/| /' conftest.$ac_ext >&5-- # Broken: fails on valid input.-continue-fi--rm -f conftest.err conftest.$ac_ext-- # OK, works on sane cases. Now check whether nonexistent headers- # can be detected and how.- cat >conftest.$ac_ext <<_ACEOF-/* confdefs.h. */-_ACEOF-cat confdefs.h >>conftest.$ac_ext-cat >>conftest.$ac_ext <<_ACEOF-/* end confdefs.h. */-#include <ac_nonexistent.h>-_ACEOF-if { (ac_try="$ac_cpp conftest.$ac_ext"-case "(($ac_try" in- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;- *) ac_try_echo=$ac_try;;-esac-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1- ac_status=$?- grep -v '^ *+' conftest.er1 >conftest.err- rm -f conftest.er1- cat conftest.err >&5- echo "$as_me:$LINENO: \$? = $ac_status" >&5- (exit $ac_status); } >/dev/null && {- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||- test ! -s conftest.err- }; then- # Broken: success on invalid input.-continue-else- echo "$as_me: failed program was:" >&5-sed 's/^/| /' conftest.$ac_ext >&5-- # Passes both tests.-ac_preproc_ok=:-break-fi--rm -f conftest.err conftest.$ac_ext--done-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.-rm -f conftest.err conftest.$ac_ext-if $ac_preproc_ok; then- break-fi-- done- ac_cv_prog_CPP=$CPP--fi- CPP=$ac_cv_prog_CPP-else- ac_cv_prog_CPP=$CPP-fi-{ echo "$as_me:$LINENO: result: $CPP" >&5-echo "${ECHO_T}$CPP" >&6; }-ac_preproc_ok=false-for ac_c_preproc_warn_flag in '' yes-do- # Use a header file that comes with gcc, so configuring glibc- # with a fresh cross-compiler works.- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since- # <limits.h> exists even on freestanding compilers.- # On the NeXT, cc -E runs the code through the compiler's parser,- # not just through cpp. "Syntax error" is here to catch this case.- cat >conftest.$ac_ext <<_ACEOF-/* confdefs.h. */-_ACEOF-cat confdefs.h >>conftest.$ac_ext-cat >>conftest.$ac_ext <<_ACEOF-/* end confdefs.h. */-#ifdef __STDC__-# include <limits.h>-#else-# include <assert.h>-#endif- Syntax error-_ACEOF-if { (ac_try="$ac_cpp conftest.$ac_ext"-case "(($ac_try" in- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;- *) ac_try_echo=$ac_try;;-esac-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1- ac_status=$?- grep -v '^ *+' conftest.er1 >conftest.err- rm -f conftest.er1- cat conftest.err >&5- echo "$as_me:$LINENO: \$? = $ac_status" >&5- (exit $ac_status); } >/dev/null && {- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||- test ! -s conftest.err- }; then- :-else- echo "$as_me: failed program was:" >&5-sed 's/^/| /' conftest.$ac_ext >&5-- # Broken: fails on valid input.-continue-fi--rm -f conftest.err conftest.$ac_ext-- # OK, works on sane cases. Now check whether nonexistent headers- # can be detected and how.- cat >conftest.$ac_ext <<_ACEOF-/* confdefs.h. */-_ACEOF-cat confdefs.h >>conftest.$ac_ext-cat >>conftest.$ac_ext <<_ACEOF-/* end confdefs.h. */-#include <ac_nonexistent.h>-_ACEOF-if { (ac_try="$ac_cpp conftest.$ac_ext"-case "(($ac_try" in- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;- *) ac_try_echo=$ac_try;;-esac-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1- ac_status=$?- grep -v '^ *+' conftest.er1 >conftest.err- rm -f conftest.er1- cat conftest.err >&5- echo "$as_me:$LINENO: \$? = $ac_status" >&5- (exit $ac_status); } >/dev/null && {- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||- test ! -s conftest.err- }; then- # Broken: success on invalid input.-continue-else- echo "$as_me: failed program was:" >&5-sed 's/^/| /' conftest.$ac_ext >&5-- # Passes both tests.-ac_preproc_ok=:-break-fi--rm -f conftest.err conftest.$ac_ext--done-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.-rm -f conftest.err conftest.$ac_ext-if $ac_preproc_ok; then- :-else- { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check-See \`config.log' for more details." >&5-echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check-See \`config.log' for more details." >&2;}- { (exit 1); exit 1; }; }-fi--ac_ext=c-ac_cpp='$CPP $CPPFLAGS'-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'-ac_compiler_gnu=$ac_cv_c_compiler_gnu---{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5-echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; }-if test "${ac_cv_path_GREP+set}" = set; then- echo $ECHO_N "(cached) $ECHO_C" >&6-else- # Extract the first word of "grep ggrep" to use in msg output-if test -z "$GREP"; then-set dummy grep ggrep; ac_prog_name=$2-if test "${ac_cv_path_GREP+set}" = set; then- echo $ECHO_N "(cached) $ECHO_C" >&6-else- ac_path_GREP_found=false-# Loop through the user's path and test for each of PROGNAME-LIST-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin-do- IFS=$as_save_IFS- test -z "$as_dir" && as_dir=.- for ac_prog in grep ggrep; do- for ac_exec_ext in '' $ac_executable_extensions; do- ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"- { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue- # Check for GNU ac_path_GREP and select it if it is found.- # Check for GNU $ac_path_GREP-case `"$ac_path_GREP" --version 2>&1` in-*GNU*)- ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;-*)- ac_count=0- echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"- while :- do- cat "conftest.in" "conftest.in" >"conftest.tmp"- mv "conftest.tmp" "conftest.in"- cp "conftest.in" "conftest.nl"- echo 'GREP' >> "conftest.nl"- "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break- diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break- ac_count=`expr $ac_count + 1`- if test $ac_count -gt ${ac_path_GREP_max-0}; then- # Best one so far, save it but keep looking for a better one- ac_cv_path_GREP="$ac_path_GREP"- ac_path_GREP_max=$ac_count- fi- # 10*(2^10) chars as input seems more than enough- test $ac_count -gt 10 && break- done- rm -f conftest.in conftest.tmp conftest.nl conftest.out;;-esac--- $ac_path_GREP_found && break 3- done-done--done-IFS=$as_save_IFS---fi--GREP="$ac_cv_path_GREP"-if test -z "$GREP"; then- { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5-echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}- { (exit 1); exit 1; }; }-fi--else- ac_cv_path_GREP=$GREP-fi---fi-{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5-echo "${ECHO_T}$ac_cv_path_GREP" >&6; }- GREP="$ac_cv_path_GREP"---{ echo "$as_me:$LINENO: checking for egrep" >&5-echo $ECHO_N "checking for egrep... $ECHO_C" >&6; }-if test "${ac_cv_path_EGREP+set}" = set; then- echo $ECHO_N "(cached) $ECHO_C" >&6-else- if echo a | $GREP -E '(a|b)' >/dev/null 2>&1- then ac_cv_path_EGREP="$GREP -E"- else- # Extract the first word of "egrep" to use in msg output-if test -z "$EGREP"; then-set dummy egrep; ac_prog_name=$2-if test "${ac_cv_path_EGREP+set}" = set; then- echo $ECHO_N "(cached) $ECHO_C" >&6-else- ac_path_EGREP_found=false-# Loop through the user's path and test for each of PROGNAME-LIST-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin-do- IFS=$as_save_IFS- test -z "$as_dir" && as_dir=.- for ac_prog in egrep; do- for ac_exec_ext in '' $ac_executable_extensions; do- ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"- { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue- # Check for GNU ac_path_EGREP and select it if it is found.- # Check for GNU $ac_path_EGREP-case `"$ac_path_EGREP" --version 2>&1` in-*GNU*)- ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;-*)- ac_count=0- echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"- while :- do- cat "conftest.in" "conftest.in" >"conftest.tmp"- mv "conftest.tmp" "conftest.in"- cp "conftest.in" "conftest.nl"- echo 'EGREP' >> "conftest.nl"- "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break- diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break- ac_count=`expr $ac_count + 1`- if test $ac_count -gt ${ac_path_EGREP_max-0}; then- # Best one so far, save it but keep looking for a better one- ac_cv_path_EGREP="$ac_path_EGREP"- ac_path_EGREP_max=$ac_count- fi- # 10*(2^10) chars as input seems more than enough- test $ac_count -gt 10 && break- done- rm -f conftest.in conftest.tmp conftest.nl conftest.out;;-esac--- $ac_path_EGREP_found && break 3- done-done--done-IFS=$as_save_IFS---fi--EGREP="$ac_cv_path_EGREP"-if test -z "$EGREP"; then- { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5-echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}- { (exit 1); exit 1; }; }-fi--else- ac_cv_path_EGREP=$EGREP-fi--- fi-fi-{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5-echo "${ECHO_T}$ac_cv_path_EGREP" >&6; }- EGREP="$ac_cv_path_EGREP"---{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; }-if test "${ac_cv_header_stdc+set}" = set; then- echo $ECHO_N "(cached) $ECHO_C" >&6-else- cat >conftest.$ac_ext <<_ACEOF-/* confdefs.h. */-_ACEOF-cat confdefs.h >>conftest.$ac_ext-cat >>conftest.$ac_ext <<_ACEOF-/* end confdefs.h. */-#include <stdlib.h>-#include <stdarg.h>-#include <string.h>-#include <float.h>--int-main ()-{-- ;- return 0;-}-_ACEOF-rm -f conftest.$ac_objext-if { (ac_try="$ac_compile"-case "(($ac_try" in- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;- *) ac_try_echo=$ac_try;;-esac-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5- (eval "$ac_compile") 2>conftest.er1- ac_status=$?- grep -v '^ *+' conftest.er1 >conftest.err- rm -f conftest.er1- cat conftest.err >&5- echo "$as_me:$LINENO: \$? = $ac_status" >&5- (exit $ac_status); } && {- test -z "$ac_c_werror_flag" ||- test ! -s conftest.err- } && test -s conftest.$ac_objext; then- ac_cv_header_stdc=yes-else- echo "$as_me: failed program was:" >&5-sed 's/^/| /' conftest.$ac_ext >&5-- ac_cv_header_stdc=no-fi--rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext--if test $ac_cv_header_stdc = yes; then- # SunOS 4.x string.h does not declare mem*, contrary to ANSI.- cat >conftest.$ac_ext <<_ACEOF-/* confdefs.h. */-_ACEOF-cat confdefs.h >>conftest.$ac_ext-cat >>conftest.$ac_ext <<_ACEOF-/* end confdefs.h. */-#include <string.h>--_ACEOF-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |- $EGREP "memchr" >/dev/null 2>&1; then- :-else- ac_cv_header_stdc=no-fi-rm -f -r conftest*--fi--if test $ac_cv_header_stdc = yes; then- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.- cat >conftest.$ac_ext <<_ACEOF-/* confdefs.h. */-_ACEOF-cat confdefs.h >>conftest.$ac_ext-cat >>conftest.$ac_ext <<_ACEOF-/* end confdefs.h. */-#include <stdlib.h>--_ACEOF-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |- $EGREP "free" >/dev/null 2>&1; then- :-else- ac_cv_header_stdc=no-fi-rm -f -r conftest*--fi--if test $ac_cv_header_stdc = yes; then- # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.- if test "$cross_compiling" = yes; then- :-else- cat >conftest.$ac_ext <<_ACEOF-/* confdefs.h. */-_ACEOF-cat confdefs.h >>conftest.$ac_ext-cat >>conftest.$ac_ext <<_ACEOF-/* end confdefs.h. */-#include <ctype.h>-#include <stdlib.h>-#if ((' ' & 0x0FF) == 0x020)-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))-#else-# define ISLOWER(c) \- (('a' <= (c) && (c) <= 'i') \- || ('j' <= (c) && (c) <= 'r') \- || ('s' <= (c) && (c) <= 'z'))-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))-#endif--#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))-int-main ()-{- int i;- for (i = 0; i < 256; i++)- if (XOR (islower (i), ISLOWER (i))- || toupper (i) != TOUPPER (i))- return 2;- return 0;-}-_ACEOF-rm -f conftest$ac_exeext-if { (ac_try="$ac_link"-case "(($ac_try" in- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;- *) ac_try_echo=$ac_try;;-esac-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5- (eval "$ac_link") 2>&5- ac_status=$?- echo "$as_me:$LINENO: \$? = $ac_status" >&5- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'- { (case "(($ac_try" in- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;- *) ac_try_echo=$ac_try;;-esac-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5- (eval "$ac_try") 2>&5- ac_status=$?- echo "$as_me:$LINENO: \$? = $ac_status" >&5- (exit $ac_status); }; }; then- :-else- echo "$as_me: program exited with status $ac_status" >&5-echo "$as_me: failed program was:" >&5-sed 's/^/| /' conftest.$ac_ext >&5--( exit $ac_status )-ac_cv_header_stdc=no-fi-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext-fi---fi-fi-{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5-echo "${ECHO_T}$ac_cv_header_stdc" >&6; }-if test $ac_cv_header_stdc = yes; then--cat >>confdefs.h <<\_ACEOF-#define STDC_HEADERS 1-_ACEOF--fi--# On IRIX 5.3, sys/types and inttypes.h are conflicting.----------for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \- inttypes.h stdint.h unistd.h-do-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`-{ echo "$as_me:$LINENO: checking for $ac_header" >&5-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then- echo $ECHO_N "(cached) $ECHO_C" >&6-else- cat >conftest.$ac_ext <<_ACEOF-/* confdefs.h. */-_ACEOF-cat confdefs.h >>conftest.$ac_ext-cat >>conftest.$ac_ext <<_ACEOF-/* end confdefs.h. */-$ac_includes_default--#include <$ac_header>-_ACEOF-rm -f conftest.$ac_objext-if { (ac_try="$ac_compile"-case "(($ac_try" in- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;- *) ac_try_echo=$ac_try;;-esac-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5- (eval "$ac_compile") 2>conftest.er1- ac_status=$?- grep -v '^ *+' conftest.er1 >conftest.err- rm -f conftest.er1- cat conftest.err >&5- echo "$as_me:$LINENO: \$? = $ac_status" >&5- (exit $ac_status); } && {- test -z "$ac_c_werror_flag" ||- test ! -s conftest.err- } && test -s conftest.$ac_objext; then- eval "$as_ac_Header=yes"-else- echo "$as_me: failed program was:" >&5-sed 's/^/| /' conftest.$ac_ext >&5-- eval "$as_ac_Header=no"-fi--rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext-fi-ac_res=`eval echo '${'$as_ac_Header'}'`- { echo "$as_me:$LINENO: result: $ac_res" >&5-echo "${ECHO_T}$ac_res" >&6; }-if test `eval echo '${'$as_ac_Header'}'` = yes; then- cat >>confdefs.h <<_ACEOF-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1-_ACEOF--fi--done-----for ac_header in cuda.h cuda_runtime_api.h-do-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then- { echo "$as_me:$LINENO: checking for $ac_header" >&5-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then- echo $ECHO_N "(cached) $ECHO_C" >&6-fi-ac_res=`eval echo '${'$as_ac_Header'}'`- { echo "$as_me:$LINENO: result: $ac_res" >&5-echo "${ECHO_T}$ac_res" >&6; }-else- # Is the header compilable?-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }-cat >conftest.$ac_ext <<_ACEOF-/* confdefs.h. */-_ACEOF-cat confdefs.h >>conftest.$ac_ext-cat >>conftest.$ac_ext <<_ACEOF-/* end confdefs.h. */-$ac_includes_default-#include <$ac_header>-_ACEOF-rm -f conftest.$ac_objext-if { (ac_try="$ac_compile"-case "(($ac_try" in- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;- *) ac_try_echo=$ac_try;;-esac-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5- (eval "$ac_compile") 2>conftest.er1- ac_status=$?- grep -v '^ *+' conftest.er1 >conftest.err- rm -f conftest.er1- cat conftest.err >&5- echo "$as_me:$LINENO: \$? = $ac_status" >&5- (exit $ac_status); } && {- test -z "$ac_c_werror_flag" ||- test ! -s conftest.err- } && test -s conftest.$ac_objext; then- ac_header_compiler=yes-else- echo "$as_me: failed program was:" >&5-sed 's/^/| /' conftest.$ac_ext >&5-- ac_header_compiler=no-fi--rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5-echo "${ECHO_T}$ac_header_compiler" >&6; }--# Is the header present?-{ echo "$as_me:$LINENO: checking $ac_header presence" >&5-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }-cat >conftest.$ac_ext <<_ACEOF-/* confdefs.h. */-_ACEOF-cat confdefs.h >>conftest.$ac_ext-cat >>conftest.$ac_ext <<_ACEOF-/* end confdefs.h. */-#include <$ac_header>-_ACEOF-if { (ac_try="$ac_cpp conftest.$ac_ext"-case "(($ac_try" in- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;- *) ac_try_echo=$ac_try;;-esac-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1- ac_status=$?- grep -v '^ *+' conftest.er1 >conftest.err- rm -f conftest.er1- cat conftest.err >&5- echo "$as_me:$LINENO: \$? = $ac_status" >&5- (exit $ac_status); } >/dev/null && {- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||- test ! -s conftest.err- }; then- ac_header_preproc=yes-else- echo "$as_me: failed program was:" >&5-sed 's/^/| /' conftest.$ac_ext >&5-- ac_header_preproc=no-fi--rm -f conftest.err conftest.$ac_ext-{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5-echo "${ECHO_T}$ac_header_preproc" >&6; }--# So? What about this header?-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in- yes:no: )- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}- ac_header_preproc=yes- ;;- no:yes:* )- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}- ( cat <<\_ASBOX-## ---------------------------------------- ##-## Report this to tmcdonell@cse.unsw.edu.au ##-## ---------------------------------------- ##-_ASBOX- ) | sed "s/^/$as_me: WARNING: /" >&2- ;;-esac-{ echo "$as_me:$LINENO: checking for $ac_header" >&5-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then- echo $ECHO_N "(cached) $ECHO_C" >&6-else- eval "$as_ac_Header=\$ac_header_preproc"-fi-ac_res=`eval echo '${'$as_ac_Header'}'`- { echo "$as_me:$LINENO: result: $ac_res" >&5-echo "${ECHO_T}$ac_res" >&6; }--fi-if test `eval echo '${'$as_ac_Header'}'` = yes; then- cat >>confdefs.h <<_ACEOF-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1-_ACEOF--else- { { echo "$as_me:$LINENO: error: could not find CUDA headers${longerror}" >&5-echo "$as_me: error: could not find CUDA headers${longerror}" >&2;}- { (exit 1); exit 1; }; }-fi--done--{ echo "$as_me:$LINENO: checking for library containing cuDriverGetVersion" >&5-echo $ECHO_N "checking for library containing cuDriverGetVersion... $ECHO_C" >&6; }-if test "${ac_cv_search_cuDriverGetVersion+set}" = set; then- echo $ECHO_N "(cached) $ECHO_C" >&6-else- ac_func_search_save_LIBS=$LIBS-cat >conftest.$ac_ext <<_ACEOF-/* confdefs.h. */-_ACEOF-cat confdefs.h >>conftest.$ac_ext-cat >>conftest.$ac_ext <<_ACEOF-/* end confdefs.h. */--/* Override any GCC internal prototype to avoid an error.- Use char because int might match the return type of a GCC- builtin and then its argument prototype would still apply. */-#ifdef __cplusplus-extern "C"-#endif-char cuDriverGetVersion ();-int-main ()-{-return cuDriverGetVersion ();- ;- return 0;-}-_ACEOF-for ac_lib in '' cuda; do- if test -z "$ac_lib"; then- ac_res="none required"- else- ac_res=-l$ac_lib- LIBS="-l$ac_lib $ac_func_search_save_LIBS"- fi- rm -f conftest.$ac_objext conftest$ac_exeext-if { (ac_try="$ac_link"-case "(($ac_try" in- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;- *) ac_try_echo=$ac_try;;-esac-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5- (eval "$ac_link") 2>conftest.er1- ac_status=$?- grep -v '^ *+' conftest.er1 >conftest.err- rm -f conftest.er1- cat conftest.err >&5- echo "$as_me:$LINENO: \$? = $ac_status" >&5- (exit $ac_status); } && {- test -z "$ac_c_werror_flag" ||- test ! -s conftest.err- } && test -s conftest$ac_exeext &&- $as_test_x conftest$ac_exeext; then- ac_cv_search_cuDriverGetVersion=$ac_res-else- echo "$as_me: failed program was:" >&5-sed 's/^/| /' conftest.$ac_ext >&5---fi--rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \- conftest$ac_exeext- if test "${ac_cv_search_cuDriverGetVersion+set}" = set; then- break-fi-done-if test "${ac_cv_search_cuDriverGetVersion+set}" = set; then- :-else- ac_cv_search_cuDriverGetVersion=no-fi-rm conftest.$ac_ext-LIBS=$ac_func_search_save_LIBS-fi-{ echo "$as_me:$LINENO: result: $ac_cv_search_cuDriverGetVersion" >&5-echo "${ECHO_T}$ac_cv_search_cuDriverGetVersion" >&6; }-ac_res=$ac_cv_search_cuDriverGetVersion-if test "$ac_res" != no; then- test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"--else- { { echo "$as_me:$LINENO: error: could not find CUDA driver library${longerror}" >&5-echo "$as_me: error: could not find CUDA driver library${longerror}" >&2;}- { (exit 1); exit 1; }; }-fi--{ echo "$as_me:$LINENO: checking for library containing cudaRuntimeGetVersion" >&5-echo $ECHO_N "checking for library containing cudaRuntimeGetVersion... $ECHO_C" >&6; }-if test "${ac_cv_search_cudaRuntimeGetVersion+set}" = set; then- echo $ECHO_N "(cached) $ECHO_C" >&6-else- ac_func_search_save_LIBS=$LIBS-cat >conftest.$ac_ext <<_ACEOF-/* confdefs.h. */-_ACEOF-cat confdefs.h >>conftest.$ac_ext-cat >>conftest.$ac_ext <<_ACEOF-/* end confdefs.h. */--/* Override any GCC internal prototype to avoid an error.- Use char because int might match the return type of a GCC- builtin and then its argument prototype would still apply. */-#ifdef __cplusplus-extern "C"-#endif-char cudaRuntimeGetVersion ();-int-main ()-{-return cudaRuntimeGetVersion ();- ;- return 0;-}-_ACEOF-for ac_lib in '' cudart; do- if test -z "$ac_lib"; then- ac_res="none required"- else- ac_res=-l$ac_lib- LIBS="-l$ac_lib $ac_func_search_save_LIBS"- fi- rm -f conftest.$ac_objext conftest$ac_exeext-if { (ac_try="$ac_link"-case "(($ac_try" in- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;- *) ac_try_echo=$ac_try;;-esac-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5- (eval "$ac_link") 2>conftest.er1- ac_status=$?- grep -v '^ *+' conftest.er1 >conftest.err- rm -f conftest.er1- cat conftest.err >&5- echo "$as_me:$LINENO: \$? = $ac_status" >&5- (exit $ac_status); } && {- test -z "$ac_c_werror_flag" ||- test ! -s conftest.err- } && test -s conftest$ac_exeext &&- $as_test_x conftest$ac_exeext; then- ac_cv_search_cudaRuntimeGetVersion=$ac_res-else- echo "$as_me: failed program was:" >&5-sed 's/^/| /' conftest.$ac_ext >&5---fi--rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \- conftest$ac_exeext- if test "${ac_cv_search_cudaRuntimeGetVersion+set}" = set; then- break-fi-done-if test "${ac_cv_search_cudaRuntimeGetVersion+set}" = set; then- :-else- ac_cv_search_cudaRuntimeGetVersion=no-fi-rm conftest.$ac_ext-LIBS=$ac_func_search_save_LIBS-fi-{ echo "$as_me:$LINENO: result: $ac_cv_search_cudaRuntimeGetVersion" >&5-echo "${ECHO_T}$ac_cv_search_cudaRuntimeGetVersion" >&6; }-ac_res=$ac_cv_search_cudaRuntimeGetVersion-if test "$ac_res" != no; then- test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"--else- { { echo "$as_me:$LINENO: error: could not find CUDA runtime library${longerror}" >&5-echo "$as_me: error: could not find CUDA runtime library${longerror}" >&2;}- { (exit 1); exit 1; }; }-fi---# Populate the buildinfo, with the search paths and any target specific options-#-cuda_cppflags="$CPPFLAGS"-cuda_ldflags="$LDFLAGS $LIBS"-----cat >confcache <<\_ACEOF-# This file is a shell script that caches the results of configure-# tests run on this system so they can be shared between configure-# scripts and configure runs, see configure's option --config-cache.-# It is not useful on other systems. If it contains results you don't-# want to keep, you may remove or edit it.-#-# config.status only pays attention to the cache file if you give it-# the --recheck option to rerun configure.-#-# `ac_cv_env_foo' variables (set or unset) will be overridden when-# loading this file, other *unset* `ac_cv_foo' will be assigned the-# following values.--_ACEOF--# The following way of writing the cache mishandles newlines in values,-# but we know of no workaround that is simple, portable, and efficient.-# So, we kill variables containing newlines.-# Ultrix sh set writes to stderr and can't be redirected directly,-# and sets the high bit in the cache file unless we assign to the vars.-(- for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do- eval ac_val=\$$ac_var- case $ac_val in #(- *${as_nl}*)- case $ac_var in #(- *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5-echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;- esac- case $ac_var in #(- _ | IFS | as_nl) ;; #(- *) $as_unset $ac_var ;;- esac ;;- esac- done-- (set) 2>&1 |- case $as_nl`(ac_space=' '; set) 2>&1` in #(- *${as_nl}ac_space=\ *)- # `set' does not quote correctly, so add quotes (double-quote- # substitution turns \\\\ into \\, and sed turns \\ into \).- sed -n \- "s/'/'\\\\''/g;- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"- ;; #(- *)- # `set' quotes correctly as required by POSIX, so do not add quotes.- sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"- ;;- esac |- sort-) |- sed '- /^ac_cv_env_/b end- t clear- :clear- s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/- t end- s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/- :end' >>confcache-if diff "$cache_file" confcache >/dev/null 2>&1; then :; else- if test -w "$cache_file"; then- test "x$cache_file" != "x/dev/null" &&- { echo "$as_me:$LINENO: updating cache $cache_file" >&5-echo "$as_me: updating cache $cache_file" >&6;}- cat confcache >$cache_file- else- { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5-echo "$as_me: not updating unwritable cache $cache_file" >&6;}- fi-fi-rm -f confcache--test "x$prefix" = xNONE && prefix=$ac_default_prefix-# Let make expand exec_prefix.-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'--# Transform confdefs.h into DEFS.-# Protect against shell expansion while executing Makefile rules.-# Protect against Makefile macro expansion.-#-# If the first sed substitution is executed (which looks for macros that-# take arguments), then branch to the quote section. Otherwise,-# look for a macro that doesn't take arguments.-ac_script='-t clear-:clear-s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g-t quote-s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g-t quote-b any-:quote-s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g-s/\[/\\&/g-s/\]/\\&/g-s/\$/$$/g-H-:any-${- g- s/^\n//- s/\n/ /g- p-}-'-DEFS=`sed -n "$ac_script" confdefs.h`---ac_libobjs=-ac_ltlibobjs=-for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue- # 1. Remove the extension, and $U if already installed.- ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'- ac_i=`echo "$ac_i" | sed "$ac_script"`- # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR- # will be set to the directory where LIBOBJS objects are built.- ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"- ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo'-done-LIBOBJS=$ac_libobjs--LTLIBOBJS=$ac_ltlibobjs----: ${CONFIG_STATUS=./config.status}-ac_clean_files_save=$ac_clean_files-ac_clean_files="$ac_clean_files $CONFIG_STATUS"-{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5-echo "$as_me: creating $CONFIG_STATUS" >&6;}-cat >$CONFIG_STATUS <<_ACEOF-#! $SHELL-# Generated by $as_me.-# Run this file to recreate the current configuration.-# Compiler output produced by configure, useful for debugging-# configure, is in config.log if it exists.--debug=false-ac_cs_recheck=false-ac_cs_silent=false-SHELL=\${CONFIG_SHELL-$SHELL}-_ACEOF--cat >>$CONFIG_STATUS <<\_ACEOF-## --------------------- ##-## M4sh Initialization. ##-## --------------------- ##--# Be more Bourne compatible-DUALCASE=1; export DUALCASE # for MKS sh-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then- emulate sh- NULLCMD=:- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which- # is contrary to our usage. Disable this feature.- alias -g '${1+"$@"}'='"$@"'- setopt NO_GLOB_SUBST-else- case `(set -o) 2>/dev/null` in- *posix*) set -o posix ;;-esac--fi-----# PATH needs CR-# Avoid depending upon Character Ranges.-as_cr_letters='abcdefghijklmnopqrstuvwxyz'-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'-as_cr_Letters=$as_cr_letters$as_cr_LETTERS-as_cr_digits='0123456789'-as_cr_alnum=$as_cr_Letters$as_cr_digits--# The user is always right.-if test "${PATH_SEPARATOR+set}" != set; then- echo "#! /bin/sh" >conf$$.sh- echo "exit 0" >>conf$$.sh- chmod +x conf$$.sh- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then- PATH_SEPARATOR=';'- else- PATH_SEPARATOR=:- fi- rm -f conf$$.sh-fi--# Support unset when possible.-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then- as_unset=unset-else- as_unset=false-fi---# IFS-# We need space, tab and new line, in precisely that order. Quoting is-# there to prevent editors from complaining about space-tab.-# (If _AS_PATH_WALK were called with IFS unset, it would disable word-# splitting by setting IFS to empty value.)-as_nl='-'-IFS=" "" $as_nl"--# Find who we are. Look in the path if we contain no directory separator.-case $0 in- *[\\/]* ) as_myself=$0 ;;- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH-do- IFS=$as_save_IFS- test -z "$as_dir" && as_dir=.- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break-done-IFS=$as_save_IFS-- ;;-esac-# We did not find ourselves, most probably we were run as `sh COMMAND'-# in which case we are not to be found in the path.-if test "x$as_myself" = x; then- as_myself=$0-fi-if test ! -f "$as_myself"; then- echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2- { (exit 1); exit 1; }-fi--# Work around bugs in pre-3.0 UWIN ksh.-for as_var in ENV MAIL MAILPATH-do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var-done-PS1='$ '-PS2='> '-PS4='+ '--# NLS nuisances.-for as_var in \- LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \- LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \- LC_TELEPHONE LC_TIME-do- if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then- eval $as_var=C; export $as_var- else- ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var- fi-done--# Required to use basename.-if expr a : '\(a\)' >/dev/null 2>&1 &&- test "X`expr 00001 : '.*\(...\)'`" = X001; then- as_expr=expr-else- as_expr=false-fi--if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then- as_basename=basename-else- as_basename=false-fi---# Name of the executable.-as_me=`$as_basename -- "$0" ||-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \- X"$0" : 'X\(//\)$' \| \- X"$0" : 'X\(/\)' \| . 2>/dev/null ||-echo X/"$0" |- sed '/^.*\/\([^/][^/]*\)\/*$/{- s//\1/- q- }- /^X\/\(\/\/\)$/{- s//\1/- q- }- /^X\/\(\/\).*/{- s//\1/- q- }- s/.*/./; q'`--# CDPATH.-$as_unset CDPATH---- as_lineno_1=$LINENO- as_lineno_2=$LINENO- test "x$as_lineno_1" != "x$as_lineno_2" &&- test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {-- # Create $as_me.lineno as a copy of $as_myself, but with $LINENO- # uniformly replaced by the line number. The first 'sed' inserts a- # line-number line after each line using $LINENO; the second 'sed'- # does the real work. The second script uses 'N' to pair each- # line-number line with the line containing $LINENO, and appends- # trailing '-' during substitution so that $LINENO is not a special- # case at line end.- # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the- # scripts with optimization help from Paolo Bonzini. Blame Lee- # E. McMahon (1931-1989) for sed's syntax. :-)- sed -n '- p- /[$]LINENO/=- ' <$as_myself |- sed '- s/[$]LINENO.*/&-/- t lineno- b- :lineno- N- :loop- s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/- t loop- s/-\n.*//- ' >$as_me.lineno &&- chmod +x "$as_me.lineno" ||- { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2- { (exit 1); exit 1; }; }-- # Don't try to exec as it changes $[0], causing all sort of problems- # (the dirname of $[0] is not the place where we might find the- # original and so on. Autoconf is especially sensitive to this).- . "./$as_me.lineno"- # Exit status is that of the last command.- exit-}---if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then- as_dirname=dirname-else- as_dirname=false-fi--ECHO_C= ECHO_N= ECHO_T=-case `echo -n x` in--n*)- case `echo 'x\c'` in- *c*) ECHO_T=' ';; # ECHO_T is single tab character.- *) ECHO_C='\c';;- esac;;-*)- ECHO_N='-n';;-esac--if expr a : '\(a\)' >/dev/null 2>&1 &&- test "X`expr 00001 : '.*\(...\)'`" = X001; then- as_expr=expr-else- as_expr=false-fi--rm -f conf$$ conf$$.exe conf$$.file-if test -d conf$$.dir; then- rm -f conf$$.dir/conf$$.file-else- rm -f conf$$.dir- mkdir conf$$.dir-fi-echo >conf$$.file-if ln -s conf$$.file conf$$ 2>/dev/null; then- as_ln_s='ln -s'- # ... but there are two gotchas:- # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.- # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.- # In both cases, we have to default to `cp -p'.- ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||- as_ln_s='cp -p'-elif ln conf$$.file conf$$ 2>/dev/null; then- as_ln_s=ln-else- as_ln_s='cp -p'-fi-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file-rmdir conf$$.dir 2>/dev/null--if mkdir -p . 2>/dev/null; then- as_mkdir_p=:-else- test -d ./-p && rmdir ./-p- as_mkdir_p=false-fi--if test -x / >/dev/null 2>&1; then- as_test_x='test -x'-else- if ls -dL / >/dev/null 2>&1; then- as_ls_L_option=L- else- as_ls_L_option=- fi- as_test_x='- eval sh -c '\''- if test -d "$1"; then- test -d "$1/.";- else- case $1 in- -*)set "./$1";;- esac;- case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in- ???[sx]*):;;*)false;;esac;fi- '\'' sh- '-fi-as_executable_p=$as_test_x--# Sed expression to map a string onto a valid CPP name.-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"--# Sed expression to map a string onto a valid variable name.-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"---exec 6>&1--# Save the log message, to keep $[0] and so on meaningful, and to-# report actual input values of CONFIG_FILES etc. instead of their-# values after options handling.-ac_log="-This file was extended by Haskell CUDA bindings $as_me 0.3.2, which was-generated by GNU Autoconf 2.61. Invocation command line was-- CONFIG_FILES = $CONFIG_FILES- CONFIG_HEADERS = $CONFIG_HEADERS- CONFIG_LINKS = $CONFIG_LINKS- CONFIG_COMMANDS = $CONFIG_COMMANDS- $ $0 $@--on `(hostname || uname -n) 2>/dev/null | sed 1q`-"--_ACEOF--cat >>$CONFIG_STATUS <<_ACEOF-# Files that config.status was made for.-config_files="$ac_config_files"--_ACEOF--cat >>$CONFIG_STATUS <<\_ACEOF-ac_cs_usage="\-\`$as_me' instantiates files from templates according to the-current configuration.--Usage: $0 [OPTIONS] [FILE]...-- -h, --help print this help, then exit- -V, --version print version number and configuration settings, then exit- -q, --quiet do not print progress messages- -d, --debug don't remove temporary files- --recheck update $as_me by reconfiguring in the same conditions- --file=FILE[:TEMPLATE]- instantiate the configuration file FILE--Configuration files:-$config_files--Report bugs to <bug-autoconf@gnu.org>."--_ACEOF-cat >>$CONFIG_STATUS <<_ACEOF-ac_cs_version="\\-Haskell CUDA bindings config.status 0.3.2-configured by $0, generated by GNU Autoconf 2.61,- with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"--Copyright (C) 2006 Free Software Foundation, Inc.-This config.status script is free software; the Free Software Foundation-gives unlimited permission to copy, distribute and modify it."--ac_pwd='$ac_pwd'-srcdir='$srcdir'-_ACEOF--cat >>$CONFIG_STATUS <<\_ACEOF-# If no file are specified by the user, then we need to provide default-# value. By we need to know if files were specified by the user.-ac_need_defaults=:-while test $# != 0-do- case $1 in- --*=*)- ac_option=`expr "X$1" : 'X\([^=]*\)='`- ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`- ac_shift=:- ;;- *)- ac_option=$1- ac_optarg=$2- ac_shift=shift- ;;- esac-- case $ac_option in- # Handling of the options.- -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)- ac_cs_recheck=: ;;- --version | --versio | --versi | --vers | --ver | --ve | --v | -V )- echo "$ac_cs_version"; exit ;;- --debug | --debu | --deb | --de | --d | -d )- debug=: ;;- --file | --fil | --fi | --f )- $ac_shift- CONFIG_FILES="$CONFIG_FILES $ac_optarg"- ac_need_defaults=false;;- --he | --h | --help | --hel | -h )- echo "$ac_cs_usage"; exit ;;- -q | -quiet | --quiet | --quie | --qui | --qu | --q \- | -silent | --silent | --silen | --sile | --sil | --si | --s)- ac_cs_silent=: ;;-- # This is an error.- -*) { echo "$as_me: error: unrecognized option: $1-Try \`$0 --help' for more information." >&2- { (exit 1); exit 1; }; } ;;-- *) ac_config_targets="$ac_config_targets $1"- ac_need_defaults=false ;;-- esac- shift-done--ac_configure_extra_args=--if $ac_cs_silent; then- exec 6>/dev/null- ac_configure_extra_args="$ac_configure_extra_args --silent"-fi--_ACEOF-cat >>$CONFIG_STATUS <<_ACEOF-if \$ac_cs_recheck; then- echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6- CONFIG_SHELL=$SHELL- export CONFIG_SHELL- exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion-fi--_ACEOF-cat >>$CONFIG_STATUS <<\_ACEOF-exec 5>>config.log-{- echo- sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX-## Running $as_me. ##-_ASBOX- echo "$ac_log"-} >&5--_ACEOF-cat >>$CONFIG_STATUS <<_ACEOF-_ACEOF--cat >>$CONFIG_STATUS <<\_ACEOF--# Handling of arguments.-for ac_config_target in $ac_config_targets-do- case $ac_config_target in- "cuda.buildinfo") CONFIG_FILES="$CONFIG_FILES cuda.buildinfo" ;;-- *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5-echo "$as_me: error: invalid argument: $ac_config_target" >&2;}- { (exit 1); exit 1; }; };;- esac-done---# If the user did not use the arguments to specify the items to instantiate,-# then the envvar interface is used. Set only those that are not.-# We use the long form for the default assignment because of an extremely-# bizarre bug on SunOS 4.1.3.-if $ac_need_defaults; then- test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files-fi--# Have a temporary directory for convenience. Make it in the build tree-# simply because there is no reason against having it here, and in addition,-# creating and moving files from /tmp can sometimes cause problems.-# Hook for its removal unless debugging.-# Note that there is a small window in which the directory will not be cleaned:-# after its creation but before its name has been assigned to `$tmp'.-$debug ||-{- tmp=- trap 'exit_status=$?- { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status-' 0- trap '{ (exit 1); exit 1; }' 1 2 13 15-}-# Create a (secure) tmp directory for tmp files.--{- tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&- test -n "$tmp" && test -d "$tmp"-} ||-{- tmp=./conf$$-$RANDOM- (umask 077 && mkdir "$tmp")-} ||-{- echo "$me: cannot create a temporary directory in ." >&2- { (exit 1); exit 1; }-}--#-# Set up the sed scripts for CONFIG_FILES section.-#--# No need to generate the scripts if there are no CONFIG_FILES.-# This happens for instance when ./config.status config.h-if test -n "$CONFIG_FILES"; then--_ACEOF----ac_delim='%!_!# '-for ac_last_try in false false false false false :; do- cat >conf$$subs.sed <<_ACEOF-SHELL!$SHELL$ac_delim-PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim-PACKAGE_NAME!$PACKAGE_NAME$ac_delim-PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim-PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim-PACKAGE_STRING!$PACKAGE_STRING$ac_delim-PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim-exec_prefix!$exec_prefix$ac_delim-prefix!$prefix$ac_delim-program_transform_name!$program_transform_name$ac_delim-bindir!$bindir$ac_delim-sbindir!$sbindir$ac_delim-libexecdir!$libexecdir$ac_delim-datarootdir!$datarootdir$ac_delim-datadir!$datadir$ac_delim-sysconfdir!$sysconfdir$ac_delim-sharedstatedir!$sharedstatedir$ac_delim-localstatedir!$localstatedir$ac_delim-includedir!$includedir$ac_delim-oldincludedir!$oldincludedir$ac_delim-docdir!$docdir$ac_delim-infodir!$infodir$ac_delim-htmldir!$htmldir$ac_delim-dvidir!$dvidir$ac_delim-pdfdir!$pdfdir$ac_delim-psdir!$psdir$ac_delim-libdir!$libdir$ac_delim-localedir!$localedir$ac_delim-mandir!$mandir$ac_delim-DEFS!$DEFS$ac_delim-ECHO_C!$ECHO_C$ac_delim-ECHO_N!$ECHO_N$ac_delim-ECHO_T!$ECHO_T$ac_delim-LIBS!$LIBS$ac_delim-build_alias!$build_alias$ac_delim-host_alias!$host_alias$ac_delim-target_alias!$target_alias$ac_delim-CXX!$CXX$ac_delim-CXXFLAGS!$CXXFLAGS$ac_delim-LDFLAGS!$LDFLAGS$ac_delim-CPPFLAGS!$CPPFLAGS$ac_delim-ac_ct_CXX!$ac_ct_CXX$ac_delim-EXEEXT!$EXEEXT$ac_delim-OBJEXT!$OBJEXT$ac_delim-build!$build$ac_delim-build_cpu!$build_cpu$ac_delim-build_vendor!$build_vendor$ac_delim-build_os!$build_os$ac_delim-host!$host$ac_delim-host_cpu!$host_cpu$ac_delim-host_vendor!$host_vendor$ac_delim-host_os!$host_os$ac_delim-target!$target$ac_delim-target_cpu!$target_cpu$ac_delim-target_vendor!$target_vendor$ac_delim-target_os!$target_os$ac_delim-NVCC!$NVCC$ac_delim-CC!$CC$ac_delim-CFLAGS!$CFLAGS$ac_delim-ac_ct_CC!$ac_ct_CC$ac_delim-CPP!$CPP$ac_delim-GREP!$GREP$ac_delim-EGREP!$EGREP$ac_delim-cuda_cppflags!$cuda_cppflags$ac_delim-cuda_ldflags!$cuda_ldflags$ac_delim-cuda_c2hsflags!$cuda_c2hsflags$ac_delim-LIBOBJS!$LIBOBJS$ac_delim-LTLIBOBJS!$LTLIBOBJS$ac_delim-_ACEOF-- if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 68; then+# Generated by GNU Autoconf 2.61 for Haskell CUDA bindings 0.4.0.0.+#+# Report bugs to <tmcdonell@cse.unsw.edu.au>.+#+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,+# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.+# This configure script is free software; the Free Software Foundation+# gives unlimited permission to copy, distribute and modify it.+## --------------------- ##+## M4sh Initialization. ##+## --------------------- ##++# Be more Bourne compatible+DUALCASE=1; export DUALCASE # for MKS sh+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then+ emulate sh+ NULLCMD=:+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which+ # is contrary to our usage. Disable this feature.+ alias -g '${1+"$@"}'='"$@"'+ setopt NO_GLOB_SUBST+else+ case `(set -o) 2>/dev/null` in+ *posix*) set -o posix ;;+esac++fi+++++# PATH needs CR+# Avoid depending upon Character Ranges.+as_cr_letters='abcdefghijklmnopqrstuvwxyz'+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'+as_cr_Letters=$as_cr_letters$as_cr_LETTERS+as_cr_digits='0123456789'+as_cr_alnum=$as_cr_Letters$as_cr_digits++# The user is always right.+if test "${PATH_SEPARATOR+set}" != set; then+ echo "#! /bin/sh" >conf$$.sh+ echo "exit 0" >>conf$$.sh+ chmod +x conf$$.sh+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then+ PATH_SEPARATOR=';'+ else+ PATH_SEPARATOR=:+ fi+ rm -f conf$$.sh+fi++# Support unset when possible.+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then+ as_unset=unset+else+ as_unset=false+fi+++# IFS+# We need space, tab and new line, in precisely that order. Quoting is+# there to prevent editors from complaining about space-tab.+# (If _AS_PATH_WALK were called with IFS unset, it would disable word+# splitting by setting IFS to empty value.)+as_nl='+'+IFS=" "" $as_nl"++# Find who we are. Look in the path if we contain no directory separator.+case $0 in+ *[\\/]* ) as_myself=$0 ;;+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR+for as_dir in $PATH+do+ IFS=$as_save_IFS+ test -z "$as_dir" && as_dir=.+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break+done+IFS=$as_save_IFS++ ;;+esac+# We did not find ourselves, most probably we were run as `sh COMMAND'+# in which case we are not to be found in the path.+if test "x$as_myself" = x; then+ as_myself=$0+fi+if test ! -f "$as_myself"; then+ echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2+ { (exit 1); exit 1; }+fi++# Work around bugs in pre-3.0 UWIN ksh.+for as_var in ENV MAIL MAILPATH+do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var+done+PS1='$ '+PS2='> '+PS4='+ '++# NLS nuisances.+for as_var in \+ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \+ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \+ LC_TELEPHONE LC_TIME+do+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then+ eval $as_var=C; export $as_var+ else+ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var+ fi+done++# Required to use basename.+if expr a : '\(a\)' >/dev/null 2>&1 &&+ test "X`expr 00001 : '.*\(...\)'`" = X001; then+ as_expr=expr+else+ as_expr=false+fi++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then+ as_basename=basename+else+ as_basename=false+fi+++# Name of the executable.+as_me=`$as_basename -- "$0" ||+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \+ X"$0" : 'X\(//\)$' \| \+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||+echo X/"$0" |+ sed '/^.*\/\([^/][^/]*\)\/*$/{+ s//\1/+ q+ }+ /^X\/\(\/\/\)$/{+ s//\1/+ q+ }+ /^X\/\(\/\).*/{+ s//\1/+ q+ }+ s/.*/./; q'`++# CDPATH.+$as_unset CDPATH+++if test "x$CONFIG_SHELL" = x; then+ if (eval ":") 2>/dev/null; then+ as_have_required=yes+else+ as_have_required=no+fi++ if test $as_have_required = yes && (eval ":+(as_func_return () {+ (exit \$1)+}+as_func_success () {+ as_func_return 0+}+as_func_failure () {+ as_func_return 1+}+as_func_ret_success () {+ return 0+}+as_func_ret_failure () {+ return 1+}++exitcode=0+if as_func_success; then+ :+else+ exitcode=1+ echo as_func_success failed.+fi++if as_func_failure; then+ exitcode=1+ echo as_func_failure succeeded.+fi++if as_func_ret_success; then+ :+else+ exitcode=1+ echo as_func_ret_success failed.+fi++if as_func_ret_failure; then+ exitcode=1+ echo as_func_ret_failure succeeded.+fi++if ( set x; as_func_ret_success y && test x = \"\$1\" ); then+ :+else+ exitcode=1+ echo positional parameters were not saved.+fi++test \$exitcode = 0) || { (exit 1); exit 1; }++(+ as_lineno_1=\$LINENO+ as_lineno_2=\$LINENO+ test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" &&+ test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; }+") 2> /dev/null; then+ :+else+ as_candidate_shells=+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH+do+ IFS=$as_save_IFS+ test -z "$as_dir" && as_dir=.+ case $as_dir in+ /*)+ for as_base in sh bash ksh sh5; do+ as_candidate_shells="$as_candidate_shells $as_dir/$as_base"+ done;;+ esac+done+IFS=$as_save_IFS+++ for as_shell in $as_candidate_shells $SHELL; do+ # Try only shells that exist, to save several forks.+ if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&+ { ("$as_shell") 2> /dev/null <<\_ASEOF+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then+ emulate sh+ NULLCMD=:+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which+ # is contrary to our usage. Disable this feature.+ alias -g '${1+"$@"}'='"$@"'+ setopt NO_GLOB_SUBST+else+ case `(set -o) 2>/dev/null` in+ *posix*) set -o posix ;;+esac++fi+++:+_ASEOF+}; then+ CONFIG_SHELL=$as_shell+ as_have_required=yes+ if { "$as_shell" 2> /dev/null <<\_ASEOF+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then+ emulate sh+ NULLCMD=:+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which+ # is contrary to our usage. Disable this feature.+ alias -g '${1+"$@"}'='"$@"'+ setopt NO_GLOB_SUBST+else+ case `(set -o) 2>/dev/null` in+ *posix*) set -o posix ;;+esac++fi+++:+(as_func_return () {+ (exit $1)+}+as_func_success () {+ as_func_return 0+}+as_func_failure () {+ as_func_return 1+}+as_func_ret_success () {+ return 0+}+as_func_ret_failure () {+ return 1+}++exitcode=0+if as_func_success; then+ :+else+ exitcode=1+ echo as_func_success failed.+fi++if as_func_failure; then+ exitcode=1+ echo as_func_failure succeeded.+fi++if as_func_ret_success; then+ :+else+ exitcode=1+ echo as_func_ret_success failed.+fi++if as_func_ret_failure; then+ exitcode=1+ echo as_func_ret_failure succeeded.+fi++if ( set x; as_func_ret_success y && test x = "$1" ); then+ :+else+ exitcode=1+ echo positional parameters were not saved.+fi++test $exitcode = 0) || { (exit 1); exit 1; }++(+ as_lineno_1=$LINENO+ as_lineno_2=$LINENO+ test "x$as_lineno_1" != "x$as_lineno_2" &&+ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; }++_ASEOF+}; then+ break+fi++fi++ done++ if test "x$CONFIG_SHELL" != x; then+ for as_var in BASH_ENV ENV+ do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var+ done+ export CONFIG_SHELL+ exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}+fi+++ if test $as_have_required = no; then+ echo This script requires a shell more modern than all the+ echo shells that I found on your system. Please install a+ echo modern shell, or manually run the script under such a+ echo shell if you do have one.+ { (exit 1); exit 1; }+fi+++fi++fi++++(eval "as_func_return () {+ (exit \$1)+}+as_func_success () {+ as_func_return 0+}+as_func_failure () {+ as_func_return 1+}+as_func_ret_success () {+ return 0+}+as_func_ret_failure () {+ return 1+}++exitcode=0+if as_func_success; then+ :+else+ exitcode=1+ echo as_func_success failed.+fi++if as_func_failure; then+ exitcode=1+ echo as_func_failure succeeded.+fi++if as_func_ret_success; then+ :+else+ exitcode=1+ echo as_func_ret_success failed.+fi++if as_func_ret_failure; then+ exitcode=1+ echo as_func_ret_failure succeeded.+fi++if ( set x; as_func_ret_success y && test x = \"\$1\" ); then+ :+else+ exitcode=1+ echo positional parameters were not saved.+fi++test \$exitcode = 0") || {+ echo No shell found that supports shell functions.+ echo Please tell autoconf@gnu.org about your system,+ echo including any error possibly output before this+ echo message+}++++ as_lineno_1=$LINENO+ as_lineno_2=$LINENO+ test "x$as_lineno_1" != "x$as_lineno_2" &&+ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {++ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO+ # uniformly replaced by the line number. The first 'sed' inserts a+ # line-number line after each line using $LINENO; the second 'sed'+ # does the real work. The second script uses 'N' to pair each+ # line-number line with the line containing $LINENO, and appends+ # trailing '-' during substitution so that $LINENO is not a special+ # case at line end.+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the+ # scripts with optimization help from Paolo Bonzini. Blame Lee+ # E. McMahon (1931-1989) for sed's syntax. :-)+ sed -n '+ p+ /[$]LINENO/=+ ' <$as_myself |+ sed '+ s/[$]LINENO.*/&-/+ t lineno+ b+ :lineno+ N+ :loop+ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/+ t loop+ s/-\n.*//+ ' >$as_me.lineno &&+ chmod +x "$as_me.lineno" ||+ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2+ { (exit 1); exit 1; }; }++ # Don't try to exec as it changes $[0], causing all sort of problems+ # (the dirname of $[0] is not the place where we might find the+ # original and so on. Autoconf is especially sensitive to this).+ . "./$as_me.lineno"+ # Exit status is that of the last command.+ exit+}+++if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then+ as_dirname=dirname+else+ as_dirname=false+fi++ECHO_C= ECHO_N= ECHO_T=+case `echo -n x` in+-n*)+ case `echo 'x\c'` in+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.+ *) ECHO_C='\c';;+ esac;;+*)+ ECHO_N='-n';;+esac++if expr a : '\(a\)' >/dev/null 2>&1 &&+ test "X`expr 00001 : '.*\(...\)'`" = X001; then+ as_expr=expr+else+ as_expr=false+fi++rm -f conf$$ conf$$.exe conf$$.file+if test -d conf$$.dir; then+ rm -f conf$$.dir/conf$$.file+else+ rm -f conf$$.dir+ mkdir conf$$.dir+fi+echo >conf$$.file+if ln -s conf$$.file conf$$ 2>/dev/null; then+ as_ln_s='ln -s'+ # ... but there are two gotchas:+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.+ # In both cases, we have to default to `cp -p'.+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||+ as_ln_s='cp -p'+elif ln conf$$.file conf$$ 2>/dev/null; then+ as_ln_s=ln+else+ as_ln_s='cp -p'+fi+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file+rmdir conf$$.dir 2>/dev/null++if mkdir -p . 2>/dev/null; then+ as_mkdir_p=:+else+ test -d ./-p && rmdir ./-p+ as_mkdir_p=false+fi++if test -x / >/dev/null 2>&1; then+ as_test_x='test -x'+else+ if ls -dL / >/dev/null 2>&1; then+ as_ls_L_option=L+ else+ as_ls_L_option=+ fi+ as_test_x='+ eval sh -c '\''+ if test -d "$1"; then+ test -d "$1/.";+ else+ case $1 in+ -*)set "./$1";;+ esac;+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in+ ???[sx]*):;;*)false;;esac;fi+ '\'' sh+ '+fi+as_executable_p=$as_test_x++# Sed expression to map a string onto a valid CPP name.+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"++# Sed expression to map a string onto a valid variable name.+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"++++exec 7<&0 </dev/null 6>&1++# Name of the host.+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,+# so uname gets run too.+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`++#+# Initializations.+#+ac_default_prefix=/usr/local+ac_clean_files=+ac_config_libobj_dir=.+LIBOBJS=+cross_compiling=no+subdirs=+MFLAGS=+MAKEFLAGS=+SHELL=${CONFIG_SHELL-/bin/sh}++# Identity of this package.+PACKAGE_NAME='Haskell CUDA bindings'+PACKAGE_TARNAME='cuda'+PACKAGE_VERSION='0.4.0.0'+PACKAGE_STRING='Haskell CUDA bindings 0.4.0.0'+PACKAGE_BUGREPORT='tmcdonell@cse.unsw.edu.au'++ac_unique_file="Foreign/CUDA.hs"+# Factoring default headers for most tests.+ac_includes_default="\+#include <stdio.h>+#ifdef HAVE_SYS_TYPES_H+# include <sys/types.h>+#endif+#ifdef HAVE_SYS_STAT_H+# include <sys/stat.h>+#endif+#ifdef STDC_HEADERS+# include <stdlib.h>+# include <stddef.h>+#else+# ifdef HAVE_STDLIB_H+# include <stdlib.h>+# endif+#endif+#ifdef HAVE_STRING_H+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H+# include <memory.h>+# endif+# include <string.h>+#endif+#ifdef HAVE_STRINGS_H+# include <strings.h>+#endif+#ifdef HAVE_INTTYPES_H+# include <inttypes.h>+#endif+#ifdef HAVE_STDINT_H+# include <stdint.h>+#endif+#ifdef HAVE_UNISTD_H+# include <unistd.h>+#endif"++ac_subst_vars='SHELL+PATH_SEPARATOR+PACKAGE_NAME+PACKAGE_TARNAME+PACKAGE_VERSION+PACKAGE_STRING+PACKAGE_BUGREPORT+exec_prefix+prefix+program_transform_name+bindir+sbindir+libexecdir+datarootdir+datadir+sysconfdir+sharedstatedir+localstatedir+includedir+oldincludedir+docdir+infodir+htmldir+dvidir+pdfdir+psdir+libdir+localedir+mandir+DEFS+ECHO_C+ECHO_N+ECHO_T+LIBS+build_alias+host_alias+target_alias+CC+CFLAGS+LDFLAGS+CPPFLAGS+ac_ct_CC+EXEEXT+OBJEXT+build+build_cpu+build_vendor+build_os+host+host_cpu+host_vendor+host_os+target+target_cpu+target_vendor+target_os+NVCC+CPP+GREP+EGREP+cuda_cppflags+cuda_ldflags+cuda_c2hsflags+LIBOBJS+LTLIBOBJS'+ac_subst_files=''+ ac_precious_vars='build_alias+host_alias+target_alias+CC+CFLAGS+LDFLAGS+LIBS+CPPFLAGS+CPP'+++# Initialize some variables set by options.+ac_init_help=+ac_init_version=false+# The variables have the same names as the options, with+# dashes changed to underlines.+cache_file=/dev/null+exec_prefix=NONE+no_create=+no_recursion=+prefix=NONE+program_prefix=NONE+program_suffix=NONE+program_transform_name=s,x,x,+silent=+site=+srcdir=+verbose=+x_includes=NONE+x_libraries=NONE++# Installation directory options.+# These are left unexpanded so users can "make install exec_prefix=/foo"+# and all the variables that are supposed to be based on exec_prefix+# by default will actually change.+# Use braces instead of parens because sh, perl, etc. also accept them.+# (The list follows the same order as the GNU Coding Standards.)+bindir='${exec_prefix}/bin'+sbindir='${exec_prefix}/sbin'+libexecdir='${exec_prefix}/libexec'+datarootdir='${prefix}/share'+datadir='${datarootdir}'+sysconfdir='${prefix}/etc'+sharedstatedir='${prefix}/com'+localstatedir='${prefix}/var'+includedir='${prefix}/include'+oldincludedir='/usr/include'+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'+infodir='${datarootdir}/info'+htmldir='${docdir}'+dvidir='${docdir}'+pdfdir='${docdir}'+psdir='${docdir}'+libdir='${exec_prefix}/lib'+localedir='${datarootdir}/locale'+mandir='${datarootdir}/man'++ac_prev=+ac_dashdash=+for ac_option+do+ # If the previous option needs an argument, assign it.+ if test -n "$ac_prev"; then+ eval $ac_prev=\$ac_option+ ac_prev=+ continue+ fi++ case $ac_option in+ *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;+ *) ac_optarg=yes ;;+ esac++ # Accept the important Cygnus configure options, so we can diagnose typos.++ case $ac_dashdash$ac_option in+ --)+ ac_dashdash=yes ;;++ -bindir | --bindir | --bindi | --bind | --bin | --bi)+ ac_prev=bindir ;;+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)+ bindir=$ac_optarg ;;++ -build | --build | --buil | --bui | --bu)+ ac_prev=build_alias ;;+ -build=* | --build=* | --buil=* | --bui=* | --bu=*)+ build_alias=$ac_optarg ;;++ -cache-file | --cache-file | --cache-fil | --cache-fi \+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)+ ac_prev=cache_file ;;+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)+ cache_file=$ac_optarg ;;++ --config-cache | -C)+ cache_file=config.cache ;;++ -datadir | --datadir | --datadi | --datad)+ ac_prev=datadir ;;+ -datadir=* | --datadir=* | --datadi=* | --datad=*)+ datadir=$ac_optarg ;;++ -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \+ | --dataroo | --dataro | --datar)+ ac_prev=datarootdir ;;+ -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \+ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)+ datarootdir=$ac_optarg ;;++ -disable-* | --disable-*)+ ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`+ # Reject names that are not valid shell variable names.+ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2+ { (exit 1); exit 1; }; }+ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`+ eval enable_$ac_feature=no ;;++ -docdir | --docdir | --docdi | --doc | --do)+ ac_prev=docdir ;;+ -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)+ docdir=$ac_optarg ;;++ -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)+ ac_prev=dvidir ;;+ -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)+ dvidir=$ac_optarg ;;++ -enable-* | --enable-*)+ ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`+ # Reject names that are not valid shell variable names.+ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2+ { (exit 1); exit 1; }; }+ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`+ eval enable_$ac_feature=\$ac_optarg ;;++ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \+ | --exec | --exe | --ex)+ ac_prev=exec_prefix ;;+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \+ | --exec=* | --exe=* | --ex=*)+ exec_prefix=$ac_optarg ;;++ -gas | --gas | --ga | --g)+ # Obsolete; use --with-gas.+ with_gas=yes ;;++ -help | --help | --hel | --he | -h)+ ac_init_help=long ;;+ -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)+ ac_init_help=recursive ;;+ -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)+ ac_init_help=short ;;++ -host | --host | --hos | --ho)+ ac_prev=host_alias ;;+ -host=* | --host=* | --hos=* | --ho=*)+ host_alias=$ac_optarg ;;++ -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)+ ac_prev=htmldir ;;+ -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \+ | --ht=*)+ htmldir=$ac_optarg ;;++ -includedir | --includedir | --includedi | --included | --include \+ | --includ | --inclu | --incl | --inc)+ ac_prev=includedir ;;+ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \+ | --includ=* | --inclu=* | --incl=* | --inc=*)+ includedir=$ac_optarg ;;++ -infodir | --infodir | --infodi | --infod | --info | --inf)+ ac_prev=infodir ;;+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)+ infodir=$ac_optarg ;;++ -libdir | --libdir | --libdi | --libd)+ ac_prev=libdir ;;+ -libdir=* | --libdir=* | --libdi=* | --libd=*)+ libdir=$ac_optarg ;;++ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \+ | --libexe | --libex | --libe)+ ac_prev=libexecdir ;;+ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \+ | --libexe=* | --libex=* | --libe=*)+ libexecdir=$ac_optarg ;;++ -localedir | --localedir | --localedi | --localed | --locale)+ ac_prev=localedir ;;+ -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)+ localedir=$ac_optarg ;;++ -localstatedir | --localstatedir | --localstatedi | --localstated \+ | --localstate | --localstat | --localsta | --localst | --locals)+ ac_prev=localstatedir ;;+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \+ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)+ localstatedir=$ac_optarg ;;++ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)+ ac_prev=mandir ;;+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)+ mandir=$ac_optarg ;;++ -nfp | --nfp | --nf)+ # Obsolete; use --without-fp.+ with_fp=no ;;++ -no-create | --no-create | --no-creat | --no-crea | --no-cre \+ | --no-cr | --no-c | -n)+ no_create=yes ;;++ -no-recursion | --no-recursion | --no-recursio | --no-recursi \+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)+ no_recursion=yes ;;++ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \+ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \+ | --oldin | --oldi | --old | --ol | --o)+ ac_prev=oldincludedir ;;+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)+ oldincludedir=$ac_optarg ;;++ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)+ ac_prev=prefix ;;+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)+ prefix=$ac_optarg ;;++ -program-prefix | --program-prefix | --program-prefi | --program-pref \+ | --program-pre | --program-pr | --program-p)+ ac_prev=program_prefix ;;+ -program-prefix=* | --program-prefix=* | --program-prefi=* \+ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)+ program_prefix=$ac_optarg ;;++ -program-suffix | --program-suffix | --program-suffi | --program-suff \+ | --program-suf | --program-su | --program-s)+ ac_prev=program_suffix ;;+ -program-suffix=* | --program-suffix=* | --program-suffi=* \+ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)+ program_suffix=$ac_optarg ;;++ -program-transform-name | --program-transform-name \+ | --program-transform-nam | --program-transform-na \+ | --program-transform-n | --program-transform- \+ | --program-transform | --program-transfor \+ | --program-transfo | --program-transf \+ | --program-trans | --program-tran \+ | --progr-tra | --program-tr | --program-t)+ ac_prev=program_transform_name ;;+ -program-transform-name=* | --program-transform-name=* \+ | --program-transform-nam=* | --program-transform-na=* \+ | --program-transform-n=* | --program-transform-=* \+ | --program-transform=* | --program-transfor=* \+ | --program-transfo=* | --program-transf=* \+ | --program-trans=* | --program-tran=* \+ | --progr-tra=* | --program-tr=* | --program-t=*)+ program_transform_name=$ac_optarg ;;++ -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)+ ac_prev=pdfdir ;;+ -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)+ pdfdir=$ac_optarg ;;++ -psdir | --psdir | --psdi | --psd | --ps)+ ac_prev=psdir ;;+ -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)+ psdir=$ac_optarg ;;++ -q | -quiet | --quiet | --quie | --qui | --qu | --q \+ | -silent | --silent | --silen | --sile | --sil)+ silent=yes ;;++ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)+ ac_prev=sbindir ;;+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \+ | --sbi=* | --sb=*)+ sbindir=$ac_optarg ;;++ -sharedstatedir | --sharedstatedir | --sharedstatedi \+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \+ | --sharedst | --shareds | --shared | --share | --shar \+ | --sha | --sh)+ ac_prev=sharedstatedir ;;+ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \+ | --sha=* | --sh=*)+ sharedstatedir=$ac_optarg ;;++ -site | --site | --sit)+ ac_prev=site ;;+ -site=* | --site=* | --sit=*)+ site=$ac_optarg ;;++ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)+ ac_prev=srcdir ;;+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)+ srcdir=$ac_optarg ;;++ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \+ | --syscon | --sysco | --sysc | --sys | --sy)+ ac_prev=sysconfdir ;;+ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \+ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)+ sysconfdir=$ac_optarg ;;++ -target | --target | --targe | --targ | --tar | --ta | --t)+ ac_prev=target_alias ;;+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)+ target_alias=$ac_optarg ;;++ -v | -verbose | --verbose | --verbos | --verbo | --verb)+ verbose=yes ;;++ -version | --version | --versio | --versi | --vers | -V)+ ac_init_version=: ;;++ -with-* | --with-*)+ ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`+ # Reject names that are not valid shell variable names.+ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&+ { echo "$as_me: error: invalid package name: $ac_package" >&2+ { (exit 1); exit 1; }; }+ ac_package=`echo $ac_package | sed 's/[-.]/_/g'`+ eval with_$ac_package=\$ac_optarg ;;++ -without-* | --without-*)+ ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`+ # Reject names that are not valid shell variable names.+ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&+ { echo "$as_me: error: invalid package name: $ac_package" >&2+ { (exit 1); exit 1; }; }+ ac_package=`echo $ac_package | sed 's/[-.]/_/g'`+ eval with_$ac_package=no ;;++ --x)+ # Obsolete; use --with-x.+ with_x=yes ;;++ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \+ | --x-incl | --x-inc | --x-in | --x-i)+ ac_prev=x_includes ;;+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)+ x_includes=$ac_optarg ;;++ -x-libraries | --x-libraries | --x-librarie | --x-librari \+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)+ ac_prev=x_libraries ;;+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)+ x_libraries=$ac_optarg ;;++ -*) { echo "$as_me: error: unrecognized option: $ac_option+Try \`$0 --help' for more information." >&2+ { (exit 1); exit 1; }; }+ ;;++ *=*)+ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`+ # Reject names that are not valid shell variable names.+ expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&+ { echo "$as_me: error: invalid variable name: $ac_envvar" >&2+ { (exit 1); exit 1; }; }+ eval $ac_envvar=\$ac_optarg+ export $ac_envvar ;;++ *)+ # FIXME: should be removed in autoconf 3.0.+ echo "$as_me: WARNING: you should use --build, --host, --target" >&2+ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&+ echo "$as_me: WARNING: invalid host type: $ac_option" >&2+ : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}+ ;;++ esac+done++if test -n "$ac_prev"; then+ ac_option=--`echo $ac_prev | sed 's/_/-/g'`+ { echo "$as_me: error: missing argument to $ac_option" >&2+ { (exit 1); exit 1; }; }+fi++# Be sure to have absolute directory names.+for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \+ datadir sysconfdir sharedstatedir localstatedir includedir \+ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \+ libdir localedir mandir+do+ eval ac_val=\$$ac_var+ case $ac_val in+ [\\/$]* | ?:[\\/]* ) continue;;+ NONE | '' ) case $ac_var in *prefix ) continue;; esac;;+ esac+ { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2+ { (exit 1); exit 1; }; }+done++# There might be people who depend on the old broken behavior: `$host'+# used to hold the argument of --host etc.+# FIXME: To remove some day.+build=$build_alias+host=$host_alias+target=$target_alias++# FIXME: To remove some day.+if test "x$host_alias" != x; then+ if test "x$build_alias" = x; then+ cross_compiling=maybe+ echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.+ If a cross compiler is detected then cross compile mode will be used." >&2+ elif test "x$build_alias" != "x$host_alias"; then+ cross_compiling=yes+ fi+fi++ac_tool_prefix=+test -n "$host_alias" && ac_tool_prefix=$host_alias-++test "$silent" = yes && exec 6>/dev/null+++ac_pwd=`pwd` && test -n "$ac_pwd" &&+ac_ls_di=`ls -di .` &&+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||+ { echo "$as_me: error: Working directory cannot be determined" >&2+ { (exit 1); exit 1; }; }+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||+ { echo "$as_me: error: pwd does not report name of working directory" >&2+ { (exit 1); exit 1; }; }+++# Find the source files, if location was not specified.+if test -z "$srcdir"; then+ ac_srcdir_defaulted=yes+ # Try the directory containing this script, then the parent directory.+ ac_confdir=`$as_dirname -- "$0" ||+$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \+ X"$0" : 'X\(//\)[^/]' \| \+ X"$0" : 'X\(//\)$' \| \+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||+echo X"$0" |+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{+ s//\1/+ q+ }+ /^X\(\/\/\)[^/].*/{+ s//\1/+ q+ }+ /^X\(\/\/\)$/{+ s//\1/+ q+ }+ /^X\(\/\).*/{+ s//\1/+ q+ }+ s/.*/./; q'`+ srcdir=$ac_confdir+ if test ! -r "$srcdir/$ac_unique_file"; then+ srcdir=..+ fi+else+ ac_srcdir_defaulted=no+fi+if test ! -r "$srcdir/$ac_unique_file"; then+ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."+ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2+ { (exit 1); exit 1; }; }+fi+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"+ac_abs_confdir=`(+ cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2+ { (exit 1); exit 1; }; }+ pwd)`+# When building in place, set srcdir=.+if test "$ac_abs_confdir" = "$ac_pwd"; then+ srcdir=.+fi+# Remove unnecessary trailing slashes from srcdir.+# Double slashes in file names in object file debugging info+# mess up M-x gdb in Emacs.+case $srcdir in+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;+esac+for ac_var in $ac_precious_vars; do+ eval ac_env_${ac_var}_set=\${${ac_var}+set}+ eval ac_env_${ac_var}_value=\$${ac_var}+ eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}+ eval ac_cv_env_${ac_var}_value=\$${ac_var}+done++#+# Report the --help message.+#+if test "$ac_init_help" = "long"; then+ # Omit some internal or obsolete options to make the list less imposing.+ # This message is too long to be a string in the A/UX 3.1 sh.+ cat <<_ACEOF+\`configure' configures Haskell CUDA bindings 0.4.0.0 to adapt to many kinds of systems.++Usage: $0 [OPTION]... [VAR=VALUE]...++To assign environment variables (e.g., CC, CFLAGS...), specify them as+VAR=VALUE. See below for descriptions of some of the useful variables.++Defaults for the options are specified in brackets.++Configuration:+ -h, --help display this help and exit+ --help=short display options specific to this package+ --help=recursive display the short help of all the included packages+ -V, --version display version information and exit+ -q, --quiet, --silent do not print \`checking...' messages+ --cache-file=FILE cache test results in FILE [disabled]+ -C, --config-cache alias for \`--cache-file=config.cache'+ -n, --no-create do not create output files+ --srcdir=DIR find the sources in DIR [configure dir or \`..']++Installation directories:+ --prefix=PREFIX install architecture-independent files in PREFIX+ [$ac_default_prefix]+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX+ [PREFIX]++By default, \`make install' will install all the files in+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify+an installation prefix other than \`$ac_default_prefix' using \`--prefix',+for instance \`--prefix=\$HOME'.++For better control, use the options below.++Fine tuning of the installation directories:+ --bindir=DIR user executables [EPREFIX/bin]+ --sbindir=DIR system admin executables [EPREFIX/sbin]+ --libexecdir=DIR program executables [EPREFIX/libexec]+ --sysconfdir=DIR read-only single-machine data [PREFIX/etc]+ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]+ --localstatedir=DIR modifiable single-machine data [PREFIX/var]+ --libdir=DIR object code libraries [EPREFIX/lib]+ --includedir=DIR C header files [PREFIX/include]+ --oldincludedir=DIR C header files for non-gcc [/usr/include]+ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]+ --datadir=DIR read-only architecture-independent data [DATAROOTDIR]+ --infodir=DIR info documentation [DATAROOTDIR/info]+ --localedir=DIR locale-dependent data [DATAROOTDIR/locale]+ --mandir=DIR man documentation [DATAROOTDIR/man]+ --docdir=DIR documentation root [DATAROOTDIR/doc/cuda]+ --htmldir=DIR html documentation [DOCDIR]+ --dvidir=DIR dvi documentation [DOCDIR]+ --pdfdir=DIR pdf documentation [DOCDIR]+ --psdir=DIR ps documentation [DOCDIR]+_ACEOF++ cat <<\_ACEOF++System types:+ --build=BUILD configure for building on BUILD [guessed]+ --host=HOST cross-compile to build programs to run on HOST [BUILD]+ --target=TARGET configure for building compilers for TARGET [HOST]+_ACEOF+fi++if test -n "$ac_init_help"; then+ case $ac_init_help in+ short | recursive ) echo "Configuration of Haskell CUDA bindings 0.4.0.0:";;+ esac+ cat <<\_ACEOF++Some influential environment variables:+ CC C compiler command+ CFLAGS C compiler flags+ LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a+ nonstandard directory <lib dir>+ LIBS libraries to pass to the linker, e.g. -l<library>+ CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if+ you have headers in a nonstandard directory <include dir>+ CPP C preprocessor++Use these variables to override the choices made by `configure' or to help+it to find libraries and programs with nonstandard names/locations.++Report bugs to <tmcdonell@cse.unsw.edu.au>.+_ACEOF+ac_status=$?+fi++if test "$ac_init_help" = "recursive"; then+ # If there are subdirs, report their specific --help.+ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue+ test -d "$ac_dir" || continue+ ac_builddir=.++case "$ac_dir" in+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;+*)+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`+ # A ".." for each directory in $ac_dir_suffix.+ ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`+ case $ac_top_builddir_sub in+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;+ esac ;;+esac+ac_abs_top_builddir=$ac_pwd+ac_abs_builddir=$ac_pwd$ac_dir_suffix+# for backward compatibility:+ac_top_builddir=$ac_top_build_prefix++case $srcdir in+ .) # We are building in place.+ ac_srcdir=.+ ac_top_srcdir=$ac_top_builddir_sub+ ac_abs_top_srcdir=$ac_pwd ;;+ [\\/]* | ?:[\\/]* ) # Absolute name.+ ac_srcdir=$srcdir$ac_dir_suffix;+ ac_top_srcdir=$srcdir+ ac_abs_top_srcdir=$srcdir ;;+ *) # Relative name.+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix+ ac_top_srcdir=$ac_top_build_prefix$srcdir+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;+esac+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix++ cd "$ac_dir" || { ac_status=$?; continue; }+ # Check for guested configure.+ if test -f "$ac_srcdir/configure.gnu"; then+ echo &&+ $SHELL "$ac_srcdir/configure.gnu" --help=recursive+ elif test -f "$ac_srcdir/configure"; then+ echo &&+ $SHELL "$ac_srcdir/configure" --help=recursive+ else+ echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2+ fi || ac_status=$?+ cd "$ac_pwd" || { ac_status=$?; break; }+ done+fi++test -n "$ac_init_help" && exit $ac_status+if $ac_init_version; then+ cat <<\_ACEOF+Haskell CUDA bindings configure 0.4.0.0+generated by GNU Autoconf 2.61++Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,+2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.+This configure script is free software; the Free Software Foundation+gives unlimited permission to copy, distribute and modify it.+_ACEOF+ exit+fi+cat >config.log <<_ACEOF+This file contains any messages produced by compilers while+running configure, to aid debugging if configure makes a mistake.++It was created by Haskell CUDA bindings $as_me 0.4.0.0, which was+generated by GNU Autoconf 2.61. Invocation command line was++ $ $0 $@++_ACEOF+exec 5>>config.log+{+cat <<_ASUNAME+## --------- ##+## Platform. ##+## --------- ##++hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`+uname -m = `(uname -m) 2>/dev/null || echo unknown`+uname -r = `(uname -r) 2>/dev/null || echo unknown`+uname -s = `(uname -s) 2>/dev/null || echo unknown`+uname -v = `(uname -v) 2>/dev/null || echo unknown`++/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`+/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`++/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`+/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown`+/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`+/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`++_ASUNAME++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR+for as_dir in $PATH+do+ IFS=$as_save_IFS+ test -z "$as_dir" && as_dir=.+ echo "PATH: $as_dir"+done+IFS=$as_save_IFS++} >&5++cat >&5 <<_ACEOF+++## ----------- ##+## Core tests. ##+## ----------- ##++_ACEOF+++# Keep a trace of the command line.+# Strip out --no-create and --no-recursion so they do not pile up.+# Strip out --silent because we don't want to record it for future runs.+# Also quote any args containing shell meta-characters.+# Make two passes to allow for proper duplicate-argument suppression.+ac_configure_args=+ac_configure_args0=+ac_configure_args1=+ac_must_keep_next=false+for ac_pass in 1 2+do+ for ac_arg+ do+ case $ac_arg in+ -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \+ | -silent | --silent | --silen | --sile | --sil)+ continue ;;+ *\'*)+ ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;+ esac+ case $ac_pass in+ 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;+ 2)+ ac_configure_args1="$ac_configure_args1 '$ac_arg'"+ if test $ac_must_keep_next = true; then+ ac_must_keep_next=false # Got value, back to normal.+ else+ case $ac_arg in+ *=* | --config-cache | -C | -disable-* | --disable-* \+ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \+ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \+ | -with-* | --with-* | -without-* | --without-* | --x)+ case "$ac_configure_args0 " in+ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;+ esac+ ;;+ -* ) ac_must_keep_next=true ;;+ esac+ fi+ ac_configure_args="$ac_configure_args '$ac_arg'"+ ;;+ esac+ done+done+$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }+$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }++# When interrupted or exit'd, cleanup temporary files, and complete+# config.log. We remove comments because anyway the quotes in there+# would cause problems or look ugly.+# WARNING: Use '\'' to represent an apostrophe within the trap.+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.+trap 'exit_status=$?+ # Save into config.log some information that might help in debugging.+ {+ echo++ cat <<\_ASBOX+## ---------------- ##+## Cache variables. ##+## ---------------- ##+_ASBOX+ echo+ # The following way of writing the cache mishandles newlines in values,+(+ for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do+ eval ac_val=\$$ac_var+ case $ac_val in #(+ *${as_nl}*)+ case $ac_var in #(+ *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5+echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;+ esac+ case $ac_var in #(+ _ | IFS | as_nl) ;; #(+ *) $as_unset $ac_var ;;+ esac ;;+ esac+ done+ (set) 2>&1 |+ case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(+ *${as_nl}ac_space=\ *)+ sed -n \+ "s/'\''/'\''\\\\'\'''\''/g;+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"+ ;; #(+ *)+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"+ ;;+ esac |+ sort+)+ echo++ cat <<\_ASBOX+## ----------------- ##+## Output variables. ##+## ----------------- ##+_ASBOX+ echo+ for ac_var in $ac_subst_vars+ do+ eval ac_val=\$$ac_var+ case $ac_val in+ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;+ esac+ echo "$ac_var='\''$ac_val'\''"+ done | sort+ echo++ if test -n "$ac_subst_files"; then+ cat <<\_ASBOX+## ------------------- ##+## File substitutions. ##+## ------------------- ##+_ASBOX+ echo+ for ac_var in $ac_subst_files+ do+ eval ac_val=\$$ac_var+ case $ac_val in+ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;+ esac+ echo "$ac_var='\''$ac_val'\''"+ done | sort+ echo+ fi++ if test -s confdefs.h; then+ cat <<\_ASBOX+## ----------- ##+## confdefs.h. ##+## ----------- ##+_ASBOX+ echo+ cat confdefs.h+ echo+ fi+ test "$ac_signal" != 0 &&+ echo "$as_me: caught signal $ac_signal"+ echo "$as_me: exit $exit_status"+ } >&5+ rm -f core *.core core.conftest.* &&+ rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&+ exit $exit_status+' 0+for ac_signal in 1 2 13 15; do+ trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal+done+ac_signal=0++# confdefs.h avoids OS command line length limits that DEFS can exceed.+rm -f -r conftest* confdefs.h++# Predefined preprocessor variables.++cat >>confdefs.h <<_ACEOF+#define PACKAGE_NAME "$PACKAGE_NAME"+_ACEOF+++cat >>confdefs.h <<_ACEOF+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"+_ACEOF+++cat >>confdefs.h <<_ACEOF+#define PACKAGE_VERSION "$PACKAGE_VERSION"+_ACEOF+++cat >>confdefs.h <<_ACEOF+#define PACKAGE_STRING "$PACKAGE_STRING"+_ACEOF+++cat >>confdefs.h <<_ACEOF+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"+_ACEOF+++# Let the site file select an alternate cache file if it wants to.+# Prefer explicitly selected file to automatically selected ones.+if test -n "$CONFIG_SITE"; then+ set x "$CONFIG_SITE"+elif test "x$prefix" != xNONE; then+ set x "$prefix/share/config.site" "$prefix/etc/config.site"+else+ set x "$ac_default_prefix/share/config.site" \+ "$ac_default_prefix/etc/config.site"+fi+shift+for ac_site_file+do+ if test -r "$ac_site_file"; then+ { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5+echo "$as_me: loading site script $ac_site_file" >&6;}+ sed 's/^/| /' "$ac_site_file" >&5+ . "$ac_site_file"+ fi+done++if test -r "$cache_file"; then+ # Some versions of bash will fail to source /dev/null (special+ # files actually), so we avoid doing that.+ if test -f "$cache_file"; then+ { echo "$as_me:$LINENO: loading cache $cache_file" >&5+echo "$as_me: loading cache $cache_file" >&6;}+ case $cache_file in+ [\\/]* | ?:[\\/]* ) . "$cache_file";;+ *) . "./$cache_file";;+ esac+ fi+else+ { echo "$as_me:$LINENO: creating cache $cache_file" >&5+echo "$as_me: creating cache $cache_file" >&6;}+ >$cache_file+fi++# Check that the precious variables saved in the cache have kept the same+# value.+ac_cache_corrupted=false+for ac_var in $ac_precious_vars; do+ eval ac_old_set=\$ac_cv_env_${ac_var}_set+ eval ac_new_set=\$ac_env_${ac_var}_set+ eval ac_old_val=\$ac_cv_env_${ac_var}_value+ eval ac_new_val=\$ac_env_${ac_var}_value+ case $ac_old_set,$ac_new_set in+ set,)+ { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5+echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}+ ac_cache_corrupted=: ;;+ ,set)+ { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5+echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}+ ac_cache_corrupted=: ;;+ ,);;+ *)+ if test "x$ac_old_val" != "x$ac_new_val"; then+ { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5+echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}+ { echo "$as_me:$LINENO: former value: $ac_old_val" >&5+echo "$as_me: former value: $ac_old_val" >&2;}+ { echo "$as_me:$LINENO: current value: $ac_new_val" >&5+echo "$as_me: current value: $ac_new_val" >&2;}+ ac_cache_corrupted=:+ fi;;+ esac+ # Pass precious variables to config.status.+ if test "$ac_new_set" = set; then+ case $ac_new_val in+ *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;+ *) ac_arg=$ac_var=$ac_new_val ;;+ esac+ case " $ac_configure_args " in+ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.+ *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;+ esac+ fi+done+if $ac_cache_corrupted; then+ { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5+echo "$as_me: error: changes in the environment can compromise the build" >&2;}+ { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5+echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}+ { (exit 1); exit 1; }; }+fi++++++++++++++++++++++++++ac_ext=c+ac_cpp='$CPP $CPPFLAGS'+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'+ac_compiler_gnu=$ac_cv_c_compiler_gnu++++ac_config_files="$ac_config_files cuda.buildinfo"++ac_ext=c+ac_cpp='$CPP $CPPFLAGS'+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'+ac_compiler_gnu=$ac_cv_c_compiler_gnu+if test -n "$ac_tool_prefix"; then+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.+set dummy ${ac_tool_prefix}gcc; ac_word=$2+{ echo "$as_me:$LINENO: checking for $ac_word" >&5+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }+if test "${ac_cv_prog_CC+set}" = set; then+ echo $ECHO_N "(cached) $ECHO_C" >&6+else+ if test -n "$CC"; then+ ac_cv_prog_CC="$CC" # Let the user override the test.+else+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR+for as_dir in $PATH+do+ IFS=$as_save_IFS+ test -z "$as_dir" && as_dir=.+ for ac_exec_ext in '' $ac_executable_extensions; do+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then+ ac_cv_prog_CC="${ac_tool_prefix}gcc"+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5+ break 2+ fi+done+done+IFS=$as_save_IFS++fi+fi+CC=$ac_cv_prog_CC+if test -n "$CC"; then+ { echo "$as_me:$LINENO: result: $CC" >&5+echo "${ECHO_T}$CC" >&6; }+else+ { echo "$as_me:$LINENO: result: no" >&5+echo "${ECHO_T}no" >&6; }+fi+++fi+if test -z "$ac_cv_prog_CC"; then+ ac_ct_CC=$CC+ # Extract the first word of "gcc", so it can be a program name with args.+set dummy gcc; ac_word=$2+{ echo "$as_me:$LINENO: checking for $ac_word" >&5+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then+ echo $ECHO_N "(cached) $ECHO_C" >&6+else+ if test -n "$ac_ct_CC"; then+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.+else+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR+for as_dir in $PATH+do+ IFS=$as_save_IFS+ test -z "$as_dir" && as_dir=.+ for ac_exec_ext in '' $ac_executable_extensions; do+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then+ ac_cv_prog_ac_ct_CC="gcc"+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5+ break 2+ fi+done+done+IFS=$as_save_IFS++fi+fi+ac_ct_CC=$ac_cv_prog_ac_ct_CC+if test -n "$ac_ct_CC"; then+ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5+echo "${ECHO_T}$ac_ct_CC" >&6; }+else+ { echo "$as_me:$LINENO: result: no" >&5+echo "${ECHO_T}no" >&6; }+fi++ if test "x$ac_ct_CC" = x; then+ CC=""+ else+ case $cross_compiling:$ac_tool_warned in+yes:)+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools+whose name does not start with the host triplet. If you think this+configuration is useful to you, please write to autoconf@gnu.org." >&5+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools+whose name does not start with the host triplet. If you think this+configuration is useful to you, please write to autoconf@gnu.org." >&2;}+ac_tool_warned=yes ;;+esac+ CC=$ac_ct_CC+ fi+else+ CC="$ac_cv_prog_CC"+fi++if test -z "$CC"; then+ if test -n "$ac_tool_prefix"; then+ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.+set dummy ${ac_tool_prefix}cc; ac_word=$2+{ echo "$as_me:$LINENO: checking for $ac_word" >&5+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }+if test "${ac_cv_prog_CC+set}" = set; then+ echo $ECHO_N "(cached) $ECHO_C" >&6+else+ if test -n "$CC"; then+ ac_cv_prog_CC="$CC" # Let the user override the test.+else+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR+for as_dir in $PATH+do+ IFS=$as_save_IFS+ test -z "$as_dir" && as_dir=.+ for ac_exec_ext in '' $ac_executable_extensions; do+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then+ ac_cv_prog_CC="${ac_tool_prefix}cc"+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5+ break 2+ fi+done+done+IFS=$as_save_IFS++fi+fi+CC=$ac_cv_prog_CC+if test -n "$CC"; then+ { echo "$as_me:$LINENO: result: $CC" >&5+echo "${ECHO_T}$CC" >&6; }+else+ { echo "$as_me:$LINENO: result: no" >&5+echo "${ECHO_T}no" >&6; }+fi+++ fi+fi+if test -z "$CC"; then+ # Extract the first word of "cc", so it can be a program name with args.+set dummy cc; ac_word=$2+{ echo "$as_me:$LINENO: checking for $ac_word" >&5+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }+if test "${ac_cv_prog_CC+set}" = set; then+ echo $ECHO_N "(cached) $ECHO_C" >&6+else+ if test -n "$CC"; then+ ac_cv_prog_CC="$CC" # Let the user override the test.+else+ ac_prog_rejected=no+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR+for as_dir in $PATH+do+ IFS=$as_save_IFS+ test -z "$as_dir" && as_dir=.+ for ac_exec_ext in '' $ac_executable_extensions; do+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then+ ac_prog_rejected=yes+ continue+ fi+ ac_cv_prog_CC="cc"+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5+ break 2+ fi+done+done+IFS=$as_save_IFS++if test $ac_prog_rejected = yes; then+ # We found a bogon in the path, so make sure we never use it.+ set dummy $ac_cv_prog_CC+ shift+ if test $# != 0; then+ # We chose a different compiler from the bogus one.+ # However, it has the same basename, so the bogon will be chosen+ # first if we set CC to just the basename; use the full file name.+ shift+ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"+ fi+fi+fi+fi+CC=$ac_cv_prog_CC+if test -n "$CC"; then+ { echo "$as_me:$LINENO: result: $CC" >&5+echo "${ECHO_T}$CC" >&6; }+else+ { echo "$as_me:$LINENO: result: no" >&5+echo "${ECHO_T}no" >&6; }+fi+++fi+if test -z "$CC"; then+ if test -n "$ac_tool_prefix"; then+ for ac_prog in cl.exe+ do+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.+set dummy $ac_tool_prefix$ac_prog; ac_word=$2+{ echo "$as_me:$LINENO: checking for $ac_word" >&5+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }+if test "${ac_cv_prog_CC+set}" = set; then+ echo $ECHO_N "(cached) $ECHO_C" >&6+else+ if test -n "$CC"; then+ ac_cv_prog_CC="$CC" # Let the user override the test.+else+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR+for as_dir in $PATH+do+ IFS=$as_save_IFS+ test -z "$as_dir" && as_dir=.+ for ac_exec_ext in '' $ac_executable_extensions; do+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog"+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5+ break 2+ fi+done+done+IFS=$as_save_IFS++fi+fi+CC=$ac_cv_prog_CC+if test -n "$CC"; then+ { echo "$as_me:$LINENO: result: $CC" >&5+echo "${ECHO_T}$CC" >&6; }+else+ { echo "$as_me:$LINENO: result: no" >&5+echo "${ECHO_T}no" >&6; }+fi+++ test -n "$CC" && break+ done+fi+if test -z "$CC"; then+ ac_ct_CC=$CC+ for ac_prog in cl.exe+do+ # Extract the first word of "$ac_prog", so it can be a program name with args.+set dummy $ac_prog; ac_word=$2+{ echo "$as_me:$LINENO: checking for $ac_word" >&5+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then+ echo $ECHO_N "(cached) $ECHO_C" >&6+else+ if test -n "$ac_ct_CC"; then+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.+else+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR+for as_dir in $PATH+do+ IFS=$as_save_IFS+ test -z "$as_dir" && as_dir=.+ for ac_exec_ext in '' $ac_executable_extensions; do+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then+ ac_cv_prog_ac_ct_CC="$ac_prog"+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5+ break 2+ fi+done+done+IFS=$as_save_IFS++fi+fi+ac_ct_CC=$ac_cv_prog_ac_ct_CC+if test -n "$ac_ct_CC"; then+ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5+echo "${ECHO_T}$ac_ct_CC" >&6; }+else+ { echo "$as_me:$LINENO: result: no" >&5+echo "${ECHO_T}no" >&6; }+fi+++ test -n "$ac_ct_CC" && break+done++ if test "x$ac_ct_CC" = x; then+ CC=""+ else+ case $cross_compiling:$ac_tool_warned in+yes:)+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools+whose name does not start with the host triplet. If you think this+configuration is useful to you, please write to autoconf@gnu.org." >&5+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools+whose name does not start with the host triplet. If you think this+configuration is useful to you, please write to autoconf@gnu.org." >&2;}+ac_tool_warned=yes ;;+esac+ CC=$ac_ct_CC+ fi+fi++fi+++test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH+See \`config.log' for more details." >&5+echo "$as_me: error: no acceptable C compiler found in \$PATH+See \`config.log' for more details." >&2;}+ { (exit 1); exit 1; }; }++# Provide some information about the compiler.+echo "$as_me:$LINENO: checking for C compiler version" >&5+ac_compiler=`set X $ac_compile; echo $2`+{ (ac_try="$ac_compiler --version >&5"+case "(($ac_try" in+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;+ *) ac_try_echo=$ac_try;;+esac+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5+ (eval "$ac_compiler --version >&5") 2>&5+ ac_status=$?+ echo "$as_me:$LINENO: \$? = $ac_status" >&5+ (exit $ac_status); }+{ (ac_try="$ac_compiler -v >&5"+case "(($ac_try" in+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;+ *) ac_try_echo=$ac_try;;+esac+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5+ (eval "$ac_compiler -v >&5") 2>&5+ ac_status=$?+ echo "$as_me:$LINENO: \$? = $ac_status" >&5+ (exit $ac_status); }+{ (ac_try="$ac_compiler -V >&5"+case "(($ac_try" in+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;+ *) ac_try_echo=$ac_try;;+esac+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5+ (eval "$ac_compiler -V >&5") 2>&5+ ac_status=$?+ echo "$as_me:$LINENO: \$? = $ac_status" >&5+ (exit $ac_status); }++cat >conftest.$ac_ext <<_ACEOF+/* confdefs.h. */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h. */++int+main ()+{++ ;+ return 0;+}+_ACEOF+ac_clean_files_save=$ac_clean_files+ac_clean_files="$ac_clean_files a.out a.exe b.out"+# Try to create an executable without -o first, disregard a.out.+# It will help us diagnose broken compilers, and finding out an intuition+# of exeext.+{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5+echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; }+ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`+#+# List of possible output files, starting from the most likely.+# The algorithm is not robust to junk in `.', hence go to wildcards (a.*)+# only as a last resort. b.out is created by i960 compilers.+ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out'+#+# The IRIX 6 linker writes into existing files which may not be+# executable, retaining their permissions. Remove them first so a+# subsequent execution test works.+ac_rmfiles=+for ac_file in $ac_files+do+ case $ac_file in+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;+ * ) ac_rmfiles="$ac_rmfiles $ac_file";;+ esac+done+rm -f $ac_rmfiles++if { (ac_try="$ac_link_default"+case "(($ac_try" in+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;+ *) ac_try_echo=$ac_try;;+esac+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5+ (eval "$ac_link_default") 2>&5+ ac_status=$?+ echo "$as_me:$LINENO: \$? = $ac_status" >&5+ (exit $ac_status); }; then+ # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'+# in a Makefile. We should not override ac_cv_exeext if it was cached,+# so that the user can short-circuit this test for compilers unknown to+# Autoconf.+for ac_file in $ac_files ''+do+ test -f "$ac_file" || continue+ case $ac_file in+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj )+ ;;+ [ab].out )+ # We found the default executable, but exeext='' is most+ # certainly right.+ break;;+ *.* )+ if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;+ then :; else+ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`+ fi+ # We set ac_cv_exeext here because the later test for it is not+ # safe: cross compilers may not add the suffix if given an `-o'+ # argument, so we may need to know it at that point already.+ # Even if this section looks crufty: it has the advantage of+ # actually working.+ break;;+ * )+ break;;+ esac+done+test "$ac_cv_exeext" = no && ac_cv_exeext=++else+ ac_file=''+fi++{ echo "$as_me:$LINENO: result: $ac_file" >&5+echo "${ECHO_T}$ac_file" >&6; }+if test -z "$ac_file"; then+ echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++{ { echo "$as_me:$LINENO: error: C compiler cannot create executables+See \`config.log' for more details." >&5+echo "$as_me: error: C compiler cannot create executables+See \`config.log' for more details." >&2;}+ { (exit 77); exit 77; }; }+fi++ac_exeext=$ac_cv_exeext++# Check that the compiler produces executables we can run. If not, either+# the compiler is broken, or we cross compile.+{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5+echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; }+# FIXME: These cross compiler hacks should be removed for Autoconf 3.0+# If not cross compiling, check that we can run a simple program.+if test "$cross_compiling" != yes; then+ if { ac_try='./$ac_file'+ { (case "(($ac_try" in+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;+ *) ac_try_echo=$ac_try;;+esac+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5+ (eval "$ac_try") 2>&5+ ac_status=$?+ echo "$as_me:$LINENO: \$? = $ac_status" >&5+ (exit $ac_status); }; }; then+ cross_compiling=no+ else+ if test "$cross_compiling" = maybe; then+ cross_compiling=yes+ else+ { { echo "$as_me:$LINENO: error: cannot run C compiled programs.+If you meant to cross compile, use \`--host'.+See \`config.log' for more details." >&5+echo "$as_me: error: cannot run C compiled programs.+If you meant to cross compile, use \`--host'.+See \`config.log' for more details." >&2;}+ { (exit 1); exit 1; }; }+ fi+ fi+fi+{ echo "$as_me:$LINENO: result: yes" >&5+echo "${ECHO_T}yes" >&6; }++rm -f a.out a.exe conftest$ac_cv_exeext b.out+ac_clean_files=$ac_clean_files_save+# Check that the compiler produces executables we can run. If not, either+# the compiler is broken, or we cross compile.+{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5+echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; }+{ echo "$as_me:$LINENO: result: $cross_compiling" >&5+echo "${ECHO_T}$cross_compiling" >&6; }++{ echo "$as_me:$LINENO: checking for suffix of executables" >&5+echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; }+if { (ac_try="$ac_link"+case "(($ac_try" in+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;+ *) ac_try_echo=$ac_try;;+esac+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5+ (eval "$ac_link") 2>&5+ ac_status=$?+ echo "$as_me:$LINENO: \$? = $ac_status" >&5+ (exit $ac_status); }; then+ # If both `conftest.exe' and `conftest' are `present' (well, observable)+# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will+# work properly (i.e., refer to `conftest.exe'), while it won't with+# `rm'.+for ac_file in conftest.exe conftest conftest.*; do+ test -f "$ac_file" || continue+ case $ac_file in+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;+ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`+ break;;+ * ) break;;+ esac+done+else+ { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link+See \`config.log' for more details." >&5+echo "$as_me: error: cannot compute suffix of executables: cannot compile and link+See \`config.log' for more details." >&2;}+ { (exit 1); exit 1; }; }+fi++rm -f conftest$ac_cv_exeext+{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5+echo "${ECHO_T}$ac_cv_exeext" >&6; }++rm -f conftest.$ac_ext+EXEEXT=$ac_cv_exeext+ac_exeext=$EXEEXT+{ echo "$as_me:$LINENO: checking for suffix of object files" >&5+echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; }+if test "${ac_cv_objext+set}" = set; then+ echo $ECHO_N "(cached) $ECHO_C" >&6+else+ cat >conftest.$ac_ext <<_ACEOF+/* confdefs.h. */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h. */++int+main ()+{++ ;+ return 0;+}+_ACEOF+rm -f conftest.o conftest.obj+if { (ac_try="$ac_compile"+case "(($ac_try" in+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;+ *) ac_try_echo=$ac_try;;+esac+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5+ (eval "$ac_compile") 2>&5+ ac_status=$?+ echo "$as_me:$LINENO: \$? = $ac_status" >&5+ (exit $ac_status); }; then+ for ac_file in conftest.o conftest.obj conftest.*; do+ test -f "$ac_file" || continue;+ case $ac_file in+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;;+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`+ break;;+ esac+done+else+ echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile+See \`config.log' for more details." >&5+echo "$as_me: error: cannot compute suffix of object files: cannot compile+See \`config.log' for more details." >&2;}+ { (exit 1); exit 1; }; }+fi++rm -f conftest.$ac_cv_objext conftest.$ac_ext+fi+{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5+echo "${ECHO_T}$ac_cv_objext" >&6; }+OBJEXT=$ac_cv_objext+ac_objext=$OBJEXT+{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5+echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; }+if test "${ac_cv_c_compiler_gnu+set}" = set; then+ echo $ECHO_N "(cached) $ECHO_C" >&6+else+ cat >conftest.$ac_ext <<_ACEOF+/* confdefs.h. */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h. */++int+main ()+{+#ifndef __GNUC__+ choke me+#endif++ ;+ return 0;+}+_ACEOF+rm -f conftest.$ac_objext+if { (ac_try="$ac_compile"+case "(($ac_try" in+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;+ *) ac_try_echo=$ac_try;;+esac+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5+ (eval "$ac_compile") 2>conftest.er1+ ac_status=$?+ grep -v '^ *+' conftest.er1 >conftest.err+ rm -f conftest.er1+ cat conftest.err >&5+ echo "$as_me:$LINENO: \$? = $ac_status" >&5+ (exit $ac_status); } && {+ test -z "$ac_c_werror_flag" ||+ test ! -s conftest.err+ } && test -s conftest.$ac_objext; then+ ac_compiler_gnu=yes+else+ echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++ ac_compiler_gnu=no+fi++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext+ac_cv_c_compiler_gnu=$ac_compiler_gnu++fi+{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5+echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; }+GCC=`test $ac_compiler_gnu = yes && echo yes`+ac_test_CFLAGS=${CFLAGS+set}+ac_save_CFLAGS=$CFLAGS+{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5+echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; }+if test "${ac_cv_prog_cc_g+set}" = set; then+ echo $ECHO_N "(cached) $ECHO_C" >&6+else+ ac_save_c_werror_flag=$ac_c_werror_flag+ ac_c_werror_flag=yes+ ac_cv_prog_cc_g=no+ CFLAGS="-g"+ cat >conftest.$ac_ext <<_ACEOF+/* confdefs.h. */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h. */++int+main ()+{++ ;+ return 0;+}+_ACEOF+rm -f conftest.$ac_objext+if { (ac_try="$ac_compile"+case "(($ac_try" in+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;+ *) ac_try_echo=$ac_try;;+esac+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5+ (eval "$ac_compile") 2>conftest.er1+ ac_status=$?+ grep -v '^ *+' conftest.er1 >conftest.err+ rm -f conftest.er1+ cat conftest.err >&5+ echo "$as_me:$LINENO: \$? = $ac_status" >&5+ (exit $ac_status); } && {+ test -z "$ac_c_werror_flag" ||+ test ! -s conftest.err+ } && test -s conftest.$ac_objext; then+ ac_cv_prog_cc_g=yes+else+ echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++ CFLAGS=""+ cat >conftest.$ac_ext <<_ACEOF+/* confdefs.h. */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h. */++int+main ()+{++ ;+ return 0;+}+_ACEOF+rm -f conftest.$ac_objext+if { (ac_try="$ac_compile"+case "(($ac_try" in+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;+ *) ac_try_echo=$ac_try;;+esac+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5+ (eval "$ac_compile") 2>conftest.er1+ ac_status=$?+ grep -v '^ *+' conftest.er1 >conftest.err+ rm -f conftest.er1+ cat conftest.err >&5+ echo "$as_me:$LINENO: \$? = $ac_status" >&5+ (exit $ac_status); } && {+ test -z "$ac_c_werror_flag" ||+ test ! -s conftest.err+ } && test -s conftest.$ac_objext; then+ :+else+ echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++ ac_c_werror_flag=$ac_save_c_werror_flag+ CFLAGS="-g"+ cat >conftest.$ac_ext <<_ACEOF+/* confdefs.h. */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h. */++int+main ()+{++ ;+ return 0;+}+_ACEOF+rm -f conftest.$ac_objext+if { (ac_try="$ac_compile"+case "(($ac_try" in+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;+ *) ac_try_echo=$ac_try;;+esac+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5+ (eval "$ac_compile") 2>conftest.er1+ ac_status=$?+ grep -v '^ *+' conftest.er1 >conftest.err+ rm -f conftest.er1+ cat conftest.err >&5+ echo "$as_me:$LINENO: \$? = $ac_status" >&5+ (exit $ac_status); } && {+ test -z "$ac_c_werror_flag" ||+ test ! -s conftest.err+ } && test -s conftest.$ac_objext; then+ ac_cv_prog_cc_g=yes+else+ echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5+++fi++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext+fi++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext+fi++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext+ ac_c_werror_flag=$ac_save_c_werror_flag+fi+{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5+echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; }+if test "$ac_test_CFLAGS" = set; then+ CFLAGS=$ac_save_CFLAGS+elif test $ac_cv_prog_cc_g = yes; then+ if test "$GCC" = yes; then+ CFLAGS="-g -O2"+ else+ CFLAGS="-g"+ fi+else+ if test "$GCC" = yes; then+ CFLAGS="-O2"+ else+ CFLAGS=+ fi+fi+{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5+echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; }+if test "${ac_cv_prog_cc_c89+set}" = set; then+ echo $ECHO_N "(cached) $ECHO_C" >&6+else+ ac_cv_prog_cc_c89=no+ac_save_CC=$CC+cat >conftest.$ac_ext <<_ACEOF+/* confdefs.h. */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h. */+#include <stdarg.h>+#include <stdio.h>+#include <sys/types.h>+#include <sys/stat.h>+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */+struct buf { int x; };+FILE * (*rcsopen) (struct buf *, struct stat *, int);+static char *e (p, i)+ char **p;+ int i;+{+ return p[i];+}+static char *f (char * (*g) (char **, int), char **p, ...)+{+ char *s;+ va_list v;+ va_start (v,p);+ s = g (p, va_arg (v,int));+ va_end (v);+ return s;+}++/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has+ function prototypes and stuff, but not '\xHH' hex character constants.+ These don't provoke an error unfortunately, instead are silently treated+ as 'x'. The following induces an error, until -std is added to get+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an+ array size at least. It's necessary to write '\x00'==0 to get something+ that's true only with -std. */+int osf4_cc_array ['\x00' == 0 ? 1 : -1];++/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters+ inside strings and character constants. */+#define FOO(x) 'x'+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];++int test (int i, double x);+struct s1 {int (*f) (int a);};+struct s2 {int (*f) (double a);};+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);+int argc;+char **argv;+int+main ()+{+return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];+ ;+ return 0;+}+_ACEOF+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \+ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"+do+ CC="$ac_save_CC $ac_arg"+ rm -f conftest.$ac_objext+if { (ac_try="$ac_compile"+case "(($ac_try" in+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;+ *) ac_try_echo=$ac_try;;+esac+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5+ (eval "$ac_compile") 2>conftest.er1+ ac_status=$?+ grep -v '^ *+' conftest.er1 >conftest.err+ rm -f conftest.er1+ cat conftest.err >&5+ echo "$as_me:$LINENO: \$? = $ac_status" >&5+ (exit $ac_status); } && {+ test -z "$ac_c_werror_flag" ||+ test ! -s conftest.err+ } && test -s conftest.$ac_objext; then+ ac_cv_prog_cc_c89=$ac_arg+else+ echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5+++fi++rm -f core conftest.err conftest.$ac_objext+ test "x$ac_cv_prog_cc_c89" != "xno" && break+done+rm -f conftest.$ac_ext+CC=$ac_save_CC++fi+# AC_CACHE_VAL+case "x$ac_cv_prog_cc_c89" in+ x)+ { echo "$as_me:$LINENO: result: none needed" >&5+echo "${ECHO_T}none needed" >&6; } ;;+ xno)+ { echo "$as_me:$LINENO: result: unsupported" >&5+echo "${ECHO_T}unsupported" >&6; } ;;+ *)+ CC="$CC $ac_cv_prog_cc_c89"+ { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5+echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;;+esac+++ac_ext=c+ac_cpp='$CPP $CPPFLAGS'+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'+ac_compiler_gnu=$ac_cv_c_compiler_gnu+++# Determine the target platform+#+ac_aux_dir=+for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do+ if test -f "$ac_dir/install-sh"; then+ ac_aux_dir=$ac_dir+ ac_install_sh="$ac_aux_dir/install-sh -c"+ break+ elif test -f "$ac_dir/install.sh"; then+ ac_aux_dir=$ac_dir+ ac_install_sh="$ac_aux_dir/install.sh -c"+ break+ elif test -f "$ac_dir/shtool"; then+ ac_aux_dir=$ac_dir+ ac_install_sh="$ac_aux_dir/shtool install -c"+ break+ fi+done+if test -z "$ac_aux_dir"; then+ { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5+echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;}+ { (exit 1); exit 1; }; }+fi++# These three variables are undocumented and unsupported,+# and are intended to be withdrawn in a future Autoconf release.+# They can cause serious problems if a builder's source tree is in a directory+# whose full name contains unusual characters.+ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.+ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.+ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.+++# Make sure we can run config.sub.+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||+ { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5+echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;}+ { (exit 1); exit 1; }; }++{ echo "$as_me:$LINENO: checking build system type" >&5+echo $ECHO_N "checking build system type... $ECHO_C" >&6; }+if test "${ac_cv_build+set}" = set; then+ echo $ECHO_N "(cached) $ECHO_C" >&6+else+ ac_build_alias=$build_alias+test "x$ac_build_alias" = x &&+ ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`+test "x$ac_build_alias" = x &&+ { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5+echo "$as_me: error: cannot guess build type; you must specify one" >&2;}+ { (exit 1); exit 1; }; }+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||+ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5+echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;}+ { (exit 1); exit 1; }; }++fi+{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5+echo "${ECHO_T}$ac_cv_build" >&6; }+case $ac_cv_build in+*-*-*) ;;+*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5+echo "$as_me: error: invalid value of canonical build" >&2;}+ { (exit 1); exit 1; }; };;+esac+build=$ac_cv_build+ac_save_IFS=$IFS; IFS='-'+set x $ac_cv_build+shift+build_cpu=$1+build_vendor=$2+shift; shift+# Remember, the first character of IFS is used to create $*,+# except with old shells:+build_os=$*+IFS=$ac_save_IFS+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac+++{ echo "$as_me:$LINENO: checking host system type" >&5+echo $ECHO_N "checking host system type... $ECHO_C" >&6; }+if test "${ac_cv_host+set}" = set; then+ echo $ECHO_N "(cached) $ECHO_C" >&6+else+ if test "x$host_alias" = x; then+ ac_cv_host=$ac_cv_build+else+ ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||+ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5+echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;}+ { (exit 1); exit 1; }; }+fi++fi+{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5+echo "${ECHO_T}$ac_cv_host" >&6; }+case $ac_cv_host in+*-*-*) ;;+*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5+echo "$as_me: error: invalid value of canonical host" >&2;}+ { (exit 1); exit 1; }; };;+esac+host=$ac_cv_host+ac_save_IFS=$IFS; IFS='-'+set x $ac_cv_host+shift+host_cpu=$1+host_vendor=$2+shift; shift+# Remember, the first character of IFS is used to create $*,+# except with old shells:+host_os=$*+IFS=$ac_save_IFS+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac+++{ echo "$as_me:$LINENO: checking target system type" >&5+echo $ECHO_N "checking target system type... $ECHO_C" >&6; }+if test "${ac_cv_target+set}" = set; then+ echo $ECHO_N "(cached) $ECHO_C" >&6+else+ if test "x$target_alias" = x; then+ ac_cv_target=$ac_cv_host+else+ ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` ||+ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&5+echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&2;}+ { (exit 1); exit 1; }; }+fi++fi+{ echo "$as_me:$LINENO: result: $ac_cv_target" >&5+echo "${ECHO_T}$ac_cv_target" >&6; }+case $ac_cv_target in+*-*-*) ;;+*) { { echo "$as_me:$LINENO: error: invalid value of canonical target" >&5+echo "$as_me: error: invalid value of canonical target" >&2;}+ { (exit 1); exit 1; }; };;+esac+target=$ac_cv_target+ac_save_IFS=$IFS; IFS='-'+set x $ac_cv_target+shift+target_cpu=$1+target_vendor=$2+shift; shift+# Remember, the first character of IFS is used to create $*,+# except with old shells:+target_os=$*+IFS=$ac_save_IFS+case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac+++# The aliases save the names the user supplied, while $host etc.+# will get canonicalized.+test -n "$target_alias" &&+ test "$program_prefix$program_suffix$program_transform_name" = \+ NONENONEs,x,x, &&+ program_prefix=${target_alias}-++# Search the user's PATH for the 'nvcc' compiler. If it is found, add this+# prefix to the include and library search directories. Additionally, set nvcc+# as the C preprocessor for c2hs (only, or it won't try to link cudart)+#+# Extract the first word of "nvcc", so it can be a program name with args.+set dummy nvcc; ac_word=$2+{ echo "$as_me:$LINENO: checking for $ac_word" >&5+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }+if test "${ac_cv_path_NVCC+set}" = set; then+ echo $ECHO_N "(cached) $ECHO_C" >&6+else+ case $NVCC in+ [\\/]* | ?:[\\/]*)+ ac_cv_path_NVCC="$NVCC" # Let the user override the test with a path.+ ;;+ *)+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR+for as_dir in $PATH+do+ IFS=$as_save_IFS+ test -z "$as_dir" && as_dir=.+ for ac_exec_ext in '' $ac_executable_extensions; do+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then+ ac_cv_path_NVCC="$as_dir/$ac_word$ac_exec_ext"+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5+ break 2+ fi+done+done+IFS=$as_save_IFS++ ;;+esac+fi+NVCC=$ac_cv_path_NVCC+if test -n "$NVCC"; then+ { echo "$as_me:$LINENO: result: $NVCC" >&5+echo "${ECHO_T}$NVCC" >&6; }+else+ { echo "$as_me:$LINENO: result: no" >&5+echo "${ECHO_T}no" >&6; }+fi+++if test "$NVCC" != ""; then+ cuda_prefix="$(dirname $(dirname $NVCC))"+ cuda_c2hsflags="--cpp=$NVCC --cppopts=-E "+ CPPFLAGS+=" -I${cuda_prefix}/include "+# CC=${NVCC}++ case $target in+ x86_64*) LDFLAGS+=" -L${cuda_prefix}/lib64 " ;;+ *) LDFLAGS+=" -L${cuda_prefix}/lib " ;;+ esac+fi++# Recent versions of Mac OS X (10.6 and later) provides a C extension for+# creating lambda-like closure expressions (blocks), the syntax for which+# confuses the c2hs preprocessor. We disable this by undefining the __BLOCKS__+# macro.+#+{ echo "$as_me:$LINENO: checking for Apple Blocks extension" >&5+echo $ECHO_N "checking for Apple Blocks extension... $ECHO_C" >&6; }+if test -r "/usr/include/stdlib.h"; then+ BLOCKS=`grep __BLOCKS__ /usr/include/stdlib.h`+fi+if test "$BLOCKS" != ""; then+ cuda_c2hsflags+="--cppopts=-U__BLOCKS__ "+ { echo "$as_me:$LINENO: result: yes" >&5+echo "${ECHO_T}yes" >&6; }+else+ { echo "$as_me:$LINENO: result: no" >&5+echo "${ECHO_T}no" >&6; }+fi++# Make sure both the driver and runtime are found+#+longerror='+********************************************************************************++The configuration process failed to locate your CUDA installation. Ensure that+you have installed the driver and developer toolkit, available from:++ http://developer.nvidia.com/cuda-downloads++Then make sure that "nvcc" is available in your PATH, or set the appropriate+directories with --extra-include-dirs and --extra-lib-dirs.++********************************************************************************'+++ac_ext=c+ac_cpp='$CPP $CPPFLAGS'+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'+ac_compiler_gnu=$ac_cv_c_compiler_gnu+{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5+echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; }+# On Suns, sometimes $CPP names a directory.+if test -n "$CPP" && test -d "$CPP"; then+ CPP=+fi+if test -z "$CPP"; then+ if test "${ac_cv_prog_CPP+set}" = set; then+ echo $ECHO_N "(cached) $ECHO_C" >&6+else+ # Double quotes because CPP needs to be expanded+ for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"+ do+ ac_preproc_ok=false+for ac_c_preproc_warn_flag in '' yes+do+ # Use a header file that comes with gcc, so configuring glibc+ # with a fresh cross-compiler works.+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since+ # <limits.h> exists even on freestanding compilers.+ # On the NeXT, cc -E runs the code through the compiler's parser,+ # not just through cpp. "Syntax error" is here to catch this case.+ cat >conftest.$ac_ext <<_ACEOF+/* confdefs.h. */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h. */+#ifdef __STDC__+# include <limits.h>+#else+# include <assert.h>+#endif+ Syntax error+_ACEOF+if { (ac_try="$ac_cpp conftest.$ac_ext"+case "(($ac_try" in+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;+ *) ac_try_echo=$ac_try;;+esac+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1+ ac_status=$?+ grep -v '^ *+' conftest.er1 >conftest.err+ rm -f conftest.er1+ cat conftest.err >&5+ echo "$as_me:$LINENO: \$? = $ac_status" >&5+ (exit $ac_status); } >/dev/null && {+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||+ test ! -s conftest.err+ }; then+ :+else+ echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++ # Broken: fails on valid input.+continue+fi++rm -f conftest.err conftest.$ac_ext++ # OK, works on sane cases. Now check whether nonexistent headers+ # can be detected and how.+ cat >conftest.$ac_ext <<_ACEOF+/* confdefs.h. */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h. */+#include <ac_nonexistent.h>+_ACEOF+if { (ac_try="$ac_cpp conftest.$ac_ext"+case "(($ac_try" in+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;+ *) ac_try_echo=$ac_try;;+esac+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1+ ac_status=$?+ grep -v '^ *+' conftest.er1 >conftest.err+ rm -f conftest.er1+ cat conftest.err >&5+ echo "$as_me:$LINENO: \$? = $ac_status" >&5+ (exit $ac_status); } >/dev/null && {+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||+ test ! -s conftest.err+ }; then+ # Broken: success on invalid input.+continue+else+ echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++ # Passes both tests.+ac_preproc_ok=:+break+fi++rm -f conftest.err conftest.$ac_ext++done+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.+rm -f conftest.err conftest.$ac_ext+if $ac_preproc_ok; then+ break+fi++ done+ ac_cv_prog_CPP=$CPP++fi+ CPP=$ac_cv_prog_CPP+else+ ac_cv_prog_CPP=$CPP+fi+{ echo "$as_me:$LINENO: result: $CPP" >&5+echo "${ECHO_T}$CPP" >&6; }+ac_preproc_ok=false+for ac_c_preproc_warn_flag in '' yes+do+ # Use a header file that comes with gcc, so configuring glibc+ # with a fresh cross-compiler works.+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since+ # <limits.h> exists even on freestanding compilers.+ # On the NeXT, cc -E runs the code through the compiler's parser,+ # not just through cpp. "Syntax error" is here to catch this case.+ cat >conftest.$ac_ext <<_ACEOF+/* confdefs.h. */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h. */+#ifdef __STDC__+# include <limits.h>+#else+# include <assert.h>+#endif+ Syntax error+_ACEOF+if { (ac_try="$ac_cpp conftest.$ac_ext"+case "(($ac_try" in+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;+ *) ac_try_echo=$ac_try;;+esac+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1+ ac_status=$?+ grep -v '^ *+' conftest.er1 >conftest.err+ rm -f conftest.er1+ cat conftest.err >&5+ echo "$as_me:$LINENO: \$? = $ac_status" >&5+ (exit $ac_status); } >/dev/null && {+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||+ test ! -s conftest.err+ }; then+ :+else+ echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++ # Broken: fails on valid input.+continue+fi++rm -f conftest.err conftest.$ac_ext++ # OK, works on sane cases. Now check whether nonexistent headers+ # can be detected and how.+ cat >conftest.$ac_ext <<_ACEOF+/* confdefs.h. */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h. */+#include <ac_nonexistent.h>+_ACEOF+if { (ac_try="$ac_cpp conftest.$ac_ext"+case "(($ac_try" in+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;+ *) ac_try_echo=$ac_try;;+esac+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1+ ac_status=$?+ grep -v '^ *+' conftest.er1 >conftest.err+ rm -f conftest.er1+ cat conftest.err >&5+ echo "$as_me:$LINENO: \$? = $ac_status" >&5+ (exit $ac_status); } >/dev/null && {+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||+ test ! -s conftest.err+ }; then+ # Broken: success on invalid input.+continue+else+ echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++ # Passes both tests.+ac_preproc_ok=:+break+fi++rm -f conftest.err conftest.$ac_ext++done+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.+rm -f conftest.err conftest.$ac_ext+if $ac_preproc_ok; then+ :+else+ { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check+See \`config.log' for more details." >&5+echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check+See \`config.log' for more details." >&2;}+ { (exit 1); exit 1; }; }+fi++ac_ext=c+ac_cpp='$CPP $CPPFLAGS'+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'+ac_compiler_gnu=$ac_cv_c_compiler_gnu+++{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5+echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; }+if test "${ac_cv_path_GREP+set}" = set; then+ echo $ECHO_N "(cached) $ECHO_C" >&6+else+ # Extract the first word of "grep ggrep" to use in msg output+if test -z "$GREP"; then+set dummy grep ggrep; ac_prog_name=$2+if test "${ac_cv_path_GREP+set}" = set; then+ echo $ECHO_N "(cached) $ECHO_C" >&6+else+ ac_path_GREP_found=false+# Loop through the user's path and test for each of PROGNAME-LIST+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin+do+ IFS=$as_save_IFS+ test -z "$as_dir" && as_dir=.+ for ac_prog in grep ggrep; do+ for ac_exec_ext in '' $ac_executable_extensions; do+ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"+ { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue+ # Check for GNU ac_path_GREP and select it if it is found.+ # Check for GNU $ac_path_GREP+case `"$ac_path_GREP" --version 2>&1` in+*GNU*)+ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;+*)+ ac_count=0+ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"+ while :+ do+ cat "conftest.in" "conftest.in" >"conftest.tmp"+ mv "conftest.tmp" "conftest.in"+ cp "conftest.in" "conftest.nl"+ echo 'GREP' >> "conftest.nl"+ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break+ ac_count=`expr $ac_count + 1`+ if test $ac_count -gt ${ac_path_GREP_max-0}; then+ # Best one so far, save it but keep looking for a better one+ ac_cv_path_GREP="$ac_path_GREP"+ ac_path_GREP_max=$ac_count+ fi+ # 10*(2^10) chars as input seems more than enough+ test $ac_count -gt 10 && break+ done+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;+esac+++ $ac_path_GREP_found && break 3+ done+done++done+IFS=$as_save_IFS+++fi++GREP="$ac_cv_path_GREP"+if test -z "$GREP"; then+ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5+echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}+ { (exit 1); exit 1; }; }+fi++else+ ac_cv_path_GREP=$GREP+fi+++fi+{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5+echo "${ECHO_T}$ac_cv_path_GREP" >&6; }+ GREP="$ac_cv_path_GREP"+++{ echo "$as_me:$LINENO: checking for egrep" >&5+echo $ECHO_N "checking for egrep... $ECHO_C" >&6; }+if test "${ac_cv_path_EGREP+set}" = set; then+ echo $ECHO_N "(cached) $ECHO_C" >&6+else+ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1+ then ac_cv_path_EGREP="$GREP -E"+ else+ # Extract the first word of "egrep" to use in msg output+if test -z "$EGREP"; then+set dummy egrep; ac_prog_name=$2+if test "${ac_cv_path_EGREP+set}" = set; then+ echo $ECHO_N "(cached) $ECHO_C" >&6+else+ ac_path_EGREP_found=false+# Loop through the user's path and test for each of PROGNAME-LIST+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin+do+ IFS=$as_save_IFS+ test -z "$as_dir" && as_dir=.+ for ac_prog in egrep; do+ for ac_exec_ext in '' $ac_executable_extensions; do+ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"+ { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue+ # Check for GNU ac_path_EGREP and select it if it is found.+ # Check for GNU $ac_path_EGREP+case `"$ac_path_EGREP" --version 2>&1` in+*GNU*)+ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;+*)+ ac_count=0+ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"+ while :+ do+ cat "conftest.in" "conftest.in" >"conftest.tmp"+ mv "conftest.tmp" "conftest.in"+ cp "conftest.in" "conftest.nl"+ echo 'EGREP' >> "conftest.nl"+ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break+ ac_count=`expr $ac_count + 1`+ if test $ac_count -gt ${ac_path_EGREP_max-0}; then+ # Best one so far, save it but keep looking for a better one+ ac_cv_path_EGREP="$ac_path_EGREP"+ ac_path_EGREP_max=$ac_count+ fi+ # 10*(2^10) chars as input seems more than enough+ test $ac_count -gt 10 && break+ done+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;+esac+++ $ac_path_EGREP_found && break 3+ done+done++done+IFS=$as_save_IFS+++fi++EGREP="$ac_cv_path_EGREP"+if test -z "$EGREP"; then+ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5+echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}+ { (exit 1); exit 1; }; }+fi++else+ ac_cv_path_EGREP=$EGREP+fi+++ fi+fi+{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5+echo "${ECHO_T}$ac_cv_path_EGREP" >&6; }+ EGREP="$ac_cv_path_EGREP"+++{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5+echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; }+if test "${ac_cv_header_stdc+set}" = set; then+ echo $ECHO_N "(cached) $ECHO_C" >&6+else+ cat >conftest.$ac_ext <<_ACEOF+/* confdefs.h. */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h. */+#include <stdlib.h>+#include <stdarg.h>+#include <string.h>+#include <float.h>++int+main ()+{++ ;+ return 0;+}+_ACEOF+rm -f conftest.$ac_objext+if { (ac_try="$ac_compile"+case "(($ac_try" in+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;+ *) ac_try_echo=$ac_try;;+esac+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5+ (eval "$ac_compile") 2>conftest.er1+ ac_status=$?+ grep -v '^ *+' conftest.er1 >conftest.err+ rm -f conftest.er1+ cat conftest.err >&5+ echo "$as_me:$LINENO: \$? = $ac_status" >&5+ (exit $ac_status); } && {+ test -z "$ac_c_werror_flag" ||+ test ! -s conftest.err+ } && test -s conftest.$ac_objext; then+ ac_cv_header_stdc=yes+else+ echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++ ac_cv_header_stdc=no+fi++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext++if test $ac_cv_header_stdc = yes; then+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.+ cat >conftest.$ac_ext <<_ACEOF+/* confdefs.h. */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h. */+#include <string.h>++_ACEOF+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |+ $EGREP "memchr" >/dev/null 2>&1; then+ :+else+ ac_cv_header_stdc=no+fi+rm -f -r conftest*++fi++if test $ac_cv_header_stdc = yes; then+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.+ cat >conftest.$ac_ext <<_ACEOF+/* confdefs.h. */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h. */+#include <stdlib.h>++_ACEOF+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |+ $EGREP "free" >/dev/null 2>&1; then+ :+else+ ac_cv_header_stdc=no+fi+rm -f -r conftest*++fi++if test $ac_cv_header_stdc = yes; then+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.+ if test "$cross_compiling" = yes; then+ :+else+ cat >conftest.$ac_ext <<_ACEOF+/* confdefs.h. */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h. */+#include <ctype.h>+#include <stdlib.h>+#if ((' ' & 0x0FF) == 0x020)+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))+#else+# define ISLOWER(c) \+ (('a' <= (c) && (c) <= 'i') \+ || ('j' <= (c) && (c) <= 'r') \+ || ('s' <= (c) && (c) <= 'z'))+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))+#endif++#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))+int+main ()+{+ int i;+ for (i = 0; i < 256; i++)+ if (XOR (islower (i), ISLOWER (i))+ || toupper (i) != TOUPPER (i))+ return 2;+ return 0;+}+_ACEOF+rm -f conftest$ac_exeext+if { (ac_try="$ac_link"+case "(($ac_try" in+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;+ *) ac_try_echo=$ac_try;;+esac+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5+ (eval "$ac_link") 2>&5+ ac_status=$?+ echo "$as_me:$LINENO: \$? = $ac_status" >&5+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'+ { (case "(($ac_try" in+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;+ *) ac_try_echo=$ac_try;;+esac+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5+ (eval "$ac_try") 2>&5+ ac_status=$?+ echo "$as_me:$LINENO: \$? = $ac_status" >&5+ (exit $ac_status); }; }; then+ :+else+ echo "$as_me: program exited with status $ac_status" >&5+echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++( exit $ac_status )+ac_cv_header_stdc=no+fi+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext+fi+++fi+fi+{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5+echo "${ECHO_T}$ac_cv_header_stdc" >&6; }+if test $ac_cv_header_stdc = yes; then++cat >>confdefs.h <<\_ACEOF+#define STDC_HEADERS 1+_ACEOF++fi++# On IRIX 5.3, sys/types and inttypes.h are conflicting.++++++++++for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \+ inttypes.h stdint.h unistd.h+do+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`+{ echo "$as_me:$LINENO: checking for $ac_header" >&5+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then+ echo $ECHO_N "(cached) $ECHO_C" >&6+else+ cat >conftest.$ac_ext <<_ACEOF+/* confdefs.h. */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h. */+$ac_includes_default++#include <$ac_header>+_ACEOF+rm -f conftest.$ac_objext+if { (ac_try="$ac_compile"+case "(($ac_try" in+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;+ *) ac_try_echo=$ac_try;;+esac+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5+ (eval "$ac_compile") 2>conftest.er1+ ac_status=$?+ grep -v '^ *+' conftest.er1 >conftest.err+ rm -f conftest.er1+ cat conftest.err >&5+ echo "$as_me:$LINENO: \$? = $ac_status" >&5+ (exit $ac_status); } && {+ test -z "$ac_c_werror_flag" ||+ test ! -s conftest.err+ } && test -s conftest.$ac_objext; then+ eval "$as_ac_Header=yes"+else+ echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++ eval "$as_ac_Header=no"+fi++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext+fi+ac_res=`eval echo '${'$as_ac_Header'}'`+ { echo "$as_me:$LINENO: result: $ac_res" >&5+echo "${ECHO_T}$ac_res" >&6; }+if test `eval echo '${'$as_ac_Header'}'` = yes; then+ cat >>confdefs.h <<_ACEOF+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1+_ACEOF++fi++done+++++for ac_header in cuda.h cuda_runtime_api.h+do+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then+ { echo "$as_me:$LINENO: checking for $ac_header" >&5+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then+ echo $ECHO_N "(cached) $ECHO_C" >&6+fi+ac_res=`eval echo '${'$as_ac_Header'}'`+ { echo "$as_me:$LINENO: result: $ac_res" >&5+echo "${ECHO_T}$ac_res" >&6; }+else+ # Is the header compilable?+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }+cat >conftest.$ac_ext <<_ACEOF+/* confdefs.h. */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h. */+$ac_includes_default+#include <$ac_header>+_ACEOF+rm -f conftest.$ac_objext+if { (ac_try="$ac_compile"+case "(($ac_try" in+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;+ *) ac_try_echo=$ac_try;;+esac+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5+ (eval "$ac_compile") 2>conftest.er1+ ac_status=$?+ grep -v '^ *+' conftest.er1 >conftest.err+ rm -f conftest.er1+ cat conftest.err >&5+ echo "$as_me:$LINENO: \$? = $ac_status" >&5+ (exit $ac_status); } && {+ test -z "$ac_c_werror_flag" ||+ test ! -s conftest.err+ } && test -s conftest.$ac_objext; then+ ac_header_compiler=yes+else+ echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++ ac_header_compiler=no+fi++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5+echo "${ECHO_T}$ac_header_compiler" >&6; }++# Is the header present?+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }+cat >conftest.$ac_ext <<_ACEOF+/* confdefs.h. */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h. */+#include <$ac_header>+_ACEOF+if { (ac_try="$ac_cpp conftest.$ac_ext"+case "(($ac_try" in+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;+ *) ac_try_echo=$ac_try;;+esac+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1+ ac_status=$?+ grep -v '^ *+' conftest.er1 >conftest.err+ rm -f conftest.er1+ cat conftest.err >&5+ echo "$as_me:$LINENO: \$? = $ac_status" >&5+ (exit $ac_status); } >/dev/null && {+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||+ test ! -s conftest.err+ }; then+ ac_header_preproc=yes+else+ echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++ ac_header_preproc=no+fi++rm -f conftest.err conftest.$ac_ext+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5+echo "${ECHO_T}$ac_header_preproc" >&6; }++# So? What about this header?+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in+ yes:no: )+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}+ ac_header_preproc=yes+ ;;+ no:yes:* )+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}+ ( cat <<\_ASBOX+## ---------------------------------------- ##+## Report this to tmcdonell@cse.unsw.edu.au ##+## ---------------------------------------- ##+_ASBOX+ ) | sed "s/^/$as_me: WARNING: /" >&2+ ;;+esac+{ echo "$as_me:$LINENO: checking for $ac_header" >&5+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then+ echo $ECHO_N "(cached) $ECHO_C" >&6+else+ eval "$as_ac_Header=\$ac_header_preproc"+fi+ac_res=`eval echo '${'$as_ac_Header'}'`+ { echo "$as_me:$LINENO: result: $ac_res" >&5+echo "${ECHO_T}$ac_res" >&6; }++fi+if test `eval echo '${'$as_ac_Header'}'` = yes; then+ cat >>confdefs.h <<_ACEOF+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1+_ACEOF++else+ { { echo "$as_me:$LINENO: error: could not find CUDA headers${longerror}" >&5+echo "$as_me: error: could not find CUDA headers${longerror}" >&2;}+ { (exit 1); exit 1; }; }+fi++done++{ echo "$as_me:$LINENO: checking for library containing cuDriverGetVersion" >&5+echo $ECHO_N "checking for library containing cuDriverGetVersion... $ECHO_C" >&6; }+if test "${ac_cv_search_cuDriverGetVersion+set}" = set; then+ echo $ECHO_N "(cached) $ECHO_C" >&6+else+ ac_func_search_save_LIBS=$LIBS+cat >conftest.$ac_ext <<_ACEOF+/* confdefs.h. */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h. */++/* Override any GCC internal prototype to avoid an error.+ Use char because int might match the return type of a GCC+ builtin and then its argument prototype would still apply. */+#ifdef __cplusplus+extern "C"+#endif+char cuDriverGetVersion ();+int+main ()+{+return cuDriverGetVersion ();+ ;+ return 0;+}+_ACEOF+for ac_lib in '' cuda; do+ if test -z "$ac_lib"; then+ ac_res="none required"+ else+ ac_res=-l$ac_lib+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"+ fi+ rm -f conftest.$ac_objext conftest$ac_exeext+if { (ac_try="$ac_link"+case "(($ac_try" in+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;+ *) ac_try_echo=$ac_try;;+esac+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5+ (eval "$ac_link") 2>conftest.er1+ ac_status=$?+ grep -v '^ *+' conftest.er1 >conftest.err+ rm -f conftest.er1+ cat conftest.err >&5+ echo "$as_me:$LINENO: \$? = $ac_status" >&5+ (exit $ac_status); } && {+ test -z "$ac_c_werror_flag" ||+ test ! -s conftest.err+ } && test -s conftest$ac_exeext &&+ $as_test_x conftest$ac_exeext; then+ ac_cv_search_cuDriverGetVersion=$ac_res+else+ echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5+++fi++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \+ conftest$ac_exeext+ if test "${ac_cv_search_cuDriverGetVersion+set}" = set; then+ break+fi+done+if test "${ac_cv_search_cuDriverGetVersion+set}" = set; then+ :+else+ ac_cv_search_cuDriverGetVersion=no+fi+rm conftest.$ac_ext+LIBS=$ac_func_search_save_LIBS+fi+{ echo "$as_me:$LINENO: result: $ac_cv_search_cuDriverGetVersion" >&5+echo "${ECHO_T}$ac_cv_search_cuDriverGetVersion" >&6; }+ac_res=$ac_cv_search_cuDriverGetVersion+if test "$ac_res" != no; then+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"++else+ { { echo "$as_me:$LINENO: error: could not find CUDA driver library${longerror}" >&5+echo "$as_me: error: could not find CUDA driver library${longerror}" >&2;}+ { (exit 1); exit 1; }; }+fi++{ echo "$as_me:$LINENO: checking for library containing cudaRuntimeGetVersion" >&5+echo $ECHO_N "checking for library containing cudaRuntimeGetVersion... $ECHO_C" >&6; }+if test "${ac_cv_search_cudaRuntimeGetVersion+set}" = set; then+ echo $ECHO_N "(cached) $ECHO_C" >&6+else+ ac_func_search_save_LIBS=$LIBS+cat >conftest.$ac_ext <<_ACEOF+/* confdefs.h. */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h. */++/* Override any GCC internal prototype to avoid an error.+ Use char because int might match the return type of a GCC+ builtin and then its argument prototype would still apply. */+#ifdef __cplusplus+extern "C"+#endif+char cudaRuntimeGetVersion ();+int+main ()+{+return cudaRuntimeGetVersion ();+ ;+ return 0;+}+_ACEOF+for ac_lib in '' cudart; do+ if test -z "$ac_lib"; then+ ac_res="none required"+ else+ ac_res=-l$ac_lib+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"+ fi+ rm -f conftest.$ac_objext conftest$ac_exeext+if { (ac_try="$ac_link"+case "(($ac_try" in+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;+ *) ac_try_echo=$ac_try;;+esac+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5+ (eval "$ac_link") 2>conftest.er1+ ac_status=$?+ grep -v '^ *+' conftest.er1 >conftest.err+ rm -f conftest.er1+ cat conftest.err >&5+ echo "$as_me:$LINENO: \$? = $ac_status" >&5+ (exit $ac_status); } && {+ test -z "$ac_c_werror_flag" ||+ test ! -s conftest.err+ } && test -s conftest$ac_exeext &&+ $as_test_x conftest$ac_exeext; then+ ac_cv_search_cudaRuntimeGetVersion=$ac_res+else+ echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5+++fi++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \+ conftest$ac_exeext+ if test "${ac_cv_search_cudaRuntimeGetVersion+set}" = set; then+ break+fi+done+if test "${ac_cv_search_cudaRuntimeGetVersion+set}" = set; then+ :+else+ ac_cv_search_cudaRuntimeGetVersion=no+fi+rm conftest.$ac_ext+LIBS=$ac_func_search_save_LIBS+fi+{ echo "$as_me:$LINENO: result: $ac_cv_search_cudaRuntimeGetVersion" >&5+echo "${ECHO_T}$ac_cv_search_cudaRuntimeGetVersion" >&6; }+ac_res=$ac_cv_search_cudaRuntimeGetVersion+if test "$ac_res" != no; then+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"++else+ { { echo "$as_me:$LINENO: error: could not find CUDA runtime library${longerror}" >&5+echo "$as_me: error: could not find CUDA runtime library${longerror}" >&2;}+ { (exit 1); exit 1; }; }+fi+++# Populate the buildinfo, with the search paths and any target specific options+#+cuda_cppflags="$CPPFLAGS"+cuda_ldflags="$LDFLAGS $LIBS"+++++cat >confcache <<\_ACEOF+# This file is a shell script that caches the results of configure+# tests run on this system so they can be shared between configure+# scripts and configure runs, see configure's option --config-cache.+# It is not useful on other systems. If it contains results you don't+# want to keep, you may remove or edit it.+#+# config.status only pays attention to the cache file if you give it+# the --recheck option to rerun configure.+#+# `ac_cv_env_foo' variables (set or unset) will be overridden when+# loading this file, other *unset* `ac_cv_foo' will be assigned the+# following values.++_ACEOF++# The following way of writing the cache mishandles newlines in values,+# but we know of no workaround that is simple, portable, and efficient.+# So, we kill variables containing newlines.+# Ultrix sh set writes to stderr and can't be redirected directly,+# and sets the high bit in the cache file unless we assign to the vars.+(+ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do+ eval ac_val=\$$ac_var+ case $ac_val in #(+ *${as_nl}*)+ case $ac_var in #(+ *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5+echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;+ esac+ case $ac_var in #(+ _ | IFS | as_nl) ;; #(+ *) $as_unset $ac_var ;;+ esac ;;+ esac+ done++ (set) 2>&1 |+ case $as_nl`(ac_space=' '; set) 2>&1` in #(+ *${as_nl}ac_space=\ *)+ # `set' does not quote correctly, so add quotes (double-quote+ # substitution turns \\\\ into \\, and sed turns \\ into \).+ sed -n \+ "s/'/'\\\\''/g;+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"+ ;; #(+ *)+ # `set' quotes correctly as required by POSIX, so do not add quotes.+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"+ ;;+ esac |+ sort+) |+ sed '+ /^ac_cv_env_/b end+ t clear+ :clear+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/+ t end+ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/+ :end' >>confcache+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else+ if test -w "$cache_file"; then+ test "x$cache_file" != "x/dev/null" &&+ { echo "$as_me:$LINENO: updating cache $cache_file" >&5+echo "$as_me: updating cache $cache_file" >&6;}+ cat confcache >$cache_file+ else+ { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5+echo "$as_me: not updating unwritable cache $cache_file" >&6;}+ fi+fi+rm -f confcache++test "x$prefix" = xNONE && prefix=$ac_default_prefix+# Let make expand exec_prefix.+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'++# Transform confdefs.h into DEFS.+# Protect against shell expansion while executing Makefile rules.+# Protect against Makefile macro expansion.+#+# If the first sed substitution is executed (which looks for macros that+# take arguments), then branch to the quote section. Otherwise,+# look for a macro that doesn't take arguments.+ac_script='+t clear+:clear+s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g+t quote+s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g+t quote+b any+:quote+s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g+s/\[/\\&/g+s/\]/\\&/g+s/\$/$$/g+H+:any+${+ g+ s/^\n//+ s/\n/ /g+ p+}+'+DEFS=`sed -n "$ac_script" confdefs.h`+++ac_libobjs=+ac_ltlibobjs=+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue+ # 1. Remove the extension, and $U if already installed.+ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'+ ac_i=`echo "$ac_i" | sed "$ac_script"`+ # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR+ # will be set to the directory where LIBOBJS objects are built.+ ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"+ ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo'+done+LIBOBJS=$ac_libobjs++LTLIBOBJS=$ac_ltlibobjs++++: ${CONFIG_STATUS=./config.status}+ac_clean_files_save=$ac_clean_files+ac_clean_files="$ac_clean_files $CONFIG_STATUS"+{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5+echo "$as_me: creating $CONFIG_STATUS" >&6;}+cat >$CONFIG_STATUS <<_ACEOF+#! $SHELL+# Generated by $as_me.+# Run this file to recreate the current configuration.+# Compiler output produced by configure, useful for debugging+# configure, is in config.log if it exists.++debug=false+ac_cs_recheck=false+ac_cs_silent=false+SHELL=\${CONFIG_SHELL-$SHELL}+_ACEOF++cat >>$CONFIG_STATUS <<\_ACEOF+## --------------------- ##+## M4sh Initialization. ##+## --------------------- ##++# Be more Bourne compatible+DUALCASE=1; export DUALCASE # for MKS sh+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then+ emulate sh+ NULLCMD=:+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which+ # is contrary to our usage. Disable this feature.+ alias -g '${1+"$@"}'='"$@"'+ setopt NO_GLOB_SUBST+else+ case `(set -o) 2>/dev/null` in+ *posix*) set -o posix ;;+esac++fi+++++# PATH needs CR+# Avoid depending upon Character Ranges.+as_cr_letters='abcdefghijklmnopqrstuvwxyz'+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'+as_cr_Letters=$as_cr_letters$as_cr_LETTERS+as_cr_digits='0123456789'+as_cr_alnum=$as_cr_Letters$as_cr_digits++# The user is always right.+if test "${PATH_SEPARATOR+set}" != set; then+ echo "#! /bin/sh" >conf$$.sh+ echo "exit 0" >>conf$$.sh+ chmod +x conf$$.sh+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then+ PATH_SEPARATOR=';'+ else+ PATH_SEPARATOR=:+ fi+ rm -f conf$$.sh+fi++# Support unset when possible.+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then+ as_unset=unset+else+ as_unset=false+fi+++# IFS+# We need space, tab and new line, in precisely that order. Quoting is+# there to prevent editors from complaining about space-tab.+# (If _AS_PATH_WALK were called with IFS unset, it would disable word+# splitting by setting IFS to empty value.)+as_nl='+'+IFS=" "" $as_nl"++# Find who we are. Look in the path if we contain no directory separator.+case $0 in+ *[\\/]* ) as_myself=$0 ;;+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR+for as_dir in $PATH+do+ IFS=$as_save_IFS+ test -z "$as_dir" && as_dir=.+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break+done+IFS=$as_save_IFS++ ;;+esac+# We did not find ourselves, most probably we were run as `sh COMMAND'+# in which case we are not to be found in the path.+if test "x$as_myself" = x; then+ as_myself=$0+fi+if test ! -f "$as_myself"; then+ echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2+ { (exit 1); exit 1; }+fi++# Work around bugs in pre-3.0 UWIN ksh.+for as_var in ENV MAIL MAILPATH+do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var+done+PS1='$ '+PS2='> '+PS4='+ '++# NLS nuisances.+for as_var in \+ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \+ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \+ LC_TELEPHONE LC_TIME+do+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then+ eval $as_var=C; export $as_var+ else+ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var+ fi+done++# Required to use basename.+if expr a : '\(a\)' >/dev/null 2>&1 &&+ test "X`expr 00001 : '.*\(...\)'`" = X001; then+ as_expr=expr+else+ as_expr=false+fi++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then+ as_basename=basename+else+ as_basename=false+fi+++# Name of the executable.+as_me=`$as_basename -- "$0" ||+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \+ X"$0" : 'X\(//\)$' \| \+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||+echo X/"$0" |+ sed '/^.*\/\([^/][^/]*\)\/*$/{+ s//\1/+ q+ }+ /^X\/\(\/\/\)$/{+ s//\1/+ q+ }+ /^X\/\(\/\).*/{+ s//\1/+ q+ }+ s/.*/./; q'`++# CDPATH.+$as_unset CDPATH++++ as_lineno_1=$LINENO+ as_lineno_2=$LINENO+ test "x$as_lineno_1" != "x$as_lineno_2" &&+ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {++ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO+ # uniformly replaced by the line number. The first 'sed' inserts a+ # line-number line after each line using $LINENO; the second 'sed'+ # does the real work. The second script uses 'N' to pair each+ # line-number line with the line containing $LINENO, and appends+ # trailing '-' during substitution so that $LINENO is not a special+ # case at line end.+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the+ # scripts with optimization help from Paolo Bonzini. Blame Lee+ # E. McMahon (1931-1989) for sed's syntax. :-)+ sed -n '+ p+ /[$]LINENO/=+ ' <$as_myself |+ sed '+ s/[$]LINENO.*/&-/+ t lineno+ b+ :lineno+ N+ :loop+ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/+ t loop+ s/-\n.*//+ ' >$as_me.lineno &&+ chmod +x "$as_me.lineno" ||+ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2+ { (exit 1); exit 1; }; }++ # Don't try to exec as it changes $[0], causing all sort of problems+ # (the dirname of $[0] is not the place where we might find the+ # original and so on. Autoconf is especially sensitive to this).+ . "./$as_me.lineno"+ # Exit status is that of the last command.+ exit+}+++if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then+ as_dirname=dirname+else+ as_dirname=false+fi++ECHO_C= ECHO_N= ECHO_T=+case `echo -n x` in+-n*)+ case `echo 'x\c'` in+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.+ *) ECHO_C='\c';;+ esac;;+*)+ ECHO_N='-n';;+esac++if expr a : '\(a\)' >/dev/null 2>&1 &&+ test "X`expr 00001 : '.*\(...\)'`" = X001; then+ as_expr=expr+else+ as_expr=false+fi++rm -f conf$$ conf$$.exe conf$$.file+if test -d conf$$.dir; then+ rm -f conf$$.dir/conf$$.file+else+ rm -f conf$$.dir+ mkdir conf$$.dir+fi+echo >conf$$.file+if ln -s conf$$.file conf$$ 2>/dev/null; then+ as_ln_s='ln -s'+ # ... but there are two gotchas:+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.+ # In both cases, we have to default to `cp -p'.+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||+ as_ln_s='cp -p'+elif ln conf$$.file conf$$ 2>/dev/null; then+ as_ln_s=ln+else+ as_ln_s='cp -p'+fi+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file+rmdir conf$$.dir 2>/dev/null++if mkdir -p . 2>/dev/null; then+ as_mkdir_p=:+else+ test -d ./-p && rmdir ./-p+ as_mkdir_p=false+fi++if test -x / >/dev/null 2>&1; then+ as_test_x='test -x'+else+ if ls -dL / >/dev/null 2>&1; then+ as_ls_L_option=L+ else+ as_ls_L_option=+ fi+ as_test_x='+ eval sh -c '\''+ if test -d "$1"; then+ test -d "$1/.";+ else+ case $1 in+ -*)set "./$1";;+ esac;+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in+ ???[sx]*):;;*)false;;esac;fi+ '\'' sh+ '+fi+as_executable_p=$as_test_x++# Sed expression to map a string onto a valid CPP name.+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"++# Sed expression to map a string onto a valid variable name.+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"+++exec 6>&1++# Save the log message, to keep $[0] and so on meaningful, and to+# report actual input values of CONFIG_FILES etc. instead of their+# values after options handling.+ac_log="+This file was extended by Haskell CUDA bindings $as_me 0.4.0.0, which was+generated by GNU Autoconf 2.61. Invocation command line was++ CONFIG_FILES = $CONFIG_FILES+ CONFIG_HEADERS = $CONFIG_HEADERS+ CONFIG_LINKS = $CONFIG_LINKS+ CONFIG_COMMANDS = $CONFIG_COMMANDS+ $ $0 $@++on `(hostname || uname -n) 2>/dev/null | sed 1q`+"++_ACEOF++cat >>$CONFIG_STATUS <<_ACEOF+# Files that config.status was made for.+config_files="$ac_config_files"++_ACEOF++cat >>$CONFIG_STATUS <<\_ACEOF+ac_cs_usage="\+\`$as_me' instantiates files from templates according to the+current configuration.++Usage: $0 [OPTIONS] [FILE]...++ -h, --help print this help, then exit+ -V, --version print version number and configuration settings, then exit+ -q, --quiet do not print progress messages+ -d, --debug don't remove temporary files+ --recheck update $as_me by reconfiguring in the same conditions+ --file=FILE[:TEMPLATE]+ instantiate the configuration file FILE++Configuration files:+$config_files++Report bugs to <bug-autoconf@gnu.org>."++_ACEOF+cat >>$CONFIG_STATUS <<_ACEOF+ac_cs_version="\\+Haskell CUDA bindings config.status 0.4.0.0+configured by $0, generated by GNU Autoconf 2.61,+ with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"++Copyright (C) 2006 Free Software Foundation, Inc.+This config.status script is free software; the Free Software Foundation+gives unlimited permission to copy, distribute and modify it."++ac_pwd='$ac_pwd'+srcdir='$srcdir'+_ACEOF++cat >>$CONFIG_STATUS <<\_ACEOF+# If no file are specified by the user, then we need to provide default+# value. By we need to know if files were specified by the user.+ac_need_defaults=:+while test $# != 0+do+ case $1 in+ --*=*)+ ac_option=`expr "X$1" : 'X\([^=]*\)='`+ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`+ ac_shift=:+ ;;+ *)+ ac_option=$1+ ac_optarg=$2+ ac_shift=shift+ ;;+ esac++ case $ac_option in+ # Handling of the options.+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)+ ac_cs_recheck=: ;;+ --version | --versio | --versi | --vers | --ver | --ve | --v | -V )+ echo "$ac_cs_version"; exit ;;+ --debug | --debu | --deb | --de | --d | -d )+ debug=: ;;+ --file | --fil | --fi | --f )+ $ac_shift+ CONFIG_FILES="$CONFIG_FILES $ac_optarg"+ ac_need_defaults=false;;+ --he | --h | --help | --hel | -h )+ echo "$ac_cs_usage"; exit ;;+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \+ | -silent | --silent | --silen | --sile | --sil | --si | --s)+ ac_cs_silent=: ;;++ # This is an error.+ -*) { echo "$as_me: error: unrecognized option: $1+Try \`$0 --help' for more information." >&2+ { (exit 1); exit 1; }; } ;;++ *) ac_config_targets="$ac_config_targets $1"+ ac_need_defaults=false ;;++ esac+ shift+done++ac_configure_extra_args=++if $ac_cs_silent; then+ exec 6>/dev/null+ ac_configure_extra_args="$ac_configure_extra_args --silent"+fi++_ACEOF+cat >>$CONFIG_STATUS <<_ACEOF+if \$ac_cs_recheck; then+ echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6+ CONFIG_SHELL=$SHELL+ export CONFIG_SHELL+ exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion+fi++_ACEOF+cat >>$CONFIG_STATUS <<\_ACEOF+exec 5>>config.log+{+ echo+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX+## Running $as_me. ##+_ASBOX+ echo "$ac_log"+} >&5++_ACEOF+cat >>$CONFIG_STATUS <<_ACEOF+_ACEOF++cat >>$CONFIG_STATUS <<\_ACEOF++# Handling of arguments.+for ac_config_target in $ac_config_targets+do+ case $ac_config_target in+ "cuda.buildinfo") CONFIG_FILES="$CONFIG_FILES cuda.buildinfo" ;;++ *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5+echo "$as_me: error: invalid argument: $ac_config_target" >&2;}+ { (exit 1); exit 1; }; };;+ esac+done+++# If the user did not use the arguments to specify the items to instantiate,+# then the envvar interface is used. Set only those that are not.+# We use the long form for the default assignment because of an extremely+# bizarre bug on SunOS 4.1.3.+if $ac_need_defaults; then+ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files+fi++# Have a temporary directory for convenience. Make it in the build tree+# simply because there is no reason against having it here, and in addition,+# creating and moving files from /tmp can sometimes cause problems.+# Hook for its removal unless debugging.+# Note that there is a small window in which the directory will not be cleaned:+# after its creation but before its name has been assigned to `$tmp'.+$debug ||+{+ tmp=+ trap 'exit_status=$?+ { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status+' 0+ trap '{ (exit 1); exit 1; }' 1 2 13 15+}+# Create a (secure) tmp directory for tmp files.++{+ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&+ test -n "$tmp" && test -d "$tmp"+} ||+{+ tmp=./conf$$-$RANDOM+ (umask 077 && mkdir "$tmp")+} ||+{+ echo "$me: cannot create a temporary directory in ." >&2+ { (exit 1); exit 1; }+}++#+# Set up the sed scripts for CONFIG_FILES section.+#++# No need to generate the scripts if there are no CONFIG_FILES.+# This happens for instance when ./config.status config.h+if test -n "$CONFIG_FILES"; then++_ACEOF++++ac_delim='%!_!# '+for ac_last_try in false false false false false :; do+ cat >conf$$subs.sed <<_ACEOF+SHELL!$SHELL$ac_delim+PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim+PACKAGE_NAME!$PACKAGE_NAME$ac_delim+PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim+PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim+PACKAGE_STRING!$PACKAGE_STRING$ac_delim+PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim+exec_prefix!$exec_prefix$ac_delim+prefix!$prefix$ac_delim+program_transform_name!$program_transform_name$ac_delim+bindir!$bindir$ac_delim+sbindir!$sbindir$ac_delim+libexecdir!$libexecdir$ac_delim+datarootdir!$datarootdir$ac_delim+datadir!$datadir$ac_delim+sysconfdir!$sysconfdir$ac_delim+sharedstatedir!$sharedstatedir$ac_delim+localstatedir!$localstatedir$ac_delim+includedir!$includedir$ac_delim+oldincludedir!$oldincludedir$ac_delim+docdir!$docdir$ac_delim+infodir!$infodir$ac_delim+htmldir!$htmldir$ac_delim+dvidir!$dvidir$ac_delim+pdfdir!$pdfdir$ac_delim+psdir!$psdir$ac_delim+libdir!$libdir$ac_delim+localedir!$localedir$ac_delim+mandir!$mandir$ac_delim+DEFS!$DEFS$ac_delim+ECHO_C!$ECHO_C$ac_delim+ECHO_N!$ECHO_N$ac_delim+ECHO_T!$ECHO_T$ac_delim+LIBS!$LIBS$ac_delim+build_alias!$build_alias$ac_delim+host_alias!$host_alias$ac_delim+target_alias!$target_alias$ac_delim+CC!$CC$ac_delim+CFLAGS!$CFLAGS$ac_delim+LDFLAGS!$LDFLAGS$ac_delim+CPPFLAGS!$CPPFLAGS$ac_delim+ac_ct_CC!$ac_ct_CC$ac_delim+EXEEXT!$EXEEXT$ac_delim+OBJEXT!$OBJEXT$ac_delim+build!$build$ac_delim+build_cpu!$build_cpu$ac_delim+build_vendor!$build_vendor$ac_delim+build_os!$build_os$ac_delim+host!$host$ac_delim+host_cpu!$host_cpu$ac_delim+host_vendor!$host_vendor$ac_delim+host_os!$host_os$ac_delim+target!$target$ac_delim+target_cpu!$target_cpu$ac_delim+target_vendor!$target_vendor$ac_delim+target_os!$target_os$ac_delim+NVCC!$NVCC$ac_delim+CPP!$CPP$ac_delim+GREP!$GREP$ac_delim+EGREP!$EGREP$ac_delim+cuda_cppflags!$cuda_cppflags$ac_delim+cuda_ldflags!$cuda_ldflags$ac_delim+cuda_c2hsflags!$cuda_c2hsflags$ac_delim+LIBOBJS!$LIBOBJS$ac_delim+LTLIBOBJS!$LTLIBOBJS$ac_delim+_ACEOF++ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 65; then break elif $ac_last_try; then { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
configure.ac view
@@ -1,7 +1,7 @@-AC_INIT([Haskell CUDA bindings], [0.3.2], [tmcdonell@cse.unsw.edu.au], [cuda])+AC_INIT([Haskell CUDA bindings], [0.4.0.0], [tmcdonell@cse.unsw.edu.au], [cuda]) AC_CONFIG_SRCDIR([Foreign/CUDA.hs]) AC_CONFIG_FILES([cuda.buildinfo])-AC_PROG_CXX+AC_PROG_CC # Determine the target platform #@@ -14,25 +14,26 @@ AC_PATH_PROG(NVCC, nvcc) if test "$NVCC" != ""; then cuda_prefix="$(dirname $(dirname $NVCC))"- cuda_c2hsflags+="--cpp=$NVCC --cppopts=-E "- CPPFLAGS+="-I${cuda_prefix}/include "+ cuda_c2hsflags="--cpp=$NVCC --cppopts=-E "+ CPPFLAGS+=" -I${cuda_prefix}/include " # CC=${NVCC} case $target in- x86_64*) LDFLAGS+="-L${cuda_prefix}/lib64 " ;;- *) LDFLAGS+="-L${cuda_prefix}/lib " ;;+ x86_64*) LDFLAGS+=" -L${cuda_prefix}/lib64 " ;;+ *) LDFLAGS+=" -L${cuda_prefix}/lib " ;; esac fi -# Snow Leopard (Mac OS X 10.6) provides a C extension for creating lambda-like-# closure expressions (blocks), the syntax for which confuses the c2hs-# preprocessor. We disable this by undefining the __BLOCKS__ macro.+# Recent versions of Mac OS X (10.6 and later) provides a C extension for+# creating lambda-like closure expressions (blocks), the syntax for which+# confuses the c2hs preprocessor. We disable this by undefining the __BLOCKS__+# macro. # AC_MSG_CHECKING(for Apple Blocks extension)-if test -r "/System/Library/CoreServices/SystemVersion.plist"; then- SNOWLEOPARD=`grep '<string>10.6' /System/Library/CoreServices/SystemVersion.plist`+if test -r "/usr/include/stdlib.h"; then+ BLOCKS=`grep __BLOCKS__ /usr/include/stdlib.h` fi-if test "$SNOWLEOPARD" != ""; then+if test "$BLOCKS" != ""; then cuda_c2hsflags+="--cppopts=-U__BLOCKS__ " AC_MSG_RESULT(yes) else@@ -47,7 +48,7 @@ The configuration process failed to locate your CUDA installation. Ensure that you have installed the driver and developer toolkit, available from: - http://developer.nvidia.com/object/cuda.html+ http://developer.nvidia.com/cuda-downloads Then make sure that "nvcc" is available in your PATH, or set the appropriate directories with --extra-include-dirs and --extra-lib-dirs.
cuda.cabal view
@@ -1,5 +1,5 @@ Name: cuda-Version: 0.3.2.2+Version: 0.4.0.0 Synopsis: FFI binding to the CUDA interface for programming NVIDIA GPUs Description: The CUDA library provides a direct, general purpose C-like SPMD programming@@ -8,30 +8,12 @@ functions from Haskell-land. You will need to install the CUDA driver and developer toolkit. .- <http://developer.nvidia.com/object/cuda.html>+ <http://developer.nvidia.com/cuda-downloads> . The configure script will look for your CUDA installation in the standard places, and if the nvcc compiler is found in your PATH, relative to that. .- > CHANGE LOG- > 0.3.2- > - Initial support for CUDA 3.2- >- > 0.2.2- > - Foreign.CUDA.Analysis.optimalBlockSizeBy- >- > 0.2.1- > - Improved cabal configuration phase- > - Fixes for SDK 3.1 release changes- > - Additional CUDA 3.1 bindings- >- > 0.2- > - Occupancy calculator- > - Textures- > - Additional CUDA 3.0 bindings- >- > 0.1- > - Initial release+ This release is for version 4.0 of the CUDA toolkit. License: BSD3 License-file: LICENSE@@ -50,6 +32,7 @@ config.sub install-sh cuda.buildinfo.in+ cbits/stubs.h Library Exposed-Modules: Foreign.CUDA@@ -89,4 +72,9 @@ Build-depends: base >= 3 && < 5, bytestring, extensible-exceptions Extensions: ghc-options: -Wall -O2+++source-repository head+ type: git+ location: https://github.com/tmcdonell/cuda
− examples/Makefile
@@ -1,18 +0,0 @@-ifneq ($(emu),1)- PROJECTS := $(shell find src -name Makefile)-else- PROJECTS := $(shell find src -name Makefile | xargs grep -L 'USEDRVAPI')-endif---%.do :- $(MAKE) -C $(dir $*) $(MAKECMDGOALS)--all : $(addsuffix .do,$(PROJECTS))- @echo "Finished building all"--clean : $(addsuffix .do,$(PROJECTS))- @echo "Finished cleaning all"--clobber : $(addsuffix .do,$(PROJECTS))- @echo "Finished cleaning all"
− examples/common/common.mk
@@ -1,413 +0,0 @@-# -------------------------------------------------------------------------------#-# Copyright 1993-2009 NVIDIA Corporation. All rights reserved.-#-# NVIDIA Corporation and its licensors retain all intellectual property and -# proprietary rights in and to this software and related documentation. -# Any use, reproduction, disclosure, or distribution of this software -# and related documentation without an express license agreement from-# NVIDIA Corporation is strictly prohibited.-#-# Please refer to the applicable NVIDIA end user license agreement (EULA) -# associated with this source code for terms and conditions that govern -# your use of this NVIDIA software.-#-# --------------------------------------------------------------------------------# -------------------------------------------------------------------------------# Common Haskell/CUDA build system-# --------------------------------------------------------------------------------.SUFFIXES : .cu .cu_dbg.o .c_dbg.o .cpp_dbg.o .cu_rel.o .c_rel.o .cpp_rel.o .cubin .ptx--# No CUDA compatible device present-# MAIN_DEVICE := $(shell ghc -e "Control.Monad.liftM (Data.Either.either id Foreign.CUDA.deviceName) (Foreign.CUDA.props 0)")-# ifeq ($(MAIN_DEVICE),"Device Emulation (CPU)")-# emu := 1-# endif--# Add new SM Versions here as devices with new Compute Capability are released-SM_VERSIONS := sm_10 sm_11 sm_12 sm_13--# detect OS-OSUPPER := $(shell uname -s 2>/dev/null | tr [:lower:] [:upper:])-OSLOWER := $(shell uname -s 2>/dev/null | tr [:upper:] [:lower:])-DARWIN := $(strip $(findstring DARWIN, $(OSUPPER)))-ifneq ($(DARWIN),)- SNOWLEOPARD := $(strip $(findstring 10.6, $(shell egrep "<string>10\.6.*</string>" /System/Library/CoreServices/SystemVersion.plist)))-endif--# detect if 32 bit or 64 bit system-HP_64 := $(strip $(shell uname -m | grep 64))--# Basic directory setup-CUDA_INSTALL_PATH ?= /usr/local/cuda-CUDA_SDK_PATH ?= /Developer/GPU\ Computing/C--SRCDIR ?= .-ROOTDIR ?= ..-ROOTBINDIR := $(ROOTDIR)/../bin-BINDIR := $(ROOTBINDIR)/$(OSLOWER)-ROOTOBJDIR := obj-LIBDIR := $(ROOTDIR)/../lib-COMMONDIR := $(ROOTDIR)/../common--# Compilers-NVCC := $(CUDA_INSTALL_PATH)/bin/nvcc-GHC := ghc-C2HS := c2hs-HSC2HS := hsc2hs-CXX := g++-CC := gcc-LINK := g++ -fPIC--# Includes-INCLUDES += -I. -I$(CUDA_INSTALL_PATH)/include -I$(COMMONDIR)/include -I$(COMMONDIR)/src--# architecture flag for cubin build-CUBIN_ARCH_FLAG :=--# Warning flags-CXXWARN_FLAGS := \- -W -Wall \- -Wimplicit \- -Wswitch \- -Wformat \- -Wchar-subscripts \- -Wparentheses \- -Wmultichar \- -Wtrigraphs \- -Wpointer-arith \- -Wcast-align \- -Wreturn-type \- -Wno-unused-function--CWARN_FLAGS := $(CXXWARN_FLAGS) \- -Wstrict-prototypes \- -Wmissing-prototypes \- -Wmissing-declarations \- -Wnested-externs \- -Wmain--GHCWARN_FLAGS := \- -Wall--# cross-compilation flags-ifeq ($(x86_64),1)- NVCCFLAGS += -m64- ifneq ($(DARWIN),)- CXX_ARCH_FLAGS += -arch x86_64- else- CXX_ARCH_FLAGS += -m64- endif-else-ifeq ($(i386),1)- NVCCFLAGS += -m32- ifneq ($(DARWIN),)- CXX_ARCH_FLAGS += -arch i386- else- CXX_ARCH_FLAGS += -m32- endif-else- ifneq ($(SNOWLEOPARD),)- NVCCFLAGS += -m32- CXX_ARCH_FLAGS += -arch i386 -m32- endif-endif-endif--# Compiler-specific flags-NVCCFLAGS +=-GHCFLAGS += $(GHCWARN_FLAGS) -i$(SRCDIR) -i$(COMMONDIR)/src -i$(OBJDIR) -odir $(OBJDIR) -hidir $(OBJDIR) --make-CXXFLAGS += $(CXXWARN_FLAGS) $(CXX_ARCH_FLAGS)-CFLAGS += $(CWARN_FLAGS) $(CXX_ARCH_FLAGS)-LINK += $(CXX_ARCH_FLAGS)--# Common flags-COMMONFLAGS += $(INCLUDES) -DUNIX--# Debug/release configuration-ifeq ($(dbg),1)- COMMONFLAGS += -g- GHCFLAGS += -prof -auto-all -fhpc- NVCCFLAGS += -D_DEBUG- CXXFLAGS += -D_DEBUG- CFLAGS += -D_DEBUG- BINSUBDIR := debug- LIBSUFFIX := D-else- COMMONFLAGS += -O2- GHCFLAGS += -O2- BINSUBDIR := release- LIBSUFFIX :=- NVCCFLAGS += --compiler-options -fno-strict-aliasing- CXXFLAGS += -fno-strict-aliasing- CFLAGS += -fno-strict-aliasing-endif--# Device emulation configuration-ifeq ($(emu),1)- NVCCFLAGS += -deviceemu- CUDACCFLAGS +=- BINSUBDIR := emu$(BINSUBDIR)- LIBSUFFIX := $(LIBSUFFIX)_emu- # consistency, makes developing easier- C2HSFLAGS += --cppopts=-D__DEVICE_EMULATION__- GHCFLAGS += -D__DEVICE_EMULATION__- CXXFLAGS += -D__DEVICE_EMULATION__- CFLAGS += -D__DEVICE_EMULATION__-endif--# architecture flag for cubin build-CUBIN_ARCH_FLAG :=--# Libraries-LIB += -L$(LIBDIR) $(addprefix -l,$(EXTRALIBS))-ifeq ($(HP_64),)- LIB += -L$(CUDA_INSTALL_PATH)/lib-else- LIB += -L$(CUDA_INSTALL_PATH)/lib64-endif--# If dynamically linking to CUDA and CUDART, we exclude the libraries from the LIB-ifeq ($(USECUDADYNLIB),1)- LIB += -ldl -rdynamic-else- # static linking, we will statically link against CUDA and CUDART- ifeq ($(USEDRVAPI),1)- LIB += -lcuda- else- LIB += -lcudart- endif-endif--ifeq ($(USECUFFT),1)- ifeq ($(emu),1)- LIB += -lcufftemu- else- LIB += -lcufft- endif-endif--ifeq ($(USECUBLAS),1)- ifeq ($(emu),1)- LIB += -lcublasemu- else- LIB += -lcublas- endif-endif--ifeq ($(USECUDPP),1)- CUDPPLIB := cudpp-- ifneq ($(HP_64),)- CUDPPLIB := $(CUDPPLIB)64- endif-- ifeq ($(emu),1)- CUDPPLIB := $(CUDPPLIB)_emu- endif-- LIB += -l$(CUDPPLIB)-endif--# Library/executable configuration-ifneq ($(STATIC_LIB),)- TARGETDIR := $(LIBDIR)- TARGET := $(LIBDIR)/$(basename $(STATIC_LIB))$(LIBSUFFIX)$(suffix $(STATIC_LIB))- LINKLINE = ar rucv $(TARGET) $(OBJS); ranlib $(TARGET)-else-ifneq ($(DYNAMIC_LIB),)- TARGETDIR := $(LIBDIR)- TARGET := $(LIBDIR)/$(basename $(DYNAMIC_LIB))$(LIBSUFFIX)$(suffix $(DYNAMIC_LIB))- CFLAGS += -fPIC- CXXFLAGS += -fPIC- NVCCFLAGS += -Xcompiler -fPIC- ifneq ($(DARWIN),)- LINKLINE = $(LINK) -dynamiclib -o $(TARGET) -install_name "@rpath/$(notdir $(TARGET))" $(OBJS) $(LIB)- else- LINKLINE = $(LINK) -shared -o $(TARGET) -Wl,-rpath,$(notdir $(TARGET)) $(OBJS) $(LIB)- endif-else- TARGETDIR := $(BINDIR)/$(BINSUBDIR)- TARGET := $(TARGETDIR)/$(EXECUTABLE)- ifneq ($(HSMAIN),)- ifeq ($(suffix $(HSMAIN)),.chs)- FOO := $(HSMAIN)- CHSFILES += $(FOO)- HSMAIN = $(OBJDIR)/$(basename $(FOO)).hs- endif-- ifeq ($(dbg),1)-# OBJS += $(OBJDIR)/ptxvars.cu.o- LINKLINE = $(GHC) -o $(TARGET) $(LIB) $(OBJS) $(GHCFLAGS) $(HSMAIN)- else- LINKLINE = $(GHC) -o $(TARGET) $(LIB) $(OBJS) $(GHCFLAGS) $(HSMAIN)- endif- else- LINKLINE = $(LINK) -o $(TARGET) $(OBJS) $(LIB)- endif-endif-endif--# check if verbose-ifeq ($(verbose),1)- VERBOSE :=-else- VERBOSE := @-endif---# -------------------------------------------------------------------------------# Check for input flags and set compiler flags appropriately-# -------------------------------------------------------------------------------ifeq ($(fastmath),1)- NVCCFLAGS += -use_fast_math-endif--ifeq ($(keep),1)- NVCCFLAGS += -keep- NVCC_KEEP_CLEAN := *.i* *.cubin *.cu.c *.cudafe* *.fatbin.c *.ptx-endif--ifdef maxregisters- NVCCFLAGS += -maxrregcount $(maxregisters)-endif--# Add cudacc flags-NVCCFLAGS += $(CUDACCFLAGS)--# Add common flags-NVCCFLAGS += $(COMMONFLAGS)-CXXFLAGS += $(COMMONFLAGS)-CFLAGS += $(COMMONFLAGS)--ifeq ($(nvcc_warn_verbose),1)- NVCCFLAGS += $(addprefix --compiler-options ,$(CXXWARN_FLAGS))- NVCCFLAGS += --compiler-options -fno-strict-aliasing-endif---# -------------------------------------------------------------------------------# Set up object files-# -------------------------------------------------------------------------------OBJDIR := $(ROOTOBJDIR)/$(BINSUBDIR)-OBJS += $(patsubst %.cpp,$(OBJDIR)/%.cpp.o,$(notdir $(CCFILES)))-OBJS += $(patsubst %.c,$(OBJDIR)/%.c.o,$(notdir $(CFILES)))-OBJS += $(patsubst %.cu,$(OBJDIR)/%.cu.o,$(notdir $(CUFILES)))--# -------------------------------------------------------------------------------# Set up preprocessed Haskell files-# -------------------------------------------------------------------------------DEPS += $(patsubst %.chs,$(OBJDIR)/%.hs,$(notdir $(CHSFILES)))-DEPS += $(patsubst %.hsc,$(OBJDIR)/%.hs,$(notdir $(HSCFILES)))--# -------------------------------------------------------------------------------# Set up cubin output files-# -------------------------------------------------------------------------------CUBINDIR := $(SRCDIR)/data-CUBINS += $(patsubst %.cu,$(CUBINDIR)/%.cubin,$(notdir $(CUBINFILES)))--# -------------------------------------------------------------------------------# Set up PTX output files-# -------------------------------------------------------------------------------PTXDIR := $(SRCDIR)/data-PTXBINS += $(patsubst %.cu,$(PTXDIR)/%.ptx,$(notdir $(PTXFILES)))---# -------------------------------------------------------------------------------# Rules-# -------------------------------------------------------------------------------default: $(TARGET)--%.subdir :- $(VERBOSE)$(MAKE) -C $* $(MAKECMDGOALS)--$(OBJDIR)/%.c.o : $(SRCDIR)/%.c $(C_DEPS)- $(VERBOSE)$(CC) $(CFLAGS) -o $@ -c $<--$(OBJDIR)/%.cpp.o : $(SRCDIR)/%.cpp $(C_DEPS)- $(VERBOSE)$(CXX) $(CXXFLAGS) -o $@ -c $<--$(OBJDIR)/ptxvars.cu.o: makedirectories- $(VERBOSE)$(NVCC) -g -G --host-compilation=C -D__DEVICE_LAUNCH_PARAMETERS_H__ -Xptxas -fext -o $@ -c $(CUDA_INSTALL_PATH)/bin/ptxvars.cu--$(OBJDIR)/%.cu.o : $(SRCDIR)/%.cu $(CU_DEPS)- $(VERBOSE)$(NVCC) $(NVCCFLAGS) $(SMVERSIONFLAGS) -o $@ -c $<--$(OBJDIR)/%.hs : $(SRCDIR)/%.chs- $(VERBOSE)$(C2HS) $(C2HSFLAGS) --include=$(OBJDIR) $(addprefix --cppopts=,$(INCLUDES)) --output-dir=$(OBJDIR) --output=$(notdir $@) $<--$(OBJDIR)/%.hs : $(SRCDIR)/%.hsc- $(VERBOSE)$(HSC2HS) $(INCLUDES) -o $@ $<--$(CUBINDIR)/%.cubin : $(SRCDIR)/%.cu cubindirectory- $(VERBOSE)$(NVCC) $(CUBIN_ARCH_FLAG) $(NVCCFLAGS) $(SMVERSIONFLAGS) -o $@ -cubin $<--$(PTXDIR)/%.ptx : $(SRCDIR)/%.cu ptxdirectory- $(VERBOSE)$(NVCC) $(CUBIN_ARCH_FLAG) $(NVCCFLAGS) $(SMVERSIONFLAGS) -o $@ -ptx $<--#-# The following definition is a template that gets instantiated for each SM-# version (sm_10, sm_13, etc.) stored in SMVERSIONS. It does 2 things:-# 1. It adds to OBJS a .cu_sm_XX.o for each .cu file it finds in CUFILES_sm_XX.-# 2. It generates a rule for building .cu_sm_XX.o files from the corresponding-# .cu file.-#-# The intended use for this is to allow Makefiles that use common.mk to compile-# files to different Compute Capability targets (aka SM arch version). To do-# so, in the Makefile, list files for each SM arch separately, like so:-#-# CUFILES_sm_10 := mycudakernel_sm10.cu app.cu-# CUFILES_sm_12 := anothercudakernel_sm12.cu-#-define SMVERSION_template-OBJS += $(patsubst %.cu,$(OBJDIR)/%.cu_$(1).o,$(notdir $(CUFILES_$(1))))-$(OBJDIR)/%.cu_$(1).o : $(SRCDIR)/%.cu $(CU_DEPS)- $(VERBOSE)$(NVCC) -o $$@ -c $$< $(NVCCFLAGS) -arch $(1)-endef--# This line invokes the above template for each arch version stored in-# SM_VERSIONS. The call funtion invokes the template, and the eval-# function interprets it as make commands.-$(foreach smver,$(SM_VERSIONS),$(eval $(call SMVERSION_template,$(smver))))--$(TARGET): makedirectories $(DEPS) $(OBJS) $(CUBINS) $(PTXBINS) Makefile $(addsuffix .subdir,$(SUBDIRS))- $(VERBOSE)$(LINKLINE)--cubindirectory:- $(VERBOSE)mkdir -p $(CUBINDIR)--ptxdirectory:- $(VERBOSE)mkdir -p $(PTXDIR)--makedirectories:- $(VERBOSE)mkdir -p $(LIBDIR)- $(VERBOSE)mkdir -p $(OBJDIR)- $(VERBOSE)mkdir -p $(TARGETDIR)---tidy : $(addsuffix .subdir,$(SUBDIRS))- $(VERBOSE)find . | egrep "#" | xargs rm -f- $(VERBOSE)find . | egrep "\~" | xargs rm -f--clean : tidy- $(VERBOSE)rm -f $(OBJS)- $(VERBOSE)rm -f $(CUBINS)- $(VERBOSE)rm -f $(PTXBINS)- $(VERBOSE)rm -f $(TARGET)- $(VERBOSE)rm -f $(NVCC_KEEP_CLEAN)- $(VERBOSE)rm -f $(ROOTBINDIR)/$(OSLOWER)/$(BINSUBDIR)/*.ppm- $(VERBOSE)rm -f $(ROOTBINDIR)/$(OSLOWER)/$(BINSUBDIR)/*.pgm- $(VERBOSE)rm -f $(ROOTBINDIR)/$(OSLOWER)/$(BINSUBDIR)/*.bin- $(VERBOSE)rm -f $(ROOTBINDIR)/$(OSLOWER)/$(BINSUBDIR)/*.bmp--clobber : clean- $(VERBOSE)rm -rf $(ROOTOBJDIR)--spotless:- $(VERBOSE)rm -rf .hpc- $(VERBOSE)rm -f $(EXECUTABLE).{aux,hp,prof,ps}- $(VERBOSE)rm -f *.html- $(VERBOSE)find . -name "*.tix" -print0 | xargs -0 rm -f-
− examples/common/include/cudpp/LICENSE
@@ -1,25 +0,0 @@-Copyright (c) 2007-2009 The Regents of the University of California, Davis-campus ("The Regents") and NVIDIA Corporation ("NVIDIA"). 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 The Regents, nor NVIDIA, 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 HOLDER 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.
− examples/common/include/cudpp/cudpp_globals.h
@@ -1,56 +0,0 @@-// --------------------------------------------------------------// cuDPP -- CUDA Data Parallel Primitives library-// --------------------------------------------------------------// $Revision: 5632 $-// $Date: 2009-07-01 14:36:01 +1000 (Wed, 01 Jul 2009) $-// --------------------------------------------------------------// This source code is distributed under the terms of license.txt in-// the root directory of this source distribution.-// ---------------------------------------------------------------/**- * @file- * cudpp_globals.h- *- * @brief Global declarations defining machine characteristics of GPU target- * These are currently set for best performance on G8X GPUs. The optimal- * parameters may change on future GPUs. In the future, we hope to make- * CUDPP a self-tuning library.- */--#ifndef __CUDPP_GLOBALS_H__-#define __CUDPP_GLOBALS_H__--const int NUM_BANKS = 16; /**< Number of shared memory banks */-const int LOG_NUM_BANKS = 4; /**< log_2(NUM_BANKS) */-const int CTA_SIZE = 128; /**< Number of threads in a CTA */-const int WARP_SIZE = 32; /**< Number of threads in a warp */-const int LOG_CTA_SIZE = 7; /**< log_2(CTA_SIZE) */-const int LOG_WARP_SIZE = 5; /**< log_2(WARP_SIZE) */-const int LOG_SIZEOF_FLOAT = 2; /**< log_2(sizeof(float)) */-const int SCAN_ELTS_PER_THREAD = 8; /**< Number of elements per scan thread */-const int SEGSCAN_ELTS_PER_THREAD = 8; /**< Number of elements per segmented scan thread */--const int maxSharedMemoryPerBlock = 16384; /**< Number of bytes of shared- memory in each block */-const int maxThreadsPerBlock = CTA_SIZE; /**< Maximum number of- * threads in a CTA */--#define AVOID_BANK_CONFLICTS /**< Set if by default, we want our- * shared memory allocation to perform- * additional computation to avoid bank- * conflicts */--#ifdef AVOID_BANK_CONFLICTS-#define CONFLICT_FREE_OFFSET(index) ((index) >> LOG_NUM_BANKS)-#else-#define CONFLICT_FREE_OFFSET(index) (0)-#endif--#endif // __CUDPP_GLOBALS_H__--// Leave this at the end of the file-// Local Variables:-// mode:c++-// c-file-style: "NVIDIA"-// End:
@@ -1,115 +0,0 @@-// --------------------------------------------------------------// cuDPP -- CUDA Data Parallel Primitives library-// --------------------------------------------------------------// $Revision: 5633 $-// $Date: 2009-07-01 15:02:51 +1000 (Wed, 01 Jul 2009) $-// --------------------------------------------------------------// This source code is distributed under the terms of license.txt-// in the root directory of this source distribution.-// ---------------------------------------------------------------/**- * @file- * sharedmem.h- *- * @brief Shared memory declaration struct for templatized types.- *- * Because dynamically sized shared memory arrays are declared "extern" in CUDA,- * we can't templatize their types directly. To get around this, we declare a- * simple wrapper struct that will declare the extern array with a different- * name depending on the type. This avoids linker errors about multiple- * definitions.- *- * To use dynamically allocated shared memory in a templatized __global__ or- * __device__ function, just replace code like this:- *- * <pre>- * template<class T>- * __global__ void- * foo( T* d_out, T* d_in)- * {- * // Shared mem size is determined by the host app at run time- * extern __shared__ T sdata[];- * ...- * doStuff(sdata);- * ...- * }- * </pre>- *- * With this- * <pre>- * template<class T>- * __global__ void- * foo( T* d_out, T* d_in)- * {- * // Shared mem size is determined by the host app at run time- * SharedMemory<T> smem;- * T* sdata = smem.getPointer();- * ...- * doStuff(sdata);- * ...- * }- * </pre>- */--#ifndef __SHARED_MEM_H__-#define __SHARED_MEM_H__---/** @brief Wrapper class for templatized dynamic shared memory arrays.- *- * This struct uses template specialization on the type \a T to declare- * a differently named dynamic shared memory array for each type- * (\code extern __shared__ T s_type[] \endcode).- *- * Currently there are specializations for the following types:- * \c int, \c uint, \c char, \c uchar, \c short, \c ushort, \c long,- * \c unsigned long, \c bool, \c float, and \c double. One can also specialize it- * for user defined types.- */-template <typename T>-struct SharedMemory-{- /** Return a pointer to the runtime-sized shared memory array. **/- __device__ T* getPointer()- {- extern __device__ void Error_UnsupportedType(); // Ensure that we won't compile any un-specialized types- Error_UnsupportedType();- return (T*)0;- }- // TODO: Use operator overloading to make this class look like a regular array-};--// Following are the specializations for the following types.-// int, uint, char, uchar, short, ushort, long, ulong, bool, float, and double-// One could also specialize it for user-defined types.--#define SPEC_SHAREDMEM(T, name) \- template <> struct SharedMemory <T> \- { \- __device__ T* getPointer() { extern __shared__ T s_##name[]; return s_##name; } \- }--SPEC_SHAREDMEM(int, int);-SPEC_SHAREDMEM(char, char);-SPEC_SHAREDMEM(long, long);-SPEC_SHAREDMEM(short, short);-SPEC_SHAREDMEM(bool, bool);-SPEC_SHAREDMEM(float, float);-SPEC_SHAREDMEM(double, double);--SPEC_SHAREDMEM(unsigned int, uint);-SPEC_SHAREDMEM(unsigned char, uchar);-SPEC_SHAREDMEM(unsigned long, ulong);-SPEC_SHAREDMEM(unsigned short, ushort);--SPEC_SHAREDMEM(uchar4, uchar4);--#undef SPEC_SHAREDMEM-#endif // __SHARED_MEM_H__--// Leave this at the end of the file-// Local Variables:-// mode:c++-// c-file-style: "NVIDIA"-// End:
− examples/common/include/cudpp/type_vector.h
@@ -1,51 +0,0 @@-// --------------------------------------------------------------// cuDPP -- CUDA Data Parallel Primitives library-// --------------------------------------------------------------// $Revision: 5632 $-// $Date: 2009-07-01 14:36:01 +1000 (Wed, 01 Jul 2009) $-// --------------------------------------------------------------// This source code is distributed under the terms of license.txt in-// the root directory of this source distribution.-// ---------------------------------------------------------------#ifndef __TYPE_VECTOR_H__-#define __TYPE_VECTOR_H__--/** @brief Utility template struct for generating small vector types from scalar types- *- * Given a base scalar type (\c int, \c float, etc.) and a vector length (1 through 4) as- * template parameters, this struct defines a vector type (\c float3, \c int4, etc.) of the- * specified length and base type. For example:- * \code- * template <class T>- * __device__ void myKernel(T *data)- * {- * typeToVector<T,4>::Result myVec4; // create a vec4 of type T- * myVec4 = (typeToVector<T,4>::Result*)data[0]; // load first element of data as a vec4- * }- * \endcode- *- * This functionality is implemented using template specialization. Currently specializations- * for int, float, and unsigned int vectors of lengths 2-4 are defined. Note that this results- * in types being generated at compile time -- there is no runtime cost. typeToVector is used by- * the optimized scan \c __device__ functions in scan_cta.cu.- */-template <typename T, int N>-struct typeToVector-{- typedef T Result;-};--#define TYPE_VECTOR(type, name) \- template <> struct typeToVector<type, 2> { typedef name##2 Result; }; \- template <> struct typeToVector<type, 3> { typedef name##3 Result; }; \- template <> struct typeToVector<type, 4> { typedef name##4 Result; }--TYPE_VECTOR(int, int);-TYPE_VECTOR(float, float);-TYPE_VECTOR(unsigned int, uint);---#undef TYPE_VECTOR-#endif-
− examples/common/include/operator.h
@@ -1,114 +0,0 @@-/* ------------------------------------------------------------------------------ *- * Module : Operator- * Copyright : (c) 2009 Trevor L. McDonell- * License : BSD- *- * A template class for unary/binary kernel operations- *- * ---------------------------------------------------------------------------*/---#ifndef __OPERATOR_H__-#define __OPERATOR_H__--#include <float.h>-#include <limits.h>---/*- * Template class for an operation that can be mapped over an array.- */-template <typename Ta, typename Tb=Ta>-class Functor-{-public:- /*- * Apply the operation to the given operand.- */- static __device__ Tb apply(const Ta &x);-};--template <typename Ta, typename Tb>-class fromIntegral : Functor<Ta, Tb>-{-public:- static __device__ Tb apply(const Ta &x) { return (Tb) x; }-};---/*- * Template class for binary operators. Certain algorithms may require the- * operator to be associative (that is, Ta == Tb), such as parallel scan and- * reduction.- *- * As this is template code, it should compile down to something efficient...- */-template <typename Ta, typename Tb=Ta, typename Tc=Ta>-class BinaryOp-{-public:- /*- * Apply the operation to the given operands.- */- static __device__ Tc apply(const Ta &a, const Tb &b);-- /*- * Return an identity element for the type Tc.- *- * This may have special meaning for a given implementation, for example a- * `max' operation over integers may want to return INT_MIN.- */- static __device__ Tc identity();-};--/*- * Return the minimum or maximum value of a type- */-template <typename T> inline __device__ T getMin();-template <typename T> inline __device__ T getMax();--#define SPEC_MINMAX(type,vmin,vmax) \- template <> inline __device__ type getMin() { return vmin; }; \- template <> inline __device__ type getMax() { return vmax; } \--SPEC_MINMAX(float, -FLT_MAX, FLT_MAX);-SPEC_MINMAX(int, INT_MIN, INT_MAX);-SPEC_MINMAX(char, CHAR_MIN, CHAR_MAX);-SPEC_MINMAX(unsigned int, 0, UINT_MAX);-SPEC_MINMAX(unsigned char, 0, UCHAR_MAX);---/*- * Basic binary arithmetic operations. We take advantage of automatic type- * promotion to keep the parameters general.- */-#define BASIC_OP(name,expr,id) \- template <typename Ta, typename Tb=Ta, typename Tc=Ta> \- class name : BinaryOp<Ta, Tb, Tc> \- { \- public: \- static __device__ Tc apply(const Ta &a, const Tb &b) { return expr; } \- static __device__ Tc identity() { return id; } \- }--#define LOGICAL_OP(name,expr,id) \- template <typename Ta, typename Tb=Ta> \- class name : BinaryOp<Ta, Tb, bool> \- { \- public: \- static __device__ bool apply(const Ta &a, const Tb &b) { return expr; }\- static __device__ bool identity() { return id; } \- }--BASIC_OP(Plus, a + b, 0);-BASIC_OP(Times, a * b, 1);-BASIC_OP(Min, min(a,b), getMax<Ta>());-BASIC_OP(Max, max(a,b), getMin<Ta>());--LOGICAL_OP(Eq, a == b, false);--#undef SPEC_MINMAX-#undef BASIC_OP-#endif-
− examples/common/include/utils.h
@@ -1,146 +0,0 @@-/* ------------------------------------------------------------------------------ *- * Module : Utils- * Copyright : (c) 2009 Trevor L. McDonell- * License : BSD- *- * ---------------------------------------------------------------------------*/---#ifndef __UTILS_H__-#define __UTILS_H__--#include <math.h>-#include <stdio.h>---/*- * Core assert function. Don't let this escape...- */-#if defined(__CUDACC__) || !defined(__DEVICE_EMULATION__)-#define __assert(e, file, line) ((void)0)-#else-#define __assert(e, file, line) \- ((void) fprintf (stderr, "%s:%u: failed assertion `%s'\n", file, line, e), abort())-#endif--/*- * Test the given expression, and abort the program if it evaluates to false.- * Only available in debug mode.- */-#ifndef _DEBUG-#define assert(e) ((void)0)-#else-#define assert(e) \- ((void) ((e) ? (void(0)) : __assert (#e, __FILE__, __LINE__)))-#endif---/*- * Macro to insert __syncthreads() in device emulation mode- */-#ifdef __DEVICE_EMULATION__-#define __EMUSYNC __syncthreads()-#else-#define __EMUSYNC-#endif---/*- * Check the return status of CUDA API calls, and abort with an appropriate- * error string on failure.- */-#define CUDA_SAFE_CALL_NO_SYNC(call) \- do { \- cudaError err = call; \- if(cudaSuccess != err) { \- const char *str = cudaGetErrorString(err); \- __assert(str, __FILE__, __LINE__); \- } \- } while (0)--#define CUDA_SAFE_CALL(call) \- do { \- CUDA_SAFE_CALL_NO_SYNC(call); \- CUDA_SAFE_CALL_NO_SYNC(cudaThreadSynchronize()); \- } while (0)---#ifdef __cplusplus-extern "C" {-#endif--/*- * Determine if the input is a power of two- */-inline bool-isPow2(unsigned int x)-{- return ((x&(x-1)) == 0);-}---/*- * Compute the next highest power of two- */-inline unsigned int-ceilPow2(unsigned int x)-{-#if 0- --x;- x |= x >> 1;- x |= x >> 2;- x |= x >> 4;- x |= x >> 8;- x |= x >> 16;- return ++x;-#endif-- return (isPow2(x)) ? x : 1u << (int) ceil(log2((double)x));-}---/*- * Compute the next lowest power of two- */-inline unsigned int-floorPow2(unsigned int x)-{-#if 0- float nf = (float) n;- return 1 << (((*(int*)&nf) >> 23) - 127);-#endif-- int exp;- frexp(x, &exp);- return 1 << (exp - 1);-}---/*- * computes next highest multiple of f from x- */-inline unsigned int-multiple(unsigned int x, unsigned int f)-{- return ((x + (f-1)) / f);-}---/*- * MS Excel-style CEIL() function. Rounds x up to nearest multiple of f- */-inline unsigned int-ceiling(unsigned int x, unsigned int f)-{- return multiple(x, f) * f;-}---#undef __asert--#ifdef __cplusplus-}-#endif-#endif-
− examples/common/src/C2HS.hs
@@ -1,224 +0,0 @@--- C->Haskell Compiler: Marshalling library------ Copyright (c) [1999...2005] Manuel M T Chakravarty------ Redistribution and use in source and binary forms, with or without--- modification, are permitted provided that the following conditions are met:--- --- 1. Redistributions of source code must retain the above copyright notice,--- this list of conditions and the following disclaimer. --- 2. Redistributions in binary form must reproduce the above copyright--- notice, this list of conditions and the following disclaimer in the--- documentation and/or other materials provided with the distribution. --- 3. The name of the author may not be used to endorse or promote products--- derived from this software without specific prior written permission. ------ THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR--- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES--- OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN--- NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, --- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED--- TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR--- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF--- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING--- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS--- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.------- Description --------------------------------------------------------------------- Language: Haskell 98------ This module provides the marshaling routines for Haskell files produced by --- C->Haskell for binding to C library interfaces. It exports all of the--- low-level FFI (language-independent plus the C-specific parts) together--- with the C->HS-specific higher-level marshalling routines.-----module C2HS (-- -- * Re-export the language-independent component of the FFI - module Foreign,-- -- * Re-export the C language component of the FFI- module Foreign.C,-- -- * Composite marshalling functions- withCStringLenIntConv, peekCStringLenIntConv, withIntConv, withFloatConv,- peekIntConv, peekFloatConv, withBool, peekBool, withEnum, peekEnum,-- -- * Conditional results using 'Maybe'- nothingIf, nothingIfNull,-- -- * Bit masks- combineBitMasks, containsBitMask, extractBitMasks,-- -- * Conversion between C and Haskell types- cIntConv, cFloatConv, cToBool, cFromBool, cToEnum, cFromEnum-) where ---import Foreign- hiding (Word)- -- Should also hide the Foreign.Marshal.Pool exports in- -- compilers that export them-import Foreign.C--import Monad (liftM)----- Composite marshalling functions--- ----------------------------------- Strings with explicit length----withCStringLenIntConv :: String -> (CStringLen -> IO a) -> IO a-withCStringLenIntConv s f = withCStringLen s $ \(p, n) -> f (p, cIntConv n)--peekCStringLenIntConv :: CStringLen -> IO String-peekCStringLenIntConv (s,n) = peekCStringLen (s, cIntConv n)---- Marshalling of numerals-----withIntConv :: (Storable b, Integral a, Integral b) - => a -> (Ptr b -> IO c) -> IO c-withIntConv = with . cIntConv--withFloatConv :: (Storable b, RealFloat a, RealFloat b) - => a -> (Ptr b -> IO c) -> IO c-withFloatConv = with . cFloatConv--peekIntConv :: (Storable a, Integral a, Integral b) - => Ptr a -> IO b-peekIntConv = liftM cIntConv . peek--peekFloatConv :: (Storable a, RealFloat a, RealFloat b) - => Ptr a -> IO b-peekFloatConv = liftM cFloatConv . peek---- Passing Booleans by reference-----withBool :: (Integral a, Storable a) => Bool -> (Ptr a -> IO b) -> IO b-withBool = with . fromBool--peekBool :: (Integral a, Storable a) => Ptr a -> IO Bool-peekBool = liftM toBool . peek----- Passing enums by reference-----withEnum :: (Enum a, Integral b, Storable b) => a -> (Ptr b -> IO c) -> IO c-withEnum = with . cFromEnum--peekEnum :: (Enum a, Integral b, Storable b) => Ptr b -> IO a-peekEnum = liftM cToEnum . peek---{---- Storing of 'Maybe' values--- ---------------------------instance Storable a => Storable (Maybe a) where- sizeOf _ = sizeOf (undefined :: Ptr ())- alignment _ = alignment (undefined :: Ptr ())-- peek p = do- ptr <- peek (castPtr p)- if ptr == nullPtr- then return Nothing- else liftM Just $ peek ptr-- poke p v = do- ptr <- case v of- Nothing -> return nullPtr- Just v' -> new v'- poke (castPtr p) ptr--}---- Conditional results using 'Maybe'--- ------------------------------------- Wrap the result into a 'Maybe' type.------ * the predicate determines when the result is considered to be non-existing,--- ie, it is represented by `Nothing'------ * the second argument allows to map a result wrapped into `Just' to some--- other domain----nothingIf :: (a -> Bool) -> (a -> b) -> a -> Maybe b-nothingIf p f x = if p x then Nothing else Just $ f x---- |Instance for special casing null pointers.----nothingIfNull :: (Ptr a -> b) -> Ptr a -> Maybe b-nothingIfNull = nothingIf (== nullPtr)----- Support for bit masks--- ------------------------- Given a list of enumeration values that represent bit masks, combine these--- masks using bitwise disjunction.----combineBitMasks :: (Enum a, Bits b) => [a] -> b-combineBitMasks = foldl (.|.) 0 . map (fromIntegral . fromEnum)---- Tests whether the given bit mask is contained in the given bit pattern--- (i.e., all bits set in the mask are also set in the pattern).----containsBitMask :: (Bits a, Enum b) => a -> b -> Bool-bits `containsBitMask` bm = let bm' = fromIntegral . fromEnum $ bm- in- bm' .&. bits == bm'---- |Given a bit pattern, yield all bit masks that it contains.------ * This does *not* attempt to compute a minimal set of bit masks that when--- combined yield the bit pattern, instead all contained bit masks are--- produced.----extractBitMasks :: (Bits a, Enum b, Bounded b) => a -> [b]-extractBitMasks bits = - [bm | bm <- [minBound..maxBound], bits `containsBitMask` bm]----- Conversion routines--- ----------------------- |Integral conversion----cIntConv :: (Integral a, Integral b) => a -> b-cIntConv = fromIntegral---- |Floating conversion----cFloatConv :: (RealFloat a, RealFloat b) => a -> b-cFloatConv = realToFrac--- As this conversion by default goes via `Rational', it can be very slow...-{-# RULES - "cFloatConv/Float->Float" forall (x::Float). cFloatConv x = x;- "cFloatConv/Double->Double" forall (x::Double). cFloatConv x = x- #-}---- |Obtain C value from Haskell 'Bool'.----cFromBool :: Num a => Bool -> a-cFromBool = fromBool---- |Obtain Haskell 'Bool' from C value.----cToBool :: Num a => a -> Bool-cToBool = toBool---- |Convert a C enumeration to Haskell.----cToEnum :: (Integral i, Enum e) => i -> e-cToEnum = toEnum . cIntConv---- |Convert a Haskell enumeration to C.----cFromEnum :: (Enum e, Integral i) => e -> i-cFromEnum = cIntConv . fromEnum
− examples/common/src/PrettyPrint.hs
@@ -1,61 +0,0 @@------------------------------------------------------------------------------------ |--- Module : PrettyPrint--- Copyright : (c) 2009 Trevor L. McDonell--- License : BSD------ Simple layout and pretty printing--------------------------------------------------------------------------------------module PrettyPrint where--import Data.List-import Text.PrettyPrint-import System.IO-------------------------------------------------------------------------------------- Printing-----------------------------------------------------------------------------------printDoc :: Doc -> IO ()-printDoc = putStrLn . flip (++) "\n" . render------- stolen from $fptools/ghc/compiler/utils/Pretty.lhs------ This code has a BSD-style license----printDocFull :: Mode -> Handle -> Doc -> IO ()-printDocFull m hdl doc = do- fullRender m cols 1.5 put done doc- hFlush hdl- where- put (Chr c) next = hPutChar hdl c >> next- put (Str s) next = hPutStr hdl s >> next- put (PStr s) next = hPutStr hdl s >> next-- done = hPutChar hdl '\n'- cols = 80-------------------------------------------------------------------------------------- Layout---------------------------------------------------------------------------------------- Display the given grid of renderable data, given as either a list of rows or--- columns, using the minimum size required for each column. An additional--- parameter specifies extra space to be inserted between each column.----ppAsRows :: Int -> [[Doc]] -> Doc-ppAsRows q = ppAsColumns q . transpose--ppAsColumns :: Int -> [[Doc]] -> Doc-ppAsColumns q = vcat . map hsep . transpose . map (\col -> pad (width col) col)- where- len = length . render- width = maximum . map len- pad w = map (\x -> x <> (hcat $ replicate (w - (len x) + q) space))-
− examples/common/src/RandomVector.hs
@@ -1,101 +0,0 @@-{-# LANGUAGE FlexibleContexts, ParallelListComp #-}--------------------------------------------------------------------------------------- Module : RandomVector--- Copyright : (c) 2009 Trevor L. McDonell--- License : BSD------ Storable multi-dimensional arrays and lists of random numbers--------------------------------------------------------------------------------------module RandomVector- (- Storable,- module RandomVector,- module Data.Array.Storable- )- where--import Foreign (Ptr, Storable)-import Control.Monad (join)-import Control.Exception (evaluate)-import Data.Array.Storable-import System.Random-------------------------------------------------------------------------------------- Arrays-----------------------------------------------------------------------------------type Vector e = StorableArray Int e-type Matrix e = StorableArray (Int,Int) e--withVector :: Vector e -> (Ptr e -> IO a) -> IO a-withVector = withStorableArray--withMatrix :: Matrix e -> (Ptr e -> IO a) -> IO a-withMatrix = withStorableArray-------- To ensure the array is fully evaluated, force one element----evaluateArr :: (Ix i, MArray StorableArray e IO)- => i -> StorableArray i e -> IO (StorableArray i e)-evaluateArr l arr = (join $ evaluate (arr `readArray` l)) >> return arr-------- Generate a new random array----randomArrR :: (Ix i, Num e, Storable e, Random e, MArray StorableArray e IO)- => (i,i) -> (e,e) -> IO (StorableArray i e)-randomArrR (l,u) bnds = do- rg <- newStdGen- let -- The standard random number generator is too slow to generate really- -- large vectors. Instead, we generate a short vector and repeat that.- k = 1000- rands = take k (randomRs bnds rg)-- newListArray (l,u) [rands !! (index (l,u) i`mod`k) | i <- range (l,u)] >>= evaluateArr l---randomArr :: (Ix i, Num e, Storable e, Random e, MArray StorableArray e IO)- => (i,i) -> IO (StorableArray i e)-randomArr (l,u) = randomArrR (l,u) (-1,1)-------- Verify similarity of two arrays----verify :: (Ix i, Ord e, Fractional e, Storable e)- => StorableArray i e -> StorableArray i e -> IO (Bool)-verify ref arr = do- as <- getElems arr- bs <- getElems ref- return (verifyList as bs)-------------------------------------------------------------------------------------- Lists-----------------------------------------------------------------------------------randomListR :: (Num e, Random e, Storable e) => Int -> (e,e) -> IO [e]-randomListR len bnds = do- rg <- newStdGen- let -- The standard random number generator is too slow to generate really- -- large vectors. Instead, we generate a short vector and repeat that.- k = 1000- rands = take k (randomRs bnds rg)-- evaluate [rands !! (i`mod`k) | i <- [0..len-1]]--randomList :: (Num e, Random e, Storable e) => Int -> IO [e]-randomList len = randomListR len (-1,1)---verifyList :: (Ord e, Fractional e) => [e] -> [e] -> Bool-verifyList xs ys = all (< epsilon) [abs ((x-y)/(x+y+epsilon)) | x <- xs | y <- ys]- where epsilon = 0.0005-
− examples/common/src/Time.hs
@@ -1,52 +0,0 @@--------------------------------------------------------------------------------------- Module : Time--- Copyright : (c) 2009 Trevor L. McDonell--- License : BSD------ Simple timing benchmarks--------------------------------------------------------------------------------------module Time where--import System.CPUTime-import Control.Monad----- Timing----data Time = Time { cpu_time :: Integer }--type TimeUnit = Integer -> Integer--picosecond, millisecond, second :: TimeUnit-picosecond n = n-millisecond n = n `div` 1000000000-second n = n `div` 1000000000000--getTime :: IO Time-getTime = Time `fmap` getCPUTime--timeIn :: TimeUnit -> Time -> Integer-timeIn u (Time t) = u t--elapsedTime :: Time -> Time -> Time-elapsedTime (Time t1) (Time t2) = Time (t2 - t1)----- Simple benchmarking----{-# NOINLINE benchmark #-}-benchmark- :: Int -- Number of times to repeat test- -> IO a -- Test to run- -> IO b -- Finaliser to before measuring elapsed time- -> IO (Time,a)-benchmark n testee finaliser = do- t1 <- getTime- (r:_) <- replicateM n testee- _ <- finaliser- t2 <- getTime- return (elapsedTime t1 t2, r)-
− examples/common/src/cudpp/LICENSE
@@ -1,25 +0,0 @@-Copyright (c) 2007-2009 The Regents of the University of California, Davis -campus ("The Regents") and NVIDIA Corporation ("NVIDIA"). 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 The Regents, nor NVIDIA, 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 HOLDER 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.
− examples/common/src/cudpp/scan_cta.cu
@@ -1,617 +0,0 @@-// --------------------------------------------------------------// cuDPP -- CUDA Data Parallel Primitives library-// --------------------------------------------------------------// $Revision: 5633 $-// $Date: 2009-07-01 15:02:51 +1000 (Wed, 01 Jul 2009) $-// --------------------------------------------------------------// This source code is distributed under the terms of license.txt-// in the root directory of this source distribution.-// ---------------------------------------------------------------/**- * @file- * scan_cta.cu- *- * @brief CUDPP CTA-level scan routines- */--/** \defgroup cudpp_cta CUDPP CTA-Level API- * The CUDPP CTA-Level API contains functions that run on the GPU- * device. These are CUDA \c __device__ functions that are called- * from within other CUDA device functions (typically- * \link cudpp_kernel CUDPP Kernel-Level API\endlink functions).- * They are called CTA-level functions because they typically process- * s_data "owned" by each CTA within shared memory, and are agnostic of- * any other CTAs that may be running (or how many CTAs are running),- * other than to compute appropriate global memory addresses.- * @{- */--/** @name Scan Functions-* @{-*/--#include "cudpp/cudpp_globals.h"-#include "cudpp/type_vector.h"-// #include <cudpp_util.h>-#include <math.h>-// #include <cudpp.h>--/**- * @brief Macro to insert necessary __syncthreads() in device emulation mode- */-#ifdef __DEVICE_EMULATION__-#define __EMUSYNC __syncthreads()-#else-#define __EMUSYNC-#endif--/**- * @brief Template class containing compile-time parameters to the scan functions- *- * ScanTraits is passed as a template parameter to all scan functions. By- * using these compile-time functions we can enable generic code while- * maintaining the highest performance. This is crucial for the performance- * of low-level workhorse algorithms like scan.- *- * @param T The datatype of the scan- * @param oper The ::CUDPPOperator to use for the scan (add, max, etc.)- * @param multiRow True if this is a multi-row scan- * @param unroll True if scan inner loops should be unrolled- * @param sums True if each block should write it's sum to the d_blockSums array (false for single-block scans)- * @param backward True if this is a backward scan- * @param fullBlock True if all blocks in this scan are full (CTA_SIZE * SCAN_ELEMENTS_PER_THREAD elements)- * @param exclusive True for exclusive scans, false for inclusive scans- */-template <class T, class oper, bool backward, bool exclusive,- bool multiRow, bool sums, bool fullBlock>-class ScanTraits-{-public:-- //! Returns true if this is a backward scan- static __device__ bool isBackward() { return backward; };- //! Returns true if this is an exclusive scan- static __device__ bool isExclusive() { return exclusive; };- //! Returns true if this a multi-row scan.- static __device__ bool isMultiRow() { return multiRow; };- //! Returns true if this scan writes the sum of each block to the d_blockSums array (multi-block scans)- static __device__ bool writeSums() { return sums; };- //! Returns true if this is a full scan -- all blocks process CTA_SIZE * SCAN_ELEMENTS_PER_THREAD elements- static __device__ bool isFullBlock() { return fullBlock; };--- //! The operator function used for the scan- static __device__ T op(const T &a, const T &b) { return oper::apply(a, b); }-- //! The identity value used by the scan- static __device__ T identity() { return oper::identity(); }-};--//! This is used to insert syncthreads to avoid perf loss caused by 128-bit-//! load overlap that happens on G80. This gives about a 15% boost on scans on-//! G80.-//! @todo Parameterize this in case this perf detail changes on future GPUs.-#define DISALLOW_LOADSTORE_OVERLAP 1--/**-* @brief Handles loading input s_data from global memory to shared memory-* (vec4 version)-*-* Load a chunk of 8*blockDim.x elements from global memory into a-* shared memory array. Each thread loads two T4 elements (where-* T4 is, e.g. int4 or float4), computes the scan of those two vec4s in-* thread local arrays (in registers), and writes the two total sums of the-* vec4s into shared memory, where they will be cooperatively scanned with-* the other partial sums by all threads in the CTA.-*-* @param[out] s_out The output (shared) memory array-* @param[out] threadScan0 Intermediate per-thread partial sums array 1-* @param[out] threadScan1 Intermediate per-thread partial sums array 2-* @param[in] d_in The input (device) memory array-* @param[in] numElements The number of elements in the array being scanned-* @param[in] iDataOffset the offset of the input array in global memory for this-* thread block-* @param[out] ai The shared memory address for the thread's first element-* (returned for reuse)-* @param[out] bi The shared memory address for the thread's second element-* (returned for reuse)-* @param[out] aiDev The device memory address for this thread's first element-* (returned for reuse)-* @param[out] biDev The device memory address for this thread's second element-* (returned for reuse)-*/-template <class T, class traits>-__device__ void loadSharedChunkFromMem4(T *s_out,- T threadScan0[4],- T threadScan1[4],- const T *d_in,- int numElements,- int iDataOffset,- int &ai,- int &bi,- int &aiDev,- int &biDev)-{- int thid = threadIdx.x;- aiDev = iDataOffset + thid;- biDev = aiDev + blockDim.x;-- // convert to 4-vector- typename typeToVector<T,4>::Result tempData;- typename typeToVector<T,4>::Result* inData = (typename typeToVector<T,4>::Result*)d_in;-- ai = thid;- bi = thid + blockDim.x;-- // read into tempData;- if (traits::isBackward())- {- int i = aiDev * 4;- if (traits::isFullBlock() || i + 3 < numElements)- {- tempData = inData[aiDev];- threadScan0[3] = tempData.w;- threadScan0[2] = traits::op(tempData.z, threadScan0[3]);- threadScan0[1] = traits::op(tempData.y, threadScan0[2]);- threadScan0[0] = s_out[ai]- = traits::op(tempData.x, threadScan0[1]);- }- else- {- threadScan0[3] = traits::identity();- threadScan0[2] = traits::op(((i+2) < numElements) ? d_in[i+2] : traits::identity(), threadScan0[3]);- threadScan0[1] = traits::op(((i+1) < numElements) ? d_in[i+1] : traits::identity(), threadScan0[2]);- threadScan0[0] = s_out[ai]- = traits::op((i < numElements) ? d_in[i] : traits::identity(), threadScan0[1]);- }--#ifdef DISALLOW_LOADSTORE_OVERLAP- __syncthreads();-#endif-- i = biDev * 4;- if (traits::isFullBlock() || i + 3 < numElements)- {- tempData = inData[biDev];- threadScan1[3] = tempData.w;- threadScan1[2] = traits::op(tempData.z, threadScan1[3]);- threadScan1[1] = traits::op(tempData.y, threadScan1[2]);- threadScan1[0] = s_out[bi]- = traits::op(tempData.x, threadScan1[1]);- }- else- {- threadScan1[3] = traits::identity();- threadScan1[2] = traits::op(((i+2) < numElements) ? d_in[i+2] : traits::identity(), threadScan1[3]);- threadScan1[1] = traits::op(((i+1) < numElements) ? d_in[i+1] : traits::identity(), threadScan1[2]);- threadScan1[0] = s_out[bi]- = traits::op((i < numElements) ? d_in[i] : traits::identity(), threadScan1[1]);- }- __syncthreads();-- // reverse s_data in shared memory- if (ai < CTA_SIZE)- {- unsigned int leftIdx = ai;- unsigned int rightIdx = (2 * CTA_SIZE - 1) - ai;-- if (leftIdx < rightIdx)- {- T tmp = s_out[leftIdx];- s_out[leftIdx] = s_out[rightIdx];- s_out[rightIdx] = tmp;- }- }- __syncthreads();- }- else- {- int i = aiDev * 4;- if (traits::isFullBlock() || i + 3 < numElements)- {- tempData = inData[aiDev];- threadScan0[0] = tempData.x;- threadScan0[1] = traits::op(tempData.y, threadScan0[0]);- threadScan0[2] = traits::op(tempData.z, threadScan0[1]);- threadScan0[3] = s_out[ai]- = traits::op(tempData.w, threadScan0[2]);- }- else- {- threadScan0[0] = (i < numElements) ? d_in[i] : traits::identity();- threadScan0[1] = traits::op(((i+1) < numElements) ? d_in[i+1] : traits::identity(), threadScan0[0]);- threadScan0[2] = traits::op(((i+2) < numElements) ? d_in[i+2] : traits::identity(), threadScan0[1]);- threadScan0[3] = s_out[ai]- = traits::op(((i+3) < numElements) ? d_in[i+3] : traits::identity(), threadScan0[2]);- }---#ifdef DISALLOW_LOADSTORE_OVERLAP- __syncthreads();-#endif-- i = biDev * 4;- if (traits::isFullBlock() || i + 3 < numElements)- {- tempData = inData[biDev];- threadScan1[0] = tempData.x;- threadScan1[1] = traits::op(tempData.y, threadScan1[0]);- threadScan1[2] = traits::op(tempData.z, threadScan1[1]);- threadScan1[3] = s_out[bi]- = traits::op(tempData.w, threadScan1[2]);- }- else- {- threadScan1[0] = (i < numElements) ? d_in[i] : traits::identity();- threadScan1[1] = traits::op(((i+1) < numElements) ? d_in[i+1] : traits::identity(), threadScan1[0]);- threadScan1[2] = traits::op(((i+2) < numElements) ? d_in[i+2] : traits::identity(), threadScan1[1]);- threadScan1[3] = s_out[bi]- = traits::op(((i+3) < numElements) ? d_in[i+3] : traits::identity(), threadScan1[2]);- }- __syncthreads();- }-}---/**-* @brief Handles storing result s_data from shared memory to global memory-* (vec4 version)-*-* Store a chunk of SCAN_ELTS_PER_THREAD*blockDim.x elements from shared memory-* into a device memory array. Each thread stores reads two elements from shared-* memory, adds them to the intermediate sums computed in-* loadSharedChunkFromMem4(), and writes two T4 elements (where-* T4 is, e.g. int4 or float4) to global memory.-*-* @param[out] d_out The output (device) memory array-* @param[in] threadScan0 Intermediate per-thread partial sums array 1-* (contents computed in loadSharedChunkFromMem4())-* @param[in] threadScan1 Intermediate per-thread partial sums array 2-* (contents computed in loadSharedChunkFromMem4())-* @param[in] s_in The input (shared) memory array-* @param[in] numElements The number of elements in the array being scanned-* @param[in] oDataOffset the offset of the output array in global memory-* for this thread block-* @param[in] ai The shared memory address for the thread's first element-* (computed in loadSharedChunkFromMem4())-* @param[in] bi The shared memory address for the thread's second element-* (computed in loadSharedChunkFromMem4())-* @param[in] aiDev The device memory address for this thread's first element-* (computed in loadSharedChunkFromMem4())-* @param[in] biDev The device memory address for this thread's second element-* (computed in loadSharedChunkFromMem4())-*/-template <class T, class traits>-__device__ void storeSharedChunkToMem4(T *d_out,- T threadScan0[4],- T threadScan1[4],- T *s_in,- int numElements,- int oDataOffset,- int ai,- int bi,- int aiDev,- int biDev)-{- // Convert to 4-vector- typename typeToVector<T,4>::Result tempData;- typename typeToVector<T,4>::Result* outData = (typename typeToVector<T,4>::Result*)d_out;-- // write results to global memory- if (traits::isBackward())- {- if (ai < CTA_SIZE)- {-- unsigned int leftIdx = ai;- unsigned int rightIdx = (2 * CTA_SIZE - 1) - ai;-- if (leftIdx < rightIdx)- {- T tmp = s_in[leftIdx];- s_in[leftIdx] = s_in[rightIdx];- s_in[rightIdx] = tmp;- }- }- __syncthreads();-- T temp = s_in[ai];-- if (traits::isExclusive())- {- tempData.w = temp;- tempData.z = traits::op(temp, threadScan0[3]);- tempData.y = traits::op(temp, threadScan0[2]);- tempData.x = traits::op(temp, threadScan0[1]);- }- else- {- tempData.w = traits::op(temp, threadScan0[3]);- tempData.z = traits::op(temp, threadScan0[2]);- tempData.y = traits::op(temp, threadScan0[1]);- tempData.x = traits::op(temp, threadScan0[0]);- }-- int i = aiDev * 4;- if (traits::isFullBlock() || i + 3 < numElements)- {- outData[aiDev] = tempData;- }- else- {- if (i < numElements) { d_out[i] = tempData.x;- if (i+1 < numElements) { d_out[i+1] = tempData.y;- if (i+2 < numElements) { d_out[i+2] = tempData.z; }}}- }--#ifdef DISALLOW_LOADSTORE_OVERLAP- __syncthreads();-#endif-- temp = s_in[bi];-- if (traits::isExclusive())- {- tempData.w = temp;- tempData.z = traits::op(temp, threadScan1[3]);- tempData.y = traits::op(temp, threadScan1[2]);- tempData.x = traits::op(temp, threadScan1[1]);- }- else- {- tempData.w = traits::op(temp, threadScan1[3]);- tempData.z = traits::op(temp, threadScan1[2]);- tempData.y = traits::op(temp, threadScan1[1]);- tempData.x = traits::op(temp, threadScan1[0]);- }-- i = biDev * 4;- if (traits::isFullBlock() || i + 3 < numElements)- {- outData[biDev] = tempData;- }- else- {- if (i < numElements) { d_out[i] = tempData.x;- if (i+1 < numElements) { d_out[i+1] = tempData.y;- if (i+2 < numElements) { d_out[i+2] = tempData.z; }}}- }- }- else- {- T temp;- temp = s_in[ai];-- if (traits::isExclusive())- {- tempData.x = temp;- tempData.y = traits::op(temp, threadScan0[0]);- tempData.z = traits::op(temp, threadScan0[1]);- tempData.w = traits::op(temp, threadScan0[2]);- }- else- {- tempData.x = traits::op(temp, threadScan0[0]);- tempData.y = traits::op(temp, threadScan0[1]);- tempData.z = traits::op(temp, threadScan0[2]);- tempData.w = traits::op(temp, threadScan0[3]);- }-- int i = aiDev * 4;- if (traits::isFullBlock() || i + 3 < numElements)- {- outData[aiDev] = tempData;- }- else- {- // we can't use vec4 because the original array isn't a multiple of- // 4 elements- if ( i < numElements) { d_out[i] = tempData.x;- if ((i+1) < numElements) { d_out[i+1] = tempData.y;- if ((i+2) < numElements) { d_out[i+2] = tempData.z; } } }- }--#ifdef DISALLOW_LOADSTORE_OVERLAP- __syncthreads();-#endif-- temp = s_in[bi];-- if (traits::isExclusive())- {- tempData.x = temp;- tempData.y = traits::op(temp, threadScan1[0]);- tempData.z = traits::op(temp, threadScan1[1]);- tempData.w = traits::op(temp, threadScan1[2]);- }- else- {- tempData.x = traits::op(temp, threadScan1[0]);- tempData.y = traits::op(temp, threadScan1[1]);- tempData.z = traits::op(temp, threadScan1[2]);- tempData.w = traits::op(temp, threadScan1[3]);- }-- i = biDev * 4;- if (traits::isFullBlock() || i + 3 < numElements)- {- outData[biDev] = tempData;- }- else- {- // we can't use vec4 because the original array isn't a multiple of- // 4 elements- if ( i < numElements) { d_out[i] = tempData.x;- if ((i+1) < numElements) { d_out[i+1] = tempData.y;- if ((i+2) < numElements) { d_out[i+2] = tempData.z; } } }- }- }-}--/** @brief Scan all warps of a CTA without synchronization- *- * The warp-scan algorithm breaks a block of data into warp-sized chunks, and- * scans the chunks independently with a warp of threads each. Because warps- * execute instructions in SIMD fashion, there is no need to synchronize in- * order to share data within a warp (only across warps). Also, in SIMD the- * most efficient algorithm is a step-efficient algorithm. Therefore, within- * each warp we use a Hillis-and-Steele-style scan that takes log2(N) steps- * to scan the warp [Daniel Hillis and Guy Steele 1986], rather than the- * work-efficient tree-based algorithm described by Guy Blelloch [1990] that- * takes 2 * log(N) steps and is in general more complex to implement.- * Previous versions of CUDPP used the Blelloch algorithm. For current GPUs,- * the warp size is 32, so this takes five steps per warp.- *- * Each thread is responsible for a single element of the array to be scanned.- * Each thread inputs a single value to the scan via \a val and returns- * its own scanned result element. The threads of each warp cooperate- * via the shared memory array \a s_data to scan WARP_SIZE elements.- *- * Template parameter \a maxlevel allows this warpscan to be performed on- * partial warps. For example, if only the first 8 elements of each warp need- * to be scanned, then warpscan only performs log2(8)=3 steps rather than 5.- *- * The computation uses 2 * WARP_SIZE elements of shared memory per warp to- * enable warps to offset beyond their input data and receive the identity- * element without using any branch instructions.- *- * \note s_data is declared volatile here to prevent the compiler from- * optimizing away writes to shared memory, and ensure correct intrawarp- * communication in the absence of __syncthreads.- *- * @return The result of the warp scan for the current thread- * @param[in] val The current threads's input to the scan- * @param[in,out] s_data A pointer to a temporary shared array of 2*CTA_SIZE- * elements used to compute the warp scans- */-template<class T, class traits,int maxlevel>-__device__ T warpscan(T val, volatile T* s_data)-{- // The following is the same as 2 * 32 * warpId + threadInWarp =- // 64*(threadIdx.x >> 5) + (threadIdx.x & (WARP_SIZE-1))- int idx = 2 * threadIdx.x - (threadIdx.x & (WARP_SIZE-1));- s_data[idx] = traits::identity();- idx += WARP_SIZE;- s_data[idx] = val; __EMUSYNC;-- // This code is needed because the warp size of device emulation- // is only 1 thread, so sync-less cooperation within a warp doesn't- // work.-#ifdef __DEVICE_EMULATION__- T t = s_data[idx - 1]; __EMUSYNC;- s_data[idx] = traits::op((const T&)s_data[idx],t); __EMUSYNC;- t = s_data[idx - 2]; __EMUSYNC;- s_data[idx] = traits::op((const T&)s_data[idx],t); __EMUSYNC;- t = s_data[idx - 4]; __EMUSYNC;- s_data[idx] = traits::op((const T&)s_data[idx],t); __EMUSYNC;- t = s_data[idx - 8]; __EMUSYNC;- s_data[idx] = traits::op((const T&)s_data[idx],t); __EMUSYNC;- t = s_data[idx - 16]; __EMUSYNC;- s_data[idx] = traits::op((const T&)s_data[idx],t); __EMUSYNC;-#else- if (0 <= maxlevel) { s_data[idx] = traits::op((const T&)s_data[idx], (const T&)s_data[idx - 1]); }- if (1 <= maxlevel) { s_data[idx] = traits::op((const T&)s_data[idx], (const T&)s_data[idx - 2]); }- if (2 <= maxlevel) { s_data[idx] = traits::op((const T&)s_data[idx], (const T&)s_data[idx - 4]); }- if (3 <= maxlevel) { s_data[idx] = traits::op((const T&)s_data[idx], (const T&)s_data[idx - 8]); }- if (4 <= maxlevel) { s_data[idx] = traits::op((const T&)s_data[idx], (const T&)s_data[idx -16]); }-#endif-- return s_data[idx-1]; // convert inclusive -> exclusive-}--/** @brief Perform a full CTA scan using the warp-scan algorithm- *- * As described in the comment for warpscan(), the warp-scan algorithm breaks- * a block of data into warp-sized chunks, and scans the chunks independently- * with a warp of threads each. To complete the scan, each warp <i>j</i> then- * writes its last element to element <i>j</i> of a temporary shared array.- * Then a single warp exclusive-scans these "warp sums". Finally, each thread- * adds the result of the warp sum scan to the result of the scan from the- * first pass.- *- * Because we scan 2*CTA_SIZE elements per thread, we have to call warpscan- * twice.- *- * @param x The first input value for the current thread- * @param y The second input value for the current thread- * @param s_data Temporary shared memory space of 2*CTA_SIZE elements for- * performing the scan- */-template <class T, class traits>-__device__ void scanWarps(T x, T y,- T *s_data)-{- T val = warpscan<T, traits, 4>(x, s_data);- __syncthreads();- T val2 = warpscan<T, traits, 4>(y, s_data);-- int idx = threadIdx.x;-- if ((idx & 31)==31)- {- s_data[idx >> 5] = traits::op(val, x);- s_data[(idx + blockDim.x) >> 5] = traits::op(val2, y);- }- __syncthreads();--#ifndef __DEVICE_EMULATION__- if (idx < 32)-#endif- {- s_data[idx] = warpscan<T,traits,(LOG_CTA_SIZE-LOG_WARP_SIZE+1)>(s_data[idx], s_data);- }- __syncthreads();-- val = traits::op(val, s_data[idx >> 5]);-- val2 = traits::op(val2, s_data[(idx + blockDim.x) >> 5]);-- __syncthreads();-- s_data[idx] = val;- s_data[idx+blockDim.x] = val2;-}--/**-* @brief CTA-level scan routine; scans s_data in shared memory in each thread block-*-* This function is the main CTA-level scan function. It may be called by other-* CUDA __global__ or __device__ functions. This function scans 2 * CTA_SIZE elements.-* Each thread is responsible for one element in each half of the input array.-* \note This code is intended to be run on a CTA of 128 threads. Other sizes are-* untested.-*-* @param[in] s_data The array to be scanned in shared memory-* @param[out] d_blockSums Array of per-block sums-* @param[in] blockSumIndex Location in \a d_blockSums to which to write this block's sum-*/-template <class T, class traits>-__device__ void scanCTA(T *s_data,- T *d_blockSums,- unsigned int blockSumIndex)-{- T val = s_data[threadIdx.x];- T val2 = s_data[threadIdx.x + blockDim.x];- __syncthreads();-- scanWarps<T,traits>(val, val2, s_data);- __syncthreads();-- if (traits::writeSums() && threadIdx.x == blockDim.x - 1)- {- d_blockSums[blockSumIndex] = traits::op(val2, s_data[threadIdx.x + blockDim.x]);- }---#ifdef __DEVICE_EMULATION__- // must sync in emulation mode when doing backward scans, because otherwise the- // shared memory array will get reversed before the block sums are read!- if (traits::isBackward())- __syncthreads();-#endif-}---/** @} */ // end scan functions-/** @} */ // end cudpp_cta
− examples/common/src/cudpp/scan_kernel.cu
@@ -1,113 +0,0 @@-// --------------------------------------------------------------// cuDPP -- CUDA Data Parallel Primitives library-// --------------------------------------------------------------// $Revision: 5633 $-// $Date: 2009-07-01 15:02:51 +1000 (Wed, 01 Jul 2009) $-// --------------------------------------------------------------// This source code is distributed under the terms of license.txt-// in the root directory of this source distribution.-// ---------------------------------------------------------------/**- * @file- * scan_kernel.cu- *- * @brief CUDPP kernel-level scan routines- */--/** \defgroup cudpp_kernel CUDPP Kernel-Level API- * The CUDPP Kernel-Level API contains functions that run on the GPU- * device across a grid of Cooperative Thread Array (CTA, aka Thread- * Block). These kernels are declared \c __global__ so that they- * must be invoked from host (CPU) code. They generally invoke GPU- * \c __device__ routines in the CUDPP \link cudpp_cta CTA-Level API\endlink.- * Kernel-Level API functions are used by CUDPP- * \link cudpp_app Application-Level\endlink functions to implement their- * functionality.- * @{- */--/** @name Scan Functions-* @{-*/--#include "cudpp/cudpp_globals.h"-#include "cudpp/scan_cta.cu"-#include "cudpp/shared_mem.h"--/**- * @brief Main scan kernel- *- * This __global__ device function performs one level of a multiblock scan on- * an arbitrary-dimensioned array in \a d_in, returning the result in \a d_out- * (which may point to the same array). The same function may be used for- * single or multi-row scans. To perform a multirow scan, pass the width of- * each row of the input row (in elements) in \a dataRowPitch, and the width of- * the rows of \a d_blockSums (in elements) in \a blockSumRowPitch, and invoke- * with a thread block grid with height greater than 1.- *- * This function peforms one level of a recursive, multiblock scan. At the- * app level, this function is called by cudppScan and cudppMultiScan and used- * in combination with vectorAddUniform4() to produce a complete scan.- *- * Template parameter \a T is the datatype of the array to be scanned.- * Template parameter \a traits is the ScanTraits struct containing- * compile-time options for the scan, such as whether it is forward or- * backward, exclusive or inclusive, multi- or single-row, etc.- *- * @param[out] d_out The output (scanned) array- * @param[in] d_in The input array to be scanned- * @param[out] d_blockSums The array of per-block sums- * @param[in] numElements The number of elements to scan- * @param[in] dataRowPitch The width of each row of \a d_in in elements- * (for multi-row scans)- * @param[in] blockSumRowPitch The with of each row of \a d_blockSums in elements- * (for multi-row scans)- */-template<class T, class traits>-__global__ void scan4(T *d_out,- const T *d_in,- T *d_blockSums,- int numElements,- unsigned int dataRowPitch,- unsigned int blockSumRowPitch)-{- SharedMemory<T> smem;- T* temp = smem.getPointer();-- int devOffset, ai, bi, aiDev, biDev;- T threadScan0[4], threadScan1[4];-- unsigned int blockN = numElements;- unsigned int blockSumIndex = blockIdx.x;-- if (traits::isMultiRow())- {- //int width = __mul24(gridDim.x, blockDim.x) << 1;- int yIndex = __umul24(blockDim.y, blockIdx.y) + threadIdx.y;- devOffset = __umul24(dataRowPitch, yIndex);- blockN += (devOffset << 2);- devOffset += __umul24(blockIdx.x, blockDim.x << 1);- blockSumIndex += __umul24(blockSumRowPitch << 2, yIndex) ;- }- else- {- devOffset = __umul24(blockIdx.x, (blockDim.x << 1));- }-- // load data into shared memory- loadSharedChunkFromMem4<T, traits>- (temp, threadScan0, threadScan1, d_in,- blockN, devOffset, ai, bi, aiDev, biDev);-- scanCTA<T, traits>(temp, d_blockSums, blockSumIndex);-- // write results to device memory- storeSharedChunkToMem4<T, traits>- (d_out, threadScan0, threadScan1, temp,- blockN, devOffset, ai, bi, aiDev, biDev);--}--/** @} */ // end scan functions-/** @} */ // end cudpp_kernel
− examples/common/src/cudpp/vector_kernel.cu
@@ -1,444 +0,0 @@-// --------------------------------------------------------------// CUDPP -- CUDA Data Parallel Primitives library-// --------------------------------------------------------------// $Revision: 5632 $-// $Date: 2009-07-01 14:36:01 +1000 (Wed, 01 Jul 2009) $-// --------------------------------------------------------------// This source code is distributed under the terms of license.txt in-// the root directory of this source distribution.-// ---------------------------------------------------------------/**- * @file- * vector_kernel.cu- *- * @brief CUDA kernel methods for basic operations on vectors.- *- * CUDA kernel methods for basic operations on vectors.- *- * Examples:- * - vectorAddConstant(): d_vector + constant- * - vectorAddUniform(): d_vector + uniform (per-block constants)- * - vectorAddVectorVector(): d_vector + d_vector- */--// MJH: these functions assume there are 2N elements for N threads.-// Is this always going to be a good idea? There may be cases where-// we have as many threads as elements, but for large problems-// we are probably limited by max CTA size for simple kernels like-// this so we should process multiple elements per thread.-// we may want to extend these with looping versions that process-// many elements per thread.--// #include "cudpp_util.h"-// #include "sharedmem.h"-// #include "cudpp.h"--/** \addtogroup cudpp_kernel- * @{- */--/** @name Vector Functions- * CUDA kernel methods for basic operations on vectors.- * @{- */--#if 0-/** @brief Adds a constant value to all values in the input d_vector- *- * Each thread adds two pairs of elements.- * @todo Test this function -- it is currently not yet used.- *- * @param[in,out] d_vector The array of elements to be modified- * @param[in] constant The constant value to be added to elements of- * \a d_vector- * @param[in] n The number of elements in the d_vector to be modified- * @param[in] baseIndex An optional offset to the beginning of the- * elements in the input array to be processed- */-template <class T>-__global__ void vectorAddConstant(T *d_vector,- T constant,- int n,- int baseIndex)-{- // Compute this thread's output address- unsigned int address = baseIndex + threadIdx.x +- __mul24(blockIdx.x, (blockDim.x << 1));-- // note two adds per thread: one in first half of the block, one in last- d_vector[address] += constant;- d_vector[address + blockDim.x] += (threadIdx.x + blockDim.x < n) * constant;-}-#endif-#if 0- /** @brief Add a uniform value to each data element of an array- *- * This function reads one value per CTA from \a d_uniforms into shared- * memory and adds that value to all values "owned" by the CTA in \a- * d_vector. Each thread adds two pairs of values.- *- * @param[out] d_vector The d_vector whose values will have the uniform added- * @param[in] d_uniforms The array of uniform values (one per CTA)- * @param[in] numElements The number of elements in \a d_vector to process- * @param[in] blockOffset an optional offset to the beginning of this block's- * data.- * @param[in] baseIndex an optional offset to the beginning of the array- * within \a d_vector.- */-template <class T>-__global__ void vectorAddUniform(T *d_vector,- const T *d_uniforms,- int numElements,- int blockOffset,- int baseIndex)-{- __shared__ T uni;- // Get this block's uniform value from the uniform array in device memory- // We store it in shared memory so that the hardware's shared memory- // broadcast capability can be used to share among all threads in each warp- // in a single cycle- if (threadIdx.x == 0)- {- uni = d_uniforms[blockIdx.x + __mul24(gridDim.x, blockIdx.y) + blockOffset];- }-- // Compute this thread's output address- int width = __mul24(gridDim.x,(blockDim.x << 1));-- unsigned int address = baseIndex + __mul24(width, blockIdx.y)- + threadIdx.x + __mul24(blockIdx.x, (blockDim.x << 1));-- __syncthreads();-- // note two adds per thread: one in first half of the block, one in last- d_vector[address] += uni;- if (threadIdx.x + blockDim.x < numElements) d_vector[address + blockDim.x] += uni;-}-#endif--/** @brief Add a uniform value to each data element of an array (vec4 version)- *- * This function reads one value per CTA from \a d_uniforms into shared- * memory and adds that value to all values "owned" by the CTA in \a d_vector.- * Each thread adds the uniform value to eight values in \a d_vector.- *- * @param[out] d_vector The d_vector whose values will have the uniform added- * @param[in] d_uniforms The array of uniform values (one per CTA)- * @param[in] numElements The number of elements in \a d_vector to process- * @param[in] vectorRowPitch For 2D arrays, the pitch (in elements) of the- * rows of \a d_vector.- * @param[in] uniformRowPitch For 2D arrays, the pitch (in elements) of the- * rows of \a d_uniforms.- * @param[in] blockOffset an optional offset to the beginning of this block's- * data.- * @param[in] baseIndex an optional offset to the beginning of the array- * within \a d_vector.- */-template <class T, class op, int elementsPerThread>-__global__ void vectorAddUniform4(T *d_vector,- const T *d_uniforms,- int numElements,- int vectorRowPitch, // width of input array in elements- int uniformRowPitch, // width of uniform array in elements- int blockOffset,- int baseIndex)-{- __shared__ T uni;- // Get this block's uniform value from the uniform array in device memory- // We store it in shared memory so that the hardware's shared memory- // broadcast capability can be used to share among all threads in each warp- // in a single cycle- if (threadIdx.x == 0)- {- uni = d_uniforms[blockIdx.x + __umul24(uniformRowPitch, blockIdx.y) + blockOffset];- }-- // Compute this thread's output address- //int width = __mul24(gridDim.x,(blockDim.x << 1));-- unsigned int address = baseIndex + __umul24(vectorRowPitch, blockIdx.y)- + threadIdx.x + __umul24(blockIdx.x, (blockDim.x * elementsPerThread));- numElements += __umul24(vectorRowPitch, blockIdx.y);-- __syncthreads();-- for (int i = 0; i < elementsPerThread && address < numElements; i++)- {- d_vector[address] = op::apply(d_vector[address], uni);- address += blockDim.x;- }-}--#if 0-/** @brief Adds together two vectors- *- * Each thread adds two pairs of elements.- * @todo Test this function -- it is currently not yet used.- *- * @param[out] d_vectorA The left operand array and the result- * @param[in] d_vectorB The right operand array- * @param[in] numElements The number of elements in the vectors to be added.- * @param[in] baseIndex An optional offset to the beginning of the- * elements in the input arrays to be processed- */-template <class T>-__global__ void vectorAddVector(T *d_vectorA, // A += B- const T *d_vectorB,- int numElements,- int baseIndex)-{- // Compute this thread's output address- unsigned int address = baseIndex + threadIdx.x +- __mul24(blockIdx.x, (blockDim.x << 1));-- // note two adds per thread: one in first half of the block, one in last- d_vectorA[address] += d_vectorB[address];- d_vectorA[address + blockDim.x] +=- (threadIdx.x + blockDim.x < numElements) * d_vectorB[address];-}-#endif--/** @brief Add a uniform value to data elements of an array (vec4 version)- *- * This function reads one value per CTA from \a d_uniforms into shared- * memory and adds that value to values "owned" by the CTA in \a d_vector.- * The uniform value is added to only those values "owned" by the CTA which- * have an index less than d_maxIndex. If d_maxIndex for that CTA is UINT_MAX- * it adds the uniform to all values "owned" by the CTA.- * Each thread adds the uniform value to eight values in \a d_vector.- *- * @param[out] d_vector The d_vector whose values will have the uniform added- * @param[in] d_uniforms The array of uniform values (one per CTA)- * @param[in] d_maxIndices The array of maximum indices (one per CTA). This is- * index upto which the uniform would be added. If this is UINT_MAX- * the uniform is added to all elements of the CTA. This index is- * 1-based.- * @param[in] numElements The number of elements in \a d_vector to process- * @param[in] blockOffset an optional offset to the beginning of this block's- * data.- * @param[in] baseIndex an optional offset to the beginning of the array- * within \a d_vector.- */-template <class T, class op, bool isLastBlockFull>-__global__ void vectorSegmentedAddUniform4(T *d_vector,- const T *d_uniforms,- const unsigned int *d_maxIndices,- unsigned int numElements,- int blockOffset,- int baseIndex)-{- __shared__ T uni[2];-- unsigned int blockAddress =- blockIdx.x + __mul24(gridDim.x, blockIdx.y) + blockOffset;-- // Get this block's uniform value from the uniform array in device memory- // We store it in shared memory so that the hardware's shared memory- // broadcast capability can be used to share among all threads in each warp- // in a single cycle-- if (threadIdx.x == 0)- {- if (blockAddress > 0)- uni[0] = d_uniforms[blockAddress-1];- else- uni[0] = op::identity();-- // Tacit assumption that T is four-byte wide- uni[1] = (T)(d_maxIndices[blockAddress]);- }-- // Compute this thread's output address- int width = __mul24(gridDim.x,(blockDim.x << 1));-- unsigned int address = baseIndex + __mul24(width, blockIdx.y)- + threadIdx.x + __mul24(blockIdx.x, (blockDim.x << 3));-- __syncthreads();-- unsigned int maxIndex = (unsigned int)(uni[1]);-- bool isLastBlock = (blockIdx.x == (gridDim.x-1));-- if (maxIndex < UINT_MAX)- {- // Since maxIndex is a 1 based index- --maxIndex;- bool leftLess = address < maxIndex;- bool rightLess = (address + 7 * blockDim.x) < maxIndex;-- if (leftLess)- {- if (rightLess)- {- for (unsigned int i = 0; i < 8; ++i)- d_vector[address + i * blockDim.x] =- op::apply(d_vector[address + i * blockDim.x], uni[0]);- }- else- {- for (unsigned int i=0; i < 8; ++i)- {- if (address < maxIndex)- d_vector[address] =- op::apply(d_vector[address], uni[0]);-- address += blockDim.x;- }- }- }- }- else- {- if (!isLastBlockFull && isLastBlock)- {- for (unsigned int i = 0; i < 8; ++i)- {- if (address < numElements)- d_vector[address] =- op::apply(d_vector[address], uni[0]);-- address += blockDim.x;- }- }- else- {- for (unsigned int i=0; i<8; ++i)- {- d_vector[address] =- op::apply(d_vector[address], uni[0]);-- address += blockDim.x;- }- }- }-}---/** @brief Add a uniform value to data elements of an array (vec4 version)- *- * This function reads one value per CTA from \a d_uniforms into shared- * memory and adds that value to values "owned" by the CTA in \a d_vector.- * The uniform value is added to only those values "owned" by the CTA which- * have an index greater than d_minIndex. If d_minIndex for that CTA is 0- * it adds the uniform to all values "owned" by the CTA.- * Each thread adds the uniform value to eight values in \a d_vector.- *- * @param[out] d_vector The d_vector whose values will have the uniform added- * @param[in] d_uniforms The array of uniform values (one per CTA)- * @param[in] d_minIndices The array of minimum indices (one per CTA). The- * uniform is added to the right of this index (that is, to every index- * that is greater than this index). If this is 0, the uniform is- * added to all elements of the CTA. This index is 1-based to- * prevent overloading of what 0 means. In our case it means- * absence of a flag. But if the first element of a CTA has- * flag the index will also be 0. Hence we use 1-based indices- * so the index is 1 in the latter case.- * @param[in] numElements The number of elements in \a d_vector to process- * @param[in] blockOffset an optional offset to the beginning of this block's- * data.- * @param[in] baseIndex an optional offset to the beginning of the array- * within \a d_vector.- *- */-template <class T, class op, bool isLastBlockFull>-__global__ void vectorSegmentedAddUniformToRight4(T *d_vector,- const T *d_uniforms,- const unsigned int *d_minIndices,- unsigned int numElements,- int blockOffset,- int baseIndex)-{- __shared__ T uni[2];-- unsigned int blockAddress =- blockIdx.x + __mul24(gridDim.x, blockIdx.y) + blockOffset;-- // Get this block's uniform value from the uniform array in device memory- // We store it in shared memory so that the hardware's shared memory- // broadcast capability can be used to share among all threads in each warp- // in a single cycle-- if (threadIdx.x == 0)- {- // FIXME - blockAddress test here is incompatible with how it is calculated- // above- if (blockAddress < (gridDim.x-1))- uni[0] = d_uniforms[blockAddress+1];- else- uni[0] = op::identity();-- // Tacit assumption that T is four-byte wide- uni[1] = (T)(d_minIndices[blockAddress]);- }-- // Compute this thread's output address- int width = __mul24(gridDim.x,(blockDim.x << 1));-- unsigned int address = baseIndex + __mul24(width, blockIdx.y)- + threadIdx.x + __mul24(blockIdx.x, (blockDim.x << 3));-- __syncthreads();-- unsigned int minIndex = (unsigned int)(uni[1]);-- bool isLastBlock = (blockIdx.x == (gridDim.x-1));-- if (minIndex > 0)- {- // Since minIndex is a 1 based index- --minIndex;- bool leftInRange = address > minIndex;- bool rightInRange = (address + 7 * blockDim.x) > minIndex;-- if (rightInRange)- {- if (leftInRange)- {- for (unsigned int i = 0; i < 8; ++i)- d_vector[address + i * blockDim.x] =- op::apply(d_vector[address + i * blockDim.x], uni[0]);- }- else- {- for (unsigned int i=0; i < 8; ++i)- {- if (address > minIndex)- d_vector[address] =- op::apply(d_vector[address], uni[0]);-- address += blockDim.x;- }- }- }- }- else- {- if (!isLastBlockFull && isLastBlock)- {- for (unsigned int i = 0; i < 8; ++i)- {- if (address < numElements)- d_vector[address] =- op::apply(d_vector[address], uni[0]);-- address += blockDim.x;- }- }- else- {- for (unsigned int i=0; i<8; ++i)- {- d_vector[address] =- op::apply(d_vector[address], uni[0]);-- address += blockDim.x;- }- }- }-}---/** @} */ // end d_vector functions-/** @} */ // end cudpp_kernel
− examples/src/bandwidthTest/BandwidthTest.hs
@@ -1,221 +0,0 @@--------------------------------------------------------------------------------------- Module : Fold--- Copyright : (c) 2009 Trevor L. McDonell--- License : BSD------ Reduce a vector to a single value--------------------------------------------------------------------------------------module Main where---- Friends-import PrettyPrint---- System-import Numeric-import Data.List-import Control.Monad-import Control.Exception-import System.Exit-import System.Environment-import System.Console.GetOpt-import Text.PrettyPrint--import Foreign-import qualified Foreign.CUDA as CUDA-import qualified Foreign.CUDA.Runtime.Event as CUDA-------------------------------------------------------------------------------------- Options-----------------------------------------------------------------------------------data TestMode = Quick | Range | Shmoo- deriving (Eq,Show,Read)--data MemoryMode = List | Pageable | Pinned | WriteCombined- deriving (Eq,Show,Read,Ord,Enum)--data CopyMode = HostToDevice | DeviceToHost | DeviceToDevice- deriving (Eq,Show,Read,Ord,Enum)--data Options = Options- { testMode :: TestMode--- , memoryMode :: [MemoryMode]--- , copyMode :: [CopyMode]- , device :: Int- , range :: (Int,Int,Int)- }- deriving (Show)--defaultOptions :: Options-defaultOptions = Options- { device = 0- , testMode = Quick--- , memoryMode = []--- , copyMode = []- , range = (kilobyte, kilobyte, 10*kilobyte)- }--kilobyte, megabyte :: Int-kilobyte = 1 `shift` 10-megabyte = 1 `shift` 20--options :: [OptDescr (Options -> Options)]-options =- [ Option ['d'] ["device"] (ReqArg (\d opts -> opts { device = read d }) "ID") "numeral of device to test"- , Option ['t'] ["test"] (ReqArg (\t opts -> opts { testMode = read t}) "MODE") "testing mode: Quick | Range | Shmoo"--- , Option ['m'] ["memory"] (ReqArg (\m opts -> opts { memoryMode = read m : memoryMode opts}) "MODE") "memory copy mode: List | Pageable | Pinned | WriteCombined"--- , Option ['c'] ["copy"] (ReqArg (\c opts -> opts { copyMode = read c : copyMode opts}) "DIRECTION") "memory copy direction: DeviceToHost | HostToDevice | DeviceToDevice"- , Option ['s'] ["start"] (ReqArg (\s opts -> opts { range = let (_,i,e) = range opts in (read s,i,e)}) "BYTES") "starting transfer size"- , Option ['i'] ["increment"] (ReqArg (\i opts -> opts { range = let (s,_,e) = range opts in (s,read i,e)}) "BYTES") "transfer test size increment"- , Option ['e'] ["end"] (ReqArg (\e opts -> opts { range = let (s,i,_) = range opts in (s,i,read e)}) "BYTES") "ending transfer size"- ]-------------------------------------------------------------------------------------- Testing------------------------------------------------------------------------------------- Benchmarking----bench :: Int -> IO a -> IO Double-bench n testee =- let iter = 10- size = fromIntegral (iter * n) * fromIntegral (sizeOf (undefined::Int))- in- bracket (CUDA.create []) CUDA.destroy $ \start ->- bracket (CUDA.create []) CUDA.destroy $ \stop -> do- CUDA.record start Nothing- replicateM_ iter testee- CUDA.record stop Nothing- CUDA.sync- ms <- realToFrac `fmap` CUDA.elapsedTime start stop- return $ 1E3 * size / (fromIntegral megabyte * ms)----- Bandwidth testing for the various copy modes----bandwidth :: CopyMode -> MemoryMode -> Int -> IO Double--bandwidth HostToDevice List n =- bench n (CUDA.withListArray [1..n] (\_ -> return ()))--bandwidth HostToDevice Pageable n =- CUDA.allocaArray n $ \d_ptr ->- withArray [1..n] $ \h_ptr ->- bench n (CUDA.pokeArray n h_ptr d_ptr)--bandwidth HostToDevice x n =- CUDA.allocaArray n $ \d_ptr ->- let f = if x == WriteCombined then [CUDA.WriteCombined] else [] in- bracket (CUDA.mallocHostArray f n) (CUDA.freeHost) $ \h_ptr -> do- pokeArray (CUDA.useHostPtr h_ptr) [1..n]- bench n (CUDA.pokeArrayAsync n h_ptr d_ptr Nothing)--bandwidth DeviceToHost List n =- CUDA.withListArray [1..n] $ \d_ptr ->- bench n (CUDA.peekListArray n d_ptr)--bandwidth DeviceToHost Pageable n =- allocaArray n $ \h_ptr ->- CUDA.withListArray [1..n] $ \d_ptr ->- bench n (CUDA.peekArray n d_ptr h_ptr)--bandwidth DeviceToHost x n =- let f = if x == WriteCombined then [CUDA.WriteCombined] else [] in- bracket (CUDA.mallocHostArray f n) (CUDA.freeHost) $ \h_ptr ->- CUDA.withListArray [1..n] $ \d_ptr ->- bench n (CUDA.peekArrayAsync n d_ptr h_ptr Nothing)--bandwidth DeviceToDevice _ n =- CUDA.withListArray [1..n] $ \d_src ->- CUDA.allocaArray n $ \d_dst ->- (\x->2*x) `fmap` bench n (CUDA.copyArray n d_src d_dst)----- Testing modes----runTests :: [Int] -> IO [(String,[Double])]-runTests bytes = sequence $- [ run m c | m <- [List ..], c <- [HostToDevice,DeviceToHost]] ++ [ run Pageable DeviceToDevice ]- where- run m c =- mapM (\b -> bandwidth c m (b `div` sizeOf (undefined::Int))) bytes >>= \t ->- return (sc c ++ sm m, t)-- sc DeviceToHost = "D->H"- sc HostToDevice = "H->D"- sc DeviceToDevice = "D->D"- sm List = " (List)"- sm Pinned = " (Pinned)"- sm WriteCombined = " (WC)"- sm Pageable = ""-------------------------------------------------------------------------------------- Main-----------------------------------------------------------------------------------printQuick :: [(String,[Double])] -> IO ()-printQuick = printDoc . ppAsRows 1 . (++) header . map k- where- k (x,y) = text x : map float' y- float' = text . flip (showFFloat (Just 2)) ""- header = map (map text) [["Mode", "Bandwidth (MB/s)"]- ,["----", "----------------"]]--printMany :: [Int] -> [(String,[Double])] -> IO ()-printMany xs tests =- printDoc . ppAsRows 1 . (++) header . zipWith k xs . transpose . snd . unzip $ tests- where- k b ys = int b : map float' ys- float' = text . flip (showFFloat (Just 2)) ""-- titles = "Size (bytes)" : fst (unzip tests)- seperator = map (flip replicate '-' . length) $ titles- header = map (map text) [titles,seperator]---parseOptions :: [String] -> IO (Options, [String])-parseOptions argv =- case getOpt Permute options argv of- (o,n,[]) -> return (foldl (flip id) defaultOptions o, n)- (_,_,errs) -> do putStrLn $ concat errs ++ usageInfo header options- exitFailure- where- header = "Usage: bandwidthTest [OPTION...]"--shmooBytes :: [Int]-shmooBytes =- [ kilobyte, 2*kilobyte .. 20*kilobyte ] ++- [ 22*kilobyte, 24*kilobyte .. 50*kilobyte ] ++- [ 60*kilobyte, 70*kilobyte .. 100*kilobyte ] ++- [ 200*kilobyte, 300*kilobyte .. 1*megabyte ] ++- [ 2*megabyte, 3*megabyte .. 16*megabyte ] ++- [ 18*megabyte, 20*megabyte .. 32*megabyte ] ++- [ 36*megabyte, 40*megabyte .. 64*megabyte ]---- Main----main :: IO ()-main = do- (opts,_) <- parseOptions =<< getArgs- props <- CUDA.props (device opts)- putStrLn $ "Device " ++ show (device opts) ++ ": " ++ (CUDA.deviceName props)-- let (s,i,e) = range opts- bytes = [s,(s+i)..e]-- case testMode opts of- Quick -> putStrLn "Quick mode: Bandwidth of 32MB transfer"- _ -> putStrLn "Bandwidth measured in MB/s"-- putStrLn "Please wait...\n"- case testMode opts of- Range -> runTests bytes >>= printMany bytes- Shmoo -> runTests shmooBytes >>= printMany shmooBytes- Quick -> runTests [32*megabyte] >>= printQuick-
− examples/src/bandwidthTest/Makefile
@@ -1,18 +0,0 @@-#-# Baking!-#--# -------------------------------------------------------------------------------# Input files-# -------------------------------------------------------------------------------EXECUTABLE := bandwidthTest--HSMAIN := BandwidthTest.hs-CUFILES :=--EXTRALIBS :=--# -------------------------------------------------------------------------------# Haskell/CUDA build system-# -------------------------------------------------------------------------------include ../../common/common.mk
− examples/src/bandwidthTest/results/GT120.pdf
binary file changed (38879 → absent bytes)
− examples/src/bandwidthTest/results/Tesla.pdf
binary file changed (38483 → absent bytes)
− examples/src/fold/Fold.chs
@@ -1,79 +0,0 @@-{-# LANGUAGE ForeignFunctionInterface #-}--------------------------------------------------------------------------------------- Module : Fold--- Copyright : (c) 2009 Trevor L. McDonell--- License : BSD------ Reduce a vector to a single value--------------------------------------------------------------------------------------module Main where--#include "fold.h"---- Friends-import C2HS-import Time-import RandomVector---- System-import Control.Exception-import qualified Foreign.CUDA.Runtime as CUDA-------------------------------------------------------------------------------------- Reference-----------------------------------------------------------------------------------foldRef :: Num e => [e] -> IO e-foldRef xs = do- (t,r) <- benchmark 100 (evaluate (foldl (+) 0 xs)) (return ())- putStrLn $ "== Reference: " ++ shows (fromInteger (timeIn millisecond t)/100::Float) " ms"- return r------------------------------------------------------------------------------------- CUDA---------------------------------------------------------------------------------------- Note that this requires two memory copies: once from a Haskell list to the C--- heap, and from there into the graphics card memory. See the `bandwidthTest'--- example for the atrocious performance of this operation.------ For this test, cheat a little and just time the pure computation.----foldCUDA :: [Float] -> IO Float-foldCUDA xs = do- let len = length xs- CUDA.withListArray xs $ \d_xs -> do- (t,r) <- benchmark 100 (fold_plusf d_xs len) CUDA.sync- putStrLn $ "== CUDA: " ++ shows (fromInteger (timeIn millisecond t)/100::Float) " ms"- return r--{# fun unsafe fold_plusf- { withDP* `CUDA.DevicePtr Float'- , `Int'- }- -> `Float' cFloatConv #}- where- withDP p a = CUDA.withDevicePtr p $ \p' -> a (castPtr p')-------------------------------------------------------------------------------------- Main-----------------------------------------------------------------------------------main :: IO ()-main = do- dev <- CUDA.get- props <- CUDA.props dev- putStrLn $ "Using device " ++ show dev ++ ": " ++ CUDA.deviceName props-- xs <- randomList 30000- ref <- foldRef xs- cuda <- foldCUDA xs-- putStrLn $ "== Validating: " ++ if ((ref-cuda)/ref) < 0.0001 then "Ok!" else "INVALID!"-
− examples/src/fold/Makefile
@@ -1,18 +0,0 @@-#-# Baking!-#--# -------------------------------------------------------------------------------# Input files-# -------------------------------------------------------------------------------EXECUTABLE := fold--HSMAIN := Fold.chs-CUFILES := fold.cu--EXTRALIBS := stdc++--# -------------------------------------------------------------------------------# Haskell/CUDA build system-# -------------------------------------------------------------------------------include ../../common/common.mk
− examples/src/fold/fold.cu
@@ -1,223 +0,0 @@-/* ------------------------------------------------------------------------------ *- * Module : Fold- * Copyright : (c) 2009 Trevor L. McDonell- * License : BSD- *- * ---------------------------------------------------------------------------*/--#include "fold.h"--#include "utils.h"-#include "operator.h"-#include "cudpp/shared_mem.h"---/*- * Compute multiple elements per thread sequentially. This reduces the overall- * cost of the algorithm while keeping the work complexity O(n) and the step- * complexity O(log n). c.f. Brent's Theorem optimisation.- *- * Stolen from the CUDA SDK examples- */-template <unsigned int blockSize, bool lengthIsPow2, class op, typename T>-__global__ static void-fold_recursive-(- const T *d_xs,- T *d_ys,- int length-)-{- SharedMemory<T> smem;- T *scratch = smem.getPointer();-- /*- * Calculate first level of reduction reading into shared memory- */- unsigned int i;- unsigned int tid = threadIdx.x;- unsigned int gridSize = blockSize * 2 * gridDim.x;-- scratch[tid] = op::identity();-- /*- * Reduce multiple elements per thread. The number is determined by the- * number of active thread blocks (via gridDim). More blocks will result in- * a larger `gridSize', and hence fewer elements per thread- *- * The loop stride of `gridSize' is used to maintain coalescing.- */- for (i = blockIdx.x * blockSize * 2 + tid; i < length; i += gridSize)- {- scratch[tid] = op::apply(scratch[tid], d_xs[i]);-- /*- * Ensure we don't read out of bounds. This is optimised away if the- * input length is a power of two- */- if (lengthIsPow2 || i + blockSize < length)- scratch[tid] = op::apply(scratch[tid], d_xs[i+blockSize]);- }- __syncthreads();-- /*- * Now, calculate the reduction in shared memory- */- if (blockSize >= 512) { if (tid < 256) { scratch[tid] = op::apply(scratch[tid], scratch[tid+256]); } __syncthreads(); }- if (blockSize >= 256) { if (tid < 128) { scratch[tid] = op::apply(scratch[tid], scratch[tid+128]); } __syncthreads(); }- if (blockSize >= 128) { if (tid < 64) { scratch[tid] = op::apply(scratch[tid], scratch[tid+ 64]); } __syncthreads(); }--#ifndef __DEVICE_EMULATION__- if (tid < 32)-#endif- {- if (blockSize >= 64) { scratch[tid] = op::apply(scratch[tid], scratch[tid+32]); __EMUSYNC; }- if (blockSize >= 32) { scratch[tid] = op::apply(scratch[tid], scratch[tid+16]); __EMUSYNC; }- if (blockSize >= 16) { scratch[tid] = op::apply(scratch[tid], scratch[tid+ 8]); __EMUSYNC; }- if (blockSize >= 8) { scratch[tid] = op::apply(scratch[tid], scratch[tid+ 4]); __EMUSYNC; }- if (blockSize >= 4) { scratch[tid] = op::apply(scratch[tid], scratch[tid+ 2]); __EMUSYNC; }- if (blockSize >= 2) { scratch[tid] = op::apply(scratch[tid], scratch[tid+ 1]); __EMUSYNC; }- }-- /*- * Write the results of this block back to global memory- */- if (tid == 0)- d_ys[blockIdx.x] = scratch[0];-}---/*- * Wrapper function for kernel launch- */-template <class op, typename T>-static void-fold_dispatch-(- const T *d_xs,- T *d_ys,- int length,- int blocks,- int threads-)-{- unsigned int smem = threads * sizeof(T);-- if (isPow2(length))- {- switch (threads)- {- case 512: fold_recursive<512,true,op,T><<<blocks,threads,smem>>>(d_xs, d_ys, length); break;- case 256: fold_recursive<256,true,op,T><<<blocks,threads,smem>>>(d_xs, d_ys, length); break;- case 128: fold_recursive<128,true,op,T><<<blocks,threads,smem>>>(d_xs, d_ys, length); break;- case 64: fold_recursive< 64,true,op,T><<<blocks,threads,smem>>>(d_xs, d_ys, length); break;- case 32: fold_recursive< 32,true,op,T><<<blocks,threads,smem>>>(d_xs, d_ys, length); break;- case 16: fold_recursive< 16,true,op,T><<<blocks,threads,smem>>>(d_xs, d_ys, length); break;- case 8: fold_recursive< 8,true,op,T><<<blocks,threads,smem>>>(d_xs, d_ys, length); break;- case 4: fold_recursive< 4,true,op,T><<<blocks,threads,smem>>>(d_xs, d_ys, length); break;- case 2: fold_recursive< 2,true,op,T><<<blocks,threads,smem>>>(d_xs, d_ys, length); break;- case 1: fold_recursive< 1,true,op,T><<<blocks,threads,smem>>>(d_xs, d_ys, length); break;- default:- assert(!"Non-exhaustive patterns in match");- }- }- else- {- switch (threads)- {- case 512: fold_recursive<512,false,op,T><<<blocks,threads,smem>>>(d_xs, d_ys, length); break;- case 256: fold_recursive<256,false,op,T><<<blocks,threads,smem>>>(d_xs, d_ys, length); break;- case 128: fold_recursive<128,false,op,T><<<blocks,threads,smem>>>(d_xs, d_ys, length); break;- case 64: fold_recursive< 64,false,op,T><<<blocks,threads,smem>>>(d_xs, d_ys, length); break;- case 32: fold_recursive< 32,false,op,T><<<blocks,threads,smem>>>(d_xs, d_ys, length); break;- case 16: fold_recursive< 16,false,op,T><<<blocks,threads,smem>>>(d_xs, d_ys, length); break;- case 8: fold_recursive< 8,false,op,T><<<blocks,threads,smem>>>(d_xs, d_ys, length); break;- case 4: fold_recursive< 4,false,op,T><<<blocks,threads,smem>>>(d_xs, d_ys, length); break;- case 2: fold_recursive< 2,false,op,T><<<blocks,threads,smem>>>(d_xs, d_ys, length); break;- case 1: fold_recursive< 1,false,op,T><<<blocks,threads,smem>>>(d_xs, d_ys, length); break;- default:- assert(!"Non-exhaustive patterns in match");- }- }-}---/*- * Compute the number of blocks and threads to use for the reduction kernel- */-static void-fold_control-(- int n,- int &blocks,- int &threads,- int maxThreads = MAX_THREADS,- int maxBlocks = MAX_BLOCKS-)-{- threads = (n < maxThreads*2) ? ceilPow2((n+1)/2) : maxThreads;- blocks = (n + threads * 2 - 1) / (threads * 2);- blocks = min(blocks, maxBlocks);-}---/*- * Apply a binary operator to an array, reducing the array to a single value.- * The reduction will take place in parallel, so the operator must be- * associative.- */-template <class op, typename T>-T-fold-(- const T *d_xs,- int n-)-{- int blocks;- int threads;- T gpu_result;- T* d_data = NULL;-- /*- * Allocate temporary storage for the block-level reduction- */- fold_control(n, blocks, threads);- cudaMalloc((void **) &d_data, sizeof(T) * blocks);-- /*- * Recursively fold the partial block sums to a single value- */- fold_dispatch<op,T>(d_xs, d_data, n, blocks, threads);-- n = blocks;- while (n > 1)- {- fold_control(n, blocks, threads);- fold_dispatch<op,T>(d_data, d_data, n, blocks, threads);-- n = (n + threads * 2 - 1) / (threads * 2);- }- assert(n == 1);-- /*- * Read back the final result- */- cudaMemcpy(&gpu_result, d_data, sizeof(T), cudaMemcpyDeviceToHost);- cudaFree(d_data);-- return gpu_result;-}---// ------------------------------------------------------------------------------// Instances-// -------------------------------------------------------------------------------float fold_plusf(float *xs, int N)-{- float result = fold< Plus<float> >(xs, N);- return result;-}-
− examples/src/fold/fold.h
@@ -1,32 +0,0 @@-/* ------------------------------------------------------------------------------ *- * Module : Fold- * Copyright : (c) 2009 Trevor L. McDonell- * License : BSD- *- * ---------------------------------------------------------------------------*/--#ifndef __FOLD_H__-#define __FOLD_H__--/*- * Optimised for Tesla.- * Maximum thread occupancy for your card may be achieved with different values.- */-#define MAX_THREADS 128-#define MAX_BLOCKS 64--#ifdef __cplusplus-extern "C" {-#endif--/*- * Instances- */-float fold_plusf(float *xs, int N);---#ifdef __cplusplus-}-#endif-#endif
− examples/src/matrixMul/LICENSE
@@ -1,187 +0,0 @@-NVIDIA Corporation GPU COMPUTING SDK END USER LICENSE AGREEMENT ("Agreement")--BY DOWNLOADING THE SOFTWARE AND OTHER AVAILABLE MATERIALS, YOU ("DEVELOPER")-AGREE TO BE BOUND BY THE FOLLOWING TERMS AND CONDITIONS OF THIS AGREEMENT. IF-DEVELOPER DOES NOT AGREE TO THE TERMS AND CONDITION OF THIS AGREEMENT, THEN DO-NOT DOWNLOAD THE SOFTWARE AND MATERIALS.--The materials available for download to Developers may include software in both-sample source ("Source Code") and object code ("Object Code") versions,-documentation ("Documentation"), certain art work ("Art Assets") and other-materials (collectively, these materials referred to herein as "Materials").-Except as expressly indicated herein, all terms and conditions of this Agreement-apply to all of the Materials.--Except as expressly set forth herein, NVIDIA owns all of the Materials and makes-them available to Developer only under the terms and conditions set forth in-this Agreement.--License: Subject to the terms of this Agreement, NVIDIA hereby grants to-Developer a royalty-free, non-exclusive license to possess and to use the-Materials. Developer may install and use multiple copies of the Materials on a-shared computer or concurrently on different computers, and make multiple-back-up copies of the Materials, solely for Licensee's use within Licensee's-Enterprise. "Enterprise" shall mean individual use by Licensee or any legal-entity (such as a corporation or university) and the subsidiaries it owns by-more than 50 percent. The following terms apply to the specified type of-Material:--Source Code: Developer shall have the right to modify and create derivative-works with the Source Code. Developer shall own any derivative works-("Derivatives") it creates to the Source Code, provided that Developer uses the-Materials in accordance with the terms and conditions of this Agreement.-Developer may distribute the Derivatives, provided that all NVIDIA copyright-notices and trademarks are used properly and the Derivatives include the-following statement: "This software contains source code provided by NVIDIA-Corporation." --Object Code: Developer agrees not to disassemble, decompile or reverse engineer-the Object Code versions of any of the Materials. Developer acknowledges that-certain of the Materials provided in Object Code version may contain third party-components that may be subject to restrictions, and expressly agrees not to-attempt to modify or distribute such Materials without first receiving consent-from NVIDIA.--Art Assets: Developer shall have the right to modify and create Derivatives of-the Art Assets, but may not distribute any of the Art Assets or Derivatives-created therefrom without NVIDIA's prior written consent.--No Other License: No rights or licenses are granted by NVIDIA to Developer under-this Agreement, expressly or by implication, with respect to any proprietary-information or patent, copyright, trade secret or other intellectual property-right owned or controlled by NVIDIA, except as expressly provided in this-Agreement.--Intellectual Property Ownership: All rights, title, interest and copyrights in-and to the Materials (including but not limited to all images, photographs,-animations, video, audio, music, text, and other information incorporated into-the Materials), are owned by NVIDIA, or its suppliers. The Materials are-protected by copyright laws and international treaty provisions. Accordingly,-Developer is required to treat the Materials like any other copyrighted-material, except as otherwise allowed pursuant to this Agreement. ---Term of Agreement: This Agreement is effective until (i) automatically-terminated if Developer fails to comply with any of the terms and conditions of-this Agreement; or (ii) terminated by NVIDIA. NVIDIA may terminate this-Agreement (and with it, all of Developer's right to the Materials) immediately-upon written notice (which may include email) to Developer, with or without-cause.--Defensive Suspension: If Developer commences or participates in any legal-proceeding against NVIDIA, then NVIDIA may, in its sole discretion, suspend or-terminate all license grants and any other rights provided under this Agreement-during the pendency of such legal proceedings. ---No Support: NVIDIA has no obligation to support or to continue providing or-updating any of the Materials.--No Warranty: THE SOFTWARE AND ANY OTHER MATERIALS PROVIDED BY NVIDIA TO-DEVELOPER HEREUNDER ARE PROVIDED "AS IS." NVIDIA DISCLAIMS ALL WARRANTIES,-EXPRESS, IMPLIED OR STATUTORY, INCLUDING, WITHOUT LIMITATION, THE IMPLIED-WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND-NONINFRINGEMENT.--Limitation of Liability: NVIDIA SHALL NOT BE LIABLE TO DEVELOPER, DEVELOPER'S-CUSTOMERS, OR ANY OTHER PERSON OR ENTITY CLAIMING THROUGH OR UNDER DEVELOPER FOR-ANY LOSS OF PROFITS, INCOME, SAVINGS, OR ANY OTHER CONSEQUENTIAL, INCIDENTAL,-SPECIAL, PUNITIVE, DIRECT OR INDIRECT DAMAGES (WHETHER IN AN ACTION IN CONTRACT,-TORT OR BASED ON A WARRANTY), EVEN IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY-OF SUCH DAMAGES. THESE LIMITATIONS SHALL APPLY NOTWITHSTANDING ANY FAILURE OF-THE ESSENTIAL PURPOSE OF ANY LIMITED REMEDY. IN NO EVENT SHALL NVIDIA'S-AGGREGATE LIABILITY TO DEVELOPER OR ANY OTHER PERSON OR ENTITY CLAIMING THROUGH-OR UNDER DEVELOPER EXCEED THE AMOUNT OF MONEY ACTUALLY PAID BY DEVELOPER TO-NVIDIA FOR THE SOFTWARE OR ANY OTHER MATERIALS.--Applicable Law: This Agreement shall be deemed to have been made in, and shall-be construed pursuant to, the laws of the State of Delaware. The United Nations-Convention on Contracts for the International Sale of Goods is specifically-disclaimed.--Feedback: In the event Developer contacts NVIDIA to request Feedback (as defined-below) on how to optimize Developer's product for use with the Materials, the-following terms and conditions apply the Feedback:--1. Exchange of Feedback. Both parties agree that neither party has an-obligation to give the other party any suggestions, comments or other feedback,-whether verbally or in code form ("Feedback"), relating to (i) the Materials;-(ii) Developer's products; (iii) Developer's use of the Materials; or (iv)-optimization of Developer's product with NVIDIA product(s). In the event either-party provides Feedback to the other party, the party receiving the Feedback may-use and include any Feedback that the other party voluntarily provides to-improve the (i) Materials or other related NVIDIA technologies, respectively for-the benefit of NVIDIA; or (ii) Developer's product or other related Developer-technologies, respectively for the benefit of Developer. Accordingly, if either-party provides Feedback to the other party, both parties agree that the other-party and its respective Developers may freely use, reproduce, license,-distribute, and otherwise commercialize the Feedback in the (i) Materials or-other related technologies; or (ii) Developer's products or other related-technologies, respectively, without the payment of any royalties or fees.- -2. Residual Rights. Developer agrees that NVIDIA shall be free to use any-general knowledge, skills and experience, (including, but not limited to, ideas,-concepts, know-how, or techniques) ("Residuals"), contained in the (i) Feedback-provided by Developer to NVIDIA; (ii) Developer's products, in source or object-code form, shared or disclosed to NVIDIA in connection with the Feedback; or (c)-Developer's confidential information voluntarily provided to NVIDIA in-connection with the Feedback, which are retained in the memories of NVIDIA's-employees, agents, or contractors who have had access to such (i) Feedback-provided by Developer to NVIDIA; (ii) Developer's products; or (c) Developer's-confidential information voluntarily provided to NVIDIA, in connection with the-Feedback. Subject to the terms and conditions of this Agreement, NVIDIA's-employees, agents, or contractors shall not be prevented from using Residuals as-part of such employee's, agent's or contractor's general knowledge, skills,-experience, talent, and/or expertise. NVIDIA shall not have any obligation to-limit or restrict the assignment of such employees, agents or contractors or to-pay royalties for any work resulting from the use of Residuals.--3. Disclaimer of Warranty. FEEDBACK FROM EITHER PARTY IS PROVIDED FOR THE-OTHER PARTY'S USE "AS IS" AND BOTH PARTIES DISCLAIM ALL WARRANTIES, EXPRESS,-IMPLIED AND STATUTORY INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. BOTH PARTIES DO NOT-REPRESENT OR WARRANT THAT THE FEEDBACK WILL MEET THE OTHER PARTY'S REQUIREMENTS-OR THAT THE OPERATION OR IMPLEMENTATION OF THE FEEDBACK WILL BE UNINTERRUPTED OR-ERROR-FREE.--4. No Liability for Consequential Damages. TO THE MAXIMUM EXTENT PERMITTED-BY APPLICABLE LAW, IN NO EVENT SHALL EITHER PARTY OR ITS SUPPLIERS BE LIABLE FOR-ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER-(INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS-INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS) ARISING-OUT OF THE USE OF OR INABILITY TO USE THE FEEDBACK, EVEN IF THE OTHER PARTY HAS-BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.--5. Freedom of Action. Developer agrees that this Agreement is nonexclusive-and NVIDIA may currently or in the future be developing software, other-technology or confidential information internally, or receiving confidential-information from other parties that maybe similar to the Feedback and-Developer's confidential information (as provided in subsection 2 above), which-may be provided to NVIDIA in connection with Feedback by Developer. Accordingly,-Developer agrees that nothing in this Agreement will be construed as a-representation or inference that NVIDIA will not develop, design, manufacture,-acquire, market products, or have products developed, designed, manufactured,-acquired, or marketed for NVIDIA, that compete with the Developer's products or-confidential information.--RESTRICTED RIGHTS NOTICE: Materials has been developed entirely at private-expense and is commercial computer software provided with RESTRICTED RIGHTS.-Use, duplication or disclosure by the U.S. Government or a U.S. Government-subcontractor is subject to the restrictions set forth in the license agreement-under which Materials was obtained pursuant to DFARS 227.7202-3(a) or as set-forth in subparagraphs (c)(1) and (2) of the Commercial Computer Software --Restricted Rights clause at FAR 52.227-19, as applicable.-Contractor/manufacturer is NVIDIA, 2701 San Tomas Expressway, Santa Clara, CA-95050.--Miscellaneous: If any provision of this Agreement is inconsistent with, or-cannot be fully enforced under, the law, such provision will be construed as-limited to the extent necessary to be consistent with and fully enforceable-under the law. This Agreement is the final, complete and exclusive agreement-between the parties relating to the subject matter hereof, and supersedes all-prior or contemporaneous understandings and agreements relating to such subject-matter, whether oral or written. This Agreement may only be modified in writing-signed by an authorized officer of NVIDIA. Developer agrees that it will not-ship, transfer or export the Materials into any country, or use the Materials in-any manner, prohibited by the United States Bureau of Industry and Security or-any export laws, restrictions or regulations.
− examples/src/matrixMul/Makefile
@@ -1,18 +0,0 @@-#-# Baking!-#--# -------------------------------------------------------------------------------# Input files-# -------------------------------------------------------------------------------EXECUTABLE := matrixMul--HSMAIN := MatrixMul.hs-CUFILES := matrix_mul.cu--EXTRALIBS := stdc++--# -------------------------------------------------------------------------------# Haskell/CUDA build system-# -------------------------------------------------------------------------------include ../../common/common.mk
− examples/src/matrixMul/MatrixMul.hs
@@ -1,114 +0,0 @@-{-# LANGUAGE CPP #-}--------------------------------------------------------------------------------------- Module : MatrixMul--- Copyright : (c) 2009 Trevor L. McDonell--- License : BSD------ Matrix multiplication using runtime interface and execution control instead--- of calling C functions via the FFI.--------------------------------------------------------------------------------------module Main where--#include "matrix_mul.h"---- Friends-import Time-import RandomVector---- System-import Data.Array-import System.IO-import Foreign-import qualified Foreign.CUDA as CUDA-------------------------------------------------------------------------------------- Reference-----------------------------------------------------------------------------------matMult :: (Num e, Storable e) => Matrix e -> Matrix e -> IO (Matrix e)-matMult mx my = do- x <- unsafeFreeze mx- y <- unsafeFreeze my- let ((li, lj), (ui, uj)) = bounds x- ((li',lj'),(ui',uj')) = bounds y- resBnds | (lj,uj) == (li',ui') = ((li,lj'),(ui,uj'))- | otherwise = error "matrix dimensions must agree"-- newListArray resBnds [sum [x!(i,k) * y!(k,j) | k <- range (lj,uj)]- | i <- range (li,ui)- , j <- range (lj',uj') ]-------------------------------------------------------------------------------------- CUDA-----------------------------------------------------------------------------------matMultCUDA :: (Num e, Storable e) => Matrix e -> Matrix e -> IO (Matrix e)-matMultCUDA xs' ys' = doMult undefined xs' ys'- where- doMult :: (Num e', Storable e') => e' -> Matrix e' -> Matrix e' -> IO (Matrix e')- doMult dummy xs ys = do-- -- Setup matrix parameters- --- ((li, lj), (ui, uj)) <- getBounds xs- ((li',lj'),(ui',uj')) <- getBounds ys- let wx = rangeSize (lj,uj)- hx = rangeSize (li,ui)- wy = rangeSize (lj',uj')- hy = rangeSize (li',ui')- resBnds | wx == hy = ((li,lj'),(ui,uj'))- | otherwise = error "matrix dimensions must agree"-- -- Allocate memory and copy test data- --- CUDA.allocaArray (wx*hx) $ \d_xs -> do- CUDA.allocaArray (wy*hy) $ \d_ys -> do- CUDA.allocaArray (wy*hx) $ \d_zs -> do- withMatrix xs $ \p -> CUDA.pokeArray (wx*hx) p d_xs- withMatrix ys $ \p -> CUDA.pokeArray (wy*hy) p d_ys-- -- Launch the kernel- --- let gridDim = (wy`div`BLOCK_SIZE, hx`div`BLOCK_SIZE)- blockDim = (BLOCK_SIZE,BLOCK_SIZE,1)- sharedMem = 2 * BLOCK_SIZE * BLOCK_SIZE * fromIntegral (sizeOf dummy)-- CUDA.setConfig gridDim blockDim sharedMem Nothing- CUDA.setParams [CUDA.VArg d_xs, CUDA.VArg d_ys, CUDA.VArg d_zs, CUDA.IArg wx, CUDA.IArg wy]- CUDA.launch "matrixMul"-- -- Copy back result- zs <- newArray_ resBnds- withMatrix zs $ \p -> CUDA.peekArray (wy*hx) d_zs p- return zs-------------------------------------------------------------------------------------- Main-----------------------------------------------------------------------------------main :: IO ()-main = do- dev <- CUDA.get- props <- CUDA.props dev- putStrLn $ "Using device " ++ show dev ++ ": " ++ CUDA.deviceName props-- xs <- randomArr ((1,1),(8*BLOCK_SIZE, 4*BLOCK_SIZE)) :: IO (Matrix Float)- ys <- randomArr ((1,1),(4*BLOCK_SIZE,12*BLOCK_SIZE)) :: IO (Matrix Float)-- putStr "== Reference: " >> hFlush stdout- (tr,ref) <- benchmark 100 (matMult xs ys) (return ())- putStrLn $ shows (fromInteger (timeIn millisecond tr) / 100::Float) " ms"-- putStr "== CUDA: " >> hFlush stdout- (tc,mat) <- benchmark 100 (matMultCUDA xs ys) (CUDA.sync)- putStrLn $ shows (fromInteger (timeIn millisecond tc) / 100::Float) " ms"-- putStr "== Validating: "- verify ref mat >>= \rv -> putStrLn $ if rv then "Ok!" else "INVALID!"-
− examples/src/matrixMul/matrix_mul.cu
@@ -1,110 +0,0 @@-/*- * Copyright 1993-2009 NVIDIA Corporation. All rights reserved.- *- * NVIDIA Corporation and its licensors retain all intellectual property and - * proprietary rights in and to this software and related documentation. - * Any use, reproduction, disclosure, or distribution of this software - * and related documentation without an express license agreement from- * NVIDIA Corporation is strictly prohibited.- *- * Please refer to the applicable NVIDIA end user license agreement (EULA) - * associated with this source code for terms and conditions that govern - * your use of this NVIDIA software.- * - */--/* Matrix multiplication: C = A * B.- * Device code.- */--#ifndef _MATRIXMUL_KERNEL_H_-#define _MATRIXMUL_KERNEL_H_--#include <stdio.h>-#include "matrix_mul.h"--#define CHECK_BANK_CONFLICTS 0-#if CHECK_BANK_CONFLICTS-#define AS(i, j) cutilBankChecker(((float*)&As[0][0]), (BLOCK_SIZE * i + j))-#define BS(i, j) cutilBankChecker(((float*)&Bs[0][0]), (BLOCK_SIZE * i + j))-#else-#define AS(i, j) As[i][j]-#define BS(i, j) Bs[i][j]-#endif--////////////////////////////////////////////////////////////////////////////////-//! Matrix multiplication on the device: C = A * B-//! wA is A's width and wB is B's width-////////////////////////////////////////////////////////////////////////////////-extern "C" __global__ void-matrixMul(float* A, float* B, float* C, int wA, int wB)-{- // Block index- int bx = blockIdx.x;- int by = blockIdx.y;-- // Thread index- int tx = threadIdx.x;- int ty = threadIdx.y;-- // Index of the first sub-matrix of A processed by the block- int aBegin = wA * BLOCK_SIZE * by;-- // Index of the last sub-matrix of A processed by the block- int aEnd = aBegin + wA - 1;-- // Step size used to iterate through the sub-matrices of A- int aStep = BLOCK_SIZE;-- // Index of the first sub-matrix of B processed by the block- int bBegin = BLOCK_SIZE * bx;-- // Step size used to iterate through the sub-matrices of B- int bStep = BLOCK_SIZE * wB;-- // Csub is used to store the element of the block sub-matrix- // that is computed by the thread- float Csub = 0;-- // Loop over all the sub-matrices of A and B- // required to compute the block sub-matrix- for (int a = aBegin, b = bBegin;- a <= aEnd;- a += aStep, b += bStep) {-- // Declaration of the shared memory array As used to- // store the sub-matrix of A- __shared__ float As[BLOCK_SIZE][BLOCK_SIZE];-- // Declaration of the shared memory array Bs used to- // store the sub-matrix of B- __shared__ float Bs[BLOCK_SIZE][BLOCK_SIZE];-- // Load the matrices from device memory- // to shared memory; each thread loads- // one element of each matrix- AS(ty, tx) = A[a + wA * ty + tx];- BS(ty, tx) = B[b + wB * ty + tx];-- // Synchronize to make sure the matrices are loaded- __syncthreads();-- // Multiply the two matrices together;- // each thread computes one element- // of the block sub-matrix- for (int k = 0; k < BLOCK_SIZE; ++k)- Csub += AS(ty, k) * BS(k, tx);-- // Synchronize to make sure that the preceding- // computation is done before loading two new- // sub-matrices of A and B in the next iteration- __syncthreads();- }-- // Write the block sub-matrix to device memory;- // each thread writes one element- int c = wB * BLOCK_SIZE * by + BLOCK_SIZE * bx;- C[c + wB * ty + tx] = Csub;-}--#endif // #ifndef _MATRIXMUL_KERNEL_H_
− examples/src/matrixMul/matrix_mul.h
@@ -1,33 +0,0 @@-/*- * Copyright 1993-2009 NVIDIA Corporation. All rights reserved.- *- * NVIDIA Corporation and its licensors retain all intellectual property and - * proprietary rights in and to this software and related documentation. - * Any use, reproduction, disclosure, or distribution of this software - * and related documentation without an express license agreement from- * NVIDIA Corporation is strictly prohibited.- *- * Please refer to the applicable NVIDIA end user license agreement (EULA) - * associated with this source code for terms and conditions that govern - * your use of this NVIDIA software.- * - */--#ifndef _MATRIXMUL_H_-#define _MATRIXMUL_H_--/* Thread block size */-#define BLOCK_SIZE 16--/* Matrix dimensions- * (chosen as multiples of the thread block size for simplicity)- */-#define WA (3 * BLOCK_SIZE) /* Matrix A width */-#define HA (5 * BLOCK_SIZE) /* Matrix A height */-#define WB (8 * BLOCK_SIZE) /* Matrix B width */-#define HB WA /* Matrix B height */-#define WC WB /* Matrix C width */-#define HC HA /* Matrix C height */--#endif /* _MATRIXMUL_H_ */-
− examples/src/matrixMulDrv/LICENSE
@@ -1,187 +0,0 @@-NVIDIA Corporation GPU COMPUTING SDK END USER LICENSE AGREEMENT ("Agreement")--BY DOWNLOADING THE SOFTWARE AND OTHER AVAILABLE MATERIALS, YOU ("DEVELOPER")-AGREE TO BE BOUND BY THE FOLLOWING TERMS AND CONDITIONS OF THIS AGREEMENT. IF-DEVELOPER DOES NOT AGREE TO THE TERMS AND CONDITION OF THIS AGREEMENT, THEN DO-NOT DOWNLOAD THE SOFTWARE AND MATERIALS.--The materials available for download to Developers may include software in both-sample source ("Source Code") and object code ("Object Code") versions,-documentation ("Documentation"), certain art work ("Art Assets") and other-materials (collectively, these materials referred to herein as "Materials").-Except as expressly indicated herein, all terms and conditions of this Agreement-apply to all of the Materials.--Except as expressly set forth herein, NVIDIA owns all of the Materials and makes-them available to Developer only under the terms and conditions set forth in-this Agreement.--License: Subject to the terms of this Agreement, NVIDIA hereby grants to-Developer a royalty-free, non-exclusive license to possess and to use the-Materials. Developer may install and use multiple copies of the Materials on a-shared computer or concurrently on different computers, and make multiple-back-up copies of the Materials, solely for Licensee's use within Licensee's-Enterprise. "Enterprise" shall mean individual use by Licensee or any legal-entity (such as a corporation or university) and the subsidiaries it owns by-more than 50 percent. The following terms apply to the specified type of-Material:--Source Code: Developer shall have the right to modify and create derivative-works with the Source Code. Developer shall own any derivative works-("Derivatives") it creates to the Source Code, provided that Developer uses the-Materials in accordance with the terms and conditions of this Agreement.-Developer may distribute the Derivatives, provided that all NVIDIA copyright-notices and trademarks are used properly and the Derivatives include the-following statement: "This software contains source code provided by NVIDIA-Corporation." --Object Code: Developer agrees not to disassemble, decompile or reverse engineer-the Object Code versions of any of the Materials. Developer acknowledges that-certain of the Materials provided in Object Code version may contain third party-components that may be subject to restrictions, and expressly agrees not to-attempt to modify or distribute such Materials without first receiving consent-from NVIDIA.--Art Assets: Developer shall have the right to modify and create Derivatives of-the Art Assets, but may not distribute any of the Art Assets or Derivatives-created therefrom without NVIDIA's prior written consent.--No Other License: No rights or licenses are granted by NVIDIA to Developer under-this Agreement, expressly or by implication, with respect to any proprietary-information or patent, copyright, trade secret or other intellectual property-right owned or controlled by NVIDIA, except as expressly provided in this-Agreement.--Intellectual Property Ownership: All rights, title, interest and copyrights in-and to the Materials (including but not limited to all images, photographs,-animations, video, audio, music, text, and other information incorporated into-the Materials), are owned by NVIDIA, or its suppliers. The Materials are-protected by copyright laws and international treaty provisions. Accordingly,-Developer is required to treat the Materials like any other copyrighted-material, except as otherwise allowed pursuant to this Agreement. ---Term of Agreement: This Agreement is effective until (i) automatically-terminated if Developer fails to comply with any of the terms and conditions of-this Agreement; or (ii) terminated by NVIDIA. NVIDIA may terminate this-Agreement (and with it, all of Developer's right to the Materials) immediately-upon written notice (which may include email) to Developer, with or without-cause.--Defensive Suspension: If Developer commences or participates in any legal-proceeding against NVIDIA, then NVIDIA may, in its sole discretion, suspend or-terminate all license grants and any other rights provided under this Agreement-during the pendency of such legal proceedings. ---No Support: NVIDIA has no obligation to support or to continue providing or-updating any of the Materials.--No Warranty: THE SOFTWARE AND ANY OTHER MATERIALS PROVIDED BY NVIDIA TO-DEVELOPER HEREUNDER ARE PROVIDED "AS IS." NVIDIA DISCLAIMS ALL WARRANTIES,-EXPRESS, IMPLIED OR STATUTORY, INCLUDING, WITHOUT LIMITATION, THE IMPLIED-WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND-NONINFRINGEMENT.--Limitation of Liability: NVIDIA SHALL NOT BE LIABLE TO DEVELOPER, DEVELOPER'S-CUSTOMERS, OR ANY OTHER PERSON OR ENTITY CLAIMING THROUGH OR UNDER DEVELOPER FOR-ANY LOSS OF PROFITS, INCOME, SAVINGS, OR ANY OTHER CONSEQUENTIAL, INCIDENTAL,-SPECIAL, PUNITIVE, DIRECT OR INDIRECT DAMAGES (WHETHER IN AN ACTION IN CONTRACT,-TORT OR BASED ON A WARRANTY), EVEN IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY-OF SUCH DAMAGES. THESE LIMITATIONS SHALL APPLY NOTWITHSTANDING ANY FAILURE OF-THE ESSENTIAL PURPOSE OF ANY LIMITED REMEDY. IN NO EVENT SHALL NVIDIA'S-AGGREGATE LIABILITY TO DEVELOPER OR ANY OTHER PERSON OR ENTITY CLAIMING THROUGH-OR UNDER DEVELOPER EXCEED THE AMOUNT OF MONEY ACTUALLY PAID BY DEVELOPER TO-NVIDIA FOR THE SOFTWARE OR ANY OTHER MATERIALS.--Applicable Law: This Agreement shall be deemed to have been made in, and shall-be construed pursuant to, the laws of the State of Delaware. The United Nations-Convention on Contracts for the International Sale of Goods is specifically-disclaimed.--Feedback: In the event Developer contacts NVIDIA to request Feedback (as defined-below) on how to optimize Developer's product for use with the Materials, the-following terms and conditions apply the Feedback:--1. Exchange of Feedback. Both parties agree that neither party has an-obligation to give the other party any suggestions, comments or other feedback,-whether verbally or in code form ("Feedback"), relating to (i) the Materials;-(ii) Developer's products; (iii) Developer's use of the Materials; or (iv)-optimization of Developer's product with NVIDIA product(s). In the event either-party provides Feedback to the other party, the party receiving the Feedback may-use and include any Feedback that the other party voluntarily provides to-improve the (i) Materials or other related NVIDIA technologies, respectively for-the benefit of NVIDIA; or (ii) Developer's product or other related Developer-technologies, respectively for the benefit of Developer. Accordingly, if either-party provides Feedback to the other party, both parties agree that the other-party and its respective Developers may freely use, reproduce, license,-distribute, and otherwise commercialize the Feedback in the (i) Materials or-other related technologies; or (ii) Developer's products or other related-technologies, respectively, without the payment of any royalties or fees.- -2. Residual Rights. Developer agrees that NVIDIA shall be free to use any-general knowledge, skills and experience, (including, but not limited to, ideas,-concepts, know-how, or techniques) ("Residuals"), contained in the (i) Feedback-provided by Developer to NVIDIA; (ii) Developer's products, in source or object-code form, shared or disclosed to NVIDIA in connection with the Feedback; or (c)-Developer's confidential information voluntarily provided to NVIDIA in-connection with the Feedback, which are retained in the memories of NVIDIA's-employees, agents, or contractors who have had access to such (i) Feedback-provided by Developer to NVIDIA; (ii) Developer's products; or (c) Developer's-confidential information voluntarily provided to NVIDIA, in connection with the-Feedback. Subject to the terms and conditions of this Agreement, NVIDIA's-employees, agents, or contractors shall not be prevented from using Residuals as-part of such employee's, agent's or contractor's general knowledge, skills,-experience, talent, and/or expertise. NVIDIA shall not have any obligation to-limit or restrict the assignment of such employees, agents or contractors or to-pay royalties for any work resulting from the use of Residuals.--3. Disclaimer of Warranty. FEEDBACK FROM EITHER PARTY IS PROVIDED FOR THE-OTHER PARTY'S USE "AS IS" AND BOTH PARTIES DISCLAIM ALL WARRANTIES, EXPRESS,-IMPLIED AND STATUTORY INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. BOTH PARTIES DO NOT-REPRESENT OR WARRANT THAT THE FEEDBACK WILL MEET THE OTHER PARTY'S REQUIREMENTS-OR THAT THE OPERATION OR IMPLEMENTATION OF THE FEEDBACK WILL BE UNINTERRUPTED OR-ERROR-FREE.--4. No Liability for Consequential Damages. TO THE MAXIMUM EXTENT PERMITTED-BY APPLICABLE LAW, IN NO EVENT SHALL EITHER PARTY OR ITS SUPPLIERS BE LIABLE FOR-ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER-(INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS-INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS) ARISING-OUT OF THE USE OF OR INABILITY TO USE THE FEEDBACK, EVEN IF THE OTHER PARTY HAS-BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.--5. Freedom of Action. Developer agrees that this Agreement is nonexclusive-and NVIDIA may currently or in the future be developing software, other-technology or confidential information internally, or receiving confidential-information from other parties that maybe similar to the Feedback and-Developer's confidential information (as provided in subsection 2 above), which-may be provided to NVIDIA in connection with Feedback by Developer. Accordingly,-Developer agrees that nothing in this Agreement will be construed as a-representation or inference that NVIDIA will not develop, design, manufacture,-acquire, market products, or have products developed, designed, manufactured,-acquired, or marketed for NVIDIA, that compete with the Developer's products or-confidential information.--RESTRICTED RIGHTS NOTICE: Materials has been developed entirely at private-expense and is commercial computer software provided with RESTRICTED RIGHTS.-Use, duplication or disclosure by the U.S. Government or a U.S. Government-subcontractor is subject to the restrictions set forth in the license agreement-under which Materials was obtained pursuant to DFARS 227.7202-3(a) or as set-forth in subparagraphs (c)(1) and (2) of the Commercial Computer Software --Restricted Rights clause at FAR 52.227-19, as applicable.-Contractor/manufacturer is NVIDIA, 2701 San Tomas Expressway, Santa Clara, CA-95050.--Miscellaneous: If any provision of this Agreement is inconsistent with, or-cannot be fully enforced under, the law, such provision will be construed as-limited to the extent necessary to be consistent with and fully enforceable-under the law. This Agreement is the final, complete and exclusive agreement-between the parties relating to the subject matter hereof, and supersedes all-prior or contemporaneous understandings and agreements relating to such subject-matter, whether oral or written. This Agreement may only be modified in writing-signed by an authorized officer of NVIDIA. Developer agrees that it will not-ship, transfer or export the Materials into any country, or use the Materials in-any manner, prohibited by the United States Bureau of Industry and Security or-any export laws, restrictions or regulations.
− examples/src/matrixMulDrv/Makefile
@@ -1,18 +0,0 @@-#-# Baking!-#--# -------------------------------------------------------------------------------# Input files-# -------------------------------------------------------------------------------EXECUTABLE := matrixMulDrv--HSMAIN := MatrixMul.hs-PTXFILES := matrix_mul.cu--USEDRVAPI := 1--# -------------------------------------------------------------------------------# Haskell/CUDA build system-# -------------------------------------------------------------------------------include ../../common/common.mk
− examples/src/matrixMulDrv/MatrixMul.hs
@@ -1,155 +0,0 @@-{-# LANGUAGE CPP #-}--------------------------------------------------------------------------------------- Module : MatrixMul--- Copyright : (c) 2009 Trevor L. McDonell--- License : BSD------ Matrix multiplication using driver interface--------------------------------------------------------------------------------------module Main where--#include "matrix_mul.h"---- Friends-import RandomVector---- System-import Numeric-import Data.Array-import Control.Exception-import Data.Array.Storable-import Foreign.Storable-import qualified Data.ByteString.Char8 as B-import qualified Foreign.CUDA.Driver as CUDA----- Return the (width,height) of a matrix----getSize :: Storable e => Matrix e -> IO (Int,Int)-getSize mat = do- ((li,lj),(ui,uj)) <- getBounds mat- return (rangeSize (lj,uj), rangeSize (li,ui))------------------------------------------------------------------------------------- Reference implementation-----------------------------------------------------------------------------------matMult :: (Num e, Storable e) => Matrix e -> Matrix e -> IO (Matrix e)-matMult mx my = do- x <- unsafeFreeze mx- y <- unsafeFreeze my- let ((li, lj), (ui, uj)) = bounds x- ((li',lj'),(ui',uj')) = bounds y- resBnds | (lj,uj) == (li',ui') = ((li,lj'),(ui,uj'))- | otherwise = error "matrix dimensions must agree"-- newListArray resBnds [sum [x!(i,k) * y!(k,j) | k <- range (lj,uj)]- | i <- range (li,ui)- , j <- range (lj',uj') ]-------------------------------------------------------------------------------------- CUDA---------------------------------------------------------------------------------------- Initialise the device and context. Load the PTX source code, and return a--- reference to the kernel function.----initCUDA :: IO (CUDA.Context, CUDA.Fun)-initCUDA = do- CUDA.initialise []- dev <- CUDA.device 0- ctx <- CUDA.create dev []- ptx <- B.readFile "data/matrix_mul.ptx"- (mdl,r) <- CUDA.loadDataEx ptx [CUDA.ThreadsPerBlock (BLOCK_SIZE*BLOCK_SIZE)]- fun <- CUDA.getFun mdl "matrixMul"-- putStrLn $ ">> PTX JIT compilation (" ++ showFFloat (Just 2) (CUDA.jitTime r) " ms)"- B.putStrLn (CUDA.jitInfoLog r)- return (ctx,fun)-------- Allocate some memory, and copy over the input data to the device. Should--- probably catch allocation exceptions individually...----initData :: (Num e, Storable e)- => Matrix e -> Matrix e -> IO (CUDA.DevicePtr e, CUDA.DevicePtr e, CUDA.DevicePtr e)-initData xs ys = do- (wx,hx) <- getSize xs- (wy,hy) <- getSize ys- dxs <- CUDA.mallocArray (wx*hx)- dys <- CUDA.mallocArray (wy*hy)- res <- CUDA.mallocArray (wy*hx)-- flip onException (mapM_ CUDA.free [dxs,dys,res]) $ do- withMatrix xs $ \p -> CUDA.pokeArray (wx*hx) p dxs- withMatrix ys $ \p -> CUDA.pokeArray (wy*hy) p dys- return (dxs, dys, res)-------- Run the test----testCUDA :: (Num e, Storable e) => Matrix e -> Matrix e -> IO (Matrix e)-testCUDA xs' ys' = doTest undefined xs' ys'- where- doTest :: (Num e', Storable e') => e' -> Matrix e' -> Matrix e' -> IO (Matrix e')- doTest dummy xs ys = do- (widthX,heightX) <- getSize xs- (widthY,_) <- getSize ys- ((li, lj), (ui, uj)) <- getBounds xs- ((li',lj'),(ui',uj')) <- getBounds ys- let resBnds | (lj,uj) == (li',ui') = ((li,lj'),(ui,uj'))- | otherwise = error "matrix dimensions must agree"-- -- Initialise environment and copy over test data- --- putStrLn ">> Initialising"- bracket initCUDA (\(ctx,_) -> CUDA.destroy ctx) $ \(_,matMul) -> do-- -- Ensure we release the memory, even if there was an error- --- putStrLn ">> Executing"- bracket- (initData xs ys)- (\(dx,dy,dz) -> mapM_ CUDA.free [dx,dy,dz]) $- \(dx,dy,dz) -> do- -- Repeat test many times...- --- CUDA.setParams matMul [CUDA.VArg dx, CUDA.VArg dy, CUDA.VArg dz, CUDA.IArg widthX, CUDA.IArg widthY]- CUDA.setBlockShape matMul (BLOCK_SIZE,BLOCK_SIZE,1)- CUDA.setSharedSize matMul (fromIntegral (2 * BLOCK_SIZE * BLOCK_SIZE * sizeOf dummy))- CUDA.launch matMul (widthY `div` BLOCK_SIZE, heightX `div` BLOCK_SIZE) Nothing- CUDA.sync-- -- Copy back result- --- zs <- newArray_ resBnds- withMatrix zs $ \p -> CUDA.peekArray (widthY*heightX) dz p- return zs-------------------------------------------------------------------------------------- Test & Verify-----------------------------------------------------------------------------------main :: IO ()-main = do- putStrLn "== Generating random matrices"- xs <- randomArr ((1,1),(8*BLOCK_SIZE, 4*BLOCK_SIZE)) :: IO (Matrix Float)- ys <- randomArr ((1,1),(4*BLOCK_SIZE,12*BLOCK_SIZE)) :: IO (Matrix Float)-- putStrLn "== Generating reference solution"- ref <- matMult xs ys-- putStrLn "== Testing CUDA"- mat <- testCUDA xs ys-- putStr "== Validating: "- verify ref mat >>= \rv -> putStrLn $ if rv then "Ok!" else "INVALID!"-
− examples/src/matrixMulDrv/matrix_mul.cu
@@ -1,110 +0,0 @@-/*- * Copyright 1993-2009 NVIDIA Corporation. All rights reserved.- *- * NVIDIA Corporation and its licensors retain all intellectual property and - * proprietary rights in and to this software and related documentation. - * Any use, reproduction, disclosure, or distribution of this software - * and related documentation without an express license agreement from- * NVIDIA Corporation is strictly prohibited.- *- * Please refer to the applicable NVIDIA end user license agreement (EULA) - * associated with this source code for terms and conditions that govern - * your use of this NVIDIA software.- * - */--/* Matrix multiplication: C = A * B.- * Device code.- */--#ifndef _MATRIXMUL_KERNEL_H_-#define _MATRIXMUL_KERNEL_H_--#include <stdio.h>-#include "matrix_mul.h"--#define CHECK_BANK_CONFLICTS 0-#if CHECK_BANK_CONFLICTS-#define AS(i, j) cutilBankChecker(((float*)&As[0][0]), (BLOCK_SIZE * i + j))-#define BS(i, j) cutilBankChecker(((float*)&Bs[0][0]), (BLOCK_SIZE * i + j))-#else-#define AS(i, j) As[i][j]-#define BS(i, j) Bs[i][j]-#endif--////////////////////////////////////////////////////////////////////////////////-//! Matrix multiplication on the device: C = A * B-//! wA is A's width and wB is B's width-////////////////////////////////////////////////////////////////////////////////-extern "C" __global__ void-matrixMul(float* A, float* B, float* C, int wA, int wB)-{- // Block index- int bx = blockIdx.x;- int by = blockIdx.y;-- // Thread index- int tx = threadIdx.x;- int ty = threadIdx.y;-- // Index of the first sub-matrix of A processed by the block- int aBegin = wA * BLOCK_SIZE * by;-- // Index of the last sub-matrix of A processed by the block- int aEnd = aBegin + wA - 1;-- // Step size used to iterate through the sub-matrices of A- int aStep = BLOCK_SIZE;-- // Index of the first sub-matrix of B processed by the block- int bBegin = BLOCK_SIZE * bx;-- // Step size used to iterate through the sub-matrices of B- int bStep = BLOCK_SIZE * wB;-- // Csub is used to store the element of the block sub-matrix- // that is computed by the thread- float Csub = 0;-- // Loop over all the sub-matrices of A and B- // required to compute the block sub-matrix- for (int a = aBegin, b = bBegin;- a <= aEnd;- a += aStep, b += bStep) {-- // Declaration of the shared memory array As used to- // store the sub-matrix of A- __shared__ float As[BLOCK_SIZE][BLOCK_SIZE];-- // Declaration of the shared memory array Bs used to- // store the sub-matrix of B- __shared__ float Bs[BLOCK_SIZE][BLOCK_SIZE];-- // Load the matrices from device memory- // to shared memory; each thread loads- // one element of each matrix- AS(ty, tx) = A[a + wA * ty + tx];- BS(ty, tx) = B[b + wB * ty + tx];-- // Synchronize to make sure the matrices are loaded- __syncthreads();-- // Multiply the two matrices together;- // each thread computes one element- // of the block sub-matrix- for (int k = 0; k < BLOCK_SIZE; ++k)- Csub += AS(ty, k) * BS(k, tx);-- // Synchronize to make sure that the preceding- // computation is done before loading two new- // sub-matrices of A and B in the next iteration- __syncthreads();- }-- // Write the block sub-matrix to device memory;- // each thread writes one element- int c = wB * BLOCK_SIZE * by + BLOCK_SIZE * bx;- C[c + wB * ty + tx] = Csub;-}--#endif // #ifndef _MATRIXMUL_KERNEL_H_
− examples/src/matrixMulDrv/matrix_mul.h
@@ -1,33 +0,0 @@-/*- * Copyright 1993-2009 NVIDIA Corporation. All rights reserved.- *- * NVIDIA Corporation and its licensors retain all intellectual property and - * proprietary rights in and to this software and related documentation. - * Any use, reproduction, disclosure, or distribution of this software - * and related documentation without an express license agreement from- * NVIDIA Corporation is strictly prohibited.- *- * Please refer to the applicable NVIDIA end user license agreement (EULA) - * associated with this source code for terms and conditions that govern - * your use of this NVIDIA software.- * - */--#ifndef _MATRIXMUL_H_-#define _MATRIXMUL_H_--/* Thread block size */-#define BLOCK_SIZE 16--/* Matrix dimensions- * (chosen as multiples of the thread block size for simplicity)- */-#define WA (3 * BLOCK_SIZE) /* Matrix A width */-#define HA (5 * BLOCK_SIZE) /* Matrix A height */-#define WB (8 * BLOCK_SIZE) /* Matrix B width */-#define HB WA /* Matrix B height */-#define WC WB /* Matrix C width */-#define HC HA /* Matrix C height */--#endif /* _MATRIXMUL_H_ */-
− examples/src/scan/Makefile
@@ -1,18 +0,0 @@-#-# Baking!-#--# -------------------------------------------------------------------------------# Input files-# -------------------------------------------------------------------------------EXECUTABLE := scan--HSMAIN := Scan.chs-CUFILES := scan.cu--EXTRALIBS := stdc++--# -------------------------------------------------------------------------------# Haskell/CUDA build system-# -------------------------------------------------------------------------------include ../../common/common.mk
− examples/src/scan/Scan.chs
@@ -1,112 +0,0 @@-{-# LANGUAGE ForeignFunctionInterface #-}--------------------------------------------------------------------------------------- Module : Scan--- Copyright : (c) 2009 Trevor L. McDonell--- License : BSD------ Apply a binary operator to an array similar to 'fold', but return a--- successive list of values reduced from the left (or right).--------------------------------------------------------------------------------------module Main where--#include "scan.h"---- Friends-import C2HS hiding (newArray)-import Time-import RandomVector---- System-import Control.Monad-import Control.Exception-import qualified Foreign.CUDA as CUDA-------------------------------------------------------------------------------------- Reference-----------------------------------------------------------------------------------scanList :: (Num e, Storable e) => Vector e -> IO (Vector e)-scanList xs = do- bnds <- getBounds xs- xs' <- getElems xs- (t,zs') <- benchmark 100 (return (scanl1 (+) xs')) (return ())- putStrLn $ "List: " ++ shows (fromInteger (timeIn millisecond t`div`100)::Float) " ms"- newListArray bnds zs'---scanArr :: (Num e, Storable e) => Vector e -> IO (Vector e)-scanArr xs = do- bnds <- getBounds xs- zs <- newArray_ bnds- let idx = range bnds- (t,_) <- benchmark 100 (foldM_ (k zs) 0 idx) (return ())- putStrLn $ "Array: " ++ shows (fromInteger (timeIn millisecond t)/100::Float) " ms"- return zs- where- k zs a i = do- x <- readArray xs i- let z = x+a- writeArray zs i z- return z-------------------------------------------------------------------------------------- CUDA---------------------------------------------------------------------------------------- Include the time to copy the data to/from the storable array (significantly--- faster than from a Haskell list)----scanCUDA :: Vector Float -> IO (Vector Float)-scanCUDA xs = do- bnds <- getBounds xs- zs <- newArray_ bnds- let len = rangeSize bnds- CUDA.allocaArray len $ \d_xs -> do- CUDA.allocaArray len $ \d_zs -> do- (t,_) <- flip (benchmark 100) CUDA.sync $ do- withVector xs $ \p -> CUDA.pokeArray len p d_xs- scanl1_plusf d_xs d_zs len- withVector zs $ \p -> CUDA.peekArray len d_zs p- putStrLn $ "CUDA: " ++ shows (fromInteger (timeIn millisecond t)/100::Float) " ms (with copy)"-- (t',_) <- benchmark 100 (scanl1_plusf d_xs d_zs len) CUDA.sync- putStrLn $ "CUDA: " ++ shows (fromInteger (timeIn millisecond t')/100::Float) " ms (compute only)"-- return zs--{# fun unsafe scanl1_plusf- { withDP* `CUDA.DevicePtr Float'- , withDP* `CUDA.DevicePtr Float'- , `Int'- } -> `()' #}- where- withDP p a = CUDA.withDevicePtr p $ \p' -> a (castPtr p')-------------------------------------------------------------------------------------- Main-----------------------------------------------------------------------------------main :: IO ()-main = do- dev <- CUDA.get- props <- CUDA.props dev- putStrLn $ "Using device " ++ show dev ++ ": " ++ CUDA.deviceName props-- arr <- randomArr (1,100000) :: IO (Vector Float)- ref <- scanList arr- ref' <- scanArr arr- cuda <- scanCUDA arr-- return ()-- putStr "== Validating: "- verify ref ref' >>= \rv -> assert rv (return ())- verify ref cuda >>= \rv -> putStrLn $ if rv then "Ok!" else "INVALID!"-
− examples/src/scan/scan.cu
@@ -1,204 +0,0 @@-/* ------------------------------------------------------------------------------ *- * Module : Scan- * Copyright : (c) 2009 Trevor L. McDonell- * License : BSD- *- * ---------------------------------------------------------------------------*/--#include "scan.h"--#include "utils.h"-#include "operator.h"-#include "cudpp/cudpp_globals.h"-#include "cudpp/scan_kernel.cu"-#include "cudpp/vector_kernel.cu"--template <typename T>-struct scan_plan-{- T **block_sums;- size_t num_levels;-};--static inline unsigned int-calc_num_blocks(unsigned int N)-{- return max(1u, (unsigned int)ceil((double)N / (SCAN_ELTS_PER_THREAD * CTA_SIZE)));-}---/*- * This is the CPU-side workhorse of the scan operation, invoking the kernel on- * each of the reduction blocks.- */-template <class op, typename T, bool backward, bool exclusive>-static void-scan_recursive-(- const T *in,- T *out,- scan_plan<T> *plan,- int N,- int level-)-{- size_t num_blocks = calc_num_blocks(N);- bool is_full = N == num_blocks * SCAN_ELTS_PER_THREAD * CTA_SIZE;-- dim3 grid(num_blocks, 1, 1);- dim3 block(CTA_SIZE, 1, 1);- size_t smem = sizeof(T) * CTA_SIZE * 2;--#define MULTIBLOCK 0x01-#define FULLBLOCK 0x04- int traits = 0;- if (num_blocks > 1) traits |= MULTIBLOCK;- if (is_full) traits |= FULLBLOCK;-- /*- * Set up execution parameters, and execute the scan- */- switch (traits)- {- case 0:- scan4- < T, ScanTraits<T, op, backward, exclusive, false, false, false> >- <<<grid, block, smem>>>(out, in, NULL, N, 1, 1);- break;-- case MULTIBLOCK:- scan4- < T, ScanTraits<T, op, backward, exclusive, false, true, false> >- <<<grid, block, smem>>>(out, in, plan->block_sums[level], N, 1, 1);- break;-- case FULLBLOCK:- scan4- < T, ScanTraits<T, op, backward, exclusive, false, false, true> >- <<<grid, block, smem>>>(out, in, NULL, N, 1, 1);- break;-- case MULTIBLOCK | FULLBLOCK:- scan4- < T, ScanTraits<T, op, backward, exclusive, false, true, true> >- <<<grid, block, smem>>>(out, in, plan->block_sums[level], N, 1, 1);- break;-- default:- assert(!"Non-exhaustive patterns in match");- }-- /*- * After scanning the sub-blocks, we now need to combine those results by- * taking the last value from each sub-block, and adding that to each of the- * successive blocks (i.e. scan across the sub-computations)- */- if (num_blocks > 1)- {- T *sums = plan->block_sums[level];-- scan_recursive- <op, T, backward, true>- (sums, sums, plan, num_blocks, level+1);-- vectorAddUniform4- <T, op, SCAN_ELTS_PER_THREAD>- <<<grid,block>>>- (out, sums, N, 4, 4, 0, 0);- }--#undef MULTIBLOCK-#undef FULLBLOCK-}---/*- * Allocate temporary memory used by the scan.- */-template <typename T>-static void-scan_init(int N, scan_plan<T> *plan)-{- size_t level = 0;- size_t elements = N;- size_t num_blocks;-- /*- * Determine how many intermediate block-level summations will be required- */- for (elements = N; elements > 1; elements = num_blocks)- {- num_blocks = calc_num_blocks(elements);-- if (num_blocks > 1)- ++level;- }-- plan->block_sums = (T**) malloc(level * sizeof(T*));- plan->num_levels = level;-- /*- * Now, allocate the necessary storage at each level- */- for (elements = N, level = 0; elements > 1; elements = num_blocks, level++)- {- num_blocks = calc_num_blocks(elements);-- if (num_blocks > 1)- cudaMalloc((void**) &plan->block_sums[level], num_blocks * sizeof(T));- }-}---/*- * Clean up temporary memory used by the scan- */-template <typename T>-static void-scan_finalise(scan_plan<T> *p)-{- for (size_t l = 0; l < p->num_levels; ++l)- cudaFree(p->block_sums[l]);-- free(p->block_sums);-}---/*- * Apply a binary operator to an array similar to `fold', but return a- * successive list of values reduced from the left. The reduction will take- * place in parallel, so the operator must be associative.- */-template <class op, typename T, bool backward, bool exclusive>-void-scan-(- const T *in,- T *out,- int length-)-{- scan_plan<T> plan;- scan_init<T>(length, &plan);-- scan_recursive<op, T, backward, exclusive>(in, out, &plan, length, 0);-- scan_finalise<T>(&plan);-}---// ------------------------------------------------------------------------------// Instances-// -------------------------------------------------------------------------------void scanl_plusf(float *in, float *out, int N)-{- scan< Plus<float>, float, false, true >(in, out, N);-}--void scanl1_plusf(float *in, float *out, int N)-{- scan< Plus<float>, float, false, false >(in, out, N);-}-
− examples/src/scan/scan.h
@@ -1,26 +0,0 @@-/* ------------------------------------------------------------------------------ *- * Module : Scan- * Copyright : (c) 2009 Trevor L. McDonell- * License : BSD- *- * ---------------------------------------------------------------------------*/--#ifndef __SCAN_H__-#define __SCAN_H__--#ifdef __cplusplus-extern "C" {-#endif--/*- * Instances- */-void scanl_plusf(float *in, float *out, int N);-void scanl1_plusf(float *in, float *out, int N);---#ifdef __cplusplus-}-#endif-#endif
− examples/src/simpleTexture/Makefile
@@ -1,18 +0,0 @@-#-# Baking!-#--# -------------------------------------------------------------------------------# Input files-# -------------------------------------------------------------------------------EXECUTABLE := simpleTexture--HSMAIN := SimpleTexture.hs-CUFILES := simpleTexture.cu--EXTRALIBS := stdc++--# -------------------------------------------------------------------------------# Haskell/CUDA build system-# -------------------------------------------------------------------------------include ../../common/common.mk
− examples/src/simpleTexture/SimpleTexture.hs
@@ -1,68 +0,0 @@-{-# LANGUAGE ParallelListComp #-}--------------------------------------------------------------------------------------- Module : SimpleTexture--- Copyright : (c) 2009 Trevor L. McDonell--- License : BSD------ Demonstrates texture references. Takes an input PGM file and generates an--- output that has been rotated. The kernel performs a simple 2D transformation--- on the texture coordinates (u,v).--------------------------------------------------------------------------------------module Main where--import Data.Array.Unboxed-import Graphics.Pgm-import qualified Foreign.CUDA as CUDA-import qualified Foreign.CUDA.Runtime.Texture as CUDA---imageFile, outputFile, referenceFile :: FilePath-imageFile = "data/lena_bw.pgm"-outputFile = "data/lena_bw_out.pgm"-referenceFile = "data/ref_rotated.pgm"--rotation :: Float-rotation = 0.5 -- radians---main :: IO ()-main = do- img <- either (error . show) head `fmap` pgmsFromFile imageFile- ref <- either (error . show) head `fmap` pgmsFromFile referenceFile- runTest img ref---runTest :: UArray (Int,Int) Int -> UArray (Int,Int) Int -> IO ()-runTest img ref' = do- rotated <- transform (amap (\x-> fromIntegral x/255) img)- arrayToFile outputFile (amap (\x -> round (x*255)) rotated)- if verify (elems ref) (elems rotated)- then putStrLn "PASSED"- else putStrLn "FAILED!"-- where- ref = amap (\x -> fromIntegral x / 255) ref'- verify xs ys = all (< epsilon) [abs ((x-y)/(x+y+epsilon)) | x <- xs | y <- ys]- epsilon = 0.05---transform :: UArray (Int,Int) Float -> IO (UArray (Int,Int) Float)-transform pgm =- let bnds@((x0,y0),(x1,y1)) = bounds pgm- width = x1-x0+1- height = y1-y0+1- desc = CUDA.FormatDesc (32,0,0,0) CUDA.Float- texture = CUDA.Texture True CUDA.Linear (CUDA.Wrap,CUDA.Wrap,CUDA.Wrap) desc- in- CUDA.allocaArray (width * height) $ \d_out ->- CUDA.withListArray (elems pgm) $ \d_tex -> do- CUDA.bind2D "tex" texture d_tex (width,height) (fromIntegral $ height * 4)- CUDA.setConfig (width `div` 8,height `div` 8) (8,8,1) 0 Nothing- CUDA.setParams [CUDA.VArg d_out, CUDA.IArg width, CUDA.IArg height, CUDA.FArg rotation]- CUDA.launch "transformKernel"-- listArray bnds `fmap` CUDA.peekListArray (width*height) d_out-
− examples/src/simpleTexture/data/lena_bw.pgm
@@ -1,5 +0,0 @@-P5-# Created by IrfanView-512 512-255-¢¢¢¡¢£ ¤ ¡¢¡¡¦¦¦¥¦«ª¯ª¬¬§®¨¦¡ vuiaa^\Waf`fcghihgnmkkihmmmlkkknljmmmmkgiiklounquyvpzxy}zy||{z }~ ~}~~ ~~}|~}y{|ywzyvurppsiffhptvy¢¢¡±ÀÆÍÏÔÔÕØÚÚÙÚÜ×ÒÌÀ¬zjidggnhqsuwuvvy{~yvux|yu{z|yw{ux{{wzyy{z{v{}|}}{||}uuz~}}{~|y|}~w{ryswvsx|£§©«©¢¢¢¡¢£ ¤ ¡¢¡¡¦¦¦¥¦«ª¯ª¬¬§®¨¦¡ vuiaa^\Waf`fcghihgnmkkihmmmlkkknljmmmmkgiiklounquyvpzxy}zy||{z }~ ~}~~ ~~}|~}y{|ywzyvurppsiffhptvy¢¢¡±ÀÆÍÏÔÔÕØÚÚÙÚÜ×ÒÌÀ¬zjidggnhqsuwuvvy{~yvux|yu{z|yw{ux{{wzyy{z{v{}|}}{||}uuz~}}{~|y|}~w{ryswvsx|£§©«©¢¢¢¡¢£ ¤ ¡¢¡¡¦¦¦¥¦«ª¯ª¬¬§®¨¦¡ vuiaa^\Waf`fcghihgnmkkihmmmlkkknljmmmmkgiiklounquyvpzxy}zy||{z }~ ~}~~ ~~}|~}y{|ywzyvurppsiffhptvy¢¢¡±ÀÆÍÏÔÔÕØÚÚÙÚÜ×ÒÌÀ¬zjidggnhqsuwuvvy{~yvux|yu{z|yw{ux{{wzyy{z{v{}|}}{||}uuz~}}{~|y|}~w{ryswvsx|£§©«©¢¢¢¡¢£ ¤ ¡¢¡¡¦¦¦¥¦«ª¯ª¬¬§®¨¦¡ vuiaa^\Waf`fcghihgnmkkihmmmlkkknljmmmmkgiiklounquyvpzxy}zy||{z }~ ~}~~ ~~}|~}y{|ywzyvurppsiffhptvy¢¢¡±ÀÆÍÏÔÔÕØÚÚÙÚÜ×ÒÌÀ¬zjidggnhqsuwuvvy{~yvux|yu{z|yw{ux{{wzyy{z{v{}|}}{||}uuz~}}{~|y|}~w{ryswvsx|£§©«©¢¢¢¡¢£ ¤ ¡¢¡¡¦¦¦¥¦«ª¯ª¬¬§®¨¦¡ vuiaa^\Waf`fcghihgnmkkihmmmlkkknljmmmmkgiiklounquyvpzxy}zy||{z }~ ~}~~ ~~}|~}y{|ywzyvurppsiffhptvy¢¢¡±ÀÆÍÏÔÔÕØÚÚÙÚÜ×ÒÌÀ¬zjidggnhqsuwuvvy{~yvux|yu{z|yw{ux{{wzyy{z{v{}|}}{||}uuz~}}{~|y|}~w{ryswvsx|£§©«©¤¤¡ ¡¥¤¨ªª«¯ªª°««§§zwnme_\^Y^_aeebckgijhkkidigkkejhikiflhnghkohlompwsvwwyvy{yz}y~~|{}| } ~~z|~ {z|~} ~~~}}{xyz{{wtssvloiihenmxz £©¹ÁÈÏÒÕÖ××ÚÙÙÚÛ×ÑȺ£neagehponxsvuvwyy}yyuzy|z|{zy{uvt{wuzx{~}{}|zx}|z{{vv~zx||~}}{|y{vsqzyz}~{fM £ ¡¢¢ ¤¥¨§¨ªªª«®¬©§¦¦y}kj`aY^[b\c```fhlogecigjejfcghlkkdjhjjheerfjkmpxwrwuwx{y{{|}x~|z}~{} ~} | ~~ ~ ~}|~{}~~~ }~}{|{{z|z{~wttpoomgggeervy~}£¡®ÁÇËÐÔÔרØÙÜÜÛØÔÍòlibeflhqtssw{vrwzxuxz~zy{}~xxuy{x|x~vz}{{x|z{yw}z}zzz~z|xz{}|~|~~{wxu~}~~zp\N?: ¤¢¦©©¨¯«ª®ª¬¥¤¢{yrm]]ZSVVW\[c`chmjljhgechilfhgcjghjfgkiiikimnpnqssvyz}|~~|}zzx{~~~ ~ ~| ~} }~}~}}|~}{~yxuvyxtvqqtnjilceqtyz~¢ ¤´ÁÉÍÐÔÖÖ×ÙÙÚÚÚ×ÑÈ»©zf`fholrqtrvwrswuwwxt{wuy{z}x}|{|v{z|~|||~|z|x|zv~{y}yyvz~~y~}}{|w~|q^SFC26. £¡¡ ¨¥ª¨¯¨«©ª®§¨©¤¢|xnr`^ZWW\\_^fchhgheimjfhdkkgfjikglgelrfjkgqmqmpmqwuvxy{vxz}~{}}y~~| z || {~}||}|}|~~~}~{x}y~zvytrqqlnpniegkjrux ¢©ºÃËÎÔÓÔרÚ×ÙÛØÕÌijnffmljpnrqtv{wv|wzuy|vwzwwv{|{wtwzx{|{~}{vz~zy|}z|x||z}{{}|{~}}}zl_H@11-.0¡¢¢¢¤¦©§ª¨ª¨¬¬¬©¨ª yyqj`^[\Y[Y[a\debcefkeifbhioigkjiggeckfccnhlmliqrstqus|wv|~x}~}y}|}~} |~|~}} ~z|~ ~~}|}}~||z{}{}v{|}}{~|}twwwsrppnpgnigekouv{¡¢ ³¾ÆÍÒÒÕÖØÙØØÙÚ×Ô˽ªzmihhlnposuutuxyuyvxzw{ww}xyxuxzy|zz{~yz{}~{ty}y~~zz{}}|}}}}~}{~~|vi`R<5-0/-+ §¥ª¥§©«¬¦§©¤¨¤£ {qh`ZYXZ[_bh_adcdhhgefhghcgeknjdggeghedinlnokllqtxswz{|y}y{{z{~{}} ~}~}} ~ ~ ~~~~||~~~|~}~||~~|xw{puuyuprupknjnigdmqw|¢£¡¨¸ÃÊÍÒÕըרØÚÛÙÖÏÆ·£middjhkmnsmuuzztxvty{yuyyuwwwvuxwwvxxy{|}yzu~z|yyz|~|z{||}z|||~}rj[L</12/-23¥¢¤¦¨¨©««««¬®ª©¦§§~tjj_[YZVWW]b\ae_chfeeiifiljjfghfgjhhngdehgjqmproqstswwy~{|z|{|~~}|~}~ ~ ~ } {} ~~~}}~|}||ywwyxuqqukmmnglhlijqw »ÆËÐÔÔÖÖØÚÚÝÚØÔ̾¯~jgjhgjppqosuxyxxztzyxy}wtzxzzwvxuwx|wxz|w|{{|~|{y{yy{}~z|}|}}} |viWG75+-+/--/¡£¤¢£§«©§ª©©¥¥¬¤ª§¦§¢}tled^TYXWa^X_`ddgkhgfhjimjlkijef`hgdfhffbhlqplrpsrvwxtxzy{yzyy}}|{~~ ~~~} ~ ~|| ~{||}{{~~}x|xxyyxttpqqpnnkoigehnyx £ ¡£¡ ¦µÃÉÍÒÔÕÙÙÛÙÛÚÛÙÒȸ§sigigjkmqoursvzxxvxy{yy|zwuz}ruyv{wyy{yyzwvy{xz}zyz|||xz{z|n^I;23).+/.01 ¤¦¦¦¨ª§§¬«©§¨§¨¦¢£{rmigZVZ_[\Y_acefcjhihnmijmkplfigfkiedffjeinqpnqsrwzyttw{yvwy{z}~|}}z} | ~}~ | ~~~~}|~|}~}|~x|}y~{urxojnlpqookfcgjuz¡¡ ¢ £ ¡¡£¡¢¡ª»ÄÉÍÑÕÕ×ÙÚÛÛÝØØÎųjgjhmssltsps|rxvu{ws|vyw{x|{vxx||vz}vywz~z{}{|}}vy|}~|~|}} {sl^F8;A0*(-,101 ¥¦§§ª¦¨¨§¨§ª¨¥¨¥¤¥¡}~qjcZ]XW__]_bcgeahggkklgknjhrjgebhimefafdiiniorrrqwuvvx{|z||zzx||}|~{}} ~ } ~~ } }~~}~~~{| } |zwyz|zywuuukspntimkjggmpvv ¥¢¡¡ ¡ ¥¤£ £¥£¡£µÂÈÎÐÔ××ÙÚÚÚÚÛØÒ̾®yfjjljjlpoouuqstqxuzyuz|zwzyuvwrw|z|wtxz}}xy~~}}z|}zz|z|~|qgYB5.1G31105303£¢¢¦¨¤¨©©©¬¨¦§¥©¨¢¥ ysmpd\]Y[[Z[Zbgfidgfjkngkkihdkigggifkjecegimommnnqvqtuwwx{}}~}} ~~~~~~~ ~ } ~~~~}~~|{~{z{xywtvumss}jnphihiiopy ¡ ¡£¡£ ¢¡¡¢¢£¡ ¡«¹ÃÉÍÑÕרÚÛÛÚÜÛÖÏŤoiilhmlkjoztvrsuyztsxw~~xyvwz|y{w{|xzzxy}yz~|{{|~y~~~~} zodT@42*+2//-,4-60 ¤¡¡¢¤¤«¤¦¥¦©©¥¦§¨¦§¦¥ zlgb\YSZX\Z[^ffgd_bjonjmgnlbjfeifneehghcchhjooorrqqrxy{y||w|}|}~~ ~ |~ ~}|{z~}{}tuz}syvqrs{vnhmljefkrwx £¥¦£¢£¢¢¤ ¥¡¢£¡¡¢±ÁÇÎÑÔÖ××ÛÛÜÜÛÚÔÎó{qhhcjqklryusrqrvyyxxv{yuxs}yzvwvy}v{}}{xx}|~}~ zp_Q=.10)(0+10/,)14£¡¥¦©¨¥¥§¦¦¦¥£¨¤¥¦£ ¡yolg^X\YSX^^W`gcoddemheghgjnlhkjbinhdfedfggflnpoqtpyutuxv|y}}{}yy}}} ~ ~ {}~ z~}}~| ~}{}~|}ztqrpqquwoomshkhheoqy¢¡¢ ¡¤¢¡ ££¤¢£ ¢ ¢ ¡ ¡¡ª¶ÁËÎÓ×ÙØØÙÜÚÜÛ×Ñʺ«vcfokginqtuttwyyvxv{w{y}wyz}~{yzyy}|~~{y}}}}{p_P</,1*,-(13./+'-5¡ ¡¡¥¥¦¦¨¦¤©¦ª¦¤§§¡¡©¤£¡ }tmd^c^W]X\a_afibcefeidhmigigglggighbbgeeglnkmrprxqyuvuuwz}yy|{w{~~~}} ~~~} ~{{~~|}~~~{|~~|}}{{yttuppusmokqgejfgnsw ¡¦ ¡¤¢ ¡¦£¥¢¤¡¤¢£¤ ¡ ¬»ÇÌÑÔ×ÚÙÚÙÛÛÚÛÔÍŰifggllknpunzqwxsvwy}|~x|{~yw{zz{ y|{y|w}|}}zm\S81*'.3--*2.1-01.1 ¡ £¡¥¥¤¥¢¦©¢§¥¦©££ ¥¥¢¡~p_bWUVY___a`akcdcikmjhqkjighigmfimfnieejkoqtntsss{z|ywxxu}~yz{} ~~ }~~~|~~| }~}}y{z}zuxuxsqtrlnmqjkeegmqsz¢¡££¢¢¡¥¡¢¡¡ ¦¥£¢£¢¢¡ ´ÀÈÏÒÕÖÚÙÙÚÛÛÛ×ÓË¿tggfgjjmqqquprwuwy~x}vxyz{xzy|{yx}{zx|{|}~} }lbK@0&-11-1.1;23,*,,4¡¢¢ ¡££¥¦¥¤¦ª¨££¢¢¥¤ ££¡~sf^bTWZX^`_cbejigjkmigmkiffgeifeeikdhggdhlpppqrnsyuuwvxvy}z|s{||{~}~ ~ ~ ~ |~}~ }~ | ||z}}~~|~}}~y|y{xyyxsosrlmjimhdelptz£¤¢¢£¡¤ ¢¡¥¤¤£¢¤¤ £¡ ¡ ¤ª¹ÅËÏÒÖØÙÙÛÛÝÞÚÕÏÆ¸¡pcppljpvqqmtwuwrzyyyx{{zzw}uv~zsxzxy~~~~ |odQ?42++6B51-/83/1-5-4 ¡¢§§¦¨¥§ £§¡¥¤¦¤¤¡¡¤¡£ ¡}xnid\bWU]\bb\ecgifewjijegilgjmh^cfbglcgeghkopoqrptqwruzyx}zz|}{{yy~~ ~ } ~~~ ~~~{{|}}~|{{~|z~~~~|}zz{z{z |yqopqpoimiokjgloor¡£¢¤¢£¦§ ¢¡¡ ¢¡¡¡£¡ ²½ÈÏÑÔÔ×ÙÚÛÛÜÚØÖÌÄ®xhhmqjhprpnuvtwtwzsx{~t|sz~{|{x|{}| ~ n_G;3-,-()0051,)+/.0.72¢¡¢§¤¦ª¥¥¡¥¥£¨¢¥¢¢ yxhaZ\WYa_`^dbbcfagjfghhccfglgadhcjfghegimnmtsnouxrv|utwwwu}}zz{~}|~ ~~ } z}}~}~}~ }~|}||{~}|}~}||~}~yzy{{xwxzsrtpnlqtkiiffhmlq~£¤£¢ ¤££ ¡ ¢¤¢£ ¢ £ §·ÄÉÑÑÖÖØÙÚÚÚÛÜØÔ˺¤kjfijknuslyqxvtuvrsqy{}~{xwzvuyxu|~} sZG514(),+,64>/34*/11735¡ ¢¦¨§ª¦¥ª¤¥£¤£££ £ ¤¤}tec_UXWW^_acfbckkhigeefhjgegggjmmfcdkhgijgijlknqqsqs|wu|yvy~x}}|~ ~ ~ ~}~|~~|}~~|} ~~ ~} ~{}~~}~~{~||~~}|~{{~~~{{x}vwxvzrrqpllppijmhlooqy£¡¢¡£¥ £ ¢ ¤¢ ¢ ¡¬¾ÆÌÐÔרÙÛÙÜÛÝÛÕγ~pkekslmnqtqtwquyrxvzwy{xxy{tzy{wx{|~ |q`G8299.5?22052..///0//0< ¢¢££§¦¤¥¨©¦£¥¤¢¥ ¥¥ ¡xqic]XXYV\]a]^bfdejmeighggbenikgdgiibeggkknjjltloosxww|xz|wy{t|}}x{~~}~~~~} ~}~}||~~{}~}~}~ }}~{~~}z}}|}||{||||y~xxzywvttnomnkkmjjkknvuu| ¤¡¥¤¢¤¡£§£¡ ¡¡ ¢ ¢§³ÅÉÎÓÕÙÙÚÜÚÛÛÛØÒË¿©seigmlpqpvuz|vz}ytwzvz~wyxxzvuxw{yw~}}q^I:J>//+,/+1'+3+-+6037756£¢¡¢ £§¦¨§¤§¨¤§¥ ££¢¢¢¢¢£}xrf`_XURX[e_\`a`ehkingliihdhjmfgggebhibhhmjpqonppsqxv{xy{xvy|x}}}~~||z z }~} ~~} ~}|}y}{}~~{}}~|z~|~}}z|~~~ |}}z~{z}{}~}~||{}~ |~{}~}{yyusonjlnljhhhmopwy~¡¢¡¢¡£¡¡¢§¦£¡ ¡ ¡¢ ¼ÆËÑÕÕÙÙÛÛÝÝÜÛÖÏǺ¥jedijmkrvqvyyvyzv}|z}{x||zzxyztv|{~zy} n^G8>II10'.+-/('.-,*/123669£ ¦ £¥¦¥¨¦¨©¥¦¤¡¢ £ ¡¡ ¡ ytlc\UWVMRS`]^addggdidkekfggiiehfddikgfehgljmnlkqqqrwzzwwv}uzz{}{z}}~|{}|}|~~|~~ ~ ~ y~z}|~{}~z~||}|~~|y~~y~ ~~~{}}~}{}~|~}{~~~|}zyy{|{~wuqlpqkkjgiimlspuw~¢¢¡¤ ¡¡¢¢¡ £ ¢³ÄËÎÓÕØØÙÛÜÜÞÝÛÕβxchjlmnorrtr|}yz~~y|{xz|uxwwzw||}w{{~ }o_R51'/:4-&'$(.*)--../73:;//¡¡ ¡ §§©¥¨¤ª¥¤¦¦§¢¥ £ ¦yqmb`VZ\SUTU_^agedkggiigkjtkgjjldhgdicfghkkmlkkjostuux|xwt{~{}~|z{~~{~{}~~~ |~ }{ }}{~|~}wx}||z~}~}~~~{||~~}{|{~~ ~~|~~}z~~z{}~{~}}}{}}{y|vxz|yzswknpnqjlfiinrvyy~ ¤ ¢¡¡££¡¡ ¢ ¬½ÇÍÑÕÖ×ÚÚÜÜÝßÝØÐÈÀ¥mgghporsrlo}}|y{{wy}{~|zywstz~zwx~z~~ ~q^F6+/,.5/-'+(,.-.,22/,1933/0¡¡ ¡ £¤¥¥©¨§¬§£¥¤¥¢ ¡¢¡ {vof_UXRUSU__b_eefdifcjfilgginhdikbhffciigllklnmrurusy}x{wu{y{y}|~}}w|~ |~~ |~ }}{|}}{}xy{x}z{||z~{}{|}z|}}|~ {~~~~z}~~~}|}~}|~||z}}}|zz{{}uy|yqzvtnronljjlkroxz ¡§¢¢¡¡¦ ¢ ¡¢°ÃËÏÒרØÛÚÚÝÝÝÜ×ÐÅ´}dfkjmlnttstxywwv{yy{wyxyzxx{w|}~{z spXI4*&('00./*,+.,.-0-/1496/58L ¢ ¦£¨©¨ª©ª¨¥©©¥¥ ¢ ¡¡¤¡¥ ¥rpfgZYWRV\]`h`aahjjfflghiiikjeihgejjjfdgkjmingmrprtsuvw{xx|zy{}{~}~}y~|z~}~}|} {{}~{ ~{|}{yzxyz{|}zv{~ }}|}{z|{zz|||{ ~~~zz~~}~}}{}}|}|y ~|}{}wqvv{rzwnlqqpoolllnrsv} £¡¡¢¡¢¡¡¡ ¡ ¡¨ºÇÌÐÔÖØÚÙÜÝÝÝÝÙÔË«nghjkoqqttrsuy|yy}|xx}{{xw{vx{w|| |{lYF20/'&+--+/35)**921524/52.22> £ ¥¢¢¢¥¦¦§¤¨¦§¦¥¥¤¦¥£ ¢£¤¢¡tqe_Y\ZWTZ\]cdd`hejkkhhqhcfilgfhffdgifdekenimjjmoqttvuwyyz{y~}yy{~}}~~ ||~}~ ~}}| ~|w{|{xy{{}w{~{{~}~}z}y~}}{ ~ }||~~~{xy{{~}~{}yyzsvxuvwturqlqllmlhkrtw{ ¤ ¡¡ ¡£ ³ÄÆÐÒÕØÙØÛÝÜÝÞÝØÒ˺fbirmqqwvqtutst}|u|s|xzzxwxx{}zp^J.+',-.10-1-(-/6)..043251.4898¡ ¡¥ ¡ ¡£¤¤¦¥¥§¨¨¬ª©©¨¦¦ ¡¤¢¢¥ }qqfa^[VVW^_`aagbceinlpnmogejllcedflhlggikjkjlmnossuuzw}||{z{zv|{}||{{~|~}||}~~ ~ ~ ~~~} ~|}zyt{{{{y~y|}~y~~~z~~{~}}xz~~||| }~~ ~~}~|{y}|~}{~}z{|~~}zyypvxtwvvvrpkpppljlqm||~ ¤¢¢ ¡¡ ¡¡§¸ÆËÎÓÖ×ÙÚÞÞÞÝÞÜ×ÐÆ®vkjkjinoqstuzuwy|}|uyyww{y}||y~|~~zl[H5(*'*11*-,1/,.5-0441204.0-4582 ¡ ¢ ¡¥¨¥ª¨©©§ª©¦¦¦¨¥£¢ £ ¤xmid\YVV\[cb_]aefefggnhlmmklkndceechgbdfggjijmquqpquutyzwxxy~xvw~{|}~}~{z}~y{{}~{}} } ~}}~}{|wx|z{{y}|xm|}~||w{|~~~}{||}{|z~~} }|}}~~~x~}|~~z~~~{{~}}}z}|||~y|w|xwxwsshtpmmolikijjsxz ¡¢¡ ¡¡¡ ¡µ½Ç¿ËÑÑÔØÙÛÚÞÞÝÚÒÌ» sotjvpqrvyuutvwuy{yzyw|}w||} }xnVC203()+84.)/.*+/103753323.23<88 ¡£ ¡¡¤¡ ¤¥¤§§ª©ªªª«ª¦©§¨¤ £ ¤¤}voe_X]Y]X_`\_ahcadgiihghkhjjndfgffccifiimjijopkooruuuvv{{x|~wx|~|}~ {|}}~~~ } ~~~|||{y~z|z{uux|{yz{~}|}~~}}|z|x|z}w}}|~~~}{}|~~~z~|}}~|}}|y~~~}yvzyyrumqnkmrlghknmrt{| ¢¡ ¢¡¢¢²ÁËÐÓÖØØÜÝßÞÞÞÝÙÔɸnkihmkourqtstxuyy||}|x}{|~||~xk^F83&%/1'(543363*.9:63511.10022:77 ¡¢ ¢¢¡ £¡¤¥£¨©¦¦¨¦§§§¥¥§¨¦ ¢ ££¡ {smf^`QU[\aZ[fbc`cigfjkihikhbggcgggce`ifffhfoonslstrpvru{szx}|{zv~z|}~|~}}}~}| ~~}}~ }}|}||zz|y~x{wu{zw|w|||{|{yy}xy~~z}~}z|~~ |~}|~|y~~|y{}}||{}|~~|{|||xuryrporjtnogloputw|| ¡¤¡ ¡«ºÉÍÒÕ×ÚÚÚÞßÝßÞÝÖÏÀ°riigijnisqotvuvwzyyzxyx{~| {qbK9.+(%*,*+-27<243085-03:105037;428 £¦¡£¢ §£¥¦¦©¦¨¨©¨§§¦¨¥¨§££¡ ¡¦¢¢}rmc_\VYYXX]abcebghohhghgiiiggjglhggffd_bjhgkknqotruvvuvzzyu{|w||y{|{~{{|~} {|}|y} ~||~ ~~|~ }{~~{y|{{z{yyz{xz{z|z{}zv{xx{zvwzw||}~{ ~~| ||~~{~{}~|~xz}{~}{}|xxvs{vqwrnnqrkxphnnosuxw} ¡µÁËÐÕÕÙÞÝßÝßÞßÞÜÑɽ¦igkbokpqrqsruv{x|}|wzw{y }uaF4-++(,+%+.0,6:05C4343173312/57410- ¡¢¥¡¢¢ §¢¤£¤¦¨§¦§¦¦§¦©©¤©§¨¡¢¡¡¡ ujl`XYUU]W]eacgdcbfckhdgfgfgedhhebhehkikhjfmlnosonsvwtuvzywxxuy{~y}xw}|~~|~|~|}|zy|z|~~}z~||~}}}}}y}~}}z}|{zzz~}x}|}|~~|zx{|wywwx}}zvy ~~{|}~}|~}~|{~{|z|~~}||||~zy}u}wuzvrvyqprvqomgjmnpvxy{ ¡ ¡¨¹ÇÌÔÕØÚÛÞÜÝÞÞßÞÔÍɲ{icjhdkqrtrqqvwyw||||y} }zj[J;)**())/-.5528:87843.16120-3/865/1+¢««¤¢¡¢¡¦¤¥ª¦©¨¦ª§©¨¥¦§§¤¢£¤ ¡ ¡ ¡~wke]YRSRR[XeY[dcigfigecfbgdejfiffch`eikhiiknklrroorwuqu{{sxyqyzz{wyz~z{|z{|}}y}xz|~}|~~}{{| ~~}|~|~|{}w{{|wv~xwz}|||~}~zvu{uzyzvxx|{z|~~}~~}~~~y~x|z|}|{|}~{~{{zx~zxuur|wzsqsooolmhnkwr| ¢¿ÈÑÔÖÛÛÜÜÞßßàÞÝÔÌ¿¨q_`ggokonvsuqt|}|x|z{ vi[B8+'),*,).,-.1/,1136446.:3:311.442+,+ £ ¡£¢¢¤¤¤£¦¥©©§¨¨¥ª¨§¢¥£¤¤£¡¢¢¢¢¡ ¢¡¢ ¢|upc\SPRWRW[Z_]cbicglhfhccfddjeegefggiggcdhfimlootsrqvvs{xxwvvuyx}}y{}{|}zz~|~~|}z|y|||~{}~}~|~~|~~ }|~}~}}}}~}|y{~{{xuz~}xvy{}~|yzvzvwxxuvv{yvz{}}|}}}}} ~~{}}}}}|}}~{{}}}~x|~|}}yvyyuvz}uxtsmoikhhkjpr|~~ ¢£¹ÅÍÒÔØÛÝÞÜÞÞßàÞÙÒ˺}fbacjhnnoorsqwvvuy{~y~ul\K7,+01,()**'.4042576=98<5744274.,1//33¤¤ ¢¢ ¤¡¤ §§§¨©¨¦¢¤¤¤¥¡£¢£¦¡£¡¡¢¢¢}vl`WZWQSSV\bbccedfeegmodeifdfdgcihgdiifadghgpqlqpuutuutx{uuzuszvv|||{|||||z}~y|~yyx|{ ~ }}zz}~~~|~}}{~~{yyzwx|yz|yvzyz{zutt|uxxytwzv{z~yy}}|}|z ~ ~~~}z}~}}~|}}{{{z~}~{}~~|zz~|zxwsvrsstssuonpilmmrvv{} ¢ ¯ÀÈÏÒ×ÚÜÝÞÝÞáàßÝ×ÐŰtaacpnolmpqrvxxpvx|} xl\J5+&,(-1+00,(.:@BJD>??@8=2340242.1,,..9¤¤¥¡£¡¢ ¢£¢¡¢¡¦¥£¥§ª¨¦¥¥¥¤¢ £¥¤§¥¡¤¡ ¡¡¡ ¡¡¢¥zthc_XSOPU[c[Zdajjgfhdgcdifjeffdfcdldchfkeiiimtossurrxxuyu{zyz|xxyyx~vxyz~{z}}~}~~|y}z~|zx| |}~|~}~}}~}~|~uyxy|{xurxwyyyy{yy{twxv{xxvzyw{}~}~~ ~z||z}|~}|~yy}}}z~|{~|}{|~{zwuyqsttvvrnuqqstlmnrqy|| ¦·ÄÌÔÖØÚÜÝÞÝàààÝÙÒÉÀ¢kcehhrgkpnnqusvxz{xyo[K81,%,1,)*-3-(,02374070334000.//4/,,.+/2¢¢ ¡£ £¤¡ ¦£¥§©ª©¨§¦¤¥£ £¢£ ¢¡ ¢¡¡¢¡¢¡~ysfd_XSPSXZYbVXkffpifldbbdefegecdjdfbibfefchfhknporruzxytwxyww}zwvvz{xz{wz~~|{|{z}y{|}|~z}}|{~| |}~| {~~z}~||z||~}zzzywttuxyttyvxyxxyvxszxxyx|~{ ~~~|~~|~~{~}|}}}}z~~~~z~~z}|w~|zxxxrtqtqusnxtnnllrmpr~z{ ®ÀËÐÕ×ÚÚÝÞÝßàáÞÜÕÍÆ®xdbimkmjoqtpqoptx|y|}{paP56.+,+-)-(*.4.3:55393;41.47600,.0--,,.),¡¡ ¢ ¥¤©©§«¨¤¢¡ ¢¥ ¡¤¥ ¡ ¢¡¡¡¡¢¢~|ohd]VYQQSY]Xbdigechedkfggehgiimabkcdaiehggijinpnprsqzxxyytwxwzz{~y|y}{yzy||}{}{|{}|{|~}{|}~}~~|}|}|}{{}z|x}yxxwswvzzvyxttuvxuqsuxww||}|~{z~~|w|}|}}|}}|}}||}{|{}zzyzxuqyurrrwsqxrnpmlnqsxw}|£µÄËÒ×ÙÛÜÜÞßÞßßàÚÔ˺¢ kcgglgimjqnqksrxz|vp^Q=..+,(()+.*+40.6569;<5335191230/42+/---(0£ ¢£¥¡£ ¢¡£¦§©¨ª§¬¥¡ ¡ ¢¥ ¡ ¡¢ylb]VUOYWV`_\_dcdgidfjgjljifemkcekjehbbkiehlmlolqrqr|{w{xxttuvy|{x~{|z{x}x|}v{z{~z|y}|~~~z|}~~~~}}}|}}|}z~{~~{uy}||zy{rztuqwxqwztvtzvyswt|zzy{|}z|~}|{{ }~~|{{}z~{|}~}uwwx~zwuu{urtqsqpnomlmjlmqrwy ¯½ÈÏÔØÚÝÛÞÞÜßàÞÞ×ÎÆ³xdafilmkioltquvyy}wq^H?,0,'*+),./0//865;9D>=:914532823/-+-,/3-(,¢¢¡¡¤¤¡ ¢¤§§©©®¥£ ¤ ¡¢£ ¢ |uia_]SOWUZ][addhaclibegjdeieejohdffecifeefjljkmnrrwusytxzzxyy}|~y}{}{{z|}||~{{||~}~}}~}}}|~z~~ ~~}} ~~}{~z~~{|x{|ytx|~y|y}{uuxststwwwxv}~xvwwzz}{}||y~{}}~{~~}|{~}|{zy{{||tuypposttuprmjlkoqprrz}¶ÅÌÑÔÙÙÛÞßÝÞßàßÚÒÍÁ§jbifkjimorrptwyxzkaO91++().0-)10122516;94:84=7:531341,*+...0/*0¡¡¡¡ ¡¢¢§«©©£¡¡ ¢¥¤ ¡¡¢¡¡¦ }qia`XRNRS`\]a`bbecdigjeigbjafbgjieekdfgjghlrmknouwvtvxwysvzvz|zy{yw{{}{|}~~x{{}zz~~~}{}{ ~ |~||||{~}y~~{zzy|~|{~z}z«°¨³¢£vy{vsvyuz|{|wvzyzzyx|z}xzy~}z~|~|{}}}}y|||yyuwwqsvnuvqonnfkmjosptz~ ©ºÈÐÐÖÙÜÝÝßÞßßßÝ×ÐȲvdcjehlkpxpory}~wf^P:/+00/+-++)/1,10451999>;:4332/76;1/+,,/3/-0,¤¤¡¤¢ ¢££¤§¦¦§¤ ¤¤¡¤¦£¤ £¢¡¡¤{tif\YVNUR]ZYZ_^dcidgfmihlglhjdkikeffegffkgmtmomuttrsw|xvzy{yz~xz|zyy}y{y}~~z|~y~{}}}~~z~x~~~~ {yz~|{{~~±¸±º©¢²±¦¦®·¬¤§|{rwvvvswywv{zxx|||}~}||}y}} }}y~{}|}}{}}{{}{|{wvtwsqtoouwqnnqmjjopuswx²ÀÌÎÔÖÜÜÝÞßààßßÛÕÎÀ«lafuiimuuvty|}|shWR?.,+++310+)*0-.0345;:7:7;4777=5*:2/5+--.-3,,/££¥¤£¡¤¤¢«ª¨ª¡ ¤¢¢¥¡¡£¤¨¤¢£|kfaZYQUS]Zcbadagghglhelmqkedgedeekeficgjelqjonoqqrvwyywxz|v{{{yz|z~~}}|~}|}~~{~~z~~~||~~~|}z} }}{}||} ~~~}y|´³¡·¯¤§´±®¾½°»À¾®§§§yxtqsuqvuptzx{z|zz|{}|{|{y|}}~|}{|{ y~}}|{z{{wwxxvvsvuptuqponkjpgkpquvx¨¹ÆÌÒÕØÛÜÞàÝßßßÝÚÑ̽ }nm}oonpuor{u}wiXB/-.,-*,100,*.2042285779@>;:87232,/++0+-/-*.00-££ ¡ ¤¢¢£ª§ªª¬¨¤¢¢¥¢ ££¡ ¡¤£¤¢¡}lh\^XSRU\Z^_[]_gcegljhjijmddhfldgeeieghiklpoqrnoqlovvxy|ywy||{{|z{}|||{}y}~}}~{}}~~}|~~~}}}{ §©«¸® ²²¨¢²À·§±ÁÀ³¯»Ä¶¤¢ }zyquuussuy{y{z~{|yy~}~}z~}|||~}y{yvxxywuqopotnrrpllkmlprwx{|¯¿ËÎÑ×ÙÜÝÞÞÝàÞßÜ×Ðůshlifntrr{|zrmaM;,'.(%))+,*)/0222:<33;66=9:873341-*),--0/(.,/05£££ £ ¢ ¤¨©ª©©£ ¡¢¢¢¡ ¢§¢£¢ xod_\[SRWWZ\`_hbbdddeefhfhjdjegjgifeaeeehkjoosqrpppqxvwwyxuvzx|{}|}|z}{~z~}}~~|~~} ~~y|}~{}~y{}z}}£³¡§ª²¬¹´¢®¸¶°¨ºÆ¸¬²¼Âº±¯¸¿Â»®zvwswyssvsxzy|y}}|{~~{}z{~~|}~~|{~}|~|uxxyxwuunrprorpmlkinlppzv| £·ÄËÒÖÙÙÚÜÞßààáÞÚÖ˼©kngkowtv||ui\L2+%)+-1*,*0,,+015278536H:?897?>84+-&+,))05/251/,¡¡¢¡ ¢¦¤©«®¦¨§¡¡£¤§£§ £ ¡ £¢¤¡¡ylbX^QSXY\[^Zccbcbkfjieijhcfffcghjffdffhgnlpnqorsmttxy|y{{{zzy|~}z{|x|z}~z~z|}|~ }~{}~| }||~{y{} ¤´°¦²¡¦¯³´¯µº«©¯¹º²®´¸¹±¨²¹º¿ÀÁÁ½»«uuprzoszyvy{{{|zz~ ~}}{|{}|{~{}~~}}}~yyuuyuyx|wmpmronookjnlnpsv}}©¼ÇÍÒÖØÛÛÝßßàâáÞÚÒɶnklux}zsg]G90)%))**,,),--).25919677685;65368,0.(),++,*/+0+/2¡¡¡¡¢ £¦ª«©«¥ ¤¥¥¤ ¥¡¤ ¡£¢£¥£¡tid\WVRSSYY[^aX^bbdglfgfieggbfehhjhongffllomorropuvwuzzxux{wuxx|}z}~|{}||{}~z~}}{~}||}~ {~}}|~}~ ©°®¯¦¡§°©ª¹Á¹«¸µ®«©´º°§¥±²³·»¾¿»¸½¼½½»±rrmorxxwz{xxyy~|| ~}~{~~{|}z~|{{|wvtytyxvrqtvssnqoonmjjgnhoptt{ ´ÀÊÑÔ×ÚÚÜààáãâáÝ×Ï¿«wqoxrwzze]J3-+*()+)*/--,*-/-.7307223643266822//&++-*/0,+-0()/ ¢¢¡ ¨§«¨ª©¥¢ ¤£¥¥¡¡¢ £¤§¡¢¤¢~wmeaTVRRPXY_\ZXffeefihgiefieblifddfhlfgbmglljmtqsttwuxyw}|~twzxyz|}}{z}zz~{{~}}~~|| ~~~~}~|~~~}|~¡ª´¬¡¦«©¤¶¸¸¹¹¹®©¸º¶ ¨¯µÀµ¯®º¼½¼Áľ»¶®|vuswvrusw{vy}||~{}{}{|}~~z|||}~|{{txv{xwux{twqospoplmhlgkmmpwv~¨ºÄÍÑÖØÚÛÜßàâãããÝÕξ¦tptvwwsdL91*)'(),-+(+../*.+22:641384532/4100/2+,///2,-/*(1,,¢¢¡¡ £¤§§¨ª§§¥¤¢ £¢££¤¦£££¡¥¦¦¢£}vhf_USPOZVW^\]^fbfcglgkfejkaklffiiedjijkpnkjlksqswrvx{xz}y{xwyx}}{{{}~}|z|~|}~|{~~z}~{}~z}~¢¥¡¯°¡¨¦¯´±¬¸²µ°¨³¸¶¬ ©¬«ª·µ®¨¶»¾¹·¿ÄÂÁ¾¿½¶¯£jmsruvw{t{{||{}}~|~{yx|w{{|y{}vzwwwywwvoqrtqorrpqsljjhkmrnu| «¾ÈÏÔרÜÞààààãâàÛÔɶ}vyyvsgO9.-,($%(+/+,+..1+-2593;617-053323143,0+3321143*,),,) ¡¢¤¥¨¦©ª©¦ª ¡¤¢¤¤£¥£¤¢££¦¡¦ zvla]UQSXXVZb`\ag`fcefjhhb^legjhdgchljeciglllrptyvurtyzzxwy{z{xx}}~y~~}|}~y}~}~zz}{~zz~}{|~|y{~~¡ ©«¢¡¡ ¬¬§¨²º¬°²¹»«±«§¨µ®¤¬¸»»µµ»Àþ´·ÀÆÀÃÁÀ´urptssuu{vx|z|z}}}}|||~~zv}~{||{v{{zzvyxusvmpsuoomoqsrmijejolry{} ´ÅÌÐÖÙÜÞßàßàãäãÞÙÑȱwy}naO?0'&,0*-),.400/450779757708-6703,3)(-3525.41./0/11*/2¢£ ¢§¦§¦ª¦ª¦¦¢¡¢¡¥¤¤¤¡¢££¢¢¦§¢¤£¢ wpbZUINRVWYXW\]__]beeehe_bggebghfggoggfiefoonpwxuttxw{vyuyv|{~zz~}~{~}|}~~y}~~ z~}~}{~}}{xz}}~}| ¢ ª¢¥®©¨³¬£¨»¿µ²®²°§²·°¥§°»À°¥®·¾¸³¸¹½ÂÂÄ¿¿ÀÆÅ¼¯}poqu{stvtz|~}}z{}~|}~{y~xu}}y{z|zvu|uvy|orrtrtoqqkpkklik|ktv{~«¾ÉÏÓ×ÚÝÝàßáââãâÝ×п¤ypbY<2.5%+)'(66+00524206467589133546-.**-/359:/10+//)*++.2¡¡£ ¢¦¨¬«ªª¦¤¡} ¡£¥¤¥£¥¡¡¤§¨¦¥¥¥¡¢£xl_[TOONQWTXX]ab^_dhdefkbdddfkihhfdjghiiifonknq{sssxxxwzwwx{|vvx}~}|y{{~y }~~|~| {x~|z|~~ }|z¡¡«¤ ¨µ¶µ§¹·¨¶º·«¦§º»®¯´º»°ªµ»ÃÃÁ·¾¾ÀÉÉÊÄ¿¸¨yposswysuz|~}}{~y{~zy}~}}yz|yw|{{vzvwxuwuktsrsnqtolmpkidp{lrz|²ÂËÓÖÜÜÞßßááääâãÝ×̶xgSA,').(,**$14(*./3553534364043633/.**077421/.,*(6'*/-60, ¥£§¥¬«ª¥¤ |{z~¡¥§£¤¥¥¥¤¡¥§¦¨¤¨¤¢}wk^YVMOMRUWR][\cc`]_^_bdd_ehddcdebeeggongfhkmkrtspqwttvxxzxw{y}~yyz~zy|z~|{|~|{z{z{|||{{|}{z|{y}|xy~¦©¦¢©¬¢§±µ²§¶¯¥»º±¥£·À½±¬µ»¼¼º»¹»ÃÄÇÈÄÁ¿ÄÅ´qpomvps}||z{|~{~y{x}|y|w~|zw}zwyrqqouorrptqooouimrmmjjmopyx~ ¤·ÆÐÒÚÝßßÞàáãääãáÚÓǦxX?2,)-&',&+&-)/04889:7;14=58250355/21,2/67;9/..8-'*,--2.- ¢¢£¥£¨§§©¢¢ }|xvwx}¡£¤¨¥£§¦¢¥£¤§ ¥¡ ~rhbXTMLNVUTWZ`^_c\badaddbihd_gbifba^ekmlmjiionqprvqstzuvw{z{yxx|||}ytz|yxw{}|z}{||}~|}}wxy|{wwzvsx{ ¢££ ª§§¥¤ §´°¯¬¬¥«±¹º©¡´´½¹°¬»Ãù²¹¾ÀÁÄ¿ÿÁÄÈÆÃý¨vqnlsu|{yzy}|}zuxvx{~{zzx~{{yzxwsvutrrqnpolnsmllmjighkhnosps{~¬ÀÍÒÕÛÜÝßàáâãâäáÞÙ͸L/,-)*)&.3&+)3-)+647911878005=2;=4229--/6:23/-01*(+/--1,2¢¢£¡£§«¨¯¯§ª¥ |yswusx¢¦¥¥¤¤§£¤¤¡ ¤¦¥¤£ qjbYTMNLMNWefZceb_a]_cdebbgccecbdbcceiifjiiklmspnuqyvuswuuxzvxxxw{zz{z{wwwxw||~|}}}~|~||z~{x~~¥}~tsxz}| ©¢§ ¢°°¬¬¥©¯¬©£«¸¶¬ª¬¯¼²«¯¹Âžµ±¾Ãżºº¿ÅÇÃÇþ¾ÆÉŰ~nmmqwvxuvvwywx}zxyxxwy}vxzz~|{{vwsrrqvuwsrunrpnmoniiggkhmpkstt|¡·ÊÍÒ×ÜÜÞáããâãääâß×»C*+'*+&(,1*/4+1)/.46566016533552,,.4..32.1/-.1-9/93,+'/04 ¤¡ª©ª¬«¬¨§¢¡wtonhqw¥¡©¨¨¢¦¨¤¥ ¤¥¢ ¥¥¡vj_XSONRVU_b[\[`^dhibbaeeb_aegaadedbhlfknlijlmpppqkwr}pttxqww{wyw{uwywxy~{yzx}z~{{|~~}|}}}{||~{y|®´£|z}}wy}x ¦¯¤ª©¨©¬«¬¸²¯®µ·°¨«ººÀ¾´´¹À½Â¾º»¿ÃÇÉþ½Á¿ÄÈÉɹ¤pomxywpryvwwu}yvx}{szy~vzxy|yzw{yysvpsrprpuqqmoiilikcfbhjjnsuxªÂÇÏÔÙÛÝßàäåäæåáàÖ´p." )%($'),/.031)-4944230222433./-.-0010L7315/.+667/-.9328¢¢¥¬§©ª««©§¡zynjkelt~ ©©¥¦£¦¥¤¢£§¢¥¥¥¢ ¡{oa]UYSIJLTZQVS\][c`fni`]dccbag_eajfhfgcjhgkonopoqq}svrxzvuy||wwyzyzzy}z{~yzz}~|}|~{u{y{w¦« }|zzy~v{|v|y ~¤ ¬ª¦ ¤³±¤ ¡§°¨«©¹»¶°§¥·À¾³²¶¼Á·³´ÀÁ½Á¾¿¿ÄÈÇÆÁÄÅÉÅ·jssslttpptqwzx|xyvwzyvxxsvyyzzuvvvrutsursooqolpnlkhgfgnjpout} ±ÂÉÏÕØÜÝßâääææåß׸p)$"-'(*---)/3'-25478;55473<<:1+.,-*+14235425+'*137*-,/721¡¡¢§ª©«®«©¤ ~umebdgs| ¡¤¦¦«¤¨¡«§¦£¢¥¥¥£¥xodWWRJLNRR[YWU^X[_`abac^[cad`ec_djgbbgeihiqkslmotussuzqq|uvyxzvysxyyyzz|z}{}}{{|{}{~}z~{}}{y{~~z |v|yytxxxxx {x | ££ª¢£§ ¢°¯¥«®µ¾ª£³·¼¾µ±¯½ÀÀ·¨°¼ÅÀÀº²»ÁÅÇÂÂÂÂÂÃÉÎÉÆÂ·¥xrruopoqxzuxvxuvv{{xuzwxtxswwwtwturrspopqhkllnmeiefbhiopqwy©ºÆÏÖÙÜßáãäååæâØÃ 7"&*')*(.().00224388452554564-.,-).*118;/40,./**--/,*37982¤¤¥¦¥«¬°¦ª¤¤zrgf[[gq{©©¦¥¦¤¤¥¢¨£¦¨¤¢§£slb[SMJRMSTVSZW]X\aa]_``a^ce`c`f`ffbibfggicginjqpnsqyputsowxyuz{ry|~wxx|xxyz{|}||~{||zx|yz}±y{{|}|{w~}{|}}z}|~{ ¢¤ ¤¥¢£ ¯¥¬¥§±·¶´´°±¼ÁÀ´¶½¼¿·®¸¿Âø°º½ÀÄÅÀ»½ÃÇÉÉÊÆÂ½ÄÅǸ~liloppqswvustuxy{wzw|www|xzvyuuwtsqpmtqoohmikgili_bmmiouw°¾ËÕÙÛÞâãææäâÚ̦Z$'''(+++*,2)'/./5344782777450,/+,/-+137631/++,+0.-1/346;:3¦¦¨©®±¬¨©¡ztihZ\[cpx¢¦©¤¦§¦¢¥¤££©£ª¥¢§¡|vja]PQHKMKPPUUZ_\b^`^c_Z`_gdecbbddbeffkifhikjmmhlmnvxrvwppyryvzw{sy|zyw{}zxv}zz{{{}zy{}{{|}y||¯Åop}|{z{{|zvv|yzwy|~y}} § ¤¬®³¶¯¥¤¬¶·½¾¼»¹¾¿µ°°·¼¿Àº·¿¼ÀÇÀ¹µ½¿ÂÈÇÅÀþÃÂÃËÈö oiniloonpsttvzwrxwsyxvuuvvtuqsuusqpksnmkloijmmghcejloqsx³ÈÐÖÚàãäååáÛÑ·y3!&)'"$&*+*31+34/485512.;=4482(----+.246270.,*)-*/(13787310¤¤©®®¬¨§xle\RQWcqy ¦¤¨£¨¤¤¨¦¤££¤¤¦¢£¢ul_YOJJIOTWOSVUXY]___]_^_aea^ibcff_ggfcihjiigomijspmtsu}rrywwrusvus{}{{{z}{x{v}}|~~}y~zx|zzz°hem~{{ztyxvtvzzw||vyzyzx ~uy¢¥ §§¬µ²¡ ¬¯°·µ¸·º½¼º±ª¹½¾»´¹¼Á¿»¶®´ÂÃÃÂÁÀÀ¿ÃÃÉÆÆÃÁÁÁ¿°~milkmnkruturuvvrwsvuwuvtvsxwqsspsptqqpphkjleihhdhlmnz¤¸ÏØÛßãääàÚÑ»D'&"*)*%)(*.+1.127;<56533;492,,'++((01-731.7..+-/)./00630,'$§§ª°®ªª¥ ¡ ui_UQOXhlx¡¨¥ª¦¥§¥£¦§¦¡£¢¢¥¤ |tq_UNMIGLQPUVZXZ_]\^\b[ba`a__bcbfkadhbgnjgfdmfiiemonruqurrwzxsqquwuzyzzy|z}y}xy||}|yyzzv}z½¨lZWjmwx}vyzoz|ysy|yxzu{zq~}~| ¤´º°¥¤¢¬¸³º»¾¼°°º½½¿»·±·Ã¿Á½±µ¾ÁÆÄ¾½ÂÄÇÄÆÇÇÂÂÁÀÀÅÄÁº£}njgmgmjqos}qpspwssst{wvtrtwroroosllloknkjkibfdbejloq}ªÊÕØÞáãÞÙÓ¾V0#+#%+++)*)*.5,384;827<784;864-,.*/-21551-).+...0..866;6,&" ªª²¬¯±««ª }oe]XGNZfrz ¦££¨§§£¨¨¥§¤¥¢ ¥£wndZQRIFNJOPTW[\`[]\_b^^_bbafhbb`bc`ghbdhbemgijfjksqqpruoqpsrusqvvw|}zx{~|zx}{yz|{}z}x{{tsy}¡Ï¨faZns}yxzxww~zusyww|wus}~wy{ ¤¤±¸¬«²¶µª´¹¸º·¯©·¼¿Á·¨¶¿Ã½³¶¹¿ÂÀ¾Á½¼ÃÈÈÇ¿ÂÂÂÃÄÅý¾ÃÃÀ©vedaihjnlqoqqlspqrntvstusutsooookllnklllikgidehjrpyz{ºÌÔÛßÛ×Ó¿W3)(*$,**./-(-*410876:173::63441(&*,2224193/))./*//875:75+&#§§§®«¦ª¤vlZPJKOUdnw¥£¢¦«¥¨¥¥¡¥£¥¥¤¥ ¡ ~umcVUPHDKVQSTZ_^\]d_`d^f`b`bddeg_befhfbcddgeiljmoopqotrrqskrxsruwtsx}zvxt|wx|zz{w|x||}||}y|y}{±i_enstttv|}tw{vz|yxtxsu{| y{}~{¡«©¥£¦²·±¬¤§¶·¸±«®º¹¼»±¶¹·¼ÄÀ¶³¹Â½¶º¿ÃÄÅÅÿÂÇÇÇżÀ¾ÃÇÈÈÄ»¡ldfgipijgjnmsossmstssqqrputpokompnjgljjmldhfifksrv ®ÅÐÙÚ×Ͼb0,%&*,-/(+,*.++051041.5:67547-+,.-,-02503,-+-()0*,395;?:<)#¬¬¯®«¨¡~zk^RNLJQYbqw¡¤£¦¥ª¨¦££¥¥¥¢¢¥¤¢ }sj^SVFIFPMTXX[T\ZZb]_bdadac`cacbcecifebhddnjkjnpmqlptqonstppuutxwxtuvwyxwvx~{~zy|~}{}~{|y{rmpsoswxvz~{tvtw{~x|p{y~ }~ ©£«²º¬¤³·´±¦ª·´¸¹³²¶µ¸¾¾³´´¶¼ÅŽº¹¼¿Á¾¾Ã¼¿ÃÅÉÉÊÃÁ¼ÁÇÊÉÅÈɯɽªpffnljhjiikhioqrrptsorrpqrlpkpnpkikngijghafflopsu¥ÀËÕÒ˸Z6'++**,,,,)*(.+2,;3-162335778//2,032176496/++20,0./4:<?48+!ªª«¬¬©¥£uueUPLHJQXgry ¥¤¨¦¨§©¤££¥ª¤§¥§£¢}tlcPTPEDKNQT^T[aW\cahkfhkkgahdgbhb`cfcfhmjflljlgkqqusswnorrtuuuuuvtzuyuwuxw}yz~|w~w||}zrmllqtmlsvv{|wsyrzxw{uuwx~ {|~u¡¢¬©©©°»·¦¢¨¹¼·®¦¡¸¾¾º³¬®ºÀÀý¼¹¿ÆÅ½º»ÄÆÇÉÉÄÄÁÁÅÄÄÆÈÆÄÈÈÌËɬo`ed`bglggljnjioqqprnrtnnmqlplriikjknjegb_gkmqpz}~ ¸ÈÌÁS1-'/.*,//),.,,/626003400547342,+1,:1858@84642+/.1105=>?E<0&"#¯¯ª¨«§¦¤¡ uj_QHJJQW^gqv£§¦¨ª¥§¢££¤§¢¤¤£¢ ~sn]PPFHILPWVXWT[\]_dhibadal_`fhacdchcee`iafjkklolmopwvvjmmoqvtqvuxvxvwxxuyx|www{|w{z{yy}{|{plmtrrnrzvwwupo{{{xrz|}}}yw~{yz¢¤®¨©µ²©¡ª±¼»®¥®°¸Á¹¯§¯µ»ÀÆÄ¸´ÀÅÅü¹¹ÃÄÅÈÂÃÀ¾ÃÄÉÈÇÀÁ¾ÀÆÌÌÊÈÇÌųka_bdcegfekjjoqppvuopqprnsjoimhikhnmkkmi`cjgnqy{ ²½·¢S5-++-2,)*)-)-2,,1/'41001<;2142/-,02?4763-4.12)*231.14EBL?<.%"6¬¬¬«ª¨£¡ ~re[PKLGNW`fox¢ ¥¤¦ª«§¥¥¥¦§¢¢£¡¡£ysi_QKOHGMPSUS_ZX]^]eecc_cnqgbeb]a`dgbde]bahehhooomnpqrpqzusrwuorzqszxtypuywyzvy}zz}~|v|{sw{~|mrqnpuwsyssqmklzxwvtz}{{|yx| }x}yw £££³°¡««²³®©±´¼¼¾¸®¯³¿Âÿ¹¹½¿ÄÈÀ¹¼¿ÄÇÃÁÃÁÁÅÅÆÆÆÁ¼¼ÃÅÈÈÌËÉÇÆÌËɵrbW]]bb\cegekmhprpmpqqjnlmijilmoqoilggecdjinpv tI11(),13-)(+,.2240/2502/:761<921)()/2=>725.2*+0+*95/8>DJHC52+!4a««ª¨§¢}xl_RSKJGQWcelx¢¨©ªª©¨©¥¨¦£¢¡£¡¡zyl]TLLHEGNPU\VX]d`df^fdf\_faaeda^af`bee`ehgfmkljmklumqnqwtuptuuruyvw}vxwyzxyxzxz}}yz~xy|uz¢vinvoryvuqnslnntrqvruy}|{|{u|xs} y|£¨«£ ª´´¦¡³½¼¸·¯²¹¼ÀÀ»À¼»ÁÅž¸¹ÀÅÇÅÀºÀÅÄÆÇÆÄ½»ÃÅÇÇÉÈÂÂÇËÊËÌÊËô p\_\_^[]ebdfikjsolhnoonkgieknlkonhmfhfceginux| ~£mO43,./2'*,.'/3/1*13554471450,01-,+(,/6;:611-<2,,005578@E@E;*%$$3^¯¯ª¬§¢¡ypcXPMLMNOXcgty~ ¢¤¦«§¦¦¨¦£¥¢¤£¦¤¡}ym[UGPIGMRRWXVY]`[\]ca\bdefdcjee\eefabbaekhkkiiolomtqrptovtotqsrtwuw}xxxwx|zyw{}{y{~||xxyy´µ}mooqtupqklqiolpppvtyvzo~ yty~zx ~¤¥ ©«£¨¶¹·¬¯µ´¹»¼¸³³¿ÁÂÿ¾³½ÂÄÅ»¾ÃÉÇÅÄÄÀÀÁÁÄÅÇÆÆÃÃÇÈÅÉÄÃÇÅÈËÈrmljcYXa^e`fgepkkkopnonjiikkjdjqfhgfg`fcjnmr ~~}z|qQ:0-/0-+&&/).&()/25;<D95123.11--*&)(/6459799<0.5403564=DCC7/&! &2Uyªªª§¡¤{sl\UMNOJLVTZgvw¤ ¨¨¦ª¤§§§«¤¡¦¤§¥¡¡zqgbSMJGJLQSTXeX_`_cdeecahhedcgfgaegd`daefdcfkijnlngsnprsrrpnrorxtuzyxvtxuxtzz~zw|~}|z|z{}Æ©uqqortrrtnqjhpsquxwvuv{x{n|~}~xzw~ ¦®«»·²²¨¶¹»¾²¬»¾¿ÀÀ¿¼¹ÀÂÄź½½ÀÈÈÊǾºÄÅÈÆÃ½Á¾¾ÅÈÅÆ¿º·´»ÁÉËÐÑ»¬ª¢iXY]]_hgnmpmmrkigimljhjfjhkhed`cc`glotu|¡~xvu{|~{W@.-,*(&/)+3)%))*/136436446/3-+,.-(*.0353866./-,2/163?=CBF;2/%"!0Rp¬¬¦¥ ¤~vm`VQMRXNORT^ks| ¤¦¥§ª¤¥©¥¦©£¡ ¨ ~rf]THMGINSPSUUS`d]eef^]`_f`caeadbdbddfgceidogckhpkjkprlrvuwnuuvux}xzvxoxuvq|wx{v{{wz{{zuªnqtuvniinghmmqnswuxxqvzxvt~}{~}}{z |¡¨ª±´«¨¬³¸¶»¹¶µµ»¾À½²´¿¿ÂÄĽ¸¼¼ÁÈÅÅ¿ÃÀÃÅÅÆÃº»¿ÂÅÆ¾¶±´¹¸ÀÅÌÑÔ×ÚÙÖÕÐÌÀp^SX_`bfljjkncpkkgjefjfgllmggdfbdpmots~ wzwrvuwz jG-,--*+-'5/)+'(.156372518<5630,-,*0+6658C521--+110165=CGA8/(&$"'0Jo §§§¥¤ |wd]ORnPONIPZafqz¡¤£¦¥¦¦©©©¥¥£¦¡¡ ¤¡ |qg_VNIMJKSPTVVX]_^\kdabe^b_b`deafedfbceakdfidkpimookrtorxvvpuqorrzytuzu{z{u{|{xvvz{{z}z©sptqqrjmmpjglqsox|uuxpzw{qz|v}y|y { t¡ ¦¶´¨§¬´¹¶·²±´»Áúµ²µ»¿ÀÀ¼¶µ¿ÃÆÀ¼ÁÂ¿ÇÆÆÄ½½¾ÄÃÂÀµµ¯»ÆÊÏÒÓÖ×ÝÚßâãäââÞÊ¢jTWZZdelmljmjnehidbjglkggdeegd`bhkmtwywtqnruru}pU5,.(*//(''+(*(,238/3677861010**-.004;29:213.500310467AMM?7*%&!#,Fb}¨¤¤¢¤zl]QNPOTUTPPXZfwx¢£¨©¨¬©¨¥«¦¦¥¤¡¤¡yso`YPFJNOKU^XUX[_`hqccebbh`i`aebhdbaheeeelfidiponormvvqtqqrpnquryrwxywuyswzzz{zzw{uy}y{{|¤~ppznlklnjhollouutxtrssvsj~zs}vy|vy~} w ¢¨¬¨©µ¸½½¯¯»¹¼Ã²¨µ½¿Ã¼´´½À»ÁÈÆ¶´ÁÅÆÈŽº¾ÁÂļ·´¸¹ÀÅÑÑÒÓÕ××ÙÚÚÛàããåãäÜÊ[YXXY\eigejllhffcfeghhiidhei``jjhnlw yuwijlprnt{~vX<21(*/03,&),8''+-210534352-1++/+-+2/:957865..,/6104;89FNI>7&$),1;[v£¨§§¡yqhYQPXUVYSQIWagn{¡¤©¥¨¦§¨««©¥¥£¤ ¢ztg`WOILIQSSWYWX^debia_f_cceib]fecbcggddffffjkgiqnroyqtz~poruqtoxqro||ww|wu}|yxz|wx{{~}{vuqqpmjmcgitoiq|w{yvuswpjzz}{ywyz wv {~ £ª¡¥®¶´²³¼ÁÁÁºµ¶´¾ÀÀ»³²¹ÀÂÆÆÂ´·ÄÌÅĽ¹»Àż½²«µ½ÈÇÏÐÔÖ×ÔÕרÙרØÛÞââäåãÚ»yTRSRY`aeiihddbfcecdchghegd`^cfhkmkv|{vsneafhfhnx{|Z@8/.-***,-$&.2,.043144332313+)(-**+6/8>90-27/11-0.069AGOUL;3($$1>Vk¢ª¢¢£~tm`^QMSRTUUXPW_ks~ ¤£¤¨¥¥ª§¦§¨¨¤¤¥£¡£}zrk]WVMJBKMTRSX\^]__\a`[babghccd^acefiefbffhhkklgpnmpkpruvowxovu|zwy{xwv}x|wy{uvvwz}||ztnjnimnijonlnrus}qprwro|{~}|w~zv |y~~x~{w ¨¤¬¯¶´¯ª±¾¿ÃÁ·°»»¿½µ¯³À¾Á¿¾À»¾ÂÃÃÀ¸¶¾¾»·µ°·ÀÉÏÓÒÒÓÑÖÚ×ÓÔÒÖ×ÖÖØÛßãáææâÕ¡aRLQV\adchgfbehhecefgbdhdf_ediglrsrxplg]aZcdgqymG-*.1++-0)*)/55-1,19<-02<042537--)*/34879//,2/..,0025=DJYQH<3*,0CYp ¦©¤ wpkYSOQSRSPSUTXcir~£¢¥¥¨§§¦¥§«§¤§£¥£}xshZWOJKDKPTZW\[^X]d`b`ge^\]bjdhafgg`jfcahghijlnqolmpnssrqoosqzxyr||y{{wywzzwzwv{w|~}~tujmpgmmrmnonxruv{pspnwywz{w{rv~|s ~vz{ }{¡~¥£¢©®©ª«´ºÂ½±«¶·ºÁŶ«³¸»ÄÅ¿¹´·ÂÄÅÆ¾··º¼»´°·ÁÃÉÒÒÖÓØÓÒÑÒ××ÖÒÒÔÖÖÙ××ÜàãâãáÜ»YJRZ[\cacfgdkedbhhefddaeg^][`emmqsyqe`][[TYanmwoO5,*14',9&,,$9*0.319752154765...-'*/6A5<;70-(120**2/7;DMPQNF<.'0<Xn ¥ª££{qg^OPSRQRTSWRWV]in}¡¤©«§¦§¥«ª§¤¨¦£¢¢zsgZWQMMKLPVWX[]^_a]\cfiq^bagg^g_bbdccgcggjhilginlnononptuqvtqvpuuxwwvvuyy{{|swqy}|y|zz zunksninhtnrptwrx|uuyqny|||uu}z}zxywv~r}}v|xv}|y «¦´½Ä¹ª¨³»¿Á»µ©¹À½´®µ½ÂÂÄ¿¸±²·³²¯·»ÆÏÏÒÕÕÖÑÐÔÑÒÐÐÕØÓÒÑÓÖ××Ö×ÛáàâãÝÍ«tPKUXX^ccgbdiddkdcacggbfebaa_ihlpp{vjYXQUQVX`kpx rX7)*)/)&((.),.*2-.4/4392/616312*.1*,04:78;2-.6-5.-/56;A<MFMK@9/0;Sk~¡ §¢¢wqa^TOSOT\VQLTUU^irx ¢¡¥¨§§¤©¦ª¨¤£¨¥ ¡|vmj]QPHKNHQUWYX_```__`bif`gdc`^hgc_e^edhggfifikornwitrsqoprsprqxuuzw}xwx|zzy|xyz}{|w~ ~ytokijkqrloontwxs}u}vsl~}y{~nsxw{st|~xln{z }{~¡¡¥¦£¬³µ¹±·º»À³³¸ºÁÅÁ¶®´ºÂÃĽ³³²ª¥¼ÃÈÊÏÔÕÕÖÔÓÐÌÑÒÒÒÏÑÕÔÒÏÐÑÖ×Õ×ÚÞââáàÜͤfMOSVXZcd`cdceeeeabcabd`c]Y\ejqps~ul^UNPRNRVfpth@3-1')'&#%(+()+/1/68446?4230-/))+,'/296;10+'-2*0,0/4:@AEJ@LF://CQl} {sf_WNLVQWTTUTXX[bnr|~¥¦§¨¨§¨ª§¦§¨¦£¢ ~ulqhSSIHIIMUWZZZc_^_ccabg\echc`ciiidc_cgbcgedbfonoomqwtpprp|uqsw{qyxy{zv|syz{}yx{yyz|qomokemmoolpvu|ztrvsqt{{wysqwyt{zsn{|vt|zv| z {{¡¦¬¬´§©°¼¼Á¹¼¶°½½Åǵ³¾ÁÀ¾¸·°«¬ª©¯´ÂÈÐÑÔÒÎÕÔÕÓÒÑÌÎÒÓÓÏÏÑÓÓÏÊÏÏÒÖרÙàààÞãßÊXRWPVU\]`b]deb`bd^da`adaa[`enmnw} }tjYUS?DCGS[ju|kQ20)-##$"')/6+,04613646,180/011-+-4+0052710.-/2-04236=DHHKA@B<>ERfw}vh^UQORWXVUZSXVU\_gqw}¢£§©§§ª¦ª§§§¤¦¤£¡}uqie]WRKOPRUTVX]]^c_]bdbe`f]bd]fjnhhidhff`imegklnpnqpsvtssntvtuzruv~rwyz}wyyx|yz|~{w}wnekmnhqqhlmmkt|rxxvm{}{}tw{{|x|qxsl~~ {}{~ ¤¨¦§®©¤ª´¾Àº±ª¸»¾¾Ãĺ½¼¾¿»¶®©¬ª©³½ÄÇÏÒÒÔÓÕÏÑÑÐÑÍÐÑÐÍÒÑÎÐÏÑÓÕÎÌÎÏÒØÙÖÜààÞàáØºvUOQVVW\_[\]faadaefec`_bcb`ahjqq ~xi_RF9@==MZdnv tT6*)#)),')((+*--;73<6676056643.-$)-2258<821)+-*..4342==FNQOB?7<K[jv tncWOPUUUVX`WWTP[[Xfpw ¤¨¨©¦¨«¨©§§¥¥¦¢¦xsj`ZUOLTJQV[W[\X\\[aaea`ec`ecdglggddfcbeeffhjikjjnqoopptrrtussuruvvyxzy}vx{y{y}zz}tsihjenmirjqp{qyuqpsr~~x|xsz{t|yxuw}trnz{~§¤«¬«»Äµ¦¤±»¼¿µ»²»ÂÁù¥ «©¥¨´½ÉÌÎÐÛØÐÖÑÑÎÍÌÐÐÎÐÓÒÐÏÏÐÍÍÏÒÔÔÓÊËÎÔ×Ú×ßààÝßàѧmWJONVVaY\b_a_^^bif^a`\bX`bhppr| vf`O@598:AU\rp{~^7)*$#&(*&)'%-(/,315>3A5849642,)&&.135598./-)47+2:BMH<?@EQZ=F<;IPfx|riXRQQVZW[YZ^XVRZ]bkt| ¡£¤¥¤©¨¥¤¨¦£¡¦§¥¤¡ {sma[RMKSQRS\XY[_\`^abc_dfdde_bldkgecd`cfdefdllmknlntnstpqrtworytvvyzxuws{zu}{|y}}{~~|qpkihemgkrspvuqyvjl|z~|vys|ywxyskt}smuxyw~}w£¤£¯´¬°³¯µ·¾³¬±µº¿À¿ºª¥¯½ÆÉÔÔÓÔØ×ÑÑÑÊÅÊÊËÏÍÐÑÐÒÌËÍÑËÍÏÓÔÕÒËÎÒÖ×ÖØÜÞÞÜÝÙÇ¡lMKPPSXZ[^afaabbd^[b`]^[`cfkrt{{laPB<7/39MXcnvzmH4+0%&'*('))(,2/6:;371-6722941.-('0726<47-0--*,0-8<FEPB@CTGADBKZhv|rj^XUNPVYV[[X[RROU[cim}£¡¨¥§«¦¥¦©¢©¤©©¤¢|rj`YWMMGMMPRW\_Z_]`\`]a`ecghggjhfbeggbggfidjojjkoshkqntqstuusoxuvyyytxyzvzxyw|z} |ttmnlqljoigrnpsmnxolvy|zrxssz|trqxrotvw}z{ |}~|¢£§®¯¦£«´³»¹²§°·½À¹±ª¯©¾ÂÊÑÑÑ×ÕÓÔÖÓÎÍÍÇÇÊÍÑÏÍËÍÐÐÌËÎÎÎÍÏÐÔÔÒÍÉÏÓÓÑÖÙáàÞÝØÆhPKMTUP\\[a`ba_ac]ea_]\`dhjtu| |peXE<2-78AQWeuu{oP4'+&&*/2'-(+1./5;:;35948785230)0&.1;9=60/+,%(,.-4C@?<EFBJTJJBPZj|~{qdYUNUWVW[UZWXSUXT[_jo{¡¢¦¥¨¥¨¨¦£¥¦¦¦¦¥ tqi_VSNJIMQWTV\[X`ac``^e_`dldafdmefjcdfagafcjknoiominvovypstvvtswzwvzwx|{}}zuyyy{ wmlrpenfhqlopstrulplytvyuvpslp{lr~topuvsz|{s z ¢©¤£¬°·¸²ª®¯·¾À¤ ¥¸ÃÇÊËÔ×ÓÔÔÏÍÏÍÏÎÌÎÊÇÎÏÑÎÌÍÎÎÐÊÉÎÐÎÎÏÌÑÕÐÌÌÓÕÐÒÖßäßÛÞÙÄ[JRLOTXWW[b_^^]^]^^`^be^gnptx }zljRI?3-05:GW_msw Z<15,&0)('+-+0-5:<:359/<45612.,/-**4<>:9331-,3/2/>59;;=AFAIPIJLXgr~}rbZXSSTVUYYWZZZVVXUZ`kpy|£¥¥©¥©§¤¤§¥¨¥¥¦¢tnj`YOOIIMTX\Y^[]__`a^\cibghe`kihfgaff`gebeikkmojikpnqqyrstuouvrzv}~}zzxyr|yyvsz|{tgnkfjnijpkktoqtpjuy}zwqtupmu}wnqrrlxz{vxz}{r} ~¥¨¥«±»½«´²²¿¿± ®µÅÏÏÏÎÐØÖÏÏÏËÉÈËÌÎÑÐÅÆÏÐÏÎÎÏÌÏÏËÉÎÐÐÍÉËÏÑÑÐÕØÓÖÙÜááÞÚÝׯpTNNPSSYZYXXZfcac_aa^_`_dgor} {rd]P93)*,4BL[fkqz~fE/*&<<HF;),**-4:6>745689:/645/,2--+769<26.3+,,0,)7?8;9<DLMJMPPZcr wob[RTRR\W]VXZZVUWXRVafot} £¢¥¥¤ª¨¥¥¦¡¤¤¡¡¤ yrma\NHHMNPUV\X_\adaa_`di_die_edfhg]ed`fgbglgihjjopjpsmqrxtwsrtyywyy{xx{ur{x|y}znklskikonpsmlqqupisz|vsq{ts{rywxrejwtx~yy ~ysy ©¦¨²¹µ®¨µµ¯±½ ¯¼ÂÆÉÍÑÐÎËÓÓÌÇÈËÍËËÎÐÍÏÌÇËÏÐÓÏÎÍÏÌÍÈÉÊÎÍËÍÎÓרÕÚÔØÜßãåãÜÜÚËeOIPNQSQWTXVZ]\X]]]ZW\dfhov{|rf[N9+('0,<KUckquz ¡ kH2)/0RU;=9:/++255374230556:6//,/-(04579861,0-/830.8>7>BCJLJKCQ[dpy |se]OSWZUY\\ZU]ZRSYVWY\hr|}¢¥¦¥£§§«¤§¥¥¨¦¡¡ ~{ocb\PLMFKSWTVY_`_```^]ba]bgaabbdfbfb^dahbejjjikkjmnktkstsststvvwuwy|v||yvwy{y{y~tiknofhnnprznrqtplvxvzwtttuvyukyxkcfsrs}{~|v ~ ¦°¶³¬§¶µ·³¬¢¦¡¨¼ÆÉËÌÇÉÌÏÎÌÆÌÎÉÉÏÑÖÓÎÎËÈÍÌÆËÍÏÌËÌÍËËÊÊÇËÑÐÔÏÖרÕÚÙØÛßâäåáÝÜÛÁXKKNJURSUXYXYUWXZZ\_]cggsv{ |wg]M?/,(--:FSbcisuvY=*33*)1,,/-.*-1/36237/34498600*-+.3<8;30../.3.472054<=I?ENKSPWcmx {{wibWVTTR\[\aZVZ[[X[XTWXdo|¡¥¡¤£¨¨§ª¤¢£¡£¢££ xyod_]SNHMQUXY[[_b_adfb][e^bda`_efcYceccbiehlhhdjimuqpsnystusvtvwzwsytv{zzvzxw}{~tmnkjmmonsmsnowookvuvztsyvzwtssrvnhmuto~}yw ¡ ¬«¦¢§¶¬¹±¤°ÃÈÍÌÎÎÌÉÆÊÍËÅÅÇÍÒÒÓÖÔÎÏÐÊÈÊÆÅÉÆËÉÈÅÆÈÉÌÑÑÖØÙÏÔØÙÒÔרØÞßßãààÜßÚ¾LGJMONLUSUTYUW^[[Y[_afhru~~wi\I61($,07:Sa`hkw{dA*(/%)-'3,')*/*5435363.37420-.,/,0159=CB.-015924.02.4A=CGIPQRVcpy £yynbVRQUUQXicZ\[[ZWXRVTVccqu~ ¡£¤§ª¦§§¤ª¥¨¦ ¡~yliaWRNKTNPT[^\d`bddebfaf^^hab_ghg]`kfcb`gikmggjnknmyvltossssszuxuxwzy{{|}{z}|ytvpikjjnq{rrnno{qqttxurtssyqcotrhnoqmw}xu }v { y £¬§¢±µ°ª¬ ©ÁÌÏÏÍÐÏÏÍÈÄÇÉÌËÊÌÙ×ÐÎÐÑÍÊËÉÇÅÂÄ¿ÃÉÇÊÉÆÑÐÚÕÚØÖÔÐ×ÕÔÏÓÔÔÚÛÚàãäÞßãÖ¨_TRKJHIPPVOXXW^YZYV^_ehqvp`WN<.$%$+6=IOefqxypP8''$&%,-+(+*3004776115?;5500.+#(+,46;<@8.+001161146189AAPLMO]gpx ¤¡ssh]SVPXXXX^\[YZXX]WPVVXackz¡¥§¤©©§©¤ª§§¤¥¥ ~sqd`YSLFMMNWTWa_ca^`pcc`d_beebefccfjeffcaghkgdjijkkqmlttqwyvurtsvusrvtrxy{}|}wrqrqmlilltvnosjmvnquwvrutyyojmslcfmpqswqw |yx}} |~¡§¤¥´»µ«®¾¼ÄÑÏÍËÎÏÍÌÉÄÁÉÎÐÍÊÖÕÍÉÊÎËÉÄÈÇÆÂ¼ÀÂÄÏÒÐÈÑÍ×Ó×ÖÓÒÊÏÏÐÍÎÍÐÏÕÓÖÛÞÞÛàÝÄ iYNMKGQPQNTSRVSXWX``giqw}~xmdVM>/%#+,16COdafty~c>*))&#(/*,+01027:14:67395550&,)$',/7<6;10(+*30023/0:5=6;?IIO[hqy £££kkeUOSSZXVZYZX]ZZZVZWOXT^dow¢£¦£¤¥©¨¦§¥¤¤¥¢wqkvYRGGOWU]XW_^`eX^aheh\badcbf_d`ejhcegaeigbdehlmootlquvzxxprsstuwywyxvzx|{}uuxssmkryojtvppvlpsttxztx{xqrstnmprrry|vv{{s|zx z§±µ¥¬¼ÊÉÈÎÎËËÉÊÊÉÊÉÈÈÏÒÐÉÇÏÑÍÇÅÈÉÁÃÈÌËÄÈÎÆÑÓÑÊÍÍÔÑÏÌÈÏÇÉËÌÍÎÍÌÐÔÓÓÕ×ÙÙÜßÕ·y`VPOKJPMLUXT]XRSV]`ipu{~sbXK;.&.@5,*;P\`jjs lK95,&#$$*/+,1/2:675?>521931,,,*&%1159<;3-+*175350567?G;=6?FOUbsy¡¤¤cc[TTWVSVXY_]Z^[]\VVRRZ\Zejz~ ¢¡©¤¦©¨¦¨§§¢¥¢¨£{nj`YPNJNOKR]\W^baaecc`gZhdcdbc]gg`caddhfiifjhgkliqoqpsr}yssxstxuvwwyw{xzvu~{rrzsovonyjinqorokoxrtztoxohnqpl}zpzztsx||y zy~}v|~¥«©²¨~¦¿½»ÊÎÊÉÊÇÈÊÊÌÌÊÍÌÌÈÏÎÇÂÅÊÇÆÁºÄÅÃÄÎÓÌÊÒÅÌÓÌÇÇÄÇÅÄÄÄÉÏÍÌÎÏÓÏÓÒÓ×ÖÓÔÕÙÝÞÞØÍ¸}jTLFJIKLLSSZYV[`_im|}scUL:0,)#)9B>;T[]dnttY3(+,$$('&'(,-73;;7;<4-4351.,,1.)*2:=;791,,,-6557;9:;??A?9=FQcl¢¤¢¥``WPTVXUWX[`\_[[Y^ZXUYUYggkw ¡¢¤£¤©¥§¦¨¦¤¢¡£~{oiaYRMKJMMMXW_^__aadh_jafdfaadc`ccbhgibmhhfiipiglnltsr{u|twsusqzu|y}yw{vyzwopqpqsxvonnnpkpqpoosvor{skp}pwq{xk~}ql|zw zzx ~| ¦ª®¤zx¯·ÄÆÀÅËÎÉÉÆÁÅÊÍÏÐÐÎÉÃÃËÊÉÅþÁÄÀÀÅÌÆÍÔÏÉÍÄÄÊÅÄÃÅÆÆÉÈÉÈÍÑÏÒÑÒÔÒÓÐÕÔÒÕØ×ÚÛÞââÝÌ´aFDCHIKIWWRWUV]bdnv}£|rdYR73)-(,<;30<O]`gyy|f=')$((%('&/12.<D776555837190,-.+0,07>983//))388248338869<<EEWgx¢¨£¥¢ZZTRSZSY[WW^]`[YX_ZZUUSV\kjxz¡ ¢§¦¦¥£¦£§¡££¡ ~yqja_SJHJIMLS_U\`_d]b_bad`cga`da^ccc`dd`gblgjhdjklpmlqputrqqzpsoystuw~zyy}}xvnjrkmlrwuuqpmpmrputrtwzuvrqyx}x|y|vuvyxry x| y{z ©© {¢»¿¿¼ÈľÁÊËÉÉÃÁËÏÐÐÐÏÉÅÀÃÉÎËȾ½Ç̾ÎÇÍÑÐÈÆÀÆÈÄÄÉÏÑËÊÍÈÌÏÑÓÓÒÏÓÔÒÓÑÓÔÔÖÕ×ÜÛÝâáßÚÂ_MQMDFKSLSNRVb`hmu{~{qdWS;2-,,.)",/2?UYakvzjJ7,--$)$&(&,0,92:;>799977740/))$.,02;=;5/*/+0/04:36.669@;C>CRco££¦¢£¦¦¦WWMXQ]^]WWZ\WXZVZb]VVXSY]cjvz ¡£¥§§©¢¦¥¦¤ª§¥¡£xsk_XQJLKONQWT[^]^cb_ejcdibfaffeacgcbfejfffefkipmmnlmnqtvrrrpw{xyutwsuzxzxmhlrklnmusuknkkkomrrp{tts|nm|xwx|zuqzqzz~{~q } £ª¢ª¿ÄÅÀ½¿ÅÁÀ¿ÃËÏÊÄÃÌÏÍÎÍÊÊÆ»ÆÇÈÉÄ¿ÌÑÆ¹ÇÅÄÅÈÇÆÉËÊÊÉÊÍÑÍÊÐÌÌÏÍÏÔÓÑÎÒÑÓÐÑÔÔÖÖØÚÛÙÝäáâÛÂnkR=DHMPQQUW\afkq|}ªymfYS=0')&&,*(11=FO]drv}tX2)$*'%'&(/++*0<613;6D97722386+*%/18A:950,+19/,;65<166;:>ABGOYm}¡£¤¦¥¢¢¦ZZUUUYYY\ZYYYZ[\_XXVSWVZ`cqu£¤¦ ¥¤¤¨¤£¦¦ ££ |yqkb]SOKLHLUXXUZa\`]Zefdabc_`eeeacdh_fgkodfdgigjlnmmoqpswqutrvuvtuuy}ttu|xtpjhinhnnsyxpnvroonolmortzprputpzznu{spy~~|y}¯¼ÆÇÆÄ½¼¾ÇþÁÊÏÊÄÁÅÊÊÇÈÇÅÅÆÃÂÉÍËÄÅÑÆ¸ÀÅÄÁÁÊÏÏÎËÎÌÌÍÍÐÎÏÐÍÏÏËÑÒÏÐÎÒÓÓÓÒÓÖרÖÚÙÚßàááÜÅwTBEGHGOQMSU^gmsz|xqjYN@5=22*)#**44=NWags|~`>,%"%&(*%',+-,./6;:8767757725,,*,-067552,.130-.9534?;0:299>O]jz¤¥£¥£¤¤£¢YYZQS[Y[`\X`Y^]Z]^[WUXXZ]eos}¡¥¥¦¦¥¥¨¨¬§¨§£¢ ~~rnc_WMIGMNSUU\[^_^afc_bc^]b`aefaaddeghf`chhdenlmlqooqvuvuvxuvuwuyvzyvyxzzsjnsofioonrtqosnqqmuqipspmqsuswrquy~wq{ xz ~ ¦³¿ÇÅÆÆÄÄ÷ÂÊÅÀ½ÂÈÅÃÂÁÆÆÅÆÂÄÅÆÆÈÎËúÅÅÁÅÌÎÊÂÅÎÐÒÐÍÏÎÌÍÐÎÍÑÑÏÐÐÍÒÐÑÑÐÓÓÖÍÏÔÕÕÔØÔÔÙÜÜáåÛÄ`A@CCFHOMUX]ajs¡}xlf[P@4-*1)'#(*./8FWYiguqG-3(#(%*+&*(6/5.5A76835067:5//2.1-5:9@F;5-,.8<045342741577>LZqy¢¤¦¤§¤¤£¡ZZVXV_\^Z\\Y][b[VX\XUYZ[afmr£¦¤©¥¥¥¥©¤£¨£¤¢ ~{mkbcWMHFLQQVQY\Z`Z]cd]cecifegefhbecdgcg_cgdgihjnqmnpruruuusxwtyysrstwxxxvkirojgchmnuuvqmqxpoortvripqovuqky|pvu~ yy||{t{»Â¿ÀÂÄÆÃÇÇÀ¹ÌÊü»¹ÃÄ¿¿¿¾ÄÄÅÅËÈÉÆÈÀ½ÃÈÉÈÏÓÑËÁÄËÓÓÎÏÑÍÌÍÎÒÍÐÓÎÏËÍÏÏÐÎÓÑÐÊÉÓÓÕÔÓÑÐÔ×ÔÝããÙÂ|K<B;DFKLUX\fku{ xoe]NB4,51**%(.1*5>LY[^ntV4*')$.****2+1+05:773073649620++*50386350'--18744137255084>OSh}¢£¤¦¥¤¤¥¥¡TT\W^^[]][Z^`Za^YZ^]YVVaaemx £¥¦¦¨¥¨¦¢¥¤¤¡zrl^cTLIMNQRXWW]^a[`^__\^`iegebff_fdacgfb`kefggikplgkpqturvtuvyzxtuuuqs{zsqnh^gcdfjgkt{svvpsnnqxruyvxotnrqyxqnyx~ {w} |}©³¶Ä¿ÄÇÄÉÆÉļ»ÄÃÀ½½¼Ãľ¼»ÂÈÅÆÃÃÀ¼ÂÉËÊÍÏÈÇÏÐÑËÅÃÍÖÏÎÏÓÍÎÎÏÑËÓÐÍÈÈÍÍÎÏÑÏÎËÍÕÔÖÕÔÐÒÕÓÓ×àßÞÖµr>46?EGKSXYdlr|~vqdZNE3/,'*+%%%,(.49KX]hzx b@-,+'(,.0)(,,5-2194<74.235G33/0,2033;13,+)).0132>@63/2233:ETfz¡¥¥¥¢¥£§¡£UUUTP^[^^Z^\Y\\Y][VYVV]^`dt|£¢¦§¦¦¡¦¢¦¢¡¡£ymh[^YLLNGKRQ[\]aZ`_c`e]c_hcljhdc_bbdbbdkdagfgpiknmksonsttwtzxvzwtoorsq¼|ree]mieaklckonssuswlitnjspqtxskmvqwu|wvx~~| y®°³²´¶Ã¿ÁÉÊÆÆÅÈÀ¶¹ÄÆÁ½ºº¾ÄÂÿ½ÆÄÀ»»ÁÆÇÎÐÍÌÍÍÂÇÑÑÐÌÆÅÎÒÎÌÓÑÎÍËÐËÏÏÊÊÊÒÎÓÐÕÑÑÐÏÐÓÙÖÕÖÕØÔÓÚÛÖÜáÕ§Z;8;BELPV^^mqy~|vk_ZB;,-.(,+*%*&,17AKZdr{z sS/*++,'*2+-3.041:44426844:76131-,-3<;<.1+,+(142301E52/23.:=Lfv ¨§©¡¥¦££ ¤TTTRWZY^]]]`[`^^]]Y]V[Y`eips¤¤¤£¢¢¢¨¢«¤ ¤£wqj_WWPKNJOSUSW[a]`_^[^fe_adeehabc^bc_]decfgejigkmopotonrpvxvtqw{mttqq|²Ä|mddidhlgcjilopoqrqsnnokprjrpmjssrjy}{vxvy{} { }r|z{{wª¶¼»±®°°ÁÅÀÄÍÇÁÀÁÿ¸¾ÆÆ¾µ¶»ÁÈÆ¿³¼º»»¾ÃÌÉÉËÏÍÌÍÊÂÇÎÓÏÍÈÆÍÑÊÊÐËÈËÏÏÐÕÎÎÌÕÔÑÐÑÐÐÏÌËÏØÙ××××Ú×ÞÜÒÜÝÚÅE<A@DGOQW`kpz ~rj]UC8/*,(02',')',0?IU]_rw}uW6'-+,((+,')7).45592658?@3>672-,,-+3?:628*-/2-=340/151,469;D[ny ¢¡¡¤¦££¦¦£¥¢¢XX[TXa[cZ]U[Y[__\]XZZ[XYbhqv¡¢¤¡¤ ¢¡§¡¡¡¢ wpiaYSLLMKJTWV_\[[_^^a`^b\aifhbfffd`b`cgeeegehkimljotlrpusqwqqrrqnpjos¼¸xgdfggkljepjnsrjrsmsmqtrqrusnnqpmp{z{w|oy}uu z~yuv~|¢¼Ã½ºµ³¹¼ÇǼÉɼ½ÃÅÁº¶ÄÅÁ»ÀÂÁÀ±¬¶»ÂÄÄÆËÍÎÊÍÏÈÍÎÉÄÈÎÎÒÎÅÅÑÌÉÐÎÊÎÏÑÑÓÎÎÌÎÍÎÍÏÍÎÑÍÊÌÔÔÓÕÕÖÙ×ÞÛÕÚÙØ×°V><@BBLPZ\bmu~}tk^QA:1.,0-.0&0)(-+/AHTZmvu}gC6()/,+-.)1*(1.561:932<8261626-3-40347210)0/553:62/.4,+.:<IUi| ¡¡¢¢££££¤£¦£¤]]ZW]\\X_Y\\XZSWX_[YXXZVcesx ¡¤¦¥¢£¤£££¢¥¢ £ zpoc`XLOLNRPVW[Z_[Y^``gad_`fefbffcebccd`gdjdhehijmmnvrsvwsqtmotswpqnrrƪudbbbghlpehostpmqoplqsmqxukouuqrqvyy|lu us }zv{x}w µÅ¿¸´³¾¾¸¼ÈÂ½ÃÆ»ºÁÁž¸³ÀÈÁ¾º¯¸´¹»ÃÆÇÈÆÅÈÍÉÌÍÎÌÍÎÇÆÎÓÔÑÅ»ÑÎÍÑÑÍËÍÐÑÐËÎÍÍÎÍÍËÌÍÎÊÈÊÎÏÑÖרÖÖßÝÚßÞÞàÂpTYVFAENUahmt{ zrk]TC<5**-,*-*%&$%)/6BNXbou{}~sK1(.&**))(++;3.11;2784:7;061>1.(/24<88;31/15363><:505)(,-5NWhv¢¡ ¢¥ ¤£¦£¥XXXYXZ_dY\`^ZZ]ZY[YXVXUT_foxz ¥£¨¥¢¥¥££¡¥££§¢xpia^WNDEPUSQVYWY][^cc`gfacbadadjdead`gdgafejjgjilnptrunvtsstswsooosmºÇ¨ocYfjkjsmdlsnqhlvphrosntpmmrrvr|{yrz}yy{z{}z | z}{txsxt}pw£¶±¬¿Ç¿º¼¼Ã¸³ÆÁ¸µÀÁ»ÀÀÁǹµÃÁ´µ¶ÁÀÁÂÄÉÆÈËÃÆÍÏÊÉÌÎÎÐÓÉÃÓÑÎÇÀËÓÏËÏÏÍÍÎÐÌÌÎÐÏÏÍËÆÇÊÊÅÊËÐÏÒÕÖÚÕÖÚÞÝßâßÞÐ¥{aP8EJJSW]nv|¡{qi\VA91.---+..)+&(+.-4GMXahrx{x_7,))*-++1*0-4014970/-06522591//,.6257:415,,4/75;7170.((.88Kfy ¡¡¤¤¥ ¢¢¢¥£¡[[X^[Z\\_XYXY[__YZVURYWS^fpv ¢¢£££¥¥£©¡¢¢¢¢¦¢~tkdUWLNKMOXVRVW[`^Z^`b_eabffedbfcefcbedh_fdlmiqppnpsrqqtptvtwvsqkiooÆÇ©hbhebqtafhkkkjkpuklwmtstopxvvyxs{uw{vxy}{ s|~|{pfqpny¦¬¯¹´¶ÃÈž»À½²º¼½¶ºÅ¾ÀÄž°¬¹¾À¿ÅÆÇÄÄÀÆÉÊÈÃÆÊÌÊËÍËÌÏοÊÑÑÎÆÈÍÎÍÉËÍËÉÍÌÌÊÌËÉÌÍÊÈÊÎÏÌÎÒÕÔÔÕÙÙÖ×Üßßâãàß̤mI7>HKQUblxy|oi[TF96/.+/20(-'%')(*36CN[ajpw}~gB1++()+0')-1024.3>;7034877:6/42+365:778.*2/-577<;000,%!(.2E\r ¥£¡¢ ¡¢¢¡ ^^\ZZY\]_YX\]ZZ^]]WXW[]UZelp| ¡¥£¥¦¤¤£¥ ¥ ¢©¥¢zsib[QMGJOQOWYQUVa^]`bdb``bbgddegiejefefdifllmmqmnkkqoopqlrruolmkhjow«Ï¾£tbja`egggmmknknpmlrhhotqsupw}zzvtzwv|wx |{ zv xnloro¯·®£¼Á¶ÀÊÈÀº¼À´³µ·Á»»ÃÆÂ¼·³²«³¾ÇÇÂÀÅËÄ»ÀÄÈÈÅÃÂÍÏËÍËËÌÎÅÂÉÑÑÊÉÆÊÎÌËÌÎÊÆÊÆÈÃÆÃËÐÑÑÎÎÑÍËÊÒÔÒÔÕ×ÖÔ×ÞßßáäáÝÌ¡a87EGOXbo{{ok^SK@15/,0)*2,+)(%(&(-<BOZ^gl{¬²¸ÁÃÈǼ¡¤¬¢pJ/*)/0+)41++-028:9;@5101<4498561731/:2381,.4773;9841/)*##1;\h} ¡¤ ¢££ £¤ ¡XXd]V]\W]]^b^[_\\]V]QSXV]bjv~ ¡¦¥¨¥¤¦¤¥¥¢¤£¨££¡~wrm^[OQIGPUQVWWXXe__`]`][`ccbbdljgbdf`bbhhhmnifjlprnlltutswoqmrookoqÌζqcefjiejjhkngokhpsqjntnqxopzuuvzzxorx|z|~ }| yt{kjugz§¯»´¶±±¸ÃÀ¶ÃÉŵ²¸·¸¶±¿Â¾·Áµ¥®»ÁÅÈÌÄÀÀÊÈÈ¿À¿ÉÇÅÆÈÍÌÍÎÌÎÏÊÅÆÊÒÌÏËÈÏÑÏËÌÊ¿½ÁÇÉÊÊÍÏÖÓÓÐÍÏÌÎÎÒÓÒÖÕÔÕÔ×ÞÞßáäãÝÆ>6=BKW`mv}qlbRC=72-+()./+,&1)%'$',5BOTd¦ÃÂÉÒÚÚÛØÐꬳÇÄ«q\5,+'&*/-)9352/76/7:5720-8379<73.900;745+--675<3072140.'(,;Pe{ ¡£¡¢ ¡ ¡``YaY\X^]WZXZ][[YVX\TOPW[bjs£¢¢£¥¢¤§ ¦£¥£¥ ¤¤~ztneYQONILOTUWV^`]]bZ[a]^a`edaeglfadhcglfgmoljmfokmrlqousttqplmjofky³ÕÈw`cfpijhbfiiisnlinrpqrqpmlxvnu~uuu|} | |{y}}ngfkz«¸µ³µ¹¿»¶ºÁ»·¿½½±»¼½º·¸Âø¯±¬·º¿ÀÇÈÈÊÅÃÃÄÉÈÂÁ½¼ÇÊÊÇÉÍÐÎÏÌÈÉÈÌÊËÌÌÌÊÈÌÎÈÄÆ¿¿ÆÍÌÌÍÎÎÑÒÔÓÎËÎÐÌÐÓÓÒÒÕÖÓÔÝßßàãàáܲX5=BJR_hp~~vg\R>>2+..,1-(0*),&(("'-.=Nh¿ÉÉÓØÝÚÕÕÔÏȾ¹ÆËÓÍÀ©Y?/-,.*),1.0-(106718379567;AA:960;853/-6.,0/0288;810,..,+,7M`q £¡ ¡ ¡¢¡¡ ZZac[W[[\XY[UWYTVTVVRUSW\flw ¤¤¤¦£¢¤¤¡¦£¨¢¤}|mg]XSEOJQQRY\]Y`_^^\Z`bf_hlacciaea^bejhixpoiljkigojpnootrnopqkkiiÅÓÂ¥rebbnmjdhijlnmslgptpsumhlkldp}ztsu|v{yv}}sn~ytmkr ¤¬º²¸½¼Â¶°ºÂ´³´¾½¼¼½¾¿·±´¨¢©¶µ¹Å¿¿ÂÄÃÆÈÄÃÁÃËÈÇľÂËÉÉÅÌÎÍËÈÊÆÈÊÍÈÇÍÏËÈÄÅÃÇËÊÈÇÌËÊÌÎÏÌËÒÔÓÐËÊÊÑÔÔÎÑÓÖ×ÖÙááàââßßÄh33BI[]km}vb^UH852'(,/--+.-%"&###&2Iq®ÆÍÒÚàÚØÓÎÍÃÂÅÍÒÚ×ÚÚ×ϰpF.)+++2)(6A5)22<::547534969>BA7411;84:2.0,,2516;6600+++.6<LZs ¢£ ¢ ¡ ¡[[_VX]WX[YVWTV[\TVSTUTSUYbit¤¡¤¨¥¢¥¥¡ ¡¢¡£ {ypfZROIIPRPNRU[[]\\Z_``_bb`a__]b`b`^``dhfcgggjpjlonjopwjppoollmkdlÓÏ¿¡|i^aghdjhgdjckirvqquspkmooheoyypn|y{}} mck|wrpqkw¤¯© µÂÀ¾Á¼®¯¸´¯¯¾Å¼Á¿ÆÄ´¤¥¬«¼Â»¼ÂÁÀÀÄÅÅÇÉÃÀÅÊÊÃÁÁÊÇÊÃÃËÌÊËÌÊÆÅÍÌÇÆÇÅÁÅÆÇÊÓÒÎËÅÅÌÍÎÏÏÌÑÔÑÔÎÆÇÌÒÓÑÑÑÓÖÖ×ÜßáááàÞÓB:?LRYjw|~{si^RH360.0*-1*++&(#%""'1@|·ÐÐÖßàÕÕÐĹ½ÂÍÑÔרÔ×ÛÝÜÉ?))'++.*)*+-).+39:216663420537700653751+5,5165<7/-*'$&268MYl~¢£¤¡¤£ ¡ WWX\Z]XW^T^VVXV[U^YVSXWTYdipx¢££¥¥¦¢¥¡§¤¡¢£¢¤¢zsla`THEFLNPOUWZUZW]Y_aXc]]]bb__^b^aefg`^dfbcfhmjkpmnqwpnqmroniflby¾ÙÊ·uk\dgkeiakjhmhkqurxunqiyvljpwumyzxur ~}z}mpw{}xpppn~®«±®¥ª°ÆÇÀÀ¼»²¨®°¬µ¼¼ÄÀÁ¾©¥ª´»··ÅÀ¸¹ÁÀÀÀÃÅÆÉÉľÅÊÄÃÆÅÆÈÂÂÁÅËÌÌËÉÃÇËÆ¿¼ÄËÌÏÉÈÐÔÑÎÈÄÇÊÌÎÏÐÎÎÑÓÑÌÈÏÏÔÒÐÍÓÕÔ××ÚßâÝßßÚS4=FP[gpz}olgRF9.1--.0,-'(*(&2&&,E»ÓÕÛÜÚÕÎÄ»·ÀÌÐÏÐÔ×ÙÖØÙÚÙÒ·O"#$'.+0,/04)194>A=3988>/18054.<48678;44/.31;6E=5.*'$),,>Xiy¡¢§¡ ¡¡ ¢ UUXXXU\\ZYYYX\[^\a]TSOUQWajty¡¡¥¥¥¤¤ ¦£¦¤££¡¢¡wrfa\PEBCJONQSVYZTWWZ`^]_^^`\_a`_`]^cae^ehmgegejgijnikmlolpoihebdcרɥ{lf`emiecgmmnnqlpw|qgomuqvsnht{ztniz|~}~v{|xnnyypqnrqu«²°±¬¯ÁÈÁº¹°¹¬ª©«¯²¹ÁÆ»¯¯¹¹ºÅõµÀ¾¼½ÅÆÂÄÄÃÆÈĹ»ÈËÅÄ¿ÂÄÈÆÅÂÆÍÌÈÅÿ¿ÀÂÃÌÏÍÐÍÈÊÏÐÐÎÈÃÇËÌÎÎÍÎÎÑÑÐÐÎÑÒÑÓÑÒÐÒÕÕÖÞäÞßàØÃx?<GKY`nv~xnk`UI;1*.).(*'%$#' %'.NÀÎØÚÜÕÏÉ·¶¾ÆÎÐÑÕÛßßââááÙÒÔÇo%&*/,,(/.-.0136663703AAM72+241553557242//46C8<@95)0)+,3F^u¡¢¦©¤¡ ``ZXZV]\ZWTVUWZY[ZWUTQZPSdho~¢£¥¡¥£¤¦£¡£¤¤¡ wpk`SNECKJPSVQUV\VW]`[_Zaa]a_ac_a^`_dae`eaheejfhhikhljoonklllfcdil£ÝÒ½ymj_diccjiigrmkjqsupmtoprxtoo~vmzy|~| y}s~qjpw{m``hl|¦§¡¢¬¶·¸·»È¸®¬²²´°¨®¶¾¶´¨«¯»ÀÀ»»À»µµ½¿¿ÀÇÄþÃÀÃÄ¿»ÃÌÆÂ¿ÀÂÆÆÇÄÆÆËȾ»»ÁÃÇÈËÐÎÍÍÏÇÉÎÐÏÏÊÇÈÊÌÎÏÑÍÎÒÑÑÏÐÒËÐÓÑÑÒÔÕÓÚàâááÜÎN8BKS\nz{wnebN?82-*)+,&*$#&&"-5k£ÄÏÙàÙÐ˾³ºÊÎÍÖØÜàáãäåèçæâÜÜ×0*((,+1,-,/25;=365051<6=879:2332/64:50/2.8638375/-&()-DVn¥¦£¨¡ ¡ ^^WY[XXVYUXYY[YXXYXVTUUWW`hs| ¡£¤¥¡££¤£¡£¤££§¦¥ yth^SPEJENIQLYQTZT^Z^]__f`ab_^a^a_]Ya^edddhlhilkkjihjiktjnnslhgflyÃÚ̶§}ngd\_jfjjiqphntjjmwursvsutysvsyzs{yz ~wty }y{vldkhp«©¤¦®»»½¶¦¶¿¶°©«±±²´´²°° «¸¹ºÂÁ¼·¶¾»³±¹ÁÂÁÆÂ¿ÀÂÄÅÇÀ»ÁÆÇ¾ÀÃÁÅÇÅż¾ºÂÄÉÈÈÉÈËËÏÎÏÉÉÊÏÏÍÎÉÉÈÌÌÎÐÏÌÌÏÏÒÐÎÊÊÏÒÑÎÓÒÖØÙßáâß×¾sBBMUaiqwmb[NC:1-++(('!!(%(*@x°ÇÑÙßÙЫ¯ÀÏÓÐ×Ýàááâßääåççæåâß¾O!),)-',5-*/:7;=80315=639022-2472720-,93<.67666;+1'+*=Kiz§¢¢£¡ ¡¡¡WWX^YUZZZ^\]W\Y^\\^\WYOT[dos| £¤¦¥¢¥¤¥££¢¢¤£xyrk\NNKFEHHMKNRXY\[[_]cc`bcb`cbed]`affbed`lgfeemkjljnomoorljnifdkØ×óªrha_gijkeilqoohfrsuppypms}{oqv~zus |{~ ywnjw zx~vkkjip¢«®¦ª°²¿½°©¥©±º´¯¬§¯·¿¶¡¨ª¾½¼½½½³³µÀ¾ºµ»ÁÄÄľÁÄÃÃÅÅ¿¼ÀÅŽ½ÂÂÀÁÀº´¾ÄÅËÌËÉËÈÉÌÊÏÎÉÈÈÇËÎÎÌËÅÅÊÍÌÏÎÍÏÐÎÏÍËÊÊËÍËÍÑÒÙÖÝãáßÛÍ \>AWZmt{xoc\RB3,-&)&'2$!#'0L¸ÌÔÜÜÕ͸¡§ÃÐÓ×ÙÝÝÞâßÞàÞàáääêêèãÓ~*(.)+2.*+0/.389376:6483610--.41071/+2407:231=61,*)=CJft ¡¢£££ ¡ VVTXV]ZY\]_\^^]a^_ZXX[TXZbmtz ¡¡£¨£¨¨¥¥¢§££¥¡¤ ~sj]XNCBHIKNRRSVV]Z\Zc`a``b``bcbe`bdba``g`dfmfkfjiijnmsqrmmlpjbck ÖÐë rffhakccjmqorjclvvtrlrutwrtwxy|qp{}~ywv ~sdr|x| {qjokev¥¦®°®µµ¹ºº¬¡¡££¬³°²²·µ¹¬ ©±°±µ·»±·¾¹»¼º¾Â»º½Æ½Â¼¾ÈÿÂÄÅø¼Çü¼Á»¶¸»ÁÅÇÉÌÏÊÉÉÊÊÉÊÐÏÊÉÈÄÃÇÏÍÌÇÀÇËÌÍÍÎÊÍÍÊÌÌÊÇÉÊÎÎÏÐÔØÛààßÜÙ¾LGJTjr }vkg]TC02,+$)!$%&'2`¼ÍÔÚÙÓÆ«¯ÉÐÒÙÝÙÜÜÝàßÞÛÝÝßáâäêêåÛ3(**'),.*110025;556912/.+/2/8.52.1/,..94:>59-4,/.31EWq ¡¡ ¡¥¡ YYUX[WTZZYYYY_^Z_`^UYYYW]civ}¡¥¢¤¨¤©§§§§¤¢¦£¡ |teYULIBDHFJPNPYZ]_^[]]ebbhcbbibab_bcdhc_fdfickhghhiiqsqnoohiheh{«ÕÒÀ±§wici`cd`i`hokeginw~snlmxvnkx|wkpm~~|tn{qj]u{zqonliw ¢¦«º¸´´¶²©¡¢¦£¥²¸Á¿´¦¢¬²·º´«²¹³´¹½½¿¼¸¾¿¿ºÄŵ¿ÈÄÂÂÅÅ¿¾½ÄÀ¹¶µ¶ÁÅÊËÆÈÉÍÌÈÈÊÌÊËÎÊÈÈÉÇÄÂÆÈÊÅÃÅÇÏÌÏÎËÉÍÊÌÏÍËÊËÒÒÐÍÎÕØÝâáÝÝÓ²iKKUho{ {ohYG7+'&' #"%#-Ck²ÆÐÖ×ÖÍ»¡·ÎÓÒÙÙÛÛØÙÚÙÚÙØÜÞÜÞßâééæÞµA&**,,*),4..05138<F.,0181+,259<://,8-/24233516,042DWh £¡¢¡ ¡¡ ZZ^W\[Xd`Y^_]Zf`_b[WZ\YR[amux¡¡¢¥¥§¨§¥¤¦¦¢¢ ¤¡vme[WQEFJDLJIKPUX]c_Z[a_bba_cegaeddcbdcceadijikiekkjoqrmrqlwihdhÊØÑÁ·tiegcb`hkgjqiinkox~wmmmtoss~tjmw | vot}~scnv~{~zqjpreh¥«£¨´¸¼«±®¬ª¤¥¥ §¦¯¼Â¬¤¦¯ºº¶¯¶´¬§«·ºµºÀ»´¿ÃÁº¿ÁÀ¹¶ÄÊÂÂÅÃÃÀ·²º¶¹¼¼ÈÇÇËÉÇÈÈÉÄÆËÌÌÌÉÆÄÇÊÉÇÅÂÁÊÈÄÅÃÍÊÌÐÍÊÉËÍÏÐÏÏÑÑÓÒÌÍÑ××ÞßÞÝÛÈYIVap{£¡|yoYWD2**%#'#)/HµËÔÙÖÐȳºÌÒÕÛÜÜÙÙØØ×ØØÖÓÙÛÛÜÜÝæééßÅ_+*,%',+-24;3:@2477-1930-32;64/)',114218359821.-9=Fgy £¡ ¡ ZZ^U]`_]\YZ_[\_`_^[[YZVZXdpow~¢¥¥¥©¦¨¤¤£¦¢¦¥£ }wmh`UORHHKJKENWTR\a[]`bacfb__bdhb_edaegccceefiefknghmoprrquwhdfjÛÕÍâuf_c`befhhffjmljtvzqpiip~yrrhr|} ~wrz|znnzzw|ytjmnjYe§¤¯¤¯´º·¯¦«©¦«£¤¢§½²¥ª£±°»Ã»²´¶²©¥±Á¾»¾Ãƽ³·Ä¸¶ºÅ¿¸¶ÄÇÃÂÁÆÀ°©¹ÀÅĽÂÊÇÆÊÈÅÂÃÇÅÈËÍÊÈÈÄÈÊÉÉÈÃÂÇÈÇÇÃÊÎÍÏÒÌÇÏÐÏÐÑÑÎÒÐÐÏÑÏÖ×ÛßÞÛÞѺzLR[oz uh_OE0+#"$"#%1S»ÉÔÚØÎÀ«·ÉÑÚÝÛÙ××ÕÔÓÒ×Ù×ÙÕÔÒ×ÚÝâèéßËs++)+(0+.6/.113/:3;438/3.3-3*,+)$*7-/1889998737.7EWo ¡¢¢ ¤ ¡ ¡aa[XV^WZ^Y_]_]cd_]Z]ZTO[[binz¡¥§¦¨¥¨¦ª§¨¥§¨¥¡¡xpf\QJPMJOPMLLWV\[a_`ehdalccccdch^cdceed`chgggjkjkjnlpsqtxsrikgmÝÓɼ¬tb`]]igjldihkiovpisyl^fu}uijxywtzyphtz~wy~riotqee¨¨®¦´±®±¸´¥«¡¦¡§¤¨¦®··¦¦¨®µº¶º¾µ¯¯¬¬«°¹ÇÄ»½ÃÀ»±´¹º½¸¼Â¿º·ÀÉ¿»·¬´ºÂÇÉÊÄÀÅÈÄÆÆÇĽÂÄÄÇÍÊÉÆÄÇÈÉÉÈÈÆÇÆÎÌÈÊÌÏÐÑÎËÐÑÑÏÒÓÎÍÐÏÌÍÎÒÔÑØÜÙßÚΪiNZpx}pjbX>/-##!#*7_£ÄÏÖÙÑË»¯¿ÆÕÚÙÛÚØÖÕÔÒÑÒÕÖ×ÓÏÉÊÕÔÞáçêàÎ,(),*-+./11367.70222.+.34/11.&+..8608;96:2060-.?Mj~¡ ¡¡ ZZ\[`[[`cX]]]a``c\b__VUY]hlly~¢¢ªª«¥¥§©¨¦£¥£§¤£{sl\SNIKMJHOPMWS[Z_\a]df`cab`hhfibfccbdgieeeedfnkprprsmtsqqynjiq°ÙÒ¿¸±q_]\b`lidghifpsvotqeYcppjlz~~~xs|u|uqrv| xury~vpovnij¨ª«¯¯º±®¨¨£§¢¡¤¤°¸¹« ¢¯¯º¯®²µ²¸¸¶¬¯¶¸³¾ÆÁ¹Â޲µ¼µº¹¼Äú°·»¯ª³ÂÅÉÈÉËÉÃÂÃÇÆÁÅÆ¾¼¹¾ÄÉÌËÈÉÆÆÇÊÉÉËÆÆËÊÌÊÌÐÓÐÎÏÎÐÏÏÎËËÈËÌÊÌÐÏÎÐÔÖÕÙßÖÄRWhx~ uli`b:*%!&*Cq¨ÉÒÜÚÑÉ´²ÅÌÔÛÜÚÙ×ÖÕÒÑÒÒÒ×ÓÎÐÊÈÎÔ×ÝßåèãÓ/-,*(+-),//18811<;:0/-/,/01+/&(12424/<67265//38Eap ¡¡ __Y\Y_Y\]]``_a\^`a`^b_Y[[dkr~¡££ª¦¤§¦¦©¦§§¨¨£uqk`WLFDIFMNSOXX\\\abddabd`cdbdicdchicccfeejgihjnlmpmjoslnnkleg|Å×ÎÀ»¢¡j\Za^ccbeclkpjlqqn`Y_luunsv~{{~x}}~~~slhr}tpv~sptjfjt££±¯³³µ©¨¢ ¥©§³³±§¢°¶»µ¸°«¯µ±®´·¶µ¼À´²ÇĹ´¿ÃÀ¸¶¸µ³¹·¹ÃÁ°£®¶¹»ÅÉÉÇÇÇÈÇÁ¿ÄÈÅÅÈľ»¹½ÇÉÌËÈÈÅÈËËÌËÍÊËËÌÐÍÏÐÍÊÇÉÅÈÇÇÈÈÌÏÎÏËÑÏÏÑÑÒÔ×ÙÖѨk^mv|~qp\TF2,($&/M ¶Ë×ÝÙÍÀ«¬ÆÎÕØ×ØØØÖÔÒÒÐÑÐÎÓÐÌËÈÍÐÖØÛÝäèåÕ,'&('*0/03.1201675./,.2114*/*-%/-3+0-17744-.,/>Vo£¡ ¡]]_Ya]b`^]a`c\`]`c]_j^bbaanu{ ¥¤¨¬§§¨©¨¥§¨¥¢£wng^SOMIMNPDQVXZ]_\_`a_^cbbc_dfkeebcf_hckjflmhhjlpnlpoqupnjci`hÕ×Éë«md[`ggcaliopockko[Vgrqyvxzuxy~~wpz~znpoy~ zty zrwngiy ´±««ª£¤¢®¶µ«§°¹··º¶µ®¯²¯«²¾À»¹Ä¼¯µÁ½µ°Áü¹À·³¶¹¹¶®´ÁÀ¾¾ÄÈÇÅÈÅÇÇÁ¾ÁÇÈÇÇÄļ¹ÂÈÉÊÈÈÅÄÇÈÉÉÎÐÏÐÈÎÍËÉÆ¾ÁÃÇÈÈÉÌÍÌÍÍÎÌÎÍÎÏÐÒÔÖ××ÕÃqjv~ {piZP?4+(+>dÁÑÛÙÔÎÀ§£¶ÇÌ×××ÕÖÖÕÖÖÒÏÎÉÃÈÒÌËÌÏÒÓÖÙÜàáæãÖ'*&)(+,,265>4860-3(*+,.3/.++&/+-11/2=6631-**25Md|¡¡ ¡¡¡ \\_^cZ_b]^j_fb``ae^b`b]Yablw|¡§¥¦¦¦¨¥«ª¨¨¦§¦¦¤¡{pmc[UHLNLQQRQUZWZ\^`babcbgfdiedcebdbdgdgkhlkgllllilopqmrwlif`cÙÖϼ«©pe^`cjlhjfniljlaS_juprusv|y}}~zq{{wtgt}~~~|{zqllcq£ª¨¢¡¦©±±§¦¡¢ª¢©¸µ§¥±²¶´¶´¹µ°°ª§¬¶°¼Â»µ¼¾´²½¾²´½Áºµ¾À¸®ª¤ ³¾ÀÁÃÁ½»ÂÈÇÆÆÊÉÇ»ºÀÇÈÇÆÇÿ½¿ÉÉÊÊËÆÄÅÇÄËÑÍÍÉÀ¾ÁÅÁ¿ÇÈÌÌÎÎÍËÉÉÌÏÎÍÎÏÍÐÒÏÔØØÙÒâ}xvrlc_WG.-9V¬ÅÕÙØÑȹ®£¯ÀÊÐÔ×ÕÖÔÕÓÑÒÔÏÐɾÃÈÌÊÌÌÐÕÖÚÙÜáâéåÔ)'&))16106981;*/+-).'),530,216-.1;2636,,%'*13BVo¢¡^^_]]]a`c]c`gdba_f_aa_b_`emqw ¥¤¥«©ª¤ª¨ª§¨¡¦¥¡ {qhcTSMNJKMNUVV[X^b^g`h__cdd_kdfcaiffca_dkmjjnfmlkkrmrspnmjnhdmØÒÔ¹¸xok^ehhhabqhide`RVmrsqywnrxxuy~xvyx{}yvq~ yvoebjx¦¬¬¢¤¬¤¥£¡ ¨©¨¬¨°¡¡ª¼·²¶³¹¶³²«««±¼½µÂ½´´·»·¶²¸¾±±½¿»°¹¸§¦©´Ã½º¼À¼ÁÄÈÇÅÉÈÆÂ¼½¿ÀÆÄÆÆÆÁ½ÂÉÉÊÍÈÄľÃÎ͸³¾ÄÃŽÅÍËÊËÎÍÌËÄÏÍÌËÎÏÎÎÐÌÐÖÕ××ÖÇ©xk_QF8<IrºÐÚÚÓËÄ´«¨¸ÈËÑØØÖÔÕÓÕÐÒÐÐÌÊÆÄÊËÊÈËÐÐÔ×ÚÜÜââäáÓ&$$'*,..07;9B=242-1-0,++,.(*52,7403/27))%!%87Jf ¡£ ¢___e^b_abc^cebae`eb^a^]]\coq{ £§§¨¨¨¦¨§¤¥¦¤£§£¢ zpkdXTUIMPTSQXX[a\`\bbfedggcga`bnehafedgfekjfhhmopnlopqrqokjdep¶ÙÔÈÇ«wuhbcfic]kkhgjeY`ktxyxsuow~}uy~zusqz~zxm{ maai«²§¤¡¢¢¤µº« ¬ª´½·µ°³µ®¶´±µº¹²µÁÀ²¸¹¶¹°®º¿´±·Áµ©¨«¼»³¾Â½³¶¿ÂÀÁÇÊÅÂÄÇÂÃÃÀ¿ÅÅÄÃÅÇÄÀÁÇÉËÊÇÆÀ¿¶º¶¤¯ÁÈÉÄÆÃÄÌËËÉËËËÊÅÌÎÊÍÌËÏÍËÍÑÓÖÖÔ×ÖÍ¿|wfYPDKa·ÉÒÜ×ÏÁ·°ª©½ËÎÔ×ÜØÕÓÐÓÑÏÑÌÏÊÈÉÉÍËÌËÍÏÓÔ×ÚÜÝáâáßÓ('%))-556387798(111*.+.,,)),,05182531/(#! %,GYv ¢¤¢¡ ¡¡^^e`bba^baekcaabb`b\``_^^flq~¢¨¦¥¤¥¦ª©ª¥¤§¨¨¤¤znkcVTNJLOMSPY[_a\\aacfaaajfbgafjfpgggceefgmmkljollpqqotrphfebwÎÛÊÆÉ}gmZb`^bcgdigb^hlqu|wrqvzrqtsz}|vifpyy{~yv{ ~z~yn\[o}¢ ±µ«¨³»¬£¬²«²¾º¯³·º¼¶º©´²³¸¿¿·µµ»¸±®¸¾·®±´£¨°½Ã½½¿½¸µ¶·¿ÃÁÂÄÃÁÆÆÇÆÄÃÁÃÄÁÄÈǼÃËÉÌÊÆ¾¶©§¿ÆÊÉÇÉÅÅÆÍÌÉÉÉËÈÈÇÊÊËÍËËËÈËÍÎÕÔÔÔ×ÙÖ¡ xpcYVZw¥ÁÓÜÕÎÊ¿°µ¿ËÐÖÖÕÖÖÒÏÎÒÒÐÍÌÌÉÉÇÉÊËËÌÐÔÔÖ×ÙÛßâááßÐ|&/',12+11335;760.5321///.)(+606=258>0( " $)@Tj ¡¢£¡¢ ¡cce`cb\dccccdb`da`_^e\X[afjq~¤£¢¨¤§¤©¤¥©ªª¬©§©£xsj_XTOJOQQOVWYaa^\edgfbcfhlhldfhdlgjf`fdielmmrpkmnosvqttnljcdÐØÊÐÂxqke][`cabgda^kpnqrytkr~}smm}vneq}zxx|{}yt}zuf\^d{§¡¢ ¥¯¶®¢¬¬®ª«°º¸®°¹¼¿º°¨ª°²´³¾¼±®¯¶¸´±¹¾« ¨´°·ºÀÿ¾¶¸´´¹À¿½¼ÃÅÇÄÂÅÀÄÃÇÄÄÅÃÊÇÂÁÉËËÍȹ ³ÄÅÈËÆÊÉÆÈÇËÌÉÅÈÊÊÉÈÇÉÉÊÈÆÉÈÍÊÌÑÔÖÒÔÚÚÔÀ}tp_dqºÌ×ÛÕË¿²À¸±²ÄÊÏÖØÖÒÓÒÏÏÎÍÍÍËÊÊÉÄÇÈÊÊËÏÐÔÖÙØÚÚÝáãßÝÌl'+))012233254E00/32/-,3.7-16877858;30,# $0Kb¢ ¡ ccabdcdbdbdagebd`_a_^b`^bejoy¢¡¤§§¥§¨ª¨§£§¨ª§¥¢zrj`XOMJOORQZTVY_^a_d_dafeegbfhjfjijcfccdcghhrillqltokwospiihfÔÒÐαwwoed\\b^dhh`emmnpqnpnpvrj`jwuqejz~~vu~|u zsqz|mf_p}¥¦¥¢´²¡²¬·«ª©«ª°¶ºµµ¶¼¾¿±¨¬«¯µ°±¿ºµ´·µ¶®£§°·³µ±°¶¾Á¾¸¼»´±½Á¾¿ÀÄÅÃÆÃ¿»ÇÈÉÈÄÃÄÇËÃÇÊÈÅÄÃÂÇÇÊÇÇÉÉÌÌÇÅÉÈÌÊËÉÈÇÇÄÁÆÆÌÊÊÌÐÐÔÓØ×Ùͺ ~uowµÇÓÝ×ÏǾ¶½¿²»ÅÎÑÖÔÔÕÒÑÐÏÊÉÌÎËÉÈÉÇÈÈÍÍÊÎÏÏÒÕÙÚÛÜÝßàÝÜÊZ,/)&%--0..--4=67A664/12.-51302,63173,&!!+9\u ¡ ¡¡¡¤aa`bbdbj`decdccibdj_]]_b\ejq~¡¥¤§¨¦¥¦¨§£¥«¦«¥¤}sja[VLIROTOUSTW_]_[dbdacabebgdcijjbiddcccehorklmnooqmrqqqldfiªßÓÔȶ¡zutstf_aWZc`chqmquskfjqyk_\f{utughv|~}}~| vqmpwyzvjben£¤¢§§ª´²¯«©¯®ª©¿¾º¯©¹¿¶®²¬§°´³°·»±¶³´²¨°µ·»¹¶³²°¹ÀÀ¾»º¸µº¼½Ã¾»ÀÃÅÃÁ½ÃÇËÊÅÄÂÆÍÄÅÊİ©¦°¸»»¾ÃÃÅÆÉÊÉÉÊÍÉÉÊËÊÊÊÈÈÅÄÄÄÄÁÇÈÌÉËÏÑÑÓÓÔÓ˪~¬ÄÐØÛÙÌÄ·¿¼¼µÀÉÎÔÕÖÑÒÓÑÐÐÌÈÉÌÎÌÈÅÈÇÊËËËÎÑÐÐÒÕØÚÚÛÝàáÜߺ>(1-*+,22,10263674772.+**--/4;1565432'##&4Rk~ ¤£ eebccccebdbccfcbdi`_cb^^dcnt}¢¤¥§¥¨¦¨«¬©§©§§¤¤¨ zvneYRIJMQMPVXVU^^]`geda`hegfechgcbifb`b[gellkgillknoosolnf_]j¶ãÖÏ»±vlwtgc^[ee^hllhlyqccovodbhuzvuqv{zywy{~ |sqwyxwtlfks¢¡¤¤©¥©¯®°²ª®¬°³¯±°²»µ²§©µ·³¯©©¬¶·°°¾¼¶®«¥ µÀ¾¾·¸³¯²²¼ÀÁ½»µ¹¹¹Áÿ¼»½ÂÁ½¹¾ÅËÉÈÈÆÇÉÉÉõ¦¶½Ã¾¼¿¾ÃÅÃÊËÇÅÊÈÇËÍÈÊÈÉÇÆÈÅÆÄÄ¿ÃÅÇÉÇËÎÏÏÎÏÑѾ µÀÍØÛÓÏÆ·ºÁ¿±ºÃÈÐÔÕÓÓÒÑÐÐÏËÈÈÍÏËÊÈÆÇËÌÌÇÌÎÒÓÒÕ×רØÝÜßàÝÞ®4).*0-343,.2.6428620-//(.-*.521456862'#$*;_s¡£ ¤ ¡ eei_b`_iigbcbefcb`bac`Zcbgouz¢¢¦¤§¨©¬§¨§¥©¨§¢ yuqgYOPIHOQRVXS]][bedhlfgecfeffi`^jkeh_d_fdchjfmnhqoolpnkhgb_i¯Þ×ɺy{vmie\cffjkhlpjh``nne_ensvuttxwwwt{{z|}}xpq||tslllq £©¢®®¨ª±¬¬±²±¸¸«¦¨³¯ª§µ»°¯°µ¸¬±Á½®¡¢«²¹¿¾··º´³¹¸·¾¾Àº»»¹ºÁ¾½¿º¾ÁÀ¹ÀÅÉÆÊÌÈÉÆÇÆµ¤³¹Áþ¾ÀÁÃÆÇÄÈÆÈÇÇÄÊËÇÈÈÇÅÊÆÇÆÅÅÃÁÅÄÄÉÄÈËÌÏÎÍÖ˧·ÃÍÑÙØÐǹ´½Â·®¹ÆÆÐÓÔÔÒÒÑÏÐÌÉÈÊÌËÊÈÆÈÈËËËÊËÎÏÑÕÔ×ÖØØÚÝÜâÝÞÙ*&))/6.9<1/0.40/2046.&*),*+-21/74/3(*-&&-@Qo £¡ £¡ bbhbfcedeaaaacb`h`bbcbacchnw} §¤¦§¥ªª¨«¨ªª§ª¨« |spcZMPLORNVVYX\[]]a_ddfeafeeggcabgdic`gbggjbgfknjjmtlkigfb^_oÁÝÑÀ²}vtoahh_blfioiebdhg_Zduvswtwyvpmw|~{zvomr|~uxqqiisª¤¢¬²«©«²µ±²º§ª¨¡®¬§£¬¾¿»±«·µ©²³¢¦³¶µ°¯·¼ºµ¼¶²·¶´¯°¸ÂÀ»¸³°µ¿Á¾¼½¾Ã¾ÀÉÉÉËÌÊż³¨¤«±´»½¼ºÂÇÇÄÇÇÆÅÅÅÆÅÃÄÈÈÄÆÈÇÆÅÉÅÈÅÅÁÀÂÀÉÃÃÄÇÍÏËÔι¬ÁÈÔÛÕÒ˾·¸Å«²ÀÈÌÑÕÓÒÑÎÏÎÏÌÊÇÊÊÊÈÇÈËÉÈËËÌÊÎÑÑÒÔØØ×ÙÚÛÝÝÞÛÞÕ.).)+-43/010,-06/6:211.0-0%,136530/3-*-38Jay¤¢¡ cc``ihggecdgbdbbhe_cab`ghmqy~¥¦¤¥ª©ª°©«ª©ª¬©|vmaXMMOJQQUTU[bZa`\cc]_celeehief_ghcdae_dbeckliikllnlnnjib^a×ÛÍÅ xxxmdmbbjiejgeZdthYYjnsnprzunbemx} }sjjtyvvstsviv¢ ¥¢ vz¢¤¤§¦««°²¸³°¦«¯¦¤¡¬°®±Ãüµ¬«²©¢¯³²¶¸²¬«°¼½º³¶³´µ°§ªµ¼¼¶´¬¬³¼ÁÁÂÁÂÿÅÉËÉÉŹ£¯¼½»¾¿¾¿»½ÁÄÂÃÅÆÁÃÃÄÃÂ½ÈÆÅÄÅÄÅÈÆÄÇÂÞºÂÄÄÂÁÆËÍËÐÐûÁÌÔ×ÒÍÀ³®ÁÈ»´¼ÆÍÏÓÒÔÑÐÏÍÍÍÉÈÊÉÇÉÇÅÉÌÌËÌËËÌÌÎÑÒÔÔ×ÔÖÙÚÛÞÝÞÜÞÎi')+&)143-7:-/21-27-21(-*.+,,04.5-5011//:I_r ¡ ¡ ¢ ¢ aafc^gaecff^eagbga_]_f\dkmnw£¦§¦¦¬¨ª©ª«¬««ª¦¢ ulb_OJNLMLRUY[bY\]_c^gbbagkcddcgcfebebbcedhciigllkjijjonb``dÙÙÑÃ~ujkjglfengb^fgh_\hrf_gttpgZer{yvwx{yslkv{rrtptr{ª¤~~¥ª¥§¯¯µ¶³·¦¥¤©¥¥® ª¸¹´´À¿»¯§¢²¹¹³°³²±²§¯½À¸´±·³´¯±«³¾¼³¬«³¼ÁÄÇÆÅÀ»ÄÇÃÀ¶¥¤¯½À½ÄĽ¿¾¿¶¿½»¾ÄÁ½ÂÂÄÿÃÈľÁ¾ÄÄÄÅÅÄÄÀ¹½¾Ã¿¾¿ÂÆÈÍÑľÇÏØÐÉź¹·ÁÀ¯²¿ÇÎÔÒÓÐÐÍÏÌËËÉÆÇÇÉÈÊÈÊÌÌÍÌÍÊËÌÍÍÏÑÓÖÓÔ×ÙÚÛÛÝÞÞÝÇS,(/22C555450518008++4)))'(,.15543715566FRj~¡ ¡¡ ¡ ffdfcb`^c`c`fbd^fha_ca`gcpqv £¥¤§¦¨ª¬«®©ª¬§©§¢¡|tn`\KOLKIMZ\WYcV_afbhbaccaehd`gehhehg`ke_ehbhkmjjlmghlgj_YdgÙÖÍÃ¥zuhfgkmemlbdim`YZoqne_qqid_kv{yvtx|tqpfm{z{{wuupm¡¡ x~ ¦¡£¦¤±½´±¥¬¤¨¨¥¢¦¬¬¤¦«¾¼¯²¼¸°£¨³»·´«©ª¯±¯ª®º¿¶®«²³´³±¥§·¼¶±¯®²Â¿¾¹¬³´°°ª¨°µº½»½¿º·»µ³¶··¿Â¾½ÀÅÄÄÅż¹ÀÂÀ¾»ºÄÃÀÇÄÁÁ¾µ½ÁÀ¼ººÂÆÇÍȱ¬¾ÃÊÐ×Ôʽ³µÇǸ±¸ÅÉÔÔÓÒÏÎÎÌÈÊÆÈÊÈÈÇÇÈÇÉÊËÊËÎÍÉÊÍÍÍÐÑÓÒÔÔ×ÛÜàÝÞÞÞÞ¶B'(//2/382741271.0-/++(&)-51336638<57>?EL^v¡¡ ¢£¡¢ cce`hbde`cbaf_abefa^e^\fgmlx ¢¦¤§§©¨«««¬ª¬¬¬¥¢ sh`XOPNOKNTUYXaY`]`ef^d`acfggfbfdg^]afaebchehjnjnknijhii`^Xi¶ÝÓÊ·¯¢{}{jajojhlkinpocfhiifhnuplbpuzyv~~}ykoqsx~}zyxol| y ££§ ¦«¤²·ª¨¬©ª§§¦¦¨³µ¤¡¨½·®²«®²´°°¯ª¯°©±µ¬°µ»·¯§±¶½³ª¨¨¶»ºµ³º¾¾¶´µ®¡§¬¬²´¹¾¾Á¸»°±«¶µ³¶½º¿¿¾¼¿ÈÅÆÄÅ¿¶¸¿Â¿½¼º¿½ÃÁÀ¿¼µºº¾»¸¶ÀÃÃÉʼ ©»ÅÆÎÕÌÿÀÁÃÉ¿µ¹ÅÄËÓÔÔÐÎÍÌÍÊÄÇÆÇËÈÉÉÆÉÇÊÊÌÌÎËËÉÍÏÉÍÌÍÒÐÒÕØÝÜÝßÜÞÞÚ04//2323256:2,76,00)*)&)-44+135//68:BBCIWi~ ¡£¢¢¢ ¢ ffece``dacaaccdfejbd`_aggmsu~¤£¤¥¦©¬¬°¬¬¨²«¥ ~ul^_LNMOPWTZ\`Y[a`^ge`e`ddf_cefccec__fadfhidhhlglklgikdba]ZvÏÝÓʹy{maggkgbgnnpllolbbkjrophvwposwyolrpz~~}{vpnz¦§sy¡£«¯©©±®ª§§«© ¨£§µ¶·£ª¼¯£¦®°¹³¯®°®¯¬®´²±ª«¶·«©±À·µ®¨¸À»³¼¼¿¦©«µ²´³¸½¾¾¹¡²°µ³·½½¼º¿ÃÆÃ¾¿ÁÇÈÃÃÀ¾·¸¼¾¾¾Á»½Â¿¿¼¾·²¹¾¼¹»¿¾¿ÂÈÆ¶«ÅÈÊÌÏʼ¿»ÅÉžµ¾ÇÇÍÒÔÓÐÏÊÍÍÈÇÈÊÉÈÉÊÊÈÉÊÉËÌÌÌÍÌËËËÍÈÈÉÊÒÒÒÓ×ÛÛÜÝÞÞàÖ3-/-+0/6/:344347121-.&'1-43-2942989?:EFTds ¢ ¢¢ccg`ccagi`f``cbafeded`^eehqx} ¥¢¦©©©¨ª¯¬®««³¬«§¨qgc\RQGNPQWZle]X\_babe`bd`ebcfcdcfa`bf`ficchejfgjfinjjfaY]aÓÙÕÈæ¦rkncekc_fihgommfgksh`hqorqnpy{ypjks}x}}zpjh}x¤£¤««±¥¨£¦©¯®©¥§²·¸¬¥¬«²°¬µ´±±´´±´°ª®µ°¨ª´·±«±¹¹µ©¹Àº·¸½Âµ¤§³ºº¸·µ¼¼¶¶ª£«µÀ¾½¿Ä¿¼¼ÃÈÃÀÀ½ÂÅ¿¼¹µ·¸¿¿Á¿¾¹¿¼½º½¸³µ¿¾½º·½¼½ÆÉé«·ÈÕÒÑÈ¿µ®ÄÇÁ»¹ÃÊÌÎÏÒÑÒÏÍÌÍÌÉÉÇÈÌÉÉËÈÇÇÉÊÎÎÍÍÌËÉÊËÉÈÈÆÉÍÒÒÓÔØÙÝÞÞÝáßÑ~+',072657?54+6;963-22,*..21-,-3/.0>@@DIYn¡ ¢¢ ddgfdfccbdgcgegbfdacaf`bemquz¢¡§¤¦§«©ª®§ªª«®«ª¦£{soeZRJMQJNSTWbYZY[]`ddgfdcfcbcbcccb\d_ccfadiefgijjgfgeca[X\ÔÖÓÈ·µ¥ywvfejdcinhkkgegnvueenzqlhj{zqomz}y~}sjjt¡¤sx¤ ¯ ¨ª¨¯³²¬¨£´µ®¡¨²¸·¯§¥¯·±¯±²´¯§§°¶°¨©µ·±«ª¸¾º·»¾À½¾Áµ©ª®±²»»¼¼¼À½·»¶°°¶½¿¾¾ÂÅÁºÂÆÄ½Â¾¿ÀÁ»¸³³ººº¼º»¾µ¶¾¾¼·»µ²»Á»¹º¸»·¿ÆÇ»¦±ÁÈÔÓÓËÀ³¾¿¸°¿ÉÈÏÎÐÏÍÍÎÌÌÊÌÊÉÇÈÊÇÅÈÈÉÈËÊÌÍÌÏÎÍÌËÍÉÉÆÆÆËÑÓÒÔÒ×ÚÞàÜßßÞÏd $),1/11,525/3056/+)-*)3,41.2559@8>@DJ]j¢¡¡ ¡ aacafbdiigba^\cdaa``faaggmpz¡¢¥©ª¬«®ª¯«®¬©£ |tmh[TOIFKMOTTT[Z]\b^bbab_fef`de`badac`ffaccjegdifihhiefaWXc§ÛÜÑÆ´µ¦ytjodbjniokle`ckmkolrustroszwtnkx}{~|yrljvz{~££¦ ¨¦ ¥¦¡ «¯±·±±µª°®®¢¬³®±²µ¯¥¦¦®¸¶³±´¬°°®®¤©¹·±«¬½ÂÀÁ¿ÄÀ¸°«°¯´²®°²´¶¾À¾¿½À¹´¹½¼À¾¿Âû·ÃÁÀ¼º¶¹¼»¹³µ·¹º¼½º½¹±¹¾½µ¹·¯²¿¼··º¾¹½Áƽ¿ÇÍÏÐÉŹ¼¾ÄÁ¹½ÂÅÊÎÏÒÍÌÌÌÍÍËÉÈÉÊÊÈÊÃÄÄÇÈÇÉÌÍÍÍÍÌÉËËÏÆÃÂÃÄÎÓÒÔÓÓÔÜÝÞÜàáÞÂJ%#++)'1,',/26F6?8.13(')3/.,-0628A>DMIXkx ¢¢¢ ¢£¡dd`ececgg_da``d_lecbb^efhntv ª¦¬«ª¬ª¯¯³®¯¯«¨«£~uqaWRKMOLRNVX[Y\^`aX]ebgcgfaadacbc_^cef^]ebaabiflrgkgea^]Zk¾Ü×ÐÀ´·wplnbejrrmhnbcghlphprruu{ytrwrozvz}zztkifvxwvª´©¡¢¡¢§¡¡¯·¸·³¼¶ £¥«·±¶°©«±³¯§¦¥µ¹°®«²±¬©¨§¦°¸µ¯®²ÁÆÄº¸°«°¶¶¸¸´¶µ¶³±¹Á¼¿¼¿»º¸¸º»ÁÀ¾À»ººÁÀ¿¹°±¶¹µ··¹¶¹¹º¶»»³´»º°²´±¶·´¯º¹¹ºÀÇÅÊÎÍÇ·»ÇÃÀÀÈÇÇÊÏÒÎÍÊÈÌËÊËÊÊÇÅÉÈÅÇÃÅÉÉÉÊÈÉÎËÌÎËÉÍÌÉÃÂÀÆÇÎÐÐÑÐÒÔÛÜÞßàÞÛ¨3',%*0*+351++28215/4-'-(+73<2/;:<A<AIT[p} ¢¡¢¡ ccd^`bebhi\cg^e`ge`ccffcflus §¦ªªª©®«¯°®¯¯¬«¨¥xqsdVVNINLOPSWZ\[__^^`]c`ahkeiaeba]fb_bdbfc^bcajkifdffdba\\sÄàÔÏɶ§®r{{ohtnllficehfmmkpllntz}xwt|}v|}xli`o{wv ¦¯¥¥¤¨¨¥ª³µ¹´·ª¡£«µ¾±²§¥±ª©£®¸±©®°±¦¬««£ª³¶¶³¶¿¿¶°°¯´¸·¸¹¸³¹½¸´²°¸½¾¹¾À¿¹¹¼À¿½¼¿Á»¹½¿µ´°«²°³·»¸¸»º®¶¼¶²¹¸¶³³ª¨¨¯¸¶¯¹¸¹¿ÉÈÈÇźÂÁÃÄÂÁÅËÌÏÔÓÏÐËÌÉÈÉÆÊÊÉÈÇÉÉÇÅÇÆÇÈËÌÉÍÊÊËÌÌËÍÌŽ¾¿ÅÉÌÎÑÑÑÒ×ÛÜÜßÞÝÕ&##')))15.,,,714/-/+)*+*/503;055018>G[gv £ ¦¡¢ iic`ecadb^V^a^g_eadfegbeikovz¢¢¥§«¯««¬®²¯«ª«¨¦ {rr_[RRJGKSOTWYX_aZ]^c_]beac^cdba`dccbab_i_hbfckmjhiddfa[Z_vÎâÓËǬ´¼}|{m{tkmibgrcckniulpsvqpkr{zwyy~~yxmfr {x{¢££¦¤¨°²ª¥«³©¡¥¥¦£²»µ¶©©¥§±¯³´«¨£²°¯±¯¤«§¦£¨´¸º³¯·¸¶µµµµ³´·»½²°±±²¹¼¼¾ÅÁ»··¼¿¿¾¼¿ºµ±±¶»·¬¦°²°ºº¼¹¹³®¸·¶°¸¸±©¨¤¤§°²³¹ÃÂÌÍÉôªªºÇÉÃÂÃÃÉÎÒÓÓÑÏËËÅÂÄÉÉÈÈÈÇÈÈÆÆÇÇÃÆÊÊËÉÎËÈÌÊÌÎÍû·¼¾ÄÊËÎÒÑÐÔÔÝÛÚÝØÙÊh)'&$1*--3.-*443..+-)/'>0/078=63:.69OMit£¢ iig_^a_e`cccaaaaa```b_bekfpr|~¡¡©«¬¬¬¯°¬¬«°«¨§uocXQJGMJMLVZZVZ_bc]eec^]dc_dc_bcdebb^_g`eeaddlpkgjefka\X]{ÔÛÕÍ»³Â¸ wwvskpnjmghmjkgos|mgbirzxstyyxxrgp¨z§ «¨¬¬°³¦¥ §« ¤³²ª£¤°²¯ª¨©ª«¯±³³¨¨¦£³¸®°«°°©¦ª¬©©¹³¬¬®±¸À¼¹´´®±±¹º®©²¶´¸¹·¼Á¾º»µ¹¿À»¸¸´´°«²´²ª©²¸¸¹º·»«µ³¬²³«¤¡§¢£«»¿ÇÑÌþ¶®¥¨¹ÃÅÇÁÅÆÌÐÑÔÔÐÏÎÌȼ¿ÅÇÈÇÇÈÇÉÇÆÃÅÆÄÈËÈÈÉÎÍËËÍÌÏɹ·°´¹ÂÇÊÎÎÒÐÓÔ×ÚÚØØÙ¶A)$ &+./)+0-2,02605-'(.-++3:655+3'.;P\m| ¡ ¡¡ eeb`b_aifeae^_a`_`]`af`cdkqu{£ªªª«®°¯°¬±¬ª¨£¡ zsngYQNHJKQUTU]Xb[_a`cf^dcd`^bbbdbg^adc^\dfegeeignggcfhe\Z_~ÒÙÓȲÁµz|yrtqryggjmoagolmmaSfuvyqp|{xqrsjv~¢wz¢©°´´±¬¨ª±§§¶±µ³¨¡¤¡§´¯¦ª¯¬²¹³®¦¤©´²¬®«®®©©±®«¤ª¬°²¬²·¼¿¼ºº¸±®µ·´±«¯´¹º¸º¾Â¿½¹·¸»¼ºµ±¸¹·¯¨¤«¶¬²·¹··¹¹´¥±³¥§°¦£¦°ºÆÏÏ˾³«±´½¿ÆÅÆÄÄÈÎÏÐÐÐÐÎÌÌÈÀ¾ÄÈÇÉÈÅÇÈÉÇÃÃÅÉÇÊÊÌÊÉÊÌÍÌÎÏ̾¯´«¬¸¿ÈÁÍÍÏÎÎÓ×ÙÚØ×Ö5.#%*--)5--;3/67:613+0.,.+84<74.)&3;Jav ¡¡££ ¡¢¢¡ ¢¥ ¡ __b]^bbe_db`a`c``cafaea[cjqqw ¢¨§«¬¯¬«¬««®°®«ª§¦¢uqb[UNMLQRTUW^\_[`__`bddbc`b`dfbf_f_cdgbbccggheffjjicc`[Y[ ÕÜÏÄÁ»³ts~woutggmogeoomec_gnru qs{~wstmhr ¤wor ¡°·´¬§©©«¡°¶±±³¯±ª°¯««¯«¯¸´¸¤§©³´°«¯¨ª§¨¬¦¨¥¬³³³³·¶ººµ±²´´¶º¼²°¹··»¾¿ÀÀ¼»·³²¶¶³··¹·°©¤±²¬¦°ºµµ·µ²£¦³©¥¥ª»ÄÊÎÇ¿º¦¡±¾Ä¼ÄÇÆÈÇËÍÐÍÏÏÍÎÎËÄÁÀÆÆÆÈÈÊÉÅÇÉÅÄÇÅÇÈËËÌÌËÍÌÍÍÏξ¯¨©¥¨³ºÀ¿ËÏÍÍËÑÕÛÚÕÙÌm3."&+('*(*//2033?H7,)+1.26:1>27**$0?Vp¢¡ ¢ ¤¡¢¡¡¢ ¢¡cc^_bb_g^mic`a_ab`e`Zaaabehs} £¥¦¦¬ª°ª¬®«§¢¤xtbYOKNILONSV[[b_b`__cdcaed`babgcab_d_eabdbdgiecgekdegc^[`ßÙÎȱ²± sy zumifdhhfhwpijmrqjrw}svplipngxtlu¡¥ ³³´§¡§£¬²´³¯±±«©ª£¬µ³®ª®±±²·´§¯ª¯²¬¯«¨«¡¥®¯¦®´¸´´²³¦¤±´·¸º¸¶³¬¶º»½À½¿¾¼´´«°±·¶³¸¹·²¯§·£²¸¶³¸´«¤®§¡¡´¿ÌÎ͹µ«©¸¸ÄÄÄÆÄÉËÑÐÌÍÏÌËËÍÈÅÄÂÃÆÈÇÈÇÈÇÈÇÆÈÈÇÇÊËËÊÉÍÍÈÌËÏÒÆ¶¥£¥§¤ª³ºÁÌÑËÈÊÑÓÚ×ÔØº=-))%)*-.,/+3321:A92%*.7,2356=730)(5Gax ¢¢ ¥ ¢ ¡__bcge`c[a]``a[fd^fc]_^edfpty£¦©«ªª««¯¬®««©ª¦¤£}ysa\ULKLPSVX[W\^^[^`adbdaehd`^afdbca`cc]ccafhgfigkkfic`^W_àÛÒʲ¿¹ ¨¢ z zhjrddkihllelttlepsd`efnwylqv ª±¯¦³¯°·´°¯«¤¦¨££²²°¯§«±µµ³«¥¤¤£«°²¨ ¡¬¬¬±²·¶¦¡ª¯¯±°±·»»·¸µ«±»»¿¼¼»»¸³°®¯¬°³³²´µ¼·«¥±¸§¢·´²²®©¢ ²ÁÉÎÐľµ«®¼¾ººÂÃÄÇËÐÎÏÎÊÌÌËÊËÇÅÅÄÄÃÆÆÇÅÈÇÇÈÂÆÉÇÉÊÈÊÎËÊËÊÎÍÊÎÊ·¢¥ §²ºÄÌÅÀ¿ÄÍÓÕÒÔÒ*--$).++,.0800+/60-42*--1-1021440/->Rm ¢¤¡£¡£ ¢¢¡¢ ¢ ¡__fecg^b_adbbbade_habb_aehru{}£¥¦§ª¯¬®¬¬¯¬«¯¬²¬©«¢|urd[USQNPSU_\[]^]_Zc\ffgefdbe_`ebdga`febeabggggejhhbecb^Y^ÙÛÑ·¼³ª·¥~vhpninnhccbeutrknw~rlfbddp rm|§¤¨¬¨ª¦°ªª¬¬±¥¥««¤§¦¡¦³¶±®¬««°²°ª ¥±³¯¥¤¥¥¦°²°¤ª«¢£§¶¸²°°»»½¹»±¯°¸º¼¹··±´µ¯¯²²³¶²²¶¾·¹«¤¸««±²®©¦ ¥¹ÈÐÎÉ¿´²¯¼ÃÿÂÂÃÆÉÍËÏÌËÊÊÈÇÈÉÅÆÄÆÅÅÇÆÉÈÊÇÆÇÅÈÇÈÊÇÉÈÉÌÍÍÌÍÏÊÌͽ© ¥¯¼ÉÁ¬´»¼ÉÑÑÏÕÅ](%))3)0-+3-/51,/1.0*+,1..-1*213792>Hcv ¢£¢¥¡¢ ¡ ¡¢ bb_`aa`dd_cj_``a`]f_]caajhms¢¥¡¬«¬««¬¯®¯¬¬®¦£slaTXNQKNQWYY_^aba_bcabhef`gfa`c`ecbb`bcaebbdbibafghdcaXZY ÚÙ̵ö¤²®¨°ª zunqtmqnaSUhnrgglw}xvqhiffr qsuu¡¨¢§¦¡±®®«§¦¤¦£¬©©¨¦§£¤§µ³ª§¡©§¢¦£¢£¡¥®¬¨®©¨«¢¦ ª±§ª´³²°³»¼º»µ¶³µ·¸´°±°´¯¨¯¶¹¶¹º¶·´±°°±«¥¡¡µÃÍÑÏ¿µ·°¹Â»ÅÃÂÇÊÉÎÉËÌÉÊÇÈÃÆÂÆÃÃÄÆÅÅÆÆÊÈÈÈÆÇÅÆËÉÊÊÆÉËÌËÏÍÐÊÉÏdz§¦¥´¾ºª´ÀÉÍÎÓÔ¢=',)(;2766-,50745:.-+*&*1-.-+039:IAEWq¤¡¢¢ £¡¡ ¥ ¢ ¡ ¡``b_b]_e[a\\__ab]cba]a^`ghov|¢¤ª¬«¬°ª«§¨«««¨¦vn_VQONMMRTYX_\_`c[`adbckcdd^`edcccaace`bgdbefhffhfcgfdWY\ÞØÇŸ¬¬± ©}qyutnaWS]rmlbjwxwwuwmg^s| ¡qhnwy¡ §£¢ «²¯²¯¨£¤¢¤¥ª®©§«¨©«£©«²¦¥©ª§¡§¢¨¬®¯®¤¡¡ª®®²«¬ª§±³¬¶º¸»¼·µ«®´±³¯°®°°¬¤§¬¸µ´±²²®´®£¨¢§¤¬´ÈÎÊﲍ´ÀÂÁ½ÀÂÁÌÏÎÌËÇÊÉÈÆÃÁ»¿ÁÀ¿ÃÃÆÆÃÂÅÈÆÆÇÈÈÄÅÉËÊËÇËÌËÊÏÍÏÈËÏ»® ¥°¾¹¨²¾ÃÈÏÕÏs,,'+,1@8/.6/15>102+0))/.3/)')-3BKPOThy ¢¢¡¢ ¡¢ ^^b]\_dfa\^a_`^d_b\^\aebgfix~¢§ªª«¨ª«©¬°¬¨©«®§§£ujfZPTKNMSQYXa_]_^]bdbda__add_cc`dafac`bciebbdgeidggaf]_\]ÝÚÊì´©}}ypi[Xaha^ges|wsnusd`w unoq ¥¦¨¤«²²®«ª¡£¤¤¤¦«ª¨¨¥©£ ¥¬®«¢¡¥§®¨¤«¨¡©«¨¨ £¬¬¯«®¬°°²©¯µ¹¼¹¹·°±°±³®®¯®«££¯±µ¹µ®®¦¥£ ©¸ÁÆÎÁ¸³µ¶¹½»ÁÃÃÆÉÍÑÍÍÅÉÅÄÊÆÅÀ¾º¿Á½ÃÁÃÄÀÂÇÈÇÅÅÉÇÄÆÇÈÊÉÇÉÎÌÈÏÎÏÌÉÑÆ©¤ ©±¼·~¥¶ºÅÃÎÖ¹?-2-#&<7D-2.2/600.0'2()/16,,1.2:?FNNgt ¡£¡¢¡ ¡ £ eece``]iY\b^d_a]^`d``eh_ceju} ¢¥¦ª®ªª©ª¬©¬¦¦¦¢¤¡ul`XYNPNNKOXT]_``d`hhicf_^eceebbebbdaaeacdedggcikc_dcc]ZT[ßÕÆ³¿Ä°¤¦¢¡ {xhfdel_WPaptpmqoqgkt nrx| ¦ª«ªª©©¦«£¢¡¤«¬©¨±ªªª ¢§®´¢¢§§§§§¬ª ¤¢¦¦¤ª©±°¯°°¥®ª¥¬ººº´³²®ª§°°¯®®¦¬¥¦¢«·¸·²¬¥ª¥¨´ÀÈÈﱍ®¿¿ÂÀ¾ÃÂÄÍÏÏÌÉËÆÇÄÃÄÂÀÁ½¿Â½¾ÂÀÄÃÄÅÈÉÈÇÈÊËÈÆÆÊÉÈÈÉÏÎÊÏÎÏÉÍг£ ¨«²¼¾}§¸ºÀÅÑÓ/&&/'&).=31J:411,-++*,2/16*+1.9=LTU_p} ¡¢ ¡ ¡¡¡¢ aa]da\`\\_`[[]``ac^\beafahow£§ª«¬¨¨«©©ª©¬§ª«©¤£ulcWVKLMMLUWZ]_[[c__al`dcbc_bbdbcae`b]aacbcchaccihac_d_WV_¦ßϺ»½¸´®¤²µ§~wpjhdia]T_jtpinpj_dv mvupz ¬£¡§«¦¡¥¤§©¦¦¦ ¨©©§¤¬¤£ ¡¸°¦ ¤¦¨«¬¬ ¦¥¤¬¥¤«¨³°©³°¥²¦¢±¹¸º³¯®¥¥¨®«¯°®£ª§¯µ°«¡¢ªºÂÎɹ¶°´»µ´¿ÅÇÇÍËÌÎËËÈÈËÇĽº½ÂÀÅ¿¾½ÀÀÅÆÄÄÆÉÉÉÈÈÌÈÊÈÈÍÈÈÉÍÐÏÎÌÏÎÌÐǤ£©²¹¾{{¡¶¹ÇÍØÈY$%'$%(()3//I@:5-,*'(3,253.+.227AJOZl|¢¢£ ¡ ¡¡ ¡ ¡ bba^ZZ_\]^W_[]aZW^b][_bbddpx¢¢«¨¨©«©««¬§©ª«¨©¦¤ }vjf[XMKMRNQQV\Z]^c^c_d`aebdba^j_]becca_a``ffgheehf`da_\UXe«ÛÉÃù©°¬¬y}vmckgcZ]^qghkilk[Yuzbw~{ z¢¢ ¡¨®¦¦ ¥©±¢¢ª«¥¥¦¥¤ ¡¡®±ª¡££¥©¦¨ª©«§©¯®¨§¦¨³´®£°«¦©¸¸µ²¯¬ª§§¨¬°¬¬ ¢ª¦©´¬ª¦ ¡§¶ÂÇÊdz¤±´¾¿º³¿ÂÄÍÒÒÎËËÈÈÇÆÅú·½ÀÂþ»ÂÄÃÃÅÄÈÈÈÈÊÇÈÈÉÉÉÌÈÈËÍÐÎÏÍÐËÐϱ¡¥¤¯·º}¡©®²·ÄÒÚ¹<%*%)&+)+418F740,-&+*./6405-,,5??ES`q¢ ¡¢¥¢ ¡ ¤ \\dh_Y^^_`_ab_````___g^`ejry¡£¨¨¨©®¬««©®¬®©ª§¤ umb^PIMOMMSU\\]_]d`_acgdhdeea^\_bbc_ecf^bdcffcdjb_ab_^YYVaµáÌÈ¿¤µ¸ª¨¡¡yikkfbcljmmhrkf]an{vjustvw «¦§¦ ¡¥«°³©¡¡ ¨¢ ¡¥¦ ¤¢ ©°ª¦§« ¤¦¨¥¦¨««¥¤³±¨©¦¡¨®©«¤®µ°¯§¨¦¦¥¶¯¤£²£ª¦¦¢ª¯½ÆÌ¿°«¢¦¸¼¶¹ÃÆÄÉÐÐÏÌÍËÊÈÇÂÁ¿Á¿¿ÂÂÃÁ¿¿Á¾ÄÄÄÆÄÇÉÉÊÉÉÈÆÆËÉËÈÈÉËËÏÏÏÏÎÌÐÀ¢£©¯´º~§³³¶ÇÖ×-##')'&*.2142/6/3.)+0/:0/22,-/=CGHYl|¡ ¢£¡ ¡¡¤¡¡ __mi`_f_\]ac`a][_\b^^Zaebksv £¦§¨«©¬¬¬¬¯¨«©©¤ umeZUMMIQTSX\_`\`c_ebad^a^bea]_`_caab`beddbigd]a_f`c[ZXTPhÇÝÌ«º¹³¢¤©y sjtsd`lillmnlflgtyy}mw}u|u££¦¤¨ ²´± ££¥ª¥ª¦ ¯¯¤ ¤±®¥¢¡§¦ ©¨ª©²¬¤«¡¡§°«¥¨ªª¨§±§¢¥¨¬«¦¡¨¢¡¢®ºÁÉÆ·ª¨°»¸ººÄÇÇÉÌÎÎÎÉÊÇÅÄÂÀÁ¾¿ÃÁÁÁÁÀÂÀÀÁÇÄÆÇÇÈÇÆËÉÉÇÇÊÉÊÌÌÌËÌÎÏÐÏÒÓÐϨ¢©²¹·©¬«®®ºÍÛÏm&&%*(.()0/2.25//%,%*-.584/--057DQNbz¢¢¡ ¡¢aa_dc[\][``aa[][`]`bf^``amuv ¤¦©«¯¬ª¬ªª«ªªª«ª¢vle\XOLMPSRUU]]\cd[acccbdbe_b``fe_`b`bggjjcdfcbj_da^][Y[UsÒÛÆ¶±½¶ ª´¬© y{|tvqwmknfigsne]t ~}`t{ |£ª £¡ ¦¥§§ ¤ ¥¨«««¢£ª®¦¨¬¦¦¡©©£¢¯«¡¯°ª§£¦ª®§ ¢¡¥«®ª«¨£ §«ª¡¤¥°ÁÇžµ¥«¸···ÀÄÅÉÌËÊÍÈÈÆÄÄÄÂÂÀ¾¾ÁÂÁÂÂÂÁÆÃÂÃÆÇÈÈÈÍÅÉÉÊÇÉÉÉÌÉÈËÍÍÎÎÐÒÏÒÏÓÀ¦±µ´ £§¨§¥¬¸ÄÕݵ=&%-&*)/)205-035E)&+.+-355/,+54CFE`o¡¡¢¢§ ¡]]^ab]]__]]^Ze^]\Y[`\]acdhmu¡¢¦¥©¬«¨¨®§©¬«¬©«ªª©ykbaXSLLTRU[\X\\]`gac\c_c^c`e^bc`cedaadegg_aecafec`^\]YSS|ÏÕÁÀ½³±¹¸¡¤y|svtnncghgd``} ki{w v ¡¡¥¢¢§£¢ §¦¥¦§«©© ¨¬³¦¡¤ª©©¤¥©±¥¤³¨¤¡©¦ ¢¡¬¨§¢¥¤«²ÁÊô¬«®º¼«µÃÃÃÈËÍÈÉÈÇÅÃÅÁ¾À¿Ã¼»¿ÂÂÀÃÅÃÃÄÅÄÆÅÈÆÇÊÊÊÌÊÌÇÊÉËÌËÌÊÍËÏÑÒÑÑÒÏÌ£¨´¯£©¨ª§¨¿ÐÙ×.((-1+4+1/..84.);A))*.272/44/1<AGJ`x¢ ¡``]hh[[][]]ab`c]a\`^[`dbjnr{¡ £¨©¦©ª«¬¥««ª¨ª¬¢¤wmfZTQHKUPSY[\`[cd`ccbce`abe^aegb_h__abb_dba`_cdeef_ZZUQVyÒÎÂËÄ®¶ÂÀª¬£© zuzrlhojd_cw|winuvzy u}|££ ª¨ ££¢¥¥©§¦©©ª¡£¡£±¬¡¥¦©¨ª§¢¡ ¢¯¢«¤¡ªª¡¢ª£ ¢©¨£ ¢£¤ ®µ¿Ãɾ¦«·´´¹¾ÄÈÁÄÈÅÅÂÅÂÃÀ»¹´º¾Ã¿½¿¾ÂÁÃÄÅÂÃÃÁÅÆÈÈÆËÉÊÍÌÍËÊÉÊËÊËËËÎÐÐÏÐÑÐÐε§²±¥©¬¥¬É×ÞÉ`+*'%*17(210/4+/),/48044:80,1/5G;FSl ¢¡¡ cca`dc_bWZ^^^\a`][__\aibknu~ ¢¦¨¨©©¯ª¨«¯¬©©¨¢£xog]OQHFNPVYXWZZ^b_ag_db^``cacc_a_^_^\aa`cbad]`bcg\aY\TQTÝËÉȶ¹¼À®«©©¦¤zx{omljk`Zbo{qmq{zu{ ~o} ¢¢ª¨¡¤£©¨¨¨¢¤¤¡ §¢¤¡¡¨¨¢¦©¥¬§¢©¦¡¨¬¦£¥¦¥¨£ ±ºÂǾ³ª±´°«®½ÆÇÉÊÉÅÅÁ¿¾¾½··³´¶¹½¿À½ÀÂÇÄÁÇÆÃÃÆÄÅÉÉÊÊÌËÉÊËËËÈÉÉËÉÊÍÌÏÑÑÓÐÔÐÎÃ¥±¦«§ £ºÎÚß®8*'$+(*0.225/-3>4()2F46:373/23CDEOez £__a`face``__h__`b^e_cdcciqsy¥§©¬¬¬®¯¬¬«¬«ª¦¤£ |tmcSMKFULSXZYZ]\a`^`fa``_`bi^^dbcbbabce^cdbccdifd\^Y[TRX àÔʾÀË𤾰§¤}}|xjhmja[[zv~|yjryxuxlsz ¡¨ª¦¥~{£¥«¡¦¢¤£¤©¢©¤©¨¥«¥¨¬§£ª¬¤«¦¢¡¢®·ºÈÇ·©©°»¼®º¾ÂÊÌÍÉÇÆ½Á¾¹¹¹µ´··¸¹ºÀÁÃÂÃÅÀÁÅÅÂÇÆÇÈÈËÊËËÌÊÌÊÊÊÉÈÊÌÉËËÍÐÒÑÑÏ×ÑΪ¨±¨¡¨£¢yt~²Ä×ÝÔ}(#)),+0-574332/:9.33ED=64=-87-1;IUm ¡ ^^]]b]caed_]]]b^baa^ecfcfmvy~ ¡£¨§§¬©ª¬°¬®¯«ª¤¡£|qbcUKJLQJRTTX\a]_[\^f`_^aa\^]]__`gdecdbbb[]bcg]c`][]WROUÙÓÊÄÐ˸¯¾È®±²§¨ukkkbYYk yz~{nv~wz x|wy}¥¡ ¡|{u|phXY^oª©¤§¤£¥¢¤££¤¢¡£¥«¤¡¤« £¢¤¥¢¤«¢¢¤¹Á¾ÄÀ³¤¢²°ºÀÁ¼ºÊÌÍËÆÃ¿»»»ºµ¹¸ºº¼¿¾ÀÁÀÂÀÃÅ¿ÂÅÇÅÆÇÆÉËËËÌÊÊÌÌÉÍËÉÉÊÊÏÌÍÍÒÑÐÓÓÔÕÇ¥°¦£¦ lglpx¨¿ÐÜßÃQ%$$))+1+186823=5:.463BD8:1/146/>Iaq ¡ ^^``b^bbc_e_`^^^bbbahglknnzx ¡ ¤¨««¬°ª©«®¬«¬ª©§§££k]ZQJILIMMQT\\b\b\`[`da``c`b\^eadcbca`hbca_a`^ea_\^^TPORØÎËÐͽ±Áꨶ® wlc[Udx zzqhuywyx ~¡zu¢¨¥ ~zskaKF©¥¢¦¡ ¢ ¤£ ¤¡¦£¦¢¡¤ ¤¨¡¢¤¦©»ÃÌ¿´°®¬®¶ÄÅĺÀÉÌÊÉĺ¾»º»»½»¾¹¼½¾ÄÅÀÃÂÃÂÅÂÆÇÈÆÇÅÇËËÉËÉËÈÉÊÊËÌËÇËÍÌÌÍÐÑÐÑÒÑÔÏ«¥¬wneT`lu~°ÆÖßÛ©6#()#%-.156;>0-17/2-.9HA4812-16>@Xj~¡¡¢ bb`bb_cec_a``^_`acgbdfkgiqs{ ££¥ª«««ª¬¯ª©ª¬«©§¥¡vm]\QPJHGLXVZYZ[_dd_a`ffc^__Z_^d`da`\^a`e`ebdbbaa_`\VUOMX¢ßÑÔι·ÅËá°±«©¦ ¤©qbY]r| x|fm~~w zvx £tlejinruvy{jY;}¢¡¤¢¡¡¤¤ ¦¤¨¢£¢£§¤¤¢©§¡¦²¼ÁÊĪ«°¿Ã¼ÆÊÃÄÃÈÇÅÀ»À½¾»¿¿À¾¼¿ÁÁÁÂÁÅÅÅÂÆÃÇÅÅÆÉÊËÈÉÈÉÍÍËÌÈÌÌÎÊÉÍÍÍËÐÏÕÒÒÒÓÑÀ¥¬w^^gd_]n¤»ÕÛÞÒx**!"$&--6.4,0/3..0+-0<=<424AF7;@Ca| £ ¢ ff_cbb^``]b^dd_`d`bdelkilnsy £¨©©¨¬¬ª¬««ª¨¬«¨ª¦£xnb[UNHIHRMSVXZbXfdbb_`aba`^[]\cac`d_ac]abbghcdja``\VTTNTÞÚÕþÉɾ©«¿³½«¨¨£}g`dgx~|}zhhv~smn~ |zqc\ckinhg[Y][ipvqw£{hOo ¢ £¢¢ £§¦£ ¤£¥¢£ayª¨¦¤²ÁÅÀ¸²«¢°¯¹ÁþÁÈÊÇÄÃÇÅÁ¾¼¸º¿½ÀÀ¿½¿ÀÁÀÃÄÄÆÅÆÅÇÆÉÆÅÇÆÈÌÈÆËÍËÌÉÌËÌÌËÉÉÊÎÌÍÏÑÓÓÔÒÑÉ££¨|fQORV]]e¯ÊÚÝÞºC& !#%,,,-+06).5-.-+47;7227343<KUm¢ ¡ bb]adcbc\]bbddda`eccjighlmu{~¡¡ª®®ª¬««¯°¬¬©®ªª«¢xk\\SKDIJPQUTYXYZb`ec_]a_^]^`_ee^_a_efcbb_bbbbcb_]`\ZTLKOÚÙÈÃÑÓį¼Â»¢¥´ £ª ¢£pcuopx|~}x}cgy|w{s{{z|kSdwy}}umlnaU]^dj_r¢£~f\m ¢ ¨©£§¢¨¤xkcR7>z©·ÁÈ¿ª¨ªª»ÀÄÅÇÅÈÉÈÆÄÆÆÃÁ¾½½½½ÁÁ¿ÃÀüÁÄÃÄÅÇÆÇÈÆËÉÆÆÉÊÈËÉÌÍÌÍËÉËÌÍÌËËÍÐÍÏÐÒÔÔÕÒ̯¢§¤eVQQPTcbco±ÇÕÝÝØ)##"#%$-+.2153+('..0619942-180;7H^w ¡ ¡ ``ee`bde^cdbc^cbbbecfgikjput~¥©¨ª¦«¬¬¬¬ª®¨§ª¤{ncZWRHDHHNVXX^Zabf`d^aaea`ae`d`]ga^^ba`_cbdae]`[b]_^XPPQÛÑËÒÒ÷ÆÐ¾¤²ª ¢ª¢ zxwxv~w{{~y z]i~zr}vx{~xu\[_wvtuvm`eWNbocV¦¤§££qfb`_hp{¡¬ vli ¡¢v~vU48N ¬»ÂƱ¦¤°¤¤ºÄÂÊÐÌÉÌÊÄÁÀÂÆÃÁÀÂÁ½À¿ÂÂÀ½ÂÄÂÂÄÅÄÊÉÆÇÇÈÈÉÉÇÈÊÉÊÉÎÌËÊÈÊÌÌÊËËÊÌÏÎÐÒÓÔÖ×Ò´¢«uWOJVSZW`kp|²ÂÐÙÚÝÂ[&'%'$%(-,43+.02*--+380663/2116<?Og ¡¡£ ccdabaac^^`dcb_bhcagdjigkqvz¥ª«©¬®®««¯¬ª¨¦£¡yqcYOOEDGNOXZXZYab]eaac_e_fbi`c_cfffdac^achbed`__`_^[SNLTÞÓØÔôÁÓÉ©°±«¬¨mr{|wp}zx~y~bllw}~ pmp~ |zx[Xo xwxvqrlQIKON£©¨¦¥¤¤~rptrk_Z`o¦¨¢¦§£ ggwq¥dokG-3Y¶Ãƶ°ª¤¦¦³ÂÀ½ËÑÌÊÆÆÄ¿¿ÀÂÂÂÂÁÃÀÁÁ¾½½ÀÂÃÂÀÃÄÇÉÇÇÊÉÉÈÉÉËÆÍÍÊÌÌÍÊÊËËËÊËÊÍÌËÍÐÑÒÔÔÖÔ»¦¤¥ y_NKPVVaZ_hqy¦¾ÐÕÜÛÔ/!!&!*&'0+7-.71-,4+.0226=>=0678@L]r¤ ¡ccbaa`afac`_^aebg`^bddcikot}¢¥ª®««¯¯±¬««©¯©¨¦¤{ndZPJCKNNURRVWY\]a`bga`]`ee^d^d`ebdbfebfcbcbb_dac[XWTMOPÙÛÚÈ·ÉÒË´·Á¼¯««¥£ wvqwuwynx|} qeyvvt {sn~} y~kgv|}{xwhmhoe[QM8T¬«¥¨¦¨£ywnr|u}shcXix«~nfg[CPbZ?Ao}q`2"/{¤ ±ÃÅ´£¢¢ª¶¾½¹¼ÅÈÅÇÉÆ¿ÁÁÀÄÃÂÂÀÂÄÂÅ¿¼¿ÃÃÃÅÂÅÆÉÆÇÈÉÇÈÉÉËÇÈÍËÈÍÎÎËÊËÊËÊÊÊÊÍÌÎÐÑÖÓÒ̽«lVKSXV[Yi_amv´ÆÓÙÚÜ®B' '&.<*,-1/-.32-**'-656=783.-59JUh{ ¤ ¤ ¡ ¢¡ ccda`acccfd`^bbbgcacbiejtnw|¤¤¨©¬¬¬ª¬±¯®¬®ª«§ xqcZPLEEOKQORT]Zaa^^g^\_cbdced`beef__hce`afedbae]`YZVVMQQÖÝÌÃÍÒÆ»²ÉƵ¢±¹¤¥ywos|ytros{zikl{xt~vpu}x~ }zq~xqpnjlg\]XUXZaK:E}¦«¤£¡r shSEAEQ\ogbrgV`a_WX208AE23S^F*!,Y°ºÆ½¨¡ ´µ½Å¿ÀÀÅÄÅÇÅÁ¾ÂÂÂÆÅÂÅÃÃÁÂþÀÀÀÁÁÄÅÅÅÈÉÈÈÆÉÇÈÊÊÈÆÉÉÊÍÎÎÌÇÉÌÉÎÍËÌÍÍÎÐÔÔÎÁ¬¢hXYOLT[cV\^^fx ²ÁËÔÙÚÊh(,*$$).///4--.6-))*)+3363.4-/016Ecv¡¢ ¥¡ ¡ cccbf`a`b_el\bdjkfeighhirt}~¦¦¬ª±ª®¬°°©®ª««¬§£¦¢tmbVSKGIIOMSUV[b\Z\^]`bc^jegjc_^eilccebbcabeaccgca^XXVQRT}ÜÖÂÒÖʶ¿É˼¯¶¶³¤w¢¡²ompgj{tsqy q_fs~{ lr{ zvs~qfdefkbRIE=;?GC2?y£¦¨¢w| zztna_[SQVt`OEGRRQXCGCP;/,574(-@2&#+Gz¢µÇij¢ ¸ÃÂÊÉÅÆÄÄÅÇÇÁ¾¾¿Ä¿ÈÅÂÇÁ¿ÀÂÁÀÁ¾ÀÂÄÄÄÂÇÇÉÆÅÅÈÊÇÈÊÆÅÊÈÍÍÍÍÌËÍÎÉÌÌÍÊÎÎÏÑÑdz©qaSPVRTWX\W_den²ºÈÔÕ×Ï1&$ %%$230.35)-7+())(--5776/.,.4NWh~¡¢¡¡¡¢¥¥¡ ¡aagcdcfaa_dfb``be`hfgimppw{} £§¨ª®«««°¬®¯®±°¬«¥ |ngaTJNFDLOTSSZ_[e^_^Zc_afcecc^`d`e_aabcf`dacfd`a\][`UOPO~×ÔÐØÎºÂÍκ¸¼Å¶¥±§y~¦§tsflrox~xx~mYkowqx xoty~~ {l[xzj\YfkbmXOOSOID:>GGx|peVR`dS@<PQ^smQ?AL@=?=F69E4+*1../+&&'*)H¸Éǯ¦°¸»ÁÇÊÍÇÄÁÇÇÄÂþÀ¾ÁÂÅÄÃÆÀ¿ÀÀÁ½¾ÀÀÅÄÅÃÆÇÉÇÈÊÊÉÆÇÉÉÇÈÇËÎÎÌÊÉËÏÎÍÏÎÎËÎÒÍÆ²l][XSPWTWVY^Xamr¯¿ÃËÓÖ×¹P'()$-)0.15.3/+16),01/.84>21*),31Lbu¡ ¡ £ eefcccedebe`_g`edaihlgjijxw| ¡¦¬¬®®¬³®®®¬±¨ª¨¢ |of[RIKEKNPTPR\a^[_db^_ba`eccg``fgd``c\d_bbbfbac_]a^]ZURKoÃÛÚÑÀ¾Í͹±ÊÊ¿ª©¬¡z {p¨vimijnuq~v~wo\_tzxw vq~}~ {z|udwrh\acgneaXV^hkaTGWY_}{ ~oME>ICGD=9Lbyd6:AY@@724156,(..*+.'&##+Qwÿ®ª½ÂÁÂÆÆÇÉÃÂÂÉÄ¿ÁÂÀÂÄÅÅÆÃÁÁÀÁ¼¿ºÁÄÃÂÁÄÇÇÇÇÈÈÈÇÊÈÆÆÉÇÆÇÍÌÑÍÏÊÎÐÍÐÏÌÐËËÇ~le]ZZZXUVXWZ^X^Ycu«º¾ÃÏ×ÙÐ+,(+&)-1*/1111,,2&,5;53448-,,)'06Kn}¢¡ ¡ ¢ ¡ ¢cc^balggedbabb_bfbehklmqnut}¡¦«¬®ª«¬©¬ª¬®®¬¬©ª¥¦ zsfTRPNAKKRTPT_a^]`__d_da_kh`c]`hfib`abdd`aeebdd_db_^XURMc°ßÖÃÃÑ̾·ÌÙŰº£{l{vjenqmqtt{|l[aiwxw xv} vsxie{~pW`quvwcX\qtvyme`g^g ~gptz}gYWMLH;26;GQj|e>;:9_N@5-.+(.'%*-4+(',/7^¨Á±¥µÃÅÈÇÉÉÈÅÄÂÃÂÅÃÃÀÁÂÁÄÂÅÅÂÁÁľ»ÁÀÁÅÁÄÃÆÇÇÄÈÈÇÅÈÈËÆÈÉ¿ÂÉÐÏÌËÍËÍÍÏÍÐÏȾ¯{qb\R[T\`Z\RZXRZ`bfbq§´½ÂÊÐ×Ô¦D&e%-%--07-63732307*+..7971/..$'.>[w £¥¡¡¡¤ ¡ ¡ bbbgchehbfbbcgj\`jcbknkpmrx~¡¦¥ª«ª«°®ª®¬ª¬±¬©¦ zreYPKGCJOQTSVZZ`fZ]bgdfe`^a^ff`ccab`eagff_dcbelb`_`^VYTQ]¡àÎÊÔÎÀ¸ÍÔ̶ºÄ¬ kyvusnppnopyp[gnnru ku ~ypZl||rijttoftzykOIFUci\X^su\RLQfH7D85Akw_C9==8CYUG+,0(#$#%)GG'%2c]m·¾² ¢¹ÆÆËÊËÊÈÆÃÅÄÀ½ÂÄ¿½ÁÁÀÀÂÂÀÃÂÅž¾¼ÀÁÁÁÂÄÁÄÅÅÆÇÅÅÊÉÇÅÇÉýÄÊÓÍÌËÍÍÑÐÐÌɹnaYZUVV[^]YW]TX[Vbenpv´³¸ÀÅÌÕÔ³X,%1-/%),2055,934.,/+)-/943-++6%,7K]|¡¨£ ¡£¢¢¡ ^^eccdigjdbb`c_behdehkonmtw{¡¢¬«§«¯¬«©±©®¯ª¨¦£ }vcTOFGIKQPSWV]]\\c[^abb__a[cbacgei`cebaae_hhgcbda`[bYVQMXÎÓÖÒ½Ë×˹Èξ§¡tupx{t{ruxrqwlrsy~i`pxrrz umqz |}t`tx| }vfhvhahk~wwrU@SRId`OK^s|o[PTGUT00EAGllB/;HMLP<EU?80)*0&#&)$"$Iµ»¨ ·ÊÊÊÎÎÍÈÆÅÅÅÃÁ¾ÂÁÁÀÁ¾ÂÁÂÿÄÃÃÄ¿ÁÀÀÀ¾ÄÆÃÃÃÅÇÅÅÄÇÇÆÇÄÈÉÀÅÂÏÐÐÍÌÏÑÏÑÆ±v_ZYVZTSYXX\eV\]_]\dgp| ¬½¼ÂÊÊÊÇW-$)+(&*326373,/.35;5.*42=870.*%%,8Tj ££¤¢ ¢¡¡¢¤¡£ ¡bbbcefinkfdbaaa^afmjihhnlszz¢¤¨®«¬«ª¬«°¬«®®ª¥ |p]]ORKHMUSTP\[\ae^a``ccbae`d`ehdadc_addecchb`_da^[b^[SQQMkÃÞÔÉÇÍÕÊ»ÅÐË´®°¦t}olgz rswp{pl|wwofjqxux mkxz~~|~}qcm{|jfs{gjllmu[cTBDLZNOOCSnrp_bkeIOE;LVUkwT=?I_]NKCHJ_26H+)&$$$! $-U°Á´¡¸¾ÆÈÂËÊÇÅÄÃÅÄÀÂÂÁÁÂÀÂÁ¿ÀÁÆÈÄ¿¾ÃÂÁÀ¾ÄÅÀÀÀÄÆÇÂÄÃÄÇÆÇÇÍËÉÈÊÑÓÍÏÒÎÑɬ~jaZUXWTYXVWW`a]W\\_aacs¡®´ÆÄÇÏÃc?0$'&)&)1/37.310427+253281;:4.((%).?bv¢¤¤¡ ¤¥¡¡ £¢¡¢¡ eeffgeccf_fdf`a]`cjiomoltuy¡¡©«ª©«§ª«¬®«¬§§¦¡zm`ZPOHDKSLTW[\^`ae___bedgabg`_ceedj``afdbefa_`_d``\[ZUPNRiËßÊËÐÕË»ÃÏʶ½¹®yqju~rxxysvtj_itvr~ rl{x}}{ us} kg pl_q~zu|ynedSIAMA<496A@EERbpfYwXaa]]chn>AS[eQ962-O]d/./5.%( %1^³Ã´±½º³ÅÂÂÉÄÃÂÃÆÄÅÀÂÂÀÀÄÃÁ¾¾ÃÃÄÿ¿ÃÃÄ¿¾¿¿À¿¿¿ÄÃÄÆÂÄÂÆÇÊÍÌÌËÉËÏÌÒÒÏÐÍ»c\W\]RXYXTWSTV[\`\\`hipq ¢§±¹ÂÇÅËÀ<00-('&0&,2023202.+/*-,7.23;5903+*)(1Ur¢¢§¤¡£¢¡ ¤¢££ aaccmfeghegde\d]`dcodljnnsy¡§«®®ª««§©®««ª¨¦¦ {pf[ONIFNPRSTZb[_]`]^a^b`^f_h^adfafi`bdjg^gdf^da__b`Y]XQRN_¸ØÍÖÖÌÁÈÒͺÆÃ® xih£{n{pnf\dnvsu |qs|} |z zbm} {rhj~{uwwdRN;F:<7=9798<ADI_ic[|bZtphflGZnn7.5<,*8cv:/)-%6+%<h¯À±ssºÃû¸¿¼¾¿¾ÁÂÂÆÅÃÁ¼¾ÀÁÀ½»ºÁÀ¾½¼ÃÂÃÄÁÀÀÁ¾¾ÀÀÂÁÃÅÃÃÅÆÊÊÉÌËÊÊÇÉÏÎÒÍÌȬtf\VZZcYY][YWVVYd`edrjlx§¯µ¿ÆÌÆËÄ7(+)&'+*/1/374012-+*06*)78367<680,+/3CZq¡¢¤£ £¢£¡ ¢¤£¡£ ggehafihfebfb__]`felhijlssu¤§ª©¬¬«¬«¯±¯¬¬ª¥¨¨¢¡}ja]NIKKMRQKRW^[d[a]`cegg_bdba^gcfg`c__^fbc`ac_c_^]\[^VSNNUÕÛÓÈÁÎÔ˸ÈÛÄ£¥wku¡¢ q||pqj]n{p}~wp{}z~ ||y{ usmanzkctvtmahaRC::@71;96:7889I\mf[{hOjmWKeyfDZu{=68OD;?If}6&!#)#*0>v¹¶¢sj~¹ÄÆÄ»»¸¶¹ºÀ¿ÃÃÂÄ¿ÀÁ¾Â¿¿¾½¿º¾½ÀÅ¿½Àº¿¾½¾ÀÂÁÁ¿ÃÂÃÄÃÇÇÅÄÉÉÆÇÈËÏËÌÊÀ `[]Z^^a][Z[YUR]Y\djt{ª°¶ÁÆÈÆÌÏ3&*+)*-2*--/326/4+,/011&+--327:66/.-27Pj £¤¥£¢¤£¢££ ¢¡¡¡ ¢hhijifkgigdbaccbbcblijmmntv ¥§¨ªª¬ªª¨«¬¯°©ª¬©£¥~n`[TPIKOKLTSV[]`[_[Zbcedabb`dcbcamb_a]beddaca\^^_Zbc`\TQSQxÕàɹÊÔξÃÕÒ¸¬¦w{w~}}siefhmxs umr|~z||zyvbc||}}e`osd^OLNLEGNNF@147?>A9?CVmlZzlRc`P6KkeZCvue2FIOS:+2ow8$ # "#+GVu¨Â¹qnv´¾ÃÆÃÀ¹½º¹¼¶¹½ÁÂÀ¿Á½¾¼¾Ã¼µ¸º¾ÃÀº½Â¿º¾ÀÂÁÁÁÀÃÇÁÂÃÂÈÄÆÅÉÅÄÅÉËÉŹ£|ynY\[Z^]\YZ\XW[[Zguw¤°³¾ÁÃÂÎÒ´T*$))1.)+,+-650577-*00/*.0120:A89:654;C]r¤¤§¤¦¥¤¢ ¢¥¤¢¡£¡ ¤¢ kkiefheefgbd`]`cc^bigmoliqw~¤©ª¬ª«««««®¬¬«¬®¬¦¨¢ p^]RRRJHRNTT]Y]^Z_ae\`^``b^ad`bd`ffd[`a`ajbi^cc^d]ba[_dPRPqÍÛÅÆÒ;ÄÏ͹¥zyg^`rprnz |oq}v}{y }mVz~~rce`^H<=;J\OLNNA=;6:;839DVjb]rRYW>95?Z`P\][KJ^b`N0$-xz'$" %?X«Á²}ts|µ»ÀÆÄ½»³°³µ¶³½ÁÀÁÀ¾¾¼¾¾ÀÀ¼´µ¼¼¿¾¼¾À¾¿ººÂÄÁÀ¾ÃÄÄÄÅÄÄÅÇÄÊÅÇÃÅÈÈĹh} ~b``]e`VXWV[]afn| ¦¢¨®²¶»½ÁÇйc-*/2100-4002534124.-,)))-29<?=@?L2,/03Jiz¤¥¦¤¥¡¦¥¢¡¡¡¢¥¤¢¢¢ ¢ kkikjpedefa^fbe_dcdfcjhllo{~ £§¨¬¨¯ª««ªª¬¬¯¬©¬ª¤£zncWXIDHGKTQVeW\]a`a^^cb]cb]`d`eieddcb^`fdjd`^_aeebea`_\RJO^²ÔÕÖËÀ¾ÏͺÁ̺¡ wa^frtnv tqz~~~| y}{u ~|iF}wcaPKV?;;HGcaRSZE36.,37.2>Iis[rz\dK6.2;3GXfkPJOP]kN?4!..si#"" )]§¿qr¢··¿À¼ºµ²³²´³¹»¿¾¾¿¾¼¿¿½¾¹¼¹º½¿¿º½Á¿¾½»ÀÀ¿¾¿ÁÁ¿ÀÄÃÃÂÅÅÈÈÈÊÉÈÀ¹ xZUvugbac`U]Y^gru{¤¨«§¬±µ¶ºÂÈΪ_3&(+.,4-/,.52355:121)*1)**+-2132-9GN.2CSs£¢¤££¥¦¡ £¡¡ ¡ ¡£ ggiigogihjb^ddeefdafeekilny~¢§¥¬ªª¬¬ª¬©«ª¬ª¨©§¤¢|pd]UTGEMINXR[[\`_^cZ_d`_acae_ccfeag`fca`]faccbbb_ccc^XXULLRÖàÑÂÆÒ˵·Ñħ¥£{x¤¡zp_luqrk{ |{wot{}{~yvsyfL{vgV]SL<0@JUajg[E>6;313544+9I`^ie_J0.(3..YpvA8MYlcX=4;!(.}F*'#2Z±º~xx¿½¹ÀÀ·´±¯¶±²»½»¾¿»½¼¼½À½¿µº½½¾¹¼¼½¾¾½½ÃÁÀ¿ÃÁÁÁÂÃÄÆÆÅÅÅÅÉÌÉļnhfb]s~{mb^`f`dmv¥¤£¢¦ªª¬°±±ºÄÊÍT0.&')1-1,7.3:=:449>-*/(-/++,4<CH;2:91;;Rg £¥¦§£¡¤¡£££¢¢¤¢£¢¢ ¡ jjjhjljfhegeidibhbfcfgkhoqv}¥¦§«©ª©©¨§¬§©©ªª¬¦¤¡~ojYUMLLKOUSST[U^Z``]\a`d`dh^Yc^ce`i`^_hbaajeabccc`cba]YXPMMpÈßËÍÐ̹¸Ìа·Ã±pv¥sl`Zowwv}t`nwzw~}xttjW }obYQQ;538I_nq\A@A5748+.7:1(8c|srteK)*)+2.BwT9=Phz]:*$*"#H|@T.":g¯½¡}{«Ä޾Á¾¼¶´³³µµ»»»»¹¿¼¹º¾»¾¸¾¹¼¼»¸¹»¿¾¾¿Àº½½¿¿ÁÂÂÃÄÁÃÇÈÇÇÆÆÇȽ«XJaknbwmlqzy}¢ ¦¨§¤¡¥£¢¨ª±³µÁÎΧR,+&*-,+/.--7.851187:/03/*'),/39;BJ850629Wp¢¦¥¦¢¤§¤¢¤¦¤¤£¢¤¢£¢ £¤£¡ £ mmiejkjhcfgijih^eah`bigjpqy~¡¥¦©¬©©©®««¨®«¬ª©©¦¢}tgYUMGKJLORTRYZa[][_]a]cf\`cZfbf```deacc`feddchgfafbb]\ZVOLb©ÙÓÔȼÀÉʺºËÁ ¨¢py skjdkwuumn}~y~~~}{}w|z~oJ{ }ca\OC7859KoraL200/73570-7;1-Mtu{rxd^P-/9*&,@q[>EY^f_L+*"'#*_z]g+'Br®²{®ÀÊÄÀÀÀ»µ³¸´²´¶¼ºº¼¹»¶¾¹¼¸º¼º¹·²¹¹»»¼¾¿ÀÁ¼¾ÀÀ¾¾ÂÂÀÃÁÂÃÇÉÇÅÂÀ·jQGNemlgu¡£¨¥¦¨¦¬¯§¥¤¨´µÀÊͯU**&,/'(4-124A94770572.-6/0())+3?:5520520Bf{ ¢¤¦¥¤¥¥¥¢¨££¦¢¤¤££¢ ¡£¥mmidchedlhhhied^cedbfkehpqv¢§£¨©«¨§©«¬¬©ª«¬¬§¦§{me\TMFJHKOSSRUX]\acdaa`ai`afeabbaa``dbda_`_`_dbdccegcb\ZTSNPÒÝϽÆÎ̶¹ÎË´±¥{ £xyiokssz ~qckyzwut~}rx sQtoYSF<748FemoR73/.-+1:<5*125+-\wkzkUL.007.+AoiQ=KVW\O0" 0/$&lkAk2Hy°²xu´¿ÇÆÃ¿À¹º¹´·´±´µ¶¹¹¸µ¶¶»¸´º»¼¸µ·¹¸½½º¹À¾À¼À½¿½½ÃÃÁÄÅÄÇÆÈÊÅÀ°TCh^QM[plkky ¦§¨£¦¦©¤¥®¨§©µ·ÂÍÓµ`/&&'-%+.222;67B66<4130+13/17-237<1--'+454Yl|¥¢¤¥¤£¥¦§¦£¢§¥§£¢¢¡¢¢¡ ¤¢lllgcpgeke`ggfg_cd`fddgjqqpz¤¥ª§¬¬¬¬«§®¬®ªªª««¥¢ riYWNGIKJSQTX[^_Z_^_`a`\dci^cfbdedgd]eda]d]^^_`eeechacaYQOOUlËßÈÉÒÈ··ÎÍ»º¾¿£¥§y¨w~xjfqvqq}~sf`qsz~zzuzwvgm x_kyVC::<8<JgnQ9:/00.2+6>.*+/00/<c~S_d\333767BjxXG<M`_F.$ *0*"0T+HY|¶²|z¢¶ÀÄÅÅü··¼¸³±²´¶·¹¾·µ·º·³²³»¹º²¸¸¼½·º¼½¾¼½¿¿½ÀÁÀÃÀÁÄÇÈÆÉÉǹ_64C\hdYWbme]p¥¥¡¤¢£¥§¦¦£¦¦¥¥«§±µºÅÏÒÀs3#&(#+-/0-575<68142,070+07*1405.4:5-)).00Dcv£¦©¤¡¢£¥¥£§©¨£¡£¡¢ ¢¢£¢¢¢ £¢ooikihhehejiieacehelhdiimms|}¥¤¤¬«««¬©§¯©«©«¬¨¦¢|neYQNDFNKVVXV[^^ab`Z`^_bbebebdbgecfdae]b`a_dd^`cdhchch`XURPPa»ÛÐÐ˹¼Ìн¸Åɾ£¯¦§§td_hqz|| {vgcbvt}~|~~}~yqnty}s`XZjxqWUr_D?A9=8SgfP3282)(,5:C5+$%37.2btd?PVB-+,2:FlfZIMYi@$�I+-3G0b±¬ys ¸¾ÂÆÇžµ·µ¹´°°µ¸¶¹¸···µ³³®´´³µ±´»¸¸··½¼¼¾¿ÂÀ¾¼¾ÁÁÄÁÄÄÆÇÇÆÀ\\C./;iytp``wk`h¤£§ ¥§¥§¨§§¥¦ª¥¬¯²¬¼ÁÇÎѼv8.(*,%*',,312617=7-26;71-/-+040225411&.>02Og ¤¥¥£¥¥¢¥¥¢¤¦¦¤¥¡¢£ ££¢¥¡¡¢¢¡ kkknjihgiflcik_edaageejljtr ¢§§«¯ª¬¨¦¬«ª«¯¬ªª«ª¥~rm[YTEEMLRWVXY_V[_]`d\[^^dddaedgdbfadbbfcgd`a^gfdadedd^\^STSZÜÝмÅÐÓ¾³ÍÏŪ¥©¤´ ªh]flz} i_cqw}x}zwxyz|wwv }uoaZNStoZUX>4FRA?RbUC85@B1---<DF0*#+48-Ft}yM3LI110.8JnshZ]ge~X'"$/aQFL_´v©»³¹ÃÇÇÁ¼´¶·²±¶¶±»¹¹¸µµµ±µ²¶²¯³´·´¶¹´·¼º½ÁÂÀÃÁ½½ÂÂÁÂÇÄÁÁÀ³y@7O`>3Ba~vdepxia¤¦¦¢¥¥¦§¤©¦¤©¦§¬®·»ÀÆÍѺp.)$&'&$+-036.55188=67;681*-*-,)-4;79>60+738Xp¥¥£©£¦¥¤£¢¤¨¥£¦¡¤£¢ ££¢ ¡jjijngiggjieidbgchfhaefjjqy£¢¨§«¬ª«««¬«®ª««£¡ |rhZZKFHQJSYSX^\[^_Xb^]d]e`_g_a_ea^e^_c[aefa^ccfdeeebcib\Y[ROVÉßÉÊÓÓŶÈѰ¤³²°®m_eu} xfpwvzz|~wxu~}|ws{xmcPKXxyuXT@:<?OVURL@@>@769-/=OM/&#$'-6Gfks\;:<6+1307c{pNN[zvo[2"%(_vI \q«yy|©¼Áµ¿ÄÅÆ¾¼²µ°ª°´·º³¸±ºº±µ¶²³³±´´²±¬µ²º½»»¾¿º¿¼»ºÀÁÂÂÁÂÂÀÀ¾¢Z01=Wg]?@Wsftyvdv¥¡¤£§ª¨¨ªªª¨¯¬··»ÀÃÎÏÁ|-'((%)*-.,001/78/187145721-,.-/1017204,2-53Jew¡£¨ ¤¦¥©¥¥¤¡¡ª¦¤£¡¡¤£¡¢§¤ ¥¤ ¡¡¡kkjmjhkheehgedchahajgbegkmt{££¦«¬ª©§°¬¯««¬¨ª«©¨ vhYWLGIJIPYWZ^_[^_]a^ea[abaaaadeh^^]_\_d`add`behcjljffad][WRUh¦ÕÓÙÓȾÈÔÆ³¬ ®¹¬§¢gaenzz~ {jmz}|}~yuvx{|wsx~{kjWTOcolO;9B@BEKVHDN=9:;;29<PO6-')''44^cMlE+/:7D83=dwcJ@^x}tdC)*+Uu!/x°²zwux¤½ÈÄÀÂÁÅÄÀ»¸¶±´´±´³¶º³³¶³¹·µ¯±±´µ±§«±¶¶½½¿¾º»¿½»º¿ÁÀÃý¿»D,"*G^qp[<Gxxhjw}dj ¨«©¬©©¯°¯±»¼ÂÃÇͼ;&$*8(,.2-/2/6554:564/17344.*+.8,32690192:4<Wi §¤¥¦£¥§¦¥¢¥£¨©¦¤£££¡¡ ¡¤¡¢£¡¢¡ ffhgfjhkghffgdcdgcdecclbemqu §©©«®®¨ª«©ª¨ªª«®¬ªª£tc]PH@JBOPSS]U[W]Z^^`_a^]\\_^_ehic_^a`^\c^`a\fjiikljfbfc`]`XYXvºßÚÌÃÏØÌ¹¶©¢¥ªº» «hbY`s}~wv}yvf`z|}ytwzppz|zv|{ohg^rnZOLHRMJIGB@IT]ROL??>811=\bI+'#%&*;<dH`r=-5;59;5MaICTnv]SD+&1L|Q'F°®zmwzª¼ÆÇÆÄý¿¿¾¶³µ²°´µ³·µ³¹²µ³°¬±´±®°°¶µ½Á»ºÀÿ»Â¼¿ÃÆÀÀ¹©X6/--8^krhK=_oh{to©¦¬ªª®¬®³´²ºÂÇοa8,%%()))/-/.2423144742:4>7,0,-,*3*554221--51H`o ¢¨£¨§¦¥¥©¥¦£¤¤¤¦¥§¤§¥¢¡£ ¢¢ ¡ ¡jjkjjgiglffddcdbiddbbkeihlrz¡¤¨ª«ª¬¬ªª®¯©ª«®¬¬¬©¤ukYUNGCFGNOQW]YY\[]`c_]\b`ae^b`cbae^``baeba^`cddfelfejff`c[UZS_¥ÜÜÍÕÚμĽ«²¶´®lYWf~ zy}tibk~zy{zwzxsxy~rxoV<6J\\FCDOZWSECLagPF=D?>-*28]wb-*&#&&(HLm;`X,-*,+**3?_RICTV`^Q=&%M|*,n¥~tt¬¾ÁÄÇÆÄÀ¼¿¿¼º¸¸µ¶¯µµ´µ¯³·´µ´°®±®´·°ª°µ»»½½ÀÁÁÁ¿½½¾ÃÀ´¶qUMGF926GjmsmQEcjtyoi{©¨©«©®¬±¶´¹ÀÉʹ~;2*)4"%&**,-/25764336:;;=472/560-+-12206.0377:Sdw £¨¥§§¦£§¨¢¢¤£¤¡¨¡¡¦¡¤¢¡£¥¥¢¢ £ ¡ kknjhlqklfhfgbddiacdgef_aosy¦¥«¬ªª««¨ªª¬¬¬®©£¢ wf[SI@DKIWTWVYYYW]^\ZZ`bbZ_c`^]a`^_cg__^_d`b`cgkigfljlekfc_\VTXÆØØÝÓÆÆÐ½© ®¯«»°¦ s_bi~z{|slnt{}y|y{yww|{|~xwqcM723=C;MQSQ@ELVVbVHA=A>+$(,Trj@(('(+)/QXl5]D)(&/-6:<V[PE3>Hdg;0&-c£l!)F¬q{yw²¾ÀÃÆÈÃÃÁ¿Á½¼½ººµ·µ¹¶´³²³µµ´®°²®«¬°µ±º¯±°¶»½ÀÁ¾À¿ÀÁ¿¾¸½·¯¦qZRHP[V=ERgnue_Oszl|}bt¤¦£§ª©¬¶¼ÅÎÍf3%),&$ #*/-+-112448?<64EC54@62/40+/03607:4100?DVk{¡¦§¤¥¦£¤¢¢©¦¥¨¤¦¢£¢ ¤¡¢¢¥§¢¢¡¢¡¥£ ttkmhondlhjjnhbcabacdceecnsw~§¥ªª¬ª¨©©¬®°®«¬¬¯©¥ wg[MMKCHLOUUS]^^d``^[h`a`b_b```_Z^bcid_bacgbaeejcgfgmhgddga]YUW_ÌàÖÊËÔ϶¥¥¯§¹½¦kdmz~}xunjpzx}zxzyvx~~s{yumj\eciZTMF>?BTGHE@A`ZMGC=<=4-*-1<_~r6)%$,&*2S`a/d8*./4=PJ=>A2--8Wi\)'$6{8")Fhy^mwµÅÄ¾ÂÆÄÁ¿À¼½¼¾¾¸¸²¶¹µ²²¶·¸·¹±¬¯ª¨«´µ´µ²µ¯¹ººÁ½À¼¿½»½»¶»¸²³¤w\LI\h_Q=FiffebJnovlg¢¦§§®°®µ¼ÊÐÆ^4())(/5('+,-24//-/13;7>87D41//,4*-)+)/23712.1?@JWp ¥¥£¦«ª¨©§¤£¢¦§¦§¢¢¡£¤¤¤¢ ¢¢¡£¢ ¡ £gglmmlogrjnlhigc`abcecfbejsw£¥¨§¨«ªª®®¯¬®¯¬¨£ |tcWWMJJFLPRRSX\Y]`\]^adecf`adba``]a^h\`]dbab_efefkhlmiffebbc]VTVlÝÎÌØØÊ¿¾´¨«©´¸¾¯tf~{}wjktu~ ~}x}zxv||ygihiivtkinZWSRTKB<=AUbZH;A..4,+*,@^q k*!!%**)8Pad0\.,*=:974;34,0'>dsM'""@m%@[e}ut`g¢¸ÀÇÆÃÂĿ¾¸ºº¹¶²¶µ³°¶¸¸··¶¶¯«¥¦¨°´ºµ´²µ±¹º¼½ºº¿¾¸½·°¸ÀÀ¾»®§ fQKJWnlRMX_\^aW[|ruvhd{ ¤¬®³µ»ÂÈοJ4**+5(1%,',-..36213-9854?58/4)+.8/*,.+4161805BDBQgv ~¦¨¨§¦¥©¦¡¤§¤¤¥¢£ £¢¢£¤¢£¢¤¢¢¡¡ ¢¢¡¢¡ ¢¡¡ kkjhhkmpjjiejcgddabb`]\b`jow §§«®ª¬«®©¯°«ªª¦¥¡|ufVQJJIKNUUWNSW[[\]]_^]baabdg__aabfaba`_^cd`ceglihgkhflniffeb\YSWÂÍÝÙÑÈ»½Âº°¬·»º©kw}|{}urnpz{~ ~}}yv}zorzvw|v{yvqqdfheY[UA9>DQZZO;4.+(%&"0CBXmh-))$*0.2Vb^1e.).7<8/1;:5412>nvB-!,KYBp~{Qcpbn¢¾Ä¼ÅÆÄ¿ÁÀÀ¿¹¹º·¸µµ·°¯±²µ´·°¹´®ª¥¥¨«°µ·²±µº²¸½¸¼º¹»¶°³µ²¿ÂÃÀ¾±«w^SKDJotcKRdaXeXp{u|ke| ©´´ºÂÅÊ÷?,,')*.*).%*01357:5611957:?4811,.))01/+/9:6=128GEDXry ¨¦¨¨¥¥¨¢£§¢£££¥¢¡£¢¡¡ ¢£¢¤£¤¢¤¡¢¡¡¡¥£¢¢¡¡nnmjkjfnhbififfebecc\b^ccfot{ ¦¦§§®«²®¬¬ª¬§¬£wiXQIFIGMNRTVS[[\]YXeca_ca`ab_a_dcdb`_^_bee_eichggilihihgdfa^`[TTcÒàÑÏȼÁÄǸ¶»¹®i] uu| tusz{ {ztztlp~~~zuyt^_dbYNK>HFVb^^U=:+-&%)'+FBfrM)%/*0/(/VJZ:X8&*-;;1+/:5)('?ppB)%4o}dm{AVnq±Ã¹¾ÃÃÀ¿ÀÀÂÁ¿¶µ··´²²°²±´´²´º±·±©ª«¬®´¶·¸µºµ·¸»¹º·¹²´±¸¼¼Á¾Â¾¼¶¬n\\O;Ck|i[hgY_we|x}yrw¦²¸»ÇÍʽqC/,/&%,*-/)*14.677;94312<2675:21100,6-,,318:194:DGPbr~|xy¥¦¦§¦¦¨§¥¢¥¡¥¢¢§¦ ¢£¥¥¨¤¥££¢¢¡£¡ ¢ ¢ mmmlmkllieefggfdgdbf`b^b`ekry¡¨¦¨¨®«¬«¬®°®±¬©¨¦uhXQJKCIKPKOWVW[[^Y^baa]bbca^`_bebdcfdbbc[hdehihjjnlijhojjieaa_YPYrÁâÏÒÌÀÀ¾ÇÄ·Àº¥wXhttxy{xnuu{y{ {y} |~yxoz ziPFIMVXMFKHHSRe\heA931.++'%(2Fkz{@&#%$68@AG>=>J:2/EK=;117<-/-NoWI0+M~hx lFg~¸¿º¿Â¾À½Á¿¾¼»·¹µ¶µ®±²µ±³´³¹³²¬©¬°¬²´¶¸»´¶³¶º½¶·²´´º¹¹¿Ã¿ÁÄÁ¸²¢zf\^YGEpuohmfnk}zzxª·½ÅÈǬ|Y6--+0.)**/-+,0358935112/392:7269/--000+-17698.,8;:IZmx{z¥¤¨¨ª¥«¦§¥¢¡¢¡¢¢¤¤£¤ ¡££ ¥££¥¡ ¡¦¡¡¡ ¡ ¢¡ kkkjnkilieijhgfc`bdea^^b`hmqy¡£§©©¬®«®«¯¯²°ª«ª¤¢ |qiZSLGGIKSQS[RWW[ZZ`cbd]]\_``Za_dfa`ecchgebbdghdijkkkjonjnndgf]VWT[Ô×ÍÆÂ¿Ä¼¿¿Æ¼pg}tpt~~{}xiv|}yw ysw{|~rqe^rwofVD=C]YI@QWS_Y_`gQD630-2+*#/9Rxlq6"#(+1\a*:5:9569?;MWZQTQWN70\xTFE2_{x\y}jSw¬¸º¿¾½¾ºº½Á¾»¹º¶¸´·°±²¸²°²·³³®©°±¬±²º¶ºµ¹µµºµ±´º»»»Á»ÀÆÆÅÅÀ¾¸²¨n_XY]JHtkjb\[\y£³»ÁÁ°h;23(0.,-/,+*)).63<29:846/17432:711*/*+/2/.2357525:=AHatwz ©¦©«¦¦¨¨¢¤¢£££¢¢££¡¢¥¤¥£¦¥ ¢£¢¤¢¡ ¡ ¢lljlkljldiigdeccbbgc_a^^\giox £§«ªª«©¯¬ª«®¯¯¯¯«ª¢xeXXKKFGFONRQU]V]a\\g`a`ad`c_bc`a`_^badfb`cediihdiknkqponiljge\[WXRtµßÏÇÆÆÂÁ»ÁÆÁlv¥zqvpuyrpknx~vzyunlnuxyzwumqjedZ[PG=FOKGS[XLYcadY?B86985*'01<Zn`n?&-0A5V[*.1//25?<?O[Xa]]bYSM`yYPNKD{sU_h{|ku·£¼ºº¾·º·¸»»½º¸´¸µ°±±°³²¯±°®±¯ª°®¯²¬¨±µ¸³ºµ¸´µ¸¶º¿Á¼¿¹ÁÁÁÅÇÉËÇź»³|g[XZRBKxkM\DS>h~ ¥¶¬Y@40,'(*+/-.4/*),34877B8866?98599559-(')+3,.73=3/06BHCPkv{}v£©§¨¦ª¨ª£¦¢ £¡¤£¥¤¥¥¡£¢££¤¡£¡ ¡££ ¢ ¡¡jjklkpmghhdcjhjeegc]_]]_]agp| ¡¢£¥©®¬¬«¬³«¬¯¯¯«¬£rdYOLDBDJOLTR[WVY\^_^a^`_^ab_`bdadca`_bcb``aiilglhjumlqkikmhl_d_YYUbÛÝ×Ëɿ¿¿ÌÃ}¢~|xrstvpdelq|} upvrieo{| }nll[A>;APSKCIW\GL_h_dGBE6>4B60**6CQUHeF*-68AkF)-1453.2/A7;>HB:4E9<Tj9IM@>ojTUbyj·§»¹¸¸´´±··»ºµ¸µ³®¨¬®¯°®²¯®²«²®®´¯«®°³²´´²±¶º¿ÀÀÁÀÄÁÀÄÅÂÃÊÊÉÇÄÀ¹§qcWWXO:@gYRURG@ ¥mR5(*++&*.,)03221/.089482657:7=99;8/+***.1.124135++2=?LXk~~{|} ¥¦©©ª¢¥¨¤¨¢¦¤¡§¢¥¡¢¢¨¥¤¢¥¡ ¢ £££¢¢£¡¡¡¢ ¡ mmlnoklkegghfheifdacaa\\__js|¢ ª«®¬«©¬²¯¯ªªª£ti`RL@EJGQTTSTZ]XZY[c^_\ca`b\a_\_bdbcea]cadaeihfnjllkprpnollkif`]YUZÕÞàÕÉÃÄÄÁÉÀ}xyywswrnbjtw{ywnljpjo|rx |qhUC@@EL>=;GRPCI[bT\FFI<86302-,=CHUQbO2>FFEH-*/,..10228/+089<),+-B_7LJ?DkcE^{u|¥ªª´¶°³¯¯´¹µ»¹¶µ¯ª««©©¬³°©«§¬¯³¯¯±¯®²®±°²²º½ÄÄ¿ÃÀ¾Á¾ÅÃÄÁÅÆÉÉÆÂÂÁ² yg^RRQE.6~~URSY@Z¢{qqX8))$)).3,)/++.1513387:=;46<=576783/,')51041:0/516<<IQcx {{~~¢§¨«§¢¦§¨¦¦¦¤¡¥¦¦¡£¢¢¡¤££¢¡¢¢ £¡¤£¡¡¢ ¡ ¡£¢£¡¡ kkkjlkfigijgedcgb`_bb[\^]cinw ¦¥««¬«¬«®¯¯¯¯®«§©vlZTMEDHHLNPLSX[YX_b]_b^b]a_^e__\a^bafeabdcdfdhgmlgomlsmojkdkbcd^_VZÏØÜÞÐÆÍÅÆÅ¿¤¯{|t~~xvgeior{}~qqlisz~xx\\| tkXNG@TF;95:FG?AWZ`YHID75/0,0,:BEBE@^`AWMB1**.5-0,,--/1041/0,($#*;V<@KZK\Z6Qysxs§´µ±²©®¶¸±·¶²¯«§¦§¢®µ³©ª¯¯®«³²ª°«®±±««¯²¿¿ÃȾÁÀÁÁÀÄÅÄÃÂÄÆÄÅÀÄÀµ« ob[JAP?,;xyVaVE?{}uk[9'#)*-..&+,.+26.656:9:<936367<582.).%),019:5810/8B@K`l{xw§¦¥§£§¨¦¤¦¦£¥£¥£¡ £¤¥ £¤¤¡¥£¡£¤¢¦£ £¢ ¢¡¤ £¤£¡¡¡ hhppnjkfhhkgeg_fhf`fa[Z`Z^gqx¦¨«©©¯¬°¬¬«¬±°«¬«ª¨ wl`QIC@HHQNWWR[YUW]_e_aeb`_b_`e__\^b^aa`bbddcdigjjikqkssyjvjoigb_UW]ÐÔÓÙÙÍÉÄÉʽ«µw{~||r`_gts{|zuvt}sn|}q\Ny|yqX@>A>GF;89698@XaMTOCB<D2/553?EOB3>^e]X_K125-.+//..14062.1)01%))4OEQhlRSX7Lgjtx£ªµ¶²«²³µ²·²°ª©°©§£ª´±¬¬®«³°´±«²©°°¯«¢¨ªº¾ÅÄÇÈÄ¿ÃÁÃÁÀÄÅÄÅÃÅÅÅÈÇÄÀ·«sfa]KIH8)=mY]TP5_ ~riS82($',+)(++/,47;683858;;>786:520.5.-)%)0138121/0=BBNbx ywv¡¥¥¨¦£¥§¨¥¥¥£¤¥§¬¡¢£¤£¡£¤¥¨¥ £¢ ¤£¢£ £ ¢¡ ¡iijlhiiikfeijddfdecea]ZZVbhnt}¢ª¨¨ª¬«©¬ª¬¬¯°¬¬®§¦¡ um]PLCEJNSJPRT\`^_\aafdfbcgefbf__`_a`da]cdgdegjighmnssoknkpkoihc_UUZ~ÓÛÕÔÙÖÇÊÄÉ¿µv{}y~zljny{y}xwyqit|}~vcZxvtmccVBOF@=:57=.-5<UcCRDCGLQA6=42:FT:'3fjofXI('(-.4/1.20.-4;2+-.,-)+@]XfxfVV]?[ ¤¦¬±®³±°´·¸¹´·°©¨¬®¤¦©¯«®°³°³´¯°¨«°¯°«¤¡®º¿¾½ÁÆÈÈÁÆÃÅÅÂÇÇÇÈÅÅÃÈÊÇÂÀ¹¯yd^eU@;=+%<hU[NCArtgI320*'))&'//-28<=97645::@;9>9C?5406)2"(---/6210-85=FYm~~zv ¢¥§¨¥©¦§¥¤¦§¦£¥¡¦¤¤¢£¡£¡§¡¥¥¥£¤ ¡¢¡¢£ ¡££¢ lljgmhgijfhifefb`ec`a[ZXWddo}|£¦©ª®¬ª©®©ª¯°¬±¯®«§vhZMLDCHMPLORSY]YWY[bdaa`dd\abdd_gfaeca_cbehbhjicgmrprprnlnkllkb`ZZVÒÜÛÒÖÚÎÎÆÂº£ wquv|w|wvrxv|zzsptptx~{vn[Z{qiXVSHJPMK<=:1/(*88FLHMC@DEUPG=;'5KQ7%6p[xw^W2(+*/:-+-0/50/:/))+(&)+@_kjWTX`Nr¦ µ¯¬©±·°°²´¶º»»¶³¬¥£¥ª¬¯¬²³®²´³®¨§ ¯³¬¬ª¢§±¼¼ÀÃÂÂÆÉÆÀÄÅÇÄÄÇÅÄÂÅÅÇÇÃÉȼµ°i\bNQ?7/'0VjbJNLf~u`;-,.%,)%(++,.,1:8968556;77H:A941,.3,,*,+'..802.575GHasw~y|¢¤¢¥ª£¦¤¦¥¢§§¨¤¢¤¢¡£ ¤¤¢¡¥¡¥ ¢¢¡¡¢¤¡¢¢¡¢¡¡¢ ¡ mmmgkigkeeiggib_da_d`YX\[cgo|~©¬«¯¯ª«®®¯¯®®±¯®¬£ vj]NIGEMKPNXTY\_XW_``\_cb^eabfb_bc_ce]]_]bbedeimfjkpprnpqnqnijdea_ZY|ÒÙÜÖÓÚÔÒÍûrmjtyz{qqy|{~zugeluy} }wieXNgb]OG<CVYNB33-/,.*04<HTPEUCGT_K<8$8JN>(,]Yzl]4(-.2+00040,*03*.!'+%6<RnuVHS]ld{°¥½¶µ®³·¶µ¶¹¼¿¼¹¶µ®¬¥¢©¨¨®®°²±·¯±ª©¨¥¦«´»ÀÄÅÅÂÅÈÉÇÃÃÄÅÂÂÆÅÆÂÈÆÄÆÄÇǾ¸¬§raXPMF70,'4lbTGVK {]=2+2&+*()/,3-1-0=956:;87;3:B786213D./(,'*11820-/.9KVl| {v}¡¡¢¡¥¦¥¤£¤¥¢££¦¡¡¢¤¡£ ¢¦¡¤¢¡£¢§¤¢¥¢¢ ¢ ££¢ ¡¦jjcjfghkiilhke`acbc_\\WY[\jru~ ¦««««¬®®²®±«¬¬¯«wl^QNGFANORVW[^[[\ccbcccbbgdcjcfbc`bdcb_c^_cdfeijoslqpqovpllijgfc\XY|ÏÚÙÚÑ××Ö̼¤uiejv||ssytw|z~upgffx~}yl]VCJSD203JfXH@-33))/*.31EaJ;ECWUZYD(,7GP7#.;Zu|nK)++0-18/+))(+,()"#$&5[iozjON^o|±²¶³¶±¶²µºµ»½»¸´´°©¨¡¢£¤¦¦¦¤ª±µµ¯¬ª¢¤¦©§¯¸½½ÀÃÃÆÀÆËÌÊÆÆÃÄÂÃÃÆÅÈÍÊÄÅÈÂÁÀº®¨xd_QI<6./+2M^UJSFp}pP44+-,*.,/10/0/334<65D2568;;94;=1-1.*0*)-/6735**1.7Rat }}¤¡¡¤¤¥¥§¥¢£¡¤¤¤¤¦¤¡¡ ¤¤¤££§¥£¡¢£¢£¡ £ kkkggclklikndhfdg_dc`Z^ZX^en|~¢£§§§¨ª¬¬¬°°¯¬¯®ª¡¡}ukZQNGHKHIWVT^_[^]dcde`cgdfhbdbbbhafbdjcdcefhhifljontsuvqpqopggna^WZËÙ×ÛÔÏ×Ùȯtdbovz|utxyzy~y|micprutv{u\B44<8.+8N_I53*-20)1.237IaXI>EFQT`;*.5HUB&'-Fut}a9)),--014*/+-"!!#&(6_w|mu\MZv£y±·µ³¶³·¶¸º»º½»¶´³«¥¥¢ ¦£¦«¬³¹´®¬¦¢¥´¸º¼½ÁÄÃÈÄÇÈËÊÆÊÇÈÄ¿ÃÈÆÅÌÇÉÆÌÅÄž¶¨ tg[RRB//2/+5MSOHI\`F,94,-512-40+.04425;>=8:;HA@>>>530+/'32(0.8311(,37:Xjx |} ¢¦£§¨¥¦¤¤§¤§£§£¦¡ ¡¡ ¤¦£¡£¤¢ ¤£¥ ¢ ¡ iiokhgiigjhgigl``ec_`WY[X\cit £¦«¬ªªª®®««¯®ª©¢|pl\RMHIKFMOTO_Z`]\d]bb`ab_^gaaaeah_cd_`dbeeafjmfhlprtsrrtqrmrmjla_[[zÀÞרØÎÒÚЪxbd`kpxwopqvx~z}umipv~ vzywuQ.'*1;4+;SO=80++,..4..*/<X^WA9@TV`M*&.?WP%)+9[g| [E>6.-(/)*&)#!"$(%.^zgi_[v´w¥¦¼¶²³´µµ¹¼À¾¾¾¹´°ª¢¥¢¤¥¨«¬°µ¶²°¥¢¥«®µ¶µº¸ºÀÅÃÄÁÂÈÈÈÅÈÇÅÈÆÇÅÉÇÆÍÌÌÍÇÉÆÁ¸®vjZWVB4(-+()DXTQ@Q¤X806:35,,+0++30/:8:4:76;8;@F;9B963-3/,+'.6/3..++15:BZj~y ¥¤¤¥§¢¡¤§¨¦¥£¡¢¥¢¡¢¡£¢¥£ ¢¤¤¢ ¡¡¢ £¡ ffikfhhmeoifmbeaaa_c_[\ZX[ctx~ ¡¢¥§®©«¬¯¬¬ª¬¬©§¤£wn`TLLCKNLPSVXYb^_^]cadfhd_hice`caaeb`gfb]dcinjlgmmnotqnorroplljca]\n¶ßÚÕÚÕÑ×Äodgfioussnsqszvsrpov~~{xvq~}vxr]3-%)/<2CYG@20/+,0,027-/2E[PR:>JNYK<+-9cR$#)71Rqjh]^[G4#"%*$!%$$!2ZtZSeu³¶¤w¬º»¶¯µºº»ÀÁÁÀ½µ²§¨¤¤¡¡¡¥¤ª¯¬´·¶²¦¤ ¥«¬±¸¶¸º¼ÀÅÃÂ¿ÂÆÊËÆÉÇÈÇÅËÇÌÊËÍÌÉÍÊÍÇù¯£l]USG3+(.'%6YQL;I £V5/1+*(/+0..1/22176=4@969?>=>;=;+4-*--,,//62/-///5>Pgv ¢§£¤§¥¤¤¨¥¦¥¥£££ ££¡ ¢¡¡ ¥£¥¤¤¢£¢¢¢ ¡¡jjjhknhneibefbeedddba`]Z\djly¢©¨«©¬¬ª®®®¯®¬ª®¯§¤ ~ufbURIBLKMPROW^e]Zcc_b`eb_eeehggf_ac_aacihlfdjfjlomlnnopsqpqmmmngd^^c¨ÝÝÖÚÚÑÍ®xmfgjighorouvrwnfgpzzz|md{smr{whV0+%*5?[^5-.++4)***.//+5ALTPM;?HUTD8'8gS#",9*;bbVPdmbW2%!)"#!'-O ¢e\b|´ª¡¤y{¯½º®¯´´¿À¿¿Á¾µ®ª¥¢¥¢ ¦©¬µ¹¶²°¢¢§¬°»»»¼ÀÀÆÃÀÄÃÆÈËÈÉÇÉÇËËÊËÍÌÍÏÍÎÍÍÉǽ´«ld[\J3'$/0,0PSK@Dr¢¨wJ30-..3+)+-3,41/2217826:A>8=>:37./6,0.'/)316-41978HWp~¤ ¥§©¤¥¦¥¦£¥¤ £¢¢ £¡ ¤¡¤£¢§¡ ¢ ddkikngigf`fgcbeefed\bZ\[dhqz~¤¨¥¯±©«©°±«¬®®®ª¨£wfcNGHHFSSRRT[][Z[`^a]fbffddecikda_eabbcdfhgghihlnlnrmtvwuoompnkj^facÎßÛÕÚ×Êkjihjjhijpwurwxumt{~~jWwzrpqqxnnuhF,'*,=W`U,-(.%+.63-*10+027IUND9>IJD?0DcY*,<<,2QW1=?JA=.)%##" )U rlhw¸µ¦¢z »º±´¦¶¼Ã¼¼½·µ¬ª¬¡¤¢ ¡§°´¶»±°£§¨§¯¯´º¸º½¾¿ÄÄÂÂÆÉËÈÉÊÈÉÈÊËÌËËÑÑÑÐÏÑÑÎËÀ¹®¤shXYL>-%)./.AITK>e¢|L,,/20*+.1,1+336145491?9=7?>DG94/*,+1.2-/2<1)--06>N^v~¡¡¦§¤¢¤ §¢¤¢¤¦¡ ¡¢¢¡£ ¢§ ¢ ¢¡ ¡ ¡eefdcicgihgaedh`cfcgd`[XY`fnv £§§ª®««ª¬¬°®¯®¨¨§ zmiTQJECNLNTQVZaZa[edda`f^aefafaegbbefcfcdjdiffgjmijpoqwvxrqoopmkhc_]wºÜÞÖÚÙÉkhpnqnrihpupmmvpt y}sVespnpoeUVOV>..23Q_aM1*)(&,162.1:204.28SSHHEBDAB9?`W*->?6;VZ''+++(%$* $I ¤pkr ¹½§£¤¤¢¯´µ£²ÁÀ·¹²»³©¦¥ § ¤ ¤£®¯³»µ¥¢¦¬«´¶²¼¹¿ÃÂÅÄÆÆÃÃÉÎÊÈÌÅÇÈÊÊÍÏÎÓÕÓÒÐÓÓÐÇÁº³£yk_`R>,(&+-.5BLH?V«¥uM1+1//+)271,-4447:?4;68569@A>5.2/,-'+')-.63.+--68COo} ~¡¡¡ ¡¡¡¡ ¡ ¤ ££¡§£¡¤ ¡hhhfigjfkehhgfhgbbde_e`Z\ckpw ¤¥§©¬®ª«¬¯©®®±¬®¯¬©¥¢wkaQPCCGNPQOVZZ_]Z[`b^g`c_`eadfjdechdcecfbfihehdhip}|jotuspspsqppjda^j§ÜÞØÛØ»qmmorpqsmnvrkkbm}|wwzmWVbZ^NK@8@CAC44..Tab?-*',(,3:..7=10.402@PKI@<D9@MFXO(*J:4,X^&)&#-'"" %As£«qgs¶¾¥¤¥¤£¥£««¢°¿¾¶¬¼§©©«¡§ ¨¢®°¶µ¦¤©±¯´»³¸½ÁÄÂÄÌÇÇÆÇÈÊÉÊÊÇÈÉÌËÊÏÏÑÑÒÐÓÔÔÐÌȸ¦lb\PE1%"%-.0?ELF<t²®M/.105-.0BD68>84894566:=AB8?@:403+/.+1222:70(,+46L_t{}¡ ¡££¡¢¡¡ £§ £¥¥¤ ¡¡ cccmgelfjdighgdba^b``^[[ZXclu ¤£¨¦«©«°««¬²±®«®¯¨¡zs`YPLHPQJOQTT^_]`a`eggcjdbilibhcbfegeedhdeiffabgo¦{lptrvoqvsnplfdb`hÑàÞÜÕ´yrsjptzwuspmofbhz|ywlcgP@?:HWOQIKM[[ZB8.6Th[2-(*-&-@B7-@91*.4+/:;AL9:A54HU]P16`:+-?op+-)"%%!" %5o§sfr´¿±©¤¤£¥£¨£¨¶À»µ¬¶´«««¨©«¦¨¤ª¨²³¯¦¥§ª¯³¸»·½ÁÀÁÀÇÈÃÁÊÈÉÉÊÇÉÉÆÉÍÊÐÐÎÑÒÒÐÐÓÒÐÉĹªxeaYF70&&&&,8ELO7U¨¬R/7:6:/9+5413A6554:3;97;AA>@;42/,.0010467857+*-16Phx| ¤ ¢¡ ¡£¡£ ¡£¡£¢¢ ¤¡¡ccemmiebnfjleggbeabbd^a[^`dmv¢¢¥©ª©¯®¬¬®®²®¬¯®¦¡wleXUHFJMNLTTVZUX^ba^hjcehfekkeikdcdi`becadaceiil¹qnmrvrvnrrkokklebg~´ãáÞÔ¦tuqjtt~wssrfdch~{^K[ZPP<G[XN867NRG3*,5flJ4,)),-6EE9:;9)+-./:413C=A963DZ_c:Bj7,/3P7)-*%$ #!#3j xki}´´««¥¥¦¥§£§¯¬¢°ºÀ¾¼·¶±§¦§¨ª««©«¬«§¢ ¢©¨«®®µº¼»·ÃÃÀÃÃÉÆÄÈËÈÈÈÈÈÊËÌÎÎÒÏÍÎÒÔÐÏÓÔÍÉÄ¿±¤zlbWL60-,*&*)7ER?A¤©¥ d93@>52*3;50/:6689869;:>C<CC>674.*+*03165>6/)-+-9Pq £¡¡¡ ¡£ ¢ ¡ £££ ggjfegehgfedgbfbic`c^^^[X`ihu¡¢¥ª©¬¬«¯ª²°®¬ª¨uo_XOIGQGMOTOX]Z\\^bafhgbjhgfibjlcgbadgacccb`efo°£wmnrnwttppspsnomgkioÛäÝÔ¢qluqqvxw}slb`qvz~x rizkg_IFQRB/-3>7.)++<hnL-1+**/=F>13:413076C.+-;=?9216Ocnf\z?6,2;F$#'""'#(+b¥tq{ ´¹¥®¨¨¡¨§©©¶±¨¦¯¸¼ÀŸ¸®¦©ª©ªª«©¯ £¥¥©¦ª°°º½¾¹º¾ÂÁÁÄÆÄÅÅÉÇÉÊÉÉÈÍÌÐÐÑÐÑÐÑÒÐÔÖÔÑËÃÁµ¤~n`QM::1,%&(*/6KF,v ®©k@3329.(.-14337;9;<9:C9<AA<<742.-..+2.083361)*,.D^t£¢¢¢¡ £¡ ¡¡¡ ¡jjhkgkikchffhcgccbd__`\Z[bbqw¢¤¨«¬®°®®«®¯«¬© vnfZRFLNEQMUWY_]b]bgbefdgiigkifhibhebbeced`cbek¦xpqnxxrpstprvttupmpdp¼äßÖ«wmuqrtxuyxsdi~x}z|}zsoohbUXD3.,/2*1%.47imA')).-@KG7+5</,152A46)-6A;7741?aqiw~O?*55gX($""#5\©{v|·¹ª©¶²ª¥¢°£©´¬¯®¹¾Ã¿º¶«§««§«¨¨«¥ ¤¥©«¨¬³¶¹¾¾¾¾ºÃÃÅÇÊÇÆÆÆÊÍÊÊÊÈÊÊÐÐÏÑÓÑÒÒÓÔÖÒÎÉÃú§scQM<40(""&)25JQ0f¬¦rJ7018<./2645468769<9<<>BF@<5622-*)02-76<58(,)*4Jbz¢¦¤¡¡£ ¢ ¡¤¡ fflqjggkjfeedfgdcbgda][[Y^fqu £«ªª¬¬¬¯¯¬®®¬§¥¤ pkcYSIDFRTSUU]`\^hedcffefgikjkdighcfbdbdabfgchnrqoruqrqrrutsusstnmmlktÙáܼnqtunqorssr|}}qw vigjj`YS944559&($-93Zh@&'&.0GQ>07@A*),7475)+-9G:-873GHfknyXL::,]i@$%-Y {s{´¾ªª°¸¹©¨«¦§¦¦µº½¾¿Ä¾³ª¤¨¬§§ª¦¢¥¦¥¨¦¨«®µ¸ºÀÁ¾ÀÀÁÅÃÄÊÇÉÉÃÊÊÊÊÉÉÍËÏÑÒÐÒÑÑÒÖÓÓÑÏÎÉȽ«rfWPF6.%!")-0JX;L¥£¨¤hG6<15I9-28326:5;9==97>;@B<<;0-4,*/,0042654()/5<Yj ¦¥¢¡ ¡ ¡¡¢jjgljjgcegf_dcg``abca[\ZXajov£¢§ª¬¨®¯®¯¯ª¯¬²«°®©¥leXTKGLSRUVV[[]c_ghfhehgdgmceeeeafcbbbacfjdjml~vmrnququxvuutupqvuvrniep|ÁááÈqvvqqmgmqw}|vuq}||iggcS=>75853C-(%&-(+Wn=(*.)8@>.47C3+/26=7010-C;0-0<KVIY[Ege^RS=g£o5! (Q xqz¯À¶¦¹´º°²¯³²°¡¤¦¥©°¶ÀÇÅʾ°§¦¬ª¥¢¢¤¡¢¥ª««ª¨ª´¸»½¿ÁÁÀÃÁÃÅÄÈÈËÄÊËÌÌËÊÌÈÐÌÑÐÐÒÒÑÑÓÓÐÑÏËÆ½¯tcUWG:,'#""'&1AYE?©¡£«cY88223C96;;1478<88>==B>AAB7>41-4+1./3355//+-37P_u ¤¨¨§¥£ ¡¡¡eejhjehgedc^ddccdcb^ZYZ[idfhu{£¦¨«¨ª®°¯°¯°±¥¡or`ZQMORVUSSV[bdacegcdbcgddeceffhccdiaedfjgfhimsvqtrqursuxsvzytvsstsnpijs¤ÙâÍuzvuqqiir}|zyx}tkebc^H-0002?O>+&%,((0NoJ,368>2-,5<F/-2618B106:G<5%#-GiYMc;KX`]UVv¦]& *Evx{wª½¶¤ª¬¹³¸º¶´«µ³¦¢¶ÂÈÆÃ¶¤§¨©£¡¥£¡¥ª©¦±µ³º»¼¿ÂÁÄÁÂÅÁÅÆËÉÊÌÎÌÌÊÈÎÎÎÐÑÏÒÒÒÓÕÕÔÕÐÏÅÀ³¡{f^XM=3+%"()'1;SN7°§©©{aY@959**-58<1;45B@5@><;B=DC:80-*-02-/21570**'-8Rr¥¢¤¢¥£¢¦ kkikhkkjee``d_ij]aeY_^^\_`dlr}¤¨§©ª®®¯®®¯®¯¬¯®¯ª¬¦¢zlaXUNROS[YXZ\\\a\beadffgei`ecfgiagdjdblcejidmppwtrtrlpuvxuwwtsxsuvssrnmmÅâÐvxsntmj{w||{wh`^faL8;:/0@R[.$'("-'.EiX4FJN4*,.9B111.7646218GK98%&,7j\;fCAQF623NQ* @x© xov¡¶²ªªª®¼¸»½´´¬¶²¦£±¹ÅÆÄ¼®ª¡¥¦¡£¥§¤¢¨¤¨ª¬®ª¬³µ··¼½ÂÂÃÆÄÃÇÃÆÈÈÈÊÌÌÊÎÊËÐÏÑÎÓÑÑÔÓÕÓÕÕÖÑÐÊ÷¢~ib]O=5-'"&()'2F_5d£©©bmM,.1-,339?6;3:9=<=85<DC;=555.*-3530777<7-),3Jey ¤£¤¥¡¥¢¥¡£¤ gggkhhheefbaece`a_\\\[^VY\flt£¨¨«¬ª«°°°°¯®©®®¨«~ukbWPINMPRW_`\`c^Z_abcfcfdaieiehjafbidhefhifflkv }loqonx|{txyvxvvxwurrroq|ÖØ©v~yrncuyzvxv\Y]U@.5/28R\\L**'**()+4YlL>><3.>AGJ0/*17F00,/=Q?87.'+7h`-JQKH.'"$.nh.!4i¢xyq{º«¦¦«®¬´¿Á¼¹º´¹¯©¤«´¼ÅÈÀ²¬§¢ ¡ª£¡ £¥©ª«®ªª°«±½»·¾ÁÄÀÃÀÇÇÂÈÇÆÈÌÊËÉÊÌËÏÌÍÎÐÑÒÑÓÔÓÔÓÕÓÑËûªwkYNH7-)*(*..*:V:P£©¨ª]tP/-30/46677<76959>;8<:<I<;B311.004578600-.33Rm~£§¦¥¥£££££¢¢¤hhhjggjgdbcef_d`^^^`^]]ZUWckt|¦©®¬®°«°¬¯²¯®®°¬¦¦wmdXPJNPJSY[W]]ba^g`fbdcccfgdefljjcghceffedhgfjpususqszvywv||vz{vuprvuvv ½Ò«~{{qigq zoiQE.,0=2*Rp\h9'"'(.)*)4Hk_;1+//3L[F5,+469-,-2JT.3;(.-3RU*3LQ@*'# +EzJ,e yv~±ª§§¯°®¯¼Â»·º¹¹«|¯«±¹¿ÄÀ¶¯©¤ ©¡© §©©«¬®²°¯¸·¸ºÃþÀ¾ÅÆÆÆÆÇÇÎÍÍÉÊÍÌÍÏÏÐÏÑÑÏÑÕÖÖ×ÖÖÑÍÈ»©wf^YM=0//('(*28TCH©©°Zq>-'14757;649:?8964<77=@981182/+-,1:8651*0,.9Ss ¤§©¦¦¡£¤¡¡¢ ¢¡ddlfggj_bjdff`ja^a\\X_WXWZ`n|} ¤¥ª©ª¯¬°¬±¯®®¨©¤¢tg_XKJKMNQW_Y\\_]`^cccelfeegdhfhidjhldfkaiigmkhmt|nov{tuzwzuwyywuywywtovxw}¸w~yrio m^\B2-1A7'&AOcf2+(%67'(*+4IgK5$1.>VM44,;4.9*/*5XJ2=N.070-B-4NR>#" $3rZ0T}ovy¶¨¡¥¥«¯³³º¾º¸»»º®v¬«¸ÀÁ¾¸©ª ¡¥¡ £¡¨©®¬¬²±°¯²´·»¼ÂÂÃÁÂÃÅÆËÅÃÌËÌÉÊÌËÉÎÍÏÒÑÓÐÐÖÔÕÕÕÖÓÑÊÀ°e_XLC7,-.')$-1T[<}§¨®£^m;3.7/&0676<5@=B@9;8;=><28565-31.-44422.'+)2E`t£¦¦£¤¡ ¤¡¤£ ¡ ¤££ ffeghgbfbffcbcd_ccc]Y^]UX[imx ¨«¬¬®°¯¯¬°°®¨©¤¡tjcSJIKKKXW\\Xaba[ggafcgdaigifiliceehhfihfhglmhnttvmuqqvtz{zuyvzyx~zyxuy~~pszvm{ {{}u`SH1-6JC2&&+?mF2)(1D3'/+&)4I`:-);TWI8-*.7/9)+);_@*D\2,6&+/>5Od># ,O|g^rtoy«¯¢£¢¦¥ªµ¶½»¹¶¾»¸±s|§®ºÂ¿¶®¦¡ ¡¤¡¢¤©ª©©«®°°²¯¶µ·´½ÀÁÃÁÅÃÃÇÇËÄÆÇÇÉÊÉËËÉÍÍÏÒÓÑÓÑÕÕÔÔÔÖÓÒÌIJ£n]_VL=2/),*&'0FaAh¡©£hYB3C<1+;52;9899@;A<:<<=;96,/1532.29762,*(.4D[s|¡¡¡¨¤ ££¢¢¤£¤¤¡£¥¦¤¢¡ ddfibicccffcaec[ae]c_][YX_dms~¨¤¨«««¯®®±®¯®®«¡¡ui\TTQKKORYVY\___]`bgedggdjdeeigmedhecfdgdimljlpprtwsppqprkqjsnnopjefy| qmqmtoz} }y|l_XN8/.EX8+!$%Dv?8*'IT20;)%%(3RH=8YaS<2%'(077*()?e:&:Z041$'3E3NzR "1af |js£±¥ £ ¢¡¥¯³À¼¹¸»·º¹®£ª°·Â¸®§¦ £ ¡¥¤«ª®®«¬¬¯®¯³²³¶µ»½¾ÁÂÅÄÅÅÆËÉÅÇÅÇÉÉÊËËÌÎÍÎÑÐÏÐÒÓÒÕÖÓÑÔÍøªtebXP<1+,('((0FdPh¤¬«mXH0C8,).8=@99<?97??B??G?85/23/08826795,*+2ELlw¡¥¤¤£¡ ¡¢¡ ¡¡¢¢¦£¢¥¢¢¢ ¤ £ddhjcefjjecbdfa`cehab\YX[`blv¤¨¯¬®®¬¯¯°¬°¯³³¯®¯ª§sf`UPKQNQSRRX^]``_ef`eghbejfieinihjjfcffghiklkjskquvxsrnlqlollndkicegqwV\U|ygis~ zzyrb[NF/),UZ.'"&$OzE0+:b4('8(&%&-6=Mbia?56'(/8:-*,,Qd,%-J;>8(03.-b`(!(>kzpn¦¼¢ ¡¡¦¬¯»¼º»»º»º²«´»¶§¨¦¥ ¥¥££¡¥¡¨¨¯«¯°¯®²´´²µ¸¹¾¼¿ÁÄÃÅÇÃÇÃÄÇÂÄÅÊÈÉÉÊÍËÌÏÎÏÑÑÑÒÕÖÒÐÎÊÇ¿¬se[XP@3*$%)(+07\IWª®ªXU-8<.-*08924<87;D>?@B@:71.*+3.1381812,),29Rr{ £¢§¥£ ¡ ¡¡¥¡£¤¡£¦¢¤£ffejfbjifbaicd^_a^_f^]ZZU_diyy¥ª«¬«®®®®°°°±¯°¯®««¥£vkdWOJLGNSUSST^^_ahbccffcfiihjgegkhddfbgkgikhilmqqtxwuzwvustsvqqqnpvuzqX[Tayzw_pz|yz~xlfWE+*=bY,'%!$O|R@.?O*$26</2-/6BkhdG5;)$!*95,%(6Xc)%*FQW8@D/'=wpA/# 1Squ}laj³®¡¡ ¢¡¦¬»º¾½´·¹·´¬¡´¸´¬£¦¦£¡¦¨£¢£¢¤¨¦¦¨¬°¬®¬®¯°±´´°²´¸¾À¼ÁÃÅÆÄÃÄÁÅÂÆÃÈÈÇÈËÌËÈÍÐÏÐÑÒÒÓÔÔÓÏÌÊËÆ³ve_aMC2+'&*((.5\GV«°ªdX-.902;7;49839=:=BF@<;>821.142/14539.+)30BXv ¤¥¡¢¥¢¡¡¡¢ ¡¢¡¢¡¡§¤¢§££¦¢¥¥¡fffngcfhbde^fe^ab_`he^V[Y\dfu ¥§«ª¨¬¯¯°¯³¯±¬¬ª© ~rg`WTOGKPRV\SX_]^adcddfhd`dkbiihffbhiieijejikknlmprwwvyvxxxuw}uwwy{v}~xKLarfq}{z wwrzohU:.2]nL&%!"'UZ>?53$'=,9>;<2FlpB8F54$&-+:7)&'6jL&)+>\\:::(+]t=(+($ (*Hxud[exº°¡ ££¥¢¢¥®»¾Á»·´¼·¸²ª®¸´«©¦¦§¡£¨¢£¦¥£¡¥¢¨§§««´²°¯¯²±±³®®±µ»¼¿¿ÁÃÄÈÃÆÃÁÀÅÁÈÇÉÈËÉÉÌÌÌÏÐÒÏÑÔÔÓÕÒÒÍÍų£vd`[U@3+&)*)'-4PHMx««°aZ65A28:>H;<>>;;;9DDA?9;861./72..565.2+,,3Jgz ¢¢¡¤£¢ ¢¢¤£¥¡¢ £¡£¤¤§¥§§¢¦§¤¡ ¡ ddffgeffgbcbab]`aaa_aZZVY]dht~ ¢¥©ª©¬®±¯°±¯¯®¬«©smdWOIHKOLRUXZYb^bdbgegfdaffedehiiifhheihgjijopmqjquqsuy{xzuzyvuxyuvw ¥anv¦¹¶}nys}| |ppzuiV8/3BYyK*# $,K ]QD&)*47#3HLCOhwVINH51''.(7>0%*Dr2*'*?]q=5*,A|:)#,3- !=uiVYp¸¸ §§¥§ª¥¡¨°¾¾½½ºµÀ¹·®²·¯²§ ££§¤¤§¤§©§©ª«®¯³°±¯±²±±¯°³±¸¸º¸¾À¾ÄÅÅÆÂÃÂÃÄÇÈÇÇÉÉËÍËËÐÏÎÒÓÔÒÔÐÑÑÑÌű¥i`UN:1&%'&.+37SOGv¬²°lY68J25:@J<5:C?:8C<<@@?6./12@4252473,2**6ASjy|¢¢ £¦¢¨¢¢¡¡ £ ¢¤¤¨£¦§¥¢¥¦¦£¡ ddembac^gac_e```\]`_]_\XY\eiw¦§«¬««¯°¯±®°°³£tlcQTNGMONRVW]_^^affag_`chblhgjgdddfghfhefflkjpnqrpswtqxvrwwyyxwyrwvv§®~½Áuttww ~zstmZ:-.:?Yw?"% $+M_d4& $6$'/8GSenVOUC>1++--0<81+*Go.'(%7ct<)%,\f)+/82%#.cs^Yg³¹¬ ¨¦°«®©¥ ¨±¼¾¾ºº¸¾¼¶±¶²°´¬¡| ¢ £¤¨£§®¨¨®¯®±±²°³¶µ°´±¯¶¶¶·¶º¹¾½ÃÂÃÄÂÁÅÄÁÇÄÆÆÆÉÌËÊÈÎÏÌÒÑÓÔÓÏÎÏÍËŶ¤j_QF<0/&$&+-(4CD9x¦±³uNGAG6?<RICA/2::A?;C?=:510/33/?36?880-*5;I_s~¥¢¤¦¡¢¤¢¢£¤¡ ¢ ¥£¡¡¥©§§¤££¤£ __ggeebgf^`fhbcdbag`_[]YZ[hin£¥¥©««¬¯±±±¯±¯³¬¬§ vk_USJGLNOTSW\X__bdecdfhefinfdgcfcbfdkabbffiikprsqqqtvpqw}u{uxv|w| }~Znvw¡~{||}~tqxe@--7SHip, '#+/HfY)!(.3()1?Y`^PBF:90*&+)*+356)1ZX-"&&;ib<$#9j@+4?6-.*W¦`[b´Â¯¢¥°¬³²®¥¦¨´·¾½½¹¿½¹´¹´µµ¦jdh{{ ¢¤¥¥¨¨¦±®²®°³³´±¯±°¯®³·´··¹¾Á¿ÂÅÄÃÄÁÀÿÃÄÄÅÈÆÊËÊÊÎÎËÐÐÔÓÔÑÐÎÌÍÅ·ª|eT>:6+)'((&*(.>Q1m¦³³~OBLH61?>@;97>:8@F:E=58121.2;./6285/+),2ASgv £¤¢ £ ¡¡¢ ¢£¥¥£¤£¦¥¦¤£¢¢¡ ¢ hhhemcbhb`beaaadd]`^]\]_V_ehr}¥¥««¬¬¯°±®®¬¬©¨¤ui]VRJFRRRVWRWX^_``acgdhlfghdhehheddgeicilgjhpoontnvwzsuywvwuxut|¨µ73=CCNYbu|}yql~q]4.2L^FvV!")%.:Zi9$%!/714GLF?;2=B-(+'%*(-00292.VF$$%,Sdl;#$Jm@DO:'!)E}tZc|©Å¹¤¨§ª²²·«¦§²¸ÀÀ¿¾Å¿¾¿»µ¸£mLHRetnyy¤ªª®®ª±³°³¶´¯²¬¯°±²¯´·¶¸½½ÄÄÆÆÂÄÁ½¾ÂÅÄÆÆÊÊÇÈÉËÌÑÏÐÒÑÏÌÍÈļ³ycG=6201*'*(-%,GX+]±²_CBB85?A:CJ@=@=EBNS>?68.0*640538>8/+013EVr~¡¢£¡¡ ¢¡¢¢ ¡ £¢¤¥£¢¢¥¤££¤ggdafcfed^_cddc`dbedd\`YYZ_jr~ £¥¨¨®®°±¯±°°°±°¬§§¡wkcWPODJRPWVZ_aY`_cfhihifdaf`Ygdcdgc_dbfghmjklktrvsuuuxxtvyywwuzÍ̽¥E#%$&&'*=m|ymirq^TE.=?bFYl>$"$*4Ntq*""&<128?:40/.3?1(1)*+4,-433/,G6)((/eTl8(2[[61.(#:yx_cpŹ©«¥§°¸¹·«£¤³½ÃÁÀÂÅ¿½»¹¯ODGSY]djmgsy}~|¦¥¬°®µ³³¶´´³®±²®¯²®´¶·¶½ºÃÂÃÃÁ¾À¾ÃÄÂÂÄÇÄÈÉÉÇÉËÏÍÌÐÐÌÌǹ¤oR@<7/1*&$%!%+.?_-P¹µ^?74>@D9848<=::HIFEH<5133.221/14311.2*1H]s ¢ ¤¢¡ ¡¤¢¨¡¡¤ bbgddaf`eddabcfeeca_`[_ZZ_dgt~¢¤§¦©®°°±®¯°°±±±¬«¬ª¡yjaXXHIQNUWWSYZYZ_`edeiggiiglefdfjgbcagidfkcghlsnroxyqwuwvwuxuv¯äÊorV7% $$)$H¥«{{oietjO904@Xe@j^("'*&:]i &*A+,.7329*34:0*/)+596-0773.IE.*+8_Hk=/3`A*$"*lb\l´Áª¥¬²²¾¿»®·½ÀÂÃÅÄÀ¿¾©xUSVX_a_fc[`hdcUentz}£¥¯³²¶¶´±²²°¯¯µª¯µ¹¶¹»ÁÁÀÁÀÁ»¾¿¾Ã¿¾ÃÁÄÇÉÈÊÈÌÎÐÍÍÎËÆÆ³®¤pdK?:6-+&'''')*.D`7>»´wQ243;FLC04B89A>EDE;9.4.2.00174685.)03:Rdw}¡£¢ ¡ ¢¡ £¡£¢¢¤¢£¡ccgcdcdedggciacched`b]\[_[cfv~¤¦©ª®¯®³®³³±¯°±®¬¬¤xl^VPJLIMXRWRW[\c]ad^`hdgiefhhfg`fhcidiiggiimmmmquwxxutvzzxzxyx¶ß·l\345+'',&)7aÔÖ¼{ujUPlWF204;\EXI)'0),F_~q""''5-&/0/7684>I82)/.59-+%/GENYQ2<<4V2hN&/\5&& *L¦k[c°½§©¬®´¸½Â»©¶»½½ÂÄÂÀÁÀuegluxwvtkf`gd[RMWT]fkr| ¦°¹µµ°«±²±±¯¯¬ª³µ¸¸½¿ÁÁ¿¼º»¾¼ÀÂÆÃÆÉÊÈÊÊÌÎÍÍËÉÀ·µ¨t`^F=8414*'%'''&1A[74}º¸¢zZ9:,;<IC=:=98??K=B555..,24/6907340+*2AUiz ¢¢¢¡¡ ¡ ¢¢¢¢¡ ¢cceaeedcgddfidcacddc^]_ZXZafr}§¨¬¬¬°¯³¯±®²²°²°ª¨¢si^SOJMOPOWWUWae`]bgffdgehddhfgmkjgfeghge`fjiiinsysttyuyzzy}yy}²Ñ®d253.-%(0;Tz¹ËÀº~oYIDTO@63?A`Gx+','(=Xcxq& #*3"*44;WA3;3FF8/*+:6.2*//+B_gNE2<_-ZR$,T0 &$"=unZ_{©¸¥¬¬´±¸¿Áô¤©¶»»¼ÁÂÁÁ¹xvy~xtnjcZO?>DFJKXioz¥§°³°¯°±´³´¯«¬«¯²´ººÀÄÂÁÁ¿¼¸¼¼¾¾ÀÂÂÅÈÊÇÇÈËÌÌÆÃ¼®¥ynh^UC=87.+'(&(*)+/<O62|®»ª^19/39EL79C@9=?=;827:04+98304;;411+1.E`k ¡¨¦¢¡ ¢ ¡ ddiichfbfdf`hdaecc`e`^^[U[\mt¢¨§¬¯®±³¯²²³¯°²©¨¤vk^SRKGIOTTTRZ^a]]_^eeoebgccbdghegcfjgebfihikgonsurrovvur~zz¡´oIH:=,%'(/U}«¡ ulU@>WSB=<5V\ZG*'.$3WY[Vo)! ''%);KAOL;4):OH40*;,''&*%(.Il_2(Mc(J[*7M)!.:mdax¿° ª¯°·¹¹Ãǽ®ª¬»¼ºÆÃ¿¹z}}th\KC:E==DLX]p§©¯°´¯®¬®±¯¯±½½ºÀÃÀ½¼ºÁ¾½¼À¿ÀÄÈÇÅþ¹®pfc^`[OHF>=C83(',(**/0;C8-y¬¼©`5;-869H>GB;;E@>;;747;30,-009=56451-6L\v¢¢£¢¥¡¡¡¢ jjdlejhegh`bcdgiedf[b\^]V_`hs} §§«¬®ª°²®®²±¯°¬© {mbVLIKKTPW\WZYb]^^_fcngdkegcbda_eegebgfdcdfjnnmoortnuvuzv{|¤^E51,#',/Ozm[_m^?>I_V>57AZOkT./.5-Ea]T:~-!$(&'2L?B9,>R)3JS4(5=)'"+' &)3OfY<ha$3\9.?#(&*P ¢rcr¾½¦ª®²¸»ÁÆÄ²¥¤©³»½ÀÅý°ux¢ym`]RELBA?9EOXg©®«¨¬ª¨«ªª°¯®¶¹¼º¾ÀÀ¿À¾¼¸¼Áþ¾¾ÃĽ¼»±«~qjXOTAJTVZ]WVVVF6/-0,,*0.7@;.u·¥t?=485:N=BPDABGA<75*-501/1--38:81050:Ok|¤¡¡£¡ ¡ hhfhfdechjfhgabbiedc`_^]Z[_fn{£§ª®«¯¬°¯®±°°²³°¯¨¨¡~h]RPMTTQRRWV]U\bbbeahkjegfhfc`cae]efclecfflmllionqttqxsvt¦H@7/,#%($QhYW\aI=LZS85A`^QY50))&D^\f@/~>%$.2D`LF;6<bE>[[B&4;((')&#'#,3N^euS%-[X/* #8t§ng¶Â¬¥ª¬´³¾ÂÆÆ¿«¢¡¨²»¾ÃÄÆÁ«|twy {£ }~sabWSGHD>>AN[x¡§«¦ª¤¦««®³°¹¸»Ä½¿»Áº¹¼ÀÂÅÁÁ½¼Á¿¸°§naWWVMXOUSlnungikaT>3-4*+%&+1F@.x´µ£ uE==423VB>CA<DC<=530+62053.385C876/7;Vm ££¡¢ ¢ ¢ ffcbdicchfmffcbef`ccbb[ZW[aerx ¨«®®±ª±°¯«±³±²¬©¡ {g]SMLOVSPVTU^[e`_d_degkicggcegeae]bgebdggiehklpjmhopqvrzA01=;>*"*Q{ePRLqgNGJ:;?Ff]^;0,014[r^P')n^*#(1%3F:?8.),28Z\a;7/#$#(''%)/0XS_Q$+I[' 1b§q§Ã· ¦«¯³¸»ÆÆÃº¦¨ªº¾ÁÄÆÀonztz¤¢ ~}[iZ^USNKNHMN`v¤©§¥¨¦ªª¬¯¬µµ¸À¿¾ÀÁ¿¹»Á¼Â¾¿¹·»´§vaTXR`_Vkfqf{xopd^U<965)*&')-AE0j«µ¤rV:7296FR9<=<=DB=6:2+.2/15/988789815@\q}£ ¢¥£¡¡ ccfchfhefljlehhhfc`be]SUYX_is~~¤§«±¯««®¯°¯²±°²±³©¢xofXMNMPSTWZZ]b``_cdtkgfebgeefdfdaY^caabdnagddiiigmpqqpq¨\J:^sqB*$Fu_O8UY>3=43FOhbh:3636NykR0#1S |7'%+)3K?7*(&0'7WeeL5)"!++*)/'&*34Blm@*1/! !Jz{r£¿¸§§©«²¶½ÁÆÅ¿µ¨¡±´¾ÄÆÆ¼loqx~}z| rO{qu\mdjc]V]ZQY[bnw££££§ª¡¥¨®¯ºº¹¼ÀÁÁÁÁ½º»¹À¶¸´´¶m[UY_gtkhqxylzrbcbZJ@6:7*)(0(3CA)d¢¶£r[812/6@K18A<>I?E338..A42<3034<457=<Ihx ¡ ¡¢¡¡ bbhcdgehikbjejcadbb_aWZWRU^jq|¤§««®¯°¬®°°¯²´¶´®© yqaXPKGGTRWXZYf^^bfhhefcbdgecddfcgbcfhagccbdgelomemmkpoz°¸yVk¤fOFg||vW;XQ70+3:GRlxeF@>CJYzb6"#&?pC//();SP2'%))/0TehZ-&('$(*..'')(0,7Ra=(!% 6zqmw»Â§£¬¬®·¿ÀÂÇÄ»¬¢¡¢¥¶ºÂÇÉ·dalqqrwuv}xt|mW3Ys`w}[Xqr{phdmc\c`gly ¥¤¥¦«®¹º¸¼ÀÂÁÂÂÀ¾¿½Á»²©oliekpw|ybenestok^OOSRG;<M8-6/+(1EJ*\·©pYO40258L49B;?F@:218/112/342956,37=DRp| ~| ¡¡ ccdhggfhjiblfgddefa\]ZT[X[agt¥®¬¯¯®¯¯±®±±®±³¬§¥ xp^[OJLLMTSRWYY]eaagdficbgggfbihcd``jedbcfieigniimmkksr±Á²¬« wwzhum;7;='39FLQZzp=FBLGOdr`+"!"7[kV,+1)0ZW4.*$##/Lgka4(+$'%*21--&,*%',;T&!-a¡shj¹Á°¤«§°¹»ÁÃËÈø°¨¨¦²º»Ä˲tUd_hlke^^bfeikiW>.Dn{SCdoHhn|}j^utolqpfmy¢¢¡£§«±¸¿ÄÄÄÆÃÁ¾»½À¿½·¬£|zzyonup^FWJEZ^T]NJMQIB>AM9)(&--8AK-dº®nc^--.27^;>D>@>9:12+,-576657740.15<H]w ¢ ¡ __dadcflgkdkaed^daa^]ZTVQY_gs}¡¦«®¯°°¯®¯°±°¯°««¥£ xicUOOILM[TTTW\e]\adcdibefdcc_ahabagic]`cdidbdjghippx ¨»´¶¬¤§ fVRU\G9,;A)'2AQVewG*IVQU=cw_$ !!0SRm0/,-;S]0/-&$)3=^_kW3$/+*+,,3).**)-&'D>">¢ji|¯Åµ£ª¨¯º¿ÄÈÈÊÀµ³¨®¶½ÆÊ®dSU_b`dgd`JKHBPHP:6/8Qh^J/.BD@UpzVdvzusttwy¢ §®¯»½ÃÁÃÅÆÅ¿½¿½¿¾·©~wYPWH75688@F?AD>DLFADI@-.*%&.6GK,[·±togV01/6:S;<CAB;74/3.3.2.6035;50**3>Wk|~ ¡hhjeidamddbcdcbdjb]\]\TWQX^dt £¦«°±®³°®²±°°³¯²¯¨¦¢£niULGIILMRUXU\__gbcdccfihcfdbcdfddaa]^^c_dcfbhgnw~¥«¬zN3B70.+-/:V\8JKQ\q{`1+?HXVJhsN( "4\?g@&),5Y\+'%%#).0B[u_9)(+-0-'.,-3(/%#"'<!!(owdn¡¾¹¨©ª¯®¶½ÂÉËÊǼ¹µ«±·¿Å̦^OQO^WMDFWT@?B=7:741+24<67/+.0/9S{d`x|xz{|wy¡¢¯¸ÀÂÀ¾ÄÂÃÂÁÁ½¿»³¢fl_G:9731303488<;A=FFA?FN2'*/'#+-HR+VµªpwqSD41/;[A8<D;87340010011.3034*&*4:Ro }¡¢¤¤ bbgceeebecbgaaaffd`^`UYTQS]iv~ ª¦«¯²®²µ±¯®±²°¬¬¨£|peTPPTHJLMRWY[][[bccgcdhiegfcce``c]^dhfb_d^b`dqzizyL+1+'!'$(<9KIQXVlvG2:APkOLjsK*+'*9`7PW/+).]d.(&#"%0/:H|wdA/'$)*+8..0(%##&$"(N mf»¿¦¬ª¯³»ÂÆÊÆÉ»¹º¶µ¾ÄÈZGOVLOHG;4;@76852611434521-+,+('+6ELiy}y¡©¬²¹¿ÄÂÀÅÅÅÅÅÆÁÁ·ªrc`CE711657002/1/96;57>?HAG:.-0)$%&-HT-K¯±¥|rnSOD019SD=@@B7=0//2081.-0-794/(&-9^u ¡£bbigfdgcbcbgbccdZ\da[U\YPUVgr}¢¥ª¬¯²±²°³´±±¯¯«§ zm`XZKHJJRTWVRY^\^cffjeffdbddbdfbacae`^c_]]^a_j¡¹»w_cfx]D+),!)BVg]MO\]hT<=D^hFTsxQ)'%*0d46IF,00bf.+',$'%'+/[z{mO2-*-'+(..+$#+29y¡l}©Ë´§²¯°·»ÄÆËž¸¶º³»ÆÈOBGFFDC?9425423412.0/.1;0785@+.(&-**8^~}} ¢©´¶ºÁÅÃÆÈËËÇž¹vW:<3152233310/-367968877;FF4*(1((&%-KN.I¬± mhULB5-7MG:;9E6<-.,2/4/-;99873-%%.>cy ¡ ccigda^bagdd`^_]]^b\\XVQRSQanz¤©©¨¬²°³°°³²²°®±©£ynbXYOJGJUSSTYX^VVea^eiidgaebfc_be``dc\^[\ZZ^dw¡Èξ}|kRE:NjdD(&$#(>eth[MOYj\XcOEKkOHa{{T%%-'0_=(6U9.1Xs.&*'#&$$/5oxqq_?&$#&+/23) %*&Z¬wg{Á¦¦«°¬µ³¹ÄÇÊÃÁº»¾¸ÂÅ¢WEA@J<5684143392.23-.-.+36?SG62.(.''/(6Wnz~¥ª´º¾ÂÆËÇÊÊËÊÁ»²ZM;8:068618>910/32277;@547?>22.30,-$+/FD/E¦´ne]GGJ03K>?<@A43/,0/130,988285+*&,Ig¢¡¡¡¡ \\`abb_]]d^]`^\_\]Z[RPQNMTXbms¤£«ª¯²®°´±°³°²¯±«¤zocSMFDFOIPVTVSYTYc[]^hfcgaf_ac]_da`a_c]\UX]a{ ±¥ÆÕˤxthN20JRI4'$"!'?YusfNC<eb3AfTMNeEOltN"/)6W<#)>T=-^9,,*(&##($)@hxxqfF&")%'-/$)&" #D¡ec¹Å¯§¤«±°·¸ÀÃÌÈÿ¼¿¾½Ä§^I@ABB:51.04425735-**--//NBavn\F9-)&/('.;Vs} §©³º¾ÅÊÌÌÍÍÏÊǺuJ=74:322<34GUZJ=;1./38A<8;8:550-,-*$++2DD-E¨·¢ab^I?>?7SF;:=:30../33207-11>50.(*4Rm ¡ ¡\\\]aa\X\\[a^YZ\^Z_TXSPKMMS]lr~¤«ª°¯¯¬¯°¯¯±¯¯°®¨¥ {qaTMEKGKMSSVYXXZ\_\___bfca]]`a`^`d`_^YVWWSTlÍÁ®ÐÑÅysW62EM:.'!" %3wl[F2.S~^E78YXN]YDPpK)#$1<Q?).:QV4[G%,41+%*(*)0>nyoleQ9+'',)"!%! 2j§q`~¬È¼§©ª«¯³¸¸ÂÉËÉÁĽ¾ÃÁŦXCKI>;B3//4////7.30-+-.+27EZ¡gN7*()+&)-Cct~¢«µ¼½ÅËÎÎËÐÐʼd8592/26429>2U~|i[C0,+,332;78;1..433+'+.2LJ+A¡¹¬_ZXG1@4=LJ><:940,/,0//11668115..2@]y bbd\^c_``^bb\\\^[Z\SZRPMKMPai{¢¦¬±¯±¯®¯°±³±²²¯±®ª¥ ynbUIJJBINSUWYXc^[^c`_e^dcaa^cg^]]c[ZYaXVRSTÍ˸·ÑÍ®w||h {hZ>WQ/()()# 2b{_4-)Cxe1(-/EYWdVN`a/'#"/0IE*0/7@3NS)/,+.*'('$*4Gf_HXSl]/()'#$!%R ffÂÆ«¬¦¯²®µµ´ÄÈÊÃÆÄÀ½ÀÈaDHPJJE9).001044.*511(./J>D^¢ÀÀ¯vb:*&%'*,2Pn~|~ ¢§¯¸¿ËÌÒÔÑÒÎŧo@123--*/;8Pp[Ks^@-&)*/675976.(/32.*#-.N@,B ·¨`RfKB@;?UP<=;:2/1,/213/2062012+15Kj} ¤^^aaaa^\]Z__[ZZYZ\XUOUYJLNQ\hs¢ª¬°¯¯¯²®°²°¯³°¯°«£¢{pdWQHILKPTUXY\[[`_d`abaecb_cfa\cc^`]ZXWXWSWÍÆ³½Î¶yd[oOLU6,#"0.+*Xr`4&.7lvD$%)?Uiqc\c|xI8.,%,*?;)+0,./Fe*0.00.*1.*,/1::,1=NYU1*&" !1qj`x°È°¤¨¬³´®µ·¶ÊÌÈÆÁÅÅÅïiKPVUKE<2*))24=LB*.=;,'#'VV@Vx®ÉË¿°£aF+,:KJ?Nl{|yvx ¤¦ªºÂÉÏÕ×ÔÔ̵zP611+*1,,66[E¡£jO6+*+*5768:5.3/.1-$&+-N?*6¡·©_XbXD@?>XB;<D<41,,31347730/.-+*0?\p ``dii]\]a[]b\\`Z[WYRPOPMHJR]jw¤©¯®³±´±±¯²´´±¬¦xqaSHIMHNRXXYZ[aeafaadf^^c^ega_cdc\\\[[YWXUU}Á®ÄÅ~]miA>G3#%*822PucM=%&2_rM2&$+,H^{wb\Yup7.*)'F.-0&&7-'+>y|>,5*+(*+)2/.0..)),?H@8:$&& $Q ~`lޤ¬®±·²±·¸ÃÎÊÈÆÁÇÅË·kPQXUNC816+)+3@QYP2<ON/%"&6Y@2H£ÌËÇÀ¿¹jH;>gkSJcz|xyvy £©³»ÇÐÒØ×ÖÓÁ[C124;4/++<9KK¯z^B7,*-1213720-11.-&'4>PG-6£²§ddUk@?I9^A<?;76,-/.0+5<2:2-///09J`w ¡ aabb^e\`a]`_[]^[ZVTRQSPJGKQ^px £©®°´²²¯®¯²°´¯´³µ±ª{k_YLHKNPVVS^```b]^dcde`]da[abfaf`a]]Z\ZVWRH]À´½Å´§gG-KQ+,$%AGTl[=-0%7LeF?.'#(1QVvWZRq445-*-,,$#'4*++3fJ2=5(')(-..,922()*393*(.HJ8;sf]ÂÉ´¤¯¶²¸¹¸·¿ËÎÊÆÇÉÃȽzP[]VPD7844*-38E[fY19]\L.')CpM7BËËÆÆÆÀ¬cGD]mS[tzutps§¬¶¿ÆÒÚÚÚÖÌnUD71@C?6,&;;DbiE³§ `K<4/0D-/3;44..4-1&'(5^=+3§¯©rYWeN@CGT??:9520,.8=1.136,*+.24AOm{£ ~ffca_c]d]`^c\c\\\VTWRSNJFLV^lv £¨°²²¯¯°³±´²¶±±²´¨ {pbTNFIJOTUUZZbe[dcdcfeecabcdcleecbea\\\ZTC9L¸ºÁ°£xhe1(+)#%(-Joh]D*$.0MX;7E;-0*;GW_A`ZrA370.*-0)(4)/%&-QT6D//##&.&-67/+)&281*$(,4GIau_sªÍ¿ª£ª²»µ¼¼ÈÈÊÆÅËÉÈÂ]ajeaVR@6201-.BG_rjF4[bYGABZlJ4W°ÏÌÌÎËÈ¿«XFX{x]Ykvrpqrw{ ¥°·ÀÆÐØÚØÔ½dNNN2;TO>*-FSFRKD²¨ kRD6(.6)*/-/3*.)2J?+1=`;*:ª±{GThWFDWV6:B5613/11/.30100*./78AWr¡ |{cccabj\`cd]d^Y\[ZVVXUTNNHIR^lu §¥¬±¯¯±°®³²µ¶²¶³®¨¤{og\PHGJNUWR_a]hcdfbfdfacjheefkabbfe]___WF21I¹TSl¢¾Ãµ©\msV@$&'+&!/8uwZK6)'8NVH46KM/.1:BebMQdp9/..,*//0+7.*(*0DyxE?,)*,*-,*/:.*%&')+%&"$%-IiqUk½À¨¡¨³¾ÃÊÊÊÄÁÆÇÆibfsni[TQMC;-*-DJ]tybC9SaTT[SG9A}ÄÑÎÐÒÌÎÇ·mLFk~j[`pplpuyz{ ¥±¸ÁÈÔØ×Ôʨ{YUg`<<^dXJCWhUJ:V¢°¥tM>;,,+(*,/0.1),1*'*,<a:,2{¨®³NOe\LAXV3:D=/+,/3121434534/637Gbs ¡ ~ddabgd__baa[e`\Z[WY]QONLDIO\hv¤§ª¯®³±³²¶´±·µ´³µ¯ªª¢{raXNNQPPXQYZbcc^cjjggkaijcgijfffdekhcbXK;,/9t¸UBTn§ÏÑÁ²©¡gP.5452*&%)*1CWnbK.1,.KU9B4:KY5*3?JxjYV{q:.**-61.+%8(%&&,?fO4-1)4*)0,0=,'+%+*'",&#&/YwrQ\|±¢ª³»ÂÆÈÉÇÅÃÃÂgldswztnd``VN6.3DRYkrW:<OUYOK6@q¬ÎÒÑÒÒÌÎÉ·z]Sb~uebkoourvx~ ¢¡¦´·ÅÎ×Ú×ÕÆn\ixw]9Tac\UVYVE@z§pVE?/,,+((/0)+6+*-*,1Ef3-1r®¬¶RG`ZKIUY::4>33/,2246:654.,-0-6Rh~~~£hh`dcc``b^bdh_\[\\WUQOMJDGNWfx £§©®²¯°±®±´µ´³µ°²±±¬£ {qc[UNISSVRZY_a\aefhkkd`ekkl]gkhliqzkTFG@9/)+?¬qmÁÕÍÒŵ¬k8)'*(-0##&./=\`RD773/<CQ=I7<CU:8=GTu`V~u?-&1)03..5@.+',(:SuL*,404+-**540*.*'&*'-(%+?|fPe¦¢¢¨ª»¸ÁÆÄÇÆÄÃÁÆÃlcpqy~|tuxneaK1+3C\ir}pX=96<9?MkÅÏÎÐÏÑÊÈÀ°s`f|}tenrw|tqz¢©±¼ËÕÖÚØÖ¿giluQ@Ufd_bQDGn ²¬¥mRE</47)-+.-(..','',3Pd1,4j¯§¸V?ZWLIVO76561->:/400=<51+1-.05Xk |¢§¬ddcc_cbace`__`YVZ]V[RLMIDJUZir¢¨«°°´±³°±µ¶µ·²µ²°ª¢¢}yqg^VPPLRTY[[ahecefihhiiggfmecfkftjN827:1-40E« ²Â¾¹ËßîáÒ»y?@*,).)()%(03S`[?87EC;7;TH<9>=HUNVPXuhXPs|H4$',://18;4'-*-4EO<*(091,+',-68'&%# $*024>m|SU~°¸¨°²´»¾ÃÆÉÊÃÅÃÅ lgquvu||ulWA/.Hcqotxq_Q?@JX~¼ÊËÉÊÎÌÅü£wis~zops{|wvyx¥«¯ÀÏÖÛÝØÏµboroYMJXXUJLr´¶±§jO@512.-0312(.-++**,2P_93:hª©¸\>V]XQ\P::785./.6532?94/,+,+0;`s¡ £¥©®±ccigb]bd^bcad]]UZYZUROMJEDS\jv| ¦¬®°´°´´±³³³¶³³³°¯®£¢xrjYVKOSOVYZ_aficgaklhohhjemcgjkdkl;73>6069IUt¶¨¿¶ÂÞôñæÏ8:K/$'/'#&%-3SdPPGSRXG31?VUFESROa^ZD`hgIUm N6()64,-)?+*5,/*5=;7,'6?0'&(,/04&#-,!# *5<XbWe£Ã¬¬´±´½ÃÃÇÈÅÆÀÂÀjjrvzru}{}vdRCCQbrwv|xldet¢ºÄÆÉÌÎÑÎÉÆ¯pny~tqys{{| ¢ª¸ÇÏÚÜÝÕÎ}daj}qhWNNUcz¶µ±¬¦{hQD:760.//2842')44,/4SW125Z¨¹¡d=P^UR_JF34.333710*.68:322*.1Rc{¢¢ ¡¢¤¬ª¯µ¶bbdbehdbababa_`V]\ZWRRMJHDQ[ct{¤¨«¯±³²´µ³³²µ²°´¶¨¢yqe`VQWQY[Y]abdehggpjmjknmllhjcOC<C.42^dUM_w¦¸¯ºäõñâÁr;3DdC&(')(&*1HfnlbXHE22)+6TPSZ^XVUXG@e ht8RpYH/;>2('/>1+''#(/:91-6B>--5/,-16'"'#"! 8*L {cfÂÆ ¬°¹µÀÆÆÅÇÄÁÁ»ehq{zy{}{si_Z]^^nw¶»ÁÄÆÊÎÑÎǵsp|}xrux| £©¶ÈÑÜßÜÖʦ|eYY`xypt²º´¬wdRD0/7>52/5534/.47320ZW519Z«¾¢fEJcM`SMH81,02-1,+056:9.,2/+3Mf¡¢¤ ¢¦©¬²²µ·¹cc_dffbb_beab[[\[VY[VNIIKISXk{~£¦¬°°²´²³¶µ´³±³³®«££qf]VQTURX\[Xbdagiilolinmklq|j@7/)*+58I~xx§µ¼ªµØëÙ½S=+2:mV*('--.@ZyrjU.+/&"'Bc5>X`TM@VLJgux1Nt¤hZFJ1--%-8+&$&(03-0,0;?96-+/2C:.3)#'#"+(:n_`{¬Í¾¤§³ººÄÇÊÇÆÃ¾¼`auyz{~}{tkbhSJp|¨°»ºÁÃÀ¹¯§ª|tv ~}wvxz§ºÂÏÜßàÕÊ¥}sf_\kw§®´®£|e\L5.4B?=775:800261226[U777[¥½°nRT\SeF>>24,-(.+,+0.647.*'//BYt ¢¡ ¢¢¤¬¯¯±²¶¶º»¿ggfgffc`cab_bcXX]ZZT\OKKI@QYhw£¥©¬±²³³³µ±´¶·µ´³¶¯ª¥¡qfaYUSXUXZ[_dibemnknpjnmrfy T.1,*.1:Fa¡°Ã¿¥ÍÍ´R72-/-3Sc?-3:Ifz h]k2$ *"0Lm'7XZNMHN]Oc w7S¦tsoI@1FR$2*($$*$+.4220171.900.)8.&$,""+RlVkÂ˯£§¶¸¼¾ÇÈÉÅÃľa[lv{|{~}pmrilxqns ¨§¬²²ª±´º¼² ~yvxrx~y©µÁÏÛßÞÖÉ©{vxu p]L8,/?KC=88:83/.1J6279[T.04X »µpULVXkB6C@F/-*.9-+13:4991*5ALav¡ ¦¨§} ¤¨ª³µ¶··¸¸¼½¿kkgfbcfaagjc`][[ZWTRTOMIHGN[dt¦¨ª²°²²³³·´µ·µµ´³²«¤£{ph]UQOPV\``a_ehjkjpqloppjlª=%-#)7>Mb¤Ä³L.3.*)$1Hq^P_jt kSIF]U*$&$()5\x-3`XPJNNN\]~zRd¨ons@79_I+.-0)#)).+7-/./0+**2,:-8'$$"$"!"9w_a¶Ê¹¥¨ª±µº¾ÂÊËÉÂÁ¿^_htw| xu}~~}kmj{n`x §¢¤¯«ª®}|tz{~~ «¶¿ÐÛßâÖɲ¤ ub[N@1.8TSKF;65=83)0H6548SK,-3R¸µ~ZLMXeI7DA2,1210.)'19<80.69zWlx §² ¥«¬±±³µ¶¸»¸¸½º¾¿gghieihdkkf`__XY[XVPPORQDIKZg|£§ª«©°²³±µ´´²¶¹´·±´¬¥¤qe]VRVTYZ[`dbgiifpppmtqqnk@**'1Kbn}¯} ¤º»tB21<:7,.7Fpmjh[VD5:Acg3'"%%)1<`y'5YaZH5EEVepzge¡mMnDEk_5&--+%*--*/.+,/0///3193-*1#$ ")]nXfÀÁ¢¤¨¯¯º½ÁÇÍÆÅÅÁ`_imtw~ zmgw|cXthjrd¢§§³°°¨|v}x}{§´»ÎÚàãÙÍ´¨«§£|yqtp}X>B><?@B?BXZUE77794.-/7445BRO3/1S´¹^TETbS@8;,-1.606.2;;B4016BM\t ¡§¨¬²´¶¹·¸º»¼½¹¼»¾¾ggfggnie`aga[_XZYZTTOQQJEHJYds}¥¨«¬°±²²´·¸·¹´¹¶·°¨¥ ugbTLQRR\]]cefigiqrpnonmjo¡U).4Ei£´~} ¤³b@9?JE?28088LuxP9>/3FfyF'#$**/86[y68OjgZ-3MXhuiqp cJ\]K)#'-'*,&,(--+/34*).88./+"&&"!! %F|a\²Âªª³´¸ÁÂÈÊÅÆÀXRijs}~ mwylZqnze}¦¦£¤}ywz||~¥°·ÌÙßãÜ窣¡iompp`t\C:L;CTVROWUSA:41;3(#+2.99JWQ03:L·¾dUA\cQ856./.021.(488544/5BYj{£¡¢ ¤¤ª°±µ·¹»¼»¼¼¼½¹¼½»½eef`bkigech`Z_]XTTUTMOFEAIMVep¡¦¬¯®³±³µ¶µ¶·»¸µº´°«¨¨}tgaWMPWVZ`bj`fdlglnmjnnnjlze9AI\¡{tzp]RD@GF9*).11+/QqYD6Jkx>5..+-20-Qt4MI[a]9&2Sfowgospccwxh($&+2-02C)(*0...-),,/164,(%%# ""1jmbi»¶¡¡°®µ·¼ÄÄËÉÄÅYQ_flv| w{qn~{l ¦~tx}~~¥«¹ËØßàÝк®£ nxrwuqxkUA]OJO\VUQVTD65792-'1=31:PLT2,6N´ºoY9ZcN=2;422451'.5=?0--64Deo ¡¡©°²·¸º¸¸À½¼¾À½½»»½»¾gghifkjd^agaZXYVSUWURQKIFHGUft ¤¦ª¯³´³°´¶µ¶´´»»´³®§¦ujeWKOWTTZZ_cgklhmpqrsnmonpaotwr{rNAJXTPZXI970')+/.%&<p^Ni~jNNRH,6;((NqA:JSjgM+4\pdaqxtyswn1#%2:2-)+0.33*-20-.,.4526-%'%"&Y¡bfr¨¸£¢§²²¶½ÅÈÊÅÃXPQ`klz} {}~wwy ~~}¡¢©¿Ê×ÝãÛÓ¿´§ }||}~vkQj^KQba`Y]RE:/97.%$34+18NGQ2+6N¯¾£u_7QgA8-68,,3/)(.;<735/+.Ocz ©«°´¶ººº¾¾¼¾¾¿½¿¿¾¾¹»¹¼fficceb_aca__\X\RRURQKMHECHRhp|¦§©®°³°³³¶··¸·´¹´¯±«¥ qh\SNKRSVX\`c_edgkmnujkiiet¦¨nUEFCCED`jR71/'),*3'(46Cp~y rfptO*59#(:gDCEBmr[@1jjQRrv y4'(+-483),4320-'-623.363+/0&!":umbp¸©¦¯³³±¼ÁÊÈËÈ¡\OS\cqtz£z{~~} ¡¥¬»ÆÒÝãÝÒµ®ª z}}lVfgM]h_b[a[N>5?5-&(22.2:<JO2*6N«À©{b;AeAA5)8/)/&,*3DH<,)%-7Kb{ ¤¡ ¦ª¯³¹»¹¼½¾¾À½ÀÀº½¾½½½¼¼¼¿ddfdbdc`^c]\]UYVTRTYPMHE>DMTcny¦«¬¯³¯²³µ·¶¶·¸¸´±¶°¦¤viaRNHQQWY\_abgfjmlliiljkdmx ¤¡¥¬¡n^EJQK8?TdTP4,.0%*<6*$746>g}yyqE451&(0WUMD>cukWEjVNG]rurzxtYC3@,,('*3-,+-0/.-5+..*.)0&'*& (^ jf~¨¿¨ ª²·¸´ÁÇÈÊÉ©_IU]cmut}¡¢¤¤¡¢ }~¥®¾ÈÑÚßÝÒȸ¶°¦£|}|rcii^dgef^aZN<6?9,'&44518;LF.-3H©»¥a><[J4<+70181+/3BB6*-*/2Pr¤«®´¹¸»¿¾¿ÀÁ¿Á¾½¼¼½¼½¿½»¼¼¼ddgdbddd\_^]XXRRUQRPMLFF<<JTdp~££¥ª²°³¯´´µ²·¸¶¶¶³³®¦¥ tgaULPQT]a]]abgfnilmklmklikn ¦«©¥ vo_OLEBCCR_VP@:+$#'2Q0/->829R}qxtv^L?08-'*3OMJE5?w|oa\J?J@am_bTT^]HYNJ++.,.202-(.1763//,,+'"#$!"=xsjoÀ²«¦ª°¶¼ÀÉËÏ˶`FQ\^gmqyy{ §§¦¢¤£¢¢§ ~{{¥©»ÈÏÕÞÞÕÈ»º¸¨¡¢~|{wsntlhlnmheUQ?;D;.(*85,=<=FS254F«¼¥^89]A69+8:.72,11>:6,'()AUs }¡©®´¹º¼¾¼¿ÂÁÀÀÀÀ¿¿½½¾½¿¾½¼½¾¾hhbbca\`]\Y\XZWSQSTKME@<76?M\p¢ ¥«ª¬®°¸¶´¶³´··¸¸¸°®§¢yh\PRTNR\[^[_bejgmlomnglkomlx®§vsvo`G?=:BMicYM51('%9<[<1:FB6O`biirik^dF:3'*,"'<=KHF55NuvdKWa_g`WWi:>Y^<K350/-)+-.-+,/)34/.2)/1($ $#/d|dhz¤º«µ°³¶º¿ÅÊÌλp<NU^enovxw ££ ¤ ¡£¥§ª¤§¤£¥¢§~}¡ª¶ÂÎÙÝÞׯ½ºº±«££}~zvnwpvqmjbaR=:@45%,640:?8JQ1/4F¡¦¼®d?A_M.9*.910),15970+(3+Cdw} ~£§±¸¼¿¾¿ÀÁÂÂÁÂÁ¾À¿¿½½½½¾¾¼½¼¼¾ddae`X^[]YWSPTPRSSRLMDC<97CM_o{ §§©®°°²¶²³¸¹·µµ¸´¶¥£uf[VLPPZXWY^adgibkjnmlmmlllorrpmowjT=;8>SifT9<>6)%./NX:7AW\WleuLBIFAehPH.,+#"475>UR301Nr~w}xvpJIkm@?^F&+0/+,,,/-'+2'**/57-310//&&'+Eiej´¬±³µ»ºÃÃËÎÌÁ?ET`fpporx}¤¢¢¢¤¦¡¡¢¡¡¥¤ªª£¦°¬®¤¡«¬¡£ª¤£ ~~} ©´¿ÐØàßÖÇ¿ºº´¯ ytwpvurrk_UI>H94$,560@;>TJ3+3>£¹¯j<BV\./81;-*%(11:+-,(//Lf{ ¤¬±¶½ÀÀÂÄÅÃÂÀÁÁ¿À¿¿¿¿¾¼¼¾»½¿¿½¾ff^_\[Y\\^TXUTPMORSPHEE?>?AJWj{ ¤¦¨¯±¯±µ³·²·µ·µ¶¶·²«¦§sfZZPJNQ\]]_cbgnioonlljqjlmntupkgqokL>;JGO\n_A//<1+*1=USF;Ngjsl|nE;13OkaS2%%)&2@,9=_ZE605Fz_;<rKHr*)'+1,2*/1/,//'/-12>//002+)),6joadu¡´ª²µº½¼ÆÊÐÎÇ@?LY`jpquuw} £¤§¥¥£¦ª¬«¦¥ ¤¦£¦£¦©«¨©°©¤¦¬°¤¦¥ §±´ÁÏØÜÞ×ÍÁ»¶·¯¦¢~yvrrsomoc`U=>?87)3729?;<H@2)7? £»°b9=ST,.5191.',1463)+*)6Oj| ¦«²¶¼ÀÂÄÃÅÄÄÂÂÁ¾Á¼À¿¿¿¼»½¼½¼½»¾Àcc\`]XZXWZYSOQPPRRMKEE=>=;AM[k}£¦¨¬²°³µ·²¹·¸¶¹·µ¶¨¥vg`\OMTUUZY]d^hfjirnppoqllrtyxomltrfOCXav{xw\L83833*3.<^[QF]wvmfcH35EiuZE&$#&.4,3MShpQA7)3f{RB:BfRy¥¡Y+/)-.33//341&*+,),15064234)-,O¢}fen¹£±µ»»½ÀÃÈÍ̤?>GP[^kptw{|| §©¨¢¤¡ª«¬±ª©¨£¦©¤¥¨®°°®¬¥©¥¥¥§¦¦¢§~§¸ÂÌÖÚßÙϽµµ±¬¨£{z{wyrojhfYB=:86+4/29B<;GA2"-;©µ±¤k6;QH*%03C*)'+565/+**.>Xu ¨®µ¹¼¿ÁÄÅÅÄÄÃÄÀÀ¿½¿¿½¼½½½¾À½¿»½¾¿``]^]\W[\WUUVSNSTOPPDAC<>=HVZgx¨¦©¯²²±µµ´¸·³¶·¶°¬¨¡¢ui`WOMQSW[b`d`fgfimoilnprnptzyn`nrxodpw\>778100.7NlaMOhs^ti^>@GllP.%#&&/1-8ObqiVP<<GLOmlS;\hs¥©q:035341031276-*/,).1.42,-00&&:nrlh¬¾ ³·¾À¾ÃÄÇ̱L8CJW^dopv|zy~~ §«©¡£¢ª«®³«ª©¢¦£§¥¨¬®¬§¨ª¦¨¬¨«¢¢¡ ~~¥µÄÉÒÜÞÙП´³´°« ¤~|}yy|qpkcTEA:;4(.13<:6;PI,"*:v¦µ´¦n?9EN(#163+5-/6651**,3Der¡¢¦¯´¸½¿ÃÅÅÅÈÅÄÂÃÁ¿¾À¿À¼¼º»¼»½¼½½À¿¾[[Y\V]WZSRTVPUOLPHMKFCA;;:EJWnz¡¦©«¬²¯¶±³²²¶·¶·´µ®¯§£wk]VNNNPUYVY_agcjimpmlnoouru}rfku§ª¡x^OC8=99A?<9QudMFrhzoZXSLf u]@"!$'+)2*8<Pb{~cTWVPDDbtz{v~;@FID@B=/+--53-.,,)00,307,+1+(Q¤|gfp¿²«´»½½ÁÆÉÈ»Z56DPRajoqox~x¡¢ª©¤¥¥ª©°¬¬«ª¬¬«©¬¨¨¨©¨°¯¨ y z}¥®ÃËÑÚàÜÒÆ»¸´±®¨§~{zzzqpnd]J@/83(-8?@0>>RB1,):|§¯·¥t86KI)%0A81/)+321../-;Tlz¢ ¥ª³»½ÀÁÄÅÄÇÄÆÅÄÁÁÀ¿¿À¿¼¼½»º½¿Á¾¾¾ÀÁWW\\[ZVZTSUVUQSMSHMGA>::;=CPXiu¤¥¯²¯´±³±µ´·³³¶²°¨£nd\YQONPU[\^_aeaejfjmlnrqv¤¥¤vbKHF=?=CFFB8>_yWFQmxtzW[p^gyr\I*&$(($(1-039C[mtTamlbXZM[uDBia_QQULB&$(324)&/,*)/---+((,Bwl_jv¤¾¦±¼¿»½ÆËÍÁ{54=FKUflqpux{z¡¤¥¨¨¬§¬¬°¬°²°¬«©¬¬§¤¬°°²®±¬¨¢ {z£°¾ÈÒÜàßÒÊ¿·°°¬®ª£~|y|vsmk\MG7;5315:71F8X>'#%5y¡¬²¥wE3F<)%*A3*)+2790+,-+;Zp ¡¬·¸¾¿ÂÇÇÆÄÆÆÃÃÃÃÁ¿Á¾¾¿¼¾½½¼¿Â¾¿½¿Á¿^^]\kc]XV[UUVTVNLLNKKAB=<;BOZgw¤¦««®±°°³²³¶´¸µ´¶´±®¨¡~oh^PPONWZZ\Xa`a]ddlnot ¢¡¨ª¥ycRJLLVQ@6678=CF=2HeiSH[ixpSSayqvbD)'$))' +712-+5KSjfpuy|oj^Uhh?0^}ufSVXS/&-26-,0/,/40+*+(&',S¢{feoº³®¸¼Â¾ÂËÍÉ313>KS__nqtywzz ¢§©¨§¦°¬´°¨±µ´¯¯®¯¬«¥©±²«ª¨£¡~|¬½ÅÖ×àÝÒÌÀ¸¬«¨ }~z|uxqj[F88;/+17A74I;S7/*'.t ±yI2A5!!(C<,#/9575../(Ddv £©²¸½¿ÂÆÅÈÅÅÆÇÆÅÁÁÁÀ¾¿¿½¾¼½¿À¿À¾ÀÂÂÃYY[]gcVWSQTOSRRKJJHDFA>;99CNal{ ¦¨®®±²´²²²¶¶·¶²·±¤ tj]SONOUY[ZZ^baegfks ¢ ¢ L<D48H_U<88<>=>AEE9PlfVLUwqNPatxbV>.+)1)+&((-)(.0>SOBGnu|~{viL:50-1_qb`_I/,343.9,.+0/-+0(()%0onfnu¦À«´¼¼ÃÂÉÐ̨=+)5@KTYequtty|}~}£¥¨®«¬©¯¶µ¨©ª±²±¯¶²°°°®¯±°°©ª¤£ } §»ÈÖÚàÜÓ̸¨§¤¦¢ }zuunhXF98<3,3?I59D<U9+2+,g¤³«£Q.D@.-);9+(,383*..-3Qhy £ª²¸½¾ÀÂÅÅÆÄÃÄÂÂÁÃÁÂÀÀ¿À¾¿¿½¾¾¿Á¾ÁÀÁÁÃVVVWYXWTVROUKMRNLNKHI?>;57ALasz~£¡««®±±¯²µµ´µµ³¶´³³®¥¡th[PJMONRRXY[`gkgt{}pB/4.<PRT>54;?B?D79ADQg^QN\ZQl}[F<32374.,(+(-*/.16;OO?JjtrnL&#!'(7b |ujV>4.--.-/,/1-,..10*,6R©spt}µ´³»¿ÂÃÆÏϽW(%.4DLW^hovuvy|}~¢¢¤§¨«®ª®²²³°¬©³²°±±±°°®±¯±®©©¨¥ §ºÊÓ×ßÚÓÎø¯§¥¤¢¡ ~|v~pg^J8>;/+;:A=4CCU7++(/_§´§¥b9C6()*42+2589+/)*-4Vn¢¡¢¥¯·ºÀÀÂÄÅÅÄÃÄÅÄÅÂÂÂÃÁ¾¿À¾º¾¿ÁÂÃÂÃÂÅÆÄXXSSX_XTQOJMQ^LLLOGFIC>9;;CP\kx£¨«¬®°³¯µ±²³²··¹´´¬§£reYUKOJSPTXZ\ffuyu{~{~t`SF752B[ZMK>@?@=8I=3>HVcXER\vwbo}t9440454/)/12-4,(0,14G]W@5>?SjM/#$(01D`~tgE78(-.1..,--.).2(()/:kqsvs»¨¶ÀÁÂÂÍÒÉ{, '.8GT`alov{{y}~~¤¦¦§ª¬¯±³°´¯°³°µ³®®®³²°²²±©§¦¢¡ {¦»ËÑ×ÜÛÖÏÇ·°ª§£¤£¢¢~~xzytjZE9?@0-/B<54N@W93**0\¡¬¤¥k292,*-,6)(13/3))++BYu¡¡ ¨±·º¼ÁÁÂÃÄÄÅÃÃÄÄÆÂÂÃÄÀÁÁ¿¿¿¿¾Á¿ÁÄÃÇÄÊÉÈSSUXRYVQOOQNOUOLJFFDBH>;68?M]kz¢¥ª¬¬±´¯±µ³®´¶¹¸´´©§¢ tdYWORPRVZ[^`hkxxstpiv~{vs[^VKEKNIMXK::=@86>9GQSmU;F`hhwvzrh?3,,72-,0/1*-/-0.1607:_a:++H\O1'%4Uav{oZFP9.-%2)/2+-..)&%()2\iyw²¸¬º¼À¾ÈÑÌ5%&/1:@Taenryvz{|||¥¥§§¬ª«¬±³´³³²°¬®®®²¯²³°«ª¨¤£ ~¥¸ÄÑÚÝÝÛÐǸ±©¥¢¦ ¢~}{zkkW<4670.4B>54QLS3*((+\¥¬ ¡x</1&%$(.2)/97.)))-Bbs¡ ¡«´»½ÁÁÂÂÂÅÀÂÃÂÄÆÃÂÁÃÄÂÁÀÀ¾½À¿ÁÂÄÅÅÇÆÈÊÈPPUPNSSQKOIKNPQPKHHBF?;9>9=JYky¤¨«¯°²¯¯³²²³¶»µ°·¯°°§£~sk^YNINSWVV_`clkvmmoprquxhiei\h`^UUSYZ[=:BC4/9<BLbno<6JQr}|vNH<WW./2=2.+0//+.--2/58)+.@Y_=*@^?,%&!#/]bk}kZe^70*#)*/+&&13/%!)+;xul|u£Ì³¶¿»¼½ÊÑ®B)(-966FWahmuwzw|yzzz¢¦¨®®±°´³³´²´°°®¬µ®°²°ª¬®§¦£ {£³ÄÒÞßáÚÒȶ¯©¦¡¢¡¡|~vpbT<389-/9;617HTP52*),Q¦¤ }C+7#!**/=2/33.(1+.Nhz¡¡ £¬°¹¾ÀÀÃÄÂÀÃÁÁÃÂÃÄÃÁÁÁ¿ÁÁÁÃÁÂÀÂÂÄÄÆÇÇÈËÊÉWWUOSJOKNRIJLPOKJKJGA?;:;6>DXk{¡¥©¬®°°²±³²´µµ³²³±°¬§¢|of`XIJPQZ[[]`ihnfdkmnoqo|y\Y\MGZaXUXg^JO;FN636AIT`psX6<GU ma888Mh6053...+//0--),864+4.I6QW:8YI5*#',YdlizxS/.724$*,)(1*&'"$2_¤svq¾Ì°½À¾ºÁÐÀb''),05CGU^gttxyx|}x~ ¢¦¬¯®®²µ²®µ³¸º´´¬³«««°¬¨¯¦£¥~ °ÆÏÜßßÝÓȸª¦¡¢¢¡ ~x}pobR?;>:(/=4359F]K5+)&-L¡¬¥|¨T'/"&,)/J5560.1-*8Vn¡ £¢ ¦³µº¿ÁÄÀÂÀÁÁÂÂÁÁÂÀÃÄÂÁÁÂÄÁÁ¿¿ÃÆÆÄÈËÉÉÉËËÊSSPMPRQMNKMFKMPHGMJDCBK78?DHYjy~ ¦©¨²±®±´²·µ³´¶µ°¯«§¡vg^VMOMZYZ^\bbbnhfnmlnvs||mN]ZGGQUJ]ecL?Y]NK31;EU^pvX<0<Cjm]ah@D>Gk297/,(,).952111118,+5A01990TR6(" (Ulj~C12+('()($'0$* ":vptxu̾¹ÁÀ¼»ÊÊ4"%+*/7DLXagtsxt|}~x ¦¦¨©¬«²°°°´´·½·³®¨««¨ª¨®§¡ ¡ z ¤±ÁÌÙÝÞÜ×Ê´²¨¤£¤¤¢ |ug`K:9;6+3@4329F\H2&&#.I ®¢~£W(0)+*'3L:3552*-*AZr¡¡¢ { £ª¶»¾ÁÄÄÂÄÂÀÁÁÁÀÁÂÁÃÂÃÁÃÄÄÄÂÁÃÇÆÅÇÌÌÊÊËÉÌËPPQLNNLOMMMOHIFFIIIFB=9;<7>G\ix£¥¨©«¯³³³²±´°¯³´²°®¤oh[WMKTNVTYbba`ijnnkrnrtt|~jQPWSYOJfwq[A^}dXB<;GWluy\<17;Ols[esM4@lJ;:&(,)4/67254-/56./,3G63421KW9' +8Neo pY=&%#&,'#"%2%!"(Zuonr¾Ç»½Å½½Ãͬ9.*-6-26?NYdlrqtu{{~ ¡§¨¥§««°²³¶³¯²·³¯©¯°¯«¬©¢¢ }}|¦®ºÒ×ÚÝÛØÌ·°©¥¤¦¡¢ }zriaE=:71'19735:H_J1)(&+G¥ª£¤`+-$*:(3<=22.,,).I`y ¡¡ z¨²»»ÂÅÆÅÅÄÁÁÁÀÂÀÁÃÄÄÂÁÃÂÂÂÃÂÅÇÉÇÈÊËÍÌÌÍÍÊÌSSTRKKGSGIIHJHGFI?AF??<874CKWg}¡¢ªª®²¯¯µ°®´®°°±¯®«¤¥uh]QKIMQVWXY^jjgeimmlqrsquse??Yvfg{{^HF^i^IFI\kvjN:.+4:VQf\YmkA>L:B:*)*+4=226360-3113--H*-,&0@[;'!"0JXeoll¥vX-$""#$#$!! $8qsrorŹº¾ÄÃÅËÁi10),9.74<MYdlptzwvw} ¡¢¢¨¦¬¯¯±¯·®±²³·¯®®®ª²©¨¦§¡£ ~}} ªµË×ÛÛÝ×Ì¿©§¨§¡ ¢~||}yvkVB8E7.,46031:M\I2'(&):©¬¨¡o8,$()&3@D6:3/,/2Tj ¢¦¤ }£°·¼¿ÀÄÄÄÃÂÁÂÂÂÀÄÃÃÃÁÃÃÂÁÂÅÄÆÈÇËÊÊÊËÏÍÌÍËÌÊPPJPHNFHHHOGBHJBDKCC<?@84;AHTft§§¬©°°²¯°°±±¯®®«¥zh_RONURTV^\X_ahihiijqoprsnU9Oy xZ>C]bo`UEIcrkE553978;5Wl\^p;28@=41*5.2>.32,=3,4201=85,:@.00JC($!:A`eqzgZ°yD)"+/)# !(&!$)R wrsvz¶Ä¸½ÄÄÉÐÌ2()(4C,1;<KU_emt~yvxx} ¢¦¢¦©©±®²¯¯¯°·±©«¯¥¦¥¤zu§ºÃÐÛßÞÙÓ»ª§¢ª£vzreTD>93(&<11./3E\I-,(%*@x³®}<*("#"0BC?,1824<Xt¯£Å¤¡ ®³¿½ÀÄÃÃÂÃÃÁÂÂÀÀÁÁÁÀÃÃÁÄÃÄÇÈÊÇÉÌÌÎÍÌÎÎÊËÍÌÍIIMJLMGKIJLOKKGFDCEEB=:77=CETgv¤§¨¬«¯¯°°¯°³°¯±®ª«¡uf[PILYRY_Ya`]begfjklnrrrqhRU~uYEBSmipa?E\rlK988?7B172Gq{]QzK2;;@991221A8-++42/+-/$//*AWi2)$6C.)(**Plqn`MY¤«lC,'*&!&"" ((2qhpswÅ»»ÃÆÊÏѳD)"$'.=03<BNPchlpzz{{z}¥¥¥§°°¬¯³±°¯ª©ª©¬ª§¦¤¡ z}y¦°¹Ï×ßßÚÓ¿«¥¥£¡ |~yymbN=?1+(/7.3048J^K0%%(#5v§¯¬G'0()#,A=:6/4-2F`x ¥²²¨±¸¾¿ÃÃÄÅÀÁÂÂÁÀÀÁÁ¿ÅÁÂÂÃÄÃÇÆÉËËÎÎÌÍÌÌÎÌÍÍÌÊÊNNKKIMMGPKIJKKJDD?BD=85514>HTjx¡¥¬¨¬¯®®¬«®²²°®®¨¨te\QKHHNYXgqnb_dcfjiojnonpvt¢r_AKEOp|hjF:]~{];:69HM7R423@]}jMb718E;94760D53/,/1-)/1.(+-Gj_0$$.D5*-(2Mon{rVJt¬¤pH,% !%(#*+*Mycpz}¬Ë»ÂÈËÐÕÈu4)!%'>D106<FQchkpvyy~¢¦©¥¨ª²®®°¯°¯±ª¨«¨§¨¤¢}|}|¡«¸Î×Ýß×Òê ¤¡ ¤ ~xvn`Q=>*(/3:.58==LWE0&%'$8s¢¯¦V8=# &37?9/6204Je}£¡¦ ¥°µ¼¿ÂÃÃÅÄÄÁÀÂÁÀ½¾¿¿ÃÁÂÃÃÄÈÈÉÉÌÎÌÍÎÍËÎÌÌÌÉÊÊÊJJLORMLKKJNLMRHEJFIC;?;6629FXgv£«¬±¯«¯©ª®®°³±©¦¥tkXOPDNSOZrd_cbjlgjgnytTG.?IWojO?VX<357;eI>UH=6LqsXD'3@9A:@52H83,17+,)+*3''/KHT1(-3<8,,-=_mvhONy±n1 .!&++('/_mdpy ÂÉÅÈÊÍÑÓ§.!$$'/9G77=GPS]dmmwsz~~ ¥©¦««³¯®°®±¯¬§§¬«§¨¦¤ ¢}z|||¢ª»ÊØÛßÚÕÈ© ¡¢ vwj[F<5/0/743=89AO\G* #"$0l¨§ e4D#0'-;3;+,');Zv¢¡¤ ©°º¾ÂÂÅÂÂÃÀ¾ÀÀ¾ÀÁÂÂÃÁÄÅÄÇÉÉÊËÍÑÐÐÎÏÌÎÌÊËËÌÈÌOOKKFGJGEIJJOHDFBBCA>=5275<GXjw~¢¥©«°°¯®«¯²±±±°©§¢uiUTEGJLO\y~g^`_ihfrz ¤aD:;50ERmzV?\|`8-,-4_uHGV68:rRlX<76773;80@C1)).&(2**9)&&>FDAGE>91)5<Q`erT8U_¶P(#$($ (#:ymon ÐÆÇËÌÍÐÀ\& &"#%?N918?NSZaelpox|}|~ £¡¦¢ª¬±¬¬¬®¬ª¬®§¨«¦§§¡¢ }z}~x{| ¦®¸ÇÖÛÝÝ×Ë¡¤¡~~wykWD=32*05:1>969K_O.'$%%2f¤¥~g<8"-8?4860,+<]y¢ ¡ £¸¼ÀÃÅÂÃÂÂÂÂÀÀÃÁÁÁÁÁÁÄÂÇÆÉÈÌÍÌÐÐÒÑÐÐÌÍÌÊÊÊÉÊËTTNPHNKKKJPHGJJLE@@A;9131/AJ\kw¤¦¦ª®«ª¬¬©«¯²³°µ±°££ ~um^OJMLKK_{t\Y^]iiv£©©oE)-7:4PkvHQzz[172/*;tmHLU66V [Zo143597R=7B6+*$-%')$(0'*+@RLLCFL9-8GM[\x¡`<4Rsh% $#%Z|mktµÍÆËÎÍÍÉ0"&&$*&CU8069LVZeeopru}x £ £¨¤±©©§¬¨°ªª««¥§ ¤¦ yyxz|¦¹Ê×ÝÞÝÛÏ´¢£¤ ~ywcPC70((,776D85>JWV0#%#,,a¡¦|oK6(#.87840-&/Mfz£¤¢ ¡¡¡«µ¼ÀÂÃÇÂÄÿÀ¿ÁÁ¿ÁÁÄÃÆÇÈÊÍÌÍÐÑÑÐÒÏÏÏÍÊÈÈÈÇÇÊOOIFKMGROPMIIFFBED?FA96003AJ_ix¡¢£©®«²¬«®®«°¸±±²¯¨¨£¢reYJIFNDPZ~z_a]dt£¡ wxd@&,81?n{b`xwH=1;<,3P{dCiZ29au~`C{ K22<5;G=1:=.+%%)''%)0,1>RZ[PLTO1,GaWOb¤¦¨ uH3Ca~_%$#:~ump~ÆÇÊËÌÎ̤>%""#! *@V;74;EPZdelosv{x £¡ ¤ ¤ª¬¬¦£©«¬§¨«ª¨ª¦¤¥¦ |ux|{}¡¬»ÈÏ×ÛßÜÕ»¡¤ª£ ~xvo_MC6)'*081>F9<@LVW-%)'.2]¢¬zuP- +9631+,'?Vl~ £¢ ¢¥±¹¼ÀÁÄÃÃÃÂÁ¿ÀÀÁÁ¾ÀÀ¿ÂÅÈÈÉËÌÎÎÏÐÒÑÒÒÏÎÏÌÌÉÉËÊÉËRRLOLNNKNNNJMPLD@>D=983/1+:MVex¤¨ª¬¬«¬¬¬«¬¯¯²±¬§¥wcWNJHHHMUrn[dw£¤op|W1)75=_}RRzxG:>8>917bp\MjALxycrqAma8;B>;J52:<,'$&& ,5CJaleVTLH/-S^Jbª´´®O(3QevX$%Ypnnq §ÅÈËËÌδF'! "*%"(FW?;8<DUUifkpuv}| ¡£¢ ¢ ©¦©¤£©ª§©ª¨¦¨¥¤¡¥¡||{wz}z~¢«·ÁÌÔÝâÝ×à }ug^IH3)5,3437K?COGV^+&(&'4T ©¡S("'9812-&%;\q£ ªµ»½ÂÃÂÅÂÂÁÁ¿¿¿Â¿ÀÃÂÂÆÇÉÊËÎÍÎÐÐÐÐÐÑÑÑÎÌÏÌÉÉÉËÉËJJRNKMIONUFPNIGBC>C>A;5752=ERex} ¢¦¬©¯®©¬«¯¯±±°ª§¢ sdVPFKOIKUdnk¡ vioqT63>Gl{}}\<bwQA;>B34AZhbGeS;MueuwFYx=;=19<71;60(!&*$%$)6-;CnzfVB:2/MVe{»··µ])2=\ uF$#6o m}vu¾ÃÉÊËÏÂd(!"%% &.JUC4;CJQVgijpnz}}{~ ¢¢¢¤ªª©©§§©¨©¦¨¥¤¡|||wy{{z}§²¿ÆÓáâáØÉ ~yoeYG:-(*-00-6B>DMBMX-( !2I¥¥¦S**80(++,2Hdv §±»¾ÂÂÄÅÃÁÁÁ¿ÀÁÁÁÁÂÁÄÄÇÉÊÌÌÎÎÎÐÐÑÐÑÐÑÑÍÍÎÌÊËÊÊËÍOOOLKOKHIPHGJIGEFA=>::81,.6ATg| ¡¨©§ª°¬¬«¬¨°°¯²¬«£ ~taXQFEFILL\l vmrm{~ztX;9FOzwqhBNjZOfbzA25Sj\JLxK9WvvbuWZJ88)-97368/($")($(=H39>^qnO>89@Eeuzxu´»¸µg,%2KsL& $Oxoxvw¤ÇÈÎÎÍÌ0$%$& #(&(I\G5<EILYbflrst|z~~ ¡¡¡£ ¡¢¡£¨££¨¨¨¤¥¨¢¦¥ {z}wwxz{||¢®¹ÂÔàåãÜΨ¡}vkfWE1''*,8/+:CCAMHDX2$#!#5Hz¤¦ §X+%,:+(-/*/Pd~ ®·ºÁÂÄÄÂÃÁÂÀÀÂÁÂÁÁÁÃÂÅÈÌÍÎÎÏÎÏÐÐÏÐÐÐÐÏÐÌÎÌÍÎÌÊÌÏOOQMNQJIIJJHEGFBD?@=5661+(4AYey¡¤¨®«®«°«®®®°±³®©¦£qfYOHJQIIOV]n tmdhkkq{uvcH6C<mkpP@iaYHJ_V5?H_a[Pp~hK9b ogkx [C\H%,((79?6;.,%(,)%'07/D<?SjjO8:LpdmtyfM»½¸y;"-<N5".krosv¿ÍËÍÌÍ¢8$#%($%'"#$LfN;BFDKW`glqqx~y~¢¢¤¨¡¥¤¥¡ £¥¢¥}z{yxzy{} ªµÄÔáäáÚÑ®¡ ~ytkbTC.,)/642.>A?<MCPT-%"%3Kq¦¦¥_,"#76+(3-59Xq £¡ §±¸ºÃÃÆÄÂÄÂÁÂÀÂÁÃÁÁÃÂÃÆÉËÎÐÏÐÎÏÎÐÐÑÎÏÒÐÏÎÍÐÎÌÌÌÍÏQQUOVNKFMJEEJGLICBB4711.001=Sgw|¥¦¬ª¬®®ª²²¯°®±®²°®©¤~qhWPJJEFNLZ[hoqw~vvztoq}}fI344bumhNLbTVR]I28VXYWL\ wcT<[zbYp{^9CzR *')-&0/8.+-'+#"(5.5ZHGOW^R;Ji~pnrU@Q¢¡m4"$17.+ !"D{qvs~¨ÐÎÏÌϸI&")%(+##$!'RaS<BIKT]afjqtvyw~ ¢¦¦¤¢ ¡£}}{}{z}xtv¢²ÂÓßæãÜѺyud]K:,)*,+444=H?=JILP3&"!!1Km¦©¥m,&#.0&*(.:<^q ¥¯¶»¾ÃÅÄÂÄÁÃÁÀ¾ÂÃÂÀÁÄÇÅÊÊÍÑÑÐÐÑÎÎÏÐÏÍÎÐÎÏÏÏÎÏÎÍÐÎÎOOPMTMMLJNFHJGKCCD@73332*+/DPgv ¢£«§«°°°¯°±¯±±²¯®¯©¤¢~qdUQHJPMPNSZZ]^djv|zzWF38Gmgf\H`g^Wh]87NkbRHEuT\^D^{\Opi:5un%$%).--/:21*0.,)8212f^hLK[JF[z£ptnXA;<YOAD.*$(91 #0"+'[uwxy¾ÌÍÊ¿Å~/!!&*(!'&&(0UdY@8HDRV\`fpuww} ¡¡¥¤¤ £¤¢¤¡}|z{|{ {{|}ytz}§°¹ÑàæäÝÒ¼|mcVE/(+)/,51ADAHDFGEI55" 1F\£¥ r67,,.'%-+KCc{ ¡ £ ª³ºÂÃÇÅÄÄÄÂÁ¿¿ÂÂÁÁÄÄÊÊÍÍÑÏÑÑÑÑÏÌÍÏÏÌÏÎÏÏÏÐÐÏÐÌÎÎÍTTQQPIILKJLHNHMCB>>;8403/$2FVer}¡¤¨¨®¨®¯±°¯®®±²µ¯®©¤¡ue^UMJIJSRUZ[]gk{jku {tW?:=H^USMWck`^eA8W_aUI?Ky FFM>\pTEh¢k>1a5#&-/-2**+40.92//.)0RfI>DNGQcv`cYB1CW^G:1)$0,7."-OJlvqz}ÉÊÊ«¢;&!%'+&&+$%+Xk]<BGMRXXejlusu{}| ¢ ¥¥£¥¡|vrx} ~z|z{z~¡©°´ÎàååßÓÁ~~~ngP6)()+.,2+-9B@CRAADD-'"!/DX£C+(/*&#$.DMh¢ ¡¬µ¾ÁÅÅÄÄÃÂÃÃÀÀÄÃÂÂÃÇÈÊËÎÐÑÑÐÑÑÐÏÎÌÎÌÍÍÎÏÎÎÏÏÐÐÏÐÏÎPPONPMNSPKONRIIM@>?872.5*'/=N`w~ ¤©©¬®¯¬¯°¯°´±²¶²´°««¤}vmYNHEIJLQW__huxjgmry{|vh9:KUb[Y<Ddsrd\?;Qg]LBB:cn:/1AgtX>e¢qF5FR&'$/@-&.)I=;0+$'#),9a4-RNN_x¨wbPH@FmrO9.'""0/+"(Peh} jmqq¸ÉÃ¥|3##"($"*%()[k[@9FHOU]ggkstty}~~ ¡¡¢¦¢£¤£¡ |yurv| x{{ ¤«²¸ÌÞææàÓÆ ~}yprdJ0-,(-,46-0:CCORAIA7-!!#2;S©¡^74)&#(",JYt ¤£ §µ¿¿ÄÆÆÅÃÂÂÃÃÁÃÂÀÁÁÅÆÊÌÌÏÑÒÏÎÐÎÎÏÍËÊËÍÎÏÍÎÐÏÏÎÍÏÏÐÐRRMLMNNNOLPIKNDHA::554/+*$1<Tauz¥§ª®¬°«¯®®¯¯°³´´¯¬§¥ }ui\MHDAIRUYf||~yljmknssrmT5BFTUXU2Fj~xbL>V[NFC?>G}X22<Mr~V<b M8;l*#%)0+*7KL?)'$#%696V86qqBO©¢pg`elf[C1$##$2%!"Lywyzgeklµ£ YC-#"*$*''""-YnZDAJNPR^_itqvu}~|{} ¢¡¡££¡¡wrns||| «±ºÍÝåçßÔà |~vrk]=0--&*280+.C>EHKEGE04"##//G«^(<)!!-+*Phv «¹ÁÁÅÇÆÅÄÃÃÂÃÄÂÂÅÄÄÆÈËËÎÏÏÐÐÐÎÏÍÎÌÊÍÎÐÏÌÐÍÎÏÔÎÎÎÎÏÐTTVQTQMOPIPJGFCC@:?:;8./,&/=Naw~£¤§ª¬ª±¯¯°¯¯°°´µ²¬¬¬ }zkZPFFEKV_v|ohgjllxtuqfIEMLI[b[=\rzxNEKZP@MG:9cyK.'5Xv_:SS08f>+-)04;JD;5+*.!!$GO=YZk XET]l¢_J;E3.(&"$/, "%Gvkmdv¢n5($&""'.$/E$-Vq\NFCCMYWcjvqwyz}|~ ¢|sjlt|}}¶»ÊØäèâÓÂ||urgK0-**/0,63/8CBGNK@LB36$# 0.>_2;6%"!'.Xp~ ¢¥°¹ÁÁÄÇÄÅÂÁ¿ÃÂÂÀÀÃÆÈËËÌÏÐÐÏÐÏÎÍÎÍÌËÌËËÌÎÏÎÏÐÑÑÐÍÍÎÏVVTTPSPPOOOKJIG@A??865.-+(-AOfy ¥¦«««¬®¯¯°¯¯²³±²²±¬©£}yeWNKBIS_p hibjnkjquwmgNDJ<>\]GRwsnAP\\HAQH.7w]L1%6Snc=IU10PF*0/9GL53.*&78# "59APh¡i?5@OYfqe?1*-('!'#%0& )wª¡¦¤uw ª½±d0$##'%2&#''$+]qbZDEJK[Zimntx{w| ¡¡ }wgou} |x|~«´¼ÈÔÞáÜÓ¾z|yrZ>.%)('%0-208?<@JHIK;.7)!"3(6u¬¢l@22#!&$.[u~¡ £¡¦³¼ÂÃÄÆÅÅÄÃÁÃÃÿÃÃÆÉËÎÎÏÐÏÏÑÎÌÎÌÍÍËÎÏÌÎÐÏÏÐÐÎÐÐÏÎÍÍSSWVTNOOPIJKJIGKHG>@<;+1)(3ETiv~ ¤¦§¯°¯®¯®°®±´°³²³®©© ~skYSLU_mse`hikhruwurq]ENFG;[YSnxtvTKZNC=FBQ/FPK-,1LscG?e_14;f-2=HFC0.'-9I="%))0;GAkRO;+(4;K^smP0,$! %'%: ££¦ ¦« ©½ºª]@% &5(.')('3[igYGC<RX_ipqtvvy~ ¥¡tkrw| }xwz~§´½ÇÏÔÚÙÏ·}}~phN:,').+'412-7@ADE?IK=.4-%(703r¦¤~nP2*""%3T ~¤¬¸¿ÁÅÅÄÂÄÃÄÁÄÀÂÃÂÆÆÈÉÌÎÍÏÏÍÎÎÍÎÎÍÌËÌËËËÏÏÏÏÐÏÐÏÑÏÐÍÎXXVSSMLVOIJPKHG@DBB@>>-++*9NXiu §§««ª®¬®±¯±³´µ¯®°£vqbZXly~mf]^bcdgkptwzviXFM=;A[__nfxlVWNGC6/9L?chM?2-/9kfKAQ¡i8.>B/+7=7*/*1:OC)!'*7I87//+(')1?irpE,%#$'".*a¨©©§®©¬¦±´µ¸½¬vM5("%%&,)10/&&2Xh[V?:GTY_dnssu||~|~ ¡tlt{} ~wwuz¹ÄÊÍÓÒ˦~}woYC0))++()58215?<HR<EN;+0/(%4'*g¥¤¨yqP2-*$%%=\~¡ ¡©±ºÀÂÆÃÂÄÂÃÃÀÁÁÀÃÃÉÈËÌÊÍÎÎÍÎÏÐÌÎÌÎÍÏÍÍÌÌÎÏÏÑÒÑÐÑÑÐÐÐÍZZQNRLO[RKQQGHLHAD@;=>:1,+:JWez¤©§¬®«®®«¬®³¯±²°«¨£|nadh_gd\\Y\^^adcdjox}uzdXTK25J\bhagzjiWK@K.#2PkYS=A-*6`nSHTv¬B64}¥_/(,2+.0-29^G$&**9KB>9*($*2BJqbOE2''''%%+( $®¥¨¨´´©°¯³¸³¶´zL-(%!"!0,+&()$3`oc\GMLT\]emtoyy}~||} qlp wns~~~zzyy¦²ÁÉÌÌ̺|xvhH0,))-,.,05125:9HG:<J<(.5)#0)+V¢©©¡ vU(#."!)Bd ¡µ»¾ÂÆÆÄÄÁÁÀÂÀÃÃÆÅÉÉÌËËÌÎÍÌÍÎÏÍÍÍÏÐÎÏÍÏÐÐÍÏÐÒÑÐÏÎÏÎÎÍVVZPPNTKQOMIMPNEC?AA;97521<O\jv¡§§¨¨«ªª®¬°°¯³³´±°ª§£ymihZSKNOWQZY__fbdhmuu}[]PIC>LVe^_nveQLC>!"8Xn`P<R4-2Wm]VUs µ[?6m¢r8*10,2L;93\L& $'2-8>I<3*.3TsC'%$%)$*+*%7¡³¯®À³³·½¸²¯¦ [<5&# !&),//%&(%.]oX\HPLV]adjwsxw}{y|~tw wV:68GWfrsw~xzy~ °¼ÄÈ˾¥ ~~{q]:2'+%//.,6;72=B@MK6?N:0/4/$*(%Wª¦ {_1'2',/Um¡ }¥¶½ÁÃÆÄÅÃÄÀÃÅÂÄÄÆÉÈÍÍÍÍÎÎÍËÎÍÍÍÎÍÎÐÏÎÏÎÐÑÒÐÐÐÒÐÏÑÎÏÏÍLLSOPMNRQHPHHLJECBB:CA89/5ASbo}¤¦©©©°¯®°°°°´³±±°«¥}qi`QDOKNSV]Z_bihgjkntqi\NNTK?UdXPfz|bVOM5$#5g¥\X;@]=*9Qyl]bWk«¨j4.Q~;'-006GLA<O<$"#'! )/:NB/4g°©}3"$!%*)-+,%$!!W°¬´¹Ã³·½¼½·®¢s/()"!%$%$%+8-*-++,Wib_KIQ_^`akpquywxxy vy dA1/1?KX_Zcquy~y{~©¹¿ÈÆ {viK0*'-2--)/9653;BEPF6BO<.031,+%'I¬©¡x_6$.7&:`z¡¡ ¤±»½¾ÆÄÅÆÄÄÂÄÂÃÅÆÇÉÍÌÌÎÎÎÍÍÌËÌÍÍÏÏÑÑÑÏÐÑÏÑÑÑÑÏÒÒÑÐÏÏÐÎRRQOUNRGJPNROSIFE@C?C>978=DVfu £¥¨ªª¬¬¯¯¯°³±¶³¬¨¨¦~qdYIKIMNV\\[]aggjfpnpnkO<S[S9[^USmv[ML<&/:}pQ>2LnB,IHwn[cYr¯{A4I<"*5':CdY3F<-$""%!#&,/G^MBb°¤v=),)*,+01+! !/£¦ª±µÄ¶½¿Á¾¼e4"!''($$%*)314.+&'.ZnqhGNT\bdeinssy{x~}}¡zuziWE;EQa][WTY\qvu{}¢³¼Å½ª ¥ |v`8-0.0+.,--83.3:CFK?@IP720044*&$>z¬¬}~~`6#(?0Acz §¶¼¾ÂÆÆÄÅÃÅÄÃÅÆÅÆÉÉÌÍÍÎÍÎÏÍÌÎÍÎÏÏÏÎÒÒÐÑÏÑÐÑÑÒÑÒÔÒÎÏÍÍÍMMUJOHOLKQIOQNHIF@C>?GE<=?MYgx}¦¨¨«¯®¯¯±«°°²²¯°¬«¦ |o`TKHCMRQRY[a_cbgholnojTIc`O=]^]Sm}{fXMG*!&.fhA4<fnE-NBlu]TYz}«S/@N##0$*CE?1F?F<%!#$$$#)+EUNt{V6+-12374'%!"Q¢¢¯Â¸½ÀÇż¡<#$"&&('&'**/,./.)$(_kpfMNS_ecjlpowtwxx|}~{wy}xrle_ekvtoi`cW`pwxz©½¾°¬§¢ ~lT/02*,00+-,;206=FFS95ER=/--7;$$!:u©«| ^<)&6GJo¡ ¢«¸½ÁÄÄÄÅÄÃÃÆÃÅÅÇÇÊÍÍÐÎÎÏÎÐÍÏÍÏÏÏÑÏÏÒÓÓÒÒÒÑÒÐÐÒÒÒÐÐÌÏÍÔOOTQQNMNNMONMMIGAEKGED?BAFR\ly¥£©§§®®ª¬¬¯³°´±²°¯«¥¢{lYVMKMRTR^\Z`effoknnstlMJfdJ@_\TQNNlZGPG%#7WqmA4GjnR2/KuxdcWxxv¥f<D]+#",106Wdv^00(+'" "'1Yf~S5+)2>=73-#,-+:Ei¢®®±¶¾À¹®($%'$*.)+3-+-.2(0+10_oneMMObefktwquu}{x} ¢ztw}~~{}~}vnmgamyxz~ ±¼´°«¥¢ sa@0.1067+)-)B12;8EHU;9BKE.,-6@(("2d¥ª~jH0!)NWt ¢®·ÀÂÃÆÄÃÄÄÅÅÀÅÇÇÈÌÏÎÏÏÏÏÎÏÐÏÏÎÎÐÎÍÑÑÒÕÒÒÑÒÔÑÐÒÑÐÏÏÍÎÎÐNNWONMMOMKMNKFFIIECEGCCGCERan}¡¦§©¬«®«ª±²±°µ±³µ°¨£yl]UJGFOSW[_`faehjnnwxxpRW_UC=bYRNAPaP:<1+&DubUM:U`cO<1>wobQour§wEOo¤j" &)1).lzB0,($"# "+WyU2)&0A2/M=;TRL]copz¨¤^7&% #'.8:,0.*)*0&./*0ctsiQIP^flhtoquw}zz| }{z~{ ~wvutowv~¿»³®§¤umZ302,/830+*0@75@9IMTB?ILC0++78*$",]¥®z[R*%-Nc{ ¨±·ÀÁÅÄÅÃÅÄÃÄÂÇÉÈÊÍÏÑÏÍÍÐÐÏÐÏÎÐÎÐÎÐÒÑÒÔÑÑÑÑÑÑÐÑÑÏÎÎÎÎÐÐMMPOJHQONHJCIGLGDAAABIBLKLUgp}£¥¦§ªª§«¬¬¬®°²¶µ³®ª¤zodVNHKOOT\V\accgemy}qqdXbT98=T]WU=MVE3*"*JqtiMD]GXVRIB4EuiJEdzp©XWz~1 &+75&/o§LO6$&"#2o{lM+.#"IZDKeh^dm_n}mlz~{´´¶b0&"##%*;QIJEE,+,-&2;3+Wqyi\SQ[aijpvutv}~}~z}~ £ }zz |twvy¨³»¿»´¬¨¡~wi?.,.3-84-/3,=2:98M]M@8OQD2,,:1'&#+O¥¯|dY;''Oo ª¶»ÀÂÅÃÄÄÃÅÃÆÄÆÊÊÌÍÐÐÒÏÎÐÎÎÐÎÎÏÍÎÑÐÑÔÔÔÑÑÑÏÒÓÏÕÐÎÏÏÏÐÐÑNNTRSKQMOHJNONLGA@?FGKGIORYeu~£¤¤¨§ª«©¦ª«¬¯¯¯·µµµ¯«¥zl^TKGGQSU[\^c\cdkvyyuwfZQ-46=U`WUAKEB1%$5fyhG>>[TUDNFW<?k}_WSbqc¡nb~ N#*<5)/q´wq0&Vx^F]N'"'I``chtorvajsjlps »ÎÏ,)$+#()19AMZ340*&0"**.4b~tdcORYhopoquwxz{y~~ | uy¬µ¾¿À¾¼¸²¨¦¡ xuU6,.-*1/*1-/1;27<<I[`H=JE>6,-<-*-!,H£°¡{ab7*(Ry ¢¶¾ÂÄÃÅÂÃÂÄÄÄÅÊËÍÌÌÏÐÐÐÎÎÎÐÐÐÎÎÎÎÏÏÐÓÑÓÓÒÑÑÑÐÎÏÏÍÏÎÌÐÑÓIIONRNRJIGRNSKILDC?DHLLJTRYiz|¥¢¢¨©§¨«¨©ªª°±°±´³°®ª¥wp_ROKIMSUX\Za``eitwpsvl`C+*'2N`WYGL;</$4Z}x^H20?Gc\BFPiCGmp`UUviS§ya a0"#+=.)/h¤ª|69x`45TF/3DY]kmhv}¬¬qdufclr¢Ó×ÀQ$&)&#&(-17<?3/1/.0&$)&-gwy]dKT[gjrtrtuszy|}}| ¡ ª»ÅÇÂÁý¹ª¥£ ~xl>3/0..40+.+23>6:?:RXLOKSBF:41B)1+!$? «§wUb</0W} }¢®º¿ÂÅÄÂÄÇÃÆÅÅÇÉËÌÌÏÐÐÑÍÎÎÎÏÐÍÌÏÏÐÐÎÒÑÑÐÒÒÑÑØÏÐÐÐÎÐÐÐÑÒÓQQPQMHGMIELQOLKJCGEICGGLTU^lx¥¢¨©¤ª©©¨¨¬®±¯°±´±²¤xl]VRKGQRVVZ[c^_ejosrqzsH*-%+OVPMED=8,-Xa?8/1>FSV=<[xO\}re\byyfIfd w4'#&18+/V8(" "(Wb5':;IRSdb`fms¥¶³_dj^eu~ÀÔËw/(*(-+.)121,EA446131()-0dwzWeNV[`mlrrzxy~{|{|z}| ¡ ¦£¬ÁÆÇÃÂÂÀµ³¬¨¡ vV1110.(/4/2+12;;=;D^\EAERBA83<M,-0((?w©ªtVdE-<c ©³¼¿ÁÆÃÀÀÅÃÄÅÇÉËÍÍÏÎÐÐÏÏÎÍÐÐÎÏÍÍÏÎÑÐÓÐÒÑÒÐÏÒÓÒÐÐÏÑÐÐÐÒÐÔKKLPKJIDSQOOPOLIEKGDCFJPU]bmz¢¦¥¨¨§«©¯¬¬¯±±²²°¯©¦¡xo]ZJKPKWVZaV_]ddefjpxY*''2LZV?BE@>+MmN2,+1=PLT?>PuVp~ghkoygSHTp X2.(3?.6Nq{rgG8$).CV=/5LJakdopknw°±¹Zbp_jw{¬ÏÓ 91.,3854198<>=9828340.007`w_hPS\dmlruxyxx{{|}zx} ¡ ¤²¶¤¢¯½ÇÅÂÂÂÀ¸³¬¤ tH525/2)..)115+7@>8A]bC>P[L:7.=L)..&!5p¥«nT`J:Jdª´º¿ÂÃÃÅÂÂÂÄÃÆÉËÌÎÎÑÒÏÏÏÏÏÏÍÎÌÍÑÏÐÐÒÑÑÒÒÑÑÐÒÑÑÐÏÑÒÑÒÒÒÑÔRRRVPPOSSOPSPMLIGFHB@@FLS]ck{ ££ª¨¥¨¦ª¬¬±¯°±³±³´¯¬¦paUNJNORTVZY\^bfhgpx O8+,/HVSF>NGIEwoVC84,->FLLK>QZ\iqbgrk}mWAOjooF-)/@35Ki{cH-;&0CG4" *5V{}upx ®½±eXoibt¤ÂѹK.-//04300,331@676611.,+04\st_iUTcahpouwz|~y~|¡¤¤²º¿±¡£°¼ÈÈÀ¾·±¬¢}w`;13340.1-*+.23BH:7>c]J:FYD8@4@B-5((!1h ³oP]S>[k £¨±»¿ÃÅÂÃÂÄÄÅÈÆÈÌÎÍÐÐÑÏÐÑÐÏÎÌÌÏÍÐÏÒÑÏÏÑÓÑÑÒÒÓÒÒÒÒÐÓÓÑÒÖÔÔQQMLKGFKOQRJNCHJEGA:>@FMVacn{¡¢¦¦¨¨©¨©¬±°´±´´µ¯®¬§ }lbTOINLTU\``b`akhnvrV?15:Kc[MERO`m~Z=;3154AJJUMDEL\fohZrn}uiIJk]~XJ>??MKFkiopC6C=JN:**'07S }©¬±¶½Q`cYavÂÌÃs85655@?>763793<?864,-2',,1Yop]nUV`djosvwzx|y~~~ ªºÂꍡ¦´»ÊÇÁÂÀÁ¹²¨¢uB120342.5050253DH<5E^]IAFXC>>7F?5<+(#/X³|QX[Cft ¡¬µ¾ÂÃÇÃÄÂÅÄÄÇÉÌËÏÒÐÐÑÏÏÎÌÐÌÎÍÎÏÎÎÏÏÏÏÑÐÑÑÑÓÒÒÐÒÓÐÑÔÔÒÐÑÔMMQMDFHOMHLPJJIIFDB8;;DJVbfq|¥£¦£§©«««ª®®²²·µµ²¯ª¤}jgQMKGHRYSX__abfgspaU9-:9B]K:EZpu`B;@--0/2?@BH>CBR_^QEdplvrKFsxU|||fP?GL\OEV[SeIIB9AF+" -3Iv¥ª¨¸µ«[NhUQYi±ÈÅ~9'%+*)0177;9?<ABK@AA<99/89:[qtfpa]cjkorx{~}} ¢°¾ÉÇÀ°¥¬²½ÇÆÄÀÅÅÁ°¨ {\6./101/12/.0-48RG:5Q_V@;FKF89<@62:+-./N ®X[dLpz¢£°·¾ÂÃÄÃÁÂÄÆÈÉÊÍÎÎÓÑÐÑÐÏÍÍÎÍÍÎÍÍÎÎÑÑÑÐÐÑÑÐÑÓÒÒÑÒÕÓÑÒÖÒÓÓÔKKKIDFGJJKFINJJIEA?;==AHTVds ¡¢¢©§§¨ª®¬«««¯±³²³´°®¨¨|laXMNMKQVVX[]a_aiqkeV@1:<KW?Aat}ra459+-0./7JEAJKF;Q^RHCVv[nsUPKZmxsTCBV_]W_b]]M=1/>A*%$3I{¥«¤ «§¯¼°S[jXYbeÃÇ7+1&+1'31.12--/61A=;;-2.+*'&JopnfeS`klqqou~zxy|}}~y} §´ÅÌÊÁ·©¨³ÀÉÇÅÃÆÆÀ¦£}uA6-5112,+/*,0.17KD:8QZSG;IOB>7?C4/2&'"0Bv¯£VVoVj| ¦®¸¿ÃÂÄÃÃÃÃÆÈÊËÍÐÏÐÑÑÐÏÎÏÎÏÍÍÍÎÎÏÐÒÑÐÏÐÑÑÒÑÓÓÒÓ×ÒÐÓÔÕÒÓÓÑFFLJIEHLIEEMLFIK?A>:<BGNR\hu¢¥¢©ª«ª©¦¬¨«®±±³·³°¯©§ xq_VQIHSOLST\_`\grup|fPDPB8NRG`|XF>3BE0/?201IJ9XJA@KRFQB_|eg[VVFen^yw`>>Vho`UNJRI+%%6F2'/?Sµ©¥¦´´¿»¬^XbZX^`u É©?)#$(31,+,143/18:;K@<C921,0/,JxjnbiQ^`hsqst}z{|£©¸ÊÎÌÆ»±«°ÄÌÊÈÆÆÃ¹«¨ wg4.)1041-11/+/.1>EB69WYTE;IOK6?AB3,+($+=w©¦YPrgt «³¹ÂÂÂÆÅÅÄÅÉÈÍËÎÑÐÑÒÒÐÏÐÎÎÏÏÏÏÎÎÏÏÑÐÏÎÏÒÑÒÑÔÕÔÑÐÐÒÔÓÔÓÒÔÔMMNCFGLGEGGKMJHFCC=<8?DKY_gp¡¡§§§ª§ª¨¨ª«¬²±¸¶´²¬¦ylfYJEFIJQ\V^]dfssivyhO29@?RIWvg/-26ED03;156NE7KQ><IZMFK[`wlMDPPYhwf:5Is}lNG9?D&&<7CKWo ¨³¶Å¾» Tl^ZZYo¾³\,'#*,13./(,23*,/30KB850042''/LtajhoV]binosxzwv~~~ |~ ¡£ª¾ÍÐÍÇ»²²ÅÍÍÉÆÀø±¥¡vF-011.701051./59@CF;=UOWG<@XG3EC;.3."'"+:r§£}bJknt§³½ÀÂÃÄÄÃÄÇÈÌÌÐÑÐÑÑÐÑÐÍÎÍÎÏÏÎÐÐÎÍÐÑÏÍÎÐÑÒÒÓÓÓÓÎÒÒÔÒÒÓÒÑÔÔGGLJFHIKIFBIIJC?=@D=B@DKT[ds} ¡¦£¦¥««§©©ª¬±¯®³µ³³µ®¬§¡ynb[HBMJLRUP[Y_irjp{w`?6CA8QSfx|L$**,Zd3:D7/8HE4F^A=BNTBMWL|o6?J^frww}~H1JbB;,.1;-('5FZYfx~¦°Á¾[]l`X]f|«Ào/)$(*)+<@/2010).4>/MD=<1,6.&%*Elfi[vXZceopqruy}{|~ ¤¤°ÂÑÎÍËÁµ¬°¾ÍÌÊÅ¿¹®©¡ |h7---.--02.4-,)16@GB8JPYQHA@PB8BC9511*+#/>p¢£}wfMnzw } ©¶¼ÁÄÃÅÄÄÄÈÊËÏÏÑÓÒÐÏÐÐÑÍÎÏÐÐÐÏÐÏÏÑÑÎÏÎÒÏÑÑÔÓÓÔÒÒÑÑÔÑÑÓÓÓÔIIFHHHFBEFA?CDDBB=F=BBFNOYbq|£¢¤¨ª©ªª«®¬®±³²´±¯ª¤¢xp^SOFHNLU^TVVexsnfwud<CB<D]mj{p<'/24:]:QE<9>HA:6\RA>DMEG@Ryp:1KWt~ n{zd6iS/7,'+>K15CWfmdjs}¢¦®¸Â¿±e]ZVXY^rÁ9*&+,74/6D81.252+2=7J@=B,.4/+()@bcg`zYQ]ivnmwwx|}£©¯ÄÓÒÎÍۧ¶ÆËÌÄÁ¿»¯¥|M/-7,1-+7.-71.,2<EB77RRZJGCEO=4FC1@04'+'&En «qeNv £«µ½ÄÄÆÄÂÄÆÈÌÌÍÌÒÑÑÑÏÎÐÏÏÏÏÏÑÐÑÏÎÎÑÏÍÎÎÏÐÒÓÕÖÔÔÓÓÒÑÓÓÒÑÓÔÔIIEJGFGK?IBEGGIDHAA>=HMOLU_pw{¢¥¦§¨©«¬ª¬¯°¯®¬²²±µ°¬§£zo`UJHDPOPPQ\]wpolj{u_3>A?Wolp{~g5(/9;4:SRHCC?P@40T_KI9HOD?OftS3HBPzzyitlyT§:#1;' *BX\bd_kagw§µ¿Å¹vVeb[YYpÁ>(,)%)7503767+1:00-@4DKLB57../*'Aibe_zdI\ahmutt|{~z~ ¥¨®ÃÎÑÍÌÀ©±ºÈÎËÌÅ»¾±¤o<3,-+1.010/.*4754=@=FJPPQLDJI7/D86>22*+'(>otgIs~¡¶¾ÀÄÃÄÅÆÈÉÎÍÒÎÐÒÑÍÒÐÏÐÎÐÏÐÑÐÑÏÏÏÑÏÏÐÎÑÒÑÔÕÓÒÓÓÒÐÒÔÔÕÔÓÓÔMMICEJ@HDCFDDBCD@;>=ABNNRT^ov}£¤¦©ª©¦ª¬«®²°¯±µ²³´¬¦ {sbSHDEMSUUX]neffmwW5<ESdg^lywW9+6;41>WN=DKFEE<;@`LME@KCAG^hdB825Osskny}}.!+?* &Rsrki^_^n ®½Ä¾Rb`WV\e »µ@(*%(&,AQ83918//857/86CJP>:7.,%+(>jge[pdS\bfisou|z{}~ª°ÃÏËÐξ±°¸ÉÓÓÐÌÊÀ¿³£M4(,-..+:8311,,1B7><:CHPLMFBHD78B9;9+0*&&&6n®qtDq £®¹½ÃÅÄÄÄÇÊÌÍÎÒÑÑÐÑÏÏÏÐÐÏÏÑÑÒÐÏÐÎÎÎÏÎÎÑÔÒÒÔÕÔÒÕÓÔÒÒÓÓÓÔÓÓÓBBF@DA?JBFEDCGEA<?A<GGDJM\^i{¢¥§§©««¬¯¬®°°°±¹µ²²±®§¦~mbSEDGLJQQWjlkgfo{tU5KU[JFOwhaD,75;07DE>;DOE<CNMETXLC:>EFET^]b:-0=Rtup{;&(1Hi} ~pmhs¦¦¨·ÃÀ§VYqUWbfu¦¾r)&(#%(7MPA300.'+706148FHGGA0.1&+(4dh_\n_LP[`gwptyyx{{~ £¤±¶¾ÊÍÔÑËÃÁÅÍÔÊÁÁÀ¾¿µ¨y;*).+-3-8D313+.074<?ELIQKVC@LK?B@=G9//+%&%.j{¬t}Ks}£¯·¾ÃÄÄÅÇËÊÏÎÑÑÑÑÐÒÑÏÐÏÐÏÒÑÑÑÏÒÏÎÏÍÎÎÐÒÔÔÔÔÓÓÓÕÔÔÒÔÕÓÕÕÔÓÔII@;:>>E>C?FDHJACB@?DEBGNU]iz£§§¨¦¬©®¬²°²²·¶´³®®©¤ }shPJFGJORS^~l`cgepvjS;IWD39S|gUC*7<43HQ@8>=RD;@P`NI\KNA;GHMRPTq]>,2;Xnz[&$#2Ul£¢}¤··¶ÂògXlfYbjw½8'0+,%*?UbF6:23++>.1*33AARPG12(+)(8`[a^nc[YZdgvpqwx{} ¡¡¤§§²¹½¼ÉÓÏʾº¯¯®®¹µµ¦ zX<-*/',-55J30/.3972=EEGKSORE@ILCKE:F>/-$#'%*]{w }M} }§±¹½ÁÆÄÈÊËÌÌÐÐÑÖÓÏÑÑÑÎÎÐÏÑÑÒÑÒÏÑÏÐÎÐÏÒÑÓÒÓ×ÓÕÔÔÔÓÒÕÐÓÕÒÔÒÕFFB;>A<?AEKIIAA@=B>@?CIFRU^hu ¨¨ªªª¯±¯¶´±µµ²°®ª¡|neSEFIFKLVsn^_ddip{vjJ:GD5&4kwgW:16B2?LFA<9<\J>SQjfJ]\TRGJKQMGK[qS872J^vwqwk3)**'Caw¢¶¼³«¿Ç¾ÂĵwO]qW\ltµ´E,/.(%))A_jK1/20&*94654?DCUNM/*+-)):[jVWfgSN\^`oqsxu{|} £¹À³©¤ ¤ª¬|} y=/.*/.*2569/./0/836EE>GITPZGAFWPCA;IE/.$'&%(T§¢u}\| ¦°·»ÁÄÆÇÊÊÌÍÑÒÒÒÓÐÒÑÑÏÐÐÓÑÑÐÐÒÑÑÏÎÐÒÒÐÑÒÑÔØÕÕÔ×ÔÓÔÒÕÔÔÔÒÑÔEE<;;?=;BD?DCJCCCB@A@ECMSV_j}£¢£ª©«©ª¥¯®¬²±´¶´²³±¯¨¢zlcQKJJJNTfua^_]edqhPB=:)';qv}mE:9D3;>EA:76ME?>AauUR``UWLPOOE@GmsRA::ATXWm]+&Rscdl¤¯ÅÊļ¾ÎʿƲ~W^m[Q\r©Åu)((-%'))?_qR4+,3)):4475==FGGC3-4,'*9UfPYibZGV^dkpsz~}|{~ ¡}u{~X//2*30/49251132593>@IE:>TKYHDEQOBA:FG6-&%$$-A}¤tv c}|£½¿ÁÅÆÊËÌÍÏÑÓÓÑÐÏÑÐÏÎÏÑÐÒÒÒÒÒÐÑÏÏÑÒÑÑÔÑÓÔÔÒÔÖÖÓÔÔÒÔÕÔÕÓÓÔEE<=;:8B@=D@?FBDEB:8?@LNJRYn}¤¤¤¨©¬¬¬¬¯¬¯±³·¶µ²±¬ª ~yn_NOEEHOYtk_Z\acismE6/)(/Wk]j;00A79>BC6926@FC?__R`if_VTWJOCA[wlJ329J^Ze}}T3):ph^n ¢±ÄÉÏÍÌÑÈúS[ifZ[c{Æ.%%''*,(7KbI,*,4+'48565BIQEGL6/.-*,<`oNWd]THTX^jppsz{| ~~}~~zqfguw9.,2)-1+020/7/4509/9FJC>FUFWLHPYA@=7;G2,$&+,0?z£rof~~¨³¹ÀÃÅÈÌÍÍÎÑÒÓÓÒÒÒÑÐÏÐÑÏÓÐÏÐÒÑÓÑÐÑÒÔÓÑÕÓÒÖÔÕÕÔÕÔÔÕÔÕÕÖÓÔÔÕ>>@<;6:?=:=<DGAG@@9;;BHKNU\iz¡¦¤¦ª¨ª®©°±¯¯²´µ·¶°³²ª© zn^TIGAORlm[YX]gjreB45.)1^S2jjL35G=@?BB1;:489;@b~tT[mccbUOGHEACVylP>:Ll^drs`|{hYa ut¾¼ÈÓÎÊÑȽ X]imYYcv¼µA(!% *-),)/BTI.0+-/'44.;;D;M<GN;((+.-/_vNZ]bRFR\bfolrsx|~~ zshhlvx} |}zz~|wvzvry~relrzysb\agv[35//+/-/96/0-5/,8615QP88AXAUBNQY<B33DEC-'!+(*>o¡xjqz}©±¹ÀÄÇËÍÏÎÐÓÓÕÑÑÑÑÓÒÑÒÒÐÐÐÏÐÑÑÐÏÐÑÑÒÒÓÕÕÔÕÕÓÔ×ÕÔÔÕÔÒÕÔÔÕÖÔ5546<:7:;6<?BBCA=>?>?EHJNUZgu ¢¥¨®¬®¬¯¯°¯³²²³²³³±´¬¥¤ymbN@CDUhveVW^]dr_A6+,2G\5)CWI@<=9:AONB85217>Hi}d`dicicOOOH@=G\znVF`nVP[wx`TWs®«vu§½¼ÅÕÍÏÊÁ¨eUitfY`k°Æ|-(./+,40,'$=PN0%*01..11;=D4GBJRE++,)/1VzFRVjNLJY`clowtwy {|{ s]FGNYemoqyy|}wywt{upsmqrnkjjonnos~|}qWLCW_binicls|C,./,*/-576,1.1,2:28?II3=GT<O?HRR@F229DC2-!&'(6e l{ª´½¾ÆÉÌÎÎÑÑÔÓÒÒÒÓÑÑÒÑÓÒÑÑÏÎÎÐÔÏÒÑÑÓÒÒÓÓÔÓÔÔÔÕÔÖÔÔÓÖÔÔÔÕÕÙÕ9986:@<>=9?@I@@@;<;:DFLKRYal}¡¢¨¬°®¯ª±®¯²³²±³´°²´®©¢zn`RHEHli[UVW^p¡{^D=.8<aU6'5DC;:?B7GLP?==01<5Mm{fmk]fhfZLLN?>LXzwayyN9Far`I:^|s«¶À¹ÅÐÐп´yL_nja[d¥É®<#&/122:2&$,5IN</(+4+)1.87@1CALOK,)'',6Up>KWlVMDRYfkpvuww ~}}q[USVLIHMT\ahhjjkipnsga_]_Z[TQXYZcfpvvx}zsc]ZTZcdotppr}`4(5/-%0.4=3.521-6;6:EKN6HNS=LDPTRF?,.?UF<1#),*6av ¤¡| £·¼ÁÅÈÍÌÐÑÒÓÓÓÓÓÒÑÑÑÑÑÐÐÏÏÏÏÑÐÑÐÑÒÓÓÒÒÔÓÒÓÒÔ×ÖÕÕÔÓÕÕÖÖÔ×ÓÕ;;6<575@>B@DBC>>?@@?=JNOPacr{££¨«¯¯±²´±²³µ±³²´³±¬§¡tn\VKCYk[OVT\f}wZ;53@XVC-#(0.5?NL3AKT16H7:94GtljeYfnreV^TC9?M\z |HE=\KA@?Ro{ywv{®¿ÇÇÐÕÔÍÀ£VVhqXacvÄ»`&%'/,/12.,).3=IF/&)*0+5578>7A?KRM/%%)(1Rl?RQcWJHQ]fkhwwwy}{~z}sjdmdaXZSRWTQU]Z]ealoigff`c`WYYa]fnprvttzskongckt}w|v?,),/+0.1462+)).4:31@KA<0;RW@OGOPO=:**9WM@1&.0+4Y £~ ¤ ~y°·ºÃÆÉÍÏÒÓÖÓÓÒÓÒÑÑÓÒÑÑÐÑÒÎÏÑÐÒÓÒÑÐÑÒÓÒÓÔÔÕÔÕÕÖ×ÚÖÕÔÕ×ÓÔÕÔÔ9975494;;8>>D>@@?<>@=FQPT[ep{¢¤©±®¬±°¶±±±±°³µµ³´°¥wp^QKT|t\VOSZYstW@/8PN<?/0'+9=KMY6BMH54X><86Curn`dZ]gcfoiaWLQMXgx?66ME-8CZt¾ÓÙÙÓÒȸM\hVV_u¶Å2-0++73.1,)**08HC4,67,/5468@55=IPR9*+.'3UgCQRaYRLR\Yeirzx||{~~}|}} wzx||tnjb^_^a`jliprrsnppmloikkknlkosz}}wx T3*,1**-012:-*-*+.714FIA85<WLHP>IRQD9+06OO>1$%0)1Q{ | ~£¸ÀÆÉÌÐÐÓÒÕÔÕÓÓÓÒÒÒÒÐÐÑÐÐÎÑÑÓÔÔÒÒÑÔÒÑÒÓÔÔÔÔÕÖÔרÕÔÕÕÔÖÕÕÓÔ22:96>:;?<<@EGA>@>?CAIYXVZfpz ¥¥©«®¯¬²¯¯°¯²µ¶´·µ´ª¨¢¡ wpYTYup`TNSR[eznS<0>T98>71&*C;;89:EVF26YT><<=|nccccb]Xhumjc[T^l|uUIFAQ7HRo|¯ÙààÔͼk\j_Sbt¹Ç<,(/*20-31,3((15B>;,*/*3=696;>8>BGO=**2.2So8RVUVHLN[_eepquww{xyyy~~ }~{ssnknnrtsv{~||~}}z} u80,.-3-107:4.-.022;;8FH877DZHLIKJRTG806=\a>.*+.+3Py£x¢{¦±½¿ÆÌÎÏÒÓÓÓÒÒÓÑÑÑÔÓÑÐÒÔÒÑÐÒÒÓÒÔÑÒÒÒÓÒÓÔÔÔÕÔÕÕÖÖÕÕÕÕÔÕÕÒÖÔÔ665977;;:@::B=B=<<8BCI[[^Vjv{ ¡¦©ª¯±®¯²®°±²¯µ¶¶°µ²®©£ti\d|z[PKMVZ^qzz{f\E7HG;AD6*,:8.7:-4>UD6:Je9829¤kKOb`c]`Wdakoha^dSZRke<=bGfg |ÐãÞÔÀ¥{XioZ^rÆ·U').1934610-,%):8A:=-)/02<8?7?@1:EJPA+,',3NhCJPXUKNPVbbepsuxx}{yy{|~~~ |~{{xx{x{~©¨´¯²µ¬¢ }L1+).1-.0,8;--0.2/2;<=O@399F`IEJQISTME.1;M`=102.)/Lj£{¢z|¤±»ÃÇËÍÑÔÓÖÔÓÕÓÔÑÐÓÑÒÑÓÑÒÐÐÐÕÓÍÔÓÓÐÓÔÔÔÔÕÕÕÕÕÕÔÓÕÔÔÔÓÓÔÓÔÓÓ884<?:<3=7==@=>;<;;IIOWR__fs~§¤¦«°®°®¯´±°³¶¹µ¶¸µ±¬ª¦unk¤dPKNOSWmzvuuc]J>DB6KP<-79,"3.-0?`K53EbB70?¯nN:UU`ehelba_UXaV=9?gxT:c\yzu{²ÜÚ̬_]neeo®´½}80,20795554-1&'3A7<81+,/2<@<?8A59;END/2016V_@CJSSPPSObcfpsrurx|~zzz{z~~ ~|{~}~|{wzz¤¨©±²·«±ÆÁÇÇÂÅ´¥ e;,.+0.2+62015//.+,2<28B487;K[JCOFJWL?B;58Q_E4$'/-2Ri§ |}|¨³¿ÄÉËÏØÓÒÔÔÖÓÓÒÒÒÒÔÓÒÔÓÒÒÑÒÓÒÔÓÔÖÕÕÕÔØÔÕÕÖÖÖÔÕÓÕÒÓÒÓÔÔÔÔÒÓ88:7>89;;==<BG?F<98DCMTQ_^dmx £¥«¬¯¯°±±³´´´µ··³³®¬¥ ~yx¡^MKJRPU\oppuqbbSEE>>ScK;B2*&3+)/EbJ:<:`\/5<´gJ:;K_mmhlj[QMTdV::;QsrSsoxz zry¥ØÒ¹k]jgmyºº½A4+61,47370.,')%.1:578**,21?>04A<7;BH=0),2:M]J?UTMRKHLX``ksqvtqvvvywz{|~|~~}}|yxy~ªµ¸¼¯¾À³¹ÊÆÄËÉIJ£xC-++(*.032255+))*(629155-27@JeJCJMLSK85/6EGZK4%(1+1Oc¦ {¥µ¾ÇËÏÓÔÒÕÖÑÔÓÒÒÓÑÑÒÒÒÑÓÒÒÐÒÒÔÔÓÒÓÕÓÕÔÔÔ×Ô×ÕÔÓÕÔÔÓÕÓÓÓÒÑÔÐÏ4486:67A9=@BC:A?@4:>ILST\[bqy¡ ¤®¯¯¯°²³¯¯¶°´µ¶³³³¦§¡}{cJHGLQQTcufgtjfc?@@1@o}A=;.&&1)'2OfP=79]g3,E¶ lG<3HP[lkvtkZT[^K;>7L^pbl|~sw«ÐÉm[jqi®½¼¨V.-7959652525',1,/,5=/<5*+.1695<B5?BDNH9..07GVD8UOROBBGSV_gmoptos|uw|y|x~z} {~~w}vyz}} ¦³´±£¥¯¹±º»µ®[4,/.-)-./6146/*))+75<8=/526EMkL=MMOQJ>73BK<YU7+*--/Ng£~{z{ªµÀÈÌÑÓÕÕÕÕÐÓÔÒÔÕÐÓÓÔÕÒÓÔÔÓÓÔÕÔÔÔÕÕÖÕÖÖÔ×ÔÖÕÕÔÓÔÓÐÑÒÒÒÒÑÒÒÏ448:75;=9=7@9;>?@75<ESVZ[bcnw~¢¨§©®°®³²«±µ¶²·³±®®ª§¢¥|[KFFILMSZlkghkbgUAJJ7NEB-&&-3%)BdbDF:9Pk>-B°mN1,AQVYYlyxk]\bG:R9CY__iwsÀиhUkrq¡¥´«¢n1.32+14402451/-0(/+3<6590++/5;89B>>>FKC>,)*8AQG4ZPVQ:EMVZeijnqtqwxvwvvy}vzx|~{{zw| }}}¡§¡ §¤¢ u;)*/'.*-+.C1.4+++)(1-:H<,,*59QoLBUQWUHH>7C<IWX7.0,+2O_§ x{«·ÄÊÎÑÔÖ×ÕÔÕÔÒÒÔÕÑÑÒÔÒÓÒÓÓÕÔÔÓÓÓÖÕÔÖÖÔÕÕÕÕÕÔÔÒÐÑÑÑÓÐÐÑÏÏÏÎÐ::763455:;9@>@A::3;=DTSW[\`l{£¦¨®°°´´±±µ²³´µ¶±¯¯©§«°¥}cHDABGLOSilhmjaXDALW?evO7&)$-+(1Qfb7NE5@mO;W©z}eB9;YPQJDX~uiZWPSLGPYQf ¡ rv¡¿ÍÎMctw«ºp;+.361+/57;:431*,(.(/7065130-/9B879=?DEEC8,/6<FK6TONM9JPQ[b_imhrpxssuuv|wzzx|~}| |{||zz}T.1*((0)..09..1*0.%.4,7K91.):@QlM>QL]^F@;>G9A[T114.51R^§ }~x~«¸ÄËÏÓÒ××ÕÖÖÕÓÒÔÑÒÒÒÕÕÔÖÓÕÖÕÕÕÕÔÔÓÕÖ×ÕÖÔÕÒÔÓÒÑÐÒÎÐÒÏÍÎÎÎÍÎÍ::713:2;973=;6>:656=FPPX_^`jx©¨«¯°´°²³¶³¶´¶·¸²¯®§§¬´´xhR@>@EEONYs¢oiejmlO7<?SE{aG<234//(-Ri^9EbJ3h_>b§©pzX47JTYW??V|qXjsR^Kfcbjxn|°ÖÔ½\^u}Ê»y43,40..,04486;82.-,12495=564002:HC:8;>D?H;0/-6ITX;NUTH9CHMZ]bgljonvqrqupyxx{}}~ ~}z{yz~~}}h=.)01/0--,2<//303./46+7E4..-9BPlE=GF`TGB?CH=8T^:,1,52K`¥}z~ª»ÈÎÒÔÕ××××ÔÕÕÔÕÓÓÒÑÓÓÕÖÔÕÖÖÕÕÕÕÕ××××ÖÖÔÓÒÑÑÑÐÑÎÎÍÏÏÍÎÍÍÌÍÎ;;61858::939<;67957@CMUXXZZhr¢¡¤§©«®®²³±³²±µ´µ²µ¶³¦¤¡£p_OBACGLNWmkebfpsbE2786OX6,+/6+0*8WnQ0AiW8`\B|³snir?:OP\dA2J`ixNri}tm_£sm ²ÍË]m~ ©°Õ±P385::8:5;87?8968/1-186422,6733319B786BGGL;2-49JRVAUVOB:DEGNZ`iminonoqrrrvuwx{z~ }~y~y|~~~ | {b=*2.//0+--8?.0-22,->2-9D616,9EUfB=JDaRIODD@;8^^2-8-./Fk¥¡~zx{ «¿ÉÎÔÖÖØ×ÖÖÕÔÔÓÔÔÑÓÕÓÖÖÖØÖÖÖÖÕÖ×Ö֨רÕÕÓÒÐÒÒÐÏÏÍÍÍÍÍËËÌÍËÎÍ44.1297656:8;886787AJSQX_k[ds ¤¨¨°±²±³±³²¶´³¶¹µµ¨ªyh\JEIDKLOb gadlssfI7@31c\2&$.51*9CfmH.7XZJV\G±lkUYJM_lrM<:ST}uvS|zPm«¤ ql°½Äe ««Ì»f4.096-44304<556?49.359534/03735753?C=8FF@F;54-4@QU?CUCK=>@LOQ\dfigmkknsrvt{xy{|{ z|~}yy}~~|~bN1'+.0,5102<9255>4.4:308A86/.:EVdD:MHaWDNCD<:;[a8*6842Ap¦¢ }y||®¿ÇÍÒÖØ×רÕÕÖÕÔÖÔÔÓÕÕÕÓ×Ö×××ÖÖרÕÕ×ÖÕÔÓÐÏÎÎÎÍÌÌÍËËÌÍÌÌÎËÍÌÍ003/22625474:685646:DRXZ[ZYgp ¢¨¬¯³°´³²´´µ²±²·´±®¬¦£~sjXLKACHKOnoafeq|pXG/51>oP,+436-+/QmiE,6:ZOWVR³~qgCpx[Yfxz]E?=9Wl`|eaz²¬}uq©ÄǨ°ÐÇX<7478866517;>=66K:534695:82/<<><;=5?A@5?EJJJ><30?DWA?YNPE<EQNNW`cfdfghnsnwozzu{x~} {}zzwvw{|~}}~z\JM3%&2-,)//+91&,7?0.:616?:<30+;JU\G@NF]V<MO<:8>Ui?.4+3+9e¦£ £ {ys{¡±ÂÇÎÕØÖÚÙØ×ÖÖÓÓÕÔÕÔÔÖÔÕÖØ×ÚØØØÖ×ÖÔÔÓÔÐÓÏÏÍÎÌÍÍÍËÍÊÌÎÍÏËÍÍÍÍ@@32,/2056>?89;3473?HQ__WSUhq| ¢§«±±³µ²°±´³²¶³·´³±¬©xk[QFDCAGYmdbcfsyeI;5:6Kx K%%02.""8^n]C630SSWST¨¶ b8Xmkp{vdEJ@A7buko eK nvv®ÌÉ ÂÇׯe>853685:348:6<<B;?62,6;>7735.4=<=D65=GC:7=FBB9914<COF:XTRB6FHJHSV`dkkhigkosowuutwy{~ ~ytuvstwyvw|{xuu{ryo9TA5,(+-*&&*03.*0987;:2247:92.0>Q_XEIU@[T?PE>58EO^=00./4=h§~yvt}²ÄËÐÖØÙØÚØÖÖÕÕÓÕÔÕÕÕÕÕ××ÙØÙØ×Ù××ÓÓÓÒÑÐÏÎÎÍÎÍÌÍÍÍÌÌÍÎÎÏÏÐÐÏÐ88333452/1:48591;66>NX]]XVUbq| ª®°³´±³´²²°µ´µ²´®©¦vlVRBA@EJ_¦h^`ihonW?01<9Kq F+%132)$<g[C80+(5O^Ws¶·V7Kl~bnz fB>CJ2C_|^Xxr4why{·ÒÀ§³©ÜÂv94045-/249;76417470,-.'35:004/,7=;;B968BB:C>>D64/59?QN9LRJ=9@@GGTSXcdkkgeenlnowuvzvz{ }}~}~utttrvvotrrww{ {E6X<(+0,'%*-//0,06<59D7-570259/+<Wl[DEREc]FOD>?C=TX?06444;e«¡}zytw °ÃÈÐ×ÚÚÚØØÖÖÔÕÕÓÕÕÓÕÖÖØØÙÙÙÙÙÙÕ×ÔÒÒÒÑÎÌÍÌÍÍÎÍÌÏÍÐÐÐÏÏÐÐÒÑÏÒ11001758056-32/.247DQZ`][VXao| ©ª®±±³±°²±³··´·¹±¯¬¡¡vnYOB?>DKc¢}dZdmnjeE1*4=<XrtA...4..'Gc]@;61(,>O` ºgB<ZsswnGLKT8Kxyj`uf9nzVzuz¢Ãή³ÊÈ</.-//0+/4//436:<6A98,)(2872673F5979CH51C;;=8@?83435>KJ<IXQ?8;GKMOQU\biihhiniijtvvvv|~ ~yxuvzt||~|~a18U;++,,2'.,,-503733KC74?6285@(-:Js[=GLC]fKGE@<?>NZB.=H77<d¥°¢¤ }{vou°ÆÊÒØÚÛÚÙÙÖÕÖÖÙÖÖÔ×ÖÕ×רØÙÙÙ×ÖÕÕÒÑÑÒÑÎÌÍÎÏÎÏÏÑÑÑÐÑÐÑÐÒÓÐÒÑÒ5532057:4-1330//046KW__a]]]dq|¦¬¯²®±´³±µ³´²º¶´±¬¤ xnZSE?@JM_¡sa^bhrhV=7438A[|ZD.+/(+%3NbX?B>33*/<cº}z[:V|roUZX]Tjnv}ebXMl {Rflt¦ËѵÎÇB3,3517<:834/679785=81,2,577.)20601786:5485;<69?=69/56EC7COTAA3HDNRNT[YZ_ebfnfkiqrruzy}~ @.;W50.*/*,/*02>8:818N@9293639@*08Nt_INOFc\K@J7;H@MbF5?/342` ©ª££}~zuuy²ÂÌÓ×ÙÛØØÙ×ÔÕÔ×ÕÕÕÕÖרØÖØ××××ÖÓÕÐÐÐÐÎÎÏÏÎÐÐÑÑÐÑÔÒÒÐÒÑÒÒÔÔÒÔ--.0155233443011-0<Tnbbea`emrz ª©¯®®±±°°²±´¶³µµ°ª¨ |m`IC?@DO`¡t_^`i^NJAI543FXy|A7340+#&/NXM75A<8+$4l¡¼{|S=e|xu``gqzteTbv|wjTJTwkfkoÉÎ¥§¶ºØ¡Q55272554415425:=99;A<652558<738<4727;?=;;9>?B:>BEA;065BB6AOSG=7=FTUNWZ]Wcdhgknknpryw{{~| ^,.>P5,/,*++3.,-<70945?E54401,1<(,5Iq[DMKE]_JAH<=>9M_Q/1.410\¨§¤¤||{uw°ÂÍÓØÚÙÛÙÚÚ×ÕÖ××ÕרÙ××ÖרÙ×ÖÖÕÕÒÓÐÐÑÏÐÒÐÑÒÐÑÏÐÒÐÓÑÓÒÓÔÓÓÓÓÓ==2.5415041/43/2-4?Tebiaj_fmv|¢£ª°²¯³±²±±±³´·´²°¬§¥~nZVG=C?IayeVabWWTMH::CEJrf6:142*")7P_S64AE5.0A}¢¸ vrLH yjh`u[PRQ}tqG6;o phxyÈ×ÂĻջ{711.3./4+-1-1-/7:741::40+/0;:422513814:8588829:9?<?=+.2<A;8LDG867<HIERSXU[Zfeeeiopnsxw{~| {?'-LC/=0)*+'01,2:42<677<71478/38++:Ns^FSPI^XHGHABBDNVO31285.X£ª¢~{wyru´ÆÍØÙÚÙÛÚÚÙÙÕÕÖÖÔØÙÙØ××רÙÕÒÔÓÒÑÐÑÒÐÏÑÒÓÓÔÓÒÐÓÔÑÑÒÓÑÒÔÒÓÑÒÑ5542/160.11/0000*3GWdhlgdbhor ¢«®±²®´®±°²¶±´´«ª¦£¡yn^OF?IDJYym\c`X`YJA;GOIMeV-67,-.&)4UaI38?G48BAi¼]uuRk ~gle}kBFVV|tz@67]|fq{¬ÕÛͶÕÂ~P7,()-,4950150,-/>84/::21&23A3..326101/579;=9;6<;A:>7.+56??8CAK=94;CIFEOTZ\Xaifflmposrw~|y¡¡¦¡¢Y2,3TD31"'+*/3-/2560C868=?2146+5>+0;Qt`EKCA_XSLMAEFBOUM930;8'Q¤¬§¢¡¡|~|svu¸ÄÎÒØÙÛÚÛÚÙ×ררÕ×ÙÖ×ÖÕÕÖÚÔÔÓÓÓÐÑÑÑÐÓÓÔÔÓÔÓÓÒÑÒÓÑÒÒÒÒÑÒÒÑÐÑ33/62702/2//.),.16MYeighfehj{|¡¥«¯¬¯±°°°²²±±³·³²®ª¤ }p_TI=AGFUp}qhpbZ^UG@CWZOEcD4?9--))(=ZYL-1<D<7+2N²y\awkZ¢{lnsrpZGLa[[ouVOGipIuvÃÚßÇËÐI852-1.3436-20/2656=99?99,'-0892.67:2-/523;>:;6;>9C>?:+.27=>6<<M=949FED;LSYWX^dhhgimmnpt{~~{| £¥¥©©§¤;-+2MC.--+1+.2014116K58:?A01?7*27*1:Wv`CLPGbQMIOGEJTRNFA/0?<-P¡¬©¢¤¢}{yytvt¢¸ÈÐÕØÛÛÛÚÞÚØ×ØÕÖרØÕÖÕÕÓÓÓÕÙÓÓÒÔÔÑÔÓÔÓÖÔÔÔÔÑÒÑÕÒÑÑÐÑÑÐÑÏÏÐÏ001.,3374/10//224@O_eeecgcily~£§¬°²±°°²³±µ³¯¬¦¦¢yndXNGECLSdv~ylinZMMEAI]iXO]?553*(&()?X\F),0D=822F¥lmtcsexy[ujoxhe_MNXSUaz`bcs h2fav¥ÏÚÏÑ¡R402-12455;;<260,439:;8=61.*02>81456=303/,+1:;864?9>H954/02<><;:IG832CCG;BCPUR]cbbihlkqopw|}¡¥¥§«ªª ¡¡f*('2G73,,-,,0.-,1;6<B3@H:80281//5./?`yaFIOHeLIKJCBMDVVAF83:>1J¡±¤¦¦¢ |xuxur£¸ÇÏÖÚÜÛÛÚÚÙÚÖÖÖÕ×ÕÖÖÖÓÔÒÓÔÓÓÒÔÓ×ÒÓÔÔÔÕÔÕÔÓÓÐÒÒÏÑÐÐÏÑÏÏÏÍÍÐÐ00/3+/-0302335214CRadehfhbfny¨ª¬°°±´±¯°®±²µ²³¯¨¥¡zk`XKD@BJO[nvrggiUF@NDNc`YWb=;3,-*'+,Eb`F1(.;?=76A¦gdgUrwrq`h tpylcdZVNGLT}sof<U|dd|¦ÄÎ G63824-222656:1553:07>57@935)/66>.50587.+-.,07<88487DB;600/79BA;;AF612=HMC;:@JPWYZ^bejijqqv{{~ ©¤¥¥ª¬¬ª¬¢ ¡C%&-7I5-*0*.210.469:F<;@J3142?060751>`saHOOLiMTLFDDOLXL>J9;:6,H©®£¥¢ }{xupu§½ÇÑ×ÙÛÚ×ÙÚÛרÖÕÔÕÕÕÕÔÔÒÓÕÔÕÕÔÓÔÔÓÖÔÓÔÔÔÖÓÒÒÑÎÏÏÐÐÎÏÐÎÐÏÏËÍÌ,,112--4916.02306;NYedgec]fqz ¥«®±®¬±®®²±±±³²µ´¨§¥xp]UKB>FLR]gmlebldHINDW\_``V;5=3-)&'/Hd[A**-2;@@<@©`_cSfoyxpjn}mx}mil]MIKQ}pg}f5P~hmzºÆy442=40223931-12.6,*7<A74B70.)17<>./308>/+,00008797699D<73/109<?6A8E61/9FOE815AFOYX\^bdgilmtt| ¥§¦ª¨©¬§«¨¥¢¤§¢r/')(>L3,)0(,4+.0:6;?:;><;10:AG=/-34/E[peDPQMhSYL?DDKK[L2LA?6<.Q§¡¢¤£¢ }xywqyªÀÍÓØÚÛÛÙÜÚÚØÖ×ÕØÓÔÓÕÕÔÓÓÕÕÔÖØÕÕÕÕÕÔÓÔÔÓÒÒÒÒÏÒÑÎÑÏÍÏÏÎÍÏÑËËË,,-1-1/33/0//1935AO[fmkij`gpw¡£¨°®¯±°±°±®´±²®¨££vjaUKABKNUY`mjZck^IEGJMGK[`V@3@901'"-AdZE0/436>GJNw ZfnZK\hr{nwyv}~uoj[KHKu}adl-Dn_s»Â[..?B1-++.1./44/4.1/5GG?475-+,.69;3,040:22,21130:872935;@74825>=7;;<:65AFNJ9238>FUJRUabb]hmnquu{ ¥£¢ ¦©°ª¨¡¨©®¤¥¤¢¢¡`30,-LO01(/.-03+2<3<D814AA..8FC'2,/98J^xiEMOJkQWH?GBKLRD0PN>342L¡«¡¡¥ }wrsz²ÄÏÖÚÜÜÛÚÛÛØ×ÖÖÔÔÔÓÒÔÔÓÓÓÕÕ×ÖØÖ×ÕÕÕÒÒÓÒÒÏÐÐÏÑÒÐÏÏÎÏÐÏÎÐÏÏÌÍÌ//./+-,0/1,.4.0-2@VZdqkihfakt¦¤©°®®±¯²°¶¯³³µ³«ª§ xm]OHB?ESSXfsi^inT67DQ=6Iar]7.@744%&.?dS?+&.96>KOOmVlmG5BDE^zzm ~{xvtiTFPt¢b_¡l-:`Z}{ýT15ZA0+14363591-78067_@>;;6.'&068=22.02>52/-042/2:4:>7;:@23<53B=:6CA?7.6FNL>4,47:DELUZ`^_cflosu}}| ¡¤¨¦¨¤¢¤¢¡¥¥¨§£¥¡¢©¨¤¦¦£¦A(+,1RC,0.0954/,582;F99:A7)05V=+3/4;6K]xjFZLKnNTHBLGEJOA4MX<.00E¦°£ {xrs}µÅÎÔÚÛÞÜØÛÚØÖÔÓÒÔÒÔÓÕÓÔÒÕ×ÖØÕÕØÖÖÔÓÓÑÒÐÐÒÏÐÏÏÏÎÎÎÏÎÎÏÍÐÎÍÌÌÊ..12.57.1.-2100/4JXX\dgedaelz£¦«°±²¯°²°±±±°¯°±³«¨¥£ {p\SJ??IONXdie[[hI88PI90Cm~Q3/6:<;,1(=cWC0*:A43CSVySieA/9;=BTw ~ q|ytf[Ni¤mhw~RDKPkQ¥§C8P\73/6/664354214.-;?@:9983/,389A/-(.27<5,-.-30/0488<16:73978:88:;?@@09DGNG91-03:DHKPX\[c`knuw||}}} ¡©§©©¨¥£¢¦¨©©§¤¥¥««§«¬ª¤k8&'.2N>-,+3033/02747?@==?3,04J7.://76La|kNNKIqIVN?OMNLSA3IY=16+>ª®§¡¢¡ ~}{tst¸ÊÏ×ÙÜÜÛÚÜØØÕÒÔÒÔÓÓÓÔÕÕÕÖ×ÕÖÖ×Ö×ÕÔÔÒÒÏÐÎÏÍÍÍÍÎÎÌÏÍÌÏÐÌÍÌÍÉÆÈ..-,0812-,+-,24+5DTUV\_^`_fnz}¢©©±±¯°°¯¬°°°²µ´°²«¨¤p_TIGDGPSZ`c`dVJI;<FD3.GxR/3>=>4,/2?YUD+25=7-;P[VbdE82864IUljpwhdc|v|n]LHx\AVP:@kF132853@932/1756/8@<;<9<+.,08>:/384-2>62-1-5135;94B;67879:7:;;6:B?A64;MHK@04--.27AHPWVX\\ipvuvz~ ¨«¯¦¦«¦¦§ª¦§¦¥¤¤¨¬²°©£Y4(-,7J62319453105>37?>H831*04>7*/1476DZyhQORMrLLL?PWIRUE.JW<8@*@«±«¡££| ~{uurºÈÑÙÛÝÝÜÛÚרÔÓÔÒÒÒÓÒÔÕÕÕÕÖÖÖÖÖÖ×ÔÓÒÒÐÐÏÌËÍÑÎÌÍËËËÍËÌËÊÊÈÇþ//.14695/(*-1807@@QPX\`_`cdny¤¨ª«°¯®°µ°¯³³³²¬©¢¢ wp\OD@@HMOXibtvX6775:881MsW1.:0>8010;MNC.+/?2*<M_doxP/0A@7?QSltuoltnkvZYqeKisL68:KH<352055A;3/-61543:B@@A>5.0/46I=-213719;2*--//-2:969;30795969G;26C@C92;JBK<3.,/,/8?AJJSRZbektrx{x}~ ¬©§¥¦§¦¦¦£¨¦¤©§¯§²¨ xS0,)5@A53759862944447A6O542/099;+04-;9KfthCRTOnISPDSQKIND3VXE:D+G®²¦¨|zxqt|£»ËÓØÞÝßÞÚÙ×ÕÓÑÓÐÓÔÒÔÕÖÕÕÕ×××ÕÕÕÕÔÒÐÐÑÐÍÌÌÎÍÍÌËÊÌËÊËÊËÇÇÀ½¼µ00,,.74202..--,0>:IMR_]adderz¡©ª¬²°±±±²°±²²¶²¯ª§¢ zk\OKCCFLPW^dyj95548;5+3MmcA)49@C90-8UFA3)/>--);etz W628F>?Z][jk}x~pjpquiLmkXszR66CG7538.,6788952/30/35@;;??00+-:7H<412440BB67/+11-/3/9;=;0:B523:>:75?F;804JBHDA.11,+45=>EQRVW]lmqwzzz{~ §¥£ ¤¨¦§««©ª¤¥¨ª§ª¨©¤pQ+%*1D@04518;95434689:AL73117807238-;?MhtgGJOLoDLEAOWOFMJ7FWG3;+D®£¡§ ~{{wsux¥¿ÍÓÙàÞÞÞÚØ×ÕÔÓÒÑÕÒÓÔÕÖ×Ö×רØÕÔÕÔÔÑÐÎÏÍËÎÍÏÏÊÌÊÉÇÇÅÅÃÁ½»µ²§22,.53541/1.10-,25CLTYa`dirw£§©®¯¯®°°±²²±³³²¬¨ zmZNG<@BLNV\qwO:21483;,1Y}^eH/38;GA00DR@E0%.5.+!;\y~i816GH@^kVomiowqhqys|\SWL`kZA<E<4?84220/23000+//-7;@9?B<5/--33F@/-126,2;7-,017-.316>=827:923/7<D;;E=937@LCNK;30-*()/7??ERP\bjotptvtu|~} ¤¤¨¥©¬¬°¨«§¥¥§¦¦¦ £mQ-(*.?8328;<696953:57<?QA1.773/78040<GOhsdOMPNjHOHIKXNNXH3JYD46,B«¬¢¤}||vuu{®ÂÍÕ×ÜÞÝÜÚÙÖÔÓÑÑÒÕÓÔÕÔÖ×ÖÖרÖÔÕÔÕÑÐÑÐÍÎÎÎÎÏÊÌÊÊÇÄÁ¿¾¸¶¨qa4431.10.,+++-67/32;KQV\ddeny¤©ª«¯¬¬²¯®°µ²´²²¯§¤ykYP@:<DCBUg|`D<3/,10B87fhS_C/1><DH90JGAC1--73-)(JxsM9.NRJPf[`zYb|w{oq ¤PBHV]U\O>463;35/67:6766112;7>CBFL@13,*,6E=..24:44283-..632/-27<:58<=C948<=<;D972<IPEJK>=7344-.3=7>OOVYacfckorx{~|¤§¦¨¤¨«¤¡¤£¤¥¥|mW.+14A9438;;699<777:16EM<748@/.299875DUdpgPWVKfIRKMOZQTWN>O_H;7.E¯« |yxuu{²ÅÐÔÚÝÜÝÜÙÙÖÕÒÒÒÓÖÔÕÔÔÔÖÕÖÖÖÖÔÕÔÓÒÑÐÎÌÎÎÍÍÍÌËÊÇþµ³¯¦sbQ=;00.,+---..+&++/5478BJX_`ggnu~¢§§¯¬«©°¯°¯²µ³²¯²¬¥¦zlXNC?C?DKa{pR@888+,4BIHhRAXE408A:?C@FBEA2((741&,?¡ w}[>8E\NJQV[wm]m[lzxqxµ¡]ENkokxY822/6012260141853879=ACGQ@77008:H>6.34=3:8;:2341776525:;:>=A@88479<9?9973;JFFFJ622..2.,36=?OHJK\V]XZ`jpuosyuq~ §¤§¦¦ª¨£¡£¡{iT0+*5@:=@96;=48<47>;6?TH993;H36<34.2<=TangJXTQbMZKJO`QUTJ>R\F>:0P¬«}}ywrs·ÅÏ×ÚÜÝÛÙÙØØÕÓÓÒÔÕÕÔÒÓÕ×ÔÕÖÕÕÓÓÓÓÑÎÐÍÎÎÍÍÊÊÇÆÄ¿º´§ taMA8200,,+6/.0241/,)*36008=KT^adikqz¥¦ª«®®«¯²¯°±°²°¬§¦xhYPC56@HdvaVFWd2,*+CO_kL>LM>29@F;=AT=8E2(*75:$!0y¤wWA8@PMGEAVkxh~pZ\eqo{z£¤usywqnA11/-/25<423227005778EBNN7.11.3>K=471630937740327.*/1,8258>;<756<?A9C>9389@QIGIE<=5<,4+48:>:BFFGED@ELTZ^]fnqwqy{y ¢¥¦¤¤¦¢vaA*,..9926886362;767085J?4247936/276?=?T`qfNVULaMZHMT`R\YI7L[G;;-V°¬ ~ztvuw¤»ÉÐÖÙÜÝÜÙרÕÕÑÓÔÓÕÓÔÕÖÕÕÕÕÔÕÓÓÔÏÐÐÐÎÎÍÍÉÈÅÃÀ¼¹²©£jUA3320.+*((+)/3.0,-+*+'*2+24<EW_b`b_js¢£¦©¬¯«ª«¬¬²²±²³±³±¬¨¥£xj]H865F`_^Xs01)/8K^]J=AGA;=@>78JA;882'+4-7+--}¤_H?@YWMD@O\yrw|dTZwvSmz d>-(+(*,./132883234ADIFNQ2*'))4?S;2..//059;6/---50+*0455379>=:=8?HD@AA@3;>>LGGNMG=<9>C<8@?<8C::><BJJQO[Y`^afjxzvy£¢£¢¤ oYG33-70-46;437;;;9;:49:PC56888395,3<:ACT`rnR]]N`PSDPNYN\_JBJVM><1X°°¤}wvw} ~|wwqu{¯ÀËÓ×ÛÜÜÚØØÖÕÕÐÓÔÕÕÑÓÓÔÔÔÓÓÔÐÒÑÑÏÏÑÏÏÌÊÈÄÁ½»´±¦fJ:4-*+*--++///+,,0/*.),.)5))1?@BT^^^]Zcsz¥¬¬ª®ª¬«¯°¯±µ³±®§¢ ~odXB8AIl®È]dsv/,))0FQUG<:;A9<927EI;,.?6+-1-3(#)b|ZNQb`PA8@\t pkPLdnZl ¤ª«K46./-/157/4891642AIJEPM82))*-?W;030<20/6985,2434.43/53069;>BA9AF<F?C?94;5HHCQXJAF9<;8=>A;AADDHMR^[Y``bg]flrwxsw~ ¡¦¡¡ i[?9347545:777491>758957L>3696.,43..8A?>S\qlPSWTbRXKVIXOX^GADJQCM4T³±£|~qpwwyz} z{zwusuy³ÃÍÒÖÜÛÛØÖÕÕÒÔÓÒÔÔÔÒÓÒÔÓÔÓÑÒÓÒÑÑÏÐÎËÈɯž¸±¨ s^K;4*)#())*)*-//,,.=3/.(+,0()')-1?EKWbaY\dlz£¥¬¬®®®«¬¯®¯¬²²µ²ª¡ zqaSE<KvºÓ¡ZeZ¦e2&*-.>RMZ@35<H>>8?FG03152)/3*3*-4[zcbn^KB8:_hrQ<Ujphlp¢x{®¥pF<573624232231155BQSDSQ604,.->L<10-63--3975+0/174*.3381:;=<>>978>;;@A5.65<EBNWXJA?A=EIW^`\`ecbklmrsyuxxuvwyy z} ¡¤¨¨¦£¢¢£ ¦¢ ~k`A20/728:8B8>C297@:8-7;OI999;/3=72.7C7@N^rgLV]Z_VTFRMPQYVK;KIS<G5X´±zq~qnrops{~ ~{vrtt µÆÎÓØÝÚÙØ×ÔÔÓÒÒÒÔÑÔÒÒÓÒÒÑÒÐÒÐÑÐÑÍÎÌÈÃÁÁ¼¶¬ t^H@6,-4/$(&..0/2//-.00+/(')',)*%&.2@IKV]]X^^hu} ¡£¦¨¬«¯°ª¨«±®¯²¯¬®¨ ym\SIUy£ÉÔRKKFb5,'&&:K^YC215EC86;H@;)35-*-/+.'%,X }pQWTME65CYtyC@TgeN`}wQFbp¡pS<4/*(,-,3202051AQLFWL80')'0EI662314/-379:3+5366.*443167;:A;A=9@>8<;;955?EJQSQGCKJQU\mllknlty}} ¤¤£¢ ¢£¦¨¨¨©©°«®«ªª¡¢ ¤¥ pIA>;6566<A:;;865:97488@?47?4-,9.5-5G4:M\qqUR\WbPXNRMWTSWA@MIJ@L;`¸® wn~rolnpstz}|{z{{~}{xrssr ¥»ÉÐ×ÚÛÛØ×ÔÒÒÒÓÓÐÒÏÒÒÐÐÐÒÒÐÐÑÎÐÑÎÍÊÈÿ»¶¯§xbN=24-+'%$'#)31564..5044323/)+),**)-4<FMYVYUPWcr|¢¦¦ª¬®®ªª°¯¬«®±¬¯®¦¥ymaW^¬ÔÜQE<<NE1*+%*3K`QC?9:@E@8DI832883**.)1+(-\zt iJGSOJ;78H]xzfCC]sYHf}_6EMTm¨¢c@('*$+.'.55+.1;PFDVN6,$))3<D:./-6/122240-(2061/-375./28=<=553:69<<95./0;D@CNNTXP]ddmlrrzx ¡ ¦¢¤¥¥¦«ª¤§°³¶¶»¹¶¯ scQE;39>>418:6459857:=A574401874/8J99R[klQROWiUTKILYV[ZG=FIFKF:d´© rfzukhmqrqsvu{zu|x{} ~zyvqtu®ÂËÔ××ÚØØÓÓÑÑÒÐÒÐÏÐÔÑÒÐÑÐÑÑÏÍÏÎÐÌÊǽ¸±°¢o^H9/,#)(+*)(021;:;=22:=6338/,(&+%(,,(3?CHMUPKMVhx¡¦¬ª¯¬®¬®ª«®±°¯¦¤umclÑÛIXWA?\²J?7@1&0E][LE@BAC9CN613:?D2)/5-32(8gyvxoz`KLXN<82=GUeZJQn¤`IT{¤vF?>5?t£³ ¤rC+'(*/+/-1217=JHOVF0-%'-3JO212,0.,.62757,01001-+14323889<864?A884210014IDGRYWQXejjmowvy} ¡¡¤£©¬·¶»½ÁÄÅÁ¶®rZD@6937616=73432<6==244*'28304I=;MXpmRROWbPYLQRUQ^bLIIPGG=Cd²£~reyvrihmoklpqzxsxwyyqwz{y}|~zzwwnr{³ÁËÔ×ÙÙÙ×ÑÑÐÐÑÓÑÐÏÑÕÑÐÎÏÏÏÏÎÏÎÌÍÊÇÿ»°¬¨uaP9/,*1-,(9$+,2>EDAD88467::5.-0(*+')*(3=CFJQNLJRbu~¡§«©®®®®®®ª«¯®¬©£ vsp±ØÔMDufI;K fI5+6(*&BgVDJ=9?:JRG8143RM2.(00//.Apv~g}}gJOQ</.79DheUhbUXLv¨u`G,.Szµ¼¯l=+'*.//0/7259JHKWF30()%8ST4,/2124+/3;55/05307+22601;8;69C:27G;5643/0/3IHQLNOV]gjrqu~ ¥§§ª°µ»¼ÃÄÂÆÈÉû¯jL70<434755021/844.90)44E9018G>JXjmTRS_aQ[NKQLL\^GEQP?J<>k±znisv}permnlqrqprtuurpuuvtuv}z~z{~|zyyyov|µÅÐÕØØÚÖÔÐÏÎÑÐÑÒÏÒÐÕÑÐÒÐÒÎÎÐÍÍÍËÇÅÅ»µ®¤nUA4-.&&'&)1025@GMPJI77576?D2;13*-%+%)'7;=AGLINHQas¥¨¨ª«¬«®©®««±±®©§¡|»ÚÏM?TPEB8QtV2'),"(/;c`VI=98?MR=68;2YU:1.4/64.=kyqa[HE>*)+;Pv}empjUQ_p~xi]J:@V©«³®t>+0/1-3-64:CDOVR?65)2*:U_2-/14516029982--/-2026/3048999=4229E:49-/5-,?EJRPT_fjorw} {y §ª®´²¹ÁÁÁÄÆÆÈÇÇÈĶ¡iK=9395934,53964-3.(*.0+5/5S?NXirQLSUWMdGRMFNZ]IJMO@HG?n¢² ~zriymzxofompsoluqnqqrsruxotvtssv{z{~~ }}zutps}µÇÏÓÕרÖÔÐÍÏÐÏÏÏÐÒÒÐÐÐÑÐÏÐÐËÌÌËÇÉÁÁ¹²¬¢q\D600&$%((-2:<EGLOJPH88>@<A5741-022.&&%.88CHPOFIS_r¢¤§¬«®ª«¬ª®®¬®°±³¯¯§½Ó¾|I:FR?406nI2()-&.(?_[UFG=3:?G18998KlM07C57-16Ne}jotU93*,8K_v~V\hWSokn} p]^wY74H¡¡¥k;,/333/6<=AENZR>2/-3-@FQ743-149+000466-//421+/244646;>@@9:;@71846936<JPTQW\`qtuwy|~|~~ ¢ ©ª®²µ¼ÀÃÃÆÃÇÈÊÉÊÍÍž¦uVI>?:46;465<95.1,30<4;6=UOSYfrVGPPXUbMTQKQ^\JOQSGL>Enª¬~yyttzyrqrpnnwuqroptpnqompqsssuux~x{}} ||xxsvs¢»ÉÑÓÖÖÕÔÑÍÌÏÎÎÐÍÌÑÑÐÑÑÑÐÒÑÎÉÌÉÄÃÿ¾·±¨x_J?1,-**/-34==DNTQTQNH@@?EHAA9932421-%)'-7;@JJEBJLXju{ ¢¨ªª¬®ª©«ª®©¯®©©¦¡»ÌkF5?PVI20Uw4'$&($ &9T]XJED7<?D=/87:Bu[>;;,:40<DUf~ekvL(+2;[Wmo@N`fTWcbupPcm^M5Ji £g0*+*+.68JAEL`P;50*,47?T686/<755/./4098840/726:<77/3:>=AD887725=5/14;LSUSU_gnvyy{xz~| ¥¬³¸¹ÀÃÄÆÅÅÅÇÅÉÌËÎÏ˼¬rWD=:9556886:82244;159=FYXZos_KTO[S]DQRLN_[LJNPNRAHt±©x~t ~}{usywqrrrrlpopnqmojnlminlmuorwzxxyv|yxy}~|z|zwrur¢¹ÆÍÑØ×ÕÓÏÎÌÍÌÍÏÎÑÒÓÏÏÎÒÐÒÒÐÊÈÆÂ¿½»¸°vgJ9-,&/.-169;=AJNUKSMJIKKCH=>B<;793565-2.07BDCACADK\do~¢¥§ª¬ª¨ª«¬¤ª¬¯ª®¯«¨¤¡¬ÊÉ£jMB<R]J=5B©o1).--('+4KeXN9216HI2888:@mjM=:49606ICJhtX`tSRSUT`p TLCGhmVR[d{mGJFb`Qsvvy±O-+.615>>CBKXM;94*,.7EW@?3.7<60-1+659>21.183447320188?;968<>966:4/8<IPTYW`hsru{y}{| ¨¬°²¹¹½ÀÃÅÄÅÆÇÉÈÊÉÈÌÌÉÊ®w_E<533204;1*02%0,1<=BZVWdpYIXO]OUFLNIT_SLDDTTN;H~¶¦s|zvw}wzsssrolqpimkiiljkiknglhimqorqrtpytzz}tx|{zx{vuxsrns¢¹ÈÍÑÔÔÒÐÍÍÍËÌÎÐÐÑÎÔÑÐÑÒÐÑÑÎËÆÄ¾½¸²¯¦eS7.))&/,5;;:ALOOTXYZMRT__RPFEKA;<26475/0.3BD<H>9?:GQ\kv} ¤§®ª««©§¨«««¬®¯¬¨¨¤ µÏË vTE?8MGH7?e¦¤U2'$)($!#4GZXO=+*4E<.4495CxjTGA=L?87=58Fp }dQ[w{wy}w¦\GQNOUwoX`Zj~VC=^uu wvVX¦«H:*+265;9@JRD2+'**+9K\=4..3941222+29<32/47552-49326;<:99:9;;5389/34DGRX\ditnv{|}{}~{}yz{}~¥«¬«±°¹º¾ÃÁÅÅÇÈÆÆÊÉÈÌÉËÊÊÌʲy\>411*/5*&)1))&137?QXK^vZFLLXOSIIPCQ^SPFANYJ6Jµ£z z~zx{tprrfhmkfhlldjjgiielkqqnwusrosmtrswussxxpomlprz¤»ÈÍÏÕÒÑÏËÌÌÍËÎÏÏÑÑÑÒÐÏÐÒÒÐÎÍÄþ¹´¯¥ p`H4%*&+-06>=?@GHMQVVOWOZ[oocgXVJBEB=5541-143BD?B:49=BJVhs}¢¤¨«¬©¨ªª¬«©©¨°°«¨©¬±Â¿{fWE>@@KW?`¦5'!&#),&"+1FVNI.*9>:-/4/8HkqhQ9;DB<=>()/Mr[Zjsouj?BRc]KZsk``cs{xcOLc¶ }S4y¶©p=)*)0964@HWH;-1,2-6TT=51.970+1*/,5:6744,03.3.620*06>>>9;8?<63<8,57EJUU\^hwurzyzw|~{|}{}} £¬ª«³´·»¿ÁÅÄÄÅÈÉÆÊÉÇÈÊÊÇÌËËÌÎʶw`@0-02,)%$&'$)4:BT[IWtYGQL]LWIMTBU\QRCBEED5M´¡~~ |}}wwvxztrtqjiiiliffaag^fijiimshkhiimmokooilonlhfgj£¹ÄÎÏÔÑÒÎÍÈÍÌÌÐÐÐÐÒÑÒÑÐÏÑÏÑÏÌÈÁº¶°«{cP@36.)*+1998;?EKPSUXWTQRYXyytpcc\RPJI>@873377?<48;501:@J\mu£¨§«§¨«§ª©¬ªª°²±¶¾º²«rgVNBFB_aTV0*#/-0'''-,9MUT@0GT+%,-5-;YjeT<II>8MQ,"$;mxt\V<<NZiyq{ S>FOei\KVqvldinubcbt~³Åz~_:?°U1)0-925AJWL6-,(147U[9./.751-13.)0265330,2240/3438<B>F8::@4368:014=NHYVbmvyzyzpz}}}~{}}}{~{¡¥¨¬¬µ¹¹¼½¿ÄÅÃÇÇÆÆÇÈÇÊÌÊÊÊÈÌÌÏÑÎDzxV82.)&#(%#$)51APMJQs`CIOYMVGPP@P[LH@IJ@H4R³} }}vu}ssoqmkikhhbebefgadYablflecdeeiidhlkphdaae_` µÀÈÎÑÐÑÍÎËÈÊÏÏÐÏÍÐÐÎÑÐÑÐÒÑÏÌÃÀ¶±§xaF2.-*.027=C<?AECITQQRPRTVU[~yrogXUNNLI?;84<FA?87=5179DN[gs~ ¤§¨ª¬ª¬ªªªª¬«±¸½ÉÁ³uh[JDGTz]¨^>.)'*#(&)*.-3<H]PIYR#&+40;Spf`PKKE<YS(!1F~{waH3<BLWGUHG\XZ^lbX_aoqhwmglx{o°¸{]Q]LAE|¦|2*-1;><DFXF0/1,).8S\>/0,56..*42+/==6512/50.,1,37:9?<<5=;==@998.-08NPSZ^jou}ysz{y~{}|}y ¡¨ª¬´¸½¾¾ÁÁÃÁÅÇÅÆÉÊÉÉÉÌËÉÉÊÌÍÌÐÑÏÈ´jH2(%%)$"#'11CNH]Ul^@FNXOXNLNCOTFI@NC9P0[³} ~~~zxttyrqmkahifdbcdg``_aeba_e\bc`dnmlnmc\ZXTXv¬ÀÉÏÐÐÎËÍËËÎÎÏÐÏÏÌÓÐÏÎÑÎÍÌËÉź²©`E3-+3125=;EAFBCILIUWTQRTVVXYypi^YTTQAD:<?GD?:584/2;ALUip|¡ªª©©ª®«¬®ª«µ¼Â½ª¤ wmZOANntr¶¬`>-)#%'((&&%,.+.@Wb`pM #0188LtlaTLKAPkB$$ (8L|wgUIKTaJP|w7@do`_bYbfeb{ouosokos_«QAVIPNJic3.3:40>LZ@5..&%+9P_:0,-711,-50./6<6879230/-,0;7956=<6:DI@74;71.24GMQ[\jlostuz~~zy}|x|~{ ¢©®°µ¸»»¾À¾ÁÁÂÃÄÃÄÉÉÊÉÈÊÊÌÈÉÉÎËÌÐÐÒÐè]61*$$&&%04HJI[QlfBOJYJTIKKARTHIDGJ@P1]°}y}yw{nnqkhojibdc`b`a]c`]bX\`d]hnkqngd\VNMXk¬ÀÉÏÑÐÍÎÌÌËÍÏÐÒÒÑÐÏÐÐÎÏÎËÉÈÃÀ¶§iK-'-+-5A=AAGDCGKNPNUSRRQXTRST~}xk`\UVOFAB>MK;>8816.6AFUfr}¢§¨ª«¨©¬¯«ª©¬µ´³´±¤¢ yi[PP`gÌ¢:1.$'.&('(%)0(*)3M^wvF!%)19CvwiSIOKaq@%""#)8Qt wdYk\?Y|i>3Tw~ffdhskSY|nrmovj ¤¡~YhC4R^PV37537CERA300,&+7QO54-+43./-/-'+476=62343--2049;95=<=?KJ@86762016=FQ_bggssqwzw{|zzyx~}} ¡£§§¬²¹·¹¿¾½¿¾ÁÂÀÀÂÄÆÅÇÉÇËÌÍËÊÌÐËÐÏÒÔÓϾnJ,*( #%84MGHVQh`FHJVGOEGI;RNEKGOL;K3_«~}zuuqsprmggkdbc_a[aa`YYZaY`hotqnoi^PLHOh¿ÈÎÏÏÍÌÌËÎÍÑÓÒÒÏÍÐÎÍÌÍÊÈÃü¶©sS8.(/2>HOJMJJKHKHOTQXQPYS[\VVU smkb[YRNGFMQG?9952/1@LZ`p¡¥¥©§ª¨««««©§ª°°²«§¢rh[TdZ´Ò~5-.,**'*/')2+('+5EP~E #&%.4@xoOJLNuxC0,-#'5<U}|hd[XtGCD8Xymbgqz\Gnuoyt~¥{N4-?gba±85536@IO:7/)%%);VL75228;2-,53+,6>8;8990:4115469737=DBHLB<5?;024:AJTefhjotnnury|x}~ ~ ¡¢¨§¬±¶¶º¾¾¼Á½½½¾¿ÀÅÇÃÅÆÈÇÉÊËÉÊÌÍÍÎÑÒÔÒÐÆ«S2+&#%58KF7WWefD@IPFRHCI@IRAGKQD8G6e¦ |}z}{wrqppmmegbbdZ]_`YYZZ_cov{sxqi_SLGQcÃÊÏÐÎÎÍÌÊÍÏÒÓÔÒÏÏÎÐÏÍÍÊÁ¿¸²ª qSA2--7@CKOMOOIFMMHSSTYUS]RYY[YW |yuj^\UPPRSLIC<;.635?KXgn| ¢§§©ª§©©¨®«©©¬¯¬§ª§£ym]^ldaÀÀ\'*2(''.)-*++''5?=HF}sB%$##29KsFHM`vb6-6*'(3HQWVMk xbc~EBO@=R}konxlKRyuwkikg4..Yc W3.6:FGM43*.'$)=bV?83-6;;204,,+4>739OF232105350:599<:@FLC8@884/8>NPY_cmnmpuuu{zx|}|~x ¡¦®±µ¶¹»¼¼¾½½¼½ÁÁÄÂÃÃÁÊÇÊÈËËÎÊÊÌÏÑÒÒÑÔÔ˺c9.!%+-=<0A[eb@>IKKP@ILCLSJFEJ=:B:r ¤ z{w}yrtqtmjmhg\fb\UYU`_ivyzvupfYOLLb°ÁÌÎÑÐÎÎÎÎÐÑÔÔÓÐÐÐÎÏÏÏËÅ»±«¢_O:.,21?EGLMVOIPMRSRTTXXZ\YQRXWSU yvng`ZUQTSNEF72.*/@HTho|££§¦§ª§¬¦¬«©©¬¬®ª®«ª¦£soyp Ul¿;-,'%++(.+'**,%@ic]Xuh@& ")@qcAHUndD-19."+DdY]B8EVtljx`MA@RTE>]zqvptaUm£t{^dp} a3(2Ndm¢ B188DK>26,-'-/8^IC10387562:/1-0485:FD33624,164616>>;EKSL9778217CSPWbdiwvvrsstzw}z||z{ ¥®¬±µµ·¹»¾¾½¿½»¼ÁÁÅÄÁÂÁÆÇÈÈÊÉÌËÌÏÏÎÐÑÐÒÕÔÐÂsA0-1-;:38]b_F@LMNOHCPIZSJ@HL>3E<t¨ xzxz}tporhhelle]ZUXgihr~|rkiUIEPh±ÃÉÐÒÐÑÍÏÍÑÒÖÕÕÒÒÑÐÏÎÌʰ©yY@/.)15=DKOPPJOOSMRQVVY_Wa^XUSSVPU {vnsba]_ZROE>0,*2?JUdqy£¤¨¨¦ª«©©ª¬¬«««®¨£ }x~³`tt..+*)/((&$&(!#+5k}{t{lXC-,*3KotF;HYXI<@5-,);eq`MA59Dfk~V?89FIPP?D_{zupjfu y~ dMmcq¢J%,1Mp}©d744?<>53,-,+/=ZOG:23:3281502050<67?JD4364:33:><4AA8>LPPD;927379PO`Zfimstsyvvz{~~~zy¤£¨«±¯±´¸¶»¿¿¼¼¾¼¿¾ÁÄÂÃÂÀÈÅÉÉÈÌÍËÌÎÌÐÐÐÒÑÓÓÖÓÈ«yH.-68008VeaG>MGGOA@QEPSCDEF45E;z© {{{x{xx{runnnnqfcfZbbktw}rnaSNEVt¸ÄÉÑÐÒÑÒÏÐÑÒÕÖÔÓÒÒÑÏÏÍɾ¬kV<0'+)3=LPPUVSJNJNOXXX[[^[]]\RUMRW[ |tqj`_bXSOK<0+*29DTdsz¢¦¨©«ªª¬¨ª¬«°°®¬¬©¤wÅl_|zY3'--.+,,&&'#$$*;d~zph][g~lJ=FBPCEPX/&-:^wuN;;;CPvmMPL:;OPMVRDMhtu{zr} |u:A?<v~9,24ifªA36@?B=7440+3B[KG:68?<4714/-2:7:78??=87674125>@<=D96IOOG635<82<WQ[bdqqtsswwutw~~{{}y ¢¢¤¦¨©¬®²µ¶»½ººº¼»½¿¾¿¿ÂÂÁÃÇÆÈÌÊÊËËÌÎÏÏÐÎÑÑÓÕÔÔʱL/.6/+-M\W@<FCDE;?D>NQHDDH14H;® ~yvzvuvtrljkgg`[^rm~ un`XPN` ¼ÈÌÐÔÒÒÑÒÔÒÓÓÕÕÔÐÑÑÐÍÍǸ£oS;@&%(3;LYSTWSOKMMLNRYY[Z^c]VUUUNPTV ysejfZXKD@6.+56AWes¢¥¨§ª«««¬©¬®«®«®¯°ª¦¥ §«½¹T_ntY8,*+)+.1,"'(' (.?YiodDFLP>DBHWC(,<f|~]?8;=HeybG;NE;;:EXU[PFTquyy|V/.-<¢j3%-Of±m11?>7632,.01=`O=950;55:-41/.71889A98=74332.2<C6CFB7HUOQ567770BVNW]flqvvvvxzz~{~~yy £ ¢¤©¨§¯´µµ·ºº¸º¹¼¾À¿¾¿½¾¿ÁÅÅÇÈÈÌËËÌËÎÏÐÏÓÐÒÓÔÕÖÍ·M30*)1G\U?7=AIE@;IDUL?KGF118>« |wwvuxspsqmjeedmwx}xohXSTi©¿ÊÏÐÒÑÓÑÔÒÐÓÕÕÔÐÑÐÎÍÎɳZD/*5-1<JT]ZWUMNMSKOSY\`\cfa___TSRSW[ |roj`ZRJC61*-6EUcv}££«§®¬ª«««¬°®¨£ ÂÇËEs_oTD871&&()*'(/+%*&1<BC;ET^kw~taHJQSZ<:;?D5;Ifh>,.1?IzVL:8DD6;9=Neb_LL`ys}~m3)&7¯a-+A[^¯A/>;80.(0)0/4^KCB1/@545651*-0-3@=@;=9984222/<C9AK?<MVV^A89/71?VPQYllrsswwz}|z~t{}£¢£¥©¦©«¯¶´³·¼¸µ¹º¾À¾¼¾½¿ÀÀÄÄÆÆÅÊÌÉÌÌÎÏÐÑÓÒÒÔÕÖÓÔϺP6.(/BVT;2:=G>;9IJTI?P?D+/5F¨ }z|zyxtvxn}kginruxldYU]y±ÄÍÐÕÕÓÒÓÒÓÔÔÒÕÔÒÏÏËÌÉÆ¹¤xT9+)*::NY[Z]YZVUQRNQ[a_c_ecb`^[TNSP[]}}zuodZQFC</('2GUgw} §«¯¯®¬«©±«©¬±³¯©£¤¶ÖÛÀmDfDXNK@;0,-%.)%'*('/,3?H;''-6HUYLM?=9BEK;8<CNUioykK.+&*;c:79::LE889@YefXV[`kr| |¢J# %j§²M*4UOµ\62577.,-())6XO?9235329=6715=52=?E=A2.1956468M4?B>?UU^cI<10/)7WRWZosqrqvy~|~rnu{~ ¢¡¤§§§ª³²²µ··¹º¸»¼»·À½¾ÃÅÅÅÇÃÃÉÉÉÌÍÏÐÎÏÒÒÔÒÔÖÔ××ÒºU0(6@PSA2=9B77@JFPC>K:C(.4K§ {|~~xv}wywutnkmpy~wpj`Zb£ºÆËÑÔÒÕÖÕÔÔÓÓÕÖÕÑÒËÊÉÈ¿² gF0$*07FP[[]YVSVXVQPR\`agcnd_\\Y\ZRV\`|| ytjbVGB:7*&6HUfo{¡¤¨¯«®¯¯ª®®«¬¯²®ª¦¦Ä×ݬcYdGY99>?81.,,1)/(%*03BQQ8 %$2ENB=A@C9;28<HT]hkqjk\G8- %.Tu5+5?=@U=@<>KdigSV\Wcqs £¤g0"%<±»93`Vb·686/0-&2+.-8UP:935<5160926333-;8C?A6+152916:Q@K:@FRY^`XA8,010MVI_ortsruyzspptx ¤ ¤¥§©«±¯³µ´´µ¹¸¹½º»½½¼¿ÀÂÄÃÄÄÆËÉÊÌÎÏÍÌÑÑÐÒÔÖÔØØ×Ò¹ M44EMXB@E?C?>JNOUIKJ?I-69U ~yyzxxyrpptt{ urmfamª½ÈÌÒÔÔÔÓÒÕÓÔÕÔÔÕÒÎËÈÿ¸¬|X;+%,5FNUZ^WYYUTRXRU\aheheei`\ZY]SV^ef~~ {vh^UH?7-+7JTan|£¦¬®¯®¯¬®®®®°±±°§¤ÆÖØqxiV,0*662135?5379.:?AIN7,,,8KXKFBB9;5400=?AFHB@:?93$$%<as@.0E?@XHEC<@KgrhUWR[gpz¤|I((+]¥¿²b>pUL¤F.2.()*0-)15UHC34395/64764-377;=DAD36304748:S:DB9NO^cgeK51,-*BKMSovqwtwv~~zqpqx ¤¢¥¥©¥¬©®±±¯´²±¸´¶·»¹½¾½À¾ÂÁÁÁÂÅÆÉÊÉÉÍÍÍÐÒÑÑÔÔÓÔÖ×ÕØÐµvC-9@O>/:3;46GORRDJCDF'28]© }|wwuvqsw|~}ztpfhz±ÁËÏÒÔÓÔÒÒÔÔÕÔÓÔÓÑÌÊÆÃº³£pQ9.,2>KTZ\U]aY\XYQWU_``kljib^^YX]XS]d^y| }pbVMA7)+8ASaq £§«®±²°¬¯¬°¬³¯«®¥¡ÎÛÑy¡^$#(6%+03:<:;545D=BLF>4,*8X_PB=78>8>?A358;03+.>11.),9VqO3(79CRPLGH@CTnlY[OT[i~\rF57H¡ÈWxU>¸j7948/13527;XHB7=6;6:;<;849:;<??ECI8563749:@[HG?8JUbhieY>60.->SM[qzsywvv~zzsfnx ¡¢¤¡£¨©¥§«§«¯®°²³·°²µ·»À»¼½½¿ÀÁÁÃÃÈÆËÉÊÌÏÎÑÏÑÒÔÔÔÒÔ×ÙÚÙϳo;77GA/04=63?COF:LING)/8`£¦~~{xxztww|{ ~qnn ¶ÄËÑÕÓÓÕÔÓÓÔÕÓÖÖÕÐÎÊý³§gH44/9FUZYZW\\^a[YWUXciiunihg^_\WURW_`_yyu~~ymZXE2,,>HP]n~ ¦§°±¯¬®«®°°±«ª¦¦ÇÛÇu[sÅi$$ '#$/177;<<:8AH>OLG6/&:QG@;722:AA?C?5<,*+/1/=B8./9Npjpg<),7GQIKRGNKM`yfddSUgv |_t m\SD±s_A9[·?2-++,0643=aKD:=9F5=5<:739368;<@DI9:A<?@5;A^IHB?NYchhg\?765,>QO_w{uzvsvzsltx ¡¢¥¦©¤¨©¢ª±«°±µ±²²´¸»»»»º¿Á¿ÁÃÂÆÈÆÉÌÊÎÎÍÐÏÐÓÒÔÓÖÚ×ÚØ×ϯf9+>C-2.:-5FFH?=HNN<(1:iª¢ z}yuxwtuzz~zuop§¼ÉÎÓÓÓÔÕÔÕÔÔÕÖÔÕÔÐÌÅÀº®|^B317DN\a^[[Z__^ZZYZejoksmie`b]UQT]_``ffjo{pePB3*/6GXdo}¤¬°¯®°±±®°¯®´±®«¨£¡®Ð¾gNLÄN#($-(.-+3360+31@MFFABA31557:3,04FT[IFA961#***,>L5-,33GQft[4.3:FC>GETHHKnue_UN\v }ditmbxyz[/2?¨®W.021/-3+19^G?A<8F367042,-.34<;@H@18:836427HEEC=K_gjnh]J;/*,=LGctxvxuvpqo{ ¢¤ ¢££¤¢¨¨©¯°ª¬¯²°®³¶²µ¸¶¶¹¼¿¿Ã¿ÄÅÇÉÈÌÈÌÐÌÐÎÑÓÕÕÓÖØØ×ÛÙÙΣ[/0;&*-1-6AMI<AFEJ6-2Cl« ~{{~}z{|yx{} }ztu~°ÁÉÎÔÕÔÔÕÓÔÕÖÕÕÕÕÒÐÌŽ³©rVE6<HOV```XVV\[\\Y[^gmutrokhb`][UY\bbfeXX^fyudOB5-+1KUds ¦ªª±¯³°±°°±²®²²´±±ª¦¢¤¼·l[Cg:%%%%*2*,0.6/(-/.DH79DG;2.,63,*(7EdbQ>6660%))**@bO/$&'9D\qg[7//B><@GTL@D[zqf[USw~og`Nj}^Oxª1-5Åu5.*-(,((->aD>8?;>/3-/72/)1:5=9;S=778/01-38AEBC>K\ivvgcO5(/+6PKWozv~srplm|¡¡¡£¥¡§¦§¬°¯¯®¯°±¯¸´³·ºµ¶·»½ÁÂÆÃÄÆÈÈËÈÍÍÌÏÒÐÐÕÓÒÖÖØØØÙÛØÈF09/)',21?KB;;B9E0&/?| ~x{~z}|~{z¢·ÅÊÐÔ×ÕÓÔÖÖÔÖÖÕÖÖÑÍȸ¯£{eRA=>LQ__`[]WY[]Z\[admjpoolgf_\c[\`]digfGGN^mx}¡ ¢{mXH1),6DV`oz¡¥«¯°°¯²¯¯°¬®²³¶²ªª¨ ¬¦qd@LX(%%%0//-'*-22.--7FC438@?/)*2+,$-3Ogf^@6@<7&%)-,9m\<,%'-<QnleU/*9@JLJNG=HLbusdVPrrl:i|O8d¯T.4qÒ¡6#'&$,'&-<`H:;56D31.39)-,0115@DHC753,/2+/7CJBJ9N\iuzjk\@*2*0NU[lzoqimkx ~¡£¡¡¢¡¤©¨©±°¬«¯°°´°´¶¸¶¸µº½¿ÂÃÃÆÆÉÉÊÉËÌÎÐÐÏÓÓÓÒÖÙÙÚÙÚÚÜØÁ~<9/-(*22<DA48<><-%/@®~}y}~||z} ¨½ÇÎÒÕÖÖÓÔÔÖÕÔÓÔÔÓÑÍÊ¿¶ nYIBAKMU`b_YXX[[[[]adjominmnic_]^ZTZ`bfgh;;EVir~£¥¡¢¤t`H3.,4@Sbu¥©¯±µ°±°±¬¯±°´´µ±¯§¥ ·«tywCU6))'(%(4&&&)6..',E^A0-7;883..++)*?`mcc:7JHA+(0))6bd@&%+-;OcdVaH..BANFJFFJTFoxcYXu}zv{VyN-<«Å 83dÚºM)#&*1%$+7]@:<48?32025-)/5325:@M?//03+-',3II=@B\esv}ni]A-0)/HQW]xr|efwu ~¤¢¡£¦¥§¥«±®®®®°²¶¹µ¶º´¶¼ÂÁÀÂÂÃÅÅÆËÍÍËÍÎÑÐÓÑÒÓÖÖØÙÙÙÜÜÒ°k@5-)(3,:AC26?D=%%/I® ~|}}~}~||¯¿ÈËÕר×ÔÔÕÖÔÕÓÕÓÒÏÌÉ¿²{bSFGEL[^cc]SZ]_a^`cccjltpoljceb[_X_`cbffg227N`hv{ £¦£¥¤¡wgT6*&4AS]m¦ª±²³±¯²¯¯±±±²´³®¯«£ ¿Åz}MS>,()')(2****6,-.:^N3./:<5850+,/)/J^njY3+ORE.'(*&3RvT1'0)0R\LTYeC07AOLKJHFTB[sh]Xyvysvovt|£§{j>+9dÁ®Y;TÏÍe,'%%*%+-7YB=@5:D677682+15494=@C;5;<54/*/7IH=?EShnywsi`H2.*1OTUashsgu ~¡¥¢ ¢¢¤¥¤¦«®©¯²µ¶³°µ¸½¸º»¿¾½ÁÃÄÄÁÅÉËÌËÌÏÏÑÒÐÓÔÖÕÖ×ÚÛÝÝÛÏT50,,/1<C:037DA,)5Q© ~~~|±ÁËÑÖÙÛÕÕÓÔÔÔÔÓÔÖÐÎÌż© jVHDFIR^a]]YX\d^^\ccijoqstrhc^_]^[\cfhedfd((3GTdtz¥¢¢¥§£ xkX;+*3@T`t¢¦¨®´²°°®°±±±³¶±±³¬¤½ÚlrGMQ6-(**',,&%):,1*CgB0+4;.-3:0,+,&,ObtjI+(NYK7'*'#)LveC2&()KbMHL\dH8<E[V^I?K>Bmh_Z||hbojl|w¨¯^.$(5½APÆÑq& #$($%&0X;;A1?@01443,4)05-79>C66=7432(-2BI:4LWot|upjbK4-(-JMVck`umy| ¡ £¢¦§¦¨«¬®±¬²±´²±µ¶¼¹ºº¿¾»ÂÂÂÅÄÄÈÉËÌÊËÎÎÑÒÐÒÖÕ×ÛÚÙÜÝÜ×ÁI+'*/20<4/-5@?$)4`¤ {{}z| ´ÂÎÒ×ÙÙ×ÖÕÖ×ÖÓÓÕÕÒÍÈÁ¹£u`OMMSOUZd`_W\badacdhmqtvvmib\X\]^[a`hjihhg$$.8N]mr¡£¢¤§©¤}oV;*#/@R\q¦«®±´¶²²²²¯³³³¯¬®¨££§ÖocFZb/$,$'.-)**17.-0Tf6014-.D=262.))2Qh}kJ1*<W?:*#)$'=`mT;,'*;iN?9Qm`E1B^d_RRG@;X[b^u\Rjuqwy¢§¯uQ+%%(P NO·Ó'#!#$#6P;JD3@G3/382(+),+06FKC9777-=>-/-A;66N_hux}qpjP1&)(NIRecj{v}{ ¢¢¡£¥§¨¬¨¨°¬®¬±²°´¶¶¶º»¼¿¿¾ÁÄÄÅÇÇÇÉÌËËÌÎÐÏÏÐÒÖÖØ×ÙÙÜÞÝÜÓ³f1%&/,1<:--2F5$%8a¡ ~~ }|§·ÆÌÓר×ÕÓÓÕÖÖÓÓÒÒÐÏȾ³ iVHHOPSTZ`^WW]cc`_ceioqrsok`]ZV`Z_\bddhgkdf&&*4BRbnv £¤¦«§§r]>-'.9J`s §¬°±°±¯³±³±®¯±´´²®¨§ºrH{~(%**1&''6/%+EeR3*)30)1?/9112//Ts}pQ,*:M=:&$("!,IaaC3%-<jWE;<XaaK9Mpb_XPC>DJ^\o]Rlpku®¥{P,$#$2bhN¸Ù/$%%$$'*3P;98.DC12-46.+-513:CQR@/3:7?<++7=:<9R`osuxul`T8.'';JPfgu~vy~ ¡¡¡¡¡£¤§¨«©©«¬®±°²µµº···º¾½¾¿ÀÁÄÄÅÊÊÊÊÌÍÌÐÐÐÍÑÔÕÖÖÙÛßáÝÝÛË=$%'-8l9(-6A2#%6k¢ }{~x}x¬ºÇÍÓ×ÙÙÕÔÖÖÖÕÓÒÐÐÑÍȽt]LJKNWV]`^YUW`fdcaeflqtmoh_a[X]Y]^dghhikhid""&+4BNer ©¥¨«©«¢|^C(&-2Maq~ ¦«¯±±¯±¯¯±±¶µ²²°²¬ª¤¤qKx1!$"-4*/(*31,3[QA5+*)252501.4-.3KmrL(%3J;H-&+#"*8F`bJ0%.`UD98KcgYOKeeded[K?CR_sw\Qpjhµ¦xd8'+G|NºÛ²4!2$($(%9OD=<4FD1,14.+,)33357JY:-;781;--6?9;FWetvvxwicQ6+)'>C`igtyr{¡ ¡¥¦¦¥¤¥©¨¬¬°²³°±·¹¶³¹½¿ÄÀÀÁÁÄÅÄÊÊËÌËÌÎÐÏÐÏÒÕÒÕÕØÛÛàÞÝÜÕºi'+')/16(,7<*&%8l }y{|vx ¡©¶½ÆÎÕØ×ÖÕÔ×ÖÖÖÑÒÏÒÏÍÅ»¢mXLKPSVW\bVV\[^hhckkjnrohed\VYW]\]dhdhhgieje""*+16Hdn¥§«ª¬¬¡ w^<+))3ASp¦«¯¯¯°®¯¯µ¯±²²²°«ª¨ exÁLYJ,$"+04,,)+,44CR<40*,.-2<0(1,4002XorU7,6SDE;$+&"'-0Ab`F6+R[B57G[g_TLYigopwhZE?YjhXPrhx ³|]dT4&"7K`ºÛºF$**(!&'5PH9<=MN264.4,.354-18JT92/768.)06:7:N\gsqnqtl]N-'&%AJYgjupq| ¡ ¥£¦¢¥¥©§ª«ª®¯°²µ¸¶´´¶»¼½¾¼ÁÃÄÁÄÉÉÊÎÏÏÏÑÎÐÏÓÕÔØÕ×ÛÚÜÝÛÝÛÐD9$,+21.*30'!'<~ ||||z|x¤©°´¸ÁÅÊÏÓ×ÕØ×רÖÕÖÔÒÓÐÎʯ~jXMOUW[_\YVZ[`cgkiknqqpmi`^aXWRWY^efhhfi_bgc%/3<Yh§§¨©ª¨¢ {a9'!&+BSs¤¨®®²±±²¯«°¯²´¶±«©¥j}ËFD=,'&*1,+'-/>38K?4/,,-/32/3,*0)00/QsrC*-/HSK?''("&/#-IbcY<>fJ7-;NL[[WL^ssqummL?RZ]VPgyy¥\=<M=!&8N¸´Ù¼L' ''#&%;SI2;<LH63-540+04/29<KF5317.3/,-373<T`]lijtzkb[43():K`dkxqy~~ ¤¤£ ¡§¤«ª®¯³²³·³´¶¹·½½¾½ÂÃÆÇÄÆÉÊÊÌÎÐÏÏÓÑÏÔÔÖÖØÚÙÙÝÛÜÝÙ¼f*)(-0/(+/+#+D }z~z~|w{ ¤°²¶»ÀÇÊÎÑÔÖÕÖÖÖÕÖÔÕÔÒÏÌÌŹ¨waSPSY[_a\[XZ\fgehknoqrsmh`]XXV[XXaegfjiddibg!! ")3=bs¦§©¦¨©£¡{bB'##)?[o¡¦«¬±²²²±®¯°¶³´´°±¬©¥{mk¦LT:('/0/*-'(:42@@1:/+,3(18-.*',(/.9Xxv8&&:HZH7)!%"*0#":HchRFeWB,3M?L]aKJ|lklsnV?LVZVJa ¡wj3'5D3+=Es±ֶ>++*)&(CUC4:DON20454+.3083;8GA7*1..142-645;N^`mjupn]eZ90*,?Odbfzyqw} |x ¢¢§¨§§«¨«¬¬®¬±µ´³²´¸¸º»½º½¿ÅÃÄÆËÇÊÌÌÍÐÓÑÐÒÔÔÕÖØÚÛÜÚÜÜßÜÏ:",&/1'&,*+&+I¥ |zvyys{§¬·¹½¾ÁÊÌÏÓÕ×ÙØ×ÖÖÕÕÓÓÒÏÌÈımZRXXVZ``c\VZacffemonrpmgd]^[SSYY`_ghhfkfacie%%'#-58Qm}¥«¬©«ª¢wW3!)(->Yp¤¤¤²±°³²²³®¯¯²´´¯³°®©¤¢{if{frt.&'(/30***109E:590/+332,3*)..-,,:_s.)..<^M5-$")*F%*5=L[h`h_C,1M@:UhVIqrlnejaMRQYRIYu ~;"':TH4:k«¶Ó8" "(FN=/5LXO021-50(2-<765CB52,03:E?5887JX`lmqigecb[?6&8<Qb`ozxz~{| £ ££¤¦«¬¬«®®°´¯±±·¶º¸»¾½»¾¿ÅÄÄÆÉÊÍÍÌÏÒÒÒÐÕÕÓÕÔ××ÙÜÝÜÝÝÝØ»b)')-1%').*M¢ ~xzyyyz|¤«°·½¿ÄÆÇËÌÑÓÖØÙרÕÖ××ÓÑÎÑÍļ~dYY\V[bc_[ZX^ffcgjkpnpmmfd]ZZX\aY`glchedf]fii!!$''69Sgz£¬ª®¬©ª¦zP+'$3GWl¢¬¯³³·²°±°²®²²µ´´¬ª¥ mkgm£3(+*23-.))//<=053-4-.+-29+80-*+2Mkp5#&*9SN11(')141(775@NTUZI91YN5GZcV_rih[]SOQZ]OO[v R&#-[N11i»´¶Ï .#(#%!$(JFJ13OgX0+/7.))42-*67M=34-.09/23;7=T^jsrnia^dmdC8',8R^Wtxvv} } ¡¢¤£§§±ªª¯²±±¯²¶½¸¶¾¼»½½ÂÅÄÇÈÆËÌÍÎÑÐÐÑÑÕÕÔÕÔÖÙÚÛÛÝÜÝßÛÏ8((+'%$'**Z ~~y{yyx¡«²¼ÃÄÅÆÆÇËÐÓÕÖØÙÖ×ÖÖÕÕÓÐÐÍÉÁ´£n]WY][[]e_[^_ejdfkkmpsojgabZXW\YXaadlegdd]fief'&*25P_y¡©ª¬¤ mO.'$&/GZo¢¤«¯²¶´´±´³²³²´µ±¯®«¤¤sxgz±i.5021//--2:>?9-361/3.14,/1/-22'5O|l5%%'-JXB4#$'?</"099746<G;--N\>9WiYUepeQbTFQ\YKUavy¡¥i' 0B5,1fºº¶Ä.")()$(LPM.8Hg\3.774.1;+/.:;O;5-)(16,.:=4CWblrkc`cfmocB2*2?T[Xjtw| ¡ ¡¢¨£¦®««²¯®«±·º»·»ºº¼º½ÀÁÃÆÉÊÌËÎËÐÑÓÏÐÒ×ÔÕÔÖ×ÙÚÚÝÝÝßÛÖ²S&$')!"*%.a |{|{z{~£®²½ÁÅÇÄÉÊÌÏÐÔ××Ùר××ÔØÕÒÏÍËÄ»®yeZ]U^\[a_W[_caifijnqrtqie_ZXVWX^^cbglfia^bgdbn##)0+03I_v©«®¬¤¡qU5&#',FZk~¨°±³¶´°±¯²³±µµµµµ¯©¦~~E)+2:7()+-/9=:003;31+.0047590---9Zb;*$"+GYJ>$'/G>0%4=D7(#3<1-/8dO5Mef`UkjZX[KKXQPRaq ls®¥vM)+-,/8Z·½¸¸r*'"',+.7WSU36F_N:74:5457530<:B;6-+*,00-8:7LW`jjb`_nrst^B.1*>`\beqx|~ ¦¨§¨¦¨ª©¯¯°²²¶¹¸º·¸»¼¼¾ÁÃÂÇÇÉÌÍÍÏÐÐÏÐÓÔÓÓÒÖÖ×ÛÜÜÛÜÞàÚË0#' $$( "3k }z{z}x~¡¸¿ÄÅÈÇÈÉËÍÏÒ×ÖÙÙØÙ×ÖÖÖÔÔÒÍɾ´¢scZ[V`Z[_]Z\cbjjkkmppuqlhd^[^Z[^]]hbiocg__]jekh %-6?H_u£««®¬¨¤rP4! ,@Zn¢¨«¯´²±°°¯°³¬¶µ·¶¶²®¥ ²~zp51+4:.%'-09@<00..5**+%-,3410-1+3?k|c7#$$'?WM9+'1J@:05<A8*#*16>63XX=AckeYqucWc[CQG=Udnkp ¨krn1%."+0T·ººU*&!#%)8WUV);ITM//8;367/2117@G<?3,+/,0;:5<R[\b]dcfv~ztcG6.2;d]_lr~ ¡§¤¦§¤©ª«ªª¬¯°´³µ²¶»º¹¾º¾¿ÁÂÃÇÆËÉÍÌÎÏÐÏÎÒÒÕÔÔÕÕÖØÚÛÛÝÝßÛÔ¬E%&# #'#3v ~~{x~~{y~°»ÃÇÊÍËÊÊÈÍÌÎÑÖØÛר֨×××ÕÓÎÎĺ¨ j^Y\^\][[`W]fgghkmqpsuqmc]^\\[Y]_ajbhk`ddacrgne$$.DB[v §«®ª¨¡vX7# $*<Yn£©«°±±±³®°´²±¯±¶³µ´©¢¡ºyq7/*4;)&).6HB44/*+=0*'#.289)*+-%2L|uY6$-(*2@C9* 8L@3+*>J=+'&2:0/6N_=9RfX_ixrab[WOG7Wi{~j jgL-0+*0S¶¶n=39(!"&*3VQF+9MPJ//9;/0+,22.7?A<A;,.,/1994<WV[fcins|yvqdK3'0>[Yboqw ¤¨££¨¦¨©«¬¬®°°³´³³¹¹Âº»½ÁÂÁÃÅÈÉÉÊÍÌÍÑÎÑÓÓÔÕÔÕÕÖÖØØÛÜÞßÜÙÅj&.1""$& 9 {z|vywx¨¹ÃÊËÐÑÏÎÊÈÊÊÍÑÖÙÚÙØ×××××ÖÐÎÈ¿°¡ye`XZ\][[\XXafjkhrqpsvtpm[_W[\YWXbdigfjedagchkig #(-EZr¤©©ªª¥v[9%$/?Un}£§©°²³´±±³±²¯²´µµµ²³ª© ®stp3(+:4/*)5A?46/*,16+23(+93(&&&()8d~nV3%(0+)8B6,$;U<55.548;,+/402.;NG4TgF_msqdZNRVK2Kawrky yC4-.6g»¬TAji)!)!%?SOM3@JKJ4168+2123-.<924A763.16<;7EOQaklrwxzyyqeK/*.K^Yjnqw ¡§¥«£§¨ª¬¬®®°²°³¶µ¼¼º¼ºÀÁÃÄÄÆÉÊËÎÐÏÐÏÓÒÒÓÒÓÔÔÖÖ××ÚÜÞÝÝÜÐ<+*$!"$!= }~}ww{³ÂÉÏÒÕÕÒÑÌÍËÉÏÑÕØÚ×רØ×ÖÖÕÐËźªn`]V\]^\[ZX`ddeekprpptrqfe_XYZ\_aahjfjigda^ehifa %,=Wt§¨®««¦pS7 "$/?Ri}¡¦©¯µ²³±²´²®´±·´¶¯®¨¦ «gHF+.9/%/0<C:136*'2*,,)(,85%#$-,TmY=/1-024@1,)EU7644311?3'48,.+8OK=UaCYq{vkMDJEE9>Pt¤yYr¤w\P=Gµ<p¢/%%JWOL2EKA?23951=;/,23774504C5328A=<IS^jupwv}wyrdN,*0PZcikny~ ¡¡¢¤¨£¦§ª«±°²±´³´¹½»¼¾¾ÂÆÁÆÇÉÌËÌÎÐÑÑÔÒÑÒÑÕÖ×ÖÝØÖÙÛÞÜÞÞØ¶W #"%H }|}y {zw©¾ÈÌÔÖ××ÕÓÎÍÎÍÍÓÕרØÙÙÙÕÔÒÑÌÈÀ·m`]\Z`\[____deflvustvsup``ZXTXZZ_ckhhidehc`fea_^!#"$,:Wi¤¬®«¬¨ tV7!"'/7Vk~¢§®°³±µ´°´±³±´µ¸µ²°«¨¦H-)&+85)44;:5--(+),.-()$80.&#("'=rzla<$*#&'/547)DK53;7'-16-,5?-+01GE6G`AKmxt\958<6=K g3Bpwnx¨qV¨C$%,*@PIF/?F;=84;21A>,250166333;:2;69<JP\isuuyyxuveN/-4YV[hot{ ¢¤¢ ¤¢£¥£§«¯°°¯µ´³µ»»»º»ÀÀÅÃÂÆÈÊÍËÏÎÐÒÔÓÑÐÓÖÖÔØØÖרÚÜßßÝÙÇu%(T ~~}x~}xx|¯ÃÍÒÖØÙÙØÕÑÐÏÏÐÔרÚÙØÚÙØÖÔÑËĹ¯sg__`]\[[YY_^agjlorprsrqha_Z[WVYbcfgfmljgfgegchbV")9Lo¡¦«®¬ª¦x]8#!#)3Sj¡ªª¯´²µ±°°³°³µ´µ¶°¯ª¨§wB*$,07977@83,.1,'&1/$//01.*% %7cj| dQ1((*,)+5=/1E@/482$)-0*09:33/(@B@<F@7c} ~c<499?GV|Q5y=Uz²ª²È¨E###'FL=?0=F8CA9918AC4./52:10305>6/98;NUipyu|{{|xvvcR-+;SUbfouy ¢¢ ¡¥¦¦¤¥«³¯ª°±±´¸¹¼¸¼»¾ÀÁÄÁÆÊËÎÌÍÎÐÐÒÏÒÑ×ÓÖÔ×Õ×Ö×ÚÝÜÞÞÜÒ4 -a|}|xx{~¸ÉÏÓÙÚÛÙ×ÕÐÎÐÏÒÕÖÚÚÚÙØØ×ÖÔÐÇÀ´£~la`ad[\XYWXZ[^khlnlrqophb^a]WYX^beliejh_ck_`kih_[" ")5Je{¤¦®©¥{_>$#*7Ol¢¥¯²·³´³²´²²µ³´¶µ¶¯®«¥¡};0'.1378D?7()*8%+)2+,.)2,."'%+7R}tMsvR>4$,'&+(/59EL=&+92!&&(.)6F67*%>J>B414FlmD.AFTN^ vITC:p§¬{/&-(.FM>5/:<2<C=<35AE6105733-362>/B>;KS^nx{s}||xyys]E2/JX^_lpwz| ¢¤¦ ¡¥¤¨¬¯°ª´²¶¶¸¸»½»¼¿ÀÀÁÃÅÈÌËËÑÐÏÎÒÐÑÒÔÖÔÖ××ÖØÙÛÜÝßÝØ¶N!! -b {{~{zwtvy ¹ÊÒÖÙÛÚØØÔÓÒÒÓÔÕØÙÚÙØÙÙÖÕÑÍÆ¼«yed_ab][\WRZdd]flmputsogf^b]\YY^bcjjhhgggeioakjdVO!! &%5Iez£§¬§|bC)$'(8Slz¡§ª±³²´²¯°¬µ¶±µµµµ±®¬¦¢ C12.;B<>58*$%+-*+,/,,1/3)'$-)<XypI>mpB72(-'*.-*8;HJ?'.<7#&$'-6=H;<("<T?8FD4AfyqV<?Mfaa¡x_{[b ©tMP^M:(,/)4GJ;5.?<0NC?220>;495?>1,04-1-4HA=PRdr{xw{}y|{{pZE2+CYY`im{wz|~ £¡¦§§¦ª¯¯ª®³±¶¶¸¸¸»½¾ÀÁÃÃÆÇÉÈÇÉÏÑÏÌÏÑÑÒÓÔÓÕÖÕרÚÙÛÝßÜÚÄs"!3k ~{{zv}{w|¥¾ËÐÕÙÛÚÙÔÓÒÑÑÓÕÔÖØÚØØÙÕÖÒÐÊô£ufhe_c_\X^W\_[bklonrormkc_\_^Y^]`dhigiffkacdab^XVS#,*<Jez¤©®±°®¨xfI*%(7Of|ª«²®¯´²³®³³´³´±²µµª¨ }sF615BE<4.2+)*/,<.)0+*//+'%%,4`y\A7>{lK>21-*((126EPF7&(2:)&.'0.7E95'-RH53;<d|otnl`RTjZ`z¼¬¥?-%-')$:M/8OL6/2=B7>8D1.2?9506?92141183;L@JPWny{z}~|yvvto\60-PZ\`hrz}|| ¢¡¦£¥¦¨¯¬²³´·µ¶·¹»½¾ÂÀÄÄÅÆÉÈËÉÎÐÏÏÏÏÐÒÐÔÒÔÓÖר֨ÚÛÜÛÙÏ-#5w {}{w{zwzy¬ÁÌÓÖØÛÙ×ÖÒÏÏÏÑÖÕØÙØÙ×ÕÔÓÐÍÆ»¯{pkihgge^^c\aaaghksuvqhif``Z\[\^cghijkgjgh^]ad_VQZ\ !*3Iiv¦¯®°«¦¢jG($%)6Of|£©¬®±²°²²¯²²±³¶´¶µ¯°¨¤|{sC;8<DE4111*++1,)**3.,'14/4.0D|yV>--M`GTI/,)./27<KPH6.&77+%##+19DE5()O^:@8>\xmiovyuipgq tC?r·¾±^9(#$"4`C+7M=1.7=>/;8?8+7::00.>:6920558CFAKMYpw{~|z{xzreP;0+O\[\fp|~ ¡¤¢£¥£¥¤«¯³¯³³²µµ¼¼¿ÀÀ¿ÃÃÅÇÇÉËÌÑÍÎÎÐÑÑÒÓÕÑÔÔÔÖÕ×ÙÙÜÜÜÚÓD&=z}}zz|xxz~±ÄÎÒÕÙÚØÖÒÏÏÐÎÑÔÖÙÙØÙØØÖÓÐËô¦|qlhjkfed^]a_^b`mqwvuohjff\_XZ[^aejkklfgac^^]]\YRRP! "'6N]}¤«°®ª§~nF,%#(2Ocy ¨«±²±²²°±²°¶²²²²´±¬ª£¡yukSC9;DF6,+*+**.0.++.-6-',*7::IXL/'*4^UPR;40/+1./>SPC7.'*6/.*&+35BK<&"*R`H0937JXO\qxzyq nP>Q{®¸ªxW?($'3ZU2(BG>32<N=+<:@?08?:1,5=;1/23115CFEPVcox{{z}||}zumL:/.S\X`jmy ¡¡¡¡¦¥¨©ª«®±¯±±³´·»º¾½¿ÀÃÀÃÇÅÄÉÌÐÎÐËÏÐÏÑÒÔÔ×ÓÔÕÕÖØÙÙÛÛÜØÃj=} }}z}zx¯ÃÌÓ×××ÖÓÏÎÍÎÑÒÖÖÚÛÙÙÙØÕÒÌǼ¯ypojiicjebaeab`bmtqttqnijh``\[^^`ahgldjhhaiZ`^VVQSO!%'1Im|¤ª®ªª¦¡}mW4&&+>Nb~£§°²®¯®°²®«¬°±¬¦£tsdJ<?6:5-&.,-/22,*-1))<,,AIKRI;/1(/:ozPYS>/./,+#.EX<9;0&(/)+*()49GA6'"*McV95-)2<=Afmz~|}o_YM`}x¤[H;Ys7'2AJ72/<G70?<?B:6B490:==1/0150<JFKMXfoy|~|zzz{jG8//QY]gir|~ ¡¡¢¡¦¦«§¨©«®°°¯´´ºº»¿Á¿½ÀÂÅÆÅÊÈÌÍÎÌÍÎÎÐÒÑÓÓÓÔÔÕÙ××ÙÛÛÚßÛÍ " F }}z{z}¶ÅÏÕÖØÕÓÑÍÌÌÏÓÒÖØÚÛÙÚ×ÖÒÒ̶¤~wttkmgffd`ababeekkpponnid_\ZZ]][dhghefig\]a`[X\TQQK!!!#!(.@g§©¬«¦ |u[7)$.=Ncy£ªª®±®®ª¬ª¬««§©©©¬ªª¢ ywF:,.80,,1+00*,*.4540--8S^^=52.(+:9dZMZ[S7+7+%(3LR1?C5')4/*$./3=I1,3&.O]W@5/..866B`w{q |zjmVRefny©°µ¥yqr?5<QO8204A/3@;ISM5<720D;83.2)02BJDMQYgqw{w |y}{|n?8.7S\blmy|| ¡¢¡¤¦ª©ª¬©«®´·¹»º¿À¾ÀÁ¾ÅÆÇÉÉÊÍÍËÎÏÑÑÑÒÒÒÔÔÔÖÙØÕ×ÙÙÜÝÛѤ?!N |}y|||yz´ÈÎÔÖÖØÓÐÍËËÎÏÓÖÙÚÛØ×ÕÖÒÍÈ¿¬xxuysjifbZbc^bfabdnqqnpqg`\[XY\^bgjgegjk`\]_cYY[UUPQ!&-Fbs¢¨¬«¨¢xX3,&,6Cdu ¦¬®²³²¬ª¨¦«°«¨¢zB>:.53(/,1,/*,-02>1..2@ViI,)+1/2/=\KM[YK.%703,;@4/4E7+-'12+232@Q7$5=9RZR=B0*+'4;AYwx|oxbmgE>16OgrXj¢qlvugR@9EG.6AH[[I8:324877.02..6GHIIR]ir}{zx~}}xw_F7*;S_belz{}|~ ¡ £ £¤£¦©«¦¦ª¯´²¸¹¸·¾¾¼¿ÁÀÅÇÉÇÉËÎËÍÍÎÏÎÐÓÒØÓÕÕÖ×Ö×רÙÛÛÚÕ¶V#\~}~|||}¶ÈÎÔÖØÖÓÐÎËËÍÑÒÔÙÚÙÜÖÖÔÎÉõ¦~ywuzqhgg_^_cdcikifmnrkneab\^Z[[Z]gkhfaikcabhaSPT[WPP$!#4?[m¨§¬¬ª¦£u\4$",7K`r¢¨®±²´¬®«¬ª«¯±°®©§£q;GM,.-*+-2*)+.*+-628+-6MG4)-/0222:`TXXVN:(3-06<3*.3;:(44-///4.-QJ'5;D\eF/@6!"&)3@JsouyaZsF$!%&2^X2:>RHFzo ~sgjtgL[id_;=;9-*.4951.01/=GJNTWenv{y|{{zx]K>1FUclgr{z} ¡¢ ¡¢¥¦©©¨¨¥ª¯µ±¸·¶¹½½½¾Á¿ÃÃÆÈÇÉËÊÎÎÍÎÎÏÒÑÔÓÕÓÔÙÕרÙÚÙÙÛׯz!$_{w}|{¢»ËÐÓÖÖÕÑÍÍËËÎÎÒÕ×Ú×ÚÖÕÕÐɼ¬zwrwysijkf`fbb\behkolmnlaZ\X[ZX^b]mlhghcfb^]d^STV]YZX"%.JXp§¨®¨£uU/$%);Kcw¡©ª±±±±¯´¯¯²®¯´²±°©¨ j6EN,)')0,(8-,.*+597-,01H/:/04945+3\VUNF?75,.>AK7206C=*-7<*82-+1LB%-7WgqA$;>%!"*/D\k|hi{nLj](#"+Ri+'')(3dG3;Hq|{}¢tRA.<F18720<6.0615@EER]\kqw|z|}zt[O5.IZ_bdp~ ¡¨¨§©ª©©¬§²®´¶º·º¹½¾½ÂÅÆÅÆÇÆÊÌÍÌËÎÏÐÑÏÒÓÓÕÕ×ÕÖÖØØÚÚÙ×Ï' 'm }{~z|z}|{}§¾ÊÏÓÖØ×ÑÎËËËÏÐÒÖÙÜÙרÔÑÌŹ¨}uvs{tmgigcd`e]aghhjonmj_ab][XWW\^djihhd\``\c\VVW[\^^S$'/CRl¡ ¨¯®°¦§¡vV8'*.;Kcy £¥¬²®¯´°°±²²²°´´°°°¥¦}jb;=E,+74,'-;,-,3-431+,*002325=56-14MXSNG@5?6(@@33&/.D>.671,+#%'7A:0(8Tnh8%4H6&74@Ra|tUqm[kcatO)!#*E{1#,-)LO( !,KIYHCHx¨¦~mmgE;DD560?764*665;HHLUX^jt}}{z~uRF49RVgigt ~ ¡¡¤§©«¨¦«¬³±µ±µ¶¹¹¼Á¾ÁÂÃÅÆÅÉÊËÌÌÍÍÏÑÒÏÑÓÒÓÓÕÕÖÖÖÙ×ÙÚÙÔ²G /y ||}«¾ÈÏÓÕÙÕÑÌÍÉÌÍÏÓ×ßÛÙÙÕÒÎÇÁ´xtqpttqigigk[_^eikkjpgied^[WWUSY`dfijkggZV\b__UWV`][Z\##"""+9Ni| ¦¬ª®£pX;%)*8Hcy §«¯®´±°²²²±¯²´±±°®©« xcZ97?+/7123)89-0./24-)+5/.)-7<B40.'8JIGF>=.215>C41.,1BE5**(/)-#57E;7-1Xqf3 #=R-+5@D[^srLeq\Wx]~u8$*-:{A"-*2W.!%/DBA559OdX=HeiUN<32488=2)442FDJTVVdju||z|~~cNF+;LSf]kw ¢¨£¤§©§°®°²´²¹º½Â¿ÃÀÃÅÄÅÇËÉÍÎÎÏÎÍÏÒÑÓÓÓÔÖÖÕÖÖØ×רØÖ¾^5u ||} §¾ÅËÐÕÙÖÐÎËÇÉÎÑÓØÚÜÚÖÔÑÍÇ»xvupwwjkgefc\[`gafienfddb\ZUUUV^echighhj^[[\b\X[V^\V_[ $#0-Mb}¥®¬ª¡qWC''*GG_u¥«¬³°¯²³°³°²´³´²±¯¨¦£zkT45.(,2483+,-.,-,2-.3,-8108@=5/0*9@GKGA8:4,56;00+0;6DF7+/'-'"#0<>'*-6ZrcB$#*VU<@HR[``y{agxdY{}wZ)&+4xP%(%IF& $=@F;463FCK2<Igr}_C;79509,,.,?JCLXVbfmw{wz}~~gR>1KSaedr~ £ ¢§¨¦ª©«¯¯°µ¶¸»¾À¿¿¿ÂÄÃÅÅÉÊÍÍÑÍÐÎÏÒÑÓÑÒÔÕÕÔÕÖÖÕØØØØË 3| |}~~~¥³ÁËÐÓÖÒÏÎÊÈÉÎÒÓØÛÛÙÕÕÏËĺ¨zxvwsssrmjii``]W_efgcjhb`WUYSTY]`dfkmihcfaZda^aZYVZ`a^b!!!!(+2Ee~¡©©®¯©¤ z]E%&3;Fhw¨¬®±°²°³°¯´´±²³¶²²¯¦¤ |mX668-*3<@,(/()'.(762.00-39>=?50,107BOAF8:12<;3,.7-0BEJC,1*$('&6H4*&,>WiFR9#!>k]@JPZ`fywzwr`vuip zC(/<p`&)(F6$-(-AHI@0+0LC24?;=F}hA?7-/-2,029BFKSW[\kpy{z}xaR4/PVefev ¡£¢£§©¦¤©¯¬«©±¶¶¹»ºÁ¿¾¿ÇÅÅÇÇÉÇÊËÐÑÏÐÏÏÐÑÒÕ×ÒÕÔÖÕÖÓ×ÛÚÖÎ( ;x | |®½ÈÌÏÒÑÏÍËÇÉÏÐÔØÛÙÚÔÕÏÆÁ¶ xyvsrppoljhfb[ZZ^befcggaVUT[WZ\cbidkfggcd_Z`eZ\_Y[`[]ab&&!$&(*+.Lhw¢©¬«©¥w`4)-1EEcw¦ª°±°³´²²²±²²´®°µ°ª¦¡¤wl_396*215D*(0.++-(8/)+0,2<IJC=0)3211@B>A;I7>A0**,++*79IU+'('.-(:K,(&8Q]L>\]4%,UlVFM`rajuty{cji_qtuyk0*0iv)*09(&&.:D=<?;.3L<-;><;1MTEB5,1.*)+,9CHPUX_djtw{~}}tVL63QVhfgx ¢££¦¨¥¦¦¨ª®¬¯¯²µ¸¶¹¼¿À¾ÃÂÄÇÇÆÈÈÉÍÐÏÎÏÏÐÐÒÓÑÔÕ×ÕÕÔÔÖÚרӲD >z {©µ¿ÉËÍÊÌËÉÇÉÎÑÖÚÜÛÖÕÓÌÆ¿±¡zuvuxppmlhogg`Yb_^cahj^Z\SLQXVecdihhccbi_]]`e_]_ZZ\X\]__%%$)! %'1B`u©ªª¨¥z]C.,4AM`w§ª¬°±¯±°²±±°³´±¶°±ª©¢ ¢~qi6;7;2&33**+.)((382-*3.:DDC=B0(05/3?F<;7=>B@-+(150032KZ6)')*,2>A-")=]Z>6TlT;<=TgeSNdM@Vegmi\JZr}V-5Wr+,6/)&/-<C<26?(3E=:?57*/:=6B542(,,-29MOSUUcijqw{~z} |wmRG47VZgml} £¢£¢¤¦¦£ª¨§¥ª«±±¶··¸¸»ÀÂÁÃÁÆÇÅÉÉÉÊËÍÌÍÍÑÐÐÒÑÑ×ÔÖ×ÖÕ×Ö×Ö×Õ¿g"Dz}~ ¬ºÀÆÇÆÈÅÈÆÉÐÒØÚÛÚÙÔÑÌɺ¬}wrtrporpelkb``\Xcdeie\VMIKMU]cghjhkebdc]YUbcZ^a^d]X]dbb #$!",1@]r¢§ªª©¡¡zaI6.3;JZt¥ª©®²±±²±³°¯±®´±´²«¦¤zt:77<*.710&,'%&,3<.(+;GRTHA:0.,3(-1D?:65?A?67153316.9;J7%(++'+?E3+/NnV2;<alP401]}jAFVYA]|rh`A<@cqP4Xk5:3'!&'CD6B1-*$;H9D<37434:6D41.5)3038ENOV^imgqw}t{}~|hP;/=P]depy¡§ ¥§¥§©§¥¨«¬²¶¶µ¹¹¼¿ÀÂÂÀÃÇÄÉÇÈÉÊÌÌÍÍÏÍÏÕÐÓÓÕÕÕÓÕÕÖÖÖÖÕÍ0Nyz ¨¹¾½½ÀÀÀÃÉÍÓÖÚÚÙÖÒÏÍÆ½§ }tsqooqlkehc\`^YZ`egf`YOFAKP\cghhhgdf`e\[W[\]^X]`\d\^d_Z$$!%%"%3<Yt¥ª®©§¤|kG..;>I]x ¨®°±²°°®®±³³¯°±µª¬¨¡x61FE/'=3)).$%')95147TbeU;85.,-,+3=C;;=9>6101?./<35(20DW)",-,3==4%,UbF?6CLfbA&$;|}hf~\r}mWPD6?TrvmQY_-9G<#&$3B<;76.):>5I:4503101@2.'5+/4;?JPWX[lhlrtx~}~v^I53GSaflr} ¡©§¥¤¤£©ªª¬¬°¶³¸¹º»¼ÁÃÁÀÇÇÉÈÆÊËÍÍÏÐÑÎÑÑÐÑÓÔÔÓÓÓÖÔÔרÕÑHR{ ¥³µµ²»ÁÉÏÕØÜÚØÖÒÎÊĸ¡yorljpoiiecaVb\\`efha]ZSNFNSZbemngdagf^XZW[]\^Zcc[a_aa`T**'%'"$#.8Tl£©«¨¨¡|fT535BM[r¦©°±³¯°²³°±±±µ¶ªª¨¤ ¢h83VO61;()&-&+,.029HQbZH9202,),*58BD>=K:/4/,1<<5976.-8Cg4)*165/:A59XH=C9EJhqM'%$GlwY~skbY;BAr~j`lq:]v*!*;<@75;/.C<=E86-/450584,$.-07@HNTQY_nlnuvz{{}~{~|wuZD4=MY`dox ¥¡£¤¡§©¬©««®³°¸¹»¸ºÀÁ¿ÁÂÉÆÈÅÉËËÌÐÐÎÍÎÓÒÓÓÔÕÕÔÔÕÕÕÕÖÕÓÂj\x | ~ ¤©«©±ÀÉÑÕÕߨØÕÓÎÇÀ´¢zooiljhhm`b`W[]_diab_\YPMEQXaemojfadecYYUX`Y]_]eY\`df_XT++,.'$"'+6Qg ¦««©££lXA54BN]u¨©±®°²±®±°¯²²²´²«ª¦¥ ^@9dT3+6#$%(,"':6@U]\N8.2')-*-'*5=AA=;<21-804:D=:<7+2-8]C&3:<4*3MLRH589;::Onh8%$L¦ ul irZcUG;ADhpwzwL£&",.5;:51/5?1=>63-84/0236+.+-13@KUUTVdmrvsyz}}z~{umW:/@Raaflz ¢¤¥¥©¦ª®«°¯µ¹º¸¼¾Â¿ÀÄÄÄÇÈÆÉÎÎÎÐÎÐÑÔÒÒÕÓÔÕÔÓÕÖÖÖÖÖÒÉexsz ¡±ÃÌÑÕ×ÝÚÕÔÐÍɯwpqqokfef^]ZT^_agd_^^UMKJTR]bfomihg``bY\XUZW[d\d`_]`_ZPJ**% $#&0Ng|¤¨ª¬¦¤s]B::CH[q¥¨¬®¯³¯°¯¯°±¬±³¯³°«¨¢¢¤a?<`V741%'&))*>MMY\N>@1/-/*+((*+1AH58H;11.55;E@CEH;2)*+F?16<1.(-S`a<0.4558De{X5"$+GcoTntn{VSJ:1>2]yr|{s¨©X%$5-0:2*/'1<72/00036.1+(13/'.1:>JOX]ahmuuzyy}~{|{}zrbO6+BT_cqv{ ¡£¤¢£¤©§«¯®´¸··¹½½À¿ÁÂÅÅÉÈÈÈÊÌÍÏÏÏÐÑÓÔÕÔÖÓÔÒÔÔÖÖ×ÖÖÌ«lwwpuw} ¯ÂÌÓÙÚÜÚ×ÖÑÌÆ¸ª|tnmlknd`^aXZZc]c`bcZVRNHORUaflknjea\^YXZXXZ\^bb`_ZagZUPG&&(%'(&14Hdt¥©¬¥¢£x]G9:?J]p©§«®²±±¬¯®°°¯´²³°²¨¤ «g@H\[-;21*)1)/DPPND6/21.0/13//,19DB7BNA962;>9D=CD=::0-0?I9H8'))3Lmg8)*,270B]h^=C))1>:8Q`ls}iRD<+83HVr}¬¯8$,11:91-(,:>6043-31.9+/.1..0.7<CGP^`jlrtvwx{~{|y{{oUC46M__bqz ¡¡£§¤°¯¯¯µµ·¸µ»¾¿ÁÃÃÅÇÄÅÉÉÉËÎÐÐÑÑÓÒÔÕÓÒÓØÕÒÔÖÕÓÖ×Ô¾~zijlryqww{|~~£³ÅÎÒÛÝÛÚÙÕÐËÁ¶¥ usqrnkf^aea\YXY`e``_VOSKIRWWfhfflec__^ZXVT]V]\`^^\`cfYTKE''$" ,))3FZr¢¦¢¢¥pcD2:>NXp¢¦¬°°®®¯°²¯´°²³°ª¤¢j:N]`176)*0+018<6;43393-2,04/+01:C76OGC640/<BA77?7D><29BG@4/'#0=ToW5+*&+73Gjka@CN*!0.-68Db~mQ9+00?DG{³ª³¢i(,214:=.1+4?58@34/27/-.+4,/)1,8@KOOTdomnpus{y~|z{{{xhR7.CTaXjt~ ¡ £¦¤¬¬®®²±¶µ¹´¼¼ÀÁ¿ÄÃÃÇÈÉÉËËÎÑÒÒÒÐÑÓÓÓÔÕÕÔÕÖÖÔÖØØÊz{uabglqhootsv~} ¡·ÆÏÖÜÜÝÙ×ÓÐɾ°¢xqmollijd\`R][\edf_WTWPKOSZ\cgijbe__\_WQW\VW\_`_\Y_c[[SG?$$(#&"&*#,Ne~©¡¤¢ v[E::=M]p¢¥§®®¯¯±®®±¯°±³±°°§ª¤§a8G`D;:0))1)2*8223-/4/0/1)+<-)-4:=1<I<A7;1A=N:<.7;1387>:>-&+##);[f@6.'),5LVtynY4QM%.@31))6OsZ;,6;RN3Yovª©¨y4!',/0:.,(&1E6461+111/*((*/5.43:@MINZgnqtutuz~|{zyo\A01CU_`m| £¤§§§¨«¯±²´µ¶¹µ¼¾ÀÀÀÇÅÄÅÉÉÊÌÍÌÐÒÑÒÑÒÓÔÐÔ×ÖÕÖÕÕÓÕØÙѬ~un[VX^o]gimjquvt{~ ¤»ÊÏ×ßÛÝ×ÕÔΟ¨{ttopkhbe^[[T]^fib`YPILIOS[]aahkfdidf__ZV_^Zbada^\\^WXPHD:''%)&!'$/Lh¡£¤¡¡ v`IA<=KVn| £¨®±±±¯°±¯®±²±®®¨¤¤|\:J\?2?4,))((--.1,1270-+-,6>4*1<J48B@97536>LOB8--4805@E7-+('&(+FgO1351**5GkzwvoC6^=*=;2)(#>\]2.4BVYD[@W[%!13095.'$)8?7233)*6.+,%-(/:.+1;FIQTcjmoovuwwvzy~~ylPA33K[Zit} ¡¢¤£§©¨¬¬«®µ¯±µ·¸½¼½¿ÁÄÄÄÇÉÊËËÍËÏÏÏÑÒÓÒÕÒÔÔ×ÕÕÔÕÔרÙÕ½rjiUMR`gZ[\cdjgnlvw{| ªÀËÐÙÛÝÜÖÖÑËÁ´¥uqpmlfba_[W]Z\`bcabQMMQLSXXdffhde`b]aZXTU_Z_abeb^Z`c[OLE5<&&& #)(3Mi|£§§¨¤pYG;?AL]n¡ª¬ª¯°°±¯¯°±±±´²²°¬©¦¡dBQ_@@I14+1(/-.031;2.1-+-*.6.*:J=,@G;43<:8C_TJ:3)'1+.02/02.*%'+QY6+654/-5Ec{xt h7CU</5/#/.6Dwt;2/=fknfIKU{K)'104C;/&)'25/02.+'/,',*,+059:6DFKSYbinqstvtzy}~zyxvhF737PW]h} ¤¡¤¤¢©¤¥ª«¨ª®¬³¸¸º½»½ÂÀÀÀÆÄÇÉËËËÉÐÎÑÔÔÒÐÕÔÓÓÕÔÕÕÓÖ×ØÚØÈ fY[MJOUgRPW]^^ccnnpvsxw}~~ ³ÃÎÓ×ÛÜÜ×ÕÎÇÀ®xqohfc_WSXNTU^`df[VOMCFITZbklhee`\__bYSWY_^ekhg^^ZZYVKFB>4$$& " #"*3Der ¢ª¯¯ª©¡p[D<<@P\l¢¢°¬«±°¯±®±±²±µ´±°ª¢¤|`GM`I<D+&'--,22344,8//0+1+0/31=G81DI=40-49FOQH:-+*1)(.771++(+&3PX/&1@A5/6<Ny}z}H1EL@+'(.6<H[aG0)=[w~w[YR~9#(33;;4%4*23-/3.1.--)$'&(+27>=CFEOU_iooswssuy~~{{yqVC51=PZan ¢£ ££¤¦¦¨ª¬©¬ª´µ¶µ»½»¾¾¾ÃÃÄÃÇÊÉÌÍÐÐÑÓÑÑÓÖ×ÕÔÙÔÖØÖ×ÕØÛÙÒuWRONFOMaKLQVUU`_abffimoos{wyz}~ ¥¸ÆÏÔÙÛÝÛÕÐÌż~tokge[VMOMNUY_feaZSMGDJRNZameeac_[bb][\Y^ZagfhcZ]]UVQK?=@5##$!')#(.E[n¦®®®¯¨¢xaC>ABIVl~¡¥ª«ª¯¯°±±²³²³³ªª¦£ |vaRN^QI>+$'*)/2:;A5.1509+-/+:6;EA27D?:14389LAIM961&/')8500,')&':LD)+.=IN=5<Hc{js458>F;()-8@MD8A1)?V}l[bg^t.&)3/471(/)/3++.528))"&%*3+49CDCFMO\gnrostxt{zz}}~{uaL0.4MV^bv ¡¡¥¤¦§«ª©©««¯¯´¶º½½¼¿ÁÁÀÂÄÇËÎÍÍÐÐÐÑÐÓÓÕÔÔÓØÕÖ××××ÛÙÚØ¹}cQRPK<>IMDCPQOQYX\XU_adbhmosutpt~{~ |®ÁËÒÕÛÞÝÚÓÏÉÀ²¦yumddYYVLKWP\]_c_]VJHGIMURcjjhd]_^db]\_[V[^hjhi`^]\R\OMD<6:##%%"""$).;Uh}«®¯®¬«¦jK?;9CSl{¢§«©©°¬®«±±²³±´·²¯«ª£~nmPDRRS9+%%(239B24-,+.-./,.3=?DD429CA?/1218A9AV;52/0-.).'-7,)''9928':8Aga_^\Vx sR40.@XI((8A2930,78QQCXme|R(%/-224+!'/442*03+)(..$%,120:JBHHPS[jotrqwtssu~}yyymT1(1GQY[m ¥¦¥§©§©«¯ª®µµ»½»½À¾¿ÁÁÅÈÊÌËÍÏÑÏÑÐÒÕÔÕÓÓÖÔÔØØØØÙÜÚØÄYIIMOIJULABFJLJNPZNUYXd^^`akjhenmtvtwv|¡ }x~¡¶ÇÍÓØÜÜÛ×ÓÎǹ«xng`[WQQGPOQ[eae]YVIAGLS\_fhfa]__b][\Z]Z]\]dnjfa]]V[NLF:899""(!#!,11Lk©ª±¬°«¦oQ99<DQo}¢§ª¯²®°°²¯°¯µ³±±«§¦}jfWNR\cB)%,**/A:-+,'+1.+/.34>GH5/-?E?34665B?8CP:655.,,),$'60(*'=.-23RF)Guznj[cuB:06IbL+0F36>;,;HjM;Xhq >&,)0820&&+66.)21''1)*(%(,..2=GIKNU[eusuxwrvsus|vtyq\I0+9JU[er ¡ ¡£¢§§©¨¨©«¬°¯±³¹¾»¸¼¾ÀÀÃÃÆÊÊÍÏÌÐÏÐÎÒÒÓ×ÓÕÓÖÓÖØØÙÚÛÚÚÎWDMSRDYaMFJFEDDGKRNQOTX]UY\]^`_cchknmnos{¤¢ ¢¼ÊÑÕÙÞÞÛ×Ñɽ± {qj^WZSRPEMQUWZa^]SPEDMUWdairf`^]Z_\]`_WZ``adhjc`aa^OJJ<6759"" #%1)5Cc£¦¬±¯°¨v]:59HTk| £©ª«¯«°±²²±®±²´¯¯¨¤~{sh]JK\^D%')',=B312/-..,7..,4@K772-BD>3+16<<F?BH<:122-,/)/0423311,--It@.Hyup``zgzU;1:HUH3BIEIK7Bi>,<EU\21*(312($%09//*-+1/1(+&(()8744FMMQT]jmqvxyvuwswuxz|eJ6&*>VV_mx ¢¤¥©¬¨¨®¬®°µ»»»¹½¿¿ÁÃÆÇÇÊÊÌÍÏÐÎÑÐÓÒÔÔÔÕÕÕÖÖØØÙÛÚÚÕ¥^IPSWGX_SIQOQMLOHPIHLQPUSSRQNXTX][b_eccenmzz ¥¼ÊÒÙÚÛÜØÔÎŧwj^\UTQIJFLRYbb_^ZSGHDPY`fbhle\]^\a^][[U^_ebied_[d]WJJE:715< ##$&"$%5Dm¡¦¬°²®®©w`<4<MTi|¥¨©«°¬«²°°°®®³²²²¯«¥¤|lkz[CRY_9',*+0>;')),,*/++-/39HG4,1/CD9061/3AJ=@G668846-..+0*78910%10Ft.!#0_s[O\iov«pTO80/@LBZV_ZQ]au,(43:776473-*)%(0@/('+.--*-+-*1(::9>GSOR[drpwrx{{rvuxuxtr\9,,/DXcet} ¢ ¥¦§¨§ªªª«ª¬²¶·¹¶½¾¾½ÅÄÅÉÊÈÉËÌÎÎÏÑÑÑÒÓÓÔÖÕÖÖØØØÚÙÙÛ×·bFQSZSX_RRPSQNQRJRSLJIJELHHNKMPQQSVM^^Z`cllp|¢ ÀËÓÙÝÝÜÖÒÊ¿²xja_TOKHDJPSU^`YWVPNKJPT]chjfcc`^Y_`]X[Z\g[fini^fbaZVNDJA:,44&&%%!!'.Eo©«¯¯°®©}lC;@FWgx £¦©«±¬¯µ¬°³µ´´°®¦¡ r_p`D[Z`8&##+36.'&/-+',,-.-@DG@2+..=FA/0124?C@CG?6=6A;**(%..11543/91BT%"&CeaHScc«jpW+17WgYmsa?<Z<-./,/0660=02,(%/040),*+5+.(+4)*-/:9>JNMW^kqvyxx{utszvwuqcB.)%1D^ikw ¢ ¢¤¤¥ª©¨ª§¬¨±´´ºµº»¾¾ÂÂÅÆÊÊÊÉÌÎÏÏÏÑÒÓÕÓÓÓÕÖÕÖ×ØÛØÚÚØÅyMJTVP`_VY^XSVQSMWKNCH@JGJA?DFJGLFKGPOJIRWaetw}¡©¤¡£¶ÆÎÔÛÞÜÚÔÐź¦}pbYPKF:>=FIOTX\ZSVNILKQ\aclm]U][]`]^d]VZX[aeghdW^b]\PPO?6:234&&%"!!! (4Gg§«¯¯²®¨¢|kD4=JRju¤¤ª¬«±±°²±®°²³´´®°¨£^QpdRY\^8%$)1;4)-0.-.(,*-/HGH>5//44KJ9..2328E@;FB:7DB<4))%5341297450,2%%$'-MV]O_tp_¥xC?KUgb[i@64'&7/)+.476GA2-**38-/)+)&)&%(,*,+45<:CUUP\eipvvtwvvvyxuwiN6$&-DRijq~ ¡££¤§¦ª¨©©®¯²²¹¹¹º¿¿ÀÂÆÄÆÈÈËÌÎÐÍÏÐÒÐÒÓÒÔÓÔÔÔÖØÛ×ÙÚÙÍJFMYRc\^_b][UQXP^PPMMGJB;>BD?D=>?C?AB>AARVX\kvy{ª®°©§¬¼ÈÒÕÚÙÙÙÓÊÀ°ri]SNJ@:=<EKNUVRMMPNKTQWbgimm^VXU\Y][^\WZY_bfhfg`_\^WWKC;::77<))"' "!'0Df©¦°±¶¯©¢|xF7:FRdv¢§ª«¬¯°±²°²´³·¶®¬©¦¡pKQy}cQQY[3&"0::/*/,3*(%*.2=X?<:5*)--PM761/+7AC;<F>AEB=293().6<*74752/$#*",3-);afYfz~q|hKqViVe}r\H0&#/*,.063;3+.(--10))(&%,)+'),((.36;:FWXV`gptwqruxuvwywulO5'#.3MVfnx ¢¢£¢¤¥¨¨¦«ª±°²´··½º¼»ÀÁÁÇÈÇÄÈËÑÏÏÍÑÑÐÐÔÒÔÕÔÕÕÖ×ÙÙ×ÚÚÓ«WENYYd\`a^`W\]`VVRWKULMDKD?B?:=3:8623/53;AJOZehotw¸º¹µ® £±¿ÉÒÔØÙÙÔÐʾ¯{j^SOF?=8:@WPPYXKIEIQLU\Wllohe`[]^Y[W[`WZ[X]dfejeab\ZXOD??98645**)()%+,)'0Fd¢¨¬²´µ®ª£nG<8J[bz ¡£¥©©¯±±°®°®¯³´²´³¯¬§dA_uu]RSQU7',.77('%'-+%**0:MS41;6.*.0HE50)05<FC:7KA6=:>96;5))1=*,9==98+(.5;8,#+Gki^nzris_e^OMcp\I.(.'+./35<2,-,)*50-)&&(')'&(*',+1<DEKXX[fekvosttxrxswws_C+$&/FX_hr¡££¥©¨¨¨«²±±±´·»»½»½ÀÅÈÈÉÊÈËËÎÌÌÐÐÑÒÒÒÔÕÔÔÖÖØÙÙÙÚÛ׺jKSXX`\jcbb`]`^_[ZXSWWNIIH@@>385175)+322178@LQbbfv½¾ÁÁ»¯¦¥²ÃÌÒÖÚÙØÔÍö¨o]YNK@<748EPMPURNMOMT\^ahjlijb\Z[WUZUUX[^]Zbefffcaa\\PK<9<7454311/.-,52653Nh¦«±µ³¯§¢lK>;NXf|§ª«¬¯¯®®®°µµµµ°±¬¦¡eMZx~[FBFE0()4=1)'&+/,&+.8JF>8.4=5/./@@5-++/COE>29>597>73<94113-'(.7>=4*,18..$(+LcmlpwcujnqPX_8BmoUC)'('//6:1.*6/,2--(**-.*'"(*,*)+28ADPUZ^ikpqqvnwvswxsphG2+$+6N[er{¡¢¤£¢¤¨««±°®³·¶º¹¼¼¼ÃÃÆÄÇÇËËÌÌÎÎÐÐÐÒÑÔÓÕÓÔÕרØÙØØ×ËMPT]`_dfdefi_Yb[ZZXYSPNLFC??<;938.-..0,,,15:A[Wo¥¶ÂÄÁÁ¼³§ ¦¹ÄÍÒÖרÖÓÌÀ°¡yjWMKC:99>=HOLSQLOJHMZ_bhdpkqhe^[[XUYUSY[]Zadbiibcb`XTLI;:<8220200/086<;597Kk¢©³´µ´¯«§lN=<GZdv £¥ª®°®°°°®¯±³º¶´°®§¤`Y[{ _D=;:1&&44).,..8++2@584;..8B9+24<A;/-,4AEA=7;===;7/);;B>10+'-&1<=8<.171+(%,+B[jgn¦xeqdX`LaYJb]MK,(&)+571*(+,/3=:::+-+1'%#*))''.;CJFSYahhqnxrsvvxxv{ukM6+''3BSdm}~ ¢¤§¤¦¨©°´¯®³³³¶¶¸»¿ÁÄÄÃÇÇÌÌÌÌÏÍÎÏÐÏÒÔÕÓÔÔÖ×ÙÙØØÙØÒ¦YNV[``dmihefdfea]^X\WQOLHHII?;:4/30&'+*#%+545B`z¯ÀÆÈÆÂº´©¡¡¨¼ÇÐÒÓÙÔÔÏÇ»¬ iYQFIA99;IJINQWOOMIDKWYZ^dllfe^_XU[]QR\TUXY`eclehc]^TSJG9>=73325..9FCFDBAADSgy¡§¯²µ¶¶²°hT=@JZhx ¥¬ª®±®±®©°³²¶¸³´°¬¦£\^WhF@<1=)+27%,'+'319>7.+121.6>-(+,07=7*)6FCF8>>8:86<?717A5.&(,##&/AG9')693...+%;\fg¥qtIXa^yt{oT?(%&5367/(&$0(**,+)'#%-&$&('.109FKELVZbjmptrsvvutyykV7+(+.=L^kt ¢¤¤¤¨¦«±²®±³¶·¸·»¼ÀÁÂÄÂÅÆÈËËÍÍÏÐÑÐÎÒÓÕÖÕÕÖרØ×Ù×ØÔ·fQU\^dcjkegcfhfff^_[XWTQQQGKD<<7242-.%'!"$&.5@d¨¿ÅÊÊʽ«¯ÁËÑÖÖØÖÓÌÁ·¢x`NE>:8>8BELLSSTQF@CIRYZfdpkkfa\XVVRSPZNP_Y`ajlgffd\\WQE::A659338::MPMLKIDGFUfz«±±¶··´²«sYD<NZjv ¦ª«±°²±¯®¬¯°¸·²²§¤¢y`gVkHB448&&2A,+4139DB522*+205;:,,1/-7E?1/:G>>5D>34;8<@043/+)'(3+%(-;I9/%6O9/./01&0QdqPPdr{lhP-(!&176*$(-+,)"')-*-'$'+%/),/3;JJFPV`dilssspwvvrvxoa>.*)*4L_dw ¢¤§©¨°³±±´¹¹»¼¿ÀÀÃÅÆÆÄÈÉÍÌÌÐÏÑÑÏÑÓÒÔÒÕÓÕÖØÖÙרÖÉSUY]`eijglphggf_cbY`]XXTSJRH@9=8.10*3$$$0&#)Cs´ÃÉÌÍÒÆ¹¡¢·ÅÌÓÕרÓÑȾ«{\VKH5;;C:HELORNOJHBEJV\`npnib^ZXTOUSUTXPRW[cejomrgb_[UIEB>H:5445=IISVPTOTNMRXew§¬²·¸»µ°«ybICRThu ¥«±¯²±¯®¯±²¹¶·°«¦knb^ rHD27.%446,-6-GNH>/))-*.-3?<5-.643>>47>D;55@J86M6C>111..)/(32+'%+3;8-6[D4;300$#3Mhvwg[_yd>\wl+)++37,.3)1).(,(*)/%$$**1((,-;JPMKYXehqvqvuqt|vyutcJ4+,(,@Sbpy £¢¦¤§©°¬¬±´¶²¸·»¾ÂÂÄÃÅÄÉÈËÉÎÎÏÐÑÒÓÐÐÔÓÔÕÖ×ÖÖØÙÛØÍWUWZ_dbglhikmhndde`cbZUVVOOOFI>760)-/,,%"#,Es»ÅÌÎÏÏÅ´½ÇÏÒÔÖÔÑÌÁµaJJA?52><?GGOLMPPFDLLSY^gnqorZZQYQTQVOSURVX]efkoqjd`VXUIIFD@@<44<>YY\XWXPRWV\`py¦ª³¸·¹·©wcJBIZhs¢¨«®³®°±±¯²·´¼´®®§ nq\lj]K0-+%122065;AO660214(,/623;47--3<5/;EF:0:CG776<CB2-////.&.2*+-''5E73LK=4)/(+()<Hkwsiphb\Vn}u2)01440&,)+)-%&#+*%&$00/*-*-4EOMMNY`emrtuzttu}wsx_C//''+8KXny}} ¡¤ ¥©ª©©¬ª°´¶±´¹»¾ÀÀÃÅÇÆÆÆÉÉÌËÌÍÏÒÑÒÏÐÓÔÔÕ×Õ×ÖØÙÙÔ¯eQR_^faekikiohndgca^_`ZZ]XVLGI@=E:/+/,)('%#)Dk¹ÆÍÎÎÍÁ¬¡°ÀÇÌÐÓÔÒÎö§pP==75<66@DHGLMMIHEHJQ[^fijtgc\VSPJRTTQRRTNT^fjlttff`YZUOIOME@==86<^^\]XTSY[UYgry¤©²µ··³³¦ jNCRWhv¤§«ª°¯°°°°¯¯²´ºº¸°¯¬¨¢p|`mz^SU.%&)21':B>8<9/7,,3--,5/2-4*4.7+684BFA14<CM8:C:@</.+0/.0),466,$"5LG3;N:420*10*CCCp|¢ª rZeTdsxt5-.4--)/+**+./*(-+($'&')+*1=IOGKOT`hrrvqwswuzyqg?-)(?.9PVdvy ¡¢¡¦¬«©¨«®°µ´¸»¾½¿ÀÁÂÆÅÇÆÉÌÍÍÍÐÎÐÐÒÏÐÓÔÔÔÖ×ÔØØÙÙØÃuOSUWahimlejjlkdgge^a]TY\VTMIPIC=;;4./',%(,+Ck³ÃÇÌÌÊ¿¬ª¶¿ÆÎÏÐÐÉż¥tXB5?65:A>IDJJLBCDFBKSXcejkmfa\\UURRKMQSMVWX[bitprnhfb_XQLHOGD==98:BXXY_\[Y[da[hwz¥ª²´··´®«¤pTKWaer¥¨¬°±³³°°®±°´¹º·³¯©¦ qpap||b\[8,+'&5+1=1.340,,23/01/0,2302012021D@8*.=HP;?H<=@B*+./)*+(1896,'':ND4F=7;4/+55C@CE\sdGXf~wJ1,36,1%.*)+**+).(#&'"#(0..06>LLMJQ\ggurso~uuwyvbJ*'#),MNYcty~~ ¡¤¦©§©¨¨©®®®±¶º¼¾¾ÂÀÄÈÆÄÈËËÌÌÐÐÎÍÎÒÐÔÒÔÔÕÔÔÖ×ר×ÖÇMPTYb`hklilmklihbb^i]VY\ZUWPIRJBA?:/.(-*)*-Ip®¾ÄÉÌÈÀ³«®ºÃÇÉËÌÊÀ¸¬uUF95544:=B?DOSC@EBELOSaagmmnjaXPPSMOKNNNOXX_agiptuda^_YTPSOSDB>8;;DBTTYYZUZ[c`dkz¥ª°¶¶·¶´®¥sYEQbeq£¨«®±²±²³²°°±¶·¹¶³®«§ flaq|u[UR=-+)242.+*-0156+--/+*763B?0412*,)-:00.8>BM;3A71<<;9+*/-1),5A?71#/<I:H@<;59A@@8=FN>EIcu]bvWKA2.24.*+)*'-,(,/1(###"$*,5-.3:DILPQRjijty}suqxtte>+%#",=KVeo{}~ ¡¢¡¤£¤£§§©«¯¯³¸¶¶¼»¿ÁÂÁÄÅÇÊÈÊÊÎÏÎÑÎÐÑÑÔÔÕ×ÕÔÒÕ×ÖØ×ТaJPY^_fjfmkjmmpjkhbbYdZ_YUNPRPIG>E<53-,5188Fl¦¸ÂÇÊÉÄ»¼¹¹ºÄËÈÈÅõ¤wYA;774067;DEGNNEA@FMISX`jikib]XRMGLIINJJNSV]bbdkrpsib_]TSSVVQL>=;8;DAUU[][YZbaflq{¤¬²¶··³®¤w]FQ`gs£¦«¬±°¯±µ®²°²´¹¸¶³±ª¡cmet{uZXQ47,17,(,1.-30/,-0'2+-445@;3102/0/*/*.29GER:0:72=AGA-)/00$&59?E:$-09?IJ,610?CV9;@IT;:HrLhzwz>3/*001.23).65(*&2)''"!&'015-6<HIKSZV[gipq|yvxsun[>."#!+4OWekt~~ ¡ ¥£¦£§¦¯±³º¶¸¸¹½ÁÀ¿ÃÅÇËÈÌÌÎÍÏÑÎÑÑÐÐÔÔÕÕÑÏÒÕÙÚ×ÔµjMRW_`hjminmkkhdgaia^c^\^WRTWUMFGB>:733,/78Ic µÄÈËÉÆÅÂÀ¿¾ÂÆ¿Á¼®¥zYE=6224356AFLBK@?CDMNSZ\bjjl^cfSRKJKOQQLLQPUYbjkqrsgfhe[USPRSHF::>?=B?VV]YVbbbdlmu¦ª¯³´·¶³¯©w^GY\ft¦ª©¬±¯¯±³³°µ²¸¸¸µ³±¬§¥[Xo{xpZXI,,,,8/,*/.0+28.-1-0,1517@:-+92760.*+)1;;>C959.-EGQS50260*$.B;TJ7)--7GW23;/5Fg[7/ETYFLwFHdwj3*+.04-+(0*.6*)*/+,($""(+,246BOKGEU^chgnvyvsuuqX:+!$+1=L[bhsx|}{ ¡£ ¦¦§¢¢¤§©¯´®±³³¶·¸¿¾¾ÃÁÃÆÇÉËÌÎÏÏÎÎÑÔÒÓÕÓÒÕÓÐÕÖרÙÓÇNPUYX\dfjnpqllhhfeaaa_[_WUVWPMLKKCBA>4:69>HZ ·ÂÈÊÉÈÉÈÁþ»¾´±© viOD?136949?EDKE?AAGFVTb`afhfea]^VSKEOJJNRTQTY_hgkqtlh`^[_URQLODD=;<GHFFRRWY__`iilsw ©²³¶µ´²¬§yeJM`ft~§¦¨ª±±±¯±°²´³µ¸¸³²¯« VNpvmXS?,&,?/*-39/0,3--.170,*1-4@;9/2,50/113-6M:<E70+34JPZV.(476(!);?XaG.+.5=]L,9/-?\mJ/7Ah]g~PBTexs?132.---1//21.)'*+)&***1,,/8:HJEMQ]fednqyywoqfN*)!&,1AKQdeqx}}z|~} ¡£¤§¡¤¥©¬°®°±³¶¹»¿¿ÀÀÂÅÅÈÈÊËÍÍÎÏÑÐÓÔÓÒÖÕÔÑÓØÖ×××Í`PTTZa]fehmkoihifj]]ae]a^Y`TSQKGTIHFBACKIKO_¶ÃÉÎÍÎÏÊÆÃ¸µ¯§¡t`UK;614486@?BJK=AAAALSW^amihif[XZNPNJRKLKQNQXealprsoge`]]bVYQICD?4?=CIFDHHV\bbkklsxz¨¯®²µ³°«¬¢{eJR_gt¦¤®¯°¯²²²¶¶¶¹¸³³±§ ZLz}wg\L3(('71004.,-03'3-;94*+8/5@70--44-)./2<BO?DS?*147PZVW1,./1,HWnXC3/23Qb,/;79Wl_59Ddu~^7DRR\lgO;+.5,*/)/+*,1))*&($%0%/A02=JMPOOacfgakmvtqeW8'"' &4HW[ehksz~z{{ ¢¡£¢£¢§¨¦¬¨¨§¬¯°¸¹¸½¾¿ÀÁÃÄÇÉÇËËÍÎÏÒÐÑÑÔÑÖÔÓÓÓÖÕÚØØÔ±jKTV\[_gcgjjkginfe`a[fcb[[\ZSOPNROIMKFMKJOWj¡¶ÇËÑÑÒÓÍÈ¿º° rZKHE;6565D?EEHHIBA;GLQRXbjlneed`TVMTJGKKLKOPZbnhosoojfe]Z]]YRNKKCA=ABHA<:DDQVbgqprrry¥¬®°±°¯¯¢xbPR[iq¥¤©²«¯±¬²¯±´µ¹·¸·±«¦¡cNwrk\P3)4(94).343-18*06@75,3058B70),/,4.-4F>QPBNK<,,8=KVWU=)(+65+$/SGXfP=688<mB*7J:BWVOBOVxv?9N/4Ebc?*1.+,.))003-**$)"##%+2/1:DEMKQXhbfmijkreO5&!-"+-;O^ceiotuw|x¡¢ ¤ ¤¨¥ªª¥§ª«¯¯´²¶¸¾½¿½¾ÄÇÅÅÊÉÍÎÏÑÎÑÑÐÒÓÔÕÔÒÒ×Ù×רÔÂ{MMVY`f_cdhhkfeeldg^\\bh__bb_RTQSMNKTNVPOW\s´ÅÍÓÕÓÓÌÅ»«¤|b]TL=@7535@?CLPJGEDADIQVZafijleh`ZSJIKGIINQLV[Zbhknuqmdgb^XbZXPOIC:=CGEB=6<>>P_\fqrtpts¦ª«³°°¯¯«¢ulPQ_hr£¦®°®¯±±²³³¶¶¸¶°°ª¦ kKi~vugQ+++-31*/=:.,?5,-9@50)52058<611/&+-0)6DZS<_^<2/?:ERU\S:*-*-.+*CZNGSG?:F2\a1.DD93QOLEQ\jLX:$2LhF+4/(4.*,54-()'$*&"$#)'*/7EJMPU[denedgTN9*# '+:IT^eejoruuz~z ¢£¢ ¦¦«ª¥¨¦ª¯¯³²µ¹¹»½¾ÀÃÅÄÆÉÉÉÍÌËÌÑÒÒÓÓÔÕÔÔÔÖÙØÖ×ÕÊQTOZZ__fgbljeefjhcadbde]c`aXWRWUPVTZXZURR]u¢µÃÎÓÕÒÑÊÁ° p\TLIC>;7;:6IECJLK;DBDLVVWecoiigd][SOJGGAJLOLNW]]^lossqkegh]V\`WJSG9:@=GMLE@877PX]epmrqsouw¡§¨¬±°®©£viZ[]in©©¬¯±±°´°´·¶º´³°¨ mEaxkkgK+&%+1&*-2:18>?*(9B99.108E9G?5+&',+4)2ERD@yT;3,@>Yb\YUI-'/'0+,AaX@0AD34,EvQ+:AM1/[RIAXjH[H%4GX[3'(#%%,,03.&&&$/'$$%(),9?PQTR^ad_^ZL<,/-%-/-?HTaejhnsuwvx}{|z~ ¢¡¤§§¥¦ª©«±°¬³µ·¹º¾¾»ÁÀÄÅÆÊÈÎÌÍÍÐÒÑÒÔÓÔÓÓÕÔÙÕØØÕÎ YMRUb_bddedgbghmnag`__b\bbaZYXUTX\]V^\X[XZw ³ÄÎÒÒÐʵ¤}iUPD@?<A;59?>I?NFIFB@LFPZ\dhhlhe``YbSIGEGDDCRPT[\\impqrmjdhfg^[]PHHA5@C?EHEK?966LT]hooqrkinw¤¬®®±¯®ª£vcTX`gm¡¦©¬²°²°²±³³¶¶¶´´°¨¥oCVulj`>,&%)0).,/=.,>:.2:C9.+2.0*DLGC30'-3/-5OQB<a?0+7<MUcUSZ>&*3.6-/\^G*,71./Kyv=1>CB8YNUCG`GNG(9IBR9')&!(-00-(%+$$-/&,(),6FHOPWR\YQC:8I*&-'#1;CT]_dcimpvwwvx}||~{¢§©ª§©°¯²µ¹´»º¼¿ÃÁÃÆÇÈÈÈÎÍÎÏÓÐÓÕÕÖÕÔÓÖØÖÖ×ÕѳgINSX``]agbdfbgdggeb^ic`cfddUWWW[Wb[]`^[WZq±ÂÈÍÌÉÁ¹©zaZNMJL?AD:;AIILSMINJEIEXTagkkmphhe[XXIJF>BI>DLSV\]_kqqpjpmfeb`\\RKH?79>JEEFGD:5//BRU]fhdffdfu~¡¥°³³²¬¦xfYWajq}¤ª°°±²²³´´´µ··³¯¯ª¥£uOTnglZ3+*(+.801=41265'3;F69+*0/32LGF5.,/22*;TT@=~_:0.9@VXi_P_K,(-73,)FmV<!#*659`['3B6*ILRZNlymWD6>Q3EA0+*%06/1)$)+-(.32+*149BCHPQE:720,2&%,-5:IST[bfbhmqu{z}x{}|~ ¡¡¤¥¨¨«©¬®¯®±´¶·¸º¾ÁÀÁÃÆÈÇÇÌÏÌÏÎÏÐÑÓÓÓÒÑÒÔÖ××ÖÕÖÀRNQSZc`eedealfgigcccgfbfd`b\^a_babgd\]Z]bn«¹ÄÆÆÂ¸©aWRGPULHFE>FLIEKLKGJBKLPV\blrmosh__QNKNLF?>@<HLQ\a_elpopnlihfba`XNDB7@>IDCCKF@>9**<GOX^Xc]abhr¡¨®³´³²¯¨iXU^bq ¥¨°°±²´²¶´²¶¶º³°®ªª£z]Sb^_Z3(+-'(+5/39/9:,)-ID<4/-50/.MQ6)-0/5--2JU;;a?)'8DVOliOj]?/(.0+*4]eS&%+<A1DA.K,58OGkfls¤{V)1C'4S.$#",)-+((->(',+*,014783564/+&)'&'),2EONW^^`ekkmrtux{{{{z|¢¢ ¦§¨«§®¯¯²²²·¹»¼½¿ÁÁÄÈÈÇÊÊÌÍÏÏÒÐÏÓÔÓÒÓÖ×ÕÖÒÕÕÌVMTYZY[`bcdfdkkkkgdejejicfb_\efdggnhefb^\k| ®²¸µ²§}_UTS\T]OOCFKMOLNMKMJHFLJ[^]gitoik`ZZLPORPHE@B<JNWadhinypooniggbb_WPAB<=CMJB?A@<;7--7CIPU^XY`_lvz¡ª®±²²®ª¤mZV^hp~ ¦¨«²±±²²²¸³¶µº¹µ´°©¨¨`NKX]K+)03/+30-772::2&/?A?;0,342-OY6%,52/11AGG2BsR5, 1ISQjzegjYC6-3/.+LoY+()4@C0Xn0AD55BGcroqn©hB.800I."+'(/?-*4-/--'30/00010.'.-4&%(,8>DPQYbhhlmnlpsvy}y{y|}||~|~ ¡£¡¦ª§¬±°²¯±µ³´ºº¼¹¿Â¿ÀÅÇÇËÉÌÊÐÏÓÍÎÔÔÓÓÔÓÕØÔÖÖÓѬ`MQTXZZ`_b^d`jflhicghidebd^^bagdljiklididjs££¥ p^YOSGRNLDOIMKLKHQQNIHEIRTYbghprrbbZWTQGIMF?@@CFOS^ekilvvqsvphege[VPEA@@C;DE=BD=18.++6B?INU]VdZio| «¬°¯²¯«¦taY_fn £§«¯±°±´¶´µ´µ·¹¹µ°°©¦eDHWL7*133(&*...31-4:87E?H3/3115/Od5)&234,97DD4IlL=(%2McThwet_I7;B6/.7igA&E!,A95uM2W52<S_xopj }e>:#,D5"!,.-+%&34/3-+1,,,+$++)(()'59:ADLUMU]_Yanosvy{~~}~} ¡ ¢¤¤¤¨¨¬¯°±°±²¶µ¸¹ºº¿À¿ÂÄÆÇÊÇÌÌËÎÐÑÓÓÔÓÔÓÖÔ×××ÖÔѺpHOSXTY[[c`a`cfnjnfjkkjieeehbjhhklpnnlejhfo wgYTTOGJJKOKMPTQUOKMJGGNPNR`^ekiood[ZWFKEEDEA<@AHN_fgrkprtxvprgdbh[SHHDAB=;?@B@C890/++25<CWP\Y]\`nz¨¨¯¯¯¯©§xiZ_jp{¢§¬®®±²´µ¶µµ¹»·¸µ°ª«£j=?NK4('1,0++/&1/7.9/.7?;</694962Qh1+-53-14/==6ZoJ6/(47]aisuclfJ4,/)4C-ao`/#,"(L4@x@LL:=ITmyyb|o`K42I')*(*(-')*1-39)(+2(%$&')847?KLMRUUY]\decipquvywy||y{|~|~ ¡¡£¤©§©¨±±±±³º·º¹º»¾½¿ÂÂÆÅÅÉÌÌÎÏÏÐÕÒÓÕÒÓÕÖÖÕרØÖÄKLQRSUYb`bfdddjgiinqlhecafeflnkttorlnijnkos{}~xoeWUUPNPROMUTSVZYOSPQMAFISXadnfgjgf^ZPOJBCAI9<;BEQSchemprwrrrqmcdf`ZSIIG:CA=7:<>7680,222:>9CSYRXYYis|¥§®®¬«¤yt\clrw¥°°²µ²µ²³´·¶ºº¶®¦¥¤¢n>?ML-#-7).%+2-33,/1-98<>=4@-.C62Rj>',86.34CEH;`kB4%+/3]^hnuldjL5,'!1Z@So}J #,=O3Krf8AN44OvidIe}mlf8(:)*-2.0**,+)*#&*%)%&..20;>=>GQRT[\WW^cillwrux|{w{yzy{|~~{~~ ¤©¤¤¦¦«¯±°¶¸µ¹º¾º¾¼ÀÁÄÂÅÆÈÉÉÌÍËÎÏÑÔÕÔÓÒÔÔÔÖÕ×ÖÍYFWQVU^\Ybbafdijmgmknpiihiecqoqtxpppnlqrnmporvqmhc]ZSTXTQUSU^[VUPUUOMBJFNTW]dbhkq[eRPIMGFBF=B=@@LQ\ijinmoqwztvqjli\XNHDEB>>?9=A<3542.//855:BHOPWTXct}¡¤®¯¬ª¤wma`iu| ¦©ª¯±¯²´²µµ³´´·¶³®§©¡¡m=9FQ-*/3*3-7JF0++)826?ED:8=78@>1JwO+&/2*20<<FI[]94&*+6IYfbk}nyc3'-$-N_Hil0$&0QT?Z|\.ON1Hzy_zw>5`uiqK39.-,58:=A99/')('%+')2:<@JDKSNXTVYc_^fnsrqux}{zxxxz}y~|~}|~ §¤ ¥©¤ª¬±°´·´¸º»º½¼»Á¿ÂÄÅÉÊÇÉËÏÍÍÒ×ÕÓÓÓÓÓ×ÔØÕÕЮfGRNOR\Y[c__`edmmiqompkdikknjxpstswoxqornmippnohe`YVWYZ^ZW[ca^U\ZWOFJFNMOW]_hmka`[XaSOGNILE;BA;IO[dlgrojruysomhme`[TNKJ@?<<:<;=@653?711985.@BLSVWSctx¤¨°²±®§ycckry¢¨¬®®µ³³µµ´µ³·¸¶³¯ª¦¤i?>OE2190-*,98546)*.17@CHJ8@48@<+>l[5$8-(//8>T\^S7.,+'5I]pZJ||wh2$.#1X[_uM)&;9XI9wy:1UL:dxbz}b8?opaV55-,+,-1))(% )%#,+599AEHKMTWXW^`edbilotsxtvxvxzx{z}|~}}|~|} ¡¤¦¨«§©°¯¯°±¶³¸»½½½¼¾¿ÃÄÆÈÅÇÌÌÌÍÏÑÔÒÓÒÒÔÓ×Õ×ÔÓÔ¼|NNKSVQT\\abbdflkmhrmnojhnlsrustsqtorstwplhmffgfb_`[Z[Ya`a_fa`[VUXNNMQPPVY^ffffbfTO[NNUKJI@BA>=OT\fhlmuvwy|qpjhgdbSREJFA;88=>A<9787:/:::7:9<?INPQQVmu¥«±µ´³¯ª¢{rfcmo{¤§®¯³´´²¶´·¶¹¸´³«§¥ ^C;IG7518/:&.3.0:#'/31:D85;K11<569Pc=,3.+4029J`kB*1-'(.>dqZ=k}{vN+&(#Emile9"&<MITt`.4ECGqgoyfKRhP\C2%&$*(N7#&$&,-*,35795BFNTU[XXefmmkknurtvy{x{||zz}{~|{z~~~| ¡¡¥§¥£¨¨®ª¬¬°´²µ¶¶¼º½½¼ÁÄÃÂÄÈÊÍËÎÏÐÔÓÓÒÔÕÓÒÕ×ÕÖÕÆRIHMZX][^db^dgflomrokmlooptqytvvrsnrslptpmkghge^\]^Z\behgedh_WV\TOJTSPSV^bljb_]XQTKLNIRKM>JGCDR\bfztou{wunkjhd`]TEGB>=><;6>;682393322B:???=CLMOLZmv¦®³º¾»º³©zm`kn~ ¥«®°´²±´³´±¸¹»¹µ´²«¦¢tYF;EG;JD0/*'26)-6/+5849C>84::===23@dP11-'-).=Dea7/(.*&1Cdoi=Jv{h5!''$1dmdmD-# )=bUtvG"0BHfqjvxrhTLCHF)'$%+%6-)('-0;,..589:CNOVU[bakqppnoopopvux{{{||}~|}} ££¦£§©¥©©±³°±±¶¹»¼¼¼¿ÃÄÄÂÅÇÊËÉÏÏÔÓÑÑÑÑÐÓ×ÕÕ×ÔÌVEIQRY[\\bcdfhhpnokjmsouqssuuyy{xtqttqqumjjekgegdbaa^gjmjjgcb^XVRMQTTVU^acdaUOVORKDDKKMDQJHLBNTYbiqsqvzyyukjom`]SMEH;:9<6@86241835--559:C@:;@>CGJSfsª·¼ÂÃÀÁ½¶¬uhaju|¤ª¬°²³²³º´´¸¹¶¸º³´¯¦tME9-@I?=46*1/54,30.+;80;A785564@E:05Z`7/+./%(AInd3/#%)()<`pq?6izN0*).0DhdvPG);WY`f2$+>JeirpkTOD@5H,),0$-/.*-20+/55/36@DKRY\^e_koqpuurrxtuxwyz|||{~|~~} ¡£¢£¦¤§©©©°³²´´³µ·¼¹º¼¿ÂÅÃÃÆÇËËËÎÏÒÓÒÑÑÎÑÓÔÕÓÔÒή`DCIQRXX^cbdhhiklpppqnnvtzwwrs{xsuorqwmoolfjhhbhda`ebjhoqmkk`a[VSKKPQV]^]ce]SNKOGFIEKGJIIHAJNQYafnwss{swwpjggc]YSJ@D8<6<;695146/+0/6338:994=A::ECGfu¢±ÁÃÈÈÈÅĸ£}igpu¤©±¯±²´°¶µ´»·¹¼¹µ²«ZC>15:=7-;;0,7>:,-/,/935?C468947=C=20MeT1(,05'=V}n;C&41-(9gjwB/Se:72('PqcwwFL<!%"/CRJ~V+$)5VR^jxjA1-&=4',3((2&53*-.131.9<MQS[]dcemmmpssvsrqtvuwz|~}||}|z} {~ £¢£¤§¦§§ª¨¯°±¶³µ¶´º»º¼¸½ÁÂÇÆÇÇÉÊÈÎÎÎÑÐÑÑÑÒÐÒÕÖÔÔѽwFBLUPUa]]fhjijhnomnmrr}uzxvtyytpuuupvqppokokggdbbbdlpppqijd]\[YSUP\[Zbfab][VUKLDA?IGKEBPBGNMWdjpqwru¤svuqibaU[VSFE>?<6::9A85788275311485417D=@A?H_xªºÅÈÎËÉÉÆÆ¼°hczqz ¦¨°°±²³´·±µ¶º¸¹¹µ±¥wgQJ96??7031.&*:5-(7-,427DA:228<=;?=/+@Vi8))+)+=jnC1#//03FtlxC3?v |T>6),GUddNHN0 #<U@QzL2"-<IQ]s}h?,)7D.)%'.7/88/022612=KLT[^gbhjsosqttyrqrusvvv|}|}|}~|{ ¢¢£¤¨¦¬¨©¯±¯µ³³µ¶·º»º¾ÀÁÃÇÈÈÉÊÊÊÎÏÎÏÐÑÏÐÏÍÍרÔÓÄJ@QTQYSQahgelkiqgjlprpsyuwzz|srtsrqrsttnopqkgikfdgioqxtwnifabXUUS[bba_dabVYOPC@GEJGFIFDaDJVRagmsvyzz{vrommca[WQJAB=<6893:>1373728A@//8>=317<?<=IJh{¿ÉÈËËÊÇÈÇÀ·«ofos ¤¦¬±³³´²¸²´·¸¹¸¹µ¯©rg\?;876,39>1+41..+/,6/6<<4;8489HA>249FhL%%*-0FscB0)134)>tg|J>@el=1*$$8PgtY,LA# $/UPAl e8$):VCNh{n`M*4S1%,+($)0027068=JNXW_^fgfkprqtuswtusssuyx|}x}}}}y}{|~| ££¤££¥§®©¨«°²²µ¶²²¶¸¼¹¹º¾ÃÅÈÇÅÇÌÈÌÌÍÎÎÏÑÑÑÏÓÐÖÕÕÓÊ¡TLLPPUWU[ZUUZenmjfliswxz{v{zvttwtvosrsrtkskkkikgmnqurutqpiic]]XVW]a_`cedeVURNDCICCOAAGJFGP_Yfimuz{zzvwnklh^[ZNOFI9@4:8?:9736<897:FQ116770/46:;>=Gi|·ÃÅÈÌÌËÉÈÇÄ·«shsp|¤§¯±®¯¯¶´³´²·´´¯²¯§tmMD=41'1=N8):03(04*@B646;4>>?B:AM8(24Z_%&/,-QVE0*13.(Fsj@AIRuM+*'&,>`le-<L8&'*MNDGk~W+*;X:UbrRQ_[IW0+0 #&%)'/419=EFOWV[Zefllllmqpruwvzuwwqv|y{}~{{z|||} ~ ¤¢¦£©¨ª«¦©¬²¯°·±²·º¸¼½º¾ÂÅÆÄÅÊÉÉÌÎÍÍÌÏÑÐÑÒÓÔÕÕÔÔÒ¯f?HNSQYc`^dcdhiekinpryvwv|vv{wvyvyqrttrtmsijnlnooxwzyxtqpkhaa``\`_`cbdZ_`ZONNOIGJKKKWLELPRXfrqsy|z|{vtljndY[UHM;>:8903=B>551-1>;CK\00415825:A7::IhÀÃÅÇÊËÊÌÉǺ²¥{ers¢§¬±¯¯³°¶³²²¸µ¶³±´ª¨{vVG96./-9A007?1..?0QA:<68765A>;?>B(/1Tp<(1')SP>3+/*0,Sup}8@VJhS.)%)*1RduK+;L='':PVBGmo:#2_HFWyi>_soc*#%"$)*,24<DGOOVV_ejnhlooqmlquww{tvwrzzy~}{}}}||~~~ ¡¢¥¦¥£ª¨¥¥¨®®±±¯³²³¶·º»¿»¼ÁÀÅÃÄÎÈÌËÌÌÍÍÎÑÑÒÒÓÓÑÕÔÖÓ¾~BGJPPY[ljgeakg_dnqjuyqwyyxvxxvzvtsrsqumqnkoppqqvuz{{zwsmie^]Z```hgca`SZ[SNRSTKJNP\IHFRUSYdknxz||}|vtfjl^]TQJF:>37314799:K83<GFGMV//6416427;66;GjÂÄÅÇÊËÍÈÊÂÁºµ©~gnv} ¦²±¯±±µ°³´´¸µ´°¤¨ q]?;44++7<'&174,,C/1?B>5<7B9?MAFGP2.+BjG73-.agMK;*2/88Zus|/:WJO]p>,+3'-Ueyg.->O8*2MZFFOaW,-HN;Wv|UdnxP1%##"%(,-2=?HNQ\\Wbbijfekkwpmrxvuxsx|uvyz{|~|}~|~ ¡¡¤¦¥¦§¥¥¦§¬ª±°®³³·¸»º¹º¾¿ÀÃÅÆÈÄÉÇÍÏÎÎÏÑÐÑÑÑÒÒÔÒÔÒÆLNQEUUXUYkcff`dighpvswxxtuuy~vzw~wrwutslqqurotxy}~wvpkia]^`]^bggbZ[USXRYVWMXUINNELMNPXbhpvz}~y|uuhkhcWWQQ?<841/,.22483E:<GMQQZ]00846518>36:?FhÃÃÅÇÅÈÌÊÇÅÁ½·ªhlu}¢¢¨®°²±±°²´±µ´·³·²®¤y}e]34111+/8+)5;4)J623<;-:A6@;KWETBQA989AKG7)3fYJK6.039?Piiy%2^MRD ^1*%/8VzcO3-HF77:\[=@?X4'5LNQo|GS_vvP/!'$%+*07:>HNPYV[_aeejkiputstrx}vwxyuxxv{z}~{|~~ |¡¡ ¤¤¥¢£¢§¨¨«±±¬®³±¸¹»¹·½¼¿ÁÂÄÃÇÈÉÈÉÍÍÍÍÒÐÐÓÒÒÓÓÓÔÓÌ ]DOMPQUSVY^bhbcigjqspsvzuyv{{|{tzstusptvwwxsu{~}yuqjg]][\X__c]VYVWMOVOS[UNWPKRIKNXZ^httz}{tomi`^XOIE@;A6++.:6679BA9BJM`ZX^55//55167<258?`xÀÂÂÂÉÇÈÈÆÂ¼´®hrtx¡¨®²±¯±²µ¶±³µ´·»²ª¯wigVV43870)4+-+27;/*79<9B59G:?=MSHXHNF006=AP<0; L<E=.34=>Lnqy)*U]IGpsB+"0:Pd}d4232CF8M^Z@A<>(35MKQhP>P]|_/#)*'.<?EJJMNYZ^]ioehknvrqvnzvwyzxx~z}z{}|{~~~ ¡¥¡¤¢¡£¡¦©®©®®ª¯±·´»½¹º¾½ÀÂÃÂÅÅÈÉÉÊÍÎÌËÏÏÐÓÑÎÕÔÓÓÔÒ²iHHMUUV\[\Xbc_`fgjjpqusspuwy~~|z}qvusovxxu|{} |}vsoffd[^eY_^cZWQUMSKKTTVVRSQSMKRZWannuv~|~{vmmg^TQQA97058.45145:37?CMSYZ]^Y--11411396837CVwÀÄÃÅÅÈÇÈÄ¿¹³¬dmo}¡ª«³°°±±±´³²´¶¶¶´¯«sc`VN37;B-&+$',9?9/+:H;2M;8C5C>LN@\FKN3-65>TD3M@1E=/1D>8Qvuv*)J]JJLgz e=(+9Mw{i80&#'9;MYVJ<5E,))77<_\JMWf\12606GHNO^SSY\[ailmmpqtxuwrvxy|vy|zx~z||}}}~} ¡¨¤¢¤¦¥¥¨¨§«¯±²´¶¸¹¹À½¾ÂÀÁÆÅÄÉÌÈÌÌËÌÏÎÒÐÐÌÔÓÔ×ÖÕÀ{UKPSVZ\\`ZV_U\dknhussrkux~~~x}y{xwywyyv}{utqg^[b\^ZU\WQPJRPKNYUXUVXVQSRMLVf^iov~}}yne_VPMG;8706,3040458<=FJQX]dfa`**1.6.10<4,57?Qo¿ÁÄÄÈÈÆÆÅÁ½¸³§hmw ¡©ª²±µ²µ´³¶µ¶µ·µ³¯®¢xIWZ?/8F=0%-)*.>A<((5M14@8DF7@?MG<LFJU8665<UVEi¤v<.;H8&G>4Hvsr+"=ZJSEN]wY:7-G|db2&.*&2==[CRJ?CA-(3+8SnE9KOklcrY783=OQQNTXRXZdcjhinpptrtwuswz}yz}||~{~z{~|{~~}} ¢ ¢¢¦§¨¥¤£¨§©©¬¬®´´·¶º¾½ÀÀÁÂÂÃÂÈÇÈËÊÌËÍÎÒÓÓÐÑÔÓÔÕÔÄe[_]RXY]^[UW[daeokgnmvpu{~ ~|w|yy{yxx~||sqic_[ZbYWQWQLOHJKOW\^_UYYSUQUNT[^eisu}|wuh_XNNF?9514--0-/4-45:FEOP\achdb++635.13:3-144Nl¸ÃÄÄÈÅÆÇÂÁ¿¶±whnw¤¢§°µ´³´µ²¶´¶¶·°²®£~M^^D84G0+&+&'6=E;!%6H*.JF>U8A?IF8EHDT@859HgaF [945LC%2:9Hqqp1'/QMJCG?vv\:0>}]U-$141'01DAORC@F.'643It`-(>^eIQyY99JSPRQS^YZZ^edkjlnmpppyvyv|xxw~{}z|}|}|}~}~~ £££¥§¥¢¥£¨©©¨«¬®¯³¸¸¸¸ºÀ¿¿ÀÃÂÂÁÄÇÇÊÉÊÌÍÏÏÑÑÏÐÔÓÒÔÓÌuloe^^X][[Y\a^abkgjiex|~ ~y~}}~x|{wvkd^U\ZYTRNGMIGMEPVYZZ\Y[ZSVRPSY`]fpv}z{{wqe_TJ>;::922+))1-35:CHKR^[aidgil++635.13:3-144Nl¸ÃÄÄÈÅÆÇÂÁ¿¶±whnw¤¢§°µ´³´µ²¶´¶¶·°²®£~M^^D84G0+&+&'6=E;!%6H*.JF>U8A?IF8EHDT@859HgaF [945LC%2:9Hqqp1'/QMJCG?vv\:0>}]U-$141'01DAORC@F.'643It`-(>^eIQyY99JSPRQS^YZZ^edkjlnmpppyvyv|xxw~{}z|}|}|}~}~~ £££¥§¥¢¥£¨©©¨«¬®¯³¸¸¸¸ºÀ¿¿ÀÃÂÂÁÄÇÇÊÉÊÌÍÏÏÑÑÏÐÔÓÒÔÓÌuloe^^X][[Y\a^abkgjiex|~ ~y~}}~x|{wvkd^U\ZYTRNGMIGMEPVYZZ\Y[ZSVRPSY`]fpv}z{{wqe_TJ>;::922+))1-35:CHKR^[aidgil
− examples/src/simpleTexture/data/ref_rotated.pgm
@@ -1,5 +0,0 @@-P5-512-512-255-_riuV3#(.,%*/L²oRÁ¯Y**-,8LB515?B13>I[M6>C5436311++-6CJOUX]lotvyx{|{{{{scD62BRYbs tux ¡ ¡£¢ ¡¢¡¡£°·ÃÊÓØÚÝßÚÒºE-(-1-*)*+().23565441313.+),17452-*41//<>;;=FKJNQXiw ¢£¤¤¤¤ rTUTRW]\\[[]\XZZ[][XUVUTTVUSXcgoy £¦§ª¥¥¦§¨©¨§§££¦¦¥¢xtpd[RLKLKJNSW^iaYZ\]`]]`^^_^ba`aa`Tlw{~[<*(,)*.C´yoµ¢[)/B72AE:2/5=72MgZB5@C85650-,)+/4:HOSV\gntuwxy}}z|yubH31CRYcq|{gmrtw{ ¡ ¡¢¢¡ ¡¡ ¢¡ £¡ £¸ËÒÓØÚ×ʪj1,+-1.,+-'(+15133322230-.0),02760-+++-258::@FIMOS_n{ ££¤¥¤¥£¡TTTTV\\]b[YXY]\[\YVTTTTSSUQR\cmu| ¤§©¨¥¨§¥ª©©¦¥¥¦¨§§£ }wqh`]MNMNNRTWWY[YZ\^_]]bcc`cbcb`a_U`}¤xeM5-0,4C©£ i;)1N<*@G<416DRIhubTKNOA<80./*+006=HPST[fmsttuz|{zyyubG,/CPYcr}gffipsux ¤¡¡¤¢¡¢ £¡¡ ¢³ÁËÑÖѽU2*).((,+'&)/26033360550,++-+16:2..+)-.:::9?D?FNOWfs}¢£¥¤£¤£¤ ¢wUXYV[Z\]]\Y\`[[YWWTYYUSQUVVYclrx~¡£¤¦§¨§¦¦¨¦¦¥¦ª©¨¦¤¤{umd]SONMNOOQSTUYY[^]\__deacbcefccWPg~¨nnz_IGMSe®§fP<&%4W;,8IIA>Ji{qkylojR@=302.,-17@ISUZaimoqtuwvz}}{{u`?-/?TZcq{ tphffgmrtwz~ ¢¢ ¢£ ¡¡ ¡¿ÈÎÇ«zD1*-/)&+0*')/0113217552/*),214675,-',0-.9=9<CEJLOZkv£¥¥¢¤¤££¢][ZXYZZ\\]\ZYXUVZ[V\^XTSTSSX^fmvy ¢¤¥§¨©¥¨¨©¨¨¨¨§©¥¦¢ yqh_YNNKKNKMOTWYZ[__aa`aaccbaeeceZRUjq¨sn uiqr¤¢i<%( &CZ6-:Zdaco¢ xUXdhcx\FA930.3+/4<EMR\almqtuuvy|~}}{uaG,):O_ho| wpprlgffiooux{| ¢£¡¢¢¡¥¡ ¢ ½Ä»`8/-.+-*-*))(+0251/2424./-*+/25942,,.//--458>?CNIO[m{¢£¥¥¢¥¥£¥££YXX]ZY[Y[[WYYTUWY\\[WVUVUSX\birty ¥¤¥©¨§¥§¦¥§£¥¨§¥¥¦¥¡ }tkb^WQLLJJNOQTWYWY]]____cbddedadZUJVl ~ozzgHWz¢T1%$$/QqIE`y|}wv|~L:>C?<HH<:@3.',-.29?GNU]iopouutw{{|yxs\B-+5G_ip| ~uspppqhfffilsuywx}¡£¢¢¢¤¤£££¡ ®´¥S3/.+&*,.*.().14851/420/0,$+0249300,+/320105:>>DIQ_m £¦§¢¤¤£¤¥¢ c[Z[ZW\X\[YWWVVZZZYYY[ZWZWWX]fooy} ¤¤¦§¦¤¤¨§¨§¥¥¨¦¨¨¨©¥zqgb[SNKJMLOOSVYXZ_[`__`bdfgedccWUNRaxzp_QeyBJª§Y>86AIlvr}aELUUK5;<;428:5=70)**-09@HNP[hloqsstyx||vws[=+(/E^ip}ywutqpprmhhgedoppruw|~ ¡£££¢¢¡¡¡¤¥¢ ¢ ¡¡nI3-+)+*''*2/-/-6665630/1.*&*278;411.-1550215979?EN_p¥¦¤£¢£¢¤¢ ]\b^ZZYZY[U\XWWXYXZ\\XWYYWUXahkr{ £§¦¥¥¥§§¦©¨§§§¨¨«¬§¢tli`XRKKMKOOOVW\[^^`^^a\cadgd_bTZNR]k~}lu[>7f mjº¯vjrury twiY@66AD=2:;8-1320575,.*,19AKJN\fkorvvtutwywyv`<+(3IVfo~ xwyyvusqpoohghfdhiknqtvz} ¢¡££¢£¢¡¦¤¡ eC/,,+.+(&(/3.11234787341+)')0::842-/0/200475<<9;BJ^o¡£££¡¢¡¡¢¡ hZ\]`ZZWW[YXVUWZY\]^^[UY[WWZ^gko| ¤¤¦¦¥¦¥¨«ª§¨©©©«ª¨¥¡xrlfYTPLIHJMQTUZ\\_^\[`bbcba_^bWZQOUdnzwhWUf¨º²¢¥¥]GAPGE9436J>0;855222022110.0,6=GLRYcloqsussttuwuoZ9%(0IYer} {{ywxywutrtnmjhjiegefhkkpxx ¡ ¡¢¢¢ ¡¡¢¡ ]>.,*,01,%*20//3344005541--)+4;:;41..3631009B@?=<DM`s¡¡¡¡¡¢ _\`\W[ZY[YWUXYY[]^^`]YYYUPY\chpw} ¢¢£¥¦§§¦¨©©ª©ªª««§ª¦¤¡}vqi^VSQHKJNRTTVYZ]]__^`abcccabSYQHO`q{w¤°¦¬©x[sV0&(9CB:1,0BB;>:35023/0+)0.+.24<FIQYdmqpqtuttuvuunV8&(4KZev} {z{zxwyyvsrqoqnmnkkjhgkggjpuwx¢¡££¢¢ ¡£¡ ^;,,).,++)*6--.3655417652-++*56883./13132249?<:<>AN_v ¡¡£ ¢¡nZ\Z[YV[\YWX[\\^]\^_^Z\ZVUXZ^cmuy| ¡¢¤¥¥¥¦¨©ªªªªª««¬«©¦{rrc[TMJHKPPOSXYZ]`ab]_cfgaccbKPMB@Vct{fB6PD$ &7@FC:5-5F:B?62.54./-.0-1..0<EHPZgnrtvuutvvvvvmN0%&1HZhv ~~yz{ywxyvstqqpmnmjjkjihedgloqvy{ ¢¡¡¢¡¢¡¢¡|^8/+**+.*+(,./11356653442/-++2583/-/0001158::7;=BGTfy¢£¡¡ YWWXXWXXWY]]\Z[]d__][]^^\\``agos{ ¢¤¤¤¥¦§©©ª¬¬«ª¬¬«¨§¤{trj_WPNLKKNRV\[\^^__]_gdhc`cfQIOH7BM`~a^N94(.L<"!4CC=;=*2@;<C74.2323,+..4227=EGNXcnsuxyytswxwtkK0&'3EYjw ~~}{z{{y{|xutsqponlmmkkmjffgiknrtx ¡ ¡ ¡¡¡¡¡yW90.,*/,)*+*,15687<56451--/+/67<?6-+,324695479>@?FZp} ¡¤¢¢ rUWYXZXXYZ\[Y[][^aa_\a^ba`]\aempy¡ ££¥¥©©©««¬««°¯¯¬ª¨¢ztog]VQLLKORTYXZ^]]_ba_``ceba\WSPA9>J|qLXm|~zqtj^I.&),,I;$#'2B>62/)*;<<?82/10.-+()*15:<ADJPVcsqtvyytuywuhK1('5FZlz} |~~}~yyxzzzywsrqprrlmmnmnljhhgfhlptx| ¦¡¡¡ ¡ tO9//-).-,*(*.555<2/47621.,.*/7:>@7+*054568147:9:;I\u ¡¡ [_YXZWYYYZY[]]\]b`a_`^bca__]`hms~¤¥¥¥§©ª«¬¬©««¬«¬©¦¡wqk`YOLKMNPRVXX^__^]b^a`bcaaZNNE@8=LiaHCN\ibL??9Xe;''+-E?%)*4>?=12/,:;57/1.142-)&,*/4;ACFHRYckpuuxxvuwvwshD/(+6L`ly ~~~|~~~~{zzzvwwwvuspqtopnppjmhjjggfhnqrx}¡¡ £¡ kG1+02&'&&-1,.72464545533.-,,059;90++066334245937>M^w¡¢¡¡ |^YX[VZUY`]Y[]^_`^^`b]a`__]]^einu~¥¦¦¦§©¬¬¬¬¬ª¬¬ª©¨¥}usf]XRQPKMPRUXW]^[\aa_babbaWGA99:EL]q][YTN>*&$(>\e8#)&=:)&+0@8<876/5=72231010,+)**,39ECHLQVbqrxwvvvtwttp_@-(+4L]oz}|~~|{{yxy{vvvxurqpnmmnplmjmiiiffjnqrt ¡ ¢¡kC,*.+'%%)-+,-1883396334/.*,/04876-++-56588393457BRez¡¡¡ \VUVXZYZ_\Z\]]^`^]_cb_``^^]^cgkr}¡¤¤¥§©««ª««®¯¬«©§£|vna[VQOMMNQOWW[\[]^c_aba_bbP949@Q\`k xnileL1" "$,<oX7'(06(&)7??<752-.8:5:2..11+()&-,05@GJLQXbmsvtrtwsuwwr\7+))5J\qx~ ~~}~||||}~z|ssvxvttokpquvqmkrifgedflnmov| ¡ f@-)))&#&()*+/69:63697961.-,+.6;:4.,)+01555893176ASl{ }VWVW[]_Z[^X^_`^__``ea^^`\Y]adipx~ ¤¤¦¨ª©©«¬«®®¬ªª¨¥¡~xsh[UROLMMLOUUW[\]^b`_ab`bufJ86BQg[f~~}mefdL-&"&+0LmZ()01(#%&5<=:5.,,:8783.)*.*%%'.1029CLOPXajpurrsvuuvyoV7,*)5L^q{~~ }~~}}x{}zywvwxwsutqnrsysnmmnjkhgghjmnrz|_9*.($$&('%+018835665684.,%'*/6:96/.*..3843254237@Sl{ ¡ ¢ bY\ZW[]X^`\^``dbaaaba`^d_`_^afouz ¤¤¥¨¨ª©ª®°¯««©¦¤ yrj_WRROOMLMQRY\^^]a`dbccazeK<GRejnt~|zaReh^J1&&,9_oN+12,$$&14691,).:<5330+*,)#%%+.035>IOMXbjqtptnuwy|wmU6*(,?Tbu|}~ ~~~~~{~||{yzywy{xutuupqrurmnlnikliffjosuz~ xY;/,)&+&(((,.4;944224430.+&&-29:74.,05.-6344222/9@Un ¡¢¢¢ ZZ\XY\[Z]]]fadebbba`_^^^]^^celsz ¡££¥§¦ª¬««¯¯®¬«¯«©§¤£vpf`WVLLLONOSXZ]\\]ab_aceueackm|}{}zuzziae{}[>0,->^n78>JI'#,-/84/.*2A821///***&&)-889=GPRVagkspstuuuxwiM4,22EXgw} ~~}~}|}~}~}}zzz{ywtuwrqptsmmlkkijijjkpsvvv|zZ7/&'()''(+/28:94202542/++'%07;;83-*11/13244/134:FYp ¢£ j_][\[^^`^]aabdaabb`_c^^a^_bdjpx}¡££¥¥¨ªª¬«¯°¬¬¯««ª¥£}rjaYVPKLNMQSUUYY][`a_^^apxunrx{|{{uq{nw~pX7.4KaN2Q8#-13:;-)&095/1/14**+'&()589;GUWWbflptruvusus`>+(3BO[ju}}{~}~ ~~~x{~~|y{{~}zxyzrsqqprrrqnjpnkijjlnpqtx| vV5*%$&)'*),.48463501654/)*()-29=92-.16925:930/48;Mav¡¤£ \ZZ[\^]_`b__dfbaac`bf`ab__ceknry ¡¡£¥ª«©««¬®¯®¬®®«ª¨¤xog_YUJLKNQRTZ[[\Z\^_\]\tpmjkrtz|~w{_croZHGYgCaK%+0285,'%(20..11*,(*'(-,-2;:BQWY`innsrtvxvvwV4(&,=Palu{{{ ~~~~~}~|~~~yy|~xuywsstusroqpnmopnjihjlnrvy~ oM0)$%(.,*,*-3443354=852,,/,.-08:61,,.6737;A41,-3?Rg|¡¤¨¢ q^]\\b[``abbedddbeedfaabbacgknpu ¤¨©ª¬«¬®«««¬ªª¦£}sjf^UNLLMQRSWYXXZ]\_]^_lsaQPbcoyk}g^`\s~q`drkd¡£M)-0035.'(+20++/.'.,*+.)*048<CMVZbhmqsrpt{xtmP,%",CVbmw}{{ ~~~}}~|zy{|xy{yxvuxxroqonlkkkighiimpsux| oD,,)&*+'+**.1035213673/,,.+-.6>754/,.11200220+,07Kh|¡¤¦£ ]\^^]]`__bbcbcdccbb`aabab\ddkmqx~¤¦§©¬¬¬®¬¬ª«««¬°¬¨¦ xphaYUOLLPRQUXYXZ^_^bc`MMJ?<?I_v~hx{zqnotu}~sx|{\(),/7:4+0*/31-0-..++*/,+.39CDLT\cjmrststwzwfF*#$0G\cow|z|~ ~~}~}~~}~||}|{zv{ywqqsqomllkjhhhjmorsv{lF1*&**20.-*,1345545272/-,)&.056;?4)+-0221/./,(+3:Oh¡¤¢¢ ¡ u\^^a^a``ccbdcceddbea_`_c`bfhmru{££§ª««¬«¬®¬«®¬¬««¨¦£¡ ~tmf^ZUPIJOORUVUZ\^^bdb214859?JatqQ`}wztcb\]\`dszk{¦T%'117>4'.+03.*.+.-,*)+)(,/6<DHTYagmrswsvuxu[5%#);K]fmux|z}{~ } }}~{~{}}{{|zy|yvuronklmkljjjkkkos{{{ lA*+(2CA96.+,/465:622337/))&+.49<8/)),2845202,').6Wl¤¡¢¢ ^^_bab``bbccbbcdb`fe`^_b^\efhlrv}¡¡¨ª©«¬¬ª®¬©¨«§££ zqib_UQJFKQLRRSYY[^[ba-,---17E]ewzeaprakiaRC=;?Gexxv}«¦ª¬S%%00894+%)35/+*,-2(%(+))*,5@HIRZbhqttvtuuuqQ0$(2CRbjqtw||{|~ ~~z|~~}~~~ ~|{y|{zywwvvspnmponolllljjolsw{}~ a?108BA81-*+/0637>6.36212/**,38730+++..67974/)!%,<Vo£¢¢¡¡ {^_d`ccceebdbbabbbceda^b`_aeelpv} ¥¨§¨¬«ª«¬¨©«ª§§¤£ xmf^VOMJHPKMQVXXY[Z`c1-*&&).=KZfq{ytwxohlg^KH@>ANgyx}~ª£ Y/'-2244*$)34-')*))(('(*)(+8EHGQWcipssr|swrcB)#+8P\fmruw}}| ~~~}}z|~|}|}{~}z|zzzzzwvwvvtspkmpooonlljkkjpuy{| ]:-(=N:,+')014768<5556436.,..15711+,.145<923.(&$,@Zq ¡ dbcabbcbeffbacbbf`cfcaba__adintv¡¥¥§ª«¬¬«¬ª©«¦ªª©§¥¢}sle_TNJJKIMUSUWXZ[aa?2$!"(39E[^`qvutttpa]^M;?6JTY`wrnd7$)2022+%'1?1***'*)(&(*)(.;HJITZahqrsqusspX5$%.CYdhotvwz||}}~~~~ ~~~~~~||~~}{|}}|yyyy{yy{zwutrpnqopmnmjjkmstvwy}[9,/.)+/,),018778657632330/-413:221*/0549710.)((0E_x ¢cb`bbb`cfdbcccbcabeicdcccafgmrsx|¡£¦¨ª««¬ª¬¯ª««©©ª¨©¨¤ xrnf]QJIIGLOQTVX[Y\]:;2& '4>JV\behcb~qhYG7576BE<NUJWc~=().061)$&-31-('%((%$)(+018GNLOW_fptxyuwtlD($#5Padlsvvwz|z{}}~ ~|}}|~~~{|}{~~}|}zz}{xxy}|||wwvpmpnmookhjmoqsuxy}xT2-2+*+,+*//16:767986574/-+-04::511+233699210.++7Mbz ¢¢ jaabaaadeedebae_adefdbbdabeehmpt{}¢¥¦ª«¬¬¬©ª«©©¨©«ª©©¦¢ ypa]RNLHHJPOTXXXWZ_*:C<2.7BJP[m^HKKlr~i[TE:+10BPKJ]IQSrzP'(*/2/*''/5-+(&'*)%#('*-0<KMLMS^gktzyuso\5"(,BXdipuw{yz{|}~} }~|~~}~~}}}~}}}z~~|{y{}y{rwxstqolmnihhmnnpttv|~sO4,-%&,+++-07=8:9:?766940.--.3=9410//337:8320-,4?Rg|¡ ddhadefedcabacbcbaec``b`bedhimqw{¡¤¢««ª©ªª«©ª«©¬¬ª¬ªªª¨¢|sc\XRMFHHHKQVTUZ[^,,4CPQKDHJSWXTcZqkn~xXTH@2.7@U`iof]bd|R-*)-1-+((02-*(',.*%$',(+.=KLHKRcilpvwuoe?*%*<Rbikpwz}{z|~| ~}~~~~~~}~~}~~~|z{}{xy{zzyxtwturqmnqmohklmmmrrz| qO/''%%*,-)+-7;:9:67446742/-,+055723-,156661-,+.5?Wl qdedbfga`aabaaabdccabbbbeccghkqrw~ ¡£§ªª«©©¨ªª¬«ª¬©«ªªª¨¢¢xk_\VNIFDGMRRQSW\_2 "*AWcaX\XIJhvtmw|ldQ:.2;Qguxb^ghxc30/731.++-20+)*++,&('+(*0<IMLMQ_giowxujN,#(1K_cfmrux~|~|~~ ~~~|~~~|}{|ywzztvvvuvupkolkpqskhkhkjpux{| pK0''%#$'&+006325864344B521-,005782000583330.)(1/;Sk bbab`babd`bcabebcbieabddaacchmnv|¢§¨©¬«©©ª««¬««ªª«©¨©¨¤£zqg]YUQGDIMNPQTTX^D.&#'5OX_ltjj~n ~pumG200>WsoSK]gc[8635=<0)+*0..2*&%'&),,,*0:FKMSU]ghotvnU1" 1FV`choswy~}}~|~~ }}|~~~}}{}}~|zzz|ystvvuvsopopppnonlkhjmrryzz}}pK0)($$'&'.0-7779765334941,/-28887.*.358895/*$&*-9Rn tacdeebbbddceb`]bacebcbabb_^ceksx| ¤¥¨©©©¬¬«¬«ª©««¬«ª©¨¤¡¢~vka\UNIEINLMQSRT]WI>2+4;:;R||¡~^gg^`hli@4+4HazM<GDD<5654?2,,+,3580((*%$,.**,19DIPVZadflmrc?&(.;T^dfkry~}}~~~} ~~~~}~~}{{|~~~}{zz{|zxqvwwustqnnqtqonjjklmpqvywz~~oJ3/)$$''&)+,/0<8512/39663/.0335672./547961+(&'*,>Vp cedadc`bfcdda```d_da__`bd``bekrv~ £¨¨¨¨«ªª¬¬¨¨«¬¬«ª¥££|tj`WOKFFIJMPSPRZMO\XLB4-%-;Pe{r`ADA978FW{ nU=/08Ve7/511/25680,2//82+*,,&$*,'*-.1;FIHK[efbhj_G1%.8GV_flqw}{y{|~ ~}~~~{|~}}~~~~~}}}~||}}{}yyxvyxxvrwsppqqrmnmlmlomprtuw| nK4-+'&%'++,,.297765349742.).467440-./13840-)-)(-?Wr ycddbccbcfgbcbf_cba`_^d__``dehnrz¡¥¨§¨¬©«¬©§©««¬¬©§¦¤¢ypf]TNIHFELORRRVI?Udg\M8&$#1;B:2/2)($2<KOQ<:.3?^ 1)/,+,054:1+.-,*&'()*&$!&'//.5@KJJP]dgkgeE3+%0GV[bipw{{{zy||} }~~~}|}~~}~|{~~|}~{{{~|}~~~{yzxvzxvssvwwtsspnprolnmnoqrsy lD+'%&(%',+.02494758=:51:2.-153934-./245><85.*&*.C`w¡ deebcdcdhgd`]_````_abb^\_^`ehjqx~¡¢¥§©¬«¨©«««¬¬¬ªª©¨§¥ ~ulaWSLLHGKLQSTVE8=JXfjS:-&$'*)/563-(-.5<HB745/?cz?-1-*-/156-)(.*)&('*)'%"#(/3-5?JGKTcbhg^J1),1=P^fmqvxwyyzz|~|~ } ~~~|}|~~}~~}~|~|~~~z|zzzwyurxxy{tstqpnmnljmpppswzhB'*,%&&%(*4,/154348:24360/+213833.,.157<><5./)0?I^z ~cdfceccdde^Za`_`a`a`ec`aaabgghsz¡¤¦©¬¨¨ª«®®«ª««ª¨©ª¤xoe_ZOIKAIMPQSSL58BI\fkdP8A;3+)3<8/#'+2;?27>D?K]YU1&0,*,.063*'&++,'($*+&&$$,0226>JNOUcdg`QF)).@O]imosuyxxx{|}|{}~ ~~}z|{}}~~~~~~}{}~~~~|zyvtxvsx{ttroruspmllkmmpssvw{{iA/*)&')&*+.0/643537971543234021.00.024>87672,)/2Jb|¡ hbbbcbcccbabbb_```c`be`]b^`defmw ¤¥¨«©©¬««¬«¬¬ª©¨«¬ª¨¨¦¢|tle[ROLEFLQRSTQA;>@?Mdp`KADMM7032+&%)*5@:>FSWWD:8,%'-'',163,%(/*,())*'###&*,-09DKLNV^c\I85%+7O`a`kpsx{xxy{|}|~~ ~~ ~}{|}}}|}|{{}{{~~|yxzwwuuvtsutqprupmkjkllorsuwx}a>+#&%(*),--416776386346343084355/.0.35955561--1:Nh~ ¢¡ aba``babccda```_^ed^e`^^ad`bfmt|¡¢¤§¨¨««««ªª¬ªª««¬«ª¨¦¤ }ri]SOIGHKQQOSN>>:87>Pcg`R;>LLJB=9=<30-6COThslVC@4,))''*066++,+**--)+%#!"#)+-08CGMPX`[J7.,(8KW^^bmqvzzxyz|{~|{ ~ }|}}~~~}}~~|{~|z}||{{v}yxuttstrtutqooqmfjjkmopqxx| _7(#$'(*)(,/144288346679863498654230.17564960-04:Hg¡¢¡ lccaaa`_gdbffa`a`ba^a`^\cfcccgry ¡¥©ª©«¬ª«¬««¬¬«¬¬¨¨¥¡¡xpeYPIJIGLQQOC865453Ehsrl_N9:CA<=IRZMD<CT_poaZRE:)'&2044-,,)***+.-''##&-3;1:CHORV[K6-',;KOXafhsuzyxzz}}}~}|{~ }}{}|~}{z|~~|}}}~}|~}}zyzyxwxvqrrrrrrrrtpnnnkmhllnptww|zZ7-'#,,.,.2*.46431.38547:841173696301113335/4,.5=Nh ¢¡ ehd`_``cc_i``aa``a]b]__bcabdhoty ¥§§©«¬«¬¬¯¬¬ªª©ª¥¤ |tk\UOPHEKOQN>1..045Hcwvuy[C541/7AIG=CTe^[ipeflkQJ1&%$*36/)+*)*)+0+))'),%/0/3@NQVNB3+(-;GUV\djnquwx{|}}}{~}|}~ } ~|~||||~~|}~}}}|}~~}||~|{||zyvwtrutrsqstspnnljlkkmmpqsu{ zU2-(&),0*)1-/0470/22674;984136567210367885622/00<Li uifa__a`d^^ace__`aa_a`\__`_bemtu ¢¦©ª«ª¬««¬«¬««¬¬«ª§¤¡{r^\SOKHJMML>.))(.8Kgvxw{uM=97578/07P`aaYPCC_`YK=+((,22-*-)+,)'+-*)%%)(,),7AMOQG4)%)6COVZ_hrttwyy{{|{}|}~}~||}}~ ~~~~}||}}|~~|{}~~|||}}{~|~||}|~~~}~|{|{xwwvqxvrpqpuvqononkjklklorv| {T2))('),)+*..289830/.8>@@:42365476//50587356323.;Pk fca^_bb`a_`bb]___]^b_^\`b`caimq{ ¡¤¥©©©ª««¬««¬¬««¬ª¨¥¢tg^XNJJJLLPR2*((*1?Sgy|~oh]TIPN;6B^wYd\[PNZsteY>*+02,.'*(/0()(*)'%##$((,;FGHA31).8DQWVYbmrtvxxz{||||}}|y||}}~ ~~}~~|~~{~}}||~|||||~}}|}~}|}~~~}~{{}{zxxvtvwprtortpoqpmljjillnntz|~}uP1,++(),)-73016<>52248;<8617532530,00353248863/2;Qn ¡ s_`^afe_ac`_\``_`_^[__^^[^`aekq{ ¡¢¥©¬¬§ª¬¯¯«¬¯¯¨©¥¡xof]TOMLIGJZ9/,,+.6>Jbp}~oislOKjrbTR`lt}|td1+-30,*)-34-*((('""#$&).9A;51.,+=HOW\_aiprsuuwy{}||}}|{{}}}}} } ~}~|~}~|{~z}|}|~}|||~~~~}{z||yzywtuwsrrptrsoponmjjgjlootw{~ |y{zz~rN1*++),+),/2217:866575333422320530-,-.15578311./:Sn¡ ¡baacdca`d\]^__]]`Z\__``c]`bglqw| ¢©ª©©ª¬®¬°¯¯¬®¬ª©§¤¡ ~tf_ZSQLGHJX:3420/38ATZnr{ ¤sonla]Y`puZ_vzxO0.3/,1,,,1//))%'(%$'',2683-(),7HOSV\bhlrqoswwy{|{z~}}{}~|}~~ ~~~z}|}~}{}|}~}z{~z~|~}y|~}}|z{yx}{{wuvrstppppqnnnmjjihkplrv{{yuvutuwz{~tQ,+,,*)**0/1474756535325.232353230.2111687945/-/9Rl £ v_adaa^_dc\]`[[\__^^]``^]addkpsx| ¡¦©«¬ª«««¯¬¬®ª¨¥ |ob]WQIFFKX425:<=;GZb__kxsi|}r_NWdtiPWh|P002//,*/.-+/+)&%.*'+*-132.**16>IUU]dgjmossuuvvx|}z~~}}|~}~ ~}~}~|~}{z}~~{y}~}||~}}~}|zywxz{ywtvtusqnqnpoonlkiifittmryy~~ {{xrstronrvz| oH.()+**.+./0550655456/33074/1311//-0111896432+*1<Qo¢¡¡`a`_`^`ah[^\[_`_][^\[]]\agcfkqxy¤©¬¬¬¬¬ª««°¯¬¬¬ª®¬¬¨¦¤xj_XVSKKJQ2+3>FS]gpnk\\ew~wln}}stnwzsTT]kh^bu|oD//02,,0.--0/('&$).1/+/0.+*(-;=HOW^dlmmpqtsttuxxz|}~|{}}~}} {}|~~~~}z~}}~}|~~}}}ywyz|xvvvwvuupooopoprnjjjhpunprvx}zytonnlgghnoqu{jF3+(*,+'*+//46543667=CA7641-.1187++2/036:663/*,3:Pp¡¡ }``a]^_^^\]]]a`_\\\\[_^]acdcjmux~¢¦©©ª¯«¬¬«««¬¬¬§¦¥¡|pg`XRLGJW3(-6=FUmwthTPWet}}||snrzmfeleW_qeG6*./0-,-)*03/)&(%'--+-/-)$%+7@FQWXciopstrqqtstuxzy|{~~}~~} ~}~||}~}~{}}}|}|~||~}~{}}|zxwwxxwxzurqrqpqrpkkifjloqrtv} yurjggdb`_cfjps{~ kC,)))+10020049942577@:;820./0686,''/743/2550)&'4<Sp¡ ¡d^acb_\_\^__aa_`^]_\\`_ccgjkmqtz~ £¤¦©««¬©¬««®®¬ª¬¬«¨§¥¢wmhYUOHGQ<+*=A-2;Peh^QQ[aku} zsf[K_tO7.*.0/,*-**/21)%*,()+2.,*&(.5?JPWXZcmpqsusqrsuvqyyyyz{~}||~~~}~ }~~} ~~~~|}~|z}|zzz|~|z~|}||~~}}|z}|{wxwwxwxutuspppopmnnmlkimolptuv ~xuthb`]ZTWWY`fnsw}~ h?,)(*),.5.*177:<:50288445.//0550+)+.41//650+&""';Vs ¡¢ cc^b\Z\^^\^__[`a`_^]b_cfhjgkmrxz¡¦¨¬«¬«¬¬¬¬©«¬«¬«¥¨¤¤ ~tk`XRLFI96/ET4!%+ARTU`edalmqqaivgS4/1.2-+0,+,/-'&.8*,)/,.+'/7>FMSW[afnoqsvvtvuvvuuwwxzz~}|}~||~ ~~~}~~~}|~~~}|}|{x|{{{{}~~~|{~}}~|{|z{y{uvxvtswttpomoqnlmqjjijlkoouw}zupke]ZWRQPOT[clqux|f?.+..--,0.,/-4=;33236972/.--28-,)(,101-1750)%!!(>Xu la``a]\e^[]]]``\__aaaabefjijlptw¢¥©¬¬¬«¯¬«¬¬¬«ª«¬ª¦¥¢yme[VOI91/2Ks9#!$*247K]_dehfg~{~¡¢}vO>3,0.(+%*.//(',0./.)')%'1>EHNUU^ahloqtsvvxwtxzuxz~|{}z~~~ || ~~~~~~~~~~|||z~}}~~~~}}~}~~}|||}~~|{}}}{|vuxwuvtqsqqrpsqkjhghghkjnpsvxzvpja[UPPLDCIRYahmttw{~ ~`;,()(+.5=0).65655323642015.2/0//,&&..023333(# "(;[w a_chb^\\^]]]^_a^`^abdccgjgijotx ¢§ª«ª¬««««©¨««««©¥¤¡}tlaVTS:-,->XG##%..''.3>BIUU\fr{z}qu{yaV?-1,&##+4.,)-11/35*&'*1:;@HNV\afnnqrssuvvxtwxy|z~|} }~ ~~~~}|y~}~}~}{||}}|~~}}z~}~}|~~~|xxuxwvrnprsroooolihfecfiknkosv|{unfZVPG@@<=AOUY_hnprwy}Z5+))))(/,..-15;6835776-021/01/0+,+*+.27201.& '8\v¢¡l]egda\\][Y\^_a]_^`abbcihhiilpu{ ¤¨©¨««ª§©¬«®°®©«««ª©¨¤ {mh^YR2-*13?>'$(44+$&*+)--0:FLYeolm^^qVPUbig^X[`VA/'('%+,,5+'01.*$'&(3787=HRZadhnpqqoqtvuxvxxyzy}{|||~ ~~z|||y~}||~~~}~|~~~}|~}{}~|{|||}}||ytvxxwuunqrrrpnllmjigffcgjllooq{zvncXSG9;756?GNX]einqtx}{X3,+,/,)*.//038:;8455=5.46/021//,,(0,/32257/*$ )>]t¡ ¡ ¡ _`^ab`[^`\`_]^_^_`caccdfighlot{¢¥«¬ª«ªªª«««¬®¬¬«©ª§¥£¡vodYV0/+62-)%+490-)),-.0&$)2BBDEKC@@YjIBKPI75=N[X=.+)$$).2'&)+)((&)-358:AKV]cdgkmmnlntuxzxxxz|{|z{~ ~{|}~|}}~}~}~|}}}}|{{}|ywuwwxuuytnsqrqnmmkkjjfec`fjjlmpy{ zrh\SF984/66:BJR[dfilty|sT4,++,-.,.--/28576969;6/24,-..01*,-300473781+$"'8\v ¡ ¡t^]_gecadbdac__````acdedecfmru{| ¢§ª««¬«©©«««««ªªªª©§¦¥ {ri]V33342.''+/4410../0/**,*@@BIJLEDTvdI<AK6&0AIGF?.$&(*-++(+/0('&),/35=IRX_ffikmoroostwwyzxy}{|| |~ ~}}}~~~}~zz~{|}~~}~}}}}{|{zwwwxuvwtoqnmponilnjghjgbeegjnqww~}wncYK@;3./016?JR^adjrvy~ oJ0)(*,+++-,,*..01322458520.-010.--/414654872*$#*@\x ¡¡ ¡^__`bc`bac_a``dccabcaabchfhotxy~ ¢£¨ª¬¬««ªªª«ªªª©©©«ª«©§£ }oaY4875463.--/4:<438-/)/04;:=AFPX]f{ lIITL9+<K4:I<(#$***+/84)!*..-006>LR[^chjlmktssrqwwy{xwz} ~ ~}|~~}}~~||~|~~|{}~}}|}||{xyxu{wutqooqmqnnmmmkfjigggdfjpprty~ ~|sgaUJ@91*)-,6@HWZdcempuy~¯±¥sH/(%%+,+0,1.-00//5;6362361--./32/(*,/2784252,# %/D]x¡¡¡¡¡ £¡ yba`_b]abca^a`caaadf__bdgimmmwt{ ¤¨©©ª«ªª¬¬«©«§««ª««¬¨¦¤ul_256:;<=7;0(,<QC96/0/-3=E=<57>Het}iKSG2:C7,6E4%'*-06:2'%%+4343.8DNVY\fkhfhkrrqvstuxzxw~ }~~~~ }~~}}~~}|}~~{}|}|{||~|||}|{zwvvtppqpqsrpoolljjjljegdcghhnpry{}{siaRI<3*'*-07;GL[acffluwy{~ «ÇÈÂÀ¹m;"$)+++*+-**00/4452.55;6.,+*+0,,)),655443440*'+5Hdz¢ ¡¡a^^]``_bb_]`bbbaabedcegghjjmqty}£¦¨©ª«¬ªª«©§«ªª©ªª«¬ªª¥ {rd,17349<?B6.)3JKE84845=@L[VA17@TetWRMA-1:.+;9'*-374,*$&'.+.2218HPVZ`gjhhjktuvuvuxv{} ~~}~~ ~} ~}~}}~|~z||}{~~}}|~}{{{yzwy{zwxrrrsutqqsokjkjlijjjdffefgkmopty{nj\UE4,+&*-27<DQZ[[_bhmtu{ «¾ÐÔ××Öȳh7'((*)+/,,+/24403631474)*))+++,))063015571)++/:Kd{¡ ¡ {^^`ab`_``]bbca`bbehdffiijnomrvy~ ¡¤¦©«¨¬ª©«ª«¬¬ªª««ªªª¥ xk.*'*).1=E<8646@K>9:722:D\g^J?CKQXhsp^C883-4@*+,.-/G2()./-/255=ISVXabfeginqtrrwvw| ~ ~~{}~} ~|~~~}z}{}|{|~y{{{{{y{zzwwusrurpsrpponlkojjjjihdeeehkjnpu{ {tmbYN@3+%%&,0.7AFKRYY^bimrx±»´¯¬¼ÎÖÙÚÛÙÔˬw3$(,*)'*)*,21/1375130/,+-/+-../.1252343100..0=Mc{¡¡ ¡¡¡ £¡ c_`abbbbd_^_`^^bchfbdhhklknmouz~ ¥§©ªª©©©ªª¬«ªª®¬ªªª¨¦¢{p2+')#%*0227EB:9<D?455206F\cWOKHFHQfk_NL=-34-+()'40,,0+.224<EKOXW^`fjhlopqpps{ }~ ~~~~}|}~}}~{~|{|}~yz|y|{wyzzvssrqrssronspmmonmkkikkgea`dihlpuw~{si`TC5-$#*304@806=ILSZ`hdlx{{}¬ÂÎÑËÄÂÌØÕÖØÚØÓØØºxE))*)+)*,,/00/02152.+-0,,..0.2302621630/0137@Mby¢ ¡¡cd^ababba`cba__a`ccadegklmmntw}¤¦¦§«©©§ªª¨®©ªª¬¬ªª«ª©¥ }v0+))'&'&(&-?EKD:FI;246249CIHMUPPGLaq|¤vhf\C35,'$'(+/)2620349?FNVZX\^hlklnnmpr} ~}~~~ ~|{|}~{|}|}|}|{|~zvz{zyxwvttttrsrrpmoqrooklkkiiiegfcbfhinmry yrf[M@3)&22*8;1.04<@KTW\\akuyw{} ¶ÉÕÙÕÌÅËÓ×××ÝáßÞßàÙÃ:*(*)&).+,,.00749-020001/,1/,-,/4104303059>DPcw ¡¢ £ ¤¡ nc_bca``ebdcgfab`bddfcdhhiloqtx £¥§©©ªª«ª§ª«ª«««©¬¬©£¡ |-&(2/,)+*#%(3:><@JTE005>C?92/QQPU_emqm~{njmXD9-%$+&)-/120/328AINQXX\^eihjlmnz ~}~}~~~~}}~~~~} ~~}~|{~y||}~~{yw}|yx}{yzxxxwuutssrpoponlmljhlgjkikidcdeglptu}xi[RH:-(*&)1+%)/136=FMRWYaehrvu{zz~£·ÊÙ×ÓÌÂÉÑÔÖÜáäæååæçäݽ}=)*)*)+++,04593:83*/330../,*,*,/13240655=AESfz ¡¡ ¡ ``daa`abba_cd`baa^ahehikmlmprt{¡¥¤§ª«««ª§¨¬«¬ªª««¬©¥¡,')-10.40-,)'.005=OWN5,2AAH?=;JMHalqopscYY_ioiWXD-(*..(.1&'(+.3:>FLNTY[`cfijkw |~}|}{|~} ~~||~~{}{|~~}{z~}{{z|{{zwzvuuuuvtsrpqoklnnjjkjllkggfcbdflnsu{lbWM?4.*+*,*)'),.-488AFOWZZgmoorsv{·ÈÕÛÔÍÄÁÌÏÖÝáåçææçééèãÚÀq=*)**(*/-/3699>971/0343.,*+,*(,03244899?BFQf~ ¡ ¢ obca```a`a`bc`bdh`cdgkijjjknpsw} ¥¦¨ª«ª¬¬ª«¬©¨ª¬¬¬§££¡+*-&,1579:86)++,047GhT?429?B8.9CFQdxnuypY<;D`eNGC=-'+'%'(%%)*,19=FKPSXY_bdfs ~} ~~~~{}{{}~~}~~|}}||}{y|~}zyyz}zyyywvwtsttqrooolmnmiijhmkjiffea`imloqx zqh]RH73,,)&('#(+/++/36?EINTZ^achik²ÇÓØØÎ¾¿ËÐÔÜáãäããããäéèèâÔ«k+*+)'(+.00698787109864/.+),.)+.255257;=@FVk~¡ ¡¢¡ cbcacbbdbdcbabca_^`bfijgilljnu| ¤¤¤ª¬«ª©®«ªª©ª¬«¬¬¬©§¦¡.-.+*+16?>CGB9-./47:FZjX;22<<155>NUnyqjyycSRTRG?0=83+'( "##'*,2;DKYVTVYZ^m| ~ ~~{z~~~||~}~||}|{}|yxyyyxxuvxwvsrwtopoomlomqjhjmpmhjfcacbehimlry~{qcXSB6.',0*'%&((*&*,.05=BJKPVY[]iÄÎÜÚÓÆºÄÎÓÛàáààßßàààãçèçßÏR,'&((.3/044556A768540-(*.--*,/252/57<?AH\q~¡¢¤ ¡ tcccbccdeeddba`a`^^adekiimmklox|£¤¦¨©¬ªª¨©«ªª®¬®«««¨ª¥/.-,+)*/6=?U^RF=88;?.BjxmN51DD;39ADU}xfqyzxmbQB4)/;H0(."!"%*+8AINPT\YYbx ~}}~|~~~~{|~~~|z}~}}}}~}}}{y~||}{vywsuvwywutusvtrrrooknmlkjmlnnjfddce`ciikmqr~wk_VO<382.-))%%%('(),*.02:<BEJOX·Ì×ÝÓɼ¿ËÓÚßáßßÝÝÝÜÝÜÝâæèäÛÁ*(&'(+,143223278676342/.-)))/123413/:?EL[o~ ¢¡¢ ¡ bbedcdifgdecbbc_b]_dcfihkhjknsy~¢£§¨«««ªª«ª®®«ª«©¨§¢/.*+.-$&.<=N`c]OD@83/8JdeF;@MGA75@\opgnuvo`U>6-*2MA*$$"$$&(,9INQPRY_r ~~|~~~~}|~}~~~~|~{{{}~~~}{~~}~}~{|yx{zy{}wwxwvvvvuutssstqsrnnolniillifjkigffe`cggkppqw zpe[TF;3,1/**)*(++)&%(,+,/.55;EaÈÒÝÚϾ¹ÇÎÙßààÞÝÚÜÝÛÚÙÛßâæç䨍W(&%'),0/121-.443331721*)()/3+06313;:CJO[l ¡¡¡ xbdcbagfgihdede^_^`b`bgdfhjioqw}~ ¢¤¨©ª«¬ª©ª«ª¬¬¬ªªª£,,+./0*%%-9JLTRLAA:0146>[s|ZBGAEKHB<OgllmpmwsjVRIPW\72,%%%+109JPPQRl ~}~}|~~|~}}~|}z|~~~}|||zz|}~~}||}~~{|ywwwuwyywvyzwvuuvvuttrqqpommrljhgkkhhikjfeeg_bfghlmpq}}sjdWNA6./)*(-1+)*&&&')''&&(-0Dq¶Ð×ÛÓǸÆÎÓÛÝÞàÝÚרØÕÒÕÔÜÞâæåÞÈ-$$'*0001/./0151/044/01(&*13/.-048>>?CL^o ¡¡¡ ec_cdceimh`deda`bbbabdeefiimpru{~ ¡¦©ª««ª©©©ª«¬¬°¯°¬ª¨¡5-*-241'$#-DMUN>---(1<==3<]swh\J0<KFCDQ\e^]ajuvbT^jrui\NI4/265;LRPg~} |~~{|{{}{zz|y}|{}{||~~|~}z{{}||||{{{}}|}|}{z|~zvxy{xuxzxxwwxuutyvtsrpqqsopnmkhhhjigfhhfdgea`daafhlpqx~ wqi^TH>2-,-)-.-,*(*&&'&&&"&(-MÇÕÛÖʺ¼ÍÓ×ÜÜÜÛÙØÕÖÔÎÉÑÕÙÛßáæåت['(&+//../-/1.202135++,(',/31-/445<>:>I`r¡ ~baccceecefebda`_aadcbddfhfippqy~ ¥¨ª«¬©©¬«ª±®¯®¯¯¯¯®ªª¥¡@;0/363-,((.B][M=/"%+59<<=9?LbuoT?0/38<?KNMOTfr]OPgpz~~ulXNC89Fb{ ~ }}}~}{{{{}{z|}|{|yz{|~~}{~}}xz||{|{{{|{zy{||}{}z~~|}~{xvyyxvyzxwvrvssqpttsspooppokmljijigiikhhfeee^^]_bglnnr{ {rjcZNF<2,+,/,*,-**((,)&'$#&1Z¬ÐØÙÐÀ´ÃÑ×ÙÚÙÙØ×Ø×ÖÐÊÉÐÕØÛßáääÝÊ2,)((',22-./.,/0.03.,*''/-01/.18:616BP^q ¡ f^bbdfedgfedcb``dcedce`djfilmpt¡¥¥©©ª««¬«¬«¬¬¬®®®¬«©§¦LR9*-..51-++4DYdWM/'*2$(*BKFGGPlrhI2)'(*1;NFJZeumTY\cq{{gemcGLs {~~}}{{~}}~}zzz{{}|}{xy}}}~~~{|z|{{z{z|{y{zyxwx|{{{{}}}|z}}~{x|ywzwuuxwrvvsuqqrmqqqqqsnoponnnkljefhhhhgfgdeb`_[\dkjmpt|¡ }xpg_ZP@70-*+,,..,,+(+*%%""'9xºÓÜÖÇ®µËÓÚÛÚØØÕÕÖÖÓÏÉËÐÔ×ÚÝáââßÖ¤U(,((*-36700/.133//.),()+/-0,//454/4:KZp ££¡ aceeigghghfb`ccdecfaebddehjjqu|~¢¦¦§¨¬¬¬¬«ª«¬¬«ª§£PWK/+)*,++.1,+>WaaJ3(4*"%0<KUJFShsq_E0/&'1EPBFTox`JEPX^jiZL]vt }|~}}z|{{}~}}}~~|{zzw}{y{}|||~}~}}~}yyz}z{z}|yxyzzwywz}wwz{{}|zz{xxwuvxxvusuxxsssospqrqpppptrnljnokgihgddffdfdccbedb^[]abhopsy}{uqi]UE<60+,,..*.-,**'"$$$*LÇ×ÜÓ»£ºÏÔØÚÙ×ÔÒÒÕÔÎÌÊÎÒÕÙÚÜßááàÛÉm5-.+.0/620630441..0//0*)1/0576237++6AXs¢ ¡ ndccebfjfefc`_edhaacdaggdhjjlptw~¢¤§¨§©«¬¬¬«¯®®¯«¬«¨¦SVVB5/*)-./3.*-7OkfU@-!!%54:AK]Y]zvbJ2'*5UNDI[hjTJHGGM_bOo ~~~~~}}|}}|}}}|zz}yvxz||}~{||~~~~}zz~}yyxxzzzwz}ywwwuuwxtxvtuv|~zywvvvtstuvusstv}rpqnoplominpmpqnkjnnimihhcedcdfedeccaaaaa_aeinsuy~|ulcXMA:2/.,-,)-*-,,'&&0&.m¶ÎÚÙË®«ÇÑ×ÛÚ×ÔÒÑÑÓÓÎËÌÏÓÕØÚÜÞááßÝÒ;).).2131/541136302-.,)(+.503:71-+'1=Vp ¡ adehigfddfiddhhgc^cddhgdefhjkot|¢¦¦§¨«¬««²ª«®®®°®«®¬¦ UWVVQC2*(,02/,-,5LfmoQ2)!"%$(9PRMSeoZ?,*7DLMLKT]\D2(:Us ~~~|}~{}}}{|}||yyzxvwxyy{{xxz|~|{zywyxwyvvvvvvrruuwurtuttvsvwqrz{xvssvqpuwutqrtsrwrnmmkhilkkmlijomklmmdmgfedcdcfededaaabaa][`cgjprw~zrj^VG=732.+)-.,,+*(($#*EÃÔÛÒº¦¹ÐÔÛÚ×ÕÔÒÑÐÎÑÍËËÎÑÔ×ÙÚÝßáßÜÛ¹L+))*+/3444540/4753-,.'+(,237754.*&,<Sn ¡¢¡¡ughhegnfghgeghieeabecbgacdfchmrx ¥¦©««ª«««¬«««¬°®¯®©KSTYVRN<**)-0420;1TgxvaD.")6CSFEWblncK/*09>?7<RkdA*S ||}}~~|zw||yzxywyvwywyy{xxx{|{yxvwvxxvtrsttrutnprusrrsruvsrsqsuwwwpqrpopppnmnopnlmgiihhijifhhiginnkjlkkjebfgdefbabcaaa__]^[_bdilotz |tmcYQE=33.--,..+)'&%%"2d¬ÌØØÊ«¡ÂÑØÛÙ×ÕÒÐÐËÆËÌÉËÏÑÔÖØÙÚÝßàÝÝÆx)'-((3;46367437865.10)*+-/198851+(*;Rm ¡£¢hjiiikkhfdegggfeacdcffhddigfjquz£§©ª¬¬¬¬«¬««««¯¬°®«¥AR^\UR\TE<847>.1FLOQgukK6/$#!$2FQJGDFWYSF3*.)3-3>Xogt }}|||{}{{{|~~~||}}zvyzzyxvwzvxvxwwxx{{}zzxtvruuttwtrrssvtkqqpoqoppnmlnotwtqqnoommmmjlijmkihijffdeecdbfgkkjkkhjjeccgedhddb`add_a`]]\`c_dgmsx} xpi]UMB:3+*(+,.,)%#%&'?ÀÒÙÒ¼ «ÇÓÙÛØÖÔÒÐÍÅÃÈÊÉËÎÒÔרÚÛÜÞßßÝÙB)*+/33234632-409:21.)):/+066;340./>So zkiihhkjhfjeaghgbcedfbfcfgd`dnrv| ¢¥§§ª¬¬«ª«¯¯®¬¬¬¨@UWa`WXfaXH:3-(%5OZYbjxgLH:,% !&/JMTLFC@A=?1.*,433U} ~ {}|}}{{{{{xz{|z|}~}~|yxxvxuuvxywtwwuvvwx{zwtrutsuxzw} zvuuqonomsrqnjllikilefggklgcefeb]`d_c_cdcflkgfhhfedjedfdbbbdgf^^b`_]``_dfjsu}}tlf\PA=52--.-.*'%#%&/S¡ÉÔÖÉ«µÌ×ÙÙ×ÕÓÑÏËÁÅÊËËËÏÓÕ×ÙÚÚÛÜßÞÝÙ¯[((./11231<5407>521.+,*.,,.93:84344ATo ¡ hgihhjiedjeghfidbgbdccbeeedchmrw| ¢¢§©ªª««©¬©«®¯¯«®««¨;FT\ii]flhWC2+)%&-=Sjkdy[IHG7$$&'0?PYXJE@9<A?-'2Ag }~~~|~{z{zy||}}|zt|}|{{~~~}xuxwxxwwwvuruwvvvxtvvuuw|| §¦ª®±¯®®¬«©¦¡}vqmpnlkiedcffjgabc`a_[Z]]][_]babeceefffcfecdb`c``cc_\a^__\Z]cfgnszyolbUI@640-,,*)'$!%&>~·ÐÕо £½ÏÚÚØ×ÖÕÑÏÊÅÇÌËËÌÏÐÒÕØÙØÛÜÞÞÛÝÎr7(+/11/4664125930-,+()-,/4554136>CIZq {ijhddihefgfjdhdcdefcccecddbbhnrw}¡ £¥¨©©««©«±®¯¬¬««9ATPbrupflgP=,)*##4R_flvwN=DE@95,)3;LW[RIE@AD83_ }~~}yxxy{yy|z{xuz|||z||}{wwwuxtwwxvstxtvtvzxxz¡¡¦³´µ¹º»¾ÀÃÅÁÀÀÿÁÀ¸¹¶¹±¬¬|ztplgab_\\\]a_]XZVVYYYXZ_`bbbdeac`bcc`__aaaa^^_`^Z[]`cfiqvz}woc[TH72/-,)+*'%"#)P¥ÉÖÕȰ¢¶ÈÔØ×ÖÕÓÒÑÌÉÈÈÉÊÊÌÏÏÑÔÖרÚÜÝÝÜÝÓ<-..,0340+--,/41/.1.+-./.2200138BNN`s mmjfdgjgfhhigfeccbgdabcda^abdhmry¢§©¨©¬¬ª«®¯¬ª¬®¬4>LRVjzuigilX0%('%%,4NpcdsfJ18>FHA:9>;MXMLOKBAd }}{}}|{yxz{{yz{{yyx{|||}{yuuzxyxwvvuutswy||«±°·º¹¾ÀÀ¾¿ÂÀÀÀÇÉÃÀÅÅÀÄÈÈÅÅÈÄÂÁǽº¼¸ºµ¯¥pmg`\bhw~xm_UXWTRUY\]`bbc`a^\_`baaa_^]_a]\[Z[[^_dhmrx}}vf`WMA70+*))'*+$'9oµÐØÓ¿¥ÀÎÖÖÕÕÓÑÐÏÌÉÈÇÈÊÊÍÏÐÒÕÖ×ÙÚÜÝÝÝÝÝ´R1..04/0.+/.+.532221.),5/./.,03>HLPau llkiihhggfegfecccdbaaba^^_b`fknt~¡¥¨¨ª®®¬¬¬¬«¬¬¬ª¬®¬(4I\YdmqruowlR<+"((+(@QRXfmiL8/39D:?<:@JKCOQ]x ~y}}}|zyxyzzzzxyzwzzz||~ywuxyxvusuxvuxv¡®ªª¹À¿¿¼¼½ÁÃÀ»¿ÃÀ¿ÃÈÃÁÃÅÀ¿ÄÇÃÅËÈÁÁÅÉÃÀÃÃÁÃÄÆÄÆÂÀ¹µ«¡zpz¥´»²¤i]SQMRYYXZZ[]]_Z[__bb``]ac_ZXXZZYW[_acimx{yohdSJ=4/,))&##$*MÂÔÕ̲©ÇÒÖÖÔÔÒÐÏÌÌÉÆÆÉÌËÎÑÓÓÖÖ×ÙÚÛÛÝÝÞÜÂ{0(*,.**.31,+01059<7,(+...-.*,1;BNUey¡pmkkljgihfgfedecbba`aba\a^``bgip{ ¢¥©««ªª«¬¬®¬¬#,=K]`gghp{{ysdC402.)-.4?R_kn^?402+%+472@A[x }~|{}|{{wwz{zuuyzyz|y}|}|{zxxvtxxvtuu±°¼½±·½¿¾¹»»¹¾À·ºÁ¾¾ÀÅÅÁÁÄÃÁÁÆÅÂÆÉÄÂÂÄÃÀÀÁ½ÁÆÇÈÈÊÉÈÊÈÉÀº¼²£®ÁÐ×Þ×Ѿ¥^VMNQTTUVUXY\]Z[\Z]_\Y[[[VV[[YYWWY\_dipw{} }|qleZJ>80-('&$"'/i°ËÖÒħ³ÉÔÖÕÔÓÒÏÎÌÊÉÇÈÉÊËÍÐÒÔ×ÖÖØÙÛÝÝÜÞßÖH$%**,*,30--0-45:A8/-*/..-*(,2;IOUdvmkjjlhiiiifgfjjfeccbccb`^^^\aenv{¡¨«©§©ª¬®¬®°®¬®'(34SX_eVLmx~zkS>;5+&%(.7TdnvgL4.()**,0Jp }|||{y{}zvyzzxvxz|}{xz{{yxxxxwwusw|©ª´½³º¾³³¹»½¶¸º±·À¾º¿Á¹¿ÃÁÀÄÆÀ½ÁÅÄÂÅÉÆ¿ÄÆÄÂÂÄÂ¾ÃÆÆÈÉÊÇÆÊÊÊÆÈÍÐÊÔÛáââãáÝÒ·xcRLOTQSUSUUWUXZWXYVWWXXWVX\UWTSV\^bflqx{}ulf`OE:/.+' $#)@ÁÔØÌµ§ÀÎÕÖÓÒÑÑÐÍÊÉÉÇÉËÉÉÍÏÑÓÖÔÕ×ÚÜÞÞÝÞßÙ¶Z"#((+)+.0/040139>11.+*,1.*/.4;CJScwsjijkgihgkhgjjhffecdccd``^^]^bjnv¤§¨ª©ª««¬«¬®¯®°¬¬0)-0;K]n^GHYtvaL7,)&()+Fetiyh<++02.6f ~ ~|}~{{z|}{z{xzyyz{|{vxvvvvtvwyuz| °°±¼·´¾·©²¶¸²²º¸¶º¶·¾Á¼º¿Â½¾ÆÅ¿¿ÁÂÂÆÇÂÁÂÅÆÂÂÃÀ¿ÅÉÆÄÉËÊÈÈËÇÇÆÊÑ×ÛàããäãäåãÞÖðzdUSONONPQTRTVXWVTVWVTXWTTVZWXUV]`dhms{ xpf^VM?0-&%!"$-W¨ËÙÔεÊÓØÖÔÐÎÏÍÌÉÇÆÇÊËÊËÏÑÒÔÕÓÔÖÛÜÜÜÝÝàÞÎt2(('+*,++-1311052.-*))-20+-018?DQdy ¡ jjhghhknhkhljhfeedebcd`^]\\]aelrv~¡£¦©¬ªª¬«©ª¬ª¬¯¯®0&*)2@Sika>5Ux~kM1*(-,/;Q|vwgM,%19] ~~~}}|zz|y}{{zxw}|yzzvuutswtx§§±¼°·»´¹±°²¸·¬·¶¯¹¸±·»º¼¿¿º½ÄÃÁÀÅÀ½ÁÇÄÀÀÄÅÃÂÄþÁÆÇÂÃÉËÉÊÉÅ¿¿ÇÐÖÙÝßáááââãââÞØÔʺtd[RLMLNNNRRSRRRUSTQRSTVSTVUTTY^`fkpy|tkb]UD1)($#"&;yºÓÛÑ¿§«ÁÍÕÚÖÒÏÎÌÌÌÊÇÅÇÊËÊËÎÑÑÒÓÓÓÖØÛÛÝÝÝßßÒ/$#%+,.,3+./20,01.-+)+/24*,01:BHNc{ ufhjihmnglljhfhffdaacd]``\]][`hmx|¡¤¦©ª¬¬«¬°®°5**(*1CbmpU99MriL6,*%,5Da_U5'U~~ ~} }|zz{z||}{vx}}y{}yxwww|±¤¬¬¥·µ®Â¶±²ª©«±´°´¸®±¸¯³»¸¶¿Ã½»À¼¾Ãþ¾ÂÃÀÃÅÂÀÄÇÅÁÀÃÂÀÁÇÆÃÆÆÂº¸ÂÍÔÚÚÚÚÛÜÞàâááâàßáßØÊ´q_UMONNPNMSPLOPQPMMPNPVSRNSUVZ`dlu{}yphbUC2*&""",PÊ×Õȵ«¹ÊÒÖÖÔÑÎËÉÌÍËÈÇÉËËËËÍÎÐÑÒÐÒÓÖØÛÞÞÜàßÚ¨N&&#&+-))*-000,062-.(*/01,,,/=BNRgx ¡¢ ijmkikmmmiegffgfdbcfcab`[Z]W^dis{~¡¢¨¦¬®¬«ª¬«««°®5-,''.8MfmqC8>Tnu[C2('-3DpuY_u ~ ~~||zy{{z{yvx||{zzxz{}§²¨±«¹´¸±µ¬ª¬«±°º®¬¸´±¼¾¶¼Â¿»¿À¹¶¿Âº¼ÁÂÀÂÆÆÀÁÆÉÄÂÅÆ¿ÁÅÇÄÃÆÁº·¿ÌÔ×ÙØØ×רÙÛÝàááàÞßßßÝÕʽ«}_SNILMKMLIHPNNMJJKJTMPPPOTX\diov{{tmfXI8-("!%7r³ÓØÐ¿ÂÎÔÕÓÒÐÎÉÈÌÍÉÆÈÈÊËËÌÍÍÎÍÐÑÒÓÕ×ÚÝÝÝßÞÚ»a)$"'*()-,/4233321)/+/2414-,06?FKay {lokllklljfegifeefeeb_ba][YXZcgot{ ¥¦§ª¬¬ª®¬«¯«4/-+((+9els`DALMbh}jQ?5626Q|}~} ~~}|}}{}{|z{zzwxx}}|x{||z¨¤°©©¬§²²°·¯² ¨ª®¬©¸·¯¶¸¯¹Á¹´¼½·¹À½¹½À»¸Â¾¿ÆÆÃÁÅÇÄÁÆÆÀ½ÄÇÆÃÄŶÂÏÓÖר×ÖÖØÖÖÖÙÛÝßàßßÝÝÜÜÚ×ÔʯsaQJHLKJJJLJHIHHGHLNLOPMRVY]dmpx |sdXL?/*"!)NÈ×Õɶ«´ÈÑ×ÖÒÑÐÎÉÈÌÊÈÉÊÊËÊÊÌÌÌËÊÍÒÒÓÒÔØÛÜÝÞÛÙÈp3)#&*),,-/-20:3//+*-,3412.-25AEJ^w¢sljjhihikiehhehhfhcaabc`[YY[]bjqy£¦¦¨©ª¬«®®¬¬7,''*,+9Wpj|D?NOLPP}vfXO90M} ~~}~~~~}~{y{|xz~z|}z{wvy´¡ª°¨±¨¯°©®¬±¸ª¨©¨®§°µ¬µ¾´°¿¿·»¿¶·Ã¾³¸Á¾¯¸Ä½ÀÄÂÀÄÇÄÁÃÅÃÂÄÆÆÄÆÁµ¶ÄÌÒÔÖÖÔÕÖÕ×ÖÖÕר×ÛÞßÞÞÞßÞÛÜÛÙÐÂxYRTQOQQRLECJIADGHFHJKNTW[]glqw| {uhaYG2(&&8n®ÑÖͽ®¬¾ËÓÕÔÓÐÏËÈÊÊÈÈËÌËÌÊÉÌÌÈÇÈÌÑÒÓÓÒÔÛÛÛÜÙØÌ4.%%'++,+/,1360.-)(..310/,+16>@I_y |hjjikkkkjfhecgfddfgecb`\XXYZ]chr{¡¤¤§¨©¬¬¬¯®¬:0(*2/0.<ilv_6?XMOGX_fkycPf}| ~ }}~~}~|{~{w~||}|xu¦¬¯¬´¬·²¶°«·¯§«¬±«¨¸¬¦¶¹´»¾´·À·ºÂ½½½¼µ¸¿¿ÀÁÂÿÃÇÄ¿ÂÅÁ»ÁÄþÁÅ»±½ÍÒÕÔÓÓÒÓÓÓÔÕÔÕ֨רØÙÙÙÞâáßÝÛÜÛÛÔ˳oiicmojVMLZSCCDDBDEHJORUY_blry~wmf`V4,(.XÅÙÓ¶¯³ÅÎÔÒÒÑÐÎÉÈÊÉÆÈËÌÌÍËÉËÌÈÆÇÍÑÒÒÐÑÔÙÛÚÙ××ÕJ-)&)+.15120/40-+()+/8551.//4F@L_u¡¡ ¡ ¢ mmmllljikfgfgfdd_eddcab][YZXZ^fsx££§ª«ª¬¬¬¬®¬®®P8=%.03,5Xsq{9/IXVIKGKI`y ~ ~ }y|}|}}}}~|{}~z{{}}³¦¨±¬³²µ¶¯¸°³´®®«²¯©²³ª´³«´¾¹´»½²µ¿¼ºÀ¾³²½¾»½À½¾ÄÆÂÂÃÅÅÀÀÁ¾¿Àý¶½ÈÓÕØ×ÕÔÒÑÐÐÏÏÏÐÒÕÖ×ÕÒÓÔÙÞáããàÞÝÝÞáÙÆ¦¢ ¤¤¦ wprfPA?A;>BDGJOPX\dhpwzymgZJ9/->{¶ÒØÌº³±¹ËÑÕÒÑÐÏËÇÉÉÇÇÊËÊÌËËÊÊÉÇÆÅÌÑÐÐÐÑÓÔØÙÙØ×Ô®=-,'-1260/04431,,&*..145232/6BCK[p £¢£¢ mlkjlkljhegigefcdbaa``]\[ZZX[ekt{¡£¦©««¬¬®®¯¯®nG7*,12.+Olqr[(.MYNOHDEF{}~ |}} }~}}|}}|}}}}||~z|yz{¢ª£«®°¶»¶·°¶«¯°²·¬±¸©§¹°³»º²»½²°»½»½À¼¶½¿¹º¿¾º¾ÄÅÂÂÅÅÁÂļ½Á¿ººÇÏÒÓÕ×Ö×ÓÒÐÍÌÌÌËÍÑÒÒÓÓÐÔØÜáãäãàáÞÝÞÞÙÑÏÒÔÓÒÐĸ«lSC<48;@CDHLPVY^ju{xpgXLA/7_ÇÔÏÿ·¶ÃÎÔÓÒÑÏÎÊÈÈÇÉÈÉËËÌÌÊÊÊÉÅÃÄÉÎÏÑÑÐÒÓÕ×ÙÙÔ׸Z)'()8:;4/6F<92-.+(*,-331..135:F[q¢ ¢ ¡qkjkklmljghihhhde`bbbbb_WZZY_eipv¡¡£§ª«©®¯¯{\>/)/-/4DYimw=)4HSLIC\{ ~~} }~~~}~|{{ ¥©¤¦««µ´±´±·¶¯°¬µ¯ª¶´«¯®¨µ½µ²»¹²¸»´½¿»´¼Á¾¹¿Â¼½ÄÂÁÄÄÄÃÃÆÅÀ¼Ã½µ¼ÇÍÒÒÑÑÐÒÓÓÓÒÓÐÑÎÍÌÍÉÍÒÕÔÕÙÜßàßàááÞÛÚÜÞÝÞáààßáÞÝÕ;¨jK>:>?@BAFJPT[fqx~ {pj]XH:N¿ÖÔÆ·¼º¼ÊÑÔÒÒÐÎËÈÈÈÈÇÈÉÊÌÌËÉËÊÆÂÁÆÇËÍÐÐÑÏÎÒÔØØÔÓ¾d())*.89>20B?52/-,',,/486105016D\t ¡ ¢ kkjlnligghfehfge`ad_c``]\\Z[adksz £ªª«¨©¬®®¯®®fI7.,/08>Jaru`)$/IN\v {|~}~}~{}} «£«¦©ªµ±µ²®¶»°·³¨®ª°²¬²µ«¨¸¹¶¼·°¶½·´¾À¸¸Â¿»ÀĽºÀž¿ÅÅÀ¼ÄÄÁ½ÀÀµ¶ÄÑÓÓÒÑÑÐÏÏÐÑÒÓÓÔÔÓÒÏÍÍÑÖØÕØÙÜÝÛÙÙÙÙØØÚÛÛÜÝßâààßââàÚÔÆ¯gE=ANHAGILPX_jpw~rh_RDDh§Í×ÐÁ·¼µÁÌÒÔÒÎÎÍÈÇÇÇÇÈÇÊÌÌÌÌËËÎÄÂ¿ÂÆÊËÎÍÏÍÌÍÑÔÖÑÔÅo1)('&1-410;=03/*'(*+245641446=@Wt¡ £¡¡¢ ¡¡sjklkljjhjgfhghecdcbb`b``\ZY\cjmt~¢¥§©©ª¬«¬®uN<6+/17=@VusqE+*Hq ~~~~}~~~|~ |¡¨¦¥¥©«±´°ª¹·²¯«¨ª·±¯µ²°¸½´¹¾³²»º¶¼Áºµ¾Ã½¼ÃÁ¼¾Ä¾ÄÉÇ¿ÁÄÿÀÀµ±ÂÎÓÓÒÓÑÒÒÐÏÏÎÏÐÒÒÒÑÒÒÐÒÖÕØØ××ÖØÖÓÓÔÔÔÖרÛÛÚÚÜÝÜÙÜààÝÝÝÔǦnTWYI8>EFJQYajn{ rk_SIZ¾×ÕȾ¼¹½ÅÏÓÒÐÍÌÊÈÇÈÈÆÉÉÌÍÍÍËÊËÊľ½¾ÃÆÇÉÌÎÌÉÉÍÑÒÐÒÆ~,.-'&'(+3142226?6+1237656./06<EWq ¢ ¢ lkkmnjhhigeihifgh``abc`^_[Y[\_hpx¡£¦§©««¬¬¯WKA2.29>8Carpc<[z}~~~~|}|}~}|~}~¢²§§¤¨©®©«¤²®²±®§´°¹²¤µ¿¾¹»¸³¹¼¯³¾¿·¸À¼½Ãļ½ÅÄ»ÁÇÆÂÃÅü¿¾º´½ÌÒÕÑÎÏÐÒÒÐÎÍÌÌÍÎÎÎËÌÎÑÕ×ÖÓÓÔÓÑÏÑÓÔÕÒÔÖÕÖØÙÚ×ÕÖ×ÕÕÙÜÕÛÜÙ×ͪwiP@7;?CJS\fox|{o`WVw±ÏØÎÀ»¼³ÂÈÑÓÑÏÌÊÉÉÈÈÉÈÉÊÍÌÍÌÊÊÌ˹¹¹½ÂÅÁËÏËÃÁÄËÏÎÓÐ8,*+%((*011.12.5617A:<88415=6;HVo¡¡ ¡ ¡¢¢ £ wikmkihgihhikkgffbcdededba[Z[`fhs|¡¦§©«®®¯®u[JH;10;B::Koqy~z{ }| ~~~|~}~|||{z|~~¦®¨§¦©©©¤¬£ª¡¦°¯ª¤ª«¬»°®¸½»¼¹¸¼¿»¶¸·´¹À¿¶¼ÄÀ¹ÀÄÁ¾ÄÅÿÆÅ¾¼À»µºÈÒÕÔÑÏÌÎÍÐÏÎÎÎÍÎÍÎÎÊËÍÏÕרÔÑÏÍÍÌÐÒÕÔÓÓÔÕÖ×Ö×ÕÑÑÔÓÓØÛÖÖÙÚÝßѽ®a;6;?FPW\iov{{sd]hÄ×ׯ¼¾µ¶ÅÎÒÓÎÎËÇÆÈÉÉÈÇÉÊÌÌÌÍËÊÌȾ¶°°·»¾¾ÆËÄ»»½ÇÊÌÑÎ2&&%&((*//2/11,**)1@AB>563=938>Rk £ ¡ hhihjjhhjkiigihbddeeddb`^][[]dhrw £¨«©«®e_E@A92(:89Ai{}{z}~~~|~~~||}{} ¢ª¥«§¡ ©¤¡¬¡§§¢¤ª¬ ª¬²´³µ»¹¹·¯¶¼·µº½²³¾Ä¿¼ÀÀ¹½Â½¼¿ÅÁÁÃÆÀ¹¼»¶½ÇÏÓÕÓÒÐÐÑÐÏÌËËÌÍÎÎÏÎÌÍÓÑÒÔÖÒÐÍÍÎÐÒÒÑÒÒÓÓÕÖÖÔÔÒÐÑÕÕÕØÝÚ×ÝßßßÞÜÕϾpH56AKOW`gqy} |shg»ÑØÏ¼¼½µÁËÒÑÐÍÊÇÇÇÇÉÉÇÈÊËÍËËÌËÌÍȸµ©®²µ»ÄÈ´®±¸ÀÄÅÍÓE$'%(''(-0005,23-.356E@623541;>Qj¤£ ¢£ ¡¢ ykkjggfikihkhefcbcacbca`__]Z[ados{£¦§ª««««®StA2?F@0+4Sqy{|~zz~}} }}}~z|{{¦«§®¥ ¥¤£¢£©£ª¦¨¨¡¦ª¨³³®³¶¶º½´©¸»µ¶¹³¯¸¿¼ºÀý¶Áû¼Á½ºÁÅĺ»»³¶ÅÐÓÔÔÓÐÎÐÒÐÑÏÍÌÉÊÉËÊËÎÓ×ÖÒÎÐÍÌÌÏÒÒÒÒÒÑÐÒÒÑÔÔÔÔÔÓÔÖ×Ù×ÛÝÜÝßáââááàÚÒ±hB;;AIOX\jqz }soz¨ÌÕѵ¿¯¸ÈÏÒÑÎÍÊÆÈÉÈÉÉÈÇÈÉËËÊËÊËÎǶ®©¥¥¨°·ÂÀ¦©²ºÁÃÊÑ®G%&%(*+,,/..1/6:7.215><72/144:DTi££¡ £¢¡¡ £¡ ¡¡ llhggefijekecfedgeb_`ab_^\ZZ\cknu{~¢¦©«¬¬®CO34=I?>i|{yz|||{{|~~~ ~~~~|}||}|{¡ ¤ª¥£¥¦§¢©¬«£©®©®®¤«±²¹º¸³··´¸»µ¯µ¿À¼¼Â¾¾ÁÁº¼ÃÅ·¹Èޏº·¶¾ÊÑÒÔÒÐÐÎÏÐÎÎÏÎÏÎÌÉÉÈÊÐרÕÓÍÉÊËÎÐÑÒÓÒÑÒÒÔÏÌÏÓÔÖÕÕÖÖÖ×Ö×ÜÝÝÞßßàáãààÞÑ®{H7<DIPZcmt}x~¿×Öɺ¾¿·ÁÍÓÒÏÌÌÉÇÈËÆÇÆÇÈÉÈÌÊÈÊËÍÍű§¥¥££©²½·¸»ÃÌ×Âc)#%()+-.001//0782/-2::62/1269FUl¢££¢¡¡ ¡¢£¡¡£¡ ¡¢££ ~jiihhghkifeabdefdaba`b__][ZYbfhox¤¥¬¬¬®Ay`844Pgxxz|yy{|~~}{yz~||~~}~~~~~~zz}~¡¡¢¨©¦¡§²¦«©¬³¨«°®°·µ®±¹¯²»·¬±¿¾¿¾ÁÀº¾Ã¾¶¾Å·½Ã¿¹¸µ²¾ÉÐÑÎÐÎÎÎÎÎÍËÌÎÍÍÎËËÉËÑÔ××ÔÍÎËÍÎÐÒÑÐÎÐÑÒÓÓÏÊÌÓÓר×ÔÕÖØÕÕ×ÙÛÞÞÞÞßááàßÜÖµ}V@<DMVYgow~ ~¸Î×Ï¿ºÂ¸ºÇÑÓÐÍÌÌÈÇÈÈÄÄÆÈÉËÉËÌËËËÎÎÁ¯£ ¤°º¦¦µ¸ÁËÕÉ(%))+/2*12322675/,,0586210346>Pj¡¢£¥¡¢¡£¤¢ ¡¡£¡¡ ljlkhgkhjgggfggfebeebb``\[Zadbfmt|¥§««ª©«¬EpjD?]tqyxx{{yy}|zy{}||}~~}~~~~~~} ~~ }¡¡¥®£¦¡¡§¨¥§²§¢¯³µ¸²±µ¯¥²¿²¯¸¿¸¸¿¿¾¾À¾º»¿Ä¿ºÂÁ¸µ´±½ÉÐÓÔÐÍËÊËÐÏÎÍÍÎÎÌÍÊÈÈÍÒ×ÓÒÌÆÇËÎÐÒÓÒÑÏÏÐÐÒÐÎÌÎÏÎÐÕÓÑÔÖר×ÕÔÕ×ÛÞßààáàßßÛÏ·_EB@KO[ipz~ °ÈÓÓÆ´½»±ÀÌÔÓÏËÌÊÈÇÈÉÃÄÇÇÉÊÊÉÍÌÌÌÎÎÁ¯¢¤²¹¥°´¹ÆÕÓ9%(--02.25461.//.--21669<3-/1AUi~¢££¢£¡ ¡¡¡¡ ¢¡¢¢¢¢¡¡¡¡ hgiijmifgiehggfedccbeda\ZZ\^]cipz ¦©ªª«ªªMiduxvquyxy|yy|||{{{||}~{}}| ~}}~¦¡§¥ ¬°¦¦±¬¯µ®°¸µ¯¹º³¹¼¸¶¼¼¶»¿½¸½ÁĽÀż±®¦³ÄÎÒÔÑÎÇÈÉËÎÏÐÏÑÏÌËÉÅÇÆÐÍÓÒËÅÅÈÉÎÏÏÐÒÑÏÐÐÎÐÐÏÐÏÌÊËÏÏÏÒÔÕ××ÕÔÔÓÕÚßßààßÝßàÜÓÃ|\HHJS_it|©ÅÔÕʸ¶À·¸ÇÐÓÑÎÌÌÊÉÉÇÇÅÅÅÆÊÉÈÉÉËÌÌÎ쮤§¶³¦®²µÂÓÓ5('&()-.477;4011--/5238:70..1@Tj}¡£¢£££¢ ¡¡¡¢£¢¢¡ ¡£¡ lhiiihhffifgjhfbfdcbbb_Z[]ZWXZcny} ¤¥¨©¬««[J|rpsvwtpyxxzzy{{~}{{|~~}~}}~~} ~~~~}||~}~¡¨¨¡¢£¦¡¤®¦«´¥¯¯§·¶©¯º¹²´º¸·½¾¸µ¼½´µ½À¾¼Âÿ¶²¯½ÌÓÑÓÑÍÉÇÈÇÉÍÎÏÏÎËÉÇÉÌÊËÍËÉÅÇÉÉÊÍÎÎËÎÐÏÎÎÎÏÔÐÐÏÎÊÈÊÏÐÓÓÓÔÕÔÔÕÕÖ×ÙÚÛÞãààáàÜÖÌ·r[OMU]ov|ºÎÕй½»¸ÂÉÑÓÏÌÊÊÉÉÉÇÆÅÆÄÅÉÊËÊÊËËËÌÊ»ª¦¢¹²{§¯°°¿ÓÚªO*(%+*/,/5620+-,+-.223;52/-,13Ih}£¤¥¤¤£ ¢ ¢¢£¢ ¡¢¢¢¢¢¢ ¡¡¡geiddghifkffdfeeea`bb]\]\\YUY`jqw¡£¦ªªª«fiqrnqtxvruxvz}~|{}}{}||~}|}~{~}~}~~~}}|}}¡¤§ ¦©¸«¢°°®´°¥«¹³°¶¹¶³¸¸°¶½¹²¹Á»²¸À¾µºÁ¿´¬½ÈÓÙÔÑÏÍÌÍÍÉÇÈÉËËÇÆÇÈÎÑÏÉÈÄÅÇÉÊÎÌÌÎÏÏÎËËÍÍÑÐÐÏÍÎÎÉÈËÏÒÓÓÒÒÓÒÒÔÕÖÕÖÖÖÙÝßàááßÜÚÓȰjRRUbnx}°ÇÓÑǺ¾Ã¹¾ÆÍÑÑÍÌÊÈÇÅÈÈÆÆÆÅÅÉÊËËÌËÌËË˹©¢¦±»£©«¬³ÂÒ×¶R*''**-/113.3/)(,,-145523-**.3Fd|¢¥¥¤¤¤¡¡£¤¤££¤¡ ¡¢¡ £ £ ¡ ¡¡¡ ndffggegchffeeddfbcab`[\\[XWX^fls}¤¥¥¨«¬klntoorvxvvww{}{z}x{zz}z~}}}~~~~~|}|~~}}}~|~~| £¥ µ©®³¨¯¸©²²ª¶º²±·»¹µ½½³·¾¿¸½ÀÀ¹·¿Âº®«ºÇÎÓ×ÖÓÎÎÍÎÏÎÌËÇÆÅÃÀÂÄÎÒÏÉÅÃÊÐÌÊÎÏÏÐÐÎÎÉÈÍÑÒÐÎÎÌÌËÈÊÌÌÊÏÐÒÒÒÏÑÑÒÔÓÓÔÔÔØØÜààßßÝÜÛÏÀ¦jRYjs{¡»ÌÒʽ¶Â½ºÅËÐÏÍÍÌÊÉÈÇÇÇÅÃÄÇÇÉÊÊÉËÊÎËËË»ª¤«´µ¡©§¥ÂÔÝÁ`*%'(',-2/,.410+0-*/33663,*((/CYw£¤¥£¤¤¢¢¤¤§¤¦£¡¡¢¡¢ ¤¤¢¡¡ ¡ ¡ ¢ fgdkkjffhcgecbcceg^_]^][]ZUW]agoy~£¥©¨«jkmqsnqtuvvwz{{vz|z{z|z|}~}~~}~~||~~~~|}~~}{{ £¢¬§§³²ª±¯£¬°¦¨·µª´¸·¶¼À³¬»½´³½Â¸°¼Á¼²¬ªµÉÏÒÓÓÒÏËËÌÏÍÊÊÉÈÅ¿¿ÇÉÈÍÍÅÄÇÌÏÎÎÎÍÏÏÑÑÎÊÊËÓÏÍÍËÈÇÊÍÏÎÌÌÎÍÐÓÓÑÐÏÏÒÐÒÓÓÔÖרÛÞáàÞÝÜÛÖÏ¿wjkpwx±ÅÒÔÈ¿ÂùÂÌÎÎÌÌËÊÊÉÈÇÈÇÅÃÄÅÇÉËÊÊËÌÍÉÊ禣«µ±£§¥¿ÒÛÇq&$%%$(,,,00.0/,+)(*.179/,,%'1BZs ¢£¤¢££¡£¢¤¦¢¢¡¡¢£¢¡¡¡¡¢£¢¡¢¢ ¡£ sccgiehhjigfc^c`fd`^^\\Y\\YX\`dgr|¢¤¦§ªiklnsosvusvwxxywy||{z~{{{x~}~||}{~~~~}~~y{y~ ¦¤¡¬¬©®²¨«®¤¡³¶²°¶·²¶À¿¶¶¼¸³¹¿¼´·¾¼±ª±¿ÎÓÕÓÏÌÊÈÊÍÎÍÍÊÈÇÆÄÃÄÉÑÅÄÇÆÅÈËÍÌÏÎÏÏÎÌÐÏÍÎÌÌÍÍÌËÈÈËÍÏÎÍÍÎÊÍÐÒÓÑÑÑÑÑÐÐÐÑÑÔÕ×ÙÚÝÞÝÙÜÜÙÑÅ® £¿ËÔÊ¿ÃÇ¿ÂËÍÏÌËËÊÇÉÈÇÇÇÈÆÃÆÆÉÉËÌÌÍÌÏÊËË·££¬µ§¢§§¢¼ÒÜÑ{4%&##%*+-20.61-)))).648/...&-9Yt¢£¥¥£¥¥£¤£§§¤¤£ ¡£¡¡ ¢¡££¡¡¢¡ cdhhghggeedb_bccc`^``_^^\YXV[`ekv £¦§©ijkmnmpussuuuu{{{{{zxy|z{}~~~|~}|~{{}~ z~~}|| ¡¦¡¬¦ª¢£²¬£ª¶³³·¶´¶»¾·¸»º·Á¿³µ¿¼±ª§«¼ÉÏÑÔÓÏÌËÍÑÒÎÎÍÊÈÇÇËÍÌÊËÇÂÇÉÊËÌÌÌÌÍÎÎÏÌÎÒÑÎÍÌÍÎÌÌÍÏÑÑÐÎÌÍÊÇÇÍÏÒÑÐÑÑÑÏËÍÎÏÎÏÓÖÖØØÙ×ÖØØÖÕÍÈ¿¹³¶«¡³ÆÎÊÀ»Ã¾½ÆËÏÏÊÈÉÈÈÈÇÇÇÇÈÆÆÇÈÉÈÉËËÍÎÍËÊг¢¨°µ§¥¤¼ÐÜÓ2("!"$',,5.-12+()+./354/,**%+8Xw ¢¤¥£ ¤¥¦¤¥¦¦¤£¤¡¡£££¢¡£¢¡¡¡¢¡¡ ¡¡ ¡¢wghiniigffdc`ae`dd`bc^ba][YYY]cgry¢¥§¨ijikklnooruquyxxyzyvx{}}~~|~~}}~~~~{~~}|~} ~~~|~~£¢¥¦°©¦§¨®¬µ¶²³¾À¸ºÂ·¯½Ã¼³¼½²§¨§²ÄÏÔÕÓÎÊÈÌÐÔÔÑÏËÈÃÃÅÉÐÑÍÈÆÅÊËÌÍÎÏÍÌÍÍÌÌÎÏÐÑÌÌÎÎËÈËÏÓÓÓÓÒÒÑÎÊÉÍÏÑÐÊÊÌÌËËÎÐÐÌÍÏÒÔÒÑÔÓÓÕÖר×ÕÖÓÑÒÎÆº¬ÁÌÑÁ½ÃÀ·ÁÉÎÎÍËÊÅÅÈÇÇÅÆÆÇÆÈÇÈÈÈÉËËËÎÎËËÌ·¢«¶°¥« §¾ÑÝÚ G& !#$',,0.-.6,)-263584.-+'&)2Tl¢¥¥¤¡¤¤¥¤¢¤§¥¤££¤¤¦¡££¥¡¡¢££¡¢¡ ¡¡¢¢£¡ igjljheiieeccedbd^`cddb^]VXX[`gjq| ¦§imjhlnnoortuttwtwyzz{|||{x{}~~~}~~}~~~~~}} ~~}|}~ ¢§ £¨§®©¯¹»°ºÀ»´¶½»µ¶Áûº¾¸£¯ÀÈÍÒ×ÔÍÉÈÍÑÒÏÎÎÊÈÅÃÄÅÌÑÏÉÆËÎÏÏÍÎÏÐÑÏÌÉËÎÏÐÐÌÌËÊÇÄÉÍÏÑÎÑÓÒÒÒÏÏÐÎÏÏËÊÉÈÉÊÐÒÒÏÏÎÎÐÎÏÑÑÒÓÔ×ÕÖÕÕÕ×ÙÙ×Ïǹ¦¢¼ÇÌɸ´À¸ºÄÊÐÏÎÊÅÀÃÆÇÈÉÈÇÅÅÇÈÉÈÆÊËÉÌÎÎÍÌδ¤´«§£}~¥¼ÏÛÙ®A$"#$%&*-1.,,21)-42.4654.(((+9Qn¡£¤¤¢¢¢¤¤¢¢¥¨§¥¤¥¢£¢¢££¡¢£¢¢¡¢¥ ¡ ¡ ¢¡ ¡ zgihhiiifecdcecbc__c`_ee^ZYXY[egnw¤§fhmhlolmpqsttuwtuxz{||x|{|zxz~}z|}~}~}~}~~}|}|}{}}}z{~ ~~}~ ¢§¦¤¬±¨¬¶¶±¶¾¼°·¼¾µ¶½Ä¾½¿Âµ£¸ÆËÍÎÐÏÍËÌÓÕÑËÉÈÄÀÃÄÊÉÉÉÆÅÉÍÏÐÒÑÎÎÌÐÏÍËËÌÍÎÏÌËÈÅÆÉËÍÎÍÌÎÐÏÐÑÑÐÐÐÐÎÌËÊÉÊÍÐÑÐÏÌÌÎÏÎÏÏÐÑÏÏÒÔÕÔÔÓÓ××ÕÓÑÏÄ«´ÄÊɾ±¹½ºÂÇÎÒÏÌʾÄÇÇÇÈÇÇÅÅÇÈÉÊÈÊÍËÊÍÎÍÎ̳¤¯±¢©zqt ºÔÛݹV&%%#.*,.121+03(,*+-2<850-*+07Qk¡¢¥¤¢¤£¤££¡¢¦¥¤¤¤¡£¢££££££¢¡ ¡¢¡ ¡¢ ¢¡ ¢¢¡ jehiihgiebgfdbbe`_`__a`_^\YYZ_bjs}¦¦fhiknmkkmoprtxwuvwwz}{|{{~zx{}{y|}~{{~z|}~~}~~}~{{~}z{|}~~|}~~~}~ ¤£²¬¥°µ°±¾½±®¸¿¼²½Àú¾À½³¨°ÃÍÏÏÍËÆÆÇÊÑÖÒÎÌÆÂ¿¿ÁÂÊÅÄÂÂÃÆÇÊÎÓÐÏÍÊËÏÏÍÌÌËÊÊÉÄÆÉËÌÍÎÎÎÎÎÍÎÎÏÎÏÏÎÌËÌÎÍÎÏÎÏÏÎËËÌÐÍÍÎÎÏÎÍÐÐÓÓÕÓÓÒÓÑÏÏÑÑų¤ÅÍÑȺ·ÁÀÆÈÍÒÒÏÍÊÂ¿ÄÆÇÇÇÆÆÅÆÉÉÊÉÇÉÎÎÍÍÎÎÌͰ¢¬£¢jmuºÒÛÛ¾a%"%(40//.2/,,/12*)1279610,,1;Pj~£¤§¤¤¤¦¤¥£¤££££¢¢ ¢¢¢¢¢¤£¤¢¢¡¢££¡¡ ¡ ¢iigjgghdbbffbcda^aa``_^][]\XZaeny~£hikglnlmpqprvwuuuxzx|zzy}|zuz~zz}}}~{}}~{}~}}yy{~~||}}}}z |}~~~ ¤£ª¥¨¯±¬´¾¸ª²»½··½¼¹¶¾»®© ¤¶ÇÍÐÏÍÌÈÈÊËÊÎÍÌÈÃÂÅÊļÀÃÆÊÊÇÃÅÄÆÈËÍÐÌËÏÏÏÍÌËÊÄ¿ÀÇÌËÊÌÍÍÎÎÍÎÐÎÌÌÎÍÍÌÊÌÎÏÐÑÐÌÊËÍÎÌÍÍÎÎÎÍËËÌÌÍÏÐÏÑÐÏÎÎÍÌÓÏÆ«²ÌÓÑü¿ÁÀÇÌÐÓÐÎÌÈÁÂÆÇÆÅÇÆÆÆÄÅÈÊÈÇÉÍÏÎÎÎÎÏδ¢°¥¡ d`iw ºÓÜÜÂa'"&&)/22001011-0/-2676772.158Ii~ ¤¤£¨¤§¦¥¤¥¢£¤££¢ ¢ ¢¦¥¤¢¡¡¡¡£¢¡ ¢¡ ¡¢¡nggiggfbdbedcfdd^__]_c_]\^[Y\^cfq|fejklmpnlprrqsrswwwvxzxv}{||}}|~}~}{}}}~{}~{||{{}}}~~~}|||}~}|}~~ v §¡¤¯´¹Ãµµ»¼¶¹»¾³µº¼°£ °¾ÈÉÊÊÊÊÉÌÏÏÌÇÃÅľ½ÄÍ̺ÃËÐÑÏÎÌÊÉÈÆÅÊÏÏÎËÊÊËÌËžÀÆÊÇÉÊÊËÌÍÍÎÏÎÎÍÍÊÉËÊÌÏÏÏÑÎÊÉÍÍÍÎÍÌÍÍÍÌÊÈÌÊÊËËÌÍÍÌËÍÎÌÍÏÍÁ¯ª¾ÑÐɼ¿ÄÁÂÇÍÒÓÐÍÊÃÁÂÅÆÇÈÈÇÆÇÄÆÇÉÈÈÉÌÏÎÏÏÒÑг¥®¤r\\c{§ÃÓÙÙ¾^&$%$$,/1115431384212799675206Ie£¤£¤¤¥¦¨¦££¥¥¦¥¢ ¡¢¤£¡¤ ¡¡£¤£¡¡ ¢¢ ¡ gfkfggedhhbaabb____`b^``\^Z^Z_dowddikgjopnoqpqtqrttuuwwwxz||}}~~~~}}}~~}}}{}~|}~~~~}|z}{}~~~ }{{ }zz¤¤¬®©«²¸¸µº»³«¸º³¯¶½³£ª¿ÇÊÉÈÇÅÄÅÊÏÐÎÈÇÇÇÄÀÁÈÏÆÂÅËÍÏÐÐÐÏÎÏËþÌÐÎÍÌÌÌÊÇÆÅÈÉÈÅÄÅÆÉÉÊÌÌÍÌÍÍÎÌËÉÈÏÐÐÏÎÊÈÊÌËËÍÌËÌËËÉÉÇÊÊÉÊÈÇÇÆÆÅÈËÉÈÊÌÉÁµ¨¶ÇÏ˸¿ÃÂÃÊÐÑÐÏÎÉÄÃÃÄÆÉÈÇÇÇÆÅÆÆËÈÈÉËÌÏÏÏÑÏͰ¨ªrhc^c{¯ÅÓÛÛ¹S+(#&(0+.1326030032234798:02/7Ng}¢¦¢¥¤¥££§¥¤¦¦¢ ¢¢¡¡¢£¤¤ ¢¡¢££¢¡¢£¡ ¡odffgcffifcdbac`acc``db`\\[YX[^ipxedeeeinpjmnnqqqxuvxzwvx|xu}zy}~}}~~{{|~~|~}|y{{~}|z{}~~}{|~~~{~~}y~~{} ~¢§¨£¨®°¬²¾¸ª«·º¬°¹¿¬¹ÇËÍÍÍÊÇÄÆÈÊËÉÉÊÌÉÉÈÆÁ¿ÄÇËÈÅÆÊËÎÏÏÓÐÈÃÆÉÉÊÎÐÎÊÅÈÎÐÏÍËÉÇÇÇÈÇÇÈÊËÍÌÍÏÏÍÊÍÏÏÌÇÇÊÌÊÈÈÎÍÊËÌÉÆÄÅÄÆÆÆÆÆÆÃÂÁÃÂÂÄÅÅÇÈÆÀ³§ÀÍÍÇÁÁÃÂÃÆÍÏÏÎÍËÆÄÄÄÆÆÈÇÅÆÈÉÈÇÇÊÊÈÉËÍÏÐÐÑÐ˯ ¬¢v^\Z_fyµÊÔÙØ°O&$#*+.0414,.04/,,6423;=@D@H7:Icz £¥¥§¦¥¢ §¤¢¢¤£¢£ ¢¡¢¤££¢ ¡¡¡ £¡¡¡¡¢¡¡¢ edfiecehfdbb`ddaabcbb``_]^ZU[_ciryifefdhjlmmnoqsqvwzxuxxwwwvzzu||{{~~~}~}~}~|zyy{}{}~~~}}~}~~}{~~~}|wy| | ¤©¦¢¤°©¹¾±«µ·³¬²»»¨±ÅËÍÏÎÍËÉÉÊËÈÃÁÂÆÆÆÊÌÉÁ¼ÄËÍÌÉÆÃÅÇÌÐÒÏÎÌÈÉÉÉÊÊÉÅÄÉÐÒÑÏÏÎÎÌÊÊÇÄÂÆÇÍÊÌÎÐÏÍÎÌÇÇÇÉÌÌËÊÅÉÊÉÉÉÈÃÂÄÁÁÃÄÃÀÆÄ¿½»ºÀÂÀÀÃÇÆÄ»¾ÇÌÉ¿½ÆÇÁÅÊÎÎÎÌËÉÅÅÅÅÅÄÅÇÅÆÉÊÈÉÈÉÈÉÊÌÍÏÑÐÐÏɬ¢¯`QT`dl|´ÈÔÙØ¯G(((&+-0044000/-,)--04<>45<543@dx¢¦£§¦¤£¥¥¤£ £¢¤¥£¢¢¤¢¢£¢¡¡¢¡¢ £¡ ¡ ¤¢ ¡ ¡sdegifcefed`aebabbddcca^]]]ZY[`doy}hgfhffimlnoopttrsxutwuuzyvxzy{|z{~~~~}~|{~~~~{||{yy{{|}~~~~~~}~~~xty|y}{x {£«£¦«ª¥¬»º²±¶µ¬¯±½³¡ ½ÉÎÌÎÎËÉÊÊÎÍÉÆÄÀÁÃÃÈËÈÃÆËÌÌÌÌÌËÈÆÇÅÎÐÐÐÍÌÍËÊÈÄÅÇÈÊÌÎÎÏÏÍÍÍÌËÆÃÄÄÇËÍÎÐÐÍÉÆÅÈÊÍÍÍËÊÈÇÇÇÈÇÅÄÄÄÃÂÁÁ¿¿ÁÁ¿¼¹¶¼¾½¼»¿ÂÄÁÄÇǼ¯ºÄÅÄÆÌÏÎÌÊÊÇÅÄÅÅÃÃÇÇÇÇÈÊÈÉÉÊËËÌÌÎÐÐÐÑÏÉ©¤¤lQOT\fqµÇÒÖÒ£E)(+&)*04231/+-2/'.17=72437040@_u¡¦¦¥¤¦§¥¤¥¢£¢¡¡££¢¢¢££¢£¡¤¢¡£¤¡¡ ¢ ¡¢¢¡¡ ¡¡ ¡deekhedbaf_`ccccecgdccb_\]]YY]cls}ddeaefghilnqosrpqtuu{vuy{xwyz||{|}||}|~~~~}}}|{|~}|}||~~}|~ztvywz{z ~|~|{ ¢§¤¨°«®´¶±°²°³«°ÅÎÎÌËÉÊËÍÏÐÏÌÉÈÅÅÅÆÈÆÀÃËÏÍÍËÊÌÍÎÑÌÄÄÆÊÌÏÌËÍËÅÃÉÎËÉÉÈÊËËËËÍËÉÈÆÅÆÄÉËÎÑÏËÂÁÅËËÊËËÊÊÈÉÉÉÈÇÅÄÅÄÅÄÃÁ½¹¼¼¿¾¼º¹º·ºº¹º¼¼ÂÇǼ¬®¾ÄÅÅÊÌÌÍËÉÈÄÃÃÅÄÁÄÇÈÈÈÇÇÆÇÉÊÉÊÌËÎÏÐÐÕÑͬ§{[QSY\hr¹ÈÓÕÕ¨B8=*+'025100.+-0-,/5528EA;4243<`u¡¥¤¥ª©§£¤¥¡¤¡¡¢¢£¤£§¢£££¤¦£¤¤¡ ¤¥¤¢£¢¤£¢¢ ¡ ¡ yfefgcabeea__abbbbbcbb]`_^[XXW]gozheecdceghkmrppqpstrsxyzxzyvy{}|z{|{z|~~}~~}|{}~}y|~|}}}~|}~}~zv|}vyx| |} y{ z ¡§¥ ª¯©¤¶´¬²³¬¡³ÆÐÎËÉÉÉËÎÏÏÎÌÈÅÃÄÆÊÅÀÀÆÉÊËÍÎÍÌÍÎÎÎËÅÄÆÉÊÉÈÉÆÄÉÌÎÍÍÍÈÈÈÆÄÄÅÅÃÉÇÈÊÊÊÊÌÎÌÆÀÃÇÌÊÊÉÉÈÉÉÊÊÊÇÆÇÆÆÅÇÃÂÄÁ½¹·ºº½¼¼º¹¸º¼¹¸¼ÆÉij¦´ÅÅÇÊÐÎÊÊÇÆÅÂÁÂÃÃÂÄÇÈÈÈÉÇÆÉÊÊÉËËÎÐÐÒÐÓÔί¨_PUY[^gv¨¹ÈÑÖÔ F/?,))/03211,.//+*,,.8>@A8/,21=Xq ¤¦£¥¦¦§¢¢¤¡¡¢¢¢¤¢¡¡¢¡¡£¤£¦¢¢¢¢¢£¦£ ¡¡££¤ ddeifecbfdaccefcbddddbba`VUUT[cis}jjhffefillopopqortrtvxxxwx{|yz||}{{{|}~}~}{|}}|||~}{}~~}~{}}|}}~~~|zyzxy{}~w|z} ¤¥£¬¬¢§±»´¨´´§«¸ÄÌÌÉÆÃÅÊÎÎÍÊÇÆÅÃÄÅÄ¿½ÃÊÊÍÊËËËÌÍËËÌÎËÈÉËÌÊÇýÂÌÎÍÍÍÎÊÈÈÇÅÄÄÂÁÄÆÈÌÊËÎÍÌÇÄÁ½ÄÊËÌÊÈÅÈÈÊÉÉÇÆÉÅÈÄÆÄÄÃÁ¿¼¶´µº¾¾º·¶³¶¸¸ÀÌÅ·±¸¿ÄÆÈÌÏÍÊÇÅÃÁ¿ÁÁÂÃÃÄÇÈÈÉÉÇÇÈÊËËËËÍÐÑÐÒÒÓΫ¢£tROU\d_fy®¾ÆÐ×Ò?'+)'*10211/++.*))*+/5::40)*/06Tm¡¥¦§¥¥§¥¤£¢¢¢£££¢¡ £¤¡¢¢¢¢¢¡¢¢¡££¤¢¤£¢¥£¡¡¡{cbffkdddbdfeegebfgfdcbc_XXXXZ^cmy fggfddegjikooqqnpprvvxywvtwyzy|}|{}{|~~}}{{~}{z}~~}||||}}|}~|~|yz|~}~ yvxy|~ |z ¤ ¡¤¨¡ª³¶°´µ¯¡»ÅÉÉÉÉÆÃÁÄÆÉÊÈÆÂÂÄÆÄÀ»½ÃÉÊËÌÌÊÉÊÌËÌÌÌÈÇÇÇÊËÉÃÁÄÊÍÌÌÌÎÍÉÈÈÈÇÇÆÅÅÆÆÉÊËÊÉÁÁÃÄÃÃÅÇËËÈÅÈÊÉÉÈÇÆÆÅÆÄÄÃÆÃÀ¾½»¶³³¹½¼·µ³°¹ÁÆÆ¹¯¶À¾ÅÅÌÎÌÊÈÆ¾¾À¾¿ÁÂÅÄÄÇÈÉÊÉÇÉÉÊÊÊËÌÍÐÑÐÑÑÒÌ£^MRYY__gz³¾ÃÎÕÉ9%')&*045316.,+,-,*+.1:9/,)+;35Ok ¢§§§¦¦¨¦¤£¡¡¢£¥¤¡ ¢££¢¢¢¤¡£¢¤¢¡¡¤£¢¢¡¢¦££ bbgdddbecdedcbdddbfba`a`XUWSTZ_iu| heddffeeeglnnqmmnoqswyzxxxwy{y|wxw{}|z{{||~{|{z{{|{|{{z{||{~~{z|~}}}}yy}{z|zz ~ y £¢¢¢¬³¬®´¦¨¾ÊÍÌÊÉÈÊÈÃÁÃÂÂÀ½¼ÁÆÂ¼¼ÁÅÆÅÆËËËÌÍËÍÍÎËÉÈÈÆÄÅÂÀÄÇÈÈÊËÊÎÍÈÆÇÉÈÉÈÈÉÉÊËÎÏÉ¿»ÁÅÄÇÅÆÇÊËÊÈÊÌÈÇÇÇÆÄÃÅÃÃÀÁÁ¿¾º¼¹¶²°²²³·´²ºÈÌ¿®®½ÃÃÅÈËÎÊÉÅÁ½»À½¾ÀÃÃÄÅÇÇÆÉÊÈÈÉÊÊÉÊËÌÏÑÐÑÒÒË«£¢hOSXZY_em¶¾ÅÍÔ·a-&&*-./314541.)),*()*07:4/)+156Og¢§¦¦§¥¨§¤¤¡¤££¥¤¢¡¢££¢ ¢¤¢¡¤¥ ¢ ¡¢¡¢¢¡¤¤£¡¢¢¡ ¢ ~gfdccbccdedbadcacfeba^][WTUQTZblt|mhbdjigfghlljkmqnpqquvz{xzxyzzz{wwz}~z{yx}{~~}~||{y}{~|~~~~~ ~~~{}}y{}|{{||ywy}~}} ¡¥¨²¯¨±®¨³»ÃÇÈÊÈÊÎËÆÃÂÁ¿¾½¾¼»º»ÂÅÇÈÆÄÄÅÄËÌÌÎÎÌÊÊËÊÈÄÀ¾ÂÆÈÉÈÉÉÉËËÆÄÇÈÈÈÉÉËÊÍÏÎÌö»ÇÉÇÈÇÇÈÉÊËÇÉÊÉÇÄÄÃÁ¾½½¾¾½Á¾¼¼¹·¸µ«©ª¬°¹ÂÌȳ¤±¼ÃÃÆÌËËÉÇÄÀ½¾À½¾ÂÃÃÆÆÈÇÇÊÊÊÉÉÉÊÊËÌÍÏÒÒÒÒÐŪ§{YNU\^W^iw¥µ¾ÄÊÉF+&'(...322111.--,*(*0126332/,37Mdv ¡¦¦§¨¦¦¨£¦£¤¢££¦« ¤¢¡¡¢ ¡¡¡ ¡¢¡¡£ ¡¡ ¡ ¡kceecdddbegefgedffccc_]\[UURRUValr|hgijicfefhihijmnoprttswvvxy{zxy}yyx{~y|xy|||}{~~}~~~~{}{}~~~}}y|{{yw z~}{wx}{zvt~|~y z § ¬¬¤«´¬®ÀÃÁ¿ÀÁÀÅÈÆÅÃÃÃÂÁÂý¯´½ÄÆÆÈÉÇÄÄÄÇÈÉÌÍÌÊËÌÊÇÀ»¿ÇÉÉÉÉÊËÊËÉÇÅÅÆÆÇÊÊÉÈÈÌÏ͵¬¾ÇÉÇÉÇÇÉÈÈÈÆÄÆÇÇÅÃÀ¿½»¼½¼»¼¼½½¼´²³¯¨¥£¤«¾Ëȼ¯ª¸¹ÁÄÉËÈÊÉÆÃÀ¿Á¾¿»ÂÄÄÆÇÉÊÊËÌËÉÈÈÊÊÍÌÍÏÑÓÓÔÒÀ¦¥¡fQKTW[Z\g}©µ¿ÇÄU5,'*,+,.534775-/3/02112157<20376Jat ¤¥¨ª¨¨¨¥¥¦¥£¤¤¥£¡¡ ¡ ££¢ xbcfadfgfehhjhgfgbcdc`]\[VYXQRS]envjefgjgfgfijmlpnlkosrsstuv{{ywz}|{y{{}{yzz}{zzyy|{z~~|{{{{}|z~}{~|zz{~~{w|{y{yxvxutx~ ~ ¢«¢¡³¶¨²ÀÄÄÂÁÁ¿À½½¹½¾¿¾ÂÆÃ·±¸¾ÄÆÅÇÇÇÇÆÈÉÈÅÅÇÆÆÉÌËȾ¾ÄÊÌÊÈÈÉËËËÉÈÆÆÆÆÆÇÇÆÇÁÂú¬°ÁÇÉÇÈÇÉÉÆÆÆÅÃÁÁÅÇÂÁÀ¿½½¿¾½¶´¸»»¶³²§¥£¦³ÃÌÀ¶±º½ÀÄÈÉËÇÅÆÄÀÁÀþÀ¿ÂÆÅÇÇÉÉËËËÊÊÉÈÉËÌÌÌÏÑÓÔÕÔ¼¥y[RRUVY][j¢µºÄ̾n3,'(-.+-033458:0-21/1301584127/44H]p~~¦¦§¦§£¦§¥¥¥£¤¤¤¤¡¢£¢ ¡¢ ¢¡ ¢¢ kcdghehecfgjiiehdaad`^]^VXTPPSU]hu{hedchfhhgijkkmmkjorqrstwwxyyzyx{{wwy{|{|{wyzxyz||~|y}z}~|}~}~~zx|{wxzwzxxywvv} ¤¨©µ³¡ªº¾¾¿ÀÅÆÆÄÀ½¼¼º¸¹¿Â¼¸·¾ÂÃÁ¿ÀÁ¿ÁÄÈÉÈÇÂÂÂÂÅÆÅ¿½ÁÅËÍÌÉÅÇÉÊÌÊÊÉÉÈÇÄÅÄÄÃÀ½² ¨ºÄÃÃÄÅÄÉÈÆÆÅÄÂÁ¾À»»¼¾½¾¾¿¼¼º¶³´¹¸·³ª££®ÀÊÆ¸®¶ÀÀÁÇÌÌÈÇľ¼ÀÂÁ¿¿ÀÁÅÆÆÇÉÉÉÊÊÊËÊÉÈÌÍÌÌÎÑÓÔÕÓ·¢z\SUSW[[aft§¼ÀÆÈ¤Q**)+*,0034845750,15+/2./46400//5:DWl}~x}¤¨§¨§¥§¦¥¤¤¥¦¦§£¡£¥¤¡¢¢¡¢£ ¡ ¢ ¡ zceeifeecdfkchhddbchdaa]ZURMLLOXajvdcfcfdfffggkjlklmmqopstvtuvzuxwwxvxyxzz{z~}x{{yz||}~}~}}}}~~||}yy ¤°}|yvyxz{xwwrxx{}vy zz }¦£ª¯¥{¼ÂÀ¾¼¼»ÁËÇÃÂÁ¿º·º¿¼±ºÁÄÆÃÁ¿¿À¾¾¿ÃÉÆÇÄÅÅÅÄÅÀ·¼ÄÇÉÉÊÈÅÅÅÅÇÊÊËÊÈÈÉÉÆÄÅÀºª¥¹ÃÀÂÂÄÅÅÅÅÄÃÃÃÃü···¸¼¼»»º»»¶³´³µ²¨ ¤¸ÉÊÀ³¶ÀÂÃÄÍÍÌÅÆÄÀº½ÁÂÀÁÁÁÃÅÆÇÆËËÊËËÊËÌÊÉÊÌÍÍÏÑÓÓÓǰjSPUVX[`ho«»ÅÆÅ9)*,/.-..6;611540,.1,,,+/14621022<ERh{~|z}£¦¨¨¤¤¦§§¥¤£¤¤£¤¤¥££¡££¢ ¢££ ¡ ¡ pigfddggfhifdjbcacd]^b[VPPMLKMQ[fsabgiffcgcfgjkljlhjknrrqtuttwyyxwxsuvxvwxwx||zz{z{}~|~|}~}~}~|~|}zz ¤ {{xwvttzyuuxxwzzvu}~~} £¢¬©ÁÅÄÂÂÿ»½½¿ÃÅÅÂÂÀ¾·µ¼ÅÅÉÇÇÆÅÃÅÃÀÂÅÄÃįůļºÂÇÆÇÇÅÃÂÃÀ¿ÁÅÇÉÉÉÉÊÌÉÈǵ§¶»½¾ÀÃÆÆÆÃÁÂÃÃÄÄÄÀ¾¸µ¸¹º»»·¶¸¹¶´®©¡®ÂÎÄ·±¼¿¾ÁÆÐÌÊÈÉÄ»¹ÀÁÁÀÂÅÄÄÅÇÈÊÊËËËËÉËÌËÉÉÌÏÎÏÑÓÓͶ s_USVWR[co~¡²¾ÆÈÁy,%*.0/.0027563223.-.*,-0/3434/003?CRkw ~w{ ¢¦¨§¦£¤¦¦¥¥¤¢¢£¤¤¤¤£¤£¤¤¢¢¡ ¡¡ ¡ {hgcbeffehijedcaabc\]]ZVVROLKKNVbpegkiheegefhijkjjlkmpqprtrutuwxwuwvusxwyzxy||}}||}|}~~{}}}{~~~}~~z|y| }~{xuz|zwy~}yvy}yyy~|x |ª«¥µÅÆÆÄÅÇŽ·¸¼¼½¾ÂÄ¿¸¾ÀÀÁÄÇÅÇÉÈÉÆÃÃÄ¿ÀÁÂÃÃÀ»¸¿ÈÊÉÈÇÅý½ººº½ÂÂÇÈÈÈÉÊËÊÈ·¡±»½¼¿ÂÄÅÄÄÁ½ÀÄÅÅÅÂÀ»¶³·¸¸¹¹¸¯°³³³¥¡£¢£»ËÉ»²¹Á½ÁÆÌÎÊÈÇÆÂ¿¿ÀÁÁÂÂÃÃÃÅÈÉÊËÊÉÈÉÉÌËËÊÊËÍÎÐÑÕÐêx]ZXTWYX]gvª¸ÅÉÊÄp.*0//0-2545586.372,+,-.6+330572.7BCOfvy{¡¦¦¦¦¥¦¦¥£¤¤¢£¥¥§¥¥¥¥¤¢¥¡ ¡ qedecdffhiecbfbb`^]\[^TXTVQKHKQ\gghefffjeefhhjimiklnqppsrsvutvzywvxwy{yx{|{|}}{z}~~}z|}}|~~~~}~|}||~zx}{zzwxyrvzzw}zy}||}{x~{}}~w{y ¡¨© ¥¼ÄÅÅÅÆÆÆÇÂÀ¿¾º·µ¶¸¶½ÅÇÃÁÂÃÂÁÃÅÇÉÈÆÃÀ¿ÀÀÁÁ¼¶»ÄÆÇÇÈÆÆÅÂÀ¾¿¼¼½¾¿ÂÂÅÊÉËÊÅ´«¹Â¿¾ÂÆÄÁÀÃÀ½¾ÂÅÇÆÂ¾¹µ³¶¸¶¸º¹¶³¬©°²ª¡¶ÈÍÁ·µ¿ÁÂÄËÎÌÊÇÅ¿ÀÂÁÁÃÃÂÃÃÃÆÈÊÊËÊËÊËÊËÌÌËÊËËÍÏÑÓɲg[ZZXTY[bl¥±ÀÇÆÍ¾e,*+/-/-.7==4422875/,+*+/.1306212<EEOdt{|~¡¥¥§¦¨¥¤¤¥¤££¤¥¦¦¥¥££ ~bbfefdcdldcbdc_]\]]Z[WSPPOKGIPW`ihfedfgfddefjgjjiknkmqsstvuqtxyxvxxw{}|{zy}zz{z{|}~{}~}|~} ~||~~{{yzy}{{zwx|xuwwv}{v{}{{|~ux}}|z~ |}zx{¨¥¡°ÁÃÂÅÄÇÆÃÀÀÃÃÄÁ¾¸®²¿ÇÊÈÇÅÄÅÿ¾ÂÈÊÅÅÀ¾½¼¼¸¶»ÆÈÇÅÅÅÂÅÇÅÄÅÄÃÄÂÃÁ¾ÀÅÉÉÆ¶¦ ±»Á¾»¿ÀÀ»¼À¿½¼¾¿ÁÂÁ¾º·µ¶¹¹¹º¹·¹´¨¥ª«¡¥ÂÎǶ®¸½ÁÂÄÊÌËÇÆÁÁ¾¿ÁÁÀÃÄÂÂÅÆÇÉÊÉÊËÌÊÊÊËËÊÊÌÌÌÌÎÐÑ» jZ\]X\[^_bo®¸ÃÅÇÌ®P('(,-.0356:42/5:6220,,++-24243428CFQdu ||} ¡£££¥¥¤¥¥¥¤¡£¤¦¤¥¤¡¡ qbcdafdcccbdca_]Z[\Z[XTPQQMIGIOXlgfefeffhgddhjhiimoppoqnruuutuxvyywwwyy~~zyxz||||{~|{|~|{}~{}~|}|xx{ ¡uox{xyyz~|vuutzxrx{|}~r|{zyzy z~|z} ¦ §º¿¿ÁÅÈÉÆÁ½¼¾ÀÀÂÄÁ¶¹ÃÆÇÅÆÆÆÈÈÆÀ»»ÀÂÂÃÄÄÁ¾¸·¼¾¿ÃÅÅÆÆÅÆÇÇÆÅÆÅÄÆÆÅÄÃÂÆÉÄ¡³º¼½¼»º»·¸¾ÀÂÀ¿¿¾½»º¹¶³´´º¹¸¸¸·´¯©¡£¡´ÉÍÀ²²¼½ÁÆÌÌËÊÈÅÁÀ¾¾ÁÁÂÄÅÄÃÆÆÆÉÊÉÈËËÌÊÉËËÊÊÊÊÍÍÎÎÁ¢g^U\ZX\]_dn|¥±»ÁÂÅÆ@+'*+0.17897<96555310./--.-0158437<>Las~{zx¢¢¡££¥§¥¥¥¦¤¦¥££¡ ~c_efeedfbada]_\Z[[YYWTQQRNMIFJPhfjdidfihhffgfhiinmnpqpnprruuuwvwvwvux{}zzyy|}|{|}{}|{z||~~}|~|}~|~zy|³¤rgmmxyvuy|xsyyzwtv{~{wxx~}}z | ½ÂÁ¿ÀÄÉÉÅÁ»»À¿¿½´±½ÀÄÃÃÄÄÅÅÆÆÄÁÁ¾½½»¼ÀÁ»¸¼ÄÆÃÁÂÁÁÃÃÅÇÅÅÄÄÃÂÄÅÈÆÉÇÄÆÀ¨§²º¾¾¾»³µ¹»¿ÄÆÂ¾À¼·³²±²¯±°µ¸¸¶µµ¶³«¡®ÄËŵ»ÁÂÆËÑÎËÉÅÃÀÀ¼½ÀÂÂÂÅÅÄÅÆÅÉÈÇÊÌÌËÉÉÊÊÊÊËËÌÎÏǨ lUW\^bV[]dly¬²»½ÀȺi/))*'.1365258951286.142.*+*2677337;?H]p}{xv| ¡¡¢¥¤¤¤¤¢¢ ¡ uffgdeda_^^_[a][Z[ZZVTUTTPMJDGPiihfhfedgjgcfijhfjklnqqrssttxwxvxvuuxz~zy{{zz|{x{}~{{z|{|}~}{}~}}~~{|¯dYepvuuuz|vqtywvru~|}|u}xw~x~{}~| }¯µ¹¿ÂÿÂÂÁÀÀÂÂÀ·¬·¾¿ÀÀÀÁÃÄÂÂÁÃÅÅÄÂþ¾½¶¯¹ÁÇÉÉÆÄÂÀ½¼½À¿ÁÄÃÃÂÄÃÃÄÇËÈÇ»¦¤±¹¿½½»·´µ¹º½ÁÅÄÀ¾¼¸±°©ª«®²µ¸¶¶´³°ª¥ ¸ËÅ·²¾º½ÃÈÏÎËÊÆÃÁÁ¿¼¾ÀÆÂÀÃÅÆÆÇÉËÈÇÊÌËÊÊÊÊÊËÍÌÌÊÍ̵l[VVX]^Z[bhs «²·»ÃʯP+(,**.-22432375148710/.,*-,16890/6=DGWl xv~ ¢ ¢ hbehfca^Z[]_`^[[_[ZXUVXROMJFFJilfhgfehhhfdhffhghlkkooqrtrsyxxxyxyxvy}zyy}{{}}{{}{{|{}{|}{z|~|~|{{y{}ªc]`nruwvxxsmluqtvvwzvwy{yw}w~ws{}~~}¨±²±µ¿ÆÇü¶¸½ÁÃÃÁµ³»ÂÁÀÀÀÂÿÁÂÃÃÂÃÃÄÃÂÀ´¯»ÅÈÈÈÇÆÇÆÂ½¼ÀÀÁÁÃÅÅÆÄÃÃÆÇÇõ©´¼¿Ã¾¸²µ¹½¾½¼½¿ÃÀÀ¿¹µ·³¯¬«¬««³·³²®¦ ¬½Ì¼¬°·µ½ÄÌÏÎÉÆÃÀ¿Á¿½¿ÁÄÂ¿ÃÆÆÅÇÇÉÉÊÉÍÌËÊÊÊËÉËÍÍÌ˼n]UVXZ_]`aqx¤®³µ¼ÇÄ<)&,(-..2/5614544:4:7001-,.+1277426@AIXm|yzxbchdaa^\_^Z]`]\]\[ZVW[TPMLIEDijgffedecdfegbchihlklmmqrsrsuyyvxxvxyyz{{z~~{~~}}}||}z~z|}||}~}~~}{|zy|zz~»¡g`enpqsvvtnlpqqvutuxzu|{{~{vyyx|msw|x¡±±®±·ºº¾Ä¾»¹»¼»¹´¯²¶º»»¼ÀÅÆÃ¿¿ÂÄÂÀÂÂÄÃÿ²·ÁÈÇÆÆÆÆÉÈÆÂÂÄÄÂÃÄÇÉÉÇÇÇÇÈź¨©º¾½½·±¯µ»ÀÂÃÁ»¸»¼¼»µ´´±¬°±°°¬¥£¬¯°ª¤©ºÄ´°·¹µÁÈÍÍÊÅÄÁ¼½¿¿¿ÁÁÃÄÂÄÆÅÅÆÇÉÈÉÊÌÍÍËÇÊÍÌÍÎÍÌÁr[WTUVV[^cjv ¢¨®²´¿ÌÃn0'&'+),040355667:;451-.3/0-,16561/17?JZk~|~ j`__^`b_]]]\_^[a\[ZYXVWRNMKHGijkjccdedcdcddihhhghoqoppprrqyxvwvvy{vz{z{|}z|~|}|}}~}}|{||}{|}}|{z{{y{zÀ¤wiprmnwvsqmmoquwwurxtl}|||zytxx|xv| }³º²±µ¼½·²»¹¸º¿ÁÀ¶¨§³¾Á½º»½ÀÃÃĽ¾ÄÅÅÄÂÂÁ½¶¯½ÅÈÈÆÅÆÅÇÆÅÅÅÅÅÀ½ÁÅÈÊÈÉËÊÊ𤰻¼ºº³±·»½¾ÀÁÁ¾»½º¶±±¦¦¥¬¬±´°¦¡®¥¤¤³Ãź·¾½ÄÆÉÌÈÆÃÀ¸¶º¼¿ÀÁÁÂÃÄÄÈÆÅÆÇÈËÌÉÌÍÎÌËËÎÍÏÏÎÃv_VYXUSV]`do¥¨©¯±³À˳`+&($)*.00243347:B@31+++).3+-12671+0;=HYl} |x|z\\]]]`_\]`]^a_[\[Z[\XXTQPKIJehklidfffeffhjjfegggknnnnoqqstuwwvxyyxyzx{}|{|}{~|}{{{{}{}|}~}~||zxzvx{sloroqtuopmmpsvuvwrtpq}}zyzwtx{s}} ~}ª»»·²µ¼À½¸´³µ±º¿º®¦«±·½¾½½¾ÀÁÃÂÁ½¸¹½ÃÆÆÅÁ¸²¼ÂÄÄÆÇÇÆÄÂÁÅÅÃÄÁ¿½ÀÄÈÇÈÉÊȾ©§±¹¾»¨°³½¾¾¾¾¿¾½¾¿¼·³µµ²°®¨¨©µ¯£ ¬Àȼ±²¸·¾ÆÈÉÊÈÄ¿¸µ¶¸º¿ÀÁÂÃÂÅÆÈÉÈÈÈÆËËÉËÍÍÌÉËÎÎÎÍɰvZXUVUVUXY^m|¢¨ª«®²·ÄÌ«L%'+'&,,0/3322554:?51/,./.0..0534414<ADSj{} i_baad]\^`^`^`c`\ZXZYYVSPKJJfhkledfggfgdehhdbehhggkonmqrvtuyywwzxuvyyxyzz|{||~||z~}{xxy{y}}~|||}zy}~zyytx|{znmrqtvtqnmjpprxwsrsuoy|xy{zyxozxo{~~y~ ·Ã¿º¹»¼¼½¿¶·¸¸¹µ«©¶»ºµµµ´·»¾ÂÂÁÀ¼¹·¶»»¼¹µ´»½¾½½ÂÃÇÈÄÃÃÅÅÃÅÿº¼ÁÄÈÉÊǶª¬·¾¾·¦¨±¸½¼½¿¿½½½»¸µ¶¸¸¸·µ¸·´¯¥¥§ª¡¢¶ÇƱ§·»¹ÂÉËÈÇÃÁº´µ·»¾ÂÀÃÄÅÅÆÇÇÈÈÉÉÇÉÊÉËÍÌËËËÍÍÏÌ´ bVWXXXVSXZbw£§¦¨´»ÊËG,'''*--02444:<::956110.../1,/320100;@CShu}~ `^ageaa^bac`^dc^YUY[ZYXVNKIljjjgfgjebfcehgefeefhiklnmquustwxxxyxyzxuxxz}}}}}}{zz{}wxxyy||{|{||z|~xz{x}|||plmpotwrknjjoorwwtttss}|vuyyurzvoyw|zy} ~{²¼ÂÄÃÄ¿»·µ¹»¼½À·¨¥°»ÃÀ»¹¶·¸¸º¼ÃÁÀÀÁ¾¼¼¹±©«¸ÀÁ¿¾½ÀÀÂÁ¿½ÁÃÂÂÂÁÀ¾¼¾¿ÃÅÆÂµ¯®´¹½¹²®¯±¸º¹º½¾¾¾¿»·³´¶´·µ´ºº¶³¯¡¡«¿È¿¨©¶ºÁÆÊËÅÿºµ´¸»¾ÁÃÁÃÅÅÆÆÇÇÈÈÉÊÇÆÈÈËÎÎÍÍËÎÐοhZSWZ[ZWV[ao ¢££¢§®µÁÎÂ}4'%'*.0..36558964>6752.-**+0/13741/068CMgz{k_aba^d_^`a_aa__]YX[VYUWQNPjhgcghggfdegehhfgeefhklklnqtsrtuvvwxzyzwuxxyy}~}}}yy{xwy|{y{z{||{|~~|{}zzz||vnqqosproljmpssuxursrx}|sqxvyzvtrvy~|~t| |{¬¯¬ºÀÆÈÅ¿¶±º»½ÁĹ©±¹»º¹¹º¿½Á½¾¾½º¸º½¿ÁÂÀ¹°»À¾º¼À½¿Á¿½¾¿½¼¼¼¾¿¾ÀÁÁ¿¹¹²¬±´º»¶ººº·¸¹¸¸¸¹¹»¼º·µµµ³²²³¸¶´¯°©¢¹Ä¼©²¸¿ÃÆÇÄÁ¾»¹¶¸º¼¾ÀÁÃÃÄÆÇÆÈÈÈÈÉÉÈÅÇÇËÌÎËÌÌÎÏÆh]]\YZZ[XZ_m~£¤¡¥¥¥©±¹ÇÏ´]*'('+.-.022114867:7576,,((,0/46641//75EQfz~ }`bca`ed__aaa`ba^][[ZXTQPOQijhgfdehfefgfdeceggffjlkkmsrppmqww{yvx|{wwzyy|}y{}{uz|{xy{||{z{~{}~||{{|}{}}|yknsrsrpmggknswxzpqprz{|vvy{wvyrpvx}xv~~{~|£²³´·¹¿ÅÆ¿¼º½½À¿¿µ¯¹¿¾ºµ³·º»»¼¿ÃÁ¹º¹¹¹ºº½µ®ºÀ¿»´µ¶µ¸»¾¿¾Â¾¼½¼¼¼¿ÁÄĽ±§£±µ´»½»½½¾»¾¿¼¹¹¹¶¸¶²±°°±³µ³··²²®§¨°ÂÇ´ª°¶ºÂÂÄÆÁ¾º¸·¹»º¾ÀÀÂÃÃÅÉÇÇÉÇÇÇÈÈÉÇÇÆËÎÍËËÎÐÌ®tZYZa]ZYXWap~¦¦ª¬§§¶ÀËÊ E&(4+)+,-00.//2763674312+))02047611/234@Sev uecbafc``aabbaa][XYZVUQPOMhihffifeeegfjbfeffiffjqnnnnnopoqvxzyw|zzyz{|x|yz|zzyx|z{zyyzz}~|z{{{|{|||}{nnorrkinlklkrxs{ssov|xtuzzytuzpstw|~}} } |w|{§°»Á½¹º¹·µ¾Ä¼ÁÀµ±»Á¿½¸¸»½¼º´¸½»¹ºµ¶¸¶¸°£¨¶ÁÁ½¸¶¶µ³²º»½ÁÀ½¾À¿ÀÂÅÃÁ¹§´·¸º½¿½¾¼»»¿ÃÀ½»¹¹¸´±¬¯®±³··µ³¶µ±¦ £¼Å»°¶®»ÇÄÅÿ¾»¹º»¾¼¾À¾ÁÄÄÅÈÇÇÇÆÈÉÇÈÈÈÅÄÉÑÎÍÌÎο`WZ]^\YXW[m¦§¥««©¯½ÄÍÉ;%&)()*+.000211385569542*)(,-0014310./.6Ocs~ ¡ gcbacbbbc_aabaaaZZZYWTRMOgffedfgdfeddeccdbdefgioqjoqoppotvuxxx{z}x{{wx}z{{zxwx{~{{{xvzyy|y|yyz|}{x{~yz~{mpptpklkiqokptyzvvmzyxuyx{ulttquuxy~x~} vyt §§ªµ¼¾¿½´±¯µ¹»Á¾«®¶º¼ºº¼»½À¿¹¶±³´¹¶·µ´®¥¥´º¾¾¼¶º»·¶¸¹¹º¸´·¹»¾Á¼·±£¯ººº¸»¾½»½¼¼¼ÀÁÀ¾¾¼»´±¯®¯¬¯°¶²³··±¬§ ¤³Ãó¨·º¹ÃÈÉÇûºº»½¿¾½¿Â¿ÁÂÃÅÈÆÇÇÅÇÈÆÆÆÈÀÁÇÎÐÎÏÑͦp_[Z[`_XY]i~¢£¦¦¤¦§®±²¾ÆÍ»v3%$%&+--136453204624873.-+%'(-.-061/+.28E\p~¢¡¡ ¡¢¡ }~eeac`_`ca`bc_`^[XYYWTTRPedceddeeddefjfeefgghifkonpqqqrquvuwzxxvxwyzzy~xxyyxxyyy|zzyxx{x{{zy||x|yyxuv¥³rqtspkmhhnmoqvzwwst{z{wzvxtqrotzz{zy~y{y{u¬²¯°µ¶µ¸»¶°®²¹¹°¨°»¼»²´·¹¼ÀÃÄÀ¾½¸¶¸¾À½¹¡¬¼¾½À¿¾º»º¹µ¹º¹µ°±³¾¿¹¦¢¨±¸µ³³³¶±µ¸º¸¹»¾¿¿¿½ºµ³³®¬¦¦¦¨ª®³µ¯ª¦¬¾Äº®®´·ÁÇËÉÅÀ¼º»»¿¿¿ÁÀÂÃÁÀÄÅÇÈÇÆÈÉÉÈÆÇÇÀÁÃÏÒÏÏÍÀcZ[\\ab]\f|¥¦¦§¥¥ª²ºÀÆÌ§T.,*!$*,-.389722/56579972+,*&(,)-/540)-49E]r} ¢¡ ¡¡¤¢¤¥£¢¡£¨recfecgbaaadga__XYVTUURPcdcfgfefdgbbhhfedfffigjlooqoportsvxyywwvwxxyxyxwxxxyyywy{{|{z{}|zzx~|zx{{~x¨¹nrqolkiejnnvsvywuryzuxx{zs{ssxz}~}} |w{vro}´´¶»½»´¯¯¬¬¬±¸±¤ª¶¶·¶µ¸¸»½½¿ÃÂÂÀ»¹¸¹¸¶«º½½½¿À¿¿½¼»¼½º¶µ±®®¯³»½¾²§¦¯°®²µµ´±°²µ¸¹·º½¾¾¼º¸±±²°®ª¨£¥¤¢¨¯®§£¡¤·Å¾¯µ±¼ÆËÌÈû¾¼½½¿ÁÁ¿¾ÁÂÃÃÄÄÆÇÇÇÈÇÈÉÇÇÈÁÅÈÍÏÑÎÉ®od^```admz££¥£¥§§¨®´¼ÁÅ´v=)'$%'),/35783222:8;876500-/#)+(,3521*.38FZr|¢£¡¡ £¤¢ ¢¡¢¥££¦¦¥££¢ ¥¬ccfbdfda`ahga]\]ZVRRTUSggdffheghkgddeeieffdgijjnnoqrprussvxyvywyyzyvy~wxwuy|{xxzz{}|z{{|{||{||xxyxz¬qstmljmjlnpuvtwuqu{yytxy~sosotsz{x }~w}uiqo¨µ´·¼½Á¼²®ªªª©°¯¥ª¯±®¬²»¿ÃÁ¾¹¸»¾Á¿¾»¹²ª¥¥®²´²³¸¼¾¾¾»»¿¼º¹¼¸´µµ³º»¿¶©¬³²´µº¹²¯±´³·¸·¹»¾¼º·´°°®¯¯«ª§ªª§¥¢§ª½È·¦¬³¾ÆËËÉü¼º»¾ÀÁÁ¾¿ÂÂÂÄÄÂÆÈÇÇÇÅÈÇÅÆÉÈÈÊÎÍÐÌÀ{{|lid_eq¥§¦¦¥¥§§ª´¹¿ÆÉ;.+*0,*(/037655456:896853.4--+*+)-540-+.06FWm ¢¥¢ ¢£¡£¡¡¢¢¥¤¤¢££¢¤¦¢¤¥¤¢¢¡ ¢©±µwbbaefeebfhee_ZZXYVRRSPljdfeeggglmigfefefgfffimmmmmqqsutswwwvvwwwwxwzywvxrx{{{zzyxzzx{|}~}{x{{{|zxzz}pqtokknpnqqvyvuvt{}wwtqv|qqjirrz{{|z zyzomq²µ²¸¿¿¾»µ¶¯°°³µ«¨²·´®©§©²¹ÀÄý·³³µ·»º½·«¢¬³³²±°²µ¹¶´¯®¯±¯·¸¹»¼··º¿²®±¶¶µ´º¼±«¯¯³¶¹º»»¹·³¯°®®«©£¥ª§¡°ÂÁ±±´°ººÇËÊǽ»»½¾¿¿½¼¿ÁÁÂÃÃÄÆÇÇÇÆÇÈÆÆÆÌËÉÉÌÍËÀ¢{upjr¡¤¥§§¦¤¨«®³»ÁǾu1'()0(')11478:97657<96832111,.))+.13.-.378DTp~¢¥¦¥¤¢£¡¢¢¡ ¢¤¢£¢¢¦¤¦¦¤¥¦££¢£¡¢ ¡¦¬³·¢bcdfdcgfd`bfb][ZXVTQROgdbceehfegggijeifgeeeghlmlkkmsxutsuvtvuvuutty{xzzzvuv{~y{zwwxy}yxwz{{{y}{{zzx|¥trnkjljronrwztust{|wssmwxtthjrp{v{z}}vmol¨¯µ¹ÁÂÀ½¹±²²±²·¸¥£´´µ´°ª«³µµ¹¿À¼½·µ³³³°ª¤¨±µ¶µ²¯²··´²«°®§§©±¹¿»»¼·®²¶¸¸µµ·¹µ³´±±®®³³¶¶¶³±°±¯¬®¯£ £§¢¬½Áµ¬¸¼¼½¼ÃÆÇÅÁ¾½¿¿¾À¿½¿¿ÀÃÄÄÅÇÅÆÆÄÆÆÆÇÉËÊÉÇËÌÆ¡}~ ¢¢¤¦¦¦¨©¬¯°²¹ÃÆ¢R*)0,*+*+02756;:3745457;:3..;4-.-)3020/2016AQk|£§¥¢££££¢¡¡ ¡¡¢¡¥¤£¥¤¥¦¨¦¥¤£¤¡¢¢¡¡~~ ¥°¶¹¾ghfgekifeacc_^WVRSRSQhddfijhgcecigeefedaeffhkhkjnpswwsqqtsvtstuvuvxwyzwwutxzvwvvwzywvyz|zz|{|zz|{vsmoillmnpssysor{z{wqoqvxvkgqtxxs||v }~~ }~pinu¡¢¤´ÄÆÂ¹¯¬®®°¶®¦®´µ°³²¬°¹½·°±²¶¶·»½»¹± «µ»¸·¶¶³³µ´´³±²³¯¬«¨¬¶¼¿Á¼°°¶·¶´±±°µ¶¸º¶µµ´¯°¯°¯°°°°¯®«®ª¤ «¸Ä»µ½ÂþÃÃÅÅÂÀÀÁÂÁÂÃÁ¿À¾¿ÃÂÂÅÆÅÆÅÄÄÅÇÊÌËÈÇÇÊÆ°x]t ¡£¥¥¦§§©©°³´¼ÊÄ>+*,-+.*+0458748:;65698@92013-(1-+0134+--26>Rhz ¢£££¢ ¢£¢¢¢£¢ ¢£¤§¢¡£¤¤£¢¢¥¢¢¡ ~ ¤©±´¸»½®jiggfhjhc_b`]\XWURRRRghhgidchehffeidhfefhffbmnlknnpqwsrrrvuzquxwxvwxvvstuvx}}yxwvvxxyyxxz{{}yy}z{}~xolploqnlmmrwsjp~yvusqxovukkortvw{~{vv}nfn¢§¡¦¸Â͝ª«ª°¶²¥¨¸½½·²°¬±³º¿¾¹³´¶±®±³·¹±¢£³º½º··»µµ³´³²³µ½¶µ´°²¸¾¿½²±µµ´³±²°³µ¸¹¹¸¹º¶µ´³¬¯¬¨©§¨©ª´®«¨¥ ²¿Á°§±³ÂÄÈÇÅÄÅÅÃÁÁÁÁÂÁÂÁ¿¾¿ÂÂÂÃÄÄÅÅÄÃÃÅÇÉÊÉÆÄÆÈ¾a[hz¡¤¤¡¥¥¨©««¬¬°µ¸ÃÊa1((**,.+*.326778:;:=9<<=751-.-++*+-134,+,-35Kdy £¤¥¥¢¡£¡£¢¡ ¢¡££¤¢¢¤¢¡£¡¡¡ ~¤«¯³·¸»½¾gfeacjha_`a]\XXTPOOQdfhfhgegjedgfihhhgnlggjkijnnllorqrupusvtuqrovtvtrqquutuvvwuwuxwxxxwzwz{y|}}z{~ {tokljmmllozqwtmsuvrvttvprqmop{wvx{~{| |zyzmjy«®«¬¸¿¹µ²¯²¹¾¯¥´»»»·µ´¸»º·º¹º···µ³³³¯¤§·½¾½¹¸º·µ³¯««®°¸¸¸¸½½¿Â¾·°²´·¸¶¸·²²´¶¶¹»»»ºº»¸·±¯«¦¦¦¦¥¨¨©«¦£¥¸Ç½¦¦·¿ÀÈÉÆÃÂÃÂÂÂÂÁÂÀÁÀ¿¼ÁÄÁÃÂÂÃÅÆÂÃÃÇÉÆÅÈÄÄÆÁ©zdfbt¢£¦¢¡¥©©ª©¬¬°¼ËÅD-)%(**+))+./249889<=;E=88;51.1.,+,,/54.)++/2@\t ¡¤¦§¥¢ ¢¡¡ ¡¡ ¤¤££ ¡¡£ª®³¶·º»»½³gefffedb`]^\ZVQSONQQfddgfhlmlgdfeeggigghigdhfekmllmqpnqnrzstwtspsxwwssruvutxuwwvrwyyzy|{xvwzvx|}|}|umihgnpioquqqsmyyvruvvusriknryxyw~~{ x||woo¥¬±°´·¯¬²²³²°µ½¹¥¥²·¶´´²¯´½À¼¶´µ¸¶µµµ¶µ´¯£±µ¶·¶º½¿¼¸´²®ª¬«®«°¶¼Âÿ´´·º¾¼»¹´ª±°±²·ºº¸ºº¸´²®®ª©§¥¢£ ¦¦ ³¼Áµ¬±À¿ÁÇÈÄÀ¿ÀÃÃÂÃÄÀ¿À¾¾½ÀÂÁÃÃÂÃÅÅÃÃÅÆÆÅÅÆÄÆÅsdhlhlqy¤£¢§¨ªªªª¬«³¿Ëµn5,.+*+,/-.021356669:869<88<53.,,.,--.452.*++-?Xo¤¦¥£¡¢¡¡ ¡¡ ¡¡¢ ¢¡ ©°´·¹¹¹¼¼»¼fghcbccc_\ZWTTSPPRRjhfkihlljjdhfdfgdeeeifeghhfhimmoqooprtstruwqrvwtssrvvvtwwvtxvxwxwzwxxwwxxz{~}yrmnlhlnopqsnmot{|ustvtnqndkquuu}y||~ ~{}zspv§¬°¶¹»°¥¦¤¦¦¨±¶°¨±²²±´°«°·½À½½··´°¯°´´±©£±¯««²´··´¶µµ´²°®¬²¸¹³°²·»º¸µ©®³±°°°²µ¶¹º¹¸µ²°§¯©¨¤¡ ¼¾·®«®¹ÂÄÆÊÉÄ¿¿ÀÂÅÄÂÆÀ¿À½½ÀÀÀÂÄÁÀÂÃÄÃÃÃÅÅÅÈÆÉÇ¿ZUfmkibi|¤ ¨¨§§ª®±»Å¡U0+.---.32/0216644468889;<><6110,0.,+/4854*++-:Sj £¥¥¢ ¡¡¢¢ ¥³µ¸»¼ºº¼¼º¹nffdcbb]^\[XUSPRNNOcffiggjhggeecggfghfikggikhhiiklloooqsssxrtytqqprwttuuuwuyywwwwvwrzz{zzzwvvy}}}~vplllmkkroprsomx||tuwwmhrlmsz{qqys~~ x w{wzrpn¡¤¹»µª¢¡¢¤¥©±¨¡§±¯¯«®°¯·º´¶»½½¼º¶¶°µ²«¢¬µ¶³¯±®¬°¬ªª¬¯³¸·´±³´¶±¬¬°´µµ±©«²µ³²±ª¬³·¸¸·²«§¬¬ª¨¥ ¤»Ç¾ª¥³¿ÅÉÉÉÆÄÀÁÁÁÆÅÃÃÁÁÁ½»¿À¿Âÿ¿ÂÂÃÂÃÂÃÆÅÈÈʨrLM[hjidag¥¦¤¦«²¸ÁǯyB,.-+.+-/+,268776668769?@<<>9,/0++**035882-))+8Si~¢¢¦£¢ ¢ ¦ª°´·º»¼¼ºººº½ddfcb_\\[[[XTUSRONgegkjggghfefbiifefegkggjmlkiiikmnmmonorsssqtoqmorutsuvtsvx{wuwuvvwzzyyyuvyx{{~ulfielhhmpsrsmpwxvtvsulnpptq|{twwzyu ts~wppw£¢¤¬¶½¸ª¡ ®¶¤¢®¶¶´±®ª¨¯¹º´²´µ²µº·¹ºº· £°´´³¯¯¯°³²±±¯¬©¦§®³±³µ·¸´®°°²´³´«¢¥©¬«¯±°¬¨¥¤±³®ª¦¦¨««¨¥¡¬ÀÇ»©£´¾ÅÌÎËÈÈľÀÂÁÂÄÄÂÁÃÁ¾¾À¿¾Á¿¿ÀÁÀÃÁÂÃÄÅÆÆÉȸXQOUYbvqkfmy£¦ª®µ¿ÇÃT4)+)+-+*--+16;;866:848?CD<;962-+,(+/245666,*+2<Tk ¡£¤¥¤¢ ¡¢¢¡¡¢£«±´·¹»½½½½¼»¼¼¼sddbb]YYYWXVTTRQSOgffhgeehifggdkjgeffeeffjkhikjhllqknmloomqrqsqrrpsttrqtvxuvyvtrxyyyzzyyyvw{y|vkhhfjmjnqpqrntwxsstwspro|yowuywv ~}yuis|tqs¨¨¨°¶¹³ª¤¤£ ¡´¯¢¬¶¸¸µ±¯««°¶°²°±³²²²°±·½¹«£´²®«ª¬«¯®°´°©¦¨¤¦§«¬ª±²µµ´«£«¨ªªª®®§ª°©¦¨¨¥£¦£ ¡ ¡£¦¢´Á´«©¶ÂÃËÎÇÆÆÂ¾¾¾ÁÃÅÄÁÂÄÿÁÁ¿¾¾¾ÀÀÀÁÅÄÄÃÂÅÅÅÆÀ£jeabbbajswudjz¢«³¹Çɰl;0*''+1+)+,.17:8965:=79:>>=<;73/,-./01164560(+26Lk¡£¡£¤¢¡¡¦¡¡¡ ¢ª¯µ¹»»¼¾¿¾½½»»½½ge`a\ZYXZXRTUUTTQfcddgiffgehjcffeggfcc`bgigjkhhnjkllhjonopprqoqqqprvtrrsuvyxvxuxvux|y~wwv{{zxz{snjkkiomknqrpntuvssuxpqppuzyxqzry z{mqxtmlu¡¨¬¯´¶´®©¦¤¤¦®³¤£²¶¶·¶²°¯®³¹¬©¬¬°´¶³°®®¬¢¥´¸µ¯«¯®¯°±«§¬®®©©ªª¦¥©¬ª¥§§©©¯ª©¥¦®®«¯¤¡§¬ª«¦¡ ¡«½Á·¬§¨»Á½ÃÆÅÅÆÀ¾¿¿ÂÃÅÂÂÂÃÁÀ¿¾À¾¿ÁÁÀÂÃÃÃÄÅÅÆÅÁ©aCWhrtogfqu{vrokx¡¬·½Æ»Q4.+*(,.*(+--./259:7<;98:>:=AC5010-/,.0/47842+++5Nj}£¢¡££¡ £¡ ¢ §¯´·º½½½½¾½½½¼¼¼¼½zdb^_\[WYUSTUTSQQccehhjfgheefhfehheecaacfkfdghgdhilmjghlrpprpqnnmqrttsrttwxxuwvvzxwzxyvuv|{yzx}}qolnjgkolmprnptuvrvzrkrqxw{zuvvs}}~ xovtgal ¬¬®²´²¯«§§¦¥®¶§´¶µ¶µ°´¶ºº¶®¨¬¨«°²´¶´ª§µ¹³¯«¯±²²²¬°°©¨§«¨¦®«©ª®¬«°°¤£¬¯®®±«£ ¦¨«¬«¦¥¡¢¥¢²Â¾«¦ª»½º¿ÄÄÆÅÂÁÁÀÃÂÂÀÁÃÁ¿ÁÃÀ¿¾½ÀÀ¿ÂÁ¿ÂÄÆÇÇÆÃ¶C8Hj ~xmim| yvjjt ¡®¸À¿¥nB0)(%)-,)'+-,-/.23579876==;>@;63/,,++-1-5342.+)*2Jfz£¢ ¢¤¢¢¢ ¡¡ ¥«±¶·¸¾¾½»¼¼¾¾¼¼½½½§ec\^\ZZWXUYTPPLSbbbefhhhhfa`feeecchdbcbfgefeghgihiiigjmooqssvkqvtspspqvvyywvywvz}yxy{uxy{}}||~~zqnlgmimrqprooptvwvtvmnzwzxyxqzwx}~ ysoyoehr¤§¶¹±ª¨¦¡¤¥°±¤¡µ´³µ´°°¸»¾½µ¯°ª«¯¬®¦§²±°®®±²±±³®¬®°°®«¯«©«§¢¤§©©ª¬¬£©¬«¯±¯«²«§¤¡£ £¡£§££¥©§¢§ºÅ´¤¦¦¯½¾¿ÁÃÅÅ¿ÀÁÁÀÁÂÂÄÃÀÂþ¾¾¿ÁÀ¿ÀÀÁÂÃÅÆÈǾT1/<Vu}okq|~~tjdw¬¹¾®fG2(&((**('*+0./134656<78;;9@??9321--,.0/23550,*.3@[u¡¡¢¤¡ ¡¡ £ª°´¹»½½¿½»½½¾¾¼½¾¼½¿`^[[YZZYURQPQPX`abdegjhhfabcdgafcbbddhfcbegggihekhiimnpnttutpswttoqqstssuuw{xvy~xzzzz{xy~|z{}zroqjimnossoswsosuxurunptzwsxvwwux~~|~yosvjgjx¡¤©´¹¶¨££¡¥ª³ª¡´´´³°²µ¹º¼»µ³µ³µ¶³²¬§¡®³¶³²²±±³²°«¯°®«®«©«¤ ¤¥©¡ ¡¦§©ª¨«®°©¥©£§¦¡ £¦¥£ ±¿¿«£¨µÀÃÄÄÂÇÅÂÀÀÁÀÁÀÁÄÅÁÀÂÀÀ¼»½ÂÁ¾¿ÁÁÃÁÁÃÅÈÇ´{JA8;DTw}tmr{vngn|´²nY?-'&&'(&',-/..06879863=76;<<>:550-,)--/214891--.<Wp ¢¡ ¡ ¨®´¸º¾¿½½¼¼½½¼½»¼¼¼½¾¬]ZZ[_f`VUUQLLNP[ceeceeffghb_eeacda`dahgefejhhhffjhkkoloppqrqnprrrootrorusquzxzxxyyyyz{yz|}zokliilnnqonmpsqssvrvvuomvtrquyoxwx{yz ~pq|skin ¢©³¸¶«¤¡£¤ª²±¡ ®¹º¸¸³±°²µ±¨¯±°±µ½ÀÁ½»²§¡®¯°°®±²¶µ¸³³®®°®®««©«¨£¥¨©©£¦¥¤§¦¥¦¯±®«§£§ª©¨§ ¢¹½´§¢¤°¹ÆÉÇÄÂÅÅÂÀ½À¾À¿ÁÃÁ½ÃÀ½¿¿º¼À¿ÀÁÁÂÁÂÂÆÇÈ»OS`XLCBQdswssvyrrw ¦ª¡wpdO61-*)*((-10+./234258477<A@>A>6310,*/..03661..,->\u ¢¡¡ ¦¬²¸º½¾¿¿¾¾½½¼¼¼¼½¾¼¿¿ÀWZ\]g`WUSPNOLMXdccdceddddcdgfbdedbaaeecefdhlhbefijkkilmnpoopqrrsvqrqrrvtvz}yvvw{vwyxyzz{y|zpirjglprqpqlmnststsytyrprstlwtrxvyqx}}w|olis¥¡¤ª°³±©¡¡©µ¢©°³··¹¶º¹º²¬©©§¤¬²º¼½»µ«¥¬¬«¦¥¦©¥«®¯²µ²¯°®¬¬¯²°©ª®ª£§««¨ª§£¤¨±«¢¢¤¤§ª¤¤¡¡ ¯Á¹¢£»ÂÈËÈÂÂÂÃÃÀÀÀÁ¿¾Á¿½¾ÁÀ»½¾»¾À¿¿ÁÂÂÁÄÅÆÆÅ¤R9Nbli\NJIVdp ~{w{|}{{¡zsjV<1.+&*+,.1/-11112356969;????:5502/..0/06762-)+0D`t~ ¢ ª±¶¹½¿À¿¿¿¿¾¾¼»½¿¼¼½¾¿Àµ^\[ZZX[WRNNKIJ]ae_^afc``ccbbb`baadd`dbcffceefcfjjkjknnmlnsqpqqtvusoorqxyv|zwwwwyywxzz~{yz}wmlnkknpyqoprpkoorsvttwprttrswvw{w||ryz~ ~}{ ujmi¨®¯®©£¨±£¦°««¯¯µ»¹²²®¬©«±´´±±²¯£¤±²¯®§¨©§§¦©¤§¤§¬®±°¯¦§¥©¬ª«¬© ¢¡§«©©ª¬¬«¤£¦¦¦¨§¦¢¤ £££ºÃ°¬¼ÂÆÇÆÂ¾¿ÁÁÁÀÁ½½¿¼½À¿¿¿¾½½Â¿¿¾¾ÁÂÂÄÆÇź~=5I`mpnofb_^P\w }|~ wm\>-+0**.0//+/010228=5588:?A@><850/-.03336752-(,7HYs~¡ §®¶»¼¿ÀÀ¿¾¿¿¿¿¼¼¼¼½¿¾½¿ÁÂXWUTWZWRNMPJF\_`_^``_aacddcbbbcaabbdd_dffdbcdeijkjknlllmqpopnrvrqrsqvwxtwwzzzyy|wxwx{|xy{sjkklklptttoqpopsrrwrrpopqqqtqu{z{yry }{~y }rnjq£¦¨°´µ°¨¤£¤©«¬®ªª«¬«®¯¬©ª«§ª«¶¹¼·²¬¢«µµ³²°¯¬°¯¬©ª¦¤¦««¨ ¡¥¦£¥¨¨§¤ §¤ªª©©¡¦¦¢ ¤¥¥¡¦¾¹ §¶½ÄÆÆÄÄÃÀ¿ÁÀ¾»¼¾º¼¿½½À¾½¼¼½¿¾¾ÂÀÁÃľ P():P_klonfb`\^dmtcE5.,,-2-+../-33468655::9;?CB<:<3.*+/1029620+),3:Pm~ ¢¬³¹½¿ÁÀÁÀ¿¿¿¾½¼»»¼¿¿¾¾ÀÁÁÁ`VTTURSQLMLLL[\_a``_a``bab^_`bbabbbehdabgebghkeghhilklmljmpsprspouwpwuruvywvvxyyvyyxvwuv|~slkjjjkmkppnnoqorpmnqqlposnlrnszz~z{~~ z~zzxpoew¦ª«¯±²¯ª¦¥¤§®ª¤«¬«©®¯±°¨¨¦¢¥¨«®µ»®¡¯¯®¯¯°²³¶³³°«ª©¥¢ ¢£¢£ ¤¨¤¦¦ £¡ ª¨¥¡¤±Â¯£²¾ÃÇÈÆÃÄÃÁÂÁÀÀÀ¾¾º¶º¼¾º¼¾¾¿¾¼¾¿½¿ÂÂÂÅÃÀ½6),19GTX`d_^_Y`qkry |oR641.1/,,--1,034564968==;>@A@:941--..,/4542,)+08Lh{ ¢¢¡ ¡¨±·º¼ÀÂÁÁ¿¾½¾¼»º»º¼ÀÀ¿¿ÀÂÅÆVSUQOMMNMMLJW\]`b`^`aaehc`]^cdcddbccbcegecffhafeikijmlljknttv}spqqrrsvwsvzxwxvwww{{xxxy{}{qpnjkktqjknnnlomnnmjsrpvtuorppxxz~}{x u|~|pnfa¨ª¬®°®¨¢¢ ¦°¶¦³¬ª±²··§¨ª¨¦¤¨©¤¢ ¢££¨²°¬«¦¦¨®®®°´¶´¶´²ª¤£¤¤¡¤©©ª¡££ ¤§¦¤¢ ¢¤¦© ecznw¬¼¸¡«¿ÅÇÉÈÆÄÄÃÀÁÀ¿ÀÀÀÀ¸´»½½¼¼½¾¿À¾¾¾ÀÀÁÂÁÄÀ¾l667=@FHCNVVae_chd[Mcy vV8277.(-),..,1;75579999;<<>@B@75510---/8775/*+12Hct¡£¥£¡ ¤®¶»¾¿ÁÁÀÀ¾¾¾¿½¼¼¼¼½¿¿¿ÀÂÃÈÉÈgPSROPQNNKHJX[\^ab`efcge`a`_cd_`bbb``cefece`abfgijiijlmoomssutspptrqquxtuvvyxvxz{x{zxzz{{ttqnlmqulnomlkmnmtqrtvurrolpot{t{|w~~{||~ }~}tmlfe£ª¯±®¨£ ¤±³§®±«®±±²±ª¥¤§«°´³°¥¡®³±±¨§©«¬¬°²°³³±¯¨¢§ª¨¢¤§ªª ¡ª©©§¤¥¨¥ p?<;;CW¸Ã®¶ÄÈÊÊÇÄÃÄÄÁ¾½¿½¾Á¾·¸»¼¹»¾½¾¿¾¾¾¼½ÀÁÁÁÁ¾·ZFGNZ^_aX\UX_jhkcUOIEMf xX<03-+/-+/5656;;568:9;:8<@?=@=9=95021.14561/+*,6H_t~¤¤¢£ ¡¬´º½ÀÂÂÁÁÀ¿¾¿¿¾¼½¼¼¾¾ÀÂÂÅÄÇÉÉ TVRMNMKKLGHTZ^_b`__b``__^\_ac_afdedbd`cdcdb_eihghgelimnpsrmqrrsrrrrqtyrtuwywuwzytx{yy||ysrrqrprqqsnmoqopoopupsoopnoqsvyu{yx~{} zv ~xkoqix¡«°®¦ ¨°¤ª³±±«¬¯±²®¦¥¨¥£¦©¬´¶·±°¢¬¶¼²´©©§ª«¬®®¯¬«§§¢¢¦©ª¦§ª©¢¦ª©¦¥¦©¬©¨¨¢§¬§¢nedT@/(*Mp¨ÁŤ¬¿ÇÌÍÊÆÃÄÅÄ¿¿¾¼¾¿»»»¼»¸º»»¿½½¿¾½¼¿ÂÂÂÁ¼¨uRNILX[edpowtssmeWTQRSFF[t a@1/-./*)/8@711969868<=<<<?B@C:3150225651471.*,8G]p} ~¢ ¢ ¡ §±¹¾ÀÃÄÃÃÂÀ¾¾¿¿¾½½½¼¾ÀÁÃÃÅÆÇÊÊÊsSQONKLGHIJW`a[Z]\Z]`_^b_]_``abdccbddbdfbddacfcdmfhnnnopmomppqqpq{utstutvxwyyyyyutwxx{~vswtpruuvttnnrqpuonpqlooqrqurxyxyyw} ~pt ~~{rlqml¢§ª¢ ¢±®¤«®®«¬±´´¬¥¥§¦¥§£¦®¯°²®§¨¯¶¶²°¯¬®¬¬§¬¬«¨£¡¢¢¤¥¦§££«¨¨¥¥§¥¤¦¦¦¥§§¥£uyr`H)#/F{¬Á·¶ÆÉËËÇÃÂÂÅÃÂÀ¿¼¾½½¸¸»»¹¹»ºº½½¿ÁÁ¿¾ÀÀÂÿ¶q][QLKKGDHXdu}nXUSSYQH7Nh~tL3/.0/-,..44113467:88;>;8<=<>854211/324443-1+09G[q ¡¢ ¡¡ ¢·½¿ÂÃÄÃÂÃÁÀ¿¿¾¾¾¾¾½¾À¿ÃÅÅÆÈÊÊˬPPSQKKJHIOXc[XTX[X\__^^^]`_a`abbcebbacdabbadegehfeiknnnlnnnpqoqpqttqrwuvxx{|xx{zwxzz||ysutpomostwtponpspkmpkpqqmrsvvtuzsw||} sr~{{omskt £¢¡£§ ³¨¥«®¯«©±´³®«§§¨¢§§§§¢¡©¦ ¥¤¨¬§£¨®´²°±²±°«§¢¡ ¡£¢¦¤¢¡¢¡¤££¤¢¢ |q{~xdF*#(8r¯»¡¼ÉÇÃÉÃÁÁÁÂÁ¿¾¾½¾¾½»¹º´·º»»¼¼¾À¿¾º¼¿ÀÃõ¯taTRPPILIJH[ijswqcV^UQGFSe V9,-0/4/5/642344869;;7=87::>;36,/200//0464/.+-3CTl| ¢¤¢ ¥¯¸¾ÁÄÄÄÄÃÂÁÀ¿Á¾¿¾¾¼¼¾ÀÁÃÅÇÈÉÊÊÊË{ROKKKLLJJZ\WTVU\Z^_^^]a]^`aabagdga_`bdd`ccddgefihhjimnmnprsqqrrqsurpruww{zzxx{zz|{}~zqppmllmortstsrsrulmprrvpmsuxyxxut~|w |huy~yqnhk©©«©©¥¡§ª¯®««¯µ³¦ªª¨¨ª¯°®¬¤ ¦©¦¤¢ ¢¦¬«®«±¬®¬¯©§¥£¥¡©¬°«¥¤ ¢¢¢¤¢¡¡SCROM<*'+I´±¥»ÅÄÁÁ¾½¿¾ÀÁÀ¾½¼½¿¹¼¹·¶¹º·»»¼¿¾½¼º½¼¾Á¾µ®®¦¢{lb][]Y\RIE<<=_nna\WYJLQMcz £¢oH0,02750*/.3433566@><<<:79=;962.+-32//2676-).2<Oex ¡ ¡ «²º¿ÂÄÅÆÅÄÃÂÁÀÀ¿¾¿¿¾¿¿ÀÂÄÇËÉÊÌÌË˶OLLJIMLJGOSYXWX[]Z]]]]```ccegb`bda`]beebceeafighijkmoloomruussrqsttttrwwwxyxuzzzzz|| |qmmpkimnnptwsttrrpnqnqrnrx|{wzwtx~||}qk| {yvqpgk¢¦¬±²ª¡¡¦¦§©®³¶±©ª©¦¦©±±²·³¥¢¤²²°«©¤¢ ¡ £¤¥¦¦¦³¯¯ª¢¤¦©«§¡¢¦¡ £¤¢£dF;1-.,%$/c¶«±¸»Á¼º¹¸¹¼À¿¾¾¼¼¼¼»»¸µ·»¹·¹»¼¾º¾¾¼¾½½º¼¸µ¸´¤uia[YXWVPE9326?KbbdWMMOK[¦¢}\=/5:;60+-037716659967599<<><72.-/24244=71,,0+4Nas~ ¤®µ»ÀÃÄÆÄÄÃÂÁÁÁÀÁ¿¿¾½¾ÀÂÄÄÉÌËÌÌÌÌÌËKLKNMHIJORUTTUWW[]\\]`ccchhejdadddaaeddcbddeffghijhlpopmpqqprprstutuuxxuuwvxwuwywwz|tjklliklmlsurrqqnqoroqroqwztx~wsyy|| ~vgm x| suogo ©«§ ¨±µ²®©¥§«°¶´³·µ¥ª±³°¯«¨¦§¥¦¢¡£¡ §¢¥« ¡£££ ¢¢¡|fVMD>:3-+'%+A|µ´¢¥º¹·¼¹·¹¸µ½¿¾¼»º»»¸º»¶µ¸¸·´¸»½¼¼ÁÁ¿¿¾½¸¹½¿¾½´¤zod^XVSNHKC9,&/@Qh^TMIGIc¦§ xN34:74793-39:659468888:9<>E=8410.75674496/-007G\m¨±¹½ÂÄÄÅÅÅÅÃÂÁÂÁÀÀÀÀÀÁÁÄÅÅÉËÍÍËÊÌËʽPJKKIILINRQPRTWX[_[a_^bgecchneadhefaccddfdddefghijinonnoponrsqrqssprtvwwuvvwtvwxxwz}qkilmfdghhmnonqromoprsstpuupxzrx{uy} }w}kkxvw}wpjk{¨§¡¦¢¦£ ¤§¥¨ª®²·¶¶´²¬¢ °±±±°«¥¨§¦¦§©¨¨§£ ¢£ ££¢ ¡£qmU70012--,'+Deµª³À¿½º»¸¶µ¶º¼¾¾»»¹¸¸º¹µ´¸¶¸º¼½½»ÀÁÀÀÀ½¼µ¸ÀÂÀ½ºµ®¤xkb\VLIIA;4,)'2HPQSRL<Fk ¯nP93105B><558>7:9:<>>><>@@A==7611621256:31-+-2BZk} ¡£¬´º¾ÁÅÅÄÅÅÃÁÁÂÂÃÁÁÀÂÁ¿ÁÆÆÇÉÊÌÎÌÌËÊÉÊMNMNILKMLPSQUXY\][]a`hic`aa`eccfdbcedbbfeeccghhggfjmnmmoroopvvrtutstvwxutrvwxzyvy|smmqlgdgjdknqmnpnhsnrrrtovpnyuqwunz|} txynxxt} ||kco¡ £¢¥¨¥¤¤ª¤£§¯¬©¨¤ªµ²°°¯¨§ª¨§ª¨ªª©ª¤¢ ¡¡£¥¥¥¢¢¢¥ ¡¡ttike^VC5,+/*+))Dl©´ ¾ÄÃÀ¹µ±³³·¼»¹¼¸¹ºµ´¸µ²µ´´´¸½¿¼»¾¿¿¾¼»¸²¹À¿ÁÂÀ¸µ²ªzme`^ZOF>81-,-05FVSMDBMk¦©§kJ;55231/-268668==?<<????<::6//0280233454/+,/<Qh ¤¯·¼ÀÅÇÆÄÄÃÃÄÂÁÂÃÁÁÂÁÁÀÃÇÈÉËÌÌÍÌÌÊÊÊÉÈ^SMGJLMKNSQRSUZ]\YZaaffcce_dedcbddafdbdfhecdgggfcdjkjklmiltpvttussttwvuutwxxxwyxy{vmlnicbhiikoroltpknlpopolnhoxryvorz}~z{ys|qp|~sv {rfbt¡¢¡¡£~¢¢£¤£ª¯£¤¦¦£¢£®³³µ°¯¤ªªª¨©¨¨ª«¥¢£¤¥¥ªª©¡¦¦¨¤¢ j`QFI5*,-/3''Bº«{«ÂÅľ·²²±²¹»»º¸¶¶µ²³²±³±¬²µµ¹½»¾À¾¼¾º·µ¶ºÁ¿Á¿¾»¼¹®¤}od^cROH=3.1.)(2DSPOK@Oh¤©©|aC7936/+.36867799<98B?CB?=<500/0520/25531.-.7Kdx| ¡¡§±º½ÁÅÅÆÃÃÄÄÅÃÁÁÁ¿ÁÃÃÂÂÆÇËËÍÌÌÍËÊÊÊÉÈÈOOKNKLHKNMORTZU\[Z]_dbdb`cgfab`bccdbbecgfeegefgfgijlknqjlpppqssssssststuvxz{|xyxy~ukh_gffeenkqrlkqqohkrpokkierutzupys}~}}ru}xpw~u}zn_h}¡£¢ {¢¢ ¢¢£ª«¡¡ ¡¦«®¯¬¦¦¡¯¯©§¤¦©¨ª«©§¥¦¥ ¡£¤¥¦¨ª¨ ¢¤¢¦¢¢~]\GA:=3)'*?A&$=r¬¿¡uv±¿Äû¶±³³¶»º¹¹µ··²°´±±²©®²³µº¼¿¾½¼½·°µ»¿ÂÃÅÇÆÆÄÁÁ»±§{la^WOI=3.-+*&)/DGLJFC?Y ¤«¡ jVD:620./4686898;<89<>CB@?<621/+3214527324216D]r¨³º¾ÂÅÅÅÃÃÃÄÅÃÁÁÁÁÂÃÂÃÄÇÇÊÌÌÌËÍÌÊÊÉÇÇÈÊhONOLLHGMORTWYVY[\]^daaa``aca`d`_eb`dfdbcdgdbdiggkkjjlmloormptsssttrrsuvvzvxytuw{ztofbihkifglpmkknmqmnqrlknjlolx}wzzt|yt{ynp{ || |i\g ¡¡ ¥¬«¢¢ ¤¤¨¯®«¤¢¯©§¥¢¤¤££§©©©¥¢¡¢¢ ¥§©££¥¤¢¢¢¡¢££|aSOD=320'$'.&"%F~±¶qv¶¿Ã¿¹´°²´µº¹¹·µ¶³³²³²´³®¬°«®³¸º»½¹¹¹µ²¶ºÀÅÆÈÊÉÇÄÁÃÀ¸¯¢mb]TOJ<1)(-/-.39BFKLAAX§¥t_TE/-0141153::7899<::?<?>974/0//005789541116=Vn ~ ¬·»¾ÁÃÅÄÄÃÂÃÄÃÃÃÂÁÂÁÃÄÆÉÉÍÍÍÍÍÌÌËÈÈÉÊÉÊ¡JMOMNJFHOOSU[VVX[a_^]cd`^a^d`hc`ccadbc`aaeeeceedjllniillloqowpswwtqrtsxustz|svw{xqgdfehkllelmkknlppqprqlqrnqnmxwv|wrzuy vqx~tb_p¦}§¡ ¤§«®«¨©¨¥¥©ª¥£¢£¢¡ £§¨¥ ¤¢¥¦ ¡£¦¢¥£¦§¤t]UND=63.('#!#"!!+]²£o|¤¹¾ÀÀ¶´³²³´µ¸½·¶µ²²³²±³²¯³³¯±°¹¹»»º¸¶³¹¼»¿ÃÄÅÈÉÇÅÂÄÁ½¶ {nbXTUF8-&'+---08?EJNB._¤£¤§~gg\A-*20(368=:2649;:;?;C>995211/21129:774623=Qn| ¡¶¼¿ÁÃÄÃÂÂÂÂÂÀÂÂÁÂÂÁÃÆÈÊËÌÍÎÎÏÌÍËÉÉÉÉÊËÍqOOQPMGFNMQUVW\X\`\^cdd_acaddffdcgaaabccbgddddfejkmnkkmmnnsoqrsxwuvtsqrwttxzwwx{~sgdffghomgikmlkijlqrqojwsturtssv|st~}zx|zqt}~ }{jaf}¢}¢ £¨®²±¬¨¤£¨¬®®«¨§¤¢£¥¦¢ ¡¢¦¦§¨¦©¤ ¡ugbXEIA>92--'(&!# $>x¬²wt·¿¿¾¸µ¶³±´¶¸¸¶µµµ²°°¯°°°³¹±´±µ¹»¸ºµ´¶º½ÀÁÃÁÃÅÆÅÅÇÆÂ¾¶±©£ti]XTPC3+&&(*,*-05;DJB@\§¤§©ybpE0-55.,.3677:=?>:?A>DH?;32/./651056;<787;>Ni|¡ ¡ ¦°¸¾ÀÁÂÃÃÀÁÁÁÁÁÂÃÂÂÂÂÄÆÇÉÌÏÐÐÐÏÎÎÌËÉÉÊÊÊͯOPRNKHEGLQTTWWWZ^_^dfebcc`bbdcgcafffhfhedacfegdhjjijjjpqqvpstvyutuupvwwtuwxuut{ ¨whccbhjlcillimomjjqtpompqsvtyrsxtpv~|vyupky~~|}{lek¤§¡~¡¡¢ ¢«¨ª²´µ²°©¡®°¯±ª§©ªª¬®¦¡¡¡¡¤¤|z©££¢¢mih\THcaJ@JMC=1,-)+&#'T¶¬s|·º½¿»µ³¶³³µ¶¸¸¸²´¶µ°®°³³´³²µ²·º¹·µ¸»½ºÀÂÃÂÂÂÄÄÆÉÇÈü·¨~rg]Y[NB4*%"%&&(),19JVBBl¬¥¨©kgV84B:-++27=:9:<99;BCLIE<31.0+2-.-1678656:@Md{¡¡¢¢ ©²¸½ÁÁÂÁÂÁÁÁÀÁÂÃÁÂÂÂÃÄÇÉÊÌÏÐÑÑÎÎÍÎÌÊËÍËËÍÎ|OPPQMFHKOPRWW[X^b_]dlb`c`a^\`fc^dgjkgdcdadfdbeihhhijjmmommorvyzrqutxvuuwsstrrz¦À|jc`fhpofjjkikorrrsvoiqorsrwxuxwls} zu|uos|~~{w}xgfx¥¢ x¤®¬ ¤¥ª³¯°£¢«¯°¯¬©¥§«©®²°¨¡¡¢ubXNq¡¡vq^fgZFHSjaC<@\RI710*)%(&6g«º~r¯À½¾À»¸¶³±´¶¸¸·¹µ´¶²®¬«®³¶´³³¸µ·ºº²µ½½ÀÂÀÄÃÄÃÃÄÄÅÆÄÇÅÀ½¸±¨pg_XXN@2+((*'&')/0>MQG=n¡¦¨ª©_cD6<<6.2:<F@:819:;CFGDA757130./0.47686036<Ney¢¤©¥ ¨³¹¾ÀÂÂÀÁÁÁÁÀÁÂÂÁÂÂÂÃÇÈÉËÌÐÐÐÑÐÏÍÍÍÌÍÌÌÍÎ͸RSPQHHGGIOQUW]VX^^_fjc`^bc^abcba`fjhgedfedbebeiiihdimkknpqorxutqqqruuvwustrrry¥º£ob]ecggihgijmkmrtu{qmrrtpovptyqmx}|}}znr{zs{~wv|zpgl}y£¦¡ £¢¥§«©¤£¡¥§¨²°§£taaYMHvocnpozuk\US_uf<9:LUP<6C30+1'#6Q´±~x»ÄÀ¿¾¹º·±°´³µµ²³·³´±¯°¬¨¬³·´²µ¸´µ¹¶µ¼ÀÀ¿Á¿ÃÄÄÅÆÅÅÆÅÅÅÂÃÿ¸°§ph_^SK>4/-,%##&)*2=NTDHo ¨¨¥|`QC/58248<DGB<7<><>DEAA647870023033355-018EYt ¨¢£®¶»¿ÁÂÂÀÀÀÀÀÁÃÁÁÀÁÂÂÄÇÈËÌÎÐÑÑÑÑÐÍÌÍÎÏÎÍÌÍÎÎPOOLMGEJPRSTUUW[]bca]a`fmdbedfc_eihhdeddcdfecejhhfhijlooprrsttqsttuuuywtpprpxÁªueebbgehcfiieijnostrtspvstrmszlr~|~}}xkszvq}zruxvlio¢¦§¤¦©ªª§¢£~zz|ssldW`dmcgnrx{wdVRSkz]<;:?DUB1.-,"$%'?c¸¤{¤¾Ç¾»¶¹¶°²¶¹´¹³°µ´´¯¯®©§¬±µ¶¸µµµ´¶·º¿ÀÀ¿ÀÀÁÄÆÆÄÄÆÅÄÅÉÅÆÆÃ¾·±ª¢qf`]VJ974,%!"&&-1:GR=H}¦ªªp[V:.7<25;ME=?E><9>>EB;752/22002731752.*+48Tn ¢¶½ÀÂÁÂÂÁÁÁÁÀÀÀÂÂÁÂÄÄÇÉËÌÎÐÐÐÐÐÐÏÎÍÎÎÎÏÎÏÏÏÄVRRMLKHIMRPRUVVY^a_```cfhe]d``cbdjffdheec`dgdfjkiehhkjmnnoppsustvuwvwyxuprlor½·xdidijihegdhjknmlolmtqonqwrrsrn|~~vw|zvv{zwvsovwrlktu~ ¥¤£ ¡£¤¢¡£££¡~z|vnnoyxruwjP=CVtvM<DMEHU[2/'" "'Fu¤¬¯ÂÆÃ¿¸¶µ²®²µ´´¶²±¶´´®«¥§«±µ¶¹¸µ¸´µ¸¿ÀÀÁÀÂÁÁÅÆÄÄÃÊÊÆÆÊÊÉËÇÆ¿¹³ª~thcZPE93.&""#'(()+6KNKNw¡ª¬«t`Q56F9:;?>;=:;<8:>?=;:6/,-1122534674.'(+2Gg¢¶¼ÀÃÃÃÃÁÁÂÁÀÀÀ¿ÂÁÂÄÆÈÊÍÎÏÐÐÐÐÏÐÐÏÎÏÏÏÏÏÎÎÎÏTXPHLGILPQT[XVX]\[_^]`acdbbb`d_chhief_dbabdffhjgcdgkilnmlmoqtuuustvwuxynonosÁÆ©hddhnljggijlnmkolkrtsollrtztjp~~|ty~wx}{x}xsqvytrjk¡z ¡£¦££~ wk\G<EfrP?HLJ<KZlU0# "%I³§~¡¸ÃÅľ´µµ®®²²´³µ°²´¶¶²®¨¥¨¬±´·¶¹¶µ²´¼Ä¾ÁÁÃÅÄÄÆÅÅÆÊÉÉËËÌËÌËËÆ¾º¶¨ti]PMC;2*'$"&(+,-29R]H^£«§h\D;BC52=?9628>99<@?=:531,-7811545740+'%-@^w¡§°¶¼ÀÄÅÄÂÁÁÁÀ¿¾¿ÁÂÂÃÄÇÉËÍÎÐÐÐÏÏÎÐÏÎÏÎÏÏÎÍÎÍÍÍÌc[UNKIIJLLSWVVY[]\`^_abbbbdccefeeehfgbcaabb`eghefgkjhkmmlnpttttsutyuqsqrpprnºÆ®p`bbigfgchlinmjngiuxupmkkr}skv|z~{s}{ttz{{{~z~st{tqop|§¦£ ¢}~£¡ zkUSH@BYve9EWJ:.3Giw:'! -[¹|¨¾ÄÆÄ¾·³³°³±³´´´²´··¶³¬¨©«¬±²·µµµ³²º¿ÆÅÁÁÅÄÆÃÂÃÄÆÅÆÇÌÌÊÌÍÏÐÏÈÆÄ½³©sgZSND:1,(%'(((&+.<S]Q^¦¡hNEHG<7>ACB8:=A<=CF?<7763.0155312164.'&(9Ws ¦³¹½ÂÄÄÃÂÂÁÁÀ¾¿ÁÁÁÂÃÆÈÊÍÍÍÏÐÏÐÏÍÎÎÎÎÎÏÏÐÎÏÍÍÍÍd[QIIKLNPRSSU[[]____`acb`decheafhfffacdedcbbehfhhjgklmmmnpssstsvvvsqrssommp¸Íµ}jbbgiefcghiponmeiry|togeqwnpvzy}}yz|uqwyxx}{rx{utsszv~¢¥ª¨¦¥£¡ y¢¦¤¤¤wwiOG@77EqoG@VN77,5F]sV&"!!=u£«zw³¿ÄÆÅ¾»µ¶³³²°¶µ³´··¶·²©¬±µ´±°°µ¾ÂÆÇÇÁÃÄÄÃÂÂÃÆÇÈÉËÍÎÎÏÑÒÑÎÌÈþµ©~odVWNC92,),)(('&)2@XMPm«°°}^ICA:=<CGEA7?A>@AC@?=3260-02/2./4751*))6Sp ¥°º¼ÀÃÃÂÁÁÁÁÁ¾ÀÀÀÁÂÅÈÉËÍÎÎÏÎÏÐÏÌÍÍÎÍÎÎÎÑÐÐÏÎÏÎÍf^WQKGKIMLRWWYZ^a__`^`bb_acchgcadbcd]^cgeefcghgfihgmllmpnopprsrqtvpnstqojjo¼Íº¡k^afijediihkoplgjnvztqecrynuvx}|xx~uio|{vx~~tr{ysrrt yw © ¢¢¨©§£rz¤¦¦¦¦¤wnQDD<68Tx]?Pa?3@=8/?wt-#!(Q®¢{¹¼ÃÅÅÀ½ºµ´µ¶´·´±µ·¶°¶²«ª¯°¬¨®¯°°®¯·ÃÂÅÇÇÄÂÃÃÄÄÁÄÆÇËËÌÎÐÑÑÑÓÓÑÏÊÆÂ½´¦yj_\WMB91/--++)'(-3DTHLq®²§{^C9434;=EJ>CHH@=?DAB711+/.00/.27673.+.8Om¦²º¾ÁÃÃÃÁÁ¿ÀÁÁÁÁ¿¿ÂÆÈÊÌÍÏÎÎÎÎÎÎÍÍÍÎÎÍÍÏÏÎÏÐÏÏÏÍkd]WOIKDGMQVWXXZ^^^][`a__a_bghe`aaefe`gfedefjfigfhihklnmkinnnnrrqsqrtvrmikp ºÒ§oc`aeiefihglplfjkntpsnZdquvx{{xw{zpgt~{|vmswtrsoq y{ ¡¨©¦ br¤¨¥¦ ¢hMLA>AC^sKOdN4>MM6'+Zk@/)3k¯~ª´¸ÁÃÄÁ¿¼¸¸¶µ¶·±´´¶µ²°ª¬¯±®¬°¬«´¼¾¿ÂÆÈÇÅÆÆÇÆÇÅÊÈÊËÍÑÔÒÐÑÐÑÓÑÎÊÃþ²¥xgb^RNF;4-.*)'(().3JMJV §²²pXE48-37:@G>@B><<CD>912/0010.7885821-/5Oi| }§³»½ÁÃÄÄ¿¿ÀÀÁÀÀÀÁÃÇÉËÎÎÏÏÏÎÌÌÍËÌÎÍÍÎÎÏÏÏÏÐÐÏÎÎqnbZTQKIFKOSVXYY\Y[]^^]_^cgbbee``_efddghcdfcfdfedggkklnnkjqrppsurrstuqlmnik{²ÎDZukgaa`diifhhllikkopnqd\hqwst{yx}xno|~~|~~xomxysttnw| y`a¨©¨¦¥£lWV[:2LSjTLozE:DQS:'-9{GQ=)Gª° uµ¼¹ÁÀÁ¿½»»¹¸²µ³°±³²´¹±®¬®±®®®±«§ª¶¿ÀÂÃÇÊËÈÆÉÇÆÇÇÊÊËÌÍÑÒÑÑÑÏÏÔÔÐËÈÈÄ»°£wpe\XMG@7/*&%)('*2?KD7b©³x]A640759NGA:;?;>B;82100060-3733602--6Kcy |}¨²½¾ÁÃÃÂÂÁÁ¿¿À¿¿ÂÃÄÆÊÌÎÐÏÐÐÏÎÌËËÍÎÌÎÏÏÏÏÐÐÏÎÎÎÏune\VQKLLKJOUUUX[[]]]a`_]`ed^bdaa`ddc`bbdgebdfeeeeehhijmmnoqmruutrttsnqmmihw§Óʵrkfb]ehecedklikmsrpm]bpqtsow}zs}sgr|{yz{~}zsjq|{xwto{~ ¦£ vpmjhkeTNr¢u[MRV:BWksQ`yxH@V^J3"&3dg^]2Z¡x£½ÃÁ¿½¿½¼½¹µ´µ°°³³³³³¯«°¯¯¯¯©¡¹¾ÃÃÂÆÉÊÉÆÇÇÇÈÇÊÊÌÎÎÏÏÐÑÓÐÒÔÔÐÎÎËÇÁº®xi`[XSK;3+'&()*+.2<GB=h ¸µ¤sS3:2642>IL27?>>?:633/0012/1-3720/+,7Hav |ª³»¿ÂÄÂÂÂÂÀ¿ÀÁ¿ÀÁÂÃÆÉËÐÐÐÑÐÏÎÌÊÌÌËÌÎÏÏÐÑÑÐÏÏÐÎÎyrk^XSOJKKINSVYXY\[]`a``^_ba__becbe`cfcbbadehlgdgefghjikmlntssqqsorqqnmlkjem¦ÐиzoiccdcccjggfijnqrpeYhsqxuotqpsvmguywz{}}qlvz{ywqr¢ z ¡ xnc]`_[PQJFAW~dSLMMHThmRk}nRKcS=8+"-]tMUPr«zªÂÆÅÃÀ½À½¼¼¸µ´´±²²±³´±¯«¯°®®¬¯¦¦´¾ÃÄÅÂÅÇÈÈÉÆÈÇÈÈÈÊÊÊÏÏÎÍÐÑÑÒÓÓÑÐÐÏÌǺwg]`YRF:/*&(&+,**1EX3Ez©¸²£jK=:9375>F>7>B@A:75/.-002023450.-.08FZsª³»ÀÂÃÂÃÂÁ¿¿¿ÀÀÁÁÂÂÆÉÌÏÏÐÐÏÍÎÌËËÍÎËÎÎÏÏÐÑÑÐÐÏÎÍ{uodYTPJHJNNQUZWY]ZZ__``_]]^d^_ddbca`abccbcfgg`bffefikgklkmqsrqpqossponplkfl×Ó¾¤{nffabadghehhgljlk_`mrttsvxrls}uosywv}|}vlmy|}{tjpsw ¡wlb\_Y`dgbTPL<?d }y\U[LZ_bsz[Jvu]OVaQ4'(#'MkL3[§ x}±ÅÆÆÄÁ¿¼»º¹¸µ²°±³²°°®®¯®¯²ª¯«®®ª¤«¸¿ÂÃÅÅÂÂÆÉÊÉÉÉÆÇÈËËËÎÐÏÐÐÑÑÔÓÓÒÒÔÑÐÌÆÁµ© vjbZXLB5,&%%'(*'*:NN8C~®·°lC=93126;U=<@A@<8;.-.021/0111/...26@Vl ¬´»ÀÃÅÂÃÂÁÀ¿ÀÁÁÁÂÃÄÇËÍÐÐÏÏÎÎÍÌÌËÌËËÌÎÍÏÏÏÑÒÒÐÎÌ|xsjaYRROKRMPQRSW\[\^ba`baaaca`bccacb_`cee_fgfc`bffehiijklmorqopssssonnkjggcÊÔ°¦qefdbbehkfgjlmdkbUcqwwrq{xhguttrvvu|}|vplw|~ynjuxq rjhgfmnrnppf[]O=;Myxvmkxl_je]im\fp]OndNSeaF-%&)$4T7f¤u ¹ÂÅÆÂ¿À¾¹¹¸¶³³®±µ²¯¯ª¬«°²®¯®¬©¨²»¾ÁÃÃÃÀÀÄÆÉÈÈËÇÇÈÇÊÍÎÑÐÑÑÑÑÑÑÔÔÔÕÓÒÐÌÉÁµ¨qe^_VI8.*&&('*(+0C[?4X°·¥y`J710125JH<9>@B:71--.0/114550+*.46=Rjª³»ÀÂÄÃÂÂÀ¿ÀÁÁÁÀÁÄÈÊÌÏÐÐÏÏÎÍÍÌÌËÌÌÌÎÐÐÐÐÐÐÒÒÐÏÍ{slmf[WQMNQNMSTW[[]^_`ceccbb^cccc`accabcedefefedcffeghiiknnnpmstsrspnnmhcdiÂ×Å´«¡qgdd`cgigddmomjh\Whtzwooumahyvtvuoox{wxxpot~~}xnl| rs| lhlqqpsuwrkeZPFC?HUpu`W]otfcxm[p]K]d[WfKJWnhF)$0,$-^qOw© vxª¾ÂÅÅÁÀÁ¾¸¶¶¶µ´°±²°±ªª®¯²ª«°¨¥¸¼¼¿ÃÃÂÁÃÄÈËÊÉÉÈÈÉÉËÎÐÏÏÐÑÑÒÑÒÓÓÔÓÕÕÒÑÎÈÀ´ª|mb^VM<2,((''"&),9IJ51r¡³«p\G;/-06<XE>=;>>30-.-/124936/++/405Mcw ©µ¼ÀÁÃÄÂÁÀÀÀÁÁÂÀÁÃÇÊÌÏÐÐÏÏÎÍÍÌÌÍÍÍÎÏÐÑÑÑÑÑÑÑÏÎÎ|unlf^XRLLHKOTYY[X^```cdkddf_aede`beebaadcbcdcfecefffghmonkllmpoompopnifcdkz¾Öʺ¡vja_]`bhcfhklifd[`lsvvpppaanvtuxofoxvuyxlow|~}uko qxqgr~zywrf`TE=B?FX]hrhZMXnpfd f^fN:EVYd\<BVg^A%#,*#*Es¬zp}´¿ÀÃÄÁ¿Á¿¸¶··´´°¯°¯±¬ª®²°®§¥¬¬¨§±¹º¹¼ÀÅÃÁÂÃÅÊÊÉÉÇÈÉÊÌËÏÐÑÐÐÐÒÒÓÔÓÔÕÖÕÕÒÒÍÅ¿µ¨uhbWK>3,/)%%%''(0;E;2M´³¤ weZQ.0/06FLC:;?=51..,01/1422002/0.1@`u ª¶»¿ÁÂÃÂÁÁÀÀÁÂÂÁÂÆÈËÌÎÏÏÏÐÍÍÍÍÍÎÎÎÎÏÏÐÐÑÐÐÑÑÏÎÎyspia\UQLIIMRTUVX\``a`_cddagacbecbeeecbcdbba^dedfgfjkionmpopkpnsonoomjgefhy©ÕÐÁ¶¢pb^\`acbeihjhgfaimqponuocgqvtvrfguywz{rot{yyohror ¡¡ hdt{vm]RGJMSRSdUPYbVFRajap_][B68=Xq_9H[_V9$'B*=yxt ¥½ÂÀÂÂÀÀÁ¿»º¶·²¯®«®³ª«¬¯³¯§¡¤¥¨®µ¶¹¹¼¿ÂÄÃÄÃÅÇÈÈÈÈÈÈÈÉÊÍÏÎÐÐÏÑÒÒÓÔÕÕÔÔÕÒÒÎÉÇÅ´¦ vfXA930.'&&''(*.4;>;.g¯ne[@84017JD>;;:83//,//2//0133/,--/:Yq «¶»¾ÂÄÃÂÁÁÁ¿¿ÂÁÁÃÅÈÊÌÎÏÏÎÏÍÍÍÌÏÏÏÎÏÐÏÑÐÒÑÐÐÑÏÎÎ~ytof]WSNJIMNSVW[[aaa_Yabe`dbcfb`_adefd`cac``ddfcfdillkkmlkmklptonlmlmjgecjÆÓʼ£ue]\`dghhejkgfacnnpmhmtjdnstuwj\myxz~vlkv~}~{sibrqq~} ¤¤nas|rkh\OO[hhf`PKNJSLEM_f`}}XZI544/`}YBNWXI-$3O9-vª¡yy±ÃÆÄÁ¿ÀÀ¿½º¸¶µ¯¨«¨ª²±¬®²±³¯¬ §²µ¶·º½¾¿ÃÅÆÆÅÉÉÈÈÉÉÉÉÊÌÉÏÍÏÐÑÑÑÐÐÔÔÔÔÔÕÒÐÍÊËȽ¡jWC94/-&'%&()+/.3?B:Bt¢¶«smfQJE6/1<JC<;::62.-.49012343,/,+.;Th ¡ªµ¼ÁÂÃÂÂÂÂÁ¿¿ÂÂÁÂÅÈÊËÎÏÎÍÎÏÌÍÍÍÏÐÐÏÑÑÑÑÒÑÐÏÔÏÍÎ~yqi`XSNIIIKSWX\\`_`c`bbd`cbcca`acfced``_aaacbfcbfjljghkkhlmlpplnllnomjecnÆÖÎï}i\Z_cgie`jhhe_gmpqidlkagtqpspeesyvwslr{}{ypiizuv ~b^zxpifk\SXhtvtfGMTPEADJdgfuUQ9,0/6c|S>JY\;$&<jI/g}w·ÁÅÅÁ¾¿Á¿¼¹·´³¬ª¨¥¨³®¯°²¯ª¡¥¬¯³¹ºº¼¿ÃÆÉÆÃÂÇÉÈÈËÊÉÉÉËÊÎÏÏÎÏÐÑÐÐÒÕÔÒÔÕÓÐÎÏÍËÅ·ªr\B<7//.('((**+),3AB,Qªµ§qvp\PHBC56KJC<<@:5.--10016662-+-*,1Jf| ª¶½ÁÂÅÃÃÁÁÁÀÁÂÀÂÃÆÉËÍÍÏÎÍÎÎÍÍÎÎÐÑÒÒÒÒÑÑÐÑÒÏÎÏÏÏ |sle^XMJLINPQUTV]]``_a^abheba^cfeeefbbccabbcedfffkmkkkjjknnljknpknmkmlgegÀ×Ï÷sg`^bghd_eeebdmotshdmdZhqjnqhcnspsyyqnu||ztkloqy ~l[kymffef_Yix}zu`FEB6=?CRgg`~l`K2+,0=rwVBEY_1"%NrN -g¡wiq©À¼ÂÂÀ¾¼½½¼¸·´®ª«¦£©®°±±¶¯¬¨¡©¬¬¯¸¸º¿ÃÂÂÇÇÆÄÅÆÇÊÊÊËËÊÉÊÏÍÌÎÏÐÑÒÒÐÒÒÑÓÔÓÔÑÑÐÌÈÀ³¢wZE<730,('+,+*%&(.=E=:l´¯wneVIE@=8BQL;<>8410/11247<93001/-3Iav «¶ºÁÃÄÂÃÃÂÂÀÂÂÃÃÄÆÉËÍÍÎÍÌÍÍÍÍÎÏÎÏÒÒÔÑÑÑÐÐÐÏÏÐÏÐ}smkc]UOLJRMNUYXZY^__ba`_ebaccfgejhgceedcacadedghknmijmljkkkkjkoopnmiihegy¯ÛÒº¬¥ nf_ceeababgbinkoo`cg]aleaoplhsrns}ypluw|yujswio|{}}b_zwg`gkd\]uvkT@67899?TqhaujZ@,)(+LztTGLfb2#-YX"+ct_g´¿»¿Á½º¹ººº¸µ²¬©«§¦ª®¬°±²µ±§¡£ª¬°µ»ºÀÂÁÀÂÄÆÄÅÆÅÆÊËÌÌÌÊÊÍÍÎÎÏÑÒÑÐÏÐÑÑÓÓÓÒÐÏÎÌ̵¢v_H=8632/,-2**'),*4CJ2L}¥° ph`TD7?8>OJ>=<851/.02200<985.,+/8K_r «µ¹¿ÃÄÃÃÂÂÃÂÂÁÀÀÂÅÈÊËÍÍÌËÍÌÌÍÎÏÎÏÑÑÓÒÑÑÐÑÕÑÐÏÏÑytmc`\SNJKNSUV\Y\[]^_a]_c``a_`hcfeecffcddddeccgforlggikghjiijlmpqnnnrgdfkÉÔɾ®ªtmeab__baeddjlkkfchdZepfcormkspkvzuqqzv|~}xsm{ynt} |w^m o\^gqldi{bWI=8778<D[vnayeV2/1*/Xt]ValW-(2fX$ 0[thf³Àº¾½»¹µ·¶º¸´¯ª«¬¤¨«ª¬³¸³°§¤¡£¨©°³³¶º¾ÁÁÀÁÃÇÈÇÈÈÄÉËÌËËËÌËÌÍÍÎÏÐÐÎÏÐÑÑÒÓÒÓÏÎÎËǽn`M@;<C?73/3/)(++*3=HB3X«¯§ze`ZI=@>>CZ@><95.-./03213698.+*/Fm]sª´»¿ÅÅÄÃÂÂÂÃÂÂÀÁÄÆÉËÊËÍÍÌËÌÌÎÎÏÍÏÑÑÓÓÒÒÑÐÒÒÑÐÐÐ~yoea[TPJGNQLNRW\X]^]^_aca^\``abfffbdgecehe`cihhkgedefghhiiimmproopovkiik ÃÖËòª vsk^_[]`]b_ejjmibdpc_knhipnooojltvvx~|y{~{spnrqwr{uk{zg^itzsljxpOA=;79=<<HclfxlP/071<eq\dqmQ0+@so&#<gkfnn ª»¼½¼¶µ±¶¶µ¶³®¨«¨¤§¨¨¦¦«²µ³°¨¥¨ª°¶¸··¹ÀÁÁÂÅÆÉÇÈÉÉÉÊËËÉÉÌËÊÊÌÍÌÌÎÎÏÐÑÐÒÓÓÓÒÏÍÊ÷©j]QD?IURI:776-1.*+/5FP7>p¡ª± k\Z[LC?F?OH9<B<225:351*156555/4;Q[q ¬µ½ÂÄÄÄÃÂÂÀÁÂÂÂÂÇÈÊËËÍÍÍÍÌÍÍÎÎÏÎÏÑÓÒÑÑÑÐÏÑÑÑÑÒÒytkf_YSIIKLMLLSUWX\^^[]__aabc]`fedbbbfhddeecfhgedddegfikjkjklprnqqssqlhgxµÖÒɸ¶}qkhc\]Z[cchiimf^df^_khhjidnvqqrtsw~vyz{spkturv v| ~yrp``u~hfknkQ@:799>:3:FftsuaG0158JuxdYpwjI)&Im02VnURh¸º¹¹µ±°µ·±¶²«ª©£ §¦¥¥©²¶µ°£¦«¬¯³·º»¹»½ÂÃÃÃÅÅÆÇÈÇÊÊÌËÉÊËËÊËÌÌÊÍÎÏÏÎÐÑÑÓÒÑÎÌÈ¿¯vhYKNT]f_U@9;@4*(%%*,:LH1F¢±® ^Ta]NAAERT78:96///22.-116483/3;H^n ¬µ½ÁÅÆÅÄÂÁÁÂÁÁÂÂÆÈÊÌÍÍÍÎÎÍÎÎÎÎÏÏÐÏÐÑÑÐÑÐÐÑÒÑÐÑÓzyoghfVOMJJILNTWWY[[^]]_b]]a`__bbbdddgheacaaaba`flfehjjljihijoqpqsvqungdqØÔÓ÷~xpgea`]^eejgghc`h`_fgbhofdottvzwuxyyty}yspg|xvz| puzraj|vimneP@?5147:509LltugT=124;XlM\xmUD-'C|y+GpeJkª£²º¸´²¬³´´´³¬¬§¢¡¢¢¥¦«¬²¶³¬¡§¯®°¶»½º¼¼ÀÂÂÃÄÁÅÇÇÆÉÍÌÌÉÉÊÊÊÉÊËÉËËÍÏÎÌÐÏÑÑÐÎÊÆ½©}k_WXacjh_TE<>L:-+)%%'-GI69d¥¸ªp\][bNDDPVI975651220++0179:3004A\nª³½ÁÅÆÅÄÂÂÁÂÁÀÁÅÅÈËÌÍÍÍÎÏÎÏÎÏÎÍÎÏÎÐÑÑÑÑÑÑÒÒÒÑÑÔ xsokdYSNIIKMMTUTWZ\^]__^]_aad`bdeecekkfcb_^ce_cefgigefghhhiknoqqsqomgh`b¿ÕÐÇÅ xsppfc]ac`ghigcfmhgliemtjlssux{qovysr{}rnmpmowzwyoxrirlt|iQC:B@87454,7Ts|vtfW5.+1?_x]A_sdXD/&3rxLXoTj²¥©¸¶±±¬³·¹µ³¯¬¦¡ ¡¤§¬®¶¸±§£¦¨«®·¼½¾¾ÀÀÃÁÁÄÄÄÇÆÆÅÊÉÈÈÉÉÈÈÉËÉÊÌÊÉÍÎËÎÐÎÍÎÎÇ»®|hYWZkrpmf_UH>?E9**,$%%*8E@-@¬°¡d^Wa^QHHUU;775121-,,+--3:A4314:Se{ ©·¿ÁÄÆÅÄÄÃÃÀÀÂÃÅÇÉÌÌÍÍÎÎÎÏÏÎÎÎÍÎÏÏÐÒÐÒÑÑÑÑÒÒÒÒÓ ~xqkd^YQJKKIKPSUSW\_]^_^^`ddecabbdacfgfaa`cddaacdihgghigfkihlnporlmkfgdez´ØÎÈǪusttkfbgdahekgelollmgipomnqorupijtxsruphffo tqtz y~ zvbv{mgu}vzw_HAJJ@:1-33-0QtzkibU9.//6djOIZ^`d>+$/Y^lwgw¥®¤®´´±±¶¹º¸µ°¨¦¢¢¤¥©®µ¸ ¥¥©¬°µº¿À¿ÀÀÂÃÃÄÆÃÆÇÇÄÆÆÅÆÆÈÇÇÈÊÉÊËÊÉËÌËÌÏÎÍÌʰ}cPHXn|tcYROFADJ6*-,'(%+0AH85Z¢³¨eLVd[MIPSG;53-.,+/5-),8962-.,0F]x §¶¾ÁÂÄÅÃÃÂÂÁÁÂÄÅÇÈËÍÎÎÎÏÏÎÏÏÎÍÎÏÎÐÑÑÐÑÑÐÐÐÒÒÓÒÐ~wnha\SNMJHLPQVWZ[\_[]]_aaa_b`abcbac`b`__`badbdbffhicjigljknqonrqpqkkgdm¦ÔÓḚ̈wptsomcjfhiflkimnlmieilmjmlnsrhbnu{|stg`cetpv{zxzsiylix{vqhVGINL;413680-Mn|kOSO4013HmbHCNKZcH&"'Gzp~}n§¨¨³µ²°³·¼»¶´¯§¤¡ ¤«±µ·¢¥¨¨¬¬³¶¹½¾¾¿ÁÂÄÁÄÅÅÅÇÊÅÅÆÄÂÄÇÇÈÇÈÈÊËÊÉÈÈÈÊÌÎÍËŸbQOT\xnZMMOGACG8,*0*+(+/:K>,4rª¥~TMW\SMO\NG<40,,*/001.59=13.*1;Vs ¥²»ÁÃÄÄÃÂÁÀÁÄÂÄÅÇÉÌÍÏÎÍÏÏÎÏÏÎÌÍÎÏÐÐÏÏÐÐÐÐÑÑÔÔÓÏ ~zsme^ZSMIFJOPRRUW[[\Z[^`_bb^]`afjb_^^_`]^b`bcdd`cehihehjlppnlnqoqpjkfdgÐÔÐ;©x}xuqiiiilgjgikgikdbgjllqlpwo^]mrv}|vjddgyq{| zznu{hk| }n^WMLMRO;2..592,Ahj@FF4054Gw]L@7@YmQ0$)Iy|evyt}¡§¯¯±²¶»½¹µ³°©¢¤¡¡«¯´³ ¤¨§«¬±¶¸º»¼ÀÂÂÀÀ¿ÃÂÅÆÉÉÅÄÄÅÂÆÇÇÆÆÆÆÉÊÈÈÈÈÈÌÍÌÇ»¥hSVYjmvsfRGDGEAAE7,-1,(&+-.DE6/H§¯®¡pOEYZYSXSKA2;3.0130/)3::5.((.7Oj|¡ ¥°ºÀÃÄÂÃÃÂÀÂÃÃÅÅÆÊÍÎÏÎÎÎÎÎÏÏÎÎÍÐÏÑÐÏÏÏÐÑÑÑÑÓÓÓÓ }vqkc_ZRKIMIJQTUY\Z\\\[]`a`\]a`cc``_____][cea`ccdegghhkkmmmmoopoonmifdc|³ÕÒн zxujhfklifaejijibcgkmjnlooj_fknv~qjhck xp}{~sz } seo~ {rfl}r^LHRYRI9761.032.AhjA:;6A:6=LYN:-6Un`;('Dvzg^`jx|¡«³°±´·»¼º¶´¯©¥£¡ ¡£©¯±ª¡¤¥©¨¨ª«³´·º¼¾ÁþÁÁÂÂÄÅÅÇÂÃÂÂÃÄÆÅÅÅÆÆÇÆÈÈÈÉÉÊËǾ§iYS\ltspo_UIA>EBFBF80.,/+)&(,8ND.1g«¯°`GJW[R^OA>?@3-0.21,*1<B<-,)(2Ifz £¹¿ÂÅÅÄÃÃÃÂÃÄÅÆÇÉÍÏÐÑÏÎÎÎÏÏÍÌÍÏÎÎÏÐÐÏÏÑÑÑÒÓÓÓÓ¡ ztoibaULJMKKNTVVYXX\_]]_\_^_bca^`_``_`^^_cbbdbcadefffhkmnnkmorqqqpkjgfo¦Ü×ÐÁ¬}~xngcigjeaejmjmcefglkjklicgplgs~{smjds mm||zxox} p`r||phm~rbL>A__L>6555+/00/Fo{h=46863,7PQ<.,0FnqJ5.AfyoUThwx ¦´¶µ¸¶º¼½»µ®¥¢¤¢¡¡¢¦¦±® ¤¥¨§©¨²µ·¹·»ÀÁÁÂÁÄÃÄÆÄÃÃÂÁÁÃÂÄÄÃÄÄÄÆÄÅÈÉÇÇÆÃº¥gV]`bmodZYN?=@:;;9>=30/120,%&/:ML4.@|¦¬²¨zY>L]T[W?8C@0,./23,(/?D<2*'1-B]r £·½ÀÃÅÄÅÃÄÄÃÃÅÇÇÉÌÏÏÐÏÍÍÍÏÎÍÍÎÎÎÎÐÑÐÎÎÐÑÑÑÓÕÓÒ¥ ||okba[SMKMKLPRSVVVW_`_^Z[Z___]]^]`b^a__bcbddccbdgeefhiklkjqmppqsqmihfgÉÜÓ²~}zmcedghejjmigdjcelgelnjiosmkuzwuugc{||~mmvyy{~|oj{ }sggpiL<COcZF<6486,,15-Cjp_;-55,-5=@<5-008\iRDC>EglZNaxps{£©¬³³´¸º½¾¾¼²«¨¥¢¤¡¦¡¨©¬¦¤¥©ª©§²²¹¹·¸»½ÁÂÁÃÃÄÅÄÃÅÃÂÂÄ¿ÀÁÃÂÂÂÂÆÈÉÇÅÁ¹©i[Uholb]I>??;:96766<83/.021-'&)+?^=./U¬ª¶pQIUYWiK=<94.0120**.6@;4,),.:Tq ¡£¶»ÀÃÄÄÅÄÃÃÅÀÅÈÉÊÌÌÏÐÐÎÎÎÎÍÌÌÍÍÍÎÐÑÏÎÍÐÐÐÒÓÔÓÒ¤|tof\[WPLLLOSSTSSSV\`]`]]_^\`]]`_^`bdc``abcdec`cefhihiklkkmnpqpsrpmga_pØÔDZ~|}tkmdedgmqmfefnhimifqpiiqsnmwyvtsjn{~nswwx| }~kl xfacYC>Od`A6/049-'%167PcWkA/,+-3FF;454-'0QrYMMJ@Kj`=I`oµ³µ±³µ¶¸¼ÀÀ¿¹±«¨¦¢©¤¦¦©«¢¦«ª«ª¬®±¶´¶º¾¾¾ÀÁÃÄÄÆÅÅÄÁÁÀ¾¾Â¿¿ÅÃÄÅÆÆÀº¯wYXap{mKG:6658679858891.)../--&)/8PP1-7f¨±®hSPRU^[N;5751,--)+/1892-+))7Oiy¡¡¬´»¾ÁÅÅÄÄÃÄÄÂÄÇÊÌÌÍÏÐÏÏÏÏÏÍÍÍÍÍÎÏÏÐÏÎÎÎÏÐÑÓÔÔÓ¢ ¢yniaZVQLMGNPTTWWVZ_]_][[_`\^`_`a_bbbbabccadedgfefklhjjlnoloqtrspqnfa_fÏ×Ìá{tsumjcekllihjihkngfonhgtlgowvqoper rozwx~u} { xhq|l`UN?J_oQ1.,+4:.&&,07V]WgK+)'1;@56:83*./JjlOJL@EXZK>Z²·³µ³¶µ¸½¿¿¿¸´«§¨¨©ª¨©«©§¡¤©«¬¬«±°¯±µµ¶»½¼½¿ÁÁÁÄÃÃÃÃÂÂÀ¿¾¿À¿ÀÁÁÀÀÃü³fV`mtsZ<41210678<<887862/001.6?1+0Ed:.4Nu«½¬{bSLKT`UA7476.+33..159,+**+5Ihx ¨²»½ÁÄÄÄÃÄÃÃÅÄÇÊËÌÍÎÑÏÏÐÎÍÎÌÍÍÍÎÎÎÐÐÍÎÎÏÑÑÒÓÓÔ¤¤¢¡|sng`]YOGHKNPOUVVZ\[]Z\Y]^]\c`bb`acfadbcdcccddfhgjkjkglnllnqnlrpmkgc^bÎÙÓȶ¨{zrkmfnsollpuigijgghfbhpjep{spnecy|msxw~rp{~|zkw ~gQE4<Qg^A/.01;>/(#&.5LZG^M,*.6970.069=?<H^lCDJLVPSZD[¤°µ³´³µ¸»¾¾¼»¸¶¬¨«¨©ª«ªª© £¤¨¬ª¯°°µ´µ¶¸»¾¾¾¾À½ÁÂÄÄÄÁ¾½¾½½½¾½¿¾¾¿À¸§sbcknh]C3210/3467?87768940../-53'*/AYQ735U£±¸«{_UIN^]I9/.23015-+/154/**+3Icv ¤±º½ÁÄÅÄÃÄÄÃÄÄÇÉÌÌÎÏÑÐÏÏÍÌÎÍÍÎÎÏÎÎÐÐÍÎÏÐÓÒÓÔÔÔ¦¢¢ wplg`[TLKIMRRTUXZ[ZYXXX][^^baaaaacfdda`ccdccdfijjjhgijlknlqpnppmifb^`x¯ØÔʸ¯¡ ~yrqsmwuspqtnfdejie\\lmjdprmnl^]zlw|wpr~|wvriwj]P?4@fiG30-.6@C-$&',;ChENO3+,;;94//9IXUQBGTR;@WjZUZY\}¥¶´²°´µ»¿¿¹·°»ª©§©ª¬¨¦¥¡§§ª¬¬±®±°²²³´µ·»»¹º¼¾¿ÂÄÅÄÁÀ¾»º»¼¾½¾À¾½º»³¡ pnxxcOC4300./20124156566532+-*/,+)-6OZ:14Ek¡·µt^R=VaM>;4-7910*&+1450,+-1A]s ¢ ¡¸¾ÁÃÄÄÃÃÃÄÄÄÇÊËÌÎÏÐÐÏÏÍÎÎÎÎÎÏÏÏÎÏÐÎÎÎÐÓÓÒÔ×Ô¥¢¢¡ }uohaXUNJHIMOQQSSWXWTV[^]^ba``ecaccddhadehdagceijjjklpnlnnnnnmokghe``hÑÖ͵¡ª¥~t|{o|xstoqijhfmk`SZjc`fqpili_i vr~|y wx |}mcus\X@56Lh\>/+(,7GA,''%(;M^Y7`4++14=;>ETX^KA2.=QEJbp^TYflz§¡»¹¶¯±¯·¾À·°®´¯§§©¨ª«¨¤¢ £¦©«¬¬¬¯¯®±³³°°±³·¸·¹»À¾ÁÃÂÁÀ¿Á½¹º¼¿ÀÃÁÀ»·¶°vz|U:75510/20-,++,15313911.--**'(+0CUM556P¦¶³q`GBR^D69/046-*&+1553.--+:Xn ªµ½ÀÂÄÃÃÃÂÄÅÅÇÉËÍÎÐÐÐÐÏÎÎÍÎÏÏÏÏÎÎÎÏÎÎÎÐÑÒÑÓÔÓ§¥££ yrmf^WOPLJKNQOOUVXYXW\[^^`abbb`__bdegdcbcdcd`beehllmmjlmlknonklmkc]`dÈÚÒÈÁ¥«¢z~wz{}}zvpimmjol]V_dYReqmiicct sv~wytz ~}tir~xeUM<7Df\;74.,/>N:,%$%'2Q\a@HK-'*9IKXX_P<0.('0>QTloXPZp x££³»·¯³¦¯»¾º²°µ°¨¨ª©§§¥¢¤¨ª¬«ª¬®®±³³±®±²¶¶¶¸¹º¼»ÂÁÀÁÀÀ¾¼»¸»ÀÂÁ½º³°©v`?2335569<2-)')*,20./../,+2)**+,02VV?11=]°»¨ p]<>SO<55-092.()/531-+-,4Sj} ¡ §±¸ÀÁÄÄÃÄÅÃÄÃÅÇÊÌÐÒÐÐÐÏÏÎÍÎÏÐÐÐÏÎÎÎÍÎÎÑÐÑÑÓÔÔ£¦¤£ }zqh`[SOMHLOPOORSUVYU[[[^^_abccabcgfhddcbddccfeefgijqkjkklmnqllmle]\ZqÃØÖÍÁ²³ zt~~xinqppi\YfaXZggipijozhy~zzsqz}{nbw p]P@57QkQ39>3.2EP>)%$)).DWaW4[=//:APZNJ@;0'$')9UawpRM^~~®ºº´±¨¦³¿»º¹·³ª§©«©¦¡¢¤¨ª¬©ª¬®¯¯°±±°¯³µµµ¶¶¶¶ºº¾ÀÁÁÀÁÁ¾¼º½À¼À·¶¯ª n^E3126BNRTQI<0++*-96)*,./**-,*14122FXL-,1Hx¢µ¸£lP<AZI21434:)/-,0450-.-1Idy ¡¢ ¦°¸¾ÂÃÃÁÁÄÂÃÅÇÈËÌÎÐÐÑÑÏÍÍÍÎÏÐÐÐÏÏÎÎÎÏÐÑÐÓÒÒÔÔ££¡¡£¢{tog`YVQIGJLNOTRRSXZ[Z\Z[_`adibbacchgcdfeeedcedefglniglmijlljijgia^[m¡ÔÕÑÇ·µª¦s{zqouurjacf`[^oljmgfy viw|ts{ }~} ~pVrzg\H97@YcG5<874<S`9*'')'+9Q_ZFFE78==E@8762,-()*3HiqUQg®¤y}©³±®©¥²¼¿¿Â¸¶¬¥§¬ª£¡¥¡£¡¢¨©¬®¯±±±°°°´µ°²µ¶··¹¼¿ÂÂÁÀ¿¿¹¹º½º½¾¹µ«}_@7542;OkwurfTD:41-.2))(+.,(.*(053248RM;01=Sª¸³_==SWJ-.22:.0-*1672--+/B[r £¤ £®·¾ÂÄÃÁÁÂÂÄÄÆÉËÍÏÏÐÑÑÐÏÎÎÏÏÐÑÐÐÐÏÏÏÐÑÑÑÓÔÔÓÔ¥¢ ¡¡¡¡{vsmg_VOHDDINQPRRSWV\^_\[`ccadaabaeedcbfedgf`dccdfkjjfjkjkkjghihea\]_ÉÛÕÉ¿³«¸ |~~yxryzshfdg\_gklnmd_v vhvyy}py ~zvz s[W}n]P@;8L`P=<<991=bi>'&$*)+0BSHB<:5::8=1,0/-,.,))2KgupYTq³¨ |}¦££¢±¹¼ÀÀ½¸®§¦¨§£¤¡ ¡£§ª¬«¯¯±²°²¯®°±°¯±µ¶·¸º¼¼¿À¿»¿¿½»»½½¿½¹¯ y^K427736U ~nZH?7-+++**+/1130.054246CQL114Dm¼§sU>ETT3'*275/*+465/,)*+;Tlº§ «µ½ÀÂÄÃÄÂÃÄÅÇÉËÍÐÐÐÐÏÏÏÏÎÏÏÑÑÐÐÏÐÏÎÐÑÓÒÒÔÔÓÒ¦¦ ¢¡£¢{ztkb\SGBEJLKNKORUYZ^a[]beecbcacbgfdekeohhfdccaeeeeegihjkkljiiida[Y[}»ÛÕÏɶ²»¨~{ujhgdafjkiojaey yzlnzxv vy }x|~}hUtnSA:;<QZF?;::32Dhg=*$#'+.*3I>97221106121.-,,)&-<Ynmq`_}¤«¡¡ ¦¦¡¡¬´»¿Àľ±§¥¦£¢¨¡¢¡¤¥¨¬®¯¯®°°´´°¯®¯¯¯¯ª¬¯²²´¼¼º¾¿¾¾ÀÀÁ¿½½¾¾¾»²nH9712:;DOm£lYK=8-,1--11363200;B544AQRA/.9O£³²lD<HN?'$/=8.('.38-,))*3Oi}¥¦³°¦¦³¼¿ÁÃÂÂÃÂÄÆÇÊËÍÐÐÑÏÏÎÏÏÏÎÐÑÑÑÑÑÐÐÏÐÑÒÒÒÓÓÒÓ£¦¡¡££¤¤¢ {xnc_UJDFEKHKOQOQVVZ___`^c`bbcfcaf`cifhihddcb^befhbjjgjjkkmgijfb^WYg¯ÕÙÐɼµº¡{sjejeaiiggge_f|zy|ci}|u| {wdVzgI??=AQLGC<>6,/JmtQ)"&%-06A772/23010/0552,)(((&;h{pf^i³§££¢ «®«¨±»¿ÃÇ¿±¨¡¢££¡ ¡¢¥§©¬²²°°±³°°¬®±¯²°««®¯±·¹¹¼À¿¿ÁÁÂÀ½¼¾½¾»°b>85328QsqI§©£lNC@413.-//3574/-0B647?NMQ4,1@eªº°zV7<HK2&(1?:+(/650/)++/Hcw¦§¡¤ ¦±¸¼ÀÃÅÃÂÁÃÄÇÉÌÐÐÒÑÐÏÐÏÏÏÏÑÑÑÐÐÑÐÑÐÐÑÒÒÒÒÓÓÔ¡£¢¢£¢¢§¥¢|vnd_SOGHEFIJKNKOTSX\_\acb^`bbdcdcccfghiefda`c`fdddehkmjlkjjkgdea\[dÎàÔμºµ¦«¡ |uljnjfjlcijc_l |{ejy{~u} {z rXe{dCBOLSQGIJ?>-'-Eji2)*++6K^.-/21//-.20166-+!$$+KwtZZsµª¢¤¤¢«´®«°·»ÂÆÅ¿¯©£ £¡¡¢¦¦¦ª¬®°±²³´¯²¯°¯¯°¯¬¬®¯®°³¸¶·»¾ÀÁÃÂÂÀ¿ÀÁÀ¼iJ854487Qka±¨|cNB803012246842,-23/59JILB.-4E£¶©qI;?J<(#'9:0-/245/*-,.A[s ¡¡ ¡¬³»ÀÂÄÃÂÃÃÅÈËÌÎÏÑÑÐÍÏÏÏÏÏÏÑÑÑÑÑÒÐÏÐÑÒÒÒÒÒÓÔ££¢¡¢¡¡¥¢££ ~wqkbWPLHCGGFIIHOVUZZ\^``a`a_bffdcjegghieheg`dcacdgbgikjhjfgfgfd`^\]r¹Ø×Ͼ·®®¤¬¦§ ~qlsuonmiji^\z tmpvv|oz}}z{ }n_aoW:=EMNWQKDA9)*3Nl|tF'%%'0LYA*--.-,-/0.//4,*%#&-Zzac|¨»¨¤¤¤£ £¯«¦ª±¶ÀÆÄ¼°©££¦§¨ª®¯¯²´µ³²²±±±²°¬«¯®±®°·¹¹¼ÁÃÄÅÄÂÂÄÅ¿¹ªU;3.--36A[zkG¨ª¢mTD9657<97799:4-(*4504=AJH323<\¢·²© d84C<)%*-52*(-341-0,*<Uo ¡¡ §°º¿ÂÂÃÃÄÄÅÇÊÌÍÌÐÑÐÐÏÏÎÎÏÒÑÑÐÐÑÐÏÑÑÑÑÑÒÑÒÓÔ¤¥¤¢¡¤£¦¡££{tof[ONFCCFEKJHKRUW[\\^_acdbdciiigffdhcdjgfbacbccffehhhfiihgifdb_Z[hÓÙÑÇù¸±ª®¥ srstvupkjf\_zeqwuy {px} ~z}yaVXK:=@DMYPC=?4*+6L^rK+#%-9?cA+./....1/3.,.+%!$%5gzjm²·©¤¤¤¦¦¦¦¥¥ª³½ÅƼ°¨¢£¡¢¡£¥§¨¬®°°±±³µ´±®®±³°«ªª¬®¯¸¹ºÀÃÂÂÄÂÄÆÇÆÀ¸¡rA72--+-;9BSRGe¦§v^LB4/:?>:86694,&*44,18:DKG1/3<q¢´²¥{U<8?:,**-000./410-+*5Tl ¢ ¥¯·¾ÂÂÄÅÃÃÄÈËÌÎÐÐÐÐÑÑÐÏÏÏÐÑÐÏÏÐÒÑÐÐÐÐÒÒÒÒÓÔ¤££¤¢££¢¤¤¢yslaZSKFEHILMMNNWX[][]_eaecabfgfbfdef`bgedcbbfcachdfhgghflhhfdc_[X]w·ÙÕÌÆ²¼´¨¯¤~y{yuvmkkcY_v ~~}z~knzy~ }opy|| ~wlYTB=AACWeMB=8.*.@B]pz]1#*09?M9+/0+/0-.0/*(+%!"$&>xwn{·¶©¥¥¥§© ££ ¥²ºÃø¦¢¥¢£¢¢¦©©¨¯¬°³³´¶µ³¯¯®²©§§ªªª¨«±´¹¾ÂÀ¾ÂÅÇÊÊÊĽR42/*/,*1>JJL<b®©¢|iUH50<HED;75670+%02014:=GP9./9N¥°´pI2?=.)*((.:84441,,-3Jf|¢¢¡¬´¼ÁÂÂÄÄÃÄÇÊÍÎÑÑÑÐÐÑÑÏÎÏÏÑÐÏÎÎÐÐÒÒÑÑÒÒÓÓÕÔ¤¤¤¤¤£¥¡ ¢ xwpfYVQKKHJNJNQPUXYW\a]`bddbdecddedeg`aegdcdaeddgfegefdgimgeddhc^ZZgÞÚÓÉ»º±©°¢¡¢¬{xyjik`Waw~~}{}{|vjnzy} os|~ |w} vdM;AFBI\[I=74*$+:BQoppC-+2?E:*..-03,,/1+*+*$!#$'Hoo¤º²¨¦¦¢£¬«¢¥ ¦°ºÀ¿¶§¡¥¦¥¤¥¥¤¨©¦®°²²¸´°¯®«ª©©¥¦¨¦£¥¦¨«¯·¼ÀÂÁÁÅÈÊÌÌǶF21/331*+F\ZMCh£³±¨ n[H1.APPL?83481(%+340:<:DOA0'.7c¡¨®°¡lI;<1)%%),7F8320//05E`w ¡ ©²¹ÀÁÃÄÃÂÅÇÊÌÎÐÑÔÒÏÑÐÏÏÐÐÐÐÏÎÏÐÑÓÓÑÒÑÒÔÔÕÔ¤¥¥ £¡¢¡¢¢¢ }ui_YSNPLKJIMKQSTYX\^^`bfebccbdfeefdccbeegddcbegbchfeehiighfegfaZZ^ÀÜ×˸¿°®©¡£°¯yz{{wmmh_Yav}z}~||nclus xu{~~}yvs vjOIMJHSTLB4,)%''*2ImjfZ>.=HD80/+,/5/12..*)("#!#/\ksª²«¬ªª§¦ª¯®§¨±¼À¼²¨£¡¤£¥£¤§¤§¨©¨§©ª¬«®¬®ª©§¦¥¥¦¦£¢¢¤ª®±¹¿ÂÃÅÈÉÌÎÏɲzH326?@=19KYXMFy©´¯©jZC00CVXSC:5583,&&2503<;>IA6(%.D} ©®¥g<50,"$+(0B>8562700@Ws§¯¸¾ÁÄÅÄÄÅÈËÎÏÐÑÒÒÏÐÐÏÐÒÒÑÐÏÎÏÑÒÓÓÒÒÒÔÔÔÔÕ££¤¡¢ ¡¢¡¡ ukf`TLLIHHIOJQRUX[`\\acbacaafddeeghdfege_^`e`decbddaahkkiggcdcb_\ZjÖÙÎý³¾¯©¦£|{w~nb_fr|xx|}||igpwx ~ps}z} ~yuu{|sxryhc_RQVPHPYOC;1*&%'%(3D_aJaRAHUVF*')*//-130.)''"! 1m{jv²«±°¬¬¬²²³£ª«²¼Àº®¦¥ ¤¤££¢£¤ ¡¢¡¢¡¢¡¢¦¨¤¢¡¢ ¢«°¶¸½ÂÇËÌËÎÏɬpG21;EQSRPSYVIX°´®©jU@17BSUTMA81=80)(.640<<;@EA+')2[£²© `:-5$%*)+5>C;00110:Xt ¡ª¶¼ÂÃÃÃÄÅÉÊÌÏÑÒÒÐÑÑÑÒÑÒÑÐÐÑÎÐÑÒÒÏÓÓÕÔÓÔÕÕ¤¢¢¤¥¤¢£¢£¤¤£xpjaXQLFFKMNOOTWX\`_]__dbcbcfceeefdceeefa_`cacd`cbabcekolhhheee`^Y\w°ÚÔȶ¯¨°¦} udhnsvxzztqvzw`fvxx ~uz~}y} {yzobdSRQVYROIFOSCAQ^T?4-,**)')0=NRQU^\TZ[O=-)-,/--,+(#$(#"!9s£uixµ®ª·¸±±²°®µ¯«¯¹Á·«¦¥ ¡¡¤¨¬´¸½ÂÈÌÎÐÑÒÌ©kL=;3=[a``_]UOj´µ«}eOA@HORRXSJB99>8.&*254:?;:LI8*$(5m¡®¬¡ S6++)+9(/;B?834.*5Mi}¡¡ ¦±¹¾ÁÄÄÄÆÊËÌÎÑÒÓÒÑÑÑÑÑÑÑÐÐÐÏÐÑÓÒÑÓÒÒÔÕÕÕÔ¥ ¡££¤¤££¥¤¡|vpk_XPLKKMKMQQTY[`_^_\aefjfebhhfdcacdcdc`^c_dc]baabeciiihijdgda_ZYaÖÚͼ¹¼°ª®££¥¥vdsz{xvtvtoqvq\duv{ xs|~y{}xx}}d_aab_bgdZKDJQKCAU]RC;3/-0+(,0<EHJ?Xcgkh\V5,***.-42*'#$"#B}so«¸«µ¶··µ´¯¶³v|´º°¥¦¦|zvqkfec[]\jr{ ¢¨°·»¿ÆËÑÔÔÔË£lQLSB>HU[a\VTa¥±³£kQ@BPWUXX[\VJ<9B:4-&0627=8:DO<)))+Ht¤¬¢N(.&')%&1A=:1-**/Hex¤¶¼ÁÃÄÄÈÊÊÌÎÐÒÓÑÑÒÑÑÑÑÐÐÑÑÐÐÐÒÒÓÓÓÓÔÔÕÖÖ¦¤¢¡¥£¡¢£¢¢¢£ |unf\SRJLKLQQRRVWX[^]]adfecbccfggffddccdb_bbdcafaeccdffefejhedb`XX[}µÜм½»®³°¢§© ¢ztvuyx~xvusuxxi_hos{ qq|}{yskp}wsvxvxxdja[I?OGC=DT[ZK930040,*,<CC>7FfdvzpiZE309@OSRF-'' 'Luu¶©®¸³·»¸·¸·¸¬´·®¦¥¡zvqmg[QSOKFGBJNXeoy¡§«´»½ÇËÑÖÖÕÍoVXggZGCOKQNc¥¦jKA<CMW^`_[`[QF<<@85*0105;3?;OC2-/)/X¨¨¤nB.)%#$#*6:8710),F`t ©³º¿ÂÅÄÆÉËÌÎÑÒÔÑÒÒÑÑÒÑÐÐÓÒÑÐÑÒÒÔÔÓÔÕÓÕÖ×¥¤£¢¤£¡££¢¤£¡ ~tohc]UPOILNNOSWTTV]]_ba`b^`bbacfccecccbba_abc`ccedffgfcfhihdddd^\Z^ÓÒÄù©·±¦±¬ osrrvu}}}xzxdepqs zpt~~~|~~}~yuv~~tgO=B?A@NG>?K]`cK<558=61.0=EK=(2_`i{{{kZQV\bhO<+$$ +_yz·¸©«³¸¹¾»¸¹ºº´ª£§µ´«ª¥{ha`YSID>BA>@BIKU[djs|¤¨¯´»ÃËÑ×Ù×ˤtX`v}zod`bcl{hC>FONKSd`cab_XOA>C;71,/2:>4<BAP8,+)-@k¦«¦g<-)('$(0:564.*,@Zo ¤¯·¼¿ÂÅÆÊÌÍÏÒÓÒÒÒÒÑÑÒÑÐÑÒÑÒÒÐÑÓÔÓÓÓÔÕ×××¥£¤£££¤¤¤££¤ £¡ysnh`UTRKKOPQQVTUU[\\]^aaccaaaceabccb`bb`a`a``fbedefggeghgffdee][UZ¹×ÊÇ·µ¹¬ª·°©¥¤¨ wuoiku{}||u_htvv{ow~}z~xuxwsp| |lW<39?CMRC;CS^abMA89682//0>DOC.*;VYqxy|i^POG9+&"! !4kv|¸³¦ª¯·½À½¹¸»º¸·± ¨¶³¬®vzuxppndWPMA@CBDDEIJNUU[bhhrx £§«¸ÂÌÔÙÙ×Í«~bfs{|vjTICb_RVcfhkhcaXM?=;85*+28964E=MD3/)(+Kx¥ª`9)5#&).:962+*%6Sk¢ «´¸¼ÁÄÆÊÍÎÏÑÓÓÒÒÒÒÒÓÒÑÑÓÓÒÒÓÓÓÔÔÕÔÕÕÖ×Ö¤¡¢££¤¤£¦¤¢¢£¤¡ ~zqje\URMJNOQPRVWT\[]`^`bf`babcbdbacdbb`_dbb^_]`bcbdggffcbgfebc`\VXd¤ÔÓÇ·³¼³¶¾°¨ª¨ª¦¦¥ xommpsrwyvegqu{ |rw|~}{xturYGINPTWUECMVa_`GB=9830.336>KM;)+5AXhjwnQ95.(,'"!! &6}£}v¢¼°©«¬¯´¼¾¹¶»¹¸º·²¬¥´²¯¨eeqllece\TPGDDHJRTQTUYcadpqsww}¢¥«¶¿ÇÑרÕͳgkp|{obukbY]fb[ejnnllf^UB>;:6/-15>:6<BET9-))*7Wª¥V><3%&.8641.**4Mcz¡§¯¸¾ÁÃÇËÍÎÐÑÓÓÓÒÒÑÐÒÒÒÒÒÑÓÓÓÔÔÕÕÕÕÖÕÕÕÔ¤£¤¥¥¥¦¦¥¥¤¢¦¥££}uniaWTNKLPPMPUWX[^[\^ccebacacbedbacba`bccbcbdaacbcffdheffeccac^WV[ÊÚǺ½¼³»½¬¶±¥ª±¦¢¤¦£¡£yofjmqrqs{wglttxzpw~}}}yvu{le\c`__WMHGVY^b]HCH<620284+3FLC.&(-8FJ\v|U,''$$$# %#+Mws~¥³«¨¬¯¯±¹»º¸¹º¹¹·¶´®¯²°®cQZaed\cfca_ZW_\a][`aaboopsuy}{{¤ª´½ÄÌÕØÖÔÁlhhmowz}xoqrpwythYgkjkotrqpec^NC>0850.5@C:4FEOD2/)%,An¨ª§yV7:##)2750-++-Ebv~ §³ºÀÃÇËÌÎÐÓÕÓÔÒÒÑÐÑÒÒÒÓÒÒÒÓÕÕÕÕÕÕ×ÖÕÓÓ£¤¤¦§¨¦¤¤£¥¥¦¥¦¢zplc[TPKIMNPQUVV[aZ[__afdbaddbeeadbcaabd_`bccb_caaccdffeic`ba`]YWQg¸ÖÌÁÅ¿´¼¹¨º¼¤©°«¯£®uojlonnprwxndmuu{ zprz|y ~{vvmcjihffbRJMRU\c_aKFF>;B:7=;.,<HPB+'(/4/;ToC'*(&%"!".Zzyª¦¦¬®°´·¾»¹º¸µ·º·¶¯´³´£oJPZ^efekottrpqwn^ibophhvvywy}~£ª²ºÂÊÕÙØÖÅ¡wc\Y]esy xoprwz~~tklppvptrnmihbWLD<87/,4;>:4=OPO8-($'2K¥°¯mL=/!!)74**-.4<[p §±·½ÂÆÉÌÎÑÒÓÓÒÓÓÒÒÑÑÒÓÓÒÓÕÓÔÕÖÖÕÖÖÖÔÒÒ¡¥¥¦¥¨§¥¥¦¦£¥¦§£¢¡~vph`[VLJIKPNTTVY]_Y_^^bacddb`fgfddc_bbdbb`bac`dbcbbcdegihdac_]XVUaÐÐÃȼ¾Æ¹±Ä¼¥®ª£²¡¤¦qifnoqonrysfbmsw nfn{{{~}{z~zuz |eesrpc_^VIESWLYd]WTHEBCNLJD;1*4BNRA$#*7/0Ejg4,+($""3i}rw±¦¢¥¦¨ª±²¹»»½º¶´½»¸´¶´µVHValrtx ~|bgowweb~~}||~z¦°¶ÀËÔ×ÚÖαmdbhrymy{}|{zvvvrusrtqoomgaVI<8;5-27@<55DQSA/&'&(5^ª®§}hK/ $05+(1-5=Pl }£¬µ½ÀÄÇËÏÑÒÓÓÓÔÓÒÒÒÐÒÒÓÔÔÕÕÖÖÖ×ר×ÖÖÓÑ¢¢£¥¦§¦¦©§¦¥¦§¦¥¥¢ ztmf_VOOKMOPPSXWX_Z^__``cbaddcge^bcaccd`a``becbafdbcfdcdhe`a_ZYYVSs¶ÑÉÇ¿Å˸¹È·¨¸¥§¤¦£vopqprxqptm`bqxsvmqz|}zwwy~y{~ vkimuttdTWXIJXTHO\]_VPFDGHT[QG2+.4@]T0#.<:63Rpb6$!$"9pzrw®¢¡¡¤££©°º»¿¼º·¹½¹µº¶¥kOVhv}`^oz}cf~ £«µ½ÌÕÚÜØÐ¼{{{x|}||}~|xutvxyvpolj]K=8;8/,0><44<I[J6+''&,;pª¨¡{b?$ +7.)**1IIe}}©³º¾ÄÈÌÏÑÒÔÔÔÔÒÒÓÔÑÑÑÒÓÓÕÖÖÖ×Ù×רÕÕÓТ¢£¥¥¦§¦¨§§¦¥¦¦¥¥£¢¡~ysng[QNNMKMLWXWZ]ZX[[]_^`cb`cbb``bceddbbc`aabaaefddgbdef`a``\[ZTScÜÒËÄËǹÀȳ¬»¨¢®¢«xuuwuq}xonhbkrt qfq}~ wvw{zwuulkszxpYGFTSILWUDDPZXLOC@CEPWYV;*',4N_I),;>6.5F^W5%!%Bwxz ª¡¡¡¡¤¦ªµ¼¾½»¹»½¼¾»¶X]o~ r|{W]gtwde }~} ¡§°ºÉÓÚÜÛÕË¢ ~{yzzyyztsqmcSE8=?4.198347ASUB/)(&$.R~¦¥~T0!!+5/&'++;Lby z§±·½ÅÉÍÎÑÓÒÔÑÓÓÒÒÔÒÒÒÑÓÔÕÔÖ××ØØØØÕÔÔÐ ¡¤¥§§¥¦¦¦¨¨§§¥¢¤§¤¤|vrk`VMKMLJKPTY_d^YY[]`X^]__`^c`_`bbceccebaacabccccfgeee_da_][YTQTÅ×ÏÊÏÁ¸ÅÁ´½¼£¢°¢¤«u}uurtw{rlfjopu|hlsx{|}~vsuzz|vrr{zsWKA?GLDFOMD>EXbGLGHMFURS]T?4/)=`Z9*6I7+.1<]z{ZA0$)Pwz¤¬¡¢ ¡¡¢§°½½½¼º½Ã¾½¼¯fp¢¡ebiTELUbOXq{x|yx ¦¬¶ÆÏÚÞÞÙשּׁ«§ ~|||zzzyuunh_O?986-.97325<K[L5+%%&%0`£¢~mG("#,.)%#%0Lcu ¬´½ÂÈËÍÕÓÓÕÒÑÓÒÒÓÒÒÒÓÔÔÔÔÖØØØÙØÖÖÓÓÒ¡¥¨©¨¤¦¦§ª©©¦¦¤¦§§¦¡xroc\TLMLMLSTXa`^ZZ]__]_aab`bcaa`a^`dbbdbaabbbbbbeffc_acaba^ZZWRSg¡ØÏÏÐÁÁËÁ·Ì½ª±µ©¶|n~{uqw~|qebqrot }mcgv{y}|wqrxz|x|v{~|pbRFCOI>=@B=7;JPJNN?CCFKTUWMD<3;M[J)1YF1/-48_xM$&Ysw«© ¡ ¡¦¶»½¾¾¿ÄÁ¿»srzS>G=215748CNXfqy }yvw|¤©µÂÌÕÜÞÝÖ˹¨£ ||}y{vvumdU>4680+5=5337APVD/&$##*Cn¡ª¡b9')+,)%&%)@_t~|}§²½ÁÆÊÍÓÓÓÕÔÔÔÓÓÔÔÓÑÓÔÕÔÕ××ØØØ×ÖÖÔÓС¢¦¨§¨©§¥©¨¦¤¤¥©¨§¥£ }wqh`[KONNOQRUTUTYZ\^]]]cdbacbddca`_abacbdba`aa`acegebbgede`]YYRORzºØÔÒÃÌϾÂ;´Á¸§²³¨yx{x |u||m`alrpvzhckuz{}wvyxw{|{xxj]NAFK=:5861079AFURGC?;@JKQQIB?<CUS?8Of>:-52Hz Z/ 0d{pwª© ¡¡©³¶½ÀÀÁÄÂÀ»wzmg{o?-/-*',*+*,2:GZkz|xvqsyz{~ ¥ºÃÎÙÝàÝÔǵ«¤ ~}ywzsk\F88=6+0751006HYK7&!#$),Sy£¥¡{\33)-(#%*)0Wq~|~¤®·ÀÅÊÏÓÔÕÕÔÕÕÔÔÓÔÔÔÔÔÔÕÕ×××××ÖÖÕÓÒÑ¡¢¤¤¦¦¨¦¦§§©§©©©¨¨¤¦}tnc\SNMJNMMPQUXZ[\`]```ccccacfdbdaadbbbbba^_``bcbeecacdde\][YSOOb£ÙÚÏÇÏʺÄÍ·¼Çº±»´§« yptl{|p`etsu~~ufdqw{{{xxwvxzz} ~l]I=>EI?=98:+*236:N^YTH?=>@CHFA?GKW\^MZu`KCAKCmoL,0o|ox¹© £¥¦£¤µ½ÂÁÃÃÀ¾ª~~f:Oh|oQ:.++)&)'*(&)+1CZnz{vspquxy~¤«´¼ÇÓÛàâÜÑÁ´¥¤ ~~zyysk_Q?::6-+440.17CPTC,'$#)/=\ ¢¥¡yR811'!!!$)Bc©´¾ÅÊÏÒÔÖÖÕÖÔÔÔÔÔÕÔÔÔÔÕÕÖ×Öר×ÓÓÓÒÒ¤¥¦ª¨§¦©§§¨¥§©¦¥¤¤¡wpe^]OPJNLKNNTVXYZ]_``__acccbebdd_acbcbcbbbbdbdgeabb_abdd_\\\TOMR{´ÙÒÌÓžÎȸ¿ÉººÂ³¬©{usmlubgrvw zgp{}|{||zyyxxvqs wrpuvih\GAAGIF@651+++/25CRYWPNK@;ACA@87FV]hkkvu[YVVPK^uU6Br|l~¡°¦ £¤¨©¦ ¦²»¿ÀÂÂÁ»{ w[;6ERO62+/,,(+&+*'(3@CK]nvuqnpsuw|~£¬¶¾ÌÖÝàßÙξµ¯®ª§¥ ¢ ~}||vpeVC:96.+54025<?MYT?*$(&'0Cf¥¥vZ182+""$&6Vv |£¯ºÃÉÎÑÒÖ×ÖÖÕÕÕÔÓÔÔÔÔÔÕÕ××ÖרØÔÔÓÓÒ¢¥¤¥¨¦¥¥§¥§§£¥¨§§§§ª tmc^WPKJGKOOQTWYV\\]___`ccfeecccb`bbbabd`daaeghe`aa_`dec_\]YUSQMTÏÔÕÔÂÂÏÀ½ÈúÆÅ´»®|vypiy¡zsa_luw {lr}~z{zyy|||yopyxqdjmpll`QKC@??;:4/+.+/1/3;FRRQPKGG@;@749BQcnjhdc^]G1+,KpwYXzwp ¦°¡£§ª¬«¥£±º½½ÁÁÀ±v{ |{mR9/346225;12/,((&&3K]_YV^krpmrurtyz§°·ÀÏÙßáÜÕɾ¶¶¶®«¢~~}wog]F=?;/'.5.488;AOWT0&'%!&8Lr¡§ mE470""$2Mm{|ª¶ÁÉÍÑÓÕ×ÖÖÕÕÕÔÔÓÓÕÔÕÕÖ×ÖÖÖÖØÕÖÔÒÓ£¥¦¦¤¥¤¨©§§§§§¥§©ªª¤zngcZTPKMMLPOSXYZ\^\a__`addfhcacddcc`]ab`aabfedcbabbce_a_^^ZUTMMPq¯ÚÙÕÅÍοÂ̾µÑǸ¿µ ª¤ {pkzulgflru xgw}}~}~{yzvxxy|suv}|xqk[IAGEE:6.,),0.-+.1<??GSRKI@:=8312<MW`TDLSI3%"#,:dwku}ik±¤¨±±§ ´º»½Â¼£{w~~wok]C5//335=EEIFB;5/-,7Lfr`\^glpv|vwz~¨°·ÇÓÚßáÚÑȼº¹¶±¬£¢ }y|ujcN=<8/(/736;86<HRWE)& "/A[{£¤bA6.&%##*Ih ||¦²½ÆÍÒÔÕ××××ÖÕÔÔÕÖÕÕÕÖØ××ÖÔÔÓÓÓÓÓÔ £§¦¥¥¦¦¥¨«¨§¨©¨ª«ª¦¢ tpiaVPLIJJNMQTV][__]\]b`abbc^_daa`ea_ab`a`abb``bcaaba`b`__]ZXTOMS ÄÚÒÈÓκÇ̼ÂÐſ̻®°¢vo¢¢ojmpqu~ncr~|~~}|x~}|}zsgRCOMH8121.+2040--1025?EBBD=?:5548LIS^JBHB+&!"(8K^locn·° ©¬°´²©®¸»¼Åöv}|wvrh]QE:332647JfpxokjfVOD@CUnwtibblqwzwz|{¡¨±ÁËÓÛßÝØÏüº¹µ±«ª¦¡ }|vpgTD>6,*0551<;6<EKVZ3(#! &4H[~¡¢x_G1,+$%-Dg| {z ¬¹ÅÌÑÔÖ×ÙÙØÖÖÕÕÖ×ÕÕÖØØ×ÖÕÔÒÒÓÔÔÖ×¢¢¤§¦§¦§©ª©©©©©ªª¨¨¤¡xrmaXUQMHKJPTTVYZ\]]^]`abccb__baa`^\_`a`cb``aa`aa[^``acc_^^^]UOMOdÙÕÊÖ˾ÉȼËоÆÌ¾¹³|xinty~vkdp}} {~{~{| zlbRIQTH=+-/--.////,10102952:<>9378EV\QKYLLD/$*8_ssc\nµ£¨¬³·¸¯ ¡«¹¼¾Ãçsowyvnd\NA>840/./4<] £¢¥~m[NJPi{wrmlqsxtwz|£©¹ÃÍÔÙÝÝ×ÈÁ¼¸µ´±¯ª¦£ |yuiYG=:*-/476;B9?MGIPI-$! *;Lc¨}pV9%).,(;\u }|x|¥³ÂÉÎÒ×ÖØÙØ×ÕÕÕÔÖÖÕÕרÕÖÔÓÒÓÔÔÔÕ×¢¡¤¤¥¦¦§¨©©ªªª«««©¬¨¦¢ }vrj^WQLGJKPRQSXW[]_a`\`cdddccbdda^^aeacf`^\`cbab``bccdc^_^^[VRMQRt¼ÕÕÖÉÃÏľÏÍÀÈʹÀ²¢~ztfjt| tlmsy| vvxx zf_y|p`VHE[YF6.++,.**+.410.3,160,/7B<0/18Kh]8?FNJ7" $8cs]Zw¥º«¦§¬µ¼½¶¥¥¬¶½ÂÄÁqoqoh^QID>631/.--AKh»Ã½·¹½³¨iUP[n||yvuuttvvx|~¢¨²ÀÈÎÕÛÞÚÑÉÀ¼µ³³°««©¥ }|xvl_P?91.,/74<DCAGJFGT7)%! "0=Lo¨ xjO.&-53;Ss z{ ¬½ÅËÑÖØÙÙØØ×ÕÕÕÕÖÖÕÖØÖÕÕÓÒÒÔÕÖÖÕ £¥¥¥¤¥¨©¬«¬«©ª¬¬¬«§¦¢wqqaZSNKJLNNQW[[\^``a]afgh`addddc`_`ba`a__`bcccbbdefbb`]^_\WVUQQQ^ÇÚØÉÌÏÂÂÑÈÀÌÅÀÌ»§¦{~y{j`hu}~|zz|xokr xomw}||xbSewshUJ;AXYA6/-,,*/1-1:3.,/.3?1++3?:/'#+4UcI,6MXG/ "<n{^]|²¼ª§¦´½Á¹©£¬¸¾Âıfkmje`O?;731.---07Ls¼ÊÈÅÃÆÅÁ·¤qe_gqx~~|{vwt{~~¥«¶ÁÈÒÚÞÞØÐÆ¾¶µ³°¬¬«§¤ ~wxpeTB:2-(,444;C?AJGJNF33%"!+26N§¤¡|fE-%,9GPl}|y|¦¶ÃÉÐÖÙÚÚÙØØÙ×ÕÕÖ×Ö×ÖÕÕÔÔÓÓÓÕÕ×Õ¡£¢¢¤¦¦©¨©©¬ª¬¯®¬«©¦¡|uqiaWRNMJLPSV]Y]]]^_a`b`eacec^c`b`aec``abccabcdaacbbb^__b\YXWTOPLcÅÚÎÑÑÅËÐÃÄÐÂÇÖ¿´vt{¤xf`hv|yyy{~vnou|}y{}rjp{xl`ZwobP909OU@70--/.52.2:6-*-37:3,+.C<6+%(.:SL23BZjN% ")C{t^`µº©«¬±¶¼Á¼«¤¯º¿ÄÂg`dfeYWK94412/+-+3>QfËËÇÉÌËËĵ|xvnp|{xyv~~}}¡¥·ÀÎÖÚÜÜÖÎ®ª¦£¡ ¡}{wshYF<3*(,22.4?B?AJIHH?6)!"#..6\¥¤¨¡rZ6(&+;Sh|xz¡°ÀÈÌÓØÚÚØØÙÙØ×××ÕÕÖÕÕÔÔÔÓÒÔÖÖÕÖ¡¦¤¤¥ª©ª«¬«©¬¬¯¬ª¨¢|snf]UMKKLORUXXZ_^^_a`_a`ce_abbaa_ac`abbebb_`__a`bcbd`ab^^\X]XUSORgÍÑÖÎÊÐÏÂËÍ¿ÊÐø ¢||¦i_dl}z{}yrjpzz~{wyvkhw ~vcY^bWB0+5HQD6.,').45/.>9./135:4-03@C85,),1235=4O|i:)$# !Iw]g¿¶§©¬°¸Àż«¦¬¼Ãǽ\aaXI@=:531/.*+-5GIABC·ÌËÎÑÌÍǸ¤uq{~{}{}~}} §°ºÆÐÖÛÝÛÕÌﵬ¬§¤££¡ ~wwo^K?4)/-/0-/=A?=EFCBB7/$"!(/,:o¥¨¤kL8+#-Jf{ |yyz¥·ÄÊÒÖØÙÙÚÚÙØ××ÖÖÕÔÔÔÒÓÓÓÓÔÕÖÖÖ£¥¦¦¦¨ª«¬¬¬¬ª¬¬ªª¦¡}wrl`XSNONMORTXX\^^[^b^_aabbab^bdab__a_aca]^aba`acdcba`ea`]\]\XUSQVqÊÜËÎÔËÇÐËÀËÊÁȹ«µª¦¡{dcq|{tnqwz}utrmo}|rfWIIE:501CZ>.**(',5>:6:82.05473017EG:71+05)*/=2Ere3*,.$'Nx_i¶µ§ª±²·¿Å¼« §²»ÃƬhU\[NC7343743/,*-*MRJ=:]°ÎÎÐÑÎÊź¡|u~}zz}~|¦±¶ÁÉÏ×ÜßÛÑ˺±«¦¥£¥ |wtaOE9-+*.70.9CCEENAFC82.$!"30,Ho©§¢~fM3('8\{ ~yuvÀÈÏÔØÙÙÚÚÛÛÙØÖÕÕÖÔÓÒÓÔÔÕÕÕÕ××¢¥¥¦§¨¬®¬¬ª«¬ªª§¥wte]XTPPLMQQTVX]]\]aa`cbab`a```bh]]`bbc`b`dc`_accccbbdb_\`^^YWUPOPhµÕÒÒÑÄÇÒÆÂÌýι¶Áª© ¢ªw^_t }xusuy{|}rmjqz ~}ykdYF623786J\H,*(*(*6CA53:2++17;?206EH36E0.2+%.1+;nO,'1/'(Zs`o¹®©¬±·ºÁÅ¿¤µºÂÃXQRRF>423352200)%$-BhL7U¡ËÑÑÐÐÇú¢{wx{ |¡¥°¼ÅÌÒÛßÞÖÏÈÀ¶¯ª¦£¢¡ ~yteUH=,').4339BAADOIEF@25,&&,0(+Q «§}sXL6((Mq yvtv¤¶ÃÍÔØÙÙÚÚÚÚÙØ×ÖÕÔÓÒÓÓÓÔÕÕÕÕÖ×¢¤¥§¨«ªª©««¬¯¯«ª©§£{vnbWWONMMNMQVXZ[]^_b\`b_`cb^___^^\_c`b``aaaa^cccedadca__b`_]XUQPOZºÖÛоÈÏÃÁÌ·¾Î»¿Å°¨»¦¢©®© vdZ\n~ztv~zomjq~zsjY=+()+09O`R7+(*+*5D@30:9*-22573.2ER59LH032(64*@e@)+60,3_j]t¢´ª©®±·¼ÃÅ¿³¥¡¦µ»ÄºuOSMH@932305.054+%#'AcV>VÎÏÏÍÌÊǺ£~yv{ ~~¦¯¿ÆÎÖÚßÚÒÎǼ³¨¥¡¡¢¢ |wsf\I;,(*/.4299=BFKJCIC412,'$-*'8^©«¢f^C1/Bh{yuqx¬½ÉÑÔØÚÛÛÚÙÚÙ×ÖÕÓÓÓÒÒÒÔÕÕÖÖÖ×~ ¢¥¤¦¨©¨©«±®¬«ª§£¢|vpeYTPQLNMLPRSZ\^\_cadbb`ca__``_`]]`a_``^aaccc`abcbdbbb``_]_\WROPNW µÚÕÅÌËÃÌɹÂǺÈȺ¾Á²¤¨©¡¦£¤h[`m {qoy}{wqtqu|~w`@.+(%*9S_V:,()+,5CB34@9-.3561/,0DQ=0BY8;=9?7):q>+4:+"3sj^x¨´£§¬±·¾ÅÅÀµ§¢¤ªµ¾È«_LLF=7401/01,.@H:3-7IVF<e§ÉÌÉÌÐÎȵ¨¨§¡¥®ª|ux }©µ¿ÇÖÙÝÛ×ÒÌ͝ª§£¢¤¡¡~|ui^P?.+)+,01+0:@CILGHH<./0-'&)%&<g§§~w^Y=->\w |zvtw£·ÅÍÓ×ÚÛÙ×ÚÚÙ×ÕÓÒÒÓÒÒÓÔÕÖÖÕÖÕ|¡£¤§¨¨««ª¯¯¬«¯ª¨¦£¡zqj_YRQNMMONQTZ]^\]^aaadcc`_^`a_\[]ad]ddedcfccbabbbebdhda`]`\ZWRPNQ[ÌÕÒÕËÆÍÆ½ÈÀ¹ÉĻů¬¤³²¬¬gft~{vkv~~~{t|| }zx{|o\G7*(-:T`_<.*)),;KC35<>./.5A5,,,;]B,0?EKS991+?_F-A<%!<ud^~®´¤£¬³¶»ÃÅÀµ¬¨ª¬·ÂÀNGG?6301/07=03FVWOFJXQ@Ft®ÉÊËÍÏ˼®³¹¯«®¯¥ |z ~ ª¸ÃÏÕÙÜÛÚÒʾ³¬§¤£¥¢ |ukeVE2*)*.,3..9ACFJEGJC3*/3/*+'$+Fp¢«¥ [`P?AZo~{xwtv°ÀËÑÖÙÛÚÙÚÛÙ×ÕÒÓÒÑÓÓÓÔÔÕÖÕÔÕ{£££¤¦¨««««¯°¯¬¬¬®®ªª§££wng^XUKKLOMQTWV[[\_ba___ea```^_]]_bb_cebb_ecbccaacdbcdbb^]][Z[URPRPa¹×ÝÍÍÌÀÄ̾ºÎ¿¿Í©£¸¹±©©¢ke~|wwzy{wnjnu{~ysoxtwxvxvm]?,,0/H^aF1.*,-;KA/4;=1.-377*-)4PS-&+BR]P9,&3eHA?/""8{bf´¸¥©¬±·¾ÂÆÃ¹²¬¬²»Ã»jDAD@70/115ENG3:Y`\XTUGAY¶ÄÆÈÉǽ´±¬©ª©¬£ z~¡½ÊÑÖÛÝÝ×ÐÆ¶²ª¦¦§£ }wnfXF3()*,/4/-6A>?DC@EJ<./1211'$!.Nw§ | qX\N@Zo|{ytty§¹ÆÎÕØÚÛÚÙÚÙØÕÓÓÒÐÔÒÓÔÔÔÕÖÔÔw~¢¤¤¦ªª©«¯®¬¯®««¨¥¡~rjaXWPKMMPSRUYZ\][]`_]]_adeba_]`b`b`acdcacbab`a`acefabba`a^Z^[YWPMPX}»ÖÕÓ;ËɺÄË»Àͼ¡¢§¯²±¹·ªottuz{wpffpv|~~|xpow xy|z}ztcD321/<_kP5+().5@7,2<=0-*3150)),Jb6&(2G`o@+#2WZ7-#$Czcj¹´¥§¬²¹¿ÄÈżµ³³½Å¨`CAAA5./.2;O]ZD:CGOSMC<Ko¼Âÿ¾¹® ¢ y|}¥´ÃËÔÜßßÝ×ÏÀ´¨¥¨£~wrdZI2((),07204;?AFQ=;FD6.0049-'%$2S ª¨x\XXPQq{~|yxtut±ÁÌÓØÛÜÜÙÚÚ××ÓÑÒÑÓÔÓÔÓÓÔÕÔÓsz ¡¥¦ªªª««®¯®«¬¬¬©ª¤wogaZPJLJNQRVZZYY[\]][_]`baa_^_afb``begka`a_`cde_efb___`^^\`a]_^RLLN\³ÖÛÏÇÍžÌθÇ˺¯¦®ª±º¸¦e{rqqtvpfgot|zwuqsyvruzti]PFA;7-2Tj_;&'(*58.,3CI7/07317+*+D\J&()8UjS3#*TW6%$#%Ehq»µ¢¨«²»ÁÅÈɾ¹¸·¶¾ÂSAA<>4)))1=PblfWH=<?9<Db¨¹·¶³®¡~ |~¡©¹ÃÐÙÝÞÝÚÖË¿°¨¤¤¢ ¢~zth\I2+,').011/6><BGB8AN<2/-08;)$#(<a©©zvRYbSdv~}}{uuszª¿ÌÓØÚÜÜÚÚÚ×ÕÔÓÒÑÒÕÔÔÓÔÕÔÓÓnv~¥§©«®«®«ª¬«©®®«ª¦¤|tjd^VQMLMSQRWXXY[`\`_```_^`babdc_c`_cdbb_`aaedcbcfa_aa`^][ba^_ZVSOMLYy¬Ô×ÍÏÁÅÐÉÀÌ˹¹ ©¬³¹º¦bu|rtrstphipsy{yrlmu unpshSJCMYC/*/@hjI/(-3<6+5@MQ92+-245,(*8dJ-('+CghB+.GT5%$+Wmp»°§ª¶»ÂÇÉÈÀº·¹µ¿»OIGGB5,)+2<H^owrf[RMPRb|¤«¨© mk¥¡¤ }¢»ÉÑÚÜÜÛÙÒȶ©¤¤¡~ylfO6.,+/*//1/28:=LJ9?KF7.,,47-&'")=r§¦ufX`gdu |zxvwqt ¹ÈÐÕÙÛÜÜÛÙØÖÔÓÑÑÒÔÔÓÓÓÓÓÓÒnsx~ ¦¥§««««®«¬«¬«¨¤ xpiaZWQMKPQQUXXW[_^_dcbb`^aac`eddda^`deeb`bcbacccedb`_`^`^ac`]YXXVROOZs¾ÖØÔÈÍÑÆÆÖÈÀµª£¡©ª²¹¶£zZ{xvtsvjbcox{yxkefp |tppoU<CQVP<*+05J_^;*4AK:017PN90)(-77,&&2V[-&&&@]cX6/1V<%!#2S¤v¥¼«¤¨®¶¼ÃÉÈÈÀ¹¸¼¼¾±eDMLH>43*,/<FSbox|tpnnqvm{w¡ ¡¤¡ |¢°ÀÊÕØÛÜÜØÓñ¤¡¡¡ }rjU:.*)'&-35116>AIJ?@GPC5-+/8.),$$2Nx ¯VRlkq||{xwurt´ÄÍÔØÛÝÞÝÚØÖÔÓÒÒÒÓÔÒÒÒÒÒÑÑlqvy¡¤©ªª«®¬«¬¬¬ªª««¦££~tmf_[TNHGOMPTSV[[[[bbbbb_b_^`bdggb__dffcaadcddcafbab]_`acbcb`^\[XSPOQZ¾ÕÜÍ×ÒÆÎÔÈÅϹ³°±°³»¹¨k~zxzzwlcgoz}{vmflssk{zqneRHGE<H?0*(060ShU>;B>4/.8OP@0%',560(&,Eh:&$'9aOgL4)<G)"#+Vx®À«§©³½ÃÉÇÃÀ¾º¾¾Â£\GQQE833/.,2EQXforv|qny££ £¢¤«´ÀÏÖÚÞÞÜÕÍ¿¨ £¡ |wpkX8,')+)(35336=BFJ?6>FI?0,,73,.,'#1[¦ªjUVnxz ~{yxtry¨¿ËÒÙÝÝÞÝÛÙØÕÕÓÒÓÓÔÓÒÒÒÑÑÑgnry¡¡©¨©ª¬«««¬®«§ª©¦¤£¡ |qhb[SPJGMOLOQVYY][\beabbc__bgdecdc^aeceba`abgf`baac_bacaabbaa_\ZSQQQSY®ÇÒÛÖÍÖÕÉÍÑÆ¾½ÁÁº¸¼¿±m{{x|}}xpqw{{}tldoy}{|m\hnl_ZNP@5264*+$+)+=Ue\J@5,*/<VT=5+$%.9:1**>YF$%'0QNK^I%2F/$"+Y~t²»©©ªµ¾ÄÇÉÃÁÀ¼¿Â¿SPUOA7513-+09>Neqtv~uvwr¢¢££ ¦¦¢ }¦«³ÂÊÓÙÞÞØÕ̸¦¡£§¢~}xslX;,&)+)+-4:539@EKK:;GMG90-3A+,.($';^©¦ bNh| }{ytrv¸ÆÐÖÛßÝÜÛÙØ×ÕÓÑÓÔÔÓÒÑÐÐÐÏfmov} ¤§¦§ªª¬¬¬®¬ª¨©ªª©¨¥¤ xmg_VPLJLLLPVVVXXY^a``ac`]a_dddcabaacedde``bdcdcdaf__abbb`eddba^WXSSPS`t¸ÙÚÕÚÔÊÒÖɽ½ÂÄÅÀ¾ÅÁ¤ {u}||~ytv{}z{tkjs}|{yhX[ZMRVR@.,.4+&%)((.<RbcTB4*+F^T:5(%,*1:50*1SD-))1;U1OU@230-^ro»¹¨©¬¯µ»ÃÆÉÅÂÁ½¾À¼|STUMF>=AB=5/,0G^klpv}zs|raez£¥¤¥¥¡¦« }£¸¼ÎÕÛÝÜÚÔʵ¤¢¡ |zupZ?/))+,-,57306>EGSE>CNF>846F;+/('#-Ce ©£~ v[Yv~~{vrs|ÁÍÓØÛÝÜÛÙØ×ÕÕÑÒÓÓÑÒÑÑÐÏÏfjptu} ¢¤§ª««««ªª««§ª¨©§¥¢}smhbUMIJIHOOSTWZ[[`^`^c``a_a`fhaadaddbdgd``^`dbffbabbbdfccefafa\\YXTSWWb ¬ËÓßÒÌÖÔÌþÀ¿¿½¾ÃǸzy}{x{uqvvy|zvnmvr[I=?KVR>//48-'%())*.:IU`VH;;RgT77*%),09562/9B<.4;7PH3DYG5'-bllº¶¨©¯µ¸¾ÅÊÇÁÃÀÀîlSZYVSORVVXM>59IY^YLnsnlrvdY|¤§§¤ª¤¤¥¡ ~¥¬³ÂÏØÛÝÝÛÕDz|{yo\B.)),.-,172/69@IPK?;IFD>63?F.60*,+3Cr ¤{whNd{|vtsy¤¼ÊÒÖÚÜÜÛÙ×ÖÕÓÓÒÑÒÏÑÒÑÏÏÐfglqsx|¡£¦§ª¬«®¬ª¬¬©©ª©««©©©£zulcZOKIHGNPRUXXYX[^_]]]Z`aa`a`_aaceddcfcb`^``bdhacbbdfdcdcfedb_\[[[[WWU\p°ËÐÑÜÒÏËÃÀÁÁ¿½¿Éª©¤{z{{yzutxxz{ztpq{~mMFNDFPN;343@0'&&'())-06<FQCJaeM?4/(+,,/144/-EM??>2Ma--IWH#-nko¾°ª°¯´¶¿ÄÊÈÄÄÄÅÈ«aZcda[]ahgibVMNW_eaetxkhwzqkx¡¥©¥£©«¦¥¢ } £¬»ÆÒÚÝÝÞÛÖÆ§ ~{zn[?.)(*-,+,6515<;K[WPGMMA>72;A:67)("(4T{¢§x cPt£~|yssyµÆÐÔÙÛÜÜÙ×ÖÔÒÒÒÑÐÏÑÔÑÐÑÐdeikpr{~£¤§«««ªª«ª©©©¨ª¬«ªª¨¥xl^ZRPKHIJKMUYVVY[^Z\^___`dc`_]`b`_cecfe``\__c_adgdbcacdeeddcgcba^_ZWWUVYbt·ÊÜÖÐÌÅÄÆÁÁÁÂÄúª«xtuz~{suxxzztkgt}}{{{wfaYZ_ZYVT:66?H0$')+*(()'')/6:PhJ=G7.**),/1344;O[aT:2RdD&/D<$ 7pik¼²¨°µ·½ÅÈÈÄÁÅÅÄdcnnoomuyxwtkghkiksw~|rn{~yv| ¦«¬§¤¥§§ª¤ ||©³¾ÍÕØÛàßÛÒÀ¦ }}yp[=/',0-,,,/?45;8CPYNJERN@:<8D923*&"",;h¤ t~Xi }}ytsv}®ÁÌÓ×ÚÜÛÙÖÕÔÒÒÒÑÐÏÐÓÒÐÐÐceifnsvz ¢¤¨«ª©©©©ªª¬ª¬«ª¬ªªª¤£qc\XSKDFFINRRRT[_]^`_b_ccdb_`daf`_beccjedaaaaa`dda___`cdadcdeded`b_][XUTTUeyÈÙÖÏÈÊÉÅÂÆÄÆÈÁ·¤slsy~ztrrsrwplo|~wwwnYXnklhbXE524HZ4)&'.3'-+&%%)/:\lMKE9,&*(,,/26D<AQ`b[T[wV1..*!!!3rmoDZ¦©®°³·¶ÄÊÉÆÃÅÄÁcdqwzyxz{|{rr{}r~¢£©¯¬¦¥¦ªª©¨¡~}|§¸ÅËÑØàâáÜѸ ~|xs`<.(,--/*,+:959;<NXMBERUC<=:>;2-*%&$*5St«}q\| {yvtuy¥»ÈÐÖÚÛÛÙ×ÕÒÑÑÐÑÐÏÑÑÐÐÐÐbcfflqqz¡£¨©«¬ª¨¨ª«¬«««ªªª©©ª¦¢¢tlb\UPLEDINSPQTW[^\[^__ccbbaccabc`_bcacdcad`fca`_^^`^aeddfjjfdffgeda`^[ZWTTZf³ÍÙØ×ÒËÆÊÆÆÆÅº }miowzxooqssuvrr |~xjkuokiY=70/9PU<&#%67-14'',/2?dkQR>2*%(-43,(,3+-3?LTY^qm_K;)6rnu¡À³¦¦«®³µµ¿ËÉÇÆÈǹgfu|} ~ ¥©¦©ª§¨¨ª®®¬¨¤¢¡ {vz¡¨²¼ÂÉÒÞãâÝ×˶ |zt_?./,,2.+*-0;26<<L]YC<DSK?89?B5//)))&&=b{¢¤wlq {{xvuv·ÆÏÔØÛÚØ×ÔÒÐÐÑÑÑÏÑÑÐÏÎÏa``bginv{£¦¦©«ªª«««««ªª«««©¨©§¤¢ zqd]YTOEGLMMOSSRY__]`Z\^`acdc`dbabcacfdbfb^`ac`^b_ab`aeechkjffjefddbcd__\YTUV`z§ÖÜÞÜ×ÒÌÇÊÆÃ½¡xhdnrvvsqptstupt}~uifcR7244L\d?,)*:G0*5346;?Oj\LA4++(*183,,*+$&(,/?VGFTPNI@0 0zu~¤Â¯¨©°°µ·ÁÌËÆÇÉdzrlmvz ¤©¬¬ª¦¨¨¯¯®¬©¨¤¤ }{|~|~ ¢ª²»ÀÊØáäâÝÔŨ ~{tc=/0.162/-1/787;;BY_QCBIKD=:?@7011)*('.En|©¢vz~g |{ywss³ÃÍÒÖÛÛÙÖÒÑÏÐÐÏÏÎÍÑÒÏÏÐdb^`cfpty £¥¨¨¨©ª«¬ª¨©¬«¬ªª¨£¡£~vmd[RMGEFKNMRRPV_^_a`^___aba``baac`dfebcdcdbcb_`ab_abdfgihkijjgeefeeb```[WVXT]}®ÔØ×ØØÖÏÍÍʾ¦yhbflpqpqsuplkdt }}theaR;84:]bcQ0('DH-)349AIHZdPA@-(.+*065-,&(##%&.-610-.-/=:'#=xgÀ²¨¨°³¯µ¸ÃËÉÅÂÅà oisuu|{¢¦«¯¯ª¨ª®°±«®ª©§£ }|}{{~£©±¸ÃÑÜãäáÛÐÃ|wfE//0/64/.-04<:=:;K`ZE<DLIB8CB:642.*(&%,Rn¤up}yz}zwuu|®¿ÊÐÖÚÚØ×ÒÐÎÏÏÎÏÍÏÐÑÒÑÏab`bdfmqv~ ¢ª¨§ª¬ªª¬¦©««¬¬ª©¦¤¢}tk`XOLGHGGMPSPSYZ\]a__^__cfdaa^_babbcc```a`d_bbfc_a`difeffgilhhlieffdee][ZYWV_ ÅÓÕÔÔרÒÓξ }fddhigjlqtpkgfz{}|rebaK71/7MQgK8/,FO*%8-.;AM\W=9=7-++.,64)&%)%$%('')*+%*'$$'#!8|¤e~¯Äªª±´³¶¹ÅÈÉÅÃûiovtv{}~¤£§¬«§¦¬°°°®«§¥¡~~}{xz{ ¡¨°»ÇÕàååà×ËzgH20..02*/+/14:A:6AYZJ@>IOI7>B<5<10+'%%&3X|¡ rq| }ztstx¥ºÈÐÖ×ÙØ×ÓÏÍÎÎÍÎÎÏÐÐÑÑÑ[^^`bfhmtz ¢¥§§ª®ª¨««ª©©««ª¨§§¥£yne\TOJKEILOSSTW\\`bc`]_cddb`a`_c]b`cb`adc_c`cceccb]bdeigffjkghihhjlfgfab^\[XYpÔÚÙÓÔÖÖÖÓĪzffgihhihnsqkdjxkabV91;-&39Y`=0,<E,'3/'/;RM<2/5942.,+/8)'&''')-&''**)*$#% =ya±Á¦¬²·¸¹¼ÄÉÉÆÃÅ·krxy{~~¡¤¤¥¤¦©ª¬¬§¦«®®¯°ª¦£¢¡ }~}{xy{{{~¤±·ÊÚâåäÜÒà zgK2..//0,-..2-=F?8>TZRF=AMM>8E>6:1--(#&%'<] ¡q ~zwtsu ¶ÆÏÕרÙÖÔÐÍÍÍÌÍÏÏÐÑÑÐÎ`^a_`fgjoy~ £¥¨ª«¨©©¬®¬««««¨©©§ }tk_XTKKGFKNQSVW[\^_]`]]_`__^bbbb[^dbbcdedbca[aa`_`^`cfiegihjhhhmkklkikcfb`]VW[zÀØÚÙÖÒÒÖØÒ¯kfgikonnnokfep|~{} te]\D.4:-&&*HtRA782+*4''-?I<1-16BB>92.0:/'%$)*+.,,*,-(*#$,'">~ f{®Â©«±³¶¸¶¾ÄÈÇÃÂésl{{|¢¤¦¥§¨«©ª«©ª¯°°±©¨¦¥ {}|yvxz|z|~¤¬±½ÏÞäæãØÉ¬xjO0,-,/22-00129FE96LWVNC>AO@4<>9<7/-&$&$&0>m~| zvtss|²ÃËÔ×רÖÓÏÍÌÌËÍÎÏÏÏÐÐÐb`aa_afeir{¡¥¦©¬§«ª«¬¬¬ª©ª««©¨©¤ungbXOMKBINPRRU[^\_^]]\a\aa_`adbb`abcedce`_`]`_b````befegggkjijnnmiljkiccb_WUWhÓÙÙÚÖÑÏÓÓ¶|mijnportsqibgxx}rsxv`XL6.:?0##$;boR>A+%"-/+4C=453467CJJ>.+52""((),1/2*,0,'##'(#F}}cw±¿¬¨¯¬®®´¿ÄÆÄÄÂÁlnxz| ¡£¥¦§¢¥§ª¬¬«®¯°®®°²°ª«¬¦£ ~|yxyz{{| ¢ª±·ÇÕÞãáÚи xnN3-/-*-/++,045MH>8BVQTICCID56A<D?6.+%%'+,4Nr }|zxsrsv¬½ÉÒÔÕÖÕÓÐÍÌÌÌËÏÏÏÎÍÏÐd^]`abcdhpx¡¥¦¨©¨««¬ªªª«ª©©©©¨§¥¢vldWRNHFIMTPSUX]]]`[^``]`b`cc]_cccdbfdab`]^^^_cbbca`efjhgimkjlonkjmkfkggda]ZYYu¶ÔØ×Ø×ÓÑ϶jionquxusqjch{}{uywyzl_D12HC0%##'OwfUL0#'.524972575801>LSA37/%#%%%),+,.-..,(#%$ #Fye³Ä¯£¥£¸ÂÅÈÄÂÀ±~fuy{|¡¡¥«ª©©§ª®®®®²³°¯±±°²¯¬ª¬¥¡ ~{wxyzz| §®´¾ËÕÛÛØÐ¼{qP5/0.,*/,.0/15>GA7;NTTJFDIF:<A?=FD4.'%&*')4Xz z }}|xrrsv£¹ÇÏÒÕÖÕÓÏÌÌÌÌÌÎÏÏÏÐÏÏca]^ceaafmu} ¡£¦ª©«ª¬«ª¬«««¬¬¬¬«¨¦¢ |sj]UMFHHKPOQRSW[\^[^``Z]`_`deaf`bccdda^^]````^`cda`cfegiikkkmnpnnlkklmhhb`_[XfÉÜØÖØÙ×ÒÃokmmqv|w{vtms~{ |xz{eZ?.4KQ-'%!$<_|^`2##)60..2/AK@9>)7S[\TC0&(%')+-+*5+,/2-%%$ #H{a½Ã®¥²ÀÅÇÇÅÂÀ¦hcry ¢¤¥©«¯¯«¬¬®²³±°°°°¯®¯¯°¬¨¬§¢¡¡|zwwxxux} ¡¬´¹ÃÌÑÒÓϽ yrQ512/1-111//.0:CD?=LRYNLEEHGAJC<CF?0*&!&')/A` ~{ywsot|¯ÂÌÐÓÖÔÑÏÌÊÊÊËÎÏÐÒÐÎÎa]^_dcccdjsw~ ¢¦©§©¬®«ªª¬¬¬ª«©©¤¥ wocVPNMGFMPQLQTYZ\]`^a^]^`__dcdccab_dgc``^b__`abbb`dhggghikqmmqpmplrkmkidca[WYs£ÌÝÚÖ×ÙØÎ¢zpqjrtwwwvsty~{~v`O=/-MY>($!$+Hwp]8##&<0**15AO@:NN=CZbeY<+)'-+,+)*)(+,-,$"" #@vb ¸¿¥ µº¿ÃÇÇÄÀ½dcrw~¢¡£¡¡¤ª«¬°¬¬¬±¯±²°²°®°®®¯¬©©ª§¥ ~{{{yy|yux{¤®¶¾ÆÊÌÌÉ· |rT32332002-,..09@EA7KPPNKD@JKIHA>;>E>4-'#)-+1Gi ~ywwpsx§½ÇÌÐÓÓÑÐÍÍËÉÍÎÏÑÒÑÏÏaa`_baaadipuz ¤¨©ª«««¬¬®ª¬¬ª¬¬ª§¤¢|vj\XONHFLONNST_Y[^^\_\````^`bdce``beheabafe`_^_cdacfggfdhinklmrrtlmlkiifgd_\[aw¯×ÜÜØ×ÙÓµ~srnpruvpppu~~z{~t]P:,,GaJ&$ "(8Y~h7#"'03()5DC?46=;/5L^feXD4((*%(*)#&&&)*&"!"D|wb ¸°£¬´»ÁÃÅÆÄÁ¸ `gqv} ¡¢¥¥¢£¡¨««¬¯®¬¨¨©®²±²®¬²®«ª««¬ª©¦¥¡ |z}z{}{yzz ¦¯¶½ÅÈÉɳ ¡¡ xZ<22330//,,,/57=C<:FJOLRIACJTNB>8;CC?61&+-,,9Rl¢¡ ~{yxxsqs²ÁÊÎÐÔÑÑÎÍÌËËÍÐÒÓÒÐÐ_a]\[b`acenru ¢¦¨ª©¨«««¬¬¬¬«¬«¬«¬«©¦¢zn_ZRNJJKNMNRT[\ZX^[\_c``___^a_aa__cca_^acg]___cafccghhikjjnnlpnmmloniigii`_]]aªÍÜÝØÛ×Àsotqrqolils {y~}xhYM?++MjZ8%#"+3RwwO &'1&'3EAC;2*++.7RfegbK@9703+(#')(')'##%-D~nc¢¥¬±³¹ÁÆÈÆÄénajq} £¤§¨£¢£¦«¬¬²²°¬®°®®®®°¬¨¬¯¯«¦¥¥¤ ~||{{{zz{}~¡ª²½ÂÆÆ¶¦£¡{a91010/+.00.,.4=B@<BGMNOPEADNM@=339HIA8,$'.*.B]z¤~|zyususx§»ÇÌÎÑÐÐÍËÌËÌÍÐÒÓÒÑÒ```^^_]a`aglu} ¢£¦¨««ª«¬¬°¬¬¬«®¯©©§¥ ~rhaXMKJJILORURVYX]]]`^\^^[^_ca__^_`_`\]`_ba_^`b`bbdfijflkhjmqroqponlmnijkeca``cz©ÍÜÝÝÛÐ¥ynqrtrpniis}zvd[TH20Gbo>"%%)7Vy~l/!"%(&&3SPB;.'')),=NWatqkf^[VPE??J?7..$5G@Uwa` ¢¢®²µ¶ÂÆÈÆÂÀaciqy~ £¨ª§£§§¨«®°´²²²°°¯°±²³®«««°§§¦£ {~~}}}~|{|}©³»¿Ä·¬§£ ~x]8//001-/22-,+25:=<CJJRPWNFGQV<B706FSK>1)+.,,6Pa¡ ~}}zwurrr|±¿ÆÊÎÐÐÍÍÌËËÍÐÓÔÕÓÒY[__^_^_achnt|¡¢¥«¬ª§«®°®®©®®®®«©¨¥¡ ync]UQPNHGIMTSSTWX][^`]`a]c\^^\`c_^^_^^`da`aacfdabbghhgikiknqqpnptopnpnkkkg`d`^e}§ÏàáÞ×¾wnsusrqpjt yskh_M43@TmL%#')4Su~V$ &&+:DD<7*%'$#*23>IdpyvqtqjgW\]XK73+8>BOmvU\©«¯·¹ÀÇÉÈÃÁY_hny ¤¨¨§©ª§¨¬°²±²²²²µ¹·µ±®¬ª¬«ª§§£ ~zxwwy¦±¹¾µ®¨£}b6.212200/40/26:8<?DFHNQNVKIOTIB;++7KQK7//,.,/@Xt¦~~|{yvropt¥¶¾ÆÌÏÐÎÌÌÌÌÏÐÓÕÕÔÓ^_]_`b_]bbhmqu{ ¢©¨«ªª¬¬¬®¯®®¬¬©¦£~sg^ZRMEFIKPRRSRV[^^__\`_`b_]___a`_````bcbcdccfb``abedhghgjoppqpqrpqpnolmljgfb`_fÃÞâÝØ½ytwurnofx ~}~{vnbA04APkX#"$'0Kf|t;$"%&.&1DG?.+)%$',/236HjkrvteNI?EH?2((*),Hmw]Z¹¯§¯¶»¿ÈÉÆÄ´zT_hlv ¤¦¨©««¬«¬¯²³³³³³´¸¸¶´°®ª©ª«¨§¦¤¡¢~{~ }ywwxz~~¡¯»³¯¨¤}_=0,0/501.10,00;58@C@B@RJPLEKRQE</,2B\^?5)&+.-2M\¢ ~zywtnkjhz¦´ÂÊÎÏÎÍÍÍÎÍÑÑÔÔÔÒ]\^]]_\^cedjoux|¢§ª¬¬««ª¬¬¬°¬«®ªª¥¤¡}pa\WRNHJJLNQRTX[^YZ^[]`___\`^]_aca_`acbcadbbcbaaccdcgigdhknoqstsrqqpnmonlmjebbclw»ÕÞßÔ¸vwxxtkj| {z{{}zo[<-6SIhW0#')+J_etg0$&,*-?SS6/,&$#&*'%*-6CLbhU7--187-$$#$)C}YZ¹¶¢¨³·¼ÁÈÊÅŪdQYfqu}} ¢¥§ªª«¬¯±²³±¯´²¯°³´µ°¬ª¨ª«©¦§££¥ ~|| |yyyz{y{º¶°ª¥ {g7.-0.,.4../-,.454CED>@KQCP@JRQG>6-5:HXR@0&),+/@Uj¤ |zuqnjfd_e|ª¼ÅËÏÏÏÎÍÎÏÑÒÓÔÔÔ\[]Z[^]\bdcekrx{¥©««¬®¬ª««°¬«¬«¬¬ª¦¦¤vja[UOKJJIKQQVVX[[[^_]^``]_a`b`adc_`addb__`_a]accccegiiginpnssrpnqponmoppojgiehhlx¦ÍàáÑ«{x{pim |ywt{nW5-;TQ]_)$-*1MYWB[;(%')(2LXI,&%##%%$#&&(-3<?80((*33*%'%#)I`aÄÁ¤¤ª²·¼ÁÇÉÆÄVR[fsuyz¡ ¤§§©«ª«°±³°°³±®°°°²¯¯¨§ªª¦¦£¤¤ |yx{ }{ywyxuyy~²¾º³ª¦£{j>..-.,-11110,1855>DGA:@RCFHHOPPG<404=OZO=0-..41G^¢ ~|wxwqmfb_UVf³ÃÊÎÐÐÐÐÐÑÓÐÒÓÓÔ]]]_\__`cdehmorx} £¥¨«ª®¬¬«¬«¯ª««¬¬ª§¦£ zqh_WRKFIIJPVVVX]][\[[]_\]`abcbbba__`ab```accbabbfecegijjlnosrropttqqpprnokkmjllikqyÁ×ÜÉ¥{ztop} |rp{qR5.;_G^`9(*&1V\U;Nyk<..,-.?U[4)'((#%#$'(&&,/0.0+(*.*)"*)*4Reh¿Áª¦ª¯·½ÁÅÊÆÀST_hnsxx ¢¡£¥¦¨¬¬®¯®±³²¶¯¯°±°¯¯¬©¨¨ª¨¨¥¡¤¡ ztsw} ~xrmpgmotwx|¢·½º´¬©¦ ~j=-0.///79200./364;EL?8AMN?MEGNRPIB75=ELWN5/3.118Ns£¤ ¡ ~{wspmle`[VOOVj©¼ÇÌÐÐÑÑÑÒÒÒÓÓÔÕca^^\_b_dekihmpu{~ ¢¤¦ª«¬¬««ª«®«¬«©§§¤¢xnfYUNIHIMLRWTW[\ZX\[]\[`cccaa`a_^[a_abcbbbdb_acdeedeegijmonnnotvvuprssnmonqommkfimy´ÏÓ»zzytu}~~ }ts{ v]57C\S^v3',(4R_]2(Wv|cA,,,,3J^Q-))'&'&'((**-.050+'%')(')/28Xfi¨¦«°µ»ÃÅÉÇ´tOX^hmsvz ¤¥¦§«¬®¯°°¯°°¬®°®°®ªªª¨§¤ ¡£zurw~ ~{jfh[[X[[cnxv±¼¾¼¸±¨ nC.0.,.+6@;1./14724AME5EMTIJIGJRSG?72?HBUV=1.1-/1;Xx¡§ |wwwrojmkg`ZTLHM\xµÃÉÐÑÒÒÒÒÒÓÓÓÔÓ`_`_a_a_efhjilmsu{£§ª¬¬ª¬®¬«««««««ª¨¦£ ~ui`XTLDEKLNUXV[VYYYZ^_]]_]_`bba`__bba`a`a_`a__bbbccfhifglmlmoorvusqpqqqpsstpppmnjlmy»¼vqsqw z|}wqymR96CZFhv?(,3:\^U1)7Ljn]>/)*+3_f=)*+.0,*)--,0-/70+'''(%%')08_\gÀ¼¤¦ª³¶ºÁÇÈȬ[NY`iootw~} ¡¢£¤§ª©©©ª¬«¯¯¯®®¬ª¬®©©¨¦§¤ ¥¤¡yrou| }oXHMT[Z[^edfnv²¿ÀÂÀºµ±ª¢pE1,,-/029@//232453<HL=8CSKJIMKORG753??@LXV7-55400Ciª§£||{yrqnlkklmid_UNJJOe¿ÇÍÐÒÑÒÓÓÓÓÔÔÓ]]__`aacbdjjhjlqv{ ¡¥©«¬ª¬¬«¬««¬¬ª«¬©§£¢¡wmgZSPJEINIOTRVYZY[c`]\]`a`]`]^`a_``\]_^_``ca_^_^aegikjilnlmponqsssuopqttsttuspqpoptvojip|~}votrYB039PT`u:.,(?bhM+#$3KWY]?++,/Gbf6(+0,-.+**+,+046+',*%!!"#60b`i¾»¢¨±´¸ÀÉÉÈRMWbopsvz}~~ ¢¥§¦¥§¥§©¨ª®°®¬«©«ª¨©¨¦¦¦¤£¡vmkry e@47G[bjmlnqtw³ÀÄÂÁÁ¿¸²¬¥wJ1),+,-4563102.646>GD:2;RNHGLGKRLA<9<C::P\F1.3+039Su¨©£ ~{xuwrpomjdkmmollf]UOJL_¤½ÈÍÐÓÓÔÕÓÔÓÔÓÔda__^abecdihhjjosy ¢¦ª©ª«ª©ª«§¯¬««¬««©§£uj`XWNFHIIOOOSVY]\[]\[Ybaa_]_b`a^_`^^^]^acb]^_cadcdilhikmkitukpsustrrqssqtsstsrrsuvw{ypigu|u{z|vlqnV>13>K\^^9,+/?pkH(!!%5WASTD:0.0YzZ6*.-.,((')+)*/:1,)&(*!!#*4_]c¸µ£¥°±¹ÂÇÊÅ@N\dlptxzx £¥£¡¥£¤¨«¨ª²®¬ª¨¦©ª§¨¨¨¦£¡¢£voiqw| pJ31=Rivy{yvvv¨¼ÅÆÂÂÁÀ½¶¯§¡uJ/(-)*-3610420.586=IC;6<K[ICKKLOOGE<>EA:D]]=01.036?a§¥¡¡~yzturolihhebjlopqqlg^QHGY}¶ÅÍÑÔÒÔÓÒÓÓÔÔÕ]]]^_`babcgfhgilpw|£¥ª©ª«©ª©««®¯«¬¬ª©¨¦£¡yom]ZPIEHDGOSUTVZZZ[\ZZ_bbb`_^_`_^cc`_`dcbdaccccdccfighikkpomoquqrtttrrusuvurqrqw}vh_gy}lputvz}}phlkTB567KUXU3-03GgpS) !-KO:<BPC@8DfS,.0/-'$#(,--.445&#(&#"#%-dbd·µ¢¥¯²³·ÄÊÎÁyFMZakoty{{|¡¥¦¥«««®¯¯©¦£§©§¦¨§¥¡ ¢|vkpw| mKCBRgw~~wuz©»ÄÆÃÁÁ¿Á¿´©¤}N1*+.--230/./0,572;FE878DVRFDLMSVLB?@C?::P`R804:864Hl¥ª¤££ ~~zxtrsrnhfebbb_hnttvurkfTOKYv±ÄËÐÓÓÓÓÒÒÓÓÔÕ___^_`adccdfgdiqpx} ¢¤ªª¬««««ª««¬¬¬««ª«¨¦¥¢vmbXSHCDEINRTSRSUZ[\]Y_cb`__b_`__`cca`d_accedcb^fheggffgi{onrtsqrttwxsvuvxuuuutz qWWf ¤tw{||naSaSF>;9H\SK415<L_qc7" #+8_>0-7DQP4HspU81<2.'*,)+**.23-%$$& !/aaa¯¢§°¶¸¼ÆÊË´k?KX]hoqqx{z¤§§¦¥©¥ª¬«§¤§¨¤¢¤¤¢ ¢ {pms vc^ckz y¤³¾ÇÇÁÁÁÅû«§¡zX8-*/0.-44-001/5616EF868@OcL?LRS]UFGEC?::DR\A36@6310U{¨ª¦¡¤¢|{yzytrousliebc\`a^eox|zysnf[UQUo®ÀÈÎÒÓÓÔÔÔÔÔÕÕb_acaaaabbecdeglrvz{ £¦ª«¬¬¬ª©ªªªªªª©©ª©©¦¥¢}uh^UOJBDIKNQTSRTYZZZ[\__`^]`__acebca`baaeb_aedghhfhffedjµonstqtutuxutvvyzwyxvx~iZa~©ºÀ~|ynYJITP?5:U`]W88=DKWklI(('(-FR7$+7>;47OyR:=8+**3+,)),/14.*'&!! *egg®«§¯³¹¿ÆÌ˧SAKV_gnpswxz}~ ¤££¢¥£¥©¦©©¥¥¥¥££¡¢¤¢ ¡smr}rt{ ¡¸ÃÈÅÂÁÅż±ª¤{S3/.+./.66000+-/689BH876>I_]HDPI\VLKJE=87AKUO<4=/241<b¡¦££zzzxzvssqoqmlmiib_]Z]^]drx~xrlcYTXnª½ÈÍÑÓÓÔÔÓÔÔÕÔ`_adbcbec_`bdhhloswx ¡¢§ªªª«ªª«¬«ª«©§ª«««¬«§£¡ {mdXSJGEFHNTSTUUUWX]_]]___`baafa_bdbebfbacaabceegfggeael¨pqtqsvvvuwxwzwvwy{mfr|~ZQk§£{ ¥xlVC>VXF6<KfagNBDLNBeqW7(&)(3QC1,/0-++6UusTA<-0/2/+((+-63-&$## 4fdg°¤¥¬³ºÀÈÍÊC@IT]gnqtwx{|} £¡ ££¤¢ ¢£¥¥¤¡ £££¡ zuy~}}£©µ½ÇÆÅÄÅÃÀ·®¨[0.1+--/592,)*+/5;;:@304;CTmP@DFO]SBKMA9<A@N\K:00386*Iv©«¡ ¢¡~|{xtuurumjjllkgdheb_^\YYZ^dnw wqj`YYd¤¹ÆÍÒÓÓÓÔÔÕÕÔÔ^abc_``deaaeghklimuu| ¥¨©ª«ªªª«¬©¨«§«ªªª««¨¨¤uk^UMLIIJLNONRXSZVYZZZ_]_`dcbdb`bhcbbcdad``abdccfhfegiwvopssrsuxuvwxzxxxtkeeo|zWevmZg|Àиo\DBPYH:?J^nmGFORUNYmlL'%*+2CJ@)+0/**+4Pxx[?-.281(+0.697,%#! !1mii¶««±·½ÄÊÎÌA?IPXemqstwz}|| ¢¡¡ ¡¤¤¤¡¢¢zww{|~}|}~ ¥²³«¢§°¹ÄÈÈÇÅÀÀ»³ª¡W3..-+.-373,+-001964523/49J_]B>JG[YGDLC>=>@GUZJ2108<59V§¬¤¡ }~zxvwussqnkkjhdhha]`_`b`_ZYXYbgku}{vlhb_h ¶ÄËÑÓÔÔÓÔÔÕÔÔ]bbcbadbfeeffhgjnnptx|¤¦¨©ª««©©©ª¬««©ªª««ª¨¢|qdXUMJHHILPORTSXVYXY]`bbdca`_ddccbadba`bbaccdeddebbegzqpoqspsx{wxvvxvtomhgrw|zxtnWG;2TªÊÄ¥nZA=IL>5:HUtm;<HN^NOnxb:!#'02@>/'*3*'&,:TmrJ+(/:7--,//,3/*#" !"9pje³´¯³µ»»ÄÇËÁ{:9EKX_iruuxy|~|z{ ¡¢ ¢£¡zwvvz||z{ ª¸Àº¯¨¨¬´ÂËËÊÇÃÀ¾»±¦ ^43/,(+/248-,.0..483:1-+/;CQfI=DJMZRCMFA<>C<LVP@603<=/Ar¦¨¡ }yyxvrttqqmjllghgacbc__`]___\VWWchot}zsnjeh}±ÂËÏÔÖÕÓÓÔÕÔÔ_``a^`bcihaggjjlmomsxz ¢¦©«©«ª©ª¬ª«¬©«¬«ªª©§¢ wh\TNHFEHJOPORSWY[YWY]`ad`abacfgaabbdc__cddddeeaca`chvzmrrronpvzvyxwsrmflmqvx{¥cM?4''$K¤²wgf`WSH;:3:JWrj8-?MdSOioL*$"(,/3.$&.,)()-;P_G3*.?<401/06-)*%#!"5spk¨´¯³·¼½ÁÄǾ^7:CNV[fntxzz{y{|x~ ¢ ¡}{|~ ®»Ãý³ªª®»ÈÌËÊÄþ½¹®£_7-0.+/.046/./-*238;?7.-+6@M\YC@PDU^TIEG8<>@HQRGA548846W ¬¨¢¡¥ ||}~yqutvromnkkiijfacfecda`__Z^a]YXZabqrw ~trpjlyÀÉÎÓÕÖÕÔÓÔÕÖ^_``_^bbcdbdfhkmmnmovz¢¦¦©©ª©¨¨¬¨«¬©ª«ªªª©§¢ypdWQKJFGHGNLRSRUYXW\[[^_]abddacffefheccceddddcbbacchlyvsrrqqpqswxyvsjmnnqtywuv¤:-&$$'-My¤~aYWXm_A3,6GRexf:5>LaSJf{X1&'%82,'%+3-(&')0;D?5-4=;300124-&%%$!9mniz¥®®³¹»½ÂÆÈ^35?JS[elrxww{}}~ ¡ ¡ ¼ÈÈý¶¯²¾ÈÊËÊÉÆ¿¾¶ª{|f8*1.+,/288...+)/52:H<1./0;FU\LFMMK_dMBEB?BDBOOHCA9;682Alª©¡£ ~~~|ywzwxuprrqpnjljkhffebdcbcbabad^bfb`e]\`irx{ywpnrª½ÇÎÒÖ×ÖÔÔÕÕÖcbddg```addbdbgijjmstw~ £¥¦¨«ª¨©«©¨ªª««ª©¬¬«¨£ }wn`UOKHFEGLQRPNRY\^ZW\`abbaca`_feffhceecefdadadccffkknrvwposuwsustmmnpusvwxuv{|s2#!#((5Pq eTQEKUG03<MVgxeC9>HdRJb]5/+'0.,.++3/(()*,3::4.266.*-14/0+'&$!5qkgx±®´»¿¿ÃÈÊ©A.1<GQ]bmqvxxy}~~¢ «ºÇÌÊÅ»´®²¼ÈÎÎËĽº´¬vv}h9*+-+,0-542-))))/.2??303.6CQZSDEMEV_VGDGBCFNPUO>IA@8212D£¯¬¢ ¤~~~|}~}zzyuuutrrsponlihikkiddfffbheddfgekngefedflqv}|vsy§»ÇÌÒÖÙØÖÔÓÕÕcbbafd`f`aaefdghimlnpsw ¤¥¦¨ª«««©¦ª««¬ªª«¬¬«¦£|sgZUOJDCHGMMRVSV[\XW^bbdc`bfcbdddbefeccdedceccaehehinp{~sputpqpopostzwuvwuh5%$&(,/=\{r`WJ?NA*.=KUkoXMIJUYDV ^;--,++,..*,;.)+,,,130.0/0../75340*$ # !7nhes¤©«´º½½ÄÊÊA).6ER]cjpuxvz| ©¶ÈÍÍÉ¯ºËÒËÀ·°¯ª¥|ikxf7*,.1./1124-*))(/2,7B952./?Qd_IBKLI]\KIKIEELFTP?=LL;/2.6^®¯£~yvwvssvxxuvysrqqpoqommkjghiigdhlkigjjhjkhhmmjkkjgilou|}}xwy·ÃÊÑÖÙØÕÓÔÖÖa`a_da`bce^dgijklljmrru{¢¥¥§«««¬ª©«®«ª©«¬©¥¡ul`WPKBDGHKPMPQRX][Z]caaabddaccdebeeffcdcabcbbbfhffhllsroprppnptuvvyxwxx}°³V9.+)%').Gn~zrW;:8.4JRVoj[`SMYZPYlxk7251.+,/-,3:7.2)#*1020/./.*,/0311/'(%"$9sfez£¶¤³»¼½ÄÌÆ0%,4>GXbgrsvuwyx{} ¦³ÃÎÎÌÌųª°¾ÍÒ¾±¦ kbhx e8,-./.,42351+,,'15.3<>92//7J]lXGMKHS[UPJMEBIMPWE1ITH76:,Ez¢¬¦zsptooqrrppqrqrpppoopihkmiiilkhimpmnnroonloploqttnmnsuz|}~|{²ÁÊÐÕ×××ÔÔÖÖbabbcbabeb``bfildiilmnry}¡¥§¨«¬ª««¬«©©ª«¬«¬«§¥¤|ve[TNGDCHJQLMRUZ][\]a`_ba`cec_bcehcgjgdfdbcbadggigfhhlputtuustvvwxyuxxwwwµÌy\5423-%%('2Y|X3;KZEMT\jMBWXTYc^\[ouS831-,320.29,*)&&*-.5-,.2/),-34--+%""#%:pgg{ª¶³½¿¾ÅÏÆ{2#+28CS[clsruvvwxz~ ¤ÀÏÐÏÍǺ°¶ÂÇ¿®¢r_cn{d6-)..0023103+//.2:10:;:52-.;IkdOHPLE]UMJJFDDJKPH:;LU<9@37\««¡ }}sonmnqplkoqnoutqmmoqnlsqmopnnpqpqqrtrqqtsttqtustspqrux{z {|©»ÇÎÓר×ÕÕ×Ödddddbbaaa`]_bcijhjmljnu{¤¤¥ª¬¬ª¨©ª¬®ª©¬¬¬«¬ª©¦¡yle[SKDAGKNONWVZ^\]\^^`__abac^`fjjgdiicddbbbdgcfhfghihmrqsuvvuyvyxvwxuwuv¾Ø¯m\5:<90)#&$(?jz{d;/5AAPLNXkpG7=LXaph^X_pA1,*,+3/.+86-&$(%+,/,+/0-+,.41-*+($"%*>sliz¡¹§´»ÁÂÇÎÀu)%057BLXaiprwzxxz| £«ºÊÑÐÍÍÄÁÅÊÁ®¡vnhiqh6,+,,...<4./001,/8438875:-,4@Wm[GLFFS\KNLDBCFIKNA3CSM@78+?u¬¥ |wzqmiklnmmornnsrrqpputrpqtwxpstvuxww|vzvuuuwtvxwxvtvsvuy} ¡¶ÅËÑÕ×Ö×ÖÖÕdfgedcbaa``_^aedkhkljklow| ¢¥¦§©««©©«ª©¯¬ª«ª¨§¥¢~tl_VMHCDHKNPTUV^Z`^]^a_abbacedefgheghgdechcbgefeegkljmomqtwwvuvxuwuxuvvw³Ý»vYKB40.34/(<i~ke\C.*+C[_RJMme@1-9KcyrW[Z|X6,'-*50+*19+%$&)++--,-/./1./+,,.-*&'+?qkgt¶¯µ»¿ÃÈпd+(036CJU_gmou{yz}~¤©°ÂÌÍÎÑÌÊÏų¡zsoiopsw`9,+(),,,55./003018414225:8*.5HhgSFLNHbTSRF@GEGKQK<9TWH7517[¬xozvplihpnmppqqrruyvvxytvvxxzxy|zwzxyywwxvwxwyzy{wwwxwvw{~²ÀÉÏÔ×ÕÖÖÖÕfhegiedcdc^a]`cafgfiiilpt{~¢¢¦©ª¬¬«ªª«¬®¬¯¬«¬ªª¦ {rh\OLEDIINMVUPXY^b[[^ac`bedfhgghjhegebcdfgdfeefhgikjjqnpqtuqsqtuywwxwuv~ÂÁdF:4<UiQNZysYI7*'%3RhcQ@GsT,&".HYytQNXstG3*%+61(&*0))'&,,)*,-.042..///*//-)*,?sgft¸¶½ÁÂÉγW((+.3;DPZadjntwwz~}| ¡¢§«¸ÆÌÌÇ»·´® ja_agu}~}a6+,-+*--093/05<0093164358<-*2AYr`GHMMWbSWIBHLMLQPE8APPA970K|¡¯§ |nlxuwrlioqrxwxwyywwuw}|{{}|}z}}{yzz~|{yz||yxy}ywvzyz|°¼ÅÍÑÕÕ×××Õbegikgaedd__`ba_cedehijpqu{}¡£¦©ªªª¬©©ª«¬ª¬®®«ªª£vn`RLHFEEHINQSTW]]Z\]]`cghddeihhjheeffbfbhddggefhlkkjlmmmpsuusqtwvxvwwx|§°wB14U{y|~ZG7+#!#:frhG0JqO%$(,AQf~_PTpgC3(1=2-4'/,.')),)*0+)+/0450.110011'&<sgerº²¸¿ÁÀÉвJ''*,25;HQYdhkousuz{z ¡¢ª³¼¼·®¢ mQKZdn\5,.(.*,,/8:135<69=41>551.45+/9OllVIOPLcYROHAOVKIJKC7L]K@;4;b°±}rfrtvyz{yutyzz~}{}|~~~}~}|~}|~~~}yz|{{| ²¿ÇÍÑÔÖØ××Öccfhffceddababbcccdfgghmpqs{~ §©«¬«©©¬ª«®®®¯±¯¯¬«§¡}qf[OMIGIIHLOQPV[\_[Z]`acggefhhjhceffhbddghdfhgegijhimlonpqrtxtvuuvwyxy}¡XJKX¦ m?2.*!&BgmW9+NsK,%%*9E[xqbZ^{[E:;B1BN1,-+(+0>.11.-..03332./1110+(<thir´¯·½¿½ÅË E#'2/25:AMPafilooqu{x «®«¦£uWUW_hv]2*,(,.,,-89.)1868C:45502.2:0-4FctcKKOLThLUNCJRPLIUK@HVTD;;3Lw²§wllvoy{x|{} ~||~{}}|y|~|| ¬¹ÃÉÍÑÔÖØØÖ×ceecdgfdcba^`bbecdbbfhfjpnrz¢¥§ªª¬¨«¬««®®®¯®ª¨¨¢ xmcWOLGHJLLNQRSVY]]^`aa`efdefeggccefhhhfhigeeegghjjknonqqprvvuwuxyx{z| w~y¥©¢qJ,)( !-UxiC.0ThE.'*,5>Uzt^Rew[VIC6HT5&)-+.--12.-.*,,,04<123.--/+@wklt µ´»»¼ÂÍB*+16-1:@ELW_celoqtx|}}~~ ¢¤¢ o`ekpu|Z1,*-//,.037.)1:5>H>733471.44,/;Thk\FRMJdZLMLDOUPNTSH?NXMCBC<^³®|}qmxz{~ ~{|~{}}}}}£®µ½ÄÊÍÑÓÕ××××dfhefgggdbbdbddfdddbfffiknsw ¦¥¨¨ª¬¬¬«¬¬««®«¬¬©©¥ }tiZRNKGEKNRPRRWY][Y]^acceefgdddbehekiffefecefhhgiijkoprqqquvruuxz{}z}ª¶¨®§¨¡«¤uP8'$""-jg:'3_Z@94..3>Lvp_NWpqk_@9W^5$'.0,)+0--0/+*+*/142212-)'):mtrs°´µ¿½ºÂÇ5.)/?3148BORY_dimptv|}}{}~xpjv}\.,.///30/,2/-3627IC:32355+/3335H]ukPPNKTmJPJCIPVQTTL=CNPN@F;Q|£¯{xwv }{~|~|~ ©²¹¾ÃÊÌÑÔÖרØ×dcgehifffa^bdefadcccddeikjpuy|¢¤¦§ª©¬¬«¬«¬«¬®®¬«¨¦¢vncYQNIDFLNMPPTTZWY\]cecfeddfeegeeegigcdgfdddhifiikjlooourtxvuuxtz{|µ¼³©t_A)$!#9n|^0%8XJ;FJ4,3@Ne kiGHbsprJDlh5$+743+-/.0.,.+)-+,1.110,)&&.isuwÀ··¾¾»ÁÊ;,(+3<02:AHPV\dejnpsyy~ ¡ {xv{~yyyyx~ Y6,0./,+*)-/0.37349<;:21:7001542CUiscNNQObZGKHKNYVTZVHADHOFCFAf¡}x|x ~~{~{¤±¶½ÂÆÈÍÐÔÖØØ××ceffffdefeachfh_acbcjfdgiilnrv¡¥¦¦§©¬¬«®®«°®¯¯¬«¬©¤xqmaWPHGEENNNPSTX\[aaeefedcefdbfedghjjhgifdgehhffgihnmprpruwuwvuuxv¦¯¤{jk^Y`V<)!" @tgG0)AU;6DQJ7=MNYxtma6S| e]^`m.$,12,(,++,+(--)+),/..-,+(();fmvw½Â¶À¾¼ÄÅ 3&%&7B<659<JPW`ghkpru||z~ |yroqvuuv~ |_<*+-/,)&*.-36858567;>903904./38;M_xmYLRPPlKNMKLU]QZ]OCAJIIFF?U~¡¬{v} ~}}}|yx{§³»ÀÅÆÉÎÐÔÖØÙØ×ggigghdfhgffihec_cfdfecdeffkov|¢¦¦©©««ª«®©«¯¯¬®®®¬¤ynd]MMIDFNMLMSOW]]]aafgccedcccefffghjhihehhffgdefhikkmqotusrquutuyzcS>=LD.'(')ImS3/-GO>5=FRJQWOLkuxIOpfK`p ]+&-,/.+-++.-,+)+-+*.*.,++)),7drqwÁÁ»ÁÂÂÉÇ1##&1=I8148@IUXggjoqtwx{~|~xtqkgkqtz§°«~eB,&(-,'(,+.4<718967:=:12<>5/,196CSfrbDJNN[ZMVJKQWRSYVI>JIGGC=Bj¬y {|{z{yx¡¬·¿ÄÆÉËÍÏÒÖØÙØ×higgjogggefghheebdcbdgdbfffinsw ¦§ª«¬«¬««««««¬®®¬¯¯®¨ |uggZQJFIMMMNQUW]^\bacdcbcdceeeheeehifheefggecbhjjihhklotvrrnruut}dM37J8*(..1TbB*)9ODB8:>BP_ZID^}nYd}s^mK*/;DK;/-,,/11/++,,,+.2-+0/*,<itts¸Ã»¾ÃÆÎÃu3&#&(9KE656<EOT^chlqsvvy{}}|~ }zoia\enqx¡®¹Â´¦ z\K4*)+))(.*.-6734C58A>428BD*000268GbqkVLPRMaPUOIOMVPWVJA@HNDHBAV«§~ ~~y{z{}¨²¾ÄÅÆÉËÌÍÏÓÖØØØjjiihkkhfegfegfd`ecgdffcgeeakqtz ¤§ª©¬¬¬¬«««¬¯®¬ª¤ |si]SPKFILIOOTUZ[`b`\``cccghcbiegghggfhhefggecggjfglkimrrqrsrqtqzkO5AF,$#26D_[=)'=RDB?9FOQVSPNSfnlw}~kv\NHHS82-,.,/255/-)).,//--.(()5kxuw¿¾º¿ÄÉÏÃq.##"%.ET>;8>FJNX_ehlrtstx}|{~ ~ti]X\]flx ¤¹ÂÅŹ¨ qPJ;.,.,/+./--2653B<8BF106AF5.7/268CXkpcPUURVZPQGTMNRSVWHGJOGCGAEl£«~ }~||{v{¡¬·ÀÅÆÈÈÊËËÎÑÔÖØÙyihihjkiehicfhhjbddceccbgeccelrv|¢¤¤¨«¬«¬««©«¯¯¬«®¬«§¤¡wod\VOHINGQSTUW\^\_[_cbcdcffdghhgihghfcceeeedfdgiiihknnnnopoppr}kQ<UC.%'.B\hV<.,:GPF@BQXUMCPYV\l}jprsw~yh\]H=2//-20012422*/.,.,+..%')8hopq±¿¹ÀÆÌÓÂj&!%#&'9NL>5<DEIV^_ahlrstx}|~~yureVTXbkry¬»ÃÆÇ¿²¦ kCR=+*+,,*+10-1215<>:=<5.1:Q9./011;AMcmjZNVTM]UUPKPNWUZ^UGHNOEKED[²¢ ~|z|yv{£®»ÂÆÉÊÉÈÊÉÍÐÔרÙghiggggeeieiffgccfedccdececcglqu{¡¢¡¨¦©©«¬ª©«®¯¯®¬®«©¨¥¢vkbWPIIHKRRTSW[\`a_^_cbddefbegheddgfdccdcacfhfedhijkmjmljlpnop|o]KOE/'$(AiiM21.9;KSOOZ_TMILMMXfsylo|jNN^G&(*.111/-*130/3,./-++'$#'3gqoo}µ¿ºÂÉÍÑÁg'$%"!#.IUH:<CGLSVYagiorvx{zz} |xoi_\\]fpz¦¶Èĺ¶¯¢h=KH4--+**(.0.1298A><;?=+.3?=3+06.7BKZemfPV[UX]UTMOLRTS]]JINRNNM<Gy¦© }{~yz}©µÀÇÌÌÍËÌÌÌÍÏÔÖÙÙ{kkgccmhfgghhefdccdgbbcccdaabflpv} £§ª¨ª¬ªª¬®°¯¬«¬«§¤xod]VOHEKSTVWZ^\]`^^`fdfdffdcaefffheefdebabfhfdeggilklniglmkoxwgH?I5)&,CrfH67:86ATNFOZUMJCDFS_jmgqvwryj;OL)**/350,%'.32-1,-,-.0.&"!._srt}ªÁ¼ÄÉÌϽe(""&$#+=RXI<AGEMTX^ehsruy|z|~~|tlb__egmu§·±··´« b8<U7/.,)**.1/-06:=944>:0-05;:123247AQ]jlaSVXX^WTQJMRPLV[TKMNPSO??_±||ywyyx»ÅËÏÐÐÐÍÍÎÏÐÓÕØØmmjhfhhggghggfecccgbabcb]\abchnry ¥¨¨¨«®««¬¬¬¬ª®«¨§¤ zsldYTMJNRTXW]ZZ\]``\_cbbdfgdadgieeegddgddgfgdeecfkkkjijhilluqrG<C/#"1IcU=9ED4-2LO2=ZXTM>26>VlbWbkqn^\ _?f`+037>DD>+'02/---.*)./(&*^urt~¦ÉÂÇÊÌÌ·[%!!$#&*KaUE<?HLPS[^enqtvv~}~|}ywjbcghow} ³¾´¥¢d66ID28*',,-/..56:@<79<=2*/563663757<FWbqmURYZZbTVNMNLHQ][NIEJRRD5Kz¢¦ }|y{|y{ ³ÀÈÍÓÕÔÓÑÐÏÏÑÔÔÕ×llikjihhfeffedcccb`aab__`_a`gimv~ ¤§ªª««¬¬¬«¬¬¬¬ª©§£vmf^VPMPOPPUY\YY_`_^`ebccefddfgleecedfggdegedecefffefkmjlnr~w`uy?)*)')9T]G8CTB/',Gi51L\`_V6)0Lh`NIN]f[XkXK_56AELTSS9-.--0,-.('*.%'! ,Wmov|¢ÅÆÈÌÌ̯O%!$#"%##<X_U=@DGMPWYflortw{}|yz~ }vpqkhkou¥±·°µ¬e51CE33)),--0//676=D<=<520066/46730:=APZgn^QRUUaXTVLPNJNX\RJDAGDD>?f° ~{{~|y{¡·ÃÌÑÕ×××ÔÏÏÑÒÔÔÕØqnklkkgjiggfefhfccaabbb^a^`^aeir{¡¦ª«ª©ªª¬®®«®®«¥ }wlbZTPMMNKRV\[Z\^__`ecceeaadeggd^`eeafheggchfdfgdfeeljhhr~waty@(&'),;Y\JJND0("*Ce]+8Rdb_S@47jYJFN^eMEkTa[=IVUUU[X@3,,+,,+,+'&-)"!*Tpis{ÏÇÉÌÍÊ9""%"$$"".RdaK=@JILWZckprrwx{zxy|}~ xpljlpmv}¦²³³«¨£ g1+@J=/,,,,00,-3:27<?AD531165/07256;=@DS_pp[QPQ[_P^OPROLS^TPIBFG>O4R}£ ~z}}{{y~¤¸ÅÍÔרÙ×ÕÓÒÑÐÑÕÕØkjikjhhhhjfhiligedbdbdb_^^^\_gns{¡¦¨§©ªª¬«¯°®¯®¬®¨¢ypg]VOIMNMPVXWX]\^^_acbcecghjdafjgfgjigcfecfedelbcfggigm´¥hyi<&&%+/?YSSSE3,&!)9]uB7GOZhk\NHZWISfonK<Qam¤GNdmog`dZA71,*$+'()%#''! #*Qqdn{¿ÉÉËÌË8$$%$##$'*>^gXDCDDIQY_elqqtwxwx}||~ |ukeegpuy¤¥¡¢{e5+6PD3.,-*-21,16548?9I=5018?255015:@<>IVdlfQRQZYRW\IPOJMWXQL@IF>GB>g¤~{z{|{x{£¹ÇÍÔØÚÙØÖÓÑÏÎÏÒÕ×qjjjgggjjkiiljhcfedecdc__]]]_dipv|¡¥§««©««ªªª¬¬®®®¬¬¬««§¢~wkbYRLJKKLSVSTVW^]^aceccedhgeggggffidcdbefdaaccdgdbcfhyǺvpwM6+$$)1Hcdf^D'!&'+7Kfe7EHL^nojfebVl|{nJ:NezFTzyto]CG90,.1*('#"##&#'+JxlnyÁÇÊÊÌÆ-#$')%&'$&)RgbTLDD@OW\agmvqtwzxxy}}|~ ~{vke]_jry{|i6,/>A4-)/+,01./2;55<<DK?447B;353,.4==7>QZkm]RPSSWTZLILLDTZPIDEHH=I8W¡ ~z{{xw{¢¹ÇÏÔÙÚÚØÕÓÐÏÏÏÒÕ×ighiiinlfnjkfhgfecaaeb^^^\]\^dkqz~¡£¥§¬©«¬««ªª¯°¯°¬««ª¥¢yph_VJIJKMQRSSSW[^__bdcbfghgghddfded``d]`cbbbdcehedcag~½Í¸|}gXC1/-'%)2Njupj9&%$&-64OkO>BCE^syyzx| ZOD^d7Qu|saMXI100(&*&#" """)*Ew}lkw¶ÆÉÊÌÌr+$&'&#&)&%'<\n`[JC@LU\^chnpruuxzz{z{}~~~~~~ztoe`XZflov|}ztg8*)4F8.*+/443/026469:>KC964883641//7G99GR_jkQJNPUWQRHJQGITQFHDJL?>@Ev¥ ~}zzwxw{ µÇÏÔØÚÚØÖÓÏÎÍÐÒÓÖrhjkihnnhmjghfggfcbbea`a^[]]Zcfnz}¡¤§©°«ª««¬«®®®®¬¬«¨¤ uj`XNNOMNORTXWX[]^^``aegfhefgecbbbbbac`[`egcaabbc`a_g§ÈÒÅz~W-.(*(&%)4^xc`E'"&(.1-9UcFIE<:KZfswlr~L2=ete\jR21*$#!%'"#$$&((9wqnv²ÂÊÍÍ»g'"&()'#%&%#+NihaR>BKRZ_`djnouty}}}}}ywrogZVXTZamsv|} xuxzv3')2BD00+/31324335767;IG744770.863.3AC<>JVenbQLTOZQRNJOLBNSKHIKN@9A>^£ ~|{~zyz°ÃÎÒÖØÚØÖÒÎÍÌÏÐÒÔjklljllmnhcefhgecdeeaab_ZZZV`djsx~£¨¥ª¬¬¬«¯«¬¬¯¯¬«®®¬¨£{ng]SRLMIKPQSUW[Z[^__bdcadefdfdfedcedcb`begb]_b_b__`gªÅÏÀyh?')*,&%&0LslP^>(#(+/5''6RUNHA533?E\w{ajur}S/*3Tp|ls~`@5'$"&,)#"%)*'$:p}qmr°ÆÊÍ̽Q' "$%''')=,&;]h]YLJMP\_bejorruw}}{{}~~~ zne^[TJPRZ^fmsywzy~}}~ ztt{s=%(*DN5.--43526335872;MF94686/2732205ACBFS]iq_LRNQVNUGMMFHQLDGHIB99BB¨ zxz|¦½ËÐÕ×ÙØÕÑÍËËÌÏÑÒ|rnlkijhkjgeihdfiggc`_ea]ZYX\bipw}¡¥¦§©«©«¬¬¬¯®®¯««¨ tj`XRMKHJNLPSUWXX[^^_bbaegfcggfgceeeddc`dh`]bc_][Z^q À¹»Ï¼X6*('+(),AmdHRdA&).,48,&+8OLHJ>421-4NJGT]Q\hi>,$+5Nap {`T=/'('& !$'" !2z}qvuËËÌÌ®[' $&()%('&0Lbh_XHKPY_cektrptuyzz{||zy{ {kTHRLQX\_ekpvy{xxxyz}~~~~~|wuvz~;(*,=L<,.0777657557:88:KB55894-/874103=PJSYgmeSGNLYPSRKKI<LOIFEHI74B?a£ ~z~~zxwy·ÆÏÓÕ×ÖÔÑÎÌËËÍÎÑjgjhijjkkifhefhgdgdebcb_ZX[Z[bhnv £¥¦¦¨«®¬«®¯®¬®¯®¬ª§£ {neaVROHIMNOSTSX_\Y]]aeeehkfdfffdeddfcbaca_cdc^\YZ^v¶Ë¹¹Ç·£¦§KB6+&''/>e~pH=ZtC5>I;.50&)2>AGVTF><:=KMRWa_emP)#',1K^fw {nTC=2'&'$&# 6ooyv¯ËÎÊ¿±F("#"##*($'(&);`n\]SJPU_deiortuvvyy{{||||u^NR\`dinou{~~}||{w}}~wvwry}N1-,1K@33458:8699689079GD<88=40./6=5208MQXWYbu]KJLRUNTIGGCDLQIAEE<269D¡ ~z}zuvy°ÃÍÑÕ×ÖÕÒÏÍËËÍÏÐ{kllklkijhfgdgeeccfedb``[XWYX]bkv{¡£¤¨ª©«¬¬¬®ª¯®««¦¤¢vmd[TMJGLMPSVVXZZ[a^^`_eckjhfdfdccfgdbcc]_a^^\ZUTSo²Ê¾µÄô²²±¸º¹º¿¿¼DBTB*),9YxkD4Bm~[JZiL451)%-85<Xe`VTPU_imqsy~mF'# !'7[djyz¨ {nY7&" "!.g rrtÎÍÀ¦`99*%#$,+,,-'$,IbfgdJMPZbgjjoqsuty|{z}~~ xf]bpvwz|||}~{{zywsuvxW.)+0>C435288789;567666<MF76741)/38,489?FYVOUfjWBFLUNLKFDJDPULCDDF2/3?g¦ ~~}}~{xyzx~¨»ÇÏÕÖÖ×ÓÐÍËËËÍÏnmmkllkjhgfghfeebebcaa`\[]ZXZ^ioy~ ¢¤¨««¬¬¬¬®¯®¯®®®ª¨§¢ {nhcUSNHIPQPVVTUY_c^]^^bdghhebfffc`bedaaabca`]YVSSbdzº¶´©¬¹ÊÐÌÔÞÜÆ6@]_I8?\i_M85PwkaosV:1/+"043DXm}rfZZitx{{ d?,%"!$*E`jtnex§¢¨gA"/_qqs¬ÇʵY5%##(3(/+''&(1WjojYMLQ]ahmoqrwxxx|{{~{} ~rmr{}~||}~~{{z~~{{xvustttv^3&*,:@7248;:86579898659@?<5442*,,19359<>ITUJSnbKFLMSFPFFJLKQQGFGE9+/6P¥ ~~}}}zvyyy{³ÄÍÒÕÖÖÔÐÍËÊÊÌÏlkjkkmmjhfijggeddacab``\XZYYahmu{¡£¥¨«ª¬®®®¯¯¯®¨ª£ ungZSPIEKOQUUUTW^`^]_bbcggeccffdcabccaaa`a_^XVUSSUr²¸¡ncu·ÇÑáïç®S35AWh[]ggM@@;\}|uxgJ9)*&&563L\gruplagkpsm[W`N1&%! !2Nblzq_U^ °¥`)+\ ttw£ÈÅ¥Y/# $),+*%(*)+DclmeRLPV^imqrrwxy|}z~~~}~{x}|||~|w{|zy{z|}yywuuxuvxzh9**/9B:22799:568;8672379<><333,)1192/468AQRLT^i_DHHNJLKFCODJOGCK>C,07Ht¢£ {{{zzywx~«¾ÊÏÔÖÖÖÒÎÌÊÇÉÍokjkkmkhhghgfhffb_bbac`_Y\Z[_ehnv} ¡¥©«ª©«®®¯¯°±®¬¨¥¡}rj_VRNIIPNWTVTVZ[_aabainffbbeddedbcebcb``_\_XWWVSQ_²hOJtµ¹ÍêîØA,-0A\ry}{hb]Xmxu[A9-))(2.2@HOOWZaTDKQP>5ASO;1("%6M^hrqcWNVdld|iA!'Vvxy~¢Àµªj5"!$$#../*+)&%+ZlqmaYQRYdilnruwyy{}}{|~ {||{z{z{y}|}|{|xx|~ mF.)*/=:55:8755977:>974689753-10.22,.(/27;GMK[QecQBBIKMNF?CBESJ@I@A>,28Z¤ }zxz|zy¶ÆÎÒÔÖ×ÔÐÍËÈÈËjjkmmkihgieghfhcacebba`^^[[Z_fmrz ¤¨©«¨«¯¬°¯®®®®ª§£ync\URHJJMORTVVZW[a_`cfgegecggdfebca_`bc_[YZXXVWQBDm¢®aj·½ºÓðáS4-))7EXi}|~vpc_MB)$%)/0,6667?IRNNJE>3.0BYL;,#$5E\eorwqbP;DK^q~ rK''M uyv|´¨³Y6&!!"&*/40-,**0EhswgbTPW]cllosvy}~z{~~ }}}|}||}~|¡¡¢ ¥¡ wS2'(,6?9<9773555869885322765433101)(&&,42AKIRTYeaB>GLIIF;<GGPLAEHAF.-4K{© }}|{{{{z{ÁÌÏÓÕØÖÑÎÌÊÇÈrlkjlliihigfhhiffc`a`aa^a\YY^belt| ¢¥§¨©«ª««®¯°¯±¯®¬«©§|tjcZUMJMMORUYWX\]a_`deedefehhecccdb^^^`_]\Z[ZWVM94Cp¥º¸Ýä»h5.*+-487;Su wka_fXA(#$&+/-.0,-09<EQU\ZTD:7ERL5&!!14;XnrxeM;7AT_{vF#$Gupnnl°«U6(! "%%.10.-.,+.Qmwl`^MUZafkpswz}zy}~}~~ ¡§§§¤£ ¡£¢£ {`C+*03=:547869?865454321257;795,*,*&%#'.1<IGFVWabRCBKDCEA;?IGQIIFEI<)1>e¤ }}{}~z{y{ ¥¼ÇÍÐÒÕÖÑÏÌÊÇÇkjnojhhgiegkkgfhf`bcddaa_]ZZYahnx¤§§ª¬®®®®®®¯°°¯¬¬«¨¡{qf\TOJIHNRRSUU\`a^aaadccccefdada`a`^]`^]\[Z[[XI4.1:X«¤½ÛÇB2473411)'5COWlqiUCThZD'#%((*20.),/135<7ENMPA72IUD1&%()0NhtoO4.;G\l?$ $%8Jrnfiilx±¸{N+$"$&),.-0'-13/Ahxy]aXQXbcjnqsrx|xv}|~~ ¢¦¨ªª©ª¥¡£¤¤¤£lV7,*.15/389;:<:9688421.4568475*'%%%#"$(14IG;>J]a_I>BBDF>9=ILRMDJIM>//7R¬}}}|||~³ÁÇËÏÒÒÐÍËÈÇÄthjjilhgjiiijgjcdddeedfac^[[^ahlu|¢¦¨¬««¬¯®®°°¯°®®®¬«¦¡~wl`VQNIKOQQTVYZ\a]b]`bccgdfeedb`]af^`c`]\^\\^XG6-*.F}¥¯§¾Íªj94>=////)*4559MfeVC<3Wq_?'"%'#(0-+*-/,31.,5E4153/7CJ@-*+*2Kak ¢¤rJ*+1?J;,%#+*N`t{uonx{¥¶·vB)"#$$&)*-,.*)2/,.XpxpaeTT]djmpprtywy||~~ ¢¥¥¨««©©©ª¤¦©ª¥ tbJ-+-33258:@955536663486552.03-)%%'#$%$06?C:18R__O>9<=C<8@JOQK<EKJC1'.=r£~|z||~~~~¨ºÀÇËÍÍÌÈÈÃÀÀhjjgihgikjihghebcdcecda_^`[X^birw¥¨ª©ª¬¬¬®®¯¯¯±°¯¯²«¨¥ ynf[SLKQSTRTWXXXY^a_dbcdhghfcea_^bd_bdaabb^__UD9/1@_¦¶ºµ³ÀM5BD4)*,0'&275:ScsM=4;^wbB%#''$%((-,)-/44*30=931,)/-6=;1+-6O\n¤²°l?*'.470" 3\vz§´·µQ3(#&$%(-,*)+-$'('+=ewzcf`X]cjjpqqttux{}{~|~ ¨¦§ªªª¤§¨¨¦©®§ zhL20036377:>936425686674321,-0.(%%&$$!#'1.8:43=Q[VB66;<A>9CGIG>@F@C4()7Z§ }}||~||ª´¿ÄÈÈÇÃÀ¼¶¹zllihfdiihildefcdccb`a`c_^\Z[_fnsy~¢¤¨«¬«¬¬®¯¯¯°®¯¯°«§§¢vmdYQNMOQRRTTSUW\^][_dc_bgdddba_db`bdcbddccUF>739Zy¡«¶¹¤ »yC=EA2'**4/*1@@Ccls[A6Coy`>'%))*'*,0/-0.44/,.7D-/87.&'1?8,0ARXg¦´¶¶¨i8##(13(":r§¢´´±§8&'&'((-0/,+)++%&)-4QirkanbX[acjnopswx{{{~|~ ¤¥§¨©¨¢¡¥ª««±®¨ ~kTB63144559;928859<?<<<97571222+,-))(%##*.27/,-ARVK;3@?=747BEH>>@==8'%1K~~z|{z~~©²¸¾ÀÀ»·³ljehgfgilehbcddegea_aaa^_[ZY]ehkt}¦§«¬®¯®®®¯°¯¯®¬¬ªª¤~uf[RMMLILPTSTUVY[\\[c`\]_``dcaaebchdcbdhmcF462<Qt¢®XA@@7.((.A006FU_km}cFARtsV6'&..,,0.,.-.1534.,.=33M`0%'096/8PUTp¸¹¸· |I,(*-2+K¤¢¦ªª®´³®¤u4!#%(.1.9C7-+,0/+-/1:[nrjje`S]aflpmrtu{xz~~~~ ¨¥¦©®ª¤¤¤¤§«ª«ª¦¢o\G9148::9>A>=AEKPROXW[XY`_^\WVPGG>851-+-.351++4CRRF@<85;33@GI@99<A>1*-@i }z{~}~~ ¤ª®´²¯¬©¤¢|jjljgghkifeecffecbdb``_^[[Yaddjpy ¡¦¨¬ª¬¬¯®¯¯°¯¯¯°¯««¬¦¢ ~la[SNJIKLUTSTWVX\YV]_\__c`baa_[bciecdfptW:8CRZk²UON<1--&.IF78GakohpcTQ[xlM3,.41).0,,-,*/1300047/>YbC,3@A:.<VWVu}¤±¹¬dB,%(*.$ 'U£¤¤¦©°·¹·²V*#$$)2@FL6201122/,+-0Kdpombj\Y^bkqmsqrwxy~{||}} ¢¤¦¨©§¦¥¤¤§¨©©¦¡ udWA=HNTZ[fmpqv ¢qf]MG:6.1/+(/;HQP=/226208AJA65:>C<$'3U ~~}~~~ ¡kikjhklghhgggggffbgcccc`[[Za`agmt{£¨ªª©ª©«®®®¯¯°±°¬¬©¦¢umcXQKKJKLLNRVTWYYUZ^_a`ab^]babdegffjkxnE57[pz~}`T]Q7.+&&4DV<:Ievocp[`akyhR9134/-//..-/0/1310150,7OPM=EEJB/3SXcvxhbzWA6,%"%0"!%V¢¦¨´°µ»¼¼»©S($$$)9KJQ;224632.,)184JmmjhhmXS[aehlsprvvy|{~}|~{} ¤¥§¨§¥¥¤§©§¦¤ ~rn`ht ¨ª²°µ·½º¾¿ÅÇÆÈÇÊÉÊÇÊÄĽ½±¬¡ taOF=7,-6BBIC7/0.0/19@B=135>=,$*@o ~}~~~ ~fgihjlfegieiifdddcbbdc_ZZ\ZZZaht| ¦¨ª©¬««¬®¯°°°°°¯±®©¨£zsg\UNLHIIKPTTTWSWY[\_c`cea`acfeghhiiiog624AgxnaPXdUB3)%%2ESLGJdqrn[etuy^F5242,+/./3332.-22/+(**.CEFHIIRK2.ARiuw_DGDOUE7+$#(-$ ? ¦¨°»³¶½¿Á¿©j&$ #)5;=;A@7353..3.2*(:[pci]reUQ]bbfsqqux}|{~}}|}~¡¡¢¦¨¦¥¦¦¤¥¥¥¥¤ ¯²¼½ÄÅÈÈÌËÈÉÉËÊÌÎÏÎÐÐÐÒÓÓÒÑÓÑÑÐÏÌÆ¾µ¦r]H<438:BA+))*.11:A<2.08A1$%3^|~ mhiieegifighhefcfdb`aa\]]]XWV[cnw}£¤¨««««¬°¯¯¯°¯±±°±®¬©¦ vmaWOINOIJSSSTVXYa\^abacdddbhfef`efjeTA3.8Ei vTFIET_P@6*')1AXYQM_wvsmTbyqO:3.63/-,+/82443/.--0.*''.BQSQPOD74>OjqqbN=B_lT:)$"&/"Aª¨±À¸¸¾ÁÄ»¡W)##&*/03-<;7654176.+--.HfgfcgvbTUW^ehpprvxy{}}|}~~~~~ ¢¤££¦©©¦¨©¦¤£¡¤¬µ¹À¿ÆÇÆÇÉÌËËËËÊÉËÊÊËÌÌÌÌÏÏÐÑÒÑÑÒÔÓÕÔÔÓÓÐÏÊÁ°hR:9.472,)')1.6=;3-,3=4'$+G ~ deeehfhgejeeefefe`bbc\\[\\XWZejpx ¥§§¨«¬®°°°²±®±±¯¯®ª©¤|oiaRPMHHHNLRSVXY\\aa`cceecciiklfdhcO:,+/<Su« ~_FC>?VXQA62))/9UcYKNovr[Vj{w>5.-66.,,+25430:2/*,,-2('*BU_^YS@9<YqsoqjL6QynS6(&#%&*®®°µºÀ·»½½|=%%#&',14::?989==21/-+&)5Mbbd^jgWQX[_`imppsswx~{y|}}|~{|~}~¤¤§¦§§§¦¦§«¬©©¤¡«·»ÀÃÃÆÆÇÈÈÇÉÊÈÊÉÊÈÉÉÉÊÊÍÍÌÍÍÏÑÑÑÐÑÑÒÓÓÔÕÓÔ×ÖÕÑÌÁ²~bH4080-*),/10:;0*084' ';k ~nfggjhheffffeddcdcb^`\]]]YWVY`dluz¢¤¦ªª¯°¯±±¯±²±¯±±¯«¨ ~nfXXRLGGMLQSVXY[ab^`cceej`dhfhiehZ>0*,5Fc®kGJK@H\_N?<4--19SpdLMaonO^xV?./42-),36121,01/+)**2**4G_qulZE9Beti]IAXkX:,$"!'()l«®«¯°¼µ³¯§ªf0%'$&+,76528>C?=;6413-%&)<\fe`_lbZRUZ_bjolruuwy}~~}yyz{z~{{|}} ¦§§©¦¦§§¦§«¬«£ ¥°¶º½ÂÃÂÅÅÇÆÆÇÈÉÈÈÈÊÉÊÉÈÈÉÊÌÌÌÌÎÎÏÐÐÏÑÐÑÓÔÕÕÔ××ÕØØÕÑËÁ¬cL>93.+*-/.?\5(+1/'#&/N | fdckkgfhigfe`adchd`^]^ZZ][XX^afox¤¥¨¨¬®¯°°°®°°°²±±²¯ª¥¢th^XUIEGHKOSUXZ]``]deeghgdfghfklnR4/')?\w{XHJECKf[?3451-.7IijPKZskTjzd[Y@262++*2:41,,,2,*-+&*/.<G]vyxfM;Ggp_QT\]H9/%"!!**"$X ¥¤¢¦®¦¡ª±³i)'(*-210/58;AC><>:0.5/+*(/Hhg`^fg_SHTW^dimquuvy{zz{yyyx|{yyyx{}} ¡£¨©§¥£¥¦©§§©¨¤ ¡¡¦§ª¯µµ¹»ÀÁÂÅÄÅÅÆÇÇÉÈÇÉÊÊËÊËËÊÉÊËÊÌÎÍÏÏÏÎÑÒÑÒÒÓÕÔÕÖ×ØÙØØÙÖÑòkP<3)'(,-493/+,-*)!&Av ocdhffjhjgfea_c`da_^_]\Z][XYY_derz¢¤¦§ª¬¯±±°®°®°±±³´°«¦£¡yndYOIGIBIOTWX^^aebcfiijhjhhklmtS-+'+El }}rWID=AVgZ=17307<:DbkWNRkqawrZ?EV\39(()-/5?62/.1,&(($&*06=G^`fcWGKdyrpspS7*' "%%&'$V¬ÆÁf'()1630239<94:G@873-01.,*(3Qa]ZXgbYLMU\`djmrvxxxw{{}{wwzyz|xyz}|{| ¤§ª¦¢¢§¥§¥¥¦¥¤ ¤ªª¦¦«¬¯±µºÀÂÃÅÅÄÅÇÆÆÈÈÇÈÈÈÉÊËÊÊÊËÌËËÍÌÎÎÏÏÐÒÒÒÑÓÓÓÒÔØ×ØØÙÙÚÛÚÓůkL/&%&(+-1/(')+'!/^ eghjjhgfddda`bcad`^bb`a_[YYW[`elx¡¤¦¨ª¬¬°¯®¬±°²³³«§¤¢tk_SKIIJKOTVSY[^bb_dehhhkkkmkitq4)+2Js ~~hSG=:BXmY>5769BA7@[h^QRlunfA8;F[@;3++311<<50*(,&'&"&508=?IRUYIMcqI9.)$%&')'$!%L|ºÑÂd,+-13787960298DE?=;-3/-'()+=]gXU`a[PHKTX`hijrttvwwyz~uvxvwzwxz~|{{ ¦¢¢¢¥¦¤¦¥£¢¢ £ª««©£¥¨§«³³¹½ÁÂÃÄÄÆÇÈÆÆÈÉÉÉÈÇÈÇÉÈÊÉËËËËÌËÍÎÏÏÐÑÐÐÔÔÓÓÔר×רÙÙÚÜÛÙÔÇ\6&+%++./,&'(*)Lz wihlnihghfedbce`fb`bcba`]ZXYY]dhnx¡£§¨¬®«¬®°¯¯®°¯¯¯°®¬¨§£zreZQMHKIOTUTV^ab_`cefkjlilmolsL00?Wu¢riZB;>JbiT>7;;AEB:<Sh]QXowv~cDA>OY=@6312545F>3*&&&&"#-@:6HEOOIMKQd¡}kndXB+&&'*+*! 'Ow{|xr¸ÒºX1..3=;854./3326KA>B973./()(3J\aOX^bWMIHS]^bfkpsttrrsxxvvutxwvw{}y}{} ¤¢££¢£¡££¥¨¨¥¤££¦¨¬¯³·¹½¿ÁÃÄÄÆÆÅÅÇÉÇÅÆÆÈÇÈÈÈÉËÊÊËËËÍÏÏÍÌÑÑÑÓÓÒÔÓÕÖ×ÙÙÙÙÚÜÜÜÛØÐÁ£oC<+()(.0&$&'# $2o ffhjihijfdcbdeccc[adcbdb\YVXZahjs} §¨«¬¬®«¬®®¯®®®¯¯±®¬©¤ }ukbVKHJLLPTVUY]`bdcfcmlmkknokkP>[u¢¤|un[B@Vnzw\E<<>@CED?L\QJ`l|od_F7>E>>;974;629?2+*$%'%$%+442RZaN>LOJL`ZVTU_vtc@*&('-/+"!)>Wnmuukmu»Ñ³T//33401021,,1<5CFJI=<2/,*+(,;ZmYSV\fUKHOW[`dforrttrpvvtstrsuxxwywxxz|~ ¥§§§¥¤¢¢¨ª¬±¶¹»¿ÂÄÄÃÄÆÄÃÄÄÆÃÄÂÄÇÆÈÈÊÊÊËÊÉÌÍÎÎÍÎÐÏÐÐÒÔÔÒÓÖØ×××ÙÙÚÜÝÜÝÛÖ˳U.#)(+*&"#%'!!,W|~zigiihihgechdcacc``a^_eb\\ZXY]dgox ¦¨ª°¬«¬¯®°°°±±±®¬ª¤{rgZQKGHIMSTTYZ`fgefgilnomppoltyiw¦§rsmPCUxqVG<:7<@><EV]ADPf q\codR:4:;B<;<::87?;1)%#&((%&.11?\eB/OnlQC:;=BVqdE.#$(*-/&(,;Vjtilmdmy·Î©D24.),1.122+,06;7CILFE<0+,,(*4HfnFNUb\ROMOY_bdinqopsquurqqrstwyvtuyv||}| ¤¦¥¦ ¨¬°²¹º¾¿ÂÃÂÂÃÂÀÁÃÅÃÂÂÀÆÅÆÆÈÇÇÊÊÉÊËÌÍÍÍÏÏÏÏÑÒÔÒÒÓÕÕÕ×ÚÙÙÜàÞÝÜÜÚ×Äf>*''(("""$$!:} y fgiiiggi`aefdbcd__a```^]]\\YZ\ciu}£¦©¬°®¯®¯®°°¯®°¯®¯¬§¢~vk^WOIGKORVTZ[_cedgillnnnsomjkr¦¡vmohKTwaI@69<>A5<I`\=<J[ze\_gjC565<>984JA65:7-'#"(*$#02-.?PL6PoE-,.6IoU.$"%*/61&5NX_|fnibm|ºÎJ-'+/)+*+/00/,.:6=FGMOJ4-0.+,-/QmREQU`XKKNRW`a`gkmooqpuppqrstpwuuuvvyz}}~¡ ¡ ¡§¬¬°±µ¹¼½ÀÁÁÁÁÀ¾¿ÁÄÃÁÂÀÂÄÅÅÆÆÄÆÈÊÉÉÉËÍÎÍÍÏÐÏÑÒÒÑÒÔÕÕ×רÙÜÜÞÝÛÛÜÜ×ʰyB.$#$%" #$ 2_iggjgggddcedbdca_`a__`_\\]YY]benw ¢¦§ª®®®®®²±°±°¯®¯©¥¡|qg^WNLNPRSVY[`acadhlkppmonmlmlsªlmm\XqmTI;8<@AA9ETfh::BZw|c]YjgO7*48678@D72972+'%(*'(1/)*18URn`5)'-?g}b/%+,04578G`nyjfgev½È8*&,1.--//15211158BANPI=2.+*+,0AZf@ORWUPLORMUXZdijlinnomlnrnsopruusuyz|~z| §««´·¹½¾¿¿¿¾¾¼½ÀÁÃÃÂÂÁÀÀÃÄÅÅÃÃÅÈÉÉÉËÊÍÏÌÎÐÏÐÐÒÐÑÑÔÕÖÖÖØÚÚÚÛÜÛÜÝÝÚÒµV,$)&"!"!&Nlghhfgfbcffbddec]_]^bc^^\_[Z\]bgr~£¨«¬¯¯¯±°¯³²³²±±¯¯®«¨£¡xnfZQOLMMPVX[\\dgdiilppnkomljfjpynkrsnuuVUB78=<=@:I_nb?4>Qaf~m\TwU>84385:F:3467-++*-//,(#/;?IXpQ>,'&4[¥J0+0:91NZcjw¬bhdh{ ÄÆt4+',14:32/.3746113=CFHGJ</(**(+1JaSERSWTPNIGKTZc`ejkjlmjhkllnlkiqqswxx||~|~ ¡ ¦«ª«²¶º¼¾¾½¿½½¼¼½ÀÁ¿À¾¾¿ÁÄÄÄÃÃÅÇÇÈÈËÉÊÍÌÎÎÎÐÐÑÑÐÐÒÔÔÔÕÖØÚÙÚÚÛÜÜÝÝÙÕÇ^4'-*" !#?k eehfefegiebd`aa_`bb^`bc^\\[[Y]fov}£¦®°¯°°®±°²²±°¯¯°«¦¢}tj_YTPOQSYY[Z^adgigjpomorljiifjlt|}{mq _JSW@5:?:6;?OdoX859JLH`{}o]m~\132;?9::67782--,/7.%"#-HC@ICK60*(,2WªT2)0<9>Vhsv¥³_hhbt¥À´e+#'+,4=?65-/421//5>>GHDII>+)''(+<Wl@HKORNOCBJRW]_bhkhggfghfemjiimpqtuvz|~~}¡ ¢§ª¬¯¶ºº½¾¼½½½¼»½¾¾¾¾¾½¾ÁÄÂÂÂÁÂÃÆÇÇÈÉÊÈËÌËÌÍÎÎÎÏÏÎÏÓÓÔ×Õ×ÙÚÛÜÜÜÜÜÞÞÜÖȨj6,#+X ¡£¦¥¡neeggcdhhdcbb`eabccbcb_`]][XW\`gnw~£¨¬®°±¯±±°°¯±±¯¯®¬«§yqf`XPOTRSWY\_`bghghjmpprikjkkmlort|po|¨~V@>PQ>?=>73=HWjoN405::3BYu }rSb}aE7<=/.48831812265)"!"136>D:<:3345Hp¢yI-%&AUQagq³Yh_[cvôK+$')./47450).:/4559BIK=HPJ:*%(-*1G]UADRRPPD?JOOXZ^bdeegjihfhjlhkmonpqqtx{|} ~ £¢¦ª³·¸·»½¼¼½½½¼¼½¿¾½½½½¾¿ÀÁÀÁÂÂÃÅÇÈÈÉÉËÌËËÊËÍÏÏÐÏÏÒÔÔÕÕÖØ×ÙÛÚÜÜÛÜÝÞÛÙϰzA &Cw ¨®ddgifcdfffabbfbaa`dcba`^]][V\^bit|~¢¦¨ª¬®°®¯°²°¯°±±°±±±²¬¤ }umeZUQSTUV[_`ccefgjhlmmjilkkkllmsuzrbq © ZC7KPLC:=@34?L^pjC.277437KqkWYzhD;9/(+0&-./*1E<*(,'!"()+6FCBA=KQNJhk=($!BXajls©³µ~ZaXR^e¹ K)$)4512540/**564466B<CDELOJ4+*.-.9U^J@JRQTL9DFHJQTZ`acfhjhgcejkhknomnoosxy~y{}}~~|y} ¦«®³¶µ¸º¼¾½»»»»½¿¿»¹¾¼½¾¿¿À¿ÁÀÃÄÅÇÈÆÆÉÊËËÊËÌÌÏÏÏÏÐÑÔÔÕÔÖ×ÙÙÚÛÛÛÜÝÞÝÜÚÒ»z>" !2f §±·¸´qdegkfdebcc^bdbccdefdcc_^]][Z[afqy} ¥§ª«¬±°¯¯±±¯²³³³²²°§£|xrhaYTSSSUZZ]_eafjifjlllkmhllklrwxliZ;3=UTSG:B?44?RmoR:38:D366OudG^nE-+'(+--/(-4J?0+45"##%)0672.3?GLWi|[5,	V^gm~¥³µ Od[X^gº<)(*/:F93222-',9656:?>6C@IOPF5*+(/5GTRA9YPNL@=DCKNNRVX\abeacegfeekjklmnpotrutx||}}~}|svtyvx}~£§§¬¯³µ·¹»¾¼º¹¹¹»½¼ºº¼½½½¼¿À¿ÁÂÄÃÅÄÄÃÃÆÈÉËÊËÌÍÏÏÏÑÐÑÓÓÔÔÔÖרÚÚÚÚÛÜÝÜÝÝÚÑ´?!!,I}®º¾À»fffifcbbed_`bbbccbdcbb_`]][WY\clt¡¥©¨«®¯®®®¯±°¯°²±±±®ª§¡{umd^YSOQVW[^aebdcefjjkmmlllpklpswxv¦G14ENNXI>HG36D[pgC68C:KJ?9M{ybK`W1%'&+.21(/AD7-)?A1$ &(1' $()*+3Qu{_F=(-F\bhr¨µ´zU``X\j¶;)'%*>MH=6311*(.521;;?6<>AIJOA1.0/3:GQI<EQSPB;>@JNJISRUY\Y[c_efffghikiillnnpsvzxxzy{{y{}|xvtrruyux}}¢¦©¬®³µ·¶¹¼»¹¸¶¹¸¹»»º½¼»»º»½¾ÁÂÃÂÂÂÃÃÃÅÇÉÊÊËÌÎÏÏÏÑÐÑÕÔÔÔÔÕÖÖ×ר×ÙÛÝÝÞÞÝÛÖ½F"6h ¶¾ÁÁ¾xedfjbdbeda_bafbbaccce_``]WVVV^fpy~¡¦§ª«°¯¯¯°²°±±²´³´²®®¬£¢sibYTRTRSX\[\`b`ffjjlkmlllpooprz g<7?MQYRMKOJ>@Mfyb>8?MEDR66Nyfw`STfoQ$$%)+42,5F:/*2?LB% "%%!!#$""$'=ltTYL8CYiot©¯¶T_[Y[kµ1*(&+>R_I5.,/0+(21047:<65<AFLJ>/),/4=DHK:NUOGF@=EGGGNOQUZ\VYZ\befcfegffcghkmrtutxzyxutyxujhigirx~£§¬¬¯²²´µ¶¸¸º¸·¸¸·¸º¹¾¼º¸¶¸º¼¾ÁÀ¿ÁÂÂÄÅÆÇÊÊËÍÎÎÏÏÑÒÑÐÔÕÔÔÒÓÕÕÕÖÖÖ×ÙÚÜÝÝÞÝÚÒº:)Q }zz}}{w{|}zxv£¸ÂÅÅÁdddgfgbddddedfgcafeedcbb]UVTX]bit~£¦ª¯¯¯®®°¯¯±²´µ³²²±¯«¨¢ynf]VOORVUTX[^`acfiejlnmonnooty~hKHHMT[^JNb^TGFYqvU<6>fLGQE5Cqyho W<?jqQ0%&%(.3AA1,(08RQ9#!##$#$$!! "2hfCAHI\bnt¢©ª¹±[b\Y]le.($%(:Qd]F0*+..---0267=::7=AEJ@71,*-6>MVIHMRIPE9>@EKMQNTVVVYZX\a`^_`bba^acdfjnsquvsrpnmjd]__emuy ¦¬¬¯®®²´´´´¶¶µµ¶µµ¶·¸¸¸¶µ¶·º½Á¾¼ÀÂÃÄÄÄÄÉÉÉËÊÌÌÍÑÑÐÐÑÓÔÓÓÔÔÔÕÖÙ×Ö×ÙÛÜÜÝÞÛÙÒ¹G Cn ~{{{qpplnlmsptolkm ¥ºÄÈÉÇy`bgehcdbceedcgdefegabbc\XWYTY]boz¥¨¬°®±¯°°®°²²µµ´²²±¯®¬¤ }tic\SMOUSTWZ\]`aehgjnpnkkmnpu n\\Z[VV`\HY}j_LH]vi:76Di`IWX:Fl {pgyqL7DeU1%'*.;FD0-,.5>W@(%$""&*%"$#"8f[/7@Uluwz£¨¹µVkaY[r ¬G'(&''1G`mO3-,,01+*24577<?38:?EJD;/,.2>LRS?@QSRI<9;EEKSOJOPSWWUUZYY[Y\__]\^\]dgmmppgf`[XUZYc^lu} ¦©ª«ª¬°²µ²²´´²´µ°²²´³´··¶·´¶º½¾¼½ÁÁÀÃÄÃÆÈÉÉÉÌÌÎÐÐÑÏÏÒÒÓÔÔÓÔÕÖÙ×ÖÖ×ÙÚÚÛÜÛÚØÓÄ=#,_ ~|ysplgccda`^[]`_c^k¤ºÅÊÌÐehfbccbddfddbbcbbceca`_]YTURTY`jr{ ¡§«®®¯³°¯®®²²³´´²´²²±«¨£¡ |rfaYOLNQRY_]\]adhliimnmlln|{~t`ab^U[g_GTnn\HEj{X80/>pkJeuTAYumitf?5Bjw]7+/2BC<0-46:9GB679*/+)! 3hK.:HX| ¤¯µ¾»]_XX[v¬¨N(,*'))9JVSA.%)*---075:8;=<99?DJEB=1.18CLQL@ASRMB<9:AFLHFDFNMPOOQUTNQVWYYWVV[[]egfc^ZLENO[`lt{¡£¥¦¨§¨«±±±²³±²µ±°°´´³¶·¶¸¸¸ºº¾¾¾¾¿ÀÂÃÂÄÅÉÈÊÌÍÍÐÐÑÏÎÏÒÓÓÒÓÕÕÕ×ÕÖÖ×ÙØÙÚÛÛÛÛÛÓ·B"Lx }yurtpnlgd`ZUQPTPMKNKUWh¦¿ÇËÍÎ{gefcccdccef`egcbegdba]\[WTUQSV`iry¥©¯¯±¯¯±²´³µµµ´²±´³®«¦£ wmg^RMHORX\[[^baefggimmlnz{|zlaPXYNes^GSbndEKtyI/,+9dnW]T=Nuze^q[A8Al~T7.4465+/BFHG6E?WbM870 7XD--3Kn¤«³½Á´\\ZY_z¨£G(.)&(),6CPN=3+'-3,099;<;6@9<?AFEE;2.017@EPH=DPTNA>78:@EFB;B??ADFJOFILLNPORQTSVZ[X[NFCIQYgp¡¢£¤¨¦¨«¬®°°®°°±²²¯®¶²²¶·µ¸¼¹º»½½¿¿¿ÀÂÄÆÄÄÆÈÊËÌÌÍÏÏÏÎÐÒÒÒÑÒÕÕÔÖÖÖÖ××ÖØØÙÚÚÛÝÚÓºE !1s ~}|wvtlhhdbbYZYOFC>@=<;<;=Da¥¼ÇÌÎÍgbedbdffdfhghfegfbceb_]\ZWVSRSUblqz¢§«®°¯®°²¯°²µ³³µ²±²³³®©¤£}si_VOLPOSYWZ^`a`fehihimwxng_PGLORsySCZikaCRp@31-9]nS]}gDBbzcS`wT94Ed}a91**/./8F_P6@XvzLVA%#7Q4 '2Gv¥«³¾Áµr_bYYcx®F-,*&)+)*3BKIB1+10-/4<?=35>>==>C@FC73511:?HOF=EMRJ@765:DDEB?945:;<>@C?ACHFLJJPOPKIIC?HX`kz ¡ ¡£¦§§©ª¬®®®¬®°°¯±±²´±´µ¸¸¹¸º¾Á¾¼¾ÁÁÄÃÄÆÆÉËËÍÌÍÎÏÏÐÒÑÑÐÒÔÔÕÔÕÕÕÖÖÖרÙÚÚÛÜÚØÏ¹2!*R| ~~{{vuqsqojd_^\YVPJLF<733211443;U}»ÅËÌÌycceedghedhfkkfgfcbda^\^ZVZTQRV[dn{¡¤¨¬°®±°°±°±²³²´³³³³³²®¨¦£xnf^SOSOUW\[Y^c`ddcefkpv}ziZZTLVXpkJE^viZFb_29;05YeRUykQAQllRHftJ02:{oI/+//-4=F>47cwh3#"$+=@-()1Qª¡ª°½À¨k]_W_kª7(&'(*+*&*4>EE<3+*./148;869=9;<AEFG>=<5269?IF;<GMEG=955:BGLD:322433315<<==?<>FJGDC=?GTeq~ ¢¢£¦¥¦¨ªª§ª°¬«¬®®¯¯®±´³±²µ¶¶¶·»¼¼½½»¼¾ÂÄÄÇÈÉÉÊËÌÌÌÎÐÐÓÓÑÑÒÔÔÔÓÓÓÔÔÕÕÖ×רØÙÚÙÚ×Ñ·? 2tz~||~zuxwwtqnjihce`\XTSPJIC?8111/,()+*+-Dm®¾ÅÇÊicfhieddcfhifiefd`efa__[WVQMNOS`gq|¤¥¨«®±±±²³³³³µµ¶µ´´´²°¬¨§ uh`TQMNNRVY^^\_ad^cej|~qs{nPXV[gn`EIi}sVFmzO49;7D`]Mbyn]TF]n\FQod?25Q qC-)./&*30-+L}°¢T6/&1F>+"'8Y°©±¼Ä§_baXcp·7#$$+10)%*04;D>;1++,-0159:;9887AEBGIB86/348=C?89FBFE<721:CKKD93.-/---/4114:89=>9A<?HYkt} ¡¡ ¡¥¨¥§©¤¨¯¯®¯¬«®¯²²³°³µ¸¸´´¶¹¼¼¼»¼¾ÁÃÃÄÅÆÇÊÉÊÍÏÏÐÐÒÒÏÑÐÑÒÒÓÒÓÓÓÔÖØÖÕרÙÙÙÙØ×ѽx7 -V}| {xwsturmpomifea`]\ZTNQOKIC@<5.+//,(""'&#(8Ux³¾ÂÆ zfhdheffeehjcifbcbef`a`\WQPKLLOWalx ¤§¨°²²±²´²²³µ¶¶¶´¶¶±ª¦£|rdZWPKPSTWYV[^``aeht }snqu}~p[LKd zSHTtzTMob@<;54Ha_Ub`XRBRlnQ<Ry]:45_g6"%-&"',0'.h¡f?9/>J>(#%8Q¡¥±¾À\bgZgs´* &',45-+)*/4==:61***,-03:EC:88=CEHBB:434055>@=;;>=JG;202?FNLD=510,/,++*,//369<9>ASak} ¢¤¥¨¦¥¨¨¨¬®¯°¯«°°±°³³··´´··¸º½¼¼¼¿ÀÁÂÃÆÇÈÉÊËÌÎÎÏÐÐÐÐÐÐÑÐÔÒÔÔÓÔÕØ×Ö×ØØØØÙÙØ×ϱw- <n{ ywzyzssoplkjggjeb_^_`\UUQNLHGF=9975.,+))'"#)$ $*Ac£±»Ã phfdbfffghigefcbac_[^_[TSPNKLNR\ju¢¥©¬®°±²±³³³´´³µ¶···³²¯«¥ vi^ZVNMPQTX[[Z_acipzrpqppw~~xc?FoYAI]c`uR;=D95H^ZLcgF<5HnjJCVr¢`G::XW3 ## (45-,FnqY98A<@B.(+B]w¡±¿¿\gcXcvÄp.'./122-**(,7:9:7751,+--07;=?A=5;<A??>8592215:>>7::?CA524:@HJKH>3/.1.,/3/.-08??;K[fny¢¡ ¤§§¢¦¦¦¨ª¬®«¯°±°±¶¶³´µ¸¸º¼»»»¼¾ÀÁÂÄÅÇÉËËËÍÍÏÏÎÌÎÏÏÑÒÓÓÓÓÓÔÕÖÖÕÖÖר××רØÖϲl:1Xyxqqruliigecaa`_\VVXUWWSNHEAD@@<7336./)+))$'$$%'+7Uu¢²¿ zfedcdeffighbccabb^\][YUWRTKJINVcnv¢¦«¬®¯°±²²³µ´µ·¸··ºµ±°¬¥£zod_YPMNNQWZ[Y\^djx~pnnnputswsdGPd;:JcaltOBVm:>OXRGV{w=17Gd{_D@Ql£©c:3Al R !'09.).Mj~scB@C57>?3@Oaoqy±À»YbbQ^t·u-(./.00.-/&(2:877188121/1223=@A=::A9=>>?>8+,35:===:=:@:830:BIHHC>;43331.1.899=HWahpu ¢ ¤¤£££¥¨§¥§©¬¬«¯«¬®±±±²´¶³²µ¸·¸»º»»¼¾ÀÁÂÃÄÆÈÉËÍËÌÐÐÏÎÏÏÐÐÑÑÒÒÓÓÔÔÔ×ÕÕÖÖÖ×Õ×ÙÚ×ÕË®w5Lnukijkl]_[]\XX\XZOQPPQNHJIA@BA<58742120.*0,+((&(*0D_y§¹ ocdfdfeeihdbbfb_^]]\Z\STSSNJGLT\hq{¤©«¬¯±²²²²´¶·¶¸µ··¶²µ¯§¤ wlc[SNNNTXZYXY\fhsvpikllnqrrrqhRbmI64MkvQdoPd_Z=D]]M@OxI0-8TjqWGHXt«¨bA2C {G' )841/=RkwnhTG:,(0::M]fdix¡¨´Â¶wWh`Zbz Âp-%+.3110-,)&)./4;745444235778?DBA;<97<B@>;1,/24;@@:;;<?><357BGCGHJ@<7244::?:=I\glowz|y~ ¡¡ ¢¢££¡¤¥¥¤¥¨«©¨ªª¬®¯±±³´²²·¼·º¹·º¼»½ÀÁÃÃÃÄÆÉÊÌÊÉÌÏÏÎÎÏÏÏÐÑÑÒÖÓÔÓÔÕÕÕÕÕÕÕÔÔ×ÙÖ×ÕαzT`yvd`]]g^URUVRQSPRQLJKJGFGA=A?@>:;:84210.+--+',)+17=Na° }bbdecdccedcbdb_][\\ZZVROPPJGINU_iw~£¥©«¯±°²²±´µµµµ¶·¶´³³¯«¥¢ |si]XRONQTTRWY]cgklfeklnopqpqqmm|N:86Otm>_`QKRH4He[K?Lz P1(/AZu~iUOTc|£¬cEB^zF,#"%)3=04E[c[X\L3%!,;Rejcfx ¶»Ã©o\g`Ydz§ºs*&)+2.100-,((--.462;336559<8587;?8;>:;==;<7-//37;=<78@???=627FEFGJGE::=;;:<<FShlotv{~|}}} ¡£ ¡¡££¤¦¦§ª««¨««ª®®²¯°±¶º¸¸¹¹»»º»½¿ÂÄÃÁÄÆÆÉÇÈÉÎÎÎÍÌÎÏÐÐÒÒÓÓÓÓÓÓÕÕÔÔÕÕÕÓÕ×ÖÖÖÓμ{iq~ubWSW^cOLNQNLIIJOLLJFFEICIGC@?B>;;99420--..**.307:EVo¦ pbadchdedbbfa]_ZZ\[ZZXRQRPLKGINV`nw £¦ª¬«®°±³´´µ¶¶···¶¶·²®§¦¡xj`YPOMNNPRW[^`dhkjhlmlkooqqot|K4164Pz~~`H\`VO\E;R^QA?G{ZA-,09\uve[]XngGSt qO.&'(/9=GJGW_ZSK:&&(.@Yaa_dr·ÀÀÀ]]j^[f®¼a//,-24541,)-.*.(/654//49=<A=><4288==::;A=>740/006<=;8:;A?B:32:DMEGFHGGD?E<@FR]fmny}~~{~~~}}}~ ¡ ¡ ¡¢£¤¥§§§¨§¨«¬¬¬¯²°¯²¶··¶¹¹½¼º¼½¾ÀÁÂÁÁÄÆÈÈÊËÍÏÎÍÍÎÐÏÎÐÑÐÑÒÒÒÓÔÕÔÔÕÕÔÕÖÖÕÖ×ÕÓ̱nxrfTLOQ[QEEIIFEKKLRNMHLKLJHIEDGIEA=<<8?<874//-/-27AKTi aciededcb_b^]_\[ZYZXVSTRSNMFFIS\itz¤§©ª«®±±²°²´¶¶¶·¶··¶´°ª§¤ zmg^UNKMLRUXV\^cccjhikjilnooxqA(+59_yr^@c[U[bG=_]I@<Iu WK3.-0A`~m_`\fz{y¥m_kvO<2+/;AUSS[WLA>98;<CZegeks}©ÃÈÀ¾acmcZc µ°`-)/6555300),.),.3532//7:<<;:BB7699847;:>AB951/3438>8977>AA:729DGHJHGNRMHEBIM[ehmrz~zz}|z|{|}} ¡¡£ ¡¢¡¢£¥¤¤¦©©«««¬®®±®«±²´³³´·¼¼»»º¼¾¿ÀÀÂÄÅÇÇÈÉËÍÍÌÌÍÎÎÎÏÐÏÐÑÒÒÒÔÓÔÕÖÖÕÕÕÔÔÕÕÕÕÓ̹~leSJJKLLBBFFJLOQKUPOONTTNMLIJKHNHDHB>@<=>;65455=GIMUf| uecgfeb_^\\\_a\Z\]ZYUTVURNLIDIQXbkw ¤¨«®±³²±³´¶³µ¶¶µµ¶¶´®©¤¡vncXPKOOQTWY[\aaagfghijlkkrnJ..8Hrxp[JUa]ZdBHYMGD66mcH;9-,1Jgrg[TXrus¡rd{ zbHAAAIV^d_SH8.,09D^mt}µÉËŹWhnc_jµ¯J,+03763522/-*+,1763551/17:8788;:889:8;=9@B=8755:569:<836>D>8455;@MHFJSVSGHTS]gkqu||~z{||}}|¢ ¡¡¡£¥¥¢¥¤¨©©««ª®¯¯®¯±³³´²µ´¶º»º»»¼¾ÀÁÃÄÅÆÆÄÇÉËÍÌÌÍÍÍÎÏÑÐÑÑÒÑÒÕÓÔÔÕÕÓÓÔÕÔÕÕÖÖÖÕϾydXRL@>LOHGLNQNQRQTXRWQVUQONNQRLOOJGJHFCAA@<;>?>DJKOW^tfbfgdba]Y^^^__[\][[XUWZPOMJFEHS[gw~¤¦©¬¯°±±²´´´´·¶µ¶¶µ´®¬¦£sg[VQOLORYZ\]aaieggfhijjnpQ0/=IiylcK\gc_R@RVDKJ:7]dQ@F@2/CMqseb[]nwpjwm zjWKACTcqq[A7+'#&<c{£«¶»ÀÄÌÐȶ{Yej\ap½¢L(,1-35234321...06758440095479=:68;;:64:7;>>;@437887:E;8:;>@8856:=AHFCNSPMQUS[flquw~}}|}~|{}}}~ ¥£¤¡¤¦¦§ª®«ªª¬¯¯°±±±³³µº»¹»¼¼¾Á¿ÂÂÂÄÅÆÉÈÊÍËËÍÌËÍÎÎÎÐÑÐÑÒÒÑÔÔÔÔÓÓÓÔÕÕÖÕÔÖ×ØÑ½¡ |^RPMGHR]OIOQSSTQYUWXYXXYVTTUUTSRTMILMNHEDDBCDEFHQPPRXg| wbcc``a__^\Z\`\]_[[ZVXWSOLLIFDNU`mx¢¦©¬°±±±µ³´¶·¶¶¶·¶µ¯®ª¥ wl`YWNINRYWUYY[^`cedgkgm}¥y\@7>EEitk`QZimbQBSSFFHM8_jWHCX?.BFYtuk\I\uyd^ywt}{lYH>EWza:342%#=i«·ÅÉÍÍËÍÆ¯vQejX^{¤¿£C00227405968531/359861144<12556779=:976568559<9658967<:>@;:><:75:;5=BFKGEPXRT^gnsvx~~~|}~}~|}}~}~}| ¡£¢¡¦¥£¥§ªªª©ª«®®°±±³³µ¸¸¸¹º¼½À¿ÀÂÁÄÅÆÈÈÉÊÊËÌÌÌÍÎÎÎÏÏÏÐÑÑÐÒÓÔÔÔÔÓÓÔÔÕÕÔÕÖØ×Òà y`QNMPFS\XQSYXXWX^]^ZZ[Y[YZZXUW[YURRNOPLHIKLIHLNOUWVYWZmg\]\]_b^\_]]_`\[[ZZZZVYROMKIJHRYcr~¢¦¨«°¯±¶µ³³³·¶·´µµ´±¯§¡}tia[PKNPOUVX\\]^_cbfigt¡{x|iR?7<5RjaVL^rwiOHVXBD<DPtn]AA^X;49Ip~sXOWpiOV|ia| |vmZ:4Ezv:%/>*.Ot£®¿ÆÍÑÍβrVa`Ve¼J02734358778757236;88153055561033469;787469856877652316;;;;;A??84458?@CBFMMOV^ansvxz{|x{}|~|x}~{| ¡ ¡¡¡¢£¤£¦§¨ªªª¬¬¯°°±²±µ¶·¸¸¹¼¾¿¿¿¿ÀÂÅÇÈÇÇÇÈÊËÌÎÏÍÏÏÏÏÏÐÏÔÐÑÒÓÔÔÔÓÒÓÓÕÕÕÓÕ×ÙØÒ¤z_LIOSOMY^UY__\X\_[`_^_^^Y`a][YZZXUROSUPLKGQOLLQXZ[Z[Y]ex\^b^`a]\_`^^a`_^[ZZ\XWSQOIIICKT^kv}¦ªª¬®¯°³³¶²¶¶·¶µ´µ³±®¨£ xnd^VNLOORUXZbig``a`hh{q |ufS?39JbVJ@UqzsHMUH>4-6RoU><`lP928Wx{^VTnyiQGT|ce~y{oV>Au ?$"#'8\u{p{¨»½ÆÒÏÏÆ³~Ob_Xjµ:.4/..144<86;>82-.1573-.79221/13-+/477875:;;87428?6354568=A>@AA<335205>GINPPUZajqquzzyv{|}z|zx}|z~ ¡¡¢¦¦§¦¨¨¨ª«¬®°¯±²´¶¶¶¶»»½¾¿¾¿À¿ÄÄÅÆÆÆÉÊÉÌÍÎÐÐÎÍÍÏÎÎÑÐÑÒÔÓÔÔÔÖÔÔÕÕÔÔÕרÚÙÖÂmPGOSXTX_\^_^`_ab_cdddab`a__]TX[[WSRUWQQNNPQNTVW[^^\[]\ka`affb]`_aa_\f`[WWYZYXUPKJIGHKXamx¢¤§ªª¯°³´µµ´³µ¶´³´´µ±¦£|ri`YRKJRRU\^ky|d^^]gy np~ywuaG69EYZO4OnzuTOSGD2$/JzrN9;[k^I<4Actg]\iwiYIIfy\d y}}bGtN"$8Zkccr·¼ÀÉÒÒɹ`ge_q¶¸};/230+0679558E70-)+4785333351-1/-,.011684678>:516::<@875:AEAD=@>:82.003DDIPRSV_gqpruyxtz{{yzz}~}~|z ¡¦¦¦¦¦¦§¨ª«®¯¯««¯²²¶´´µ¹º»¿À¾¾ÀÀÀÄÅÅÅÅÆÈÉÊÊÊÍÎÍÌÍÎÏÎÏÒÒÒÓÔÓÒÓÕÕÕÕÔÔÓÖÕ×ÙÙÙÒ¾_MMRUTTb\_babdffdgffcbdca^``Y[[]]WUXYTRORRTRW\]\`\accfy^_cd_a`]`baabc`][U[[XYWWNMMFGIPZgt}¢¡¥§©®¯°°²±³²²´µ·µµ³³³¯©¥¡ ~ne[QNNRURXZom\\^jyoqrs}dL=CT\XXFUrvsTSOED6!%8nvR;9Qa\KIE?RqpefmuulbIFZt~{oo{z{q{ <! &'1Z|klt~³¾¿ÎÔÒɰ^jghy¦»°t0.21.2665<<:<:1.+++36:82034951/+-/00200029958;;637<>@9679@F=<::;;62///.4@KQTUW^flvvxyuw{|{{x|}|}}}y £¤¥£¥¨£¦¥¦©¬®¯®ª®²³´²³´¸ºº½¾½½¾¿ÁÃÃÄÄÄÅÅÈÇÈÈÊËÌÌÎÏÏÍÎÑÒÓÔÔÓÒÓÕÖÖÔÔÕÕÖÖØÚÛÚÙÔ¸XIKQVU^__gddgedegggmefeea`dYb^\]\ZZ][[VSTUTYW`egfggdi l`ab``h_^````_b^^ZZYXYSSOPOHDIJRalt} £¦©¬°±²³±²²µ´¶µ´µ¶³®ª¨¤tkbYOJKJNQUh~r^``qmljmxpK;FOS\]LYvtqa\SIC:'&4gvhF;OWQLL`FSurgjpn|ur\QNOevt{zto|wE*)#-^u~¤¶ÃËÕØÒȬ|^gis¯³£b1.2377328;<;8867./143;6/.26895.+,/01220137849<<969==;;9>:<::>;8;72210305:FNQTX\^gsvxyuuyvxzyz}z~|{z{¢¥¥¦¤§¤¤¤¤¦¬¬®®¬®²¯²±²³·¹¹¸½½¼½½¿ÁÁÃÄÃÅÇÇÆÈÉÉÉËÌÎÏÏÎÏÐÑÒÒÒÓÓÐÓÓÕÔÔÖ×Ö××ÙÚÚÚÙÓ¼ZHIQXY_^bgjheioiljkidgbcbb^``_\`][^a_WWWVV\`cgljlkhh |becabeb_`bdbaa`\[Y\YUSPOPMFCFGKWenz¤¥§©«®±¯´±²²²³µ´µ·¶³¯¯«¦ ~uf\RLIHNNO]wvheougmqx znK:EJHY\RbmkvigTOM;%$2ps_PPLTCHNgcZstbalmnjpgUSNYu{tknmu lN8/,?e§w¯ÂÔÝßÖÆ¦|_ih§Q3/86343385566<<524..0:9513346:600.-.-12/.13048:::89<<=>@=9:8;7:8655-17327>GHQUX\eloqrrttsuzyw|~~}|y{ ¡¢¤¡¤¥¤¦©««®±¯°¯°´·¸··ººº½À¾Â¿ÁÄÄÅÇÆÈÈÇÈÊËËÌÎÏÎÏÐÑÒÐÑÒÓÓÓÓÔØÔÕÖ×ØØØÙÚÙÚØÏ²PEOVX^_adjjgiiijlkkhihhdg```cbbb^```[ZVY^acgijmnlmj xccabdbaaa_baaa_\YZYWUSONKHHECJR]iv£§§ª¬±°°±³²³³³²¶¸´µ¯°¬¨¢ yk`WOMEIKKUg~ ~sty ~xlQ?KE=JZ[_hfwxn]RK7#'Au nSCXVZN@DZtZfmjZQbs_g]LHP_o|{~|spy ym\\e¡ x~©ÈÛáØÇ rbmq¦²?56733547745:95><62,*0198222124:42/,-/-//-.00/25853579;<><>946?B;8565640/55>FMOXX]fkmrrnqtttwz{~yw| £ ¡¢¥¦¥¦¨¬®®®¬®²µ·¶¸·¹¹»À¿¿¾ÀÅÂÄÆÅÆÈÇÅÈÊËÍÍÍÏÐÑÑÑÑÑÒÑÔÕÕÓÖÖÔÔÖ×רÙÙØÙÙØÑ´}YNQU[^bcgghkhiijkklnffdeb]^]baf_`abbbZ]aeegkmoqnnp~fdbbb``bc`acb`a]ZYZYVTRPPLICADLS]my¥¨¬¯°°±²´³±±´¸µ±³±¯®«££~rhYRJHLKFOTgx vxxtxzxvrkUHFFE=V^dbduz`PJ8%(EjK>FO[U?=JXX_eaODQlpne?=GSYclwusz~xuiyw} ÄÙ×Ãkcpw«¼¥|D01877569537789;;82/',07:9..03189941,,,.13.00220154159<;==;6536=??615:863048@LLQV[aghoposrtuuuw~}tu~ £¡ £¤¥¦¤¤¤§ªª«¬¬©«°³±µµ¶µ¶¹»¾À¿¾¾ÁÂÂÄÆÆÈÇÆÆÇÉÊËÍÎÏÑÑÐÑÒÒÑÔÕÔÓÓÕÕÓÕÖ×רÚרÙÙØÎ´VPSX\^`dadikihlklligggfg_`\]bca]beba_]`bggmsrpqpu | gebdbadba`acb`^[XYVTUURMKGD<9>HVco}£¦««®°°°°´²°´·´³´´±¯¬¦¢ynaVNIGJGJOWajw}zqnozjhlnqssmdKKE=>O\c[aweTME*'M{y`=2=DNQKDBIIRZYMIH^_srN6:G=8EQ_p~o_i|{kaSHZtw} z|½ÔÃ^hs §Ê}<25774551358:8508:72++068=4/../24;9501-.054550/03432588:<;;;<624:>7455588-136ALNQ]bfhmosurwvvw{}~tpv¢ ¡£¢¡£¤£¦¨¨¨©©¨¦ª®±¯²³²³³·ºº½¾¿ÁÁÂÀÁÃÅÇÅÇÇÇÈÉÉËÌÌÏÏÏÒÓÑÑÓÔÔÓÓÔÔÕÕÖÖÖ×ÙÙØØÚÚ×д\RUXZ]bceilkjkkklkjhjgedc`c``cabece`^bfjlotvrupp |¦ocefcefb`bche_]^ZYTTTTSOLGC:6:DKVgw£¥¨ª¬®°±°³²²´´³³³³±®ª§¡tl_OJHHLIKLUZbie^gw}oiklvtvpePHH56IU]S[uzbKE7*2ZqR706BMLMMFBBDSVFKISR^wlN;<3/38=OX\VZ^jt{wdQ@G]u|t}¦ÊÃZizªÆ£h=53300211159:7517=711+-48::20*.004:>61,-.126.+*/11451325887:?679979=953895/.04AELZcbcjsssstvx{{||xqqw ¢¢¤¥§©¥¦©ª§¥¨ª«²°±±³µ·¹¸¹»¿ÀÁÁÂÀÁÂÄÄÇÇÆÈÉÉËÌËÌÏÏÑÒÐÒÓÔÔÕÓÔÕÕÕÕÔÔÖ×ØÙØØØØÖй`UUW^[adfihijmoomjhihjfccb_bgeehccbdefmnprsrrrn ¢ª°bbcbefdbafjfb\\\XVRRSUOKE?;9;@GS_jz ¡¥ª«¯±±¯²²²´µ²¯°°°®®«©¤xm`UMGIIGIKOYZZ\bo~}mjkkostqiWOL@@EY_USggb`K7-"/\ygE4,0;CINKECE>HPRKEKEOdleXN<7.44<<BMc^[Zbj`F=AZw{u}¡ÅÄTp~«µÃQ:540--4342036<988<952-+/57<6.16361<<941/23232/.1/2331/148:89=??A77::;945880.038AKQW^cfjostuvx}~rpq|¡¡¡¢¥¤¢£¥¨¨¨¨¨«¬¯®®¯±µµ··¸¹½½¼ÀÁ¿¿ÁÃÅÆÃÆÇÈÉÊËËÉÏÐÐÐÐÐÒÒÒÓÓÓÔÔÔÔÔÔÕÖØØØØØØ×Öϳ[QRUV]`afikiklkkjfeehkhddbbgfgeeddeedkpurttrsr ¦µ·ub`cfdcfdfbde_YYXZUSQQMLEC@>=<EUWgsz ¢¨«¬±¯°±²³²±³®°°¯¯¯¬§¥~ufZRKEHOGLMQVZ]gw~vjilkqvwvl]VNLI=S]\VRKP]K7+%7d}`<--,5BEAAGLF?@IQQFFBEP^b\fcVGA?738FacPAE[L95F]} |v©ÈÉ_p§ÀÆL501/6:5310,-16::89>7/,*,37:;/11242-338952/./342.+.464317788;>=>;7899>6598841029=GPR[\enpsutvy~}tlq} ¡¡ £¤¥¨¨©©¦©¬¬«¬¯°´¶¶¸¹ºº¹½¿À¿ÁÂÄÄÃÄÆÉÊÊËËÌÎÐÐÏÐÎÐÑÒÒÓÓÒÓÓÔÔÔÕÕÖØØ×רר×д `OQTY]_ccdfegiijgefhihgdcdfhihhdbfghmnttuwyut §ª°µº£dfffdfigdcbfb^]XWSTRSNLHDA>=<BIP\jv£¦©¬¯°°°®±³±¯°°°²¯¯®¬§¥ {m_VPHIHHLPQU\bs~|lejjosuxv{\WNTTGF]\SODGPI=.$Av}_A62323<ECASN@=@CFJMCAEOURW`nn_QEBAGeuTC?EIE9Vf}ztµÐÊ^v¤¥ÁÉ 81-037410/0.2559<55<81+'*27<>5011264478860-/21364.-./33014448;;=:99:9=;=:48621229DQOZ^bhmrrqtwy}~{rlv ¢¤§§§©¨¨§¬¬««¬¯±¶¶´¶¸¹º¸¼½¿¿ÁÁÀÅÄÄÆÇÈÉÉËÌÌÎÏÏÏÏÐÐÑÒÔÓÒÒÔÔÔÓÓÔÖר×ÖØØÙÙ×ϸUONTZ[X^]dddfgkhbefeghhfcfikjgfhhjkprswxyxss~¢ª±´¹»¾jhggfmigb_b`]\VSSRRRQOGE@><;<CNWcr~¤©«¬±°°±²²®¯°²®°²®¨¥¢¡uf]SMIJNKPPT\mwifiilpwzzdRFW]N@V\USO@JA<2,J~YB60//09II;CPRF@C:CGDEGMPIGIZjopkc][p}iA6=BQO^v}~ {r±ÍÊ¥x±ÌÇv7.2344.-020/.425=<84861/,.3:G<3./2693948741-/13520/,13023530379;<>=8;;B@967<86305:FSSY\hlpqrrvv}{xot~¢ £¤¤¥¤¦¨¨«¬ª¬«®°²³´²·¸¹¸»¼¾¾ÀÀ¿ÄÄÃÅÄÄÆÊÌÌÌÍÌÏÏÎÐÐÑÑÐÑÓÒÓÔÔÓÓÔÖÖÖ×ÖÖ×ØÙØ×Ì®]MQTVX]]bacfceeddgfikihhglplokfgjnossttwwrr ~ ¤ª´¶¹¼¾¬hgffcfjha`b^\ZXXTRQQQMICAA;:<?GSboy~£¥¨©ª®°¯¯±®¬¯¯°±°¯¨¥¢ymdVQJJIIJOUdx ocfefimrttngPE\cWCF[\WUJID;7+SvQ<9-../0@J@7@YWOJHB<=FHNNJDBCLRamnxv{SJJ=Faav~ {oz¹¿º°¤Â¹i4-520253.1310628AF?;:85-..47AB8..2460368875/-/11105-131386401459?>A6:?GE>:5>974445=TORUbprsttvvwxvp{~ ¡ ¡¥¥¦§¥¤¦§¦§©«¬¬®±°²···µ¸º¼¿¿¿ÁÁÀÃÃÃÅÈÊÊÌÍÌÍÎÎÏÏÐÑÐÐÒÑÑÓÔÓÔÔÔÔÕÖÕÖÖØØ××Õδ]QQTV[^c_cddebdafhihkjlhlllnnmjloqsuusyvrt¢©®²µ¸ºº½½gfdcehc`___\\VTQONQPNOFC>:;;:BKZiq{¢¦¨©ª®®¯°«¯°±±³®¨§¤ si[VRJEEGPYnwcabcceilmqnl^NQbV@<LZ\WSED@@@^uK;5,38148GD;5AT[NLFA?EJNOLNEB@AGOT]mfdhPDaqz~qp«¾Çª® È£Q6311-35556344,,3EM>:99:/.-256E=40232/0/37785-)012001/+2984460+3:?=<98?JKEC=9772983:JTQV[lrstwwusrps~~ ¡¢¦¨¦¥§§¦¥¨ªª«¬®¯³¶¶¶·¶·¼¼¼ÀÀ¾ÀÁÀÁÄÆÉÉÊÊËÌÎÏÍÎÏÐÐÐÐÑÑÓÔÕÔÒÔÔÕÖÖÕÕ××ÖØ×ÕË´_MQTWZ\_b``eddddagekhhjioommmlossywvwzvsu¡©¯³··¸»»¼»±eeggcccbb\\YVRSSOPRPMLG@>@=:8<ER]jw¡¤§««ª¬®®®«©«¯²²°±¯®©¥¢ yod\PIECFO]ti]_adbeiknmnpkQS[J78>P\SLCCHGUljC78/1;416AF=57@RVSMOPOMQUMGIFD@=?HQ]ntgP]onh^mtny¶Ë¿¡ª±ÉI20+,.35:9:1/2/04=H?;<=91/,-.3@C:43.230-/465130.10.0223343/43116999<<=@DEHNJ?<747752;RSOR_qxs}|vuplt ¢¡¢¤¦¦£¨¨¥¦©ªª«¬®®²´³µ¶¸¶»¼»½½¾ÀÀÀÁÃÅÇÈÈÉÉËÍÏÏÎÌÏÏÏÏÏÏÒÓÒÓÓÓÔÔÔÕÔÔÔÕÖØØØÕϳ_MQPW`_`_acbb_b`bdeijljkmpmlrntuwwwzywvv ¤®´¶¹º»¹¼¼»¼fggcbcc`^\XUWRPPPQNHLIID@<969AJVbp|¡¥¨ª««®«ª«®³³°°¯¯««¦¤wocVLFEFSkj`]^_dhghholptrbX[:2-.@RVQB>MOcwx\4?D53<?9:>LD@EJJK\[ZXZZXTNMOKOKCFRQ\dYG:CSgmcextv®Ë¿®¯×H1**/0456311034006<>=@?>40.+-6<J>400362.-1236540--.1017342/112379669;??:AIOOJA55723-/=MNLVkxwy}urnkw ¡¢¢£¥¦¥¥¤£¦¨©¬«¬®®®²²´´¶¸º¼¼»¼¾¿¾¿ÀÃÅÇÉÉÉÉÊËÐÎÌÌÎÎÎÏÐÎÐÑÐÐÑÓÓÔÔÔÔÒÐÒÕÖ×××Ö̶VQPRUX\`\^_`a`ccddeilkmmojmootywvvywxxx ¤ª±µ·º»¼ºº»»¹¸kdeecb`][\]XVRTSNLPLLKFE?>::8:ALXiv|¤¦§ªª¯®¬ª«¬¯¯¯°±¯¬«¨£ {ti\RKFNbvyo[YY[_bgefhlntwre[S8*)&0KVTNHJ\u{hJ6<HO4GFACDEADO\ZRSX`fdbcaZZWS^\Z[^^_^T<9:DR\\Vf£}x§Åɱ¿ÇN40.13243013.351009A>;>?913//29GJ801-220115297751053.0552/2/0-488:7379<;>CLOON>982//0,<IOSevxv|vmkty ¡¢£¢¦¦¤£¢¦§§¨¯®®±²¯²··µ¸»¼»¼½¾¿ÀÃÄÅÆÇÇÆÆÉËËÌÌÎÍÏÐÐÐÑÒÑÏÏÒÓÔÕÖÔÑÐÓÕ×ÖÙ××Õ̬WJNQSYYY[][aacaaadfiknnmnonqpsxzxzvux| £ª¯³¶¹»¼¼¼¼¹»¼¼dddbb[ZZZXYVURRRQMKJHFHD@<:99<BO`ny¢¥«¬¯°ª«««®¯¯°²®ª¥¢ ~yraTOL\vvdYVS\Z]_bcfmlnytsodYB+*'-;N^U?Hf~tL610SZFKMCDLE=>KZhkWR\fgedfhlgckjkim`X^[F;@9CQX]eo¬~w{Âη®¼ÄÄxD50//2281.451134526;>:AIA751/-5?T@42214.,-.1565479610000211,--15787658>?88DNRUVC<5..,,1AQL\luwt{hhz ¡¡¢¥ ¦¤¢£¤¤¤§¤©¬¬¬®²°´´´¶º½»¹º½¾¾ÃÂÄÄÆÇÇÉÇÊËËÌÍÍÏÏÐÐÑÑÑÐÐÓÓÔÔÔÔÔÒÑÓÖÖ×ÖÖÖÓË®x[OOUVXWXY^^\b__acefjnmonmnpswwvwyvuwz¡©°µ¸¹»½¿¾¾½¼»¼¼½rgcba\ZYXZWTTUTRUNJKLHFFF>:;9:CHYfu¡§©©«¬«¬«««ª¯¯°±°®¨¤£ |xh\WVae`TNSU[[\`befikryxtvsr]?+*.6GXP@Ots4+*.7>ATO>AIKB@NFZrm`W_di_bjkdcjncfbWQX]J<LIJPfklZg~jzr©ÊÒĽ˻q:013/10/124520433149??DJI8.+(),6DE63/-//11200/225::233/-03/.-013442625=A>;;LUYaUJ?31/0-8FJO\mxrxmmy| ¡¢£¢¡¢¤¥¥¨¬«ª«¬««°®³´·»»º»½½½ÀÁÂÂÇÇÇÇÇÉËËËÌÌÎÎÍÍÏÐÏÑÐÑÑÑÔÓÓÕÓÒÒÔר×××ÕÒǬUMPRVTTV][Z__a``ehhjknkjliqwutwwtxvx ¨¯´·º¼¼½¾¾½½½»¼½½ec_^]ZYXYRRTUUSRPMLNGECC=:99=>CP\ju¢¥¦ª¬®«¬©««¬®¯°°¯®®«ª§¢xpj``eXMLLPWWXZ^bcefhtxsqu|R;138<LSC\|n='.4949JF<=>VLA>@If}xfeija[_e^Z\_fb\RQY^TKQR\YwzymbcV} icukpºÕÔÆÌ³W6652/,.154320/420.39?BCJN:-*(*-.BF<20001321./..537964311/31/.0142549=;<@EA<ITY^a`P@853-/:NPY_irjrly{~ ¡¢ £¦§¨©ª¨«©««¬°±´ºº·¹º¼¾¾ÀÀÂÆÅÄÄÆÆÇÉËËËÌËÌÏÎÍÎÏÐÐÐÒÔÒÔÕÓÓÒÓÕ×ÖÖÖÖÕÕÌ®{XKOQQTTYYX[^cbcfhhiiphgjnpuvuwxutv{ £«²¶¸»¾½½¼½¼¾½¼¼¼¼¾ye`]^\\WYUUWTPPNPLKIFFBC?C>9:7CIRao|¡¤¥ª¬¬¬¬¬«®¯¯°±³²²®«¨£ }vpeeaRFLLOQT[\`dbbdhotsqufL8/:;HPMa{uB*,5827EB9::EJBE??[x|xjgd]`b`^dekjgb^\aZ^m_`u|zoPRy wUeyyx´×ÞÌÏH44<1-.226:82/0///198<ABIOG511,),7@F2..023553.0../675543643363100.358>@9>FD>DSY`ff_Q>8.,,/>NRW`mcowxz~~ ¢¥¥§¦©©©ª©ª«¯®¯³¶·¸¶¹¹¼»¼½¿ÂÃÃÂÄÅÅÈÈÊÉËÌÍÏÏÎÐÎÐÒÒÓÓÓÑÔÔÔÓÓÔÕ×ÖÖÕÔÔÒȬtOKPSPPTQX[\_bbfiijjmjikoktssttqsx} ¤ª¯´¸¹»¾¿¼¼¼½¾½¼½¾½¾¤ca]\XZXXWUSRROSWMLJHIHCB@:976>DKYkw ¢¥©ª¬®¬¯®±°¯¯¯±´²³¯¬«§¡}ukh`PJHHPST[\\_`^beinmnyjV@4;=@OL`uvR0+6:1;MF?:748;::@Qpvfbab_`dijltuursobd|U~svf;f~xjoz±ËÖÑÅ928B8./523=<762/-03778>GFNN=2.'(*2FP@/-0-5762/10/+02:96762614222372238??9?@>DNVbhhg^N@/+/*/GRT\een|vx~~x}¢£¥¥¤¦§ª¨©ª«¬¬²´³·¸¹»»¼»¼½ÀÂÂÄÅÅÄÇÆÇÊÌÌËÎÎÎÐÎÏÑÐÑÑÒÒÓÔÔÓÓÓÔÕÖÕÔÔÕÓÒÆ¤yTHQLQUXZ[Z^`cgfdagjdejjkqrptrmqw} ¨®´¸»¾½¾¾¼¼½½½½»½¼»½¾}^[Z[^`\WTSPMMOTPPLJKIDB><:66=BFQboy ¤§ª§«¬¬¬®°¯®®°±²³³°®¬©¢{sk_RJHJPRUXYZ^a`_cfehp}g]NCJ@>JTep{{_=1583<JEA:7664388Fc ymXNTUWcglejjpx}~ymvucurdXjpdR[z om}y£´¿ÆI.9U;3054489611433366=DHGJRH7.%'*/ATW3341499400,.+,39;6;88@>23445520/1:F<AB==LT`fijd]P=-/+-;LMScepxuu|| ¡¢¤£¤¦¦¨§¨¨¬«¬©«¯±²´··ºº¹¹¹¼ÀÀÂÄÃÄÅÅÆÆÊÊÊÊÌÍÎÎÎÎÐÐÐÐÑÒÓÓÔÔÓÒÒÕÖÖÕÖÖÖ×ÓʨrUMKJPSVWY]\be[V_ghcchgimnqsqst|~ ¥¬²·º¼¾À¾¾½½½¼¼½¼¼¼¼¾¿«ZX[\df^VTSOMNMOPNJGJIFC>>>7669@KZjv~¡¦©«¬¬®¯°¯¯¯±°¯°³³²°«««¡znaUNKHIOOTZ[Z^`^cdghrwlfS?6?=D^lowx_=.7=3;?AB?3:720779Mvy^H=@IQV[VOFJSftu~v~qnkd\LLe}o[tdit¡½°U3>WB231/5423553720339CMQDTO>0)&(&7LQC683.473-.121,.26888:KE;8455422226AL>DA9ES^gntiiaM9/-(,EJMYgitps|}~} ¡¡¢ ¢£¤¥¦§©¨¨«©ªªª®¯±²³µ¶¶¶¶º¼¿ÀÁÂÃÄÆÅÅÆÈÉÈËÌÍÍÍÍÎÏÏÑÑÑÑÓÔÔÓÒÑÒÔÔÕ×Ö×ÖÖÕÑãvPHHMNQRWXQ\Z\ccch`cgghjkqoksz}¢ª±¶º¼¿¿À¿¿¾½½¼¼½½½½½¾¿ÀZ]\^`XXUQONJJLNOJGHBAD=>;63329DTdpz ¤©¬©ª®¯¯°¯®®®¯°±±²²®ª¤}sdWRIGJNQTVXZZ_]adhjttwp^B7B=Gciepj]E03<<5:>AB><983986>` mO>7;HRRQQE;=JSLZpz}~nZC7DdpETpqfo¶¾z?D_A251-0048331542333@MNGKSD0/*,.3@DR=>3.1850-+12-)-6=847>CG>8744335369LGFD@@L\eqwskf]I7/((0>H\fhqttty£¢ ¡¤£¦§«¨¨©©§©©®°°°¯³´³¶·º¼½¾À¿ÁÁÄÇÄÅÇÊÈÊÊÊËËÍÎÏÌÎÑÑÐÓÓÒÓÓÒÓÓÕÔÖÔÕÕÖÔÓÔÅnNDDKTQVUU[_cfddedabeimjhigj}¤Ì ¥¯¶¹¼¾ÀÀ¿¿¿¿¿½»¼½¾¼½¾¾¿Áµ[YXWWZ[UPLNKIIKJFFHEFCC>876557CN_gu} £¥¨©©©®¬®®¯¯¯²°²³´±©¦£xj]WOIGJORUV]ZZ]_bhfupuwcF?A@Ja_Som]K869A9;?CML?:C?<;::@¦v]D4,<QQV[ZC:<@<>CRk||jB7?^zxW@V{hl|¬=@P?554205521227823348DNFKTK;41,206>OM:30.551.,.0.*+187757>?;:985847459EXHGC?DR_ku|rldWD/(''6BP^fkxyw| ¢¢¤¦§¨¨§¨¨¨ª¬±°°®±³¶¸¹¹·º¼¾¿ÀÀÃÂÂÄÅÆÇÈÈÈÊËÍÍËÌÍÏÒÐÐÐÐÓÓÓÓÓÔÔÔÓÕÔÖÔÔÕÐÀ_IBIRQQTX_fedd`bd]\aeikgii·ÃÉ¥¬³º½¾ÀÀÀ¿¿¿¿¾½¼¼»¼¿¿¾¾ÁÁÂVVSTTVTQMOMLJIHGFCDDCC><<522/>GT]ky ¢¥¨¬¬®®®¯¯®¯²°±±±±°¬§¢{qh^RKIIMQUWYZ\a`abdsylvymW7=CQUEF`ufbK809C;;BKO@3?SK=938c¬oUD<7<LP_m]MCD@F4Dk{oow|t_PTcxkCB[fb}pRhO>@F69844115312267311309GHJOQ>4/,+.1:KY@5/./520.-03-+,02987;>9<71/33467:?RKDCB<L^ntxtokhT>1*'+@J]bdrywv ¡¤¥¥¦¦¦§§§¨ª¬°²®±²³¶³´¶º½½¾ÀÀÁÀÀÂÃÅÄÆÇÇÉÉÉÍÌÌÍÎÎÏÑÏÎÒÓÓÓÒÓÒÓÓÕÕÕÖÕÖÓνgFEMOQQUYZUWYZ^^ZZcabih{¤´ÀÅ ¡¨±¶º¾ÀÁÁÁ¿¾¿¾¼»º»º½Á¿¾¿ÀÁÄ¿_WTVQONNLMLLKIGHIEDABE@=<32014>JRcv~¢¦¨ª¬¯®®®¯¯®°®²±³²°®©¨¦¡ xm`UPMILLTSW^^__`^dutkvvb@9HVL36`sxuZ=27>;:=ELI44OXO;53<¬ ysiR:9ITfut_FBBLHMnrVYq~{~~^et}\/=YTqpRF67AB7777014701302211/,18>IJTSF82/*++4GTM6./,430/,.3.0/24797:?=>:2-2045878:DDBG@L]ip{wsph[K3(&'3DWbbqwvy ¢£££¤¤§¨§©©ª°²¯®®²´µ±¶º»¼¼»¾À¾ÁÀÁÂÃÅÅÅÈÈÈÉÊÍÌÎÎÏÑÐÐÓÒÓÔÔÓÓÒÓÓÒÕÕÔÓÓÒο_NFJMOSTUSX[\YVW\__au¬ºÂ ¥®·º½¿ÁÁÀÀ¿¾¾¾¼»¼»»¾¿¿¾ÁÁÄÇÈSRTORNPNNKIJHEIIGDGEEA>:64/0.:@K\ky}¡¤§©¬ª¬¬®®¬¬®°²³³²««¨£}si[UNJNNPTWUX[]__g|pgs}lO6ITC.-LoeyjRA=<AE3@JJ;5>KaN919cªyyw`LLUfwwoUDKQ\cscRR^tsv~vpp wD?FKOqpV?8>@5403//--054212142114;CIRYN;82**./:TZE3-,-5:631540018349>?C>A65448>;426=EF?@DRfqwyxsjcS8..).>N]Zeotx} ¡¢¢££¤¢¤¦§©®±°«¯²´³´··¶¹¸¼¾¾¿¿À¿ÃÅÄÄÅÇÈÇÊÍËÌÌÏÎÏÐÓÑÒÕÔÒÒÒÔÒÑÔÔÔÕÔÔÓ̹_AFMHNPSW[[^[XY]`k¢³À ¡«´¹½¿ÁÂÁÁÀ¾½¿¿½¼½¼½¾¿ÀÀÂÄÅÉÉÈbRUQNONJPIHKLMKKIEEBA@B@9424117BVbq{£¥¨ª««®¬«¯¯¯°±³±¯¯®©£wm`ZQKJMKQWUVX]^cg~oko~u\CAG=+(JcJKVQD:<JPF<ISC74=O_U4-D¥{onocbls|mQV\hxvTHUZZ^m~~qfz u\ZWQ^skSFI@510-+(+.130--(../345<ADKZRB3*,+035FVT73/058965140-.11.3<;?AB@67?;630.17GH?=@P_jstwwoe[S51*08CU[Zfox ¡ ¡¡££¥¤¥§¨¬¯¬«ª®¯®±·¶···¹»¾¾¾¾½ÀÂÁÃÅÆÇÇÈÊÉËËËÍÏÎÎÎÒÕÓÒÒÒÑÐÐÒÒÓÓ×ÕÔÓѺ_LLNMTUXZ[][ZYdªµ §²º½¿ÃÄÃÂÀ¿¾¿¿¿¾¼½¼½¾¿ÂÃÃÆÅÈÊÉVSPLMLIHHHJJIKOJDGDA@B<:852,*09GXit|¢¤¦«®¬«¬®¬®®¯±±²±±°®«§¢}si^TOJIHMRQSU\[\h~tkgkz}scJ;@8++@Z?):A:2=JF=7=ORA8:;XeM=Ht§tm[iqcnv|wg]apvPGTZSPS}rae}odmeWegZ[aN:1/(,.030))*-+-/0.58=BCFNSC7/.*++.9NR=541/76363220,,5614:>DBH<8:8101+,0?HD95K\irusrulc]H91(-;Q[_dnsx ¢¤¤¥¨§¨ª¨©««®°µ·³µµ¸¸º½½½¾½¿ÁÂÄÆÇÇÇÊÉÉÌÌÍÍÌÍÍÐÒÓÒÑÑÑÏÐÑÏÍÏÕÕÔÔÔ̶YHIKQUTXX\[^}§ £®·½¿ÂÄÄÃÃÂÀ¿¿¾¾¾½¾¾½¿ÀÀÃÄÆÇÈÊËÊnQPQOIMGJKLJLKNHHIDC@B=?:83.-01CP`mz~ £¦©¬«¬«ª®¯¯¯°²²³³±®«¦ |reYPLKLNOMVVTXXjrffhrvlWH9-*)9WA-*,.7<>84/5F_K>98CTfT>f¢¡~l_D\u{stztfcn~rWIMSJIM^}kgr[Qe_PQXdk{oZJ936360*('(+./.1/27=CB@HPNB3-/*&)2CQI;71266547-32/16434;>ABE?277/-.*)05AB87CWfsrmpuj`aYB9,.5I`]`lpt| ¡¡£¤¥¥¨ª©¨¨¨©°±±±±³··¸ºº¼½¼ÀÁÁÂÃÅÆÆÇÈÈËÉÊÊÌÍÍÏÏÓÓÒÑÑÐÐÐÏÑÑÔÔÔÓÔÒ̲^NMX]Z^ZZx¦²º¿ÁÃÄÄÃÂÂÁ¿À¿¾¿¾¾»½¿ÀÁÄÅÇÈÉÉÊ˨QROOJLKJIKIJJIHGEC@>A><763.-+-;IScuz£¦§¨ªª«¬¯¬®°°±³±µµ´±¬¨¢widTNLIKJLRWTVZmrjfelu}zeE64..@ZJ.&()6=462,.?Y[GB>5;[`OZ¬uiFCUmz rhjkrl`XVTLIHKhuxyfXPDJdrr|wSEC@;4*)'').012/.5;<;;BKVK5/.*(&+:WYF:325>956575542269<<<@GA96401./*+/6>:;BUblmipoicfgS<//-:WZ^jmpy ¢¢¡¤©ª¨§§¦«®±°®®¯±²´·¸¹ºº¼À¿ÀÀ¿ÁÄÅÅÅÇÈÈÇÊÌËÍÍÏÐÒÒÐÐÐÐÐÐÑÓÓÑÓÒÓÓÒÍ·d]dib^u¢ª´»ÀÃÄÆÅÄÄÂÁÀÀÁ¾¿¿¾¾¾¾ÁÂÄÇÉÉÊËÌÊÊxPLLJILLJGGJNHIKMEBB@>=6211/+&0;M\ly¢¦§¨¨©«¬°¯°±µ´³¯°¦¢}oe[TMFGIKQXTT^oladehq sR;2,5AWF50-'37)./*+8XbCGLPCA][K «yR=<Qs }llqqgcdfaZSKJUnbLVu rjhc\L?2.,.//+-136674>GQO=3//)%'2HYJF;6569437:74414987:;<EI@3/36421,.3<::BS^^ljnhc`imaE50.5H\[hjpw| ¢ ¢¦§¥£¥¦¨ª®¯ª«®°²²µ·µ¸¹»½¼¿Á¿ÁÂÃÄÅÅÈÇÆÉËËÊÊÎÎÎÏÏÏÏÐÐÑÑÒÒÒÒÓÓÓÔÕÊ© plnu¦¯¶½ÀÃÄÆÅÅÃÂÁÁÀÀÀ¾¿¾¾¿ÀÁÃÅÉËÊËÌÌË̲KIKKNNIIIKLMKKMIFDE@@;53302-'+5BQdw}¦¦¨©ª¬®««®°®®¯³³³²°©¥wm`YMEGKMNPRW_ue_acem~^B;28KN<=7.+63((1)'9YcP<HfXHRWTiª´t[KFH^vkoxolknmlf][Zczw¡¦lv ¢§rgN?4,*+..01654<DJYC61,(&'-8SRI@83/=4243366475336<;BHC65;739=0+19;7:P[_hnnhadmriVB2'.EV^bjouy{}} ¡ ££££ £¤¥¨ª¨§ª«¯¯®°³¶¶·¸º»¹¼¿¾¿ÁÃÁÃÄÇÅÅÇÇÉÊÊËÍÎÎÎÍÎÐÐÑÑÑÑÑÓÔÓÔÕÔÒʤx ¨²¹¾ÂÄÄÆÅÃÄÂÁÁÂÁÁÀ¿¾¿ÀÁÅÅÆÊÌÌÌËËÌËÊ~MKLLFIKLONNKNLIGDCBB@86500.(%.;J]nx¡¤¥¨««¬ª¬¬«®¯°°°±²±¯¬¨¢zqh_UJFFMPSSS]{za^^aepjQ<47OF8><3.93)&.+'6Tg]::OXUPVS^µ{uaRN`ztqsy}|zvvtrnjklszx¨¢ ¢¬¢§©§µ¯ x`A05.*)-/9=7;ELI94+-(+-5GYL?>61374057:852//845:>CD95;717=7,.5747BTamplcbksvsdP9,,9TV]emsxxz| ¢£¦¢¡¢¥§ª¥§§©®°®®±³³µ·ºººº¾¼¾¿ÀÀÃÄÃÂÂÄÆÈÉÉÉÊÌÌÍÌÍÎÐÐÐÑÒÐÏÔÓÓÓÓÓ϶ ¤¶»¿ÃÄÄÅÆÆÃÁÂÁÃÁÀÀÀÂÀ¿ÂÅÅÇÊËÎÍËËÌÊÊ»JLKLKJKJLMQKHGGFIHCC?<862/,,(*5GVhs}¢¦§¨©¬«¬««ª«¯°¯°±²³¯©¤vmaUOHEGMLQR^}w`[\ciuuZ@36HG;DLA:>5)'--(-FaaC/7<QRVYc¸zs`\wzp{~z{}|~vmmrxqq|}{slej¨±² ¢¤|dN7,)./7738BHN;3/,,,+2<TTG@8249638:;83-+-2125;?A:6769735+,/445DVcnpg``q|ysk\F,+2MT\clnz{|~ ¡ £¥¦¤¥§¨ª¦¦¨©ª¯®®¯²²³µ¸¸¹º¼½¼¼¾¾ÀÂÃÄÃÃÆÇÈÉÉÉÌÍÌÌÍÎÐÐÏÐÒÐÍÑÒÓÒÒÑ´ ¨°·½ÀÄÆÅÄÅÂÂÂÂÂÃÃÁÁÁÁÀÀÄÇÇÉÊËÌÍÌÌÉÊÉÊPQLHJMMLMMNIGGGIGBA>>7553.-*(2ES^ly¡¥¨§««¨©¨§ªª¬®°±²²´°¯ª§£}sg[RHDFJLOP^~saZZ`g}|eL93EF:EVZB<2&%*-++=^lM3227ALS]¥hq{xlam| pt{ }oiwswyXGNI?:Nb~¦ §ª¢`A-,/4635=EI?23,01.03=ZN@943596;64230-,23458;CA;138764.--467CWblmcadqzxwqfT;-0CV]^fmu|~ ¡¡¡£¤¢¥¦§ª§¦ª¬«®®±³´¶¸¹º¼º¼¼¼½¼½¿ÂÄÄÆÆÇÇÈÊÈËÌÌÍÍÍÍÏÎÐÐÑÑÏÐÓÓ·ª³»¾ÂÆÇÅÃÃÄÄÅÂÁÂÁÀÂÃÂÂÂÆÈÊËÍÌÌÍÌËÊÊÉÉÅ\PKKMLLJHHIHEGIGLGC>;9896..+)/>KYhv¢£¦§¨©©ª¨¨¨ª¬¬°±³´´³¯¬¨¦ xocVKDEGHKOa~r\X]]jnVF<@C>Bb{MB2'+1-/.=ZjZ?4-(-6<Ju¤¹ o^jjvrgjntwt vmrvz~x^B@?;-6@Lswt\Ms£¢tP;55535<EJ?7642-,/-2JRG=397?;66107++,24406BKNH513611135597?S^ff`eltyyxuo_L.-BQY\ahpy ¡¢¡¢¢¡¢¦¦§§¨©ª¬®°°°±´¹µ¸¹º»¼¼º¼¼»¾ÀÁÃÄÇÇÅÈÉÉËÉÌÍÍÌËÍÎÏÒÒÑÏϼ ¡ª´¼¿ÃÅÅÅÃÃÄÄÄÂÁÁÀÀÂÃÃÂÄÇÈËÌÌÌÌÍËÊÊÉÇÇÉPPNNKMLIHKJFGKJIIG@:>:785,+++7GWft¢¥¥§§¨©©¨©®¬¯¯²²³µ³²¯«©¤}vj^PIFHHKQ_mZVW[i}qaUGAD:;dlH7/140-.8Um\@30-,**2e¥{zcnrtvuyz{|yus{|mu yiZ]SK@6<Sq|xeG@Kbt|}Y73.58=?=?:4/-+)).;TIC;:;<C12.051-+.01.3=ENV;3040.6C93:7=NY]bairx||wuugR;01KY[\dks|~ ¡¡ ¢ ¢¤§¨¨ª¨«®°°°°°³·µµ¶¸¸¶ºº»¹º¹½ÀÁÃÆÅÄÆÌÅÈÇÈËÍÌËËÍÎÏÐÑÀ¥£¯¸¼¿ÂÅÅÄÃÂÃÄÄÂÂÂÁÁÂÂÂÃÆÇÉÌÍÍÌËÍÌÊÈÈÉÉÉÊbJNMLNOJHJLJKLPKEDA>>=?<=43005BTcr{ ¢¤¤§¨¦©©¬ª¬¬®¯®±²³³²±±«¥¢}piXKGIHHObl[UU[izvc_VF@=:ZvQ=/+04.*0PcR?:935/)4Pu²qoc]lnnnhnq{{}xz pZn}{~uiUF@Oj{`HDILV_¬fJ8445?>;50++,)-.3GQGB<<9=710/3620-*,/376DOC4/0.175/2::8MXYahmuv~zvvmXD2-CU[Zcirz||} ¡ ¡¢¥§§©©¨¬®°°°°±´´µ³´´³¶¸»¹»¹¼½¿ÃÄÅÃÄÇÆÈÈÉÉËËËËÌÍÏë ¤°¸½¿ÂÄÄÄÃÂÂÂÂÁÃÂÂÂÁÁÄÆÉÊËÌÍÎÎÍÌÌÉÈÈÊÊÊËMOPMRPLLKKJNLJIEC@CF@@>=;7505@N^ly ¢¢§¨¦§¨¨ªª«¬°±³·µ³´°¬¨¥¡xlaQLGDHQhiVSUYgzvtjb[?GLAYS4($/4,")Be]E@>=<40;>MshddUXUSGEGOX_glnnolwwjbhlt^hnhn¡yjjyo^Uctv´¢jXTJFP]`eY?549>;63.*-.+.6<\NB>;;9B324640**+32213=JD8/.-/25,-578EVTanqux{{zxyraH4.2RZ[djrz{~} ¡¡¡£¦¤¥¨§©ª®°¯°°²²±±²´·º¹º¹¹º½ÀÀÂÃÄÄÆÇÈÊÉÉÊÉÊËÆ §²º¾ÀÂÃÄÁÁÂÂÁÁÀÃÂÁÂÁÂÄÆÈËÍÎÏÏÏÏÎÍËÊÉÉÉÊËÎnOQRORJINPMMNIHHGHGDB?<;:9869@NZiv¢¢¢¥¦§¦§§¨ªª««°±±µ´²³±¯¬§£|oeVNIECTvdUPSZfvrtlf]GFOOMe@+-21.(%:W^N95@D966-7K¡v_deO9><:7=GSZZjng^kzkZXYeutloeSNYnwd]XUID\¹®xWDXL79JdwcktM10<864/**03337JVC=956<;64452-++,33.6:BC=42,*.0/1:84?MTcptw}{~zzytiR;1.CT\dikxz ¡ ¢¢£¦§¨¦ª«¬¯®¬°²²´´µµ¶·»º¼»»½¿ÀÂÃÃÅÅÅÈÇÇÉÉDz ¡«´¹¿ÀÁÂÂÂÁÁÀÀÁÂÃÂÂÂÃÃÅÇÈÊÍÐÑÑÏÎÎÍÍËÉËËÊËÍ«PPPOPMLNNOJNLJIHFABC@@>B=89<ALWer} £¥§¨¦¨©«¬«©ª¬¬®¯²³²±³³°«¦£uj]SFBDW~_TQSZh~qjojcZC>?DGv{K)&.22.+4O[O=4:AB;723<b\glN7468;7>Ta_^gukcyvm]OKYgwoVLRs}}~xkRHDUu°³m``O3--=CK[nq«Y<444.**.134.1;[M?:95:B201341+,0411598C@51*)*-,0798>KWgsuy|{|yxvsiXC5.5R[aeku} ¡£¤§¥¥¦¦¨©®ª«°²³³´³³´·¹¹»½º½¾ÀÂÂÂÅÃÂÄÅÇÈ´ ¢«µº¾ÁÂÁÀÁÁÁÀÀÁÃÃÁÂÂÃÄÇÈÉËÎÐÐÐÑÏÍÌÎÌËÍÌËÍÎÍxPRPNOMMNONNKKJHIIDA@A<BAD@@BFRcny¡¢¤¦¥§¨©ª©©ª«¯®¯°²³²²°®ª¥~zqdXJEETx^POVXk}ofhjaW@885:i_5')02,%-ATZH35:@?;99;Csp`i[A71=@AAHZeYZjrrrwnVBK^y]WUfqlju| o[S\rzq¢eE<.)-26V`m ¥a962013,,.1*+4HX?;?69@>10-3/--.128566BF93,++--06<<>LZitxu}{|yxxwrgG903FXcido| ¢¥¦¢¥¨ª§¨©©©ª°±³³´³±²¶·¹º¹¹¼½ÀÁÀÁÂÂÁÁĸ¡ ¤®¸¼ÀÁÃÁÀÀÁÀÁÁÂÂÀÁÂÂÃÄÈÉËÌÏÑÑÑÑÑÏÍÌÍÍÍÍÍÎÎ͵SQNLMPONOOJIMLGKLECAA@>BD?EEIQ]ix| ¡¢¥¥¦¨©¨§¨©«¬®±µ²²°®¨¡vk`TLG_lWKMQVc{nhjkk`C3<47\yC---*($)9Q_O9-/4=>>@DL\zSccU=139FKIMQNKXbv}xfBC\zs_TTTdb_bis~wfcfpspfnJ4..+6JYS £k?380+-/,*'',6RJ>==4@D5//103/,1/53.7;I<960,.-16=<BNYlwyw|~}z{|{{qV=4-BT^aely ¥¤¡¥¦¤¥¨¦¬©¬¯°°±´¶±²´·¹º¸¸½½½¿ÀÁ·¥ §±¹½¿ÁÀÂÁÀÀÀÀÁÁÀÃÁÁÂÃÅÈÈÌÌÏÑÐÐÐÑÐÏÍÍÎÎÎÎÌÏÏÏQPQQQROOPLJPNKMKGEC@DDEDCEKMRXet|¡£¤¨©ª¨©¨©««®¯°°¯´·µ´²°¯ª¤{qeYPLffQLOPUa{xjfkpeO=537OsU8-./*#'0FYUC*),26:@INRqr`otS823@OULHDAISgvsLG]sfb^ZXVT^[cmppqljkq|z}znonQ8++5HWYj£ªrJ7/0/-&+($(0?T;CC4:D>15134/,+10--6:>B<?:3422668;NZivzz}|~{{z||xcH>5<P[gciw ¢¡¢¥¦£¥¦§©©©¬¯±°¯²²²³·¸»º¹»¾½¿¿¿Áº¨ ¥°¹¾ÀÃÂÃÂÁÁÁÀÀÀ¿ÁÂÁÄÅÅÈËÍÎÏÐÐÐÐÐÏÏÎÎÏÏÏÏÏÏÏÏÁSSUSSQMMWRMNKHJOHGFBHFEDHDHNRVanz ¢¢§¨¨ªª¨©««¯°°±µ´´²²¯«©¡}rm_TVvcNJPPS`vvielrnYD198D`[@232-)'+>V[N:+*035<CLTejvqU@76DRNMH@:A^_oz|lWNctUW^gmg```edlhrqpmsyjdhla[ry]@18fXJm¤M/.)'%*,%*(.ID=884GL:40324.)21.029?B<=<8?62569ANVhwz}~|{}zy|zwiUG44OS`biw ¡£¤¤¥¥§§¬©©¬®±°®±±´·º¹¸¹¼½¿¿»ª ©°¸½ÁÄÄÄÂÁÁÁÀÀ¿¿ÀÂÂÂÅÇÉÌÎÏÐÐÐÐÏÏÑÎÎÏÏÏÏÎÍÎÎÎÎUUVUSNMTPPKOMOPJHEDDBACHJJLTV_it} ££¦¦¥ª©©««««®°°±³³´³³²±¬¨¤ yreYd}YKIMOSb~qddlvqXB55;?Yv [;52/-+((5MaX?-.04844>N[}ysYE:<GWYOB:7?GQZ^cb]e}xCGEUdlqmstrqptoquwq^NT>46_©¬¤YG]iJ@W¢¯U/$$&'(%$$)9N?=;;DKE201/1,,374204;;3513::94=>=NTfsx{||~{~|yt\M96CP_eds} ¢¢£¦¦©ª«§©¬°°®¬¯²µ³µ¶¶·¸»¾««´¹¾ÃÅÄÃÂÂÁÀ¿½¾ÁÁÁÂÃÆÈËÌÍÎÐÏÏÐÎÎÏÎÎÎÎÏÏÎÍÎÍÍÍÉ^SVSPPMSNQLNMONLHHGC@AEHJHKRX_dnz¡¢£¤¥¨¨©§ª¬®¯®³³µ¶´±²²«¨¢uk`rqPGHKMQa|ibclvrY?.2:=Ogxf5760,)&)-D^]M9*)7@7/5BNkzpQB>E\aTG@666>BETpyn}wQKMSMTWdq||{xsuy sO?0+)2h¥µ´¢}]gD48aÀH/&%$%% $(1EJB8;=LN<0.164144010/;8442225=0ACBLQ]owz}|z~}}{weM@-ER_efm| ¢¢£¥¦¥¨«¦§ª«¬°°«¯±±´¶·¸¸¬¨µº¿ÃÄÃÂÂÂÁÁÀ¾ÀÁÁÁÃÅÈÉÌÍÎÎÏÏÏÐÎÍÎÎÎÎÏÏÐÑÏÏÎÎÍÍXWPOPNMNIKPKNLIFIFA@?CEDGKNS]bkv¢£¢¥§©©©«®°°°±´¶´²²°©¤xpm}gKFFIMO`ocegrqY=-148GPkc?4<4*(')+9NaS?0,38:/,)8Try fUOS`gVMI?9527;Nt ~rJOZa^WU`c`csv{|~[7+""4Nv¤«½ªpM/-4gµÅO(!" "#%')9PI77?LUN/,477452,1/.5664123330=IAJP^jsy{}{y~}iQE5>RZgikx ¡¢¢££¤§©§¥¥§©ª¬²¶¸ ©µ»¾ÁÃÃÁÀÀÀÀÁ¿ÁÀÀÀÃÆÉÊËÎÎÎÎÎÏÏÏÌÍÍÎÍÍÎÏÐÐÐÏÏÏÏÍmXWSOPNPKKMMMKIGKHECCFFCCDJQZbgs~¡¤¥§¨©«©¬«¬®®®³´³²±²°¬¥ ~vwYGBBEMRflbcfkkZ>6448CHU_E472,+(&%-=ZZL;,//<1,&*4P~xle[TQQQJ;0,+9RftiEHTdjb]djaUMb~dA)"&+GwV;2DyÐÎ|;#"#$&#&&1GN?25J`^E355:21-/1/21173//2.32<ECIQZgpw}|z{|}~q^K31MVbhjs} ¡£¤¤¦©¦¤¥§©¬©«¬¬®®¯¬«µ»¾ÂÃÄÃÿ¿ÀÁÁÁÀ¿ÀÅÇÉËÍÎÏÎÎÍÍÍÍÌÍÎÍÏÎÎÏÏÏÏÐÐÏÎÍ£SNRORLKMNMJKEJNKIICHGDA?AFKTX`nx£¤¦§¦ª«¬«§®®±²²³³²³²±«¥¡{tOC@CGLQegabjmiZCC@8?KJHZL:62/--)$*2G]TD2,,34.,(*6\}bIILSPC4)-;VXjb>ES\c^_irwfTR`x qL524CJzln´¡p@;Mʳr*#*''$#%)BQA52>RbP91595.26/.423530/2056;CFIMVblv|zz~zcR=4CV]diq| ¡¢¥¥¤¦£ ¢¦¨¨§©ª«¬®ª{¬·¾¿ÃÃÄÃÁÀÁ¿¿À¾ÀÁÂÄÈËÍÏÏÏÐÏÎÍÌËÊÍÏÍÎÎÎÏÏÏÐÐÎÎÎÏÍmOQPKOMMNNJHJNRKJJFGGE<=<@EMT^ho| ¤¦§©¬©ª¬¬¯°¯²±±²²³´³²«©¥}kO?@CHKMag\bimfQJIF;FTUPSZ<8;841/(/+;MOG<0&-441,%$4ysb[UMIA6+.;P[p cLX__aedemrsmb`twhTW]`nsVD\¦»« \E_·ÒªZ)'*(&"$&8IGE/7CVR?/177/9=5/./494.121425DGHNT^ku{~||~zhQD3:M[chqz ¢¢£¥¥¤¢¢¢¢¤¦§§¨¨ª© |®µ½¿ÂÃÂÂÂÁ¿¿ÀÀ¿ÁÁÃÄÇÊÌÐÐÐÑÐÏÍËÊÍÍËÌÏÏÏÐÑÐÏÎÏÎÎÏͬOMSQOMLPNNHNOPNMKHFFB<9<>DMS]bku}£§¨©ª«¬¬ª¯¯°²³³±³´¶´³¯«¨¤ eQCDEFIK[n__ch\TUOE@H[hYW\H96>7690-04>QFC6,,.649)+*Eu{}xbVE7*@Sf{OF_mvsrlhorqrmp }{ynZjzY;4X}ªº[RÆÍ@'#&(# #*HKN>4=KQJ415724@A6117>82521114BIFIR_ksz}z~|}}pVE49KX`dkw¡ £¤¤¢¡£¥¤£§¨©¨¢ ¶¼ÀÂÃÂÂÂÁ¿¿¿ÁÀÁÁÂÃÇÊÍÐÐÐÑÏÎÎËÊÌÌÌÍÎÏÏÐÑÑÐÏÐÏÎÍÍÒyNQTNJIOMJGHMOONKIGEC?:<@CGOV[bnvy £¥©©«¬¯®°²²±±´µ³²´°«¦£ ¡yfUHFBBBFUss`^_c\Y]TF@FXa]^^T?189;;2.0.5JIA?0((3321'&1U}vrun\Rbs O;FZhu|~wtwxwxu{rjwjOSwlB+16`}gT³ÔÄz:()# #&8QSQ*7GMJ?24:24=B>575=:7301121@GIOW]kr{|z|}yr_H57JX`epx~ ¡ ¢£¢£¢¦¥¤£¥¨¥¡ ¢¡¯¶½ÁÃÃÂÃÂÀ¿¿ÀÁÁÁÂÂÃÈËÎÐÐÏÐÎÍÍÌËËÍÌËÎÎÎÏÐÐÑÑÑÎÎÍÎηNMQOPONOKILOPQLDHIFB?<::?DJOT[eqw~¢¢£§¨ª¬«±²±±°°²µµµ·´³°ª§¦¥®«° yhZMJDCBFMch^Ya_Y]TIEFS]ZZaaJ20:<<984/4GHBB8-(-2-2+*+=iyvznmryy~j]sc=<:FIZkuxux}}}dgjUrG*%'->Z~qÂÒA& "#%'(5RUQ92AJC>768636?;5114<90/0,-1<GIPZ\enwzw}}}}ybL:8EV_box ¡¢¦¥¦¦¤¢¤¢ ¡¡ ¡¡¡ £¶½ÁÃÆÂÂÁÁ¿ÀÁÁÁÁÂÅÇÊÍÏÑÏÎÎÎÍÍÌÌËËËËÎÏÏÏÐÏÑÒÒÐÏÌÍÏÐMOSPQKGHKQOPKLIIIG@@=<>@CINMT]iu}¢¤¤§¬¬®®®±²³¯¯°¯µ¶µ¶´³±ª§¨©«§zm`UMC@?BJVqwi^df`WKDMEPOGPeuR51757@C?51ADA=?1(+/.--&&,Wzy}uilnrt|vmf_]QJT{gEEHEC>GTcksvv{|~tkq}xQ+%##(8_¦Ì¿t,#%()*+1CUOJ5?HB;??;<308<70.3;<50/0..;CENVYdkuzz}}}~~ykS;.?Q]`kw ¢¢¥¦¥¡ ¡¡¡¢¤¡ ¸½ÁÂÃÃÂÁÀ¿ÁÁÂÁÀÂÄÊÊÍÏÑÐÏÏÍÍÌÌËÌÌÍÎÏÐÑÐÑÑÑÒÑÏÎÍÎÏÐÄPKMOOJIJPQPONMLIIJBBAA>AELNPT\alx¡¥¤§«®®®®°°¯¯°±³µ´µ¶³²¯®«¦¥ zsjZRF@>BHO_ wljkmZJFKIJD6CayiF0-58;BEA>AN>8871+/0+.,*.Jt}~~ykZVYmlSAFCO^KOryDAORNJIGKSdqmmoqtx £}Z:(#!6Ix¤¬§½Ì¡9#!$'&%)3NPM@5@E9=@@91/4::3/3<;70/0019DHOUYcksy{{|~|vpZ@0:R_Yjx ¡ ¡¤£¡ ¡¡¢¡¢¢¢¡¡¡ ¡¸¾ÀÂÂÄÁÁÀÀÀÁÂÁÀÃÆÉËÌÏÏÏÏÏÍÍÍÍÌÎÎÍÎÏÏÐÑÐÐÑÑÐÏÎÎÎÏÐÒKOOPLNMKLLHHILHHGA=>E>=BGKKNV[ep}¡¢¤¨«®®¯°°°°³³²´´µ´±±¯©¤zpcUMC??BFSg{}vohge\HEDMB57R{u\D205;=>>>?H>31:2*,-+,20,=_rw}~|n`Z\SA6@HVcVV|vJ@GKOUWSNLV\^X^eju{££pS7.(#.@S|Á¯´Ä¬d)&!!$%0IULF39?86H@B5.2:=670@:62//529DGPVY_jrvy{x|~~}}|wn\E4:O\^hu ¡¡¡¡¤¢¢ £ ¡¢¢¡ £¯¸¼ÁÂÃÃÂÁÁÁ¿ÁÂÁÁÄÆÉËÍÏÏÏÏÏÍÍÌÍÎÏÎÎÏÐÐÐÑÑÐÐÑÐÎÎÎÍÎÑÑÐ\LLRRLFGNKJFHLLIC@A@A?=BEDFKRXal|¡¢§«®®®®¯²±±²³³µ³´¶·µ±¬¨¨£~un\SGA?BBIThtzxoebjaK9=LE4/Eowg[C/08>@A9;H<0031-*+2.//03@O[bmv} tqjf\YZ[\e^lW@9IOPV]`^VUVXUTX\iu~£©¬¤~hXG4%*:<Y¸·¸ºu4'($"&$ALI@81;<3?:<<816@7315685/0549FDMVZ_gmrw|v||}|{}yq[E38IX\hw ¡ ¡ ¡ £¢¡ ¢¯¸¼ÀÂÃÂÃÂÁÀ¿¿ÂÁÁÄÆÉËÌÏÏÎÎÎÍÌÍÍÎÐÐÏÐÐÐÑÑÓÑÐÑÒÎÍÏÏÐÑÐÒOQOLHEFHJHEFIIGDDDE<>=BEDFGRUZfs} ¢¥©ª®°¯®¯°±¯¯³²´´´µµ´¯¬©¥{sgZNG?FEFMWcorme_gfM78FC84:V|_`K923:@?7?G=1-473+,.005006AIGIOd|xx{|xrkctnC<:@?EP`bfea]VXRTSZh|xuy¦¬yWIG@:A?3;lµº¹°}A2G*!#"(1FJ=608>=5:9?@<;893/.2770-429GGOUZbihotz{z{}}{{{taH21EVZbs ¢ ¡¡¢£¢£¡ ¢¡¢¡¢ ¢¹¾ÁÃÄÂÂÁÂÁ¿ÂÂÁÁÄÆÊËÍÎÏÍÍÏÏÍÍÍÎÐÑÑÑÑÒÑÑÑÑÑÏÐÏÎÏÐÐÑÑÒÔhQNNHDEGJFFDCBCEGDA=???ABEINMU]ht£¥§©¬¯¯¯±²²¯±´³µ´³¶¶³°¯«§ {o_VJC>BCJNWchlg]fhQ@;:96+0Lk`QTF<6;=85>FB:06==0-*3363129E832;Vrsj{`NF::9;?JVahqk^`c\SRSp}unn{xr²qF3,3?VN2/N ¸º²xDTsZ+"%&'?JC813=>16;=CNK892-23563*.-8CHPTUajjmsvy~}|{{yzvcG73>QYao ¡ ¢¢£¤£¤¤££ ¡¡ ¡ ¡ ¢®¸½ÂÃÄÂÃÂÁÁÀÂÁÃÃÄÇÊÌÍÍÎÍÍÍÍÍÍÎÏÎÑÒÓÓÑÑÐÏÑÑÎÏÏÏÐÐÑÑÔÓÒ¦MLLIHFHJIHEABFDBC@?A???ADJMLSXbq~ ¢¥¦ª¬®¯¯°³±²´³´³³³¶´³°«§¡vi\RKFDAEMT[`nk`[XJ@769730?fWBJKD>:;<8;CB63:GL;309</9536:6(%$3AWjq~liolmroHLF<989;=CGTakskdb\XR_x~onlpy}nj¢{^5#%+C@009T¨¶Mi¢O+#&*6GJ8/3>E61?;IWM>;473<8:5,.28AIPSX`kimsvy{}}z{zzsdL;38KX_m~ ¡¡ ¡¡¤¢¡¤¢¢¡¡ ¡£¯·ºÂÄÄÃÃÂÃÂÁÂÁÁÁÄÆÉËÍÍÍÌÌÍÌÍÍÎÏÎÐÑÒÔÑÑÑÐÐÒÏÐÐÏÑÑÑÑÑÐÒÓnJIKFFGHFCDFDDCFFC@?A?>>?FIKPXany¤£¤¨¯²²±²±²µ³±²µ´²²®¬¥¡ zqd[SIC?ELRV^hhbbYA64573?<B]\F?A@@@A=79DA224DURD39:48@=:>H2$%.5<HUh_KBELiy}]?>CGE<?@?@@GNWhqsnkaXXqwsc^l{pl[9$$03**.Az¶¨Dv²µ5&-)3FJ:02<H81:AOY:<D8535616--,3?KNPVZgmpuwxy~{zz{xkN;38LW\l} uw}¡ ¢ ¡£¢ ¢£ ®¶»ÁÅÄÃÂÂÂÂÃÂÁ¿ÂÄÇÉÊËÌÍÌËËËÍÎÏÐÎÐÑÑÓÒÑÑÑÑÕÒÐÏÐÐÒÓÔÒÒÓÒ®FIMGGGGFHACEDCEFB@AB=9;=DHJPYbjs| ¡¤¨©®®±³±±²³´³³µ³µ·³¯¬©¦¢vkaXLD@EKRQWacdpf>42220:DN`cK?:78=DC?;H@4375Nf^LB<<>GB;CQD%# #&09ITXA79FeqS99:BJMFGFGJKHGN]jrui_Zd{{]Sd|{p}a4+**)'*4a©¤ez²¼8*3:1;K>406<;/7TcT78C>3373..+*,27BLSUZcmruwwyz{||wmT=06LV^kx ~kqtvx ¡ ¡ ¡ ¡£¡ ¢¢ ¡®·¾ÃÅÄÃÂÂÂÁÂÂÂÀÃÆÈËËËÍÍÍÌÌÍÎÎÏÎÎÐÑÓÓÓÒÒÐÐÒÑÑÑÒÐÐÑÓÔÒÒÓÔzJIIHGFEFECDAFGCCCCC?9<>DILOT\enx ¤§©«®±²²²²³³²°´µµ¶³°«¨¤¡{odYQHA?EMOU\edwhA41.,-0@JWYOH=215>B??LD7798?SmgQHA:CD>>^J+#$'$)5V\WF;=HedE99=>ATOLMKIQJ@EKQXjpg_\oznXXs {eP/(/--8_ª¥]1(@G.7EA510;FAQjgSBBLB;94-/-+,/18BLSRUajqtutz|~zyyxoT7-;LV^lx gfgnruw| ¡ ¡¢ ¢¤£¡¢¢¡ ¤¯¸¿ÃÅÅÄÃÂÂÀÂÂÂÂÃÈÈËÌÍÍÍÍÍÍÍÎÎÎÏÏÐÐÒÑÐÐÑÐÏÑÑÑÑÒÓÒÑÓÔÓÒÒÓºGHFHGGEAH?BEIFEFBEA?>==CINOSX`mw~ ¦¨ª¬®°±³²°±²±³¶´¹µ´²±¬©¤vl`UJC?CIPPW`bqfE:57-*+3;IQOXI:8:?@=GPE68879?dnc\K<IJEG_]9+,+''8]kT<:<Dbm7.3@?>JOHCFEPLBCLRBNbd__aqx^Rd}¦xqsYE:=EJj¢¬ mX7(*NK.1AK;9:Ngov|olgbfXA?6.1,,+13<ENTV\dkppstwxx~}{{xkQ0*8KU^kxvjfffkqtvx ¡¤¢ ¡¤ ¡ ¡ £®·¾ÃÆÆÅÃÁÁÁÃÀÀÂÄÆÉÌÌÍÍÍÎÎÎÎÎÏÎÎÏÏÏÑÐÑÑÑÑÑÒÒÑÐÑÓÑÒÓÓÓÒÒÓÓIHGBDA>B@BD@B?DCC@<<<==CLUWZWfpw~ £§©©¯±±³³±²²±³³³´´¶³³ª¦£yndWOHCDFKNRX_udG;DI0.)*.;HR\PCB@=<<CHE51678:PnofYOMKHIbsN312*';itT<66A^}I3.069EIC>>FJKFFFLE?ESOY\jm`TSds¢¢it}idip¢©R;+& /UJ+2FXYU\sn]jrpylLC<42.4,.3:CLQX^glnqttvxy}}}}ynS6+3HYdiv wpqohffgnqsxz}} ¡£ ¡¡¢¢ ¢¡ º¿ÂÅÆÄÄÃÃÁÁÁÁÃÆÈÉÌÌÍÍÎÎÏÏÏÎÎÎÍÎÏÎÑÑÑÑÑÑÑÒÒÒÑÔÔÐÒÒÑÑÒÒÓÓÆNLGB><><=AAA@?DCB@<>???@IXZ[^agpy £¤¦©°±³³±°±²³±³³´²³²¯«¦¥¢~vm]ULE@CGLNS_seMF`n:.**,-;J\XQGE<86:=B?57576BTbjd^SKMLbrV104,-HntQ1,+8cgE3*+27;A?GKHIILFCHA>BCHM[a\WNTf~tv¡z|XXt¡x=)##%9bU8Bdwvvu¤w=AGNEPTI9A61+,.-03=FLV[fnpqtuuvz~}{zwiP6'-AVelv~sqpprkgffhmouxyz}¡ £¢¢¢¢¥¦¡¢¡ ºÁÁÃÆÅÄÃÃÂÀÀÂÃÅÇÊÌÍÍÎÎÎÏÏÏÎÎÎÎÏÏÐÑÑÑÒÑÑÐÑÒÒÒÑÐÑÒÒÒÑÑÒÓÓÓCD@;<?=<@>;<=BB@>>><>BBFQVT^]als{¡£§ª¯¯±²²³±°±±°±³´¶²¯©¦¦¡|uhZMEBABFEJbzgXSs\.&(&'/=N^TIJA>98<EF123121?Tomh\MJM^pO66/)3Y|sG/('6^xaO=10/-7<BFMNR]QRPKLHKF@LTXXPKYqkz{ahP>e¦w?1-.9Kus`o`LceT>7>;:0<;8;<1+%+,/5=CKOUcknorssvyz|zvwhJ3+,9Rhlv xuurppqohggeelrrsuvz~ ¡¢£¢¢¢¡¢ ¢¦£¡ ¡ ª·¿ÁÃÄÃÂÂÂÀÁÂÂÄÆÈÉÌÎÎÎÎÏÏÎÏÏÍÍÎÎÎÐÑÏÐÐÐÐÐÑÒÓÔÑÏÑÑÑÒÓÔÔÓÓÓÒVHC=;;;8?=99>BDB>??><<DHNSRX\`enz¡¥«¬®±®°±°±±¯°°±±³³±°¬§£¢}p_RLC<>CCKg}w^av¢n?.)(((-@]_ZOFEA44@?5-.-407D\uvkNHL`eK?K/)9flD, $5Ppplp`TG</.1;?GS\a]]]bfhd[IANRXSOXhy qs q==b|tUq°°¥|`Xa^es }oQ>9@HC75=;3-3431:5/,,(.6<GLLTcjmquttvvv|vw{jM1()@Qakx wyywutqppqjhggcfljnrtxz¡¢¢£¢¢¤ £¦£¡ ¡ ©´½ÁÄÄÂÃÂÁÀÃÃÃÄÅÈËÍÎÎÍÍÏÎÎÏÏÍÌÍÏÏÐÐÏÏÐÐÑÑÑÒÓÓÓÑÒÒÑÒÓÓÓÔÔÒÓED;<;88:::9?BB@@?=<;:DEHNSWZ^^fqy¡©ª°®¯°²¯³°±±²²´²´³¯ª¨¤¡|seWMC:>@BRvb`vO0-92)(3G`ZWLC5.-8>5'')/369Boz\DKXWGMO63Mp`?.$&.=QeX]ilgaYJ>599;GXldcfmrsnm[MPS[WLS_lrreQGX}z³¹¨vkPYSLB452FD54;56321124431...2;CKNT`gmpstussswvwtjG-&,=R^kw |zxwyxvurqqmlghkefgghmmpux}¡¢¢¡¢£¡¡¢¢¡¡ ¦²¼ÀÃÄÄÄÃÃÁÃÃÅÅÆÇËÎÐÐÐÎÎÎÎÏÎÎÍÎÐÏÐÏÏÐÏÐÑÑÑÒÓÓÓÓÒÒÐÑÓÓÔÔÒÒÑÓ_E?=;:98<=??>?DEA=;;9:AHNUWY\^_hq} £¨«®¯±¯±¯°¯®¯±±²²²²±ª¨¥¤zn^SHA;8BYµe\U W>941%(+:PY\TJ;,*8J?# $-+.3:Zb@DOJDKM7HeriM:0**-5::BHWlhZY][ZNC<=FXcgiqpnokeVOQZVPMZi| }nly±¶¢£¯«sxwJ1,3FB>50-;G;9=5521420/*.0-,019AHNU_jpoqutttswuvrdG-%/>U`mz y{{ywyywusrqonklljhgggjhjovyx}¡¡¡¤¢¢ ¡¢ ¡¡¦±»ÀÂÅÅÄÄÃÃÃÃÄÅÆÈËÍÏÐÐÏÎÍÎÏÎÍÍÍÎÎÎÐÐÐÎÏÑÑÑÒÔÔÓÓÓÓÒÒÔÒÓÔÓÓÒÓ¤B?<79<<:>;8<>@?>=?;78;@JSRW\Z[`ju ©©¬®¯°°°¯¯¯°°°¯³´²®¬©¤¡sfVND75Dn ÂRIHuuF4*,&*(,<N`XQI?69RQ' #&'09X^ACBF@@DK`mcK>6263--,'18GY^QPNVdc\ZQOKV^kskkl`]VKKPSG<SbqbBKY1"-=CC;3-2A?>A84.140/.-/-/-105AFMT`kprsusuvtvvvsb>($+>Ran }zz{zxwywtsqpronohkljihgdfiortz|£¡¢ ¢¡¡¡ ¥ ¦°¹½ÁÄÄÅÅÃÄÄÃÂÆÈÈËÌÎÏÐÏÍÍÍÏÍÌÍÎÎÎÎÑÐÏÎÎÐÐÑÒÔÔÒÒÔÓÓÒÔÒÔÔÔÔÓÔÔd75677749<=<:<@A@B?;67=CNPUX_fZfnx¢¥«¬®¯±²¯¯±±°°±±°²°¯©¥£ zn^SD7=O ¶»rG<BbnI-(**$!)1@LPSQTKK_^8"$#*5` SALD<:=H]hW?456=E60'&&)0:P[QH@@JWbf^XTRNRwqli^X\VNFNI=?O\xwojV?9(=M- *?GC><2,=C6F;601543+,1.14-15CELT_jptwxwvsuywurY<(%,;Pco} ~~}y{{yyzyutuqqnnnlllhmjgdfhknpvw}¡¡¡ ¡¡¡¡ ¦°·½ÀÅÄÄÄÃÃÄÄÁÆÈÊËÌÍÏÐÏÏÎÏÎÍÍÍÍÍÎÏÐÐÏÍÎÑÏÑÒÔÔÓÒÔÔÓÒÓÒÔÔÕÓÔÕÖ¬797:569:;:<;<?B=@?>57:@GNSW\ZV]is| ¢©¬¬¯±²®¯°¯°²¯°´³²¯¬©¦ }sf[E9BcÊ®WLC?FelJ0'&((&$'00=HKSY`jsJ'!" (CqmLIRS;8FZTH<2,0.9JSG5*%++,<R_LB<9DT`\[[_SL]imleXX]^UTQH6=Hjl\q~w{jV10'**;K) !*<A;55/%6<;@=5101/1-*().66:>DGMQ[mssvxzwtx{xvp\<+%-=Qcu~ }}~}zzzyz{|xtsqqprnlmmlnmjighgilpsx~ ¢¤¡¢ £¬µ¼¾ÃÅÄÄÃÄÄÃÃÄÈËÌÌÎÏÐÏÏÐÏÏÌÍÍÍÎÎÎÏÐÏÎÎÎÐÑÑÓÔÓÓÓÔÓÓÓÒÔÔÔÔÔÕÕÔo:8666;:98:;=@A:==9657?EPSX[VTU_kw~¢§¬¬¯¯¬®®±°°°°±³³´°°©¥¡yj]MAJv²ÖX]XD;V{T1&),)$#"),069BQ[o|c9#!&6_}\GPKI>AFB></,,+*/Ci^F0)*)(*9_]L?79CNIJR]a\VX`gkh_]aUQNE<8CYwE?LampfUPLU]G*%,*7H.'*/<B=3/.+2A7<70//24.*'**,27>ACFMU_jmsrwywuwxxwpV8*'.@Wdt} }|~~~}zx{yvwwwuspqsonooplljhihfgemqsv| ¢¡ ¡ ªµ¼¾ÃÄÄÃÃÄÃÃÅÄÈÊËÍÎÐÑÏÏÏÌÍÍÍÍÍÎÎÍÏÐÏÍÎÎÑÒÒÓÔÓÔÔÖÔÓÔÔÓÒÔÔÔÕÕÓ¹9688789:8:<>><<@?:766;AHR]^YWV\frz ¢¦©«¯¯®¯®®°¯®°¯¯²²³¯°°¬¥¦yl_SI[ÄÉ|JoSA7Ud0))('*(&(---,1=KW}rH/,.D]wvQC??6529675+&))*+4PbcN82+((3E_UD813?H?;KVb_]\[qvqf^OGB:;<GUs{^RURSS8-))8Ss9'('4C0%&-8=;:67/0<74122.12.+))++16?DDINT\jpuwvwvuvuuskQ3)*/BWfu} }~~}~~}|{zywzyvvwvrpqqolnqmmlkkjhgfimpsu| £ ¡ ¥´»¿ÂÄÅÄÃÃÄÃÄÅÇÊÌÍÎÐÐÐÏÎÍÍÎÎÎÎÏÏÎÎÐÏÎÏÏÑÓÓÓÖÕÔÔÕÕÓÔÔÔÔÔÕÔÔÔÓÓx255:>98;=:;8?=8977766:DOY]\ZZ]gpw~ ¡¦ª¬¯®¯¯°°®®´°°±±²³²¬©¥ |rcXVl¡Ñ·\JQC33U{B,$%&-'((*,*)+5DGgn_RUck||aD=9943:<9681&'(**+6QnhVF8/(',IVVE:,1IJ?<CWege\eprofP?57:ETZa ndjaT>' #"(;`a=%((;,'*/BB;:560/4;6352/02-(+(',.4<HHKOT]iqvvstvutwwtkJ/)).ATiv~ }|~~~|{{}|z|wtuwwtsqllppwlnjnmgffeejnoot|¡¡¡£°¹¿ÁÄÄÄÃÂÂÅÅÆÈÊËÍÎÐÐÐÐÎÎÎÎÏÎÎÏÏÎÎÏÐÎÎÏÑÒÒÒÕÕÒÔÔÕÔÔÓÓÕÔÖÔÔÔÔÓÅ;758::69=9:88;;9766447BOY__^^agnt¢¦«¯¯±¯¯®¯±±±±³²°°®«¨¤¡uj`bµÕLDQC64`G)!*,)'&%'/('1=NZezsv{|{wZJ@A;87>?B@;63.%&.*'+:Ufh]LH=748BdYI51?TVD8DWcbV`mwwshQ:2AH`a]tysfhlL.##"(/=u\5(,3.%%%1<><82/(3<7:70*)0-'%&+2009AHNOS\hnstqstvsvxudF.*(.AThw~~ }~~|{{}}zyrvxxutuqkrrxwpnlpijhefhkmmpw ¢¬µ½ÀÃÄÃÂÅÃÄÄÅÇÉÌÎÐÐÐÐÏÎÏÍÍÎÏÐÐÐÎÎÎÎÎÎÏÑÑÒÑÓÔÔÔÔÖÕÔÔÓÔÔÕÔÕÒÔÓÒ8886857678638:8764466>LX^`cc_elqz~£¤©¯°±®¯°°°°¯°³²°²°©¤ {pgpÄÍBDQM<:_£H,&'(%('%*.(*;bkuz~ld^UG?A@8=<@GGA79;;0)(('#'7HUX__]TYLI[dWE5-ATXK=?RdLSev}|iK;=JZiepzf[bdZG/$')3Uk`)+4+%$%,97:6,+)3=5442,)*,&%%)..047FPNS]fmtsrrsvwzxudB/*)1IXlx}} ~~~~~}}}{{yxywwyyutuupprtvnnloljljhfhlpsw~~ ª³ºÀÂÃÃÃÄÄÂÃÄÆÈËÍÐÒÐÑÐÏÎÍÍÏÏÐÐÐÏÎÎÎÍÏÏÐÑÒÒÓÕÔÓÔÔÕÕÖÕÔÔÔÔÔÓÓÓÑÎH4687443:9979797:3765;L^accfcdhky¢¤¨ª¯®¯®®®°¯±±°±²²°¬© ~tq{«Í¨\<EWJ;>jL.)&&'')'*,(&5Rjq|th[LC=ILEE@956AQ[PB8=EG>.')'%#$0:;@PY]dab\YSC2-2:V[D:E[WDMfx zfXW\eqwwzq|{eXautY>-).3^mD38<>'!)-0470.+0>;411.-,*&'$(+377<CKPQ]elqqrstuu{xq^@/)+8O^o|~ ~~}}}~}}||{xx|zwutvuqqstolmljiljhiimuuxyz ¨´ºÀÃÄÃÀÀÂÂÄÆÇÊÌÎÎÏÑÑÐÏÎÍÎÎÏÐÐÏÏÏÎÏÎÐÑÑÑÔÓÓÔÔÓÔÖÕÖØÕÔÔÔÓÓÓÓÓÑÐ45753768755789773/136Jbeeifeegjr{£¨©ª¯¯®¬¯°°°²²´³²®ª¤¡ |z¹ÈF:KPGGFuwI0&%*&).***)'+/8JPQ@3))1CRRI>713CWc_S;8LQK>0'$'""',,)1?EPRQLB=>1673CLLE=N[G<FWo||pmqwy|}u{yzxlo|pP8./C^`09`yO$'2/8:2-(*8;100021)-*%'(0999@QUU\ehorrsuutsuqS2+48KSdp{~|~~} ~~}}z|~}{~||}{yxyturqpqtrpmkknjiikjmorqvx~ ¥°¹¿ÁÅÃÃÃÂÄÄÄÇÉÌÎÐÐÑÐÐÐÐÎÎÏÏÐÑÏÐÐÐÎÎÐÒÒÑÓÔÔÓÓÒÔÕÕÕÖÕÔÔÓÒÓÓÑÑÑÏÏT:8427674448<662/.//4BVdgigfecgox ¦©ª¬®¬ª¬®¬°±°¯°²±®¦¤Á´nH>=GJYTo@,%'*(***'(!"$&+3=D<($&/?VXE:1-0<Qgdb@.<RS?9(%('##'.$#19;8;3,/4370009KJ==C@53@_spmosw||u}mftlP?6T]IGxp'&/1690*%(03/004.)))(&).)08:?LWX\gknsssvvvxvjF-')1HWfpx|z}} ~~~~}{~~}|{xz{wxztqsurqqpqompqokiiimlrtx| ¢¬·½ÀÂÃÂÂÂÄÄÆÈÊËÎÐÐÐÏÏÏÏÏÎÏÐÑÑÐÑÐÑÏÎÐÒÒÒÓÓÓÒÓÔÔÕÕÕÕÔÔÓÒÒÒÒÑÐÏÎÍ::6124431328101/00-3?P^fgedgacksy¡§¨««««¯®®®±¯¬®®ª¦¡«¾^F?>@Ncg¨`9.+*((*-(%&!"#&0;GD0(+*6LH=6.)*2OgicI+)=NC=9,%*'#&.1&+6789.&%*2700-1:EB??8=<Bixm]Zbjnx~uyj[Yco~o]YjqJ¥q3(00180)&(.2,+-1+*.(*+**,27;<HUX\ejpsrptxyurf9)#'6M[gsz|z ~~~~~~|~yz||zuzzwuuvwvpopnllllkhhhkkorww|ªµ»¿ÂÄÃÃÂÂÄÆÇËÌÏÐÑÑÐÏÏÏÏÏÏÑÑÑÐÑÑÐÐÐÑÑÑÒÒÓÓÓÔÔÔÔÕÔÓÓÔÒÔÒÒÑÐÎÍÌÍÍc93/01011015222000.-9M[ddffdb`flr} ¥©©®¬¬«««¬®®®®¯¯°®¬¨¢Á¾^LCAEOvk¢²s4-/((*('%%&&(%(+0@OO:3/*-:563,')2J`ojP8,1>H<E=-&$$&+=0(+5>@6*&'-23,,/,9CD=;=;<U]ULABJ[q|vozqohjruy ls|q¨.+-.275-,*/10.-/)-/++-/*+25=DHQXahlorssru|xpZ7%"(6S`itz|y ~|}~~{~~{}||zyu~xysprrpnmkljhhgijqprux ¨²¸½ÁÄÅÂÁÂÃÆÈËÍÏÑÑÑÏÏÐÏÏÏÏÐÑÐÐÑÑÒÐÏÐÑÒÒÒÒÒÓÔÔÔÔÕÔÔÓÔÒÑÑÐÏÎÍÍÌÌͧ3121.04461.13231///6HXbddggidcfpz} £¦§«¬«ª««®®«¬®®«©¤Ç±cUNDFWpsÉ9),'(,)*(%%*,((/3?FJB>4002-00+*)-EZmsaH+'0FJIF7(""'-56,%4;A?41,)4:1/0*+?RD97:9868:86=J[t~^_v}nlhhilkuvu}~§}9#,21@:+,-,22+/-..,+(+*)+/4<ADPW^ejoqvttuwxnJ*$!/DTcirx{z}~} ~}}|~||}}{|zxzwtrqomlmkkikhkkmnrw{~}£«´½ÁÂÃÃÃÄÄÆÈËÎÍÏÑÑÐÎÏÏÎÏÐÑÑÑÑÑÑÑÏÐÑÑÒÒÒÒÒÓÔÔÔÕÕÔÔÔÓÒÐÒÐÍÍÍÌÌÌÌÌg7:2226585231/1.,-17DR\bgkjheaelv| ¤§©¬¬¬ª©«°«¬¬¬¯®®§¢ºÄzj^SHCXgÄC++)*,+..)'')'(0;?CLKE@;6/*+/+,+)7Tj|rX7+.9JUJ;/)&&)@>4/14@=7<5+09846*#0BON=470*.1047?PfsjUfyikmeZIE>GJ]vzqt «¦s.!.03:8/').41,*,-0,)&**(++09EHNW^dmtswvtuvvh@($+8IWelsvz}z|{ }}{}~~}~{|z||z{{wwxtqnmmpmolkkkkhlntw{} ¢©³»ÀÂÂÄÄÄÃÆÈËÌÎÍÐÐÐÑÐÏÎÏÐÐÑÐÏÐÐÒÏÐÐÑÐÒÑÑÒÓÔÕÕÖÕÔÓÒÑÐÏÐÏÎËËÌÌÌÌÍ·=92002552121/.,,213<FS^goifb`bhqz £¥¨««®¯«ªª¬¬ª¯°±©§£¢ ¥¼²|qhZPMa}ou¿¨D.++-+++))&(+-40A@AGF@CE=200-+++'0Hew{iP3,0AOVF11&$);D>5+,33154,/7@<:2$ ,M\P@72.,+&(.9JVbtynrvrdki`LD?:ACdw}y¡¯©n;&*2266/%&.6/+'**,)'&(*()*1>HEMT^fmrtqyvuunV5#&.AT`iptuz~|} ~|}~~|{~|~}}~{}|{zzzxvwvutspmmoonnnnlljmllsy{{~ ¦±¸¿ÂÂÄÄÃÃÅÈÌÌÐÑÑÐÐÑÑÑÏÏÏÐÒÏÏÏÏÑÐÑÑÑÐÓÒÒÓÔÔÕÔÖÕÔÓÑÐÑÎÍÍÍÌËÍËÍÏÏÐz311104330/1///12127APY_cc`^`cdoz¡¡¦¬««¬¬¬«®¯®«¨§¦©±±£ypbWUiid W.(++(&'(,.,2655;CIF=8:<<7740,,++.8PmvW4'+4<TOC:0$(1HB7423/./0++0>E95)%<U`S@;4+""$.2?S]bjxwvyqpnfVWX??>F]agx|sF&'/0120&%.85+)+('))&'*+((3CIGMX]enqsqturuiG-$)5M^ekquvy||}}~ }~~~~|~}|~|||~~~~~zyyyz{wx{{wussmnqppnlmkjikpsuxx| £¬µ½ÁÂÃÄÃÃÅÈËÍÏÑÑÒÐÐÑÐÎÏÐÏÐÏÎÎÏÐÑÓÒÑÑÑÒÔÔ×ÔÕÕÔÕÔÓÑÐÏÍÍÌÌÍÌÎÎÏÑÐÐÅ940/04250/001222423;LWXY\__adhsy~¡¤§©«ª¬¬¬©¬®«©¬¸¹¨vh\Zg`z^<//2-*,*-8989894<CF=317;65743100.1Gcyl6(,+2>NUH=-&-BL9556+(*))-58AA=2%")IYWH<=5#!#08BP[`enpisrkbQ?5;3BGDO^VYfT,&,-42.&%*36/))&((($())+04?LLLV]dlstytvts`7' &?Ybgouvvx|{{}~~~ ~}|~||~||}}|}~||y{zxxy{}}ytvtnnplponjilnpttwx{ ¬´¼ÀÂÃÄÃÄÆÉÌÍÐÐÓÓÒÏÑÐÏÐÑÑÐÐÎÎÐÐÒÓÓÑÒÐÓÕÔÔÔÔÖÔÔÓÑÐÏÏÌËÊËÍÍÎÏÐÐÑÑÓ -21/022242020/041.6JTTUZ]^adglt{ £¦¦«¬¬ªª¬ª¬¬¬®¯®¯¶À¹§vofgsfqxhN>9931/039;:;400/6EB2.5903917210.05Rr|M,$&'+BRQB4($;Q?467."%%&+/2;CJ;*%)<SZI/7=9.'-;GOVbjXHO\~va^M<1226IK<WKJRfl,%+-32.(%+01-*'&(('#&()-/5DMMMPXegrwzwttkN)%&2J^flsvxyy{{{|~~~ ~}|~~~}~~|~|}~}|}{}~|{zz|z|wtyuqrplmnlggknnpsvu|~~¦¯¹¾ÃÄÄÃÄÆÉÌÎÏÐÑÑÐÐÑÑÑÑÒÑÐÏÏÎÐÑÓÒÓÓÓÕÔÓÔÕÕÔÔÓÒÑÑÐÎÍÌËËËÍÎÎÐÒÒÓÓÒÒL:42323223230/1.//2=IQPS\_`cehnsx~¡¤¨ªª¬¬ª««©©§ª¬ª©¬®±µ¿Â«£ vn~¡dblpWJC><51026774.)--7PK3.38.=<610.3/01Ii l8'%#%0AGB8.(6HE2373($&+&+05>D9/14:RbV4*7BOBBDDJP[eQSR_{v_vaTLA6+29NWZgdW]\vf9'*)2.*)&+42))&(,,&$%))+,5ENIJOYfioszvqpZ4&$0CWeimsy{{z{}~}} |}~~|}}}~~~~}{z}}zyz}{{yrwuutqompmmjjmmnltrx|¡¬¶¼ÁÃÃÃÄÇÊËÌÏÑÒÒÑÑÑÒÑÑÑÐÐÑÐÎÐÑÓÐÐÓÓÓÔÕÕÕÔÕÔÓÑÑÑÏÌÌÌËÌÍÏÏÐÐÒÒÓÒÒÑ43/0,.-/54/.-10100>>HKPUY]afgiinv|¡¦©©ª¬¬¬¬ª«¨«ª©ªªª°¸¿º¬¤¡ yz½abeYTC:550),/03150.,*5TK3,20-+35,/-,+./<` yQ3'#$(/5<</0)AB2)1:5'&%#(.4;G3*/8>Shj;&#->Rc_QOTPJQp}frt}e]S@119Gcnyradgmw;-,/400+)+00-*)++/'%&*))-4EMKKNWhinsxwqdE&*(:Rbejotx~~||~~~~| ~|~~~}||{|{xx{vwvxuvvulqmlnqsngijkklrv{|¨±¹¾ÃÄÄÅÈÊËÌÏÑÓÒÑÑÑÑÑÑÑÑÐÐÐÐÐÑÔÒÓÓÒÓÔÔÖÖÕÕÔÓÑÏÎÍÌÌÍÍÍÐÐÐÑÑÓÓÒÒÐÐÏR1000.--210..0-3139:;DLPU]_bca^cnv| ¥§¨«ª«ª©©§©««©«¬«°¶µ±®§£|w¶·}NbEV<0*-.#&-+/./2/-+7WR60.20354-+*,),,=\b>(&*+*.4:45/=F:&,270)))')29FE7)26PejO/###6P^^fogWhstp{tQ3/09SjwdOXhnlE343;74,*+-2-+,+&('(*0**-6BKLORXcgkrxujH) #7KZcekqtw{}~~~}|~ ~ }|~~}~~~} ~}~{|xz{usvwtvtrnonqnkrmkljhkpsvzz|~¤®¸¼ÁÃÄÅÈÊËÌÏÑÓÓÑÒÒÑÑÒÑÐÐÒÑÐÐÑÒÒÔÓÓÕÕÔÕÖÖÕÔÑÏÍÍÍÌÌÌÏÏÐÑÑÑÒÒÓÒÑÐÏÏ0//10//./0-+,.3/,.138AFNV^a_][_elu|££¦©ª«ªªª©©©«ªª«¬²³²©¨¥¢~³ÄÆ|R^]\K&#"&'+.*)**3/,-1Ob6,)*-/321+(,-+,6O}oO1%(...,0696DIA/'+65/,*).14:OH.*/@\pdH8.()9?AWp|}ikukhozkH6./BX}ZDKRMK;663>>0,*)./48-&(&$(,,**-5?HLTX]delmrnX5"'-EY`cfmt{{~}~~~~}} |~~}~~~}|{|}}|zzz|}xstwvwttopnorsonmkikmoqs|x{|~ ª³º¾ÁÄÅÈÊÌÍÏÒÓÒÒÒÒÑÑÒÑÐÑÒÑÑÑÐÒÓÔÓÓÔÓÔÖ××ÕÓÑÏÎÍÍÍÍÎÐÑÓÒÑÒÑÑÑÑÐÎÍÎÌ[,-//+.20/,**--.-.0369>GR[^^^Y]\bmz¡¤§«ªª¨ª«ª©ª¬ªªª®¯¯«¨ª¥¡¾ÔÊdom8$$&(*0-'&(-5,/.NZA1*+.020-**.--)1IquZ;,--&'(*/38AJC5.').,+)'020-=F80+0Oh_JTWC<;2+/AWsxWJOGADH[|bE1*8GnvD0965125692,-/-2<3+***%%.,(*-/5@HKJTaecejl_;)*1<M[cimry{{{~ |}~~~~}||}}}~|}~~|}}{{{{yyuvwwxsvtpnoqsonllklmmoquuwz~}¥°¸»¿ÂÅÈËÍÍÐÒÓÒÒÒÒÑÒÒÑÑÑÓÒÒÒÑÒÓÓÓÔÔÔÖ××ÖÔÑÒÎÍÌÍÍÏÐÐÑÐÑÑÒÒÑÑÏÏÍÌËË¥,,-/.1512.,../05333149@HTY`^YVS[kw} ¡¤¦ª«ª§¨¬¬«¬««ª§©«¬¬¬ª¦¢Á×Ù¢x§P#&$(../')((51,2NV?3+,--222+30/0-0?k|cN:()'+))+,7CNJ<2+&)2//..0.+4@<7.0AY[@Rba\M:&$"(6FKL8140(*,>Ia\Q@5/9GtQ,-/,,.4386.-1/.+)(*++%"'&*/-/9GJHJVafihh[D1(&8LV]dkrx}}{yz|}~ ~}{}~~{{}~}~~~{}~~}~}{||~||}~|~yzwyxywtrvvssrrqnnqsmonnoqqrw}¡¬³º¾ÁÄÈÌÎÏÑÒÓÓÒÒÒÑÒÓÑÒÒÒÒÒÓÓÔÔÔÕÕÕÖÕÕÖÔÓÐÏÍÌÍÎÎÐÐÏÑÒÑÑÑÐÐÐÎÏÏÏËÌÌg..1/067510/.+,-.32.2:?BIQYZXPMS^lx ¡¤¨¨ª©ª«¬¬®ªªª©©¬¬«¬©¥¢ºÑ×´pw»e.%%'''1,(&*21%.QL80,,2,1.4200/-,/>bn_F,')'(-.06BNM?92)(++..42)&2<=)(+@WP==G\feT;,# $)/2/32/(*,3:CJ>42-8R~^,./*+.1372,*+,)'$'))&%"!$*4.3;GKFN^bdie\B+-*1EU_gnqxxxzyzy~}~~~ ~~}~~|~~~~|~~|~}|~~~z{zyzzyvstxw{wstqppmmlklmpqquy~ ~¦º¾ÁÄÈÌÍÏÐÓÔÓÔÒÑÐÐÒÓÓÒÒÑÒÓÓÕÕÕÕÕÖ×ÕÔÔÓÑÐÎÌÌÍÏÐÐÐÐÒÒÒÑÐÐÏÐÎÎÎÏÍÌ˱..--146330,+)(*+.1*.47AILXURLKLUbr{| ¢¦§¨©©©©«««¬«©¬««¬¨¦¢¢¦ÌÙÍ]Res,%&''(*+*)(21.3FG4/++/1-..0360.,'8b} {cK0$+(((,26=QG:>=2+0440.(&%3:;-',AYW89=HWikdJ:321'%/>:3('+/8@;78==;SatD,.0*,..47.(&',,)*&&+*&&#(-2238FKMP]eei]L6'+1CO_kmqtwxwyy||}{| ~~|}|||~}~~}~~}~~~~}}{{xtvxtr|vxtqpuronnmkknosrvw{}} ~ «µºÀÅÈËÌÏÒÓÔÓÒÒÓÒÑÑÑÒÓÔÒÒÓÓÕÖÖÕÕÖ×ÖÔÓÒÒÑÏÍÎÏÐÒÒÒÑÑÒÓÑÐÏÎÏÎÎÏÎÍËÇÅo...-.431-,-,,*(+/(*-1=DILOQLMHOYdmt~ ¤¨©©ª©¨¨©¨«©ª¬¬¯®¯¯©¥£¿ÔÎ bTBSR2)((()*-*&',035E?65//,-.21540,+*(9h| cG6,+,)+//.8LL39C:.-171,))#+;A-'';]_C<:EBMaqgQ?CNF5/341( (+3<<4>HQQSAA5&$-()+/45/'&+,++%''*$$#$(.-05<HMMRYcb\H>2&/AUccfnqvzzxxz|}|~}~}} ~~|{{~~|~|}{z}{~~~zxyvvuuwxtturntusnljkljnrsuvx{¨°¸½ÂÆÉÍÏÒÒÓÒÓÔÒÒÒÑÑÒÓÓÓÔÕÔÕÕÖÖÖ×ÖÖÔÒÑÑÑÎÎÐÐÑÓÓÒÒÑÑÏÐÐÎÍÏÎÍÏÎÌÊÄ¿©4/-,110.-01.*+,)+&&+07?CFILJJGKNZcjsy ¥¨¨©§¨¨¨©ªª¬¬¬«®¯®«¦¥»Íº|eQGL7+*)(&),-,(*.55?<38/100.0.25-(&&+6jyqxfC711-*,-,%1IF117<9+33++*%%'7G3&)9V_BA;;8=J`haMAAHSH=:1411(+1BELXgi\?;4+(*('(+460'**-),-++*#"!$&*+-3?GLMS[bXC42(*:O\_\foswzyxz{{}~{ ~}|}|~}~~|~~|}{}}z|~}}|v{{ywturstttsrpnpnihjkmppquwy ~|~¤·¼ÁÅÉÍÐÒÓÔÓÔÓÒÒÓÓÐÑÑÔÔÔÕÖ×Ö××ר×ÖÕÒÐÐÐÏÏÑÒÓÓÓÓÑÑÐÏÏÐÎÎÏÎÎÌÌÉÆ¿¶¢a00/0-,-01-,)+.*)(()*1;@ACIOJBFIQW_jrv| ¢¥¥¨©¨¨ª¨¨©¬¬¬¬¬°²®«¨¤ °¬srJQH?/'( *0-,*,272@<5420/+*+-35*$##':ltQooOBB=0/.,)&0=8,.4@?50*+'('*)3?>1(+LP>98652>Yloi_D9@FHA?DTRK<9=HZh~q^UMD8)(&+3361-/***+++.(&$""(0714@FKPS]ZG4+(->OS\bdluv|yyyy}}}|~}{} ~ ~}~~~~}}{||}~~~}}~|}{}}|}}{yzyyxxwsssrsqrtqrronnklhjlmprw{z ~{«µ¹¿ÆÊÍÏÒÓÔÔÓÓÓÒÓÔÑÑÑÒÓÕÕÖÖרØ×ØØÕÕÒÐÐÐÐÏÑÓÔÓÓÓÒÐÎÐÎÏÎÎÍÎÏËÊž¶¦f631.--/./+,*+*+***+),6;;BGJEB@>FKQZenv £¦¦§¨©ªªª©¬«ª¬¬®°°®¬¤¢ ª¨x}fJPY0!#"'01+')434<:/374/+'&.63) #%'?qeB[t^IR>4./0*..;50005BC6,.,'),,/<A702DJ411144:Ttwvws^@47518COPKBMX]`juxiof[J;)%%(050+)*)*)*-.()'')(+5029IOTSQA2+(1>LQW_glntwwx{||~}~{|~ ~}}||{~~}|}}~|||~}~~~|}|~~~z{{zyxwvqssrrrrstqnnokllkmloqstw~ ~}¦²¸ÀÅËÍÏÓÒÓÕÐÒÓÒÓÓÑÒÒÓÓÔÓÕÖØØØØØÖÕÓÓÒÐÑÐÑÓÓÕÔÓÒÒÐÐÑÏÎÎÎÌÌËÊÇÁ¶¨iG61.,3.1//.,'(())&())'168=CD@<=;?@CO\goy ¢¦¦§§©ªª¬©«¬ª«¬®°°¬«§¥¢ £µ¦}roKVpU(!#*/-+)(+0/;:0154*)('*26-%# +GqyV:FdPRH<2+6004@C2'-0>EA9,('(*)*5:;BCRI5,*)+5FXryvx~qN=442399/6F\ecV[POYh[NA,(%(.42+.+)+*((0+*'&)*+.*0;IORP@0&'+:GQY]akqstwx{{}{}}{}~}||}~ }|~||}}}~}{}~}|}}~||~}{~}~}~|||}zwvxsuwtqpqsusonmmlkilllopvx~«·¾ÃÈËÏÖÒÔÕÒÓÓÒÒÔÓÒÒÓÔÕÔÕÖØØÙÙØÖÕÔÒÑÐÑÑÒÓÔÔÔÔÒÒÐÐÐÎÍÍÍÌËÊÈÀ·¨lI4/-+**+,33/**+('*)(''&(/7?CDA95529BJR^jt¢£¥¨©ª««¬ª«¯¬®°°®«ª¨¥¢½Î£}i]Tx5%$'-.+*))/8=9/.-64-2,(11,##&6Wxe@0BowRXWS9(-0/=@62./7<EIO6,'(++-3/2AR_\7**'*/;Mfy{{ubHLCCC=,8Id`baYSAHelaUD*)-10-*(+(0)))+*)'##$'')2AHJMA0-%.9HRVW]gpswwyy{{|{||~}z|~|||}~ ~}{}~{~}}|z}|{}}{~|}|}|~~|~|~}z{{zxxwttzrprqpusopqolkjkmjmoqx|~ ~|z©´¼ÃÇËÐÓÔÕÔÔÕÕÔÔÓÔÓÓÓÔÕÔÖ×ØØØ×ÖÖÕÓÑÐÑÑÓÓÔÔÔÓÒÑÐÏÏÎÎÌËËÊÉÆÀ¸¨pM3.**(+.+-4/.11,*)))(+%''-4?A?A:5147=CIV`lx¢¥§¨««¬ª®®¯°±¯¯©¥¢ÀÇ~YlZ;*',/10-,,39<60-*14+,)%/0+$('?jwV6,9fwUUZSE6--,7@<1,/2<<AON3%$*-361*0NeeD0+))*3?L`q|tzf\keKGYx{bVU\^hw om;+-02,.(*140*(')&%""#%(*4@B=62./1>IQY\\akrstvvxz|}||}}|{{~}}}}~ { ~}~~~~| }~}~}z{}}~||~}||}~~|{|}{yywutvuqsoqtrpoqonkjhiknppwz}~£®¹ÁÇÌÐÓÕÖÕÕÕÔÔÔÓÕÔÔÔÔÕÕÖ×××××ÖÓÓÓÓÒÓÒÓÓÓÓÔÒÐÏÏÏÍÌÍËËËÈÄÀ·¨pJ80-++-/-,-02352-./*/1.(*/.4BC<8993016>FS]ip|¡¥¨§¬®®®¬®¬«®±²³®ª¨¥ ´LJ=-')+11.-,.8=62,+0-+*)-0-,$)-ErsB(+5RaRNYVK;7823=6/10,.43BGF;)(.88/).A[gE522/.07=H[o}v¨¡}j`qum]WZcymnvyx_2,13+,-+,/2.*)(%(%##&(-5981*+),=LPTYadjosppvwx{||{}~}{{}}|} {~}}}~}}}}}||{||}}}z{~~}||{w{yz{zytvuqsrpporonnmkijgjmmoty|~}«µ¾ÆËÏÒÔÖÖÖÖÕÔÕÔÓÔÔÔÓÔÕÖ××ÖØØÖÓÓÓÒÒÖÒÔÔÓÓÓÑÐÑÎÍÎÍËÊÉÇÄ¿¸¬uP7/-,*,0//./34364420.1122-0/2;?:66942105AKUdlu¡£©¬®¬®®¬®®±³²°¯¬¨¢}x¼¡^KI/&()0/,*,1>A61,)*--'-,..(%%.AcS7-+8;ZPTVND=461482,-+-/1468H_9*085*(.<TaD1449466HY]]f|qqzraQW_lsVN\rm;.11.1,.-0---)($*)''**1342-)*08COSU^cgknpqsvuww{|z|~~}~~{}}~}~~ |~~~~~|z}}y{}}|zz~}|{{||~}{{ywy{zyuuusuqoppppnnlliiggmxlqxx| }{ }z~¢°»ÄËÏÒÒÖ×ÖÖÕÕÕÓÓÔÔÔÔÖÕÖ×ÖÖרØÔ×ÓÓÓÔÓÔÔÒÑÒÐÏÎÌÍÏÍËÊÈÅÀ¶¬xS5-*)*-/31.07;69=8630134551.259@?:7753104;DNZfs{¢§©¬®°°¬®®°±¯²´´³®®¬¦¢mr©v]q<*,/43'',2@=433*),/*,.//'*.2>J?.*+16J\UTNG?40.8:/*,2223*04=QM93@7(#(2L`@+2;BIPYfjka^fs~zka~~{z{y[OXerb]hw}`8.01.+,0.+,1,('%&-//,-00.-*(59=IQZ_hklnosutuuvwz{}|~|{}~~}~ ~ }}|~~~}~~z}~~|~~|~~}~~|}{{uxx|~zwvuvvutrnompooookijhkwporuy} ~y}|} ¬·ÃÉÎÒÔÖ×××ÖÖÕÕÔÔÔÕÔÕÖ××ÖÖÕÕÔÔÔÒÓÓÔÕÕÔÓÒÑÏÏÌËÍÍÌÊÊÈļ®\=+((*.158:/17669?8774654441037ADB<=88421-3@HR`my£¥©¬®°¯®¯¯¯¯°³³²±¯¬§¤zllpwd/2183(&+4@<1/))&*0++//.0/6>JF7/.0125TVUKC;931;7,),2434/-0/4ED<=1*#%+GX@++3=D]hvuq_PXbu}yw}wmkoz o`_hi_Zj{bA0-/1/,-*,-11+&&$$+0-+./-%'&-:@JTU]dkoprrrqsssuw{y||~~}}~~~}~~ ~~|{}~~~|{~~|~}}{}}~|{}|}zwwwxwvxwqrpqppqrmjkghlmqpstz |w~{~§²¾ÈÏÓÖÖרØ×ÖÕÔÕ×ÖÕÕÖØØ×ÖÕÔÒÓÓÔÕÕÕÕÖÕÓÓÒÑÏÏÌÌÍÎËËÊÇ¿¶¥b;/%%')249=A;6658:@><:9825577768?HJBA=:70-*07>IZfv| £§«¯¯¯°°°¯¯°°±³±¯¬®©¦£ qhllv¬l4*/66(()5@;2-/)**.-*+*/.-?LN9.+013/0=MJGB:987?>./305865+-),7CD7()%')<RL**3:85DQlr`OQVblv~ }~xpk[UVibF3,+/.-+,,),43.&(*+(+.0-,)%(/5EIRWW\iqpsttrqrstruyyz{z~}}}}} |} ~}~}~~~~~y~~}|z{|}{|~{}z~}}}{|~{ywwvxxxxwutporqpqnnmkkjknonsuv|{w}zz ¬»ÇÌÑÔÖ×ÙÙØÖÕÕÕÕÖÖÔר×ÖÖÔÔÒÓÔÔÔÖ×ÖÖÕÔÓÒÑÐÏËÍÍÎÌËÇøªqI1-,%$*09AEGG879?BE?A>;>>==A==:=?FMMGCB;4-*,46AQ_ow~¢¦ª¯¯®²±¯¯®®±±²´²²²°«©§¢ yklitq80*370+.4;7.,2,)++0--,**3L]T1*-264.-5EIHCA;G<@<65:449;;51./7??0)('&'3ID405O@ '.DV\X]a^ahpu~ ¢ }n]\moI6-0101+-.*+./+&)3+))-/,/'+08@IOUZ]ajoprtxsttuvusvxwyz|~|}|||}~ ~~ ~~~~~~||~}{}{z{{{|{{}}~{}|{||{yzxwwwusstuqonnpoklpnkiimmmpsu{|wx~¦µÂÉÎÔ×ØØØØ×ÕÔÔÕÖÖÕÕרÕÕÓÓÒÓÔÔÖÕÕÖÖÖÔÒÐÏÏÍÍÍÍÍËÇ»uQ6./'&)03?IOMK@8<?F?@GFBGHJIKEDBBDGPNMIHC:/,+/2;JXfny ¥«¬¯¯¯°°°¯¯°°±±±³°±¬ª©§£ xu~}|sA1+07.&2693*(+,4/*//009,5M`O2+/664/+6@EM@@::>@7009=>>CB:;959<6-.-)*'/<802:dP(!#)2A?N\gekjgix{¥ s|wX<5+/.*.+',/0*&*2/.,**))%+5@GLRUX`blmpssuuvytvyvvx{~z||z|} }~ ~~|~~~~~~}{}{}~|}}}||}~~}~|{}{|~~{{{|{|zuvxvuxsrsoqoqpmjkhgjgijloqvw}}w ~~z|¡®¾ÅÌÒ×ÙÚÙØØ×ÖÖÕÕÖ×Õ××ÖÕÔÓÒÓÔÕÖÖÕÖÖÖÔÒÐÏÎÍÎÎÍËÇû±~Z@/*&'(),6DKMMMH@CDIJJPNNQOOQSROMNLPRSTQOK@92.))2DQ\gt¢§«®°´°¯°¯°±±®°²²±±²°«©¥¢{x^2(,64/3:=4&$+-/**+/*+/-5COA8129;2/*35<AA;85>81-/5=ABD>=?87<D4//+((&'72--7Rc' #'-+(.8HMRX`_iw|} mRD2.2*##&.1.*)0./14/(&)'1?@DKPX]dinprsttvvyuuxxyz}~|}~|| ~}~}||~~~~~~}|z}|}~}}~{~~}~}}|~}yxuwwvtoprtrqoppqjigfedhlmnnruz |{x{¨¹ÅËÐÖÙÚÙØØÙÙØÖ×ÖÕÖÖÕÕÔÔÔÓÓÔÖÕÕÖÖÕÕÔÓÐÐÏÌÍÍËÈý±£cC7,)*/,+2=FMRPKLMOWU_]^`]XYYXVYYWSSTU\[UQIDA71*'-<KT`my ¥©°²±°°°±²±±µ²±²³³°®«§¤ «xwkE4)/787B<0((+0--++022.-.3A9225<;0..014?C;89932417A@?=<911362340+))((/2+/0?J1%$-5,%&),.-56BJU_mxyuulqkT]emuui`a\A-*'&$'0-/-*/30.+&(%,6888CNU\aekqqqqqsvvuvvxx{y{}{}|~ ~}z~{z{~||}~}}}}|~}~}||||~}~~~|}||}|}}wvwzwwupoqrrrnnllkiicfefhlklqpx~{y{±ÀÆÍÔØÙÚÚÙÙÙØ×××ÕÔÕÔÔÓÔÓÓÒÕÖÕÕÖÕÔÔÔÒÐÐÏÍÍÍÈĽ³¤qN4-'**+139EOQORMSX_hilljnkigccfc]_^^^__`YXPKD?84+*5?LVer¢¦«°³²²´²²°°²¯°¯±³±²®¬ª¦£t[9)(/459:31***-//+-39330,020-,7=93-1201;A;<D90.259;A735662,,.52.02,)/10)052-*)*76.*&(-,.*%(1=DBQRRFFMsLFNVUH=?N^WE0(*(#)+7/%(*-*&''*.578;EOY_cgjnnnnmrwv{xyxy|{|{{|~ {{~~}}{~~~~}~}}}~}}}|}}|{}~~{wuwvxwtuxnsrrqpllnlijifdackkmmnu|} |xsz¦·ÆËÒÖÙÙÚÚÚÚÙØÖÖÕÔÕÓÓÒÔÓÔÔÕÕÖÖ×ÕÔÔÔÓÑÏÏÍÍÊÆÀ·©|Y?/*-+')/7>GOUSYQUY^sxxyxzwywppsomlkof`ega]VNEB=8/*0?IVbnz¥¨¬®¯±°¯¯®¯°¯´³³°³¯¬¨¥¥Q2&(.4><7/0,**-1.*-1344-,*/.-1:=>3*-1,.9B==@7100:<?A;5-,*0+(/4.')4125522150(%)/360--../0.((*9BAEKG>@HgjN;AM8-+<KLO>3)#%'+-+')+-+'%$+0269BLS[defilmpnmqsuvw{wy{|{|{ ~} ~|}~~~|}}}~z}~|{~~~~~|~|}|{{zwvvxwuxwoppnnqnkilmihghbcgfiloux{ }xuv|®¿ÈÐÕÙÙÚÚÚÜÚÙØ×ÖÕÖÔÓÓÓÔÕÕÕÕÖ××ÖÔÔÔÓÑÏÏÎËÈż± jK6-)(&'*2=?HOVUQSRWYq|{{yxvrqpkkmjc^XPLE=3+,6AP[eq}£§¬°°¯¯¯¯®¬¯²³³´±¯±¯«¨¢ d:-).9B?40-*+,/,*,,+/75.+-2515>B@:.+2*0;B@<?;45207@K?92,),-'+),&*11655565332,),/4684/43/*+015>=BFNSXXlkL?JO<%5E@=BF+"'),)+*/55%'*,+./38HPW]`fkkmmqtrspxwx{zxx}{ }}|}~~}}}{}~}||||{~}}}}}~|}~xyyvywvutoponppmmlomghjhgffdimpsswxwst¤µÄÍ×רÚÚÚÚÙÚ×ÖÖÕÓÓÒÓÒÓÔÕÕÕÖÖ×ÖÔÓÓÑÐÐÏÌÉÅÀ·©y_E3-+$%*16;ENPUVSRTUX`}zzutrmic]UOG8.,.5HT^ny ¥ª®°°®¯°±¯®®¯¯²³´³´´°¨¤ }I5119CD6-)*-,..*-+*/42-*,-00;HE<9.,,,4:A=8DE=641?EOKC6,-&.-,*+*-/+011457::;756**6KC970-.+,6=>9:7CF_izyhLWK53CE*2F6)#(*,16=0&$'.:0403=IPV\agjhhjntrtssuwzxxw }}~ ~~}}~~~|~||}}||}|}||}|~~}}|zzxuvwtoroprspppnlljjklfgfbdhikqru{}{xss{®ÀÉÐÔØÛÛÙØÙÚØ×ÕÔÒÓÓÒÒÓÕÕÖÖÖÖÖÕÔÓÓÏÏÏÍÉÄÀº®¡s[D3.(&,05:@JLQVVRRUUTSp ~}yxwog_YN?3-+2<IWap¢§«®®¯±±±±²®±°²³´µµµ³¯¬¨£ kA54:AE<2++//-**,-/-23.0//.1>DC=4-+,*2:C?8EIB8959G\QH<63/0-,,.-**/14,45:79=<>:-(/DQG;44427@DVO?43<Nby gJNB32;2.6@+)+0384)&&%+..1201?KUX[cjkfhiottuvtuvyz|~|~~~~ ~}~|}~~}||||}~~}|}z|{{zzwz{xyurqqrurpspnkkjliikkgcfdehhmopry| |zuuv~¥ºÆÏÔØÚÚÙØÛÚØÖÔÓÓÒÒÒÒÓÔÕÖÖÕÕÕÕÔÒÑÐÏÏÌȼ´«rZA3.,+,39;BHNSRQQSUSTU\ }vmdSE:-+-5@P\ky ¤©¬®°±²²±°±²²²²´¶´´´±®§¦ wR>;9<992,,-./1,,,/./001,..3DNC94-*)(-4BA7GE>:467BMLKH954410/,+'%2393*+)*04;CB74/3DHB98943;AXb`L4<KQZj|hc\C517$.C1)+.1.:9*')/.-1437COVV^bfggikotusuwwxz ~~~ ~~}|}}~~~}~{{}}|~|{~}{{{{{zzz{xwvtsttrqrrqplnjmlijjifgfefgkknptz {zxsv±ÁËÑ×ÙÛÛÙÚÚÙ×ÔÒÓÑÑÓÒÓÔÔÔÕÕÔÔÔÒÑÑÐÎÍËÆ¿¸¯©rW?1*--08<?CJQQSRQRX[XXVqwl_RE2.(.9GU^r¤©¬°°²´±±³°±¯±²²µ´µ°©§£ ygMD<;124/)+,(43/-.-*34-*,4@UV@30-**)-6?=5>D95876>I@CR@752458,*('+.38-(*'%(0898=>:6:E?<73215BYi^OJHGGT`~hWGF>2.7-,+*)48,)--,/226?FNSW[abheinprrpqxx ~~~ ~}~}}~|{||{{|{x{{{|zy{|yttsqrrrsroprolmoojjjjkifaadhhjnsx|{xwtuz¨ºÇÏÖÙÛÛÚØÛØ×ÕÓÒÒÑÔÒÓÔÓÓÕÕÔÓÓÑÒÑÐÏÌÉýµ¬£mR?0().2=;>CFMUURTSWYYWRX yobRA1)+1>JXiv£§ª±²³µ´±°¯±±°°³´µ´±®©©¦¢{wndWB62.1-),,(-85.+++,60,*8QaO7,(+(+-.2:=4>@830.68A;=GG;777<>830,)+01.))$$''(*+9KJE;BF?/4:008EOQRPPLGFUoz¥wha_A561*'%*&0--42/164;CJQZYZ^dlklnonopr ~~ ~|~}{}}~{~}z~}|~|}|}xx{yxwywurruqtsrqonroppmllkjijgfdc`dihlppw~|{xtusµÄÏÕÚÛÝÜÚÚÙ×ÕÓÒÒÑÓÔÔÔÒÔÕÔÓÒÑÑÐÐÐÎËǽµ£iL5*()/68;AFJJSSPTXRTWVRVn {pdU=.%)3<O]n|££¨®±´´µ±¯¯³²°°²³·µ±¯¬©¥yswtI>A:,),1.0,-,)(),-64+/=ZZ>1,,,0.+.1:=5?E<42333==;AF<78:A@47884570*'-.+)(,%",4>BA?HR@614:A;=49FUORXYjpq}pll_H62%%%((,/+740124=ELPWWZ]biiilmmnz ~ |~~~~~|~~~} ~~~}|z}~|y~}|}~}{xz~xy{|zyyvwxuutsrrqpmpqnlmjijjhjhglgccfgknrt{ ~|{yvus|ÁÍÔØÚÜÛÛÚÙ×ÕÔÒÑÑÓÕÔÔÔÔÔÓÓÒÐÑÏÎÏÎÊÆÄ½µ®¦fD1)(,2;;?BHMORVSSZSRRQSUV yn`J6+',1>K`w ¦¬¯±²±±¯¯²±±®³´µµ´´¯«¨¡z_?GK-*34240).,+)(-470:KXG3.-/021+*2?B-=G?60134>BB>BE?9:B>:75;:@;0)'*21+./*((%.246>JXR--3?CBD78PLMZiooommmhjmrl`YI6(',0')3-(**.25=DKNQY[[aghjjlw ~}~ ~~~}}{~~}~~ ~~}}|{~}{}~~~|y|~}zzz{{zyyyvuvtvtsrqprkklmkikkjmkjhfdbecjnqsy
− examples/src/simpleTexture/simpleTexture.cu
@@ -1,47 +0,0 @@-/*- * Copyright 1993-2010 NVIDIA Corporation. All rights reserved.- *- * NVIDIA Corporation and its licensors retain all intellectual property and- * proprietary rights in and to this software and related documentation.- * Any use, reproduction, disclosure, or distribution of this software- * and related documentation without an express license agreement from- * NVIDIA Corporation is strictly prohibited.- *- * Please refer to the applicable NVIDIA end user license agreement (EULA)- * associated with this source code for terms and conditions that govern- * your use of this NVIDIA software.- *- */--#ifndef _SIMPLETEXTURE_KERNEL_H_-#define _SIMPLETEXTURE_KERNEL_H_--// declare texture reference for 2D float texture-texture<float, 2, cudaReadModeElementType> tex;--////////////////////////////////////////////////////////////////////////////////-//! Transform an image using texture lookups-//! @param g_odata output data in global memory-////////////////////////////////////////////////////////////////////////////////-extern "C"-__global__ void-transformKernel( float* g_odata, int width, int height, float theta)-{- // calculate normalized texture coordinates- unsigned int x = blockIdx.x*blockDim.x + threadIdx.x;- unsigned int y = blockIdx.y*blockDim.y + threadIdx.y;-- float u = x / (float) width;- float v = y / (float) height;-- // transform coordinates- u -= 0.5f;- v -= 0.5f;- float tu = u*cosf(theta) - v*sinf(theta) + 0.5f;- float tv = v*cosf(theta) + u*sinf(theta) + 0.5f;-- // read from texture and write to global memory- g_odata[y*width + x] = tex2D(tex, tu, tv);-}--#endif // #ifndef _SIMPLETEXTURE_KERNEL_H_
− examples/src/smvm/Makefile
@@ -1,20 +0,0 @@-#-# Baking!-#--# -------------------------------------------------------------------------------# Input files-# -------------------------------------------------------------------------------EXECUTABLE := smvm--HSMAIN := SMVM.chs-CUFILES := smvm-csr.cu \- smvm-cudpp.cu--USECUDPP := 1-EXTRALIBS := stdc++--# -------------------------------------------------------------------------------# Haskell/CUDA build system-# -------------------------------------------------------------------------------include ../../common/common.mk
− examples/src/smvm/SMVM.chs
@@ -1,201 +0,0 @@-{-# LANGUAGE ForeignFunctionInterface #-}--------------------------------------------------------------------------------------- Module : SMVM--- Copyright : (c) 2009 Trevor L. McDonell--- License : BSD------ Sparse-matrix dense-vector multiplication--------------------------------------------------------------------------------------module Main where--#include "smvm.h"---- Friends-import Time-import C2HS-import RandomVector (randomList,randomListR,verifyList)---- System-import Numeric-import Data.List-import Control.Monad-import Control.Applicative-import System.Random-import Foreign.CUDA (withDevicePtr)-import qualified Foreign.CUDA as CUDA------- A very simple sparse-matrix / vector representation--- (confusingly, different from that in RandomVector and used elsewhere)----type Vector e = [e]-type SparseVector e = [(Int,e)]-type SparseMatrix e = [SparseVector e]------------------------------------------------------------------------------------- Reference-----------------------------------------------------------------------------------smvm :: Num e => SparseMatrix e -> Vector e -> Vector e-smvm sm v = [ sum [ x * (v!!col) | (col,x) <- sv ] | sv <- sm ]------------------------------------------------------------------------------------- CUDA---------------------------------------------------------------------------------------- Sparse-matrix vector multiplication, using compressed-sparse row format.------ Lots of boilerplate to copy data to the device. Our simple list--- representation has atrocious copy performance (see the `bandwidthTest'--- example), so don't include that in the benchmarking----smvm_csr :: SparseMatrix Float -> Vector Float -> IO (Float, Vector Float)-smvm_csr sm v =- let matData = concatMap (map cFloatConv . snd . unzip) sm- colIdx = concatMap (map cIntConv . fst . unzip) sm- rowPtr = scanl (+) 0 (map (cIntConv . length) sm)- v' = map cFloatConv v-#ifdef __DEVICE_EMULATION__- iters = 1-#else- iters = 100-#endif- in- CUDA.withListArray matData $ \d_data ->- CUDA.withListArray rowPtr $ \d_ptr ->- CUDA.withListArray colIdx $ \d_indices ->- CUDA.withListArrayLen v' $ \num_rows d_x ->- CUDA.allocaArray num_rows $ \d_y -> do- (t,_) <- benchmark iters (smvm_csr_f d_y d_x d_data d_ptr d_indices num_rows) CUDA.sync- y <- map cFloatConv <$> CUDA.peekListArray num_rows d_y- return (fromInteger (timeIn millisecond t) / fromIntegral iters, y)---{# fun unsafe smvm_csr_f- { withDevicePtr* `CUDA.DevicePtr CFloat'- , withDevicePtr* `CUDA.DevicePtr CFloat'- , withDevicePtr* `CUDA.DevicePtr CFloat'- , withDevicePtr* `CUDA.DevicePtr CUInt'- , withDevicePtr* `CUDA.DevicePtr CUInt'- , `Int' } -> `()' #}-------- Sparse-matrix vector multiplication from CUDPP----smvm_cudpp :: SparseMatrix Float -> Vector Float -> IO (Float, Vector Float)-smvm_cudpp sm v =- let matData = concatMap (map cFloatConv . snd . unzip) sm- colIdx = concatMap (map cIntConv . fst . unzip) sm- rowPtr = scanl (+) 0 (map (cIntConv . length) sm)- v' = map cFloatConv v-#ifdef __DEVICE_EMULATION__- iters = 1-#else- iters = 100-#endif- in- CUDA.withListArrayLen v' $ \num_rows d_x ->- CUDA.allocaArray num_rows $ \d_y ->- withArrayLen matData $ \num_nonzeros h_data ->- withArray rowPtr $ \h_rowPtr ->- withArray colIdx $ \h_colIdx -> do- (t,_) <- benchmark iters (smvm_cudpp_f d_y d_x h_data h_rowPtr h_colIdx num_rows num_nonzeros) CUDA.sync- y <- map cFloatConv <$> CUDA.peekListArray num_rows d_y- return (fromInteger (timeIn millisecond t) / fromIntegral iters, y)--{# fun unsafe smvm_cudpp_f- { withDevicePtr* `CUDA.DevicePtr CFloat'- , withDevicePtr* `CUDA.DevicePtr CFloat'- , id `Ptr CFloat'- , id `Ptr CUInt'- , id `Ptr CUInt'- , `Int'- , `Int' } -> `()' #}-------------------------------------------------------------------------------------- Main---------------------------------------------------------------------------------------- Generate random matrices----sparseMat :: (Num e, Random e, Storable e) => (Int,Int) -> (Int,Int) -> IO (SparseMatrix e)-sparseMat bnds (h,w) = replicateM h sparseVec- where- sparseVec = do- nz <- randomRIO bnds -- number of non-zero elements- idx <- nub . sort <$> randomListR nz (0,w-1) -- remove duplicate column indices- zip idx <$> randomList (length idx) -- (column indices don't actually need to be sorted)--denseMat :: (Num e, Random e, Storable e) => (Int,Int) -> IO (SparseMatrix e)-denseMat (h,w) = replicateM h (zip [0..] <$> randomList w)------- Some test-harness utilities----stats :: (Floating a, Ord a) => [a] -> (a,a,a,a,a,a)-stats (x:xs) = finish . foldl' stats' (x,x,x,x*x,1) $ xs- where- stats' (mn,mx,s,ss,n) v = (min v mn, max v mx, s+v, ss+v*v, n+1)- finish (mn,mx,s,ss,n) = (mn, mx, av, var, stdev, n)- where av = s/n- var = (1/(n-1))*ss - (n/(n-1))*av*av- stdev = sqrt var---testAlgorithm :: (Num e, Ord e, Floating e)- => String -- name of the algorithm- -> (SparseMatrix e -> Vector e -> IO (Float, Vector e)) -- return time (ms), and result- -> SparseMatrix e -- input matrix- -> Vector e -- input vector- -> Vector e -- reference solution- -> IO ()-testAlgorithm name f m v ref = do- putStr name- (t,y) <- f m v- putStr $ if verifyList ref y then "Ok! " else "INVALID! "- putStr $ "( " ++ showFFloat (Just 2) t " ms, "- putStrLn $ showFFloat (Just 2) (fromIntegral (2 * 1000 * sum (map length m)) / (t * 1E9)) " GFLOPS )"---testMatrix :: String -> SparseMatrix Float -> Vector Float -> IO ()-testMatrix name sm v = do- let w = length v- (_,_,av,_,stdev,h) = stats (map (fromIntegral . length) sm)- ref = smvm sm v-- putStr $ name ++ ": " ++ show w ++ "x" ++ show (round h)- putStr $ ", " ++ shows (round (av*h)) " non-zero elements "- putStrLn $ "( " ++ showFFloat (Just 2) av " +/- " ++ showFFloat (Just 2) stdev " )"-- testAlgorithm " smvm-csr: " smvm_csr sm v ref- testAlgorithm " smvm-cudpp: " smvm_cudpp sm v ref- putStrLn ""-------- Finally, the main function----main :: IO ()-main = do- dev <- CUDA.get- props <- CUDA.props dev- putStrLn $ "Using device " ++ show dev ++ ": \"" ++ CUDA.deviceName props ++ "\""- putStrLn $ " Compute capability: " ++ show (CUDA.computeCapability props)- putStrLn $ " Total global memory: " ++- showFFloat (Just 2) (fromIntegral (CUDA.totalGlobalMem props) / (1024*1024) :: Double) " GB\n"-- v1 <- randomList 512- v2 <- randomList 2048- m1 <- denseMat (512,512)- m2 <- sparseMat (20,200) (20 * 2048,2048)-- testMatrix "Dense Matrix" m1 v1- testMatrix "Sparse Matrix" m2 v2-
− examples/src/smvm/smvm-csr.cu
@@ -1,246 +0,0 @@-/*- * Copyright 2008-2009 NVIDIA Corporation- *- * Licensed under the Apache License, Version 2.0 (the "License");- * you may not use this file except in compliance with the License.- * You may obtain a copy of the License at- *- * http://www.apache.org/licenses/LICENSE-2.0- *- * Unless required by applicable law or agreed to in writing, software- * distributed under the License is distributed on an "AS IS" BASIS,- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.- * See the License for the specific language governing permissions and- * limitations under the License.- */---#include "smvm.h"-#include "utils.h"-#include "texture.h"---/* ------------------------------------------------------------------------------ * Sparse-matrix dense-vector multiplication, compressed-sparse row format- * ------------------------------------------------------------------------------ *- * Each row of the CSR matrix is assigned to a warp, which computes the dot- * product of the i-th row of A with the x vector, in parallel.- *- * y[i] = A[i,:] * x- *- * This division of work implies that the CSR index and data arrays (Aj and Ax)- * are accessed in a contiguous manner (but generally not aligned). On the GT200- * these accesses are coalesced, unlike kernels based on the one-row-per-thread- * division of work. Since an entire 32-thread warp is assigned to each row,- * many threads will remain idle when their row contains a small number of- * elements. This code relies on implicit synchronization among threads in a- * warp.- *- * Optionally, the texture cache may be used for accessing the x vector. This- * generally shows good improvements.- *- * References:- *- * [1] N. Bell and M. Garland. "Efficient sparse matrix-vector multiplication on- * CUDA." NVIDIA Technical Report NVR-2008-004, NVIDIA Corporation, Dec. 2008.- *- * [2] N. Bell and M. Garland. "Implementing sparse matrix-vector- * multiplication on throughput-oriented processors." In Supercomputing- * `09: Proceedings of the 2009 Conference on High Performance Computing- * Networking, Storage and Analysis, pages 1-11, 2009.- */-template <unsigned int BlockSize, typename T, bool UseCache>-__global__ static void-smvm_k-(- T *d_y,- const T *d_x,- const T *d_Ax,- const unsigned int *d_Ap,- const unsigned int *d_Aj,- const unsigned int num_rows-)-{- /*- * Require at least a full warp for each row. This could be relaxed by- * modifying the cooperative reduction step- */- assert(BlockSize % WARP_SIZE == 0);-- const unsigned int vectorsPerBlock = BlockSize / WARP_SIZE;- const unsigned int num_vectors = vectorsPerBlock * gridDim.x;- const unsigned int thread_id = BlockSize * blockIdx.x + threadIdx.x;- const unsigned int vector_id = thread_id / WARP_SIZE;- const unsigned int thread_lane = threadIdx.x & (WARP_SIZE-1);- const unsigned int vector_lane = threadIdx.x / WARP_SIZE;-- __shared__ volatile T s_data[(vectorsPerBlock+1) * WARP_SIZE];- __shared__ volatile unsigned int s_ptrs[vectorsPerBlock][2];-- for (unsigned int row = vector_id; row < num_rows; row += num_vectors)- {- /*- * Use two threads to fetch the indices of the start and end of this- * segment. This is a single coalesced (although unaligned) global read- * rather than two, and hence considerably faster.- */- if (thread_lane < 2)- s_ptrs[vector_lane][thread_lane] = d_Ap[row + thread_lane];-- __EMUSYNC;- const unsigned int row_start = s_ptrs[vector_lane][0];- const unsigned int row_end = s_ptrs[vector_lane][1];-- /*- * Have the threads read in all values for this row, accumulating local- * dot-product sums. Then, reduce this cooperatively in shared memory.- */- T sum = 0;- for (unsigned int j = row_start + thread_lane; j < row_end; j += WARP_SIZE)- sum += d_Ax[j] * fetch_x<UseCache>(d_Aj[j], d_x);-- s_data[threadIdx.x] = sum; __EMUSYNC;- s_data[threadIdx.x] = sum = sum + s_data[threadIdx.x + 16]; __EMUSYNC;- s_data[threadIdx.x] = sum = sum + s_data[threadIdx.x + 8]; __EMUSYNC;- s_data[threadIdx.x] = sum = sum + s_data[threadIdx.x + 4]; __EMUSYNC;- s_data[threadIdx.x] = sum = sum + s_data[threadIdx.x + 2]; __EMUSYNC;- s_data[threadIdx.x] = sum = sum + s_data[threadIdx.x + 1]; __EMUSYNC;--#if 0- /*- * Alternative method (slightly slower, due to bank conflicts?)- */- s_data[threadIdx.x] += s_data[threadIdx.x + 16];- s_data[threadIdx.x] += s_data[threadIdx.x + 8];- s_data[threadIdx.x] += s_data[threadIdx.x + 4];- s_data[threadIdx.x] += s_data[threadIdx.x + 2];- s_data[threadIdx.x] += s_data[threadIdx.x + 1];-#endif-- /*- * Finally, first thread writes the result for this row- */- if (thread_lane == 0)- d_y[row] = s_data[threadIdx.x];- }-}---template <typename T, bool UseCache>-static void-smvm_dispatch-(- T *d_y,- const T *d_x,- const T *d_data,- const unsigned int *d_ptr,- const unsigned int *d_indices,- const unsigned int num_rows,- const unsigned int blocks,- const unsigned int threads-)-{- const unsigned int smem = 0;-- switch (threads)- {- case 512: smvm_k<512,T,UseCache><<<blocks,threads,smem>>>(d_y, d_x, d_data, d_ptr, d_indices, num_rows); break;- case 256: smvm_k<256,T,UseCache><<<blocks,threads,smem>>>(d_y, d_x, d_data, d_ptr, d_indices, num_rows); break;- case 128: smvm_k<128,T,UseCache><<<blocks,threads,smem>>>(d_y, d_x, d_data, d_ptr, d_indices, num_rows); break;- case 64: smvm_k< 64,T,UseCache><<<blocks,threads,smem>>>(d_y, d_x, d_data, d_ptr, d_indices, num_rows); break;- case 32: smvm_k< 32,T,UseCache><<<blocks,threads,smem>>>(d_y, d_x, d_data, d_ptr, d_indices, num_rows); break;- default:- assert(!"Non-exhaustive patterns in match");- }-}---/*- * Select an "optimal" number of threads and blocks for the problem size. This- * is an act of balancing resource usage: shared memory, registers, in-flight- * threads and blocks per multiprocessor. Ultimately, this requires some- * experimentation for every kernel, device and problem set, but we choose some- * sensible default values.- *- * Additionally, each block will have at least one full warp, as required by the- * core kernel.- */-static void-smvm_control-(- unsigned int n,- unsigned int &blocks,- unsigned int &threads,- unsigned int maxThreads = MAX_THREADS,- unsigned int maxBlocks = MAX_BLOCKS--)-{- threads = (n < maxThreads) ? max(WARP_SIZE, ceilPow2(n)) : maxThreads;- blocks = (n + threads - 1) / threads;- blocks = min(blocks, maxBlocks);-}---/*- * Sparse matrix multiplication:- * y = A * x- *- * The CSR format explicitly stores column indices (indices) and non-zero values- * (data) in row-major order, together with a third array of row pointers (ptr).- * For an M-by-N matrix, ptr has length (M+1) and stores the offset to the start- * of the i-th row in ptr[i]. The last entry then, corresponding to the (M+1)-st- * row, contains the number of non-zero elements in the matrix.- *- * Example:- * | 1 7 0 0 |- * A = | 0 2 8 0 |- * | 5 0 3 9 |- * | 0 6 0 4 |- *- * ptr = [ 0 2 4 7 9 ]- * indices = [ 0 1 1 2 0 2 3 1 3 ]- * data = [ 1 7 2 8 5 3 9 6 4 ]- *- * d_y The output vector- * d_x The input (dense) vector to multiply against- * d_data The non-zero elements of the sparse, stored row-major order- * d_ptr Row offsets- * d_indices Column indices- */-template <typename T, bool UseCache>-static void-smvm_csr-(- T *d_y,- const T *d_x,- const T *d_data,- const unsigned int *d_ptr,- const unsigned int *d_indices,- const unsigned int num_rows-)-{- unsigned int blocks;- unsigned int threads;-- if (UseCache)- bind_x(d_x);-- smvm_control(num_rows, blocks, threads);- smvm_dispatch<T,UseCache>(d_y, d_x, d_data, d_ptr, d_indices, num_rows, blocks, threads);-- if (UseCache)- unbind_x(d_x);-}--/* ------------------------------------------------------------------------------ * Instances- * ---------------------------------------------------------------------------*/--void-smvm_csr_f(float *d_y, float *d_x, float *d_data, unsigned int *d_rowPtr, unsigned int *d_colIdx, unsigned int num_rows)-{- smvm_csr<float,true>(d_y, d_x, d_data, d_rowPtr, d_colIdx, num_rows);-}-
− examples/src/smvm/smvm-cudpp.cu
@@ -1,56 +0,0 @@-/* ------------------------------------------------------------------------------ *- * Module : SMVM- * Copyright : (c) 2009 Trevor L. McDonell- * License : BSD- *- * ---------------------------------------------------------------------------*/---#include "smvm.h"-#include <cudpp.h>--template <typename T> CUDPPDatatype getType();-template <> CUDPPDatatype getType<float>() { return CUDPP_FLOAT; }-template <> CUDPPDatatype getType<unsigned int>() { return CUDPP_UINT; }---/*- * Sparse matrix-dense vector multiply. Hook directly into the CUDPP- * implementation.- */-template <typename T>-void smvm_cudpp-(- float *d_y,- const float *d_x,- const float *h_data,- const unsigned int *h_rowPtr,- const unsigned int *h_colIdx,- const unsigned int num_rows,- const unsigned int num_nonzeros-)-{- CUDPPConfiguration cp;- CUDPPHandle sm;-- cp.datatype = getType<T>();- cp.options = 0;- cp.algorithm = CUDPP_SPMVMULT;-- cudppSparseMatrix(&sm, cp, num_nonzeros, num_rows, h_data, h_rowPtr, h_colIdx);- cudppSparseMatrixVectorMultiply(sm, d_y, d_x);-- cudppDestroySparseMatrix(sm);-}---// ------------------------------------------------------------------------------// Instances-// -------------------------------------------------------------------------------void smvm_cudpp_f(float *d_y, float *d_x, float *h_data, unsigned int *h_rowPtr, unsigned int *h_colIdx, unsigned int num_rows, unsigned int num_nonzeros)-{- smvm_cudpp<float>(d_y, d_x, h_data, h_rowPtr, h_colIdx, num_rows, num_nonzeros);-}-
− examples/src/smvm/smvm.h
@@ -1,33 +0,0 @@-/* ------------------------------------------------------------------------------ *- * Module : SMVM- * Copyright : (c) 2009 Trevor L. McDonell- * License : BSD- *- * ---------------------------------------------------------------------------*/--#ifndef __SMVM_H__-#define __SMVM_H__--/*- * Optimised for Tesla C1060 (compute 1.3)- * Maximum performance for your card may be achieved with different values.- *- * http://developer.download.nvidia.com/compute/cuda/CUDA_Occupancy_calculator.xls- */-#define MAX_THREADS 128-#define MAX_BLOCKS_PER_SM 8-#define MAX_BLOCKS (MAX_BLOCKS_PER_SM * 30)-#define WARP_SIZE 32--#ifdef __cplusplus-extern "C" {-#endif--void smvm_csr_f(float *d_y, float *d_x, float *d_data, unsigned int *d_rowPtr, unsigned int *d_colIdx, unsigned int num_rows);-void smvm_cudpp_f(float *d_y, float *d_x, float *h_data, unsigned int *h_rowPtr, unsigned int *h_colIdx, unsigned int num_rows, unsigned int num_nonzeros);--#ifdef __cplusplus-}-#endif-#endif
− examples/src/smvm/texture.h
@@ -1,94 +0,0 @@-/*- * Copyright 2008-2009 NVIDIA Corporation- *- * Licensed under the Apache License, Version 2.0 (the "License");- * you may not use this file except in compliance with the License.- * You may obtain a copy of the License at- *- * http://www.apache.org/licenses/LICENSE-2.0- *- * Unless required by applicable law or agreed to in writing, software- * distributed under the License is distributed on an "AS IS" BASIS,- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.- * See the License for the specific language governing permissions and- * limitations under the License.- */---#ifndef __TEXTURE_H__-#define __TEXTURE_H__--#include "utils.h"-#include <cuda_runtime_api.h>--/*- * These textures are (optionally) used to cache the 'x' vector in y += A*x- * Use int2 to pull doubles through texture cache.- */-texture<float,1> tex_x_float;-texture<int2,1> tex_x_double;--inline void-bind_x(const float * x)-{- size_t offset = size_t(-1);-- CUDA_SAFE_CALL(cudaBindTexture(&offset, tex_x_float, x));- if (offset != 0)- assert(!"memory is not aligned, refusing to use texture cache");-}--inline void-bind_x(const double * x)-{- size_t offset = size_t(-1);-- CUDA_SAFE_CALL(cudaBindTexture(&offset, tex_x_double, x));- if (offset != 0)- assert(!"memory is not aligned, refusing to use texture cache");-}--/*- * NOTE: the parameter is unused only to distinguish the two unbind functions- */-inline void-unbind_x(const float *)-{- CUDA_SAFE_CALL(cudaUnbindTexture(tex_x_float));-}--inline void-unbind_x(const double *)-{- CUDA_SAFE_CALL(cudaUnbindTexture(tex_x_double));-}--template <bool UseCache>-__inline__ __device__ float-fetch_x(const int& i, const float * x)-{- if (UseCache) return tex1Dfetch(tex_x_float, i);- else return x[i];-}--#ifndef CUDA_NO_SM_13_DOUBLE_INTRINSICS-template <bool UseCache>-__inline__ __device__ double fetch_x(const int& i, const double * x)-{-#if __CUDA_ARCH__ < 130-#error "double precision require Compute Compatibility 1.3 or greater"-#endif- if (UseCache)- {- int2 v = tex1Dfetch(tex_x_double, i);- return __hiloint2double(v.y, v.x);- }- else- {- return x[i];- }-}-#endif--#endif // __TEXTURE_H__-
− examples/src/sort/Makefile
@@ -1,19 +0,0 @@-#-# Baking!-#--# -------------------------------------------------------------------------------# Input files-# -------------------------------------------------------------------------------EXECUTABLE := sort--HSMAIN := Sort.chs-CUFILES := radix_sort.cu--USECUDPP := 1-EXTRALIBS := stdc++--# -------------------------------------------------------------------------------# Haskell/CUDA build system-# -------------------------------------------------------------------------------include ../../common/common.mk
− examples/src/sort/Sort.chs
@@ -1,98 +0,0 @@-{-# LANGUAGE ForeignFunctionInterface #-}--------------------------------------------------------------------------------------- Module : Sort--- Copyright : (c) 2009 Trevor L. McDonell--- License : BSD------ Reduce a vector of (key,value) pairs--------------------------------------------------------------------------------------module Main where--#include "sort.h"--import C2HS-import RandomVector--import Data.Ord-import Data.List-import Control.Monad-import qualified Foreign.CUDA as C--------------------------------------------------------------------------------------- CUDA--test_f :: (Storable a, Eq a) => [(Float,a)] -> IO Bool-test_f kv =- let l = length kv- (k,v) = unzip kv- in- C.withListArray k $ \d_k ->- C.withListArray v $ \d_v -> do-- sort_f d_k d_v (length kv)- res <- liftM2 zip (C.peekListArray l d_k) (C.peekListArray l d_v)- return (res == sortBy (comparing fst) kv)---test_i :: (Storable a, Eq a) => [(Int,a)] -> IO Bool-test_i kv =- let l = length kv- (k,v) = unzip kv- in- C.withListArray k $ \d_k ->- C.withListArray v $ \d_v -> do-- sort_ui d_k d_v (length kv)- res <- liftM2 zip (C.peekListArray l d_k) (C.peekListArray l d_v)- return (res == sortBy (comparing fst) kv)---{# fun unsafe sort_f- { withDP* `C.DevicePtr Float'- , withDP* `C.DevicePtr a'- , `Int'- } -> `()' #}- where- withDP p a = C.withDevicePtr p $ \p' -> a (castPtr p')--{# fun unsafe sort_ui- { withDP* `C.DevicePtr Int'- , withDP* `C.DevicePtr a'- , `Int'- } -> `()' #}- where- withDP p a = C.withDevicePtr p $ \p' -> a (castPtr p')------- I don't need to learn template haskell or quick check... nah, not at all...----main :: IO ()-main = do- f <- randomList 10000- i <- randomListR 10000 (0,1000)-- putStr "Test (float,int): "- test_f (zip f i) >>= \r -> case r of- True -> putStrLn "Ok!"- _ -> putStrLn "INVALID!"-- putStr "Test (float,float): "- test_f (zip f f) >>= \r -> case r of- True -> putStrLn "Ok!"- _ -> putStrLn "INVALID!"-- putStr "Test (int,int): "- test_i (zip i i) >>= \r -> case r of- True -> putStrLn "Ok!"- _ -> putStrLn "INVALID!"-- putStr "Test (int,float): "- test_i (zip i f) >>= \r -> case r of- True -> putStrLn "Ok!"- _ -> putStrLn "INVALID!"-
− examples/src/sort/radix_sort.cu
@@ -1,61 +0,0 @@-/* ------------------------------------------------------------------------------ *- * Module : Sort- * Copyright : (c) 2009 Trevor L. McDonell- * License : BSD- *- *----------------------------------------------------------------------------*/--#include <cudpp.h>--#include "sort.h"---template <typename T> CUDPPDatatype static getType();-template <> CUDPPDatatype getType<float>() { return CUDPP_FLOAT; }-template <> CUDPPDatatype getType<unsigned int>() { return CUDPP_UINT; }---/*- * In-place radix sort of values or key-value pairs. Values can be any 32-bit- * type, as their payload is never inspected or manipulated.- */-template <typename T>-static void-radix_sort-(- unsigned int length,- T *d_keys,- void *d_vals = NULL,- int bits = 8 * sizeof(T)-)-{- CUDPPHandle plan;- CUDPPConfiguration cp;-- cp.datatype = getType<T>();- cp.algorithm = CUDPP_SORT_RADIX;- cp.options = (d_vals != NULL) ? CUDPP_OPTION_KEY_VALUE_PAIRS- : CUDPP_OPTION_KEYS_ONLY;-- cudppPlan(&plan, cp, length, 1, 0);- cudppSort(plan, d_keys, d_vals, bits, length);-- cudppDestroyPlan(plan);-}---/* ------------------------------------------------------------------------------ * Instances- * ---------------------------------------------------------------------------*/--void sort_f(float *d_keys, void *d_vals, unsigned int length)-{- radix_sort<float>(length, d_keys, d_vals);-}--void sort_ui(unsigned int *d_keys, void *d_vals, unsigned int length)-{- radix_sort<unsigned int>(length, d_keys, d_vals);-}-
− examples/src/sort/sort.h
@@ -1,23 +0,0 @@-/* ------------------------------------------------------------------------------ *- * Module : Sort- * Copyright : (c) 2009 Trevor L. McDonell- * License : BSD- *- * ---------------------------------------------------------------------------*/--#ifndef __SORT_PRIV_H__-#define __SORT_PRIV_H__--#ifdef __cplusplus-extern "C" {-#endif--void sort_f(float *d_keys, void *d_vals, unsigned int length);-void sort_ui(unsigned int *d_keys, void *d_vals, unsigned int length);--#ifdef __cplusplus-}-#endif-#endif-
− examples/src/vectorAddDrv/Makefile
@@ -1,18 +0,0 @@-#-# Baking!-#--# -------------------------------------------------------------------------------# Input files-# -------------------------------------------------------------------------------EXECUTABLE := vectorAddDrv--HSMAIN := VectorAdd.hs-PTXFILES := vector_add.cu--USEDRVAPI := 1--# -------------------------------------------------------------------------------# Haskell/CUDA build system-# -------------------------------------------------------------------------------include ../../common/common.mk
− examples/src/vectorAddDrv/VectorAdd.hs
@@ -1,121 +0,0 @@--------------------------------------------------------------------------------------- Module : VectorAdd--- Copyright : (c) 2009 Trevor L. McDonell--- License : BSD------ Element-wise addition of two vectors--------------------------------------------------------------------------------------module Main where---- Friends-import RandomVector---- System-import Numeric-import Control.Monad-import Control.Exception-import Data.Array.Storable-import qualified Data.ByteString.Char8 as B-import qualified Foreign.CUDA.Driver as CUDA-------------------------------------------------------------------------------------- Reference implementation-----------------------------------------------------------------------------------testRef :: (Num e, Storable e) => Vector e -> Vector e -> IO (Vector e)-testRef xs ys = do- (i,j) <- getBounds xs- res <- newArray_ (i,j)- forM_ [i..j] (add res)- return res- where- add res idx = do- a <- readArray xs idx- b <- readArray ys idx- writeArray res idx (a+b)------------------------------------------------------------------------------------- CUDA---------------------------------------------------------------------------------------- Initialise the device and context. Load the PTX source code, and return a--- reference to the kernel function.----initCUDA :: IO (CUDA.Context, CUDA.Fun)-initCUDA = do- CUDA.initialise []- dev <- CUDA.device 0- ctx <- CUDA.create dev []- ptx <- B.readFile "data/vector_add.ptx"- (mdl,r) <- CUDA.loadDataEx ptx [CUDA.MaxRegisters 32]- fun <- CUDA.getFun mdl "VecAdd"-- putStrLn $ ">> PTX JIT compilation (" ++ showFFloat (Just 2) (CUDA.jitTime r) " ms)"- B.putStrLn (CUDA.jitInfoLog r)- return (ctx,fun)-------- Run the test----testCUDA :: (Num e, Storable e) => Vector e -> Vector e -> IO (Vector e)-testCUDA xs ys = do- (m,n) <- getBounds xs- let len = (n-m+1)-- -- Initialise environment and copy over test data- --- putStrLn ">> Initialising"- bracket initCUDA (\(ctx,_) -> CUDA.destroy ctx) $ \(_,addVec) -> do-- -- Allocate some device memory. This will be freed once the computation- -- terminates, either normally or by exception.- --- putStrLn ">> Executing"- CUDA.allocaArray len $ \dx -> do- CUDA.allocaArray len $ \dy -> do- CUDA.allocaArray len $ \dz -> do-- -- Copy over the data- --- withVector xs $ \p -> CUDA.pokeArray len p dx- withVector ys $ \p -> CUDA.pokeArray len p dy-- -- Setup and execute the kernel (repeat test many times...)- --- CUDA.setParams addVec [CUDA.VArg dx, CUDA.VArg dy, CUDA.VArg dz, CUDA.IArg len]- CUDA.setBlockShape addVec (128,1,1)- CUDA.launch addVec ((len+128-1) `div` 128, 1) Nothing- CUDA.sync-- -- Copy back result- --- zs <- newArray_ (m,n)- withVector zs $ \p -> CUDA.peekArray len dz p- return zs-------------------------------------------------------------------------------------- Test & Verify-----------------------------------------------------------------------------------main :: IO ()-main = do- putStrLn "== Generating random vectors"- xs <- randomArr (1,10000) :: IO (Vector Float)- ys <- randomArr (1,10000) :: IO (Vector Float)-- putStrLn "== Generating reference solution"- ref <- testRef xs ys-- putStrLn "== Testing CUDA"- arr <- testCUDA xs ys-- putStr "== Validating: "- verify ref arr >>= \rv -> putStrLn $ if rv then "Ok!" else "INVALID!"-
− examples/src/vectorAddDrv/vector_add.cu
@@ -1,18 +0,0 @@-/*- * Name : VectorAdd- * Copyright : (c) 2009 Trevor L. McDonell- * License : BSD- *- * Element-wise addition of two (floating-point) vectors- */---extern "C"-__global__ void VecAdd(const float *xs, const float *ys, float *out, const unsigned int N)-{- unsigned int idx = blockDim.x * blockIdx.x + threadIdx.x;-- if (idx < N)- out[idx] = xs[idx] + ys[idx];-}-