From 9c1d31bf8eab050413375ff43bebb41fc792fd0d Mon Sep 17 00:00:00 2001 From: Khilan Ravani Date: Tue, 15 May 2018 13:29:15 +0530 Subject: [PATCH 01/25] Preliminary Hough Transform Implementation We first extract some information from the image - width, height etc., convert to luma and compute gradients. Then, for each pixel (x,y), we compute rho = xcos(theta) + ysin(theta). After a few more transformations and finding the bins with highest values, we generate the resulting image. --- hip.cabal | 2 + src/Graphics/Image/HoughTransform.hs | 167 +++++++++++++++++++++++++ src/Graphics/Image/Processing/Hough.hs | 134 ++++++++++++++++++++ 3 files changed, 303 insertions(+) create mode 100644 src/Graphics/Image/HoughTransform.hs create mode 100644 src/Graphics/Image/Processing/Hough.hs diff --git a/hip.cabal b/hip.cabal index 015728d..f40a088 100644 --- a/hip.cabal +++ b/hip.cabal @@ -44,6 +44,7 @@ Library , repa >= 3.2.1.1 && < 4 , temporary >= 1.1.1 , vector >= 0.10 + , array Other-Extensions: BangPatterns , ConstraintKinds , CPP @@ -67,6 +68,7 @@ Library , Graphics.Image.Processing.Binary , Graphics.Image.Processing.Complex , Graphics.Image.Processing.Filter + , Graphics.Image.Processing.Hough , Graphics.Image.Types Other-Modules: Graphics.Image.ColorSpace.Binary , Graphics.Image.ColorSpace.CMYK diff --git a/src/Graphics/Image/HoughTransform.hs b/src/Graphics/Image/HoughTransform.hs new file mode 100644 index 0000000..387d998 --- /dev/null +++ b/src/Graphics/Image/HoughTransform.hs @@ -0,0 +1,167 @@ +{-# LANGUAGE FlexibleContexts #-} +module Graphics.Image.Processing.HoughTransform where + +import Control.Applicative +import System.Environment (getArgs, getProgName) +import Control.Monad (forM_, when) +import Control.Monad.ST +import qualified Data.Foldable as F (maximum) +-- import Data.Massiv.Array.IO +import Data.List +import Data.Array.MArray + +import Prelude as P hiding (subtract) +import Graphics.Image.Processing.Filter +import Graphics.Image as GI +import Graphics.Image.ColorSpace +import Graphics.Image.IO +import Graphics.Image.Interface as I +import Graphics.Image.Types as IP + +-- ######### Read Image ########## +-- readImageRGB :: Array arr RGB Double => arr -> FilePath -> IO (Image arr RGB Double) +-- readImageRGB _ = readImage' + +-- frog <- readImageRGB VU "images/frog.jpg" +-- writeImage "images/frog_eye_grid.png" $ pixelGrid 10 $ crop (51, 112) (20, 20) frog + +-- makeImage :: Array arr cs e => (Int, Int) -> ((Int, Int) -> Pixel cs e) -> Image arr cs e + +-- ######## Convert to Luma ######### + +toImageY :: (ToY cs e, Array arr cs e, Array arr Y Double) => + Image arr cs e + -> Image arr Y Double +toImageY = I.map toPixelY + +-- ####### Some trivial functions ######## +subtract :: Num x => (x, x) -> (x, x) -> (x, x) +subtract (x1, y1) (x2, y2) = (x1 - x2, y1 - y2) + +dotProduct :: Num x => (x, x) -> (x, x) -> x +dotProduct (x1, y1) (x2, y2) = (x1 * x2) + (y1 * y2) + +mag :: Floating x => (x, x) -> x +mag x = sqrt (dotProduct x x) + +fromIntegralP :: (Integral x, Num y) => (x, x) -> (y, y) +fromIntegralP (x1, y1) = (fromIntegral x1, fromIntegral y1) + +{- +-- trying something new - Functor usage! +instance Functor P where + fmap f (x :| y) = f x :| f y + +fromIntegralP :: (Integral a, Num b) => P a -> P b +fromIntegralP = fmap fromIntegral +-} + +-- ######## Hough-T function begins + +hough :: Image arr RGBA a -> Int -> Int -> Image arr RGBA a +hough image thetaSize distSize = hImage + where + widthMax = (GI.rows image) - 1 + heightMax = (GI.cols image) - 1 + xCtr = widthMax / 2 + yCtr = heightMax / 2 + --luma = IP.toImageY image + + arr = makeImage (200, 200) (\(i, j) -> PixelY $ fromIntegral (i*j)) / (200*200) + luma = fmap PixelY arr + + slope x y = + let orig = I.index luma (xCtr, yCtr) + x_ = I.index luma (widthMax,y) + y_ = I.index luma (x,heightMax) + in fromIntegralP (orig - x_, orig - y_) + -- List + slopeMap = [ ((x, y), slope x y) | x <- [0 .. widthMax], y <- [0 .. heightMax] ] + + -- Type declaration + distMax :: Double + distMax = (sqrt . fromIntegral $ (heightMax + 1) ^ 2 + (widthMax + 1) ^ 2) / 2 + + minLineLength :: Int + minLineLength = 100 + + maxLineGap :: Int + maxLineGap = 10 + + + accBin = runST $ + do arr <- newArray ((0, 0), (thetaSize, distSize)) 0 + forM_ slopeMap $ \((x, y), gradient) -> do + let (x_, y_) = fromIntegralP ((xCtr, yCtr) `subtract` (x, y)) + when ((mag gradient) > 127) $ + forM_ [0 .. thetaSize] $ \theta -> do + let theta_ = + fromIntegral theta * 360 / fromIntegral thetaSize / 180 * + pi :: Double + distance = round (cos theta_ * x_ + sin theta_ * y_) * ( distSize / fromIntegral distMax) + --fromIntegral distance_ = round (distance * fromIntegral distSize )/ distMax + idx = (theta, distance) + -- optimization possible + -- minLineLength = 100 (pixels) and maxLineGap = 10 (pixels) + when (distance>= 0 && distance < distSize) $ + do old <- readArray arr idx + writeArray arr idx (old + 1) + return arr + + maxAcc = F.maximum accBin + -- Generating function + hTransform x y = + let l = 255 - round ((I.index accBin (x, y)) /255 ) * maxAcc + in PixelRGBA l l l l + hImage = makeImage (thetaSize, distSize) hTransform + +houghIO :: FilePath -> FilePath -> Int -> Int -> IO () +houghIO path outpath thetaSize distSize = do + eimg <- readImage path + case eimg of + Left err -> putStrLn ("Could not read image: " ++ err) + Right image_ -> doImage image_ + _ -> putStrLn "Unexpected Pixel Format" + where + doImage :: Image VS RGBA Double -> IO () + doImage image = do + let houghImage = hough image thetaSize distSize + writeImage outpath houghImage + +{- ######### Helper functions ######### + transpose :: Array arr cs e => Image arr cs e -> Image arr cs e + index :: MArray arr cs e => Image arr cs e -> (Int, Int) -> Pixel cs e -- Pixel at ith, jth + dims :: BaseArray arr cs e => Image arr cs e -> (Int, Int) -- get dimensions of image + >>> frog <- readImageRGB VU "images/frog.jpg" + >>> frog + + >>> dims frog + (200,320) + + displayImage :: (Array VS cs e, Array arr cs e, Writable (Image VS cs e) TIF) => Image arr cs e -> IO () + writeImage :: (Array VS cs e, Array arr cs e, Writable (Image VS cs e) OutputFormat) => FilePath -> Image arr cs e -> IO () + + instance ToY RGB where + toPixelY (PixelRGB r g b) = PixelY (0.299*r + 0.587*g + 0.114*b) + + toImageBinary :: (Array arr cs e, Array arr Binary Bit, Eq (Pixel cs e)) => Image arr cs e -> Image arr Binary Bit + toImageBinary = I.map toPixelBinary + + makeImage :: Array arr cs e => (Int, Int) -> ((Int, Int) -> Pixel cs e) -> Image arr cs e -- Given generating function and dimensions + pixelAt :: Image a -> Int -> Int -> a + +-} + +{- +main :: IO () +main = do + args <- getArgs + prog <- getProgName + case args of + [path, outpath, thetaSize, distSize] -> + houghIO path outpath (P.read thetaSize) (P.read distSize) + _ -> + putStrLn $ + "Usage: " ++ prog ++ " " +-} + diff --git a/src/Graphics/Image/Processing/Hough.hs b/src/Graphics/Image/Processing/Hough.hs new file mode 100644 index 0000000..bad16a8 --- /dev/null +++ b/src/Graphics/Image/Processing/Hough.hs @@ -0,0 +1,134 @@ +{-# LANGUAGE RankNTypes #-} +{-# LANGUAGE FlexibleContexts #-} +{-# LANGUAGE ScopedTypeVariables #-} + +-- | Hough Transform is used as a part of feature extraction in images. +-- It is a tool that makes it far easier to identify straight lines in +-- the source image, whatever their orientation. +module Graphics.Image.Processing.Hough where + +import Control.Monad (forM_, when) +import qualified Data.Foldable as F (maximum) +import Data.Array +import Data.Array.ST (newArray, writeArray, readArray, runSTArray) + +import Prelude as P hiding (subtract) +import Graphics.Image +import Graphics.Image.Interface as I +import Graphics.Image.Types as IP + +-- | Some helper functions : +-- | toImageY : Converts an image to Luma Image +toImageY :: (ToY cs e, IP.Array arr cs e, IP.Array arr Y Double) => + Image arr cs e + -> Image arr Y Double +toImageY = I.map toPixelY + +-- | Trivial function for subtracting co-ordinate pairs +sub :: Num x => (x, x) -> (x, x) -> (x, x) +sub (x1, y1) (x2, y2) = (x1 - x2, y1 - y2) + +-- | Compute the sum of squares or dot product of a given pair of co-ordinates +dotProduct :: Num x => (x, x) -> (x, x) -> x +dotProduct (x1, y1) (x2, y2) = (x1 * x2) + (y1 * y2) + +-- | Conversion of pair fromIntegral +fromIntegralP :: (Integral x, Num y) => (x, x) -> (y, y) +fromIntegralP (x1, y1) = (fromIntegral x1, fromIntegral y1) + +-- | Compute magnitude +mag :: Floating x => (x, x) -> x +mag x = sqrt (dotProduct x x) + +-- | 'hough' computes the Linear Hough Transform and maps each point in the target image, ​ (ρ, θ) ​ +-- to the average color of the pixels on the corresponding line of the source image ​(x,y) ​- space, +-- where the line corresponds to points of the form ​(xcosθ + ysinθ = ρ(rho)). +-- +-- The idea is that where there is a straight line in the original image, it corresponds to a +-- bright (or dark, depending on the color of the background field) spot; by applying a suitable +-- filter to the results of the transform, it is possible to extract the locations of the lines in the original image. +-- +-- <> +-- +-- Usage : +-- +-- >>> frog <- readImageRGB VU "frog_rbg.jpg" +-- >>> input1 <- getLine +-- >>> input2 <- getLine +-- >>> let thetaSz = (P.read input1 :: Int) +-- >>> let distSz = (P.read input2 :: Int) +-- >>> let houghImage :: Image VU RGB Double +-- >>> houghImage = hough frog thetaSz distSz +-- >>> writeImage "test.png" houghImage +-- +hough + :: forall arr a. + ( IP.Array arr RGB a, IP.Array arr RGB Word8 + , MArray arr Y Double, IP.Array arr Y Double + , IP.Array arr RGB Double + ) + => Image arr RGB a + -> Int + -> Int + -> Image arr RGB Double +hough image thetaSz distSz = I.map (fmap toDouble) hImage + where + widthMax, xCtr, heightMax, yCtr :: Int + widthMax = ((rows image) - 1) + xCtr = (widthMax `div` 2) + heightMax = ((cols image) - 1) + yCtr = (heightMax `div` 2) + + luma :: Image arr Y Double + luma = IP.toImageY image + + slope :: Int -> Int -> (Double, Double) + slope x y = + let PixelY orig = I.index luma (x, y) + PixelY x' = I.index luma (min (x+1) widthMax, y) + PixelY y' = I.index luma (x, min (y+1) heightMax) + in (orig - x', orig - y') + + slopeMap :: [ ((Int, Int), (Double, Double)) ] + slopeMap = [ ((x, y), slope x y) | x <- [0 .. widthMax], y <- [0 .. heightMax] ] + + distMax :: Double -- Compute Maximum distance + distMax = (sqrt . fromIntegral $ (heightMax + 1) ^ (2 :: Int) + (widthMax + 1) ^ (2 :: Int)) / 2 + + accBin = runSTArray $ -- Core part of Algo begins here. Working in a safe way with a mutable array. + do arr <- newArray ((0, 0), (thetaSz, distSz)) (0 :: Double) -- Build a new array, with every element initialised to the supplied value. + forM_ slopeMap $ \((x, y), gradient) -> do + let (x', y') = fromIntegralP $ (xCtr, yCtr) `sub` (x, y) + when (mag gradient > 0) $ + forM_ [0 .. thetaSz] $ \theta -> do + let theta_ = + fromIntegral theta * 360 / fromIntegral thetaSz / 180 * + pi :: Double + distance = cos theta_ * x' + sin theta_ * y' -- (ρ(rho) = xcosθ + ysinθ) + distance_ = truncate $ distance * fromIntegral distSz / distMax -- returns the nearest integer + idx = (theta, distance_) + when (distance_ >= 0 && distance_ < distSz) $ + do old <- readArray arr idx -- read an element at 'idx' from mutable array 'arr' + writeArray arr idx (old + 1) + return arr + + maxAcc = F.maximum accBin + hTransform (x, y) = + let l = 255 - truncate ((accBin ! (x, y)) / maxAcc * 255) -- pixel generating function + in PixelRGB l l l + + hImage :: Image arr RGB Word8 + hImage = makeImage (thetaSz, distSz) hTransform + + +test :: IO () +test = do + frog <- readImageRGB VU "frog_rbg.jpg" + input1 <- getLine + input2 <- getLine + let thetaSz = (P.read input1 :: Int) + let distSz = (P.read input2 :: Int) + writeImage "input.png" frog + let houghImage :: Image VU RGB Double + houghImage = hough frog thetaSz distSz + writeImage "test.png" houghImage From 08c298f161a0e4c3952e02ba3774621418350541 Mon Sep 17 00:00:00 2001 From: khilanravani Date: Mon, 28 May 2018 16:10:14 +0530 Subject: [PATCH 02/25] remove outdated file --- src/Graphics/Image/HoughTransform.hs | 167 --------------------------- 1 file changed, 167 deletions(-) delete mode 100644 src/Graphics/Image/HoughTransform.hs diff --git a/src/Graphics/Image/HoughTransform.hs b/src/Graphics/Image/HoughTransform.hs deleted file mode 100644 index 387d998..0000000 --- a/src/Graphics/Image/HoughTransform.hs +++ /dev/null @@ -1,167 +0,0 @@ -{-# LANGUAGE FlexibleContexts #-} -module Graphics.Image.Processing.HoughTransform where - -import Control.Applicative -import System.Environment (getArgs, getProgName) -import Control.Monad (forM_, when) -import Control.Monad.ST -import qualified Data.Foldable as F (maximum) --- import Data.Massiv.Array.IO -import Data.List -import Data.Array.MArray - -import Prelude as P hiding (subtract) -import Graphics.Image.Processing.Filter -import Graphics.Image as GI -import Graphics.Image.ColorSpace -import Graphics.Image.IO -import Graphics.Image.Interface as I -import Graphics.Image.Types as IP - --- ######### Read Image ########## --- readImageRGB :: Array arr RGB Double => arr -> FilePath -> IO (Image arr RGB Double) --- readImageRGB _ = readImage' - --- frog <- readImageRGB VU "images/frog.jpg" --- writeImage "images/frog_eye_grid.png" $ pixelGrid 10 $ crop (51, 112) (20, 20) frog - --- makeImage :: Array arr cs e => (Int, Int) -> ((Int, Int) -> Pixel cs e) -> Image arr cs e - --- ######## Convert to Luma ######### - -toImageY :: (ToY cs e, Array arr cs e, Array arr Y Double) => - Image arr cs e - -> Image arr Y Double -toImageY = I.map toPixelY - --- ####### Some trivial functions ######## -subtract :: Num x => (x, x) -> (x, x) -> (x, x) -subtract (x1, y1) (x2, y2) = (x1 - x2, y1 - y2) - -dotProduct :: Num x => (x, x) -> (x, x) -> x -dotProduct (x1, y1) (x2, y2) = (x1 * x2) + (y1 * y2) - -mag :: Floating x => (x, x) -> x -mag x = sqrt (dotProduct x x) - -fromIntegralP :: (Integral x, Num y) => (x, x) -> (y, y) -fromIntegralP (x1, y1) = (fromIntegral x1, fromIntegral y1) - -{- --- trying something new - Functor usage! -instance Functor P where - fmap f (x :| y) = f x :| f y - -fromIntegralP :: (Integral a, Num b) => P a -> P b -fromIntegralP = fmap fromIntegral --} - --- ######## Hough-T function begins - -hough :: Image arr RGBA a -> Int -> Int -> Image arr RGBA a -hough image thetaSize distSize = hImage - where - widthMax = (GI.rows image) - 1 - heightMax = (GI.cols image) - 1 - xCtr = widthMax / 2 - yCtr = heightMax / 2 - --luma = IP.toImageY image - - arr = makeImage (200, 200) (\(i, j) -> PixelY $ fromIntegral (i*j)) / (200*200) - luma = fmap PixelY arr - - slope x y = - let orig = I.index luma (xCtr, yCtr) - x_ = I.index luma (widthMax,y) - y_ = I.index luma (x,heightMax) - in fromIntegralP (orig - x_, orig - y_) - -- List - slopeMap = [ ((x, y), slope x y) | x <- [0 .. widthMax], y <- [0 .. heightMax] ] - - -- Type declaration - distMax :: Double - distMax = (sqrt . fromIntegral $ (heightMax + 1) ^ 2 + (widthMax + 1) ^ 2) / 2 - - minLineLength :: Int - minLineLength = 100 - - maxLineGap :: Int - maxLineGap = 10 - - - accBin = runST $ - do arr <- newArray ((0, 0), (thetaSize, distSize)) 0 - forM_ slopeMap $ \((x, y), gradient) -> do - let (x_, y_) = fromIntegralP ((xCtr, yCtr) `subtract` (x, y)) - when ((mag gradient) > 127) $ - forM_ [0 .. thetaSize] $ \theta -> do - let theta_ = - fromIntegral theta * 360 / fromIntegral thetaSize / 180 * - pi :: Double - distance = round (cos theta_ * x_ + sin theta_ * y_) * ( distSize / fromIntegral distMax) - --fromIntegral distance_ = round (distance * fromIntegral distSize )/ distMax - idx = (theta, distance) - -- optimization possible - -- minLineLength = 100 (pixels) and maxLineGap = 10 (pixels) - when (distance>= 0 && distance < distSize) $ - do old <- readArray arr idx - writeArray arr idx (old + 1) - return arr - - maxAcc = F.maximum accBin - -- Generating function - hTransform x y = - let l = 255 - round ((I.index accBin (x, y)) /255 ) * maxAcc - in PixelRGBA l l l l - hImage = makeImage (thetaSize, distSize) hTransform - -houghIO :: FilePath -> FilePath -> Int -> Int -> IO () -houghIO path outpath thetaSize distSize = do - eimg <- readImage path - case eimg of - Left err -> putStrLn ("Could not read image: " ++ err) - Right image_ -> doImage image_ - _ -> putStrLn "Unexpected Pixel Format" - where - doImage :: Image VS RGBA Double -> IO () - doImage image = do - let houghImage = hough image thetaSize distSize - writeImage outpath houghImage - -{- ######### Helper functions ######### - transpose :: Array arr cs e => Image arr cs e -> Image arr cs e - index :: MArray arr cs e => Image arr cs e -> (Int, Int) -> Pixel cs e -- Pixel at ith, jth - dims :: BaseArray arr cs e => Image arr cs e -> (Int, Int) -- get dimensions of image - >>> frog <- readImageRGB VU "images/frog.jpg" - >>> frog - - >>> dims frog - (200,320) - - displayImage :: (Array VS cs e, Array arr cs e, Writable (Image VS cs e) TIF) => Image arr cs e -> IO () - writeImage :: (Array VS cs e, Array arr cs e, Writable (Image VS cs e) OutputFormat) => FilePath -> Image arr cs e -> IO () - - instance ToY RGB where - toPixelY (PixelRGB r g b) = PixelY (0.299*r + 0.587*g + 0.114*b) - - toImageBinary :: (Array arr cs e, Array arr Binary Bit, Eq (Pixel cs e)) => Image arr cs e -> Image arr Binary Bit - toImageBinary = I.map toPixelBinary - - makeImage :: Array arr cs e => (Int, Int) -> ((Int, Int) -> Pixel cs e) -> Image arr cs e -- Given generating function and dimensions - pixelAt :: Image a -> Int -> Int -> a - --} - -{- -main :: IO () -main = do - args <- getArgs - prog <- getProgName - case args of - [path, outpath, thetaSize, distSize] -> - houghIO path outpath (P.read thetaSize) (P.read distSize) - _ -> - putStrLn $ - "Usage: " ++ prog ++ " " --} - From 9b016b3502a4b0531441789977b9510c07329050 Mon Sep 17 00:00:00 2001 From: khilanravani Date: Tue, 29 May 2018 14:21:47 +0530 Subject: [PATCH 03/25] PR Corrections 1 --- src/Graphics/Image/Processing/Hough.hs | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/src/Graphics/Image/Processing/Hough.hs b/src/Graphics/Image/Processing/Hough.hs index bad16a8..598580b 100644 --- a/src/Graphics/Image/Processing/Hough.hs +++ b/src/Graphics/Image/Processing/Hough.hs @@ -18,12 +18,6 @@ import Graphics.Image.Interface as I import Graphics.Image.Types as IP -- | Some helper functions : --- | toImageY : Converts an image to Luma Image -toImageY :: (ToY cs e, IP.Array arr cs e, IP.Array arr Y Double) => - Image arr cs e - -> Image arr Y Double -toImageY = I.map toPixelY - -- | Trivial function for subtracting co-ordinate pairs sub :: Num x => (x, x) -> (x, x) -> (x, x) sub (x1, y1) (x2, y2) = (x1 - x2, y1 - y2) @@ -48,11 +42,11 @@ mag x = sqrt (dotProduct x x) -- bright (or dark, depending on the color of the background field) spot; by applying a suitable -- filter to the results of the transform, it is possible to extract the locations of the lines in the original image. -- --- <> +-- <> -- -- Usage : -- --- >>> frog <- readImageRGB VU "frog_rbg.jpg" +-- >>> frog <- readImageRGB VU "yield.jpg" -- >>> input1 <- getLine -- >>> input2 <- getLine -- >>> let thetaSz = (P.read input1 :: Int) @@ -63,14 +57,14 @@ mag x = sqrt (dotProduct x x) -- hough :: forall arr a. - ( IP.Array arr RGB a, IP.Array arr RGB Word8 + ( IP.Array arr RGBA a, IP.Array arr RGBA Word8 , MArray arr Y Double, IP.Array arr Y Double - , IP.Array arr RGB Double + , IP.Array arr RGBA Double ) - => Image arr RGB a + => Image arr RGBA a -> Int -> Int - -> Image arr RGB Double + -> Image arr RGBA Double hough image thetaSz distSz = I.map (fmap toDouble) hImage where widthMax, xCtr, heightMax, yCtr :: Int @@ -115,20 +109,20 @@ hough image thetaSz distSz = I.map (fmap toDouble) hImage maxAcc = F.maximum accBin hTransform (x, y) = let l = 255 - truncate ((accBin ! (x, y)) / maxAcc * 255) -- pixel generating function - in PixelRGB l l l + in PixelRGBA l l l l - hImage :: Image arr RGB Word8 + hImage :: Image arr RGBA Word8 hImage = makeImage (thetaSz, distSz) hTransform test :: IO () test = do - frog <- readImageRGB VU "frog_rbg.jpg" + frog <- readImageRGBA VU "frog_rbg.jpg" input1 <- getLine input2 <- getLine let thetaSz = (P.read input1 :: Int) let distSz = (P.read input2 :: Int) writeImage "input.png" frog - let houghImage :: Image VU RGB Double + let houghImage :: Image VU RGBA Double houghImage = hough frog thetaSz distSz writeImage "test.png" houghImage From c2cdcb55747e34c7fab49b146eb96a5ed479748e Mon Sep 17 00:00:00 2001 From: khilanravani Date: Tue, 29 May 2018 14:25:01 +0530 Subject: [PATCH 04/25] PR Corrections 1 --- src/Graphics/Image/Processing/Hough.hs | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/src/Graphics/Image/Processing/Hough.hs b/src/Graphics/Image/Processing/Hough.hs index 598580b..8d1717b 100644 --- a/src/Graphics/Image/Processing/Hough.hs +++ b/src/Graphics/Image/Processing/Hough.hs @@ -108,21 +108,9 @@ hough image thetaSz distSz = I.map (fmap toDouble) hImage maxAcc = F.maximum accBin hTransform (x, y) = - let l = 255 - truncate ((accBin ! (x, y)) / maxAcc * 255) -- pixel generating function + let l = 1 - truncate ((accBin ! (x, y)) / maxAcc * 255) -- pixel generating function in PixelRGBA l l l l hImage :: Image arr RGBA Word8 hImage = makeImage (thetaSz, distSz) hTransform - -test :: IO () -test = do - frog <- readImageRGBA VU "frog_rbg.jpg" - input1 <- getLine - input2 <- getLine - let thetaSz = (P.read input1 :: Int) - let distSz = (P.read input2 :: Int) - writeImage "input.png" frog - let houghImage :: Image VU RGBA Double - houghImage = hough frog thetaSz distSz - writeImage "test.png" houghImage From e6b0015d48624664829e30124a2617e70ae3ea35 Mon Sep 17 00:00:00 2001 From: khilanravani Date: Thu, 7 Jun 2018 12:37:01 +0530 Subject: [PATCH 05/25] PR Corrections 2 --- images/yield_hough.png | Bin 0 -> 32670 bytes src/Graphics/Image/Processing/Hough.hs | 29 ++++++++++--------------- 2 files changed, 11 insertions(+), 18 deletions(-) create mode 100644 images/yield_hough.png diff --git a/images/yield_hough.png b/images/yield_hough.png new file mode 100644 index 0000000000000000000000000000000000000000..4fb378c5df4a2ca1a749e0f8a3adc5061c2b7da4 GIT binary patch literal 32670 zcmW)ncQ{+`-^W{R^=p*2YLwEUsJ)6dR;Nu6A@-(rjo72K_G;B8RE>~`*%*mYt7=zC z5JFKaA+{jJY)L^x``dTtb$zfN4+gj$r10q4Yj)fsP9^prh)_$e}Xb@9|Ujxu|7Dh!K@dcBB z*vg%hF#AIJhNX5TEcBV0us)a_IQ{8p9X2&# zanLJ4J`Bq`F{s=ztNBZ=F{}EgoCQ83W`*G#(f@GS;?#=j)=H#bVaUD;x!#X;7Cf<2 z)iz(J<=z1>m!;tcj*Y}4b{&bn0~d*=jw0a5frT57=y}#Q&?56W^Sk zqE*b~S}lE|O{L97%n_|y)~l@#US^%t51cMKo-Ng75r98t=AM$5E;ZV4^ z1hnEviW(@yRHh9Z^CbbQV5;F$ce~mcrt3S({iEFF6v^0)VbL|ulWT{3B5NLEEVIh~ zsqbIM%hAAr8Cw6?r*hwnwU~ce!Fi0q53s9Vf3OlXrmT~Ufwr@{cl(VJG+Nfl*g*K- zx`+_d|7d*!r*i{V{?xNS^>AQYr6dqnL#&eo{_?|1xQ3;AG#}Fz16j)i0q7PRvu{)E zVG`9%A4wvljxZs##ZYVTriex~1MVa5mow5^d*1oq-g1f@&rSsbEy2#cbMH*+Hl63D z3H~7l=w}uGF5mJXZ%(l_=q*i0MHsnGwnd*R9V;HyXN6H6Bi8CRo7d0HH*(prig+3J59N43Or76Hve8p6}JXOR*8T{bg zhxEWYz18hWq2HQ&Yk-50y^!sYL1Un}g;?!!)DL_^nMhx5!yov+*$~;b`TXs+Pj^-} zJ5OgE&qO&8hTyYl$1|E^#BSX!_Y@+@rX>^(att)il*Abim=Y}>W`WMael{;f)v%8vTe?1qs4uvdCJACQHx0ohQ0 zbMi{nOHBVT9zSZ{E0X@7ec!TqZhb z=JC%FLb$l3;mPwvM2g8vk3LMe(4%rs{EgkSnMHyD+wC(FrpN=AQ)sE~wHQX7`?7>Y z{B!c~Z4ZEEdRcwkpzdU3p;Q>nY19T+gIGQ1BlBJ#N|cceqhSOK%~J<1sZ@$MB{+T+ zp>+(58y6wCjP0XsMQtkTJMpSLjDzszPUC*Ex}@xK#*#eu8Kdo5HLJ%5WnYHZX=hHk zQ4uh)h#6W$;Mv_aOT7xO#>ajn^g37ObVaC|;)ci*_OS;#LV9uz-^z1Ssu=C&(Gzvu zjkXi$u(=H21`mfhX0TwN)v3LAc7p^uD;Kd=A0Y<|ooXIteep&8{>KKvtWDS4D-G^v z%(+^j8eys>GT~)VT3`m=e?Lhl>Z~7)PMIf(!MY>7b8^Y*wO=hewU@#6E~ zLAUvRw(Mik54V|UHqR%=yqet4RDthmc-#l=I=&IK#5@(YNd7ILcX)RgHL1dLU1@e+ zg#Thu!VQP7x{sJDE_}%g13(wr~GBb)W7Ip;U{naU>kaaP=9&C)5P` z<68bV!!I{hdGin$hTFD3M=^Ff8Cly7?<}sd$DHmt=J{VQ@S(l}lUxiOIWk!O2#Q{o zBt8S<=mu7CeF8ep;thrnA?n*&$G~v8ES6#hHj(PWZoO^E8wYB?tby&6x^N28u>r{? zfgW?E8$R=xUQ3ATW3gxsG>pJS`{@{6a|PIz$eSifa2wec5INjUH`b=Nl>cLyud6b4 z=3Jnu0GDVR|5@8RNA+#BbN6pQVUzP)m0uKNuE=iVWdaMAef+z<(Dx=?TDbS{Tg|?5 zcCd&>4jpFkoj^2+-uM9`YMfuXQhmX+gM7pN_WVt&L~-3Ev}f@aBjmyQ66PbY{h*H5 z-OAmA3Q}y@#dm_({MzYuG3IrEQUFvO#!dX*+BGzFBPt5IZFaSRSIz)66(#Usw*B&4 z{0K#sVoo{~ttEwsrQzjfA!#C-8n+KvUe3jZ$vSPB8-X7nWTbB)ICOf7=*9rSJWuBQ zE*m(eYbk@%wZQutZ^I1GqoR@Q1>BxrpUq`F{IF_HU=#jNh zV5{EuWA>~g)-%Vfqp`+CupuX+?Cf8}Vcmug>ZSffol{w6Et$}Y8uLc-mIthFeZ}8= zUg@)44^X#GnOe@W^2cBZHO?m3{a5IF1T*XBzXH5kSHd3fYgLq}EXA3RJSZ9L40tFJ z_|zM)Z!`q66GucDIA7A2>c7bRGUIA-%KOonzIq!68E5=d=gLAw{e58p@KMZfB!7us zE#h&O=NDi4_v3RvjKCcOtKf2i23~K$z$01&beFlS(9Rrg@OqvdA>T#5EXi;EqvhM< z3Afl9xHZ(2_{B3P{DuUS`8nR3D7gCVnN~0K^(O~~suKUpnb&WmBNaJx=t@HlPO;{y zI4Gwy(orv1{q12%m`HZ8<;a2XW^+9sliN0mB6~AHlxTjU95a4z~16_L6j9ZFQx(RZ8;#7 zl;mqSP4>S6Kc}kS=^Ep*3nV?!h_2Z(igzi`xLiRhZ>ZD9c?U8&#E_soqO9O*-j)It ziVRMjSCiLBf$b%?hj;s{piB0NGR(4Hcv6b$)DGYZ4+V zd>J;oRkZ-}xIIFc%=a#zY1EZ~x=YMlzIWeIB0Rz6vlJS-m-OsuCft0YmOr?RdzBJh zGX7bw(8kbQyyUmBkWqAruBlWLAL8`KBs~EP0leoulPc>xjV9Bh)@{_X2xBU8F`;U@Hf-86w zgUtJ-M1-m`N69P01kLEBO687{U>V>3wcfA&H+i2CzekVLPh7&sOakqriuzYGI7;MM z-D<%PwQVYDjGdSG3VhI%Vzbol27e=OkfFjbdQxV@?d85CM@__WM%I<6FZ|hNbA}J0 z7T-#NS6KF66DKuviB`#Y?+r0e3|=IQB>7m;EgtCL#y7pp5b9dhQx4ch)_f^W`whU7 z`trp-IizGq`l?g>TVvnWOIS_HkjA~8d7I7Mb1p5#6_EO}&$BT^SnxAz)TbarI#I6;Jk$kJ`Sbb9Plc!VW0e?258%Ret?7De#>`0<` zLb%UmKvR8T7_?!R)`#H5~Ahim}8_Dj2%a947oo?F{B zkWkenMJiGhiV^kX3%N}n3kc6>UrCoM+hrRnnBm={f6$*Qq0A<>%@}-G zCLV#pnO3phZ@8Sv9}mA1EM%WIvLA;$e9};$a$Khmj;;PYku1t;B~l%2R*0HrN|9`? zyh)z+aYp3?nRJc=!nCB~OP&?KFiM2VUlZt*XKWaK)HRQZ1ia6yU4p<}%5&=f8)^?o zs@}0=v%9ns)pt0~0KO=p5!Ty50bN((0K#8gmKzuJFW4Iwe3Wg1_Px-9cSU~xi($fi zh;$K}bEkkg(nL57tCG?2#Y~mF(k)kwT}73eXEOn!8XF%-{V#DY%-;6qP9t9KZoO=q zpa*=t_%TV04kWa1va>XqxzZXY*`)K(v|jgm8<(5t2bHB5rWYimues(EKE#*cqAIsZ zMomHK{CnuYn}$e)kztwR6W_Ncf|IXw4Z!h>0esj;unwQ?@miKY42D7;j*p0sG6*7E zs0PBiFWW5+AbC%`gaeXizu&|Y$oS1`&($8nCb#@Lpr-Dy|AOZ;Z zh4HD^xZL52S}DuXWSvbuv_YC6kf7 zY4?>>QqKW_$N$0}CJ{(DZfT`t9*G7@?=@h2nHt)vIplEfMpm?l_gF#LM#YLZ_Ig7s zj5Yz!(;O6Ucflca&udk3bFaz-@| z?pzgwk`1_igg$XDD5p3u43XBre@y`WF^weB(FqX#B4rkIM)KGde$r_TS@R?-g*7O; zB>uwaE@Gxq3u26(#Tp&*QIeOLI z^)B2n1x&;C>ixNjJgoy59a=Z4aCvKC2V5|VlSGvj}*F69(B8IKM& z!Li0Qdo`~>OGsBcC_~+&vmQ$)m}8^wB+|w519B#^J}S@|Y<}W{>Cz&7zlikj)VfD; zUs^^dq6iFzXf{E-H1j7IR3sIOS;1KoHRlX^&+Se|b$cxWqq9;aVYyPFqy#>Fn$4&k zyX{+>>`~gTw=J`13J4=rHrnLz*{1ggW=8tgcKfuHH;f)+S{8RPiON`mjlBvQlL1`cKOIg+qs&)P3 z;`)s&DXa;EeA9D}6vU2qvL}j)y{9xs-W59!`N0tywkMSXNsueK9~~Ye>|xK@jeDck zccm9WMF@FCw|s4*r-*Xx!%S)4>Ll~qXENTlmM_LQ{a9Z^mRE}+4=hFPEIWrxCvHDB zw+zhT7KxFMIQbyUt9FBzR3-}DUoscUTrBDB!K3Be_!(-L!IRJma5`p zCP~@)7a0KU6Gzwbi-*x!7X$aR{*x^x{-Oy!exkA(H?LOL`I+2}eOQ1L`xjrUs?xB; z^KPy@bIZ^c)nEoIZMX@7g##^+(^8d$NxrrAD@NtgJe3N2ibSKvzOO1YoA z)&_d3r^%`|-!rQZxei9OgQ_xz%L1}@3_Ui!6(#$7aDV74 zWs-y|d-=R?Hj_|3@99juh2|=k84Z^`g4}=Le>8Ad0b+(Zlrk&`nr;$yoiNyzq~Slvj5P`ZLd~JPASHiZJJr(PXNKH`=13XF z=cmak-0i>6yhQGX*#z`Aa0cOz9=LD2zG)AcRh)S|o)QpEpOIx7!fy?TS$2gv-73gT zG;sDv!7jmFMwUH@)gfr%8zN$|f0Pd@KUKnViwVD#Z$WtT*4ipcm@0K8B_GFcsna{WyDIJ=5PTBkrEBYwZ+} z@FOirLA=3l=>QT?4fHrJ?C-9P`st7Wdtn#0Z z=?^*TwG8a98F~J$INH_=oK3#ZVQ%`-2lvbJx!-*08W&@=X0(4kDnel zuw?yF6h`-SlN9F#(%fw$n*^+0e}vsy3O6?Ko?nWR0%T(c8+rat>&8F1E}I z4%SMWyvFaxuA4Ub@33acP%N+%wHLcUVKLtW|C~;!%Mag?lbs%vzt75+n+e^8dX!bhFs7I`sUe07_e6W7&-JD-6uQan^=fK~Xu}AZ* zvWIq}DJl!}5;ayRcJ)om_LZKos~3#(^vA(E8Mn+c#>H`VDaAMgP7nOlxUQR1WEl{; zKGpMqKdjTh2D;Apb#~(cxaTj}|6)5~&D7$T)0iNlS;Aqn;kfPSx*#FS2s*>C{kRBo zb3bd~QNX&z>zDgeRcm}PBHkjYF4r?YATDs$$S<@1NpJ-VNmaDd8NXrD!Odl7oqKyV zjC&)Oa$h(w9yOLr>Clb_!?td9MvY3yefDTNNteMio0P@3Rmu^s7~5!puas$7eU>Ad zdw-+U!g|-*SPmwl*AMVFoHJsXWq)3Y<$dyu>omZldE(obOUkZA z-y1-*=OXPFEq-+R-F%z8a3kOJdrd3d#u(_6sCTkIB9o|PA&mZ-=Su# zvxiyz_7cG zSmHS#9$ShXH+E+Ryho?-`Wk(Dy5g<e#tNjkcvr0Hv20{53!fD-JQ;;H!_D0R*ofg(ileI z*J=Faj6h7dh;XryTJen30-9?g1iG=NV2Nj?AbXE%x$zt7&9Lq&yQ~^n=Wti-5QB1J z^XZYt{Ea(-mW89pY@M0_GHr@lGb!WkH}@lx#=`k1gtg5By|orHrQqeJ2z%51sg-hS zRtFPyDa#JB<=ecxIrjJd^W}&4C!P~OocI1-+}+E)UQYj(I|@1SrB}nvbbd@l<=Hz{ zy6&fc1c?9p8spRYA&b1AT&*0|?|AAE(650Xsl7Y*)nnr_dP81Fe9`$DU!sV&P1eET z2e_HBL4uQF4RKP`b71zUEp}}B`bDAA25L=jh)@VS*<5{NUBPo`jEa7?7vIu2_F$B3 z#w|RpQ_I$w6k5@q6beh9aCtqZ9<`nNsFK!{L2wP=Qc6DF=#fVv!_gg(!Rt)&dJ~n|%fm8!M{*iC(0-6&PW14oa z!A!Vn^avsfZ-wxeh2a8T4MrV1tR70Ja|VFBMK{p&{<=4yifA4?Dt|Hs159g@Z8EOSitIiufVyeDUyLrTys1i**DyThKS0Q$~ZDS7N*f0V@ z0^u+6sGHO#GMf8_tmI(x$DVczU}tR)Tf?|%)k4kiANmP}bcvGuNA)+#^RZdiK2A&* zTpYL?VC}DpPl?Vl9j6=cs9cvauX{7C7kC_N-L#$x#ZpcyPu4Yo9`V<=XIt*NIepdo z4wGtZ+SB#qtquvsL}M9$(!TM2GHBL7N24l~S;Ph=DsF)hPo-C!70F)Uj~;E=&4;9F z-6SdEWA}=hBwKL=V=0#7%_rf{tUh~5%3*KFWxX5ctaLXP%ksr`lvq8?hJeNw;h z!G~ZhvMp1O%wc zLB|#k_NFE3W!)!!3s^)$35GYS}Tmj{PZs4HR zw;cuswn@*K%TcS=%Ux%++~+*SIzPbftu`G%$Np75^-E-~CR6vTYWrIgy!J2mxAsRF zmYa^Hg|A%M9J3Iv^r=n&vI|Pi?$u$BVpEjS9wv&cr>6seQHc*8OlEz~7R!9m8D8<` zNWu$f_@-lc!!dr%%tOvB$h_RxN>lvIYTa+;ya|=utw%czrG&Azlk4QcC|G~Q-DO%| zC=c36b0d&QSQB<1^U=m2TX(};RcY8-vq>NAVAr|nwmu-w^p4i?IR0ryp%!0tvjAK% zq853`qD-?5*;rp|v|c`QWr1P7b7dASBs-Vh6El!3uRl&jgtF(H1zI)UG(R}=N2?X$ zE*iN(7NG4;gK;{+TH?h%QwlEeBW_F>ClP&ZKOUT2CePhHWg`&EHr<0?-?b17NnK4x zRdf<^Nt|vJC{EYP@^!OG^Mr2r0F^Xo?RBH-_dOp55aj85;mQXfNo-!k>ZGjAKKp^= zIM^@!j_7!_beiKzEp6(B=>WNV>b^&ZRJ(pXE&irrp3O~%+4jPnwaOgaMa*Z=)-*Ek zY_?twTjkvfa%&Jy3T4Ib4M!LE=IZ57qRCao&O)3~@Q+7P_M=X^Fm>&JKY%EYKK{ti z2m@Zl0ti3-#n@2tHwR)YmSH6NmdgC6wN`&(YL4Xgj$^Gi5( zAh!UT@7>|xY~}bD{%UZoemdpNbzeI-+rOZe0C!b^;839)>N1;n!-uSArbbg68<^>2 zAn$40KRymP2PL%;w$ds(y~aXIv53HxfT&htJ@et|zq$?78Fa79&1rqe>E5cV-THxc z{{DN-ywpCx(!5uH-{I=)aC?W(bS)XbG!tiATNl^&FS07!6epO*k>0Ql3t&fQi2v7Q zw!3zKQ7NY0dv|cHGU$M4PtAUkgIWHREA*ddvq`%NFm+;&bCQ~dZ2OEPCU1XI665^( z)Dg3Z*r5D&=gZXYXyU5XW^H%3XbBBD=FOVgUN`$;p@fY2y;kowRmxhL_YOs{Yti zXbBADMpLgNh079wpP_ob%tL-&47o&1r;?aLbwGxJ(9(KcDE42$n70MGKmN(xB(`kp zc;!6pRnlvuiZRf`uWz_PYbX~9I-ZyKS=U*mn8ujzRGn?k)PW+4y=l7|D0QTfD@Z-YQ-P8kSizio{Ilc9iH=J&} zKH~i9Eiqp;SEI-?J0dXXZ+m;?CS@TM`);tR|0Dleo17}U&%&H!4B9?)K@Im2HXduH zx#D@oiu>>6*_BLJjdJkZ;*~jnpNPHLRD0Fghz32!`SI<~fAH1f^#K+7` zJzeY-z~A&0=aZR{0+sz?=~{5Swm8L^Iz*fHHTb?_iR#E$v=k4|Nau;$py$BKXA=5x z-2U~|=O1)iEvh7Ka@aOst%@~De`w~}^<>{xGnd@Um>v_dUQX@0dS%R`d zUwIr{V)unFhOaVJ%Wb~hk24OdEuS^u@fVW`_3tQ(Vv9mvqt>THO+isXhL7B^7U-I$ z#xcZ!TWVv)kysltL~7$f1ePyzm{_HSA=@^~ceyB6icM^Os~OY_v9f{58_FTj=kFVL zDYAj>|LsT+1I!K&_ve%raCPvxP*c@h&@C5O*~X;*0Qk;>k;3X=Tg3x9jYolaJkhRNr5FyF(w?Y4COQR_OpjzVI? zWd7LK$6lcyltB>JuP3Z~y(`-bE-+4B%xAayFSW~r0(K5)JmB|29~|-*{2&hKWU_b4 z=?wol>KT6jp59N$jF`SZ@Lpq8V9AWXp0wCpo)=U-LH3iM*`eb^EdV7a_ z>BGIKqXyt+#XXA2YC_%%pR?NWpP@yJ|NY5%V9xb?IdwJc?fecx<$1*7eG zqb%WRhvN{+)_PEng@_n`-E5#ibpA~LB5nRH^^xDn$T`(fhArq*v5V{UNK6P%AtQKx z?VCSVmtc>MLZRrmtApVE|RM>%eTgwFnuWD=qNnk&U>;Mf)xI~ z8fTn0^Oo>&p`_l2nbRD5{g0hC8rr_QdlDWE*CkB^g`#d8?A2yXJtbc_UA>aSU%WN1>st60Q)%A18Us};qk@Zvc9+DIQQwKM+0>nLa1lClks%|DU4=Bp&Hb{(Uz zK1W{KxL0#!8Y*XB486v)8g6_StPV$~>87LFq{~!F?X*O}XL+?2onW0v9iq_*F%5Yv z0h}?FGvY$D1(McNw!!M>Oxn7q69nxBZ4o>`ib(QGe#bq5h8Yd0LeYN^Ozd+l_huML zPXR)caMg(*5fJPBCcOG2;U}yT0?wEptio8bTQH$`FcKps)~q zE6gXr3Z1JD@2BeWzwJzD$Sa^14)Bo=P?BZSl8Tn%RrW2u3_9<5*mYh)Ekd>2E8utb z&6P_pO?p>Z+egt)h_b5j!ixsoIL(DCQo26xGIkk%X9Q-%!iPr8dbj?bk74Q?UqH%b zuF1i0-X9rlpZ7cFf*=_m;3Pk>&KKaNA`<%j#F%93AdB@?*P*WOU`nNVnSopT-eWlDsS8R@?TfzZ3{QfnkhR*b^buKdAZwzpS!+X zw{`2i{1O+|MEnq=>o)lXOCWu^5K1YUJT{qZ4GG+QSfIupkcfw}PuMDTkTd>(yELX~iCcq5=o*{l4=;|nhLON$#no8{khKb#4DL{xVEyU{dD61HsDT~;dP zj}z%42?lW^36*}4Q0|M5v82Bj3TB=O$-3#aJuT8ws9C&+W)#)P*{2xWQ2Aqc`p!v$ zec*3X%8dR0m~FD_#`xV@=-q+{v_%ix`mO1oL%YfpqPKJVmdtZd{5z({9SeyPiKOTK-9-`TP*C*8*|jr{k4x($594b2>okvNYouRi)hE=&S8%ACsG^#o~QO? zdW*t3*lO-b--1+a|9QwKq{k#?@=o7_p)x|%$w(Up%nV%a z<+OVaUsSLZwCL3Dg`u1T!i@La2QoIH9=&dB?u=sEezMRZ`KoVvrL|IE-13s*X<+~E z&SCmE=Kd~7CH<4|{&?RSP0hX7NC>{k2Sy-NqjSD&S=tL3xnLsm4w_m1=v7SRyi>gU zmiWE*(uRmw*9K3QOz?i!B&iZ+(!}Uy+4EhwgZyDLs?Q*ueZHC8N#~RCj?=t~Yj)`zTSGdcM)Z+dRBSX3-;CK;mMq(@18&0sR zr~%aH63}!V&XrkiXiIc%-2ApO^y3^@4NK3QtAIYMB=gW$Bs;_2q2tShs9TSFj`_@) zDtqwfqqvclO7UhDn#}x7W0jRU`NiXw0mR()ie1KJ6gR5=x$fYa6zSOGvWLg}?L?H; zo$He&*VM^_+{jRL+AvJ2PEX1Zym9j}Q-!YjFTKSuELS4PLH;T+F5?Jae{`^IeJ*H;ZQ?r*&RGB?(+z}JVYtozctD#nE=+#yAJ-59%b>6$fU`rJzbi0)sx!vFCVe#;mTkU&s4or08f?@JM#jbKq^-p$9{Xq>Po zIO7z&`-Ea9qr_;8p~;K}fSPddQ7m%>M|s3+666-Ync z1F?WTg3X+(N)*OM6y(P97#xc3>vA)KIH1dvhZ_49Pt`lBsMaRcOjjyqHDT?F>yjmU z(|Hx)Z>tCP<%36H8NL5<~fQWcMmNRCBs6wdGj!*SKEq zMYk;Wnf?1J7iz)@jxV&XWkd_5B7J?BlWi*+&iRF)-%Tj+lA<|3pe^6WG$NS8(6AXrqgCVZSYu^ejUa)cM-9G?5SgnHn;VwYd3^p?Mr;1kM zOpz%0RZ8|B{?9p^?D(?ys!qTXdJY(96%8$1J7w*qSa$ZZ<_@cvK2`9|M^7RK(kFp~KoJcWcx zYA@`ZH1qD(gwH!heW~KJ6RGI(lK&UAC~l8&w~j&u`^@|T2$nHwvEA#=`SN%x!iS63 zS*fSKp?lJJsY7FkJ-AZ%kCAzYs1od%KevLCIE!y5e)zVZz&_2pYshaxQ)$To=9if= zPemT`EJ+iE2RI%R-i(yG{fLxDLA{*7RiN zP;wGS+{vYcODqs zT)p_%z?lweP55XXk7yo~?8%QUp7!4jqg%-~aMKSD+~u+=SmBe#0$5@fCgB`psQb(% zd!Rl)>Xc`0_hqm?x(pi%R*2tAUwC^rI6}ae0SM4`M`;JP|4d3L8vf%lL=Wrm!@Ee# zGeCG6eO!n6E11dj^kOSFRiY5oOZd*8eG*k!Hq38ii|CAdhbPFB(kiue*OlfCuln9c z#vq)iro5@i{!feF@@mfGwgq!N|B61`NP4mIkg;iKh0&02)0GUzam!1!&mWB&>oWnX z0!zEfpQb%(xufiNWfW)8=>}h0_f(*E99p7^7VkM`;_2MFwh~2B71A8{`oCa%sZ$X6 z?P%(42zB0Hwnjb}?Tw^4rr#Yk9^tWwaCp4+pO}f;6I}=Iw%NOU^|IJ*ErB2JFMr?< zSOBJ%4`0Ruf@xDYUAjm04kpCl-fS?Te%3Jj3Dci9GZU)@*h#E9~RAj zxWCs|Z@Q ziMM7Bn?JCI!(-Xwb_rEE@T|d0%)M72V0OVN(uJ(y`PVJ$%TwKaz-DY7l2vBH&Ai8<++F%|ba2&C6&<&T3Yxxk(uyO+B8Dli+=zYpr8_qr zu;+%YIir}$R9(Z40I-1X>$ro3G_IiamnQAXNl%o(zrD8zF25C@6TDw4=%AF0u1H3L zgKW;fK#ij_b{KUsu9gi0v{rK|8GfO^P07p!nHrQQ8doIwjd@r0z(NnB#j{?sn9o-% zO5JKO2A3Al8QTC}S6DF{ZeFeQA9|V`hf5|u#D;1St>9|Cy&WN4IA}?g-O6Slx=-^q zd-6>Qaz5UtYC(j1^p|Dy&B8bLfAg$PMf+^NdK&`uwr}>DrWv83;?sL1wGP*zTlfM$ zb)FEb-aCq-4Rjz0c+s(x^LG`gD^C_JD7p55Rv)ia4<{fh0f2ayTFZ%|diuqHhtf9S z-jdiF$A_XyP<(V6udl)G{6C-(`MeU=dkLe+|rX*t9Mp-I;QxvqFtwT8SbjvJ64}j$#1N1aP9Eb zY>}4}IfRu-E0r35IdkMN))R&AZlnek{vkpBF3-%xZUxBv;-}s8M0C5L4cYi9CSg*Y zrONSj56mY+ zRBVG6-I$(l9_{Jg{u8jWGPZ2vG`+d^B{^ETZgE(62R&L9Jz>o)8%zEmu70xzzwBC3 zFP{cAd+TJ`c?Hk!CR^EnNrgls&ZPVkfF4nuVW;D6$#B*Sm8tE6cfD09;dRqcMM^J5 z3K3q2ZX-UMgyMtz5nR}+l#&ZOv&ObTCNGL|0bwGav@nGmlWK9HKT@J;3)MpVEYW7- z|1Cumv+U`POP(pxmh6SDt%eo6#WzY08#%aCoeMEuS8>QLqwg_+k)8hPZ|2!c^cc#Y z_iwf2x^aTewT=RBDC*2Z-+e0eJb z0|8a}s!K41mDJhQ_^mo*^==)}D!Pue46{cDKQ0_bI%Da(>;^c#xl$^-aCWnKu5UK+ z&Ya5B3k09YH+>bbF<86v;Dxj0xZA@D{DT`(eh-u5V7~?R#!#CkkBRXrwgZEKy=*ws zDM7$_BEnKuUDn!YYeUp>K&f!P;F$a2zrU-kV&~}bBxc}_3n9V?s;=74n_Op4o5LQ> zoW$Wwv7OHg&2-$`exD<31Src~Bi{ZqJ;xaGHs?%;dtcwDJ<}I4BW)0aii&~D#|vKU zGkB#)ck^lMl=(9ngBpCu0{EXfr_X1joJIkVrk$3%H-7pCHyyBrdFCutv&*+E> z$xHsvszBGnF0E8Y+#zL5%0`2oCsUlGzFNA$H(e7^8waPM3SG3zQ5#%LyaSx(iK%Rr z*t6H9*^Jy5U#49+XJ{4=*7wF$)*jf8^1svj!m4TIrV4e9(0)|{Js7d^rE)r?m~h`v zys`rX)xkyrbLsuGo`IcVnPt+dZWCUU;9AOOE+a5cDd8_LV_YzZwAy-OLBG1YK;@`z zBmCr@@xe3>4Dp|!CQpUSxlPUcSGO%1Bend5=9C2mU!i!_q!`4i!=oy^Yzhg-v#FMT z-pvurDrkK+h>E@Q`Ifv`PgH{LRkTr;w;3Gpdm==f)u`%l$ZMxJ5$}&53_8MigC6gc zP6rm=wEf`5SvrNjBR@ubNKgDuY|%DSrW3X|Eb~r)E2Q{R?GE-dvnpc7ZvcWbI3Yw9 zcetEs?V{P_Ya{ss@2ISMhq=;`O_r8M@eeb;09&awuA|2V8$sZ*+4@4|=R;WH3Pzz8 z4KaYBM1$!*H+Vs8#D_UF;fv}N*Y@IYb|LYG#Wcm!rs3j#H@S&EO$!*Brs}mP;(_LW zhlJ}n zbsd-T^D*Z}$1HjI!4@+eeMXsT^b%RGV5^7`6jY(isX%=R6T&pWIXz2og?oH_V(T;G$yvxRk9mM}nO2)!; z>+4iRe?&V@5TlnVCTRRJ=h{O^ql02IcP}71WCE(JoG9mJtKNOwXuZ+UbpvVpx&~;= z8(9Z2eXL|Pc1&ZL3v&xMzTg2vt(}Nm0&@=bRITxx?cSL~O>1YQFndfm&zONP?0Ul+$OQ1oaRu1* z1Oj}rWu~$S=u9*z9L6$+wkb%PHJg|^AN=KJ`nB;_h)dj$gAH%$5NM2Ux`%B?Du;C9 zE0#McmpedV=CklsVil+v6lZ7!NNP@~5Er79)X-%z?X2yUmUMy!8nUgn>gKo9zQKX5 zIwqZG{`*m8Y7XZobWwF%szV1?X6$~ZhztHJ{MNP+cL{YDsXFwzpFDMCFT`tz`lo)+ zwD1Kl;iR%)M|l%w5>Zt1%M{|STQueMz5NbUE8r1b=m?yQNNw5eDL)q=DP^oX18a6Q zIU(mFkwQv~b?!acPdMQz`b7|A`1ar$lc7ubmeHGkjxYbb?<)x3b%csXE~uuKErQ@$ zW+v8-^CO+o-IaGc7+(78ecJwSXI(0)uJ8}y#f|0jLn$dn30~eUDCi0j5+Z^9y4m4u zz;sC80^AnT>i+ejdxSt>fDltnwlSFS6pS$i{A!Z!Yi^1N#W_r^`ZsJkxBZ!ROaE-D zKG{@nLKhS(W%)XQRZNh*z{=nGOuq*1&*R6B)BEP=k{4#Yb2|$iZDJm7JR4(!w$Uuy z0A-l`HZG$I5aX9DNAZAZD9SWGpiRIdfMA7hjT{37Sil;L_rw3WdzBrxM)ng6@bY1q z4Fwx2*sF8RRL~G9P?eW9q$nE9PF3ZT+zNjo|m?h^tpO#qaHpM~XMNG}CNdnvY0>yHTWa z>$G)(Wz@9>e7m9bs`s8Up~35Nl#@mL+_gl9^wQr8mq}aGwNDuvyV=5ag^$T~`8BER zugjg{sN-F%eo5s$&w7tnFV(2)i(+2z+0G?yR;oAa5vsotp9Oo-&2%C;U3+I}4Y2*t zk?B7GK%R0iGH2Jb_@pm`<(>xB+G+-~op%b-{@1iNwIV((+cJeaCwWP#s|v26w;Gmr zO-NLAiXd+5s=e`CWfJ)0fx9m)lmkZzBR(^uH)>pFW>chpjC*Ea=cWupeGh{2$PB+Q zr|>5;)sOb2rOyj~(jGbV+-^Q_eGzYzEPi(`FwK<;c!9 zx8ktj>X=KXg;|KDsQU_;5z;k2y-HU*l~D*2cWJI;bAe|gW}Q5J1`x1U1J|Z(^`R~* z>ODWT-Xk6~HP+37mtY$Qq4Y_Ka?Mq*1NG5Xe07qKTm3MrAJeLkj3@p*BY!%)F`CU< zh1}lW0N4k5T+Q!W_8K_AoCe%M6(ugE&AGL-*t^Xy@~y%5Bzm8Qq-SDYmbMQP_azW( zZGw+pm#MsEE5BkTZQpAh?;-K&w;G9Fyq^*8)B6eHk2q; zTEJ@9Zx!Y+f-MruCHxbvw~#W@k3IhW zdXT6y!>G+8d);}5nNnMQ|Hg^#@Geqjv-k@4YYb21E7v$^v|zSb~jp(o)&)UqFSa7idg zvJ~Fg7B(25fm_|Q#MYiGy=4=z-ntRaqcGQZvm>MtoXygxt<_7i!Qni|=I^YnAX>H@ ztXuXCSj8Z=V7%_mFNI~_-eA!^*r1^(yj>{6^L?I@EfLu7PaS<|Wr5X=AU=`VwVyYc z98m5Q*(X(fpaT=u;|umI4ED^U8K`DUE+D}V>IgE& z^@8;8$}J$51)SS$|AJpU&%pX3`O_NZH+}y`8qf)h7VvCrA5b%%zz2{SF#qjes|Y2u zU(+u_9w-Uju3pc+SKcK*s>x%~{P+)$ryl%VXQOpuzD-c>G*I^KEyw6n+%YXe zy)J&uK@P7W58I)+Qu0BJ-C8U1@~M{_M}e7=Qx}ep?vjoZVlb8mj*%L;{b%Hg_#V=w z2R>gvSpH<{tsu8upNUTo@!pGH?}C+!de}20fX~`TquLYSKALe9z8^QBbj4A5 zZm%b{Bfnsh`!Rt;bgRG!te=!vG6bFKL&;79v^-smX%d=>|4!6Xe*fR;JR|G{^lSr)6aX$x&IM?YW8C24!79eqL3A@l7r* z56z~#CUF;SqiuSiDFt1s_Q$|k4G*~Ufb*P?F7o@IQNlzxuVMc{Tq1dos_|~)t6imd zOJ3B53;ilpd)+Vs+8qqzsydiYJTo&-Yn8TcuPC_-&1Lw1qLk5hb&2;7ytfa|m}Q%3 zV_Af)tsB=f%B+2k?lcb?Y%mwnHF=v(v1nz+rSa6Z3Eds5Q_;ZW)(nM*Ij^jcRpE-` zg?gecCb7oos~zM^ZmGOr6%G0syA+PR-Dq|1VmxS|jC2%?{uj1hT>n&8Q78KR9YHO| z^nGT!-4-H0y2s_1K;jIFP{JGkow-x%jQD_mtZ3eDQTy>uD^|%+@%APDdZV-T&1Q~X zVDG}V)v4QD)`iI1RuI$HMfuIm`T@Qo-`1zkTmRM&wOd>D@P_lqc~dwCoFS$xSiBGN zY0c)0VOVyKBOjYc_DuzM-g>?fH9Y)npey6KT%8X<$#L*9699T3a37+fAMHvCUtm+_P^D zUVLZRPLX%;rw>oUHon45c{`6s7?$Z>_$Tn5KAw1fos$m%<_tF4xa)eBGG{Y0xxxR(9lVIc+vAsR|Vj@y&b~+!eUf4VetE z>!JWLbTK-JL%Dq1zNN_uKn<@$b>B}9nI-$ducF@umQ;bj(EBsSam?8Mq`=nT-(mZW z1MBYv4yptuh936?cWqQW{4Ucf3L6-XezW%ahCUzYrWZXz9}BFy!p+sgLu~s{xX5nx zq%eb!9hlQk2@(E75~&QOb5nvFf+j$7b$o$a1f&!?gEJ0=>Rs<6jFnvVDK3l10!=gfpY$lBvD4 zl)SA2r3HxTMq17jqL>T|YN+nd^CEK%h23taH3?x$cBw~nNi6x&{zamdePTIz+SUtU zax;imSvwGNkei0*YkkE2EF^Y1U7ymQYQ*>Gb&&`u3XR|V$PI^vNeg8}qR|T_zR<{fj_qIVKnkF5JXIt&!`}Jyxo zo+|PmE^W_skuq0+4p2<{9C~}VClhF~I2P8XPelDFi*lP!n6grwR~4&@8^8xhw$b$V zg0c9E5mQXx{I#@=1*OTx!%`=*Ic|JZYLA|Xx?lkc6T4c5e5%f(OFa=a(AnlaSR5yK z05Ir0DzzH#5H)3w)2H>k*7lozCv{kP^VWZIt}T-%co;8b{Q$jucS|aUSX~AL8-llk zc+AB0>0jK9msS^;fJdQw;k!UyL-z~F%`b$AuW)WdART^^*~-i#7yA^mOhSpwS`d`l zS8FIi>&UpY4Z7f&>oAR-&v@O2;cBH#XREJhaW1D~_wHXw=t`lx8xKs~1=QQme_A>5 z2JQRB)Z{Dj(_RfYKgiJv5Khbh1j26HC>{%v&0lG$S`YH77sauxVi? zC5#v*vQQ-MBEg#5oMm^af;;)3={`Te5BV%4u&HPe^MrxfbLX)?64B(>#KjIas0vr_ zDp5wFc3=PqQ%V)fsvZ)xY64EEoHG%RcZnh~{SWRX0_B_2QsS`rcOu8i>-<$w!!9@1 z3^JL|>8ms3JrmIV8uS`Ju@`8b7iN`Ei1tVhK0s@#-kGfI@GFcpSFrvH8sw;BV0wgj z>mAWArw%1bM6`kPKcFCKdZsSyDCUec79r{x%Kk=BHes+0HtceD+>mYH$G$`*C9TG9 z%&gF($ehZZXTq=ay`qa7n!=Iuy^4L0e2SX?)_XOw+C_xQ6^~0i$LK4e3eg%Dgi{tG zWshy$)FQvQ+>n@kU9dZGAcY0pTsJstO&0kWzyND9I4cCSc|Zbikjq`>6sUvI_WNUr@+~usdwq(OnIiH=qs}B~<7#-73 zF$Qd8xz2FYCaL+Oz0V!f9N2@ngjD@Tr}%#y;i69QN#&PLks?nVa{-L>2*{u=YM(zd zK2M3y;CAG&O94{);VH9w?9QE-5i^a;aMFdg52zo!FI3N20NAJF3sv^OwIsh~sV2(l zl#aAm*)Mbcg7-@JKW_V}6g%V20GK8%AzyG^((^Zi0~=LZA%l zF~&}%wHjm_A_PJlJGz=Jxeg+)GueD*O*6dQ%P{iDvR*j^bz+4a0ZPuq0 zEG4eMiXFrbs2bwU^VzHo{}Eg?^`OvR_D2X#H#Bf2 z#xo9s+)@!j-fi61Spjn{nL6xDNZu2+6lmxl#DtAxP4}-tZw0AI09o`4pT@}E(-WMk zqHrj}TpVgE2J1i)Seq`yjYif&8NU{4jVDkwNq68S^@#>eZ{g!o z&d=S(5?%w6rwNHjxp>?(MZxj86@39}W}!iq_upd9swjki$#_2|S{H9%R8{Om;8J>| z=l1<_>TQRnD`=q6%_9Ty!3Q|5UaYzV;MFoM!O3wDk%30yghL@ED#8!=2(8nm34)>= zP@#O1>7-oef!~4q^w8HTCW1s!ks$dSTbPK?d`oyp8}GjefzDy!fI?G96ieb@8qQpgsE_WzA!27mHY4 zLVbLg<=3Y)_2&aKOR_>Dx3LSQTdU2>uBU;`X90d~WSUhuVJ_KWgS%S-Yrv-l{IOc4 zatFfWQ)W8TJ7`l2Mo}E5>eFO|)vaZqNW!R}avn|Xn%2p{B%Z;-$`|O4nA$w$)wZIz z;adPaSQK~X3|3o=>P0(nXI&2W-g%?N8hz}NYwS|^$W>4u6h+P2Q8pj=pb61Z0SDga z>Q!Kds8J7t*FOWA809Ju@lxK}A`u1z+>Yytg8(o+zIpFM0foysg~5vOFzdY-hwyU(tx69L^vx-salu(Gt)D1Bux`Hw|!Ej9S?IUaQnqX=w0r6IboNQYD*lG^Mfi6UhTP_@0B z=5B~8xSr3wl6%{#Mz2dvckH>9Cg$a=-Qvun8i&sRe?(mnMC$^=paM zRWhV~^*g^K{od?&%p;Q>7mU%aaH#slo9${+3MA27vogx`)$xLyrtjOqhOjrGsFsM` ztQqE=3YBLeb1zP=wSlT@CXdJFxQwZeyY-f>#F3i6s1s=D+& z|Iaer$+pY02qsWGKS>&XWV2MVY!yfLl!5hxiyNDdmYLa4A4=T?vcjEj3W%XWyq&+P zib1%#LH`u%NXq%VVCmWHmmU~F&cSgAlGD<#8a?6MGpbY|`_Qx@$onP!@qS@+_@X?~ z5{moq8B4Pon%-PzGR_35mce`TH1i2=xAX~ExD2t^^&$T+k|Nco)v#Aa895lk;=g>F zo{HY_J^+7ODZ6=BNW7Go+m_l-&n#uN0KG$UebpPYOfRl_m_>8A&Tc4#X?m&*PyBTq zNLRXG)U|!qOpt}3 zNhY$k;tYK33M^zHJ)4zR&!g#pq0#|vlc${wF&J@aR&|DvUtwshN(vv4Wm=oJVS<9ZD~2F%qR+r z6qi`lC#AGRS#4H`?boWOK}LqmfS5(*hZ`-O-y&f~*-^AUn0y<;X9`U@mB*LdWY-({ zXswd@zeKtHSbkAV%o_diZPsNds{*Dt_)U#B2@0NC$^DJ;@Us~ySs!Onv0c{5o^~K> zZJMgUCO!qEo`0O6_xtoSCyR3sFDd%K*T;DkCFPMzSz*5~a`CvSs6AV>(`t+8j*jrU zy9O7aGlG@me%9St&}tk^pO;<>v3s}x?5Kd`f|TZ{5J{rj}KhG$eZ%ht?%wGNC9OZN1yN1;{Z zzI~hUadJ>Ua*rF`(GOAGOuHS;)|Vt*WF?lFAjxxGDFKHn7PsF3de{u0u<;fuT@`0~ zrQd?M80N8s3@)a_$$$Uy+zGrl@1!X#58UbwD2a7E)38tR$nl)H;M29!O zmmPCJJyzD2WRr3!163 z&MymjKIRg6sZEq?dHGUlIl5`ED&!>*)-U!PQ3`#92C6*Pn*C`kck6>m3lck;xOB7? z0&X=0^M+g5ZAU5iiO))*l?)ax>b2*8ipY6?7&c81hn0RDbJ?1QM}JPQyfWqjd1*0+ zR7$hW1#;x>(7c#9;5>CYTwdo!QV~%t8}l2Ywidv z!uYw>DQeo6>&4*37sy{DLq?YjL6OKc`8(`}o`&sf^2Uxj;qNARYX)4<9M-#&Hb^+i z)I?Hhvl#XAtuw#FnpG4!`Z;d~1$d#8`9gCfotiyIe$Ky;$?_G3Y@ok^&RtVkn_krR za&Q}9e6DK~rTDaO5*^X@fN6vNsduPJqr||gexg)+-D4A!$guo_EF-B^DK$qHnKMuY zjKt4KmtF803;3Ze=T6P&b_{^U%23^k7fTCAZ;Y|lxaOB1|1=b_Bw#EG>ua_I9Oqfm zmZKX_m>||#CLO+{`d3RgFe@Us^5ZiNDJu6{AGK#f9zT5!jp~|uXmDA2+^g3!bl3ke z8W$-O?S8!ZtaS#q8fuR zE8O#q_{q#1s$>+&X|do~Gw))y)zkN=uED=n4Wrp_J!Bv^KhYo+B$<=XRH+JP&pwma zg9RV-o)kQJ(d5i1OvhJo{O4No;%sY{+7W4BH-GkDG(3jus>(tu6?wbPs{2|Y=v%E= zM6lGj=>sI+xONmezj0%R-_#Jn>m6klET)X3usY1B;n)GXu-1z z>NxPc#1-7hKmSY70Z{LvHC=$}g@E+>Y4`6tppaf}JL41YEPIFP#Q1LsgUO*&%lK3# z9g%Xjt@cQ3BR5tFs)`XH4zSs%E%T1gjArf9ubZldt4=8L*rvCKd! z(Za)zTjoEw%ivR+>nB{pQ7vx+*F?~@K^#NfpeNXINP!1IMR3$wHPWvMUik%R)voJA zZN@&GSQdJkPOYCzF0Zwyp7G`IEVy33D|C2`FTQ?RV;7&FB3W@N>wa7%VcM-BG9PBo zDo>AgK%#dbKpJ1(z61~dSI1{44inP@L?2~jdBy2-@~a~1u}wW?EV~V86^X7vW_AaG zs`;amkg0Y^W2AD@4Zi_~)RP>A5FvSd?5$jj!PK^7Xk5a5W$ICCxJ#A267z?jsDhbBqY}7r_*dEb z^X0+T7tb^gn-yB)_w_jvezlV(954B*vHhSpGok6La=fR=0)MKz0H?rYWkYc+9BjxhP+Y7fXcf)Lr|( z-HLIu6E@1S^B#+j(`Vw>MZP-LeD%i`?aMOs8lA;>CXGEcWl>>|XCyn5U!#7+#rv00 z7{W>pP&Fu`;->(_!Q1Spv^H$S!-0B7CRy4Ha@w@;r$yXfK~{F^Gp+tXdWigcyw^zw z7P}yd(wiqUb)^j9tS|va*`Fvc0(CdxU^kGr+l=kDT6%(>TI>4oae=*|_s9M0OdQlh zJZj#heWgYZWIZ%&MpMF&4qG#)9_D*rd!#V~Rt@K!nH>qP=j`?94bYf5PQ)4MZmc8z z9S@-Cf@U>_-UbaSTZxj@u5@R*tS97MKVxl{Jz&0xjvVnpRZBV~ zXC74yNLKzL$kcuzsUOuCc1yP32`w%S8QT=jKMGpkJgELMKl#6;eLiXmWJ8eswSWBOb_0*h#o&nkd#0}I>*GWFa{Rs&@sg;u zTA*RTaBZk`E`lGl{B#$#>@xoB%*5C(#%*zCy_erLKkCVFixdxsr(-3<-yI2Da65)2 zz7Xu0xtuC#=;F+tlqEg&$GejokW*(Ro~zKMx2X?52$Ft9xK%I{nC%O_`HUqn3ivp{ z-3P1#V>|xwrGL<%9`&&a!yk(ty#;$$$Uqo?bN=D0VIL>uE$y{P^h;Bd45_x(H&$Ar zOOva%PhOxGB^!ol^)kPBnF$a3kw&=4jY)NG{( zF=<=*`^>7ew@?N~vr#bH)2r$BJNDZuMOCbz=C-n0X2Vd68(tH}dwxPB0=;qY`TNz; z!O^VJnfopw?fUIR(e1D8-qJv}A9 zh9NV2aYgylzM7}k^D|1{{H4e(i0&urdY3l$CW*|~SA_H~xQCd|EJS*c0i>|>e#V`>FZsT8lcSZ?e7Vo_D{Q*B3 z1qojA-B7ZBSE)inaivL8Mr~drA z8zF!U`Kcygj1QTgEpyDI&PZFqDhyYKadWU+Q^ZU1Ap|ZH>Is^oeDjARcQq+t%jU;5 zv<2G6`k8HHq(7f6Rh4G;r}E#hGSGsQzzRYwb^ca*Zab)iDjuEXa~8Lsnj-zJNe%Lq zxwzuWiP$-}VT$f)4MgM+UkLnEyPt@;#oQ}AQB&#*SDX&--A$IB{*vmqjh)|{cv~Jk z5ci?4A{OQ3Fn)!VCbofQeb_G>%5|%@a2Dcb&cpj3Oa0#&(#aqf2D#-p6!5Gml0y=m zi6mBQ07~~MvIb-Sj9pENusrxV3z!3J>OJ-M33j-#5mUd(qjfOe{rJ3ZUNu4-@(6CG z3b&cC4A#(-h7js|(oo8oe zjdc+B+=MTi2Lv=uJ#AJguy%&xzoHX?5ed#1woRYa-Vkml943Q{tFfe_@(b!u6yNrx9pdFe3D0Q zUW9$9@qzSt+_ElnW&|0#ZM5A1qgNZ7clg!jHh9-5>adVzQF3_-rL8-%f&4OL#xe%S z0+EZ{>Ev@L)D}U#9e>Pp>uznd`JT-yun5A;mT_;pk*^uwXWt}R!G(7Pbup5guFp%D z5&g?RJ>@}X3=fuqT5^pJdAu0I_c!z#xhi<-6{>d}e}`Fa0^oGuluB>?mKOtqu>dww zzpFop-3aLF4PGQ$nCifTt4qp*d7{(DV{?a_|CWV_>dp3da%*4`MKqh}v&w!tk*SgW znx{aul|7;^U6Vn6NZcU<3+5?+SYe`mK;(yn?;GJz+zbK2ofg{(M83wZ{KB7-OzEKY z4tQ<7p0XL7f+yAu5P3ZzI{eA#A~uPJlCWNvpD0Ywzpqtj37^Lw_nsfPU`9PGzcePg zixw2*)K8robi^!r>`GMD&^wjy+!Qn*a4JWc9)Jgf-!$IW>l~RYwwTc=`ZJUuH2Us81ID;Jleo*0@>e9cO{oXTy-r$`q^HoSS(yf_%4$8fKIG(<{WB#*YD7p}U;Ut)lbJ(v{TK zGBy)x|NZ^afzkw!cg9l1-Go*QPY@`VXT|^f8pNTj7A0=JJ}Akmtiq~wqNJF~!0k!; zeMk@bDm{=Xxykf~#93L6Y!=D-SmRy^3FX|fFRUW~nqF0+Z-Mx2s@uy*JSUF831H7) zQy>=2i(q)HDNA52^wKlhJ?K*5OUcR?(9ri`8$Wio_3vP|CSgyye|FTOd5Q0<$_C(O z7TXe=b>?;9%{Rh5R`sjnQ_OAZpgxJx^!4q-0(Y?X5*NcukV4 z^H#b@*4ta&H6>1g&6RIEeN$!Ot4!IG^0)FfmaPP0{_NdxqKF~X$*u8eW&6j~+iBDN zFZS)O5jZbGkwcIH|Mn1874?mOEiNR$8d;V57>*#1NMsyT_+CDhUbfOCRn0hvx zsya~BP5(I-C6Bx)u?nTSz?)JU^v%bn`VBAFv|XMav8w&kv7i<-oAb$0 zM|Fd|ACw-xlX8IV0G!zLAdX~1?m++PT_B(&>-S~&vBQ}Al9H8c{ zV};FMx8`J0xy@otdsVF5SR%A(Us4xC#Q3pA4Lpg=W;*h8n~4#LUeHUKm77@#oz51p z%@c7-0l?8J?$t=C&)*TNZ9A=h$Yf`oEEOt#b1B3kLw_pjEm^ zo&vA|?fAN=B)M{;D?iFyuToW9S z?nJOv&<9l%)6T(q6UK1KphQ4`U@Ga3v zwwK8&6IH>@FR(J|a=6HOs`^Kq%mOF@z(t}mPVPZ2M?tQ=bt~@z_0-eI-94l}-3S0` z?=lE)jbjb*bN`nP1g3gzEL5!hz6}=PBw2Z!D{IZ?Kv9HGp(SzYvhp6w&k(;&biHfh z|JwZQlT$xMan<+!(hq+e|AEbOYe0=^qguV>ku6i=xHr4aM1Ek5)322JD9NhTBiwobmahhbXz*c=z-r3xQ`NSFb6gYnrlR!!y5oVL4k@ zxPw34ecnYn63OH2_Eq&Hck|TeDWlQ;_-#x{O^91 zRbWDp(D~N++gO0jD&JP{`HwmG$`0D!yZn;?yi{txPPh6Dkh$)BIgPUyDXy^>`L>_- z=BW-pm$hj6sntEFD;~W!;YUhqrk6(6Vq=WV;dJGQGshhT5 zu2L#+AY9?Ic-I^UaJap9Yx6EyAWs~&IyFx2UpsO8;3-yG>Cwkt9~(3q)nW;nh}V6- zBhh_mwTe1U7{R0lu!hrLF#E%u8Lv$T6(f^5#xjwWIPqncCk{)Sv;VU!1uvov)T z>!IoOaBNaS0j*w%bL?#Ids76+Zxl0a_$Yn=Uu{W;RbwVv!^KgO-G7Od;UVJ0b#>47 zT9}+FT!RTyyM~%(y+GuGk{`J}vep@kU&k6@z@Jfwlv8FSS?K*cS(E>HU)?j0Vt^Z> z_hElz)=Oi!didaKddk9?X*Koa`^&UYukV1HUiteiq681@tgK(w2l~1W>>)g36i85> zo+NKG!!tfe33do_&iaK1>zzHSkn24*wf3lnk!L$XpZSsIz+kiJjcHb-%htFVK$NG3 zmkooG&*za~vSIKy4&}r0i3@4uV@H_>xs1<$Uzjz0Yf-}mVbJVW?J?(SN(%v|J`{@OzCOV@*(zhBNE zc-mZ?d<|V{exEe_qamf~3mG5vvoCDaLQ49VDy8`&^#nK*DTQ0zmjh6Oe^lK==0|3;-7+7z zmqz(-ZV-yI!<^<;Yv6M4NzGM$Y#X@H685#K%P335pj3{d-TyXpl4-!dyF;Y@sf#Sv zcBB*1ODgrD0iWW$$0gv%L-x6JF}NdONMZtPVeieCz7R|#*U2TETuA%~XLtS&xRuRh_RC>51%J&MAs=b@3IPKFE2wUb#Ne;IO&g}4-7~+$2XRCzYN>=t{I0OiG$4`U5 zv&!WzwgJEX#dY&n^?%DTE!s#6i%Qe0++^M?RT5AM5X_e+8>TqegA9gP4JEN1b!-E= z_wjKINZ??QhQScv`MZOr;fRY{Z29UG`K{bfdxZg0+$-lvL>JU>$M0H|&C5;~XQez`F2IGI zyV3WUfPin%BC1dsv`y{8FUbUv1!!L+>0tP_YRSFXQ=UjQ zKsz=JO#5oGTad&iTYG;#N?UB}n085{L-=D&*#?d-7@~nFWA?o)&HLM3|(ij7oB@~MG~W^k5}eegVVcrGgcqs<e;Gc}2 z?PeJ9n54&vC|`iPU|{tY_Dvu0Vt@+4TD-v@$Sx-X)UZP%Y`Vj@ur>_Y4t`<)VCA=; zJJGV3h#Zs>wh`zHnEkEpub|4`#|;Hg`!0e+0x+u~Eox+(Pk`3$^zy+ulD(lf^Mbd(tGy@M$c(%7xj%eIRdxoY-_$kt z&&*k~$TWHmZ@Cfr4r(iisiMJ2!byW!XRqbG_27RoKg$5j&vrwRF>sBf-}&$OeWF#< z9a1mTgw5Waoq)aEo;!J1>GbXa<>)_X5iS)ZiM7sT5v4!4;YG)Rk7?5~ znnkA?H6!8KfPYdTk741(zrk%iA71r@m;o5aBJte`b1+swpO#OmqAFnTHnLIG6BnYM z`r(M~k&Hn#PG#)zx5CIf%lm>cMD9NE2a`{_AH(!+Dk>MRc2x0x3^rh-7<%Fb%qm4V zm@88NsXJO#wUrx5k3In)^wp`zs$jK0pY1a-vnfa+)FP3!p|r>s-bKzY&B?t_w2X1d zjdj}jV7^%)d8t1)8z(10elY*`4ayT$eEL&r_~EHJN`YcHWj0S5uUPK5h*Q}oY39I0u~rl)6)lvT~I-D|FYqVRH7vg zx|Exm&fh&IXKKwKcHTq?Q{I)qbvp)LiB@uiYnmc1sEzS+n%Zwf+oS9 zZ?y)?6Sxh7O`G#4%4ah;o!SLzk0}y2aKqEKPwYcU@JbGh%DL6MXU^ph?4?~P$7J!- zpA}WjRDVl>+7g3?Od7N|Dr{bPB9F1%xBdiI0?#s#4b}C{eOS*>`6V~^YKR_1f=#ST zX@qL)jc~M1xiROvmEI+vfLkjnRs2+{<{KQ|!41{I(ttHnHwBG8I2}I(nU5PWr_t0- zV}ql1^CMLJToIL5cy13j)wXcI+t_7q3wg(?Vtwz%Q%=!@-Ox)lbMHn)8ypoaHHl7s zt$c@AihFGXM{APoyK-T^)_mH1Q|~|M>MBRu=IVH-4>_Cift^_27k1APyFZ!?%O{zc znWx-UphH|=hkk*c;DTYV5WfG_&Df}?u?K*i64;eOaqoeNIR{IO;JJB8)I@amJ`%v{ z&&`jJeb%Czvn*6y;ODvQm3jPxCXV>r!p|p_TiNb3fW8gFM`(?654FW7dYm7>qsmwy zoser%K~G(bDxuML>kres_oa)`huEd2H<6?sX2j(>8D#U-Fl;U=cxEaERIr=`oCrgb zuEvk!OyhyGrZHU68%&GM(@?^7Fi(i7MedGFv1)LHpE2&>JgrdfAD=Z8eq~2Rlk$t! zN=lgvJV8~qt>1SfXG0Q~JYodDHAKeLYziXos1!`#1g&|zC51N|SY{5mK4*hJ0b3ZL zbZ_p?BtfW3|u#~b8XqQ6F zLJ?-m0cJ&-VM8S+hgPf*>8a24M1j@_@OIf6~!j@$u9icsJyu_xSqunYv`u{h=9_oO7lA)!~-{#C?4e zCQ>AQy#52pdFSCAh8-YjF~}E+LW$+s-?oPLV_cONr`O~$1-43QwDs(+=@V5}k6H=U z!%5_|(^A#A{(%g`do$e4Z*HwoKp*qU+j4GiaZZ+kmg-)-)iVNyH3q|j?@nyY$&iuq z+;T~$pe7UChPLL(Mcfy0j$y=-`JDNkwvnUTR_T(_M`zYU*i2jv_a0<`nELe+(aEUc+K$-W?#uk^Wa7<_o665At3C~MG7jz)oCQC`1g1@OrV=MG9)dS7xV2>)yjFbg3!)}$a1!Zh zUXYt+-pp8F=9lRhu+{c^m@dJtDQVBIciym|Kj<_Mm(t?l(wT2|?BV;x16Pe}QY+hx z47N{A=hv_paqR`xIVH&=JxEgrK&_*BvZ5&eX* z1c86kS($)lq5@dW@`NZ6A{WiXWW3nQ!1;RpB`{JCkKr8wsmgS~B!8soe0+U@t~L9kw5z#VX~X#!q-Og2UC3E_Fhq7Tym z@6Qm^;p-vw!=GicBz46{kw#D0p3VP`)l&UCBr}X{a+BWNyJ$|nJauMA`Mq6zYyZF( zQ(+sG0&y>(aQMBg6Mh%1B+;2QzWgX2d7ksXRR0tSeM)~pF`avbSRjo+U0v4Oe6iGOhkfXvBkdlB)o@QhZ`w zWag7{=>r?wNB?U)Ou-zj4W6ABtK!mDjjuuF?;1k|M!Z%lb1$N6AWyCs@U$ftjQBQo z)a-|lTYHAOd<1o^^R}l)q|H?@k0w6M*0BnH{ek=UX{Wd<;FNM8c|7hqj(;WL>%6t{ zQJc-X=F81ox3vOuu#|W)?Nn>U>YRt$EL`b`+Y!>t$q>s!MTroc9b+iVbOh_v{C=#s zRcW^loL^Mu8KpG_&$?i1-JY!{=KQ8W4K(#OF#o&ZxSE1#yPutDQyq53=gW6ySO3~7 z6-~bw+|JBDTYBN7s&d)<>e54e{LG>cM<1QmMfP)Y*5ib}uxX$XE%w@%_S^LBT3nmJ z$@W&=_0HUw_D>N+7O{hduewt(fd(tJMqolN5t#1CDj)v4SWI$!=bolb1@2S7_m#}KcRrj=Ub?aIq9-c^H^o@d26$!^rHxejB z7xA*GnVSK|p66Q;_g#_$`v-*m^*QyY@Z-x7i>m z$Vp~%G6b`P^JL=2MS`@@8uzoPWxH`XpDMDe23{cgL1A;$Zx)r@YoPBz> +-- <> <> -- -- Usage : -- @@ -56,16 +56,12 @@ mag x = sqrt (dotProduct x x) -- >>> writeImage "test.png" houghImage -- hough - :: forall arr a. - ( IP.Array arr RGBA a, IP.Array arr RGBA Word8 - , MArray arr Y Double, IP.Array arr Y Double - , IP.Array arr RGBA Double - ) - => Image arr RGBA a + :: forall arr . ( MArray arr Y Double, IP.Array arr Y Double, IP.Array arr Y Word8) + => Image arr Y Double -> Int -> Int - -> Image arr RGBA Double -hough image thetaSz distSz = I.map (fmap toDouble) hImage + -> Image arr Y Word8 +hough image thetaSz distSz = I.map (fmap toWord8) hImage where widthMax, xCtr, heightMax, yCtr :: Int widthMax = ((rows image) - 1) @@ -73,14 +69,11 @@ hough image thetaSz distSz = I.map (fmap toDouble) hImage heightMax = ((cols image) - 1) yCtr = (heightMax `div` 2) - luma :: Image arr Y Double - luma = IP.toImageY image - slope :: Int -> Int -> (Double, Double) slope x y = - let PixelY orig = I.index luma (x, y) - PixelY x' = I.index luma (min (x+1) widthMax, y) - PixelY y' = I.index luma (x, min (y+1) heightMax) + let PixelY orig = I.index image (x, y) + PixelY x' = I.index image (min (x+1) widthMax, y) + PixelY y' = I.index image (x, min (y+1) heightMax) in (orig - x', orig - y') slopeMap :: [ ((Int, Int), (Double, Double)) ] @@ -108,9 +101,9 @@ hough image thetaSz distSz = I.map (fmap toDouble) hImage maxAcc = F.maximum accBin hTransform (x, y) = - let l = 1 - truncate ((accBin ! (x, y)) / maxAcc * 255) -- pixel generating function - in PixelRGBA l l l l + let l = 255 - truncate ((accBin ! (x, y)) / maxAcc * 255) -- pixel generating function + in PixelY l - hImage :: Image arr RGBA Word8 + hImage :: Image arr Y Word8 hImage = makeImage (thetaSz, distSz) hTransform From 1509901f33ac85402d5d3227d83306d3a2e7918c Mon Sep 17 00:00:00 2001 From: khilanravani Date: Thu, 7 Jun 2018 13:21:32 +0530 Subject: [PATCH 06/25] Adaptive Histogram Equalization It is used to improve contrast in images and works by performing enhancement on small 'contextual' regions or neighborhood of each pixel in the given image. --- hip.cabal | 1 + images/yield_ahe.png | Bin 0 -> 56049 bytes src/Graphics/Image/Processing/Ahe.hs | 85 ++++++++++++++++++++++++ src/Graphics/Image/Processing/Filter.hs | 3 +- yield.jpg | Bin 0 -> 52372 bytes 5 files changed, 88 insertions(+), 1 deletion(-) create mode 100644 images/yield_ahe.png create mode 100644 src/Graphics/Image/Processing/Ahe.hs create mode 100644 yield.jpg diff --git a/hip.cabal b/hip.cabal index f40a088..c5ad824 100644 --- a/hip.cabal +++ b/hip.cabal @@ -69,6 +69,7 @@ Library , Graphics.Image.Processing.Complex , Graphics.Image.Processing.Filter , Graphics.Image.Processing.Hough + , Graphics.Image.Processing.Ahe , Graphics.Image.Types Other-Modules: Graphics.Image.ColorSpace.Binary , Graphics.Image.ColorSpace.CMYK diff --git a/images/yield_ahe.png b/images/yield_ahe.png new file mode 100644 index 0000000000000000000000000000000000000000..0b4a8e4e770172318f4497e888d15927a7609726 GIT binary patch literal 56049 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 Sva%Ea0000 Direction -> Border (Pixel cs e) -> Filter arr cs e +simpleFilter dir !border = + Filter (correlate border kernel) + where + !kernel = + case dir of + Vertical -> fromLists $ [ [ 0, -1, 0 ], [ -1, 4, -1 ], [ 0, -1, 0 ] ] + Horizontal -> fromLists $ [ [ 0, -1, 0 ], [ -1, 4, -1 ], [ 0, -1, 0 ] ] + +-- | 'ahe' operates on small 'contextual' regions of the image. It enhances the contrast of each +-- region and this technique works well when the distribution of pixel values is similar throughout +-- the image. +-- +-- The idea is to perform contrast enhancement in 'neighborhood region' of each pixel and the size +-- of the region is a parameter of the method. It constitutes a characteristic length scale: contrast +-- at smaller scales is enhanced, while contrast at larger scales is reduced (For general purposes, a size +-- factor of 5 tends to give pretty good results). +-- +-- <> <> +-- +-- Usage : +-- +-- >>> img <- readImageY VU "yield.jpg" +-- >>> input1 <- getLine +-- >>> input2 <- getLine +-- >>> let thetaSz = (P.read input1 :: Int) +-- >>> let distSz = (P.read input2 :: Int) +-- >>> let neighborhoodFactor = (P.read input2 :: Int) +-- >>> let aheImage :: Image VU RGB Double +-- >>> aheImage = ahe img thetaSz distSz neighborhoodFactor +-- >>> writeImage "test.png" (toImageRGB aheImage) +-- +ahe + :: forall arr e cs . ( MArray arr Y Double, IP.Array arr Y Double, IP.Array arr Y Word16, MArray arr Y Word16, Array arr X Double) + => Image arr Y Double + -> Int -- ^ width of output image + -> Int -- ^ height of output image + -> Int -- ^ neighborhood size factor + -> Image arr Y Word16 +ahe image thetaSz distSz neighborhoodFactor = I.map (fmap toWord16) accBin + where + ip = applyFilter (simpleFilter Horizontal Edge) image -- Pre-processing (Border resolution) + widthMax, var1, heightMax, var2 :: Int + var1 = ((rows ip) - 1) + widthMax = ((rows ip) - 1) + var2 = ((cols ip) - 1) + heightMax = ((cols ip) - 1) + + accBin :: Image arr Y Word16 + accBin = runST $ -- Core part of the Algo begins here. + do arr <- I.new (thetaSz, distSz) -- Create a mutable image with the given dimensions. + forM_ [0 .. var1] $ \x -> do + forM_ [0 .. var2] $ \y -> do + rankRef <- newSTRef (0 :: Int) + let neighborhood a maxValue = filter (\a -> a >= 0 && a < maxValue) [a-5 .. a+5] + forM_ (neighborhood x var1) $ \i -> do + forM_ (neighborhood y var2) $ \j -> do + when (I.index ip (x, y) > I.index ip (i, j)) $ modifySTRef' rankRef (+1) + rank <- readSTRef rankRef + let px = ((rank * 255)) + I.write arr (x, y) (PixelY (fromIntegral px)) + freeze arr + diff --git a/src/Graphics/Image/Processing/Filter.hs b/src/Graphics/Image/Processing/Filter.hs index 5643b47..abb8c89 100644 --- a/src/Graphics/Image/Processing/Filter.hs +++ b/src/Graphics/Image/Processing/Filter.hs @@ -14,7 +14,7 @@ -- module Graphics.Image.Processing.Filter ( -- * Filter - Filter + Filter (..) , applyFilter , Direction(..) -- * Gaussian @@ -26,6 +26,7 @@ module Graphics.Image.Processing.Filter -- * Prewitt , prewittFilter , prewittOperator + ) where diff --git a/yield.jpg b/yield.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5451aa8fa18c24cdd134090b53c5c213ae2d5f0c GIT binary patch literal 52372 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

jO{d|L5AaW=L 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 literal 0 HcmV?d00001 From 4733cf28c382e0ad9be9e04e319caf1a04c0b2a1 Mon Sep 17 00:00:00 2001 From: khilanravani Date: Fri, 22 Jun 2018 18:11:46 +0530 Subject: [PATCH 07/25] PR Corrections 1 --- src/Graphics/Image/Processing/Ahe.hs | 4 ++-- yield.jpg | Bin 52372 -> 0 bytes 2 files changed, 2 insertions(+), 2 deletions(-) delete mode 100644 yield.jpg diff --git a/src/Graphics/Image/Processing/Ahe.hs b/src/Graphics/Image/Processing/Ahe.hs index da38514..b50bc41 100644 --- a/src/Graphics/Image/Processing/Ahe.hs +++ b/src/Graphics/Image/Processing/Ahe.hs @@ -42,7 +42,7 @@ simpleFilter dir !border = -- -- Usage : -- --- >>> img <- readImageY VU "yield.jpg" +-- >>> img <- readImageY VU "images/yield.jpg" -- >>> input1 <- getLine -- >>> input2 <- getLine -- >>> let thetaSz = (P.read input1 :: Int) @@ -50,7 +50,7 @@ simpleFilter dir !border = -- >>> let neighborhoodFactor = (P.read input2 :: Int) -- >>> let aheImage :: Image VU RGB Double -- >>> aheImage = ahe img thetaSz distSz neighborhoodFactor --- >>> writeImage "test.png" (toImageRGB aheImage) +-- >>> writeImage "images/yield_ahe.png" (toImageRGB aheImage) -- ahe :: forall arr e cs . ( MArray arr Y Double, IP.Array arr Y Double, IP.Array arr Y Word16, MArray arr Y Word16, Array arr X Double) diff --git a/yield.jpg b/yield.jpg deleted file mode 100644 index 5451aa8fa18c24cdd134090b53c5c213ae2d5f0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52372 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

jO{d|L5AaW=L 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 From 1915739f3b6be26ee2f113f0bdb3ab1d86787d23 Mon Sep 17 00:00:00 2001 From: Alexey Kuleshevich Date: Thu, 22 Mar 2018 01:50:20 +0300 Subject: [PATCH 08/25] minor change to travis --- .travis.yml | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/.travis.yml b/.travis.yml index 34744e2..73c1faa 100644 --- a/.travis.yml +++ b/.travis.yml @@ -88,9 +88,11 @@ matrix: apt: packages: [libgmp-dev] - # - env: BUILD=stack ARGS="--resolver lts-7" - # compiler: ": #stack GHC-8.0.1 (lts-7)" - # addons: {apt: {packages: [libgmp-dev]}} + - env: BUILD=stack ARGS="--resolver lts-7" + compiler: ": #stack GHC-8.0.1 (lts-7.24)" + addons: + apt: + packages: [libgmp-dev] - env: BUILD=stack ARGS="--resolver lts-8.24" compiler: ": #stack GHC-8.0.2 (lts-8.24)" @@ -111,9 +113,11 @@ matrix: packages: [libgmp-dev] # Nightly builds are allowed to fail - # - env: BUILD=stack ARGS="--resolver nightly" - # compiler: ": #stack nightly" - # addons: {apt: {packages: [libgmp-dev]}} + - env: BUILD=stack ARGS="--resolver nightly" + compiler: ": #stack nightly" + addons: + apt: + packages: [libgmp-dev] # - env: BUILD=stack ARGS="--resolver lts-8" # compiler: ": #stack 8.0.2 osx" @@ -121,7 +125,7 @@ matrix: allow_failures: - env: BUILD=cabal GHCVER=head CABALVER=head HAPPYVER=1.19.5 ALEXVER=3.1.7 - #- env: BUILD=stack ARGS="--resolver nightly" + - env: BUILD=stack ARGS="--resolver nightly" branches: except: @@ -152,11 +156,6 @@ before_install: mkdir -p $HOME/.cabal echo 'remote-repo: hackage.haskell.org:http://hackage.fpcomplete.com/' > $HOME/.cabal/config echo 'remote-repo-cache: $HOME/.cabal/packages' >> $HOME/.cabal/config - - # if [ "$CABALVER" != "1.16" ] - # then - # echo 'jobs: $ncpus' >> $HOME/.cabal/config - # fi ;; esac @@ -177,7 +176,7 @@ install: cabal --version travis_retry cabal update - # Get the list of packages from the stack.yaml file + # Set the list of packages we will build PACKAGES="$TRAVIS_BUILD_DIR" echo $PACKAGES From e1f562650321e17a2e0fa72679b5cfd299b02a6e Mon Sep 17 00:00:00 2001 From: Alexey Kuleshevich Date: Sat, 23 Jun 2018 00:59:33 +0300 Subject: [PATCH 09/25] drop travis for older GHC --- .travis.yml | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/.travis.yml b/.travis.yml index 73c1faa..494a4b8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -36,12 +36,6 @@ matrix: include: # We grab the appropriate GHC and cabal-install versions from hvr's PPA. See: # https://github.com/hvr/multi-ghc-travis - - env: BUILD=cabal GHCVER=7.8.4 CABALVER=1.24 HAPPYVER=1.19.5 ALEXVER=3.1.7 - compiler: ": #GHC 7.8.4" - addons: - apt: - packages: [cabal-install-1.24,ghc-7.8.4,happy-1.19.5,alex-3.1.7] - sources: [hvr-ghc] - env: BUILD=cabal GHCVER=7.10.3 CABALVER=1.24 HAPPYVER=1.19.5 ALEXVER=3.1.7 compiler: ": #GHC 7.10.3" @@ -76,12 +70,6 @@ matrix: # The Stack builds. We can pass in arbitrary Stack arguments via the ARGS # variable, such as using --stack-yaml to point to a different file. - - env: BUILD=stack ARGS="--stack-yaml stack.lts-3.yaml" - compiler: ": #stack GHC-7.10.2 (lts-3.22)" - addons: - apt: - packages: [libgmp-dev] - - env: BUILD=stack ARGS="--stack-yaml stack.lts-6.yaml" compiler: ": #stack GHC-7.10.3 (lts-6.30)" addons: From 875701716666f68c24507ca248f9fe6027954cb2 Mon Sep 17 00:00:00 2001 From: khilanravani Date: Mon, 9 Jul 2018 10:56:50 +0530 Subject: [PATCH 10/25] Laplacian Filter Version 1 --- images/yield_laplacian.png | Bin 0 -> 36750 bytes src/Graphics/Image/Processing/Filter.hs | 29 ++++++++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 images/yield_laplacian.png diff --git a/images/yield_laplacian.png b/images/yield_laplacian.png new file mode 100644 index 0000000000000000000000000000000000000000..18c87c831ae453b0a717bff7877ce98b02052114 GIT binary patch literal 36750 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

9g8pM-lZMCz>C;!L=WUbsX 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 z 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%0D|&PD3XSOgsCmfA>H~J&<_j-H5y? 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 <> +-- +-- Usage : +-- +-- >>> img <- readImageY VU "images/yield.jpg" +-- >>> let laplacianImage :: Image VU RGB Double +-- >>> laplacianImage = applyFilter (laplacianFilter Complete Edge) img +-- >>> writeImage "images/yield_laplacian.png" (toImageRGB aheImage) +-- +laplacianFilter :: (Array arr cs e, Array arr X e) => + Direction -> Border (Pixel cs e) -> Filter arr cs e +laplacianFilter dir !border = + Filter (correlate border kernel) + where + !kernel = + case dir of + Complete -> fromLists $ [ [ -1, -1, -1 ] -- Unlike the Sobel edge detector, the Laplacian edge detector uses only one kernel. + , [ -1, 8, -1 ] -- It calculates second order derivatives in a single pass. + , [ -1, -1, -1 ]] -- This is the approximated kernel used for it. (Includes diagonals) +{-# INLINE laplacianFilter #-} + + From aeefdc31a77f84e67d9222bd14df9b1ccb73fb1b Mon Sep 17 00:00:00 2001 From: khilanravani Date: Mon, 9 Jul 2018 10:59:26 +0530 Subject: [PATCH 11/25] Laplacian Filter Version 2 --- src/Graphics/Image/Processing/Filter.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Graphics/Image/Processing/Filter.hs b/src/Graphics/Image/Processing/Filter.hs index b97b816..a78fb64 100644 --- a/src/Graphics/Image/Processing/Filter.hs +++ b/src/Graphics/Image/Processing/Filter.hs @@ -153,7 +153,7 @@ prewittOperator !img = sqrt (prewittX ^ (2 :: Int) + prewittY ^ (2 :: Int)) -- >>> img <- readImageY VU "images/yield.jpg" -- >>> let laplacianImage :: Image VU RGB Double -- >>> laplacianImage = applyFilter (laplacianFilter Complete Edge) img --- >>> writeImage "images/yield_laplacian.png" (toImageRGB aheImage) +-- >>> writeImage "images/yield_laplacian.png" (toImageRGB laplacianImage) -- laplacianFilter :: (Array arr cs e, Array arr X e) => Direction -> Border (Pixel cs e) -> Filter arr cs e From eded16db3afc16ec92c2bd3c01d7a4ac6df41c29 Mon Sep 17 00:00:00 2001 From: khilanravani Date: Mon, 9 Jul 2018 19:59:49 +0530 Subject: [PATCH 12/25] Laplacian PR Corrections 1 --- src/Graphics/Image/Processing/Filter.hs | 49 ++++++++++++++++--------- 1 file changed, 31 insertions(+), 18 deletions(-) diff --git a/src/Graphics/Image/Processing/Filter.hs b/src/Graphics/Image/Processing/Filter.hs index a78fb64..feb9fa0 100644 --- a/src/Graphics/Image/Processing/Filter.hs +++ b/src/Graphics/Image/Processing/Filter.hs @@ -45,9 +45,6 @@ data Filter arr cs e = Filter data Direction = Vertical | Horizontal - | Complete - - -- | Create a Gaussian Filter. -- @@ -119,8 +116,6 @@ sobelOperator !img = sqrt (sobelX ^ (2 :: Int) + sobelY ^ (2 :: Int)) {-# INLINE sobelOperator #-} - - prewittFilter :: (Array arr cs e, Array arr X e) => Direction -> Border (Pixel cs e) -> Filter arr cs e prewittFilter dir !border = @@ -133,7 +128,6 @@ prewittFilter dir !border = {-# INLINE prewittFilter #-} - prewittOperator :: (Array arr cs e, Array arr X e, Floating e) => Image arr cs e -> Image arr cs e prewittOperator !img = sqrt (prewittX ^ (2 :: Int) + prewittY ^ (2 :: Int)) where !prewittX = applyFilter (prewittFilter Horizontal Edge) img @@ -147,24 +141,43 @@ prewittOperator !img = sqrt (prewittX ^ (2 :: Int) + prewittY ^ (2 :: Int)) -- Gaussian smoothing filter in order to reduce its sensitivity to noise. -- -- <> <> --- --- Usage : --- --- >>> img <- readImageY VU "images/yield.jpg" --- >>> let laplacianImage :: Image VU RGB Double --- >>> laplacianImage = applyFilter (laplacianFilter Complete Edge) img --- >>> writeImage "images/yield_laplacian.png" (toImageRGB laplacianImage) -- laplacianFilter :: (Array arr cs e, Array arr X e) => Direction -> Border (Pixel cs e) -> Filter arr cs e laplacianFilter dir !border = Filter (correlate border kernel) where - !kernel = - case dir of - Complete -> fromLists $ [ [ -1, -1, -1 ] -- Unlike the Sobel edge detector, the Laplacian edge detector uses only one kernel. - , [ -1, 8, -1 ] -- It calculates second order derivatives in a single pass. - , [ -1, -1, -1 ]] -- This is the approximated kernel used for it. (Includes diagonals) + !kernel = fromLists $ [ [ -1, -1, -1 ] -- Unlike the Sobel edge detector, the Laplacian edge detector uses only one kernel. + , [ -1, 8, -1 ] -- It calculates second order derivatives in a single pass. + , [ -1, -1, -1 ]] -- This is the approximated kernel used for it. (Includes diagonals) {-# INLINE laplacianFilter #-} +-- | 'Laplacian of Gaussian' (LOG) filter is a two step process of smoothing +-- an image before applying some derivative filter on it. This comes in +-- need for reducing the noise sensitivity while working with noisy +-- datasets or in case of approximating second derivative measurements. +-- +-- The LoG operator takes the second derivative of the image. Where the image +-- is basically uniform, the LoG will give zero. Wherever a change occurs, the LoG will +-- give a positive response on the darker side and a negative response on the lighter side. +-- +-- <> <> +-- +logFilter :: (Array arr cs e, Array arr X e) => + Border (Pixel cs e) -> Filter arr cs e +logFilter !border = + Filter (correlate border kernel) + where + !kernel = fromLists $ [ [ 0, 1, 1, 2, 2, 2, 1, 1, 0 ] + , [ 1, 2, 4, 5, 5, 5, 4, 2, 1 ] + , [ 1, 4, 5, 3, 0, 3, 5, 4, 1 ] + , [ 2, 5, 3, -12, -24, -12, 3, 5, 2 ] + , [ 2, 5, 0, -24, -40, -24, 0, 5, 2 ] + , [ 2, 5, 3, -12, -24, -12, 3, 5, 2 ] + , [ 1, 4, 5, 3, 0, 3, 5, 4, 1 ] + , [ 1, 2, 4, 5, 5, 5, 4, 2, 1 ] + , [ 0, 1, 1, 2, 2, 2, 1, 1, 0 ] ] + +{-# INLINE logFilter #-} + From 4ee7104dd123e2adeee9f60c94f2c1d45ab7f9d0 Mon Sep 17 00:00:00 2001 From: khilanravani Date: Mon, 9 Jul 2018 20:08:36 +0530 Subject: [PATCH 13/25] Laplacian PR Corrections 2 --- src/Graphics/Image/Processing/Filter.hs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Graphics/Image/Processing/Filter.hs b/src/Graphics/Image/Processing/Filter.hs index feb9fa0..10ab5ab 100644 --- a/src/Graphics/Image/Processing/Filter.hs +++ b/src/Graphics/Image/Processing/Filter.hs @@ -143,8 +143,8 @@ prewittOperator !img = sqrt (prewittX ^ (2 :: Int) + prewittY ^ (2 :: Int)) -- <> <> -- laplacianFilter :: (Array arr cs e, Array arr X e) => - Direction -> Border (Pixel cs e) -> Filter arr cs e -laplacianFilter dir !border = + Border (Pixel cs e) -> Filter arr cs e +laplacianFilter !border = Filter (correlate border kernel) where !kernel = fromLists $ [ [ -1, -1, -1 ] -- Unlike the Sobel edge detector, the Laplacian edge detector uses only one kernel. From bf8c508ad280eca87d6afb8fd4c6b6a9f1b1cec4 Mon Sep 17 00:00:00 2001 From: khilanravani Date: Mon, 9 Jul 2018 11:48:34 +0530 Subject: [PATCH 14/25] Laplacian of Gaussian Version 1 --- images/yield_log.png | Bin 0 -> 21502 bytes src/Graphics/Image/Processing/Filter.hs | 38 ++++++++++++------------ 2 files changed, 19 insertions(+), 19 deletions(-) create mode 100644 images/yield_log.png diff --git a/images/yield_log.png b/images/yield_log.png new file mode 100644 index 0000000000000000000000000000000000000000..be60aabb9f574525cc5dad00a12d0b899d38bbe8 GIT binary patch literal 21502 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%0Am7US@L<+E^ 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 literal 0 HcmV?d00001 diff --git a/src/Graphics/Image/Processing/Filter.hs b/src/Graphics/Image/Processing/Filter.hs index e00568d..99aee7b 100644 --- a/src/Graphics/Image/Processing/Filter.hs +++ b/src/Graphics/Image/Processing/Filter.hs @@ -26,7 +26,9 @@ module Graphics.Image.Processing.Filter -- * Prewitt , prewittFilter , prewittOperator - + + , logFilter + , laplacianFilter ) where @@ -136,12 +138,12 @@ prewittOperator !img = sqrt (prewittX ^ (2 :: Int) + prewittY ^ (2 :: Int)) {-# INLINE prewittOperator #-} --- |The Laplacian of an image highlights regions of rapid intensity change --- and is therefore often used for edge detection. It is often applied to an --- image that has first been smoothed with something approximating a +-- |The Laplacian of an image highlights regions of rapid intensity change +-- and is therefore often used for edge detection. It is often applied to an +-- image that has first been smoothed with something approximating a -- Gaussian smoothing filter in order to reduce its sensitivity to noise. -- --- <> <> +-- <> <> -- laplacianFilter :: (Array arr cs e, Array arr X e) => Border (Pixel cs e) -> Filter arr cs e @@ -157,28 +159,26 @@ laplacianFilter !border = -- an image before applying some derivative filter on it. This comes in -- need for reducing the noise sensitivity while working with noisy -- datasets or in case of approximating second derivative measurements. --- --- The LoG operator takes the second derivative of the image. Where the image +-- +-- The LoG operator takes the second derivative of the image. Where the image -- is basically uniform, the LoG will give zero. Wherever a change occurs, the LoG will -- give a positive response on the darker side and a negative response on the lighter side. --- --- <> <> +-- +-- <> <> -- logFilter :: (Array arr cs e, Array arr X e) => Border (Pixel cs e) -> Filter arr cs e logFilter !border = Filter (correlate border kernel) where - !kernel = fromLists $ [ [ 0, 1, 1, 2, 2, 2, 1, 1, 0 ] + !kernel = fromLists $ [ [ 0, 1, 1, 2, 2, 2, 1, 1, 0 ] , [ 1, 2, 4, 5, 5, 5, 4, 2, 1 ] - , [ 1, 4, 5, 3, 0, 3, 5, 4, 1 ] - , [ 2, 5, 3, -12, -24, -12, 3, 5, 2 ] - , [ 2, 5, 0, -24, -40, -24, 0, 5, 2 ] - , [ 2, 5, 3, -12, -24, -12, 3, 5, 2 ] - , [ 1, 4, 5, 3, 0, 3, 5, 4, 1 ] - , [ 1, 2, 4, 5, 5, 5, 4, 2, 1 ] - , [ 0, 1, 1, 2, 2, 2, 1, 1, 0 ] ] + , [ 1, 4, 5, 3, 0, 3, 5, 4, 1 ] + , [ 2, 5, 3, -12, -24, -12, 3, 5, 2 ] + , [ 2, 5, 0, -24, -40, -24, 0, 5, 2 ] + , [ 2, 5, 3, -12, -24, -12, 3, 5, 2 ] + , [ 1, 4, 5, 3, 0, 3, 5, 4, 1 ] + , [ 1, 2, 4, 5, 5, 5, 4, 2, 1 ] + , [ 0, 1, 1, 2, 2, 2, 1, 1, 0 ] ] {-# INLINE logFilter #-} - - From d92fdc421d057d5d72a9b45642a1ddf42d151d37 Mon Sep 17 00:00:00 2001 From: khilanravani Date: Mon, 9 Jul 2018 13:12:28 +0530 Subject: [PATCH 15/25] Laplacian of Gaussian Version 2 --- src/Graphics/Image/Processing/Filter.hs | 35 ++++++++++++++++--------- 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/src/Graphics/Image/Processing/Filter.hs b/src/Graphics/Image/Processing/Filter.hs index 99aee7b..bb85172 100644 --- a/src/Graphics/Image/Processing/Filter.hs +++ b/src/Graphics/Image/Processing/Filter.hs @@ -167,18 +167,29 @@ laplacianFilter !border = -- <> <> -- logFilter :: (Array arr cs e, Array arr X e) => - Border (Pixel cs e) -> Filter arr cs e -logFilter !border = + Direction -> Border (Pixel cs e) -> Filter arr cs e +logFilter dir !border = Filter (correlate border kernel) where - !kernel = fromLists $ [ [ 0, 1, 1, 2, 2, 2, 1, 1, 0 ] - , [ 1, 2, 4, 5, 5, 5, 4, 2, 1 ] - , [ 1, 4, 5, 3, 0, 3, 5, 4, 1 ] - , [ 2, 5, 3, -12, -24, -12, 3, 5, 2 ] - , [ 2, 5, 0, -24, -40, -24, 0, 5, 2 ] - , [ 2, 5, 3, -12, -24, -12, 3, 5, 2 ] - , [ 1, 4, 5, 3, 0, 3, 5, 4, 1 ] - , [ 1, 2, 4, 5, 5, 5, 4, 2, 1 ] - , [ 0, 1, 1, 2, 2, 2, 1, 1, 0 ] ] - + !kernel = + case dir of + Vertical -> fromLists $ [ [ 0, 1, 1, 2, 2, 2, 1, 1, 0 ] + , [ 1, 2, 4, 5, 5, 5, 4, 2, 1 ] + , [ 1, 4, 5, 3, 0, 3, 5, 4, 1 ] + , [ 2, 5, 3, -12, -24, -12, 3, 5, 2 ] + , [ 2, 5, 0, -24, -40, -24, 0, 5, 2 ] + , [ 2, 5, 3, -12, -24, -12, 3, 5, 2 ] + , [ 1, 4, 5, 3, 0, 3, 5, 4, 1 ] + , [ 1, 2, 4, 5, 5, 5, 4, 2, 1 ] + , [ 0, 1, 1, 2, 2, 2, 1, 1, 0 ]] + + Horizontal -> fromLists $ [ [ 0, 1, 1, 2, 2, 2, 1, 1, 0 ] + , [ 1, 2, 4, 5, 5, 5, 4, 2, 1 ] + , [ 1, 4, 5, 3, 0, 3, 5, 4, 1 ] + , [ 2, 5, 3, -12, -24, -12, 3, 5, 2 ] + , [ 2, 5, 0, -24, -40, -24, 0, 5, 2 ] + , [ 2, 5, 3, -12, -24, -12, 3, 5, 2 ] + , [ 1, 4, 5, 3, 0, 3, 5, 4, 1 ] + , [ 1, 2, 4, 5, 5, 5, 4, 2, 1 ] + , [ 0, 1, 1, 2, 2, 2, 1, 1, 0 ]] {-# INLINE logFilter #-} From df4db104d1dbe727f236fccece1370273b4005fa Mon Sep 17 00:00:00 2001 From: khilanravani Date: Mon, 9 Jul 2018 18:45:37 +0530 Subject: [PATCH 16/25] Laplacian of Gaussian Version 3 --- src/Graphics/Image/Processing/Filter.hs | 36 +++++++++---------------- 1 file changed, 12 insertions(+), 24 deletions(-) diff --git a/src/Graphics/Image/Processing/Filter.hs b/src/Graphics/Image/Processing/Filter.hs index bb85172..f6694ff 100644 --- a/src/Graphics/Image/Processing/Filter.hs +++ b/src/Graphics/Image/Processing/Filter.hs @@ -150,9 +150,9 @@ laplacianFilter :: (Array arr cs e, Array arr X e) => laplacianFilter !border = Filter (correlate border kernel) where - !kernel = fromLists $ [ [ -1, -1, -1 ] -- Unlike the Sobel edge detector, the Laplacian edge detector uses only one kernel. - , [ -1, 8, -1 ] -- It calculates second order derivatives in a single pass. - , [ -1, -1, -1 ]] -- This is the approximated kernel used for it. (Includes diagonals) + !kernel = fromLists $ [ [ -1, -1, -1 ] -- Unlike the Sobel edge detector, the Laplacian edge detector uses only one kernel. + , [ -1, 8, -1 ] -- It calculates second order derivatives in a single pass. + , [ -1, -1, -1 ]] -- This is the approximated kernel used for it. (Includes diagonals) {-# INLINE laplacianFilter #-} -- | 'Laplacian of Gaussian' (LOG) filter is a two step process of smoothing @@ -171,25 +171,13 @@ logFilter :: (Array arr cs e, Array arr X e) => logFilter dir !border = Filter (correlate border kernel) where - !kernel = - case dir of - Vertical -> fromLists $ [ [ 0, 1, 1, 2, 2, 2, 1, 1, 0 ] - , [ 1, 2, 4, 5, 5, 5, 4, 2, 1 ] - , [ 1, 4, 5, 3, 0, 3, 5, 4, 1 ] - , [ 2, 5, 3, -12, -24, -12, 3, 5, 2 ] - , [ 2, 5, 0, -24, -40, -24, 0, 5, 2 ] - , [ 2, 5, 3, -12, -24, -12, 3, 5, 2 ] - , [ 1, 4, 5, 3, 0, 3, 5, 4, 1 ] - , [ 1, 2, 4, 5, 5, 5, 4, 2, 1 ] - , [ 0, 1, 1, 2, 2, 2, 1, 1, 0 ]] - - Horizontal -> fromLists $ [ [ 0, 1, 1, 2, 2, 2, 1, 1, 0 ] - , [ 1, 2, 4, 5, 5, 5, 4, 2, 1 ] - , [ 1, 4, 5, 3, 0, 3, 5, 4, 1 ] - , [ 2, 5, 3, -12, -24, -12, 3, 5, 2 ] - , [ 2, 5, 0, -24, -40, -24, 0, 5, 2 ] - , [ 2, 5, 3, -12, -24, -12, 3, 5, 2 ] - , [ 1, 4, 5, 3, 0, 3, 5, 4, 1 ] - , [ 1, 2, 4, 5, 5, 5, 4, 2, 1 ] - , [ 0, 1, 1, 2, 2, 2, 1, 1, 0 ]] + !kernel = fromLists $ [ [ 0, 1, 1, 2, 2, 2, 1, 1, 0 ] + , [ 1, 2, 4, 5, 5, 5, 4, 2, 1 ] + , [ 1, 4, 5, 3, 0, 3, 5, 4, 1 ] + , [ 2, 5, 3, -12, -24, -12, 3, 5, 2 ] + , [ 2, 5, 0, -24, -40, -24, 0, 5, 2 ] + , [ 2, 5, 3, -12, -24, -12, 3, 5, 2 ] + , [ 1, 4, 5, 3, 0, 3, 5, 4, 1 ] + , [ 1, 2, 4, 5, 5, 5, 4, 2, 1 ] + , [ 0, 1, 1, 2, 2, 2, 1, 1, 0 ] ] {-# INLINE logFilter #-} From a1f23dd9bc08950e57cbcdbc9187a68e76a6859d Mon Sep 17 00:00:00 2001 From: khilanravani Date: Mon, 9 Jul 2018 20:05:45 +0530 Subject: [PATCH 17/25] LOG PR Corrections 1 --- src/Graphics/Image/Processing/Filter.hs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Graphics/Image/Processing/Filter.hs b/src/Graphics/Image/Processing/Filter.hs index f6694ff..0d51317 100644 --- a/src/Graphics/Image/Processing/Filter.hs +++ b/src/Graphics/Image/Processing/Filter.hs @@ -167,8 +167,8 @@ laplacianFilter !border = -- <> <> -- logFilter :: (Array arr cs e, Array arr X e) => - Direction -> Border (Pixel cs e) -> Filter arr cs e -logFilter dir !border = + Border (Pixel cs e) -> Filter arr cs e +logFilter !border = Filter (correlate border kernel) where !kernel = fromLists $ [ [ 0, 1, 1, 2, 2, 2, 1, 1, 0 ] From 8fd18c65400af64b780cafb70625c28057a90ec5 Mon Sep 17 00:00:00 2001 From: Khilan Ravani Date: Wed, 11 Jul 2018 15:26:45 +0530 Subject: [PATCH 18/25] Gaussian Smoothing PR Corrections 1 (#19) --- images/GSM_gsn_yield_IP.jpg | Bin 0 -> 7083 bytes images/GSM_gsn_yield_OP.png | Bin 0 -> 96153 bytes src/Graphics/Image/Processing/Filter.hs | 34 +++++++++++++++++++++--- 3 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 images/GSM_gsn_yield_IP.jpg create mode 100644 images/GSM_gsn_yield_OP.png diff --git a/images/GSM_gsn_yield_IP.jpg b/images/GSM_gsn_yield_IP.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0d68c12c2e58148426a330fecfcf4fde3a02d1f0 GIT binary patch literal 7083 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 literal 0 HcmV?d00001 diff --git a/images/GSM_gsn_yield_OP.png b/images/GSM_gsn_yield_OP.png new file mode 100644 index 0000000000000000000000000000000000000000..477cebc03fa683fa5668f85dc60ea724c1ed640d GIT binary patch literal 96153 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�^n$NMPnqyEu?GD%7-YO3`-C^*KpI}1JMT8 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 -- -- <> <> -- @@ -159,10 +163,11 @@ laplacianFilter !border = -- an image before applying some derivative filter on it. This comes in -- need for reducing the noise sensitivity while working with noisy -- datasets or in case of approximating second derivative measurements. --- +-- -- The LoG operator takes the second derivative of the image. Where the image -- is basically uniform, the LoG will give zero. Wherever a change occurs, the LoG will -- give a positive response on the darker side and a negative response on the lighter side. +-- More info about the algo at -- -- <> <> -- @@ -181,3 +186,26 @@ logFilter !border = , [ 1, 2, 4, 5, 5, 5, 4, 2, 1 ] , [ 0, 1, 1, 2, 2, 2, 1, 1, 0 ] ] {-# INLINE logFilter #-} + +-- | The Gaussian smoothing operator is a 2-D convolution operator that is used to +-- `blur' images and remove detail and noise. The idea of Gaussian smoothing is to use +-- this 2-D distribution as a `point-spread' function, and this is achieved by convolution. +-- Since the image is stored as a collection of discrete pixels we need to produce a +-- discrete approximation to the Gaussian function before we can perform the convolution. +-- More info about the algo at +-- +-- <> <> +-- +gaussianSmoothingFilter :: (Fractional e, Array arr cs e, Array arr X e) => + Border (Pixel cs e) -> Filter arr cs e +gaussianSmoothingFilter !border = + Filter (I.map (/ 273) . correlate border kernel) + where + !kernel = fromLists $ [[ 1, 4, 7, 4, 1 ] -- Discrete approximation to the Gaussian function. + ,[ 4, 16, 26, 16, 4 ] -- 273 is the sum of all values in the mask and hence used in rescaling. + ,[ 7, 26, 41, 26, 7 ] + ,[ 4, 16, 26, 16, 4 ] + ,[ 1, 4, 7, 4, 1 ]] + +{-# INLINE gaussianSmoothingFilter #-} + From 258b6ade3e2a38127e7af97f5b00d73998c81f65 Mon Sep 17 00:00:00 2001 From: vonavi Date: Thu, 12 Jul 2018 11:33:41 +0300 Subject: [PATCH 19/25] Fix the horizontal kernel of Sobel filter. --- src/Graphics/Image/Processing/Filter.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Graphics/Image/Processing/Filter.hs b/src/Graphics/Image/Processing/Filter.hs index 021ff43..47fd95e 100644 --- a/src/Graphics/Image/Processing/Filter.hs +++ b/src/Graphics/Image/Processing/Filter.hs @@ -99,7 +99,7 @@ sobelFilter dir !border = , [ 0, 0, 0 ] , [ 1, 2, 1 ] ] Horizontal -> fromLists $ [ [ -1, 0, 1 ] - , [ -2, 0, 1 ] + , [ -2, 0, 2 ] , [ -1, 0, 1 ] ] {-# INLINE sobelFilter #-} From 22a7003e632716560d37579b68baa7f963fc1331 Mon Sep 17 00:00:00 2001 From: Khilan Ravani Date: Thu, 19 Jul 2018 23:00:04 +0530 Subject: [PATCH 20/25] Mean filter (#22) * Mean filter version 1 --- images/yield_mean.png | Bin 0 -> 74621 bytes src/Graphics/Image/Processing/Filter.hs | 26 ++++++++++++++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 images/yield_mean.png diff --git a/images/yield_mean.png b/images/yield_mean.png new file mode 100644 index 0000000000000000000000000000000000000000..cbe5086a98f97ace53254b9a57f7ca2f5643caaf GIT binary patch literal 74621 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

  • j(t7>~%9qlG!;8Q4h?t;Agf-ncLB^gKQ0!3Y$Xw zt7S;bK2}4=lCrb;-@ZXHQ#&6-;%F2K6edN0z0+=2Zf+|Ac^G!oeePXgTOGJv5R3fa z47cNu+Z0}Mv%>WAeRoTaNNIAL#J+{=X+t_B`=AUowBsRLfDQx`I^r2i@WJmXh}b^x z(1Q1|V~dco=Is1P!2)Y-C7PEz!1}X8?($a!%ZckMbUtw%&Wqt)%fTxo!SlQq?0B>|ie5IYDpv?L!h#izSJ zW*2*hmFoMt|DB?on7EBooR_uheOhY^A+{4L1uCzZt|-63Cwlt6?~8s_c*${vgKr(| zP~a79xJ}GaJ5Oh7WQRc|_9Y+IL2JA&#WZ`4J%NmBX|);>RhFXEX$M)}gld*o?`gw0 zM^F4=d!Sp!VVrWH3^LA+&qaK0w>Zm-E?1yc(K7b^uL3S-dGVQFoY7hMLIE+k?HHy- zYf17);@Y%eDb5n=6r*&7zO@8bu4}7u2_vwi5DKb#;Drn9wHbEsO-(*er?Y!ve-Y+8 zV<=>b<~Ybc%Qdq={Y+374Mc6+aP-PvVAZmZEZ~m2Wzv(tsX~Np8WT$a0eL-I>4e@~ zAxmxdF*?j2n2q*uN<$|oMBqmsB>$Ea64ypsNC!={xSKoXyR?H7OVgD!U1s^2Gv>3a zLc2Z-AzEfEM04Bo+V!6cyaW~#`v|RD(yT49NZMSJuL=+&_6R!ebX*y5nSq|WeX|o^ zq*g?)!?u!u(y3g?Vv!ISuvVI+6kg;tWcYScauFUm>TzpW z95k9HtRyI)o6fDzV-TT3OcG7eS=$sLwI;0C4jc-L(9fOeE9R0Z&d}xOcYH9nY>{1^ zTiK}C8ThX>!=*=|sL@a3*jn9>Y!Tm&4+^fz?3tiH%(3b1rD)PKddUhOAU^Tq( zZwj^nxl#N7ra&|5>243taz#U|1I|llda+Jko;my?n0K*WsX8@x7_b^^1Moxre!Lz9a8hUV%H% zdQ;YgZ*2~69&JLMoD}eB+-HPn1#x?QJN9hrzmh`p6gqt&^NQ{H(wi3!{CMG|-wpDc z4Q9D7OnyU2vzDqgrdVDK&dzqpP3dSztf96(Vh44K=7>PK8(a*Zg#-!PmK^cYV(zLp z$)6rWZZ}7XQXmV7j)Q#dY+^l(&#q;on2C6Xpb;fUfTLl7_0AwaC@~s~t@C=b&-gCr z)h=zX>x5D{TyfBtzP_(dUsyL8NGj&+)0?mo z1K#8?(OnNRrJ!+YxQA@j&UBx4uHvdpJNJhcv)`W=l*qj7N(Fl(vS2~5wmOL#8`IW_UY;k*nEXv^MfWtHZHDY@8ie<HrKZFJ>P6#DBFx>KeGPNG>VtBOS$#+TvVwi6dB=@RZZgFD@> zz$FyjlUKEKMr&KKv)E!18oEF_G(@53LfMGHo&M_kj#B52f8{mktWEvAo2St9rwAjX zYw@x=O>1somk=jhZAwWNu}iZoIvN$L#CAxkmu*DTVOg-~U7;D+$rB`hk*_?j-th9y zY~)Pj$21Avr|^=$D6sn^H*{r1a)P7|NJf<(8d{|yDra~M9d?Z=Zuxm&?emLBDjtrN(WM5l4H>BHM-uPcf!%2Ti~BoBFaIUe zmto(b?(D!GXQv>L6^%Hy=&bj>ST~$6c9vusIta@VDR)xn)eGz|ZU|Sjoq`M&pS#`J z!-Ud|wg+=1UC%ZC))cp$m|mW8hp0o}UAV5SH@1xB$35(H;{43fKy$r#a?i~N`)y~p zi{FWGi9d!W7Iw{uqnV%P4}o9xg&eDW{OfRP%G7`9Zwp=js3NY1c8JEKXi- z+aU3EJHgD5)e^#LI>_U93*>MUFQo$Pn9&6yNnbGOk>e~_A$xaLZlutTjBK+7eT(&e z&{Rj-YQBYq(S#M6ZbN;Ps#>UaP7AU#VhHoBMRY$Z>Fg&>RoZAo|LXMD3>Af9g&mq; z#^ie;W!4r|i(+EWwB;bF&T@)dJ%xYwq<2(q1s5J+jp^70tC>0`tLN(*xl7ZjL1b;8 zhPbEr%1toGT!Tz#TZlW~{R7mCWk2sSnz&{ic|>P6Q7YANVOsK+zaGh4(gRhcQ!X>i zVb5_^vyuWjg=G}*w^fq2Zrw0fWIPETkJxe-u|u@xHrLWSH~bxrx%qJn3Xn(!Mes zpBwV(w9*k;>57Pu6cvxN%na)EsnPMGb2+*E!-Mfx8&lZsO84OgcE0imwTdJ7nC4(& zdHA(ED`X%D9(7k&jfc^-RJkc01GiBTi6l%(0AgyUj!DxMSV&XPpzJ4IxEqB_c8nWJ zk!kBMl-j#xZj(iVh)p0r`;NU(6I!+_3Ql+IV_$6d zE3x=^07QnFo$ndVG)rPIYsht4W}WbnNTL=-?q`=wWpu%Lo*)~UCClDn(;fJOf_#?4 zZ(lg#uL_6%Wq|<2`C=<|D;`0xSS2%|v-95cvpS2J$!hX>%yv|JT_*%8>&-6I6@QT)TX@b5>bM5hmnq8+$Kts)tb;B$ ziCd($u3N`s0dwn2L1fXnD!D1XqX)yK>S$MDVO0&1p{JuGEh$#+ozTyS9|v9;=~?w={m^j9hRFy603Vp4Hj$!O%gc1dEgE z7dE!EELv3Co z`wu;tKi%p?p}Te~RKHL^<+M{qvUELbv9{LrK2i{pKWO_xCnx`RfnH`c&Ft`5IzB50 ztsqKnt6J3LIAyb!Nnf*$3%NmEsGs5fn7wU{s&5&IO;$>Ws${g=#^QcT??bQV=N28-*8I6CDu4qDfs z#}M^bvbQBhnvNb7n&V1HE2Vmfk92G+QKXrw$Br9`l}YUze+(qeK!lD79kobDHJ_Xq$rH0vdP_rPqD~Y zL(`r`$BTs&DyKyB-H@)S)K;ER25M;0Ahs2P=zgB#9nhS=Z7nRz3Gt~|&?y8}@nzXo z9cGcCW?t!+K&B8&&D`)TY|P!CBed>Wu+2MZS>bvti*^Q)zU14`0op=XXvG#tQxokX z7z+qc*;?R_5zxsuS!FG}$iPx{sE>#^pdu|{98xz)KGfd{)slYn?F@IiPJYI^Cl?3Y z=H318VvU;f)|xxklDS%oto_!q`B-eO#PqwID=}pokE8_Ype$n1z%Gxs1rp$626Yl_ z?tJH$#q`-|w}NOrx(m1wy>pI=r`9#1@7P@_6rK7QSB@>fj<64Op*<|&w7o&L)G{-4iQ_xowXE0q4gtLuoxnZNs)H8 zkhX@T3defw&LV18qYGQ1{a3aJzQQP(_8rY+q$vb3Ln6Ixi|;2HNPwbC!84ybA20(6 zij($J6Gu)rJtDeK@16}(m+*j!2o7#G4_0mW!$Mo#12Z;`9b*cyvt0%a2>aT}#j{uk ztvAIQYN{Fn{95o^q{A_KiJH+nT9e6+(Qb}vCdsRG7QTN>M`{rzi_@gCkL%?3CN%Tg zq_LlOLytHY7NLjN1x!*&^%cly4Qn+2>rU{wGacWt7z`beJSuw8YwgD7(X8giYa5gc&EARTr@>+HbYXMLnc5Y%OCb;W<^fNe!P>-(P#V@Azb zLw0F;qSsSnE#0npl*%)r#uhDWh|}cBc87xymib8lu^E^}EUX!l_day1PS=brDRq|0 zgBr}w&W01k%bjN#A)T(|9o3iYATw%i@JOu#4%q;@+e&75>x0?y+a*u>bYFQaL~+;| zTx#WOB&@i?&RNgX_kC%RHk;`fG8CjQxaYL6t`1Iv1DTlJ+$Lkg)R%-wVnjVAYj+vX z=$z^7B%L~t1z`GiVM^>86xMz(Q&zg>ND`YR7v0l`@tJ*q<3J0uc)I>B*VATgUfH{S ze(v2bE&vL!m=yr;bd7@gIPc>MyRSf|Z|^pl1WGzu!Pf0d%~xzLI!J4IQASLr7J8Yr z8qp$pO-Sf>BZaja-Nq9N4Sq$Cn zD_fKfVuBuB5|nU9E0THc-4Z&Zdw#`{M-c5YXF0LH`;>s}#^Qb5W+b^$s>5V6OE=X* z1TnFmIG6-lndt11&aMs#E;^THbmJ6#KDGDFmf4A~x_ah)x&e-gQ3=u+mZdF9ypsFh z1xA@Uot()p$*f~#BP{ZQ1lm4eLb!(5pSjd!ZTXIf!yWUCy5Cj^w<|7VRiRGTuN(^9 zYfXc6kcc1vx7szJ(JsB#`AgwCn=4+0E9Z3Uoi9CD*v&ocKDycVIMh};8ugTIDukCV z;mXw_L0NL1GT)_@MB8T!ixwzGYEEam6N7u=hJKsjLR;P0GA@hTB>6T7CX)nwcz>d|L@ge*{JpK5cRE$I3< z*=L&ka(=VeNcdeKnkn0QR;Hs*Z|czum+B{EF`Q)t%{G~B+xol{f%AOF?wY_E%xLxP zh#kt6ys|@dbs<_TqqZ(13v@@~TwA;Ly18bea1ynVky7ig1Z`}71dZ-NDvXfrd82(-x!Rc= z9+;iqEn{T#aSs_{4Q)eZ8qFi2T9ETlDNU4%a6ik%uGj(H(IdRi2+1Vq9+(*xCxOf4 zV3c+zuk79&gqF<1^quq|LKpLxvevE0IA})5w~r5qNZfHi<*y^C%yyHu%3McJT@s{q zi43(oLVM#(9HklQrauM6_fH5r{gGkWGD-EXNQLw96B!;vBgin^yM)(cW6Iw}vxX zTE<$L`Q>d>%U%>69+_gDrzS@~7F?enlNsKF)d4 zoLn=ib^p7!suv)dV>_W%e{8+5S=cGk9ZgeaFlVO;ON4PW zY@J6ibgt9re26H;usU2ClJZbFdejpa&E@PY62~8yOrazJQ8$Y~%RWLq?6^LTOdS?_ zC4pyhxPH^38;L}hAzJ(2?mU&@ZXh6H_RJNU{U_X?zDtTfV~r9-+j>-^Q7P z-Mu~vmrm^xYqxz_L0EE!TNh-*cOXSdYRnHkNOd<&Z2h1V(1ESA50cUsL{BRRJ&?L1`J;e7Ur*12Xmj0r-XUgj6X7kXj4j zT3u!=^1Q`C*xF{GW`VhWPIL>{QYc6HdjD;F1#{Ru=UVnbFd+p!NMzD$`1`6;3dxGy zo2HMvWJ9aYLqqasyC5kRt943&!VD4-tXZpmHa_A}xi$`_)kjvJ=Pfc;7!w#qPF4qA zGTaR@blwB~+SA{_z8Yn{;@SmXh-?uoj`QeBCh;txv@em#{p`W?IT_Xm)0JDnPtF5Q$v#=KNX$FC~2jbYzW z(F{&p*S>Rq;`kuhCb$ua>x5XnRn>nm`#nZHGXsYTiU z-Zw7znFdGMY`*d#hTj9uezrwE`;pq9|lL2PyA z)wIXi(M?!d*2x@nU{}0^PA>>y^~{k2C2QQNFr!SZi_)C%7@ez+n+w&pbsw_pPG0(3 z<(u~R%IMg)82u>J=RkFzjHpXgKdA$HbtZxAVaI%>aP+B#m*26V9~{k#9V9Z_2ZAN= z+{NLcm9~ts!H8YvLFI$fce(G8lz zHXBL@uYkk#si{b)yQT5(Mbb1o=PV6!hKahmLgUPK4$X&K~E7XT0(f zg^AAd)?V}l<0Sz zgZ%yx6zcTpahzRKlJX`Mn$Ay-wdFU0Go5ft!q0c_6d#ET*~r^96a5@#O0iEnO*eWR z+HF-UvU+x+ZT0FzQe3~bq>_8sL4Zsb7H%IXBgElI2q!s)N>quO=T?n%BoNmPDYYq& zH9b!+x3an^pwqmQLewpHoJJapj16TrYJVX0osI83H-th-cLL1#_?34lyy}aEBmb~) z(Ax@qsCTBCDQGHSgFa^30SX%6<{^352*~6>c6?N6lZr|f^^Uw#K`-{h zu2DGjwm}BDk=JFn5g+L+c8%HGvOHk161hLVotB^Kzg~KU0#Q(`u-pD+?RJ-fc-exEB#g~{D#q9jJyRse#NPLZcKTUXnW`Y5)PXs`!6ADVj- zX9NND5oFQMx&TGwH+n=j@EPp}S&^)UZW$CSY#s*HZ3ttBoks+_|t`(z0mMsvCcK6rh zSh12w>D^Q(c~4yL?qVvGl^<~!btv{S&IIamtZS3i@N<}>~}=dCq+3GG$h_t zqVX!o>U|oJ^7!~(oyH`6T8JsiRM%;Gw~P%-LT<4o%Gz?4jQVm!K(4dcbU|_}$&fwK z$01JbtmT1CZGyET0I%qT)92bwm| z`4@%vUZUWnqLY4BI5Fd$pDCPphr&rm6y9_3!pRw@{&C@y>lWU9WZ|8+FTCxO!37J) z|Df=;TNmDb)q<-f(D|%)U#sx0e=7Km&wAH23nyjtJI9oKOU7{--M`~z!Q~5Y{PRMR zU3Poj*Mif7%N1Vp{sMRYDC4gSx%_uiE)Kh0;owgeY)g_hZB$LQ*@wlCWF*r>NV&*Y zwv6-|z?sq{Igu^;>Ji^%pfm827xL;5X5 zjBT|uu#^^M6Wwq-^f@AZ+4DVqJfkgDtzqk3fi5knfcDmgWm=j-~OM1-+${jff395oBti;-hacmcOmA~i@&Bx(me-G zD}0@gVZ6SekwH|;W6u4@!k3Nf7rw;6xL$Bd;mfZMgfp!$uRJ>N%DV;mIac}eK7Ul< zbAMR)tQ4JVZo%0{6r#O8>#W-qK5bmM@Tsd6K6$~y$FE#C^S6bMWPI4TeBp!tSvdVh z1#};S;1TjbPQGLz>ik3AV;mKHq43^o2iX9SdlT+O3vd5XaB%RcLgcI+J{)DR)61zXtC%*OLg*V=}@Y;J6 zQ2A?rRXFyH!g2R6yybv`*QaUt%VhG}434>b;Wd9#uzkKJMHA;kdsjyeZ=i-zdE9MupyT{AA1`MR0QA$bT-d{n_bl zzsJ1L<@KN+7Rc>~y)($h;Aj;+(J9fB`cZIKZj9qv{iYLBDO?FRqFqig$GMMCP1lOf z+!W%-=yo)*`n$tdMxQ|y`-@fEr)P)yJE2O!_H36FX<}m@HQsINjB)OW{M31Bs{)Jm zZ}at7YF(--(<;U%qn9eteX^2R;IC9VTSylC_pVs@q49~r_cOjH7>2GtT1dJ6%f6TK zeL=F16^JuGIB?)r!37Ha8o%+s9}nipZ+>`{AmOwhT{Sp(;5GyK&3P9t{OFT~^KKh_ zs_^661y?Wl&3VM6y#Bna1zvx(0k6sLy=PxTB&Z+0Ex2Ie2TVTdz3+IXf;;xz{|&Y& zeCN2rw~fmezV*i7&kNr)?z08o_^;rDfl7)$EqwjPg|FSH@YUA_F?YXqxxhB?qJeA) zU;A~zX3+2RpTWHf{YvlPoo`q;H{**Z2ekV9+?zqRiZ5NNFgJkDUaasL<}^=rjI;kL z$YyYMhSz-RHib{zs_^k!7CvTNsqj(b%>`RR*6ePl{VIs{PbTJ_z)-GweYSx6;7nuWU$%a{rQ3oCX4U6eq%E@ z@$AA0w=KNoiiJ1buRuk3qw(P&bierhZ-UtP!f~u}Y8REN<$@4O$GAtK_3Y(Np_&})5&#VTMCO*x6AHHAVBLY;JE@wV*;J6?| zKVjBfJfs6Zk@3k}7y9R`2Jxd}I=ubUR}X$%hyn4AUJT;TKP{Ynhr(wwK7Z$eS#-`_ zf`<-d^dkJ%f`zBYjRnc1W8aIoBJBDdm6tJcrkaJB%%-Ki3wOZJDqGMSLpC{^s4a7W zjNUx*O?!jPMq=}m728|m+-$r)TkqUlZPM*eWNT5$Z3CD@Z$6y+%fgrcJ&3)}uK(gC z3!l$m(YO6>u;MeTKYc>MoOfeT_G$Ml5JT9K);^uFyKXstCHjTH8mdBSeF#e|vOWed z0&V9W>MfyPoAw9Fx!E=G%r?5M-5FajkL@IjA}q>9H^=zp7Le^lA0(T#q#dc7GDW(k zP#k-og2F))-E_1wf8r{IWHs&_uk=L>Z;?t#aorB>X9WR)qy8w!kc0Wk>jW{*1u$QA z*WkKAepar;lVkiJ|49CL#pKfm^}L7a=%|4Hzlg*OPDerOAPJKEEmw<)~kdxf{& zav*NV@mCH=HFUA~(r>>_kiqfE{P{E&?43U;*ke!ns~{TLyE3>@2_8PUUAYWZG^boD zNKWCY*DJj5(uMb5rtpEw27G}3D43wkqu%-NU0@4*=sv+W3uk0tHZ|-xt+$7atiJEJ zt#N!I)!aLL>OujvnOB+Ns3xaRu$9i1gqHEyI|dobKtKQ2g)dw@_?N;tzbGVb^s08r zvk~@YkR{#QKmvqcy=;)t8vuI{=`(v`buQ@Mf z8EvhzwNEJg_##29^|sul*d4kFsQ2?V_FLl}!FE?gAs&4WtKTDRp z4iLmhU3&xz^-dVaMzzW&`jgGBqd)pgA2wj*=RQbEow}+kLqspZ2hwSm3MHx{(?r{l zJ-@sK-GIdzEwM)Z>^_V2aKpQFHu5%STu!t5qcWj|XOg*8sOXFxqfAb7M4Pwhd)#$r z;mLzC1Xbkkbkvm^5~*HHR?3T0vR{6&Aaef8|EWOWCwxgij$rlP&g_eF`|5u$P=Agw zq6*QQc$T)P-V(wVZ^$?{MZQoGXBpEI*8HR~~H>ibU5K=t=W z{-SW^%?sSmCi?K%^aGmcGtRn5@RI_EmmZqE{>Y@_JviM19&*lg3al;GJvEjf!#d-P ze=Xx%H!ZM~+w#rGKJ_8C7!A=(qhAxq$-#2;brn9~4Eh3{+ir0$A>WSio#?r+bl!^0_+|7`^H-xo^Blav-^` zTl!^m^)}=lw|H-eDOmA}T9Px>zlje_4ews*37~dnd4i_16s8-wJTt3t?xfz$j(qS6YINANzu~R#xT0zcPCOU3{&*pq%TXw$Zz^gn$$x0 z-#)lkYnp5Z(r7wfXGlbh)X--OOFGHuEi*x(K4@!h71<=r*gm;OCxeV`gc6C`sV!Z; zmMwwQeLx1m`(+uu4Mbn)Z6My~p;s@6it-W;|7n4M_VNr#o=y6^gnudU29CZ|Ae|fO zN2H%Y02AR2e_J^ACIxELr1dvnArQE@Qh?U;z}}Xz2$*DNe$USfAG~oPa`dwa3!G@y zA}W0Qg$m4?PJ|wbIkngY)uw_ee;7Dg*CVQvibaFFgt<~WWN zic4MQ2lVO9(V!_JoqnNRVg@Ta*-DQ)?Q#X7kMG|yh!Obd+ZH&9-hbxtb#l14VSMP8 zpi;Tn{qM47W$-;PLprp|3b}q8T~^8rb4E+z+ombmY?h&N%9NyZpKO`R$qepf#ax6? zgIoEEFBAkKW(-Tvoh!kZoG0a3JS?fs-ZpHY$SS{Y3&;}s$1RvmV|xM16rb-l-}97# z`Tm#M1bMe^y@C!{USq+}<`@eiQ%s=ugKz3@$6xjJBWtvnPni^h=KOD8v+H-|u5gmF zyD=IfHw_`CA#g6}?`{L*-TGS(!`_v5dzs9APC-}Fp(=L0r_2^MkY-4{@0Gj60`+se zfhPL(E7z|v6MV0K7#QagExtR8ezigNcQ@1K-x_~BFlWNtehj}ETU2kf!_s&C9nPO~ z$#BPpH!!z~#g=34&A;`({&xP=oS)M_h?LG^lFO!yPeP2q5#vKZK(v$@E%Gr>Z|HVX zswQKbi}aWkl1{bx?n8xBw6E8$NXbUGkqrxW->4|GreiOyEGjMZq=vbshWO%-GO9(%&w$8$tFD+DI4kM|yTHSCm*7L8*#dd^H2+oC#mU~Tt} zhLQchBdop^>Y0)Pn$Gi@n?c{h@xP6c*}tay#dbI)i_PAD{XTQ^7&1kR660Ge2+>uI zYgqj6I2B<{tc!OW+totWFveU(UesPLEj?QDB87|3bllAg{IG62)cIo=DbYmy4iBXmcS= zLHPD7Hz-IKB;+#@=RxpoWw;&|#I&vMIxr8pvdoN8qWREsR+#OzSFdR*^v-kKb%k-P z)LCYWHe}KrULez z0aQNvzV{~%y6ig;LTPuH^Ti$G4o|AGoZK-M$FxnRC#ROaYzBZ)LmQd!@TC- zVLPwv=)N=K9?sWn#hx|B_ORGaHjx(=^M~EHrrr7en^?XJLY#CqX>_dx?=@gcu*Jr3 z>6C@U0TtQEY5D9w6~y`zE81Ij7}>K=Dhkc1k@T}NDekcHK5dJ%R#QdT4J@^#Oa{?L zH$HZ_Qw9;&h3e3xU7Q|F572`9qXpIfV$E(P`>4Isc&+*kQG`ErNI@QojG=emxuCRy z|KA0-%v8(x`dct0x!kT7z zyLH35nG@Q#UXbi)r`NBvsOD0<-WK#So3^1VA6946@m$jG#vE%Z&pS*2fIxr0rL5_L zmdClsGi|GC60`+5EXrw<_W!~Rm`uxJZU$gMPRqqzMOZ7+Svb)vI-7TLD|ElUlg9dg zrw4#srnS2wyM?Xf8;uQV@tzZt7Uvjt<-#6ZZ?V%Su&rv6&P5&DkHVUxeqJE;BuMyD z3CZctxR{E04xB=&#MG~Vsa0A=6N|bn; zGYiZ!U652ID;bqcGu!)1=NFeUrcJtX=;jh# z5ck^ZnZz{j$+WD`cdOfqJwE2idV|>tVHv|Y?VnxSltk8+{@g?-UHYbTMosH%Sax$8 z=)MbrA$0f=t(HinVCVxkD9A@sHkahKb5)P_@oq%-aUOLyG91Upbi>XuE4m-Q)3)+H z8%|`=Afh`uI!VPL4$-O*mZJ^&D5(^8_3>FDHDT;|gyf5ESWtx|%jP3*Dx|RK0NK6L z1z&r^g0!bjuo$xFG@%!c-dIQrwlhx)&C2kvN1;7SsIwTzG53+C&-bdpp#<1+CBC|MqJ3 z<0LFC4@WSe>1k5Zl)#6QwV<=LIx{uCb;`@y{h0xTxv5O$Zdze$!aDyk>1<-ytqU7` z?cB|A>I!Qz-E5m@WGP{Y`55oKT{ z5J#=(8cb#fFx&&`Ho5`&LM>kK;&>}%syY6l0$QUi8*Z(=BR!YV7%KF-@YGgk^-D7PO_8xsk=$?}MZ!Va)|R$-=nAfNNV#l*Mj_GO`~w z-56`ynzqmAw!XNM5k~00n(lyQu#RC(LE4qLx85K1k2}*uHt$csq?hSq4%om1UgSM5 zTtfQPaNHJ_)QE*GoV%k}n7YhbTt8)nNlcTbC*4odpLXSZ<*;-6_jBu-mT5-Q&Aevh zHIkDTi4;SH+)6Ud9Gip%wxV#Ehig@9>a7_qx9cG+zb%A?8612k8u*#R3)ZsK%#-d| z(3nWyu0GYlF*F(Llc;7|vIHs4W2ZW&Q|m?_E}zA0N{KuwI&uDoCcn*mi4jPjYcJOk z@Da~6teB-F&PUM<*GV4fnej^PTvRYA)6sZD<2|3U5R%u+Y1#rNiiPwqD|}%EOUzPa zTlv}H3)6BL@3|nOnG7*)J%7de;4YbDn+3wBHZk12g@(4-vYAA=wtdLq(jX=gOe;pZ z>C8DA*V7xop!`rUSJmtj%<& z>F`c+S&wPAPOH`&n6H^uzcFQmsQ^xAAN9=Z=T)q!XT5pPpvu}MoQ~nt?A8kDI>8uW zjpUMU0+UQSY2jKzNd?zkLoK9YApPT*DVo1%V+E30#R^I9tS7?!>@(b_2PLl)J8f7_ z66gCE$mE2vmHL=~ls@#SFrlz++8=FyHuF`E)913Kql30H!kP4})H&>T)-?+BER{;S zJ5jrQim5ye+Qn2Gw9>>how)h)wFjonH3@4vkDR_soFCS-xcGkq(M$@?+GMjEBp4561LSZv{ zI9=NHciGIT|9>T{^?gHF96ze~Tp_p8XmydePKB%x9M7o_wNLI< z_q`ei?uk62GfbkXx_L!4>$6*UlB%(YBLmGAOn7dp-$tcCT&O`ERYaOL{w^{G|;{lMDYn?G+t zUR(L}fqs>Jb(-SF)J;}S%1mlq*n{&*CT(p-Si=ojt};ID^LNSvOl}1kj~U`8t8i_WC-og{CmW@*OofaMfTZhNiVGO5mM;;Gs$Qj zx-lj_&CL%y<@pXXrDnR8=fAZeJHvNhZEWjA->q0!n}rBw;AQ^pn(jBb=e9S}yE3~p zYxunGkosoIbXRG3e1@}px`(O;&`z05r$jTM&wtP!JwtPWZXBS2Rmz6?tn8Rg8}q+? zi>@Tnr#!>YtSxO=)e3cY>g=C%3L!)$9M7}QjLGGqGftxJj!Es>ULy{jfYhK%G*uz% z9xkRG!kT;CW>jK&QLLy`Q(QL@S4(k0L-YOTemj@$>eKu8<5abEI_Os7Q!`z2s#NPM zS*N^C=Vc^4^hBIVfOp@5&H@vuoW(t^VOX#8yD#iY?q{BhDb8`AIEXm=l*QgYoRLMU z0c+H5KkdO;zRsnc*-6uqnwfEPV?ebK1 z4U2d!`7e@k<{h4HH35DGJ!b7no}GFaCoL$7{_;N*H1+!GuL?{MxmS#pK4C~#e#bLM zuL9{i@O&Mnf1sGwk~ihxEPf=Bhetg!vRdJI57a z$*q`$zAhAD_3@CY?AJ$J6AxV__1g92HRRPupXt~WZZ6BUqO{hY=7d|>Q;VrK6^)e^ zwyAD41=>~QZV~cd3&~SXw(zF(K9<&kGR897%EFk0WdXzznMnp+Y%D`c)*Cutxy&HI z{6^Cuy~_$iquENf(aiszwiVi%xk&C64Q1BN!Kkn7`-bvnI>^Y>Tc|>FGdSOr;00~1 z?c6CTtS#U5z1qwQp5c_uGOE_85>o{m_TwVHJU@NR?L`n~Dp{i>Xr|`&`I|{8*K>tj zqa}B^=t-J8=9q_<9euZgMhT3SE^?0fqO8XZbPZ0r6!LNnM1y%wQXj20+KX-+@V^Be zAk_ZwJT)@p7;+NlsWY=%gMLrlyUGz>`rSk%Q#R=$^f#7bDyXSDlBTrX(l`0CT19H3 z!OrRjgG#1DH?^k`v0AHC9TQ|{`TcNqwz8M5$9i8~DuQ2I#ruYua zak06stjMkr9#-3;BxtING^`AXo$Mz0>sse^W0`c*eaF=cnpQ{w?c-xJx=EC{e+H6L z(&wxlxd*PTlT;(~_X$r%p6mwIn?2Q(l#@0zn((uJSgMEg8*;8$H>gY3ANu*O-YW zn^;(j#E5xS>#<3iOTW*g)G2Wog9N7qJ>$Z&1gekKiWS4;(myMQOzx_sj3~eQ{qD_> z(Q=UDykt?4)%#H1e7d`buy(#^kYm}@%*+)eaa~%wzuM66rVm++{@+J7CC`F^Cx@a> zV~b_fhgqk)rf;o9GE&oM&EaWE9Q&w?$gy%Uli@dOxJo?jFNY~ z4j!Ms1inZmz4*WwQ;OiRZVWCI%4hGXDsgddefT0nKjmq{ATvo`g+!O*=B#Wc3L+fEYGW-Dasq$ z(u~8J4^l(BT2Nd6=sOxc>va0MdlslpoedusQb~;G2cA4@V-|U^m23!3%`B3QET#=PTxBBYT8h1dukf|zt0%cs3$}g zXWLe@JY^Q9&|*xZ>4L4Df~g;^TH-8{KZe2IT@%<=A*oqr(RP-}F{Jm0&mIp`&l<~S z8tRK!=Q=_+uWFM-goV(qy~$|l*R6OshN>@T>y>fMTgh2pQ|h#6rZYHa)C_uTwh^vt zA?8?1^1siR_SZUgIbX9@IoI<4%HnR4nlgMaQ%0;Z9af#YW2ca5Wv6hSfF^%bX3wJS z;ygR=>Fzl#+&STG>k%tr-S=td;{{$y%SB@ zhmEr5tx(d;y_$|8OX{cr4xrbZ|DL&71>)M~%IH09itc-jBHmegGDY{bim^^dTm{s( zl9ae6EPXXcM@_p{_dX?QkLy{4%-62pq^fn6(9}xKU&9&|ZAf!g=eO1-L@*+ovwV6h z68^e6a^a|=6Ji07aTC45;+H}AEH>s{NzZIk3-?!*BElkR?=`fcNdfEf>2;#! zy6eEqDjH=di_+y$1JGBSvDVragoR$GV>mUzbz#c7YsIX}G=_7%m4chKtvxOJ6=5xu ztTp}pK2rV6s97-;AfFdyMF6h!eMRAh~ZWO_H!>?Sy(;oCRt3Gc~%jwmg}Mm`^xV|&%% zbCJw3f6p0Y#g8^7eMrY_Cp~+Rjz-v%`WMNTQ_mX8+G0u1w17z~eqPlNZpG$Z=i;rz z^~LL_BtPw`S#~yl-xMP#F>K+EFK?!Wt*Ee{p!$cswzLV9h~T{U9G`TElQgY92cS7b z&dPOHoeiejdY4S+x%hTD#qE4=;`qw>0yHt$Lcxg zDutL$Pp54;z*=-q3aD&|K13^75;;EZ(`gF0OP}+cC?V6X`7#M(@>$aX^?@ue@_dW> zA@Bn?3XA-#3l$tI@5YERu0YmWQJWs z<~r|0!}PYZag;_{BdgEA!-7ac{Qn4+cEB@c9 zDKY$>Tc%#gnQO9p$w~PCNXq~lpAPBUGw`%UQ_v6=X}AG?UC1<%5x&l zjPp@kIwK~tf`1`u+x{+Xo9wHC+x4md^I7n z541~_Vd_{6eYTzCeG4W<0Ah~synVsu?ErDdtbgDh1%kb>fC;eBA)n(9^jZHGi0RWnX1 zqJ4X%#+)oER@DJlEF5yRLeegOpcNHyRj(J#7t8?}UOL2VFtpTCE4yKBnO<}ylT4o@ zyLVSwhotOd2tpdzE`LyP%lgclEY6uT;sJEqic}H_VcL_isU`H0`xkQG&P-6daST~oBTb?0toN)im8_YPy2`29N;2nEzE+W@g#>PATOBYZ)j-aggE=+! zcVck1w1YpZk98)K+_bZ97v#KOr|*9H>ILhR0q=~Wk7qbNST|aB>ql=c6$;KA zj`4cz2Qz4$PAxv|hJ_CtQ*ccA`~E$+e&N)ADAK}PT1fMbXT9Tg zg%fUDczcGnBsrA&K<1#6ob?89XWsNb1!`vUUcTvc=tO;9tVUIDHK}ID+@RnHQkMIx zP6-hACAQ$@pDi4G>w+~%+~BG#k~}tZ71v`e%x@MwT&0FC97$sYa~9XICdx^I!-AWs zxf&KY%+-N=-}+5~u}(F1Vm8TW_Gnqem${a)e=!5&-m$o3AF1XjZ~r$HY;_4gejkO& zRdB+Cv*KA^`egY=8@x&`#)@SD?(~6h-#NQS~nq000DQ|U$s}{6WMgi>< zWc0(%&6U-tUbAltF|d5D*Z$qzQ1jx{fMK_^`(?# zqnncB(RJ?-BmPo`13S-oZ{Z6WpU?Q*y9%iM>^~@+<-lSjt{Luy3(jgn{hx4PaWsgJ zU%B8o_%kzf&Qy0{7jOczFcDjZDx?ikbN_PQGy;kT_0Iqr!S(WVHBWqULmSsGnB#B`=T_kvCfnC#Ht}wPD zmDm@YDQAy6cSrwH=e{y26i$aHpRJw6cV1H9UF*ej+;0mVH;jHUm4!u)`)rOp^RQ;G z(RHTPx>JHN9fUz!GpO9^)l7+$!<}fCdMiGBIvXDP#k&@MaI1n--p;#lL0R~DS1bJJ zHbJPw|N8yn=g|6j89%;A;k+^Yrb!CT9XjAQXzNqKGd6)wIUz9o?0rW(4YU zk#C6jCl~#{@#BpC*EIsacjcQA@kO@ayw&L6yTaT#> zxRB3h#osK?UUlZ$N|0wgyEZH0nX_(I8q9d^Xnf3~m&h$p{HeDWXvE*Se<2pa+oW@g z339a60`q<(K#2aUW05mp18$)yr^K@sxP&}8|I0jL1_8xNKR%^_z6!OP-n~IyWpp`v z*_-NQB=(glqnpxH3*VWUwmUl)0?r*=7M3%mp1R1<~E@Wo3O z)Ej>DzYC}TNx|tI+NyRQ{45?G6QbjTQ_qTHxNr$KYgx0hyrzY?mE?wXK9mfjOd5qs zvd`@H+8O>x<#$??$@ur1{yC%RDZgn_^H=^CZ6OPInHm2(2X4iP`sbl)Sutj9{edI(*Np4 zz%D!HD+LQrjB=6lH3aWTSc~M3sXYxDevxRp8DUL(ZCYM~s@AP(Izk;2fkiLy;udo7 zzj>1a+v@Z0F1+&^1^TtKW>8jj&s z$|*K$I5Ps+4;yEb%&tT23~KNqA1dR8e^WSN$ASb7_QG6{(>hpKMyO=H)Tgb)T4Bp@ z9;X%K-JUt%uckXW{*dgxXh!}HHy zUlZ0$+2sI^QYRL@5XW0HlC!jjq|mfb*-bd>h&vQ0P~EmTb`whK!y}SkDPq``SK@$u z{$T8{?$Hv9tUI{ecpyW8bVtK8AvCIb&XEP46IXG+ZxuGEKi%?uBxrFG^%$Hn7ag5l zguEWNb*I}Ec6fV%^zPxIr*$3;>uDBJcx(^4Si#X4EH!zqL^#dEzI1fK#Bv&%^9_Yv zsdDoH&*)*3)SXwDcGisJtfM@$MvMqLC+IBb9VZgb;61`ht->}ZU#Ac?`M6}&?bNmd zprMrov~Y0z#_}Fy)bGI3nIt$JuIxNbXCbV`yA8c;T3-EbeuFO8HXZUBi+|y?=1STw zGyLy#D#!aQzQuh1L4r*{E0Sv6EoPG6&nxM_MPzIGV}IpuweWt;r3=LPMf;j{=k-~- zG>d^|dg^BBqmz=RGPQCEXXl1>S}!?Vp55+$RXF-m1+hN~L*1Y}xlFIi*yE21onNkn zadIA;k}|~fN$lOENQrVr_rr=A)Uj8U6{l^1zmj#u=IRc{863GxVv6ZiQSN`4wV)@-}ZSI0}r-;XD`kj=dNp&e{%8e*p0)0)HT%KOgDR%LIg3kYt6v$w zTtexQaS6o)Pq|xx&A3?Pb14pYZ(&C~eGA$`neN-9l|gL_Oj~AJUir=Z-zE`bx_Hxm zna&sYimT-sr`woo>nnF9Yf74W-0GV9^Yd3T6yOt4%%rL&EWrcUgp!E&%__;Kqlq(ySZzWaNRxFY zKVjoZS18PrDtrtx(rsmxw7Znw?DDh1wpS{oM)KHuzoBry%NMr0Wq~H;;mxDxJ27vz za}_(zKg5t?`InmZ=l-za}4a=C0 z;gs8Fmi#EWSmY(IOMge#&DpJi+>ZM9|8U_we_iEonM{2d^;Qt`Q#kcmJ+(xhWO_2!F$t(Nk zN#a4@CFHdUZ8cC^=1;%B-xz6dG;Opm{7XT;lH#-8bXO+^F085<#hYVYxHHRf*69xG z;+y&N5G7{gWA=_cH?GtZ67+kyZ~DEr6!L|R^ERA5e}$^1Hpf2@2W05T#5A9Y9-Utq zVj|Vcm7{>m`6BtFur8U-=ni^;^BmAw_i{*&tqsMB4l?YcbuwHW+hj)WB;6+^^_gLb zZ+G*`8x%s#kKgXVg2=MiAA6+hp2Y7)!@OB8qr%&2>O)(TDiNvY1RtdY`t)BH#5L^3 zU%Ff2?N==bMI*{Z8S^ZS9+_E-4q3DKdFob^s@5@}X^>CH&`zamLL6j!i{^-L+rGfb z<$|?cGop113^i)Tw%Q&Uu36hkGXY{^ite1m+ZWmmG`w=e=Dgl3XVkB4B6PNL5}PQ8 zG`^71^K-k6(>?V2X@vOqAj#IRGh zor$Hk(T8+pJY}OGVn~eV$hdD#Fr-gqmAx%g`-FRB-2In@``xsVSm)DsI;)`C2tjl{ zdVb#3;jq`*0#f}0Z(G>z2f;=m=Tv;cxzp%RhiQAAtQ-?jv9xTOeC&fTeSfZEosoOh zDGoDMIE$s%5yKe`oLN`1*V0rjW}gPd5M09SNMa&K|6AeX8wH`|CYqJ)vlR_16hMRE zugh1G(qZ|c{u?A$l)*}j&c6PfHP6!U}Q3*Wwc!E5A9aV});$f%NC zC0EX0p)j`0ca2*VTu)OHl10Qrznk`ygbyM>AH+NCtc9vI9p`C<&A8!IuV$>!C+1jC zKdY)sRsI{35BqMhw(iubh+R(nsOwzF1*^{STj>U|S?cM^C0uNov$K^}d;uuIQ>S2BX%iB8lXyRyho&0VApz62IEFU%{~Ppspi@xIFd$&Iuca*p!A0f zqWnRQr&2tP5@dTxhM)&=1J%_?M%|!WxrkQ#)0LU4*jcU7T-0Q9(;o1@1rFdnf3*eM zT%oYjVFhA*o6Uh+Peqb}g{pGLj!0(0q1$F8_wc*PL;N19N`m)iPz)Q8d2!ln3*tD; zc&2++$`7&yKElq>mK_?JO=f0|;cSjPGqcu_!BH=^*z0DT2w@E^V0QjwTIU8oUKThK zX+3D@Q*BMG^`k68VF!8b@69;wIZz-?#pi};}z$8LmDDPW;UO4+_1qT^??w<>6>Y6kR5VdKnm zmAbb_L~&cJ-U+O>?!1z$obI`je#J7{`&6xwCh9d3L=l|VTcJ*hP`I<#YYIxQx~wXn zsET<*ybo0gE=mpUm&WE&G-IiY-{nNE@83V;J}kDZgKht=Ai77dnH`>xg+_gV0qC(;GLCWLIPgfHZ$nX1+47v5O-}ijuO$#TUU7!-mXh(MMxp?8IKPo6* zJ$Q$L15;Ip35+PCwRxb|FTc8Q>K_+UD0wjBjJ-CMuPL{)ZZZXSe8)u!j0p#|<`D6d zU-#<*(&xo~>%N7io|Ozgv$Xm*Y%#C*$`BR{H0yM?m=wE9m9&L-f{vtUO?YPN=IW@6 zt<*xy7B@3`xK1KnSyeR?kwo1su(%>7lp$wT9Ce=*uFgveL*wN zJ7koB!nBr>v)KusNiTP9U{`wT-4eS=j86e`>shHv)`}frX;vcliv1u~I8#+6QnZET zOLh~OgfLk#e$OIcWgr?(pUB|-j2H|N_@8RiwJhm1$U-+9QAH|PM*?G!?QHyIp_3%I zmib@ijzvzcv(%5wIPF&j#UG~r7yq>&-BjwSNQZ|#i_x$e^y}m(&jj8 zu0aJTq7jxn_m_p~nl)L6=GbMalHU7>pB3!G>RT1+YvwC?_=Kw!GD&x7my-iHm8?Nk zO;{rt!f!a*XCF~GE<-~~7RNkrY;la(xGI;Um^R> ziSC14+x~AuQIXJ!i~BC~h71 zld$8{=~>dJ`hYJjt&;8_s>qz$z^wKPX6J1EK`NdF1lSj?bV5VyAWq!&7bsw!CWZW! za%gH4M{oP91o;g&Q_5&}?U4sRB6mbh-Zhm?QyNSCZ5dzq`$DTNsbY)q@l9SjJqyt+ z2uuGg4&yu#XZ93b^%YvT)?36qSDEhJO64E_Z=fwwB|D2dMyZ)e29vgC!U5~R%s>7U z1tBth9Zt{S04nj77U(O|GSra~Uy;IF9#D{2$U^zdPYdiX^_x0I$bdtaN~v|PIp;cs zZ=F#*8^$m33-+$#DhLjPmrfc*)HQhi7>G*Y8zW zq=sy!WC2Nj)YD<1)M6hmO}dNu*T-H=H|>1OXx5~&AhlUtI6G%evNQ7O9fQs~E^P>83_m00n!QZmQgh`3zpU!xF zhITaXx>MmB_bx2*&Zq9irOmfcoSbO&Zb#j@pmT#Dz|5F$$1uN1zVJRAOf7eg`s;$w zoQglqd|!3lf=u-Exq0d5GTMe3neP3Yp%PBFQQ7tL*w4GSy?>5f}D32}Cznq|rB zjt=KfSkuDVq$}y%Ea&0!>>Y<9pL9gw%hxYR?>P5w3f%bvZ&^^Cr;#3wiDje-k9VdW zKj0QYe5rW<2fIMqKdZ_~rp|=d@k&6c<9+G-PCnNth9!l(B$xI|cV>77g%^1}evA#R z;2-#of{jNU5N)-Kl!wvjoiS4>O5%nJp0~?jXHl})U*6LfzAtGZBlGHIk`=g+ZiH-j z7tIu8Mlvk*CgnM+>S6$=2gcjTz~+gmspo;6U+*WW8!d|}j96E4nIdb)a4oBEc6gNO zH3}xW59jK*%1K*N=2D=(ho(9reVr&^Ty2F|CAubH4E?hh{Ci)vAdu`7NR3~kOckBT=to5Pw3SI=E#38q~XHnP;IAZ zOwm1r#RklIonN4lLrV>bfPs}D)xqD3K2yf>{Jj2 zd3Dz7&p6I(FGG62^cF0-ZYFvt>CQRZR+fH`macrLS!1|JamdeK$*{-Lm`p@pi`*Ws z@p$C&(>oMeT}qh(!b(8q>7rw-k5AsZpu?21ShwfhcP>ailvE*T&KXF7%>m<+3G^};=nawC~G|RRH3i)fS`2Ncj9NHops0oh* zAPUFqb1Ok~cKYv>QT_CR+xvgCx&Q|ut6MPDN@$SlOso|e@17K;Yr0G{!M{Sq*>5@XB0HV zNcX+>d;L%UprAFN_IM&kTI+F3Sy&%`Ye5uJc8{iR@{**#e(diG!sm-l4}qOugS}T= zyl`@crg4kLHKU$UewhfMWr;NPw{QoVyIqtIoO~h4drX7CFBVc7rU!YYP*Sl$~zPII?J(OGKp9dU%FHwzV8Fc zjj~Io5x!`$yvlK3XB%(Dm|rzf>pQbPHD{b!JWrRgN6A&uypWSZOPaakJrwkgHZKT> zK+YM|yH%&Z3fP)ftnO_T=Lgq6*A5|-2oQ`q-i>C z2xW01;Yf5?>kgadD6gu+7K9~MIM16I<=-Wu}i>(c;(B!o zHR#3u`g;}RC{5y%Btf6jZkW#XuICiK`r3m09hy8JfmQdS-we*)q;A~vtsQkt~bJrMI?Hh_Gsp?mG=KlLE`RLE>qAaPWmxx zn!M0ub_pW+E+i53K^;~J)=l-&!Kw>x;@|jRwc!%Ew!8{$n@zHklaaL z6gN=NjDsmkE{97(>Ao2+zE?r^JezA{9vjv5ZlRtw>R3-SCP|N|YIW%5?D`~N&j*&o z;20EDhw|f92-3n7+#n0PN1LYlMr6n_5q53958YVUdXvf{LtZa?Yr&={ZpipQ_a6%+ zRqa{b)8LmoZu%1~F>-Jn!6wVG-!B5^EQ((CR4qBZ*^zyy-VR6e_9|#OGBj%>5P8b+VrE*cEvbdFIp@aOJzS?U%-5_cC}yi7x%G%cFDUg1Tw1oOWMG}z z3DsRy5;2D-(MLrj2e2#nVg#V4Zu7$SNvlpGjN2fpNN)FfhC-iPs!v0Hqx#RM^pU8c zv)T25yT|ooVY#UeC_%VlkqB<1kI!WKdOYD^?w+rzU}c`8%OaEdz@0=o^8^}-7y+K# zj<9ls%6_5sr%5I44x@=nviMME873Y zP}ZFB!@`myMxkqYeq>;E1TYD}jzW-!B}f0PpA>u|XW#eL6OFX5r#r%(tz+CP^^zaF zaUs0@Qw~wDh2g4qKAlvCDY4JW2V-`{n$)(&N>HEq>kEr}oZd(Sa;A|h7qaLkOVMpJ z!M}^t(g77(gsRSAOn*)G%t3X$Q> zAMqvuZ2NZGS!uw^SY0&j;~0(r^X%fV5aw4$uC7xe7IDMbFjwaN%=6OOBERR6zu>xs zn2axz9J^>QGg~T$CK7ymkD4oro`yVHD3s-DAsqzd zb7%jobvqi4m@a0L5(ETvh|@-H_P3htkDWjK)>{_1w^C1?>EhG%mlOk)5^2#YjPH`> z(Z4|)lN+03q4smMnmI7H?FD9o% zP?{@EP|1|FAf(m_p9ydwL4HzSC-qi)0#`WOCFO2N?BF(%+d0nNwJNq%pO+K)T!@UO ztam79bILd}xwwZE!|t?22=bd4A~baOVWUNKS?r^Uow~p7vp&vuWqBbZsSN4$a!@Bm zq#m$ih#@1y6oLOq_rF=;0U0vgC8u?4(a1YUNoDDD=1U%PUt3z-wB48IHvQy&_oYNPrLs zO-SexP&#QvdXY|A>3c#Kx+EY?;Fj0`f+z@j$1{I(jI*};oJiegeL3U&-~W5wcklhI zXRW#Bn#-UkV*99cbP)izPrB|h?E+;m@5g^nhc(AE?O8LEqdZ$HMnSr1;C!sTenxP5 z#Nyh(qG#P?nWzN6W~0f8?hrThzDq3=Rh@P9W$DfMl+C{p#>@YGHwG8wA z5m_`pxj(HZ+LF}}MPW#im8rvD9~xLv<`kJv#+w&Sw1IgjAM{!Bvv^rVJRO!bC5+kZ z4IKCM2()Xy#&a?T(~DdAD$UePT^Z*EIQ9L&o0FK0F2009jw3|FCwrW{r!iIbYC z7*5d@|H@%$l&M~oMrEY3Fs%r}a8K2-3al>mYa>ovo8QB*@+5zz&W>DPK8e!+^9%n~ zy^=3?q4#3P9NA=td5sx!6a{Ek+t?Ree_4bi-$yaJ6X-aUNei@Q^fc)X6ZzVYsNjs8 zUCPqCnZ26|(JXAoSyP)3XKD72EIGe5=NjDC^s2Z`?Ak3Q{Gleq5=29 zEQ63aqh?6gjAdW@>s4al2=ZKY-t|z&g-3ImcD-+HcL)N&@M?t;H%VOGQ&Kz;Q@bz6 zyr}jpCz3)|@Uzw&|LT89vQbAaRiOW(Ilo3Z4pT=s!3Nyj8^NbGf3KYeJOiJqme z@E6~{%sWdJ>mt362DUWra9b|1M?{cG%B#vaM4ZDD>5%$77F?A8m|LtHO@$Uz&%eFx z5zF8*HqzU!vaF|5NUE(3DLi|aIH0|z`*D0@Dj|wHVfW$pmSd z5!qponQT;IMBXT*>o*uys&O6B2fIoO(F?w188?c=6(s#EOn3Do`bxQ(Z=01+vW|vH zS2Z*dmVP=!N~|T|F)+B(28Z(PjCSi>26<&OMt8>1vnIF)*Y^#~lWv;-JBLT8n75fZ z(?@l5LafwAMaOt;TuF10)aX5Xj=hdM&8j;vy%}>VCAHF+KYVCKU6V+Hk0f-`J^aVC zoW9RIElm2UChFN1g4jD%?8>SVUn(OaI4D>}`$8qll6y1=@uYr16#lCirvf!eNO7a^ww`~ZWzQXpLj?JAnqo;s64lbq zdH%{W?vFcD9TP=Dsivl=^bl9~QQy4G*;?jzHso|1`#~fV+1yO7oK0Pmggjl~&9_^zF>?O&P?ltvGGbCrnDKs4m)1Asy;d68~nozlXZXulO7ru9y4n#nNgjD!i z5oc6})DhZLnTms;(HX+wa+D%Rah%8w5~My=(aM~lvzM^wz@V$P=CD4mWo*&_vp#DpT@qL@8fb~s{gqMdZvv_-GxXo)NwrHzuO zF|MOg#=EJp5-KszPIK}FUx}sfPgIrg=uLH_LCQpG{?&oOxhQ~W15y*DWvc#F9n@f3 zoEOo-WRNe^RD^j%{8w+o)M)paL0Eu!i43C5X6DTxb8dKfQ?X;lQxmV;&uyM*{!9}6 zJWY$gyl%ftU`(}bNm{36FU;PHQ6($#i zOXE&|JPMWMk+ zbI(J+dl{?*q%cXLo66mYtT#?-k53)fs6275J$+$D+|z;AQ!t$*A$~jH?IuVQ=Yrw@o0c=luF9N>y8((fsT?sEB5NJlpecx+ z>U0t%byQ$hom6lx)yB#($GvtynIU6i?8QN4f>R49*9lQA&SI(>a7jkMRvac!x~Pf+ z;-rd9#r1GrrtDy5N!;2L{YSAZ)kF2c0B}H$zqVeRF_Rpd#ym|T7lr>8^m_k}UrqMj zp{-bEryd$QoWi`Q>cao9Ouyk1R~ivJBN!)Da`3B$M~?uk3|Gk2EP|K)yh zSaWFW;J9ywzYgcMnQu62ox1#H-`{LkoiiA3J#-AhJVs{|H_*;`B z>GPNPousT{$FzkLB}x4p`S!T(U|(WRerk#roVRrDFdwH&QdjFf&9f?cLKF3K`;-k; zjT?0ZI*caE)$3;tqJ2;bLQ*t#Ma; zF&kXwT))k6&wKj(?Sx4f(Qb`= zetQIQp&f!*xKyxag)fehKbe?s0jOM6xb_T*;OrvPsx=gDPi0Wd(p)zoAMfkr5ye#9 zA+Dh`2(iXw#*ZqS$|Gz`ZBaa>isyp1NiwG&cUj#iO~U-T%Y-eJFW@h_#0mn9=@Rkz zyCt&b21rq*lO*5Xe${0vN*;QZsVASh47gawH%X*3i4z%3glk_<9ImRI>4}?oxUCss z4H$mYDx@fp?)elvFVyU%|8!ORYVQQsk1MduHPiX=`b}Tz zK!;0kA@h<$)RRU$dP*cIAW*e8nOVXJ96&izwHHPdK~C}NE>~ODiiKy!V@AEkkYt`>C<9#Esn+VG}C6cPvg|Y@Uy}Z7&9q7a)RH{6Bd`l;CrGf8G zKei0m#pfK%DKai1>;}vxdqmu-5?1~UzuVsNoc41QR?R&hx8o=Be?6sTUFEX!=v-t+ z*yoXwqVlZHigLj)u14DB;udbtJ1YfLGhXBshF8ahA<<<;d*hX)tBt4#V#<^=0qol5GXd81qMY1?1E{PjDYuNnF z3y1mr2^VQIRTOzmLFW-qZAO+I=djp*NImB@hsaMA_Ay`rZyr?zVK|}ZyURJEiZPpP zW-Ha+Va>Ympfdb#IILMb88~M9M)P@~Jg47znM!NtC*|AW7rf}2%czWq$g207b?2`y zBjw~b4J-!kY}*SITz*YR#i584CPdhXX3^_Dhm!dxOObYofR`eaLwg#dQ9w$d-Zc2 zR;rM`3wNA7{vPcq+EAQnZ~KqSu!QilxR^SrF~^V_-6V7~KH8^*1I5_Xq`bo<#QLUE zPH~*gfS(md5A4*E5`6hXX`p<16Tpcg?UTVVB=v}xYZp~*miL(hUuU|vTl4d5Qo@-$ z&S}zfe)UB=ti)F8n;-b0WymWSTVb<4qY(S-@|!I4UF+2m)4z8|(Z*rz#+S_WaMQ-j zRXL;+r;sXsMwW&l6sy3PI}lfAJosBPU~?VrqMv)olAnvlP}E_*>wsC@2=D;}D>@CUN zOp~55&aCUPJu<~5J^C1%5c@u@+uMwx#;}PEd_GgZ>6qrw(;FRH(W@NFXcn5Z9YO$L zTdO3M;iNXig?(y29n*b|u{kDgj4auR6uDC(YYt0ZlD&qkBeV@CnJ!R3tb#a325m(oMj;S67)zToHNkz{jyUhE7DtlUH!+Xdk&=pgZ(8 zBc7VAHVl(aY!YtFosIAW2KN~l{eX>tX1Zq{-%P`2qBkR~$+nvgYrcL)TO8ID;mgtP z@O$7LmLbFvy6McGETcCb{A0^}eo<8iL&!fuCWQNlq=*s7B;Z!Ge`n^=?%;gFDvoN_ z$qx0mIH^iMWtX*mC;PX|fkZ|vteG?#E`g`Ldpwa>kNG^+LLzLedt7`OmG|Gd$}$-P z@&x~*?a$=X1Da6x`L<;`tvM05tz#x+!f!vcl0v~J`C^S+vV0}9gO*OSn%^eZl@D`0 z9+a})Qy1vXc*`=5QlRL8>zSDwU*f-U_gS5uMnEF~K*v3dVeu*#mCgu2s0r2>3$;R9 zh!!PHafM|1T(fB1$9L8ZJ^G>{4=xnLBRgiUw1O#G9K?vd!S zFs)0?nF~TZU*1it7FShI*)-I{6+sbFKT|1dsGjlRP1Xr!*Ft{gPb{U?O z6p6#Kf!olQ-%t5~I;rd<$3H90JA2ta_2g){sTR9-9C{V#%AC}Yxbd5EGqY!9T_QW5 z$1@MqFP#{=$~2y`TsG7QajM%WzCdsf1yB}n}bt5w+MkI6zkE#Pf@ z4HvFZU+^in3VMY(MQo348fy?H;*W)k&WHJ){^Hd1DSJh&5Kk%(S!)*BEG4S6C`5nR z-qOH^qjZ0Q){(y;O{aC%#2T%?T6rUW`62DHQ<|fx9D_PplDLUIO$-aPDLu(+ihprc zDm9j$Q(I}YHHMEBAIUueplXygG9IEj(W{AAZPG*kdK}+szx=PglbQ}_5E?clhN*is zgk_E;H0;N7CH|Uvq1bbVcWyMThNkNVF+47Anr?{A4us=U#bfG;Qw-AQL6S5gM8HSc zwL;#SnJ=--Y;%8Il%(m+2G(sNwgOkne&+BO1aCk4zv_nND&`>Ps%C`Mq8VnqenUfu z6M1<)JvjY~aiGErpUr0m2bC{5!V9~PHy{nz#_1r%SXv@1SG9OnN(u+Q`56MSRsMk;PbD3Fq6WNy1t~r~mWz_iHVrSy4Y}byhPp;mo9~RoE z{WYT=GBO?r$r`S(>SP1gkmy7!Q)jBTN_SNpC`nemX{NdL49|M$wU(s|^_h*cAW+=R z`*!BUp7hc2_)dbN%`h=6pB4r;trXu$cNk21QKZyW8_K(GvdnPVx|ku|*9d4b)F+;G z(KcPxK2{o0(gsi;SkQsSJK&7e%P<+E#Pc!2 zO&NRiEZ};blsGHQM}zgaIr)khU%gNITxF~5O)`7f?Pxt^sz6k;*1 zO?Iu;$?>7O@eOazYR7-v);X70<}Mh1;cE18_bBhx8YYr8Bdpm1Jw((t#8FGdP~0qP zn~BD7*`f&#L~0c$5hT&;C&eopD@k8}p6TH?UM1YStr=%ch<&DkGs4=@7dDka4sMDR z4rMESi&*}T&eGksNdxCJW(UKJj0V#54LPjioY%xLC#_+^?b!u%JE@z#?&-@+3_^27 zN%`X|EmJ~~cFpP@$lP8F9qO*8CFGnvjh1f*6;n*%u;S+Q>UL&m(nbfl1W<$}8v36% zjOEWr>pXkaXh}Q;Ba?LjjwX?!^S6SoLbT^x2pSCTmxNcAL+HGc&EeleW?faW648gA^R6MS1m{FI%7VOdEACFvqZ>@&0gVkV8PhTQPK!LB+kC7d?yY46K%4r`=@m5>or zBz}L;^_LOwF`1bQ&eXIA&gV)BRtlwgYN-aAkih9EOc|gTIsT{DVWoNq1uhs*nJ%%F zIIH%Wo>+hjAPF zf_Tb?Y|U#_0MS9=S^lr^*#FujO{ry+D=*GUVpt+v-mU0T;y$mOBOyGK2pmFj(WMcg z)Lf}M7=J(kUGmj3@L>G+Z%r1}Xq=woo|;suF#5kUszPX(Y2b8f9NCEAHg&^bC8A?P zCCsX8kD*gVeQ@87bJ6Ze@;IH;BrDwbXxk7M_9@|RCUbu?N6aVMMXE&WJ^ky;3bBtt zr$=-n?6If4OS;HJZ_|!5|L=5FQ=1>TH{kI+Jm|8T?K|M0<`V;rZS5~l zV@0TvYzkIT94bl^9z0hyTkDE4>mQ8ED|Dkgl_fOsT@ENTy9@Wb^|FrH`RcO7YriS} zdUzJ#-|S_Wlv|>6kmqivAtyD^uGao?DP624kJ)&F`9?+@RxWfQMv}@nR@!ceI49lb z7CAD|X0fSw_f7yp)Uf%7uvzs>bJ00I0QUX4K)C_EGe+O5s%F8?=T! zt@PhW0B7_x9n*e|?!Vf;Pw=Wc8&n2TGX{&Hq41D>W~70$)oIr9_Ks;B07rCyPBzvK zncBSblxduknR5_=kRz)4yjOg2*#%cvMnck?JwJ=46*tGNh^J1;XiMGma&+^K? zK1h~bhDzPiO`av^QAMJ%H{r#eF2{VuWMIwN@CDsJ>sSh$e3xQ)XgMn_`NLglwq9WFY+w+&k~BGw1L)mSy^tO zK4Hn3!#J#=M=GxIgp_6$yh)xc&GbI4MJDoUyLB8Tu)h@$T3XqzZ9BjM%Wulw;;=^I zAX;>}{VdMHFzyJ_#97=Ha;B8TXi3S)CIT9rr*|gN=AQ6g7G%`x=K6FRhvh&Ns!q1v6>Fj1ywTs9~G|3St&CzsC zg*6k}@1^>D!Ot#xRTc!9xQfaNIvBPT^}pYG&N2f@PQKPMPU@7~EIawq%gn>bU3d?&f)G)J#W4wM zdqJbhfR8(?7;Try2kq{WNXEZz+#Eq0uZbsa|51MLT&l=&q9+-0yT)@?sH4pja<)&G zdY8ZJ1{;_3+>0$Eq9!7+?O*;w%W{Y|(4Dlyjj+G2t2x;a=suK~8l!P`Gs2pD_YqZX z@T>tLmtIQ+DP&-}4jq1V<7Ehno9@B^$=6Bk`R=2MdM1fSI4o{zK<{-`vu^11GbNlR zwo2qheg9RLUzT$5FM?(_dZD{fAV;v+M>I5lzrm#Dkt0c;HQ!lVoNfzsMueN>)IJJ< z?ef=`hhP3KaGk7&wVL3V$yAnR2y=2k2ux!@f&=TAkRB6g-gHBE-^VN;iyW>Zf z$!tVhbr3`fa_o7!dh87u9RIp$Yl}0j-kkpnmI*rS+7?9(V+%Ml6;qlSfPh9E+E*sW zvTHB|d|z@8NfMrVP=zToq4E$^U)hN2Bz>7={;re9LY|;4MW2()(-p{ni-~xBe^~vZ zWyR#%C;juXcA4jfHQ&zenWHXTbSY=G8S>176)Q%8X_8iFF`BcY6V}2C=@i^-Z?{d& zu|c@g%xB9(;Ni<)wBLDMmiF30zZYK?8qIkaK#i3+EXm-Eux9_-BsWa@sMuy&SX$zv`48%lg*wKx@o(i z!H}?DRI9uBDGyi{Ztshv8>QeHm9{5s?z;kK`}%Y@6Fwg+(i_+(KL@9 zV0+MtsLJl}j8&^Hob~yn&4#>k>$5vHg)hTd@gGe&Ou0bv=r`iuP9z%BIlZRB&EX74 zGu_h}Mo3-NJr9V$3xKetN{mfe5tU2Qcki1oGliAx{O=J$e{U?&7Rr=UT~4bL(8c8` zT~-&}&HaE`Ylju2N3MHbg%5Sq8f29t>@iorM`{v59<`<+nnB$SUA$dIxMdjTdA=c2;%3x!x}_~ zjdIo~sJAmT*o6CNtQnxUc-Br4^jL?r|JN}?a08qVw{-+o<>wJYmCOFNLz4!6@H)#d z;~xCFWty3t#+$~bUA1l#TkRwj_wH$fb{&%#PKB(E`W2D9)Tzn8JS~exzUCnj*6V(3 zneiDg9l&|P^(1|M2C>_yHYLYF_R>>2UE7_mxGc2)^X_oHW%imtp_3Ny!ULhqnGD@E z%2`?99kJEK#ncvIPXLxmY^K>rl3v14(5@Ck261g7G=+eszU$E5IJRy$$PiOHW@?8z`0>IrHSMWpJ5sfUd*bmyUm!IZ z_w%$nzBWcs<;R!Vn#F=)I&n{ZWl}<~WU#F}yk?naSmXte;rKY6DK*n(=>RN5x+9oOdGR7I(cO5?(XX>I$7QIakAp9gAUb6 zlI?*;>q2tVhT_Sjr>^ROrAkj);oSHs1D76j$7OPO+fRDMZQbtgm$|q;qQ9sQ&fuW? zWNDY-yhKJW$A2HIUE@=qGj3wGWeU`B?%NlR_n{d(#aE61pI!*vcrd3H$Es00&(AMV zDY6M|t%z&gU;8n8Wbu#4Vjq{Q)PHc<$D`O-1c208SK!Y%! z_`zkS;E>a4N_d=Ono-yk;hWLcUS)JJ;F}B%pnZbzGkH{}F%wK4y1~$1H z>F|t(HU)~=EH%LOSsppoZ4ID(gJk7N6FaC!Kk$0XBEtTT4A1^EqBlmjN=Rs0xsMTx zeFhg(3sQ5Ztd1N8dSulx1*PhNn)S0;;sN`M;{(9kebPxFOkLO*`{KZ^Hp6(vs#j%7 zZ5&5O_GM=k5i^xtr7zLYoO4>a7EoGdUA&EcPW{W8d1tDQ-NIb3P7*z@35$HGCc z5SPgoS`EXYsA5hQsp5N{vrISnBQCbgXn4d3m=0kuHyA*!zX_oM=7p#xF1yd?m!0y( zWrSb2Mb1ml(Y;?1%M}G!s<7Z6wd$8mE(dmQRCYPvQHoSOFLD-H9H_E@q*ZY4d=vUU z>IKU%m8%Jvpe z0fa&pzMW!wLw<6jbuo=I8gTCC2aNEeI({MPs{~NwO=HIjs1x{SaEQ-d-5`(cDH`wvfKXQGEU8d44mZ_4$!y;nlw4pqkCeEi1ei!XYr;!!0T)gFIQfv(8ZGQ!clRl7S9HbO*_! zNwCNh9y>isQcmL-Gc)|9xLw?qWD}hNBa8|=Nw$aHU>S`nf1QX;3$eC+!rG4c3RwYK z1axn_7C^cJgn8_^gNEO^WW2lIIBkHwWK7Qewq;FW!k~ENmzLq(aMn#*_N;dsZ;Yxx zBEqt`Cn3k*9NN^VXv{SomYIe_insA;?%h4Io_L*Qnum?yI@V!vOf%^ll!Z>g*^@u_ z+$+B^Fk*18yyvEwIm<|NwcQpprhA&IWE|6sH>VrAXooe4zSbyZ?3<-Z!Aa_kg-7k< zW!GNzkuNX1@TZs2vz6`^sgv%krD1bwRQ`jm=TO>R*cGf8F}; zmW7)3gj;@o*{v_Tj3d}YTRDumo6<)Sj7BG*M6B}4ac6Z>sn>H!`dhRF`BY*(6okpS z7vG5)Z}+NYx6Hb^G2)k6c8e?y7k3|_0bQ0mzSU)x9eC))8goQX)fzx(`hXJja$d+_ z>WOxWHo*tJW*P2@-vc1Q^Y^*-vipB{8RW~*^HYC#*?rE9B_$-quO|VkL8^s75I=C& zsPcala;HQ9urHTAE}-0#(MBLeq9oC_&n$74M-w6js&wHRoCnl*tsZ&RWxxazlDRDd zM4$QH%OtttzD<2y{FK>O5o8e+PbY4#D}GS^Jv=h2tuQqdsWv;rp|mm*p9d$TxA;4>-vO(_szf+6M32 zyRgAxoBa<{4`ZJ^Zpfuc^W9nTKAAl;6IGBAUuf-TE#9w8_e!@KfH`1 zIdB3)k?whkSSn)1MoXYYNHGk$8>X-`{521mV;o{m^gcleyOYpYj!HNmaTTv=F)&`rK0Hz$#7 zzC9Q*NEPBW&gj`UTn4SssYmycgkE{@NdabAz0S+$91+&+qij4iFsw~f#d+QPU)xlG zY+E?y7pX;afU|sGaTeCNX?L9OMwfjw;xwL`u4<-=7wNE$;Ja&P4iVQ-l|R42GTp2w zH7$n|?VY61sgN;Zt2%MlW2bd7-TKC1iOM-R<5W04ztJ6Gxp%p1N>!;#-Sf3yS!R5^ zST&rVyJuUR;+0K{20$(WLow|paYjw?QkJ%vtL6M{!-jk6|IPa}+Dfu>>nza? zx~cfCwe>6os}iS^42rWjEb$bWU#ukJt4ag~)Fd6;8RzJG-QwhBH2%VXy2p*K8jHTn zjk9j{{mVk}JVj2^QbQJWFC>L~AAq0rXTzja2BB9~!%4kwPK(vJh)4b#pICO!6PATa z{W5Wu2#8ApG_w9Cq#CXY4Hd)d{?}cml7%;9_@#&ps#RB&s7+tH^wUJ>s!FFF$JW)5 zNt(vb{uL6}gf{@ZErA;6glYRI@iVi6lAuYJZ7t*1;aN!j?|#g(%)NiGo`F^*j~S9W zhgsBNaZ=E$-y8PgLu=$U4Gb?jnBxz0W~FRgF}5tl0Z{RuWaWn3uXVkBBsG)4Nf14b zS2e}qbFL1#l#EjjFh+xh9v*8U&I4JY=a0#*c=o z;*X=F5O3%KUtWek`++P>E0e2V{Qb)eI+59fmc<=)RY7oYrkd7eaYMIw|FWC^z_Oct zYb;+vGIfh%NCNb zK(aWvQ?on-rxIO{$k|Ln@Ajx=*zI8EjvAvIk%tm`RYgQ~!vN}2qD+m$Hn8DKb<5T8 zt+D?T0zUi$msw^5gIZscg>;Ixdc^qh>9*9Noc0sR5^e3B)NXalNm~Y$u}Bt&6?S-) zEfhVnj2g}C(T}5R9wBzTCoW9+yy*#8vfrOngY3GN3797)nUw|l8THF9Yi7~#Q8lE zV0uNK%H7=SlFLL);w+IG*Cw`7e>^PwIfNR&DoBb&Be*H>J|J+%Wd{|hOh(OI5by@yb$vo5|&N7ZAl zxs3P%_#9(PVyK3Kqk7-VEEB&FWT%~QzbyTXr~TuyMqyW21}Q^>V3JMKXtj2$T8hF{ zDmmE}8Ab|h_K)G_cwsaxPr1%A4$)w7@t}S~x(?zFHLuq`ZCS4WU0k=4uja6+8DZ(t zGVe!hrAjyn4ZDhA-I*v->3xhBYf6~tprShBtQ|N}-KxGKXM zLO)j84Q_rC$vvoF8cBcs)jzWA;cs2$+TuOIt+*;|DT!O-phQL-P#&v$fu*HOCtN)i zw{_xQFM|r*l4el6c;m7-vL=9WQk;vZM`Q%N7i|Hv%Zv}e?|;FP+SU^mK9s5sOHD9a zSDe-6xlkEE=5V*7Z1A=G#y3S!XiYE+@bBz!M7gKh>|n*P`dv+2c7!;`L9`)iu`Tc%$x;VEZ=HgnaNq7 za~p^4MWv5$SR?*AVvyRL1v%=E&KJk?W3xhE{}`rCAl%;|k(hyyAMHr4q)S|tWUBFw zG*G3_#!h@xSCx^9H=$4HtVkVANlk3RJ#kD0*W(&){=Q{gm^8Bu(qo}GwC5zB$7>q> zg$lr(VJTE^D<>^y)Y>H^EAiKqFwn{)oh-pMwKfC}2p3?U`vdALh?O!Gpo!=4%vZxJ z7}-JTF~qtggIOh!CId$tbpopiqRFWz3Vm^}pjXnL5)|T+a$vvSL=&l;xXJSau)o{$ zmr2vO&Js#fj}tNBKw;r?F&t>=rjb+NKD?5<;owvf`z;b@p|*MrqAXX{A(w&S#b5d; z@l3^85VTaEZ;K0tdlee_JwJHaW#S7D^lP(Jlzhj{{9&{P(+MRzW)VGhX9LxmsbV86 zNEVfdT_dzqx0AXtv+{_veJA~2`Wez+^m{~gINuF$KKlW!p|3C<({xxI*(b6LU&?;D zz2b=sX(JRP0o*g8Cf+n$%qE87h6cN;@z=z&h6|gKTH*H5;v?2pq5jirECaD?xcT7A zmzmg%jpZ@HBj+GEg+?(+xHzm^ePP+nv&2v-Q2+7?mx%dIoL3|^-kFVZPuP&!Umaf- z=Or-|#YpSW5!%0z$VimbZbWi4`Pa(V5L^!NLh6TlT67FaBCd@Slo)EhnSCZAqlz79 z64DV&^)wDhMc!SuNJkT zQ(Tho%e^+K%std8$w7-vY#Z2C-6EO8B&QF^D$16EfcG&T{f(zDvpMbGbANEza}Jhy z2e)L?XhOeHN=Rdf8=5?AvzcwfJx#bh5gF$tWybtc^XRBuh}Gm<4McCFPBGoqbVhrI+Hn}x80WE}ILu^_ z98iiCAO%_xNl5PYiGN;3QxA(BDavyq3dWMQu}iQd{E`%mLxEe}>~EIUJ)N~ooCW2< zQSzIcW=Z`po0?w5R2$3Z%311fAtG>3_){HGtW77YjWS_rd3jr`5gM{?lT~h4mfvHR z$zOZ)>TIFy1@28_P{pS3;1ieW9Bh-*z$+{Amm@@FUrW%zMqfEk5SM{63UaP!e0uuS z5Jgyxw(=XDgItUh65561Zdj@P)tX=yT&aRK0siMS9rZhKzW3oYRV0Ds{;sE&`%sIN zzKMe*hMcUFkn0SPbvH#AHBIhSQj9Lkar=(kV)jh5)_V?ZKr!;o0Gz8 zKStVUC!offnG6n&)n~D?Knf+QLWi?^6D&nF-$8>?-_Y>AqJvi6s=uJR?{x0nZz)QyHU=+)t|-CJ|%Zx z^-C|y=<%1RrrqrKmqi`=rES4MG!1O8g@u#i961yY2nSuIlKbd*u0YzQNhi)~R5jEi zI9v{^m{k7y?O(mjdsZw^19O0LN-6+*Ng}t%m7}d{2I81F`p#GkRRSH*Z@lt=Q*fax z?Lt8yH%t$jilN6#1rUD34PnM>pN7uZ5}iw!TTZgZ>%9Xf0=<&HiPR)+)vk)mz(+?| zt)fHx0m$5YihVMt{pl#C5;P(d`1Dd#C>tE=(SNc`3kYn2sw#qoE=8t-33|uZmn7m? zIe}3+q{+I*^y@o^4cdC&OO~k{YUl;cR>02|m7btAWYsaDHH^(!S2d8VVp#a@yQzgU zF)Wf5c)O9873=_c#W0QxX?%!tmG2X72uwVB1yQi zu+?vQ?PaQIA|nV<+o5x!f~ci<92r-IrKP?GAP3%q$*Yrv*y;QX(!>GzBvW0k8gSf7 zURk##!iqo*ht=*sRmdzAMy?P5Uwz;~x^BuDCk40io}8w0t=#(2b=c0t#DLYANCEyp zJXMi-&ALNbTtdOAL6lBbqR5k@A(>Ey`dXb`9zi{N;vkWibPV|2BrX{Vptq@Fb{_ZC zG$HRv&B}yCFn@vhI1Y#yqABLr!w;6>^%%4v0n`{IK6=n=mp$^EmXSiHdqICfS|ruw zprL7!N4Oj115ul_+LRF`0-Mw9Jh+ck0ydPlxfjZA)q<$bPu})W!rE}J1{v~*Dq*6M z5*jAZKHQU^`}^s_u;FuKU~TG~IZAK;v8=i$VEj~G2e;d=+*WXb^S^W1D=xPz)T>Xc z$vDaFV08Vgye+6cL<(`u@HN{4R)oNfqiR+`R^n}YSL%hh1{U4ZCCNmpE z;$8zZM2moDn^SWM>;?eOJ?Wmi#p9Mq-zsV>>PbS;L@X{zhu~zoi_4Hj3xvnzwbeQN zDVx7Nfceer@2h@8+{zr;SNAG~w9ri{oqqJtIx&kAl=Nk3{b?5@SCy#Edy3lHJz{7W z*3}pUTXkZeSzH#!cL24iaEEaWvp$m2GMcC~K}=y!aUA8BD@dEhoLm$c!lQ}DR8)(j z`GaM6RS(LV)2AhXGvWh>`wSXN;8QAtv{MIZ7{ z%O3eNvE(*BmHC5^GA>CB2u?j!c>^Lcj*Uo*2q+>b6`ISqee5yb`U{y?)wPmMLE09BrWY$!O=cvOfOZ z%ieOsWrPEDQ%FDCmIPd%;xIF|nsEE9_f5yWzcPFGH0BRYLPKTwvRncE8-@xeAb#J6 zzO>9Jc@3|B`tD_v^3~ZnETse6&o*oFmBPR64JKFVLroB~_}3~=1>fNaFt*BoKljkY zUqz`Bmr2bytTx{mo|^XNb_IG6v8xh)ag-ekGGONz%CaXsp5q9nbCoQp`U zXLYuLRvwI}b}2@)O9IshD^Uz32DcvtlppZfI(RiruqdG1hh)%(H=0av?osp3Xb=)Q z@5$ML;YmDmH>emy6N8w)5j5_;%$k~XRi)DQ^UfkrSII-q6-IjC&G;1(C_M5v++f*b zPh19Ocy~px6p}Wr?$J9|8Z^@LoUAE`mjnL2b!|=%`Z| z0$L0!aTZ?E`C0lCpYgF}uBW@X86P`^^d`8@t#DYQ*RK)NG46X4VNJ@ybX6l>n*(m) zcUXka$ns68upMK>qR|v8JvjJFR5H3JJSi{usE;2QUW-5?GwGKh6H|AnDMHC>U!P{(B8k2$G88Q z@5Q;!L1umg@!nw*4m7j z9+G}eW67Y6-TEC_zTiG8eH#XTK`YM5n&q|9xhw&+iI z#y>41r1Q3mEwi!DIbm6D<{3y-X-~Mn!vo6c>Dow0b0r+pa4wtHnMqu*_6}>7AZB{F z7dsr94gIFM0^;|S>29K#nKWZ+LcjH%OD;nh_0)Ot_0o2JU-AIJa~*`42HB7Z4bni? zC@Jjo%Ecr-^h!iib;h)NJOH+ZaDYhJA*o41MLOc9I*9ycjs4dh1m-LWl;q3lil2p1g$lq`(Jv9jC;a-|M?Qa< zCLZ;d2aW~pn)Ct*peO*ij(deLK@5jWZPXCwrBdmAPRSByp^2(sx-wjbtzJ|vn4m`- z>Cu*!{F1wY?%}~l+3*aYyL2h>^+|91iDh_C>acTu;s%S^V_0*Iw&zMD4|aQ#z7c0N z8H5tzlv|e>M(H7rtW)-aEoyNmu=B((E_?cSEelcUG?K9od)Bg&MRG_~aem_OdLod<#u^uEgLRmSTlZ zGR1{OF7k4&s%?oDP^Wnse4!bAt9x9XSJhoh;qabQ<<$)Z1rsAQ(c~J#OR-O zFdwwVG|OW_Tw+dF_K?XWKXX2CD&}X44qWDlhLRCAbXXII z#p&R<>m`)vP0(G0`M=e)3R+jD)%BLW{i@48`7g_KJC=%Ztz}?31we$wvJ{C0 zBp2~bmEpxT(zmuEr@Dv7gowaF_`T|31!2-4E#5%^&8FfFTYWm6$()*QYu{=!>wvqcvt0HuJZ;Xu!7+TqRhCiZH`$x)HRQ2!jCtxR z0GSgK-%x)@HFfDs1b+b|h&3wImx!sV390K53zl}3tsY&?rixh=M4s*dXe~-g^fZYG z9Re0-R6!WgS)848QY6(*Lv#xDyErmvnzkWC3UL65PZQ(TpRvorn@j1>$f?iKilK9u0C;`8~9v&CZ} z!^bSglS1iKkRW+XCkr=+iO5*neN36oG6NCV3C}v^6|tmp^wjkva!Ccwv#CUm;up@v za5F43?uql_urS3$NnB664nyNmU9AQK>@P{Q_5u-ErF&9K5=%zf^TUXgYHBFH&%4Sp zQix9eDVp4kI=AtN7wWL2IoyIi-60d$q;DjE(^YK-H|)n=4TaCCy17?UJz}o1HO9U- zw%SX?%ye%us)pOz&>Hsig@Iem9>a-+`6MD)00kh$L1HAwN55;C(XA#zK^SSJaY;pW zP4Eo(;926%I4oOEt&M}Y<5=as2cIg2mBp!{Wj4anavUW@ zF(ysjS2G#OuMQtTd#9MPfm9L?0nrN=tp>eW4m55UO=r5vE zbfOPe6{x=7RP{6N_@E;aV?Z^bSI3&h4V4F+Q_+J`25JUL5FqZ98gnv21M?_5bC5zi zKt|VLmWm8m9pzH>5Co0`)#xU1O&gW-SP;g+L5Evu$5EF=EKnTqGYm_uLFCBQ;vXqK z0M30LwZ#qZEWhW1>1TN~%Vi4VW*>AO<%<+f7m2w7*Onq|J>2`jBMl&+{GLx3lqXN7Vi% zLbq29ov++eL;dWUOz9YWt9(cCCY(`~R>k%&zP8N0c<0rYJ>?&kA+pe7_snzpBKHz^ zg3NnQP>DQ4J+93$iC@Gxbs1(FQ*j{tLPvohjEIZ~47ZhNsJc{!dL>5VZt51PGCc6m zB&2GNlfJ;^HOjN%r0R4)?{T9PwV1L1Cy3}E-Qz=i7ypZE>qH+y$wNIASHAJ4_z~O7 z%4ZWN_M7H42kj~vAepGj?ZJj{K9|K41Y|RQa-cEi^9LnDZI04|a=ya3 zpc+UoIFQ_NPpXqpp*8~rOXAMNS$>ZI;SA(TI89t9?iCQ&rp-tVsYl@DbB+v>V+*F0rerShWZ`Qaa4_JS<>U)4<=5zPkQ z85?`b_=>7ZQvkY4068qNl>}dcX3Y`pdqsrNYK(tv)6aPm$tH zJhiI^ZaOZ9o7*5?9D1&yxERQwtMNlwC>jAXPcgR_ zB7BGi7*85;kVVC4XrE%Y(iei4ajdqYc&DU|lo!+;3h!k}a>YSvpkUMz7jATDSm~Sy zU|Us4SD^nZ8Z8KFP-S3Ie^>G-$$eJV`#!f!%M1Of)(z7(##v9@f^OhJ8SO>|Bu~&C zP2mH>W*Ru?n)|3{(^M?woXQ82$hvbAn>c9Cgqo5sBevQof6cnyZ1CQzQyimLQ71m# zC?a&?O~>0)zjN6;vNYV_ITE}so|vP^;aw4xXa=}$92T7PcgCW3BHAr4DI>Nh7L-PC zgJpA+L&ft*CyzGf>WIdb%p|ee4>Yav`zk{uMgWkvK^h_!fWN2~PYlD7RA!Yt;pcpw z>ar7SPFo2u-e+ip6(|WxB^u&tt3z+Qa#b|uU%ss0PUH4Xy}nMqG<{<^_V!0#AV0?O2P;Mv=ADF#f3@es#irBVxmit zjzK}_)WX2|_L>MwvozS-_pLBt?o8clK2Ke0s)ro05o8<1dgIQraQC~ZvJh+iD=m3j zNLKGct8{Q=J_AnK+2<^yKK;?JE~}nFMp`JIXj+oYZj?xOB*{&LWxyAQB>|juK(R1H zNmR90@7y;JPiHh4_JhKDgvR_a%BZsmxxe9h=J?pjHQO`JX6z?;wo?>SYe1Jx(?k*3-FP3yR-#5Hu^xf{-_?5ZK%S3Rt(%KM4(vP4D%a9mdG ze6N)7c5>nnG8Wl&qR&`dmG_^TT+(6A6#TE3a4MRDaSn(?LFStb<`Ngff=1;$5l_wO z(C7k~N;ZEVkue0J$zy(law&M$@`7tFJ@kn9*Z=3^vD|p|KCiEcO`d0PDTo?84;sfi zZ`E(iIz(7iTfE1`mpL0JqY9i~w)*Q24ORYM{A(RJW#V%U%F)uIU{2 zF6lU~`TW-jiXW$=FrA`ROcMvxME&tHG-GEWiolfx2;Lpc?BL}%4S$n#J(IsI>r1Ni{qAWo!?1C`V! z&nr7vG!lK)z)H$i2a(@+C`c01d_+*d|Elu}($wUOl0-gF=@)s8^Z;)_kiU%pPT;=B z0(Jf0*%c_CkZf{5MXYF1?95G7&pa1#iq{+F#z4+|~^ zsz>syCPehJq+ME_%m2FKvc%>mJ@6lvab%S%C-s-u$6+ZQ0H96|7g9I3P7p)n#mQoL z74=ABClGvD?F#lrR~gQBxInmViySvyW5O7rFeazo;yw%6dk zr>^I7b`B6_R6u)Ns%VjG2Gy4Vk6fD0L8&xU9VfnO4KrTwvxlkds$A}0{_L_=495hK zPM66UqTFlqv;`!N+F7I?=aj30RaUj75+&)pgIh_R+Ik%Xs*I;3bl$U?5K_G0R<>w$ z9gZlG~PsFYw;36U5^GB`^jo4&mL_=Xwj%tUP3jCyt| zU7LxD^ObV~(3k^stnCD#H_70P*T!EjffkP}X`mwqf#yYzS(eb`HX>OKQerOgyG?>^ zG^=K6ST>kX=qVLX;oOO{I4sYtquQY*-J6k738LA+a~vt>)o~RDRUkbW3ucZXFq=d& zw-Obt$c~(SBkP-&gF8w8ACAN+hBZhYK!lLQ?>O0?|cMA{xEgBASva44@API>o)p_l;DAlU5fbd_l^I z2XANv=cP`h^{3OP(>w%6lj3#5#|5Yfa%4&YVlnz$ZGH~-ssm`np^0%g`m(^{Xt;HN zJ$@EEOaB^S7W$mj5@io$WLq~J+6I#eHCt+$20CD-w$w4rE}NuGE@6!}mwi{`5%JMf zqrc=ZzpA$`T&T-*+hwBG{%(g>0ONVw z#7B*TvbYkOrSyJ`(xMjcZ&mfd01GQ|*-R~)#EIJSO6^3QjhH1;^Pxcah#FOBh;=wv z+}Y&Bx4|ga1YqAnUrfzWZ)0neV~Felh+U7*?6>ycyqyf3!}4I2)t%tkV^J+3Ez==n znle%?%{)LeowV_|HVGgsNqp3j@DOiR1Q4^>_KgkcJ?CHHagsH0hiazSLK8d(Q3{)2#*x7_=5>JU`E2Tj z@BRH{RMOL2h(`854Y}axHyTo7{$Mq*hLhcpLT4g5=OoX_i2L9srgNEHUGMqVc5GUA zk!aMhk<^UirrVm687Eh35-bMaO8MoHZ(sK6^Oliuy6~r$z2`;C;=4ZSuyj;Q%IdH# zH!KdqnU6RvvgV!|TcM98Nz|X{n%hlS>45Vo%U5Jax;F-JO;^Q9wQnnNjm_-$9b*xU z>8Af~S%-uD=`t>+4B)t)s+cCZGl_?@^BezK?JcftL~t{;tiwuds2vBFQ|M4IJ~3%s zm=s%U(ZRCWKM1kXzT;pJQC8m~1I-T9FTiFzVu}B`xCOw3ZGq$^M;wiGtbi_2h*aOS zs)(mBzv*fs0r+325*;gr(=iKOpSDJQqBI;9Apcqs_V6`7o< zX6LVPAKV0_?4fU1W`2+HuIv$STLzK`&(9WUNh?wX@fjb@6danI8nB(T{w^wpVX++% zmZyx`1Qk;Nyl6-)_J`lT>>W2+M%Y9nZo0)E_PA>=bCNgRQ;p@e_{IHztVvuL^JD51 zIH|`B!<*!`_DS3>!umJRsHvJT>xL6An+|I_!|BfU7#1XPP+L89uH+Lwuq?OwOlcs9 zosu(2LbMpg5a+xUrnCT?Hi?py&C`f}%q_MA6qOFaaHkU_Z?IGPUGjv}JNG{2f1@T? zBbqBm=}Cu{xoEG1>6C7ox*?ZZCDMUU`I(avN!1w*xrc6uvIxZ}$bOh_NhbFRX zeKS{V_6CyH(e2pY#xxbRun@FMO6ZjY{6t<&A(K2-cqgvhM>v>l^}3tci6$-_%xUJ* zt1!CFb9P>Z=(C)Dbz7;Xi78YVD?1-VKr2I2m0VZvKn_i5Q)HowklH%Plf%O5l2j@- zi)AQYN!hgTD7+XxMghW<08%hSY(!-K*A)Cik5K#u-cyk`%oSqd^>iZ)!sx(PQz#;1 zVyjSs7j+_zfQOaXi3{Ureduz_UijH%-a*2<8Q<{uVSsiHi;C$aE{LtN>YgkPi>sRW z(M;C%G1mV-hqVXk_wPSbODW-;4>T0neN$pb?#oL*w+v;$NUjh3&@#~b!@qYKd-D+}y^7Ne~Srw=gVGb>xcWW^NHPq6o#R9KWM4y)vVCmdQ? zSD})Myo&PBde`>{KG(n;B0>k;XG!$x)CP;a@8I`pk5=B_C#>iVG-~uV0@3Hli75mq zHk4?0j2LCqWO7(naH}%Hay(2vnmcmfq1VQVbJSs?L0kT>v8I4>RR{BDTzXHtSPX|k zA_+KemprAdBx_Aooc#G$8;?sWhd$?CwZ>yyk|;)+rZzWaOsd?J)v1dC(Is~roH`)t z1Lq|T6hlEYaPG|q`t7m&T?ahE!JIyg&Wfl(^}%Ev1P)0hXNPhDy)w}URaLF(Dc`Z| zoqxFuAn>VYFMCUtwkfO*Chmz{HsWn!z3{@60A7)Ej-)^IV(DH1n0i#P&q z0;#c`6rg-&wP0*PF|Yby-BzAAzgQn&ez}vXYEucYomv&lOZbgt-UQPo$@?og_t8m%3qHLj zAx)}UtRWp9Un4D0Pu2daAR3l|BvkJheR?!hv{f2;=%6ZkbFQ^ML~y>~RbnXSf^&7C zY!El|kYDk|WgolZGDEaJa`|O6#R2~S{&ouv{mjjbzaiwZ>D`ltb6BFP=`xP1#O=B7 zleaZ(H0W%411G7%`;WDO)rWZ7hKB`QS8xcWmV=OF*IF6ek80{c%0jNC$T$_p9`Yw*#ikb50aow}sXq!qS2>((Ohr9M*)`r)K;f{NC5; zjvE6p9oBwU&1`=5c}6|)2&(F+5_)Cd4G%8az#RVi{+BKjlRDPHdL|5Z+EcnyQISRN z5=;cqk_Y7?xNpmC8!rn0sg( zMqHIRYtHE@^zOUoUwbty!79h6wv|`$63JOMtw+S=5I0f1 znLR|jzL=}TR1|x>d9wcrs!MU8WtxShbwUw_aW*LXHB98GKWVT$sox4*~I^(lf>RcYU)QK!QyL!?qCX0wZC%V z{6_2s)HkZxSO+|KqP>bgqye$6+lVt9)}|3>$S!Z7?mgq_I2>xi-WMHDji_oPM6;jU z?DGt_xN(A`HF`!{h1hdYX|#IM<(5Tv??SSO6vqS*+wqEQ18#sLSDz-myNDmfqo23AJea+Q)^KqkG((Dir zpElA=#9Emhd=msz`I$y>Fno|QiTQ!*8&@R(^!21>bG$ovQn4QfByYzBhg-Rb?HkGh zt?}#Nb4m&RqD$5eICFZkIn*(+1e)wvKB*p7Jj*`Pa4?Co!e|2C%SE z-IAhCZ7*xmS-G?MN#eZx6$bzg-OIC-Da2N0o;>$r%N$Oelo~F;fij20P1RdrzEUt; zl{(j$&}S2hS$s!vjj~cS~EeZ0LE zgb9*KIL6?@jluJ#o2Md-MRykAyfwQ3=To-}3%{dP6IB8Jp-XCx!25O@#@%z%-SuQX z6HK@oYK8tvx&Dc{q_JgUCNA^)gEDtGi^MW*>C6^|r*t${YGj?>9EO?5f?roF^e07F zm>O<_A};E^kKT@z+e7%ZAq`Q|WR#AqCx%8vSAo3XQ;-YS^>*9?^b`5<|X zJEvW+jK=)K{yB!+5En+vbjk`=jyYdaO%SM$rXVpS`{(x@Q?(!RNMY+Z1|+9VD)YZ8 zo+J9t%pvm)Uw+wTAAR~V`dJrTVOc!n$!eXO>5y}x@-YtUh&T)AKBKKYb(4FV5z}lE zn(j%KOAs0T0(VT4&{Wr&YVMPMF+qLkRqii}vMeR1>Th~EQt0_lT_!TcVy8U|Z$jdQ zlUB(igd5R1_D~h0z+IHllel$iaS}sMm(Mv%MiutUUx9w=+(2)(M>g#>GvR_^<@aUS zd(elgvZs7bu8@=R7kx*WkUHk3lQeh19oMzufOl0p07c7PmV>`!g+U6HIbjpQzZ3*; zzQE)h4R%|5JcpV~r8I-JH97s-GLkiw5!ITIK&NUAF7Z^wl$wbM+KHY#-!`k5hJ!v2 z0W68vbUTHwoeq+-LOAUY+Y%{o-MuqB^3=e^T)v9W0siyo7yr^kofK6t--(B$lN0-3 zkXNuR8>2zHRF3Fc;B(A%s_?j1A}k|RwM>h`L^_V!_?h3PPtT!ne=rL&%9T{k`@^k- z==9p>YeZxxe{PxI7>&V&Nh*zieOlH#{@1b#k@T}U-}c;P;&+YQHgl_lvx`ubaMBvY zES%B4bw&+QuV{dIkyqPaL{E9K#a z%#es+wLb^rd+Vo{Q7$2w&6SJD#Jp8K%W~+7Nu@1Zl{liR=a8%*GI}Z`Q|+HkRO>hd zJ9M&C7U;tv3aFM?N%4wL<*OrnHb)r(ezUXBZ|blDl8EVGwfOg&PF{CV6*%{r6Om2| z7dVm9yivZBMf-N`D#_}g)07=FE&E2LLB#Ef$Q0ZhmYvvy<{c=hV}o-~Q9ZL8V}OGq!AuHZ(3+j3;1 zF7I)d9&(_Qu#K7siGc+W0{iUNlJ_m5`q@v()p4g6Vp}{{j*K+)b&}B>1yWMl0~ft5#G0IqvdN#U>J#T>ZtxhgAdvPblys-9A%Sb@ zXDLR?*h_Sftfk|RcQ^2YCYK-G2K5&$ELx^z=D5Y6Q%$F0nR|YA8RaZsIhWy~^Z=oB zIwYq2F&ZbT0ogn~gH@6UXX>;cU8a4iCSrut0sE-`@%g@+0x;zgT`&f{nL7Zy7ub!@hI8b1oHnpDE$qVTqwcSVM!MY2#qJ zZ{|zuYCtm!u+X_m9&t#P2y3$N$IR!A^28iWKT^&%+XpCcf1moJ%ii()Wo>58Z6IJK z@XEEtOwfdksGV6h$(ylnQcYmN!goQi^3lXSM@|eHB^iD=r$mUm;Xlbor?kRb5;JL zxX%}Z6g1`%1|+@eNG_ud^JS#5A{P^zVNVF0#$-zW5lrVrH50XdDuo>UTUA; za0G2;{_--tULf{&KW5o;4wjjp1lDj$b66EV$|h9#t*%D4mL$|s-GaJaDidW=t3qy& zD@bHouZ*)p&~bp-exP@oU-nStDdXnV#YnOw@vNku<{P)rZldB4cpmr-7jD~J9MdL! z9>UN?72{myTz77?@l=+d~d?j%8ELDoM+e0U%3ING#^DlQVM%&L|&RXCi0US_5`QF0@WGnJBXos@{lXbIyga$aeJ@F4Qj9)&5T2FAv9YWq%3xsp-y8c?fv4MPfAbjo#> ziF)XBp{$po{`bqES7$zF8JL0s#C`v4nNKeLbc0n!(D^**GtPo%Q2|rdm@+lKV+Wun zB<37LKKr$Ie#^2?y?L2_!?$KB@MHP6$=riwXxP3!IK>(#=+14;zQ0kS^UjX0vhB0_ zw>Za1@)T#y2ul<;WC$CPO{iY8eIg^I+~;LsT7CLr%RchuWf48QpV=XL5{l_~PO|3Q zpo!P`F69{JD5WmYHW3hJPEmM`DxqAVJ+{=@lHec{h!pU%X6sLf!e=jF9w8IV-oOr< zFrG`v-_TP#C?$W0Pu-B%HrKZ9W8Ae_y%h`l)*V%s2&hw_!ixkcaJ7{P&%s$rxx{nI z77hImM~fXTC*v0Ds`AB}049lsEn=>bwB)>0;T=(xU(Zu*Hj(nSWR@usC3aAM$@F0wxh|dEd+Ja(; zZq#u&Vo@aieaDE!C$&xr>dumepZ@h_5r6-HT4CgmZqzs{OM$Cr)F@+b8f7MRU@BgX z{=rE#5dS)Rxp?hI4i!MbzTJ8=}`m#x8a>2PYNsKFTB#1p7+m2N^L8XerKqaRKsX@OKXL;v&e7Z^u zHUv?cbj^<2qAzN3RmORtVyaP2Qbm@C!;X`1N$cEMC>vOv3zq7(7N5m&_-w9^cXQoL zMG!z#Iy}y+qT%_Vu3=F#N6rx4_9XBUN&y_DJFZITTR4oHDq@o*pWrlIPhiV|Zt2d* z;jmJCWkjNaC9sg-sdUNX!kdyn6JPY*62z9o zFo23aYJz+ZpNc0bn}oF-oa&*-1>BBFZ}WRk{|bOt`!k_O!id%|1((6_^s^8npjxI? zi@fw0O7uJm(rVF-(-=PGuX`+E3nqWuLZ!YL%aL`DLo8PT-OT z_v7HFa>E|68i}E^4oB?KS-687sC0YEI?jY{qbDJ4L~#&LaZsc3XdAeL5@Eqvp6Xwt znET$pT_zMzZ*2nTnanZf%C~AJ9uW;mSd#L1WkurSAWUVGMqkz8a(4>ykt; zd56MMfJkleAz6>O*s?R8y-b}E%GLq&dDPrU=a_g<>dGB+SguU*zHm}R0k#?4RGI|m zzh+qiox5Wpz3ke{9{TZR$`_4&z^;3)(`bi2LPjRP5kV+NJTdE84_kKD#g~D@eeyXp zYzjQ7l*pn}BBy%OrNIVjd>!Wk z(C`j6JcI~})HdLhkCc+Y;rdBzJWnIXSBy2ujxA@ic_o(wR_~nWEDj4j5`x^R(OGSj z3FAr3r6A^NEAmu(D-Z;_W+|`9jT&kY?ADM+|5j%U7ZX=L=S6b#oNs4J<#MZii^b4o z8`Z+9B%5)g1>LhmQk@>3Ac_AGrP}q#BGqom^6WwD4q6|K0}`yNkD!EAG9qUJF1whh znxEWClt@t%AXd<>I;qbb8i%L|I(2Y1?V7ou-iM=fp7>iH#7f-6D^GD%NoYsF`oalK z>$7vQB!ki};VujgTdHlVex_~Ya8HiiW}5tAd~{uDW&ei*g;4s?uN|5?Bkqq!io+5r zOJgO}l51z0HXsiZeM<*`=!3I^Qsr6w)wlo5GNV9Asi>f(?0G75taEp!nBVB;crr+>PpCb*RE{lpQ+kJr%Aq%7U0h`-`xk3U}F$ zI&I5n%cm+rnyVqPJhTZtieI=Yo1vL}QcEON zjCK`0(UTkIHQW{&goYdC0$0qYswQfJYQ(>pRujx=kU!dGyo1mkxT`v!;P2k&|LC&M zJa3seOZ>%k`dbr#FEeWlyDx4vYl40rf8BX&q!kK;>&MMVR1{-Jj*8#M9 ztO+8TgN*Z(SQB2NN#p6?=NMBFLE3uOVfHC=cWU7=x+*L2vIhGbe)=FMcub$sjD zqbKaZa4a^RCtv8?!y|WrlPZBBPKRT1mAJxYPM(SZCNzB;F0W{EzO@LeQU!3lQ2?2W z!Bv9GRqDXN9BKZFFvWrG>K#C=1du2F^RmWAg9R(A?-vH7wJ$3F66RDJkBw}gL7Lxl6Lx`ZU(Qih=RD;K$RRZMc3`UU^c36;iqFr}opoML zVli|FZdA2VV9}X|DvxP!;mADmn|Vl{qWsJ~{pwhyiRMnpQ6!H%z+T+ZlLNvpnw+O% z&cXDoB1T9aTbju62@8|Kbg*9PiES#PotJ0Tli5M4{IPVbO)z;tE6ZnkjUiz9h;Fb* z#Az?0kxp*rxaK0ZGRO($QNT&*sEeFt?dML+#l>));y%vQzxq6CF5F)kWN@+ED(~Nx z%b^nCa<`vRM3$eOC$m=$E`V+dbSFeZItIgjwzk3)I7*H{&aXNNCE@ftc?hFTMwjQY zG9YAjM5aXoIlN+q3Aurw5&e)&r;y^K6GG@%rSJ@h_wK4(+T<}tOz zWh1q0kpI$uZ5yV$g_EUrIh5%o4k#n9yza8pGftzqn(o?LJp0Pa(0yG`E@N&{f5e8A zhL^8DhM2SfpE%0_Y_r)OGLJ&C!eJ>|ESpJih)$8xiqGTO0DgDoGhHg0 zoFXYhOeKIptZ?G1)ftc;TvMUD{HD^$ad4;-NUBpdY8G(pujWid1UMH>Gx;usTyg+R zq#HS-NRuecUzxx{o+9a|V{by~u9CwBZi|LeT@w_FsnkL$C*;)wE<<0EkJSRU@myIx zbUCc~dQOj$0}`iJWX3eHa7Jc_x0|FK>m(F6AxSid4To5)r-mq#S6Z&neXuQqGdR8` zv!uVsSfThiD>CA+)Ig#698=}= z5<5T);ef7lImC%OTBeZFj-j^R$0Op7Oh@3IHKIS|ddpIB{GCsZ^|q`heP|g9MN83A z!dWF8x>R*lQ|lcYo?FM09(oLg^XHVn$-tVT+g#P?Kos4a{J3R*oCQWx_e4c{#dVgc zNP0aN&?&*$iky)Z91>c98wp z*W_vJ2xRGemR-X?6mhmg^E2qCbG8(PvRr@9c6s(DHe^q^?@b{gU#ZlC@KuCeJ-cQ< zVCBFE?fIEEodB3kVw>@l{utcHpJ~B9?_g|1B`LVA zWxK9Og$*KWwGFdM?aO&pW?525pL}Zl=-#SAWBy{RZ?n~w5MZ{b^B-CyRjD9fR;hHk zCYWRs}1 z*_Q63_A*gV=>>UiTjS1i0+tqG!Esv7&nh551tA##Af<9rwJ29*{YcU!Oy5!ZYCZu_{j+mGIAWV!T)U(8g zR2d?BY95L$ixHSgEmio=jkbmel9Ce2C#85*p;F~hP|Tk!B9K_1%?I>%!j=N9`7@X) zl|xM+UAAt1)A5j2vhlJ`vU=Lkfu8+Sk=m#l^m)Swye1fKc{onZ?QfcpHM_}WFqmZ$ zNgL93$2m;JRrgFFjBd~*PO z9NeZU$0Wott;bpF`b@p~zGf`7Jk88TY-nbtNb#XBEz=3EVbSB>bKVIb#8XV&1V4_x z0w%~hBKJTaej}zX3n}-v9HPM@6oWLvqI4cUOJ^4c;gWw8Tg-ygNYy)+V7Nj~TevobMVC47a$UqZEl}+s&T-q;)|Bi#^%Dfj0#)~=9d$uXKx%u*A8< z1&}Q0ULWW@Qr=n8Z4l#=GBUU9i)=Vci^qY#TSN?^yy-0`}B1tzB1igO-% zF5Wd4zm!XeUZeI6$qE$E?m}u!8e9_LI$ETJ1;`N*at?4<;^oTtWntJs*?eDjS?b!M z#l(nnH|OwF31D@ylIZp6&EN?`=Q$4ZZ{{d@ZitI1kYW)_i<9j%pfQ(ls;Y2>MEI1@ zi8UK{)+0Z!>AXU-c1*603v0p{j7+(#tb@c;u6!$xNxCb56MWnqY^g1GR=&~*E_?Ps ze%K)qaz&lr*cKj8=fjWzD*#NlFpFQ5F~pf0shG7|?g&Y6a)~y$6*0m@NfjPqD@<$@@(stVB=6)XqP& zHmqi83)jpsVeHmAoiMp!#SW-hQ>V;X;pCL|a`#OYv)mD>>jPtvCjDRMeqmYbhFRGW zw?5;_%aB)#L+uB$4p#b6WI17q2*ASlpL{u;IUzWWm>%xO&=l|m}5u&yy zXkB~m+-p^{JOkDL2vS+BYRoh5l^6`Z7g0%NWUQtW1kbecd(^m3L~N-*C`N+?;7$T%&_ z09HwX=!rDR$OJJF40Fd71Id|OVuwvNR8=eUlH;MyT58Pc4+z#wI)aG6*TxGF9CVOC zo*g5SbP}8Y?7v#}x~xx}zU)(3IuP;uOkfmI)=6g!z6vO{9c8+ZVSwu z!%}2gbpcH7BQiqZu;+* z318hXv6V-sgITjWHH2Ux>INYW4a2(s21&KmLzIHVXi_9s&qI9sUpus^qvSdlm>j*9 z9MBxk%`sJMS`8=!z(f=^B8owFM_7Z$kb*69krSGX2W@~J+M^@49%Mkvft3eCCs4=n3Z zBt6Nd60LAXn>tsbEl;u}v7mC614hQ+6XIT1Fee9)6 z(?H??@FIF>T8B*xS5m%}vJ&Wn$X_D!(9?IyPFVAA0i+ z#RI1Y1ggr-x!G-b$#S#B4gx$kyCWfRE7U>qSo>ddEMjA;F?Vd!0F(ux;IMFN=ESr@ z_=ADsHaG!p_WjFFyyUXFs@#}T={U+HnY2pQEfwsI7X;ikf z6vN-@RJ(jmQ6Zv+N4C77K#x$BHenb7?sOUqoj%-I&Z`Rb;%aH0$meNllUS+a3Bn}C zMO9zPN%8YU@80=>Wlwp{GK~3h)~C$gh-07dj*uHCo9icqMn{J0j(xn3$)@LAyJi=ZbUt)0iO_u*YpWbf_CCxFO#y( z#BEMyo)ey%?r}-bsJy-tq=ENFie*h%^G@!WWdZ~s5igVGVjock9z$m zAh?^ZBzlUSsCB&KGw5dyVqG57Vmg#d zlO%RfVs04rlT)q_Q1V;JDd3IY^$un9=49ixcxd$z@ze>ISQd8YJx(}hnKQ7Z)+DVS zT-7D6)|Pf@%DzqSzJ7G|Q}v_C-z^;u^`xQw<0GVlhs8uDzD z%{=uOj+mW8Wpp&$Ai+HRxy$4$=e>Fvn$S5fT=ulDEKA|&mjDG07}2p}i=*f!?~283 zL37}w?VZTt)=&D)Lu>7cXl2})2ulTAzgq`n>EehSif`e&dopL`Q53*csnTkm?`(mD zVg9e9T5Qq^ooezB?eoltytpcayqgH2t+SS$@WN$WSOIe4AzY7CF2C=Xd%$^Com~z9 zgYTt^1@99FHSYV>LxYj^m53B^cHY4|yCWx@z0AW>*J(rrf@>Uf5x_*jJ^r)Awv}ww zpP1$D9N3U^{0@Y);aLDkz*zAtgSp}t8*2;_BMhZ;p=n@^2c;mfVL_=3_BBaMW%w1J zNy;hxl={_|3#Z-AczS^PO|G^KA>6saEsC2UR?gDSlFOZ}>|au$4uHy{$we(dc;8rT zY~99OS?WY$MuBmeGPymS+&f@VDNIYY`l^jlQcuySG?2vE5N=yGGIc%kzid>;4|jtx z2LsZmjFw3`?voE&X7~}=mh98J(z$QEj0ierHBX0CNuN2%d5Z9HSVVsQzqal_X8W=% z1Nfb!=G?57Nlu{_%=Kd~F+pBl5L*AV^+#*AHvepEM6*GGQ2N%CH4#veS5!dchx~?@ z_vIDB*)%17LnNkHl#C=ntS~IsY}v0}$LDa*d5^B^pJ(^;Jm34izu)URuk$?4<2=r+ zB~3kUx^GQ7RXDcd4Y^VF2RVQQR zu#p6qO~Cj^l?l$##q>Mmzyemg)unrYiU_p?T|XJtp*2~=C&601DxH&am|5p?g^WTH zq#8~0&i2$mN;1jnlqGTf}^JRY{>^1wudYd=+s6!DdPm=8*5q| zm@+~|-@5r(Eb|aq8-C{XW>H7N-r4Scb}ORTk)zX4GUh znc&6;frgsyQ@DPF_boA9!&huwx2on7z#tp2u#gj^~^j*V7(4ZRIZ0S?G~@abu0Q?P2@Fsa0+Kd|N_&#tLgliCR;zJ3$Q zV>Mz!*srSL4A!h1Oc+IHiVEu;m#mp+^<+XZpt(vVj zgOI1Gq(B74hR~id$Wcb)q1OvTAC>!NjFRuJx8fkzB5VNX)su*Eadt26lJ2X1-NYJ+&s72tIb#rF%it#joT2uEx8(}7$@zx1BHxPXDP|Ny zP#zYY23Y{Z&nTJ+(3%H~nPZ-Qag5?w*)^`;AnxFrOv#&GxTf?4P^AWI_+Le%V&?dF zurMxy{}uWjcj1~=I6savAs)iXvO8L_7^`9}l?W0XxhanP)>F1ec+;*^xi52iI&hha zy=3^g+5G$xn>df9a-+toyl7P zV>3f-Y?bF$vV|m>c9L28@C(M5m*g)Y4i+x`1BD|Bo+*54F)tHTE%114-UYhkQT5RV z9QA-X*v?q!6-O5q*22+@xfyIc4yz-9ZwrzygAC>s7@nz`r4qI@JdSQX4Yl0nHxrBH z^$=)?J$XWVS|I4;zRxbr4GG~^>LO!m$seYi@!`+Dd(9`#UGu4o&%bC*EU>pfvgYgw zJaFFjR*_Qhq@2B0h}F1N4l+RZ>aUH`@pkcxZ|EJ{@*p~ygcv7!g_OWZwP$j!V0Tn> zZIrT0cL*V^B2WW^4(MQdy7^78H_`y2W)8L*psbmxI68B74)0PreZ>4+Oe)tYeLAK@ zvZ8>!th#V8UR6!lpsLo-3SL%IsHJNL-;EdM_0|C71ejQ%17j9Hi!vu?tpHS3lwhzZ zwjerV11sq%4VemzA*!rn24l+WPH#R`%b3G$tq7T{$0#Bx+ci)z&!TiV8Hx;Nh_aqa zEz>?76^O3PVa9BN{`ll2`|HCo&RaN$6hY%*f0;A3v9YF@3A-e-+ZZCC5dalC7OKS; z;Dyn8*ESu_#cP94F zb{S1Qp^ZM;)&Sd(VM!GB!y(Twu5GCuv-nh~M;y1y?SG;sa|*Bb`vaFgo`lmdbN zR%G$t1`AfqoIbEu*$Z@8`SR8n6C*t$sFb}0Y&TD*3NI+0dsu>Q)}%XGAtMFPDhG&D zCZKk70S($HG&!lZDbrhMbZ@k-_;;>9Ti6%u&w(L~1uuXR{Omh=QbMGet3U-PX>$;C zm;)GAQKZZ*Do;!addC(@60>tM z%;iYz)Y*oqY7Iv4 zN`xElWfdvvYJ;yFfsRT4TU?0|nZ69z8@SHUAjifFD_J3-7E{GYZFxzt^e2wt%Cn?q znnIw8$!Lmr9F4Nltq_1KQHUSOwEj(2mnULXROJmFB%@T`xI~;GMBmbzkOSGAQFn}h z3cr)@**H~7hYyBT(bb$?48)K=e=C2-gD)LakK7ok8Z0M|`oSzgo5}`jfn~CLz-hK~ zN?x>HjB&iPzS_4XGS;)WGT6_LvO<9mHKDQ>K!;{CXsZ3f&j`tqDrnJ3pO`5Jbvba+3Icm+Y z6du1jLpkNshpqXgZ>$o9V=ChL$p(tK!KkP1Wd)Ml&}Q&q0Nm@GkV8$+}yP@LN>v5UbOsV-Hp zs`j(tc>(?*0p6(}B-9sg%f>60Dsa2A$gSz^b1UO#iQ#QaenjK*Sp6AS`x?-+w!>7a zI&|4BYt6E3r`bld%pl!pHQLMusMwo8V8}xkvj7(6l<2$oC>c;Qi&7BH;L6mra1=*5 z-=c)Nd;zA)mS`uTA71mkL)UbN zE9;n1>MZ#n^>kTv))i!vzdYL(coyw&GvthT0i};hhIk@a;0bxERu;2WLg~n5SN1N~ z;m5TG(8vbkF_nfIY73B|RR@kexJ-^iexG-jtpisdcgvb_*3W9lmenFaE0*qujNm7z}+tda6X$l&4a0jr8WxIlOaQa7T_^BPk3AW2iOZE`O z^s(2jsdd<$Ke{FZ1W5kzBCb;vu(Azb=%j`xzNzPr{F9B52G_38gW7_${j7cYl3N{#uQckPrxCz`wZJ zAoFYqhou0yX_mMG6Blk?Sg96`T)HDMWU%1Mh36g?xt7h8WDqM*o=~K%QV25~_{+9d_j5swLsXG!%eP1NmmMh(PH@)(JfIcvrZ8j|yt$8D2H zgzNJmW9UTX0GHg5Pi|>ig22nFIMLV^uw<0GAJ^S^%Vb-ivM};QE${HNwgvHjO96@V zT(>{wk|FEeQwTNk!ZZn(l1nmTuO5FaL)D?MPT#|SxG58)7jp*rk^%Hv%`fB}@5o5U z)teBKt9&1$*`Sqz5;lK48lSf5d@7nT7XBA}Tk=PoRokg8p%i!po-YH7?r6g8VkN`0 zF?J3c_ou;23{&?-R(MPI^Z0pWwv$Mu4H{mwGbim9f@245K?JilFs7sxeJ&=nv+**Z7(1a-oQho0DWep+KF2%sr@s1w{WwS&YpatDfH^*{HQ47}Ec05Lh=jeU; zTv9z)GiM%HQ`>qz6o*z&&|>eLoT|y&FfvSN6=dY-JYc7^1;Om1+f^JU-^HhLSB1dL zv`R5&CZ3CPwc6gq3kB(ay)#<|1e6sx0CckrcxMcp`{{`=8S<@+xR$GtqWV;{3s3pd zOV`xImw95sWEI04JeDW*cR#l#y=Bd~0+H>x^555tFvO=IgY{p6(^c1>5zq6joC~q( zq4Q}ORsuVJ2{M-iXcGxVMOoq{B@&9$wIJtzGvgUHC$nW$SC2tU2o%jEij-E5 zN_xnkF9vwoG;KLN9lO5Sr3}Wao|LR#3>l!^313QEkQBH~@hlZ{uiBY>3SUw#tR*1H zFSsdv-+T=YYO@cCI=1?<#5Ki#k;$S@!1Rc~oww~`t&enWih%BnTh=T!G)9LT+)@|{ zN=b(ca&3vemoDkaBx1=UXZl`1#OdT$j4;EQ)AG?QTniDwZ};JuF<2bwHrfn&$ops= zyaJBr@nU+es^%Y#w*#YDGh&MIENnk_SiBY5)^C6MiZxUA_qD%z&6EUPD@KL{VEpOtHk<`7VhR zl#BKp8of13CysZ(BXb8ThmxmOrK;dfyjP!44zWVa*l?a_H7bwU9 zHa)4SHR6yf2R)xwTv!GfqQ|rHZ^Blm9Br=*h$m^ve=sBb~ zOxxp8_s2tL?&09RZ)q;xQr@1#BklhL$i;}W-+P^`K-XdB+QEzY%SpKLV0=~4HG;wv zez9~aWj{z zbVjcvm=tsgE+cc-#!bm_R7pL<|4Kj0If8PX$*2`ov&v_#6h>}6%BYN_AhZ<36wnF} zZG-wgil6iI)CTHF3z+9&B^9TXN5$4`oKbN^+_d;>?)l6gIiy{`O`>FPhd8z8`zv!K z^9v0`ltn&}*Sqb-Yep3QEBCx|&3iL+xKX-%+dr>)FeCBb`?SOO@aNau^O7|kGc^qa z=Vb{K?g_OTBqFtB{ZtJtpIji;vM#1JUQcBgA(#wSZX92rGRpC%TAz^Ne+7Nhn`5Nl ziF{Z$sVeeHtaZQ)dew#?8jI4ph?i&0_!f%)1nKpgVwfPdOp+2}CZ>nY5Qni?98}%~ zC}ACnewV5! zovNo(j^Us?)Ta)T+c+;znK7OG&`td#Ge|)>>qDKV733O8qORcxD2ybK3II;nQvD`X zQKP(*2gg%r>N-wozp5x`NYgtNAxdiHQ8f8byc@-+m{a_$_B+c!`A7e+d~KWu*0tK9 zltq(%_6mQ>=j3v8mDzq&aJ3Y;7>lN9N8^B&r^fjQqpE;c(6jpm zYl$PQAKzc;)eP~T!`3?WQrcC-B zUtCi&vD=?rbN@qYMxW;W4A%a`*F2iq8%0C+Ag{f89x4x3W!$R9*m|B+?^91f?$Y%9FZwLY+(;>p2**DI-@V4zy!TkBJ z*%}^Kg=nqcj=?4AB%<5vg%Qt${dI!#4$A@@tTWK3jFy&u^GHAf6wpmM4EF? z)Xk&O9wq%co)S+$W_fcQ2>TSaWiK<b?Xj(vO{m~|zU6yH9!95_i7u-Zcr@38^X(hewumGFy8VGtFpU z%Pim7Wv|dRW?!;qE%3^){Th-4G4Zo^=k-I892K5I^`Rh2^3+-F1-Xd=;dv?L)sXV^(j4jN*^TMIzI{VeJ$voJYgQVdzQC zK$($9S{$BHC|%*2EN9kgo6#rGX1v;_jIfeMrxSW7M)mERIozOFklB zKo}(lCqCy5xy2Q_Rn`lf8!{vPIe=na(A?+}+f=BLD?v1+eIDb*8zK@Sz=T0Cqdvc7 zC$MV!QYCXdJK#rxP#&K)5P*Dt&#`A>T8x@(4&Q24fdNgWt1WBWsl-ubJ=vl>+?LK} z)<@27h3A!{4eM$Gs6}CN(%K%(E4Bc~kwSIW|F2#CvumDrSLV;J2~a1E%G)fZBWzQ{$(dkcjD25x6I6I|% zfaq`#wuIJYwC5vL5;EWMciMU`|5eha11zTBbDzT2(+QXzzj=1mHQ{V$)JOr{$-hvz za~vA^xe9l)wf#`p#inde!;uh!RPvXb(avw($$D7OsEYhcuj-Hi22O>yGaoB=*Xe5> zci5U(w)L~LnH=Q{Wzb}F*=4jD{Xn&x`LHAfH^e%CbCTcXKnDTwFsAsQ1??5LduD># zKUU)mF0S(3_+k)&(;rwCqOcj&D-iagb5~1RLY2gFqG!pRfiUDv?PX@ zhW5=)_$go6ZK>@=j#x)>OHUAqW*JI6J~&sKM`ZX^?dGYrBfdy($)7StoxT=uxb5P3||$eOko`livXLS zxyQE0EFrQz7{PY3^&oYr%Qe;9{qB8hqMHJJd9RQQ_t0Tb#cn}j*fh-`OZ~TagEMm`TL7wxr=lSSzNTBXrFI)4{=hjrloT&78U8DargS9{K%$neK zTBf%>vgZEXYwp{ux%a@DqFx)mYMIJ1VsJ}chFc9t!D?~TIk#tbKi^t-Se{^30!mFm z`Yd!?uAD5JGi<3UF;HQPkMHDfA&&O+F(U0(Go7~!1j|^5>M^Bv?1JZ0TdW!PLFnh;oYIWtsb{BD<3uAEp433N zDyjqLAKXbl*9)VX$A2HrL=9H%%&d@cm)b9KmYOqav!7|g!;RZffqIqP^mMYR5Y;Nv z^?jM~uxvKrjIfb&TNTh4yUJw@f34gThf#hO&Nw%`EWC0u6Th`vSD&G5zmichD)2Tc6J5b)e&?6h zye#AD|5$V1tJmab5&t`I$eOog@TZ8$2nn^dglcI#VT18#3O;1?dojeCswXuun^rME zma=CjrNHMEzLm|d@rO29L$8flw+-4_Du^c!1-FhFVix&vvtVd;A+#!Z)8!N8RIg?n zxFc-ZULl6Ko&tt_&_npnWSsdHZ9I|4rjmGp5%_L|yk%YWm|^mqcR4Bc!#$Zl#!)Ju z2(M30q%%aHnj11x3Y+7#H3yowWd0@0i-B$qQBh6+8Qzv}Cz!2}x=@iUG8Hqu2*g8y zO{zPVcXYS;s*Lhxw(8_7*&g5&$=BU`*PI5cY+8RAqgF7Up~kU(-sts7h~+cN@3i|! zhKSlN<1{)s+mim{J5#XP?znlV9uMzBwBPV2Hom=Q;#xZ;u;F>8mA=hr@00k@_+J3j zRz${>!T{*oKwlQLM9 zXOR*P0i~OEbafO;x4WFmP^zt?f3HoB{hwR@%a?z9&8xq%CJHFfeQ(BxGmswkXWaV1 zHJwd5^Z?y;Ata0^69gL)>f(<1Yz$VvQ8wY^23jXhW9Ar!#Xkj~yAE%qIvG^|b*PM4 zr@Acz@WL4vHn5}5e{$yHeid@G@u?ONeUTPvoDcTiJBHb?7r8(6LuG|0dO^zf}k z5@ovQUNOzQIV?G$fpRn;Nh!*C0FEVrRjUHxOER^72C-Ltf!H_Hi7AOcWkZ*0o4wgS z1Iq6*T3v|Z5Fb`ZSPim_X{y@DCdY<7()M&2igIM$y}L{XA8o_^ZUtYs(KSN^zyQNp zScThTx!ZIouM=GryvTF4C&yq~^QT(yDY}Rs0qbmy*v&gr1m37#cUiQ_J9j3G3=~}- zBwNuVcgyf}+fg?8$M*Y8IAEEA_JPd^c!Y6DrkuW66DGysVGvvKpDauf7EZ68K=~Ph zMh(Kd$Rt{tT=%9jbRUUfLS>)?&;Me!l(QC3aW|a&*}5$#$?GLOYEKaFsVzJ-)cnmc zHJi$R@jf7K=X`F>D_^@N62lE&T~i-v0uU*|JdIKFNF&^E(H*Z@Gc5-n{CLJWuUk_p z!_%1w2S+16i;->7#%M&+J}U!!72xyKD2wB)wateBIl1rIi4RuGO9lToc@n#bHVk_8 z>;yXnyfwJX;7v>>z3|7AEu5UEQ=P8_HT9}u4kY!f{-!)7amMTnFmXvfGLcB#2AD18 zgBQt2RgzeQ0iCp6lY(f+#*xMAo>SdP^*0a-e+qq}9Ug|dTvgk002fvXdy9`&&yj(a zC4`wOY$Br=GK46ney++voj@}xv?-ezZ*C)ov>@P3&0kCv9_EJMG^&%zD;c~YW{4-{ zIx_)ZB_MFJzf|6w#R`Dry3Z4m_g9q&>FqpzAxyi2($@Z9~!tLLS)|+?X15TD))5f`zJQqHN0wcQbNyPoqwXa`uUj~W; zkOUnx0-}Gb_Br)A52KQzj9&G}Yo7D+H7S%atR)Q$EhoNGYc28evbd|~9Y3W-Ilx>hc-FHC zu8_QHsA?za$K|($*z+_?t`@wbv%YI*GC=74fMxyg`f{RVMO z<=io{v#m*$d*e@`{`( z`IP9(W#_wW>WC(gX&+i5yeg_u69o~#_%XPk-DXNjfW+~yT zq-}88y=yARX;_ic=u^J4rXUD-@0uLo3fJV3SlqVIR`GN2Ed5B{aOj$`DsN`)EpdTH ztKo-l3eT})tclR zgoGN8m9Og5Z0-AyL!O-*93RLHA zR1IBQ(1e7Qi_bkQ;u+rudg8R_bCnE%$t??pdljNgvuVL}xWY3r-@{cQ6rphG4)RS_ z@9=zQN9cZL=v&+>9$!~unxXMckZc^9s{SXAg z3`ZN*pfV^?QVA%q)f!p9ciqmFQjO**LPA$AjuxZuSvycYDgHHY)ScfFk#w4SaP_kMHZDzf=O$cUg1|&DPs1|Lk7(V_~8TLFfGz&^nocW;e7qhh=RQcClXK(Biq;7xdkDita3m%2jw9E6=f~DO``ejG{4-$;mh?76 zK-!p=gDa?2Y>`lWF}WUInE$dg+xIPNQ|lxKE84>M)LOqGJ)3t%epDpSeIb9oEkm99s6=2)q_Dz8gZD19Iv<=fQ+nMD$DHqFKYKu_vCK=wV zs%p_QWZC%3yz){j`RVZpr2lQ>YJ0`!t*HW$+Q3tLZq!Ix$&Q&4x#iYlaJdwS&2K+q zO%z;*uH)Px*IqT0dviE3i`K@Rj>$HO(703w_zVc0K(Z7K-9<<5_bFsB%cM#Kbq6${ zK@QK3bA{4tGA7H6AKkL^6iC$zCOwe*ylF`XbAY<0yg83{!j=_;8~xM@cqd3?wu)+H zvCpFDq8TA@8=sf7)pkS>?f@hZ{C{M?z*|gizS+z?8uzd|khpRQ7_I1c|HztG{NS3` zWZaP9c*f7V{AFui_lh-T19M2fg<9M#Pp^4J#<{Ow6N!h9>1b)wS>9G)2gjkXs77jZ z7~o+wWQaKv6uV(p$abiq)iX`zx8+#@ zD;f#q^PpdBgk~P9@Jd$B*LDUn98RQaE$1(tilsXymton}>dS%!3T@A_42!aL@FV1G z4-eH_PTkReu;LqWY1&H`5@CQgbA!0P4#>~M}rKDugn&(YMlJROYs9e(l0Ks9fl4&@ZNxCuP;xDXu!ToFQeP&HQ)Xn#= z87uLo+cTosbH-)=x@JU4KYP|U)^u0l9g-)YfEt&0(^guScuwzTVDX;m(<7H=Krq`p zeKbsWObQaMsLFiDak7SIcRIZ> zYE#>;p07GV?=musZ7rc9CEwI1Y}c!#JFHAklOH;%9(IAx0P+XdcoyF?STQuU%{gfW z5k&#S|5?!7X^v~Nit(*1wMh__U~X}5j9NQ$2)$&Tu zgX-H}EWoo!yTu2wg?xG zuP{JbmNQj!vXpJ()4$`{%nTVc#6_kVeWV4k2?HTMHPbP^ZRDj3VMejY3}JNx%xq&m z+Ofa4Cd8*^D_9|P!#AzLN|x}t@2<&Xs-}D7VjRhIeQtbm&4Vvo6T+n&x(4ezYbt(r zeLOpKM5{$ghllRz_xKDN3aR2%&i@wl@)u^8Db!GU7=(1N>InpjRFZI*U32UaJ`QL?Cu;B8 zU_YJc4po9$=k|sg^I=?*AGTX z13K-k^3i9bfr9Zek1O`Ppd$mI zs7wJ5i_6Vm2?Wp@uwdGrz%5RaxF#$^NTm#==v82B=OoXIcP3PHa{8?km2q#@6~jm^ zK|*pHxK)`xiR@2CDHjQIn4!u6#?M8SfQ!`!2_=OobmH+S-*fGnSDd}3@*0R0^y=VW zt|<(>?%Xx6zkAJFGZa6Aoe^7PAz&jw~n3dg3VznyGy zXjQc$hp1ZD5@;x<=ROpC&^%+87}BgI~B)AXoic% zd=dyg=M=V{ose3L6=N;)4&&oroO#HasfF9c8xrL>ZsARYmDI8FVXGFG)hpvkNYCFh zSd)U&+K+r7X0gppndTUa^7{jx%0e&>T0Z-pku=m-D5-DQ(8P-Zg f<*1O&XO#aBTsE$bQ=*;o00000NkvXXu0mjfF^y>2 literal 0 HcmV?d00001 diff --git a/src/Graphics/Image/Processing/Filter.hs b/src/Graphics/Image/Processing/Filter.hs index 47fd95e..65f7c03 100644 --- a/src/Graphics/Image/Processing/Filter.hs +++ b/src/Graphics/Image/Processing/Filter.hs @@ -31,7 +31,9 @@ module Graphics.Image.Processing.Filter -- * Laplacian of Gaussian , logFilter -- * Gaussian Smoothing - , gaussianSmoothingFilter + , gaussianSmoothingFilter + -- * Mean + , meanFilter ) where @@ -207,5 +209,25 @@ gaussianSmoothingFilter !border = ,[ 4, 16, 26, 16, 4 ] ,[ 1, 4, 7, 4, 1 ]] -{-# INLINE gaussianSmoothingFilter #-} +{-# INLINE gaussianSmoothingFilter #-} + + +-- | The mean filter is a simple sliding-window spatial filter that replaces the +-- center value in the window with the average (mean) of all the pixel values in +-- the window. The window, or kernel, can be any shape, but this one uses the most +-- common 3x3 square kernel. +-- More info about the algo at +-- +-- <> <> +-- +meanFilter :: (Fractional e, Array arr cs e, Array arr X e) => + Border (Pixel cs e) -> Filter arr cs e +meanFilter !border = + Filter (I.map (/ 9) . correlate border kernel) + where + !kernel = fromLists $[ [ 1, 1, 1 ] -- Replace each pixel with the mean value of its neighbors, including itself. + , [ 1, 1, 1 ] + , [ 1, 1, 1 ]] + +{-# INLINE meanFilter #-} From 050e165c0b561c12fec5db0b703937105fbddcb6 Mon Sep 17 00:00:00 2001 From: khilanravani Date: Mon, 30 Jul 2018 14:03:42 +0530 Subject: [PATCH 21/25] Unsharp Masking Filter Version 1 --- images/yield_gray.png | Bin 0 -> 38253 bytes images/yield_unsharpMasking.png | Bin 0 -> 29402 bytes src/Graphics/Image/Processing/Filter.hs | 27 +++++++++++++++++++++++- 3 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 images/yield_gray.png create mode 100644 images/yield_unsharpMasking.png diff --git a/images/yield_gray.png b/images/yield_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..0cf094d5dd0f04b39c29da518da1025ac034cb17 GIT binary patch literal 38253 zcmV)-K!?AHP)mSxFJvL(w!E^_aU7CM9w5)uNWk`M?G2qA=$K&ZAc zHl}6%pWxMxJ8Slq?3{Pjb%AZwz1P$4r!0rZQ(s>fSsfjNgI!&%t%ZfDsaaVrS9y7H zad~-RVMT@8U0vPS*whpV)Yj(Yl$I7278JPM<&jldT2PRYQCjMBR#i1NHZ*uV)zw8s z#l<-}g@xtiPN&x!2)JBTRbFpxZGFAhTU3;vpPO4!Qe0eG%JWrKwY9;Z+g)6oo9lGC z-F0;}H6!6c@YQwY8O%`T0df<>mZdRn^>FUCn1VH`mow zN0!Iq^?E!mm(Ldr4h;17H#XMSdpx|;>+R|q8=IUQ8*6K8ZVm)|zM7iGMt<+?931TH zYi+Hr_IiE3s;Z_YpRc;Qxw*c+qN1@e9Byy#?QLxh1R5Iyf%f*Hp`MuqQV2K|2C#m?5$c)eVq*IQMUlarBASy@+CU+?$V z)Ht0*MNX&7#h#XyR#a3~`TdUk{POaus`~ntmX40*W^SpxysWIMs8!1-t8=^AvZSQ!Y&ML~Wt*CsT3YJrDk{p$ z^YaS|%FA7@%1TI75?K|IRa{(9P+aVE*3@`BB_&QLx5{@ron>W(h1uDenc3NSc_k&4 zl~q-)$YMKcYhfg=qO>#+;5Q!S3d+m<{>H{&u&JrNy{oIXHWV5je*gWwd$(@w?+=H$ z!$83A=M&o6Iy$<#1_pY1fU%P8tUpQD{E^5fzHmJp1L}xv%bEqt+BDT zwxOY;0|G&6HjvHa${HF%q0Y|MR-X@IS5|sF{O0jEou#Ghrq34$1cNm-d3iZGRaFfQ zjg5RyWo1PL@6XA}$`Wa+svP_ZpYjsFzrMb?xvj0GB^a!)udL*yZg+isD6)EcL!pk2 zrY1gut#-NC%G})S?4roZ%`GnG>oYS`QsUw&Dh396dm9?yqdh6X;#9a$|cp-^>oNr}tV-rm-RTs1a^LdaHK9p8wSC@gfjnw$IjdV8Ci+-}HP zSy^1ny~0N556I*9d%dNl>FGs99#2&j62*5_R>FWKB}fS5@cA4`Nx8XfIs#i=?e~Yn zV`D=@y}eys4Gm6badAyeFxcK63Uzh0wY9g0!*z9~rA0+-mo5hGEsU(9qKXQatFSO9 zCnY66zpjppcDt*p_^q}UPI9@N&cZ@nj^AHZm65S!OGZXvVObfsUQ$w1Q(IeDn44Qv z1i$9zXJut)LyC;Z%FfQucRH)9Yif|%{QQavr?axs=Yu!>eyISjw?4Aq{g#$+*z2vS z>FJr6c>n$J@xH#67L*f`$_8)+Y;IrQ)YQa8e}790iVO+mTZ@X|aa3wq8B7K%vE>~d zwY8}3j>u|j3kDk+yxxk6oSf`zr?aJ{r>DIgrOnlpl@%0}lpyCQcD@mNUwl==7xp`oqv9Y8i zFE2N@pa5YjE*7721Er;?w#LTta^$AG+~dI(6ctrhmzEY6iwC#>6dQ5^|0gA7WaQ=X z9mT~+KxrxD&Cf@)QzI)cFEcYOEj>LmGb;<_>UI|uZP}8UiKRkiV6_?=0)eKcV34b= zswypYyPKQCVWhpYv$uD2ba1e{yRosOV`QYWv#}9^mX-PaXoBwUaJZ+Ztt}K97=VP8 zm3evT=@}ViWyQrsMSMC}Ym`ZKHDu}R42N4t`KtPZ2&4EBw6`Rc6 zmX)zHTrKuCGc!H1JRV31aogL2LG(~=Zca`~36BJW4!*3SLK+#`g+e_&&CS6eB90+; zI&*U~GqEyFO3NwfTH}Fp34z6c+M@@EsQik;==_ zx;|fRZEN#KQprO@+3jo*~nmSF1LbOEGkM&%*cTM5c!4%R8%0~ z^`eN7UL+?N?C3xVhr@l5g((gOo0~%+uh;E{G5mfs0K`DA!_|;QN{ajCdORLXvda|+ z=-RNHRaMxfa2R(1Gw=1{LZC>w1~f@`cYi;Yq`X{vl%Fpv!&RXlko5Zcj*f7+t7~|8 zY^=S#stW6hbhNkk^>ueU(5pTlx*5G%R>o~KG+=fi2PUetG(VrMhyPG)DJc+uufgXj zEX>GAN=i&jOXC$jA2&WQFg)DW*4i2lqg4wFGc%Ku%gbexva*n$k`g|xtSmb_E^gz- z)KrW*{9jXpOy%e2ePjGH)YEn`#wHU4J z?1F-_vW$$B6t=CPfLk3I*|B46Y9fK7Zz@btdta9UsQyibvo12 z6B0IW&dQR#s+aMg}T}O~hXb2F0mJ1xiMn z-qOx;np~t89;~!9naB(%|v1RmcO%tDyl8u(&uQBR}8c2?nvA zm~r0Q+Bz`M*@;Wr+6pV6IojIL9<{Yd8$^Z4@hkB`xmWayh|Cqh<`A@_qqCF8Yiios z#>aQ>-oJlxG8A%zLg>A|KFlEwAx6Bd4d)Qv!2;COKzaNSv~^ioN=jN9hPUYTLIo5T zV@UDP#>cmBA0HnZ+qP}Tj`4Bq4lX8s2%n#uyJbs4!j>(GiAWTB6JIs>FKGd`T2!~Y*$tmCNVoZEiE$>g0RszBiueL!;RvGpeC_Lt*w|@yh4|& zrDbrCSK@!kEW^_{1bnO4+tlQ8;as3jcn_8V(wCIf*Z1{>!yO$xJxxuuk>&G+!&u6u zCj3&oIrv>9aJ$)X> znC!MT;vh`FEM7}XO$|Pw&)3p|gE25LHWnd>hybN`BR)Q>8_rAA#PCMG4p&1^0a5*yaq3cm+~RaI~)maM6X zN7#6{mOzomWhX+Rrl!hDzO}RztJv7s)z#5~<6K=G4A#~b6kzAl(<>`mTXAC`A%+-D z(b?J6g}EmbMVVvp(IqTge|E387nwq5ghHdEb#*9c9>vN9gSg<>A)yjTHa4WcA2UBV z=-|fCq3{$p0mrZ@{8d|`-^5DN0R-L0*PviQ7;ist5q1~fuJu+t-J5_4N^-mzJ_S05gQGNSx1y zGUHPqNN?}d6s}NjuY=$Rp<|2id<10xkYLCa$N+J`uMG{=)$lW4i<4Yfn3aW~;tpf( zQA)Vb+!k6MXaanvvXZD32nMfS1eDIjCD^hhDGAO`N+QC@%PT10rqJwOFT}?f^2uyc zULFy(fE#U2U*G5`C>1CIy4~XeEEycch;uD$Bjz8g($mw~>GO4V4h#$p4GzNl4Gr)z zpa+30zzJ%JNGl^FGZV>T^MFdQ5=0^(T_6NpqsJp0OBk9$Runp_i#VsJN8uub#Rb3> z$Mi#7lpWzB&(+trw~vht4vvg;bU5(s;cjFDtOk8Z#86aZ6cX__1|N^c>&?ziO%>P& z@d%@eihRDdHou?9wy21R!{tK9WA@loydYv$_!+Pf6$ju4jDZQx%EF$&{kX@*O~h^y z-2!r=bWnNXDAc1+B|@~`-hlyNi}rT59a1+n_4N%5w6ySkfizqRK3q7=E%R)DKcHfF zcV8bta90=Bj@Tj?MD^Cz78RwZ7Z%F=4-G-EmKK9jVaf^pFvkFz05_I|ptfKe*Z?B) ztekYzwwQ!n!N8;V1ZvjQ;DiJ4LPPta2R9=qXQ4Xjcg?*33UdaW@QmwgDs&- z^72wsi7HT8n8doeq9VQ)Ukzo2(Zm2^PI-igK@K#lq5|Z&pa91Ke=RRBIT@L(sK8*m zUM~c@x*7wDCk6C@Y~b4vT;Y(kw_`{BA(AkhMN|Nvh4IYI1tuZF1~Nf$5r+$K zAWk9t6q>;2!c~HK>gpOBQHOPPC@&fY6x` z63hWq4}5_zG$X_9?&_MD*t>URWPE&RC=|ln3w5ik#8m;0hTvSO+s!xf46=_}f-TWK zNCeQ3VtxE7b`?8A5YgNWk%3{gQ(muw*qjYSLJ0psXtcFBp@=9N8wG`BC@sY|fr~+S zYHEawmX_w^U?T|MfZ~X4rLvH=Kmd>%4hEhPI8MZX#wFg*%gfHjSI1i+6a-zvC1rC7 zK~Y<%PdE%!Nt}SagKfAq!8%AVt}zk{qkvcS^pN9$!J3+Sdd9~G2O$FhCA^KrXm9W6 zfFaTUxZ!w#<>i8Fe7?cKZQHhQ9~;}gecLwF33e7)N9Q*+DO;qx4Ga6JEDt^(d@ppG zci}j34=^lN8`}g3)7pxU%Pu0J?7SmCAM?svy64JJIglVpU4})kYjYEXn-g} zA-$)h1WyTHoUo3#m;?}xBHICf@~MJpxB#>;0#4KbX9BO`uaWS=zyr?^5TcE_VP1)| zOmvSiL~V+%arL@G1ZiYlk%RdMS5eE1V735pYP56ePhSLN*LQR~I%6 z#mRl(0ALrnA4f(89L=wQ4?t|(tkcQHfa&51a0`S_a#gu(NFsuCb`tBe6)7oMS*4}; zR>P6i`Fde!rTn;g$OEqc((q}BGcGltH~3g~Hn9kDv3WD*o#2p|0gYW#gT>J|S5(y0 zAkAVPqHn*SXcw0O!lB+EdRG_TUwwTr*xx@fF*Jm^h7j077!A#U-v@Y^pN~3%!-dio z6`{hzVYnF73I$wU4X}?j;hiRTg6x8~>Am<}O-)^01b)Z|pGM4rHsM`dUtOID($fQr z;8Ha0wJrIr6n|f>MrnF$84I&6SlvAlcdY zW2mUUJ{(bec%Fw}$T|?FN%<+&gz3f}30_Z0fec`zeAed885z~p1b%@4Y6U*z3NkZc zA!Xe#+j#rR*FhKA+dOBfLVPSIex^?mKcwEAq;VotP)6<0uTCzJayNH95kAz{Sx$SCPCU>hMz zcsh__WMpE3o9*eDoMd~Hit6ZKn^1swix3190fi*HLLmfhH23TAU`2pSut7jGgp0u- z(ppggPEBA8Ovxwr_KuJH{W$pHFu4~r13sqL+ulAgF*%7n;ohsNfJ?*SfdR-$l+xcn zKHlH&_Y;g0!Qj@shE7ULi3CUt;c4JDg6Jb=1aDj{UJN{ef|5X!cOxL|>qF4t0mTek zwve?T2Efxo|6HxVxwPj=|A;u$0 zA442|R#$^Alh+&{9~eOMqnnAGkwhe-r>C!vEFDaPWOa6;p7DH8wXhJG6=D~c3uOm6 z$fI-LIM28@@G)`=IXXL0YM``%Kq%DT5Bm)apeRvVEiDrh+qVx5k+dW6g`H||ClVrL zY;6U-;ySS|uorg7LE_Nkp}K?wCc4n+L`BF#5Q-`3)ZUKM3(Q_s19u zu)C;IE1xYYbC^RuKHHFV5O|Liyr?RC5l|qdP3X{KZeR1k>@D)vCVhI3* z&hcr;b|8R3M(MV;5}eAd=;*+mXIrPH#>a7yaV$WkcoznLbady=!9kc9mSJZot-yZZ z9H6{#ipZz1M*vKY&d%-If#&efDLf#ez#-%-rMm%#AxcXN-ZmEtuB4o{syHAB1vUmI zApF5Xcwa99HdGvD6OM$}usWz9R1|CgLzI@P!UUNhUqU9GXe1>iK0Y-S{$l%y=`n!- z`MANPc2iOk5)u<}K~$#&R1Taj#EVD=ysoJUz){II+*R^Ectgq%f)3!$k|8C*rK&C= zXZUU?Mgm(RG>C=DL*9Tfo11s+*thS%f#b)wZXF)pwyn1p3E{KI3xb8gI>p5(LD1fg zj_&TxPB5`R0HlFZB=SrsYsbXI{{1_59y;{?`=IqWm6&A|3>ylU5i}~V;dBBAP!0oP zgY1A(At%Hg@H}<_SC7~pzJgEijHoRk66KSyOR5>c@L}kPupuBhc)%F4C2TT9Wk_Rc zDoFtFSF$F$MkRxlZI6#%vu48vz;xgUq6ey4gvD}=RE@|HCi)@vM~(sfP%-#>xF*<1 zoDBuU+yyZ^ZYz>WApyY&2n+&>rGhZh_55#8vl%Q%O8a{tV4bSOg((5J1u3c`_wQk(HH2 zrVW{q|F(H^S{fyKs(d7Kh${lQ;^Nk>-Lwe_0g~wN4~3N5gA@>`p+Q@W69GhtWy0dX zNLUn%DvmT8E(FXJ=wRz`^l<{v21;Y&0He@k)WO3>Mz(LK#tUMg2D`f_CfNLj2Gw&Z zmxD@$&^X5s70(SL-_Ss%fC6g=W@%((YHI)fBS+qUA1{QPMTKA|1oHu$p@;4+L%aZ36KrB_m=d3zL*Y)S*NXaeI3D z=FREp$e(IBkPKpZ{5y&v@V#)}@s@~@Q8j=ps9fAqg|>b_S&-CJ*&EP=hKAzT3vB?q zp$`C)P9nhK0U zeHN;WPepmDb_;uh!bB0lGJFbKgKQ%4kOupO-697nq=~I11x*5pP!1)FbAplr%>_gP z3c&#xr?1z? zA0Iiw-yeOnckixUr1y910Kx-tq8tYQoRYNO-i{8U00>7&%8kMlND8tkWq2UP_6Oc0u!Of`veoM1>*Rp7NksWG*cl_;2!5ghvr0>o7Ge2%}?pRmV&YiY!sYhQQ0<{dmQEEYgD4 zE%%QN5UjU(b7Eq5_k|0O9zB2l>eY)E3k&n}&!0bg_Wb$cqW%9DFJ4C0^XE^WE-WlA zK7Y>N|0l9|?aP;cMb@iV{Qu$w&+wj?FZDa`dHQs5@#)hiPiAN5=4NLfKD>YbZe-oL zbMxl)>%aYW_3GuzSFis3^Oe8XrAt5jaQ5uE$ola|{eK~{#29DJeE&Ua?gVY@7|rCe-c?UGjox}|BoNf&d$s{e*EOg+?*cck=a=u;kEpH{P*G! z{@1fCy@E$)X6EM?7Ut%7c7C4EU0BfXykc%n-@C8?8))hK_>J$jKL<(Y<{&Nq&(A-7 zIy(!Ixdy(APuCT5CAx!$5BdH6{h1klzaLo-BI{vf-MjbjA>YH_v$J>a-oJnE-lIo% z?p(X}%P$u$oIU%)59iK(_uV(&oH_;3KmPde;XQkH>_FbPZk?P2cA>@~6vA1?mX(ws z2Otdu-(VA1Uz{kEZ-gL(fT#h`NJ1Qvv8o_JNb#4uy2x!GJ$mon^XId(3k#1QPfy>y zd;2yQcjwN%$TBy;x_g(uA3l5(Sq~rTrXD?-{(JE#L}N1z>C6(L9^2Mj%z`NT&3cxf z*5l@NhEV2RW6>w^zI{1EGbCHd^LDkSx_tTPpZRy?$}f?1_3E{2zx{S2vTokIb?f)v z|M=tf?K^jF-TLE?JCXJ0pZD&;5D)c}KB{s;Rvuzj;OZ>qQJegenX%*JSws96-oGnb7O7LjUVEILMXb5KK$}>P<~;jV$^@_UthXap1t= z!$*!BJ^INfpMHA$_=yuIPk!~)H{YB-eddf|0+Ijf)n9-8?YHaKZ`^?B5Zg%o^z`hk zh$6B+U$UM>mY(A`l;*Q%*xM&hzW$mx48u?JlG91q9lj)w0TK}~II!@lUH5tk;agfL z2c^=9^db&zW8=}Ij~{a>_wV=jW3*U=XE?Or_;OEil=+(_G8D%wp0P+JB9aS$U}|n4 z9?^5=Z+((h>5`>>F0lnkCshVJorcUJyq17>Lwb>46;)yZF@SJ3iw(pIa@Ju4P(8GQ zbOO-+=;*}6wrzB29XN3C;Nim`et7igv12DreD&40-+ur7`SW-0%1K#Rc=6)=dGI>& zuEa&$eNGO(Y<@nm5sthAcM%MU1V3;yap=$x6?!;ygi5uwzx{@GfBN*`K{c8Q1}ElF z=G(rZ`d=gwk+h2bUL_^=?Nw2;KEV(`k10(|P-!QvUMFTSq&JUoZIX78Q{Pbj_bMwh zQmnu93bXh;z7eS3x)(7>+26~sfO)^wj${8sv4g&a-v~!1C;$8tIhmb(_H54{5(d;N zfDPdc;Vm2x6Bmk;K|^Jz{^adEAmg^FE8I%qN&{ z)n{7wW9b7ifc3X@0ofxWq#u7=SU^r@X4={W$(T+_%)6jejJyMoL1}$Ds4_BAQ$bYW z6!ECrJu&g%0jBDQ9|&Vq1^`Tg&a*De@R;~aNUVJ`4S}L10T=|eV{xh3D7{0E*a;dd zbB0Jp7R1Z3D$e|Ec-?$HXhgIu+ppSKO8Z?}1hWWjXOif@v{z(Xe7;|Q#g;sIa_}Go zB2x)AAaw-_k(`{65FhVAkCLR%$gof$ir)|*Y)fI`u3h)<mhS=BFVJuLpGkgw*G$ zM#|bG2o-H{?4N4bjPawv{DrcXfcIxH^SlDw+UOXU2AD6Ed^dBbw>(N znNO@uRh5G}L7;LnYt*5qrf%Mxno1&loTZqK}H>E`I$^cy%8jx-*N3WcJbgJ|BhcsY8rt?Q1JyrtJ;?qRvR z+GujIOni|2-Hadx%7?8{D&Xi`SA9Y3j4!y;ct*G5Ml>& z7x*YL+q79GCu7)ia%yX*rnYaVW1+S6mtXJ>9zD8p1zMscj4sEk)J{b6d9lPXS7%ux{e&Ti zH)zahYrA)EZtmH$D_8Kpupb&>K(+~Y9Sqy!aX<(RI-yfZ2~C#y`P4?$*VAP|BpeKG z+a@^RufHZI?UxO(Z5dp%?Bu{EM9YlXZ2OHzOOZu1JK^kHX~--WfYgB3d+5-vT`EYj z9B6wyWFCp-{#YrFm26$BBTeIW+b? zmOU`GCfcZzy2{T#eE9hBW5@dXjI(QxPwYOEyu;R`|U(aiS>6ZK`bSwSBXG-_K?@;>aqemvn8>iq+J~? zcWqV#wH!MwRcA}t$&gy13mGQ>i2PHQGzYi+VdM zB}5jo+?s4-x~jwB3l|{B^z?-bw6jP`a8d0_ih{_zm=&wa>_Ma5N*FRq6-94>Aqc-) zylb|P+iz%~z(^@wNl~-{5m5{en{Qq!4bd`TITg{26zfLEsw_RCD<)8&5+CRZ=;X7{ zG!ToK0Mu*($5S&*n>6()4ifED3z02TUpYV;MU{jsq#*%|JszSFpyVe{wr#`dB?h5x zJes?rZ^`gm>}v!`TDN2;M=al3V2bgXEVZK7TU=>(QO)*Qc$wv;nO9g_Z?4SFK+8$? zQmL@;3B7_~0AE!8p1!}V?BYed)amJ)H}Pmyf`J|aMPyt7q@by-r^mra7Rn8VhNuss zI0bnb7zhN6>qwO8CkK2BiLd& z8HwH8X!%$w9TrKJK4O250z5ICa0r*{*fCWJ{P`zd6}cC3>XgP(^$(a!!Jh{16cjjA zi_Lf<+G0q{P?Su+1sOxUW9lQQNF5p?QKjtH-o1k5mR`1r56mVny{%}K6)hpro1)FL zBqW+3CZ37rT}zq#GeQ14IsQqq|7qD@rIa0o;V3P>HyplyAA-!x?Ae3eg+%Ihk$X-x zwOU{4SF5OSU`!}|WFC+*3d|d!CxV_NHPVN}RBSVS?egWPPhY&4oxO91(Hd|=?5)M# zPV5$#O}6J5mTr^L#3F~4REkD_wFTz2)_aVENV2R%ShUNkZ?k{z{~JM;yJPD)6cq&F zx4gWnsvm!(g68@2bLXgWR<)&JF%2J3N15t|>*^enlNfMnwfR82DohOR^{P{%{0sZS zq=DYv0|%h@{QUIv2OseDP}Nd4mePqX$JR#RlC zt9CjaJ9fPP{@`Fwj|K^;3&V8j5t|SwG9Z-+SkyJ1J4aQ=+}x#0jG&MPUEYr9#+KR; zezR|(ogmTMV5ux6MA=%)_QXntQB;;u|0jZ2L|@J^k0#9W;iI`e<73%zHaX|QcON|> zSXf-#vxj^j!>*{3&dFK3cIC>|tJkkjNT39pxfxt7mfA5kMyb#C?TiuP3rK=iRnZ6r zXhPzj&LgTCX>Vz7pPZbYe){zJ^M!>22gr8uQRqfw#lERaxhdA zrYbuvm1S3Ru`r)q>P!;VQdzNSC6NTh0+XQgt*FY9kfkA{aaPp^ZCA7U$>#u=xZU4; zLuuZ^!i5X!T1-iy<~}cP%a--)*Q{Z1A_krvSC>EjmxD1ALqil(Qc}&lLX|n1_I?fB zqbr0iBDxCCo_+ing517MB_0<_~e~D9(oL=XJ`gz&#S5&xVwFQ6gm$K5YjWk2<#CfL)8?M+%hugXh6@= znl(1|=+XWAq$Bt3Q*eU|2SJRZtDnZM*#EbaM!bxOb8`%E;-)M;uUDGt4O6~ARfnkn zDY32PD?*5+?1c{s*zE6AG$rSR%6L0LqP;PTAOck-iB@LDiico@y1L7ksl|H!{JZan z>M#bxb|C5MwhRV`hbJeQZ%nHbW+D{wcpQwJVGuWcd6dT!(yM%)EhO61&`K~#W}v~- zKm359di3azKbS3rSZnf?oHwmlyCO2#5mbwp;Zc`sVq)JurtH#6Oe6E)ATBwe0xme^ z{~88M(+ib;h`8BqOKPOfEDuZnqN~9Sao9#WvJ_R@ArSkrB;KAF6S!%A#Ml(gFFJUT zvLC?2ty}4XAta=gRsFvpB3S0p(ed%oQBV>ZxxL&!hYcee^vqR%mRi{o-=Vz(`O`#`Q7*pnH ziZ=1-DUW7RJxp!HT9SEmJZncOVnYV6o(6ii0#;kpwU1N|JE$BqfuJiw_<& zHp*wxMa8D03|HBCDH_2oEe(Zk-$vpnR*fxHwl9lR_S#w%Zd#A&FYC3>qLxZO&3jm{ zUOjoTxHvm|?%eP&(i0oS$HpA7%w-<6LR9SDk3aIM3kz4S;4E3k6KM7qHPMVqV;mw{ z32&Bpa}^b7X%0%QHIfUm&_9cKYd$Wu*$_b@PHi1z$;>P$2!*Dn=jH(9j~t<$nhUcM zxCTCnl@{Z(SaCFsW#4`a*Doy0%uqdSN||FT%k8AGKVpiZRT|AESkK1(%}-PPZi=tf z_`vVe)1QB?;n2}&ZZu$TM~N-6SZ)P-wQnDi{rK^{dpmccXc^&QhQyH-q(q(WF7<5D z9!L-lW>{VAptp#gAc{vpkb~I{5QP3i%+m4WD&4poQ<|O3q;FPbdQPN^XwT!nVDH! zeEfLl&e-}(yOSZf-`GGqe4|%L>YJK=`wb#LfBxBLbQ;nU#cVniuj}LnjV7RBP=!G3 zet&;=_xSkhnTzPPP>3WhLWH|pS&7xa^O2dPBpYlJ$BjB*r?bER&K(K=ks}oq2Ej3b zqGbl7bLKL*+<-hGxBJ^~U%oVL0Vo`culbv_4w(c=16~W2P1qV_1BHbxqrzO9kED^; zRD;g*=V}Aerb8^X7nsfwp2hGIE$Hz_k9ebd(1{7#`GH!@Q*{UIr5JN@a^fogXgcBBqh8%=})RK^}W!5?5pw&Mu4bPdHsWKAs*{pYQwcxsk=i+qW4}qyffu^fx*i7fldlS^(N^+<5T`_wM2E%*}oHA?gYlL2+4*uLY~v#a#MU2HokT z<_nd9PePIt^~KhRkCoVg=h;-5eqN`dOtr2V&VTxJX2vwK@eXmmTI6PCjKYfUr$X2B zdR+sba{Rc-)0k0a(MEhJLCjsju3j(E2Ul_C4AoZLyFf(J;>_jN0XoD#%nKv#BF1ZM zuA*9yg4&demt=!mxu$5^du!=V~!t3^RtP8078z{ ziN>ys-(?v;^G^h+sQB$S6a^b48^R{32avyHsFNiBj1S$&0!S zA(=iuwo#71G3chN@ry64%9QAA;6IfK=^1QKe*U3DuU<(4+uQNB0A@(;F|(3_S6-{q zxIlnLQo1+k57BU5Nuz!jUT)Hp9lk2h3SWP34RN zpAXN7&fD+4qbCUW&ZsDR;ae;$E*qi}o4&?+x+a=%*@M|a5-w~$rJ30Y=u;m z>akiq$DPS zMkXdA4_mhIrJ9PUium|=VB_Ru+}|Td*eGPAql2m<<5$`JtZ0EZ+-LG>Lql_OFJH1j zYNh_4|AD(@e5IZi79b16c=bwuLo95}{5vJ@{~=o!V%(QTU|IG+o1 z&ChpsDjLy#{Bugn^1@(KRz=0vU-JzwUtYV$Bok_~AOKk-1{?z7f}k@LjkdedQ60m? z%tczI@VLBQhlXHaQs|n_&1I-XLc+$4>(?`FMDs%70-_6MAS5IpIn1|WwuskDzL=V= zDCV;Wg1cxO}?t zyPiFxs!&*&QcX*1jbjPIW7wLqvWba@56P%LdNeh~z)Y+HFpnl%G&VATqoae#E1H)b z4l|dV=_p7HlTnBW9n7`@qc>*~fJAccO2AARKafANK!1VtG?|2#TM0U(&&@#Cfi+G?0a zT}iP$e8})uO&diz4E_*H4!b(Wk-^5+)&2An@-aJm_N)d4Qna9?0$Xinyij%sn4%FK zI%uu4(@aKbXmB7XO!1+R6ut$+V)hP-iEy7Y%BYElBuuR;D$1wxD&>x<;WYdUt;Q)hj_A*pdei7-Rp{S3I+4kJmdk#-k@sR#hE1 zAQ#|+519YSS%XYb*u5KqEG~ZVL3ufO2sI-k3%~x#a0Eu^;BfBVEhm|xH6xQmDFlXl z_F!DCKrq^;vdCdCej@sSy>{>B4jw;#_;6%|=Fq}IV0Nao=-4NX0%6JvGZ{%_kSWxV z4$@Xka(La2pg95@kB1!KwsI;AJ{D)gNbTrc9A<=I^x+#iMm31OtnB!4ZjLz!?d__& zC8V?$T3cLZNs0xVmzNI=fF`|op{{PUKX&2RF}J(FAC27IT~l-B3?n;^9<8oEbO-G)qbulWpeB{hc1^?{7`S!~ z|73Rd*f9zpKz>z2VNd2pN4r*aF9a?q`0hLS8@@JC^ZfiTzc5n#r=JcVuB^oLW6Td7 za=SnLP%-uH-7eR6->&*X4Q*PAcc!@@gfm92Lx~+B~r3+V?qM+?&zS>fJ{wx)ckM; zT(Jv~N3pwu={RI|`3abz;!G45fguwSQ&Ki;V6ZV|T)3-rk79l_%9tX%6DPPiJfqG| zrEH>$LYEpv(`;!-(%On+z$eIY<^Kl{rlwpjMz@xipFdBn%i`kx{ciWi9}9{cAFr&u za>c+RnsCCSF4x72;(z&37cKxz$PNDLE0=3@^wA?tJW)W%Z;Ojxf35SYmiklCDk~bv zmV3N!ANNnKK{%|FR+yv3!7$7prp3eUW_*)QK12=}IfJrdekHypqpc`_hy;dgcv2GH zFhjB#Q>;@1nRKYhhlz=6)@=~dm9M?;ig#9XZjV}E++-J8U zI^cy%{OT)!aa>e6s5rLYf3L$<2L>bsFJJE3<#wMsCDe9s(Bt{~>)W?)-XsnOdO<>% ziud!+c1ZE;S?2i)T>0e}M(qFjCo(1vOosj5z0OX7gR#u>&k`azFDnZKZr*(IdQi^M zqclDV(W8O{;$>$uij69s#zv5Im=L={vYbKF8fieHjR8@SI7EkRnS)b^zfn)5Z6OBZ z^Wx*zuiv;aG0`-|GZ0d<;mEXibTCNr@L^39nV#)t5;J~wY8sr&Q?BnFgc0xWV8X61P=%6GcZt7^XsoN>2iF( z`Nr!FhavI&{LPz;N1*uEIS)wY}k;HK(dOB zW5OEd2q=J&%fTSwkKcd&x}t+Gza)Qb%0sPM6w603yk#&g&4ef~$2pMui6Y_mr%w+Y zsH_Z!aeg8AixXM27 z{dWc-+_@u5C8dSg*P+W4;w&}i%M-+;5JDkYzNb&$e_yAnAT?MA#&Y1w()Yo!kxZsn z;f2Qhv3n4NNq5Y+rkbIy&Y=!>0ySr7+gNlom4W+1}B}9{=_`j#;?p-zwkBg0jAYXpzbRIbH;DI3a7cY8y>*~J$ z9?rjeHyp04{Ns=5=?4#pvjN+&2c4aDbvJLaMaG7lI_2?<39? zkSL%Pv*3GrNGmh&-$92S_#;%ql4zWZVo!1)>FFz1u35w2R&z!tx{l{HMwwOxLd4qI z8#gepi;L&a6JYXr2H7oKvaF~?@vzRy#XC~Xm*DjmFHWAM_eg*V&vbYD{b$Zl4S4@P zwH$CJk3W74kiw=jN&ENTl|>OIMvKhkBuWpD%jN3sCfkW)Am`zWFM!S2Ubfs!S&7c% zSnfMh-cda|r)$q1B$LYaa5yU~Iay(X&Rd~^hlqn2@YF1D?2_<1s(HkUJWJM)`DBzj zcsvfB<|lH9N3b7&?C3sPLRYU|yB31zZ>Ftd{6U5pqD-=d;j2YOTpR}S?p<2T1jn1k zv!yPhQCVyOC>W{Y_I5mZ&?p(*moGp5xUB5R5rRV?%vZ0NB6{u|2-fY}Q~;oQs5Ta~ z4%c&Y*RKnXS7zkcF^^~4HhEbmPB@)Ab_kr2M|bB=cegSV8Yg01?eeUo>!r4&sHmw4 z)e1v={4oc7usg_*IX{Agltwr+4vypP0TKZjbp{ajSi^Ji1DW<%SmN?Ve@a?!0ASkP);|mP2nis|8nx;{lKu6*S>nVF>WGva=m*9ma?we}LMZPLNzI2F@=<4YWvh@9y7Mx>uPL!bR%!Z`{z|nEL7I4?nD|Ja~{#xPF~t z4m!b{WP>8I*yJRdX!=u>n%P^_oO@501U>%+q!SM&3LB`6@x;s$EMi=qvOXpX5E z8b^!MMBk>4Z8cMWHDpxDL9|uG%L3Jup|s+1R%Rx_KLbu71d+QLm5e*edmtv9 zk(>u2>zF1xY^o2(Vpo$g5X7cDP)m!Ps7)6~=x1 z`YQ(i)-9dT!4VNm4*l^*RNS3A-13PN=gyry`{R#i&fL5A^y!BmI-P@qpMCb>hqO)i z_tOWa;Pc_bt}dKYd4*+V6h1GP0kL~sxw$&!wyNsN6^-@$?mG?qXBQZSt^qw50)Cd1 z=vW+3D~^CteqCe*>n1tHdo(ksyxftI!E6&O2k;5xAo&DIz_XaQ3=RXBLZ*cF5_F^H z)neSKSY?p0VEev4j4a9p8Hw$gUD_6Eye}nsxY1zn)-5xU6x|#SpFRzNh&1lp;h>C@kSGpCX;dDrj%?mPUmTenD+idk^tKmBxm{?H+fZh`}QdoNv5mIWL0>8Cn- z(dvJS?uUwICN0!7^MVf?K!)e%|NL`s5R&R#2|``feTrq_e8!r?I-DY*LMvP)l7DC# zou|UI2W1ss#~~;oYzArzI%}L35F_|5wHM?7$Ury05wR^uNkIX%cQ|pH-dtLmmc}cS zlSyWsIRmUQH%Crcd|)51VI{AOQa~rGy-Qw=%XR1w?-%g*`|r1IJ$Rse30nWgja#<> z5^-=ZUAlbv{CQ?2GOU$c9fq3h$mgGb`Q?cdpMU=G$AA1WGjrz5p+kH3?%sXiz{!*M z@4tLGJuUbA^5y1cousG{tw^ZyqIQzRN(+jZ&VH`w(W6(djvbSS%A)`vq@~#v*h@7# zD0LE4>>0fTk`LGe-9UdjtgW*qB7q@Xj5EunAs?W+q;fU=M4kuX3=yY}B*NQP=?Vfz z9D+>Y^d%+b<@NO7&7h^XZUu~3z6Q{0B`{{6^e>)HQBiaA{rlj@IF!hR3QCa@8D?M< zC3F>?D6Y3ENX(>Pz(!;hLOpnZt81nV^Z4}i_U%;L=&S@0z#hiN=5vgs0IL=k1J3X{ zSFTVCT~eZXF{)qF*}@){5J@uyFAr!YRiWAc5O8w;bK{ zX(tne`t(yQ5hXyX_O<4GM*nVVfbGSmu|r>@OYKlp$l9}KXU=f4h~?heXE;RL4W31M zP%!LNLBXzF3kxdD=@{r$@8 z+YR>eo|THpxkI!GM^Ie73e^7e>G9)IK|tu#bu#c(1Yty(4r@X=F)Eo))Y0PdtaREC z`APml8{y$rR5lxV3sGX%JlK$8#g%j08-$eDtgoFNrR!{b+VScQnUofFy~Y0#2(VT zkP-R8UaRBK0e>qXB+CK6>j*nI8Ud3Bk(vs;$abqH14AXS8pVdG2j|2+;43C3G(Py* zv#ndX5iEtOf1}Gv1)0PquDE=U=f;hN1yz|uOTtn$WyoWyNMh$y$4;ImsY^`=n-py^ zqDSXw$yJ9a6rER8w6~K@q55n0ZuCTUHt8o6yUGh80vHwhhECx9SX`8TemUT8 ze<5+-ehZ3Z%(vaCSV|C?dbQq>p5DJ7R|8qr!%+~ZD^u5KB*VD9N@Yn(c!t}- z1FEmTc8wavXw|fwiu!L7Vz(k{F(b8V6s5M@YA{+F$eMO-e9P0PC1bz-T2q4==IAn_ zFFa9AbWKSCq-8HiUZ9$g9d=5442d8M5H1>n<1IO|5c^$HvSrK0jSkMGB*&*(M0g#a zLGT#GzdE~&m>f@>f(VUTPEV&)k^*aJk5nO|giRbU$5D#keWzIB;ze>M$Oivg#n-~J z?2{mbDVgLCg{nHohk7lQlhT~9y!|k0Ejk8KX*T|vfR1a|hynBsmW#X8ud*J&Ka{}qvWQhKo z2th_hdV4uw7Yb%&S(q*|0H#@4Np%T_)k)uDxKT`KK*UnjSNKI-I(&q!K}(N~5sS>s zkdYHgYVXiBl44m9sVx5IlXPG_KsqprG132IL!wJ_D;r%u(?Wo1DS&c;)yH_kkT95UX7-MP7(`9|cS z6d#9H;OZk~@$nA2KnDisO6}?j1Q-~^0w|PSz>d)0L!JvK4?_+?;1A+&JSY@ZMFmkl z;z}(dde`YZe;$oXwGtO4GDJ5k7(K0GZit~E3R$6UoWv4ACS);vQp>BS=$ON zu@DNag4xf?B0lGL9m9vbaEuxKBMAu(4)Wz##JzhD9^ARJz8*UQ;I1j~97cz;2e(q= zNSMQPUs|SWm)9a#@RGw|wB?iq=T-?~G5ul{ZoK84daO#>ht5#8w z!(PCooNrBiCrnAMkn&Z%T8G*ySVXa-*2uL2J~4$6%(|c;LXfessi~o%v9YaN-+%w$ z!HEf%D=~5P>bN+7ca@UjDX2saY2eavbAccs7k(CsO<*C8flL~0J;}*zCmkO*Z*pEA z?~ctFYU`~H!0(q)Co}1EPEAqs#nuyn*w3$7J_fO(cjGYQ6;TX+=nyt9Hu8y8S+P=r zjwmRg^o~!zdKG1poJ=t~Dr@uRb?Ycg$Fi~`s4fc9@k+tOsXO7Mc~l#+rURJ4JE+^? z9B#@kUBZ`Nk`S7n{_VH=dN^b$L89Xj9wn55*lb^U z`PQvEzrMArUhI-;7O@pF^^B7tLI>Xhb$^V6kubRbi&X9*t^`AMe^l7=;d% z9LR`^UvvIm_GzZ_wqThH7ueY425(p@OTWoxP_Z&M_wXUO)6C4yo%CS9z0s!J5XADb z_>I>o2f`^I=g&)7UcAVrArl}@V0mDA8#ls^@$suyzx(cc@6iT`WbpYYBi$huM$w&) zkOa%nKsNI3*ckj*tV>GDrcDmuLo^yi%gj7!Z4HOX{le{-W%Oixd{WZp%^NmkXRFc# z7!6`!j4)|j6u&db2JcASR=g7-Oiup(ds3+j3pa0a)}_>hw#8Tx#UZg{ofNg>Qd2BV zG@^vl@&wT$d8|TG617;7)2A8gZR9W(+g&;xQpyqxJTGt09vFcWO558p+?zLp=hB>k zo#ptf&w&yjFPZi;&Yr{@N!fY0W+bgPU8l_(t$`SSA{HUt#fLsr-yd7)seMvBZm`vJaml$Gv?%gXz`_xOm)AQeBx4cB0(LTLGx%rLMWtT ziz&%rXfPZ|9?cvKBN?&Ao>|+a$(*h&QCS=rwP}+` zgKHBXkIg|NaA0q`^g!Wm%}MIhjDSFGF7!ZH+T20*K2MX zv{RgGS6Ox`QEjjew(jXc%9bNYv{9!pg18*`A1V3xW1aFYf|yOW6jW>|Xo!X`ptJ~S zyL{R0W=fcoiZd zZR^)ZYzUq(lLnMx2OP=Iud8DkAPrc4KbaA}eAA|^EZTH9`-1W0_4Ra*>J@BSP7eK6 zK#c0HrP7O=Ac{>-rwW(iotc?KhooE0SU@Q(B7By9TJ}U<5r(k3`pYjVm9wiV3vRcD z0f06sriL6p|4b=^u~f11Q!Rp6mISv$b;+ZnPhOvkO~)E!xak;O2+ni`@|<-iDe*kZsGNQ42Tvm`5v`a`zs=FP@N zSU|PEmJKoTVabU`0;>9vD;pf-`0!|g$f=FCA?j76;o$Dwp&|SlAr9K`SSw{bD~mWn zcdM#?{+Umnojq})un-=G0IOHCeJCxMlr3Gqe%-oNt5&XDwF<>9NQtO|%&CGzP%cI> z;E^e+CuB%VTeD{6%J<$|vEse=gp4F4tXsEor6V9W%3rTqNlWVlLQs9rCMgoxyW z4=4aoy`Ys5F#)4}Xr^ha#sV-T@BI0t(TA$CtYunt`1!>bm`fvt`c%70G(@nhm#_lf zL9Z_rUAJ%7)`HQ(!H|RYK1_Ig{Hn-WyO!-_YgeseIP%)Hx?ki(Wrtg~$lSyKNEFY< z#jRYqcI}E4@4WNx$a?#2{4+?mcI}&QI&yNnUb=foQ|09`Oo)jNoQO+!7!EU^qraah zJ{%5(ff&fSO6a zb_ub3EkhhbGF3=+cbiU;moL@kX`jhx(;&ThJ(?*G?wUaHzsD{x>8}sY3gHReSM5i zW-2K1LbslVkkf6=7~qBmW|dM-$}QqiFx5Z+JZg+fQv-c#>%DtKBZOF{;mr&@6AC69 zl9OZE5Sdxij#*oK;>7dkR3r)%F-KK&5QDKmWX$2f@&$L;}o&_kPLy1R7ld6(lkt?aJ{QNJz07hqYCNe_s zWx1hNJ|tQ~G=a!8z_qo(xiZ*R2}86Ep(gC{-Y3-IXifeRu6ztO@o7D4rJCb?b}=g)P~# z1>7qs3D7kyZNrAutKWMMa{TZA{lEU#fBy6CyX)4$v{YrKrET2kpxu#)0@D2&v8Ap- z4qol;-MV#bjB(^09iyY|?Ns#AaSf4rdok&glc7*k6Q{Wm^Yc!f6r-*^&JNd!eO@m` zl*AIu@%j97jn=f<6pSvn8(mY5t>G1vUbx+#e~!As7TLi@JJ6_lm*L^ULep1kCBZCJ zW&IT3DK`VW!SDa|SAmqrj%l(U@zkbGIK8V^zw^$DzZVk0LTQ1GZ`c6QP*BKHTpYw( zzn*AK>I&>HAz{rL-uX^sz5DJPZ@m5Xs#S4uD0F}(Y?T9`gd~YvG?W$naU>b5s+yVx z2Y2n-xpV8*p`os>krAf)a(G2JObA(DPmlWecsShH$XH-%@&W-IW51sgdvIaOO&KWB z*-5uuO3LS-YkI=HdreK^-e?K2`&!l%2o)KqaG<4y)=&*KvjRdpK>$rY`wUn@Qy?vM z6-@~J6x@%Z!W~BnbpQ*M_DxN6A>#otIG-(Ez52~J-+Jrqx23Q|3T(%U6}YpQY#d_| z1SLkmC>WAQ&>w5o@Xq(%Tf3H5V2_fM$+!~PfT26c=#m=222@os#)WfWnwl{53uH?x>mZChzUU2{ZRft!Wn6u3q{1`5QNUK8?wU4g_NfqNTK% zX&h>6qy2%Y3?F<@R)%kdm$YI9+|Kqxjvh0*Tba&srZFLEnnq5N>+MKs-Qy;P7o#>^{jaFbJj>u+YW;&gWKn8BVaKZ1- z&zHK=)~;Ih_S^sd_nU8`wBCB_KmU32&6O(&>mU=-fCK=eAPYnyL>)Xv@VI6TDhogb zZ&vAVoE_p3^(#`QND|mVDv=%sW=^Sqnvu%L04MK|j@L+``ug&6$bn$fM+&KMZONoC zii=Osh@oI`XsELjsGV)46wL4M>}+Tl9u9}w+IoBG3nUeL^e7i+HGXPyEDkm~36*gR zk`oH><(C?ZffKznkN(|vRPLIpL_0Ao3u666NGq3@Z{y5!qL0UqySh+$s1*Dn7XB2* z`0ckbGXQ{%zbS`FQiqRjZPcHf>5z2kj%DLWW6=v$#80 zRFZqy*$xs*+$^3E!(SN_tClrjM>H|h(ea~r9o638JQNSB>l!uJ)6?6_u}F=LjBFYj zIv817w^ml-?$Y*)yn%vsbx{&_;shZVxE3YJs0!s5QBr1`EVtL>?X2VK%gP!X<@!Pv z5MYM$p~R@Ydhj3|)-dE~@K7YM%b&f5QcU6VF@%5^|L9S2;;E?^Y2ZP8BP_<+wQsz! zVg;rg!~EWR@c!!6_*jq*8?tE=StCMXVsaGKrcJ9?^B#Q?_o<>$p53qkltaZ;NNHA< zLxpNoE)T^UXkT*>DsQ0U^hQGW~}dE{Y&IM2xx$RMyzowrx9hXb5vCG(NsR zvU+<-@z>S{gERp%A&2m@tgN;5)-8?n`{WZ)F!fNWq~9{^vLV)}3u_by(Z$iD#3OtP zPVVC3qeu8$L^&UQR8?i~^|ecc6?|IYj71iw^P6u_dbBxH99UkSoUF)#QU>hA`t@{P zZrFflMZF1jW!*Z|8QCJZ9(#i-A{RtmBV<8|0h|!0V`l{56R#8Rt4JH-keQ9BEFumH zp_K!t)dcl~RUsXZ+|Z`zc2i%+DO9bkH8p6v>gvu;q7!2EaCmr_(GY!oV`D@sU0vI^ z@7}#LvbwtHvubMtM`rGz>IT8J)R5EEMAm_gLls&QA|5u8x^=FU%J@O2HLrv`qB_{= zX?phT=FLFB>NU6L0iy|FcYjqUQ&7;~KRtc_KFtPOx6;_^bdm{Vdzpvy?z`{2vvw^W zQD!DF2aBy5UTzAX`Dko)HJQx z?PFtV$`o*EhYw>3VZ}N)3n1JVE?}2tW=@}mAxTIO(h(yhBpCQ`!v^#Q&MQtY00`TP z6tKC<`LXS?AcEAj{mQmNG(0h00|Ahs#6%Ji${5DQIRM^O>yEi3L}UaCDJx}wQCFxX zI3JLaNrQ{f zX&Rb{%7PTc|M+5S*2Kk;w4+>(0}mWPB`SzVJrQfGyphO+gi}`+F}T;uY@5Em$;ll% znwlu4W~igrOJT(1Bytf9qIVH~x4WSs6awSw?hb{>8&I~*01m&O7)4QvhKNm1pFAnl z3z9@Ya$q(DdBPfWsqiDzn;h%qYStRa)pAya*!*fY8OQX{Gl>Am6ReM#3WQ~sVR^S zO&nhA4UYlFqRMnE2%?df=g^ch#8#xC?1oLFXoW0DM+Yj*?QUrq9o@Qh$BzB`IS~eU zk&_JxBZr27`~GGv&6J!lNZ!3MTOvJM_3rMtLz?;fq8%CD&!!{TEz zO~^X$5aIwyqGZV2w6>0p9yqXb=fp%)lZsVU`=|t%={T{k*vzDoY0LyB%XsxF^(iU? z^?2A|+Hz1(m~^T_Fz1AIs40{U03rmSFbdyExe$yzt^n`~$QCZI;&)V=$e}R|rjbFT zYcew(DmupP;x;&G4+9;8oE#d`$JgzI0FM?jo( z+7pbV20WYt5mvp7(JiJ+iDE)REX|%hrr8a^9;>P&C2&LY^6;<#Igkn@h4`G*6cPfL zOZ($tQIi58P+-`RwQE7F0PK+|6dvz`c)W*r1%Mth5Sd_Oa&jEh391nX@C!Z#CZ++4 zHZ^jEMA(pGe4GP%1_zZZWH=?py1Sd=h{i@TDJn%HfMkG|Bm}eH(t=jTey~-jEXwei zgGCT__iiWzrW8vM6F-<(#43=sddaPBck_ta45BSYGPR>b!Ua;1N@=`go1}<6W3{pYPs19d^WcS>;D8{*69l&#G7dr!%PSf7#;>%h5Hz z)44=z9+n6l@ad z$WjSds)l08W1XcKyDXy)(P*Bay`rN7_kx*l2M)lesi{;;QW}K=!f-0oj}+0y*Nb2f zYhZ9L<;wYA5jYhjkPbx!Nl5(4AJfQPx@{pOvCZn$)X}SS0{1x~!J#S$;$&_@F@a86 z;*p#j96%~kfX|7m+uH{QRA~at!thLRVU8B1K?}W$Be-QtNr^^i`+QUjlsQs{A;*UN;Sr8p_+=XE9Xr&dM6OYYlM91Eiq!?voxx9Ao z3QI|jFgttqZkkDJjUFcLL4C>b4XL#zP_*giuLAV*|@h=M`~QnheAs)uKg zB0MdSEPBu}4-g17M!pf~1po%s1u=1x9fUCiWlYV&7sj07^5MZ40KBrYwUzd0+DaIm zLPSBFK^q)Bq>YUvaD6^S{3ru8{A%!k$D;~8a_t-kgCCB=h?Zu&EV1^ZM;r-bipip* z5UV-UfyM#EOn;EK+NNUQSLh`1|j;74!3-d;(iiCqq{l#kI%>=K!PMRW_<5 zlZ?07ddMM%7}pp)7=?yPQk0IuTCw7tcTi0cykJs=~&Ff=1 z-~fUtjlm>g0y+=+Lh-al17v1)b#c5m^9`AELsF%srM!I07T`zxvcf_#>489h|F&&| zgH26TYc(`)&!J8!*(6`@E@DoWrzGN+@w!85Q=5gP(>i+rf^5T983 znp?%d^K51&B@5-{0P6teH~{2OHfV`rggOD)@A*$8_^-o9cVK|c8GsVT~+|G&QO z#J%b|JsbG>i>A{VhcycXNC<%h2wMONkQf#df~+B6L{Qm88FmPuEK0%>22>OV3Odxz zFhi$xT9tN+Qf98Jde!z{C?D?r-hb z*wWI~#e;Ztb;-*ZAB%07!#<2-XRzFe>gtM$QKKpAUM&;Z+ zdk!B4sC0E%KunPxI}RU4M%}W-t`2oVdiHFngBXkao(>P^n%R+qSXMV9k(M() zVZxX(SSTupHYB8naCXCO^c}e&@srYSHB9m%^CKypLX+q8NUAio%{ExspZ5G1bO>5g?S=mrs~X{Ya?QS zv`?gy1H{9;l3toWU$m6^U;^KSy$++lvG@hs%CGKBWu>qCe$=0u8gW@9cY}hhY!E; z#-T%d_8`dt8ee83TVz@^GzEED*D zGfh9-sPFrd@}`Kf_U_fNz;hiu$dEc>Su}hR)fVBu;9t4gAziX$#tiubPgC5DR0@Ly zi@H)(WOkS;WFfyt$POi2){<2Q*Gn>iRIE}O5p2oh4N0&CPD~pn$`;EebxJTsJcWF` zO0kbbGY*8@+G=E|4KujH3_dN^>({^fDsUcXvSo`bY(ao@f@d(eTfkap}a=Mo1+ zx35k4`@fHx=&f5yV=-Kbxyr`sFSp_^4b=|~+tXi9%1E^Yx@)SAJ4(@N+O(uVzU)1=(4*>=nrIrC5*kj z5=1|}w|Dz?QXn*Z%$SBWcbrCKZ$gl*)kQI^ zE8+X9kXv45ED(w+hpY*BG42K#&YKUeWUdBhI}7nET@CztqFR(apOPzQ*=qspAYwP#fk+BgtApt z(2D3=x$lgYaVuy$ylXb3h_3M0G1uJ)j4U=ob{;R2`{QQVB(YZ5E7=sU!GfT(5=09v_qGipDUKUR z$qx9GNDS#e7Dn3~-yhGzM1|3q`a4(7ldwZ7@Q~&4<4fL*gHDAIFd`R_QP$N}SJ&6e zT!m#Qb5bgmjm1xfjRucp#=tA8U1}b*8*)EZt~6{ErzOme?(W`R5WQcSMjsfj%NSBX z%Z3e~f1YWdw{8Jl(p3Mnc+>a0N6J3pX%qIt8xrw7xs-C#{{7zJ!2>`ImgSl??!m%^ zXgKKuVHNmI98M<7t#@{5n+Sk}rm~7KeaDT1htuQL6c|C|%#5EmPgWV^MUK z{QT$2Sz4!W2m0OWou(&$e5|9oDgN;VNz-LJtY^-vY`5?<4M}oFPJQ@tF~5- zA!>$%rbdCB92pfQUXCx3SzPe)<-NUo_Z~Td1fh7PM5UXAm=~6BU*G!m-Z8O0e}vS{ zyFB;YmtSI8efQnHdl0ZttP3CVw6V&oU|q#s7q6!~3H_QuHEwi<9sl{ypM9pHqsbKz z>JGReSvEH$8^Rg@QM$Uc<=KXyxlX+M#K=vbZc7U0>Ny2Aan0NU?(a7kAD0b zKVI23?6Fj4`5I}m$hDMFyj~c+5y8eXvA@X06DBk@Q8jOA5xSv1IyrdZ&CRCjIQ47S zdgF*CGd9bXL4V(P1AL-SkwDss6Bc3BDlH3Jw^AhJLp1x?5FjOf{ocLo`@@H%^2_QA z#a2AstRNpL&oU^|z8s0N@$$Q3JGO0m@IYtOH{a~tn~5Ec18N4Hs#$@=i6M&UC8XEetCw|j1SE&?*VeYQba%J5a!FC`z~D+Xk$JPII(MBo@jK-dzXIj) z=4}cJk#diqS%559wmmy`aPWMJNlj#-{`PPG`@cE%yLaizKYij0A5w(CA<{i9@l;m9 zDsPBiwc{*b{&#d3v|DY>D`j z5IuMm2vud94Je>iet?%rWgTpo18GgT{@}G@BezxPppb#bBIbl-XIex-7Pt5qKFq#w zMom^i4Z`%fGdc3{hUg2GE%NDUB8}j(ub8< z;aj(^UXAC7j=gOg`u6Lu@7=p?o4gnw5ERKLna*U|rBFi8lXKJEeeYfx4es1owJL1_ z#RkMwJ$*;Qk1tDFK3!idUd&Zb4~7dYz|1x$*P(#J0aB&5f>F*@_~QKp$zmt-uxHF* zp1AwwW?@eHs^ktKy=6LEmekLTB)igth4wy)^okVQcN8zu3}Vbpn^>iJ^GZrCsuf|? zp#m{0&g{H-jg6{hA`7)<50y<8zNf2Z((AuN|%vvfNwos3IF%&J87IIS9 z%{&Cu*m&+jX+<=e`^UU$j$}$ck73TECP5gtpdXY(J;+Z;C?|d{^X*Q%3o?%7_ z>$T6KOGy`aGT)Iy!&fVPAU`?6jHfo)(zI#L)BO2jaM3nG7mA}`PE{gA7!tuPElZYY z*kN3xPOP82!(+R!0aNf$K=zvAf@Ya>iFUnh8&Bfb{rk6W6adNM?*u=>qdpk zzhP9|mS>+$VOH}dlf(-+W|0|lT=|%g5t^U8&>E&rm4(<+?mBr1bDZHW>D=$=P$gB+ zmg+(v*KD=kox^?^k;}$VhnnUQUPS5ktn_^o@dcOb8=kSumtwMDzs$$donL zHMO=hD}-Q8_>A9Sn6_^xWV3N&SC>tc(^wGBEfW((7TN(LwAF6Fa=aBbUI_m^M3e;-2j@ZpIQ;vlFT38}DYI9@psG)q_u7)ckc zPRb0PU%FJUA!FvH?5es4*Nt)(&k=3XPjdKNH2dC2!`v6HZO^4Y?KCCBz90)Qv8K)h5znDI`i%A443dv zZDjLiTd2oy&z=n%(7CZ}ZIT6*4Y++7I@j5G_b#1=hY#=FTeXUBV1VMTiw_Z0R_VZ3 zlF|Dw^L&bSpKI5M13rBCyWcHY0s?2_Bb)BN3r1OUUcwr{oZN(I)0ixAUzVFO3L`5U z5+NGWQ&E@mdv>Mhf&{#JhA3HkDz_$*?2aH-i_q5rrU&T&r7@x8Y+$s4J_1p5GS5BN z-0ZY?v^cq3tT?V{{Kv`Kko=torHvKgC0*YO769GlCj7*vO|CZeQV!mz-ZTY^*Vs{K z2H81s{sx=U`+4-}*fGIm(cm2VMd4L!lco1>L+~jk5`;!X&oqO)UwsuKmoBEr2HKD) zAF}pbwh&(;EWnLx=JY|W=@Kk7<#?NzHUW>DB?`6Rsz^RbCX~3*Y>2NVIdo4PJLE$V zmc*1L;jhy<{P>1oW9L$F;T(GA@P)`?ky(4TQ!HZJT+WEmGaivlAiY=hfc^y_lH zxfhAM7>mrsirMJy{^KA0jPJht@IxjFv0N19_s(v?9*zKVnraXo8X9KJiZ)^>NVkqlBRd@jmC zQo}eu^rPTCPB%rNB}@AIjo&kD;>|amtH{eHJxyi3s0F6_QIw!!;QZayt3=Mf`R4w8 zky-$6it^a^nd}?&Q7+!SXS9fDi1h-x3SHgF5P-ahjA4+3?Hf_{Wb6(k)EjEdra1Gl zDvq*GtI!u|Ob03&Nh&Ui#Xf~J@(B$H*u_mc^U@g`Vz7b};6gS&c_G@%9t6m)wJ^X< z5uF6Go;6E(lm3%a3ng>*1sA_(sjo$@G>XpvahR)9?_C~vV^cqV?bwGO2rJFq+`QRGICVN$7wqY8KFen1xgGJiju8& zgy{tF5!+?7tH*UZj~q!h^6j_%{RN%0T)IuVn0AF|qJ#%*OL?l>w6$rNNsbu+Kw4^=wG0q=9YJgyOzK2CAv4 zu4dk>4E7ZxE`5Xu<2b6n+}!MU`G*DH+f4~AKLkmcD^bVlYDQt{Qde-+EV2WBdS;NIhdG7mp75`j zkOH+u+6?(jJkJKNT`SfiNA~AGA3chMS_av(HBVEsBV&`>vT~)V(t6lG_&{JE=?W%U zT5GwyN9e5Xt~gHc8l_Q<+y!Wkxo-;{Kb3Ju5?OT2n99m972T0E9wbvCZsvQ@R4i!1Xo;()+&miV(@{xX{Hzx!QJPoRFU=g-%1cC{>hx+WyariP^I!1126l>hDjZrp%gc z_cJs6Owq)Blp&aA!-qI4Oq5cL5Nd?GBhE{{25hI0}| zurhDNid;)@H0(y3i?fz)#dM%Zg7hB>d($$RA#(te5XQphXl%^TaQ~*e8yWf9HD1KH zp%-2#3Q$F5uxzTzRrRi}U;jE%e|PQ(O;~$p)Nx^?q-);YQIhw>WHDOKsiQG|d_HL^ z7K;`+yJIjnpZzi6lj7JQ+6*wYaX1hnX@3hU8~BUm-*UtLf;# zfQrCf1_fnyZe3kfl_(_IY{V=?P^m~Du)g@BKG}y4zy0>mA+dd2c_w9saTQ1AZsw++FF!B@g^+px#!fvBa@t_ zokW*(5u;U%n<0@Oy?6KQc&w4O4}5M*&RWBf2u{*O&BzgzL_KaNz<^ zc_R!r$~DYWBuT8^_5uG*ni$w7{`=4;@rcu*BKIQK(Qz$NqJe zhuzIwIB|~fI!Tt$02Oc1qMJ8KFNw7>)+?A*<_|;>E}Drx#fA;P{jJL2pZ+vB81f$z zR9P7|dJv}+6g-3CgM$(gH}RC=juR*HrV6}Lw)S?8I>gVQ7d17bMvWfrQxp2L0X#{5 zjju>JY(uztH_7rd?1BMzBhi?=1e6o=2u>-5Xrrp3rCF@(ws4HeE}dmxjbV!l0Vk|7 zU@0*%^bSp$gr6kgqSb&d5dt>83WE?HlC&}XLmoaEJ{K<}<~4L;q%RzlB84Lr*w^=; z{|VXpum3uADsy!UrNm6v_530*fcE?EQ<;1CkVH6YXtdw6C1b}jlPp1ers&3f*1Cp# zp&X@x-rP(OL9J8iY|$biOJvF%N~-X?q(z zdid~BqeNtUX_QFApiWRt0FY`ea8Q!taHoRZEJ1=7*jXwTwgq$9P3!L7 zxRJ09pkBfoA0qgWi}N5cfiYxdwQHV=$4Zxot%4p4frk%&=9yu`Mm&Dm7gw{ZIZLN8E*8lKPjSl@ zXWBw%Dm&{sdh}0zGHR6I*)+hgAp>BzBT3)nuz(uE-;4@WiXj>pD9e)7q7I)ttz`KltdaIllVr5`#tDV9 z9hCu4d@6=bO|GS_@Rp5@s_V|NkH<7QfzBNQ!%Hu@DQ#^wmY48wRaMVCGhzfb3xb8w zi!d|+vY}hW^fzO&z}jgTqWTWG{rq$D2qVIjs$Ymcw&~2744;4aaK{e#1A3IC(>KOk_Vi>*uvk(yk*Xo{#fc}nVyYM?w`SZp!T;#dZiuaL zi})Bfh?#Rc{H=b&kVzLTfUFC-xdb<`ln>2JWv-I)lf8BpSiofA&Vv)-ObPoK9)2L5 zcTS+K;C&cCSusOIWf7-j^JerPrX|e|&daD#!F-rAcLJgXaV=0Eic&Vw9igYad-oS# zWT2687b!z!Q^HtmZ-4Q{2M>hD|M4FuPr4aC0WB2L>!{ns^BQz{x}MVl%MeqX{p?^)*aITf%hlVq?an*BwF- zA_jA*C}-7d^pieymQ|%9DhtU=BYhgdt;v%MX>Bw}IW>bK*vm&{-jGRy-)5M#bO)DL zD2Gb@+H0FP_w{vlx}KaQFaaPV(VRTlAQ;V;!IB(=jI$JxDd%9xll0T}_St7WJpoTr z%NHXO!TIPTL^$TEy`8sU{CKtJpLg7vn=Kea;l4))G!1)-$pUk@0vc$j4AKD_V0bT_ zvYTD=Po2sq5Y$Vm6^3{a1j(92aoMt+JOA}xp<1*RS^JC@%ZR(BOW%0o>#u1hK76=+ zyXTEkk2VU?6C*Wssw@GhC_Qz)GnX-<#$rb|({W(1xqQ`3>Z}Zt?A!{l36`GEh^O#p zu_lK;=8054`{7UJo?HLVy^GkI+&ttFH#f>cEK^lg$-|}+09FfxCajI%P;%FBeAAp2 z)TyC?^0|g*9fV4jhS;Y^ksLE{a`tQmP^K%Qe9ke<)-8~`%AQ%;`ufahqHI`Q%?L1; zyq9H42X~0BSFf5&XfDEu6QMU}H1hK0d-s~=tXzBj`m9+hGLSZ(DHTxcsg@Qd21sgg zAZNjr-4%9#X?6&0NlLP^1D)#i^}1?BM~-DuVfV#n$fN}SPct;nk#MKJo?&ue!g1%s zQxBCNrHe{95J*4WCXY9ysFVd7kfqvJxj4XGP8;kdkCBd`%E}QVL`iOgx12k-qhs@C z9qgGwr9+Re0UZhzm>nPluK-1MQgf<=e?WNeBHf~m8!$UvN4BLHR@d0r({ukmw=GHh zd~fhmMr`g}gfZ7%x@JqnDnPuT{P<66)*yDf zaXw6X@6vnXE73!UKym7F2_u~}7n(VpK7Hp-w?I?DS6_Yo^&kKE&;NY?zUgn;oWUz+ z&oXvOuF!yD91-3O0?y*azMdRp`gCSRLji&Z)9B~NP}?NtMX-T=vS0xNElQGe6`}y? zODD@ea-`Ua4Pk^O%lrpsPQmO&9gJ*<^?~OVCNK()qD?UW%$cP~JO~XTQWX^wCM5G< zYvl(t1`0bJo zZ0_7Auid-<;U6+TBoo@)jjzA{!yg6*Pn_7Yg*gy0`b=(wpTj4Kxgfz7((BKFQ^V28&;uH`h06Q`OZB4j1d*B!*GONm*Cs<74*ro<4o((4|WsJbqoda{2O^ zGw03?4PCwZ_S=^(_4Q#DYO9fPM2I!@b5ABa(J2fh3T`dz;60%Rvhb#+$bv%))YK7q z(){mMR8}SvxA08&`0;b*95~S3-Oyl*;8fMs&bn;~0RuBDBt(gzm5A1f!!1gTKrFwN z){o}qQmS1k*QQgHv*Itr0ZbRCDsx~2gr|wB0SlWpb#|I~;G{u!={exZf>-3d)27*0 z_Yds>;jE=a2H`|xzF9I~iIr>5?iR|1;`m6aI$>;i=AYHp_V&L0_JISJE?s&2x^w6D z?epgc2QOT>cCEjEXsEBRkhE||Lc9>a@Cx~JM3_Zw>444WbSNVM5J6+PgNTTHg1kh= zEtY~sjTm9^l4`cK9Y5aP%@=rnpFoOi^O>PkSOo?Mt2zbJWx%5)k@lTwa)>a0eSOKJ zL_V9%mLE8k9xWq#YHOVb7gCkbZl_^J)ME5EetRhW;sjiG`7=W5%$XURWg#?AhkQq} zMmvzm#Ue0X0!M&0MK;M{2Fo!Z(Nq_G_|+Y$soA>qt+x&yyl~;trJvJ9%AwsNJKOTyrqnoNyW)?*eSgt9ZKa~gv}++}kjh~+aXdC^yT0xkwP zwscA->~;`-`}*D+$Y*!#Fr8#@@YE@UzQMsWXU?C0@4cHhj~?B( zucs&SVafG9ulw(lOrAV)B>S&nAl-a3W(c)2{M5lbG10i$K~q85oz>NHJLv@6*iT(fDYa@ z>1XO`ybNE42dVJIJNd9=1katjaA9yz$o$Sbr%s(YbLrCc>#x7QbLZN%ZZg9=Wr{^j z2|79@(ol&ZXR98l-kzL@VJ$+?$hpZJEF0t+%o6BGV1d}7io&xI(G`Vd28xRLxN#8V z5Wk}zAuf!tcgse4 zYFOqtAwvn?%u*Mz$QMk(phHKJ$+SXod0m|<^~#kNY3b5ct4Q;sHOO<5AUUBG72Y+? z`Kc+|q)C%}WFIQM82k1eK79K0g$uWCUA%bq?1vwoK0Pq-(MLCL9y)aH-0Ib~Gh^yR zjkcCYKq^S2=4`6}$e+YQDJ+DSVihpLWY|lW+D_Y%STmNM(G&pW-_4uX)6?22gR!V? zFXn)rl612~#nLvU>=$Dd{vscg8C99Y!?XfyN+EE;Sd)QE`$mjN)i-jcDZgYQ@{Adx ztM>NfxikrUC?5!vJa3-FPK2)(M@n|%#yN8=1^exmu%K;iD^~ROu39x^3Nt196)FXa&z}9oFFyL{$dUKn>+CEG z9|<#M)FBi_(JE%lM`zn3+Z=LIL5y{~!vhcydtO@**%-5M$z3vCJY9SH?%iEo_4Qo3 z=&Qay9GJ+p%VTVm4X_~@N|DwaUriL4Vnamz5hzL`{>1y$)p7x$ovR&(TYzP$0Zg6B zVlG)CRdla{z<>&f3%DuO)x(BOo2I}cGsdQ9ZnoX2G{XZxZYm{9m)6$WjGz51MNLNm zb0uxZ07ZAxhhb+6AkxbHllBiyv-b2oCyX-Rw{~qHN7vF)qFeattkl*RU#3Evr&n+tYLSaA&8l{Oo7X zJTr3SS_=F^3qvGvMTO1}NY3~DWGVJQ=>wD>?l`E0eIB$>0zB`46v?lO`p$&WTV!+~% zgEH6FVnZ?yNmkvN&d#^rK6GekXkcLPUZ(85_XY>0g;%fc-1++Jix#FKgIA zFG}}g26h8NBjKO$feE*rA;6~1Jlvgm^PnG$JVK#+QbInCQ!fHwkxpghuwg!wH=Z)Z zN90+!MX6%!yZr|?+Bm@?U<5l6wyPk@R|s*jvsly68AK#`b#_jflBzR@&U}p=`PYBV z5IWoH6=D1_7lkWzqD=UC_g#shK{J;wxgj@heDJ}MBS(*RbOeKS1Mt3L2AoJ~+=vlB z`jL|?96?|6+!8rFnN;*WWsFUzwC<|~qz4ow>PY$7))g!I`@6gOUV{i?s6er35VkXS zLg@~ojaZwTlJ;6Z-$BXHLUADDHD^wVsY&V-iTEHkHXy}%E|n!_bYQ;DsT(w5g7U3Q zSGXn-1DD_gt0si;j#Xt#$XzOA>DDF_poXX{<}Nfg`nfV;+woU_RaFHDRIZYqW{d;# z$ZT+o^X4&GCr@6v^6|&N`qeLgIXHOw^tp34ZVU~*_11|K?d{B)t>o9D+g8jL^fy2G zNo8gF@l#XK?Ey@p;)H3bn9X~HB3KaLZu#JO{i9zA^c`0=5k_uv2Y)A!#$cMg_y^X8>XZ@tyu&toOE^vneTFP$OGEMJug z&k0EC>*XFaDE&r6F>apeQgR+O%4d9RvQjs*0DMT)n~MS~pn&PJ6;Wpv?1hcx#5fCLbRQal zl%}t%ssci?MU%4$RBP6tIBeb8(J^Ms$dOG=n>KCUynemEGa$ULZ{|$fZ?S&-p1nR$dLPx`!wgrx5<8A?<{(>%cmt0*S^oHC`aZ~y+bwz@iY1k59v z3%O5+qOFBCOZg&@>7b_k?YnaG7&2jt>?UH0&pun?!s8i2nNOcaf?d%Sa#yJQ=^IL^ zil<@wgTwM5F8!Q2{ELg}&s^Euxin9Nxjal;8#%OP%V-DTLlN{g$!+>{W3d4zB9@H) zi3ylKJt4(Ue_Bxy@7C00>MlTW-@ftVySs;m-hJ1G{Nfj;wky@rsRoLqHUTZdD4Rdu z(+jh0O6Y4b(-}LgGu>Prb-kjaFn}K$ki?I1)>-2QQ$E*ub)7s1EXSqqW51;s`*!Q81e}QRSi|Ckk`Um@Ia5{CH8iSGvIq z^gvZaO`@gc`0;}W2L`TO85%Mkr%sthef|0;pZw-G7cZVU^Y+^V1D||y_Ux%s`}S$iRNePXspAFW z_p!6I4xrm8mk^$Wk7%o#n>{PykD8*0EB$}a2j80+>g+;m>l<(M^l-#YO_?r=JMV;h zg=GNm!dbz~1o;CX!@jXef^fDe{RD6?q$&B!{{SY2piU{~keL7g002ovPDHLkV1k%v BJ&FJT literal 0 HcmV?d00001 diff --git a/images/yield_unsharpMasking.png b/images/yield_unsharpMasking.png new file mode 100644 index 0000000000000000000000000000000000000000..c8658973da9e316dd487e4d93f3c8c591a12f5b0 GIT binary patch literal 29402 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�R6%1KmSx+yk;BdR8=-$JWru1OEQF;x<|})fktg*wiSm2fH-47M;3d)fsS!3 zik)7j2{al(+n&h}KPT9uneradBM{d>b@m*sdL@4xtu?VSD^O`3i~t$pxmG z4@Y`AoVst0&i|(WsX2@`gOS!$@MY^FHmVv6CT({RYgizCGl1j7w(U?uOs#W}sk?nb zO8_-Ok6-;tD+Cui(NrNz#BsX5aXP?8mXxsI7)_}Ji)&0USy`6)Z3`)KbYNwuk;B8v zB0yOH4a5Nr7Hy{$;v1NLl|K=;yQA^-{&L;?=+OP=d+%;wX>b)NN?;#I`k=Zh4-fFm zr{gXfY{Y|KBd-E*`*_@&gnPreweCpj8NC|bPi`ZWFMhgv%sTYs9eDosKYW&o^vXJ;s3&ya*3ROUdFN!$ zyQeRT$)@w-W<7ayStDvy<{TX1JLN+eywi|nu<>?$F!%}p=sl)b;Xz8b7|2e1Upxn3 zCSOhmZZOsfZp%zz5qnK2X#zG7NnLd!2j@kL52*m1Ga|Vc`yN7QYg-I# z89$C++-*-fJx{y!2z-XRZu{+%KR5!X!+`b0^Cuw(w(5A6k2TBPJ5X#1|A`e~1Xm4XJ6A|hy2DLx=;j4eyo;^tALhNJ*gGp*h^OgjCO3pq6rkW-HrBaOwpqJ4*28{FnXwS4Duf$$ zP&=r$v@7qCFP6A_ItunXXY(Ctc|55k+61OYFVtf+R}t^4W8y;_zJ|L%j!YXIxfvAh|b#VEAf z8$F6}E^^LMUz;E`5-g}*+G1!s62sWnn+|wcg0m+tegj{h@4JKmB5_XI-rA`^ec5hgb5$j}S{~xD}OYvM1fW-g+002ovPDHLkV1ku2{}%uN literal 0 HcmV?d00001 diff --git a/src/Graphics/Image/Processing/Filter.hs b/src/Graphics/Image/Processing/Filter.hs index 65f7c03..83eeb4e 100644 --- a/src/Graphics/Image/Processing/Filter.hs +++ b/src/Graphics/Image/Processing/Filter.hs @@ -33,7 +33,9 @@ module Graphics.Image.Processing.Filter -- * Gaussian Smoothing , gaussianSmoothingFilter -- * Mean - , meanFilter + , meanFilter + -- * Unsharp Masking + , unsharpMaskingFilter ) where @@ -231,3 +233,26 @@ meanFilter !border = {-# INLINE meanFilter #-} +-- | The unsharp-masking filter is a sharpening operator which derives its name from +-- the fact that it enhances edges (and other high frequency components in an image) +-- via a procedure which subtracts an unsharp, or smoothed, version of an image from +-- the original image. It is commonly used in the photographic and printing industries +-- for crispening edges. +-- More info about the algo at +-- +-- <> <> +-- +unsharpMaskingFilter :: (Fractional e, Array arr cs e, Array arr X e) => + Border (Pixel cs e) -> Filter arr cs e +unsharpMaskingFilter !border = + Filter (I.map (/256) . correlate border kernel) + where + !kernel = fromLists $ [[ -1, -4, -6, -4, -1 ] + ,[ -4, -16, -24, -16, -4 ] -- Uses negative image to create a mask of the original image. + ,[ -6, -24, 476, -24, -6 ] -- The unsharped mask is then combined with the positive (original) image. + ,[ -4, -16, -24, -16, -4 ] -- So, the resulting image is less blurry, i.e clearer. + ,[ -1, -4, -6, -4, -1 ]] + +{-# INLINE unsharpMaskingFilter #-} + + From 6a47960bc7a9ce9b57e6530dc13c1b449ac6140e Mon Sep 17 00:00:00 2001 From: khilanravani Date: Wed, 8 Aug 2018 00:01:21 +0530 Subject: [PATCH 22/25] Salt & Pepper noise version 1 --- hip.cabal | 2 + images/yield_snp.png | Bin 0 -> 45119 bytes src/Graphics/Image/Processing/Noise.hs | 81 +++++++++++++++++++++++++ 3 files changed, 83 insertions(+) create mode 100644 images/yield_snp.png create mode 100644 src/Graphics/Image/Processing/Noise.hs diff --git a/hip.cabal b/hip.cabal index c5ad824..9db522e 100644 --- a/hip.cabal +++ b/hip.cabal @@ -45,6 +45,7 @@ Library , temporary >= 1.1.1 , vector >= 0.10 , array + , random Other-Extensions: BangPatterns , ConstraintKinds , CPP @@ -70,6 +71,7 @@ Library , Graphics.Image.Processing.Filter , Graphics.Image.Processing.Hough , Graphics.Image.Processing.Ahe + , Graphics.Image.Processing.Noise , Graphics.Image.Types Other-Modules: Graphics.Image.ColorSpace.Binary , Graphics.Image.ColorSpace.CMYK diff --git a/images/yield_snp.png b/images/yield_snp.png new file mode 100644 index 0000000000000000000000000000000000000000..ab0e8565d9a28f1a2294fb0192cab3024c1cd31f GIT binary patch literal 45119 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 D+LJQx literal 0 HcmV?d00001 diff --git a/src/Graphics/Image/Processing/Noise.hs b/src/Graphics/Image/Processing/Noise.hs new file mode 100644 index 0000000..0098570 --- /dev/null +++ b/src/Graphics/Image/Processing/Noise.hs @@ -0,0 +1,81 @@ +{-# LANGUAGE RankNTypes #-} +{-# LANGUAGE FlexibleContexts #-} +{-# LANGUAGE ScopedTypeVariables #-} +{-# LANGUAGE BangPatterns #-} + +module Graphics.Image.Processing.Noise where + +import Control.Monad (forM_) +import Control.Monad.ST +import System.Random + +import Prelude as P hiding (subtract) +import Graphics.Image.Interface as I +import Graphics.Image +import Graphics.Image.Types as IP +import Graphics.Image.ColorSpace (X) + +-- | Helper function for generating a list of random co-ordinates. +randomCoords :: StdGen -> Int -> Int -> [(Int,Int)] +randomCoords a width height = (rnx1, rny1) : randomCoords g2 width height + where + (rnx1, g1) = randomR (1, width) a + (rny1, g2) = randomR (1, height) g1 + +-- | Salt and pepper noise or impulse noise is a form of noise seen on images. +-- It is mainly caused by sharp and sudden disturbances in the image signal. +-- +-- 'snp' generates this particular type of noise by introducing a sparse +-- distribution of white and black pixels in the input image. The level or intensity +-- of the noise to be introduced is a parameter of this method and is scaled +-- between 0 and 1, that is the input Noise Intensity has a domain : (0, 1). +-- +-- <> <> +-- +-- Usage : +-- +-- >>> img <- readImageY VU "images/yield.jpg" +-- >>> input1 <- getLine +-- >>> input2 <- getLine +-- >>> input3 <- getLine +-- >>> g <- newStdGen +-- >>> let thetaSz = (P.read input1 :: Int) +-- >>> let distSz = (P.read input2 :: Int) +-- >>> let noiseLevel = (P.read input3 :: Float) +-- >>> let snpImage :: Image VU Y Word16 +-- >>> snpImage = snp frog thetaSz distSz noiseLevel g +-- >>> writeImage "images/yield_snp.png" (toImageRGB snpImage) +-- +snp + :: forall arr e cs . (MArray arr Y Double, IP.Array arr Y Double, IP.Array arr Y Word16, MArray arr Y Word16) + => Image arr Y Double + -> Int -- ^ width of output image + -> Int -- ^ height of output image + -> Float -- ^ Noise Intensity -> Domain : (0, 1) + -> StdGen -- ^ Instance of RandomGen + -> Image arr Y Word16 +snp image thetaSz distSz noiseLevel gen = I.map (fmap toWord16) (accBin gen) + where + widthMax, heightMax, noiseIntensity :: Int + widthMax = ((rows image) - 1) + heightMax = ((cols image) - 1) + noiseIntensity = round (noiseLevel * (fromIntegral widthMax) * (fromIntegral heightMax)) + + accBin :: StdGen -> Image arr Y Double + accBin g = runST $ + do arr <- I.new (thetaSz, distSz) + let coords = take (noiseIntensity + 1) (randomCoords g widthMax heightMax) + forM_ [0 .. widthMax] $ \x -> do + forM_ [0 .. heightMax] $ \y -> do + let px = I.index image (x, y) + I.write arr (x, y) px + forM_ coords $ \i -> do + let a :: Int + a = uncurry (+) i + if (a `mod` 2 == 0) + then do let px = 0 + I.write arr i (PixelY (fromIntegral px)) + else do let px = 255 + I.write arr i (PixelY (fromIntegral px)) + freeze arr + From e2181cfc9500cbbb49d4d4b44a5459ed8daa76f5 Mon Sep 17 00:00:00 2001 From: Khilan Ravani Date: Wed, 8 Aug 2018 00:14:54 +0530 Subject: [PATCH 23/25] Minor correction --- src/Graphics/Image/Processing/Noise.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Graphics/Image/Processing/Noise.hs b/src/Graphics/Image/Processing/Noise.hs index 0098570..a4b388d 100644 --- a/src/Graphics/Image/Processing/Noise.hs +++ b/src/Graphics/Image/Processing/Noise.hs @@ -43,7 +43,7 @@ randomCoords a width height = (rnx1, rny1) : randomCoords g2 width height -- >>> let distSz = (P.read input2 :: Int) -- >>> let noiseLevel = (P.read input3 :: Float) -- >>> let snpImage :: Image VU Y Word16 --- >>> snpImage = snp frog thetaSz distSz noiseLevel g +-- >>> snpImage = snp img thetaSz distSz noiseLevel g -- >>> writeImage "images/yield_snp.png" (toImageRGB snpImage) -- snp From 34f48df37a0dc3733444b20e459bf9395b1c6034 Mon Sep 17 00:00:00 2001 From: Khilan Ravani Date: Thu, 9 Aug 2018 18:48:48 +0530 Subject: [PATCH 24/25] S&P Noise PR Corrections 1 --- src/Graphics/Image/Processing/Noise.hs | 42 +++++++++----------------- 1 file changed, 15 insertions(+), 27 deletions(-) diff --git a/src/Graphics/Image/Processing/Noise.hs b/src/Graphics/Image/Processing/Noise.hs index a4b388d..ff4eb72 100644 --- a/src/Graphics/Image/Processing/Noise.hs +++ b/src/Graphics/Image/Processing/Noise.hs @@ -13,19 +13,18 @@ import Prelude as P hiding (subtract) import Graphics.Image.Interface as I import Graphics.Image import Graphics.Image.Types as IP -import Graphics.Image.ColorSpace (X) -- | Helper function for generating a list of random co-ordinates. randomCoords :: StdGen -> Int -> Int -> [(Int,Int)] randomCoords a width height = (rnx1, rny1) : randomCoords g2 width height where - (rnx1, g1) = randomR (1, width) a - (rny1, g2) = randomR (1, height) g1 + (rnx1, g1) = randomR (0, width) a + (rny1, g2) = randomR (0, height) g1 -- | Salt and pepper noise or impulse noise is a form of noise seen on images. -- It is mainly caused by sharp and sudden disturbances in the image signal. -- --- 'snp' generates this particular type of noise by introducing a sparse +-- 'saltAndPepper' generates this particular type of noise by introducing a sparse -- distribution of white and black pixels in the input image. The level or intensity -- of the noise to be introduced is a parameter of this method and is scaled -- between 0 and 1, that is the input Noise Intensity has a domain : (0, 1). @@ -36,25 +35,19 @@ randomCoords a width height = (rnx1, rny1) : randomCoords g2 width height -- -- >>> img <- readImageY VU "images/yield.jpg" -- >>> input1 <- getLine --- >>> input2 <- getLine --- >>> input3 <- getLine -- >>> g <- newStdGen --- >>> let thetaSz = (P.read input1 :: Int) --- >>> let distSz = (P.read input2 :: Int) --- >>> let noiseLevel = (P.read input3 :: Float) --- >>> let snpImage :: Image VU Y Word16 --- >>> snpImage = snp img thetaSz distSz noiseLevel g --- >>> writeImage "images/yield_snp.png" (toImageRGB snpImage) +-- >>> let noiseLevel = (P.read input1 :: Float) +-- >>> let snpImage :: Image VU Y Double +-- >>> snpImage = saltAndPepper img noiseLevel g +-- >>> writeImage "images/yield_snp.png" snpImage -- -snp - :: forall arr e cs . (MArray arr Y Double, IP.Array arr Y Double, IP.Array arr Y Word16, MArray arr Y Word16) +saltAndPepper + :: forall arr e cs . (MArray arr Y Double, IP.Array arr Y Double) => Image arr Y Double - -> Int -- ^ width of output image - -> Int -- ^ height of output image -> Float -- ^ Noise Intensity -> Domain : (0, 1) -> StdGen -- ^ Instance of RandomGen - -> Image arr Y Word16 -snp image thetaSz distSz noiseLevel gen = I.map (fmap toWord16) (accBin gen) + -> Image arr Y Double +saltAndPepper image noiseLevel = accBin where widthMax, heightMax, noiseIntensity :: Int widthMax = ((rows image) - 1) @@ -63,19 +56,14 @@ snp image thetaSz distSz noiseLevel gen = I.map (fmap toWord16) (accBin gen) accBin :: StdGen -> Image arr Y Double accBin g = runST $ - do arr <- I.new (thetaSz, distSz) + do arr <- I.thaw image let coords = take (noiseIntensity + 1) (randomCoords g widthMax heightMax) - forM_ [0 .. widthMax] $ \x -> do - forM_ [0 .. heightMax] $ \y -> do - let px = I.index image (x, y) - I.write arr (x, y) px forM_ coords $ \i -> do let a :: Int a = uncurry (+) i if (a `mod` 2 == 0) then do let px = 0 - I.write arr i (PixelY (fromIntegral px)) - else do let px = 255 - I.write arr i (PixelY (fromIntegral px)) + I.write arr i px + else do let px = 1.0 + I.write arr i px freeze arr - From 4946b65d41efa1a3e95811b36e3ac179950b5ed8 Mon Sep 17 00:00:00 2001 From: khilanravani Date: Sun, 19 Aug 2018 18:53:52 +0530 Subject: [PATCH 25/25] Gaussian Noise Implementation --- src/Graphics/Image/Processing/Noise.hs | 98 ++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 src/Graphics/Image/Processing/Noise.hs diff --git a/src/Graphics/Image/Processing/Noise.hs b/src/Graphics/Image/Processing/Noise.hs new file mode 100644 index 0000000..0be7a2c --- /dev/null +++ b/src/Graphics/Image/Processing/Noise.hs @@ -0,0 +1,98 @@ +{-# LANGUAGE RankNTypes #-} +{-# LANGUAGE FlexibleContexts #-} +{-# LANGUAGE ScopedTypeVariables #-} +{-# LANGUAGE BangPatterns #-} + +module Graphics.Image.Processing.Noise where + +import Control.Monad (forM_) +import Control.Monad.ST +import System.Random +import Data.Random.Normal +import Data.Array.MArray + +import Prelude as P hiding (subtract) +import Graphics.Image.Interface as I +import Graphics.Image +import Graphics.Image.Types as IP + +-- | Helper function for generating a list of random co-ordinates. +randomCoords :: StdGen -> Int -> Int -> [(Int,Int)] +randomCoords a width height = (rnx1, rny1) : randomCoords g2 width height + where + (rnx1, g1) = randomR (0, width) a + (rny1, g2) = randomR (0, height) g1 + +-- | Salt and pepper noise or impulse noise is a form of noise seen on images. +-- It is mainly caused by sharp and sudden disturbances in the image signal. +-- +-- 'saltAndPepper' generates this particular type of noise by introducing a sparse +-- distribution of white and black pixels in the input image. The level or intensity +-- of the noise to be introduced is a parameter of this method and is scaled +-- between 0 and 1, that is the input Noise Intensity has a domain : (0, 1). +-- +-- <> <> +-- +-- Usage : +-- +-- >>> img <- readImageY VU "images/yield.jpg" +-- >>> input1 <- getLine +-- >>> g <- newStdGen +-- >>> let noiseLevel = (P.read input1 :: Float) +-- >>> let snpImage :: Image VU Y Double +-- >>> snpImage = saltAndPepper img noiseLevel g +-- >>> writeImage "images/yield_snp.png" snpImage +-- +saltAndPepper + :: forall arr e cs . (IP.MArray arr Y Double, IP.Array arr Y Double) + => Image arr Y Double + -> Float -- ^ Noise Intensity -> Domain : (0, 1) + -> StdGen -- ^ Instance of RandomGen + -> Image arr Y Double +saltAndPepper image noiseLevel = accBin + where + widthMax, heightMax, noiseIntensity :: Int + widthMax = ((rows image) - 1) + heightMax = ((cols image) - 1) + noiseIntensity = round (noiseLevel * (fromIntegral widthMax) * (fromIntegral heightMax)) + + accBin :: StdGen -> Image arr Y Double + accBin g = runST $ + do arr <- I.thaw image + let coords = take (noiseIntensity + 1) (randomCoords g widthMax heightMax) + forM_ coords $ \i -> do + let a :: Int + a = uncurry (+) i + if (a `mod` 2 == 0) + then do let px = 0 + I.write arr i px + else do let px = 1.0 + I.write arr i px + I.freeze arr + +gaussianNoise + :: forall arr e cs . (IP.MArray arr Y Double, IP.Array arr Y Double) + => Image arr Y Double + -> Float -- ^ Mean + -> Float -- ^ Sigma + -> StdGen -- ^ Instance of RandomGen + -> Image arr Y Double +gaussianNoise image mean sigma g = accBin + where + widthMax, heightMax :: Int + widthMax = ((rows image) - 1) + heightMax = ((cols image) - 1) + samples = normals' (mean, sigma) g + new = newListArray (widthMax, heightMax) samples + + accBin :: [(Int,Int)] -> Image arr Y Double + accBin new = runST $ + do arr <- I.thaw image + forM_ [0 .. widthMax] $ \x -> do + forM_ [0 .. heightMax] $ \y -> do + let value = (fromIntegral (readArray new (x, y) )) + let px = ( (I.index image (x, y)) + (PixelY value) ) + I.write arr (x, y) px + I.freeze arr + +