úÎd70417»¬lJŒ¿Í¤c… oüW @÷J¸Pê�Y§{Œ0, ׿Ë„µìÁtZ0SYZE8S¨  û \ë½mLæ±3Þ°¿ÂÕþ}A�°Z[ÐTD¡šë-_Çi¼7 7V©®ê¹VD´ì~ðßDtÃqŸël"oêßòÕ-¢‰žB‹™.Tz5stÄ%êTvl‚  LÀ’LÀ’  LÀ’M€  M€LÀ’   L  M€  M€LÀ’   L  zçפ»Ú°[á¹oaeY LÀ’LÀ’r yÄœ;ÕïÂÕã„bHU LÀ’µ M€LÀ’ M€  `•FM´éèX LÀ’ø M€LÀ’ M€ ¯›Ÿ9ÆUÂ^S¦êŸlOŽ LÀ’8 M€LÀ’ d=\$ &fšý 1™x× LÀ’x M€LÀ’ 4Ü;wcQ—¬ZHLsÔЦ LÀ’¸ M€LÀ’ ^â^^j•OÀ1Z+,7 LÀ’ø M€LÀ’  úLÔî¦ZÎÏ–#c’ ¦z LÀ’8 M€LÀ’  á8w!õwÖZJjLÓV LÀ’x M€LÀ’  ¾ÿ‘ŸÍÄu­ØÇ|’Ì LÀ’¸ M€LÀ’  £òÅnÏ™Œ€ãhŠ(ÝC’ LÀ’ø M€LÀ’  ‹O±X?Ðq©gû€°6 LÀ’@ M€LÀ’  M€LÀ’3Ññæ]"ÀÑ\Xº¦ þQ LÀ’€ M€LÀ’  œŒêΜÇÙ$kc Šï’¤ ® L !Q”Kp‘F/ÜXC¤jÛ& ?" Ü L #b“ºµfÌãg‘IŸh­6$   L %ÆtUù»“lFYõ$V½–‡& 8 L '^&’–»2ˆ:ñ7by£( f L )D…·%À(´ÙOú»cõñe* ” L +ìq*œñÇìQ¤}˜up,  L -n?¢q#õkâÆ’F9wöÔ’. ð L /jZw·Xï­”æÓa�<Ò0  L 1È;‰%nÕuÕÝ…Þ4Ð2 L L 3À wÍ•š—Aó ÃÌÒ9g4 LÀ’Œ M€LÀ’  ïBSj0M†‚Ë�ø[%5 º L 6L°`ì®Â¨ž³ QÄxoU7 è L 8¬ÝÒ0¢Å&¡9ŸƒxŒ˜9  L :VÕ¸A�Ÿ,á•Þ_É©Z; D L <‚’þëbàì".ˆ´”ª|Áá= r L >{ Q†Iõ½ŸMñ73R�ÏC?   L @!Ú½ÉLâ�rn'^¹Ô©A LÀ’ã M€LÀ’ M€ �q ù³¬Êâæ×?cÐB LÀ’ # M€LÀ’  –j¡ÞòŒÄúi6K¢ð‡QC LÀ’ c M€LÀ’ ! "áæÍá±A’ú/Ô눢]D LÀ’ ¦ M€LÀ’ M€ #ëßµ›@éЊ^7™ôÛ¶@çE LÀ’ æ M€LÀ’ $ %Ô�GíÊsmËS¤ÉÌ!]€kF LÀ’ & M€LÀ’ & 'F˜ey ‚à°š5âg††G LÀ’ f M€LÀ’ ( )Ù´øj]�c˜…NèÏ2�H LÀ’ ¦ M€LÀ’ * +#‘ølRn˳à@µÈŠL^I LÀ’ é M€LÀ’ M€ ,V‰§î{*Ýâ„ý‡#�+J LÀ’ ) M€LÀ’ -4¼7>ïçÝÓ¨FïK«é†K LÀ’ i M€LÀ’ . /k&”¹?� q -¿VL LÀ’ © M€LÀ’ 0¼A;Å-õسi§ IM LÀ’ é M€LÀ’ 1 2fBûªkÖ77¤3wÿĈtN LÀ’ ) M€LÀ’ 3 4w9uëoc•bšKµü¨O O LÀ’ i M€LÀ’ 5 6b=Ë«ÌPgdÿÉÞãüP LÀ’ © M€LÀ’ ! 7½Ù¡Ñfœòkø�Ðl™ÌâÅQ LÀ’ é M€LÀ’ 8 9:–€ðC:³QÈR LÀ’ ) M€LÀ’ : ;û\cl&aÌZKJ7ú¹S LÀ’ q M€LÀ’ < M€LÀ’æ ITm´ÒÓ0«³�� T  Ÿ L U¤âÀ´hWožq ðÍa†V  Í L WB‰‰q~Oï}ò­’¾@GX  û L Yý[…"K ÂÇ_ ÌGNΫZ ) L [X ~r9°7òN cmž\ W L ]ç•àÜàà‰â@Ç¿F®P^ … L _ÎO4¹(ŒÖõ· ‡ó™œ` ³ L aRT¢ô™o9>!t{Á&)b LÀ’ö M€LÀ’ M€ =ªOéGm¡ª‚—’Pc $ L d$.n>Æ] ý`¢§Ò7’e R L fFò[Í€¶\$°ŽN •g € L hF| t˜"Çm‹çŸ$JWi ® L jµŸ€6¨nÇrÖ-`µ…¸×k Ü L l,®ó.vƒ°¦ÍÂÖçg†m LÀ’ M€LÀ’ > ?N$Gšf+QúuË3�Mžn LÀ’\ M€LÀ’ @ ATÖ›rÌ…�U=6o LÀ’œ M€LÀ’ B C£i>šøM=üÇd[Ü^.D pqrkA 0.,*(&$" ?4=EBiC9DF;PgGeHcIJK`LM^N\OZQbXRVSTm7n5o2smainMkSharedStringbaseghc-prim integer-gmpGHC.Base GHC.Float Data.Either Data.Maybe GHC.Generics GHC.Tuple Data.ListPrelude$wsharedStringbww1wildmodule sharedString sharedString1sharedString10sharedString11sharedString12sharedString13sharedString14sharedString15sharedString16sharedString17sharedString18sharedString19 sharedString2sharedString20 return s'sharedString21G writeIORef stringPoolRef $! M.insert s' s' stringPoolsharedString22$ Nothing -> do let s' = BS.copy ssharedString23 Just s' -> return s'sharedString24 case M.lookup s stringPool ofsharedString25' stringPool <- readIORef stringPoolRefsharedString26$shareString s = unsafePerformIO $ dosharedString27-shareString :: BS.ByteString -> BS.ByteStringsharedString28{-# NOINLINE shareString #-}sharedString292stringPoolRef = unsafePerformIO $ newIORef M.empty sharedString3sharedString30:stringPoolRef :: IORef (M.Map BS.ByteString BS.ByteString)sharedString31{-# NOINLINE stringPoolRef #-}sharedString32)import System.IO.Unsafe (unsafePerformIO)sharedString33,import qualified Data.ByteString.Char8 as BSsharedString34import Data.IORefsharedString35import Data.Map as MsharedString36sharedString37sharedString38sharedString39 sharedString4sharedString40sharedString41sharedString42sharedString43sharedString44sharedString45sharedString46sharedString47sharedString48sharedString49 sharedString5sharedString50sharedString51sharedString52sharedString53 return ssharedString54) H.insert stringPool s ssharedString55 Nothing -> dosharedString56 Just s' -> return s'sharedString57 case mv ofsharedString58 mv <- H.lookup stringPool ssharedString59shareString :: String -> String sharedString6sharedString602stringPool = unsafePerformIO $ new (==) hashStringsharedString61%stringPool :: HashTable String StringsharedString62{-# NOINLINE stringPool #-}sharedString63import Data.HashTable as HsharedString64 (shareString) where sharedString7 sharedString8 sharedString9unlines GHC.CStringunpackAppendCString#