summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/GF/Compile/GetGrammar.hs8
-rw-r--r--src/GF/Compile/PGrammar.hs2
-rw-r--r--src/GF/Grammar/Grammar.hs1
-rw-r--r--src/GF/Grammar/PrGrammar.hs17
-rw-r--r--src/GF/Source/AbsGF.hs134
-rw-r--r--src/GF/Source/GF.cf124
-rw-r--r--src/GF/Source/GrammarToSource.hs33
-rw-r--r--src/GF/Source/LexGF.hs74
-rw-r--r--src/GF/Source/ParGF.hs810
-rw-r--r--src/GF/Source/PrintGF.hs152
-rw-r--r--src/GF/Source/SkelGF.hs155
-rw-r--r--src/GF/Source/SourceToGrammar.hs63
-rw-r--r--src/GF/Source/TestGF.hs4
13 files changed, 837 insertions, 740 deletions
diff --git a/src/GF/Compile/GetGrammar.hs b/src/GF/Compile/GetGrammar.hs
index 2b908bd81..41c2c063d 100644
--- a/src/GF/Compile/GetGrammar.hs
+++ b/src/GF/Compile/GetGrammar.hs
@@ -19,7 +19,7 @@ module GF.Compile.GetGrammar (
) where
import GF.Data.Operations
-import qualified GF.Data.ErrM as E ----
+import qualified GF.Source.ErrM as E
import GF.Infra.UseIO
import GF.Grammar.Grammar
@@ -62,14 +62,14 @@ getSourceModule opts file0 = do
Just "utf8" -> decodeUTF8 string0
_ -> string0
let tokens = myLexer string
- mo1 <- ioeErr $ {- err2err $ -} pModDef tokens
+ mo1 <- ioeErr $ err2err $ pModDef tokens
ioeErr $ transModDef mo1
getSourceGrammar :: Options -> FilePath -> IOE SourceGrammar
getSourceGrammar opts file = do
string <- readFileIOE file
let tokens = myLexer string
- gr1 <- ioeErr $ {- err2err $ -} pGrammar tokens
+ gr1 <- ioeErr $ err2err $ pGrammar tokens
ioeErr $ transGrammar gr1
@@ -101,7 +101,7 @@ parseOldGrammar :: FilePath -> IOE ([FilePath],[A.TopDef])
parseOldGrammar file = do
putStrLnE $ "reading old file" +++ file
s <- ioeIO $ readFileIf file
- A.OldGr incl topdefs <- ioeErr $ pOldGrammar $ oldLexer $ fixNewlines s
+ A.OldGr incl topdefs <- ioeErr $ err2err $ pOldGrammar $ oldLexer $ fixNewlines s
includes <- ioeErr $ transInclude incl
return (includes, topdefs)
diff --git a/src/GF/Compile/PGrammar.hs b/src/GF/Compile/PGrammar.hs
index 1890ff0dd..1c6f0b411 100644
--- a/src/GF/Compile/PGrammar.hs
+++ b/src/GF/Compile/PGrammar.hs
@@ -32,7 +32,7 @@ import GF.Data.Operations
pTerm :: String -> Err Term
pTerm s = do
- e <- {- err2err $ -} pExp $ myLexer s
+ e <- err2err $ pExp $ myLexer s
transExp e
pTrm :: String -> Term
diff --git a/src/GF/Grammar/Grammar.hs b/src/GF/Grammar/Grammar.hs
index 85e515342..45b3da84b 100644
--- a/src/GF/Grammar/Grammar.hs
+++ b/src/GF/Grammar/Grammar.hs
@@ -191,6 +191,7 @@ data Patt =
| PSeq Patt Patt -- ^ sequence of token parts: p + q
| PRep Patt -- ^ repetition of token part: p*
| PChar -- ^ string of length one
+ | PChars [Char] -- ^ character list
deriving (Read, Show, Eq, Ord)
diff --git a/src/GF/Grammar/PrGrammar.hs b/src/GF/Grammar/PrGrammar.hs
index ad65f452b..c3a21d1d6 100644
--- a/src/GF/Grammar/PrGrammar.hs
+++ b/src/GF/Grammar/PrGrammar.hs
@@ -48,6 +48,8 @@ import GF.Infra.Option
import GF.Infra.Ident
import GF.Data.Str
+import GF.Infra.CompactPrint
+
import Data.List (intersperse)
class Print a where
@@ -71,24 +73,27 @@ class Print a where
prtBad :: Print a => String -> a -> Err b
prtBad s a = Bad (s +++ prt a)
+pprintTree :: P.Print a => a -> String
+pprintTree = compactPrint . P.printTree
+
prGrammar :: SourceGrammar -> String
-prGrammar = P.printTree . trGrammar
+prGrammar = pprintTree . trGrammar
prModule :: (Ident, SourceModInfo) -> String
-prModule = P.printTree . trModule
+prModule = pprintTree . trModule
instance Print Term where
- prt = P.printTree . trt
+ prt = pprintTree . trt
prt_ = prExp
instance Print Ident where
- prt = P.printTree . tri
+ prt = pprintTree . tri
instance Print Patt where
- prt = P.printTree . trp
+ prt = pprintTree . trp
instance Print Label where
- prt = P.printTree . trLabel
+ prt = pprintTree . trLabel
instance Print MetaSymb where
prt (MetaSymb i) = "?" ++ show i
diff --git a/src/GF/Source/AbsGF.hs b/src/GF/Source/AbsGF.hs
index e6b389576..63cc43006 100644
--- a/src/GF/Source/AbsGF.hs
+++ b/src/GF/Source/AbsGF.hs
@@ -1,26 +1,24 @@
-module GF.Source.AbsGF where --H
+module GF.Source.AbsGF where
-import GF.Infra.Ident --H
+-- Haskell module generated by the BNF converter
--- Haskell module generated by the BNF converter, except --H
-
--- newtype Ident = Ident String deriving (Eq,Ord,Show) --H
newtype LString = LString String deriving (Eq,Ord,Show)
+newtype PIdent = PIdent ((Int,Int),String) deriving (Eq,Ord,Show)
data Grammar =
Gr [ModDef]
deriving (Eq,Ord,Show)
data ModDef =
- MMain Ident Ident [ConcSpec]
+ MMain PIdent PIdent [ConcSpec]
| MModule ComplMod ModType ModBody
deriving (Eq,Ord,Show)
data ConcSpec =
- ConcSpec Ident ConcExp
+ ConcSpec PIdent ConcExp
deriving (Eq,Ord,Show)
data ConcExp =
- ConcExp Ident [Transfer]
+ ConcExp PIdent [Transfer]
deriving (Eq,Ord,Show)
data Transfer =
@@ -29,22 +27,22 @@ data Transfer =
deriving (Eq,Ord,Show)
data ModType =
- MTAbstract Ident
- | MTResource Ident
- | MTInterface Ident
- | MTConcrete Ident Ident
- | MTInstance Ident Ident
- | MTTransfer Ident Open Open
+ MTAbstract PIdent
+ | MTResource PIdent
+ | MTInterface PIdent
+ | MTConcrete PIdent PIdent
+ | MTInstance PIdent PIdent
+ | MTTransfer PIdent Open Open
deriving (Eq,Ord,Show)
data ModBody =
- MNoBody [Included]
- | MWithBody Included [Open] Opens [TopDef]
- | MWithEBody [Included] Included [Open] Opens [TopDef]
- | MBody Extend Opens [TopDef]
+ MBody Extend Opens [TopDef]
+ | MNoBody [Included]
| MWith Included [Open]
+ | MWithBody Included [Open] Opens [TopDef]
| MWithE [Included] Included [Open]
- | MReuse Ident
+ | MWithEBody [Included] Included [Open] Opens [TopDef]
+ | MReuse PIdent
| MUnion [Included]
deriving (Eq,Ord,Show)
@@ -59,9 +57,9 @@ data Opens =
deriving (Eq,Ord,Show)
data Open =
- OName Ident
- | OQualQO QualOpen Ident
- | OQual QualOpen Ident Ident
+ OName PIdent
+ | OQualQO QualOpen PIdent
+ | OQual QualOpen PIdent PIdent
deriving (Eq,Ord,Show)
data ComplMod =
@@ -76,9 +74,9 @@ data QualOpen =
deriving (Eq,Ord,Show)
data Included =
- IAll Ident
- | ISome Ident [Ident]
- | IMinus Ident [Ident]
+ IAll PIdent
+ | ISome PIdent [PIdent]
+ | IMinus PIdent [PIdent]
deriving (Eq,Ord,Show)
data Def =
@@ -106,38 +104,38 @@ data TopDef =
| DefPrintOld [PrintDef]
| DefLintype [Def]
| DefPattern [Def]
- | DefPackage Ident [TopDef]
+ | DefPackage PIdent [TopDef]
| DefVars [Def]
- | DefTokenizer Ident
+ | DefTokenizer PIdent
deriving (Eq,Ord,Show)
data CatDef =
- SimpleCatDef Ident [DDecl]
- | ListCatDef Ident [DDecl]
- | ListSizeCatDef Ident [DDecl] Integer
+ SimpleCatDef PIdent [DDecl]
+ | ListCatDef PIdent [DDecl]
+ | ListSizeCatDef PIdent [DDecl] Integer
deriving (Eq,Ord,Show)
data FunDef =
- FunDef [Ident] Exp
+ FunDef [PIdent] Exp
deriving (Eq,Ord,Show)
data DataDef =
- DataDef Ident [DataConstr]
+ DataDef PIdent [DataConstr]
deriving (Eq,Ord,Show)
data DataConstr =
- DataId Ident
- | DataQId Ident Ident
+ DataId PIdent
+ | DataQId PIdent PIdent
deriving (Eq,Ord,Show)
data ParDef =
- ParDefDir Ident [ParConstr]
- | ParDefIndir Ident Ident
- | ParDefAbs Ident
+ ParDefDir PIdent [ParConstr]
+ | ParDefIndir PIdent PIdent
+ | ParDefAbs PIdent
deriving (Eq,Ord,Show)
data ParConstr =
- ParConstr Ident [DDecl]
+ ParConstr PIdent [DDecl]
deriving (Eq,Ord,Show)
data PrintDef =
@@ -145,24 +143,24 @@ data PrintDef =
deriving (Eq,Ord,Show)
data FlagDef =
- FlagDef Ident Ident
+ FlagDef PIdent PIdent
deriving (Eq,Ord,Show)
data Name =
- IdentName Ident
- | ListName Ident
+ IdentName PIdent
+ | ListName PIdent
deriving (Eq,Ord,Show)
data LocDef =
- LDDecl [Ident] Exp
- | LDDef [Ident] Exp
- | LDFull [Ident] Exp Exp
+ LDDecl [PIdent] Exp
+ | LDDef [PIdent] Exp
+ | LDFull [PIdent] Exp Exp
deriving (Eq,Ord,Show)
data Exp =
- EIdent Ident
- | EConstr Ident
- | ECons Ident
+ EIdent PIdent
+ | EConstr PIdent
+ | ECons PIdent
| ESort Sort
| EString String
| EInt Integer
@@ -170,15 +168,15 @@ data Exp =
| EMeta
| EEmpty
| EData
- | EList Ident Exps
+ | EList PIdent Exps
| EStrings String
| ERecord [LocDef]
| ETuple [TupleComp]
- | EIndir Ident
+ | EIndir PIdent
| ETyped Exp Exp
| EProj Exp Label
- | EQConstr Ident Ident
- | EQCons Ident Ident
+ | EQConstr PIdent PIdent
+ | EQCons PIdent PIdent
| EApp Exp Exp
| ETable [Case]
| ETTable Exp [Case]
@@ -187,7 +185,9 @@ data Exp =
| EVariants [Exp]
| EPre Exp [Altern]
| EStrs [Exp]
- | EConAt Ident Exp
+ | EConAt PIdent Exp
+ | EPatt Patt
+ | EPattType Exp
| ESelect Exp Exp
| ETupTyp Exp Exp
| EExtend Exp Exp
@@ -203,7 +203,7 @@ data Exp =
| EEqs [Equation]
| EExample Exp String
| ELString LString
- | ELin Ident
+ | ELin PIdent
deriving (Eq,Ord,Show)
data Exps =
@@ -212,30 +212,34 @@ data Exps =
deriving (Eq,Ord,Show)
data Patt =
- PW
- | PV Ident
- | PCon Ident
- | PQ Ident Ident
+ PChar
+ | PChars String
+ | PMacro PIdent
+ | PM PIdent PIdent
+ | PW
+ | PV PIdent
+ | PCon PIdent
+ | PQ PIdent PIdent
| PInt Integer
| PFloat Double
| PStr String
| PR [PattAss]
| PTup [PattTupleComp]
- | PC Ident [Patt]
- | PQC Ident Ident [Patt]
+ | PC PIdent [Patt]
+ | PQC PIdent PIdent [Patt]
| PDisj Patt Patt
| PSeq Patt Patt
| PRep Patt
- | PAs Ident Patt
+ | PAs PIdent Patt
| PNeg Patt
deriving (Eq,Ord,Show)
data PattAss =
- PA [Ident] Patt
+ PA [PIdent] Patt
deriving (Eq,Ord,Show)
data Label =
- LIdent Ident
+ LIdent PIdent
| LVar Integer
deriving (Eq,Ord,Show)
@@ -248,7 +252,7 @@ data Sort =
deriving (Eq,Ord,Show)
data Bind =
- BIdent Ident
+ BIdent PIdent
| BWild
deriving (Eq,Ord,Show)
@@ -293,10 +297,10 @@ data Include =
data FileName =
FString String
- | FIdent Ident
+ | FIdent PIdent
| FSlash FileName
| FDot FileName
| FMinus FileName
- | FAddId Ident FileName
+ | FAddId PIdent FileName
deriving (Eq,Ord,Show)
diff --git a/src/GF/Source/GF.cf b/src/GF/Source/GF.cf
index 7b12952d8..5de0d1f87 100644
--- a/src/GF/Source/GF.cf
+++ b/src/GF/Source/GF.cf
@@ -21,12 +21,12 @@ _. ModDef ::= ModDef ";" ;
-- The $main$ multilingual grammar structure --%
-MMain. ModDef ::= "grammar" Ident "=" "{" "abstract" "=" Ident ";" [ConcSpec] "}" ;--%
+MMain. ModDef ::= "grammar" PIdent "=" "{" "abstract" "=" PIdent ";" [ConcSpec] "}" ;--%
-ConcSpec. ConcSpec ::= Ident "=" ConcExp ;--%
+ConcSpec. ConcSpec ::= PIdent "=" ConcExp ;--%
separator ConcSpec ";" ;--%
-ConcExp. ConcExp ::= Ident [Transfer] ;--%
+ConcExp. ConcExp ::= PIdent [Transfer] ;--%
separator Transfer "" ;--%
TransferIn. Transfer ::= "(" "transfer" "in" Open ")" ; --%
@@ -36,12 +36,12 @@ TransferOut. Transfer ::= "(" "transfer" "out" Open ")" ; --%
MModule. ModDef ::= ComplMod ModType "=" ModBody ;
-MTAbstract. ModType ::= "abstract" Ident ;
-MTResource. ModType ::= "resource" Ident ;
-MTInterface. ModType ::= "interface" Ident ;
-MTConcrete. ModType ::= "concrete" Ident "of" Ident ;
-MTInstance. ModType ::= "instance" Ident "of" Ident ;
-MTTransfer. ModType ::= "transfer" Ident ":" Open "->" Open ;
+MTAbstract. ModType ::= "abstract" PIdent ;
+MTResource. ModType ::= "resource" PIdent ;
+MTInterface. ModType ::= "interface" PIdent ;
+MTConcrete. ModType ::= "concrete" PIdent "of" PIdent ;
+MTInstance. ModType ::= "instance" PIdent "of" PIdent ;
+MTTransfer. ModType ::= "transfer" PIdent ":" Open "->" Open ;
MBody. ModBody ::= Extend Opens "{" [TopDef] "}" ;
@@ -51,7 +51,7 @@ MWithBody. ModBody ::= Included "with" [Open] "**" Opens "{" [T
MWithE. ModBody ::= [Included] "**" Included "with" [Open] ;
MWithEBody. ModBody ::= [Included] "**" Included "with" [Open] "**" Opens "{" [TopDef] "}" ;
-MReuse. ModBody ::= "reuse" Ident ; --%
+MReuse. ModBody ::= "reuse" PIdent ; --%
MUnion. ModBody ::= "union" [Included] ;--%
separator TopDef "" ;
@@ -63,9 +63,9 @@ separator Open "," ;
NoOpens. Opens ::= ;
OpenIn. Opens ::= "open" [Open] "in" ;
-OName. Open ::= Ident ;
-OQualQO. Open ::= "(" QualOpen Ident ")" ;
-OQual. Open ::= "(" QualOpen Ident "=" Ident ")" ;
+OName. Open ::= PIdent ;
+OQualQO. Open ::= "(" QualOpen PIdent ")" ;
+OQual. Open ::= "(" QualOpen PIdent "=" PIdent ")" ;
CMCompl. ComplMod ::= ;
CMIncompl. ComplMod ::= "incomplete" ;
@@ -76,9 +76,9 @@ QOInterface. QualOpen ::= "interface" ;--%
separator Included "," ;
-IAll. Included ::= Ident ;
-ISome. Included ::= Ident "[" [Ident] "]" ;
-IMinus. Included ::= Ident "-" "[" [Ident] "]" ;
+IAll. Included ::= PIdent ;
+ISome. Included ::= PIdent "[" [PIdent] "]" ;
+IMinus. Included ::= PIdent "-" "[" [PIdent] "]" ;
-- definitions after the $oper$ keywords
@@ -108,27 +108,27 @@ DefPrintCat. TopDef ::= "printname" "cat" [PrintDef] ;
DefPrintFun. TopDef ::= "printname" "fun" [PrintDef] ;
DefFlag. TopDef ::= "flags" [FlagDef] ;
-SimpleCatDef. CatDef ::= Ident [DDecl] ;
-ListCatDef. CatDef ::= "[" Ident [DDecl] "]" ;
-ListSizeCatDef. CatDef ::= "[" Ident [DDecl] "]" "{" Integer "}" ;
+SimpleCatDef. CatDef ::= PIdent [DDecl] ;
+ListCatDef. CatDef ::= "[" PIdent [DDecl] "]" ;
+ListSizeCatDef. CatDef ::= "[" PIdent [DDecl] "]" "{" Integer "}" ;
-FunDef. FunDef ::= [Ident] ":" Exp ;
+FunDef. FunDef ::= [PIdent] ":" Exp ;
-DataDef. DataDef ::= Ident "=" [DataConstr] ;
-DataId. DataConstr ::= Ident ;
-DataQId. DataConstr ::= Ident "." Ident ;
+DataDef. DataDef ::= PIdent "=" [DataConstr] ;
+DataId. DataConstr ::= PIdent ;
+DataQId. DataConstr ::= PIdent "." PIdent ;
separator DataConstr "|" ;
-ParDefDir. ParDef ::= Ident "=" [ParConstr] ;
-ParDefIndir. ParDef ::= Ident "=" "(" "in" Ident ")" ;
-ParDefAbs. ParDef ::= Ident ;
+ParDefDir. ParDef ::= PIdent "=" [ParConstr] ;
+ParDefIndir. ParDef ::= PIdent "=" "(" "in" PIdent ")" ;
+ParDefAbs. ParDef ::= PIdent ;
-ParConstr. ParConstr ::= Ident [DDecl] ;
+ParConstr. ParConstr ::= PIdent [DDecl] ;
PrintDef. PrintDef ::= [Name] "=" Exp ;
-FlagDef. FlagDef ::= Ident "=" Ident ;
+FlagDef. FlagDef ::= PIdent "=" PIdent ;
terminator nonempty Def ";" ;
terminator nonempty CatDef ";" ;
@@ -141,28 +141,28 @@ terminator nonempty FlagDef ";" ;
separator ParConstr "|" ;
-separator nonempty Ident "," ;
+separator nonempty PIdent "," ;
-- names of categories and functions in definition LHS
-IdentName. Name ::= Ident ;
-ListName. Name ::= "[" Ident "]" ;
+IdentName. Name ::= PIdent ;
+ListName. Name ::= "[" PIdent "]" ;
separator nonempty Name "," ;
-- definitions in records and $let$ expressions
-LDDecl. LocDef ::= [Ident] ":" Exp ;
-LDDef. LocDef ::= [Ident] "=" Exp ;
-LDFull. LocDef ::= [Ident] ":" Exp "=" Exp ;
+LDDecl. LocDef ::= [PIdent] ":" Exp ;
+LDDef. LocDef ::= [PIdent] "=" Exp ;
+LDFull. LocDef ::= [PIdent] ":" Exp "=" Exp ;
separator LocDef ";" ;
-- terms and types
-EIdent. Exp6 ::= Ident ;
-EConstr. Exp6 ::= "{" Ident "}" ;--%
-ECons. Exp6 ::= "%" Ident "%" ;--%
+EIdent. Exp6 ::= PIdent ;
+EConstr. Exp6 ::= "{" PIdent "}" ;--%
+ECons. Exp6 ::= "%" PIdent "%" ;--%
ESort. Exp6 ::= Sort ;
EString. Exp6 ::= String ;
EInt. Exp6 ::= Integer ;
@@ -170,16 +170,16 @@ EFloat. Exp6 ::= Double ;
EMeta. Exp6 ::= "?" ;
EEmpty. Exp6 ::= "[" "]" ;
EData. Exp6 ::= "data" ;
-EList. Exp6 ::= "[" Ident Exps "]" ;
+EList. Exp6 ::= "[" PIdent Exps "]" ;
EStrings. Exp6 ::= "[" String "]" ;
ERecord. Exp6 ::= "{" [LocDef] "}" ; -- !
ETuple. Exp6 ::= "<" [TupleComp] ">" ; --- needed for separator ","
-EIndir. Exp6 ::= "(" "in" Ident ")" ; -- indirection, used in judgements --%
+EIndir. Exp6 ::= "(" "in" PIdent ")" ; -- indirection, used in judgements --%
ETyped. Exp6 ::= "<" Exp ":" Exp ">" ; -- typing, used for annotations
EProj. Exp5 ::= Exp5 "." Label ;
-EQConstr. Exp5 ::= "{" Ident "." Ident "}" ; -- qualified constructor --%
-EQCons. Exp5 ::= "%" Ident "." Ident ; -- qualified constant --%
+EQConstr. Exp5 ::= "{" PIdent "." PIdent "}" ; -- qualified constructor --%
+EQCons. Exp5 ::= "%" PIdent "." PIdent ; -- qualified constant --%
EApp. Exp4 ::= Exp4 Exp5 ;
ETable. Exp4 ::= "table" "{" [Case] "}" ;
@@ -187,9 +187,13 @@ ETTable. Exp4 ::= "table" Exp6 "{" [Case] "}" ;
EVTable. Exp4 ::= "table" Exp6 "[" [Exp] "]" ;
ECase. Exp4 ::= "case" Exp "of" "{" [Case] "}" ;
EVariants. Exp4 ::= "variants" "{" [Exp] "}" ;
+--- EPreCase. Exp4 ::= "pre" "{" [Case] "}" ;
EPre. Exp4 ::= "pre" "{" Exp ";" [Altern] "}" ;
EStrs. Exp4 ::= "strs" "{" [Exp] "}" ;
-EConAt. Exp4 ::= Ident "@" Exp6 ; --%
+EConAt. Exp4 ::= PIdent "@" Exp6 ; --%
+
+EPatt. Exp4 ::= "pattern" Patt2 ;
+EPattType. Exp4 ::= "pattern" "type" Exp5 ;
ESelect. Exp3 ::= Exp3 "!" Exp4 ;
ETupTyp. Exp3 ::= Exp3 "*" Exp4 ;
@@ -220,30 +224,34 @@ ConsExp. Exps ::= Exp6 Exps ; -- Exp6 to force parantheses
-- patterns
+PChar. Patt2 ::= "?" ;
+PChars. Patt2 ::= "[" String "]" ;
+PMacro. Patt2 ::= "#" PIdent ;
+PM. Patt2 ::= "#" PIdent "." PIdent ;
PW. Patt2 ::= "_" ;
-PV. Patt2 ::= Ident ;
-PCon. Patt2 ::= "{" Ident "}" ; --%
-PQ. Patt2 ::= Ident "." Ident ;
+PV. Patt2 ::= PIdent ;
+PCon. Patt2 ::= "{" PIdent "}" ; --%
+PQ. Patt2 ::= PIdent "." PIdent ;
PInt. Patt2 ::= Integer ;
PFloat. Patt2 ::= Double ;
PStr. Patt2 ::= String ;
PR. Patt2 ::= "{" [PattAss] "}" ;
PTup. Patt2 ::= "<" [PattTupleComp] ">" ;
-PC. Patt1 ::= Ident [Patt] ;
-PQC. Patt1 ::= Ident "." Ident [Patt] ;
+PC. Patt1 ::= PIdent [Patt] ;
+PQC. Patt1 ::= PIdent "." PIdent [Patt] ;
PDisj. Patt ::= Patt "|" Patt1 ;
PSeq. Patt ::= Patt "+" Patt1 ;
PRep. Patt1 ::= Patt2 "*" ;
-PAs. Patt1 ::= Ident "@" Patt2 ;
+PAs. Patt1 ::= PIdent "@" Patt2 ;
PNeg. Patt1 ::= "-" Patt2 ;
coercions Patt 2 ;
-PA. PattAss ::= [Ident] "=" Patt ;
+PA. PattAss ::= [PIdent] "=" Patt ;
-- labels
-LIdent. Label ::= Ident ;
+LIdent. Label ::= PIdent ;
LVar. Label ::= "$" Integer ;
-- basic types
@@ -264,7 +272,7 @@ separator PattAss ";" ;
-- binds in lambdas and lin rules
-BIdent. Bind ::= Ident ;
+BIdent. Bind ::= PIdent ;
BWild. Bind ::= "_" ;
separator Bind "," ;
@@ -322,23 +330,27 @@ FString. FileName ::= String ; --%
terminator nonempty FileName ";" ; --%
-FIdent. FileName ::= Ident ; --%
+FIdent. FileName ::= PIdent ; --%
FSlash. FileName ::= "/" FileName ; --%
FDot. FileName ::= "." FileName ; --%
FMinus. FileName ::= "-" FileName ; --%
-FAddId. FileName ::= Ident FileName ; --%
+FAddId. FileName ::= PIdent FileName ; --%
token LString '\'' (char - '\'')* '\'' ; --%
ELString. Exp6 ::= LString ; --%
-ELin. Exp4 ::= "Lin" Ident ; --%
+ELin. Exp4 ::= "Lin" PIdent ; --%
DefPrintOld. TopDef ::= "printname" [PrintDef] ; --%
DefLintype. TopDef ::= "lintype" [Def] ; --%
DefPattern. TopDef ::= "pattern" [Def] ; --%
-- deprecated packages are attempted to be interpreted --%
-DefPackage. TopDef ::= "package" Ident "=" "{" [TopDef] "}" ";" ; --%
+DefPackage. TopDef ::= "package" PIdent "=" "{" [TopDef] "}" ";" ; --%
-- these two are just ignored after parsing --%
DefVars. TopDef ::= "var" [Def] ; --%
-DefTokenizer. TopDef ::= "tokenizer" Ident ";" ; --%
+DefTokenizer. TopDef ::= "tokenizer" PIdent ";" ; --%
+
+-- identifiers
+
+position token PIdent ('_' | letter) (letter | digit | '_' | '\'')* ;
diff --git a/src/GF/Source/GrammarToSource.hs b/src/GF/Source/GrammarToSource.hs
index 9ad8b8850..8c70b8ea3 100644
--- a/src/GF/Source/GrammarToSource.hs
+++ b/src/GF/Source/GrammarToSource.hs
@@ -96,17 +96,17 @@ trAnyDef (i,info) = let i' = tri i in case info of
ResOverload tysts ->
[P.DefOper [P.DDef [mkName i'] (
- P.EApp (P.EIdent $ identC "overload")
+ P.EApp (P.EIdent $ tri $ identC "overload")
(P.ERecord [P.LDFull [i'] (trt ty) (trt fu) | (ty,fu) <- tysts]))]]
CncCat (Yes ty) Nope _ ->
[P.DefLincat [P.PrintDef [mkName i'] (trt ty)]]
CncCat pty ptr ppr ->
[P.DefLindef [trDef i' pty ptr]] ++
- [P.DefPrintCat [P.PrintDef [mkName i] (trt pr)] | Yes pr <- [ppr]]
+ [P.DefPrintCat [P.PrintDef [mkName i'] (trt pr)] | Yes pr <- [ppr]]
CncFun _ ptr ppr ->
[P.DefLin [trDef i' nope ptr]] ++
- [P.DefPrintFun [P.PrintDef [mkName i] (trt pr)] | Yes pr <- [ppr]]
+ [P.DefPrintFun [P.PrintDef [mkName i'] (trt pr)] | Yes pr <- [ppr]]
{-
---- encoding of AnyInd without changing syntax. AR 20/9/2007
AnyInd s b ->
@@ -116,7 +116,7 @@ trAnyDef (i,info) = let i' = tri i in case info of
_ -> []
-trDef :: Ident -> Perh Type -> Perh Term -> P.Def
+trDef :: P.PIdent -> Perh Type -> Perh Term -> P.Def
trDef i pty ptr = case (pty,ptr) of
(Nope, Nope) -> P.DDef [mkName i] (P.EMeta) ---
(_, Nope) -> P.DDecl [mkName i] (trPerh pty)
@@ -131,7 +131,7 @@ trPerh p = case p of
trFlag :: Option -> P.TopDef
trFlag o = case o of
- Opt (f,[x]) -> P.DefFlag [P.FlagDef (identC f) (identC x)]
+ Opt (f,[x]) -> P.DefFlag [P.FlagDef (tri $ identC f) (tri $ identC x)]
_ -> P.DefFlag [] --- warning?
trt :: Term -> P.Exp
@@ -207,7 +207,7 @@ trp p = case p of
PC c a -> P.PC (tri c) (map trp a)
PP p c [] -> P.PQ (tri p) (tri c)
PP p c a -> P.PQC (tri p) (tri c) (map trp a)
- PR r -> P.PR [P.PA [trLabelIdent l] (trp p) | (l,p) <- r]
+ PR r -> P.PR [P.PA [tri $ trLabelIdent l] (trp p) | (l,p) <- r]
PString s -> P.PStr s
PInt i -> P.PInt i
PFloat i -> P.PFloat i
@@ -219,36 +219,37 @@ trp p = case p of
PSeq p q -> P.PSeq (trp p) (trp q)
PRep p -> P.PRep (trp p)
PNeg p -> P.PNeg (trp p)
- PChar -> P.PV (IC "C_") ---- temporary encoding
+ PChar -> P.PChar
+ PChars s -> P.PChars s
trAssign (lab, (mty, t)) = maybe (P.LDDef x t') (\ty -> P.LDFull x (trt ty) t') mty
where
t' = trt t
- x = [trLabelIdent lab]
+ x = [tri $ trLabelIdent lab]
-trLabelling (lab,ty) = P.LDDecl [trLabelIdent lab] (trt ty)
+trLabelling (lab,ty) = P.LDDecl [tri $ trLabelIdent lab] (trt ty)
trCase (patt, trm) = P.Case (trp patt) (trt trm)
trCases (patts,trm) = P.Case (foldl1 P.PDisj (map trp patts)) (trt trm)
trDecl (x,ty) = P.DDDec [trb x] (trt ty)
-tri :: Ident -> Ident
-tri i = case prIdent i of
- s@('_':_:_) -> identC $ 'h':s ---- unsafe; needed since _3 etc are generated
- s -> identC $ s
-
+tri :: Ident -> P.PIdent
+tri = ppIdent . prIdent
+
+ppIdent i = P.PIdent ((0,0),i)
+
trb i = if isWildIdent i then P.BWild else P.BIdent (tri i)
trLabel :: Label -> P.Label
trLabel i = case i of
- LIdent s -> P.LIdent $ identC s
+ LIdent s -> P.LIdent $ ppIdent s
LVar i -> P.LVar $ toInteger i
trLabelIdent i = identC $ case i of
LIdent s -> s
LVar i -> "v" ++ show i --- should not happen
-mkName :: Ident -> P.Name
+mkName :: P.PIdent -> P.Name
mkName = P.IdentName
diff --git a/src/GF/Source/LexGF.hs b/src/GF/Source/LexGF.hs
index 4fd8922f2..0096fea3b 100644
--- a/src/GF/Source/LexGF.hs
+++ b/src/GF/Source/LexGF.hs
@@ -1,9 +1,9 @@
{-# OPTIONS -fglasgow-exts -cpp #-}
-{-# LINE 3 "LexGF.x" #-}
+{-# LINE 3 "GF/Source/LexGF.x" #-}
+{-# OPTIONS -fno-warn-incomplete-patterns #-}
module GF.Source.LexGF where
-import GF.Data.Operations
-import GF.Data.SharedString
+
#if __GLASGOW_HASKELL__ >= 603
#include "ghcconfig.h"
@@ -24,33 +24,34 @@ import GHC.Exts
import GlaExts
#endif
alex_base :: AlexAddr
-alex_base = AlexA# "\x01\x00\x00\x00\x15\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x18\x00\x00\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x42\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x9c\x00\x00\x00\x00\x00\x00\x00\x17\x01\x00\x00\xd5\x00\x00\x00\x35\x00\x00\x00\xe7\x00\x00\x00\xf2\x00\x00\x00\x1d\x01\x00\x00\x6c\x01\x00\x00\x79\x01\x00\x00"#
+alex_base = AlexA# "\x01\x00\x00\x00\x15\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x18\x00\x00\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x42\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x13\x00\x00\x00\x9c\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x6c\x01\x00\x00\x3c\x02\x00\x00\x0c\x03\x00\x00\x00\x00\x00\x00\x17\x01\x00\x00\xe7\x01\x00\x00\xd5\x00\x00\x00\x35\x00\x00\x00\xe7\x00\x00\x00\xf2\x00\x00\x00\x1d\x01\x00\x00\xc2\x01\x00\x00\xcc\x01\x00\x00"#
alex_table :: AlexAddr
-alex_table = AlexA# "\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\x0d\x00\x0d\x00\x0d\x00\x0d\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\x0d\x00\x0e\x00\x16\x00\xff\xff\x0e\x00\x0e\x00\xff\xff\x13\x00\x0e\x00\x0e\x00\x0f\x00\x10\x00\x0e\x00\x05\x00\x0e\x00\x0e\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x0e\x00\x0e\x00\x0e\x00\x11\x00\x0e\x00\x0e\x00\x0e\x00\x04\x00\xff\xff\xff\xff\x03\x00\x03\x00\x09\x00\x09\x00\x09\x00\x0b\x00\x0d\x00\x0d\x00\x0d\x00\x0d\x00\x0d\x00\x0e\x00\x0e\x00\x0e\x00\x12\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x0e\x00\x0e\x00\xff\xff\x0e\x00\xff\xff\x0d\x00\x1b\x00\x00\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x00\x00\x00\x00\x09\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x0e\x00\x0e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x06\x00\x07\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x16\x00\xff\xff\x00\x00\x00\x00\x14\x00\x16\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\xff\xff\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x00\x00\x00\x00\x00\x1d\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x17\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x00\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1c\x00\x00\x00\x00\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#
+alex_table = AlexA# "\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\x0d\x00\x0d\x00\x0d\x00\x0d\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\x0d\x00\x0e\x00\x1a\x00\x0e\x00\x0e\x00\x0e\x00\xff\xff\x14\x00\x0e\x00\x0e\x00\x0f\x00\x10\x00\x0e\x00\x05\x00\x0e\x00\x0e\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x0e\x00\x0e\x00\x0e\x00\x11\x00\x0e\x00\x0e\x00\x0e\x00\x04\x00\xff\xff\xff\xff\x02\x00\x02\x00\x09\x00\x09\x00\x09\x00\x0a\x00\x0d\x00\x0d\x00\x0d\x00\x0d\x00\x0d\x00\x0e\x00\x0e\x00\x0e\x00\x13\x00\x13\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x0e\x00\x0e\x00\xff\xff\x12\x00\xff\xff\x0d\x00\x20\x00\x00\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x1d\x00\x00\x00\x00\x00\x09\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x0e\x00\x0e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x06\x00\x07\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x1b\x00\xff\xff\x00\x00\x00\x00\x17\x00\x1b\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\xff\xff\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x21\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x1c\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x18\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x00\x00\x00\xff\xff\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x1c\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x17\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x00\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x18\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x00\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x00\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00\x18\x00"#
alex_check :: AlexAddr
-alex_check = AlexA# "\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x2d\x00\x0a\x00\x0a\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x2a\x00\x3e\x00\x2b\x00\x27\x00\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x20\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\x2d\x00\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\x7d\x00\x7d\x00\x27\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xd7\x00\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x22\x00\xf7\x00\xff\xff\xff\xff\x5f\x00\x27\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x0a\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\x65\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\x5c\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xff\xff\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x2d\x00\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#
+alex_check = AlexA# "\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x2d\x00\x0a\x00\x0a\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x2a\x00\x3e\x00\x2b\x00\x27\x00\x27\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x20\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\x2d\x00\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\x7d\x00\x7d\x00\x27\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xd7\x00\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x22\x00\xf7\x00\xff\xff\xff\xff\x5f\x00\x27\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x0a\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\x65\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\x5c\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\x27\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\xff\xff\x0a\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\x5c\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\x27\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xff\xff\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\x27\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xff\xff\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xff\xff\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00"#
alex_deflt :: AlexAddr
-alex_deflt = AlexA# "\x14\x00\xff\xff\x02\x00\x02\x00\xff\xff\xff\xff\x0a\x00\xff\xff\x0a\x00\x0a\x00\x0a\x00\x0a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x13\x00\xff\xff\xff\xff\x16\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#
+alex_deflt = AlexA# "\x16\x00\xff\xff\x03\x00\x03\x00\xff\xff\xff\xff\x0b\x00\xff\xff\x0b\x00\x0b\x00\x0b\x00\x0b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x15\x00\x15\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x1b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#
-alex_accept = listArray (0::Int,29) [[],[],[(AlexAccSkip)],[(AlexAccSkip)],[],[(AlexAcc (alex_action_3))],[(AlexAccSkip)],[(AlexAccSkip)],[],[],[],[],[(AlexAcc (alex_action_3))],[(AlexAccSkip)],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_4))],[],[(AlexAcc (alex_action_5))],[(AlexAcc (alex_action_6))],[],[],[(AlexAcc (alex_action_7))],[(AlexAcc (alex_action_8))],[(AlexAcc (alex_action_8))],[],[],[]]
-{-# LINE 35 "LexGF.x" #-}
+alex_accept = listArray (0::Int,34) [[],[],[(AlexAccSkip)],[(AlexAccSkip)],[],[(AlexAcc (alex_action_3))],[(AlexAccSkip)],[(AlexAccSkip)],[],[],[],[],[(AlexAcc (alex_action_3))],[(AlexAccSkip)],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_4))],[],[],[(AlexAcc (alex_action_5))],[(AlexAcc (alex_action_5))],[(AlexAcc (alex_action_5))],[(AlexAcc (alex_action_7))],[],[],[],[(AlexAcc (alex_action_8))],[(AlexAcc (alex_action_9))],[(AlexAcc (alex_action_9))],[],[],[]]
+{-# LINE 36 "GF/Source/LexGF.x" #-}
tok f p s = f p s
share :: String -> String
-share = shareString
+share = id
data Tok =
- TS !String -- reserved words
+ TS !String -- reserved words and symbols
| TL !String -- string literals
| TI !String -- integer literals
| TV !String -- identifiers
| TD !String -- double precision float literals
| TC !String -- character literals
| T_LString !String
+ | T_PIdent !String
deriving (Eq,Show,Ord)
@@ -73,6 +74,7 @@ prToken t = case t of
PT _ (TD s) -> s
PT _ (TC s) -> s
PT _ (T_LString s) -> s
+ PT _ (T_PIdent s) -> s
_ -> show t
@@ -86,7 +88,7 @@ eitherResIdent tv s = treeFind resWords
| s > a = treeFind right
| s == a = t
-resWords = b "lincat" (b "def" (b "Type" (b "Str" (b "PType" (b "Lin" N N) N) (b "Tok" (b "Strs" N N) N)) (b "cat" (b "case" (b "abstract" N N) N) (b "data" (b "concrete" N N) N))) (b "include" (b "fun" (b "fn" (b "flags" N N) N) (b "in" (b "grammar" N N) N)) (b "interface" (b "instance" (b "incomplete" N N) N) (b "lin" (b "let" N N) N)))) (b "resource" (b "out" (b "of" (b "lintype" (b "lindef" N N) N) (b "oper" (b "open" N N) N)) (b "pattern" (b "param" (b "package" N N) N) (b "printname" (b "pre" N N) N))) (b "union" (b "table" (b "strs" (b "reuse" N N) N) (b "transfer" (b "tokenizer" N N) N)) (b "where" (b "variants" (b "var" N N) N) (b "with" N N))))
+resWords = b "lincat" (b "def" (b "Type" (b "Str" (b "PType" (b "Lin" N N) N) (b "Tok" (b "Strs" N N) N)) (b "cat" (b "case" (b "abstract" N N) N) (b "data" (b "concrete" N N) N))) (b "include" (b "fun" (b "fn" (b "flags" N N) N) (b "in" (b "grammar" N N) N)) (b "interface" (b "instance" (b "incomplete" N N) N) (b "lin" (b "let" N N) N)))) (b "resource" (b "out" (b "of" (b "lintype" (b "lindef" N N) N) (b "oper" (b "open" N N) N)) (b "pattern" (b "param" (b "package" N N) N) (b "printname" (b "pre" N N) N))) (b "type" (b "table" (b "strs" (b "reuse" N N) N) (b "transfer" (b "tokenizer" N N) N)) (b "variants" (b "var" (b "union" N N) N) (b "with" (b "where" N N) N))))
where b s = B s (TS s)
unescapeInitTail :: String -> String
@@ -116,19 +118,19 @@ alexMove (Pn a l c) '\n' = Pn (a+1) (l+1) 1
alexMove (Pn a l c) _ = Pn (a+1) l (c+1)
type AlexInput = (Posn, -- current position,
- Char, -- previous char
- String) -- current input string
+ Char, -- previous char
+ String) -- current input string
tokens :: String -> [Token]
tokens str = go (alexStartPos, '\n', str)
where
go :: (Posn, Char, String) -> [Token]
go inp@(pos, _, str) =
- case alexScan inp 0 of
- AlexEOF -> []
- AlexError (pos, _, _) -> [Err pos]
- AlexSkip inp' len -> go inp'
- AlexToken inp' len act -> act pos (take len str) : (go inp')
+ case alexScan inp 0 of
+ AlexEOF -> []
+ AlexError (pos, _, _) -> [Err pos]
+ AlexSkip inp' len -> go inp'
+ AlexToken inp' len act -> act pos (take len str) : (go inp')
alexGetChar :: AlexInput -> Maybe (Char,AlexInput)
alexGetChar (p, c, []) = Nothing
@@ -141,10 +143,11 @@ alexInputPrevChar (p, c, s) = c
alex_action_3 = tok (\p s -> PT p (TS $ share s))
alex_action_4 = tok (\p s -> PT p (eitherResIdent (T_LString . share) s))
-alex_action_5 = tok (\p s -> PT p (eitherResIdent (TV . share) s))
-alex_action_6 = tok (\p s -> PT p (TL $ share $ unescapeInitTail s))
-alex_action_7 = tok (\p s -> PT p (TI $ share s))
-alex_action_8 = tok (\p s -> PT p (TD $ share s))
+alex_action_5 = tok (\p s -> PT p (eitherResIdent (T_PIdent . share) s))
+alex_action_6 = tok (\p s -> PT p (eitherResIdent (TV . share) s))
+alex_action_7 = tok (\p s -> PT p (TL $ share $ unescapeInitTail s))
+alex_action_8 = tok (\p s -> PT p (TI $ share s))
+alex_action_9 = tok (\p s -> PT p (TD $ share s))
{-# LINE 1 "GenericTemplate.hs" #-}
{-# LINE 1 "<built-in>" #-}
{-# LINE 1 "<command line>" #-}
@@ -158,18 +161,9 @@ alex_action_8 = tok (\p s -> PT p (TD $ share s))
-- -----------------------------------------------------------------------------
-- INTERNALS and main scanner engine
-
{-# LINE 35 "GenericTemplate.hs" #-}
-
-
-
-
-
-
-
-
-
+{-# LINE 45 "GenericTemplate.hs" #-}
data AlexAddr = AlexA# Addr#
@@ -235,7 +229,7 @@ data AlexReturn a
| AlexSkip !AlexInput !Int
| AlexToken !AlexInput !Int a
--- alexScan :: AlexInput -> StartCode -> Maybe (AlexInput,Int,act)
+-- alexScan :: AlexInput -> StartCode -> AlexReturn a
alexScan input (I# (sc))
= alexScanUser undefined input (I# (sc))
@@ -272,11 +266,6 @@ alexScanUser user input (I# (sc))
alex_scan_tkn user orig_input len input s last_acc =
input `seq` -- strict in the input
- case s of
- -1# -> (last_acc, input)
- _ -> alex_scan_tkn' user orig_input len input s last_acc
-
-alex_scan_tkn' user orig_input len input s last_acc =
let
new_acc = check_accs (alex_accept `quickIndex` (I# (s)))
in
@@ -297,7 +286,12 @@ alex_scan_tkn' user orig_input len input s last_acc =
then alexIndexInt16OffAddr alex_table offset
else alexIndexInt16OffAddr alex_deflt s
in
- alex_scan_tkn user orig_input (len +# 1#) new_input new_s new_acc
+ case new_s of
+ -1# -> (new_acc, input)
+ -- on an error, we want to keep the input *before* the
+ -- character that failed, not after.
+ _ -> alex_scan_tkn user orig_input (len +# 1#)
+ new_input new_s new_acc
where
check_accs [] = last_acc
diff --git a/src/GF/Source/ParGF.hs b/src/GF/Source/ParGF.hs
index 71b4bbfec..63b997f5c 100644
--- a/src/GF/Source/ParGF.hs
+++ b/src/GF/Source/ParGF.hs
@@ -1,10 +1,9 @@
{-# OPTIONS -fglasgow-exts -cpp #-}
{-# OPTIONS -fno-warn-incomplete-patterns -fno-warn-overlapping-patterns #-}
- module GF.Source.ParGF (pGrammar, pModDef, pOldGrammar, pExp, myLexer) where --H
-import GF.Source.AbsGF --H
-import GF.Source.LexGF --H
-import GF.Infra.Ident --H
-import GF.Data.ErrM --H
+module GF.Source.ParGF where
+import GF.Source.AbsGF
+import GF.Source.LexGF
+import GF.Source.ErrM
#if __GLASGOW_HASKELL__ >= 503
import Data.Array
#else
@@ -16,42 +15,37 @@ import GHC.Exts
import GlaExts
#endif
--- parser produced by Happy Version 1.17
+-- parser produced by Happy Version 1.16
-newtype HappyAbsSyn = HappyAbsSyn HappyAny
-#if __GLASGOW_HASKELL__ >= 607
-type HappyAny = GHC.Exts.Any
-#else
-type HappyAny = forall a . a
-#endif
-happyIn7 :: (Ident) -> (HappyAbsSyn )
+newtype HappyAbsSyn = HappyAbsSyn (() -> ())
+happyIn7 :: (Integer) -> (HappyAbsSyn )
happyIn7 x = unsafeCoerce# x
{-# INLINE happyIn7 #-}
-happyOut7 :: (HappyAbsSyn ) -> (Ident)
+happyOut7 :: (HappyAbsSyn ) -> (Integer)
happyOut7 x = unsafeCoerce# x
{-# INLINE happyOut7 #-}
-happyIn8 :: (Integer) -> (HappyAbsSyn )
+happyIn8 :: (String) -> (HappyAbsSyn )
happyIn8 x = unsafeCoerce# x
{-# INLINE happyIn8 #-}
-happyOut8 :: (HappyAbsSyn ) -> (Integer)
+happyOut8 :: (HappyAbsSyn ) -> (String)
happyOut8 x = unsafeCoerce# x
{-# INLINE happyOut8 #-}
-happyIn9 :: (String) -> (HappyAbsSyn )
+happyIn9 :: (Double) -> (HappyAbsSyn )
happyIn9 x = unsafeCoerce# x
{-# INLINE happyIn9 #-}
-happyOut9 :: (HappyAbsSyn ) -> (String)
+happyOut9 :: (HappyAbsSyn ) -> (Double)
happyOut9 x = unsafeCoerce# x
{-# INLINE happyOut9 #-}
-happyIn10 :: (Double) -> (HappyAbsSyn )
+happyIn10 :: (LString) -> (HappyAbsSyn )
happyIn10 x = unsafeCoerce# x
{-# INLINE happyIn10 #-}
-happyOut10 :: (HappyAbsSyn ) -> (Double)
+happyOut10 :: (HappyAbsSyn ) -> (LString)
happyOut10 x = unsafeCoerce# x
{-# INLINE happyOut10 #-}
-happyIn11 :: (LString) -> (HappyAbsSyn )
+happyIn11 :: (PIdent) -> (HappyAbsSyn )
happyIn11 x = unsafeCoerce# x
{-# INLINE happyIn11 #-}
-happyOut11 :: (HappyAbsSyn ) -> (LString)
+happyOut11 :: (HappyAbsSyn ) -> (PIdent)
happyOut11 x = unsafeCoerce# x
{-# INLINE happyOut11 #-}
happyIn12 :: (Grammar) -> (HappyAbsSyn )
@@ -282,10 +276,10 @@ happyIn49 x = unsafeCoerce# x
happyOut49 :: (HappyAbsSyn ) -> ([ParConstr])
happyOut49 x = unsafeCoerce# x
{-# INLINE happyOut49 #-}
-happyIn50 :: ([Ident]) -> (HappyAbsSyn )
+happyIn50 :: ([PIdent]) -> (HappyAbsSyn )
happyIn50 x = unsafeCoerce# x
{-# INLINE happyIn50 #-}
-happyOut50 :: (HappyAbsSyn ) -> ([Ident])
+happyOut50 :: (HappyAbsSyn ) -> ([PIdent])
happyOut50 x = unsafeCoerce# x
{-# INLINE happyOut50 #-}
happyIn51 :: (Name) -> (HappyAbsSyn )
@@ -535,23 +529,22 @@ happyOutTok :: (HappyAbsSyn ) -> Token
happyOutTok x = unsafeCoerce# x
{-# INLINE happyOutTok #-}
-
happyActOffsets :: HappyAddr
-happyActOffsets = HappyA# "\x00\x00\x76\x01\x41\x05\x48\x01\x23\x05\x00\x00\x59\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x05\xb2\x01\x7e\x00\x53\x05\x18\x05\x43\x05\x00\x00\x5f\x05\x1c\x05\x5e\x00\x3c\x00\x1c\x05\x00\x00\x48\x01\xa0\x00\x1c\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x01\x00\x00\x56\x05\xb2\x02\x16\x00\x55\x05\x52\x05\x99\x02\x51\x05\x00\x00\x00\x00\x00\x00\x00\x00\x05\x05\x00\x00\x09\x01\x0e\x00\xf0\x04\x07\x05\x00\x00\x04\x05\xf1\xff\x50\x05\x4e\x05\x4c\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x00\x00\x09\x01\x00\x00\x4b\x05\x00\x00\x09\x01\x09\x01\x09\x01\xe0\x07\x48\x01\x00\x00\x15\x00\xe5\x00\xfa\x00\xff\x04\xac\x00\xac\x00\x34\x05\xb1\x01\x3c\x05\x0e\x05\xef\x04\x34\x00\x73\x00\x02\x05\x00\x00\x00\x00\x2f\x05\x30\x05\x29\x00\x00\x00\x2e\x05\x2a\x05\x20\x05\x53\x02\x80\x02\x24\x05\x00\x00\x59\x03\x1d\x05\x19\x05\x4b\x02\xda\x01\x1b\x05\xac\x00\x7d\x01\xac\x00\x7d\x01\x7d\x01\x7d\x01\xac\x00\x1a\x05\x10\x05\x09\x00\x32\x02\x00\x00\xce\x04\x00\x00\x00\x00\xcf\x04\xcd\x04\x00\x00\x19\x02\x19\x02\x19\x02\x00\x00\x19\x02\xc1\x02\x00\x00\x00\x00\x00\x00\x00\x00\xcd\x04\xcd\x04\x12\x05\xac\x00\x00\x00\x00\x00\xe4\x01\x09\x05\xb9\x04\x00\x00\x00\x00\xac\x00\xac\x00\xec\x04\xac\x00\x29\x00\x01\x05\xf5\x04\x00\x00\x00\x00\x00\x00\x73\x00\xfa\x04\x00\x05\xfb\x04\xb2\x04\xe5\x00\xe5\x00\x00\x00\x00\x00\xf9\x04\xac\x00\xb0\x04\xac\x00\xac\x00\xeb\x04\xe9\x04\xe4\x04\xd9\x04\x00\x03\xd1\x04\x00\x00\x20\x03\xe5\x04\xe1\x04\x73\x00\xe5\x00\xac\x00\xdf\x04\x00\x00\x9d\x00\x94\x04\x94\x00\x94\x04\x94\x04\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x04\x94\x04\x94\x00\xbb\x00\x94\x04\x94\x00\x94\x00\x00\x00\x00\x00\x00\x00\x09\x01\x00\x00\xc7\x04\x00\x00\x00\x00\xaa\x04\x97\x04\x00\x00\x59\x00\xc4\x04\xa2\x04\x33\x02\x00\x00\xa8\x04\xbc\x04\x8d\x00\x78\x04\x78\x04\x78\x04\x78\x04\x27\x00\x00\x00\x00\x00\xb3\x04\x00\x00\x03\x01\x2f\x00\x67\x04\x00\x00\xb1\x04\xa7\x04\x00\x00\x9c\x04\x96\x04\x4d\x00\x4d\x00\x00\x00\x95\x04\x8e\x04\x00\x00\x8f\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8d\x04\x00\x00\x86\x04\x8a\x04\x89\x04\x00\x00\x00\x00\xd6\x01\x7a\x04\x00\x00\x00\x00\x00\x00\x79\x04\x00\x00\x2d\x04\x00\x00\x6c\x04\xb5\x00\x73\x04\x00\x00\x00\x00\x97\x00\x97\x00\x97\x00\xac\x00\x00\x00\x00\x00\x29\x04\x73\x00\x00\x00\xac\x00\xac\x00\x5d\x04\x00\x00\x00\x00\x00\x00\x30\x04\x18\x01\x53\x04\x49\x04\x17\x02\xf3\x01\x51\x04\x5a\x04\x52\x04\x00\x00\x73\x00\xac\x00\x00\x00\xf8\x03\x97\x00\x00\x00\x00\x00\xac\x00\x32\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x04\x00\x00\x3f\x04\x00\x00\x36\x04\x00\x00\x8f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x04\x00\x00\x00\x00\x00\x00\x00\x00\xea\x03\x97\x00\x00\x00\x00\x00\x00\x00\x97\x00\xac\x00\xac\x00\x1c\x04\x28\x04\x1a\x04\x00\x00\x00\x00\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x25\x00\xcb\x01\xd4\x03\xd4\x03\xd4\x03\xd4\x03\xac\x00\xd4\x03\x19\x04\xd1\x03\x26\x00\x00\x00\x00\x00\xac\x00\x0f\x00\x0f\x00\x00\x00\x0f\x04\xac\x00\xac\x00\x12\x04\x0f\x00\x00\x00\x04\x04\x5d\x00\x00\x00\x00\x00\x00\x00\xfe\x03\x00\x00\xba\x03\xfd\xff\xba\x03\x02\x04\xfd\xff\xac\x03\xe9\x03\xf0\x03\xa5\x03\xa5\x03\xe4\x03\xc1\x03\xe3\x03\x00\x00\x9d\x03\xd8\x03\x00\x00\x9b\x03\x00\x00\x00\x00\xfd\xff\x00\x00\xac\x00\xd2\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\x03\x00\x00\xab\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc5\x03\xb1\x03\x00\x00\xb4\x03\x00\x00\x00\x00\x00\x00\x5e\x00\x00\x00\x18\x00\x00\x00\x00\x00\xac\x00\xac\x00\x00\x00\x00\x00\x00\x00\x18\x01\x00\x00\x00\x00\x00\x00\x00\x00\xb2\x03\x9e\x03\x60\x03\x60\x03\xcd\x03\x60\x03\x60\x03\xcb\x01\xac\x00\x00\x00\x00\x00\xeb\x00\x69\x03\xfd\xff\xa6\x03\xfd\xff\x00\x00\x00\x00\x95\x03\x8f\x03\x51\x03\x00\x00\x00\x00\x00\x00\x96\x03\x94\x03\x4a\x03\x00\x00\x00\x00\x00\x00\x89\x03\x8b\x03\x00\x00\x00\x00\xac\x00\x44\x03\x87\x03\x75\x03\x00\x00\x00\x00\x5b\x03\x00\x00\x43\x03\x5d\x03\x48\x03\x42\x03\x00\x00\xfc\x02\xfc\x02\x3b\x03\x85\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x03\x5e\x03\x00\x00\x00\x00\xf2\x02\xa7\x00\xfd\xff\xfd\xff\x30\x03\x2c\x03\x00\x00\x00\x00\x00\x00"#
+happyActOffsets = HappyA# "\x00\x00\x77\x02\xe2\x04\x48\x01\xbe\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf5\x04\x00\x00\xfa\x04\xd6\x01\xa6\x00\xec\x04\xac\x04\xe7\x04\x00\x00\xf0\x04\xa5\x04\x58\x00\x40\x00\xa5\x04\x00\x00\x48\x01\x21\x00\xa5\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x01\x00\x00\xf3\x04\x5d\x03\x15\x00\xc1\x03\xf2\x04\xf1\x04\x2a\x03\xe3\x04\x00\x00\x00\x00\x00\x00\x00\x00\x9f\x04\x00\x00\x80\x00\x01\x00\xed\x01\x9e\x04\x00\x00\x93\x04\x11\x00\xdb\x04\xe0\x04\xd4\x04\x83\x04\x83\x04\x83\x04\x83\x04\x83\x04\x83\x04\x00\x00\x00\x00\x80\x00\xd1\x04\x00\x00\x80\x00\x80\x00\x80\x00\x74\x08\x48\x01\x00\x00\xc8\x01\xad\x03\xf8\x00\x82\x04\xa8\x00\xa8\x00\x00\x00\x00\x00\x00\x00\xc3\x04\x00\x00\x81\x04\xad\x03\x7f\x04\x00\x00\xad\x03\x73\x04\x00\x00\x08\x03\xaf\x04\xea\x01\xc1\x04\x7d\x04\x6e\x04\x37\x00\xd3\x03\x65\x04\x00\x00\x00\x00\xaa\x04\xa0\x04\xf6\xff\x00\x00\x99\x04\x9b\x04\x8a\x04\xf7\x00\x8e\x04\xd5\x02\x00\x00\x76\x01\x96\x04\x92\x04\xb3\x02\x63\x02\x94\x04\xa8\x00\x7e\x01\xa8\x00\x7e\x01\x7e\x01\x7e\x01\xa8\x00\x8c\x04\x7c\x04\x1e\x00\x80\x02\x00\x00\x3a\x04\x00\x00\x00\x00\x30\x04\x34\x04\x00\x00\x5e\x02\x5e\x02\x5e\x02\x00\x00\x5e\x02\xd6\x02\x00\x00\x00\x00\x00\x00\x00\x00\x34\x04\x34\x04\x7a\x04\xa8\x00\x00\x00\x2b\x02\x71\x04\x00\x00\x25\x04\x00\x00\x00\x00\xa8\x00\xa8\x00\x57\x04\xa8\x00\xf6\xff\x6c\x04\xd3\x03\x68\x04\x67\x04\x63\x04\x00\x00\x62\x04\xa8\x00\x10\x04\xa8\x00\xa8\x00\x51\x04\x4f\x04\xa0\x01\x40\x04\x00\x00\x6f\x01\x4d\x04\x41\x04\xd3\x03\x43\x04\xcb\x01\x4c\x02\x4c\x04\x4a\x04\x42\x04\xef\x03\x3f\x04\x3c\x04\x38\x04\x2b\x04\x12\x00\xa8\x02\x2c\x04\x24\x04\xad\x03\xa8\x00\x1c\x04\x00\x00\x33\x00\xcd\x03\x31\x00\xcd\x03\xcd\x03\x31\x00\x31\x00\x31\x00\x31\x00\x31\x00\xcd\x03\xcd\x03\x31\x00\x64\x00\xcd\x03\x31\x00\x31\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x17\x04\x00\x00\x00\x00\xdc\x03\xdb\x03\x00\x00\xfe\xff\x00\x04\xe8\x03\xe4\x00\x00\x00\xc7\x03\xf9\x03\x05\x00\xae\x03\xae\x03\xae\x03\xae\x03\x19\x00\x00\x00\x00\x00\xf8\x03\x00\x00\x7f\x03\x93\x00\xa3\x03\x00\x00\xf3\x03\xf2\x03\x00\x00\xd6\x03\xf0\x03\x31\x00\x31\x00\x00\x00\xee\x03\xec\x03\x00\x00\xdf\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xde\x03\x00\x00\xce\x03\xd2\x03\xca\x03\x00\x00\x00\x00\x4d\x01\xc9\x03\x00\x00\x00\x00\x00\x00\xc4\x03\x00\x00\x75\x03\x00\x00\xb5\x03\xbc\x03\x00\x00\x58\x03\x58\x03\x58\x03\xa8\x00\x00\x00\x6b\x03\xd3\x03\x00\x00\xa8\x00\xa8\x00\x00\x00\x00\x00\x6b\x03\x58\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x03\x00\x00\x6b\x03\xba\x03\x00\x00\x00\x00\x00\x00\x8c\x03\x00\x00\xd3\x03\xa8\x00\x00\x00\x58\x03\x00\x00\x00\x00\xa8\x00\xa6\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x03\x00\x00\xa5\x03\x00\x00\x9f\x03\x00\x00\xf1\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x03\x00\x00\x00\x00\xa8\x00\xa8\x00\x00\x00\x00\x00\x14\x01\x00\x00\x87\x03\x9c\x03\x93\x03\x00\x00\x00\x00\xd3\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x09\x02\x4a\x03\x4a\x03\x4a\x03\x4a\x03\xa8\x00\x4a\x03\x89\x03\x39\x03\x14\x00\x00\x00\x00\x00\xa8\x00\x1a\x00\x1a\x00\x00\x00\x81\x03\xa8\x00\xa8\x00\x85\x03\x1a\x00\x00\x00\x80\x03\xa7\x00\x00\x00\x00\x00\x00\x00\x7b\x03\x00\x00\x20\x03\xff\xff\x20\x03\x6d\x03\xff\xff\x1f\x03\x60\x03\x65\x03\x1a\x03\x1a\x03\x5a\x03\x35\x03\x57\x03\x00\x00\x12\x03\x55\x03\x00\x00\x0a\x03\x00\x00\x00\x00\xff\xff\x00\x00\xa8\x00\x52\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x03\x00\x00\x23\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x03\x40\x03\x00\x00\x41\x03\x00\x00\x00\x00\x00\x00\x58\x00\x00\x00\xb4\x01\x00\x00\x00\x00\xa8\x00\xa8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x03\x3a\x03\xee\x02\xee\x02\xe6\x04\xee\x02\xee\x02\x09\x02\xa8\x00\x00\x00\x00\x00\x0d\x02\x17\x03\xff\xff\xc4\x04\xff\xff\x00\x00\x00\x00\x33\x03\x37\x03\xe2\x02\x00\x00\x00\x00\x00\x00\x27\x03\x14\x03\xe1\x02\x00\x00\x00\x00\x00\x00\x1c\x03\x1e\x03\x00\x00\x00\x00\xa8\x00\xd0\x02\x19\x03\x16\x03\x00\x00\x00\x00\x15\x03\x00\x00\xdc\x02\x10\x03\x13\x03\x0d\x03\x00\x00\xbe\x02\xbe\x02\xfc\x02\xa2\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\x03\x80\x04\x00\x00\x00\x00\xc7\x02\x10\x01\xff\xff\xff\xff\x09\x03\xfa\x02\x00\x00\x00\x00\x00\x00"#
happyGotoOffsets :: HappyAddr
-happyGotoOffsets = HappyA# "\x6c\x02\x9f\x00\xd6\xff\x51\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x95\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x03\x16\x04\xc5\x01\x27\x03\x00\x00\x3f\x03\x74\x00\x15\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x07\x00\x00\x00\x00\xc9\x04\xdf\x01\x00\x00\x00\x00\x92\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1e\x03\x04\x00\x00\x00\xff\x02\x08\x03\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\xfd\x02\xfb\x02\xf7\x02\xf6\x02\xf5\x02\xec\x02\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x08\x00\x07\x00\xd2\x02\x85\x04\x00\x00\x00\x00\x1c\x03\x1a\x07\xcb\x02\x69\x04\xfe\x06\x00\x00\x00\x00\x00\x00\x00\x00\x90\x01\xd6\x02\x3f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xad\x04\x00\x00\x00\x00\xe3\x06\x6c\x07\xc7\x06\x8a\x07\x7b\x07\x46\x02\xac\x06\x00\x00\x00\x00\x2d\x00\xf8\x01\x00\x00\x56\x01\x00\x00\x00\x00\xc6\x02\x4e\x01\x00\x00\x50\x03\x50\x03\x50\x03\x00\x00\x50\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x01\xb6\x02\x00\x00\x90\x06\x00\x00\x00\x00\x22\x04\x00\x00\xb1\x02\x00\x00\x00\x00\x28\x03\x75\x06\x00\x00\x59\x06\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x03\x00\x00\x00\x00\x00\x00\x21\x01\x70\x04\x79\x02\x00\x00\x00\x00\x00\x00\x3e\x06\x30\x01\x22\x06\x07\x06\x00\x00\x00\x00\x00\x00\x00\x00\x67\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8c\x02\xa8\x01\x4d\x04\x00\x00\x00\x00\xc9\x02\x8d\x03\xe4\x07\xb0\x00\x99\x03\xd7\x07\xd1\x07\xc9\x07\xc7\x07\xc4\x07\xa7\x02\xb0\x01\xb6\x07\xae\x07\x96\x02\xa8\x07\x18\x03\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00\x00\x00\x00\x83\x02\x00\x00\x00\x00\x93\x02\x5e\x02\x7d\x02\x6f\x02\x10\x01\x00\x00\x00\x00\x00\x00\x00\x00\x86\x02\x00\x00\x45\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x88\x07\x79\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x02\x00\x00\x00\x00\x3f\x02\x00\x00\x00\x00\x1f\x02\x00\x00\x00\x00\x00\x00\x29\x01\xc6\x03\xac\x01\xeb\x05\x00\x00\x00\x00\x27\x02\xdb\x00\x00\x00\x31\x04\xf0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\xd0\x05\x00\x00\x23\x02\x32\x00\x00\x00\x00\x00\xb4\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd3\x00\xd5\x03\x00\x00\x00\x00\x00\x00\x12\x02\x99\x05\x7d\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc2\x01\x70\x02\x11\x00\x09\x02\xf2\x01\x1c\x00\x08\x02\x62\x05\xee\x02\x00\x00\x92\x01\x7a\x01\x00\x00\x00\x00\x46\x05\x0e\x01\xbd\x03\x00\x00\x00\x00\x2b\x05\x0f\x05\x00\x00\xe4\x02\x00\x00\x00\x00\xf6\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x02\xfa\x02\x17\x00\x00\x00\xc8\x02\x11\x01\x00\x00\x00\x00\xd9\x01\x1f\x00\x00\x00\x00\x00\x00\x00\xb9\x01\x00\x00\x00\x00\x00\x00\xb6\x01\x00\x00\x00\x00\xf6\x00\x00\x00\xf4\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x01\x00\x00\x00\x00\x00\x00\x00\x00\x77\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfa\x03\x00\x00\x11\x00\x00\x00\x00\x00\xac\x02\xd8\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd6\x00\x83\x01\x5e\x01\x6c\x01\x54\x01\x11\x00\xbd\x04\x00\x00\x00\x00\x00\x00\x53\x01\x4f\x02\x43\x01\xa1\x01\x00\x00\x00\x00\x00\x00\x00\x00\x76\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\x04\x1f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdf\x00\xb2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9d\x02\x24\x01\x00\x00\x9b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x93\x00\x00\x00\x00\x00\x0a\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#
+happyGotoOffsets = HappyA# "\x3b\x02\x0e\x01\x77\x01\x4f\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb1\x01\x4c\x05\x0c\x02\xf9\x02\x00\x00\x31\x05\xb3\x00\xf8\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x08\x00\x00\x00\x00\x06\x03\x81\x01\xfc\x01\x00\x00\x00\x00\xb3\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xec\x02\x06\x00\x00\x00\xd1\x02\xf6\x02\x00\x00\x00\x00\xbc\x00\x00\x00\x00\x00\x00\x00\xea\x02\xe9\x02\xe6\x02\xe4\x02\xe0\x02\xde\x02\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x0a\x00\x08\x00\x02\x00\xca\x02\xcf\x05\x00\x00\x00\x00\x2a\x04\x27\x08\xd9\x02\xab\x05\x04\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x00\x78\x04\xda\x02\x00\x00\x69\x04\xc5\x02\x00\x00\xf0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x01\xc9\x02\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb1\x02\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x02\x00\x00\x00\x00\xf0\x07\x72\x08\xdc\x07\x07\x02\x32\x01\xe2\x00\xb9\x07\x00\x00\x00\x00\x16\x00\x92\x03\x00\x00\x4a\x01\x00\x00\x00\x00\xc8\x02\x26\x01\x00\x00\x46\x02\x46\x02\x46\x02\x00\x00\x46\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaa\x00\xc2\x02\x00\x00\xa5\x07\x00\x00\x5c\x02\x00\x00\x00\x00\xb7\x02\x00\x00\x00\x00\x14\x05\x91\x07\x00\x00\x6e\x07\x0d\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x07\xfa\x00\x46\x07\x23\x07\x00\x00\x00\x00\xdd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb6\x02\x00\x00\x00\x00\x00\x00\x00\x00\xdd\x00\x00\x00\x00\x00\x00\x00\x48\x04\x97\x05\x00\x00\x00\x00\xfd\x01\x73\x03\x84\x05\x98\x01\xa2\x02\x33\x05\x6a\x04\xda\x04\xb8\x04\x97\x04\xb5\x02\x37\x01\x5c\x04\x11\x03\xa7\x02\x49\x04\xfa\x03\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x04\x00\x00\x00\x00\x00\x00\x00\x00\x98\x02\x00\x00\x00\x00\xa3\x02\x2d\x02\x95\x02\x93\x02\x3d\x01\x00\x00\x00\x00\x00\x00\x00\x00\xb0\x00\x00\x00\x89\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x02\xf0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x02\x00\x00\x00\x00\x70\x02\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x04\x5b\x01\x0b\x01\x0f\x07\x00\x00\x66\x02\x2d\x01\x00\x00\x83\x05\x04\x04\x00\x00\x00\x00\x97\x00\xa0\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x04\x00\x00\x61\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x00\xfb\x06\x00\x00\xf6\x03\x00\x00\x00\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc4\x06\xb0\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x02\x10\x00\x2f\x00\x0a\x01\x4e\x02\x69\x01\x3e\x02\x8d\x06\x4d\x02\x00\x00\x1b\x01\xe6\x00\x00\x00\x00\x00\x79\x06\x17\x00\x4e\x01\x00\x00\x00\x00\x65\x06\x42\x06\x00\x00\xbf\x03\x00\x00\x00\x00\xa3\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x01\x85\x02\xd7\x00\x00\x00\x82\x02\x92\x00\x00\x00\x00\x00\x1f\x02\x1b\x00\x00\x00\x00\x00\x00\x00\x0f\x02\x00\x00\x00\x00\x00\x00\xef\x01\x00\x00\x00\x00\xba\x00\x00\x00\x2e\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\x01\x00\x00\x00\x00\x00\x00\x00\x00\xc3\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x05\x00\x00\x2f\x00\x00\x00\x00\x00\xe6\x03\x1a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc6\x01\xb2\x01\x8f\x01\x97\x01\x95\x00\x2f\x00\xf7\x05\x00\x00\x00\x00\x00\x00\x70\x01\x62\x02\x78\x01\x51\x02\x00\x00\x00\x00\x00\x00\x00\x00\xb8\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe3\x05\x65\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\x00\x9a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86\x02\xa9\x01\x00\x00\x25\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x00\x6b\x00\x00\x00\x00\x00\x34\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8c\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#
happyDefActions :: HappyAddr
-happyDefActions = HappyA# "\xf5\xff\xcd\xff\x06\xff\x00\x00\x00\x00\xfb\xff\x7d\xff\x78\xff\x79\xff\x77\xff\x6c\xff\x68\xff\x5e\xff\x59\xff\x4b\xff\x4c\xff\x00\x00\x57\xff\x7a\xff\x00\x00\x80\xff\x23\xff\x00\x00\x00\x00\x76\xff\x1c\xff\x23\xff\x00\x00\x2e\xff\x2c\xff\x2b\xff\x2d\xff\x2f\xff\x00\x00\x74\xff\x00\x00\x00\x00\x80\xff\x00\x00\x00\x00\x00\x00\x00\x00\xfa\xff\xf9\xff\xf8\xff\xf7\xff\x00\x00\xd9\xff\x00\x00\x00\x00\x00\x00\x00\x00\xcc\xff\x00\x00\xcd\xff\xf4\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf3\xff\x03\xff\x04\xff\x00\x00\x05\xff\x00\x00\x00\x00\x00\x00\x07\xff\x4a\xff\x7d\xff\x00\x00\x80\xff\x00\x00\x00\x00\x4a\xff\x00\x00\x89\xff\x00\x00\x7f\xff\x00\x00\x80\xff\x00\x00\x12\xff\x00\x00\x5d\xff\x25\xff\x22\xff\x00\x00\x23\xff\x24\xff\x1e\xff\x1b\xff\x00\x00\x00\x00\x47\xff\x00\x00\x75\xff\x7d\xff\x00\x00\x00\x00\x00\x00\x89\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\xff\x00\x00\x00\x00\x5f\xff\x80\xff\x31\xff\x6b\xff\x00\x00\x80\xff\x52\xff\x5b\xff\x5c\xff\x5a\xff\x56\xff\x59\xff\x4b\xff\x58\xff\x53\xff\x71\xff\x7c\xff\x00\x00\x00\x00\x7d\xff\x00\x00\x6d\xff\x72\xff\x47\xff\x00\x00\x00\x00\x7b\xff\x70\xff\x1c\xff\x00\x00\x00\x00\x00\x00\x23\xff\x00\x00\x44\xff\x41\xff\x3f\xff\x40\xff\x27\xff\x00\x00\x11\xff\x00\x00\x2a\xff\x00\x00\x19\xff\x45\xff\x4d\xff\x00\x00\x00\x00\x80\xff\x00\x00\x00\x00\x00\x00\x49\xff\x00\x00\x00\x00\x89\xff\x36\xff\x33\xff\x00\x00\x15\xff\x00\x00\x00\x00\x00\x00\x4a\xff\x00\x00\xd8\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\xff\x01\xff\x00\xff\xfe\xfe\xff\xfe\x00\x00\xe6\xff\xe5\xff\x00\x00\x00\x00\xe7\xff\xc8\xff\x00\x00\x00\x00\xc5\xff\xf1\xff\xd2\xff\xe0\xff\xc7\xff\x00\x00\xc8\xff\x00\x00\x00\x00\x00\x00\xfd\xfe\x87\xff\x00\x00\xac\xff\x85\xff\x00\x00\x00\x00\xb9\xff\x00\x00\x00\x00\xb0\xff\x85\xff\x00\x00\x00\x00\x00\x00\xae\xff\x9e\xff\x00\x00\xb8\xff\x00\x00\xb7\xff\xaf\xff\xb5\xff\xb6\xff\xb4\xff\x00\x00\xbd\xff\x00\x00\x00\x00\x00\x00\xb1\xff\xbb\xff\x89\xff\x00\x00\xbc\xff\xba\xff\x09\xff\x00\x00\xbe\xff\x00\x00\x62\xff\x00\x00\x44\xff\x00\x00\x37\xff\x66\xff\x00\x00\x00\x00\x00\x00\x00\x00\x39\xff\x3b\xff\x00\x00\x00\x00\x60\xff\x4a\xff\x0e\xff\x83\xff\x82\xff\x7e\xff\x50\xff\x00\x00\x1d\xff\x18\xff\x00\x00\x00\x00\x89\xff\x00\x00\x29\xff\x00\x00\x4e\xff\x12\xff\x00\x00\x26\xff\x00\x00\x00\x00\x21\xff\x55\xff\x00\x00\x00\x00\x1e\xff\x1a\xff\x69\xff\x73\xff\x46\xff\x00\x00\x6f\xff\x00\x00\x88\xff\x00\x00\x30\xff\x89\xff\x4f\xff\x6a\xff\x20\xff\x6e\xff\x54\xff\x00\x00\x42\xff\x13\xff\x10\xff\x3e\xff\x2a\xff\x00\x00\x43\xff\x3c\xff\x3d\xff\x19\xff\x00\x00\x00\x00\x00\x00\x0d\xff\x00\x00\x48\xff\x38\xff\x42\xff\x16\xff\x34\xff\x35\xff\x14\xff\x65\xff\x64\xff\x09\xff\x98\xff\xaa\xff\x94\xff\xa3\xff\x8e\xff\x00\x00\x00\x00\x96\xff\x00\x00\x92\xff\x8c\xff\xb2\xff\xb3\xff\x00\x00\x00\x00\x90\xff\xab\xff\x00\x00\x00\x00\x00\x00\x00\x00\x9a\xff\xd0\xff\x00\x00\xcb\xff\xe3\xff\xe4\xff\xda\xff\xc7\xff\xdb\xff\xc8\xff\xd5\xff\xd7\xff\x00\x00\xd5\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\xff\xd9\xff\x00\x00\xdf\xff\xc6\xff\x00\x00\xca\xff\xc9\xff\x00\x00\x99\xff\x00\x00\xc2\xff\xc1\xff\x86\xff\x8f\xff\x84\xff\x9c\xff\x09\xff\x8b\xff\xa0\xff\x00\x00\x91\xff\xd9\xff\x95\xff\xa7\xff\x9b\xff\x8d\xff\xa5\xff\xa2\xff\xa6\xff\x00\x00\x93\xff\x0a\xff\x08\xff\x23\xff\x97\xff\x00\x00\x3a\xff\x61\xff\x0e\xff\x00\x00\x81\xff\x51\xff\x17\xff\x32\xff\x28\xff\x63\xff\x0f\xff\x0c\xff\xa9\xff\x00\x00\xa3\xff\x00\x00\x00\x00\x00\x00\x8c\xff\x9d\xff\x00\x00\xc0\xff\xe2\xff\x00\x00\xd2\xff\xd5\xff\x00\x00\xd5\xff\xd1\xff\xc4\xff\x00\x00\x00\x00\xef\xff\xc3\xff\xd3\xff\xe1\xff\xdd\xff\x00\x00\x00\x00\xcf\xff\xbf\xff\x8a\xff\x00\x00\x00\x00\xa4\xff\xa1\xff\x00\x00\x00\x00\x00\x00\x00\x00\xad\xff\x9f\xff\x00\x00\xd9\xff\xd2\xff\x00\x00\xee\xff\x00\x00\xf2\xff\xef\xff\x00\x00\x00\x00\x00\x00\xce\xff\x0b\xff\xa8\xff\xde\xff\xd9\xff\xeb\xff\xf0\xff\xed\xff\xec\xff\x00\x00\xdc\xff\xea\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe9\xff\xe8\xff"#
+happyDefActions = HappyA# "\xf5\xff\xcd\xff\x00\xff\x00\x00\x00\x00\xfb\xff\x78\xff\x79\xff\x77\xff\x6c\xff\x7d\xff\x68\xff\x5c\xff\x57\xff\x49\xff\x4a\xff\x00\x00\x55\xff\x7a\xff\x00\x00\x80\xff\x1d\xff\x00\x00\x00\x00\x76\xff\x16\xff\x1d\xff\x00\x00\x28\xff\x26\xff\x25\xff\x27\xff\x29\xff\x00\x00\x74\xff\x00\x00\x00\x00\x80\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfa\xff\xf9\xff\xf8\xff\xf7\xff\x00\x00\xd9\xff\x00\x00\x00\x00\x00\x00\x00\x00\xcc\xff\x00\x00\xcd\xff\xf4\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf3\xff\xfe\xfe\xfd\xfe\x00\x00\xff\xfe\x00\x00\x00\x00\x00\x00\x01\xff\x48\xff\x7d\xff\x00\x00\x80\xff\x00\x00\x00\x00\x48\xff\x00\x00\x3b\xff\x39\xff\x3a\xff\x3e\xff\x5e\xff\x24\xff\x00\x00\x00\x00\x43\xff\x13\xff\x00\x00\x3f\xff\x00\x00\x89\xff\x00\x00\x7f\xff\x00\x00\x80\xff\x00\x00\x0c\xff\x00\x00\x5b\xff\x1f\xff\x1c\xff\x00\x00\x1d\xff\x1e\xff\x18\xff\x15\xff\x00\x00\x00\x00\x00\x00\x45\xff\x75\xff\x7d\xff\x00\x00\x00\x00\x00\x00\x89\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\xff\x00\x00\x00\x00\x5f\xff\x80\xff\x2b\xff\x6b\xff\x00\x00\x80\xff\x50\xff\x59\xff\x5a\xff\x58\xff\x54\xff\x57\xff\x49\xff\x56\xff\x51\xff\x71\xff\x7c\xff\x00\x00\x00\x00\x7d\xff\x00\x00\x6d\xff\x45\xff\x00\x00\x72\xff\x00\x00\x7b\xff\x70\xff\x16\xff\x00\x00\x00\x00\x00\x00\x1d\xff\x00\x00\x21\xff\x00\x00\x0b\xff\x00\x00\x4b\xff\x00\x00\x00\x00\x80\xff\x00\x00\x00\x00\x5d\xff\x41\xff\x3e\xff\x30\xff\x2d\xff\x17\xff\x12\xff\x00\x00\x00\x00\x00\x00\x00\x00\x89\xff\x00\x00\x23\xff\x00\x00\x00\x00\x00\x00\x47\xff\x00\x00\x00\x00\x89\xff\x00\x00\x0f\xff\x00\x00\x00\x00\x48\xff\x00\x00\xd8\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\xfe\xfb\xfe\xfa\xfe\xf8\xfe\xf9\xfe\x00\x00\xe6\xff\xe5\xff\x00\x00\x00\x00\xe7\xff\xc8\xff\x00\x00\x00\x00\xc5\xff\xf1\xff\xd2\xff\xe0\xff\xc7\xff\x00\x00\xc8\xff\x00\x00\x00\x00\x00\x00\xf7\xfe\x87\xff\x00\x00\xac\xff\x85\xff\x00\x00\x00\x00\xb9\xff\x00\x00\x00\x00\xb0\xff\x85\xff\x00\x00\x00\x00\x00\x00\xae\xff\x9e\xff\x00\x00\xb8\xff\x00\x00\xb7\xff\xaf\xff\xb5\xff\xb6\xff\xb4\xff\x00\x00\xbd\xff\x00\x00\x00\x00\x00\x00\xb1\xff\xbb\xff\x89\xff\x00\x00\xbc\xff\xba\xff\x03\xff\x00\x00\xbe\xff\x00\x00\x62\xff\x00\x00\x00\x00\x66\xff\x00\x00\x00\x00\x00\x00\x00\x00\x35\xff\x00\x00\x00\x00\x60\xff\x48\xff\x08\xff\x3c\xff\x38\xff\x24\xff\x00\x00\x3d\xff\x36\xff\x42\xff\x31\xff\x37\xff\x13\xff\x33\xff\x00\x00\x83\xff\x82\xff\x7e\xff\x4e\xff\x00\x00\x4c\xff\x0c\xff\x00\x00\x20\xff\x00\x00\x1b\xff\x53\xff\x00\x00\x00\x00\x18\xff\x14\xff\x69\xff\x73\xff\x44\xff\x00\x00\x6f\xff\x00\x00\x88\xff\x00\x00\x2a\xff\x89\xff\x4d\xff\x6a\xff\x1a\xff\x6e\xff\x52\xff\x00\x00\x0d\xff\x0a\xff\x00\x00\x00\x00\x40\xff\x11\xff\x2c\xff\x22\xff\x00\x00\x07\xff\x00\x00\x46\xff\x32\xff\x3c\xff\x10\xff\x2e\xff\x2f\xff\x0e\xff\x65\xff\x64\xff\x03\xff\x98\xff\xaa\xff\x94\xff\xa3\xff\x8e\xff\x00\x00\x00\x00\x96\xff\x00\x00\x92\xff\x8c\xff\xb2\xff\xb3\xff\x00\x00\x00\x00\x90\xff\xab\xff\x00\x00\x00\x00\x00\x00\x00\x00\x9a\xff\xd0\xff\x00\x00\xcb\xff\xe3\xff\xe4\xff\xda\xff\xc7\xff\xdb\xff\xc8\xff\xd5\xff\xd7\xff\x00\x00\xd5\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\xff\xd9\xff\x00\x00\xdf\xff\xc6\xff\x00\x00\xca\xff\xc9\xff\x00\x00\x99\xff\x00\x00\xc2\xff\xc1\xff\x86\xff\x8f\xff\x84\xff\x9c\xff\x03\xff\x8b\xff\xa0\xff\x00\x00\x91\xff\xd9\xff\x95\xff\xa7\xff\x9b\xff\x8d\xff\xa5\xff\xa2\xff\xa6\xff\x00\x00\x93\xff\x04\xff\x02\xff\x1d\xff\x97\xff\x00\x00\x34\xff\x61\xff\x08\xff\x00\x00\x81\xff\x4f\xff\x63\xff\x09\xff\x06\xff\xa9\xff\x00\x00\xa3\xff\x00\x00\x00\x00\x00\x00\x8c\xff\x9d\xff\x00\x00\xc0\xff\xe2\xff\x00\x00\xd2\xff\xd5\xff\x00\x00\xd5\xff\xd1\xff\xc4\xff\x00\x00\x00\x00\xef\xff\xc3\xff\xd3\xff\xe1\xff\xdd\xff\x00\x00\x00\x00\xcf\xff\xbf\xff\x8a\xff\x00\x00\x00\x00\xa4\xff\xa1\xff\x00\x00\x00\x00\x00\x00\x00\x00\xad\xff\x9f\xff\x00\x00\xd9\xff\xd2\xff\x00\x00\xee\xff\x00\x00\xf2\xff\xef\xff\x00\x00\x00\x00\x00\x00\xce\xff\x05\xff\xa8\xff\xde\xff\xd9\xff\xeb\xff\xf0\xff\xed\xff\xec\xff\x00\x00\xdc\xff\xea\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe9\xff\xe8\xff"#
happyCheck :: HappyAddr
-happyCheck = HappyA# "\xff\xff\x00\x00\x05\x00\x02\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x02\x00\x02\x00\x00\x00\x00\x00\x02\x00\x02\x00\x01\x00\x00\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x0c\x00\x00\x00\x03\x00\x03\x00\x0b\x00\x03\x00\x00\x00\x05\x00\x2d\x00\x00\x00\x0b\x00\x30\x00\x07\x00\x0b\x00\x0c\x00\x1c\x00\x50\x00\x51\x00\x10\x00\x11\x00\x12\x00\x05\x00\x05\x00\x00\x00\x17\x00\x14\x00\x0b\x00\x02\x00\x00\x00\x01\x00\x02\x00\x03\x00\x07\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x19\x00\x00\x00\x22\x00\x0f\x00\x28\x00\x30\x00\x0e\x00\x52\x00\x1b\x00\x29\x00\x41\x00\x42\x00\x0c\x00\x4c\x00\x2b\x00\x00\x00\x01\x00\x02\x00\x03\x00\x3e\x00\x13\x00\x41\x00\x42\x00\x52\x00\x53\x00\x4c\x00\x52\x00\x53\x00\x0b\x00\x52\x00\x52\x00\x4c\x00\x03\x00\x52\x00\x52\x00\x4e\x00\x52\x00\x03\x00\x4c\x00\x05\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x0b\x00\x3d\x00\x39\x00\x3a\x00\x3b\x00\x10\x00\x11\x00\x12\x00\x4c\x00\x4c\x00\x4c\x00\x00\x00\x4c\x00\x03\x00\x19\x00\x05\x00\x1b\x00\x48\x00\x49\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x4e\x00\x25\x00\x39\x00\x12\x00\x28\x00\x09\x00\x4c\x00\x2b\x00\x4e\x00\x40\x00\x2e\x00\x30\x00\x1b\x00\x32\x00\x00\x00\x33\x00\x39\x00\x15\x00\x16\x00\x4a\x00\x4b\x00\x0a\x00\x1a\x00\x4c\x00\x03\x00\x42\x00\x05\x00\x3f\x00\x0b\x00\x0b\x00\x47\x00\x43\x00\x44\x00\x13\x00\x0d\x00\x4c\x00\x07\x00\x49\x00\x0b\x00\x12\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x03\x00\x00\x00\x05\x00\x1b\x00\x14\x00\x19\x00\x41\x00\x42\x00\x0b\x00\x03\x00\x19\x00\x05\x00\x1b\x00\x10\x00\x11\x00\x12\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x0e\x00\x12\x00\x19\x00\x0b\x00\x12\x00\x4a\x00\x14\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x1b\x00\x25\x00\x22\x00\x00\x00\x28\x00\x2e\x00\x00\x00\x2b\x00\x4b\x00\x29\x00\x2e\x00\x00\x00\x01\x00\x02\x00\x03\x00\x33\x00\x4c\x00\x26\x00\x3b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x2c\x00\x03\x00\x4c\x00\x05\x00\x3f\x00\x4c\x00\x02\x00\x0f\x00\x43\x00\x44\x00\x06\x00\x0d\x00\x1d\x00\x1e\x00\x49\x00\x00\x00\x12\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x03\x00\x2b\x00\x05\x00\x1b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x0b\x00\x03\x00\x4c\x00\x05\x00\x13\x00\x10\x00\x11\x00\x12\x00\x0a\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x3f\x00\x19\x00\x39\x00\x12\x00\x0d\x00\x0e\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x1b\x00\x25\x00\x01\x00\x00\x00\x28\x00\x13\x00\x00\x00\x2b\x00\x1d\x00\x0f\x00\x2e\x00\x00\x00\x01\x00\x02\x00\x03\x00\x33\x00\x0a\x00\x17\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x00\x00\x01\x00\x02\x00\x03\x00\x3f\x00\x2c\x00\x2d\x00\x2b\x00\x43\x00\x44\x00\x00\x00\x01\x00\x02\x00\x03\x00\x49\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x03\x00\x2b\x00\x05\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x0b\x00\x00\x00\x4c\x00\x00\x00\x4e\x00\x10\x00\x11\x00\x12\x00\x2b\x00\x19\x00\x3c\x00\x2e\x00\x2f\x00\x3f\x00\x19\x00\x39\x00\x3a\x00\x3b\x00\x12\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x00\x00\x25\x00\x39\x00\x2b\x00\x28\x00\x48\x00\x49\x00\x2b\x00\x20\x00\x40\x00\x2e\x00\x19\x00\x39\x00\x2b\x00\x00\x00\x33\x00\x2e\x00\x2f\x00\x2a\x00\x40\x00\x03\x00\x2b\x00\x05\x00\x00\x00\x2e\x00\x2f\x00\x0f\x00\x3f\x00\x0b\x00\x4a\x00\x4b\x00\x43\x00\x44\x00\x10\x00\x11\x00\x12\x00\x00\x00\x49\x00\x00\x00\x04\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x0a\x00\x20\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x00\x00\x25\x00\x2d\x00\x2a\x00\x28\x00\x30\x00\x4f\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x1f\x00\x11\x00\x02\x00\x13\x00\x03\x00\x00\x00\x05\x00\x07\x00\x27\x00\x08\x00\x2b\x00\x3f\x00\x0b\x00\x2e\x00\x2f\x00\x43\x00\x44\x00\x10\x00\x11\x00\x12\x00\x00\x00\x49\x00\x02\x00\x0f\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x03\x00\x1f\x00\x05\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0b\x00\x27\x00\x02\x00\x00\x00\x28\x00\x10\x00\x11\x00\x12\x00\x04\x00\x00\x00\x0a\x00\x39\x00\x3a\x00\x3b\x00\x0a\x00\x39\x00\x3a\x00\x03\x00\x0e\x00\x05\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0b\x00\x48\x00\x49\x00\x00\x00\x28\x00\x10\x00\x11\x00\x12\x00\x04\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x0a\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x00\x00\x00\x00\x2b\x00\x15\x00\x28\x00\x2e\x00\x2f\x00\x1d\x00\x1e\x00\x4f\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x03\x00\x06\x00\x05\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x0b\x00\x1c\x00\x0f\x00\x00\x00\x30\x00\x10\x00\x11\x00\x12\x00\x16\x00\x17\x00\x17\x00\x26\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x03\x00\x3e\x00\x05\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0b\x00\x0b\x00\x00\x00\x0d\x00\x28\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x39\x00\x3a\x00\x3b\x00\x03\x00\x00\x00\x05\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0b\x00\x45\x00\x39\x00\x47\x00\x28\x00\x10\x00\x11\x00\x12\x00\x00\x00\x40\x00\x11\x00\x0e\x00\x13\x00\x10\x00\x4f\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x00\x00\x00\x00\x05\x00\x06\x00\x28\x00\x16\x00\x17\x00\x30\x00\x31\x00\x32\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x03\x00\x3e\x00\x05\x00\x00\x00\x01\x00\x02\x00\x03\x00\x1a\x00\x0b\x00\x00\x00\x01\x00\x02\x00\x03\x00\x10\x00\x11\x00\x12\x00\x00\x00\x24\x00\x12\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x03\x00\x00\x00\x05\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0b\x00\x08\x00\x09\x00\x00\x00\x28\x00\x10\x00\x11\x00\x12\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x00\x00\x39\x00\x3a\x00\x3b\x00\x03\x00\x00\x00\x05\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0b\x00\x45\x00\x39\x00\x47\x00\x28\x00\x10\x00\x11\x00\x12\x00\x39\x00\x40\x00\x01\x00\x00\x00\x00\x00\x09\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x15\x00\x16\x00\x02\x00\x11\x00\x28\x00\x13\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x1a\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x3e\x00\x19\x00\x00\x00\x24\x00\x00\x00\x43\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x00\x00\x00\x00\x18\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x03\x00\x04\x00\x05\x00\x00\x00\x23\x00\x00\x00\x1b\x00\x0a\x00\x11\x00\x0d\x00\x13\x00\x0e\x00\x0f\x00\x2c\x00\x2d\x00\x12\x00\x25\x00\x14\x00\x00\x00\x16\x00\x17\x00\x00\x00\x2b\x00\x1a\x00\x1b\x00\x00\x00\x01\x00\x02\x00\x03\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x0f\x00\x3e\x00\x0f\x00\x18\x00\x2b\x00\x06\x00\x43\x00\x2e\x00\x2f\x00\x06\x00\x17\x00\x46\x00\x05\x00\x1a\x00\x23\x00\x4c\x00\x4d\x00\x03\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x2c\x00\x2d\x00\x04\x00\x2b\x00\x4c\x00\x01\x00\x2e\x00\x2f\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x39\x00\x3a\x00\x3b\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x02\x00\x07\x00\x06\x00\x04\x00\x0a\x00\x48\x00\x49\x00\x3e\x00\x00\x00\x01\x00\x02\x00\x03\x00\x43\x00\x44\x00\x14\x00\x46\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x00\x00\x01\x00\x02\x00\x03\x00\x06\x00\x39\x00\x3e\x00\x08\x00\x09\x00\x30\x00\x31\x00\x43\x00\x44\x00\x26\x00\x46\x00\x28\x00\x29\x00\x2a\x00\x04\x00\x2c\x00\x04\x00\x01\x00\x00\x00\x3e\x00\x06\x00\x01\x00\x4d\x00\x34\x00\x35\x00\x36\x00\x37\x00\x4c\x00\x03\x00\x3a\x00\x00\x00\x3c\x00\x3d\x00\x3e\x00\x4c\x00\x40\x00\x09\x00\x39\x00\x0c\x00\x39\x00\x45\x00\x46\x00\x07\x00\x48\x00\x40\x00\x1b\x00\x1c\x00\x04\x00\x26\x00\x4c\x00\x28\x00\x29\x00\x2a\x00\x39\x00\x2c\x00\x25\x00\x26\x00\x1b\x00\x03\x00\x02\x00\x40\x00\x2b\x00\x34\x00\x35\x00\x36\x00\x37\x00\x00\x00\x25\x00\x3a\x00\x0f\x00\x3c\x00\x3d\x00\x3e\x00\x2b\x00\x40\x00\x00\x00\x01\x00\x02\x00\x03\x00\x45\x00\x46\x00\x26\x00\x48\x00\x28\x00\x29\x00\x2a\x00\x04\x00\x2c\x00\x0e\x00\x02\x00\x00\x00\x01\x00\x02\x00\x03\x00\x2e\x00\x34\x00\x35\x00\x36\x00\x37\x00\x21\x00\x0f\x00\x3a\x00\x09\x00\x3c\x00\x3d\x00\x3e\x00\x28\x00\x40\x00\x4c\x00\x4b\x00\x2c\x00\x2d\x00\x45\x00\x46\x00\x0a\x00\x48\x00\x2e\x00\x0c\x00\x4c\x00\x02\x00\x26\x00\x0b\x00\x28\x00\x29\x00\x2a\x00\x4c\x00\x2c\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x39\x00\x3a\x00\x34\x00\x35\x00\x36\x00\x37\x00\x03\x00\x4c\x00\x3a\x00\x0a\x00\x3c\x00\x3d\x00\x3e\x00\x08\x00\x40\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\x45\x00\x46\x00\x02\x00\x48\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x0c\x00\x03\x00\x4c\x00\x04\x00\x0e\x00\x4c\x00\x10\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x16\x00\x17\x00\x01\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x4c\x00\x04\x00\x3e\x00\x1d\x00\x04\x00\x41\x00\x42\x00\x43\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x04\x00\x4c\x00\x13\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x30\x00\x02\x00\x3e\x00\x06\x00\x04\x00\x41\x00\x42\x00\x43\x00\x38\x00\x01\x00\x13\x00\x0a\x00\x2e\x00\x02\x00\x3e\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x30\x00\x3e\x00\x00\x00\x01\x00\x02\x00\x03\x00\x43\x00\x4c\x00\x38\x00\x04\x00\x0c\x00\x4c\x00\x01\x00\x01\x00\x3e\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x01\x00\x3e\x00\x02\x00\x07\x00\x01\x00\x01\x00\x43\x00\x02\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x02\x00\x02\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x0a\x00\x3e\x00\x01\x00\x39\x00\x3a\x00\x3b\x00\x43\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x01\x00\x4c\x00\x01\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x30\x00\x3e\x00\x4c\x00\x09\x00\x24\x00\x03\x00\x43\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x07\x00\x38\x00\x3e\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x30\x00\x31\x00\x3e\x00\x4c\x00\x39\x00\x38\x00\x04\x00\x43\x00\x04\x00\x01\x00\x16\x00\x04\x00\x10\x00\x01\x00\x3e\x00\x01\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x30\x00\x31\x00\x3e\x00\x4c\x00\x04\x00\x4c\x00\x04\x00\x43\x00\x01\x00\x08\x00\x0e\x00\x03\x00\x4c\x00\x1a\x00\x3e\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x24\x00\x0c\x00\x3e\x00\x27\x00\x06\x00\x4c\x00\x4c\x00\x43\x00\x4d\x00\x03\x00\x0e\x00\x04\x00\x07\x00\x31\x00\x32\x00\x06\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x0c\x00\x41\x00\x3e\x00\x13\x00\x0a\x00\x07\x00\x46\x00\x43\x00\x08\x00\x0a\x00\x38\x00\x4c\x00\x2e\x00\x01\x00\x0a\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x4c\x00\x01\x00\x3e\x00\x02\x00\x4c\x00\x02\x00\x01\x00\x43\x00\x4c\x00\x03\x00\x03\x00\x52\x00\x52\x00\x03\x00\x03\x00\x17\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x08\x00\x4c\x00\x3e\x00\x52\x00\x18\x00\x0e\x00\x14\x00\x43\x00\x4c\x00\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\x00\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x21\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x28\x00\x36\x00\xff\xff\xff\xff\x2c\x00\x2d\x00\xff\xff\x00\x00\x21\x00\x3e\x00\x30\x00\x31\x00\x32\x00\x00\x00\xff\xff\x28\x00\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\x00\x00\xff\xff\xff\xff\x3e\x00\x30\x00\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x00\x00\x30\x00\x31\x00\x00\x00\x3e\x00\x00\x00\xff\xff\x23\x00\xff\xff\xff\xff\x18\x00\x21\x00\xff\xff\x00\x00\xff\xff\x3e\x00\x2c\x00\x2d\x00\x28\x00\x00\x00\xff\xff\x23\x00\x2c\x00\x2d\x00\x18\x00\xff\xff\xff\xff\x18\x00\xff\xff\x18\x00\x2c\x00\x2d\x00\x00\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\x23\x00\xff\xff\x23\x00\xff\xff\xff\xff\x18\x00\x2c\x00\x2d\x00\x21\x00\x2c\x00\x2d\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\x28\x00\x23\x00\xff\xff\x18\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\xff\xff\x26\x00\x23\x00\x28\x00\x29\x00\x2a\x00\xff\xff\x2c\x00\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\xff\xff\x40\x00\xff\xff\xff\xff\xff\xff\xff\xff\x45\x00\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#
+happyCheck = HappyA# "\xff\xff\x03\x00\x01\x00\x01\x00\x05\x00\x01\x00\x04\x00\x01\x00\x04\x00\x01\x00\x04\x00\x01\x00\x04\x00\x01\x00\x04\x00\x0a\x00\x04\x00\x04\x00\x1c\x00\x04\x00\x04\x00\x03\x00\x04\x00\x05\x00\x03\x00\x05\x00\x04\x00\x04\x00\x0a\x00\x0b\x00\x05\x00\x04\x00\x0e\x00\x0f\x00\x13\x00\x11\x00\x12\x00\x0b\x00\x14\x00\x19\x00\x16\x00\x17\x00\x1a\x00\x0b\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x24\x00\x00\x00\x01\x00\x02\x00\x3a\x00\x04\x00\x19\x00\x1d\x00\x0b\x00\x1c\x00\x0b\x00\x2e\x00\x0c\x00\x43\x00\x31\x00\x2c\x00\x2d\x00\x0e\x00\x2b\x00\x49\x00\x52\x00\x00\x00\x01\x00\x02\x00\x0c\x00\x04\x00\x41\x00\x42\x00\x52\x00\x52\x00\x4d\x00\x3d\x00\x52\x00\x54\x00\x52\x00\x53\x00\x52\x00\x53\x00\x52\x00\x03\x00\x52\x00\x05\x00\x52\x00\x30\x00\x4e\x00\x4f\x00\x50\x00\x0b\x00\x52\x00\x54\x00\x52\x00\x52\x00\x10\x00\x11\x00\x12\x00\x52\x00\x52\x00\x3e\x00\x39\x00\x0b\x00\x52\x00\x19\x00\x52\x00\x52\x00\x1c\x00\x40\x00\x0b\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x4e\x00\x26\x00\x4a\x00\x4b\x00\x29\x00\x39\x00\x52\x00\x2c\x00\x52\x00\x4f\x00\x2f\x00\x04\x00\x40\x00\x0f\x00\x27\x00\x34\x00\x0d\x00\x0e\x00\x4f\x00\x04\x00\x2d\x00\x52\x00\x4a\x00\x4b\x00\x02\x00\x04\x00\x3f\x00\x40\x00\x04\x00\x07\x00\x04\x00\x44\x00\x45\x00\x1e\x00\x13\x00\x00\x00\x01\x00\x02\x00\x4b\x00\x04\x00\x0f\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x03\x00\x12\x00\x05\x00\x04\x00\x09\x00\x00\x00\x01\x00\x02\x00\x0b\x00\x04\x00\x20\x00\x52\x00\x04\x00\x10\x00\x11\x00\x12\x00\x15\x00\x16\x00\x2b\x00\x04\x00\x2a\x00\x1a\x00\x19\x00\x2b\x00\x07\x00\x04\x00\x41\x00\x42\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x13\x00\x26\x00\x4f\x00\x14\x00\x29\x00\x52\x00\x3c\x00\x2c\x00\x2b\x00\x3f\x00\x2f\x00\x31\x00\x39\x00\x33\x00\x04\x00\x34\x00\x00\x00\x01\x00\x02\x00\x40\x00\x04\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x3f\x00\x40\x00\x39\x00\x04\x00\x2b\x00\x44\x00\x45\x00\x17\x00\x0b\x00\x40\x00\x0d\x00\x4c\x00\x4b\x00\x41\x00\x42\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x03\x00\x3c\x00\x05\x00\x04\x00\x3f\x00\x00\x00\x01\x00\x02\x00\x0b\x00\x04\x00\x0e\x00\x20\x00\x10\x00\x10\x00\x11\x00\x12\x00\x00\x00\x01\x00\x02\x00\x04\x00\x04\x00\x2a\x00\x19\x00\x30\x00\x31\x00\x32\x00\x07\x00\x39\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x40\x00\x26\x00\x04\x00\x3e\x00\x29\x00\x14\x00\x0f\x00\x2c\x00\x2b\x00\x1c\x00\x2f\x00\x2e\x00\x2f\x00\x04\x00\x17\x00\x34\x00\x00\x00\x01\x00\x02\x00\x26\x00\x04\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x3f\x00\x40\x00\x39\x00\x1f\x00\x04\x00\x44\x00\x45\x00\x19\x00\x2f\x00\x40\x00\x04\x00\x27\x00\x4b\x00\x39\x00\x3a\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x03\x00\x3c\x00\x05\x00\x04\x00\x02\x00\x13\x00\x2b\x00\x04\x00\x0b\x00\x2e\x00\x2f\x00\x1f\x00\x0a\x00\x10\x00\x11\x00\x12\x00\x00\x00\x01\x00\x02\x00\x27\x00\x04\x00\x04\x00\x19\x00\x30\x00\x31\x00\x32\x00\x00\x00\x39\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x04\x00\x26\x00\x21\x00\x3e\x00\x29\x00\x16\x00\x17\x00\x2c\x00\x2b\x00\x28\x00\x2f\x00\x2e\x00\x2f\x00\x2c\x00\x2d\x00\x34\x00\x07\x00\x0f\x00\x04\x00\x0a\x00\x03\x00\x12\x00\x05\x00\x04\x00\x04\x00\x17\x00\x3f\x00\x40\x00\x0b\x00\x14\x00\x22\x00\x44\x00\x45\x00\x10\x00\x11\x00\x12\x00\x19\x00\x29\x00\x4b\x00\x39\x00\x3a\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x04\x00\x04\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x03\x00\x26\x00\x05\x00\x2b\x00\x29\x00\x19\x00\x2e\x00\x2f\x00\x0b\x00\x2b\x00\x04\x00\x0e\x00\x2e\x00\x2f\x00\x11\x00\x12\x00\x0a\x00\x14\x00\x04\x00\x04\x00\x03\x00\x15\x00\x05\x00\x22\x00\x1b\x00\x1c\x00\x3f\x00\x40\x00\x0b\x00\x0c\x00\x29\x00\x44\x00\x45\x00\x10\x00\x11\x00\x12\x00\x50\x00\x51\x00\x4b\x00\x04\x00\x03\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x06\x00\x0f\x00\x0b\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x03\x00\x0f\x00\x05\x00\x2b\x00\x29\x00\x08\x00\x2e\x00\x2f\x00\x0b\x00\x17\x00\x1d\x00\x1e\x00\x4f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x01\x00\x02\x00\x02\x00\x04\x00\x4e\x00\x4f\x00\x50\x00\x07\x00\x52\x00\x04\x00\x04\x00\x04\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x0a\x00\x00\x00\x01\x00\x02\x00\x29\x00\x04\x00\x04\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x03\x00\x01\x00\x05\x00\x02\x00\x04\x00\x21\x00\x25\x00\x06\x00\x0b\x00\x28\x00\x04\x00\x1a\x00\x28\x00\x10\x00\x11\x00\x12\x00\x2c\x00\x2d\x00\x0f\x00\x32\x00\x33\x00\x24\x00\x39\x00\x04\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x03\x00\x42\x00\x05\x00\x04\x00\x29\x00\x21\x00\x47\x00\x39\x00\x0b\x00\x30\x00\x31\x00\x32\x00\x28\x00\x10\x00\x11\x00\x12\x00\x2c\x00\x2d\x00\x05\x00\x06\x00\x04\x00\x16\x00\x17\x00\x3e\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x04\x00\x04\x00\x04\x00\x4f\x00\x29\x00\x04\x00\x0a\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x03\x00\x11\x00\x05\x00\x13\x00\x04\x00\x04\x00\x04\x00\x1b\x00\x0b\x00\x04\x00\x1d\x00\x1e\x00\x0a\x00\x10\x00\x11\x00\x12\x00\x0e\x00\x25\x00\x11\x00\x04\x00\x13\x00\x30\x00\x31\x00\x2b\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x03\x00\x3e\x00\x05\x00\x04\x00\x29\x00\x4f\x00\x04\x00\x04\x00\x0b\x00\x30\x00\x04\x00\x08\x00\x09\x00\x10\x00\x11\x00\x12\x00\x11\x00\x38\x00\x13\x00\x11\x00\x04\x00\x13\x00\x04\x00\x3e\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x2e\x00\x04\x00\x04\x00\x31\x00\x29\x00\x12\x00\x04\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x03\x00\x0f\x00\x05\x00\x04\x00\x04\x00\x04\x00\x04\x00\x1b\x00\x0b\x00\x17\x00\x08\x00\x09\x00\x1a\x00\x10\x00\x11\x00\x12\x00\x04\x00\x25\x00\x00\x00\x04\x00\x01\x00\x30\x00\x31\x00\x2b\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x03\x00\x3e\x00\x05\x00\x01\x00\x29\x00\x04\x00\x0d\x00\x09\x00\x0b\x00\x30\x00\x04\x00\x19\x00\x04\x00\x10\x00\x11\x00\x12\x00\x04\x00\x38\x00\x04\x00\x15\x00\x16\x00\x04\x00\x04\x00\x3e\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x04\x00\x0f\x00\x04\x00\x04\x00\x29\x00\x03\x00\x06\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x03\x00\x05\x00\x05\x00\x47\x00\x06\x00\x52\x00\x04\x00\x02\x00\x0b\x00\x01\x00\x04\x00\x3a\x00\x03\x00\x10\x00\x11\x00\x12\x00\x06\x00\x06\x00\x04\x00\x4e\x00\x01\x00\x30\x00\x31\x00\x06\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x03\x00\x3e\x00\x05\x00\x09\x00\x29\x00\x21\x00\x52\x00\x52\x00\x0b\x00\x30\x00\x31\x00\x01\x00\x28\x00\x10\x00\x11\x00\x12\x00\x2c\x00\x2d\x00\x0c\x00\x52\x00\x07\x00\x03\x00\x02\x00\x3e\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x0f\x00\x0e\x00\x3a\x00\x2f\x00\x29\x00\x02\x00\x0f\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x03\x00\x52\x00\x05\x00\x09\x00\x4d\x00\x03\x00\x0a\x00\x05\x00\x0b\x00\x2f\x00\x0d\x00\x0c\x00\x02\x00\x0b\x00\x11\x00\x12\x00\x0b\x00\x52\x00\x10\x00\x11\x00\x12\x00\x03\x00\x52\x00\x52\x00\x1b\x00\x1c\x00\x30\x00\x31\x00\x04\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x03\x00\x3e\x00\x05\x00\x0a\x00\x29\x00\x02\x00\x08\x00\x0a\x00\x0b\x00\x52\x00\x03\x00\x0c\x00\x1b\x00\x1c\x00\x11\x00\x12\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x04\x00\x25\x00\x26\x00\x1b\x00\x1c\x00\x52\x00\x01\x00\x2b\x00\x04\x00\x00\x00\x01\x00\x02\x00\x04\x00\x04\x00\x1e\x00\x4e\x00\x4f\x00\x50\x00\x04\x00\x52\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x03\x00\x06\x00\x05\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x0b\x00\x13\x00\x0d\x00\x2f\x00\x02\x00\x52\x00\x11\x00\x12\x00\x04\x00\x0c\x00\x30\x00\x04\x00\x03\x00\x01\x00\x05\x00\x52\x00\x1b\x00\x1c\x00\x01\x00\x01\x00\x0b\x00\x4e\x00\x4f\x00\x50\x00\x3e\x00\x52\x00\x11\x00\x12\x00\x02\x00\x07\x00\x03\x00\x18\x00\x05\x00\x39\x00\x3a\x00\x3b\x00\x1b\x00\x1c\x00\x0b\x00\x01\x00\x0a\x00\x02\x00\x23\x00\x30\x00\x11\x00\x12\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x2c\x00\x2d\x00\x01\x00\x1b\x00\x1c\x00\x02\x00\x3e\x00\x02\x00\x01\x00\x01\x00\x52\x00\x00\x00\x01\x00\x02\x00\x01\x00\x04\x00\x4e\x00\x4f\x00\x50\x00\x04\x00\x52\x00\x52\x00\x3a\x00\x09\x00\x03\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x48\x00\x00\x00\x01\x00\x02\x00\x25\x00\x04\x00\x4e\x00\x4f\x00\x50\x00\x18\x00\x52\x00\x39\x00\x39\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x23\x00\x07\x00\x52\x00\x04\x00\x4e\x00\x4f\x00\x50\x00\x3e\x00\x52\x00\x2c\x00\x2d\x00\x04\x00\x43\x00\x00\x00\x01\x00\x02\x00\x01\x00\x04\x00\x39\x00\x3a\x00\x3b\x00\x4c\x00\x4d\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x10\x00\x04\x00\x01\x00\x48\x00\x49\x00\x01\x00\x52\x00\x3e\x00\x39\x00\x3a\x00\x3b\x00\x04\x00\x43\x00\x00\x00\x01\x00\x02\x00\x01\x00\x04\x00\x04\x00\x02\x00\x0c\x00\x4c\x00\x4d\x00\x48\x00\x49\x00\x13\x00\x2b\x00\x16\x00\x0a\x00\x2e\x00\x2f\x00\x00\x00\x01\x00\x02\x00\x0e\x00\x04\x00\x0e\x00\x04\x00\x18\x00\x52\x00\x39\x00\x3a\x00\x3b\x00\x04\x00\x04\x00\x01\x00\x00\x00\x01\x00\x02\x00\x23\x00\x04\x00\x04\x00\x03\x00\x08\x00\x1a\x00\x48\x00\x49\x00\x18\x00\x2c\x00\x2d\x00\x52\x00\x00\x00\x01\x00\x02\x00\x04\x00\x04\x00\x0c\x00\x4e\x00\x23\x00\x06\x00\x39\x00\x3a\x00\x3b\x00\x04\x00\x0e\x00\x52\x00\x10\x00\x2c\x00\x2d\x00\x0e\x00\x21\x00\x52\x00\x16\x00\x17\x00\x03\x00\x48\x00\x49\x00\x28\x00\x39\x00\x3a\x00\x3b\x00\x2c\x00\x2d\x00\x04\x00\x07\x00\x0c\x00\x04\x00\x06\x00\x13\x00\x39\x00\x45\x00\x07\x00\x47\x00\x39\x00\x3a\x00\x3b\x00\x0a\x00\x04\x00\x27\x00\x08\x00\x29\x00\x2a\x00\x2b\x00\x2f\x00\x2d\x00\x45\x00\x18\x00\x47\x00\x39\x00\x3a\x00\x3b\x00\x0a\x00\x35\x00\x36\x00\x37\x00\x38\x00\x0a\x00\x23\x00\x3b\x00\x04\x00\x3d\x00\x3e\x00\x3f\x00\x52\x00\x41\x00\x01\x00\x2c\x00\x2d\x00\x52\x00\x46\x00\x47\x00\x04\x00\x27\x00\x4a\x00\x29\x00\x2a\x00\x2b\x00\x4f\x00\x2d\x00\x18\x00\x0e\x00\x01\x00\x52\x00\x52\x00\x52\x00\x02\x00\x35\x00\x36\x00\x37\x00\x38\x00\x23\x00\x01\x00\x3b\x00\x04\x00\x3d\x00\x3e\x00\x3f\x00\x02\x00\x41\x00\x2c\x00\x2d\x00\x03\x00\x54\x00\x46\x00\x47\x00\x04\x00\x27\x00\x4a\x00\x29\x00\x2a\x00\x2b\x00\x52\x00\x2d\x00\x18\x00\x54\x00\x03\x00\x03\x00\x03\x00\x52\x00\x08\x00\x35\x00\x36\x00\x37\x00\x38\x00\x23\x00\x17\x00\x3b\x00\x54\x00\x3d\x00\x3e\x00\x3f\x00\x18\x00\x41\x00\x2c\x00\x2d\x00\x0e\x00\x14\x00\x46\x00\x47\x00\x4e\x00\x27\x00\x4a\x00\x29\x00\x2a\x00\x2b\x00\x30\x00\x2d\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\x3b\x00\xff\xff\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\xff\xff\xff\xff\x4a\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\x04\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x18\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\x23\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x3e\x00\x46\x00\xff\xff\x41\x00\x42\x00\x43\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x04\x00\xff\xff\x3e\x00\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x2c\x00\x2d\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x27\x00\xff\xff\x29\x00\x2a\x00\x2b\x00\xff\xff\x2d\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\xff\xff\x36\x00\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\x3b\x00\x3e\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\xff\xff\xff\xff\x4a\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"#
happyTable :: HappyAddr
-happyTable = HappyA# "\x00\x00\x41\x00\x77\x01\x42\x00\x41\x00\x5a\x00\x42\x00\x41\x00\x41\x00\x42\x00\x42\x00\x41\x00\x41\x00\x42\x00\x42\x00\x41\x00\x5a\x00\x4a\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xf7\x01\xd9\x00\xb7\x00\x56\x00\xea\x00\x79\x00\xff\x00\xab\x01\x34\x00\x51\x00\xb8\x00\x35\x00\x37\x00\x17\x00\xba\x01\x7c\x00\x2e\x00\x2f\x00\x4f\x00\x19\x00\x1a\x00\x9d\x01\x77\x01\x79\x00\x8a\x01\x32\x00\x0b\x01\x71\x01\x0d\x01\x9a\x00\x9b\x00\x9c\x00\x72\x01\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xb9\x00\x74\x01\x00\x01\xf5\x01\x23\x00\xa8\x01\x76\x00\xf6\xff\x5f\x00\xa2\x01\x5b\x00\x2f\x01\x66\x00\x06\x00\xcb\x01\x99\x00\x9a\x00\x9b\x00\x9c\x00\x12\x00\xfc\x01\x5b\x00\x95\x00\x43\x00\xe3\x00\x06\x00\x43\x00\x44\x00\xea\x00\xcb\x00\xcc\x00\x06\x00\xd6\xff\xcd\x00\xcf\x00\xa9\x01\xff\xff\x15\x00\x06\x00\x16\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x17\x00\x7a\x00\xb0\x00\xb1\x00\xb2\x00\x18\x00\x19\x00\x1a\x00\x06\x00\x06\x00\x06\x00\x5a\x00\x06\x00\xa2\x00\x1b\x00\xa3\x00\x5f\x00\xb3\x00\x44\x01\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x2c\x00\x22\x00\x9d\x00\xa4\x00\x23\x00\x70\x00\x06\x00\x24\x00\x2c\x00\x9e\x00\x6a\x00\x8f\x01\xa5\x00\x90\x01\x74\x01\x26\x00\xd6\xff\x71\x00\x72\x00\x9f\x00\x47\x01\x7d\x01\x73\x00\x06\x00\xa2\x00\xdf\x00\xa3\x00\x27\x00\xf4\x01\xea\x00\xe0\x00\x28\x00\x29\x00\xfd\x01\xb6\x00\x06\x00\x31\x00\x2a\x00\x0b\x01\xa4\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x15\x00\xff\x00\x16\x00\xa5\x00\x32\x00\xb9\x00\x5b\x00\x5c\x00\x17\x00\xa2\x00\x5e\x00\xa3\x00\x5f\x00\x18\x00\x19\x00\x1a\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x18\x01\xea\x01\x1b\x00\xea\x00\xa4\x00\x74\x00\x19\x01\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xa5\x00\x22\x00\x00\x01\x51\x00\x23\x00\xfb\x01\xa3\x01\x24\x00\x7e\x01\x01\x01\x25\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x26\x00\x06\x00\xf1\x00\xfc\x01\x06\x00\x2b\x00\x2c\x00\x2d\x00\xf2\x00\xa2\x00\x06\x00\xa3\x00\x27\x00\x06\x00\xd4\x01\xeb\x01\x28\x00\x29\x00\xd5\x01\xb6\x00\xa4\x01\xda\x01\x2a\x00\x74\x01\xa4\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x15\x00\x26\x01\x16\x00\xa5\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x17\x00\xa2\x00\x06\x00\xa3\x00\xc3\x01\x18\x00\x19\x00\x1a\x00\x6d\x01\xe4\x00\x27\x01\x74\x01\x51\x00\xb5\x01\x1b\x00\x55\x01\xa4\x00\x46\x00\x47\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xa5\x00\x22\x00\xdd\x01\x25\x01\x23\x00\x75\x01\xf1\x01\x24\x00\x48\x00\x13\x01\x6a\x00\x0d\x01\x9a\x00\x9b\x00\x9c\x00\x26\x00\xf2\x01\x14\x01\x51\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x27\x00\xee\x00\x97\x01\x86\x01\x28\x00\x29\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x2a\x00\x51\x00\xe1\x01\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x15\x00\x26\x01\x16\x00\x51\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x17\x00\x99\x01\x06\x00\x3e\x01\x2c\x00\x18\x00\x19\x00\x1a\x00\x52\x00\xb9\x00\x27\x01\x53\x00\x1e\x01\x28\x01\x1b\x00\xb0\x00\xb1\x00\xb2\x00\xd2\x01\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xd7\x01\x22\x00\x9d\x00\x3b\x01\x23\x00\xb3\x00\x5a\x01\x24\x00\x9a\x01\xad\x01\x25\x00\xb9\x00\x9d\x00\x52\x00\x99\x01\x26\x00\x53\x00\x3c\x01\xd6\x01\x9e\x00\x15\x00\x52\x00\x4e\x00\xd9\x01\x53\x00\x6b\x00\xbd\x01\x27\x00\x17\x00\x9f\x00\xa0\x00\x28\x00\x29\x00\x18\x00\x19\x00\x1a\x00\x51\x00\x2a\x00\xf3\x00\x88\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x89\x00\x9a\x01\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x74\x01\x22\x00\x34\x00\x9b\x01\x23\x00\x35\x00\xc0\x01\x0d\x01\x9a\x00\x9b\x00\x9c\x00\x0d\x01\x9a\x00\x9b\x00\x9c\x00\xf3\x00\xf4\x00\xcf\x01\xaa\x00\x88\x01\x15\x00\xc4\x01\x4e\x00\xab\x00\x9d\x01\x1f\xff\x52\x00\x27\x00\x17\x00\x53\x00\xa6\x00\x28\x00\x29\x00\x18\x00\x19\x00\x1a\x00\x63\x00\x2a\x00\x64\x00\xc7\x01\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x79\x00\xf4\x00\xab\x01\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x17\x00\xf5\x00\x62\x01\xcc\x01\x23\x00\x4f\x00\x19\x00\x1a\x00\x88\x00\x51\x00\x89\x00\xb0\x00\xb1\x00\xb2\x00\x89\x00\xb0\x00\x58\x01\x79\x00\x8a\x00\x4e\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x17\x00\xb3\x00\x0e\x01\xa3\x01\x23\x00\x4f\x00\x19\x00\x1a\x00\x4c\x01\x4a\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x89\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xa1\x01\xa6\x01\x52\x00\x8d\x01\x23\x00\x53\x00\x54\x00\xa4\x01\xa5\x01\xac\x01\x0d\x01\x9a\x00\x9b\x00\x9c\x00\xd9\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x15\x00\x4d\x01\x4e\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x45\x01\x17\x00\x04\x01\x13\x01\x56\x01\x77\x00\x18\x00\x19\x00\x1a\x00\x8c\x01\x7a\x01\x14\x01\xa7\x01\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x79\x00\x12\x00\x4e\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x17\x00\x82\x01\x5d\x01\x83\x01\x23\x00\x4f\x00\x19\x00\x1a\x00\x6f\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xb0\x00\xb1\x00\x21\x01\x15\x00\x74\x01\x4e\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x17\x00\x22\x01\x9d\x00\xb3\x01\x23\x00\x18\x00\x19\x00\x1a\x00\xd9\x00\x16\x01\xd1\x01\x91\x00\x88\x01\x92\x00\x5f\x01\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x77\x01\x07\x01\x35\x00\x36\x00\x23\x00\x79\x01\x7a\x01\x0b\x00\x0c\x00\x7e\x00\x0d\x01\x9a\x00\x9b\x00\x9c\x00\x78\x01\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x79\x00\x12\x00\x4e\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x08\x01\x17\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x4f\x00\x19\x00\x1a\x00\x7b\x01\xab\x01\x7f\x01\xeb\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x4d\x00\xe4\x01\x4e\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x17\x00\xe5\x01\xf3\x01\xf6\x00\x23\x00\x4f\x00\x19\x00\x1a\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x35\x01\xb0\x00\xb1\x00\x21\x01\x15\x00\x3a\x01\x4e\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x17\x00\x22\x01\x9d\x00\x23\x01\x23\x00\x18\x00\x19\x00\x1a\x00\x0f\x01\x72\x01\x3d\x01\x74\x01\x07\x01\x70\x00\xae\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x71\x00\x72\x00\xa5\x00\x87\x01\x23\x00\x88\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x51\x01\x11\x00\x08\x01\xe4\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x12\x00\xb9\x00\xd0\x00\x09\x01\x51\x00\x13\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xd1\x00\xd2\x00\xd3\x00\x52\x01\xb8\x01\x74\x01\xd4\x00\xe5\x00\xd5\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\xa2\x00\x88\x00\xa3\x00\x6a\x00\x91\x01\x38\x00\xfc\x00\x89\x00\x8b\x01\x39\x00\x88\x01\x18\x01\x44\xff\xe7\x00\xe8\x00\xa4\x00\x9f\x01\x19\x01\x59\x00\x44\xff\x44\xff\xe4\x00\xfe\x00\x44\xff\xa5\x00\xaf\x00\x9a\x00\x9b\x00\x9c\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x51\x01\x11\x00\x62\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x48\x00\x12\x00\x13\x01\xe5\x00\x52\x00\xff\x01\x13\x00\x53\x00\x6b\x00\x00\x02\x14\x01\xfa\x01\xf9\x01\x15\x01\xe6\x00\x52\x01\x53\x01\xf1\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xe7\x00\xe8\x00\xe8\x01\x52\x00\x06\x00\xe9\x01\x53\x00\x6b\x00\x06\x00\x2b\x00\x2c\x00\x2d\x00\x4a\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xb0\x00\xb1\x00\xb2\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x33\x01\x11\x00\xea\x01\x25\xff\xed\x01\xf7\x01\x25\xff\xb3\x00\xb4\x00\x12\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x13\x00\x60\x00\x77\x00\x34\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x5f\x00\x11\x00\xe4\x01\x99\x00\x9a\x00\x9b\x00\x9c\x00\xee\x01\x81\x01\x12\x00\xe5\x01\xe6\x01\x0b\x00\x74\x00\x13\x00\x60\x00\xbb\x00\x61\x00\xbc\x00\xbd\x00\xbe\x00\xf0\x01\xbf\x00\xef\x01\xe0\x01\x03\x01\x12\x00\xe1\x01\xce\x01\x2b\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\x06\x00\xe3\x01\xc4\x00\x51\x00\xc5\x00\xc6\x00\xc7\x00\x06\x00\xc8\x00\xe4\x01\x9d\x00\xcf\x01\x81\x01\xc9\x00\xca\x00\xdc\x01\xcb\x00\x16\x01\xfc\x00\x04\x01\xd1\x01\xbb\x00\x06\x00\xbc\x00\xbd\x00\xbe\x00\x9d\x00\xbf\x00\x05\x01\x06\x01\xfc\x00\xdd\x01\x62\x01\x2c\x01\xfe\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xe4\x00\xfd\x00\xc4\x00\xbc\x01\xc5\x00\xc6\x00\xc7\x00\xfe\x00\xc8\x00\x0d\x01\x9a\x00\x9b\x00\x9c\x00\xc9\x00\xca\x00\xbb\x00\xcb\x00\xbc\x00\xbd\x00\xbe\x00\xd9\x01\xbf\x00\xbd\x01\xc2\x01\x0d\x01\x9a\x00\x9b\x00\x9c\x00\xbf\x01\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xec\x00\xc0\x01\xc4\x00\xc6\x01\xc5\x00\xc6\x00\xc7\x00\x96\x01\xc8\x00\x06\x00\xc7\x01\xee\x00\xef\x00\xc9\x00\xca\x00\xc9\x01\xcb\x00\xca\x01\xcb\x01\x06\x00\x85\x01\xbb\x00\x86\x01\xbc\x00\xbd\x00\xbe\x00\x06\x00\xbf\x00\x66\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xb0\x00\x59\x01\xc0\x00\xc1\x00\xc2\x00\xc3\x00\x8a\x01\x06\x00\xc4\x00\x7d\x01\xc5\x00\xc6\x00\xc7\x00\x91\x01\xc8\x00\xb0\x00\xb1\x00\xb4\x01\xd9\x00\xc9\x00\xca\x00\x93\x01\xcb\x00\x66\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x96\x01\x9f\x01\x06\x00\xaf\x01\xda\x00\x06\x00\xdb\x00\x4a\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xdc\x00\xdd\x00\xb0\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x67\x00\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x06\x00\xb7\x01\x12\x00\xb1\x01\x40\x01\x5b\x00\xba\x01\x13\x00\x4a\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x41\x01\x06\x00\x43\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x67\x00\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x8e\x00\x4b\x01\x12\x00\x42\x01\x49\x01\x5b\x00\x68\x00\x13\x00\x37\x01\x4a\x01\x4e\x01\x4f\x01\x50\x01\x51\x01\x12\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xac\x00\x11\x00\x54\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x8e\x00\x12\x00\x0d\x01\x9a\x00\x9b\x00\x9c\x00\x13\x00\x06\x00\x8f\x00\x5c\x01\x5d\x01\x06\x00\x5f\x01\x61\x01\x12\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xac\x00\x11\x00\x0c\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x63\x01\x12\x00\x64\x01\x65\x01\x66\x01\x68\x01\x13\x00\x67\x01\x4a\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x69\x01\x6c\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xac\x00\x11\x00\xad\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x6d\x01\x12\x00\x6e\x01\xb0\x00\xb1\x00\x24\x01\x13\x00\x8a\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x6f\x01\x06\x00\x74\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xac\x00\x11\x00\xb8\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x4b\x00\x12\x00\x06\x00\x7f\x01\x84\x01\xd9\x00\x13\x00\x4a\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xe3\x00\xe1\x00\x12\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xde\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x56\x00\x12\x00\x06\x00\x81\x01\xe2\x00\x0c\x01\x13\x00\x11\x01\x12\x01\x16\x01\x1a\x01\x92\x00\x1b\x01\x12\x00\x1c\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xd5\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x56\x00\x12\x00\x06\x00\x21\x01\x06\x00\x2a\x01\x13\x00\x2b\x01\x2c\x01\x2e\x01\x2f\x01\x06\x00\x32\x01\x12\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xb7\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x3b\x00\x37\x01\x12\x00\x3c\x00\x3a\x01\x06\x00\x06\x00\x13\x00\x2b\x00\x7d\x00\x76\x00\x87\x00\x8c\x00\x3d\x00\x3e\x00\x8d\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xc2\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x8e\x00\x3f\x00\x12\x00\x93\x00\x94\x00\x95\x00\x40\x00\x13\x00\x97\x00\x98\x00\x99\x00\x06\x00\xa8\x00\xa9\x00\x89\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x93\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x06\x00\xcf\x00\x12\x00\xd7\x00\x06\x00\xd8\x00\x41\x00\x13\x00\x06\x00\x4a\x00\x50\x00\xff\xff\xff\xff\x51\x00\x58\x00\x6e\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x94\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x6d\x00\x06\x00\x12\x00\xff\xff\x6f\x00\x76\x00\x77\x00\x13\x00\x06\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x98\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xa0\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xb1\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xb2\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x43\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x46\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x57\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x1c\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x1d\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x1f\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x30\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x32\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x38\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x7d\x00\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x81\x00\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x85\x00\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xab\x00\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x67\x00\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x58\x00\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\xe4\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\xe4\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x4a\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xec\x00\x00\x00\x0b\x00\x0c\x00\x82\x00\x83\x00\x84\x00\x69\x01\x11\x00\x00\x00\x00\x00\xee\x00\xef\x00\x00\x00\xe4\x00\xec\x00\x12\x00\x0b\x00\x0c\x00\x7f\x00\xe4\x00\x00\x00\x6a\x01\x00\x00\x00\x00\x00\x00\xee\x00\xef\x00\xe4\x00\x00\x00\x00\x00\x12\x00\x0b\x00\x0c\x00\x80\x00\x00\x00\x00\x00\x00\x00\xe5\x00\x00\x00\x00\x00\x00\x00\xe4\x00\x0b\x00\x74\x00\xe4\x00\x12\x00\xe4\x00\x00\x00\xea\x00\x00\x00\x00\x00\xe5\x00\xec\x00\x00\x00\xe4\x00\x00\x00\x12\x00\xe7\x00\xe8\x00\xed\x00\xe4\x00\x00\x00\xf2\x00\xee\x00\xef\x00\xe5\x00\x00\x00\x00\x00\xe5\x00\x00\x00\xe5\x00\xe7\x00\xe8\x00\xe4\x00\x00\x00\x00\x00\xf7\x00\x00\x00\x00\x00\xf8\x00\x00\x00\xf9\x00\x00\x00\x00\x00\xe5\x00\xe7\x00\xe8\x00\xec\x00\xe7\x00\xe8\x00\xe7\x00\xe8\x00\x00\x00\x00\x00\xfa\x00\xfb\x00\x00\x00\xe5\x00\xee\x00\xef\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe7\x00\xe8\x00\x00\x00\xbb\x00\x02\x01\xbc\x00\xbd\x00\xbe\x00\x00\x00\xbf\x00\x00\x00\x00\x00\x00\x00\xe7\x00\xe8\x00\x00\x00\x00\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\x00\x00\x00\x00\xc4\x00\x00\x00\xc5\x00\xc6\x00\xc7\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc9\x00\xca\x00\x00\x00\xcb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xd6\xff\x42\x00\x42\x00\x86\x01\x42\x00\x43\x00\x42\x00\x43\x00\x42\x00\x43\x00\x42\x00\x43\x00\x42\x00\x43\x00\x8c\x01\x43\x00\x68\x00\x6d\x00\x83\x01\x1a\x01\x58\x00\x96\x00\x59\x00\x64\x00\xac\x01\x87\x00\xf7\x00\x97\x00\x5a\x00\x86\x01\x5f\x00\x28\x01\x3e\xff\x08\x02\x5b\x00\x5c\x00\xfd\x00\x29\x01\xcc\x00\x3e\xff\x3e\xff\x1b\x01\x1e\x01\x3e\xff\x5d\x00\x5e\x00\x06\x00\x07\x00\x08\x00\x09\x00\x4b\x00\xba\x01\x52\x00\x53\x00\x54\x00\xd6\xff\x55\x00\x6c\x00\x8a\x00\xfd\x00\x6d\x00\x1e\x01\x35\x00\x03\x02\xf2\x00\x36\x00\x01\x01\xa6\x01\x84\x00\xd7\x01\xf3\x00\x2f\x00\x52\x00\x53\x00\x54\x00\x74\x00\x55\x00\x69\x00\x42\x01\x2f\x00\x2f\x00\x8d\x01\x88\x00\xde\x00\xff\xff\x44\x00\xf6\x00\x44\x00\x45\x00\xdf\x00\x15\x00\xe0\x00\x16\x00\xe2\x00\xb7\x01\x06\x00\x2c\x00\x2d\x00\x17\x00\x2f\x00\xf6\xff\x2f\x00\x2f\x00\x18\x00\x19\x00\x1a\x00\x2f\x00\x2f\x00\x12\x00\xa7\x00\xfd\x00\x2f\x00\x1b\x00\x2f\x00\x2f\x00\x6d\x00\xa8\x00\x00\x02\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xb8\x01\x22\x00\xa9\x00\x59\x01\x23\x00\xa7\x00\x2f\x00\x24\x00\x2f\x00\x2c\x00\x78\x00\x68\x00\xa8\x00\x01\x02\x04\x01\x26\x00\x47\x00\x48\x00\x2c\x00\x83\x01\x05\x01\x2f\x00\xa9\x00\xaa\x00\x80\x01\x5f\x00\x27\x00\x28\x00\xa8\x01\x81\x01\x5f\x00\x29\x00\x2a\x00\x49\x00\x09\x02\x52\x00\x53\x00\x54\x00\x2b\x00\x55\x00\xf7\x01\x06\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x15\x00\xf6\x01\x16\x00\x5f\x00\x7e\x00\x52\x00\x53\x00\x54\x00\x17\x00\x55\x00\xa9\x01\x2f\x00\x68\x00\x18\x00\x19\x00\x1a\x00\x7f\x00\x80\x00\x95\x01\x83\x01\xe2\x01\x81\x00\x1b\x00\xbd\x00\x38\x00\xbc\x00\x69\x00\xa3\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xcf\x01\x22\x00\x2c\x00\x33\x00\x23\x00\x2f\x00\xbe\x00\x24\x00\x4e\x01\x5f\x01\x25\x00\x9e\x01\xa7\x00\x9f\x01\xec\x00\x26\x00\x52\x00\x53\x00\x54\x00\xbc\x01\x55\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x27\x00\x28\x00\xa7\x00\xa8\x01\xbd\x00\x29\x00\x2a\x00\x99\x01\x91\x01\x81\x01\x92\x01\x82\x00\x2b\x00\x69\x00\x6a\x00\x06\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x15\x00\xbe\x00\x16\x00\x5f\x00\xbf\x00\x52\x00\x53\x00\x54\x00\x17\x00\x55\x00\x9f\x00\xa9\x01\xa0\x00\x18\x00\x19\x00\x1a\x00\x52\x00\x53\x00\x54\x00\xb5\x01\xb3\x00\xaa\x01\x1b\x00\x0b\x00\x0c\x00\x8c\x00\x32\x00\xa7\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x26\x01\x22\x00\x06\x01\x12\x00\x23\x00\x33\x00\x24\x01\x24\x00\x60\x00\x17\x01\x78\x00\x61\x00\x3a\x01\x5f\x00\x25\x01\x26\x00\x52\x00\x53\x00\x54\x00\xb6\x01\x55\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x27\x00\x28\x00\xa7\x00\x07\x01\x06\x01\x29\x00\x2a\x00\xcc\x00\x07\x02\x40\x01\x83\x01\xac\x01\x2b\x00\xb4\x00\x67\x01\x06\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x15\x00\x08\x02\x16\x00\x51\x01\x71\x01\x84\x01\x60\x00\xf7\x00\x17\x00\x61\x00\x4f\x01\x07\x01\x97\x00\x18\x00\x19\x00\x1a\x00\x52\x00\x53\x00\x54\x00\x08\x01\xb3\x00\xec\x00\x1b\x00\x0b\x00\x0c\x00\x8d\x00\xe9\x01\x64\x01\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x12\x01\x22\x00\xff\x00\x12\x00\x23\x00\x9b\x01\x89\x01\x24\x00\x60\x00\xa5\x01\x25\x00\x61\x00\x79\x00\x01\x01\x02\x01\x26\x00\x1f\xff\x24\x01\x5f\x00\x1f\xff\x15\x00\xde\x01\x4f\x00\xed\x01\x5f\x00\x25\x01\x27\x00\x28\x00\x17\x00\x85\x00\x13\x01\x29\x00\x2a\x00\x18\x00\x19\x00\x1a\x00\xcc\x00\xb1\x01\x2b\x00\xb4\x00\x68\x01\x06\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xe3\x01\x12\x01\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x58\x00\x22\x00\x59\x00\x60\x00\x23\x00\xcc\x00\x61\x00\xac\x00\x5a\x00\x60\x00\xfd\x01\x28\x01\x61\x00\x62\x00\x5b\x00\x5c\x00\xfe\x01\x29\x01\x78\x00\xe5\x01\x87\x00\x9c\x01\xba\x01\x13\x01\x5d\x00\x5e\x00\x27\x00\x28\x00\x17\x00\xc6\x01\x14\x01\x29\x00\x2a\x00\x50\x00\x19\x00\x1a\x00\x2f\x00\x30\x00\x2b\x00\xb2\x01\xca\x00\x06\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x32\x01\xc9\x01\xcb\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x15\x00\x24\x01\x4f\x00\x60\x00\x23\x00\x19\xff\x61\x00\x79\x00\x17\x00\x25\x01\xb3\x01\xe6\x01\xcc\x01\x18\x00\x19\x00\x1a\x00\x52\x00\x53\x00\x54\x00\xb0\x00\x55\x00\x06\x00\x2c\x00\x2d\x00\xb1\x00\x2f\x00\xd0\x01\xf7\x00\x96\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x97\x00\x52\x00\x53\x00\x54\x00\x23\x00\x55\x00\x1a\x01\x06\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x87\x00\x71\x00\xba\x01\xe0\x01\x72\x00\xff\x00\x3c\x00\xe1\x01\x17\x00\x3d\x00\xf7\x00\x1b\x01\x78\x01\x50\x00\x19\x00\x1a\x00\x01\x01\x02\x01\xd3\x01\x3e\x00\x3f\x00\x1c\x01\x33\x01\xd8\x01\x06\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x87\x00\x40\x00\x4f\x00\xec\x00\x23\x00\xff\x00\x41\x00\x56\x00\x17\x00\x0b\x00\x0c\x00\x8e\x00\x79\x01\x50\x00\x19\x00\x1a\x00\x01\x01\x02\x01\x36\x00\x37\x00\xb0\x01\x88\x01\x89\x01\x12\x00\x06\x00\x07\x00\x08\x00\x09\x00\x4b\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x31\x01\x5f\x00\xb2\x01\xbb\x01\x23\x00\x83\x01\x97\x00\x06\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x06\x00\x07\x00\x08\x00\x09\x00\x4b\x00\x15\x00\xdb\x01\x4f\x00\x97\x01\x5c\x01\x83\x01\x96\x00\x0f\x01\x17\x00\x65\x01\xb3\x01\xb4\x01\x97\x00\x18\x00\x19\x00\x1a\x00\x98\x00\xae\x01\xdd\x01\x6c\x01\x97\x01\x0b\x00\x82\x00\x11\x01\x06\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x87\x00\x12\x00\x4f\x00\x83\x01\x23\x00\x6e\x01\x83\x01\xf0\x01\x17\x00\x9b\x00\x7e\x01\xf1\x01\xff\x01\x50\x00\x19\x00\x1a\x00\x96\x01\x4a\x01\x97\x01\x9a\x01\x86\x01\x97\x01\x87\x01\x12\x00\x06\x00\x07\x00\x08\x00\x09\x00\x98\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x35\x00\x5f\x00\x8a\x01\x36\x00\x23\x00\x8e\x01\xfe\x00\x06\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x06\x00\x07\x00\x08\x00\x09\x00\x4b\x00\x15\x00\x24\x01\x4f\x00\x09\x01\x2c\x01\x48\x01\xf0\x01\x0f\x01\x17\x00\x25\x01\xf1\x01\xf2\x01\x26\x01\x18\x00\x19\x00\x1a\x00\x4d\x01\x10\x01\x50\x01\xb2\x00\xab\x00\x0b\x00\x64\x00\x11\x01\x06\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x87\x00\x12\x00\x4f\x00\xba\x00\x23\x00\xc4\x00\x3a\x00\x7e\x00\x17\x00\x9b\x00\xe3\x00\xcc\x00\xe4\x00\x50\x00\x19\x00\x1a\x00\xe5\x00\x9c\x00\xe6\x00\x7f\x00\x80\x00\xe7\x00\xe8\x00\x12\x00\x06\x00\x07\x00\x08\x00\x09\x00\x4b\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x39\x00\x49\x00\x67\x00\x70\x00\x23\x00\xfd\x01\x0b\x02\x06\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x06\x00\x07\x00\x08\x00\x09\x00\x4b\x00\x15\x00\x05\x02\x4f\x00\x06\x02\x0c\x02\x2f\x00\xf4\x01\xf6\x01\x17\x00\xf5\x01\xf7\x00\x90\x01\xef\x01\x18\x00\x19\x00\x1a\x00\xf9\x01\xfa\x01\xfb\x01\x06\x00\xec\x01\x0b\x00\xb1\x00\xed\x01\x06\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x4e\x00\x12\x00\x4f\x00\xf0\x01\x23\x00\xff\x00\x2f\x00\x2f\x00\x17\x00\x0b\x00\x64\x00\xda\x01\x00\x01\x50\x00\x19\x00\x1a\x00\x01\x01\x02\x01\xdb\x01\x2f\x00\xe8\x01\xe9\x01\x71\x01\x12\x00\x06\x00\x07\x00\x08\x00\x09\x00\x4b\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xc8\x01\xc9\x01\x90\x01\xcb\x01\x23\x00\xce\x01\xcc\x01\x06\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x58\x00\x2f\x00\x59\x00\xd2\x01\xd3\x01\x15\x00\xd5\x01\x4f\x00\x5a\x00\xd6\x01\xba\x00\xd7\x01\x94\x01\x17\x00\x5b\x00\x5c\x00\x95\x01\x2f\x00\x18\x00\x19\x00\x1a\x00\x99\x01\x2f\x00\x2f\x00\x5d\x00\x5e\x00\x0b\x00\x82\x00\x16\x01\x06\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x58\x00\x12\x00\x59\x00\x8c\x01\x23\x00\xa2\x01\xa0\x01\x7c\x01\x5a\x00\x2f\x00\xae\x01\xa5\x01\x0f\x01\x17\x01\x5b\x00\x5c\x00\x06\x00\x07\x00\x08\x00\x09\x00\x4b\x00\xbe\x01\x18\x01\x19\x01\x5d\x00\x5e\x00\x2f\x00\xbf\x01\x11\x01\xc3\x01\x52\x00\x53\x00\x54\x00\x53\x01\xb3\x00\xc0\x01\x06\x00\x2c\x00\x2d\x00\x54\x01\x2f\x00\x06\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x58\x00\x55\x01\x59\x00\x06\x00\x07\x00\x08\x00\x09\x00\x4b\x00\x5a\x00\x56\x01\xba\x00\x5b\x01\x5c\x01\x2f\x00\x5b\x00\x5c\x00\x6b\x01\x6c\x01\x85\x00\xf7\x00\x58\x00\x6e\x01\x59\x00\x2f\x00\x5d\x00\x5e\x00\x70\x01\x72\x01\x5a\x00\x06\x00\x2c\x00\x2d\x00\x12\x00\x2f\x00\x5b\x00\x5c\x00\x73\x01\x74\x01\x58\x00\xf8\x00\x59\x00\xb4\x00\xb5\x00\x5e\x01\x5d\x00\x5e\x00\x5a\x00\x75\x01\x7c\x01\x76\x01\xa0\x01\x4c\x00\x5b\x00\x5c\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xfa\x00\xfb\x00\x77\x01\x5d\x00\x5e\x00\x78\x01\x12\x00\x7b\x01\x7d\x01\x7e\x01\x2f\x00\x52\x00\x53\x00\x54\x00\x83\x01\xb3\x00\x06\x00\x2c\x00\x2d\x00\xf7\x00\x2f\x00\x2f\x00\x90\x01\x8e\x01\xec\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x5f\x00\x52\x00\x53\x00\x54\x00\x93\x01\xb3\x00\x06\x00\x2c\x00\x2d\x00\xf8\x00\x2f\x00\xf4\x00\xf5\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x60\x01\x11\x00\xf9\x00\xf6\x00\x2f\x00\x1f\x01\x06\x00\x2c\x00\x2d\x00\x12\x00\x2f\x00\xfa\x00\xfb\x00\x22\x01\x13\x00\x52\x00\x53\x00\x54\x00\x23\x01\xc5\x00\xb4\x00\xb5\x00\xc6\x00\x61\x01\xc4\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x60\x01\x11\x00\xa0\x00\x2a\x01\x2b\x01\xc7\x00\x57\x01\x2c\x01\x2f\x00\x12\x00\xb4\x00\xb5\x00\xc6\x00\x2e\x01\x13\x00\x52\x00\x53\x00\x54\x00\x2f\x01\xb3\x00\xf7\x00\x30\x01\x33\x01\x61\x01\x62\x01\xc7\x00\x69\x01\x35\x01\x60\x00\x37\x01\x36\x01\x61\x00\x79\x00\x52\x00\x53\x00\x54\x00\x38\x01\xb3\x00\x84\x00\xf7\x00\xf8\x00\x2f\x00\xb4\x00\xb5\x00\xc6\x00\x3d\x01\x3e\x01\x3f\x01\x52\x00\x53\x00\x54\x00\xfd\x00\xb3\x00\xf7\x00\x42\x01\x40\x01\x45\x01\xc7\x00\xc8\x00\xf8\x00\xfa\x00\xfb\x00\x2f\x00\x52\x00\x53\x00\x54\x00\xec\x00\xb3\x00\x4a\x01\x06\x00\x05\x01\x4d\x01\xb4\x00\xb5\x00\xc6\x00\x03\x02\xed\x00\x2f\x00\xee\x00\xfa\x00\xfb\x00\x84\x00\xff\x00\x2f\x00\xef\x00\xf0\x00\x8b\x00\xc7\x00\x20\x01\x0d\x01\xb4\x00\xb5\x00\xb6\x00\x01\x01\x02\x01\x95\x00\x9a\x00\x9e\x00\xf7\x00\x9b\x00\xa1\x00\xa7\x00\xb7\x00\xa3\x00\x5d\x01\xb4\x00\xb5\x00\xb6\x00\xa2\x00\xfc\x01\xce\x00\xa5\x00\xcf\x00\xd0\x00\xd1\x00\xae\x00\xd2\x00\xb7\x00\xf8\x00\xb8\x00\xb4\x00\xb5\x00\xbb\x00\xa6\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\x97\x00\x0a\x01\xd7\x00\xf7\x00\xd8\x00\xd9\x00\xda\x00\x2f\x00\xdb\x00\xaf\x00\xfa\x00\xfb\x00\x2f\x00\xdc\x00\xdd\x00\xdd\x01\xce\x00\xde\x00\xcf\x00\xd0\x00\xd1\x00\x2c\x00\xd2\x00\xf8\x00\xc1\x00\xe2\x00\x2f\x00\x2f\x00\x2f\x00\xea\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\x0b\x01\x42\x00\xd7\x00\xf7\x00\xd8\x00\xd9\x00\xda\x00\xeb\x00\xdb\x00\xfa\x00\xfb\x00\x4b\x00\xff\xff\xdc\x00\xdd\x00\xe5\x01\xce\x00\xde\x00\xcf\x00\xd0\x00\xd1\x00\x2f\x00\xd2\x00\xf8\x00\xff\xff\x51\x00\x52\x00\x66\x00\x2f\x00\x7b\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\x0c\x01\x7c\x00\xd7\x00\xff\xff\xd8\x00\xd9\x00\xda\x00\x7d\x00\xdb\x00\xfa\x00\xfb\x00\x84\x00\x85\x00\xdc\x00\xdd\x00\x06\x00\xce\x00\xde\x00\xcf\x00\xd0\x00\xd1\x00\x32\x00\xd2\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\x00\x00\x00\x00\xd7\x00\x00\x00\xd8\x00\xd9\x00\xda\x00\x00\x00\xdb\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdc\x00\xdd\x00\x00\x00\x00\x00\xde\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\xf7\x00\x06\x00\x07\x00\x08\x00\x09\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x46\x01\x11\x00\xf8\x00\x06\x00\x07\x00\x08\x00\x09\x00\x74\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x0e\x01\x13\x00\x6e\x00\x00\x00\x47\x01\x00\x00\x00\x00\x00\x00\x00\x00\xfa\x00\xfb\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x6d\x00\x11\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x75\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x6e\x00\x12\x00\x6f\x00\x00\x00\x69\x00\xc6\x01\x13\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x75\x00\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xf7\x00\x00\x00\x12\x00\x00\x00\x00\x00\x69\x00\x76\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x01\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xfa\x00\xfb\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xc2\x00\x11\x00\x63\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xc2\x00\x11\x00\x1f\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xc2\x00\x11\x00\xc3\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xc2\x00\x11\x00\xcb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xea\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xe1\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xc3\x01\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xce\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xa2\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xa3\x01\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xa7\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xaf\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xc0\x01\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xc1\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x56\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x58\x01\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x66\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x38\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x39\x01\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x3b\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x43\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x45\x01\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x4b\x01\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x8b\x00\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x8f\x00\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x93\x00\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xc1\x00\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x75\x00\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x66\x00\x11\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\x00\x00\x00\xcf\x00\xd0\x00\xd1\x00\x00\x00\xd2\x00\x0b\x00\x0c\x00\x90\x00\x91\x00\x92\x00\x00\x00\x11\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\x00\x00\x00\x00\xd7\x00\x12\x00\xd8\x00\xd9\x00\xda\x00\x00\x00\xdb\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdc\x00\xdd\x00\x00\x00\x00\x00\xde\x00\x00\x00\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 (4, 258) [
+happyReduceArr = array (4, 264) [
(4 , happyReduce_4),
(5 , happyReduce_5),
(6 , happyReduce_6),
@@ -806,45 +799,51 @@ happyReduceArr = array (4, 258) [
(255 , happyReduce_255),
(256 , happyReduce_256),
(257 , happyReduce_257),
- (258 , happyReduce_258)
+ (258 , happyReduce_258),
+ (259 , happyReduce_259),
+ (260 , happyReduce_260),
+ (261 , happyReduce_261),
+ (262 , happyReduce_262),
+ (263 , happyReduce_263),
+ (264 , happyReduce_264)
]
-happy_n_terms = 83 :: Int
+happy_n_terms = 85 :: Int
happy_n_nonterms = 84 :: Int
happyReduce_4 = happySpecReduce_1 0# happyReduction_4
happyReduction_4 happy_x_1
- = case happyOutTok happy_x_1 of { (PT _ (TV happy_var_1)) ->
+ = case happyOutTok happy_x_1 of { (PT _ (TI happy_var_1)) ->
happyIn7
- (identC happy_var_1
+ ((read happy_var_1) :: Integer
)}
happyReduce_5 = happySpecReduce_1 1# happyReduction_5
happyReduction_5 happy_x_1
- = case happyOutTok happy_x_1 of { (PT _ (TI happy_var_1)) ->
+ = case happyOutTok happy_x_1 of { (PT _ (TL happy_var_1)) ->
happyIn8
- ((read happy_var_1) :: Integer
+ (happy_var_1
)}
happyReduce_6 = happySpecReduce_1 2# happyReduction_6
happyReduction_6 happy_x_1
- = case happyOutTok happy_x_1 of { (PT _ (TL happy_var_1)) ->
+ = case happyOutTok happy_x_1 of { (PT _ (TD happy_var_1)) ->
happyIn9
- (happy_var_1
+ ((read happy_var_1) :: Double
)}
happyReduce_7 = happySpecReduce_1 3# happyReduction_7
happyReduction_7 happy_x_1
- = case happyOutTok happy_x_1 of { (PT _ (TD happy_var_1)) ->
+ = case happyOutTok happy_x_1 of { (PT _ (T_LString happy_var_1)) ->
happyIn10
- ((read happy_var_1) :: Double
+ (LString (happy_var_1)
)}
happyReduce_8 = happySpecReduce_1 4# happyReduction_8
happyReduction_8 happy_x_1
- = case happyOutTok happy_x_1 of { (PT _ (T_LString happy_var_1)) ->
+ = case happyOutTok happy_x_1 of { happy_var_1 ->
happyIn11
- (LString (happy_var_1)
+ (PIdent (mkPosToken happy_var_1)
)}
happyReduce_9 = happySpecReduce_1 5# happyReduction_9
@@ -888,8 +887,8 @@ happyReduction_13 (happy_x_10 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut7 happy_x_2 of { happy_var_2 ->
- case happyOut7 happy_x_7 of { happy_var_7 ->
+ = case happyOut11 happy_x_2 of { happy_var_2 ->
+ case happyOut11 happy_x_7 of { happy_var_7 ->
case happyOut16 happy_x_9 of { happy_var_9 ->
happyIn14
(MMain happy_var_2 happy_var_7 happy_var_9
@@ -912,7 +911,7 @@ happyReduce_15 = happySpecReduce_3 8# happyReduction_15
happyReduction_15 happy_x_3
happy_x_2
happy_x_1
- = case happyOut7 happy_x_1 of { happy_var_1 ->
+ = case happyOut11 happy_x_1 of { happy_var_1 ->
case happyOut17 happy_x_3 of { happy_var_3 ->
happyIn15
(ConcSpec happy_var_1 happy_var_3
@@ -943,7 +942,7 @@ happyReduction_18 happy_x_3
happyReduce_19 = happySpecReduce_2 10# happyReduction_19
happyReduction_19 happy_x_2
happy_x_1
- = case happyOut7 happy_x_1 of { happy_var_1 ->
+ = case happyOut11 happy_x_1 of { happy_var_1 ->
case happyOut18 happy_x_2 of { happy_var_2 ->
happyIn17
(ConcExp happy_var_1 (reverse happy_var_2)
@@ -990,7 +989,7 @@ happyReduction_23 (happy_x_5 `HappyStk`
happyReduce_24 = happySpecReduce_2 13# happyReduction_24
happyReduction_24 happy_x_2
happy_x_1
- = case happyOut7 happy_x_2 of { happy_var_2 ->
+ = case happyOut11 happy_x_2 of { happy_var_2 ->
happyIn20
(MTAbstract happy_var_2
)}
@@ -998,7 +997,7 @@ happyReduction_24 happy_x_2
happyReduce_25 = happySpecReduce_2 13# happyReduction_25
happyReduction_25 happy_x_2
happy_x_1
- = case happyOut7 happy_x_2 of { happy_var_2 ->
+ = case happyOut11 happy_x_2 of { happy_var_2 ->
happyIn20
(MTResource happy_var_2
)}
@@ -1006,7 +1005,7 @@ happyReduction_25 happy_x_2
happyReduce_26 = happySpecReduce_2 13# happyReduction_26
happyReduction_26 happy_x_2
happy_x_1
- = case happyOut7 happy_x_2 of { happy_var_2 ->
+ = case happyOut11 happy_x_2 of { happy_var_2 ->
happyIn20
(MTInterface happy_var_2
)}
@@ -1017,8 +1016,8 @@ happyReduction_27 (happy_x_4 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut7 happy_x_2 of { happy_var_2 ->
- case happyOut7 happy_x_4 of { happy_var_4 ->
+ = case happyOut11 happy_x_2 of { happy_var_2 ->
+ case happyOut11 happy_x_4 of { happy_var_4 ->
happyIn20
(MTConcrete happy_var_2 happy_var_4
) `HappyStk` happyRest}}
@@ -1029,8 +1028,8 @@ happyReduction_28 (happy_x_4 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut7 happy_x_2 of { happy_var_2 ->
- case happyOut7 happy_x_4 of { happy_var_4 ->
+ = case happyOut11 happy_x_2 of { happy_var_2 ->
+ case happyOut11 happy_x_4 of { happy_var_4 ->
happyIn20
(MTInstance happy_var_2 happy_var_4
) `HappyStk` happyRest}}
@@ -1043,7 +1042,7 @@ happyReduction_29 (happy_x_6 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut7 happy_x_2 of { happy_var_2 ->
+ = case happyOut11 happy_x_2 of { happy_var_2 ->
case happyOut26 happy_x_4 of { happy_var_4 ->
case happyOut26 happy_x_6 of { happy_var_6 ->
happyIn20
@@ -1137,7 +1136,7 @@ happyReduction_35 (happy_x_10 `HappyStk`
happyReduce_36 = happySpecReduce_2 14# happyReduction_36
happyReduction_36 happy_x_2
happy_x_1
- = case happyOut7 happy_x_2 of { happy_var_2 ->
+ = case happyOut11 happy_x_2 of { happy_var_2 ->
happyIn21
(MReuse happy_var_2
)}
@@ -1215,7 +1214,7 @@ happyReduction_46 happy_x_3
happyReduce_47 = happySpecReduce_1 19# happyReduction_47
happyReduction_47 happy_x_1
- = case happyOut7 happy_x_1 of { happy_var_1 ->
+ = case happyOut11 happy_x_1 of { happy_var_1 ->
happyIn26
(OName happy_var_1
)}
@@ -1227,7 +1226,7 @@ happyReduction_48 (happy_x_4 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
= case happyOut28 happy_x_2 of { happy_var_2 ->
- case happyOut7 happy_x_3 of { happy_var_3 ->
+ case happyOut11 happy_x_3 of { happy_var_3 ->
happyIn26
(OQualQO happy_var_2 happy_var_3
) `HappyStk` happyRest}}
@@ -1241,8 +1240,8 @@ happyReduction_49 (happy_x_6 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
= case happyOut28 happy_x_2 of { happy_var_2 ->
- case happyOut7 happy_x_3 of { happy_var_3 ->
- case happyOut7 happy_x_5 of { happy_var_5 ->
+ case happyOut11 happy_x_3 of { happy_var_3 ->
+ case happyOut11 happy_x_5 of { happy_var_5 ->
happyIn26
(OQual happy_var_2 happy_var_3 happy_var_5
) `HappyStk` happyRest}}}
@@ -1299,7 +1298,7 @@ happyReduction_57 happy_x_3
happyReduce_58 = happySpecReduce_1 23# happyReduction_58
happyReduction_58 happy_x_1
- = case happyOut7 happy_x_1 of { happy_var_1 ->
+ = case happyOut11 happy_x_1 of { happy_var_1 ->
happyIn30
(IAll happy_var_1
)}
@@ -1310,7 +1309,7 @@ happyReduction_59 (happy_x_4 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut7 happy_x_1 of { happy_var_1 ->
+ = case happyOut11 happy_x_1 of { happy_var_1 ->
case happyOut50 happy_x_3 of { happy_var_3 ->
happyIn30
(ISome happy_var_1 happy_var_3
@@ -1323,7 +1322,7 @@ happyReduction_60 (happy_x_5 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut7 happy_x_1 of { happy_var_1 ->
+ = case happyOut11 happy_x_1 of { happy_var_1 ->
case happyOut50 happy_x_4 of { happy_var_4 ->
happyIn30
(IMinus happy_var_1 happy_var_4
@@ -1523,7 +1522,7 @@ happyReduction_82 (happy_x_7 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut7 happy_x_2 of { happy_var_2 ->
+ = case happyOut11 happy_x_2 of { happy_var_2 ->
case happyOut22 happy_x_5 of { happy_var_5 ->
happyIn32
(DefPackage happy_var_2 (reverse happy_var_5)
@@ -1541,7 +1540,7 @@ happyReduce_84 = happySpecReduce_3 25# happyReduction_84
happyReduction_84 happy_x_3
happy_x_2
happy_x_1
- = case happyOut7 happy_x_2 of { happy_var_2 ->
+ = case happyOut11 happy_x_2 of { happy_var_2 ->
happyIn32
(DefTokenizer happy_var_2
)}
@@ -1549,7 +1548,7 @@ happyReduction_84 happy_x_3
happyReduce_85 = happySpecReduce_2 26# happyReduction_85
happyReduction_85 happy_x_2
happy_x_1
- = case happyOut7 happy_x_1 of { happy_var_1 ->
+ = case happyOut11 happy_x_1 of { happy_var_1 ->
case happyOut86 happy_x_2 of { happy_var_2 ->
happyIn33
(SimpleCatDef happy_var_1 (reverse happy_var_2)
@@ -1561,7 +1560,7 @@ happyReduction_86 (happy_x_4 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut7 happy_x_2 of { happy_var_2 ->
+ = case happyOut11 happy_x_2 of { happy_var_2 ->
case happyOut86 happy_x_3 of { happy_var_3 ->
happyIn33
(ListCatDef happy_var_2 (reverse happy_var_3)
@@ -1576,9 +1575,9 @@ happyReduction_87 (happy_x_7 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut7 happy_x_2 of { happy_var_2 ->
+ = case happyOut11 happy_x_2 of { happy_var_2 ->
case happyOut86 happy_x_3 of { happy_var_3 ->
- case happyOut8 happy_x_6 of { happy_var_6 ->
+ case happyOut7 happy_x_6 of { happy_var_6 ->
happyIn33
(ListSizeCatDef happy_var_2 (reverse happy_var_3) happy_var_6
) `HappyStk` happyRest}}}
@@ -1597,7 +1596,7 @@ happyReduce_89 = happySpecReduce_3 28# happyReduction_89
happyReduction_89 happy_x_3
happy_x_2
happy_x_1
- = case happyOut7 happy_x_1 of { happy_var_1 ->
+ = case happyOut11 happy_x_1 of { happy_var_1 ->
case happyOut37 happy_x_3 of { happy_var_3 ->
happyIn35
(DataDef happy_var_1 happy_var_3
@@ -1605,7 +1604,7 @@ happyReduction_89 happy_x_3
happyReduce_90 = happySpecReduce_1 29# happyReduction_90
happyReduction_90 happy_x_1
- = case happyOut7 happy_x_1 of { happy_var_1 ->
+ = case happyOut11 happy_x_1 of { happy_var_1 ->
happyIn36
(DataId happy_var_1
)}
@@ -1614,8 +1613,8 @@ happyReduce_91 = happySpecReduce_3 29# happyReduction_91
happyReduction_91 happy_x_3
happy_x_2
happy_x_1
- = case happyOut7 happy_x_1 of { happy_var_1 ->
- case happyOut7 happy_x_3 of { happy_var_3 ->
+ = case happyOut11 happy_x_1 of { happy_var_1 ->
+ case happyOut11 happy_x_3 of { happy_var_3 ->
happyIn36
(DataQId happy_var_1 happy_var_3
)}}
@@ -1646,7 +1645,7 @@ happyReduce_95 = happySpecReduce_3 31# happyReduction_95
happyReduction_95 happy_x_3
happy_x_2
happy_x_1
- = case happyOut7 happy_x_1 of { happy_var_1 ->
+ = case happyOut11 happy_x_1 of { happy_var_1 ->
case happyOut49 happy_x_3 of { happy_var_3 ->
happyIn38
(ParDefDir happy_var_1 happy_var_3
@@ -1660,15 +1659,15 @@ happyReduction_96 (happy_x_6 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut7 happy_x_1 of { happy_var_1 ->
- case happyOut7 happy_x_5 of { happy_var_5 ->
+ = case happyOut11 happy_x_1 of { happy_var_1 ->
+ case happyOut11 happy_x_5 of { happy_var_5 ->
happyIn38
(ParDefIndir happy_var_1 happy_var_5
) `HappyStk` happyRest}}
happyReduce_97 = happySpecReduce_1 31# happyReduction_97
happyReduction_97 happy_x_1
- = case happyOut7 happy_x_1 of { happy_var_1 ->
+ = case happyOut11 happy_x_1 of { happy_var_1 ->
happyIn38
(ParDefAbs happy_var_1
)}
@@ -1676,7 +1675,7 @@ happyReduction_97 happy_x_1
happyReduce_98 = happySpecReduce_2 32# happyReduction_98
happyReduction_98 happy_x_2
happy_x_1
- = case happyOut7 happy_x_1 of { happy_var_1 ->
+ = case happyOut11 happy_x_1 of { happy_var_1 ->
case happyOut86 happy_x_2 of { happy_var_2 ->
happyIn39
(ParConstr happy_var_1 (reverse happy_var_2)
@@ -1696,8 +1695,8 @@ happyReduce_100 = happySpecReduce_3 34# happyReduction_100
happyReduction_100 happy_x_3
happy_x_2
happy_x_1
- = case happyOut7 happy_x_1 of { happy_var_1 ->
- case happyOut7 happy_x_3 of { happy_var_3 ->
+ = case happyOut11 happy_x_1 of { happy_var_1 ->
+ case happyOut11 happy_x_3 of { happy_var_3 ->
happyIn41
(FlagDef happy_var_1 happy_var_3
)}}
@@ -1852,7 +1851,7 @@ happyReduction_117 happy_x_3
happyReduce_118 = happySpecReduce_1 43# happyReduction_118
happyReduction_118 happy_x_1
- = case happyOut7 happy_x_1 of { happy_var_1 ->
+ = case happyOut11 happy_x_1 of { happy_var_1 ->
happyIn50
((:[]) happy_var_1
)}
@@ -1861,7 +1860,7 @@ happyReduce_119 = happySpecReduce_3 43# happyReduction_119
happyReduction_119 happy_x_3
happy_x_2
happy_x_1
- = case happyOut7 happy_x_1 of { happy_var_1 ->
+ = case happyOut11 happy_x_1 of { happy_var_1 ->
case happyOut50 happy_x_3 of { happy_var_3 ->
happyIn50
((:) happy_var_1 happy_var_3
@@ -1869,7 +1868,7 @@ happyReduction_119 happy_x_3
happyReduce_120 = happySpecReduce_1 44# happyReduction_120
happyReduction_120 happy_x_1
- = case happyOut7 happy_x_1 of { happy_var_1 ->
+ = case happyOut11 happy_x_1 of { happy_var_1 ->
happyIn51
(IdentName happy_var_1
)}
@@ -1878,7 +1877,7 @@ happyReduce_121 = happySpecReduce_3 44# happyReduction_121
happyReduction_121 happy_x_3
happy_x_2
happy_x_1
- = case happyOut7 happy_x_2 of { happy_var_2 ->
+ = case happyOut11 happy_x_2 of { happy_var_2 ->
happyIn51
(ListName happy_var_2
)}
@@ -1958,7 +1957,7 @@ happyReduction_129 happy_x_3
happyReduce_130 = happySpecReduce_1 48# happyReduction_130
happyReduction_130 happy_x_1
- = case happyOut7 happy_x_1 of { happy_var_1 ->
+ = case happyOut11 happy_x_1 of { happy_var_1 ->
happyIn55
(EIdent happy_var_1
)}
@@ -1967,7 +1966,7 @@ happyReduce_131 = happySpecReduce_3 48# happyReduction_131
happyReduction_131 happy_x_3
happy_x_2
happy_x_1
- = case happyOut7 happy_x_2 of { happy_var_2 ->
+ = case happyOut11 happy_x_2 of { happy_var_2 ->
happyIn55
(EConstr happy_var_2
)}
@@ -1976,7 +1975,7 @@ happyReduce_132 = happySpecReduce_3 48# happyReduction_132
happyReduction_132 happy_x_3
happy_x_2
happy_x_1
- = case happyOut7 happy_x_2 of { happy_var_2 ->
+ = case happyOut11 happy_x_2 of { happy_var_2 ->
happyIn55
(ECons happy_var_2
)}
@@ -1990,21 +1989,21 @@ happyReduction_133 happy_x_1
happyReduce_134 = happySpecReduce_1 48# happyReduction_134
happyReduction_134 happy_x_1
- = case happyOut9 happy_x_1 of { happy_var_1 ->
+ = case happyOut8 happy_x_1 of { happy_var_1 ->
happyIn55
(EString happy_var_1
)}
happyReduce_135 = happySpecReduce_1 48# happyReduction_135
happyReduction_135 happy_x_1
- = case happyOut8 happy_x_1 of { happy_var_1 ->
+ = case happyOut7 happy_x_1 of { happy_var_1 ->
happyIn55
(EInt happy_var_1
)}
happyReduce_136 = happySpecReduce_1 48# happyReduction_136
happyReduction_136 happy_x_1
- = case happyOut10 happy_x_1 of { happy_var_1 ->
+ = case happyOut9 happy_x_1 of { happy_var_1 ->
happyIn55
(EFloat happy_var_1
)}
@@ -2034,7 +2033,7 @@ happyReduction_140 (happy_x_4 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut7 happy_x_2 of { happy_var_2 ->
+ = case happyOut11 happy_x_2 of { happy_var_2 ->
case happyOut63 happy_x_3 of { happy_var_3 ->
happyIn55
(EList happy_var_2 happy_var_3
@@ -2044,7 +2043,7 @@ happyReduce_141 = happySpecReduce_3 48# happyReduction_141
happyReduction_141 happy_x_3
happy_x_2
happy_x_1
- = case happyOut9 happy_x_2 of { happy_var_2 ->
+ = case happyOut8 happy_x_2 of { happy_var_2 ->
happyIn55
(EStrings happy_var_2
)}
@@ -2073,7 +2072,7 @@ happyReduction_144 (happy_x_4 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut7 happy_x_3 of { happy_var_3 ->
+ = case happyOut11 happy_x_3 of { happy_var_3 ->
happyIn55
(EIndir happy_var_3
) `HappyStk` happyRest}
@@ -2102,7 +2101,7 @@ happyReduction_146 happy_x_3
happyReduce_147 = happySpecReduce_1 48# happyReduction_147
happyReduction_147 happy_x_1
- = case happyOut11 happy_x_1 of { happy_var_1 ->
+ = case happyOut10 happy_x_1 of { happy_var_1 ->
happyIn55
(ELString happy_var_1
)}
@@ -2124,8 +2123,8 @@ happyReduction_149 (happy_x_5 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut7 happy_x_2 of { happy_var_2 ->
- case happyOut7 happy_x_4 of { happy_var_4 ->
+ = case happyOut11 happy_x_2 of { happy_var_2 ->
+ case happyOut11 happy_x_4 of { happy_var_4 ->
happyIn56
(EQConstr happy_var_2 happy_var_4
) `HappyStk` happyRest}}
@@ -2136,8 +2135,8 @@ happyReduction_150 (happy_x_4 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut7 happy_x_2 of { happy_var_2 ->
- case happyOut7 happy_x_4 of { happy_var_4 ->
+ = case happyOut11 happy_x_2 of { happy_var_2 ->
+ case happyOut11 happy_x_4 of { happy_var_4 ->
happyIn56
(EQCons happy_var_2 happy_var_4
) `HappyStk` happyRest}}
@@ -2249,29 +2248,46 @@ happyReduce_160 = happySpecReduce_3 50# happyReduction_160
happyReduction_160 happy_x_3
happy_x_2
happy_x_1
- = case happyOut7 happy_x_1 of { happy_var_1 ->
+ = case happyOut11 happy_x_1 of { happy_var_1 ->
case happyOut55 happy_x_3 of { happy_var_3 ->
happyIn57
(EConAt happy_var_1 happy_var_3
)}}
-happyReduce_161 = happySpecReduce_1 50# happyReduction_161
-happyReduction_161 happy_x_1
+happyReduce_161 = happySpecReduce_2 50# happyReduction_161
+happyReduction_161 happy_x_2
+ happy_x_1
+ = case happyOut64 happy_x_2 of { happy_var_2 ->
+ happyIn57
+ (EPatt happy_var_2
+ )}
+
+happyReduce_162 = happySpecReduce_3 50# happyReduction_162
+happyReduction_162 happy_x_3
+ happy_x_2
+ happy_x_1
+ = case happyOut56 happy_x_3 of { happy_var_3 ->
+ happyIn57
+ (EPattType happy_var_3
+ )}
+
+happyReduce_163 = happySpecReduce_1 50# happyReduction_163
+happyReduction_163 happy_x_1
= case happyOut56 happy_x_1 of { happy_var_1 ->
happyIn57
(happy_var_1
)}
-happyReduce_162 = happySpecReduce_2 50# happyReduction_162
-happyReduction_162 happy_x_2
+happyReduce_164 = happySpecReduce_2 50# happyReduction_164
+happyReduction_164 happy_x_2
happy_x_1
- = case happyOut7 happy_x_2 of { happy_var_2 ->
+ = case happyOut11 happy_x_2 of { happy_var_2 ->
happyIn57
(ELin happy_var_2
)}
-happyReduce_163 = happySpecReduce_3 51# happyReduction_163
-happyReduction_163 happy_x_3
+happyReduce_165 = happySpecReduce_3 51# happyReduction_165
+happyReduction_165 happy_x_3
happy_x_2
happy_x_1
= case happyOut58 happy_x_1 of { happy_var_1 ->
@@ -2280,8 +2296,8 @@ happyReduction_163 happy_x_3
(ESelect happy_var_1 happy_var_3
)}}
-happyReduce_164 = happySpecReduce_3 51# happyReduction_164
-happyReduction_164 happy_x_3
+happyReduce_166 = happySpecReduce_3 51# happyReduction_166
+happyReduction_166 happy_x_3
happy_x_2
happy_x_1
= case happyOut58 happy_x_1 of { happy_var_1 ->
@@ -2290,8 +2306,8 @@ happyReduction_164 happy_x_3
(ETupTyp happy_var_1 happy_var_3
)}}
-happyReduce_165 = happySpecReduce_3 51# happyReduction_165
-happyReduction_165 happy_x_3
+happyReduce_167 = happySpecReduce_3 51# happyReduction_167
+happyReduction_167 happy_x_3
happy_x_2
happy_x_1
= case happyOut58 happy_x_1 of { happy_var_1 ->
@@ -2300,15 +2316,15 @@ happyReduction_165 happy_x_3
(EExtend happy_var_1 happy_var_3
)}}
-happyReduce_166 = happySpecReduce_1 51# happyReduction_166
-happyReduction_166 happy_x_1
+happyReduce_168 = happySpecReduce_1 51# happyReduction_168
+happyReduction_168 happy_x_1
= case happyOut57 happy_x_1 of { happy_var_1 ->
happyIn58
(happy_var_1
)}
-happyReduce_167 = happySpecReduce_3 52# happyReduction_167
-happyReduction_167 happy_x_3
+happyReduce_169 = happySpecReduce_3 52# happyReduction_169
+happyReduction_169 happy_x_3
happy_x_2
happy_x_1
= case happyOut61 happy_x_1 of { happy_var_1 ->
@@ -2317,15 +2333,15 @@ happyReduction_167 happy_x_3
(EGlue happy_var_1 happy_var_3
)}}
-happyReduce_168 = happySpecReduce_1 52# happyReduction_168
-happyReduction_168 happy_x_1
+happyReduce_170 = happySpecReduce_1 52# happyReduction_170
+happyReduction_170 happy_x_1
= case happyOut61 happy_x_1 of { happy_var_1 ->
happyIn59
(happy_var_1
)}
-happyReduce_169 = happySpecReduce_3 53# happyReduction_169
-happyReduction_169 happy_x_3
+happyReduce_171 = happySpecReduce_3 53# happyReduction_171
+happyReduction_171 happy_x_3
happy_x_2
happy_x_1
= case happyOut59 happy_x_1 of { happy_var_1 ->
@@ -2334,8 +2350,8 @@ happyReduction_169 happy_x_3
(EConcat happy_var_1 happy_var_3
)}}
-happyReduce_170 = happyReduce 4# 53# happyReduction_170
-happyReduction_170 (happy_x_4 `HappyStk`
+happyReduce_172 = happyReduce 4# 53# happyReduction_172
+happyReduction_172 (happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
@@ -2346,8 +2362,8 @@ happyReduction_170 (happy_x_4 `HappyStk`
(EAbstr happy_var_2 happy_var_4
) `HappyStk` happyRest}}
-happyReduce_171 = happyReduce 5# 53# happyReduction_171
-happyReduction_171 (happy_x_5 `HappyStk`
+happyReduce_173 = happyReduce 5# 53# happyReduction_173
+happyReduction_173 (happy_x_5 `HappyStk`
happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
@@ -2359,8 +2375,8 @@ happyReduction_171 (happy_x_5 `HappyStk`
(ECTable happy_var_3 happy_var_5
) `HappyStk` happyRest}}
-happyReduce_172 = happySpecReduce_3 53# happyReduction_172
-happyReduction_172 happy_x_3
+happyReduce_174 = happySpecReduce_3 53# happyReduction_174
+happyReduction_174 happy_x_3
happy_x_2
happy_x_1
= case happyOut74 happy_x_1 of { happy_var_1 ->
@@ -2369,8 +2385,8 @@ happyReduction_172 happy_x_3
(EProd happy_var_1 happy_var_3
)}}
-happyReduce_173 = happySpecReduce_3 53# happyReduction_173
-happyReduction_173 happy_x_3
+happyReduce_175 = happySpecReduce_3 53# happyReduction_175
+happyReduction_175 happy_x_3
happy_x_2
happy_x_1
= case happyOut58 happy_x_1 of { happy_var_1 ->
@@ -2379,8 +2395,8 @@ happyReduction_173 happy_x_3
(ETType happy_var_1 happy_var_3
)}}
-happyReduce_174 = happyReduce 6# 53# happyReduction_174
-happyReduction_174 (happy_x_6 `HappyStk`
+happyReduce_176 = happyReduce 6# 53# happyReduction_176
+happyReduction_176 (happy_x_6 `HappyStk`
happy_x_5 `HappyStk`
happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
@@ -2393,8 +2409,8 @@ happyReduction_174 (happy_x_6 `HappyStk`
(ELet happy_var_3 happy_var_6
) `HappyStk` happyRest}}
-happyReduce_175 = happyReduce 4# 53# happyReduction_175
-happyReduction_175 (happy_x_4 `HappyStk`
+happyReduce_177 = happyReduce 4# 53# happyReduction_177
+happyReduction_177 (happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
@@ -2405,8 +2421,8 @@ happyReduction_175 (happy_x_4 `HappyStk`
(ELetb happy_var_2 happy_var_4
) `HappyStk` happyRest}}
-happyReduce_176 = happyReduce 5# 53# happyReduction_176
-happyReduction_176 (happy_x_5 `HappyStk`
+happyReduce_178 = happyReduce 5# 53# happyReduction_178
+happyReduction_178 (happy_x_5 `HappyStk`
happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
@@ -2418,8 +2434,8 @@ happyReduction_176 (happy_x_5 `HappyStk`
(EWhere happy_var_1 happy_var_4
) `HappyStk` happyRest}}
-happyReduce_177 = happyReduce 4# 53# happyReduction_177
-happyReduction_177 (happy_x_4 `HappyStk`
+happyReduce_179 = happyReduce 4# 53# happyReduction_179
+happyReduction_179 (happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
@@ -2429,44 +2445,44 @@ happyReduction_177 (happy_x_4 `HappyStk`
(EEqs happy_var_3
) `HappyStk` happyRest}
-happyReduce_178 = happySpecReduce_3 53# happyReduction_178
-happyReduction_178 happy_x_3
+happyReduce_180 = happySpecReduce_3 53# happyReduction_180
+happyReduction_180 happy_x_3
happy_x_2
happy_x_1
= case happyOut56 happy_x_2 of { happy_var_2 ->
- case happyOut9 happy_x_3 of { happy_var_3 ->
+ case happyOut8 happy_x_3 of { happy_var_3 ->
happyIn60
(EExample happy_var_2 happy_var_3
)}}
-happyReduce_179 = happySpecReduce_1 53# happyReduction_179
-happyReduction_179 happy_x_1
+happyReduce_181 = happySpecReduce_1 53# happyReduction_181
+happyReduction_181 happy_x_1
= case happyOut59 happy_x_1 of { happy_var_1 ->
happyIn60
(happy_var_1
)}
-happyReduce_180 = happySpecReduce_1 54# happyReduction_180
-happyReduction_180 happy_x_1
+happyReduce_182 = happySpecReduce_1 54# happyReduction_182
+happyReduction_182 happy_x_1
= case happyOut58 happy_x_1 of { happy_var_1 ->
happyIn61
(happy_var_1
)}
-happyReduce_181 = happySpecReduce_0 55# happyReduction_181
-happyReduction_181 = happyIn62
+happyReduce_183 = happySpecReduce_0 55# happyReduction_183
+happyReduction_183 = happyIn62
([]
)
-happyReduce_182 = happySpecReduce_1 55# happyReduction_182
-happyReduction_182 happy_x_1
+happyReduce_184 = happySpecReduce_1 55# happyReduction_184
+happyReduction_184 happy_x_1
= case happyOut60 happy_x_1 of { happy_var_1 ->
happyIn62
((:[]) happy_var_1
)}
-happyReduce_183 = happySpecReduce_3 55# happyReduction_183
-happyReduction_183 happy_x_3
+happyReduce_185 = happySpecReduce_3 55# happyReduction_185
+happyReduction_185 happy_x_3
happy_x_2
happy_x_1
= case happyOut60 happy_x_1 of { happy_var_1 ->
@@ -2475,13 +2491,13 @@ happyReduction_183 happy_x_3
((:) happy_var_1 happy_var_3
)}}
-happyReduce_184 = happySpecReduce_0 56# happyReduction_184
-happyReduction_184 = happyIn63
+happyReduce_186 = happySpecReduce_0 56# happyReduction_186
+happyReduction_186 = happyIn63
(NilExp
)
-happyReduce_185 = happySpecReduce_2 56# happyReduction_185
-happyReduction_185 happy_x_2
+happyReduce_187 = happySpecReduce_2 56# happyReduction_187
+happyReduction_187 happy_x_2
happy_x_1
= case happyOut55 happy_x_1 of { happy_var_1 ->
case happyOut63 happy_x_2 of { happy_var_2 ->
@@ -2489,61 +2505,96 @@ happyReduction_185 happy_x_2
(ConsExp happy_var_1 happy_var_2
)}}
-happyReduce_186 = happySpecReduce_1 57# happyReduction_186
-happyReduction_186 happy_x_1
+happyReduce_188 = happySpecReduce_1 57# happyReduction_188
+happyReduction_188 happy_x_1
+ = happyIn64
+ (PChar
+ )
+
+happyReduce_189 = happySpecReduce_3 57# happyReduction_189
+happyReduction_189 happy_x_3
+ happy_x_2
+ happy_x_1
+ = case happyOut8 happy_x_2 of { happy_var_2 ->
+ happyIn64
+ (PChars happy_var_2
+ )}
+
+happyReduce_190 = happySpecReduce_2 57# happyReduction_190
+happyReduction_190 happy_x_2
+ happy_x_1
+ = case happyOut11 happy_x_2 of { happy_var_2 ->
+ happyIn64
+ (PMacro happy_var_2
+ )}
+
+happyReduce_191 = happyReduce 4# 57# happyReduction_191
+happyReduction_191 (happy_x_4 `HappyStk`
+ happy_x_3 `HappyStk`
+ happy_x_2 `HappyStk`
+ happy_x_1 `HappyStk`
+ happyRest)
+ = case happyOut11 happy_x_2 of { happy_var_2 ->
+ case happyOut11 happy_x_4 of { happy_var_4 ->
+ happyIn64
+ (PM happy_var_2 happy_var_4
+ ) `HappyStk` happyRest}}
+
+happyReduce_192 = happySpecReduce_1 57# happyReduction_192
+happyReduction_192 happy_x_1
= happyIn64
(PW
)
-happyReduce_187 = happySpecReduce_1 57# happyReduction_187
-happyReduction_187 happy_x_1
- = case happyOut7 happy_x_1 of { happy_var_1 ->
+happyReduce_193 = happySpecReduce_1 57# happyReduction_193
+happyReduction_193 happy_x_1
+ = case happyOut11 happy_x_1 of { happy_var_1 ->
happyIn64
(PV happy_var_1
)}
-happyReduce_188 = happySpecReduce_3 57# happyReduction_188
-happyReduction_188 happy_x_3
+happyReduce_194 = happySpecReduce_3 57# happyReduction_194
+happyReduction_194 happy_x_3
happy_x_2
happy_x_1
- = case happyOut7 happy_x_2 of { happy_var_2 ->
+ = case happyOut11 happy_x_2 of { happy_var_2 ->
happyIn64
(PCon happy_var_2
)}
-happyReduce_189 = happySpecReduce_3 57# happyReduction_189
-happyReduction_189 happy_x_3
+happyReduce_195 = happySpecReduce_3 57# happyReduction_195
+happyReduction_195 happy_x_3
happy_x_2
happy_x_1
- = case happyOut7 happy_x_1 of { happy_var_1 ->
- case happyOut7 happy_x_3 of { happy_var_3 ->
+ = case happyOut11 happy_x_1 of { happy_var_1 ->
+ case happyOut11 happy_x_3 of { happy_var_3 ->
happyIn64
(PQ happy_var_1 happy_var_3
)}}
-happyReduce_190 = happySpecReduce_1 57# happyReduction_190
-happyReduction_190 happy_x_1
- = case happyOut8 happy_x_1 of { happy_var_1 ->
+happyReduce_196 = happySpecReduce_1 57# happyReduction_196
+happyReduction_196 happy_x_1
+ = case happyOut7 happy_x_1 of { happy_var_1 ->
happyIn64
(PInt happy_var_1
)}
-happyReduce_191 = happySpecReduce_1 57# happyReduction_191
-happyReduction_191 happy_x_1
- = case happyOut10 happy_x_1 of { happy_var_1 ->
+happyReduce_197 = happySpecReduce_1 57# happyReduction_197
+happyReduction_197 happy_x_1
+ = case happyOut9 happy_x_1 of { happy_var_1 ->
happyIn64
(PFloat happy_var_1
)}
-happyReduce_192 = happySpecReduce_1 57# happyReduction_192
-happyReduction_192 happy_x_1
- = case happyOut9 happy_x_1 of { happy_var_1 ->
+happyReduce_198 = happySpecReduce_1 57# happyReduction_198
+happyReduction_198 happy_x_1
+ = case happyOut8 happy_x_1 of { happy_var_1 ->
happyIn64
(PStr happy_var_1
)}
-happyReduce_193 = happySpecReduce_3 57# happyReduction_193
-happyReduction_193 happy_x_3
+happyReduce_199 = happySpecReduce_3 57# happyReduction_199
+happyReduction_199 happy_x_3
happy_x_2
happy_x_1
= case happyOut70 happy_x_2 of { happy_var_2 ->
@@ -2551,8 +2602,8 @@ happyReduction_193 happy_x_3
(PR happy_var_2
)}
-happyReduce_194 = happySpecReduce_3 57# happyReduction_194
-happyReduction_194 happy_x_3
+happyReduce_200 = happySpecReduce_3 57# happyReduction_200
+happyReduction_200 happy_x_3
happy_x_2
happy_x_1
= case happyOut78 happy_x_2 of { happy_var_2 ->
@@ -2560,8 +2611,8 @@ happyReduction_194 happy_x_3
(PTup happy_var_2
)}
-happyReduce_195 = happySpecReduce_3 57# happyReduction_195
-happyReduction_195 happy_x_3
+happyReduce_201 = happySpecReduce_3 57# happyReduction_201
+happyReduction_201 happy_x_3
happy_x_2
happy_x_1
= case happyOut66 happy_x_2 of { happy_var_2 ->
@@ -2569,63 +2620,63 @@ happyReduction_195 happy_x_3
(happy_var_2
)}
-happyReduce_196 = happySpecReduce_2 58# happyReduction_196
-happyReduction_196 happy_x_2
+happyReduce_202 = happySpecReduce_2 58# happyReduction_202
+happyReduction_202 happy_x_2
happy_x_1
- = case happyOut7 happy_x_1 of { happy_var_1 ->
+ = case happyOut11 happy_x_1 of { happy_var_1 ->
case happyOut71 happy_x_2 of { happy_var_2 ->
happyIn65
(PC happy_var_1 happy_var_2
)}}
-happyReduce_197 = happyReduce 4# 58# happyReduction_197
-happyReduction_197 (happy_x_4 `HappyStk`
+happyReduce_203 = happyReduce 4# 58# happyReduction_203
+happyReduction_203 (happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut7 happy_x_1 of { happy_var_1 ->
- case happyOut7 happy_x_3 of { happy_var_3 ->
+ = case happyOut11 happy_x_1 of { happy_var_1 ->
+ case happyOut11 happy_x_3 of { happy_var_3 ->
case happyOut71 happy_x_4 of { happy_var_4 ->
happyIn65
(PQC happy_var_1 happy_var_3 happy_var_4
) `HappyStk` happyRest}}}
-happyReduce_198 = happySpecReduce_2 58# happyReduction_198
-happyReduction_198 happy_x_2
+happyReduce_204 = happySpecReduce_2 58# happyReduction_204
+happyReduction_204 happy_x_2
happy_x_1
= case happyOut64 happy_x_1 of { happy_var_1 ->
happyIn65
(PRep happy_var_1
)}
-happyReduce_199 = happySpecReduce_3 58# happyReduction_199
-happyReduction_199 happy_x_3
+happyReduce_205 = happySpecReduce_3 58# happyReduction_205
+happyReduction_205 happy_x_3
happy_x_2
happy_x_1
- = case happyOut7 happy_x_1 of { happy_var_1 ->
+ = case happyOut11 happy_x_1 of { happy_var_1 ->
case happyOut64 happy_x_3 of { happy_var_3 ->
happyIn65
(PAs happy_var_1 happy_var_3
)}}
-happyReduce_200 = happySpecReduce_2 58# happyReduction_200
-happyReduction_200 happy_x_2
+happyReduce_206 = happySpecReduce_2 58# happyReduction_206
+happyReduction_206 happy_x_2
happy_x_1
= case happyOut64 happy_x_2 of { happy_var_2 ->
happyIn65
(PNeg happy_var_2
)}
-happyReduce_201 = happySpecReduce_1 58# happyReduction_201
-happyReduction_201 happy_x_1
+happyReduce_207 = happySpecReduce_1 58# happyReduction_207
+happyReduction_207 happy_x_1
= case happyOut64 happy_x_1 of { happy_var_1 ->
happyIn65
(happy_var_1
)}
-happyReduce_202 = happySpecReduce_3 59# happyReduction_202
-happyReduction_202 happy_x_3
+happyReduce_208 = happySpecReduce_3 59# happyReduction_208
+happyReduction_208 happy_x_3
happy_x_2
happy_x_1
= case happyOut66 happy_x_1 of { happy_var_1 ->
@@ -2634,8 +2685,8 @@ happyReduction_202 happy_x_3
(PDisj happy_var_1 happy_var_3
)}}
-happyReduce_203 = happySpecReduce_3 59# happyReduction_203
-happyReduction_203 happy_x_3
+happyReduce_209 = happySpecReduce_3 59# happyReduction_209
+happyReduction_209 happy_x_3
happy_x_2
happy_x_1
= case happyOut66 happy_x_1 of { happy_var_1 ->
@@ -2644,15 +2695,15 @@ happyReduction_203 happy_x_3
(PSeq happy_var_1 happy_var_3
)}}
-happyReduce_204 = happySpecReduce_1 59# happyReduction_204
-happyReduction_204 happy_x_1
+happyReduce_210 = happySpecReduce_1 59# happyReduction_210
+happyReduction_210 happy_x_1
= case happyOut65 happy_x_1 of { happy_var_1 ->
happyIn66
(happy_var_1
)}
-happyReduce_205 = happySpecReduce_3 60# happyReduction_205
-happyReduction_205 happy_x_3
+happyReduce_211 = happySpecReduce_3 60# happyReduction_211
+happyReduction_211 happy_x_3
happy_x_2
happy_x_1
= case happyOut50 happy_x_1 of { happy_var_1 ->
@@ -2661,65 +2712,65 @@ happyReduction_205 happy_x_3
(PA happy_var_1 happy_var_3
)}}
-happyReduce_206 = happySpecReduce_1 61# happyReduction_206
-happyReduction_206 happy_x_1
- = case happyOut7 happy_x_1 of { happy_var_1 ->
+happyReduce_212 = happySpecReduce_1 61# happyReduction_212
+happyReduction_212 happy_x_1
+ = case happyOut11 happy_x_1 of { happy_var_1 ->
happyIn68
(LIdent happy_var_1
)}
-happyReduce_207 = happySpecReduce_2 61# happyReduction_207
-happyReduction_207 happy_x_2
+happyReduce_213 = happySpecReduce_2 61# happyReduction_213
+happyReduction_213 happy_x_2
happy_x_1
- = case happyOut8 happy_x_2 of { happy_var_2 ->
+ = case happyOut7 happy_x_2 of { happy_var_2 ->
happyIn68
(LVar happy_var_2
)}
-happyReduce_208 = happySpecReduce_1 62# happyReduction_208
-happyReduction_208 happy_x_1
+happyReduce_214 = happySpecReduce_1 62# happyReduction_214
+happyReduction_214 happy_x_1
= happyIn69
(Sort_Type
)
-happyReduce_209 = happySpecReduce_1 62# happyReduction_209
-happyReduction_209 happy_x_1
+happyReduce_215 = happySpecReduce_1 62# happyReduction_215
+happyReduction_215 happy_x_1
= happyIn69
(Sort_PType
)
-happyReduce_210 = happySpecReduce_1 62# happyReduction_210
-happyReduction_210 happy_x_1
+happyReduce_216 = happySpecReduce_1 62# happyReduction_216
+happyReduction_216 happy_x_1
= happyIn69
(Sort_Tok
)
-happyReduce_211 = happySpecReduce_1 62# happyReduction_211
-happyReduction_211 happy_x_1
+happyReduce_217 = happySpecReduce_1 62# happyReduction_217
+happyReduction_217 happy_x_1
= happyIn69
(Sort_Str
)
-happyReduce_212 = happySpecReduce_1 62# happyReduction_212
-happyReduction_212 happy_x_1
+happyReduce_218 = happySpecReduce_1 62# happyReduction_218
+happyReduction_218 happy_x_1
= happyIn69
(Sort_Strs
)
-happyReduce_213 = happySpecReduce_0 63# happyReduction_213
-happyReduction_213 = happyIn70
+happyReduce_219 = happySpecReduce_0 63# happyReduction_219
+happyReduction_219 = happyIn70
([]
)
-happyReduce_214 = happySpecReduce_1 63# happyReduction_214
-happyReduction_214 happy_x_1
+happyReduce_220 = happySpecReduce_1 63# happyReduction_220
+happyReduction_220 happy_x_1
= case happyOut67 happy_x_1 of { happy_var_1 ->
happyIn70
((:[]) happy_var_1
)}
-happyReduce_215 = happySpecReduce_3 63# happyReduction_215
-happyReduction_215 happy_x_3
+happyReduce_221 = happySpecReduce_3 63# happyReduction_221
+happyReduction_221 happy_x_3
happy_x_2
happy_x_1
= case happyOut67 happy_x_1 of { happy_var_1 ->
@@ -2728,15 +2779,15 @@ happyReduction_215 happy_x_3
((:) happy_var_1 happy_var_3
)}}
-happyReduce_216 = happySpecReduce_1 64# happyReduction_216
-happyReduction_216 happy_x_1
+happyReduce_222 = happySpecReduce_1 64# happyReduction_222
+happyReduction_222 happy_x_1
= case happyOut64 happy_x_1 of { happy_var_1 ->
happyIn71
((:[]) happy_var_1
)}
-happyReduce_217 = happySpecReduce_2 64# happyReduction_217
-happyReduction_217 happy_x_2
+happyReduce_223 = happySpecReduce_2 64# happyReduction_223
+happyReduction_223 happy_x_2
happy_x_1
= case happyOut64 happy_x_1 of { happy_var_1 ->
case happyOut71 happy_x_2 of { happy_var_2 ->
@@ -2744,33 +2795,33 @@ happyReduction_217 happy_x_2
((:) happy_var_1 happy_var_2
)}}
-happyReduce_218 = happySpecReduce_1 65# happyReduction_218
-happyReduction_218 happy_x_1
- = case happyOut7 happy_x_1 of { happy_var_1 ->
+happyReduce_224 = happySpecReduce_1 65# happyReduction_224
+happyReduction_224 happy_x_1
+ = case happyOut11 happy_x_1 of { happy_var_1 ->
happyIn72
(BIdent happy_var_1
)}
-happyReduce_219 = happySpecReduce_1 65# happyReduction_219
-happyReduction_219 happy_x_1
+happyReduce_225 = happySpecReduce_1 65# happyReduction_225
+happyReduction_225 happy_x_1
= happyIn72
(BWild
)
-happyReduce_220 = happySpecReduce_0 66# happyReduction_220
-happyReduction_220 = happyIn73
+happyReduce_226 = happySpecReduce_0 66# happyReduction_226
+happyReduction_226 = happyIn73
([]
)
-happyReduce_221 = happySpecReduce_1 66# happyReduction_221
-happyReduction_221 happy_x_1
+happyReduce_227 = happySpecReduce_1 66# happyReduction_227
+happyReduction_227 happy_x_1
= case happyOut72 happy_x_1 of { happy_var_1 ->
happyIn73
((:[]) happy_var_1
)}
-happyReduce_222 = happySpecReduce_3 66# happyReduction_222
-happyReduction_222 happy_x_3
+happyReduce_228 = happySpecReduce_3 66# happyReduction_228
+happyReduction_228 happy_x_3
happy_x_2
happy_x_1
= case happyOut72 happy_x_1 of { happy_var_1 ->
@@ -2779,8 +2830,8 @@ happyReduction_222 happy_x_3
((:) happy_var_1 happy_var_3
)}}
-happyReduce_223 = happyReduce 5# 67# happyReduction_223
-happyReduction_223 (happy_x_5 `HappyStk`
+happyReduce_229 = happyReduce 5# 67# happyReduction_229
+happyReduction_229 (happy_x_5 `HappyStk`
happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
@@ -2792,41 +2843,41 @@ happyReduction_223 (happy_x_5 `HappyStk`
(DDec happy_var_2 happy_var_4
) `HappyStk` happyRest}}
-happyReduce_224 = happySpecReduce_1 67# happyReduction_224
-happyReduction_224 happy_x_1
+happyReduce_230 = happySpecReduce_1 67# happyReduction_230
+happyReduction_230 happy_x_1
= case happyOut57 happy_x_1 of { happy_var_1 ->
happyIn74
(DExp happy_var_1
)}
-happyReduce_225 = happySpecReduce_1 68# happyReduction_225
-happyReduction_225 happy_x_1
+happyReduce_231 = happySpecReduce_1 68# happyReduction_231
+happyReduction_231 happy_x_1
= case happyOut60 happy_x_1 of { happy_var_1 ->
happyIn75
(TComp happy_var_1
)}
-happyReduce_226 = happySpecReduce_1 69# happyReduction_226
-happyReduction_226 happy_x_1
+happyReduce_232 = happySpecReduce_1 69# happyReduction_232
+happyReduction_232 happy_x_1
= case happyOut66 happy_x_1 of { happy_var_1 ->
happyIn76
(PTComp happy_var_1
)}
-happyReduce_227 = happySpecReduce_0 70# happyReduction_227
-happyReduction_227 = happyIn77
+happyReduce_233 = happySpecReduce_0 70# happyReduction_233
+happyReduction_233 = happyIn77
([]
)
-happyReduce_228 = happySpecReduce_1 70# happyReduction_228
-happyReduction_228 happy_x_1
+happyReduce_234 = happySpecReduce_1 70# happyReduction_234
+happyReduction_234 happy_x_1
= case happyOut75 happy_x_1 of { happy_var_1 ->
happyIn77
((:[]) happy_var_1
)}
-happyReduce_229 = happySpecReduce_3 70# happyReduction_229
-happyReduction_229 happy_x_3
+happyReduce_235 = happySpecReduce_3 70# happyReduction_235
+happyReduction_235 happy_x_3
happy_x_2
happy_x_1
= case happyOut75 happy_x_1 of { happy_var_1 ->
@@ -2835,20 +2886,20 @@ happyReduction_229 happy_x_3
((:) happy_var_1 happy_var_3
)}}
-happyReduce_230 = happySpecReduce_0 71# happyReduction_230
-happyReduction_230 = happyIn78
+happyReduce_236 = happySpecReduce_0 71# happyReduction_236
+happyReduction_236 = happyIn78
([]
)
-happyReduce_231 = happySpecReduce_1 71# happyReduction_231
-happyReduction_231 happy_x_1
+happyReduce_237 = happySpecReduce_1 71# happyReduction_237
+happyReduction_237 happy_x_1
= case happyOut76 happy_x_1 of { happy_var_1 ->
happyIn78
((:[]) happy_var_1
)}
-happyReduce_232 = happySpecReduce_3 71# happyReduction_232
-happyReduction_232 happy_x_3
+happyReduce_238 = happySpecReduce_3 71# happyReduction_238
+happyReduction_238 happy_x_3
happy_x_2
happy_x_1
= case happyOut76 happy_x_1 of { happy_var_1 ->
@@ -2857,8 +2908,8 @@ happyReduction_232 happy_x_3
((:) happy_var_1 happy_var_3
)}}
-happyReduce_233 = happySpecReduce_3 72# happyReduction_233
-happyReduction_233 happy_x_3
+happyReduce_239 = happySpecReduce_3 72# happyReduction_239
+happyReduction_239 happy_x_3
happy_x_2
happy_x_1
= case happyOut66 happy_x_1 of { happy_var_1 ->
@@ -2867,15 +2918,15 @@ happyReduction_233 happy_x_3
(Case happy_var_1 happy_var_3
)}}
-happyReduce_234 = happySpecReduce_1 73# happyReduction_234
-happyReduction_234 happy_x_1
+happyReduce_240 = happySpecReduce_1 73# happyReduction_240
+happyReduction_240 happy_x_1
= case happyOut79 happy_x_1 of { happy_var_1 ->
happyIn80
((:[]) happy_var_1
)}
-happyReduce_235 = happySpecReduce_3 73# happyReduction_235
-happyReduction_235 happy_x_3
+happyReduce_241 = happySpecReduce_3 73# happyReduction_241
+happyReduction_241 happy_x_3
happy_x_2
happy_x_1
= case happyOut79 happy_x_1 of { happy_var_1 ->
@@ -2884,8 +2935,8 @@ happyReduction_235 happy_x_3
((:) happy_var_1 happy_var_3
)}}
-happyReduce_236 = happySpecReduce_3 74# happyReduction_236
-happyReduction_236 happy_x_3
+happyReduce_242 = happySpecReduce_3 74# happyReduction_242
+happyReduction_242 happy_x_3
happy_x_2
happy_x_1
= case happyOut71 happy_x_1 of { happy_var_1 ->
@@ -2894,20 +2945,20 @@ happyReduction_236 happy_x_3
(Equ happy_var_1 happy_var_3
)}}
-happyReduce_237 = happySpecReduce_0 75# happyReduction_237
-happyReduction_237 = happyIn82
+happyReduce_243 = happySpecReduce_0 75# happyReduction_243
+happyReduction_243 = happyIn82
([]
)
-happyReduce_238 = happySpecReduce_1 75# happyReduction_238
-happyReduction_238 happy_x_1
+happyReduce_244 = happySpecReduce_1 75# happyReduction_244
+happyReduction_244 happy_x_1
= case happyOut81 happy_x_1 of { happy_var_1 ->
happyIn82
((:[]) happy_var_1
)}
-happyReduce_239 = happySpecReduce_3 75# happyReduction_239
-happyReduction_239 happy_x_3
+happyReduce_245 = happySpecReduce_3 75# happyReduction_245
+happyReduction_245 happy_x_3
happy_x_2
happy_x_1
= case happyOut81 happy_x_1 of { happy_var_1 ->
@@ -2916,8 +2967,8 @@ happyReduction_239 happy_x_3
((:) happy_var_1 happy_var_3
)}}
-happyReduce_240 = happySpecReduce_3 76# happyReduction_240
-happyReduction_240 happy_x_3
+happyReduce_246 = happySpecReduce_3 76# happyReduction_246
+happyReduction_246 happy_x_3
happy_x_2
happy_x_1
= case happyOut60 happy_x_1 of { happy_var_1 ->
@@ -2926,20 +2977,20 @@ happyReduction_240 happy_x_3
(Alt happy_var_1 happy_var_3
)}}
-happyReduce_241 = happySpecReduce_0 77# happyReduction_241
-happyReduction_241 = happyIn84
+happyReduce_247 = happySpecReduce_0 77# happyReduction_247
+happyReduction_247 = happyIn84
([]
)
-happyReduce_242 = happySpecReduce_1 77# happyReduction_242
-happyReduction_242 happy_x_1
+happyReduce_248 = happySpecReduce_1 77# happyReduction_248
+happyReduction_248 happy_x_1
= case happyOut83 happy_x_1 of { happy_var_1 ->
happyIn84
((:[]) happy_var_1
)}
-happyReduce_243 = happySpecReduce_3 77# happyReduction_243
-happyReduction_243 happy_x_3
+happyReduce_249 = happySpecReduce_3 77# happyReduction_249
+happyReduction_249 happy_x_3
happy_x_2
happy_x_1
= case happyOut83 happy_x_1 of { happy_var_1 ->
@@ -2948,8 +2999,8 @@ happyReduction_243 happy_x_3
((:) happy_var_1 happy_var_3
)}}
-happyReduce_244 = happyReduce 5# 78# happyReduction_244
-happyReduction_244 (happy_x_5 `HappyStk`
+happyReduce_250 = happyReduce 5# 78# happyReduction_250
+happyReduction_250 (happy_x_5 `HappyStk`
happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
@@ -2961,20 +3012,20 @@ happyReduction_244 (happy_x_5 `HappyStk`
(DDDec happy_var_2 happy_var_4
) `HappyStk` happyRest}}
-happyReduce_245 = happySpecReduce_1 78# happyReduction_245
-happyReduction_245 happy_x_1
+happyReduce_251 = happySpecReduce_1 78# happyReduction_251
+happyReduction_251 happy_x_1
= case happyOut55 happy_x_1 of { happy_var_1 ->
happyIn85
(DDExp happy_var_1
)}
-happyReduce_246 = happySpecReduce_0 79# happyReduction_246
-happyReduction_246 = happyIn86
+happyReduce_252 = happySpecReduce_0 79# happyReduction_252
+happyReduction_252 = happyIn86
([]
)
-happyReduce_247 = happySpecReduce_2 79# happyReduction_247
-happyReduction_247 happy_x_2
+happyReduce_253 = happySpecReduce_2 79# happyReduction_253
+happyReduction_253 happy_x_2
happy_x_1
= case happyOut86 happy_x_1 of { happy_var_1 ->
case happyOut85 happy_x_2 of { happy_var_2 ->
@@ -2982,8 +3033,8 @@ happyReduction_247 happy_x_2
(flip (:) happy_var_1 happy_var_2
)}}
-happyReduce_248 = happySpecReduce_2 80# happyReduction_248
-happyReduction_248 happy_x_2
+happyReduce_254 = happySpecReduce_2 80# happyReduction_254
+happyReduction_254 happy_x_2
happy_x_1
= case happyOut88 happy_x_1 of { happy_var_1 ->
case happyOut22 happy_x_2 of { happy_var_2 ->
@@ -2991,76 +3042,76 @@ happyReduction_248 happy_x_2
(OldGr happy_var_1 (reverse happy_var_2)
)}}
-happyReduce_249 = happySpecReduce_0 81# happyReduction_249
-happyReduction_249 = happyIn88
+happyReduce_255 = happySpecReduce_0 81# happyReduction_255
+happyReduction_255 = happyIn88
(NoIncl
)
-happyReduce_250 = happySpecReduce_2 81# happyReduction_250
-happyReduction_250 happy_x_2
+happyReduce_256 = happySpecReduce_2 81# happyReduction_256
+happyReduction_256 happy_x_2
happy_x_1
= case happyOut90 happy_x_2 of { happy_var_2 ->
happyIn88
(Incl happy_var_2
)}
-happyReduce_251 = happySpecReduce_1 82# happyReduction_251
-happyReduction_251 happy_x_1
- = case happyOut9 happy_x_1 of { happy_var_1 ->
+happyReduce_257 = happySpecReduce_1 82# happyReduction_257
+happyReduction_257 happy_x_1
+ = case happyOut8 happy_x_1 of { happy_var_1 ->
happyIn89
(FString happy_var_1
)}
-happyReduce_252 = happySpecReduce_1 82# happyReduction_252
-happyReduction_252 happy_x_1
- = case happyOut7 happy_x_1 of { happy_var_1 ->
+happyReduce_258 = happySpecReduce_1 82# happyReduction_258
+happyReduction_258 happy_x_1
+ = case happyOut11 happy_x_1 of { happy_var_1 ->
happyIn89
(FIdent happy_var_1
)}
-happyReduce_253 = happySpecReduce_2 82# happyReduction_253
-happyReduction_253 happy_x_2
+happyReduce_259 = happySpecReduce_2 82# happyReduction_259
+happyReduction_259 happy_x_2
happy_x_1
= case happyOut89 happy_x_2 of { happy_var_2 ->
happyIn89
(FSlash happy_var_2
)}
-happyReduce_254 = happySpecReduce_2 82# happyReduction_254
-happyReduction_254 happy_x_2
+happyReduce_260 = happySpecReduce_2 82# happyReduction_260
+happyReduction_260 happy_x_2
happy_x_1
= case happyOut89 happy_x_2 of { happy_var_2 ->
happyIn89
(FDot happy_var_2
)}
-happyReduce_255 = happySpecReduce_2 82# happyReduction_255
-happyReduction_255 happy_x_2
+happyReduce_261 = happySpecReduce_2 82# happyReduction_261
+happyReduction_261 happy_x_2
happy_x_1
= case happyOut89 happy_x_2 of { happy_var_2 ->
happyIn89
(FMinus happy_var_2
)}
-happyReduce_256 = happySpecReduce_2 82# happyReduction_256
-happyReduction_256 happy_x_2
+happyReduce_262 = happySpecReduce_2 82# happyReduction_262
+happyReduction_262 happy_x_2
happy_x_1
- = case happyOut7 happy_x_1 of { happy_var_1 ->
+ = case happyOut11 happy_x_1 of { happy_var_1 ->
case happyOut89 happy_x_2 of { happy_var_2 ->
happyIn89
(FAddId happy_var_1 happy_var_2
)}}
-happyReduce_257 = happySpecReduce_2 83# happyReduction_257
-happyReduction_257 happy_x_2
+happyReduce_263 = happySpecReduce_2 83# happyReduction_263
+happyReduction_263 happy_x_2
happy_x_1
= case happyOut89 happy_x_1 of { happy_var_1 ->
happyIn90
((:[]) happy_var_1
)}
-happyReduce_258 = happySpecReduce_3 83# happyReduction_258
-happyReduction_258 happy_x_3
+happyReduce_264 = happySpecReduce_3 83# happyReduction_264
+happyReduction_264 happy_x_3
happy_x_2
happy_x_1
= case happyOut89 happy_x_1 of { happy_var_1 ->
@@ -3070,7 +3121,7 @@ happyReduction_258 happy_x_3
)}}
happyNewToken action sts stk [] =
- happyDoAction 82# notHappyAtAll action sts stk []
+ happyDoAction 84# notHappyAtAll action sts stk []
happyNewToken action sts stk (tk:tks) =
let cont i = happyDoAction i tk action sts stk tks in
@@ -3101,61 +3152,63 @@ happyNewToken action sts stk (tk:tks) =
PT _ (TS "++") -> cont 24#;
PT _ (TS "\\") -> cont 25#;
PT _ (TS "=>") -> cont 26#;
- PT _ (TS "_") -> cont 27#;
- PT _ (TS "$") -> cont 28#;
- PT _ (TS "/") -> cont 29#;
- PT _ (TS "Lin") -> cont 30#;
- PT _ (TS "PType") -> cont 31#;
- PT _ (TS "Str") -> cont 32#;
- PT _ (TS "Strs") -> cont 33#;
- PT _ (TS "Tok") -> cont 34#;
- PT _ (TS "Type") -> cont 35#;
- PT _ (TS "abstract") -> cont 36#;
- PT _ (TS "case") -> cont 37#;
- PT _ (TS "cat") -> cont 38#;
- PT _ (TS "concrete") -> cont 39#;
- PT _ (TS "data") -> cont 40#;
- PT _ (TS "def") -> cont 41#;
- PT _ (TS "flags") -> cont 42#;
- PT _ (TS "fn") -> cont 43#;
- PT _ (TS "fun") -> cont 44#;
- PT _ (TS "grammar") -> cont 45#;
- PT _ (TS "in") -> cont 46#;
- PT _ (TS "include") -> cont 47#;
- PT _ (TS "incomplete") -> cont 48#;
- PT _ (TS "instance") -> cont 49#;
- PT _ (TS "interface") -> cont 50#;
- PT _ (TS "let") -> cont 51#;
- PT _ (TS "lin") -> cont 52#;
- PT _ (TS "lincat") -> cont 53#;
- PT _ (TS "lindef") -> cont 54#;
- PT _ (TS "lintype") -> cont 55#;
- PT _ (TS "of") -> cont 56#;
- PT _ (TS "open") -> cont 57#;
- PT _ (TS "oper") -> cont 58#;
- PT _ (TS "out") -> cont 59#;
- PT _ (TS "package") -> cont 60#;
- PT _ (TS "param") -> cont 61#;
- PT _ (TS "pattern") -> cont 62#;
- PT _ (TS "pre") -> cont 63#;
- PT _ (TS "printname") -> cont 64#;
- PT _ (TS "resource") -> cont 65#;
- PT _ (TS "reuse") -> cont 66#;
- PT _ (TS "strs") -> cont 67#;
- PT _ (TS "table") -> cont 68#;
- PT _ (TS "tokenizer") -> cont 69#;
- PT _ (TS "transfer") -> cont 70#;
- PT _ (TS "union") -> cont 71#;
- PT _ (TS "var") -> cont 72#;
- PT _ (TS "variants") -> cont 73#;
- PT _ (TS "where") -> cont 74#;
- PT _ (TS "with") -> cont 75#;
- PT _ (TV happy_dollar_dollar) -> cont 76#;
- PT _ (TI happy_dollar_dollar) -> cont 77#;
- PT _ (TL happy_dollar_dollar) -> cont 78#;
- PT _ (TD happy_dollar_dollar) -> cont 79#;
- PT _ (T_LString happy_dollar_dollar) -> cont 80#;
- _ -> cont 81#;
+ PT _ (TS "#") -> cont 27#;
+ PT _ (TS "_") -> cont 28#;
+ PT _ (TS "$") -> cont 29#;
+ PT _ (TS "/") -> cont 30#;
+ PT _ (TS "Lin") -> cont 31#;
+ PT _ (TS "PType") -> cont 32#;
+ PT _ (TS "Str") -> cont 33#;
+ PT _ (TS "Strs") -> cont 34#;
+ PT _ (TS "Tok") -> cont 35#;
+ PT _ (TS "Type") -> cont 36#;
+ PT _ (TS "abstract") -> cont 37#;
+ PT _ (TS "case") -> cont 38#;
+ PT _ (TS "cat") -> cont 39#;
+ PT _ (TS "concrete") -> cont 40#;
+ PT _ (TS "data") -> cont 41#;
+ PT _ (TS "def") -> cont 42#;
+ PT _ (TS "flags") -> cont 43#;
+ PT _ (TS "fn") -> cont 44#;
+ PT _ (TS "fun") -> cont 45#;
+ PT _ (TS "grammar") -> cont 46#;
+ PT _ (TS "in") -> cont 47#;
+ PT _ (TS "include") -> cont 48#;
+ PT _ (TS "incomplete") -> cont 49#;
+ PT _ (TS "instance") -> cont 50#;
+ PT _ (TS "interface") -> cont 51#;
+ PT _ (TS "let") -> cont 52#;
+ PT _ (TS "lin") -> cont 53#;
+ PT _ (TS "lincat") -> cont 54#;
+ PT _ (TS "lindef") -> cont 55#;
+ PT _ (TS "lintype") -> cont 56#;
+ PT _ (TS "of") -> cont 57#;
+ PT _ (TS "open") -> cont 58#;
+ PT _ (TS "oper") -> cont 59#;
+ PT _ (TS "out") -> cont 60#;
+ PT _ (TS "package") -> cont 61#;
+ PT _ (TS "param") -> cont 62#;
+ PT _ (TS "pattern") -> cont 63#;
+ PT _ (TS "pre") -> cont 64#;
+ PT _ (TS "printname") -> cont 65#;
+ PT _ (TS "resource") -> cont 66#;
+ PT _ (TS "reuse") -> cont 67#;
+ PT _ (TS "strs") -> cont 68#;
+ PT _ (TS "table") -> cont 69#;
+ PT _ (TS "tokenizer") -> cont 70#;
+ PT _ (TS "transfer") -> cont 71#;
+ PT _ (TS "type") -> cont 72#;
+ PT _ (TS "union") -> cont 73#;
+ PT _ (TS "var") -> cont 74#;
+ PT _ (TS "variants") -> cont 75#;
+ PT _ (TS "where") -> cont 76#;
+ PT _ (TS "with") -> cont 77#;
+ PT _ (TI happy_dollar_dollar) -> cont 78#;
+ PT _ (TL happy_dollar_dollar) -> cont 79#;
+ PT _ (TD happy_dollar_dollar) -> cont 80#;
+ PT _ (T_LString happy_dollar_dollar) -> cont 81#;
+ PT _ (T_PIdent _) -> cont 82#;
+ _ -> cont 83#;
_ -> happyError' (tk:tks)
}
@@ -3201,14 +3254,13 @@ happyError ts =
_ -> " before " ++ unwords (map prToken (take 4 ts))
myLexer = tokens
-{-# LINE 1 "templates/GenericTemplate.hs" #-}
-{-# LINE 1 "templates/GenericTemplate.hs" #-}
+{-# LINE 1 "GenericTemplate.hs" #-}
{-# LINE 1 "<built-in>" #-}
{-# LINE 1 "<command line>" #-}
-{-# LINE 1 "templates/GenericTemplate.hs" #-}
+{-# LINE 1 "GenericTemplate.hs" #-}
-- Id: GenericTemplate.hs,v 1.26 2005/01/14 14:47:22 simonmar Exp
-{-# LINE 28 "templates/GenericTemplate.hs" #-}
+{-# LINE 28 "GenericTemplate.hs" #-}
data Happy_IntList = HappyCons Int# Happy_IntList
@@ -3217,11 +3269,11 @@ data Happy_IntList = HappyCons Int# Happy_IntList
-{-# LINE 49 "templates/GenericTemplate.hs" #-}
+{-# LINE 49 "GenericTemplate.hs" #-}
-{-# LINE 59 "templates/GenericTemplate.hs" #-}
+{-# LINE 59 "GenericTemplate.hs" #-}
-{-# LINE 68 "templates/GenericTemplate.hs" #-}
+{-# LINE 68 "GenericTemplate.hs" #-}
infixr 9 `HappyStk`
data HappyStk a = HappyStk a (HappyStk a)
@@ -3273,7 +3325,7 @@ happyDoAction i tk st
action | check = indexShortOffAddr happyTable off_i
| otherwise = indexShortOffAddr happyDefActions st
-{-# LINE 127 "templates/GenericTemplate.hs" #-}
+{-# LINE 127 "GenericTemplate.hs" #-}
indexShortOffAddr (HappyA# arr) off =
@@ -3306,7 +3358,7 @@ data HappyAddr = HappyA# Addr#
-----------------------------------------------------------------------------
-- HappyState data type (not arrays)
-{-# LINE 170 "templates/GenericTemplate.hs" #-}
+{-# LINE 170 "GenericTemplate.hs" #-}
-----------------------------------------------------------------------------
-- Shifting a token
diff --git a/src/GF/Source/PrintGF.hs b/src/GF/Source/PrintGF.hs
index ed45d39c4..54a582c38 100644
--- a/src/GF/Source/PrintGF.hs
+++ b/src/GF/Source/PrintGF.hs
@@ -1,10 +1,10 @@
-module GF.Source.PrintGF where --H
+{-# OPTIONS -fno-warn-incomplete-patterns #-}
+module GF.Source.PrintGF where
--- pretty-printer generated by the BNF converter, except --H
+-- pretty-printer generated by the BNF converter
-import GF.Infra.Ident --H
-import GF.Source.AbsGF --H
-import Data.Char --H
+import GF.Source.AbsGF
+import Char
-- the top-level printing method
printTree :: Print a => a -> String
@@ -18,12 +18,6 @@ doc = (:)
render :: Doc -> String
render d = rend 0 (map ($ "") $ d []) "" where
rend i ss = case ss of
- --H these four are hand-written
- "{0" :ts -> showChar '{' . rend (i+1) ts
- t :"}0" :ts -> showString t . space "}" . rend (i-1) ts
- t : "." :ts -> showString t . showString "." . rend i ts
- "\\" :ts -> showString "\\" . rend i ts
-
"[" :ts -> showChar '[' . rend i ts
"(" :ts -> showChar '(' . rend i ts
"{" :ts -> showChar '{' . new (i+1) . rend (i+1) ts
@@ -83,17 +77,18 @@ instance Print Double where
prt _ x = doc (shows x)
-instance Print Ident where
- prt _ i = doc (showString $ prIdent i) --H
- prtList es = case es of
- [x] -> (concatD [prt 0 x])
- x:xs -> (concatD [prt 0 x , doc (showString ",") , prt 0 xs])
-
instance Print LString where
prt _ (LString i) = doc (showString i)
+instance Print PIdent where
+ prt _ (PIdent (_,i)) = doc (showString i)
+ prtList es = case es of
+ [x] -> (concatD [prt 0 x])
+ x:xs -> (concatD [prt 0 x , doc (showString ",") , prt 0 xs])
+
+
instance Print Grammar where
prt i e = case e of
@@ -102,7 +97,7 @@ instance Print Grammar where
instance Print ModDef where
prt i e = case e of
- MMain id0 id concspecs -> prPrec i 0 (concatD [doc (showString "grammar") , prt 0 id0 , doc (showString "=") , doc (showString "{") , doc (showString "abstract") , doc (showString "=") , prt 0 id , doc (showString ";") , prt 0 concspecs , doc (showString "}")])
+ MMain pident0 pident concspecs -> prPrec i 0 (concatD [doc (showString "grammar") , prt 0 pident0 , doc (showString "=") , doc (showString "{") , doc (showString "abstract") , doc (showString "=") , prt 0 pident , doc (showString ";") , prt 0 concspecs , doc (showString "}")])
MModule complmod modtype modbody -> prPrec i 0 (concatD [prt 0 complmod , prt 0 modtype , doc (showString "=") , prt 0 modbody])
prtList es = case es of
@@ -111,7 +106,7 @@ instance Print ModDef where
instance Print ConcSpec where
prt i e = case e of
- ConcSpec id concexp -> prPrec i 0 (concatD [prt 0 id , doc (showString "=") , prt 0 concexp])
+ ConcSpec pident concexp -> prPrec i 0 (concatD [prt 0 pident , doc (showString "=") , prt 0 concexp])
prtList es = case es of
[] -> (concatD [])
@@ -120,7 +115,7 @@ instance Print ConcSpec where
instance Print ConcExp where
prt i e = case e of
- ConcExp id transfers -> prPrec i 0 (concatD [prt 0 id , prt 0 transfers])
+ ConcExp pident transfers -> prPrec i 0 (concatD [prt 0 pident , prt 0 transfers])
instance Print Transfer where
@@ -134,25 +129,26 @@ instance Print Transfer where
instance Print ModType where
prt i e = case e of
- MTAbstract id -> prPrec i 0 (concatD [doc (showString "abstract") , prt 0 id])
- MTResource id -> prPrec i 0 (concatD [doc (showString "resource") , prt 0 id])
- MTInterface id -> prPrec i 0 (concatD [doc (showString "interface") , prt 0 id])
- MTConcrete id0 id -> prPrec i 0 (concatD [doc (showString "concrete") , prt 0 id0 , doc (showString "of") , prt 0 id])
- MTInstance id0 id -> prPrec i 0 (concatD [doc (showString "instance") , prt 0 id0 , doc (showString "of") , prt 0 id])
- MTTransfer id open0 open -> prPrec i 0 (concatD [doc (showString "transfer") , prt 0 id , doc (showString ":") , prt 0 open0 , doc (showString "->") , prt 0 open])
+ MTAbstract pident -> prPrec i 0 (concatD [doc (showString "abstract") , prt 0 pident])
+ MTResource pident -> prPrec i 0 (concatD [doc (showString "resource") , prt 0 pident])
+ MTInterface pident -> prPrec i 0 (concatD [doc (showString "interface") , prt 0 pident])
+ MTConcrete pident0 pident -> prPrec i 0 (concatD [doc (showString "concrete") , prt 0 pident0 , doc (showString "of") , prt 0 pident])
+ MTInstance pident0 pident -> prPrec i 0 (concatD [doc (showString "instance") , prt 0 pident0 , doc (showString "of") , prt 0 pident])
+ MTTransfer pident open0 open -> prPrec i 0 (concatD [doc (showString "transfer") , prt 0 pident , doc (showString ":") , prt 0 open0 , doc (showString "->") , prt 0 open])
instance Print ModBody where
prt i e = case e of
- MNoBody includeds -> prPrec i 0 (concatD [prt 0 includeds])
- MWithBody included opens0 opens topdefs -> prPrec i 0 (concatD [prt 0 included , doc (showString "with") , prt 0 opens0 , doc (showString "**") , prt 0 opens , doc (showString "{") , prt 0 topdefs , doc (showString "}")])
- MWithEBody includeds included opens0 opens topdefs -> prPrec i 0 (concatD [prt 0 includeds , doc (showString "**") , prt 0 included , doc (showString "with") , prt 0 opens0 , doc (showString "**") , prt 0 opens , doc (showString "{") , prt 0 topdefs , doc (showString "}")])
MBody extend opens topdefs -> prPrec i 0 (concatD [prt 0 extend , prt 0 opens , doc (showString "{") , prt 0 topdefs , doc (showString "}")])
+ MNoBody includeds -> prPrec i 0 (concatD [prt 0 includeds])
MWith included opens -> prPrec i 0 (concatD [prt 0 included , doc (showString "with") , prt 0 opens])
+ MWithBody included opens0 opens topdefs -> prPrec i 0 (concatD [prt 0 included , doc (showString "with") , prt 0 opens0 , doc (showString "**") , prt 0 opens , doc (showString "{") , prt 0 topdefs , doc (showString "}")])
MWithE includeds included opens -> prPrec i 0 (concatD [prt 0 includeds , doc (showString "**") , prt 0 included , doc (showString "with") , prt 0 opens])
- MReuse id -> prPrec i 0 (concatD [doc (showString "reuse") , prt 0 id])
+ MWithEBody includeds included opens0 opens topdefs -> prPrec i 0 (concatD [prt 0 includeds , doc (showString "**") , prt 0 included , doc (showString "with") , prt 0 opens0 , doc (showString "**") , prt 0 opens , doc (showString "{") , prt 0 topdefs , doc (showString "}")])
+ MReuse pident -> prPrec i 0 (concatD [doc (showString "reuse") , prt 0 pident])
MUnion includeds -> prPrec i 0 (concatD [doc (showString "union") , prt 0 includeds])
+
instance Print Extend where
prt i e = case e of
Ext includeds -> prPrec i 0 (concatD [prt 0 includeds , doc (showString "**")])
@@ -167,9 +163,9 @@ instance Print Opens where
instance Print Open where
prt i e = case e of
- OName id -> prPrec i 0 (concatD [prt 0 id])
- OQualQO qualopen id -> prPrec i 0 (concatD [doc (showString "(") , prt 0 qualopen , prt 0 id , doc (showString ")")])
- OQual qualopen id0 id -> prPrec i 0 (concatD [doc (showString "(") , prt 0 qualopen , prt 0 id0 , doc (showString "=") , prt 0 id , doc (showString ")")])
+ OName pident -> prPrec i 0 (concatD [prt 0 pident])
+ OQualQO qualopen pident -> prPrec i 0 (concatD [doc (showString "(") , prt 0 qualopen , prt 0 pident , doc (showString ")")])
+ OQual qualopen pident0 pident -> prPrec i 0 (concatD [doc (showString "(") , prt 0 qualopen , prt 0 pident0 , doc (showString "=") , prt 0 pident , doc (showString ")")])
prtList es = case es of
[] -> (concatD [])
@@ -191,9 +187,9 @@ instance Print QualOpen where
instance Print Included where
prt i e = case e of
- IAll id -> prPrec i 0 (concatD [prt 0 id])
- ISome id ids -> prPrec i 0 (concatD [prt 0 id , doc (showString "[") , prt 0 ids , doc (showString "]")])
- IMinus id ids -> prPrec i 0 (concatD [prt 0 id , doc (showString "-") , doc (showString "[") , prt 0 ids , doc (showString "]")])
+ IAll pident -> prPrec i 0 (concatD [prt 0 pident])
+ ISome pident pidents -> prPrec i 0 (concatD [prt 0 pident , doc (showString "[") , prt 0 pidents , doc (showString "]")])
+ IMinus pident pidents -> prPrec i 0 (concatD [prt 0 pident , doc (showString "-") , doc (showString "[") , prt 0 pidents , doc (showString "]")])
prtList es = case es of
[] -> (concatD [])
@@ -230,9 +226,9 @@ instance Print TopDef where
DefPrintOld printdefs -> prPrec i 0 (concatD [doc (showString "printname") , prt 0 printdefs])
DefLintype defs -> prPrec i 0 (concatD [doc (showString "lintype") , prt 0 defs])
DefPattern defs -> prPrec i 0 (concatD [doc (showString "pattern") , prt 0 defs])
- DefPackage id topdefs -> prPrec i 0 (concatD [doc (showString "package") , prt 0 id , doc (showString "=") , doc (showString "{") , prt 0 topdefs , doc (showString "}") , doc (showString ";")])
+ DefPackage pident topdefs -> prPrec i 0 (concatD [doc (showString "package") , prt 0 pident , doc (showString "=") , doc (showString "{") , prt 0 topdefs , doc (showString "}") , doc (showString ";")])
DefVars defs -> prPrec i 0 (concatD [doc (showString "var") , prt 0 defs])
- DefTokenizer id -> prPrec i 0 (concatD [doc (showString "tokenizer") , prt 0 id , doc (showString ";")])
+ DefTokenizer pident -> prPrec i 0 (concatD [doc (showString "tokenizer") , prt 0 pident , doc (showString ";")])
prtList es = case es of
[] -> (concatD [])
@@ -240,9 +236,9 @@ instance Print TopDef where
instance Print CatDef where
prt i e = case e of
- SimpleCatDef id ddecls -> prPrec i 0 (concatD [prt 0 id , prt 0 ddecls])
- ListCatDef id ddecls -> prPrec i 0 (concatD [doc (showString "[") , prt 0 id , prt 0 ddecls , doc (showString "]")])
- ListSizeCatDef id ddecls n -> prPrec i 0 (concatD [doc (showString "[") , prt 0 id , prt 0 ddecls , doc (showString "]") , doc (showString "{") , prt 0 n , doc (showString "}")])
+ SimpleCatDef pident ddecls -> prPrec i 0 (concatD [prt 0 pident , prt 0 ddecls])
+ ListCatDef pident ddecls -> prPrec i 0 (concatD [doc (showString "[") , prt 0 pident , prt 0 ddecls , doc (showString "]")])
+ ListSizeCatDef pident ddecls n -> prPrec i 0 (concatD [doc (showString "[") , prt 0 pident , prt 0 ddecls , doc (showString "]") , doc (showString "{") , prt 0 n , doc (showString "}")])
prtList es = case es of
[x] -> (concatD [prt 0 x , doc (showString ";")])
@@ -250,7 +246,7 @@ instance Print CatDef where
instance Print FunDef where
prt i e = case e of
- FunDef ids exp -> prPrec i 0 (concatD [prt 0 ids , doc (showString ":") , prt 0 exp])
+ FunDef pidents exp -> prPrec i 0 (concatD [prt 0 pidents , doc (showString ":") , prt 0 exp])
prtList es = case es of
[x] -> (concatD [prt 0 x , doc (showString ";")])
@@ -258,7 +254,7 @@ instance Print FunDef where
instance Print DataDef where
prt i e = case e of
- DataDef id dataconstrs -> prPrec i 0 (concatD [prt 0 id , doc (showString "=") , prt 0 dataconstrs])
+ DataDef pident dataconstrs -> prPrec i 0 (concatD [prt 0 pident , doc (showString "=") , prt 0 dataconstrs])
prtList es = case es of
[x] -> (concatD [prt 0 x , doc (showString ";")])
@@ -266,8 +262,8 @@ instance Print DataDef where
instance Print DataConstr where
prt i e = case e of
- DataId id -> prPrec i 0 (concatD [prt 0 id])
- DataQId id0 id -> prPrec i 0 (concatD [prt 0 id0 , doc (showString ".") , prt 0 id])
+ DataId pident -> prPrec i 0 (concatD [prt 0 pident])
+ DataQId pident0 pident -> prPrec i 0 (concatD [prt 0 pident0 , doc (showString ".") , prt 0 pident])
prtList es = case es of
[] -> (concatD [])
@@ -276,9 +272,9 @@ instance Print DataConstr where
instance Print ParDef where
prt i e = case e of
- ParDefDir id parconstrs -> prPrec i 0 (concatD [prt 0 id , doc (showString "=") , prt 0 parconstrs])
- ParDefIndir id0 id -> prPrec i 0 (concatD [prt 0 id0 , doc (showString "=") , doc (showString "(") , doc (showString "in") , prt 0 id , doc (showString ")")])
- ParDefAbs id -> prPrec i 0 (concatD [prt 0 id])
+ ParDefDir pident parconstrs -> prPrec i 0 (concatD [prt 0 pident , doc (showString "=") , prt 0 parconstrs])
+ ParDefIndir pident0 pident -> prPrec i 0 (concatD [prt 0 pident0 , doc (showString "=") , doc (showString "(") , doc (showString "in") , prt 0 pident , doc (showString ")")])
+ ParDefAbs pident -> prPrec i 0 (concatD [prt 0 pident])
prtList es = case es of
[x] -> (concatD [prt 0 x , doc (showString ";")])
@@ -286,7 +282,7 @@ instance Print ParDef where
instance Print ParConstr where
prt i e = case e of
- ParConstr id ddecls -> prPrec i 0 (concatD [prt 0 id , prt 0 ddecls])
+ ParConstr pident ddecls -> prPrec i 0 (concatD [prt 0 pident , prt 0 ddecls])
prtList es = case es of
[] -> (concatD [])
@@ -303,7 +299,7 @@ instance Print PrintDef where
instance Print FlagDef where
prt i e = case e of
- FlagDef id0 id -> prPrec i 0 (concatD [prt 0 id0 , doc (showString "=") , prt 0 id])
+ FlagDef pident0 pident -> prPrec i 0 (concatD [prt 0 pident0 , doc (showString "=") , prt 0 pident])
prtList es = case es of
[x] -> (concatD [prt 0 x , doc (showString ";")])
@@ -311,8 +307,8 @@ instance Print FlagDef where
instance Print Name where
prt i e = case e of
- IdentName id -> prPrec i 0 (concatD [prt 0 id])
- ListName id -> prPrec i 0 (concatD [doc (showString "[") , prt 0 id , doc (showString "]")])
+ IdentName pident -> prPrec i 0 (concatD [prt 0 pident])
+ ListName pident -> prPrec i 0 (concatD [doc (showString "[") , prt 0 pident , doc (showString "]")])
prtList es = case es of
[x] -> (concatD [prt 0 x])
@@ -320,9 +316,9 @@ instance Print Name where
instance Print LocDef where
prt i e = case e of
- LDDecl ids exp -> prPrec i 0 (concatD [prt 0 ids , doc (showString ":") , prt 0 exp])
- LDDef ids exp -> prPrec i 0 (concatD [prt 0 ids , doc (showString "=") , prt 0 exp])
- LDFull ids exp0 exp -> prPrec i 0 (concatD [prt 0 ids , doc (showString ":") , prt 0 exp0 , doc (showString "=") , prt 0 exp])
+ LDDecl pidents exp -> prPrec i 0 (concatD [prt 0 pidents , doc (showString ":") , prt 0 exp])
+ LDDef pidents exp -> prPrec i 0 (concatD [prt 0 pidents , doc (showString "=") , prt 0 exp])
+ LDFull pidents exp0 exp -> prPrec i 0 (concatD [prt 0 pidents , doc (showString ":") , prt 0 exp0 , doc (showString "=") , prt 0 exp])
prtList es = case es of
[] -> (concatD [])
@@ -331,9 +327,9 @@ instance Print LocDef where
instance Print Exp where
prt i e = case e of
- EIdent id -> prPrec i 6 (concatD [prt 0 id])
- EConstr id -> prPrec i 6 (concatD [doc (showString "{0") , prt 0 id , doc (showString "}0")]) --H
- ECons id -> prPrec i 6 (concatD [doc (showString "%") , prt 0 id , doc (showString "%")])
+ EIdent pident -> prPrec i 6 (concatD [prt 0 pident])
+ EConstr pident -> prPrec i 6 (concatD [doc (showString "{") , prt 0 pident , doc (showString "}")])
+ ECons pident -> prPrec i 6 (concatD [doc (showString "%") , prt 0 pident , doc (showString "%")])
ESort sort -> prPrec i 6 (concatD [prt 0 sort])
EString str -> prPrec i 6 (concatD [prt 0 str])
EInt n -> prPrec i 6 (concatD [prt 0 n])
@@ -341,15 +337,15 @@ instance Print Exp where
EMeta -> prPrec i 6 (concatD [doc (showString "?")])
EEmpty -> prPrec i 6 (concatD [doc (showString "[") , doc (showString "]")])
EData -> prPrec i 6 (concatD [doc (showString "data")])
- EList id exps -> prPrec i 6 (concatD [doc (showString "[") , prt 0 id , prt 0 exps , doc (showString "]")])
+ EList pident exps -> prPrec i 6 (concatD [doc (showString "[") , prt 0 pident , prt 0 exps , doc (showString "]")])
EStrings str -> prPrec i 6 (concatD [doc (showString "[") , prt 0 str , doc (showString "]")])
ERecord locdefs -> prPrec i 6 (concatD [doc (showString "{") , prt 0 locdefs , doc (showString "}")])
ETuple tuplecomps -> prPrec i 6 (concatD [doc (showString "<") , prt 0 tuplecomps , doc (showString ">")])
- EIndir id -> prPrec i 6 (concatD [doc (showString "(") , doc (showString "in") , prt 0 id , doc (showString ")")])
+ EIndir pident -> prPrec i 6 (concatD [doc (showString "(") , doc (showString "in") , prt 0 pident , doc (showString ")")])
ETyped exp0 exp -> prPrec i 6 (concatD [doc (showString "<") , prt 0 exp0 , doc (showString ":") , prt 0 exp , doc (showString ">")])
EProj exp label -> prPrec i 5 (concatD [prt 5 exp , doc (showString ".") , prt 0 label])
- EQConstr id0 id -> prPrec i 5 (concatD [doc (showString "{0") , prt 0 id0 , doc (showString ".") , prt 0 id , doc (showString "}0")]) --H
- EQCons id0 id -> prPrec i 5 (concatD [doc (showString "%") , prt 0 id0 , doc (showString ".") , prt 0 id])
+ EQConstr pident0 pident -> prPrec i 5 (concatD [doc (showString "{") , prt 0 pident0 , doc (showString ".") , prt 0 pident , doc (showString "}")])
+ EQCons pident0 pident -> prPrec i 5 (concatD [doc (showString "%") , prt 0 pident0 , doc (showString ".") , prt 0 pident])
EApp exp0 exp -> prPrec i 4 (concatD [prt 4 exp0 , prt 5 exp])
ETable cases -> prPrec i 4 (concatD [doc (showString "table") , doc (showString "{") , prt 0 cases , doc (showString "}")])
ETTable exp cases -> prPrec i 4 (concatD [doc (showString "table") , prt 6 exp , doc (showString "{") , prt 0 cases , doc (showString "}")])
@@ -358,7 +354,9 @@ instance Print Exp where
EVariants exps -> prPrec i 4 (concatD [doc (showString "variants") , doc (showString "{") , prt 0 exps , doc (showString "}")])
EPre exp alterns -> prPrec i 4 (concatD [doc (showString "pre") , doc (showString "{") , prt 0 exp , doc (showString ";") , prt 0 alterns , doc (showString "}")])
EStrs exps -> prPrec i 4 (concatD [doc (showString "strs") , doc (showString "{") , prt 0 exps , doc (showString "}")])
- EConAt id exp -> prPrec i 4 (concatD [prt 0 id , doc (showString "@") , prt 6 exp])
+ EConAt pident exp -> prPrec i 4 (concatD [prt 0 pident , doc (showString "@") , prt 6 exp])
+ EPatt patt -> prPrec i 4 (concatD [doc (showString "pattern") , prt 2 patt])
+ EPattType exp -> prPrec i 4 (concatD [doc (showString "pattern") , doc (showString "type") , prt 5 exp])
ESelect exp0 exp -> prPrec i 3 (concatD [prt 3 exp0 , doc (showString "!") , prt 4 exp])
ETupTyp exp0 exp -> prPrec i 3 (concatD [prt 3 exp0 , doc (showString "*") , prt 4 exp])
EExtend exp0 exp -> prPrec i 3 (concatD [prt 3 exp0 , doc (showString "**") , prt 4 exp])
@@ -374,7 +372,7 @@ instance Print Exp where
EEqs equations -> prPrec i 0 (concatD [doc (showString "fn") , doc (showString "{") , prt 0 equations , doc (showString "}")])
EExample exp str -> prPrec i 0 (concatD [doc (showString "in") , prt 5 exp , prt 0 str])
ELString lstring -> prPrec i 6 (concatD [prt 0 lstring])
- ELin id -> prPrec i 4 (concatD [doc (showString "Lin") , prt 0 id])
+ ELin pident -> prPrec i 4 (concatD [doc (showString "Lin") , prt 0 pident])
prtList es = case es of
[] -> (concatD [])
@@ -389,21 +387,25 @@ instance Print Exps where
instance Print Patt where
prt i e = case e of
+ PChar -> prPrec i 2 (concatD [doc (showString "?")])
+ PChars str -> prPrec i 2 (concatD [doc (showString "[") , prt 0 str , doc (showString "]")])
+ PMacro pident -> prPrec i 2 (concatD [doc (showString "#") , prt 0 pident])
+ PM pident0 pident -> prPrec i 2 (concatD [doc (showString "#") , prt 0 pident0 , doc (showString ".") , prt 0 pident])
PW -> prPrec i 2 (concatD [doc (showString "_")])
- PV id -> prPrec i 2 (concatD [prt 0 id])
- PCon id -> prPrec i 2 (concatD [doc (showString "{0") , prt 0 id , doc (showString "}0")]) --H
- PQ id0 id -> prPrec i 2 (concatD [prt 0 id0 , doc (showString ".") , prt 0 id])
+ PV pident -> prPrec i 2 (concatD [prt 0 pident])
+ PCon pident -> prPrec i 2 (concatD [doc (showString "{") , prt 0 pident , doc (showString "}")])
+ PQ pident0 pident -> prPrec i 2 (concatD [prt 0 pident0 , doc (showString ".") , prt 0 pident])
PInt n -> prPrec i 2 (concatD [prt 0 n])
PFloat d -> prPrec i 2 (concatD [prt 0 d])
PStr str -> prPrec i 2 (concatD [prt 0 str])
PR pattasss -> prPrec i 2 (concatD [doc (showString "{") , prt 0 pattasss , doc (showString "}")])
PTup patttuplecomps -> prPrec i 2 (concatD [doc (showString "<") , prt 0 patttuplecomps , doc (showString ">")])
- PC id patts -> prPrec i 1 (concatD [prt 0 id , prt 0 patts])
- PQC id0 id patts -> prPrec i 1 (concatD [prt 0 id0 , doc (showString ".") , prt 0 id , prt 0 patts])
+ PC pident patts -> prPrec i 1 (concatD [prt 0 pident , prt 0 patts])
+ PQC pident0 pident patts -> prPrec i 1 (concatD [prt 0 pident0 , doc (showString ".") , prt 0 pident , prt 0 patts])
PDisj patt0 patt -> prPrec i 0 (concatD [prt 0 patt0 , doc (showString "|") , prt 1 patt])
PSeq patt0 patt -> prPrec i 0 (concatD [prt 0 patt0 , doc (showString "+") , prt 1 patt])
PRep patt -> prPrec i 1 (concatD [prt 2 patt , doc (showString "*")])
- PAs id patt -> prPrec i 1 (concatD [prt 0 id , doc (showString "@") , prt 2 patt])
+ PAs pident patt -> prPrec i 1 (concatD [prt 0 pident , doc (showString "@") , prt 2 patt])
PNeg patt -> prPrec i 1 (concatD [doc (showString "-") , prt 2 patt])
prtList es = case es of
@@ -412,7 +414,7 @@ instance Print Patt where
instance Print PattAss where
prt i e = case e of
- PA ids patt -> prPrec i 0 (concatD [prt 0 ids , doc (showString "=") , prt 0 patt])
+ PA pidents patt -> prPrec i 0 (concatD [prt 0 pidents , doc (showString "=") , prt 0 patt])
prtList es = case es of
[] -> (concatD [])
@@ -421,7 +423,7 @@ instance Print PattAss where
instance Print Label where
prt i e = case e of
- LIdent id -> prPrec i 0 (concatD [prt 0 id])
+ LIdent pident -> prPrec i 0 (concatD [prt 0 pident])
LVar n -> prPrec i 0 (concatD [doc (showString "$") , prt 0 n])
@@ -436,7 +438,7 @@ instance Print Sort where
instance Print Bind where
prt i e = case e of
- BIdent id -> prPrec i 0 (concatD [prt 0 id])
+ BIdent pident -> prPrec i 0 (concatD [prt 0 pident])
BWild -> prPrec i 0 (concatD [doc (showString "_")])
prtList es = case es of
@@ -517,11 +519,11 @@ instance Print Include where
instance Print FileName where
prt i e = case e of
FString str -> prPrec i 0 (concatD [prt 0 str])
- FIdent id -> prPrec i 0 (concatD [prt 0 id])
+ FIdent pident -> prPrec i 0 (concatD [prt 0 pident])
FSlash filename -> prPrec i 0 (concatD [doc (showString "/") , prt 0 filename])
FDot filename -> prPrec i 0 (concatD [doc (showString ".") , prt 0 filename])
FMinus filename -> prPrec i 0 (concatD [doc (showString "-") , prt 0 filename])
- FAddId id filename -> prPrec i 0 (concatD [prt 0 id , prt 0 filename])
+ FAddId pident filename -> prPrec i 0 (concatD [prt 0 pident , prt 0 filename])
prtList es = case es of
[x] -> (concatD [prt 0 x , doc (showString ";")])
diff --git a/src/GF/Source/SkelGF.hs b/src/GF/Source/SkelGF.hs
index 5c903523b..3bd192f9d 100644
--- a/src/GF/Source/SkelGF.hs
+++ b/src/GF/Source/SkelGF.hs
@@ -3,24 +3,22 @@ module GF.Source.SkelGF where
-- Haskell module generated by the BNF converter
import GF.Source.AbsGF
-import GF.Infra.Ident
-import GF.Data.ErrM
-
+import GF.Source.ErrM
type Result = Err String
failure :: Show a => a -> Result
failure x = Bad $ "Undefined case: " ++ show x
-transIdent :: Ident -> Result
-transIdent x = case x of
- IC str -> failure x
-
-
transLString :: LString -> Result
transLString x = case x of
LString str -> failure x
+transPIdent :: PIdent -> Result
+transPIdent x = case x of
+ PIdent str -> failure x
+
+
transGrammar :: Grammar -> Result
transGrammar x = case x of
Gr moddefs -> failure x
@@ -28,18 +26,18 @@ transGrammar x = case x of
transModDef :: ModDef -> Result
transModDef x = case x of
- MMain id0 id concspecs -> failure x
+ MMain pident0 pident concspecs -> failure x
MModule complmod modtype modbody -> failure x
transConcSpec :: ConcSpec -> Result
transConcSpec x = case x of
- ConcSpec id concexp -> failure x
+ ConcSpec pident concexp -> failure x
transConcExp :: ConcExp -> Result
transConcExp x = case x of
- ConcExp id transfers -> failure x
+ ConcExp pident transfers -> failure x
transTransfer :: Transfer -> Result
@@ -50,26 +48,29 @@ transTransfer x = case x of
transModType :: ModType -> Result
transModType x = case x of
- MTAbstract id -> failure x
- MTResource id -> failure x
- MTInterface id -> failure x
- MTConcrete id0 id -> failure x
- MTInstance id0 id -> failure x
- MTTransfer id open0 open -> failure x
+ MTAbstract pident -> failure x
+ MTResource pident -> failure x
+ MTInterface pident -> failure x
+ MTConcrete pident0 pident -> failure x
+ MTInstance pident0 pident -> failure x
+ MTTransfer pident open0 open -> failure x
transModBody :: ModBody -> Result
transModBody x = case x of
MBody extend opens topdefs -> failure x
- MWith id opens -> failure x
- MWithE ids id opens -> failure x
- MReuse id -> failure x
+ MNoBody includeds -> failure x
+ MWith included opens -> failure x
+ MWithBody included opens0 opens topdefs -> failure x
+ MWithE includeds included opens -> failure x
+ MWithEBody includeds included opens0 opens topdefs -> failure x
+ MReuse pident -> failure x
MUnion includeds -> failure x
transExtend :: Extend -> Result
transExtend x = case x of
- Ext ids -> failure x
+ Ext includeds -> failure x
NoExt -> failure x
@@ -81,9 +82,9 @@ transOpens x = case x of
transOpen :: Open -> Result
transOpen x = case x of
- OName id -> failure x
- OQualQO qualopen id -> failure x
- OQual qualopen id0 id -> failure x
+ OName pident -> failure x
+ OQualQO qualopen pident -> failure x
+ OQual qualopen pident0 pident -> failure x
transComplMod :: ComplMod -> Result
@@ -101,8 +102,9 @@ transQualOpen x = case x of
transIncluded :: Included -> Result
transIncluded x = case x of
- IAll id -> failure x
- ISome id ids -> failure x
+ IAll pident -> failure x
+ ISome pident pidents -> failure x
+ IMinus pident pidents -> failure x
transDef :: Def -> Result
@@ -132,44 +134,44 @@ transTopDef x = case x of
DefPrintOld printdefs -> failure x
DefLintype defs -> failure x
DefPattern defs -> failure x
- DefPackage id topdefs -> failure x
+ DefPackage pident topdefs -> failure x
DefVars defs -> failure x
- DefTokenizer id -> failure x
+ DefTokenizer pident -> failure x
transCatDef :: CatDef -> Result
transCatDef x = case x of
- SimpleCatDef id ddecls -> failure x
- ListCatDef id ddecls -> failure x
- ListSizeCatDef id ddecls n -> failure x
+ SimpleCatDef pident ddecls -> failure x
+ ListCatDef pident ddecls -> failure x
+ ListSizeCatDef pident ddecls n -> failure x
transFunDef :: FunDef -> Result
transFunDef x = case x of
- FunDef ids exp -> failure x
+ FunDef pidents exp -> failure x
transDataDef :: DataDef -> Result
transDataDef x = case x of
- DataDef id dataconstrs -> failure x
+ DataDef pident dataconstrs -> failure x
transDataConstr :: DataConstr -> Result
transDataConstr x = case x of
- DataId id -> failure x
- DataQId id0 id -> failure x
+ DataId pident -> failure x
+ DataQId pident0 pident -> failure x
transParDef :: ParDef -> Result
transParDef x = case x of
- ParDefDir id parconstrs -> failure x
- ParDefIndir id0 id -> failure x
- ParDefAbs id -> failure x
+ ParDefDir pident parconstrs -> failure x
+ ParDefIndir pident0 pident -> failure x
+ ParDefAbs pident -> failure x
transParConstr :: ParConstr -> Result
transParConstr x = case x of
- ParConstr id ddecls -> failure x
+ ParConstr pident ddecls -> failure x
transPrintDef :: PrintDef -> Result
@@ -179,42 +181,43 @@ transPrintDef x = case x of
transFlagDef :: FlagDef -> Result
transFlagDef x = case x of
- FlagDef id0 id -> failure x
+ FlagDef pident0 pident -> failure x
transName :: Name -> Result
transName x = case x of
- IdentName id -> failure x
- ListName id -> failure x
+ IdentName pident -> failure x
+ ListName pident -> failure x
transLocDef :: LocDef -> Result
transLocDef x = case x of
- LDDecl ids exp -> failure x
- LDDef ids exp -> failure x
- LDFull ids exp0 exp -> failure x
+ LDDecl pidents exp -> failure x
+ LDDef pidents exp -> failure x
+ LDFull pidents exp0 exp -> failure x
transExp :: Exp -> Result
transExp x = case x of
- EIdent id -> failure x
- EConstr id -> failure x
- ECons id -> failure x
+ EIdent pident -> failure x
+ EConstr pident -> failure x
+ ECons pident -> failure x
ESort sort -> failure x
EString str -> failure x
EInt n -> failure x
+ EFloat d -> failure x
EMeta -> failure x
EEmpty -> failure x
EData -> failure x
- EList id exps -> failure x
+ EList pident exps -> failure x
EStrings str -> failure x
ERecord locdefs -> failure x
ETuple tuplecomps -> failure x
- EIndir id -> failure x
+ EIndir pident -> failure x
ETyped exp0 exp -> failure x
EProj exp label -> failure x
- EQConstr id0 id -> failure x
- EQCons id0 id -> failure x
+ EQConstr pident0 pident -> failure x
+ EQCons pident0 pident -> failure x
EApp exp0 exp -> failure x
ETable cases -> failure x
ETTable exp cases -> failure x
@@ -223,22 +226,25 @@ transExp x = case x of
EVariants exps -> failure x
EPre exp alterns -> failure x
EStrs exps -> failure x
- EConAt id exp -> failure x
+ EConAt pident exp -> failure x
+ EPatt patt -> failure x
+ EPattType exp -> failure x
ESelect exp0 exp -> failure x
ETupTyp exp0 exp -> failure x
EExtend exp0 exp -> failure x
+ EGlue exp0 exp -> failure x
+ EConcat exp0 exp -> failure x
EAbstr binds exp -> failure x
ECTable binds exp -> failure x
EProd decl exp -> failure x
ETType exp0 exp -> failure x
- EConcat exp0 exp -> failure x
- EGlue exp0 exp -> failure x
ELet locdefs exp -> failure x
ELetb locdefs exp -> failure x
EWhere exp locdefs -> failure x
EEqs equations -> failure x
+ EExample exp str -> failure x
ELString lstring -> failure x
- ELin id -> failure x
+ ELin pident -> failure x
transExps :: Exps -> Result
@@ -249,26 +255,36 @@ transExps x = case x of
transPatt :: Patt -> Result
transPatt x = case x of
+ PChar -> failure x
+ PChars str -> failure x
+ PMacro pident -> failure x
+ PM pident0 pident -> failure x
PW -> failure x
- PV id -> failure x
- PCon id -> failure x
- PQ id0 id -> failure x
+ PV pident -> failure x
+ PCon pident -> failure x
+ PQ pident0 pident -> failure x
PInt n -> failure x
+ PFloat d -> failure x
PStr str -> failure x
PR pattasss -> failure x
PTup patttuplecomps -> failure x
- PC id patts -> failure x
- PQC id0 id patts -> failure x
+ PC pident patts -> failure x
+ PQC pident0 pident patts -> failure x
+ PDisj patt0 patt -> failure x
+ PSeq patt0 patt -> failure x
+ PRep patt -> failure x
+ PAs pident patt -> failure x
+ PNeg patt -> failure x
transPattAss :: PattAss -> Result
transPattAss x = case x of
- PA ids patt -> failure x
+ PA pidents patt -> failure x
transLabel :: Label -> Result
transLabel x = case x of
- LIdent id -> failure x
+ LIdent pident -> failure x
LVar n -> failure x
@@ -281,14 +297,9 @@ transSort x = case x of
Sort_Strs -> failure x
-transPattAlt :: PattAlt -> Result
-transPattAlt x = case x of
- AltP patt -> failure x
-
-
transBind :: Bind -> Result
transBind x = case x of
- BIdent id -> failure x
+ BIdent pident -> failure x
BWild -> failure x
@@ -310,7 +321,7 @@ transPattTupleComp x = case x of
transCase :: Case -> Result
transCase x = case x of
- Case pattalts exp -> failure x
+ Case patt exp -> failure x
transEquation :: Equation -> Result
@@ -343,11 +354,11 @@ transInclude x = case x of
transFileName :: FileName -> Result
transFileName x = case x of
FString str -> failure x
- FIdent id -> failure x
+ FIdent pident -> failure x
FSlash filename -> failure x
FDot filename -> failure x
FMinus filename -> failure x
- FAddId id filename -> failure x
+ FAddId pident filename -> failure x
diff --git a/src/GF/Source/SourceToGrammar.hs b/src/GF/Source/SourceToGrammar.hs
index 8e4f334e3..b2151affb 100644
--- a/src/GF/Source/SourceToGrammar.hs
+++ b/src/GF/Source/SourceToGrammar.hs
@@ -45,14 +45,20 @@ type Result = Err String
failure :: Show a => a -> Err b
failure x = Bad $ "Undefined case: " ++ show x
-transIdent :: Ident -> Err Ident
-transIdent x = case x of
- x -> return x
+prPIdent :: PIdent -> String
+prPIdent (PIdent (_,c)) = c
+
+getIdentPos :: PIdent -> Err (Ident,Int)
+getIdentPos x = case x of
+ PIdent ((line,_),c) -> return (IC c,line)
+
+transIdent :: PIdent -> Err Ident
+transIdent = liftM fst . getIdentPos
transName :: Name -> Err Ident
transName n = case n of
IdentName i -> transIdent i
- ListName i -> transIdent (mkListId i)
+ ListName i -> liftM mkListId (transIdent i)
transGrammar :: Grammar -> Err G.SourceGrammar
transGrammar x = case x of
@@ -250,31 +256,34 @@ returnl = return . Left
transFlagDef :: FlagDef -> Err GO.Option
transFlagDef x = case x of
- FlagDef f x -> return $ GO.Opt (prIdent f,[prIdent x])
+ FlagDef f x -> return $ GO.Opt (prPIdent f,[prPIdent x])
-- | Cat definitions can also return some fun defs
-- if it is a list category definition
transCatDef :: CatDef -> Err [(Ident, G.Info)]
transCatDef x = case x of
- SimpleCatDef id ddecls -> liftM (:[]) $ cat id ddecls
+ SimpleCatDef id ddecls -> do
+ id' <- transIdent id
+ liftM (:[]) $ cat id' ddecls
ListCatDef id ddecls -> listCat id ddecls 0
ListSizeCatDef id ddecls size -> listCat id ddecls size
where
- cat id ddecls = do
- i <- transIdent id
+ cat i ddecls = do
+ -- i <- transIdent id
cont <- liftM concat $ mapM transDDecl ddecls
return (i, G.AbsCat (yes cont) nope)
listCat id ddecls size = do
+ id' <- transIdent id
let
- li = mkListId id
- baseId = mkBaseId id
- consId = mkConsId id
+ li = mkListId id'
+ baseId = mkBaseId id'
+ consId = mkConsId id'
catd0@(c,G.AbsCat (Yes cont0) _) <- cat li ddecls
let
catd = (c,G.AbsCat (Yes cont0) (Yes [M.cn baseId,M.cn consId]))
cont = [(mkId x i,ty) | (i,(x,ty)) <- zip [0..] cont0]
xs = map (G.Vr . fst) cont
- cd = M.mkDecl (M.mkApp (G.Vr id) xs)
+ cd = M.mkDecl (M.mkApp (G.Vr id') xs)
lc = M.mkApp (G.Vr li) xs
niltyp = M.mkProdSimple (cont ++ genericReplicate size cd) lc
nilfund = (baseId, G.AbsFun (yes niltyp) (yes G.EData))
@@ -431,7 +440,10 @@ transExp x = case x of
EMeta -> return $ M.meta $ M.int2meta 0
EEmpty -> return G.Empty
-- [ C x_1 ... x_n ] becomes (ListC x_1 ... x_n)
- EList i es -> transExp $ foldl EApp (EIdent (mkListId i)) (exps2list es)
+ EList i es -> do
+ i' <- transIdent i
+ es' <- mapM transExp (exps2list es)
+ return $ foldl G.App (G.Vr (mkListId i')) es'
EStrings [] -> return G.Empty
EStrings str -> return $ foldr1 G.C $ map G.K $ words str
ERecord defs -> erecord2term defs
@@ -538,16 +550,17 @@ locdef2fields d = case d of
trLabel :: Label -> Err G.Label
trLabel x = case x of
- -- this case is for bward compatibiity and should be removed
- LIdent (IC ('v':ds@(_:_))) | all isDigit ds -> return $ G.LVar $ readIntArg ds
+ -- this case is for bward compatibility and should be removed
+ LIdent (PIdent (_,'v':ds@(_:_))) | all isDigit ds -> return $ G.LVar $ readIntArg ds
- LIdent (IC s) -> return $ G.LIdent s
+ LIdent (PIdent (_, s)) -> return $ G.LIdent s
LVar x -> return $ G.LVar $ fromInteger x
transSort :: Sort -> Err String
transSort x = case x of
_ -> return $ printTree x
+{-
--- no more used 7/1/2006 AR
transPatts :: Patt -> Err [G.Patt]
transPatts p = case p of
@@ -568,11 +581,11 @@ transPatts p = case p of
let ps' = combinations ps0
return $ map (G.PR . M.tuple2recordPatt) ps'
_ -> liftM singleton $ transPatt p
+-}
transPatt :: Patt -> Err G.Patt
transPatt x = case x of
PW -> return G.wildPatt
- PV (IC "C_") -> return G.PChar ---- temporary encoding
PV id -> liftM G.PV $ transIdent id
PC id patts -> liftM2 G.PC (transIdent id) (mapM transPatt patts)
PCon id -> liftM2 G.PC (transIdent id) (return [])
@@ -593,8 +606,8 @@ transPatt x = case x of
PRep p -> liftM G.PRep (transPatt p)
PNeg p -> liftM G.PNeg (transPatt p)
PAs x p -> liftM2 G.PAs (transIdent x) (transPatt p)
-
-
+ PChar -> return G.PChar
+ PChars s -> return $ G.PChars s
transBind :: Bind -> Err Ident
transBind x = case x of
@@ -681,9 +694,11 @@ transOldGrammar opts name0 x = case x of
q = CMCompl
name = maybe name0 (++ ".gf") $ getOptVal opts useName
- absName = identC $ maybe topic id $ getOptVal opts useAbsName
- resName = identC $ maybe ("Res" ++ lang) id $ getOptVal opts useResName
- cncName = identC $ maybe lang id $ getOptVal opts useCncName
+ absName = identPI $ maybe topic id $ getOptVal opts useAbsName
+ resName = identPI $ maybe ("Res" ++ lang) id $ getOptVal opts useResName
+ cncName = identPI $ maybe lang id $ getOptVal opts useCncName
+
+ identPI s = PIdent ((0,0),s)
(beg,rest) = span (/='.') name
(topic,lang) = case rest of -- to avoid overwriting old files
@@ -700,11 +715,11 @@ transInclude x = case x of
where
trans f = case f of
FString s -> s
- FIdent (IC s) -> modif s
+ FIdent (PIdent (_, s)) -> modif s
FSlash filename -> '/' : trans filename
FDot filename -> '.' : trans filename
FMinus filename -> '-' : trans filename
- FAddId (IC s) filename -> modif s ++ trans filename
+ FAddId (PIdent (_, s)) filename -> modif s ++ trans filename
modif s = let s' = init s ++ [toLower (last s)] in
if elem s' newReservedWords then s' else s
--- unsafe hack ; cf. GetGrammar.oldLexer
diff --git a/src/GF/Source/TestGF.hs b/src/GF/Source/TestGF.hs
index b05baade9..e4c072467 100644
--- a/src/GF/Source/TestGF.hs
+++ b/src/GF/Source/TestGF.hs
@@ -2,7 +2,7 @@
module Main where
-import System.IO ( stdin, hGetContents )
+import IO ( stdin, hGetContents )
import System ( getArgs, getProgName )
import GF.Source.LexGF
@@ -14,7 +14,7 @@ import GF.Source.AbsGF
-import GF.Data.ErrM
+import GF.Source.ErrM
type ParseFun a = [Token] -> Err a