HOOGixw!$'+-  1ss<>_''a( "",144<<@@CDGJY_ccllsv  'b!!79ZZ\\uvyyc%,2355@@FFII__ddllrruv  #$&'d%%,:ADFFLMWX[]ll()e? !!##%&./2469;?ADFFKLNNPTVVXY\\``eellnoqqsuwx{{  !!#$''f44>>@XakzzgKLY^no h  PS^`  ''i, !!,,4488AFHHKMary   #$()jkvv  l" 4479<<ADGJZZffops    ')m!#..88;;HHMUaapqst  !!))n& !$),,..::FFKLPSWY^^bp !!o%  ),,/159>>FUZZaajk))p+ ##''/088;;=?ADHHMMVVXY`acchhpq||  "$()q ((++/13399<<??BBDD]]kk$$r  88>>FFHU[]aaiinprruv %''))s& 99<<VV``llqrxx{} #$''t- )14499;;>>@@CHJJPUYY__aalrwxz#&u4479<<WX[]''v&w ')x*+//44=?ABEFbi    y44:;EFqq  #$7/()/->/Allt/AnyS/ BlockReasonF/Body//Bool /CChar.CClock.CDev^.CDouble.CFloat-CInod-CInt-CIntMax,CIntPtr,CLDouble3,CLLong+CLong+CMode[+COff+CPid*CPtrdiff*CSChar;*CShort) CSigAtomic)CSizec)CSsize)CTime(CUChar(CUIntY(CUIntMax(CUIntPtr'CULLong'CULong9'CUShort&CWchar&Callconv&Chan&CharQ&Clause6&Complex+&Con& ConsoleEvent%Constr% ConstrRep%DataRep%DataType%Dec%Digit%Doc%Double[%DynamicB%E123%E6$%Either%Elem$Errno$ Exception$Exp$Fdx$ FingerTreeZ$FixityC$FixityDirection,$Float$Foreign#FunDep#GeneralCategory#Guard#Handle#HashData#IOd#IOUArrayR#Id=#Info%#Inserts!#Int"Int16"Int32"Int64x"Int8Q"IntMap5"IntPtr!IntSet!Integer!Lexeme!Lit!Map~!Matchc!Maybe!Name NameFlavour NameSpace NestedAtomically NoMethodError Nodey NonTermination` OrderingP P? Pat$ PatternMatchFail PprM QQSemQSemNRangeReadPReadPrec RecConErroru RecSelError\ RecUpdErrorCSTM*SafetySeqSet StableNameStmtStrictTVarThreadIdd ThreadStatusWTimeout;TreeTyConTypeTypeRepUniqueVersionViewLViewRgWord@Word16Word32Word64Word8WordPtr\ZipListG[::]8[] TraversableFoldable Applicative AlternativeMonadFix MonadPlusFunctorMonadFunctor Applicative ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEqIArrayMArray PrintfArgDataStorableIArrayMArray PrintfArgDataStorableIArrayMArray PrintfArgDataStorableIArrayMArray PrintfArgDataStorableIArrayMArray PrintfArgDataStorable Typeable1FunctorFoldable Traversable Typeable1FunctorFoldable TraversableEqOrdShowReadTypeableOrdEqDataPprDataEqShowTypeableData Typeable1Functor ApplicativeMonad TraversableFoldableTypeableShow ExceptionEqShowOrdEqShowEqOrdTypeableData Typeable1DataEqShowTypeablePprDataEqShowTypeable Typeable1Foldable Typeable1FunctorFoldable TraversableMonad MonadPlus Typeable1DataEqShowTypeable Typeable1FunctorMonadTypeableShow ExceptionTypeableShow ExceptionTypeableShow ExceptionFunctorMonad MonadPlusFunctorMonad MonadPlusPprDataEqShowTypeableTypeableTypeableMonadFunctorQuasiMonadTypeableShow ExceptionPprDataEqShowTypeableMonad MonadPlusMonoidDataIxTypeableShow ExceptionFoldableFunctor TraversableTypeableShow ExceptionTypeableShow ExceptionDataOrdEqTypeableDataEqOrdTypeablePprEqOrdShowDataTypeable TraversableFoldable Applicative AlternativeMonadFix MonadPlusFunctorMonadPprDataEqShowTypeable Typeable2DataEqShowTypeableShowEqLift PrintfArgDataBitsIxMonoidDataEqOrdShowReadTypeable ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEqFoldableFunctor Typeable1IArrayMArray PrintfArgDataStorableIArrayMArray PrintfArgDataStorableIArrayMArray PrintfArgDataStorableIArrayMArray PrintfArgDataStorableLiftIArrayMArray PrintfArgDataStorableBitsIxEqPprDataShowTypeableFunctor Applicative Typeable2MArrayQuasiMArray ApplicativeMonadFixShowEqDataDataEqShowTypeableIxBoundedShowReadEnumOrdEqPprDataEqShowTypeablePprDataEqShowTypeableIArrayMArray PrintfArgDataStorableDataShowEqTypeableDataShowEqTypeableFoldableFunctor Traversable ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEqPprDataEqShowTypeableTypeable ExceptionShowEqEqFunctorFoldable Traversable Typeable2 HasResolution HasResolution ExceptionTypeableShowIArrayMArray PrintfArgDataStorableShowFoldableFunctor TraversablePprDataEqShowTypeableShowTypeableDataShowEqShowEqShowEqReadShowEnumOrdEqTypeablePprDataEqShowTypeable Typeable1PprDataEqShowTypeableLiftIArrayMArray PrintfArgIsCharDataStorableIx Typeable1DataEqShowTypeable 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 ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEqLiftIArrayMArrayDataStorableIxDataEqShowTypeableShowOrdEqMonoidBoundedShowReadOrdEqMonoidBoundedShowReadOrdEqArrow ArrowChoice ArrowApply ArrowLoopCategoryMonoidDataEqOrdIx/HBodyQ7Bounds7 ByteCount7CString7 CStringLen7CWString7 CWStringLenj7CharPosX7ClauseQJ7 ClockTickA7ConIndex;7ConQ07Cxt#7CxtQ7DecQ7DeviceID6 DiffArray6 DiffUArray6Doc6Edge6 EpochTime6ExpQ6FieldExp6 FieldExpQj6FieldPatW6 FieldPatQ?6FileID86FileMode06 FileOffset)6FilePath6FinalizerEnvPtr5 FinalizerPtr5Forest5Generic5GenericB5GenericM5GenericQ5GenericRx5GenericTo5GraphU5GuardQH5IOError:5IPr(5InfoQ5Key5Limit5MatchQ5Micro4ModName4OccName4PatQ4Pico4PkgName4Prec4 Precedence4ProcessGroupID4 ProcessID4RangeQ4Rationalr4ReadSE4 SampleVar#4ShowS4StmtQ3 StrictType3 StrictTypeQ3String3Table3TypeQ3Uniq3 VarStrictType{3VarStrictTypeQY3VertexS3IntQ(,,)NameStrictType(,,)NameStrictTypeIntQTypeaArrayInta[]CharQ(,)StrictType(,)StrictTypeQStmt[]Char[]CharaMVar(,)IntMVaraa[]Char[](,)a[]CharRatioIntegerQRangeCPidCPidIntInt PackedStringFixedE12QPat PackedString PackedStringFixedE6QMatchCLongIntQInfo(,)IntInt IOExceptionQGuardArrayInt[]Intaammararmamaacacaa[]TreeaaFunPtrPtraIO()envaFunPtrPtrenvPtraIO()[]CharCOffCModeCInoQ(,)NamePat(,)NamePatQ(,)NameExp(,)NameExpQExpCTime(,)IntIntPprMDoc IOToDiffArrayIOUArray IOToDiffArrayIOArrayCDevQDecQ[]Type[]TypeQConIntCClockQClause(,)IntInt(,)PtrCWcharIntPtrCWchar(,)PtrCCharIntPtrCCharCSize(,)IntIntQBody(m[9a֏b?cudzevfpgnhliejekzelam`^nYoSVp.QqPrLsDt ?u<vW;w8zj8iq8g8p}8l8i8s8t8ZipListz8a8g8m8o8d8e8Mode#M;e1;i;o4:r9aB9i 9t9e9m!9o(9d/9e69IOModepI9a:m9pZ9ea9dh9a9mt9o{9n9a9d9 WrappedMonadr9r9o9w9 WrappedArrowo9n9a9d9 WrappedMonadr :r:o:w": WrappedArrowr;:dB:Word#;1:3:6:8:pn:r:tz:r:WordPtri:m:l:LitWord84:Word642:Word326:Word16Word#l;d!;p(;Pata8;k?;WeakWorda;e;ih;eo;wv;l;r;ViewRViewLr;s;t;e;x;Vertexi;o;n;Versionl<r<e<i<n<p<s-<t#<Typet4<r;<iB<cI<tP<tW<y^<pe<el< VarStrictTypeq<VarStrictTypeQPata<m<e< NameSpaceInfoExpd<Deca>n=pg=s=e =r=i=n"=t)=e0=r7=r>=uE=pL=tS=AsyncExceptionpn=eu=r|=c=a=s=e=l=e=t=t=e=r=GeneralCategoryd:>i >s=a=f=e=Safetyq>Uniqu#>e*>UniqueeA>f}>rM>fT>l[>ob>wi>ArithExceptioni>n>e>d>e>l>e>m>e>n>t>ArrayExceptionr>r>a>y>UArray aDcDe/DhLBiArKAu Av@y9?c@p?sn?vO?aV?r]?id?Infoyu?n|?d?Dece?Typea?q?r?e?p?TypeRepTypeQb?l?e?Typeable1@2@3t@4a@5N@6;@7(@ Typeable7 Typeable6 Typeable5 Typeable4 Typeable3 Typeable2 Typeable1o@n@TyConi@Infoa@r@TVar#@TVar#pAeBAl*Ap!APate1At8ATypeExpalAeWAe^ATreevsAezArAsAaAbAlAeA Traversablel.BtAlAeAcAaAsAeAlAeAtBt BeBrBGeneralCategoryd5BeInEIgLIcSIoZImaIbhIioInvIi}InIgImIaIrIkIGeneralCategoryGeneralCategorymIeIeIxIcIeIpJt JiJoJnJ SomeExceptiong^JzAJeHJdOJSizeddJexJpoJPatExpDecoJuJtJdJoJwJnJ ConsoleEventwJShowsJShowSeKqKtKSetSeqk&KfYKm2Ko9Kd@KeGKSeekModer`KogKmnKeuKn|KdKSeekModecKSCCfKmKpKlKeKvKaKrK SampleVareKSafetytLy LSafetyaOeOLi.Lg5LhTk ToSpSrQsQt|QubQniQcpQLexemerQPtrtQrQ TextDetailseWSioRoQcQdQuQcQtQProducteQsRsRg-RiRdR ProcessIDr4Ro;RuBRpIRiPRdWRProcessGroupIDm#SnRvRaRtReRuRsReRGeneralCategorytRfRaStRyRpReR PrintfTyper SgS PrintfArgt*Sy1Sc8So?SnFSiMSInfoc}SfcSijSxqSFixityPreceSdSeSnScSeS PrecedencerSPprmSPprMoSlSPoolgTnTaTm&Te-TPkgNamecEToLTPicoraTmhTuoTtvTe}TArgOrdercUgUrDUtTPatg9Uq+UtTeTrTnTmTaTtTcThTfTaUi UlUPatternMatchFailPatQGuardaZUsPUStmtgaUrhUaoUpvUh}UsUeUpUaUrUaUtUoUrUGeneralCategoryeUmUoUdUeUModekVe VdVsVt!Vr(Vi/Vn6Vg=V PackedStringc[YnYp&XrWtVvsVezVrVfVlVoVwVArithExceptionhVeVrVlWnoWpWsVyVmVbVoVlVGeneralCategoryuWn"Wc)Wt0Wu7Wa>WtEWiLWoSWnZWGeneralCategoryuvWm}WbWeWrWGeneralCategoryeWtWtWeWrWGeneralCategorydWOrdeWrWiXn XgXOrderingeXt2XaXd_XiCXoJXnQXOptDescrefXsmXctXr{XOptDescrrXgXArgDescrnXpXuXnXcXtXuXaXtXiXoXnXGeneralCategoryeYl Yi'Yn.Ye5YmZhZsYtYrYiZc ZtZStricti%Zn,Zg3ZMaybesEZsLZiSZgZZnaZehZdoZGeneralCategoryeZmZaZlZbZcZgZGuardConBodypZDataRepsK[tZeZrZm[i [n[a[t[i%[o,[n3[NonTerminationpR[aY[c`[ig[nn[gu[m|[a[r[k[GeneralCategorye[t[h[o[d[e[r[r[o[r[ NoMethodErrore \Treeia\u \f'\f.\e5\r<\iC\nJ\gQ\ BufferModenh\do\sv\Stmtr\g\ArgDescrs\w\t\y\p\e\d\Dect\e\d\a\t\o\m]i ]c]a]l!]l(]y/]NestedAtomicallymP]eW]Namef!^g^i]l]q]s]u] NameFlavour NameFlavourp]a]c]e] NameSpace NameFlavour NameFlavours^NameIs NameFlavourl(^a/^v6^o=^uD^rK^ NameFlavoura ai`on_u^v{^a^r^MVar#^MVar#t^a^b^l^e^a4_b^y^t^e^a^r^r_a _y_#_MutableByteArray#r;_rB_aI_yP_#W_ MutableArray#d `nz_a_o_i_d_Monoidd_Monadf_p_l_u_s_ MonadPlusi_x_MonadFixe`iC`n`a$`m+`e2`ModNamefJ`iQ`eX`r_`l`sk`yr`my`b`o`l`GeneralCategorye`t`t`e`r`GeneralCategoryModec`r`o`Microparat@ay#ab*ae1aMaybecahLasSayZamaabhaooalvaGeneralCategoryhaMatchqaMatchQraaayaMArrayMapaIeekdicoac cgbs}bwbebr"bc)ba0bs7be>blEbeLbtSbtZbeabrhbGeneralCategorysbobfbpbrbebcbibsbibobnbArithExceptionobfbfb ConsoleEventLocfVdm9dncs]ct4cLiteTcpKcPatExptdcecpctucTypePatExpecbcscecpcacrcactcocrcGeneralCategoryucfcfde drdidn"dg)d BufferModei@dtGdLimitt]dLiftfetdx|dedmdedLexemee esdtdedrdndudmdbdedrdGeneralCategoryStmtExpteEitherm*eo1ed8ee?eModemjesUet\eLasteqeExpeeleeeieseleieKleisliyeKeyueseteMaybe aldulgLlmlnhofpfs)fxfIxcfs5ftcE CSigAtomico`rgtnCShortharCSCharitrdiăf˃f҃CPtrdiffdCPidfCmn Condein<p3q%st?TyperNoUl\GeneralCategorycv ConsoleEventoބtConstrConstrreĄp˄ ConstrRepleevent ConsoleEventConQPateCcJtQoXr_pfumntc{tuationGeneralCategorynȅdυeօx݅ConIndexExpeExppe:le"x)ComplexExpfJCOffo_dfemCModea‡dlhoc2nse ConsoleEventpuȆnφcֆt݆uationGeneralCategoryg#CLongk9t@iGcNkU ClockTickoonvg}CLLongoubleCLDoublesu·sՇe܇ClauseqClauseQs d<i2op!i(InfoInfoDecmLpSbZuafhCJmpBufnotCIntmÈptrCIntPtraʈxшCIntMaxCInoa r TextDetailsnYrCharlPp1o8s?CharPosLitChanilpxosCFposoatCFloatleȉCFileeoubleCDoublevCDevaxh[l6o=cDkKCClockabriCCharllCallconvl stcߊegorƊy͊CategoryhHandlereeExplcon&v-Callconviloruy_tfemcto{unt ByteCountffermƋo͋dԋeۋ BufferModeeak ConsoleEventd~oiu'n.d5eQsABoundsdXBoundedlpBoolyBodyqBodyQockbUer͌eԌaیson BlockReasond ionbdVe fmocsDtKmR BlockReasontjhqexr BlockReasonvar BlockReasonorčeˍiҍgٍncall BlockReasonxce"p)t0i7o>nE BlockReasone]addkmrvyarBlockedOnDeadMVarlackhŎo̎lӎeڎ BlockReasonndefinit#e*l1y8BlockedIndefinitelyu\fcfjeqrxing BufferModentsBitsdŏs̏Stmtbcdlnp̓rspsvynce&x-c4e;pBtIiPoWn^AsyncExceptione}rtionfaileÐdʐAssertionFailedPatgdiܒra\o wArrowa,cl̑mpttjzBeIrPoW ArrowZeroTypel{us ArrowPlusonad ArrowMonadoӑoڑp ArrowLoophoi ce ArrowChoicep3p:lAyH ArrowApplyycArray#̒e|xceptionArrayExceptionArray#theseqe Expxc"e)p0t7i>oEnLArithExceptiondoprwd~erArgOrderescrArgDescrpӓeLltTypeicedNameIsat"i)v0e7 ApplicativeExpnZdamhoodve}IOModeyAnyg'loternȔaϔt֔iݔve AlternativeneNameIsAllcNr3e:pADataRepoUn\sctjrq ConstrRepdr#Addr#yclicǕsΕcՕcܕSCCsolutesee$k+SeekMode:Q]E[]:X]_[::])t() 0a`@&0BodyACallconvClauseiCongDec rqpoExpljcaFixityFixityDirectionForeign{yFunDepfGuardmInfo~Int Lit}[?LocWMatchName\ZX NameFlavour NameIs  NameSpace  PackedString_^]Pat k QuasiQuoterRangeSafetyStmtbRStrictTypehIntInt(,)Type[]Type(,)()Qv()mwBodyQE$BoolPprMChar[]ClauseQIConQdDecQ z1#"! DocPprM"|xusn`SDB>ExpQUTLJHFC830/.('%GuardQN+InfoQInfomLocQLocmMatchQ2NameQVNamemYPatQ K765RangeQ,*)StmtQQG4-StrictQTypeQe:aQ;amt<bQ=qQPatExpQName(,)QTypeStrictName(,,)QExpGuard(,)QM&ExpName(,)QPatName(,)QTypeStrict(,)Q9Char[]MaybeDocPprM[]Type[]QOa[]QPPat[]NameName(,)[](,)@PatNameName(,)[](,)Qo޳(bDkNamebQa=qQLitqQqQ[]kExpQMaybebPatQMaybebqQMaybebExpQChar[]PatQChar[]BodyxiBoolxwvuCallconv{zyChar}|ConqgDec~DoubleExpjaFixityFixityDirectionFloatForeignInt ZInt#IntegerLitLocName7{zyqpoC7#"! NameFlavourNameIs NameSpace PackedStringPat  QuasiQuoterRangeSafety{zType{yrhatTypeStrictName(,,)IntInt(,)WWTypeStrict(,)Type[]Type(,)BodyQI21Char[]{zywv_^]\[ZYXXXWWWVUTSClause[]ConQd!Con[]oDecMaybeDec[]rpiba`DocPprM uExpMaybeExpQMJF430/.-,+**)))(((''&&%$Exp[]cFunDep[]p#IntegerRatio?>Match[]Name[]qqpoohgffed#""!!PatQ 77654321Pat[]kjiRangeQ8Stmt[]mlStrictQ9TypeQ ze::96. Type[]rqponhgaIOaQ=<;;a[]samttTypeStrictName(,,)[]ExpGuard(,)[]AExpName(,)[]BNameName(,)[]CPatName(,)[]TypeStrict(,)QTypeStrict(,)[] ClauseQ[]ConQ[]"DecQ[]IGF21# DocPprM[]DExpQMaybeExpQ[]HMatchQ[]0PatQ[]KJIStmtQ[]NMLStmt[][]RTypeQ[]OType[]Qed#"! aQ[]PTypeStrictName(,,)Q[]ExpGuard(,)Q[]EExpName(,)Q[]/PatName(,)Q[]TypeStrict(,)Q[]StmtQ[][]QPatNameName(,)[](,)[]@<-}jLA. ~o`Q>* }_A(sP5rY:& v^vR+ydU; iS9lYJ;$ sdN4%}eVG8)ֿǿq\>/ܾ;xdPA2׽ȽzfWC%ڼ¼s_A!λ|mZC4%Һú|aG-ҹù|m[I:/ ڸϸ}kYJDataaIDataaKDataa!StringLiftt PpraString8FShowaDocPpraDoc DocO #String"StringK_oMsExpQ6OccNameModNamePkgNameStringOccNameStringModNameStringModNamePkgNameEStringDoc 4.EoGDocw/@~yDoc*;uQuasim,=mnDecQTypeQ^}DString->PatQ_~ClauseQDecQ-ConQVarStrictTypeQConQ StrictTypeQ2 FieldPatQPatQ/ExpQ, VarStrictType StrictType1FieldPat.FieldExpHDecQTypeQ0ATypeQPatQEa FieldPatQPatQzPatQ5C^ExpQ+b<vExpQ| StrictTypeQVarStrictTypeQ DocStringStringCharPosPatQExpQ vwxyDoceDoc Precedencedg Doc PrecedenceHdDoc PrecedencefTypeQDocDoc Doc PrecedencePnfDocISqV\tzYw(9 "3FieldExpDocRDoc-j()'DocgStringQoDecQStringTypeQ@ZStringDocQuasimString7StringDocQuasimPpraDoctCxtCxt+Cxt5FCxtCxtDoc%:6Ph}"0MkCxtLiCxtaNlCxtQTypeQjConQCxtQbDocPkgNameStringOccNameStringModNameStringStringYZStringStringUniqQuasimStringStringCharPosStringString>VStringXExpQString\DocStringStmtQC2CCxtQTypeQGuardQStmtQExpQStmtQ&;7QExpQStmtQiPatQ~ExpQPatQ#1BodyQClauseQDecQPatQ cExpQDecQStmtQDecQExpQeBodyQ$\|BDoc ExpQDocd4 <=JKSTgh()Rational'DocRational;Quasim0 TypeQV StrictTypeQTypeQ ExpQRangeQpPatQLPatQTypeQ`PatQExpQPatQStmtQ|ExpQPatQBodyQDecQMatchQPatQtBodyQDecQPatQ#ExpQMatchQ4ExpQJExpQTypeQExpQStmtQTrExpQRangeQExpQGuardQW]u{ExpQRangeQZxExpQRangeQ)Xh:vExpQ U[sy?@ExpQExpQRpExpQBodyQExpQ,CxtQDecQ6GConQCxtQDecQConQCxtQDecQuCxtQDecQTypeQjConQDocDoc  Doc U$aDocDocklExpQQuasim:DocDoci StrictTypeDocz <=]^qrH[x  Precedencemnq9N%&PQQuasimTypeQ{PatQ 35WX*+9ANDoc)hVD4n9 yaE%j>"jA+xU=|fN$xbL4R0 e6u@~X(xdP2l@$ _-qK%zd>jH({_A!y[?iK5!l=pR:"rX:mO)gK!wS= mW1yD,{L2tX8|V0 u[? b6"h>tH,nH X# wordpriml1 WordPrimL wordPrimLwildpbWildPwildP where_clause where_clausevcatvcatvartVarT~varTvarstricttypeqVarStrictTypeQ} varstricttype VarStrictType{ varStrictType|varpQVarPyvarPzvarnamezVarNamexvariVarIwvareVarEuvarEvvaldValDsvalDtunsafeUnsafequnsaferuniq!Uniqptyvari7TyVarIotysyndSTySynDmtySynDntypeq~TypeQltypeTypektyconiTyConIjtuppTupPhtupPi tupletypename tupleTypeNamegtupletTupleTetupleTf tupledatanameP tupleDataNamedtupeqTupEbtupEc to_hpj_doc to_HPJ_DocatildepTildeP_tildeP` threadsafe Threadsafe] threadsafe^thTHtext+text\template-haskellKtemplate-haskell tcclsnamep TcClsName[syntaxSyntaxstringlStringLYstringLZstringestringEX stricttypeq StrictTypeQW stricttype StrictTypeU strictTypeVstrictJStrictTstmtqeStmtQSstmt~StmtRstdcallStdCallPstdCallQsplitsplitOspacespaceN simplematch simpleMatchMsigpSigPKsigPLsige9SigEIsigEJsigd_SigDGsigDH showtextl showtextlF showname' showName'EshownameshowNameD sequenceq sequenceQCsepsepBsemi semiAsectionr%sectionR@sectionlEsectionL?safetycSafety>safe}Safe<safe=runqrunQ;runiorunIO:rparenrparen9returnqreturnQ8report report7rename%rename6reify<reify5recupdeXRecUpdE3recUpdE4recpRecP1recP2recoverrecover0recconeRecConE.recConE/reccRecC,recC-rbrackrbrack+rbrace7rbrace* rationallR RationalL( rationalL)rationalrational'rangeqRangeQ&rangeRange%quotesquotes$quotepatquotePat#quoteexp quoteExp"quote%Quote quasiquoterA QuasiQuoter !quasiaQuasiqrunioxqRunIOqreportqReportqreifyqReifyqrecoverqRecoverqnewnameqNewName qlocation qLocationqQ punctuate- punctuateptextGptext primtyconib PrimTyConI precedence PrecedencepprvarstricttypepprVarStrictTypepprtyapppprTyApp pprstricttype pprStrictTypepprpatpprPat pprparendtype3 pprParendTypepprname'XpprName'pprnamespprName  pprmaybeexp pprMaybeExp pprmPprM pprlitpprLit pprlibPprLibpprintpprint  pprinfixexp pprInfixExp pprfunargtype; pprFunArgType pprfixity] pprFixity pprfields{ pprFieldspprexppprExppprcxtpprCxtpprbodypprBodyppr_sigppr_sigppr_listppr_listpprPprppr pkgstringH pkgStringpkgnamedPkgNamepatq{PatQpatgepatGEpatgPatGpatGpatPatparsParSparSparensifparensIfparens-parensopprecEopPrec occstring` occStringoccname|OccName notstrict NotStrict notStrictnormalgenormalGEnormalgNormalGnormalGnormalcNormalCnormalCnormalbINormalBnormalBnoprecwnoPrecnobindsNoBindSnoBindSnewtypedNewtypeDnewtypeDnewnamenewName nestdepth nestDepthnest*nestnameu?NameU namespaceY NameSpacenamessNameSnameqNameQ namemodule nameModulenamelNameLnameisNameIsnamegNameG nameflavour  NameFlavournamebase,nameBasenameHName modstringi modStringmodnameModName mkpkgname mkPkgName mkoccname mkOccNamemknameumkNameUmknamelmkNameL mknameg_v mkNameG_v mknameg_tc0 mkNameG_tc mknameg_dO mkNameG_dmknamejmkName mkmodname mkModName maxprecedence maxPrecedencematchqMatchQmatchMatchmatchlparenlparenlocation5location loc_startV loc_start loc_packagez loc_package loc_module loc_module loc_filename loc_filenameloc_endloc_endlocLoclitp!LitPlitPliteGLitElitElitlLitlisttListTlistTlistpListPlistPlisteListElistEliftLiftliftlibLiblets.LetSletSleteTLetEletElbrack|lbracklbracelbracelameLamE}lamE~lam1elam1E|isstrictIsStrictzisStrict{isemptyisEmptyintpriml:IntPrimLxintPrimLyintegerllIntegerLvintegerLwintegerintegerintint instanced InstanceDt instanceDuinfoqInfoQsinfoInforinfixr/InfixRqinfixpKInfixPoinfixPpinfixnwInfixNninfixlInfixLminfixeInfixEkinfixElinfixcInfixCiinfixCjinfixapp infixApphinfix&Infiximportf>ImportFghsepYhsephcatmhcathanghangguardqGuardQfguardedbGuardedBdguardedBeguardGuardcglobalglobalbgenpatgenpatfundep3FunDep`afunDepfundaFunD^}funD_~fsepfsep|fromtorFromToR\zfromToR]{fromtoefromToE[y fromthentor FromThenToRYw fromThenToRZx fromthentoe* fromThenToEXv fromthenrN FromThenRVt fromThenRWu fromthene fromThenEUsfromrFromRSqfromRTrfromefromERpforimpdforImpDQoforeigndForeignDPnforeign$ForeignOmforalltBForallTMkforallTNlforallcqForallCLiforallCj floatpriml FloatPrimLJg floatPrimLKhfloatfloatffixitydirectionFixityDirectionIefixityFixityGHcd fieldpatq> FieldPatQFbfieldpat_FieldPatD`fieldPatEa fieldexpq FieldExpQ_fieldexpFieldExpB]fieldExpC^fcatfcat\expqExpQA[exportf ExportF@Zexp&Exp?Yequals?equalsXemptyVemptyWdynjdyn>V doublequotes doubleQuotesU doublepriml DoublePrimL<S doublePrimL=TdoubledoubleRdoeDoE:PdoE;QdocDocO defaultfixity6 defaultFixity9NdecqWDecQ8MdecnDec7LdatatoqadataToQaK datatopatq dataToPatQJ datatoexpq dataToExpQIdatanameDataNameHdatadDataD5FdataD6Gdataconi*DataConI4EcxtqFCxtQ3Dcxt]Cxt1Bcxt2CcontConT/@conT0AconqConQ.?conpConP,=conP->coneConE*;conE+<conde CondE(9condE):con3Con'8compeKCompE%6compE&7commatcomma5combinecombine4coloncolon3clauseqClauseQ$2clauseClause!"/0clause#1classopiClassOpI .classi-ClassI-classdIClassD+classD,charposvCharPos*charlCharL(charL)charchar'ccallCCall%cCall&catcat$caseeCaseE"caseE#callconv2Callconv!bracketsRbrackets braceslbracesbodyqBodyQbodyBodybindsBindSbindSbindqbindQaspAsPasParrowtArrowTarrowT arithseqeG ArithSeqE  arithSeqE apptwAppT appT appseappsE appprecappPrecappliedAppliedappeAppE appEalphaalpha alone(Alone <>;<> <+>L<+> $+$^$+$$$o$$w;E'g;c;l8V2pV`!mCOGSt>"t d[ |N28Z\Hrpyw!IO$lCmg ]#q#_I)9 w(Ǿ MMwEu(ȸd:8͵[$,ֲ:ڱ\ڰ`үcwqo%}=էs AP H>^ ^XLΞۜIVʘz(Xcd8ؓr0&`Ɛ(ďMS6 x6HE}+]͆5HƒL΂0ƁX"ҀKc~}W}*|zyy~y0yxxMxww/wv\vvuuttJtt~s9sr}r8rrqDqpp.po on nm|mljllkRkjpji`ihfhgggf4ffeed8d dccb7baNa`L`_2_r^]>]\\ \[N["[ZaZYY-YXuXXW/WVV8VUbUUTfTSSHSSR_RRQUQQPPiPPOOWONANMM!ML1LKK5KJmJ%JIiIHCHGAGFmF FEbE6ED`D&DCTCBBBAAAA@@9@?>k>>=w==<<;o;::R::9c988)877A76U665x5K54443c32~2 21R10{0M0/n/..,.-@-,t,++**:*)8)(<(''J'& &%%$$P$##F#"~"!!   !ym#{ Y+LTz0{5 U}#s'E  I   =   7   9   N Z&(Ta{$6&P wordPrimL wordPrimL :: Integer -> LitIntegerLit WordPrimL WordPrimL :: Integer -> LitL;IntegerLitwildPwildP :: PatQPatQWildPWildP :: PatPat where_clause where_clause :: [Dec] -> Doc"[]DecDocvcatvcat :: [Doc] -> Docvc[]DocDocList version of $$ varTvarT :: Name -> TypeQNameTypeQVarTVarT :: Name -> Type2#NameTypeVarStrictTypeQtype VarStrictTypeQ = Q VarStrictType varStrictType varStrictType :: Name ->  StrictTypeQ -> VarStrictTypeQ Name StrictTypeQVarStrictTypeQ VarStrictTypetype  VarStrictType = (Name, Strict, Type)wvarPvarP :: Name -> PatQNamePatQVarPVarP :: Name -> PatNamePatVarNameVarName ::  NameSpace]Q NameSpaceVarI VarI :: Name -> Type ->  Maybe Dec -> Fixity -> InfoNameTypeMaybeDecFixityInfovarEvarE :: Name -> ExpQPANameExpQVarEVarE :: Name -> ExpNameExpvalD valD :: PatQ -> BodyQ -> [DecQ] -> DecQ$PatQBodyQ[]DecQDecQValD ValD :: Pat -> Body -> [Dec] -> DecPatBody[]DecDecunsafeunsafe :: SafetySafetyUnsafeUnsafe :: Safety"SafetyUniqtype Uniq = IntVTyVarITyVarI :: Name -> Type -> InfoNameTypeInfotySynD tySynD :: Name -> [Name] -> TypeQ -> DecQJ ( Name[]NameTypeQDecQTySynD TySynD :: Name -> [Name] -> Type -> Dec  Name[]NameTypeDecTypeQtype TypeQ = Q Type Typedata Type5 TyConITyConI :: Dec -> Info y DecInfotupPtupP :: [PatQ] -> PatQ  []PatQPatQTupPTupP :: [Pat] -> Pat3  []PatPat tupleTypeName tupleTypeName :: Int -> Name  IntNametupleTtupleT :: Int -> TypeQ  IntTypeQTupleTTupleT :: Int -> Type9 + IntType tupleDataName tupleDataName :: Int -> Name  IntNametupEtupE :: [ExpQ] -> ExpQ  []ExpQExpQTupETupE :: [Exp] -> ExpE 2 []ExpExp to_HPJ_Doc to_HPJ_Doc :: Doc -> Doc  DocDoctildePtildeP :: PatQ -> PatQ  PatQPatQTildePTildeP :: Pat -> PatA4PatPat threadsafe threadsafe :: SafetySafety Threadsafe Threadsafe :: SafetySafetytexttext :: String -> Doc#StringDoc TcClsName TcClsName ::  NameSpaceoc NameSpacestringLstringL :: String -> LitStringLitStringLStringL :: String -> LitStringLitstringEstringE :: String -> ExpQyhStringExpQ StrictTypeQtype  StrictTypeQ = Q StrictType strictType strictType :: Q Strict -> TypeQ ->  StrictTypeQQ-QStrictTypeQ StrictTypeQ StrictTypetype  StrictType = (Strict, Type)Strictdata StrictStmtQtype StmtQ = Q StmtStmtdata Stmt1stdCallstdCall :: CallconvwlCallconvStdCallStdCall :: CallconvCallconvsplitsplit :: Type -> (Type, [Type]), Type(,)Type[]Typespacespace :: Docd^DocA space character  simpleMatch simpleMatch :: Pat -> Exp -> MatchPatExpMatchsigPsigP :: PatQ -> TypeQ -> PatQP:PatQTypeQPatQSigPSigP :: Pat -> Type -> PatPatTypePatsigEsigE :: ExpQ -> TypeQ -> ExpQExpQTypeQExpQSigESigE :: Exp -> Type -> Exp|iExpTypeExpsigDsigD :: Name -> TypeQ -> DecQNameTypeQDecQSigDSigD :: Name -> Type -> DecH4NameTypeDec showtextl showtextl ::  Show a => a -> DocShowaaDoc showName' showName' :: NameIs -> Name -> String'NameIsNameStringshowNameshowName :: Name -> StringrNameString sequenceQ sequenceQ :: [Q a] -> Q [a][]QaQ[]asepsep :: [Doc] -> DocA.[]DocDocEither hsep or vcat semisemi :: DocDocA ';' character sectionRsectionR :: ExpQ -> ExpQ -> ExpQ ExpQExpQExpQsectionLsectionL :: ExpQ -> ExpQ -> ExpQwbExpQExpQExpQSafetydata Safetysafesafe :: SafetySafetySafeSafe :: SafetySafetyrunQrunQ ::  Quasi m => Q a -> m aiQuasimQamarunIOrunIO :: IO a -> Q aIOaQaThe runIO function lets you run an I/O computation in the Q monad. Take care: you are guaranteed the ordering of calls to runIO within a single Q computation, but not about the order in which splices are run. Note: for various murky reasons, stdout and stderr handles are not necesarily flushed when the compiler finishes running, so you should flush them yourself. rparenrparen :: DocDocA ')' character returnQreturnQ :: a -> Q aaQareportreport :: Bool -> String -> Q ()u[BoolStringQ()renamerename :: Pat -> Q ([(Name, Name)], Pat)PatQ(,)[](,)NameNamePatreifyreify :: Name -> Q InfoWCNameQInfo8reify looks up information about the Name recUpdErecUpdE :: ExpQ -> [Q (Name, Exp)] -> ExpQExpQ[]Q(,)NameExpExpQRecUpdERecUpdE :: Exp ->  [FieldExp] -> ExpxExp[]FieldExpExprecPrecP :: Name ->  [FieldPatQ] -> PatQ Name[] FieldPatQPatQRecPRecP :: Name ->  [FieldPat] -> Pat c Name[]FieldPatPatrecoverrecover :: Q a -> Q a -> Q a  QaQaQarecConErecConE :: Name -> [Q (Name, Exp)] -> ExpQ~!R!Name[]Q(,)NameExpExpQRecConERecConE :: Name ->  [FieldExp] -> Exp!!Name[]FieldExpExprecCrecC :: Name -> [VarStrictTypeQ] -> ConQz"U"Name[]VarStrictTypeQConQRecCRecC :: Name -> [VarStrictType] -> Con""Name[] VarStrictTypeConrbrackrbrack :: Doc2#,#DocA ']' character rbracerbrace :: Doc|#v#DocA '}' character  rationalL rationalL :: Rational -> Lit##RationalLit RationalL RationalL :: Rational -> LitL$:$RationalLitrationalrational :: Rational -> Doc$$RationalDocRangeQtype RangeQ = Q Range$Rangedata Range%quotesquotes :: Doc -> Docd%W%DocDoc Wrap document in '...' quotePatquotePat ::  QuasiQuoter -> String -> Q Pat &% QuasiQuoterStringQPatquoteExpquoteExp ::  QuasiQuoter -> String -> Q Exp&l& QuasiQuoterStringQExp QuasiQuoter QuasiQuoter :: (String -> Q Exp) -> (String -> Q Pat) ->  QuasiQuoterF''StringQExpStringQPat QuasiQuoter QuasiQuoterdata  QuasiQuoter'Quasiclass (Monad m, Functor m) => Quasi m'qRunIOqRunIO ::  Quasi m => IO a -> m a8((QuasimIOamaqReportqReport ::  Quasi m => Bool -> String -> m ()((QuasimBoolStringm()qReifyqReify ::  Quasi m => Name -> m Info4))QuasimNamemInfoqRecoverqRecover ::  Quasi m => m a -> m a -> m a))QuasimmamamaqNewNameqNewName ::  Quasi m => String -> m Name6**QuasimStringmName qLocation qLocation ::  Quasi m => m Loc*}*QuasimmLocQdata Q a* punctuate punctuate :: Doc -> [Doc] -> [Doc]6++Doc[]Doc[]Doc`
punctuate p [d1, ... dn] = [d1 <> p, d2 <> p, ... dn-1 <> p, dn]
ptextptext :: String -> Doc++StringDoc PrimTyConI  PrimTyConI :: Name -> Int -> Bool -> Infop,V,NameIntBoolInfo Precedencetype  Precedence = Int,pprVarStrictTypepprVarStrictType :: (Name, Strict, Type) -> Doc<--(,,)NameStrictTypeDocpprTyApppprTyApp :: (Type, [Type]) -> Doc--(,)Type[]TypeDoc pprStrictType pprStrictType :: (Strict, Type) -> Doc(. .(,)StrictTypeDocpprPatpprPat ::  Precedence -> Pat -> Doc.. PrecedencePatDoc pprParendType pprParendType :: Type -> Doc..TypeDocpprName'pprName' :: NameIs -> Name -> Docj/T/NameIsNameDocpprNamepprName :: Name -> Doc//NameDoc pprMaybeExp pprMaybeExp ::  Precedence ->  Maybe Exp -> DocI0'0 PrecedenceMaybeExpDocPprMdata PprM aw0pprLitpprLit ::  Precedence -> Lit -> Doc00 PrecedenceLitDocpprintpprint ::  Ppr a => a -> StringN161PpraaString pprInfixExp pprInfixExp :: Exp -> Doc11ExpDoc pprFunArgType pprFunArgType :: Type -> Doc21TypeDoc pprFixity pprFixity :: Name -> Fixity -> Docz2d2NameFixityDoc pprFields pprFields ::  [(Name, Exp)] -> Doc22[](,)NameExpDocpprExppprExp ::  Precedence -> Exp -> Doc_3F3 PrecedenceExpDocpprCxtpprCxt :: Cxt -> Doc33CxtDocpprBodypprBody :: Bool -> Body -> Doc44BoolBodyDocppr_sigppr_sig :: Name -> Type -> Doc4o4NameTypeDocppr_listppr_list ::  Ppr a => [a] -> Doc44Ppra[]aDocpprppr ::  Ppr a => a -> DocG525PpraaDocPprclass Ppr at5 pkgString pkgString :: PkgName -> String55PkgNameStringPkgNametype PkgName = PackedString6PatQtype PatQ = Q PatQ6patGEpatGE :: [StmtQ] -> ExpQ -> Q (Guard, Exp)66[]StmtQExpQQ(,)GuardExppatGpatG :: [StmtQ] -> GuardQ=7%7[]StmtQGuardQPatGPatG :: [Stmt] -> Guard77[]StmtGuardPatdata Pat7parSparS ::  [[StmtQ]] -> StmtQ%88[][]StmtQStmtQParSParS :: [[Stmt]] -> Stmt8j8[][]StmtStmtparensIfparensIf :: Bool -> Doc -> Doc88BoolDocDocparensparens :: Doc -> Doc?929DocDoc Wrap document in (...) opPrecopPrec ::  Precedence99 Precedence occString occString :: OccName -> String :9OccNameStringOccNametype OccName = PackedStringN: notStrict notStrict :: Q Strict::QStrict NotStrict NotStrict :: Strict::StrictnormalGEnormalGE :: ExpQ -> ExpQ -> Q (Guard, Exp)k;D;ExpQExpQQ(,)GuardExpnormalGnormalG :: ExpQ -> GuardQ;;ExpQGuardQNormalGNormalG :: Exp -> Guard< <ExpGuardnormalCnormalC :: Name ->  [StrictTypeQ] -> ConQ<{<Name[] StrictTypeQConQNormalCNormalC :: Name ->  [StrictType] -> Con=<Name[] StrictTypeConnormalBnormalB :: ExpQ -> BodyQs=c=ExpQBodyQNormalBNormalB :: Exp -> Body==ExpBodynoPrecnoPrec ::  Precedence>> PrecedencenoBindSnoBindS :: ExpQ -> StmtQg>W>ExpQStmtQNoBindSNoBindS :: Exp -> Stmt>>ExpStmtnewtypeDnewtypeD :: CxtQ -> Name -> [Name] -> ConQ -> [Name] -> DecQ{?H?CxtQName[]NameConQ[]NameDecQNewtypeDNewtypeD :: Cxt -> Name -> [Name] -> Con -> [Name] -> Dec5@@CxtName[]NameCon[]NameDecnewNamenewName :: String -> Q Name@@StringQName nestDepth nestDepth :: Int@@Intnestnest :: Int -> Doc -> Doc6A$AIntDocDocNested NameUNameU :: Int# ->  NameFlavourAAInt# NameFlavour NameSpacedata  NameSpaceANameSNameS ::  NameFlavourB B NameFlavourNameQNameQ :: ModName ->  NameFlavourBhBModName NameFlavour nameModule nameModule :: Name ->  Maybe StringBBNameMaybeStringNameLNameL :: Int# ->  NameFlavourPC:CInt# NameFlavourNameIsdata NameIsCNameG NameG ::  NameSpace -> PkgName -> ModName ->  NameFlavour"DC NameSpacePkgNameModName NameFlavour NameFlavourdata  NameFlavour\DnameBasenameBase :: Name -> StringDDNameStringNameName :: OccName ->  NameFlavour -> Name2EEOccName NameFlavourNameNamedata Name^E modString modString :: ModName -> StringEEModNameStringModNametype ModName = PackedStringF mkPkgName mkPkgName :: String -> PkgNameiFUFStringPkgName mkOccName mkOccName :: String -> OccNameFFStringOccNamemkNameUmkNameU :: String -> Uniq -> Name=G&GStringUniqNamemkNameLmkNameL :: String -> Uniq -> NameGGStringUniqName mkNameG_v  mkNameG_v :: String -> String -> String -> Name?HHStringStringStringName mkNameG_tc  mkNameG_tc :: String -> String -> String -> NameHHStringStringStringName mkNameG_d  mkNameG_d :: String -> String -> String -> NameeIDIStringStringStringNamemkNamemkName :: String -> NameIIStringName mkModName mkModName :: String -> ModName!J JStringModName maxPrecedence maxPrecedence :: IntiJcJIntMatchQtype MatchQ = Q MatchJmatch match :: PatQ -> BodyQ -> [DecQ] -> MatchQ1K KPatQBodyQ[]DecQMatchQMatch Match :: Pat -> Body -> [Dec] -> MatchKKPatBody[]DecMatchMatchdata MatchKlparenlparen :: DocLLDocA '(' character locationlocation :: Q LocrLgLQLocMlocation gives you the Location at which this computation is spliced.  loc_start loc_start :: Loc -> CharPosM MLocCharPos loc_package loc_package :: Loc -> String}MmMLocString loc_module loc_module :: Loc -> StringMMLocString loc_filename loc_filename :: Loc -> String=N-NLocStringloc_endloc_end :: Loc -> CharPosNNLocCharPosLocLoc :: String -> String -> String -> CharPos -> CharPos -> LocSO!OStringStringStringCharPosCharPosLocLocdata Loc}OlitPlitP :: Lit -> PatQOOLitPatQLitPLitP :: Lit -> PatP PLitPatlitElitE :: Lit -> ExpQePWPLitExpQLitELitE :: Lit -> ExpPPLitExpLitdata LitPlistTlistT :: TypeQQQTypeQListTListT :: TypeQQJQTypelistPlistP :: [PatQ] -> PatQQQ[]PatQPatQListPListP :: [Pat] -> PatRQ[]PatPatlistElistE :: [ExpQ] -> ExpQ[RFR[]ExpQExpQListEListE :: [Exp] -> ExpRR[]ExpExpliftlift ::  Lift t => t -> Q ExpSRLiftttQExpLiftclass Lift tDSletSletS :: [DecQ] -> StmtQSS[]DecQStmtQLetSLetS :: [Dec] -> StmtSS[]DecStmtletEletE :: [DecQ] -> ExpQ -> ExpQbTGT[]DecQExpQExpQLetELetE :: [Dec] -> Exp -> ExpTT[]DecExpExplbracklbrack :: DocUTDocA '[' character lbracelbrace :: DocNUHUDocA '{' character lamElamE :: [PatQ] -> ExpQ -> ExpQUU[]PatQExpQExpQLamELamE :: [Pat] -> Exp -> Exp4VV[]PatExpExplam1Elam1E :: PatQ -> ExpQ -> ExpQVVPatQExpQExpQisStrictisStrict :: Q StrictVVQStrictIsStrictIsStrict :: Strict+W"WStrictisEmptyisEmpty :: Doc ->  PprM BoolWvWDocPprMBool-Returns True if the document is empty intPrimLintPrimL :: Integer -> LitXXIntegerLitIntPrimLIntPrimL :: Integer -> LitqX`XIntegerLitintegerLintegerL :: Integer -> LitXXIntegerLitIntegerLIntegerL :: Integer -> Lit)YYIntegerLitintegerinteger :: Integer -> DocYrYIntegerDocintint :: Int -> DocYYIntDoc instanceD  instanceD :: CxtQ -> TypeQ -> [DecQ] -> DecQ]Z;ZCxtQTypeQ[]DecQDecQ InstanceD  InstanceD :: Cxt -> Type -> [Dec] -> DecZZCxtType[]DecDecInfoQtype InfoQ = Q Info[Infodata InfoJ[InfixRInfixR :: FixityDirection[[FixityDirectioninfixP infixP :: PatQ -> Name -> PatQ -> PatQ\\PatQNamePatQPatQInfixP InfixP :: Pat -> Name -> Pat -> Pat\~\PatNamePatPatInfixNInfixN :: FixityDirection\\FixityDirectionInfixLInfixL :: FixityDirection:](]FixityDirectioninfixE infixE ::  Maybe ExpQ -> ExpQ ->  Maybe ExpQ -> ExpQ]]MaybeExpQExpQMaybeExpQExpQInfixE InfixE ::  Maybe Exp -> Exp ->  Maybe Exp -> Expn^E^MaybeExpExpMaybeExpExpinfixC infixC :: Q (Strict, Type) -> Name -> Q (Strict, Type) -> ConQ._^Q(,)StrictTypeNameQ(,)StrictTypeConQInfixC InfixC ::  StrictType -> Name ->  StrictType -> Con__ StrictTypeName StrictTypeConinfixApp infixApp :: ExpQ -> ExpQ -> ExpQ -> ExpQH`-`ExpQExpQExpQExpQInfixInfix :: NameIs`}`NameIsImportFImportF :: Callconv -> Safety -> String -> Name -> Type -> ForeignJaaCallconvSafetyStringNameTypeForeignhsephsep :: [Doc] -> Docaa[]DocDoc!List version of <+> hcathcat :: [Doc] -> Docbb[]DocDoc List version of <> hang hang :: Doc -> Int -> Doc -> DocbbDocIntDocDoc0
hang d1 n d2 = sep [d1, nest n d2]
GuardQtype GuardQ = Q GuardcguardedBguardedB :: [Q (Guard, Exp)] -> BodyQcic[]Q(,)GuardExpBodyQGuardedBGuardedB :: [(Guard, Exp)] -> Bodydc[](,)GuardExpBodyGuarddata Guard4dglobalglobal :: Name -> ExpQdydNameExpQgenpatgenpat :: Pat -> Q (Name -> ExpQ, Pat)edPatQ(,)NameExpQPatfunDepfunDep :: [Name] -> [Name] -> FunDepe_e[]Name[]NameFunDepFunDepFunDep :: [Name] -> [Name] -> FunDepfe[]Name[]NameFunDepFunDepdata FunDep0ffunDfunD :: Name ->  [ClauseQ] -> DecQffName[]ClauseQDecQFunDFunD :: Name -> [Clause] -> DecgfName[]ClauseDecfsepfsep :: [Doc] -> DochgUg[]DocDoc "Paragraph fill" version of sep fromToRfromToR :: ExpQ -> ExpQ -> RangeQggExpQExpQRangeQFromToRFromToR :: Exp -> Exp -> RangebhNhExpExpRangefromToEfromToE :: ExpQ -> ExpQ -> ExpQhhExpQExpQExpQ fromThenToR  fromThenToR :: ExpQ -> ExpQ -> ExpQ -> RangeQ\i?iExpQExpQExpQRangeQ FromThenToR  FromThenToR :: Exp -> Exp -> Exp -> RangeiiExpExpExpRange fromThenToE  fromThenToE :: ExpQ -> ExpQ -> ExpQ -> ExpQljQjExpQExpQExpQExpQ fromThenR fromThenR :: ExpQ -> ExpQ -> RangeQjjExpQExpQRangeQ FromThenR FromThenR :: Exp -> Exp -> RangeNk:kExpExpRange fromThenE fromThenE :: ExpQ -> ExpQ -> ExpQkkExpQExpQExpQfromRfromR :: ExpQ -> RangeQllExpQRangeQFromRFromR :: Exp -> RangeflWlExpRangefromEfromE :: ExpQ -> ExpQllExpQExpQforImpDforImpD :: Callconv -> Safety -> String -> Name -> TypeQ -> DecQxmHmCallconvSafetyStringNameTypeQDecQForeignDForeignD :: Foreign -> DecmmForeignDecForeigndata ForeignnforallT forallT :: [Name] -> CxtQ -> TypeQ -> TypeQnqn[]NameCxtQTypeQTypeQForallT ForallT :: [Name] -> Cxt -> Type -> Typeon[]NameCxtTypeTypeforallC forallC :: [Name] -> CxtQ -> ConQ -> ConQoo[]NameCxtQConQConQForallC ForallC :: [Name] -> Cxt -> Con -> Con*p p[]NameCxtConCon floatPrimL floatPrimL :: Rational -> LitpzpRationalLit FloatPrimL FloatPrimL :: Rational -> LitppRationalLitfloatfloat :: Float -> Doc@q1qFloatDocFixityDirectiondata FixityDirectionqFixityFixity :: Int -> FixityDirection -> FixityrqIntFixityDirectionFixityFixitydata Fixity4r FieldPatQtype  FieldPatQ = Q FieldPatyrfieldPatfieldPat :: Name -> PatQ ->  FieldPatQrrNamePatQ FieldPatQFieldPattype FieldPat = (Name, Pat)5s FieldExpQtype  FieldExpQ = Q FieldExpzsfieldExpfieldExp :: Name -> ExpQ ->  Q (Name, Exp)tsNameExpQQ(,)NameExpFieldExptype FieldExp = (Name, Exp)Ftfcatfcat :: [Doc] -> Doctt[]DocDoc "Paragraph fill" version of cat ExpQtype ExpQ = Q ExptExportF ExportF :: Callconv -> String -> Name -> Type -> ForeignupuCallconvStringNameTypeForeignExpdata Expuequalsequals :: DocuuDocA '=' character emptyempty :: DocFv@vDocAn empty document dyndyn :: String -> Q ExpvvStringQExp doubleQuotes doubleQuotes :: Doc -> Doc wvDocDoc Wrap document in "..."  doublePrimL doublePrimL :: Rational -> Litw}wRationalLit DoublePrimL DoublePrimL :: Rational -> LitwwRationalLitdoubledouble :: Double -> DocIx9xDoubleDocdoEdoE :: [StmtQ] -> ExpQxx[]StmtQExpQDoEDoE :: [Stmt] -> Expxx[]StmtExpDoctype Doc = PprM Doc,y defaultFixity defaultFixity :: FixityzyqyFixityDecQtype DecQ = Q DecyDecdata DecydataToQadataToQa ::  Data a =>  (Name -> k) ->  (Lit -> Q q) -> (k -> [Q q] -> Q q) -> (b -> Maybe (Q q)) -> a -> Q qzzDataaNamekLitQqk[]QqQqbMaybeQqaQq dataToPatQ dataToPatQ ::  Data a => (b -> Maybe (Q Pat)) -> a -> Q Pat{n{DataabMaybeQPataQPatdataToPatQ converts a value to a 'Q Pat' representation of the same value. It takes a function to handle type-specific cases.  dataToExpQ dataToExpQ ::  Data a => (b -> Maybe (Q Exp)) -> a -> Q Exp||DataabMaybeQExpaQExpdataToExpQ converts a value to a 'Q Exp' representation of the same value. It takes a function to handle type-specific cases. DataNameDataName ::  NameSpace}} NameSpacedataDdataD :: CxtQ -> Name -> [Name] -> [ConQ] -> [Name] -> DecQ_~&~CxtQName[]Name[]ConQ[]NameDecQDataDDataD :: Cxt -> Name -> [Name] -> [Con] -> [Name] -> Dec~CxtName[]Name[]Con[]NameDecDataConI DataConI :: Name -> Type -> Name -> Fixity -> InfoNameTypeNameFixityInfoCxtQtype CxtQ = Q Cxtcxtcxt :: [TypeQ] -> CxtQG1[]TypeQCxtQCxttype Cxt = [Type]|conTconT :: Name -> TypeQ΀NameTypeQConTConT :: Name -> TypeNameTypeConQtype ConQ = Q ConTconPconP :: Name -> [PatQ] -> PatQName[]PatQPatQConPConP :: Name -> [Pat] -> Pat,Name[]PatPatconEconE :: Name -> ExpQ|mNameExpQConEConE :: Name -> ExpʂNameExpcondE condE :: ExpQ -> ExpQ -> ExpQ -> ExpQH-ExpQExpQExpQExpQCondE CondE :: Exp -> Exp -> Exp -> ExpExpExpExpExpCondata ConcompEcompE :: [StmtQ] -> ExpQD.[]StmtQExpQCompECompE :: [Stmt] -> Exp[]StmtExpcommacomma :: DocԄ΄DocA ',' character combinecombine :: [([(Name, Name)], Pat)] -> ([(Name, Name)], [Pat])Q[](,)[](,)NameNamePat(,)[](,)NameName[]Patcoloncolon :: Doc܅DocA ':' character ClauseQtype ClauseQ = Q Clause1clause clause :: [PatQ] -> BodyQ -> [DecQ] -> ClauseQɆ[]PatQBodyQ[]DecQClauseQClause Clause :: [Pat] -> Body -> [Dec] -> ClauseY2[]PatBody[]DecClauseClausedata ClauseClassOpI ClassOpI :: Name -> Type -> Name -> Fixity -> Info'NameTypeNameFixityInfoClassIClassI :: Dec -> InfoykDecInfoclassDclassD :: CxtQ -> Name -> [Name] -> [FunDep] -> [DecQ] -> DecQACxtQName[]Name[]FunDep[]DecQDecQClassDClassD :: Cxt -> Name -> [Name] -> [FunDep] -> [Dec] -> DecˉCxtName[]Name[]FunDep[]DecDecCharPostype CharPos = (Int, Int)DcharLcharL :: Char -> LitCharLitCharLCharL :: Char -> Lit֊CharLitcharchar :: Char -> Doc2$CharDoccCallcCall :: CallconvtiCallconvCCallCCall :: CallconvCallconvcatcat :: [Doc] -> Doc[]DocDocEither hcat or vcat caseEcaseE :: ExpQ -> [MatchQ] -> ExpQsExpQ[]MatchQExpQCaseECaseE :: Exp -> [Match] -> ExpExp[]MatchExpCallconvdata Callconv2bracketsbrackets :: Doc -> DocyDocDoc Wrap document in [...] bracesbraces :: Doc -> DocDocDoc Wrap document in {...} BodyQtype BodyQ = Q BodyOBodydata Body{bindSbindS :: PatQ -> ExpQ -> StmtQώPatQExpQStmtQBindSBindS :: Pat -> Exp -> StmtI6PatExpStmtbindQbindQ :: Q a ->  (a -> Q b) -> Q bQaaQbQbasPasP :: Name -> PatQ -> PatQ$NamePatQPatQAsPAsP :: Name -> Pat -> PatqNamePatPatarrowTarrowT :: TypeQTypeQArrowTArrowT :: TypeType arithSeqE arithSeqE :: RangeQ -> ExpQ\KRangeQExpQ ArithSeqE ArithSeqE :: Range -> ExpRangeExpappTappT :: TypeQ -> TypeQ -> TypeQ" TypeQTypeQTypeQAppTAppT :: Type -> Type -> TypesTypeTypeTypeappsEappsE :: [ExpQ] -> ExpQ͒[]ExpQExpQappPrecappPrec ::  Precedence, PrecedenceAppliedApplied :: NameIsneNameIsappEappE :: ExpQ -> ExpQ -> ExpQԓExpQExpQExpQAppEAppE :: Exp -> Exp -> Exp4"ExpExpExpalphaalpha :: [(Name, Name)] -> Name -> ExpQ[](,)NameNameNameExpQAloneAlone :: NameIsNameIs<> (<>) :: Doc -> Doc -> DocYGDocDocDocBeside <+> (<+>) :: Doc -> Doc -> DocĕDocDocDocBeside, separated by space $+$ ($+$) :: Doc -> Doc -> DocC1DocDocDocAbove, without dovetailing. $$ ($$) :: Doc -> Doc -> DocDocDocDoc5Above; if there is no overlap it "dovetails" the two  wordPrimL wordPrimL :: Integer -> LitTCIntegerLit WordPrimL WordPrimL :: Integer -> LitIntegerLitwildPwildP :: PatQPatQWildPWildP :: Pat$PatvarTvarT :: Name -> TypeQvfNameTypeQVarTVarT :: Name -> TypeƘNameTypeVarStrictTypeQtype VarStrictTypeQ = Q VarStrictType varStrictType varStrictType :: Name ->  StrictTypeQ -> VarStrictTypeQName StrictTypeQVarStrictTypeQvarPvarP :: Name -> PatQNamePatQVarPVarP :: Name -> PatRDNamePatVarI VarI :: Name -> Type ->  Maybe Dec -> Fixity -> InfoʚNameTypeMaybeDecFixityInfovarEvarE :: Name -> ExpQE6NameExpQVarEVarE :: Name -> ExpNameExpvalD valD :: PatQ -> BodyQ -> [DecQ] -> DecQPatQBodyQ[]DecQDecQValD ValD :: Pat -> Body -> [Dec] -> DecyPatBody[]DecDecunsafeunsafe :: SafetyלΜSafetyUnsafeUnsafe :: SafetySafetyTyVarITyVarI :: Name -> Type -> InfolNameTypeInfotySynD tySynD :: Name -> [Name] -> TypeQ -> DecQ Name[]NameTypeQDecQTySynD TySynD :: Name -> [Name] -> Type -> DecqName[]NameTypeDecTypeQtype TypeQ = Q TypeʞTypedata TypeTyConITyConI :: Dec -> InfoH:DecInfotupPtupP :: [PatQ] -> PatQ[]PatQPatQTupPTupP :: [Pat] -> Pat[]PatPat tupleTypeName tupleTypeName :: Int -> NameTFIntNametupleTtupleT :: Int -> TypeQIntTypeQTupleTTupleT :: Int -> TypeIntType tupleDataName tupleDataName :: Int -> NameZLIntNametupEtupE :: [ExpQ] -> ExpQ[]ExpQExpQTupETupE :: [Exp] -> Exp[]ExpExptildePtildeP :: PatQ -> PatQZKPatQPatQTildePTildeP :: Pat -> PatPatPat threadsafe threadsafe :: SafetySafety Threadsafe Threadsafe :: Safety:1SafetystringLstringL :: String -> LitStringLitStringLStringL :: String -> LitڣStringLitstringEstringE :: String -> ExpQD3StringExpQ StrictTypeQtype  StrictTypeQ = Q StrictType strictType strictType :: Q Strict -> TypeQ ->  StrictTypeQQStrictTypeQ StrictTypeQStrictdata StrictLStmtQtype StmtQ = Q StmtStmtdata StmtstdCallstdCall :: CallconvCallconvStdCallStdCall :: Callconv=2CallconvsigPsigP :: PatQ -> TypeQ -> PatQPatQTypeQPatQSigPSigP :: Pat -> Type -> PatPatTypePatsigEsigE :: ExpQ -> TypeQ -> ExpQoYExpQTypeQExpQSigESigE :: Exp -> Type -> ExpѧExpTypeExpsigDsigD :: Name -> TypeQ -> DecQ9#NameTypeQDecQSigDSigD :: Name -> Type -> DecNameTypeDecsectionRsectionR :: ExpQ -> ExpQ -> ExpQ ExpQExpQExpQsectionLsectionL :: ExpQ -> ExpQ -> ExpQydExpQExpQExpQSafetydata Safetysafesafe :: SafetyܩSafetySafeSafe :: Safety!SafetyrunQrunQ ::  Quasi m => Q a -> m akQuasimQamarunIOrunIO :: IO a -> Q a̪IOaQaThe runIO function lets you run an I/O computation in the Q monad. Take care: you are guaranteed the ordering of calls to runIO within a single Q computation, but not about the order in which splices are run. Note: for various murky reasons, stdout and stderr handles are not necesarily flushed when the compiler finishes running, so you should flush them yourself. reportreport :: Bool -> String -> Q ()ܬ¬BoolStringQ()reifyreify :: Name -> Q Info5!NameQInfo8reify looks up information about the Name recUpdErecUpdE :: ExpQ -> [Q (Name, Exp)] -> ExpQϭExpQ[]Q(,)NameExpExpQRecUpdERecUpdE :: Exp ->  [FieldExp] -> ExpsVExp[]FieldExpExprecPrecP :: Name ->  [FieldPatQ] -> PatQˮName[] FieldPatQPatQRecPRecP :: Name ->  [FieldPat] -> Pat_AName[]FieldPatPatrecoverrecover :: Q a -> Q a -> Q aίQaQaQarecConErecConE :: Name -> [Q (Name, Exp)] -> ExpQ\0Name[]Q(,)NameExpExpQRecConERecConE :: Name ->  [FieldExp] -> ExpְName[]FieldExpExprecCrecC :: Name -> [VarStrictTypeQ] -> ConQX3Name[]VarStrictTypeQConQRecCRecC :: Name -> [VarStrictType] -> ConֱName[] VarStrictTypeCon rationalL rationalL :: Rational -> Lit6$RationalLit RationalL RationalL :: Rational -> LitRationalLitRangeQtype RangeQ = Q RangeҲRangedata RangeQdata Q a( PrimTyConI  PrimTyConI :: Name -> Int -> Bool -> InfoNameIntBoolInfopprPatpprPat ::  Precedence -> Pat -> Doc  PrecedencePatDoc pprParendType pprParendType :: Type -> DocrTypeDocpprLitpprLit ::  Precedence -> Lit -> Docٴ PrecedenceLitDocpprintpprint ::  Ppr a => a -> StringW?PpraaStringpprExppprExp ::  Precedence -> Exp -> Docɵ PrecedenceExpDocppr_listppr_list ::  Ppr a => [a] -> Doc4Ppra[]aDocpprppr ::  Ppr a => a -> DocxPpraaDocPprclass Ppr aPatQtype PatQ = Q PatpatGEpatGE :: [StmtQ] -> ExpQ -> Q (Guard, Exp)~P[]StmtQExpQQ(,)GuardExppatGpatG :: [StmtQ] -> GuardQܷķ[]StmtQGuardQPatGPatG :: [Stmt] -> Guard6 []StmtGuardPatdata Pat`parSparS ::  [[StmtQ]] -> StmtQĸ[][]StmtQStmtQParSParS :: [[Stmt]] -> Stmt$ [][]StmtStmt notStrict notStrict :: Q StrictqcQStrict NotStrict NotStrict :: StrictStrictnormalGEnormalGE :: ExpQ -> ExpQ -> Q (Guard, Exp)AExpQExpQQ(,)GuardExpnormalGnormalG :: ExpQ -> GuardQExpQGuardQNormalGNormalG :: Exp -> GuardExpGuardnormalCnormalC :: Name ->  [StrictTypeQ] -> ConQsQName[] StrictTypeQConQNormalCNormalC :: Name ->  [StrictType] -> ConѻName[] StrictTypeConnormalBnormalB :: ExpQ -> BodyQI9ExpQBodyQNormalBNormalB :: Exp -> BodyExpBodynoBindSnoBindS :: ExpQ -> StmtQExpQStmtQNoBindSNoBindS :: Exp -> StmtI;ExpStmtnewtypeDnewtypeD :: CxtQ -> Name -> [Name] -> ConQ -> [Name] -> DecQ ֽCxtQName[]NameConQ[]NameDecQNewtypeDNewtypeD :: Cxt -> Name -> [Name] -> Con -> [Name] -> DecþCxtName[]NameCon[]NameDecnewNamenewName :: String -> Q Name$StringQName nameModule nameModule :: Name ->  Maybe StringyNameMaybeStringnameBasenameBase :: Name -> String޿NameStringNamedata NamemkNamemkName :: String -> NamesbStringName maxPrecedence maxPrecedence :: IntIntMatchQtype MatchQ = Q Matchmatch match :: PatQ -> BodyQ -> [DecQ] -> MatchQ_PatQBodyQ[]DecQMatchQMatch Match :: Pat -> Body -> [Dec] -> MatchPatBody[]DecMatchMatchdata Match5locationlocation :: Q LoczoQLocMlocation gives you the Location at which this computation is spliced.  loc_start loc_start :: Loc -> CharPos%LocCharPos loc_package loc_package :: Loc -> StringuLocString loc_module loc_module :: Loc -> StringLocString loc_filename loc_filename :: Loc -> StringE5LocStringloc_endloc_end :: Loc -> CharPosLocCharPosLocLoc :: String -> String -> String -> CharPos -> CharPos -> Loc[)StringStringStringCharPosCharPosLocLocdata LoclitPlitP :: Lit -> PatQLitPatQLitPLitP :: Lit -> PatLitPatlitElitE :: Lit -> ExpQm_LitExpQLitELitE :: Lit -> ExpLitExpLitdata LitlistTlistT :: TypeQTypeQListTListT :: TypeYRTypelistPlistP :: [PatQ] -> PatQ[]PatQPatQListPListP :: [Pat] -> Pat []PatPatlistElistE :: [ExpQ] -> ExpQcN[]ExpQExpQListEListE :: [Exp] -> Exp[]ExpExpletSletS :: [DecQ] -> StmtQ[]DecQStmtQLetSLetS :: [Dec] -> StmtiU[]DecStmtletEletE :: [DecQ] -> ExpQ -> ExpQ[]DecQExpQExpQLetELetE :: [Dec] -> Exp -> Exp?'[]DecExpExplamElamE :: [PatQ] -> ExpQ -> ExpQ[]PatQExpQExpQLamELamE :: [Pat] -> Exp -> Exp[]PatExpExplam1Elam1E :: PatQ -> ExpQ -> ExpQ}hPatQExpQExpQisStrictisStrict :: Q StrictQStrictIsStrictIsStrict :: Strict StrictintPrimLintPrimL :: Integer -> LithWIntegerLitIntPrimLIntPrimL :: Integer -> LitIntegerLitintegerLintegerL :: Integer -> Lit IntegerLitIntegerLIntegerL :: Integer -> Lit|kIntegerLit instanceD  instanceD :: CxtQ -> TypeQ -> [DecQ] -> DecQ CxtQTypeQ[]DecQDecQ InstanceD  InstanceD :: Cxt -> Type -> [Dec] -> DecvCxtType[]DecDecInfoQtype InfoQ = Q InfoInfodata InfoInfixRInfixR :: FixityDirectionK9FixityDirectioninfixP infixP :: PatQ -> Name -> PatQ -> PatQPatQNamePatQPatQInfixP InfixP :: Pat -> Name -> Pat -> PatE-PatNamePatPatInfixNInfixN :: FixityDirectionFixityDirectionInfixLInfixL :: FixityDirectionFixityDirectioninfixE infixE ::  Maybe ExpQ -> ExpQ ->  Maybe ExpQ -> ExpQZMaybeExpQExpQMaybeExpQExpQInfixE InfixE ::  Maybe Exp -> Exp ->  Maybe Exp -> ExpMaybeExpExpMaybeExpExpinfixC infixC :: Q (Strict, Type) -> Name -> Q (Strict, Type) -> ConQQ(,)StrictTypeNameQ(,)StrictTypeConQInfixC InfixC ::  StrictType -> Name ->  StrictType -> ConsM StrictTypeName StrictTypeConinfixApp infixApp :: ExpQ -> ExpQ -> ExpQ -> ExpQExpQExpQExpQExpQImportFImportF :: Callconv -> Safety -> String -> Name -> Type -> ForeignCallconvSafetyStringNameTypeForeignGuardQtype GuardQ = Q GuardguardedBguardedB :: [Q (Guard, Exp)] -> BodyQuM[]Q(,)GuardExpBodyQGuardedBGuardedB :: [(Guard, Exp)] -> Body[](,)GuardExpBodyGuarddata Guardglobalglobal :: Name -> ExpQl]NameExpQFunDepFunDep :: [Name] -> [Name] -> FunDep[]Name[]NameFunDepFunDepdata FunDepfunDfunD :: Name ->  [ClauseQ] -> DecQpName[]ClauseQDecQFunDFunD :: Name -> [Clause] -> DecName[]ClauseDecfromToRfromToR :: ExpQ -> ExpQ -> RangeQnWExpQExpQRangeQFromToRFromToR :: Exp -> Exp -> RangeExpExpRangefromToEfromToE :: ExpQ -> ExpQ -> ExpQD/ExpQExpQExpQ fromThenToR  fromThenToR :: ExpQ -> ExpQ -> ExpQ -> RangeQExpQExpQExpQRangeQ FromThenToR  FromThenToR :: Exp -> Exp -> Exp -> RangeX?ExpExpExpRange fromThenToE  fromThenToE :: ExpQ -> ExpQ -> ExpQ -> ExpQExpQExpQExpQExpQ fromThenR fromThenR :: ExpQ -> ExpQ -> RangeQV?ExpQExpQRangeQ FromThenR FromThenR :: Exp -> Exp -> RangeExpExpRange fromThenE fromThenE :: ExpQ -> ExpQ -> ExpQ4ExpQExpQExpQfromRfromR :: ExpQ -> RangeQyExpQRangeQFromRFromR :: Exp -> RangeExpRangefromEfromE :: ExpQ -> ExpQ.ExpQExpQforImpDforImpD :: Callconv -> Safety -> String -> Name -> TypeQ -> DecQCallconvSafetyStringNameTypeQDecQForeignDForeignD :: Foreign -> DecJ9ForeignDecForeigndata Foreign|forallT forallT :: [Name] -> CxtQ -> TypeQ -> TypeQ []NameCxtQTypeQTypeQForallT ForallT :: [Name] -> Cxt -> Type -> Typer[]NameCxtTypeTypeForallC ForallC :: [Name] -> Cxt -> Con -> Con[]NameCxtConCon floatPrimL floatPrimL :: Rational -> LitxfRationalLit FloatPrimL FloatPrimL :: Rational -> LitRationalLitFixityDirectiondata FixityDirectionFixityFixity :: Int -> FixityDirection -> Fixity}IntFixityDirectionFixityFixitydata Fixity FieldPatQtype  FieldPatQ = Q FieldPatfieldPatfieldPat :: Name -> PatQ ->  FieldPatQqNamePatQ FieldPatQFieldPattype FieldPat = (Name, Pat)fieldExpfieldExp :: Name -> ExpQ ->  Q (Name, Exp)W1NameExpQQ(,)NameExpFieldExptype FieldExp = (Name, Exp)ExpQtype ExpQ = Q ExpExportF ExportF :: Callconv -> String -> Name -> Type -> Foreign{QCallconvStringNameTypeForeignExpdata Expdyndyn :: String -> Q ExpStringQExp doublePrimL doublePrimL :: Rational -> Lit`NRationalLit DoublePrimL DoublePrimL :: Rational -> LitRationalLitdoEdoE :: [StmtQ] -> ExpQ[]StmtQExpQDoEDoE :: [Stmt] -> Expp\[]StmtExp defaultFixity defaultFixity :: FixityFixityDecQtype DecQ = Q DecDecdata DecdataDdataD :: CxtQ -> Name -> [Name] -> [ConQ] -> [Name] -> DecQCxtQName[]Name[]ConQ[]NameDecQDataDDataD :: Cxt -> Name -> [Name] -> [Con] -> [Name] -> DecfCxtName[]Name[]Con[]NameDecDataConI DataConI :: Name -> Type -> Name -> Fixity -> Info:NameTypeNameFixityInfoCxtQtype CxtQ = Q Cxtpcxtcxt :: [TypeQ] -> CxtQ[]TypeQCxtQCxttype Cxt = [Type]conTconT :: Name -> TypeQO?NameTypeQConTConT :: Name -> TypeNameTypeConQtype ConQ = Q ConconPconP :: Name -> [PatQ] -> PatQC(Name[]PatQPatQConPConP :: Name -> [Pat] -> PatName[]PatPatconEconE :: Name -> ExpQNameExpQConEConE :: Name -> ExpK=NameExpcondE condE :: ExpQ -> ExpQ -> ExpQ -> ExpQExpQExpQExpQExpQCondE CondE :: Exp -> Exp -> Exp -> Exp?(ExpExpExpExpCondata ConicompEcompE :: [StmtQ] -> ExpQ[]StmtQExpQCompECompE :: [Stmt] -> Exp []StmtExpClauseQtype ClauseQ = Q Clause\clause clause :: [PatQ] -> BodyQ -> [DecQ] -> ClauseQ[]PatQBodyQ[]DecQClauseQClause Clause :: [Pat] -> Body -> [Dec] -> Clause][]PatBody[]DecClauseClausedata ClauseClassOpI ClassOpI :: Name -> Type -> Name -> Fixity -> InfoR/NameTypeNameFixityInfoClassIClassI :: Dec -> InfoDecInfoclassDclassD :: CxtQ -> Name -> [Name] -> [FunDep] -> [DecQ] -> DecQl1CxtQName[]Name[]FunDep[]DecQDecQClassDClassD :: Cxt -> Name -> [Name] -> [FunDep] -> [Dec] -> Dec.CxtName[]Name[]FunDep[]DecDeccharLcharL :: Char -> Lit~pCharLitCharLCharL :: Char -> LitCharLitcCallcCall :: CallconvCallconvCCallCCall :: CallconvRGCallconvcaseEcaseE :: ExpQ -> [MatchQ] -> ExpQExpQ[]MatchQExpQCaseECaseE :: Exp -> [Match] -> Exp4Exp[]MatchExpCallconvdata CallconvhBodyQtype BodyQ = Q BodyBodydata BodybindSbindS :: PatQ -> ExpQ -> StmtQ7!PatQExpQStmtQBindSBindS :: Pat -> Exp -> StmtPatExpStmtasPasP :: Name -> PatQ -> PatQNamePatQPatQAsPAsP :: Name -> Pat -> Pat_LNamePatPatarrowTarrowT :: TypeQTypeQArrowTArrowT :: TypeType arithSeqE arithSeqE :: RangeQ -> ExpQ7&RangeQExpQ ArithSeqE ArithSeqE :: Range -> ExpRangeExpappTappT :: TypeQ -> TypeQ -> TypeQTypeQTypeQTypeQAppTAppT :: Type -> Type -> TypecNTypeTypeTypeappsEappsE :: [ExpQ] -> ExpQ[]ExpQExpQappEappE :: ExpQ -> ExpQ -> ExpQ#ExpQExpQExpQAppEAppE :: Exp -> Exp -> ExpqExpExpExpTHmodule Language.Haskell.THtemplate-haskellpackage template-haskellHFacilities for manipulating Haskell source code using Template Haskell. Syntaxmodule Language.Haskell.TH.Syntax2Abstract syntax definitions for Template Haskell. Quotemodule Language.Haskell.TH.QuotePprLibmodule Language.Haskell.TH.PprLib7Pprmodule Language.Haskell.TH.PprsLibmodule Language.Haskell.TH.LibM4LanguageHaskellTHLanguageHaskellTHPprLanguageHaskellTHPprLibLanguageHaskellTHQuoteLanguageHaskellTHLibLanguageHaskellTHSyntaxqtemplate-haskell2.3.0.1Nhttp://hackage.haskell.org/packages/archive/template-haskell/2.3.0.1/doc/html/Khttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/template-haskell