HOOGΆkDha c d e gh i km n o p r s tu v w y9grfSekw{g()T->#AllAny BlockReasonBoolCCharlCClock:CDevCDoubleCFloatVCInoCIntCIntMax~CIntPtr6CLDoubleCLLongCLongMCModeCOffCPiduCPtrdiff-CSCharCShort CSigAtomicUCSize CSsizeCTimeCUCharKCUIntCUIntMaxCUIntPtrsCULLong+CULongCUShortCWcharSChanHCharComplex  ConsoleEvent Constr ConstrRep DataRep DataType Double Dynamic} E12n E6_ EitherT ErrnoP Exception4 Fd Fixity Float GeneralCategory Handle HashData IOn IOUArray Id Inserts Int Int16} Int32V Int64/ Int8 IntPtr Integer Lexeme MaybeP NestedAtomically7 NoMethodError NonTermination Ordering P PatternMatchFail QSem QSemN ReadP ReadPrec RecConErrorl RecSelErrorS RecUpdError: STM StableName TArrayTVarThreadId ThreadStatusTimeoutTyConTypeRepUniqueVersionWordXWord161Word32 Word64Word8WordPtrtZipList_[::]P[] TraversableFoldable Applicative AlternativeMonadFix MonadPlusFunctorMonadFunctor Applicative ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEqIArrayMArray PrintfArgDataStorableIArrayMArray PrintfArgDataStorableIArrayMArray PrintfArgDataStorableIArrayMArray PrintfArgDataStorableIArrayMArray PrintfArgDataStorableEqOrdShowReadTypeableOrdEqDataDataTypeableShow ExceptionEqShowOrdEqShowEqOrdTypeableData Typeable1MArray Typeable1MArray MonadPlus Typeable1FunctorMonadTypeableShow ExceptionTypeableShow ExceptionTypeableShow ExceptionFunctorMonad MonadPlusFunctorMonad MonadPlusTypeableTypeableTypeableShow ExceptionMonad MonadPlusMonoidDataIxTypeableShow ExceptionTypeableShow ExceptionTypeableShow Exception TraversableFoldable Applicative AlternativeMonadFix MonadPlusFunctorMonadShowEq PrintfArgDataBitsIx ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEqIArrayMArray PrintfArgDataStorableIArrayMArray PrintfArgDataStorableIArrayMArray PrintfArgDataStorableIArrayMArray PrintfArgDataStorableIArrayMArray PrintfArgDataStorableBitsIxEqFunctor Applicative Typeable2MArrayMArrayMArrayMArrayMArrayMArrayMArrayMArrayMArrayMArrayMArrayMArrayMArrayMArrayMArrayMArrayMArrayMArray ApplicativeMonadFixShowEqDataIxBoundedShowReadEnumOrdEqIArrayMArray PrintfArgDataStorableShowEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEqTypeable ExceptionShowEqEq Typeable2 HasResolution HasResolution ExceptionTypeableShowIArrayMArray PrintfArgDataStorableShowTypeableDataShowEqShowEqShowEqReadShowEnumOrdEqTypeable Typeable1IArrayMArray PrintfArgIsCharDataStorableIx Typeable1 ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeable RealFloatRealFracFloating FractionalRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeable RealFloatRealFracFloating FractionalRealStorableEnumNumOrdEq ReadShowTypeable RealFloatRealFracFloating FractionalRealStorableEnumNumOrdEq ReadShowTypeableRealStorableEnumNumOrdEq ReadShowTypeableRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEqIArrayMArrayDataStorableIxShowOrdEqMonoidBoundedShowReadOrdEqMonoidBoundedShowReadOrdEqArrow ArrowChoice ArrowApply ArrowLoopCategoryMonoidDataEqOrdIxo$ ByteCountCString CStringLengCWStringW CWStringLen; ClockTick2ConIndex,DeviceID% DiffArray  DiffUArray EpochTimeFileIDFileMode FileOffsetFilePathFinalizerEnvPtr FinalizerPtrmGeneric]GenericBYGenericMIGenericQ>GenericR3GenericT*IOErrorIPr LimitMicroPicoPrecProcessGroupID ProcessIDRationalReadS SampleVaroShowSTStringG[]Char[]Char[]CharaMVar(,)IntMVaraa[]Char[](,)a[]CharRatioIntegerCPidCPidIntFixedE12FixedE6CLong(,)IntInt IOExceptionaammararmamaacacaaFunPtrPtraIO()envaFunPtrPtrenvPtraIO()[]CharCOffCModeCInoCTime IOToDiffArrayIOUArray IOToDiffArrayIOArrayCDevIntCClock(,)PtrCWcharIntPtrCWchar(,)PtrCCharIntPtrCCharCSize(@e[ ea|_bE[cQdMeyJfqFgDhBi=j=kk=l:m7n4o12p.q.r*s'%t uvwXzi$p+l2i9s@tGZipList#ze^ornaiztemodeIOModepatmFpedamonad WrappedMonadrr"o)w0 WrappedArrowoMnTa[db WrappedMonadr{row WrappedArrowrdWord#O183!6 8ptrWordPtrWord84Word642(Word326?Word16Word#aeklWeakWordersionVersiona{ np6serinterr upt"AsyncExceptionp=eDrKcRaYs`eglneut|terGeneralCategorydiqueUniqueef rflow ArithExceptioni! n( e/ d6 e= lD eK mR eY n` tg ArrayExceptionr r a y UArraya$c$h#i"m"r+"v!y c!p e a!r e p TypeRepb!l!e$!Typeable1!2!3!4!5!6l!7Y! Typeable7 Typeable6 Typeable5 Typeable4 Typeable3 Typeable2 Typeable1o!n!TyCona"r "TVar#"TVar#a2"v9"e@"rG"sN"aU"b\"lc"ej" Traversablev"a"r"TMVart"l"e"c"a"s"e"l"e"t"t"e"r"GeneralCategoryr#e!#a(#d/#b$dt$f1$i$k#r#sT#t[#ab#ti#up#sw# ThreadStatusu#n#n#i#n#g# ThreadStatusi#l#l#e#d#AsyncExceptiond$ThreadId#$ ThreadId#i8$n?$iF$sM$hT$e[$db$ ThreadStatusi{$e$d$ ThreadStatusl$o$c$k$e$d$ ThreadStatush$a$n$TChanr%r %a%y%TArrayaU*e)hr)o)pa(t%uy%yQ%mX%b_%of%lm%Lexemem%r%r%o%g%a%t%e%GeneralCategorySumSTaP'mC'o&r+&u%a%r&r &a&y&STUArraye&i7&n>&gE&Stringcz&r_&ef&pm&DataRepo&n&s&t&r& ConstrRepf&p&STRepSTRefr&a&b&l&e&Storablea'r'r'a%'y,' StorableArraySTMb'c'r'tf'em'#t'State#r'a'y'STArrayk'o'v'e'r'f'l'o'w'AsyncExceptionl(e (n8(p(t(r%( StablePtra?(mF(eM( StableNameah(co(e(i{(n(g(c(o(m(b(i(n(i(n(g(m(a(r(k(GeneralCategoryGeneralCategorym)e)e#)x*)c1)e8)p?)tF)iM)oT)n[) SomeExceptiono)u~)t)d)o)w)n) ConsoleEventw)Shows)ShowSe)k)f*m)o)d*e *SeekModer$*o+*m2*e9*n@*dG*SeekModem\*pc*lj*eq*vx*a*r* SampleVaraI.e*i*g*h*t*Eithera,c+l+q:+t*u*r*n*i+n +o+r+d+e%+r,+ArgOrdera+uF+iM+rT+e[+ob+ri+dp+ew+r~+ArgOrderr+g+ArgDescra+t+i+v+e+s+e+e+k+SeekModec,sL,u,p ,d,e,r",r),o0,r7, RecUpdErroreS,lZ,ea,rh,ro,ov,r}, RecSelErroro,n,e,r,r,o,r, RecConErrord-l,Realf+-w,o-r -l-d- RealWorldlW-r7-a>-cE-RealFraco^-ae-tl- RealFloatReadm(.p-s-w-r-i-t-e-m-o-d-e-IOModeReadSReadPr.e.c.ReadPreco/.d6.e=.IOModetP.Lexemeia.oh.Ration|.a.l.Rationals.e.m.QSemn.QSemNa21e1i0o0r&/t/u.n.c/Lexemer/Ptre0i/o7/ci/dC/uJ/cQ/tX/Productep/sw/s~/g/i/d/ ProcessIDr/o/u/p/i/d/ProcessGroupIDn10v/a/t0e0u0s0e0GeneralCategoryt80f?0at0tK0yR0pY0e`0 PrintfTyper{0g0 PrintfArgc0f0i0x0FixityPreco0l0Poolc0o0Picor1m1u1t1e$1ArgOrderr1t>1tE1eL1rS1nZ1ma1ah1to1cv1h}1f1a1i1l1PatternMatchFaila1g1r1a1p1h1s1e1p1a1r2a2t2o2r2GeneralCategoryp3r3t2vG2eN2rU2f\2lc2oj2wq2ArithExceptionh2e2r2l{3nC3p2s2y2m2b2o2l2GeneralCategoryu2n2c2t3u 3a3t3i 3o'3n.3GeneralCategoryuJ3mQ3bX3e_3rf3GeneralCategorye3t3t3e3r3GeneralCategoryd3Orde3r3i3n3g3Orderinge}4t4aa4d34i4o4n%4OptDescre:4sA4cH4rO4OptDescrrh4go4ArgDescrn4p4u4n4c4t4u4a4t4i4o4n4GeneralCategorye>7o 5u4m4Numa"7b6m}6n5r5t+5aW5h75i>5nE5gL5Maybes^5se5il5gs5nz5e5d5GeneralCategorye5p5DataReps"6t5e5r5m5i5n5a5t5i5o6n 6NonTerminationp)6a06c76i>6nE6gL6mS6aZ6ra6kh6GeneralCategorye6t6h6o6d6e6r6r6o6r6 NoMethodErroru6f6f6e6r6i7n 7g7 BufferModer)7g07ArgDescrsE7tL7eS7dZ7aa7th7oo7mv7i}7c7a7l7l7y7NestedAtomicallya):i:o8u8v7a7r7MVar#7MVar#t 8a8b8l!8e(8a8b48y;8tB8eI8aP8rW8r^8ae8yl8#s8MutableByteArray#r8r8a8y8#8 MutableArray#df9n8a8o8i8d8Monoidd9MonadfF9p9l%9u,9s39 MonadPlusiM9xT9MonadFixim9ft9i{9e9r9l9s9y9m9b9o9l9GeneralCategorye9t9t9e9r9GeneralCategoryc :r:o:Micror:tW:y::bA:eH:Maybeh^:se:yl:ms:bz:o:l:GeneralCategoryr:a:y:MArrayaO=e<i;o:g;sR;w:e:r:c:a;s ;e;l;e!;t(;t/;e6;r=;GeneralCategorysY;o`;fg;pn;ru;e|;c;i;s;i;o;n;ArithExceptiono;f;f; ConsoleEventm<n;e;bM<s<e<p<a<r<a#<t*<o1<r8<GeneralCategoryuT<f[<fb<ei<rp<iw<n~<g< BufferModei<t<Limitf<=t<x<e<m<e<Lexemet<e<r<n=u =m=b=e =r'=GeneralCategorytC=EithersV=t]=Lastlr=ey=i=s=l=i=Kleisliu=s=t=MaybeaBdBgBnH@ov>pb>s=x=Ixc=>s>t>r>i>n$>g+>IsStringhD>aK>rR>IsCharri>IPrIOa@et?mO?r2?t>u>a>r>r>a>y>IOUArrayo>d>i>f>f>a>r?r ?a?y? IOToDiffArraye9?f@?IORefoV?d]?ed?IOModer?x?c?e?p?t?i?o?n? IOExceptionr?o?r?IOErrort?y?p?e@ IOErrorTyper"@r)@a0@y7@IOArraydBfBiAt^@Int #A1A3rA6\A8NAcAe@p@r@e@p@DataRept@r@IntPtrg@eAr@a@l@Integralr AIntegero#An*As1At8Ar?A ConstrRepInt84cAInt642yAInt326AInt16Int#tAiAaAlAqAuAoAtAeAGeneralCategoryiBxBFixitye!Bx(Bo/Bu6Bt=BoDBfKBbRBoYBu`BngBdnBsuBArrayExceptionnBoBrBeBHandlereBnBtBLexemerBrBaByBIArrayaCedCpCrCiCn%Ct,Cf3Ct:CyACpHCeOC HPrintfTypeakCprCoyCvCeCrCfClCoCwCAsyncExceptionnbDsCh,DrCeCsCoClCuCtDiDoDnD HasResolutiont3Da:DbADlHDeOD HashTablediDlpDewDHandlepDrDHandleroDsDnD HandlePosneEmDqDtD GenericT' GenericQ' GenericM'nEeEr#EaFi/Ec6EGeneric'FbEmEqErEteEGenericT'|E GenericT'GenericRGenericQ'E GenericQ'GenericM'E GenericM'GenericBGeneric'l Fc'Fa.Ft5FeNyMnMaNeMxMcMeMpMtMiMoNn N ExceptionmNi&Nc-NDynamicaENlLNDualu{NwfNnmNDownbNlNeNDoublefNvNiNdNeNbNyNzNeNrNoNArithExceptionfOaIOuOaOr Or'Oa.Oy5O DiffUArrayrPOrWOa^OyeO DiffArrayaPc(PfOnOvOiOcOeOiOdODeviceIDoOrOmOaOlOArithExceptionaPu PlPtPHandleri/Pm6Pa=PlDPnKPuRPmYPb`PegPrnPGeneralCategorydPlPoPcPkPDeadlocks)QtPaPDatar QtPyPpPePDataTypeeQpQDataReph0Qp7Qu>QnEQcLQtSQuZQaaQthQioQovQn}QGeneralCategoryaZcZdTZfYhYi>Yj YlWmWoUpUUsTtSumRwQcHRsQtQrQiRnRgRCWStringl%Re,Rn3R CWStringLenhORaVRr]RCWcharcSigSlSrRsRhRoRrRtRCUShortrReRnRcRyRsRyRmRbRoRlSGeneralCategorylASo#Sn*Sg1SCULongoHSnOSgVSCULLongnnStuSCUIntmSpStSrSCUIntPtraSxSCUIntMaxhSaSrSCUChariSmTeTCTimec0Uh UiTsTt2Tr9Ti@TnGTgNTCStringldTekTnrT CStringLeniTzTeTCSsizegTzTeTCSizeaTtToTmTiTcT CSigAtomicoUrUt UCShorth7Ua>UrEUCSChariUtaUrhUdoUivUf}UfUCPtrdiffdUCPidfWmcWnUi5WnVsVtUrUoUlUGeneralCategorycV ConsoleEventoiVtVConstr3VConstrrHVeOVpVV ConstrReplpVewVe~VvVeVnVtV ConsoleEventeVcVtVoVrVpVuVnVcVtVuVaWt WiWoWn WGeneralCategorynZeEZCFileeZo`ZugZbnZluZe|ZCDoublevZCDevhZlZoZcZkZCClockaZrZCChartZc1[e[g [o[r[y[Categoryh8[Handleri`_lj\o\r[u[ye[tl[es[cz[o[u[n[t[ ByteCountf[f[e[r[m[o[d[e[ BufferModee[a\k \ ConsoleEventoU\u(\n/\d6\e=\dD\Boundedl\\Booloq\cx\k\b_e\r\e\a\s\o\n\ BlockReasond\i^o\n\be^d^e]fy]mS]o&]s]t]m] BlockReasont-]h4]e;]rB] BlockReasonvZ]aa]rh] BlockReasono]r]e]i]g]n]c]a]l]l] BlockReasonx]c]e]p]t]i]o^n^ BlockReasone ^a'^d.^m5^v<^aC^rJ^BlockedOnDeadMVarll^as^cz^k^h^o^l^e^ BlockReasonn^d^e^f^i^n^i^t^e^l^y^BlockedIndefinitelyu_f&_f-_e4_r;_iB_nI_gP_ BufferModetg_sn_Bitsbdddlcncp-cr`s_s`y_n_c_e_x_c_e_p_t_i_o_n_AsyncExceptione`r `t'`i.`o5`n<`fC`aJ`iQ`lX`e_`df`AssertionFailedgbi`br`aao`w`ArrowaacxalPam ap`z`e`r`o` ArrowZerol`uas a ArrowPluso'an.aa5ad a -> STM ()wlZlTChanaaSTM()!Write a value to a TChan.  unGetTChan unGetTChan :: TChan a -> a -> STM ()mlTChanaaSTM()JPut a data item back onto a channel, where it will be the next item read.  tryTakeTMVar tryTakeTMVar :: TMVar a ->  STM (Maybe a)mmTMVaraSTMMaybeaA version of takeTMVar that does not retry. The tryTakeTMVar function returns Nothing if the TMVar was empty, or Just a if the TMVar was full with contents a. After tryTakeTMVar, the TMVar is left empty.  tryPutTMVar tryPutTMVar :: TMVar a -> a -> STM Bool|o]oTMVaraaSTMBoolA version of putTMVar that does not retry. The tryPutTMVar function attempts to put the value a into the TMVar, returning True if it was successful, or False otherwise. TMVardata TMVar apA TMVar is a synchronising variable, used for communication between concurrent threads. It can be thought of as a box, which may be empty or full. TChandata TChan aRqITChan is an abstract type representing an unbounded FIFO channel. TArraydata TArray i eqTArray is a transactional array, supporting the usual MArray interface for mutable arrays. It is currently implemented as Array ix (TVar e), but it may be replaced by a more efficient implementation in the future (the interface will remain the same, however).  takeTMVar takeTMVar :: TMVar a -> STM aLs3sTMVaraSTMaReturn the contents of the TMVar. If the TMVar is currently empty, the transaction will retry. After a takeTMVar, the TMVar is left empty.  swapTMVar swapTMVar :: TMVar a -> a -> STM artVtTMVaraaSTMa5Swap the contents of a TMVar for a new value.  readTMVar readTMVar :: TMVar a -> STM autTMVaraSTMaThis is a combination of takeTMVar and putTMVar; ie. it takes the value from the TMVar, puts it back, and also returns it.  readTChan readTChan :: TChan a -> STM avuTChanaSTMa+Read the next value from the TChan. putTMVarputTMVar :: TMVar a -> a -> STM ()vvTMVaraaSTM()kPut a value into a TMVar. If the TMVar is currently full, putTMVar will retry.  newTMVarIO newTMVarIO :: a ->  IO (TMVar a)wgwaIOTMVaraIO version of newTMVar. This is useful for creating top-level TMVars using System.IO.Unsafe.unsafePerformIO, because using atomically inside System.IO.Unsafe.unsafePerformIO isn't possible. newTMVarnewTMVar :: a ->  STM (TMVar a)xxaSTMTMVara9Create a TMVar which contains the supplied value.  newTChanIO newTChanIO ::  IO (TChan a)TyAyIOTChanaIO version of newTChan. This is useful for creating top-level TChans using System.IO.Unsafe.unsafePerformIO, because using atomically inside System.IO.Unsafe.unsafePerformIO isn't possible. newTChannewTChan ::  STM (TChan a)zrzSTMTChana1Build and returns a new instance of TChan newEmptyTMVarIOnewEmptyTMVarIO ::  IO (TMVar a){{IOTMVaraIO version of newEmptyTMVar. This is useful for creating top-level TMVars using System.IO.Unsafe.unsafePerformIO, because using atomically inside System.IO.Unsafe.unsafePerformIO isn't possible.  newEmptyTMVar newEmptyTMVar ::  STM (TMVar a)Z|F|STMTMVara0Create a TMVar which is initially empty.  isEmptyTMVar isEmptyTMVar :: TMVar a -> STM Bool||TMVaraSTMBoolKCheck whether a given TMVar is empty. Notice that the boolean value returned is just a snapshot of the state of the TMVar. By the time you get to react on its result, the TMVar may have been filled (or emptied) - so be extremely careful when using this operation. Use tryTakeTMVar instead if possible.  isEmptyTChan isEmptyTChan :: TChan a -> STM Bool~~TChanaSTMBool;Returns True if the supplied TChan is empty. dupTChandupTChan :: TChan a ->  STM (TChan a)oMTChanaSTMTChanaDuplicate a TChan: the duplicate channel begins empty, but data written to either channel from then on will be available from both. Hence this creates a kind of broadcast channel, where data written by anyone is seen by everyone else. checkcheck :: Bool -> STM aBoolSTMaTVarmodule Control.Concurrent.STM.TVarTVar: Transactional variables TMVarmodule Control.Concurrent.STM.TMVarZ@TMVar: Transactional MVars, for use in the STM monad (GHC only) TChanmodule Control.Concurrent.STM.TChan݁)TChan: Transactional channels (GHC only) TArraymodule Control.Concurrent.STM.TArrayK8TArrays: transactional arrays, for use in the STM monad stmpackage stmMSoftware Transactional Memory A modular composable concurrency abstraction. STMmodule Control.Monad.STM+Software Transactional Memory: a modular composable concurrency abstraction. See This module only defines the STM monad; you probably want to import Control.Concurrent.STM (which exports Control.Monad.STM). STMmodule Control.Concurrent.STMbhSoftware Transactional Memory: a modular composable concurrency abstraction. See z\>!Control ConcurrentSTMControl ConcurrentSTMTArrayControl ConcurrentSTMTVarControl ConcurrentSTMTChanControl ConcurrentSTMTMVarControlMonadSTMstm2.1.1.2Ahttp://hackage.haskell.org/packages/archive/stm/2.1.1.2/doc/html/>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/stm