From c8027c8a4cd4623601f0199cb6f46b65dddfbbe9 Mon Sep 17 00:00:00 2001 From: aarne Date: Sat, 20 Jun 2009 13:50:34 +0000 Subject: [PATCH] the construct lin C t now replaces lock fields (in source code; still tempor used internally); lock fields removed from english resource as an example --- next-lib/src/english/MakeStructuralEng.gf | 8 +- next-lib/src/english/ParadigmsEng.gf | 102 ++--- src/GF/Compile/CheckGrammar.hs | 24 +- src/GF/Compile/Compute.hs | 6 +- src/GF/Grammar/Binary.hs | 3 + src/GF/Grammar/Grammar.hs | 3 + src/GF/Grammar/Lockfield.hs | 6 +- src/GF/Grammar/Macros.hs | 8 + src/GF/Grammar/Parser.hs | 470 ++++++++++------------ src/GF/Grammar/Parser.y | 2 + 10 files changed, 318 insertions(+), 314 deletions(-) diff --git a/next-lib/src/english/MakeStructuralEng.gf b/next-lib/src/english/MakeStructuralEng.gf index e2662ba88..9f014bf63 100644 --- a/next-lib/src/english/MakeStructuralEng.gf +++ b/next-lib/src/english/MakeStructuralEng.gf @@ -3,13 +3,11 @@ resource MakeStructuralEng = open CatEng, ParadigmsEng, ResEng, MorphoEng, Prelude in { oper --- mkConj : Str -> Str -> Number -> Conj = \x,y,n -> --- {s1 = x ; s2 = y ; n = n ; lock_Conj = <>} ; mkSubj : Str -> Subj = \x -> - {s = x ; lock_Subj = <>} ; + lin Subj {s = x} ; mkNP : Str -> Number -> NP = \s,n -> - regNP s n ** {lock_NP = <>} ; + lin NP (regNP s n) ; mkIDet : Str -> Number -> IDet = \s,n -> - {s = s ; n = n ; lock_IDet = <>} ; + lin IDet {s = s ; n = n} ; } diff --git a/next-lib/src/english/ParadigmsEng.gf b/next-lib/src/english/ParadigmsEng.gf index dcffa9832..97d597965 100644 --- a/next-lib/src/english/ParadigmsEng.gf +++ b/next-lib/src/english/ParadigmsEng.gf @@ -321,7 +321,7 @@ oper --2 Other categories -mkSubj : Str -> Subj = \s -> {s = s ; lock_Subj = <>} ; +mkSubj : Str -> Subj = \s -> lin Subj {s = s} ; --. --2 Definitions of paradigms @@ -373,11 +373,11 @@ mkSubj : Str -> Subj = \s -> {s = s ; lock_Subj = <>} ; mk4N man men (man + "'s") mens ; mk4N = \man,men,man's,men's -> - mkNoun man man's men men's ** {g = Neutr ; lock_N = <>} ; + lin N (mkNoun man man's men men's ** {g = Neutr}) ; - genderN g man = {s = man.s ; g = g ; lock_N = <>} ; + genderN g man = lin N {s = man.s ; g = g} ; - compoundN s n = {s = \\x,y => s ++ n.s ! x ! y ; g=n.g ; lock_N = <>} ; + compoundN s n = lin N {s = \\x,y => s ++ n.s ! x ! y ; g=n.g} ; mkPN = overload { mkPN : Str -> PN = regPN ; @@ -392,10 +392,10 @@ mkSubj : Str -> Subj = \s -> {s = s ; lock_Subj = <>} ; mkN2 : Str -> N2 = \s -> prepN2 (regN s) (mkPrep "of") } ; - prepN2 = \n,p -> n ** {lock_N2 = <> ; c2 = p.s} ; + prepN2 = \n,p -> lin N2 (n ** {c2 = p.s}) ; regN2 n = prepN2 (regN n) (mkPrep "of") ; - mkN3 = \n,p,q -> n ** {lock_N3 = <> ; c2 = p.s ; c3 = q.s} ; + mkN3 = \n,p,q -> lin N3 (n ** {c2 = p.s ; c3 = q.s}) ; --3 Relational common noun phrases -- @@ -406,39 +406,39 @@ mkSubj : Str -> Subj = \s -> {s = s ; lock_Subj = <>} ; cnN3 : CN -> Prep -> Prep -> N3 ; -- This is obsolete. - cnN2 = \n,p -> n ** {lock_N2 = <> ; c2 = p.s} ; - cnN3 = \n,p,q -> n ** {lock_N3 = <> ; c2 = p.s ; c3 = q.s} ; + cnN2 = \n,p -> lin N2 (n ** {c2 = p.s}) ; + cnN3 = \n,p,q -> lin N3 (n ** {c2 = p.s ; c3 = q.s}) ; regPN n = regGenPN n human ; - regGenPN n g = {s = table {Gen => n + "'s" ; _ => n} ; - g = g ; lock_PN = <>} ; - nounPN n = {s = n.s ! singular ; g = n.g ; lock_PN = <>} ; + regGenPN n g = lin PN {s = table {Gen => n + "'s" ; _ => n} ; g = g} ; + nounPN n = lin PN {s = n.s ! singular ; g = n.g} ; mkQuant = overload { mkQuant : (this, these : Str) -> Quant = \sg,pl -> mkQuantifier sg pl sg pl; mkQuant : (no_sg, no_pl, none_sg, non_pl : Str) -> Quant = mkQuantifier; } ; - mkQuantifier : Str -> Str -> Str -> Str -> Quant = \sg,pl,sg',pl' -> { + mkQuantifier : Str -> Str -> Str -> Str -> Quant = + \sg,pl,sg',pl' -> lin Quant { s = \\_ => table { Sg => sg ; Pl => pl } ; - sp = \\_ => table { Sg => regGenitiveS sg' ; Pl => regGenitiveS pl' } ; - lock_Quant = <> + sp = \\_ => table { Sg => regGenitiveS sg' ; Pl => regGenitiveS pl'} } ; - mkOrd : Str -> Ord = \x -> { s = regGenitiveS x; lock_Ord = <> }; + mkOrd : Str -> Ord = \x -> lin Ord { s = regGenitiveS x}; - mk2A a b = mkAdjective a a a b ** {lock_A = <>} ; + mk2A a b = lin A (mkAdjective a a a b) ; regA a = case a of { _ + ("a" | "e" | "i" | "o" | "u" | "y") + ? + _ + - ("a" | "e" | "i" | "o" | "u" | "y") + ? + _ => compoundADeg (regADeg a) ; - _ => regADeg a - } ** {lock_A = <>} ; + ("a" | "e" | "i" | "o" | "u" | "y") + ? + _ => + lin A (compoundADeg (regADeg a)) ; + _ => lin A (regADeg a) + } ; - prepA2 a p = a ** {c2 = p.s ; lock_A2 = <>} ; + prepA2 a p = lin A2 (a ** {c2 = p.s}) ; ADeg = A ; ---- - mkADeg a b c d = mkAdjective a b c d ** {lock_A = <>} ; + mkADeg a b c d = lin A (mkAdjective a b c d) ; regADeg happy = let @@ -466,15 +466,15 @@ mkSubj : Str -> Subj = \s -> {s = s ; lock_Subj = <>} ; adegA a = a ; - mkAdv x = ss x ** {lock_Adv = <>} ; - mkAdV x = ss x ** {lock_AdV = <>} ; - mkAdA x = ss x ** {lock_AdA = <>} ; - mkAdN x = ss x ** {lock_AdN = <>} ; + mkAdv x = lin Adv (ss x) ; + mkAdV x = lin AdV (ss x) ; + mkAdA x = lin AdA (ss x) ; + mkAdN x = lin AdN (ss x) ; - mkPrep p = ss p ** {lock_Prep = <>} ; + mkPrep p = lin Prep (ss p) ; noPrep = mkPrep [] ; - mk5V a b c d e = mkVerb a b c d e ** {s1 = [] ; lock_V = <>} ; + mk5V a b c d e = lin V (mkVerb a b c d e ** {s1 = []}) ; regV cry = let @@ -505,10 +505,10 @@ mkSubj : Str -> Subj = \s -> {s = s ; lock_Subj = <>} ; } ; irregV x y z = let reg = (regV x).s in - mk5V x (reg ! VPres) y z (reg ! VPresPart) ** {s1 = [] ; lock_V = <>} ; + mk5V x (reg ! VPres) y z (reg ! VPresPart) ** {s1 = []} ; irreg4V x y z w = let reg = (regV x).s in - mk5V x (reg ! VPres) y z w ** {s1 = [] ; lock_V = <>} ; + mk5V x (reg ! VPres) y z w ** {s1 = []} ; irregDuplV fit y z = let @@ -516,40 +516,41 @@ mkSubj : Str -> Subj = \s -> {s = s ; lock_Subj = <>} ; in mk5V fit (fit + "s") y z fitting ; - partV v p = {s = \\f => v.s ! f ++ p ; isRefl = v.isRefl ; lock_V = <>} ; - reflV v = {s = v.s ; part = v.part ; lock_V = v.lock_V ; isRefl = True} ; + partV v p = lin V {s = \\f => v.s ! f ++ p ; isRefl = v.isRefl} ; + reflV v = lin V {s = v.s ; part = v.part ; isRefl = True} ; - prepV2 v p = v ** {s = v.s ; s1 = v.s1 ; c2 = p.s ; lock_V2 = <>} ; + prepV2 v p = lin V2 {s = v.s ; s1 = v.s1 ; c2 = p.s ; isRefl = v.isRefl} ; dirV2 v = prepV2 v noPrep ; - prepPrepV3 v p q = v ** {s = v.s ; s1 = v.s1 ; c2 = p.s ; c3 = q.s ; lock_V3 = <>} ; + prepPrepV3 v p q = + lin V3 {s = v.s ; s1 = v.s1 ; c2 = p.s ; c3 = q.s ; isRefl = v.isRefl} ; dirV3 v p = prepPrepV3 v noPrep p ; dirdirV3 v = dirV3 v noPrep ; - mkVS v = v ** {lock_VS = <>} ; - mkVV v = { + mkVS v = lin VS v ; + mkVV v = lin VV { s = table {VVF vf => v.s ! vf ; _ => v.s ! VInf} ; --- variants {}} ; not used - isAux = False ; lock_VV = <> + isAux = False } ; - mkVQ v = v ** {lock_VQ = <>} ; + mkVQ v = v ; V0 : Type = V ; -- V2S, V2V, V2Q : Type = V2 ; AS, A2S, AV : Type = A ; A2V : Type = A2 ; - mkV0 v = v ** {lock_V = <>} ; - mkV2S v p = prepV2 v p ** {lock_V2S = <>} ; - mkV2V v p t = prepV2 v p ** {isAux = False ; lock_V2V = <>} ; - mkVA v = v ** {lock_VA = <>} ; - mkV2A v p = prepV2 v p ** {lock_V2A = <>} ; - mkV2Q v p = prepV2 v p ** {lock_V2Q = <>} ; + mkV0 v = v ; + mkV2S v p = prepV2 v p ; + mkV2V v p t = lin V2V (prepV2 v p ** {isAux = False}) ; + mkVA v = v ; + mkV2A v p = prepV2 v p ; + mkV2Q v p = prepV2 v p ; - mkAS v = v ** {lock_A = <>} ; - mkA2S v p = prepA2 v p ** {lock_A = <>} ; - mkAV v = v ** {lock_A = <>} ; - mkA2V v p = prepA2 v p ** {lock_A2 = <>} ; + mkAS v = v ; + mkA2S v p = prepA2 v p ; + mkAV v = v ; + mkA2V v p = prepA2 v p ; -- pre-overload API and overload definitions @@ -583,9 +584,9 @@ mkSubj : Str -> Subj = \s -> {s = s ; lock_Subj = <>} ; mkA = overload { mkA : Str -> A = regA ; mkA : (fat,fatter : Str) -> A = \fat,fatter -> - mkAdjective fat fatter (init fatter + "st") (fat + "ly") ** {lock_A = <>} ; + mkAdjective fat fatter (init fatter + "st") (fat + "ly") ; mkA : (good,better,best,well : Str) -> A = \a,b,c,d -> - mkAdjective a b c d ** {lock_A = <>} + mkAdjective a b c d } ; compoundA = compoundADeg ; @@ -655,7 +656,8 @@ mkSubj : Str -> Subj = \s -> {s = s ; lock_Subj = <>} ; mkConj : Str -> Str -> Number -> Conj = mk2Conj ; } ; - mk2Conj : Str -> Str -> Number -> Conj = \x,y,n -> sd2 x y ** { n = n; lock_Conj = <> } ; + mk2Conj : Str -> Str -> Number -> Conj = \x,y,n -> + lin Conj (sd2 x y ** {n = n}) ; ---- obsolete diff --git a/src/GF/Compile/CheckGrammar.hs b/src/GF/Compile/CheckGrammar.hs index 8fa5d25b6..43abffa02 100644 --- a/src/GF/Compile/CheckGrammar.hs +++ b/src/GF/Compile/CheckGrammar.hs @@ -38,7 +38,7 @@ import GF.Grammar.Predef import GF.Grammar.Macros import GF.Grammar.PatternMatch import GF.Grammar.AppPredefined -import GF.Grammar.Lockfield (isLockLabel) +import GF.Grammar.Lockfield (isLockLabel, lockRecType, unlockRecord) import GF.Data.Operations import GF.Infra.CheckM @@ -396,6 +396,10 @@ computeLType gr t = do let fs' = sortRec fs liftM RecType $ mapPairsM comp fs' + ELincat c t -> do + t' <- comp t + checkErr $ lockRecType c t' ---- locking to be removed AR 20/6/2009 + _ | ty == typeTok -> return typeStr _ | isPredefConstant ty -> return ty @@ -599,6 +603,11 @@ inferLType gr trm = case trm of ty <- inferPatt p return (trm, EPattType ty) + ELin c trm -> do + (trm',ty) <- infer trm + ty' <- checkErr $ lockRecType c ty ---- lookup c; remove lock AR 20/6/2009 + return $ (ELin c trm', ty') + _ -> prtFail "cannot infer lintype of" trm where @@ -861,6 +870,10 @@ checkLType env trm typ0 = do (def',ty) <- infer def -- tries to infer type of local constant check (Let (x,(Just ty,def')) body) typ + ELin c tr -> do + tr1 <- checkErr $ unlockRecord c tr + check tr1 typ + _ -> do (trm',ty') <- infer trm termWith trm' $ checkEq typ ty' trm' @@ -886,7 +899,14 @@ checkLType env trm typ0 = do Just (_,t) -> do (t',ty') <- check t ty return (l,(Just ty',t')) - _ -> raise $ "cannot find value for label" +++ prt l +++ "in" +++ prt_ (R rms) + _ -> raise $ + if isLockLabel l + then + let cat = drop 5 (prt l) in + prt_ (R rms) +++ "is not in the lincat of" +++ cat ++ + "; try wrapping it with lin " ++ cat + else + "cannot find value for label" +++ prt l +++ "in" +++ prt_ (R rms) checkCase arg val (p,t) = do cont <- pattContext env arg p diff --git a/src/GF/Compile/Compute.hs b/src/GF/Compile/Compute.hs index cf0803d98..062b6251c 100644 --- a/src/GF/Compile/Compute.hs +++ b/src/GF/Compile/Compute.hs @@ -26,7 +26,7 @@ import GF.Grammar.Macros import GF.Grammar.Lookup import GF.Compile.Refresh import GF.Grammar.PatternMatch -import GF.Grammar.Lockfield (isLockLabel) ---- +import GF.Grammar.Lockfield (isLockLabel,unlockRecord) ---- import GF.Grammar.AppPredefined @@ -219,6 +219,10 @@ computeTermOpt rec gr = comput True where (RecType rs, RecType ss) -> plusRecType r' s' _ -> return $ ExtR r' s' + ELin c r -> do + r' <- comp g r + unlockRecord c r' + T _ _ -> compTable g t V _ _ -> compTable g t diff --git a/src/GF/Grammar/Binary.hs b/src/GF/Grammar/Binary.hs index 18594d4eb..d3df904ba 100644 --- a/src/GF/Grammar/Binary.hs +++ b/src/GF/Grammar/Binary.hs @@ -148,6 +148,8 @@ instance Binary Term where put (FV x) = putWord8 35 >> put x put (Alts x) = putWord8 36 >> put x put (Strs x) = putWord8 37 >> put x + put (ELin x y) = putWord8 38 >> put (x,y) + get = do tag <- getWord8 case tag of 0 -> get >>= \x -> return (Vr x) @@ -186,6 +188,7 @@ instance Binary Term where 35 -> get >>= \x -> return (FV x) 36 -> get >>= \x -> return (Alts x) 37 -> get >>= \x -> return (Strs x) + 38 -> get >>= \(x,y) -> return (ELin x y) _ -> decodingError instance Binary Patt where diff --git a/src/GF/Grammar/Grammar.hs b/src/GF/Grammar/Grammar.hs index 13ddbdb8c..bfe676b57 100644 --- a/src/GF/Grammar/Grammar.hs +++ b/src/GF/Grammar/Grammar.hs @@ -147,6 +147,9 @@ data Term = | EPatt Patt -- ^ pattern (in macro definition): # p | EPattType Term -- ^ pattern type: pattern T + | ELincat Ident Term -- ^ boxed linearization type of Ident + | ELin Ident Term -- ^ boxed linearization of type Ident + | FV [Term] -- ^ alternatives in free variation: @variants { s ; ... }@ | Alts (Term, [(Term, Term)]) -- ^ alternatives by prefix: @pre {t ; s\/c ; ...}@ diff --git a/src/GF/Grammar/Lockfield.hs b/src/GF/Grammar/Lockfield.hs index 12b78ab9b..66a978770 100644 --- a/src/GF/Grammar/Lockfield.hs +++ b/src/GF/Grammar/Lockfield.hs @@ -36,8 +36,10 @@ lockRecType c t = plusRecType t $ RecType [(lockLabel c, RecType [])] unlockRecord :: Ident -> Term -> Err Term unlockRecord c ft = do let (xs,t) = termFormCnc ft - t' <- plusRecord t $ R [(lockLabel c, (Just (RecType []),R []))] - return $ mkAbs xs t' + let lock = R [(lockLabel c, (Just (RecType []),R []))] + case plusRecord t lock of + Ok t' -> return $ mkAbs xs t' + _ -> return $ mkAbs xs (ExtR t lock) lockLabel :: Ident -> Label lockLabel c = LIdent $! BS.append lockPrefix (ident2bs c) diff --git a/src/GF/Grammar/Macros.hs b/src/GF/Grammar/Macros.hs index 2c0761f00..c7a9cfa73 100644 --- a/src/GF/Grammar/Macros.hs +++ b/src/GF/Grammar/Macros.hs @@ -634,6 +634,14 @@ composOp co trm = do ty' <- co ty return (EPattType ty') + ELincat c ty -> + do ty' <- co ty + return (ELincat c ty') + + ELin c ty -> + do ty' <- co ty + return (ELin c ty') + _ -> return trm -- covers K, Vr, Cn, Sort, EPatt getTableType :: TInfo -> Err Type diff --git a/src/GF/Grammar/Parser.hs b/src/GF/Grammar/Parser.hs index 2975ce261..699870f18 100644 --- a/src/GF/Grammar/Parser.hs +++ b/src/GF/Grammar/Parser.hs @@ -451,48 +451,36 @@ happyIn73 x = unsafeCoerce# x happyOut73 :: (HappyAbsSyn ) -> ([Case]) happyOut73 x = unsafeCoerce# x {-# INLINE happyOut73 #-} -happyIn74 :: (Equation) -> (HappyAbsSyn ) +happyIn74 :: ((Term,Term)) -> (HappyAbsSyn ) happyIn74 x = unsafeCoerce# x {-# INLINE happyIn74 #-} -happyOut74 :: (HappyAbsSyn ) -> (Equation) +happyOut74 :: (HappyAbsSyn ) -> ((Term,Term)) happyOut74 x = unsafeCoerce# x {-# INLINE happyOut74 #-} -happyIn75 :: ([Equation]) -> (HappyAbsSyn ) +happyIn75 :: ([(Term,Term)]) -> (HappyAbsSyn ) happyIn75 x = unsafeCoerce# x {-# INLINE happyIn75 #-} -happyOut75 :: (HappyAbsSyn ) -> ([Equation]) +happyOut75 :: (HappyAbsSyn ) -> ([(Term,Term)]) happyOut75 x = unsafeCoerce# x {-# INLINE happyOut75 #-} -happyIn76 :: ((Term,Term)) -> (HappyAbsSyn ) +happyIn76 :: ([Decl]) -> (HappyAbsSyn ) happyIn76 x = unsafeCoerce# x {-# INLINE happyIn76 #-} -happyOut76 :: (HappyAbsSyn ) -> ((Term,Term)) +happyOut76 :: (HappyAbsSyn ) -> ([Decl]) happyOut76 x = unsafeCoerce# x {-# INLINE happyOut76 #-} -happyIn77 :: ([(Term,Term)]) -> (HappyAbsSyn ) +happyIn77 :: ([Decl]) -> (HappyAbsSyn ) happyIn77 x = unsafeCoerce# x {-# INLINE happyIn77 #-} -happyOut77 :: (HappyAbsSyn ) -> ([(Term,Term)]) +happyOut77 :: (HappyAbsSyn ) -> ([Decl]) happyOut77 x = unsafeCoerce# x {-# INLINE happyOut77 #-} -happyIn78 :: ([Decl]) -> (HappyAbsSyn ) +happyIn78 :: (Posn) -> (HappyAbsSyn ) happyIn78 x = unsafeCoerce# x {-# INLINE happyIn78 #-} -happyOut78 :: (HappyAbsSyn ) -> ([Decl]) +happyOut78 :: (HappyAbsSyn ) -> (Posn) happyOut78 x = unsafeCoerce# x {-# INLINE happyOut78 #-} -happyIn79 :: ([Decl]) -> (HappyAbsSyn ) -happyIn79 x = unsafeCoerce# x -{-# INLINE happyIn79 #-} -happyOut79 :: (HappyAbsSyn ) -> ([Decl]) -happyOut79 x = unsafeCoerce# x -{-# INLINE happyOut79 #-} -happyIn80 :: (Posn) -> (HappyAbsSyn ) -happyIn80 x = unsafeCoerce# x -{-# INLINE happyIn80 #-} -happyOut80 :: (HappyAbsSyn ) -> (Posn) -happyOut80 x = unsafeCoerce# x -{-# INLINE happyOut80 #-} happyInTok :: Token -> (HappyAbsSyn ) happyInTok x = unsafeCoerce# x {-# INLINE happyInTok #-} @@ -501,21 +489,21 @@ happyOutTok x = unsafeCoerce# x {-# INLINE happyOutTok #-} happyActOffsets :: HappyAddr -happyActOffsets = HappyA# "\x4e\x04\x4e\x04\x3c\x00\x4e\x04\x03\x01\x00\x00\x36\x04\x5f\x04\x6f\x04\x06\x00\xa4\x01\x6e\x04\x00\x00\x00\x00\x6b\x04\x6f\x01\xff\xff\x3c\x00\x00\x00\x8c\x00\x2f\x04\xc7\x00\xc7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x5c\x04\x1e\x02\xd5\x00\x1e\x02\x5b\x04\x59\x04\xf5\x01\x46\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x04\x03\x01\x16\x04\x49\x04\x1b\x04\x1a\x04\x19\x04\x12\x04\x11\x04\x10\x04\x3c\x00\x90\x01\x3c\x00\x5d\x01\x3c\x00\x52\x01\x48\x04\x53\x01\x35\x04\x17\x04\xfc\x03\x37\x04\x25\x00\x6f\x01\x0d\x04\x34\x04\x2a\x04\x00\x00\x00\x00\x30\x04\x21\x04\x00\x00\x20\x04\xe1\x01\xd5\x01\x26\x04\x23\x04\x18\x04\xd2\x01\x00\x00\xdf\x03\x3a\x01\x3a\x01\x00\x00\xe0\x03\xdd\x03\x00\x00\x00\x00\x00\x00\x00\x00\x14\x04\x3c\x00\x01\x00\x13\x04\xb6\x00\xb6\x00\xb6\x00\x79\x00\x3c\x00\x06\x04\x79\x00\x3c\x00\x0c\x04\xd1\x00\x00\x00\x00\x00\xda\x02\xe1\x01\xd6\x03\x00\x00\x00\x00\xe1\x01\xe1\x01\xe1\x01\x00\x00\xd8\x03\x00\x00\x00\x00\xc4\x03\xf8\x03\xf9\x03\xed\x03\xe7\x00\xf0\x03\x68\x00\x00\x00\xfe\x03\xef\x03\x6f\x01\x09\x01\x87\x00\xf5\x03\x3c\x00\x00\x00\x00\x00\x3c\x00\x3c\x00\xe1\x01\xe9\x03\x00\x00\x00\x00\x3c\x00\x3c\x00\xc7\x00\xe7\x03\x6f\x01\xf2\x03\xde\x03\xd3\x03\x00\x00\xa5\x03\xd1\x03\x3c\x00\xa3\x03\x3c\x00\x3c\x00\x42\x01\xd7\x03\xcc\x03\xd5\x03\xf3\x00\xd4\x03\xc9\x03\xb6\x03\xd0\x00\x3c\x00\x3a\x01\xb5\x03\xbe\x03\x00\x00\x00\x00\xac\x03\x9c\x03\x00\x00\x5f\x00\x00\x00\x00\x00\xc7\x03\x24\x00\x02\x00\x80\x00\x84\x03\x82\x03\x02\x00\x00\x00\xad\x03\x9b\x03\x00\x00\x81\x03\x6f\x01\x00\x00\x00\x00\x3c\x00\x3c\x00\x3c\x00\x00\x00\x3a\x01\x3a\x01\x3c\x00\x3a\x01\x00\x00\xb4\x03\x00\x00\x00\x00\x98\x03\x00\x00\x00\x00\x6f\x01\x3c\x00\x00\x00\x3a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9e\x03\xa7\x03\x00\x00\xab\x03\x68\x03\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x01\x00\x00\x00\x00\x00\x00\x65\x03\x3a\x01\x00\x00\x00\x00\x91\x03\x9a\x03\x00\x00\xa1\x03\xf8\xff\x37\x03\x02\x00\x80\x03\x9d\x03\x62\x03\x00\x00\x83\x03\x37\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc9\x01\x55\x03\x97\x03\xd1\x00\x00\x00\x00\x00\x89\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x03\x00\x00\x00\x00\x3c\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8c\x03\x86\x03\x7d\x03\x7b\x03\x00\x00\x00\x00\x6f\x01\x00\x00\x00\x00\x88\x03\x00\x00\x00\x00\x7c\x03\x4b\x03\x00\x00\x8d\x03\x5f\x00\x00\x00\x44\x03\x7e\x03\x79\x03\x40\x03\x6c\x03\x39\x03\x02\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x03\x78\x03\x00\x00\x74\x03\x00\x00\x00\x00\x6d\x03\x00\x00\x35\x03\x6b\x03\x00\x00\xab\x00\x61\x03\x00\x00\xab\x00\x00\x00\x60\x03\x00\x00\xab\x00\x5d\x03\x00\x00\x25\x03\x58\x03\x00\x00\x20\x03\x56\x03\x00\x00\xab\x00\x54\x03\x00\x00\x1e\x03\x47\x03\x00\x00\x6e\x00\x00\x00\x00\x00\x50\x03\x02\x00\x45\x03\x37\x03\x00\x00\x12\x03\x11\x03\xb8\x01\x8b\x02\x43\x03\x05\x00\x0a\x03\x17\x01\x3e\x03\xf6\x02\x00\x00\x77\x02\x3c\x03\xf5\x02\x2c\x03\xf3\x02\x08\x00\x27\x03\x63\x02\x2b\x03\x22\x03\x4f\x02\x08\x00\xf0\x00\x34\x02\x21\x03\xea\x02\x00\x00\x00\x00\x53\x00\x24\x03\x00\x00\x00\x00\x00\x00\x1a\x03\x00\x00\x0c\x03\x19\x03\xe6\x02\x17\x03\x13\x03\x00\x00\x00\x00\xd2\x02\x00\x00\x10\x03\x00\x00\x00\x00\x00\x00\xcf\x02\x00\x00\x3c\x00\x3c\x00\x56\x00\x03\x03\xee\xff\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x3c\x00\x02\x03\x00\x00\x3c\x00\x00\x00\xcc\x02\x00\x00\xf9\x02\x3c\x00\xfe\x02\x00\x00\xc8\x02\x3c\x00\x00\x00\x00\x00\xb8\x01\x00\x00\xff\xff\xb8\x01\x09\x03\xdf\x02\x00\x00\x00\x00\xdb\x02\xc6\x02\x00\x00\x00\x00\x00\x00\x00\x00\xb0\x02\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\xb2\x02\x98\x02\x00\x00\xb8\x01\x53\x00\xab\x02\x5c\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x02\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x02\x00\x00\x00\x00\x3c\x00\x75\x02\x00\x00\x59\x02\x83\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x02\x00\x00\x00\x00\x00\x00"# +happyActOffsets = HappyA# "\xcc\x04\xcc\x04\x3b\x00\xcc\x04\x92\x01\x00\x00\xb1\x04\xd7\x04\xd6\x04\x06\x00\x90\x01\xd1\x04\x00\x00\x00\x00\xcf\x04\x82\x01\xff\xff\x3b\x00\x00\x00\x95\x00\x97\x04\xa2\x00\xa2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x15\x02\x0d\x00\x96\x04\x91\x04\x15\x02\xbf\x04\xbd\x04\xdf\x01\xbc\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x04\x92\x01\x8b\x04\xad\x04\x7c\x04\x7b\x04\x7a\x04\x78\x04\x75\x04\x74\x04\x3b\x00\x6e\x01\x3b\x00\x78\x01\x3b\x00\x60\x01\xac\x04\xcb\x01\xcb\x01\x19\x02\xa5\x04\x8c\x04\x71\x04\x9b\x04\xf5\xff\x70\x04\x99\x04\x8f\x04\x00\x00\x00\x00\x92\x04\x87\x04\x00\x00\x85\x04\xcb\x01\xcf\x01\x88\x04\x95\x04\x89\x04\xd4\x00\x00\x00\x55\x04\x48\x01\x48\x01\x00\x00\x44\x04\x41\x04\x00\x00\x00\x00\x00\x00\x00\x00\x79\x04\x3b\x00\x01\x00\x77\x04\xb3\x00\xb3\x00\xb3\x00\x77\x00\x3b\x00\x6c\x04\x77\x00\x3b\x00\x6f\x04\xb8\x00\x00\x00\x00\x00\x7a\x01\xcb\x01\x3a\x04\x00\x00\x00\x00\xcb\x01\xcb\x01\xcb\x01\x00\x00\x3d\x04\x00\x00\x00\x00\x38\x04\x6b\x04\x5b\x04\x61\x04\xc5\x00\x52\x04\xbf\x00\x00\x00\x63\x04\x54\x04\x82\x01\x2c\x01\x69\x00\x56\x04\x3b\x00\x00\x00\x00\x00\x3b\x00\x3b\x00\xcb\x01\x4f\x04\x00\x00\x00\x00\x3b\x00\x3b\x00\xa2\x00\x4b\x04\x00\x00\x1c\x04\x47\x04\x3b\x00\x1a\x04\x3b\x00\x3b\x00\x51\x04\x51\x04\xf9\x00\x3e\x04\x33\x04\x3c\x04\x0e\x01\x37\x04\x31\x04\x30\x04\xf8\x00\x3b\x00\x48\x01\x2c\x04\x35\x04\x00\x00\x00\x00\x11\x04\x0f\x04\x00\x00\xe8\xff\x00\x00\x00\x00\x28\x04\x20\x00\x02\x00\x97\x00\xfb\x03\xeb\x03\x02\x00\x00\x00\x16\x04\x15\x04\x82\x01\x00\x00\xe8\x03\x82\x01\x00\x00\x00\x00\x3b\x00\x3b\x00\x3b\x00\x00\x00\x48\x01\x48\x01\x3b\x00\x48\x01\x00\x00\x18\x04\x00\x00\x00\x00\xfd\x03\x00\x00\x48\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x04\x1d\x04\x00\x00\x21\x04\xde\x03\x00\x00\x00\x00\x00\x00\x00\x00\x48\x01\x00\x00\x00\x00\x00\x00\xcd\x03\x48\x01\x00\x00\x00\x00\xfa\x03\x02\x04\x00\x00\x0a\x04\x09\x00\xc9\x04\x02\x00\xe4\x03\x03\x04\xc6\x03\x00\x00\xf1\x03\xc9\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\x00\xc4\x03\x05\x04\xb8\x00\x00\x00\x00\x00\xd2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdd\x03\x3b\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\x03\xe6\x03\xdb\x03\xda\x03\x00\x00\x00\x00\x82\x01\x00\x00\x00\x00\x00\x00\xe7\x03\x00\x00\x00\x00\xd9\x03\xa9\x03\x00\x00\xe9\x03\xe8\xff\x00\x00\xad\x03\xe5\x03\xe0\x03\x94\x03\xbe\x03\x92\x03\x02\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x98\x03\xd0\x03\x00\x00\xc9\x03\x00\x00\x00\x00\xc1\x03\x00\x00\x8c\x03\xc0\x03\x00\x00\x5b\x00\xbf\x03\x00\x00\x5b\x00\x00\x00\xbd\x03\x00\x00\x5b\x00\xac\x03\x00\x00\x77\x03\xab\x03\x00\x00\x74\x03\xa6\x03\x00\x00\x5b\x00\xa5\x03\x00\x00\x73\x03\xa4\x03\x00\x00\x59\x00\x00\x00\x00\x00\xa1\x03\x02\x00\x97\x03\xc9\x04\x00\x00\x6c\x03\x5a\x03\xc6\x01\x6f\x02\x90\x03\x16\x01\x58\x03\x18\x01\x8b\x03\x56\x03\x00\x00\x5c\x02\x86\x03\x53\x03\x88\x03\x50\x03\x08\x00\x83\x03\x49\x02\x89\x03\x71\x03\x36\x02\x08\x00\x51\x01\x13\x02\x70\x03\x3b\x03\x00\x00\x00\x00\x51\x00\x7c\x03\x00\x00\x00\x00\x00\x00\x67\x03\x00\x00\x6a\x03\x76\x03\x46\x03\x75\x03\x6f\x03\x00\x00\x00\x00\x32\x03\x00\x00\x5f\x03\x00\x00\x00\x00\x00\x00\x1f\x03\x00\x00\x3b\x00\x3b\x00\x4c\x00\x52\x03\xee\xff\x00\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x3b\x00\x51\x03\x00\x00\x3b\x00\x00\x00\x1c\x03\x00\x00\x48\x03\x3b\x00\x4c\x03\x00\x00\x17\x03\x3b\x00\x00\x00\x00\x00\xc6\x01\x00\x00\xff\xff\xc6\x01\x57\x03\x41\x03\x00\x00\x00\x00\x42\x03\x39\x03\x00\x00\x00\x00\x00\x00\x00\x00\x29\x03\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x34\x03\x1e\x03\x00\x00\xc6\x01\x51\x00\x11\x03\xf1\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\x02\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xca\x02\x00\x00\x00\x00\x3b\x00\xe4\x02\x00\x00\xb7\x02\xe1\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc7\x02\x00\x00\x00\x00\x00\x00"# happyGotoOffsets :: HappyAddr -happyGotoOffsets = HappyA# "\x39\x01\x0b\x03\x3f\x05\x74\x02\x7d\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x02\x1d\x03\xff\x02\x00\x00\x00\x00\x6b\x02\xcd\x02\xc2\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x05\x00\x00\x00\x00\x5b\x01\x45\x02\xf4\x00\x00\x00\x00\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8b\x03\x00\x00\x22\x05\x68\x01\x75\x03\x14\x02\x00\x00\x00\x00\x00\x00\x00\x00\x09\x02\x00\x00\x00\x00\x7c\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb9\x02\x79\x01\x00\x00\x00\x00\x0c\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x05\x27\x02\x00\x00\x43\x02\x1c\x02\xfd\x01\x8c\x02\x05\x05\x00\x00\xa4\x02\xef\x04\x00\x00\xd1\x02\x00\x00\x00\x00\x00\x00\xd6\x00\xcb\x01\x00\x00\x00\x00\xd6\x00\xd6\x00\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x02\xb1\x01\x00\x00\x00\x00\xe8\x04\x00\x00\x00\x00\xf7\x02\xd2\x04\xd8\xff\x00\x00\x00\x00\x00\x00\xcb\x04\xb5\x04\xc0\x02\x00\x00\x9b\x01\x00\x00\x00\x00\x00\x00\x00\x00\x28\x02\x00\x00\xae\x04\x86\x00\x98\x04\x91\x04\x00\x00\x00\x00\x00\x00\x00\x00\x99\x01\x00\x00\x00\x00\x00\x00\x99\x01\x5f\x03\x0f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x02\x00\x00\x00\x00\x00\x00\x00\x00\xf2\x02\x00\x00\x00\x00\x00\x00\x3b\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x01\x00\x00\x00\x00\x49\x03\xd9\x02\xbb\x02\x00\x00\xe7\x01\xc3\x02\x7b\x04\xc1\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x01\x74\x04\x00\x00\xdc\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x01\x00\x00\x00\x00\x00\x00\x0a\x01\x73\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\x01\xe8\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x01\x18\x00\x5e\x00\x1b\x00\xc8\x00\x0c\x00\x59\x00\xae\x00\xaa\x00\x3d\x00\x7f\x00\x00\x00\xe2\x02\xce\x02\xbc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x04\x57\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x02\x00\x00\xb5\x02\x67\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf4\x01\x19\x02\x00\x00\x00\x00\x00\x00\x9d\x02\x41\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x92\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86\x02\x00\x00\x00\x00\x72\x02\x00\x00\x00\x00\x00\x00\x5e\x02\x00\x00\x00\x00\xe8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x02\x00\x00\x00\x00\xe6\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x02\x00\x00\xa2\x00\x00\x00\x00\x00\x00\x00\xa5\x01\x16\x00\x00\x00\x00\x00\x58\x00\x93\x00\x00\x00\x00\x00\x00\x00\xf7\xff\x00\x00\x7c\x00\x00\x00\x04\x00\x8c\x01\x00\x00\x3e\x00\x00\x00\x00\x00\x4c\x00\x14\x00\x00\x00\x1e\x00\xbb\x01\x63\x00\x00\x00\x00\x00\xea\x01\x15\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\x01\xf2\x01\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x01\x00\x00\x3a\x04\x24\x04\xf3\xff\x00\x00\xec\x01\x00\x00\x00\x00\x00\x00\x1d\x04\x00\x00\x07\x04\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\xea\x03\x00\x00\x00\x00\xf8\x00\xe3\x03\x00\x00\x00\x00\x9a\x01\x93\x01\x16\x03\x76\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x88\x01\x81\x01\x00\x00\xcd\x03\x6e\x01\x00\x00\x55\x01\x3d\x01\xc6\x03\x32\x01\x08\x01\x00\x00\xb0\x03\x00\x00\xfe\x00\xdf\x00\x00\x00\xdb\x00\x10\x01\xe5\x00\x00\x00\x18\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x01\x00\x00\xa9\x03\x00\x00\xb4\x00\x00\x00\x00\x00\x7a\x00\x00\x00\x00\x00\x00\x00\x62\x00\xcf\x00\x00\x00\x00\x00\x93\x03\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe7\xff\x00\x00\x00\x00\x00\x00\x00\x00\xc1\xff\x00\x00\x00\x00"# +happyGotoOffsets = HappyA# "\x64\x00\x30\x03\xbe\x04\x92\x02\xda\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x02\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x02\xc8\x02\xaa\x02\x00\x00\x00\x00\x76\x02\x07\x03\x04\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb7\x04\x93\x01\x63\x02\x00\x00\x00\x00\x7e\x01\x00\x00\x00\x00\xfd\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb5\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x03\x00\x00\xa1\x04\xd2\x01\x0a\x03\xfb\x02\x00\x00\x4f\x01\x3d\x01\x00\x00\x00\x00\x00\x00\x50\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x77\x01\x00\x00\x00\x00\xdf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9a\x04\x8b\x02\x00\x00\x24\x02\xc3\x01\x1f\x01\x8e\x02\x84\x04\x00\x00\xd9\x04\x7d\x04\x00\x00\x9e\x00\x00\x00\x00\x00\x00\x00\x3a\x01\x3d\x02\x00\x00\x00\x00\x3a\x01\x3a\x01\x3a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x02\x1a\x02\x00\x00\x00\x00\x67\x04\x00\x00\x00\x00\xf0\x01\x60\x04\xd8\xff\x00\x00\x00\x00\x00\x00\x4a\x04\x43\x04\x02\x03\x00\x00\x00\x00\x65\x02\x00\x00\x2d\x04\xee\x01\x26\x04\x10\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x02\x00\x00\x00\x00\x00\x00\x1a\x02\xf4\x02\xe5\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x00\x00\x00\x00\x6d\x02\x00\x00\x00\x00\x00\x00\xdd\x01\x00\x00\x00\x00\x39\x02\x00\x00\x00\x00\xde\x02\xa3\x02\x87\x02\x00\x00\xcf\x02\xf5\x02\x09\x04\xe7\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x01\x00\x00\x00\x00\x00\x00\xc9\x00\x95\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbf\x01\x0b\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x01\x17\x00\x55\x00\x53\x00\x6a\x00\x1b\x00\x88\x00\xac\x00\xab\x00\x76\x00\x70\x00\x00\x00\xee\x02\xd9\x02\x8f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf3\x03\xec\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x02\x00\x00\x91\x02\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x02\x44\x02\x00\x00\x00\x00\x00\x00\x80\x02\xd6\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa9\x00\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x02\x00\x00\x00\x00\x81\x02\x00\x00\x00\x00\x00\x00\x7d\x02\x00\x00\x00\x00\x02\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x9a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x02\x00\x00\x38\x01\x00\x00\x00\x00\x00\x00\x0f\x01\x05\x00\x00\x00\x00\x00\x42\x00\xba\x01\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x10\x00\x00\x00\xf8\xff\x95\x01\x00\x00\x79\x00\x00\x00\x00\x00\x7e\x00\x64\x01\x00\x00\x34\x00\xf7\x01\x62\x00\x00\x00\x00\x00\xa1\x01\x5f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x02\x8b\x01\x37\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x01\x00\x00\xcf\x03\xb9\x03\x5c\x01\x00\x00\x8e\x01\x00\x00\x00\x00\x00\x00\xb2\x03\x00\x00\x9c\x03\x00\x00\x00\x00\x95\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x03\x00\x00\x00\x00\x3e\x01\x78\x03\x00\x00\x00\x00\xf1\x00\xf2\x01\xc1\x02\xed\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\x01\xb1\x01\x00\x00\x62\x03\x81\x01\x00\x00\x75\x01\x56\x01\x5b\x03\x30\x01\xfe\x00\x00\x00\x45\x03\x00\x00\xea\x00\xd0\x00\x00\x00\xc3\x00\xcd\x00\x01\x01\x00\x00\xf6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc2\x00\x00\x00\x3e\x03\x00\x00\xb7\x00\x00\x00\x00\x00\x7d\x00\x00\x00\x00\x00\x00\x00\x41\x00\x8e\x00\x00\x00\x00\x00\x28\x03\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc7\xff\x00\x00\x00\x00\x00\x00\x00\x00\xc3\xff\x00\x00\x00\x00"# happyDefActions :: HappyAddr -happyDefActions = HappyA# "\xfa\xff\xfa\xff\x00\x00\x00\x00\x00\x00\xf9\xff\x00\x00\x86\xff\x84\xff\x82\xff\x7b\xff\x71\xff\x6f\xff\x6d\xff\x00\x00\x00\x00\x00\x00\x2c\xff\x69\xff\x00\x00\x93\xff\x00\x00\x00\x00\x3d\xff\x3b\xff\x3a\xff\x3c\xff\x3e\xff\x00\x00\x67\xff\x00\x00\x00\x00\x93\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\xff\x6a\xff\x6c\xff\x61\xff\x6e\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xff\x00\x00\x00\x00\x93\xff\x5f\xff\x00\x00\x72\xff\x00\x00\x92\xff\x00\x00\x93\xff\x9c\xff\x00\x00\x00\x00\x00\x00\x30\xff\x00\x00\x31\xff\x32\xff\x00\x00\x00\x00\x68\xff\x00\x00\x5c\xff\x2b\xff\x00\x00\x00\x00\x00\x00\x6e\xff\x73\xff\x00\x00\x00\x00\x29\xff\x51\xff\x00\x00\x39\xff\x4d\xff\x49\xff\x48\xff\x47\xff\x4c\xff\x00\x00\x00\x00\x7a\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\xff\x85\xff\x82\xff\x7b\xff\x93\xff\x8c\xff\x83\xff\x7c\xff\x7d\xff\x81\xff\x70\xff\x00\x00\x40\xff\x8d\xff\x00\x00\x00\x00\x38\xff\x00\x00\x9c\xff\x00\x00\x28\xff\x58\xff\x52\xff\x00\x00\x00\x00\x4c\xff\x00\x00\x4f\xff\x00\x00\x60\xff\x63\xff\x2c\xff\x00\x00\x5c\xff\x00\x00\x65\xff\x64\xff\x00\x00\x00\x00\x00\x00\x00\x00\x36\xff\x00\x00\x22\xff\x00\x00\x87\xff\x00\x00\x00\x00\x00\x00\x93\xff\x00\x00\x00\x00\x00\x00\x25\xff\x00\x00\x47\xff\x4c\xff\x5e\xff\x00\x00\x00\x00\x4c\xff\x5f\xff\x00\x00\x00\x00\x00\x00\xf7\xff\xf6\xff\x00\x00\x00\x00\xf8\xff\xeb\xff\xfb\xff\xec\xff\xef\xff\xd6\xff\x00\x00\xd4\xff\x00\x00\x00\x00\x00\x00\x78\xff\x00\x00\x00\x00\x57\xff\x00\x00\x00\x00\x80\xff\x74\xff\x5f\xff\x00\x00\x00\x00\x77\xff\x00\x00\x00\x00\x00\x00\x00\x00\x95\xff\x96\xff\x91\xff\x8a\xff\x00\x00\x9b\xff\x88\xff\x00\x00\x00\x00\x35\xff\x00\x00\x2f\xff\x8e\xff\x8f\xff\x66\xff\x5b\xff\x00\x00\x2b\xff\x2a\xff\x00\x00\x00\x00\x44\xff\x53\xff\x45\xff\x55\xff\x29\xff\x50\xff\x4b\xff\x46\xff\x39\xff\x00\x00\x4a\xff\x3f\xff\x00\x00\xfc\xff\xe3\xff\xe6\xff\xd6\xff\xdf\xff\x00\x00\x00\x00\xdd\xff\x00\x00\xdb\xff\x00\x00\xdf\xff\x19\xff\x19\xff\x19\xff\x19\xff\x19\xff\x19\xff\x19\xff\x19\xff\x19\xff\x19\xff\x00\x00\x00\x00\x00\x00\x00\x00\xe2\xff\x89\xff\x41\xff\x37\xff\x27\xff\x4e\xff\x2e\xff\x62\xff\x00\x00\x23\xff\x21\xff\x00\x00\x00\x00\x5a\xff\x26\xff\x59\xff\x24\xff\x00\x00\x1f\xff\x00\x00\x00\x00\x5d\xff\x54\xff\x4a\xff\x7e\xff\x7f\xff\x00\x00\xf4\xff\xf5\xff\x00\x00\x00\x00\xea\xff\x00\x00\xeb\xff\xf0\xff\x00\x00\xed\xff\xd9\xff\x00\x00\x00\x00\x00\x00\x00\x00\x56\xff\x75\xff\x76\xff\x00\x00\x00\x00\x94\xff\x8b\xff\x79\xff\xe7\xff\x00\x00\xe4\xff\xd5\xff\xd6\xff\x19\xff\x19\xff\x00\x00\xcd\xff\x00\x00\x00\x00\xcc\xff\x00\x00\x00\x00\xca\xff\x00\x00\xcb\xff\x00\x00\xc9\xff\x00\x00\x00\x00\xd0\xff\x00\x00\x00\x00\xc6\xff\x00\x00\x00\x00\xcf\xff\x00\x00\x00\x00\xce\xff\x00\x00\x00\x00\xd1\xff\x00\x00\xde\xff\xe1\xff\x00\x00\x00\x00\x00\x00\xdf\xff\xdc\xff\x00\x00\x00\x00\x1b\xff\x19\xff\x00\x00\x9c\xff\xa6\xff\x98\xff\x00\x00\x00\x00\x9a\xff\x19\xff\x00\x00\xa0\xff\x00\x00\xa8\xff\x98\xff\x00\x00\x19\xff\x98\xff\x00\x00\x19\xff\x98\xff\x00\x00\x19\xff\x19\xff\xa4\xff\xc7\xff\xc8\xff\x00\x00\x00\x00\x20\xff\x1e\xff\xf3\xff\x00\x00\xd3\xff\x00\x00\x00\x00\xeb\xff\x00\x00\xf1\xff\xee\xff\xd8\xff\x00\x00\xd2\xff\xe8\xff\xe5\xff\xa3\xff\xbc\xff\x00\x00\xab\xff\x00\x00\x00\x00\x34\xff\x00\x00\x00\x00\x43\xff\x42\xff\xa1\xff\x00\x00\xaf\xff\x00\x00\x00\x00\xa7\xff\x00\x00\x9f\xff\x00\x00\xad\xff\x00\x00\x00\x00\x00\x00\xa5\xff\x00\x00\x00\x00\xa9\xff\x1c\xff\x1b\xff\x19\xff\x00\x00\x1b\xff\x00\x00\x00\x00\xe0\xff\xda\xff\x00\x00\x00\x00\xc5\xff\x1a\xff\x19\xff\x19\xff\xb3\xff\x00\x00\x19\xff\x99\xff\x19\xff\x19\xff\x00\x00\x19\xff\x19\xff\x97\xff\x00\x00\x33\xff\x19\xff\x19\xff\x9e\xff\x19\xff\x1b\xff\x00\x00\x00\x00\xeb\xff\xf2\xff\xd7\xff\xe9\xff\xb1\xff\xbd\xff\x00\x00\xbb\xff\x00\x00\xba\xff\x19\xff\xb5\xff\xb7\xff\x19\xff\xc2\xff\xb4\xff\xc1\xff\x19\xff\x00\x00\xbf\xff\xbe\xff\x00\x00\x19\xff\xc4\xff\x00\x00\x00\x00\xb2\xff\xc0\xff\xb6\xff\xb9\xff\x19\xff\x9d\xff\xb8\xff\x1d\xff\x00\x00\x19\xff\xc3\xff"# +happyDefActions = HappyA# "\xfa\xff\xfa\xff\x00\x00\x00\x00\x00\x00\xf9\xff\x00\x00\x87\xff\x85\xff\x83\xff\x7c\xff\x70\xff\x6e\xff\x6c\xff\x00\x00\x00\x00\x00\x00\x2c\xff\x68\xff\x00\x00\x93\xff\x00\x00\x00\x00\x3d\xff\x3b\xff\x3a\xff\x3c\xff\x3e\xff\x00\x00\x00\x00\x93\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\xff\x69\xff\x6b\xff\x61\xff\x6d\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xff\x00\x00\x00\x00\x93\xff\x5f\xff\x00\x00\x73\xff\x00\x00\x00\x00\x00\x00\x92\xff\x00\x00\x93\xff\x9c\xff\x00\x00\x00\x00\x30\xff\x00\x00\x31\xff\x32\xff\x00\x00\x00\x00\x67\xff\x00\x00\x5c\xff\x2b\xff\x00\x00\x00\x00\x00\x00\x6d\xff\x74\xff\x00\x00\x00\x00\x29\xff\x51\xff\x00\x00\x39\xff\x4d\xff\x49\xff\x48\xff\x47\xff\x4c\xff\x00\x00\x00\x00\x7b\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\xff\x86\xff\x83\xff\x7c\xff\x93\xff\x8c\xff\x84\xff\x7d\xff\x7e\xff\x82\xff\x6f\xff\x00\x00\x40\xff\x8d\xff\x00\x00\x00\x00\x38\xff\x00\x00\x9c\xff\x00\x00\x28\xff\x58\xff\x52\xff\x00\x00\x00\x00\x4c\xff\x00\x00\x4f\xff\x00\x00\x60\xff\x63\xff\x2c\xff\x00\x00\x5c\xff\x00\x00\x65\xff\x64\xff\x00\x00\x00\x00\x00\x00\x00\x00\x88\xff\x00\x00\x00\x00\x00\x00\x93\xff\x00\x00\x00\x00\x71\xff\x72\xff\x00\x00\x25\xff\x00\x00\x47\xff\x4c\xff\x5e\xff\x00\x00\x00\x00\x4c\xff\x5f\xff\x00\x00\x00\x00\x00\x00\xf7\xff\xf6\xff\x00\x00\x00\x00\xf8\xff\xeb\xff\xfb\xff\xec\xff\xef\xff\xd6\xff\x00\x00\xd4\xff\x00\x00\x00\x00\x00\x00\x79\xff\x00\x00\x00\x00\x36\xff\x57\xff\x00\x00\x00\x00\x81\xff\x75\xff\x5f\xff\x00\x00\x00\x00\x78\xff\x00\x00\x00\x00\x00\x00\x00\x00\x95\xff\x96\xff\x91\xff\x8a\xff\x00\x00\x9b\xff\x00\x00\x2f\xff\x8e\xff\x8f\xff\x66\xff\x5b\xff\x00\x00\x2b\xff\x2a\xff\x00\x00\x00\x00\x44\xff\x53\xff\x45\xff\x55\xff\x29\xff\x50\xff\x4b\xff\x46\xff\x39\xff\x00\x00\x4a\xff\x3f\xff\x00\x00\xfc\xff\xe3\xff\xe6\xff\xd6\xff\xdf\xff\x00\x00\x00\x00\xdd\xff\x00\x00\xdb\xff\x00\x00\xdf\xff\x1c\xff\x1c\xff\x1c\xff\x1c\xff\x1c\xff\x1c\xff\x1c\xff\x1c\xff\x1c\xff\x1c\xff\x00\x00\x00\x00\x00\x00\x00\x00\xe2\xff\x89\xff\x41\xff\x37\xff\x27\xff\x4e\xff\x2e\xff\x62\xff\x00\x00\x00\x00\x00\x00\x5a\xff\x26\xff\x59\xff\x24\xff\x00\x00\x22\xff\x00\x00\x00\x00\x5d\xff\x54\xff\x4a\xff\x35\xff\x7f\xff\x80\xff\x00\x00\xf4\xff\xf5\xff\x00\x00\x00\x00\xea\xff\x00\x00\xeb\xff\xf0\xff\x00\x00\xed\xff\xd9\xff\x00\x00\x00\x00\x00\x00\x00\x00\x56\xff\x76\xff\x77\xff\x00\x00\x00\x00\x94\xff\x8b\xff\x7a\xff\xe7\xff\x00\x00\xe4\xff\xd5\xff\xd6\xff\x1c\xff\x1c\xff\x00\x00\xcd\xff\x00\x00\x00\x00\xcc\xff\x00\x00\x00\x00\xca\xff\x00\x00\xcb\xff\x00\x00\xc9\xff\x00\x00\x00\x00\xd0\xff\x00\x00\x00\x00\xc6\xff\x00\x00\x00\x00\xcf\xff\x00\x00\x00\x00\xce\xff\x00\x00\x00\x00\xd1\xff\x00\x00\xde\xff\xe1\xff\x00\x00\x00\x00\x00\x00\xdf\xff\xdc\xff\x00\x00\x00\x00\x1e\xff\x1c\xff\x00\x00\x9c\xff\xa6\xff\x98\xff\x00\x00\x00\x00\x9a\xff\x1c\xff\x00\x00\xa0\xff\x00\x00\xa8\xff\x98\xff\x00\x00\x1c\xff\x98\xff\x00\x00\x1c\xff\x98\xff\x00\x00\x1c\xff\x1c\xff\xa4\xff\xc7\xff\xc8\xff\x00\x00\x00\x00\x23\xff\x21\xff\xf3\xff\x00\x00\xd3\xff\x00\x00\x00\x00\xeb\xff\x00\x00\xf1\xff\xee\xff\xd8\xff\x00\x00\xd2\xff\xe8\xff\xe5\xff\xa3\xff\xbc\xff\x00\x00\xab\xff\x00\x00\x00\x00\x34\xff\x00\x00\x00\x00\x43\xff\x42\xff\xa1\xff\x00\x00\xaf\xff\x00\x00\x00\x00\xa7\xff\x00\x00\x9f\xff\x00\x00\xad\xff\x00\x00\x00\x00\x00\x00\xa5\xff\x00\x00\x00\x00\xa9\xff\x1f\xff\x1e\xff\x1c\xff\x00\x00\x1e\xff\x00\x00\x00\x00\xe0\xff\xda\xff\x00\x00\x00\x00\xc5\xff\x1d\xff\x1c\xff\x1c\xff\xb3\xff\x00\x00\x1c\xff\x99\xff\x1c\xff\x1c\xff\x00\x00\x1c\xff\x1c\xff\x97\xff\x00\x00\x33\xff\x1c\xff\x1c\xff\x9e\xff\x1c\xff\x1e\xff\x00\x00\x00\x00\xeb\xff\xf2\xff\xd7\xff\xe9\xff\xb1\xff\xbd\xff\x00\x00\xbb\xff\x00\x00\xba\xff\x1c\xff\xb5\xff\xb7\xff\x1c\xff\xc2\xff\xb4\xff\xc1\xff\x1c\xff\x00\x00\xbf\xff\xbe\xff\x00\x00\x1c\xff\xc4\xff\x00\x00\x00\x00\xb2\xff\xc0\xff\xb6\xff\xb9\xff\x1c\xff\x9d\xff\xb8\xff\x20\xff\x00\x00\x1c\xff\xc3\xff"# happyCheck :: HappyAddr -happyCheck = HappyA# "\xff\xff\x02\x00\x0a\x00\x04\x00\x03\x00\x17\x00\x04\x00\x01\x00\x30\x00\x12\x00\x32\x00\x4a\x00\x06\x00\x07\x00\x08\x00\x0a\x00\x11\x00\x39\x00\x0a\x00\x1c\x00\x15\x00\x11\x00\x17\x00\x12\x00\x19\x00\x13\x00\x1b\x00\x1c\x00\x1d\x00\x11\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x1f\x00\x25\x00\x1d\x00\x10\x00\x28\x00\x10\x00\x36\x00\x2b\x00\x1f\x00\x2d\x00\x12\x00\x0a\x00\x3c\x00\x31\x00\x4a\x00\x0d\x00\x15\x00\x1e\x00\x47\x00\x1e\x00\x1c\x00\x39\x00\x3a\x00\x42\x00\x1d\x00\x3d\x00\x3e\x00\x02\x00\x40\x00\x04\x00\x4a\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x41\x00\x47\x00\x47\x00\x36\x00\x0b\x00\x0c\x00\x11\x00\x4a\x00\x47\x00\x3c\x00\x15\x00\x15\x00\x17\x00\x16\x00\x19\x00\x4a\x00\x1b\x00\x1c\x00\x1b\x00\x1d\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x4a\x00\x25\x00\x4a\x00\x17\x00\x28\x00\x4a\x00\x42\x00\x2b\x00\x4a\x00\x2d\x00\x45\x00\x13\x00\x19\x00\x31\x00\x22\x00\x16\x00\x08\x00\x13\x00\x0a\x00\x1d\x00\x1b\x00\x39\x00\x3a\x00\x14\x00\x20\x00\x3d\x00\x3e\x00\x02\x00\x40\x00\x04\x00\x20\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x21\x00\x17\x00\x1e\x00\x4a\x00\x4a\x00\x36\x00\x11\x00\x0b\x00\x05\x00\x4a\x00\x15\x00\x08\x00\x17\x00\x08\x00\x19\x00\x14\x00\x18\x00\x36\x00\x4a\x00\x17\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x47\x00\x25\x00\x23\x00\x21\x00\x28\x00\x4a\x00\x4a\x00\x18\x00\x1e\x00\x47\x00\x1e\x00\x4a\x00\x17\x00\x08\x00\x25\x00\x4a\x00\x4a\x00\x28\x00\x29\x00\x17\x00\x0f\x00\x39\x00\x3a\x00\x22\x00\x47\x00\x3d\x00\x3e\x00\x02\x00\x40\x00\x04\x00\x22\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x17\x00\x17\x00\x07\x00\x4a\x00\x17\x00\x4a\x00\x11\x00\x35\x00\x4a\x00\x0e\x00\x15\x00\x22\x00\x17\x00\x3b\x00\x19\x00\x22\x00\x45\x00\x02\x00\x47\x00\x04\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0a\x00\x25\x00\x4a\x00\x0d\x00\x28\x00\x0f\x00\x18\x00\x11\x00\x12\x00\x4a\x00\x1d\x00\x15\x00\x16\x00\x17\x00\x19\x00\x19\x00\x19\x00\x23\x00\x07\x00\x1d\x00\x19\x00\x39\x00\x3a\x00\x0a\x00\x47\x00\x3d\x00\x4a\x00\x02\x00\x40\x00\x04\x00\x4a\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x4a\x00\x0f\x00\x0d\x00\x1a\x00\x12\x00\x10\x00\x11\x00\x2f\x00\x30\x00\x36\x00\x15\x00\x16\x00\x17\x00\x02\x00\x19\x00\x04\x00\x47\x00\x39\x00\x1d\x00\x19\x00\x4a\x00\x43\x00\x44\x00\x45\x00\x0d\x00\x47\x00\x47\x00\x02\x00\x11\x00\x04\x00\x47\x00\x05\x00\x15\x00\x16\x00\x17\x00\x0a\x00\x19\x00\x2f\x00\x30\x00\x4a\x00\x1d\x00\x24\x00\x11\x00\x4a\x00\x27\x00\x1a\x00\x15\x00\x39\x00\x17\x00\x25\x00\x19\x00\x25\x00\x2f\x00\x30\x00\x1d\x00\x24\x00\x43\x00\x44\x00\x45\x00\x00\x00\x47\x00\x02\x00\x02\x00\x1a\x00\x04\x00\x3c\x00\x30\x00\x37\x00\x3f\x00\x37\x00\x3a\x00\x0b\x00\x3a\x00\x24\x00\x4a\x00\x39\x00\x08\x00\x11\x00\x43\x00\x44\x00\x45\x00\x15\x00\x47\x00\x17\x00\x4a\x00\x19\x00\x02\x00\x13\x00\x04\x00\x1d\x00\x48\x00\x49\x00\x43\x00\x44\x00\x45\x00\x0b\x00\x47\x00\x02\x00\x1e\x00\x04\x00\x0f\x00\x11\x00\x30\x00\x12\x00\x32\x00\x15\x00\x0b\x00\x17\x00\x35\x00\x19\x00\x05\x00\x39\x00\x11\x00\x1d\x00\x3b\x00\x02\x00\x15\x00\x04\x00\x17\x00\x0e\x00\x19\x00\x33\x00\x34\x00\x35\x00\x1d\x00\x08\x00\x4a\x00\x43\x00\x44\x00\x45\x00\x11\x00\x47\x00\x0f\x00\x35\x00\x15\x00\x41\x00\x17\x00\x4a\x00\x19\x00\x3b\x00\x2f\x00\x30\x00\x1d\x00\x25\x00\x2f\x00\x30\x00\x28\x00\x29\x00\x44\x00\x45\x00\x39\x00\x43\x00\x44\x00\x45\x00\x39\x00\x47\x00\x30\x00\x33\x00\x34\x00\x35\x00\x08\x00\x4a\x00\x43\x00\x44\x00\x45\x00\x39\x00\x47\x00\x0f\x00\x30\x00\x17\x00\x04\x00\x19\x00\x42\x00\x43\x00\x33\x00\x34\x00\x35\x00\x39\x00\x0c\x00\x35\x00\x43\x00\x44\x00\x45\x00\x11\x00\x47\x00\x3b\x00\x4a\x00\x15\x00\x41\x00\x17\x00\x04\x00\x19\x00\x48\x00\x49\x00\x44\x00\x45\x00\x36\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x3c\x00\x11\x00\x30\x00\x4a\x00\x28\x00\x15\x00\x35\x00\x17\x00\x35\x00\x19\x00\x4a\x00\x39\x00\x3b\x00\x30\x00\x3b\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0a\x00\x4a\x00\x39\x00\x0a\x00\x28\x00\x0f\x00\x48\x00\x49\x00\x0f\x00\x04\x00\x35\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x3b\x00\x48\x00\x49\x00\x26\x00\x25\x00\x07\x00\x11\x00\x28\x00\x29\x00\x2c\x00\x15\x00\x05\x00\x17\x00\x04\x00\x19\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x4a\x00\x11\x00\x0b\x00\x0c\x00\x28\x00\x15\x00\x25\x00\x17\x00\x25\x00\x19\x00\x33\x00\x34\x00\x35\x00\x26\x00\x27\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x25\x00\x33\x00\x34\x00\x35\x00\x28\x00\x42\x00\x43\x00\x0b\x00\x0c\x00\x04\x00\x0a\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x42\x00\x43\x00\x2e\x00\x2f\x00\x30\x00\x25\x00\x11\x00\x25\x00\x28\x00\x29\x00\x15\x00\x35\x00\x17\x00\x39\x00\x19\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x33\x00\x34\x00\x35\x00\x0a\x00\x28\x00\x33\x00\x34\x00\x35\x00\x2e\x00\x2f\x00\x30\x00\x25\x00\x1a\x00\x04\x00\x05\x00\x42\x00\x43\x00\x09\x00\x0a\x00\x39\x00\x42\x00\x43\x00\x0d\x00\x0e\x00\x26\x00\x35\x00\x28\x00\x29\x00\x2a\x00\x38\x00\x2c\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x32\x00\x33\x00\x34\x00\x1a\x00\x25\x00\x37\x00\x38\x00\x28\x00\x29\x00\x3b\x00\x03\x00\x2e\x00\x2f\x00\x30\x00\x35\x00\x26\x00\x02\x00\x28\x00\x29\x00\x2a\x00\x1a\x00\x2c\x00\x39\x00\x1a\x00\x26\x00\x27\x00\x03\x00\x32\x00\x33\x00\x34\x00\x26\x00\x27\x00\x37\x00\x38\x00\x05\x00\x26\x00\x3b\x00\x28\x00\x29\x00\x2a\x00\x19\x00\x2c\x00\x25\x00\x1a\x00\x36\x00\x28\x00\x29\x00\x32\x00\x33\x00\x34\x00\x26\x00\x27\x00\x37\x00\x38\x00\x43\x00\x26\x00\x3b\x00\x28\x00\x29\x00\x2a\x00\x47\x00\x2c\x00\x47\x00\x1a\x00\x33\x00\x34\x00\x35\x00\x32\x00\x33\x00\x34\x00\x26\x00\x27\x00\x37\x00\x38\x00\x05\x00\x26\x00\x3b\x00\x28\x00\x29\x00\x2a\x00\x1e\x00\x2c\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x32\x00\x33\x00\x34\x00\x0b\x00\x0c\x00\x37\x00\x38\x00\x12\x00\x39\x00\x3b\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x1e\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x0f\x00\x39\x00\x06\x00\x07\x00\x0b\x00\x0c\x00\x01\x00\x3f\x00\x39\x00\x0d\x00\x0e\x00\x06\x00\x07\x00\x08\x00\x46\x00\x47\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x33\x00\x34\x00\x35\x00\x0d\x00\x0e\x00\x09\x00\x0a\x00\x18\x00\x39\x00\x34\x00\x35\x00\x34\x00\x35\x00\x1a\x00\x3f\x00\x09\x00\x0a\x00\x3d\x00\x3e\x00\x3d\x00\x3e\x00\x46\x00\x47\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x3d\x00\x3e\x00\x01\x00\x02\x00\x05\x00\x47\x00\x12\x00\x18\x00\x39\x00\x47\x00\x12\x00\x12\x00\x47\x00\x07\x00\x3f\x00\x47\x00\x07\x00\x04\x00\x36\x00\x04\x00\x12\x00\x46\x00\x47\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x04\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x39\x00\x47\x00\x18\x00\x12\x00\x12\x00\x0a\x00\x3f\x00\x40\x00\x39\x00\x12\x00\x47\x00\x0f\x00\x47\x00\x47\x00\x3f\x00\x40\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x12\x00\x39\x00\x12\x00\x47\x00\x0f\x00\x3d\x00\x3e\x00\x3f\x00\x39\x00\x10\x00\x47\x00\x47\x00\x3d\x00\x3e\x00\x3f\x00\x26\x00\x19\x00\x28\x00\x29\x00\x2a\x00\x12\x00\x2c\x00\x10\x00\x47\x00\x10\x00\x47\x00\x10\x00\x32\x00\x33\x00\x34\x00\x47\x00\x10\x00\x37\x00\x38\x00\x10\x00\x10\x00\x3b\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x10\x00\x47\x00\x10\x00\x0a\x00\x07\x00\x47\x00\x42\x00\x39\x00\x0a\x00\x18\x00\x07\x00\x42\x00\x47\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x04\x00\x47\x00\x17\x00\x0c\x00\x1a\x00\x10\x00\x1a\x00\x39\x00\x1a\x00\x0e\x00\x04\x00\x47\x00\x1a\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x0a\x00\x07\x00\x47\x00\x10\x00\x1a\x00\x47\x00\x2d\x00\x39\x00\x47\x00\x05\x00\x0a\x00\x14\x00\x18\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x39\x00\x2d\x00\x12\x00\x1a\x00\x47\x00\x47\x00\x3f\x00\x47\x00\x39\x00\x0f\x00\x07\x00\x1a\x00\x1a\x00\x35\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x35\x00\x39\x00\x1a\x00\x10\x00\x10\x00\x1a\x00\x10\x00\x3f\x00\x39\x00\x47\x00\x1a\x00\x47\x00\x1a\x00\x10\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x0c\x00\x39\x00\x19\x00\x18\x00\x0d\x00\x14\x00\x06\x00\x3f\x00\x39\x00\x1a\x00\x18\x00\x10\x00\x12\x00\x47\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x43\x00\x39\x00\x47\x00\x12\x00\x19\x00\x0d\x00\x0d\x00\x3f\x00\x39\x00\x47\x00\x45\x00\x47\x00\x0f\x00\x05\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x18\x00\x39\x00\x14\x00\x1a\x00\x0c\x00\x13\x00\x0a\x00\x3f\x00\x39\x00\x0a\x00\x35\x00\x47\x00\x2d\x00\x10\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x0d\x00\x39\x00\x47\x00\x47\x00\x47\x00\x00\x00\x12\x00\x3f\x00\x39\x00\x48\x00\x19\x00\x47\x00\x47\x00\x47\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x19\x00\x39\x00\x19\x00\x19\x00\x47\x00\x0c\x00\x09\x00\x3f\x00\x39\x00\x0d\x00\x2e\x00\x1e\x00\x48\x00\xff\xff\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3f\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3f\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3f\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3f\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3f\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3f\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3f\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3f\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3f\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"# +happyCheck = HappyA# "\xff\xff\x02\x00\x0d\x00\x04\x00\x03\x00\x17\x00\x04\x00\x01\x00\x30\x00\x11\x00\x32\x00\x48\x00\x06\x00\x07\x00\x08\x00\x48\x00\x11\x00\x39\x00\x0a\x00\x0a\x00\x15\x00\x10\x00\x17\x00\x1f\x00\x19\x00\x13\x00\x1b\x00\x1c\x00\x1d\x00\x35\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x1e\x00\x25\x00\x1d\x00\x19\x00\x10\x00\x18\x00\x05\x00\x0a\x00\x2c\x00\x11\x00\x30\x00\x46\x00\x30\x00\x31\x00\x32\x00\x0e\x00\x23\x00\x46\x00\x1e\x00\x39\x00\x38\x00\x39\x00\x44\x00\x1f\x00\x3c\x00\x3d\x00\x02\x00\x3f\x00\x04\x00\x48\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x40\x00\x46\x00\x46\x00\x15\x00\x41\x00\x48\x00\x11\x00\x48\x00\x46\x00\x12\x00\x15\x00\x1d\x00\x17\x00\x46\x00\x19\x00\x13\x00\x1b\x00\x1c\x00\x48\x00\x1c\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x48\x00\x25\x00\x41\x00\x20\x00\x48\x00\x00\x00\x12\x00\x02\x00\x2c\x00\x13\x00\x1d\x00\x19\x00\x30\x00\x31\x00\x32\x00\x05\x00\x1c\x00\x17\x00\x08\x00\x17\x00\x38\x00\x39\x00\x20\x00\x14\x00\x3c\x00\x3d\x00\x02\x00\x3f\x00\x04\x00\x48\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x18\x00\x21\x00\x14\x00\x48\x00\x35\x00\x1e\x00\x11\x00\x48\x00\x48\x00\x15\x00\x15\x00\x23\x00\x17\x00\x16\x00\x19\x00\x21\x00\x46\x00\x1d\x00\x1b\x00\x17\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x48\x00\x25\x00\x48\x00\x16\x00\x46\x00\x22\x00\x46\x00\x0b\x00\x1b\x00\x06\x00\x07\x00\x17\x00\x19\x00\x31\x00\x32\x00\x48\x00\x0d\x00\x0e\x00\x18\x00\x17\x00\x38\x00\x39\x00\x22\x00\x48\x00\x3c\x00\x3d\x00\x02\x00\x3f\x00\x04\x00\x48\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x48\x00\x1d\x00\x17\x00\x48\x00\x17\x00\x17\x00\x11\x00\x48\x00\x48\x00\x08\x00\x15\x00\x0a\x00\x17\x00\x22\x00\x19\x00\x22\x00\x22\x00\x0a\x00\x48\x00\x19\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x48\x00\x25\x00\x44\x00\x08\x00\x46\x00\x1a\x00\x1e\x00\x0a\x00\x1a\x00\x04\x00\x05\x00\x26\x00\x0f\x00\x31\x00\x32\x00\x24\x00\x2b\x00\x46\x00\x0d\x00\x0e\x00\x38\x00\x39\x00\x35\x00\x25\x00\x3c\x00\x1e\x00\x48\x00\x3f\x00\x48\x00\x48\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x02\x00\x05\x00\x04\x00\x30\x00\x46\x00\x48\x00\x37\x00\x08\x00\x0a\x00\x3a\x00\x25\x00\x0d\x00\x39\x00\x0f\x00\x07\x00\x11\x00\x12\x00\x48\x00\x13\x00\x15\x00\x16\x00\x17\x00\x02\x00\x19\x00\x04\x00\x46\x00\x47\x00\x1d\x00\x37\x00\x1e\x00\x48\x00\x3a\x00\x02\x00\x0d\x00\x04\x00\x30\x00\x10\x00\x11\x00\x0a\x00\x30\x00\x0a\x00\x15\x00\x16\x00\x17\x00\x39\x00\x19\x00\x12\x00\x11\x00\x39\x00\x1d\x00\x1a\x00\x15\x00\x02\x00\x17\x00\x04\x00\x19\x00\x48\x00\x46\x00\x47\x00\x1d\x00\x24\x00\x46\x00\x47\x00\x0d\x00\x42\x00\x43\x00\x44\x00\x11\x00\x46\x00\x30\x00\x08\x00\x15\x00\x16\x00\x17\x00\x08\x00\x19\x00\x48\x00\x0f\x00\x39\x00\x1d\x00\x02\x00\x0f\x00\x04\x00\x2e\x00\x2f\x00\x30\x00\x42\x00\x43\x00\x44\x00\x0b\x00\x46\x00\x46\x00\x47\x00\x19\x00\x39\x00\x11\x00\x42\x00\x43\x00\x44\x00\x15\x00\x46\x00\x17\x00\x0f\x00\x19\x00\x02\x00\x12\x00\x04\x00\x1d\x00\x33\x00\x34\x00\x35\x00\x2f\x00\x30\x00\x0b\x00\x2f\x00\x30\x00\x42\x00\x43\x00\x44\x00\x11\x00\x46\x00\x39\x00\x41\x00\x15\x00\x39\x00\x17\x00\x48\x00\x19\x00\x02\x00\x01\x00\x04\x00\x1d\x00\x2f\x00\x30\x00\x06\x00\x07\x00\x08\x00\x0b\x00\x02\x00\x17\x00\x04\x00\x19\x00\x39\x00\x11\x00\x42\x00\x43\x00\x44\x00\x15\x00\x46\x00\x17\x00\x05\x00\x19\x00\x36\x00\x11\x00\x04\x00\x1d\x00\x07\x00\x15\x00\x3c\x00\x17\x00\x36\x00\x19\x00\x0c\x00\x0e\x00\x48\x00\x1d\x00\x3c\x00\x11\x00\x42\x00\x43\x00\x44\x00\x15\x00\x46\x00\x17\x00\x07\x00\x19\x00\x33\x00\x34\x00\x35\x00\x2f\x00\x30\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x26\x00\x27\x00\x24\x00\x39\x00\x41\x00\x27\x00\x42\x00\x43\x00\x44\x00\x48\x00\x46\x00\x25\x00\x2e\x00\x2f\x00\x2f\x00\x30\x00\x42\x00\x43\x00\x44\x00\x08\x00\x46\x00\x48\x00\x04\x00\x36\x00\x39\x00\x3b\x00\x0f\x00\x04\x00\x3e\x00\x3c\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x11\x00\x30\x00\x0a\x00\x32\x00\x15\x00\x11\x00\x17\x00\x0f\x00\x19\x00\x15\x00\x39\x00\x17\x00\x04\x00\x19\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x35\x00\x11\x00\x2e\x00\x2f\x00\x30\x00\x15\x00\x3b\x00\x17\x00\x25\x00\x19\x00\x48\x00\x28\x00\x29\x00\x39\x00\x35\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x3b\x00\x48\x00\x33\x00\x34\x00\x35\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x35\x00\x25\x00\x42\x00\x43\x00\x28\x00\x29\x00\x3b\x00\x04\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x11\x00\x25\x00\x0f\x00\x39\x00\x15\x00\x12\x00\x17\x00\x1a\x00\x19\x00\x3f\x00\x40\x00\x33\x00\x34\x00\x35\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x26\x00\x48\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x48\x00\x42\x00\x43\x00\x0b\x00\x0c\x00\x31\x00\x32\x00\x33\x00\x2f\x00\x30\x00\x36\x00\x37\x00\x0b\x00\x0c\x00\x3a\x00\x0a\x00\x35\x00\x1a\x00\x39\x00\x2e\x00\x2f\x00\x30\x00\x3b\x00\x25\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x26\x00\x39\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x25\x00\x1a\x00\x25\x00\x28\x00\x29\x00\x31\x00\x32\x00\x33\x00\x0b\x00\x0c\x00\x36\x00\x37\x00\x35\x00\x26\x00\x3a\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x25\x00\x1a\x00\x0a\x00\x28\x00\x29\x00\x31\x00\x32\x00\x33\x00\x09\x00\x0a\x00\x36\x00\x37\x00\x35\x00\x26\x00\x3a\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x25\x00\x1a\x00\x25\x00\x28\x00\x29\x00\x31\x00\x32\x00\x33\x00\x26\x00\x27\x00\x36\x00\x37\x00\x02\x00\x26\x00\x3a\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x25\x00\x0b\x00\x0c\x00\x28\x00\x29\x00\x31\x00\x32\x00\x33\x00\x26\x00\x27\x00\x36\x00\x37\x00\x26\x00\x27\x00\x3a\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x03\x00\x39\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x3f\x00\x39\x00\x26\x00\x27\x00\x38\x00\x44\x00\x45\x00\x3f\x00\x39\x00\x33\x00\x34\x00\x35\x00\x44\x00\x45\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x35\x00\x39\x00\x03\x00\x33\x00\x34\x00\x35\x00\x1a\x00\x3f\x00\x39\x00\x0b\x00\x0c\x00\x05\x00\x44\x00\x45\x00\x3f\x00\x40\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x42\x00\x39\x00\x0d\x00\x0e\x00\x19\x00\x3d\x00\x3e\x00\x3f\x00\x39\x00\x33\x00\x34\x00\x35\x00\x3d\x00\x3e\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x46\x00\x42\x00\x43\x00\x46\x00\x09\x00\x0a\x00\x05\x00\x39\x00\x33\x00\x34\x00\x35\x00\x34\x00\x35\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x35\x00\x42\x00\x43\x00\x34\x00\x35\x00\x09\x00\x0a\x00\x39\x00\x33\x00\x34\x00\x35\x00\x01\x00\x02\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x1e\x00\x42\x00\x43\x00\x3d\x00\x3e\x00\x3d\x00\x3e\x00\x39\x00\x3d\x00\x3e\x00\x12\x00\x1e\x00\x0f\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x39\x00\x18\x00\x1a\x00\x05\x00\x46\x00\x12\x00\x3f\x00\x18\x00\x39\x00\x46\x00\x12\x00\x12\x00\x46\x00\x07\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x07\x00\x39\x00\x46\x00\x04\x00\x04\x00\x35\x00\x12\x00\x3f\x00\x39\x00\x18\x00\x04\x00\x46\x00\x12\x00\x12\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x0a\x00\x39\x00\x12\x00\x46\x00\x0f\x00\x12\x00\x46\x00\x3f\x00\x39\x00\x46\x00\x12\x00\x46\x00\x0f\x00\x46\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x19\x00\x39\x00\x46\x00\x12\x00\x10\x00\x10\x00\x10\x00\x3f\x00\x39\x00\x46\x00\x46\x00\x10\x00\x10\x00\x46\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x10\x00\x39\x00\x10\x00\x10\x00\x10\x00\x46\x00\x0a\x00\x3f\x00\x39\x00\x18\x00\x07\x00\x46\x00\x41\x00\x46\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x0a\x00\x39\x00\x07\x00\x04\x00\x41\x00\x46\x00\x17\x00\x3f\x00\x39\x00\x0c\x00\x1a\x00\x1a\x00\x10\x00\x1a\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x0e\x00\x39\x00\x04\x00\x46\x00\x1a\x00\x46\x00\x0a\x00\x3f\x00\x39\x00\x2c\x00\x07\x00\x10\x00\x46\x00\x1a\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x46\x00\x39\x00\x05\x00\x0a\x00\x14\x00\x2c\x00\x12\x00\x3f\x00\x39\x00\x18\x00\x46\x00\x07\x00\x1a\x00\x46\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x46\x00\x39\x00\x34\x00\x0f\x00\x34\x00\x1a\x00\x10\x00\x3f\x00\x39\x00\x1a\x00\x1a\x00\x10\x00\x1a\x00\x10\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x0d\x00\x39\x00\x46\x00\x1a\x00\x46\x00\x0d\x00\x19\x00\x3f\x00\x39\x00\x18\x00\x14\x00\x06\x00\x18\x00\x10\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x1a\x00\x39\x00\x12\x00\x46\x00\x42\x00\x46\x00\x12\x00\x3f\x00\x39\x00\x0d\x00\x19\x00\x0d\x00\x46\x00\x44\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x0f\x00\x39\x00\x05\x00\x46\x00\x14\x00\x18\x00\x0c\x00\x3f\x00\x39\x00\x1a\x00\x13\x00\x0a\x00\x34\x00\x0a\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x10\x00\x39\x00\x46\x00\x2c\x00\x0d\x00\x46\x00\x46\x00\x3f\x00\x39\x00\x46\x00\x12\x00\x46\x00\x46\x00\x46\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x47\x00\x39\x00\x00\x00\x19\x00\x19\x00\x46\x00\x19\x00\x3f\x00\x39\x00\x0c\x00\x46\x00\x46\x00\x0d\x00\x09\x00\x3f\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x26\x00\x39\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x1e\x00\x3f\x00\x39\x00\x47\x00\x2d\x00\x31\x00\x32\x00\x33\x00\x3f\x00\xff\xff\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x39\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"# happyTable :: HappyAddr -happyTable = HappyA# "\x00\x00\x10\x00\x05\x01\x11\x00\x77\x00\x6d\x01\xf6\x00\x62\x00\x8c\x00\x53\x01\xda\x00\xf4\x01\x63\x00\x64\x00\x65\x00\x9a\x00\x12\x00\x0d\x00\x9b\x01\xa6\x01\x13\x00\x4d\x01\x14\x00\xac\x01\x15\x00\x66\x00\x16\x00\x17\x00\x47\x00\x4d\x01\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xa2\x01\x1d\x00\x9c\x01\x59\x01\x1e\x00\x59\x01\x98\x01\x1f\x00\x4e\x01\x20\x00\x53\x01\x05\x01\xc8\x01\x21\x00\xf0\x01\x60\x00\x43\x01\xad\x01\x6e\x01\x5a\x01\x54\x01\x22\x00\x23\x00\x06\x01\x95\x01\x24\x00\x25\x00\x10\x00\x26\x00\x11\x00\x55\x01\x27\x00\x28\x00\x29\x00\x2a\x00\x52\x00\x67\x00\x78\x00\xf7\x00\x98\x01\x8b\x01\x2c\x01\x12\x00\x4f\x01\x9d\x01\x99\x01\x13\x00\x43\x01\x14\x00\x4a\x01\x15\x00\x4f\x01\x16\x00\x17\x00\x9f\x01\x44\x01\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x5b\x01\x1d\x00\x5b\x01\x46\x01\x1e\x00\x55\x01\x28\x01\x1f\x00\x45\x01\x20\x00\x99\x00\x56\x01\xf2\x00\x21\x00\x9d\x01\x4a\x01\xc9\x00\x56\x01\xe5\x00\x9c\x01\x4b\x01\x22\x00\x23\x00\x40\x01\xaa\x01\x24\x00\x25\x00\x10\x00\x26\x00\x38\x00\x57\x01\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x92\x01\x65\x01\xcb\x00\x45\x01\x4c\x01\xf3\x00\x12\x00\x25\x01\xe1\x00\xe7\x01\x13\x00\xc9\x00\x14\x00\xc9\x00\x15\x00\x40\x01\x50\x01\xb7\x00\x48\x01\x26\x01\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x9d\x01\x1d\x00\xa4\x01\x41\x01\x1e\x00\x58\x01\x4c\x01\x4b\x00\xcb\x00\xb8\x00\xcb\x00\x58\x01\x46\x01\xb4\x01\x3c\x00\xeb\x01\x42\x01\x3d\x00\xcd\x00\x46\x01\xf8\x00\x22\x00\x23\x00\x7e\x01\x66\x01\x24\x00\x25\x00\x10\x00\x26\x00\x38\x00\x7f\x01\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x46\x01\x6d\x01\x39\x01\xec\x01\x46\x01\x52\x01\x12\x00\x94\x00\x42\x01\x3a\x01\x13\x00\x47\x01\x14\x00\xa9\x01\x15\x00\x49\x01\x4c\x00\x54\x00\x4d\x00\x55\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x9a\x00\x1d\x00\x48\x01\xc0\x00\x1e\x00\x9c\xff\x50\x01\x56\x00\x9c\xff\x48\x01\x47\x00\x57\x00\xc1\x00\x58\x00\xea\x01\x59\x00\xf2\x00\x51\x01\xd3\x01\x5a\x00\x40\x00\x22\x00\x23\x00\x9a\x00\x6e\x01\x24\x00\x48\x01\x54\x00\x26\x00\x55\x00\x48\x01\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\xed\x01\x97\x01\xc0\x00\xe7\x00\x98\x01\xc5\x00\x56\x00\x60\x00\x0c\x00\xf3\x00\x57\x00\xc1\x00\x58\x00\x54\x00\x59\x00\x55\x00\x48\x00\x0d\x00\x5a\x00\xbc\x01\x52\x01\x5b\x00\x5c\x00\x5d\x00\xc0\x00\x5e\x00\xb8\x00\x54\x00\x56\x00\x55\x00\x41\x00\xd1\x01\x57\x00\xc1\x00\x58\x00\x9b\x01\x59\x00\x3b\x00\x0c\x00\xd5\x01\x5a\x00\x30\x00\x56\x00\xd7\x01\x31\x00\xcb\x01\x57\x00\x0d\x00\x58\x00\x7a\x00\x59\x00\x7a\x00\x32\x00\x33\x00\x5a\x00\xef\x01\x5b\x00\x5c\x00\x5d\x00\x2d\x00\x5e\x00\x04\x00\x54\x00\xcb\x01\x55\x00\x34\x00\xae\x01\x7b\x00\x35\x00\x7b\x00\x0a\x01\x84\x00\x7c\x00\xcc\x01\xd9\x01\x0d\x00\xc9\x00\x56\x00\x5b\x00\x5c\x00\x5d\x00\x57\x00\x5e\x00\x58\x00\xdb\x01\x59\x00\x54\x00\xca\x00\x55\x00\x5a\x00\xaf\x01\xd4\x01\x5b\x00\x5c\x00\x5d\x00\x84\x00\x5e\x00\x54\x00\xcb\x00\x55\x00\x9e\x00\x56\x00\x8c\x00\x9f\x00\x8d\x00\x57\x00\x84\x00\x58\x00\x94\x00\x59\x00\x29\x01\x0d\x00\x56\x00\x5a\x00\x31\x01\x54\x00\x57\x00\x55\x00\x58\x00\x2a\x01\x59\x00\x7f\x00\x80\x00\x81\x00\x5a\x00\x5c\x01\xdc\x01\x5b\x00\x5c\x00\x5d\x00\x56\x00\x85\x00\xf8\x00\x94\x00\x57\x00\x0b\x01\x58\x00\xde\x01\x59\x00\x95\x00\x41\x00\x0c\x00\x5a\x00\x3c\x00\x60\x00\x0c\x00\x3d\x00\x49\x00\x96\x00\x11\x01\x0d\x00\x5b\x00\x5c\x00\xa3\x00\x0d\x00\xa4\x00\x36\x00\x9f\x00\x80\x00\x81\x00\xf7\x00\xdf\x01\x5b\x00\x5c\x00\x5d\x00\x0d\x00\xa8\x00\xf8\x00\xae\x01\xa9\x00\x38\x00\xaa\x00\xa0\x00\xa6\x00\x7f\x00\x80\x00\x81\x00\x0d\x00\x2d\xff\x94\x00\x5b\x00\x5c\x00\x5d\x00\x12\x00\x5e\x00\x95\x00\xe0\x01\x13\x00\x82\x00\x14\x00\xb2\x01\x15\x00\xaf\x01\xb7\x01\x96\x00\x97\x00\x98\x01\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xa1\x01\x12\x00\xae\x01\xe3\x01\x1e\x00\x13\x00\x94\x00\x14\x00\x94\x00\x15\x00\xe4\x01\x0d\x00\xbe\x00\xae\x01\xd4\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x32\xff\xb9\x01\x0d\x00\x8b\x00\x1e\x00\x32\xff\xaf\x01\xba\x01\x8c\x00\x38\x00\x94\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\xbe\x00\xaf\x01\xb0\x01\x3f\x01\x3c\x00\x91\x01\x12\x00\x3d\x00\xec\x00\x40\x01\x13\x00\x8c\x01\x14\x00\x38\x00\x15\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x93\x01\x12\x00\x8d\x01\x2c\x01\x1e\x00\x13\x00\x67\x01\x14\x00\x71\x01\x39\x00\x9f\x00\x80\x00\x81\x00\x76\x01\xc6\x01\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x85\x01\x9f\x00\x80\x00\x81\x00\x1e\x00\xa0\x00\x0f\x01\x90\x01\x2c\x01\x38\x00\x84\x01\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\xa0\x00\x17\x01\x72\x00\x0b\x00\x0c\x00\x3c\x00\x12\x00\x2e\x01\x3d\x00\x9a\x00\x13\x00\x1d\x01\x14\x00\x0d\x00\x15\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x9f\x00\x80\x00\x81\x00\x21\x01\x1e\x00\x9f\x00\x80\x00\x81\x00\x73\x00\x0b\x00\x0c\x00\xd0\x00\xac\xff\xb2\x00\xb3\x00\xa0\x00\xbc\x00\x62\x01\xf4\x00\x0d\x00\xa0\x00\xa1\x00\xb4\x00\xb5\x00\xac\xff\xe1\x00\xac\xff\xac\xff\xac\xff\x75\x00\xac\xff\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\xac\xff\xac\xff\xac\xff\xa2\xff\x3c\x00\xac\xff\xac\xff\x3d\x00\x3e\x00\xac\xff\x2e\x00\x74\x00\x0b\x00\x0c\x00\x52\x00\xa2\xff\x04\x00\xa2\xff\xa2\xff\xa2\xff\xf4\x01\xa2\xff\x0d\x00\xb0\xff\x6a\x01\x6b\x01\x69\x00\xa2\xff\xa2\xff\xa2\xff\x73\x01\x74\x01\xa2\xff\xa2\xff\xf2\x01\xb0\xff\xa2\xff\xb0\xff\xb0\xff\xb0\xff\xe9\x01\xb0\xff\x3c\x00\xae\xff\xb7\x00\x3d\x00\x49\x00\xb0\xff\xb0\xff\xb0\xff\x76\x01\x77\x01\xb0\xff\xb0\xff\xf3\x01\xae\xff\xb0\xff\xae\xff\xae\xff\xae\xff\xbe\x01\xae\xff\xce\x01\xaa\xff\x09\x01\x80\x00\x81\x00\xae\xff\xae\xff\xae\xff\x79\x01\x7a\x01\xae\xff\xae\xff\xd3\x01\xaa\xff\xae\xff\xaa\xff\xaa\xff\xaa\xff\xd7\x01\xaa\xff\x71\x00\x6d\x00\x6e\x00\x0b\x00\x0c\x00\xaa\xff\xaa\xff\xaa\xff\x2b\x01\x2c\x01\xaa\xff\xaa\xff\xd9\x01\x0d\x00\xaa\xff\x18\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xe3\x01\x6c\x00\x08\x00\x6d\x00\x6e\x00\x0b\x00\x0c\x00\xe6\x01\x0d\x00\xed\x00\xee\x00\x3b\x01\x2c\x01\x62\x00\x0e\x00\x0d\x00\xef\x00\xf0\x00\x63\x00\x64\x00\x65\x00\x19\x01\x83\x01\x18\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x85\x00\x80\x00\x81\x00\x3c\x01\x3d\x01\xf3\x00\xf4\x00\xe7\x01\x0d\x00\x14\x01\x81\x00\x16\x01\x81\x00\xb6\x01\x0e\x00\x26\x01\xf4\x00\x44\x00\xd6\x00\x44\x00\x45\x00\x19\x01\x1a\x01\x18\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x44\x00\x48\x00\x2b\x00\x2c\x00\xb7\x01\xbe\x01\xbf\x01\xc1\x01\x0d\x00\xc2\x01\xc4\x01\xc8\x01\xce\x01\xcf\x01\x0e\x00\xd0\x01\xd1\x01\x2e\x01\xb7\x00\x2e\x01\x8f\x01\x19\x01\x1b\x01\xdc\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x2e\x01\x4d\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x19\xff\x90\x01\x95\x01\x9f\x01\x9b\x01\x0e\x00\xdd\x00\x0d\x00\xa1\x01\x19\xff\xa4\x01\x19\xff\xa8\x01\x0e\x00\x4e\x00\x4f\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x4f\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xa6\x01\x0d\x00\xa9\x01\x19\xff\xad\x01\x44\x00\xb8\x01\x0e\x00\x0d\x00\x67\x01\xb3\x01\xb4\x01\x44\x00\x50\x00\x0e\x00\xfa\x00\x62\x01\xfb\x00\xfc\x00\xfd\x00\x64\x01\xfe\x00\x6a\x01\x69\x01\x6f\x01\x70\x01\x71\x01\xff\x00\x00\x01\x01\x01\x41\x00\x73\x01\x02\x01\x03\x01\x76\x01\x79\x01\x04\x01\xa4\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x1c\x01\x7c\x01\x7d\x01\x7e\x01\x05\x01\x81\x01\x41\x00\x82\x01\x0d\x00\x89\x01\x87\x01\x8a\x01\x8b\x01\x88\x01\x0e\x00\xa4\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xbd\x00\x2e\x01\x41\x00\x30\x01\x31\x01\x33\x01\x35\x01\x34\x01\x0d\x00\x39\x01\x36\x01\x2e\x01\xb8\x00\x5e\x01\x0e\x00\xa4\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xa5\x00\x60\x01\x07\x01\x5f\x01\x08\x01\x09\x01\x41\x00\x61\x01\x0d\x00\x0d\x01\x0e\x01\x8b\x00\x0f\x01\x20\x01\x0e\x00\xa4\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xaa\x00\xe9\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x13\x01\x14\x01\x21\x01\x1f\x01\x23\x01\x0e\x00\x24\x01\x0d\x00\xbb\x00\x29\x01\xbc\x00\xc2\x00\xb9\x00\x0e\x00\xee\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xda\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xba\x00\x0d\x00\xc3\x00\xc4\x00\xc6\x00\xc7\x00\xc8\x00\x0e\x00\x0d\x00\x41\x00\xd0\x00\x41\x00\xd2\x00\xd3\x00\x0e\x00\xdd\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xe1\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xd4\x00\x0d\x00\xd6\x00\xda\x00\xe0\x00\xe3\x00\xe4\x00\x0e\x00\x0d\x00\xe8\x00\xe6\x00\xe9\x00\xea\x00\xeb\x00\x0e\x00\xbb\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xbf\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xec\x00\x0d\x00\x41\x00\x6b\x00\x70\x00\x60\x00\x7a\x00\x0e\x00\x0d\x00\x7e\x00\x7f\x00\x87\x00\x88\x00\x89\x00\x0e\x00\xc2\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xc4\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x8f\x00\x0d\x00\x8a\x00\x90\x00\x91\x00\x92\x00\x93\x00\x0e\x00\x0d\x00\x9a\x00\x94\x00\x41\x00\x9c\x00\x9d\x00\x0e\x00\xc5\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xc9\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x60\x00\x0d\x00\xac\x00\xad\x00\xae\x00\xff\xff\xb2\x00\x0e\x00\x0d\x00\xff\xff\x36\x00\xaf\x00\xb0\x00\xb1\x00\x0e\x00\xca\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x82\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x3a\x00\x0d\x00\x3b\x00\x43\x00\x41\x00\x5f\x00\x68\x00\x0e\x00\x0d\x00\x60\x00\x06\x00\x69\x00\xff\xff\x00\x00\x0e\x00\x36\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x37\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x10\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x15\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\xcb\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xcc\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\xce\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xd7\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\xd8\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xdb\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\xde\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x6b\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x70\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x78\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x4f\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x43\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"# +happyTable = HappyA# "\x00\x00\x10\x00\x61\x00\x11\x00\x78\x00\x68\x01\xf2\x00\x63\x00\x8d\x00\x48\x01\xd6\x00\xef\x01\x64\x00\x65\x00\x66\x00\xeb\x01\x12\x00\x0d\x00\x96\x01\x01\x01\x13\x00\x54\x01\x14\x00\x9d\x01\x15\x00\x67\x00\x16\x00\x17\x00\x48\x00\xb6\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xa8\x01\x1d\x00\x97\x01\x42\x00\x54\x01\x4b\x01\x24\x01\x01\x01\x1e\x00\x48\x01\x36\x00\xb7\x00\x1f\x00\x20\x00\x21\x00\x25\x01\x9f\x01\x69\x01\x55\x01\x0d\x00\x22\x00\x23\x00\x96\x00\x49\x01\x24\x00\x25\x00\x10\x00\x26\x00\x11\x00\x4a\x01\x27\x00\x28\x00\x29\x00\x2a\x00\x53\x00\x68\x00\x79\x00\xf3\x00\x3e\x01\x02\x01\xe2\x01\x12\x00\x56\x01\x98\x01\x4e\x01\x13\x00\x90\x01\x14\x00\x43\x00\x15\x00\x51\x01\x16\x00\x17\x00\x4d\x01\xa1\x01\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x56\x01\x1d\x00\x23\x01\xa5\x01\x4a\x01\x2d\x00\x4e\x01\x04\x00\x1e\x00\x51\x01\x97\x01\xee\x00\x1f\x00\x20\x00\x21\x00\xdd\x00\x4f\x01\x60\x01\xc9\x00\x68\x01\x22\x00\x23\x00\x52\x01\x3b\x01\x24\x00\x25\x00\x10\x00\x26\x00\x38\x00\x40\x01\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x4b\x01\x8d\x01\x3b\x01\x50\x01\xef\x00\xcb\x00\x12\x00\xe6\x01\x53\x01\x3e\x01\x13\x00\x4c\x01\x14\x00\x45\x01\x15\x00\x3c\x01\x98\x01\x3f\x01\x9a\x01\x41\x01\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x50\x01\x1d\x00\x53\x01\x45\x01\x61\x01\x98\x01\x69\x01\x20\x01\x46\x01\xe9\x00\xea\x00\x41\x01\xe5\x01\x20\x00\x21\x00\x3d\x01\xeb\x00\xec\x00\x4c\x00\x21\x01\x22\x00\x23\x00\x79\x01\x4d\x01\x24\x00\x25\x00\x10\x00\x26\x00\x38\x00\x3d\x01\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x40\x01\x48\x00\x41\x01\x47\x01\x41\x01\x41\x01\x12\x00\xe7\x01\x43\x01\xc9\x00\x13\x00\xe1\x00\x14\x00\x7a\x01\x15\x00\x42\x01\x44\x01\x97\x00\x47\x01\xee\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x43\x01\x1d\x00\x4d\x00\xc9\x00\x4e\x00\xc6\x01\xcb\x00\x32\xff\xe3\x00\xb1\x00\xb2\x00\x3a\x01\x32\xff\x20\x00\x21\x00\xea\x01\x3b\x01\x49\x00\xb3\x00\xb4\x00\x22\x00\x23\x00\xef\x00\x7b\x00\x24\x00\xcb\x00\x43\x01\x26\x00\x43\x01\x43\x01\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x55\x00\xcc\x01\x56\x00\xa9\x01\xb7\x00\xe8\x01\x7c\x00\xc9\x00\x97\x00\x06\x01\x7b\x00\xc0\x00\x0d\x00\x9c\xff\xce\x01\x57\x00\x9c\xff\xd0\x01\xca\x00\x58\x00\xc1\x00\x59\x00\x55\x00\x5a\x00\x56\x00\xaa\x01\xcf\x01\x5b\x00\x7c\x00\xcb\x00\xd2\x01\x7d\x00\x55\x00\xc0\x00\x56\x00\xa9\x01\xc5\x00\x57\x00\x97\x00\xa9\x01\x96\x01\x58\x00\xc1\x00\x59\x00\x0d\x00\x5a\x00\xa7\x01\x57\x00\x0d\x00\x5b\x00\xc6\x01\x58\x00\x55\x00\x59\x00\x56\x00\x5a\x00\xd4\x01\xaa\x01\xb2\x01\x5b\x00\xc7\x01\xaa\x01\xb5\x01\xc0\x00\x5c\x00\x5d\x00\x5e\x00\x57\x00\x5f\x00\xa9\x01\xaf\x01\x58\x00\xc1\x00\x59\x00\x57\x01\x5a\x00\xd6\x01\xf4\x00\x0d\x00\x5b\x00\x55\x00\xf4\x00\x56\x00\x73\x00\x0b\x00\x0c\x00\x5c\x00\x5d\x00\x5e\x00\x85\x00\x5f\x00\xaa\x01\xab\x01\xb7\x01\x0d\x00\x57\x00\x5c\x00\x5d\x00\x5e\x00\x58\x00\x5f\x00\x59\x00\x92\x01\x5a\x00\x55\x00\x93\x01\x56\x00\x5b\x00\x80\x00\x81\x00\x82\x00\x61\x00\x0c\x00\x85\x00\x9c\x00\x0c\x00\x5c\x00\x5d\x00\x5e\x00\x57\x00\x5f\x00\x0d\x00\x07\x01\x58\x00\x0d\x00\x59\x00\xd7\x01\x5a\x00\x55\x00\x63\x00\x56\x00\x5b\x00\x9d\x00\x0c\x00\x64\x00\x65\x00\x66\x00\x85\x00\x55\x00\xa8\x00\x56\x00\xa9\x00\x0d\x00\x57\x00\x5c\x00\x5d\x00\x5e\x00\x58\x00\x86\x00\x59\x00\x87\x01\x5a\x00\x93\x01\x57\x00\x38\x00\x5b\x00\x34\x01\x58\x00\xc3\x01\x59\x00\x93\x01\x5a\x00\x2d\xff\x35\x01\xd9\x01\x5b\x00\x94\x01\x12\x00\x5c\x00\x5d\x00\xa2\x00\x13\x00\xa3\x00\x14\x00\x8c\x01\x15\x00\x80\x00\x81\x00\x82\x00\x3b\x00\x0c\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x71\x01\xc1\x01\x30\x00\x0d\x00\x83\x00\x31\x00\x5c\x00\x5d\x00\x5e\x00\xda\x01\xa7\x00\x62\x01\x32\x00\x33\x00\x43\x00\x0c\x00\x5c\x00\x5d\x00\x5e\x00\xf3\x00\x5f\x00\xdb\x01\xad\x01\x93\x01\x0d\x00\x34\x00\xf4\x00\x38\x00\x35\x00\x9c\x01\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x12\x00\x8d\x00\x8c\x00\x8e\x00\x13\x00\x12\x00\x14\x00\x8d\x00\x15\x00\x13\x00\x0d\x00\x14\x00\x38\x00\x15\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xbd\x00\x12\x00\x74\x00\x0b\x00\x0c\x00\x13\x00\xa4\x01\x14\x00\x3e\x00\x39\x00\xde\x01\x3f\x00\x4a\x00\x0d\x00\xbd\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x2c\x01\xdf\x01\x9e\x00\x81\x00\x82\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\xbd\x00\x3e\x00\x9f\x00\xa5\x00\x3f\x00\xcd\x00\x19\x01\x38\x00\xd8\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x12\x00\x6c\x01\x9b\x00\x0d\x00\x13\x00\x9c\x00\x14\x00\xac\xff\x15\x00\x0e\x00\xd9\x00\x9e\x00\x81\x00\x82\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xac\xff\xb4\x01\xac\xff\xac\xff\xac\xff\xac\xff\x8e\x01\x9f\x00\x0b\x01\x86\x01\x27\x01\xac\xff\xac\xff\xac\xff\x61\x00\x0c\x00\xac\xff\xac\xff\x88\x01\x27\x01\xac\xff\x7f\x01\xbd\x00\xa2\xff\x0d\x00\x75\x00\x0b\x00\x0c\x00\xbe\x00\x80\x01\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\xa2\xff\x0d\x00\xa2\xff\xa2\xff\xa2\xff\xa2\xff\x3e\x00\xb0\xff\x29\x01\x3f\x00\xe8\x00\xa2\xff\xa2\xff\xa2\xff\x8b\x01\x27\x01\xa2\xff\xa2\xff\x17\x01\xb0\xff\xa2\xff\xb0\xff\xb0\xff\xb0\xff\xb0\xff\x3e\x00\xae\xff\x1c\x01\x3f\x00\x97\x00\xb0\xff\xb0\xff\xb0\xff\x5d\x01\xf0\x00\xb0\xff\xb0\xff\xdd\x00\xae\xff\xb0\xff\xae\xff\xae\xff\xae\xff\xae\xff\x3e\x00\xaa\xff\xd0\x00\x3f\x00\x40\x00\xae\xff\xae\xff\xae\xff\x65\x01\x66\x01\xae\xff\xae\xff\x04\x00\xaa\xff\xae\xff\xaa\xff\xaa\xff\xaa\xff\xaa\xff\x3e\x00\x26\x01\x27\x01\x3f\x00\x4a\x00\xaa\xff\xaa\xff\xaa\xff\x6e\x01\x6f\x01\xaa\xff\xaa\xff\x71\x01\x72\x01\xaa\xff\x12\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x12\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x2e\x00\x0d\x00\x72\x00\x6e\x00\x6f\x00\x0b\x00\x0c\x00\x0e\x00\x0d\x00\x74\x01\x75\x01\x76\x00\x13\x01\x7e\x01\x0e\x00\x0d\x00\x05\x01\x81\x00\x82\x00\x13\x01\x14\x01\x12\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x4e\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x53\x00\x0d\x00\x6a\x00\x86\x00\x81\x00\x82\x00\xef\x01\x0e\x00\x0d\x00\x36\x01\x27\x01\xed\x01\x13\x01\x15\x01\x0e\x00\x4f\x00\x50\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x50\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xee\x01\x0d\x00\x37\x01\x38\x01\xe4\x01\x45\x00\xb3\x01\x0e\x00\x0d\x00\x9e\x00\x81\x00\x82\x00\x45\x00\x51\x00\x0e\x00\xa3\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x16\x01\xb9\x01\x9f\x00\x11\x01\xc9\x01\xef\x00\xf0\x00\xce\x01\x0d\x00\x9e\x00\x81\x00\x82\x00\x0e\x01\x82\x00\x0e\x00\xa3\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xbc\x00\xb6\x00\x9f\x00\xbb\x00\x10\x01\x82\x00\x21\x01\xf0\x00\x0d\x00\x9e\x00\x81\x00\x82\x00\x2b\x00\x2c\x00\x0e\x00\xa3\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xa4\x00\xd2\x01\x9f\x00\xa0\x00\x45\x00\xd2\x00\x45\x00\x46\x00\x0d\x00\x45\x00\x49\x00\xd4\x01\xde\x01\xe1\x01\x0e\x00\xa3\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xa9\x00\xe4\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xe2\x01\xb1\x01\xb2\x01\xb9\x01\xba\x01\x0e\x00\xbc\x01\x0d\x00\xbd\x01\xbf\x01\xc3\x01\xc9\x01\xca\x01\x0e\x00\xe9\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xd5\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xcc\x01\x0d\x00\xcb\x01\x29\x01\x29\x01\xb6\x00\x8a\x01\x0e\x00\x0d\x00\x8b\x01\x29\x01\x1c\xff\x90\x01\x9a\x01\x0e\x00\xd8\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xdc\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x96\x01\x0d\x00\x9c\x01\x1c\xff\x9f\x01\xa1\x01\x1c\xff\x0e\x00\x0d\x00\xa3\x01\xa4\x01\x1c\xff\xa8\x01\xae\x01\x0e\x00\xb6\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xba\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5d\x01\x0d\x00\xaf\x01\x5f\x01\x62\x01\x65\x01\x6a\x01\x0e\x00\x0d\x00\x64\x01\x6b\x01\x6c\x01\x6e\x01\x43\x00\x0e\x00\xbd\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xbf\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x71\x01\x0d\x00\x74\x01\x77\x01\x79\x01\x78\x01\x01\x01\x0e\x00\x0d\x00\x82\x01\x7c\x01\x43\x00\x7d\x01\x83\x01\x0e\x00\xc0\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xc4\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x84\x01\x0d\x00\x85\x01\x29\x01\x86\x01\x43\x00\x2b\x01\x0e\x00\x0d\x00\x2c\x01\x2e\x01\x2f\x01\x30\x01\x34\x01\x0e\x00\xc5\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x7d\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x31\x01\x0d\x00\x29\x01\xb7\x00\x59\x01\x5a\x01\x5b\x01\x0e\x00\x0d\x00\x5c\x01\x03\x01\x04\x01\x43\x00\x05\x01\x0e\x00\x31\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x32\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x09\x01\x0d\x00\x0a\x01\x8c\x00\x0b\x01\x0d\x01\x0e\x01\x0e\x00\x0d\x00\x1b\x01\x19\x01\x24\x01\x1c\x01\x1e\x01\x0e\x00\x0f\x01\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xcb\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x1f\x01\x0d\x00\xb8\x00\xba\x00\xb9\x00\xbb\x00\xc4\x00\x0e\x00\x0d\x00\xc2\x00\xc3\x00\xc6\x00\xc7\x00\xc8\x00\x0e\x00\xcc\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xce\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x61\x00\x0d\x00\x43\x00\xd0\x00\x43\x00\xdc\x00\xd2\x00\x0e\x00\x0d\x00\xd6\x00\xdf\x00\xe0\x00\xe2\x00\xe5\x00\x0e\x00\xd3\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xd4\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xe4\x00\x0d\x00\xe6\x00\xe7\x00\xe8\x00\x43\x00\x6c\x00\x0e\x00\x0d\x00\x61\x00\x71\x00\x7b\x00\x7f\x00\x80\x00\x0e\x00\xd7\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xda\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x89\x00\x0d\x00\x8a\x00\x88\x00\x8b\x00\x90\x00\x92\x00\x0e\x00\x0d\x00\x91\x00\x93\x00\x94\x00\x95\x00\x97\x00\x0e\x00\x6c\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x71\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x9a\x00\x0d\x00\x43\x00\x99\x00\x61\x00\xab\x00\xac\x00\x0e\x00\x0d\x00\xad\x00\xb1\x00\xae\x00\xaf\x00\xb0\x00\x0e\x00\x79\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x50\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xff\xff\x0d\x00\xff\xff\x36\x00\x3a\x00\x3d\x00\x3b\x00\x0e\x00\x0d\x00\x60\x00\x3e\x00\x43\x00\x61\x00\x69\x00\x0e\x00\x44\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xf6\x00\x0d\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\x6a\x00\x0e\x00\x0d\x00\xff\xff\x06\x00\xfb\x00\xfc\x00\xfd\x00\x0e\x00\x00\x00\xfe\x00\xff\x00\x00\x00\x00\x00\x00\x01\x6d\x00\x08\x00\x6e\x00\x6f\x00\x0b\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"# -happyReduceArr = array (3, 230) [ +happyReduceArr = array (3, 227) [ (3 , happyReduce_3), (4 , happyReduce_4), (5 , happyReduce_5), @@ -740,14 +728,11 @@ happyReduceArr = array (3, 230) [ (224 , happyReduce_224), (225 , happyReduce_225), (226 , happyReduce_226), - (227 , happyReduce_227), - (228 , happyReduce_228), - (229 , happyReduce_229), - (230 , happyReduce_230) + (227 , happyReduce_227) ] -happy_n_terms = 73 :: Int -happy_n_nonterms = 75 :: Int +happy_n_terms = 72 :: Int +happy_n_nonterms = 73 :: Int happyReduce_3 = happyMonadReduce 4# 0# happyReduction_3 happyReduction_3 (happy_x_4 `HappyStk` @@ -1302,10 +1287,10 @@ happyReduction_58 (happy_x_4 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) - = case happyOut80 happy_x_1 of { happy_var_1 -> + = case happyOut78 happy_x_1 of { happy_var_1 -> case happyOutTok happy_x_2 of { ((T_Ident happy_var_2)) -> - case happyOut79 happy_x_3 of { happy_var_3 -> - case happyOut80 happy_x_4 of { happy_var_4 -> + case happyOut77 happy_x_3 of { happy_var_3 -> + case happyOut78 happy_x_4 of { happy_var_4 -> happyIn22 ([(happy_var_2, (happy_var_1,happy_var_4), AbsCat (Just happy_var_3) Nothing)] ) `HappyStk` happyRest}}}} @@ -1318,10 +1303,10 @@ happyReduction_59 (happy_x_6 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) - = case happyOut80 happy_x_1 of { happy_var_1 -> + = case happyOut78 happy_x_1 of { happy_var_1 -> case happyOutTok happy_x_3 of { ((T_Ident happy_var_3)) -> - case happyOut79 happy_x_4 of { happy_var_4 -> - case happyOut80 happy_x_6 of { happy_var_6 -> + case happyOut77 happy_x_4 of { happy_var_4 -> + case happyOut78 happy_x_6 of { happy_var_6 -> happyIn22 (listCatDef happy_var_3 (happy_var_1,happy_var_6) happy_var_4 0 ) `HappyStk` happyRest}}}} @@ -1337,11 +1322,11 @@ happyReduction_60 (happy_x_9 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) - = case happyOut80 happy_x_1 of { happy_var_1 -> + = case happyOut78 happy_x_1 of { happy_var_1 -> case happyOutTok happy_x_3 of { ((T_Ident happy_var_3)) -> - case happyOut79 happy_x_4 of { happy_var_4 -> + case happyOut77 happy_x_4 of { happy_var_4 -> case happyOutTok happy_x_7 of { ((T_Integer happy_var_7)) -> - case happyOut80 happy_x_9 of { happy_var_9 -> + case happyOut78 happy_x_9 of { happy_var_9 -> happyIn22 (listCatDef happy_var_3 (happy_var_1,happy_var_9) happy_var_4 (fromIntegral happy_var_7) ) `HappyStk` happyRest}}}}} @@ -1353,12 +1338,12 @@ happyReduction_61 (happy_x_5 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) - = case happyOut80 happy_x_1 of { happy_var_1 -> + = case happyOut78 happy_x_1 of { happy_var_1 -> case happyOut43 happy_x_2 of { happy_var_2 -> case happyOut48 happy_x_4 of { happy_var_4 -> - case happyOut80 happy_x_5 of { happy_var_5 -> + case happyOut78 happy_x_5 of { happy_var_5 -> happyIn23 - ([(fun, (happy_var_1,happy_var_5), AbsFun (Just happy_var_4) Nothing) | fun <- happy_var_2] + ([(fun, (happy_var_1,happy_var_5), AbsFun (Just happy_var_4) Nothing (Just [])) | fun <- happy_var_2] ) `HappyStk` happyRest}}}} happyReduce_62 = happyReduce 5# 18# happyReduction_62 @@ -1368,12 +1353,12 @@ happyReduction_62 (happy_x_5 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) - = case happyOut80 happy_x_1 of { happy_var_1 -> + = case happyOut78 happy_x_1 of { happy_var_1 -> case happyOut45 happy_x_2 of { happy_var_2 -> case happyOut48 happy_x_4 of { happy_var_4 -> - case happyOut80 happy_x_5 of { happy_var_5 -> + case happyOut78 happy_x_5 of { happy_var_5 -> happyIn24 - ([(f, (happy_var_1,happy_var_5),AbsFun Nothing (Just happy_var_4)) | f <- happy_var_2] + ([(f, (happy_var_1,happy_var_5),AbsFun Nothing (Just 0) (Just [([],happy_var_4)])) | f <- happy_var_2] ) `HappyStk` happyRest}}}} happyReduce_63 = happyReduce 6# 18# happyReduction_63 @@ -1384,13 +1369,13 @@ happyReduction_63 (happy_x_6 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) - = case happyOut80 happy_x_1 of { happy_var_1 -> + = case happyOut78 happy_x_1 of { happy_var_1 -> case happyOut44 happy_x_2 of { happy_var_2 -> case happyOut65 happy_x_3 of { happy_var_3 -> case happyOut48 happy_x_5 of { happy_var_5 -> - case happyOut80 happy_x_6 of { happy_var_6 -> + case happyOut78 happy_x_6 of { happy_var_6 -> happyIn24 - ([(happy_var_2,(happy_var_1,happy_var_6),AbsFun Nothing (Just (Eqs [(happy_var_3,happy_var_5)])))] + ([(happy_var_2,(happy_var_1,happy_var_6),AbsFun Nothing (Just (length happy_var_3)) (Just [(happy_var_3,happy_var_5)]))] ) `HappyStk` happyRest}}}}} happyReduce_64 = happyReduce 5# 19# happyReduction_64 @@ -1400,13 +1385,13 @@ happyReduction_64 (happy_x_5 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) - = case happyOut80 happy_x_1 of { happy_var_1 -> + = case happyOut78 happy_x_1 of { happy_var_1 -> case happyOutTok happy_x_2 of { ((T_Ident happy_var_2)) -> case happyOut31 happy_x_4 of { happy_var_4 -> - case happyOut80 happy_x_5 of { happy_var_5 -> + case happyOut78 happy_x_5 of { happy_var_5 -> happyIn25 - ((happy_var_2, (happy_var_1,happy_var_5), AbsCat Nothing (Just (map Cn happy_var_4))) : - [(fun, (happy_var_1,happy_var_5), AbsFun Nothing (Just EData)) | fun <- happy_var_4] + ((happy_var_2, (happy_var_1,happy_var_5), AbsCat Nothing (Just (map Cn happy_var_4))) : + [(fun, (happy_var_1,happy_var_5), AbsFun Nothing Nothing Nothing) | fun <- happy_var_4] ) `HappyStk` happyRest}}}} happyReduce_65 = happyReduce 5# 19# happyReduction_65 @@ -1416,13 +1401,13 @@ happyReduction_65 (happy_x_5 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) - = case happyOut80 happy_x_1 of { happy_var_1 -> + = case happyOut78 happy_x_1 of { happy_var_1 -> case happyOut43 happy_x_2 of { happy_var_2 -> case happyOut48 happy_x_4 of { happy_var_4 -> - case happyOut80 happy_x_5 of { happy_var_5 -> + case happyOut78 happy_x_5 of { happy_var_5 -> happyIn25 - ([(cat, (happy_var_1,happy_var_5), AbsCat Nothing (Just (map Cn happy_var_2))) | Ok (_,cat) <- [valCat happy_var_4]] ++ - [(fun, (happy_var_1,happy_var_5), AbsFun (Just happy_var_4) (Just EData)) | fun <- happy_var_2] + ([(cat, (happy_var_1,happy_var_5), AbsCat Nothing (Just (map Cn happy_var_2))) | Ok (_,cat) <- [valCat happy_var_4]] ++ + [(fun, (happy_var_1,happy_var_5), AbsFun (Just happy_var_4) Nothing Nothing) | fun <- happy_var_2] ) `HappyStk` happyRest}}}} happyReduce_66 = happyReduce 5# 20# happyReduction_66 @@ -1432,10 +1417,10 @@ happyReduction_66 (happy_x_5 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) - = case happyOut80 happy_x_1 of { happy_var_1 -> + = case happyOut78 happy_x_1 of { happy_var_1 -> case happyOutTok happy_x_2 of { ((T_Ident happy_var_2)) -> case happyOut42 happy_x_4 of { happy_var_4 -> - case happyOut80 happy_x_5 of { happy_var_5 -> + case happyOut78 happy_x_5 of { happy_var_5 -> happyIn26 ((happy_var_2, (happy_var_1,happy_var_5), ResParam (Just (happy_var_4,Nothing))) : [(f, (happy_var_1,happy_var_5), ResValue (Just (mkProdSimple co (Cn happy_var_2),Nothing))) | (f,co) <- happy_var_4] @@ -1445,9 +1430,9 @@ happyReduce_67 = happySpecReduce_3 20# happyReduction_67 happyReduction_67 happy_x_3 happy_x_2 happy_x_1 - = case happyOut80 happy_x_1 of { happy_var_1 -> + = case happyOut78 happy_x_1 of { happy_var_1 -> case happyOutTok happy_x_2 of { ((T_Ident happy_var_2)) -> - case happyOut80 happy_x_3 of { happy_var_3 -> + case happyOut78 happy_x_3 of { happy_var_3 -> happyIn26 ([(happy_var_2, (happy_var_1,happy_var_3), ResParam Nothing)] )}}} @@ -1459,10 +1444,10 @@ happyReduction_68 (happy_x_5 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) - = case happyOut80 happy_x_1 of { happy_var_1 -> + = case happyOut78 happy_x_1 of { happy_var_1 -> case happyOut45 happy_x_2 of { happy_var_2 -> case happyOut48 happy_x_4 of { happy_var_4 -> - case happyOut80 happy_x_5 of { happy_var_5 -> + case happyOut78 happy_x_5 of { happy_var_5 -> happyIn27 ([(i, (happy_var_1,happy_var_5), info) | i <- happy_var_2, info <- mkOverload (Just happy_var_4) Nothing ] ) `HappyStk` happyRest}}}} @@ -1474,10 +1459,10 @@ happyReduction_69 (happy_x_5 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) - = case happyOut80 happy_x_1 of { happy_var_1 -> + = case happyOut78 happy_x_1 of { happy_var_1 -> case happyOut45 happy_x_2 of { happy_var_2 -> case happyOut48 happy_x_4 of { happy_var_4 -> - case happyOut80 happy_x_5 of { happy_var_5 -> + case happyOut78 happy_x_5 of { happy_var_5 -> happyIn27 ([(i, (happy_var_1,happy_var_5), info) | i <- happy_var_2, info <- mkOverload Nothing (Just happy_var_4)] ) `HappyStk` happyRest}}}} @@ -1490,11 +1475,11 @@ happyReduction_70 (happy_x_6 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) - = case happyOut80 happy_x_1 of { happy_var_1 -> + = case happyOut78 happy_x_1 of { happy_var_1 -> case happyOut44 happy_x_2 of { happy_var_2 -> case happyOut66 happy_x_3 of { happy_var_3 -> case happyOut48 happy_x_5 of { happy_var_5 -> - case happyOut80 happy_x_6 of { happy_var_6 -> + case happyOut78 happy_x_6 of { happy_var_6 -> happyIn27 ([(i, (happy_var_1,happy_var_6), info) | i <- [happy_var_2], info <- mkOverload Nothing (Just (mkAbs happy_var_3 happy_var_5))] ) `HappyStk` happyRest}}}}} @@ -1508,11 +1493,11 @@ happyReduction_71 (happy_x_7 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) - = case happyOut80 happy_x_1 of { happy_var_1 -> + = case happyOut78 happy_x_1 of { happy_var_1 -> case happyOut45 happy_x_2 of { happy_var_2 -> case happyOut48 happy_x_4 of { happy_var_4 -> case happyOut48 happy_x_6 of { happy_var_6 -> - case happyOut80 happy_x_7 of { happy_var_7 -> + case happyOut78 happy_x_7 of { happy_var_7 -> happyIn27 ([(i, (happy_var_1,happy_var_7), info) | i <- happy_var_2, info <- mkOverload (Just happy_var_4) (Just happy_var_6)] ) `HappyStk` happyRest}}}}} @@ -1524,10 +1509,10 @@ happyReduction_72 (happy_x_5 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) - = case happyOut80 happy_x_1 of { happy_var_1 -> + = case happyOut78 happy_x_1 of { happy_var_1 -> case happyOut45 happy_x_2 of { happy_var_2 -> case happyOut48 happy_x_4 of { happy_var_4 -> - case happyOut80 happy_x_5 of { happy_var_5 -> + case happyOut78 happy_x_5 of { happy_var_5 -> happyIn28 ([(f, (happy_var_1,happy_var_5), CncFun Nothing (Just happy_var_4) Nothing) | f <- happy_var_2] ) `HappyStk` happyRest}}}} @@ -1540,11 +1525,11 @@ happyReduction_73 (happy_x_6 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) - = case happyOut80 happy_x_1 of { happy_var_1 -> + = case happyOut78 happy_x_1 of { happy_var_1 -> case happyOut44 happy_x_2 of { happy_var_2 -> case happyOut66 happy_x_3 of { happy_var_3 -> case happyOut48 happy_x_5 of { happy_var_5 -> - case happyOut80 happy_x_6 of { happy_var_6 -> + case happyOut78 happy_x_6 of { happy_var_6 -> happyIn28 ([(happy_var_2, (happy_var_1,happy_var_6), CncFun Nothing (Just (mkAbs happy_var_3 happy_var_5)) Nothing)] ) `HappyStk` happyRest}}}}} @@ -1556,10 +1541,10 @@ happyReduction_74 (happy_x_5 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) - = case happyOut80 happy_x_1 of { happy_var_1 -> + = case happyOut78 happy_x_1 of { happy_var_1 -> case happyOut45 happy_x_2 of { happy_var_2 -> case happyOut48 happy_x_4 of { happy_var_4 -> - case happyOut80 happy_x_5 of { happy_var_5 -> + case happyOut78 happy_x_5 of { happy_var_5 -> happyIn29 ([(i,(happy_var_1,happy_var_5),happy_var_4) | i <- happy_var_2] ) `HappyStk` happyRest}}}} @@ -1571,7 +1556,7 @@ happyReduction_75 (happy_x_5 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest) tk - = happyThen (case happyOut80 happy_x_1 of { happy_var_1 -> + = happyThen (case happyOut78 happy_x_1 of { happy_var_1 -> case happyOutTok happy_x_2 of { ((T_Ident happy_var_2)) -> case happyOutTok happy_x_4 of { ((T_Ident happy_var_4)) -> ( case parseModuleOptions ["--" ++ prIdent happy_var_2 ++ "=" ++ prIdent happy_var_4] of @@ -1600,7 +1585,7 @@ happyReduce_78 = happySpecReduce_2 26# happyReduction_78 happyReduction_78 happy_x_2 happy_x_1 = case happyOutTok happy_x_1 of { ((T_Ident happy_var_1)) -> - case happyOut79 happy_x_2 of { happy_var_2 -> + case happyOut77 happy_x_2 of { happy_var_2 -> happyIn32 ((happy_var_1,happy_var_2) )}} @@ -1986,19 +1971,8 @@ happyReduction_118 (happy_x_5 `HappyStk` return $ mkLet defs happy_var_1)}} ) (\r -> happyReturn (happyIn48 r)) -happyReduce_119 = happyReduce 4# 42# happyReduction_119 -happyReduction_119 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut75 happy_x_3 of { happy_var_3 -> - happyIn48 - (Eqs happy_var_3 - ) `HappyStk` happyRest} - -happyReduce_120 = happySpecReduce_3 42# happyReduction_120 -happyReduction_120 happy_x_3 +happyReduce_119 = happySpecReduce_3 42# happyReduction_119 +happyReduction_119 happy_x_3 happy_x_2 happy_x_1 = case happyOut53 happy_x_2 of { happy_var_2 -> @@ -2007,15 +1981,15 @@ happyReduction_120 happy_x_3 (Example happy_var_2 happy_var_3 )}} -happyReduce_121 = happySpecReduce_1 42# happyReduction_121 -happyReduction_121 happy_x_1 +happyReduce_120 = happySpecReduce_1 42# happyReduction_120 +happyReduction_120 happy_x_1 = case happyOut49 happy_x_1 of { happy_var_1 -> happyIn48 (happy_var_1 )} -happyReduce_122 = happySpecReduce_3 43# happyReduction_122 -happyReduction_122 happy_x_3 +happyReduce_121 = happySpecReduce_3 43# happyReduction_121 +happyReduction_121 happy_x_3 happy_x_2 happy_x_1 = case happyOut50 happy_x_1 of { happy_var_1 -> @@ -2024,15 +1998,15 @@ happyReduction_122 happy_x_3 (C happy_var_1 happy_var_3 )}} -happyReduce_123 = happySpecReduce_1 43# happyReduction_123 -happyReduction_123 happy_x_1 +happyReduce_122 = happySpecReduce_1 43# happyReduction_122 +happyReduction_122 happy_x_1 = case happyOut50 happy_x_1 of { happy_var_1 -> happyIn49 (happy_var_1 )} -happyReduce_124 = happySpecReduce_3 44# happyReduction_124 -happyReduction_124 happy_x_3 +happyReduce_123 = happySpecReduce_3 44# happyReduction_123 +happyReduction_123 happy_x_3 happy_x_2 happy_x_1 = case happyOut51 happy_x_1 of { happy_var_1 -> @@ -2041,15 +2015,15 @@ happyReduction_124 happy_x_3 (Glue happy_var_1 happy_var_3 )}} -happyReduce_125 = happySpecReduce_1 44# happyReduction_125 -happyReduction_125 happy_x_1 +happyReduce_124 = happySpecReduce_1 44# happyReduction_124 +happyReduction_124 happy_x_1 = case happyOut51 happy_x_1 of { happy_var_1 -> happyIn50 (happy_var_1 )} -happyReduce_126 = happySpecReduce_3 45# happyReduction_126 -happyReduction_126 happy_x_3 +happyReduce_125 = happySpecReduce_3 45# happyReduction_125 +happyReduction_125 happy_x_3 happy_x_2 happy_x_1 = case happyOut51 happy_x_1 of { happy_var_1 -> @@ -2058,8 +2032,8 @@ happyReduction_126 happy_x_3 (S happy_var_1 happy_var_3 )}} -happyReduce_127 = happyReduce 4# 45# happyReduction_127 -happyReduction_127 (happy_x_4 `HappyStk` +happyReduce_126 = happyReduce 4# 45# happyReduction_126 +happyReduction_126 (happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` @@ -2069,8 +2043,8 @@ happyReduction_127 (happy_x_4 `HappyStk` (T TRaw happy_var_3 ) `HappyStk` happyRest} -happyReduce_128 = happyReduce 5# 45# happyReduction_128 -happyReduction_128 (happy_x_5 `HappyStk` +happyReduce_127 = happyReduce 5# 45# happyReduction_127 +happyReduction_127 (happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` @@ -2082,8 +2056,8 @@ happyReduction_128 (happy_x_5 `HappyStk` (T (TTyped happy_var_2) happy_var_4 ) `HappyStk` happyRest}} -happyReduce_129 = happyReduce 5# 45# happyReduction_129 -happyReduction_129 (happy_x_5 `HappyStk` +happyReduce_128 = happyReduce 5# 45# happyReduction_128 +happyReduction_128 (happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` @@ -2095,8 +2069,8 @@ happyReduction_129 (happy_x_5 `HappyStk` (V happy_var_2 happy_var_4 ) `HappyStk` happyRest}} -happyReduce_130 = happySpecReduce_3 45# happyReduction_130 -happyReduction_130 happy_x_3 +happyReduce_129 = happySpecReduce_3 45# happyReduction_129 +happyReduction_129 happy_x_3 happy_x_2 happy_x_1 = case happyOut51 happy_x_1 of { happy_var_1 -> @@ -2107,8 +2081,8 @@ happyReduction_130 happy_x_3 t -> RecType [(tupleLabel 1,happy_var_1), (tupleLabel 2,happy_var_3)] )}} -happyReduce_131 = happySpecReduce_3 45# happyReduction_131 -happyReduction_131 happy_x_3 +happyReduce_130 = happySpecReduce_3 45# happyReduction_130 +happyReduction_130 happy_x_3 happy_x_2 happy_x_1 = case happyOut51 happy_x_1 of { happy_var_1 -> @@ -2117,15 +2091,15 @@ happyReduction_131 happy_x_3 (ExtR happy_var_1 happy_var_3 )}} -happyReduce_132 = happySpecReduce_1 45# happyReduction_132 -happyReduction_132 happy_x_1 +happyReduce_131 = happySpecReduce_1 45# happyReduction_131 +happyReduction_131 happy_x_1 = case happyOut52 happy_x_1 of { happy_var_1 -> happyIn51 (happy_var_1 )} -happyReduce_133 = happySpecReduce_2 46# happyReduction_133 -happyReduction_133 happy_x_2 +happyReduce_132 = happySpecReduce_2 46# happyReduction_132 +happyReduction_132 happy_x_2 happy_x_1 = case happyOut52 happy_x_1 of { happy_var_1 -> case happyOut53 happy_x_2 of { happy_var_2 -> @@ -2133,8 +2107,8 @@ happyReduction_133 happy_x_2 (App happy_var_1 happy_var_2 )}} -happyReduce_134 = happyReduce 6# 46# happyReduction_134 -happyReduction_134 (happy_x_6 `HappyStk` +happyReduce_133 = happyReduce 6# 46# happyReduction_133 +happyReduction_133 (happy_x_6 `HappyStk` happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` @@ -2150,8 +2124,8 @@ happyReduction_134 (happy_x_6 `HappyStk` in S (T annot happy_var_5) happy_var_2 ) `HappyStk` happyRest}} -happyReduce_135 = happyReduce 4# 46# happyReduction_135 -happyReduction_135 (happy_x_4 `HappyStk` +happyReduce_134 = happyReduce 4# 46# happyReduction_134 +happyReduction_134 (happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` @@ -2161,8 +2135,8 @@ happyReduction_135 (happy_x_4 `HappyStk` (FV happy_var_3 ) `HappyStk` happyRest} -happyReduce_136 = happyMonadReduce 4# 46# happyReduction_136 -happyReduction_136 (happy_x_4 `HappyStk` +happyReduce_135 = happyMonadReduce 4# 46# happyReduction_135 +happyReduction_135 (happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` @@ -2171,22 +2145,22 @@ happyReduction_136 (happy_x_4 `HappyStk` ( mkAlts happy_var_3)} ) (\r -> happyReturn (happyIn52 r)) +happyReduce_136 = happyReduce 6# 46# happyReduction_136 +happyReduction_136 (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 { ((T_String happy_var_3)) -> + case happyOut75 happy_x_5 of { happy_var_5 -> + happyIn52 + (Alts (K happy_var_3, happy_var_5) + ) `HappyStk` happyRest}} + happyReduce_137 = happyReduce 6# 46# happyReduction_137 happyReduction_137 (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 { ((T_String happy_var_3)) -> - case happyOut77 happy_x_5 of { happy_var_5 -> - happyIn52 - (Alts (K happy_var_3, happy_var_5) - ) `HappyStk` happyRest}} - -happyReduce_138 = happyReduce 6# 46# happyReduction_138 -happyReduction_138 (happy_x_6 `HappyStk` happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` @@ -2194,13 +2168,13 @@ happyReduction_138 (happy_x_6 `HappyStk` happy_x_1 `HappyStk` happyRest) = case happyOutTok happy_x_3 of { ((T_Ident happy_var_3)) -> - case happyOut77 happy_x_5 of { happy_var_5 -> + case happyOut75 happy_x_5 of { happy_var_5 -> happyIn52 (Alts (Vr happy_var_3, happy_var_5) ) `HappyStk` happyRest}} -happyReduce_139 = happyReduce 4# 46# happyReduction_139 -happyReduction_139 (happy_x_4 `HappyStk` +happyReduce_138 = happyReduce 4# 46# happyReduction_138 +happyReduction_138 (happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` @@ -2210,31 +2184,51 @@ happyReduction_139 (happy_x_4 `HappyStk` (Strs happy_var_3 ) `HappyStk` happyRest} -happyReduce_140 = happySpecReduce_2 46# happyReduction_140 -happyReduction_140 happy_x_2 +happyReduce_139 = happySpecReduce_2 46# happyReduction_139 +happyReduction_139 happy_x_2 happy_x_1 = case happyOut59 happy_x_2 of { happy_var_2 -> happyIn52 (EPatt happy_var_2 )} -happyReduce_141 = happySpecReduce_2 46# happyReduction_141 -happyReduction_141 happy_x_2 +happyReduce_140 = happySpecReduce_2 46# happyReduction_140 +happyReduction_140 happy_x_2 happy_x_1 = case happyOut53 happy_x_2 of { happy_var_2 -> happyIn52 (EPattType happy_var_2 )} -happyReduce_142 = happySpecReduce_1 46# happyReduction_142 -happyReduction_142 happy_x_1 +happyReduce_141 = happySpecReduce_3 46# happyReduction_141 +happyReduction_141 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_2 of { ((T_Ident happy_var_2)) -> + case happyOut53 happy_x_3 of { happy_var_3 -> + happyIn52 + (ELincat happy_var_2 happy_var_3 + )}} + +happyReduce_142 = happySpecReduce_3 46# happyReduction_142 +happyReduction_142 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_2 of { ((T_Ident happy_var_2)) -> + case happyOut53 happy_x_3 of { happy_var_3 -> + happyIn52 + (ELin happy_var_2 happy_var_3 + )}} + +happyReduce_143 = happySpecReduce_1 46# happyReduction_143 +happyReduction_143 happy_x_1 = case happyOut53 happy_x_1 of { happy_var_1 -> happyIn52 (happy_var_1 )} -happyReduce_143 = happySpecReduce_3 47# happyReduction_143 -happyReduction_143 happy_x_3 +happyReduce_144 = happySpecReduce_3 47# happyReduction_144 +happyReduction_144 happy_x_3 happy_x_2 happy_x_1 = case happyOut53 happy_x_1 of { happy_var_1 -> @@ -2243,67 +2237,61 @@ happyReduction_143 happy_x_3 (P happy_var_1 happy_var_3 )}} -happyReduce_144 = happySpecReduce_1 47# happyReduction_144 -happyReduction_144 happy_x_1 +happyReduce_145 = happySpecReduce_1 47# happyReduction_145 +happyReduction_145 happy_x_1 = case happyOut54 happy_x_1 of { happy_var_1 -> happyIn53 (happy_var_1 )} -happyReduce_145 = happySpecReduce_1 48# happyReduction_145 -happyReduction_145 happy_x_1 +happyReduce_146 = happySpecReduce_1 48# happyReduction_146 +happyReduction_146 happy_x_1 = case happyOutTok happy_x_1 of { ((T_Ident happy_var_1)) -> happyIn54 (Vr happy_var_1 )} -happyReduce_146 = happySpecReduce_1 48# happyReduction_146 -happyReduction_146 happy_x_1 +happyReduce_147 = happySpecReduce_1 48# happyReduction_147 +happyReduction_147 happy_x_1 = case happyOut63 happy_x_1 of { happy_var_1 -> happyIn54 (Sort happy_var_1 )} -happyReduce_147 = happySpecReduce_1 48# happyReduction_147 -happyReduction_147 happy_x_1 +happyReduce_148 = happySpecReduce_1 48# happyReduction_148 +happyReduction_148 happy_x_1 = case happyOutTok happy_x_1 of { ((T_String happy_var_1)) -> happyIn54 (K happy_var_1 )} -happyReduce_148 = happySpecReduce_1 48# happyReduction_148 -happyReduction_148 happy_x_1 +happyReduce_149 = happySpecReduce_1 48# happyReduction_149 +happyReduction_149 happy_x_1 = case happyOutTok happy_x_1 of { ((T_Integer happy_var_1)) -> happyIn54 (EInt happy_var_1 )} -happyReduce_149 = happySpecReduce_1 48# happyReduction_149 -happyReduction_149 happy_x_1 +happyReduce_150 = happySpecReduce_1 48# happyReduction_150 +happyReduction_150 happy_x_1 = case happyOutTok happy_x_1 of { ((T_Double happy_var_1)) -> happyIn54 (EFloat happy_var_1 )} -happyReduce_150 = happySpecReduce_1 48# happyReduction_150 -happyReduction_150 happy_x_1 +happyReduce_151 = happySpecReduce_1 48# happyReduction_151 +happyReduction_151 happy_x_1 = happyIn54 (Meta (int2meta 0) ) -happyReduce_151 = happySpecReduce_2 48# happyReduction_151 -happyReduction_151 happy_x_2 +happyReduce_152 = happySpecReduce_2 48# happyReduction_152 +happyReduction_152 happy_x_2 happy_x_1 = happyIn54 (Empty ) -happyReduce_152 = happySpecReduce_1 48# happyReduction_152 -happyReduction_152 happy_x_1 - = happyIn54 - (EData - ) - happyReduce_153 = happyReduce 4# 48# happyReduction_153 happyReduction_153 (happy_x_4 `HappyStk` happy_x_3 `HappyStk` @@ -2530,7 +2518,7 @@ happyReduction_177 (happy_x_4 `HappyStk` happyReduce_178 = happySpecReduce_1 53# happyReduction_178 happyReduction_178 happy_x_1 = happyIn59 - (wildPatt + (PW ) happyReduce_179 = happySpecReduce_1 53# happyReduction_179 @@ -2854,7 +2842,7 @@ happyReduce_220 = happySpecReduce_3 68# happyReduction_220 happyReduction_220 happy_x_3 happy_x_2 happy_x_1 - = case happyOut65 happy_x_1 of { happy_var_1 -> + = case happyOut48 happy_x_1 of { happy_var_1 -> case happyOut48 happy_x_3 of { happy_var_3 -> happyIn74 ((happy_var_1,happy_var_3) @@ -2864,7 +2852,7 @@ happyReduce_221 = happySpecReduce_1 69# happyReduction_221 happyReduction_221 happy_x_1 = case happyOut74 happy_x_1 of { happy_var_1 -> happyIn75 - ((:[]) happy_var_1 + ([happy_var_1] )} happyReduce_222 = happySpecReduce_3 69# happyReduction_222 @@ -2874,38 +2862,11 @@ happyReduction_222 happy_x_3 = case happyOut74 happy_x_1 of { happy_var_1 -> case happyOut75 happy_x_3 of { happy_var_3 -> happyIn75 - ((:) happy_var_1 happy_var_3 - )}} - -happyReduce_223 = happySpecReduce_3 70# happyReduction_223 -happyReduction_223 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut48 happy_x_1 of { happy_var_1 -> - case happyOut48 happy_x_3 of { happy_var_3 -> - happyIn76 - ((happy_var_1,happy_var_3) - )}} - -happyReduce_224 = happySpecReduce_1 71# happyReduction_224 -happyReduction_224 happy_x_1 - = case happyOut76 happy_x_1 of { happy_var_1 -> - happyIn77 - ([happy_var_1] - )} - -happyReduce_225 = happySpecReduce_3 71# happyReduction_225 -happyReduction_225 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut76 happy_x_1 of { happy_var_1 -> - case happyOut77 happy_x_3 of { happy_var_3 -> - happyIn77 (happy_var_1 : happy_var_3 )}} -happyReduce_226 = happyReduce 5# 72# happyReduction_226 -happyReduction_226 (happy_x_5 `HappyStk` +happyReduce_223 = happyReduce 5# 70# happyReduction_223 +happyReduction_223 (happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` @@ -2913,41 +2874,41 @@ happyReduction_226 (happy_x_5 `HappyStk` happyRest) = case happyOut68 happy_x_2 of { happy_var_2 -> case happyOut48 happy_x_4 of { happy_var_4 -> - happyIn78 + happyIn76 ([(x,happy_var_4) | x <- happy_var_2] ) `HappyStk` happyRest}} -happyReduce_227 = happySpecReduce_1 72# happyReduction_227 -happyReduction_227 happy_x_1 +happyReduce_224 = happySpecReduce_1 70# happyReduction_224 +happyReduction_224 happy_x_1 = case happyOut54 happy_x_1 of { happy_var_1 -> - happyIn78 + happyIn76 ([mkDecl happy_var_1] )} -happyReduce_228 = happySpecReduce_0 73# happyReduction_228 -happyReduction_228 = happyIn79 +happyReduce_225 = happySpecReduce_0 71# happyReduction_225 +happyReduction_225 = happyIn77 ([] ) -happyReduce_229 = happySpecReduce_2 73# happyReduction_229 -happyReduction_229 happy_x_2 +happyReduce_226 = happySpecReduce_2 71# happyReduction_226 +happyReduction_226 happy_x_2 happy_x_1 - = case happyOut78 happy_x_1 of { happy_var_1 -> - case happyOut79 happy_x_2 of { happy_var_2 -> - happyIn79 + = case happyOut76 happy_x_1 of { happy_var_1 -> + case happyOut77 happy_x_2 of { happy_var_2 -> + happyIn77 (happy_var_1 ++ happy_var_2 )}} -happyReduce_230 = happyMonadReduce 0# 74# happyReduction_230 -happyReduction_230 (happyRest) tk +happyReduce_227 = happyMonadReduce 0# 72# happyReduction_227 +happyReduction_227 (happyRest) tk = happyThen (( getPosn) - ) (\r -> happyReturn (happyIn80 r)) + ) (\r -> happyReturn (happyIn78 r)) happyNewToken action sts stk = lexer(\tk -> let cont i = happyDoAction i tk action sts stk in case tk of { - T_EOF -> happyDoAction 72# tk action sts stk; + T_EOF -> happyDoAction 71# tk action sts stk; T_exclmark -> cont 1#; T_patt -> cont 2#; T_int_label -> cont 3#; @@ -2990,35 +2951,34 @@ happyNewToken action sts stk T_data -> cont 40#; T_def -> cont 41#; T_flags -> cont 42#; - T_fn -> cont 43#; - T_fun -> cont 44#; - T_in -> cont 45#; - T_incomplete -> cont 46#; - T_instance -> cont 47#; - T_interface -> cont 48#; - T_let -> cont 49#; - T_lin -> cont 50#; - T_lincat -> cont 51#; - T_lindef -> cont 52#; - T_of -> cont 53#; - T_open -> cont 54#; - T_oper -> cont 55#; - T_param -> cont 56#; - T_pattern -> cont 57#; - T_pre -> cont 58#; - T_printname -> cont 59#; - T_resource -> cont 60#; - T_strs -> cont 61#; - T_table -> cont 62#; - T_transfer -> cont 63#; - T_variants -> cont 64#; - T_where -> cont 65#; - T_with -> cont 66#; - (T_Integer happy_dollar_dollar) -> cont 67#; - (T_Double happy_dollar_dollar) -> cont 68#; - (T_String happy_dollar_dollar) -> cont 69#; - (T_LString happy_dollar_dollar) -> cont 70#; - (T_Ident happy_dollar_dollar) -> cont 71#; + T_fun -> cont 43#; + T_in -> cont 44#; + T_incomplete -> cont 45#; + T_instance -> cont 46#; + T_interface -> cont 47#; + T_let -> cont 48#; + T_lin -> cont 49#; + T_lincat -> cont 50#; + T_lindef -> cont 51#; + T_of -> cont 52#; + T_open -> cont 53#; + T_oper -> cont 54#; + T_param -> cont 55#; + T_pattern -> cont 56#; + T_pre -> cont 57#; + T_printname -> cont 58#; + T_resource -> cont 59#; + T_strs -> cont 60#; + T_table -> cont 61#; + T_transfer -> cont 62#; + T_variants -> cont 63#; + T_where -> cont 64#; + T_with -> cont 65#; + (T_Integer happy_dollar_dollar) -> cont 66#; + (T_Double happy_dollar_dollar) -> cont 67#; + (T_String happy_dollar_dollar) -> cont 68#; + (T_LString happy_dollar_dollar) -> cont 69#; + (T_Ident happy_dollar_dollar) -> cont 70#; _ -> happyError' tk }) @@ -3063,9 +3023,9 @@ listCatDef id pos cont size = [catd,nilfund,consfund] baseId = mkBaseId id consId = mkConsId id - catd = (listId, pos, AbsCat (Just cont') (Just [Cn baseId,Cn consId])) - nilfund = (baseId, pos, AbsFun (Just niltyp) (Just EData)) - consfund = (consId, pos, AbsFun (Just constyp) (Just EData)) + catd = (listId, pos, AbsCat (Just cont') (Just [Cn baseId,Cn consId])) + nilfund = (baseId, pos, AbsFun (Just niltyp) Nothing Nothing) + consfund = (consId, pos, AbsFun (Just constyp) Nothing Nothing) cont' = [(mkId x i,ty) | (i,(x,ty)) <- zip [0..] cont] xs = map (Vr . fst) cont' @@ -3122,7 +3082,7 @@ type SrcSpan = (Posn,Posn) checkInfoType MTAbstract (id,pos,info) = case info of AbsCat _ _ -> return () - AbsFun _ _ -> return () + AbsFun _ _ _ -> return () _ -> failLoc (fst pos) "illegal definition in abstract module" checkInfoType MTResource (id,pos,info) = case info of @@ -3156,7 +3116,7 @@ checkInfoType (MTInstance _) (id,pos,info) = checkInfoType (MTTransfer _ _) (id,pos,info) = case info of AbsCat _ _ -> return () - AbsFun _ _ -> return () + AbsFun _ _ _ -> return () _ -> failLoc (fst pos) "illegal definition in transfer module" @@ -3177,7 +3137,9 @@ mkAlts cs = case cs of Strs bs <- mkStrs b return $ Strs $ as ++ bs PString s -> return $ Strs [K s] - t -> return t --- for macros; not yet complete + PV x -> return (Vr x) --- for macros; not yet complete + PMacro x -> return (Vr x) --- for macros; not yet complete + PM m c -> return (Q m c) --- for macros; not yet complete _ -> fail "no strs from pattern" {-# LINE 1 "GenericTemplate.hs" #-} {-# LINE 1 "" #-} diff --git a/src/GF/Grammar/Parser.y b/src/GF/Grammar/Parser.y index e07ec8684..c25693652 100644 --- a/src/GF/Grammar/Parser.y +++ b/src/GF/Grammar/Parser.y @@ -423,6 +423,8 @@ Exp4 | 'strs' '{' ListExp '}' { Strs $3 } | '#' Patt2 { EPatt $2 } | 'pattern' Exp5 { EPattType $2 } + | 'lincat' Ident Exp5 { ELincat $2 $3 } + | 'lin' Ident Exp5 { ELin $2 $3 } | Exp5 { $1 } Exp5 :: { Term }