From ed23b9d8d8b1326525af6cf28dbcf807a000819f Mon Sep 17 00:00:00 2001 From: bringert Date: Tue, 6 Dec 2005 15:57:43 +0000 Subject: [PATCH] Transfer: Changed BNFC's layout syntax resolver to add a semicolon at EOF if using top-level layout sytax. Changed transfer syntax to use this to force semicolon after imports when pretty printing transfer. transfer grammar printer now produces Transfer syntax, not core. It also imports prelude and includes Eq and Compos instances. --- src/GF/API/GrammarToTransfer.hs | 71 +++-- src/Transfer/Syntax/Doc.tex | 2 - src/Transfer/Syntax/Layout.hs | 15 +- src/Transfer/Syntax/Par.hs | 518 ++++++++++++++++---------------- src/Transfer/Syntax/Par.y | 8 +- src/Transfer/Syntax/Print.hs | 2 - src/Transfer/Syntax/Syntax.cf | 7 +- 7 files changed, 311 insertions(+), 312 deletions(-) diff --git a/src/GF/API/GrammarToTransfer.hs b/src/GF/API/GrammarToTransfer.hs index 1bdd4ec94..658c15184 100644 --- a/src/GF/API/GrammarToTransfer.hs +++ b/src/GF/API/GrammarToTransfer.hs @@ -22,62 +22,73 @@ import GF.Grammar.Macros import GF.Infra.Modules import GF.Data.Operations -import Transfer.Core.Abs as C -import Transfer.Core.Print +import Transfer.Syntax.Abs as S +import Transfer.Syntax.Print -- | the main function grammar2transfer :: GFC.CanonGrammar -> String -grammar2transfer gr = printTree $ C.Module [cats2cat cat tree cats, funs2tree cat tree funs] +grammar2transfer gr = printTree $ S.Module imports decls where - cat = C.CIdent "Cat" -- FIXME - tree = C.CIdent "Tree" -- FIXME + cat = S.Ident "Cat" -- FIXME + tree = S.Ident "Tree" -- FIXME defs = concat [tree2list (jments m) | im@(_,ModMod m) <- modules gr, isModAbs m] -- get category name and context cats = [(cat, c) | (cat,GFC.AbsCat c _) <- defs] -- get function name and type funs = [(fun, typ) | (fun,GFC.AbsFun typ _) <- defs] name = ifNull "UnknownModule" (symid . last) [n | (n,ModMod m) <- modules gr, isModAbs m] - - + imports = [Import (S.Ident "prelude")] + decls = [cats2cat cat tree cats, funs2tree cat tree funs] ++ instances tree -- | Create a declaration of the type of categories given a list -- of category names and their contexts. -cats2cat :: CIdent -- ^ the name of the Cat type - -> CIdent -- ^ the name of the Tree type +cats2cat :: S.Ident -- ^ the name of the Cat type + -> S.Ident -- ^ the name of the Tree type -> [(A.Ident,A.Context)] -> Decl -cats2cat cat tree = C.DataDecl cat C.EType . map (uncurry catCons) +cats2cat cat tree = S.DataDecl cat S.EType . map (uncurry catCons) where - catCons i c = C.ConsDecl (id2id i) (catConsType c) - catConsType = foldr pi (C.EVar cat) - pi (i,x) t = C.EPi (id2pv i) (addTree tree $ term2exp x) t + catCons i c = S.ConsDecl (id2id i) (catConsType c) + catConsType = foldr pi (S.EVar cat) + pi (i,x) t = mkPi (id2pv i) (addTree tree $ term2exp x) t -funs2tree :: CIdent -- ^ the name of the Cat type - -> CIdent -- ^ the name of the Tree type +funs2tree :: S.Ident -- ^ the name of the Cat type + -> S.Ident -- ^ the name of the Tree type -> [(A.Ident,A.Type)] -> Decl funs2tree cat tree = - C.DataDecl tree (C.EPi C.PVWild (EVar cat) C.EType) . map (uncurry funCons) + S.DataDecl tree (S.EPiNoVar (S.EVar cat) S.EType) . map (uncurry funCons) where - funCons i t = C.ConsDecl (id2id i) (addTree tree $ term2exp t) + funCons i t = S.ConsDecl (id2id i) (addTree tree $ term2exp t) -term2exp :: A.Term -> C.Exp +term2exp :: A.Term -> S.Exp term2exp t = case t of - A.Vr i -> C.EVar (id2id i) - A.App t1 t2 -> C.EApp (term2exp t1) (term2exp t2) - A.Abs i t1 -> C.EAbs (id2pv i) (term2exp t1) - A.Prod i t1 t2 -> C.EPi (id2pv i) (term2exp t1) (term2exp t2) - A.Q m i -> C.EVar (id2id i) + A.Vr i -> S.EVar (id2id i) + A.App t1 t2 -> S.EApp (term2exp t1) (term2exp t2) + A.Abs i t1 -> S.EAbs (id2pv i) (term2exp t1) + A.Prod i t1 t2 -> mkPi (id2pv i) (term2exp t1) (term2exp t2) + A.Q m i -> S.EVar (id2id i) _ -> error $ "term2exp: can't handle " ++ show t -id2id :: A.Ident -> C.CIdent -id2id = CIdent . symid +mkPi :: S.VarOrWild -> S.Exp -> S.Exp -> S.Exp +mkPi VWild t e = S.EPiNoVar t e +mkPi v t e = S.EPi v t e -id2pv :: A.Ident -> PatternVariable -id2pv = C.PVVar . id2id +id2id :: A.Ident -> S.Ident +id2id = S.Ident . symid + +id2pv :: A.Ident -> S.VarOrWild +id2pv i = case symid i of + "h_" -> S.VWild -- FIXME: hacky? + x -> S.VVar (S.Ident x) -- FIXME: I think this is not general enoguh. -addTree :: CIdent -> C.Exp -> C.Exp +addTree :: S.Ident -> S.Exp -> S.Exp addTree tree x = case x of - C.EPi i t e -> C.EPi i (addTree tree t) (addTree tree e) - e -> C.EApp (C.EVar tree) e \ No newline at end of file + S.EPi i t e -> S.EPi i (addTree tree t) (addTree tree e) + S.EPiNoVar t e -> S.EPiNoVar (addTree tree t) (addTree tree e) + e -> S.EApp (S.EVar tree) e + +instances :: S.Ident -> [S.Decl] +instances tree = [DeriveDecl (S.Ident "Eq") tree, + DeriveDecl (S.Ident "Compos") tree] diff --git a/src/Transfer/Syntax/Doc.tex b/src/Transfer/Syntax/Doc.tex index 9005ffcd0..46716f164 100644 --- a/src/Transfer/Syntax/Doc.tex +++ b/src/Transfer/Syntax/Doc.tex @@ -93,7 +93,6 @@ All other symbols are terminals.\\ \begin{tabular}{lll} {\nonterminal{ListImport}} & {\arrow} &{\emptyP} \\ - & {\delimit} &{\nonterminal{Import}} \\ & {\delimit} &{\nonterminal{Import}} {\terminal{;}} {\nonterminal{ListImport}} \\ \end{tabular}\\ @@ -106,7 +105,6 @@ All other symbols are terminals.\\ \begin{tabular}{lll} {\nonterminal{ListDecl}} & {\arrow} &{\emptyP} \\ - & {\delimit} &{\nonterminal{Decl}} \\ & {\delimit} &{\nonterminal{Decl}} {\terminal{;}} {\nonterminal{ListDecl}} \\ \end{tabular}\\ diff --git a/src/Transfer/Syntax/Layout.hs b/src/Transfer/Syntax/Layout.hs index c0bf9e5d8..d5eae2010 100644 --- a/src/Transfer/Syntax/Layout.hs +++ b/src/Transfer/Syntax/Layout.hs @@ -105,10 +105,17 @@ resolveLayout tp = res Nothing [if tl then Implicit 1 else Explicit] -- Nothing to see here, move along. res _ st (t:ts) = moveAlong st [t] ts - -- We are at EOF, close all open implicit non-top-level layout blocks. - res (Just t) st [] = - addTokens (position t) [layoutClose | Implicit n <- st, - not (tl && n == 1)] [] + -- At EOF: skip explicit blocks. + res (Just t) (Explicit:bs) [] | null bs = [] + | otherwise = res (Just t) bs [] + + -- If we are using top-level layout, insert a semicolon after the last token + res (Just t) [Implicit n] [] = addToken (nextPos t) layoutSep [] + + -- At EOF in an implicit, non-top-level block: close the block + res (Just t) (Implicit n:bs) [] = + let c = addToken (nextPos t) layoutClose [] + in moveAlong bs c [] -- This should only happen if the input is empty. res Nothing st [] = [] diff --git a/src/Transfer/Syntax/Par.hs b/src/Transfer/Syntax/Par.hs index 455d63676..c3caecd63 100644 --- a/src/Transfer/Syntax/Par.hs +++ b/src/Transfer/Syntax/Par.hs @@ -303,21 +303,21 @@ happyOutTok x = unsafeCoerce# x {-# INLINE happyOutTok #-} happyActOffsets :: HappyAddr -happyActOffsets = HappyA# "\xbf\x01\xa6\x03\xa9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9f\x01\xc4\x01\xf3\x00\x00\x00\xc9\x01\xbb\x01\x6c\x00\x9f\x00\xd0\x00\x00\x00\xc2\x03\xae\x01\x00\x00\x00\x00\x02\x03\xe6\x02\xf9\xff\xae\x03\x00\x00\x00\x00\xa6\x03\xca\x01\xa6\x03\xbe\x01\xb7\x01\xb4\x01\x00\x00\x00\x00\x00\x00\x86\x01\xb3\x01\x7d\x00\x85\x01\x00\x00\xa1\x01\x9d\x01\x00\x00\x84\x01\x84\x01\x78\x01\x77\x01\x77\x01\x77\x01\x6e\x01\x00\x00\x70\x01\x00\x00\xa6\x03\x00\x00\x8c\x01\x00\x00\x7d\x01\x7c\x01\x00\x00\x03\x00\xb3\x00\x83\x01\x5e\x01\x63\x01\xae\x03\xae\x03\xae\x03\xae\x03\xae\x03\xae\x03\xae\x03\xae\x03\xae\x03\xae\x03\xae\x03\xae\x03\xae\x03\xae\x03\xae\x03\xae\x03\xa6\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\x00\xd0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x03\x00\x00\xa6\x03\x00\x00\xa6\x03\x92\x03\x81\x01\xba\x02\x76\x03\x80\x01\x75\x01\x6d\x01\x6a\x01\x6b\x01\x67\x01\x68\x01\x57\x01\x65\x01\x00\x00\x2c\x01\x54\x01\x7d\x00\xa7\x02\x76\x03\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x01\x00\x00\x62\x03\xdc\x03\xc7\x02\x00\x00\x00\x00\x4e\x01\x00\x00\x46\x03\x00\x00\x00\x00\x22\x01\x46\x03\x00\x00\x22\x01\x46\x03\x26\x01\x13\x01\x46\x03\x18\x01\x39\x01\x29\x01\x38\x01\xdc\x03\x00\x00\x00\x00\x2e\x01\x21\x01\x28\x01\x00\x00\xdc\x03\x20\x01\x1a\x01\x1c\x01\x00\x00\x1f\x01\x1b\x01\x00\x00\x46\x03\x00\x00\x32\x03\x19\x01\x00\x00\x32\x03\x00\x00\x00\x00\x00\x00\x00\x00\xdd\x00\xe1\x00\x00\x00\xfe\x00\xfc\x00\x00\x00\xfd\x00\xec\x00\x00\x00\x16\x03\x00\x00\xdc\x03\x00\x00\x00\x00\xdc\x03\xef\x00\xf1\x00\xe8\x00\xd8\x00\x00\x00\x16\x03\x00\x00\x00\x00\x00\x00\xdc\x03\xdc\x03\xdc\x03\xd1\x00\x00\x00\x16\x03\x00\x00\xdc\x03\x16\x03\x00\x00\x00\x00\x00\x00\x00\x00\xa8\x00\x00\x00\xa8\x00\xdc\x03\x00\x00\xcc\x00\x00\x00\x00\x00\x00\x00\xc5\x00\xc1\x00\xa5\x00\x00\x00\x00\x00\x8b\x00\x16\x03\x00\x00\x00\x00\x00\x00"# +happyActOffsets = HappyA# "\x00\x00\x76\x03\x90\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86\x01\xab\x01\x34\x00\x00\x00\xb0\x01\xa2\x01\x6c\x00\x9f\x00\xb6\x00\x00\x00\x92\x03\x7e\x01\x00\x00\x00\x00\x02\x03\xe6\x02\xf9\xff\x7e\x03\x00\x00\x00\x00\x76\x03\xb2\x01\x76\x03\xb1\x01\xa5\x01\xa0\x01\x00\x00\x00\x00\x00\x00\x6b\x01\x74\x01\x9b\x01\x7d\x00\x6a\x01\x6a\x01\x6a\x01\x6a\x01\x60\x01\x00\x00\x5e\x01\x00\x00\x76\x03\x00\x00\x76\x01\x00\x00\x7b\x01\x78\x01\x00\x00\x03\x00\x41\x00\x81\x01\x45\x01\x62\x01\x7e\x03\x7e\x03\x7e\x03\x7e\x03\x7e\x03\x7e\x03\x7e\x03\x7e\x03\x7e\x03\x7e\x03\x7e\x03\x7e\x03\x7e\x03\x7e\x03\x7e\x03\x7e\x03\x76\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb6\x00\xb6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x03\x00\x00\x76\x03\x00\x00\x76\x03\x62\x03\x6e\x01\xba\x02\x46\x03\x6d\x01\x69\x01\x68\x01\x66\x01\x5c\x01\x65\x01\x56\x01\x55\x01\x4f\x01\x00\x00\x50\x01\x43\x01\x20\x01\x20\x01\x00\x00\x20\x01\x3d\x01\x00\x00\xa7\x02\x46\x03\x00\x00\x1f\x01\x46\x03\x00\x00\x1f\x01\x46\x03\x0f\x01\x0c\x01\x46\x03\x13\x01\x34\x01\x26\x01\x23\x01\xac\x03\x00\x00\x00\x00\x21\x01\x1c\x01\x12\x01\x00\x00\xac\x03\x00\x00\x00\x00\x1a\x01\x18\x01\x16\x01\x00\x00\x11\x01\x09\x01\xac\x03\xc7\x02\x00\x00\x00\x00\x08\x01\x00\x00\x46\x03\x00\x00\x32\x03\x03\x01\x00\x00\x32\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x32\x03\x16\x03\x00\x00\xd6\x00\x00\x00\x16\x03\x00\x00\x16\x03\x00\x00\x00\x00\xd4\x00\x00\x00\xec\x00\xe6\x00\x00\x00\xea\x00\xe2\x00\x00\x00\xac\x03\xac\x03\xac\x03\xde\x00\x00\x00\x16\x03\x00\x00\xac\x03\x16\x03\x00\x00\x00\x00\x00\x00\xac\x03\x00\x00\x00\x00\xac\x03\xe9\x00\xdf\x00\xe8\x00\x00\x00\x00\x00\xd8\x00\xa8\x00\x00\x00\xa8\x00\xac\x03\x00\x00\xcc\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc5\x00\xbb\x00\xa5\x00\x00\x00\x8c\x00\x16\x03\x00\x00\x00\x00\x00\x00"# happyGotoOffsets :: HappyAddr -happyGotoOffsets = HappyA# "\xcf\x00\x3a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x04\x00\x00\x00\x00\x00\x00\x78\x00\x35\x00\x17\x00\xc2\x04\x00\x00\x00\x00\x21\x02\x00\x00\x08\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x00\x95\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x61\x00\x4b\x00\x86\x00\x60\x00\x19\x00\x67\x00\x00\x00\x2a\x00\x00\x00\x00\x00\xef\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\xb8\x04\xb4\x04\xb0\x04\x83\x04\xac\x04\x99\x04\x7c\x04\x70\x04\x69\x04\x53\x04\x40\x04\x39\x04\x2a\x04\x10\x04\x01\x04\xf7\x03\xd6\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbd\x01\x00\x00\x1b\x00\x00\x00\x01\x00\x9a\x02\x00\x00\x4f\x00\xa4\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x0a\x00\xfb\x02\x8b\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x02\x1f\x05\x0d\x05\x00\x00\x00\x00\x00\x00\x00\x00\x72\x01\x00\x00\x00\x00\x5e\x00\x59\x01\x00\x00\x08\x00\x40\x01\x00\x00\x13\x00\x27\x01\x00\x00\x00\x00\x00\x00\x00\x00\xf1\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xec\x03\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x01\x00\x00\x6a\x02\x00\x00\x00\x00\x52\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf5\x00\x00\x00\x07\x05\x00\x00\x00\x00\xf5\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdc\x00\x00\x00\x00\x00\x00\x00\xe1\x04\x38\x05\x28\x05\x00\x00\xf7\xff\xc3\x00\x00\x00\x0b\x00\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x6a\x00\x24\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x91\x00\x00\x00\x00\x00\x00\x00"# +happyGotoOffsets = HappyA# "\xbc\x00\x3a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x04\x00\x00\x00\x00\x00\x00\x78\x00\x35\x00\x17\x00\x92\x04\x00\x00\x00\x00\x21\x02\x00\x00\x08\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x0a\x00\x95\x00\x60\x00\x19\x00\x67\x00\x00\x00\x6f\x00\x00\x00\x00\x00\xef\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8b\x00\x00\x00\x88\x04\x84\x04\x80\x04\x53\x04\x7c\x04\x69\x04\x4c\x04\x40\x04\x39\x04\x23\x04\x10\x04\x09\x04\xfa\x03\xe0\x03\xd1\x03\xc7\x03\xd6\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbd\x01\x00\x00\x1b\x00\x00\x00\x01\x00\x9a\x02\x00\x00\x4f\x00\xa4\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x61\x00\x4d\x00\x00\x00\x0e\x00\x00\x00\x00\x00\xfb\x02\x8b\x01\x00\x00\x5e\x00\x72\x01\x00\x00\x08\x00\x59\x01\x00\x00\x13\x00\x40\x01\x00\x00\x00\x00\x00\x00\x00\x00\xc1\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\x03\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\x04\xdd\x04\x00\x00\x00\x00\x00\x00\x00\x00\x27\x01\x00\x00\x82\x02\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x02\x0e\x01\x00\x00\x00\x00\x00\x00\xf5\x00\x00\x00\xdc\x00\x00\x00\x00\x00\x90\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb1\x04\x08\x05\xf8\x04\x00\x00\xf7\xff\xc3\x00\x00\x00\x0b\x00\xaa\x00\x00\x00\x00\x00\x00\x00\xd7\x04\x00\x00\x00\x00\xc5\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x6a\x00\xf4\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x91\x00\x00\x00\x00\x00\x00\x00"# happyDefActions :: HappyAddr -happyDefActions = HappyA# "\xf7\xff\x00\x00\x00\x00\xfd\xff\x95\xff\x93\xff\x92\xff\x91\xff\x00\x00\xcc\xff\x86\xff\xb5\xff\xb3\xff\xb1\xff\xaa\xff\xa8\xff\xa5\xff\xa1\xff\x9f\xff\x9d\xff\x9b\xff\xc4\xff\x00\x00\x00\x00\x00\x00\x00\x00\x90\xff\x94\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\xff\xfb\xff\xfa\xff\x00\x00\xf6\xff\xf0\xff\x00\x00\xf8\xff\xd4\xff\xef\xff\xf9\xff\x00\x00\x00\x00\xf7\xff\x8d\xff\x89\xff\xc2\xff\x00\x00\xb9\xff\x00\x00\xa0\xff\x00\x00\xcb\xff\x00\x00\xca\xff\x85\xff\x00\x00\x98\xff\x95\xff\x00\x00\x00\x00\x00\x00\x9e\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\xff\xb6\xff\xb7\xff\xb4\xff\xb2\xff\xab\xff\xac\xff\xad\xff\xae\xff\xaf\xff\xb0\xff\xa6\xff\xa7\xff\xa9\xff\xa2\xff\xa3\xff\xa4\xff\x9c\xff\x00\x00\x8f\xff\x00\x00\x97\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc1\xff\x00\x00\x00\x00\x88\xff\x00\x00\x00\x00\x8c\xff\x00\x00\xf5\xff\x00\x00\x00\x00\xf0\xff\xe8\xff\x00\x00\xf3\xff\xda\xff\xdc\xff\xdb\xff\x00\x00\xd3\xff\x00\x00\x00\x00\x00\x00\xd9\xff\xdd\xff\x00\x00\xee\xff\x00\x00\xf1\xff\x9a\xff\x8d\xff\x00\x00\x99\xff\x89\xff\x00\x00\x00\x00\xc2\xff\x00\x00\x00\x00\xba\xff\x00\x00\x00\x00\xbe\xff\xc9\xff\x84\xff\x00\x00\x00\x00\x00\x00\x96\xff\xda\xff\xe8\xff\xe6\xff\xe4\xff\xe2\xff\xbd\xff\x00\x00\xb8\xff\x00\x00\xc5\xff\x00\x00\x00\x00\xc0\xff\x00\x00\x8a\xff\x87\xff\x8e\xff\x8b\xff\x00\x00\xd1\xff\xd7\xff\xd6\xff\x00\x00\xe0\xff\xd7\xff\x00\x00\xe9\xff\x00\x00\xf2\xff\x00\x00\xd8\xff\xdf\xff\x00\x00\x00\x00\xd0\xff\x00\x00\x00\x00\xc8\xff\x00\x00\xc6\xff\xbb\xff\xc7\xff\xbe\xff\x00\x00\x00\x00\x00\x00\xd4\xff\x00\x00\xce\xff\xe3\xff\x00\x00\xe7\xff\xe5\xff\xbc\xff\xc3\xff\xec\xff\xe1\xff\xd1\xff\x00\x00\xd5\xff\x00\x00\xde\xff\xd2\xff\xcf\xff\x00\x00\xeb\xff\x00\x00\xbf\xff\xf4\xff\xec\xff\x00\x00\xed\xff\xea\xff"# +happyDefActions = HappyA# "\xf7\xff\x00\x00\x00\x00\xfd\xff\x97\xff\x95\xff\x94\xff\x93\xff\x00\x00\xce\xff\x88\xff\xb7\xff\xb5\xff\xb3\xff\xac\xff\xaa\xff\xa7\xff\xa3\xff\xa1\xff\x9f\xff\x9d\xff\xc6\xff\x00\x00\x00\x00\x00\x00\x00\x00\x92\xff\x96\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\xff\xfb\xff\xfa\xff\x00\x00\xf1\xff\x00\x00\xf9\xff\x00\x00\x8f\xff\x8b\xff\xc4\xff\x00\x00\xbb\xff\x00\x00\xa2\xff\x00\x00\xcd\xff\x00\x00\xcc\xff\x87\xff\x00\x00\x9a\xff\x97\xff\x00\x00\x00\x00\x00\x00\xa0\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcf\xff\xb8\xff\xb9\xff\xb6\xff\xb4\xff\xad\xff\xae\xff\xaf\xff\xb0\xff\xb1\xff\xb2\xff\xa8\xff\xa9\xff\xab\xff\xa4\xff\xa5\xff\xa6\xff\x9e\xff\x00\x00\x91\xff\x00\x00\x99\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\xff\x00\x00\x00\x00\x8a\xff\x00\x00\x00\x00\x8e\xff\x00\x00\xf8\xff\xd6\xff\x00\x00\x00\x00\x00\x00\xf6\xff\x00\x00\x00\x00\xf0\xff\xea\xff\x00\x00\x9c\xff\x8f\xff\x00\x00\x9b\xff\x8b\xff\x00\x00\x00\x00\xc4\xff\x00\x00\x00\x00\xbc\xff\x00\x00\x00\x00\xc0\xff\xcb\xff\x86\xff\x00\x00\x00\x00\x00\x00\x98\xff\xdc\xff\xde\xff\xdd\xff\xea\xff\xe8\xff\xe6\xff\xe4\xff\xbf\xff\x00\x00\x00\x00\x00\x00\xdb\xff\xdf\xff\x00\x00\xba\xff\x00\x00\xc7\xff\x00\x00\x00\x00\xc2\xff\x00\x00\x8c\xff\x89\xff\x90\xff\x8d\xff\xf4\xff\xdc\xff\x00\x00\xd5\xff\x00\x00\x00\x00\xf2\xff\x00\x00\xeb\xff\x00\x00\xca\xff\x00\x00\xc8\xff\xbd\xff\xd3\xff\xd9\xff\xd8\xff\x00\x00\xe2\xff\xd9\xff\x00\x00\xc9\xff\xc0\xff\x00\x00\x00\x00\x00\x00\xd6\xff\x00\x00\xd0\xff\xe5\xff\x00\x00\xe9\xff\xe7\xff\xbe\xff\x00\x00\xda\xff\xe1\xff\x00\x00\x00\x00\xd2\xff\x00\x00\xc5\xff\xf3\xff\x00\x00\xee\xff\xe3\xff\xd3\xff\x00\x00\xd7\xff\x00\x00\xc1\xff\xe0\xff\xd4\xff\xd1\xff\x00\x00\xed\xff\x00\x00\xf5\xff\xee\xff\x00\x00\xef\xff\xec\xff"# happyCheck :: HappyAddr -happyCheck = HappyA# "\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x02\x00\x00\x00\x0e\x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x02\x00\x00\x00\x09\x00\x0a\x00\x07\x00\x08\x00\x00\x00\x11\x00\x00\x00\x15\x00\x00\x00\x17\x00\x00\x00\x0f\x00\x00\x00\x01\x00\x02\x00\x03\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x31\x00\x18\x00\x19\x00\x16\x00\x2d\x00\x2e\x00\x15\x00\x0b\x00\x17\x00\x2b\x00\x2c\x00\x00\x00\x01\x00\x02\x00\x03\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x2b\x00\x2c\x00\x00\x00\x1d\x00\x2d\x00\x2e\x00\x15\x00\x00\x00\x17\x00\x07\x00\x08\x00\x00\x00\x01\x00\x02\x00\x03\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x2e\x00\x15\x00\x16\x00\x17\x00\x00\x00\x09\x00\x0a\x00\x00\x00\x1c\x00\x12\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x01\x00\x02\x00\x03\x00\x2d\x00\x13\x00\x14\x00\x18\x00\x19\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x29\x00\x2a\x00\x29\x00\x2a\x00\x05\x00\x06\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x24\x00\x25\x00\x13\x00\x14\x00\x2d\x00\x15\x00\x08\x00\x17\x00\x04\x00\x00\x00\x01\x00\x02\x00\x03\x00\x31\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x1b\x00\x1c\x00\x31\x00\x0a\x00\x2d\x00\x15\x00\x0d\x00\x17\x00\x01\x00\x00\x00\x01\x00\x02\x00\x03\x00\x02\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x04\x00\x05\x00\x06\x00\x0a\x00\x2d\x00\x15\x00\x31\x00\x17\x00\x03\x00\x00\x00\x01\x00\x02\x00\x03\x00\x0f\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x04\x00\x1d\x00\x1e\x00\x1f\x00\x2d\x00\x15\x00\x01\x00\x17\x00\x05\x00\x00\x00\x01\x00\x02\x00\x03\x00\x0d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x12\x00\x13\x00\x0a\x00\x0c\x00\x2d\x00\x15\x00\x0d\x00\x17\x00\x30\x00\x00\x00\x01\x00\x02\x00\x03\x00\x31\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x05\x00\x04\x00\x01\x00\x07\x00\x2d\x00\x15\x00\x08\x00\x17\x00\x06\x00\x00\x00\x01\x00\x02\x00\x03\x00\x0a\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x0f\x00\x0a\x00\x01\x00\x11\x00\x2d\x00\x15\x00\x04\x00\x17\x00\x27\x00\x00\x00\x01\x00\x02\x00\x03\x00\x31\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x2a\x00\x03\x00\x05\x00\x31\x00\x2d\x00\x15\x00\x02\x00\x17\x00\x01\x00\x00\x00\x01\x00\x02\x00\x03\x00\x31\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x04\x00\x02\x00\x04\x00\x01\x00\x2d\x00\x15\x00\x05\x00\x17\x00\x04\x00\x00\x00\x01\x00\x02\x00\x03\x00\x01\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x02\x00\x20\x00\x03\x00\x02\x00\x2d\x00\x15\x00\x0c\x00\x17\x00\x0d\x00\x00\x00\x01\x00\x02\x00\x03\x00\x31\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x0f\x00\x2c\x00\x2f\x00\x01\x00\x2d\x00\x15\x00\x29\x00\x17\x00\x02\x00\x00\x00\x01\x00\x02\x00\x03\x00\x31\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x01\x00\x31\x00\x31\x00\x03\x00\x2d\x00\x15\x00\x03\x00\x17\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x03\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x03\x00\x20\x00\x14\x00\x07\x00\x2d\x00\x15\x00\x0f\x00\x17\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x31\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x29\x00\xff\xff\x2d\x00\x15\x00\xff\xff\x17\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x15\x00\xff\xff\x17\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x15\x00\xff\xff\x17\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x15\x00\xff\xff\x17\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x15\x00\xff\xff\x17\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\xff\xff\x17\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\xff\xff\x17\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\xff\xff\x17\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x06\x00\xff\xff\x2d\x00\x09\x00\x17\x00\x0b\x00\xff\xff\xff\xff\x0e\x00\xff\xff\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x09\x00\xff\xff\x0b\x00\xff\xff\x2d\x00\x0e\x00\x22\x00\x10\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x09\x00\xff\xff\x0b\x00\x0c\x00\x2d\x00\x0e\x00\x1c\x00\xff\xff\x31\x00\x32\x00\x33\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\xff\xff\x2b\x00\xff\xff\x2d\x00\x2e\x00\x22\x00\xff\xff\x31\x00\x32\x00\x33\x00\x34\x00\x09\x00\xff\xff\x0b\x00\x0c\x00\xff\xff\x2d\x00\xff\xff\x10\x00\xff\xff\x31\x00\x32\x00\x33\x00\x00\x00\x01\x00\x02\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\xff\xff\xff\xff\x0b\x00\x21\x00\x22\x00\x23\x00\x0f\x00\x09\x00\x26\x00\x0b\x00\x28\x00\xff\xff\x0e\x00\x2b\x00\x10\x00\x2d\x00\x2e\x00\xff\xff\xff\xff\x31\x00\x32\x00\x33\x00\x34\x00\xff\xff\xff\xff\xff\xff\x1c\x00\x09\x00\xff\xff\x0b\x00\xff\xff\x21\x00\x22\x00\x23\x00\x10\x00\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\xff\xff\x2b\x00\xff\xff\x2d\x00\x2e\x00\xff\xff\x1c\x00\x31\x00\x32\x00\x33\x00\x34\x00\x21\x00\x22\x00\x23\x00\xff\xff\x09\x00\x26\x00\x0b\x00\x28\x00\xff\xff\xff\xff\x2b\x00\x10\x00\x2d\x00\x2e\x00\xff\xff\xff\xff\x31\x00\x32\x00\x33\x00\x34\x00\xff\xff\xff\xff\xff\xff\x1c\x00\x09\x00\xff\xff\x0b\x00\xff\xff\x21\x00\x22\x00\x23\x00\x10\x00\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\xff\xff\x2b\x00\xff\xff\x2d\x00\x2e\x00\xff\xff\x1c\x00\x31\x00\x32\x00\x33\x00\x34\x00\x21\x00\x22\x00\x23\x00\xff\xff\x09\x00\x26\x00\x0b\x00\x28\x00\xff\xff\xff\xff\x2b\x00\x10\x00\x2d\x00\x2e\x00\xff\xff\xff\xff\x31\x00\x32\x00\x33\x00\x34\x00\xff\xff\xff\xff\xff\xff\x1c\x00\x09\x00\xff\xff\x0b\x00\xff\xff\x21\x00\x22\x00\x23\x00\x10\x00\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\xff\xff\x2b\x00\xff\xff\x2d\x00\x2e\x00\xff\xff\x1c\x00\x31\x00\x32\x00\x33\x00\x34\x00\x21\x00\x22\x00\x23\x00\xff\xff\x09\x00\x26\x00\x0b\x00\x28\x00\xff\xff\xff\xff\x2b\x00\x10\x00\x2d\x00\x2e\x00\xff\xff\xff\xff\x31\x00\x32\x00\x33\x00\x34\x00\xff\xff\xff\xff\xff\xff\x1c\x00\x09\x00\xff\xff\x0b\x00\xff\xff\x21\x00\x22\x00\x23\x00\x10\x00\x09\x00\x26\x00\x0b\x00\x28\x00\xff\xff\xff\xff\x2b\x00\xff\xff\x2d\x00\x2e\x00\xff\xff\x1c\x00\x31\x00\x32\x00\x33\x00\x34\x00\x21\x00\x22\x00\x23\x00\x1c\x00\x09\x00\x26\x00\x0b\x00\x28\x00\x21\x00\x22\x00\x2b\x00\xff\xff\x2d\x00\x2e\x00\xff\xff\xff\xff\x31\x00\x32\x00\x33\x00\x34\x00\x2d\x00\x2e\x00\xff\xff\xff\xff\x31\x00\x32\x00\x33\x00\x34\x00\x21\x00\x22\x00\x09\x00\xff\xff\x0b\x00\xff\xff\xff\xff\x0e\x00\xff\xff\x00\x00\x01\x00\x02\x00\x2d\x00\x2e\x00\xff\xff\xff\xff\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x01\x00\x02\x00\x03\x00\x0f\x00\xff\xff\xff\xff\x22\x00\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\xff\xff\xff\xff\xff\xff\x31\x00\x32\x00\x33\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x01\x00\x02\x00\x03\x00\x27\x00\x28\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x25\x00\x26\x00\x27\x00\x28\x00\x25\x00\x26\x00\x27\x00\x28\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x01\x00\x02\x00\xff\xff\xff\xff\xff\xff\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x00\x00\x01\x00\x02\x00\xff\xff\x00\x00\x01\x00\x02\x00\xff\xff\xff\xff\xff\xff\x1a\x00\x1b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x01\x00\x02\x00\xff\xff\x1a\x00\x1b\x00\x00\x00\x01\x00\x02\x00\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x01\x00\x02\x00\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\xff\xff\x00\x00\x01\x00\x02\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x00\x00\x01\x00\x02\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\x0e\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"# +happyCheck = HappyA# "\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x02\x00\x00\x00\x0e\x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x02\x00\x00\x00\x09\x00\x0a\x00\x07\x00\x05\x00\x00\x00\x11\x00\x08\x00\x15\x00\x00\x00\x17\x00\x00\x00\x0f\x00\x00\x00\x01\x00\x02\x00\x03\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x31\x00\x18\x00\x19\x00\x16\x00\x2d\x00\x2e\x00\x15\x00\x0b\x00\x17\x00\x2b\x00\x2c\x00\x00\x00\x01\x00\x02\x00\x03\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x2b\x00\x2c\x00\x12\x00\x13\x00\x2d\x00\x2e\x00\x15\x00\x0a\x00\x17\x00\x00\x00\x0d\x00\x00\x00\x01\x00\x02\x00\x03\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x2e\x00\x15\x00\x16\x00\x17\x00\x00\x00\x09\x00\x0a\x00\x00\x00\x1c\x00\x12\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x01\x00\x02\x00\x03\x00\x2d\x00\x13\x00\x14\x00\x18\x00\x19\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x29\x00\x2a\x00\x29\x00\x2a\x00\x00\x00\x1d\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x24\x00\x25\x00\x13\x00\x14\x00\x2d\x00\x15\x00\x08\x00\x17\x00\x04\x00\x00\x00\x01\x00\x02\x00\x03\x00\x31\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x1b\x00\x1c\x00\x01\x00\x31\x00\x2d\x00\x15\x00\x04\x00\x17\x00\x06\x00\x00\x00\x01\x00\x02\x00\x03\x00\x02\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x1d\x00\x1e\x00\x1f\x00\x0a\x00\x2d\x00\x15\x00\x31\x00\x17\x00\x03\x00\x00\x00\x01\x00\x02\x00\x03\x00\x01\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x04\x00\x0f\x00\x05\x00\x0d\x00\x2d\x00\x15\x00\x0c\x00\x17\x00\x0a\x00\x00\x00\x01\x00\x02\x00\x03\x00\x0d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x31\x00\x30\x00\x05\x00\x05\x00\x2d\x00\x15\x00\x03\x00\x17\x00\x04\x00\x00\x00\x01\x00\x02\x00\x03\x00\x01\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x08\x00\x07\x00\x06\x00\x0f\x00\x2d\x00\x15\x00\x01\x00\x17\x00\x0a\x00\x00\x00\x01\x00\x02\x00\x03\x00\x0a\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x11\x00\x04\x00\x2a\x00\x27\x00\x2d\x00\x15\x00\x31\x00\x17\x00\x02\x00\x00\x00\x01\x00\x02\x00\x03\x00\x01\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x31\x00\x31\x00\x02\x00\x04\x00\x2d\x00\x15\x00\x01\x00\x17\x00\x02\x00\x00\x00\x01\x00\x02\x00\x03\x00\x01\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x04\x00\x01\x00\x05\x00\x04\x00\x2d\x00\x15\x00\x02\x00\x17\x00\x03\x00\x00\x00\x01\x00\x02\x00\x03\x00\x31\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x20\x00\x02\x00\x0c\x00\x0f\x00\x2d\x00\x15\x00\x0d\x00\x17\x00\x2c\x00\x00\x00\x01\x00\x02\x00\x03\x00\x2f\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x31\x00\x01\x00\x29\x00\x20\x00\x2d\x00\x15\x00\x36\x00\x17\x00\x03\x00\x00\x00\x01\x00\x02\x00\x03\x00\x03\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x03\x00\x03\x00\x14\x00\x07\x00\x2d\x00\x15\x00\x0f\x00\x17\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x31\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x15\x00\xff\xff\x17\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x15\x00\xff\xff\x17\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x15\x00\xff\xff\x17\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x15\x00\xff\xff\x17\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x15\x00\xff\xff\x17\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x15\x00\xff\xff\x17\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\xff\xff\x17\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\xff\xff\x17\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\xff\xff\x17\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x06\x00\xff\xff\x2d\x00\x09\x00\x17\x00\x0b\x00\xff\xff\xff\xff\x0e\x00\xff\xff\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x09\x00\xff\xff\x0b\x00\xff\xff\x2d\x00\x0e\x00\x22\x00\x10\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x09\x00\xff\xff\x0b\x00\x0c\x00\x2d\x00\x0e\x00\x1c\x00\xff\xff\x31\x00\x32\x00\x33\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\xff\xff\x2b\x00\xff\xff\x2d\x00\x2e\x00\x22\x00\xff\xff\x31\x00\x32\x00\x33\x00\x34\x00\x09\x00\xff\xff\x0b\x00\x0c\x00\xff\xff\x2d\x00\xff\xff\x10\x00\xff\xff\x31\x00\x32\x00\x33\x00\x00\x00\x01\x00\x02\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\xff\xff\xff\xff\x0b\x00\x21\x00\x22\x00\x23\x00\x0f\x00\x09\x00\x26\x00\x0b\x00\x28\x00\xff\xff\x0e\x00\x2b\x00\x10\x00\x2d\x00\x2e\x00\xff\xff\xff\xff\x31\x00\x32\x00\x33\x00\x34\x00\xff\xff\xff\xff\xff\xff\x1c\x00\x09\x00\xff\xff\x0b\x00\xff\xff\x21\x00\x22\x00\x23\x00\x10\x00\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\xff\xff\x2b\x00\xff\xff\x2d\x00\x2e\x00\xff\xff\x1c\x00\x31\x00\x32\x00\x33\x00\x34\x00\x21\x00\x22\x00\x23\x00\xff\xff\x09\x00\x26\x00\x0b\x00\x28\x00\xff\xff\xff\xff\x2b\x00\x10\x00\x2d\x00\x2e\x00\xff\xff\xff\xff\x31\x00\x32\x00\x33\x00\x34\x00\xff\xff\xff\xff\xff\xff\x1c\x00\x09\x00\xff\xff\x0b\x00\xff\xff\x21\x00\x22\x00\x23\x00\x10\x00\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\xff\xff\x2b\x00\xff\xff\x2d\x00\x2e\x00\xff\xff\x1c\x00\x31\x00\x32\x00\x33\x00\x34\x00\x21\x00\x22\x00\x23\x00\xff\xff\x09\x00\x26\x00\x0b\x00\x28\x00\xff\xff\xff\xff\x2b\x00\x10\x00\x2d\x00\x2e\x00\xff\xff\xff\xff\x31\x00\x32\x00\x33\x00\x34\x00\xff\xff\xff\xff\xff\xff\x1c\x00\x09\x00\xff\xff\x0b\x00\xff\xff\x21\x00\x22\x00\x23\x00\x10\x00\x09\x00\x26\x00\x0b\x00\x28\x00\xff\xff\xff\xff\x2b\x00\xff\xff\x2d\x00\x2e\x00\xff\xff\x1c\x00\x31\x00\x32\x00\x33\x00\x34\x00\x21\x00\x22\x00\x23\x00\x1c\x00\x09\x00\x26\x00\x0b\x00\x28\x00\x21\x00\x22\x00\x2b\x00\xff\xff\x2d\x00\x2e\x00\xff\xff\xff\xff\x31\x00\x32\x00\x33\x00\x34\x00\x2d\x00\x2e\x00\xff\xff\xff\xff\x31\x00\x32\x00\x33\x00\x34\x00\x21\x00\x22\x00\x09\x00\xff\xff\x0b\x00\xff\xff\xff\xff\x0e\x00\xff\xff\x00\x00\x01\x00\x02\x00\x2d\x00\x2e\x00\xff\xff\xff\xff\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x01\x00\x02\x00\x03\x00\x0f\x00\xff\xff\xff\xff\x22\x00\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\xff\xff\xff\xff\xff\xff\x31\x00\x32\x00\x33\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x01\x00\x02\x00\x03\x00\x27\x00\x28\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x25\x00\x26\x00\x27\x00\x28\x00\x25\x00\x26\x00\x27\x00\x28\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x01\x00\x02\x00\xff\xff\xff\xff\xff\xff\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x00\x00\x01\x00\x02\x00\xff\xff\x00\x00\x01\x00\x02\x00\xff\xff\xff\xff\xff\xff\x1a\x00\x1b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x01\x00\x02\x00\xff\xff\x1a\x00\x1b\x00\x00\x00\x01\x00\x02\x00\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x01\x00\x02\x00\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\xff\xff\x00\x00\x01\x00\x02\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x00\x00\x01\x00\x02\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\x0e\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"# happyTable :: HappyAddr -happyTable = HappyA# "\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\xcb\xff\xe1\x00\x3b\x00\x72\x00\xd2\x00\x2a\x00\x7f\x00\x80\x00\x81\x00\x8c\x00\xe2\x00\xe9\x00\x2b\x00\x8a\x00\x6f\x00\xcb\xff\x65\x00\x3b\x00\x38\x00\x09\x00\x72\x00\x83\x00\x04\x00\x05\x00\x06\x00\x07\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x70\x00\xad\x00\x39\x00\x15\x00\x9c\x00\x3b\x00\xce\x00\x09\x00\x73\x00\xb0\x00\x04\x00\x05\x00\x06\x00\x07\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x73\x00\x74\x00\x2a\x00\x6d\x00\x15\x00\x9d\x00\x3b\x00\x79\x00\x09\x00\x2b\x00\x2c\x00\x3e\x00\x05\x00\x06\x00\x07\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x75\x00\xe1\x00\x75\x00\x7a\x00\x15\x00\x3c\x00\x97\x00\x98\x00\x09\x00\x6f\x00\xe2\x00\xe3\x00\xc2\x00\x99\x00\x7c\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x3e\x00\x05\x00\x06\x00\x07\x00\x15\x00\xc3\x00\xe0\x00\x70\x00\x71\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x76\x00\xb2\x00\x76\x00\x77\x00\x26\x00\x78\x00\x3f\x00\x40\x00\x09\x00\xc2\x00\x04\x00\x05\x00\x06\x00\x07\x00\x29\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x2e\x00\x2f\x00\xc3\x00\xc4\x00\x15\x00\xe8\x00\x47\x00\x09\x00\xe6\x00\x04\x00\x05\x00\x06\x00\x07\x00\x04\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x48\x00\x49\x00\x04\x00\x68\x00\x15\x00\xe4\x00\x69\x00\x09\x00\xe7\x00\x04\x00\x05\x00\x06\x00\x07\x00\xe8\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x25\x00\x26\x00\x27\x00\xdf\x00\x15\x00\xd1\x00\x04\x00\x09\x00\xd9\x00\x04\x00\x05\x00\x06\x00\x07\x00\xd4\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\xda\x00\x44\x00\x45\x00\x46\x00\x15\x00\xd7\x00\xdb\x00\x09\x00\xdc\x00\x04\x00\x05\x00\x06\x00\x07\x00\xbf\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x52\x00\x53\x00\xc0\x00\xc1\x00\x15\x00\xbd\x00\xc2\x00\x09\x00\xc6\x00\x04\x00\x05\x00\x06\x00\x07\x00\x04\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\xc8\x00\xcb\x00\xcc\x00\xce\x00\x15\x00\xc9\x00\xcd\x00\x09\x00\x85\x00\x04\x00\x05\x00\x06\x00\x07\x00\xa0\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\xd1\x00\xa1\x00\xa9\x00\xaa\x00\x15\x00\xac\x00\xab\x00\x09\x00\xac\x00\x04\x00\x05\x00\x06\x00\x07\x00\x04\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\xaf\x00\xb5\x00\xbd\x00\x04\x00\x15\x00\xaf\x00\x8c\x00\x09\x00\x8f\x00\x04\x00\x05\x00\x06\x00\x07\x00\x04\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x8e\x00\x90\x00\x91\x00\x92\x00\x15\x00\xb1\x00\x93\x00\x09\x00\x94\x00\x04\x00\x05\x00\x06\x00\x07\x00\x95\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x96\x00\x42\x00\x9b\x00\x67\x00\x15\x00\xb3\x00\x6a\x00\x09\x00\x6b\x00\x04\x00\x05\x00\x06\x00\x07\x00\x04\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x6c\x00\x6d\x00\x6f\x00\x7c\x00\x15\x00\x7e\x00\x29\x00\x09\x00\x7e\x00\x04\x00\x05\x00\x06\x00\x07\x00\x04\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x30\x00\x04\x00\x04\x00\x31\x00\x15\x00\x96\x00\x32\x00\x09\x00\xff\xff\x04\x00\x05\x00\x06\x00\x07\x00\x33\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x35\x00\x42\x00\x50\x00\x51\x00\x15\x00\x9e\x00\x54\x00\x09\x00\xff\xff\x04\x00\x05\x00\x06\x00\x07\x00\x04\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x29\x00\x00\x00\x15\x00\x54\x00\x00\x00\x09\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x3f\x00\x00\x00\x09\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x33\x00\x00\x00\x09\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x35\x00\x00\x00\x09\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x08\x00\x00\x00\x09\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\xc6\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\xc8\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\xbb\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x85\x00\x00\x00\x15\x00\x86\x00\x9b\x00\x87\x00\x00\x00\x00\x00\x88\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x17\x00\x00\x00\x18\x00\x00\x00\x15\x00\x3b\x00\x89\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86\x00\x00\x00\x87\x00\xb9\x00\x8a\x00\x88\x00\x1a\x00\x00\x00\x04\x00\x23\x00\x24\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x89\x00\x00\x00\x04\x00\x23\x00\x24\x00\x25\x00\x17\x00\x00\x00\x18\x00\x3e\x00\x00\x00\x8a\x00\x00\x00\x19\x00\x00\x00\x04\x00\x23\x00\x24\x00\x7f\x00\x80\x00\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\x82\x00\x1b\x00\x1c\x00\x1d\x00\x83\x00\x17\x00\x1e\x00\x18\x00\x1f\x00\x00\x00\x3b\x00\x20\x00\x19\x00\x21\x00\x22\x00\x00\x00\x00\x00\x04\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x17\x00\x00\x00\x18\x00\x00\x00\x1b\x00\x1c\x00\x1d\x00\x19\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x00\x00\x1a\x00\x04\x00\x23\x00\x24\x00\x25\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x38\x00\x1e\x00\x18\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x19\x00\x21\x00\x22\x00\x00\x00\x00\x00\x04\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x17\x00\x00\x00\x18\x00\x00\x00\x1b\x00\x1c\x00\x1d\x00\x19\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x00\x00\x1a\x00\x04\x00\x23\x00\x24\x00\x25\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x38\x00\x1e\x00\x18\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x19\x00\x21\x00\x22\x00\x00\x00\x00\x00\x04\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x17\x00\x00\x00\x18\x00\x00\x00\x1b\x00\x1c\x00\x1d\x00\x19\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x00\x00\x1a\x00\x04\x00\x23\x00\x24\x00\x25\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x38\x00\x1e\x00\x18\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x19\x00\x21\x00\x22\x00\x00\x00\x00\x00\x04\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x17\x00\x00\x00\x18\x00\x00\x00\x1b\x00\x1c\x00\x1d\x00\x19\x00\x38\x00\x1e\x00\x18\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x00\x00\x1a\x00\x04\x00\x23\x00\x24\x00\x25\x00\x1b\x00\x1c\x00\x1d\x00\x1a\x00\x38\x00\x1e\x00\x18\x00\x1f\x00\x1b\x00\x1c\x00\x20\x00\x00\x00\x21\x00\x22\x00\x00\x00\x00\x00\x04\x00\x23\x00\x24\x00\x25\x00\x21\x00\x22\x00\x00\x00\x00\x00\x04\x00\x23\x00\x24\x00\x25\x00\x1b\x00\x1c\x00\x86\x00\x00\x00\x87\x00\x00\x00\x00\x00\x88\x00\x00\x00\x7f\x00\x80\x00\x81\x00\x21\x00\x22\x00\x00\x00\x00\x00\x04\x00\x23\x00\x24\x00\x25\x00\x04\x00\x05\x00\x06\x00\x07\x00\xcf\x00\x00\x00\x00\x00\x89\x00\x00\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x00\x00\x00\x00\x04\x00\x23\x00\x24\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x55\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x56\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x57\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x58\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x5a\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x42\x00\x14\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x5b\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x5d\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x5e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x61\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x04\x00\x05\x00\x06\x00\x07\x00\x04\x00\x05\x00\x06\x00\x07\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x5f\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x00\x11\x00\x12\x00\x13\x00\x14\x00\x62\x00\x12\x00\x13\x00\x14\x00\x63\x00\x12\x00\x13\x00\x14\x00\x64\x00\x12\x00\x13\x00\x14\x00\xa1\x00\x80\x00\x81\x00\x00\x00\x00\x00\x00\x00\x36\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa1\x00\x80\x00\x81\x00\x00\x00\xa1\x00\x80\x00\x81\x00\x00\x00\x00\x00\x00\x00\xa6\x00\xd6\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xb5\x00\xa3\x00\xa4\x00\xa5\x00\xb6\x00\xdc\x00\xa1\x00\x80\x00\x81\x00\x00\x00\xa6\x00\xa7\x00\xa1\x00\x80\x00\x81\x00\x00\x00\x00\x00\x00\x00\xb5\x00\xa3\x00\xa4\x00\xa5\x00\xb6\x00\xdd\x00\xb5\x00\xa3\x00\xa4\x00\xa5\x00\xb6\x00\xb7\x00\xa1\x00\x80\x00\x81\x00\x00\x00\x00\x00\xa1\x00\x80\x00\x81\x00\x00\x00\xa1\x00\x80\x00\x81\x00\xb9\x00\xa3\x00\xa4\x00\xa5\x00\xba\x00\xdf\x00\xa3\x00\xa4\x00\xa5\x00\xd4\x00\xa3\x00\xa4\x00\xa5\x00\xa1\x00\x80\x00\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd5\x00\xa4\x00\xa5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"# +happyTable = HappyA# "\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\xcd\xff\xe0\x00\x35\x00\x6c\x00\xc7\x00\x73\x00\xab\x00\x92\x00\x93\x00\xb0\x00\xe1\x00\xe7\x00\x74\x00\x27\x00\x69\x00\xcd\xff\x28\x00\x35\x00\x32\x00\x09\x00\x6c\x00\xad\x00\x04\x00\x05\x00\x06\x00\x07\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x6a\x00\xa4\x00\x33\x00\x15\x00\x8c\x00\x35\x00\xc3\x00\x09\x00\x6d\x00\xa7\x00\x04\x00\x05\x00\x06\x00\x07\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x6d\x00\x6e\x00\x4c\x00\x4d\x00\x15\x00\x8d\x00\x35\x00\x62\x00\x09\x00\x78\x00\x63\x00\x38\x00\x05\x00\x06\x00\x07\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x6f\x00\xe0\x00\x6f\x00\x79\x00\x15\x00\x36\x00\x87\x00\x88\x00\x09\x00\x69\x00\xe1\x00\xe2\x00\xd0\x00\x89\x00\x7b\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x38\x00\x05\x00\x06\x00\x07\x00\x15\x00\xd1\x00\xdf\x00\x6a\x00\x6b\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x70\x00\xa9\x00\x70\x00\x71\x00\x5f\x00\x67\x00\x39\x00\x3a\x00\x09\x00\xd0\x00\x04\x00\x05\x00\x06\x00\x07\x00\x72\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x76\x00\x77\x00\xd1\x00\xd2\x00\x15\x00\xe6\x00\x41\x00\x09\x00\xe4\x00\x04\x00\x05\x00\x06\x00\x07\x00\x04\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x42\x00\x43\x00\xe5\x00\x04\x00\x15\x00\xdc\x00\x25\x00\x09\x00\x26\x00\x04\x00\x05\x00\x06\x00\x07\x00\xe6\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x3e\x00\x3f\x00\x40\x00\xde\x00\x15\x00\xc6\x00\x04\x00\x09\x00\xd7\x00\x04\x00\x05\x00\x06\x00\x07\x00\xd9\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\xd8\x00\xc9\x00\xda\x00\xcd\x00\x15\x00\xd3\x00\xcf\x00\x09\x00\xce\x00\x04\x00\x05\x00\x06\x00\x07\x00\xd0\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\xd6\x00\xb4\x00\xb6\x00\x15\x00\xd4\x00\xb9\x00\x09\x00\xc0\x00\x04\x00\x05\x00\x06\x00\x07\x00\xc1\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\xc2\x00\xc3\x00\xaf\x00\xc6\x00\x15\x00\xb1\x00\xa0\x00\x09\x00\x90\x00\x04\x00\x05\x00\x06\x00\x07\x00\x91\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\xa1\x00\xa2\x00\xa6\x00\xa3\x00\x15\x00\xb7\x00\x04\x00\x09\x00\xb0\x00\x04\x00\x05\x00\x06\x00\x07\x00\x7b\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x04\x00\x7d\x00\x7e\x00\x15\x00\xa3\x00\x7f\x00\x09\x00\x80\x00\x04\x00\x05\x00\x06\x00\x07\x00\x82\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x81\x00\x85\x00\x83\x00\x84\x00\x15\x00\xa6\x00\x86\x00\x09\x00\x8b\x00\x04\x00\x05\x00\x06\x00\x07\x00\x04\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x3c\x00\x61\x00\x64\x00\x66\x00\x15\x00\xa8\x00\x65\x00\x09\x00\x67\x00\x04\x00\x05\x00\x06\x00\x07\x00\x69\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x78\x00\x2a\x00\x3c\x00\x15\x00\xaa\x00\xff\xff\x09\x00\x2b\x00\x04\x00\x05\x00\x06\x00\x07\x00\x2c\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x2d\x00\x2f\x00\x4a\x00\x4b\x00\x15\x00\x86\x00\x4e\x00\x09\x00\xff\xff\x04\x00\x05\x00\x06\x00\x07\x00\x04\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x8e\x00\x00\x00\x09\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x4e\x00\x00\x00\x09\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x39\x00\x00\x00\x09\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x2d\x00\x00\x00\x09\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x2f\x00\x00\x00\x09\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x08\x00\x00\x00\x09\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\xb2\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\xb4\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\xb6\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\xaf\x00\x00\x00\x15\x00\x9b\x00\x8b\x00\x9c\x00\x00\x00\x00\x00\x9d\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x17\x00\x00\x00\x18\x00\x00\x00\x15\x00\x35\x00\x9e\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x00\x00\x00\x9c\x00\xbd\x00\x9f\x00\x9d\x00\x1a\x00\x00\x00\x04\x00\x23\x00\x24\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x9e\x00\x00\x00\x04\x00\x23\x00\x24\x00\x25\x00\x17\x00\x00\x00\x18\x00\x38\x00\x00\x00\x9f\x00\x00\x00\x19\x00\x00\x00\x04\x00\x23\x00\x24\x00\xab\x00\x92\x00\x93\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\xac\x00\x1b\x00\x1c\x00\x1d\x00\xad\x00\x17\x00\x1e\x00\x18\x00\x1f\x00\x00\x00\x35\x00\x20\x00\x19\x00\x21\x00\x22\x00\x00\x00\x00\x00\x04\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x17\x00\x00\x00\x18\x00\x00\x00\x1b\x00\x1c\x00\x1d\x00\x19\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x00\x00\x1a\x00\x04\x00\x23\x00\x24\x00\x25\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x32\x00\x1e\x00\x18\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x19\x00\x21\x00\x22\x00\x00\x00\x00\x00\x04\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x17\x00\x00\x00\x18\x00\x00\x00\x1b\x00\x1c\x00\x1d\x00\x19\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x00\x00\x1a\x00\x04\x00\x23\x00\x24\x00\x25\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x32\x00\x1e\x00\x18\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x19\x00\x21\x00\x22\x00\x00\x00\x00\x00\x04\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x17\x00\x00\x00\x18\x00\x00\x00\x1b\x00\x1c\x00\x1d\x00\x19\x00\x32\x00\x1e\x00\x18\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x00\x00\x1a\x00\x04\x00\x23\x00\x24\x00\x25\x00\x1b\x00\x1c\x00\x1d\x00\x1a\x00\x32\x00\x1e\x00\x18\x00\x1f\x00\x1b\x00\x1c\x00\x20\x00\x00\x00\x21\x00\x22\x00\x00\x00\x00\x00\x04\x00\x23\x00\x24\x00\x25\x00\x21\x00\x22\x00\x00\x00\x00\x00\x04\x00\x23\x00\x24\x00\x25\x00\x1b\x00\x1c\x00\x9b\x00\x00\x00\x9c\x00\x00\x00\x00\x00\x9d\x00\x00\x00\xab\x00\x92\x00\x93\x00\x21\x00\x22\x00\x00\x00\x00\x00\x04\x00\x23\x00\x24\x00\x25\x00\x04\x00\x05\x00\x06\x00\x07\x00\xc4\x00\x00\x00\x00\x00\x9e\x00\x00\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9f\x00\x00\x00\x00\x00\x00\x00\x04\x00\x23\x00\x24\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x4f\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x50\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x51\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x52\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x54\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x3c\x00\x14\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x55\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x57\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x58\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x5b\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x04\x00\x05\x00\x06\x00\x07\x00\x04\x00\x05\x00\x06\x00\x07\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x59\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x11\x00\x12\x00\x13\x00\x14\x00\x5c\x00\x12\x00\x13\x00\x14\x00\x5d\x00\x12\x00\x13\x00\x14\x00\x5e\x00\x12\x00\x13\x00\x14\x00\x91\x00\x92\x00\x93\x00\x00\x00\x00\x00\x00\x00\x30\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x94\x00\x95\x00\x96\x00\x97\x00\x91\x00\x92\x00\x93\x00\x00\x00\x91\x00\x92\x00\x93\x00\x00\x00\x00\x00\x00\x00\x98\x00\xcb\x00\x94\x00\x95\x00\x96\x00\x97\x00\xb9\x00\x95\x00\x96\x00\x97\x00\xba\x00\xda\x00\x91\x00\x92\x00\x93\x00\x00\x00\x98\x00\x99\x00\x91\x00\x92\x00\x93\x00\x00\x00\x00\x00\x00\x00\xb9\x00\x95\x00\x96\x00\x97\x00\xba\x00\xdb\x00\xb9\x00\x95\x00\x96\x00\x97\x00\xba\x00\xbb\x00\x91\x00\x92\x00\x93\x00\x00\x00\x00\x00\x91\x00\x92\x00\x93\x00\x00\x00\x91\x00\x92\x00\x93\x00\xbd\x00\x95\x00\x96\x00\x97\x00\xbe\x00\xde\x00\x95\x00\x96\x00\x97\x00\xc9\x00\x95\x00\x96\x00\x97\x00\x91\x00\x92\x00\x93\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xca\x00\x96\x00\x97\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"# -happyReduceArr = array (2, 123) [ +happyReduceArr = array (2, 121) [ (2 , happyReduce_2), (3 , happyReduce_3), (4 , happyReduce_4), @@ -437,9 +437,7 @@ happyReduceArr = array (2, 123) [ (118 , happyReduce_118), (119 , happyReduce_119), (120 , happyReduce_120), - (121 , happyReduce_121), - (122 , happyReduce_122), - (123 , happyReduce_123) + (121 , happyReduce_121) ] happy_n_terms = 55 :: Int @@ -479,7 +477,7 @@ happyReduction_6 happy_x_2 = case happyOut11 happy_x_1 of { happy_var_1 -> case happyOut13 happy_x_2 of { happy_var_2 -> happyIn9 - (Module happy_var_1 happy_var_2 + (Module (reverse happy_var_1) (reverse happy_var_2) )}} happyReduce_7 = happySpecReduce_2 5# happyReduction_7 @@ -495,25 +493,18 @@ happyReduction_8 = happyIn11 ([] ) -happyReduce_9 = happySpecReduce_1 6# happyReduction_9 -happyReduction_9 happy_x_1 - = case happyOut10 happy_x_1 of { happy_var_1 -> - happyIn11 - ((:[]) happy_var_1 - )} - -happyReduce_10 = happySpecReduce_3 6# happyReduction_10 -happyReduction_10 happy_x_3 +happyReduce_9 = happySpecReduce_3 6# happyReduction_9 +happyReduction_9 happy_x_3 happy_x_2 happy_x_1 - = case happyOut10 happy_x_1 of { happy_var_1 -> - case happyOut11 happy_x_3 of { happy_var_3 -> + = case happyOut11 happy_x_1 of { happy_var_1 -> + case happyOut10 happy_x_2 of { happy_var_2 -> happyIn11 - ((:) happy_var_1 happy_var_3 + (flip (:) happy_var_1 happy_var_2 )}} -happyReduce_11 = happyReduce 8# 7# happyReduction_11 -happyReduction_11 (happy_x_8 `HappyStk` +happyReduce_10 = happyReduce 8# 7# happyReduction_10 +happyReduction_10 (happy_x_8 `HappyStk` happy_x_7 `HappyStk` happy_x_6 `HappyStk` happy_x_5 `HappyStk` @@ -529,8 +520,8 @@ happyReduction_11 (happy_x_8 `HappyStk` (DataDecl happy_var_2 happy_var_4 happy_var_7 ) `HappyStk` happyRest}}} -happyReduce_12 = happySpecReduce_3 7# happyReduction_12 -happyReduction_12 happy_x_3 +happyReduce_11 = happySpecReduce_3 7# happyReduction_11 +happyReduction_11 happy_x_3 happy_x_2 happy_x_1 = case happyOut5 happy_x_1 of { happy_var_1 -> @@ -539,8 +530,8 @@ happyReduction_12 happy_x_3 (TypeDecl happy_var_1 happy_var_3 )}} -happyReduce_13 = happyReduce 5# 7# happyReduction_13 -happyReduction_13 (happy_x_5 `HappyStk` +happyReduce_12 = happyReduce 5# 7# happyReduction_12 +happyReduction_12 (happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` @@ -554,8 +545,8 @@ happyReduction_13 (happy_x_5 `HappyStk` (ValueDecl happy_var_1 (reverse happy_var_2) happy_var_3 happy_var_5 ) `HappyStk` happyRest}}}} -happyReduce_14 = happySpecReduce_3 7# happyReduction_14 -happyReduction_14 happy_x_3 +happyReduce_13 = happySpecReduce_3 7# happyReduction_13 +happyReduction_13 happy_x_3 happy_x_2 happy_x_1 = case happyOut5 happy_x_2 of { happy_var_2 -> @@ -564,30 +555,23 @@ happyReduction_14 happy_x_3 (DeriveDecl happy_var_2 happy_var_3 )}} -happyReduce_15 = happySpecReduce_0 8# happyReduction_15 -happyReduction_15 = happyIn13 +happyReduce_14 = happySpecReduce_0 8# happyReduction_14 +happyReduction_14 = happyIn13 ([] ) -happyReduce_16 = happySpecReduce_1 8# happyReduction_16 -happyReduction_16 happy_x_1 - = case happyOut12 happy_x_1 of { happy_var_1 -> - happyIn13 - ((:[]) happy_var_1 - )} - -happyReduce_17 = happySpecReduce_3 8# happyReduction_17 -happyReduction_17 happy_x_3 +happyReduce_15 = happySpecReduce_3 8# happyReduction_15 +happyReduction_15 happy_x_3 happy_x_2 happy_x_1 - = case happyOut12 happy_x_1 of { happy_var_1 -> - case happyOut13 happy_x_3 of { happy_var_3 -> + = case happyOut13 happy_x_1 of { happy_var_1 -> + case happyOut12 happy_x_2 of { happy_var_2 -> happyIn13 - ((:) happy_var_1 happy_var_3 + (flip (:) happy_var_1 happy_var_2 )}} -happyReduce_18 = happySpecReduce_3 9# happyReduction_18 -happyReduction_18 happy_x_3 +happyReduce_16 = happySpecReduce_3 9# happyReduction_16 +happyReduction_16 happy_x_3 happy_x_2 happy_x_1 = case happyOut5 happy_x_1 of { happy_var_1 -> @@ -596,20 +580,20 @@ happyReduction_18 happy_x_3 (ConsDecl happy_var_1 happy_var_3 )}} -happyReduce_19 = happySpecReduce_0 10# happyReduction_19 -happyReduction_19 = happyIn15 +happyReduce_17 = happySpecReduce_0 10# happyReduction_17 +happyReduction_17 = happyIn15 ([] ) -happyReduce_20 = happySpecReduce_1 10# happyReduction_20 -happyReduction_20 happy_x_1 +happyReduce_18 = happySpecReduce_1 10# happyReduction_18 +happyReduction_18 happy_x_1 = case happyOut14 happy_x_1 of { happy_var_1 -> happyIn15 ((:[]) happy_var_1 )} -happyReduce_21 = happySpecReduce_3 10# happyReduction_21 -happyReduction_21 happy_x_3 +happyReduce_19 = happySpecReduce_3 10# happyReduction_19 +happyReduction_19 happy_x_3 happy_x_2 happy_x_1 = case happyOut14 happy_x_1 of { happy_var_1 -> @@ -618,21 +602,21 @@ happyReduction_21 happy_x_3 ((:) happy_var_1 happy_var_3 )}} -happyReduce_22 = happySpecReduce_2 11# happyReduction_22 -happyReduction_22 happy_x_2 +happyReduce_20 = happySpecReduce_2 11# happyReduction_20 +happyReduction_20 happy_x_2 happy_x_1 = case happyOut28 happy_x_2 of { happy_var_2 -> happyIn16 (GuardExp happy_var_2 )} -happyReduce_23 = happySpecReduce_0 11# happyReduction_23 -happyReduction_23 = happyIn16 +happyReduce_21 = happySpecReduce_0 11# happyReduction_21 +happyReduction_21 = happyIn16 (GuardNo ) -happyReduce_24 = happySpecReduce_3 12# happyReduction_24 -happyReduction_24 happy_x_3 +happyReduce_22 = happySpecReduce_3 12# happyReduction_22 +happyReduction_22 happy_x_3 happy_x_2 happy_x_1 = case happyOut18 happy_x_1 of { happy_var_1 -> @@ -641,15 +625,15 @@ happyReduction_24 happy_x_3 (POr happy_var_1 happy_var_3 )}} -happyReduce_25 = happySpecReduce_1 12# happyReduction_25 -happyReduction_25 happy_x_1 +happyReduce_23 = happySpecReduce_1 12# happyReduction_23 +happyReduction_23 happy_x_1 = case happyOut18 happy_x_1 of { happy_var_1 -> happyIn17 (happy_var_1 )} -happyReduce_26 = happySpecReduce_3 13# happyReduction_26 -happyReduction_26 happy_x_3 +happyReduce_24 = happySpecReduce_3 13# happyReduction_24 +happyReduction_24 happy_x_3 happy_x_2 happy_x_1 = case happyOut19 happy_x_1 of { happy_var_1 -> @@ -658,15 +642,15 @@ happyReduction_26 happy_x_3 (PListCons happy_var_1 happy_var_3 )}} -happyReduce_27 = happySpecReduce_1 13# happyReduction_27 -happyReduction_27 happy_x_1 +happyReduce_25 = happySpecReduce_1 13# happyReduction_25 +happyReduction_25 happy_x_1 = case happyOut19 happy_x_1 of { happy_var_1 -> happyIn18 (happy_var_1 )} -happyReduce_28 = happySpecReduce_3 14# happyReduction_28 -happyReduction_28 happy_x_3 +happyReduce_26 = happySpecReduce_3 14# happyReduction_26 +happyReduction_26 happy_x_3 happy_x_2 happy_x_1 = case happyOut5 happy_x_1 of { happy_var_1 -> @@ -676,15 +660,15 @@ happyReduction_28 happy_x_3 (PConsTop happy_var_1 happy_var_2 (reverse happy_var_3) )}}} -happyReduce_29 = happySpecReduce_1 14# happyReduction_29 -happyReduction_29 happy_x_1 +happyReduce_27 = happySpecReduce_1 14# happyReduction_27 +happyReduction_27 happy_x_1 = case happyOut20 happy_x_1 of { happy_var_1 -> happyIn19 (happy_var_1 )} -happyReduce_30 = happyReduce 4# 15# happyReduction_30 -happyReduction_30 (happy_x_4 `HappyStk` +happyReduce_28 = happyReduce 4# 15# happyReduction_28 +happyReduction_28 (happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` @@ -694,15 +678,15 @@ happyReduction_30 (happy_x_4 `HappyStk` (PRec happy_var_3 ) `HappyStk` happyRest} -happyReduce_31 = happySpecReduce_2 15# happyReduction_31 -happyReduction_31 happy_x_2 +happyReduce_29 = happySpecReduce_2 15# happyReduction_29 +happyReduction_29 happy_x_2 happy_x_1 = happyIn20 (PEmptyList ) -happyReduce_32 = happySpecReduce_3 15# happyReduction_32 -happyReduction_32 happy_x_3 +happyReduce_30 = happySpecReduce_3 15# happyReduction_30 +happyReduction_30 happy_x_3 happy_x_2 happy_x_1 = case happyOut22 happy_x_2 of { happy_var_2 -> @@ -710,8 +694,8 @@ happyReduction_32 happy_x_3 (PList happy_var_2 )} -happyReduce_33 = happyReduce 5# 15# happyReduction_33 -happyReduction_33 (happy_x_5 `HappyStk` +happyReduce_31 = happyReduce 5# 15# happyReduction_31 +happyReduction_31 (happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` @@ -723,41 +707,41 @@ happyReduction_33 (happy_x_5 `HappyStk` (PTuple happy_var_2 happy_var_4 ) `HappyStk` happyRest}} -happyReduce_34 = happySpecReduce_1 15# happyReduction_34 -happyReduction_34 happy_x_1 +happyReduce_32 = happySpecReduce_1 15# happyReduction_32 +happyReduction_32 happy_x_1 = happyIn20 (PType ) -happyReduce_35 = happySpecReduce_1 15# happyReduction_35 -happyReduction_35 happy_x_1 +happyReduce_33 = happySpecReduce_1 15# happyReduction_33 +happyReduction_33 happy_x_1 = case happyOut6 happy_x_1 of { happy_var_1 -> happyIn20 (PStr happy_var_1 )} -happyReduce_36 = happySpecReduce_1 15# happyReduction_36 -happyReduction_36 happy_x_1 +happyReduce_34 = happySpecReduce_1 15# happyReduction_34 +happyReduction_34 happy_x_1 = case happyOut7 happy_x_1 of { happy_var_1 -> happyIn20 (PInt happy_var_1 )} -happyReduce_37 = happySpecReduce_1 15# happyReduction_37 -happyReduction_37 happy_x_1 +happyReduce_35 = happySpecReduce_1 15# happyReduction_35 +happyReduction_35 happy_x_1 = case happyOut5 happy_x_1 of { happy_var_1 -> happyIn20 (PVar happy_var_1 )} -happyReduce_38 = happySpecReduce_1 15# happyReduction_38 -happyReduction_38 happy_x_1 +happyReduce_36 = happySpecReduce_1 15# happyReduction_36 +happyReduction_36 happy_x_1 = happyIn20 (PWild ) -happyReduce_39 = happySpecReduce_3 15# happyReduction_39 -happyReduction_39 happy_x_3 +happyReduce_37 = happySpecReduce_3 15# happyReduction_37 +happyReduction_37 happy_x_3 happy_x_2 happy_x_1 = case happyOut17 happy_x_2 of { happy_var_2 -> @@ -765,22 +749,22 @@ happyReduction_39 happy_x_3 (happy_var_2 )} -happyReduce_40 = happySpecReduce_1 16# happyReduction_40 -happyReduction_40 happy_x_1 +happyReduce_38 = happySpecReduce_1 16# happyReduction_38 +happyReduction_38 happy_x_1 = case happyOut17 happy_x_1 of { happy_var_1 -> happyIn21 (CommaPattern happy_var_1 )} -happyReduce_41 = happySpecReduce_1 17# happyReduction_41 -happyReduction_41 happy_x_1 +happyReduce_39 = happySpecReduce_1 17# happyReduction_39 +happyReduction_39 happy_x_1 = case happyOut21 happy_x_1 of { happy_var_1 -> happyIn22 ((:[]) happy_var_1 )} -happyReduce_42 = happySpecReduce_3 17# happyReduction_42 -happyReduction_42 happy_x_3 +happyReduce_40 = happySpecReduce_3 17# happyReduction_40 +happyReduction_40 happy_x_3 happy_x_2 happy_x_1 = case happyOut21 happy_x_1 of { happy_var_1 -> @@ -789,13 +773,13 @@ happyReduction_42 happy_x_3 ((:) happy_var_1 happy_var_3 )}} -happyReduce_43 = happySpecReduce_0 18# happyReduction_43 -happyReduction_43 = happyIn23 +happyReduce_41 = happySpecReduce_0 18# happyReduction_41 +happyReduction_41 = happyIn23 ([] ) -happyReduce_44 = happySpecReduce_2 18# happyReduction_44 -happyReduction_44 happy_x_2 +happyReduce_42 = happySpecReduce_2 18# happyReduction_42 +happyReduction_42 happy_x_2 happy_x_1 = case happyOut23 happy_x_1 of { happy_var_1 -> case happyOut20 happy_x_2 of { happy_var_2 -> @@ -803,8 +787,8 @@ happyReduction_44 happy_x_2 (flip (:) happy_var_1 happy_var_2 )}} -happyReduce_45 = happySpecReduce_3 19# happyReduction_45 -happyReduction_45 happy_x_3 +happyReduce_43 = happySpecReduce_3 19# happyReduction_43 +happyReduction_43 happy_x_3 happy_x_2 happy_x_1 = case happyOut5 happy_x_1 of { happy_var_1 -> @@ -813,20 +797,20 @@ happyReduction_45 happy_x_3 (FieldPattern happy_var_1 happy_var_3 )}} -happyReduce_46 = happySpecReduce_0 20# happyReduction_46 -happyReduction_46 = happyIn25 +happyReduce_44 = happySpecReduce_0 20# happyReduction_44 +happyReduction_44 = happyIn25 ([] ) -happyReduce_47 = happySpecReduce_1 20# happyReduction_47 -happyReduction_47 happy_x_1 +happyReduce_45 = happySpecReduce_1 20# happyReduction_45 +happyReduction_45 happy_x_1 = case happyOut24 happy_x_1 of { happy_var_1 -> happyIn25 ((:[]) happy_var_1 )} -happyReduce_48 = happySpecReduce_3 20# happyReduction_48 -happyReduction_48 happy_x_3 +happyReduce_46 = happySpecReduce_3 20# happyReduction_46 +happyReduction_46 happy_x_3 happy_x_2 happy_x_1 = case happyOut24 happy_x_1 of { happy_var_1 -> @@ -835,8 +819,8 @@ happyReduction_48 happy_x_3 ((:) happy_var_1 happy_var_3 )}} -happyReduce_49 = happyReduce 7# 21# happyReduction_49 -happyReduction_49 (happy_x_7 `HappyStk` +happyReduce_47 = happyReduce 7# 21# happyReduction_47 +happyReduction_47 (happy_x_7 `HappyStk` happy_x_6 `HappyStk` happy_x_5 `HappyStk` happy_x_4 `HappyStk` @@ -851,8 +835,8 @@ happyReduction_49 (happy_x_7 `HappyStk` (EPi happy_var_2 happy_var_4 happy_var_7 ) `HappyStk` happyRest}}} -happyReduce_50 = happySpecReduce_3 21# happyReduction_50 -happyReduction_50 happy_x_3 +happyReduce_48 = happySpecReduce_3 21# happyReduction_48 +happyReduction_48 happy_x_3 happy_x_2 happy_x_1 = case happyOut28 happy_x_1 of { happy_var_1 -> @@ -861,28 +845,28 @@ happyReduction_50 happy_x_3 (EPiNoVar happy_var_1 happy_var_3 )}} -happyReduce_51 = happySpecReduce_1 21# happyReduction_51 -happyReduction_51 happy_x_1 +happyReduce_49 = happySpecReduce_1 21# happyReduction_49 +happyReduction_49 happy_x_1 = case happyOut28 happy_x_1 of { happy_var_1 -> happyIn26 (happy_var_1 )} -happyReduce_52 = happySpecReduce_1 22# happyReduction_52 -happyReduction_52 happy_x_1 +happyReduce_50 = happySpecReduce_1 22# happyReduction_50 +happyReduction_50 happy_x_1 = case happyOut5 happy_x_1 of { happy_var_1 -> happyIn27 (VVar happy_var_1 )} -happyReduce_53 = happySpecReduce_1 22# happyReduction_53 -happyReduction_53 happy_x_1 +happyReduce_51 = happySpecReduce_1 22# happyReduction_51 +happyReduction_51 happy_x_1 = happyIn27 (VWild ) -happyReduce_54 = happyReduce 4# 23# happyReduction_54 -happyReduction_54 (happy_x_4 `HappyStk` +happyReduce_52 = happyReduce 4# 23# happyReduction_52 +happyReduction_52 (happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` @@ -893,8 +877,8 @@ happyReduction_54 (happy_x_4 `HappyStk` (EAbs happy_var_2 happy_var_4 ) `HappyStk` happyRest}} -happyReduce_55 = happyReduce 6# 23# happyReduction_55 -happyReduction_55 (happy_x_6 `HappyStk` +happyReduce_53 = happyReduce 6# 23# happyReduction_53 +happyReduction_53 (happy_x_6 `HappyStk` happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` @@ -907,8 +891,8 @@ happyReduction_55 (happy_x_6 `HappyStk` (ELet happy_var_3 happy_var_6 ) `HappyStk` happyRest}} -happyReduce_56 = happyReduce 6# 23# happyReduction_56 -happyReduction_56 (happy_x_6 `HappyStk` +happyReduce_54 = happyReduce 6# 23# happyReduction_54 +happyReduction_54 (happy_x_6 `HappyStk` happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` @@ -921,8 +905,8 @@ happyReduction_56 (happy_x_6 `HappyStk` (ECase happy_var_2 happy_var_5 ) `HappyStk` happyRest}} -happyReduce_57 = happyReduce 6# 23# happyReduction_57 -happyReduction_57 (happy_x_6 `HappyStk` +happyReduce_55 = happyReduce 6# 23# happyReduction_55 +happyReduction_55 (happy_x_6 `HappyStk` happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` @@ -936,8 +920,8 @@ happyReduction_57 (happy_x_6 `HappyStk` (EIf happy_var_2 happy_var_4 happy_var_6 ) `HappyStk` happyRest}}} -happyReduce_58 = happyReduce 5# 23# happyReduction_58 -happyReduction_58 (happy_x_5 `HappyStk` +happyReduce_56 = happyReduce 5# 23# happyReduction_56 +happyReduction_56 (happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` @@ -949,15 +933,15 @@ happyReduction_58 (happy_x_5 `HappyStk` (EDo (reverse happy_var_3) happy_var_4 ) `HappyStk` happyRest}} -happyReduce_59 = happySpecReduce_1 23# happyReduction_59 -happyReduction_59 happy_x_1 +happyReduce_57 = happySpecReduce_1 23# happyReduction_57 +happyReduction_57 happy_x_1 = case happyOut50 happy_x_1 of { happy_var_1 -> happyIn28 (happy_var_1 )} -happyReduce_60 = happyReduce 5# 24# happyReduction_60 -happyReduction_60 (happy_x_5 `HappyStk` +happyReduce_58 = happyReduce 5# 24# happyReduction_58 +happyReduction_58 (happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` @@ -970,20 +954,20 @@ happyReduction_60 (happy_x_5 `HappyStk` (LetDef happy_var_1 happy_var_3 happy_var_5 ) `HappyStk` happyRest}}} -happyReduce_61 = happySpecReduce_0 25# happyReduction_61 -happyReduction_61 = happyIn30 +happyReduce_59 = happySpecReduce_0 25# happyReduction_59 +happyReduction_59 = happyIn30 ([] ) -happyReduce_62 = happySpecReduce_1 25# happyReduction_62 -happyReduction_62 happy_x_1 +happyReduce_60 = happySpecReduce_1 25# happyReduction_60 +happyReduction_60 happy_x_1 = case happyOut29 happy_x_1 of { happy_var_1 -> happyIn30 ((:[]) happy_var_1 )} -happyReduce_63 = happySpecReduce_3 25# happyReduction_63 -happyReduction_63 happy_x_3 +happyReduce_61 = happySpecReduce_3 25# happyReduction_61 +happyReduction_61 happy_x_3 happy_x_2 happy_x_1 = case happyOut29 happy_x_1 of { happy_var_1 -> @@ -992,8 +976,8 @@ happyReduction_63 happy_x_3 ((:) happy_var_1 happy_var_3 )}} -happyReduce_64 = happyReduce 4# 26# happyReduction_64 -happyReduction_64 (happy_x_4 `HappyStk` +happyReduce_62 = happyReduce 4# 26# happyReduction_62 +happyReduction_62 (happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` @@ -1005,20 +989,20 @@ happyReduction_64 (happy_x_4 `HappyStk` (Case happy_var_1 happy_var_2 happy_var_4 ) `HappyStk` happyRest}}} -happyReduce_65 = happySpecReduce_0 27# happyReduction_65 -happyReduction_65 = happyIn32 +happyReduce_63 = happySpecReduce_0 27# happyReduction_63 +happyReduction_63 = happyIn32 ([] ) -happyReduce_66 = happySpecReduce_1 27# happyReduction_66 -happyReduction_66 happy_x_1 +happyReduce_64 = happySpecReduce_1 27# happyReduction_64 +happyReduction_64 happy_x_1 = case happyOut31 happy_x_1 of { happy_var_1 -> happyIn32 ((:[]) happy_var_1 )} -happyReduce_67 = happySpecReduce_3 27# happyReduction_67 -happyReduction_67 happy_x_3 +happyReduce_65 = happySpecReduce_3 27# happyReduction_65 +happyReduction_65 happy_x_3 happy_x_2 happy_x_1 = case happyOut31 happy_x_1 of { happy_var_1 -> @@ -1027,8 +1011,8 @@ happyReduction_67 happy_x_3 ((:) happy_var_1 happy_var_3 )}} -happyReduce_68 = happySpecReduce_3 28# happyReduction_68 -happyReduction_68 happy_x_3 +happyReduce_66 = happySpecReduce_3 28# happyReduction_66 +happyReduction_66 happy_x_3 happy_x_2 happy_x_1 = case happyOut27 happy_x_1 of { happy_var_1 -> @@ -1037,20 +1021,20 @@ happyReduction_68 happy_x_3 (BindVar happy_var_1 happy_var_3 )}} -happyReduce_69 = happySpecReduce_1 28# happyReduction_69 -happyReduction_69 happy_x_1 +happyReduce_67 = happySpecReduce_1 28# happyReduction_67 +happyReduction_67 happy_x_1 = case happyOut26 happy_x_1 of { happy_var_1 -> happyIn33 (BindNoVar happy_var_1 )} -happyReduce_70 = happySpecReduce_0 29# happyReduction_70 -happyReduction_70 = happyIn34 +happyReduce_68 = happySpecReduce_0 29# happyReduction_68 +happyReduction_68 = happyIn34 ([] ) -happyReduce_71 = happySpecReduce_3 29# happyReduction_71 -happyReduction_71 happy_x_3 +happyReduce_69 = happySpecReduce_3 29# happyReduction_69 +happyReduction_69 happy_x_3 happy_x_2 happy_x_1 = case happyOut34 happy_x_1 of { happy_var_1 -> @@ -1059,8 +1043,8 @@ happyReduction_71 happy_x_3 (flip (:) happy_var_1 happy_var_2 )}} -happyReduce_72 = happySpecReduce_3 30# happyReduction_72 -happyReduction_72 happy_x_3 +happyReduce_70 = happySpecReduce_3 30# happyReduction_70 +happyReduction_70 happy_x_3 happy_x_2 happy_x_1 = case happyOut35 happy_x_1 of { happy_var_1 -> @@ -1069,8 +1053,8 @@ happyReduction_72 happy_x_3 (EBind happy_var_1 happy_var_3 )}} -happyReduce_73 = happySpecReduce_3 30# happyReduction_73 -happyReduction_73 happy_x_3 +happyReduce_71 = happySpecReduce_3 30# happyReduction_71 +happyReduction_71 happy_x_3 happy_x_2 happy_x_1 = case happyOut35 happy_x_1 of { happy_var_1 -> @@ -1079,15 +1063,15 @@ happyReduction_73 happy_x_3 (EBindC happy_var_1 happy_var_3 )}} -happyReduce_74 = happySpecReduce_1 30# happyReduction_74 -happyReduction_74 happy_x_1 +happyReduce_72 = happySpecReduce_1 30# happyReduction_72 +happyReduction_72 happy_x_1 = case happyOut36 happy_x_1 of { happy_var_1 -> happyIn35 (happy_var_1 )} -happyReduce_75 = happySpecReduce_3 31# happyReduction_75 -happyReduction_75 happy_x_3 +happyReduce_73 = happySpecReduce_3 31# happyReduction_73 +happyReduction_73 happy_x_3 happy_x_2 happy_x_1 = case happyOut37 happy_x_1 of { happy_var_1 -> @@ -1096,15 +1080,15 @@ happyReduction_75 happy_x_3 (EOr happy_var_1 happy_var_3 )}} -happyReduce_76 = happySpecReduce_1 31# happyReduction_76 -happyReduction_76 happy_x_1 +happyReduce_74 = happySpecReduce_1 31# happyReduction_74 +happyReduction_74 happy_x_1 = case happyOut37 happy_x_1 of { happy_var_1 -> happyIn36 (happy_var_1 )} -happyReduce_77 = happySpecReduce_3 32# happyReduction_77 -happyReduction_77 happy_x_3 +happyReduce_75 = happySpecReduce_3 32# happyReduction_75 +happyReduction_75 happy_x_3 happy_x_2 happy_x_1 = case happyOut38 happy_x_1 of { happy_var_1 -> @@ -1113,13 +1097,33 @@ happyReduction_77 happy_x_3 (EAnd happy_var_1 happy_var_3 )}} -happyReduce_78 = happySpecReduce_1 32# happyReduction_78 -happyReduction_78 happy_x_1 +happyReduce_76 = happySpecReduce_1 32# happyReduction_76 +happyReduction_76 happy_x_1 = case happyOut38 happy_x_1 of { happy_var_1 -> happyIn37 (happy_var_1 )} +happyReduce_77 = happySpecReduce_3 33# happyReduction_77 +happyReduction_77 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut39 happy_x_1 of { happy_var_1 -> + case happyOut39 happy_x_3 of { happy_var_3 -> + happyIn38 + (EEq happy_var_1 happy_var_3 + )}} + +happyReduce_78 = happySpecReduce_3 33# happyReduction_78 +happyReduction_78 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut39 happy_x_1 of { happy_var_1 -> + case happyOut39 happy_x_3 of { happy_var_3 -> + happyIn38 + (ENe happy_var_1 happy_var_3 + )}} + happyReduce_79 = happySpecReduce_3 33# happyReduction_79 happyReduction_79 happy_x_3 happy_x_2 @@ -1127,7 +1131,7 @@ happyReduction_79 happy_x_3 = case happyOut39 happy_x_1 of { happy_var_1 -> case happyOut39 happy_x_3 of { happy_var_3 -> happyIn38 - (EEq happy_var_1 happy_var_3 + (ELt happy_var_1 happy_var_3 )}} happyReduce_80 = happySpecReduce_3 33# happyReduction_80 @@ -1137,7 +1141,7 @@ happyReduction_80 happy_x_3 = case happyOut39 happy_x_1 of { happy_var_1 -> case happyOut39 happy_x_3 of { happy_var_3 -> happyIn38 - (ENe happy_var_1 happy_var_3 + (ELe happy_var_1 happy_var_3 )}} happyReduce_81 = happySpecReduce_3 33# happyReduction_81 @@ -1147,31 +1151,11 @@ happyReduction_81 happy_x_3 = case happyOut39 happy_x_1 of { happy_var_1 -> case happyOut39 happy_x_3 of { happy_var_3 -> happyIn38 - (ELt happy_var_1 happy_var_3 + (EGt happy_var_1 happy_var_3 )}} happyReduce_82 = happySpecReduce_3 33# happyReduction_82 happyReduction_82 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut39 happy_x_1 of { happy_var_1 -> - case happyOut39 happy_x_3 of { happy_var_3 -> - happyIn38 - (ELe happy_var_1 happy_var_3 - )}} - -happyReduce_83 = happySpecReduce_3 33# happyReduction_83 -happyReduction_83 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut39 happy_x_1 of { happy_var_1 -> - case happyOut39 happy_x_3 of { happy_var_3 -> - happyIn38 - (EGt happy_var_1 happy_var_3 - )}} - -happyReduce_84 = happySpecReduce_3 33# happyReduction_84 -happyReduction_84 happy_x_3 happy_x_2 happy_x_1 = case happyOut39 happy_x_1 of { happy_var_1 -> @@ -1180,15 +1164,15 @@ happyReduction_84 happy_x_3 (EGe happy_var_1 happy_var_3 )}} -happyReduce_85 = happySpecReduce_1 33# happyReduction_85 -happyReduction_85 happy_x_1 +happyReduce_83 = happySpecReduce_1 33# happyReduction_83 +happyReduction_83 happy_x_1 = case happyOut39 happy_x_1 of { happy_var_1 -> happyIn38 (happy_var_1 )} -happyReduce_86 = happySpecReduce_3 34# happyReduction_86 -happyReduction_86 happy_x_3 +happyReduce_84 = happySpecReduce_3 34# happyReduction_84 +happyReduction_84 happy_x_3 happy_x_2 happy_x_1 = case happyOut40 happy_x_1 of { happy_var_1 -> @@ -1197,15 +1181,15 @@ happyReduction_86 happy_x_3 (EListCons happy_var_1 happy_var_3 )}} -happyReduce_87 = happySpecReduce_1 34# happyReduction_87 -happyReduction_87 happy_x_1 +happyReduce_85 = happySpecReduce_1 34# happyReduction_85 +happyReduction_85 happy_x_1 = case happyOut40 happy_x_1 of { happy_var_1 -> happyIn39 (happy_var_1 )} -happyReduce_88 = happySpecReduce_3 35# happyReduction_88 -happyReduction_88 happy_x_3 +happyReduce_86 = happySpecReduce_3 35# happyReduction_86 +happyReduction_86 happy_x_3 happy_x_2 happy_x_1 = case happyOut40 happy_x_1 of { happy_var_1 -> @@ -1214,8 +1198,8 @@ happyReduction_88 happy_x_3 (EAdd happy_var_1 happy_var_3 )}} -happyReduce_89 = happySpecReduce_3 35# happyReduction_89 -happyReduction_89 happy_x_3 +happyReduce_87 = happySpecReduce_3 35# happyReduction_87 +happyReduction_87 happy_x_3 happy_x_2 happy_x_1 = case happyOut40 happy_x_1 of { happy_var_1 -> @@ -1224,15 +1208,15 @@ happyReduction_89 happy_x_3 (ESub happy_var_1 happy_var_3 )}} -happyReduce_90 = happySpecReduce_1 35# happyReduction_90 -happyReduction_90 happy_x_1 +happyReduce_88 = happySpecReduce_1 35# happyReduction_88 +happyReduction_88 happy_x_1 = case happyOut41 happy_x_1 of { happy_var_1 -> happyIn40 (happy_var_1 )} -happyReduce_91 = happySpecReduce_3 36# happyReduction_91 -happyReduction_91 happy_x_3 +happyReduce_89 = happySpecReduce_3 36# happyReduction_89 +happyReduction_89 happy_x_3 happy_x_2 happy_x_1 = case happyOut41 happy_x_1 of { happy_var_1 -> @@ -1241,8 +1225,8 @@ happyReduction_91 happy_x_3 (EMul happy_var_1 happy_var_3 )}} -happyReduce_92 = happySpecReduce_3 36# happyReduction_92 -happyReduction_92 happy_x_3 +happyReduce_90 = happySpecReduce_3 36# happyReduction_90 +happyReduction_90 happy_x_3 happy_x_2 happy_x_1 = case happyOut41 happy_x_1 of { happy_var_1 -> @@ -1251,8 +1235,8 @@ happyReduction_92 happy_x_3 (EDiv happy_var_1 happy_var_3 )}} -happyReduce_93 = happySpecReduce_3 36# happyReduction_93 -happyReduction_93 happy_x_3 +happyReduce_91 = happySpecReduce_3 36# happyReduction_91 +happyReduction_91 happy_x_3 happy_x_2 happy_x_1 = case happyOut41 happy_x_1 of { happy_var_1 -> @@ -1261,30 +1245,30 @@ happyReduction_93 happy_x_3 (EMod happy_var_1 happy_var_3 )}} -happyReduce_94 = happySpecReduce_1 36# happyReduction_94 -happyReduction_94 happy_x_1 +happyReduce_92 = happySpecReduce_1 36# happyReduction_92 +happyReduction_92 happy_x_1 = case happyOut42 happy_x_1 of { happy_var_1 -> happyIn41 (happy_var_1 )} -happyReduce_95 = happySpecReduce_2 37# happyReduction_95 -happyReduction_95 happy_x_2 +happyReduce_93 = happySpecReduce_2 37# happyReduction_93 +happyReduction_93 happy_x_2 happy_x_1 = case happyOut42 happy_x_2 of { happy_var_2 -> happyIn42 (ENeg happy_var_2 )} -happyReduce_96 = happySpecReduce_1 37# happyReduction_96 -happyReduction_96 happy_x_1 +happyReduce_94 = happySpecReduce_1 37# happyReduction_94 +happyReduction_94 happy_x_1 = case happyOut43 happy_x_1 of { happy_var_1 -> happyIn42 (happy_var_1 )} -happyReduce_97 = happySpecReduce_2 38# happyReduction_97 -happyReduction_97 happy_x_2 +happyReduce_95 = happySpecReduce_2 38# happyReduction_95 +happyReduction_95 happy_x_2 happy_x_1 = case happyOut43 happy_x_1 of { happy_var_1 -> case happyOut44 happy_x_2 of { happy_var_2 -> @@ -1292,15 +1276,15 @@ happyReduction_97 happy_x_2 (EApp happy_var_1 happy_var_2 )}} -happyReduce_98 = happySpecReduce_1 38# happyReduction_98 -happyReduction_98 happy_x_1 +happyReduce_96 = happySpecReduce_1 38# happyReduction_96 +happyReduction_96 happy_x_1 = case happyOut44 happy_x_1 of { happy_var_1 -> happyIn43 (happy_var_1 )} -happyReduce_99 = happySpecReduce_3 39# happyReduction_99 -happyReduction_99 happy_x_3 +happyReduce_97 = happySpecReduce_3 39# happyReduction_97 +happyReduction_97 happy_x_3 happy_x_2 happy_x_1 = case happyOut44 happy_x_1 of { happy_var_1 -> @@ -1309,15 +1293,15 @@ happyReduction_99 happy_x_3 (EProj happy_var_1 happy_var_3 )}} -happyReduce_100 = happySpecReduce_1 39# happyReduction_100 -happyReduction_100 happy_x_1 +happyReduce_98 = happySpecReduce_1 39# happyReduction_98 +happyReduction_98 happy_x_1 = case happyOut45 happy_x_1 of { happy_var_1 -> happyIn44 (happy_var_1 )} -happyReduce_101 = happyReduce 4# 40# happyReduction_101 -happyReduction_101 (happy_x_4 `HappyStk` +happyReduce_99 = happyReduce 4# 40# happyReduction_99 +happyReduction_99 (happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` @@ -1327,8 +1311,8 @@ happyReduction_101 (happy_x_4 `HappyStk` (ERecType happy_var_3 ) `HappyStk` happyRest} -happyReduce_102 = happyReduce 4# 40# happyReduction_102 -happyReduction_102 (happy_x_4 `HappyStk` +happyReduce_100 = happyReduce 4# 40# happyReduction_100 +happyReduction_100 (happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` @@ -1338,15 +1322,15 @@ happyReduction_102 (happy_x_4 `HappyStk` (ERec happy_var_3 ) `HappyStk` happyRest} -happyReduce_103 = happySpecReduce_2 40# happyReduction_103 -happyReduction_103 happy_x_2 +happyReduce_101 = happySpecReduce_2 40# happyReduction_101 +happyReduction_101 happy_x_2 happy_x_1 = happyIn45 (EEmptyList ) -happyReduce_104 = happySpecReduce_3 40# happyReduction_104 -happyReduction_104 happy_x_3 +happyReduce_102 = happySpecReduce_3 40# happyReduction_102 +happyReduction_102 happy_x_3 happy_x_2 happy_x_1 = case happyOut51 happy_x_2 of { happy_var_2 -> @@ -1354,8 +1338,8 @@ happyReduction_104 happy_x_3 (EList happy_var_2 )} -happyReduce_105 = happyReduce 5# 40# happyReduction_105 -happyReduction_105 (happy_x_5 `HappyStk` +happyReduce_103 = happyReduce 5# 40# happyReduction_103 +happyReduction_103 (happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` @@ -1367,48 +1351,48 @@ happyReduction_105 (happy_x_5 `HappyStk` (ETuple happy_var_2 happy_var_4 ) `HappyStk` happyRest}} -happyReduce_106 = happySpecReduce_1 40# happyReduction_106 -happyReduction_106 happy_x_1 +happyReduce_104 = happySpecReduce_1 40# happyReduction_104 +happyReduction_104 happy_x_1 = case happyOut5 happy_x_1 of { happy_var_1 -> happyIn45 (EVar happy_var_1 )} -happyReduce_107 = happySpecReduce_1 40# happyReduction_107 -happyReduction_107 happy_x_1 +happyReduce_105 = happySpecReduce_1 40# happyReduction_105 +happyReduction_105 happy_x_1 = happyIn45 (EType ) -happyReduce_108 = happySpecReduce_1 40# happyReduction_108 -happyReduction_108 happy_x_1 +happyReduce_106 = happySpecReduce_1 40# happyReduction_106 +happyReduction_106 happy_x_1 = case happyOut6 happy_x_1 of { happy_var_1 -> happyIn45 (EStr happy_var_1 )} -happyReduce_109 = happySpecReduce_1 40# happyReduction_109 -happyReduction_109 happy_x_1 +happyReduce_107 = happySpecReduce_1 40# happyReduction_107 +happyReduction_107 happy_x_1 = case happyOut7 happy_x_1 of { happy_var_1 -> happyIn45 (EInteger happy_var_1 )} -happyReduce_110 = happySpecReduce_1 40# happyReduction_110 -happyReduction_110 happy_x_1 +happyReduce_108 = happySpecReduce_1 40# happyReduction_108 +happyReduction_108 happy_x_1 = case happyOut8 happy_x_1 of { happy_var_1 -> happyIn45 (EDouble happy_var_1 )} -happyReduce_111 = happySpecReduce_1 40# happyReduction_111 -happyReduction_111 happy_x_1 +happyReduce_109 = happySpecReduce_1 40# happyReduction_109 +happyReduction_109 happy_x_1 = happyIn45 (EMeta ) -happyReduce_112 = happySpecReduce_3 40# happyReduction_112 -happyReduction_112 happy_x_3 +happyReduce_110 = happySpecReduce_3 40# happyReduction_110 +happyReduction_110 happy_x_3 happy_x_2 happy_x_1 = case happyOut26 happy_x_2 of { happy_var_2 -> @@ -1416,8 +1400,8 @@ happyReduction_112 happy_x_3 (happy_var_2 )} -happyReduce_113 = happySpecReduce_3 41# happyReduction_113 -happyReduction_113 happy_x_3 +happyReduce_111 = happySpecReduce_3 41# happyReduction_111 +happyReduction_111 happy_x_3 happy_x_2 happy_x_1 = case happyOut5 happy_x_1 of { happy_var_1 -> @@ -1426,20 +1410,20 @@ happyReduction_113 happy_x_3 (FieldType happy_var_1 happy_var_3 )}} -happyReduce_114 = happySpecReduce_0 42# happyReduction_114 -happyReduction_114 = happyIn47 +happyReduce_112 = happySpecReduce_0 42# happyReduction_112 +happyReduction_112 = happyIn47 ([] ) -happyReduce_115 = happySpecReduce_1 42# happyReduction_115 -happyReduction_115 happy_x_1 +happyReduce_113 = happySpecReduce_1 42# happyReduction_113 +happyReduction_113 happy_x_1 = case happyOut46 happy_x_1 of { happy_var_1 -> happyIn47 ((:[]) happy_var_1 )} -happyReduce_116 = happySpecReduce_3 42# happyReduction_116 -happyReduction_116 happy_x_3 +happyReduce_114 = happySpecReduce_3 42# happyReduction_114 +happyReduction_114 happy_x_3 happy_x_2 happy_x_1 = case happyOut46 happy_x_1 of { happy_var_1 -> @@ -1448,8 +1432,8 @@ happyReduction_116 happy_x_3 ((:) happy_var_1 happy_var_3 )}} -happyReduce_117 = happySpecReduce_3 43# happyReduction_117 -happyReduction_117 happy_x_3 +happyReduce_115 = happySpecReduce_3 43# happyReduction_115 +happyReduction_115 happy_x_3 happy_x_2 happy_x_1 = case happyOut5 happy_x_1 of { happy_var_1 -> @@ -1458,20 +1442,20 @@ happyReduction_117 happy_x_3 (FieldValue happy_var_1 happy_var_3 )}} -happyReduce_118 = happySpecReduce_0 44# happyReduction_118 -happyReduction_118 = happyIn49 +happyReduce_116 = happySpecReduce_0 44# happyReduction_116 +happyReduction_116 = happyIn49 ([] ) -happyReduce_119 = happySpecReduce_1 44# happyReduction_119 -happyReduction_119 happy_x_1 +happyReduce_117 = happySpecReduce_1 44# happyReduction_117 +happyReduction_117 happy_x_1 = case happyOut48 happy_x_1 of { happy_var_1 -> happyIn49 ((:[]) happy_var_1 )} -happyReduce_120 = happySpecReduce_3 44# happyReduction_120 -happyReduction_120 happy_x_3 +happyReduce_118 = happySpecReduce_3 44# happyReduction_118 +happyReduction_118 happy_x_3 happy_x_2 happy_x_1 = case happyOut48 happy_x_1 of { happy_var_1 -> @@ -1480,22 +1464,22 @@ happyReduction_120 happy_x_3 ((:) happy_var_1 happy_var_3 )}} -happyReduce_121 = happySpecReduce_1 45# happyReduction_121 -happyReduction_121 happy_x_1 +happyReduce_119 = happySpecReduce_1 45# happyReduction_119 +happyReduction_119 happy_x_1 = case happyOut35 happy_x_1 of { happy_var_1 -> happyIn50 (happy_var_1 )} -happyReduce_122 = happySpecReduce_1 46# happyReduction_122 -happyReduction_122 happy_x_1 +happyReduce_120 = happySpecReduce_1 46# happyReduction_120 +happyReduction_120 happy_x_1 = case happyOut26 happy_x_1 of { happy_var_1 -> happyIn51 ((:[]) happy_var_1 )} -happyReduce_123 = happySpecReduce_3 46# happyReduction_123 -happyReduction_123 happy_x_3 +happyReduce_121 = happySpecReduce_3 46# happyReduction_121 +happyReduction_121 happy_x_3 happy_x_2 happy_x_1 = case happyOut26 happy_x_1 of { happy_var_1 -> diff --git a/src/Transfer/Syntax/Par.y b/src/Transfer/Syntax/Par.y index 61a2788ef..9504268f6 100644 --- a/src/Transfer/Syntax/Par.y +++ b/src/Transfer/Syntax/Par.y @@ -78,7 +78,7 @@ Integer :: { Integer } : L_integ { (read $1) :: Integer } Double :: { Double } : L_doubl { (read $1) :: Double } Module :: { Module } -Module : ListImport ListDecl { Module $1 $2 } +Module : ListImport ListDecl { Module (reverse $1) (reverse $2) } Import :: { Import } @@ -87,8 +87,7 @@ Import : 'import' Ident { Import $2 } ListImport :: { [Import] } ListImport : {- empty -} { [] } - | Import { (:[]) $1 } - | Import ';' ListImport { (:) $1 $3 } + | ListImport Import ';' { flip (:) $1 $2 } Decl :: { Decl } @@ -100,8 +99,7 @@ Decl : 'data' Ident ':' Exp 'where' '{' ListConsDecl '}' { DataDecl $2 $4 $7 } ListDecl :: { [Decl] } ListDecl : {- empty -} { [] } - | Decl { (:[]) $1 } - | Decl ';' ListDecl { (:) $1 $3 } + | ListDecl Decl ';' { flip (:) $1 $2 } ConsDecl :: { ConsDecl } diff --git a/src/Transfer/Syntax/Print.hs b/src/Transfer/Syntax/Print.hs index 101ec29eb..fc0bab0fe 100644 --- a/src/Transfer/Syntax/Print.hs +++ b/src/Transfer/Syntax/Print.hs @@ -154,12 +154,10 @@ instance Print (Tree c) where instance Print [Import] where prt _ es = case es of [] -> (concatD []) - [x] -> (concatD [prt 0 x]) x:xs -> (concatD [prt 0 x , doc (showString ";") , prt 0 xs]) instance Print [Decl] where prt _ es = case es of [] -> (concatD []) - [x] -> (concatD [prt 0 x]) x:xs -> (concatD [prt 0 x , doc (showString ";") , prt 0 xs]) instance Print [ConsDecl] where prt _ es = case es of diff --git a/src/Transfer/Syntax/Syntax.cf b/src/Transfer/Syntax/Syntax.cf index b38dd115f..1b8f8cb4e 100644 --- a/src/Transfer/Syntax/Syntax.cf +++ b/src/Transfer/Syntax/Syntax.cf @@ -10,13 +10,16 @@ comment "{-" "-}" ; Module. Module ::= [Import] [Decl] ; Import. Import ::= "import" Ident ; -separator Import ";" ; +-- FIXME: this is terminator to ensure that the pretty printer +-- produces a semicolon after the last import. This could cause +-- problems in a program which only does imports and uses layout syntax. +terminator Import ";" ; DataDecl. Decl ::= "data" Ident ":" Exp "where" "{" [ConsDecl] "}" ; TypeDecl. Decl ::= Ident ":" Exp ; ValueDecl. Decl ::= Ident [Pattern] Guard "=" Exp ; DeriveDecl. Decl ::= "derive" Ident Ident ; -separator Decl ";" ; +terminator Decl ";" ; ConsDecl. ConsDecl ::= Ident ":" Exp ; separator ConsDecl ";" ;