diff --git a/Epic/CodegenC.lhs b/Epic/CodegenC.lhs
--- a/Epic/CodegenC.lhs
+++ b/Epic/CodegenC.lhs
@@ -1,3 +1,4 @@
+> {-#LANGUAGE FlexibleContexts#-}
 > module Epic.CodegenC where
 
 > import Control.Monad.State
@@ -98,10 +99,11 @@
 >       if (x>max) then put x else return ()
 
 >    cgs [] = return ""
+
 >    cgs (x:xs) = do xc <- cg x
 >                    xsc <- cgs xs
 >                    return $ xc ++ "\n" ++ xsc
-
+>    cg::  (MonadState Int m) => ByteOp -> m [Char]
 >    cg (CALL t fn args) = return $ tmp t ++ " = " ++ quickcall fn ++ 
 >                          targs "(" args ++ ");"
 >    cg (TAILCALL t fn args) 
diff --git a/Epic/Epic.lhs b/Epic/Epic.lhs
--- a/Epic/Epic.lhs
+++ b/Epic/Epic.lhs
@@ -448,6 +448,8 @@
 
 > -- | Top level declarations
 > data EpicDecl = forall e. EpicFn e => EpicFn Name e -- ^ Normal function
+>               | forall e. EpicFn e => EpicExportFn Name Type [Type] String e 
+>                                          -- ^ exported to C
 >               | EpicExt Name Int  -- ^ Epic function defined in a separate .o
 >               | Include String -- ^ Include a C header
 >               | Link String    -- ^ Link to a C library
@@ -467,6 +469,10 @@
 
 > mkDecl :: EpicDecl -> Decl
 > mkDecl (EpicFn n e) = Decl n TyAny (mkFunc e) Nothing []
+> mkDecl (EpicExportFn n rty tys cname e)
+>                     = Decl n rty (updateArgTys (mkFunc e)) (Just cname) []
+>   where updateArgTys (Bind args l d f) 
+>             = Bind (zip (map fst args) tys) l d f
 > mkDecl (EpicExt nm arity) 
 >     = Epic.Language.Extern nm TyAny (take arity (repeat TyAny))
 > mkDecl (Epic.Epic.Include f) = Epic.Language.Include f
diff --git a/Epic/Language.lhs b/Epic/Language.lhs
--- a/Epic/Language.lhs
+++ b/Epic/Language.lhs
@@ -1,9 +1,14 @@
-> {-# LANGUAGE FlexibleInstances, MultiParamTypeClasses,
+> {-# LANGUAGE FlexibleInstances, MultiParamTypeClasses,CPP,
 > FunctionalDependencies #-}
 
 > module Epic.Language where
 
 > import Control.Monad
+#if MIN_VERSION_base(4,6,0)
+> import Control.Exception.Base
+#endif
+
+
 > import System.IO
 > import System.Directory
 > import System.Environment
@@ -379,7 +384,14 @@
 > environment :: String -> IO (Maybe String)
 > environment x = catch (do e <- getEnv x
 >                           return (Just e))
->                       (\_ -> return Nothing)
+#if MIN_VERSION_base(4,6,0)
+>                           (\y-> do return (y::SomeException);  return Nothing)  
+#endif
+> 
+#if !MIN_VERSION_base(4,6,0)
+>                           (\_->  return Nothing)  
+#endif  
+
 
 Some tests
 
diff --git a/dist/build/Epic/Parser.hs b/dist/build/Epic/Parser.hs
--- a/dist/build/Epic/Parser.hs
+++ b/dist/build/Epic/Parser.hs
@@ -11,8 +11,9 @@
 import Epic.Lexer
 import qualified Data.Array as Happy_Data_Array
 import qualified GHC.Exts as Happy_GHC_Exts
+import Control.Applicative(Applicative(..))
 
--- parser produced by Happy Version 1.18.6
+-- parser produced by Happy Version 1.19.4
 
 newtype HappyAbsSyn  = HappyAbsSyn HappyAny
 #if __GLASGOW_HASKELL__ >= 607
@@ -1325,7 +1326,8 @@
 	_ -> happyError' tk
 	})
 
-happyError_ tk = happyError' tk
+happyError_ 88# tk = happyError' tk
+happyError_ _ tk = happyError' tk
 
 happyThen :: () => P a -> (a -> P b) -> P b
 happyThen = (thenP)
@@ -1375,20 +1377,36 @@
 {-# LINE 1 "templates/GenericTemplate.hs" #-}
 -- Id: GenericTemplate.hs,v 1.26 2005/01/14 14:47:22 simonmar Exp 
 
-{-# LINE 30 "templates/GenericTemplate.hs" #-}
+{-# LINE 13 "templates/GenericTemplate.hs" #-}
 
 
+
+
+
+-- Do not remove this comment. Required to fix CPP parsing when using GCC and a clang-compiled alex.
+#if __GLASGOW_HASKELL__ > 706
+#define LT(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.<# m)) :: Bool)
+#define GTE(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.>=# m)) :: Bool)
+#define EQ(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.==# m)) :: Bool)
+#else
+#define LT(n,m) (n Happy_GHC_Exts.<# m)
+#define GTE(n,m) (n Happy_GHC_Exts.>=# m)
+#define EQ(n,m) (n Happy_GHC_Exts.==# m)
+#endif
+{-# LINE 46 "templates/GenericTemplate.hs" #-}
+
+
 data Happy_IntList = HappyCons Happy_GHC_Exts.Int# Happy_IntList
 
 
 
 
 
-{-# LINE 51 "templates/GenericTemplate.hs" #-}
+{-# LINE 67 "templates/GenericTemplate.hs" #-}
 
-{-# LINE 61 "templates/GenericTemplate.hs" #-}
+{-# LINE 77 "templates/GenericTemplate.hs" #-}
 
-{-# LINE 70 "templates/GenericTemplate.hs" #-}
+{-# LINE 86 "templates/GenericTemplate.hs" #-}
 
 infixr 9 `HappyStk`
 data HappyStk a = HappyStk a (HappyStk a)
@@ -1405,9 +1423,9 @@
 -- parse (a %partial parser).  We must ignore the saved token on the top of
 -- the stack in this case.
 happyAccept 0# tk st sts (_ `HappyStk` ans `HappyStk` _) =
-	happyReturn1 ans
+        happyReturn1 ans
 happyAccept j tk st sts (HappyStk ans _) = 
-	(happyTcHack j (happyTcHack st)) (happyReturn1 ans)
+        (happyTcHack j (happyTcHack st)) (happyReturn1 ans)
 
 -----------------------------------------------------------------------------
 -- Arrays only: do the next action
@@ -1415,37 +1433,35 @@
 
 
 happyDoAction i tk st
-	= {- nothing -}
+        = {- nothing -}
 
 
-	  case action of
-		0#		  -> {- nothing -}
-				     happyFail i tk st
-		-1# 	  -> {- nothing -}
-				     happyAccept i tk st
-		n | (n Happy_GHC_Exts.<# (0# :: Happy_GHC_Exts.Int#)) -> {- nothing -}
+          case action of
+                0#           -> {- nothing -}
+                                     happyFail i tk st
+                -1#          -> {- nothing -}
+                                     happyAccept i tk st
+                n | LT(n,(0# :: Happy_GHC_Exts.Int#)) -> {- nothing -}
 
-				     (happyReduceArr Happy_Data_Array.! rule) i tk st
-				     where rule = (Happy_GHC_Exts.I# ((Happy_GHC_Exts.negateInt# ((n Happy_GHC_Exts.+# (1# :: Happy_GHC_Exts.Int#))))))
-		n		  -> {- nothing -}
+                                                   (happyReduceArr Happy_Data_Array.! rule) i tk st
+                                                   where rule = (Happy_GHC_Exts.I# ((Happy_GHC_Exts.negateInt# ((n Happy_GHC_Exts.+# (1# :: Happy_GHC_Exts.Int#))))))
+                n                 -> {- nothing -}
 
 
-				     happyShift new_state i tk st
-				     where (new_state) = (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#))
-   where (off)    = indexShortOffAddr happyActOffsets st
-         (off_i)  = (off Happy_GHC_Exts.+# i)
-	 check  = if (off_i Happy_GHC_Exts.>=# (0# :: Happy_GHC_Exts.Int#))
-			then (indexShortOffAddr happyCheck off_i Happy_GHC_Exts.==#  i)
-			else False
-         (action)
+                                     happyShift new_state i tk st
+                                     where new_state = (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#))
+   where off    = indexShortOffAddr happyActOffsets st
+         off_i  = (off Happy_GHC_Exts.+# i)
+         check  = if GTE(off_i,(0# :: Happy_GHC_Exts.Int#))
+                  then EQ(indexShortOffAddr happyCheck off_i, i)
+                  else False
+         action
           | check     = indexShortOffAddr happyTable off_i
           | otherwise = indexShortOffAddr happyDefActions st
 
-{-# LINE 130 "templates/GenericTemplate.hs" #-}
 
-
 indexShortOffAddr (HappyA# arr) off =
-	Happy_GHC_Exts.narrow16Int# i
+        Happy_GHC_Exts.narrow16Int# i
   where
         i = Happy_GHC_Exts.word2Int# (Happy_GHC_Exts.or# (Happy_GHC_Exts.uncheckedShiftL# high 8#) low)
         high = Happy_GHC_Exts.int2Word# (Happy_GHC_Exts.ord# (Happy_GHC_Exts.indexCharOffAddr# arr (off' Happy_GHC_Exts.+# 1#)))
@@ -1464,13 +1480,13 @@
 -----------------------------------------------------------------------------
 -- HappyState data type (not arrays)
 
-{-# LINE 163 "templates/GenericTemplate.hs" #-}
+{-# LINE 170 "templates/GenericTemplate.hs" #-}
 
 -----------------------------------------------------------------------------
 -- Shifting a token
 
 happyShift new_state 0# tk st sts stk@(x `HappyStk` _) =
-     let (i) = (case Happy_GHC_Exts.unsafeCoerce# x of { (Happy_GHC_Exts.I# (i)) -> i }) in
+     let i = (case Happy_GHC_Exts.unsafeCoerce# x of { (Happy_GHC_Exts.I# (i)) -> i }) in
 --     trace "shifting the error token" $
      happyDoAction i tk new_state (HappyCons (st) (sts)) (stk)
 
@@ -1506,30 +1522,33 @@
      = happyFail 0# tk st sts stk
 happyReduce k nt fn j tk st sts stk
      = case happyDrop (k Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) sts of
-	 sts1@((HappyCons (st1@(action)) (_))) ->
-        	let r = fn stk in  -- it doesn't hurt to always seq here...
-       		happyDoSeq r (happyGoto nt j tk st1 sts1 r)
+         sts1@((HappyCons (st1@(action)) (_))) ->
+                let r = fn stk in  -- it doesn't hurt to always seq here...
+                happyDoSeq r (happyGoto nt j tk st1 sts1 r)
 
 happyMonadReduce k nt fn 0# tk st sts stk
      = happyFail 0# tk st sts stk
 happyMonadReduce k nt fn j tk st sts stk =
-        happyThen1 (fn stk tk) (\r -> happyGoto nt j tk st1 sts1 (r `HappyStk` drop_stk))
-       where (sts1@((HappyCons (st1@(action)) (_)))) = happyDrop k (HappyCons (st) (sts))
-             drop_stk = happyDropStk k stk
+      case happyDrop k (HappyCons (st) (sts)) of
+        sts1@((HappyCons (st1@(action)) (_))) ->
+          let drop_stk = happyDropStk k stk in
+          happyThen1 (fn stk tk) (\r -> happyGoto nt j tk st1 sts1 (r `HappyStk` drop_stk))
 
 happyMonad2Reduce k nt fn 0# tk st sts stk
      = happyFail 0# tk st sts stk
 happyMonad2Reduce k nt fn j tk st sts stk =
-       happyThen1 (fn stk tk) (\r -> happyNewToken new_state sts1 (r `HappyStk` drop_stk))
-       where (sts1@((HappyCons (st1@(action)) (_)))) = happyDrop k (HappyCons (st) (sts))
-             drop_stk = happyDropStk k stk
+      case happyDrop k (HappyCons (st) (sts)) of
+        sts1@((HappyCons (st1@(action)) (_))) ->
+         let drop_stk = happyDropStk k stk
 
-             (off) = indexShortOffAddr happyGotoOffsets st1
-             (off_i) = (off Happy_GHC_Exts.+# nt)
-             (new_state) = indexShortOffAddr happyTable off_i
+             off = indexShortOffAddr happyGotoOffsets st1
+             off_i = (off Happy_GHC_Exts.+# nt)
+             new_state = indexShortOffAddr happyTable off_i
 
 
 
+          in
+          happyThen1 (fn stk tk) (\r -> happyNewToken new_state sts1 (r `HappyStk` drop_stk))
 
 happyDrop 0# l = l
 happyDrop n (HappyCons (_) (t)) = happyDrop (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) t
@@ -1544,9 +1563,9 @@
 happyGoto nt j tk st = 
    {- nothing -}
    happyDoAction j tk new_state
-   where (off) = indexShortOffAddr happyGotoOffsets st
-         (off_i) = (off Happy_GHC_Exts.+# nt)
-         (new_state) = indexShortOffAddr happyTable off_i
+   where off = indexShortOffAddr happyGotoOffsets st
+         off_i = (off Happy_GHC_Exts.+# nt)
+         new_state = indexShortOffAddr happyTable off_i
 
 
 
@@ -1555,9 +1574,10 @@
 -- Error recovery (0# is the error token)
 
 -- parse error if we are in recovery and we fail again
-happyFail  0# tk old_st _ stk =
---	trace "failing" $ 
-    	happyError_ tk
+happyFail 0# tk old_st _ stk@(x `HappyStk` _) =
+     let i = (case Happy_GHC_Exts.unsafeCoerce# x of { (Happy_GHC_Exts.I# (i)) -> i }) in
+--      trace "failing" $ 
+        happyError_ i tk
 
 {-  We don't need state discarding for our restricted implementation of
     "error".  In fact, it can cause some bogus parses, so I've disabled it
@@ -1565,16 +1585,16 @@
 
 -- discard a state
 happyFail  0# tk old_st (HappyCons ((action)) (sts)) 
-						(saved_tok `HappyStk` _ `HappyStk` stk) =
---	trace ("discarding state, depth " ++ show (length stk))  $
-	happyDoAction 0# tk action sts ((saved_tok`HappyStk`stk))
+                                                (saved_tok `HappyStk` _ `HappyStk` stk) =
+--      trace ("discarding state, depth " ++ show (length stk))  $
+        happyDoAction 0# tk action sts ((saved_tok`HappyStk`stk))
 -}
 
 -- Enter error recovery: generate an error token,
 --                       save the old token and carry on.
 happyFail  i tk (action) sts stk =
 --      trace "entering error recovery" $
-	happyDoAction 0# tk action sts ( (Happy_GHC_Exts.unsafeCoerce# (Happy_GHC_Exts.I# (i))) `HappyStk` stk)
+        happyDoAction 0# tk action sts ( (Happy_GHC_Exts.unsafeCoerce# (Happy_GHC_Exts.I# (i))) `HappyStk` stk)
 
 -- Internal happy errors:
 
@@ -1592,9 +1612,9 @@
 
 -----------------------------------------------------------------------------
 -- Seq-ing.  If the --strict flag is given, then Happy emits 
---	happySeq = happyDoSeq
+--      happySeq = happyDoSeq
 -- otherwise it emits
--- 	happySeq = happyDontSeq
+--      happySeq = happyDontSeq
 
 happyDoSeq, happyDontSeq :: a -> b -> b
 happyDoSeq   a b = a `seq` b
diff --git a/dist/build/Epic/epic-tmp/Epic/Parser.hs b/dist/build/Epic/epic-tmp/Epic/Parser.hs
deleted file mode 100644
--- a/dist/build/Epic/epic-tmp/Epic/Parser.hs
+++ /dev/null
@@ -1,1626 +0,0 @@
-{-# OPTIONS_GHC -w #-}
-{-# OPTIONS -fglasgow-exts -cpp #-}
--- -*-Haskell-*-
-
-module Epic.Parser where
-
-import Data.Char
-import System.IO.Unsafe
-
-import Epic.Language
-import Epic.Lexer
-import qualified Data.Array as Happy_Data_Array
-import qualified GHC.Exts as Happy_GHC_Exts
-
--- parser produced by Happy Version 1.18.6
-
-newtype HappyAbsSyn  = HappyAbsSyn HappyAny
-#if __GLASGOW_HASKELL__ >= 607
-type HappyAny = Happy_GHC_Exts.Any
-#else
-type HappyAny = forall a . a
-#endif
-happyIn6 :: ([Decl]) -> (HappyAbsSyn )
-happyIn6 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn6 #-}
-happyOut6 :: (HappyAbsSyn ) -> ([Decl])
-happyOut6 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut6 #-}
-happyIn7 :: (Type) -> (HappyAbsSyn )
-happyIn7 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn7 #-}
-happyOut7 :: (HappyAbsSyn ) -> (Type)
-happyOut7 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut7 #-}
-happyIn8 :: (Decl) -> (HappyAbsSyn )
-happyIn8 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn8 #-}
-happyOut8 :: (HappyAbsSyn ) -> (Decl)
-happyOut8 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut8 #-}
-happyIn9 :: ([CGFlag]) -> (HappyAbsSyn )
-happyIn9 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn9 #-}
-happyOut9 :: (HappyAbsSyn ) -> ([CGFlag])
-happyOut9 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut9 #-}
-happyIn10 :: (CGFlag) -> (HappyAbsSyn )
-happyIn10 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn10 #-}
-happyOut10 :: (HappyAbsSyn ) -> (CGFlag)
-happyOut10 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut10 #-}
-happyIn11 :: (Maybe String) -> (HappyAbsSyn )
-happyIn11 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn11 #-}
-happyOut11 :: (HappyAbsSyn ) -> (Maybe String)
-happyOut11 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut11 #-}
-happyIn12 :: ([(Name,Type)]) -> (HappyAbsSyn )
-happyIn12 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn12 #-}
-happyOut12 :: (HappyAbsSyn ) -> ([(Name,Type)])
-happyOut12 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut12 #-}
-happyIn13 :: (Expr) -> (HappyAbsSyn )
-happyIn13 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn13 #-}
-happyOut13 :: (HappyAbsSyn ) -> (Expr)
-happyOut13 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut13 #-}
-happyIn14 :: (Allocator) -> (HappyAbsSyn )
-happyIn14 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn14 #-}
-happyOut14 :: (HappyAbsSyn ) -> (Allocator)
-happyOut14 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut14 #-}
-happyIn15 :: (Expr) -> (HappyAbsSyn )
-happyIn15 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn15 #-}
-happyOut15 :: (HappyAbsSyn ) -> (Expr)
-happyOut15 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut15 #-}
-happyIn16 :: ([CaseAlt]) -> (HappyAbsSyn )
-happyIn16 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn16 #-}
-happyOut16 :: (HappyAbsSyn ) -> ([CaseAlt])
-happyOut16 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut16 #-}
-happyIn17 :: (CaseAlt) -> (HappyAbsSyn )
-happyIn17 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn17 #-}
-happyOut17 :: (HappyAbsSyn ) -> (CaseAlt)
-happyOut17 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut17 #-}
-happyIn18 :: (Expr) -> (HappyAbsSyn )
-happyIn18 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn18 #-}
-happyOut18 :: (HappyAbsSyn ) -> (Expr)
-happyOut18 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut18 #-}
-happyIn19 :: ([Expr]) -> (HappyAbsSyn )
-happyIn19 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn19 #-}
-happyOut19 :: (HappyAbsSyn ) -> ([Expr])
-happyOut19 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut19 #-}
-happyIn20 :: ([(Expr,Type)]) -> (HappyAbsSyn )
-happyIn20 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn20 #-}
-happyOut20 :: (HappyAbsSyn ) -> ([(Expr,Type)])
-happyOut20 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut20 #-}
-happyIn21 :: (Const) -> (HappyAbsSyn )
-happyIn21 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn21 #-}
-happyOut21 :: (HappyAbsSyn ) -> (Const)
-happyOut21 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut21 #-}
-happyIn22 :: (LineNumber) -> (HappyAbsSyn )
-happyIn22 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn22 #-}
-happyOut22 :: (HappyAbsSyn ) -> (LineNumber)
-happyOut22 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut22 #-}
-happyIn23 :: (String) -> (HappyAbsSyn )
-happyIn23 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn23 #-}
-happyOut23 :: (HappyAbsSyn ) -> (String)
-happyOut23 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut23 #-}
-happyInTok :: (Token) -> (HappyAbsSyn )
-happyInTok x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyInTok #-}
-happyOutTok :: (HappyAbsSyn ) -> (Token)
-happyOutTok x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOutTok #-}
-
-
-happyActOffsets :: HappyAddr
-happyActOffsets = HappyA# "\x87\x03\x01\x00\xda\x00\xda\x00\x00\x00\xe2\xff\x62\x02\x58\x02\x56\x02\x55\x02\xfa\x01\x92\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\x42\x02\x09\x00\x01\x00\x01\x00\x0d\x02\x0c\x02\x00\x00\x0f\x00\x0b\x02\x0a\x02\x36\x00\x31\x02\x00\x00\x01\x00\x01\x00\x01\x00\x01\x00\x25\x02\xc4\x01\x82\x02\x19\x02\x87\x03\x00\x00\xd0\x01\xd3\xff\xd3\xff\x50\x01\xe6\x01\x27\x02\x00\x00\x12\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x02\xcf\x01\xce\x01\x00\x00\x01\x00\x01\x00\x36\x00\x01\x00\x7a\x00\x01\x00\x4c\x00\x21\x00\xb1\x01\xf9\x01\xb0\x01\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\xe5\x01\x01\x00\x00\x00\x00\x00\xaf\x01\x00\x00\xdb\x01\xe2\xff\x00\x00\x00\x00\x00\x00\x9e\x01\xc1\x01\x7b\x02\x00\x00\x97\x02\x97\x02\x97\x02\x97\x02\xaf\x02\xaf\x02\x97\x02\x97\x02\x5f\x02\x97\x02\x97\x02\x5f\x02\xd3\xff\xd3\xff\xc0\x02\xc0\x02\xd3\xff\xd3\xff\xd3\xff\xc0\x02\xc0\x02\x92\x01\x01\x00\x82\x01\x36\x00\x90\x01\x01\x00\x34\x01\x6d\x01\x00\x00\x00\x00\x08\x02\xa1\x01\xe9\x01\xca\x01\x36\x00\x36\x00\x00\x00\x74\x01\x00\x00\x00\x00\x01\x00\x36\x00\x00\x00\x00\x00\x5e\x01\x00\x00\x01\x00\x72\x01\x71\x01\x00\x00\x00\x00\x5f\x01\x00\x00\x01\x00\x01\x00\x76\x00\x0b\x00\x5d\x01\x01\x00\x54\x01\x00\x00\x53\x01\x27\x01\x66\x01\x37\x01\x36\x00\x04\x01\x00\x00\xdd\x00\x01\x00\x19\x01\xfd\x00\xe8\x00\x24\x01\xc9\x00\x01\x00\xfc\x00\x18\x01\x01\x00\x00\x00\x00\x00\xab\x01\xdf\x00\x01\x00\x43\x02\x00\x00\x36\x00\xd7\x00\x01\x00\x00\x00\x01\x00\x43\x02\x01\x00\xc8\x00\x01\x00\x0b\x00\x00\x00\xb9\x00\x01\x00\x36\x00\x9c\x00\x90\x00\x36\x00\xdb\x00\x00\x00\x43\x02\x01\x00\x00\x00\x43\x02\xdb\x00\x43\x02\x8f\x01\x70\x01\x00\x00\x82\x00\x01\x00\x00\x00\x00\x00\x94\x00\x43\x02\x00\x00\x5e\x00\x01\x00\xc6\xff\x00\x00\x01\x00\x43\x02\x43\x02\x00\x00"#
-
-happyGotoOffsets :: HappyAddr
-happyGotoOffsets = HappyA# "\x6f\x00\xc9\x03\x25\x00\x16\x00\x00\x00\xe0\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\xc8\x03\xbf\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb2\x00\x00\x00\x00\x00\xbe\x03\xd9\x00\xb5\x03\xb4\x03\x00\x00\x00\x00\x4e\x00\x00\x00\x11\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\xab\x03\xaa\x03\xa7\x00\xa1\x03\x9d\x00\xa0\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9a\x00\x97\x03\x96\x03\x8d\x03\x8c\x03\x83\x03\x82\x03\x79\x03\x78\x03\x6f\x03\x6e\x03\x65\x03\x64\x03\x5b\x03\x5a\x03\x51\x03\x50\x03\x47\x03\x46\x03\x3d\x03\x3c\x03\x33\x03\x00\x00\x32\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\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\x93\x00\x00\x00\x98\x00\x00\x00\x29\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x88\x00\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x00\x77\x00\xfb\xff\x00\x00\x00\x00\x00\x00\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x03\x1f\x03\x00\x00\xe1\x00\x00\x00\x1e\x03\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x5d\x00\x00\x00\x00\x00\x00\x00\x15\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x03\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x03\x00\x00\x00\x00\x51\x00\x00\x00\x0a\x03\x00\x00\x01\x03\x00\x00\x00\x03\x00\x00\xf7\x02\xba\x00\x00\x00\x00\x00\xf6\x02\x3b\x00\x00\x00\x00\x00\x33\x00\x2b\x00\x00\x00\x00\x00\xe6\x02\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00"#
-
-happyDefActions :: HappyAddr
-happyDefActions = HappyA# "\xe2\xff\x00\x00\xe2\xff\x00\x00\x00\x00\xe6\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcb\xff\xca\xff\xd5\xff\xdd\xff\x99\xff\x9f\xff\x9e\xff\x9c\xff\x9b\xff\x9a\xff\x9d\xff\x98\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x00\x00\xa5\xff\x00\x00\x00\x00\x00\x00\x00\x00\xe2\xff\x00\x00\xe2\xff\xfb\xff\x00\x00\xb4\xff\xba\xff\xa4\xff\x00\x00\x00\x00\xc9\xff\x00\x00\xf9\xff\xf8\xff\xf7\xff\xf6\xff\xf5\xff\xf4\xff\xf3\xff\xf2\xff\xf1\xff\xeb\xff\xef\xff\x00\x00\x00\x00\x00\x00\xf0\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa5\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe7\xff\xe1\xff\x00\x00\xe8\xff\x00\x00\xe6\xff\xe3\xff\xe4\xff\xe5\xff\x00\x00\xe0\xff\xd0\xff\xd4\xff\xa9\xff\xaa\xff\xae\xff\xaf\xff\xb0\xff\xb1\xff\xa7\xff\xa8\xff\xa6\xff\xac\xff\xad\xff\xab\xff\xb2\xff\xb3\xff\xb5\xff\xb6\xff\xb7\xff\xb8\xff\xb9\xff\xbb\xff\xbc\xff\x00\x00\xa5\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc5\xff\xc4\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xee\xff\x00\x00\xdc\xff\xda\xff\xa5\xff\x00\x00\x95\xff\xfa\xff\x00\x00\xa3\xff\xa2\xff\x00\x00\x00\x00\xd7\xff\xd8\xff\x00\x00\xd9\xff\x00\x00\x00\x00\x00\x00\xc2\xff\x00\x00\x00\x00\x00\x00\xdb\xff\x00\x00\x00\x00\xe0\xff\x00\x00\x00\x00\x00\x00\xd6\xff\x00\x00\x00\x00\x00\x00\xc1\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\xff\xec\xff\xed\xff\x00\x00\x00\x00\x00\x00\xd1\xff\xc7\xff\x00\x00\x00\x00\x00\x00\xce\xff\x00\x00\xcf\xff\x00\x00\x00\x00\x00\x00\xc2\xff\xc3\xff\x00\x00\x00\x00\x00\x00\xdf\xff\x00\x00\x00\x00\xe0\xff\xe9\xff\xd2\xff\x00\x00\xc0\xff\xbe\xff\xe0\xff\xbd\xff\x00\x00\x00\x00\xc6\xff\xa1\xff\xa2\xff\xcc\xff\xcd\xff\x00\x00\xd3\xff\xde\xff\x00\x00\x00\x00\x00\x00\xa0\xff\x00\x00\xea\xff\xbf\xff"#
-
-happyCheck :: HappyAddr
-happyCheck = HappyA# "\xff\xff\x2e\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x01\x00\x29\x00\x11\x00\x07\x00\x03\x00\x09\x00\x06\x00\x00\x00\x0c\x00\x02\x00\x0e\x00\x0f\x00\x05\x00\x51\x00\x02\x00\x18\x00\x19\x00\x05\x00\x1b\x00\x1c\x00\x4b\x00\x1e\x00\x03\x00\x04\x00\x21\x00\x22\x00\x19\x00\x1a\x00\x25\x00\x02\x00\x27\x00\x28\x00\x05\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x07\x00\x06\x00\x09\x00\x32\x00\x01\x00\x0c\x00\x35\x00\x0e\x00\x0f\x00\x57\x00\x2b\x00\x3a\x00\x01\x00\x2e\x00\x1d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x00\x00\x2e\x00\x02\x00\x50\x00\x01\x00\x05\x00\x4b\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x01\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x1f\x00\x4b\x00\x4c\x00\x07\x00\x00\x00\x09\x00\x02\x00\x06\x00\x0c\x00\x05\x00\x0e\x00\x0f\x00\x07\x00\x01\x00\x09\x00\x2e\x00\x06\x00\x0c\x00\x0d\x00\x01\x00\x0f\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x01\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x20\x00\x4b\x00\x4c\x00\x01\x00\x07\x00\x3d\x00\x09\x00\x23\x00\x24\x00\x0c\x00\x0d\x00\x07\x00\x0f\x00\x09\x00\x2e\x00\x08\x00\x0c\x00\x0d\x00\x01\x00\x0f\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x01\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x2e\x00\x4b\x00\x4c\x00\x2f\x00\x0a\x00\x0b\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x4d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x01\x00\x4b\x00\x4c\x00\x26\x00\x07\x00\x51\x00\x09\x00\x03\x00\x04\x00\x0c\x00\x0d\x00\x2e\x00\x0f\x00\x4d\x00\x58\x00\x0a\x00\x0b\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x2e\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x26\x00\x4b\x00\x4c\x00\x2f\x00\x07\x00\x07\x00\x09\x00\x09\x00\x2e\x00\x0c\x00\x0c\x00\x2f\x00\x0f\x00\x0f\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x51\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x03\x00\x4b\x00\x4c\x00\x2e\x00\x2f\x00\x52\x00\x53\x00\x54\x00\x55\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x51\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x2e\x00\x4b\x00\x4c\x00\x4d\x00\x31\x00\x4e\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x51\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x2e\x00\x4b\x00\x4c\x00\x4d\x00\x2f\x00\x01\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x4a\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x2e\x00\x4b\x00\x4c\x00\x4d\x00\x2f\x00\x2f\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x2e\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x3d\x00\x4b\x00\x4c\x00\x4d\x00\x2e\x00\x2f\x00\x2f\x00\x2f\x00\x2e\x00\x02\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x4f\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4d\x00\x4b\x00\x4c\x00\x2e\x00\x2f\x00\x3d\x00\x30\x00\x2f\x00\x01\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x2e\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x2e\x00\x4b\x00\x4c\x00\x01\x00\x2e\x00\x2e\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x03\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x2e\x00\x2f\x00\x01\x00\x4a\x00\x2e\x00\x2e\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x02\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x02\x00\x4b\x00\x4c\x00\x2e\x00\x2f\x00\x33\x00\x4a\x00\x02\x00\x58\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x01\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x02\x00\x4b\x00\x4c\x00\x2e\x00\x2f\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x03\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x58\x00\x4b\x00\x4c\x00\x2e\x00\x2f\x00\x02\x00\x02\x00\x01\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x02\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x2e\x00\x4b\x00\x4c\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\xff\xff\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x2e\x00\x4b\x00\x4c\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\xff\xff\xff\xff\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x2e\x00\x4b\x00\x4c\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\xff\xff\xff\xff\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x2e\x00\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\x58\x00\x44\x00\x45\x00\x2e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4b\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\xff\xff\x07\x00\x2e\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x36\x00\x37\x00\x38\x00\xff\xff\x4b\x00\x3b\x00\x3c\x00\x07\x00\x07\x00\x09\x00\x09\x00\xff\xff\x0c\x00\x0c\x00\xff\xff\x0f\x00\x0f\x00\x07\x00\x07\x00\x09\x00\x09\x00\x4b\x00\x0c\x00\x0c\x00\xff\xff\x0f\x00\x0f\x00\x07\x00\x07\x00\x09\x00\x09\x00\xff\xff\x0c\x00\x0c\x00\xff\xff\x0f\x00\x0f\x00\x07\x00\x07\x00\x09\x00\x09\x00\xff\xff\x0c\x00\x0c\x00\xff\xff\x0f\x00\x0f\x00\x07\x00\x07\x00\x09\x00\x09\x00\xff\xff\x0c\x00\x0c\x00\xff\xff\x0f\x00\x0f\x00\x07\x00\x07\x00\x09\x00\x09\x00\xff\xff\x0c\x00\x0c\x00\xff\xff\x0f\x00\x0f\x00\x07\x00\x07\x00\x09\x00\x09\x00\xff\xff\x0c\x00\x0c\x00\xff\xff\x0f\x00\x0f\x00\x07\x00\x07\x00\x09\x00\x09\x00\xff\xff\x0c\x00\x0c\x00\xff\xff\x0f\x00\x0f\x00\x07\x00\x07\x00\x09\x00\x09\x00\xff\xff\x0c\x00\x0c\x00\xff\xff\x0f\x00\x0f\x00\x07\x00\x07\x00\x09\x00\x09\x00\xff\xff\x0c\x00\x0c\x00\xff\xff\x0f\x00\x0f\x00\x07\x00\x07\x00\x09\x00\x09\x00\xff\xff\x0c\x00\x0c\x00\xff\xff\x0f\x00\x0f\x00\x07\x00\x07\x00\x09\x00\x09\x00\xff\xff\x0c\x00\x0c\x00\xff\xff\x0f\x00\x0f\x00\x07\x00\x07\x00\x09\x00\x09\x00\xff\xff\x0c\x00\x0c\x00\xff\xff\x0f\x00\x0f\x00\x07\x00\x07\x00\x09\x00\x09\x00\xff\xff\x0c\x00\x0c\x00\xff\xff\x0f\x00\x0f\x00\x07\x00\x07\x00\x09\x00\x09\x00\xff\xff\x0c\x00\x0c\x00\xff\xff\x0f\x00\x0f\x00\x07\x00\x07\x00\x09\x00\x09\x00\xff\xff\x0c\x00\x0c\x00\xff\xff\x0f\x00\x0f\x00\x07\x00\x07\x00\x09\x00\x09\x00\xff\xff\x0c\x00\x0c\x00\xff\xff\x0f\x00\x0f\x00\x07\x00\x07\x00\x09\x00\x09\x00\xff\xff\x0c\x00\x0c\x00\xff\xff\x0f\x00\x0f\x00\x07\x00\x07\x00\x09\x00\x09\x00\xff\xff\x0c\x00\x0c\x00\xff\xff\x0f\x00\x0f\x00\x07\x00\x07\x00\x09\x00\x09\x00\xff\xff\x0c\x00\x0c\x00\xff\xff\x0f\x00\x0f\x00\x07\x00\x07\x00\x09\x00\x09\x00\xff\xff\x0c\x00\x0c\x00\xff\xff\x0f\x00\x0f\x00\x07\x00\x07\x00\x09\x00\x09\x00\xff\xff\x0c\x00\x0c\x00\xff\xff\x0f\x00\x0f\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\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\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\x52\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x4f\x00\x70\x00\xa2\x00\xc8\x00\xc0\x00\x0c\x00\xed\x00\xa1\x00\x0d\x00\x2b\x00\xf3\x00\x0e\x00\x05\x00\xf5\x00\x04\x00\x18\x00\x19\x00\x05\x00\x1a\x00\x1b\x00\x68\x00\x1c\x00\x71\x00\x6e\x00\x1d\x00\x1e\x00\xc1\x00\xc2\x00\x1f\x00\x0a\x00\x20\x00\x21\x00\x05\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\xc8\x00\xef\x00\x0c\x00\x27\x00\xf0\x00\x0d\x00\x28\x00\xce\x00\x0e\x00\x71\x00\x49\x00\x29\x00\xdf\x00\x4a\x00\x90\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x2e\x00\x52\x00\x2b\x00\x2a\x00\xe9\x00\x05\x00\x50\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xdb\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x91\x00\x68\x00\x69\x00\xc8\x00\x2a\x00\x0c\x00\x2b\x00\xb7\x00\x0d\x00\x05\x00\xc9\x00\x0e\x00\x32\x00\xa3\x00\x0c\x00\x52\x00\xb4\x00\x0d\x00\xa4\x00\xa6\x00\x0e\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xa7\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\xc3\x00\x68\x00\x69\x00\xb0\x00\x32\x00\xf2\x00\x0c\x00\x94\x00\x95\x00\x0d\x00\xb2\x00\x32\x00\x0e\x00\x0c\x00\x52\x00\x92\x00\x0d\x00\x8b\x00\x96\x00\x0e\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x36\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x52\x00\x68\x00\x69\x00\xf3\x00\xe2\x00\xbe\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xeb\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\xb6\x00\x68\x00\x69\x00\xe2\x00\x32\x00\xde\x00\x0c\x00\x6d\x00\x6e\x00\x0d\x00\x33\x00\x52\x00\x0e\x00\xdf\x00\xff\xff\xbd\x00\xbe\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xe5\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\xda\x00\x68\x00\x69\x00\xe9\x00\xf6\x00\xf5\x00\x0c\x00\x0c\x00\x52\x00\x0d\x00\x0d\x00\xcd\x00\x0e\x00\x0e\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xd4\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\xd5\x00\x68\x00\x69\x00\x52\x00\xd1\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xd6\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x52\x00\x68\x00\x69\x00\xd2\x00\xd8\x00\xd7\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xdb\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x52\x00\x68\x00\x69\x00\xd0\x00\xdd\x00\xb6\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xb9\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x52\x00\x68\x00\x69\x00\xae\x00\xba\x00\xbb\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xc6\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\xbd\x00\x68\x00\x69\x00\xa0\x00\x52\x00\xec\x00\xc7\x00\xc8\x00\xa6\x00\xab\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xcb\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\xad\x00\x68\x00\x69\x00\x52\x00\xed\x00\xb2\x00\xb0\x00\xb4\x00\xb6\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xb7\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x52\x00\x68\x00\x69\x00\x73\x00\x74\x00\x8d\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x76\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\xce\x00\x68\x00\x69\x00\x52\x00\xa9\x00\x8e\x00\x8f\x00\x9a\x00\x9b\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x9c\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x9d\x00\x68\x00\x69\x00\x52\x00\xaa\x00\x9f\x00\xa1\x00\x2e\x00\xff\xff\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x30\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x36\x00\x68\x00\x69\x00\x52\x00\xac\x00\x47\x00\x48\x00\x4b\x00\x4c\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x51\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\xff\xff\x68\x00\x69\x00\x52\x00\x9e\x00\x6a\x00\x6b\x00\x6c\x00\x00\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x6d\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x52\x00\x68\x00\x69\x00\x00\x00\x00\x00\x00\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x00\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x52\x00\x68\x00\x69\x00\x00\x00\x00\x00\x00\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x00\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x52\x00\x68\x00\x69\x00\x00\x00\x00\x00\x00\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x00\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x52\x00\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x2d\x00\x00\x00\xfc\xff\x62\x00\x63\x00\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x00\x00\xee\x00\x52\x00\x0c\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x0e\x00\x55\x00\x56\x00\x57\x00\x00\x00\x68\x00\x5a\x00\x5b\x00\xe0\x00\xe3\x00\x0c\x00\x0c\x00\x00\x00\x0d\x00\x0d\x00\x00\x00\x0e\x00\x0e\x00\xe5\x00\xe6\x00\x0c\x00\x0c\x00\x68\x00\x0d\x00\x0d\x00\x00\x00\x0e\x00\x0e\x00\xe7\x00\xcb\x00\x0c\x00\x0c\x00\x00\x00\x0d\x00\x0d\x00\x00\x00\x0e\x00\x0e\x00\xd2\x00\xd8\x00\x0c\x00\x0c\x00\x00\x00\x0d\x00\x0d\x00\x00\x00\x0e\x00\x0e\x00\xbb\x00\xc3\x00\x0c\x00\x0c\x00\x00\x00\x0d\x00\x0d\x00\x00\x00\x0e\x00\x0e\x00\xc4\x00\xae\x00\x0c\x00\x0c\x00\x00\x00\x0d\x00\x0d\x00\x00\x00\x0e\x00\x0e\x00\x74\x00\x76\x00\x0c\x00\x0c\x00\x00\x00\x0d\x00\x0d\x00\x00\x00\x0e\x00\x0e\x00\x77\x00\x78\x00\x0c\x00\x0c\x00\x00\x00\x0d\x00\x0d\x00\x00\x00\x0e\x00\x0e\x00\x79\x00\x7a\x00\x0c\x00\x0c\x00\x00\x00\x0d\x00\x0d\x00\x00\x00\x0e\x00\x0e\x00\x7b\x00\x7c\x00\x0c\x00\x0c\x00\x00\x00\x0d\x00\x0d\x00\x00\x00\x0e\x00\x0e\x00\x7d\x00\x7e\x00\x0c\x00\x0c\x00\x00\x00\x0d\x00\x0d\x00\x00\x00\x0e\x00\x0e\x00\x7f\x00\x80\x00\x0c\x00\x0c\x00\x00\x00\x0d\x00\x0d\x00\x00\x00\x0e\x00\x0e\x00\x81\x00\x82\x00\x0c\x00\x0c\x00\x00\x00\x0d\x00\x0d\x00\x00\x00\x0e\x00\x0e\x00\x83\x00\x84\x00\x0c\x00\x0c\x00\x00\x00\x0d\x00\x0d\x00\x00\x00\x0e\x00\x0e\x00\x85\x00\x86\x00\x0c\x00\x0c\x00\x00\x00\x0d\x00\x0d\x00\x00\x00\x0e\x00\x0e\x00\x87\x00\x88\x00\x0c\x00\x0c\x00\x00\x00\x0d\x00\x0d\x00\x00\x00\x0e\x00\x0e\x00\x89\x00\x8a\x00\x0c\x00\x0c\x00\x00\x00\x0d\x00\x0d\x00\x00\x00\x0e\x00\x0e\x00\x91\x00\x95\x00\x0c\x00\x0c\x00\x00\x00\x0d\x00\x0d\x00\x00\x00\x0e\x00\x0e\x00\x97\x00\x98\x00\x0c\x00\x0c\x00\x00\x00\x0d\x00\x0d\x00\x00\x00\x0e\x00\x0e\x00\x30\x00\x31\x00\x0c\x00\x0c\x00\x00\x00\x0d\x00\x0d\x00\x00\x00\x0e\x00\x0e\x00\x34\x00\x4c\x00\x0c\x00\x0c\x00\x00\x00\x0d\x00\x0d\x00\x00\x00\x0e\x00\x0e\x00\x4d\x00\x0b\x00\x0c\x00\x0c\x00\x00\x00\x0d\x00\x0d\x00\x00\x00\x0e\x00\x0e\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x2d\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\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 = Happy_Data_Array.array (3, 106) [
-	(3 , happyReduce_3),
-	(4 , happyReduce_4),
-	(5 , happyReduce_5),
-	(6 , happyReduce_6),
-	(7 , happyReduce_7),
-	(8 , happyReduce_8),
-	(9 , happyReduce_9),
-	(10 , happyReduce_10),
-	(11 , happyReduce_11),
-	(12 , happyReduce_12),
-	(13 , happyReduce_13),
-	(14 , happyReduce_14),
-	(15 , happyReduce_15),
-	(16 , happyReduce_16),
-	(17 , happyReduce_17),
-	(18 , happyReduce_18),
-	(19 , happyReduce_19),
-	(20 , happyReduce_20),
-	(21 , happyReduce_21),
-	(22 , happyReduce_22),
-	(23 , happyReduce_23),
-	(24 , happyReduce_24),
-	(25 , happyReduce_25),
-	(26 , happyReduce_26),
-	(27 , happyReduce_27),
-	(28 , happyReduce_28),
-	(29 , happyReduce_29),
-	(30 , happyReduce_30),
-	(31 , happyReduce_31),
-	(32 , happyReduce_32),
-	(33 , happyReduce_33),
-	(34 , happyReduce_34),
-	(35 , happyReduce_35),
-	(36 , happyReduce_36),
-	(37 , happyReduce_37),
-	(38 , happyReduce_38),
-	(39 , happyReduce_39),
-	(40 , happyReduce_40),
-	(41 , happyReduce_41),
-	(42 , happyReduce_42),
-	(43 , happyReduce_43),
-	(44 , happyReduce_44),
-	(45 , happyReduce_45),
-	(46 , happyReduce_46),
-	(47 , happyReduce_47),
-	(48 , happyReduce_48),
-	(49 , happyReduce_49),
-	(50 , happyReduce_50),
-	(51 , happyReduce_51),
-	(52 , happyReduce_52),
-	(53 , happyReduce_53),
-	(54 , happyReduce_54),
-	(55 , happyReduce_55),
-	(56 , happyReduce_56),
-	(57 , happyReduce_57),
-	(58 , happyReduce_58),
-	(59 , happyReduce_59),
-	(60 , happyReduce_60),
-	(61 , happyReduce_61),
-	(62 , happyReduce_62),
-	(63 , happyReduce_63),
-	(64 , happyReduce_64),
-	(65 , happyReduce_65),
-	(66 , happyReduce_66),
-	(67 , happyReduce_67),
-	(68 , happyReduce_68),
-	(69 , happyReduce_69),
-	(70 , happyReduce_70),
-	(71 , happyReduce_71),
-	(72 , happyReduce_72),
-	(73 , happyReduce_73),
-	(74 , happyReduce_74),
-	(75 , happyReduce_75),
-	(76 , happyReduce_76),
-	(77 , happyReduce_77),
-	(78 , happyReduce_78),
-	(79 , happyReduce_79),
-	(80 , happyReduce_80),
-	(81 , happyReduce_81),
-	(82 , happyReduce_82),
-	(83 , happyReduce_83),
-	(84 , happyReduce_84),
-	(85 , happyReduce_85),
-	(86 , happyReduce_86),
-	(87 , happyReduce_87),
-	(88 , happyReduce_88),
-	(89 , happyReduce_89),
-	(90 , happyReduce_90),
-	(91 , happyReduce_91),
-	(92 , happyReduce_92),
-	(93 , happyReduce_93),
-	(94 , happyReduce_94),
-	(95 , happyReduce_95),
-	(96 , happyReduce_96),
-	(97 , happyReduce_97),
-	(98 , happyReduce_98),
-	(99 , happyReduce_99),
-	(100 , happyReduce_100),
-	(101 , happyReduce_101),
-	(102 , happyReduce_102),
-	(103 , happyReduce_103),
-	(104 , happyReduce_104),
-	(105 , happyReduce_105),
-	(106 , happyReduce_106)
-	]
-
-happy_n_terms = 89 :: Int
-happy_n_nonterms = 18 :: Int
-
-happyReduce_3 = happySpecReduce_1  0# happyReduction_3
-happyReduction_3 happy_x_1
-	 =  case happyOut8 happy_x_1 of { happy_var_1 -> 
-	happyIn6
-		 ([happy_var_1]
-	)}
-
-happyReduce_4 = happySpecReduce_2  0# happyReduction_4
-happyReduction_4 happy_x_2
-	happy_x_1
-	 =  case happyOut8 happy_x_1 of { happy_var_1 -> 
-	case happyOut6 happy_x_2 of { happy_var_2 -> 
-	happyIn6
-		 (happy_var_1:happy_var_2
-	)}}
-
-happyReduce_5 = happyMonadReduce 4# 0# happyReduction_5
-happyReduction_5 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOutTok happy_x_2 of { (TokenString happy_var_2) -> 
-	case happyOut6 happy_x_3 of { happy_var_3 -> 
-	case happyOut23 happy_x_4 of { happy_var_4 -> 
-	(
- 	   let rest = happy_var_3 in
-	   let pt = unsafePerformIO (readFile happy_var_2) in
-		case (parse pt happy_var_4) of
-		   Success x -> returnP (x ++ rest)
-		   Failure err file ln -> failP err)}}}
-	) (\r -> happyReturn (happyIn6 r))
-
-happyReduce_6 = happySpecReduce_1  1# happyReduction_6
-happyReduction_6 happy_x_1
-	 =  happyIn7
-		 (TyInt
-	)
-
-happyReduce_7 = happySpecReduce_1  1# happyReduction_7
-happyReduction_7 happy_x_1
-	 =  happyIn7
-		 (TyBigInt
-	)
-
-happyReduce_8 = happySpecReduce_1  1# happyReduction_8
-happyReduction_8 happy_x_1
-	 =  happyIn7
-		 (TyChar
-	)
-
-happyReduce_9 = happySpecReduce_1  1# happyReduction_9
-happyReduction_9 happy_x_1
-	 =  happyIn7
-		 (TyBool
-	)
-
-happyReduce_10 = happySpecReduce_1  1# happyReduction_10
-happyReduction_10 happy_x_1
-	 =  happyIn7
-		 (TyFloat
-	)
-
-happyReduce_11 = happySpecReduce_1  1# happyReduction_11
-happyReduction_11 happy_x_1
-	 =  happyIn7
-		 (TyBigFloat
-	)
-
-happyReduce_12 = happySpecReduce_1  1# happyReduction_12
-happyReduction_12 happy_x_1
-	 =  happyIn7
-		 (TyString
-	)
-
-happyReduce_13 = happySpecReduce_1  1# happyReduction_13
-happyReduction_13 happy_x_1
-	 =  happyIn7
-		 (TyPtr
-	)
-
-happyReduce_14 = happySpecReduce_1  1# happyReduction_14
-happyReduction_14 happy_x_1
-	 =  happyIn7
-		 (TyUnit
-	)
-
-happyReduce_15 = happySpecReduce_1  1# happyReduction_15
-happyReduction_15 happy_x_1
-	 =  happyIn7
-		 (TyAny
-	)
-
-happyReduce_16 = happySpecReduce_1  1# happyReduction_16
-happyReduction_16 happy_x_1
-	 =  happyIn7
-		 (TyData
-	)
-
-happyReduce_17 = happySpecReduce_2  1# happyReduction_17
-happyReduction_17 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_2 of { (TokenString happy_var_2) -> 
-	happyIn7
-		 (TyCType happy_var_2
-	)}
-
-happyReduce_18 = happyReduce 4# 1# happyReduction_18
-happyReduction_18 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut7 happy_x_3 of { happy_var_3 -> 
-	happyIn7
-		 (TyLin happy_var_3
-	) `HappyStk` happyRest}
-
-happyReduce_19 = happyReduce 4# 1# happyReduction_19
-happyReduction_19 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut7 happy_x_3 of { happy_var_3 -> 
-	happyIn7
-		 (TyEval happy_var_3
-	) `HappyStk` happyRest}
-
-happyReduce_20 = happySpecReduce_1  1# happyReduction_20
-happyReduction_20 happy_x_1
-	 =  happyIn7
-		 (TyFun
-	)
-
-happyReduce_21 = happyReduce 10# 2# happyReduction_21
-happyReduction_21 (happy_x_10 `HappyStk`
-	happy_x_9 `HappyStk`
-	happy_x_8 `HappyStk`
-	happy_x_7 `HappyStk`
-	happy_x_6 `HappyStk`
-	happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut11 happy_x_1 of { happy_var_1 -> 
-	case happyOut9 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (TokenName happy_var_3) -> 
-	case happyOut12 happy_x_5 of { happy_var_5 -> 
-	case happyOut7 happy_x_8 of { happy_var_8 -> 
-	case happyOut13 happy_x_10 of { happy_var_10 -> 
-	happyIn8
-		 (mkBind happy_var_3 (map snd happy_var_5) happy_var_8 (map fst happy_var_5) happy_var_10 happy_var_1 happy_var_2
-	) `HappyStk` happyRest}}}}}}
-
-happyReduce_22 = happyReduce 7# 2# happyReduction_22
-happyReduction_22 (happy_x_7 `HappyStk`
-	happy_x_6 `HappyStk`
-	happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_2 of { (TokenName happy_var_2) -> 
-	case happyOut12 happy_x_4 of { happy_var_4 -> 
-	case happyOut7 happy_x_7 of { happy_var_7 -> 
-	happyIn8
-		 (mkExtern happy_var_2 (map snd happy_var_4) happy_var_7 (map fst happy_var_4)
-	) `HappyStk` happyRest}}}
-
-happyReduce_23 = happySpecReduce_2  2# happyReduction_23
-happyReduction_23 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_2 of { (TokenString happy_var_2) -> 
-	happyIn8
-		 (Include happy_var_2
-	)}
-
-happyReduce_24 = happySpecReduce_2  2# happyReduction_24
-happyReduction_24 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_2 of { (TokenString happy_var_2) -> 
-	happyIn8
-		 (CType happy_var_2
-	)}
-
-happyReduce_25 = happySpecReduce_0  3# happyReduction_25
-happyReduction_25  =  happyIn9
-		 ([]
-	)
-
-happyReduce_26 = happySpecReduce_2  3# happyReduction_26
-happyReduction_26 happy_x_2
-	happy_x_1
-	 =  case happyOut10 happy_x_1 of { happy_var_1 -> 
-	case happyOut9 happy_x_2 of { happy_var_2 -> 
-	happyIn9
-		 (happy_var_1:happy_var_2
-	)}}
-
-happyReduce_27 = happySpecReduce_1  4# happyReduction_27
-happyReduction_27 happy_x_1
-	 =  happyIn10
-		 (Inline
-	)
-
-happyReduce_28 = happySpecReduce_1  4# happyReduction_28
-happyReduction_28 happy_x_1
-	 =  happyIn10
-		 (Strict
-	)
-
-happyReduce_29 = happySpecReduce_0  5# happyReduction_29
-happyReduction_29  =  happyIn11
-		 (Nothing
-	)
-
-happyReduce_30 = happySpecReduce_2  5# happyReduction_30
-happyReduction_30 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_2 of { (TokenString happy_var_2) -> 
-	happyIn11
-		 (Just happy_var_2
-	)}
-
-happyReduce_31 = happySpecReduce_0  6# happyReduction_31
-happyReduction_31  =  happyIn12
-		 ([]
-	)
-
-happyReduce_32 = happySpecReduce_3  6# happyReduction_32
-happyReduction_32 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokenName happy_var_1) -> 
-	case happyOut7 happy_x_3 of { happy_var_3 -> 
-	happyIn12
-		 ([(happy_var_1,happy_var_3)]
-	)}}
-
-happyReduce_33 = happyReduce 5# 6# happyReduction_33
-happyReduction_33 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (TokenName happy_var_1) -> 
-	case happyOut7 happy_x_3 of { happy_var_3 -> 
-	case happyOut12 happy_x_5 of { happy_var_5 -> 
-	happyIn12
-		 ((happy_var_1,happy_var_3):happy_var_5
-	) `HappyStk` happyRest}}}
-
-happyReduce_34 = happySpecReduce_1  7# happyReduction_34
-happyReduction_34 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokenName happy_var_1) -> 
-	happyIn13
-		 (R happy_var_1
-	)}
-
-happyReduce_35 = happySpecReduce_3  7# happyReduction_35
-happyReduction_35 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut13 happy_x_2 of { happy_var_2 -> 
-	happyIn13
-		 (happy_var_2
-	)}
-
-happyReduce_36 = happyReduce 4# 7# happyReduction_36
-happyReduction_36 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut13 happy_x_1 of { happy_var_1 -> 
-	case happyOut19 happy_x_3 of { happy_var_3 -> 
-	happyIn13
-		 (App happy_var_1 happy_var_3
-	) `HappyStk` happyRest}}
-
-happyReduce_37 = happySpecReduce_3  7# happyReduction_37
-happyReduction_37 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut19 happy_x_2 of { happy_var_2 -> 
-	happyIn13
-		 (Con 0 happy_var_2
-	)}
-
-happyReduce_38 = happyReduce 4# 7# happyReduction_38
-happyReduction_38 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut13 happy_x_3 of { happy_var_3 -> 
-	happyIn13
-		 (Lazy happy_var_3
-	) `HappyStk` happyRest}
-
-happyReduce_39 = happyReduce 4# 7# happyReduction_39
-happyReduction_39 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut13 happy_x_3 of { happy_var_3 -> 
-	happyIn13
-		 (Par happy_var_3
-	) `HappyStk` happyRest}
-
-happyReduce_40 = happyReduce 4# 7# happyReduction_40
-happyReduction_40 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut13 happy_x_3 of { happy_var_3 -> 
-	happyIn13
-		 (Effect happy_var_3
-	) `HappyStk` happyRest}
-
-happyReduce_41 = happyReduce 5# 7# happyReduction_41
-happyReduction_41 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_2 of { (TokenInt happy_var_2) -> 
-	case happyOut19 happy_x_4 of { happy_var_4 -> 
-	happyIn13
-		 (Con happy_var_2 happy_var_4
-	) `HappyStk` happyRest}}
-
-happyReduce_42 = happySpecReduce_1  7# happyReduction_42
-happyReduction_42 happy_x_1
-	 =  case happyOut21 happy_x_1 of { happy_var_1 -> 
-	happyIn13
-		 (Const happy_var_1
-	)}
-
-happyReduce_43 = happySpecReduce_3  7# happyReduction_43
-happyReduction_43 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_3 of { (TokenInt happy_var_3) -> 
-	happyIn13
-		 (Proj happy_var_1 happy_var_3
-	)}}
-
-happyReduce_44 = happyReduce 8# 7# happyReduction_44
-happyReduction_44 (happy_x_8 `HappyStk`
-	happy_x_7 `HappyStk`
-	happy_x_6 `HappyStk`
-	happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_2 of { (TokenName happy_var_2) -> 
-	case happyOut7 happy_x_4 of { happy_var_4 -> 
-	case happyOut13 happy_x_6 of { happy_var_6 -> 
-	case happyOut13 happy_x_8 of { happy_var_8 -> 
-	happyIn13
-		 (Let happy_var_2 happy_var_4 happy_var_6 happy_var_8
-	) `HappyStk` happyRest}}}}
-
-happyReduce_45 = happyReduce 7# 7# happyReduction_45
-happyReduction_45 (happy_x_7 `HappyStk`
-	happy_x_6 `HappyStk`
-	happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_3 of { (TokenName happy_var_3) -> 
-	case happyOut13 happy_x_5 of { happy_var_5 -> 
-	case happyOut13 happy_x_7 of { happy_var_7 -> 
-	happyIn13
-		 (LetM happy_var_3 happy_var_5 happy_var_7
-	) `HappyStk` happyRest}}}
-
-happyReduce_46 = happyReduce 6# 7# happyReduction_46
-happyReduction_46 (happy_x_6 `HappyStk`
-	happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_2 of { (TokenName happy_var_2) -> 
-	case happyOut7 happy_x_4 of { happy_var_4 -> 
-	case happyOut13 happy_x_6 of { happy_var_6 -> 
-	happyIn13
-		 (Lam happy_var_2 happy_var_4 happy_var_6
-	) `HappyStk` happyRest}}}
-
-happyReduce_47 = happySpecReduce_3  7# happyReduction_47
-happyReduction_47 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
-	case happyOut13 happy_x_3 of { happy_var_3 -> 
-	happyIn13
-		 (Let (MN "unused" 0) TyUnit happy_var_1 happy_var_3
-	)}}
-
-happyReduce_48 = happyReduce 6# 7# happyReduction_48
-happyReduction_48 (happy_x_6 `HappyStk`
-	happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut13 happy_x_2 of { happy_var_2 -> 
-	case happyOut13 happy_x_4 of { happy_var_4 -> 
-	case happyOut13 happy_x_6 of { happy_var_6 -> 
-	happyIn13
-		 (If happy_var_2 happy_var_4 happy_var_6
-	) `HappyStk` happyRest}}}
-
-happyReduce_49 = happyReduce 6# 7# happyReduction_49
-happyReduction_49 (happy_x_6 `HappyStk`
-	happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut13 happy_x_3 of { happy_var_3 -> 
-	case happyOut13 happy_x_5 of { happy_var_5 -> 
-	happyIn13
-		 (While happy_var_3 happy_var_5
-	) `HappyStk` happyRest}}
-
-happyReduce_50 = happyReduce 8# 7# happyReduction_50
-happyReduction_50 (happy_x_8 `HappyStk`
-	happy_x_7 `HappyStk`
-	happy_x_6 `HappyStk`
-	happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut13 happy_x_3 of { happy_var_3 -> 
-	case happyOut13 happy_x_5 of { happy_var_5 -> 
-	case happyOut13 happy_x_7 of { happy_var_7 -> 
-	happyIn13
-		 (WhileAcc happy_var_3 happy_var_5 happy_var_7
-	) `HappyStk` happyRest}}}
-
-happyReduce_51 = happyReduce 8# 7# happyReduction_51
-happyReduction_51 (happy_x_8 `HappyStk`
-	happy_x_7 `HappyStk`
-	happy_x_6 `HappyStk`
-	happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut14 happy_x_3 of { happy_var_3 -> 
-	case happyOut13 happy_x_5 of { happy_var_5 -> 
-	case happyOut13 happy_x_7 of { happy_var_7 -> 
-	happyIn13
-		 (WithMem happy_var_3 happy_var_5 happy_var_7
-	) `HappyStk` happyRest}}}
-
-happyReduce_52 = happySpecReduce_1  7# happyReduction_52
-happyReduction_52 happy_x_1
-	 =  case happyOut15 happy_x_1 of { happy_var_1 -> 
-	happyIn13
-		 (happy_var_1
-	)}
-
-happyReduce_53 = happySpecReduce_1  7# happyReduction_53
-happyReduction_53 happy_x_1
-	 =  case happyOut18 happy_x_1 of { happy_var_1 -> 
-	happyIn13
-		 (happy_var_1
-	)}
-
-happyReduce_54 = happySpecReduce_2  7# happyReduction_54
-happyReduction_54 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_2 of { (TokenString happy_var_2) -> 
-	happyIn13
-		 (Error happy_var_2
-	)}
-
-happyReduce_55 = happySpecReduce_1  7# happyReduction_55
-happyReduction_55 happy_x_1
-	 =  happyIn13
-		 (Impossible
-	)
-
-happyReduce_56 = happyReduce 6# 7# happyReduction_56
-happyReduction_56 (happy_x_6 `HappyStk`
-	happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut7 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (TokenString happy_var_3) -> 
-	case happyOut20 happy_x_5 of { happy_var_5 -> 
-	happyIn13
-		 (ForeignCall happy_var_2 happy_var_3 happy_var_5
-	) `HappyStk` happyRest}}}
-
-happyReduce_57 = happyReduce 7# 7# happyReduction_57
-happyReduction_57 (happy_x_7 `HappyStk`
-	happy_x_6 `HappyStk`
-	happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut7 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (TokenString happy_var_4) -> 
-	case happyOut20 happy_x_6 of { happy_var_6 -> 
-	happyIn13
-		 (LazyForeignCall happy_var_3 happy_var_4 happy_var_6
-	) `HappyStk` happyRest}}}
-
-happyReduce_58 = happySpecReduce_1  8# happyReduction_58
-happyReduction_58 happy_x_1
-	 =  happyIn14
-		 (FixedPool
-	)
-
-happyReduce_59 = happySpecReduce_1  8# happyReduction_59
-happyReduction_59 happy_x_1
-	 =  happyIn14
-		 (GrowablePool
-	)
-
-happyReduce_60 = happyReduce 6# 9# happyReduction_60
-happyReduction_60 (happy_x_6 `HappyStk`
-	happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut13 happy_x_2 of { happy_var_2 -> 
-	case happyOut16 happy_x_5 of { happy_var_5 -> 
-	happyIn15
-		 (Case happy_var_2 happy_var_5
-	) `HappyStk` happyRest}}
-
-happyReduce_61 = happySpecReduce_0  10# happyReduction_61
-happyReduction_61  =  happyIn16
-		 ([]
-	)
-
-happyReduce_62 = happySpecReduce_1  10# happyReduction_62
-happyReduction_62 happy_x_1
-	 =  case happyOut17 happy_x_1 of { happy_var_1 -> 
-	happyIn16
-		 ([happy_var_1]
-	)}
-
-happyReduce_63 = happySpecReduce_3  10# happyReduction_63
-happyReduction_63 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut17 happy_x_1 of { happy_var_1 -> 
-	case happyOut16 happy_x_3 of { happy_var_3 -> 
-	happyIn16
-		 (happy_var_1:happy_var_3
-	)}}
-
-happyReduce_64 = happyReduce 7# 11# happyReduction_64
-happyReduction_64 (happy_x_7 `HappyStk`
-	happy_x_6 `HappyStk`
-	happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_2 of { (TokenInt happy_var_2) -> 
-	case happyOut12 happy_x_4 of { happy_var_4 -> 
-	case happyOut13 happy_x_7 of { happy_var_7 -> 
-	happyIn17
-		 (Alt happy_var_2 happy_var_4 happy_var_7
-	) `HappyStk` happyRest}}}
-
-happyReduce_65 = happySpecReduce_3  11# happyReduction_65
-happyReduction_65 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokenInt happy_var_1) -> 
-	case happyOut13 happy_x_3 of { happy_var_3 -> 
-	happyIn17
-		 (ConstAlt happy_var_1 happy_var_3
-	)}}
-
-happyReduce_66 = happySpecReduce_3  11# happyReduction_66
-happyReduction_66 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut13 happy_x_3 of { happy_var_3 -> 
-	happyIn17
-		 (DefaultCase happy_var_3
-	)}
-
-happyReduce_67 = happySpecReduce_3  12# happyReduction_67
-happyReduction_67 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
-	case happyOut13 happy_x_3 of { happy_var_3 -> 
-	happyIn18
-		 (Op Plus happy_var_1 happy_var_3
-	)}}
-
-happyReduce_68 = happySpecReduce_3  12# happyReduction_68
-happyReduction_68 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
-	case happyOut13 happy_x_3 of { happy_var_3 -> 
-	happyIn18
-		 (Op Minus happy_var_1 happy_var_3
-	)}}
-
-happyReduce_69 = happySpecReduce_2  12# happyReduction_69
-happyReduction_69 happy_x_2
-	happy_x_1
-	 =  case happyOut13 happy_x_2 of { happy_var_2 -> 
-	happyIn18
-		 (Op Minus (Const (MkInt 0)) happy_var_2
-	)}
-
-happyReduce_70 = happySpecReduce_3  12# happyReduction_70
-happyReduction_70 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
-	case happyOut13 happy_x_3 of { happy_var_3 -> 
-	happyIn18
-		 (Op Times happy_var_1 happy_var_3
-	)}}
-
-happyReduce_71 = happySpecReduce_3  12# happyReduction_71
-happyReduction_71 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
-	case happyOut13 happy_x_3 of { happy_var_3 -> 
-	happyIn18
-		 (Op Divide happy_var_1 happy_var_3
-	)}}
-
-happyReduce_72 = happySpecReduce_3  12# happyReduction_72
-happyReduction_72 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
-	case happyOut13 happy_x_3 of { happy_var_3 -> 
-	happyIn18
-		 (Op Modulo happy_var_1 happy_var_3
-	)}}
-
-happyReduce_73 = happySpecReduce_3  12# happyReduction_73
-happyReduction_73 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
-	case happyOut13 happy_x_3 of { happy_var_3 -> 
-	happyIn18
-		 (Op FPlus happy_var_1 happy_var_3
-	)}}
-
-happyReduce_74 = happySpecReduce_3  12# happyReduction_74
-happyReduction_74 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
-	case happyOut13 happy_x_3 of { happy_var_3 -> 
-	happyIn18
-		 (Op FMinus happy_var_1 happy_var_3
-	)}}
-
-happyReduce_75 = happySpecReduce_2  12# happyReduction_75
-happyReduction_75 happy_x_2
-	happy_x_1
-	 =  case happyOut13 happy_x_2 of { happy_var_2 -> 
-	happyIn18
-		 (Op FMinus (Const (MkInt 0)) happy_var_2
-	)}
-
-happyReduce_76 = happySpecReduce_3  12# happyReduction_76
-happyReduction_76 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
-	case happyOut13 happy_x_3 of { happy_var_3 -> 
-	happyIn18
-		 (Op FTimes happy_var_1 happy_var_3
-	)}}
-
-happyReduce_77 = happySpecReduce_3  12# happyReduction_77
-happyReduction_77 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
-	case happyOut13 happy_x_3 of { happy_var_3 -> 
-	happyIn18
-		 (Op FDivide happy_var_1 happy_var_3
-	)}}
-
-happyReduce_78 = happySpecReduce_3  12# happyReduction_78
-happyReduction_78 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
-	case happyOut13 happy_x_3 of { happy_var_3 -> 
-	happyIn18
-		 (Op ShL happy_var_1 happy_var_3
-	)}}
-
-happyReduce_79 = happySpecReduce_3  12# happyReduction_79
-happyReduction_79 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
-	case happyOut13 happy_x_3 of { happy_var_3 -> 
-	happyIn18
-		 (Op ShR happy_var_1 happy_var_3
-	)}}
-
-happyReduce_80 = happySpecReduce_3  12# happyReduction_80
-happyReduction_80 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
-	case happyOut13 happy_x_3 of { happy_var_3 -> 
-	happyIn18
-		 (Op OpLT happy_var_1 happy_var_3
-	)}}
-
-happyReduce_81 = happySpecReduce_3  12# happyReduction_81
-happyReduction_81 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
-	case happyOut13 happy_x_3 of { happy_var_3 -> 
-	happyIn18
-		 (Op OpGT happy_var_1 happy_var_3
-	)}}
-
-happyReduce_82 = happySpecReduce_3  12# happyReduction_82
-happyReduction_82 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
-	case happyOut13 happy_x_3 of { happy_var_3 -> 
-	happyIn18
-		 (Op OpLE happy_var_1 happy_var_3
-	)}}
-
-happyReduce_83 = happySpecReduce_3  12# happyReduction_83
-happyReduction_83 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
-	case happyOut13 happy_x_3 of { happy_var_3 -> 
-	happyIn18
-		 (Op OpGE happy_var_1 happy_var_3
-	)}}
-
-happyReduce_84 = happySpecReduce_3  12# happyReduction_84
-happyReduction_84 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
-	case happyOut13 happy_x_3 of { happy_var_3 -> 
-	happyIn18
-		 (Op OpEQ happy_var_1 happy_var_3
-	)}}
-
-happyReduce_85 = happySpecReduce_3  12# happyReduction_85
-happyReduction_85 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
-	case happyOut13 happy_x_3 of { happy_var_3 -> 
-	happyIn18
-		 (Op OpFLT happy_var_1 happy_var_3
-	)}}
-
-happyReduce_86 = happySpecReduce_3  12# happyReduction_86
-happyReduction_86 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
-	case happyOut13 happy_x_3 of { happy_var_3 -> 
-	happyIn18
-		 (Op OpFGT happy_var_1 happy_var_3
-	)}}
-
-happyReduce_87 = happySpecReduce_3  12# happyReduction_87
-happyReduction_87 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
-	case happyOut13 happy_x_3 of { happy_var_3 -> 
-	happyIn18
-		 (Op OpFLE happy_var_1 happy_var_3
-	)}}
-
-happyReduce_88 = happySpecReduce_3  12# happyReduction_88
-happyReduction_88 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
-	case happyOut13 happy_x_3 of { happy_var_3 -> 
-	happyIn18
-		 (Op OpFGE happy_var_1 happy_var_3
-	)}}
-
-happyReduce_89 = happySpecReduce_3  12# happyReduction_89
-happyReduction_89 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
-	case happyOut13 happy_x_3 of { happy_var_3 -> 
-	happyIn18
-		 (Op OpFEQ happy_var_1 happy_var_3
-	)}}
-
-happyReduce_90 = happySpecReduce_0  13# happyReduction_90
-happyReduction_90  =  happyIn19
-		 ([]
-	)
-
-happyReduce_91 = happySpecReduce_1  13# happyReduction_91
-happyReduction_91 happy_x_1
-	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
-	happyIn19
-		 ([happy_var_1]
-	)}
-
-happyReduce_92 = happySpecReduce_3  13# happyReduction_92
-happyReduction_92 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
-	case happyOut19 happy_x_3 of { happy_var_3 -> 
-	happyIn19
-		 (happy_var_1:happy_var_3
-	)}}
-
-happyReduce_93 = happySpecReduce_0  14# happyReduction_93
-happyReduction_93  =  happyIn20
-		 ([]
-	)
-
-happyReduce_94 = happySpecReduce_3  14# happyReduction_94
-happyReduction_94 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
-	case happyOut7 happy_x_3 of { happy_var_3 -> 
-	happyIn20
-		 ([(happy_var_1,happy_var_3)]
-	)}}
-
-happyReduce_95 = happyReduce 5# 14# happyReduction_95
-happyReduction_95 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut13 happy_x_1 of { happy_var_1 -> 
-	case happyOut7 happy_x_3 of { happy_var_3 -> 
-	case happyOut20 happy_x_5 of { happy_var_5 -> 
-	happyIn20
-		 ((happy_var_1,happy_var_3):happy_var_5
-	) `HappyStk` happyRest}}}
-
-happyReduce_96 = happySpecReduce_1  15# happyReduction_96
-happyReduction_96 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokenInt happy_var_1) -> 
-	happyIn21
-		 (MkInt happy_var_1
-	)}
-
-happyReduce_97 = happySpecReduce_1  15# happyReduction_97
-happyReduction_97 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokenBigInt happy_var_1) -> 
-	happyIn21
-		 (MkBigInt happy_var_1
-	)}
-
-happyReduce_98 = happySpecReduce_1  15# happyReduction_98
-happyReduction_98 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokenChar happy_var_1) -> 
-	happyIn21
-		 (MkChar happy_var_1
-	)}
-
-happyReduce_99 = happySpecReduce_1  15# happyReduction_99
-happyReduction_99 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokenBool happy_var_1) -> 
-	happyIn21
-		 (MkBool happy_var_1
-	)}
-
-happyReduce_100 = happySpecReduce_1  15# happyReduction_100
-happyReduction_100 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokenFloat happy_var_1) -> 
-	happyIn21
-		 (MkFloat happy_var_1
-	)}
-
-happyReduce_101 = happySpecReduce_1  15# happyReduction_101
-happyReduction_101 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokenBigFloat happy_var_1) -> 
-	happyIn21
-		 (MkBigFloat happy_var_1
-	)}
-
-happyReduce_102 = happySpecReduce_1  15# happyReduction_102
-happyReduction_102 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokenString happy_var_1) -> 
-	happyIn21
-		 (MkString happy_var_1
-	)}
-
-happyReduce_103 = happySpecReduce_1  15# happyReduction_103
-happyReduction_103 happy_x_1
-	 =  happyIn21
-		 (MkUnit
-	)
-
-happyReduce_104 = happySpecReduce_1  15# happyReduction_104
-happyReduction_104 happy_x_1
-	 =  happyIn21
-		 (MkUnused
-	)
-
-happyReduce_105 = happyMonadReduce 0# 16# happyReduction_105
-happyReduction_105 (happyRest) tk
-	 = happyThen (( getLineNo)
-	) (\r -> happyReturn (happyIn22 r))
-
-happyReduce_106 = happyMonadReduce 0# 17# happyReduction_106
-happyReduction_106 (happyRest) tk
-	 = happyThen (( getFileName)
-	) (\r -> happyReturn (happyIn23 r))
-
-happyNewToken action sts stk
-	= lexer(\tk -> 
-	let cont i = happyDoAction i tk action sts stk in
-	case tk of {
-	TokenEOF -> happyDoAction 88# tk action sts stk;
-	TokenName happy_dollar_dollar -> cont 1#;
-	TokenString happy_dollar_dollar -> cont 2#;
-	TokenInt happy_dollar_dollar -> cont 3#;
-	TokenBigInt happy_dollar_dollar -> cont 4#;
-	TokenBool happy_dollar_dollar -> cont 5#;
-	TokenFloat happy_dollar_dollar -> cont 6#;
-	TokenBigFloat happy_dollar_dollar -> cont 7#;
-	TokenChar happy_dollar_dollar -> cont 8#;
-	TokenIntType -> cont 9#;
-	TokenBigIntType -> cont 10#;
-	TokenCharType -> cont 11#;
-	TokenBoolType -> cont 12#;
-	TokenFloatType -> cont 13#;
-	TokenBigFloatType -> cont 14#;
-	TokenStringType -> cont 15#;
-	TokenPtrType -> cont 16#;
-	TokenUnitType -> cont 17#;
-	TokenFunType -> cont 18#;
-	TokenDataType -> cont 19#;
-	TokenTyCType -> cont 20#;
-	TokenTyLinear -> cont 21#;
-	TokenTyEval -> cont 22#;
-	TokenAnyType -> cont 23#;
-	TokenUnit -> cont 24#;
-	TokenCon -> cont 25#;
-	TokenDefault -> cont 26#;
-	TokenLet -> cont 27#;
-	TokenCase -> cont 28#;
-	TokenOf -> cont 29#;
-	TokenIf -> cont 30#;
-	TokenThen -> cont 31#;
-	TokenElse -> cont 32#;
-	TokenWhile -> cont 33#;
-	TokenMemory -> cont 34#;
-	TokenFixed -> cont 35#;
-	TokenGrowable -> cont 36#;
-	TokenUnused -> cont 37#;
-	TokenIn -> cont 38#;
-	TokenLazy -> cont 39#;
-	TokenPar -> cont 40#;
-	TokenStrict -> cont 41#;
-	TokenEffect -> cont 42#;
-	TokenForeign -> cont 43#;
-	TokenError -> cont 44#;
-	TokenImpossible -> cont 45#;
-	TokenOB -> cont 46#;
-	TokenCB -> cont 47#;
-	TokenOCB -> cont 48#;
-	TokenCCB -> cont 49#;
-	TokenOSB -> cont 50#;
-	TokenCSB -> cont 51#;
-	TokenPlus -> cont 52#;
-	TokenMinus -> cont 53#;
-	TokenTimes -> cont 54#;
-	TokenDivide -> cont 55#;
-	TokenMod -> cont 56#;
-	TokenFPlus -> cont 57#;
-	TokenFMinus -> cont 58#;
-	TokenFTimes -> cont 59#;
-	TokenFDivide -> cont 60#;
-	TokenEquals -> cont 61#;
-	TokenEQ -> cont 62#;
-	TokenLE -> cont 63#;
-	TokenGE -> cont 64#;
-	TokenFEQ -> cont 65#;
-	TokenFLE -> cont 66#;
-	TokenFGE -> cont 67#;
-	TokenShL -> cont 68#;
-	TokenShR -> cont 69#;
-	TokenLT -> cont 70#;
-	TokenGT -> cont 71#;
-	TokenFLT -> cont 72#;
-	TokenFGT -> cont 73#;
-	TokenColon -> cont 74#;
-	TokenProj -> cont 75#;
-	TokenSemi -> cont 76#;
-	TokenComma -> cont 77#;
-	TokenBar -> cont 78#;
-	TokenDot -> cont 79#;
-	TokenLam -> cont 80#;
-	TokenArrow -> cont 81#;
-	TokenCInclude -> cont 82#;
-	TokenExtern -> cont 83#;
-	TokenExport -> cont 84#;
-	TokenCType -> cont 85#;
-	TokenInclude -> cont 86#;
-	TokenInline -> cont 87#;
-	_ -> happyError' tk
-	})
-
-happyError_ tk = happyError' tk
-
-happyThen :: () => P a -> (a -> P b) -> P b
-happyThen = (thenP)
-happyReturn :: () => a -> P a
-happyReturn = (returnP)
-happyThen1 = happyThen
-happyReturn1 :: () => a -> P a
-happyReturn1 = happyReturn
-happyError' :: () => (Token) -> P a
-happyError' tk = (\token -> happyError) tk
-
-mkparse = happySomeParser where
-  happySomeParser = happyThen (happyParse 0#) (\x -> happyReturn (happyOut6 x))
-
-mkexpr = happySomeParser where
-  happySomeParser = happyThen (happyParse 1#) (\x -> happyReturn (happyOut13 x))
-
-mkdecl = happySomeParser where
-  happySomeParser = happyThen (happyParse 2#) (\x -> happyReturn (happyOut8 x))
-
-happySeq = happyDontSeq
-
-
-mkBind :: Name -> [Type] -> Type -> [Name] -> Expr -> Maybe String -> [CGFlag] -> Decl
-mkBind n tys ret ns expr export fl = Decl n ret (Bind (zip ns tys) 0 expr fl) export fl
-
-mkExtern :: Name -> [Type] -> Type -> [Name] -> Decl
-mkExtern n tys ret ns = Extern n ret tys
-
-parse :: String -> FilePath -> Result [Decl]
-parse s fn = mkparse s fn 1
-
-parseExpr :: String -> Result Expr
-parseExpr s = mkexpr s "[expr]" 1
-
-parseDecl :: String -> Result Decl
-parseDecl s = mkdecl s "[decl]" 1
-
-parseFile :: FilePath -> IO (Result [Decl])
-parseFile fn = do s <- readFile fn
-                  let x = parse s fn
-                  return x
-{-# LINE 1 "templates/GenericTemplate.hs" #-}
-{-# LINE 1 "templates/GenericTemplate.hs" #-}
-{-# LINE 1 "<built-in>" #-}
-{-# LINE 1 "<command-line>" #-}
-{-# LINE 1 "templates/GenericTemplate.hs" #-}
--- Id: GenericTemplate.hs,v 1.26 2005/01/14 14:47:22 simonmar Exp 
-
-{-# LINE 30 "templates/GenericTemplate.hs" #-}
-
-
-data Happy_IntList = HappyCons Happy_GHC_Exts.Int# Happy_IntList
-
-
-
-
-
-{-# LINE 51 "templates/GenericTemplate.hs" #-}
-
-{-# LINE 61 "templates/GenericTemplate.hs" #-}
-
-{-# LINE 70 "templates/GenericTemplate.hs" #-}
-
-infixr 9 `HappyStk`
-data HappyStk a = HappyStk a (HappyStk a)
-
------------------------------------------------------------------------------
--- starting the parse
-
-happyParse start_state = happyNewToken start_state notHappyAtAll notHappyAtAll
-
------------------------------------------------------------------------------
--- Accepting the parse
-
--- If the current token is 0#, it means we've just accepted a partial
--- parse (a %partial parser).  We must ignore the saved token on the top of
--- the stack in this case.
-happyAccept 0# tk st sts (_ `HappyStk` ans `HappyStk` _) =
-	happyReturn1 ans
-happyAccept j tk st sts (HappyStk ans _) = 
-	(happyTcHack j (happyTcHack st)) (happyReturn1 ans)
-
------------------------------------------------------------------------------
--- Arrays only: do the next action
-
-
-
-happyDoAction i tk st
-	= {- nothing -}
-
-
-	  case action of
-		0#		  -> {- nothing -}
-				     happyFail i tk st
-		-1# 	  -> {- nothing -}
-				     happyAccept i tk st
-		n | (n Happy_GHC_Exts.<# (0# :: Happy_GHC_Exts.Int#)) -> {- nothing -}
-
-				     (happyReduceArr Happy_Data_Array.! rule) i tk st
-				     where rule = (Happy_GHC_Exts.I# ((Happy_GHC_Exts.negateInt# ((n Happy_GHC_Exts.+# (1# :: Happy_GHC_Exts.Int#))))))
-		n		  -> {- nothing -}
-
-
-				     happyShift new_state i tk st
-				     where (new_state) = (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#))
-   where (off)    = indexShortOffAddr happyActOffsets st
-         (off_i)  = (off Happy_GHC_Exts.+# i)
-	 check  = if (off_i Happy_GHC_Exts.>=# (0# :: Happy_GHC_Exts.Int#))
-			then (indexShortOffAddr happyCheck off_i Happy_GHC_Exts.==#  i)
-			else False
-         (action)
-          | check     = indexShortOffAddr happyTable off_i
-          | otherwise = indexShortOffAddr happyDefActions st
-
-{-# LINE 130 "templates/GenericTemplate.hs" #-}
-
-
-indexShortOffAddr (HappyA# arr) off =
-	Happy_GHC_Exts.narrow16Int# i
-  where
-        i = Happy_GHC_Exts.word2Int# (Happy_GHC_Exts.or# (Happy_GHC_Exts.uncheckedShiftL# high 8#) low)
-        high = Happy_GHC_Exts.int2Word# (Happy_GHC_Exts.ord# (Happy_GHC_Exts.indexCharOffAddr# arr (off' Happy_GHC_Exts.+# 1#)))
-        low  = Happy_GHC_Exts.int2Word# (Happy_GHC_Exts.ord# (Happy_GHC_Exts.indexCharOffAddr# arr off'))
-        off' = off Happy_GHC_Exts.*# 2#
-
-
-
-
-
-data HappyAddr = HappyA# Happy_GHC_Exts.Addr#
-
-
-
-
------------------------------------------------------------------------------
--- HappyState data type (not arrays)
-
-{-# LINE 163 "templates/GenericTemplate.hs" #-}
-
------------------------------------------------------------------------------
--- Shifting a token
-
-happyShift new_state 0# tk st sts stk@(x `HappyStk` _) =
-     let (i) = (case Happy_GHC_Exts.unsafeCoerce# x of { (Happy_GHC_Exts.I# (i)) -> i }) in
---     trace "shifting the error token" $
-     happyDoAction i tk new_state (HappyCons (st) (sts)) (stk)
-
-happyShift new_state i tk st sts stk =
-     happyNewToken new_state (HappyCons (st) (sts)) ((happyInTok (tk))`HappyStk`stk)
-
--- happyReduce is specialised for the common cases.
-
-happySpecReduce_0 i fn 0# tk st sts stk
-     = happyFail 0# tk st sts stk
-happySpecReduce_0 nt fn j tk st@((action)) sts stk
-     = happyGoto nt j tk st (HappyCons (st) (sts)) (fn `HappyStk` stk)
-
-happySpecReduce_1 i fn 0# tk st sts stk
-     = happyFail 0# tk st sts stk
-happySpecReduce_1 nt fn j tk _ sts@((HappyCons (st@(action)) (_))) (v1`HappyStk`stk')
-     = let r = fn v1 in
-       happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))
-
-happySpecReduce_2 i fn 0# tk st sts stk
-     = happyFail 0# tk st sts stk
-happySpecReduce_2 nt fn j tk _ (HappyCons (_) (sts@((HappyCons (st@(action)) (_))))) (v1`HappyStk`v2`HappyStk`stk')
-     = let r = fn v1 v2 in
-       happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))
-
-happySpecReduce_3 i fn 0# tk st sts stk
-     = happyFail 0# tk st sts stk
-happySpecReduce_3 nt fn j tk _ (HappyCons (_) ((HappyCons (_) (sts@((HappyCons (st@(action)) (_))))))) (v1`HappyStk`v2`HappyStk`v3`HappyStk`stk')
-     = let r = fn v1 v2 v3 in
-       happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))
-
-happyReduce k i fn 0# tk st sts stk
-     = happyFail 0# tk st sts stk
-happyReduce k nt fn j tk st sts stk
-     = case happyDrop (k Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) sts of
-	 sts1@((HappyCons (st1@(action)) (_))) ->
-        	let r = fn stk in  -- it doesn't hurt to always seq here...
-       		happyDoSeq r (happyGoto nt j tk st1 sts1 r)
-
-happyMonadReduce k nt fn 0# tk st sts stk
-     = happyFail 0# tk st sts stk
-happyMonadReduce k nt fn j tk st sts stk =
-        happyThen1 (fn stk tk) (\r -> happyGoto nt j tk st1 sts1 (r `HappyStk` drop_stk))
-       where (sts1@((HappyCons (st1@(action)) (_)))) = happyDrop k (HappyCons (st) (sts))
-             drop_stk = happyDropStk k stk
-
-happyMonad2Reduce k nt fn 0# tk st sts stk
-     = happyFail 0# tk st sts stk
-happyMonad2Reduce k nt fn j tk st sts stk =
-       happyThen1 (fn stk tk) (\r -> happyNewToken new_state sts1 (r `HappyStk` drop_stk))
-       where (sts1@((HappyCons (st1@(action)) (_)))) = happyDrop k (HappyCons (st) (sts))
-             drop_stk = happyDropStk k stk
-
-             (off) = indexShortOffAddr happyGotoOffsets st1
-             (off_i) = (off Happy_GHC_Exts.+# nt)
-             (new_state) = indexShortOffAddr happyTable off_i
-
-
-
-
-happyDrop 0# l = l
-happyDrop n (HappyCons (_) (t)) = happyDrop (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) t
-
-happyDropStk 0# l = l
-happyDropStk n (x `HappyStk` xs) = happyDropStk (n Happy_GHC_Exts.-# (1#::Happy_GHC_Exts.Int#)) xs
-
------------------------------------------------------------------------------
--- Moving to a new state after a reduction
-
-
-happyGoto nt j tk st = 
-   {- nothing -}
-   happyDoAction j tk new_state
-   where (off) = indexShortOffAddr happyGotoOffsets st
-         (off_i) = (off Happy_GHC_Exts.+# nt)
-         (new_state) = indexShortOffAddr happyTable off_i
-
-
-
-
------------------------------------------------------------------------------
--- Error recovery (0# is the error token)
-
--- parse error if we are in recovery and we fail again
-happyFail  0# tk old_st _ stk =
---	trace "failing" $ 
-    	happyError_ tk
-
-{-  We don't need state discarding for our restricted implementation of
-    "error".  In fact, it can cause some bogus parses, so I've disabled it
-    for now --SDM
-
--- discard a state
-happyFail  0# tk old_st (HappyCons ((action)) (sts)) 
-						(saved_tok `HappyStk` _ `HappyStk` stk) =
---	trace ("discarding state, depth " ++ show (length stk))  $
-	happyDoAction 0# tk action sts ((saved_tok`HappyStk`stk))
--}
-
--- Enter error recovery: generate an error token,
---                       save the old token and carry on.
-happyFail  i tk (action) sts stk =
---      trace "entering error recovery" $
-	happyDoAction 0# tk action sts ( (Happy_GHC_Exts.unsafeCoerce# (Happy_GHC_Exts.I# (i))) `HappyStk` stk)
-
--- Internal happy errors:
-
-notHappyAtAll :: a
-notHappyAtAll = error "Internal Happy error\n"
-
------------------------------------------------------------------------------
--- Hack to get the typechecker to accept our action functions
-
-
-happyTcHack :: Happy_GHC_Exts.Int# -> a -> a
-happyTcHack x y = y
-{-# INLINE happyTcHack #-}
-
-
------------------------------------------------------------------------------
--- Seq-ing.  If the --strict flag is given, then Happy emits 
---	happySeq = happyDoSeq
--- otherwise it emits
--- 	happySeq = happyDontSeq
-
-happyDoSeq, happyDontSeq :: a -> b -> b
-happyDoSeq   a b = a `seq` b
-happyDontSeq a b = b
-
------------------------------------------------------------------------------
--- Don't inline any functions from the template.  GHC has a nasty habit
--- of deciding to inline happyGoto everywhere, which increases the size of
--- the generated parser quite a bit.
-
-
-{-# NOINLINE happyDoAction #-}
-{-# NOINLINE happyTable #-}
-{-# NOINLINE happyCheck #-}
-{-# NOINLINE happyActOffsets #-}
-{-# NOINLINE happyGotoOffsets #-}
-{-# NOINLINE happyDefActions #-}
-
-{-# NOINLINE happyShift #-}
-{-# NOINLINE happySpecReduce_0 #-}
-{-# NOINLINE happySpecReduce_1 #-}
-{-# NOINLINE happySpecReduce_2 #-}
-{-# NOINLINE happySpecReduce_3 #-}
-{-# NOINLINE happyReduce #-}
-{-# NOINLINE happyMonadReduce #-}
-{-# NOINLINE happyGoto #-}
-{-# NOINLINE happyFail #-}
-
--- end of Happy Template.
diff --git a/dist/build/epic/epic-tmp/Epic/Parser.hs b/dist/build/epic/epic-tmp/Epic/Parser.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/epic/epic-tmp/Epic/Parser.hs
@@ -0,0 +1,1646 @@
+{-# OPTIONS_GHC -w #-}
+{-# OPTIONS -fglasgow-exts -cpp #-}
+-- -*-Haskell-*-
+
+module Epic.Parser where
+
+import Data.Char
+import System.IO.Unsafe
+
+import Epic.Language
+import Epic.Lexer
+import qualified Data.Array as Happy_Data_Array
+import qualified GHC.Exts as Happy_GHC_Exts
+import Control.Applicative(Applicative(..))
+
+-- parser produced by Happy Version 1.19.4
+
+newtype HappyAbsSyn  = HappyAbsSyn HappyAny
+#if __GLASGOW_HASKELL__ >= 607
+type HappyAny = Happy_GHC_Exts.Any
+#else
+type HappyAny = forall a . a
+#endif
+happyIn6 :: ([Decl]) -> (HappyAbsSyn )
+happyIn6 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn6 #-}
+happyOut6 :: (HappyAbsSyn ) -> ([Decl])
+happyOut6 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut6 #-}
+happyIn7 :: (Type) -> (HappyAbsSyn )
+happyIn7 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn7 #-}
+happyOut7 :: (HappyAbsSyn ) -> (Type)
+happyOut7 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut7 #-}
+happyIn8 :: (Decl) -> (HappyAbsSyn )
+happyIn8 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn8 #-}
+happyOut8 :: (HappyAbsSyn ) -> (Decl)
+happyOut8 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut8 #-}
+happyIn9 :: ([CGFlag]) -> (HappyAbsSyn )
+happyIn9 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn9 #-}
+happyOut9 :: (HappyAbsSyn ) -> ([CGFlag])
+happyOut9 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut9 #-}
+happyIn10 :: (CGFlag) -> (HappyAbsSyn )
+happyIn10 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn10 #-}
+happyOut10 :: (HappyAbsSyn ) -> (CGFlag)
+happyOut10 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut10 #-}
+happyIn11 :: (Maybe String) -> (HappyAbsSyn )
+happyIn11 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn11 #-}
+happyOut11 :: (HappyAbsSyn ) -> (Maybe String)
+happyOut11 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut11 #-}
+happyIn12 :: ([(Name,Type)]) -> (HappyAbsSyn )
+happyIn12 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn12 #-}
+happyOut12 :: (HappyAbsSyn ) -> ([(Name,Type)])
+happyOut12 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut12 #-}
+happyIn13 :: (Expr) -> (HappyAbsSyn )
+happyIn13 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn13 #-}
+happyOut13 :: (HappyAbsSyn ) -> (Expr)
+happyOut13 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut13 #-}
+happyIn14 :: (Allocator) -> (HappyAbsSyn )
+happyIn14 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn14 #-}
+happyOut14 :: (HappyAbsSyn ) -> (Allocator)
+happyOut14 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut14 #-}
+happyIn15 :: (Expr) -> (HappyAbsSyn )
+happyIn15 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn15 #-}
+happyOut15 :: (HappyAbsSyn ) -> (Expr)
+happyOut15 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut15 #-}
+happyIn16 :: ([CaseAlt]) -> (HappyAbsSyn )
+happyIn16 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn16 #-}
+happyOut16 :: (HappyAbsSyn ) -> ([CaseAlt])
+happyOut16 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut16 #-}
+happyIn17 :: (CaseAlt) -> (HappyAbsSyn )
+happyIn17 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn17 #-}
+happyOut17 :: (HappyAbsSyn ) -> (CaseAlt)
+happyOut17 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut17 #-}
+happyIn18 :: (Expr) -> (HappyAbsSyn )
+happyIn18 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn18 #-}
+happyOut18 :: (HappyAbsSyn ) -> (Expr)
+happyOut18 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut18 #-}
+happyIn19 :: ([Expr]) -> (HappyAbsSyn )
+happyIn19 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn19 #-}
+happyOut19 :: (HappyAbsSyn ) -> ([Expr])
+happyOut19 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut19 #-}
+happyIn20 :: ([(Expr,Type)]) -> (HappyAbsSyn )
+happyIn20 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn20 #-}
+happyOut20 :: (HappyAbsSyn ) -> ([(Expr,Type)])
+happyOut20 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut20 #-}
+happyIn21 :: (Const) -> (HappyAbsSyn )
+happyIn21 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn21 #-}
+happyOut21 :: (HappyAbsSyn ) -> (Const)
+happyOut21 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut21 #-}
+happyIn22 :: (LineNumber) -> (HappyAbsSyn )
+happyIn22 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn22 #-}
+happyOut22 :: (HappyAbsSyn ) -> (LineNumber)
+happyOut22 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut22 #-}
+happyIn23 :: (String) -> (HappyAbsSyn )
+happyIn23 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn23 #-}
+happyOut23 :: (HappyAbsSyn ) -> (String)
+happyOut23 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut23 #-}
+happyInTok :: (Token) -> (HappyAbsSyn )
+happyInTok x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyInTok #-}
+happyOutTok :: (HappyAbsSyn ) -> (Token)
+happyOutTok x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOutTok #-}
+
+
+happyActOffsets :: HappyAddr
+happyActOffsets = HappyA# "\x87\x03\x01\x00\xda\x00\xda\x00\x00\x00\xe2\xff\x62\x02\x58\x02\x56\x02\x55\x02\xfa\x01\x92\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\x42\x02\x09\x00\x01\x00\x01\x00\x0d\x02\x0c\x02\x00\x00\x0f\x00\x0b\x02\x0a\x02\x36\x00\x31\x02\x00\x00\x01\x00\x01\x00\x01\x00\x01\x00\x25\x02\xc4\x01\x82\x02\x19\x02\x87\x03\x00\x00\xd0\x01\xd3\xff\xd3\xff\x50\x01\xe6\x01\x27\x02\x00\x00\x12\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x02\xcf\x01\xce\x01\x00\x00\x01\x00\x01\x00\x36\x00\x01\x00\x7a\x00\x01\x00\x4c\x00\x21\x00\xb1\x01\xf9\x01\xb0\x01\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\xe5\x01\x01\x00\x00\x00\x00\x00\xaf\x01\x00\x00\xdb\x01\xe2\xff\x00\x00\x00\x00\x00\x00\x9e\x01\xc1\x01\x7b\x02\x00\x00\x97\x02\x97\x02\x97\x02\x97\x02\xaf\x02\xaf\x02\x97\x02\x97\x02\x5f\x02\x97\x02\x97\x02\x5f\x02\xd3\xff\xd3\xff\xc0\x02\xc0\x02\xd3\xff\xd3\xff\xd3\xff\xc0\x02\xc0\x02\x92\x01\x01\x00\x82\x01\x36\x00\x90\x01\x01\x00\x34\x01\x6d\x01\x00\x00\x00\x00\x08\x02\xa1\x01\xe9\x01\xca\x01\x36\x00\x36\x00\x00\x00\x74\x01\x00\x00\x00\x00\x01\x00\x36\x00\x00\x00\x00\x00\x5e\x01\x00\x00\x01\x00\x72\x01\x71\x01\x00\x00\x00\x00\x5f\x01\x00\x00\x01\x00\x01\x00\x76\x00\x0b\x00\x5d\x01\x01\x00\x54\x01\x00\x00\x53\x01\x27\x01\x66\x01\x37\x01\x36\x00\x04\x01\x00\x00\xdd\x00\x01\x00\x19\x01\xfd\x00\xe8\x00\x24\x01\xc9\x00\x01\x00\xfc\x00\x18\x01\x01\x00\x00\x00\x00\x00\xab\x01\xdf\x00\x01\x00\x43\x02\x00\x00\x36\x00\xd7\x00\x01\x00\x00\x00\x01\x00\x43\x02\x01\x00\xc8\x00\x01\x00\x0b\x00\x00\x00\xb9\x00\x01\x00\x36\x00\x9c\x00\x90\x00\x36\x00\xdb\x00\x00\x00\x43\x02\x01\x00\x00\x00\x43\x02\xdb\x00\x43\x02\x8f\x01\x70\x01\x00\x00\x82\x00\x01\x00\x00\x00\x00\x00\x94\x00\x43\x02\x00\x00\x5e\x00\x01\x00\xc6\xff\x00\x00\x01\x00\x43\x02\x43\x02\x00\x00"#
+
+happyGotoOffsets :: HappyAddr
+happyGotoOffsets = HappyA# "\x6f\x00\xc9\x03\x25\x00\x16\x00\x00\x00\xe0\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\xc8\x03\xbf\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb2\x00\x00\x00\x00\x00\xbe\x03\xd9\x00\xb5\x03\xb4\x03\x00\x00\x00\x00\x4e\x00\x00\x00\x11\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\xab\x03\xaa\x03\xa7\x00\xa1\x03\x9d\x00\xa0\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9a\x00\x97\x03\x96\x03\x8d\x03\x8c\x03\x83\x03\x82\x03\x79\x03\x78\x03\x6f\x03\x6e\x03\x65\x03\x64\x03\x5b\x03\x5a\x03\x51\x03\x50\x03\x47\x03\x46\x03\x3d\x03\x3c\x03\x33\x03\x00\x00\x32\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\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\x93\x00\x00\x00\x98\x00\x00\x00\x29\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x88\x00\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x00\x77\x00\xfb\xff\x00\x00\x00\x00\x00\x00\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x03\x1f\x03\x00\x00\xe1\x00\x00\x00\x1e\x03\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x5d\x00\x00\x00\x00\x00\x00\x00\x15\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x03\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x03\x00\x00\x00\x00\x51\x00\x00\x00\x0a\x03\x00\x00\x01\x03\x00\x00\x00\x03\x00\x00\xf7\x02\xba\x00\x00\x00\x00\x00\xf6\x02\x3b\x00\x00\x00\x00\x00\x33\x00\x2b\x00\x00\x00\x00\x00\xe6\x02\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00"#
+
+happyDefActions :: HappyAddr
+happyDefActions = HappyA# "\xe2\xff\x00\x00\xe2\xff\x00\x00\x00\x00\xe6\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcb\xff\xca\xff\xd5\xff\xdd\xff\x99\xff\x9f\xff\x9e\xff\x9c\xff\x9b\xff\x9a\xff\x9d\xff\x98\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x00\x00\xa5\xff\x00\x00\x00\x00\x00\x00\x00\x00\xe2\xff\x00\x00\xe2\xff\xfb\xff\x00\x00\xb4\xff\xba\xff\xa4\xff\x00\x00\x00\x00\xc9\xff\x00\x00\xf9\xff\xf8\xff\xf7\xff\xf6\xff\xf5\xff\xf4\xff\xf3\xff\xf2\xff\xf1\xff\xeb\xff\xef\xff\x00\x00\x00\x00\x00\x00\xf0\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa5\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe7\xff\xe1\xff\x00\x00\xe8\xff\x00\x00\xe6\xff\xe3\xff\xe4\xff\xe5\xff\x00\x00\xe0\xff\xd0\xff\xd4\xff\xa9\xff\xaa\xff\xae\xff\xaf\xff\xb0\xff\xb1\xff\xa7\xff\xa8\xff\xa6\xff\xac\xff\xad\xff\xab\xff\xb2\xff\xb3\xff\xb5\xff\xb6\xff\xb7\xff\xb8\xff\xb9\xff\xbb\xff\xbc\xff\x00\x00\xa5\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc5\xff\xc4\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xee\xff\x00\x00\xdc\xff\xda\xff\xa5\xff\x00\x00\x95\xff\xfa\xff\x00\x00\xa3\xff\xa2\xff\x00\x00\x00\x00\xd7\xff\xd8\xff\x00\x00\xd9\xff\x00\x00\x00\x00\x00\x00\xc2\xff\x00\x00\x00\x00\x00\x00\xdb\xff\x00\x00\x00\x00\xe0\xff\x00\x00\x00\x00\x00\x00\xd6\xff\x00\x00\x00\x00\x00\x00\xc1\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\xff\xec\xff\xed\xff\x00\x00\x00\x00\x00\x00\xd1\xff\xc7\xff\x00\x00\x00\x00\x00\x00\xce\xff\x00\x00\xcf\xff\x00\x00\x00\x00\x00\x00\xc2\xff\xc3\xff\x00\x00\x00\x00\x00\x00\xdf\xff\x00\x00\x00\x00\xe0\xff\xe9\xff\xd2\xff\x00\x00\xc0\xff\xbe\xff\xe0\xff\xbd\xff\x00\x00\x00\x00\xc6\xff\xa1\xff\xa2\xff\xcc\xff\xcd\xff\x00\x00\xd3\xff\xde\xff\x00\x00\x00\x00\x00\x00\xa0\xff\x00\x00\xea\xff\xbf\xff"#
+
+happyCheck :: HappyAddr
+happyCheck = HappyA# "\xff\xff\x2e\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x01\x00\x29\x00\x11\x00\x07\x00\x03\x00\x09\x00\x06\x00\x00\x00\x0c\x00\x02\x00\x0e\x00\x0f\x00\x05\x00\x51\x00\x02\x00\x18\x00\x19\x00\x05\x00\x1b\x00\x1c\x00\x4b\x00\x1e\x00\x03\x00\x04\x00\x21\x00\x22\x00\x19\x00\x1a\x00\x25\x00\x02\x00\x27\x00\x28\x00\x05\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x07\x00\x06\x00\x09\x00\x32\x00\x01\x00\x0c\x00\x35\x00\x0e\x00\x0f\x00\x57\x00\x2b\x00\x3a\x00\x01\x00\x2e\x00\x1d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x00\x00\x2e\x00\x02\x00\x50\x00\x01\x00\x05\x00\x4b\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x01\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x1f\x00\x4b\x00\x4c\x00\x07\x00\x00\x00\x09\x00\x02\x00\x06\x00\x0c\x00\x05\x00\x0e\x00\x0f\x00\x07\x00\x01\x00\x09\x00\x2e\x00\x06\x00\x0c\x00\x0d\x00\x01\x00\x0f\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x01\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x20\x00\x4b\x00\x4c\x00\x01\x00\x07\x00\x3d\x00\x09\x00\x23\x00\x24\x00\x0c\x00\x0d\x00\x07\x00\x0f\x00\x09\x00\x2e\x00\x08\x00\x0c\x00\x0d\x00\x01\x00\x0f\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x01\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x2e\x00\x4b\x00\x4c\x00\x2f\x00\x0a\x00\x0b\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x4d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x01\x00\x4b\x00\x4c\x00\x26\x00\x07\x00\x51\x00\x09\x00\x03\x00\x04\x00\x0c\x00\x0d\x00\x2e\x00\x0f\x00\x4d\x00\x58\x00\x0a\x00\x0b\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x2e\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x26\x00\x4b\x00\x4c\x00\x2f\x00\x07\x00\x07\x00\x09\x00\x09\x00\x2e\x00\x0c\x00\x0c\x00\x2f\x00\x0f\x00\x0f\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x51\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x03\x00\x4b\x00\x4c\x00\x2e\x00\x2f\x00\x52\x00\x53\x00\x54\x00\x55\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x51\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x2e\x00\x4b\x00\x4c\x00\x4d\x00\x31\x00\x4e\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x51\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x2e\x00\x4b\x00\x4c\x00\x4d\x00\x2f\x00\x01\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x4a\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x2e\x00\x4b\x00\x4c\x00\x4d\x00\x2f\x00\x2f\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x2e\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x3d\x00\x4b\x00\x4c\x00\x4d\x00\x2e\x00\x2f\x00\x2f\x00\x2f\x00\x2e\x00\x02\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x4f\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4d\x00\x4b\x00\x4c\x00\x2e\x00\x2f\x00\x3d\x00\x30\x00\x2f\x00\x01\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x2e\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x2e\x00\x4b\x00\x4c\x00\x01\x00\x2e\x00\x2e\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x03\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x2e\x00\x2f\x00\x01\x00\x4a\x00\x2e\x00\x2e\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x02\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x02\x00\x4b\x00\x4c\x00\x2e\x00\x2f\x00\x33\x00\x4a\x00\x02\x00\x58\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x01\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x02\x00\x4b\x00\x4c\x00\x2e\x00\x2f\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x03\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x58\x00\x4b\x00\x4c\x00\x2e\x00\x2f\x00\x02\x00\x02\x00\x01\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x02\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x2e\x00\x4b\x00\x4c\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\xff\xff\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x2e\x00\x4b\x00\x4c\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\xff\xff\xff\xff\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x2e\x00\x4b\x00\x4c\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\xff\xff\xff\xff\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x2e\x00\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\x58\x00\x44\x00\x45\x00\x2e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4b\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\xff\xff\x07\x00\x2e\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x36\x00\x37\x00\x38\x00\xff\xff\x4b\x00\x3b\x00\x3c\x00\x07\x00\x07\x00\x09\x00\x09\x00\xff\xff\x0c\x00\x0c\x00\xff\xff\x0f\x00\x0f\x00\x07\x00\x07\x00\x09\x00\x09\x00\x4b\x00\x0c\x00\x0c\x00\xff\xff\x0f\x00\x0f\x00\x07\x00\x07\x00\x09\x00\x09\x00\xff\xff\x0c\x00\x0c\x00\xff\xff\x0f\x00\x0f\x00\x07\x00\x07\x00\x09\x00\x09\x00\xff\xff\x0c\x00\x0c\x00\xff\xff\x0f\x00\x0f\x00\x07\x00\x07\x00\x09\x00\x09\x00\xff\xff\x0c\x00\x0c\x00\xff\xff\x0f\x00\x0f\x00\x07\x00\x07\x00\x09\x00\x09\x00\xff\xff\x0c\x00\x0c\x00\xff\xff\x0f\x00\x0f\x00\x07\x00\x07\x00\x09\x00\x09\x00\xff\xff\x0c\x00\x0c\x00\xff\xff\x0f\x00\x0f\x00\x07\x00\x07\x00\x09\x00\x09\x00\xff\xff\x0c\x00\x0c\x00\xff\xff\x0f\x00\x0f\x00\x07\x00\x07\x00\x09\x00\x09\x00\xff\xff\x0c\x00\x0c\x00\xff\xff\x0f\x00\x0f\x00\x07\x00\x07\x00\x09\x00\x09\x00\xff\xff\x0c\x00\x0c\x00\xff\xff\x0f\x00\x0f\x00\x07\x00\x07\x00\x09\x00\x09\x00\xff\xff\x0c\x00\x0c\x00\xff\xff\x0f\x00\x0f\x00\x07\x00\x07\x00\x09\x00\x09\x00\xff\xff\x0c\x00\x0c\x00\xff\xff\x0f\x00\x0f\x00\x07\x00\x07\x00\x09\x00\x09\x00\xff\xff\x0c\x00\x0c\x00\xff\xff\x0f\x00\x0f\x00\x07\x00\x07\x00\x09\x00\x09\x00\xff\xff\x0c\x00\x0c\x00\xff\xff\x0f\x00\x0f\x00\x07\x00\x07\x00\x09\x00\x09\x00\xff\xff\x0c\x00\x0c\x00\xff\xff\x0f\x00\x0f\x00\x07\x00\x07\x00\x09\x00\x09\x00\xff\xff\x0c\x00\x0c\x00\xff\xff\x0f\x00\x0f\x00\x07\x00\x07\x00\x09\x00\x09\x00\xff\xff\x0c\x00\x0c\x00\xff\xff\x0f\x00\x0f\x00\x07\x00\x07\x00\x09\x00\x09\x00\xff\xff\x0c\x00\x0c\x00\xff\xff\x0f\x00\x0f\x00\x07\x00\x07\x00\x09\x00\x09\x00\xff\xff\x0c\x00\x0c\x00\xff\xff\x0f\x00\x0f\x00\x07\x00\x07\x00\x09\x00\x09\x00\xff\xff\x0c\x00\x0c\x00\xff\xff\x0f\x00\x0f\x00\x07\x00\x07\x00\x09\x00\x09\x00\xff\xff\x0c\x00\x0c\x00\xff\xff\x0f\x00\x0f\x00\x07\x00\x07\x00\x09\x00\x09\x00\xff\xff\x0c\x00\x0c\x00\xff\xff\x0f\x00\x0f\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\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\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\x52\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x4f\x00\x70\x00\xa2\x00\xc8\x00\xc0\x00\x0c\x00\xed\x00\xa1\x00\x0d\x00\x2b\x00\xf3\x00\x0e\x00\x05\x00\xf5\x00\x04\x00\x18\x00\x19\x00\x05\x00\x1a\x00\x1b\x00\x68\x00\x1c\x00\x71\x00\x6e\x00\x1d\x00\x1e\x00\xc1\x00\xc2\x00\x1f\x00\x0a\x00\x20\x00\x21\x00\x05\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\xc8\x00\xef\x00\x0c\x00\x27\x00\xf0\x00\x0d\x00\x28\x00\xce\x00\x0e\x00\x71\x00\x49\x00\x29\x00\xdf\x00\x4a\x00\x90\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x2e\x00\x52\x00\x2b\x00\x2a\x00\xe9\x00\x05\x00\x50\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xdb\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x91\x00\x68\x00\x69\x00\xc8\x00\x2a\x00\x0c\x00\x2b\x00\xb7\x00\x0d\x00\x05\x00\xc9\x00\x0e\x00\x32\x00\xa3\x00\x0c\x00\x52\x00\xb4\x00\x0d\x00\xa4\x00\xa6\x00\x0e\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xa7\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\xc3\x00\x68\x00\x69\x00\xb0\x00\x32\x00\xf2\x00\x0c\x00\x94\x00\x95\x00\x0d\x00\xb2\x00\x32\x00\x0e\x00\x0c\x00\x52\x00\x92\x00\x0d\x00\x8b\x00\x96\x00\x0e\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x36\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x52\x00\x68\x00\x69\x00\xf3\x00\xe2\x00\xbe\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xeb\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\xb6\x00\x68\x00\x69\x00\xe2\x00\x32\x00\xde\x00\x0c\x00\x6d\x00\x6e\x00\x0d\x00\x33\x00\x52\x00\x0e\x00\xdf\x00\xff\xff\xbd\x00\xbe\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xe5\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\xda\x00\x68\x00\x69\x00\xe9\x00\xf6\x00\xf5\x00\x0c\x00\x0c\x00\x52\x00\x0d\x00\x0d\x00\xcd\x00\x0e\x00\x0e\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xd4\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\xd5\x00\x68\x00\x69\x00\x52\x00\xd1\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xd6\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x52\x00\x68\x00\x69\x00\xd2\x00\xd8\x00\xd7\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xdb\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x52\x00\x68\x00\x69\x00\xd0\x00\xdd\x00\xb6\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xb9\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x52\x00\x68\x00\x69\x00\xae\x00\xba\x00\xbb\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xc6\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\xbd\x00\x68\x00\x69\x00\xa0\x00\x52\x00\xec\x00\xc7\x00\xc8\x00\xa6\x00\xab\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xcb\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\xad\x00\x68\x00\x69\x00\x52\x00\xed\x00\xb2\x00\xb0\x00\xb4\x00\xb6\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xb7\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x52\x00\x68\x00\x69\x00\x73\x00\x74\x00\x8d\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x76\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\xce\x00\x68\x00\x69\x00\x52\x00\xa9\x00\x8e\x00\x8f\x00\x9a\x00\x9b\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x9c\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x9d\x00\x68\x00\x69\x00\x52\x00\xaa\x00\x9f\x00\xa1\x00\x2e\x00\xff\xff\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x30\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x36\x00\x68\x00\x69\x00\x52\x00\xac\x00\x47\x00\x48\x00\x4b\x00\x4c\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x51\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\xff\xff\x68\x00\x69\x00\x52\x00\x9e\x00\x6a\x00\x6b\x00\x6c\x00\x00\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x6d\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x52\x00\x68\x00\x69\x00\x00\x00\x00\x00\x00\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x00\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x52\x00\x68\x00\x69\x00\x00\x00\x00\x00\x00\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x00\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x52\x00\x68\x00\x69\x00\x00\x00\x00\x00\x00\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x00\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x52\x00\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x2d\x00\x00\x00\xfc\xff\x62\x00\x63\x00\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x00\x00\xee\x00\x52\x00\x0c\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x0e\x00\x55\x00\x56\x00\x57\x00\x00\x00\x68\x00\x5a\x00\x5b\x00\xe0\x00\xe3\x00\x0c\x00\x0c\x00\x00\x00\x0d\x00\x0d\x00\x00\x00\x0e\x00\x0e\x00\xe5\x00\xe6\x00\x0c\x00\x0c\x00\x68\x00\x0d\x00\x0d\x00\x00\x00\x0e\x00\x0e\x00\xe7\x00\xcb\x00\x0c\x00\x0c\x00\x00\x00\x0d\x00\x0d\x00\x00\x00\x0e\x00\x0e\x00\xd2\x00\xd8\x00\x0c\x00\x0c\x00\x00\x00\x0d\x00\x0d\x00\x00\x00\x0e\x00\x0e\x00\xbb\x00\xc3\x00\x0c\x00\x0c\x00\x00\x00\x0d\x00\x0d\x00\x00\x00\x0e\x00\x0e\x00\xc4\x00\xae\x00\x0c\x00\x0c\x00\x00\x00\x0d\x00\x0d\x00\x00\x00\x0e\x00\x0e\x00\x74\x00\x76\x00\x0c\x00\x0c\x00\x00\x00\x0d\x00\x0d\x00\x00\x00\x0e\x00\x0e\x00\x77\x00\x78\x00\x0c\x00\x0c\x00\x00\x00\x0d\x00\x0d\x00\x00\x00\x0e\x00\x0e\x00\x79\x00\x7a\x00\x0c\x00\x0c\x00\x00\x00\x0d\x00\x0d\x00\x00\x00\x0e\x00\x0e\x00\x7b\x00\x7c\x00\x0c\x00\x0c\x00\x00\x00\x0d\x00\x0d\x00\x00\x00\x0e\x00\x0e\x00\x7d\x00\x7e\x00\x0c\x00\x0c\x00\x00\x00\x0d\x00\x0d\x00\x00\x00\x0e\x00\x0e\x00\x7f\x00\x80\x00\x0c\x00\x0c\x00\x00\x00\x0d\x00\x0d\x00\x00\x00\x0e\x00\x0e\x00\x81\x00\x82\x00\x0c\x00\x0c\x00\x00\x00\x0d\x00\x0d\x00\x00\x00\x0e\x00\x0e\x00\x83\x00\x84\x00\x0c\x00\x0c\x00\x00\x00\x0d\x00\x0d\x00\x00\x00\x0e\x00\x0e\x00\x85\x00\x86\x00\x0c\x00\x0c\x00\x00\x00\x0d\x00\x0d\x00\x00\x00\x0e\x00\x0e\x00\x87\x00\x88\x00\x0c\x00\x0c\x00\x00\x00\x0d\x00\x0d\x00\x00\x00\x0e\x00\x0e\x00\x89\x00\x8a\x00\x0c\x00\x0c\x00\x00\x00\x0d\x00\x0d\x00\x00\x00\x0e\x00\x0e\x00\x91\x00\x95\x00\x0c\x00\x0c\x00\x00\x00\x0d\x00\x0d\x00\x00\x00\x0e\x00\x0e\x00\x97\x00\x98\x00\x0c\x00\x0c\x00\x00\x00\x0d\x00\x0d\x00\x00\x00\x0e\x00\x0e\x00\x30\x00\x31\x00\x0c\x00\x0c\x00\x00\x00\x0d\x00\x0d\x00\x00\x00\x0e\x00\x0e\x00\x34\x00\x4c\x00\x0c\x00\x0c\x00\x00\x00\x0d\x00\x0d\x00\x00\x00\x0e\x00\x0e\x00\x4d\x00\x0b\x00\x0c\x00\x0c\x00\x00\x00\x0d\x00\x0d\x00\x00\x00\x0e\x00\x0e\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x2d\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\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 = Happy_Data_Array.array (3, 106) [
+	(3 , happyReduce_3),
+	(4 , happyReduce_4),
+	(5 , happyReduce_5),
+	(6 , happyReduce_6),
+	(7 , happyReduce_7),
+	(8 , happyReduce_8),
+	(9 , happyReduce_9),
+	(10 , happyReduce_10),
+	(11 , happyReduce_11),
+	(12 , happyReduce_12),
+	(13 , happyReduce_13),
+	(14 , happyReduce_14),
+	(15 , happyReduce_15),
+	(16 , happyReduce_16),
+	(17 , happyReduce_17),
+	(18 , happyReduce_18),
+	(19 , happyReduce_19),
+	(20 , happyReduce_20),
+	(21 , happyReduce_21),
+	(22 , happyReduce_22),
+	(23 , happyReduce_23),
+	(24 , happyReduce_24),
+	(25 , happyReduce_25),
+	(26 , happyReduce_26),
+	(27 , happyReduce_27),
+	(28 , happyReduce_28),
+	(29 , happyReduce_29),
+	(30 , happyReduce_30),
+	(31 , happyReduce_31),
+	(32 , happyReduce_32),
+	(33 , happyReduce_33),
+	(34 , happyReduce_34),
+	(35 , happyReduce_35),
+	(36 , happyReduce_36),
+	(37 , happyReduce_37),
+	(38 , happyReduce_38),
+	(39 , happyReduce_39),
+	(40 , happyReduce_40),
+	(41 , happyReduce_41),
+	(42 , happyReduce_42),
+	(43 , happyReduce_43),
+	(44 , happyReduce_44),
+	(45 , happyReduce_45),
+	(46 , happyReduce_46),
+	(47 , happyReduce_47),
+	(48 , happyReduce_48),
+	(49 , happyReduce_49),
+	(50 , happyReduce_50),
+	(51 , happyReduce_51),
+	(52 , happyReduce_52),
+	(53 , happyReduce_53),
+	(54 , happyReduce_54),
+	(55 , happyReduce_55),
+	(56 , happyReduce_56),
+	(57 , happyReduce_57),
+	(58 , happyReduce_58),
+	(59 , happyReduce_59),
+	(60 , happyReduce_60),
+	(61 , happyReduce_61),
+	(62 , happyReduce_62),
+	(63 , happyReduce_63),
+	(64 , happyReduce_64),
+	(65 , happyReduce_65),
+	(66 , happyReduce_66),
+	(67 , happyReduce_67),
+	(68 , happyReduce_68),
+	(69 , happyReduce_69),
+	(70 , happyReduce_70),
+	(71 , happyReduce_71),
+	(72 , happyReduce_72),
+	(73 , happyReduce_73),
+	(74 , happyReduce_74),
+	(75 , happyReduce_75),
+	(76 , happyReduce_76),
+	(77 , happyReduce_77),
+	(78 , happyReduce_78),
+	(79 , happyReduce_79),
+	(80 , happyReduce_80),
+	(81 , happyReduce_81),
+	(82 , happyReduce_82),
+	(83 , happyReduce_83),
+	(84 , happyReduce_84),
+	(85 , happyReduce_85),
+	(86 , happyReduce_86),
+	(87 , happyReduce_87),
+	(88 , happyReduce_88),
+	(89 , happyReduce_89),
+	(90 , happyReduce_90),
+	(91 , happyReduce_91),
+	(92 , happyReduce_92),
+	(93 , happyReduce_93),
+	(94 , happyReduce_94),
+	(95 , happyReduce_95),
+	(96 , happyReduce_96),
+	(97 , happyReduce_97),
+	(98 , happyReduce_98),
+	(99 , happyReduce_99),
+	(100 , happyReduce_100),
+	(101 , happyReduce_101),
+	(102 , happyReduce_102),
+	(103 , happyReduce_103),
+	(104 , happyReduce_104),
+	(105 , happyReduce_105),
+	(106 , happyReduce_106)
+	]
+
+happy_n_terms = 89 :: Int
+happy_n_nonterms = 18 :: Int
+
+happyReduce_3 = happySpecReduce_1  0# happyReduction_3
+happyReduction_3 happy_x_1
+	 =  case happyOut8 happy_x_1 of { happy_var_1 -> 
+	happyIn6
+		 ([happy_var_1]
+	)}
+
+happyReduce_4 = happySpecReduce_2  0# happyReduction_4
+happyReduction_4 happy_x_2
+	happy_x_1
+	 =  case happyOut8 happy_x_1 of { happy_var_1 -> 
+	case happyOut6 happy_x_2 of { happy_var_2 -> 
+	happyIn6
+		 (happy_var_1:happy_var_2
+	)}}
+
+happyReduce_5 = happyMonadReduce 4# 0# happyReduction_5
+happyReduction_5 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest) tk
+	 = happyThen (case happyOutTok happy_x_2 of { (TokenString happy_var_2) -> 
+	case happyOut6 happy_x_3 of { happy_var_3 -> 
+	case happyOut23 happy_x_4 of { happy_var_4 -> 
+	(
+ 	   let rest = happy_var_3 in
+	   let pt = unsafePerformIO (readFile happy_var_2) in
+		case (parse pt happy_var_4) of
+		   Success x -> returnP (x ++ rest)
+		   Failure err file ln -> failP err)}}}
+	) (\r -> happyReturn (happyIn6 r))
+
+happyReduce_6 = happySpecReduce_1  1# happyReduction_6
+happyReduction_6 happy_x_1
+	 =  happyIn7
+		 (TyInt
+	)
+
+happyReduce_7 = happySpecReduce_1  1# happyReduction_7
+happyReduction_7 happy_x_1
+	 =  happyIn7
+		 (TyBigInt
+	)
+
+happyReduce_8 = happySpecReduce_1  1# happyReduction_8
+happyReduction_8 happy_x_1
+	 =  happyIn7
+		 (TyChar
+	)
+
+happyReduce_9 = happySpecReduce_1  1# happyReduction_9
+happyReduction_9 happy_x_1
+	 =  happyIn7
+		 (TyBool
+	)
+
+happyReduce_10 = happySpecReduce_1  1# happyReduction_10
+happyReduction_10 happy_x_1
+	 =  happyIn7
+		 (TyFloat
+	)
+
+happyReduce_11 = happySpecReduce_1  1# happyReduction_11
+happyReduction_11 happy_x_1
+	 =  happyIn7
+		 (TyBigFloat
+	)
+
+happyReduce_12 = happySpecReduce_1  1# happyReduction_12
+happyReduction_12 happy_x_1
+	 =  happyIn7
+		 (TyString
+	)
+
+happyReduce_13 = happySpecReduce_1  1# happyReduction_13
+happyReduction_13 happy_x_1
+	 =  happyIn7
+		 (TyPtr
+	)
+
+happyReduce_14 = happySpecReduce_1  1# happyReduction_14
+happyReduction_14 happy_x_1
+	 =  happyIn7
+		 (TyUnit
+	)
+
+happyReduce_15 = happySpecReduce_1  1# happyReduction_15
+happyReduction_15 happy_x_1
+	 =  happyIn7
+		 (TyAny
+	)
+
+happyReduce_16 = happySpecReduce_1  1# happyReduction_16
+happyReduction_16 happy_x_1
+	 =  happyIn7
+		 (TyData
+	)
+
+happyReduce_17 = happySpecReduce_2  1# happyReduction_17
+happyReduction_17 happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_2 of { (TokenString happy_var_2) -> 
+	happyIn7
+		 (TyCType happy_var_2
+	)}
+
+happyReduce_18 = happyReduce 4# 1# happyReduction_18
+happyReduction_18 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut7 happy_x_3 of { happy_var_3 -> 
+	happyIn7
+		 (TyLin happy_var_3
+	) `HappyStk` happyRest}
+
+happyReduce_19 = happyReduce 4# 1# happyReduction_19
+happyReduction_19 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut7 happy_x_3 of { happy_var_3 -> 
+	happyIn7
+		 (TyEval happy_var_3
+	) `HappyStk` happyRest}
+
+happyReduce_20 = happySpecReduce_1  1# happyReduction_20
+happyReduction_20 happy_x_1
+	 =  happyIn7
+		 (TyFun
+	)
+
+happyReduce_21 = happyReduce 10# 2# happyReduction_21
+happyReduction_21 (happy_x_10 `HappyStk`
+	happy_x_9 `HappyStk`
+	happy_x_8 `HappyStk`
+	happy_x_7 `HappyStk`
+	happy_x_6 `HappyStk`
+	happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut11 happy_x_1 of { happy_var_1 -> 
+	case happyOut9 happy_x_2 of { happy_var_2 -> 
+	case happyOutTok happy_x_3 of { (TokenName happy_var_3) -> 
+	case happyOut12 happy_x_5 of { happy_var_5 -> 
+	case happyOut7 happy_x_8 of { happy_var_8 -> 
+	case happyOut13 happy_x_10 of { happy_var_10 -> 
+	happyIn8
+		 (mkBind happy_var_3 (map snd happy_var_5) happy_var_8 (map fst happy_var_5) happy_var_10 happy_var_1 happy_var_2
+	) `HappyStk` happyRest}}}}}}
+
+happyReduce_22 = happyReduce 7# 2# happyReduction_22
+happyReduction_22 (happy_x_7 `HappyStk`
+	happy_x_6 `HappyStk`
+	happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOutTok happy_x_2 of { (TokenName happy_var_2) -> 
+	case happyOut12 happy_x_4 of { happy_var_4 -> 
+	case happyOut7 happy_x_7 of { happy_var_7 -> 
+	happyIn8
+		 (mkExtern happy_var_2 (map snd happy_var_4) happy_var_7 (map fst happy_var_4)
+	) `HappyStk` happyRest}}}
+
+happyReduce_23 = happySpecReduce_2  2# happyReduction_23
+happyReduction_23 happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_2 of { (TokenString happy_var_2) -> 
+	happyIn8
+		 (Include happy_var_2
+	)}
+
+happyReduce_24 = happySpecReduce_2  2# happyReduction_24
+happyReduction_24 happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_2 of { (TokenString happy_var_2) -> 
+	happyIn8
+		 (CType happy_var_2
+	)}
+
+happyReduce_25 = happySpecReduce_0  3# happyReduction_25
+happyReduction_25  =  happyIn9
+		 ([]
+	)
+
+happyReduce_26 = happySpecReduce_2  3# happyReduction_26
+happyReduction_26 happy_x_2
+	happy_x_1
+	 =  case happyOut10 happy_x_1 of { happy_var_1 -> 
+	case happyOut9 happy_x_2 of { happy_var_2 -> 
+	happyIn9
+		 (happy_var_1:happy_var_2
+	)}}
+
+happyReduce_27 = happySpecReduce_1  4# happyReduction_27
+happyReduction_27 happy_x_1
+	 =  happyIn10
+		 (Inline
+	)
+
+happyReduce_28 = happySpecReduce_1  4# happyReduction_28
+happyReduction_28 happy_x_1
+	 =  happyIn10
+		 (Strict
+	)
+
+happyReduce_29 = happySpecReduce_0  5# happyReduction_29
+happyReduction_29  =  happyIn11
+		 (Nothing
+	)
+
+happyReduce_30 = happySpecReduce_2  5# happyReduction_30
+happyReduction_30 happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_2 of { (TokenString happy_var_2) -> 
+	happyIn11
+		 (Just happy_var_2
+	)}
+
+happyReduce_31 = happySpecReduce_0  6# happyReduction_31
+happyReduction_31  =  happyIn12
+		 ([]
+	)
+
+happyReduce_32 = happySpecReduce_3  6# happyReduction_32
+happyReduction_32 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokenName happy_var_1) -> 
+	case happyOut7 happy_x_3 of { happy_var_3 -> 
+	happyIn12
+		 ([(happy_var_1,happy_var_3)]
+	)}}
+
+happyReduce_33 = happyReduce 5# 6# happyReduction_33
+happyReduction_33 (happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOutTok happy_x_1 of { (TokenName happy_var_1) -> 
+	case happyOut7 happy_x_3 of { happy_var_3 -> 
+	case happyOut12 happy_x_5 of { happy_var_5 -> 
+	happyIn12
+		 ((happy_var_1,happy_var_3):happy_var_5
+	) `HappyStk` happyRest}}}
+
+happyReduce_34 = happySpecReduce_1  7# happyReduction_34
+happyReduction_34 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokenName happy_var_1) -> 
+	happyIn13
+		 (R happy_var_1
+	)}
+
+happyReduce_35 = happySpecReduce_3  7# happyReduction_35
+happyReduction_35 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut13 happy_x_2 of { happy_var_2 -> 
+	happyIn13
+		 (happy_var_2
+	)}
+
+happyReduce_36 = happyReduce 4# 7# happyReduction_36
+happyReduction_36 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut13 happy_x_1 of { happy_var_1 -> 
+	case happyOut19 happy_x_3 of { happy_var_3 -> 
+	happyIn13
+		 (App happy_var_1 happy_var_3
+	) `HappyStk` happyRest}}
+
+happyReduce_37 = happySpecReduce_3  7# happyReduction_37
+happyReduction_37 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut19 happy_x_2 of { happy_var_2 -> 
+	happyIn13
+		 (Con 0 happy_var_2
+	)}
+
+happyReduce_38 = happyReduce 4# 7# happyReduction_38
+happyReduction_38 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut13 happy_x_3 of { happy_var_3 -> 
+	happyIn13
+		 (Lazy happy_var_3
+	) `HappyStk` happyRest}
+
+happyReduce_39 = happyReduce 4# 7# happyReduction_39
+happyReduction_39 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut13 happy_x_3 of { happy_var_3 -> 
+	happyIn13
+		 (Par happy_var_3
+	) `HappyStk` happyRest}
+
+happyReduce_40 = happyReduce 4# 7# happyReduction_40
+happyReduction_40 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut13 happy_x_3 of { happy_var_3 -> 
+	happyIn13
+		 (Effect happy_var_3
+	) `HappyStk` happyRest}
+
+happyReduce_41 = happyReduce 5# 7# happyReduction_41
+happyReduction_41 (happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOutTok happy_x_2 of { (TokenInt happy_var_2) -> 
+	case happyOut19 happy_x_4 of { happy_var_4 -> 
+	happyIn13
+		 (Con happy_var_2 happy_var_4
+	) `HappyStk` happyRest}}
+
+happyReduce_42 = happySpecReduce_1  7# happyReduction_42
+happyReduction_42 happy_x_1
+	 =  case happyOut21 happy_x_1 of { happy_var_1 -> 
+	happyIn13
+		 (Const happy_var_1
+	)}
+
+happyReduce_43 = happySpecReduce_3  7# happyReduction_43
+happyReduction_43 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
+	case happyOutTok happy_x_3 of { (TokenInt happy_var_3) -> 
+	happyIn13
+		 (Proj happy_var_1 happy_var_3
+	)}}
+
+happyReduce_44 = happyReduce 8# 7# happyReduction_44
+happyReduction_44 (happy_x_8 `HappyStk`
+	happy_x_7 `HappyStk`
+	happy_x_6 `HappyStk`
+	happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOutTok happy_x_2 of { (TokenName happy_var_2) -> 
+	case happyOut7 happy_x_4 of { happy_var_4 -> 
+	case happyOut13 happy_x_6 of { happy_var_6 -> 
+	case happyOut13 happy_x_8 of { happy_var_8 -> 
+	happyIn13
+		 (Let happy_var_2 happy_var_4 happy_var_6 happy_var_8
+	) `HappyStk` happyRest}}}}
+
+happyReduce_45 = happyReduce 7# 7# happyReduction_45
+happyReduction_45 (happy_x_7 `HappyStk`
+	happy_x_6 `HappyStk`
+	happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOutTok happy_x_3 of { (TokenName happy_var_3) -> 
+	case happyOut13 happy_x_5 of { happy_var_5 -> 
+	case happyOut13 happy_x_7 of { happy_var_7 -> 
+	happyIn13
+		 (LetM happy_var_3 happy_var_5 happy_var_7
+	) `HappyStk` happyRest}}}
+
+happyReduce_46 = happyReduce 6# 7# happyReduction_46
+happyReduction_46 (happy_x_6 `HappyStk`
+	happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOutTok happy_x_2 of { (TokenName happy_var_2) -> 
+	case happyOut7 happy_x_4 of { happy_var_4 -> 
+	case happyOut13 happy_x_6 of { happy_var_6 -> 
+	happyIn13
+		 (Lam happy_var_2 happy_var_4 happy_var_6
+	) `HappyStk` happyRest}}}
+
+happyReduce_47 = happySpecReduce_3  7# happyReduction_47
+happyReduction_47 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
+	case happyOut13 happy_x_3 of { happy_var_3 -> 
+	happyIn13
+		 (Let (MN "unused" 0) TyUnit happy_var_1 happy_var_3
+	)}}
+
+happyReduce_48 = happyReduce 6# 7# happyReduction_48
+happyReduction_48 (happy_x_6 `HappyStk`
+	happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut13 happy_x_2 of { happy_var_2 -> 
+	case happyOut13 happy_x_4 of { happy_var_4 -> 
+	case happyOut13 happy_x_6 of { happy_var_6 -> 
+	happyIn13
+		 (If happy_var_2 happy_var_4 happy_var_6
+	) `HappyStk` happyRest}}}
+
+happyReduce_49 = happyReduce 6# 7# happyReduction_49
+happyReduction_49 (happy_x_6 `HappyStk`
+	happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut13 happy_x_3 of { happy_var_3 -> 
+	case happyOut13 happy_x_5 of { happy_var_5 -> 
+	happyIn13
+		 (While happy_var_3 happy_var_5
+	) `HappyStk` happyRest}}
+
+happyReduce_50 = happyReduce 8# 7# happyReduction_50
+happyReduction_50 (happy_x_8 `HappyStk`
+	happy_x_7 `HappyStk`
+	happy_x_6 `HappyStk`
+	happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut13 happy_x_3 of { happy_var_3 -> 
+	case happyOut13 happy_x_5 of { happy_var_5 -> 
+	case happyOut13 happy_x_7 of { happy_var_7 -> 
+	happyIn13
+		 (WhileAcc happy_var_3 happy_var_5 happy_var_7
+	) `HappyStk` happyRest}}}
+
+happyReduce_51 = happyReduce 8# 7# happyReduction_51
+happyReduction_51 (happy_x_8 `HappyStk`
+	happy_x_7 `HappyStk`
+	happy_x_6 `HappyStk`
+	happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut14 happy_x_3 of { happy_var_3 -> 
+	case happyOut13 happy_x_5 of { happy_var_5 -> 
+	case happyOut13 happy_x_7 of { happy_var_7 -> 
+	happyIn13
+		 (WithMem happy_var_3 happy_var_5 happy_var_7
+	) `HappyStk` happyRest}}}
+
+happyReduce_52 = happySpecReduce_1  7# happyReduction_52
+happyReduction_52 happy_x_1
+	 =  case happyOut15 happy_x_1 of { happy_var_1 -> 
+	happyIn13
+		 (happy_var_1
+	)}
+
+happyReduce_53 = happySpecReduce_1  7# happyReduction_53
+happyReduction_53 happy_x_1
+	 =  case happyOut18 happy_x_1 of { happy_var_1 -> 
+	happyIn13
+		 (happy_var_1
+	)}
+
+happyReduce_54 = happySpecReduce_2  7# happyReduction_54
+happyReduction_54 happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_2 of { (TokenString happy_var_2) -> 
+	happyIn13
+		 (Error happy_var_2
+	)}
+
+happyReduce_55 = happySpecReduce_1  7# happyReduction_55
+happyReduction_55 happy_x_1
+	 =  happyIn13
+		 (Impossible
+	)
+
+happyReduce_56 = happyReduce 6# 7# happyReduction_56
+happyReduction_56 (happy_x_6 `HappyStk`
+	happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut7 happy_x_2 of { happy_var_2 -> 
+	case happyOutTok happy_x_3 of { (TokenString happy_var_3) -> 
+	case happyOut20 happy_x_5 of { happy_var_5 -> 
+	happyIn13
+		 (ForeignCall happy_var_2 happy_var_3 happy_var_5
+	) `HappyStk` happyRest}}}
+
+happyReduce_57 = happyReduce 7# 7# happyReduction_57
+happyReduction_57 (happy_x_7 `HappyStk`
+	happy_x_6 `HappyStk`
+	happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut7 happy_x_3 of { happy_var_3 -> 
+	case happyOutTok happy_x_4 of { (TokenString happy_var_4) -> 
+	case happyOut20 happy_x_6 of { happy_var_6 -> 
+	happyIn13
+		 (LazyForeignCall happy_var_3 happy_var_4 happy_var_6
+	) `HappyStk` happyRest}}}
+
+happyReduce_58 = happySpecReduce_1  8# happyReduction_58
+happyReduction_58 happy_x_1
+	 =  happyIn14
+		 (FixedPool
+	)
+
+happyReduce_59 = happySpecReduce_1  8# happyReduction_59
+happyReduction_59 happy_x_1
+	 =  happyIn14
+		 (GrowablePool
+	)
+
+happyReduce_60 = happyReduce 6# 9# happyReduction_60
+happyReduction_60 (happy_x_6 `HappyStk`
+	happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut13 happy_x_2 of { happy_var_2 -> 
+	case happyOut16 happy_x_5 of { happy_var_5 -> 
+	happyIn15
+		 (Case happy_var_2 happy_var_5
+	) `HappyStk` happyRest}}
+
+happyReduce_61 = happySpecReduce_0  10# happyReduction_61
+happyReduction_61  =  happyIn16
+		 ([]
+	)
+
+happyReduce_62 = happySpecReduce_1  10# happyReduction_62
+happyReduction_62 happy_x_1
+	 =  case happyOut17 happy_x_1 of { happy_var_1 -> 
+	happyIn16
+		 ([happy_var_1]
+	)}
+
+happyReduce_63 = happySpecReduce_3  10# happyReduction_63
+happyReduction_63 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut17 happy_x_1 of { happy_var_1 -> 
+	case happyOut16 happy_x_3 of { happy_var_3 -> 
+	happyIn16
+		 (happy_var_1:happy_var_3
+	)}}
+
+happyReduce_64 = happyReduce 7# 11# happyReduction_64
+happyReduction_64 (happy_x_7 `HappyStk`
+	happy_x_6 `HappyStk`
+	happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOutTok happy_x_2 of { (TokenInt happy_var_2) -> 
+	case happyOut12 happy_x_4 of { happy_var_4 -> 
+	case happyOut13 happy_x_7 of { happy_var_7 -> 
+	happyIn17
+		 (Alt happy_var_2 happy_var_4 happy_var_7
+	) `HappyStk` happyRest}}}
+
+happyReduce_65 = happySpecReduce_3  11# happyReduction_65
+happyReduction_65 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokenInt happy_var_1) -> 
+	case happyOut13 happy_x_3 of { happy_var_3 -> 
+	happyIn17
+		 (ConstAlt happy_var_1 happy_var_3
+	)}}
+
+happyReduce_66 = happySpecReduce_3  11# happyReduction_66
+happyReduction_66 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut13 happy_x_3 of { happy_var_3 -> 
+	happyIn17
+		 (DefaultCase happy_var_3
+	)}
+
+happyReduce_67 = happySpecReduce_3  12# happyReduction_67
+happyReduction_67 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
+	case happyOut13 happy_x_3 of { happy_var_3 -> 
+	happyIn18
+		 (Op Plus happy_var_1 happy_var_3
+	)}}
+
+happyReduce_68 = happySpecReduce_3  12# happyReduction_68
+happyReduction_68 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
+	case happyOut13 happy_x_3 of { happy_var_3 -> 
+	happyIn18
+		 (Op Minus happy_var_1 happy_var_3
+	)}}
+
+happyReduce_69 = happySpecReduce_2  12# happyReduction_69
+happyReduction_69 happy_x_2
+	happy_x_1
+	 =  case happyOut13 happy_x_2 of { happy_var_2 -> 
+	happyIn18
+		 (Op Minus (Const (MkInt 0)) happy_var_2
+	)}
+
+happyReduce_70 = happySpecReduce_3  12# happyReduction_70
+happyReduction_70 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
+	case happyOut13 happy_x_3 of { happy_var_3 -> 
+	happyIn18
+		 (Op Times happy_var_1 happy_var_3
+	)}}
+
+happyReduce_71 = happySpecReduce_3  12# happyReduction_71
+happyReduction_71 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
+	case happyOut13 happy_x_3 of { happy_var_3 -> 
+	happyIn18
+		 (Op Divide happy_var_1 happy_var_3
+	)}}
+
+happyReduce_72 = happySpecReduce_3  12# happyReduction_72
+happyReduction_72 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
+	case happyOut13 happy_x_3 of { happy_var_3 -> 
+	happyIn18
+		 (Op Modulo happy_var_1 happy_var_3
+	)}}
+
+happyReduce_73 = happySpecReduce_3  12# happyReduction_73
+happyReduction_73 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
+	case happyOut13 happy_x_3 of { happy_var_3 -> 
+	happyIn18
+		 (Op FPlus happy_var_1 happy_var_3
+	)}}
+
+happyReduce_74 = happySpecReduce_3  12# happyReduction_74
+happyReduction_74 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
+	case happyOut13 happy_x_3 of { happy_var_3 -> 
+	happyIn18
+		 (Op FMinus happy_var_1 happy_var_3
+	)}}
+
+happyReduce_75 = happySpecReduce_2  12# happyReduction_75
+happyReduction_75 happy_x_2
+	happy_x_1
+	 =  case happyOut13 happy_x_2 of { happy_var_2 -> 
+	happyIn18
+		 (Op FMinus (Const (MkInt 0)) happy_var_2
+	)}
+
+happyReduce_76 = happySpecReduce_3  12# happyReduction_76
+happyReduction_76 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
+	case happyOut13 happy_x_3 of { happy_var_3 -> 
+	happyIn18
+		 (Op FTimes happy_var_1 happy_var_3
+	)}}
+
+happyReduce_77 = happySpecReduce_3  12# happyReduction_77
+happyReduction_77 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
+	case happyOut13 happy_x_3 of { happy_var_3 -> 
+	happyIn18
+		 (Op FDivide happy_var_1 happy_var_3
+	)}}
+
+happyReduce_78 = happySpecReduce_3  12# happyReduction_78
+happyReduction_78 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
+	case happyOut13 happy_x_3 of { happy_var_3 -> 
+	happyIn18
+		 (Op ShL happy_var_1 happy_var_3
+	)}}
+
+happyReduce_79 = happySpecReduce_3  12# happyReduction_79
+happyReduction_79 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
+	case happyOut13 happy_x_3 of { happy_var_3 -> 
+	happyIn18
+		 (Op ShR happy_var_1 happy_var_3
+	)}}
+
+happyReduce_80 = happySpecReduce_3  12# happyReduction_80
+happyReduction_80 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
+	case happyOut13 happy_x_3 of { happy_var_3 -> 
+	happyIn18
+		 (Op OpLT happy_var_1 happy_var_3
+	)}}
+
+happyReduce_81 = happySpecReduce_3  12# happyReduction_81
+happyReduction_81 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
+	case happyOut13 happy_x_3 of { happy_var_3 -> 
+	happyIn18
+		 (Op OpGT happy_var_1 happy_var_3
+	)}}
+
+happyReduce_82 = happySpecReduce_3  12# happyReduction_82
+happyReduction_82 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
+	case happyOut13 happy_x_3 of { happy_var_3 -> 
+	happyIn18
+		 (Op OpLE happy_var_1 happy_var_3
+	)}}
+
+happyReduce_83 = happySpecReduce_3  12# happyReduction_83
+happyReduction_83 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
+	case happyOut13 happy_x_3 of { happy_var_3 -> 
+	happyIn18
+		 (Op OpGE happy_var_1 happy_var_3
+	)}}
+
+happyReduce_84 = happySpecReduce_3  12# happyReduction_84
+happyReduction_84 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
+	case happyOut13 happy_x_3 of { happy_var_3 -> 
+	happyIn18
+		 (Op OpEQ happy_var_1 happy_var_3
+	)}}
+
+happyReduce_85 = happySpecReduce_3  12# happyReduction_85
+happyReduction_85 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
+	case happyOut13 happy_x_3 of { happy_var_3 -> 
+	happyIn18
+		 (Op OpFLT happy_var_1 happy_var_3
+	)}}
+
+happyReduce_86 = happySpecReduce_3  12# happyReduction_86
+happyReduction_86 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
+	case happyOut13 happy_x_3 of { happy_var_3 -> 
+	happyIn18
+		 (Op OpFGT happy_var_1 happy_var_3
+	)}}
+
+happyReduce_87 = happySpecReduce_3  12# happyReduction_87
+happyReduction_87 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
+	case happyOut13 happy_x_3 of { happy_var_3 -> 
+	happyIn18
+		 (Op OpFLE happy_var_1 happy_var_3
+	)}}
+
+happyReduce_88 = happySpecReduce_3  12# happyReduction_88
+happyReduction_88 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
+	case happyOut13 happy_x_3 of { happy_var_3 -> 
+	happyIn18
+		 (Op OpFGE happy_var_1 happy_var_3
+	)}}
+
+happyReduce_89 = happySpecReduce_3  12# happyReduction_89
+happyReduction_89 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
+	case happyOut13 happy_x_3 of { happy_var_3 -> 
+	happyIn18
+		 (Op OpFEQ happy_var_1 happy_var_3
+	)}}
+
+happyReduce_90 = happySpecReduce_0  13# happyReduction_90
+happyReduction_90  =  happyIn19
+		 ([]
+	)
+
+happyReduce_91 = happySpecReduce_1  13# happyReduction_91
+happyReduction_91 happy_x_1
+	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
+	happyIn19
+		 ([happy_var_1]
+	)}
+
+happyReduce_92 = happySpecReduce_3  13# happyReduction_92
+happyReduction_92 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
+	case happyOut19 happy_x_3 of { happy_var_3 -> 
+	happyIn19
+		 (happy_var_1:happy_var_3
+	)}}
+
+happyReduce_93 = happySpecReduce_0  14# happyReduction_93
+happyReduction_93  =  happyIn20
+		 ([]
+	)
+
+happyReduce_94 = happySpecReduce_3  14# happyReduction_94
+happyReduction_94 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut13 happy_x_1 of { happy_var_1 -> 
+	case happyOut7 happy_x_3 of { happy_var_3 -> 
+	happyIn20
+		 ([(happy_var_1,happy_var_3)]
+	)}}
+
+happyReduce_95 = happyReduce 5# 14# happyReduction_95
+happyReduction_95 (happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut13 happy_x_1 of { happy_var_1 -> 
+	case happyOut7 happy_x_3 of { happy_var_3 -> 
+	case happyOut20 happy_x_5 of { happy_var_5 -> 
+	happyIn20
+		 ((happy_var_1,happy_var_3):happy_var_5
+	) `HappyStk` happyRest}}}
+
+happyReduce_96 = happySpecReduce_1  15# happyReduction_96
+happyReduction_96 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokenInt happy_var_1) -> 
+	happyIn21
+		 (MkInt happy_var_1
+	)}
+
+happyReduce_97 = happySpecReduce_1  15# happyReduction_97
+happyReduction_97 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokenBigInt happy_var_1) -> 
+	happyIn21
+		 (MkBigInt happy_var_1
+	)}
+
+happyReduce_98 = happySpecReduce_1  15# happyReduction_98
+happyReduction_98 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokenChar happy_var_1) -> 
+	happyIn21
+		 (MkChar happy_var_1
+	)}
+
+happyReduce_99 = happySpecReduce_1  15# happyReduction_99
+happyReduction_99 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokenBool happy_var_1) -> 
+	happyIn21
+		 (MkBool happy_var_1
+	)}
+
+happyReduce_100 = happySpecReduce_1  15# happyReduction_100
+happyReduction_100 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokenFloat happy_var_1) -> 
+	happyIn21
+		 (MkFloat happy_var_1
+	)}
+
+happyReduce_101 = happySpecReduce_1  15# happyReduction_101
+happyReduction_101 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokenBigFloat happy_var_1) -> 
+	happyIn21
+		 (MkBigFloat happy_var_1
+	)}
+
+happyReduce_102 = happySpecReduce_1  15# happyReduction_102
+happyReduction_102 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokenString happy_var_1) -> 
+	happyIn21
+		 (MkString happy_var_1
+	)}
+
+happyReduce_103 = happySpecReduce_1  15# happyReduction_103
+happyReduction_103 happy_x_1
+	 =  happyIn21
+		 (MkUnit
+	)
+
+happyReduce_104 = happySpecReduce_1  15# happyReduction_104
+happyReduction_104 happy_x_1
+	 =  happyIn21
+		 (MkUnused
+	)
+
+happyReduce_105 = happyMonadReduce 0# 16# happyReduction_105
+happyReduction_105 (happyRest) tk
+	 = happyThen (( getLineNo)
+	) (\r -> happyReturn (happyIn22 r))
+
+happyReduce_106 = happyMonadReduce 0# 17# happyReduction_106
+happyReduction_106 (happyRest) tk
+	 = happyThen (( getFileName)
+	) (\r -> happyReturn (happyIn23 r))
+
+happyNewToken action sts stk
+	= lexer(\tk -> 
+	let cont i = happyDoAction i tk action sts stk in
+	case tk of {
+	TokenEOF -> happyDoAction 88# tk action sts stk;
+	TokenName happy_dollar_dollar -> cont 1#;
+	TokenString happy_dollar_dollar -> cont 2#;
+	TokenInt happy_dollar_dollar -> cont 3#;
+	TokenBigInt happy_dollar_dollar -> cont 4#;
+	TokenBool happy_dollar_dollar -> cont 5#;
+	TokenFloat happy_dollar_dollar -> cont 6#;
+	TokenBigFloat happy_dollar_dollar -> cont 7#;
+	TokenChar happy_dollar_dollar -> cont 8#;
+	TokenIntType -> cont 9#;
+	TokenBigIntType -> cont 10#;
+	TokenCharType -> cont 11#;
+	TokenBoolType -> cont 12#;
+	TokenFloatType -> cont 13#;
+	TokenBigFloatType -> cont 14#;
+	TokenStringType -> cont 15#;
+	TokenPtrType -> cont 16#;
+	TokenUnitType -> cont 17#;
+	TokenFunType -> cont 18#;
+	TokenDataType -> cont 19#;
+	TokenTyCType -> cont 20#;
+	TokenTyLinear -> cont 21#;
+	TokenTyEval -> cont 22#;
+	TokenAnyType -> cont 23#;
+	TokenUnit -> cont 24#;
+	TokenCon -> cont 25#;
+	TokenDefault -> cont 26#;
+	TokenLet -> cont 27#;
+	TokenCase -> cont 28#;
+	TokenOf -> cont 29#;
+	TokenIf -> cont 30#;
+	TokenThen -> cont 31#;
+	TokenElse -> cont 32#;
+	TokenWhile -> cont 33#;
+	TokenMemory -> cont 34#;
+	TokenFixed -> cont 35#;
+	TokenGrowable -> cont 36#;
+	TokenUnused -> cont 37#;
+	TokenIn -> cont 38#;
+	TokenLazy -> cont 39#;
+	TokenPar -> cont 40#;
+	TokenStrict -> cont 41#;
+	TokenEffect -> cont 42#;
+	TokenForeign -> cont 43#;
+	TokenError -> cont 44#;
+	TokenImpossible -> cont 45#;
+	TokenOB -> cont 46#;
+	TokenCB -> cont 47#;
+	TokenOCB -> cont 48#;
+	TokenCCB -> cont 49#;
+	TokenOSB -> cont 50#;
+	TokenCSB -> cont 51#;
+	TokenPlus -> cont 52#;
+	TokenMinus -> cont 53#;
+	TokenTimes -> cont 54#;
+	TokenDivide -> cont 55#;
+	TokenMod -> cont 56#;
+	TokenFPlus -> cont 57#;
+	TokenFMinus -> cont 58#;
+	TokenFTimes -> cont 59#;
+	TokenFDivide -> cont 60#;
+	TokenEquals -> cont 61#;
+	TokenEQ -> cont 62#;
+	TokenLE -> cont 63#;
+	TokenGE -> cont 64#;
+	TokenFEQ -> cont 65#;
+	TokenFLE -> cont 66#;
+	TokenFGE -> cont 67#;
+	TokenShL -> cont 68#;
+	TokenShR -> cont 69#;
+	TokenLT -> cont 70#;
+	TokenGT -> cont 71#;
+	TokenFLT -> cont 72#;
+	TokenFGT -> cont 73#;
+	TokenColon -> cont 74#;
+	TokenProj -> cont 75#;
+	TokenSemi -> cont 76#;
+	TokenComma -> cont 77#;
+	TokenBar -> cont 78#;
+	TokenDot -> cont 79#;
+	TokenLam -> cont 80#;
+	TokenArrow -> cont 81#;
+	TokenCInclude -> cont 82#;
+	TokenExtern -> cont 83#;
+	TokenExport -> cont 84#;
+	TokenCType -> cont 85#;
+	TokenInclude -> cont 86#;
+	TokenInline -> cont 87#;
+	_ -> happyError' tk
+	})
+
+happyError_ 88# tk = happyError' tk
+happyError_ _ tk = happyError' tk
+
+happyThen :: () => P a -> (a -> P b) -> P b
+happyThen = (thenP)
+happyReturn :: () => a -> P a
+happyReturn = (returnP)
+happyThen1 = happyThen
+happyReturn1 :: () => a -> P a
+happyReturn1 = happyReturn
+happyError' :: () => (Token) -> P a
+happyError' tk = (\token -> happyError) tk
+
+mkparse = happySomeParser where
+  happySomeParser = happyThen (happyParse 0#) (\x -> happyReturn (happyOut6 x))
+
+mkexpr = happySomeParser where
+  happySomeParser = happyThen (happyParse 1#) (\x -> happyReturn (happyOut13 x))
+
+mkdecl = happySomeParser where
+  happySomeParser = happyThen (happyParse 2#) (\x -> happyReturn (happyOut8 x))
+
+happySeq = happyDontSeq
+
+
+mkBind :: Name -> [Type] -> Type -> [Name] -> Expr -> Maybe String -> [CGFlag] -> Decl
+mkBind n tys ret ns expr export fl = Decl n ret (Bind (zip ns tys) 0 expr fl) export fl
+
+mkExtern :: Name -> [Type] -> Type -> [Name] -> Decl
+mkExtern n tys ret ns = Extern n ret tys
+
+parse :: String -> FilePath -> Result [Decl]
+parse s fn = mkparse s fn 1
+
+parseExpr :: String -> Result Expr
+parseExpr s = mkexpr s "[expr]" 1
+
+parseDecl :: String -> Result Decl
+parseDecl s = mkdecl s "[decl]" 1
+
+parseFile :: FilePath -> IO (Result [Decl])
+parseFile fn = do s <- readFile fn
+                  let x = parse s fn
+                  return x
+{-# LINE 1 "templates/GenericTemplate.hs" #-}
+{-# LINE 1 "templates/GenericTemplate.hs" #-}
+{-# LINE 1 "<built-in>" #-}
+{-# LINE 1 "<command-line>" #-}
+{-# LINE 1 "templates/GenericTemplate.hs" #-}
+-- Id: GenericTemplate.hs,v 1.26 2005/01/14 14:47:22 simonmar Exp 
+
+{-# LINE 13 "templates/GenericTemplate.hs" #-}
+
+
+
+
+
+-- Do not remove this comment. Required to fix CPP parsing when using GCC and a clang-compiled alex.
+#if __GLASGOW_HASKELL__ > 706
+#define LT(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.<# m)) :: Bool)
+#define GTE(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.>=# m)) :: Bool)
+#define EQ(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.==# m)) :: Bool)
+#else
+#define LT(n,m) (n Happy_GHC_Exts.<# m)
+#define GTE(n,m) (n Happy_GHC_Exts.>=# m)
+#define EQ(n,m) (n Happy_GHC_Exts.==# m)
+#endif
+{-# LINE 46 "templates/GenericTemplate.hs" #-}
+
+
+data Happy_IntList = HappyCons Happy_GHC_Exts.Int# Happy_IntList
+
+
+
+
+
+{-# LINE 67 "templates/GenericTemplate.hs" #-}
+
+{-# LINE 77 "templates/GenericTemplate.hs" #-}
+
+{-# LINE 86 "templates/GenericTemplate.hs" #-}
+
+infixr 9 `HappyStk`
+data HappyStk a = HappyStk a (HappyStk a)
+
+-----------------------------------------------------------------------------
+-- starting the parse
+
+happyParse start_state = happyNewToken start_state notHappyAtAll notHappyAtAll
+
+-----------------------------------------------------------------------------
+-- Accepting the parse
+
+-- If the current token is 0#, it means we've just accepted a partial
+-- parse (a %partial parser).  We must ignore the saved token on the top of
+-- the stack in this case.
+happyAccept 0# tk st sts (_ `HappyStk` ans `HappyStk` _) =
+        happyReturn1 ans
+happyAccept j tk st sts (HappyStk ans _) = 
+        (happyTcHack j (happyTcHack st)) (happyReturn1 ans)
+
+-----------------------------------------------------------------------------
+-- Arrays only: do the next action
+
+
+
+happyDoAction i tk st
+        = {- nothing -}
+
+
+          case action of
+                0#           -> {- nothing -}
+                                     happyFail i tk st
+                -1#          -> {- nothing -}
+                                     happyAccept i tk st
+                n | LT(n,(0# :: Happy_GHC_Exts.Int#)) -> {- nothing -}
+
+                                                   (happyReduceArr Happy_Data_Array.! rule) i tk st
+                                                   where rule = (Happy_GHC_Exts.I# ((Happy_GHC_Exts.negateInt# ((n Happy_GHC_Exts.+# (1# :: Happy_GHC_Exts.Int#))))))
+                n                 -> {- nothing -}
+
+
+                                     happyShift new_state i tk st
+                                     where new_state = (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#))
+   where off    = indexShortOffAddr happyActOffsets st
+         off_i  = (off Happy_GHC_Exts.+# i)
+         check  = if GTE(off_i,(0# :: Happy_GHC_Exts.Int#))
+                  then EQ(indexShortOffAddr happyCheck off_i, i)
+                  else False
+         action
+          | check     = indexShortOffAddr happyTable off_i
+          | otherwise = indexShortOffAddr happyDefActions st
+
+
+indexShortOffAddr (HappyA# arr) off =
+        Happy_GHC_Exts.narrow16Int# i
+  where
+        i = Happy_GHC_Exts.word2Int# (Happy_GHC_Exts.or# (Happy_GHC_Exts.uncheckedShiftL# high 8#) low)
+        high = Happy_GHC_Exts.int2Word# (Happy_GHC_Exts.ord# (Happy_GHC_Exts.indexCharOffAddr# arr (off' Happy_GHC_Exts.+# 1#)))
+        low  = Happy_GHC_Exts.int2Word# (Happy_GHC_Exts.ord# (Happy_GHC_Exts.indexCharOffAddr# arr off'))
+        off' = off Happy_GHC_Exts.*# 2#
+
+
+
+
+
+data HappyAddr = HappyA# Happy_GHC_Exts.Addr#
+
+
+
+
+-----------------------------------------------------------------------------
+-- HappyState data type (not arrays)
+
+{-# LINE 170 "templates/GenericTemplate.hs" #-}
+
+-----------------------------------------------------------------------------
+-- Shifting a token
+
+happyShift new_state 0# tk st sts stk@(x `HappyStk` _) =
+     let i = (case Happy_GHC_Exts.unsafeCoerce# x of { (Happy_GHC_Exts.I# (i)) -> i }) in
+--     trace "shifting the error token" $
+     happyDoAction i tk new_state (HappyCons (st) (sts)) (stk)
+
+happyShift new_state i tk st sts stk =
+     happyNewToken new_state (HappyCons (st) (sts)) ((happyInTok (tk))`HappyStk`stk)
+
+-- happyReduce is specialised for the common cases.
+
+happySpecReduce_0 i fn 0# tk st sts stk
+     = happyFail 0# tk st sts stk
+happySpecReduce_0 nt fn j tk st@((action)) sts stk
+     = happyGoto nt j tk st (HappyCons (st) (sts)) (fn `HappyStk` stk)
+
+happySpecReduce_1 i fn 0# tk st sts stk
+     = happyFail 0# tk st sts stk
+happySpecReduce_1 nt fn j tk _ sts@((HappyCons (st@(action)) (_))) (v1`HappyStk`stk')
+     = let r = fn v1 in
+       happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))
+
+happySpecReduce_2 i fn 0# tk st sts stk
+     = happyFail 0# tk st sts stk
+happySpecReduce_2 nt fn j tk _ (HappyCons (_) (sts@((HappyCons (st@(action)) (_))))) (v1`HappyStk`v2`HappyStk`stk')
+     = let r = fn v1 v2 in
+       happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))
+
+happySpecReduce_3 i fn 0# tk st sts stk
+     = happyFail 0# tk st sts stk
+happySpecReduce_3 nt fn j tk _ (HappyCons (_) ((HappyCons (_) (sts@((HappyCons (st@(action)) (_))))))) (v1`HappyStk`v2`HappyStk`v3`HappyStk`stk')
+     = let r = fn v1 v2 v3 in
+       happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))
+
+happyReduce k i fn 0# tk st sts stk
+     = happyFail 0# tk st sts stk
+happyReduce k nt fn j tk st sts stk
+     = case happyDrop (k Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) sts of
+         sts1@((HappyCons (st1@(action)) (_))) ->
+                let r = fn stk in  -- it doesn't hurt to always seq here...
+                happyDoSeq r (happyGoto nt j tk st1 sts1 r)
+
+happyMonadReduce k nt fn 0# tk st sts stk
+     = happyFail 0# tk st sts stk
+happyMonadReduce k nt fn j tk st sts stk =
+      case happyDrop k (HappyCons (st) (sts)) of
+        sts1@((HappyCons (st1@(action)) (_))) ->
+          let drop_stk = happyDropStk k stk in
+          happyThen1 (fn stk tk) (\r -> happyGoto nt j tk st1 sts1 (r `HappyStk` drop_stk))
+
+happyMonad2Reduce k nt fn 0# tk st sts stk
+     = happyFail 0# tk st sts stk
+happyMonad2Reduce k nt fn j tk st sts stk =
+      case happyDrop k (HappyCons (st) (sts)) of
+        sts1@((HappyCons (st1@(action)) (_))) ->
+         let drop_stk = happyDropStk k stk
+
+             off = indexShortOffAddr happyGotoOffsets st1
+             off_i = (off Happy_GHC_Exts.+# nt)
+             new_state = indexShortOffAddr happyTable off_i
+
+
+
+          in
+          happyThen1 (fn stk tk) (\r -> happyNewToken new_state sts1 (r `HappyStk` drop_stk))
+
+happyDrop 0# l = l
+happyDrop n (HappyCons (_) (t)) = happyDrop (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) t
+
+happyDropStk 0# l = l
+happyDropStk n (x `HappyStk` xs) = happyDropStk (n Happy_GHC_Exts.-# (1#::Happy_GHC_Exts.Int#)) xs
+
+-----------------------------------------------------------------------------
+-- Moving to a new state after a reduction
+
+
+happyGoto nt j tk st = 
+   {- nothing -}
+   happyDoAction j tk new_state
+   where off = indexShortOffAddr happyGotoOffsets st
+         off_i = (off Happy_GHC_Exts.+# nt)
+         new_state = indexShortOffAddr happyTable off_i
+
+
+
+
+-----------------------------------------------------------------------------
+-- Error recovery (0# is the error token)
+
+-- parse error if we are in recovery and we fail again
+happyFail 0# tk old_st _ stk@(x `HappyStk` _) =
+     let i = (case Happy_GHC_Exts.unsafeCoerce# x of { (Happy_GHC_Exts.I# (i)) -> i }) in
+--      trace "failing" $ 
+        happyError_ i tk
+
+{-  We don't need state discarding for our restricted implementation of
+    "error".  In fact, it can cause some bogus parses, so I've disabled it
+    for now --SDM
+
+-- discard a state
+happyFail  0# tk old_st (HappyCons ((action)) (sts)) 
+                                                (saved_tok `HappyStk` _ `HappyStk` stk) =
+--      trace ("discarding state, depth " ++ show (length stk))  $
+        happyDoAction 0# tk action sts ((saved_tok`HappyStk`stk))
+-}
+
+-- Enter error recovery: generate an error token,
+--                       save the old token and carry on.
+happyFail  i tk (action) sts stk =
+--      trace "entering error recovery" $
+        happyDoAction 0# tk action sts ( (Happy_GHC_Exts.unsafeCoerce# (Happy_GHC_Exts.I# (i))) `HappyStk` stk)
+
+-- Internal happy errors:
+
+notHappyAtAll :: a
+notHappyAtAll = error "Internal Happy error\n"
+
+-----------------------------------------------------------------------------
+-- Hack to get the typechecker to accept our action functions
+
+
+happyTcHack :: Happy_GHC_Exts.Int# -> a -> a
+happyTcHack x y = y
+{-# INLINE happyTcHack #-}
+
+
+-----------------------------------------------------------------------------
+-- Seq-ing.  If the --strict flag is given, then Happy emits 
+--      happySeq = happyDoSeq
+-- otherwise it emits
+--      happySeq = happyDontSeq
+
+happyDoSeq, happyDontSeq :: a -> b -> b
+happyDoSeq   a b = a `seq` b
+happyDontSeq a b = b
+
+-----------------------------------------------------------------------------
+-- Don't inline any functions from the template.  GHC has a nasty habit
+-- of deciding to inline happyGoto everywhere, which increases the size of
+-- the generated parser quite a bit.
+
+
+{-# NOINLINE happyDoAction #-}
+{-# NOINLINE happyTable #-}
+{-# NOINLINE happyCheck #-}
+{-# NOINLINE happyActOffsets #-}
+{-# NOINLINE happyGotoOffsets #-}
+{-# NOINLINE happyDefActions #-}
+
+{-# NOINLINE happyShift #-}
+{-# NOINLINE happySpecReduce_0 #-}
+{-# NOINLINE happySpecReduce_1 #-}
+{-# NOINLINE happySpecReduce_2 #-}
+{-# NOINLINE happySpecReduce_3 #-}
+{-# NOINLINE happyReduce #-}
+{-# NOINLINE happyMonadReduce #-}
+{-# NOINLINE happyGoto #-}
+{-# NOINLINE happyFail #-}
+
+-- end of Happy Template.
diff --git a/epic.cabal b/epic.cabal
--- a/epic.cabal
+++ b/epic.cabal
@@ -1,20 +1,22 @@
-Name:		epic
-Version:	0.9.3
-Author:		Edwin Brady
-License:	BSD3
-License-file:	LICENSE
-Maintainer:	eb@dcs.st-and.ac.uk
-Homepage:	http://www.dcs.st-and.ac.uk/~eb/epic.php
-Stability:	experimental
+Name:           epic
+Version:        0.9.3.2
+Author:         Edwin Brady
+License:        BSD3
+License-file:   LICENSE
+Maintainer:     eb@dcs.st-and.ac.uk
+Homepage:       http://www.dcs.st-and.ac.uk/~eb/epic.php
+bug-reports:    https://github.com/edwinb/EpiVM/issues
+Stability:      experimental
 Category:       Compilers/Interpreters
-Synopsis:	Compiler for a simple functional language
+Synopsis:       Compiler for a simple functional language
 Description:    Epic is a simple functional language which compiles to
-                reasonably efficient C code, using the Boehm-Demers-Weiser 
-	        garbage collector (<http://www.hpl.hp.com/personal/Hans_Boehm/gc/>). 
-                It is intended as a compiler back end, and is currently used 
-                as a back end for Epigram (<http://www.e-pig.org>) and Idris 
+                reasonably efficient C code, using the Boehm-Demers-Weiser
+                garbage collector (<http://www.hpl.hp.com/personal/Hans_Boehm/gc/>).
+                It is intended as a compiler back end, and is currently used
+                as a back end for Epigram (<http://www.e-pig.org>) and Idris
                 (<http://idris-lang.org/>).
-	        It can be invoked either as a library or an application.
+                It can be invoked either as a library or an application.
+tested-with:    GHC == 7.8.3
 
 Data-files:    evm/libevm.a evm/closure.h evm/stdfuns.h evm/stdfuns.c evm/mainprog.c evm/emalloc.h evm/gc_header.h
 Extra-source-files: evm/closure.c evm/closure.h evm/stdfuns.h evm/mainprog.c evm/stdfuns.c evm/Makefile evm/emalloc.c evm/emalloc.h evm/gc_header.h evm/sparks.c evm/sparks.h
@@ -22,20 +24,24 @@
 Cabal-Version:  >= 1.8.0.4
 Build-type:     Custom
 
+source-repository head
+  type:     git
+  location: https://github.com/edwinb/EpiVM.git
+
 Library
         Exposed-modules: Epic.Compiler Epic.Epic
         Other-modules: Epic.Bytecode Epic.Parser Epic.Scopecheck
                        Epic.Language Epic.Lexer Epic.CodegenC Epic.CodegenStack
-                       Epic.OTTLang Epic.Simplify Epic.Stackcode 
+                       Epic.OTTLang Epic.Simplify Epic.Stackcode
                        Epic.Evaluator Paths_epic
-        Build-depends:	base >=4 && <5 , mtl, Cabal, array, directory, process
+        Build-depends: base >=4 && <5, mtl, Cabal, array, directory, process
         Extensions:    BangPatterns
 
 Executable     epic
                Main-is: Main.lhs
                Other-modules: Epic.Bytecode Epic.Parser Epic.Scopecheck
                        Epic.Language Epic.Lexer Epic.CodegenC Epic.CodegenStack
-                       Epic.OTTLang Epic.Simplify Epic.Stackcode 
+                       Epic.OTTLang Epic.Simplify Epic.Stackcode
                        Epic.Evaluator Paths_epic
                Build-depends: base >=4 && <5, mtl, array, Cabal, directory, process
                Extensions: BangPatterns
diff --git a/evm/libevm.a b/evm/libevm.a
Binary files a/evm/libevm.a and b/evm/libevm.a differ
diff --git a/evm/stdfuns.c b/evm/stdfuns.c
--- a/evm/stdfuns.c
+++ b/evm/stdfuns.c
@@ -41,6 +41,18 @@
     return atoi(readStr());
 }
 
+FILE* get_stdin() {
+    return stdin; 
+}
+
+FILE* get_stdout() {
+    return stdout; 
+}
+
+FILE* get_stderr() {
+    return stderr; 
+}
+
 // FIXME: Do this properly!
 char* readStr() {
     char *buf = NULL;
@@ -102,7 +114,7 @@
     if (str == NULL) return 0;
     int v = strtol(str,&end,10);
 
-    if (*end != '\0') return 0; else return v;
+    if (*end != '\0' && *end != '\n' && *end != '\r') return 0; else return v;
 }
 
 char* intToStr(int x)
diff --git a/evm/stdfuns.h b/evm/stdfuns.h
--- a/evm/stdfuns.h
+++ b/evm/stdfuns.h
@@ -25,6 +25,10 @@
 // Force garbage collection
 void epicGC();
 
+FILE* get_stdin();
+FILE* get_stdout();
+FILE* get_stderr();
+
 int readInt();
 char* readStr();
 int streq(char* x, char* y);
