diff -ruN haskell-src-exts-1.9.0/CHANGELOG haskell-src-exts/CHANGELOG --- haskell-src-exts-1.9.0/CHANGELOG 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/CHANGELOG 2010-12-15 09:33:33.989889824 -0800 @@ -0,0 +1,251 @@ +** 1.10.x + +1.9.6 --> 1.10.0 +=============== + +* Add the newly devised <%>... syntax to the XmlSyntax support. + This causes changes to pretty much everything, including adding + a case to the AST which prompts the major version bump. + + +** 1.9.x + +1.9.5 --> 1.9.6 +=============== + +* Fix a bug (#203) where the lexer loops on malformed quasi-quoters. + +* Fix a bug with pretty-printing RULES pragmas. + +1.9.4 --> 1.9.5 +=============== + +* Fix a bug where deriving clauses for GADT-style data declarations + were not properly indented. + +* Pretty-printing patterns is now more accurate in inserting (and not + inserting) parentheses when needed. + +1.9.3 --> 1.9.4 +=============== + +* Pretty-printer now inserts parentheses in clever places when + printing kinds. + +* Pretty-printing expressions is now far more accurate in inserting + (and not inserting) parentheses when needed. + +* Pretty-printing negative expressions no longer inserts a superfluous + space between the - and the expression. + +1.9.2 --> 1.9.3 +=============== + +* Constructors for newtype declarations must now have exactly one + argument. This is only when using the classic syntax, not with + GADT-style syntax. + +* Fix a bug where preceding commas in tuple sections were counted + one too few. + +1.9.1 --> 1.9.2 +=============== + +* Fix a bug with pretty-printing lexer tokens. + +* Fix a bug where non-colon TypeOperators could not be used in + prefix mode. + +1.9.0 --> 1.9.1 +=============== + +* Export parseFileContentsWithExts from .Exts. + +1.8.2 --> 1.9.0 +=============== + +* OptionPragma is renamed to the more descriptive ModulePragma, + and adds a constructor AnnModulePragma for handling ANN pragmas + preceding module header. + +* Add instances for Eq/Ord/Data/Typeable for Fixity. + +* Add 'parseFileWithComments' and 'parseFileContentsWithComments' + to L.H.Exts . + +* More informative error messages when HSX tags are mismatched. + + + +** 1.8.x + +1.8.1 --> 1.8.2 +=============== + +* Don't insert redundant parentheses around record constructions + and updates. + +1.8.0 --> 1.8.1 +=============== + +* Fix three bugs with the handling of ANN. I must have been really + tired when implementing that support. + +1.7.2 --> 1.8.0 +=============== + +* Add an instance Show Fixity (derived). + +* Support for the new ANN and INLINE_CONLIKE pragmas. + +* Export knownExtensions from .Extension. + +* Remove support for CFILES and INCLUDE pragmas. The support wasn't + correct anyway, as it assumed the pragmas appeared at the top of + files. As CFILES/INCLUDE pragmas can (and do) appear anywhere, + there's no hope to support them in the AST. Better to remove the + support altogether. Files with CFILES/INCLUDE pragmas can still + be parsed of course, but those pragmas will be handled as comments. + +* Parsing with ignoreLinePragmas = False now correctly updates the + file name. + +* Allow the whole SPECIALISE/INLINE family of pragmas in instance + declarations. The InsInline constructor is removed, and is now + represented by InsDecl (InlineSig ...). + +* Fix a bug with line numbering and quasi quotes, and a similar one + with line numbering and CDATA. + +* Fix a few minor bugs in the exactPrinter. + +* Fix the strange handling of so called strings in LINE pragmas. + +** 1.7.x + +1.7.1 --> 1.7.2 +=============== + +* Fixes a bug in lexing LINE pragmas (used when ignoreLinePragmas + is set to False). + +1.7.0 --> 1.7.1 +=============== + +* UnicodeSyntax now also enables the forall symbol (U+2200). + +1.6.1 --> 1.7.0 +=============== + +* Operators defined on the form + + (a `op` b) c = ... + + could not be handled by the (annotated) AST, nor the parser. I had to + change the definition of the AST node for InfixMatch to allow a list + of right-hand subpatterns, i.e. + + InfixMatch l (Pat l) (Name l) (Pat l) ... + + has become + + InfixMatch l (Pat l) (Name l) [Pat l] ... + + I also had an epiphany and fixed the issue that would arise with + exact printing of prefix definitions including parentheses, so + that now works too! + +** 1.6.x + +1.6.0 --> 1.6.1 +=============== + +* UnicodeSyntax now works not only for identifiers, but also for + ->, <- and =>, as well as Arrows arrows and kind stars. + +1.5.3 --> 1.6.0 +=============== + +* (=~=) turns out to be too general at Functor (for intuitive and not + technical reasons), so is specialised to Annotated to closer mirror + the original intention. + +* applyFixities is hoisted to a monad, and now fails on ambiguous infix + expressions. + +** 1.5.x + +1.5.2 --> 1.5.3 +=============== + +* Several small bug fixes in the exact printer, and fail more gracefully + if the number of srcInfoPoints doesn't match the needs of the node. + +1.5.1 --> 1.5.2 +=============== + +* Fix a bug in the exact printer that made it always print the first token + at position (0,0). + +* In fixing the above, Annotated is now a superclass of ExactP. It was already + a superclass in spirit, and nothing can break from this since ExactP is only + exported abstractly. + +1.5.0 --> 1.5.1 +=============== + +* The pretty printer now introduces parentheses for non-atomic arguments to + function application. Note that infix applications are left untouched, no + parentheses will be inserted there, as it is assumed that fixities are + already properly resolved. + +* Fix a bug in the pretty printer where view patterns and n+k patterns were + not properly parenthesised. + +1.4.0 --> 1.5.0 +=============== + +* Add support for acting on LINE pragmas while parsing, i.e. updating the source + position according to info given in LINE pragmas. This is done conditionally + based on a new flag ignoreLinePragmas in the ParseMode, hence the need to + increase the major version. + +** 1.4.x + +1.3.5 --> 1.4.0 +=============== + +* The AST node for Proc in the simple AST is changed to include a SrcLoc argument, + to make it consistent with similar nodes e.g. Lambda. This is specifically needed + for transformation of patterns in HSX. + + +** 1.3.x + +1.3.4 --> 1.3.5 +=============== + +* Added an entry point in the parser for statements, and an instance Parseable Stmt + to go with it. + +* Ensured that .Annotated exports all relevant parseXXX(WithYYY) functions. + +1.3.3 --> 1.3.4 +=============== + +* Operator fixities are now resolved in patterns. + +1.3.2 --> 1.3.3 +=============== + +* Fixes a bug where qualified keywords are rejected even if the extension that + enables the keyword in question is not turned on. + + +1.3.0 --> 1.3.2 +=============== + +(Let's forget 1.3.1 ever existed.) + +* Fix a bug where declarations of infix operators were not properly merged as FunBinds. + diff -ruN haskell-src-exts-1.9.0/dist/build/Language/Haskell/Exts/InternalParser.hs haskell-src-exts/dist/build/Language/Haskell/Exts/InternalParser.hs --- haskell-src-exts-1.9.0/dist/build/Language/Haskell/Exts/InternalParser.hs 2010-04-11 03:42:46.000000000 -0700 +++ haskell-src-exts/dist/build/Language/Haskell/Exts/InternalParser.hs 1969-12-31 16:00:00.000000000 -0800 @@ -1,8065 +0,0 @@ -{-# OPTIONS_GHC -fno-warn-overlapping-patterns #-} -{-# OPTIONS -fglasgow-exts -cpp #-} -{-# OPTIONS_HADDOCK hide #-} ------------------------------------------------------------------------------ --- | --- Module : Language.Haskell.Exts.Annotated.Parser --- Copyright : (c) Niklas Broberg 2004-2009, --- Original (c) Simon Marlow, Sven Panne 1997-2000 --- License : BSD-style (see the file LICENSE.txt) --- --- Maintainer : Niklas Broberg, d00nibro@chalmers.se --- Stability : stable --- Portability : portable --- --- ------------------------------------------------------------------------------ -module Language.Haskell.Exts.InternalParser ( - -- * General parsing - ParseMode(..), defaultParseMode, ParseResult(..), fromParseResult, - -- * Parsing of specific AST elements - -- ** Modules - parseModule, parseModuleWithMode, parseModuleWithComments, - -- ** Expressions - parseExp, parseExpWithMode, parseExpWithComments, - -- ** Statements - parseStmt, parseStmtWithMode, parseStmtWithComments, - -- ** Patterns - parsePat, parsePatWithMode, parsePatWithComments, - -- ** Declarations - parseDecl, parseDeclWithMode, parseDeclWithComments, - -- ** Types - parseType, parseTypeWithMode, parseTypeWithComments, - -- ** Multiple modules in one file - parseModules, parseModulesWithMode, parseModulesWithComments, - -- ** Option pragmas - getTopPragmas - ) where -import Language.Haskell.Exts.Annotated.Syntax hiding ( Type(..), Exp(..), Asst(..), XAttr(..), FieldUpdate(..) ) -import Language.Haskell.Exts.Annotated.Syntax ( Type, Exp, Asst ) -import Language.Haskell.Exts.ParseMonad -import Language.Haskell.Exts.Lexer -import Language.Haskell.Exts.ParseUtils -import Language.Haskell.Exts.Annotated.Fixity -import Language.Haskell.Exts.SrcLoc -import Language.Haskell.Exts.Comments ( Comment ) -import Language.Haskell.Exts.Extension - -import Control.Monad ( liftM, (<=<) ) -#if __GLASGOW_HASKELL__ >= 503 -import qualified Data.Array as Happy_Data_Array -#else -import qualified Array as Happy_Data_Array -#endif -#if __GLASGOW_HASKELL__ >= 503 -import qualified GHC.Exts as Happy_GHC_Exts -#else -import qualified GlaExts as Happy_GHC_Exts -#endif - --- parser produced by Happy Version 1.18.4 - -newtype HappyAbsSyn = HappyAbsSyn HappyAny -#if __GLASGOW_HASKELL__ >= 607 -type HappyAny = Happy_GHC_Exts.Any -#else -type HappyAny = forall a . a -#endif -happyIn11 :: ([Module L]) -> (HappyAbsSyn ) -happyIn11 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn11 #-} -happyOut11 :: (HappyAbsSyn ) -> ([Module L]) -happyOut11 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut11 #-} -happyIn12 :: ([[ModulePragma L] -> [S] -> L -> Module L]) -> (HappyAbsSyn ) -happyIn12 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn12 #-} -happyOut12 :: (HappyAbsSyn ) -> ([[ModulePragma L] -> [S] -> L -> Module L]) -happyOut12 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut12 #-} -happyIn13 :: (Module L) -> (HappyAbsSyn ) -happyIn13 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn13 #-} -happyOut13 :: (HappyAbsSyn ) -> (Module L) -happyOut13 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut13 #-} -happyIn14 :: (PExp L) -> (HappyAbsSyn ) -happyIn14 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn14 #-} -happyOut14 :: (HappyAbsSyn ) -> (PExp L) -happyOut14 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut14 #-} -happyIn15 :: (([ModulePragma L],[S],L)) -> (HappyAbsSyn ) -happyIn15 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn15 #-} -happyOut15 :: (HappyAbsSyn ) -> (([ModulePragma L],[S],L)) -happyOut15 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut15 #-} -happyIn16 :: (([ModulePragma L],[S],Maybe L)) -> (HappyAbsSyn ) -happyIn16 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn16 #-} -happyOut16 :: (HappyAbsSyn ) -> (([ModulePragma L],[S],Maybe L)) -happyOut16 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut16 #-} -happyIn17 :: (ModulePragma L) -> (HappyAbsSyn ) -happyIn17 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn17 #-} -happyOut17 :: (HappyAbsSyn ) -> (ModulePragma L) -happyOut17 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut17 #-} -happyIn18 :: (([Name L],[S])) -> (HappyAbsSyn ) -happyIn18 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn18 #-} -happyOut18 :: (HappyAbsSyn ) -> (([Name L],[S])) -happyOut18 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut18 #-} -happyIn19 :: ([ModulePragma L] -> [S] -> L -> Module L) -> (HappyAbsSyn ) -happyIn19 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn19 #-} -happyOut19 :: (HappyAbsSyn ) -> ([ModulePragma L] -> [S] -> L -> Module L) -happyOut19 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut19 #-} -happyIn20 :: (Maybe (ModuleHead L)) -> (HappyAbsSyn ) -happyIn20 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn20 #-} -happyOut20 :: (HappyAbsSyn ) -> (Maybe (ModuleHead L)) -happyOut20 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut20 #-} -happyIn21 :: (Maybe (WarningText L)) -> (HappyAbsSyn ) -happyIn21 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn21 #-} -happyOut21 :: (HappyAbsSyn ) -> (Maybe (WarningText L)) -happyOut21 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut21 #-} -happyIn22 :: (([ImportDecl L],[Decl L],[S],L)) -> (HappyAbsSyn ) -happyIn22 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn22 #-} -happyOut22 :: (HappyAbsSyn ) -> (([ImportDecl L],[Decl L],[S],L)) -happyOut22 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut22 #-} -happyIn23 :: (([ImportDecl L],[Decl L],[S])) -> (HappyAbsSyn ) -happyIn23 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn23 #-} -happyOut23 :: (HappyAbsSyn ) -> (([ImportDecl L],[Decl L],[S])) -happyOut23 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut23 #-} -happyIn24 :: ([S]) -> (HappyAbsSyn ) -happyIn24 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn24 #-} -happyOut24 :: (HappyAbsSyn ) -> ([S]) -happyOut24 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut24 #-} -happyIn25 :: ([S]) -> (HappyAbsSyn ) -happyIn25 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn25 #-} -happyOut25 :: (HappyAbsSyn ) -> ([S]) -happyOut25 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut25 #-} -happyIn26 :: (Maybe (ExportSpecList L)) -> (HappyAbsSyn ) -happyIn26 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn26 #-} -happyOut26 :: (HappyAbsSyn ) -> (Maybe (ExportSpecList L)) -happyOut26 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut26 #-} -happyIn27 :: (ExportSpecList L) -> (HappyAbsSyn ) -happyIn27 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn27 #-} -happyOut27 :: (HappyAbsSyn ) -> (ExportSpecList L) -happyOut27 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut27 #-} -happyIn28 :: ([S]) -> (HappyAbsSyn ) -happyIn28 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn28 #-} -happyOut28 :: (HappyAbsSyn ) -> ([S]) -happyOut28 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut28 #-} -happyIn29 :: (([ExportSpec L],[S])) -> (HappyAbsSyn ) -happyIn29 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn29 #-} -happyOut29 :: (HappyAbsSyn ) -> (([ExportSpec L],[S])) -happyOut29 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut29 #-} -happyIn30 :: (ExportSpec L) -> (HappyAbsSyn ) -happyIn30 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn30 #-} -happyOut30 :: (HappyAbsSyn ) -> (ExportSpec L) -happyOut30 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut30 #-} -happyIn31 :: (([ImportDecl L],[S])) -> (HappyAbsSyn ) -happyIn31 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn31 #-} -happyOut31 :: (HappyAbsSyn ) -> (([ImportDecl L],[S])) -happyOut31 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut31 #-} -happyIn32 :: (ImportDecl L) -> (HappyAbsSyn ) -happyIn32 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn32 #-} -happyOut32 :: (HappyAbsSyn ) -> (ImportDecl L) -happyOut32 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut32 #-} -happyIn33 :: ((Bool,[S])) -> (HappyAbsSyn ) -happyIn33 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn33 #-} -happyOut33 :: (HappyAbsSyn ) -> ((Bool,[S])) -happyOut33 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut33 #-} -happyIn34 :: ((Bool,[S])) -> (HappyAbsSyn ) -happyIn34 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn34 #-} -happyOut34 :: (HappyAbsSyn ) -> ((Bool,[S])) -happyOut34 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut34 #-} -happyIn35 :: ((Maybe String,[S])) -> (HappyAbsSyn ) -happyIn35 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn35 #-} -happyOut35 :: (HappyAbsSyn ) -> ((Maybe String,[S])) -happyOut35 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut35 #-} -happyIn36 :: ((Maybe (ModuleName L),[S],Maybe L)) -> (HappyAbsSyn ) -happyIn36 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn36 #-} -happyOut36 :: (HappyAbsSyn ) -> ((Maybe (ModuleName L),[S],Maybe L)) -happyOut36 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut36 #-} -happyIn37 :: (Maybe (ImportSpecList L)) -> (HappyAbsSyn ) -happyIn37 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn37 #-} -happyOut37 :: (HappyAbsSyn ) -> (Maybe (ImportSpecList L)) -happyOut37 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut37 #-} -happyIn38 :: (ImportSpecList L) -> (HappyAbsSyn ) -happyIn38 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn38 #-} -happyOut38 :: (HappyAbsSyn ) -> (ImportSpecList L) -happyOut38 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut38 #-} -happyIn39 :: ((Bool, Maybe L,[S])) -> (HappyAbsSyn ) -happyIn39 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn39 #-} -happyOut39 :: (HappyAbsSyn ) -> ((Bool, Maybe L,[S])) -happyOut39 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut39 #-} -happyIn40 :: (([ImportSpec L],[S])) -> (HappyAbsSyn ) -happyIn40 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn40 #-} -happyOut40 :: (HappyAbsSyn ) -> (([ImportSpec L],[S])) -happyOut40 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut40 #-} -happyIn41 :: (ImportSpec L) -> (HappyAbsSyn ) -happyIn41 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn41 #-} -happyOut41 :: (HappyAbsSyn ) -> (ImportSpec L) -happyOut41 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut41 #-} -happyIn42 :: (([CName L],[S])) -> (HappyAbsSyn ) -happyIn42 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn42 #-} -happyOut42 :: (HappyAbsSyn ) -> (([CName L],[S])) -happyOut42 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut42 #-} -happyIn43 :: (CName L) -> (HappyAbsSyn ) -happyIn43 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn43 #-} -happyOut43 :: (HappyAbsSyn ) -> (CName L) -happyOut43 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut43 #-} -happyIn44 :: (Decl L) -> (HappyAbsSyn ) -happyIn44 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn44 #-} -happyOut44 :: (HappyAbsSyn ) -> (Decl L) -happyOut44 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut44 #-} -happyIn45 :: ((Maybe Int, [S])) -> (HappyAbsSyn ) -happyIn45 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn45 #-} -happyOut45 :: (HappyAbsSyn ) -> ((Maybe Int, [S])) -happyOut45 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut45 #-} -happyIn46 :: (Assoc L) -> (HappyAbsSyn ) -happyIn46 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn46 #-} -happyOut46 :: (HappyAbsSyn ) -> (Assoc L) -happyOut46 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut46 #-} -happyIn47 :: (([Op L],[S],L)) -> (HappyAbsSyn ) -happyIn47 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn47 #-} -happyOut47 :: (HappyAbsSyn ) -> (([Op L],[S],L)) -happyOut47 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut47 #-} -happyIn48 :: (([Decl L],[S])) -> (HappyAbsSyn ) -happyIn48 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn48 #-} -happyOut48 :: (HappyAbsSyn ) -> (([Decl L],[S])) -happyOut48 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut48 #-} -happyIn49 :: (([Decl L],[S])) -> (HappyAbsSyn ) -happyIn49 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn49 #-} -happyOut49 :: (HappyAbsSyn ) -> (([Decl L],[S])) -happyOut49 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut49 #-} -happyIn50 :: (Decl L) -> (HappyAbsSyn ) -happyIn50 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn50 #-} -happyOut50 :: (HappyAbsSyn ) -> (Decl L) -happyOut50 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut50 #-} -happyIn51 :: (DataOrNew L) -> (HappyAbsSyn ) -happyIn51 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn51 #-} -happyOut51 :: (HappyAbsSyn ) -> (DataOrNew L) -happyOut51 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut51 #-} -happyIn52 :: (([Type L],[S])) -> (HappyAbsSyn ) -happyIn52 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn52 #-} -happyOut52 :: (HappyAbsSyn ) -> (([Type L],[S])) -happyOut52 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut52 #-} -happyIn53 :: (([Decl L],[S])) -> (HappyAbsSyn ) -happyIn53 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn53 #-} -happyOut53 :: (HappyAbsSyn ) -> (([Decl L],[S])) -happyOut53 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut53 #-} -happyIn54 :: (([Decl L],[S])) -> (HappyAbsSyn ) -happyIn54 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn54 #-} -happyOut54 :: (HappyAbsSyn ) -> (([Decl L],[S])) -happyOut54 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut54 #-} -happyIn55 :: (Decl L) -> (HappyAbsSyn ) -happyIn55 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn55 #-} -happyOut55 :: (HappyAbsSyn ) -> (Decl L) -happyOut55 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut55 #-} -happyIn56 :: (Binds L) -> (HappyAbsSyn ) -happyIn56 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn56 #-} -happyOut56 :: (HappyAbsSyn ) -> (Binds L) -happyOut56 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut56 #-} -happyIn57 :: (Decl L) -> (HappyAbsSyn ) -happyIn57 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn57 #-} -happyOut57 :: (HappyAbsSyn ) -> (Decl L) -happyOut57 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut57 #-} -happyIn58 :: (Decl L) -> (HappyAbsSyn ) -happyIn58 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn58 #-} -happyOut58 :: (HappyAbsSyn ) -> (Decl L) -happyOut58 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut58 #-} -happyIn59 :: (([Type L],[S])) -> (HappyAbsSyn ) -happyIn59 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn59 #-} -happyOut59 :: (HappyAbsSyn ) -> (([Type L],[S])) -happyOut59 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut59 #-} -happyIn60 :: (Type L) -> (HappyAbsSyn ) -happyIn60 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn60 #-} -happyOut60 :: (HappyAbsSyn ) -> (Type L) -happyOut60 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut60 #-} -happyIn61 :: (Binds L) -> (HappyAbsSyn ) -happyIn61 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn61 #-} -happyOut61 :: (HappyAbsSyn ) -> (Binds L) -happyOut61 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut61 #-} -happyIn62 :: (([Name L],[S],L)) -> (HappyAbsSyn ) -happyIn62 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn62 #-} -happyOut62 :: (HappyAbsSyn ) -> (([Name L],[S],L)) -happyOut62 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut62 #-} -happyIn63 :: (CallConv L) -> (HappyAbsSyn ) -happyIn63 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn63 #-} -happyOut63 :: (HappyAbsSyn ) -> (CallConv L) -happyOut63 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut63 #-} -happyIn64 :: (Maybe (Safety L)) -> (HappyAbsSyn ) -happyIn64 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn64 #-} -happyOut64 :: (HappyAbsSyn ) -> (Maybe (Safety L)) -happyOut64 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut64 #-} -happyIn65 :: ((Maybe String, Name L, Type L, [S])) -> (HappyAbsSyn ) -happyIn65 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn65 #-} -happyOut65 :: (HappyAbsSyn ) -> ((Maybe String, Name L, Type L, [S])) -happyOut65 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut65 #-} -happyIn66 :: ([Rule L]) -> (HappyAbsSyn ) -happyIn66 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn66 #-} -happyOut66 :: (HappyAbsSyn ) -> ([Rule L]) -happyOut66 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut66 #-} -happyIn67 :: (Rule L) -> (HappyAbsSyn ) -happyIn67 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn67 #-} -happyOut67 :: (HappyAbsSyn ) -> (Rule L) -happyOut67 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut67 #-} -happyIn68 :: (Maybe (Activation L)) -> (HappyAbsSyn ) -happyIn68 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn68 #-} -happyOut68 :: (HappyAbsSyn ) -> (Maybe (Activation L)) -happyOut68 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut68 #-} -happyIn69 :: ((Maybe [RuleVar L],[S])) -> (HappyAbsSyn ) -happyIn69 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn69 #-} -happyOut69 :: (HappyAbsSyn ) -> ((Maybe [RuleVar L],[S])) -happyOut69 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut69 #-} -happyIn70 :: ([RuleVar L]) -> (HappyAbsSyn ) -happyIn70 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn70 #-} -happyOut70 :: (HappyAbsSyn ) -> ([RuleVar L]) -happyOut70 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut70 #-} -happyIn71 :: (RuleVar L) -> (HappyAbsSyn ) -happyIn71 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn71 #-} -happyOut71 :: (HappyAbsSyn ) -> (RuleVar L) -happyOut71 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut71 #-} -happyIn72 :: (([([Name L],String)],[S])) -> (HappyAbsSyn ) -happyIn72 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn72 #-} -happyOut72 :: (HappyAbsSyn ) -> (([([Name L],String)],[S])) -happyOut72 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut72 #-} -happyIn73 :: ((([Name L], String),[S])) -> (HappyAbsSyn ) -happyIn73 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn73 #-} -happyOut73 :: (HappyAbsSyn ) -> ((([Name L], String),[S])) -happyOut73 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut73 #-} -happyIn74 :: (([Name L],[S])) -> (HappyAbsSyn ) -happyIn74 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn74 #-} -happyOut74 :: (HappyAbsSyn ) -> (([Name L],[S])) -happyOut74 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut74 #-} -happyIn75 :: (Name L) -> (HappyAbsSyn ) -happyIn75 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn75 #-} -happyOut75 :: (HappyAbsSyn ) -> (Name L) -happyOut75 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut75 #-} -happyIn76 :: (Annotation L) -> (HappyAbsSyn ) -happyIn76 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn76 #-} -happyOut76 :: (HappyAbsSyn ) -> (Annotation L) -happyOut76 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut76 #-} -happyIn77 :: (Type L) -> (HappyAbsSyn ) -happyIn77 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn77 #-} -happyOut77 :: (HappyAbsSyn ) -> (Type L) -happyOut77 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut77 #-} -happyIn78 :: (PType L) -> (HappyAbsSyn ) -happyIn78 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn78 #-} -happyOut78 :: (HappyAbsSyn ) -> (PType L) -happyOut78 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut78 #-} -happyIn79 :: (Type L) -> (HappyAbsSyn ) -happyIn79 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn79 #-} -happyOut79 :: (HappyAbsSyn ) -> (Type L) -happyOut79 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut79 #-} -happyIn80 :: (PType L) -> (HappyAbsSyn ) -happyIn80 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn80 #-} -happyOut80 :: (HappyAbsSyn ) -> (PType L) -happyOut80 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut80 #-} -happyIn81 :: (Type L) -> (HappyAbsSyn ) -happyIn81 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn81 #-} -happyOut81 :: (HappyAbsSyn ) -> (Type L) -happyOut81 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut81 #-} -happyIn82 :: (PType L) -> (HappyAbsSyn ) -happyIn82 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn82 #-} -happyOut82 :: (HappyAbsSyn ) -> (PType L) -happyOut82 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut82 #-} -happyIn83 :: (Type L) -> (HappyAbsSyn ) -happyIn83 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn83 #-} -happyOut83 :: (HappyAbsSyn ) -> (Type L) -happyOut83 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut83 #-} -happyIn84 :: (PType L) -> (HappyAbsSyn ) -happyIn84 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn84 #-} -happyOut84 :: (HappyAbsSyn ) -> (PType L) -happyOut84 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut84 #-} -happyIn85 :: (QName L) -> (HappyAbsSyn ) -happyIn85 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn85 #-} -happyOut85 :: (HappyAbsSyn ) -> (QName L) -happyOut85 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut85 #-} -happyIn86 :: (QName L) -> (HappyAbsSyn ) -happyIn86 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn86 #-} -happyOut86 :: (HappyAbsSyn ) -> (QName L) -happyOut86 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut86 #-} -happyIn87 :: (QName L) -> (HappyAbsSyn ) -happyIn87 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn87 #-} -happyOut87 :: (HappyAbsSyn ) -> (QName L) -happyOut87 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut87 #-} -happyIn88 :: (Type L) -> (HappyAbsSyn ) -happyIn88 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn88 #-} -happyOut88 :: (HappyAbsSyn ) -> (Type L) -happyOut88 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut88 #-} -happyIn89 :: (PType L) -> (HappyAbsSyn ) -happyIn89 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn89 #-} -happyOut89 :: (HappyAbsSyn ) -> (PType L) -happyOut89 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut89 #-} -happyIn90 :: (PContext L) -> (HappyAbsSyn ) -happyIn90 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn90 #-} -happyOut90 :: (HappyAbsSyn ) -> (PContext L) -happyOut90 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut90 #-} -happyIn91 :: (([PType L],[S])) -> (HappyAbsSyn ) -happyIn91 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn91 #-} -happyOut91 :: (HappyAbsSyn ) -> (([PType L],[S])) -happyOut91 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut91 #-} -happyIn92 :: (([PType L],[S])) -> (HappyAbsSyn ) -happyIn92 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn92 #-} -happyOut92 :: (HappyAbsSyn ) -> (([PType L],[S])) -happyOut92 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut92 #-} -happyIn93 :: (([TyVarBind L],Maybe L)) -> (HappyAbsSyn ) -happyIn93 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn93 #-} -happyOut93 :: (HappyAbsSyn ) -> (([TyVarBind L],Maybe L)) -happyOut93 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut93 #-} -happyIn94 :: (TyVarBind L) -> (HappyAbsSyn ) -happyIn94 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn94 #-} -happyOut94 :: (HappyAbsSyn ) -> (TyVarBind L) -happyOut94 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut94 #-} -happyIn95 :: (([Name L],Maybe L)) -> (HappyAbsSyn ) -happyIn95 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn95 #-} -happyOut95 :: (HappyAbsSyn ) -> (([Name L],Maybe L)) -happyOut95 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut95 #-} -happyIn96 :: (([Name L],L)) -> (HappyAbsSyn ) -happyIn96 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn96 #-} -happyOut96 :: (HappyAbsSyn ) -> (([Name L],L)) -happyOut96 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut96 #-} -happyIn97 :: (([FunDep L],[S],Maybe L)) -> (HappyAbsSyn ) -happyIn97 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn97 #-} -happyOut97 :: (HappyAbsSyn ) -> (([FunDep L],[S],Maybe L)) -happyOut97 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut97 #-} -happyIn98 :: (([FunDep L],[S],L)) -> (HappyAbsSyn ) -happyIn98 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn98 #-} -happyOut98 :: (HappyAbsSyn ) -> (([FunDep L],[S],L)) -happyOut98 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut98 #-} -happyIn99 :: (FunDep L) -> (HappyAbsSyn ) -happyIn99 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn99 #-} -happyOut99 :: (HappyAbsSyn ) -> (FunDep L) -happyOut99 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut99 #-} -happyIn100 :: (([GadtDecl L],[S],Maybe L)) -> (HappyAbsSyn ) -happyIn100 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn100 #-} -happyOut100 :: (HappyAbsSyn ) -> (([GadtDecl L],[S],Maybe L)) -happyOut100 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut100 #-} -happyIn101 :: (([GadtDecl L],[S])) -> (HappyAbsSyn ) -happyIn101 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn101 #-} -happyOut101 :: (HappyAbsSyn ) -> (([GadtDecl L],[S])) -happyOut101 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut101 #-} -happyIn102 :: (([GadtDecl L],[S])) -> (HappyAbsSyn ) -happyIn102 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn102 #-} -happyOut102 :: (HappyAbsSyn ) -> (([GadtDecl L],[S])) -happyOut102 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut102 #-} -happyIn103 :: (GadtDecl L) -> (HappyAbsSyn ) -happyIn103 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn103 #-} -happyOut103 :: (HappyAbsSyn ) -> (GadtDecl L) -happyOut103 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut103 #-} -happyIn104 :: (([QualConDecl L],[S],Maybe L)) -> (HappyAbsSyn ) -happyIn104 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn104 #-} -happyOut104 :: (HappyAbsSyn ) -> (([QualConDecl L],[S],Maybe L)) -happyOut104 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut104 #-} -happyIn105 :: (([QualConDecl L],[S],L)) -> (HappyAbsSyn ) -happyIn105 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn105 #-} -happyOut105 :: (HappyAbsSyn ) -> (([QualConDecl L],[S],L)) -happyOut105 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut105 #-} -happyIn106 :: (QualConDecl L) -> (HappyAbsSyn ) -happyIn106 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn106 #-} -happyOut106 :: (HappyAbsSyn ) -> (QualConDecl L) -happyOut106 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut106 #-} -happyIn107 :: ((Maybe [TyVarBind L], [S], Maybe L)) -> (HappyAbsSyn ) -happyIn107 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn107 #-} -happyOut107 :: (HappyAbsSyn ) -> ((Maybe [TyVarBind L], [S], Maybe L)) -happyOut107 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut107 #-} -happyIn108 :: (ConDecl L) -> (HappyAbsSyn ) -happyIn108 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn108 #-} -happyOut108 :: (HappyAbsSyn ) -> (ConDecl L) -happyOut108 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut108 #-} -happyIn109 :: ((Name L, [BangType L], L)) -> (HappyAbsSyn ) -happyIn109 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn109 #-} -happyOut109 :: (HappyAbsSyn ) -> ((Name L, [BangType L], L)) -happyOut109 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut109 #-} -happyIn110 :: ((Name L, [BangType L],L)) -> (HappyAbsSyn ) -happyIn110 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn110 #-} -happyOut110 :: (HappyAbsSyn ) -> ((Name L, [BangType L],L)) -happyOut110 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut110 #-} -happyIn111 :: (BangType L) -> (HappyAbsSyn ) -happyIn111 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn111 #-} -happyOut111 :: (HappyAbsSyn ) -> (BangType L) -happyOut111 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut111 #-} -happyIn112 :: (BangType L) -> (HappyAbsSyn ) -happyIn112 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn112 #-} -happyOut112 :: (HappyAbsSyn ) -> (BangType L) -happyOut112 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut112 #-} -happyIn113 :: (([FieldDecl L],[S])) -> (HappyAbsSyn ) -happyIn113 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn113 #-} -happyOut113 :: (HappyAbsSyn ) -> (([FieldDecl L],[S])) -happyOut113 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut113 #-} -happyIn114 :: (FieldDecl L) -> (HappyAbsSyn ) -happyIn114 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn114 #-} -happyOut114 :: (HappyAbsSyn ) -> (FieldDecl L) -happyOut114 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut114 #-} -happyIn115 :: (BangType L) -> (HappyAbsSyn ) -happyIn115 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn115 #-} -happyOut115 :: (HappyAbsSyn ) -> (BangType L) -happyOut115 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut115 #-} -happyIn116 :: (Maybe (Deriving L)) -> (HappyAbsSyn ) -happyIn116 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn116 #-} -happyOut116 :: (HappyAbsSyn ) -> (Maybe (Deriving L)) -happyOut116 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut116 #-} -happyIn117 :: (([InstHead L],[S])) -> (HappyAbsSyn ) -happyIn117 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn117 #-} -happyOut117 :: (HappyAbsSyn ) -> (([InstHead L],[S])) -happyOut117 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut117 #-} -happyIn118 :: (QName L) -> (HappyAbsSyn ) -happyIn118 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn118 #-} -happyOut118 :: (HappyAbsSyn ) -> (QName L) -happyOut118 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut118 #-} -happyIn119 :: (Kind L) -> (HappyAbsSyn ) -happyIn119 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn119 #-} -happyOut119 :: (HappyAbsSyn ) -> (Kind L) -happyOut119 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut119 #-} -happyIn120 :: (Kind L) -> (HappyAbsSyn ) -happyIn120 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn120 #-} -happyOut120 :: (HappyAbsSyn ) -> (Kind L) -happyOut120 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut120 #-} -happyIn121 :: (Kind L) -> (HappyAbsSyn ) -happyIn121 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn121 #-} -happyOut121 :: (HappyAbsSyn ) -> (Kind L) -happyOut121 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut121 #-} -happyIn122 :: ((Maybe (Kind L), [S])) -> (HappyAbsSyn ) -happyIn122 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn122 #-} -happyOut122 :: (HappyAbsSyn ) -> ((Maybe (Kind L), [S])) -happyOut122 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut122 #-} -happyIn123 :: ((Maybe [ClassDecl L],[S],Maybe L)) -> (HappyAbsSyn ) -happyIn123 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn123 #-} -happyOut123 :: (HappyAbsSyn ) -> ((Maybe [ClassDecl L],[S],Maybe L)) -happyOut123 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut123 #-} -happyIn124 :: (([ClassDecl L],[S])) -> (HappyAbsSyn ) -happyIn124 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn124 #-} -happyOut124 :: (HappyAbsSyn ) -> (([ClassDecl L],[S])) -happyOut124 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut124 #-} -happyIn125 :: (([ClassDecl L],[S])) -> (HappyAbsSyn ) -happyIn125 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn125 #-} -happyOut125 :: (HappyAbsSyn ) -> (([ClassDecl L],[S])) -happyOut125 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut125 #-} -happyIn126 :: (ClassDecl L) -> (HappyAbsSyn ) -happyIn126 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn126 #-} -happyOut126 :: (HappyAbsSyn ) -> (ClassDecl L) -happyOut126 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut126 #-} -happyIn127 :: (ClassDecl L) -> (HappyAbsSyn ) -happyIn127 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn127 #-} -happyOut127 :: (HappyAbsSyn ) -> (ClassDecl L) -happyOut127 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut127 #-} -happyIn128 :: ((Maybe [InstDecl L],[S],Maybe L)) -> (HappyAbsSyn ) -happyIn128 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn128 #-} -happyOut128 :: (HappyAbsSyn ) -> ((Maybe [InstDecl L],[S],Maybe L)) -happyOut128 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut128 #-} -happyIn129 :: (([InstDecl L],[S])) -> (HappyAbsSyn ) -happyIn129 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn129 #-} -happyOut129 :: (HappyAbsSyn ) -> (([InstDecl L],[S])) -happyOut129 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut129 #-} -happyIn130 :: (([InstDecl L],[S])) -> (HappyAbsSyn ) -happyIn130 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn130 #-} -happyOut130 :: (HappyAbsSyn ) -> (([InstDecl L],[S])) -happyOut130 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut130 #-} -happyIn131 :: (InstDecl L) -> (HappyAbsSyn ) -happyIn131 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn131 #-} -happyOut131 :: (HappyAbsSyn ) -> (InstDecl L) -happyOut131 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut131 #-} -happyIn132 :: (InstDecl L) -> (HappyAbsSyn ) -happyIn132 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn132 #-} -happyOut132 :: (HappyAbsSyn ) -> (InstDecl L) -happyOut132 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut132 #-} -happyIn133 :: (Decl L) -> (HappyAbsSyn ) -happyIn133 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn133 #-} -happyOut133 :: (HappyAbsSyn ) -> (Decl L) -happyOut133 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut133 #-} -happyIn134 :: ((Maybe (Binds L),[S])) -> (HappyAbsSyn ) -happyIn134 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn134 #-} -happyOut134 :: (HappyAbsSyn ) -> ((Maybe (Binds L),[S])) -happyOut134 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut134 #-} -happyIn135 :: ((Maybe (Type L),[S])) -> (HappyAbsSyn ) -happyIn135 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn135 #-} -happyOut135 :: (HappyAbsSyn ) -> ((Maybe (Type L),[S])) -happyOut135 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut135 #-} -happyIn136 :: (Rhs L) -> (HappyAbsSyn ) -happyIn136 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn136 #-} -happyOut136 :: (HappyAbsSyn ) -> (Rhs L) -happyOut136 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut136 #-} -happyIn137 :: (([GuardedRhs L],L)) -> (HappyAbsSyn ) -happyIn137 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn137 #-} -happyOut137 :: (HappyAbsSyn ) -> (([GuardedRhs L],L)) -happyOut137 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut137 #-} -happyIn138 :: (GuardedRhs L) -> (HappyAbsSyn ) -happyIn138 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn138 #-} -happyOut138 :: (HappyAbsSyn ) -> (GuardedRhs L) -happyOut138 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut138 #-} -happyIn139 :: (Exp L) -> (HappyAbsSyn ) -happyIn139 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn139 #-} -happyOut139 :: (HappyAbsSyn ) -> (Exp L) -happyOut139 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut139 #-} -happyIn140 :: (PExp L) -> (HappyAbsSyn ) -happyIn140 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn140 #-} -happyOut140 :: (HappyAbsSyn ) -> (PExp L) -happyOut140 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut140 #-} -happyIn141 :: (PExp L) -> (HappyAbsSyn ) -happyIn141 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn141 #-} -happyOut141 :: (HappyAbsSyn ) -> (PExp L) -happyOut141 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut141 #-} -happyIn142 :: (PExp L) -> (HappyAbsSyn ) -happyIn142 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn142 #-} -happyOut142 :: (HappyAbsSyn ) -> (PExp L) -happyOut142 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut142 #-} -happyIn143 :: (PExp L) -> (HappyAbsSyn ) -happyIn143 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn143 #-} -happyOut143 :: (HappyAbsSyn ) -> (PExp L) -happyOut143 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut143 #-} -happyIn144 :: (PExp L) -> (HappyAbsSyn ) -happyIn144 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn144 #-} -happyOut144 :: (HappyAbsSyn ) -> (PExp L) -happyOut144 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut144 #-} -happyIn145 :: (PExp L) -> (HappyAbsSyn ) -happyIn145 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn145 #-} -happyOut145 :: (HappyAbsSyn ) -> (PExp L) -happyOut145 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut145 #-} -happyIn146 :: (PExp L) -> (HappyAbsSyn ) -happyIn146 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn146 #-} -happyOut146 :: (HappyAbsSyn ) -> (PExp L) -happyOut146 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut146 #-} -happyIn147 :: (PExp L) -> (HappyAbsSyn ) -happyIn147 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn147 #-} -happyOut147 :: (HappyAbsSyn ) -> (PExp L) -happyOut147 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut147 #-} -happyIn148 :: ([Pat L]) -> (HappyAbsSyn ) -happyIn148 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn148 #-} -happyOut148 :: (HappyAbsSyn ) -> ([Pat L]) -happyOut148 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut148 #-} -happyIn149 :: (Pat L) -> (HappyAbsSyn ) -happyIn149 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn149 #-} -happyOut149 :: (HappyAbsSyn ) -> (Pat L) -happyOut149 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut149 #-} -happyIn150 :: (PExp L) -> (HappyAbsSyn ) -happyIn150 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn150 #-} -happyOut150 :: (HappyAbsSyn ) -> (PExp L) -happyOut150 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut150 #-} -happyIn151 :: (PExp L) -> (HappyAbsSyn ) -happyIn151 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn151 #-} -happyOut151 :: (HappyAbsSyn ) -> (PExp L) -happyOut151 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut151 #-} -happyIn152 :: (PExp L) -> (HappyAbsSyn ) -happyIn152 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn152 #-} -happyOut152 :: (HappyAbsSyn ) -> (PExp L) -happyOut152 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut152 #-} -happyIn153 :: ([S]) -> (HappyAbsSyn ) -happyIn153 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn153 #-} -happyOut153 :: (HappyAbsSyn ) -> ([S]) -happyOut153 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut153 #-} -happyIn154 :: (PExp L) -> (HappyAbsSyn ) -happyIn154 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn154 #-} -happyOut154 :: (HappyAbsSyn ) -> (PExp L) -happyOut154 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut154 #-} -happyIn155 :: (([Maybe (PExp L)],[S])) -> (HappyAbsSyn ) -happyIn155 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn155 #-} -happyOut155 :: (HappyAbsSyn ) -> (([Maybe (PExp L)],[S])) -happyOut155 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut155 #-} -happyIn156 :: (([PExp L],[S])) -> (HappyAbsSyn ) -happyIn156 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn156 #-} -happyOut156 :: (HappyAbsSyn ) -> (([PExp L],[S])) -happyOut156 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut156 #-} -happyIn157 :: (PExp L) -> (HappyAbsSyn ) -happyIn157 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn157 #-} -happyOut157 :: (HappyAbsSyn ) -> (PExp L) -happyOut157 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut157 #-} -happyIn158 :: (PExp L) -> (HappyAbsSyn ) -happyIn158 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn158 #-} -happyOut158 :: (HappyAbsSyn ) -> (PExp L) -happyOut158 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut158 #-} -happyIn159 :: ([PExp L]) -> (HappyAbsSyn ) -happyIn159 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn159 #-} -happyOut159 :: (HappyAbsSyn ) -> ([PExp L]) -happyOut159 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut159 #-} -happyIn160 :: (PExp L) -> (HappyAbsSyn ) -happyIn160 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn160 #-} -happyOut160 :: (HappyAbsSyn ) -> (PExp L) -happyOut160 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut160 #-} -happyIn161 :: (XName L) -> (HappyAbsSyn ) -happyIn161 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn161 #-} -happyOut161 :: (HappyAbsSyn ) -> (XName L) -happyOut161 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut161 #-} -happyIn162 :: (Loc String) -> (HappyAbsSyn ) -happyIn162 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn162 #-} -happyOut162 :: (HappyAbsSyn ) -> (Loc String) -happyOut162 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut162 #-} -happyIn163 :: (Loc String) -> (HappyAbsSyn ) -happyIn163 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn163 #-} -happyOut163 :: (HappyAbsSyn ) -> (Loc String) -happyOut163 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut163 #-} -happyIn164 :: ([ParseXAttr L]) -> (HappyAbsSyn ) -happyIn164 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn164 #-} -happyOut164 :: (HappyAbsSyn ) -> ([ParseXAttr L]) -happyOut164 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut164 #-} -happyIn165 :: (ParseXAttr L) -> (HappyAbsSyn ) -happyIn165 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn165 #-} -happyOut165 :: (HappyAbsSyn ) -> (ParseXAttr L) -happyOut165 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut165 #-} -happyIn166 :: (Maybe (PExp L)) -> (HappyAbsSyn ) -happyIn166 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn166 #-} -happyOut166 :: (HappyAbsSyn ) -> (Maybe (PExp L)) -happyOut166 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut166 #-} -happyIn167 :: (L -> PExp L) -> (HappyAbsSyn ) -happyIn167 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn167 #-} -happyOut167 :: (HappyAbsSyn ) -> (L -> PExp L) -happyOut167 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut167 #-} -happyIn168 :: (([PExp L],[S])) -> (HappyAbsSyn ) -happyIn168 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn168 #-} -happyOut168 :: (HappyAbsSyn ) -> (([PExp L],[S])) -happyOut168 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut168 #-} -happyIn169 :: (([[QualStmt L]],[S])) -> (HappyAbsSyn ) -happyIn169 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn169 #-} -happyOut169 :: (HappyAbsSyn ) -> (([[QualStmt L]],[S])) -happyOut169 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut169 #-} -happyIn170 :: (([QualStmt L],[S])) -> (HappyAbsSyn ) -happyIn170 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn170 #-} -happyOut170 :: (HappyAbsSyn ) -> (([QualStmt L],[S])) -happyOut170 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut170 #-} -happyIn171 :: (QualStmt L) -> (HappyAbsSyn ) -happyIn171 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn171 #-} -happyOut171 :: (HappyAbsSyn ) -> (QualStmt L) -happyOut171 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut171 #-} -happyIn172 :: (QualStmt L) -> (HappyAbsSyn ) -happyIn172 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn172 #-} -happyOut172 :: (HappyAbsSyn ) -> (QualStmt L) -happyOut172 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut172 #-} -happyIn173 :: (([Stmt L],[S])) -> (HappyAbsSyn ) -happyIn173 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn173 #-} -happyOut173 :: (HappyAbsSyn ) -> (([Stmt L],[S])) -happyOut173 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut173 #-} -happyIn174 :: (Stmt L) -> (HappyAbsSyn ) -happyIn174 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn174 #-} -happyOut174 :: (HappyAbsSyn ) -> (Stmt L) -happyOut174 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut174 #-} -happyIn175 :: (([Alt L],L,[S])) -> (HappyAbsSyn ) -happyIn175 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn175 #-} -happyOut175 :: (HappyAbsSyn ) -> (([Alt L],L,[S])) -happyOut175 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut175 #-} -happyIn176 :: (([Alt L],[S])) -> (HappyAbsSyn ) -happyIn176 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn176 #-} -happyOut176 :: (HappyAbsSyn ) -> (([Alt L],[S])) -happyOut176 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut176 #-} -happyIn177 :: (([Alt L],[S])) -> (HappyAbsSyn ) -happyIn177 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn177 #-} -happyOut177 :: (HappyAbsSyn ) -> (([Alt L],[S])) -happyOut177 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut177 #-} -happyIn178 :: (Alt L) -> (HappyAbsSyn ) -happyIn178 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn178 #-} -happyOut178 :: (HappyAbsSyn ) -> (Alt L) -happyOut178 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut178 #-} -happyIn179 :: (GuardedAlts L) -> (HappyAbsSyn ) -happyIn179 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn179 #-} -happyOut179 :: (HappyAbsSyn ) -> (GuardedAlts L) -happyOut179 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut179 #-} -happyIn180 :: (([GuardedAlt L],L)) -> (HappyAbsSyn ) -happyIn180 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn180 #-} -happyOut180 :: (HappyAbsSyn ) -> (([GuardedAlt L],L)) -happyOut180 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut180 #-} -happyIn181 :: (GuardedAlt L) -> (HappyAbsSyn ) -happyIn181 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn181 #-} -happyOut181 :: (HappyAbsSyn ) -> (GuardedAlt L) -happyOut181 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut181 #-} -happyIn182 :: (Pat L) -> (HappyAbsSyn ) -happyIn182 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn182 #-} -happyOut182 :: (HappyAbsSyn ) -> (Pat L) -happyOut182 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut182 #-} -happyIn183 :: (([Stmt L],L,[S])) -> (HappyAbsSyn ) -happyIn183 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn183 #-} -happyOut183 :: (HappyAbsSyn ) -> (([Stmt L],L,[S])) -happyOut183 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut183 #-} -happyIn184 :: (([Stmt L],[S])) -> (HappyAbsSyn ) -happyIn184 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn184 #-} -happyOut184 :: (HappyAbsSyn ) -> (([Stmt L],[S])) -happyOut184 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut184 #-} -happyIn185 :: (([Stmt L],[S])) -> (HappyAbsSyn ) -happyIn185 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn185 #-} -happyOut185 :: (HappyAbsSyn ) -> (([Stmt L],[S])) -happyOut185 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut185 #-} -happyIn186 :: (Stmt L) -> (HappyAbsSyn ) -happyIn186 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn186 #-} -happyOut186 :: (HappyAbsSyn ) -> (Stmt L) -happyOut186 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut186 #-} -happyIn187 :: (([PFieldUpdate L],[S])) -> (HappyAbsSyn ) -happyIn187 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn187 #-} -happyOut187 :: (HappyAbsSyn ) -> (([PFieldUpdate L],[S])) -happyOut187 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut187 #-} -happyIn188 :: (PFieldUpdate L) -> (HappyAbsSyn ) -happyIn188 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn188 #-} -happyOut188 :: (HappyAbsSyn ) -> (PFieldUpdate L) -happyOut188 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut188 #-} -happyIn189 :: (([IPBind L],[S])) -> (HappyAbsSyn ) -happyIn189 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn189 #-} -happyOut189 :: (HappyAbsSyn ) -> (([IPBind L],[S])) -happyOut189 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut189 #-} -happyIn190 :: (([IPBind L],[S])) -> (HappyAbsSyn ) -happyIn190 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn190 #-} -happyOut190 :: (HappyAbsSyn ) -> (([IPBind L],[S])) -happyOut190 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut190 #-} -happyIn191 :: (IPBind L) -> (HappyAbsSyn ) -happyIn191 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn191 #-} -happyOut191 :: (HappyAbsSyn ) -> (IPBind L) -happyOut191 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut191 #-} -happyIn192 :: (PExp L) -> (HappyAbsSyn ) -happyIn192 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn192 #-} -happyOut192 :: (HappyAbsSyn ) -> (PExp L) -happyOut192 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut192 #-} -happyIn193 :: (Name L) -> (HappyAbsSyn ) -happyIn193 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn193 #-} -happyOut193 :: (HappyAbsSyn ) -> (Name L) -happyOut193 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut193 #-} -happyIn194 :: (Name L) -> (HappyAbsSyn ) -happyIn194 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn194 #-} -happyOut194 :: (HappyAbsSyn ) -> (Name L) -happyOut194 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut194 #-} -happyIn195 :: (QName L) -> (HappyAbsSyn ) -happyIn195 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn195 #-} -happyOut195 :: (HappyAbsSyn ) -> (QName L) -happyOut195 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut195 #-} -happyIn196 :: (IPName L) -> (HappyAbsSyn ) -happyIn196 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn196 #-} -happyOut196 :: (HappyAbsSyn ) -> (IPName L) -happyOut196 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut196 #-} -happyIn197 :: (Name L) -> (HappyAbsSyn ) -happyIn197 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn197 #-} -happyOut197 :: (HappyAbsSyn ) -> (Name L) -happyOut197 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut197 #-} -happyIn198 :: (QName L) -> (HappyAbsSyn ) -happyIn198 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn198 #-} -happyOut198 :: (HappyAbsSyn ) -> (QName L) -happyOut198 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut198 #-} -happyIn199 :: (Name L) -> (HappyAbsSyn ) -happyIn199 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn199 #-} -happyOut199 :: (HappyAbsSyn ) -> (Name L) -happyOut199 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut199 #-} -happyIn200 :: (QName L) -> (HappyAbsSyn ) -happyIn200 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn200 #-} -happyOut200 :: (HappyAbsSyn ) -> (QName L) -happyOut200 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut200 #-} -happyIn201 :: (QName L) -> (HappyAbsSyn ) -happyIn201 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn201 #-} -happyOut201 :: (HappyAbsSyn ) -> (QName L) -happyOut201 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut201 #-} -happyIn202 :: (Name L) -> (HappyAbsSyn ) -happyIn202 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn202 #-} -happyOut202 :: (HappyAbsSyn ) -> (Name L) -happyOut202 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut202 #-} -happyIn203 :: (QName L) -> (HappyAbsSyn ) -happyIn203 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn203 #-} -happyOut203 :: (HappyAbsSyn ) -> (QName L) -happyOut203 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut203 #-} -happyIn204 :: (Op L) -> (HappyAbsSyn ) -happyIn204 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn204 #-} -happyOut204 :: (HappyAbsSyn ) -> (Op L) -happyOut204 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut204 #-} -happyIn205 :: (QOp L) -> (HappyAbsSyn ) -happyIn205 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn205 #-} -happyOut205 :: (HappyAbsSyn ) -> (QOp L) -happyOut205 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut205 #-} -happyIn206 :: (QOp L) -> (HappyAbsSyn ) -happyIn206 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn206 #-} -happyOut206 :: (HappyAbsSyn ) -> (QOp L) -happyOut206 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut206 #-} -happyIn207 :: (QName L) -> (HappyAbsSyn ) -happyIn207 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn207 #-} -happyOut207 :: (HappyAbsSyn ) -> (QName L) -happyOut207 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut207 #-} -happyIn208 :: (QName L) -> (HappyAbsSyn ) -happyIn208 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn208 #-} -happyOut208 :: (HappyAbsSyn ) -> (QName L) -happyOut208 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut208 #-} -happyIn209 :: (Name L) -> (HappyAbsSyn ) -happyIn209 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn209 #-} -happyOut209 :: (HappyAbsSyn ) -> (Name L) -happyOut209 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut209 #-} -happyIn210 :: (Name L) -> (HappyAbsSyn ) -happyIn210 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn210 #-} -happyOut210 :: (HappyAbsSyn ) -> (Name L) -happyOut210 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut210 #-} -happyIn211 :: (IPName L) -> (HappyAbsSyn ) -happyIn211 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn211 #-} -happyOut211 :: (HappyAbsSyn ) -> (IPName L) -happyOut211 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut211 #-} -happyIn212 :: (QName L) -> (HappyAbsSyn ) -happyIn212 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn212 #-} -happyOut212 :: (HappyAbsSyn ) -> (QName L) -happyOut212 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut212 #-} -happyIn213 :: (Name L) -> (HappyAbsSyn ) -happyIn213 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn213 #-} -happyOut213 :: (HappyAbsSyn ) -> (Name L) -happyOut213 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut213 #-} -happyIn214 :: (QName L) -> (HappyAbsSyn ) -happyIn214 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn214 #-} -happyOut214 :: (HappyAbsSyn ) -> (QName L) -happyOut214 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut214 #-} -happyIn215 :: (Name L) -> (HappyAbsSyn ) -happyIn215 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn215 #-} -happyOut215 :: (HappyAbsSyn ) -> (Name L) -happyOut215 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut215 #-} -happyIn216 :: (QName L) -> (HappyAbsSyn ) -happyIn216 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn216 #-} -happyOut216 :: (HappyAbsSyn ) -> (QName L) -happyOut216 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut216 #-} -happyIn217 :: (QName L) -> (HappyAbsSyn ) -happyIn217 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn217 #-} -happyOut217 :: (HappyAbsSyn ) -> (QName L) -happyOut217 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut217 #-} -happyIn218 :: (Name L) -> (HappyAbsSyn ) -happyIn218 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn218 #-} -happyOut218 :: (HappyAbsSyn ) -> (Name L) -happyOut218 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut218 #-} -happyIn219 :: (Name L) -> (HappyAbsSyn ) -happyIn219 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn219 #-} -happyOut219 :: (HappyAbsSyn ) -> (Name L) -happyOut219 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut219 #-} -happyIn220 :: (QName L) -> (HappyAbsSyn ) -happyIn220 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn220 #-} -happyOut220 :: (HappyAbsSyn ) -> (QName L) -happyOut220 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut220 #-} -happyIn221 :: (Literal L) -> (HappyAbsSyn ) -happyIn221 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn221 #-} -happyOut221 :: (HappyAbsSyn ) -> (Literal L) -happyOut221 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut221 #-} -happyIn222 :: (S) -> (HappyAbsSyn ) -happyIn222 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn222 #-} -happyOut222 :: (HappyAbsSyn ) -> (S) -happyOut222 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut222 #-} -happyIn223 :: (S) -> (HappyAbsSyn ) -happyIn223 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn223 #-} -happyOut223 :: (HappyAbsSyn ) -> (S) -happyOut223 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut223 #-} -happyIn224 :: (ModuleName L) -> (HappyAbsSyn ) -happyIn224 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn224 #-} -happyOut224 :: (HappyAbsSyn ) -> (ModuleName L) -happyOut224 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut224 #-} -happyIn225 :: (Name L) -> (HappyAbsSyn ) -happyIn225 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn225 #-} -happyOut225 :: (HappyAbsSyn ) -> (Name L) -happyOut225 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut225 #-} -happyIn226 :: (QName L) -> (HappyAbsSyn ) -happyIn226 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn226 #-} -happyOut226 :: (HappyAbsSyn ) -> (QName L) -happyOut226 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut226 #-} -happyIn227 :: (Name L) -> (HappyAbsSyn ) -happyIn227 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn227 #-} -happyOut227 :: (HappyAbsSyn ) -> (Name L) -happyOut227 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut227 #-} -happyIn228 :: (QName L) -> (HappyAbsSyn ) -happyIn228 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn228 #-} -happyOut228 :: (HappyAbsSyn ) -> (QName L) -happyOut228 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut228 #-} -happyIn229 :: (Name L) -> (HappyAbsSyn ) -happyIn229 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn229 #-} -happyOut229 :: (HappyAbsSyn ) -> (Name L) -happyOut229 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut229 #-} -happyInTok :: (Loc Token) -> (HappyAbsSyn ) -happyInTok x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyInTok #-} -happyOutTok :: (HappyAbsSyn ) -> (Loc Token) -happyOutTok x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOutTok #-} - - -happyActOffsets :: HappyAddr -happyActOffsets = HappyA# "\x00\x00\xc0\x11\x4c\x11\xa5\x09\x27\x1a\x08\x0f\x00\x00\x00\x00\x00\x00\xb1\x07\xcd\x04\x16\x08\x8f\x07\x00\x00\xeb\x07\x00\x00\x00\x00\x92\x1c\x00\x00\x00\x00\x00\x00\x99\x18\x00\x00\xef\x07\x00\x00\x00\x00\xe7\x07\x80\x07\x00\x00\x1a\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\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x0c\x42\x02\xbb\x0c\x00\x00\x2d\x16\x99\x18\x99\x18\x99\x18\xc0\x11\x00\x00\xc0\x11\xc0\x11\xc0\x11\x27\x1a\x00\x00\x9e\x1b\x41\x1b\x00\x00\x25\x18\xc0\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x11\xe5\x07\x00\x00\xc0\x11\xe3\x07\xdd\x07\x2d\x16\xdd\x07\x00\x00\xea\x07\xe8\x07\xe6\x07\x00\x00\x00\x00\x24\x19\x00\x00\x00\x00\x00\x00\x6b\x07\x00\x00\x27\x1a\xc7\x07\x00\x00\x00\x00\x00\x00\xee\x18\x7c\x19\x11\x1a\x00\x00\x00\x00\xe1\x07\x5d\x07\xbc\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1e\x1d\xfe\x17\xa9\x00\xe4\x19\x7f\x07\xc2\x07\x6e\x07\x00\x00\x00\x00\x00\x00\xe4\x19\xb2\x07\x00\x00\x69\x1a\xad\x07\xad\x07\xff\x1b\xad\x07\xba\x07\x81\x1c\x81\x1c\x5d\x1b\x00\x00\x3e\x07\x3e\x07\x00\x00\x3e\x07\xe2\x00\x00\x00\x00\x00\xa0\x07\x8a\x17\x4f\x07\xf3\x05\x63\x17\x37\x07\x00\x00\x00\x00\x00\x00\x00\x00\x78\x01\x63\x17\xb3\x07\x9f\x00\x00\x00\xaa\x07\x94\x07\x8e\x00\x42\x00\x00\x00\x97\x07\x6d\x1c\x21\x00\x8d\x07\x75\x01\xe4\x19\x6d\x1c\x6d\x1c\x78\x07\x64\x19\x51\x1a\x1b\x1b\x00\x00\x44\x07\x00\x00\x00\x00\x30\x07\xe4\x19\xe4\x19\xe4\x19\x71\x07\xa0\x05\xa0\x05\x9e\x04\x9e\x04\x00\x00\x00\x00\xc0\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x1c\xf8\x1b\x00\x00\x00\x00\xe4\x19\x00\x00\x00\x00\x00\x00\xc8\x05\xe4\x19\x34\x00\x00\x00\x81\x12\x75\x07\x00\x00\x00\x00\x37\x02\x16\x02\x00\x00\x00\x00\x8d\x01\x7d\x07\x73\x07\x20\x02\x79\x07\x00\x00\x72\x07\x1b\x1b\x00\x00\x00\x00\x1b\x1b\x00\x00\x1b\x1b\x00\x00\x00\x00\x4b\x0a\xe4\x19\x1b\x1b\x00\x00\x76\x07\x0a\x07\xfd\x06\x00\x00\xac\x0d\xac\x0d\x50\x07\x00\x00\x63\x17\x00\x00\x17\x07\x09\x07\x00\x00\x05\x07\x24\x07\x00\x00\x4a\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\xc0\x01\x4b\x07\x00\x00\x00\x00\x92\x02\xa5\x09\x2f\x07\x2c\x07\xc4\x1a\x2a\x07\x53\x07\x39\x07\xf2\x00\x00\x00\x63\x17\x00\x00\xd7\x15\x00\x00\x2b\x07\x97\x01\x36\x07\x13\x07\x00\x00\x00\x00\xc0\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x1b\x00\x00\x00\x00\x00\x00\x27\x00\x00\x00\x6a\x04\xc1\x0b\xe0\x01\x3c\x07\x3a\x07\x2e\x07\x2d\x07\x29\x07\x00\x00\x27\x07\x63\x17\x21\x07\x1a\x07\x51\x1a\x63\x17\x63\x17\xc0\x11\x36\x1b\x00\x00\xc0\x11\xe4\x19\xc0\x11\xc0\x11\xc0\x11\xc0\x11\x4f\x00\x14\x07\x00\x00\x23\x07\xad\x15\x00\x00\xd8\xff\x00\x00\xa8\x06\x00\x00\xfc\x06\x00\x00\x10\x00\xcd\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x02\x00\x00\xf4\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x06\x00\x00\x00\x00\x00\x00\x00\x00\x44\x0b\x00\x00\x00\x00\xca\x01\x00\x00\x00\x00\xc0\x11\xc0\x11\x00\x00\xea\x06\xe9\x06\x00\x00\x38\x0d\x00\x00\x38\x0d\xc0\x11\x94\x0e\x00\x00\xc0\x11\xc0\x11\x00\x00\xd8\x10\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\xec\x06\xef\x16\xf9\x14\x00\x00\xef\x06\xc0\x11\xc0\x11\x00\x00\xc0\x11\xe6\x06\xe5\x06\xac\x0d\x4f\x00\xc0\x11\xc0\x11\xd8\x06\xbe\x1a\x00\x00\xda\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe4\x19\x00\x00\x00\x00\x6a\x00\x00\x00\x00\x00\xe4\x19\x00\x00\x00\x00\x00\x00\xc0\x0a\xe4\x19\xd3\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe2\x13\xc8\x05\xa5\x06\x87\x06\x6a\x00\x9a\x06\x50\x04\xcf\x06\x3d\x02\x00\x00\x77\x06\xc6\x06\x00\x00\xc0\x11\xd8\x10\x75\x06\xed\x04\x00\x00\x00\x00\x7b\x03\x74\x06\x00\x00\xc1\x06\xcc\x06\x00\x00\xc0\x06\x00\x00\x00\x00\x00\x00\xbf\x06\x9c\x13\xbc\x06\xb2\x06\x4f\x00\x4f\x00\xa6\x06\x00\x00\xa3\x06\x1b\x1b\xe4\x19\x45\x06\x3c\x06\x3a\x06\xe4\x19\x9c\x06\xb0\x06\x8e\x06\x56\x06\xa4\x06\x00\x00\x57\x1c\x00\x00\x57\x1c\x00\x00\x00\x00\xc8\x16\x00\x00\x9b\x06\x91\x06\x00\x00\x00\x00\x70\x05\x00\x00\x00\x00\x59\x06\x00\x00\x00\x00\x00\x00\x00\x00\x84\x06\x9f\x08\x4f\x00\xf9\x14\x63\x06\x80\x06\x86\x06\x82\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x11\x56\x14\xe4\x19\x6e\x06\x00\x00\x01\x06\x62\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x1b\x00\x00\xe4\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x0a\x00\x00\x00\x00\x57\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x0a\x52\x06\x5a\x06\x00\x00\x00\x00\x5e\x06\x00\x00\x51\x06\x00\x00\x77\x08\x0e\x01\x7b\x03\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x06\x00\x00\xbc\x01\x00\x00\x4b\x06\x4e\x06\x00\x00\x00\x00\x00\x00\x71\x13\xe4\x19\x00\x00\x3e\x06\x00\x00\xcb\x0a\x00\x00\x00\x00\x00\x00\x35\x06\x6a\x00\x00\x00\x00\x00\x06\x06\x43\x06\x00\x00\xc5\x01\xf9\x05\xe8\x05\x3b\x06\x36\x06\x34\x00\x00\x00\x2a\x06\x00\x00\x30\x06\x26\x06\x00\x00\x00\x00\x37\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x0d\x00\x00\x00\x00\x00\x00\xe4\x05\x00\x00\x00\x00\x00\x00\x00\x00\x12\x06\x00\x00\x8f\x05\x24\x04\x06\x04\xf8\x03\xc5\x03\xb6\x03\xad\x03\x9a\x03\x6b\x03\x59\x03\x46\x03\x3c\x03\x00\x00\xa5\x09\x1c\x06\xf2\x05\xc5\x00\x00\x00\x00\x00\x04\x06\x0b\x06\x00\x00\x00\x00\x00\x00\x64\x10\x00\x00\x68\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\xc8\x01\x00\x00\x00\x00\xc0\x11\x00\x00\xd2\x1b\x00\x00\x00\x00\x1b\x06\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x11\xc6\x05\xf8\xff\x94\x0e\x94\x0e\xf0\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\x16\x20\x0e\xfc\x05\x4f\x00\xc0\x11\x00\x00\xdc\x05\x00\x00\x6a\x00\x00\x00\x00\x00\x00\x00\xae\x05\x00\x00\x00\x00\x00\x00\xa4\x19\x00\x00\x00\x00\x00\x00\xf0\x05\x6a\x00\x08\x0a\x00\x00\x0f\x0a\xcb\x0a\x00\x00\x00\x00\xb5\x0a\x48\x00\xe1\x05\xde\x05\xee\x18\x1b\x1b\x76\x05\x8a\x05\x00\x00\x00\x00\x0e\x01\x81\x05\xc0\x11\xc0\x11\x00\x00\x00\x00\xcc\x05\xb2\x05\x1b\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x08\x24\x13\xc3\x05\x4f\x00\xc0\x11\xbd\x05\xb6\x05\x6d\x15\x81\x14\xb6\x05\x00\x00\xe4\x19\x00\x00\x00\x00\x48\x05\xa5\x05\xf9\x12\x00\x00\xb6\x06\x96\x05\x3f\x05\x36\x05\x38\x05\x00\x00\x91\x1a\x00\x00\x6f\x05\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x05\x00\x00\x31\x05\x14\x05\x22\x09\x78\x05\x00\x00\x00\x00\x7b\x05\x63\x05\x00\x00\x00\x00\x00\x00\x6b\x05\x00\x00\xb0\x05\x00\x00\x00\x00\x00\x00\xc0\x11\x57\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x05\x00\x00\x00\x00\x00\x00\xe4\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf5\x18\x00\x00\x1b\x1b\x00\x00\x00\x00\x34\x12\x3d\x05\x4f\x00\x00\x00\x1b\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x27\x05\x00\x00\x00\x00\x33\x05\xcb\x1b\x8b\x0a\x3b\x05\x00\x00\x00\x00\x1b\x1b\xc0\x04\x75\x0a\x00\x00\x1b\x1b\x1b\x1b\xbe\x04\x00\x00\x00\x00\x00\x00\x45\x01\x18\x05\x4f\x00\x0c\x05\x1b\x05\x00\x00\x00\x00\x19\x05\x17\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x6d\x03\x00\x00\xfd\x04\x00\x00\xc0\x11\xc0\x11\xc0\x11\x00\x00\x00\x00\x00\x00\xab\x04\x00\x00\x00\x00\x00\x00\x54\x16\xc0\x11\x99\x04\xe5\x04\x00\x00\xf0\x0f\xc0\x11\x7c\x0f\xee\x04\xe1\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd1\x04\x31\x01\xcb\x04\x00\x00\x3b\x1a\xc5\x04\x00\x00\x1b\x1b\x00\x00\xd6\x01\xdd\x01\x00\x00\x00\x00\xd8\x04\x1b\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe4\x19\x51\x1a\xc2\x04\xe4\x19\x09\x14\xc7\x04\x4d\x05\xe4\x19\x00\x00\x00\x00\x0a\x19\xbc\x04\xfe\x1a\x00\x00\xc4\x02\x00\x00\x00\x00\x00\x00\xc6\x04\x00\x00\x6d\x05\x00\x00\x54\x16\x00\x00\x00\x00\x67\x01\x00\x00\x00\x00\x00\x00\x00\x00\xba\x04\xb3\x04\x6b\x04\x4a\x04\x00\x00\x00\x00\xe4\x19\x8c\x04\x89\x04\x80\x04\x80\x04\xac\x12\x7e\x04\x00\x00\x00\x00\x40\x1c\x35\x0a\xd4\x1a\xd4\x1a\xe4\x19\xba\x01\x7e\x04\xa3\x04\x00\x00\x00\x00\x1d\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x47\x04\xc0\x11\x00\x00\x00\x00\x00\x00\xc0\x11\x02\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x1a\xf9\x03\x00\x00\x00\x00\x00\x00\x00\x00\xe4\x19\x00\x00\x16\x04\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x1c\x1c\x04\x0a\x04\x30\x00\x6d\x05\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x04\x00\x00\xc0\x11\x00\x00\x00\x00\xd4\x1a\x00\x00\x00\x00\x00\x00\x2c\x04\x00\x00\xb5\x1b\x00\x00\x21\x04\x12\x04\x00\x00\x00\x00\x00\x00\x0d\x04\x09\x12\x03\x04\x2a\x1c\x00\x00\x00\x00\x00\x00\x63\x01\x00\x00\xef\x03\x00\x00\x00\x00\x00\x00"# - -happyGotoOffsets :: HappyAddr -happyGotoOffsets = HappyA# "\x02\x00\x31\x23\xb1\x25\xae\x01\xe7\x05\xe9\x1f\x01\x00\xff\xff\xfe\xff\x44\x02\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x08\x00\x00\x00\x00\x00\x00\x8c\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x23\x82\x03\x99\x23\x00\x00\xf5\x16\x76\x2c\x5a\x16\x5b\x2c\x9b\x25\x00\x00\xde\x22\xc8\x22\x69\x2a\xd4\x05\x2f\x03\xca\x07\x88\x01\x00\x00\xa4\x04\xc1\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x29\x95\xff\x00\x00\x59\x29\xef\xff\x84\xff\xdd\x2a\x83\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x07\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x03\x8d\x04\x48\x07\xa4\x03\x00\x00\xc6\x03\x00\x00\xf8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xee\x0d\x34\x2c\x00\x00\xe4\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd1\x06\xec\xff\x00\x00\xd7\x02\xaa\x03\x9f\x03\xc4\x03\x98\x03\x34\x05\xa7\x04\xbd\x02\xbc\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x83\x02\x00\x00\x00\x00\xfc\xff\x94\x04\x60\x05\xf8\x02\x19\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x00\x03\x2c\xff\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x78\x03\x38\x03\x00\x00\x00\x00\xd1\x01\xad\x06\x98\x02\x8e\x01\x00\x00\x7c\x07\x35\x07\xd2\x03\x00\x00\x00\x00\x18\x00\x04\x00\x42\x03\x96\x06\x48\x01\x83\x06\x53\x03\x6e\x03\x66\x03\xaa\x04\x9a\x04\x00\x00\x00\x00\x7f\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdc\x00\x9d\x03\x00\x00\x00\x00\xc1\x05\x00\x00\x00\x00\x00\x00\x03\x01\x9d\x05\xf9\xff\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\xa4\x01\x00\x00\xb2\x00\x00\x00\x00\x00\x5d\x02\x5c\x06\xe7\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x1f\xf0\x1e\x00\x00\x00\x00\xe8\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd3\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\xff\x07\x03\x00\x00\x00\x00\x00\x00\x34\x02\x2b\x01\x00\x00\x00\x00\x7c\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc1\x2b\x00\x00\x90\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x24\xb3\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x16\x00\x00\x00\x00\x1e\x07\xa6\x2b\x90\x2b\x75\x22\xa5\x00\x00\x00\x7f\x2a\x86\x05\x43\x29\xf1\x28\xdb\x28\x89\x28\xa9\x02\x00\x00\x59\x05\x0f\x00\x48\x02\x00\x00\x04\x02\x00\x00\x00\x00\x44\x05\x00\x00\x00\x00\x00\x00\x00\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\x27\x24\x00\x00\x00\x00\xaf\x02\x00\x00\x00\x00\x49\x25\x73\x28\x00\x00\x00\x00\x00\x00\x00\x00\x09\x24\x00\x00\xb7\x23\x21\x28\x58\x1c\x00\x00\x0b\x28\xb9\x27\x00\x00\x9d\x1e\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x02\x90\x04\x00\x00\x00\x00\x42\x04\x33\x2b\x00\x00\x87\xff\xa3\x27\x51\x27\x00\x00\x3b\x27\x00\x00\xb2\x02\x4a\x1e\x74\x02\xe9\x26\xd3\x26\x00\x00\xe0\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x06\x00\x00\x00\x00\xa8\x04\x00\x00\x00\x00\x25\x06\x00\x00\x00\x00\x00\x00\x3d\x01\x0e\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x03\xff\x00\xeb\x02\xdf\x02\x96\x04\x8e\x04\x00\x00\x00\x00\x00\x00\x00\x00\xb7\x02\xc5\x02\x00\x00\x5f\x22\xf7\x1d\xb4\x02\xf3\x02\x00\x00\x00\x00\xea\xff\xa8\x02\x31\x03\xa2\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x02\xf7\x01\x00\x00\x00\x00\x47\x02\x41\x02\x00\x00\x00\x00\x8a\x02\x97\x03\x5f\x05\x00\x00\x00\x00\x00\x00\x7d\x03\x00\x00\x00\x00\x00\x00\xb9\x02\xb6\x02\x00\x00\xb7\x05\x00\x00\x00\x02\x00\x00\x00\x00\x75\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdc\x02\x00\x00\x00\x00\x00\x00\x46\x02\x00\x00\xdc\x04\xd3\x04\x00\x00\x67\x00\x01\x02\x1d\x2b\xc8\x02\x9c\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x2a\x17\x00\x2b\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x07\x00\x00\x4c\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x04\x00\x00\x7a\x02\x75\x04\x00\x00\x00\x00\x00\x00\x3e\x00\x24\x00\x00\x00\x00\x00\x11\x01\x00\x00\x00\x00\x00\x00\x00\x00\xf5\x01\x00\x00\x00\x00\x00\x00\xbb\xff\xf3\x01\xd9\xff\x00\x00\x00\x00\x00\x00\x00\x00\xe6\xff\x00\x00\x00\x00\x00\x00\x00\x00\xde\xff\x00\x00\x00\x00\x00\x00\xc0\x00\x39\x05\x00\x00\x00\x00\x00\x00\x3d\x07\x69\x02\x00\x00\x00\x00\x00\x00\x08\x04\x00\x00\x00\x00\x40\x02\xe5\x01\x00\x00\xaa\xff\x30\x02\x38\x02\x00\x00\x00\x00\x58\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\xa4\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x37\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe2\x01\x00\x00\x00\x00\x81\x26\x00\x00\x65\x01\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x26\x00\x00\x00\x00\xfe\x1c\xab\x1c\x96\x1f\x00\x00\x00\x00\x00\x00\xed\x01\x00\x00\x4e\x2b\xcb\x24\x00\x00\xaa\x01\x19\x26\x00\x00\x00\x00\x00\x00\x57\x04\x00\x00\x00\x00\x00\x00\xee\x01\x00\x00\x00\x00\x00\x00\x29\x04\x2c\x00\x28\x00\x00\x00\x00\x00\xfd\x03\x1e\x00\x00\x00\xe0\x07\x69\x07\x00\x00\x00\x00\x73\x05\x47\x00\x00\x00\x00\x00\xdb\x03\xd0\x07\x00\x00\xfc\x03\x00\x00\x00\x00\xa0\x01\x00\x00\xf6\x21\xa3\x21\x00\x00\x00\x00\x00\x00\x00\x00\xc8\x03\x2a\x00\x1a\x00\x47\x03\xe8\x03\x00\x00\xde\x02\x00\x00\x77\x01\x8d\x21\xbc\xff\x00\x00\xc7\x2a\xc6\x02\x00\x00\x00\x00\x13\x02\x00\x00\x00\x00\x00\x00\x00\x00\xe7\xff\x00\x00\x61\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf7\xff\x00\x00\x00\x00\x00\x00\xae\x03\x00\x00\x00\x00\x32\x02\x00\x00\x26\x02\x00\x00\x7d\x00\x00\x00\x9a\x01\x00\x00\x00\x00\x18\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x01\x00\x00\x00\x00\x00\x00\x3a\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x05\x00\x00\x5a\x03\x00\x00\x00\x00\x00\x00\x7a\x02\x00\x00\xbe\x03\x00\x00\x00\x00\x1b\x02\x00\x00\x2c\x01\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe1\xff\x55\x01\x1e\x01\x00\x00\x00\x00\xc0\x07\x00\x00\xe0\x07\x00\x00\x4d\x02\xa9\x07\x00\x00\x00\x00\x00\x00\x00\x00\xce\xff\x00\x00\xe8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfa\x02\x00\x00\x18\x04\x00\x00\xa6\x02\x00\x00\x00\x00\x00\x00\x24\x21\xd1\x20\xbb\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe9\x03\x33\x25\x46\x01\x0a\x01\x00\x00\x51\x1d\x68\x20\xe1\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\x02\x00\x00\x00\x00\x9a\x00\x00\x00\x00\x00\xe0\x07\x00\x00\x00\x00\xe0\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\x07\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x02\x00\x00\x00\x00\xfb\x05\x90\x03\x00\x00\xfe\x04\x32\x03\x00\x00\xda\x00\xea\x04\x00\x00\x00\x00\x5f\x00\x00\x00\x11\x00\x00\x00\xa6\x02\x00\x00\x00\x00\x00\x00\x94\x01\x00\x00\xbb\x00\x00\x00\x80\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x01\xb5\x00\x00\x00\x00\x00\xd7\x04\x00\x00\x00\x00\xf0\x00\xce\x00\x64\x02\x00\x00\x00\x00\x00\x00\xbd\x00\x05\x04\x96\x07\x91\x07\xc4\x04\xb0\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x20\x00\x00\x00\x00\x00\x00\xff\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb1\x04\x00\x00\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x00\xad\x00\x00\x00\xcd\x00\xf2\x03\x66\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x26\x00\x00\x00\x00\x70\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfd\xff\x00\x00\x00\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x00\x00\x00\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"# - -happyDefActions :: HappyAddr -happyDefActions = HappyA# "\xb5\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb5\xfd\xb5\xfd\x00\x00\xe5\xff\xed\xff\x00\x00\x00\x00\x10\xfe\xc7\xfe\xc5\xfe\xbf\xfe\xbe\xfe\xbc\xfe\xba\xfe\xb5\xfe\xb0\xfe\xab\xfe\xa3\xfe\x9f\xfe\x91\xfe\x00\x00\x00\x00\x9c\xfe\x9d\xfe\x9e\xfe\x00\xfe\xfb\xfd\xd9\xfd\xe2\xfd\xf9\xfd\xf6\xfd\xd3\xfd\x9b\xfe\xe0\xfd\xe1\xfd\xd5\xfd\xd4\xfd\xd1\xfd\xd2\xfd\xbf\xfd\xbd\xfd\xbe\xfd\xbc\xfd\xbb\xfd\xba\xfd\xb9\xfd\xb8\xfd\xb7\xfd\xb6\xfd\x00\x00\x00\x00\x00\x00\x95\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\xfe\x00\x00\x00\x00\x00\x00\x00\x00\xb5\xfd\x00\x00\x00\x00\x86\xfe\x00\x00\x00\x00\xdc\xfd\xd8\xfd\xd7\xfd\xd6\xfd\xdb\xfd\xda\xfd\xdf\xfd\x00\x00\xb5\xfd\xdd\xfd\x00\x00\xb5\xfd\xb5\xfd\x00\x00\xb5\xfd\xde\xfd\x00\x00\x00\x00\x00\x00\x47\xff\x2e\xff\x4e\xff\x44\xff\x42\xff\x3b\xff\x00\x00\x31\xff\x00\x00\x00\x00\xae\xfd\x34\xff\x41\xff\x00\x00\x00\x00\x00\x00\x27\xff\x85\xff\xad\xff\x00\x00\x00\x00\x90\xff\x86\xff\x7f\xff\x84\xff\x97\xff\xbe\xfe\x00\x00\x00\x00\x00\x00\x8f\xff\x00\x00\x00\x00\xab\xff\xaa\xff\xa9\xff\x00\x00\xb5\xfd\x8e\xff\x00\x00\x64\xff\x64\xff\x00\x00\x64\xff\x66\xff\x58\xff\x58\xff\x00\x00\x1b\xfe\x00\x00\x00\x00\xc7\xfe\x00\x00\xe5\xff\xf4\xff\xf2\xff\xb5\xfd\x00\x00\xe5\xff\x00\x00\x00\x00\x00\x00\x53\xff\x54\xff\xff\xfd\xf8\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x59\xff\x00\x00\x56\xff\x00\x00\x00\x00\x67\xff\x64\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\xff\x00\x00\x00\x00\x76\xff\x00\x00\xd9\xff\xd9\xff\xdd\xfe\x00\x00\x8b\xff\x00\x00\x21\xff\x00\x00\x00\x00\x00\x00\x00\x00\xe8\xfd\xe7\xfd\x00\x00\xec\xfd\xe3\xfd\xd0\xfd\xf2\xfd\xcd\xfd\xcc\xfd\xc9\xfd\xce\xfd\xc0\xfd\xcf\xfd\x00\x00\x00\x00\xc6\xfd\xe4\xfd\x00\x00\xc8\xfd\xc7\xfd\xc5\xfd\xed\xfe\x00\x00\x00\x00\xac\xff\x00\x00\x00\x00\x38\xff\x2a\xff\x00\x00\x00\x00\x36\xff\x84\xfe\x2a\xff\x00\x00\x00\x00\x00\x00\x00\x00\x3a\xff\x00\x00\x00\x00\x2f\xff\x45\xff\x00\x00\x32\xff\x00\x00\xac\xfd\xab\xfd\x00\x00\x00\x00\x00\x00\x2d\xff\x00\x00\x00\x00\x00\x00\x0f\xfe\x15\xfe\x15\xfe\x00\x00\xa8\xfe\x00\x00\xb1\xfe\x12\xfe\x00\x00\xb2\xfe\x00\x00\x00\x00\x43\xfe\x70\xfe\x6c\xfe\x6f\xfe\x6e\xfe\x6d\xfe\x68\xfe\x67\xfe\x66\xfe\x65\xfe\x64\xfe\x63\xfe\x62\xfe\x61\xfe\x60\xfe\x5f\xfe\x6a\xfe\x69\xfe\x5e\xfe\x5d\xfe\x5c\xfe\x5b\xfe\x5a\xfe\x59\xfe\x58\xfe\x57\xfe\x56\xfe\x55\xfe\x54\xfe\x53\xfe\x52\xfe\x51\xfe\x50\xfe\x4f\xfe\x4e\xfe\x4d\xfe\x4c\xfe\x4b\xfe\x4a\xfe\x49\xfe\x48\xfe\x6b\xfe\x47\xfe\x46\xfe\x45\xfe\x87\xfe\x88\xfe\x00\x00\x00\x00\x00\x00\x8a\xfe\x89\xfe\x00\x00\x00\x00\x00\x00\x00\x00\xbe\xfe\x00\x00\x00\x00\x7c\xfe\x00\x00\x1a\xfe\xb3\xfe\xa4\xfe\x00\x00\xa9\xfe\x83\xfe\x3f\xfe\x00\x00\x3e\xfe\xe6\xfd\xe5\xfd\x00\x00\xf0\xfd\xcb\xfd\xca\xfd\xc4\xfd\x04\xfe\x00\x00\xc2\xfd\xc3\xfd\xc1\xfd\x00\x00\x02\xfe\x83\xfe\x00\x00\x00\x00\x00\x00\xec\xfd\x00\x00\xca\xfd\xc4\xfd\x05\xfe\xc2\xfd\xc8\xfd\xc3\xfd\xc1\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\xfe\xc4\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd9\xff\x00\x00\x00\x00\xf7\xff\xe5\xff\xf6\xff\x00\x00\xd9\xff\xe8\xff\xda\xff\x00\x00\xed\xff\xef\xff\xb3\xfd\xb4\xfd\xc0\xfe\xc1\xfe\xc2\xfe\xc3\xfe\xc6\xfe\xbd\xfe\xbb\xfe\x00\x00\x0d\xfe\x0b\xfe\xa2\xfe\x0a\xfe\x11\xfe\xa5\xfe\xa6\xfe\x00\x00\x49\xff\xfa\xfd\xf5\xfd\x94\xfe\x00\x00\x99\xfe\x9a\xfe\x00\x00\x03\xfe\x85\xfe\x00\x00\x00\x00\x01\xfe\x00\x00\x00\x00\x82\xfe\x00\x00\x96\xfe\x00\x00\x3d\xfe\x00\x00\xaa\xfe\x00\x00\x00\x00\x93\xfe\x00\x00\x8f\xfe\x8e\xfe\x8d\xfe\x8c\xfe\x00\x00\xd9\xff\xa4\xff\x00\x00\x00\x00\x40\xfe\x77\xfe\xb5\xfd\x00\x00\x00\x00\xa7\xfe\x00\x00\x00\x00\x13\xfe\x15\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x4a\xff\x4b\xff\x00\x00\x4c\xff\x4d\xff\x48\xff\x39\xff\x33\xff\x37\xff\x00\x00\x40\xff\x3d\xff\x00\x00\x35\xff\x3f\xff\x00\x00\x3e\xff\x28\xff\x26\xff\x00\x00\x00\x00\xae\xff\xea\xfd\xe9\xfd\xa7\xff\xee\xfd\xf4\xfd\x00\x00\xed\xfe\xf9\xfe\x1a\xff\x00\x00\x0f\xff\x81\xff\x00\x00\x00\x00\x72\xff\xcf\xfe\xcb\xfe\xc9\xfe\x00\x00\x00\x00\xcf\xfe\x6c\xff\x71\xff\x70\xff\x00\x00\xe9\xfe\x23\xff\xed\xfe\x00\x00\x8c\xff\x49\xff\x8d\xff\x99\xff\x9a\xff\xb5\xfd\x89\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\xff\xed\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\xff\x68\xff\x94\xff\x5a\xff\x93\xff\x00\x00\x57\xff\x92\xff\x00\x00\x51\xff\x00\x00\x00\x00\x91\xff\x50\xff\xe2\xff\xb2\xfd\xb1\xfd\x00\x00\x43\xfe\xe7\xff\xd9\xff\xd9\xff\x00\x00\xdc\xff\x00\x00\x40\xfe\x00\x00\xd7\xff\x00\x00\x00\x00\xfe\xfd\xf7\xfd\x52\xff\x55\xff\x5b\xff\x69\xff\x00\x00\x00\x00\x00\x00\x00\x00\x63\xff\x00\x00\x79\xff\x77\xff\x7a\xff\x7d\xff\x7e\xff\xa3\xff\x4a\xff\xa2\xff\x00\x00\x74\xff\x82\xff\x75\xff\x83\xff\xd9\xff\x87\xff\xcd\xfe\xd9\xff\x07\xfe\x9e\xfe\xdb\xff\xd9\xff\xd9\xff\x98\xff\x9e\xff\x00\x00\x00\x00\x20\xff\x1e\xff\x9b\xff\xb5\xfd\x95\xff\x00\x00\xfd\xfd\x00\x00\x00\x00\x00\x00\x6f\xff\x6e\xff\x6d\xff\xd1\xfe\xb5\xfd\x28\xfe\x00\x00\x2a\xfe\x00\x00\xb5\xfd\xcc\xfe\xca\xfe\xd2\xfe\x00\x00\x00\x00\xf1\xfd\x15\xff\x13\xff\x00\x00\x27\xff\xec\xfe\xf3\xfe\xf2\xfe\x00\x00\xef\xfe\xf0\xfe\xf9\xfe\xb5\xfd\xa0\xff\x00\x00\xf9\xfe\x1a\xff\x00\x00\x00\x00\x00\x00\x30\xff\x00\x00\x29\xff\x00\x00\x2b\xff\xad\xfd\x2c\xff\x00\x00\xae\xfe\xaf\xfe\x18\xfe\x16\xfe\x17\xfe\x15\xfe\x19\xfe\xb6\xfe\xb8\xfe\x00\x00\xb4\xfe\xd9\xff\xd9\xff\x41\xfe\x00\x00\x44\xfe\x00\x00\xe0\xfd\xd1\xfd\xdc\xfd\xd8\xfd\xd7\xfd\xd6\xfd\xdb\xfd\xda\xfd\xdf\xfd\xdd\xfd\xde\xfd\x71\xfe\xda\xff\xa6\xff\x00\x00\x00\x00\x7d\xfe\xb9\xfe\x39\xfe\x35\xfe\x33\xfe\x32\xfe\x31\xfe\x00\x00\x3b\xfe\x83\xfe\x37\xfe\x38\xfe\xeb\xfd\xef\xfd\x81\xfe\x7a\xfe\x7b\xfe\x97\xfe\x98\xfe\x00\x00\x7e\xfe\xa0\xfe\x00\x00\xa1\xfe\x00\x00\xee\xff\xeb\xff\x00\x00\x00\x00\xea\xff\xec\xff\xe9\xff\x0e\xfe\x0c\xfe\x80\xfe\x7f\xfe\x3c\xfe\x30\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x92\xfe\x8b\xfe\xa5\xff\x75\xfe\x78\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\xfe\x00\x00\x3c\xff\x00\x00\xa8\xff\xed\xfd\xf3\xfd\xf9\xfe\x9d\xff\xf8\xfe\xf4\xfe\x00\x00\xd9\xff\xd9\xff\x9f\xff\x00\x00\x00\x00\x00\x00\x02\xff\x0a\xff\x00\x00\x11\xff\x0e\xff\x09\xff\x00\x00\x00\x00\x34\xff\x00\x00\x00\x00\x00\x00\x0f\xff\x80\xff\x73\xff\x00\x00\x27\xfe\x00\x00\x00\x00\xd0\xfe\x96\xff\x00\x00\x00\x00\x00\x00\xd9\xff\xd9\xff\x23\xff\x23\xff\x22\xff\xdb\xfe\x00\x00\x00\x00\x00\x00\xda\xff\x09\xfe\x00\x00\xda\xff\x8a\xff\xa1\xff\x00\x00\x7c\xff\x62\xff\x00\x00\x00\x00\x5f\xff\x5d\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd8\xff\xd3\xff\xf3\xff\x00\x00\xe0\xff\xd9\xff\xc9\xff\xde\xff\xc6\xff\xe1\xff\xc4\xff\x00\x00\xda\xff\xdd\xff\x75\xfe\xf0\xff\x00\x00\xd3\xff\xd1\xff\xd0\xff\xaf\xfd\xcf\xff\xd4\xff\x00\x00\xe6\xff\xe4\xff\xe3\xff\x00\x00\x00\x00\x5e\xff\x60\xff\x7b\xff\x78\xff\x88\xff\x08\xfe\x00\x00\x06\xfe\xde\xfe\xdf\xfe\x00\x00\xd6\xfe\xd9\xff\xd9\xfe\xd7\xfe\xd8\xfe\xcd\xfe\x8f\xff\x00\x00\x1d\xff\x1f\xff\xe7\xfe\x00\x00\x00\x00\x6a\xff\x00\x00\xfc\xfd\xc8\xfe\x29\xfe\x14\xff\x00\x00\x01\xff\x43\xff\x00\x00\x00\x00\x00\x00\x00\x00\x05\xff\x06\xff\x00\x00\x00\x00\x0a\xff\x12\xff\x00\x00\x00\x00\x00\x00\x10\xff\xf1\xfe\xee\xfe\x00\x00\x00\x00\x00\x00\xf5\xfe\x00\x00\xf7\xfe\x9c\xff\x00\x00\x00\x00\xb7\xfe\x25\xfe\x26\xfe\xd9\xff\x22\xfe\x00\x00\x42\xfe\x00\x00\x2b\xfe\x36\xfe\x34\xfe\x00\x00\x00\x00\x00\x00\x3a\xfe\x2f\xfe\x2d\xfe\x2e\xfe\x72\xfe\x76\xfe\x74\xfe\x00\x00\x00\x00\xcf\xfe\x1f\xfe\x1d\xfe\x00\x00\x00\x00\xda\xff\x24\xfe\x00\x00\x25\xff\xf6\xfe\x1b\xff\x1c\xff\xd9\xff\x17\xff\x00\x00\x00\x00\x00\x00\x08\xff\x00\x00\x00\x00\x04\xff\x46\xff\x0d\xff\x00\x00\x00\x00\xfe\xfe\x0c\xff\x33\xff\x00\x00\x6b\xff\xea\xfe\xeb\xfe\xe4\xfe\xd9\xff\xe5\xfe\xe3\xfe\x00\x00\x00\x00\x00\x00\x00\x00\xda\xff\xdc\xfe\xed\xfe\x00\x00\x65\xff\xcb\xff\x00\x00\x00\x00\xd4\xff\xd5\xff\x00\x00\xca\xff\xdf\xff\xc7\xff\xc2\xff\xc5\xff\x00\x00\xc3\xff\x00\x00\xd2\xff\xd6\xff\x00\x00\xb1\xff\xb0\xff\xaf\xff\xcd\xff\x00\x00\x00\x00\xf9\xfe\x1a\xff\xda\xfe\xce\xfe\x00\x00\x00\x00\x47\xff\xed\xfe\xed\xfe\xda\xff\xe8\xfe\x00\xff\x0b\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xda\xff\x19\xff\x00\x00\x23\xfe\x20\xfe\x00\x00\x1e\xfe\x21\xfe\x7c\xfe\x00\x00\x00\x00\x00\x00\x2c\xfe\x79\xfe\x73\xfe\x00\x00\x00\x00\x18\xff\x16\xff\x07\xff\x03\xff\xfc\xfe\xfd\xfe\x00\x00\x00\x00\xff\xfe\xe6\xfe\xe0\xfe\xe2\xfe\x00\x00\xd5\xfe\xf9\xfe\xd4\xfe\x5c\xff\xce\xff\xcc\xff\x00\x00\x00\x00\xc0\xff\xbe\xff\x00\x00\xf1\xff\xb2\xff\xd3\xfe\xe1\xfe\x00\x00\xfb\xfe\x00\x00\x1c\xfe\xad\xfe\x00\x00\xc1\xff\xc8\xff\xbf\xff\x00\x00\xbb\xff\xd3\xff\xfa\xfe\x00\x00\xd3\xff\xb8\xff\xb7\xff\xb0\xfd\xb6\xff\x00\x00\x00\x00\xd4\xff\xbc\xff\xb9\xff\xbd\xff\x00\x00\xb4\xff\x00\x00\xb5\xff\xb3\xff"# - -happyCheck :: HappyAddr -happyCheck = HappyA# "\xff\xff\x00\x00\x04\x00\x04\x00\x02\x00\x04\x00\x04\x00\x0b\x00\x11\x00\x12\x00\x13\x00\x2d\x00\x5c\x00\x07\x00\x11\x00\x36\x00\x32\x00\x0d\x00\x0e\x00\x2d\x00\x33\x00\x6b\x00\x07\x00\x8e\x00\x32\x00\x2d\x00\x1d\x00\x1e\x00\x2d\x00\x24\x00\x32\x00\x1c\x00\x36\x00\x32\x00\x3b\x00\x3c\x00\x13\x00\x0d\x00\x0e\x00\x0d\x00\x0e\x00\x5b\x00\x5c\x00\xa4\x00\x1c\x00\x0c\x00\x2a\x00\xac\x00\xac\x00\x0d\x00\x0e\x00\x0d\x00\x0e\x00\x0d\x00\x0e\x00\x0d\x00\x0e\x00\x0d\x00\x0e\x00\xd5\x00\x08\x00\x09\x00\x22\x00\x22\x00\x19\x00\xac\x00\x2a\x00\x6b\x00\x0d\x00\x0e\x00\x16\x00\x66\x00\x67\x00\x22\x00\x2d\x00\x0d\x00\x0e\x00\xc4\x00\x56\x00\x00\x00\x2f\x00\x09\x00\x3b\x00\x3c\x00\xcb\x00\xcc\x00\xd3\x00\xd3\x00\x24\x00\x25\x00\xd3\x00\x42\x00\x43\x00\x85\x00\x1c\x00\x09\x00\x47\x00\x0b\x00\x49\x00\x4a\x00\x4b\x00\x31\x00\x32\x00\x33\x00\xd3\x00\x4d\x00\x72\x00\xbb\x00\x24\x00\x17\x00\x1f\x00\x1e\x00\xb4\x00\x53\x00\xb7\x00\xc9\x00\xca\x00\xb9\x00\x1f\x00\x20\x00\x22\x00\xc9\x00\xca\x00\x14\x00\x15\x00\x27\x00\x1f\x00\x20\x00\x16\x00\xc6\x00\x5a\x00\x2d\x00\xc8\x00\x11\x00\x5a\x00\x84\x00\x21\x00\xbb\x00\x23\x00\x71\x00\x25\x00\x26\x00\x27\x00\x28\x00\xb7\x00\x61\x00\x15\x00\x2c\x00\x84\x00\x2e\x00\x2f\x00\xc9\x00\xca\x00\xb8\x00\x76\x00\x71\x00\x32\x00\x33\x00\x21\x00\xc6\x00\x23\x00\xb7\x00\x25\x00\x26\x00\x27\x00\x28\x00\xc5\x00\xc6\x00\xc7\x00\x2c\x00\x1c\x00\x2e\x00\x2f\x00\xc6\x00\xc7\x00\xb8\x00\xc6\x00\xd3\x00\xbb\x00\xb6\x00\x76\x00\xbc\x00\xb2\x00\xba\x00\xbf\x00\xd3\x00\xc1\x00\x1c\x00\xc5\x00\xc6\x00\xc7\x00\xd3\x00\xc9\x00\xca\x00\xd3\x00\xc6\x00\xc7\x00\xcc\x00\x84\x00\xca\x00\xcf\x00\xb8\x00\xb2\x00\xa5\x00\xbb\x00\x20\x00\xd7\x00\xd3\x00\xca\x00\xd3\x00\xd3\x00\xd6\x00\xd3\x00\xd3\x00\xc5\x00\xc6\x00\xc7\x00\xca\x00\xc9\x00\xca\x00\xa5\x00\xc6\x00\xc7\x00\xc6\x00\xc7\x00\x7a\x00\xc9\x00\xca\x00\xc6\x00\xc7\x00\x19\x00\x22\x00\xd7\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x33\x00\xd8\x00\x8b\x00\x8c\x00\x8d\x00\x43\x00\xd8\x00\x7a\x00\x4f\x00\x47\x00\x93\x00\x49\x00\x4a\x00\x4b\x00\x39\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xbf\x00\xb6\x00\x8b\x00\x8c\x00\x8d\x00\xba\x00\x63\x00\xb6\x00\x59\x00\x33\x00\x93\x00\xba\x00\x84\x00\xcc\x00\x22\x00\xb6\x00\x08\x00\xc6\x00\xc7\x00\xba\x00\x69\x00\xca\x00\xb5\x00\xc6\x00\xc7\x00\xb8\x00\xb9\x00\xca\x00\xbb\x00\x84\x00\x67\x00\xc6\x00\xc7\x00\xd6\x00\x46\x00\xca\x00\x48\x00\x39\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\x25\x00\x1a\x00\xb8\x00\xb9\x00\x5d\x00\xbb\x00\xd2\x00\x09\x00\xcc\x00\x0b\x00\x6f\x00\xcf\x00\x31\x00\x32\x00\x33\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x2e\x00\x6f\x00\x05\x00\x06\x00\x21\x00\x6b\x00\x23\x00\xd2\x00\x25\x00\x26\x00\x27\x00\x28\x00\x3a\x00\xb0\x00\xb1\x00\x2c\x00\x27\x00\x2e\x00\x2f\x00\x16\x00\x5d\x00\xb8\x00\xc4\x00\x6f\x00\x5d\x00\x1c\x00\x21\x00\xb6\x00\x23\x00\xcb\x00\xcc\x00\xba\x00\x27\x00\x28\x00\xc5\x00\xc6\x00\xc7\x00\x2c\x00\x6f\x00\x2e\x00\x2f\x00\x29\x00\x6f\x00\xc6\x00\xc7\x00\xb8\x00\xb6\x00\xca\x00\xc6\x00\xc7\x00\x17\x00\xc9\x00\xca\x00\x08\x00\x17\x00\x0a\x00\x08\x00\x09\x00\xc5\x00\xc6\x00\xc7\x00\x22\x00\xc6\x00\xc7\x00\x69\x00\x22\x00\xd8\x00\x43\x00\x44\x00\x45\x00\x26\x00\x47\x00\xd5\x00\x49\x00\x4a\x00\x4b\x00\xb8\x00\x2d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x25\x00\x46\x00\x47\x00\x25\x00\x49\x00\x4a\x00\x4b\x00\xc5\x00\xc6\x00\xc7\x00\x17\x00\x7a\x00\x31\x00\x32\x00\x33\x00\x31\x00\x32\x00\x33\x00\x18\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xaa\x00\x28\x00\x8b\x00\x8c\x00\x8d\x00\x22\x00\x65\x00\x7a\x00\xd4\x00\x26\x00\x93\x00\x05\x00\x06\x00\x7b\x00\x2b\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x05\x00\x06\x00\x8b\x00\x8c\x00\x8d\x00\x21\x00\x16\x00\x23\x00\x4a\x00\x4b\x00\x93\x00\x27\x00\x28\x00\xc6\x00\xc7\x00\x19\x00\x2c\x00\x16\x00\x2e\x00\x2f\x00\x22\x00\x17\x00\xb5\x00\x17\x00\x22\x00\xb8\x00\xb9\x00\x29\x00\xbb\x00\x43\x00\xca\x00\xd8\x00\x22\x00\x47\x00\x22\x00\x49\x00\x4a\x00\x4b\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\x17\x00\x22\x00\xb8\x00\xb9\x00\x1e\x00\xbb\x00\xd2\x00\x28\x00\x22\x00\xd4\x00\xb9\x00\x22\x00\xc6\x00\xc7\x00\x01\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x08\x00\x09\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xd2\x00\xbc\x00\xd8\x00\xb1\x00\xbf\x00\x21\x00\xc1\x00\x23\x00\xc6\x00\xc7\x00\xb8\x00\xc9\x00\xca\x00\xd8\x00\xd5\x00\x2b\x00\x2c\x00\xcc\x00\x2e\x00\x2f\x00\xcf\x00\x7a\x00\x11\x00\xc5\x00\xc6\x00\xc7\x00\xd8\x00\x94\x00\x19\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x17\x00\x22\x00\x8b\x00\x8c\x00\x8d\x00\x21\x00\x17\x00\x23\x00\x3f\x00\x40\x00\x93\x00\x22\x00\x30\x00\x31\x00\x01\x00\xb8\x00\x2c\x00\x16\x00\x2e\x00\x2f\x00\xd4\x00\x08\x00\x09\x00\xc6\x00\xc7\x00\x19\x00\xc9\x00\xca\x00\xc5\x00\xc6\x00\xc7\x00\x43\x00\x69\x00\x45\x00\x22\x00\x47\x00\x19\x00\x49\x00\x4a\x00\x4b\x00\x22\x00\xd8\x00\x4e\x00\x4f\x00\xb5\x00\x22\x00\x28\x00\xb8\x00\xb9\x00\x1e\x00\xbb\x00\xc6\x00\xc7\x00\x22\x00\xc9\x00\xca\x00\xcf\x00\x8e\x00\x7a\x00\x90\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x0d\x00\x0e\x00\x84\x00\xd8\x00\x86\x00\xd4\x00\x88\x00\xd2\x00\x94\x00\x8b\x00\x8c\x00\x8d\x00\x21\x00\x03\x00\x23\x00\x40\x00\x41\x00\x93\x00\x08\x00\x09\x00\x72\x00\x73\x00\x74\x00\x2c\x00\x59\x00\x2e\x00\x2f\x00\x47\x00\x7a\x00\x49\x00\x4a\x00\x4b\x00\x69\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\xcd\x00\x84\x00\xcf\x00\x86\x00\xd1\x00\x88\x00\x0d\x00\x0e\x00\x8b\x00\x8c\x00\x8d\x00\x69\x00\xb3\x00\xb4\x00\xb5\x00\x43\x00\x93\x00\xb8\x00\xb9\x00\x47\x00\xbb\x00\x49\x00\x4a\x00\x4b\x00\xb6\x00\x25\x00\xd3\x00\x27\x00\xba\x00\x52\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcf\x00\x31\x00\x32\x00\x33\x00\xc6\x00\xc7\x00\xd3\x00\xd2\x00\xca\x00\x03\x00\xb9\x00\xc5\x00\xc6\x00\xc7\x00\xb5\x00\xc9\x00\xca\x00\xb8\x00\xb9\x00\xd4\x00\xbb\x00\x73\x00\x74\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x7a\x00\x99\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x0a\x00\x21\x00\x84\x00\x23\x00\x86\x00\xd8\x00\x88\x00\xd2\x00\x38\x00\x8b\x00\x8c\x00\x8d\x00\x2c\x00\x3a\x00\x2e\x00\x2f\x00\x7c\x00\x93\x00\xc4\x00\x6f\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xb6\x00\xcb\x00\xcc\x00\xcd\x00\xba\x00\xcf\x00\xd3\x00\xd1\x00\x28\x00\x0d\x00\x0e\x00\x45\x00\x46\x00\x47\x00\x48\x00\x2f\x00\xc6\x00\xc7\x00\x4c\x00\x6f\x00\xca\x00\xc6\x00\xc7\x00\xd4\x00\xc9\x00\xca\x00\x70\x00\xb5\x00\x43\x00\xd4\x00\xb8\x00\xb9\x00\x47\x00\xbb\x00\x49\x00\x4a\x00\x4b\x00\xc6\x00\xc7\x00\xd8\x00\xc9\x00\xca\x00\x35\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x7b\x00\xc6\x00\xc7\x00\x7b\x00\xc9\x00\xca\x00\xd8\x00\xd2\x00\xbd\x00\x59\x00\x93\x00\xc0\x00\x95\x00\xc2\x00\x8e\x00\xc4\x00\x90\x00\x7a\x00\x8e\x00\xd8\x00\x90\x00\x7f\x00\xcb\x00\xcc\x00\xcd\x00\xd4\x00\xcf\x00\x84\x00\xd1\x00\x86\x00\x2b\x00\x88\x00\x2d\x00\xb8\x00\x8b\x00\x8c\x00\x8d\x00\x69\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x93\x00\x28\x00\x30\x00\x31\x00\xc5\x00\xc6\x00\xc7\x00\xae\x00\x2f\x00\x84\x00\x27\x00\x86\x00\x29\x00\x88\x00\x0d\x00\x0e\x00\x8b\x00\x8c\x00\x8d\x00\x99\x00\x27\x00\x43\x00\x29\x00\x45\x00\x93\x00\x47\x00\xb6\x00\x49\x00\x4a\x00\x4b\x00\xba\x00\xd4\x00\x4e\x00\x4f\x00\xb5\x00\x01\x00\xd4\x00\xb8\x00\xb9\x00\x27\x00\xbb\x00\x29\x00\xc6\x00\xc7\x00\x54\x00\x55\x00\xca\x00\x57\x00\x58\x00\x0f\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x16\x00\x27\x00\xb5\x00\x29\x00\x8e\x00\xb8\x00\xb9\x00\xd2\x00\xbb\x00\x34\x00\x54\x00\x55\x00\xc6\x00\xc7\x00\x58\x00\xc9\x00\xca\x00\x34\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x56\x00\x78\x00\x79\x00\x7a\x00\x30\x00\x31\x00\xd8\x00\xd2\x00\x39\x00\x45\x00\x46\x00\x47\x00\x48\x00\x84\x00\x75\x00\x86\x00\x4c\x00\x88\x00\x0d\x00\x0e\x00\x8b\x00\x8c\x00\x8d\x00\x43\x00\x27\x00\x45\x00\x29\x00\x47\x00\x93\x00\x49\x00\x4a\x00\x4b\x00\xca\x00\x4f\x00\x4e\x00\x4f\x00\xd5\x00\x53\x00\x54\x00\x55\x00\x39\x00\x42\x00\x43\x00\x27\x00\x45\x00\x29\x00\x47\x00\x39\x00\x49\x00\x4a\x00\x4b\x00\x61\x00\x27\x00\x47\x00\x29\x00\x49\x00\x4a\x00\x4b\x00\x39\x00\xb9\x00\xc6\x00\xc7\x00\xb5\x00\x22\x00\xca\x00\xb8\x00\xb9\x00\x27\x00\xbb\x00\x29\x00\x74\x00\xb8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x52\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xc5\x00\xc6\x00\xc7\x00\x42\x00\x43\x00\xd3\x00\xd8\x00\xd2\x00\x47\x00\x17\x00\x49\x00\x4a\x00\x4b\x00\x42\x00\x43\x00\x1a\x00\x1b\x00\x1c\x00\x47\x00\x8e\x00\x49\x00\x4a\x00\x4b\x00\x42\x00\x43\x00\x96\x00\x97\x00\x98\x00\x47\x00\x17\x00\x49\x00\x4a\x00\x4b\x00\x43\x00\x27\x00\x45\x00\x29\x00\x47\x00\x16\x00\x49\x00\x4a\x00\x4b\x00\xc6\x00\xc7\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x27\x00\x47\x00\x29\x00\x49\x00\x4a\x00\x4b\x00\x43\x00\x22\x00\x45\x00\xb9\x00\x47\x00\x17\x00\x49\x00\x4a\x00\x4b\x00\x54\x00\x55\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x16\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\xb9\x00\x45\x00\x27\x00\x47\x00\x29\x00\x49\x00\x4a\x00\x4b\x00\x32\x00\x4d\x00\x4e\x00\x4f\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x5f\x00\x60\x00\xc6\x00\xc7\x00\x55\x00\xc9\x00\xca\x00\xc5\x00\xc6\x00\xc7\x00\x49\x00\xc9\x00\xca\x00\xd8\x00\x8e\x00\x6d\x00\x6e\x00\x43\x00\x68\x00\x45\x00\xd8\x00\x47\x00\x5b\x00\x49\x00\x4a\x00\x4b\x00\x6d\x00\x6e\x00\x4e\x00\x4f\x00\x29\x00\x51\x00\x2b\x00\xb8\x00\x84\x00\x8e\x00\x96\x00\x97\x00\x98\x00\x0d\x00\x0e\x00\xc6\x00\xc7\x00\x84\x00\xc9\x00\xca\x00\xc5\x00\xc6\x00\xc7\x00\x0d\x00\x0e\x00\xc6\x00\xc7\x00\x49\x00\xc9\x00\xca\x00\x6a\x00\xb9\x00\x2b\x00\xd8\x00\x2d\x00\xc6\x00\xc7\x00\x1c\x00\xc9\x00\xca\x00\x0d\x00\x0e\x00\xc4\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\x28\x00\xb9\x00\xd8\x00\x0f\x00\x10\x00\xc6\x00\xc7\x00\x0c\x00\xc9\x00\xca\x00\x29\x00\xd8\x00\xc4\x00\x29\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\x73\x00\xb9\x00\xd8\x00\xa8\x00\xa9\x00\xaa\x00\x6c\x00\x6d\x00\x6e\x00\x5b\x00\x29\x00\xd8\x00\x2b\x00\x17\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\x17\x00\x45\x00\x17\x00\x47\x00\x0f\x00\x49\x00\x4a\x00\x4b\x00\x97\x00\x98\x00\x4e\x00\x4f\x00\xd8\x00\x51\x00\x0c\x00\x0d\x00\x0e\x00\xb9\x00\x1c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x0c\x00\x0d\x00\x0e\x00\x29\x00\x5e\x00\x5f\x00\x60\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\x1d\x00\x45\x00\x32\x00\x47\x00\x28\x00\x49\x00\x4a\x00\x4b\x00\x32\x00\x4d\x00\x4e\x00\x4f\x00\xd8\x00\x6c\x00\x6d\x00\x6e\x00\x05\x00\x06\x00\x43\x00\x27\x00\x45\x00\x1c\x00\x47\x00\x73\x00\x49\x00\x4a\x00\x4b\x00\x2b\x00\x4d\x00\x4e\x00\x4f\x00\x6c\x00\x6d\x00\x6e\x00\x7d\x00\x7e\x00\x7f\x00\x43\x00\x8e\x00\x45\x00\x72\x00\x47\x00\x22\x00\x49\x00\x4a\x00\x4b\x00\x0c\x00\x4d\x00\x4e\x00\x4f\x00\x7d\x00\x7e\x00\x7f\x00\x96\x00\x97\x00\x98\x00\x43\x00\x22\x00\x45\x00\x17\x00\x47\x00\x17\x00\x49\x00\x4a\x00\x4b\x00\x1e\x00\x4d\x00\x4e\x00\x4f\x00\x96\x00\x97\x00\x98\x00\x50\x00\x51\x00\x52\x00\x05\x00\x43\x00\x84\x00\x45\x00\x84\x00\x47\x00\xb9\x00\x49\x00\x4a\x00\x4b\x00\x17\x00\x4d\x00\x4e\x00\x4f\x00\x81\x00\x82\x00\x83\x00\x0d\x00\x0e\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\x32\x00\x45\x00\x1e\x00\x47\x00\xb6\x00\x49\x00\x4a\x00\x4b\x00\xba\x00\x4d\x00\x4e\x00\x4f\x00\xd8\x00\x0d\x00\x0e\x00\x08\x00\x09\x00\xb9\x00\x37\x00\x38\x00\xc6\x00\xc7\x00\x05\x00\x06\x00\xca\x00\x05\x00\x06\x00\x29\x00\x28\x00\x29\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\xb9\x00\x45\x00\x28\x00\x47\x00\x16\x00\x49\x00\x4a\x00\x4b\x00\x22\x00\x4d\x00\x4e\x00\x4f\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\xb9\x00\x45\x00\x17\x00\x47\x00\x1c\x00\x49\x00\x4a\x00\x4b\x00\x84\x00\x4d\x00\x4e\x00\x4f\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\xb9\x00\x45\x00\x74\x00\x47\x00\x79\x00\x49\x00\x4a\x00\x4b\x00\x73\x00\x4d\x00\x4e\x00\x4f\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x05\x00\x06\x00\xb9\x00\x49\x00\x4a\x00\x84\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x29\x00\x03\x00\x04\x00\xd8\x00\x84\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\x25\x00\x45\x00\x84\x00\x47\x00\xb9\x00\x49\x00\x4a\x00\x4b\x00\x1c\x00\x4d\x00\x4e\x00\x4f\x00\xd8\x00\x64\x00\x49\x00\x4a\x00\x28\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\x1e\x00\x45\x00\x17\x00\x47\x00\x64\x00\x49\x00\x4a\x00\x4b\x00\x5f\x00\x4d\x00\x4e\x00\x4f\x00\xd8\x00\x7e\x00\x7f\x00\x28\x00\x29\x00\xb9\x00\x53\x00\x54\x00\x3e\x00\x3f\x00\x40\x00\x05\x00\x06\x00\x84\x00\x1d\x00\x40\x00\x41\x00\x1d\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\xb9\x00\x45\x00\x17\x00\x47\x00\x5b\x00\x49\x00\x4a\x00\x4b\x00\x31\x00\x4d\x00\x4e\x00\x4f\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\xb9\x00\x45\x00\x1e\x00\x47\x00\x56\x00\x49\x00\x4a\x00\x4b\x00\x05\x00\x4d\x00\x4e\x00\x4f\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\x2b\x00\x45\x00\x22\x00\x47\x00\x2b\x00\x49\x00\x4a\x00\x4b\x00\x41\x00\x4d\x00\x4e\x00\x4f\x00\xd8\x00\x1c\x00\xc6\x00\xc7\x00\x29\x00\xc9\x00\xca\x00\x43\x00\xb9\x00\x45\x00\x5d\x00\x47\x00\x0c\x00\x49\x00\x4a\x00\x4b\x00\x17\x00\x22\x00\x4e\x00\x4f\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\x28\x00\x45\x00\x5b\x00\x47\x00\xb9\x00\x49\x00\x4a\x00\x4b\x00\x24\x00\x73\x00\x4e\x00\x4f\x00\xd8\x00\x24\x00\x1d\x00\x5b\x00\x2d\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\x2b\x00\x45\x00\x1d\x00\x47\x00\xb6\x00\x49\x00\x4a\x00\x4b\x00\xba\x00\xb6\x00\x4e\x00\x4f\x00\xd8\x00\xba\x00\x2c\x00\x1d\x00\x28\x00\xb9\x00\x1d\x00\x22\x00\xc6\x00\xc7\x00\x2d\x00\x29\x00\xca\x00\xc6\x00\xc7\x00\x22\x00\x84\x00\xca\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\xb9\x00\x45\x00\x21\x00\x47\x00\x0f\x00\x49\x00\x4a\x00\x4b\x00\x0f\x00\x16\x00\x4e\x00\x4f\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\xb9\x00\x45\x00\x1e\x00\x47\x00\x4b\x00\x49\x00\x4a\x00\x4b\x00\x17\x00\x46\x00\x4e\x00\x4f\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x17\x00\x0f\x00\xb9\x00\x5f\x00\x28\x00\x01\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x0c\x00\x21\x00\x84\x00\xd8\x00\x84\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\xb9\x00\x45\x00\x84\x00\x47\x00\x28\x00\x49\x00\x4a\x00\x4b\x00\x29\x00\x1e\x00\x4e\x00\x4f\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\x1e\x00\x45\x00\x1d\x00\x47\x00\xb9\x00\x49\x00\x4a\x00\x4b\x00\x22\x00\x17\x00\x4e\x00\x4f\x00\xd8\x00\x73\x00\x73\x00\x28\x00\x73\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\x2b\x00\x45\x00\x24\x00\x47\x00\x22\x00\x49\x00\x4a\x00\x4b\x00\x5f\x00\x73\x00\x4e\x00\x4f\x00\xd8\x00\x24\x00\x27\x00\x5b\x00\x1c\x00\xb9\x00\x17\x00\x1e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x1d\x00\x24\x00\x24\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\xb9\x00\x45\x00\x61\x00\x47\x00\x1b\x00\x49\x00\x4a\x00\x4b\x00\x29\x00\x22\x00\x4e\x00\x4f\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\x05\x00\x45\x00\x74\x00\x47\x00\x84\x00\x49\x00\x4a\x00\x4b\x00\x1c\x00\x17\x00\x4e\x00\x4f\x00\xd8\x00\x22\x00\xc6\x00\xc7\x00\x17\x00\xc9\x00\xca\x00\x43\x00\xb9\x00\x45\x00\x17\x00\x47\x00\x17\x00\x49\x00\x4a\x00\x4b\x00\x17\x00\x17\x00\x4e\x00\x4f\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\xb9\x00\x45\x00\x17\x00\x47\x00\x17\x00\x49\x00\x4a\x00\x4b\x00\x21\x00\x2d\x00\x4e\x00\x4f\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\x44\x00\x45\x00\x2b\x00\x47\x00\xb9\x00\x49\x00\x4a\x00\x4b\x00\x17\x00\x41\x00\x21\x00\x41\x00\xd8\x00\x4b\x00\x41\x00\x27\x00\x6d\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\x70\x00\x45\x00\x64\x00\x47\x00\x2d\x00\x49\x00\x4a\x00\x4b\x00\x84\x00\x0c\x00\x46\x00\x47\x00\xd8\x00\x49\x00\x4a\x00\x4b\x00\x17\x00\xb9\x00\x43\x00\x4f\x00\x45\x00\x84\x00\x47\x00\x17\x00\x49\x00\x4a\x00\x4b\x00\x17\x00\x22\x00\x21\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x2b\x00\xb9\x00\x61\x00\x62\x00\x63\x00\x29\x00\x65\x00\x73\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x64\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x46\x00\x47\x00\xb9\x00\x49\x00\x4a\x00\x4b\x00\x28\x00\x22\x00\x20\x00\x05\x00\x0f\x00\x6b\x00\x84\x00\xd8\x00\x1d\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x85\x00\xb9\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x0f\x00\x61\x00\x62\x00\x63\x00\x20\x00\x65\x00\x1d\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x68\x00\xb9\x00\x16\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x5e\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x85\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x0c\x00\xb9\x00\x28\x00\x85\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x0f\x00\xd8\x00\x0f\x00\xbb\x00\x0f\x00\x1d\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x1d\x00\xb9\x00\x1d\x00\xc6\x00\xc7\x00\x85\x00\xc9\x00\xca\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x1d\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x2c\x00\x85\x00\xd8\x00\x00\x00\x2c\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x6b\x00\xff\xff\xff\xff\xff\xff\xd8\x00\xff\xff\xc6\x00\xc7\x00\xbb\x00\xc9\x00\xca\x00\xff\xff\xff\xff\x49\x00\x4a\x00\x4b\x00\x01\x00\xff\xff\xff\xff\xc6\x00\xc7\x00\xff\xff\xc9\x00\xca\x00\xd8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xff\xff\xff\xff\xff\xff\xc4\x00\xd8\x00\xc6\x00\xc7\x00\xff\xff\xc9\x00\xca\x00\xcb\x00\xcc\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd8\x00\xd9\x00\xda\x00\xc6\x00\xc7\x00\xff\xff\xc9\x00\xca\x00\xc6\x00\xc7\x00\xff\xff\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x00\xc7\x00\xd8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xd8\x00\xc6\x00\xc7\x00\xff\xff\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xd8\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xd8\x00\xb8\x00\xff\xff\xff\xff\xbb\x00\xc6\x00\xc7\x00\xff\xff\xc9\x00\xca\x00\xff\xff\x61\x00\x16\x00\xff\xff\xc5\x00\xc6\x00\xc7\x00\xff\xff\xc9\x00\xca\x00\xff\xff\xc6\x00\xc7\x00\xd8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xc6\x00\xc7\x00\xd8\x00\xc9\x00\xca\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xd8\x00\xff\xff\xff\xff\x1c\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\x4f\x00\xff\xff\xff\xff\x2a\x00\x53\x00\x54\x00\x55\x00\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x61\x00\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\x63\x00\xff\xff\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\xff\xff\x6c\x00\xff\xff\x6e\x00\xff\xff\xff\xff\x71\x00\xff\xff\xff\xff\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\xff\xff\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\xff\xff\xff\xff\xff\xff\x83\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xbd\x00\x18\x00\xff\xff\xc0\x00\xff\xff\xc2\x00\xff\xff\xc4\x00\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xcb\x00\xcc\x00\xcd\x00\xff\xff\xcf\x00\x2a\x00\xd1\x00\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\x63\x00\xff\xff\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\xff\xff\x6c\x00\xff\xff\x6e\x00\xff\xff\xff\xff\x71\x00\xff\xff\xff\xff\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\xff\xff\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\xff\xff\xff\xff\xff\xff\x83\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xbd\x00\x18\x00\xff\xff\xc0\x00\xff\xff\xc2\x00\xff\xff\xc4\x00\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xcb\x00\xcc\x00\xcd\x00\xff\xff\xcf\x00\x2a\x00\xd1\x00\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\x01\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x01\x00\x6c\x00\xff\xff\x6e\x00\x05\x00\x06\x00\x71\x00\xff\xff\x09\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x16\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x16\x00\xff\xff\x18\x00\x83\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x25\x00\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\x2f\x00\x30\x00\xff\xff\x32\x00\xff\xff\x22\x00\xff\xff\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\xff\xff\x16\x00\x01\x00\x18\x00\xff\xff\xff\xff\x05\x00\x06\x00\x31\x00\x32\x00\x33\x00\x20\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\x32\x00\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\x06\x00\x74\x00\xff\xff\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\x01\x00\x18\x00\xff\xff\x80\x00\x05\x00\x06\x00\xff\xff\xff\xff\x5f\x00\x20\x00\x61\x00\xff\xff\xff\xff\x24\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x32\x00\xff\xff\x74\x00\xff\xff\x20\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\x06\x00\xff\xff\x32\x00\xff\xff\x74\x00\xff\xff\x01\x00\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\x01\x00\x18\x00\xff\xff\xff\xff\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\x20\x00\x61\x00\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x32\x00\xff\xff\x74\x00\xff\xff\x20\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x32\x00\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x80\x00\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x61\x00\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x80\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x80\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\x7c\x00\x7d\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\x7c\x00\x7d\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\x7c\x00\x7d\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\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\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\x7c\x00\x7d\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\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\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\x6f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\x7c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xbd\x00\x18\x00\xff\xff\xc0\x00\xff\xff\xc2\x00\xff\xff\xc4\x00\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xcb\x00\xcc\x00\xcd\x00\xff\xff\xcf\x00\x2a\x00\xd1\x00\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\x70\x00\xff\xff\xff\xff\xff\xff\x74\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\x6f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\x60\x00\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\x16\x00\x17\x00\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\x26\x00\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\x59\x00\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x16\x00\xff\xff\x65\x00\x66\x00\x67\x00\xff\xff\xff\xff\x6a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x71\x00\x25\x00\xff\xff\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\x59\x00\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x16\x00\xff\xff\x65\x00\x66\x00\x67\x00\xff\xff\xff\xff\x6a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x71\x00\xff\xff\xff\xff\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\x59\x00\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x16\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x71\x00\xff\xff\xff\xff\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\x01\x00\x48\x00\x74\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\x65\x00\x66\x00\x67\x00\xff\xff\xff\xff\x6a\x00\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\x61\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x01\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\x59\x00\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x16\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x71\x00\xff\xff\xff\xff\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\x65\x00\x66\x00\x67\x00\xff\xff\xff\xff\x6a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\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\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x01\x00\x42\x00\x43\x00\x44\x00\x05\x00\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6a\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x2d\x00\xff\xff\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x6b\x00\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\x71\x00\x48\x00\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\xff\xff\x07\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x61\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\x74\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\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\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\x93\x00\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\xff\xff\x07\x00\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xb5\x00\x48\x00\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xd2\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\x74\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\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\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\x93\x00\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\xff\xff\x07\x00\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xb5\x00\x48\x00\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xd2\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\x74\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\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\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\x93\x00\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\xff\xff\x07\x00\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xb5\x00\x48\x00\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xd2\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\x74\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\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\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x01\x00\xff\xff\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\x09\x00\xff\xff\x0b\x00\x61\x00\xff\xff\xff\xff\x08\x00\x09\x00\x0a\x00\x0b\x00\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x74\x00\x20\x00\x05\x00\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\xff\xff\x24\x00\x25\x00\x2d\x00\x27\x00\x28\x00\xff\xff\xff\xff\x16\x00\x17\x00\xff\xff\xff\xff\xff\xff\x01\x00\x31\x00\x32\x00\x33\x00\x05\x00\x06\x00\xff\xff\x08\x00\x09\x00\xff\xff\x0b\x00\x26\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\xff\xff\x18\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x20\x00\xff\xff\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\x27\x00\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\x2d\x00\xff\xff\x2f\x00\x30\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\x06\x00\x61\x00\x08\x00\x09\x00\xff\xff\x0b\x00\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\xff\xff\x18\x00\x01\x00\x74\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\x20\x00\x61\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x16\x00\x2f\x00\x18\x00\x19\x00\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\x17\x00\x18\x00\x01\x00\xff\xff\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\x20\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\x5f\x00\x20\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\x20\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x01\x00\xff\xff\x03\x00\x04\x00\x05\x00\x06\x00\x74\x00\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x68\x00\xff\xff\xff\xff\x16\x00\x01\x00\x18\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\x74\x00\x20\x00\x21\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\x01\x00\x16\x00\xff\xff\x18\x00\x05\x00\x06\x00\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x01\x00\x18\x00\x03\x00\x04\x00\x05\x00\x06\x00\x74\x00\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\xff\xff\x18\x00\x01\x00\x30\x00\xff\xff\xff\xff\x05\x00\x06\x00\xff\xff\x20\x00\x61\x00\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x74\x00\x5f\x00\xff\xff\x61\x00\x20\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x01\x00\x02\x00\xff\xff\xff\xff\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\x74\x00\x61\x00\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\x61\x00\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\x06\x00\x74\x00\xff\xff\x5e\x00\xff\xff\xff\xff\x61\x00\xff\xff\x08\x00\x09\x00\x0a\x00\x0b\x00\xff\xff\x68\x00\xff\xff\xff\xff\x16\x00\x01\x00\x18\x00\xff\xff\xff\xff\x05\x00\x06\x00\xff\xff\xff\xff\x74\x00\x20\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x24\x00\x25\x00\x16\x00\x27\x00\x18\x00\xff\xff\x30\x00\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x20\x00\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\x6b\x00\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\xff\xff\x05\x00\x06\x00\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\x61\x00\x05\x00\x06\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x74\x00\x18\x00\xff\xff\x61\x00\xff\xff\x01\x00\x02\x00\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\x06\x00\x74\x00\xff\xff\xff\xff\xff\xff\x16\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x1e\x00\xff\xff\xff\xff\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\x26\x00\xff\xff\x01\x00\x61\x00\xff\xff\x20\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6b\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x74\x00\x16\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\x74\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x61\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x16\x00\x74\x00\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6b\x00\xff\xff\xff\xff\x16\x00\x01\x00\x02\x00\x71\x00\xff\xff\xff\xff\x74\x00\xff\xff\x01\x00\x02\x00\xff\xff\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x1e\x00\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\x26\x00\x01\x00\x02\x00\xff\xff\xff\xff\x05\x00\x06\x00\x61\x00\x01\x00\x02\x00\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\x16\x00\x61\x00\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x74\x00\xff\xff\x01\x00\x61\x00\xff\xff\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x16\x00\x01\x00\x02\x00\xff\xff\xff\xff\xff\xff\x74\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x16\x00\xff\xff\x01\x00\x61\x00\xff\xff\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x68\x00\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x16\x00\x01\x00\x02\x00\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\x01\x00\x16\x00\xff\xff\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x16\x00\xff\xff\xff\xff\x08\x00\x09\x00\x0a\x00\x0b\x00\x74\x00\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\x24\x00\x25\x00\x61\x00\x27\x00\x28\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\x74\x00\xff\xff\xff\xff\x61\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x74\x00\x61\x00\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xff\xff\xa3\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xab\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\x08\x00\x09\x00\x0a\x00\x0b\x00\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\x22\x00\xff\xff\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\x29\x00\xff\xff\x2b\x00\x9f\x00\xa0\x00\xa1\x00\xff\xff\xa3\x00\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\xab\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\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\xa0\x00\xa1\x00\xff\xff\xa3\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xab\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\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\xa2\x00\xa3\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xab\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\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\xab\x00\xff\xff\xad\x00\xff\xff\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\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\xa2\x00\xa3\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xab\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\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\xab\x00\xff\xff\xad\x00\xff\xff\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\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\xa2\x00\xa3\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xab\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\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\xab\x00\xff\xff\xad\x00\xff\xff\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\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\xab\x00\xff\xff\xad\x00\xff\xff\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\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\xa3\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xab\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xab\x00\xff\xff\xff\xff\xff\xff\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\xff\xff\xff\xff\x92\x00\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xbe\x00\xff\xff\xc0\x00\xff\xff\xff\xff\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\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\x8f\x00\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x9c\x00\x9d\x00\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\x8f\x00\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xbe\x00\xff\xff\xc0\x00\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xff\xff\xce\x00\xff\xff\xd0\x00\xd1\x00\xd2\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xbe\x00\xff\xff\xc0\x00\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xff\xff\xce\x00\xff\xff\xd0\x00\xd1\x00\xd2\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\x8f\x00\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\x8f\x00\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xbe\x00\xff\xff\xc0\x00\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xff\xff\xce\x00\xff\xff\xd0\x00\xd1\x00\xd2\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xbe\x00\xff\xff\xc0\x00\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xff\xff\xce\x00\xff\xff\xd0\x00\xd1\x00\xd2\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\x8f\x00\xff\xff\xff\xff\xff\xff\x93\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\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xbe\x00\xff\xff\xc0\x00\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xff\xff\xce\x00\xff\xff\xd0\x00\xd1\x00\xd2\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xa6\x00\xa7\x00\xff\xff\x93\x00\xff\xff\xab\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xa7\x00\xff\xff\xff\xff\xff\xff\xab\x00\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x92\x00\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xab\x00\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xd2\x00\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xd2\x00\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\x86\x00\xff\xff\x88\x00\xff\xff\xd2\x00\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\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\x8a\x00\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x93\x00\xff\xff\xff\xff\x96\x00\x97\x00\x98\x00\xff\xff\x9a\x00\x9b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\x96\x00\x97\x00\x98\x00\xff\xff\x9a\x00\x9b\x00\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xb5\x00\xff\xff\xd2\x00\xb8\x00\xb9\x00\x93\x00\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xd2\x00\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xd2\x00\xb8\x00\xb9\x00\xff\xff\xbb\x00\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xb5\x00\xff\xff\xd2\x00\xb8\x00\xb9\x00\x93\x00\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xd2\x00\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xd2\x00\xb8\x00\xb9\x00\xff\xff\xbb\x00\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xb5\x00\xff\xff\xd2\x00\xb8\x00\xb9\x00\x93\x00\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xd2\x00\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xd2\x00\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\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"# - -happyTable :: HappyAddr -happyTable = HappyA# "\x00\x00\x0c\x00\x09\x00\x0b\x00\x92\x00\x09\x00\x93\x00\x22\x02\x32\x03\x33\x03\x34\x03\xb6\x00\xf7\x03\xc8\x02\x20\x04\x03\x03\xff\x02\x7e\x01\xfe\x01\xb6\x00\xa7\x03\xe6\x02\x7c\x01\xe7\x00\x02\x03\xb6\x00\x21\x04\x22\x04\xb6\x00\xda\x01\xb7\x00\x4d\x02\x57\x02\x01\x01\x3f\x03\x1b\x03\xcb\x03\x7e\x01\xfe\x01\x7e\x01\x54\x03\x9c\x03\x9d\x03\x92\x02\x4d\x02\x0d\x02\xff\x01\xfa\x00\x00\x01\x7e\x01\x0c\x03\x7e\x01\xd9\x02\x7e\x01\x70\x03\x7e\x01\x54\x03\x7e\x01\x70\x03\x19\x04\xcd\x00\xce\x00\xac\x01\xd3\x02\xa1\x01\x03\x01\x01\x02\x9a\x00\x7e\x01\xd9\x02\xba\xff\xa8\x03\xa9\x03\x9e\x01\xf6\x03\x7e\x01\x0c\x03\xe8\x00\x85\x03\x83\x01\x0e\x02\xce\x00\x1a\x03\x1b\x03\xc7\x00\xc8\x00\xfb\x00\xfb\x00\xe1\x01\xd3\x00\x93\x02\xad\x03\x04\x02\xf5\xff\x11\x02\xce\x00\xb3\x00\xd0\x00\x61\x00\x62\x00\x63\x00\xd6\x00\xd7\x00\xd8\x00\xfb\x00\xf5\x03\x86\x03\x9e\x03\x64\x03\xea\x00\x84\x01\x2a\x04\x44\x03\xd6\x01\x05\x03\xe7\x02\x25\x00\x45\x03\x2c\x04\xce\x03\xe4\x00\x24\x00\x25\x00\x27\x03\x28\x03\xd4\x00\xcd\x03\xce\x03\x75\x02\x59\x02\x71\x03\xeb\x00\x23\x00\x27\x04\x72\x03\xc8\x02\x6f\x00\x9e\x03\x70\x00\x55\x03\x29\x03\xb3\x01\xb4\x01\x72\x00\x58\x02\x1e\x04\xc3\x03\x73\x00\xc4\x02\x74\x00\x75\x00\x24\x00\x25\x00\xe9\x01\x0d\x03\x56\x03\x76\x02\x77\x02\x6f\x00\x59\x02\x70\x00\x58\x02\xc4\x03\xb3\x01\xb4\x01\x72\x00\x20\x00\x21\x00\x22\x00\x73\x00\x13\x02\x74\x00\x75\x00\x21\x00\x1c\x03\x35\x03\x59\x02\xb8\x00\x36\x03\x23\x04\x0e\x03\xdb\x01\x00\x02\x24\x04\xdc\x01\xb8\x00\xdd\x01\x13\x02\x20\x00\x21\x00\x22\x00\xb8\x00\x24\x00\x25\x00\xb8\x00\x21\x00\x9e\x00\xde\x01\x12\x02\x9f\x00\xdf\x01\x35\x03\x02\x02\xda\x02\x36\x03\x10\x04\x37\x03\x23\x02\x7d\x01\x0a\x00\x0a\x00\x25\x04\x0a\x00\x0a\x00\x20\x00\x21\x00\x22\x00\x7d\x01\x24\x00\x25\x00\xdb\x02\x21\x00\x1c\x03\x21\x00\x68\x00\x76\x00\x69\x00\x25\x00\x21\x00\x68\x00\x0d\x04\xd3\x02\x37\x03\x77\x00\x10\x00\x78\x00\x12\x00\x13\x00\x14\x00\x15\x00\xa7\x03\x6a\x00\x16\x00\x17\x00\x18\x00\xc8\x01\xd7\x01\x76\x00\xc0\x00\xb3\x00\x19\x00\x61\x00\x62\x00\x63\x00\xd4\x02\x77\x00\x10\x00\x78\x00\x12\x00\x13\x00\x14\x00\x15\x00\x62\x03\x23\x04\x16\x00\x17\x00\x18\x00\x24\x04\xc1\x00\xcf\x03\x05\x04\xe8\x01\x19\x00\xd0\x03\x14\x02\xde\x01\xac\x01\xcf\x03\xcd\x00\x21\x00\x9e\x00\xd0\x03\x11\x04\x9f\x00\x1c\x00\x21\x00\x9e\x00\x1d\x00\x1e\x00\x9f\x00\x1f\x00\x17\x02\xff\x03\x21\x00\x9e\x00\x25\x04\x98\x00\x9f\x00\x99\x00\xad\x01\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\xd3\x00\x68\x01\x1d\x00\x1e\x00\xd4\x03\x1f\x00\x26\x00\xce\x00\x19\x02\xd0\x00\x01\x04\x1a\x02\xd6\x00\xd7\x00\xd8\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x69\x01\xd5\x03\x2c\x00\x2d\x00\x6f\x00\x9a\x00\x70\x00\x26\x00\xb2\x01\xb3\x01\xb4\x01\x72\x00\x6a\x01\x8b\x01\x8c\x01\x73\x00\xd4\x00\x74\x00\x75\x00\xa0\x03\x7b\x02\x8d\x01\xb5\x01\x02\x04\xe2\x01\x4d\x02\x6f\x00\xcf\x03\x70\x00\xc7\x00\xc8\x00\xd0\x03\xd5\x02\x72\x00\x20\x00\x21\x00\x22\x00\x73\x00\x7c\x02\x74\x00\x75\x00\xf7\x01\xe3\x01\x21\x00\x9e\x00\xe9\x01\xfd\x02\x9f\x00\x21\x00\x68\x00\x31\x04\x69\x00\x25\x00\xcd\x00\x0a\x04\xcf\x00\xcd\x00\xce\x00\x20\x00\x21\x00\x22\x00\x0b\x04\x21\x00\x9e\x00\x06\x04\x0b\x04\x6a\x00\x5e\x00\xf8\x01\xf9\x01\xce\x02\x60\x00\x0c\x04\x61\x00\x62\x00\x63\x00\xe9\x01\xa0\x01\xdf\x00\x66\x00\xfa\x01\xe6\x00\xd3\x00\xef\x02\xa5\x03\xd3\x00\x61\x00\x62\x00\x63\x00\x20\x00\x21\x00\x22\x00\xd1\x01\x76\x00\xd6\x00\xd7\x00\xd8\x00\xd6\x00\xd7\x00\xd8\x00\xc8\x03\x77\x00\x10\x00\x78\x00\x12\x00\x13\x00\x14\x00\x15\x00\xec\x03\xd2\x01\x16\x00\x17\x00\x18\x00\xa7\x01\xa6\x03\x76\x00\x9a\x03\xa8\x01\x19\x00\x2c\x00\x2d\x00\xed\x03\xa9\x01\x77\x00\x10\x00\x78\x00\x12\x00\x13\x00\x14\x00\x15\x00\x2c\x00\x2d\x00\x16\x00\x17\x00\x18\x00\x6f\x00\xa0\x03\x70\x00\x33\x01\x63\x00\x19\x00\x71\x00\x72\x00\x21\x00\x68\x00\xe3\x00\x73\x00\xe9\x02\x74\x00\x75\x00\xd3\x02\xcd\x02\x1c\x00\xbc\x02\xe4\x00\x1d\x00\x1e\x00\x02\x03\x1f\x00\xc9\x01\x7e\x02\x0b\x03\xe4\x00\xb3\x00\xe4\x00\x61\x00\x62\x00\x63\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x9b\x01\x6b\x02\x1d\x00\x1e\x00\xe1\x03\x1f\x00\x26\x00\xe3\x03\xe2\x03\xae\x03\x67\x00\xe4\x00\x21\x00\x68\x00\x7a\x01\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x79\x01\x96\x00\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x26\x00\xdb\x01\x81\x02\xc9\x02\xdc\x01\x6f\x00\xe1\x02\x70\x00\x21\x00\x68\x00\x8d\x01\x69\x00\x25\x00\x6a\x00\xbd\x03\x46\x02\x47\x02\xde\x01\x74\x00\x75\x00\xdf\x01\x76\x00\xbf\x03\x20\x00\x21\x00\x22\x00\x6a\x00\xc2\x03\xd3\x01\x77\x00\x10\x00\x78\x00\x12\x00\x13\x00\x14\x00\x15\x00\xce\x01\x9e\x01\x16\x00\x17\x00\x18\x00\x6f\x00\xc6\x03\x70\x00\x30\x02\xa6\x00\x19\x00\x9e\x01\x42\x03\x39\x02\x78\x01\x08\x02\xb0\x03\x2c\x03\x74\x00\x75\x00\x47\x03\x79\x01\x96\x00\x21\x00\x68\x00\xd4\x01\x69\x00\x25\x00\x20\x00\x21\x00\x22\x00\x5e\x00\x76\x03\x5f\x00\xd5\x01\x60\x00\x5a\x01\x61\x00\x62\x00\x63\x00\x6b\x02\x34\x01\x3a\x02\x66\x00\x1c\x00\xe4\x00\x6c\x02\x1d\x00\x1e\x00\xc1\x02\x1f\x00\x21\x00\x68\x00\xc2\x02\x69\x00\x25\x00\x1a\x02\x98\x01\x76\x00\xcb\x02\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xdd\x03\xde\x03\x48\x02\x6a\x00\x13\x00\x7a\x03\x15\x00\x26\x00\x80\x03\x16\x00\x17\x00\x18\x00\x6f\x00\x94\x00\x70\x00\x9a\x00\x7b\x01\x19\x00\x95\x00\x96\x00\xb1\x03\xb2\x03\xb3\x03\xb0\x03\xe4\x02\x74\x00\x75\x00\xa2\x03\x76\x00\x61\x00\x62\x00\x63\x00\xe5\x02\xcd\x00\xce\x00\xcf\x00\xd0\x00\x5f\x01\x48\x02\xca\x00\x13\x00\xcb\x00\x15\x00\xe6\x03\xe7\x03\x16\x00\x17\x00\x18\x00\xeb\x02\x49\x02\x4a\x02\x1c\x00\xca\x01\x19\x00\x1d\x00\x4b\x02\xb3\x00\x1f\x00\x61\x00\x62\x00\x63\x00\x9c\x00\xd3\x00\xe9\x02\xd4\x00\x9d\x00\xee\x02\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x04\x03\xd6\x00\xd7\x00\xd8\x00\x21\x00\x9e\x00\x07\x03\x26\x00\x9f\x00\x24\x03\x67\x00\xa1\x01\x21\x00\x22\x00\x1c\x00\xa2\x01\x25\x00\x1d\x00\x1e\x00\x26\x03\x1f\x00\x00\x04\xb3\x03\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x76\x00\x28\x02\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x2a\x02\x6f\x00\x48\x02\x70\x00\x13\x00\x6a\x00\x15\x00\x26\x00\x32\x02\x16\x00\x17\x00\x18\x00\x43\x03\x33\x02\x74\x00\x75\x00\xc2\x00\x19\x00\xb5\x01\x40\x02\xa3\x00\xa4\x00\xa5\x00\xa6\x00\x9c\x00\xc7\x00\xc8\x00\x5f\x01\x9d\x00\xca\x00\x4d\x02\xcb\x00\x49\x03\x95\x03\x96\x03\x8e\x03\x4a\x00\xcb\x03\x4b\x00\x4a\x03\x21\x00\x9e\x00\x90\x03\x50\x02\x9f\x00\x21\x00\x68\x00\x42\x02\x69\x00\x25\x00\x55\x02\x1c\x00\xb2\x00\x43\x02\x1d\x00\x1e\x00\xb3\x00\x1f\x00\x61\x00\x62\x00\x63\x00\x21\x00\x68\x00\x6a\x00\xa2\x01\x25\x00\x5c\x02\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x60\x02\x21\x00\x68\x00\x69\x02\x69\x00\x25\x00\xc7\x01\x26\x00\xc3\x00\x77\x02\x8b\x03\xc4\x00\x8c\x03\x12\x03\x98\x01\xc6\x00\xba\x02\x76\x00\x98\x01\x6a\x00\x99\x01\x68\x02\xc7\x00\xc8\x00\xc9\x00\x8a\x02\xca\x00\x48\x02\xcb\x00\x13\x00\x94\x03\x15\x00\x95\x03\x09\x02\x16\x00\x17\x00\x18\x00\x79\x02\x4b\x03\x4c\x03\x4d\x03\x4e\x03\x19\x00\x49\x03\x19\x03\x39\x02\x20\x00\x21\x00\x22\x00\x8c\x02\x4a\x03\x4f\x03\x45\xfe\x13\x00\x45\xfe\x15\x00\xb8\x03\xb9\x03\x16\x00\x17\x00\x18\x00\xb7\x01\x57\xfe\x5e\x00\x57\xfe\x5f\x00\x19\x00\x60\x00\x9c\x00\x61\x00\x62\x00\x63\x00\x9d\x00\xa7\x02\x3a\x02\x66\x00\x1c\x00\x28\x00\x81\x01\x1d\x00\x1e\x00\x61\xfe\x1f\x00\x61\xfe\x21\x00\x9e\x00\x51\x02\x52\x02\x9f\x00\x53\x02\x54\x02\x5b\x02\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x5c\x02\x62\xfe\x1c\x00\x62\xfe\xe1\x00\x1d\x00\x1e\x00\x26\x00\x1f\x00\xf0\x01\x51\x02\x52\x02\x21\x00\x68\x00\x53\x03\x69\x00\x25\x00\xf3\x01\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xf4\x01\xd6\x03\x4d\x03\x4e\x03\x38\x02\x39\x02\x6a\x00\x26\x00\x0f\x02\x8e\x03\x4a\x00\x8f\x03\x4b\x00\x4f\x03\xfc\x01\x13\x00\x90\x03\x15\x00\x2e\x03\x2f\x03\x16\x00\x17\x00\x18\x00\x5e\x00\x63\xfe\x5f\x00\x63\xfe\x60\x00\x19\x00\x61\x00\x62\x00\x63\x00\x17\x02\x4c\x00\x3a\x02\x66\x00\x1d\x02\x50\x00\x51\x00\x52\x00\xab\x00\xd9\x03\xda\x03\x64\xfe\xdb\x03\x64\xfe\xb3\x00\xb0\x00\x61\x00\x62\x00\x63\x00\x55\x00\x65\xfe\x3f\x02\x65\xfe\x61\x00\x62\x00\x63\x00\xb1\x00\x67\x00\x21\x00\x7d\x02\x1c\x00\xda\x00\x7e\x02\x1d\x00\x1e\x00\x66\xfe\x1f\x00\x66\xfe\x5b\x00\x0e\x02\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\xdc\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x20\x00\x21\x00\x22\x00\xb6\x03\x04\x02\x3b\x01\x6a\x00\x26\x00\xb3\x00\x30\x04\x61\x00\x62\x00\x63\x00\x57\x03\x04\x02\x1a\x04\x1b\x04\x1c\x04\xb3\x00\x58\x01\x61\x00\x62\x00\x63\x00\x03\x02\x04\x02\x0b\x04\x07\x01\x08\x01\xb3\x00\x2c\x04\x61\x00\x62\x00\x63\x00\x5e\x00\x67\xfe\x5f\x00\x67\xfe\x60\x00\x27\x04\x61\x00\x62\x00\x63\x00\x21\x00\x3e\x03\xe4\x00\x66\x00\xe5\x00\xe6\x00\x6e\xfe\xc5\x01\x6e\xfe\x61\x00\x62\x00\x63\x00\x5e\x00\x29\x04\x5f\x00\x67\x00\x60\x00\x2a\x04\x61\x00\x62\x00\x63\x00\x51\x02\x52\x03\xe4\x00\x66\x00\xe5\x00\xe6\x00\x1f\x04\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5e\x00\x67\x00\x5f\x00\x6f\xfe\x60\x00\x6f\xfe\x61\x00\x62\x00\x63\x00\x19\x04\xfb\x03\x65\x00\x66\x00\x6a\x00\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5c\x03\x6f\x02\x21\x00\x68\x00\x0f\x04\x69\x00\x25\x00\xe7\x01\x21\x00\x22\x00\x10\x04\xa2\x01\x25\x00\x6a\x00\xe7\x00\x6e\x03\x73\x02\x5e\x00\xfc\x03\x5f\x00\x6a\x00\x60\x00\x7b\x02\x61\x00\x62\x00\x63\x00\xec\x02\x73\x02\xdf\x00\x66\x00\xce\xfe\x73\x03\xce\xfe\xad\x00\x14\x04\xe7\x00\xf0\x03\x07\x01\x08\x01\x10\x03\x11\x03\x21\x00\x68\x00\x16\x04\x69\x00\x25\x00\x20\x00\x21\x00\x22\x00\x13\x03\x14\x03\x21\x00\x68\x00\xf4\x03\x69\x00\x25\x00\x74\x03\x67\x00\x9f\x01\x6a\x00\xa0\x01\x21\x00\x68\x00\x4d\x02\x69\x00\x25\x00\xa5\x02\xa6\x02\x60\x03\x6a\x00\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\xc7\x00\xc8\x00\xe5\x01\x67\x00\x6a\x00\x21\x03\x22\x03\x21\x00\x68\x00\xf7\x03\x69\x00\x25\x00\x4f\xff\x6a\x00\xe8\x00\x04\x04\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\xc7\x00\xc8\x00\x79\x02\x67\x00\x6a\x00\x90\x03\x91\x03\x92\x03\x77\x03\x72\x02\x73\x02\x7b\x02\xee\x01\x6a\x00\xef\x01\x08\x04\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5e\x00\x09\x04\x5f\x00\xcd\x03\x60\x00\xca\x03\x61\x00\x62\x00\x63\x00\xa4\x02\x08\x01\xdf\x00\x66\x00\x6a\x00\xe0\x00\x25\x02\x7e\x01\x26\x02\x67\x00\x4d\x02\xa7\x00\xa4\x00\xa5\x00\xa6\x00\x27\x02\x7e\x01\x26\x02\xd9\x03\x6d\x02\x6e\x02\x6f\x02\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5e\x00\xf5\xfd\x5f\x00\xe4\x03\x60\x00\xe6\x03\x61\x00\x62\x00\x63\x00\xe5\x03\x12\x04\x65\x00\x66\x00\x6a\x00\x71\x02\x72\x02\x73\x02\xc2\x02\x74\x01\x5e\x00\xe9\x03\x5f\x00\x4d\x02\x60\x00\x62\x02\x61\x00\x62\x00\x63\x00\x94\x03\xf8\x03\x65\x00\x66\x00\x83\x02\x72\x02\x73\x02\xea\x01\xeb\x01\xec\x01\x5e\x00\xe1\x00\x5f\x00\xf2\x03\x60\x00\xd1\x02\x61\x00\x62\x00\x63\x00\x98\x03\x04\x04\x65\x00\x66\x00\xef\x01\xeb\x01\xec\x01\x21\x02\x07\x01\x08\x01\x5e\x00\xd5\x01\x5f\x00\x99\x03\x60\x00\x9a\x03\x61\x00\x62\x00\x63\x00\x9c\x03\xd3\x03\x65\x00\x66\x00\x06\x01\x07\x01\x08\x01\x5e\x02\x5f\x02\x60\x02\x2c\x00\x5e\x00\xa1\x03\x5f\x00\xa4\x03\x60\x00\x67\x00\x61\x00\x62\x00\x63\x00\xac\x03\xd7\x03\x65\x00\x66\x00\x76\x01\x77\x01\x78\x01\x7e\x01\xc5\x02\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5e\x00\xad\x03\x5f\x00\xb0\x03\x60\x00\x9c\x00\x61\x00\x62\x00\x63\x00\x9d\x00\xba\x03\x65\x00\x66\x00\x6a\x00\x7e\x01\x7f\x01\x20\x02\x96\x00\x67\x00\xa8\x00\xa9\x00\x21\x00\x9e\x00\x73\x01\x74\x01\x9f\x00\x1f\x02\x20\x02\x10\x03\xe5\x01\xe6\x01\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5e\x00\x67\x00\x5f\x00\xbc\x03\x60\x00\xbf\x03\x61\x00\x62\x00\x63\x00\xc1\x03\xfc\x02\x65\x00\x66\x00\x6a\x00\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5e\x00\x67\x00\x5f\x00\xc2\x03\x60\x00\x4d\x02\x61\x00\x62\x00\x63\x00\xc6\x03\x15\x03\x65\x00\x66\x00\x6a\x00\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5e\x00\x67\x00\x5f\x00\xc8\x03\x60\x00\x2e\x03\x61\x00\x62\x00\x63\x00\x3b\x03\x3e\x02\x65\x00\x66\x00\x6a\x00\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x1f\x02\x20\x02\x67\x00\x31\x03\x32\x03\x3c\x03\x64\x03\x5f\x03\x62\x00\x63\x00\x3e\x03\x2a\x00\x2b\x00\x6a\x00\x3d\x03\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5e\x00\x41\x03\x5f\x00\x42\x03\x60\x00\x67\x00\x61\x00\x62\x00\x63\x00\x4d\x02\x88\x01\x65\x00\x66\x00\x6a\x00\x65\x03\xd7\x02\xd8\x02\x59\x03\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5e\x00\x49\x03\x5f\x00\x5a\x03\x60\x00\xbc\x01\x61\x00\x62\x00\x63\x00\x71\x02\xe1\x01\x65\x00\x66\x00\x6a\x00\x2c\x02\x2d\x02\xe5\x01\xe6\x01\x67\x00\xf2\x01\xf3\x01\x31\x02\xa5\x00\xa6\x00\x1f\x02\x20\x02\x5e\x03\xf6\xfd\x9a\x00\x9b\x00\x62\x03\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5e\x00\x67\x00\x5f\x00\x70\x03\x60\x00\x7b\x02\x61\x00\x62\x00\x63\x00\x79\x03\xe6\x01\x65\x00\x66\x00\x6a\x00\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5e\x00\x67\x00\x5f\x00\x7c\x03\x60\x00\x87\x03\x61\x00\x62\x00\x63\x00\x2c\x00\x3c\x01\x65\x00\x66\x00\x6a\x00\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5e\x00\x9f\x01\x5f\x00\xd1\x02\x60\x00\xd2\x02\x61\x00\x62\x00\x63\x00\xd5\x02\x64\x00\x65\x00\x66\x00\x6a\x00\x4d\x02\x21\x00\x68\x00\xd9\x02\x69\x00\x25\x00\x5e\x00\x67\x00\x5f\x00\xdd\x02\x60\x00\xdf\x02\x61\x00\x62\x00\x63\x00\xe0\x02\x29\xff\xdc\x03\x66\x00\x6a\x00\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5e\x00\xe1\x02\x5f\x00\x7b\x02\x60\x00\x67\x00\x61\x00\x62\x00\x63\x00\xe3\x02\x79\x02\x80\x02\x66\x00\x6a\x00\xe4\x02\xeb\x02\x7b\x02\xee\x02\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5e\x00\xfc\x02\x5f\x00\xba\x00\x60\x00\x9c\x00\x61\x00\x62\x00\x63\x00\x9d\x00\x9c\x00\x82\x02\x66\x00\x6a\x00\x9d\x00\x01\x03\xba\x00\x07\x03\x67\x00\x09\x03\x0a\x03\x21\x00\x9e\x00\x0b\x03\x10\x03\x9f\x00\x21\x00\x9e\x00\x17\x03\x18\x03\x9f\x00\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5e\x00\x67\x00\x5f\x00\x19\x03\x60\x00\x20\x03\x61\x00\x62\x00\x63\x00\x21\x03\x24\x03\x84\x02\x66\x00\x6a\x00\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5e\x00\x67\x00\x5f\x00\x2c\x03\x60\x00\x2a\x02\x61\x00\x62\x00\x63\x00\x2e\x02\x98\x00\xc6\x01\x66\x00\x6a\x00\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x2f\x02\xab\x00\x67\x00\x35\x02\x36\x02\x28\x00\x1f\x04\x5f\x03\x62\x00\x63\x00\x37\x02\x38\x02\x3c\x02\x6a\x00\x3d\x02\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5e\x00\x67\x00\x5f\x00\x3e\x02\x60\x00\xe5\x01\x61\x00\x62\x00\x63\x00\x42\x02\x45\x02\xf6\x01\x66\x00\x6a\x00\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5e\x00\x46\x02\x5f\x00\x4f\x02\x60\x00\x67\x00\x61\x00\x62\x00\x63\x00\x2e\xff\x50\x02\xfb\x01\x66\x00\x6a\x00\x57\x02\x62\x02\xe5\x01\x62\x02\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5e\x00\xef\x01\x5f\x00\x6d\x02\x60\x00\x80\x02\x61\x00\x62\x00\x63\x00\x71\x02\x79\x02\x0a\x02\x66\x00\x6a\x00\x86\x02\x88\x02\x7b\x02\x8e\x02\x67\x00\x97\x01\x8f\x02\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x95\x02\xb6\x02\xb7\x02\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5e\x00\x67\x00\x5f\x00\x55\x00\x60\x00\xbf\x02\x61\x00\x62\x00\x63\x00\xc0\x02\xc5\x02\xba\x00\x66\x00\x6a\x00\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5e\x00\x2c\x00\x5f\x00\x5b\x00\x60\x00\xc7\x02\x61\x00\x62\x00\x63\x00\x81\x01\xc5\xfd\xbe\x00\x66\x00\x6a\x00\xa5\x01\x21\x00\x68\x00\xc7\xfd\x69\x00\x25\x00\x5e\x00\x67\x00\x5f\x00\xc6\xfd\x60\x00\xc9\xfd\x61\x00\x62\x00\x63\x00\xcc\xfd\x96\x01\xd8\x00\x66\x00\x6a\x00\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5e\x00\x67\x00\x5f\x00\x97\x01\x60\x00\x98\x01\x61\x00\x62\x00\x63\x00\xa6\x01\xa0\x01\xec\x00\x66\x00\x6a\x00\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5e\x00\x93\x01\x94\x01\xae\x01\xb3\x00\x67\x00\x61\x00\x62\x00\x63\x00\xaf\x01\xb0\x01\xdf\x00\xb1\x01\x6a\x00\xb9\x01\xb2\x01\xb7\x01\xba\x01\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5e\x00\xbb\x01\x05\x02\xbc\x01\xb3\x00\xbe\x01\x61\x00\x62\x00\x63\x00\xc3\x01\xc5\x01\xef\x02\xf0\x02\x6a\x00\x61\x00\x62\x00\x63\x00\xcc\x01\x67\x00\x5e\x00\xf1\x02\xdd\x00\xc4\x01\xb3\x00\xcd\x01\x61\x00\x62\x00\x63\x00\xd0\x01\xcf\x01\xd6\x01\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\xf6\x01\x67\x00\xf2\x02\xf3\x02\xf4\x02\x08\x02\xf5\x02\xfe\x01\x14\x04\x5f\x03\x62\x00\x63\x00\xbc\x01\x6a\x00\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\xef\x02\x68\x03\x67\x00\x61\x00\x62\x00\x63\x00\x0c\x02\x15\x02\xad\x00\x2c\x00\x16\x02\x9a\x00\x1c\x02\x6a\x00\x25\x02\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\xff\xff\x67\x00\xed\x00\x62\x00\x63\x00\xee\x00\xab\x00\x69\x03\xf3\x02\xf4\x02\xad\x00\xf5\x02\xba\x00\x6a\x00\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\xbc\x00\x67\x00\xbd\x00\xf9\x03\x5f\x03\x62\x00\x63\x00\xbe\x00\xfa\x03\x5f\x03\x62\x00\x63\x00\xff\xff\x6a\x00\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\xdf\x03\x5f\x03\x62\x00\x63\x00\xdc\x00\x67\x00\xec\x00\xff\xff\xa1\x03\x5f\x03\x62\x00\x63\x00\xf8\x00\x6a\x00\xf9\x00\xf6\x02\xfa\x00\xfd\x00\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\xba\x00\x67\x00\xfd\x00\x21\x00\x68\x00\xff\xff\xf7\x02\x25\x00\xa4\x03\x5f\x03\x62\x00\x63\x00\x6c\x01\x6a\x00\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x6b\x01\xff\xff\x6a\x00\xff\xff\x1b\xfe\x5e\x03\x5f\x03\x62\x00\x63\x00\x9a\x00\x00\x00\x00\x00\x00\x00\x6a\x00\x00\x00\x21\x00\x68\x00\xf6\x02\x69\x00\x25\x00\x00\x00\x00\x00\xed\x00\x62\x00\x63\x00\x24\xff\x00\x00\x00\x00\x21\x00\x68\x00\x00\x00\xf7\x02\x25\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\x00\x00\x00\x00\x00\x00\x00\xc6\x00\x6a\x00\x21\x00\x68\x00\x00\x00\x69\x00\x25\x00\xc7\x00\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x00\xf0\x00\xf1\x00\x21\x00\x68\x00\x00\x00\x69\x00\x25\x00\x21\x00\x68\x00\x00\x00\x69\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x00\x68\x00\x6a\x00\x69\x00\x25\x00\x00\x00\x00\x00\x6a\x00\x21\x00\x68\x00\x00\x00\x69\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x6a\x00\x24\xff\x24\xff\x24\xff\x24\xff\x24\xff\x24\xff\x24\xff\x6a\x00\x38\x01\x00\x00\x00\x00\x39\x01\x21\x00\x68\x00\x00\x00\x69\x00\x25\x00\x00\x00\x24\xff\x5c\x02\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x24\x00\x25\x00\x00\x00\x21\x00\x68\x00\x6a\x00\x69\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\xff\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x21\x00\x68\x00\x6a\x00\x69\x00\x25\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x6a\x00\x00\x00\x00\x00\x4d\x02\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x00\x00\x00\x00\x3c\x00\x50\x00\x51\x00\x52\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x55\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x7b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x56\x00\x2b\x03\x00\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x58\x00\x00\x00\x85\x00\x00\x00\x59\x00\x00\x00\x00\x00\x86\x00\x00\x00\x00\x00\x5b\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x00\x00\x8b\x00\x5c\x00\x5d\x00\x5e\x00\x8c\x00\x8d\x00\x00\x00\x00\x00\x00\x00\x8e\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xc3\x00\x39\x00\x00\x00\xc4\x00\x00\x00\xc5\x00\x00\x00\xc6\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\xc7\x00\xc8\x00\xc9\x00\x00\x00\xca\x00\x3c\x00\xcb\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x56\x00\x2b\x03\x00\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x58\x00\x00\x00\x85\x00\x00\x00\x59\x00\x00\x00\x00\x00\x86\x00\x00\x00\x00\x00\x5b\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x00\x00\x8b\x00\x5c\x00\x5d\x00\x5e\x00\x8c\x00\x8d\x00\x00\x00\x00\x00\x00\x00\x8e\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xc3\x00\x39\x00\x00\x00\xc4\x00\x00\x00\x6d\x01\x00\x00\xc6\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\xc7\x00\xc8\x00\xc9\x00\x00\x00\xca\x00\x3c\x00\xcb\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x56\x00\x00\x00\x28\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x58\x00\x28\x00\x85\x00\x00\x00\x59\x00\x2c\x00\x2d\x00\x86\x00\x00\x00\x46\xff\x5b\x00\x87\x00\x88\x00\x89\x00\x8a\x00\xd9\x01\x8b\x00\x5c\x00\x5d\x00\x5e\x00\x8c\x00\x8d\x00\x6c\x00\x00\x00\x6d\x00\x8e\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\x6e\x03\x00\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x46\xff\x00\x00\x00\x00\x28\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x6b\x03\xf7\x00\x00\x00\x6c\x03\x00\x00\xd1\x00\x00\x00\xd2\x00\xd3\x00\x00\x00\xd4\x00\xd5\x00\x00\x00\x6c\x00\x28\x00\x6d\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\xd6\x00\xd7\x00\xd8\x00\x6e\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x00\x00\xfe\x03\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x5b\x00\x00\x00\x46\xff\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x6c\x00\x28\x00\x6d\x00\x00\x00\x6d\x03\x2c\x00\x2d\x00\x00\x00\x00\x00\x6f\x00\x6e\x00\x55\x00\x00\x00\x00\x00\x46\xff\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x6c\x00\x00\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x6c\x03\x00\x00\x5b\x00\x00\x00\x6e\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x03\x28\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\xfa\x02\x00\x00\x5b\x00\x00\x00\x28\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x6c\x00\x28\x00\x6d\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x55\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\xf9\x02\x00\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x67\x03\x00\x00\x5b\x00\x00\x00\x6e\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfa\x02\x00\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\xfb\x02\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x55\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x68\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xfb\x02\x53\x01\xce\x00\xcf\x00\xd0\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xbe\x02\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x9e\x01\x3b\x00\x55\x01\x56\x01\x00\x00\xd4\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x57\x01\x58\x01\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\x58\x00\x00\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x00\x5d\x00\x5e\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x53\x01\xce\x00\xcf\x00\xd0\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x9d\x01\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x9e\x01\x3b\x00\x55\x01\x56\x01\x00\x00\xd4\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x57\x01\x58\x01\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\x58\x00\x00\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x00\x5d\x00\x5e\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x62\x01\xce\x00\xcf\x00\xd0\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x63\x01\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\xe4\x00\x3b\x00\x55\x01\x64\x01\x00\x00\xd4\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x65\x01\x66\x01\x67\x01\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\x58\x00\x00\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x00\x5d\x00\x5e\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x53\x01\xce\x00\xcf\x00\xd0\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x54\x01\x00\x00\x3b\x00\x55\x01\x56\x01\x00\x00\xd4\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x57\x01\x58\x01\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\x58\x00\x00\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x00\x5d\x00\x5e\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x53\x01\xce\x00\xcf\x00\xd0\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x55\x01\x56\x01\x00\x00\xd4\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x57\x01\x58\x01\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\x58\x00\x00\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\xc1\x01\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x00\x58\x00\x00\x00\x00\x00\x00\x00\x59\x00\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x4d\x02\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\xc2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\x58\x00\x00\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xc3\x00\x39\x00\x00\x00\xc4\x00\x00\x00\xc5\x00\x00\x00\xc6\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\xc7\x00\xc8\x00\xc9\x00\x00\x00\xca\x00\x3c\x00\xcb\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x02\x58\x00\x00\x00\x00\x00\x00\x00\x59\x00\x00\x00\xb1\x02\x00\x00\x00\x00\x00\x00\x5b\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x00\x58\x00\x00\x00\x00\x00\x00\x00\x59\x00\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\x58\x00\x00\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x02\x58\x00\x00\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\xd0\x02\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\x58\x00\x00\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x02\x58\x00\x00\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\x58\x00\x00\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\xa1\x00\x2e\x04\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\x58\x00\x00\x00\x00\x00\x00\x00\x59\x00\x2f\x04\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x4d\x02\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x7a\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\xb5\x03\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\xd9\x01\x00\x00\x80\x00\x81\x00\x82\x00\x00\x00\x00\x00\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb6\x03\xda\x01\x00\x00\x5b\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x7a\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\xb5\x03\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x1e\x03\x00\x00\x80\x00\x81\x00\x82\x00\x00\x00\x00\x00\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb6\x03\x00\x00\x00\x00\x5b\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x4d\x02\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x7a\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x51\x03\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\xff\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x00\x00\x85\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x03\x00\x00\x00\x00\x5b\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x4d\x02\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x7a\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x28\x00\x4b\x00\x5b\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x80\x00\x81\x00\x82\x00\x00\x00\x00\x00\x58\x00\x00\x00\x00\x00\x00\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x5b\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x3d\x00\x00\x00\x3e\x00\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x55\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x28\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x51\x03\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x1e\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x00\x00\x85\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x03\x00\x00\x00\x00\x5b\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x7a\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x80\x00\x81\x00\x82\x00\x00\x00\x00\x00\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x9a\x02\x29\x00\x2a\x00\x2b\x00\x9b\x02\x2d\x00\x0c\x01\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0d\x01\x9c\x02\x9d\x02\x9e\x02\x9f\x02\xa0\x02\xa1\x02\xa2\x02\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e\x01\x1f\x01\xa3\x02\x21\x01\x22\x01\x23\x01\x24\x01\x25\x01\x26\x01\x27\x01\x28\x01\x29\x01\x2a\x01\x2b\x01\x2c\x01\x2d\x01\x2e\x01\x2f\x01\x30\x01\x31\x01\x32\x01\xa4\x02\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x28\x00\x47\x00\x48\x00\x49\x00\x2c\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\xa1\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\xab\x01\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\xa2\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\xa3\x00\x4b\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x01\x00\x00\x00\x00\x00\x00\x0b\x01\x00\x00\x0c\x01\x3d\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x0d\x01\x0e\x01\x0f\x01\x10\x01\x11\x01\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e\x01\x1f\x01\x20\x01\x21\x01\x22\x01\x23\x01\x24\x01\x25\x01\x26\x01\x27\x01\x28\x01\x29\x01\x2a\x01\x2b\x01\x2c\x01\x2d\x01\x2e\x01\x2f\x01\x30\x01\x31\x01\x32\x01\x33\x01\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x44\x01\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x19\x00\x00\x00\x00\x00\x0a\x01\x00\x00\x00\x00\x00\x00\x0b\x01\x00\x00\x0c\x01\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x1c\x00\x4b\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x0d\x01\x0e\x01\x0f\x01\x10\x01\x11\x01\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e\x01\x1f\x01\x20\x01\x21\x01\x22\x01\x23\x01\x24\x01\x25\x01\x26\x01\x27\x01\x28\x01\x29\x01\x2a\x01\x2b\x01\x2c\x01\x2d\x01\x2e\x01\x2f\x01\x30\x01\x31\x01\x32\x01\x33\x01\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x46\x01\x47\x01\xfe\x00\x17\x00\x18\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x19\x00\x00\x00\x00\x00\x0a\x01\x00\x00\x00\x00\x00\x00\x0b\x01\x00\x00\x0c\x01\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x1c\x00\x4b\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x0d\x01\x0e\x01\x0f\x01\x10\x01\x11\x01\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e\x01\x1f\x01\x20\x01\x21\x01\x22\x01\x23\x01\x24\x01\x25\x01\x26\x01\x27\x01\x28\x01\x29\x01\x2a\x01\x2b\x01\x2c\x01\x2d\x01\x2e\x01\x2f\x01\x30\x01\x31\x01\x32\x01\x33\x01\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\xa9\x01\xfe\x00\x17\x00\x18\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x19\x00\x00\x00\x00\x00\x0a\x01\x00\x00\x00\x00\x00\x00\x0b\x01\x00\x00\x0c\x01\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x1c\x00\x4b\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x0d\x01\x0e\x01\x0f\x01\x10\x01\x11\x01\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e\x01\x1f\x01\x20\x01\x21\x01\x22\x01\x23\x01\x24\x01\x25\x01\x26\x01\x27\x01\x28\x01\x29\x01\x2a\x01\x2b\x01\x2c\x01\x2d\x01\x2e\x01\x2f\x01\x30\x01\x31\x01\x32\x01\x33\x01\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x28\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\xce\x00\x00\x00\xd0\x00\x55\x00\x00\x00\x00\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\x00\x00\x00\x00\x00\x00\x6c\x00\xea\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x5b\x00\x6e\x00\x2c\x00\xe4\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x00\x00\x00\x00\x00\x00\x00\xd2\x00\xd3\x00\xeb\x00\xd4\x00\xb8\x03\x00\x00\x00\x00\xa1\x00\xd2\x03\x00\x00\x00\x00\x00\x00\x28\x00\xd6\x00\xd7\x00\xd8\x00\x2c\x00\x2d\x00\x00\x00\xf3\x00\xce\x00\x00\x00\xd0\x00\xd3\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x6d\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x6e\x00\x00\x00\x00\x00\x00\x00\xf4\x00\x00\x00\x00\x00\xd4\x00\x00\x00\x6f\x00\x00\x00\x55\x00\x00\x00\xf5\x00\x00\x00\xf6\x00\xf7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x55\x00\xf3\x00\xce\x00\x00\x00\xd0\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x6c\x00\x00\x00\x6d\x00\x28\x00\x5b\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x6e\x00\x55\x00\x00\x00\x00\x00\xf4\x00\x00\x00\x00\x00\xd4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf5\x00\x6c\x00\x07\x02\x6d\x00\xe3\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\xe4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x6c\x00\x76\x03\x6d\x00\x28\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x6e\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x6c\x00\x00\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x6f\x00\x6e\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x6c\x00\x00\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x00\x6e\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x28\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x5b\x00\x00\x00\x00\x00\x6f\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xda\x00\x00\x00\x00\x00\x6c\x00\x28\x00\x6d\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x5b\x00\x6e\x00\xdf\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x00\x00\x28\x00\x6c\x00\x00\x00\x6d\x00\x2c\x00\x2d\x00\x00\x00\x6f\x00\x00\x00\x55\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x28\x00\x6d\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x5b\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x6c\x00\x00\x00\x6d\x00\x28\x00\x87\x02\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x6e\x00\x55\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x6f\x00\x00\x00\x55\x00\x6e\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x28\x00\x29\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x55\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x3b\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x55\x00\x39\x03\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x28\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x5b\x00\x00\x00\xb5\x00\x00\x00\x00\x00\x55\x00\x00\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\x00\x00\xb6\x00\x00\x00\x00\x00\x6c\x00\x28\x00\x6d\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x5b\x00\x6e\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\xd2\x00\xd3\x00\x6c\x00\xd4\x00\x6d\x00\x00\x00\x87\x02\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x6e\x00\xd6\x00\xd7\x00\xd8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x03\x00\x00\x00\x00\x28\x00\x29\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x3b\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x55\x00\x2c\x00\x2d\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x5b\x00\x6d\x00\x00\x00\x55\x00\x00\x00\x28\x00\x29\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x5b\x00\x00\x00\x00\x00\x00\x00\xaf\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x8f\x01\x00\x00\x00\x00\x36\x01\x00\x00\x37\x01\x00\x00\x00\x00\x90\x01\x00\x00\x28\x00\x55\x00\x00\x00\x38\x01\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x03\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x5b\x00\xa1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x29\x00\x00\x00\x55\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x3b\x01\x5b\x00\x28\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x00\x00\x00\x00\xa1\x00\x28\x00\x29\x00\xa3\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x28\x00\x29\x00\x00\x00\x00\x00\x39\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaf\x00\xab\x03\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x01\x28\x00\x29\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x55\x00\x28\x00\x29\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x00\x00\xaf\x00\x55\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x5b\x00\x00\x00\x28\x00\x55\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\xa1\x00\x28\x00\x29\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\xaf\x00\x00\x00\x28\x00\x55\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\xa1\x00\x28\x00\x29\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x00\x00\x28\x00\xaf\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\xa1\x00\x00\x00\x00\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\x5b\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\xd2\x00\xd3\x00\x55\x00\xd4\x00\x6f\x01\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\xd6\x00\xd7\x00\xd8\x00\x70\x01\x71\x01\x72\x01\x73\x01\x00\x00\x5b\x00\x00\x00\x00\x00\x55\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x62\x02\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x5b\x00\x55\x00\x16\x00\x17\x00\x18\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\x5b\x00\xab\x02\xac\x02\xad\x02\xae\x02\x00\x00\xaf\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\x26\x00\x62\x02\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\xd1\x00\x00\x00\xd2\x00\xd3\x00\x00\x00\xd4\x00\xd5\x00\xcd\xfe\x00\x00\xcd\xfe\x82\x03\xad\x02\xae\x02\x00\x00\xaf\x02\xd6\x00\xd7\x00\xd8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x62\x02\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\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\x00\x00\x00\x00\x00\x00\x83\x03\xae\x02\x00\x00\xaf\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x62\x02\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xeb\x03\x64\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\xdd\x02\x00\x00\xbf\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x62\x02\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x02\x64\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x8b\x02\x00\x00\xbf\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x62\x02\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\x02\x64\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\xbe\x01\x00\x00\xbf\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\xc1\x01\x00\x00\xbf\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x62\x02\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x16\x04\x91\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\xf2\x03\x91\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\xea\x03\x91\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\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\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x88\x03\x91\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x89\x03\x91\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\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\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x8a\x03\x91\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\xbc\x03\x91\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\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\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x46\x03\x91\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x5a\x03\x91\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\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\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x5b\x03\x91\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\xce\x02\x91\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\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\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x67\x02\x91\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x90\x01\x91\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\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\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x3f\x01\x91\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x40\x01\x91\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\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\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x90\x00\x91\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x5a\x01\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x5b\x01\x5c\x01\x00\x00\x00\x00\x5d\x01\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x4c\x01\x00\x00\x4d\x01\x00\x00\x00\x00\x4e\x01\x5e\x01\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xc7\x00\xc8\x00\x5f\x01\x4f\x01\xca\x00\x50\x01\x60\x01\x26\x00\x48\x01\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x49\x01\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x01\x4b\x01\x00\x00\xb2\x02\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\xb3\x02\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x4c\x01\x00\x00\x4d\x01\x00\x00\x00\x00\x4e\x01\xc6\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xc7\x00\xc8\x00\x00\x00\x4f\x01\x00\x00\x50\x01\x51\x01\x26\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x4c\x01\x00\x00\x4d\x01\x00\x00\x00\x00\x4e\x01\xc6\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xc7\x00\xc8\x00\x00\x00\x4f\x01\x00\x00\x50\x01\x51\x01\x26\x00\x48\x01\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\xb4\x02\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\x48\x01\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\xbc\x02\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x4c\x01\x00\x00\x4d\x01\x00\x00\x00\x00\x4e\x01\xc6\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xc7\x00\xc8\x00\x00\x00\x4f\x01\x00\x00\x50\x01\x51\x01\x26\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x4c\x01\x00\x00\x4d\x01\x00\x00\x00\x00\x4e\x01\xc6\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xc7\x00\xc8\x00\x00\x00\x4f\x01\x00\x00\x50\x01\x51\x01\x26\x00\x48\x01\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x9b\x01\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\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x4c\x01\x00\x00\x4d\x01\x00\x00\x00\x00\x4e\x01\xc6\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xc7\x00\xc8\x00\x00\x00\x4f\x01\x00\x00\x50\x01\x51\x01\x26\x00\x8e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x8e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x7c\x03\x7d\x03\x00\x00\x19\x00\x00\x00\x7e\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\xe9\x03\x00\x00\x00\x00\x00\x00\x7e\x03\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\xee\x03\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\xef\x03\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\xb8\x02\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb9\x02\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x41\x01\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x42\x01\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x8e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\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\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8f\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x17\x04\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x79\x03\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\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\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x87\x03\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\xca\x02\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\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\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x88\x02\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x89\x02\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\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\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x8f\x02\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x90\x02\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\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\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x91\x02\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\xa9\x02\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\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\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\xaa\x02\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\xb1\x02\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\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\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\xb7\x02\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x84\x01\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\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\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x85\x01\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x86\x01\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\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\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x87\x01\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x02\x01\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\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\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x04\x01\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x05\x01\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\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\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1e\x03\x10\x00\x3e\x01\x12\x00\x13\x00\x14\x00\x15\x00\x26\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\x01\x10\x00\x3e\x01\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\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\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x3d\x01\x10\x00\x3e\x01\x12\x00\x13\x00\x14\x00\x15\x00\x26\x00\x00\x00\x16\x00\x17\x00\x18\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\x89\x01\x8a\x01\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\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\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x8a\x01\x00\x00\x15\x00\x00\x00\x26\x00\x16\x00\x17\x00\x18\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\x00\x00\x00\x00\x00\x00\xfd\x00\xfe\x00\x17\x00\x18\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\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x95\x02\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x19\x00\x00\x00\x00\x00\x96\x02\x07\x01\x08\x01\x00\x00\x97\x02\x25\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x95\x02\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x96\x02\x07\x01\x08\x01\x00\x00\x97\x02\x98\x02\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x7f\x03\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x2f\x02\x17\x00\x18\x00\x1c\x00\x00\x00\x26\x00\x1d\x00\x1e\x00\x19\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x91\x01\x17\x00\x18\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x92\x01\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x26\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x6c\x01\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\xbc\x01\x17\x00\x18\x00\x1c\x00\x00\x00\x26\x00\x1d\x00\x1e\x00\x19\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x18\x02\x17\x00\x18\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x1c\x02\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x26\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\xc1\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x43\x01\x17\x00\x18\x00\x1c\x00\x00\x00\x26\x00\x1d\x00\x1e\x00\x19\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x45\x01\x17\x00\x18\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x6c\x01\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x26\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"# - -happyReduceArr = Happy_Data_Array.array (8, 596) [ - (8 , happyReduce_8), - (9 , happyReduce_9), - (10 , happyReduce_10), - (11 , happyReduce_11), - (12 , happyReduce_12), - (13 , happyReduce_13), - (14 , happyReduce_14), - (15 , happyReduce_15), - (16 , happyReduce_16), - (17 , happyReduce_17), - (18 , happyReduce_18), - (19 , happyReduce_19), - (20 , happyReduce_20), - (21 , happyReduce_21), - (22 , happyReduce_22), - (23 , happyReduce_23), - (24 , happyReduce_24), - (25 , happyReduce_25), - (26 , happyReduce_26), - (27 , happyReduce_27), - (28 , happyReduce_28), - (29 , happyReduce_29), - (30 , happyReduce_30), - (31 , happyReduce_31), - (32 , happyReduce_32), - (33 , happyReduce_33), - (34 , happyReduce_34), - (35 , happyReduce_35), - (36 , happyReduce_36), - (37 , happyReduce_37), - (38 , happyReduce_38), - (39 , happyReduce_39), - (40 , happyReduce_40), - (41 , happyReduce_41), - (42 , happyReduce_42), - (43 , happyReduce_43), - (44 , happyReduce_44), - (45 , happyReduce_45), - (46 , happyReduce_46), - (47 , happyReduce_47), - (48 , happyReduce_48), - (49 , happyReduce_49), - (50 , happyReduce_50), - (51 , happyReduce_51), - (52 , happyReduce_52), - (53 , happyReduce_53), - (54 , happyReduce_54), - (55 , happyReduce_55), - (56 , happyReduce_56), - (57 , happyReduce_57), - (58 , happyReduce_58), - (59 , happyReduce_59), - (60 , happyReduce_60), - (61 , happyReduce_61), - (62 , happyReduce_62), - (63 , happyReduce_63), - (64 , happyReduce_64), - (65 , happyReduce_65), - (66 , happyReduce_66), - (67 , happyReduce_67), - (68 , happyReduce_68), - (69 , happyReduce_69), - (70 , happyReduce_70), - (71 , happyReduce_71), - (72 , happyReduce_72), - (73 , happyReduce_73), - (74 , happyReduce_74), - (75 , happyReduce_75), - (76 , happyReduce_76), - (77 , happyReduce_77), - (78 , happyReduce_78), - (79 , happyReduce_79), - (80 , happyReduce_80), - (81 , happyReduce_81), - (82 , happyReduce_82), - (83 , happyReduce_83), - (84 , happyReduce_84), - (85 , happyReduce_85), - (86 , happyReduce_86), - (87 , happyReduce_87), - (88 , happyReduce_88), - (89 , happyReduce_89), - (90 , happyReduce_90), - (91 , happyReduce_91), - (92 , happyReduce_92), - (93 , happyReduce_93), - (94 , happyReduce_94), - (95 , happyReduce_95), - (96 , happyReduce_96), - (97 , happyReduce_97), - (98 , happyReduce_98), - (99 , happyReduce_99), - (100 , happyReduce_100), - (101 , happyReduce_101), - (102 , happyReduce_102), - (103 , happyReduce_103), - (104 , happyReduce_104), - (105 , happyReduce_105), - (106 , happyReduce_106), - (107 , happyReduce_107), - (108 , happyReduce_108), - (109 , happyReduce_109), - (110 , happyReduce_110), - (111 , happyReduce_111), - (112 , happyReduce_112), - (113 , happyReduce_113), - (114 , happyReduce_114), - (115 , happyReduce_115), - (116 , happyReduce_116), - (117 , happyReduce_117), - (118 , happyReduce_118), - (119 , happyReduce_119), - (120 , happyReduce_120), - (121 , happyReduce_121), - (122 , happyReduce_122), - (123 , happyReduce_123), - (124 , happyReduce_124), - (125 , happyReduce_125), - (126 , happyReduce_126), - (127 , happyReduce_127), - (128 , happyReduce_128), - (129 , happyReduce_129), - (130 , happyReduce_130), - (131 , happyReduce_131), - (132 , happyReduce_132), - (133 , happyReduce_133), - (134 , happyReduce_134), - (135 , happyReduce_135), - (136 , happyReduce_136), - (137 , happyReduce_137), - (138 , happyReduce_138), - (139 , happyReduce_139), - (140 , happyReduce_140), - (141 , happyReduce_141), - (142 , happyReduce_142), - (143 , happyReduce_143), - (144 , happyReduce_144), - (145 , happyReduce_145), - (146 , happyReduce_146), - (147 , happyReduce_147), - (148 , happyReduce_148), - (149 , happyReduce_149), - (150 , happyReduce_150), - (151 , happyReduce_151), - (152 , happyReduce_152), - (153 , happyReduce_153), - (154 , happyReduce_154), - (155 , happyReduce_155), - (156 , happyReduce_156), - (157 , happyReduce_157), - (158 , happyReduce_158), - (159 , happyReduce_159), - (160 , happyReduce_160), - (161 , happyReduce_161), - (162 , happyReduce_162), - (163 , happyReduce_163), - (164 , happyReduce_164), - (165 , happyReduce_165), - (166 , happyReduce_166), - (167 , happyReduce_167), - (168 , happyReduce_168), - (169 , happyReduce_169), - (170 , happyReduce_170), - (171 , happyReduce_171), - (172 , happyReduce_172), - (173 , happyReduce_173), - (174 , happyReduce_174), - (175 , happyReduce_175), - (176 , happyReduce_176), - (177 , happyReduce_177), - (178 , happyReduce_178), - (179 , happyReduce_179), - (180 , happyReduce_180), - (181 , happyReduce_181), - (182 , happyReduce_182), - (183 , happyReduce_183), - (184 , happyReduce_184), - (185 , happyReduce_185), - (186 , happyReduce_186), - (187 , happyReduce_187), - (188 , happyReduce_188), - (189 , happyReduce_189), - (190 , happyReduce_190), - (191 , happyReduce_191), - (192 , happyReduce_192), - (193 , happyReduce_193), - (194 , happyReduce_194), - (195 , happyReduce_195), - (196 , happyReduce_196), - (197 , happyReduce_197), - (198 , happyReduce_198), - (199 , happyReduce_199), - (200 , happyReduce_200), - (201 , happyReduce_201), - (202 , happyReduce_202), - (203 , happyReduce_203), - (204 , happyReduce_204), - (205 , happyReduce_205), - (206 , happyReduce_206), - (207 , happyReduce_207), - (208 , happyReduce_208), - (209 , happyReduce_209), - (210 , happyReduce_210), - (211 , happyReduce_211), - (212 , happyReduce_212), - (213 , happyReduce_213), - (214 , happyReduce_214), - (215 , happyReduce_215), - (216 , happyReduce_216), - (217 , happyReduce_217), - (218 , happyReduce_218), - (219 , happyReduce_219), - (220 , happyReduce_220), - (221 , happyReduce_221), - (222 , happyReduce_222), - (223 , happyReduce_223), - (224 , happyReduce_224), - (225 , happyReduce_225), - (226 , happyReduce_226), - (227 , happyReduce_227), - (228 , happyReduce_228), - (229 , happyReduce_229), - (230 , happyReduce_230), - (231 , happyReduce_231), - (232 , happyReduce_232), - (233 , happyReduce_233), - (234 , happyReduce_234), - (235 , happyReduce_235), - (236 , happyReduce_236), - (237 , happyReduce_237), - (238 , happyReduce_238), - (239 , happyReduce_239), - (240 , happyReduce_240), - (241 , happyReduce_241), - (242 , happyReduce_242), - (243 , happyReduce_243), - (244 , happyReduce_244), - (245 , happyReduce_245), - (246 , happyReduce_246), - (247 , happyReduce_247), - (248 , happyReduce_248), - (249 , happyReduce_249), - (250 , happyReduce_250), - (251 , happyReduce_251), - (252 , happyReduce_252), - (253 , happyReduce_253), - (254 , happyReduce_254), - (255 , happyReduce_255), - (256 , happyReduce_256), - (257 , happyReduce_257), - (258 , happyReduce_258), - (259 , happyReduce_259), - (260 , happyReduce_260), - (261 , happyReduce_261), - (262 , happyReduce_262), - (263 , happyReduce_263), - (264 , happyReduce_264), - (265 , happyReduce_265), - (266 , happyReduce_266), - (267 , happyReduce_267), - (268 , happyReduce_268), - (269 , happyReduce_269), - (270 , happyReduce_270), - (271 , happyReduce_271), - (272 , happyReduce_272), - (273 , happyReduce_273), - (274 , happyReduce_274), - (275 , happyReduce_275), - (276 , happyReduce_276), - (277 , happyReduce_277), - (278 , happyReduce_278), - (279 , happyReduce_279), - (280 , happyReduce_280), - (281 , happyReduce_281), - (282 , happyReduce_282), - (283 , happyReduce_283), - (284 , happyReduce_284), - (285 , happyReduce_285), - (286 , happyReduce_286), - (287 , happyReduce_287), - (288 , happyReduce_288), - (289 , happyReduce_289), - (290 , happyReduce_290), - (291 , happyReduce_291), - (292 , happyReduce_292), - (293 , happyReduce_293), - (294 , happyReduce_294), - (295 , happyReduce_295), - (296 , happyReduce_296), - (297 , happyReduce_297), - (298 , happyReduce_298), - (299 , happyReduce_299), - (300 , happyReduce_300), - (301 , happyReduce_301), - (302 , happyReduce_302), - (303 , happyReduce_303), - (304 , happyReduce_304), - (305 , happyReduce_305), - (306 , happyReduce_306), - (307 , happyReduce_307), - (308 , happyReduce_308), - (309 , happyReduce_309), - (310 , happyReduce_310), - (311 , happyReduce_311), - (312 , happyReduce_312), - (313 , happyReduce_313), - (314 , happyReduce_314), - (315 , happyReduce_315), - (316 , happyReduce_316), - (317 , happyReduce_317), - (318 , happyReduce_318), - (319 , happyReduce_319), - (320 , happyReduce_320), - (321 , happyReduce_321), - (322 , happyReduce_322), - (323 , happyReduce_323), - (324 , happyReduce_324), - (325 , happyReduce_325), - (326 , happyReduce_326), - (327 , happyReduce_327), - (328 , happyReduce_328), - (329 , happyReduce_329), - (330 , happyReduce_330), - (331 , happyReduce_331), - (332 , happyReduce_332), - (333 , happyReduce_333), - (334 , happyReduce_334), - (335 , happyReduce_335), - (336 , happyReduce_336), - (337 , happyReduce_337), - (338 , happyReduce_338), - (339 , happyReduce_339), - (340 , happyReduce_340), - (341 , happyReduce_341), - (342 , happyReduce_342), - (343 , happyReduce_343), - (344 , happyReduce_344), - (345 , happyReduce_345), - (346 , happyReduce_346), - (347 , happyReduce_347), - (348 , happyReduce_348), - (349 , happyReduce_349), - (350 , happyReduce_350), - (351 , happyReduce_351), - (352 , happyReduce_352), - (353 , happyReduce_353), - (354 , happyReduce_354), - (355 , happyReduce_355), - (356 , happyReduce_356), - (357 , happyReduce_357), - (358 , happyReduce_358), - (359 , happyReduce_359), - (360 , happyReduce_360), - (361 , happyReduce_361), - (362 , happyReduce_362), - (363 , happyReduce_363), - (364 , happyReduce_364), - (365 , happyReduce_365), - (366 , happyReduce_366), - (367 , happyReduce_367), - (368 , happyReduce_368), - (369 , happyReduce_369), - (370 , happyReduce_370), - (371 , happyReduce_371), - (372 , happyReduce_372), - (373 , happyReduce_373), - (374 , happyReduce_374), - (375 , happyReduce_375), - (376 , happyReduce_376), - (377 , happyReduce_377), - (378 , happyReduce_378), - (379 , happyReduce_379), - (380 , happyReduce_380), - (381 , happyReduce_381), - (382 , happyReduce_382), - (383 , happyReduce_383), - (384 , happyReduce_384), - (385 , happyReduce_385), - (386 , happyReduce_386), - (387 , happyReduce_387), - (388 , happyReduce_388), - (389 , happyReduce_389), - (390 , happyReduce_390), - (391 , happyReduce_391), - (392 , happyReduce_392), - (393 , happyReduce_393), - (394 , happyReduce_394), - (395 , happyReduce_395), - (396 , happyReduce_396), - (397 , happyReduce_397), - (398 , happyReduce_398), - (399 , happyReduce_399), - (400 , happyReduce_400), - (401 , happyReduce_401), - (402 , happyReduce_402), - (403 , happyReduce_403), - (404 , happyReduce_404), - (405 , happyReduce_405), - (406 , happyReduce_406), - (407 , happyReduce_407), - (408 , happyReduce_408), - (409 , happyReduce_409), - (410 , happyReduce_410), - (411 , happyReduce_411), - (412 , happyReduce_412), - (413 , happyReduce_413), - (414 , happyReduce_414), - (415 , happyReduce_415), - (416 , happyReduce_416), - (417 , happyReduce_417), - (418 , happyReduce_418), - (419 , happyReduce_419), - (420 , happyReduce_420), - (421 , happyReduce_421), - (422 , happyReduce_422), - (423 , happyReduce_423), - (424 , happyReduce_424), - (425 , happyReduce_425), - (426 , happyReduce_426), - (427 , happyReduce_427), - (428 , happyReduce_428), - (429 , happyReduce_429), - (430 , happyReduce_430), - (431 , happyReduce_431), - (432 , happyReduce_432), - (433 , happyReduce_433), - (434 , happyReduce_434), - (435 , happyReduce_435), - (436 , happyReduce_436), - (437 , happyReduce_437), - (438 , happyReduce_438), - (439 , happyReduce_439), - (440 , happyReduce_440), - (441 , happyReduce_441), - (442 , happyReduce_442), - (443 , happyReduce_443), - (444 , happyReduce_444), - (445 , happyReduce_445), - (446 , happyReduce_446), - (447 , happyReduce_447), - (448 , happyReduce_448), - (449 , happyReduce_449), - (450 , happyReduce_450), - (451 , happyReduce_451), - (452 , happyReduce_452), - (453 , happyReduce_453), - (454 , happyReduce_454), - (455 , happyReduce_455), - (456 , happyReduce_456), - (457 , happyReduce_457), - (458 , happyReduce_458), - (459 , happyReduce_459), - (460 , happyReduce_460), - (461 , happyReduce_461), - (462 , happyReduce_462), - (463 , happyReduce_463), - (464 , happyReduce_464), - (465 , happyReduce_465), - (466 , happyReduce_466), - (467 , happyReduce_467), - (468 , happyReduce_468), - (469 , happyReduce_469), - (470 , happyReduce_470), - (471 , happyReduce_471), - (472 , happyReduce_472), - (473 , happyReduce_473), - (474 , happyReduce_474), - (475 , happyReduce_475), - (476 , happyReduce_476), - (477 , happyReduce_477), - (478 , happyReduce_478), - (479 , happyReduce_479), - (480 , happyReduce_480), - (481 , happyReduce_481), - (482 , happyReduce_482), - (483 , happyReduce_483), - (484 , happyReduce_484), - (485 , happyReduce_485), - (486 , happyReduce_486), - (487 , happyReduce_487), - (488 , happyReduce_488), - (489 , happyReduce_489), - (490 , happyReduce_490), - (491 , happyReduce_491), - (492 , happyReduce_492), - (493 , happyReduce_493), - (494 , happyReduce_494), - (495 , happyReduce_495), - (496 , happyReduce_496), - (497 , happyReduce_497), - (498 , happyReduce_498), - (499 , happyReduce_499), - (500 , happyReduce_500), - (501 , happyReduce_501), - (502 , happyReduce_502), - (503 , happyReduce_503), - (504 , happyReduce_504), - (505 , happyReduce_505), - (506 , happyReduce_506), - (507 , happyReduce_507), - (508 , happyReduce_508), - (509 , happyReduce_509), - (510 , happyReduce_510), - (511 , happyReduce_511), - (512 , happyReduce_512), - (513 , happyReduce_513), - (514 , happyReduce_514), - (515 , happyReduce_515), - (516 , happyReduce_516), - (517 , happyReduce_517), - (518 , happyReduce_518), - (519 , happyReduce_519), - (520 , happyReduce_520), - (521 , happyReduce_521), - (522 , happyReduce_522), - (523 , happyReduce_523), - (524 , happyReduce_524), - (525 , happyReduce_525), - (526 , happyReduce_526), - (527 , happyReduce_527), - (528 , happyReduce_528), - (529 , happyReduce_529), - (530 , happyReduce_530), - (531 , happyReduce_531), - (532 , happyReduce_532), - (533 , happyReduce_533), - (534 , happyReduce_534), - (535 , happyReduce_535), - (536 , happyReduce_536), - (537 , happyReduce_537), - (538 , happyReduce_538), - (539 , happyReduce_539), - (540 , happyReduce_540), - (541 , happyReduce_541), - (542 , happyReduce_542), - (543 , happyReduce_543), - (544 , happyReduce_544), - (545 , happyReduce_545), - (546 , happyReduce_546), - (547 , happyReduce_547), - (548 , happyReduce_548), - (549 , happyReduce_549), - (550 , happyReduce_550), - (551 , happyReduce_551), - (552 , happyReduce_552), - (553 , happyReduce_553), - (554 , happyReduce_554), - (555 , happyReduce_555), - (556 , happyReduce_556), - (557 , happyReduce_557), - (558 , happyReduce_558), - (559 , happyReduce_559), - (560 , happyReduce_560), - (561 , happyReduce_561), - (562 , happyReduce_562), - (563 , happyReduce_563), - (564 , happyReduce_564), - (565 , happyReduce_565), - (566 , happyReduce_566), - (567 , happyReduce_567), - (568 , happyReduce_568), - (569 , happyReduce_569), - (570 , happyReduce_570), - (571 , happyReduce_571), - (572 , happyReduce_572), - (573 , happyReduce_573), - (574 , happyReduce_574), - (575 , happyReduce_575), - (576 , happyReduce_576), - (577 , happyReduce_577), - (578 , happyReduce_578), - (579 , happyReduce_579), - (580 , happyReduce_580), - (581 , happyReduce_581), - (582 , happyReduce_582), - (583 , happyReduce_583), - (584 , happyReduce_584), - (585 , happyReduce_585), - (586 , happyReduce_586), - (587 , happyReduce_587), - (588 , happyReduce_588), - (589 , happyReduce_589), - (590 , happyReduce_590), - (591 , happyReduce_591), - (592 , happyReduce_592), - (593 , happyReduce_593), - (594 , happyReduce_594), - (595 , happyReduce_595), - (596 , happyReduce_596) - ] - -happy_n_terms = 134 :: Int -happy_n_nonterms = 219 :: Int - -happyReduce_8 = happySpecReduce_2 0# happyReduction_8 -happyReduction_8 happy_x_2 - happy_x_1 - = case happyOut15 happy_x_1 of { happy_var_1 -> - case happyOut12 happy_x_2 of { happy_var_2 -> - happyIn11 - (let (os,ss,l) = happy_var_1 in map (\x -> x os ss l) happy_var_2 - )}} - -happyReduce_9 = happySpecReduce_2 1# happyReduction_9 -happyReduction_9 happy_x_2 - happy_x_1 - = case happyOut19 happy_x_1 of { happy_var_1 -> - case happyOut12 happy_x_2 of { happy_var_2 -> - happyIn12 - (happy_var_1 : happy_var_2 - )}} - -happyReduce_10 = happySpecReduce_1 1# happyReduction_10 -happyReduction_10 happy_x_1 - = case happyOut19 happy_x_1 of { happy_var_1 -> - happyIn12 - ([happy_var_1] - )} - -happyReduce_11 = happyMonadReduce 2# 2# happyReduction_11 -happyReduction_11 (happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut15 happy_x_1 of { happy_var_1 -> - case happyOut14 happy_x_2 of { happy_var_2 -> - ( checkPageModule happy_var_2 happy_var_1)}} - ) (\r -> happyReturn (happyIn13 r)) - -happyReduce_12 = happyMonadReduce 5# 2# happyReduction_12 -happyReduction_12 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut15 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 XCodeTagOpen) -> - case happyOut19 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 XCodeTagClose) -> - case happyOut14 happy_x_5 of { happy_var_5 -> - ( let (os,ss,l) = happy_var_1 in checkHybridModule happy_var_5 (happy_var_3 os ss l) happy_var_2 happy_var_4)}}}}} - ) (\r -> happyReturn (happyIn13 r)) - -happyReduce_13 = happySpecReduce_2 2# happyReduction_13 -happyReduction_13 happy_x_2 - happy_x_1 - = case happyOut15 happy_x_1 of { happy_var_1 -> - case happyOut19 happy_x_2 of { happy_var_2 -> - happyIn13 - (let (os,ss,l) = happy_var_1 in happy_var_2 os ss l - )}} - -happyReduce_14 = happyMonadReduce 9# 3# happyReduction_14 -happyReduction_14 (happy_x_9 `HappyStk` - happy_x_8 `HappyStk` - happy_x_7 `HappyStk` - happy_x_6 `HappyStk` - happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 XStdTagOpen) -> - case happyOut161 happy_x_2 of { happy_var_2 -> - case happyOut164 happy_x_3 of { happy_var_3 -> - case happyOut166 happy_x_4 of { happy_var_4 -> - case happyOutTok happy_x_5 of { (Loc happy_var_5 XStdTagClose) -> - case happyOut159 happy_x_6 of { happy_var_6 -> - case happyOutTok happy_x_7 of { (Loc happy_var_7 XCloseTagOpen) -> - case happyOut161 happy_x_8 of { happy_var_8 -> - case happyOutTok happy_x_9 of { (Loc happy_var_9 XStdTagClose) -> - ( do { n <- checkEqNames happy_var_2 happy_var_8; - let { cn = reverse happy_var_6; - as = reverse happy_var_3; }; - return $ XTag (happy_var_1 <^^> happy_var_9 <** [happy_var_1,happy_var_5,happy_var_7,happy_var_9]) n as happy_var_4 cn })}}}}}}}}} - ) (\r -> happyReturn (happyIn14 r)) - -happyReduce_15 = happyReduce 5# 3# happyReduction_15 -happyReduction_15 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 XStdTagOpen) -> - case happyOut161 happy_x_2 of { happy_var_2 -> - case happyOut164 happy_x_3 of { happy_var_3 -> - case happyOut166 happy_x_4 of { happy_var_4 -> - case happyOutTok happy_x_5 of { (Loc happy_var_5 XEmptyTagClose) -> - happyIn14 - (XETag (happy_var_1 <^^> happy_var_5 <** [happy_var_1,happy_var_5]) happy_var_2 (reverse happy_var_3) happy_var_4 - ) `HappyStk` happyRest}}}}} - -happyReduce_16 = happySpecReduce_3 4# happyReduction_16 -happyReduction_16 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut222 happy_x_1 of { happy_var_1 -> - case happyOut16 happy_x_2 of { happy_var_2 -> - case happyOut223 happy_x_3 of { happy_var_3 -> - happyIn15 - (let (os,ss,ml) = happy_var_2 in (os,happy_var_1:ss++[happy_var_3],happy_var_1 <^^> happy_var_3) - )}}} - -happyReduce_17 = happySpecReduce_3 5# happyReduction_17 -happyReduction_17 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut17 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 SemiColon) -> - case happyOut16 happy_x_3 of { happy_var_3 -> - happyIn16 - (let (os,ss,ml) = happy_var_3 in (happy_var_1 : os, happy_var_2 : ss, Just $ ann happy_var_1 <++> nIS happy_var_2 <+?> ml) - )}}} - -happyReduce_18 = happySpecReduce_0 5# happyReduction_18 -happyReduction_18 = happyIn16 - (([],[],Nothing) - ) - -happyReduce_19 = happyReduce 4# 6# happyReduction_19 -happyReduction_19 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LANGUAGE) -> - case happyOut18 happy_x_2 of { happy_var_2 -> - case happyOut25 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 PragmaEnd) -> - happyIn17 - (LanguagePragma (happy_var_1 <^^> happy_var_4 <** (happy_var_1:snd happy_var_2 ++ reverse happy_var_3 ++ [happy_var_4])) (fst happy_var_2) - ) `HappyStk` happyRest}}}} - -happyReduce_20 = happySpecReduce_3 6# happyReduction_20 -happyReduction_20 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut25 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> - happyIn17 - (let Loc l (OPTIONS (mc, s)) = happy_var_1 - in OptionsPragma (l <^^> happy_var_3 <** (l:reverse happy_var_2 ++ [happy_var_3])) (readTool mc) s - )}}} - -happyReduce_21 = happySpecReduce_3 6# happyReduction_21 -happyReduction_21 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 ANN) -> - case happyOut76 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> - happyIn17 - (AnnModulePragma (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) happy_var_2 - )}}} - -happyReduce_22 = happySpecReduce_3 7# happyReduction_22 -happyReduction_22 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut213 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut18 happy_x_3 of { happy_var_3 -> - happyIn18 - ((happy_var_1 : fst happy_var_3, happy_var_2 : snd happy_var_3) - )}}} - -happyReduce_23 = happySpecReduce_1 7# happyReduction_23 -happyReduction_23 happy_x_1 - = case happyOut213 happy_x_1 of { happy_var_1 -> - happyIn18 - (([happy_var_1],[]) - )} - -happyReduce_24 = happySpecReduce_2 8# happyReduction_24 -happyReduction_24 happy_x_2 - happy_x_1 - = case happyOut20 happy_x_1 of { happy_var_1 -> - case happyOut22 happy_x_2 of { happy_var_2 -> - happyIn19 - (let (is,ds,ss1,inf) = happy_var_2 - in \os ss l -> Module (l <++> inf <** (ss ++ ss1)) happy_var_1 os is ds - )}} - -happyReduce_25 = happyReduce 5# 9# happyReduction_25 -happyReduction_25 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Module) -> - case happyOut224 happy_x_2 of { happy_var_2 -> - case happyOut21 happy_x_3 of { happy_var_3 -> - case happyOut26 happy_x_4 of { happy_var_4 -> - case happyOutTok happy_x_5 of { (Loc happy_var_5 KW_Where) -> - happyIn20 - (Just $ ModuleHead (happy_var_1 <^^> happy_var_5 <** [happy_var_1,happy_var_5]) happy_var_2 happy_var_3 happy_var_4 - ) `HappyStk` happyRest}}}}} - -happyReduce_26 = happySpecReduce_0 9# happyReduction_26 -happyReduction_26 = happyIn20 - (Nothing - ) - -happyReduce_27 = happySpecReduce_3 10# happyReduction_27 -happyReduction_27 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 DEPRECATED) -> - case happyOutTok happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> - happyIn21 - (let Loc l (StringTok (s,_)) = happy_var_2 in Just $ DeprText (happy_var_1 <^^> happy_var_3 <** [happy_var_1,l,happy_var_3]) s - )}}} - -happyReduce_28 = happySpecReduce_3 10# happyReduction_28 -happyReduction_28 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 WARNING) -> - case happyOutTok happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> - happyIn21 - (let Loc l (StringTok (s,_)) = happy_var_2 in Just $ WarnText (happy_var_1 <^^> happy_var_3 <** [happy_var_1,l,happy_var_3]) s - )}}} - -happyReduce_29 = happySpecReduce_0 10# happyReduction_29 -happyReduction_29 = happyIn21 - (Nothing - ) - -happyReduce_30 = happySpecReduce_3 11# happyReduction_30 -happyReduction_30 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftCurly) -> - case happyOut23 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightCurly) -> - happyIn22 - (let (is,ds,ss) = happy_var_2 in (is,ds,happy_var_1:ss ++ [happy_var_3], happy_var_1 <^^> happy_var_3) - )}}} - -happyReduce_31 = happySpecReduce_3 11# happyReduction_31 -happyReduction_31 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut222 happy_x_1 of { happy_var_1 -> - case happyOut23 happy_x_2 of { happy_var_2 -> - case happyOut223 happy_x_3 of { happy_var_3 -> - happyIn22 - (let (is,ds,ss) = happy_var_2 in (is,ds,happy_var_1:ss ++ [happy_var_3], happy_var_1 <^^> happy_var_3) - )}}} - -happyReduce_32 = happyReduce 4# 12# happyReduction_32 -happyReduction_32 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut25 happy_x_1 of { happy_var_1 -> - case happyOut31 happy_x_2 of { happy_var_2 -> - case happyOut24 happy_x_3 of { happy_var_3 -> - case happyOut48 happy_x_4 of { happy_var_4 -> - happyIn23 - ((reverse (fst happy_var_2), fst happy_var_4, reverse happy_var_1 ++ snd happy_var_2 ++ reverse happy_var_3 ++ snd happy_var_4) - ) `HappyStk` happyRest}}}} - -happyReduce_33 = happySpecReduce_2 12# happyReduction_33 -happyReduction_33 happy_x_2 - happy_x_1 - = case happyOut25 happy_x_1 of { happy_var_1 -> - case happyOut48 happy_x_2 of { happy_var_2 -> - happyIn23 - (([], fst happy_var_2, reverse happy_var_1 ++ snd happy_var_2) - )}} - -happyReduce_34 = happySpecReduce_3 12# happyReduction_34 -happyReduction_34 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut25 happy_x_1 of { happy_var_1 -> - case happyOut31 happy_x_2 of { happy_var_2 -> - case happyOut25 happy_x_3 of { happy_var_3 -> - happyIn23 - ((reverse (fst happy_var_2), [], reverse happy_var_1 ++ snd happy_var_2 ++ reverse happy_var_3) - )}}} - -happyReduce_35 = happySpecReduce_1 12# happyReduction_35 -happyReduction_35 happy_x_1 - = case happyOut25 happy_x_1 of { happy_var_1 -> - happyIn23 - (([], [], reverse happy_var_1) - )} - -happyReduce_36 = happySpecReduce_2 13# happyReduction_36 -happyReduction_36 happy_x_2 - happy_x_1 - = case happyOut25 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 SemiColon) -> - happyIn24 - (happy_var_2 : happy_var_1 - )}} - -happyReduce_37 = happySpecReduce_1 14# happyReduction_37 -happyReduction_37 happy_x_1 - = case happyOut24 happy_x_1 of { happy_var_1 -> - happyIn25 - (happy_var_1 - )} - -happyReduce_38 = happySpecReduce_0 14# happyReduction_38 -happyReduction_38 = happyIn25 - ([] - ) - -happyReduce_39 = happySpecReduce_1 15# happyReduction_39 -happyReduction_39 happy_x_1 - = case happyOut27 happy_x_1 of { happy_var_1 -> - happyIn26 - (Just happy_var_1 - )} - -happyReduce_40 = happySpecReduce_0 15# happyReduction_40 -happyReduction_40 = happyIn26 - (Nothing - ) - -happyReduce_41 = happyReduce 4# 16# happyReduction_41 -happyReduction_41 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut29 happy_x_2 of { happy_var_2 -> - case happyOut28 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> - happyIn27 - (ExportSpecList (happy_var_1 <^^> happy_var_4 <** (happy_var_1:reverse (snd happy_var_2) ++ happy_var_3 ++ [happy_var_4])) (reverse (fst happy_var_2)) - ) `HappyStk` happyRest}}}} - -happyReduce_42 = happySpecReduce_3 16# happyReduction_42 -happyReduction_42 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut28 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn27 - (ExportSpecList (happy_var_1 <^^> happy_var_3 <** (happy_var_1:happy_var_2++[happy_var_3])) [] - )}}} - -happyReduce_43 = happySpecReduce_1 17# happyReduction_43 -happyReduction_43 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 Comma) -> - happyIn28 - ([happy_var_1] - )} - -happyReduce_44 = happySpecReduce_0 17# happyReduction_44 -happyReduction_44 = happyIn28 - ([ ] - ) - -happyReduce_45 = happySpecReduce_3 18# happyReduction_45 -happyReduction_45 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut29 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut30 happy_x_3 of { happy_var_3 -> - happyIn29 - ((happy_var_3 : fst happy_var_1, happy_var_2 : snd happy_var_1) - )}}} - -happyReduce_46 = happySpecReduce_1 18# happyReduction_46 -happyReduction_46 happy_x_1 - = case happyOut30 happy_x_1 of { happy_var_1 -> - happyIn29 - (([happy_var_1],[]) - )} - -happyReduce_47 = happySpecReduce_1 19# happyReduction_47 -happyReduction_47 happy_x_1 - = case happyOut195 happy_x_1 of { happy_var_1 -> - happyIn30 - (EVar (ann happy_var_1) happy_var_1 - )} - -happyReduce_48 = happySpecReduce_1 19# happyReduction_48 -happyReduction_48 happy_x_1 - = case happyOut226 happy_x_1 of { happy_var_1 -> - happyIn30 - (EAbs (ann happy_var_1) happy_var_1 - )} - -happyReduce_49 = happyReduce 4# 19# happyReduction_49 -happyReduction_49 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut226 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 DotDot) -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> - happyIn30 - (EThingAll (ann happy_var_1 <++> nIS happy_var_4 <** [happy_var_2,happy_var_3,happy_var_4]) happy_var_1 - ) `HappyStk` happyRest}}}} - -happyReduce_50 = happySpecReduce_3 19# happyReduction_50 -happyReduction_50 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut226 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn30 - (EThingWith (ann happy_var_1 <++> nIS happy_var_3 <** [happy_var_2,happy_var_3]) happy_var_1 [] - )}}} - -happyReduce_51 = happyReduce 4# 19# happyReduction_51 -happyReduction_51 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut226 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> - case happyOut42 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> - happyIn30 - (EThingWith (ann happy_var_1 <++> nIS happy_var_4 <** (happy_var_2:reverse (snd happy_var_3) ++ [happy_var_4])) happy_var_1 (reverse (fst happy_var_3)) - ) `HappyStk` happyRest}}}} - -happyReduce_52 = happySpecReduce_2 19# happyReduction_52 -happyReduction_52 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Module) -> - case happyOut224 happy_x_2 of { happy_var_2 -> - happyIn30 - (EModuleContents (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2 - )}} - -happyReduce_53 = happySpecReduce_3 20# happyReduction_53 -happyReduction_53 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut31 happy_x_1 of { happy_var_1 -> - case happyOut24 happy_x_2 of { happy_var_2 -> - case happyOut32 happy_x_3 of { happy_var_3 -> - happyIn31 - ((happy_var_3 : fst happy_var_1, snd happy_var_1 ++ reverse happy_var_2) - )}}} - -happyReduce_54 = happySpecReduce_1 20# happyReduction_54 -happyReduction_54 happy_x_1 - = case happyOut32 happy_x_1 of { happy_var_1 -> - happyIn31 - (([happy_var_1],[]) - )} - -happyReduce_55 = happyReduce 7# 21# happyReduction_55 -happyReduction_55 (happy_x_7 `HappyStk` - happy_x_6 `HappyStk` - happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Import) -> - case happyOut33 happy_x_2 of { happy_var_2 -> - case happyOut34 happy_x_3 of { happy_var_3 -> - case happyOut35 happy_x_4 of { happy_var_4 -> - case happyOut224 happy_x_5 of { happy_var_5 -> - case happyOut36 happy_x_6 of { happy_var_6 -> - case happyOut37 happy_x_7 of { happy_var_7 -> - happyIn32 - (let { (mmn,ss,ml) = happy_var_6 ; - l = nIS happy_var_1 <++> ann happy_var_5 <+?> ml <+?> (fmap ann) happy_var_7 <** (happy_var_1:snd happy_var_2 ++ snd happy_var_3 ++ snd happy_var_4 ++ ss)} - in ImportDecl l happy_var_5 (fst happy_var_3) (fst happy_var_2) (fst happy_var_4) mmn happy_var_7 - ) `HappyStk` happyRest}}}}}}} - -happyReduce_56 = happySpecReduce_2 22# happyReduction_56 -happyReduction_56 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 SOURCE) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 PragmaEnd) -> - happyIn33 - ((True,[happy_var_1,happy_var_2]) - )}} - -happyReduce_57 = happySpecReduce_0 22# happyReduction_57 -happyReduction_57 = happyIn33 - ((False,[]) - ) - -happyReduce_58 = happySpecReduce_1 23# happyReduction_58 -happyReduction_58 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Qualified) -> - happyIn34 - ((True,[happy_var_1]) - )} - -happyReduce_59 = happySpecReduce_0 23# happyReduction_59 -happyReduction_59 = happyIn34 - ((False, []) - ) - -happyReduce_60 = happyMonadReduce 1# 24# happyReduction_60 -happyReduction_60 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - ( do { checkEnabled PackageImports ; - let { Loc l (StringTok (s,_)) = happy_var_1 } ; - return $ (Just s,[l]) })} - ) (\r -> happyReturn (happyIn35 r)) - -happyReduce_61 = happySpecReduce_0 24# happyReduction_61 -happyReduction_61 = happyIn35 - ((Nothing,[]) - ) - -happyReduce_62 = happySpecReduce_2 25# happyReduction_62 -happyReduction_62 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_As) -> - case happyOut224 happy_x_2 of { happy_var_2 -> - happyIn36 - ((Just happy_var_2,[happy_var_1],Just (nIS happy_var_1 <++> ann happy_var_2)) - )}} - -happyReduce_63 = happySpecReduce_0 25# happyReduction_63 -happyReduction_63 = happyIn36 - ((Nothing,[],Nothing) - ) - -happyReduce_64 = happySpecReduce_1 26# happyReduction_64 -happyReduction_64 happy_x_1 - = case happyOut38 happy_x_1 of { happy_var_1 -> - happyIn37 - (Just happy_var_1 - )} - -happyReduce_65 = happySpecReduce_0 26# happyReduction_65 -happyReduction_65 = happyIn37 - (Nothing - ) - -happyReduce_66 = happyReduce 5# 27# happyReduction_66 -happyReduction_66 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut39 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> - case happyOut40 happy_x_3 of { happy_var_3 -> - case happyOut28 happy_x_4 of { happy_var_4 -> - case happyOutTok happy_x_5 of { (Loc happy_var_5 RightParen) -> - happyIn38 - (let {(b,ml,s) = happy_var_1 ; - l = (ml (happy_var_2 <^^> happy_var_5)) <** (s ++ happy_var_2:reverse (snd happy_var_3) ++ happy_var_4 ++ [happy_var_5])} - in ImportSpecList l b (reverse (fst happy_var_3)) - ) `HappyStk` happyRest}}}}} - -happyReduce_67 = happyReduce 4# 27# happyReduction_67 -happyReduction_67 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut39 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> - case happyOut28 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> - happyIn38 - (let {(b,ml,s) = happy_var_1 ; l = (ml (happy_var_2 <^^> happy_var_4)) <** (s ++ happy_var_2:happy_var_3 ++ [happy_var_4])} - in ImportSpecList l b [] - ) `HappyStk` happyRest}}}} - -happyReduce_68 = happySpecReduce_1 28# happyReduction_68 -happyReduction_68 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Hiding) -> - happyIn39 - ((True,Just (nIS happy_var_1),[happy_var_1]) - )} - -happyReduce_69 = happySpecReduce_0 28# happyReduction_69 -happyReduction_69 = happyIn39 - ((False,Nothing,[]) - ) - -happyReduce_70 = happySpecReduce_3 29# happyReduction_70 -happyReduction_70 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut40 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut41 happy_x_3 of { happy_var_3 -> - happyIn40 - ((happy_var_3 : fst happy_var_1, happy_var_2 : snd happy_var_1) - )}}} - -happyReduce_71 = happySpecReduce_1 29# happyReduction_71 -happyReduction_71 happy_x_1 - = case happyOut41 happy_x_1 of { happy_var_1 -> - happyIn40 - (([happy_var_1],[]) - )} - -happyReduce_72 = happySpecReduce_1 30# happyReduction_72 -happyReduction_72 happy_x_1 - = case happyOut193 happy_x_1 of { happy_var_1 -> - happyIn41 - (IVar (ann happy_var_1) happy_var_1 - )} - -happyReduce_73 = happySpecReduce_1 30# happyReduction_73 -happyReduction_73 happy_x_1 - = case happyOut225 happy_x_1 of { happy_var_1 -> - happyIn41 - (IAbs (ann happy_var_1) happy_var_1 - )} - -happyReduce_74 = happyReduce 4# 30# happyReduction_74 -happyReduction_74 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut225 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 DotDot) -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> - happyIn41 - (IThingAll (ann happy_var_1 <++> nIS happy_var_4 <** [happy_var_2,happy_var_3,happy_var_4]) happy_var_1 - ) `HappyStk` happyRest}}}} - -happyReduce_75 = happySpecReduce_3 30# happyReduction_75 -happyReduction_75 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut225 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn41 - (IThingWith (ann happy_var_1 <++> nIS happy_var_3 <** [happy_var_2,happy_var_3]) happy_var_1 [] - )}}} - -happyReduce_76 = happyReduce 4# 30# happyReduction_76 -happyReduction_76 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut225 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> - case happyOut42 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> - happyIn41 - (IThingWith (ann happy_var_1 <++> nIS happy_var_4 <** (happy_var_2:reverse (snd happy_var_3) ++ [happy_var_4])) happy_var_1 (reverse (fst happy_var_3)) - ) `HappyStk` happyRest}}}} - -happyReduce_77 = happySpecReduce_3 31# happyReduction_77 -happyReduction_77 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut42 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut43 happy_x_3 of { happy_var_3 -> - happyIn42 - ((happy_var_3 : fst happy_var_1, happy_var_2 : snd happy_var_1) - )}}} - -happyReduce_78 = happySpecReduce_1 31# happyReduction_78 -happyReduction_78 happy_x_1 - = case happyOut43 happy_x_1 of { happy_var_1 -> - happyIn42 - (([happy_var_1],[]) - )} - -happyReduce_79 = happySpecReduce_1 32# happyReduction_79 -happyReduction_79 happy_x_1 - = case happyOut193 happy_x_1 of { happy_var_1 -> - happyIn43 - (VarName (ann happy_var_1) happy_var_1 - )} - -happyReduce_80 = happySpecReduce_1 32# happyReduction_80 -happyReduction_80 happy_x_1 - = case happyOut197 happy_x_1 of { happy_var_1 -> - happyIn43 - (ConName (ann happy_var_1) happy_var_1 - )} - -happyReduce_81 = happySpecReduce_3 33# happyReduction_81 -happyReduction_81 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut46 happy_x_1 of { happy_var_1 -> - case happyOut45 happy_x_2 of { happy_var_2 -> - case happyOut47 happy_x_3 of { happy_var_3 -> - happyIn44 - (let (ops,ss,l) = happy_var_3 - in InfixDecl (ann happy_var_1 <++> l <** (snd happy_var_2 ++ reverse ss)) happy_var_1 (fst happy_var_2) (reverse ops) - )}}} - -happyReduce_82 = happySpecReduce_0 34# happyReduction_82 -happyReduction_82 = happyIn45 - ((Nothing, []) - ) - -happyReduce_83 = happyMonadReduce 1# 34# happyReduction_83 -happyReduction_83 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - ( let Loc l (IntTok (i,_)) = happy_var_1 in checkPrec i >>= \i -> return (Just i, [l]))} - ) (\r -> happyReturn (happyIn45 r)) - -happyReduce_84 = happySpecReduce_1 35# happyReduction_84 -happyReduction_84 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Infix) -> - happyIn46 - (AssocNone $ nIS happy_var_1 - )} - -happyReduce_85 = happySpecReduce_1 35# happyReduction_85 -happyReduction_85 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_InfixL) -> - happyIn46 - (AssocLeft $ nIS happy_var_1 - )} - -happyReduce_86 = happySpecReduce_1 35# happyReduction_86 -happyReduction_86 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_InfixR) -> - happyIn46 - (AssocRight $ nIS happy_var_1 - )} - -happyReduce_87 = happySpecReduce_3 36# happyReduction_87 -happyReduction_87 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut47 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut204 happy_x_3 of { happy_var_3 -> - happyIn47 - (let (ops,ss,l) = happy_var_1 in (happy_var_3 : ops, happy_var_2 : ss, l <++> ann happy_var_3) - )}}} - -happyReduce_88 = happySpecReduce_1 36# happyReduction_88 -happyReduction_88 happy_x_1 - = case happyOut204 happy_x_1 of { happy_var_1 -> - happyIn47 - (([happy_var_1],[],ann happy_var_1) - )} - -happyReduce_89 = happyMonadReduce 2# 37# happyReduction_89 -happyReduction_89 (happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut49 happy_x_1 of { happy_var_1 -> - case happyOut25 happy_x_2 of { happy_var_2 -> - ( checkRevDecls (fst happy_var_1) >>= \ds -> return (ds, snd happy_var_1 ++ reverse happy_var_2))}} - ) (\r -> happyReturn (happyIn48 r)) - -happyReduce_90 = happySpecReduce_3 38# happyReduction_90 -happyReduction_90 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut49 happy_x_1 of { happy_var_1 -> - case happyOut24 happy_x_2 of { happy_var_2 -> - case happyOut50 happy_x_3 of { happy_var_3 -> - happyIn49 - ((happy_var_3 : fst happy_var_1, snd happy_var_1 ++ reverse happy_var_2) - )}}} - -happyReduce_91 = happySpecReduce_1 38# happyReduction_91 -happyReduction_91 happy_x_1 - = case happyOut50 happy_x_1 of { happy_var_1 -> - happyIn49 - (([happy_var_1],[]) - )} - -happyReduce_92 = happyMonadReduce 4# 39# happyReduction_92 -happyReduction_92 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Type) -> - case happyOut78 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 Equals) -> - case happyOut88 happy_x_4 of { happy_var_4 -> - ( do { dh <- checkSimpleType happy_var_2; - let {l = nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_3]}; - return (TypeDecl l dh happy_var_4) })}}}} - ) (\r -> happyReturn (happyIn50 r)) - -happyReduce_93 = happyMonadReduce 4# 39# happyReduction_93 -happyReduction_93 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Type) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Family) -> - case happyOut80 happy_x_3 of { happy_var_3 -> - case happyOut122 happy_x_4 of { happy_var_4 -> - ( do { dh <- checkSimpleType happy_var_3; - let {l = nIS happy_var_1 <++> ann happy_var_3 <+?> (fmap ann) (fst happy_var_4) <** (happy_var_1:happy_var_2:snd happy_var_4)}; - return (TypeFamDecl l dh (fst happy_var_4)) })}}}} - ) (\r -> happyReturn (happyIn50 r)) - -happyReduce_94 = happyMonadReduce 5# 39# happyReduction_94 -happyReduction_94 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Type) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Instance) -> - case happyOut77 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 Equals) -> - case happyOut88 happy_x_5 of { happy_var_5 -> - ( do { -- no checkSimpleType happy_var_4 since dtype may contain type patterns - checkEnabled TypeFamilies ; - let {l = nIS happy_var_1 <++> ann happy_var_5 <** [happy_var_1,happy_var_2,happy_var_4]}; - return (TypeInsDecl l happy_var_3 happy_var_5) })}}}}} - ) (\r -> happyReturn (happyIn50 r)) - -happyReduce_95 = happyMonadReduce 4# 39# happyReduction_95 -happyReduction_95 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut51 happy_x_1 of { happy_var_1 -> - case happyOut89 happy_x_2 of { happy_var_2 -> - case happyOut104 happy_x_3 of { happy_var_3 -> - case happyOut116 happy_x_4 of { happy_var_4 -> - ( do { (cs,dh) <- checkDataHeader happy_var_2; - let { (qds,ss,minf) = happy_var_3; - l = happy_var_1 <> happy_var_2 <+?> minf <+?> fmap ann happy_var_4 <** ss}; - checkDataOrNew happy_var_1 qds; - return (DataDecl l happy_var_1 cs dh (reverse qds) happy_var_4) })}}}} - ) (\r -> happyReturn (happyIn50 r)) - -happyReduce_96 = happyMonadReduce 5# 39# happyReduction_96 -happyReduction_96 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut51 happy_x_1 of { happy_var_1 -> - case happyOut89 happy_x_2 of { happy_var_2 -> - case happyOut122 happy_x_3 of { happy_var_3 -> - case happyOut100 happy_x_4 of { happy_var_4 -> - case happyOut116 happy_x_5 of { happy_var_5 -> - ( do { (cs,dh) <- checkDataHeader happy_var_2; - let { (gs,ss,minf) = happy_var_4; - l = ann happy_var_1 <+?> minf <+?> fmap ann happy_var_5 <** (snd happy_var_3 ++ ss)}; - checkDataOrNew happy_var_1 gs; - case (gs, fst happy_var_3) of - ([], Nothing) -> return (DataDecl l happy_var_1 cs dh [] happy_var_5) - _ -> checkEnabled GADTs >> return (GDataDecl l happy_var_1 cs dh (fst happy_var_3) (reverse gs) happy_var_5) })}}}}} - ) (\r -> happyReturn (happyIn50 r)) - -happyReduce_97 = happyMonadReduce 4# 39# happyReduction_97 -happyReduction_97 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Data) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Family) -> - case happyOut89 happy_x_3 of { happy_var_3 -> - case happyOut122 happy_x_4 of { happy_var_4 -> - ( do { (cs,dh) <- checkDataHeader happy_var_3; - let {l = nIS happy_var_1 <++> ann happy_var_3 <+?> (fmap ann) (fst happy_var_4) <** (happy_var_1:happy_var_2:snd happy_var_4)}; - return (DataFamDecl l cs dh (fst happy_var_4)) })}}}} - ) (\r -> happyReturn (happyIn50 r)) - -happyReduce_98 = happyMonadReduce 5# 39# happyReduction_98 -happyReduction_98 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut51 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Instance) -> - case happyOut88 happy_x_3 of { happy_var_3 -> - case happyOut104 happy_x_4 of { happy_var_4 -> - case happyOut116 happy_x_5 of { happy_var_5 -> - ( do { -- (cs,c,t) <- checkDataHeader happy_var_4; - checkEnabled TypeFamilies ; - let { (qds,ss,minf) = happy_var_4 ; - l = happy_var_1 <> happy_var_3 <+?> minf <+?> fmap ann happy_var_5 <** happy_var_2:ss }; - checkDataOrNew happy_var_1 qds; - return (DataInsDecl l happy_var_1 happy_var_3 (reverse qds) happy_var_5) })}}}}} - ) (\r -> happyReturn (happyIn50 r)) - -happyReduce_99 = happyMonadReduce 6# 39# happyReduction_99 -happyReduction_99 (happy_x_6 `HappyStk` - happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut51 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Instance) -> - case happyOut88 happy_x_3 of { happy_var_3 -> - case happyOut122 happy_x_4 of { happy_var_4 -> - case happyOut100 happy_x_5 of { happy_var_5 -> - case happyOut116 happy_x_6 of { happy_var_6 -> - ( do { -- (cs,c,t) <- checkDataHeader happy_var_4; - checkEnabled TypeFamilies ; - let {(gs,ss,minf) = happy_var_5; - l = ann happy_var_1 <+?> minf <+?> fmap ann happy_var_6 <** (happy_var_2:snd happy_var_4 ++ ss)}; - checkDataOrNew happy_var_1 gs; - return (GDataInsDecl l happy_var_1 happy_var_3 (fst happy_var_4) (reverse gs) happy_var_6) })}}}}}} - ) (\r -> happyReturn (happyIn50 r)) - -happyReduce_100 = happyMonadReduce 4# 39# happyReduction_100 -happyReduction_100 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Class) -> - case happyOut89 happy_x_2 of { happy_var_2 -> - case happyOut97 happy_x_3 of { happy_var_3 -> - case happyOut123 happy_x_4 of { happy_var_4 -> - ( do { (cs,dh) <- checkClassHeader happy_var_2; - let {(fds,ss1,minf1) = happy_var_3;(mcs,ss2,minf2) = happy_var_4} ; - let { l = nIS happy_var_1 <++> ann happy_var_2 <+?> minf1 <+?> minf2 <** (happy_var_1:ss1 ++ ss2)} ; - return (ClassDecl l cs dh fds mcs) })}}}} - ) (\r -> happyReturn (happyIn50 r)) - -happyReduce_101 = happyMonadReduce 3# 39# happyReduction_101 -happyReduction_101 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Instance) -> - case happyOut89 happy_x_2 of { happy_var_2 -> - case happyOut128 happy_x_3 of { happy_var_3 -> - ( do { (cs,ih) <- checkInstHeader happy_var_2; - let {(mis,ss,minf) = happy_var_3}; - return (InstDecl (nIS happy_var_1 <++> ann happy_var_2 <+?> minf <** (happy_var_1:ss)) cs ih mis) })}}} - ) (\r -> happyReturn (happyIn50 r)) - -happyReduce_102 = happyMonadReduce 3# 39# happyReduction_102 -happyReduction_102 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Deriving) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Instance) -> - case happyOut89 happy_x_3 of { happy_var_3 -> - ( do { checkEnabled StandaloneDeriving ; - (cs, ih) <- checkInstHeader happy_var_3; - let {l = nIS happy_var_1 <++> ann happy_var_3 <** [happy_var_1,happy_var_2]}; - return (DerivDecl l cs ih) })}}} - ) (\r -> happyReturn (happyIn50 r)) - -happyReduce_103 = happyReduce 4# 39# happyReduction_103 -happyReduction_103 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Default) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> - case happyOut52 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> - happyIn50 - (DefaultDecl (happy_var_1 <^^> happy_var_4 <** (happy_var_1:happy_var_2 : snd happy_var_3 ++ [happy_var_4])) (fst happy_var_3) - ) `HappyStk` happyRest}}}} - -happyReduce_104 = happyMonadReduce 1# 39# happyReduction_104 -happyReduction_104 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut141 happy_x_1 of { happy_var_1 -> - ( checkEnabled TemplateHaskell >> checkExpr happy_var_1 >>= \e -> return (SpliceDecl (ann e) e))} - ) (\r -> happyReturn (happyIn50 r)) - -happyReduce_105 = happyReduce 5# 39# happyReduction_105 -happyReduction_105 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Foreign) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Import) -> - case happyOut63 happy_x_3 of { happy_var_3 -> - case happyOut64 happy_x_4 of { happy_var_4 -> - case happyOut65 happy_x_5 of { happy_var_5 -> - happyIn50 - (let (s,n,t,ss) = happy_var_5 in ForImp (nIS happy_var_1 <++> ann t <** (happy_var_1:happy_var_2:ss)) happy_var_3 happy_var_4 s n t - ) `HappyStk` happyRest}}}}} - -happyReduce_106 = happyReduce 4# 39# happyReduction_106 -happyReduction_106 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Foreign) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Export) -> - case happyOut63 happy_x_3 of { happy_var_3 -> - case happyOut65 happy_x_4 of { happy_var_4 -> - happyIn50 - (let (s,n,t,ss) = happy_var_4 in ForExp (nIS happy_var_1 <++> ann t <** (happy_var_1:happy_var_2:ss)) happy_var_3 s n t - ) `HappyStk` happyRest}}}} - -happyReduce_107 = happySpecReduce_3 39# happyReduction_107 -happyReduction_107 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 RULES) -> - case happyOut66 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> - happyIn50 - (RulePragmaDecl (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) $ reverse happy_var_2 - )}}} - -happyReduce_108 = happySpecReduce_3 39# happyReduction_108 -happyReduction_108 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 DEPRECATED) -> - case happyOut72 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> - happyIn50 - (DeprPragmaDecl (happy_var_1 <^^> happy_var_3 <** (happy_var_1:snd happy_var_2++[happy_var_3])) $ reverse (fst happy_var_2) - )}}} - -happyReduce_109 = happySpecReduce_3 39# happyReduction_109 -happyReduction_109 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 WARNING) -> - case happyOut72 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> - happyIn50 - (WarnPragmaDecl (happy_var_1 <^^> happy_var_3 <** (happy_var_1:snd happy_var_2++[happy_var_3])) $ reverse (fst happy_var_2) - )}}} - -happyReduce_110 = happySpecReduce_3 39# happyReduction_110 -happyReduction_110 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 ANN) -> - case happyOut76 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> - happyIn50 - (AnnPragma (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) happy_var_2 - )}}} - -happyReduce_111 = happySpecReduce_1 39# happyReduction_111 -happyReduction_111 happy_x_1 - = case happyOut55 happy_x_1 of { happy_var_1 -> - happyIn50 - (happy_var_1 - )} - -happyReduce_112 = happySpecReduce_1 40# happyReduction_112 -happyReduction_112 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Data) -> - happyIn51 - (DataType $ nIS happy_var_1 - )} - -happyReduce_113 = happySpecReduce_1 40# happyReduction_113 -happyReduction_113 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_NewType) -> - happyIn51 - (NewType $ nIS happy_var_1 - )} - -happyReduce_114 = happyMonadReduce 1# 41# happyReduction_114 -happyReduction_114 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut91 happy_x_1 of { happy_var_1 -> - ( do { ts <- mapM checkType (fst happy_var_1); - return $ (reverse ts, reverse (snd happy_var_1)) })} - ) (\r -> happyReturn (happyIn52 r)) - -happyReduce_115 = happySpecReduce_1 41# happyReduction_115 -happyReduction_115 happy_x_1 - = case happyOut79 happy_x_1 of { happy_var_1 -> - happyIn52 - (([happy_var_1],[]) - )} - -happyReduce_116 = happySpecReduce_0 41# happyReduction_116 -happyReduction_116 = happyIn52 - (([],[]) - ) - -happyReduce_117 = happyMonadReduce 3# 42# happyReduction_117 -happyReduction_117 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut25 happy_x_1 of { happy_var_1 -> - case happyOut54 happy_x_2 of { happy_var_2 -> - case happyOut25 happy_x_3 of { happy_var_3 -> - ( checkRevDecls (fst happy_var_2) >>= \ds -> return (ds, reverse happy_var_1 ++ snd happy_var_2 ++ reverse happy_var_3))}}} - ) (\r -> happyReturn (happyIn53 r)) - -happyReduce_118 = happySpecReduce_1 42# happyReduction_118 -happyReduction_118 happy_x_1 - = case happyOut25 happy_x_1 of { happy_var_1 -> - happyIn53 - (([],reverse happy_var_1) - )} - -happyReduce_119 = happySpecReduce_3 43# happyReduction_119 -happyReduction_119 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut54 happy_x_1 of { happy_var_1 -> - case happyOut24 happy_x_2 of { happy_var_2 -> - case happyOut55 happy_x_3 of { happy_var_3 -> - happyIn54 - ((happy_var_3 : fst happy_var_1, snd happy_var_1 ++ reverse happy_var_2) - )}}} - -happyReduce_120 = happySpecReduce_1 43# happyReduction_120 -happyReduction_120 happy_x_1 - = case happyOut55 happy_x_1 of { happy_var_1 -> - happyIn54 - (([happy_var_1],[]) - )} - -happyReduce_121 = happySpecReduce_1 44# happyReduction_121 -happyReduction_121 happy_x_1 - = case happyOut57 happy_x_1 of { happy_var_1 -> - happyIn55 - (happy_var_1 - )} - -happyReduce_122 = happySpecReduce_1 44# happyReduction_122 -happyReduction_122 happy_x_1 - = case happyOut44 happy_x_1 of { happy_var_1 -> - happyIn55 - (happy_var_1 - )} - -happyReduce_123 = happySpecReduce_1 44# happyReduction_123 -happyReduction_123 happy_x_1 - = case happyOut133 happy_x_1 of { happy_var_1 -> - happyIn55 - (happy_var_1 - )} - -happyReduce_124 = happySpecReduce_3 45# happyReduction_124 -happyReduction_124 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftCurly) -> - case happyOut53 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightCurly) -> - happyIn56 - (BDecls (happy_var_1 <^^> happy_var_3 <** (happy_var_1:snd happy_var_2++[happy_var_3])) (fst happy_var_2) - )}}} - -happyReduce_125 = happySpecReduce_3 45# happyReduction_125 -happyReduction_125 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut222 happy_x_1 of { happy_var_1 -> - case happyOut53 happy_x_2 of { happy_var_2 -> - case happyOut223 happy_x_3 of { happy_var_3 -> - happyIn56 - (BDecls (happy_var_1 <^^> happy_var_3 <** (happy_var_1:snd happy_var_2++[happy_var_3])) (fst happy_var_2) - )}}} - -happyReduce_126 = happyMonadReduce 3# 46# happyReduction_126 -happyReduction_126 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut143 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 DoubleColon) -> - case happyOut88 happy_x_3 of { happy_var_3 -> - ( do { v <- checkSigVar happy_var_1; - return $ TypeSig (happy_var_1 <> happy_var_3 <** [happy_var_2]) [v] happy_var_3 })}}} - ) (\r -> happyReturn (happyIn57 r)) - -happyReduce_127 = happyMonadReduce 5# 46# happyReduction_127 -happyReduction_127 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut143 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut62 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 DoubleColon) -> - case happyOut88 happy_x_5 of { happy_var_5 -> - ( do { v <- checkSigVar happy_var_1; - let {(vs,ss,_) = happy_var_3 ; l = happy_var_1 <> happy_var_5 <** (happy_var_2 : reverse ss ++ [happy_var_4]) } ; - return $ TypeSig l (v : reverse vs) happy_var_5 })}}}}} - ) (\r -> happyReturn (happyIn57 r)) - -happyReduce_128 = happySpecReduce_1 46# happyReduction_128 -happyReduction_128 happy_x_1 - = case happyOut58 happy_x_1 of { happy_var_1 -> - happyIn57 - (happy_var_1 - )} - -happyReduce_129 = happyReduce 4# 47# happyReduction_129 -happyReduction_129 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut68 happy_x_2 of { happy_var_2 -> - case happyOut195 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 PragmaEnd) -> - happyIn58 - (let Loc l (INLINE s) = happy_var_1 in InlineSig (l <^^> happy_var_4 <** [l,happy_var_4]) s happy_var_2 happy_var_3 - ) `HappyStk` happyRest}}}} - -happyReduce_130 = happyReduce 4# 47# happyReduction_130 -happyReduction_130 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 INLINE_CONLIKE) -> - case happyOut68 happy_x_2 of { happy_var_2 -> - case happyOut195 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 PragmaEnd) -> - happyIn58 - (InlineConlikeSig (happy_var_1 <^^> happy_var_4 <** [happy_var_1,happy_var_4]) happy_var_2 happy_var_3 - ) `HappyStk` happyRest}}}} - -happyReduce_131 = happyReduce 5# 47# happyReduction_131 -happyReduction_131 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 SPECIALISE) -> - case happyOut195 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 DoubleColon) -> - case happyOut59 happy_x_4 of { happy_var_4 -> - case happyOutTok happy_x_5 of { (Loc happy_var_5 PragmaEnd) -> - happyIn58 - (SpecSig (happy_var_1 <^^> happy_var_5 <** (happy_var_1:happy_var_3 : snd happy_var_4 ++ [happy_var_5])) happy_var_2 (fst happy_var_4) - ) `HappyStk` happyRest}}}}} - -happyReduce_132 = happyReduce 6# 47# happyReduction_132 -happyReduction_132 (happy_x_6 `HappyStk` - happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut68 happy_x_2 of { happy_var_2 -> - case happyOut195 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 DoubleColon) -> - case happyOut59 happy_x_5 of { happy_var_5 -> - case happyOutTok happy_x_6 of { (Loc happy_var_6 PragmaEnd) -> - happyIn58 - (let Loc l (SPECIALISE_INLINE s) = happy_var_1 - in SpecInlineSig (l <^^> happy_var_6 <** (l:happy_var_4:snd happy_var_5++[happy_var_6])) s happy_var_2 happy_var_3 (fst happy_var_5) - ) `HappyStk` happyRest}}}}}} - -happyReduce_133 = happyMonadReduce 4# 47# happyReduction_133 -happyReduction_133 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 SPECIALISE) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Instance) -> - case happyOut89 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 PragmaEnd) -> - ( do { (cs,ih) <- checkInstHeader happy_var_3; - let {l = happy_var_1 <^^> happy_var_4 <** [happy_var_1,happy_var_2,happy_var_4]}; - return $ InstSig l cs ih })}}}} - ) (\r -> happyReturn (happyIn58 r)) - -happyReduce_134 = happySpecReduce_1 48# happyReduction_134 -happyReduction_134 happy_x_1 - = case happyOut60 happy_x_1 of { happy_var_1 -> - happyIn59 - (([happy_var_1],[]) - )} - -happyReduce_135 = happySpecReduce_3 48# happyReduction_135 -happyReduction_135 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut60 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut59 happy_x_3 of { happy_var_3 -> - happyIn59 - ((happy_var_1 : fst happy_var_3, happy_var_2 : snd happy_var_3) - )}}} - -happyReduce_136 = happyMonadReduce 1# 49# happyReduction_136 -happyReduction_136 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut89 happy_x_1 of { happy_var_1 -> - ( checkType $ mkTyForall (ann happy_var_1) Nothing Nothing happy_var_1)} - ) (\r -> happyReturn (happyIn60 r)) - -happyReduce_137 = happySpecReduce_1 50# happyReduction_137 -happyReduction_137 happy_x_1 - = case happyOut56 happy_x_1 of { happy_var_1 -> - happyIn61 - (happy_var_1 - )} - -happyReduce_138 = happySpecReduce_3 50# happyReduction_138 -happyReduction_138 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftCurly) -> - case happyOut189 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightCurly) -> - happyIn61 - (IPBinds (happy_var_1 <^^> happy_var_3 <** snd happy_var_2) (fst happy_var_2) - )}}} - -happyReduce_139 = happySpecReduce_3 50# happyReduction_139 -happyReduction_139 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut222 happy_x_1 of { happy_var_1 -> - case happyOut189 happy_x_2 of { happy_var_2 -> - case happyOut223 happy_x_3 of { happy_var_3 -> - happyIn61 - (IPBinds (happy_var_1 <^^> happy_var_3 <** snd happy_var_2) (fst happy_var_2) - )}}} - -happyReduce_140 = happySpecReduce_3 51# happyReduction_140 -happyReduction_140 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut62 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut193 happy_x_3 of { happy_var_3 -> - happyIn62 - (let (ns,ss,l) = happy_var_1 in (happy_var_3 : ns, happy_var_2 : ss, l <++> ann happy_var_3) - )}}} - -happyReduce_141 = happyMonadReduce 1# 51# happyReduction_141 -happyReduction_141 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut195 happy_x_1 of { happy_var_1 -> - ( do { n <- checkUnQual happy_var_1; - return ([n],[],ann n) })} - ) (\r -> happyReturn (happyIn62 r)) - -happyReduce_142 = happySpecReduce_1 52# happyReduction_142 -happyReduction_142 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_StdCall) -> - happyIn63 - (StdCall (nIS happy_var_1) - )} - -happyReduce_143 = happySpecReduce_1 52# happyReduction_143 -happyReduction_143 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_CCall) -> - happyIn63 - (CCall (nIS happy_var_1) - )} - -happyReduce_144 = happySpecReduce_1 53# happyReduction_144 -happyReduction_144 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Safe) -> - happyIn64 - (Just $ PlaySafe (nIS happy_var_1) False - )} - -happyReduce_145 = happySpecReduce_1 53# happyReduction_145 -happyReduction_145 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Unsafe) -> - happyIn64 - (Just $ PlayRisky (nIS happy_var_1) - )} - -happyReduce_146 = happySpecReduce_1 53# happyReduction_146 -happyReduction_146 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Threadsafe) -> - happyIn64 - (Just $ PlaySafe (nIS happy_var_1) True - )} - -happyReduce_147 = happySpecReduce_0 53# happyReduction_147 -happyReduction_147 = happyIn64 - (Nothing - ) - -happyReduce_148 = happyReduce 4# 54# happyReduction_148 -happyReduction_148 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut194 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 DoubleColon) -> - case happyOut77 happy_x_4 of { happy_var_4 -> - happyIn65 - (let Loc l (StringTok (s,_)) = happy_var_1 in (Just s, happy_var_2, happy_var_4, [l,happy_var_3]) - ) `HappyStk` happyRest}}}} - -happyReduce_149 = happySpecReduce_3 54# happyReduction_149 -happyReduction_149 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut194 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 DoubleColon) -> - case happyOut77 happy_x_3 of { happy_var_3 -> - happyIn65 - ((Nothing, happy_var_1, happy_var_3, [happy_var_2]) - )}}} - -happyReduce_150 = happySpecReduce_3 55# happyReduction_150 -happyReduction_150 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut66 happy_x_1 of { happy_var_1 -> - case happyOut67 happy_x_3 of { happy_var_3 -> - happyIn66 - (happy_var_3 : happy_var_1 - )}} - -happyReduce_151 = happySpecReduce_2 55# happyReduction_151 -happyReduction_151 happy_x_2 - happy_x_1 - = case happyOut66 happy_x_1 of { happy_var_1 -> - happyIn66 - (happy_var_1 - )} - -happyReduce_152 = happySpecReduce_1 55# happyReduction_152 -happyReduction_152 happy_x_1 - = case happyOut67 happy_x_1 of { happy_var_1 -> - happyIn66 - ([happy_var_1] - )} - -happyReduce_153 = happySpecReduce_0 55# happyReduction_153 -happyReduction_153 = happyIn66 - ([] - ) - -happyReduce_154 = happyMonadReduce 6# 56# happyReduction_154 -happyReduction_154 (happy_x_6 `HappyStk` - happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut68 happy_x_2 of { happy_var_2 -> - case happyOut69 happy_x_3 of { happy_var_3 -> - case happyOut141 happy_x_4 of { happy_var_4 -> - case happyOutTok happy_x_5 of { (Loc happy_var_5 Equals) -> - case happyOut139 happy_x_6 of { happy_var_6 -> - ( do { let {Loc l (StringTok (s,_)) = happy_var_1}; - e <- checkRuleExpr happy_var_4; - return $ Rule (nIS l <++> ann happy_var_6 <** l:snd happy_var_3 ++ [happy_var_5]) s happy_var_2 (fst happy_var_3) e happy_var_6 })}}}}}} - ) (\r -> happyReturn (happyIn67 r)) - -happyReduce_155 = happySpecReduce_0 57# happyReduction_155 -happyReduction_155 = happyIn68 - (Nothing - ) - -happyReduce_156 = happySpecReduce_3 57# happyReduction_156 -happyReduction_156 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftSquare) -> - case happyOutTok happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightSquare) -> - happyIn68 - (let Loc l (IntTok (i,_)) = happy_var_2 in Just $ ActiveFrom (happy_var_1 <^^> happy_var_3 <** [happy_var_1,l,happy_var_3]) (fromInteger i) - )}}} - -happyReduce_157 = happyReduce 4# 57# happyReduction_157 -happyReduction_157 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftSquare) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Tilde) -> - case happyOutTok happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 RightSquare) -> - happyIn68 - (let Loc l (IntTok (i,_)) = happy_var_3 in Just $ ActiveUntil (happy_var_1 <^^> happy_var_4 <** [happy_var_1,happy_var_2,l,happy_var_4]) (fromInteger i) - ) `HappyStk` happyRest}}}} - -happyReduce_158 = happySpecReduce_0 58# happyReduction_158 -happyReduction_158 = happyIn69 - ((Nothing,[]) - ) - -happyReduce_159 = happySpecReduce_3 58# happyReduction_159 -happyReduction_159 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Forall) -> - case happyOut70 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 Dot) -> - happyIn69 - ((Just happy_var_2,[happy_var_1,happy_var_3]) - )}}} - -happyReduce_160 = happySpecReduce_1 59# happyReduction_160 -happyReduction_160 happy_x_1 - = case happyOut71 happy_x_1 of { happy_var_1 -> - happyIn70 - ([happy_var_1] - )} - -happyReduce_161 = happySpecReduce_2 59# happyReduction_161 -happyReduction_161 happy_x_2 - happy_x_1 - = case happyOut71 happy_x_1 of { happy_var_1 -> - case happyOut70 happy_x_2 of { happy_var_2 -> - happyIn70 - (happy_var_1 : happy_var_2 - )}} - -happyReduce_162 = happySpecReduce_1 60# happyReduction_162 -happyReduction_162 happy_x_1 - = case happyOut210 happy_x_1 of { happy_var_1 -> - happyIn71 - (RuleVar (ann happy_var_1) happy_var_1 - )} - -happyReduce_163 = happyReduce 5# 60# happyReduction_163 -happyReduction_163 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut210 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 DoubleColon) -> - case happyOut88 happy_x_4 of { happy_var_4 -> - case happyOutTok happy_x_5 of { (Loc happy_var_5 RightParen) -> - happyIn71 - (TypedRuleVar (happy_var_1 <^^> happy_var_5 <** [happy_var_1,happy_var_3,happy_var_5]) happy_var_2 happy_var_4 - ) `HappyStk` happyRest}}}}} - -happyReduce_164 = happySpecReduce_3 61# happyReduction_164 -happyReduction_164 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut72 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 SemiColon) -> - case happyOut73 happy_x_3 of { happy_var_3 -> - happyIn72 - ((fst happy_var_3 : fst happy_var_1, snd happy_var_1 ++ (happy_var_2:snd happy_var_3)) - )}}} - -happyReduce_165 = happySpecReduce_2 61# happyReduction_165 -happyReduction_165 happy_x_2 - happy_x_1 - = case happyOut72 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 SemiColon) -> - happyIn72 - ((fst happy_var_1, snd happy_var_1 ++ [happy_var_2]) - )}} - -happyReduce_166 = happySpecReduce_1 61# happyReduction_166 -happyReduction_166 happy_x_1 - = case happyOut73 happy_x_1 of { happy_var_1 -> - happyIn72 - (([fst happy_var_1],snd happy_var_1) - )} - -happyReduce_167 = happySpecReduce_0 61# happyReduction_167 -happyReduction_167 = happyIn72 - (([],[]) - ) - -happyReduce_168 = happySpecReduce_2 62# happyReduction_168 -happyReduction_168 happy_x_2 - happy_x_1 - = case happyOut74 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { happy_var_2 -> - happyIn73 - (let Loc l (StringTok (s,_)) = happy_var_2 in ((fst happy_var_1,s),snd happy_var_1 ++ [l]) - )}} - -happyReduce_169 = happySpecReduce_1 63# happyReduction_169 -happyReduction_169 happy_x_1 - = case happyOut75 happy_x_1 of { happy_var_1 -> - happyIn74 - (([happy_var_1],[]) - )} - -happyReduce_170 = happySpecReduce_3 63# happyReduction_170 -happyReduction_170 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut75 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut74 happy_x_3 of { happy_var_3 -> - happyIn74 - ((happy_var_1 : fst happy_var_3, happy_var_2 : snd happy_var_3) - )}}} - -happyReduce_171 = happySpecReduce_1 64# happyReduction_171 -happyReduction_171 happy_x_1 - = case happyOut197 happy_x_1 of { happy_var_1 -> - happyIn75 - (happy_var_1 - )} - -happyReduce_172 = happySpecReduce_1 64# happyReduction_172 -happyReduction_172 happy_x_1 - = case happyOut193 happy_x_1 of { happy_var_1 -> - happyIn75 - (happy_var_1 - )} - -happyReduce_173 = happyMonadReduce 3# 65# happyReduction_173 -happyReduction_173 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Type) -> - case happyOut213 happy_x_2 of { happy_var_2 -> - case happyOut150 happy_x_3 of { happy_var_3 -> - ( checkExpr happy_var_3 >>= \e -> return (TypeAnn (nIS happy_var_1 <++> ann e <** [happy_var_1]) happy_var_2 e))}}} - ) (\r -> happyReturn (happyIn76 r)) - -happyReduce_174 = happyMonadReduce 2# 65# happyReduction_174 -happyReduction_174 (happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Module) -> - case happyOut150 happy_x_2 of { happy_var_2 -> - ( checkExpr happy_var_2 >>= \e -> return (ModuleAnn (nIS happy_var_1 <++> ann e <** [happy_var_1]) e))}} - ) (\r -> happyReturn (happyIn76 r)) - -happyReduce_175 = happyMonadReduce 2# 65# happyReduction_175 -happyReduction_175 (happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut75 happy_x_1 of { happy_var_1 -> - case happyOut150 happy_x_2 of { happy_var_2 -> - ( checkExpr happy_var_2 >>= \e -> return (Ann (happy_var_1 <> e) happy_var_1 e))}} - ) (\r -> happyReturn (happyIn76 r)) - -happyReduce_176 = happyMonadReduce 1# 66# happyReduction_176 -happyReduction_176 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut78 happy_x_1 of { happy_var_1 -> - ( checkType happy_var_1)} - ) (\r -> happyReturn (happyIn77 r)) - -happyReduce_177 = happySpecReduce_1 67# happyReduction_177 -happyReduction_177 happy_x_1 - = case happyOut82 happy_x_1 of { happy_var_1 -> - happyIn78 - (happy_var_1 - )} - -happyReduce_178 = happySpecReduce_3 67# happyReduction_178 -happyReduction_178 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut82 happy_x_1 of { happy_var_1 -> - case happyOut87 happy_x_2 of { happy_var_2 -> - case happyOut78 happy_x_3 of { happy_var_3 -> - happyIn78 - (TyInfix (happy_var_1 <> happy_var_3) happy_var_1 happy_var_2 happy_var_3 - )}}} - -happyReduce_179 = happySpecReduce_3 67# happyReduction_179 -happyReduction_179 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut82 happy_x_1 of { happy_var_1 -> - case happyOut228 happy_x_2 of { happy_var_2 -> - case happyOut78 happy_x_3 of { happy_var_3 -> - happyIn78 - (TyInfix (happy_var_1 <> happy_var_3) happy_var_1 happy_var_2 happy_var_3 - )}}} - -happyReduce_180 = happySpecReduce_3 67# happyReduction_180 -happyReduction_180 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut82 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 RightArrow) -> - case happyOut89 happy_x_3 of { happy_var_3 -> - happyIn78 - (TyFun (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3 - )}}} - -happyReduce_181 = happyMonadReduce 3# 67# happyReduction_181 -happyReduction_181 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut82 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Tilde) -> - case happyOut82 happy_x_3 of { happy_var_3 -> - ( do { checkEnabled TypeFamilies ; - let {l = happy_var_1 <> happy_var_3 <** [happy_var_2]}; - return $ TyPred l $ EqualP l happy_var_1 happy_var_3 })}}} - ) (\r -> happyReturn (happyIn78 r)) - -happyReduce_182 = happyMonadReduce 1# 68# happyReduction_182 -happyReduction_182 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut80 happy_x_1 of { happy_var_1 -> - ( checkType happy_var_1)} - ) (\r -> happyReturn (happyIn79 r)) - -happyReduce_183 = happySpecReduce_3 69# happyReduction_183 -happyReduction_183 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut196 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 DoubleColon) -> - case happyOut78 happy_x_3 of { happy_var_3 -> - happyIn80 - (let l = (happy_var_1 <> happy_var_3 <** [happy_var_2]) in TyPred l $ IParam l happy_var_1 happy_var_3 - )}}} - -happyReduce_184 = happySpecReduce_1 69# happyReduction_184 -happyReduction_184 happy_x_1 - = case happyOut78 happy_x_1 of { happy_var_1 -> - happyIn80 - (happy_var_1 - )} - -happyReduce_185 = happyMonadReduce 1# 70# happyReduction_185 -happyReduction_185 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut82 happy_x_1 of { happy_var_1 -> - ( checkType happy_var_1)} - ) (\r -> happyReturn (happyIn81 r)) - -happyReduce_186 = happySpecReduce_2 71# happyReduction_186 -happyReduction_186 happy_x_2 - happy_x_1 - = case happyOut82 happy_x_1 of { happy_var_1 -> - case happyOut84 happy_x_2 of { happy_var_2 -> - happyIn82 - (TyApp (happy_var_1 <> happy_var_2) happy_var_1 happy_var_2 - )}} - -happyReduce_187 = happySpecReduce_1 71# happyReduction_187 -happyReduction_187 happy_x_1 - = case happyOut84 happy_x_1 of { happy_var_1 -> - happyIn82 - (happy_var_1 - )} - -happyReduce_188 = happyMonadReduce 1# 72# happyReduction_188 -happyReduction_188 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut84 happy_x_1 of { happy_var_1 -> - ( checkType happy_var_1)} - ) (\r -> happyReturn (happyIn83 r)) - -happyReduce_189 = happySpecReduce_1 73# happyReduction_189 -happyReduction_189 happy_x_1 - = case happyOut85 happy_x_1 of { happy_var_1 -> - happyIn84 - (TyCon (ann happy_var_1) happy_var_1 - )} - -happyReduce_190 = happySpecReduce_1 73# happyReduction_190 -happyReduction_190 happy_x_1 - = case happyOut227 happy_x_1 of { happy_var_1 -> - happyIn84 - (TyVar (ann happy_var_1) happy_var_1 - )} - -happyReduce_191 = happySpecReduce_3 73# happyReduction_191 -happyReduction_191 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut91 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn84 - (TyTuple (happy_var_1 <^^> happy_var_3 <** (happy_var_1:reverse (happy_var_3:snd happy_var_2))) Boxed (reverse (fst happy_var_2)) - )}}} - -happyReduce_192 = happySpecReduce_3 73# happyReduction_192 -happyReduction_192 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftHashParen) -> - case happyOut92 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightHashParen) -> - happyIn84 - (TyTuple (happy_var_1 <^^> happy_var_3 <** (happy_var_1:reverse (happy_var_3:snd happy_var_2))) Unboxed (reverse (fst happy_var_2)) - )}}} - -happyReduce_193 = happySpecReduce_3 73# happyReduction_193 -happyReduction_193 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftSquare) -> - case happyOut80 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightSquare) -> - happyIn84 - (TyList (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) happy_var_2 - )}}} - -happyReduce_194 = happySpecReduce_3 73# happyReduction_194 -happyReduction_194 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut89 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn84 - (TyParen (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) happy_var_2 - )}}} - -happyReduce_195 = happyReduce 5# 73# happyReduction_195 -happyReduction_195 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut89 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 DoubleColon) -> - case happyOut119 happy_x_4 of { happy_var_4 -> - case happyOutTok happy_x_5 of { (Loc happy_var_5 RightParen) -> - happyIn84 - (TyKind (happy_var_1 <^^> happy_var_5 <** [happy_var_1,happy_var_3,happy_var_5]) happy_var_2 happy_var_4 - ) `HappyStk` happyRest}}}}} - -happyReduce_196 = happySpecReduce_1 74# happyReduction_196 -happyReduction_196 happy_x_1 - = case happyOut86 happy_x_1 of { happy_var_1 -> - happyIn85 - (happy_var_1 - )} - -happyReduce_197 = happySpecReduce_2 74# happyReduction_197 -happyReduction_197 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 RightParen) -> - happyIn85 - (unit_tycon_name (happy_var_1 <^^> happy_var_2 <** [happy_var_1,happy_var_2]) - )}} - -happyReduce_198 = happySpecReduce_3 74# happyReduction_198 -happyReduction_198 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 RightArrow) -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn85 - (fun_tycon_name (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_2,happy_var_3]) - )}}} - -happyReduce_199 = happySpecReduce_2 74# happyReduction_199 -happyReduction_199 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftSquare) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 RightSquare) -> - happyIn85 - (list_tycon_name (happy_var_1 <^^> happy_var_2 <** [happy_var_1,happy_var_2]) - )}} - -happyReduce_200 = happySpecReduce_3 74# happyReduction_200 -happyReduction_200 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut153 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn85 - (tuple_tycon_name (happy_var_1 <^^> happy_var_3 <** (happy_var_1:reverse happy_var_2 ++ [happy_var_3])) Boxed (length happy_var_2) - )}}} - -happyReduce_201 = happySpecReduce_2 74# happyReduction_201 -happyReduction_201 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftHashParen) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 RightHashParen) -> - happyIn85 - (unboxed_singleton_tycon_name (happy_var_1 <^^> happy_var_2 <** [happy_var_1,happy_var_2]) - )}} - -happyReduce_202 = happySpecReduce_3 74# happyReduction_202 -happyReduction_202 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftHashParen) -> - case happyOut153 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightHashParen) -> - happyIn85 - (tuple_tycon_name (happy_var_1 <^^> happy_var_3 <** (happy_var_1:reverse happy_var_2 ++ [happy_var_3])) Unboxed (length happy_var_2) - )}}} - -happyReduce_203 = happySpecReduce_1 75# happyReduction_203 -happyReduction_203 happy_x_1 - = case happyOut212 happy_x_1 of { happy_var_1 -> - happyIn86 - (happy_var_1 - )} - -happyReduce_204 = happySpecReduce_3 75# happyReduction_204 -happyReduction_204 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut207 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn86 - (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2 - )}}} - -happyReduce_205 = happySpecReduce_1 76# happyReduction_205 -happyReduction_205 happy_x_1 - = case happyOut203 happy_x_1 of { happy_var_1 -> - happyIn87 - (happy_var_1 - )} - -happyReduce_206 = happyMonadReduce 1# 77# happyReduction_206 -happyReduction_206 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut89 happy_x_1 of { happy_var_1 -> - ( checkType happy_var_1)} - ) (\r -> happyReturn (happyIn88 r)) - -happyReduce_207 = happyReduce 4# 78# happyReduction_207 -happyReduction_207 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Forall) -> - case happyOut93 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 Dot) -> - case happyOut89 happy_x_4 of { happy_var_4 -> - happyIn89 - (TyForall (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_3]) (Just (reverse (fst happy_var_2))) Nothing happy_var_4 - ) `HappyStk` happyRest}}}} - -happyReduce_208 = happySpecReduce_2 78# happyReduction_208 -happyReduction_208 happy_x_2 - happy_x_1 - = case happyOut90 happy_x_1 of { happy_var_1 -> - case happyOut89 happy_x_2 of { happy_var_2 -> - happyIn89 - (TyForall (happy_var_1 <> happy_var_2) Nothing (Just happy_var_1) happy_var_2 - )}} - -happyReduce_209 = happySpecReduce_1 78# happyReduction_209 -happyReduction_209 happy_x_1 - = case happyOut80 happy_x_1 of { happy_var_1 -> - happyIn89 - (happy_var_1 - )} - -happyReduce_210 = happyMonadReduce 2# 79# happyReduction_210 -happyReduction_210 (happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut82 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 DoubleArrow) -> - ( checkPContext $ (amap (\l -> l <++> nIS happy_var_2 <** (srcInfoPoints l ++ [happy_var_2]))) happy_var_1)}} - ) (\r -> happyReturn (happyIn90 r)) - -happyReduce_211 = happyMonadReduce 4# 79# happyReduction_211 -happyReduction_211 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut82 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Tilde) -> - case happyOut82 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 DoubleArrow) -> - ( do { checkEnabled TypeFamilies; - let {l = happy_var_1 <> happy_var_3 <** [happy_var_2,happy_var_4]}; - checkPContext (TyPred l $ EqualP l happy_var_1 happy_var_3) })}}}} - ) (\r -> happyReturn (happyIn90 r)) - -happyReduce_212 = happySpecReduce_3 80# happyReduction_212 -happyReduction_212 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut92 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut89 happy_x_3 of { happy_var_3 -> - happyIn91 - ((happy_var_3 : fst happy_var_1, happy_var_2 : snd happy_var_1) - )}}} - -happyReduce_213 = happySpecReduce_1 81# happyReduction_213 -happyReduction_213 happy_x_1 - = case happyOut89 happy_x_1 of { happy_var_1 -> - happyIn92 - (([happy_var_1],[]) - )} - -happyReduce_214 = happySpecReduce_3 81# happyReduction_214 -happyReduction_214 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut92 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut89 happy_x_3 of { happy_var_3 -> - happyIn92 - ((happy_var_3 : fst happy_var_1, happy_var_2 : snd happy_var_1) - )}}} - -happyReduce_215 = happySpecReduce_2 82# happyReduction_215 -happyReduction_215 happy_x_2 - happy_x_1 - = case happyOut93 happy_x_1 of { happy_var_1 -> - case happyOut94 happy_x_2 of { happy_var_2 -> - happyIn93 - ((happy_var_2 : fst happy_var_1, Just (snd happy_var_1 ann happy_var_2)) - )}} - -happyReduce_216 = happySpecReduce_0 82# happyReduction_216 -happyReduction_216 = happyIn93 - (([],Nothing) - ) - -happyReduce_217 = happySpecReduce_1 83# happyReduction_217 -happyReduction_217 happy_x_1 - = case happyOut227 happy_x_1 of { happy_var_1 -> - happyIn94 - (UnkindedVar (ann happy_var_1) happy_var_1 - )} - -happyReduce_218 = happyReduce 5# 83# happyReduction_218 -happyReduction_218 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut227 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 DoubleColon) -> - case happyOut119 happy_x_4 of { happy_var_4 -> - case happyOutTok happy_x_5 of { (Loc happy_var_5 RightParen) -> - happyIn94 - (KindedVar (happy_var_1 <^^> happy_var_5 <** [happy_var_1,happy_var_3,happy_var_5]) happy_var_2 happy_var_4 - ) `HappyStk` happyRest}}}}} - -happyReduce_219 = happySpecReduce_2 84# happyReduction_219 -happyReduction_219 happy_x_2 - happy_x_1 - = case happyOut95 happy_x_1 of { happy_var_1 -> - case happyOut227 happy_x_2 of { happy_var_2 -> - happyIn95 - ((happy_var_2 : fst happy_var_1, Just (snd happy_var_1 ann happy_var_2)) - )}} - -happyReduce_220 = happySpecReduce_0 84# happyReduction_220 -happyReduction_220 = happyIn95 - (([], Nothing) - ) - -happyReduce_221 = happySpecReduce_2 85# happyReduction_221 -happyReduction_221 happy_x_2 - happy_x_1 - = case happyOut95 happy_x_1 of { happy_var_1 -> - case happyOut227 happy_x_2 of { happy_var_2 -> - happyIn96 - ((happy_var_2 : fst happy_var_1, snd happy_var_1 ann happy_var_2) - )}} - -happyReduce_222 = happySpecReduce_0 86# happyReduction_222 -happyReduction_222 = happyIn97 - (([],[], Nothing) - ) - -happyReduce_223 = happyMonadReduce 2# 86# happyReduction_223 -happyReduction_223 (happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 Bar) -> - case happyOut98 happy_x_2 of { happy_var_2 -> - ( do { checkEnabled FunctionalDependencies ; - let {(fds,ss,l) = happy_var_2} ; - return (reverse fds, happy_var_1 : reverse ss, Just (nIS happy_var_1 <++> l)) })}} - ) (\r -> happyReturn (happyIn97 r)) - -happyReduce_224 = happySpecReduce_3 87# happyReduction_224 -happyReduction_224 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut98 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut99 happy_x_3 of { happy_var_3 -> - happyIn98 - (let (fds,ss,l) = happy_var_1 in (happy_var_3 : fds, happy_var_2 : ss, l <++> ann happy_var_3) - )}}} - -happyReduce_225 = happySpecReduce_1 87# happyReduction_225 -happyReduction_225 happy_x_1 - = case happyOut99 happy_x_1 of { happy_var_1 -> - happyIn98 - (([happy_var_1],[],ann happy_var_1) - )} - -happyReduce_226 = happySpecReduce_3 88# happyReduction_226 -happyReduction_226 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut96 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 RightArrow) -> - case happyOut96 happy_x_3 of { happy_var_3 -> - happyIn99 - (FunDep (snd happy_var_1 <++> snd happy_var_3 <** [happy_var_2]) (reverse (fst happy_var_1)) (reverse (fst happy_var_3)) - )}}} - -happyReduce_227 = happyMonadReduce 4# 89# happyReduction_227 -happyReduction_227 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Where) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftCurly) -> - case happyOut101 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 RightCurly) -> - ( return (fst happy_var_3, happy_var_1 : happy_var_2 : snd happy_var_3 ++ [happy_var_4], Just $ happy_var_1 <^^> happy_var_4))}}}} - ) (\r -> happyReturn (happyIn100 r)) - -happyReduce_228 = happyMonadReduce 4# 89# happyReduction_228 -happyReduction_228 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Where) -> - case happyOut222 happy_x_2 of { happy_var_2 -> - case happyOut101 happy_x_3 of { happy_var_3 -> - case happyOut223 happy_x_4 of { happy_var_4 -> - ( return (fst happy_var_3, happy_var_1 : happy_var_2 : snd happy_var_3 ++ [happy_var_4], Just $ happy_var_1 <^^> happy_var_4))}}}} - ) (\r -> happyReturn (happyIn100 r)) - -happyReduce_229 = happyMonadReduce 0# 89# happyReduction_229 -happyReduction_229 (happyRest) tk - = happyThen (( checkEnabled EmptyDataDecls >> return ([],[],Nothing)) - ) (\r -> happyReturn (happyIn100 r)) - -happyReduce_230 = happySpecReduce_3 90# happyReduction_230 -happyReduction_230 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut25 happy_x_1 of { happy_var_1 -> - case happyOut102 happy_x_2 of { happy_var_2 -> - case happyOut25 happy_x_3 of { happy_var_3 -> - happyIn101 - ((fst happy_var_2, reverse happy_var_1 ++ snd happy_var_2 ++ reverse happy_var_3) - )}}} - -happyReduce_231 = happySpecReduce_3 91# happyReduction_231 -happyReduction_231 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut102 happy_x_1 of { happy_var_1 -> - case happyOut24 happy_x_2 of { happy_var_2 -> - case happyOut103 happy_x_3 of { happy_var_3 -> - happyIn102 - ((happy_var_3 : fst happy_var_1, snd happy_var_1 ++ reverse happy_var_2) - )}}} - -happyReduce_232 = happySpecReduce_1 91# happyReduction_232 -happyReduction_232 happy_x_1 - = case happyOut103 happy_x_1 of { happy_var_1 -> - happyIn102 - (([happy_var_1],[]) - )} - -happyReduce_233 = happyMonadReduce 3# 92# happyReduction_233 -happyReduction_233 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut198 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 DoubleColon) -> - case happyOut88 happy_x_3 of { happy_var_3 -> - ( do { c <- checkUnQual happy_var_1; - return $ GadtDecl (happy_var_1 <> happy_var_3 <** [happy_var_2]) c happy_var_3 })}}} - ) (\r -> happyReturn (happyIn103 r)) - -happyReduce_234 = happySpecReduce_2 93# happyReduction_234 -happyReduction_234 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 Equals) -> - case happyOut105 happy_x_2 of { happy_var_2 -> - happyIn104 - (let (ds,ss,l) = happy_var_2 in (ds, happy_var_1 : reverse ss, Just $ nIS happy_var_1 <++> l) - )}} - -happyReduce_235 = happySpecReduce_3 94# happyReduction_235 -happyReduction_235 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut105 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Bar) -> - case happyOut106 happy_x_3 of { happy_var_3 -> - happyIn105 - (let (ds,ss,l) = happy_var_1 in (happy_var_3 : ds, happy_var_2 : ss, l <++> ann happy_var_3) - )}}} - -happyReduce_236 = happySpecReduce_1 94# happyReduction_236 -happyReduction_236 happy_x_1 - = case happyOut106 happy_x_1 of { happy_var_1 -> - happyIn105 - (([happy_var_1],[],ann happy_var_1) - )} - -happyReduce_237 = happyMonadReduce 3# 95# happyReduction_237 -happyReduction_237 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut107 happy_x_1 of { happy_var_1 -> - case happyOut90 happy_x_2 of { happy_var_2 -> - case happyOut108 happy_x_3 of { happy_var_3 -> - ( do { checkEnabled ExistentialQuantification ; - ctxt <- checkContext (Just happy_var_2) ; - let {(mtvs,ss,ml) = happy_var_1} ; - return $ QualConDecl (ml ann happy_var_3 <** ss) mtvs ctxt happy_var_3 })}}} - ) (\r -> happyReturn (happyIn106 r)) - -happyReduce_238 = happySpecReduce_2 95# happyReduction_238 -happyReduction_238 happy_x_2 - happy_x_1 - = case happyOut107 happy_x_1 of { happy_var_1 -> - case happyOut108 happy_x_2 of { happy_var_2 -> - happyIn106 - (let (mtvs, ss, ml) = happy_var_1 in QualConDecl (ml ann happy_var_2 <** ss) mtvs Nothing happy_var_2 - )}} - -happyReduce_239 = happyMonadReduce 3# 96# happyReduction_239 -happyReduction_239 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Forall) -> - case happyOut93 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 Dot) -> - ( checkEnabled ExistentialQuantification >> return (Just (fst happy_var_2), [happy_var_1,happy_var_3], Just $ happy_var_1 <^^> happy_var_3))}}} - ) (\r -> happyReturn (happyIn107 r)) - -happyReduce_240 = happySpecReduce_0 96# happyReduction_240 -happyReduction_240 = happyIn107 - ((Nothing, [], Nothing) - ) - -happyReduce_241 = happySpecReduce_1 97# happyReduction_241 -happyReduction_241 happy_x_1 - = case happyOut109 happy_x_1 of { happy_var_1 -> - happyIn108 - (let (n,ts,l) = happy_var_1 in ConDecl l n ts - )} - -happyReduce_242 = happySpecReduce_3 97# happyReduction_242 -happyReduction_242 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut112 happy_x_1 of { happy_var_1 -> - case happyOut202 happy_x_2 of { happy_var_2 -> - case happyOut112 happy_x_3 of { happy_var_3 -> - happyIn108 - (InfixConDecl (happy_var_1 <> happy_var_3) happy_var_1 happy_var_2 happy_var_3 - )}}} - -happyReduce_243 = happyMonadReduce 3# 97# happyReduction_243 -happyReduction_243 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut198 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftCurly) -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightCurly) -> - ( do { c <- checkUnQual happy_var_1; return $ RecDecl (ann happy_var_1 <++> nIS happy_var_3 <** [happy_var_2,happy_var_3]) c [] })}}} - ) (\r -> happyReturn (happyIn108 r)) - -happyReduce_244 = happyMonadReduce 4# 97# happyReduction_244 -happyReduction_244 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut198 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftCurly) -> - case happyOut113 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 RightCurly) -> - ( do { c <- checkUnQual happy_var_1; - return $ RecDecl (ann happy_var_1 <++> nIS happy_var_4 <** (happy_var_2:reverse (snd happy_var_3) ++ [happy_var_4])) c (reverse (fst happy_var_3)) })}}}} - ) (\r -> happyReturn (happyIn108 r)) - -happyReduce_245 = happyMonadReduce 1# 98# happyReduction_245 -happyReduction_245 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut82 happy_x_1 of { happy_var_1 -> - ( do { (c,ts) <- splitTyConApp happy_var_1; - return (c,map (\t -> UnBangedTy (ann t) t) ts,ann happy_var_1) })} - ) (\r -> happyReturn (happyIn109 r)) - -happyReduce_246 = happySpecReduce_1 98# happyReduction_246 -happyReduction_246 happy_x_1 - = case happyOut110 happy_x_1 of { happy_var_1 -> - happyIn109 - (happy_var_1 - )} - -happyReduce_247 = happyMonadReduce 3# 99# happyReduction_247 -happyReduction_247 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut82 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Exclamation) -> - case happyOut83 happy_x_3 of { happy_var_3 -> - ( do { (c,ts) <- splitTyConApp happy_var_1; - return (c,map (\t -> UnBangedTy (ann t) t) ts++ - [BangedTy (nIS happy_var_2 <++> ann happy_var_3 <** [happy_var_2]) happy_var_3], happy_var_1 <> happy_var_3) })}}} - ) (\r -> happyReturn (happyIn110 r)) - -happyReduce_248 = happyMonadReduce 5# 99# happyReduction_248 -happyReduction_248 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut82 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 UNPACK) -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 Exclamation) -> - case happyOut83 happy_x_5 of { happy_var_5 -> - ( do { (c,ts) <- splitTyConApp happy_var_1; - return (c,map (\t -> UnBangedTy (ann t) t) ts++ - [UnpackedTy (nIS happy_var_2 <++> ann happy_var_5 <** [happy_var_2,happy_var_3,happy_var_4]) happy_var_5], happy_var_1 <> happy_var_5) })}}}}} - ) (\r -> happyReturn (happyIn110 r)) - -happyReduce_249 = happySpecReduce_2 99# happyReduction_249 -happyReduction_249 happy_x_2 - happy_x_1 - = case happyOut110 happy_x_1 of { happy_var_1 -> - case happyOut111 happy_x_2 of { happy_var_2 -> - happyIn110 - (let (n,ts,l) = happy_var_1 in (n, ts ++ [happy_var_2],l <++> ann happy_var_2) - )}} - -happyReduce_250 = happySpecReduce_1 100# happyReduction_250 -happyReduction_250 happy_x_1 - = case happyOut83 happy_x_1 of { happy_var_1 -> - happyIn111 - (UnBangedTy (ann happy_var_1) happy_var_1 - )} - -happyReduce_251 = happySpecReduce_2 100# happyReduction_251 -happyReduction_251 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 Exclamation) -> - case happyOut83 happy_x_2 of { happy_var_2 -> - happyIn111 - (BangedTy (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2 - )}} - -happyReduce_252 = happyReduce 4# 100# happyReduction_252 -happyReduction_252 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 UNPACK) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 PragmaEnd) -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 Exclamation) -> - case happyOut83 happy_x_4 of { happy_var_4 -> - happyIn111 - (UnpackedTy (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_2,happy_var_3]) happy_var_4 - ) `HappyStk` happyRest}}}} - -happyReduce_253 = happySpecReduce_1 101# happyReduction_253 -happyReduction_253 happy_x_1 - = case happyOut81 happy_x_1 of { happy_var_1 -> - happyIn112 - (UnBangedTy (ann happy_var_1) happy_var_1 - )} - -happyReduce_254 = happySpecReduce_2 101# happyReduction_254 -happyReduction_254 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 Exclamation) -> - case happyOut83 happy_x_2 of { happy_var_2 -> - happyIn112 - (BangedTy (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2 - )}} - -happyReduce_255 = happyReduce 4# 101# happyReduction_255 -happyReduction_255 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 UNPACK) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 PragmaEnd) -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 Exclamation) -> - case happyOut83 happy_x_4 of { happy_var_4 -> - happyIn112 - (UnpackedTy (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_2,happy_var_3]) happy_var_4 - ) `HappyStk` happyRest}}}} - -happyReduce_256 = happySpecReduce_3 102# happyReduction_256 -happyReduction_256 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut113 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut114 happy_x_3 of { happy_var_3 -> - happyIn113 - ((happy_var_3 : fst happy_var_1, happy_var_2 : snd happy_var_1) - )}}} - -happyReduce_257 = happySpecReduce_1 102# happyReduction_257 -happyReduction_257 happy_x_1 - = case happyOut114 happy_x_1 of { happy_var_1 -> - happyIn113 - (([happy_var_1],[]) - )} - -happyReduce_258 = happySpecReduce_3 103# happyReduction_258 -happyReduction_258 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut62 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 DoubleColon) -> - case happyOut115 happy_x_3 of { happy_var_3 -> - happyIn114 - (let (ns,ss,l) = happy_var_1 in FieldDecl (l <++> ann happy_var_3 <** (reverse ss ++ [happy_var_2])) (reverse ns) happy_var_3 - )}}} - -happyReduce_259 = happySpecReduce_1 104# happyReduction_259 -happyReduction_259 happy_x_1 - = case happyOut88 happy_x_1 of { happy_var_1 -> - happyIn115 - (UnBangedTy (ann happy_var_1) happy_var_1 - )} - -happyReduce_260 = happySpecReduce_2 104# happyReduction_260 -happyReduction_260 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 Exclamation) -> - case happyOut83 happy_x_2 of { happy_var_2 -> - happyIn115 - (BangedTy (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2 - )}} - -happyReduce_261 = happyReduce 4# 104# happyReduction_261 -happyReduction_261 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 UNPACK) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 PragmaEnd) -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 Exclamation) -> - case happyOut83 happy_x_4 of { happy_var_4 -> - happyIn115 - (UnpackedTy (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_2,happy_var_3]) happy_var_4 - ) `HappyStk` happyRest}}}} - -happyReduce_262 = happySpecReduce_0 105# happyReduction_262 -happyReduction_262 = happyIn116 - (Nothing - ) - -happyReduce_263 = happySpecReduce_2 105# happyReduction_263 -happyReduction_263 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Deriving) -> - case happyOut118 happy_x_2 of { happy_var_2 -> - happyIn116 - (let l = nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1] in Just $ Deriving l [IHead (ann happy_var_2) happy_var_2 []] - )}} - -happyReduce_264 = happySpecReduce_3 105# happyReduction_264 -happyReduction_264 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Deriving) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn116 - (Just $ Deriving (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_2,happy_var_3]) [] - )}}} - -happyReduce_265 = happyReduce 4# 105# happyReduction_265 -happyReduction_265 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Deriving) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> - case happyOut117 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> - happyIn116 - (Just $ Deriving (happy_var_1 <^^> happy_var_4 <** happy_var_1:happy_var_2: reverse (snd happy_var_3) ++ [happy_var_4]) (reverse (fst happy_var_3)) - ) `HappyStk` happyRest}}}} - -happyReduce_266 = happyMonadReduce 1# 106# happyReduction_266 -happyReduction_266 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut92 happy_x_1 of { happy_var_1 -> - ( checkDeriving (fst happy_var_1) >>= \ds -> return (ds, snd happy_var_1))} - ) (\r -> happyReturn (happyIn117 r)) - -happyReduce_267 = happySpecReduce_1 107# happyReduction_267 -happyReduction_267 happy_x_1 - = case happyOut212 happy_x_1 of { happy_var_1 -> - happyIn118 - (happy_var_1 - )} - -happyReduce_268 = happyMonadReduce 1# 108# happyReduction_268 -happyReduction_268 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut120 happy_x_1 of { happy_var_1 -> - ( checkEnabled KindSignatures >> return happy_var_1)} - ) (\r -> happyReturn (happyIn119 r)) - -happyReduce_269 = happySpecReduce_1 109# happyReduction_269 -happyReduction_269 happy_x_1 - = case happyOut121 happy_x_1 of { happy_var_1 -> - happyIn120 - (happy_var_1 - )} - -happyReduce_270 = happySpecReduce_3 109# happyReduction_270 -happyReduction_270 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut121 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 RightArrow) -> - case happyOut120 happy_x_3 of { happy_var_3 -> - happyIn120 - (KindFn (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3 - )}}} - -happyReduce_271 = happySpecReduce_1 110# happyReduction_271 -happyReduction_271 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 Star) -> - happyIn121 - (KindStar (nIS happy_var_1) - )} - -happyReduce_272 = happySpecReduce_1 110# happyReduction_272 -happyReduction_272 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 Exclamation) -> - happyIn121 - (KindBang (nIS happy_var_1) - )} - -happyReduce_273 = happySpecReduce_3 110# happyReduction_273 -happyReduction_273 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut120 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn121 - (KindParen (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) happy_var_2 - )}}} - -happyReduce_274 = happySpecReduce_0 111# happyReduction_274 -happyReduction_274 = happyIn122 - ((Nothing,[]) - ) - -happyReduce_275 = happySpecReduce_2 111# happyReduction_275 -happyReduction_275 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 DoubleColon) -> - case happyOut119 happy_x_2 of { happy_var_2 -> - happyIn122 - ((Just happy_var_2,[happy_var_1]) - )}} - -happyReduce_276 = happyMonadReduce 4# 112# happyReduction_276 -happyReduction_276 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Where) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftCurly) -> - case happyOut124 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 RightCurly) -> - ( checkClassBody (fst happy_var_3) >>= \vs -> return (Just vs, happy_var_1:happy_var_2: snd happy_var_3 ++ [happy_var_4], Just (happy_var_1 <^^> happy_var_4)))}}}} - ) (\r -> happyReturn (happyIn123 r)) - -happyReduce_277 = happyMonadReduce 4# 112# happyReduction_277 -happyReduction_277 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Where) -> - case happyOut222 happy_x_2 of { happy_var_2 -> - case happyOut124 happy_x_3 of { happy_var_3 -> - case happyOut223 happy_x_4 of { happy_var_4 -> - ( checkClassBody (fst happy_var_3) >>= \vs -> return (Just vs, happy_var_1:happy_var_2: snd happy_var_3 ++ [happy_var_4], Just (happy_var_1 <^^> happy_var_4)))}}}} - ) (\r -> happyReturn (happyIn123 r)) - -happyReduce_278 = happySpecReduce_0 112# happyReduction_278 -happyReduction_278 = happyIn123 - ((Nothing,[],Nothing) - ) - -happyReduce_279 = happyMonadReduce 3# 113# happyReduction_279 -happyReduction_279 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut25 happy_x_1 of { happy_var_1 -> - case happyOut125 happy_x_2 of { happy_var_2 -> - case happyOut25 happy_x_3 of { happy_var_3 -> - ( checkRevClsDecls (fst happy_var_2) >>= \cs -> return (cs, reverse happy_var_1 ++ snd happy_var_2 ++ reverse happy_var_3))}}} - ) (\r -> happyReturn (happyIn124 r)) - -happyReduce_280 = happySpecReduce_1 113# happyReduction_280 -happyReduction_280 happy_x_1 - = case happyOut25 happy_x_1 of { happy_var_1 -> - happyIn124 - (([],reverse happy_var_1) - )} - -happyReduce_281 = happySpecReduce_3 114# happyReduction_281 -happyReduction_281 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut125 happy_x_1 of { happy_var_1 -> - case happyOut24 happy_x_2 of { happy_var_2 -> - case happyOut126 happy_x_3 of { happy_var_3 -> - happyIn125 - ((happy_var_3 : fst happy_var_1, snd happy_var_1 ++ reverse happy_var_2) - )}}} - -happyReduce_282 = happySpecReduce_1 114# happyReduction_282 -happyReduction_282 happy_x_1 - = case happyOut126 happy_x_1 of { happy_var_1 -> - happyIn125 - (([happy_var_1],[]) - )} - -happyReduce_283 = happySpecReduce_1 115# happyReduction_283 -happyReduction_283 happy_x_1 - = case happyOut55 happy_x_1 of { happy_var_1 -> - happyIn126 - (ClsDecl (ann happy_var_1) happy_var_1 - )} - -happyReduce_284 = happyMonadReduce 1# 115# happyReduction_284 -happyReduction_284 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut127 happy_x_1 of { happy_var_1 -> - ( checkEnabled TypeFamilies >> return happy_var_1)} - ) (\r -> happyReturn (happyIn126 r)) - -happyReduce_285 = happyMonadReduce 3# 116# happyReduction_285 -happyReduction_285 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Type) -> - case happyOut80 happy_x_2 of { happy_var_2 -> - case happyOut122 happy_x_3 of { happy_var_3 -> - ( do { dh <- checkSimpleType happy_var_2; - return (ClsTyFam (nIS happy_var_1 <++> ann happy_var_2 <+?> (fmap ann) (fst happy_var_3) <** happy_var_1:snd happy_var_3) dh (fst happy_var_3)) })}}} - ) (\r -> happyReturn (happyIn127 r)) - -happyReduce_286 = happyReduce 4# 116# happyReduction_286 -happyReduction_286 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Type) -> - case happyOut77 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 Equals) -> - case happyOut88 happy_x_4 of { happy_var_4 -> - happyIn127 - (ClsTyDef (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_3]) happy_var_2 happy_var_4 - ) `HappyStk` happyRest}}}} - -happyReduce_287 = happyMonadReduce 3# 116# happyReduction_287 -happyReduction_287 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Data) -> - case happyOut89 happy_x_2 of { happy_var_2 -> - case happyOut122 happy_x_3 of { happy_var_3 -> - ( do { (cs,dh) <- checkDataHeader happy_var_2; - return (ClsDataFam (nIS happy_var_1 <++> ann happy_var_2 <+?> (fmap ann) (fst happy_var_3) <** happy_var_1:snd happy_var_3) cs dh (fst happy_var_3)) })}}} - ) (\r -> happyReturn (happyIn127 r)) - -happyReduce_288 = happyMonadReduce 4# 117# happyReduction_288 -happyReduction_288 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Where) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftCurly) -> - case happyOut129 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 RightCurly) -> - ( checkInstBody (fst happy_var_3) >>= \vs -> return (Just vs, happy_var_1:happy_var_2: snd happy_var_3 ++ [happy_var_4], Just (happy_var_1 <^^> happy_var_4)))}}}} - ) (\r -> happyReturn (happyIn128 r)) - -happyReduce_289 = happyMonadReduce 4# 117# happyReduction_289 -happyReduction_289 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Where) -> - case happyOut222 happy_x_2 of { happy_var_2 -> - case happyOut129 happy_x_3 of { happy_var_3 -> - case happyOut223 happy_x_4 of { happy_var_4 -> - ( checkInstBody (fst happy_var_3) >>= \vs -> return (Just vs, happy_var_1:happy_var_2: snd happy_var_3 ++ [happy_var_4], Just (happy_var_1 <^^> happy_var_4)))}}}} - ) (\r -> happyReturn (happyIn128 r)) - -happyReduce_290 = happySpecReduce_0 117# happyReduction_290 -happyReduction_290 = happyIn128 - ((Nothing, [], Nothing) - ) - -happyReduce_291 = happyMonadReduce 3# 118# happyReduction_291 -happyReduction_291 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut25 happy_x_1 of { happy_var_1 -> - case happyOut130 happy_x_2 of { happy_var_2 -> - case happyOut25 happy_x_3 of { happy_var_3 -> - ( checkRevInstDecls (fst happy_var_2) >>= \is -> return (is, reverse happy_var_1 ++ snd happy_var_2 ++ reverse happy_var_3))}}} - ) (\r -> happyReturn (happyIn129 r)) - -happyReduce_292 = happySpecReduce_1 118# happyReduction_292 -happyReduction_292 happy_x_1 - = case happyOut25 happy_x_1 of { happy_var_1 -> - happyIn129 - (([],reverse happy_var_1) - )} - -happyReduce_293 = happySpecReduce_3 119# happyReduction_293 -happyReduction_293 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut130 happy_x_1 of { happy_var_1 -> - case happyOut24 happy_x_2 of { happy_var_2 -> - case happyOut131 happy_x_3 of { happy_var_3 -> - happyIn130 - ((happy_var_3 : fst happy_var_1, snd happy_var_1 ++ reverse happy_var_2) - )}}} - -happyReduce_294 = happySpecReduce_1 119# happyReduction_294 -happyReduction_294 happy_x_1 - = case happyOut131 happy_x_1 of { happy_var_1 -> - happyIn130 - (([happy_var_1],[]) - )} - -happyReduce_295 = happySpecReduce_1 120# happyReduction_295 -happyReduction_295 happy_x_1 - = case happyOut133 happy_x_1 of { happy_var_1 -> - happyIn131 - (InsDecl (ann happy_var_1) happy_var_1 - )} - -happyReduce_296 = happyMonadReduce 1# 120# happyReduction_296 -happyReduction_296 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut132 happy_x_1 of { happy_var_1 -> - ( checkEnabled TypeFamilies >> return happy_var_1)} - ) (\r -> happyReturn (happyIn131 r)) - -happyReduce_297 = happySpecReduce_1 120# happyReduction_297 -happyReduction_297 happy_x_1 - = case happyOut58 happy_x_1 of { happy_var_1 -> - happyIn131 - (InsDecl (ann happy_var_1) happy_var_1 - )} - -happyReduce_298 = happyMonadReduce 4# 121# happyReduction_298 -happyReduction_298 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Type) -> - case happyOut77 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 Equals) -> - case happyOut88 happy_x_4 of { happy_var_4 -> - ( do { -- no checkSimpleType happy_var_4 since dtype may contain type patterns - return (InsType (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_3]) happy_var_2 happy_var_4) })}}}} - ) (\r -> happyReturn (happyIn132 r)) - -happyReduce_299 = happyMonadReduce 4# 121# happyReduction_299 -happyReduction_299 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut51 happy_x_1 of { happy_var_1 -> - case happyOut88 happy_x_2 of { happy_var_2 -> - case happyOut104 happy_x_3 of { happy_var_3 -> - case happyOut116 happy_x_4 of { happy_var_4 -> - ( do { -- (cs,c,t) <- checkDataHeader happy_var_4; - let {(ds,ss,minf) = happy_var_3}; - checkDataOrNew happy_var_1 ds; - return (InsData (happy_var_1 <> happy_var_2 <+?> minf <+?> fmap ann happy_var_4 <** ss ) happy_var_1 happy_var_2 (reverse ds) happy_var_4) })}}}} - ) (\r -> happyReturn (happyIn132 r)) - -happyReduce_300 = happyMonadReduce 5# 121# happyReduction_300 -happyReduction_300 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut51 happy_x_1 of { happy_var_1 -> - case happyOut88 happy_x_2 of { happy_var_2 -> - case happyOut122 happy_x_3 of { happy_var_3 -> - case happyOut100 happy_x_4 of { happy_var_4 -> - case happyOut116 happy_x_5 of { happy_var_5 -> - ( do { -- (cs,c,t) <- checkDataHeader happy_var_4; - let { (gs,ss,minf) = happy_var_4 } ; - checkDataOrNew happy_var_1 gs; - return $ InsGData (ann happy_var_1 <+?> minf <+?> fmap ann happy_var_5 <** (snd happy_var_3 ++ ss)) happy_var_1 happy_var_2 (fst happy_var_3) (reverse gs) happy_var_5 })}}}}} - ) (\r -> happyReturn (happyIn132 r)) - -happyReduce_301 = happyMonadReduce 4# 122# happyReduction_301 -happyReduction_301 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut143 happy_x_1 of { happy_var_1 -> - case happyOut135 happy_x_2 of { happy_var_2 -> - case happyOut136 happy_x_3 of { happy_var_3 -> - case happyOut134 happy_x_4 of { happy_var_4 -> - ( checkValDef ((happy_var_1 <> happy_var_3 <+?> (fmap ann) (fst happy_var_4)) <** (snd happy_var_2 ++ snd happy_var_4)) happy_var_1 (fst happy_var_2) happy_var_3 (fst happy_var_4))}}}} - ) (\r -> happyReturn (happyIn133 r)) - -happyReduce_302 = happyMonadReduce 4# 122# happyReduction_302 -happyReduction_302 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 Exclamation) -> - case happyOut150 happy_x_2 of { happy_var_2 -> - case happyOut136 happy_x_3 of { happy_var_3 -> - case happyOut134 happy_x_4 of { happy_var_4 -> - ( do { checkEnabled BangPatterns ; - let { l = nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1] }; - p <- checkPattern (BangPat l happy_var_2); - return $ PatBind (p <> happy_var_3 <+?> (fmap ann) (fst happy_var_4) <** snd happy_var_4) - p Nothing happy_var_3 (fst happy_var_4) })}}}} - ) (\r -> happyReturn (happyIn133 r)) - -happyReduce_303 = happySpecReduce_2 123# happyReduction_303 -happyReduction_303 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Where) -> - case happyOut61 happy_x_2 of { happy_var_2 -> - happyIn134 - ((Just happy_var_2, [happy_var_1]) - )}} - -happyReduce_304 = happySpecReduce_0 123# happyReduction_304 -happyReduction_304 = happyIn134 - ((Nothing, []) - ) - -happyReduce_305 = happyMonadReduce 2# 124# happyReduction_305 -happyReduction_305 (happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 DoubleColon) -> - case happyOut88 happy_x_2 of { happy_var_2 -> - ( checkEnabled ScopedTypeVariables >> return (Just happy_var_2, [happy_var_1]))}} - ) (\r -> happyReturn (happyIn135 r)) - -happyReduce_306 = happySpecReduce_0 124# happyReduction_306 -happyReduction_306 = happyIn135 - ((Nothing,[]) - ) - -happyReduce_307 = happySpecReduce_2 125# happyReduction_307 -happyReduction_307 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 Equals) -> - case happyOut139 happy_x_2 of { happy_var_2 -> - happyIn136 - (UnGuardedRhs (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2 - )}} - -happyReduce_308 = happySpecReduce_1 125# happyReduction_308 -happyReduction_308 happy_x_1 - = case happyOut137 happy_x_1 of { happy_var_1 -> - happyIn136 - (GuardedRhss (snd happy_var_1) (reverse $ fst happy_var_1) - )} - -happyReduce_309 = happySpecReduce_2 126# happyReduction_309 -happyReduction_309 happy_x_2 - happy_x_1 - = case happyOut137 happy_x_1 of { happy_var_1 -> - case happyOut138 happy_x_2 of { happy_var_2 -> - happyIn137 - ((happy_var_2 : fst happy_var_1, snd happy_var_1 <++> ann happy_var_2) - )}} - -happyReduce_310 = happySpecReduce_1 126# happyReduction_310 -happyReduction_310 happy_x_1 - = case happyOut138 happy_x_1 of { happy_var_1 -> - happyIn137 - (([happy_var_1],ann happy_var_1) - )} - -happyReduce_311 = happyMonadReduce 4# 127# happyReduction_311 -happyReduction_311 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 Bar) -> - case happyOut173 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 Equals) -> - case happyOut139 happy_x_4 of { happy_var_4 -> - ( do { checkPatternGuards (fst happy_var_2); - return $ GuardedRhs (nIS happy_var_1 <++> ann happy_var_4 <** (happy_var_1:snd happy_var_2 ++ [happy_var_3])) (reverse (fst happy_var_2)) happy_var_4 })}}}} - ) (\r -> happyReturn (happyIn138 r)) - -happyReduce_312 = happyMonadReduce 1# 128# happyReduction_312 -happyReduction_312 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut140 happy_x_1 of { happy_var_1 -> - ( checkExpr happy_var_1)} - ) (\r -> happyReturn (happyIn139 r)) - -happyReduce_313 = happySpecReduce_3 129# happyReduction_313 -happyReduction_313 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut143 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 DoubleColon) -> - case happyOut88 happy_x_3 of { happy_var_3 -> - happyIn140 - (ExpTypeSig (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3 - )}}} - -happyReduce_314 = happySpecReduce_1 129# happyReduction_314 -happyReduction_314 happy_x_1 - = case happyOut141 happy_x_1 of { happy_var_1 -> - happyIn140 - (happy_var_1 - )} - -happyReduce_315 = happySpecReduce_2 129# happyReduction_315 -happyReduction_315 happy_x_2 - happy_x_1 - = case happyOut143 happy_x_1 of { happy_var_1 -> - case happyOut205 happy_x_2 of { happy_var_2 -> - happyIn140 - (PostOp (happy_var_1 <> happy_var_2) happy_var_1 happy_var_2 - )}} - -happyReduce_316 = happySpecReduce_3 129# happyReduction_316 -happyReduction_316 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut143 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftArrowTail) -> - case happyOut140 happy_x_3 of { happy_var_3 -> - happyIn140 - (LeftArrApp (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3 - )}}} - -happyReduce_317 = happySpecReduce_3 129# happyReduction_317 -happyReduction_317 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut143 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 RightArrowTail) -> - case happyOut140 happy_x_3 of { happy_var_3 -> - happyIn140 - (RightArrApp (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3 - )}}} - -happyReduce_318 = happySpecReduce_3 129# happyReduction_318 -happyReduction_318 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut143 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftDblArrowTail) -> - case happyOut140 happy_x_3 of { happy_var_3 -> - happyIn140 - (LeftArrHighApp (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3 - )}}} - -happyReduce_319 = happySpecReduce_3 129# happyReduction_319 -happyReduction_319 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut143 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 RightDblArrowTail) -> - case happyOut140 happy_x_3 of { happy_var_3 -> - happyIn140 - (RightArrHighApp (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3 - )}}} - -happyReduce_320 = happySpecReduce_1 130# happyReduction_320 -happyReduction_320 happy_x_1 - = case happyOut142 happy_x_1 of { happy_var_1 -> - happyIn141 - (happy_var_1 - )} - -happyReduce_321 = happySpecReduce_1 130# happyReduction_321 -happyReduction_321 happy_x_1 - = case happyOut143 happy_x_1 of { happy_var_1 -> - happyIn141 - (happy_var_1 - )} - -happyReduce_322 = happySpecReduce_3 131# happyReduction_322 -happyReduction_322 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut143 happy_x_1 of { happy_var_1 -> - case happyOut205 happy_x_2 of { happy_var_2 -> - case happyOut144 happy_x_3 of { happy_var_3 -> - happyIn142 - (InfixApp (happy_var_1 <> happy_var_3) happy_var_1 happy_var_2 happy_var_3 - )}}} - -happyReduce_323 = happySpecReduce_1 131# happyReduction_323 -happyReduction_323 happy_x_1 - = case happyOut144 happy_x_1 of { happy_var_1 -> - happyIn142 - (happy_var_1 - )} - -happyReduce_324 = happySpecReduce_3 132# happyReduction_324 -happyReduction_324 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut143 happy_x_1 of { happy_var_1 -> - case happyOut205 happy_x_2 of { happy_var_2 -> - case happyOut145 happy_x_3 of { happy_var_3 -> - happyIn143 - (InfixApp (happy_var_1 <> happy_var_3) happy_var_1 happy_var_2 happy_var_3 - )}}} - -happyReduce_325 = happySpecReduce_1 132# happyReduction_325 -happyReduction_325 happy_x_1 - = case happyOut145 happy_x_1 of { happy_var_1 -> - happyIn143 - (happy_var_1 - )} - -happyReduce_326 = happyReduce 4# 133# happyReduction_326 -happyReduction_326 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 Backslash) -> - case happyOut148 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightArrow) -> - case happyOut140 happy_x_4 of { happy_var_4 -> - happyIn144 - (Lambda (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_3]) (reverse happy_var_2) happy_var_4 - ) `HappyStk` happyRest}}}} - -happyReduce_327 = happyReduce 4# 133# happyReduction_327 -happyReduction_327 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Let) -> - case happyOut61 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 KW_In) -> - case happyOut140 happy_x_4 of { happy_var_4 -> - happyIn144 - (Let (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_3]) happy_var_2 happy_var_4 - ) `HappyStk` happyRest}}}} - -happyReduce_328 = happyReduce 6# 133# happyReduction_328 -happyReduction_328 (happy_x_6 `HappyStk` - happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_If) -> - case happyOut140 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 KW_Then) -> - case happyOut140 happy_x_4 of { happy_var_4 -> - case happyOutTok happy_x_5 of { (Loc happy_var_5 KW_Else) -> - case happyOut140 happy_x_6 of { happy_var_6 -> - happyIn144 - (If (nIS happy_var_1 <++> ann happy_var_6 <** [happy_var_1,happy_var_3,happy_var_5]) happy_var_2 happy_var_4 happy_var_6 - ) `HappyStk` happyRest}}}}}} - -happyReduce_329 = happyReduce 4# 133# happyReduction_329 -happyReduction_329 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Proc) -> - case happyOut149 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightArrow) -> - case happyOut140 happy_x_4 of { happy_var_4 -> - happyIn144 - (Proc (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_3]) happy_var_2 happy_var_4 - ) `HappyStk` happyRest}}}} - -happyReduce_330 = happySpecReduce_1 133# happyReduction_330 -happyReduction_330 happy_x_1 - = case happyOut146 happy_x_1 of { happy_var_1 -> - happyIn144 - (happy_var_1 - )} - -happyReduce_331 = happyReduce 4# 134# happyReduction_331 -happyReduction_331 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Case) -> - case happyOut140 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 KW_Of) -> - case happyOut175 happy_x_4 of { happy_var_4 -> - happyIn145 - (let (als, inf, ss) = happy_var_4 in Case (nIS happy_var_1 <++> inf <** (happy_var_1:happy_var_3:ss)) happy_var_2 als - ) `HappyStk` happyRest}}}} - -happyReduce_332 = happySpecReduce_2 134# happyReduction_332 -happyReduction_332 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 Minus) -> - case happyOut147 happy_x_2 of { happy_var_2 -> - happyIn145 - (NegApp (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2 - )}} - -happyReduce_333 = happySpecReduce_2 134# happyReduction_333 -happyReduction_333 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Do) -> - case happyOut183 happy_x_2 of { happy_var_2 -> - happyIn145 - (let (sts, inf, ss) = happy_var_2 in Do (nIS happy_var_1 <++> inf <** happy_var_1:ss) sts - )}} - -happyReduce_334 = happySpecReduce_2 134# happyReduction_334 -happyReduction_334 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_MDo) -> - case happyOut183 happy_x_2 of { happy_var_2 -> - happyIn145 - (let (sts, inf, ss) = happy_var_2 in MDo (nIS happy_var_1 <++> inf <** happy_var_1:ss) sts - )}} - -happyReduce_335 = happySpecReduce_1 134# happyReduction_335 -happyReduction_335 happy_x_1 - = case happyOut147 happy_x_1 of { happy_var_1 -> - happyIn145 - (happy_var_1 - )} - -happyReduce_336 = happyReduce 4# 135# happyReduction_336 -happyReduction_336 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 CORE) -> - case happyOutTok happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> - case happyOut140 happy_x_4 of { happy_var_4 -> - happyIn146 - (let Loc l (StringTok (s,_)) = happy_var_2 in CorePragma (nIS happy_var_1 <++> ann happy_var_4 <** [l,happy_var_3]) s happy_var_4 - ) `HappyStk` happyRest}}}} - -happyReduce_337 = happyReduce 4# 135# happyReduction_337 -happyReduction_337 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 SCC) -> - case happyOutTok happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> - case happyOut140 happy_x_4 of { happy_var_4 -> - happyIn146 - (let Loc l (StringTok (s,_)) = happy_var_2 in SCCPragma (nIS happy_var_1 <++> ann happy_var_4 <** [l,happy_var_3]) s happy_var_4 - ) `HappyStk` happyRest}}}} - -happyReduce_338 = happyReduce 11# 135# happyReduction_338 -happyReduction_338 (happy_x_11 `HappyStk` - happy_x_10 `HappyStk` - happy_x_9 `HappyStk` - happy_x_8 `HappyStk` - happy_x_7 `HappyStk` - happy_x_6 `HappyStk` - happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 GENERATED) -> - case happyOutTok happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 Colon) -> - case happyOutTok happy_x_5 of { happy_var_5 -> - case happyOutTok happy_x_6 of { (Loc happy_var_6 Minus) -> - case happyOutTok happy_x_7 of { happy_var_7 -> - case happyOutTok happy_x_8 of { (Loc happy_var_8 Colon) -> - case happyOutTok happy_x_9 of { happy_var_9 -> - case happyOutTok happy_x_10 of { (Loc happy_var_10 PragmaEnd) -> - case happyOut140 happy_x_11 of { happy_var_11 -> - happyIn146 - (let { Loc l0 (StringTok (s,_)) = happy_var_2; - Loc l1 (IntTok (i1,_)) = happy_var_3; - Loc l2 (IntTok (i2,_)) = happy_var_5; - Loc l3 (IntTok (i3,_)) = happy_var_7; - Loc l4 (IntTok (i4,_)) = happy_var_9} - in GenPragma (nIS happy_var_1 <++> ann happy_var_11 <** [happy_var_1,l0,l1,happy_var_4,l2,happy_var_6,l3,happy_var_8,l4,happy_var_10]) - s (fromInteger i1, fromInteger i2) - (fromInteger i3, fromInteger i4) happy_var_11 - ) `HappyStk` happyRest}}}}}}}}}}} - -happyReduce_339 = happySpecReduce_2 136# happyReduction_339 -happyReduction_339 happy_x_2 - happy_x_1 - = case happyOut147 happy_x_1 of { happy_var_1 -> - case happyOut150 happy_x_2 of { happy_var_2 -> - happyIn147 - (App (happy_var_1 <> happy_var_2) happy_var_1 happy_var_2 - )}} - -happyReduce_340 = happySpecReduce_1 136# happyReduction_340 -happyReduction_340 happy_x_1 - = case happyOut150 happy_x_1 of { happy_var_1 -> - happyIn147 - (happy_var_1 - )} - -happyReduce_341 = happySpecReduce_2 137# happyReduction_341 -happyReduction_341 happy_x_2 - happy_x_1 - = case happyOut148 happy_x_1 of { happy_var_1 -> - case happyOut149 happy_x_2 of { happy_var_2 -> - happyIn148 - (happy_var_2 : happy_var_1 - )}} - -happyReduce_342 = happySpecReduce_1 137# happyReduction_342 -happyReduction_342 happy_x_1 - = case happyOut149 happy_x_1 of { happy_var_1 -> - happyIn148 - ([happy_var_1] - )} - -happyReduce_343 = happyMonadReduce 1# 138# happyReduction_343 -happyReduction_343 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut150 happy_x_1 of { happy_var_1 -> - ( checkPattern happy_var_1)} - ) (\r -> happyReturn (happyIn149 r)) - -happyReduce_344 = happyMonadReduce 2# 138# happyReduction_344 -happyReduction_344 (happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 Exclamation) -> - case happyOut150 happy_x_2 of { happy_var_2 -> - ( checkPattern (BangPat (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2))}} - ) (\r -> happyReturn (happyIn149 r)) - -happyReduce_345 = happyMonadReduce 3# 139# happyReduction_345 -happyReduction_345 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut195 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 At) -> - case happyOut150 happy_x_3 of { happy_var_3 -> - ( do { n <- checkUnQual happy_var_1; - return (AsPat (happy_var_1 <> happy_var_3 <** [happy_var_2]) n happy_var_3) })}}} - ) (\r -> happyReturn (happyIn150 r)) - -happyReduce_346 = happyMonadReduce 3# 139# happyReduction_346 -happyReduction_346 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut195 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 RPCAt) -> - case happyOut150 happy_x_3 of { happy_var_3 -> - ( do { n <- checkUnQual happy_var_1; - return (CAsRP (happy_var_1 <> happy_var_3 <** [happy_var_2]) n happy_var_3) })}}} - ) (\r -> happyReturn (happyIn150 r)) - -happyReduce_347 = happySpecReduce_2 139# happyReduction_347 -happyReduction_347 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 Tilde) -> - case happyOut150 happy_x_2 of { happy_var_2 -> - happyIn150 - (IrrPat (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2 - )}} - -happyReduce_348 = happySpecReduce_1 139# happyReduction_348 -happyReduction_348 happy_x_1 - = case happyOut151 happy_x_1 of { happy_var_1 -> - happyIn150 - (happy_var_1 - )} - -happyReduce_349 = happyMonadReduce 3# 140# happyReduction_349 -happyReduction_349 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut151 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftCurly) -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightCurly) -> - ( liftM (amap (const (ann happy_var_1 <++> nIS happy_var_3 <** [happy_var_2,happy_var_3]))) $ mkRecConstrOrUpdate happy_var_1 [])}}} - ) (\r -> happyReturn (happyIn151 r)) - -happyReduce_350 = happyMonadReduce 4# 140# happyReduction_350 -happyReduction_350 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut151 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftCurly) -> - case happyOut187 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 RightCurly) -> - ( liftM (amap (const (ann happy_var_1 <++> nIS happy_var_4 <** (happy_var_2:reverse (snd happy_var_3) ++ [happy_var_4])))) - $ mkRecConstrOrUpdate happy_var_1 (reverse (fst happy_var_3)))}}}} - ) (\r -> happyReturn (happyIn151 r)) - -happyReduce_351 = happyReduce 4# 140# happyReduction_351 -happyReduction_351 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut195 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftCurlyBar) -> - case happyOut79 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 RightCurlyBar) -> - happyIn151 - (ExplTypeArg (ann happy_var_1 <++> nIS happy_var_4 <** [happy_var_2,happy_var_4]) happy_var_1 happy_var_3 - ) `HappyStk` happyRest}}}} - -happyReduce_352 = happySpecReduce_1 140# happyReduction_352 -happyReduction_352 happy_x_1 - = case happyOut152 happy_x_1 of { happy_var_1 -> - happyIn151 - (happy_var_1 - )} - -happyReduce_353 = happySpecReduce_1 141# happyReduction_353 -happyReduction_353 happy_x_1 - = case happyOut196 happy_x_1 of { happy_var_1 -> - happyIn152 - (IPVar (ann happy_var_1) happy_var_1 - )} - -happyReduce_354 = happySpecReduce_1 141# happyReduction_354 -happyReduction_354 happy_x_1 - = case happyOut195 happy_x_1 of { happy_var_1 -> - happyIn152 - (Var (ann happy_var_1) happy_var_1 - )} - -happyReduce_355 = happySpecReduce_1 141# happyReduction_355 -happyReduction_355 happy_x_1 - = case happyOut192 happy_x_1 of { happy_var_1 -> - happyIn152 - (happy_var_1 - )} - -happyReduce_356 = happySpecReduce_1 141# happyReduction_356 -happyReduction_356 happy_x_1 - = case happyOut221 happy_x_1 of { happy_var_1 -> - happyIn152 - (Lit (ann happy_var_1) happy_var_1 - )} - -happyReduce_357 = happySpecReduce_3 141# happyReduction_357 -happyReduction_357 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut154 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn152 - (Paren (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) happy_var_2 - )}}} - -happyReduce_358 = happySpecReduce_3 141# happyReduction_358 -happyReduction_358 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut154 happy_x_2 of { happy_var_2 -> - case happyOut155 happy_x_3 of { happy_var_3 -> - happyIn152 - (TupleSection (happy_var_1 <^^> head (snd happy_var_3) <** happy_var_1:reverse (snd happy_var_3)) (Just happy_var_2 : fst happy_var_3) - )}}} - -happyReduce_359 = happyReduce 4# 141# happyReduction_359 -happyReduction_359 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut153 happy_x_2 of { happy_var_2 -> - case happyOut154 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> - happyIn152 - (TupleSection (happy_var_1 <^^> happy_var_4 <** happy_var_1:reverse (happy_var_4:happy_var_2)) - (replicate (length happy_var_2 - 1) Nothing ++ [Just happy_var_3]) - ) `HappyStk` happyRest}}}} - -happyReduce_360 = happyReduce 4# 141# happyReduction_360 -happyReduction_360 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut153 happy_x_2 of { happy_var_2 -> - case happyOut154 happy_x_3 of { happy_var_3 -> - case happyOut155 happy_x_4 of { happy_var_4 -> - happyIn152 - (TupleSection (happy_var_1 <^^> head (snd happy_var_4) <** happy_var_1:reverse (snd happy_var_4 ++ happy_var_2)) - (replicate (length happy_var_2 - 1) Nothing ++ Just happy_var_3 : fst happy_var_4) - ) `HappyStk` happyRest}}}} - -happyReduce_361 = happySpecReduce_3 141# happyReduction_361 -happyReduction_361 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftSquare) -> - case happyOut167 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightSquare) -> - happyIn152 - (amap (\l -> l <** [happy_var_3]) $ happy_var_2 (happy_var_1 <^^> happy_var_3 <** [happy_var_1]) - )}}} - -happyReduce_362 = happySpecReduce_1 141# happyReduction_362 -happyReduction_362 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 Underscore) -> - happyIn152 - (WildCard (nIS happy_var_1) - )} - -happyReduce_363 = happyMonadReduce 3# 141# happyReduction_363 -happyReduction_363 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut157 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - ( checkEnabled RegularPatterns >> return (Paren (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) happy_var_2))}}} - ) (\r -> happyReturn (happyIn152 r)) - -happyReduce_364 = happySpecReduce_3 141# happyReduction_364 -happyReduction_364 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 RPGuardOpen) -> - case happyOut156 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RPGuardClose) -> - happyIn152 - (SeqRP (happy_var_1 <^^> happy_var_3 <** (happy_var_1:reverse (snd happy_var_2) ++ [happy_var_3])) $ reverse (fst happy_var_2) - )}}} - -happyReduce_365 = happyReduce 5# 141# happyReduction_365 -happyReduction_365 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 RPGuardOpen) -> - case happyOut140 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 Bar) -> - case happyOut173 happy_x_4 of { happy_var_4 -> - case happyOutTok happy_x_5 of { (Loc happy_var_5 RPGuardClose) -> - happyIn152 - (GuardRP (happy_var_1 <^^> happy_var_5 <** (happy_var_1:happy_var_3 : snd happy_var_4 ++ [happy_var_5])) happy_var_2 $ (reverse $ fst happy_var_4) - ) `HappyStk` happyRest}}}}} - -happyReduce_366 = happySpecReduce_1 141# happyReduction_366 -happyReduction_366 happy_x_1 - = case happyOut158 happy_x_1 of { happy_var_1 -> - happyIn152 - (happy_var_1 - )} - -happyReduce_367 = happySpecReduce_1 141# happyReduction_367 -happyReduction_367 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn152 - (let Loc l (THIdEscape s) = happy_var_1 in SpliceExp (nIS l) $ IdSplice (nIS l) s - )} - -happyReduce_368 = happySpecReduce_3 141# happyReduction_368 -happyReduction_368 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 THParenEscape) -> - case happyOut139 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn152 - (SpliceExp (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) $ ParenSplice (ann happy_var_2) happy_var_2 - )}}} - -happyReduce_369 = happySpecReduce_3 141# happyReduction_369 -happyReduction_369 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 THExpQuote) -> - case happyOut139 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 THCloseQuote) -> - happyIn152 - (BracketExp (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) $ ExpBracket (ann happy_var_2) happy_var_2 - )}}} - -happyReduce_370 = happyMonadReduce 3# 141# happyReduction_370 -happyReduction_370 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 THPatQuote) -> - case happyOut141 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 THCloseQuote) -> - ( do { p <- checkPattern happy_var_2; - return $ BracketExp (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) $ PatBracket (ann p) p })}}} - ) (\r -> happyReturn (happyIn152 r)) - -happyReduce_371 = happySpecReduce_3 141# happyReduction_371 -happyReduction_371 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 THTypQuote) -> - case happyOut88 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 THCloseQuote) -> - happyIn152 - (let l = happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3] in BracketExp l $ TypeBracket l happy_var_2 - )}}} - -happyReduce_372 = happyReduce 5# 141# happyReduction_372 -happyReduction_372 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 THDecQuote) -> - case happyOut48 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_5 of { (Loc happy_var_5 THCloseQuote) -> - happyIn152 - (let l = happy_var_1 <^^> happy_var_5 <** (happy_var_1:snd happy_var_3 ++ [happy_var_5]) in BracketExp l $ DeclBracket l (fst happy_var_3) - ) `HappyStk` happyRest}}} - -happyReduce_373 = happySpecReduce_2 141# happyReduction_373 -happyReduction_373 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 THVarQuote) -> - case happyOut195 happy_x_2 of { happy_var_2 -> - happyIn152 - (VarQuote (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2 - )}} - -happyReduce_374 = happySpecReduce_2 141# happyReduction_374 -happyReduction_374 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 THVarQuote) -> - case happyOut198 happy_x_2 of { happy_var_2 -> - happyIn152 - (VarQuote (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2 - )}} - -happyReduce_375 = happySpecReduce_2 141# happyReduction_375 -happyReduction_375 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 THTyQuote) -> - case happyOut227 happy_x_2 of { happy_var_2 -> - happyIn152 - (TypQuote (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) (UnQual (ann happy_var_2) happy_var_2) - )}} - -happyReduce_376 = happySpecReduce_2 141# happyReduction_376 -happyReduction_376 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 THTyQuote) -> - case happyOut85 happy_x_2 of { happy_var_2 -> - happyIn152 - (TypQuote (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2 - )}} - -happyReduce_377 = happySpecReduce_1 141# happyReduction_377 -happyReduction_377 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn152 - (let Loc l (THQuasiQuote (n,q)) = happy_var_1 in QuasiQuote (nIS l) n q - )} - -happyReduce_378 = happySpecReduce_2 142# happyReduction_378 -happyReduction_378 happy_x_2 - happy_x_1 - = case happyOut153 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - happyIn153 - (happy_var_2 : happy_var_1 - )}} - -happyReduce_379 = happySpecReduce_1 142# happyReduction_379 -happyReduction_379 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 Comma) -> - happyIn153 - ([happy_var_1] - )} - -happyReduce_380 = happySpecReduce_1 143# happyReduction_380 -happyReduction_380 happy_x_1 - = case happyOut140 happy_x_1 of { happy_var_1 -> - happyIn154 - (happy_var_1 - )} - -happyReduce_381 = happySpecReduce_2 143# happyReduction_381 -happyReduction_381 happy_x_2 - happy_x_1 - = case happyOut206 happy_x_1 of { happy_var_1 -> - case happyOut141 happy_x_2 of { happy_var_2 -> - happyIn154 - (PreOp (happy_var_1 <> happy_var_2) happy_var_1 happy_var_2 - )}} - -happyReduce_382 = happyMonadReduce 3# 143# happyReduction_382 -happyReduction_382 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut140 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 RightArrow) -> - case happyOut140 happy_x_3 of { happy_var_3 -> - ( do {checkEnabled ViewPatterns; - return $ ViewPat (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3})}}} - ) (\r -> happyReturn (happyIn154 r)) - -happyReduce_383 = happySpecReduce_3 144# happyReduction_383 -happyReduction_383 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut153 happy_x_1 of { happy_var_1 -> - case happyOut154 happy_x_2 of { happy_var_2 -> - case happyOut155 happy_x_3 of { happy_var_3 -> - happyIn155 - (let (mes, ss) = happy_var_3 in (replicate (length happy_var_1 - 1) Nothing ++ Just happy_var_2 : mes, ss ++ happy_var_1) - )}}} - -happyReduce_384 = happySpecReduce_3 144# happyReduction_384 -happyReduction_384 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut153 happy_x_1 of { happy_var_1 -> - case happyOut154 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn155 - ((replicate (length happy_var_1 - 1) Nothing ++ [Just happy_var_2], happy_var_3 : happy_var_1) - )}}} - -happyReduce_385 = happySpecReduce_2 144# happyReduction_385 -happyReduction_385 happy_x_2 - happy_x_1 - = case happyOut153 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 RightParen) -> - happyIn155 - ((replicate (length happy_var_1) Nothing, happy_var_2 : happy_var_1) - )}} - -happyReduce_386 = happySpecReduce_3 145# happyReduction_386 -happyReduction_386 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut156 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut140 happy_x_3 of { happy_var_3 -> - happyIn156 - ((happy_var_3 : fst happy_var_1, happy_var_2 : snd happy_var_1) - )}}} - -happyReduce_387 = happySpecReduce_1 145# happyReduction_387 -happyReduction_387 happy_x_1 - = case happyOut140 happy_x_1 of { happy_var_1 -> - happyIn156 - (([happy_var_1],[]) - )} - -happyReduce_388 = happySpecReduce_3 146# happyReduction_388 -happyReduction_388 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut140 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Bar) -> - case happyOut157 happy_x_3 of { happy_var_3 -> - happyIn157 - (EitherRP (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3 - )}}} - -happyReduce_389 = happySpecReduce_3 146# happyReduction_389 -happyReduction_389 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut140 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Bar) -> - case happyOut140 happy_x_3 of { happy_var_3 -> - happyIn157 - (EitherRP (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3 - )}}} - -happyReduce_390 = happyMonadReduce 9# 147# happyReduction_390 -happyReduction_390 (happy_x_9 `HappyStk` - happy_x_8 `HappyStk` - happy_x_7 `HappyStk` - happy_x_6 `HappyStk` - happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 XStdTagOpen) -> - case happyOut161 happy_x_2 of { happy_var_2 -> - case happyOut164 happy_x_3 of { happy_var_3 -> - case happyOut166 happy_x_4 of { happy_var_4 -> - case happyOutTok happy_x_5 of { (Loc happy_var_5 XStdTagClose) -> - case happyOut159 happy_x_6 of { happy_var_6 -> - case happyOutTok happy_x_7 of { (Loc happy_var_7 XCloseTagOpen) -> - case happyOut161 happy_x_8 of { happy_var_8 -> - case happyOutTok happy_x_9 of { (Loc happy_var_9 XStdTagClose) -> - ( do { n <- checkEqNames happy_var_2 happy_var_8; - let { cn = reverse happy_var_6; - as = reverse happy_var_3; - l = happy_var_1 <^^> happy_var_9 <** [happy_var_1,happy_var_5,happy_var_7,srcInfoSpan (ann happy_var_8),happy_var_9] }; - return $ XTag l n as happy_var_4 cn })}}}}}}}}} - ) (\r -> happyReturn (happyIn158 r)) - -happyReduce_391 = happyReduce 5# 147# happyReduction_391 -happyReduction_391 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 XStdTagOpen) -> - case happyOut161 happy_x_2 of { happy_var_2 -> - case happyOut164 happy_x_3 of { happy_var_3 -> - case happyOut166 happy_x_4 of { happy_var_4 -> - case happyOutTok happy_x_5 of { (Loc happy_var_5 XEmptyTagClose) -> - happyIn158 - (XETag (happy_var_1 <^^> happy_var_5 <** [happy_var_1,happy_var_5]) happy_var_2 (reverse happy_var_3) happy_var_4 - ) `HappyStk` happyRest}}}}} - -happyReduce_392 = happySpecReduce_3 147# happyReduction_392 -happyReduction_392 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 XCodeTagOpen) -> - case happyOut140 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 XCodeTagClose) -> - happyIn158 - (XExpTag (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) happy_var_2 - )}}} - -happyReduce_393 = happySpecReduce_2 148# happyReduction_393 -happyReduction_393 happy_x_2 - happy_x_1 - = case happyOut159 happy_x_1 of { happy_var_1 -> - case happyOut160 happy_x_2 of { happy_var_2 -> - happyIn159 - (happy_var_2 : happy_var_1 - )}} - -happyReduce_394 = happySpecReduce_0 148# happyReduction_394 -happyReduction_394 = happyIn159 - ([] - ) - -happyReduce_395 = happySpecReduce_1 149# happyReduction_395 -happyReduction_395 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn160 - (let Loc l (XPCDATA pcd) = happy_var_1 in XPcdata (nIS l) pcd - )} - -happyReduce_396 = happySpecReduce_3 149# happyReduction_396 -happyReduction_396 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 XRPatOpen) -> - case happyOut156 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 XRPatClose) -> - happyIn160 - (XRPats (happy_var_1 <^^> happy_var_3 <** (snd happy_var_2 ++ [happy_var_1,happy_var_3])) $ reverse (fst happy_var_2) - )}}} - -happyReduce_397 = happySpecReduce_1 149# happyReduction_397 -happyReduction_397 happy_x_1 - = case happyOut158 happy_x_1 of { happy_var_1 -> - happyIn160 - (happy_var_1 - )} - -happyReduce_398 = happySpecReduce_3 150# happyReduction_398 -happyReduction_398 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut162 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Colon) -> - case happyOut162 happy_x_3 of { happy_var_3 -> - happyIn161 - (let {Loc l1 s1 = happy_var_1; Loc l2 s2 = happy_var_3} - in XDomName (nIS l1 <++> nIS l2 <** [l1,happy_var_2,l2]) s1 s2 - )}}} - -happyReduce_399 = happySpecReduce_1 150# happyReduction_399 -happyReduction_399 happy_x_1 - = case happyOut162 happy_x_1 of { happy_var_1 -> - happyIn161 - (let Loc l str = happy_var_1 in XName (nIS l) str - )} - -happyReduce_400 = happySpecReduce_1 151# happyReduction_400 -happyReduction_400 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn162 - (let Loc l (VarId s) = happy_var_1 in Loc l s - )} - -happyReduce_401 = happySpecReduce_1 151# happyReduction_401 -happyReduction_401 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn162 - (let Loc l (ConId s) = happy_var_1 in Loc l s - )} - -happyReduce_402 = happySpecReduce_1 151# happyReduction_402 -happyReduction_402 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn162 - (let Loc l (DVarId s) = happy_var_1 in Loc l $ mkDVar s - )} - -happyReduce_403 = happySpecReduce_1 151# happyReduction_403 -happyReduction_403 happy_x_1 - = case happyOut163 happy_x_1 of { happy_var_1 -> - happyIn162 - (happy_var_1 - )} - -happyReduce_404 = happySpecReduce_1 152# happyReduction_404 -happyReduction_404 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Type) -> - happyIn163 - (Loc happy_var_1 "type" - )} - -happyReduce_405 = happySpecReduce_1 152# happyReduction_405 -happyReduction_405 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Class) -> - happyIn163 - (Loc happy_var_1 "class" - )} - -happyReduce_406 = happySpecReduce_1 152# happyReduction_406 -happyReduction_406 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Data) -> - happyIn163 - (Loc happy_var_1 "data" - )} - -happyReduce_407 = happySpecReduce_1 152# happyReduction_407 -happyReduction_407 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Foreign) -> - happyIn163 - (Loc happy_var_1 "foreign" - )} - -happyReduce_408 = happySpecReduce_1 152# happyReduction_408 -happyReduction_408 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Export) -> - happyIn163 - (Loc happy_var_1 "export" - )} - -happyReduce_409 = happySpecReduce_1 152# happyReduction_409 -happyReduction_409 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Safe) -> - happyIn163 - (Loc happy_var_1 "safe" - )} - -happyReduce_410 = happySpecReduce_1 152# happyReduction_410 -happyReduction_410 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Unsafe) -> - happyIn163 - (Loc happy_var_1 "unsafe" - )} - -happyReduce_411 = happySpecReduce_1 152# happyReduction_411 -happyReduction_411 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Threadsafe) -> - happyIn163 - (Loc happy_var_1 "threadsafe" - )} - -happyReduce_412 = happySpecReduce_1 152# happyReduction_412 -happyReduction_412 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_StdCall) -> - happyIn163 - (Loc happy_var_1 "stdcall" - )} - -happyReduce_413 = happySpecReduce_1 152# happyReduction_413 -happyReduction_413 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_CCall) -> - happyIn163 - (Loc happy_var_1 "ccall" - )} - -happyReduce_414 = happySpecReduce_1 152# happyReduction_414 -happyReduction_414 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_As) -> - happyIn163 - (Loc happy_var_1 "as" - )} - -happyReduce_415 = happySpecReduce_1 152# happyReduction_415 -happyReduction_415 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_By) -> - happyIn163 - (Loc happy_var_1 "by" - )} - -happyReduce_416 = happySpecReduce_1 152# happyReduction_416 -happyReduction_416 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Case) -> - happyIn163 - (Loc happy_var_1 "case" - )} - -happyReduce_417 = happySpecReduce_1 152# happyReduction_417 -happyReduction_417 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Default) -> - happyIn163 - (Loc happy_var_1 "default" - )} - -happyReduce_418 = happySpecReduce_1 152# happyReduction_418 -happyReduction_418 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Deriving) -> - happyIn163 - (Loc happy_var_1 "deriving" - )} - -happyReduce_419 = happySpecReduce_1 152# happyReduction_419 -happyReduction_419 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Do) -> - happyIn163 - (Loc happy_var_1 "do" - )} - -happyReduce_420 = happySpecReduce_1 152# happyReduction_420 -happyReduction_420 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Else) -> - happyIn163 - (Loc happy_var_1 "else" - )} - -happyReduce_421 = happySpecReduce_1 152# happyReduction_421 -happyReduction_421 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Family) -> - happyIn163 - (Loc happy_var_1 "family" - )} - -happyReduce_422 = happySpecReduce_1 152# happyReduction_422 -happyReduction_422 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Forall) -> - happyIn163 - (Loc happy_var_1 "forall" - )} - -happyReduce_423 = happySpecReduce_1 152# happyReduction_423 -happyReduction_423 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Group) -> - happyIn163 - (Loc happy_var_1 "group" - )} - -happyReduce_424 = happySpecReduce_1 152# happyReduction_424 -happyReduction_424 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Hiding) -> - happyIn163 - (Loc happy_var_1 "hiding" - )} - -happyReduce_425 = happySpecReduce_1 152# happyReduction_425 -happyReduction_425 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_If) -> - happyIn163 - (Loc happy_var_1 "if" - )} - -happyReduce_426 = happySpecReduce_1 152# happyReduction_426 -happyReduction_426 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Import) -> - happyIn163 - (Loc happy_var_1 "import" - )} - -happyReduce_427 = happySpecReduce_1 152# happyReduction_427 -happyReduction_427 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_In) -> - happyIn163 - (Loc happy_var_1 "in" - )} - -happyReduce_428 = happySpecReduce_1 152# happyReduction_428 -happyReduction_428 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Infix) -> - happyIn163 - (Loc happy_var_1 "infix" - )} - -happyReduce_429 = happySpecReduce_1 152# happyReduction_429 -happyReduction_429 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_InfixL) -> - happyIn163 - (Loc happy_var_1 "infixl" - )} - -happyReduce_430 = happySpecReduce_1 152# happyReduction_430 -happyReduction_430 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_InfixR) -> - happyIn163 - (Loc happy_var_1 "infixr" - )} - -happyReduce_431 = happySpecReduce_1 152# happyReduction_431 -happyReduction_431 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Instance) -> - happyIn163 - (Loc happy_var_1 "instance" - )} - -happyReduce_432 = happySpecReduce_1 152# happyReduction_432 -happyReduction_432 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Let) -> - happyIn163 - (Loc happy_var_1 "let" - )} - -happyReduce_433 = happySpecReduce_1 152# happyReduction_433 -happyReduction_433 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_MDo) -> - happyIn163 - (Loc happy_var_1 "mdo" - )} - -happyReduce_434 = happySpecReduce_1 152# happyReduction_434 -happyReduction_434 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Module) -> - happyIn163 - (Loc happy_var_1 "module" - )} - -happyReduce_435 = happySpecReduce_1 152# happyReduction_435 -happyReduction_435 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_NewType) -> - happyIn163 - (Loc happy_var_1 "newtype" - )} - -happyReduce_436 = happySpecReduce_1 152# happyReduction_436 -happyReduction_436 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Of) -> - happyIn163 - (Loc happy_var_1 "of" - )} - -happyReduce_437 = happySpecReduce_1 152# happyReduction_437 -happyReduction_437 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Proc) -> - happyIn163 - (Loc happy_var_1 "proc" - )} - -happyReduce_438 = happySpecReduce_1 152# happyReduction_438 -happyReduction_438 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Rec) -> - happyIn163 - (Loc happy_var_1 "rec" - )} - -happyReduce_439 = happySpecReduce_1 152# happyReduction_439 -happyReduction_439 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Then) -> - happyIn163 - (Loc happy_var_1 "then" - )} - -happyReduce_440 = happySpecReduce_1 152# happyReduction_440 -happyReduction_440 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Using) -> - happyIn163 - (Loc happy_var_1 "using" - )} - -happyReduce_441 = happySpecReduce_1 152# happyReduction_441 -happyReduction_441 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Where) -> - happyIn163 - (Loc happy_var_1 "where" - )} - -happyReduce_442 = happySpecReduce_1 152# happyReduction_442 -happyReduction_442 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Qualified) -> - happyIn163 - (Loc happy_var_1 "qualified" - )} - -happyReduce_443 = happySpecReduce_2 153# happyReduction_443 -happyReduction_443 happy_x_2 - happy_x_1 - = case happyOut164 happy_x_1 of { happy_var_1 -> - case happyOut165 happy_x_2 of { happy_var_2 -> - happyIn164 - (happy_var_2 : happy_var_1 - )}} - -happyReduce_444 = happySpecReduce_0 153# happyReduction_444 -happyReduction_444 = happyIn164 - ([] - ) - -happyReduce_445 = happySpecReduce_3 154# happyReduction_445 -happyReduction_445 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut161 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Equals) -> - case happyOut150 happy_x_3 of { happy_var_3 -> - happyIn165 - (XAttr (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3 - )}}} - -happyReduce_446 = happySpecReduce_1 155# happyReduction_446 -happyReduction_446 happy_x_1 - = case happyOut150 happy_x_1 of { happy_var_1 -> - happyIn166 - (Just happy_var_1 - )} - -happyReduce_447 = happySpecReduce_0 155# happyReduction_447 -happyReduction_447 = happyIn166 - (Nothing - ) - -happyReduce_448 = happySpecReduce_1 156# happyReduction_448 -happyReduction_448 happy_x_1 - = case happyOut154 happy_x_1 of { happy_var_1 -> - happyIn167 - (\l -> List l [happy_var_1] - )} - -happyReduce_449 = happySpecReduce_1 156# happyReduction_449 -happyReduction_449 happy_x_1 - = case happyOut168 happy_x_1 of { happy_var_1 -> - happyIn167 - (\l -> let (ps,ss) = happy_var_1 in List (l <** reverse ss) (reverse ps) - )} - -happyReduce_450 = happySpecReduce_2 156# happyReduction_450 -happyReduction_450 happy_x_2 - happy_x_1 - = case happyOut154 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 DotDot) -> - happyIn167 - (\l -> EnumFrom (l <** [happy_var_2]) happy_var_1 - )}} - -happyReduce_451 = happyReduce 4# 156# happyReduction_451 -happyReduction_451 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut154 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut140 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 DotDot) -> - happyIn167 - (\l -> EnumFromThen (l <** [happy_var_2,happy_var_4]) happy_var_1 happy_var_3 - ) `HappyStk` happyRest}}}} - -happyReduce_452 = happySpecReduce_3 156# happyReduction_452 -happyReduction_452 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut154 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 DotDot) -> - case happyOut140 happy_x_3 of { happy_var_3 -> - happyIn167 - (\l -> EnumFromTo (l <** [happy_var_2]) happy_var_1 happy_var_3 - )}}} - -happyReduce_453 = happyReduce 5# 156# happyReduction_453 -happyReduction_453 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut154 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut140 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 DotDot) -> - case happyOut140 happy_x_5 of { happy_var_5 -> - happyIn167 - (\l -> EnumFromThenTo (l <** [happy_var_2,happy_var_4]) happy_var_1 happy_var_3 happy_var_5 - ) `HappyStk` happyRest}}}}} - -happyReduce_454 = happySpecReduce_3 156# happyReduction_454 -happyReduction_454 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut154 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Bar) -> - case happyOut169 happy_x_3 of { happy_var_3 -> - happyIn167 - (\l -> let (stss, ss) = happy_var_3 in ParComp (l <** (happy_var_2:ss)) happy_var_1 (reverse stss) - )}}} - -happyReduce_455 = happySpecReduce_3 157# happyReduction_455 -happyReduction_455 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut168 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut154 happy_x_3 of { happy_var_3 -> - happyIn168 - (let (es, ss) = happy_var_1 in (happy_var_3 : es, happy_var_2 : ss) - )}}} - -happyReduce_456 = happySpecReduce_3 157# happyReduction_456 -happyReduction_456 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut154 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut154 happy_x_3 of { happy_var_3 -> - happyIn168 - (([happy_var_3,happy_var_1], [happy_var_2]) - )}}} - -happyReduce_457 = happySpecReduce_3 158# happyReduction_457 -happyReduction_457 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut169 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Bar) -> - case happyOut170 happy_x_3 of { happy_var_3 -> - happyIn169 - (let { (stss, ss1) = happy_var_1; - (sts, ss2) = happy_var_3 } - in (reverse sts : stss, ss1 ++ [happy_var_2] ++ reverse ss2) - )}}} - -happyReduce_458 = happySpecReduce_1 158# happyReduction_458 -happyReduction_458 happy_x_1 - = case happyOut170 happy_x_1 of { happy_var_1 -> - happyIn169 - (let (sts, ss) = happy_var_1 in ([reverse sts], reverse ss) - )} - -happyReduce_459 = happySpecReduce_3 159# happyReduction_459 -happyReduction_459 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut170 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut171 happy_x_3 of { happy_var_3 -> - happyIn170 - (let (sts, ss) = happy_var_1 in (happy_var_3 : sts, happy_var_2 : ss) - )}}} - -happyReduce_460 = happySpecReduce_1 159# happyReduction_460 -happyReduction_460 happy_x_1 - = case happyOut171 happy_x_1 of { happy_var_1 -> - happyIn170 - (([happy_var_1],[]) - )} - -happyReduce_461 = happySpecReduce_1 160# happyReduction_461 -happyReduction_461 happy_x_1 - = case happyOut172 happy_x_1 of { happy_var_1 -> - happyIn171 - (happy_var_1 - )} - -happyReduce_462 = happySpecReduce_1 160# happyReduction_462 -happyReduction_462 happy_x_1 - = case happyOut174 happy_x_1 of { happy_var_1 -> - happyIn171 - (QualStmt (ann happy_var_1) happy_var_1 - )} - -happyReduce_463 = happySpecReduce_2 161# happyReduction_463 -happyReduction_463 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Then) -> - case happyOut139 happy_x_2 of { happy_var_2 -> - happyIn172 - (ThenTrans (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2 - )}} - -happyReduce_464 = happyReduce 4# 161# happyReduction_464 -happyReduction_464 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Then) -> - case happyOut139 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 KW_By) -> - case happyOut139 happy_x_4 of { happy_var_4 -> - happyIn172 - (ThenBy (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_3]) happy_var_2 happy_var_4 - ) `HappyStk` happyRest}}}} - -happyReduce_465 = happyReduce 4# 161# happyReduction_465 -happyReduction_465 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Then) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Group) -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 KW_By) -> - case happyOut139 happy_x_4 of { happy_var_4 -> - happyIn172 - (GroupBy (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_2,happy_var_3]) happy_var_4 - ) `HappyStk` happyRest}}}} - -happyReduce_466 = happyReduce 4# 161# happyReduction_466 -happyReduction_466 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Then) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Group) -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 KW_Using) -> - case happyOut139 happy_x_4 of { happy_var_4 -> - happyIn172 - (GroupUsing (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_2,happy_var_3]) happy_var_4 - ) `HappyStk` happyRest}}}} - -happyReduce_467 = happyReduce 6# 161# happyReduction_467 -happyReduction_467 (happy_x_6 `HappyStk` - happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Then) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Group) -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 KW_By) -> - case happyOut139 happy_x_4 of { happy_var_4 -> - case happyOutTok happy_x_5 of { (Loc happy_var_5 KW_Using) -> - case happyOut139 happy_x_6 of { happy_var_6 -> - happyIn172 - (GroupByUsing (nIS happy_var_1 <++> ann happy_var_6 <** [happy_var_1,happy_var_2,happy_var_3,happy_var_5]) happy_var_4 happy_var_6 - ) `HappyStk` happyRest}}}}}} - -happyReduce_468 = happySpecReduce_3 162# happyReduction_468 -happyReduction_468 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut173 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut174 happy_x_3 of { happy_var_3 -> - happyIn173 - (let (sts, ss) = happy_var_1 in (happy_var_3 : sts, happy_var_2 : ss) - )}}} - -happyReduce_469 = happySpecReduce_1 162# happyReduction_469 -happyReduction_469 happy_x_1 - = case happyOut174 happy_x_1 of { happy_var_1 -> - happyIn173 - (([happy_var_1],[]) - )} - -happyReduce_470 = happySpecReduce_3 163# happyReduction_470 -happyReduction_470 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut182 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftArrow) -> - case happyOut139 happy_x_3 of { happy_var_3 -> - happyIn174 - (Generator (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3 - )}}} - -happyReduce_471 = happySpecReduce_1 163# happyReduction_471 -happyReduction_471 happy_x_1 - = case happyOut139 happy_x_1 of { happy_var_1 -> - happyIn174 - (Qualifier (ann happy_var_1) happy_var_1 - )} - -happyReduce_472 = happySpecReduce_2 163# happyReduction_472 -happyReduction_472 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Let) -> - case happyOut61 happy_x_2 of { happy_var_2 -> - happyIn174 - (LetStmt (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2 - )}} - -happyReduce_473 = happySpecReduce_3 164# happyReduction_473 -happyReduction_473 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftCurly) -> - case happyOut176 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightCurly) -> - happyIn175 - ((fst happy_var_2, happy_var_1 <^^> happy_var_3, happy_var_1:snd happy_var_2 ++ [happy_var_3]) - )}}} - -happyReduce_474 = happySpecReduce_3 164# happyReduction_474 -happyReduction_474 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut222 happy_x_1 of { happy_var_1 -> - case happyOut176 happy_x_2 of { happy_var_2 -> - case happyOut223 happy_x_3 of { happy_var_3 -> - happyIn175 - ((fst happy_var_2, happy_var_1 <^^> happy_var_3, happy_var_1:snd happy_var_2 ++ [happy_var_3]) - )}}} - -happyReduce_475 = happySpecReduce_3 165# happyReduction_475 -happyReduction_475 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut25 happy_x_1 of { happy_var_1 -> - case happyOut177 happy_x_2 of { happy_var_2 -> - case happyOut25 happy_x_3 of { happy_var_3 -> - happyIn176 - ((reverse $ fst happy_var_2, happy_var_1 ++ snd happy_var_2 ++ happy_var_3) - )}}} - -happyReduce_476 = happySpecReduce_3 166# happyReduction_476 -happyReduction_476 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut177 happy_x_1 of { happy_var_1 -> - case happyOut24 happy_x_2 of { happy_var_2 -> - case happyOut178 happy_x_3 of { happy_var_3 -> - happyIn177 - ((happy_var_3 : fst happy_var_1, snd happy_var_1 ++ happy_var_2) - )}}} - -happyReduce_477 = happySpecReduce_1 166# happyReduction_477 -happyReduction_477 happy_x_1 - = case happyOut178 happy_x_1 of { happy_var_1 -> - happyIn177 - (([happy_var_1],[]) - )} - -happyReduce_478 = happySpecReduce_3 167# happyReduction_478 -happyReduction_478 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut182 happy_x_1 of { happy_var_1 -> - case happyOut179 happy_x_2 of { happy_var_2 -> - case happyOut134 happy_x_3 of { happy_var_3 -> - happyIn178 - (Alt (happy_var_1 <> happy_var_2 <+?> (fmap ann) (fst happy_var_3) <** snd happy_var_3) happy_var_1 happy_var_2 (fst happy_var_3) - )}}} - -happyReduce_479 = happySpecReduce_2 168# happyReduction_479 -happyReduction_479 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 RightArrow) -> - case happyOut139 happy_x_2 of { happy_var_2 -> - happyIn179 - (UnGuardedAlt (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2 - )}} - -happyReduce_480 = happySpecReduce_1 168# happyReduction_480 -happyReduction_480 happy_x_1 - = case happyOut180 happy_x_1 of { happy_var_1 -> - happyIn179 - (GuardedAlts (snd happy_var_1) (reverse $ fst happy_var_1) - )} - -happyReduce_481 = happySpecReduce_2 169# happyReduction_481 -happyReduction_481 happy_x_2 - happy_x_1 - = case happyOut180 happy_x_1 of { happy_var_1 -> - case happyOut181 happy_x_2 of { happy_var_2 -> - happyIn180 - ((happy_var_2 : fst happy_var_1, snd happy_var_1 <++> ann happy_var_2) - )}} - -happyReduce_482 = happySpecReduce_1 169# happyReduction_482 -happyReduction_482 happy_x_1 - = case happyOut181 happy_x_1 of { happy_var_1 -> - happyIn180 - (([happy_var_1], ann happy_var_1) - )} - -happyReduce_483 = happyMonadReduce 4# 170# happyReduction_483 -happyReduction_483 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 Bar) -> - case happyOut173 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightArrow) -> - case happyOut139 happy_x_4 of { happy_var_4 -> - ( do { checkPatternGuards (fst happy_var_2); - let {l = nIS happy_var_1 <++> ann happy_var_4 <** (happy_var_1:snd happy_var_2 ++ [happy_var_3])}; - return (GuardedAlt l (reverse (fst happy_var_2)) happy_var_4) })}}}} - ) (\r -> happyReturn (happyIn181 r)) - -happyReduce_484 = happyMonadReduce 1# 171# happyReduction_484 -happyReduction_484 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut140 happy_x_1 of { happy_var_1 -> - ( checkPattern happy_var_1)} - ) (\r -> happyReturn (happyIn182 r)) - -happyReduce_485 = happyMonadReduce 2# 171# happyReduction_485 -happyReduction_485 (happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 Exclamation) -> - case happyOut150 happy_x_2 of { happy_var_2 -> - ( checkPattern (BangPat (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2))}} - ) (\r -> happyReturn (happyIn182 r)) - -happyReduce_486 = happySpecReduce_3 172# happyReduction_486 -happyReduction_486 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftCurly) -> - case happyOut184 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightCurly) -> - happyIn183 - ((fst happy_var_2, happy_var_1 <^^> happy_var_3, happy_var_1:snd happy_var_2 ++ [happy_var_3]) - )}}} - -happyReduce_487 = happySpecReduce_3 172# happyReduction_487 -happyReduction_487 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut222 happy_x_1 of { happy_var_1 -> - case happyOut184 happy_x_2 of { happy_var_2 -> - case happyOut223 happy_x_3 of { happy_var_3 -> - happyIn183 - ((fst happy_var_2, happy_var_1 <^^> happy_var_3, happy_var_1:snd happy_var_2 ++ [happy_var_3]) - )}}} - -happyReduce_488 = happySpecReduce_2 173# happyReduction_488 -happyReduction_488 happy_x_2 - happy_x_1 - = case happyOut186 happy_x_1 of { happy_var_1 -> - case happyOut185 happy_x_2 of { happy_var_2 -> - happyIn184 - ((happy_var_1 : fst happy_var_2, snd happy_var_2) - )}} - -happyReduce_489 = happySpecReduce_2 173# happyReduction_489 -happyReduction_489 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 SemiColon) -> - case happyOut184 happy_x_2 of { happy_var_2 -> - happyIn184 - ((fst happy_var_2, happy_var_1 : snd happy_var_2) - )}} - -happyReduce_490 = happySpecReduce_0 173# happyReduction_490 -happyReduction_490 = happyIn184 - (([],[]) - ) - -happyReduce_491 = happySpecReduce_2 174# happyReduction_491 -happyReduction_491 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 SemiColon) -> - case happyOut184 happy_x_2 of { happy_var_2 -> - happyIn185 - ((fst happy_var_2, happy_var_1 : snd happy_var_2) - )}} - -happyReduce_492 = happySpecReduce_0 174# happyReduction_492 -happyReduction_492 = happyIn185 - (([],[]) - ) - -happyReduce_493 = happySpecReduce_2 175# happyReduction_493 -happyReduction_493 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Let) -> - case happyOut61 happy_x_2 of { happy_var_2 -> - happyIn186 - (LetStmt (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2 - )}} - -happyReduce_494 = happySpecReduce_3 175# happyReduction_494 -happyReduction_494 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut182 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftArrow) -> - case happyOut139 happy_x_3 of { happy_var_3 -> - happyIn186 - (Generator (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3 - )}}} - -happyReduce_495 = happySpecReduce_1 175# happyReduction_495 -happyReduction_495 happy_x_1 - = case happyOut139 happy_x_1 of { happy_var_1 -> - happyIn186 - (Qualifier (ann happy_var_1) happy_var_1 - )} - -happyReduce_496 = happySpecReduce_2 175# happyReduction_496 -happyReduction_496 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Rec) -> - case happyOut183 happy_x_2 of { happy_var_2 -> - happyIn186 - (let (stms,inf,ss) = happy_var_2 in RecStmt (nIS happy_var_1 <++> inf <** happy_var_1:ss) stms - )}} - -happyReduce_497 = happySpecReduce_3 176# happyReduction_497 -happyReduction_497 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut187 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut188 happy_x_3 of { happy_var_3 -> - happyIn187 - (let (fbs, ss) = happy_var_1 in (happy_var_3 : fbs, happy_var_2 : ss) - )}}} - -happyReduce_498 = happySpecReduce_1 176# happyReduction_498 -happyReduction_498 happy_x_1 - = case happyOut188 happy_x_1 of { happy_var_1 -> - happyIn187 - (([happy_var_1],[]) - )} - -happyReduce_499 = happySpecReduce_3 177# happyReduction_499 -happyReduction_499 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut195 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Equals) -> - case happyOut140 happy_x_3 of { happy_var_3 -> - happyIn188 - (FieldUpdate (happy_var_1 <>happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3 - )}}} - -happyReduce_500 = happyMonadReduce 1# 177# happyReduction_500 -happyReduction_500 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut195 happy_x_1 of { happy_var_1 -> - ( checkEnabled NamedFieldPuns >> checkUnQual happy_var_1 >>= return . FieldPun (ann happy_var_1))} - ) (\r -> happyReturn (happyIn188 r)) - -happyReduce_501 = happyMonadReduce 1# 177# happyReduction_501 -happyReduction_501 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 DotDot) -> - ( checkEnabled RecordWildCards >> return (FieldWildcard (nIS happy_var_1)))} - ) (\r -> happyReturn (happyIn188 r)) - -happyReduce_502 = happySpecReduce_3 178# happyReduction_502 -happyReduction_502 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut25 happy_x_1 of { happy_var_1 -> - case happyOut190 happy_x_2 of { happy_var_2 -> - case happyOut25 happy_x_3 of { happy_var_3 -> - happyIn189 - ((reverse (fst happy_var_2), reverse happy_var_1 ++ snd happy_var_2 ++ reverse happy_var_3) - )}}} - -happyReduce_503 = happySpecReduce_3 179# happyReduction_503 -happyReduction_503 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut190 happy_x_1 of { happy_var_1 -> - case happyOut24 happy_x_2 of { happy_var_2 -> - case happyOut191 happy_x_3 of { happy_var_3 -> - happyIn190 - ((happy_var_3 : fst happy_var_1, snd happy_var_1 ++ reverse happy_var_2) - )}}} - -happyReduce_504 = happySpecReduce_1 179# happyReduction_504 -happyReduction_504 happy_x_1 - = case happyOut191 happy_x_1 of { happy_var_1 -> - happyIn190 - (([happy_var_1],[]) - )} - -happyReduce_505 = happySpecReduce_3 180# happyReduction_505 -happyReduction_505 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut196 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Equals) -> - case happyOut139 happy_x_3 of { happy_var_3 -> - happyIn191 - (IPBind (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3 - )}}} - -happyReduce_506 = happySpecReduce_2 181# happyReduction_506 -happyReduction_506 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 RightParen) -> - happyIn192 - (p_unit_con (happy_var_1 <^^> happy_var_2 <** [happy_var_1,happy_var_2]) - )}} - -happyReduce_507 = happySpecReduce_2 181# happyReduction_507 -happyReduction_507 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftSquare) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 RightSquare) -> - happyIn192 - (List (happy_var_1 <^^> happy_var_2 <** [happy_var_1,happy_var_2]) [] - )}} - -happyReduce_508 = happySpecReduce_3 181# happyReduction_508 -happyReduction_508 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut153 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn192 - (p_tuple_con (happy_var_1 <^^> happy_var_3 <** happy_var_1:reverse (happy_var_3:happy_var_2)) Boxed (length happy_var_2) - )}}} - -happyReduce_509 = happySpecReduce_2 181# happyReduction_509 -happyReduction_509 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftHashParen) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 RightHashParen) -> - happyIn192 - (p_unboxed_singleton_con (happy_var_1 <^^> happy_var_2 <** [happy_var_1,happy_var_2]) - )}} - -happyReduce_510 = happySpecReduce_3 181# happyReduction_510 -happyReduction_510 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftHashParen) -> - case happyOut153 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightHashParen) -> - happyIn192 - (p_tuple_con (happy_var_1 <^^> happy_var_3 <** happy_var_1:reverse (happy_var_3:happy_var_2)) Unboxed (length happy_var_2) - )}}} - -happyReduce_511 = happySpecReduce_1 181# happyReduction_511 -happyReduction_511 happy_x_1 - = case happyOut198 happy_x_1 of { happy_var_1 -> - happyIn192 - (Con (ann happy_var_1) happy_var_1 - )} - -happyReduce_512 = happySpecReduce_1 182# happyReduction_512 -happyReduction_512 happy_x_1 - = case happyOut210 happy_x_1 of { happy_var_1 -> - happyIn193 - (happy_var_1 - )} - -happyReduce_513 = happySpecReduce_3 182# happyReduction_513 -happyReduction_513 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut218 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn193 - (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2 - )}}} - -happyReduce_514 = happySpecReduce_1 183# happyReduction_514 -happyReduction_514 happy_x_1 - = case happyOut209 happy_x_1 of { happy_var_1 -> - happyIn194 - (happy_var_1 - )} - -happyReduce_515 = happySpecReduce_3 183# happyReduction_515 -happyReduction_515 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut218 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn194 - (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2 - )}}} - -happyReduce_516 = happySpecReduce_1 184# happyReduction_516 -happyReduction_516 happy_x_1 - = case happyOut208 happy_x_1 of { happy_var_1 -> - happyIn195 - (happy_var_1 - )} - -happyReduce_517 = happySpecReduce_3 184# happyReduction_517 -happyReduction_517 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut216 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn195 - (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2 - )}}} - -happyReduce_518 = happySpecReduce_1 185# happyReduction_518 -happyReduction_518 happy_x_1 - = case happyOut211 happy_x_1 of { happy_var_1 -> - happyIn196 - (happy_var_1 - )} - -happyReduce_519 = happySpecReduce_1 186# happyReduction_519 -happyReduction_519 happy_x_1 - = case happyOut213 happy_x_1 of { happy_var_1 -> - happyIn197 - (happy_var_1 - )} - -happyReduce_520 = happySpecReduce_3 186# happyReduction_520 -happyReduction_520 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut215 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn197 - (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2 - )}}} - -happyReduce_521 = happySpecReduce_1 187# happyReduction_521 -happyReduction_521 happy_x_1 - = case happyOut212 happy_x_1 of { happy_var_1 -> - happyIn198 - (happy_var_1 - )} - -happyReduce_522 = happySpecReduce_3 187# happyReduction_522 -happyReduction_522 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut207 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn198 - (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2 - )}}} - -happyReduce_523 = happySpecReduce_1 188# happyReduction_523 -happyReduction_523 happy_x_1 - = case happyOut218 happy_x_1 of { happy_var_1 -> - happyIn199 - (happy_var_1 - )} - -happyReduce_524 = happySpecReduce_3 188# happyReduction_524 -happyReduction_524 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 BackQuote) -> - case happyOut210 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 BackQuote) -> - happyIn199 - (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2 - )}}} - -happyReduce_525 = happySpecReduce_1 189# happyReduction_525 -happyReduction_525 happy_x_1 - = case happyOut216 happy_x_1 of { happy_var_1 -> - happyIn200 - (happy_var_1 - )} - -happyReduce_526 = happySpecReduce_3 189# happyReduction_526 -happyReduction_526 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 BackQuote) -> - case happyOut208 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 BackQuote) -> - happyIn200 - (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2 - )}}} - -happyReduce_527 = happySpecReduce_1 190# happyReduction_527 -happyReduction_527 happy_x_1 - = case happyOut217 happy_x_1 of { happy_var_1 -> - happyIn201 - (happy_var_1 - )} - -happyReduce_528 = happySpecReduce_3 190# happyReduction_528 -happyReduction_528 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 BackQuote) -> - case happyOut208 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 BackQuote) -> - happyIn201 - (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2 - )}}} - -happyReduce_529 = happySpecReduce_1 191# happyReduction_529 -happyReduction_529 happy_x_1 - = case happyOut215 happy_x_1 of { happy_var_1 -> - happyIn202 - (happy_var_1 - )} - -happyReduce_530 = happySpecReduce_3 191# happyReduction_530 -happyReduction_530 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 BackQuote) -> - case happyOut213 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 BackQuote) -> - happyIn202 - (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2 - )}}} - -happyReduce_531 = happySpecReduce_1 192# happyReduction_531 -happyReduction_531 happy_x_1 - = case happyOut207 happy_x_1 of { happy_var_1 -> - happyIn203 - (happy_var_1 - )} - -happyReduce_532 = happySpecReduce_3 192# happyReduction_532 -happyReduction_532 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 BackQuote) -> - case happyOut212 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 BackQuote) -> - happyIn203 - (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2 - )}}} - -happyReduce_533 = happySpecReduce_1 193# happyReduction_533 -happyReduction_533 happy_x_1 - = case happyOut199 happy_x_1 of { happy_var_1 -> - happyIn204 - (VarOp (ann happy_var_1) happy_var_1 - )} - -happyReduce_534 = happySpecReduce_1 193# happyReduction_534 -happyReduction_534 happy_x_1 - = case happyOut202 happy_x_1 of { happy_var_1 -> - happyIn204 - (ConOp (ann happy_var_1) happy_var_1 - )} - -happyReduce_535 = happySpecReduce_1 194# happyReduction_535 -happyReduction_535 happy_x_1 - = case happyOut200 happy_x_1 of { happy_var_1 -> - happyIn205 - (QVarOp (ann happy_var_1) happy_var_1 - )} - -happyReduce_536 = happySpecReduce_1 194# happyReduction_536 -happyReduction_536 happy_x_1 - = case happyOut203 happy_x_1 of { happy_var_1 -> - happyIn205 - (QConOp (ann happy_var_1) happy_var_1 - )} - -happyReduce_537 = happySpecReduce_1 195# happyReduction_537 -happyReduction_537 happy_x_1 - = case happyOut201 happy_x_1 of { happy_var_1 -> - happyIn206 - (QVarOp (ann happy_var_1) happy_var_1 - )} - -happyReduce_538 = happySpecReduce_1 195# happyReduction_538 -happyReduction_538 happy_x_1 - = case happyOut203 happy_x_1 of { happy_var_1 -> - happyIn206 - (QConOp (ann happy_var_1) happy_var_1 - )} - -happyReduce_539 = happySpecReduce_1 196# happyReduction_539 -happyReduction_539 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 Colon) -> - happyIn207 - (list_cons_name (nIS happy_var_1) - )} - -happyReduce_540 = happySpecReduce_1 196# happyReduction_540 -happyReduction_540 happy_x_1 - = case happyOut214 happy_x_1 of { happy_var_1 -> - happyIn207 - (happy_var_1 - )} - -happyReduce_541 = happySpecReduce_1 197# happyReduction_541 -happyReduction_541 happy_x_1 - = case happyOut210 happy_x_1 of { happy_var_1 -> - happyIn208 - (UnQual (ann happy_var_1) happy_var_1 - )} - -happyReduce_542 = happySpecReduce_1 197# happyReduction_542 -happyReduction_542 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn208 - (let {Loc l (QVarId q) = happy_var_1; nis = nIS l} - in Qual nis (ModuleName nis (fst q)) (Ident nis (snd q)) - )} - -happyReduce_543 = happySpecReduce_1 198# happyReduction_543 -happyReduction_543 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn209 - (let Loc l (VarId v) = happy_var_1 in Ident (nIS l) v - )} - -happyReduce_544 = happySpecReduce_1 198# happyReduction_544 -happyReduction_544 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_As) -> - happyIn209 - (as_name (nIS happy_var_1) - )} - -happyReduce_545 = happySpecReduce_1 198# happyReduction_545 -happyReduction_545 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Qualified) -> - happyIn209 - (qualified_name (nIS happy_var_1) - )} - -happyReduce_546 = happySpecReduce_1 198# happyReduction_546 -happyReduction_546 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Hiding) -> - happyIn209 - (hiding_name (nIS happy_var_1) - )} - -happyReduce_547 = happySpecReduce_1 198# happyReduction_547 -happyReduction_547 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Export) -> - happyIn209 - (export_name (nIS happy_var_1) - )} - -happyReduce_548 = happySpecReduce_1 198# happyReduction_548 -happyReduction_548 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_StdCall) -> - happyIn209 - (stdcall_name (nIS happy_var_1) - )} - -happyReduce_549 = happySpecReduce_1 198# happyReduction_549 -happyReduction_549 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_CCall) -> - happyIn209 - (ccall_name (nIS happy_var_1) - )} - -happyReduce_550 = happySpecReduce_1 199# happyReduction_550 -happyReduction_550 happy_x_1 - = case happyOut209 happy_x_1 of { happy_var_1 -> - happyIn210 - (happy_var_1 - )} - -happyReduce_551 = happySpecReduce_1 199# happyReduction_551 -happyReduction_551 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Safe) -> - happyIn210 - (safe_name (nIS happy_var_1) - )} - -happyReduce_552 = happySpecReduce_1 199# happyReduction_552 -happyReduction_552 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Unsafe) -> - happyIn210 - (unsafe_name (nIS happy_var_1) - )} - -happyReduce_553 = happySpecReduce_1 199# happyReduction_553 -happyReduction_553 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Threadsafe) -> - happyIn210 - (threadsafe_name (nIS happy_var_1) - )} - -happyReduce_554 = happySpecReduce_1 200# happyReduction_554 -happyReduction_554 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn211 - (let Loc l (IDupVarId i) = happy_var_1 in IPDup (nIS l) i - )} - -happyReduce_555 = happySpecReduce_1 200# happyReduction_555 -happyReduction_555 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn211 - (let Loc l (ILinVarId i) = happy_var_1 in IPLin (nIS l) i - )} - -happyReduce_556 = happySpecReduce_1 201# happyReduction_556 -happyReduction_556 happy_x_1 - = case happyOut213 happy_x_1 of { happy_var_1 -> - happyIn212 - (UnQual (ann happy_var_1) happy_var_1 - )} - -happyReduce_557 = happySpecReduce_1 201# happyReduction_557 -happyReduction_557 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn212 - (let {Loc l (QConId q) = happy_var_1; nis = nIS l} in Qual nis (ModuleName nis (fst q)) (Ident nis (snd q)) - )} - -happyReduce_558 = happySpecReduce_1 202# happyReduction_558 -happyReduction_558 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn213 - (let Loc l (ConId c) = happy_var_1 in Ident (nIS l) c - )} - -happyReduce_559 = happySpecReduce_1 203# happyReduction_559 -happyReduction_559 happy_x_1 - = case happyOut215 happy_x_1 of { happy_var_1 -> - happyIn214 - (UnQual (ann happy_var_1) happy_var_1 - )} - -happyReduce_560 = happySpecReduce_1 203# happyReduction_560 -happyReduction_560 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn214 - (let {Loc l (QConSym q) = happy_var_1; nis = nIS l} in Qual nis (ModuleName nis (fst q)) (Symbol nis (snd q)) - )} - -happyReduce_561 = happySpecReduce_1 204# happyReduction_561 -happyReduction_561 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn215 - (let Loc l (ConSym c) = happy_var_1 in Symbol (nIS l) c - )} - -happyReduce_562 = happySpecReduce_1 205# happyReduction_562 -happyReduction_562 happy_x_1 - = case happyOut218 happy_x_1 of { happy_var_1 -> - happyIn216 - (UnQual (ann happy_var_1) happy_var_1 - )} - -happyReduce_563 = happySpecReduce_1 205# happyReduction_563 -happyReduction_563 happy_x_1 - = case happyOut220 happy_x_1 of { happy_var_1 -> - happyIn216 - (happy_var_1 - )} - -happyReduce_564 = happySpecReduce_1 206# happyReduction_564 -happyReduction_564 happy_x_1 - = case happyOut219 happy_x_1 of { happy_var_1 -> - happyIn217 - (UnQual (ann happy_var_1) happy_var_1 - )} - -happyReduce_565 = happySpecReduce_1 206# happyReduction_565 -happyReduction_565 happy_x_1 - = case happyOut220 happy_x_1 of { happy_var_1 -> - happyIn217 - (happy_var_1 - )} - -happyReduce_566 = happySpecReduce_1 207# happyReduction_566 -happyReduction_566 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn218 - (let Loc l (VarSym v) = happy_var_1 in Symbol (nIS l) v - )} - -happyReduce_567 = happySpecReduce_1 207# happyReduction_567 -happyReduction_567 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 Minus) -> - happyIn218 - (minus_name (nIS happy_var_1) - )} - -happyReduce_568 = happySpecReduce_1 207# happyReduction_568 -happyReduction_568 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 Exclamation) -> - happyIn218 - (bang_name (nIS happy_var_1) - )} - -happyReduce_569 = happySpecReduce_1 207# happyReduction_569 -happyReduction_569 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 Dot) -> - happyIn218 - (dot_name (nIS happy_var_1) - )} - -happyReduce_570 = happySpecReduce_1 207# happyReduction_570 -happyReduction_570 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 Star) -> - happyIn218 - (star_name (nIS happy_var_1) - )} - -happyReduce_571 = happySpecReduce_1 208# happyReduction_571 -happyReduction_571 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn219 - (let Loc l (VarSym v) = happy_var_1 in Symbol (nIS l) v - )} - -happyReduce_572 = happySpecReduce_1 208# happyReduction_572 -happyReduction_572 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 Exclamation) -> - happyIn219 - (bang_name (nIS happy_var_1) - )} - -happyReduce_573 = happySpecReduce_1 208# happyReduction_573 -happyReduction_573 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 Dot) -> - happyIn219 - (dot_name (nIS happy_var_1) - )} - -happyReduce_574 = happySpecReduce_1 208# happyReduction_574 -happyReduction_574 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 Star) -> - happyIn219 - (star_name (nIS happy_var_1) - )} - -happyReduce_575 = happySpecReduce_1 209# happyReduction_575 -happyReduction_575 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn220 - (let {Loc l (QVarSym q) = happy_var_1; nis = nIS l} in Qual nis (ModuleName nis (fst q)) (Symbol nis (snd q)) - )} - -happyReduce_576 = happySpecReduce_1 210# happyReduction_576 -happyReduction_576 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn221 - (let Loc l (IntTok (i,raw)) = happy_var_1 in Int (nIS l) i raw - )} - -happyReduce_577 = happySpecReduce_1 210# happyReduction_577 -happyReduction_577 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn221 - (let Loc l (Character (c,raw)) = happy_var_1 in Char (nIS l) c raw - )} - -happyReduce_578 = happySpecReduce_1 210# happyReduction_578 -happyReduction_578 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn221 - (let Loc l (FloatTok (r,raw)) = happy_var_1 in Frac (nIS l) r raw - )} - -happyReduce_579 = happySpecReduce_1 210# happyReduction_579 -happyReduction_579 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn221 - (let Loc l (StringTok (s,raw)) = happy_var_1 in String (nIS l) s raw - )} - -happyReduce_580 = happySpecReduce_1 210# happyReduction_580 -happyReduction_580 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn221 - (let Loc l (IntTokHash (i,raw)) = happy_var_1 in PrimInt (nIS l) i raw - )} - -happyReduce_581 = happySpecReduce_1 210# happyReduction_581 -happyReduction_581 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn221 - (let Loc l (WordTokHash (w,raw)) = happy_var_1 in PrimWord (nIS l) w raw - )} - -happyReduce_582 = happySpecReduce_1 210# happyReduction_582 -happyReduction_582 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn221 - (let Loc l (FloatTokHash (f,raw)) = happy_var_1 in PrimFloat (nIS l) f raw - )} - -happyReduce_583 = happySpecReduce_1 210# happyReduction_583 -happyReduction_583 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn221 - (let Loc l (DoubleTokHash (d,raw)) = happy_var_1 in PrimDouble (nIS l) d raw - )} - -happyReduce_584 = happySpecReduce_1 210# happyReduction_584 -happyReduction_584 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn221 - (let Loc l (CharacterHash (c,raw)) = happy_var_1 in PrimChar (nIS l) c raw - )} - -happyReduce_585 = happySpecReduce_1 210# happyReduction_585 -happyReduction_585 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn221 - (let Loc l (StringHash (s,raw)) = happy_var_1 in PrimString (nIS l) s raw - )} - -happyReduce_586 = happyMonadReduce 0# 211# happyReduction_586 -happyReduction_586 (happyRest) tk - = happyThen (( pushCurrentContext >> getSrcLoc >>= \s -> return $ mkSrcSpan s s {- >>= \x -> trace (show x) (return x) -}) - ) (\r -> happyReturn (happyIn222 r)) - -happyReduce_587 = happySpecReduce_1 212# happyReduction_587 -happyReduction_587 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 VRightCurly) -> - happyIn223 - (happy_var_1 {- >>= \x -> trace (show x ++ show x ++ show x) (return x) -} - )} - -happyReduce_588 = happyMonadReduce 1# 212# happyReduction_588 -happyReduction_588 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (( popContext >> getSrcLoc >>= \s -> return $ mkSrcSpan s s {- >>= \x -> trace (show x ++ show x) (return x) -}) - ) (\r -> happyReturn (happyIn223 r)) - -happyReduce_589 = happySpecReduce_1 213# happyReduction_589 -happyReduction_589 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn224 - (let Loc l (ConId n) = happy_var_1 in ModuleName (nIS l) n - )} - -happyReduce_590 = happySpecReduce_1 213# happyReduction_590 -happyReduction_590 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn224 - (let Loc l (QConId n) = happy_var_1 in ModuleName (nIS l) (fst n ++ '.':snd n) - )} - -happyReduce_591 = happySpecReduce_1 214# happyReduction_591 -happyReduction_591 happy_x_1 - = case happyOut197 happy_x_1 of { happy_var_1 -> - happyIn225 - (happy_var_1 - )} - -happyReduce_592 = happySpecReduce_1 215# happyReduction_592 -happyReduction_592 happy_x_1 - = case happyOut198 happy_x_1 of { happy_var_1 -> - happyIn226 - (happy_var_1 - )} - -happyReduce_593 = happySpecReduce_1 216# happyReduction_593 -happyReduction_593 happy_x_1 - = case happyOut210 happy_x_1 of { happy_var_1 -> - happyIn227 - (happy_var_1 - )} - -happyReduce_594 = happySpecReduce_3 217# happyReduction_594 -happyReduction_594 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 BackQuote) -> - case happyOut227 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 BackQuote) -> - happyIn228 - (UnQual (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3]) happy_var_2 - )}}} - -happyReduce_595 = happySpecReduce_1 217# happyReduction_595 -happyReduction_595 happy_x_1 - = case happyOut229 happy_x_1 of { happy_var_1 -> - happyIn228 - (UnQual (ann happy_var_1) happy_var_1 - )} - -happyReduce_596 = happySpecReduce_1 218# happyReduction_596 -happyReduction_596 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn229 - (let Loc l (VarSym x) = happy_var_1 in Symbol (nIS l) x - )} - -happyNewToken action sts stk - = lexer(\tk -> - let cont i = happyDoAction i tk action sts stk in - case tk of { - Loc _ EOF -> happyDoAction 133# tk action sts stk; - Loc _ (VarId _) -> cont 1#; - Loc _ (QVarId _) -> cont 2#; - Loc _ (IDupVarId _) -> cont 3#; - Loc _ (ILinVarId _) -> cont 4#; - Loc _ (ConId _) -> cont 5#; - Loc _ (QConId _) -> cont 6#; - Loc _ (DVarId _) -> cont 7#; - Loc _ (VarSym _) -> cont 8#; - Loc _ (ConSym _) -> cont 9#; - Loc _ (QVarSym _) -> cont 10#; - Loc _ (QConSym _) -> cont 11#; - Loc _ (IntTok _) -> cont 12#; - Loc _ (FloatTok _) -> cont 13#; - Loc _ (Character _) -> cont 14#; - Loc _ (StringTok _) -> cont 15#; - Loc _ (IntTokHash _) -> cont 16#; - Loc _ (WordTokHash _) -> cont 17#; - Loc _ (FloatTokHash _) -> cont 18#; - Loc _ (DoubleTokHash _) -> cont 19#; - Loc _ (CharacterHash _) -> cont 20#; - Loc _ (StringHash _) -> cont 21#; - Loc happy_dollar_dollar LeftParen -> cont 22#; - Loc happy_dollar_dollar RightParen -> cont 23#; - Loc happy_dollar_dollar LeftHashParen -> cont 24#; - Loc happy_dollar_dollar RightHashParen -> cont 25#; - Loc happy_dollar_dollar LeftCurlyBar -> cont 26#; - Loc happy_dollar_dollar RightCurlyBar -> cont 27#; - Loc happy_dollar_dollar SemiColon -> cont 28#; - Loc happy_dollar_dollar LeftCurly -> cont 29#; - Loc happy_dollar_dollar RightCurly -> cont 30#; - Loc happy_dollar_dollar VRightCurly -> cont 31#; - Loc happy_dollar_dollar LeftSquare -> cont 32#; - Loc happy_dollar_dollar RightSquare -> cont 33#; - Loc happy_dollar_dollar Comma -> cont 34#; - Loc happy_dollar_dollar Underscore -> cont 35#; - Loc happy_dollar_dollar BackQuote -> cont 36#; - Loc happy_dollar_dollar Dot -> cont 37#; - Loc happy_dollar_dollar DotDot -> cont 38#; - Loc happy_dollar_dollar Colon -> cont 39#; - Loc happy_dollar_dollar DoubleColon -> cont 40#; - Loc happy_dollar_dollar Equals -> cont 41#; - Loc happy_dollar_dollar Backslash -> cont 42#; - Loc happy_dollar_dollar Bar -> cont 43#; - Loc happy_dollar_dollar LeftArrow -> cont 44#; - Loc happy_dollar_dollar RightArrow -> cont 45#; - Loc happy_dollar_dollar At -> cont 46#; - Loc happy_dollar_dollar Tilde -> cont 47#; - Loc happy_dollar_dollar DoubleArrow -> cont 48#; - Loc happy_dollar_dollar Minus -> cont 49#; - Loc happy_dollar_dollar Exclamation -> cont 50#; - Loc happy_dollar_dollar Star -> cont 51#; - Loc happy_dollar_dollar LeftArrowTail -> cont 52#; - Loc happy_dollar_dollar RightArrowTail -> cont 53#; - Loc happy_dollar_dollar LeftDblArrowTail -> cont 54#; - Loc happy_dollar_dollar RightDblArrowTail -> cont 55#; - Loc happy_dollar_dollar RPGuardOpen -> cont 56#; - Loc happy_dollar_dollar RPGuardClose -> cont 57#; - Loc happy_dollar_dollar RPCAt -> cont 58#; - Loc _ (THIdEscape _) -> cont 59#; - Loc happy_dollar_dollar THParenEscape -> cont 60#; - Loc happy_dollar_dollar THExpQuote -> cont 61#; - Loc happy_dollar_dollar THPatQuote -> cont 62#; - Loc happy_dollar_dollar THTypQuote -> cont 63#; - Loc happy_dollar_dollar THDecQuote -> cont 64#; - Loc happy_dollar_dollar THCloseQuote -> cont 65#; - Loc happy_dollar_dollar THVarQuote -> cont 66#; - Loc happy_dollar_dollar THTyQuote -> cont 67#; - Loc _ (THQuasiQuote _) -> cont 68#; - Loc _ (XPCDATA _) -> cont 69#; - Loc happy_dollar_dollar XStdTagOpen -> cont 70#; - Loc happy_dollar_dollar XCloseTagOpen -> cont 71#; - Loc happy_dollar_dollar XCodeTagOpen -> cont 72#; - Loc happy_dollar_dollar XStdTagClose -> cont 73#; - Loc happy_dollar_dollar XEmptyTagClose -> cont 74#; - Loc happy_dollar_dollar XCodeTagClose -> cont 75#; - Loc happy_dollar_dollar XRPatOpen -> cont 76#; - Loc happy_dollar_dollar XRPatClose -> cont 77#; - Loc happy_dollar_dollar KW_Foreign -> cont 78#; - Loc happy_dollar_dollar KW_Export -> cont 79#; - Loc happy_dollar_dollar KW_Safe -> cont 80#; - Loc happy_dollar_dollar KW_Unsafe -> cont 81#; - Loc happy_dollar_dollar KW_Threadsafe -> cont 82#; - Loc happy_dollar_dollar KW_StdCall -> cont 83#; - Loc happy_dollar_dollar KW_CCall -> cont 84#; - Loc happy_dollar_dollar KW_As -> cont 85#; - Loc happy_dollar_dollar KW_By -> cont 86#; - Loc happy_dollar_dollar KW_Case -> cont 87#; - Loc happy_dollar_dollar KW_Class -> cont 88#; - Loc happy_dollar_dollar KW_Data -> cont 89#; - Loc happy_dollar_dollar KW_Default -> cont 90#; - Loc happy_dollar_dollar KW_Deriving -> cont 91#; - Loc happy_dollar_dollar KW_Do -> cont 92#; - Loc happy_dollar_dollar KW_Else -> cont 93#; - Loc happy_dollar_dollar KW_Family -> cont 94#; - Loc happy_dollar_dollar KW_Forall -> cont 95#; - Loc happy_dollar_dollar KW_Group -> cont 96#; - Loc happy_dollar_dollar KW_Hiding -> cont 97#; - Loc happy_dollar_dollar KW_If -> cont 98#; - Loc happy_dollar_dollar KW_Import -> cont 99#; - Loc happy_dollar_dollar KW_In -> cont 100#; - Loc happy_dollar_dollar KW_Infix -> cont 101#; - Loc happy_dollar_dollar KW_InfixL -> cont 102#; - Loc happy_dollar_dollar KW_InfixR -> cont 103#; - Loc happy_dollar_dollar KW_Instance -> cont 104#; - Loc happy_dollar_dollar KW_Let -> cont 105#; - Loc happy_dollar_dollar KW_MDo -> cont 106#; - Loc happy_dollar_dollar KW_Module -> cont 107#; - Loc happy_dollar_dollar KW_NewType -> cont 108#; - Loc happy_dollar_dollar KW_Of -> cont 109#; - Loc happy_dollar_dollar KW_Proc -> cont 110#; - Loc happy_dollar_dollar KW_Rec -> cont 111#; - Loc happy_dollar_dollar KW_Then -> cont 112#; - Loc happy_dollar_dollar KW_Type -> cont 113#; - Loc happy_dollar_dollar KW_Using -> cont 114#; - Loc happy_dollar_dollar KW_Where -> cont 115#; - Loc happy_dollar_dollar KW_Qualified -> cont 116#; - Loc _ (INLINE _) -> cont 117#; - Loc happy_dollar_dollar INLINE_CONLIKE -> cont 118#; - Loc happy_dollar_dollar SPECIALISE -> cont 119#; - Loc _ (SPECIALISE_INLINE _) -> cont 120#; - Loc happy_dollar_dollar SOURCE -> cont 121#; - Loc happy_dollar_dollar RULES -> cont 122#; - Loc happy_dollar_dollar CORE -> cont 123#; - Loc happy_dollar_dollar SCC -> cont 124#; - Loc happy_dollar_dollar GENERATED -> cont 125#; - Loc happy_dollar_dollar DEPRECATED -> cont 126#; - Loc happy_dollar_dollar WARNING -> cont 127#; - Loc happy_dollar_dollar UNPACK -> cont 128#; - Loc _ (OPTIONS _) -> cont 129#; - Loc happy_dollar_dollar LANGUAGE -> cont 130#; - Loc happy_dollar_dollar ANN -> cont 131#; - Loc happy_dollar_dollar PragmaEnd -> cont 132#; - _ -> happyError' tk - }) - -happyError_ tk = happyError' tk - -happyThen :: () => P a -> (a -> P b) -> P b -happyThen = (>>=) -happyReturn :: () => a -> P a -happyReturn = (return) -happyThen1 = happyThen -happyReturn1 :: () => a -> P a -happyReturn1 = happyReturn -happyError' :: () => (Loc Token) -> P a -happyError' tk = parseError tk - -mparseModule = happySomeParser where - happySomeParser = happyThen (happyParse 0#) (\x -> happyReturn (happyOut13 x)) - -mparseExp = happySomeParser where - happySomeParser = happyThen (happyParse 1#) (\x -> happyReturn (happyOut139 x)) - -mparsePat = happySomeParser where - happySomeParser = happyThen (happyParse 2#) (\x -> happyReturn (happyOut182 x)) - -mparseDecl = happySomeParser where - happySomeParser = happyThen (happyParse 3#) (\x -> happyReturn (happyOut50 x)) - -mparseType = happySomeParser where - happySomeParser = happyThen (happyParse 4#) (\x -> happyReturn (happyOut88 x)) - -mparseStmt = happySomeParser where - happySomeParser = happyThen (happyParse 5#) (\x -> happyReturn (happyOut186 x)) - -mparseModules = happySomeParser where - happySomeParser = happyThen (happyParse 6#) (\x -> happyReturn (happyOut11 x)) - -mfindOptPragmas = happySomeParser where - happySomeParser = happyThen (happyParse 7#) (\x -> happyReturn (happyOut15 x)) - -happySeq = happyDontSeq - - -type L = SrcSpanInfo -- just for convenience -type S = SrcSpan - -parseError :: Loc Token -> P a -parseError t = fail $ "Parse error: " ++ showToken (unLoc t) - -(<>) :: (Annotated a, Annotated b) => a SrcSpanInfo -> b SrcSpanInfo -> SrcSpanInfo -a <> b = ann a <++> ann b -infixl 6 <> - -nIS = noInfoSpan -iS = infoSpan - - --- | Parse of a string, which should contain a complete Haskell module. -parseModule :: String -> ParseResult (Module SrcSpanInfo) -parseModule = simpleParse mparseModule - --- | Parse of a string containing a complete Haskell module, using an explicit mode. -parseModuleWithMode :: ParseMode -> String -> ParseResult (Module SrcSpanInfo) -parseModuleWithMode = modeParse mparseModule - --- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments. -parseModuleWithComments :: ParseMode -> String -> ParseResult (Module SrcSpanInfo, [Comment]) -parseModuleWithComments = commentParse mparseModule - --- | Parse of a string containing a Haskell expression. -parseExp :: String -> ParseResult (Exp SrcSpanInfo) -parseExp = simpleParse mparseExp - --- | Parse of a string containing a Haskell expression, using an explicit mode. -parseExpWithMode :: ParseMode -> String -> ParseResult (Exp SrcSpanInfo) -parseExpWithMode = modeParse mparseExp - --- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments. -parseExpWithComments :: ParseMode -> String -> ParseResult (Exp SrcSpanInfo, [Comment]) -parseExpWithComments = commentParse mparseExp - --- | Parse of a string containing a Haskell pattern. -parsePat :: String -> ParseResult (Pat SrcSpanInfo) -parsePat = simpleParse mparsePat - --- | Parse of a string containing a Haskell pattern, using an explicit mode. -parsePatWithMode :: ParseMode -> String -> ParseResult (Pat SrcSpanInfo) -parsePatWithMode = modeParse mparsePat - --- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments. -parsePatWithComments :: ParseMode -> String -> ParseResult (Pat SrcSpanInfo, [Comment]) -parsePatWithComments = commentParse mparsePat - --- | Parse of a string containing a Haskell top-level declaration. -parseDecl :: String -> ParseResult (Decl SrcSpanInfo) -parseDecl = simpleParse mparseDecl - --- | Parse of a string containing a Haskell top-level declaration, using an explicit mode. -parseDeclWithMode :: ParseMode -> String -> ParseResult (Decl SrcSpanInfo) -parseDeclWithMode = modeParse mparseDecl - --- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments. -parseDeclWithComments :: ParseMode -> String -> ParseResult (Decl SrcSpanInfo, [Comment]) -parseDeclWithComments = commentParse mparseDecl - --- | Parse of a string containing a Haskell type. -parseType :: String -> ParseResult (Type SrcSpanInfo) -parseType = runParser mparseType - --- | Parse of a string containing a Haskell type, using an explicit mode. -parseTypeWithMode :: ParseMode -> String -> ParseResult (Type SrcSpanInfo) -parseTypeWithMode mode = runParserWithMode mode mparseType - --- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments. -parseTypeWithComments :: ParseMode -> String -> ParseResult (Type SrcSpanInfo, [Comment]) -parseTypeWithComments mode str = runParserWithModeComments mode mparseType str - --- | Parse of a string containing a Haskell statement. -parseStmt :: String -> ParseResult (Stmt SrcSpanInfo) -parseStmt = runParser mparseStmt - --- | Parse of a string containing a Haskell type, using an explicit mode. -parseStmtWithMode :: ParseMode -> String -> ParseResult (Stmt SrcSpanInfo) -parseStmtWithMode mode = runParserWithMode mode mparseStmt - --- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments. -parseStmtWithComments :: ParseMode -> String -> ParseResult (Stmt SrcSpanInfo, [Comment]) -parseStmtWithComments mode str = runParserWithModeComments mode mparseStmt str - - -simpleParse :: AppFixity a => P (a L) -> String -> ParseResult (a L) -simpleParse p = applyFixities preludeFixities <=< runParser p - -modeParse :: AppFixity a => P (a L) -> ParseMode -> String -> ParseResult (a L) -modeParse p mode = applyFixities (fixities mode) <=< runParserWithMode mode p - -commentParse :: AppFixity a => P (a L) -> ParseMode -> String -> ParseResult (a L, [Comment]) -commentParse p mode str = do (ast, cs) <- runParserWithModeComments mode p str - ast' <- applyFixities (fixities mode) ast - return (ast', cs) - --- | Partial parse of a string starting with a series of top-level option pragmas. -getTopPragmas :: String -> ParseResult [ModulePragma SrcSpanInfo] -getTopPragmas = runParser (mfindOptPragmas >>= \(ps,_,_) -> return ps) - --- | Parse of a string, which should contain a complete Haskell module. -parseModules :: String -> ParseResult [Module SrcSpanInfo] -parseModules = mapM (applyFixities preludeFixities) <=< runParser mparseModules - --- | Parse of a string containing a complete Haskell module, using an explicit mode. -parseModulesWithMode :: ParseMode -> String -> ParseResult [Module SrcSpanInfo] -parseModulesWithMode mode = mapM (applyFixities (fixities mode)) <=< runParserWithMode mode mparseModules - --- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments. -parseModulesWithComments :: ParseMode -> String -> ParseResult ([Module SrcSpanInfo], [Comment]) -parseModulesWithComments mode str = do (ast,cs) <- runParserWithModeComments mode mparseModules str - ast' <- mapM (applyFixities (fixities mode)) ast - return (ast', cs) -{-# LINE 1 "templates\GenericTemplate.hs" #-} -{-# LINE 1 "templates\\GenericTemplate.hs" #-} -{-# LINE 1 "" #-} -{-# LINE 1 "" #-} -{-# LINE 1 "templates\\GenericTemplate.hs" #-} --- Id: GenericTemplate.hs,v 1.26 2005/01/14 14:47:22 simonmar Exp - -{-# LINE 28 "templates\\GenericTemplate.hs" #-} - - -data Happy_IntList = HappyCons Happy_GHC_Exts.Int# Happy_IntList - - - - - -{-# LINE 49 "templates\\GenericTemplate.hs" #-} - -{-# LINE 59 "templates\\GenericTemplate.hs" #-} - -{-# LINE 68 "templates\\GenericTemplate.hs" #-} - -infixr 9 `HappyStk` -data HappyStk a = HappyStk a (HappyStk a) - ------------------------------------------------------------------------------ --- starting the parse - -happyParse start_state = happyNewToken start_state notHappyAtAll notHappyAtAll - ------------------------------------------------------------------------------ --- Accepting the parse - --- If the current token is 0#, it means we've just accepted a partial --- parse (a %partial parser). We must ignore the saved token on the top of --- the stack in this case. -happyAccept 0# tk st sts (_ `HappyStk` ans `HappyStk` _) = - happyReturn1 ans -happyAccept j tk st sts (HappyStk ans _) = - (happyTcHack j (happyTcHack st)) (happyReturn1 ans) - ------------------------------------------------------------------------------ --- Arrays only: do the next action - - - -happyDoAction i tk st - = {- nothing -} - - - case action of - 0# -> {- nothing -} - happyFail i tk st - -1# -> {- nothing -} - happyAccept i tk st - n | (n Happy_GHC_Exts.<# (0# :: Happy_GHC_Exts.Int#)) -> {- nothing -} - - (happyReduceArr Happy_Data_Array.! rule) i tk st - where rule = (Happy_GHC_Exts.I# ((Happy_GHC_Exts.negateInt# ((n Happy_GHC_Exts.+# (1# :: Happy_GHC_Exts.Int#)))))) - n -> {- nothing -} - - - happyShift new_state i tk st - where new_state = (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) - where off = indexShortOffAddr happyActOffsets st - off_i = (off Happy_GHC_Exts.+# i) - check = if (off_i Happy_GHC_Exts.>=# (0# :: Happy_GHC_Exts.Int#)) - then (indexShortOffAddr happyCheck off_i Happy_GHC_Exts.==# i) - else False - action | check = indexShortOffAddr happyTable off_i - | otherwise = indexShortOffAddr happyDefActions st - -{-# LINE 127 "templates\\GenericTemplate.hs" #-} - - -indexShortOffAddr (HappyA# arr) off = -#if __GLASGOW_HASKELL__ > 500 - Happy_GHC_Exts.narrow16Int# i -#elif __GLASGOW_HASKELL__ == 500 - Happy_GHC_Exts.intToInt16# i -#else - Happy_GHC_Exts.iShiftRA# (Happy_GHC_Exts.iShiftL# i 16#) 16# -#endif - where -#if __GLASGOW_HASKELL__ >= 503 - i = Happy_GHC_Exts.word2Int# (Happy_GHC_Exts.or# (Happy_GHC_Exts.uncheckedShiftL# high 8#) low) -#else - i = Happy_GHC_Exts.word2Int# (Happy_GHC_Exts.or# (Happy_GHC_Exts.shiftL# high 8#) low) -#endif - high = Happy_GHC_Exts.int2Word# (Happy_GHC_Exts.ord# (Happy_GHC_Exts.indexCharOffAddr# arr (off' Happy_GHC_Exts.+# 1#))) - low = Happy_GHC_Exts.int2Word# (Happy_GHC_Exts.ord# (Happy_GHC_Exts.indexCharOffAddr# arr off')) - off' = off Happy_GHC_Exts.*# 2# - - - - - -data HappyAddr = HappyA# Happy_GHC_Exts.Addr# - - - - ------------------------------------------------------------------------------ --- HappyState data type (not arrays) - -{-# LINE 170 "templates\\GenericTemplate.hs" #-} - ------------------------------------------------------------------------------ --- Shifting a token - -happyShift new_state 0# tk st sts stk@(x `HappyStk` _) = - let i = (case Happy_GHC_Exts.unsafeCoerce# x of { (Happy_GHC_Exts.I# (i)) -> i }) in --- trace "shifting the error token" $ - happyDoAction i tk new_state (HappyCons (st) (sts)) (stk) - -happyShift new_state i tk st sts stk = - happyNewToken new_state (HappyCons (st) (sts)) ((happyInTok (tk))`HappyStk`stk) - --- happyReduce is specialised for the common cases. - -happySpecReduce_0 i fn 0# tk st sts stk - = happyFail 0# tk st sts stk -happySpecReduce_0 nt fn j tk st@((action)) sts stk - = happyGoto nt j tk st (HappyCons (st) (sts)) (fn `HappyStk` stk) - -happySpecReduce_1 i fn 0# tk st sts stk - = happyFail 0# tk st sts stk -happySpecReduce_1 nt fn j tk _ sts@((HappyCons (st@(action)) (_))) (v1`HappyStk`stk') - = let r = fn v1 in - happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk')) - -happySpecReduce_2 i fn 0# tk st sts stk - = happyFail 0# tk st sts stk -happySpecReduce_2 nt fn j tk _ (HappyCons (_) (sts@((HappyCons (st@(action)) (_))))) (v1`HappyStk`v2`HappyStk`stk') - = let r = fn v1 v2 in - happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk')) - -happySpecReduce_3 i fn 0# tk st sts stk - = happyFail 0# tk st sts stk -happySpecReduce_3 nt fn j tk _ (HappyCons (_) ((HappyCons (_) (sts@((HappyCons (st@(action)) (_))))))) (v1`HappyStk`v2`HappyStk`v3`HappyStk`stk') - = let r = fn v1 v2 v3 in - happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk')) - -happyReduce k i fn 0# tk st sts stk - = happyFail 0# tk st sts stk -happyReduce k nt fn j tk st sts stk - = case happyDrop (k Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) sts of - sts1@((HappyCons (st1@(action)) (_))) -> - let r = fn stk in -- it doesn't hurt to always seq here... - happyDoSeq r (happyGoto nt j tk st1 sts1 r) - -happyMonadReduce k nt fn 0# tk st sts stk - = happyFail 0# tk st sts stk -happyMonadReduce k nt fn j tk st sts stk = - happyThen1 (fn stk tk) (\r -> happyGoto nt j tk st1 sts1 (r `HappyStk` drop_stk)) - where sts1@((HappyCons (st1@(action)) (_))) = happyDrop k (HappyCons (st) (sts)) - drop_stk = happyDropStk k stk - -happyMonad2Reduce k nt fn 0# tk st sts stk - = happyFail 0# tk st sts stk -happyMonad2Reduce k nt fn j tk st sts stk = - happyThen1 (fn stk tk) (\r -> happyNewToken new_state sts1 (r `HappyStk` drop_stk)) - where sts1@((HappyCons (st1@(action)) (_))) = happyDrop k (HappyCons (st) (sts)) - drop_stk = happyDropStk k stk - - off = indexShortOffAddr happyGotoOffsets st1 - off_i = (off Happy_GHC_Exts.+# nt) - new_state = indexShortOffAddr happyTable off_i - - - - -happyDrop 0# l = l -happyDrop n (HappyCons (_) (t)) = happyDrop (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) t - -happyDropStk 0# l = l -happyDropStk n (x `HappyStk` xs) = happyDropStk (n Happy_GHC_Exts.-# (1#::Happy_GHC_Exts.Int#)) xs - ------------------------------------------------------------------------------ --- Moving to a new state after a reduction - - -happyGoto nt j tk st = - {- nothing -} - happyDoAction j tk new_state - where off = indexShortOffAddr happyGotoOffsets st - off_i = (off Happy_GHC_Exts.+# nt) - new_state = indexShortOffAddr happyTable off_i - - - - ------------------------------------------------------------------------------ --- Error recovery (0# is the error token) - --- parse error if we are in recovery and we fail again -happyFail 0# tk old_st _ stk = --- trace "failing" $ - happyError_ tk - -{- We don't need state discarding for our restricted implementation of - "error". In fact, it can cause some bogus parses, so I've disabled it - for now --SDM - --- discard a state -happyFail 0# tk old_st (HappyCons ((action)) (sts)) - (saved_tok `HappyStk` _ `HappyStk` stk) = --- trace ("discarding state, depth " ++ show (length stk)) $ - happyDoAction 0# tk action sts ((saved_tok`HappyStk`stk)) --} - --- Enter error recovery: generate an error token, --- save the old token and carry on. -happyFail i tk (action) sts stk = --- trace "entering error recovery" $ - happyDoAction 0# tk action sts ( (Happy_GHC_Exts.unsafeCoerce# (Happy_GHC_Exts.I# (i))) `HappyStk` stk) - --- Internal happy errors: - -notHappyAtAll = error "Internal Happy error\n" - ------------------------------------------------------------------------------ --- Hack to get the typechecker to accept our action functions - - -happyTcHack :: Happy_GHC_Exts.Int# -> a -> a -happyTcHack x y = y -{-# INLINE happyTcHack #-} - - ------------------------------------------------------------------------------ --- Seq-ing. If the --strict flag is given, then Happy emits --- happySeq = happyDoSeq --- otherwise it emits --- happySeq = happyDontSeq - -happyDoSeq, happyDontSeq :: a -> b -> b -happyDoSeq a b = a `seq` b -happyDontSeq a b = b - ------------------------------------------------------------------------------ --- Don't inline any functions from the template. GHC has a nasty habit --- of deciding to inline happyGoto everywhere, which increases the size of --- the generated parser quite a bit. - - -{-# NOINLINE happyDoAction #-} -{-# NOINLINE happyTable #-} -{-# NOINLINE happyCheck #-} -{-# NOINLINE happyActOffsets #-} -{-# NOINLINE happyGotoOffsets #-} -{-# NOINLINE happyDefActions #-} - -{-# NOINLINE happyShift #-} -{-# NOINLINE happySpecReduce_0 #-} -{-# NOINLINE happySpecReduce_1 #-} -{-# NOINLINE happySpecReduce_2 #-} -{-# NOINLINE happySpecReduce_3 #-} -{-# NOINLINE happyReduce #-} -{-# NOINLINE happyMonadReduce #-} -{-# NOINLINE happyGoto #-} -{-# NOINLINE happyFail #-} - --- end of Happy Template. diff -ruN haskell-src-exts-1.9.0/examples/hse-examples.cabal haskell-src-exts/examples/hse-examples.cabal --- haskell-src-exts-1.9.0/examples/hse-examples.cabal 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/examples/hse-examples.cabal 2010-12-15 09:33:52.858152246 -0800 @@ -0,0 +1,12 @@ +Name: hse-examples +Version: 0.1 +License: GPL +Author: hse +Synopsis: Some small examples of using the haskell-src-exts library +Build-type: Simple + +Executable: prettify +Main-is: Prettify.hs +Build-depends: base, directory, filepath, haskell-src-exts +Ghc-options: -Wall + diff -ruN haskell-src-exts-1.9.0/examples/Prettify.hs haskell-src-exts/examples/Prettify.hs --- haskell-src-exts-1.9.0/examples/Prettify.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/examples/Prettify.hs 2010-12-15 09:33:52.686085656 -0800 @@ -0,0 +1,185 @@ +{- +-} +module Main + ( main ) +where + +{- Standard Library Modules Imported -} +import System.Console.GetOpt + ( getOpt + , usageInfo + , ArgOrder ( .. ) + , OptDescr ( .. ) + , ArgDescr ( .. ) + ) +import System.Directory + ( createDirectoryIfMissing ) +import System.Environment + ( getArgs + , getProgName + ) +import qualified System.FilePath as File +{- External Library Modules Imported -} +import qualified Language.Haskell.Exts.Parser as Parser +import Language.Haskell.Exts.Parser + ( ParseMode ( .. ) + , ParseResult ( .. ) + ) +-- import qualified Language.Haskell.Exts.Pretty as Pretty +import Language.Haskell.Exts.Pretty + ( prettyPrintWithMode + , Pretty + , PPHsMode ( .. ) + , PPLayout ( .. ) + , defaultMode + ) +{- Local Modules Imported -} +{- End of Imports -} + +data CliFlag = + CliHelp + | CliVersion + | CliOutputDir FilePath + | CliPPLayout PPLayout + | CliClassIndent Int + | CliDoIndent Int + | CliCaseIndent Int + | CliLetIndent Int + | CliWhereIndent Int + | CliOnsideIndent Int + deriving Eq + + +options :: [ OptDescr CliFlag ] +options = + [ Option "h" [ "help" ] + (NoArg CliHelp) + "Print the help message to standard out and then exit" + + , Option "v" [ "version" ] + (NoArg CliVersion) + "Print out the version of this program" + + , Option "" [ "output-dir" ] + (ReqArg CliOutputDir "DIR") + "Redirect the output to a file of the same name in the new directory" + + {- Options for controlling the layout style of the pretty printing -} + , Option "" [ "pp-classical" ] + (NoArg $ CliPPLayout PPOffsideRule) + "Use the classical layout rules" + + , Option "" [ "pp-semi-colon" ] + (NoArg $ CliPPLayout PPSemiColon) + "Use the classical layout made explicit with semi-colons" + + , Option "" [ "pp-inline-decls" ] + (NoArg $ CliPPLayout PPInLine) + "inline decls, with newlines between them" + + , Option "" [ "pp-no-layout" ] + (NoArg $ CliPPLayout PPNoLayout) + "everything on a single line" + + {- Options for controlling individual indentation sizes -} + , Option "" [ "class-indent" ] + (ReqArg (CliClassIndent . read) "Int") + "The indentation of a class or instance declaration" + + , Option "" [ "do-indent" ] + (ReqArg (CliDoIndent . read) "Int") + "The indentation of do-expressions" + + , Option "" [ "case-indent" ] + (ReqArg (CliCaseIndent . read) "Int") + "The indentation of the body of a case expression" + + , Option "" [ "let-indent" ] + (ReqArg (CliWhereIndent . read) "Int") + "The indentation of the declarations in a let expression" + + , Option "" [ "where-indent" ] + (ReqArg (CliWhereIndent . read) "Int") + "The indentation of the declarations in a where clause" + + , Option "" [ "onside-indent" ] + (ReqArg (CliOnsideIndent . read) "Int") + "Indentation added for continuation lines that would otherwise be offside" + ] + +helpMessage :: String -> String +helpMessage progName = + usageInfo progName options + +versionMessage :: String -> String +versionMessage progName = + progName ++ ": This is version 0.001" + +-- | The main exported function +main :: IO () +main = getArgs >>= processOptions + +-- Process the command line options and arguments, this basically just checks +-- if there is a parse error in the command-line otherwise it passes on the +-- actual processing of the parsed arguments to 'processArgs' +processOptions :: [ String ] -> IO () +processOptions cliArgs = + case getOpt Permute options cliArgs of + (flags, args, []) -> + processArgs flags args + (_flags, _args, errors) -> + do progName <- getProgName + ioError $ userError (concat errors ++ helpMessage progName) + +-- We assume all of the arguments are files to process +processArgs :: [ CliFlag ] -> [ String ] -> IO () +processArgs flags files + | elem CliHelp flags = getProgName >>= (putStrLn . helpMessage) + | elem CliVersion flags = getProgName >>= (putStrLn . versionMessage) + | otherwise = mapM_ (processFile outputDir printMode) files + where + outputDir = case [ dir | CliOutputDir dir <- flags ] of + [] -> Nothing + l -> Just $ head l + + printMode = foldl updateMode defaultMode flags + + updateMode :: PPHsMode -> CliFlag -> PPHsMode + updateMode mode (CliHelp) = mode + updateMode mode (CliVersion) = mode + updateMode mode (CliOutputDir _) = mode + updateMode mode (CliPPLayout lay) = mode { layout = lay } + updateMode mode (CliClassIndent i) = mode { classIndent = i } + updateMode mode (CliDoIndent i) = mode { doIndent = i } + updateMode mode (CliCaseIndent i) = mode { caseIndent = i } + updateMode mode (CliLetIndent i) = mode { letIndent = i } + updateMode mode (CliWhereIndent i) = mode { whereIndent = i } + updateMode mode (CliOnsideIndent i) = mode { onsideIndent = i } + + +-- Our processing of the file is simply to parse the file followed by printing +-- the file out in a prettier format according to the options given on the +-- command-line. +processFile :: Maybe FilePath -> PPHsMode -> FilePath -> IO () +processFile mDir printMode file = + do contents <- readFile file + let pResult = Parser.parseModuleWithMode parseMode contents + parseMode = ParseMode { parseFilename = file } + case pResult of + ParseOk hModule -> + outputSource $ prettyPrint hModule + ParseFailed srcLoc message -> + putStrLn $ unlines [ prettyPrint srcLoc + , message + ] + where + prettyPrint :: Pretty a => a -> String + prettyPrint = prettyPrintWithMode printMode + + outputSource :: String -> IO () + outputSource contents = + case mDir of + Just dir -> do createDirectoryIfMissing True dir + writeFile (File.replaceDirectory file dir) contents + Nothing -> putStrLn contents + diff -ruN haskell-src-exts-1.9.0/haskell-src-exts.cabal haskell-src-exts/haskell-src-exts.cabal --- haskell-src-exts-1.9.0/haskell-src-exts.cabal 2010-04-11 03:42:46.000000000 -0700 +++ haskell-src-exts/haskell-src-exts.cabal 2010-12-15 09:33:53.033962237 -0800 @@ -1,5 +1,5 @@ Name: haskell-src-exts -Version: 1.9.0 +Version: 1.10.0 License: BSD3 License-File: LICENSE Author: Niklas Broberg @@ -31,6 +31,75 @@ Tested-with: GHC==6.10.2, GHC==6.10.4 Build-Type: Custom Cabal-Version: >= 1.2 +Extra-Source-Files: + CHANGELOG + Test/Runner.hs + Test/failing.txt + Test/printFail.txt + Test/examples/ArrowLayout.hs + Test/examples/Attributes.hs + Test/examples/BangPatterns.hs + Test/examples/Bug.hs + Test/examples/ByteStringUtils.hs + Test/examples/CParser.hs + Test/examples/ClassInstType.hs + Test/examples/DataHeadParen.hs + Test/examples/Directory.hs + Test/examples/EmptyAnn.hs + Test/examples/EmptyContext.hs + Test/examples/EmptyInstance.hs + Test/examples/EmptyList.hs + Test/examples/Ex1.hs + Test/examples/FamilyKindSig.hs + Test/examples/FixityTests.hs + Test/examples/ForeignImport.hs + Test/examples/GadtDeriving.hs + Test/examples/GenericTree.hs + Test/examples/GhcDeriving.hs + Test/examples/GroupKeyword.hs + Test/examples/HappyDoAction.hs + Test/examples/HaskellParser.hs + Test/examples/HexPrec.hs + Test/examples/Hyphen.hs + Test/examples/ImportSymbol.hs + Test/examples/IndentedWhere.hs + Test/examples/InfixParser.hs + Test/examples/LanguagePragma.hs + Test/examples/LineOptionsPragma.hs + Test/examples/LinePragma.hs + Test/examples/ListComp1.hs + Test/examples/MagicHash.hs + Test/examples/MultiCtxt.hs + Test/examples/NPlusK.hs + Test/examples/NestedAsPat.hs + Test/examples/PackageImport.hs + Test/examples/ParenFunBind.hs + Test/examples/Pragma.hs + Test/examples/QualifiedDot.hs + Test/examples/QuasiQuoteLines.hs + Test/examples/Rank2Types.hs + Test/examples/ReadP.hs + Test/examples/RealGHC.lhs + Test/examples/RealHSE.hs + Test/examples/RealHoogle.hs + Test/examples/RealTagSoup.hs + Test/examples/RecordInfixSelector.hs + Test/examples/RecordWildcards.hs + Test/examples/RelaxedDo.hs + Test/examples/SCCPragmas.hs + Test/examples/ScopedTypeVariables.hs + Test/examples/SimpleDeriving.hs + Test/examples/SingleClassAsst.hs + Test/examples/SpecializeInstance.hs + Test/examples/Testing.hs + Test/examples/TupleSections.hs + Test/examples/TypeFunctions.hs + Test/examples/TypeOperatorsTest.hs + Test/examples/Unicode.hs + Test/examples/UnicodeSyntax.hs + Test/examples/UnindentedPragmaClose.hs + Test/examples/WhereBlock.hs + Test/examples/WithKeyword.hs Flag base4 diff -ruN haskell-src-exts-1.9.0/HISTORY haskell-src-exts/HISTORY --- haskell-src-exts-1.9.0/HISTORY 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/HISTORY 2010-12-15 09:33:34.161962256 -0800 @@ -0,0 +1,44 @@ +* 0.4.6 + +- Support for magic hash literals. +- Bugfix to allow scoped type variables in monadic bindings. + +* 0.4.5 + +- Support for GADT deriving clauses. + +* 0.4.4 + +- Support for non-option level pragmas. +- 0.4.4.1 adds support for option level pragmas too. + +* 0.4.3 +========= + +- Support for literate source files, courtesy of Neil Mitchell. +- Support for using the word 'data' as a HSX literal attribute name. + +- 0.4.3.1 is a bugfix release since some of the upcoming, but unfinished, fixity stuff + ended up in the 0.4.3 release making it incompilable. + +* 0.4.2 +========= + +- Support for view patterns +(http://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#view-patterns) + + +* 0.4.1 +========= +New major branch: + +- The AST has been cleaned up, by splitting Haskell expressions in +the AST from the "expressions" used while parsing to represent both +expressions and patterns. + +- The ugly Hs prefixes on datatypes in the AST have been removed. +Datatypes are now named Exp, Pat, Module (former Module is now ModuleName), +Type and QOp etc, instead of HsExp, HsPat... . + +- Support for magic hash identifiers +(http://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#magic-hash) \ No newline at end of file diff -ruN haskell-src-exts-1.9.0/README haskell-src-exts/README --- haskell-src-exts-1.9.0/README 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/README 2010-12-15 09:33:34.513712228 -0800 @@ -0,0 +1,75 @@ +======================================================================== + Haskell Source Extensions +======================================================================== + +haskell-src-exts is a package for handling and manipulating Haskell source +code. It is based on the haskell-src package that is part of the standard +libraries, but extends this to support a number of syntactic +extensions, e.g. MPTCs, fundeps, GADTs, TH etc. It is intended as a direct +replacement for the standard haskell-src package, and exports the same +functions and data types, plus some more. + +Apart from the more standard extensions supported by e.g. GHC, +haskell-src-exts also provides support for HaRP (Haskell Regular Patterns) +and HSX (Haskell Source with XML) syntax. + +------------------------------------------------------------------------ +Package structure: + +The modules that comprise haskell-src-exts all reside in the hierarchic +namespace Language.Haskell.Exts. The exposed modules are: + +* Language.Haskell.Exts.Syntax - The abstract syntax tree that the other + modules work on. +* Language.Haskell.Exts.Build - Combinators for building abstract syntax. +* Language.Haskell.Exts.Parser - Functions for parsing Haskell source + code into an abstract syntax representation. +* Language.Haskell.Exts.Pretty - Pretty-printer for the abstract syntax. + +* Language.Haskell.Exts - Imports and re-exports all the above, and + also defines some functions that combine functionality from several + modules. + +------------------------------------------------------------------------ +Supported extensions: + +* Multi-parameter type classes (MPTCs) +* Functional dependencies +* Associated types, type families +* Liberal class and instance heads +* Implicit parameters (ghc and hugs) +* Explicit kind signatures +* Pattern guards +* Generalized algebraic data types (GADTs) +* Template Haskell (TH) +* Universal and existential quantification (forall) +* Empty data type declarations +* Unboxed tuples (# #) +* Standalone deriving +* Regular patterns +* Haskell XML, HSX style +* Pragmas + +As-of-yet unsupported extensions: + +* Unboxed functions ( ident# ) + +Any other out there..? + +Unsupported: + +* n+k patterns + +------------------------------------------------------------------------ +Portability and dependencies: + +The package itself is Haskell98-compliant and should build with any +Haskell compiler. + +------------------------------------------------------------------------ +License: + +The haskell-src-exts Package is distributed under a derived BSD-style license. It +derives from several sources, all of which are distributable under +BSD-style or compatible licenses. See the file LICENSE for the complete +license text. diff -ruN haskell-src-exts-1.9.0/src/Language/Haskell/Exts/Annotated/ExactPrint.hs haskell-src-exts/src/Language/Haskell/Exts/Annotated/ExactPrint.hs --- haskell-src-exts-1.9.0/src/Language/Haskell/Exts/Annotated/ExactPrint.hs 2010-04-11 03:42:41.000000000 -0700 +++ haskell-src-exts/src/Language/Haskell/Exts/Annotated/ExactPrint.hs 2010-12-15 09:33:53.570712405 -0800 @@ -1285,8 +1285,15 @@ [a,b] -> do printString "<%" exactPC e - printString "%>" + printStringAt (pos b) "%>" _ -> errorEP "ExactP: Exp: XExpTag is given wrong number of srcInfoPoints" + XChildTag l es -> + case srcInfoPoints l of + [a,b,c] -> do + printString "<%>" + mapM_ exactPC es + printStringAt (pos b) "" CorePragma l str e -> case srcInfoPoints l of diff -ruN haskell-src-exts-1.9.0/src/Language/Haskell/Exts/Annotated/Fixity.hs haskell-src-exts/src/Language/Haskell/Exts/Annotated/Fixity.hs --- haskell-src-exts-1.9.0/src/Language/Haskell/Exts/Annotated/Fixity.hs 2010-04-11 03:42:41.000000000 -0700 +++ haskell-src-exts/src/Language/Haskell/Exts/Annotated/Fixity.hs 2010-12-15 09:33:54.154898319 -0800 @@ -301,6 +301,7 @@ XTag l n ats mexp cs -> liftM3 (XTag l n) (mapM fix ats) (mapM fix mexp) (mapM fix cs) XETag l n ats mexp -> liftM2 (XETag l n) (mapM fix ats) (mapM fix mexp) XExpTag l e -> liftM (XExpTag l) $ fix e + XChildTag l cs -> liftM (XChildTag l) $ mapM fix cs Proc l p e -> liftM2 (Proc l) (fix p) (fix e) LeftArrApp l e1 e2 -> liftM2 (LeftArrApp l) (fix e1) (fix e2) RightArrApp l e1 e2 -> liftM2 (RightArrApp l) (fix e1) (fix e2) diff -ruN haskell-src-exts-1.9.0/src/Language/Haskell/Exts/Annotated/Simplify.hs haskell-src-exts/src/Language/Haskell/Exts/Annotated/Simplify.hs --- haskell-src-exts-1.9.0/src/Language/Haskell/Exts/Annotated/Simplify.hs 2010-04-11 03:42:41.000000000 -0700 +++ haskell-src-exts/src/Language/Haskell/Exts/Annotated/Simplify.hs 2010-12-15 09:33:54.590212687 -0800 @@ -370,6 +370,7 @@ XETag l xn attrs mat -> S.XETag (getPointLoc l) (sXName xn) (map sXAttr attrs) (fmap sExp mat) XPcdata _ str -> S.XPcdata str XExpTag _ e -> S.XExpTag (sExp e) + XChildTag l es -> S.XChildTag (getPointLoc l) (map sExp es) CorePragma _ str e -> S.CorePragma str (sExp e) SCCPragma _ str e -> S.SCCPragma str (sExp e) GenPragma _ str i12 i34 e -> S.GenPragma str i12 i34 (sExp e) diff -ruN haskell-src-exts-1.9.0/src/Language/Haskell/Exts/Annotated/Syntax.hs haskell-src-exts/src/Language/Haskell/Exts/Annotated/Syntax.hs --- haskell-src-exts-1.9.0/src/Language/Haskell/Exts/Annotated/Syntax.hs 2010-04-11 03:42:41.000000000 -0700 +++ haskell-src-exts/src/Language/Haskell/Exts/Annotated/Syntax.hs 2010-12-15 09:33:55.283213684 -0800 @@ -737,6 +737,8 @@ -- ^ empty xml element, with attributes | XPcdata l String -- ^ PCDATA child element | XExpTag l (Exp l) -- ^ escaped haskell expression inside xml + | XChildTag l [Exp l] -- ^ children of an xml element + -- Pragmas | CorePragma l String (Exp l) -- ^ CORE pragma @@ -1394,6 +1396,7 @@ XETag l xn xas me -> XETag (f l) (fmap f xn) (map (fmap f) xas) (fmap (fmap f) me) XPcdata l s -> XPcdata (f l) s XExpTag l e -> XExpTag (f l) (fmap f e) + XChildTag l es -> XChildTag (f l) (map (fmap f) es) CorePragma l s e -> CorePragma (f l) s (fmap f e) SCCPragma l s e -> SCCPragma (f l) s (fmap f e) @@ -1954,6 +1957,7 @@ XETag l xn xas me -> l XPcdata l s -> l XExpTag l e -> l + XChildTag l es -> l CorePragma l s e -> l SCCPragma l s e -> l @@ -2004,6 +2008,7 @@ XETag l xn xas me -> XETag (f l) xn xas me XPcdata l s -> XPcdata (f l) s XExpTag l e -> XExpTag (f l) e + XChildTag l es -> XChildTag (f l) es CorePragma l s e -> CorePragma (f l) s e SCCPragma l s e -> SCCPragma (f l) s e diff -ruN haskell-src-exts-1.9.0/src/Language/Haskell/Exts/Fixity.hs haskell-src-exts/src/Language/Haskell/Exts/Fixity.hs --- haskell-src-exts-1.9.0/src/Language/Haskell/Exts/Fixity.hs 2010-04-11 03:42:41.000000000 -0700 +++ haskell-src-exts/src/Language/Haskell/Exts/Fixity.hs 2010-12-15 09:33:56.346349948 -0800 @@ -363,6 +363,7 @@ XTag loc n ats mexp cs -> liftM3 (XTag loc n) (mapM fix ats) (mapM fix mexp) (mapM fix cs) XETag loc n ats mexp -> liftM2 (XETag loc n) (mapM fix ats) (mapM fix mexp) XExpTag e -> liftM XExpTag $ fix e + XChildTag loc cs -> liftM (XChildTag loc) $ mapM fix cs Proc loc p e -> liftM2 (Proc loc) (fix p) (fix e) LeftArrApp e1 e2 -> liftM2 LeftArrApp (fix e1) (fix e2) RightArrApp e1 e2 -> liftM2 RightArrApp (fix e1) (fix e2) diff -ruN haskell-src-exts-1.9.0/src/Language/Haskell/Exts/InternalParser.ly haskell-src-exts/src/Language/Haskell/Exts/InternalParser.ly --- haskell-src-exts-1.9.0/src/Language/Haskell/Exts/InternalParser.ly 2010-04-11 03:42:41.000000000 -0700 +++ haskell-src-exts/src/Language/Haskell/Exts/InternalParser.ly 2010-12-15 09:33:57.213713161 -0800 @@ -191,6 +191,7 @@ > '<' { Loc $$ XStdTagOpen } > ' '<%' { Loc $$ XCodeTagOpen } +> '<%>' { Loc $$ XChildTagOpen } > '>' { Loc $$ XStdTagClose } > '/>' { Loc $$ XEmptyTagClose } > '%>' { Loc $$ XCodeTagClose } @@ -521,7 +522,7 @@ > {% do { (cs,dh) <- checkDataHeader $2; > let { (gs,ss,minf) = $4; > l = ann $1 <+?> minf <+?> fmap ann $5 <** (snd $3 ++ ss)}; -> checkDataOrNew $1 gs; +> checkDataOrNewG $1 gs; > case (gs, fst $3) of > ([], Nothing) -> return (DataDecl l $1 cs dh [] $5) > _ -> checkEnabled GADTs >> return (GDataDecl l $1 cs dh (fst $3) (reverse gs) $5) } } @@ -547,7 +548,7 @@ > checkEnabled TypeFamilies ; > let {(gs,ss,minf) = $5; > l = ann $1 <+?> minf <+?> fmap ann $6 <** ($2:snd $4 ++ ss)}; -> checkDataOrNew $1 gs; +> checkDataOrNewG $1 gs; > return (GDataInsDecl l $1 $3 (fst $4) (reverse gs) $6) } } > | 'class' ctype fds optcbody > {% do { (cs,dh) <- checkClassHeader $2; @@ -799,6 +800,7 @@ > otycon :: { QName L } > : qconid { $1 } > | '(' gconsym ')' { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 } +> | '(' qvarsym ')' { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 } These are for infix types @@ -1070,7 +1072,7 @@ > | data_or_newtype truectype optkind gadtlist deriving > {% do { -- (cs,c,t) <- checkDataHeader $4; > let { (gs,ss,minf) = $4 } ; -> checkDataOrNew $1 gs; +> checkDataOrNewG $1 gs; > return $ InsGData (ann $1 <+?> minf <+?> fmap ann $5 <** (snd $3 ++ ss)) $1 $2 (fst $3) (reverse gs) $5 } } ----------------------------------------------------------------------------- @@ -1234,9 +1236,9 @@ > | '(' texp ')' { Paren ($1 <^^> $3 <** [$1,$3]) $2 } > | '(' texp tsectend { TupleSection ($1 <^^> head (snd $3) <** $1:reverse (snd $3)) (Just $2 : fst $3) } > | '(' commas texp ')' { TupleSection ($1 <^^> $4 <** $1:reverse ($4:$2)) -> (replicate (length $2 - 1) Nothing ++ [Just $3]) } +> (replicate (length $2) Nothing ++ [Just $3]) } > | '(' commas texp tsectend { TupleSection ($1 <^^> head (snd $4) <** $1:reverse (snd $4 ++ $2)) -> (replicate (length $2 - 1) Nothing ++ Just $3 : fst $4) } +> (replicate (length $2) Nothing ++ Just $3 : fst $4) } > | '[' list ']' { amap (\l -> l <** [$3]) $ $2 ($1 <^^> $3 <** [$1]) } > | '_' { WildCard (nIS $1) } > | '(' erpats ')' {% checkEnabled RegularPatterns >> return (Paren ($1 <^^> $3 <** [$1,$3]) $2) } @@ -1297,6 +1299,7 @@ > return $ XTag l n as $4 cn } } > | '<' name attrs mattr '/>' { XETag ($1 <^^> $5 <** [$1,$5]) $2 (reverse $3) $4 } > | '<%' exp '%>' { XExpTag ($1 <^^> $3 <** [$1,$3]) $2 } +> | '<%>' children '' { XChildTag ($1 <^^> $4 <** [$1,$3,$4]) (reverse $2) } > children :: { [PExp L] } > : children child { $2 : $1 } diff -ruN haskell-src-exts-1.9.0/src/Language/Haskell/Exts/Lexer.hs haskell-src-exts/src/Language/Haskell/Exts/Lexer.hs --- haskell-src-exts-1.9.0/src/Language/Haskell/Exts/Lexer.hs 2010-04-11 03:42:41.000000000 -0700 +++ haskell-src-exts/src/Language/Haskell/Exts/Lexer.hs 2010-12-15 09:33:58.306462952 -0800 @@ -120,6 +120,7 @@ | XStdTagClose -- > | XCloseTagOpen -- + | XChildTagOpen -- <%> (note that close doesn't exist, it's XCloseTagOpen followed by XCodeTagClose) | XPCDATA String | XRPatOpen -- <[ | XRPatClose -- ]> @@ -481,6 +482,9 @@ -- if we ever end up here, then XmlSyntax must be on. s <- getInput case s of + '<':'%':'>':_ -> do discard 3 + pushExtContextL ChildCtxt + return XChildTagOpen '<':'%':_ -> do discard 2 pushExtContextL CodeTagCtxt return XCodeTagOpen @@ -534,6 +538,9 @@ -- if we ever end up here, then XmlSyntax must be on. s <- getInput case s of + '%':'>':_ -> do discard 2 + popExtContextL "lexCloseTagCtxt" + return XCodeTagClose '>':_ -> do discard 1 popExtContextL "lexCloseTagCtxt" return XStdTagClose @@ -638,10 +645,14 @@ -- end template haskell -- hsx - '<':'%':_ | XmlSyntax `elem` exts -> do - discard 2 - pushExtContextL CodeTagCtxt - return XCodeTagOpen + '<':'%':c:_ | XmlSyntax `elem` exts -> do + case c of + '>' -> do discard 3 + pushExtContextL ChildCtxt + return XChildTagOpen + _ -> do discard 2 + pushExtContextL CodeTagCtxt + return XCodeTagOpen '<':c:_ | isAlpha c && XmlSyntax `elem` exts -> do discard 1 pushExtContextL TagCtxt @@ -764,6 +775,7 @@ '\n':_ -> do lexNewline str <- lexQQBody return ('\n':str) + [] -> fail "Unexpected end of input while lexing quasi-quoter" _ -> do str <- lexWhile (not . (`elem` "\\|\n")) rest <- lexQQBody return (str++rest) @@ -1174,8 +1186,8 @@ Equals -> "=" Backslash -> "\\" Bar -> "|" - LeftArrow -> "->" - RightArrow -> "<-" + LeftArrow -> "<-" + RightArrow -> "->" At -> "@" Tilde -> "~" DoubleArrow -> "=>" diff -ruN haskell-src-exts-1.9.0/src/Language/Haskell/Exts/ParseSyntax.hs haskell-src-exts/src/Language/Haskell/Exts/ParseSyntax.hs --- haskell-src-exts-1.9.0/src/Language/Haskell/Exts/ParseSyntax.hs 2010-04-11 03:42:41.000000000 -0700 +++ haskell-src-exts/src/Language/Haskell/Exts/ParseSyntax.hs 2010-12-15 09:33:58.833862849 -0800 @@ -74,6 +74,7 @@ -- ^ | XPcdata l String -- ^ PCDATA | XExpTag l (PExp l) -- ^ <% ... %> + | XChildTag l [PExp l] -- ^ <%> ... | XRPats l [PExp l] -- ^ <[ ... ]> -- Pragmas @@ -152,6 +153,7 @@ XETag l xn xas me -> l XPcdata l s -> l XExpTag l e -> l + XChildTag l es -> l XRPats l es -> l CorePragma l s e -> l @@ -216,6 +218,8 @@ XETag l xn xas me -> XETag (f l) xn xas me XPcdata l s -> XPcdata (f l) s XExpTag l e -> XExpTag (f l) e + XChildTag l es -> XChildTag (f l) es + XRPats l es -> XRPats (f l) es CorePragma l s e -> CorePragma (f l) s e SCCPragma l s e -> SCCPragma (f l) s e @@ -277,6 +281,8 @@ XETag l xn xas me -> XETag (f l) (fmap f xn) (map (fmap f) xas) (fmap (fmap f) me) XPcdata l s -> XPcdata (f l) s XExpTag l e -> XExpTag (f l) (fmap f e) + XChildTag l es -> XChildTag (f l) (map (fmap f) es) + XRPats l es -> XRPats (f l) (map (fmap f) es) CorePragma l s e -> CorePragma (f l) s (fmap f e) SCCPragma l s e -> SCCPragma (f l) s (fmap f e) diff -ruN haskell-src-exts-1.9.0/src/Language/Haskell/Exts/ParseUtils.hs haskell-src-exts/src/Language/Haskell/Exts/ParseUtils.hs --- haskell-src-exts-1.9.0/src/Language/Haskell/Exts/ParseUtils.hs 2010-04-11 03:42:41.000000000 -0700 +++ haskell-src-exts/src/Language/Haskell/Exts/ParseUtils.hs 2010-12-15 09:33:59.186714704 -0800 @@ -37,7 +37,8 @@ , checkRevDecls -- [Decl] -> P [Decl] , checkRevClsDecls -- [ClassDecl] -> P [ClassDecl] , checkRevInstDecls -- [InstDecl] -> P [InstDecl] - , checkDataOrNew -- DataOrNew -> [a] -> P () + , checkDataOrNew -- DataOrNew -> [QualConDecl] -> P () + , checkDataOrNewG -- DataOrNew -> [GadtDecl] -> P () , checkSimpleType -- PType -> P (Name, [TyVarBind]) , checkSigVar -- PExp -> P Name , getGConName -- S.Exp -> P QName @@ -584,6 +585,8 @@ XPcdata l p -> return $ S.XPcdata l p XExpTag l e -> do e <- checkExpr e return $ S.XExpTag l e + XChildTag l es -> do es <- mapM checkExpr es + return $ S.XChildTag l es -- Pragmas CorePragma l s e -> check1Expr e (S.CorePragma l s) SCCPragma l s e -> check1Expr e (S.SCCPragma l s) @@ -848,11 +851,19 @@ -- Check that newtype declarations have -- the right number (1) of constructors -checkDataOrNew :: DataOrNew L -> [a] -> P () -checkDataOrNew (NewType _) [x] = return () +checkDataOrNew :: DataOrNew L -> [QualConDecl L] -> P () checkDataOrNew (DataType _) _ = return () +checkDataOrNew (NewType _) [QualConDecl _ _ _ x] = cX x >> return () + where cX (ConDecl _ _ [_]) = return () + cX (RecDecl _ _ [_]) = return () + cX _ = fail "newtype declaration constructor must have exactly one parameter." checkDataOrNew _ _ = fail "newtype declaration must have exactly one constructor." +checkDataOrNewG :: DataOrNew L -> [GadtDecl L] -> P () +checkDataOrNewG (DataType _) _ = return () +checkDataOrNewG (NewType _) [x] = return () +checkDataOrNewG _ _ = fail "newtype declaration must have exactly one constructor." + checkSimpleType :: PType L -> P (DeclHead L) checkSimpleType t = checkSimple "test" t [] diff -ruN haskell-src-exts-1.9.0/src/Language/Haskell/Exts/Pretty.hs haskell-src-exts/src/Language/Haskell/Exts/Pretty.hs --- haskell-src-exts-1.9.0/src/Language/Haskell/Exts/Pretty.hs 2010-04-11 03:42:41.000000000 -0700 +++ haskell-src-exts/src/Language/Haskell/Exts/Pretty.hs 2010-12-15 09:34:00.331211516 -0800 @@ -334,8 +334,8 @@ markLine loc $ mySep ( [pretty don, ppContext context, pretty name] ++ map pretty nameList) - <+> (myVcat (zipWith (<+>) (equals : repeat (char '|')) - (map pretty constrList)) + <+> (myVcat (zipWith (<+>) (equals : repeat (char '|')) + (map pretty constrList)) $$$ ppDeriving derives) pretty (GDataDecl loc don context name nameList optkind gadtList derives) = @@ -344,7 +344,7 @@ mySep ( [pretty don, ppContext context, pretty name] ++ map pretty nameList ++ ppOptKind optkind ++ [text "where"]) $$$ ppBody classIndent (map pretty gadtList) - $$$ ppDeriving derives + $$$ ppBody letIndent [ppDeriving derives] pretty (TypeFamDecl loc name nameList optkind) = blankline $ @@ -613,7 +613,7 @@ instance Pretty RuleVar where pretty (RuleVar n) = pretty n - pretty (TypedRuleVar n t) = mySep [pretty n, text "::", pretty t] + pretty (TypedRuleVar n t) = parens $ mySep [pretty n, text "::", pretty t] instance Pretty ModulePragma where pretty (LanguagePragma _ ns) = @@ -718,11 +718,11 @@ ---------------------------- Kinds ---------------------------- instance Pretty Kind where - pretty KindStar = text "*" - pretty KindBang = text "!" - pretty (KindFn a b) = myFsep [pretty a, text "->", pretty b] - pretty (KindParen k) = parens $ pretty k - pretty (KindVar n) = pretty n + prettyPrec _ KindStar = text "*" + prettyPrec _ KindBang = text "!" + prettyPrec n (KindFn a b) = parensIf (n > 0) $ myFsep [prettyPrec 1 a, text "->", pretty b] + prettyPrec _ (KindParen k) = parens $ pretty k + prettyPrec _ (KindVar n) = pretty n ppOptKind :: Maybe Kind -> [Doc] ppOptKind Nothing = [] @@ -763,28 +763,28 @@ instance Pretty Exp where prettyPrec _ (Lit l) = pretty l -- lambda stuff - prettyPrec p (InfixApp a op b) = parensIf (p > 0) $ myFsep [pretty a, pretty op, pretty b] - prettyPrec _ (NegApp e) = parens $ myFsep [char '-', pretty e] - prettyPrec p (App a b) = parensIf (p > 0) $ myFsep [pretty a, prettyPrec 1 b] - prettyPrec p (Lambda _loc expList ppBody) = parensIf (p > 0) $ myFsep $ - char '\\' : map pretty expList ++ [text "->", pretty ppBody] + prettyPrec p (InfixApp a op b) = parensIf (p > 2) $ myFsep [prettyPrec 2 a, pretty op, prettyPrec 1 b] + prettyPrec p (NegApp e) = parensIf (p > 0) $ char '-' <> prettyPrec 4 e + prettyPrec p (App a b) = parensIf (p > 3) $ myFsep [prettyPrec 3 a, prettyPrec 4 b] + prettyPrec p (Lambda _loc patList ppBody) = parensIf (p > 1) $ myFsep $ + char '\\' : map pretty patList ++ [text "->", pretty ppBody] -- keywords -- two cases for lets prettyPrec p (Let (BDecls declList) letBody) = - parensIf (p > 0) $ ppLetExp declList letBody + parensIf (p > 1) $ ppLetExp declList letBody prettyPrec p (Let (IPBinds bindList) letBody) = - parensIf (p > 0) $ ppLetExp bindList letBody + parensIf (p > 1) $ ppLetExp bindList letBody - prettyPrec p (If cond thenexp elsexp) = parensIf (p > 0) $ + prettyPrec p (If cond thenexp elsexp) = parensIf (p > 1) $ myFsep [text "if", pretty cond, text "then", pretty thenexp, text "else", pretty elsexp] - prettyPrec p (Case cond altList) = parensIf (p > 0) $ + prettyPrec p (Case cond altList) = parensIf (p > 1) $ myFsep [text "case", pretty cond, text "of"] $$$ ppBody caseIndent (map pretty altList) - prettyPrec p (Do stmtList) = parensIf (p > 0) $ + prettyPrec p (Do stmtList) = parensIf (p > 1) $ text "do" $$$ ppBody doIndent (map pretty stmtList) - prettyPrec p (MDo stmtList) = parensIf (p > 0) $ + prettyPrec p (MDo stmtList) = parensIf (p > 1) $ text "mdo" $$$ ppBody doIndent (map pretty stmtList) -- Constructors & Vars prettyPrec _ (Var name) = pretty name @@ -838,6 +838,9 @@ prettyPrec _ (XPcdata s) = text s prettyPrec _ (XExpTag e) = myFsep $ [text "<%", pretty e, text "%>"] + prettyPrec _ (XChildTag _ cs) = + myFsep $ text "<%>" : map pretty cs ++ [text ""] + -- Pragmas prettyPrec p (CorePragma s e) = myFsep $ map text ["{-# CORE", show s, "#-}"] ++ [pretty e] prettyPrec _ (SCCPragma s e) = myFsep $ map text ["{-# SCC", show s, "#-}"] ++ [pretty e] @@ -846,7 +849,7 @@ int a, char ':', int b, char '-', int c, char ':', int d, text "#-}", pretty e] -- Arrows - prettyPrec p (Proc _ pat e) = parensIf (p > 0) $ myFsep $ [text "proc", pretty pat, text "->", pretty e] + prettyPrec p (Proc _ pat e) = parensIf (p > 1) $ myFsep $ [text "proc", pretty pat, text "->", pretty e] prettyPrec p (LeftArrApp l r) = parensIf (p > 0) $ myFsep $ [pretty l, text "-<", pretty r] prettyPrec p (RightArrApp l r) = parensIf (p > 0) $ myFsep $ [pretty l, text ">-", pretty r] prettyPrec p (LeftArrHighApp l r) = parensIf (p > 0) $ myFsep $ [pretty l, text "-<<", pretty r] @@ -889,25 +892,25 @@ instance Pretty Pat where prettyPrec _ (PVar name) = pretty name prettyPrec _ (PLit lit) = pretty lit - prettyPrec _ (PNeg p) = myFsep [char '-', pretty p] + prettyPrec p (PNeg pat) = parensIf (p > 0) $ myFsep [char '-', pretty pat] prettyPrec p (PInfixApp a op b) = parensIf (p > 0) $ - myFsep [pretty a, pretty (QConOp op), pretty b] - prettyPrec p (PApp n ps) = parensIf (p > 1) $ - myFsep (pretty n : map pretty ps) + myFsep [prettyPrec 1 a, pretty (QConOp op), prettyPrec 1 b] + prettyPrec p (PApp n ps) = parensIf (p > 1 && not (null ps)) $ + myFsep (pretty n : map (prettyPrec 2) ps) prettyPrec _ (PTuple ps) = parenList . map pretty $ ps prettyPrec _ (PList ps) = bracketList . punctuate comma . map pretty $ ps - prettyPrec _ (PParen p) = parens . pretty $ p + prettyPrec _ (PParen pat) = parens . pretty $ pat prettyPrec _ (PRec c fields) = pretty c <> (braceList . map pretty $ fields) -- special case that would otherwise be buggy prettyPrec _ (PAsPat name (PIrrPat pat)) = - myFsep [pretty name <> char '@', char '~' <> pretty pat] + myFsep [pretty name <> char '@', char '~' <> prettyPrec 2 pat] prettyPrec _ (PAsPat name pat) = - hcat [pretty name, char '@', pretty pat] + hcat [pretty name, char '@', prettyPrec 2 pat] prettyPrec _ PWildCard = char '_' - prettyPrec _ (PIrrPat pat) = char '~' <> pretty pat - prettyPrec _ (PatTypeSig _pos pat ty) = + prettyPrec _ (PIrrPat pat) = char '~' <> prettyPrec 2 pat + prettyPrec p (PatTypeSig _pos pat ty) = parensIf (p > 0) $ myFsep [pretty pat, text "::", pretty ty] prettyPrec p (PViewPat e pat) = parensIf (p > 0) $ myFsep [pretty e, text "->", pretty pat] @@ -934,7 +937,7 @@ prettyPrec _ (PExplTypeArg qn t) = myFsep [pretty qn, text "{|", pretty t, text "|}"] -- BangPatterns - prettyPrec _ (PBangPat p) = text "!" <> pretty p + prettyPrec _ (PBangPat pat) = text "!" <> prettyPrec 2 pat instance Pretty PXAttr where pretty (PXAttr n p) = @@ -1564,6 +1567,8 @@ pretty (P.XPcdata _ s) = text s pretty (P.XExpTag _ e) = myFsep $ [text "<%", pretty e, text "%>"] + pretty (P.XChildTag _ es) = + myFsep $ text "<%>" : map pretty es ++ [text ""] pretty (P.CorePragma _ s e) = myFsep $ map text ["{-# CORE", show s, "#-}"] ++ [pretty e] pretty (P.SCCPragma _ s e) = myFsep $ map text ["{-# SCC", show s, "#-}"] ++ [pretty e] pretty (P.GenPragma _ s (a,b) (c,d) e) = diff -ruN haskell-src-exts-1.9.0/src/Language/Haskell/Exts/Syntax.hs haskell-src-exts/src/Language/Haskell/Exts/Syntax.hs --- haskell-src-exts-1.9.0/src/Language/Haskell/Exts/Syntax.hs 2010-04-11 03:42:41.000000000 -0700 +++ haskell-src-exts/src/Language/Haskell/Exts/Syntax.hs 2010-12-15 09:34:01.469714171 -0800 @@ -639,6 +639,7 @@ -- ^ empty xml element, with attributes | XPcdata String -- ^ PCDATA child element | XExpTag Exp -- ^ escaped haskell expression inside xml + | XChildTag SrcLoc [Exp] -- ^ children of an xml element -- Pragmas | CorePragma String Exp -- ^ CORE pragma diff -ruN haskell-src-exts-1.9.0/src/Language/Haskell/Exts.hs haskell-src-exts/src/Language/Haskell/Exts.hs --- haskell-src-exts-1.9.0/src/Language/Haskell/Exts.hs 2010-04-11 03:42:41.000000000 -0700 +++ haskell-src-exts/src/Language/Haskell/Exts.hs 2010-12-15 09:34:01.641806295 -0800 @@ -29,6 +29,7 @@ , parseFileWithComments , parseFileContents , parseFileContentsWithMode + , parseFileContentsWithExts , parseFileContentsWithComments -- * Read extensions declared in LANGUAGE pragmas , readExtensions diff -ruN haskell-src-exts-1.9.0/Test/examples/ArrowLayout.hs haskell-src-exts/Test/examples/ArrowLayout.hs --- haskell-src-exts-1.9.0/Test/examples/ArrowLayout.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/ArrowLayout.hs 2010-12-15 09:33:35.841712677 -0800 @@ -0,0 +1,7 @@ +{-# LANGUAGE Arrows #-} +module ArrowLayout where + +exp = proc () -> do + rec let e = 1 + i + i <- integral -< e + returnA -< e diff -ruN haskell-src-exts-1.9.0/Test/examples/Attributes.hs haskell-src-exts/Test/examples/Attributes.hs --- haskell-src-exts-1.9.0/Test/examples/Attributes.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/Attributes.hs 2010-12-15 09:33:36.577718942 -0800 @@ -0,0 +1,2181 @@ +{- | + Module : Data.GraphViz.Attributes + Description : Definition of the Graphviz attributes. + Copyright : (c) Matthew Sackman, Ivan Lazar Miljenovic + License : 3-Clause BSD-style + Maintainer : Ivan.Miljenovic@gmail.com + + This module defines the various attributes that different parts of + a Graphviz graph can have. These attributes are based on the + documentation found at: + + + For more information on usage, etc. please see that document. + + A summary of known current constraints\/limitations\/differences: + + * There might still be a few cases where quotes are still not + escaped/parsed correctly; if you find such a situation, please + let me know; however, you should be able to use 'String' values + directly without having to worry about when quotes are required + or extra escaping of quote characters as 'PrintDot' and + 'ParseDot' instances for 'String' should take care of that + for you. + + * Note that for an edge, in /Dot/ parlance if the edge goes from + /A/ to /B/, then /A/ is the tail node and /B/ is the head node + (since /A/ is at the tail end of the arrow). + + * ColorList and PointfList are defined as actual lists (but + 'LayerList' is not). Note that for the Color 'Attribute' for + node values, only a single Color is valid; edges are allowed + multiple colors with one spline/arrow per color in the list (but + you must have at least one 'Color' in the list). This might be + changed in future. + + * Style is implemented as a list of 'StyleItem' values; note that + empty lists are not allowed. + + * A lot of values have a possible value of @none@. These now + have custom constructors. In fact, most constructors have been + expanded upon to give an idea of what they represent rather than + using generic terms. + + * @PointF@ and 'Point' have been combined, and feature support for pure + 'Int'-based co-ordinates as well as 'Double' ones (i.e. no floating + point-only points for Point). The optional '!' and third value + for Point are not available. + + * 'Rect' uses two 'Point' values to denote the lower-left and + top-right corners. + + * The two 'LabelLoc' attributes have been combined. + + * The defined 'LayerSep' is not used to parse 'LayerRange' or + 'LayerList'; the default (@[' ', ':', '\t']@) is instead used. + + * @SplineType@ has been replaced with @['Spline']@. + + * Only polygon-based 'Shape's are available. + + * 'PortPos' only has the 'CompassPoint' option, not + @PortName[:CompassPoint]@ (since record shapes aren't allowed, + and parsing HTML-like labels could be problematic). + + * Not every 'Attribute' is fully documented/described. However, + all those which have specific allowed values should be covered. + + * Deprecated 'Overlap' algorithms are not defined. + + * The global @Orientation@ attribute is not defined, as it is + difficult to distinguish from the node-based 'Orientation' + 'Attribute'; also, its behaviour is duplicated by 'Rotate'. + + -} +module Data.GraphViz.Attributes + ( -- * The actual /Dot/ attributes. + Attribute(..) + , Attributes + -- ** Validity functions on @Attribute@ values. + , usedByGraphs + , usedBySubGraphs + , usedByClusters + , usedByNodes + , usedByEdges + -- * Value types for @Attribute@s. + , EscString + , URL(..) + , ArrowType(..) + , AspectType(..) + , Rect(..) + , ClusterMode(..) + , DirType(..) + , DEConstraints(..) + , DPoint(..) + , ModeType(..) + , Model(..) + , Label(..) + , Point(..) + , Overlap(..) + , LayerRange(..) + , LayerID(..) + , LayerList(..) + , OutputMode(..) + , Pack(..) + , PackMode(..) + , Pos(..) + , EdgeType(..) + , PageDir(..) + , Spline(..) + , QuadType(..) + , Root(..) + , RankType(..) + , RankDir(..) + , Shape(..) + , SmoothType(..) + , StartType(..) + , STStyle(..) + , StyleItem(..) + , StyleName(..) + , PortPos(..) + , CompassPoint(..) + , ViewPort(..) + , FocusType(..) + , VerticalPlacement(..) + , ScaleType(..) + , Justification(..) + , Ratios(..) + , module Data.GraphViz.Attributes.Colors + -- * Types representing the Dot grammar for @ArrowType@. + , ArrowShape(..) + , ArrowModifier(..) + , ArrowFill(..) + , ArrowSide(..) + -- ** Default @ArrowType@ aliases. + -- *** The 9 primitive @ArrowShape@s. + , box + , crow + , diamond + , dotArrow + , inv + , noArrow + , normal + , tee + , vee + -- *** 5 derived Arrows. + , oDot + , invDot + , invODot + , oBox + , oDiamond + -- *** 5 supported cases for backwards compatibility + , eDiamond + , openArr + , halfOpen + , emptyArr + , invEmpty + -- ** @ArrowModifier@ instances + , noMods + , openMod + -- * Other exported functions\/values + , defLayerSep + , notLayerSep + ) where + +import Data.GraphViz.Attributes.Colors +import Data.GraphViz.Util +import Data.GraphViz.Parsing +import Data.GraphViz.Printing + +import Data.Char(toLower) +import Data.Maybe(isJust) +import Control.Arrow(first) +import Control.Monad(liftM, liftM2) + +-- ----------------------------------------------------------------------------- + +{- | + + These attributes have been implemented in a /permissive/ manner: + that is, rather than split them up based on which type of value + they are allowed, they have all been included in the one data type, + with functions to determine if they are indeed valid for what + they're being applied to. + + To interpret the /Valid for/ listings: + + [@G@] Valid for Graphs. + + [@C@] Valid for Clusters. + + [@S@] Valid for Sub-Graphs (and also Clusters). + + [@N@] Valid for Nodes. + + [@E@] Valid for Edges. + + The /Default/ listings are those that the various Graphviz commands + use if that 'Attribute' isn't specified (in cases where this is + /none/, this is equivalent to a 'Nothing' value; that is, no value + is used). The /Parsing Default/ listings represent what value is + used (i.e. corresponds to 'True') when the 'Attribute' name is + listed on its own in /Dot/ source code. +-} +data Attribute + = Damping Double -- ^ /Valid for/: G; /Default/: @0.99@; /Minimum/: @0.0@; /Notes/: neato only + | K Double -- ^ /Valid for/: GC; /Default/: @0.3@; /Minimum/: @0@; /Notes/: sfdp, fdp only + | URL URL -- ^ /Valid for/: ENGC; /Default/: none; /Notes/: svg, postscript, map only + | ArrowHead ArrowType -- ^ /Valid for/: E; /Default/: @'normal'@ + | ArrowSize Double -- ^ /Valid for/: E; /Default/: @1.0@; /Minimum/: @0.0@ + | ArrowTail ArrowType -- ^ /Valid for/: E; /Default/: @'normal'@ + | Aspect AspectType -- ^ /Valid for/: G; /Notes/: dot only + | Bb Rect -- ^ /Valid for/: G; /Notes/: write only + | BgColor Color -- ^ /Valid for/: GC; /Default/: X11Color 'Transparent' + | Center Bool -- ^ /Valid for/: G; /Default/: @'False'@; /Parsing Default/: 'True' + | Charset String -- ^ /Valid for/: G; /Default/: @\"UTF-8\"@ + | ClusterRank ClusterMode -- ^ /Valid for/: G; /Default/: @'Local'@; /Notes/: dot only + | ColorScheme ColorScheme -- ^ /Valid for/: ENCG; /Default/: @'X11'@ + | Color [Color] -- ^ /Valid for/: ENC; /Default/: @X11Color 'Black'@ + | Comment String -- ^ /Valid for/: ENG; /Default/: @\"\"@ + | Compound Bool -- ^ /Valid for/: G; /Default/: @'False'@; /Parsing Default/: 'True'; /Notes/: dot only + | Concentrate Bool -- ^ /Valid for/: G; /Default/: @'False'@; /Parsing Default/: 'True' + | Constraint Bool -- ^ /Valid for/: E; /Default/: @'True'@; /Parsing Default/: 'True'; /Notes/: dot only + | Decorate Bool -- ^ /Valid for/: E; /Default/: @'False'@; /Parsing Default/: 'True' + | DefaultDist Double -- ^ /Valid for/: G; /Default/: @1+(avg. len)*sqrt(|V|)@; /Minimum/: @epsilon@; /Notes/: neato only + | Dimen Int -- ^ /Valid for/: G; /Default/: @2@; /Minimum/: @2@; /Notes/: sfdp, fdp, neato only + | Dim Int -- ^ /Valid for/: G; /Default/: @2@; /Minimum/: @2@; /Notes/: sfdp, fdp, neato only + | Dir DirType -- ^ /Valid for/: E; /Default/: @'Forward'@ (directed), @'NoDir'@ (undirected) + | DirEdgeConstraints DEConstraints -- ^ /Valid for/: G; /Default/: @'NoConstraints'@; /Parsing Default/: 'EdgeConstraints'; /Notes/: neato only + | Distortion Double -- ^ /Valid for/: N; /Default/: @0.0@; /Minimum/: @-100.0@ + | DPI Double -- ^ /Valid for/: G; /Default/: @96.0@, @0.0@; /Notes/: svg, bitmap output only; \"resolution\" is a synonym + | EdgeURL URL -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: svg, map only + | EdgeTarget EscString -- ^ /Valid for/: E; /Default/: none; /Notes/: svg, map only + | EdgeTooltip EscString -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: svg, cmap only + | Epsilon Double -- ^ /Valid for/: G; /Default/: @.0001 * # nodes@ (@mode == 'KK'@), @.0001@ (@mode == 'Major'@); /Notes/: neato only + | ESep DPoint -- ^ /Valid for/: G; /Default/: @+3@; /Notes/: not dot + | FillColor Color -- ^ /Valid for/: NC; /Default/: @X11Color 'LightGray'@ (nodes), @X11Color 'Black'@ (clusters) + | FixedSize Bool -- ^ /Valid for/: N; /Default/: @'False'@; /Parsing Default/: 'True' + | FontColor Color -- ^ /Valid for/: ENGC; /Default/: @X11Color 'Black'@ + | FontName String -- ^ /Valid for/: ENGC; /Default/: @\"Times-Roman\"@ + | FontNames String -- ^ /Valid for/: G; /Default/: @\"\"@; /Notes/: svg only + | FontPath String -- ^ /Valid for/: G; /Default/: system-dependent + | FontSize Double -- ^ /Valid for/: ENGC; /Default/: @14.0@; /Minimum/: @1.0@ + | Group String -- ^ /Valid for/: N; /Default/: @\"\"@; /Notes/: dot only + | HeadURL URL -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: svg, map only + | HeadClip Bool -- ^ /Valid for/: E; /Default/: @'True'@; /Parsing Default/: 'True' + | HeadLabel Label -- ^ /Valid for/: E; /Default/: @\"\"@ + | HeadPort PortPos -- ^ /Valid for/: E; /Default/: @'PP' 'CenterPoint'@ + | HeadTarget EscString -- ^ /Valid for/: E; /Default/: none; /Notes/: svg, map only + | HeadTooltip EscString -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: svg, cmap only + | Height Double -- ^ /Valid for/: N; /Default/: @0.5@; /Minimum/: @0.02@ + | ID Label -- ^ /Valid for/: GNE; /Default/: @\"\"@; /Notes/: svg, postscript, map only + | Image String -- ^ /Valid for/: N; /Default/: @\"\"@ + | ImageScale ScaleType -- ^ /Valid for/: N; /Default/: @'NoScale'@; /Parsing Default/: 'UniformScale' + | LabelURL URL -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: svg, map only + | LabelAngle Double -- ^ /Valid for/: E; /Default/: @-25.0@; /Minimum/: @-180.0@ + | LabelDistance Double -- ^ /Valid for/: E; /Default/: @1.0@; /Minimum/: @0.0@ + | LabelFloat Bool -- ^ /Valid for/: E; /Default/: @'False'@; /Parsing Default/: 'True' + | LabelFontColor Color -- ^ /Valid for/: E; /Default/: @X11Color 'Black'@ + | LabelFontName String -- ^ /Valid for/: E; /Default/: @\"Times-Roman\"@ + | LabelFontSize Double -- ^ /Valid for/: E; /Default/: @14.0@; /Minimum/: @1.0@ + | LabelJust Justification -- ^ /Valid for/: GC; /Default/: @'JCenter'@ + | LabelLoc VerticalPlacement -- ^ /Valid for/: GCN; /Default/: @'VTop'@ (clusters), @'VBottom'@ (root graphs), @'VCenter'@ (nodes) + | LabelTarget EscString -- ^ /Valid for/: E; /Default/: none; /Notes/: svg, map only + | LabelTooltip EscString -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: svg, cmap only + | Label Label -- ^ /Valid for/: ENGC; /Default/: @'StrLabel' \"\N\"@ (nodes), @'StrLabel' \"\"@ (otherwise) + | Landscape Bool -- ^ /Valid for/: G; /Default/: @'False'@; /Parsing Default/: 'True' + | LayerSep String -- ^ /Valid for/: G; /Default/: @\" :\t\"@ + | Layers LayerList -- ^ /Valid for/: G; /Default/: @\"\"@ + | Layer LayerRange -- ^ /Valid for/: EN; /Default/: @\"\"@ + | Layout String -- ^ /Valid for/: G; /Default/: @\"\"@ + | Len Double -- ^ /Valid for/: E; /Default/: @1.0@ (neato), @0.3@ (fdp); /Notes/: fdp, neato only + | LevelsGap Double -- ^ /Valid for/: G; /Default/: @0.0@; /Notes/: neato only + | Levels Int -- ^ /Valid for/: G; /Default/: @MAXINT@; /Minimum/: @0@; /Notes/: sfdp only + | LHead String -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: dot only + | LPos Point -- ^ /Valid for/: EGC; /Notes/: write only + | LTail String -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: dot only + | Margin DPoint -- ^ /Valid for/: NG; /Default/: device-dependent + | MaxIter Int -- ^ /Valid for/: G; /Default/: @100 * # nodes@ (@mode == 'KK'@), @200@ (@mode == 'Major'@), @600@ (fdp); /Notes/: fdp, neato only + | MCLimit Double -- ^ /Valid for/: G; /Default/: @1.0@; /Notes/: dot only + | MinDist Double -- ^ /Valid for/: G; /Default/: @1.0@; /Minimum/: @0.0@; /Notes/: circo only + | MinLen Int -- ^ /Valid for/: E; /Default/: @1@; /Minimum/: @0@; /Notes/: dot only + | Model Model -- ^ /Valid for/: G; /Default/: @'ShortPath'@; /Notes/: neato only + | Mode ModeType -- ^ /Valid for/: G; /Default/: @'Major'@; /Notes/: neato only + | Mosek Bool -- ^ /Valid for/: G; /Default/: @'False'@; /Parsing Default/: 'True'; /Notes/: neato only; requires the Mosek software + | NodeSep Double -- ^ /Valid for/: G; /Default/: @0.25@; /Minimum/: @0.02@; /Notes/: dot only + | NoJustify Bool -- ^ /Valid for/: GCNE; /Default/: @'False'@; /Parsing Default/: 'True' + | Normalize Bool -- ^ /Valid for/: G; /Default/: @'False'@; /Parsing Default/: 'True'; /Notes/: not dot + | Nslimit1 Double -- ^ /Valid for/: G; /Notes/: dot only + | Nslimit Double -- ^ /Valid for/: G; /Notes/: dot only + | Ordering String -- ^ /Valid for/: G; /Default/: @\"\"@; /Notes/: dot only + | Orientation Double -- ^ /Valid for/: N; /Default/: @0.0@; /Minimum/: @360.0@ + | OutputOrder OutputMode -- ^ /Valid for/: G; /Default/: @'BreadthFirst'@ + | OverlapScaling Double -- ^ /Valid for/: G; /Default/: @-4@; /Minimum/: @-1.0e10@; /Notes/: prism only + | Overlap Overlap -- ^ /Valid for/: G; /Default/: @'KeepOverlaps'@; /Parsing Default/: 'KeepOverlaps'; /Notes/: not dot + | PackMode PackMode -- ^ /Valid for/: G; /Default/: @'PackNode'@; /Notes/: not dot + | Pack Pack -- ^ /Valid for/: G; /Default/: @'False'@; /Parsing Default/: 'DoPack'; /Notes/: not dot + | Pad DPoint -- ^ /Valid for/: G; /Default/: @'DVal' 0.0555@ (4 points) + | PageDir PageDir -- ^ /Valid for/: G; /Default/: @'BL'@ + | Page Point -- ^ /Valid for/: G + | PenColor Color -- ^ /Valid for/: C; /Default/: @X11Color 'Black'@ + | PenWidth Double -- ^ /Valid for/: CNE; /Default/: @1.0@; /Minimum/: @0.0@ + | Peripheries Int -- ^ /Valid for/: NC; /Default/: shape default (nodes), @1@ (clusters); /Minimum/: 0 + | Pin Bool -- ^ /Valid for/: N; /Default/: @'False'@; /Parsing Default/: 'True'; /Notes/: fdp, neato only + | Pos Pos -- ^ /Valid for/: EN + | QuadTree QuadType -- ^ /Valid for/: G; /Default/: @'NormalQT'@; /Parsing Default/: 'NormalQT'; /Notes/: sfdp only + | Quantum Double -- ^ /Valid for/: G; /Default/: @0.0@; /Minimum/: @0.0@ + | RankDir RankDir -- ^ /Valid for/: G; /Default/: @'TB'@; /Notes/: dot only + | RankSep Double -- ^ /Valid for/: G; /Default/: @0.5@ (dot), @1.0@ (twopi); /Minimum/: 0.02; /Notes/: twopi, dot only + | Rank RankType -- ^ /Valid for/: S; /Notes/: dot only + | Ratio Ratios -- ^ /Valid for/: G + | Rects Rect -- ^ /Valid for/: N; /Notes/: write only + | Regular Bool -- ^ /Valid for/: N; /Default/: @'False'@; /Parsing Default/: 'True' + | ReMinCross Bool -- ^ /Valid for/: G; /Default/: @'False'@; /Parsing Default/: 'True'; /Notes/: dot only + | RepulsiveForce Double -- ^ /Valid for/: G; /Default/: @1.0@; /Minimum/: @0.0@; /Notes/: sfdp only + | Root Root -- ^ /Valid for/: GN; /Default/: @'NodeName' \"\"@ (graphs), @'NotCentral'@ (nodes); /Parsing Default/: 'IsCentral'; /Notes/: circo, twopi only + | Rotate Int -- ^ /Valid for/: G; /Default/: @0@ + | SameHead String -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: dot only + | SameTail String -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: dot only + | SamplePoints Int -- ^ /Valid for/: N; /Default/: @8@ (output), @20@ (overlap and image maps) + | SearchSize Int -- ^ /Valid for/: G; /Default/: @30@; /Notes/: dot only + | Sep DPoint -- ^ /Valid for/: G; /Default/: @+4@; /Notes/: not dot + | ShapeFile String -- ^ /Valid for/: N; /Default/: @\"\"@ + | Shape Shape -- ^ /Valid for/: N; /Default/: @'Ellipse'@ + | ShowBoxes Int -- ^ /Valid for/: ENG; /Default/: @0@; /Minimum/: @0@; /Notes/: dot only + | Sides Int -- ^ /Valid for/: N; /Default/: @4@; /Minimum/: @0@ + | Size Point -- ^ /Valid for/: G + | Skew Double -- ^ /Valid for/: N; /Default/: @0.0@; /Minimum/: @-100.0@ + | Smoothing SmoothType -- ^ /Valid for/: G; /Default/: @'NoSmooth'@; /Notes/: sfdp only + | SortV Int -- ^ /Valid for/: GCN; /Default/: @0@; /Minimum/: @0@ + | Splines EdgeType -- ^ /Valid for/: G; /Parsing Default/: 'SplineEdges' + | Start StartType -- ^ /Valid for/: G; /Default/: @\"\"@; /Notes/: fdp, neato only + | StyleSheet String -- ^ /Valid for/: G; /Default/: @\"\"@; /Notes/: svg only + | Style [StyleItem] -- ^ /Valid for/: ENC + | TailURL URL -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: svg, map only + | TailClip Bool -- ^ /Valid for/: E; /Default/: @'True'@; /Parsing Default/: 'True' + | TailLabel Label -- ^ /Valid for/: E; /Default/: @\"\"@ + | TailPort PortPos -- ^ /Valid for/: E; /Default/: center + | TailTarget EscString -- ^ /Valid for/: E; /Default/: none; /Notes/: svg, map only + | TailTooltip EscString -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: svg, cmap only + | Target EscString -- ^ /Valid for/: ENGC; /Default/: none; /Notes/: svg, map only + | Tooltip EscString -- ^ /Valid for/: NEC; /Default/: @\"\"@; /Notes/: svg, cmap only + | TrueColor Bool -- ^ /Valid for/: G; /Parsing Default/: 'True'; /Notes/: bitmap output only + | Vertices [Point] -- ^ /Valid for/: N; /Notes/: write only + | ViewPort ViewPort -- ^ /Valid for/: G; /Default/: none + | VoroMargin Double -- ^ /Valid for/: G; /Default/: @0.05@; /Minimum/: @0.0@; /Notes/: not dot + | Weight Double -- ^ /Valid for/: E; /Default/: @1.0@; /Minimum/: @0@ (dot), @1@ (neato,fdp,sfdp) + | Width Double -- ^ /Valid for/: N; /Default/: @0.75@; /Minimum/: @0.01@ + | Z Double -- ^ /Valid for/: N; /Default/: @0.0@; /Minimum/: @-MAXFLOAT@, @-1000@ + deriving (Eq, Ord, Show, Read) + +type Attributes = [Attribute] + +instance PrintDot Attribute where + unqtDot (Damping v) = printField "Damping" v + unqtDot (K v) = printField "K" v + unqtDot (URL v) = printField "URL" v + unqtDot (ArrowHead v) = printField "arrowhead" v + unqtDot (ArrowSize v) = printField "arrowsize" v + unqtDot (ArrowTail v) = printField "arrowtail" v + unqtDot (Aspect v) = printField "aspect" v + unqtDot (Bb v) = printField "bb" v + unqtDot (BgColor v) = printField "bgcolor" v + unqtDot (Center v) = printField "center" v + unqtDot (Charset v) = printField "charset" v + unqtDot (ClusterRank v) = printField "clusterrank" v + unqtDot (ColorScheme v) = printField "colorscheme" v + unqtDot (Color v) = printField "color" v + unqtDot (Comment v) = printField "comment" v + unqtDot (Compound v) = printField "compound" v + unqtDot (Concentrate v) = printField "concentrate" v + unqtDot (Constraint v) = printField "constraint" v + unqtDot (Decorate v) = printField "decorate" v + unqtDot (DefaultDist v) = printField "defaultdist" v + unqtDot (Dimen v) = printField "dimen" v + unqtDot (Dim v) = printField "dim" v + unqtDot (Dir v) = printField "dir" v + unqtDot (DirEdgeConstraints v) = printField "diredgeconstraints" v + unqtDot (Distortion v) = printField "distortion" v + unqtDot (DPI v) = printField "dpi" v + unqtDot (EdgeURL v) = printField "edgeURL" v + unqtDot (EdgeTarget v) = printField "edgetarget" v + unqtDot (EdgeTooltip v) = printField "edgetooltip" v + unqtDot (Epsilon v) = printField "epsilon" v + unqtDot (ESep v) = printField "esep" v + unqtDot (FillColor v) = printField "fillcolor" v + unqtDot (FixedSize v) = printField "fixedsize" v + unqtDot (FontColor v) = printField "fontcolor" v + unqtDot (FontName v) = printField "fontname" v + unqtDot (FontNames v) = printField "fontnames" v + unqtDot (FontPath v) = printField "fontpath" v + unqtDot (FontSize v) = printField "fontsize" v + unqtDot (Group v) = printField "group" v + unqtDot (HeadURL v) = printField "headURL" v + unqtDot (HeadClip v) = printField "headclip" v + unqtDot (HeadLabel v) = printField "headlabel" v + unqtDot (HeadPort v) = printField "headport" v + unqtDot (HeadTarget v) = printField "headtarget" v + unqtDot (HeadTooltip v) = printField "headtooltip" v + unqtDot (Height v) = printField "height" v + unqtDot (ID v) = printField "id" v + unqtDot (Image v) = printField "image" v + unqtDot (ImageScale v) = printField "imagescale" v + unqtDot (LabelURL v) = printField "labelURL" v + unqtDot (LabelAngle v) = printField "labelangle" v + unqtDot (LabelDistance v) = printField "labeldistance" v + unqtDot (LabelFloat v) = printField "labelfloat" v + unqtDot (LabelFontColor v) = printField "labelfontcolor" v + unqtDot (LabelFontName v) = printField "labelfontname" v + unqtDot (LabelFontSize v) = printField "labelfontsize" v + unqtDot (LabelJust v) = printField "labeljust" v + unqtDot (LabelLoc v) = printField "labelloc" v + unqtDot (LabelTarget v) = printField "labeltarget" v + unqtDot (LabelTooltip v) = printField "labeltooltip" v + unqtDot (Label v) = printField "label" v + unqtDot (Landscape v) = printField "landscape" v + unqtDot (LayerSep v) = printField "layersep" v + unqtDot (Layers v) = printField "layers" v + unqtDot (Layer v) = printField "layer" v + unqtDot (Layout v) = printField "layout" v + unqtDot (Len v) = printField "len" v + unqtDot (LevelsGap v) = printField "levelsgap" v + unqtDot (Levels v) = printField "levels" v + unqtDot (LHead v) = printField "lhead" v + unqtDot (LPos v) = printField "lp" v + unqtDot (LTail v) = printField "ltail" v + unqtDot (Margin v) = printField "margin" v + unqtDot (MaxIter v) = printField "maxiter" v + unqtDot (MCLimit v) = printField "mclimit" v + unqtDot (MinDist v) = printField "mindist" v + unqtDot (MinLen v) = printField "minlen" v + unqtDot (Model v) = printField "model" v + unqtDot (Mode v) = printField "mode" v + unqtDot (Mosek v) = printField "mosek" v + unqtDot (NodeSep v) = printField "nodesep" v + unqtDot (NoJustify v) = printField "nojustify" v + unqtDot (Normalize v) = printField "normalize" v + unqtDot (Nslimit1 v) = printField "nslimit1" v + unqtDot (Nslimit v) = printField "nslimit" v + unqtDot (Ordering v) = printField "ordering" v + unqtDot (Orientation v) = printField "orientation" v + unqtDot (OutputOrder v) = printField "outputorder" v + unqtDot (OverlapScaling v) = printField "overlap_scaling" v + unqtDot (Overlap v) = printField "overlap" v + unqtDot (PackMode v) = printField "packmode" v + unqtDot (Pack v) = printField "pack" v + unqtDot (Pad v) = printField "pad" v + unqtDot (PageDir v) = printField "pagedir" v + unqtDot (Page v) = printField "page" v + unqtDot (PenColor v) = printField "pencolor" v + unqtDot (PenWidth v) = printField "penwidth" v + unqtDot (Peripheries v) = printField "peripheries" v + unqtDot (Pin v) = printField "pin" v + unqtDot (Pos v) = printField "pos" v + unqtDot (QuadTree v) = printField "quadtree" v + unqtDot (Quantum v) = printField "quantum" v + unqtDot (RankDir v) = printField "rankdir" v + unqtDot (RankSep v) = printField "ranksep" v + unqtDot (Rank v) = printField "rank" v + unqtDot (Ratio v) = printField "ratio" v + unqtDot (Rects v) = printField "rects" v + unqtDot (Regular v) = printField "regular" v + unqtDot (ReMinCross v) = printField "remincross" v + unqtDot (RepulsiveForce v) = printField "repulsiveforce" v + unqtDot (Root v) = printField "root" v + unqtDot (Rotate v) = printField "rotate" v + unqtDot (SameHead v) = printField "samehead" v + unqtDot (SameTail v) = printField "sametail" v + unqtDot (SamplePoints v) = printField "samplepoints" v + unqtDot (SearchSize v) = printField "searchsize" v + unqtDot (Sep v) = printField "sep" v + unqtDot (ShapeFile v) = printField "shapefile" v + unqtDot (Shape v) = printField "shape" v + unqtDot (ShowBoxes v) = printField "showboxes" v + unqtDot (Sides v) = printField "sides" v + unqtDot (Size v) = printField "size" v + unqtDot (Skew v) = printField "skew" v + unqtDot (Smoothing v) = printField "smoothing" v + unqtDot (SortV v) = printField "sortv" v + unqtDot (Splines v) = printField "splines" v + unqtDot (Start v) = printField "start" v + unqtDot (StyleSheet v) = printField "stylesheet" v + unqtDot (Style v) = printField "style" v + unqtDot (TailURL v) = printField "tailURL" v + unqtDot (TailClip v) = printField "tailclip" v + unqtDot (TailLabel v) = printField "taillabel" v + unqtDot (TailPort v) = printField "tailport" v + unqtDot (TailTarget v) = printField "tailtarget" v + unqtDot (TailTooltip v) = printField "tailtooltip" v + unqtDot (Target v) = printField "target" v + unqtDot (Tooltip v) = printField "tooltip" v + unqtDot (TrueColor v) = printField "truecolor" v + unqtDot (Vertices v) = printField "vertices" v + unqtDot (ViewPort v) = printField "viewport" v + unqtDot (VoroMargin v) = printField "voro_margin" v + unqtDot (Weight v) = printField "weight" v + unqtDot (Width v) = printField "width" v + unqtDot (Z v) = printField "z" v + + listToDot = unqtListToDot + +instance ParseDot Attribute where + parseUnqt = oneOf [ liftM Damping $ parseField "Damping" + , liftM K $ parseField "K" + , liftM URL $ parseFields ["URL", "href"] + , liftM ArrowHead $ parseField "arrowhead" + , liftM ArrowSize $ parseField "arrowsize" + , liftM ArrowTail $ parseField "arrowtail" + , liftM Aspect $ parseField "aspect" + , liftM Bb $ parseField "bb" + , liftM BgColor $ parseField "bgcolor" + , liftM Center $ parseFieldBool "center" + , liftM Charset $ parseField "charset" + , liftM ClusterRank $ parseField "clusterrank" + , liftM ColorScheme $ parseField "colorscheme" + , liftM Color $ parseField "color" + , liftM Comment $ parseField "comment" + , liftM Compound $ parseFieldBool "compound" + , liftM Concentrate $ parseFieldBool "concentrate" + , liftM Constraint $ parseFieldBool "constraint" + , liftM Decorate $ parseFieldBool "decorate" + , liftM DefaultDist $ parseField "defaultdist" + , liftM Dimen $ parseField "dimen" + , liftM Dim $ parseField "dim" + , liftM Dir $ parseField "dir" + , liftM DirEdgeConstraints $ parseFieldDef EdgeConstraints "diredgeconstraints" + , liftM Distortion $ parseField "distortion" + , liftM DPI $ parseFields ["dpi", "resolution"] + , liftM EdgeURL $ parseFields ["edgeURL", "edgehref"] + , liftM EdgeTarget $ parseField "edgetarget" + , liftM EdgeTooltip $ parseField "edgetooltip" + , liftM Epsilon $ parseField "epsilon" + , liftM ESep $ parseField "esep" + , liftM FillColor $ parseField "fillcolor" + , liftM FixedSize $ parseFieldBool "fixedsize" + , liftM FontColor $ parseField "fontcolor" + , liftM FontName $ parseField "fontname" + , liftM FontNames $ parseField "fontnames" + , liftM FontPath $ parseField "fontpath" + , liftM FontSize $ parseField "fontsize" + , liftM Group $ parseField "group" + , liftM HeadURL $ parseFields ["headURL", "headhref"] + , liftM HeadClip $ parseFieldBool "headclip" + , liftM HeadLabel $ parseField "headlabel" + , liftM HeadPort $ parseField "headport" + , liftM HeadTarget $ parseField "headtarget" + , liftM HeadTooltip $ parseField "headtooltip" + , liftM Height $ parseField "height" + , liftM ID $ parseField "id" + , liftM Image $ parseField "image" + , liftM ImageScale $ parseFieldDef UniformScale "imagescale" + , liftM LabelURL $ parseFields ["labelURL", "labelhref"] + , liftM LabelAngle $ parseField "labelangle" + , liftM LabelDistance $ parseField "labeldistance" + , liftM LabelFloat $ parseFieldBool "labelfloat" + , liftM LabelFontColor $ parseField "labelfontcolor" + , liftM LabelFontName $ parseField "labelfontname" + , liftM LabelFontSize $ parseField "labelfontsize" + , liftM LabelJust $ parseField "labeljust" + , liftM LabelLoc $ parseField "labelloc" + , liftM LabelTarget $ parseField "labeltarget" + , liftM LabelTooltip $ parseField "labeltooltip" + , liftM Label $ parseField "label" + , liftM Landscape $ parseFieldBool "landscape" + , liftM LayerSep $ parseField "layersep" + , liftM Layers $ parseField "layers" + , liftM Layer $ parseField "layer" + , liftM Layout $ parseField "layout" + , liftM Len $ parseField "len" + , liftM LevelsGap $ parseField "levelsgap" + , liftM Levels $ parseField "levels" + , liftM LHead $ parseField "lhead" + , liftM LPos $ parseField "lp" + , liftM LTail $ parseField "ltail" + , liftM Margin $ parseField "margin" + , liftM MaxIter $ parseField "maxiter" + , liftM MCLimit $ parseField "mclimit" + , liftM MinDist $ parseField "mindist" + , liftM MinLen $ parseField "minlen" + , liftM Model $ parseField "model" + , liftM Mode $ parseField "mode" + , liftM Mosek $ parseFieldBool "mosek" + , liftM NodeSep $ parseField "nodesep" + , liftM NoJustify $ parseFieldBool "nojustify" + , liftM Normalize $ parseFieldBool "normalize" + , liftM Nslimit1 $ parseField "nslimit1" + , liftM Nslimit $ parseField "nslimit" + , liftM Ordering $ parseField "ordering" + , liftM Orientation $ parseField "orientation" + , liftM OutputOrder $ parseField "outputorder" + , liftM OverlapScaling $ parseField "overlap_scaling" + , liftM Overlap $ parseFieldDef KeepOverlaps "overlap" + , liftM PackMode $ parseField "packmode" + , liftM Pack $ parseFieldDef DoPack "pack" + , liftM Pad $ parseField "pad" + , liftM PageDir $ parseField "pagedir" + , liftM Page $ parseField "page" + , liftM PenColor $ parseField "pencolor" + , liftM PenWidth $ parseField "penwidth" + , liftM Peripheries $ parseField "peripheries" + , liftM Pin $ parseFieldBool "pin" + , liftM Pos $ parseField "pos" + , liftM QuadTree $ parseFieldDef NormalQT "quadtree" + , liftM Quantum $ parseField "quantum" + , liftM RankDir $ parseField "rankdir" + , liftM RankSep $ parseField "ranksep" + , liftM Rank $ parseField "rank" + , liftM Ratio $ parseField "ratio" + , liftM Rects $ parseField "rects" + , liftM Regular $ parseFieldBool "regular" + , liftM ReMinCross $ parseFieldBool "remincross" + , liftM RepulsiveForce $ parseField "repulsiveforce" + , liftM Root $ parseFieldDef IsCentral "root" + , liftM Rotate $ parseField "rotate" + , liftM SameHead $ parseField "samehead" + , liftM SameTail $ parseField "sametail" + , liftM SamplePoints $ parseField "samplepoints" + , liftM SearchSize $ parseField "searchsize" + , liftM Sep $ parseField "sep" + , liftM ShapeFile $ parseField "shapefile" + , liftM Shape $ parseField "shape" + , liftM ShowBoxes $ parseField "showboxes" + , liftM Sides $ parseField "sides" + , liftM Size $ parseField "size" + , liftM Skew $ parseField "skew" + , liftM Smoothing $ parseField "smoothing" + , liftM SortV $ parseField "sortv" + , liftM Splines $ parseFieldDef SplineEdges "splines" + , liftM Start $ parseField "start" + , liftM StyleSheet $ parseField "stylesheet" + , liftM Style $ parseField "style" + , liftM TailURL $ parseFields ["tailURL", "tailhref"] + , liftM TailClip $ parseFieldBool "tailclip" + , liftM TailLabel $ parseField "taillabel" + , liftM TailPort $ parseField "tailport" + , liftM TailTarget $ parseField "tailtarget" + , liftM TailTooltip $ parseField "tailtooltip" + , liftM Target $ parseField "target" + , liftM Tooltip $ parseField "tooltip" + , liftM TrueColor $ parseFieldBool "truecolor" + , liftM Vertices $ parseField "vertices" + , liftM ViewPort $ parseField "viewport" + , liftM VoroMargin $ parseField "voro_margin" + , liftM Weight $ parseField "weight" + , liftM Width $ parseField "width" + , liftM Z $ parseField "z" + ] + + parse = parseUnqt + + parseList = parseUnqtList + +-- | Determine if this Attribute is valid for use with Graphs. +usedByGraphs :: Attribute -> Bool +usedByGraphs Damping{} = True +usedByGraphs K{} = True +usedByGraphs URL{} = True +usedByGraphs Aspect{} = True +usedByGraphs Bb{} = True +usedByGraphs BgColor{} = True +usedByGraphs Center{} = True +usedByGraphs Charset{} = True +usedByGraphs ClusterRank{} = True +usedByGraphs ColorScheme{} = True +usedByGraphs Comment{} = True +usedByGraphs Compound{} = True +usedByGraphs Concentrate{} = True +usedByGraphs DefaultDist{} = True +usedByGraphs Dimen{} = True +usedByGraphs Dim{} = True +usedByGraphs DirEdgeConstraints{} = True +usedByGraphs DPI{} = True +usedByGraphs Epsilon{} = True +usedByGraphs ESep{} = True +usedByGraphs FontColor{} = True +usedByGraphs FontName{} = True +usedByGraphs FontNames{} = True +usedByGraphs FontPath{} = True +usedByGraphs FontSize{} = True +usedByGraphs ID{} = True +usedByGraphs LabelJust{} = True +usedByGraphs LabelLoc{} = True +usedByGraphs Label{} = True +usedByGraphs Landscape{} = True +usedByGraphs LayerSep{} = True +usedByGraphs Layers{} = True +usedByGraphs Layout{} = True +usedByGraphs LevelsGap{} = True +usedByGraphs Levels{} = True +usedByGraphs LPos{} = True +usedByGraphs Margin{} = True +usedByGraphs MaxIter{} = True +usedByGraphs MCLimit{} = True +usedByGraphs MinDist{} = True +usedByGraphs Model{} = True +usedByGraphs Mode{} = True +usedByGraphs Mosek{} = True +usedByGraphs NodeSep{} = True +usedByGraphs NoJustify{} = True +usedByGraphs Normalize{} = True +usedByGraphs Nslimit1{} = True +usedByGraphs Nslimit{} = True +usedByGraphs Ordering{} = True +usedByGraphs OutputOrder{} = True +usedByGraphs OverlapScaling{} = True +usedByGraphs Overlap{} = True +usedByGraphs PackMode{} = True +usedByGraphs Pack{} = True +usedByGraphs Pad{} = True +usedByGraphs PageDir{} = True +usedByGraphs Page{} = True +usedByGraphs QuadTree{} = True +usedByGraphs Quantum{} = True +usedByGraphs RankDir{} = True +usedByGraphs RankSep{} = True +usedByGraphs Ratio{} = True +usedByGraphs ReMinCross{} = True +usedByGraphs RepulsiveForce{} = True +usedByGraphs Root{} = True +usedByGraphs Rotate{} = True +usedByGraphs SearchSize{} = True +usedByGraphs Sep{} = True +usedByGraphs ShowBoxes{} = True +usedByGraphs Size{} = True +usedByGraphs Smoothing{} = True +usedByGraphs SortV{} = True +usedByGraphs Splines{} = True +usedByGraphs Start{} = True +usedByGraphs StyleSheet{} = True +usedByGraphs Target{} = True +usedByGraphs TrueColor{} = True +usedByGraphs ViewPort{} = True +usedByGraphs VoroMargin{} = True +usedByGraphs _ = False + +-- | Determine if this Attribute is valid for use with Clusters. +usedByClusters :: Attribute -> Bool +usedByClusters K{} = True +usedByClusters URL{} = True +usedByClusters BgColor{} = True +usedByClusters ColorScheme{} = True +usedByClusters Color{} = True +usedByClusters FillColor{} = True +usedByClusters FontColor{} = True +usedByClusters FontName{} = True +usedByClusters FontSize{} = True +usedByClusters LabelJust{} = True +usedByClusters LabelLoc{} = True +usedByClusters Label{} = True +usedByClusters LPos{} = True +usedByClusters NoJustify{} = True +usedByClusters PenColor{} = True +usedByClusters PenWidth{} = True +usedByClusters Peripheries{} = True +usedByClusters Rank{} = True +usedByClusters SortV{} = True +usedByClusters Style{} = True +usedByClusters Target{} = True +usedByClusters Tooltip{} = True +usedByClusters _ = False + +-- | Determine if this Attribute is valid for use with SubGraphs. +usedBySubGraphs :: Attribute -> Bool +usedBySubGraphs Rank{} = True +usedBySubGraphs _ = False + +-- | Determine if this Attribute is valid for use with Nodes. +usedByNodes :: Attribute -> Bool +usedByNodes URL{} = True +usedByNodes ColorScheme{} = True +usedByNodes Color{} = True +usedByNodes Comment{} = True +usedByNodes Distortion{} = True +usedByNodes FillColor{} = True +usedByNodes FixedSize{} = True +usedByNodes FontColor{} = True +usedByNodes FontName{} = True +usedByNodes FontSize{} = True +usedByNodes Group{} = True +usedByNodes Height{} = True +usedByNodes ID{} = True +usedByNodes Image{} = True +usedByNodes ImageScale{} = True +usedByNodes LabelLoc{} = True +usedByNodes Label{} = True +usedByNodes Layer{} = True +usedByNodes Margin{} = True +usedByNodes NoJustify{} = True +usedByNodes Orientation{} = True +usedByNodes PenWidth{} = True +usedByNodes Peripheries{} = True +usedByNodes Pin{} = True +usedByNodes Pos{} = True +usedByNodes Rects{} = True +usedByNodes Regular{} = True +usedByNodes Root{} = True +usedByNodes SamplePoints{} = True +usedByNodes ShapeFile{} = True +usedByNodes Shape{} = True +usedByNodes ShowBoxes{} = True +usedByNodes Sides{} = True +usedByNodes Skew{} = True +usedByNodes SortV{} = True +usedByNodes Style{} = True +usedByNodes Target{} = True +usedByNodes Tooltip{} = True +usedByNodes Vertices{} = True +usedByNodes Width{} = True +usedByNodes Z{} = True +usedByNodes _ = False + +-- | Determine if this Attribute is valid for use with Edges. +usedByEdges :: Attribute -> Bool +usedByEdges URL{} = True +usedByEdges ArrowHead{} = True +usedByEdges ArrowSize{} = True +usedByEdges ArrowTail{} = True +usedByEdges ColorScheme{} = True +usedByEdges Color{} = True +usedByEdges Comment{} = True +usedByEdges Constraint{} = True +usedByEdges Decorate{} = True +usedByEdges Dir{} = True +usedByEdges EdgeURL{} = True +usedByEdges EdgeTarget{} = True +usedByEdges EdgeTooltip{} = True +usedByEdges FontColor{} = True +usedByEdges FontName{} = True +usedByEdges FontSize{} = True +usedByEdges HeadURL{} = True +usedByEdges HeadClip{} = True +usedByEdges HeadLabel{} = True +usedByEdges HeadPort{} = True +usedByEdges HeadTarget{} = True +usedByEdges HeadTooltip{} = True +usedByEdges ID{} = True +usedByEdges LabelURL{} = True +usedByEdges LabelAngle{} = True +usedByEdges LabelDistance{} = True +usedByEdges LabelFloat{} = True +usedByEdges LabelFontColor{} = True +usedByEdges LabelFontName{} = True +usedByEdges LabelFontSize{} = True +usedByEdges LabelTarget{} = True +usedByEdges LabelTooltip{} = True +usedByEdges Label{} = True +usedByEdges Layer{} = True +usedByEdges Len{} = True +usedByEdges LHead{} = True +usedByEdges LPos{} = True +usedByEdges LTail{} = True +usedByEdges MinLen{} = True +usedByEdges NoJustify{} = True +usedByEdges PenWidth{} = True +usedByEdges Pos{} = True +usedByEdges SameHead{} = True +usedByEdges SameTail{} = True +usedByEdges ShowBoxes{} = True +usedByEdges Style{} = True +usedByEdges TailURL{} = True +usedByEdges TailClip{} = True +usedByEdges TailLabel{} = True +usedByEdges TailPort{} = True +usedByEdges TailTarget{} = True +usedByEdges TailTooltip{} = True +usedByEdges Target{} = True +usedByEdges Tooltip{} = True +usedByEdges Weight{} = True +usedByEdges _ = False + +{- Delete to here -} +-- ----------------------------------------------------------------------------- + +{- | + + Some 'Attribute's (mainly label-like ones) take a 'String' argument + that allows for extra escape codes. This library doesn't do any + extra checks or special parsing for these escape codes, but usage + of 'EscString' rather than 'String' indicates that the Graphviz + tools will recognise these extra escape codes for these + 'Attribute's. + + The extra escape codes include (note that these are all 'String's): + + [@\\N@] Replace with the name of the node (for Node 'Attribute's). + + [@\\G@] Replace with the name of the graph (for Node 'Attribute's) + or the name of the graph or cluster, whichever is + applicable (for Graph, Cluster and Edge 'Attribute's). + + [@\\E@] Replace with the name of the edge, formed by the two + adjoining nodes and the edge type (for Edge 'Attribute's). + + [@\\T@] Replace with the name of the tail node (for Edge + 'Attribute's). + + [@\\H@] Replace with the name of the head node (for Edge + 'Attribute's). + + [@\\L@] Replace with the object's label (for all 'Attribute's). + + Also, if the 'Attribute' in question is 'Label', 'HeadLabel' or + 'TailLabel', then @\\n@, @\\l@ and @\\r@ split the label into lines + centered, left-justified and right-justified respectively. + + -} +type EscString = String + +-- ----------------------------------------------------------------------------- + +-- | No checks are placed on the content of a 'URL' value; however, +-- you should ensure that it does not contain any \'@>@\' or \'@<@\' +-- characters; Graphviz might care about escaping other characters +-- properly, but for the purposes of this library the presence of +-- these characters will make it harder to parse URLs. +newtype URL = UStr { urlString :: EscString } + deriving (Eq, Ord, Show, Read) + +instance PrintDot URL where + unqtDot = wrap (char '<') (char '>') + -- Explicitly use text here... no quotes! + . text . urlString + +instance ParseDot URL where + parseUnqt = liftM UStr + $ bracket (character open) + (character close) + (many1 $ satisfy ((/=) close)) + where + open = '<' + close = '>' + + -- No quotes + parse = parseUnqt + +-- ----------------------------------------------------------------------------- + +-- | /Dot/ has a basic grammar of arrow shapes which allows usage of +-- up to 1,544,761 different shapes from 9 different basic +-- 'ArrowShape's. Note that whilst an explicit list is used in the +-- definition of 'ArrowType', there must be at least one tuple and a +-- maximum of 4 (since that is what is required by Dot). For more +-- information, see: +-- +-- The 19 basic arrows shown on the overall attributes page have +-- been defined below as a convenience. Parsing of the 5 +-- backward-compatible special cases is also supported. +newtype ArrowType = AType [(ArrowModifier, ArrowShape)] + deriving (Eq, Ord, Show, Read) + +box, crow, diamond, dotArrow, inv, noArrow, normal, tee, vee :: ArrowType +oDot, invDot, invODot, oBox, oDiamond :: ArrowType +eDiamond, openArr, halfOpen, emptyArr, invEmpty :: ArrowType + +normal = AType [(noMods, Normal)] +inv = AType [(noMods, Inv)] +dotArrow = AType [(noMods, DotArrow)] +invDot = AType [ (noMods, Inv) + , (noMods, DotArrow)] +oDot = AType [(ArrMod OpenArrow BothSides, DotArrow)] +invODot = AType [ (noMods, Inv) + , (openMod, DotArrow)] +noArrow = AType [(noMods, NoArrow)] +tee = AType [(noMods, Tee)] +emptyArr = AType [(openMod, Normal)] +invEmpty = AType [ (noMods, Inv) + , (openMod, Normal)] +diamond = AType [(noMods, Diamond)] +oDiamond = AType [(openMod, Diamond)] +eDiamond = oDiamond +crow = AType [(noMods, Crow)] +box = AType [(noMods, Box)] +oBox = AType [(openMod, Box)] +openArr = vee +halfOpen = AType [(ArrMod FilledArrow LeftSide, Vee)] +vee = AType [(noMods, Vee)] + +instance PrintDot ArrowType where + unqtDot (AType mas) = hcat $ map appMod mas + where + appMod (m, a) = unqtDot m <> unqtDot a + +instance ParseDot ArrowType where + parseUnqt = do mas <- many1 $ do m <- parseUnqt + a <- parseUnqt + return (m,a) + return $ AType mas + `onFail` + specialArrowParse + +specialArrowParse :: Parse ArrowType +specialArrowParse = oneOf [ stringRep eDiamond "ediamond" + , stringRep openArr "open" + , stringRep halfOpen "halfopen" + , stringRep emptyArr "empty" + , stringRep invEmpty "invempty" + ] + +data ArrowShape = Box + | Crow + | Diamond + | DotArrow + | Inv + | NoArrow + | Normal + | Tee + | Vee + deriving (Eq, Ord, Bounded, Enum, Show, Read) + +instance PrintDot ArrowShape where + unqtDot Box = unqtDot "box" + unqtDot Crow = unqtDot "crow" + unqtDot Diamond = unqtDot "diamond" + unqtDot DotArrow = unqtDot "dot" + unqtDot Inv = unqtDot "inv" + unqtDot NoArrow = unqtDot "none" + unqtDot Normal = unqtDot "normal" + unqtDot Tee = unqtDot "tee" + unqtDot Vee = unqtDot "vee" + +instance ParseDot ArrowShape where + parseUnqt = oneOf [ stringRep Box "box" + , stringRep Crow "crow" + , stringRep Diamond "diamond" + , stringRep DotArrow "dot" + , stringRep Inv "inv" + , stringRep NoArrow "none" + , stringRep Normal "normal" + , stringRep Tee "tee" + , stringRep Vee "vee" + ] + +-- | What modifications to apply to an 'ArrowShape'. +data ArrowModifier = ArrMod { arrowFill :: ArrowFill + , arrowSide :: ArrowSide + } + deriving (Eq, Ord, Show, Read) + +-- | Apply no modifications to an 'ArrowShape'. +noMods :: ArrowModifier +noMods = ArrMod FilledArrow BothSides + +-- | 'OpenArrow' and 'BothSides' +openMod :: ArrowModifier +openMod = ArrMod OpenArrow BothSides + +instance PrintDot ArrowModifier where + unqtDot (ArrMod f s) = unqtDot f <> unqtDot s + +instance ParseDot ArrowModifier where + parseUnqt = do f <- parseUnqt + s <- parseUnqt + return $ ArrMod f s + +data ArrowFill = OpenArrow + | FilledArrow + deriving (Eq, Ord, Bounded, Enum, Show, Read) + +instance PrintDot ArrowFill where + unqtDot OpenArrow = char 'o' + unqtDot FilledArrow = empty + +instance ParseDot ArrowFill where + parseUnqt = liftM (bool FilledArrow OpenArrow . isJust) + $ optional (character 'o') + + -- Not used individually + parse = parseUnqt + +-- | Represents which side (when looking towards the node the arrow is +-- pointing to) is drawn. +data ArrowSide = LeftSide + | RightSide + | BothSides + deriving (Eq, Ord, Bounded, Enum, Show, Read) + +instance PrintDot ArrowSide where + unqtDot LeftSide = char 'l' + unqtDot RightSide = char 'r' + unqtDot BothSides = empty + +instance ParseDot ArrowSide where + parseUnqt = liftM getSideType + $ optional (oneOf $ map character ['l', 'r']) + where + getSideType = maybe BothSides + (bool RightSide LeftSide . (==) 'l') + + -- Not used individually + parse = parseUnqt + +-- ----------------------------------------------------------------------------- + +data AspectType = RatioOnly Double + | RatioPassCount Double Int + deriving (Eq, Ord, Show, Read) + +instance PrintDot AspectType where + unqtDot (RatioOnly r) = unqtDot r + unqtDot (RatioPassCount r p) = commaDel r p + + toDot at@RatioOnly{} = unqtDot at + toDot at@RatioPassCount{} = doubleQuotes $ unqtDot at + +instance ParseDot AspectType where + parseUnqt = liftM (uncurry RatioPassCount) commaSepUnqt + `onFail` + liftM RatioOnly parseUnqt + + + parse = quotedParse (liftM (uncurry RatioPassCount) commaSepUnqt) + `onFail` + liftM RatioOnly parse + +-- ----------------------------------------------------------------------------- + +data Rect = Rect Point Point + deriving (Eq, Ord, Show, Read) + +instance PrintDot Rect where + unqtDot (Rect p1 p2) = commaDel p1 p2 + + toDot = doubleQuotes . unqtDot + +instance ParseDot Rect where + parseUnqt = liftM (uncurry Rect) commaSepUnqt + + parse = quotedParse parseUnqt + +-- ----------------------------------------------------------------------------- + +data ClusterMode = Local + | Global + | NoCluster + deriving (Eq, Ord, Bounded, Enum, Show, Read) + +instance PrintDot ClusterMode where + unqtDot Local = unqtDot "local" + unqtDot Global = unqtDot "global" + unqtDot NoCluster = unqtDot "none" + + + +instance ParseDot ClusterMode where + parseUnqt = oneOf [ stringRep Local "local" + , stringRep Global "global" + , stringRep NoCluster "none" + ] + +-- ----------------------------------------------------------------------------- + +data DirType = Forward | Back | Both | NoDir + deriving (Eq, Ord, Bounded, Enum, Show, Read) + +instance PrintDot DirType where + unqtDot Forward = unqtDot "forward" + unqtDot Back = unqtDot "back" + unqtDot Both = unqtDot "both" + unqtDot NoDir = unqtDot "none" + +instance ParseDot DirType where + parseUnqt = oneOf [ stringRep Forward "forward" + , stringRep Back "back" + , stringRep Both "both" + , stringRep NoDir "none" + ] + +-- ----------------------------------------------------------------------------- + +-- | Only when @mode == 'IpSep'@. +data DEConstraints = EdgeConstraints + | NoConstraints + | HierConstraints + deriving (Eq, Ord, Bounded, Enum, Show, Read) + +instance PrintDot DEConstraints where + unqtDot EdgeConstraints = unqtDot True + unqtDot NoConstraints = unqtDot False + unqtDot HierConstraints = text "hier" + +instance ParseDot DEConstraints where + parseUnqt = liftM (bool NoConstraints EdgeConstraints) parse + `onFail` + stringRep HierConstraints "hier" + +-- ----------------------------------------------------------------------------- + +-- | Either a 'Double' or a 'Point'. +data DPoint = DVal Double + | PVal Point + deriving (Eq, Ord, Show, Read) + +instance PrintDot DPoint where + unqtDot (DVal d) = unqtDot d + unqtDot (PVal p) = unqtDot p + + toDot (DVal d) = toDot d + toDot (PVal p) = toDot p + +instance ParseDot DPoint where + parseUnqt = liftM PVal parseUnqt + `onFail` + liftM DVal parseUnqt + + parse = liftM PVal parse + `onFail` + liftM DVal parse + +-- ----------------------------------------------------------------------------- + +data ModeType = Major + | KK + | Hier + | IpSep + deriving (Eq, Ord, Bounded, Enum, Show, Read) + +instance PrintDot ModeType where + unqtDot Major = text "major" + unqtDot KK = text "KK" + unqtDot Hier = text "hier" + unqtDot IpSep = text "ipsep" + +instance ParseDot ModeType where + parseUnqt = oneOf [ stringRep Major "major" + , stringRep KK "KK" + , stringRep Hier "hier" + , stringRep IpSep "ipsep" + ] + +-- ----------------------------------------------------------------------------- + +data Model = ShortPath + | SubSet + | Circuit + deriving (Eq, Ord, Bounded, Enum, Show, Read) + +instance PrintDot Model where + unqtDot ShortPath = text "shortpath" + unqtDot SubSet = text "subset" + unqtDot Circuit = text "circuit" + +instance ParseDot Model where + parseUnqt = oneOf [ stringRep ShortPath "shortpath" + , stringRep SubSet "subset" + , stringRep Circuit "circuit" + ] + +-- ----------------------------------------------------------------------------- + +data Label = StrLabel EscString + | URLLabel URL + deriving (Eq, Ord, Show, Read) + +instance PrintDot Label where + unqtDot (StrLabel s) = unqtDot s + unqtDot (URLLabel u) = unqtDot u + + toDot (StrLabel s) = toDot s + toDot (URLLabel u) = toDot u + +instance ParseDot Label where + parseUnqt = liftM StrLabel parseUnqt + `onFail` + liftM URLLabel parseUnqt + + parse = liftM StrLabel parse + `onFail` + liftM URLLabel parse + +-- ----------------------------------------------------------------------------- + +data Point = Point Int Int + | PointD Double Double + deriving (Eq, Ord, Show, Read) + +instance PrintDot Point where + unqtDot (Point x y) = commaDel x y + unqtDot (PointD x y) = commaDel x y + + toDot = doubleQuotes . unqtDot + + unqtListToDot = hsep . map unqtDot + + listToDot = doubleQuotes . unqtListToDot + +instance ParseDot Point where + -- Need to take into account the situation where first value is an + -- integer, second a double: if Point parsing first, then it won't + -- parse the second number properly; but if PointD first then it + -- will treat Int/Int as Double/Double. + parseUnqt = intDblPoint + `onFail` + liftM (uncurry Point) commaSepUnqt + `onFail` + liftM (uncurry PointD) commaSepUnqt + where + intDblPoint = liftM (uncurry PointD . first fI) + $ commaSep' parseUnqt parseStrictFloat + fI :: Int -> Double + fI = fromIntegral + + parse = quotedParse parseUnqt + + parseUnqtList = sepBy1 parseUnqt whitespace + +-- ----------------------------------------------------------------------------- + +data Overlap = KeepOverlaps + | RemoveOverlaps + | ScaleOverlaps + | ScaleXYOverlaps + | PrismOverlap (Maybe Int) -- ^ Only when sfdp is available, 'Int' is non-negative + | CompressOverlap + | VpscOverlap + | IpsepOverlap -- ^ Only when @mode == 'IpSep'@ + deriving (Eq, Ord, Show, Read) + +instance PrintDot Overlap where + unqtDot KeepOverlaps = unqtDot True + unqtDot RemoveOverlaps = unqtDot False + unqtDot ScaleOverlaps = text "scale" + unqtDot ScaleXYOverlaps = text "scalexy" + unqtDot (PrismOverlap i) = maybe id (flip (<>) . unqtDot) i $ text "prism" + unqtDot CompressOverlap = text "compress" + unqtDot VpscOverlap = text "vpsc" + unqtDot IpsepOverlap = text "ipsep" + +instance ParseDot Overlap where + parseUnqt = oneOf [ stringRep KeepOverlaps "true" + , stringRep RemoveOverlaps "false" + , stringRep ScaleXYOverlaps "scalexy" + , stringRep ScaleOverlaps "scale" + , string "prism" >> liftM PrismOverlap (optional parse) + , stringRep CompressOverlap "compress" + , stringRep VpscOverlap "vpsc" + , stringRep IpsepOverlap "ipsep" + ] + +-- ----------------------------------------------------------------------------- + +data LayerRange = LRID LayerID + | LRS LayerID String LayerID + deriving (Eq, Ord, Show, Read) + +instance PrintDot LayerRange where + unqtDot (LRID lid) = unqtDot lid + unqtDot (LRS id1 s id2) = unqtDot id1 <> unqtDot s <> unqtDot id2 + + toDot (LRID lid) = toDot lid + toDot lrs = doubleQuotes $ unqtDot lrs + +instance ParseDot LayerRange where + parseUnqt = do id1 <- parseUnqt + s <- parseLayerSep + id2 <- parseUnqt + return $ LRS id1 s id2 + `onFail` + liftM LRID parseUnqt + + + parse = quotedParse ( do id1 <- parseUnqt + s <- parseLayerSep + id2 <- parseUnqt + return $ LRS id1 s id2 + ) + `onFail` + liftM LRID parse + +parseLayerSep :: Parse String +parseLayerSep = many1 . oneOf + $ map character defLayerSep + +defLayerSep :: [Char] +defLayerSep = [' ', ':', '\t'] + +parseLayerName :: Parse String +parseLayerName = many1 . orQuote + $ satisfy (liftM2 (&&) notLayerSep ((/=) quoteChar)) + +parseLayerName' :: Parse String +parseLayerName' = stringBlock + `onFail` + quotedParse parseLayerName + +notLayerSep :: Char -> Bool +notLayerSep = flip notElem defLayerSep + +-- | You should not have any quote characters for the 'LRName' option, +-- as it won't be parseable. +data LayerID = AllLayers + | LRInt Int + | LRName String + deriving (Eq, Ord, Show, Read) + +instance PrintDot LayerID where + unqtDot AllLayers = text "all" + unqtDot (LRInt n) = unqtDot n + unqtDot (LRName nm) = unqtDot nm + + toDot (LRName nm) = toDot nm + -- Other two don't need quotes + toDot li = unqtDot li + +instance ParseDot LayerID where + parseUnqt = liftM checkLayerName parseLayerName -- tests for Int and All + + parse = oneOf [ liftM checkLayerName parseLayerName' + , liftM LRInt parse -- Mainly for unquoted case. + ] + +checkLayerName :: String -> LayerID +checkLayerName str = maybe checkAll LRInt $ stringToInt str + where + checkAll = if map toLower str == "all" + then AllLayers + else LRName str + +-- | The list represent (Separator, Name). You should not have any +-- quote characters for any of the 'String's, since there are +-- parsing problems with them. +data LayerList = LL String [(String, String)] + deriving (Eq, Ord, Show, Read) + +instance PrintDot LayerList where + unqtDot (LL l1 ols) = unqtDot l1 <> hcat (map subLL ols) + where + subLL (s, l) = unqtDot s <> unqtDot l + + toDot (LL l1 []) = toDot l1 + -- Might not need quotes, but probably will. + toDot ll = doubleQuotes $ unqtDot ll + +instance ParseDot LayerList where + parseUnqt = do l1 <- parseLayerName + ols <- many $ do s <- parseLayerSep + lnm <- parseLayerName + return (s, lnm) + return $ LL l1 ols + + parse = quotedParse parseUnqt + `onFail` + liftM (flip LL []) (parseLayerName' `onFail` numString) + +-- ----------------------------------------------------------------------------- + +data OutputMode = BreadthFirst | NodesFirst | EdgesFirst + deriving (Eq, Ord, Bounded, Enum, Show, Read) + +instance PrintDot OutputMode where + unqtDot BreadthFirst = text "breadthfirst" + unqtDot NodesFirst = text "nodesfirst" + unqtDot EdgesFirst = text "edgesfirst" + +instance ParseDot OutputMode where + parseUnqt = oneOf [ stringRep BreadthFirst "breadthfirst" + , stringRep NodesFirst "nodesfirst" + , stringRep EdgesFirst "edgesfirst" + ] + +-- ----------------------------------------------------------------------------- + +data Pack = DoPack + | DontPack + | PackMargin Int -- ^ If non-negative, then packs; otherwise doesn't. + deriving (Eq, Ord, Show, Read) + +instance PrintDot Pack where + unqtDot DoPack = unqtDot True + unqtDot DontPack = unqtDot False + unqtDot (PackMargin m) = unqtDot m + +instance ParseDot Pack where + -- What happens if it parses 0? It's non-negative, but parses as False + parseUnqt = oneOf [ liftM PackMargin parseUnqt + , liftM (bool DontPack DoPack) onlyBool + ] + +-- ----------------------------------------------------------------------------- + +data PackMode = PackNode + | PackClust + | PackGraph + | PackArray Bool Bool (Maybe Int) -- ^ Sort by cols, sort + -- by user, number of + -- rows/cols + deriving (Eq, Ord, Show, Read) + +instance PrintDot PackMode where + unqtDot PackNode = text "node" + unqtDot PackClust = text "clust" + unqtDot PackGraph = text "graph" + unqtDot (PackArray c u mi) = addNum . isU . isC . isUnder + $ text "array" + where + addNum = maybe id (flip (<>) . unqtDot) mi + isUnder = if c || u + then flip (<>) $ char '_' + else id + isC = if c + then flip (<>) $ char 'c' + else id + isU = if u + then flip (<>) $ char 'u' + else id + +instance ParseDot PackMode where + parseUnqt = oneOf [ stringRep PackNode "node" + , stringRep PackClust "clust" + , stringRep PackGraph "graph" + , do string "array" + mcu <- optional $ do character '_' + many1 $ satisfy isCU + let c = hasCharacter mcu 'c' + u = hasCharacter mcu 'u' + mi <- optional parseUnqt + return $ PackArray c u mi + ] + where + hasCharacter ms c = maybe False (elem c) ms + -- Also checks and removes quote characters + isCU = flip elem ['c', 'u'] + +-- ----------------------------------------------------------------------------- + +data Pos = PointPos Point + | SplinePos [Spline] + deriving (Eq, Ord, Show, Read) + +instance PrintDot Pos where + unqtDot (PointPos p) = unqtDot p + unqtDot (SplinePos ss) = unqtDot ss + + toDot (PointPos p) = toDot p + toDot (SplinePos ss) = toDot ss + +instance ParseDot Pos where + -- Have to be careful with this: if we try to parse points first, + -- then a spline with no start and end points will erroneously get + -- parsed as a point and then the parser will crash as it expects + -- a closing quote character... + parseUnqt = do splns <- parseUnqt + case splns of + [Spline Nothing Nothing [p]] -> return $ PointPos p + _ -> return $ SplinePos splns + + parse = quotedParse parseUnqt + +-- ----------------------------------------------------------------------------- + +-- | Controls how (and if) edges are represented. +data EdgeType = SplineEdges + | LineEdges + | NoEdges + | PolyLine + | CompoundEdge -- ^ fdp only + deriving (Eq, Ord, Bounded, Enum, Show, Read) + +instance PrintDot EdgeType where + unqtDot SplineEdges = toDot True + unqtDot LineEdges = toDot False + unqtDot NoEdges = empty + unqtDot PolyLine = text "polyline" + unqtDot CompoundEdge = text "compound" + + toDot NoEdges = doubleQuotes empty + toDot et = unqtDot et + +instance ParseDot EdgeType where + -- Can't parse NoEdges without quotes. + parseUnqt = oneOf [ liftM (bool LineEdges SplineEdges) parse + , stringRep SplineEdges "spline" + , stringRep LineEdges "line" + , stringRep PolyLine "polyline" + , stringRep CompoundEdge "compound" + ] + + parse = stringRep NoEdges "\"\"" + `onFail` + optionalQuoted parseUnqt + +-- ----------------------------------------------------------------------------- + +-- | Upper-case first character is major order; +-- lower-case second character is minor order. +data PageDir = Bl | Br | Tl | Tr | Rb | Rt | Lb | Lt + deriving (Eq, Ord, Bounded, Enum, Show, Read) + +instance PrintDot PageDir where + unqtDot Bl = text "BL" + unqtDot Br = text "BR" + unqtDot Tl = text "TL" + unqtDot Tr = text "TR" + unqtDot Rb = text "RB" + unqtDot Rt = text "RT" + unqtDot Lb = text "LB" + unqtDot Lt = text "LT" + +instance ParseDot PageDir where + parseUnqt = oneOf [ stringRep Bl "BL" + , stringRep Br "BR" + , stringRep Tl "TL" + , stringRep Tr "TR" + , stringRep Rb "RB" + , stringRep Rt "RT" + , stringRep Lb "LB" + , stringRep Lt "LT" + ] + +-- ----------------------------------------------------------------------------- + +-- | The number of points in the list must be equivalent to 1 mod 3; +-- note that this is not checked. +data Spline = Spline (Maybe Point) (Maybe Point) [Point] + deriving (Eq, Ord, Show, Read) + +instance PrintDot Spline where + unqtDot (Spline ms me ps) = addS . addE + . hsep + $ map unqtDot ps + where + addP t = maybe id ((<+>) . commaDel t) + addS = addP 's' ms + addE = addP 'e' me + + toDot = doubleQuotes . unqtDot + + unqtListToDot = hcat . punctuate semi . map unqtDot + + listToDot = doubleQuotes . unqtListToDot + +instance ParseDot Spline where + parseUnqt = do ms <- parseP 's' + me <- parseP 'e' + ps <- sepBy1 parseUnqt whitespace + return $ Spline ms me ps + where + parseP t = optional $ do character t + parseComma + parseUnqt `discard` whitespace + + parse = quotedParse parseUnqt + + parseUnqtList = sepBy1 parseUnqt (character ';') + +-- ----------------------------------------------------------------------------- + +data QuadType = NormalQT + | FastQT + | NoQT + deriving (Eq, Ord, Bounded, Enum, Show, Read) + +instance PrintDot QuadType where + unqtDot NormalQT = text "normal" + unqtDot FastQT = text "fast" + unqtDot NoQT = text "none" + +instance ParseDot QuadType where + -- Have to take into account the slightly different interpretation + -- of Bool used as an option for parsing QuadType + parseUnqt = oneOf [ stringRep NormalQT "normal" + , stringRep FastQT "fast" + , stringRep NoQT "none" + , character '2' >> return FastQT -- weird bool + , liftM (bool NoQT NormalQT) parse + ] + +-- ----------------------------------------------------------------------------- + +-- | Specify the root node either as a Node attribute or a Graph attribute. +data Root = IsCentral -- ^ For Nodes only + | NotCentral -- ^ For Nodes only + | NodeName String -- ^ For Graphs only + deriving (Eq, Ord, Show, Read) + +instance PrintDot Root where + unqtDot IsCentral = unqtDot True + unqtDot NotCentral = unqtDot False + unqtDot (NodeName n) = unqtDot n + + toDot (NodeName n) = toDot n + toDot r = unqtDot r + +instance ParseDot Root where + parseUnqt = liftM (bool NotCentral IsCentral) onlyBool + `onFail` + liftM NodeName parseUnqt + + parse = optionalQuoted (liftM (bool NotCentral IsCentral) onlyBool) + `onFail` + liftM NodeName parse + +-- ----------------------------------------------------------------------------- + +data RankType = SameRank + | MinRank + | SourceRank + | MaxRank + | SinkRank + deriving (Eq, Ord, Bounded, Enum, Show, Read) + +instance PrintDot RankType where + unqtDot SameRank = text "same" + unqtDot MinRank = text "min" + unqtDot SourceRank = text "source" + unqtDot MaxRank = text "max" + unqtDot SinkRank = text "sink" + +instance ParseDot RankType where + parseUnqt = oneOf [ stringRep SameRank "same" + , stringRep MinRank "min" + , stringRep SourceRank "source" + , stringRep MaxRank "max" + , stringRep SinkRank "sink" + ] + +-- ----------------------------------------------------------------------------- + +data RankDir = FromTop + | FromLeft + | FromBottom + | FromRight + deriving (Eq, Ord, Bounded, Enum, Show, Read) + +instance PrintDot RankDir where + unqtDot FromTop = text "TB" + unqtDot FromLeft = text "LR" + unqtDot FromBottom = text "BT" + unqtDot FromRight = text "RL" + +instance ParseDot RankDir where + parseUnqt = oneOf [ stringRep FromTop "TB" + , stringRep FromLeft "LR" + , stringRep FromBottom "BT" + , stringRep FromRight "RL" + ] + +-- ----------------------------------------------------------------------------- + +data Shape + = BoxShape -- ^ Has synonyms of /rect/ and /rectangle/. + | Polygon + | Ellipse + | Circle + | PointShape + | Egg + | Triangle + | PlainText -- ^ Has synonym of /none/. + | DiamondShape + | Trapezium + | Parallelogram + | House + | Pentagon + | Hexagon + | Septagon + | Octagon + | DoubleCircle + | DoubleOctagon + | TripleOctagon + | InvTriangle + | InvTrapezium + | InvHouse + | MDiamond + | MSquare + | MCircle + | Note + | Tab + | Folder + | Box3D + | Component + deriving (Eq, Ord, Bounded, Enum, Show, Read) + +instance PrintDot Shape where + unqtDot BoxShape = text "box" + unqtDot Polygon = text "polygon" + unqtDot Ellipse = text "ellipse" + unqtDot Circle = text "circle" + unqtDot PointShape = text "point" + unqtDot Egg = text "egg" + unqtDot Triangle = text "triangle" + unqtDot PlainText = text "plaintext" + unqtDot DiamondShape = text "diamond" + unqtDot Trapezium = text "trapezium" + unqtDot Parallelogram = text "parallelogram" + unqtDot House = text "house" + unqtDot Pentagon = text "pentagon" + unqtDot Hexagon = text "hexagon" + unqtDot Septagon = text "septagon" + unqtDot Octagon = text "octagon" + unqtDot DoubleCircle = text "doublecircle" + unqtDot DoubleOctagon = text "doubleoctagon" + unqtDot TripleOctagon = text "tripleoctagon" + unqtDot InvTriangle = text "invtriangle" + unqtDot InvTrapezium = text "invtrapezium" + unqtDot InvHouse = text "invhouse" + unqtDot MDiamond = text "Mdiamond" + unqtDot MSquare = text "Msquare" + unqtDot MCircle = text "Mcircle" + unqtDot Note = text "note" + unqtDot Tab = text "tab" + unqtDot Folder = text "folder" + unqtDot Box3D = text "box3d" + unqtDot Component = text "component" + +instance ParseDot Shape where + parseUnqt = oneOf [ stringRep Box3D "box3d" -- Parse this before "box" + , stringReps BoxShape ["box","rectangle","rect"] + , stringRep Polygon "polygon" + , stringRep Ellipse "ellipse" + , stringRep Circle "circle" + , stringRep PointShape "point" + , stringRep Egg "egg" + , stringRep Triangle "triangle" + , stringReps PlainText ["plaintext","none"] + , stringRep DiamondShape "diamond" + , stringRep Trapezium "trapezium" + , stringRep Parallelogram "parallelogram" + , stringRep House "house" + , stringRep Pentagon "pentagon" + , stringRep Hexagon "hexagon" + , stringRep Septagon "septagon" + , stringRep Octagon "octagon" + , stringRep DoubleCircle "doublecircle" + , stringRep DoubleOctagon "doubleoctagon" + , stringRep TripleOctagon "tripleoctagon" + , stringRep InvTriangle "invtriangle" + , stringRep InvTrapezium "invtrapezium" + , stringRep InvHouse "invhouse" + , stringRep MDiamond "Mdiamond" + , stringRep MSquare "Msquare" + , stringRep MCircle "Mcircle" + , stringRep Note "note" + , stringRep Tab "tab" + , stringRep Folder "folder" + , stringRep Component "component" + ] + +-- ----------------------------------------------------------------------------- + +data SmoothType = NoSmooth + | AvgDist + | GraphDist + | PowerDist + | RNG + | Spring + | TriangleSmooth + deriving (Eq, Ord, Bounded, Enum, Show, Read) + +instance PrintDot SmoothType where + unqtDot NoSmooth = text "none" + unqtDot AvgDist = text "avg_dist" + unqtDot GraphDist = text "graph_dist" + unqtDot PowerDist = text "power_dist" + unqtDot RNG = text "rng" + unqtDot Spring = text "spring" + unqtDot TriangleSmooth = text "triangle" + +instance ParseDot SmoothType where + parseUnqt = oneOf [ stringRep NoSmooth "none" + , stringRep AvgDist "avg_dist" + , stringRep GraphDist "graph_dist" + , stringRep PowerDist "power_dist" + , stringRep RNG "rng" + , stringRep Spring "spring" + , stringRep TriangleSmooth "triangle" + ] + +-- ----------------------------------------------------------------------------- + +data StartType = StartStyle STStyle + | StartSeed Int + | StartStyleSeed STStyle Int + deriving (Eq, Ord, Show, Read) + +instance PrintDot StartType where + unqtDot (StartStyle ss) = unqtDot ss + unqtDot (StartSeed s) = unqtDot s + unqtDot (StartStyleSeed ss s) = unqtDot ss <> unqtDot s + +instance ParseDot StartType where + parseUnqt = oneOf [ do ss <- parseUnqt + s <- parseUnqt + return $ StartStyleSeed ss s + , liftM StartStyle parseUnqt + , liftM StartSeed parseUnqt + ] + +data STStyle = RegularStyle + | SelfStyle + | RandomStyle + deriving (Eq, Ord, Bounded, Enum, Show, Read) + +instance PrintDot STStyle where + unqtDot RegularStyle = text "regular" + unqtDot SelfStyle = text "self" + unqtDot RandomStyle = text "random" + +instance ParseDot STStyle where + parseUnqt = oneOf [ stringRep RegularStyle "regular" + , stringRep SelfStyle "self" + , stringRep RandomStyle "random" + ] + +-- ----------------------------------------------------------------------------- + +data StyleItem = SItem StyleName [String] + deriving (Eq, Ord, Show, Read) + +instance PrintDot StyleItem where + unqtDot (SItem nm args) + | null args = dnm + | otherwise = dnm <> parens args' + where + dnm = unqtDot nm + args' = hcat . punctuate comma $ map unqtDot args + + toDot si@(SItem nm args) + | null args = toDot nm + | otherwise = doubleQuotes $ unqtDot si + + unqtListToDot = hcat . punctuate comma . map unqtDot + + listToDot [SItem nm []] = toDot nm + listToDot sis = doubleQuotes $ unqtListToDot sis + +instance ParseDot StyleItem where + parseUnqt = do nm <- parseUnqt + args <- tryParseList' parseArgs + return $ SItem nm args + + parse = quotedParse (liftM2 SItem parseUnqt parseArgs) + `onFail` + liftM (flip SItem []) parse + + parseUnqtList = sepBy1 parseUnqt parseComma + + parseList = quotedParse parseUnqtList + `onFail` + -- Might not necessarily need to be quoted if a singleton... + liftM return parse + +parseArgs :: Parse [String] +parseArgs = bracketSep (character '(') + parseComma + (character ')') + parseStyleName + +data StyleName = Dashed -- ^ Nodes and Edges + | Dotted -- ^ Nodes and Edges + | Solid -- ^ Nodes and Edges + | Bold -- ^ Nodes and Edges + | Invisible -- ^ Nodes and Edges + | Filled -- ^ Nodes and Clusters + | Diagonals -- ^ Nodes only + | Rounded -- ^ Nodes and Clusters + | DD String -- ^ Device Dependent + deriving (Eq, Ord, Show, Read) + +instance PrintDot StyleName where + unqtDot Dashed = text "dashed" + unqtDot Dotted = text "dotted" + unqtDot Solid = text "solid" + unqtDot Bold = text "bold" + unqtDot Invisible = text "invis" + unqtDot Filled = text "filled" + unqtDot Diagonals = text "diagonals" + unqtDot Rounded = text "rounded" + unqtDot (DD nm) = unqtDot nm + + toDot (DD nm) = toDot nm + toDot sn = unqtDot sn + +instance ParseDot StyleName where + parseUnqt = liftM checkDD parseStyleName + + parse = liftM checkDD + $ quotedParse parseStyleName + `onFail` + -- In case a singleton DD is at the end of an attribute list. + do f <- orQuote $ noneOf [quoteChar, '(', ')', ',', ' ', ']'] + r <- many (orQuote $ noneOf [quoteChar, '(', ')', ',', ']']) + return $ f:r + +checkDD :: String -> StyleName +checkDD str = case map toLower str of + "dashed" -> Dashed + "dotted" -> Dotted + "solid" -> Solid + "bold" -> Bold + "invis" -> Invisible + "filled" -> Filled + "diagonals" -> Diagonals + "rounded" -> Rounded + _ -> DD str + +parseStyleName :: Parse String +parseStyleName = do f <- orQuote $ noneOf [quoteChar, '(', ')', ',', ' '] + r <- many (orQuote $ noneOf [quoteChar, '(', ')', ',']) + return $ f:r + +-- ----------------------------------------------------------------------------- + +newtype PortPos = PP CompassPoint + deriving (Eq, Ord, Show, Read) + +instance PrintDot PortPos where + unqtDot (PP cp) = unqtDot cp + + toDot (PP cp) = toDot cp + +instance ParseDot PortPos where + parseUnqt = liftM PP parseUnqt + +data CompassPoint = North + | NorthEast + | East + | SouthEast + | South + | SouthWest + | West + | NorthWest + | CenterPoint + | NoCP + deriving (Eq, Ord, Bounded, Enum, Show, Read) + +instance PrintDot CompassPoint where + unqtDot NorthEast = text "ne" + unqtDot NorthWest = text "nw" + unqtDot North = text "n" + unqtDot East = text "e" + unqtDot SouthEast = text "se" + unqtDot SouthWest = text "sw" + unqtDot South = text "s" + unqtDot West = text "w" + unqtDot CenterPoint = text "c" + unqtDot NoCP = text "_" + +instance ParseDot CompassPoint where + -- Have to take care of longer parsing values first. + parseUnqt = oneOf [ stringRep NorthEast "ne" + , stringRep NorthWest "nw" + , stringRep North "n" + , stringRep SouthEast "se" + , stringRep SouthWest "sw" + , stringRep South "s" + , stringRep East "e" + , stringRep West "w" + , stringRep CenterPoint "c" + , stringRep NoCP "_" + ] + +-- ----------------------------------------------------------------------------- + +data ViewPort = VP { wVal :: Double + , hVal :: Double + , zVal :: Double + , focus :: Maybe FocusType + } + deriving (Eq, Ord, Show, Read) + +instance PrintDot ViewPort where + unqtDot vp = maybe vs ((<>) (vs <> comma) . unqtDot) + $ focus vp + where + vs = hcat . punctuate comma + $ map (unqtDot . flip ($) vp) [wVal, hVal, zVal] + + toDot = doubleQuotes . unqtDot + +instance ParseDot ViewPort where + parseUnqt = do wv <- parseUnqt + parseComma + hv <- parseUnqt + parseComma + zv <- parseUnqt + mf <- optional $ parseComma >> parseUnqt + return $ VP wv hv zv mf + + parse = quotedParse parseUnqt + +data FocusType = XY Point + | NodeFocus String + deriving (Eq, Ord, Show, Read) + +instance PrintDot FocusType where + unqtDot (XY p) = unqtDot p + unqtDot (NodeFocus nm) = unqtDot nm + + toDot (XY p) = toDot p + toDot (NodeFocus nm) = toDot nm + +instance ParseDot FocusType where + parseUnqt = liftM XY parseUnqt + `onFail` + liftM NodeFocus parseUnqt + + parse = liftM XY parse + `onFail` + liftM NodeFocus parse + +-- ----------------------------------------------------------------------------- + +data VerticalPlacement = VTop + | VCenter -- ^ Only valid for Nodes. + | VBottom + deriving (Eq, Ord, Bounded, Enum, Show, Read) + +instance PrintDot VerticalPlacement where + unqtDot VTop = char 't' + unqtDot VCenter = char 'c' + unqtDot VBottom = char 'b' + +instance ParseDot VerticalPlacement where + parseUnqt = oneOf [ stringRep VTop "t" + , stringRep VCenter "c" + , stringRep VBottom "b" + ] + +-- ----------------------------------------------------------------------------- + +data ScaleType = UniformScale + | NoScale + | FillWidth + | FillHeight + | FillBoth + deriving (Eq, Ord, Bounded, Enum, Show, Read) + +instance PrintDot ScaleType where + unqtDot UniformScale = unqtDot True + unqtDot NoScale = unqtDot False + unqtDot FillWidth = text "width" + unqtDot FillHeight = text "height" + unqtDot FillBoth = text "both" + +instance ParseDot ScaleType where + parseUnqt = oneOf [ stringRep UniformScale "true" + , stringRep NoScale "false" + , stringRep FillWidth "width" + , stringRep FillHeight "height" + , stringRep FillBoth "both" + ] + +-- ----------------------------------------------------------------------------- + +data Justification = JLeft + | JRight + | JCenter + deriving (Eq, Ord, Bounded, Enum, Show, Read) + +instance PrintDot Justification where + unqtDot JLeft = char 'l' + unqtDot JRight = char 'r' + unqtDot JCenter = char 'c' + +instance ParseDot Justification where + parseUnqt = oneOf [ stringRep JLeft "l" + , stringRep JRight "r" + , stringRep JCenter "c" + ] + +-- ----------------------------------------------------------------------------- + +data Ratios = AspectRatio Double + | FillRatio + | CompressRatio + | ExpandRatio + | AutoRatio + deriving (Eq, Ord, Show, Read) + +instance PrintDot Ratios where + unqtDot (AspectRatio r) = unqtDot r + unqtDot FillRatio = text "fill" + unqtDot CompressRatio = text "compress" + unqtDot ExpandRatio = text "expand" + unqtDot AutoRatio = text "auto" + +instance ParseDot Ratios where + parseUnqt = oneOf [ liftM AspectRatio parseUnqt + , stringRep FillRatio "fill" + , stringRep CompressRatio "compress" + , stringRep ExpandRatio "expand" + , stringRep AutoRatio "auto" + ] diff -ruN haskell-src-exts-1.9.0/Test/examples/BangPatterns.hs haskell-src-exts/Test/examples/BangPatterns.hs --- haskell-src-exts-1.9.0/Test/examples/BangPatterns.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/BangPatterns.hs 2010-12-15 09:33:36.750212104 -0800 @@ -0,0 +1,8 @@ +{-# LANGUAGE BangPatterns #-} +module BangPatterns where + +firstnonspace :: Ptr Word8 -> Int -> Int -> IO Int +firstnonspace !ptr !n !m + | n >= m = return n + | otherwise = do w <- peekElemOff ptr n + if isSpaceWord8 w then firstnonspace ptr (n+1) m else return n diff -ruN haskell-src-exts-1.9.0/Test/examples/ByteStringUtils.hs haskell-src-exts/Test/examples/ByteStringUtils.hs --- haskell-src-exts-1.9.0/Test/examples/ByteStringUtils.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/ByteStringUtils.hs 2010-12-15 09:33:37.366712432 -0800 @@ -0,0 +1,541 @@ +{-# LANGUAGE BangPatterns, ForeignFunctionInterface, CPP #-} + +----------------------------------------------------------------------------- +-- | +-- Module : ByteStringUtils +-- Copyright : (c) The University of Glasgow 2001, +-- David Roundy 2003-2005 +-- License : GPL (I'm happy to also license this file BSD style but don't +-- want to bother distributing two license files with darcs. +-- +-- Maintainer : droundy@abridgegame.org +-- Stability : experimental +-- Portability : portable +-- +-- GZIp and MMap IO for ByteStrings, and miscellaneous functions for Data.ByteString +-- + +module ByteStringUtils ( + + unsafeWithInternals, + unpackPSfromUTF8, + + -- IO with mmap or gzip + gzReadFilePS, + mmapFilePS, + gzWriteFilePS, + gzWriteFilePSs, + + -- list utilities + ifHeadThenTail, + dropSpace, + breakSpace, + linesPS, + unlinesPS, + hashPS, + breakFirstPS, + breakLastPS, + substrPS, + readIntPS, + is_funky, + fromHex2PS, + fromPS2Hex, + betweenLinesPS, + break_after_nth_newline, + break_before_nth_newline, + intercalate + ) where + +import Prelude hiding ( catch ) +import qualified Data.ByteString as B +import qualified Data.ByteString.Char8 as BC +import qualified Data.ByteString.Internal as BI +import Data.ByteString (intercalate, uncons) +import Data.ByteString.Internal (fromForeignPtr) + +-- #if defined (HAVE_MMAP) || ! defined (HAVE_HASKELL_ZLIB) +import Control.Exception ( catch ) +-- #endif +import System.IO +import System.IO.Unsafe ( unsafePerformIO ) + +import Foreign.Storable ( peekElemOff, peek ) +import Foreign.Marshal.Alloc ( free ) +import Foreign.Marshal.Array ( mallocArray, peekArray, advancePtr ) +import Foreign.C.Types ( CInt ) + +import Data.Bits ( rotateL ) +import Data.Char ( chr, ord, isSpace ) +import Data.Word ( Word8 ) +import Data.Int ( Int32 ) +import Control.Monad ( when ) + +-- #ifndef HAVE_HASKELL_ZLIB +import Foreign.Ptr ( nullPtr ) +import Foreign.ForeignPtr ( ForeignPtr ) +-- #endif +import Foreign.Ptr ( plusPtr, Ptr ) +import Foreign.ForeignPtr ( withForeignPtr ) + +-- #ifdef DEBUG_PS +import Foreign.ForeignPtr ( addForeignPtrFinalizer ) +import Foreign.Ptr ( FunPtr ) +-- #endif + +-- #if HAVE_HASKELL_ZLIB +import qualified Data.ByteString.Lazy as BL +import qualified Codec.Compression.GZip as GZ +-- #else +import Foreign.C.String ( CString, withCString ) +-- #endif + +-- #ifdef HAVE_MMAP +import System.IO.MMap( mmapFileByteString ) +import System.Mem( performGC ) +import System.Posix.Files( fileSize, getSymbolicLinkStatus ) +-- #endif + +-- ----------------------------------------------------------------------------- +-- obsolete debugging code + +-- # ifndef HAVE_HASKELL_ZLIB +debugForeignPtr :: ForeignPtr a -> String -> IO () +-- #ifdef DEBUG_PS +foreign import ccall unsafe "static fpstring.h debug_alloc" debug_alloc + :: Ptr a -> CString -> IO () +foreign import ccall unsafe "static fpstring.h & debug_free" debug_free + :: FunPtr (Ptr a -> IO ()) +debugForeignPtr fp n = + withCString n $ \cname-> withForeignPtr fp $ \p-> + do debug_alloc p cname + addForeignPtrFinalizer debug_free fp +-- #else +debugForeignPtr _ _ = return () +-- #endif +-- #endif + +-- ----------------------------------------------------------------------------- +-- unsafeWithInternals + +-- | Do something with the internals of a PackedString. Beware of +-- altering the contents! +unsafeWithInternals :: B.ByteString -> (Ptr Word8 -> Int -> IO a) -> IO a +unsafeWithInternals ps f + = case BI.toForeignPtr ps of + (fp,s,l) -> withForeignPtr fp $ \p -> f (p `plusPtr` s) l + +-- | readIntPS skips any whitespace at the beginning of its argument, and +-- reads an Int from the beginning of the PackedString. If there is no +-- integer at the beginning of the string, it returns Nothing, otherwise it +-- just returns the int read, along with a B.ByteString containing the +-- remainder of its input. + +readIntPS :: B.ByteString -> Maybe (Int, B.ByteString) +readIntPS = BC.readInt . BC.dropWhile isSpace + +-- ----------------------------------------------------------------------------- +-- Destructor functions (taking PackedStrings apart) + +unpackPSfromUTF8 :: B.ByteString -> String +unpackPSfromUTF8 ps = + case BI.toForeignPtr ps of + (_,_, 0) -> "" + (x,s,l) -> + unsafePerformIO $ withForeignPtr x $ \p-> + do outbuf <- mallocArray l + lout <- fromIntegral `fmap` + utf8_to_ints outbuf (p `plusPtr` s) (fromIntegral l) + when (lout < 0) $ error "Bad UTF8!" + str <- (map (chr . fromIntegral)) `fmap` peekArray lout outbuf + free outbuf + return str + +foreign import ccall unsafe "static fpstring.h utf8_to_ints" utf8_to_ints + :: Ptr Int -> Ptr Word8 -> CInt -> IO CInt + +-- ----------------------------------------------------------------------------- +-- List-mimicking functions for PackedStrings + +{-# INLINE ifHeadThenTail #-} +ifHeadThenTail :: Word8 -> B.ByteString -> Maybe B.ByteString +ifHeadThenTail c s = case uncons s of + Just (w, t) | w == c -> Just t + _ -> Nothing + +------------------------------------------------------------------------ +-- A reimplementation of Data.ByteString.Char8.dropSpace, but +-- specialised to darcs' need for a 4 way isspace. +-- +-- TODO: if it is safe to use the expanded definition of isSpaceWord8 +-- provided by Data.ByteString.Char8, then all this can go. + +-- A locale-independent isspace(3) so patches are interpreted the same everywhere. +-- ((c) == ' ' || (c) == '\t' || (c) == '\n' || (c) == '\r') +isSpaceWord8 :: Word8 -> Bool +isSpaceWord8 w = + w == 0x20 || -- ' ' + w == 0x09 || -- '\t' + w == 0x0A || -- '\n' + w == 0x0D -- '\r' +{-# INLINE isSpaceWord8 #-} + +firstnonspace :: Ptr Word8 -> Int -> Int -> IO Int +firstnonspace !ptr !n !m + | n >= m = return n + | otherwise = do w <- peekElemOff ptr n + if isSpaceWord8 w then firstnonspace ptr (n+1) m else return n + +firstspace :: Ptr Word8 -> Int -> Int -> IO Int +firstspace !ptr !n !m + | n >= m = return n + | otherwise = do w <- peekElemOff ptr n + if (not . isSpaceWord8) w then firstspace ptr (n+1) m else return n + +-- | 'dropSpace' efficiently returns the 'ByteString' argument with +-- white space Chars removed from the front. It is more efficient than +-- calling dropWhile for removing whitespace. I.e. +-- +-- > dropWhile isSpace == dropSpace +-- +dropSpace :: B.ByteString -> B.ByteString +dropSpace (BI.PS x s l) = BI.inlinePerformIO $ withForeignPtr x $ \p -> do + i <- firstnonspace (p `plusPtr` s) 0 l + return $! if i == l then B.empty else BI.PS x (s+i) (l-i) +{-# INLINE dropSpace #-} + +-- | 'breakSpace' returns the pair of ByteStrings when the argument is +-- broken at the first whitespace byte. I.e. +-- +-- > break isSpace == breakSpace +-- +breakSpace :: B.ByteString -> (B.ByteString,B.ByteString) +breakSpace (BI.PS x s l) = BI.inlinePerformIO $ withForeignPtr x $ \p -> do + i <- firstspace (p `plusPtr` s) 0 l + return $! case () of {_ + | i == 0 -> (B.empty, BI.PS x s l) + | i == l -> (BI.PS x s l, B.empty) + | otherwise -> (BI.PS x s i, BI.PS x (s+i) (l-i)) + } +{-# INLINE breakSpace #-} + +------------------------------------------------------------------------ + +{-# INLINE is_funky #-} +is_funky :: B.ByteString -> Bool +is_funky ps = case BI.toForeignPtr ps of + (x,s,l) -> + unsafePerformIO $ withForeignPtr x $ \p-> + (/=0) `fmap` has_funky_char (p `plusPtr` s) (fromIntegral l) + +foreign import ccall unsafe "fpstring.h has_funky_char" has_funky_char + :: Ptr Word8 -> CInt -> IO CInt + +------------------------------------------------------------------------ + +-- ByteString rewrites break (=='x') to breakByte 'x' +-- break ((==) x) = breakChar x +-- break (==x) = breakChar x +-- + +{- +{-# INLINE breakOnPS #-} +breakOnPS :: Char -> B.ByteString -> (B.ByteString, B.ByteString) +breakOnPS c p = case BC.elemIndex c p of + Nothing -> (p, BC.empty) + Just n -> (B.take n p, B.drop n p) +-} + +{-# INLINE hashPS #-} +hashPS :: B.ByteString -> Int32 +hashPS ps = + case BI.toForeignPtr ps of + (x,s,l) -> + unsafePerformIO $ withForeignPtr x $ \p-> + do hash (p `plusPtr` s) l + +hash :: Ptr Word8 -> Int -> IO Int32 +hash ptr len = f (0 :: Int32) ptr len + where f h _ 0 = return h + f h p n = do x <- peek p + let !h' = (fromIntegral x) + (rotateL h 8) + f h' (p `advancePtr` 1) (n-1) + +{-# INLINE substrPS #-} +substrPS :: B.ByteString -> B.ByteString -> Maybe Int +substrPS tok str + | B.null tok = Just 0 + | B.length tok > B.length str = Nothing + | otherwise = do n <- BC.elemIndex (BC.head tok) str + let ttok = B.tail tok + reststr = B.drop (n+1) str + if ttok == B.take (B.length ttok) reststr + then Just n + else ((n+1)+) `fmap` substrPS tok reststr + +------------------------------------------------------------------------ + +-- TODO: replace breakFirstPS and breakLastPS with definitions based on +-- ByteString's break/breakEnd +{-# INLINE breakFirstPS #-} +breakFirstPS :: Char -> B.ByteString -> Maybe (B.ByteString,B.ByteString) +breakFirstPS c p = case BC.elemIndex c p of + Nothing -> Nothing + Just n -> Just (B.take n p, B.drop (n+1) p) + +{-# INLINE breakLastPS #-} +breakLastPS :: Char -> B.ByteString -> Maybe (B.ByteString,B.ByteString) +breakLastPS c p = case BC.elemIndexEnd c p of + Nothing -> Nothing + Just n -> Just (B.take n p, B.drop (n+1) p) + +-- TODO: rename +{-# INLINE linesPS #-} +linesPS :: B.ByteString -> [B.ByteString] +linesPS ps + | B.null ps = [B.empty] + | otherwise = BC.split '\n' ps + +{- QuickCheck property: + +import Test.QuickCheck +import qualified Data.ByteString.Char8 as BC +import Data.Char +instance Arbitrary BC.ByteString where + arbitrary = fmap BC.pack arbitrary +instance Arbitrary Char where + arbitrary = chr `fmap` choose (32,127) +deepCheck = check (defaultConfig { configMaxTest = 10000}) +testLines = deepCheck (\x -> (linesPS x == linesPSOld x)) +linesPSOld ps = case BC.elemIndex '\n' ps of + Nothing -> [ps] + Just n -> B.take n ps : linesPS (B.drop (n+1) ps) -} + +{-| This function acts exactly like the "Prelude" unlines function, or like +"Data.ByteString.Char8" 'unlines', but with one important difference: it will +produce a string which may not end with a newline! That is: + +> unlinesPS ["foo", "bar"] + +evaluates to \"foo\\nbar\", not \"foo\\nbar\\n\"! This point should hold true for +'linesPS' as well. + +TODO: rename this function. -} +unlinesPS :: [B.ByteString] -> B.ByteString +unlinesPS [] = BC.empty +unlinesPS x = BC.init $ BC.unlines x +{-# INLINE unlinesPS #-} +{- QuickCheck property: + +testUnlines = deepCheck (\x -> (unlinesPS x == unlinesPSOld x)) +unlinesPSOld ss = BC.concat $ intersperse_newlines ss + where intersperse_newlines (a:b:s) = a : newline : intersperse_newlines (b:s) + intersperse_newlines s = s + newline = BC.pack "\n" -} + +-- ----------------------------------------------------------------------------- +-- gzReadFilePS + +-- | Read an entire file, which may or may not be gzip compressed, directly +-- into a 'B.ByteString'. + +-- #ifndef HAVE_HASKELL_ZLIB +foreign import ccall unsafe "static zlib.h gzopen" c_gzopen + :: CString -> CString -> IO (Ptr ()) +foreign import ccall unsafe "static zlib.h gzclose" c_gzclose + :: Ptr () -> IO () +foreign import ccall unsafe "static zlib.h gzread" c_gzread + :: Ptr () -> Ptr Word8 -> CInt -> IO CInt +foreign import ccall unsafe "static zlib.h gzwrite" c_gzwrite + :: Ptr () -> Ptr Word8 -> CInt -> IO CInt +-- #endif + +gzReadFilePS :: FilePath -> IO B.ByteString +gzReadFilePS f = do + h <- openBinaryFile f ReadMode + header <- B.hGet h 2 + if header /= BC.pack "\31\139" + then do hClose h + mmapFilePS f + else do hSeek h SeekFromEnd (-4) + len <- hGetLittleEndInt h + hClose h +-- #ifdef HAVE_HASKELL_ZLIB + -- Passing the length to GZ.decompressWith means + -- that BL.toChunks only produces one chunk, which in turn + -- means that B.concat won't need to copy data. + -- If the length is wrong this will just affect efficiency, not correctness + let decompress = GZ.decompressWith GZ.defaultDecompressParams { + GZ.decompressBufferSize = len + } + fmap (B.concat . BL.toChunks . decompress) $ +-- #ifdef HAVE_OLD_BYTESTRING + -- bytestring < 0.9.1 had a bug where it did not know to close handles upon EOF + -- performance would be better with a newer bytestring and lazy + -- readFile below -- ratify readFile: comment + fmap (BL.fromChunks . (:[])) $ + B.readFile f -- ratify readFile: immediately consumed +-- #else + BL.readFile f -- ratify readFile: immediately consumed by the conversion to a strict bytestring +-- #endif +-- #else + withCString f $ \fstr-> withCString "rb" $ \rb-> do + gzf <- c_gzopen fstr rb + when (gzf == nullPtr) $ fail $ "problem opening file "++f + fp <- BI.mallocByteString len + debugForeignPtr fp $ "gzReadFilePS "++f + lread <- withForeignPtr fp $ \p -> + c_gzread gzf p (fromIntegral len) + c_gzclose gzf + when (fromIntegral lread /= len) $ + fail $ "problem gzreading file "++f + return $ fromForeignPtr fp 0 len +-- #endif + +hGetLittleEndInt :: Handle -> IO Int +hGetLittleEndInt h = do + b1 <- ord `fmap` hGetChar h + b2 <- ord `fmap` hGetChar h + b3 <- ord `fmap` hGetChar h + b4 <- ord `fmap` hGetChar h + return $ b1 + 256*b2 + 65536*b3 + 16777216*b4 + +gzWriteFilePS :: FilePath -> B.ByteString -> IO () +gzWriteFilePS f ps = gzWriteFilePSs f [ps] + +gzWriteFilePSs :: FilePath -> [B.ByteString] -> IO () +gzWriteFilePSs f pss = +-- #ifdef HAVE_HASKELL_ZLIB + BL.writeFile f $ GZ.compress $ BL.fromChunks pss +-- #else + withCString f $ \fstr -> withCString "wb" $ \wb -> do + gzf <- c_gzopen fstr wb + when (gzf == nullPtr) $ fail $ "problem gzopening file for write: "++f + mapM_ (gzWriteToGzf gzf) pss `catch` + \_ -> fail $ "problem gzwriting file: "++f + c_gzclose gzf + +gzWriteToGzf :: Ptr () -> B.ByteString -> IO () +gzWriteToGzf gzf ps = case BI.toForeignPtr ps of + (_,_,0) -> return () -- avoid calling gzwrite with 0 length this would + -- trouble on some versions of zlib, and is always + -- unnecessary. + (x,s,l) -> do + lw <- withForeignPtr x $ \p -> c_gzwrite gzf (p `plusPtr` s) + (fromIntegral l) + when (fromIntegral lw /= l) $ fail $ "problem in gzWriteToGzf" +-- #endif + +-- ----------------------------------------------------------------------------- +-- mmapFilePS + +-- | Like readFilePS, this reads an entire file directly into a +-- 'B.ByteString', but it is even more efficient. It involves directly +-- mapping the file to memory. This has the advantage that the contents of +-- the file never need to be copied. Also, under memory pressure the page +-- may simply be discarded, wile in the case of readFilePS it would need to +-- be written to swap. If you read many small files, mmapFilePS will be +-- less memory-efficient than readFilePS, since each mmapFilePS takes up a +-- separate page of memory. Also, you can run into bus errors if the file +-- is modified. NOTE: as with 'readFilePS', the string representation in +-- the file is assumed to be ISO-8859-1. + +mmapFilePS :: FilePath -> IO B.ByteString +-- #ifdef HAVE_MMAP +mmapFilePS f = do + x <- mmapFileByteString f Nothing + `catch` (\_ -> do + size <- fileSize `fmap` getSymbolicLinkStatus f + if size == 0 + then return B.empty + else performGC >> mmapFileByteString f Nothing) + return x +-- #else +mmapFilePS = B.readFile +-- #endif + +-- ------------------------------------------------------------------------- +-- fromPS2Hex + +foreign import ccall unsafe "static fpstring.h conv_to_hex" conv_to_hex + :: Ptr Word8 -> Ptr Word8 -> CInt -> IO () + +fromPS2Hex :: B.ByteString -> B.ByteString +fromPS2Hex ps = case BI.toForeignPtr ps of + (x,s,l) -> + BI.unsafeCreate (2*l) $ \p -> withForeignPtr x $ \f -> + conv_to_hex p (f `plusPtr` s) $ fromIntegral l + +-- ------------------------------------------------------------------------- +-- fromHex2PS + +foreign import ccall unsafe "static fpstring.h conv_from_hex" conv_from_hex + :: Ptr Word8 -> Ptr Word8 -> CInt -> IO () + +fromHex2PS :: B.ByteString -> B.ByteString +fromHex2PS ps = case BI.toForeignPtr ps of + (x,s,l) -> + BI.unsafeCreate (l `div` 2) $ \p -> withForeignPtr x $ \f -> + conv_from_hex p (f `plusPtr` s) (fromIntegral $ l `div` 2) + +-- ------------------------------------------------------------------------- +-- betweenLinesPS + +-- | betweenLinesPS returns the B.ByteString between the two lines given, +-- or Nothing if they do not appear. + +betweenLinesPS :: B.ByteString -> B.ByteString -> B.ByteString + -> Maybe (B.ByteString) +betweenLinesPS start end ps + = case break (start ==) (linesPS ps) of + (_, _:rest@(bs1:_)) -> + case BI.toForeignPtr bs1 of + (ps1,s1,_) -> + case break (end ==) rest of + (_, bs2:_) -> case BI.toForeignPtr bs2 of (_,s2,_) -> Just $ fromForeignPtr ps1 s1 (s2 - s1) + _ -> Nothing + _ -> Nothing + +-- ------------------------------------------------------------------------- +-- break_after_nth_newline + +break_after_nth_newline :: Int -> B.ByteString + -> Maybe (B.ByteString, B.ByteString) +break_after_nth_newline 0 the_ps | B.null the_ps = Just (B.empty, B.empty) +break_after_nth_newline n the_ps = + case BI.toForeignPtr the_ps of + (fp,the_s,l) -> + unsafePerformIO $ withForeignPtr fp $ \p -> + do let findit 0 s | s == end = return $ Just (the_ps, B.empty) + findit _ s | s == end = return Nothing + findit 0 s = let left_l = s - the_s + in return $ Just (fromForeignPtr fp the_s left_l, + fromForeignPtr fp s (l - left_l)) + findit i s = do w <- peekElemOff p s + if w == nl then findit (i-1) (s+1) + else findit i (s+1) + nl = BI.c2w '\n' + end = the_s + l + findit n the_s + +-- ------------------------------------------------------------------------- +-- break_before_nth_newline + +break_before_nth_newline :: Int -> B.ByteString -> (B.ByteString, B.ByteString) +break_before_nth_newline 0 the_ps + | B.null the_ps = (B.empty, B.empty) +break_before_nth_newline n the_ps = + case BI.toForeignPtr the_ps of + (fp,the_s,l) -> + unsafePerformIO $ withForeignPtr fp $ \p -> + do let findit _ s | s == end = return (the_ps, B.empty) + findit i s = do w <- peekElemOff p s + if w == nl + then if i == 0 + then let left_l = s - the_s + in return (fromForeignPtr fp the_s left_l, + fromForeignPtr fp s (l - left_l)) + else findit (i-1) (s+1) + else findit i (s+1) + nl = BI.c2w '\n' + end = the_s + l + findit n the_s diff -ruN haskell-src-exts-1.9.0/Test/examples/ClassInstType.hs haskell-src-exts/Test/examples/ClassInstType.hs --- haskell-src-exts-1.9.0/Test/examples/ClassInstType.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/ClassInstType.hs 2010-12-15 09:33:39.709913874 -0800 @@ -0,0 +1,17 @@ +module ClassInstType where + +class Dir d where + localDir :: d -> IO FilePath + +instance Dir Directory where + localDir (Local f) = return f + + localDir (Darcs {url=url,darcsVersion=Patch patch,subDirectory=subDir}) = do + tmp <- createTempDir 0 "haskelld" + darcsOut <- runDarcsCommand tmp "get" ["--lazy","--to-match","hash "++ patch,url,"fs"] + print darcsOut + let (ExitSuccess,"",out) = darcsOut + print out + return $ tmp "fs" subDir + +type URL = String diff -ruN haskell-src-exts-1.9.0/Test/examples/CParser.hs haskell-src-exts/Test/examples/CParser.hs --- haskell-src-exts-1.9.0/Test/examples/CParser.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/CParser.hs 2010-12-15 09:33:39.539463923 -0800 @@ -0,0 +1,6323 @@ +{-# OPTIONS -fglasgow-exts -cpp #-} +{-# LANGUAGE MagicHash #-} +module Language.C.Parser.Parser ( + -- * Parse a C translation unit + parseC, + -- * Exposed Parsers + translUnitP, extDeclP, statementP, expressionP +) where + +-- Relevant C99 sections: +-- +-- 6.5 Expressions .1 - .17 and 6.6 (almost literally) +-- Supported GNU extensions: +-- - Allow a compound statement as an expression +-- - Various __builtin_* forms that take type parameters +-- - `alignof' expression or type +-- - `__extension__' to suppress warnings about extensions +-- - Allow taking address of a label with: && label +-- - Omitting the `then' part of conditional expressions +-- - complex numbers +-- +-- 6.7 C Declarations .1 -.8 +-- Supported GNU extensions: +-- - '__thread' thread local storage (6.7.1) +-- +-- 6.8 Statements .1 - .8 +-- Supported GNU extensions: +-- - case ranges (C99 6.8.1) +-- - '__label__ ident;' declarations (C99 6.8.2) +-- - computed gotos (C99 6.8.6) +-- +-- 6.9 Translation unit +-- Supported GNU extensions: +-- - allow empty translation_unit +-- - allow redundant ';' +-- - allow extension keyword before external declaration +-- - asm definitions +-- +-- Since some of the grammar productions are quite difficult to read, +-- (especially those involved with the decleration syntax) we document them +-- with an extended syntax that allows a more consise representation: +-- +-- Ordinary rules +-- +-- foo named terminal or non-terminal +-- +-- 'c' terminal, literal character token +-- +-- A B concatenation +-- +-- A | B alternation +-- +-- (A) grouping +-- +-- Extended rules +-- +-- A? optional, short hand for (A|) or [A]{ 0==A || 1==A } +-- +-- ... stands for some part of the grammar omitted for clarity +-- +-- {A} represents sequences, 0 or more. +-- +-- modifier which states that any permutation of the immediate subterms is valid +-- +-- +--- TODO ---------------------------------------------------------------------- +-- +-- !* We ignore the C99 static keyword (see C99 6.7.5.3) +-- !* We do not distinguish in the AST between incomplete array types and +-- complete variable length arrays ([ '*' ] means the latter). (see C99 6.7.5.2) +-- !* The AST doesn't allow recording __attribute__ of unnamed struct field +-- (see , struct_default_declaring_list, struct_identifier_declarator) +-- !* see `We're being far to liberal here' (... struct definition within structs) +-- * Documentation isn't complete and consistent yet. + +import Prelude hiding (reverse) +import qualified Data.List as List +import Control.Monad (mplus) +import Language.C.Parser.Builtin (builtinTypeNames) +import Language.C.Parser.Lexer (lexC, parseError) +import Language.C.Parser.Tokens (CToken(..), GnuCTok(..), posLenOfTok) +import Language.C.Parser.ParserMonad (P, failP, execParser, getNewName, addTypedef, shadowTypedef, getCurrentPosition, + enterScope, leaveScope, getLastToken, getSavedToken, ParseError(..)) + +import Language.C.Data.RList +import Language.C.Data.InputStream +import Language.C.Data.Ident +import Language.C.Data.Name +import Language.C.Data.Node +import Language.C.Data.Position +import Language.C.Syntax +-- #if __GLASGOW_HASKELL__ >= 503 +import Data.Array +-- #else +import Array +-- #endif +-- #if __GLASGOW_HASKELL__ >= 503 +import GHC.Exts +-- #else +import GlaExts +-- #endif + +-- parser produced by Happy Version 1.16 + +newtype HappyAbsSyn = HappyAbsSyn (() -> ()) +happyIn7 :: (CTranslUnit) -> (HappyAbsSyn ) +happyIn7 x = unsafeCoerce# x +{-# INLINE happyIn7 #-} +happyOut7 :: (HappyAbsSyn ) -> (CTranslUnit) +happyOut7 x = unsafeCoerce# x +{-# INLINE happyOut7 #-} +happyIn8 :: (Reversed [CExtDecl]) -> (HappyAbsSyn ) +happyIn8 x = unsafeCoerce# x +{-# INLINE happyIn8 #-} +happyOut8 :: (HappyAbsSyn ) -> (Reversed [CExtDecl]) +happyOut8 x = unsafeCoerce# x +{-# INLINE happyOut8 #-} +happyIn9 :: (CExtDecl) -> (HappyAbsSyn ) +happyIn9 x = unsafeCoerce# x +{-# INLINE happyIn9 #-} +happyOut9 :: (HappyAbsSyn ) -> (CExtDecl) +happyOut9 x = unsafeCoerce# x +{-# INLINE happyOut9 #-} +happyIn10 :: (CFunDef) -> (HappyAbsSyn ) +happyIn10 x = unsafeCoerce# x +{-# INLINE happyIn10 #-} +happyOut10 :: (HappyAbsSyn ) -> (CFunDef) +happyOut10 x = unsafeCoerce# x +{-# INLINE happyOut10 #-} +happyIn11 :: (CDeclr) -> (HappyAbsSyn ) +happyIn11 x = unsafeCoerce# x +{-# INLINE happyIn11 #-} +happyOut11 :: (HappyAbsSyn ) -> (CDeclr) +happyOut11 x = unsafeCoerce# x +{-# INLINE happyOut11 #-} +happyIn12 :: (CStat) -> (HappyAbsSyn ) +happyIn12 x = unsafeCoerce# x +{-# INLINE happyIn12 #-} +happyOut12 :: (HappyAbsSyn ) -> (CStat) +happyOut12 x = unsafeCoerce# x +{-# INLINE happyOut12 #-} +happyIn13 :: (CStat) -> (HappyAbsSyn ) +happyIn13 x = unsafeCoerce# x +{-# INLINE happyIn13 #-} +happyOut13 :: (HappyAbsSyn ) -> (CStat) +happyOut13 x = unsafeCoerce# x +{-# INLINE happyOut13 #-} +happyIn14 :: (CStat) -> (HappyAbsSyn ) +happyIn14 x = unsafeCoerce# x +{-# INLINE happyIn14 #-} +happyOut14 :: (HappyAbsSyn ) -> (CStat) +happyOut14 x = unsafeCoerce# x +{-# INLINE happyOut14 #-} +happyIn15 :: (()) -> (HappyAbsSyn ) +happyIn15 x = unsafeCoerce# x +{-# INLINE happyIn15 #-} +happyOut15 :: (HappyAbsSyn ) -> (()) +happyOut15 x = unsafeCoerce# x +{-# INLINE happyOut15 #-} +happyIn16 :: (()) -> (HappyAbsSyn ) +happyIn16 x = unsafeCoerce# x +{-# INLINE happyIn16 #-} +happyOut16 :: (HappyAbsSyn ) -> (()) +happyOut16 x = unsafeCoerce# x +{-# INLINE happyOut16 #-} +happyIn17 :: (Reversed [CBlockItem]) -> (HappyAbsSyn ) +happyIn17 x = unsafeCoerce# x +{-# INLINE happyIn17 #-} +happyOut17 :: (HappyAbsSyn ) -> (Reversed [CBlockItem]) +happyOut17 x = unsafeCoerce# x +{-# INLINE happyOut17 #-} +happyIn18 :: (CBlockItem) -> (HappyAbsSyn ) +happyIn18 x = unsafeCoerce# x +{-# INLINE happyIn18 #-} +happyOut18 :: (HappyAbsSyn ) -> (CBlockItem) +happyOut18 x = unsafeCoerce# x +{-# INLINE happyOut18 #-} +happyIn19 :: (CBlockItem) -> (HappyAbsSyn ) +happyIn19 x = unsafeCoerce# x +{-# INLINE happyIn19 #-} +happyOut19 :: (HappyAbsSyn ) -> (CBlockItem) +happyOut19 x = unsafeCoerce# x +{-# INLINE happyOut19 #-} +happyIn20 :: (CFunDef) -> (HappyAbsSyn ) +happyIn20 x = unsafeCoerce# x +{-# INLINE happyIn20 #-} +happyOut20 :: (HappyAbsSyn ) -> (CFunDef) +happyOut20 x = unsafeCoerce# x +{-# INLINE happyOut20 #-} +happyIn21 :: (Reversed [Ident]) -> (HappyAbsSyn ) +happyIn21 x = unsafeCoerce# x +{-# INLINE happyIn21 #-} +happyOut21 :: (HappyAbsSyn ) -> (Reversed [Ident]) +happyOut21 x = unsafeCoerce# x +{-# INLINE happyOut21 #-} +happyIn22 :: (CStat) -> (HappyAbsSyn ) +happyIn22 x = unsafeCoerce# x +{-# INLINE happyIn22 #-} +happyOut22 :: (HappyAbsSyn ) -> (CStat) +happyOut22 x = unsafeCoerce# x +{-# INLINE happyOut22 #-} +happyIn23 :: (CStat) -> (HappyAbsSyn ) +happyIn23 x = unsafeCoerce# x +{-# INLINE happyIn23 #-} +happyOut23 :: (HappyAbsSyn ) -> (CStat) +happyOut23 x = unsafeCoerce# x +{-# INLINE happyOut23 #-} +happyIn24 :: (CStat) -> (HappyAbsSyn ) +happyIn24 x = unsafeCoerce# x +{-# INLINE happyIn24 #-} +happyOut24 :: (HappyAbsSyn ) -> (CStat) +happyOut24 x = unsafeCoerce# x +{-# INLINE happyOut24 #-} +happyIn25 :: (CStat) -> (HappyAbsSyn ) +happyIn25 x = unsafeCoerce# x +{-# INLINE happyIn25 #-} +happyOut25 :: (HappyAbsSyn ) -> (CStat) +happyOut25 x = unsafeCoerce# x +{-# INLINE happyOut25 #-} +happyIn26 :: (CAsmStmt) -> (HappyAbsSyn ) +happyIn26 x = unsafeCoerce# x +{-# INLINE happyIn26 #-} +happyOut26 :: (HappyAbsSyn ) -> (CAsmStmt) +happyOut26 x = unsafeCoerce# x +{-# INLINE happyOut26 #-} +happyIn27 :: (Maybe CTypeQual) -> (HappyAbsSyn ) +happyIn27 x = unsafeCoerce# x +{-# INLINE happyIn27 #-} +happyOut27 :: (HappyAbsSyn ) -> (Maybe CTypeQual) +happyOut27 x = unsafeCoerce# x +{-# INLINE happyOut27 #-} +happyIn28 :: ([CAsmOperand]) -> (HappyAbsSyn ) +happyIn28 x = unsafeCoerce# x +{-# INLINE happyIn28 #-} +happyOut28 :: (HappyAbsSyn ) -> ([CAsmOperand]) +happyOut28 x = unsafeCoerce# x +{-# INLINE happyOut28 #-} +happyIn29 :: (Reversed [CAsmOperand]) -> (HappyAbsSyn ) +happyIn29 x = unsafeCoerce# x +{-# INLINE happyIn29 #-} +happyOut29 :: (HappyAbsSyn ) -> (Reversed [CAsmOperand]) +happyOut29 x = unsafeCoerce# x +{-# INLINE happyOut29 #-} +happyIn30 :: (CAsmOperand) -> (HappyAbsSyn ) +happyIn30 x = unsafeCoerce# x +{-# INLINE happyIn30 #-} +happyOut30 :: (HappyAbsSyn ) -> (CAsmOperand) +happyOut30 x = unsafeCoerce# x +{-# INLINE happyOut30 #-} +happyIn31 :: (Reversed [CStrLit]) -> (HappyAbsSyn ) +happyIn31 x = unsafeCoerce# x +{-# INLINE happyIn31 #-} +happyOut31 :: (HappyAbsSyn ) -> (Reversed [CStrLit]) +happyOut31 x = unsafeCoerce# x +{-# INLINE happyOut31 #-} +happyIn32 :: (CDecl) -> (HappyAbsSyn ) +happyIn32 x = unsafeCoerce# x +{-# INLINE happyIn32 #-} +happyOut32 :: (HappyAbsSyn ) -> (CDecl) +happyOut32 x = unsafeCoerce# x +{-# INLINE happyOut32 #-} +happyIn33 :: (Reversed [CDecl]) -> (HappyAbsSyn ) +happyIn33 x = unsafeCoerce# x +{-# INLINE happyIn33 #-} +happyOut33 :: (HappyAbsSyn ) -> (Reversed [CDecl]) +happyOut33 x = unsafeCoerce# x +{-# INLINE happyOut33 #-} +happyIn34 :: (CDecl) -> (HappyAbsSyn ) +happyIn34 x = unsafeCoerce# x +{-# INLINE happyIn34 #-} +happyOut34 :: (HappyAbsSyn ) -> (CDecl) +happyOut34 x = unsafeCoerce# x +{-# INLINE happyOut34 #-} +happyIn35 :: ((Maybe CStrLit, [CAttr])) -> (HappyAbsSyn ) +happyIn35 x = unsafeCoerce# x +{-# INLINE happyIn35 #-} +happyOut35 :: (HappyAbsSyn ) -> ((Maybe CStrLit, [CAttr])) +happyOut35 x = unsafeCoerce# x +{-# INLINE happyOut35 #-} +happyIn36 :: (CDecl) -> (HappyAbsSyn ) +happyIn36 x = unsafeCoerce# x +{-# INLINE happyIn36 #-} +happyOut36 :: (HappyAbsSyn ) -> (CDecl) +happyOut36 x = unsafeCoerce# x +{-# INLINE happyOut36 #-} +happyIn37 :: ([CDeclSpec]) -> (HappyAbsSyn ) +happyIn37 x = unsafeCoerce# x +{-# INLINE happyIn37 #-} +happyOut37 :: (HappyAbsSyn ) -> ([CDeclSpec]) +happyOut37 x = unsafeCoerce# x +{-# INLINE happyOut37 #-} +happyIn38 :: (Reversed [CDeclSpec]) -> (HappyAbsSyn ) +happyIn38 x = unsafeCoerce# x +{-# INLINE happyIn38 #-} +happyOut38 :: (HappyAbsSyn ) -> (Reversed [CDeclSpec]) +happyOut38 x = unsafeCoerce# x +{-# INLINE happyOut38 #-} +happyIn39 :: (CDeclSpec) -> (HappyAbsSyn ) +happyIn39 x = unsafeCoerce# x +{-# INLINE happyIn39 #-} +happyOut39 :: (HappyAbsSyn ) -> (CDeclSpec) +happyOut39 x = unsafeCoerce# x +{-# INLINE happyOut39 #-} +happyIn40 :: (CStorageSpec) -> (HappyAbsSyn ) +happyIn40 x = unsafeCoerce# x +{-# INLINE happyIn40 #-} +happyOut40 :: (HappyAbsSyn ) -> (CStorageSpec) +happyOut40 x = unsafeCoerce# x +{-# INLINE happyOut40 #-} +happyIn41 :: ([CDeclSpec]) -> (HappyAbsSyn ) +happyIn41 x = unsafeCoerce# x +{-# INLINE happyIn41 #-} +happyOut41 :: (HappyAbsSyn ) -> ([CDeclSpec]) +happyOut41 x = unsafeCoerce# x +{-# INLINE happyOut41 #-} +happyIn42 :: (CTypeSpec) -> (HappyAbsSyn ) +happyIn42 x = unsafeCoerce# x +{-# INLINE happyIn42 #-} +happyOut42 :: (HappyAbsSyn ) -> (CTypeSpec) +happyOut42 x = unsafeCoerce# x +{-# INLINE happyOut42 #-} +happyIn43 :: (Reversed [CDeclSpec]) -> (HappyAbsSyn ) +happyIn43 x = unsafeCoerce# x +{-# INLINE happyIn43 #-} +happyOut43 :: (HappyAbsSyn ) -> (Reversed [CDeclSpec]) +happyOut43 x = unsafeCoerce# x +{-# INLINE happyOut43 #-} +happyIn44 :: (Reversed [CDeclSpec]) -> (HappyAbsSyn ) +happyIn44 x = unsafeCoerce# x +{-# INLINE happyIn44 #-} +happyOut44 :: (HappyAbsSyn ) -> (Reversed [CDeclSpec]) +happyOut44 x = unsafeCoerce# x +{-# INLINE happyOut44 #-} +happyIn45 :: (Reversed [CDeclSpec]) -> (HappyAbsSyn ) +happyIn45 x = unsafeCoerce# x +{-# INLINE happyIn45 #-} +happyOut45 :: (HappyAbsSyn ) -> (Reversed [CDeclSpec]) +happyOut45 x = unsafeCoerce# x +{-# INLINE happyOut45 #-} +happyIn46 :: (Reversed [CDeclSpec]) -> (HappyAbsSyn ) +happyIn46 x = unsafeCoerce# x +{-# INLINE happyIn46 #-} +happyOut46 :: (HappyAbsSyn ) -> (Reversed [CDeclSpec]) +happyOut46 x = unsafeCoerce# x +{-# INLINE happyOut46 #-} +happyIn47 :: (Reversed [CDeclSpec]) -> (HappyAbsSyn ) +happyIn47 x = unsafeCoerce# x +{-# INLINE happyIn47 #-} +happyOut47 :: (HappyAbsSyn ) -> (Reversed [CDeclSpec]) +happyOut47 x = unsafeCoerce# x +{-# INLINE happyOut47 #-} +happyIn48 :: (Reversed [CDeclSpec]) -> (HappyAbsSyn ) +happyIn48 x = unsafeCoerce# x +{-# INLINE happyIn48 #-} +happyOut48 :: (HappyAbsSyn ) -> (Reversed [CDeclSpec]) +happyOut48 x = unsafeCoerce# x +{-# INLINE happyOut48 #-} +happyIn49 :: (CTypeSpec) -> (HappyAbsSyn ) +happyIn49 x = unsafeCoerce# x +{-# INLINE happyIn49 #-} +happyOut49 :: (HappyAbsSyn ) -> (CTypeSpec) +happyOut49 x = unsafeCoerce# x +{-# INLINE happyOut49 #-} +happyIn50 :: (CStructUnion) -> (HappyAbsSyn ) +happyIn50 x = unsafeCoerce# x +{-# INLINE happyIn50 #-} +happyOut50 :: (HappyAbsSyn ) -> (CStructUnion) +happyOut50 x = unsafeCoerce# x +{-# INLINE happyOut50 #-} +happyIn51 :: (Located CStructTag) -> (HappyAbsSyn ) +happyIn51 x = unsafeCoerce# x +{-# INLINE happyIn51 #-} +happyOut51 :: (HappyAbsSyn ) -> (Located CStructTag) +happyOut51 x = unsafeCoerce# x +{-# INLINE happyOut51 #-} +happyIn52 :: (Reversed [CDecl]) -> (HappyAbsSyn ) +happyIn52 x = unsafeCoerce# x +{-# INLINE happyIn52 #-} +happyOut52 :: (HappyAbsSyn ) -> (Reversed [CDecl]) +happyOut52 x = unsafeCoerce# x +{-# INLINE happyOut52 #-} +happyIn53 :: (CDecl) -> (HappyAbsSyn ) +happyIn53 x = unsafeCoerce# x +{-# INLINE happyIn53 #-} +happyOut53 :: (HappyAbsSyn ) -> (CDecl) +happyOut53 x = unsafeCoerce# x +{-# INLINE happyOut53 #-} +happyIn54 :: (CDecl) -> (HappyAbsSyn ) +happyIn54 x = unsafeCoerce# x +{-# INLINE happyIn54 #-} +happyOut54 :: (HappyAbsSyn ) -> (CDecl) +happyOut54 x = unsafeCoerce# x +{-# INLINE happyOut54 #-} +happyIn55 :: (CDecl) -> (HappyAbsSyn ) +happyIn55 x = unsafeCoerce# x +{-# INLINE happyIn55 #-} +happyOut55 :: (HappyAbsSyn ) -> (CDecl) +happyOut55 x = unsafeCoerce# x +{-# INLINE happyOut55 #-} +happyIn56 :: ((Maybe CDeclr, Maybe CExpr)) -> (HappyAbsSyn ) +happyIn56 x = unsafeCoerce# x +{-# INLINE happyIn56 #-} +happyOut56 :: (HappyAbsSyn ) -> ((Maybe CDeclr, Maybe CExpr)) +happyOut56 x = unsafeCoerce# x +{-# INLINE happyOut56 #-} +happyIn57 :: ((Maybe CDeclr, Maybe CExpr)) -> (HappyAbsSyn ) +happyIn57 x = unsafeCoerce# x +{-# INLINE happyIn57 #-} +happyOut57 :: (HappyAbsSyn ) -> ((Maybe CDeclr, Maybe CExpr)) +happyOut57 x = unsafeCoerce# x +{-# INLINE happyOut57 #-} +happyIn58 :: (CEnum) -> (HappyAbsSyn ) +happyIn58 x = unsafeCoerce# x +{-# INLINE happyIn58 #-} +happyOut58 :: (HappyAbsSyn ) -> (CEnum) +happyOut58 x = unsafeCoerce# x +{-# INLINE happyOut58 #-} +happyIn59 :: (Reversed [(Ident, Maybe CExpr)]) -> (HappyAbsSyn ) +happyIn59 x = unsafeCoerce# x +{-# INLINE happyIn59 #-} +happyOut59 :: (HappyAbsSyn ) -> (Reversed [(Ident, Maybe CExpr)]) +happyOut59 x = unsafeCoerce# x +{-# INLINE happyOut59 #-} +happyIn60 :: ((Ident, Maybe CExpr)) -> (HappyAbsSyn ) +happyIn60 x = unsafeCoerce# x +{-# INLINE happyIn60 #-} +happyOut60 :: (HappyAbsSyn ) -> ((Ident, Maybe CExpr)) +happyOut60 x = unsafeCoerce# x +{-# INLINE happyOut60 #-} +happyIn61 :: (CTypeQual) -> (HappyAbsSyn ) +happyIn61 x = unsafeCoerce# x +{-# INLINE happyIn61 #-} +happyOut61 :: (HappyAbsSyn ) -> (CTypeQual) +happyOut61 x = unsafeCoerce# x +{-# INLINE happyOut61 #-} +happyIn62 :: (Reversed [CTypeQual]) -> (HappyAbsSyn ) +happyIn62 x = unsafeCoerce# x +{-# INLINE happyIn62 #-} +happyOut62 :: (HappyAbsSyn ) -> (Reversed [CTypeQual]) +happyOut62 x = unsafeCoerce# x +{-# INLINE happyOut62 #-} +happyIn63 :: (CDeclrR) -> (HappyAbsSyn ) +happyIn63 x = unsafeCoerce# x +{-# INLINE happyIn63 #-} +happyOut63 :: (HappyAbsSyn ) -> (CDeclrR) +happyOut63 x = unsafeCoerce# x +{-# INLINE happyOut63 #-} +happyIn64 :: (Maybe CStrLit) -> (HappyAbsSyn ) +happyIn64 x = unsafeCoerce# x +{-# INLINE happyIn64 #-} +happyOut64 :: (HappyAbsSyn ) -> (Maybe CStrLit) +happyOut64 x = unsafeCoerce# x +{-# INLINE happyOut64 #-} +happyIn65 :: (CDeclrR) -> (HappyAbsSyn ) +happyIn65 x = unsafeCoerce# x +{-# INLINE happyIn65 #-} +happyOut65 :: (HappyAbsSyn ) -> (CDeclrR) +happyOut65 x = unsafeCoerce# x +{-# INLINE happyOut65 #-} +happyIn66 :: (CDeclrR) -> (HappyAbsSyn ) +happyIn66 x = unsafeCoerce# x +{-# INLINE happyIn66 #-} +happyOut66 :: (HappyAbsSyn ) -> (CDeclrR) +happyOut66 x = unsafeCoerce# x +{-# INLINE happyOut66 #-} +happyIn67 :: (CDeclrR) -> (HappyAbsSyn ) +happyIn67 x = unsafeCoerce# x +{-# INLINE happyIn67 #-} +happyOut67 :: (HappyAbsSyn ) -> (CDeclrR) +happyOut67 x = unsafeCoerce# x +{-# INLINE happyOut67 #-} +happyIn68 :: (CDeclrR) -> (HappyAbsSyn ) +happyIn68 x = unsafeCoerce# x +{-# INLINE happyIn68 #-} +happyOut68 :: (HappyAbsSyn ) -> (CDeclrR) +happyOut68 x = unsafeCoerce# x +{-# INLINE happyOut68 #-} +happyIn69 :: (CDeclrR) -> (HappyAbsSyn ) +happyIn69 x = unsafeCoerce# x +{-# INLINE happyIn69 #-} +happyOut69 :: (HappyAbsSyn ) -> (CDeclrR) +happyOut69 x = unsafeCoerce# x +{-# INLINE happyOut69 #-} +happyIn70 :: (CDeclrR) -> (HappyAbsSyn ) +happyIn70 x = unsafeCoerce# x +{-# INLINE happyIn70 #-} +happyOut70 :: (HappyAbsSyn ) -> (CDeclrR) +happyOut70 x = unsafeCoerce# x +{-# INLINE happyOut70 #-} +happyIn71 :: (CDeclrR) -> (HappyAbsSyn ) +happyIn71 x = unsafeCoerce# x +{-# INLINE happyIn71 #-} +happyOut71 :: (HappyAbsSyn ) -> (CDeclrR) +happyOut71 x = unsafeCoerce# x +{-# INLINE happyOut71 #-} +happyIn72 :: (CDeclrR) -> (HappyAbsSyn ) +happyIn72 x = unsafeCoerce# x +{-# INLINE happyIn72 #-} +happyOut72 :: (HappyAbsSyn ) -> (CDeclrR) +happyOut72 x = unsafeCoerce# x +{-# INLINE happyOut72 #-} +happyIn73 :: (CDeclrR) -> (HappyAbsSyn ) +happyIn73 x = unsafeCoerce# x +{-# INLINE happyIn73 #-} +happyOut73 :: (HappyAbsSyn ) -> (CDeclrR) +happyOut73 x = unsafeCoerce# x +{-# INLINE happyOut73 #-} +happyIn74 :: (CDeclrR) -> (HappyAbsSyn ) +happyIn74 x = unsafeCoerce# x +{-# INLINE happyIn74 #-} +happyOut74 :: (HappyAbsSyn ) -> (CDeclrR) +happyOut74 x = unsafeCoerce# x +{-# INLINE happyOut74 #-} +happyIn75 :: (CDeclrR) -> (HappyAbsSyn ) +happyIn75 x = unsafeCoerce# x +{-# INLINE happyIn75 #-} +happyOut75 :: (HappyAbsSyn ) -> (CDeclrR) +happyOut75 x = unsafeCoerce# x +{-# INLINE happyOut75 #-} +happyIn76 :: (CDeclr) -> (HappyAbsSyn ) +happyIn76 x = unsafeCoerce# x +{-# INLINE happyIn76 #-} +happyOut76 :: (HappyAbsSyn ) -> (CDeclr) +happyOut76 x = unsafeCoerce# x +{-# INLINE happyOut76 #-} +happyIn77 :: (CDeclrR) -> (HappyAbsSyn ) +happyIn77 x = unsafeCoerce# x +{-# INLINE happyIn77 #-} +happyOut77 :: (HappyAbsSyn ) -> (CDeclrR) +happyOut77 x = unsafeCoerce# x +{-# INLINE happyOut77 #-} +happyIn78 :: (CDeclrR) -> (HappyAbsSyn ) +happyIn78 x = unsafeCoerce# x +{-# INLINE happyIn78 #-} +happyOut78 :: (HappyAbsSyn ) -> (CDeclrR) +happyOut78 x = unsafeCoerce# x +{-# INLINE happyOut78 #-} +happyIn79 :: (([CDecl], Bool)) -> (HappyAbsSyn ) +happyIn79 x = unsafeCoerce# x +{-# INLINE happyIn79 #-} +happyOut79 :: (HappyAbsSyn ) -> (([CDecl], Bool)) +happyOut79 x = unsafeCoerce# x +{-# INLINE happyOut79 #-} +happyIn80 :: (Reversed [CDecl]) -> (HappyAbsSyn ) +happyIn80 x = unsafeCoerce# x +{-# INLINE happyIn80 #-} +happyOut80 :: (HappyAbsSyn ) -> (Reversed [CDecl]) +happyOut80 x = unsafeCoerce# x +{-# INLINE happyOut80 #-} +happyIn81 :: (CDecl) -> (HappyAbsSyn ) +happyIn81 x = unsafeCoerce# x +{-# INLINE happyIn81 #-} +happyOut81 :: (HappyAbsSyn ) -> (CDecl) +happyOut81 x = unsafeCoerce# x +{-# INLINE happyOut81 #-} +happyIn82 :: (Reversed [Ident]) -> (HappyAbsSyn ) +happyIn82 x = unsafeCoerce# x +{-# INLINE happyIn82 #-} +happyOut82 :: (HappyAbsSyn ) -> (Reversed [Ident]) +happyOut82 x = unsafeCoerce# x +{-# INLINE happyOut82 #-} +happyIn83 :: (CDecl) -> (HappyAbsSyn ) +happyIn83 x = unsafeCoerce# x +{-# INLINE happyIn83 #-} +happyOut83 :: (HappyAbsSyn ) -> (CDecl) +happyOut83 x = unsafeCoerce# x +{-# INLINE happyOut83 #-} +happyIn84 :: (CDeclrR) -> (HappyAbsSyn ) +happyIn84 x = unsafeCoerce# x +{-# INLINE happyIn84 #-} +happyOut84 :: (HappyAbsSyn ) -> (CDeclrR) +happyOut84 x = unsafeCoerce# x +{-# INLINE happyOut84 #-} +happyIn85 :: (CDeclrR -> CDeclrR) -> (HappyAbsSyn ) +happyIn85 x = unsafeCoerce# x +{-# INLINE happyIn85 #-} +happyOut85 :: (HappyAbsSyn ) -> (CDeclrR -> CDeclrR) +happyOut85 x = unsafeCoerce# x +{-# INLINE happyOut85 #-} +happyIn86 :: (CDeclrR -> CDeclrR) -> (HappyAbsSyn ) +happyIn86 x = unsafeCoerce# x +{-# INLINE happyIn86 #-} +happyOut86 :: (HappyAbsSyn ) -> (CDeclrR -> CDeclrR) +happyOut86 x = unsafeCoerce# x +{-# INLINE happyOut86 #-} +happyIn87 :: (CDeclrR -> CDeclrR) -> (HappyAbsSyn ) +happyIn87 x = unsafeCoerce# x +{-# INLINE happyIn87 #-} +happyOut87 :: (HappyAbsSyn ) -> (CDeclrR -> CDeclrR) +happyOut87 x = unsafeCoerce# x +{-# INLINE happyOut87 #-} +happyIn88 :: (CDeclrR) -> (HappyAbsSyn ) +happyIn88 x = unsafeCoerce# x +{-# INLINE happyIn88 #-} +happyOut88 :: (HappyAbsSyn ) -> (CDeclrR) +happyOut88 x = unsafeCoerce# x +{-# INLINE happyOut88 #-} +happyIn89 :: (CDeclrR) -> (HappyAbsSyn ) +happyIn89 x = unsafeCoerce# x +{-# INLINE happyIn89 #-} +happyOut89 :: (HappyAbsSyn ) -> (CDeclrR) +happyOut89 x = unsafeCoerce# x +{-# INLINE happyOut89 #-} +happyIn90 :: (CInit) -> (HappyAbsSyn ) +happyIn90 x = unsafeCoerce# x +{-# INLINE happyIn90 #-} +happyOut90 :: (HappyAbsSyn ) -> (CInit) +happyOut90 x = unsafeCoerce# x +{-# INLINE happyOut90 #-} +happyIn91 :: (Maybe CInit) -> (HappyAbsSyn ) +happyIn91 x = unsafeCoerce# x +{-# INLINE happyIn91 #-} +happyOut91 :: (HappyAbsSyn ) -> (Maybe CInit) +happyOut91 x = unsafeCoerce# x +{-# INLINE happyOut91 #-} +happyIn92 :: (Reversed CInitList) -> (HappyAbsSyn ) +happyIn92 x = unsafeCoerce# x +{-# INLINE happyIn92 #-} +happyOut92 :: (HappyAbsSyn ) -> (Reversed CInitList) +happyOut92 x = unsafeCoerce# x +{-# INLINE happyOut92 #-} +happyIn93 :: ([CDesignator]) -> (HappyAbsSyn ) +happyIn93 x = unsafeCoerce# x +{-# INLINE happyIn93 #-} +happyOut93 :: (HappyAbsSyn ) -> ([CDesignator]) +happyOut93 x = unsafeCoerce# x +{-# INLINE happyOut93 #-} +happyIn94 :: (Reversed [CDesignator]) -> (HappyAbsSyn ) +happyIn94 x = unsafeCoerce# x +{-# INLINE happyIn94 #-} +happyOut94 :: (HappyAbsSyn ) -> (Reversed [CDesignator]) +happyOut94 x = unsafeCoerce# x +{-# INLINE happyOut94 #-} +happyIn95 :: (CDesignator) -> (HappyAbsSyn ) +happyIn95 x = unsafeCoerce# x +{-# INLINE happyIn95 #-} +happyOut95 :: (HappyAbsSyn ) -> (CDesignator) +happyOut95 x = unsafeCoerce# x +{-# INLINE happyOut95 #-} +happyIn96 :: (CDesignator) -> (HappyAbsSyn ) +happyIn96 x = unsafeCoerce# x +{-# INLINE happyIn96 #-} +happyOut96 :: (HappyAbsSyn ) -> (CDesignator) +happyOut96 x = unsafeCoerce# x +{-# INLINE happyOut96 #-} +happyIn97 :: (CExpr) -> (HappyAbsSyn ) +happyIn97 x = unsafeCoerce# x +{-# INLINE happyIn97 #-} +happyOut97 :: (HappyAbsSyn ) -> (CExpr) +happyOut97 x = unsafeCoerce# x +{-# INLINE happyOut97 #-} +happyIn98 :: (Reversed [CDesignator]) -> (HappyAbsSyn ) +happyIn98 x = unsafeCoerce# x +{-# INLINE happyIn98 #-} +happyOut98 :: (HappyAbsSyn ) -> (Reversed [CDesignator]) +happyOut98 x = unsafeCoerce# x +{-# INLINE happyOut98 #-} +happyIn99 :: (CExpr) -> (HappyAbsSyn ) +happyIn99 x = unsafeCoerce# x +{-# INLINE happyIn99 #-} +happyOut99 :: (HappyAbsSyn ) -> (CExpr) +happyOut99 x = unsafeCoerce# x +{-# INLINE happyOut99 #-} +happyIn100 :: (Reversed [CExpr]) -> (HappyAbsSyn ) +happyIn100 x = unsafeCoerce# x +{-# INLINE happyIn100 #-} +happyOut100 :: (HappyAbsSyn ) -> (Reversed [CExpr]) +happyOut100 x = unsafeCoerce# x +{-# INLINE happyOut100 #-} +happyIn101 :: (CExpr) -> (HappyAbsSyn ) +happyIn101 x = unsafeCoerce# x +{-# INLINE happyIn101 #-} +happyOut101 :: (HappyAbsSyn ) -> (CExpr) +happyOut101 x = unsafeCoerce# x +{-# INLINE happyOut101 #-} +happyIn102 :: (Located CUnaryOp) -> (HappyAbsSyn ) +happyIn102 x = unsafeCoerce# x +{-# INLINE happyIn102 #-} +happyOut102 :: (HappyAbsSyn ) -> (Located CUnaryOp) +happyOut102 x = unsafeCoerce# x +{-# INLINE happyOut102 #-} +happyIn103 :: (CExpr) -> (HappyAbsSyn ) +happyIn103 x = unsafeCoerce# x +{-# INLINE happyIn103 #-} +happyOut103 :: (HappyAbsSyn ) -> (CExpr) +happyOut103 x = unsafeCoerce# x +{-# INLINE happyOut103 #-} +happyIn104 :: (CExpr) -> (HappyAbsSyn ) +happyIn104 x = unsafeCoerce# x +{-# INLINE happyIn104 #-} +happyOut104 :: (HappyAbsSyn ) -> (CExpr) +happyOut104 x = unsafeCoerce# x +{-# INLINE happyOut104 #-} +happyIn105 :: (CExpr) -> (HappyAbsSyn ) +happyIn105 x = unsafeCoerce# x +{-# INLINE happyIn105 #-} +happyOut105 :: (HappyAbsSyn ) -> (CExpr) +happyOut105 x = unsafeCoerce# x +{-# INLINE happyOut105 #-} +happyIn106 :: (CExpr) -> (HappyAbsSyn ) +happyIn106 x = unsafeCoerce# x +{-# INLINE happyIn106 #-} +happyOut106 :: (HappyAbsSyn ) -> (CExpr) +happyOut106 x = unsafeCoerce# x +{-# INLINE happyOut106 #-} +happyIn107 :: (CExpr) -> (HappyAbsSyn ) +happyIn107 x = unsafeCoerce# x +{-# INLINE happyIn107 #-} +happyOut107 :: (HappyAbsSyn ) -> (CExpr) +happyOut107 x = unsafeCoerce# x +{-# INLINE happyOut107 #-} +happyIn108 :: (CExpr) -> (HappyAbsSyn ) +happyIn108 x = unsafeCoerce# x +{-# INLINE happyIn108 #-} +happyOut108 :: (HappyAbsSyn ) -> (CExpr) +happyOut108 x = unsafeCoerce# x +{-# INLINE happyOut108 #-} +happyIn109 :: (CExpr) -> (HappyAbsSyn ) +happyIn109 x = unsafeCoerce# x +{-# INLINE happyIn109 #-} +happyOut109 :: (HappyAbsSyn ) -> (CExpr) +happyOut109 x = unsafeCoerce# x +{-# INLINE happyOut109 #-} +happyIn110 :: (CExpr) -> (HappyAbsSyn ) +happyIn110 x = unsafeCoerce# x +{-# INLINE happyIn110 #-} +happyOut110 :: (HappyAbsSyn ) -> (CExpr) +happyOut110 x = unsafeCoerce# x +{-# INLINE happyOut110 #-} +happyIn111 :: (CExpr) -> (HappyAbsSyn ) +happyIn111 x = unsafeCoerce# x +{-# INLINE happyIn111 #-} +happyOut111 :: (HappyAbsSyn ) -> (CExpr) +happyOut111 x = unsafeCoerce# x +{-# INLINE happyOut111 #-} +happyIn112 :: (CExpr) -> (HappyAbsSyn ) +happyIn112 x = unsafeCoerce# x +{-# INLINE happyIn112 #-} +happyOut112 :: (HappyAbsSyn ) -> (CExpr) +happyOut112 x = unsafeCoerce# x +{-# INLINE happyOut112 #-} +happyIn113 :: (CExpr) -> (HappyAbsSyn ) +happyIn113 x = unsafeCoerce# x +{-# INLINE happyIn113 #-} +happyOut113 :: (HappyAbsSyn ) -> (CExpr) +happyOut113 x = unsafeCoerce# x +{-# INLINE happyOut113 #-} +happyIn114 :: (CExpr) -> (HappyAbsSyn ) +happyIn114 x = unsafeCoerce# x +{-# INLINE happyIn114 #-} +happyOut114 :: (HappyAbsSyn ) -> (CExpr) +happyOut114 x = unsafeCoerce# x +{-# INLINE happyOut114 #-} +happyIn115 :: (CExpr) -> (HappyAbsSyn ) +happyIn115 x = unsafeCoerce# x +{-# INLINE happyIn115 #-} +happyOut115 :: (HappyAbsSyn ) -> (CExpr) +happyOut115 x = unsafeCoerce# x +{-# INLINE happyOut115 #-} +happyIn116 :: (Located CAssignOp) -> (HappyAbsSyn ) +happyIn116 x = unsafeCoerce# x +{-# INLINE happyIn116 #-} +happyOut116 :: (HappyAbsSyn ) -> (Located CAssignOp) +happyOut116 x = unsafeCoerce# x +{-# INLINE happyOut116 #-} +happyIn117 :: (CExpr) -> (HappyAbsSyn ) +happyIn117 x = unsafeCoerce# x +{-# INLINE happyIn117 #-} +happyOut117 :: (HappyAbsSyn ) -> (CExpr) +happyOut117 x = unsafeCoerce# x +{-# INLINE happyOut117 #-} +happyIn118 :: (Reversed [CExpr]) -> (HappyAbsSyn ) +happyIn118 x = unsafeCoerce# x +{-# INLINE happyIn118 #-} +happyOut118 :: (HappyAbsSyn ) -> (Reversed [CExpr]) +happyOut118 x = unsafeCoerce# x +{-# INLINE happyOut118 #-} +happyIn119 :: (Maybe CExpr) -> (HappyAbsSyn ) +happyIn119 x = unsafeCoerce# x +{-# INLINE happyIn119 #-} +happyOut119 :: (HappyAbsSyn ) -> (Maybe CExpr) +happyOut119 x = unsafeCoerce# x +{-# INLINE happyOut119 #-} +happyIn120 :: (Maybe CExpr) -> (HappyAbsSyn ) +happyIn120 x = unsafeCoerce# x +{-# INLINE happyIn120 #-} +happyOut120 :: (HappyAbsSyn ) -> (Maybe CExpr) +happyOut120 x = unsafeCoerce# x +{-# INLINE happyOut120 #-} +happyIn121 :: (CExpr) -> (HappyAbsSyn ) +happyIn121 x = unsafeCoerce# x +{-# INLINE happyIn121 #-} +happyOut121 :: (HappyAbsSyn ) -> (CExpr) +happyOut121 x = unsafeCoerce# x +{-# INLINE happyOut121 #-} +happyIn122 :: (CConst) -> (HappyAbsSyn ) +happyIn122 x = unsafeCoerce# x +{-# INLINE happyIn122 #-} +happyOut122 :: (HappyAbsSyn ) -> (CConst) +happyOut122 x = unsafeCoerce# x +{-# INLINE happyOut122 #-} +happyIn123 :: (CStrLit) -> (HappyAbsSyn ) +happyIn123 x = unsafeCoerce# x +{-# INLINE happyIn123 #-} +happyOut123 :: (HappyAbsSyn ) -> (CStrLit) +happyOut123 x = unsafeCoerce# x +{-# INLINE happyOut123 #-} +happyIn124 :: (Reversed [CString]) -> (HappyAbsSyn ) +happyIn124 x = unsafeCoerce# x +{-# INLINE happyIn124 #-} +happyOut124 :: (HappyAbsSyn ) -> (Reversed [CString]) +happyOut124 x = unsafeCoerce# x +{-# INLINE happyOut124 #-} +happyIn125 :: (Ident) -> (HappyAbsSyn ) +happyIn125 x = unsafeCoerce# x +{-# INLINE happyIn125 #-} +happyOut125 :: (HappyAbsSyn ) -> (Ident) +happyOut125 x = unsafeCoerce# x +{-# INLINE happyOut125 #-} +happyIn126 :: ([CAttr]) -> (HappyAbsSyn ) +happyIn126 x = unsafeCoerce# x +{-# INLINE happyIn126 #-} +happyOut126 :: (HappyAbsSyn ) -> ([CAttr]) +happyOut126 x = unsafeCoerce# x +{-# INLINE happyOut126 #-} +happyIn127 :: ([CAttr]) -> (HappyAbsSyn ) +happyIn127 x = unsafeCoerce# x +{-# INLINE happyIn127 #-} +happyOut127 :: (HappyAbsSyn ) -> ([CAttr]) +happyOut127 x = unsafeCoerce# x +{-# INLINE happyOut127 #-} +happyIn128 :: ([CAttr]) -> (HappyAbsSyn ) +happyIn128 x = unsafeCoerce# x +{-# INLINE happyIn128 #-} +happyOut128 :: (HappyAbsSyn ) -> ([CAttr]) +happyOut128 x = unsafeCoerce# x +{-# INLINE happyOut128 #-} +happyIn129 :: (Reversed [CAttr]) -> (HappyAbsSyn ) +happyIn129 x = unsafeCoerce# x +{-# INLINE happyIn129 #-} +happyOut129 :: (HappyAbsSyn ) -> (Reversed [CAttr]) +happyOut129 x = unsafeCoerce# x +{-# INLINE happyOut129 #-} +happyIn130 :: (Maybe CAttr) -> (HappyAbsSyn ) +happyIn130 x = unsafeCoerce# x +{-# INLINE happyIn130 #-} +happyOut130 :: (HappyAbsSyn ) -> (Maybe CAttr) +happyOut130 x = unsafeCoerce# x +{-# INLINE happyOut130 #-} +happyIn131 :: (Reversed [CExpr]) -> (HappyAbsSyn ) +happyIn131 x = unsafeCoerce# x +{-# INLINE happyIn131 #-} +happyOut131 :: (HappyAbsSyn ) -> (Reversed [CExpr]) +happyOut131 x = unsafeCoerce# x +{-# INLINE happyOut131 #-} +happyInTok :: CToken -> (HappyAbsSyn ) +happyInTok x = unsafeCoerce# x +{-# INLINE happyInTok #-} +happyOutTok :: (HappyAbsSyn ) -> CToken +happyOutTok x = unsafeCoerce# x +{-# INLINE happyOutTok #-} + +happyActOffsets :: HappyAddr +happyActOffsets = HappyA# "\x00\x00\x1d\x0f\xd3\x09\x31\x0f\x00\x00\x80\x07\x00\x00\x7f\x09\x77\x0f\x31\x0f\x00\x00\xc8\x09\x1f\x05\x05\x05\x7f\x03\xf0\x04\x65\x08\x54\x08\x49\x08\x3e\x08\xc6\x04\x00\x00\x2b\x08\xef\x07\x00\x00\x00\x00\x0b\x09\x00\x00\x00\x00\xcd\x0e\xcd\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x82\x04\xaf\x0e\x96\x0e\x00\x00\x00\x00\x00\x00\xf6\x07\x00\x00\x32\x0e\x14\x0e\x14\x0e\x48\x08\x47\x08\x24\x08\xb6\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xde\x07\xe6\x07\x00\x00\x00\x00\x4a\x05\xd2\x07\xfb\x0d\xd0\x07\xd6\x07\xd3\x09\xf5\x07\x24\x00\xed\x07\xfb\x0d\xec\x07\xd5\x07\xc6\x07\x00\x00\x76\x07\x00\x00\xae\x07\x00\x00\x95\x04\x8e\x04\x01\x01\xd5\x11\x00\x00\x01\x01\x00\x00\x9a\x19\x9a\x19\x11\x18\x01\x18\x21\x08\x21\x08\x00\x00\x00\x00\x71\x07\x00\x00\xa6\x11\x00\x00\x00\x00\x00\x00\xd9\x01\x00\x00\x00\x00\x00\x00\x4a\x05\x89\x12\x00\x00\x3d\x01\x3d\x01\xcb\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc5\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbb\x07\x1d\x0f\x55\x07\x00\x00\xb8\x07\x6f\x09\x7a\x01\x59\x07\x5b\x07\xb3\x12\x00\x00\x00\x00\x4b\x00\xb2\x07\xb4\x09\xaa\x07\x4b\x00\x86\x07\x00\x00\x00\x00\x00\x00\xed\x01\x00\x00\x00\x00\xa7\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x18\x00\x00\x9d\x07\x00\x00\x94\x18\xff\x0a\x72\x07\x00\x00\x00\x00\x00\x00\x00\x00\xed\x01\x00\x00\x77\x11\x97\x07\x00\x00\xa3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x07\x5f\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x07\x00\x00\x6e\x02\x48\x02\x0f\x00\x52\x07\x00\x00\x00\x00\x00\x00\xed\x01\x00\x00\x00\x00\x7b\x07\x00\x00\x4f\x07\x53\x07\x00\x00\x1b\x07\x00\x00\x1b\x07\x00\x00\x00\x00\xfb\x0d\xfb\x0d\x00\x00\x4d\x07\xfb\x0d\x41\x07\xfb\x0d\x00\x00\x43\x08\x14\x07\xd3\x09\x00\x00\x00\x00\x00\x00\x1f\x00\x00\x00\x65\x07\x00\x00\x2e\x07\xf4\x06\x00\x00\xc3\x1a\xc3\x1a\xfb\x0d\x00\x00\x0b\x09\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x0b\x09\x00\x00\x0b\x09\x00\x00\x00\x00\x00\x00\x4e\x07\x97\x03\xe7\x1a\xab\x04\xab\x04\x7a\x0a\x4c\x07\x4b\x07\x9f\x1a\xfb\x0d\xfb\x0d\x97\x0d\xfb\x0d\xfb\x0d\xfb\x0d\xfb\x0d\xfb\x0d\xfb\x0d\xfb\x0d\xfb\x0d\xfb\x0d\xfb\x0d\xfb\x0d\xfb\x0d\xfb\x0d\xfb\x0d\xfb\x0d\xfb\x0d\xfb\x0d\x00\x00\xfb\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0d\xfb\x0d\x36\x04\x36\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x07\x6e\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\x09\xa3\x09\x8a\x04\x8a\x04\x4f\x04\x4f\x04\x4f\x04\x4f\x04\x7f\x03\x7f\x03\x1d\x04\x35\x07\x2b\x07\x16\x07\x0c\x07\xfb\x0d\x25\x07\x00\x00\xfb\x06\x00\x00\x61\x0d\x00\x00\x00\x00\x00\x00\xb7\x06\x57\x1a\x33\x1a\x48\x11\x00\x0f\x00\x00\x00\x00\x0f\x07\x0e\x07\x00\x00\xf3\x06\xdd\x06\xdb\x06\xc7\x06\xd3\x09\xdf\x07\xad\x06\x94\x06\x7c\x06\xd3\x09\xfb\x0d\x00\x00\xcb\x06\x6c\x19\xab\x06\xa7\x06\x00\x00\xc4\x06\x00\x00\xc3\x06\xc1\x06\xea\x00\xd8\x00\x38\x18\xa1\x06\x5d\x06\xaa\x06\x00\x00\x6f\x09\x38\x18\x86\x06\x00\x00\x00\x00\x1e\x19\x5b\x0b\x00\x00\x00\x00\xb1\x01\x93\x01\x8e\x06\x88\x06\x0f\x00\x47\x00\x93\x01\x00\x00\x38\x18\x66\x06\x00\x00\x49\x06\x00\x00\x6f\x09\x3e\x06\x00\x00\x00\x00\x00\x00\x00\x00\xed\x01\x00\x00\x62\x06\x00\x00\x38\x18\x3d\x06\x00\x00\x9b\x0a\x00\x00\x29\x06\xe0\x0b\x09\x00\xce\x05\x74\x02\xff\x0f\x74\x02\x21\x08\x21\x08\xd0\x0f\x24\x06\xfb\x05\x00\x00\x1b\x01\x45\x19\x00\x00\x00\x00\x00\x00\x00\x00\xd8\x00\x19\x11\xd8\x00\xea\x10\x5a\x12\x6f\x09\x38\x18\x04\x06\x00\x00\x19\x06\x9e\x09\x12\x00\x12\x00\x0f\x00\x00\x00\x0f\x00\x00\x00\x0f\x00\x00\x00\x00\x00\xdc\x0c\x09\x06\xf4\x05\xcc\x03\x03\x06\xfe\x05\x77\x00\xca\x00\x00\x00\x00\x00\xef\x05\x00\x00\x00\x00\xcd\x02\x00\x00\xcb\x05\xcc\x03\xaa\x05\x00\x00\x00\x00\x00\x00\xdc\x0c\x4b\x09\x00\x00\x0f\x00\x00\x00\xfd\x0c\x00\x00\xc8\x05\xc1\x05\x8c\x05\x8c\x05\xbb\x10\x00\x00\xf1\x00\xc9\x00\x8c\x05\x00\x00\x56\x05\x66\x18\x00\x00\x53\x05\x00\x00\xf0\x18\xc2\x18\xa1\x0f\xde\x12\x53\x05\x53\x05\x00\x00\x72\x0f\x49\x07\x53\x05\x00\x00\x53\x05\x53\x05\x00\x00\xab\x04\x62\x0c\x9d\x05\x9b\x05\x09\x00\x00\x00\x90\x05\x46\x05\x37\x0a\x09\x00\x00\x00\x00\x00\x6f\x09\x38\x18\x6d\x05\x00\x00\x8f\x05\x8d\x05\xdc\x17\x00\x00\x00\x00\x00\x00\x2f\x09\x84\x05\x0e\x00\xbe\x00\x83\x05\x0f\x00\x0f\x00\x2c\x09\x00\x00\x00\x00\x00\x00\xe3\x0a\x65\x00\x00\x00\x00\x00\x81\x05\x79\x05\x10\x05\x00\x00\x00\x00\x00\x00\x35\x05\x35\x05\xd3\x09\xd3\x09\xd3\x09\x00\x00\xfb\x0d\xfb\x0d\xfb\x0d\x42\x05\x00\x00\xaa\x01\xc9\x03\xdf\x07\xf2\x04\x00\x00\x23\x05\x00\x00\x00\x00\x00\x00\x00\x00\xd8\x00\x8c\x10\xd8\x00\x5d\x10\x2d\x05\xa7\x08\x00\x00\x7b\x1a\x9a\x03\x7b\x1a\x1c\x05\x1c\x05\x1c\x05\x30\x0c\x00\x00\xa2\x09\x31\x05\x2f\x05\x2d\x00\x33\x12\x00\x00\x00\x00\xfe\x0b\xfb\x0d\x00\x00\xfb\x0d\x00\x00\xfb\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb3\x02\xfd\x0c\xdc\x02\x00\x00\x99\x01\x00\x00\xd4\x04\xfb\x0d\x9a\x03\xfe\x0b\x21\x05\x0d\x05\x13\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x04\x09\x05\xed\x02\x00\x00\xf9\x04\x00\x00\xc0\x04\x2e\x10\xc0\x04\xc0\x04\xc0\x04\x00\x00\xa3\x03\x89\x04\x00\x00\xa2\x04\x2a\x00\xd3\x09\xc7\x04\x9c\x04\x97\x04\x7f\x04\x00\x00\x00\x00\x88\x04\x88\x04\xa1\x04\x00\x00\x00\x00\x22\x09\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x0a\x0f\x00\x00\x00\xaf\x17\xd4\x02\x00\x00\xa0\x03\x98\x03\x0f\x1a\xc2\x12\x00\x00\x00\x00\xbe\x19\x00\x00\x00\x00\x00\x00\x00\x00\x9f\x04\x9a\x04\x8b\x04\x86\x04\x09\x00\x0a\x04\x00\x00\x7a\x04\x00\x00\x00\x00\x68\x04\xfb\x0d\x00\x00\x00\x00\x00\x00\xb4\x04\x9f\x00\x04\x12\x00\x00\x00\x00\xdc\x0a\x3e\x09\x24\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x01\x2b\x00\x2b\x00\x16\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x02\xfb\x0d\xf4\x00\x00\x00\xe4\x0c\x64\x04\x77\x00\x00\x00\x00\x00\x00\x00\xa8\x00\x00\x00\x00\x00\x00\x00\x00\x00\xde\x00\x00\x00\x2b\x00\x5f\x01\xcd\x00\x3e\x04\x00\x00\x00\x00\xfb\x0d\x3c\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdd\x03\x1b\x04\xfb\x0d\x9e\x00\xeb\x19\xc8\x03\x00\x00\xc8\x03\x00\x00\xc8\x03\x06\x04\xfb\x0d\x00\x00\x00\x00\xcd\x00\x1f\x09\x00\x00\x00\x00\x00\x00\x00\x00\xd3\x09\xfb\x0d\xfb\x0d\xf5\x03\x00\x00\x0a\x01\xef\x03\x00\x00\x1a\x04\x49\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdf\x03\x00\x00\x00\x00\x00\x00\xfb\x0d\x40\x03\x00\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x97\x01\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0b\x00\x00\x00\x00\x80\x0c\x00\x00\x00\x00\xfb\x0d\x63\x0b\x00\x00\x00\x00\x00\x00\x03\x04\x00\x00\x01\x04\xe1\x03\xfb\x0d\x2a\x00\xb6\x03\x2a\x00\x00\x00\xd8\x03\xd3\x03\x00\x00\x00\x00\x00\x00\xfb\x0d\x00\x00\x9e\x00\xd4\x02\x6a\x03\x00\x00\xfb\x0d\x00\x00\x00\x00\xb9\x03\x00\x00\x00\x00\x00\x00\xfb\x0d\x00\x00\x00\x00\x00\x00\x4a\x03\x4a\x03\x00\x00\xd3\x09\xd3\x09\xd5\x00\x00\x00\x00\x00\xa8\x03\x3b\x03\x3b\x03\x00\x00\x00\x00\x7a\x03\x00\x00\x00\x00\x74\x03\x72\x03\x00\x00\x46\x03\x0b\x03\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\xfb\x0d\xfb\x0d\x6c\x03\x5b\x03\x17\x03\xe9\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"# + +happyGotoOffsets :: HappyAddr +happyGotoOffsets = HappyA# "\x36\x03\x71\x00\xd3\x06\xc6\x1d\x3c\x03\x38\x00\x00\x00\x00\x00\xc5\x02\x35\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x03\x00\x00\x00\x00\x71\x0d\xa4\x0b\x00\x00\x00\x00\x00\x00\x00\x00\xb8\x02\xd5\x0a\xb9\x0a\x00\x00\x00\x00\x00\x00\xa7\x02\x00\x00\x20\x0c\xbe\x03\x60\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\x03\x1a\x00\x00\x00\x76\x1f\x00\x00\x00\x00\xb8\x06\x00\x00\x95\x02\x00\x00\x4c\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x03\x00\x00\x00\x00\x00\x00\x2a\x06\xc3\x00\x00\x00\x8a\x05\x00\x00\x14\x00\x16\x01\x6c\x02\x7d\x01\xa2\x01\xcb\x00\x00\x00\x00\x00\x96\x08\x00\x00\x9a\x00\x00\x00\x00\x00\x00\x00\x99\x08\xe2\x02\x00\x00\x00\x00\xbb\x02\x15\x01\x00\x00\xa8\x0a\xd7\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\xca\x15\x71\x02\x5d\x02\x6a\x02\x77\x08\x00\x00\x00\x00\x70\x02\x00\x00\x5b\x08\x00\x00\x40\x00\xc6\x02\x00\x00\x00\x00\x00\x00\x52\x02\x9e\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xad\x04\x00\x00\x66\x02\x00\x00\xa8\x13\x16\x17\xa9\x02\x00\x00\x00\x00\x00\x00\x00\x00\x51\x02\x90\x02\xec\x00\x00\x00\x00\x00\x1a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x02\x4f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x02\x9a\x13\xe8\x16\x35\x08\x75\x02\x00\x00\x00\x00\x00\x00\x4a\x02\x5c\x02\x00\x00\x00\x00\x00\x00\x62\x02\x31\x02\x56\x02\xf3\x07\x00\x00\xee\x07\x00\x00\x00\x00\xab\x1d\x90\x1d\x00\x00\x00\x00\x75\x1d\x00\x00\x5a\x1d\x00\x00\x98\x06\x00\x00\x4e\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xeb\x01\xe9\x07\x00\x00\x7b\x16\x53\x16\x5b\x1f\x00\x00\xe7\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc1\x02\x00\x00\x5b\x02\x00\x00\x00\x00\x00\x00\x00\x00\x69\x05\x9b\x00\x78\x00\x50\x00\x89\x16\x00\x00\x00\x00\xac\x03\x3f\x1d\xc7\x1f\x24\x1d\xe2\x1f\x08\x15\x84\x15\xfd\x1f\xf1\x0b\x6f\x0b\xf0\x0c\xbb\x0c\x40\x0c\x3a\x0b\x9b\x0c\x1a\x0b\xfc\x07\x26\x07\xc1\x0b\x2c\x0a\x9d\x09\x00\x00\x40\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x1d\xee\x1c\xdb\x01\xcd\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x99\x07\x00\x00\x00\x00\x00\x00\xc6\x01\x61\x04\x00\x00\x73\x13\xda\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x06\x35\x02\x33\x02\xea\x01\x7e\x01\x18\x06\x25\x1f\x00\x00\x00\x00\xa6\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x03\x91\x20\x87\x04\xdd\x01\xce\x07\x00\x00\x00\x00\xa6\x15\x4c\x04\xb7\x01\x00\x00\x00\x00\xda\x13\x26\x03\x00\x00\x00\x00\x6c\x05\x30\x13\x00\x00\x00\x00\xa2\x07\x36\x02\xb6\x0b\x00\x00\x26\x04\xa0\x01\x00\x00\x00\x00\xa7\x01\x4e\x15\xc7\x01\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x02\xb0\x01\x00\x00\x00\x00\xeb\x03\x60\x01\x00\x00\xa9\x16\x00\x00\x00\x00\xc4\x1b\x6a\x07\x14\x01\x40\x20\x18\x14\x28\x20\x9f\x01\x18\x00\x2c\x14\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x03\x00\x00\x00\x00\x00\x00\x00\x00\x84\x20\x47\x07\x77\x20\x68\x14\xaf\x14\x2a\x15\xc5\x03\x4d\x01\x00\x00\x00\x00\x73\x07\xd3\x01\xeb\x04\x27\x07\x00\x00\x20\x07\x00\x00\x15\x07\x00\x00\x00\x00\xbf\x03\x00\x00\x00\x00\xb9\x01\x00\x00\x00\x00\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85\x01\x00\x00\x00\x00\x00\x00\x00\x00\x44\x04\x15\x07\x00\x00\xd9\x06\x00\x00\xa9\x1b\x00\x00\x00\x00\x00\x00\x16\x02\xf7\x01\xa9\x14\x00\x00\x6f\x13\x0d\x0e\xf4\x01\x00\x00\x00\x00\x0a\x14\x00\x00\x96\x06\x00\x00\x00\x04\x00\x00\x3e\x13\x60\x17\x76\x06\x68\x06\x00\x00\x06\x13\x59\x17\x2b\x06\x00\x00\x10\x06\xe2\x05\x00\x00\xdb\x00\x62\x17\x00\x00\x00\x00\xdf\x05\x00\x00\x00\x00\x00\x00\xe0\x16\xd9\x05\x00\x00\x00\x00\xd2\x14\x64\x03\x42\x01\x00\x00\x00\x00\x00\x00\x31\x16\x5c\x01\x00\x00\x00\x00\xff\x05\x00\x00\xf9\x08\x60\x07\x00\x00\xf1\x05\xe4\x05\xe1\x05\x00\x00\x00\x00\x00\x00\x92\x0c\x18\x04\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x01\x00\x00\x00\x00\x00\x00\x5e\x01\x57\x01\xae\x05\x93\x05\x78\x05\x00\x00\x31\x1c\x16\x1c\xd3\x1c\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x01\x33\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x09\x43\x01\xc4\x07\x3e\x01\x00\x00\x36\x07\x00\x00\x40\x16\xd5\xff\xe1\x14\x00\x00\x00\x00\x00\x00\xc7\x02\x00\x00\x8a\x02\x00\x00\x00\x00\xf9\x00\x96\x14\x00\x00\x00\x00\x13\x1b\x0a\x1f\x00\x00\x91\x1f\x00\x00\xef\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8e\x1b\x9d\x02\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x1e\xd3\x00\xf1\x1a\x00\x00\x00\x00\x7f\x00\x00\x00\xb4\x05\x00\x00\x00\x00\x00\x00\x00\x00\xce\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x01\x67\x01\x36\x01\x1d\x01\x17\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf4\xff\x0e\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\x80\x00\x00\x00\x00\x00\x00\x00\x99\x05\x00\x00\x00\x00\x6b\x0e\x00\x00\x00\x00\x00\x00\x00\x00\xb0\x09\x5c\x05\x00\x00\x31\x16\x6a\x20\x00\x00\x00\x00\x00\x00\x04\x04\xb9\x16\x00\x00\x00\x00\x22\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\x04\xb0\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb9\x1e\x00\x00\x00\x00\x00\x00\x1a\x17\xfa\x05\x64\x14\x00\x00\x00\x00\x80\x16\x9a\x06\xca\x04\x00\x00\x00\x00\x00\x00\x00\x00\xc3\x02\xaa\x0d\x36\x0d\xfa\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9e\x1e\xd9\xff\x00\x00\x50\x1b\x00\x00\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd9\xff\x00\x00\x91\x06\xbf\x03\x5a\x05\x00\x00\x00\x00\x00\x00\x83\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x68\x1e\x57\x04\x61\x04\x78\x04\x00\x00\x09\x04\x00\x00\x86\x03\x00\x00\x4d\x1e\x00\x00\x00\x00\x5a\x05\xab\x03\x00\x00\x00\x00\x00\x00\x00\x00\xf3\x04\xfb\x1b\xe0\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb9\x00\x00\x00\x00\x00\x00\x00\xb8\x1c\x44\x00\x00\x00\x00\x00\x00\x00\x2c\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x1b\x00\x00\x00\x00\x73\x1b\x00\x00\x00\x00\x32\x1e\x35\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9d\x1c\xf5\xff\x00\x00\xf1\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17\x1e\x00\x00\x5f\x03\x5b\x20\xd0\xff\x00\x00\xfc\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe1\x1d\x00\x00\x00\x00\x00\x00\xec\x01\xd0\xff\x00\x00\xd6\x04\x9e\x01\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\xa5\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\xff\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x1c\x67\x1c\x00\x00\x00\x00\x00\x00\x91\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"# + +happyDefActions :: HappyAddr +happyDefActions = HappyA# "\xfa\xff\x3d\xfe\x00\x00\x00\x00\x00\x00\x3d\xfe\x9b\xfe\x8f\xfe\x7d\xfe\x00\x00\x7b\xfe\x77\xfe\x74\xfe\x71\xfe\x6c\xfe\x69\xfe\x67\xfe\x65\xfe\x63\xfe\x61\xfe\x5f\xfe\x5c\xfe\x4f\xfe\x00\x00\xa5\xfe\xa4\xfe\x3d\xfe\x7e\xfe\x7f\xfe\x00\x00\x00\x00\x81\xfe\x80\xfe\x82\xfe\x83\xfe\x00\x00\x00\x00\x00\x00\x45\xfe\x46\xfe\x44\xfe\x43\xfe\xa6\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe4\xff\xe3\xff\xe2\xff\xe1\xff\xe0\xff\xdf\xff\xde\xff\x00\x00\x00\x00\xc7\xff\xd7\xff\xb5\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\xfe\x00\x00\x00\x00\xa6\xfe\x3e\xfe\x00\x00\xf7\xff\x00\x00\xf6\xff\x00\x00\x00\x00\x00\x00\x00\x00\x98\xff\x00\x00\x77\xff\x9b\xff\x8a\xff\x9a\xff\x89\xff\x99\xff\x88\xff\x6c\xff\x52\xff\x3d\xfe\x51\xff\x00\x00\xe5\xff\x0a\xff\x08\xff\x09\xff\xa6\xff\xfb\xfe\xfa\xfe\x00\x00\x3c\xfe\x3b\xfe\x00\x00\x3d\xfe\x00\x00\x8d\xff\x7e\xff\x86\xff\x7d\xff\x81\xff\x3d\xfe\x8f\xff\x82\xff\x84\xff\x83\xff\x8c\xff\x85\xff\x80\xff\x8e\xff\x4d\xff\x90\xff\x00\x00\x8b\xff\x4c\xff\x7f\xff\x87\xff\xfe\xfe\x60\xff\x00\x00\x3d\xfe\x00\x00\xf5\xff\x00\x00\x3d\xfe\x00\x00\x3c\xfe\x00\x00\x00\x00\x07\xff\xf9\xfe\x3c\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\xff\x76\xff\x6b\xff\x26\xff\xa6\xff\x3a\xfe\x00\x00\x5a\xff\x2b\xff\x2f\xff\x2c\xff\x2d\xff\x2e\xff\x3d\xfe\x03\xff\xd7\xfe\xd5\xfe\xf4\xfe\x49\xfe\x00\x00\x96\xff\x75\xff\x6a\xff\x2a\xff\x26\xff\xa6\xff\x00\x00\x00\x00\x5d\xff\x00\x00\x66\xff\x54\xff\x53\xff\x62\xff\x92\xff\x91\xff\x61\xff\x6f\xff\x68\xff\x67\xff\xa9\xff\x6e\xff\x6d\xff\xaa\xff\x7b\xff\x72\xff\x73\xff\x71\xff\x7a\xff\x79\xff\x78\xff\x00\x00\x26\xff\x27\xff\x23\xff\x20\xff\x1f\xff\x24\xff\x16\xff\x28\xff\xa6\xff\x00\x00\x3d\xfe\x22\xff\x00\x00\x94\xff\x7c\xff\x70\xff\x26\xff\xa6\xff\x93\xff\x00\x00\x65\xff\x00\x00\x26\xff\xa6\xff\x3d\xfe\xa8\xff\x3d\xfe\xa7\xff\xf3\xff\x00\x00\x00\x00\x4a\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x3f\xfe\x4b\xfe\x00\x00\x00\x00\xbc\xff\x7d\xfe\x47\xfe\x00\x00\xbb\xff\x00\x00\xb4\xff\xd5\xff\x3d\xfe\xc6\xff\x3d\xfe\x3d\xfe\x00\x00\x85\xfe\x3d\xfe\x86\xfe\x8c\xfe\x42\xfe\x41\xfe\x8a\xfe\x3d\xfe\x88\xfe\x3d\xfe\x84\xfe\x8d\xfe\x8e\xfe\x00\x00\xde\xfe\x8a\xff\x89\xff\x88\xff\x00\x00\x00\x00\x00\x00\x3c\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8b\xfe\x00\x00\x5a\xfe\x56\xfe\x55\xfe\x59\xfe\x58\xfe\x57\xfe\x52\xfe\x51\xfe\x50\xfe\x54\xfe\x53\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x95\xfe\x94\xfe\xf8\xff\xf9\xff\x97\xfe\x96\xfe\x00\x00\x00\x00\x91\xfe\x99\xfe\x5b\xfe\x78\xfe\x79\xfe\x7a\xfe\x75\xfe\x76\xfe\x72\xfe\x73\xfe\x6d\xfe\x6f\xfe\x6e\xfe\x70\xfe\x6a\xfe\x6b\xfe\x68\xfe\x66\xfe\x64\xfe\x62\xfe\x00\x00\x00\x00\x60\xfe\x4d\xfe\x4e\xfe\xa3\xfe\x00\x00\xdb\xfe\xd8\xfe\xda\xfe\xd9\xfe\x00\x00\xdc\xfe\xf4\xfe\xc8\xfe\xdd\xfe\xa2\xfe\x00\x00\x00\x00\x40\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd6\xff\xd5\xff\x00\x00\x00\x00\x00\x00\x00\x00\xdb\xff\x00\x00\x3d\xfe\x00\x00\x00\x00\xbe\xff\x00\x00\xba\xff\x00\x00\x00\x00\x00\x00\x00\x00\x3d\xfe\xb6\xfe\x3d\xfe\x00\x00\xf1\xff\x3d\xfe\x3d\xfe\xb6\xfe\xef\xff\x21\xff\xf4\xfe\x00\x00\x1e\xff\x12\xff\x3c\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\xff\x3d\xfe\xb6\xfe\xf0\xff\x4e\xff\x4b\xff\x3d\xfe\x00\x00\x95\xff\x74\xff\x69\xff\x29\xff\x26\xff\xa6\xff\x00\x00\x57\xff\x3d\xfe\xb6\xfe\xee\xff\x49\xfe\x48\xfe\x00\x00\x49\xfe\x82\xfe\x3d\xfe\xef\xfe\xeb\xfe\xe8\xfe\x9a\xff\x89\xff\xe4\xfe\x00\x00\xf3\xfe\xf1\xfe\x00\x00\x3c\xfe\xe0\xfe\xd4\xfe\xec\xff\xa5\xff\x00\x00\x00\x00\x00\x00\x00\x00\x3c\xfe\x3d\xfe\x3d\xfe\xb6\xfe\xf2\xff\x00\x00\x00\x00\x00\x00\x3d\xfe\xf6\xfe\xfd\xfe\x02\xff\x06\xff\x09\xff\x05\xff\xf8\xfe\x00\x00\x00\x00\x34\xff\x00\x00\x00\x00\x00\x00\x36\xfe\x00\x00\x38\xfe\x34\xfe\x35\xfe\x5f\xff\x5e\xff\x00\x00\x33\xff\x31\xff\x00\x00\x00\x00\x04\xff\x01\xff\xf5\xfe\x00\x00\x00\x00\xfc\xfe\x00\xff\xa1\xff\x00\x00\xeb\xff\x00\x00\x00\x00\x26\xff\x26\xff\x00\x00\x28\xff\x00\x00\x3d\xfe\x26\xff\xf7\xfe\x00\x00\x3d\xfe\xd6\xfe\x3d\xfe\xe2\xfe\x00\x00\xe3\xfe\xf4\xfe\xc8\xfe\x3d\xfe\x3d\xfe\xe7\xfe\xf4\xfe\xc8\xfe\x3d\xfe\xea\xfe\x3d\xfe\x3d\xfe\xee\xfe\x3d\xfe\x00\x00\x00\x00\x00\x00\x82\xfe\xd3\xfe\x00\x00\x00\x00\x49\xfe\x82\xfe\xa3\xff\xe7\xff\x3d\xfe\x3d\xfe\xb6\xfe\xed\xff\x00\x00\x00\x00\x3d\xfe\x4b\xff\x9d\xff\xe9\xff\x00\x00\x00\x00\x00\x00\x3d\xfe\x00\x00\x0f\xff\x1a\xff\x00\x00\x1d\xff\x1c\xff\x11\xff\x00\x00\x00\x00\xa4\xff\xe8\xff\x00\x00\x00\x00\x00\x00\x9f\xff\x9e\xff\xea\xff\x26\xff\x26\xff\x00\x00\x00\x00\x00\x00\xbd\xff\x4b\xfe\x4b\xfe\x00\x00\x00\x00\xdc\xff\x00\x00\x00\x00\xd6\xff\x00\x00\xd3\xff\x00\x00\xd4\xff\xd2\xff\xd0\xff\xd1\xff\x00\x00\x00\x00\x00\x00\x00\x00\x60\xff\x3d\xfe\xdd\xff\x3d\xfe\x00\x00\x3d\xfe\x00\x00\x89\xfe\x87\xfe\x3d\xfe\xc6\xfe\xc4\xfe\x00\x00\x00\x00\x00\x00\x3c\xfe\xba\xfe\x7c\xfe\xb4\xfe\x00\x00\x5d\xfe\x00\x00\x98\xfe\x00\x00\x9a\xfe\x90\xfe\x5e\xfe\x4c\xfe\xb3\xfe\x00\x00\x00\x00\x00\x00\xac\xfe\xad\xfe\xb9\xfe\x00\x00\x00\x00\x00\x00\xb4\xfe\x00\x00\x00\x00\x00\x00\xc1\xfe\xc2\xfe\xc0\xfe\xc3\xfe\xc5\xfe\xc7\xfe\x3c\xfe\x00\x00\x00\x00\x9e\xfe\x00\x00\xcf\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd9\xff\x00\x00\x00\x00\xc9\xff\x00\x00\xb3\xff\x00\x00\x00\x00\x00\x00\x00\x00\xc5\xff\xc3\xff\xc2\xff\xb6\xfe\xb6\xfe\x00\x00\x64\xff\x63\xff\x00\x00\x1b\xff\x10\xff\x00\x00\x15\xff\x19\xff\x0d\xff\x0e\xff\x00\x00\x18\xff\x0b\xff\x3d\xfe\x40\xff\x49\xff\x00\x00\x00\x00\x3d\xfe\x3c\xfe\x4a\xff\x4f\xff\x3d\xfe\x5c\xff\x5b\xff\xa2\xff\xe6\xff\x00\x00\x00\x00\x00\x00\x00\x00\x82\xfe\x3d\xfe\xd1\xfe\x00\x00\xd2\xfe\xcc\xfe\x00\x00\x00\x00\xed\xfe\xec\xfe\xe9\xfe\x3d\xfe\xc4\xfe\x3c\xfe\xe6\xfe\xe5\xfe\x3d\xfe\xc4\xfe\x3c\xfe\xe1\xfe\xf0\xfe\xf2\xfe\xdf\xfe\x00\x00\x00\x00\x00\x00\x26\xff\x59\xff\x58\xff\xb5\xfe\xff\xfe\xf4\xff\x00\x00\x00\x00\x00\x00\x38\xff\x00\x00\x00\x00\x36\xfe\x37\xfe\x39\xfe\x31\xfe\x00\x00\x32\xfe\x32\xff\x37\xff\x30\xff\x00\x00\x36\xff\x00\x00\x3c\xfe\x3c\xfe\x00\x00\xcf\xfe\xcb\xfe\x00\x00\x00\x00\xd0\xfe\xca\xfe\x56\xff\x55\xff\x46\xff\x44\xff\x3c\xff\x00\x00\x00\x00\x3c\xfe\x3d\xfe\x48\xff\x3d\xfe\x47\xff\x3d\xfe\x3f\xff\x00\x00\x50\xff\x17\xff\x00\x00\x00\x00\x14\xff\x25\xff\x9c\xff\xa0\xff\x00\x00\x4b\xfe\x4b\xfe\x00\x00\xda\xff\x00\x00\xb2\xff\xb1\xff\x00\x00\x00\x00\xb9\xff\xd8\xff\xc8\xff\xce\xff\xcc\xff\xcd\xff\x00\x00\xcb\xff\x9f\xfe\xa0\xfe\x00\x00\x00\x00\xa1\xfe\xbf\xfe\xbd\xfe\xbe\xfe\xbc\xfe\x00\x00\xa9\xfe\x00\x00\xae\xfe\xab\xfe\xa8\xfe\xaf\xfe\xb2\xfe\x00\x00\x93\xfe\xb1\xfe\x00\x00\x92\xfe\xaa\xfe\x00\x00\x00\x00\xb8\xfe\xbb\xfe\x9d\xfe\x00\x00\xca\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb3\xff\xc1\xff\x00\x00\x00\x00\xc4\xff\x13\xff\x3e\xff\x00\x00\x42\xff\x00\x00\x00\x00\x45\xff\x3b\xff\x00\x00\x39\xff\xc9\xfe\x00\x00\xce\xfe\x35\xff\x33\xfe\x00\x00\x30\xfe\xcd\xfe\x3a\xff\x3d\xfe\x43\xff\x3d\xff\x00\x00\x00\x00\x00\x00\xb8\xff\xb0\xff\x00\x00\x00\x00\x00\x00\x9c\xfe\xb7\xfe\x00\x00\xb0\xfe\xa7\xfe\x00\x00\x00\x00\xaf\xff\x00\x00\x00\x00\xd6\xff\xc0\xff\x41\xff\xbf\xff\x00\x00\xac\xff\xb7\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\xff\xb6\xff\xad\xff\xae\xff"# + +happyCheck :: HappyAddr +happyCheck = HappyA# "\xff\xff\x02\x00\x03\x00\x04\x00\x36\x00\x74\x00\x15\x00\x16\x00\x17\x00\x15\x00\x16\x00\x17\x00\x17\x00\x04\x00\x35\x00\x01\x00\x01\x00\x18\x00\x03\x00\x01\x00\x04\x00\x02\x00\x1c\x00\x02\x00\x19\x00\x74\x00\x1b\x00\x0d\x00\x1d\x00\x1e\x00\x1f\x00\x0d\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\x01\x00\x03\x00\x14\x00\x02\x00\x5b\x00\x0d\x00\x33\x00\x39\x00\x20\x00\x21\x00\x37\x00\x23\x00\x0d\x00\x21\x00\x02\x00\x03\x00\x04\x00\x1e\x00\x2e\x00\x2a\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x79\x00\x01\x00\x79\x00\x36\x00\x76\x00\x01\x00\x2e\x00\x36\x00\x76\x00\x36\x00\x19\x00\x09\x00\x1b\x00\x0d\x00\x1d\x00\x1e\x00\x1f\x00\x0d\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\x74\x00\x01\x00\x5e\x00\x74\x00\x74\x00\x5c\x00\x33\x00\x5e\x00\x74\x00\x5c\x00\x37\x00\x5e\x00\x5e\x00\x0d\x00\x02\x00\x03\x00\x04\x00\x77\x00\x78\x00\x79\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x5c\x00\x5d\x00\x42\x00\x43\x00\x44\x00\x5b\x00\x36\x00\x5c\x00\x5d\x00\x5e\x00\x19\x00\x5e\x00\x1b\x00\x79\x00\x1d\x00\x1e\x00\x1f\x00\x79\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\x04\x00\x01\x00\x01\x00\x79\x00\x03\x00\x5c\x00\x33\x00\x5e\x00\x74\x00\x5c\x00\x37\x00\x5e\x00\x02\x00\x0d\x00\x0d\x00\x36\x00\x36\x00\x77\x00\x78\x00\x79\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x79\x00\x76\x00\x21\x00\x1e\x00\x23\x00\x23\x00\x01\x00\x07\x00\x5c\x00\x5d\x00\x5e\x00\x2a\x00\x2b\x00\x2c\x00\x04\x00\x7b\x00\x79\x00\x01\x00\x0d\x00\x02\x00\x33\x00\x01\x00\x2c\x00\x36\x00\x36\x00\x2a\x00\x5c\x00\x54\x00\x36\x00\x0d\x00\x02\x00\x54\x00\x01\x00\x0d\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x43\x00\x20\x00\x21\x00\x0d\x00\x23\x00\x48\x00\x77\x00\x78\x00\x79\x00\x01\x00\x21\x00\x2a\x00\x2b\x00\x2c\x00\x04\x00\x79\x00\x01\x00\x1e\x00\x2a\x00\x56\x00\x33\x00\x0d\x00\x79\x00\x36\x00\x5c\x00\x5c\x00\x5d\x00\x5e\x00\x0d\x00\x5c\x00\x5d\x00\x36\x00\x01\x00\x36\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x2d\x00\x02\x00\x21\x00\x0d\x00\x23\x00\x43\x00\x36\x00\x78\x00\x79\x00\x79\x00\x48\x00\x2a\x00\x2b\x00\x2c\x00\x04\x00\x5c\x00\x5d\x00\x5e\x00\x02\x00\x07\x00\x33\x00\x01\x00\x2d\x00\x36\x00\x56\x00\x07\x00\x5c\x00\x5d\x00\x5e\x00\x1e\x00\x5c\x00\x5d\x00\x5e\x00\x0d\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x5c\x00\x5d\x00\x21\x00\x21\x00\x23\x00\x23\x00\x5c\x00\x5d\x00\x79\x00\x07\x00\x01\x00\x2a\x00\x2b\x00\x2c\x00\x04\x00\x07\x00\x79\x00\x2a\x00\x5c\x00\x04\x00\x33\x00\x76\x00\x0d\x00\x37\x00\x36\x00\x5c\x00\x5d\x00\x5e\x00\x5c\x00\x5d\x00\x77\x00\x78\x00\x79\x00\x36\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x5c\x00\x5d\x00\x21\x00\x01\x00\x23\x00\x43\x00\x20\x00\x21\x00\x79\x00\x23\x00\x48\x00\x2a\x00\x2b\x00\x2c\x00\x04\x00\x0d\x00\x2a\x00\x2b\x00\x2c\x00\x02\x00\x33\x00\x79\x00\x1c\x00\x36\x00\x56\x00\x33\x00\x7a\x00\x7b\x00\x36\x00\x1c\x00\x5c\x00\x5d\x00\x5e\x00\x4b\x00\x41\x00\x42\x00\x43\x00\x44\x00\x74\x00\x41\x00\x42\x00\x43\x00\x44\x00\x21\x00\x2d\x00\x23\x00\x77\x00\x78\x00\x79\x00\x79\x00\x79\x00\x39\x00\x2a\x00\x2b\x00\x2c\x00\x01\x00\x36\x00\x54\x00\x39\x00\x2a\x00\x5c\x00\x33\x00\x5e\x00\x03\x00\x36\x00\x21\x00\x06\x00\x0d\x00\x54\x00\x43\x00\x05\x00\x06\x00\x07\x00\x2c\x00\x48\x00\x41\x00\x42\x00\x43\x00\x44\x00\x02\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x01\x00\x36\x00\x54\x00\x56\x00\x78\x00\x79\x00\x1f\x00\x34\x00\x35\x00\x5c\x00\x79\x00\x5e\x00\x0d\x00\x20\x00\x21\x00\x2a\x00\x20\x00\x21\x00\x2d\x00\x05\x00\x06\x00\x07\x00\x1e\x00\x09\x00\x1a\x00\x0b\x00\x0c\x00\x0d\x00\x07\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x2d\x00\x36\x00\x5c\x00\x5d\x00\x36\x00\x19\x00\x01\x00\x1b\x00\x03\x00\x1d\x00\x1e\x00\x1f\x00\x79\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\x34\x00\x35\x00\x5c\x00\x5d\x00\x5e\x00\x74\x00\x33\x00\x54\x00\x0a\x00\x79\x00\x37\x00\x5a\x00\x0e\x00\x5c\x00\x76\x00\x5e\x00\x5f\x00\x60\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\x54\x00\x6e\x00\x5c\x00\x5d\x00\x5e\x00\x1c\x00\x73\x00\x74\x00\x1c\x00\x76\x00\x42\x00\x43\x00\x44\x00\x79\x00\x2c\x00\x5a\x00\x79\x00\x5c\x00\x30\x00\x5e\x00\x5f\x00\x60\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\x39\x00\x6e\x00\x76\x00\x39\x00\x54\x00\x1c\x00\x73\x00\x74\x00\x4b\x00\x76\x00\x77\x00\x78\x00\x79\x00\x05\x00\x06\x00\x07\x00\x0a\x00\x09\x00\x79\x00\x0b\x00\x0c\x00\x0d\x00\x76\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x01\x00\x1c\x00\x78\x00\x79\x00\x1c\x00\x19\x00\x39\x00\x1b\x00\x76\x00\x1d\x00\x1e\x00\x1f\x00\x0d\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\x07\x00\x77\x00\x78\x00\x79\x00\x1c\x00\x39\x00\x33\x00\x07\x00\x39\x00\x1c\x00\x37\x00\x1c\x00\x1c\x00\x01\x00\x1a\x00\x2a\x00\x3c\x00\x3d\x00\x2d\x00\x01\x00\x1a\x00\x03\x00\x42\x00\x43\x00\x44\x00\x0d\x00\x07\x00\x22\x00\x23\x00\x1a\x00\x25\x00\x0d\x00\x27\x00\x39\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x39\x00\x07\x00\x39\x00\x39\x00\x20\x00\x21\x00\x33\x00\x5a\x00\x76\x00\x5c\x00\x37\x00\x5e\x00\x5f\x00\x60\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\x36\x00\x6e\x00\x5c\x00\x5d\x00\x5e\x00\x4c\x00\x73\x00\x74\x00\x1a\x00\x76\x00\x77\x00\x78\x00\x79\x00\x79\x00\x07\x00\x41\x00\x42\x00\x43\x00\x44\x00\x5a\x00\x50\x00\x5c\x00\x1a\x00\x5e\x00\x5f\x00\x60\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\x07\x00\x6e\x00\x5c\x00\x5d\x00\x5e\x00\x07\x00\x73\x00\x74\x00\x5c\x00\x5d\x00\x77\x00\x78\x00\x79\x00\x01\x00\x79\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x2a\x00\x74\x00\x03\x00\x2d\x00\x0d\x00\x06\x00\x22\x00\x23\x00\x79\x00\x25\x00\x76\x00\x27\x00\x79\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x07\x00\x02\x00\x03\x00\x36\x00\x1e\x00\x06\x00\x33\x00\x58\x00\x59\x00\x2a\x00\x37\x00\x36\x00\x2d\x00\x1f\x00\x1a\x00\x36\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x79\x00\x41\x00\x42\x00\x43\x00\x44\x00\x07\x00\x22\x00\x23\x00\x76\x00\x25\x00\x4c\x00\x27\x00\x08\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x33\x00\x5a\x00\x75\x00\x5c\x00\x37\x00\x5e\x00\x5f\x00\x60\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\x76\x00\x6e\x00\x5c\x00\x5d\x00\x6d\x00\x4c\x00\x73\x00\x74\x00\x00\x00\x01\x00\x77\x00\x78\x00\x79\x00\x78\x00\x79\x00\x01\x00\x77\x00\x78\x00\x79\x00\x5a\x00\x2b\x00\x5c\x00\x5b\x00\x5e\x00\x5f\x00\x60\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\x07\x00\x6e\x00\x41\x00\x42\x00\x43\x00\x44\x00\x73\x00\x74\x00\x36\x00\x02\x00\x77\x00\x78\x00\x79\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x5b\x00\x41\x00\x42\x00\x43\x00\x44\x00\x07\x00\x46\x00\x47\x00\x02\x00\x22\x00\x23\x00\x2b\x00\x25\x00\x01\x00\x27\x00\x01\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x4e\x00\x4f\x00\x50\x00\x19\x00\x04\x00\x1b\x00\x33\x00\x1d\x00\x1e\x00\x1f\x00\x37\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\x32\x00\x13\x00\x14\x00\x15\x00\x16\x00\x5b\x00\x33\x00\x01\x00\x4c\x00\x03\x00\x37\x00\x5c\x00\x5d\x00\x78\x00\x79\x00\x41\x00\x42\x00\x43\x00\x44\x00\x0d\x00\x5c\x00\x5d\x00\x5a\x00\x5e\x00\x5c\x00\x02\x00\x5e\x00\x5f\x00\x60\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\x5a\x00\x6e\x00\x5c\x00\x04\x00\x5e\x00\x5f\x00\x73\x00\x74\x00\x2a\x00\x2b\x00\x77\x00\x78\x00\x79\x00\x21\x00\x5e\x00\x23\x00\x2a\x00\x2b\x00\x07\x00\x2a\x00\x2b\x00\x23\x00\x2a\x00\x2b\x00\x2c\x00\x73\x00\x74\x00\x02\x00\x2a\x00\x2b\x00\x2c\x00\x33\x00\x02\x00\x77\x00\x78\x00\x79\x00\x19\x00\x33\x00\x1b\x00\x2b\x00\x1d\x00\x1e\x00\x1f\x00\x04\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\x07\x00\x2a\x00\x2b\x00\x36\x00\x5c\x00\x5d\x00\x33\x00\x4e\x00\x4f\x00\x50\x00\x37\x00\x77\x00\x78\x00\x79\x00\x41\x00\x42\x00\x43\x00\x44\x00\x19\x00\x04\x00\x1b\x00\x04\x00\x1d\x00\x1e\x00\x1f\x00\x2c\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\x5a\x00\x2a\x00\x5c\x00\x01\x00\x5e\x00\x5f\x00\x33\x00\x79\x00\x2b\x00\x21\x00\x37\x00\x23\x00\x1e\x00\x79\x00\x5e\x00\x23\x00\x5c\x00\x5d\x00\x2a\x00\x2b\x00\x2c\x00\x07\x00\x2a\x00\x2b\x00\x2c\x00\x73\x00\x74\x00\x33\x00\x17\x00\x18\x00\x36\x00\x33\x00\x79\x00\x1e\x00\x36\x00\x5e\x00\x77\x00\x78\x00\x79\x00\x19\x00\x04\x00\x1b\x00\x04\x00\x1d\x00\x1e\x00\x1f\x00\x30\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\x07\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x33\x00\x42\x00\x43\x00\x44\x00\x37\x00\x46\x00\x47\x00\x11\x00\x12\x00\x77\x00\x78\x00\x79\x00\x19\x00\x02\x00\x1b\x00\x5e\x00\x1d\x00\x1e\x00\x1f\x00\x04\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\x79\x00\x36\x00\x77\x00\x78\x00\x79\x00\x04\x00\x33\x00\x77\x00\x78\x00\x79\x00\x37\x00\x23\x00\x41\x00\x42\x00\x43\x00\x44\x00\x32\x00\x04\x00\x2a\x00\x2b\x00\x2c\x00\x07\x00\x04\x00\x78\x00\x79\x00\x5c\x00\x5d\x00\x33\x00\x0b\x00\x0c\x00\x36\x00\x41\x00\x42\x00\x43\x00\x44\x00\x02\x00\x77\x00\x78\x00\x79\x00\x19\x00\x02\x00\x1b\x00\x02\x00\x1d\x00\x1e\x00\x1f\x00\x1f\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\x07\x00\x01\x00\x2d\x00\x03\x00\x2a\x00\x2b\x00\x33\x00\x3c\x00\x78\x00\x79\x00\x37\x00\x2a\x00\x2b\x00\x0d\x00\x2b\x00\x77\x00\x78\x00\x79\x00\x19\x00\x2b\x00\x1b\x00\x02\x00\x1d\x00\x1e\x00\x1f\x00\x2b\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\x79\x00\x05\x00\x06\x00\x07\x00\x5c\x00\x5d\x00\x33\x00\x36\x00\x1c\x00\x1d\x00\x37\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x36\x00\x21\x00\x2c\x00\x23\x00\x43\x00\x77\x00\x78\x00\x79\x00\x1e\x00\x48\x00\x2a\x00\x2b\x00\x2c\x00\x43\x00\x05\x00\x06\x00\x07\x00\x02\x00\x48\x00\x33\x00\x77\x00\x78\x00\x79\x00\x56\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x17\x00\x18\x00\x5e\x00\x56\x00\x02\x00\x42\x00\x43\x00\x44\x00\x02\x00\x5c\x00\x5d\x00\x5e\x00\x05\x00\x06\x00\x07\x00\x11\x00\x12\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x37\x00\x02\x00\x77\x00\x78\x00\x79\x00\x77\x00\x78\x00\x79\x00\x0b\x00\x0c\x00\x41\x00\x42\x00\x43\x00\x44\x00\x5a\x00\x02\x00\x5c\x00\x02\x00\x5e\x00\x5f\x00\x60\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\x79\x00\x6e\x00\x77\x00\x78\x00\x79\x00\x2c\x00\x73\x00\x74\x00\x1e\x00\x76\x00\x5a\x00\x5c\x00\x5c\x00\x2d\x00\x5e\x00\x5f\x00\x60\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\x1e\x00\x6e\x00\x77\x00\x78\x00\x79\x00\x30\x00\x73\x00\x74\x00\x5a\x00\x76\x00\x5c\x00\x5b\x00\x5e\x00\x5f\x00\x60\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\x02\x00\x6e\x00\x05\x00\x06\x00\x07\x00\x36\x00\x73\x00\x74\x00\x02\x00\x76\x00\x02\x00\x02\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x1f\x00\x43\x00\x04\x00\x02\x00\x36\x00\x02\x00\x48\x00\x4d\x00\x04\x00\x3b\x00\x3c\x00\x3d\x00\x05\x00\x06\x00\x07\x00\x41\x00\x42\x00\x43\x00\x44\x00\x04\x00\x56\x00\x04\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x3b\x00\x3c\x00\x3d\x00\x4e\x00\x4f\x00\x50\x00\x41\x00\x42\x00\x43\x00\x44\x00\x5e\x00\x5c\x00\x05\x00\x06\x00\x07\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x30\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x38\x00\x02\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x02\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x5a\x00\x79\x00\x5c\x00\x2b\x00\x5e\x00\x5f\x00\x60\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\x79\x00\x6e\x00\x4e\x00\x4f\x00\x50\x00\x1f\x00\x73\x00\x74\x00\x5a\x00\x76\x00\x5c\x00\x01\x00\x5e\x00\x5f\x00\x60\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\x02\x00\x6e\x00\x4e\x00\x4f\x00\x50\x00\x02\x00\x73\x00\x74\x00\x5a\x00\x76\x00\x5c\x00\x02\x00\x5e\x00\x5f\x00\x60\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\x02\x00\x6e\x00\x05\x00\x06\x00\x07\x00\x2c\x00\x73\x00\x74\x00\x1f\x00\x76\x00\x2a\x00\x02\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x5e\x00\x04\x00\x04\x00\x4e\x00\x4f\x00\x50\x00\x4e\x00\x4f\x00\x50\x00\x3b\x00\x3c\x00\x3d\x00\x05\x00\x06\x00\x07\x00\x41\x00\x42\x00\x43\x00\x44\x00\x4e\x00\x4f\x00\x50\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x4e\x00\x4f\x00\x50\x00\x77\x00\x78\x00\x79\x00\x05\x00\x06\x00\x07\x00\x77\x00\x78\x00\x79\x00\x77\x00\x78\x00\x79\x00\x1f\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x38\x00\x01\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x2c\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x5a\x00\x79\x00\x5c\x00\x2c\x00\x5e\x00\x5f\x00\x60\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\x1f\x00\x6e\x00\x77\x00\x78\x00\x79\x00\x02\x00\x73\x00\x74\x00\x5a\x00\x76\x00\x5c\x00\x02\x00\x5e\x00\x5f\x00\x60\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\x08\x00\x6e\x00\x77\x00\x78\x00\x79\x00\x1f\x00\x73\x00\x74\x00\x5a\x00\x76\x00\x5c\x00\x01\x00\x5e\x00\x5f\x00\x60\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\x5e\x00\x6e\x00\x05\x00\x06\x00\x07\x00\x1f\x00\x73\x00\x74\x00\x02\x00\x76\x00\x02\x00\x02\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x01\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x2b\x00\x42\x00\x43\x00\x44\x00\x2b\x00\x5b\x00\x05\x00\x06\x00\x07\x00\x41\x00\x42\x00\x43\x00\x44\x00\x77\x00\x78\x00\x79\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x77\x00\x78\x00\x79\x00\x5c\x00\x2a\x00\x5a\x00\x46\x00\x5c\x00\x02\x00\x5e\x00\x5f\x00\x60\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\x2a\x00\x6e\x00\x2a\x00\x70\x00\x78\x00\x79\x00\x73\x00\x74\x00\x77\x00\x78\x00\x79\x00\x02\x00\x02\x00\x5a\x00\x79\x00\x5c\x00\x5e\x00\x5e\x00\x5f\x00\x60\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\x2a\x00\x6e\x00\x4e\x00\x4f\x00\x50\x00\x1e\x00\x73\x00\x74\x00\x5a\x00\x76\x00\x5c\x00\x1a\x00\x5e\x00\x5f\x00\x60\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\x1b\x00\x6e\x00\x0c\x00\x0d\x00\x19\x00\x10\x00\x73\x00\x74\x00\x04\x00\x76\x00\x01\x00\x5b\x00\x03\x00\x02\x00\x02\x00\x19\x00\x02\x00\x1b\x00\x5e\x00\x1d\x00\x1e\x00\x1f\x00\x0d\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\x4e\x00\x4f\x00\x50\x00\x01\x00\x20\x00\x21\x00\x33\x00\x23\x00\x57\x00\x2b\x00\x37\x00\x4e\x00\x4f\x00\x50\x00\x2a\x00\x2b\x00\x2c\x00\x46\x00\x4e\x00\x4f\x00\x50\x00\x2b\x00\x5e\x00\x33\x00\x2c\x00\x01\x00\x36\x00\x2c\x00\x36\x00\x5a\x00\x01\x00\x5c\x00\x30\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x41\x00\x42\x00\x43\x00\x44\x00\x43\x00\x0d\x00\x2c\x00\x30\x00\x5a\x00\x48\x00\x5c\x00\x2c\x00\x5e\x00\x5f\x00\x60\x00\x37\x00\x01\x00\x73\x00\x74\x00\x3b\x00\x3c\x00\x3d\x00\x2c\x00\x56\x00\x03\x00\x41\x00\x42\x00\x43\x00\x44\x00\x5c\x00\x5d\x00\x5e\x00\x01\x00\x73\x00\x74\x00\x2b\x00\x02\x00\x77\x00\x78\x00\x79\x00\x30\x00\x31\x00\x2c\x00\x33\x00\x02\x00\x35\x00\x5b\x00\x5e\x00\x38\x00\x01\x00\x65\x00\x3b\x00\x01\x00\x3d\x00\x3e\x00\x3f\x00\x79\x00\x4e\x00\x4f\x00\x50\x00\x44\x00\x45\x00\x01\x00\x47\x00\x04\x00\x5e\x00\x4a\x00\x4b\x00\x01\x00\x4d\x00\x4e\x00\x5e\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x01\x00\x77\x00\x78\x00\x79\x00\x2c\x00\x65\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x01\x00\x77\x00\x78\x00\x79\x00\x1e\x00\x65\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x01\x00\x01\x00\x10\x00\x4e\x00\x4f\x00\x50\x00\x5a\x00\x1e\x00\x5c\x00\x01\x00\x5e\x00\x5f\x00\x60\x00\x1b\x00\x2b\x00\x38\x00\x2b\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x1e\x00\x41\x00\x42\x00\x43\x00\x44\x00\x2b\x00\x2b\x00\x2c\x00\x73\x00\x74\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\x65\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x01\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x01\x00\x77\x00\x78\x00\x79\x00\x01\x00\x01\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x5b\x00\x31\x00\x10\x00\x65\x00\x2a\x00\x5a\x00\x36\x00\x5c\x00\x1b\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x1b\x00\x3e\x00\x77\x00\x78\x00\x79\x00\x1a\x00\x43\x00\x77\x00\x78\x00\x79\x00\x47\x00\x48\x00\x77\x00\x78\x00\x79\x00\x19\x00\x4d\x00\x73\x00\x74\x00\x50\x00\x2f\x00\x52\x00\x31\x00\x10\x00\x33\x00\x56\x00\x35\x00\x36\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x5e\x00\x3d\x00\x3e\x00\x3f\x00\x4e\x00\x4f\x00\x50\x00\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\x48\x00\xff\xff\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x01\x00\x4e\x00\x4f\x00\x50\x00\xff\xff\x36\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\x41\x00\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\x47\x00\x19\x00\xff\xff\x1b\x00\x1b\x00\x1d\x00\x1e\x00\x1f\x00\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x77\x00\x78\x00\x79\x00\x2f\x00\xff\xff\x31\x00\x33\x00\x33\x00\xff\xff\x35\x00\x37\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\xff\xff\x3d\x00\x3e\x00\x3f\x00\x4e\x00\x4f\x00\x50\x00\xff\xff\x44\x00\x45\x00\xff\xff\x47\x00\x78\x00\x79\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x01\x00\x77\x00\x78\x00\x79\x00\xff\xff\x37\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x77\x00\x78\x00\x79\x00\x01\x00\x02\x00\x03\x00\x01\x00\x02\x00\x03\x00\x1b\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x01\x00\x02\x00\x03\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\x3c\x00\x3d\x00\x2c\x00\xff\xff\xff\xff\x2f\x00\x42\x00\x43\x00\x44\x00\x33\x00\x01\x00\x35\x00\x03\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\x0d\x00\x01\x00\x02\x00\x03\x00\x44\x00\x45\x00\x77\x00\x78\x00\x79\x00\xff\xff\x4a\x00\x4b\x00\x4c\x00\x04\x00\x4e\x00\xff\xff\xff\xff\x51\x00\xff\xff\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x01\x00\x78\x00\x79\x00\xff\xff\x36\x00\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\x01\x00\x43\x00\x03\x00\xff\xff\x05\x00\x06\x00\x48\x00\xff\xff\x09\x00\x0a\x00\x1b\x00\xff\xff\x38\x00\xff\xff\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x56\x00\x41\x00\x42\x00\x43\x00\x44\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\xff\xff\x2f\x00\x01\x00\x02\x00\x03\x00\x33\x00\x01\x00\x35\x00\x03\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\x0d\x00\x0d\x00\x0e\x00\x0f\x00\x44\x00\x45\x00\x01\x00\x02\x00\x03\x00\xff\xff\x4a\x00\x4b\x00\x4c\x00\xff\xff\x4e\x00\xff\xff\xff\xff\x51\x00\xff\xff\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x01\x00\x0d\x00\x0e\x00\x0f\x00\x36\x00\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x43\x00\x36\x00\xff\xff\xff\xff\xff\xff\x48\x00\x3b\x00\x3c\x00\x3d\x00\x1b\x00\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\x5a\x00\x56\x00\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x2b\x00\x2c\x00\x5e\x00\xff\xff\x2f\x00\x30\x00\xff\xff\x32\x00\xff\xff\x34\x00\xff\xff\xff\xff\x37\x00\xff\xff\x39\x00\x3a\x00\x37\x00\xff\xff\x73\x00\x74\x00\xff\xff\x40\x00\x41\x00\x42\x00\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x49\x00\x46\x00\x47\x00\x4c\x00\xff\xff\xff\xff\x4f\x00\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\x78\x00\x79\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x0d\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x01\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x77\x00\x78\x00\x79\x00\xff\xff\x1b\x00\xff\xff\xff\xff\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\xff\xff\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\x2f\x00\xff\xff\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\x36\x00\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x43\x00\x01\x00\xff\xff\x03\x00\xff\xff\x48\x00\x5c\x00\x5d\x00\x5e\x00\x4c\x00\x4d\x00\xff\xff\x5a\x00\x0d\x00\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x56\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x01\x00\xff\xff\xff\xff\x73\x00\x74\x00\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x1b\x00\x3d\x00\xff\xff\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\xff\xff\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\x4e\x00\xff\xff\x2f\x00\x51\x00\xff\xff\x53\x00\x54\x00\x55\x00\x56\x00\x36\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x43\x00\x03\x00\xff\xff\x01\x00\xff\xff\x48\x00\x01\x00\xff\xff\xff\xff\x4c\x00\x4d\x00\x0d\x00\x42\x00\x43\x00\x44\x00\x0d\x00\x46\x00\x47\x00\x0d\x00\x56\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x01\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\xff\xff\xff\xff\x36\x00\x5a\x00\xff\xff\x5c\x00\x36\x00\x5e\x00\x5f\x00\x36\x00\x1b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\x78\x00\x79\x00\xff\xff\x43\x00\x48\x00\xff\xff\x43\x00\xff\xff\x48\x00\xff\xff\xff\xff\x48\x00\x73\x00\x74\x00\x2f\x00\x5a\x00\xff\xff\x5c\x00\x56\x00\x5e\x00\x5f\x00\x36\x00\x56\x00\xff\xff\x5c\x00\x56\x00\x5e\x00\xff\xff\x5c\x00\x5d\x00\x5e\x00\x5c\x00\x5d\x00\x5e\x00\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\x48\x00\x73\x00\x74\x00\xff\xff\x4c\x00\x4d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x56\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x01\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x01\x00\xff\xff\x03\x00\xff\xff\x0d\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x01\x00\x1b\x00\x03\x00\xff\xff\xff\xff\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\x73\x00\x74\x00\x2c\x00\x2d\x00\x36\x00\x2f\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x1b\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\xff\xff\x2f\x00\xff\xff\x73\x00\x74\x00\x4c\x00\xff\xff\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\x5d\x00\x5e\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\xff\xff\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x4c\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\xff\xff\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x01\x00\x73\x00\x74\x00\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\x1b\x00\x46\x00\x47\x00\x5a\x00\x01\x00\x5c\x00\x03\x00\x5e\x00\x5f\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x36\x00\x73\x00\x74\x00\x1b\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\x48\x00\xff\xff\x2c\x00\xff\xff\x4c\x00\x2f\x00\x78\x00\x79\x00\xff\xff\x01\x00\xff\xff\x03\x00\x73\x00\x74\x00\x56\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x0d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4c\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\xff\xff\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x01\x00\x73\x00\x74\x00\x36\x00\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\x48\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x1b\x00\x5e\x00\x5f\x00\x60\x00\x01\x00\xff\xff\xff\xff\xff\xff\xff\xff\x56\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x5e\x00\xff\xff\x10\x00\x2f\x00\xff\xff\x73\x00\x74\x00\xff\xff\xff\xff\xff\xff\x36\x00\xff\xff\x5a\x00\x1b\x00\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\x48\x00\xff\xff\x2c\x00\xff\xff\x4c\x00\x2f\x00\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\xff\xff\xff\xff\xff\xff\x56\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\xff\xff\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\xff\xff\x36\x00\xff\xff\xff\xff\xff\xff\x4c\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x01\x00\xff\xff\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x01\x00\x02\x00\xff\xff\xff\xff\x0d\x00\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x01\x00\x1b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x79\x00\xff\xff\x10\x00\x73\x00\x74\x00\xff\xff\xff\xff\x36\x00\x2f\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x1b\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\x2f\x00\xff\xff\x73\x00\x74\x00\x4c\x00\xff\xff\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\x5e\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\xff\xff\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x4c\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\xff\xff\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x01\x00\x73\x00\x74\x00\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x1b\x00\x01\x00\x02\x00\xff\xff\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\x2c\x00\xff\xff\x5a\x00\x2f\x00\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\xff\xff\x1b\x00\x01\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\x73\x00\x74\x00\xff\xff\x2f\x00\xff\xff\x4c\x00\x78\x00\x79\x00\xff\xff\xff\xff\x1b\x00\xff\xff\xff\xff\x1e\x00\xff\xff\xff\xff\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\xff\xff\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x2f\x00\xff\xff\x4c\x00\xff\xff\xff\xff\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\xff\xff\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\xff\xff\xff\xff\x4c\x00\x73\x00\x74\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\xff\xff\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x01\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x1b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x78\x00\x79\x00\x10\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\x2f\x00\x37\x00\xff\xff\xff\xff\x4c\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x1b\x00\x41\x00\x42\x00\x43\x00\x44\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\xff\xff\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x4c\x00\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\xff\xff\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x77\x00\x78\x00\x79\x00\xff\xff\xff\xff\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\xff\xff\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x01\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\x01\x00\x1b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\x2f\x00\xff\xff\xff\xff\xff\xff\x4c\x00\x78\x00\x79\x00\xff\xff\xff\xff\xff\xff\x1b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\xff\xff\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x4c\x00\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\xff\xff\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x0d\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x0d\x00\xff\xff\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x01\x00\xff\xff\xff\xff\xff\xff\x36\x00\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\x1b\x00\x30\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\xff\xff\xff\xff\x38\x00\x56\x00\xff\xff\x3b\x00\xff\xff\x3d\x00\x3e\x00\x3f\x00\xff\xff\x5e\x00\xff\xff\x2f\x00\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x01\x00\xff\xff\x03\x00\xff\xff\xff\xff\xff\xff\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x4c\x00\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\xff\xff\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\xff\xff\x01\x00\x31\x00\x03\x00\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x0d\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\x5d\x00\x5e\x00\x01\x00\x31\x00\x03\x00\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x0d\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\x5d\x00\x5e\x00\x01\x00\x31\x00\x03\x00\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x0d\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\x5d\x00\x5e\x00\x01\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x0d\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\x5d\x00\x5e\x00\x01\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x0d\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\x5d\x00\x5e\x00\x01\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x0d\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\x5d\x00\x5e\x00\x01\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x0d\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\x5d\x00\x5e\x00\x01\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x0d\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\x5d\x00\x5e\x00\x01\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x0d\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\x5d\x00\x5e\x00\x01\x00\x31\x00\x03\x00\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x0d\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\x5d\x00\x5e\x00\x01\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x0d\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\x5e\x00\x01\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x0d\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\x5d\x00\x5e\x00\x01\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x0d\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\x5d\x00\x5e\x00\x01\x00\x31\x00\x03\x00\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x0d\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\x5d\x00\x5e\x00\x01\x00\x31\x00\x03\x00\x33\x00\xff\xff\x35\x00\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x0d\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\x5d\x00\x5e\x00\xff\xff\x31\x00\xff\xff\x33\x00\x0d\x00\x35\x00\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\xff\xff\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x01\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\x5d\x00\x5e\x00\x38\x00\xff\xff\xff\xff\x3b\x00\x0d\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x5c\x00\x5d\x00\x5e\x00\xff\xff\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\xff\xff\x0d\x00\x38\x00\xff\xff\x01\x00\x3b\x00\xff\xff\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\x0d\x00\x47\x00\xff\xff\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x01\x00\x1e\x00\x03\x00\xff\xff\xff\xff\xff\xff\x5c\x00\x5d\x00\x5e\x00\xff\xff\x36\x00\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\x43\x00\x35\x00\xff\xff\xff\xff\x38\x00\x48\x00\xff\xff\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\x56\x00\xff\xff\xff\xff\x4a\x00\x4b\x00\xff\xff\x5c\x00\x4e\x00\x5e\x00\xff\xff\x51\x00\x36\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\x5d\x00\x5e\x00\x43\x00\xff\xff\xff\xff\x1e\x00\x1f\x00\x48\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\xff\xff\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\x5c\x00\xff\xff\x5e\x00\x37\x00\xff\xff\xff\xff\xff\xff\xff\xff\x3c\x00\x3d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\xff\xff\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\xff\xff\xff\xff\xff\xff\x1e\x00\x1f\x00\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x33\x00\x42\x00\x43\x00\x44\x00\x37\x00\x46\x00\x47\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x77\x00\x78\x00\x79\x00\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\xff\xff\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x1e\x00\x1f\x00\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\xff\xff\x78\x00\x79\x00\x37\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x77\x00\x78\x00\x79\x00\xff\xff\xff\xff\xff\xff\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x1e\x00\x1f\x00\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x33\x00\x42\x00\x43\x00\x44\x00\x37\x00\x46\x00\x47\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x78\x00\x79\x00\xff\xff\x77\x00\x78\x00\x79\x00\xff\xff\xff\xff\xff\xff\x48\x00\x49\x00\x4a\x00\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1e\x00\x1f\x00\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\xff\xff\xff\xff\xff\xff\x37\x00\x78\x00\x79\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x77\x00\x78\x00\x79\x00\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\x1e\x00\x1f\x00\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\xff\xff\x20\x00\x21\x00\xff\xff\x23\x00\xff\xff\x33\x00\xff\xff\xff\xff\xff\xff\x37\x00\x2a\x00\x2b\x00\x2c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\xff\xff\x21\x00\x36\x00\x23\x00\xff\xff\x77\x00\x78\x00\x79\x00\x4a\x00\xff\xff\x2a\x00\x2b\x00\x2c\x00\x41\x00\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\x33\x00\xff\xff\xff\xff\x36\x00\xff\xff\xff\xff\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\xff\xff\xff\xff\x77\x00\x78\x00\x79\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x79\x00\x2a\x00\x2b\x00\x2c\x00\xff\xff\xff\xff\x33\x00\xff\xff\xff\xff\xff\xff\x33\x00\xff\xff\xff\xff\x36\x00\xff\xff\x3c\x00\x3d\x00\xff\xff\xff\xff\x78\x00\x79\x00\x42\x00\x43\x00\x44\x00\x41\x00\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x21\x00\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\x21\x00\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x2a\x00\x2b\x00\x2c\x00\xff\xff\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x33\x00\x79\x00\xff\xff\x36\x00\x78\x00\x79\x00\x33\x00\xff\xff\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x22\x00\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\x2a\x00\x2b\x00\x2c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x23\x00\x33\x00\x25\x00\xff\xff\x27\x00\x37\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\xff\xff\x79\x00\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\xff\xff\xff\xff\xff\xff\x37\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\x79\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x79\x00\xff\xff\xff\xff\xff\xff\x5a\x00\x4c\x00\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\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\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\xff\xff\xff\xff\x77\x00\x78\x00\x79\x00\x22\x00\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\x2a\x00\x2b\x00\x2c\x00\xff\xff\x77\x00\x78\x00\x79\x00\xff\xff\xff\xff\x33\x00\xff\xff\xff\xff\xff\xff\x37\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x22\x00\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\x4c\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x73\x00\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\xff\xff\xff\xff\x5a\x00\x37\x00\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\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\xff\xff\x6e\x00\xff\xff\x4c\x00\xff\xff\xff\xff\x73\x00\x74\x00\xff\xff\xff\xff\x77\x00\x78\x00\x79\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\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\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\xff\xff\xff\xff\x77\x00\x78\x00\x79\x00\x22\x00\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\x2a\x00\x2b\x00\x2c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\xff\xff\xff\xff\xff\xff\x37\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\xff\xff\x22\x00\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\x4c\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x73\x00\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\xff\xff\xff\xff\x5a\x00\x37\x00\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\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\xff\xff\x6e\x00\xff\xff\x4c\x00\xff\xff\xff\xff\x73\x00\x74\x00\xff\xff\xff\xff\x77\x00\x78\x00\x79\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\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\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\xff\xff\xff\xff\x77\x00\x78\x00\x79\x00\x22\x00\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\x2a\x00\x2b\x00\x2c\x00\xff\xff\x2e\x00\x2f\x00\x30\x00\x22\x00\x23\x00\x33\x00\x25\x00\xff\xff\x27\x00\x37\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\xff\xff\x2e\x00\x2f\x00\x30\x00\x22\x00\x23\x00\x33\x00\x25\x00\xff\xff\x27\x00\x37\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\xff\xff\x22\x00\x23\x00\x37\x00\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\x2a\x00\x2b\x00\x2c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\xff\xff\xff\xff\xff\xff\x37\x00\xff\xff\x4c\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\x77\x00\x78\x00\x79\x00\xff\xff\x22\x00\x23\x00\x4c\x00\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\x2a\x00\x2b\x00\x2c\x00\x77\x00\x78\x00\x79\x00\xff\xff\x23\x00\xff\xff\x33\x00\xff\xff\xff\xff\xff\xff\x37\x00\x2a\x00\x2b\x00\x2c\x00\x36\x00\x77\x00\x78\x00\x79\x00\xff\xff\xff\xff\x33\x00\xff\xff\xff\xff\x36\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\x77\x00\x78\x00\x79\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\xff\xff\xff\xff\xff\xff\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x23\x00\xff\xff\xff\xff\x36\x00\xff\xff\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x77\x00\x78\x00\x79\x00\xff\xff\xff\xff\x77\x00\x78\x00\x79\x00\x41\x00\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\xff\xff\x78\x00\x79\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\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\x36\x00\xff\xff\xff\xff\xff\xff\x71\x00\xff\xff\x73\x00\x74\x00\xff\xff\x37\x00\x77\x00\x78\x00\x79\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\x47\x00\xff\xff\xff\xff\x79\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\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\x37\x00\xff\xff\xff\xff\x36\x00\x71\x00\xff\xff\x73\x00\x74\x00\x3b\x00\x3c\x00\x3d\x00\xff\xff\x79\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x77\x00\x78\x00\x79\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\xff\xff\xff\xff\xff\xff\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\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\xff\xff\xff\xff\xff\xff\xff\xff\x71\x00\xff\xff\x73\x00\x74\x00\xff\xff\xff\xff\x77\x00\x78\x00\x79\x00\x37\x00\x77\x00\x78\x00\x79\x00\x3b\x00\x3c\x00\x3d\x00\x37\x00\x36\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\xff\xff\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\xff\xff\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\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\xff\xff\x77\x00\x78\x00\x79\x00\xff\xff\xff\xff\x73\x00\x74\x00\x77\x00\x78\x00\x79\x00\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\xff\xff\x35\x00\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\x4e\x00\xff\xff\xff\xff\x51\x00\xff\xff\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x5d\x00\x5e\x00\x5f\x00\x33\x00\xff\xff\x35\x00\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\x4e\x00\xff\xff\x2b\x00\x51\x00\xff\xff\x53\x00\x54\x00\x55\x00\x31\x00\xff\xff\xff\xff\xff\xff\xff\xff\x36\x00\xff\xff\x5d\x00\x5e\x00\x5f\x00\x2b\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\x31\x00\xff\xff\x43\x00\xff\xff\xff\xff\x36\x00\x47\x00\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4d\x00\x3e\x00\xff\xff\x50\x00\xff\xff\x52\x00\x43\x00\xff\xff\xff\xff\x56\x00\x47\x00\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4d\x00\x5e\x00\xff\xff\x50\x00\xff\xff\x52\x00\x2c\x00\xff\xff\xff\xff\x56\x00\xff\xff\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\xff\xff\x5e\x00\x38\x00\xff\xff\xff\xff\x3b\x00\xff\xff\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\x5d\x00\x5e\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\xff\xff\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\x5e\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\xff\xff\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\x5d\x00\x5e\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\xff\xff\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\x5e\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\xff\xff\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\x5e\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\xff\xff\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\x5d\x00\x5e\x00\x38\x00\xff\xff\xff\xff\x3b\x00\xff\xff\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\x5d\x00\x5e\x00\x38\x00\xff\xff\xff\xff\x3b\x00\xff\xff\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\x5e\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\xff\xff\xff\xff\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\xff\xff\xff\xff\x50\x00\xff\xff\x52\x00\xff\xff\x54\x00\x55\x00\x56\x00\x33\x00\xff\xff\x35\x00\xff\xff\xff\xff\x38\x00\xff\xff\x5e\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\x4e\x00\xff\xff\xff\xff\x51\x00\xff\xff\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\x5e\x00\x5f\x00\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\xff\xff\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\x4e\x00\xff\xff\xff\xff\x51\x00\xff\xff\x53\x00\x54\x00\x55\x00\x56\x00\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\x5d\x00\x5e\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\xff\xff\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\x4e\x00\xff\xff\xff\xff\x51\x00\xff\xff\x53\x00\x54\x00\x55\x00\x56\x00\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\x5d\x00\x5e\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\xff\xff\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\x4e\x00\xff\xff\xff\xff\x51\x00\xff\xff\x53\x00\x54\x00\x55\x00\x56\x00\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\x5d\x00\x5e\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\xff\xff\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\x4e\x00\xff\xff\xff\xff\x51\x00\xff\xff\x53\x00\x54\x00\x55\x00\x56\x00\x33\x00\xff\xff\x35\x00\xff\xff\xff\xff\x38\x00\x5d\x00\x5e\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\x4e\x00\xff\xff\xff\xff\x51\x00\xff\xff\x53\x00\x54\x00\x55\x00\xff\xff\x33\x00\xff\xff\x35\x00\xff\xff\xff\xff\x38\x00\x5d\x00\x5e\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\x4e\x00\xff\xff\xff\xff\x51\x00\xff\xff\x53\x00\x54\x00\x55\x00\xff\xff\x33\x00\xff\xff\x35\x00\xff\xff\xff\xff\x38\x00\x5d\x00\x5e\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\x4e\x00\xff\xff\xff\xff\x51\x00\xff\xff\x53\x00\x54\x00\x55\x00\xff\xff\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\x5d\x00\x5e\x00\x3b\x00\xff\xff\xff\xff\xff\xff\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\xff\xff\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x53\x00\x5e\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x53\x00\x76\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x53\x00\x76\x00\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\x76\x00\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x72\x00\x73\x00\x74\x00\xff\xff\x53\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7c\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\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\xff\xff\x53\x00\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\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\xff\xff\x53\x00\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\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\xff\xff\xff\xff\xff\xff\xff\xff\x71\x00\xff\xff\x73\x00\x74\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x79\x00\x5e\x00\x5f\x00\x60\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\xff\xff\x6e\x00\xff\xff\x70\x00\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\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\xff\xff\x6e\x00\xff\xff\x70\x00\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\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\xff\xff\x6e\x00\xff\xff\x70\x00\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\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\xff\xff\x6e\x00\xff\xff\x70\x00\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\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\xff\xff\x6e\x00\xff\xff\x70\x00\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\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\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\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\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\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\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\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\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\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\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\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\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\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\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\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\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\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\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\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\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\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\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\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\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\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\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x72\x00\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x72\x00\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x72\x00\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x72\x00\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x72\x00\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x72\x00\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x72\x00\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x72\x00\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x72\x00\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x72\x00\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x3b\x00\x3c\x00\x3d\x00\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\xff\xff\xff\xff\xff\xff\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x3b\x00\x3c\x00\x3d\x00\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x31\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x38\x00\xff\xff\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x31\x00\x41\x00\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\x38\x00\xff\xff\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x38\x00\xff\xff\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x38\x00\xff\xff\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x38\x00\xff\xff\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\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"# + +happyTable :: HappyAddr +happyTable = HappyA# "\x00\x00\x88\x00\x4c\x00\x4d\x00\xa2\x01\x7b\x03\x5e\x03\x12\x03\x13\x03\x11\x03\x12\x03\x13\x03\x60\x03\x3d\xfe\xe6\x02\x25\x02\x8d\x01\x72\x03\xaa\x00\xcb\x01\x35\x03\x25\x03\x1a\x02\x7a\x03\x4e\x00\x69\x03\x4f\x00\x26\x02\x50\x00\x51\x00\x52\x00\xcc\x01\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xd4\x02\x16\x03\xf8\x00\x7b\x02\x82\x02\xef\x00\x5f\x00\x84\x01\xc7\x00\xb9\x00\x60\x00\xc8\x00\xf7\x01\xbc\x00\x3d\x01\x4c\x00\x4d\x00\x75\x01\x36\x03\x7b\x03\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x9c\x00\x25\x02\x4f\x03\xba\x00\x83\x02\xcb\x01\x76\x01\xbd\x00\xe2\x01\xf9\x00\x4e\x00\x71\x03\x4f\x00\x26\x02\x50\x00\x51\x00\x52\x00\xcc\x01\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x14\x03\x97\x01\x86\x00\x14\x03\x14\x03\x84\x00\x5f\x00\x86\x00\x73\x03\x84\x00\x60\x00\x86\x00\x86\x00\xd6\x00\x4b\x00\x4c\x00\x4d\x00\x68\x00\x69\x00\x6a\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\xf0\x00\x4b\x00\xc8\x01\x63\x00\xc9\x01\x2a\x00\xb6\x00\x84\x00\x98\x01\x86\x00\x4e\x00\x86\x00\x4f\x00\xc9\x00\x50\x00\x51\x00\x52\x00\xbe\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xaa\x00\xcb\x01\x06\x02\x4f\x03\xaa\x00\x84\x00\x5f\x00\x86\x00\x6a\x03\x84\x00\x60\x00\x86\x00\x55\x03\xcc\x01\x07\x02\xdd\x01\xbd\x00\x68\x00\x69\x00\x6a\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x9c\x00\x39\x03\xab\x00\xfb\x02\xac\x00\xc4\x00\x25\x02\x3b\x03\x84\x00\x98\x01\x86\x00\xad\x00\x5d\x00\x5e\x00\xd7\x00\xe1\x02\xb7\x00\xd3\x02\x26\x02\xe0\x02\x5f\x00\x25\x02\x9d\x01\xae\x00\xc5\x00\x56\x03\xde\x01\x0a\x03\x3c\xfe\xf7\x01\x6d\x03\x0b\x03\xf6\x01\x26\x02\xaf\x00\x62\x00\x63\x00\x64\x00\xb0\x00\x66\x00\x67\x00\x3c\xfe\xd8\x00\xb9\x00\xf7\x01\xd9\x00\x3c\xfe\x68\x00\x69\x00\x6a\x00\xcb\x01\xb5\x00\xda\x00\x5d\x00\x5e\x00\x9e\x01\xbe\x00\xd4\x02\x6e\x03\xe1\x02\x3c\xfe\x5f\x00\xcc\x01\x60\x02\xba\x00\x84\x00\x84\x00\xd7\x00\x86\x00\xf7\x01\xf0\x00\x4b\x00\xb6\x00\xd5\x00\xa1\x00\xdb\x00\x62\x00\x63\x00\x64\x00\xdc\x00\x66\x00\x67\x00\x54\x03\x41\x03\x9f\x01\xd6\x00\xa0\x01\xa2\x00\xae\x00\xb1\x00\x6a\x00\xc6\x00\xa3\x00\xa1\x01\x5d\x00\x5e\x00\x96\x00\x84\x00\xd7\x00\x86\x00\xf9\x01\x19\x03\x5f\x00\xec\x02\xe8\x02\xa2\x01\xa4\x00\x1a\x03\x84\x00\xd7\x00\x86\x00\x42\x03\x84\x00\xd7\x00\x86\x00\xf7\x01\xa3\x01\x62\x00\x63\x00\x64\x00\xa4\x01\x66\x00\x67\x00\x84\x00\xd7\x00\x97\x00\xc3\x00\x98\x00\xc4\x00\xf0\x00\x4b\x00\xdd\x00\x1b\x03\x6c\x00\x99\x00\x5d\x00\x5e\x00\x86\x02\x1d\x03\xb7\x00\xfa\x01\x84\x00\x89\x02\x5f\x00\x28\x03\x6d\x00\x0c\x02\xc5\x00\x84\x00\x98\x01\x86\x00\xf0\x00\x4b\x00\xc1\x02\x80\x02\x6a\x00\xa1\x00\x9a\x00\x62\x00\x63\x00\x64\x00\x9b\x00\x66\x00\x67\x00\x84\x00\xd7\x00\xab\x00\xcb\x01\xac\x00\xa2\x00\xd8\x00\xb9\x00\x9c\x00\xd9\x00\xa3\x00\xad\x00\x5d\x00\x5e\x00\x1c\x03\xcc\x01\xda\x00\x5d\x00\x5e\x00\x67\x02\x5f\x00\x60\x02\x98\x02\xae\x00\xa4\x00\x5f\x00\xda\x01\xdb\x01\xba\x00\x99\x02\x84\x00\xd7\x00\x86\x00\x8c\x02\xaf\x00\x62\x00\x63\x00\xd0\x01\x9a\x02\xdb\x00\x62\x00\x63\x00\xd0\x01\x9f\x01\xa8\x02\xa0\x01\x0d\x02\x8c\x00\x6a\x00\x9c\x00\xc6\x00\x84\x01\xa1\x01\x5d\x00\x5e\x00\x97\x01\xa1\x00\xb4\x02\x84\x01\x68\x02\x84\x00\x5f\x00\x86\x00\xa8\xfe\xa2\x01\xbc\x00\xa8\xfe\xd6\x00\xec\x01\xa2\x00\x6e\x03\x32\x00\x33\x00\xd7\x01\xa3\x00\xa3\x01\x62\x00\x63\x00\xd0\x01\x90\x02\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x25\x02\xbd\x00\x16\x02\xa4\x00\x87\x02\x6a\x00\xa8\xfe\xda\x02\xe1\x01\x84\x00\xdd\x00\x86\x00\x26\x02\xc0\x00\xb9\x00\x37\x03\xb8\x00\xb9\x00\x38\x03\x46\x02\x32\x00\x33\x00\x91\x02\x8d\x02\x19\x02\x48\x02\x49\x02\x4a\x02\x1b\x02\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x1e\x02\xba\x00\xf0\x00\x4b\x00\xba\x00\x4b\x02\xa9\x00\x4f\x00\xaa\x00\x50\x00\x4c\x02\x4d\x02\x9c\x00\x53\x00\x4e\x02\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xe0\x01\xe1\x01\x84\x00\x98\x01\x86\x00\x42\x02\x5f\x00\x20\x02\x70\x01\xbe\x00\x4f\x02\x06\x00\x71\x01\x07\x00\xe2\x01\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\x2f\x02\x39\x00\x84\x00\xd7\x00\x86\x00\x89\x01\x18\x00\x19\x00\xa8\x01\x3a\x00\x92\x00\x63\x00\xe9\x01\xc1\x00\xe5\xff\x06\x00\xbb\x00\x07\x00\x86\x01\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\x84\x01\x39\x00\xe2\x01\x84\x01\x35\x02\xc6\x01\x18\x00\x19\x00\x43\x02\x3a\x00\x68\x00\xc3\x01\x6a\x00\x46\x02\x32\x00\x33\x00\x44\x02\x47\x02\x60\x02\x48\x02\x49\x02\x4a\x02\x3f\x01\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x92\x01\x1a\x02\x95\x00\x6a\x00\x83\x01\x4b\x02\x84\x01\x4f\x00\x40\x01\x50\x00\x4c\x02\x4d\x02\xd6\x00\x53\x00\x4e\x02\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x0d\x01\x70\x03\x8c\x00\x6a\x00\x89\x01\x84\x01\x5f\x00\x86\x01\x84\x01\x99\x01\x4f\x02\xa8\x01\xc6\x01\x97\x01\x82\x01\xea\x02\x23\x02\xcf\x00\xeb\x02\x06\x02\x88\x01\xaa\x00\xc8\x01\x63\x00\xc9\x01\xd6\x00\x8a\x01\x0e\x01\x55\x00\x98\x01\x0f\x01\x07\x02\x10\x01\x84\x01\x11\x01\x5c\x00\x5d\x00\x5e\x00\x84\x01\x9a\x01\x84\x01\x84\x01\xc0\x00\xb9\x00\x5f\x00\x06\x00\x9b\x01\x07\x00\x12\x01\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\xba\x00\x39\x00\x84\x00\xd7\x00\x86\x00\x68\x01\x18\x00\x19\x00\xa7\x01\x3a\x00\x68\x00\xc3\x01\x6a\x00\x9c\x00\xa9\x01\xcf\x01\x62\x00\x63\x00\xd0\x01\x06\x00\xbc\x01\x07\x00\xc5\x01\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\x0d\x01\x14\x01\x84\x00\x98\x01\x86\x00\xc7\x01\x18\x00\x19\x00\x84\x00\xd7\x00\x68\x00\x15\x01\x6a\x00\xf6\x01\x9c\x00\x7d\x02\x5f\x01\xa6\x00\xa7\x00\x60\x01\x61\x01\x30\x03\xd4\x01\x75\x02\x31\x03\xf7\x01\x76\x02\x0e\x01\x55\x00\xc1\x00\x0f\x01\xd5\x01\x10\x01\x9c\x00\x11\x01\x5c\x00\x5d\x00\x5e\x00\x0d\x01\x20\x03\x21\x03\x9f\x00\x04\x03\x22\x03\x5f\x00\x2b\x03\x2c\x03\xdd\x02\x12\x01\xae\x00\xde\x02\x2e\x03\xa4\x00\xae\x00\x2b\x02\xce\x00\xcf\x00\x2c\x02\xd1\x00\x9c\x00\xd1\x01\x62\x00\x63\x00\xd0\x01\xe7\x00\x0e\x01\x55\x00\xed\x00\x0f\x01\x69\x01\x10\x01\xfa\x00\x11\x01\x5c\x00\x5d\x00\x5e\x00\x7e\x02\x5f\x01\xa6\x00\xa7\x00\x60\x01\x61\x01\x5f\x00\x06\x00\x04\x01\x07\x00\x12\x01\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\x0a\x01\x14\x01\x84\x00\xd7\x00\x2b\x01\x6b\x01\x18\x00\x19\x00\x87\x00\x05\x00\x68\x00\x15\x01\x6a\x00\x2d\x02\x6a\x00\x05\x00\x7f\x02\x80\x02\x6a\x00\x06\x00\x7d\x03\x07\x00\x2a\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\x0d\x01\x14\x01\x38\x02\x62\x00\x63\x00\xd0\x01\x18\x00\x19\x00\xae\x00\x7e\x03\x68\x00\x15\x01\x6a\x00\x2b\x02\xce\x00\xcf\x00\x2c\x02\xd1\x00\x2a\x00\xd1\x01\x62\x00\x63\x00\x64\x00\xb5\x02\xd2\x01\x67\x00\x7f\x03\x0e\x01\x55\x00\x75\x03\x0f\x01\x76\x03\x10\x01\x77\x03\x11\x01\x5c\x00\x5d\x00\x5e\x00\x38\x03\xa6\x00\xa7\x00\xbe\x01\x69\x03\x4f\x00\x5f\x00\x50\x00\xbf\x01\xc0\x01\x12\x01\x53\x00\xc1\x01\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5a\x03\x20\x01\x21\x01\x22\x01\x23\x01\x2a\x00\x5f\x00\x65\x01\x13\x01\xaa\x00\xc2\x01\xf0\x00\x4b\x00\x2d\x02\x6a\x00\xf9\x02\x62\x00\x63\x00\xd0\x01\x66\x01\x3d\x03\x3e\x03\x06\x00\x86\x00\x07\x00\x6c\x03\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\x06\x00\x14\x01\x07\x00\x58\x03\x00\x01\x09\x00\x18\x00\x19\x00\xfe\x02\xff\x02\x68\x00\x15\x01\x6a\x00\x97\x00\x86\x00\x98\x00\x00\x03\x01\x03\xee\x01\xfa\x01\x19\x03\x98\x00\x99\x00\x5d\x00\x5e\x00\x18\x00\x19\x00\x5d\x03\x99\x00\x5d\x00\x5e\x00\x5f\x00\x5e\x03\x68\x00\xc3\x01\x6a\x00\xbe\x01\x5f\x00\x4f\x00\x60\x03\x50\x00\xbf\x01\xc0\x01\x63\x03\x53\x00\xc1\x01\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x17\x02\xfa\x01\x8f\x02\xa2\x01\xf0\x00\x4b\x00\x5f\x00\x26\x02\xa6\x00\xa7\x00\xc2\x01\x49\x03\x8c\x00\x6a\x00\xe5\x01\x62\x00\x63\x00\xd0\x01\xbe\x01\x64\x03\x4f\x00\x65\x03\x50\x00\xbf\x01\xc0\x01\x3d\x00\x53\x00\xc1\x01\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x06\x00\x40\x03\x07\x00\x3f\x03\x02\x01\x09\x00\x5f\x00\x9c\x00\x43\x03\x9f\x01\xc2\x01\xa0\x01\x49\x03\x9c\x00\x86\x00\xac\x00\xf0\x00\x4b\x00\xa1\x01\x5d\x00\x5e\x00\x21\x02\xad\x00\x5d\x00\x5e\x00\x18\x00\x19\x00\x5f\x00\x1e\x01\x1f\x01\xa2\x01\x5f\x00\x9c\x00\x4f\x03\xae\x00\x86\x00\x68\x00\xc3\x01\x6a\x00\xbe\x01\x51\x03\x4f\x00\x53\x03\x50\x00\xbf\x01\xc0\x01\x86\x01\x53\x00\xc1\x01\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x30\x02\x92\x01\xcf\x00\x93\x01\xd1\x00\x9d\x02\x5f\x00\x92\x00\x63\x00\x93\x00\xc2\x01\x94\x00\x67\x00\x24\x01\x25\x01\x68\x00\xc3\x01\x6a\x00\xbe\x01\xe3\x02\x4f\x00\x86\x00\x50\x00\xbf\x01\xc0\x01\xf0\x02\x53\x00\xc1\x01\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x9c\x00\xae\x00\xfb\x02\xfc\x02\x6a\x00\xf1\x02\x5f\x00\x4a\x03\x8c\x00\x6a\x00\xc2\x01\xa0\x01\xd1\x01\x62\x00\x63\x00\xd0\x01\x4c\x03\xf4\x02\xa1\x01\x5d\x00\x5e\x00\x36\x02\xf5\x02\x95\x01\x6a\x00\xf0\x00\x4b\x00\x5f\x00\x26\x01\x27\x01\xa2\x01\xf9\x02\x62\x00\x63\x00\xd0\x01\xf6\x02\x68\x00\xc3\x01\x6a\x00\xbe\x01\xf7\x02\x4f\x00\x0a\x03\x50\x00\xbf\x01\xc0\x01\xee\x01\x53\x00\xc1\x01\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xbd\x01\x06\x02\x18\x03\xaa\x00\xe4\x00\xe5\x00\x5f\x00\x0d\x03\xd3\x01\x6a\x00\xc2\x01\xe6\x00\xe7\x00\x07\x02\x0e\x03\x68\x00\xc3\x01\x6a\x00\xbe\x01\x0f\x03\x4f\x00\x10\x03\x50\x00\xbf\x01\xc0\x01\x17\x03\x53\x00\xc1\x01\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x9c\x00\x6f\x03\x32\x00\x33\x00\xf0\x00\x4b\x00\x5f\x00\xa1\x00\x18\x01\x19\x01\xc2\x01\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xa1\x00\x97\x00\x3d\x00\x98\x00\xa2\x00\x4b\x03\x8c\x00\x6a\x00\x2b\x03\xa3\x00\x99\x00\x5d\x00\x5e\x00\xa2\x00\x45\x03\x32\x00\x33\x00\x1f\x03\xa3\x00\x5f\x00\x68\x00\xc3\x01\x6a\x00\xa4\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x1e\x01\x1f\x01\x86\x00\xa4\x00\x23\x03\xc8\x01\x63\x00\xc9\x01\x26\x03\x84\x00\xd7\x00\x86\x00\x10\x03\x32\x00\x33\x00\x24\x01\x25\x01\x77\x02\xa6\x00\xa7\x00\x78\x02\x79\x02\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xe8\x01\x27\x03\x68\x00\xc3\x01\x6a\x00\xf1\x02\x8c\x00\x6a\x00\x26\x01\x27\x01\x8f\x00\x62\x00\x63\x00\xd0\x01\x06\x00\x7c\x02\x07\x00\x7d\x02\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\x9c\x00\x39\x00\xf2\x02\x8c\x00\x6a\x00\x63\x02\x18\x00\x19\x00\x3e\xfe\x3a\x00\x06\x00\xbc\x01\x07\x00\x8c\x02\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\x92\x02\x39\x00\x68\x00\x91\x00\x6a\x00\x86\x01\x18\x00\x19\x00\x06\x00\x3a\x00\x07\x00\x2a\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\x9c\x02\x39\x00\x95\x02\x32\x00\x33\x00\xa1\x00\x18\x00\x19\x00\x9d\x02\x3a\x00\xa5\x02\xa7\x02\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xee\x01\xa2\x00\xca\x00\xb3\x02\xa2\x01\xb4\x02\xa3\x00\xbc\x02\xbd\x02\x9e\x02\xce\x00\xcf\x00\x96\x02\x32\x00\x33\x00\xe5\x01\x62\x00\x63\x00\xd0\x01\xbf\x02\xa4\x00\xc0\x02\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x2a\x02\xce\x00\xcf\x00\x05\x03\xa6\x00\xa7\x00\xcf\x01\x62\x00\x63\x00\xd0\x01\x86\x00\xd1\x02\x97\x02\x32\x00\x33\x00\x66\x01\x5f\x01\xa6\x00\xa7\x00\x60\x01\x61\x01\x86\x01\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xcb\x00\xd6\x02\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd7\x02\xd2\x00\x62\x00\x63\x00\x64\x00\xd3\x00\x66\x00\x67\x00\x06\x00\x9c\x00\x07\x00\xda\x02\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\x9c\x00\x39\x00\x26\x02\xa6\x00\xa7\x00\xdc\x02\x18\x00\x19\x00\x06\x00\x3a\x00\x07\x00\xdf\x02\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\xdf\x01\x39\x00\x23\x03\xa6\x00\xa7\x00\xe0\x01\x18\x00\x19\x00\x06\x00\x3a\x00\x07\x00\xe5\x01\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\xec\x01\x39\x00\x41\x02\x32\x00\x33\x00\xe4\x01\x18\x00\x19\x00\xee\x01\x3a\x00\xfb\x01\xfc\x01\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x86\x00\x12\x02\xe0\x00\x26\x02\xa6\x00\xa7\x00\xa2\x02\xa6\x00\xa7\x00\x2a\x02\xce\x00\xcf\x00\x52\x02\x32\x00\x33\x00\xcf\x01\x62\x00\x63\x00\xd0\x01\xa3\x02\xa6\x00\xa7\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x7d\x02\x5f\x01\xa6\x00\xa7\x00\x60\x01\x61\x01\x26\x02\xa6\x00\xa7\x00\xb8\x02\x8c\x00\x6a\x00\x76\x01\x32\x00\x33\x00\xbd\x02\x8c\x00\x6a\x00\xc2\x02\x8c\x00\x6a\x00\xee\x01\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xe1\x00\x19\x02\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\x3d\x00\xd2\x00\x62\x00\x63\x00\x64\x00\xe2\x00\x66\x00\x67\x00\x06\x00\x9c\x00\x07\x00\x20\x02\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\xee\x01\x39\x00\xc3\x02\x8c\x00\x6a\x00\x28\x02\x18\x00\x19\x00\x06\x00\x3a\x00\x07\x00\x29\x02\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\x78\x01\x39\x00\xc4\x02\x8c\x00\x6a\x00\xee\x01\x18\x00\x19\x00\x06\x00\x3a\x00\x07\x00\x34\x02\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\x86\x00\x39\x00\xf1\x00\x32\x00\x33\x00\xee\x01\x18\x00\x19\x00\x3a\x02\x3a\x00\x3b\x02\x3c\x02\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x40\x02\x92\x01\xcf\x00\x93\x01\xd1\x00\x9d\x02\x3d\x02\x92\x00\x63\x00\xe9\x01\x3e\x02\x2a\x00\x31\x00\x32\x00\x33\x00\xcf\x01\x62\x00\x63\x00\xd0\x01\xc8\x02\x8c\x00\x6a\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x7d\x02\x5f\x01\xa6\x00\xa7\x00\x60\x01\x61\x01\xc9\x02\x8c\x00\x6a\x00\xbc\x01\x54\x02\x06\x00\x46\x02\x07\x00\x57\x02\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\x55\x02\xea\x00\x56\x02\x79\x01\x95\x01\x6a\x00\x18\x00\x19\x00\xcd\x02\x8c\x00\x6a\x00\x58\x02\x59\x02\x06\x00\x9c\x00\x07\x00\x86\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\x64\x02\x39\x00\xd8\x02\xa6\x00\xa7\x00\x66\x02\x18\x00\x19\x00\x06\x00\x3a\x00\x07\x00\x1b\x01\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\x1a\x01\x39\x00\x85\x02\x4a\x02\x1c\x01\x1d\x01\x18\x00\x19\x00\x69\x02\x3a\x00\x06\x02\x6b\x01\xaa\x00\x5d\x01\x5e\x01\x4b\x02\x68\x01\x4f\x00\x86\x00\x50\x00\x4c\x02\x4d\x02\x07\x02\x53\x00\x4e\x02\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xa5\x00\xa6\x00\xa7\x00\x74\x01\xd8\x00\xb9\x00\x5f\x00\xd9\x00\x78\x01\x7c\x01\x4f\x02\xe6\x01\xa6\x00\xa7\x00\xda\x00\x5d\x00\x5e\x00\x73\x01\xe7\x01\xa6\x00\xa7\x00\x7e\x01\x86\x00\x5f\x00\x3d\x00\x88\x01\xba\x00\x3d\x00\x3d\xfe\x06\x00\x6c\x00\x07\x00\x86\x01\xf4\x00\x09\x00\x0a\x00\x49\x01\xf7\x01\x62\x00\x63\x00\xd0\x01\x3d\xfe\x6d\x00\xe5\xff\x86\x01\x06\x00\x3d\xfe\x07\x00\x3d\x00\xf4\x00\x09\x00\x03\x01\xa5\x02\x9e\x01\x18\x00\x19\x00\x8e\x01\xce\x00\xcf\x00\x3d\x00\x3d\xfe\xaa\x00\x8f\x00\x62\x00\x63\x00\xd0\x01\x84\x00\xd7\x00\x86\x00\xc5\x01\x18\x00\x19\x00\x3f\x01\xcd\x01\x68\x00\xc3\x01\x6a\x00\x6e\x00\x6f\x00\x3d\x00\x70\x00\xcf\x01\x71\x00\x2a\x00\x86\x00\x72\x00\xda\x01\xff\xff\x73\x00\x8a\x00\x74\x00\x75\x00\x76\x00\xdd\x00\xa5\x00\xa6\x00\xa7\x00\x77\x00\x78\x00\x8b\x00\x79\x00\x88\x02\x86\x00\x7a\x00\x7b\x00\x8e\x00\x7c\x00\x7d\x00\x86\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\xe9\x00\x68\x00\x90\x01\x6a\x00\x3d\x00\xff\xff\x84\x00\x85\x00\x86\x00\x87\x00\x1b\x00\x0e\x02\x8c\x00\x6a\x00\x3f\xfe\xfb\xff\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xea\x00\xed\x00\x23\x00\x26\x02\xa6\x00\xa7\x00\x06\x00\xf3\x00\x07\x00\xf1\x00\xf4\x00\x09\x00\x61\x02\x24\x00\xf4\x00\xcb\x00\xf8\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xfc\x00\xd2\x00\x62\x00\x63\x00\xd0\x01\xfd\x00\x3c\x00\x3d\x00\x18\x00\x19\x00\x25\x00\x3e\x00\x6f\x00\x3f\x00\x70\x00\x40\x00\x71\x00\x3d\xfe\x41\x00\x72\x00\x42\x00\x43\x00\x73\x00\xff\xff\x74\x00\x75\x00\x76\x00\x44\x00\x45\x00\x46\x00\x3d\xfe\x77\x00\x78\x00\xfe\x00\x79\x00\x3d\xfe\x47\x00\x7a\x00\x7b\x00\x26\x00\x7c\x00\x7d\x00\x48\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x3d\xfe\x49\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x4a\x00\x51\x02\x86\x00\x52\x02\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x1b\x00\x34\x02\x8c\x00\x6a\x00\xff\x00\x00\x01\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x06\x01\x6f\x00\x23\x00\xff\xff\x17\x01\x06\x00\xa1\x00\x07\x00\x1a\x01\xf4\x00\x09\x00\x0a\x00\x4a\x01\x24\x00\x75\x00\x6f\x01\x8c\x00\x6a\x00\x1b\x01\xa2\x00\x80\x01\x8c\x00\x6a\x00\x79\x00\xa3\x00\x81\x01\x8c\x00\x6a\x00\x1c\x01\x7c\x00\x18\x00\x19\x00\x7e\x00\x25\x00\x80\x00\xd7\xff\x1d\x01\xd7\xff\xa4\x00\xd7\xff\xd7\xff\x00\x00\xd7\xff\x00\x00\x00\x00\xd7\xff\x86\x00\xd7\xff\xd7\xff\xd7\xff\x8b\x01\xa6\x00\xa7\x00\xd7\xff\xd7\xff\xd7\xff\x00\x00\xd7\xff\xd7\xff\x00\x00\xd7\xff\xd7\xff\x26\x00\xd7\xff\xd7\xff\x00\x00\xd7\xff\xd7\xff\xd7\xff\xd7\xff\xd7\xff\xd7\xff\xd7\xff\x00\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\xd7\xff\xd7\xff\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x1b\x00\xa5\x00\xa6\x00\xa7\x00\x00\x00\xae\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x23\x00\xd1\x01\x62\x00\x63\x00\x64\x00\x00\x00\xd2\x01\x67\x00\x3e\x02\x00\x00\x4f\x00\x24\x00\x50\x00\xbf\x01\xc0\x01\x00\x00\x53\x00\xc1\x01\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x8b\x00\x8c\x00\x6a\x00\x25\x00\x00\x00\x6f\x00\x5f\x00\x70\x00\x00\x00\x71\x00\xc2\x01\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\x00\x00\x74\x00\x75\x00\x76\x00\xa5\x00\xa6\x00\xa7\x00\x00\x00\x77\x00\x78\x00\x00\x00\x79\x00\xd3\x01\x6a\x00\x7a\x00\x7b\x00\x26\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x85\x00\x86\x00\x52\x02\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x1b\x00\xb4\x00\x8c\x00\x6a\x00\x00\x00\x59\x02\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x23\x00\x00\x00\x68\x00\xc3\x01\x6a\x00\x8d\x01\x47\x03\xaa\x00\x8d\x01\x09\x03\xaa\x00\x24\x00\x5a\x02\x5f\x01\xa6\x00\xa7\x00\x60\x01\x61\x01\x8d\x01\xa2\x02\xaa\x00\x8d\x01\xa8\x02\xaa\x00\x00\x00\x00\x00\x92\x01\xcf\x00\x3d\x00\x00\x00\x00\x00\x25\x00\x92\x00\x63\x00\xe9\x01\x70\x00\x01\x02\x71\x00\xaa\x00\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\x00\x00\x74\x00\x00\x00\x76\x00\x02\x02\x8d\x01\xce\x01\xaa\x00\x77\x00\x78\x00\x68\x00\x5b\x02\x6a\x00\x00\x00\x7a\x00\x7b\x00\x26\x00\x8a\x02\x7d\x00\x00\x00\x00\x00\x7f\x00\x00\x00\x81\x00\x82\x00\x83\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x85\x00\x86\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x1b\x00\x95\x01\x6a\x00\x00\x00\x3c\xfe\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x23\x00\x38\x01\x3c\xfe\x39\x01\x00\x00\x3a\x01\x3b\x01\x3c\xfe\x00\x00\x3c\x01\x3d\x01\x24\x00\x00\x00\xe1\x00\x00\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\x3c\xfe\xd2\x00\x62\x00\x63\x00\xd0\x01\x00\x00\x84\x00\x00\x00\x86\x00\x00\x00\x25\x00\x8d\x01\xeb\x01\xaa\x00\x70\x00\x65\x01\x71\x00\xaa\x00\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\x00\x00\x74\x00\x00\x00\x76\x00\x66\x01\x28\x01\x29\x01\x2a\x01\x77\x00\x78\x00\xa9\x00\xce\x01\xaa\x00\x00\x00\x7a\x00\x7b\x00\x26\x00\x00\x00\x7d\x00\x00\x00\x00\x00\x7f\x00\x00\x00\x81\x00\x82\x00\x83\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x85\x00\x86\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x1b\x00\x28\x01\x29\x01\x2a\x01\x3c\xfe\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x23\x00\x00\x00\x3c\xfe\xae\x00\x00\x00\x00\x00\x00\x00\x3c\xfe\x2b\x02\xce\x00\xcf\x00\x24\x00\x00\x00\x00\x00\xd1\x01\x62\x00\x63\x00\xd0\x01\x00\x00\x00\x00\x06\x00\x3c\xfe\x07\x00\x00\x00\xf4\x00\x09\x00\x46\x01\x3c\x00\x3d\x00\x86\x00\x00\x00\x25\x00\x3e\x00\x00\x00\x3f\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x00\x00\x42\x00\x43\x00\x8e\x00\x00\x00\x18\x00\x19\x00\x00\x00\x44\x00\x45\x00\x46\x00\x00\x00\x00\x00\x8f\x00\x62\x00\x63\x00\x64\x00\x47\x00\x90\x00\x67\x00\x26\x00\x00\x00\x00\x00\x48\x00\x00\x00\x00\x00\x01\x02\x00\x00\xaa\x00\x06\x03\x6a\x00\x49\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x4a\x00\x4b\x00\x02\x02\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xbb\x02\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x00\x91\x00\x6a\x00\x00\x00\x24\x00\x00\x00\x00\x00\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\x00\x00\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\x00\x00\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x25\x00\x00\x00\x77\x00\x78\x00\x00\x00\x79\x00\x00\x00\xa1\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\x9e\x00\x80\x00\x81\x00\x82\x00\x83\x00\xa2\x00\x65\x01\x00\x00\xaa\x00\x00\x00\xa3\x00\x84\x00\x9f\x00\x86\x00\x26\x00\x3c\xfe\x00\x00\x06\x00\x66\x01\x07\x00\x00\x00\xf4\x00\x09\x00\x47\x01\xa4\x00\x00\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x00\x00\x86\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x1b\x00\x00\x00\x00\x00\x18\x00\x19\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x16\x02\x00\x00\x00\x00\x23\x00\x00\x00\x70\x00\x00\x00\x71\x00\xa1\x00\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\x24\x00\x74\x00\x00\x00\x76\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x77\x00\x78\x00\x00\x00\x00\x00\xa3\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x7d\x00\x00\x00\x25\x00\xb3\x00\x00\x00\x81\x00\x82\x00\x83\x00\xa4\x00\xa1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb4\x00\x86\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x02\xa2\x00\xaa\x00\x00\x00\x25\x02\x00\x00\xa3\x00\xa1\x02\x00\x00\x00\x00\x26\x00\x3d\xfe\x02\x02\x92\x00\x63\x00\x93\x00\x26\x02\x94\x00\x67\x00\xf7\x01\xa4\x00\x00\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x00\x00\x86\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xaf\x01\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\xa1\x00\x06\x00\x00\x00\x07\x00\xa1\x00\x06\x01\x09\x00\xa1\x00\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x95\x00\x6a\x00\x00\x00\xa2\x00\xa3\x00\x00\x00\xa2\x00\x00\x00\xa3\x00\x00\x00\x00\x00\xa3\x00\x18\x00\x19\x00\x25\x00\x06\x00\x00\x00\x07\x00\xa4\x00\x08\x01\x09\x00\x3d\xfe\xa4\x00\x00\x00\x84\x00\xa4\x00\x86\x00\x00\x00\x84\x00\xd7\x00\x86\x00\x84\x00\xd7\x00\x86\x00\x3d\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x3d\xfe\x18\x00\x19\x00\x00\x00\x26\x00\xb0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\xfe\x00\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2f\x02\x86\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x1b\x00\x00\x00\x75\x02\x00\x00\xd6\x00\x76\x02\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x23\x00\x06\x00\x00\x00\x07\x00\x00\x00\xf4\x00\x09\x00\x0a\x00\x0b\x00\x4b\x01\x1b\x00\x24\x00\x75\x02\x00\x00\x00\x00\x76\x02\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x23\x00\x18\x00\x19\x00\x77\x02\x66\x03\xa1\x00\x25\x00\x00\x00\x06\x00\x00\x00\x07\x00\x24\x00\xf4\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x4d\x01\xa2\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x02\x34\x03\x00\x00\x25\x00\x00\x00\x18\x00\x19\x00\x26\x00\x00\x00\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\xd7\x00\x86\x00\x00\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x4a\x00\x4b\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x26\x00\x06\x00\x00\x00\x07\x00\x00\x00\xf4\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x51\x01\x27\x00\x28\x00\x29\x00\x2a\x00\x4a\x00\x4b\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x1b\x00\x18\x00\x19\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x11\x02\x00\x00\x00\x00\x23\x00\x00\x00\x92\x01\xcf\x00\x93\x01\xd1\x00\x22\x02\x00\x00\x92\x00\x63\x00\x93\x00\x24\x00\x94\x00\x67\x00\x06\x00\x1b\x00\x07\x00\x75\x02\x0b\x01\x09\x00\x76\x02\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x23\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\xfe\x18\x00\x19\x00\x24\x00\x00\x00\x06\x00\x00\x00\x07\x00\x00\x00\xf4\x00\x09\x00\x48\x01\x00\x00\x3c\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x3c\xfe\x00\x00\x77\x02\x00\x00\x26\x00\x25\x00\x95\x01\x6a\x00\x00\x00\x65\x01\x00\x00\xaa\x00\x18\x00\x19\x00\x3c\xfe\x00\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x66\x01\x86\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x06\x00\x00\x00\x07\x00\x00\x00\xf4\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x52\x01\x27\x00\x28\x00\x29\x00\x2a\x00\x4a\x00\x4b\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x1b\x00\x18\x00\x19\x00\xa1\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x23\x00\xa2\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\x00\x00\x00\x06\x00\x00\x00\x07\x00\x24\x00\xf4\x00\x09\x00\x03\x01\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x86\x00\x00\x00\x23\x00\x25\x00\x00\x00\x18\x00\x19\x00\x00\x00\x00\x00\x00\x00\xa1\x00\x00\x00\x06\x00\x24\x00\x07\x00\x00\x00\xf4\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x4e\x01\x00\x00\xa2\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\x00\x00\x00\x77\x02\x00\x00\x26\x00\x25\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x00\x00\x00\x00\x00\x00\xa4\x00\x00\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\xa2\x01\x00\x00\x00\x00\x00\x00\x26\x00\x9e\x02\xce\x00\xcf\x00\x9f\x02\xd1\x00\x00\x00\xe5\x01\x62\x00\x63\x00\xd0\x01\x00\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\xcb\x01\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x1b\x00\xe6\x02\x00\x00\x00\x00\xcc\x01\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x23\x00\x06\x00\x00\x00\x07\x00\x00\x00\xf4\x00\x09\x00\x0a\x00\x0b\x00\x4c\x01\x1b\x00\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x9c\x00\x00\x00\x23\x00\x18\x00\x19\x00\x00\x00\x00\x00\xa1\x00\x25\x00\x00\x00\x06\x00\x00\x00\x07\x00\x24\x00\xf4\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x4f\x01\xa2\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x02\x00\x00\x00\x00\x25\x00\x00\x00\x18\x00\x19\x00\x26\x00\x00\x00\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\x00\x00\x86\x00\x00\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x26\x00\x06\x00\x00\x00\x07\x00\x00\x00\xf4\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x50\x01\x00\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x1b\x00\x18\x00\x19\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x23\x00\x92\x01\xcf\x00\x93\x01\xd1\x00\x22\x02\x00\x00\x92\x00\x63\x00\xe9\x01\x00\x00\x24\x00\x1b\x00\x45\x01\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x23\x00\x63\x02\x00\x00\x06\x00\x25\x00\x07\x00\x00\x00\xf4\x00\x09\x00\x2a\x01\x00\x00\x24\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x23\x00\x18\x00\x19\x00\x00\x00\x25\x00\x00\x00\x26\x00\x95\x01\x6a\x00\x00\x00\x00\x00\x24\x00\x00\x00\x00\x00\x59\x01\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x06\x00\x00\x00\x07\x00\x00\x00\x0c\x01\x09\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x00\x00\x26\x00\x18\x00\x19\x00\x92\x01\xcf\x00\x93\x01\xd1\x00\x29\x02\x00\x00\x92\x00\x63\x00\xe9\x01\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x01\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x95\x01\x6a\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x23\x00\x25\x00\xd1\x02\x00\x00\x00\x00\x26\x00\x8e\x01\xce\x00\xcf\x00\x8f\x01\xd1\x00\x24\x00\x8f\x00\x62\x00\x63\x00\xd0\x01\x00\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x26\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x00\x90\x01\x6a\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x08\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x23\x00\x92\x01\xcf\x00\x93\x01\xd1\x00\x07\x03\x00\x00\x92\x00\x63\x00\xe9\x01\x0a\x01\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x23\x00\x25\x00\x00\x00\x00\x00\x00\x00\x26\x00\x95\x01\x6a\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x26\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x01\x00\x00\xaa\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x00\x00\x66\x01\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x6d\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x3d\xfe\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x23\x00\x00\x00\x3d\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x3d\xfe\x00\x00\x00\x00\x00\x00\x24\x00\x6e\x00\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\x00\x00\x00\x00\x72\x00\x3d\xfe\x00\x00\x73\x00\x00\x00\x74\x00\x75\x00\x76\x00\x00\x00\x86\x00\x00\x00\x25\x00\x77\x00\x78\x00\x00\x00\x79\x00\x00\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x06\x02\x00\x00\xaa\x00\x00\x00\x00\x00\x00\x00\x84\x00\x85\x00\x86\x00\x87\x00\x26\x00\x00\x00\x07\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x2d\x01\x2e\x01\x2f\x01\x30\x01\x31\x01\x32\x01\x33\x01\x34\x01\x35\x01\x36\x01\x37\x01\x00\x00\x01\x02\x6f\x00\xaa\x00\x70\x00\x00\x00\x71\x00\x3d\xfe\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\x02\x02\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\x3d\xfe\x77\x00\x78\x00\x00\x00\x79\x00\x3d\xfe\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x3d\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\x85\x00\x86\x00\x01\x02\x6f\x00\xaa\x00\x70\x00\x00\x00\x71\x00\x3d\xfe\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\x02\x02\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\x3d\xfe\x77\x00\x78\x00\x00\x00\x79\x00\x3d\xfe\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x3d\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\x85\x00\x86\x00\x01\x02\x6f\x00\xaa\x00\x70\x00\x00\x00\x71\x00\xa1\x00\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\x02\x02\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x77\x00\x78\x00\x00\x00\x79\x00\xa3\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\xb3\x00\x80\x00\x81\x00\x82\x00\x83\x00\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\xb4\x00\x86\x00\xcb\x01\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\xa1\x00\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\xcc\x01\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x77\x00\x78\x00\x00\x00\x79\x00\xa3\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\xdf\x00\x80\x00\x81\x00\x82\x00\x83\x00\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\xe0\x00\x86\x00\xcb\x01\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\xa1\x00\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\xcc\x01\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x77\x00\x78\x00\x00\x00\x79\x00\xa3\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\xa6\x01\x80\x00\x81\x00\x82\x00\x83\x00\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\xa7\x01\x86\x00\xcb\x01\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\xa1\x00\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\xcc\x01\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x77\x00\x78\x00\x00\x00\x79\x00\xa3\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\xb3\x00\x80\x00\x81\x00\x82\x00\x83\x00\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\xb4\x00\x86\x00\xcb\x01\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\xa1\x00\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\xcc\x01\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x77\x00\x78\x00\x00\x00\x79\x00\xa3\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\xdf\x00\x80\x00\x81\x00\x82\x00\x83\x00\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\xe0\x00\x86\x00\xcb\x01\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\xa1\x00\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\xcc\x01\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x77\x00\x78\x00\x00\x00\x79\x00\xa3\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\xa6\x01\x80\x00\x81\x00\x82\x00\x83\x00\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\xa7\x01\x86\x00\xcb\x01\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\xa1\x00\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\xcc\x01\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x77\x00\x78\x00\x00\x00\x79\x00\xa3\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\xb3\x00\x80\x00\x81\x00\x82\x00\x83\x00\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\xb4\x00\x86\x00\x65\x01\x6f\x00\xaa\x00\x70\x00\x00\x00\x71\x00\xa1\x00\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\x66\x01\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x77\x00\x78\x00\x00\x00\x79\x00\xa3\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\xdf\x00\x80\x00\x81\x00\x82\x00\x83\x00\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\xe0\x00\x86\x00\x6c\x00\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\x3d\xfe\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\x6d\x00\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\x3d\xfe\x77\x00\x78\x00\x00\x00\x79\x00\x3d\xfe\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x3d\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85\x00\x86\x00\x6c\x00\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\xa1\x00\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\x6d\x00\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x77\x00\x78\x00\x00\x00\x79\x00\xa3\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\xa6\x01\x80\x00\x81\x00\x82\x00\x83\x00\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\xa7\x01\x86\x00\x6c\x00\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\xa1\x00\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\x6d\x00\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x77\x00\x78\x00\x00\x00\x79\x00\xa3\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\xb3\x00\x80\x00\x81\x00\x82\x00\x83\x00\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\xb4\x00\x86\x00\x06\x02\x6f\x00\xaa\x00\x70\x00\x00\x00\x71\x00\xa1\x00\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\x07\x02\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x77\x00\x78\x00\x00\x00\x79\x00\xa3\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\xdf\x00\x80\x00\x81\x00\x82\x00\x83\x00\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\xe0\x00\x86\x00\x65\x01\x6f\x00\xaa\x00\x70\x00\x00\x00\x71\x00\x00\x00\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\x66\x01\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x00\x78\x00\x00\x00\x79\x00\x00\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\x9e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x00\x00\xcb\x01\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\x9f\x00\x86\x00\x00\x00\x6f\x00\x00\x00\x70\x00\xcc\x01\x71\x00\x00\x00\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\x00\x00\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x00\x78\x00\x00\x00\x79\x00\x00\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\x9e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x00\x00\x6c\x00\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\x9f\x00\x86\x00\x72\x00\x00\x00\x00\x00\x73\x00\x6d\x00\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x00\x78\x00\x00\x00\x79\x00\x00\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\x9e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x84\x00\x9f\x00\x86\x00\x00\x00\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\x00\x00\x6d\x00\x72\x00\x00\x00\xcb\x01\x73\x00\x00\x00\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x00\x78\x00\xcc\x01\x79\x00\x00\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\x9e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x01\x02\xfb\x02\xaa\x00\x00\x00\x00\x00\x00\x00\x84\x00\x9f\x00\x86\x00\x00\x00\xa1\x00\x00\x00\x02\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x00\xa2\x00\x71\x00\x00\x00\x00\x00\x72\x00\xa3\x00\x00\x00\x73\x00\x00\x00\x74\x00\x00\x00\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x00\x78\x00\x00\x00\xa4\x00\x00\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x84\x00\x7d\x00\x86\x00\x00\x00\x9e\x00\x3d\xfe\x81\x00\x82\x00\x83\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\x9f\x00\x86\x00\x3d\xfe\x00\x00\x00\x00\xb0\x01\xb1\x01\x3d\xfe\x53\x00\xb2\x01\x55\x00\x56\x00\x57\x00\xb3\x01\xb4\x01\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x3d\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x84\x00\x00\x00\x86\x00\xb5\x01\x00\x00\x00\x00\x00\x00\x00\x00\x92\x01\xcf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x92\x00\x63\x00\xe9\x01\x00\x00\x00\x00\x00\x00\xb6\x01\xb7\x01\xb8\x01\x00\x00\x00\x00\x00\x00\x5c\x02\xa6\x00\xa7\x00\x5d\x02\x5e\x02\x00\x00\x00\x00\x00\x00\xb0\x01\xb1\x01\x00\x00\x53\x00\xb2\x01\x55\x00\x56\x00\x57\x00\xb3\x01\xb4\x01\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x92\x01\xcf\x00\x93\x01\xd1\x00\x29\x02\x5f\x00\x92\x00\x63\x00\x93\x00\xb5\x01\x94\x00\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x00\xc7\x02\x6a\x00\x92\x00\x63\x00\xe9\x01\x00\x00\x00\x00\x00\x00\xb6\x01\xb7\x01\xb8\x01\x00\x00\x00\x00\x00\x00\x5c\x02\xa6\x00\xa7\x00\x5d\x02\x5e\x02\xb0\x01\xb1\x01\x00\x00\x53\x00\xb2\x01\x55\x00\x56\x00\x57\x00\xb3\x01\xb4\x01\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x95\x01\x6a\x00\xb5\x01\x92\x01\xcf\x00\x93\x01\xd1\x00\x94\x01\x00\x00\x92\x00\x63\x00\xe9\x01\x00\x00\x68\x00\xcc\x02\x6a\x00\x00\x00\x00\x00\x00\x00\xb6\x01\xb7\x01\xb8\x01\x00\x00\x00\x00\x00\x00\x5c\x02\xa6\x00\xa7\x00\x5d\x02\x5e\x02\xb0\x01\xb1\x01\x00\x00\x53\x00\xb2\x01\x55\x00\x56\x00\x57\x00\xb3\x01\xb4\x01\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x92\x01\xcf\x00\x93\x01\xd1\x00\x94\x01\x5f\x00\x92\x00\x63\x00\x93\x00\xb5\x01\x94\x00\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x95\x01\x6a\x00\x00\x00\x68\x00\x5f\x02\x6a\x00\x00\x00\x00\x00\x00\x00\xb6\x01\xb7\x01\xb8\x01\xb9\x01\x00\x00\x00\x00\x00\x00\x00\x00\xb0\x01\xb1\x01\x00\x00\x53\x00\xb2\x01\x55\x00\x56\x00\x57\x00\xb3\x01\xb4\x01\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x00\x00\x00\x00\xb5\x01\x95\x01\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x00\xba\x01\x6a\x00\xb6\x01\xb7\x01\xb8\x01\x00\x00\x00\x00\x00\x00\xb0\x01\xb1\x01\x00\x00\x53\x00\xb2\x01\x55\x00\x56\x00\x57\x00\xb3\x01\xb4\x01\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\xd8\x00\xb9\x00\x00\x00\xd9\x00\x00\x00\x5f\x00\x00\x00\x00\x00\x00\x00\xb5\x01\xda\x00\x5d\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\xab\x00\xba\x00\xac\x00\x00\x00\x68\x00\xba\x01\x6a\x00\xce\x02\x00\x00\xad\x00\x5d\x00\x5e\x00\x07\x02\x62\x00\x63\x00\xd0\x01\x00\x00\x00\x00\x5f\x00\x00\x00\x00\x00\xae\x00\x00\x00\x00\x00\x08\x02\x5f\x01\xa6\x00\xa7\x00\x60\x01\x61\x01\x00\x00\x00\x00\xfc\x01\x62\x00\x63\x00\xd0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfd\x01\x5f\x01\xa6\x00\xa7\x00\x60\x01\x61\x01\x00\x00\x00\x00\x68\x00\xba\x01\x6a\x00\x00\x00\x97\x00\x00\x00\x98\x00\x00\x00\xab\x00\x00\x00\xac\x00\x00\x00\x00\x00\x99\x00\x5d\x00\x5e\x00\xdd\x00\xad\x00\x5d\x00\x5e\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x00\x00\xae\x00\x00\x00\x23\x02\xcf\x00\x00\x00\x00\x00\xfe\x01\xff\x01\xc8\x01\x63\x00\xc9\x01\xf2\x01\x62\x00\x63\x00\xd0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x02\xa6\x00\xa7\x00\x78\x02\x79\x02\x97\x00\x00\x00\x98\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x5d\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x9f\x01\x00\x00\xa0\x01\x00\x00\x00\x00\x00\x00\x97\x00\x00\x00\x98\x00\xa1\x01\x5d\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x99\x00\x5d\x00\x5e\x00\x5f\x00\x9c\x00\x00\x00\xa2\x01\xf3\x01\x6a\x00\x5f\x00\x00\x00\x77\x02\xa6\x00\xa7\x00\x78\x02\x79\x02\x00\x00\xd4\x02\x62\x00\x63\x00\xd0\x01\x00\x00\x00\x00\xf1\x01\x62\x00\x63\x00\xd0\x01\x0e\x01\x55\x00\x00\x00\x0f\x01\x00\x00\x10\x01\x00\x00\x11\x01\x5c\x00\x5d\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x01\x55\x00\x5f\x00\x0f\x01\x00\x00\x10\x01\x12\x01\x11\x01\x5c\x00\x5d\x00\x5e\x00\x00\x00\x9c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x12\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb6\x02\x00\x00\x00\x00\x00\x00\x9c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9c\x00\x00\x00\x00\x00\x00\x00\x06\x00\x81\x02\x07\x00\x00\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\x00\x00\xb7\x02\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x00\x00\x00\x00\x68\x00\x15\x01\x6a\x00\x0e\x01\x55\x00\x00\x00\x0f\x01\x00\x00\x10\x01\x00\x00\x11\x01\x5c\x00\x5d\x00\x5e\x00\x00\x00\x68\x00\x15\x01\x6a\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x12\x01\x06\x00\x00\x00\x07\x00\x00\x00\xf4\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x55\x01\x0e\x01\x55\x00\x00\x00\x0f\x01\x00\x00\x10\x01\xef\x01\x11\x01\x5c\x00\x5d\x00\x5e\x00\x18\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x00\x00\x06\x00\x12\x01\x07\x00\x00\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\x00\x00\xf0\x01\x00\x00\x1c\x02\x00\x00\x00\x00\x18\x00\x19\x00\x00\x00\x00\x00\x68\x00\x15\x01\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x07\x00\x00\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\x00\x00\x1d\x02\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x00\x00\x00\x00\x68\x00\x15\x01\x6a\x00\x0e\x01\x55\x00\x00\x00\x0f\x01\x00\x00\x10\x01\x00\x00\x11\x01\x5c\x00\x5d\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x12\x01\x06\x00\x00\x00\x07\x00\x00\x00\xf4\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x54\x01\x00\x00\x0e\x01\x55\x00\x00\x00\x0f\x01\x00\x00\x10\x01\x31\x02\x11\x01\x5c\x00\x5d\x00\x5e\x00\x18\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x00\x00\x06\x00\x12\x01\x07\x00\x00\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\x00\x00\x32\x02\x00\x00\xd7\x01\x00\x00\x00\x00\x18\x00\x19\x00\x00\x00\x00\x00\x68\x00\x15\x01\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x07\x00\x00\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\x00\x00\xd8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x00\x00\x00\x00\x68\x00\x15\x01\x6a\x00\xa9\x02\x55\x00\x00\x00\x0f\x01\x00\x00\x10\x01\x00\x00\x11\x01\x5c\x00\x5d\x00\x5e\x00\x00\x00\xf7\x02\xab\x02\xac\x02\xa9\x02\x55\x00\x5f\x00\x0f\x01\x00\x00\x10\x01\xad\x02\x11\x01\x5c\x00\x5d\x00\x5e\x00\x00\x00\xaa\x02\xab\x02\xac\x02\x0e\x01\x55\x00\x5f\x00\x0f\x01\x00\x00\x10\x01\xad\x02\x11\x01\x5c\x00\x5d\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x0e\x01\x55\x00\x12\x01\x0f\x01\x00\x00\x10\x01\x00\x00\x11\x01\x5c\x00\x5d\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x12\x01\x00\x00\x84\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\x68\x00\xae\x02\x6a\x00\x00\x00\x0e\x01\x55\x00\x6d\x01\x0f\x01\x00\x00\x10\x01\x00\x00\x11\x01\x5c\x00\x5d\x00\x5e\x00\x68\x00\xae\x02\x6a\x00\x00\x00\xac\x00\x00\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x12\x01\xad\x00\x5d\x00\x5e\x00\xae\x00\x68\x00\x15\x01\x6a\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x00\x00\xae\x00\x00\x00\xd1\x01\x62\x00\x63\x00\xd0\x01\x00\x00\x00\x00\x6e\x01\x00\x00\x00\x00\x68\x00\x15\x01\x6a\x00\x7e\x02\x5f\x01\xa6\x00\xa7\x00\x60\x01\x61\x01\x00\x00\x00\x00\x00\x00\x5e\x01\x5f\x01\xa6\x00\xa7\x00\x60\x01\x61\x01\x98\x00\x00\x00\x00\x00\xae\x00\x00\x00\x00\x00\x00\x00\x99\x00\x5d\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x02\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x00\x15\x01\x6a\x00\x00\x00\x00\x00\x7f\x02\xec\x02\x6a\x00\xf9\x02\x62\x00\x63\x00\xd0\x01\x00\x00\x00\x00\x00\x00\x62\x01\x63\x01\x06\x00\x00\x00\x07\x00\x00\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\xab\x01\xa2\x01\x00\x00\x00\x00\x00\x00\x12\x02\x00\x00\x18\x00\x19\x00\x00\x00\x8d\x01\x13\x02\x14\x02\x6a\x00\x8e\x01\xce\x00\xcf\x00\x8f\x01\xd1\x00\x00\x00\x8f\x00\x62\x00\x63\x00\x64\x00\x00\x00\x90\x00\x67\x00\x00\x00\x00\x00\x9c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x07\x00\x00\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\xab\x01\xaa\x01\x00\x00\x00\x00\xae\x00\xb9\x02\x00\x00\x18\x00\x19\x00\x2b\x02\xce\x00\xcf\x00\x00\x00\x9c\x00\x00\x00\xd1\x01\x62\x00\x63\x00\xd0\x01\x68\x00\x90\x01\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7e\x02\x5f\x01\xa6\x00\xa7\x00\x60\x01\x61\x01\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x07\x00\x00\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\xab\x01\x00\x00\x00\x00\x00\x00\x00\x00\xac\x01\x00\x00\x18\x00\x19\x00\x00\x00\x00\x00\x68\x00\xad\x01\x6a\x00\xc5\x02\x7f\x02\xed\x02\x6a\x00\x8e\x01\xce\x00\xcf\x00\xca\x02\x9f\x00\x00\x00\x8f\x00\x62\x00\x63\x00\xd0\x01\x00\x00\x00\x00\x00\x00\x8f\x00\x62\x00\x63\x00\xd0\x01\x00\x00\x5a\x02\x5f\x01\xa6\x00\xa7\x00\x60\x01\x61\x01\x00\x00\x5a\x02\x5f\x01\xa6\x00\xa7\x00\x60\x01\x61\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x07\x00\x00\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\xc0\x02\x00\x00\x68\x00\xc6\x02\x6a\x00\x00\x00\x00\x00\x18\x00\x19\x00\x68\x00\xcb\x02\x6a\x00\xb0\x02\x00\x00\x05\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x00\x00\x00\x71\x00\x00\x00\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\x00\x00\x74\x00\x00\x00\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x00\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x7d\x00\x00\x00\x00\x00\x7f\x00\x00\x00\x81\x00\x82\x00\x83\x00\x00\x00\x00\x00\xb0\x02\x00\x00\xb1\x02\x00\x00\x00\x00\x85\x00\x86\x00\xb2\x02\x70\x00\x00\x00\x71\x00\x00\x00\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\x00\x00\x74\x00\x00\x00\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x00\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x7d\x00\x00\x00\xc0\x00\x7f\x00\x00\x00\x81\x00\x82\x00\x83\x00\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\x00\x00\x00\x85\x00\x86\x00\xb2\x02\xc3\x00\x00\x00\x00\x00\x75\x00\x00\x00\x00\x00\x6f\x00\x00\x00\xa2\x00\x00\x00\x00\x00\xa1\x00\x79\x00\xa3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x75\x00\x00\x00\x7e\x00\x00\x00\x80\x00\xa2\x00\x00\x00\x00\x00\xa4\x00\x79\x00\xa3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x86\x00\x00\x00\x7e\x00\x00\x00\x80\x00\x3d\x00\x00\x00\x00\x00\xa4\x00\x00\x00\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\x00\x00\x86\x00\x72\x00\x00\x00\x00\x00\x73\x00\x00\x00\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x00\x78\x00\x00\x00\x79\x00\x00\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\x02\x85\x00\x86\x00\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\x00\x00\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\x00\x00\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x00\x78\x00\x00\x00\x79\x00\x00\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85\x00\x86\x00\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\x3d\xfe\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\x00\x00\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\x3d\xfe\x77\x00\x78\x00\x00\x00\x79\x00\x3d\xfe\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x3d\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\x01\x85\x00\x86\x00\x3b\xfe\x00\x00\x3b\xfe\x00\x00\x3b\xfe\x3b\xfe\x00\x00\x3b\xfe\x00\x00\x00\x00\x3b\xfe\x00\x00\x3b\xfe\x3b\xfe\x3b\xfe\x00\x00\x00\x00\x00\x00\x3b\xfe\x3b\xfe\x3b\xfe\x00\x00\x3b\xfe\x3b\xfe\x00\x00\x3b\xfe\x3b\xfe\x00\x00\x3b\xfe\x3b\xfe\x00\x00\x3b\xfe\x3b\xfe\x3b\xfe\x3b\xfe\x3b\xfe\x3b\xfe\x3b\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3b\xfe\x3b\xfe\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\xa1\x00\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\x00\x00\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x77\x00\x78\x00\x00\x00\x79\x00\xa3\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\xa6\x01\x80\x00\x81\x00\x82\x00\x83\x00\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa7\x01\x86\x00\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\x3d\xfe\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\x00\x00\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\x3d\xfe\x77\x00\x78\x00\x00\x00\x79\x00\x3d\xfe\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x3d\xfe\x00\x00\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\x85\x00\x86\x00\x72\x00\x00\x00\x00\x00\x73\x00\x00\x00\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x00\x78\x00\x00\x00\x79\x00\x00\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\x9e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x00\x00\x00\x00\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\x9f\x00\x86\x00\x72\x00\x00\x00\x00\x00\x73\x00\x00\x00\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x00\x78\x00\x00\x00\x79\x00\x00\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85\x00\x86\x00\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\xa1\x00\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\x00\x00\x00\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x77\x00\x78\x00\x00\x00\x79\x00\xa3\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x00\x00\x00\x00\x7e\x00\x00\x00\x80\x00\x00\x00\x82\x00\x83\x00\xa4\x00\x70\x00\x00\x00\x71\x00\x00\x00\x00\x00\x72\x00\x00\x00\x86\x00\x73\x00\x00\x00\x74\x00\x00\x00\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x00\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x7d\x00\x00\x00\x00\x00\x7f\x00\x00\x00\x81\x00\x82\x00\x83\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85\x00\x86\x00\xb2\x02\x70\x00\x00\x00\x71\x00\xa1\x00\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\x00\x00\x74\x00\x00\x00\x76\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x77\x00\x78\x00\x00\x00\x00\x00\xa3\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x7d\x00\x00\x00\x00\x00\xa6\x01\x00\x00\x81\x00\x82\x00\x83\x00\xa4\x00\x70\x00\x00\x00\x71\x00\xa1\x00\x00\x00\x72\x00\xa7\x01\x86\x00\x73\x00\x00\x00\x74\x00\x00\x00\x76\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x77\x00\x78\x00\x00\x00\x00\x00\xa3\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x7d\x00\x00\x00\x00\x00\xb3\x00\x00\x00\x81\x00\x82\x00\x83\x00\xa4\x00\x3b\xfe\x00\x00\x3b\xfe\x3b\xfe\x00\x00\x3b\xfe\xb4\x00\x86\x00\x3b\xfe\x00\x00\x3b\xfe\x00\x00\x3b\xfe\x00\x00\x00\x00\x00\x00\x3b\xfe\x3b\xfe\x3b\xfe\x00\x00\x00\x00\x3b\xfe\x00\x00\x3b\xfe\x3b\xfe\x00\x00\x00\x00\x3b\xfe\x00\x00\x00\x00\x3b\xfe\x00\x00\x3b\xfe\x3b\xfe\x3b\xfe\x3b\xfe\x70\x00\x00\x00\x71\x00\xa1\x00\x00\x00\x72\x00\x3b\xfe\x3b\xfe\x73\x00\x00\x00\x74\x00\x00\x00\x76\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x77\x00\x78\x00\x00\x00\x00\x00\xa3\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x7d\x00\x00\x00\x00\x00\xa6\x01\x00\x00\x81\x00\x82\x00\x83\x00\xa4\x00\x70\x00\x00\x00\x71\x00\x00\x00\x00\x00\x72\x00\xa7\x01\x86\x00\x73\x00\x00\x00\x74\x00\x00\x00\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x00\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x7d\x00\x00\x00\x00\x00\x7f\x00\x00\x00\x81\x00\x82\x00\x83\x00\x00\x00\x70\x00\x00\x00\x71\x00\x00\x00\x00\x00\x72\x00\x85\x00\x86\x00\x73\x00\x00\x00\x74\x00\x00\x00\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x00\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x7d\x00\x00\x00\x00\x00\x9e\x00\x00\x00\x81\x00\x82\x00\x83\x00\x00\x00\x70\x00\x00\x00\x71\x00\x00\x00\x00\x00\x72\x00\x9f\x00\x86\x00\x73\x00\x00\x00\x74\x00\x00\x00\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x00\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x7d\x00\x00\x00\x00\x00\x7f\x00\x00\x00\x81\x00\x82\x00\x83\x00\x00\x00\x70\x00\x00\x00\x71\x00\xa1\x00\x00\x00\x72\x00\x85\x00\x86\x00\x73\x00\x00\x00\x00\x00\x00\x00\x76\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x77\x00\x78\x00\x00\x00\x00\x00\xa3\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x00\x83\x00\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x02\x86\x00\x27\x03\x6e\x02\x6f\x02\x70\x02\x71\x02\x06\x00\x00\x00\x07\x00\x00\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\x72\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x6c\x02\x73\x02\x6d\x02\x6e\x02\x6f\x02\x70\x02\x71\x02\x06\x00\x00\x00\x07\x00\x00\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\x72\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x31\x03\x73\x02\x00\x00\x32\x03\x6f\x02\x70\x02\x71\x02\x06\x00\x00\x00\x07\x00\x00\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\x72\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x73\x02\x07\x00\x00\x00\xf4\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\xf5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe3\x02\x18\x00\x19\x00\x00\x00\x67\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe4\x02\x06\x00\x00\x00\x07\x00\x00\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\x72\x02\x00\x00\x2e\x03\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\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\x72\x02\x00\x00\xd7\x02\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\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\x72\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\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\xab\x01\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x02\x00\x00\x18\x00\x19\x00\x00\x00\x06\x00\x00\x00\x07\x00\x9c\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\x00\x00\xea\x00\x00\x00\x43\x03\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\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\x00\x00\xea\x00\x00\x00\x44\x03\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\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\x00\x00\xea\x00\x00\x00\x93\x02\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\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\x00\x00\xea\x00\x00\x00\x94\x02\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\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\x00\x00\xea\x00\x00\x00\xeb\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\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\x00\x00\x77\x03\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\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\x00\x00\x78\x03\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\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\x00\x00\x61\x03\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\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\x00\x00\x3a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\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\x00\x00\x92\x02\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\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\x00\x00\x41\x01\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x42\x01\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\x43\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\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\x00\x00\x57\x01\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\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\x5a\x01\x00\x00\x00\x00\x5b\x01\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\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\x00\x00\x7a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\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\x00\x00\x7c\x01\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\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\x00\x00\x7e\x01\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\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\x00\x00\x7f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\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\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\xf4\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\xf5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x03\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\xf4\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\xf5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x03\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\xf4\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\xf5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x03\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\xf4\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\xf5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x03\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\xf4\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\xf5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x03\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\xf4\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\xf5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x03\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\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\x51\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\xf4\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\xf5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe8\x02\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\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\xee\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\xf4\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\xf5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x03\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\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\x69\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\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\x6b\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\xf4\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\xf5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x02\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\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\x45\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\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\x6c\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\xf4\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\xf5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\xf4\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\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\xf4\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\x64\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\xf4\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x59\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\xf4\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x56\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\xf4\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x53\x01\x02\x02\xce\x00\xcf\x00\x00\x00\x00\x00\x00\x00\x03\x02\x62\x00\x63\x00\xd0\x01\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x00\x00\x00\x00\x00\x00\x04\x02\x5f\x01\xa6\x00\xa7\x00\x60\x01\x61\x01\x09\x02\xce\x00\xcf\x00\x00\x00\x00\x00\x00\x00\x0a\x02\x62\x00\x63\x00\xd0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x03\x0b\x02\x5f\x01\xa6\x00\xa7\x00\x60\x01\x61\x01\x02\x03\x00\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\x01\x03\xf4\x01\x62\x00\x63\x00\xd0\x01\x00\x00\x00\x00\x02\x03\x00\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\x00\x00\xf4\x01\x62\x00\x63\x00\xd0\x01\xcb\x00\x00\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\x00\x00\xf4\x01\x62\x00\x63\x00\xd0\x01\xe1\x00\x00\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\x00\x00\xf4\x01\x62\x00\x63\x00\xd0\x01\x37\x02\x00\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\x00\x00\xf4\x01\x62\x00\x63\x00\xd0\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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, 463) [ + (4 , happyReduce_4), + (5 , happyReduce_5), + (6 , happyReduce_6), + (7 , happyReduce_7), + (8 , happyReduce_8), + (9 , happyReduce_9), + (10 , happyReduce_10), + (11 , happyReduce_11), + (12 , happyReduce_12), + (13 , happyReduce_13), + (14 , happyReduce_14), + (15 , happyReduce_15), + (16 , happyReduce_16), + (17 , happyReduce_17), + (18 , happyReduce_18), + (19 , happyReduce_19), + (20 , happyReduce_20), + (21 , happyReduce_21), + (22 , happyReduce_22), + (23 , happyReduce_23), + (24 , happyReduce_24), + (25 , happyReduce_25), + (26 , happyReduce_26), + (27 , happyReduce_27), + (28 , happyReduce_28), + (29 , happyReduce_29), + (30 , happyReduce_30), + (31 , happyReduce_31), + (32 , happyReduce_32), + (33 , happyReduce_33), + (34 , happyReduce_34), + (35 , happyReduce_35), + (36 , happyReduce_36), + (37 , happyReduce_37), + (38 , happyReduce_38), + (39 , happyReduce_39), + (40 , happyReduce_40), + (41 , happyReduce_41), + (42 , happyReduce_42), + (43 , happyReduce_43), + (44 , happyReduce_44), + (45 , happyReduce_45), + (46 , happyReduce_46), + (47 , happyReduce_47), + (48 , happyReduce_48), + (49 , happyReduce_49), + (50 , happyReduce_50), + (51 , happyReduce_51), + (52 , happyReduce_52), + (53 , happyReduce_53), + (54 , happyReduce_54), + (55 , happyReduce_55), + (56 , happyReduce_56), + (57 , happyReduce_57), + (58 , happyReduce_58), + (59 , happyReduce_59), + (60 , happyReduce_60), + (61 , happyReduce_61), + (62 , happyReduce_62), + (63 , happyReduce_63), + (64 , happyReduce_64), + (65 , happyReduce_65), + (66 , happyReduce_66), + (67 , happyReduce_67), + (68 , happyReduce_68), + (69 , happyReduce_69), + (70 , happyReduce_70), + (71 , happyReduce_71), + (72 , happyReduce_72), + (73 , happyReduce_73), + (74 , happyReduce_74), + (75 , happyReduce_75), + (76 , happyReduce_76), + (77 , happyReduce_77), + (78 , happyReduce_78), + (79 , happyReduce_79), + (80 , happyReduce_80), + (81 , happyReduce_81), + (82 , happyReduce_82), + (83 , happyReduce_83), + (84 , happyReduce_84), + (85 , happyReduce_85), + (86 , happyReduce_86), + (87 , happyReduce_87), + (88 , happyReduce_88), + (89 , happyReduce_89), + (90 , happyReduce_90), + (91 , happyReduce_91), + (92 , happyReduce_92), + (93 , happyReduce_93), + (94 , happyReduce_94), + (95 , happyReduce_95), + (96 , happyReduce_96), + (97 , happyReduce_97), + (98 , happyReduce_98), + (99 , happyReduce_99), + (100 , happyReduce_100), + (101 , happyReduce_101), + (102 , happyReduce_102), + (103 , happyReduce_103), + (104 , happyReduce_104), + (105 , happyReduce_105), + (106 , happyReduce_106), + (107 , happyReduce_107), + (108 , happyReduce_108), + (109 , happyReduce_109), + (110 , happyReduce_110), + (111 , happyReduce_111), + (112 , happyReduce_112), + (113 , happyReduce_113), + (114 , happyReduce_114), + (115 , happyReduce_115), + (116 , happyReduce_116), + (117 , happyReduce_117), + (118 , happyReduce_118), + (119 , happyReduce_119), + (120 , happyReduce_120), + (121 , happyReduce_121), + (122 , happyReduce_122), + (123 , happyReduce_123), + (124 , happyReduce_124), + (125 , happyReduce_125), + (126 , happyReduce_126), + (127 , happyReduce_127), + (128 , happyReduce_128), + (129 , happyReduce_129), + (130 , happyReduce_130), + (131 , happyReduce_131), + (132 , happyReduce_132), + (133 , happyReduce_133), + (134 , happyReduce_134), + (135 , happyReduce_135), + (136 , happyReduce_136), + (137 , happyReduce_137), + (138 , happyReduce_138), + (139 , happyReduce_139), + (140 , happyReduce_140), + (141 , happyReduce_141), + (142 , happyReduce_142), + (143 , happyReduce_143), + (144 , happyReduce_144), + (145 , happyReduce_145), + (146 , happyReduce_146), + (147 , happyReduce_147), + (148 , happyReduce_148), + (149 , happyReduce_149), + (150 , happyReduce_150), + (151 , happyReduce_151), + (152 , happyReduce_152), + (153 , happyReduce_153), + (154 , happyReduce_154), + (155 , happyReduce_155), + (156 , happyReduce_156), + (157 , happyReduce_157), + (158 , happyReduce_158), + (159 , happyReduce_159), + (160 , happyReduce_160), + (161 , happyReduce_161), + (162 , happyReduce_162), + (163 , happyReduce_163), + (164 , happyReduce_164), + (165 , happyReduce_165), + (166 , happyReduce_166), + (167 , happyReduce_167), + (168 , happyReduce_168), + (169 , happyReduce_169), + (170 , happyReduce_170), + (171 , happyReduce_171), + (172 , happyReduce_172), + (173 , happyReduce_173), + (174 , happyReduce_174), + (175 , happyReduce_175), + (176 , happyReduce_176), + (177 , happyReduce_177), + (178 , happyReduce_178), + (179 , happyReduce_179), + (180 , happyReduce_180), + (181 , happyReduce_181), + (182 , happyReduce_182), + (183 , happyReduce_183), + (184 , happyReduce_184), + (185 , happyReduce_185), + (186 , happyReduce_186), + (187 , happyReduce_187), + (188 , happyReduce_188), + (189 , happyReduce_189), + (190 , happyReduce_190), + (191 , happyReduce_191), + (192 , happyReduce_192), + (193 , happyReduce_193), + (194 , happyReduce_194), + (195 , happyReduce_195), + (196 , happyReduce_196), + (197 , happyReduce_197), + (198 , happyReduce_198), + (199 , happyReduce_199), + (200 , happyReduce_200), + (201 , happyReduce_201), + (202 , happyReduce_202), + (203 , happyReduce_203), + (204 , happyReduce_204), + (205 , happyReduce_205), + (206 , happyReduce_206), + (207 , happyReduce_207), + (208 , happyReduce_208), + (209 , happyReduce_209), + (210 , happyReduce_210), + (211 , happyReduce_211), + (212 , happyReduce_212), + (213 , happyReduce_213), + (214 , happyReduce_214), + (215 , happyReduce_215), + (216 , happyReduce_216), + (217 , happyReduce_217), + (218 , happyReduce_218), + (219 , happyReduce_219), + (220 , happyReduce_220), + (221 , happyReduce_221), + (222 , happyReduce_222), + (223 , happyReduce_223), + (224 , happyReduce_224), + (225 , happyReduce_225), + (226 , happyReduce_226), + (227 , happyReduce_227), + (228 , happyReduce_228), + (229 , happyReduce_229), + (230 , happyReduce_230), + (231 , happyReduce_231), + (232 , happyReduce_232), + (233 , happyReduce_233), + (234 , happyReduce_234), + (235 , happyReduce_235), + (236 , happyReduce_236), + (237 , happyReduce_237), + (238 , happyReduce_238), + (239 , happyReduce_239), + (240 , happyReduce_240), + (241 , happyReduce_241), + (242 , happyReduce_242), + (243 , happyReduce_243), + (244 , happyReduce_244), + (245 , happyReduce_245), + (246 , happyReduce_246), + (247 , happyReduce_247), + (248 , happyReduce_248), + (249 , happyReduce_249), + (250 , happyReduce_250), + (251 , happyReduce_251), + (252 , happyReduce_252), + (253 , happyReduce_253), + (254 , happyReduce_254), + (255 , happyReduce_255), + (256 , happyReduce_256), + (257 , happyReduce_257), + (258 , happyReduce_258), + (259 , happyReduce_259), + (260 , happyReduce_260), + (261 , happyReduce_261), + (262 , happyReduce_262), + (263 , happyReduce_263), + (264 , happyReduce_264), + (265 , happyReduce_265), + (266 , happyReduce_266), + (267 , happyReduce_267), + (268 , happyReduce_268), + (269 , happyReduce_269), + (270 , happyReduce_270), + (271 , happyReduce_271), + (272 , happyReduce_272), + (273 , happyReduce_273), + (274 , happyReduce_274), + (275 , happyReduce_275), + (276 , happyReduce_276), + (277 , happyReduce_277), + (278 , happyReduce_278), + (279 , happyReduce_279), + (280 , happyReduce_280), + (281 , happyReduce_281), + (282 , happyReduce_282), + (283 , happyReduce_283), + (284 , happyReduce_284), + (285 , happyReduce_285), + (286 , happyReduce_286), + (287 , happyReduce_287), + (288 , happyReduce_288), + (289 , happyReduce_289), + (290 , happyReduce_290), + (291 , happyReduce_291), + (292 , happyReduce_292), + (293 , happyReduce_293), + (294 , happyReduce_294), + (295 , happyReduce_295), + (296 , happyReduce_296), + (297 , happyReduce_297), + (298 , happyReduce_298), + (299 , happyReduce_299), + (300 , happyReduce_300), + (301 , happyReduce_301), + (302 , happyReduce_302), + (303 , happyReduce_303), + (304 , happyReduce_304), + (305 , happyReduce_305), + (306 , happyReduce_306), + (307 , happyReduce_307), + (308 , happyReduce_308), + (309 , happyReduce_309), + (310 , happyReduce_310), + (311 , happyReduce_311), + (312 , happyReduce_312), + (313 , happyReduce_313), + (314 , happyReduce_314), + (315 , happyReduce_315), + (316 , happyReduce_316), + (317 , happyReduce_317), + (318 , happyReduce_318), + (319 , happyReduce_319), + (320 , happyReduce_320), + (321 , happyReduce_321), + (322 , happyReduce_322), + (323 , happyReduce_323), + (324 , happyReduce_324), + (325 , happyReduce_325), + (326 , happyReduce_326), + (327 , happyReduce_327), + (328 , happyReduce_328), + (329 , happyReduce_329), + (330 , happyReduce_330), + (331 , happyReduce_331), + (332 , happyReduce_332), + (333 , happyReduce_333), + (334 , happyReduce_334), + (335 , happyReduce_335), + (336 , happyReduce_336), + (337 , happyReduce_337), + (338 , happyReduce_338), + (339 , happyReduce_339), + (340 , happyReduce_340), + (341 , happyReduce_341), + (342 , happyReduce_342), + (343 , happyReduce_343), + (344 , happyReduce_344), + (345 , happyReduce_345), + (346 , happyReduce_346), + (347 , happyReduce_347), + (348 , happyReduce_348), + (349 , happyReduce_349), + (350 , happyReduce_350), + (351 , happyReduce_351), + (352 , happyReduce_352), + (353 , happyReduce_353), + (354 , happyReduce_354), + (355 , happyReduce_355), + (356 , happyReduce_356), + (357 , happyReduce_357), + (358 , happyReduce_358), + (359 , happyReduce_359), + (360 , happyReduce_360), + (361 , happyReduce_361), + (362 , happyReduce_362), + (363 , happyReduce_363), + (364 , happyReduce_364), + (365 , happyReduce_365), + (366 , happyReduce_366), + (367 , happyReduce_367), + (368 , happyReduce_368), + (369 , happyReduce_369), + (370 , happyReduce_370), + (371 , happyReduce_371), + (372 , happyReduce_372), + (373 , happyReduce_373), + (374 , happyReduce_374), + (375 , happyReduce_375), + (376 , happyReduce_376), + (377 , happyReduce_377), + (378 , happyReduce_378), + (379 , happyReduce_379), + (380 , happyReduce_380), + (381 , happyReduce_381), + (382 , happyReduce_382), + (383 , happyReduce_383), + (384 , happyReduce_384), + (385 , happyReduce_385), + (386 , happyReduce_386), + (387 , happyReduce_387), + (388 , happyReduce_388), + (389 , happyReduce_389), + (390 , happyReduce_390), + (391 , happyReduce_391), + (392 , happyReduce_392), + (393 , happyReduce_393), + (394 , happyReduce_394), + (395 , happyReduce_395), + (396 , happyReduce_396), + (397 , happyReduce_397), + (398 , happyReduce_398), + (399 , happyReduce_399), + (400 , happyReduce_400), + (401 , happyReduce_401), + (402 , happyReduce_402), + (403 , happyReduce_403), + (404 , happyReduce_404), + (405 , happyReduce_405), + (406 , happyReduce_406), + (407 , happyReduce_407), + (408 , happyReduce_408), + (409 , happyReduce_409), + (410 , happyReduce_410), + (411 , happyReduce_411), + (412 , happyReduce_412), + (413 , happyReduce_413), + (414 , happyReduce_414), + (415 , happyReduce_415), + (416 , happyReduce_416), + (417 , happyReduce_417), + (418 , happyReduce_418), + (419 , happyReduce_419), + (420 , happyReduce_420), + (421 , happyReduce_421), + (422 , happyReduce_422), + (423 , happyReduce_423), + (424 , happyReduce_424), + (425 , happyReduce_425), + (426 , happyReduce_426), + (427 , happyReduce_427), + (428 , happyReduce_428), + (429 , happyReduce_429), + (430 , happyReduce_430), + (431 , happyReduce_431), + (432 , happyReduce_432), + (433 , happyReduce_433), + (434 , happyReduce_434), + (435 , happyReduce_435), + (436 , happyReduce_436), + (437 , happyReduce_437), + (438 , happyReduce_438), + (439 , happyReduce_439), + (440 , happyReduce_440), + (441 , happyReduce_441), + (442 , happyReduce_442), + (443 , happyReduce_443), + (444 , happyReduce_444), + (445 , happyReduce_445), + (446 , happyReduce_446), + (447 , happyReduce_447), + (448 , happyReduce_448), + (449 , happyReduce_449), + (450 , happyReduce_450), + (451 , happyReduce_451), + (452 , happyReduce_452), + (453 , happyReduce_453), + (454 , happyReduce_454), + (455 , happyReduce_455), + (456 , happyReduce_456), + (457 , happyReduce_457), + (458 , happyReduce_458), + (459 , happyReduce_459), + (460 , happyReduce_460), + (461 , happyReduce_461), + (462 , happyReduce_462), + (463 , happyReduce_463) + ] + +happy_n_terms = 102 :: Int +happy_n_nonterms = 125 :: Int + +happyReduce_4 = happyMonadReduce 1# 0# happyReduction_4 +happyReduction_4 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut8 happy_x_1 of { happy_var_1 -> + ( let decls = reverse happy_var_1 in + case decls of + [] -> do{ n <- getNewName; p <- getCurrentPosition; return $ CTranslUnit decls (mkNodeInfo' p (p,0) n) } + (d:ds) -> withNodeInfo d $ CTranslUnit decls)} + ) (\r -> happyReturn (happyIn7 r)) + +happyReduce_5 = happySpecReduce_0 1# happyReduction_5 +happyReduction_5 = happyIn8 + (empty + ) + +happyReduce_6 = happySpecReduce_2 1# happyReduction_6 +happyReduction_6 happy_x_2 + happy_x_1 + = case happyOut8 happy_x_1 of { happy_var_1 -> + happyIn8 + (happy_var_1 + )} + +happyReduce_7 = happySpecReduce_2 1# happyReduction_7 +happyReduction_7 happy_x_2 + happy_x_1 + = case happyOut8 happy_x_1 of { happy_var_1 -> + case happyOut9 happy_x_2 of { happy_var_2 -> + happyIn8 + (happy_var_1 `snoc` happy_var_2 + )}} + +happyReduce_8 = happySpecReduce_1 2# happyReduction_8 +happyReduction_8 happy_x_1 + = case happyOut10 happy_x_1 of { happy_var_1 -> + happyIn9 + (CFDefExt happy_var_1 + )} + +happyReduce_9 = happySpecReduce_1 2# happyReduction_9 +happyReduction_9 happy_x_1 + = case happyOut32 happy_x_1 of { happy_var_1 -> + happyIn9 + (CDeclExt happy_var_1 + )} + +happyReduce_10 = happySpecReduce_2 2# happyReduction_10 +happyReduction_10 happy_x_2 + happy_x_1 + = case happyOut9 happy_x_2 of { happy_var_2 -> + happyIn9 + (happy_var_2 + )} + +happyReduce_11 = happyMonadReduce 5# 2# happyReduction_11 +happyReduction_11 (happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut123 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ CAsmExt happy_var_3)}} + ) (\r -> happyReturn (happyIn9 r)) + +happyReduce_12 = happyMonadReduce 2# 3# happyReduction_12 +happyReduction_12 (happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut11 happy_x_1 of { happy_var_1 -> + case happyOut14 happy_x_2 of { happy_var_2 -> + ( leaveScope >> (withNodeInfo happy_var_1 $ CFunDef [] happy_var_1 [] happy_var_2))}} + ) (\r -> happyReturn (happyIn10 r)) + +happyReduce_13 = happyMonadReduce 3# 3# happyReduction_13 +happyReduction_13 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut127 happy_x_1 of { happy_var_1 -> + case happyOut11 happy_x_2 of { happy_var_2 -> + case happyOut14 happy_x_3 of { happy_var_3 -> + ( leaveScope >> (withNodeInfo happy_var_1 $ CFunDef (liftCAttrs happy_var_1) happy_var_2 [] happy_var_3))}}} + ) (\r -> happyReturn (happyIn10 r)) + +happyReduce_14 = happyMonadReduce 3# 3# happyReduction_14 +happyReduction_14 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut37 happy_x_1 of { happy_var_1 -> + case happyOut11 happy_x_2 of { happy_var_2 -> + case happyOut14 happy_x_3 of { happy_var_3 -> + ( leaveScope >> (withNodeInfo happy_var_1 $ CFunDef happy_var_1 happy_var_2 [] happy_var_3))}}} + ) (\r -> happyReturn (happyIn10 r)) + +happyReduce_15 = happyMonadReduce 3# 3# happyReduction_15 +happyReduction_15 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut41 happy_x_1 of { happy_var_1 -> + case happyOut11 happy_x_2 of { happy_var_2 -> + case happyOut14 happy_x_3 of { happy_var_3 -> + ( leaveScope >> (withNodeInfo happy_var_1 $ CFunDef happy_var_1 happy_var_2 [] happy_var_3))}}} + ) (\r -> happyReturn (happyIn10 r)) + +happyReduce_16 = happyMonadReduce 3# 3# happyReduction_16 +happyReduction_16 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut38 happy_x_1 of { happy_var_1 -> + case happyOut11 happy_x_2 of { happy_var_2 -> + case happyOut14 happy_x_3 of { happy_var_3 -> + ( leaveScope >> (withNodeInfo happy_var_1 $ CFunDef (reverse happy_var_1) happy_var_2 [] happy_var_3))}}} + ) (\r -> happyReturn (happyIn10 r)) + +happyReduce_17 = happyMonadReduce 3# 3# happyReduction_17 +happyReduction_17 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut62 happy_x_1 of { happy_var_1 -> + case happyOut11 happy_x_2 of { happy_var_2 -> + case happyOut14 happy_x_3 of { happy_var_3 -> + ( leaveScope >> (withNodeInfo happy_var_1 $ CFunDef (liftTypeQuals happy_var_1) happy_var_2 [] happy_var_3))}}} + ) (\r -> happyReturn (happyIn10 r)) + +happyReduce_18 = happyMonadReduce 4# 3# happyReduction_18 +happyReduction_18 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut62 happy_x_1 of { happy_var_1 -> + case happyOut127 happy_x_2 of { happy_var_2 -> + case happyOut11 happy_x_3 of { happy_var_3 -> + case happyOut14 happy_x_4 of { happy_var_4 -> + ( leaveScope >> (withNodeInfo happy_var_1 $ CFunDef (liftTypeQuals happy_var_1 ++ liftCAttrs happy_var_2) happy_var_3 [] happy_var_4))}}}} + ) (\r -> happyReturn (happyIn10 r)) + +happyReduce_19 = happyMonadReduce 3# 3# happyReduction_19 +happyReduction_19 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut76 happy_x_1 of { happy_var_1 -> + case happyOut33 happy_x_2 of { happy_var_2 -> + case happyOut14 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ CFunDef [] happy_var_1 (reverse happy_var_2) happy_var_3)}}} + ) (\r -> happyReturn (happyIn10 r)) + +happyReduce_20 = happyMonadReduce 4# 3# happyReduction_20 +happyReduction_20 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut127 happy_x_1 of { happy_var_1 -> + case happyOut76 happy_x_2 of { happy_var_2 -> + case happyOut33 happy_x_3 of { happy_var_3 -> + case happyOut14 happy_x_4 of { happy_var_4 -> + ( withNodeInfo happy_var_2 $ CFunDef (liftCAttrs happy_var_1) happy_var_2 (reverse happy_var_3) happy_var_4)}}}} + ) (\r -> happyReturn (happyIn10 r)) + +happyReduce_21 = happyMonadReduce 4# 3# happyReduction_21 +happyReduction_21 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut37 happy_x_1 of { happy_var_1 -> + case happyOut76 happy_x_2 of { happy_var_2 -> + case happyOut33 happy_x_3 of { happy_var_3 -> + case happyOut14 happy_x_4 of { happy_var_4 -> + ( withNodeInfo happy_var_1 $ CFunDef happy_var_1 happy_var_2 (reverse happy_var_3) happy_var_4)}}}} + ) (\r -> happyReturn (happyIn10 r)) + +happyReduce_22 = happyMonadReduce 4# 3# happyReduction_22 +happyReduction_22 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut41 happy_x_1 of { happy_var_1 -> + case happyOut76 happy_x_2 of { happy_var_2 -> + case happyOut33 happy_x_3 of { happy_var_3 -> + case happyOut14 happy_x_4 of { happy_var_4 -> + ( withNodeInfo happy_var_1 $ CFunDef happy_var_1 happy_var_2 (reverse happy_var_3) happy_var_4)}}}} + ) (\r -> happyReturn (happyIn10 r)) + +happyReduce_23 = happyMonadReduce 4# 3# happyReduction_23 +happyReduction_23 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut38 happy_x_1 of { happy_var_1 -> + case happyOut76 happy_x_2 of { happy_var_2 -> + case happyOut33 happy_x_3 of { happy_var_3 -> + case happyOut14 happy_x_4 of { happy_var_4 -> + ( withNodeInfo happy_var_1 $ CFunDef (reverse happy_var_1) happy_var_2 (reverse happy_var_3) happy_var_4)}}}} + ) (\r -> happyReturn (happyIn10 r)) + +happyReduce_24 = happyMonadReduce 4# 3# happyReduction_24 +happyReduction_24 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut62 happy_x_1 of { happy_var_1 -> + case happyOut76 happy_x_2 of { happy_var_2 -> + case happyOut33 happy_x_3 of { happy_var_3 -> + case happyOut14 happy_x_4 of { happy_var_4 -> + ( withNodeInfo happy_var_1 $ CFunDef (liftTypeQuals happy_var_1) happy_var_2 (reverse happy_var_3) happy_var_4)}}}} + ) (\r -> happyReturn (happyIn10 r)) + +happyReduce_25 = happyMonadReduce 5# 3# happyReduction_25 +happyReduction_25 (happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut62 happy_x_1 of { happy_var_1 -> + case happyOut127 happy_x_2 of { happy_var_2 -> + case happyOut76 happy_x_3 of { happy_var_3 -> + case happyOut33 happy_x_4 of { happy_var_4 -> + case happyOut14 happy_x_5 of { happy_var_5 -> + ( withNodeInfo happy_var_1 $ CFunDef (liftTypeQuals happy_var_1 ++ liftCAttrs happy_var_2) happy_var_3 (reverse happy_var_4) happy_var_5)}}}}} + ) (\r -> happyReturn (happyIn10 r)) + +happyReduce_26 = happyMonadReduce 1# 4# happyReduction_26 +happyReduction_26 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut72 happy_x_1 of { happy_var_1 -> + ( let declr = reverseDeclr happy_var_1 in + enterScope >> doFuncParamDeclIdent declr >> return declr)} + ) (\r -> happyReturn (happyIn11 r)) + +happyReduce_27 = happySpecReduce_1 5# happyReduction_27 +happyReduction_27 happy_x_1 + = case happyOut13 happy_x_1 of { happy_var_1 -> + happyIn12 + (happy_var_1 + )} + +happyReduce_28 = happySpecReduce_1 5# happyReduction_28 +happyReduction_28 happy_x_1 + = case happyOut14 happy_x_1 of { happy_var_1 -> + happyIn12 + (happy_var_1 + )} + +happyReduce_29 = happySpecReduce_1 5# happyReduction_29 +happyReduction_29 happy_x_1 + = case happyOut22 happy_x_1 of { happy_var_1 -> + happyIn12 + (happy_var_1 + )} + +happyReduce_30 = happySpecReduce_1 5# happyReduction_30 +happyReduction_30 happy_x_1 + = case happyOut23 happy_x_1 of { happy_var_1 -> + happyIn12 + (happy_var_1 + )} + +happyReduce_31 = happySpecReduce_1 5# happyReduction_31 +happyReduction_31 happy_x_1 + = case happyOut24 happy_x_1 of { happy_var_1 -> + happyIn12 + (happy_var_1 + )} + +happyReduce_32 = happySpecReduce_1 5# happyReduction_32 +happyReduction_32 happy_x_1 + = case happyOut25 happy_x_1 of { happy_var_1 -> + happyIn12 + (happy_var_1 + )} + +happyReduce_33 = happyMonadReduce 1# 5# happyReduction_33 +happyReduction_33 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut26 happy_x_1 of { happy_var_1 -> + ( withNodeInfo happy_var_1 (CAsm happy_var_1))} + ) (\r -> happyReturn (happyIn12 r)) + +happyReduce_34 = happyMonadReduce 4# 6# happyReduction_34 +happyReduction_34 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut125 happy_x_1 of { happy_var_1 -> + case happyOut126 happy_x_3 of { happy_var_3 -> + case happyOut12 happy_x_4 of { happy_var_4 -> + ( withNodeInfo happy_var_1 $ CLabel happy_var_1 happy_var_4 happy_var_3)}}} + ) (\r -> happyReturn (happyIn13 r)) + +happyReduce_35 = happyMonadReduce 4# 6# happyReduction_35 +happyReduction_35 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut121 happy_x_2 of { happy_var_2 -> + case happyOut12 happy_x_4 of { happy_var_4 -> + ( withNodeInfo happy_var_1 $ CCase happy_var_2 happy_var_4)}}} + ) (\r -> happyReturn (happyIn13 r)) + +happyReduce_36 = happyMonadReduce 3# 6# happyReduction_36 +happyReduction_36 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut12 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ CDefault happy_var_3)}} + ) (\r -> happyReturn (happyIn13 r)) + +happyReduce_37 = happyMonadReduce 6# 6# happyReduction_37 +happyReduction_37 (happy_x_6 `HappyStk` + happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut121 happy_x_2 of { happy_var_2 -> + case happyOut121 happy_x_4 of { happy_var_4 -> + case happyOut12 happy_x_6 of { happy_var_6 -> + ( withNodeInfo happy_var_1 $ CCases happy_var_2 happy_var_4 happy_var_6)}}}} + ) (\r -> happyReturn (happyIn13 r)) + +happyReduce_38 = happyMonadReduce 5# 7# happyReduction_38 +happyReduction_38 (happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut17 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ CCompound [] (reverse happy_var_3))}} + ) (\r -> happyReturn (happyIn14 r)) + +happyReduce_39 = happyMonadReduce 6# 7# happyReduction_39 +happyReduction_39 (happy_x_6 `HappyStk` + happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut21 happy_x_3 of { happy_var_3 -> + case happyOut17 happy_x_4 of { happy_var_4 -> + ( withNodeInfo happy_var_1 $ CCompound (reverse happy_var_3) (reverse happy_var_4))}}} + ) (\r -> happyReturn (happyIn14 r)) + +happyReduce_40 = happyMonadReduce 0# 8# happyReduction_40 +happyReduction_40 (happyRest) tk + = happyThen (( enterScope) + ) (\r -> happyReturn (happyIn15 r)) + +happyReduce_41 = happyMonadReduce 0# 9# happyReduction_41 +happyReduction_41 (happyRest) tk + = happyThen (( leaveScope) + ) (\r -> happyReturn (happyIn16 r)) + +happyReduce_42 = happySpecReduce_0 10# happyReduction_42 +happyReduction_42 = happyIn17 + (empty + ) + +happyReduce_43 = happySpecReduce_2 10# happyReduction_43 +happyReduction_43 happy_x_2 + happy_x_1 + = case happyOut17 happy_x_1 of { happy_var_1 -> + case happyOut18 happy_x_2 of { happy_var_2 -> + happyIn17 + (happy_var_1 `snoc` happy_var_2 + )}} + +happyReduce_44 = happySpecReduce_1 11# happyReduction_44 +happyReduction_44 happy_x_1 + = case happyOut12 happy_x_1 of { happy_var_1 -> + happyIn18 + (CBlockStmt happy_var_1 + )} + +happyReduce_45 = happySpecReduce_1 11# happyReduction_45 +happyReduction_45 happy_x_1 + = case happyOut19 happy_x_1 of { happy_var_1 -> + happyIn18 + (happy_var_1 + )} + +happyReduce_46 = happySpecReduce_1 12# happyReduction_46 +happyReduction_46 happy_x_1 + = case happyOut32 happy_x_1 of { happy_var_1 -> + happyIn19 + (CBlockDecl happy_var_1 + )} + +happyReduce_47 = happySpecReduce_1 12# happyReduction_47 +happyReduction_47 happy_x_1 + = case happyOut20 happy_x_1 of { happy_var_1 -> + happyIn19 + (CNestedFunDef happy_var_1 + )} + +happyReduce_48 = happySpecReduce_2 12# happyReduction_48 +happyReduction_48 happy_x_2 + happy_x_1 + = case happyOut19 happy_x_2 of { happy_var_2 -> + happyIn19 + (happy_var_2 + )} + +happyReduce_49 = happyMonadReduce 3# 13# happyReduction_49 +happyReduction_49 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut37 happy_x_1 of { happy_var_1 -> + case happyOut11 happy_x_2 of { happy_var_2 -> + case happyOut14 happy_x_3 of { happy_var_3 -> + ( leaveScope >> (withNodeInfo happy_var_1 $ CFunDef happy_var_1 happy_var_2 [] happy_var_3))}}} + ) (\r -> happyReturn (happyIn20 r)) + +happyReduce_50 = happyMonadReduce 3# 13# happyReduction_50 +happyReduction_50 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut41 happy_x_1 of { happy_var_1 -> + case happyOut11 happy_x_2 of { happy_var_2 -> + case happyOut14 happy_x_3 of { happy_var_3 -> + ( leaveScope >> (withNodeInfo happy_var_1 $ CFunDef happy_var_1 happy_var_2 [] happy_var_3))}}} + ) (\r -> happyReturn (happyIn20 r)) + +happyReduce_51 = happyMonadReduce 3# 13# happyReduction_51 +happyReduction_51 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut38 happy_x_1 of { happy_var_1 -> + case happyOut11 happy_x_2 of { happy_var_2 -> + case happyOut14 happy_x_3 of { happy_var_3 -> + ( leaveScope >> (withNodeInfo happy_var_1 $ CFunDef (reverse happy_var_1) happy_var_2 [] happy_var_3))}}} + ) (\r -> happyReturn (happyIn20 r)) + +happyReduce_52 = happyMonadReduce 3# 13# happyReduction_52 +happyReduction_52 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut62 happy_x_1 of { happy_var_1 -> + case happyOut11 happy_x_2 of { happy_var_2 -> + case happyOut14 happy_x_3 of { happy_var_3 -> + ( leaveScope >> (withNodeInfo happy_var_1 $ CFunDef (liftTypeQuals happy_var_1) happy_var_2 [] happy_var_3))}}} + ) (\r -> happyReturn (happyIn20 r)) + +happyReduce_53 = happyMonadReduce 4# 13# happyReduction_53 +happyReduction_53 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut62 happy_x_1 of { happy_var_1 -> + case happyOut127 happy_x_2 of { happy_var_2 -> + case happyOut11 happy_x_3 of { happy_var_3 -> + case happyOut14 happy_x_4 of { happy_var_4 -> + ( leaveScope >> (withNodeInfo happy_var_1 $ CFunDef (liftTypeQuals happy_var_1 ++ liftCAttrs happy_var_2) happy_var_3 [] happy_var_4))}}}} + ) (\r -> happyReturn (happyIn20 r)) + +happyReduce_54 = happySpecReduce_3 14# happyReduction_54 +happyReduction_54 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut82 happy_x_2 of { happy_var_2 -> + happyIn21 + (happy_var_2 + )} + +happyReduce_55 = happyReduce 4# 14# happyReduction_55 +happyReduction_55 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOut21 happy_x_1 of { happy_var_1 -> + case happyOut82 happy_x_3 of { happy_var_3 -> + happyIn21 + (happy_var_1 `rappendr` happy_var_3 + ) `HappyStk` happyRest}} + +happyReduce_56 = happyMonadReduce 1# 15# happyReduction_56 +happyReduction_56 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + ( withNodeInfo happy_var_1 $ CExpr Nothing)} + ) (\r -> happyReturn (happyIn22 r)) + +happyReduce_57 = happyMonadReduce 2# 15# happyReduction_57 +happyReduction_57 (happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut117 happy_x_1 of { happy_var_1 -> + ( withNodeInfo happy_var_1 $ CExpr (Just happy_var_1))} + ) (\r -> happyReturn (happyIn22 r)) + +happyReduce_58 = happyMonadReduce 5# 16# happyReduction_58 +happyReduction_58 (happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut117 happy_x_3 of { happy_var_3 -> + case happyOut12 happy_x_5 of { happy_var_5 -> + ( withNodeInfo happy_var_1 $ CIf happy_var_3 happy_var_5 Nothing)}}} + ) (\r -> happyReturn (happyIn23 r)) + +happyReduce_59 = happyMonadReduce 7# 16# happyReduction_59 +happyReduction_59 (happy_x_7 `HappyStk` + happy_x_6 `HappyStk` + happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut117 happy_x_3 of { happy_var_3 -> + case happyOut12 happy_x_5 of { happy_var_5 -> + case happyOut12 happy_x_7 of { happy_var_7 -> + ( withNodeInfo happy_var_1 $ CIf happy_var_3 happy_var_5 (Just happy_var_7))}}}} + ) (\r -> happyReturn (happyIn23 r)) + +happyReduce_60 = happyMonadReduce 5# 16# happyReduction_60 +happyReduction_60 (happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut117 happy_x_3 of { happy_var_3 -> + case happyOut12 happy_x_5 of { happy_var_5 -> + ( withNodeInfo happy_var_1 $ CSwitch happy_var_3 happy_var_5)}}} + ) (\r -> happyReturn (happyIn23 r)) + +happyReduce_61 = happyMonadReduce 5# 17# happyReduction_61 +happyReduction_61 (happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut117 happy_x_3 of { happy_var_3 -> + case happyOut12 happy_x_5 of { happy_var_5 -> + ( withNodeInfo happy_var_1 $ CWhile happy_var_3 happy_var_5 False)}}} + ) (\r -> happyReturn (happyIn24 r)) + +happyReduce_62 = happyMonadReduce 7# 17# happyReduction_62 +happyReduction_62 (happy_x_7 `HappyStk` + happy_x_6 `HappyStk` + happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut12 happy_x_2 of { happy_var_2 -> + case happyOut117 happy_x_5 of { happy_var_5 -> + ( withNodeInfo happy_var_1 $ CWhile happy_var_5 happy_var_2 True)}}} + ) (\r -> happyReturn (happyIn24 r)) + +happyReduce_63 = happyMonadReduce 9# 17# happyReduction_63 +happyReduction_63 (happy_x_9 `HappyStk` + happy_x_8 `HappyStk` + happy_x_7 `HappyStk` + happy_x_6 `HappyStk` + happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut119 happy_x_3 of { happy_var_3 -> + case happyOut119 happy_x_5 of { happy_var_5 -> + case happyOut119 happy_x_7 of { happy_var_7 -> + case happyOut12 happy_x_9 of { happy_var_9 -> + ( withNodeInfo happy_var_1 $ CFor (Left happy_var_3) happy_var_5 happy_var_7 happy_var_9)}}}}} + ) (\r -> happyReturn (happyIn24 r)) + +happyReduce_64 = happyMonadReduce 10# 17# happyReduction_64 +happyReduction_64 (happy_x_10 `HappyStk` + happy_x_9 `HappyStk` + happy_x_8 `HappyStk` + happy_x_7 `HappyStk` + happy_x_6 `HappyStk` + happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut32 happy_x_4 of { happy_var_4 -> + case happyOut119 happy_x_5 of { happy_var_5 -> + case happyOut119 happy_x_7 of { happy_var_7 -> + case happyOut12 happy_x_9 of { happy_var_9 -> + ( withNodeInfo happy_var_1 $ CFor (Right happy_var_4) happy_var_5 happy_var_7 happy_var_9)}}}}} + ) (\r -> happyReturn (happyIn24 r)) + +happyReduce_65 = happyMonadReduce 3# 18# happyReduction_65 +happyReduction_65 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut125 happy_x_2 of { happy_var_2 -> + ( withNodeInfo happy_var_1 $ CGoto happy_var_2)}} + ) (\r -> happyReturn (happyIn25 r)) + +happyReduce_66 = happyMonadReduce 4# 18# happyReduction_66 +happyReduction_66 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut117 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ CGotoPtr happy_var_3)}} + ) (\r -> happyReturn (happyIn25 r)) + +happyReduce_67 = happyMonadReduce 2# 18# happyReduction_67 +happyReduction_67 (happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + ( withNodeInfo happy_var_1 $ CCont)} + ) (\r -> happyReturn (happyIn25 r)) + +happyReduce_68 = happyMonadReduce 2# 18# happyReduction_68 +happyReduction_68 (happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + ( withNodeInfo happy_var_1 $ CBreak)} + ) (\r -> happyReturn (happyIn25 r)) + +happyReduce_69 = happyMonadReduce 3# 18# happyReduction_69 +happyReduction_69 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut119 happy_x_2 of { happy_var_2 -> + ( withNodeInfo happy_var_1 $ CReturn happy_var_2)}} + ) (\r -> happyReturn (happyIn25 r)) + +happyReduce_70 = happyMonadReduce 6# 19# happyReduction_70 +happyReduction_70 (happy_x_6 `HappyStk` + happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut27 happy_x_2 of { happy_var_2 -> + case happyOut123 happy_x_4 of { happy_var_4 -> + ( withNodeInfo happy_var_1 $ CAsmStmt happy_var_2 happy_var_4 [] [] [])}}} + ) (\r -> happyReturn (happyIn26 r)) + +happyReduce_71 = happyMonadReduce 8# 19# happyReduction_71 +happyReduction_71 (happy_x_8 `HappyStk` + happy_x_7 `HappyStk` + happy_x_6 `HappyStk` + happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut27 happy_x_2 of { happy_var_2 -> + case happyOut123 happy_x_4 of { happy_var_4 -> + case happyOut28 happy_x_6 of { happy_var_6 -> + ( withNodeInfo happy_var_1 $ CAsmStmt happy_var_2 happy_var_4 happy_var_6 [] [])}}}} + ) (\r -> happyReturn (happyIn26 r)) + +happyReduce_72 = happyMonadReduce 10# 19# happyReduction_72 +happyReduction_72 (happy_x_10 `HappyStk` + happy_x_9 `HappyStk` + happy_x_8 `HappyStk` + happy_x_7 `HappyStk` + happy_x_6 `HappyStk` + happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut27 happy_x_2 of { happy_var_2 -> + case happyOut123 happy_x_4 of { happy_var_4 -> + case happyOut28 happy_x_6 of { happy_var_6 -> + case happyOut28 happy_x_8 of { happy_var_8 -> + ( withNodeInfo happy_var_1 $ CAsmStmt happy_var_2 happy_var_4 happy_var_6 happy_var_8 [])}}}}} + ) (\r -> happyReturn (happyIn26 r)) + +happyReduce_73 = happyMonadReduce 12# 19# happyReduction_73 +happyReduction_73 (happy_x_12 `HappyStk` + happy_x_11 `HappyStk` + happy_x_10 `HappyStk` + happy_x_9 `HappyStk` + happy_x_8 `HappyStk` + happy_x_7 `HappyStk` + happy_x_6 `HappyStk` + happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut27 happy_x_2 of { happy_var_2 -> + case happyOut123 happy_x_4 of { happy_var_4 -> + case happyOut28 happy_x_6 of { happy_var_6 -> + case happyOut28 happy_x_8 of { happy_var_8 -> + case happyOut31 happy_x_10 of { happy_var_10 -> + ( withNodeInfo happy_var_1 $ CAsmStmt happy_var_2 happy_var_4 happy_var_6 happy_var_8 (reverse happy_var_10))}}}}}} + ) (\r -> happyReturn (happyIn26 r)) + +happyReduce_74 = happySpecReduce_0 20# happyReduction_74 +happyReduction_74 = happyIn27 + (Nothing + ) + +happyReduce_75 = happySpecReduce_1 20# happyReduction_75 +happyReduction_75 happy_x_1 + = case happyOut61 happy_x_1 of { happy_var_1 -> + happyIn27 + (Just happy_var_1 + )} + +happyReduce_76 = happySpecReduce_0 21# happyReduction_76 +happyReduction_76 = happyIn28 + ([] + ) + +happyReduce_77 = happySpecReduce_1 21# happyReduction_77 +happyReduction_77 happy_x_1 + = case happyOut29 happy_x_1 of { happy_var_1 -> + happyIn28 + (reverse happy_var_1 + )} + +happyReduce_78 = happySpecReduce_1 22# happyReduction_78 +happyReduction_78 happy_x_1 + = case happyOut30 happy_x_1 of { happy_var_1 -> + happyIn29 + (singleton happy_var_1 + )} + +happyReduce_79 = happySpecReduce_3 22# happyReduction_79 +happyReduction_79 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut29 happy_x_1 of { happy_var_1 -> + case happyOut30 happy_x_3 of { happy_var_3 -> + happyIn29 + (happy_var_1 `snoc` happy_var_3 + )}} + +happyReduce_80 = happyMonadReduce 4# 23# happyReduction_80 +happyReduction_80 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut123 happy_x_1 of { happy_var_1 -> + case happyOut117 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ CAsmOperand Nothing happy_var_1 happy_var_3)}} + ) (\r -> happyReturn (happyIn30 r)) + +happyReduce_81 = happyMonadReduce 7# 23# happyReduction_81 +happyReduction_81 (happy_x_7 `HappyStk` + happy_x_6 `HappyStk` + happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (CTokIdent _ happy_var_2) -> + case happyOut123 happy_x_4 of { happy_var_4 -> + case happyOut117 happy_x_6 of { happy_var_6 -> + ( withNodeInfo happy_var_1 $ CAsmOperand (Just happy_var_2) happy_var_4 happy_var_6)}}}} + ) (\r -> happyReturn (happyIn30 r)) + +happyReduce_82 = happyMonadReduce 7# 23# happyReduction_82 +happyReduction_82 (happy_x_7 `HappyStk` + happy_x_6 `HappyStk` + happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (CTokTyIdent _ happy_var_2) -> + case happyOut123 happy_x_4 of { happy_var_4 -> + case happyOut117 happy_x_6 of { happy_var_6 -> + ( withNodeInfo happy_var_1 $ CAsmOperand (Just happy_var_2) happy_var_4 happy_var_6)}}}} + ) (\r -> happyReturn (happyIn30 r)) + +happyReduce_83 = happySpecReduce_1 24# happyReduction_83 +happyReduction_83 happy_x_1 + = case happyOut123 happy_x_1 of { happy_var_1 -> + happyIn31 + (singleton happy_var_1 + )} + +happyReduce_84 = happySpecReduce_3 24# happyReduction_84 +happyReduction_84 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut31 happy_x_1 of { happy_var_1 -> + case happyOut123 happy_x_3 of { happy_var_3 -> + happyIn31 + (happy_var_1 `snoc` happy_var_3 + )}} + +happyReduce_85 = happyMonadReduce 2# 25# happyReduction_85 +happyReduction_85 (happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut45 happy_x_1 of { happy_var_1 -> + ( withNodeInfo happy_var_1 $ CDecl (reverse happy_var_1) [])} + ) (\r -> happyReturn (happyIn32 r)) + +happyReduce_86 = happyMonadReduce 2# 25# happyReduction_86 +happyReduction_86 (happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut46 happy_x_1 of { happy_var_1 -> + ( withNodeInfo happy_var_1 $ CDecl (reverse happy_var_1) [])} + ) (\r -> happyReturn (happyIn32 r)) + +happyReduce_87 = happyMonadReduce 2# 25# happyReduction_87 +happyReduction_87 (happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut36 happy_x_1 of { happy_var_1 -> + ( case happy_var_1 of CDecl declspecs dies at -> withLength at (CDecl declspecs (List.reverse dies)))} + ) (\r -> happyReturn (happyIn32 r)) + +happyReduce_88 = happyMonadReduce 2# 25# happyReduction_88 +happyReduction_88 (happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut34 happy_x_1 of { happy_var_1 -> + ( case happy_var_1 of CDecl declspecs dies at -> withLength at (CDecl declspecs (List.reverse dies)))} + ) (\r -> happyReturn (happyIn32 r)) + +happyReduce_89 = happySpecReduce_0 26# happyReduction_89 +happyReduction_89 = happyIn33 + (empty + ) + +happyReduce_90 = happySpecReduce_2 26# happyReduction_90 +happyReduction_90 happy_x_2 + happy_x_1 + = case happyOut33 happy_x_1 of { happy_var_1 -> + case happyOut32 happy_x_2 of { happy_var_2 -> + happyIn33 + (happy_var_1 `snoc` happy_var_2 + )}} + +happyReduce_91 = happyMonadReduce 4# 27# happyReduction_91 +happyReduction_91 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut38 happy_x_1 of { happy_var_1 -> + case happyOut72 happy_x_2 of { happy_var_2 -> + case happyOut35 happy_x_3 of { happy_var_3 -> + case happyOut91 happy_x_4 of { happy_var_4 -> + ( let declspecs = reverse happy_var_1 in + do{ declr <- withAsmNameAttrs happy_var_3 happy_var_2 + ; doDeclIdent declspecs declr + ; withNodeInfo happy_var_1 $ + CDecl declspecs [(Just (reverseDeclr declr), happy_var_4, Nothing)] })}}}} + ) (\r -> happyReturn (happyIn34 r)) + +happyReduce_92 = happyMonadReduce 4# 27# happyReduction_92 +happyReduction_92 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut62 happy_x_1 of { happy_var_1 -> + case happyOut72 happy_x_2 of { happy_var_2 -> + case happyOut35 happy_x_3 of { happy_var_3 -> + case happyOut91 happy_x_4 of { happy_var_4 -> + ( let declspecs = liftTypeQuals happy_var_1 in + do{ declr <- withAsmNameAttrs happy_var_3 happy_var_2 + ; doDeclIdent declspecs declr + ; withNodeInfo happy_var_1 $ CDecl declspecs [(Just (reverseDeclr declr), happy_var_4, Nothing)] })}}}} + ) (\r -> happyReturn (happyIn34 r)) + +happyReduce_93 = happyMonadReduce 5# 27# happyReduction_93 +happyReduction_93 (happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut62 happy_x_1 of { happy_var_1 -> + case happyOut127 happy_x_2 of { happy_var_2 -> + case happyOut72 happy_x_3 of { happy_var_3 -> + case happyOut35 happy_x_4 of { happy_var_4 -> + case happyOut91 happy_x_5 of { happy_var_5 -> + ( let declspecs = liftTypeQuals happy_var_1 in + do{ declr <- withAsmNameAttrs happy_var_4 happy_var_3 + ; doDeclIdent declspecs declr + ; withNodeInfo happy_var_1 $ CDecl (declspecs ++ liftCAttrs happy_var_2) [(Just (reverseDeclr declr), happy_var_5, Nothing)] })}}}}} + ) (\r -> happyReturn (happyIn34 r)) + +happyReduce_94 = happyMonadReduce 4# 27# happyReduction_94 +happyReduction_94 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut127 happy_x_1 of { happy_var_1 -> + case happyOut72 happy_x_2 of { happy_var_2 -> + case happyOut35 happy_x_3 of { happy_var_3 -> + case happyOut91 happy_x_4 of { happy_var_4 -> + ( let declspecs = liftCAttrs happy_var_1 in + do{ declr <- withAsmNameAttrs happy_var_3 happy_var_2 + ; doDeclIdent declspecs declr + ; withNodeInfo happy_var_1 $ CDecl declspecs [(Just (reverseDeclr declr), happy_var_4, Nothing)] })}}}} + ) (\r -> happyReturn (happyIn34 r)) + +happyReduce_95 = happyMonadReduce 6# 27# happyReduction_95 +happyReduction_95 (happy_x_6 `HappyStk` + happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut34 happy_x_1 of { happy_var_1 -> + case happyOut126 happy_x_3 of { happy_var_3 -> + case happyOut72 happy_x_4 of { happy_var_4 -> + case happyOut35 happy_x_5 of { happy_var_5 -> + case happyOut91 happy_x_6 of { happy_var_6 -> + ( case happy_var_1 of + CDecl declspecs dies at -> do + declr <- withAsmNameAttrs (fst happy_var_5, snd happy_var_5 ++ happy_var_3) happy_var_4 + doDeclIdent declspecs declr + withLength at $ CDecl declspecs ((Just (reverseDeclr declr), happy_var_6, Nothing) : dies))}}}}} + ) (\r -> happyReturn (happyIn34 r)) + +happyReduce_96 = happySpecReduce_2 28# happyReduction_96 +happyReduction_96 happy_x_2 + happy_x_1 + = case happyOut64 happy_x_1 of { happy_var_1 -> + case happyOut126 happy_x_2 of { happy_var_2 -> + happyIn35 + ((happy_var_1,happy_var_2) + )}} + +happyReduce_97 = happyMonadReduce 4# 29# happyReduction_97 +happyReduction_97 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut37 happy_x_1 of { happy_var_1 -> + case happyOut63 happy_x_2 of { happy_var_2 -> + case happyOut35 happy_x_3 of { happy_var_3 -> + case happyOut91 happy_x_4 of { happy_var_4 -> + ( do{ + declr <- withAsmNameAttrs happy_var_3 happy_var_2; + doDeclIdent happy_var_1 declr; + withNodeInfo happy_var_1 $ CDecl happy_var_1 [(Just (reverseDeclr declr), happy_var_4, Nothing)] })}}}} + ) (\r -> happyReturn (happyIn36 r)) + +happyReduce_98 = happyMonadReduce 4# 29# happyReduction_98 +happyReduction_98 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut41 happy_x_1 of { happy_var_1 -> + case happyOut63 happy_x_2 of { happy_var_2 -> + case happyOut35 happy_x_3 of { happy_var_3 -> + case happyOut91 happy_x_4 of { happy_var_4 -> + ( do{ + declr <- withAsmNameAttrs happy_var_3 happy_var_2; + doDeclIdent happy_var_1 declr; + withNodeInfo happy_var_1 $ CDecl happy_var_1 [(Just (reverseDeclr declr), happy_var_4, Nothing)] })}}}} + ) (\r -> happyReturn (happyIn36 r)) + +happyReduce_99 = happyMonadReduce 6# 29# happyReduction_99 +happyReduction_99 (happy_x_6 `HappyStk` + happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut36 happy_x_1 of { happy_var_1 -> + case happyOut126 happy_x_3 of { happy_var_3 -> + case happyOut63 happy_x_4 of { happy_var_4 -> + case happyOut35 happy_x_5 of { happy_var_5 -> + case happyOut91 happy_x_6 of { happy_var_6 -> + ( case happy_var_1 of + CDecl declspecs dies at -> do + declr <- withAsmNameAttrs (fst happy_var_5, snd happy_var_5 ++ happy_var_3) happy_var_4 + doDeclIdent declspecs declr + return (CDecl declspecs ((Just (reverseDeclr declr), happy_var_6, Nothing) : dies) at))}}}}} + ) (\r -> happyReturn (happyIn36 r)) + +happyReduce_100 = happySpecReduce_1 30# happyReduction_100 +happyReduction_100 happy_x_1 + = case happyOut43 happy_x_1 of { happy_var_1 -> + happyIn37 + (reverse happy_var_1 + )} + +happyReduce_101 = happySpecReduce_1 30# happyReduction_101 +happyReduction_101 happy_x_1 + = case happyOut45 happy_x_1 of { happy_var_1 -> + happyIn37 + (reverse happy_var_1 + )} + +happyReduce_102 = happySpecReduce_1 30# happyReduction_102 +happyReduction_102 happy_x_1 + = case happyOut47 happy_x_1 of { happy_var_1 -> + happyIn37 + (reverse happy_var_1 + )} + +happyReduce_103 = happySpecReduce_1 31# happyReduction_103 +happyReduction_103 happy_x_1 + = case happyOut40 happy_x_1 of { happy_var_1 -> + happyIn38 + (singleton (CStorageSpec happy_var_1) + )} + +happyReduce_104 = happySpecReduce_2 31# happyReduction_104 +happyReduction_104 happy_x_2 + happy_x_1 + = case happyOut127 happy_x_1 of { happy_var_1 -> + case happyOut40 happy_x_2 of { happy_var_2 -> + happyIn38 + (reverseList (liftCAttrs happy_var_1) `snoc` (CStorageSpec happy_var_2) + )}} + +happyReduce_105 = happySpecReduce_2 31# happyReduction_105 +happyReduction_105 happy_x_2 + happy_x_1 + = case happyOut62 happy_x_1 of { happy_var_1 -> + case happyOut40 happy_x_2 of { happy_var_2 -> + happyIn38 + (rmap CTypeQual happy_var_1 `snoc` CStorageSpec happy_var_2 + )}} + +happyReduce_106 = happySpecReduce_3 31# happyReduction_106 +happyReduction_106 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut62 happy_x_1 of { happy_var_1 -> + case happyOut127 happy_x_2 of { happy_var_2 -> + case happyOut40 happy_x_3 of { happy_var_3 -> + happyIn38 + ((rmap CTypeQual happy_var_1 `rappend` liftCAttrs happy_var_2) `snoc` CStorageSpec happy_var_3 + )}}} + +happyReduce_107 = happySpecReduce_2 31# happyReduction_107 +happyReduction_107 happy_x_2 + happy_x_1 + = case happyOut38 happy_x_1 of { happy_var_1 -> + case happyOut39 happy_x_2 of { happy_var_2 -> + happyIn38 + (happy_var_1 `snoc` happy_var_2 + )}} + +happyReduce_108 = happySpecReduce_2 31# happyReduction_108 +happyReduction_108 happy_x_2 + happy_x_1 + = case happyOut38 happy_x_1 of { happy_var_1 -> + case happyOut128 happy_x_2 of { happy_var_2 -> + happyIn38 + (addTrailingAttrs happy_var_1 happy_var_2 + )}} + +happyReduce_109 = happySpecReduce_1 32# happyReduction_109 +happyReduction_109 happy_x_1 + = case happyOut40 happy_x_1 of { happy_var_1 -> + happyIn39 + (CStorageSpec happy_var_1 + )} + +happyReduce_110 = happySpecReduce_1 32# happyReduction_110 +happyReduction_110 happy_x_1 + = case happyOut61 happy_x_1 of { happy_var_1 -> + happyIn39 + (CTypeQual happy_var_1 + )} + +happyReduce_111 = happyMonadReduce 1# 33# happyReduction_111 +happyReduction_111 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + ( withNodeInfo happy_var_1 $ CTypedef)} + ) (\r -> happyReturn (happyIn40 r)) + +happyReduce_112 = happyMonadReduce 1# 33# happyReduction_112 +happyReduction_112 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + ( withNodeInfo happy_var_1 $ CExtern)} + ) (\r -> happyReturn (happyIn40 r)) + +happyReduce_113 = happyMonadReduce 1# 33# happyReduction_113 +happyReduction_113 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + ( withNodeInfo happy_var_1 $ CStatic)} + ) (\r -> happyReturn (happyIn40 r)) + +happyReduce_114 = happyMonadReduce 1# 33# happyReduction_114 +happyReduction_114 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + ( withNodeInfo happy_var_1 $ CAuto)} + ) (\r -> happyReturn (happyIn40 r)) + +happyReduce_115 = happyMonadReduce 1# 33# happyReduction_115 +happyReduction_115 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + ( withNodeInfo happy_var_1 $ CRegister)} + ) (\r -> happyReturn (happyIn40 r)) + +happyReduce_116 = happyMonadReduce 1# 33# happyReduction_116 +happyReduction_116 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + ( withNodeInfo happy_var_1 $ CThread)} + ) (\r -> happyReturn (happyIn40 r)) + +happyReduce_117 = happySpecReduce_1 34# happyReduction_117 +happyReduction_117 happy_x_1 + = case happyOut44 happy_x_1 of { happy_var_1 -> + happyIn41 + (reverse happy_var_1 + )} + +happyReduce_118 = happySpecReduce_1 34# happyReduction_118 +happyReduction_118 happy_x_1 + = case happyOut46 happy_x_1 of { happy_var_1 -> + happyIn41 + (reverse happy_var_1 + )} + +happyReduce_119 = happySpecReduce_1 34# happyReduction_119 +happyReduction_119 happy_x_1 + = case happyOut48 happy_x_1 of { happy_var_1 -> + happyIn41 + (reverse happy_var_1 + )} + +happyReduce_120 = happyMonadReduce 1# 35# happyReduction_120 +happyReduction_120 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + ( withNodeInfo happy_var_1 $ CVoidType)} + ) (\r -> happyReturn (happyIn42 r)) + +happyReduce_121 = happyMonadReduce 1# 35# happyReduction_121 +happyReduction_121 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + ( withNodeInfo happy_var_1 $ CCharType)} + ) (\r -> happyReturn (happyIn42 r)) + +happyReduce_122 = happyMonadReduce 1# 35# happyReduction_122 +happyReduction_122 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + ( withNodeInfo happy_var_1 $ CShortType)} + ) (\r -> happyReturn (happyIn42 r)) + +happyReduce_123 = happyMonadReduce 1# 35# happyReduction_123 +happyReduction_123 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + ( withNodeInfo happy_var_1 $ CIntType)} + ) (\r -> happyReturn (happyIn42 r)) + +happyReduce_124 = happyMonadReduce 1# 35# happyReduction_124 +happyReduction_124 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + ( withNodeInfo happy_var_1 $ CLongType)} + ) (\r -> happyReturn (happyIn42 r)) + +happyReduce_125 = happyMonadReduce 1# 35# happyReduction_125 +happyReduction_125 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + ( withNodeInfo happy_var_1 $ CFloatType)} + ) (\r -> happyReturn (happyIn42 r)) + +happyReduce_126 = happyMonadReduce 1# 35# happyReduction_126 +happyReduction_126 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + ( withNodeInfo happy_var_1 $ CDoubleType)} + ) (\r -> happyReturn (happyIn42 r)) + +happyReduce_127 = happyMonadReduce 1# 35# happyReduction_127 +happyReduction_127 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + ( withNodeInfo happy_var_1 $ CSignedType)} + ) (\r -> happyReturn (happyIn42 r)) + +happyReduce_128 = happyMonadReduce 1# 35# happyReduction_128 +happyReduction_128 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + ( withNodeInfo happy_var_1 $ CUnsigType)} + ) (\r -> happyReturn (happyIn42 r)) + +happyReduce_129 = happyMonadReduce 1# 35# happyReduction_129 +happyReduction_129 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + ( withNodeInfo happy_var_1 $ CBoolType)} + ) (\r -> happyReturn (happyIn42 r)) + +happyReduce_130 = happyMonadReduce 1# 35# happyReduction_130 +happyReduction_130 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + ( withNodeInfo happy_var_1 $ CComplexType)} + ) (\r -> happyReturn (happyIn42 r)) + +happyReduce_131 = happySpecReduce_2 36# happyReduction_131 +happyReduction_131 happy_x_2 + happy_x_1 + = case happyOut38 happy_x_1 of { happy_var_1 -> + case happyOut42 happy_x_2 of { happy_var_2 -> + happyIn43 + (happy_var_1 `snoc` CTypeSpec happy_var_2 + )}} + +happyReduce_132 = happySpecReduce_2 36# happyReduction_132 +happyReduction_132 happy_x_2 + happy_x_1 + = case happyOut44 happy_x_1 of { happy_var_1 -> + case happyOut40 happy_x_2 of { happy_var_2 -> + happyIn43 + (happy_var_1 `snoc` CStorageSpec happy_var_2 + )}} + +happyReduce_133 = happySpecReduce_2 36# happyReduction_133 +happyReduction_133 happy_x_2 + happy_x_1 + = case happyOut43 happy_x_1 of { happy_var_1 -> + case happyOut39 happy_x_2 of { happy_var_2 -> + happyIn43 + (happy_var_1 `snoc` happy_var_2 + )}} + +happyReduce_134 = happySpecReduce_2 36# happyReduction_134 +happyReduction_134 happy_x_2 + happy_x_1 + = case happyOut43 happy_x_1 of { happy_var_1 -> + case happyOut42 happy_x_2 of { happy_var_2 -> + happyIn43 + (happy_var_1 `snoc` CTypeSpec happy_var_2 + )}} + +happyReduce_135 = happySpecReduce_2 36# happyReduction_135 +happyReduction_135 happy_x_2 + happy_x_1 + = case happyOut43 happy_x_1 of { happy_var_1 -> + case happyOut128 happy_x_2 of { happy_var_2 -> + happyIn43 + (addTrailingAttrs happy_var_1 happy_var_2 + )}} + +happyReduce_136 = happySpecReduce_1 37# happyReduction_136 +happyReduction_136 happy_x_1 + = case happyOut42 happy_x_1 of { happy_var_1 -> + happyIn44 + (singleton (CTypeSpec happy_var_1) + )} + +happyReduce_137 = happySpecReduce_2 37# happyReduction_137 +happyReduction_137 happy_x_2 + happy_x_1 + = case happyOut127 happy_x_1 of { happy_var_1 -> + case happyOut42 happy_x_2 of { happy_var_2 -> + happyIn44 + ((reverseList $ liftCAttrs happy_var_1) `snoc` (CTypeSpec happy_var_2) + )}} + +happyReduce_138 = happySpecReduce_2 37# happyReduction_138 +happyReduction_138 happy_x_2 + happy_x_1 + = case happyOut62 happy_x_1 of { happy_var_1 -> + case happyOut42 happy_x_2 of { happy_var_2 -> + happyIn44 + (rmap CTypeQual happy_var_1 `snoc` CTypeSpec happy_var_2 + )}} + +happyReduce_139 = happySpecReduce_3 37# happyReduction_139 +happyReduction_139 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut62 happy_x_1 of { happy_var_1 -> + case happyOut127 happy_x_2 of { happy_var_2 -> + case happyOut42 happy_x_3 of { happy_var_3 -> + happyIn44 + (rmap CTypeQual happy_var_1 `rappend` (liftCAttrs happy_var_2) `snoc` CTypeSpec happy_var_3 + )}}} + +happyReduce_140 = happySpecReduce_2 37# happyReduction_140 +happyReduction_140 happy_x_2 + happy_x_1 + = case happyOut44 happy_x_1 of { happy_var_1 -> + case happyOut61 happy_x_2 of { happy_var_2 -> + happyIn44 + (happy_var_1 `snoc` CTypeQual happy_var_2 + )}} + +happyReduce_141 = happySpecReduce_2 37# happyReduction_141 +happyReduction_141 happy_x_2 + happy_x_1 + = case happyOut44 happy_x_1 of { happy_var_1 -> + case happyOut42 happy_x_2 of { happy_var_2 -> + happyIn44 + (happy_var_1 `snoc` CTypeSpec happy_var_2 + )}} + +happyReduce_142 = happySpecReduce_2 37# happyReduction_142 +happyReduction_142 happy_x_2 + happy_x_1 + = case happyOut44 happy_x_1 of { happy_var_1 -> + case happyOut128 happy_x_2 of { happy_var_2 -> + happyIn44 + (addTrailingAttrs happy_var_1 happy_var_2 + )}} + +happyReduce_143 = happySpecReduce_2 38# happyReduction_143 +happyReduction_143 happy_x_2 + happy_x_1 + = case happyOut38 happy_x_1 of { happy_var_1 -> + case happyOut49 happy_x_2 of { happy_var_2 -> + happyIn45 + (happy_var_1 `snoc` CTypeSpec happy_var_2 + )}} + +happyReduce_144 = happySpecReduce_2 38# happyReduction_144 +happyReduction_144 happy_x_2 + happy_x_1 + = case happyOut46 happy_x_1 of { happy_var_1 -> + case happyOut40 happy_x_2 of { happy_var_2 -> + happyIn45 + (happy_var_1 `snoc` CStorageSpec happy_var_2 + )}} + +happyReduce_145 = happySpecReduce_2 38# happyReduction_145 +happyReduction_145 happy_x_2 + happy_x_1 + = case happyOut45 happy_x_1 of { happy_var_1 -> + case happyOut39 happy_x_2 of { happy_var_2 -> + happyIn45 + (happy_var_1 `snoc` happy_var_2 + )}} + +happyReduce_146 = happySpecReduce_2 38# happyReduction_146 +happyReduction_146 happy_x_2 + happy_x_1 + = case happyOut45 happy_x_1 of { happy_var_1 -> + case happyOut128 happy_x_2 of { happy_var_2 -> + happyIn45 + (addTrailingAttrs happy_var_1 happy_var_2 + )}} + +happyReduce_147 = happySpecReduce_1 39# happyReduction_147 +happyReduction_147 happy_x_1 + = case happyOut49 happy_x_1 of { happy_var_1 -> + happyIn46 + (singleton (CTypeSpec happy_var_1) + )} + +happyReduce_148 = happySpecReduce_2 39# happyReduction_148 +happyReduction_148 happy_x_2 + happy_x_1 + = case happyOut127 happy_x_1 of { happy_var_1 -> + case happyOut49 happy_x_2 of { happy_var_2 -> + happyIn46 + ((reverseList $ liftCAttrs happy_var_1) `snoc` (CTypeSpec happy_var_2) + )}} + +happyReduce_149 = happySpecReduce_2 39# happyReduction_149 +happyReduction_149 happy_x_2 + happy_x_1 + = case happyOut62 happy_x_1 of { happy_var_1 -> + case happyOut49 happy_x_2 of { happy_var_2 -> + happyIn46 + (rmap CTypeQual happy_var_1 `snoc` CTypeSpec happy_var_2 + )}} + +happyReduce_150 = happySpecReduce_3 39# happyReduction_150 +happyReduction_150 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut62 happy_x_1 of { happy_var_1 -> + case happyOut127 happy_x_2 of { happy_var_2 -> + case happyOut49 happy_x_3 of { happy_var_3 -> + happyIn46 + (rmap CTypeQual happy_var_1 `rappend` (liftCAttrs happy_var_2) `snoc` CTypeSpec happy_var_3 + )}}} + +happyReduce_151 = happySpecReduce_2 39# happyReduction_151 +happyReduction_151 happy_x_2 + happy_x_1 + = case happyOut46 happy_x_1 of { happy_var_1 -> + case happyOut61 happy_x_2 of { happy_var_2 -> + happyIn46 + (happy_var_1 `snoc` CTypeQual happy_var_2 + )}} + +happyReduce_152 = happySpecReduce_2 39# happyReduction_152 +happyReduction_152 happy_x_2 + happy_x_1 + = case happyOut46 happy_x_1 of { happy_var_1 -> + case happyOut128 happy_x_2 of { happy_var_2 -> + happyIn46 + (addTrailingAttrs happy_var_1 happy_var_2 + )}} + +happyReduce_153 = happySpecReduce_2 40# happyReduction_153 +happyReduction_153 happy_x_2 + happy_x_1 + = case happyOut48 happy_x_1 of { happy_var_1 -> + case happyOut40 happy_x_2 of { happy_var_2 -> + happyIn47 + (happy_var_1 `snoc` CStorageSpec happy_var_2 + )}} + +happyReduce_154 = happyMonadReduce 2# 40# happyReduction_154 +happyReduction_154 (happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut38 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (CTokTyIdent _ happy_var_2) -> + ( withNodeInfo happy_var_2 $ \at -> happy_var_1 `snoc` CTypeSpec (CTypeDef happy_var_2 at))}} + ) (\r -> happyReturn (happyIn47 r)) + +happyReduce_155 = happyMonadReduce 5# 40# happyReduction_155 +happyReduction_155 (happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut38 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { happy_var_2 -> + case happyOut117 happy_x_4 of { happy_var_4 -> + ( withNodeInfo happy_var_2 $ \at -> happy_var_1 `snoc` CTypeSpec (CTypeOfExpr happy_var_4 at))}}} + ) (\r -> happyReturn (happyIn47 r)) + +happyReduce_156 = happyMonadReduce 5# 40# happyReduction_156 +happyReduction_156 (happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut38 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { happy_var_2 -> + case happyOut83 happy_x_4 of { happy_var_4 -> + ( withNodeInfo happy_var_2 $ \at -> happy_var_1 `snoc` CTypeSpec (CTypeOfType happy_var_4 at))}}} + ) (\r -> happyReturn (happyIn47 r)) + +happyReduce_157 = happySpecReduce_2 40# happyReduction_157 +happyReduction_157 happy_x_2 + happy_x_1 + = case happyOut47 happy_x_1 of { happy_var_1 -> + case happyOut39 happy_x_2 of { happy_var_2 -> + happyIn47 + (happy_var_1 `snoc` happy_var_2 + )}} + +happyReduce_158 = happySpecReduce_2 40# happyReduction_158 +happyReduction_158 happy_x_2 + happy_x_1 + = case happyOut47 happy_x_1 of { happy_var_1 -> + case happyOut128 happy_x_2 of { happy_var_2 -> + happyIn47 + (addTrailingAttrs happy_var_1 happy_var_2 + )}} + +happyReduce_159 = happyMonadReduce 1# 41# happyReduction_159 +happyReduction_159 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { (CTokTyIdent _ happy_var_1) -> + ( withNodeInfo happy_var_1 $ \at -> singleton (CTypeSpec (CTypeDef happy_var_1 at)))} + ) (\r -> happyReturn (happyIn48 r)) + +happyReduce_160 = happyMonadReduce 4# 41# happyReduction_160 +happyReduction_160 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut117 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ \at -> singleton (CTypeSpec (CTypeOfExpr happy_var_3 at)))}} + ) (\r -> happyReturn (happyIn48 r)) + +happyReduce_161 = happyMonadReduce 4# 41# happyReduction_161 +happyReduction_161 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut83 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ \at -> singleton (CTypeSpec (CTypeOfType happy_var_3 at)))}} + ) (\r -> happyReturn (happyIn48 r)) + +happyReduce_162 = happyMonadReduce 2# 41# happyReduction_162 +happyReduction_162 (happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut62 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (CTokTyIdent _ happy_var_2) -> + ( withNodeInfo happy_var_2 $ \at -> rmap CTypeQual happy_var_1 `snoc` CTypeSpec (CTypeDef happy_var_2 at))}} + ) (\r -> happyReturn (happyIn48 r)) + +happyReduce_163 = happyMonadReduce 5# 41# happyReduction_163 +happyReduction_163 (happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut62 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { happy_var_2 -> + case happyOut117 happy_x_4 of { happy_var_4 -> + ( withNodeInfo happy_var_2 $ \at -> rmap CTypeQual happy_var_1 `snoc` CTypeSpec (CTypeOfExpr happy_var_4 at))}}} + ) (\r -> happyReturn (happyIn48 r)) + +happyReduce_164 = happyMonadReduce 5# 41# happyReduction_164 +happyReduction_164 (happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut62 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { happy_var_2 -> + case happyOut83 happy_x_4 of { happy_var_4 -> + ( withNodeInfo happy_var_2 $ \at -> rmap CTypeQual happy_var_1 `snoc` CTypeSpec (CTypeOfType happy_var_4 at))}}} + ) (\r -> happyReturn (happyIn48 r)) + +happyReduce_165 = happyMonadReduce 2# 41# happyReduction_165 +happyReduction_165 (happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut127 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (CTokTyIdent _ happy_var_2) -> + ( withNodeInfo happy_var_2 $ \at -> reverseList (liftCAttrs happy_var_1) `snoc` (CTypeSpec (CTypeDef happy_var_2 at)))}} + ) (\r -> happyReturn (happyIn48 r)) + +happyReduce_166 = happyMonadReduce 5# 41# happyReduction_166 +happyReduction_166 (happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut127 happy_x_1 of { happy_var_1 -> + case happyOut117 happy_x_4 of { happy_var_4 -> + ( withNodeInfo happy_var_1 $ \at -> reverseList (liftCAttrs happy_var_1) `snoc` (CTypeSpec (CTypeOfExpr happy_var_4 at)))}} + ) (\r -> happyReturn (happyIn48 r)) + +happyReduce_167 = happyMonadReduce 5# 41# happyReduction_167 +happyReduction_167 (happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut127 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { happy_var_2 -> + case happyOut83 happy_x_4 of { happy_var_4 -> + ( withNodeInfo happy_var_2 $ \at -> reverseList (liftCAttrs happy_var_1) `snoc` (CTypeSpec (CTypeOfType happy_var_4 at)))}}} + ) (\r -> happyReturn (happyIn48 r)) + +happyReduce_168 = happyMonadReduce 3# 41# happyReduction_168 +happyReduction_168 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut62 happy_x_1 of { happy_var_1 -> + case happyOut127 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (CTokTyIdent _ happy_var_3) -> + ( withNodeInfo happy_var_3 $ \at -> rmap CTypeQual happy_var_1 `rappend` (liftCAttrs happy_var_2) `snoc` CTypeSpec (CTypeDef happy_var_3 at))}}} + ) (\r -> happyReturn (happyIn48 r)) + +happyReduce_169 = happyMonadReduce 6# 41# happyReduction_169 +happyReduction_169 (happy_x_6 `HappyStk` + happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut62 happy_x_1 of { happy_var_1 -> + case happyOut127 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { happy_var_3 -> + case happyOut117 happy_x_5 of { happy_var_5 -> + ( withNodeInfo happy_var_3 $ \at -> rmap CTypeQual happy_var_1 `rappend` (liftCAttrs happy_var_2) `snoc` CTypeSpec (CTypeOfExpr happy_var_5 at))}}}} + ) (\r -> happyReturn (happyIn48 r)) + +happyReduce_170 = happyMonadReduce 6# 41# happyReduction_170 +happyReduction_170 (happy_x_6 `HappyStk` + happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut62 happy_x_1 of { happy_var_1 -> + case happyOut127 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { happy_var_3 -> + case happyOut83 happy_x_5 of { happy_var_5 -> + ( withNodeInfo happy_var_3 $ \at -> rmap CTypeQual happy_var_1 `rappend` (liftCAttrs happy_var_2) `snoc` CTypeSpec (CTypeOfType happy_var_5 at))}}}} + ) (\r -> happyReturn (happyIn48 r)) + +happyReduce_171 = happySpecReduce_2 41# happyReduction_171 +happyReduction_171 happy_x_2 + happy_x_1 + = case happyOut48 happy_x_1 of { happy_var_1 -> + case happyOut61 happy_x_2 of { happy_var_2 -> + happyIn48 + (happy_var_1 `snoc` CTypeQual happy_var_2 + )}} + +happyReduce_172 = happySpecReduce_2 41# happyReduction_172 +happyReduction_172 happy_x_2 + happy_x_1 + = case happyOut48 happy_x_1 of { happy_var_1 -> + case happyOut128 happy_x_2 of { happy_var_2 -> + happyIn48 + (addTrailingAttrs happy_var_1 happy_var_2 + )}} + +happyReduce_173 = happyMonadReduce 1# 42# happyReduction_173 +happyReduction_173 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut50 happy_x_1 of { happy_var_1 -> + ( withNodeInfo happy_var_1 $ CSUType happy_var_1)} + ) (\r -> happyReturn (happyIn49 r)) + +happyReduce_174 = happyMonadReduce 1# 42# happyReduction_174 +happyReduction_174 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut58 happy_x_1 of { happy_var_1 -> + ( withNodeInfo happy_var_1 $ CEnumType happy_var_1)} + ) (\r -> happyReturn (happyIn49 r)) + +happyReduce_175 = happyMonadReduce 6# 43# happyReduction_175 +happyReduction_175 (happy_x_6 `HappyStk` + happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut51 happy_x_1 of { happy_var_1 -> + case happyOut126 happy_x_2 of { happy_var_2 -> + case happyOut125 happy_x_3 of { happy_var_3 -> + case happyOut52 happy_x_5 of { happy_var_5 -> + ( withNodeInfo happy_var_1 $ CStruct (unL happy_var_1) (Just happy_var_3) (Just$ reverse happy_var_5) happy_var_2)}}}} + ) (\r -> happyReturn (happyIn50 r)) + +happyReduce_176 = happyMonadReduce 5# 43# happyReduction_176 +happyReduction_176 (happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut51 happy_x_1 of { happy_var_1 -> + case happyOut126 happy_x_2 of { happy_var_2 -> + case happyOut52 happy_x_4 of { happy_var_4 -> + ( withNodeInfo happy_var_1 $ CStruct (unL happy_var_1) Nothing (Just$ reverse happy_var_4) happy_var_2)}}} + ) (\r -> happyReturn (happyIn50 r)) + +happyReduce_177 = happyMonadReduce 3# 43# happyReduction_177 +happyReduction_177 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut51 happy_x_1 of { happy_var_1 -> + case happyOut126 happy_x_2 of { happy_var_2 -> + case happyOut125 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ CStruct (unL happy_var_1) (Just happy_var_3) Nothing happy_var_2)}}} + ) (\r -> happyReturn (happyIn50 r)) + +happyReduce_178 = happySpecReduce_1 44# happyReduction_178 +happyReduction_178 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn51 + (L CStructTag (posOf happy_var_1) + )} + +happyReduce_179 = happySpecReduce_1 44# happyReduction_179 +happyReduction_179 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn51 + (L CUnionTag (posOf happy_var_1) + )} + +happyReduce_180 = happySpecReduce_0 45# happyReduction_180 +happyReduction_180 = happyIn52 + (empty + ) + +happyReduce_181 = happySpecReduce_2 45# happyReduction_181 +happyReduction_181 happy_x_2 + happy_x_1 + = case happyOut52 happy_x_1 of { happy_var_1 -> + happyIn52 + (happy_var_1 + )} + +happyReduce_182 = happySpecReduce_2 45# happyReduction_182 +happyReduction_182 happy_x_2 + happy_x_1 + = case happyOut52 happy_x_1 of { happy_var_1 -> + case happyOut53 happy_x_2 of { happy_var_2 -> + happyIn52 + (happy_var_1 `snoc` happy_var_2 + )}} + +happyReduce_183 = happySpecReduce_2 46# happyReduction_183 +happyReduction_183 happy_x_2 + happy_x_1 + = case happyOut55 happy_x_1 of { happy_var_1 -> + happyIn53 + (case happy_var_1 of CDecl declspecs dies at -> CDecl declspecs (List.reverse dies) at + )} + +happyReduce_184 = happySpecReduce_2 46# happyReduction_184 +happyReduction_184 happy_x_2 + happy_x_1 + = case happyOut54 happy_x_1 of { happy_var_1 -> + happyIn53 + (case happy_var_1 of CDecl declspecs dies at -> CDecl declspecs (List.reverse dies) at + )} + +happyReduce_185 = happySpecReduce_2 46# happyReduction_185 +happyReduction_185 happy_x_2 + happy_x_1 + = case happyOut53 happy_x_2 of { happy_var_2 -> + happyIn53 + (happy_var_2 + )} + +happyReduce_186 = happyMonadReduce 3# 47# happyReduction_186 +happyReduction_186 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut62 happy_x_1 of { happy_var_1 -> + case happyOut126 happy_x_2 of { happy_var_2 -> + case happyOut57 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ case happy_var_3 of (d,s) -> CDecl (liftTypeQuals happy_var_1 ++ liftCAttrs happy_var_2) [(d,Nothing,s)])}}} + ) (\r -> happyReturn (happyIn54 r)) + +happyReduce_187 = happyMonadReduce 2# 47# happyReduction_187 +happyReduction_187 (happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut127 happy_x_1 of { happy_var_1 -> + case happyOut57 happy_x_2 of { happy_var_2 -> + ( withNodeInfo happy_var_1 $ case happy_var_2 of (d,s) -> CDecl (liftCAttrs happy_var_1) [(d,Nothing,s)])}} + ) (\r -> happyReturn (happyIn54 r)) + +happyReduce_188 = happyReduce 4# 47# happyReduction_188 +happyReduction_188 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOut54 happy_x_1 of { happy_var_1 -> + case happyOut126 happy_x_3 of { happy_var_3 -> + case happyOut57 happy_x_4 of { happy_var_4 -> + happyIn54 + (case happy_var_1 of + CDecl declspecs dies at -> + case happy_var_4 of + (Just d,s) -> CDecl declspecs ((Just $ appendObjAttrs happy_var_3 d,Nothing,s) : dies) at + (Nothing,s) -> CDecl declspecs ((Nothing,Nothing,s) : dies) at + ) `HappyStk` happyRest}}} + +happyReduce_189 = happyMonadReduce 3# 48# happyReduction_189 +happyReduction_189 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut41 happy_x_1 of { happy_var_1 -> + case happyOut56 happy_x_2 of { happy_var_2 -> + case happyOut126 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ case happy_var_2 of { (Just d,s) -> CDecl happy_var_1 [(Just $! appendObjAttrs happy_var_3 d,Nothing,s)] + ; (Nothing,s) -> CDecl happy_var_1 [(Nothing,Nothing,s)] })}}} + ) (\r -> happyReturn (happyIn55 r)) + +happyReduce_190 = happyReduce 5# 48# happyReduction_190 +happyReduction_190 (happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOut55 happy_x_1 of { happy_var_1 -> + case happyOut126 happy_x_3 of { happy_var_3 -> + case happyOut56 happy_x_4 of { happy_var_4 -> + case happyOut126 happy_x_5 of { happy_var_5 -> + happyIn55 + (case happy_var_1 of + CDecl declspecs dies attr -> + case happy_var_4 of + (Just d,s) -> CDecl declspecs ((Just$ appendObjAttrs (happy_var_3++happy_var_5) d,Nothing,s) : dies) attr + (Nothing,s) -> CDecl declspecs ((Nothing,Nothing,s) : dies) attr + ) `HappyStk` happyRest}}}} + +happyReduce_191 = happyMonadReduce 1# 48# happyReduction_191 +happyReduction_191 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut41 happy_x_1 of { happy_var_1 -> + ( withNodeInfo happy_var_1 $ CDecl happy_var_1 [])} + ) (\r -> happyReturn (happyIn55 r)) + +happyReduce_192 = happySpecReduce_1 49# happyReduction_192 +happyReduction_192 happy_x_1 + = case happyOut63 happy_x_1 of { happy_var_1 -> + happyIn56 + ((Just (reverseDeclr happy_var_1), Nothing) + )} + +happyReduce_193 = happySpecReduce_2 49# happyReduction_193 +happyReduction_193 happy_x_2 + happy_x_1 + = case happyOut121 happy_x_2 of { happy_var_2 -> + happyIn56 + ((Nothing, Just happy_var_2) + )} + +happyReduce_194 = happySpecReduce_3 49# happyReduction_194 +happyReduction_194 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut63 happy_x_1 of { happy_var_1 -> + case happyOut121 happy_x_3 of { happy_var_3 -> + happyIn56 + ((Just (reverseDeclr happy_var_1), Just happy_var_3) + )}} + +happyReduce_195 = happySpecReduce_1 50# happyReduction_195 +happyReduction_195 happy_x_1 + = case happyOut72 happy_x_1 of { happy_var_1 -> + happyIn57 + ((Just (reverseDeclr happy_var_1), Nothing) + )} + +happyReduce_196 = happySpecReduce_2 50# happyReduction_196 +happyReduction_196 happy_x_2 + happy_x_1 + = case happyOut121 happy_x_2 of { happy_var_2 -> + happyIn57 + ((Nothing, Just happy_var_2) + )} + +happyReduce_197 = happySpecReduce_3 50# happyReduction_197 +happyReduction_197 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut72 happy_x_1 of { happy_var_1 -> + case happyOut121 happy_x_3 of { happy_var_3 -> + happyIn57 + ((Just (reverseDeclr happy_var_1), Just happy_var_3) + )}} + +happyReduce_198 = happySpecReduce_2 50# happyReduction_198 +happyReduction_198 happy_x_2 + happy_x_1 + = case happyOut57 happy_x_1 of { happy_var_1 -> + case happyOut128 happy_x_2 of { happy_var_2 -> + happyIn57 + (case happy_var_1 of { (Nothing,expr) -> (Nothing,expr) {- FIXME -} + ; (Just (CDeclr name derived asmname attrs node), bsz) -> + (Just (CDeclr name derived asmname (attrs++happy_var_2) node),bsz) + } + )}} + +happyReduce_199 = happyMonadReduce 5# 51# happyReduction_199 +happyReduction_199 (happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut126 happy_x_2 of { happy_var_2 -> + case happyOut59 happy_x_4 of { happy_var_4 -> + ( withNodeInfo happy_var_1 $ CEnum Nothing (Just$ reverse happy_var_4) happy_var_2)}}} + ) (\r -> happyReturn (happyIn58 r)) + +happyReduce_200 = happyMonadReduce 6# 51# happyReduction_200 +happyReduction_200 (happy_x_6 `HappyStk` + happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut126 happy_x_2 of { happy_var_2 -> + case happyOut59 happy_x_4 of { happy_var_4 -> + ( withNodeInfo happy_var_1 $ CEnum Nothing (Just$ reverse happy_var_4) happy_var_2)}}} + ) (\r -> happyReturn (happyIn58 r)) + +happyReduce_201 = happyMonadReduce 6# 51# happyReduction_201 +happyReduction_201 (happy_x_6 `HappyStk` + happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut126 happy_x_2 of { happy_var_2 -> + case happyOut125 happy_x_3 of { happy_var_3 -> + case happyOut59 happy_x_5 of { happy_var_5 -> + ( withNodeInfo happy_var_1 $ CEnum (Just happy_var_3) (Just$ reverse happy_var_5) happy_var_2)}}}} + ) (\r -> happyReturn (happyIn58 r)) + +happyReduce_202 = happyMonadReduce 7# 51# happyReduction_202 +happyReduction_202 (happy_x_7 `HappyStk` + happy_x_6 `HappyStk` + happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut126 happy_x_2 of { happy_var_2 -> + case happyOut125 happy_x_3 of { happy_var_3 -> + case happyOut59 happy_x_5 of { happy_var_5 -> + ( withNodeInfo happy_var_1 $ CEnum (Just happy_var_3) (Just$ reverse happy_var_5) happy_var_2)}}}} + ) (\r -> happyReturn (happyIn58 r)) + +happyReduce_203 = happyMonadReduce 3# 51# happyReduction_203 +happyReduction_203 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut126 happy_x_2 of { happy_var_2 -> + case happyOut125 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ CEnum (Just happy_var_3) Nothing happy_var_2)}}} + ) (\r -> happyReturn (happyIn58 r)) + +happyReduce_204 = happySpecReduce_1 52# happyReduction_204 +happyReduction_204 happy_x_1 + = case happyOut60 happy_x_1 of { happy_var_1 -> + happyIn59 + (singleton happy_var_1 + )} + +happyReduce_205 = happySpecReduce_3 52# happyReduction_205 +happyReduction_205 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut59 happy_x_1 of { happy_var_1 -> + case happyOut60 happy_x_3 of { happy_var_3 -> + happyIn59 + (happy_var_1 `snoc` happy_var_3 + )}} + +happyReduce_206 = happySpecReduce_1 53# happyReduction_206 +happyReduction_206 happy_x_1 + = case happyOut125 happy_x_1 of { happy_var_1 -> + happyIn60 + ((happy_var_1, Nothing) + )} + +happyReduce_207 = happySpecReduce_3 53# happyReduction_207 +happyReduction_207 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut125 happy_x_1 of { happy_var_1 -> + case happyOut121 happy_x_3 of { happy_var_3 -> + happyIn60 + ((happy_var_1, Just happy_var_3) + )}} + +happyReduce_208 = happyMonadReduce 1# 54# happyReduction_208 +happyReduction_208 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + ( withNodeInfo happy_var_1 $ CConstQual)} + ) (\r -> happyReturn (happyIn61 r)) + +happyReduce_209 = happyMonadReduce 1# 54# happyReduction_209 +happyReduction_209 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + ( withNodeInfo happy_var_1 $ CVolatQual)} + ) (\r -> happyReturn (happyIn61 r)) + +happyReduce_210 = happyMonadReduce 1# 54# happyReduction_210 +happyReduction_210 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + ( withNodeInfo happy_var_1 $ CRestrQual)} + ) (\r -> happyReturn (happyIn61 r)) + +happyReduce_211 = happyMonadReduce 1# 54# happyReduction_211 +happyReduction_211 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + ( withNodeInfo happy_var_1 $ CInlineQual)} + ) (\r -> happyReturn (happyIn61 r)) + +happyReduce_212 = happySpecReduce_2 55# happyReduction_212 +happyReduction_212 happy_x_2 + happy_x_1 + = case happyOut126 happy_x_1 of { happy_var_1 -> + case happyOut61 happy_x_2 of { happy_var_2 -> + happyIn62 + (reverseList (map CAttrQual happy_var_1) `snoc` happy_var_2 + )}} + +happyReduce_213 = happySpecReduce_2 55# happyReduction_213 +happyReduction_213 happy_x_2 + happy_x_1 + = case happyOut62 happy_x_1 of { happy_var_1 -> + case happyOut61 happy_x_2 of { happy_var_2 -> + happyIn62 + (happy_var_1 `snoc` happy_var_2 + )}} + +happyReduce_214 = happySpecReduce_3 55# happyReduction_214 +happyReduction_214 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut62 happy_x_1 of { happy_var_1 -> + case happyOut127 happy_x_2 of { happy_var_2 -> + case happyOut61 happy_x_3 of { happy_var_3 -> + happyIn62 + ((happy_var_1 `rappend` map CAttrQual happy_var_2) `snoc` happy_var_3 + )}}} + +happyReduce_215 = happySpecReduce_1 56# happyReduction_215 +happyReduction_215 happy_x_1 + = case happyOut72 happy_x_1 of { happy_var_1 -> + happyIn63 + (happy_var_1 + )} + +happyReduce_216 = happySpecReduce_1 56# happyReduction_216 +happyReduction_216 happy_x_1 + = case happyOut65 happy_x_1 of { happy_var_1 -> + happyIn63 + (happy_var_1 + )} + +happyReduce_217 = happySpecReduce_0 57# happyReduction_217 +happyReduction_217 = happyIn64 + (Nothing + ) + +happyReduce_218 = happyReduce 4# 57# happyReduction_218 +happyReduction_218 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOut123 happy_x_3 of { happy_var_3 -> + happyIn64 + (Just happy_var_3 + ) `HappyStk` happyRest} + +happyReduce_219 = happySpecReduce_1 58# happyReduction_219 +happyReduction_219 happy_x_1 + = case happyOut69 happy_x_1 of { happy_var_1 -> + happyIn65 + (happy_var_1 + )} + +happyReduce_220 = happySpecReduce_1 58# happyReduction_220 +happyReduction_220 happy_x_1 + = case happyOut66 happy_x_1 of { happy_var_1 -> + happyIn65 + (happy_var_1 + )} + +happyReduce_221 = happyMonadReduce 1# 59# happyReduction_221 +happyReduction_221 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { (CTokTyIdent _ happy_var_1) -> + ( withNodeInfo happy_var_1 $ mkVarDeclr happy_var_1)} + ) (\r -> happyReturn (happyIn66 r)) + +happyReduce_222 = happyMonadReduce 2# 59# happyReduction_222 +happyReduction_222 (happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { (CTokTyIdent _ happy_var_1) -> + case happyOut85 happy_x_2 of { happy_var_2 -> + ( withNodeInfo happy_var_1 $ \at -> happy_var_2 (mkVarDeclr happy_var_1 at))}} + ) (\r -> happyReturn (happyIn66 r)) + +happyReduce_223 = happySpecReduce_1 59# happyReduction_223 +happyReduction_223 happy_x_1 + = case happyOut67 happy_x_1 of { happy_var_1 -> + happyIn66 + (happy_var_1 + )} + +happyReduce_224 = happySpecReduce_1 60# happyReduction_224 +happyReduction_224 happy_x_1 + = case happyOut68 happy_x_1 of { happy_var_1 -> + happyIn67 + (happy_var_1 + )} + +happyReduce_225 = happyMonadReduce 2# 60# happyReduction_225 +happyReduction_225 (happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut66 happy_x_2 of { happy_var_2 -> + ( withNodeInfo happy_var_1 $ ptrDeclr happy_var_2 [])}} + ) (\r -> happyReturn (happyIn67 r)) + +happyReduce_226 = happyMonadReduce 3# 60# happyReduction_226 +happyReduction_226 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut127 happy_x_2 of { happy_var_2 -> + case happyOut66 happy_x_3 of { happy_var_3 -> + ( withAttribute happy_var_1 happy_var_2 $ ptrDeclr happy_var_3 [])}}} + ) (\r -> happyReturn (happyIn67 r)) + +happyReduce_227 = happyMonadReduce 3# 60# happyReduction_227 +happyReduction_227 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut62 happy_x_2 of { happy_var_2 -> + case happyOut66 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ ptrDeclr happy_var_3 (reverse happy_var_2))}}} + ) (\r -> happyReturn (happyIn67 r)) + +happyReduce_228 = happyMonadReduce 4# 60# happyReduction_228 +happyReduction_228 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut62 happy_x_2 of { happy_var_2 -> + case happyOut127 happy_x_3 of { happy_var_3 -> + case happyOut66 happy_x_4 of { happy_var_4 -> + ( withAttribute happy_var_1 happy_var_3 $ ptrDeclr happy_var_4 (reverse happy_var_2))}}}} + ) (\r -> happyReturn (happyIn67 r)) + +happyReduce_229 = happySpecReduce_3 61# happyReduction_229 +happyReduction_229 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut67 happy_x_2 of { happy_var_2 -> + happyIn68 + (happy_var_2 + )} + +happyReduce_230 = happyReduce 4# 61# happyReduction_230 +happyReduction_230 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOut67 happy_x_2 of { happy_var_2 -> + case happyOut85 happy_x_4 of { happy_var_4 -> + happyIn68 + (happy_var_4 happy_var_2 + ) `HappyStk` happyRest}} + +happyReduce_231 = happyReduce 4# 61# happyReduction_231 +happyReduction_231 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOut127 happy_x_2 of { happy_var_2 -> + case happyOut67 happy_x_3 of { happy_var_3 -> + happyIn68 + (appendDeclrAttrs happy_var_2 happy_var_3 + ) `HappyStk` happyRest}} + +happyReduce_232 = happyReduce 5# 61# happyReduction_232 +happyReduction_232 (happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOut127 happy_x_2 of { happy_var_2 -> + case happyOut67 happy_x_3 of { happy_var_3 -> + case happyOut85 happy_x_5 of { happy_var_5 -> + happyIn68 + (appendDeclrAttrs happy_var_2 (happy_var_5 happy_var_3) + ) `HappyStk` happyRest}}} + +happyReduce_233 = happySpecReduce_1 62# happyReduction_233 +happyReduction_233 happy_x_1 + = case happyOut70 happy_x_1 of { happy_var_1 -> + happyIn69 + (happy_var_1 + )} + +happyReduce_234 = happyMonadReduce 4# 62# happyReduction_234 +happyReduction_234 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut71 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ ptrDeclr happy_var_3 [])}} + ) (\r -> happyReturn (happyIn69 r)) + +happyReduce_235 = happyMonadReduce 5# 62# happyReduction_235 +happyReduction_235 (happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut62 happy_x_2 of { happy_var_2 -> + case happyOut71 happy_x_4 of { happy_var_4 -> + ( withNodeInfo happy_var_1 $ ptrDeclr happy_var_4 (reverse happy_var_2))}}} + ) (\r -> happyReturn (happyIn69 r)) + +happyReduce_236 = happyMonadReduce 6# 62# happyReduction_236 +happyReduction_236 (happy_x_6 `HappyStk` + happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut62 happy_x_2 of { happy_var_2 -> + case happyOut127 happy_x_3 of { happy_var_3 -> + case happyOut71 happy_x_5 of { happy_var_5 -> + ( withAttribute happy_var_1 happy_var_3 $ ptrDeclr happy_var_5 (reverse happy_var_2))}}}} + ) (\r -> happyReturn (happyIn69 r)) + +happyReduce_237 = happyMonadReduce 2# 62# happyReduction_237 +happyReduction_237 (happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut69 happy_x_2 of { happy_var_2 -> + ( withNodeInfo happy_var_1 $ ptrDeclr happy_var_2 [])}} + ) (\r -> happyReturn (happyIn69 r)) + +happyReduce_238 = happyMonadReduce 3# 62# happyReduction_238 +happyReduction_238 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut62 happy_x_2 of { happy_var_2 -> + case happyOut69 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ ptrDeclr happy_var_3 (reverse happy_var_2))}}} + ) (\r -> happyReturn (happyIn69 r)) + +happyReduce_239 = happyMonadReduce 4# 62# happyReduction_239 +happyReduction_239 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut62 happy_x_2 of { happy_var_2 -> + case happyOut127 happy_x_3 of { happy_var_3 -> + case happyOut69 happy_x_4 of { happy_var_4 -> + ( withAttribute happy_var_1 happy_var_3 $ ptrDeclr happy_var_4 (reverse happy_var_2))}}}} + ) (\r -> happyReturn (happyIn69 r)) + +happyReduce_240 = happySpecReduce_3 63# happyReduction_240 +happyReduction_240 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut69 happy_x_2 of { happy_var_2 -> + happyIn70 + (happy_var_2 + )} + +happyReduce_241 = happyReduce 4# 63# happyReduction_241 +happyReduction_241 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOut71 happy_x_2 of { happy_var_2 -> + case happyOut85 happy_x_3 of { happy_var_3 -> + happyIn70 + (happy_var_3 happy_var_2 + ) `HappyStk` happyRest}} + +happyReduce_242 = happyReduce 4# 63# happyReduction_242 +happyReduction_242 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOut69 happy_x_2 of { happy_var_2 -> + case happyOut85 happy_x_4 of { happy_var_4 -> + happyIn70 + (happy_var_4 happy_var_2 + ) `HappyStk` happyRest}} + +happyReduce_243 = happyMonadReduce 1# 64# happyReduction_243 +happyReduction_243 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { (CTokTyIdent _ happy_var_1) -> + ( withNodeInfo happy_var_1 $ mkVarDeclr happy_var_1)} + ) (\r -> happyReturn (happyIn71 r)) + +happyReduce_244 = happySpecReduce_3 64# happyReduction_244 +happyReduction_244 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut71 happy_x_2 of { happy_var_2 -> + happyIn71 + (happy_var_2 + )} + +happyReduce_245 = happySpecReduce_1 65# happyReduction_245 +happyReduction_245 happy_x_1 + = case happyOut73 happy_x_1 of { happy_var_1 -> + happyIn72 + (happy_var_1 + )} + +happyReduce_246 = happySpecReduce_1 65# happyReduction_246 +happyReduction_246 happy_x_1 + = case happyOut75 happy_x_1 of { happy_var_1 -> + happyIn72 + (happy_var_1 + )} + +happyReduce_247 = happySpecReduce_1 66# happyReduction_247 +happyReduction_247 happy_x_1 + = case happyOut74 happy_x_1 of { happy_var_1 -> + happyIn73 + (happy_var_1 + )} + +happyReduce_248 = happyMonadReduce 2# 66# happyReduction_248 +happyReduction_248 (happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut72 happy_x_2 of { happy_var_2 -> + ( withNodeInfo happy_var_1 $ ptrDeclr happy_var_2 [])}} + ) (\r -> happyReturn (happyIn73 r)) + +happyReduce_249 = happyMonadReduce 3# 66# happyReduction_249 +happyReduction_249 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut127 happy_x_2 of { happy_var_2 -> + case happyOut72 happy_x_3 of { happy_var_3 -> + ( withAttribute happy_var_1 happy_var_2 $ ptrDeclr happy_var_3 [])}}} + ) (\r -> happyReturn (happyIn73 r)) + +happyReduce_250 = happyMonadReduce 3# 66# happyReduction_250 +happyReduction_250 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut62 happy_x_2 of { happy_var_2 -> + case happyOut72 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ ptrDeclr happy_var_3 (reverse happy_var_2))}}} + ) (\r -> happyReturn (happyIn73 r)) + +happyReduce_251 = happyMonadReduce 4# 66# happyReduction_251 +happyReduction_251 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut62 happy_x_2 of { happy_var_2 -> + case happyOut127 happy_x_3 of { happy_var_3 -> + case happyOut72 happy_x_4 of { happy_var_4 -> + ( withAttribute happy_var_1 happy_var_3 $ ptrDeclr happy_var_4 (reverse happy_var_2))}}}} + ) (\r -> happyReturn (happyIn73 r)) + +happyReduce_252 = happySpecReduce_2 67# happyReduction_252 +happyReduction_252 happy_x_2 + happy_x_1 + = case happyOut75 happy_x_1 of { happy_var_1 -> + case happyOut85 happy_x_2 of { happy_var_2 -> + happyIn74 + (happy_var_2 happy_var_1 + )}} + +happyReduce_253 = happySpecReduce_3 67# happyReduction_253 +happyReduction_253 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut73 happy_x_2 of { happy_var_2 -> + happyIn74 + (happy_var_2 + )} + +happyReduce_254 = happyReduce 4# 67# happyReduction_254 +happyReduction_254 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOut73 happy_x_2 of { happy_var_2 -> + case happyOut85 happy_x_4 of { happy_var_4 -> + happyIn74 + (happy_var_4 happy_var_2 + ) `HappyStk` happyRest}} + +happyReduce_255 = happyReduce 4# 67# happyReduction_255 +happyReduction_255 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOut127 happy_x_2 of { happy_var_2 -> + case happyOut73 happy_x_3 of { happy_var_3 -> + happyIn74 + (appendDeclrAttrs happy_var_2 happy_var_3 + ) `HappyStk` happyRest}} + +happyReduce_256 = happyReduce 5# 67# happyReduction_256 +happyReduction_256 (happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOut127 happy_x_2 of { happy_var_2 -> + case happyOut73 happy_x_3 of { happy_var_3 -> + case happyOut85 happy_x_5 of { happy_var_5 -> + happyIn74 + (appendDeclrAttrs happy_var_2 (happy_var_5 happy_var_3) + ) `HappyStk` happyRest}}} + +happyReduce_257 = happyMonadReduce 1# 68# happyReduction_257 +happyReduction_257 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { (CTokIdent _ happy_var_1) -> + ( withNodeInfo happy_var_1 $ mkVarDeclr happy_var_1)} + ) (\r -> happyReturn (happyIn75 r)) + +happyReduce_258 = happySpecReduce_3 68# happyReduction_258 +happyReduction_258 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut75 happy_x_2 of { happy_var_2 -> + happyIn75 + (happy_var_2 + )} + +happyReduce_259 = happyReduce 4# 68# happyReduction_259 +happyReduction_259 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOut127 happy_x_2 of { happy_var_2 -> + case happyOut75 happy_x_3 of { happy_var_3 -> + happyIn75 + (appendDeclrAttrs happy_var_2 happy_var_3 + ) `HappyStk` happyRest}} + +happyReduce_260 = happySpecReduce_1 69# happyReduction_260 +happyReduction_260 happy_x_1 + = case happyOut77 happy_x_1 of { happy_var_1 -> + happyIn76 + (reverseDeclr happy_var_1 + )} + +happyReduce_261 = happySpecReduce_1 70# happyReduction_261 +happyReduction_261 happy_x_1 + = case happyOut78 happy_x_1 of { happy_var_1 -> + happyIn77 + (happy_var_1 + )} + +happyReduce_262 = happyMonadReduce 2# 70# happyReduction_262 +happyReduction_262 (happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut77 happy_x_2 of { happy_var_2 -> + ( withNodeInfo happy_var_1 $ ptrDeclr happy_var_2 [])}} + ) (\r -> happyReturn (happyIn77 r)) + +happyReduce_263 = happyMonadReduce 3# 70# happyReduction_263 +happyReduction_263 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut62 happy_x_2 of { happy_var_2 -> + case happyOut77 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ ptrDeclr happy_var_3 (reverse happy_var_2))}}} + ) (\r -> happyReturn (happyIn77 r)) + +happyReduce_264 = happyMonadReduce 4# 71# happyReduction_264 +happyReduction_264 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut75 happy_x_1 of { happy_var_1 -> + case happyOut82 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ funDeclr happy_var_1 (Left $ reverse happy_var_3) [])}} + ) (\r -> happyReturn (happyIn78 r)) + +happyReduce_265 = happySpecReduce_3 71# happyReduction_265 +happyReduction_265 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut77 happy_x_2 of { happy_var_2 -> + happyIn78 + (happy_var_2 + )} + +happyReduce_266 = happyReduce 4# 71# happyReduction_266 +happyReduction_266 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOut77 happy_x_2 of { happy_var_2 -> + case happyOut85 happy_x_4 of { happy_var_4 -> + happyIn78 + (happy_var_4 happy_var_2 + ) `HappyStk` happyRest}} + +happyReduce_267 = happySpecReduce_0 72# happyReduction_267 +happyReduction_267 = happyIn79 + (([], False) + ) + +happyReduce_268 = happySpecReduce_1 72# happyReduction_268 +happyReduction_268 happy_x_1 + = case happyOut80 happy_x_1 of { happy_var_1 -> + happyIn79 + ((reverse happy_var_1, False) + )} + +happyReduce_269 = happySpecReduce_3 72# happyReduction_269 +happyReduction_269 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut80 happy_x_1 of { happy_var_1 -> + happyIn79 + ((reverse happy_var_1, True) + )} + +happyReduce_270 = happySpecReduce_1 73# happyReduction_270 +happyReduction_270 happy_x_1 + = case happyOut81 happy_x_1 of { happy_var_1 -> + happyIn80 + (singleton happy_var_1 + )} + +happyReduce_271 = happySpecReduce_3 73# happyReduction_271 +happyReduction_271 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut80 happy_x_1 of { happy_var_1 -> + case happyOut81 happy_x_3 of { happy_var_3 -> + happyIn80 + (happy_var_1 `snoc` happy_var_3 + )}} + +happyReduce_272 = happyMonadReduce 1# 74# happyReduction_272 +happyReduction_272 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut37 happy_x_1 of { happy_var_1 -> + ( withNodeInfo happy_var_1 $ CDecl happy_var_1 [])} + ) (\r -> happyReturn (happyIn81 r)) + +happyReduce_273 = happyMonadReduce 2# 74# happyReduction_273 +happyReduction_273 (happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut37 happy_x_1 of { happy_var_1 -> + case happyOut84 happy_x_2 of { happy_var_2 -> + ( withNodeInfo happy_var_1 $ CDecl happy_var_1 [(Just (reverseDeclr happy_var_2), Nothing, Nothing)])}} + ) (\r -> happyReturn (happyIn81 r)) + +happyReduce_274 = happyMonadReduce 3# 74# happyReduction_274 +happyReduction_274 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut37 happy_x_1 of { happy_var_1 -> + case happyOut72 happy_x_2 of { happy_var_2 -> + case happyOut126 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ CDecl happy_var_1 [(Just (reverseDeclr $! appendDeclrAttrs happy_var_3 happy_var_2), Nothing, Nothing)])}}} + ) (\r -> happyReturn (happyIn81 r)) + +happyReduce_275 = happyMonadReduce 3# 74# happyReduction_275 +happyReduction_275 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut37 happy_x_1 of { happy_var_1 -> + case happyOut66 happy_x_2 of { happy_var_2 -> + case happyOut126 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ CDecl happy_var_1 [(Just (reverseDeclr $! appendDeclrAttrs happy_var_3 happy_var_2), Nothing, Nothing)])}}} + ) (\r -> happyReturn (happyIn81 r)) + +happyReduce_276 = happyMonadReduce 1# 74# happyReduction_276 +happyReduction_276 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut38 happy_x_1 of { happy_var_1 -> + ( withNodeInfo happy_var_1 $ CDecl (reverse happy_var_1) [])} + ) (\r -> happyReturn (happyIn81 r)) + +happyReduce_277 = happyMonadReduce 2# 74# happyReduction_277 +happyReduction_277 (happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut38 happy_x_1 of { happy_var_1 -> + case happyOut84 happy_x_2 of { happy_var_2 -> + ( withNodeInfo happy_var_1 $ CDecl (reverse happy_var_1) [(Just (reverseDeclr happy_var_2), Nothing, Nothing)])}} + ) (\r -> happyReturn (happyIn81 r)) + +happyReduce_278 = happyMonadReduce 3# 74# happyReduction_278 +happyReduction_278 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut38 happy_x_1 of { happy_var_1 -> + case happyOut72 happy_x_2 of { happy_var_2 -> + case happyOut126 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ CDecl (reverse happy_var_1) [(Just (reverseDeclr $! appendDeclrAttrs happy_var_3 happy_var_2), Nothing, Nothing)])}}} + ) (\r -> happyReturn (happyIn81 r)) + +happyReduce_279 = happyMonadReduce 1# 74# happyReduction_279 +happyReduction_279 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut41 happy_x_1 of { happy_var_1 -> + ( withNodeInfo happy_var_1 $ CDecl happy_var_1 [])} + ) (\r -> happyReturn (happyIn81 r)) + +happyReduce_280 = happyMonadReduce 2# 74# happyReduction_280 +happyReduction_280 (happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut41 happy_x_1 of { happy_var_1 -> + case happyOut84 happy_x_2 of { happy_var_2 -> + ( withNodeInfo happy_var_1 $ CDecl happy_var_1 [(Just (reverseDeclr happy_var_2), Nothing, Nothing)])}} + ) (\r -> happyReturn (happyIn81 r)) + +happyReduce_281 = happyMonadReduce 3# 74# happyReduction_281 +happyReduction_281 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut41 happy_x_1 of { happy_var_1 -> + case happyOut72 happy_x_2 of { happy_var_2 -> + case happyOut126 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ CDecl happy_var_1 [(Just (reverseDeclr $! appendDeclrAttrs happy_var_3 happy_var_2), Nothing, Nothing)])}}} + ) (\r -> happyReturn (happyIn81 r)) + +happyReduce_282 = happyMonadReduce 3# 74# happyReduction_282 +happyReduction_282 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut41 happy_x_1 of { happy_var_1 -> + case happyOut66 happy_x_2 of { happy_var_2 -> + case happyOut126 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ CDecl happy_var_1 [(Just (reverseDeclr $! appendDeclrAttrs happy_var_3 happy_var_2), Nothing, Nothing)])}}} + ) (\r -> happyReturn (happyIn81 r)) + +happyReduce_283 = happyMonadReduce 1# 74# happyReduction_283 +happyReduction_283 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut62 happy_x_1 of { happy_var_1 -> + ( withNodeInfo happy_var_1 $ CDecl (liftTypeQuals happy_var_1) [])} + ) (\r -> happyReturn (happyIn81 r)) + +happyReduce_284 = happyMonadReduce 2# 74# happyReduction_284 +happyReduction_284 (happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut62 happy_x_1 of { happy_var_1 -> + case happyOut128 happy_x_2 of { happy_var_2 -> + ( withNodeInfo happy_var_1 $ CDecl (liftTypeQuals happy_var_1 ++ liftCAttrs happy_var_2) [])}} + ) (\r -> happyReturn (happyIn81 r)) + +happyReduce_285 = happyMonadReduce 2# 74# happyReduction_285 +happyReduction_285 (happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut62 happy_x_1 of { happy_var_1 -> + case happyOut84 happy_x_2 of { happy_var_2 -> + ( withNodeInfo happy_var_1 $ CDecl (liftTypeQuals happy_var_1) [(Just (reverseDeclr happy_var_2), Nothing, Nothing)])}} + ) (\r -> happyReturn (happyIn81 r)) + +happyReduce_286 = happyMonadReduce 3# 74# happyReduction_286 +happyReduction_286 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut62 happy_x_1 of { happy_var_1 -> + case happyOut72 happy_x_2 of { happy_var_2 -> + case happyOut126 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ CDecl (liftTypeQuals happy_var_1) [(Just (reverseDeclr$ appendDeclrAttrs happy_var_3 happy_var_2), Nothing, Nothing)])}}} + ) (\r -> happyReturn (happyIn81 r)) + +happyReduce_287 = happySpecReduce_1 75# happyReduction_287 +happyReduction_287 happy_x_1 + = case happyOutTok happy_x_1 of { (CTokIdent _ happy_var_1) -> + happyIn82 + (singleton happy_var_1 + )} + +happyReduce_288 = happySpecReduce_3 75# happyReduction_288 +happyReduction_288 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut82 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_3 of { (CTokIdent _ happy_var_3) -> + happyIn82 + (happy_var_1 `snoc` happy_var_3 + )}} + +happyReduce_289 = happyMonadReduce 1# 76# happyReduction_289 +happyReduction_289 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut41 happy_x_1 of { happy_var_1 -> + ( withNodeInfo happy_var_1 $ CDecl happy_var_1 [])} + ) (\r -> happyReturn (happyIn83 r)) + +happyReduce_290 = happyMonadReduce 2# 76# happyReduction_290 +happyReduction_290 (happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut41 happy_x_1 of { happy_var_1 -> + case happyOut84 happy_x_2 of { happy_var_2 -> + ( withNodeInfo happy_var_1 $ CDecl happy_var_1 [(Just (reverseDeclr happy_var_2), Nothing, Nothing)])}} + ) (\r -> happyReturn (happyIn83 r)) + +happyReduce_291 = happyMonadReduce 2# 76# happyReduction_291 +happyReduction_291 (happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut62 happy_x_1 of { happy_var_1 -> + case happyOut128 happy_x_2 of { happy_var_2 -> + ( withNodeInfo happy_var_1 $ CDecl (liftTypeQuals happy_var_1 ++ liftCAttrs happy_var_2) [])}} + ) (\r -> happyReturn (happyIn83 r)) + +happyReduce_292 = happyMonadReduce 2# 76# happyReduction_292 +happyReduction_292 (happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut62 happy_x_1 of { happy_var_1 -> + case happyOut84 happy_x_2 of { happy_var_2 -> + ( withNodeInfo happy_var_1 $ CDecl (liftTypeQuals happy_var_1) [(Just (reverseDeclr happy_var_2), Nothing, Nothing)])}} + ) (\r -> happyReturn (happyIn83 r)) + +happyReduce_293 = happySpecReduce_1 77# happyReduction_293 +happyReduction_293 happy_x_1 + = case happyOut88 happy_x_1 of { happy_var_1 -> + happyIn84 + (happy_var_1 + )} + +happyReduce_294 = happySpecReduce_1 77# happyReduction_294 +happyReduction_294 happy_x_1 + = case happyOut89 happy_x_1 of { happy_var_1 -> + happyIn84 + (happy_var_1 + )} + +happyReduce_295 = happySpecReduce_1 77# happyReduction_295 +happyReduction_295 happy_x_1 + = case happyOut85 happy_x_1 of { happy_var_1 -> + happyIn84 + (happy_var_1 emptyDeclr + )} + +happyReduce_296 = happySpecReduce_1 78# happyReduction_296 +happyReduction_296 happy_x_1 + = case happyOut86 happy_x_1 of { happy_var_1 -> + happyIn85 + (happy_var_1 + )} + +happyReduce_297 = happyMonadReduce 3# 78# happyReduction_297 +happyReduction_297 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut79 happy_x_2 of { happy_var_2 -> + ( withNodeInfo happy_var_1 $ \at declr -> case happy_var_2 of + (params, variadic) -> funDeclr declr (Right (params,variadic)) [] at)}} + ) (\r -> happyReturn (happyIn85 r)) + +happyReduce_298 = happySpecReduce_1 79# happyReduction_298 +happyReduction_298 happy_x_1 + = case happyOut87 happy_x_1 of { happy_var_1 -> + happyIn86 + (happy_var_1 + )} + +happyReduce_299 = happySpecReduce_2 79# happyReduction_299 +happyReduction_299 happy_x_2 + happy_x_1 + = case happyOut86 happy_x_1 of { happy_var_1 -> + case happyOut87 happy_x_2 of { happy_var_2 -> + happyIn86 + (\decl -> happy_var_2 (happy_var_1 decl) + )}} + +happyReduce_300 = happyMonadReduce 3# 80# happyReduction_300 +happyReduction_300 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut120 happy_x_2 of { happy_var_2 -> + ( withNodeInfo happy_var_1 $ \at declr -> arrDeclr declr [] False False happy_var_2 at)}} + ) (\r -> happyReturn (happyIn87 r)) + +happyReduce_301 = happyMonadReduce 4# 80# happyReduction_301 +happyReduction_301 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut127 happy_x_2 of { happy_var_2 -> + case happyOut120 happy_x_3 of { happy_var_3 -> + ( withAttributePF happy_var_1 happy_var_2 $ \at declr -> arrDeclr declr [] False False happy_var_3 at)}}} + ) (\r -> happyReturn (happyIn87 r)) + +happyReduce_302 = happyMonadReduce 4# 80# happyReduction_302 +happyReduction_302 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut62 happy_x_2 of { happy_var_2 -> + case happyOut120 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ \at declr -> arrDeclr declr (reverse happy_var_2) False False happy_var_3 at)}}} + ) (\r -> happyReturn (happyIn87 r)) + +happyReduce_303 = happyMonadReduce 5# 80# happyReduction_303 +happyReduction_303 (happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut62 happy_x_2 of { happy_var_2 -> + case happyOut127 happy_x_3 of { happy_var_3 -> + case happyOut120 happy_x_4 of { happy_var_4 -> + ( withAttributePF happy_var_1 happy_var_3 $ \at declr -> arrDeclr declr (reverse happy_var_2) False False happy_var_4 at)}}}} + ) (\r -> happyReturn (happyIn87 r)) + +happyReduce_304 = happyMonadReduce 5# 80# happyReduction_304 +happyReduction_304 (happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut126 happy_x_3 of { happy_var_3 -> + case happyOut115 happy_x_4 of { happy_var_4 -> + ( withAttributePF happy_var_1 happy_var_3 $ \at declr -> arrDeclr declr [] False True (Just happy_var_4) at)}}} + ) (\r -> happyReturn (happyIn87 r)) + +happyReduce_305 = happyMonadReduce 6# 80# happyReduction_305 +happyReduction_305 (happy_x_6 `HappyStk` + happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut62 happy_x_3 of { happy_var_3 -> + case happyOut126 happy_x_4 of { happy_var_4 -> + case happyOut115 happy_x_5 of { happy_var_5 -> + ( withAttributePF happy_var_1 happy_var_4 $ \at declr -> arrDeclr declr (reverse happy_var_3) False True (Just happy_var_5) at)}}}} + ) (\r -> happyReturn (happyIn87 r)) + +happyReduce_306 = happyMonadReduce 7# 80# happyReduction_306 +happyReduction_306 (happy_x_7 `HappyStk` + happy_x_6 `HappyStk` + happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut62 happy_x_2 of { happy_var_2 -> + case happyOut126 happy_x_3 of { happy_var_3 -> + case happyOut126 happy_x_5 of { happy_var_5 -> + case happyOut115 happy_x_6 of { happy_var_6 -> + ( withAttributePF happy_var_1 (happy_var_3 ++ happy_var_5) $ \at declr -> arrDeclr declr (reverse happy_var_2) False True (Just happy_var_6) at)}}}}} + ) (\r -> happyReturn (happyIn87 r)) + +happyReduce_307 = happyMonadReduce 4# 80# happyReduction_307 +happyReduction_307 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut126 happy_x_3 of { happy_var_3 -> + ( withAttributePF happy_var_1 happy_var_3 $ \at declr -> arrDeclr declr [] True False Nothing at)}} + ) (\r -> happyReturn (happyIn87 r)) + +happyReduce_308 = happyMonadReduce 5# 80# happyReduction_308 +happyReduction_308 (happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut127 happy_x_2 of { happy_var_2 -> + case happyOut126 happy_x_4 of { happy_var_4 -> + ( withAttributePF happy_var_1 (happy_var_2 ++ happy_var_4) $ \at declr -> arrDeclr declr [] True False Nothing at)}}} + ) (\r -> happyReturn (happyIn87 r)) + +happyReduce_309 = happyMonadReduce 5# 80# happyReduction_309 +happyReduction_309 (happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut62 happy_x_2 of { happy_var_2 -> + case happyOut126 happy_x_4 of { happy_var_4 -> + ( withAttributePF happy_var_1 happy_var_4 $ \at declr -> arrDeclr declr (reverse happy_var_2) True False Nothing at)}}} + ) (\r -> happyReturn (happyIn87 r)) + +happyReduce_310 = happyMonadReduce 6# 80# happyReduction_310 +happyReduction_310 (happy_x_6 `HappyStk` + happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut62 happy_x_2 of { happy_var_2 -> + case happyOut127 happy_x_3 of { happy_var_3 -> + case happyOut126 happy_x_5 of { happy_var_5 -> + ( withAttributePF happy_var_1 (happy_var_3 ++ happy_var_5) $ \at declr -> arrDeclr declr (reverse happy_var_2) True False Nothing at)}}}} + ) (\r -> happyReturn (happyIn87 r)) + +happyReduce_311 = happyMonadReduce 1# 81# happyReduction_311 +happyReduction_311 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + ( withNodeInfo happy_var_1 $ ptrDeclr emptyDeclr [])} + ) (\r -> happyReturn (happyIn88 r)) + +happyReduce_312 = happyMonadReduce 3# 81# happyReduction_312 +happyReduction_312 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut62 happy_x_2 of { happy_var_2 -> + case happyOut126 happy_x_3 of { happy_var_3 -> + ( withAttribute happy_var_1 happy_var_3 $ ptrDeclr emptyDeclr (reverse happy_var_2))}}} + ) (\r -> happyReturn (happyIn88 r)) + +happyReduce_313 = happyMonadReduce 2# 81# happyReduction_313 +happyReduction_313 (happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut84 happy_x_2 of { happy_var_2 -> + ( withNodeInfo happy_var_1 $ ptrDeclr happy_var_2 [])}} + ) (\r -> happyReturn (happyIn88 r)) + +happyReduce_314 = happyMonadReduce 3# 81# happyReduction_314 +happyReduction_314 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut62 happy_x_2 of { happy_var_2 -> + case happyOut84 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ ptrDeclr happy_var_3 (reverse happy_var_2))}}} + ) (\r -> happyReturn (happyIn88 r)) + +happyReduce_315 = happyMonadReduce 2# 81# happyReduction_315 +happyReduction_315 (happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut127 happy_x_2 of { happy_var_2 -> + ( withAttribute happy_var_1 happy_var_2 $ ptrDeclr emptyDeclr [])}} + ) (\r -> happyReturn (happyIn88 r)) + +happyReduce_316 = happyMonadReduce 3# 81# happyReduction_316 +happyReduction_316 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut127 happy_x_2 of { happy_var_2 -> + case happyOut84 happy_x_3 of { happy_var_3 -> + ( withAttribute happy_var_1 happy_var_2 $ ptrDeclr happy_var_3 [])}}} + ) (\r -> happyReturn (happyIn88 r)) + +happyReduce_317 = happySpecReduce_3 82# happyReduction_317 +happyReduction_317 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut88 happy_x_2 of { happy_var_2 -> + happyIn89 + (happy_var_2 + )} + +happyReduce_318 = happySpecReduce_3 82# happyReduction_318 +happyReduction_318 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut89 happy_x_2 of { happy_var_2 -> + happyIn89 + (happy_var_2 + )} + +happyReduce_319 = happySpecReduce_3 82# happyReduction_319 +happyReduction_319 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut85 happy_x_2 of { happy_var_2 -> + happyIn89 + (happy_var_2 emptyDeclr + )} + +happyReduce_320 = happyReduce 4# 82# happyReduction_320 +happyReduction_320 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOut88 happy_x_2 of { happy_var_2 -> + case happyOut85 happy_x_4 of { happy_var_4 -> + happyIn89 + (happy_var_4 happy_var_2 + ) `HappyStk` happyRest}} + +happyReduce_321 = happyReduce 4# 82# happyReduction_321 +happyReduction_321 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOut127 happy_x_2 of { happy_var_2 -> + case happyOut88 happy_x_3 of { happy_var_3 -> + happyIn89 + (appendDeclrAttrs happy_var_2 happy_var_3 + ) `HappyStk` happyRest}} + +happyReduce_322 = happyReduce 4# 82# happyReduction_322 +happyReduction_322 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOut127 happy_x_2 of { happy_var_2 -> + case happyOut89 happy_x_3 of { happy_var_3 -> + happyIn89 + (appendDeclrAttrs happy_var_2 happy_var_3 + ) `HappyStk` happyRest}} + +happyReduce_323 = happyReduce 4# 82# happyReduction_323 +happyReduction_323 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOut127 happy_x_2 of { happy_var_2 -> + case happyOut85 happy_x_3 of { happy_var_3 -> + happyIn89 + (appendDeclrAttrs happy_var_2 (happy_var_3 emptyDeclr) + ) `HappyStk` happyRest}} + +happyReduce_324 = happyReduce 5# 82# happyReduction_324 +happyReduction_324 (happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOut127 happy_x_2 of { happy_var_2 -> + case happyOut88 happy_x_3 of { happy_var_3 -> + case happyOut85 happy_x_5 of { happy_var_5 -> + happyIn89 + (appendDeclrAttrs happy_var_2 (happy_var_5 happy_var_3) + ) `HappyStk` happyRest}}} + +happyReduce_325 = happySpecReduce_2 82# happyReduction_325 +happyReduction_325 happy_x_2 + happy_x_1 + = case happyOut89 happy_x_1 of { happy_var_1 -> + case happyOut128 happy_x_2 of { happy_var_2 -> + happyIn89 + (appendDeclrAttrs happy_var_2 happy_var_1 + )}} + +happyReduce_326 = happyMonadReduce 1# 83# happyReduction_326 +happyReduction_326 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut115 happy_x_1 of { happy_var_1 -> + ( withNodeInfo happy_var_1 $ CInitExpr happy_var_1)} + ) (\r -> happyReturn (happyIn90 r)) + +happyReduce_327 = happyMonadReduce 3# 83# happyReduction_327 +happyReduction_327 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut92 happy_x_2 of { happy_var_2 -> + ( withNodeInfo happy_var_1 $ CInitList (reverse happy_var_2))}} + ) (\r -> happyReturn (happyIn90 r)) + +happyReduce_328 = happyMonadReduce 4# 83# happyReduction_328 +happyReduction_328 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut92 happy_x_2 of { happy_var_2 -> + ( withNodeInfo happy_var_1 $ CInitList (reverse happy_var_2))}} + ) (\r -> happyReturn (happyIn90 r)) + +happyReduce_329 = happySpecReduce_0 84# happyReduction_329 +happyReduction_329 = happyIn91 + (Nothing + ) + +happyReduce_330 = happySpecReduce_2 84# happyReduction_330 +happyReduction_330 happy_x_2 + happy_x_1 + = case happyOut90 happy_x_2 of { happy_var_2 -> + happyIn91 + (Just happy_var_2 + )} + +happyReduce_331 = happySpecReduce_0 85# happyReduction_331 +happyReduction_331 = happyIn92 + (empty + ) + +happyReduce_332 = happySpecReduce_1 85# happyReduction_332 +happyReduction_332 happy_x_1 + = case happyOut90 happy_x_1 of { happy_var_1 -> + happyIn92 + (singleton ([],happy_var_1) + )} + +happyReduce_333 = happySpecReduce_2 85# happyReduction_333 +happyReduction_333 happy_x_2 + happy_x_1 + = case happyOut93 happy_x_1 of { happy_var_1 -> + case happyOut90 happy_x_2 of { happy_var_2 -> + happyIn92 + (singleton (happy_var_1,happy_var_2) + )}} + +happyReduce_334 = happySpecReduce_3 85# happyReduction_334 +happyReduction_334 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut92 happy_x_1 of { happy_var_1 -> + case happyOut90 happy_x_3 of { happy_var_3 -> + happyIn92 + (happy_var_1 `snoc` ([],happy_var_3) + )}} + +happyReduce_335 = happyReduce 4# 85# happyReduction_335 +happyReduction_335 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOut92 happy_x_1 of { happy_var_1 -> + case happyOut93 happy_x_3 of { happy_var_3 -> + case happyOut90 happy_x_4 of { happy_var_4 -> + happyIn92 + (happy_var_1 `snoc` (happy_var_3,happy_var_4) + ) `HappyStk` happyRest}}} + +happyReduce_336 = happySpecReduce_2 86# happyReduction_336 +happyReduction_336 happy_x_2 + happy_x_1 + = case happyOut94 happy_x_1 of { happy_var_1 -> + happyIn93 + (reverse happy_var_1 + )} + +happyReduce_337 = happyMonadReduce 2# 86# happyReduction_337 +happyReduction_337 (happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut125 happy_x_1 of { happy_var_1 -> + ( withNodeInfo happy_var_1 $ \at -> [CMemberDesig happy_var_1 at])} + ) (\r -> happyReturn (happyIn93 r)) + +happyReduce_338 = happySpecReduce_1 86# happyReduction_338 +happyReduction_338 happy_x_1 + = case happyOut96 happy_x_1 of { happy_var_1 -> + happyIn93 + ([happy_var_1] + )} + +happyReduce_339 = happySpecReduce_1 87# happyReduction_339 +happyReduction_339 happy_x_1 + = case happyOut95 happy_x_1 of { happy_var_1 -> + happyIn94 + (singleton happy_var_1 + )} + +happyReduce_340 = happySpecReduce_2 87# happyReduction_340 +happyReduction_340 happy_x_2 + happy_x_1 + = case happyOut94 happy_x_1 of { happy_var_1 -> + case happyOut95 happy_x_2 of { happy_var_2 -> + happyIn94 + (happy_var_1 `snoc` happy_var_2 + )}} + +happyReduce_341 = happyMonadReduce 3# 88# happyReduction_341 +happyReduction_341 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut121 happy_x_2 of { happy_var_2 -> + ( withNodeInfo happy_var_1 $ CArrDesig happy_var_2)}} + ) (\r -> happyReturn (happyIn95 r)) + +happyReduce_342 = happyMonadReduce 2# 88# happyReduction_342 +happyReduction_342 (happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut125 happy_x_2 of { happy_var_2 -> + ( withNodeInfo happy_var_1 $ CMemberDesig happy_var_2)}} + ) (\r -> happyReturn (happyIn95 r)) + +happyReduce_343 = happySpecReduce_1 88# happyReduction_343 +happyReduction_343 happy_x_1 + = case happyOut96 happy_x_1 of { happy_var_1 -> + happyIn95 + (happy_var_1 + )} + +happyReduce_344 = happyMonadReduce 5# 89# happyReduction_344 +happyReduction_344 (happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut121 happy_x_2 of { happy_var_2 -> + case happyOut121 happy_x_4 of { happy_var_4 -> + ( withNodeInfo happy_var_1 $ CRangeDesig happy_var_2 happy_var_4)}}} + ) (\r -> happyReturn (happyIn96 r)) + +happyReduce_345 = happyMonadReduce 1# 90# happyReduction_345 +happyReduction_345 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { (CTokIdent _ happy_var_1) -> + ( withNodeInfo happy_var_1 $ CVar happy_var_1)} + ) (\r -> happyReturn (happyIn97 r)) + +happyReduce_346 = happySpecReduce_1 90# happyReduction_346 +happyReduction_346 happy_x_1 + = case happyOut122 happy_x_1 of { happy_var_1 -> + happyIn97 + (CConst happy_var_1 + )} + +happyReduce_347 = happySpecReduce_1 90# happyReduction_347 +happyReduction_347 happy_x_1 + = case happyOut123 happy_x_1 of { happy_var_1 -> + happyIn97 + (CConst (liftStrLit happy_var_1) + )} + +happyReduce_348 = happySpecReduce_3 90# happyReduction_348 +happyReduction_348 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut117 happy_x_2 of { happy_var_2 -> + happyIn97 + (happy_var_2 + )} + +happyReduce_349 = happyMonadReduce 3# 90# happyReduction_349 +happyReduction_349 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut14 happy_x_2 of { happy_var_2 -> + ( withNodeInfo happy_var_1 $ CStatExpr happy_var_2)}} + ) (\r -> happyReturn (happyIn97 r)) + +happyReduce_350 = happyMonadReduce 6# 90# happyReduction_350 +happyReduction_350 (happy_x_6 `HappyStk` + happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut115 happy_x_3 of { happy_var_3 -> + case happyOut83 happy_x_5 of { happy_var_5 -> + ( withNodeInfo happy_var_1 $ CBuiltinExpr . CBuiltinVaArg happy_var_3 happy_var_5)}}} + ) (\r -> happyReturn (happyIn97 r)) + +happyReduce_351 = happyMonadReduce 6# 90# happyReduction_351 +happyReduction_351 (happy_x_6 `HappyStk` + happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut83 happy_x_3 of { happy_var_3 -> + case happyOut98 happy_x_5 of { happy_var_5 -> + ( withNodeInfo happy_var_1 $ CBuiltinExpr . CBuiltinOffsetOf happy_var_3 (reverse happy_var_5))}}} + ) (\r -> happyReturn (happyIn97 r)) + +happyReduce_352 = happyMonadReduce 6# 90# happyReduction_352 +happyReduction_352 (happy_x_6 `HappyStk` + happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut83 happy_x_3 of { happy_var_3 -> + case happyOut83 happy_x_5 of { happy_var_5 -> + ( withNodeInfo happy_var_1 $ CBuiltinExpr . CBuiltinTypesCompatible happy_var_3 happy_var_5)}}} + ) (\r -> happyReturn (happyIn97 r)) + +happyReduce_353 = happyMonadReduce 1# 91# happyReduction_353 +happyReduction_353 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut125 happy_x_1 of { happy_var_1 -> + ( withNodeInfo happy_var_1 $ singleton . CMemberDesig happy_var_1)} + ) (\r -> happyReturn (happyIn98 r)) + +happyReduce_354 = happyMonadReduce 3# 91# happyReduction_354 +happyReduction_354 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut98 happy_x_1 of { happy_var_1 -> + case happyOut125 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_3 $ (happy_var_1 `snoc`) . CMemberDesig happy_var_3)}} + ) (\r -> happyReturn (happyIn98 r)) + +happyReduce_355 = happyMonadReduce 4# 91# happyReduction_355 +happyReduction_355 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut98 happy_x_1 of { happy_var_1 -> + case happyOut117 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_3 $ (happy_var_1 `snoc`) . CArrDesig happy_var_3)}} + ) (\r -> happyReturn (happyIn98 r)) + +happyReduce_356 = happySpecReduce_1 92# happyReduction_356 +happyReduction_356 happy_x_1 + = case happyOut97 happy_x_1 of { happy_var_1 -> + happyIn99 + (happy_var_1 + )} + +happyReduce_357 = happyMonadReduce 4# 92# happyReduction_357 +happyReduction_357 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut99 happy_x_1 of { happy_var_1 -> + case happyOut117 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ CIndex happy_var_1 happy_var_3)}} + ) (\r -> happyReturn (happyIn99 r)) + +happyReduce_358 = happyMonadReduce 3# 92# happyReduction_358 +happyReduction_358 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut99 happy_x_1 of { happy_var_1 -> + ( withNodeInfo happy_var_1 $ CCall happy_var_1 [])} + ) (\r -> happyReturn (happyIn99 r)) + +happyReduce_359 = happyMonadReduce 4# 92# happyReduction_359 +happyReduction_359 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut99 happy_x_1 of { happy_var_1 -> + case happyOut100 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ CCall happy_var_1 (reverse happy_var_3))}} + ) (\r -> happyReturn (happyIn99 r)) + +happyReduce_360 = happyMonadReduce 3# 92# happyReduction_360 +happyReduction_360 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut99 happy_x_1 of { happy_var_1 -> + case happyOut125 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ CMember happy_var_1 happy_var_3 False)}} + ) (\r -> happyReturn (happyIn99 r)) + +happyReduce_361 = happyMonadReduce 3# 92# happyReduction_361 +happyReduction_361 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut99 happy_x_1 of { happy_var_1 -> + case happyOut125 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ CMember happy_var_1 happy_var_3 True)}} + ) (\r -> happyReturn (happyIn99 r)) + +happyReduce_362 = happyMonadReduce 2# 92# happyReduction_362 +happyReduction_362 (happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut99 happy_x_1 of { happy_var_1 -> + ( withNodeInfo happy_var_1 $ CUnary CPostIncOp happy_var_1)} + ) (\r -> happyReturn (happyIn99 r)) + +happyReduce_363 = happyMonadReduce 2# 92# happyReduction_363 +happyReduction_363 (happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut99 happy_x_1 of { happy_var_1 -> + ( withNodeInfo happy_var_1 $ CUnary CPostDecOp happy_var_1)} + ) (\r -> happyReturn (happyIn99 r)) + +happyReduce_364 = happyMonadReduce 6# 92# happyReduction_364 +happyReduction_364 (happy_x_6 `HappyStk` + happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut83 happy_x_2 of { happy_var_2 -> + case happyOut92 happy_x_5 of { happy_var_5 -> + ( withNodeInfo happy_var_1 $ CCompoundLit happy_var_2 (reverse happy_var_5))}}} + ) (\r -> happyReturn (happyIn99 r)) + +happyReduce_365 = happyMonadReduce 7# 92# happyReduction_365 +happyReduction_365 (happy_x_7 `HappyStk` + happy_x_6 `HappyStk` + happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut83 happy_x_2 of { happy_var_2 -> + case happyOut92 happy_x_5 of { happy_var_5 -> + ( withNodeInfo happy_var_1 $ CCompoundLit happy_var_2 (reverse happy_var_5))}}} + ) (\r -> happyReturn (happyIn99 r)) + +happyReduce_366 = happySpecReduce_1 93# happyReduction_366 +happyReduction_366 happy_x_1 + = case happyOut115 happy_x_1 of { happy_var_1 -> + happyIn100 + (singleton happy_var_1 + )} + +happyReduce_367 = happySpecReduce_3 93# happyReduction_367 +happyReduction_367 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut100 happy_x_1 of { happy_var_1 -> + case happyOut115 happy_x_3 of { happy_var_3 -> + happyIn100 + (happy_var_1 `snoc` happy_var_3 + )}} + +happyReduce_368 = happySpecReduce_1 94# happyReduction_368 +happyReduction_368 happy_x_1 + = case happyOut99 happy_x_1 of { happy_var_1 -> + happyIn101 + (happy_var_1 + )} + +happyReduce_369 = happyMonadReduce 2# 94# happyReduction_369 +happyReduction_369 (happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut101 happy_x_2 of { happy_var_2 -> + ( withNodeInfo happy_var_1 $ CUnary CPreIncOp happy_var_2)}} + ) (\r -> happyReturn (happyIn101 r)) + +happyReduce_370 = happyMonadReduce 2# 94# happyReduction_370 +happyReduction_370 (happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut101 happy_x_2 of { happy_var_2 -> + ( withNodeInfo happy_var_1 $ CUnary CPreDecOp happy_var_2)}} + ) (\r -> happyReturn (happyIn101 r)) + +happyReduce_371 = happySpecReduce_2 94# happyReduction_371 +happyReduction_371 happy_x_2 + happy_x_1 + = case happyOut103 happy_x_2 of { happy_var_2 -> + happyIn101 + (happy_var_2 + )} + +happyReduce_372 = happyMonadReduce 2# 94# happyReduction_372 +happyReduction_372 (happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut102 happy_x_1 of { happy_var_1 -> + case happyOut103 happy_x_2 of { happy_var_2 -> + ( withNodeInfo happy_var_1 $ CUnary (unL happy_var_1) happy_var_2)}} + ) (\r -> happyReturn (happyIn101 r)) + +happyReduce_373 = happyMonadReduce 2# 94# happyReduction_373 +happyReduction_373 (happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut101 happy_x_2 of { happy_var_2 -> + ( withNodeInfo happy_var_1 $ CSizeofExpr happy_var_2)}} + ) (\r -> happyReturn (happyIn101 r)) + +happyReduce_374 = happyMonadReduce 4# 94# happyReduction_374 +happyReduction_374 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut83 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ CSizeofType happy_var_3)}} + ) (\r -> happyReturn (happyIn101 r)) + +happyReduce_375 = happyMonadReduce 2# 94# happyReduction_375 +happyReduction_375 (happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut101 happy_x_2 of { happy_var_2 -> + ( withNodeInfo happy_var_1 $ CAlignofExpr happy_var_2)}} + ) (\r -> happyReturn (happyIn101 r)) + +happyReduce_376 = happyMonadReduce 4# 94# happyReduction_376 +happyReduction_376 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut83 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ CAlignofType happy_var_3)}} + ) (\r -> happyReturn (happyIn101 r)) + +happyReduce_377 = happyMonadReduce 2# 94# happyReduction_377 +happyReduction_377 (happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut101 happy_x_2 of { happy_var_2 -> + ( withNodeInfo happy_var_1 $ CComplexReal happy_var_2)}} + ) (\r -> happyReturn (happyIn101 r)) + +happyReduce_378 = happyMonadReduce 2# 94# happyReduction_378 +happyReduction_378 (happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut101 happy_x_2 of { happy_var_2 -> + ( withNodeInfo happy_var_1 $ CComplexImag happy_var_2)}} + ) (\r -> happyReturn (happyIn101 r)) + +happyReduce_379 = happyMonadReduce 2# 94# happyReduction_379 +happyReduction_379 (happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut125 happy_x_2 of { happy_var_2 -> + ( withNodeInfo happy_var_1 $ CLabAddrExpr happy_var_2)}} + ) (\r -> happyReturn (happyIn101 r)) + +happyReduce_380 = happySpecReduce_1 95# happyReduction_380 +happyReduction_380 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn102 + (L CAdrOp (posOf happy_var_1) + )} + +happyReduce_381 = happySpecReduce_1 95# happyReduction_381 +happyReduction_381 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn102 + (L CIndOp (posOf happy_var_1) + )} + +happyReduce_382 = happySpecReduce_1 95# happyReduction_382 +happyReduction_382 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn102 + (L CPlusOp (posOf happy_var_1) + )} + +happyReduce_383 = happySpecReduce_1 95# happyReduction_383 +happyReduction_383 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn102 + (L CMinOp (posOf happy_var_1) + )} + +happyReduce_384 = happySpecReduce_1 95# happyReduction_384 +happyReduction_384 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn102 + (L CCompOp (posOf happy_var_1) + )} + +happyReduce_385 = happySpecReduce_1 95# happyReduction_385 +happyReduction_385 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn102 + (L CNegOp (posOf happy_var_1) + )} + +happyReduce_386 = happySpecReduce_1 96# happyReduction_386 +happyReduction_386 happy_x_1 + = case happyOut101 happy_x_1 of { happy_var_1 -> + happyIn103 + (happy_var_1 + )} + +happyReduce_387 = happyMonadReduce 4# 96# happyReduction_387 +happyReduction_387 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut83 happy_x_2 of { happy_var_2 -> + case happyOut103 happy_x_4 of { happy_var_4 -> + ( withNodeInfo happy_var_1 $ CCast happy_var_2 happy_var_4)}}} + ) (\r -> happyReturn (happyIn103 r)) + +happyReduce_388 = happySpecReduce_1 97# happyReduction_388 +happyReduction_388 happy_x_1 + = case happyOut103 happy_x_1 of { happy_var_1 -> + happyIn104 + (happy_var_1 + )} + +happyReduce_389 = happyMonadReduce 3# 97# happyReduction_389 +happyReduction_389 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut104 happy_x_1 of { happy_var_1 -> + case happyOut103 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ CBinary CMulOp happy_var_1 happy_var_3)}} + ) (\r -> happyReturn (happyIn104 r)) + +happyReduce_390 = happyMonadReduce 3# 97# happyReduction_390 +happyReduction_390 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut104 happy_x_1 of { happy_var_1 -> + case happyOut103 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ CBinary CDivOp happy_var_1 happy_var_3)}} + ) (\r -> happyReturn (happyIn104 r)) + +happyReduce_391 = happyMonadReduce 3# 97# happyReduction_391 +happyReduction_391 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut104 happy_x_1 of { happy_var_1 -> + case happyOut103 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ CBinary CRmdOp happy_var_1 happy_var_3)}} + ) (\r -> happyReturn (happyIn104 r)) + +happyReduce_392 = happySpecReduce_1 98# happyReduction_392 +happyReduction_392 happy_x_1 + = case happyOut104 happy_x_1 of { happy_var_1 -> + happyIn105 + (happy_var_1 + )} + +happyReduce_393 = happyMonadReduce 3# 98# happyReduction_393 +happyReduction_393 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut105 happy_x_1 of { happy_var_1 -> + case happyOut104 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ CBinary CAddOp happy_var_1 happy_var_3)}} + ) (\r -> happyReturn (happyIn105 r)) + +happyReduce_394 = happyMonadReduce 3# 98# happyReduction_394 +happyReduction_394 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut105 happy_x_1 of { happy_var_1 -> + case happyOut104 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ CBinary CSubOp happy_var_1 happy_var_3)}} + ) (\r -> happyReturn (happyIn105 r)) + +happyReduce_395 = happySpecReduce_1 99# happyReduction_395 +happyReduction_395 happy_x_1 + = case happyOut105 happy_x_1 of { happy_var_1 -> + happyIn106 + (happy_var_1 + )} + +happyReduce_396 = happyMonadReduce 3# 99# happyReduction_396 +happyReduction_396 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut106 happy_x_1 of { happy_var_1 -> + case happyOut105 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ CBinary CShlOp happy_var_1 happy_var_3)}} + ) (\r -> happyReturn (happyIn106 r)) + +happyReduce_397 = happyMonadReduce 3# 99# happyReduction_397 +happyReduction_397 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut106 happy_x_1 of { happy_var_1 -> + case happyOut105 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ CBinary CShrOp happy_var_1 happy_var_3)}} + ) (\r -> happyReturn (happyIn106 r)) + +happyReduce_398 = happySpecReduce_1 100# happyReduction_398 +happyReduction_398 happy_x_1 + = case happyOut106 happy_x_1 of { happy_var_1 -> + happyIn107 + (happy_var_1 + )} + +happyReduce_399 = happyMonadReduce 3# 100# happyReduction_399 +happyReduction_399 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut107 happy_x_1 of { happy_var_1 -> + case happyOut106 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ CBinary CLeOp happy_var_1 happy_var_3)}} + ) (\r -> happyReturn (happyIn107 r)) + +happyReduce_400 = happyMonadReduce 3# 100# happyReduction_400 +happyReduction_400 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut107 happy_x_1 of { happy_var_1 -> + case happyOut106 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ CBinary CGrOp happy_var_1 happy_var_3)}} + ) (\r -> happyReturn (happyIn107 r)) + +happyReduce_401 = happyMonadReduce 3# 100# happyReduction_401 +happyReduction_401 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut107 happy_x_1 of { happy_var_1 -> + case happyOut106 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ CBinary CLeqOp happy_var_1 happy_var_3)}} + ) (\r -> happyReturn (happyIn107 r)) + +happyReduce_402 = happyMonadReduce 3# 100# happyReduction_402 +happyReduction_402 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut107 happy_x_1 of { happy_var_1 -> + case happyOut106 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ CBinary CGeqOp happy_var_1 happy_var_3)}} + ) (\r -> happyReturn (happyIn107 r)) + +happyReduce_403 = happySpecReduce_1 101# happyReduction_403 +happyReduction_403 happy_x_1 + = case happyOut107 happy_x_1 of { happy_var_1 -> + happyIn108 + (happy_var_1 + )} + +happyReduce_404 = happyMonadReduce 3# 101# happyReduction_404 +happyReduction_404 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut108 happy_x_1 of { happy_var_1 -> + case happyOut107 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ CBinary CEqOp happy_var_1 happy_var_3)}} + ) (\r -> happyReturn (happyIn108 r)) + +happyReduce_405 = happyMonadReduce 3# 101# happyReduction_405 +happyReduction_405 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut108 happy_x_1 of { happy_var_1 -> + case happyOut107 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ CBinary CNeqOp happy_var_1 happy_var_3)}} + ) (\r -> happyReturn (happyIn108 r)) + +happyReduce_406 = happySpecReduce_1 102# happyReduction_406 +happyReduction_406 happy_x_1 + = case happyOut108 happy_x_1 of { happy_var_1 -> + happyIn109 + (happy_var_1 + )} + +happyReduce_407 = happyMonadReduce 3# 102# happyReduction_407 +happyReduction_407 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut109 happy_x_1 of { happy_var_1 -> + case happyOut108 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ CBinary CAndOp happy_var_1 happy_var_3)}} + ) (\r -> happyReturn (happyIn109 r)) + +happyReduce_408 = happySpecReduce_1 103# happyReduction_408 +happyReduction_408 happy_x_1 + = case happyOut109 happy_x_1 of { happy_var_1 -> + happyIn110 + (happy_var_1 + )} + +happyReduce_409 = happyMonadReduce 3# 103# happyReduction_409 +happyReduction_409 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut110 happy_x_1 of { happy_var_1 -> + case happyOut109 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ CBinary CXorOp happy_var_1 happy_var_3)}} + ) (\r -> happyReturn (happyIn110 r)) + +happyReduce_410 = happySpecReduce_1 104# happyReduction_410 +happyReduction_410 happy_x_1 + = case happyOut110 happy_x_1 of { happy_var_1 -> + happyIn111 + (happy_var_1 + )} + +happyReduce_411 = happyMonadReduce 3# 104# happyReduction_411 +happyReduction_411 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut111 happy_x_1 of { happy_var_1 -> + case happyOut110 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ CBinary COrOp happy_var_1 happy_var_3)}} + ) (\r -> happyReturn (happyIn111 r)) + +happyReduce_412 = happySpecReduce_1 105# happyReduction_412 +happyReduction_412 happy_x_1 + = case happyOut111 happy_x_1 of { happy_var_1 -> + happyIn112 + (happy_var_1 + )} + +happyReduce_413 = happyMonadReduce 3# 105# happyReduction_413 +happyReduction_413 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut112 happy_x_1 of { happy_var_1 -> + case happyOut111 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ CBinary CLndOp happy_var_1 happy_var_3)}} + ) (\r -> happyReturn (happyIn112 r)) + +happyReduce_414 = happySpecReduce_1 106# happyReduction_414 +happyReduction_414 happy_x_1 + = case happyOut112 happy_x_1 of { happy_var_1 -> + happyIn113 + (happy_var_1 + )} + +happyReduce_415 = happyMonadReduce 3# 106# happyReduction_415 +happyReduction_415 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut113 happy_x_1 of { happy_var_1 -> + case happyOut112 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ CBinary CLorOp happy_var_1 happy_var_3)}} + ) (\r -> happyReturn (happyIn113 r)) + +happyReduce_416 = happySpecReduce_1 107# happyReduction_416 +happyReduction_416 happy_x_1 + = case happyOut113 happy_x_1 of { happy_var_1 -> + happyIn114 + (happy_var_1 + )} + +happyReduce_417 = happyMonadReduce 5# 107# happyReduction_417 +happyReduction_417 (happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut113 happy_x_1 of { happy_var_1 -> + case happyOut117 happy_x_3 of { happy_var_3 -> + case happyOut114 happy_x_5 of { happy_var_5 -> + ( withNodeInfo happy_var_1 $ CCond happy_var_1 (Just happy_var_3) happy_var_5)}}} + ) (\r -> happyReturn (happyIn114 r)) + +happyReduce_418 = happyMonadReduce 4# 107# happyReduction_418 +happyReduction_418 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut113 happy_x_1 of { happy_var_1 -> + case happyOut114 happy_x_4 of { happy_var_4 -> + ( withNodeInfo happy_var_1 $ CCond happy_var_1 Nothing happy_var_4)}} + ) (\r -> happyReturn (happyIn114 r)) + +happyReduce_419 = happySpecReduce_1 108# happyReduction_419 +happyReduction_419 happy_x_1 + = case happyOut114 happy_x_1 of { happy_var_1 -> + happyIn115 + (happy_var_1 + )} + +happyReduce_420 = happyMonadReduce 3# 108# happyReduction_420 +happyReduction_420 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut101 happy_x_1 of { happy_var_1 -> + case happyOut116 happy_x_2 of { happy_var_2 -> + case happyOut115 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ CAssign (unL happy_var_2) happy_var_1 happy_var_3)}}} + ) (\r -> happyReturn (happyIn115 r)) + +happyReduce_421 = happySpecReduce_1 109# happyReduction_421 +happyReduction_421 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn116 + (L CAssignOp (posOf happy_var_1) + )} + +happyReduce_422 = happySpecReduce_1 109# happyReduction_422 +happyReduction_422 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn116 + (L CMulAssOp (posOf happy_var_1) + )} + +happyReduce_423 = happySpecReduce_1 109# happyReduction_423 +happyReduction_423 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn116 + (L CDivAssOp (posOf happy_var_1) + )} + +happyReduce_424 = happySpecReduce_1 109# happyReduction_424 +happyReduction_424 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn116 + (L CRmdAssOp (posOf happy_var_1) + )} + +happyReduce_425 = happySpecReduce_1 109# happyReduction_425 +happyReduction_425 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn116 + (L CAddAssOp (posOf happy_var_1) + )} + +happyReduce_426 = happySpecReduce_1 109# happyReduction_426 +happyReduction_426 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn116 + (L CSubAssOp (posOf happy_var_1) + )} + +happyReduce_427 = happySpecReduce_1 109# happyReduction_427 +happyReduction_427 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn116 + (L CShlAssOp (posOf happy_var_1) + )} + +happyReduce_428 = happySpecReduce_1 109# happyReduction_428 +happyReduction_428 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn116 + (L CShrAssOp (posOf happy_var_1) + )} + +happyReduce_429 = happySpecReduce_1 109# happyReduction_429 +happyReduction_429 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn116 + (L CAndAssOp (posOf happy_var_1) + )} + +happyReduce_430 = happySpecReduce_1 109# happyReduction_430 +happyReduction_430 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn116 + (L CXorAssOp (posOf happy_var_1) + )} + +happyReduce_431 = happySpecReduce_1 109# happyReduction_431 +happyReduction_431 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn116 + (L COrAssOp (posOf happy_var_1) + )} + +happyReduce_432 = happySpecReduce_1 110# happyReduction_432 +happyReduction_432 happy_x_1 + = case happyOut115 happy_x_1 of { happy_var_1 -> + happyIn117 + (happy_var_1 + )} + +happyReduce_433 = happyMonadReduce 3# 110# happyReduction_433 +happyReduction_433 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut115 happy_x_1 of { happy_var_1 -> + case happyOut118 happy_x_3 of { happy_var_3 -> + ( let es = reverse happy_var_3 in withNodeInfo es $ CComma (happy_var_1:es))}} + ) (\r -> happyReturn (happyIn117 r)) + +happyReduce_434 = happySpecReduce_1 111# happyReduction_434 +happyReduction_434 happy_x_1 + = case happyOut115 happy_x_1 of { happy_var_1 -> + happyIn118 + (singleton happy_var_1 + )} + +happyReduce_435 = happySpecReduce_3 111# happyReduction_435 +happyReduction_435 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut118 happy_x_1 of { happy_var_1 -> + case happyOut115 happy_x_3 of { happy_var_3 -> + happyIn118 + (happy_var_1 `snoc` happy_var_3 + )}} + +happyReduce_436 = happySpecReduce_0 112# happyReduction_436 +happyReduction_436 = happyIn119 + (Nothing + ) + +happyReduce_437 = happySpecReduce_1 112# happyReduction_437 +happyReduction_437 happy_x_1 + = case happyOut117 happy_x_1 of { happy_var_1 -> + happyIn119 + (Just happy_var_1 + )} + +happyReduce_438 = happySpecReduce_0 113# happyReduction_438 +happyReduction_438 = happyIn120 + (Nothing + ) + +happyReduce_439 = happySpecReduce_1 113# happyReduction_439 +happyReduction_439 happy_x_1 + = case happyOut115 happy_x_1 of { happy_var_1 -> + happyIn120 + (Just happy_var_1 + )} + +happyReduce_440 = happySpecReduce_1 114# happyReduction_440 +happyReduction_440 happy_x_1 + = case happyOut114 happy_x_1 of { happy_var_1 -> + happyIn121 + (happy_var_1 + )} + +happyReduce_441 = happyMonadReduce 1# 115# happyReduction_441 +happyReduction_441 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + ( withNodeInfo happy_var_1 $ case happy_var_1 of CTokILit _ i -> CIntConst i)} + ) (\r -> happyReturn (happyIn122 r)) + +happyReduce_442 = happyMonadReduce 1# 115# happyReduction_442 +happyReduction_442 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + ( withNodeInfo happy_var_1 $ case happy_var_1 of CTokCLit _ c -> CCharConst c)} + ) (\r -> happyReturn (happyIn122 r)) + +happyReduce_443 = happyMonadReduce 1# 115# happyReduction_443 +happyReduction_443 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + ( withNodeInfo happy_var_1 $ case happy_var_1 of CTokFLit _ f -> CFloatConst f)} + ) (\r -> happyReturn (happyIn122 r)) + +happyReduce_444 = happyMonadReduce 1# 116# happyReduction_444 +happyReduction_444 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + ( withNodeInfo happy_var_1 $ case happy_var_1 of CTokSLit _ s -> CStrLit s)} + ) (\r -> happyReturn (happyIn123 r)) + +happyReduce_445 = happyMonadReduce 2# 116# happyReduction_445 +happyReduction_445 (happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut124 happy_x_2 of { happy_var_2 -> + ( withNodeInfo happy_var_1 $ case happy_var_1 of CTokSLit _ s -> CStrLit (concatCStrings (s : reverse happy_var_2)))}} + ) (\r -> happyReturn (happyIn123 r)) + +happyReduce_446 = happySpecReduce_1 117# happyReduction_446 +happyReduction_446 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn124 + (case happy_var_1 of CTokSLit _ s -> singleton s + )} + +happyReduce_447 = happySpecReduce_2 117# happyReduction_447 +happyReduction_447 happy_x_2 + happy_x_1 + = case happyOut124 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { happy_var_2 -> + happyIn124 + (case happy_var_2 of CTokSLit _ s -> happy_var_1 `snoc` s + )}} + +happyReduce_448 = happySpecReduce_1 118# happyReduction_448 +happyReduction_448 happy_x_1 + = case happyOutTok happy_x_1 of { (CTokIdent _ happy_var_1) -> + happyIn125 + (happy_var_1 + )} + +happyReduce_449 = happySpecReduce_1 118# happyReduction_449 +happyReduction_449 happy_x_1 + = case happyOutTok happy_x_1 of { (CTokTyIdent _ happy_var_1) -> + happyIn125 + (happy_var_1 + )} + +happyReduce_450 = happySpecReduce_0 119# happyReduction_450 +happyReduction_450 = happyIn126 + ([] + ) + +happyReduce_451 = happySpecReduce_1 119# happyReduction_451 +happyReduction_451 happy_x_1 + = case happyOut127 happy_x_1 of { happy_var_1 -> + happyIn126 + (happy_var_1 + )} + +happyReduce_452 = happySpecReduce_1 120# happyReduction_452 +happyReduction_452 happy_x_1 + = case happyOut128 happy_x_1 of { happy_var_1 -> + happyIn127 + (happy_var_1 + )} + +happyReduce_453 = happySpecReduce_2 120# happyReduction_453 +happyReduction_453 happy_x_2 + happy_x_1 + = case happyOut127 happy_x_1 of { happy_var_1 -> + case happyOut128 happy_x_2 of { happy_var_2 -> + happyIn127 + (happy_var_1 ++ happy_var_2 + )}} + +happyReduce_454 = happyReduce 6# 121# happyReduction_454 +happyReduction_454 (happy_x_6 `HappyStk` + happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOut129 happy_x_4 of { happy_var_4 -> + happyIn128 + (reverse happy_var_4 + ) `HappyStk` happyRest} + +happyReduce_455 = happySpecReduce_1 122# happyReduction_455 +happyReduction_455 happy_x_1 + = case happyOut130 happy_x_1 of { happy_var_1 -> + happyIn129 + (case happy_var_1 of Nothing -> empty; Just attr -> singleton attr + )} + +happyReduce_456 = happySpecReduce_3 122# happyReduction_456 +happyReduction_456 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut129 happy_x_1 of { happy_var_1 -> + case happyOut130 happy_x_3 of { happy_var_3 -> + happyIn129 + ((maybe id (flip snoc) happy_var_3) happy_var_1 + )}} + +happyReduce_457 = happySpecReduce_0 123# happyReduction_457 +happyReduction_457 = happyIn130 + (Nothing + ) + +happyReduce_458 = happyMonadReduce 1# 123# happyReduction_458 +happyReduction_458 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { (CTokIdent _ happy_var_1) -> + ( withNodeInfo happy_var_1 $ Just . CAttr happy_var_1 [])} + ) (\r -> happyReturn (happyIn130 r)) + +happyReduce_459 = happyMonadReduce 1# 123# happyReduction_459 +happyReduction_459 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + ( withNodeInfo happy_var_1 $ Just . CAttr (internalIdent "const") [])} + ) (\r -> happyReturn (happyIn130 r)) + +happyReduce_460 = happyMonadReduce 4# 123# happyReduction_460 +happyReduction_460 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { (CTokIdent _ happy_var_1) -> + case happyOut131 happy_x_3 of { happy_var_3 -> + ( withNodeInfo happy_var_1 $ Just . CAttr happy_var_1 (reverse happy_var_3))}} + ) (\r -> happyReturn (happyIn130 r)) + +happyReduce_461 = happyMonadReduce 3# 123# happyReduction_461 +happyReduction_461 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { (CTokIdent _ happy_var_1) -> + ( withNodeInfo happy_var_1 $ Just . CAttr happy_var_1 [])} + ) (\r -> happyReturn (happyIn130 r)) + +happyReduce_462 = happySpecReduce_1 124# happyReduction_462 +happyReduction_462 happy_x_1 + = case happyOut121 happy_x_1 of { happy_var_1 -> + happyIn131 + (singleton happy_var_1 + )} + +happyReduce_463 = happySpecReduce_3 124# happyReduction_463 +happyReduction_463 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut131 happy_x_1 of { happy_var_1 -> + case happyOut121 happy_x_3 of { happy_var_3 -> + happyIn131 + (happy_var_1 `snoc` happy_var_3 + )}} + +happyNewToken action sts stk + = lexC(\tk -> + let cont i = happyDoAction i tk action sts stk in + case tk of { + CTokEof -> happyDoAction 101# tk action sts stk; + CTokLParen _ -> cont 1#; + CTokRParen _ -> cont 2#; + CTokLBracket _ -> cont 3#; + CTokRBracket _ -> cont 4#; + CTokArrow _ -> cont 5#; + CTokDot _ -> cont 6#; + CTokExclam _ -> cont 7#; + CTokTilde _ -> cont 8#; + CTokInc _ -> cont 9#; + CTokDec _ -> cont 10#; + CTokPlus _ -> cont 11#; + CTokMinus _ -> cont 12#; + CTokStar _ -> cont 13#; + CTokSlash _ -> cont 14#; + CTokPercent _ -> cont 15#; + CTokAmper _ -> cont 16#; + CTokShiftL _ -> cont 17#; + CTokShiftR _ -> cont 18#; + CTokLess _ -> cont 19#; + CTokLessEq _ -> cont 20#; + CTokHigh _ -> cont 21#; + CTokHighEq _ -> cont 22#; + CTokEqual _ -> cont 23#; + CTokUnequal _ -> cont 24#; + CTokHat _ -> cont 25#; + CTokBar _ -> cont 26#; + CTokAnd _ -> cont 27#; + CTokOr _ -> cont 28#; + CTokQuest _ -> cont 29#; + CTokColon _ -> cont 30#; + CTokAssign _ -> cont 31#; + CTokPlusAss _ -> cont 32#; + CTokMinusAss _ -> cont 33#; + CTokStarAss _ -> cont 34#; + CTokSlashAss _ -> cont 35#; + CTokPercAss _ -> cont 36#; + CTokAmpAss _ -> cont 37#; + CTokHatAss _ -> cont 38#; + CTokBarAss _ -> cont 39#; + CTokSLAss _ -> cont 40#; + CTokSRAss _ -> cont 41#; + CTokComma _ -> cont 42#; + CTokSemic _ -> cont 43#; + CTokLBrace _ -> cont 44#; + CTokRBrace _ -> cont 45#; + CTokEllipsis _ -> cont 46#; + CTokAlignof _ -> cont 47#; + CTokAsm _ -> cont 48#; + CTokAuto _ -> cont 49#; + CTokBreak _ -> cont 50#; + CTokBool _ -> cont 51#; + CTokCase _ -> cont 52#; + CTokChar _ -> cont 53#; + CTokConst _ -> cont 54#; + CTokContinue _ -> cont 55#; + CTokComplex _ -> cont 56#; + CTokDefault _ -> cont 57#; + CTokDo _ -> cont 58#; + CTokDouble _ -> cont 59#; + CTokElse _ -> cont 60#; + CTokEnum _ -> cont 61#; + CTokExtern _ -> cont 62#; + CTokFloat _ -> cont 63#; + CTokFor _ -> cont 64#; + CTokGoto _ -> cont 65#; + CTokIf _ -> cont 66#; + CTokInline _ -> cont 67#; + CTokInt _ -> cont 68#; + CTokLong _ -> cont 69#; + CTokLabel _ -> cont 70#; + CTokRegister _ -> cont 71#; + CTokRestrict _ -> cont 72#; + CTokReturn _ -> cont 73#; + CTokShort _ -> cont 74#; + CTokSigned _ -> cont 75#; + CTokSizeof _ -> cont 76#; + CTokStatic _ -> cont 77#; + CTokStruct _ -> cont 78#; + CTokSwitch _ -> cont 79#; + CTokTypedef _ -> cont 80#; + CTokTypeof _ -> cont 81#; + CTokThread _ -> cont 82#; + CTokUnion _ -> cont 83#; + CTokUnsigned _ -> cont 84#; + CTokVoid _ -> cont 85#; + CTokVolatile _ -> cont 86#; + CTokWhile _ -> cont 87#; + CTokCLit _ _ -> cont 88#; + CTokILit _ _ -> cont 89#; + CTokFLit _ _ -> cont 90#; + CTokSLit _ _ -> cont 91#; + CTokIdent _ happy_dollar_dollar -> cont 92#; + CTokTyIdent _ happy_dollar_dollar -> cont 93#; + CTokGnuC GnuCAttrTok _ -> cont 94#; + CTokGnuC GnuCExtTok _ -> cont 95#; + CTokGnuC GnuCComplexReal _ -> cont 96#; + CTokGnuC GnuCComplexImag _ -> cont 97#; + CTokGnuC GnuCVaArg _ -> cont 98#; + CTokGnuC GnuCOffsetof _ -> cont 99#; + CTokGnuC GnuCTyCompat _ -> cont 100#; + _ -> happyError' tk + }) + +happyError_ tk = happyError' tk + +happyThen :: () => P a -> (a -> P b) -> P b +happyThen = (>>=) +happyReturn :: () => a -> P a +happyReturn = (return) +happyThen1 = happyThen +happyReturn1 :: () => a -> P a +happyReturn1 = happyReturn +happyError' :: () => CToken -> P a +happyError' tk = (\token -> happyError) tk + +translation_unit = happySomeParser where + happySomeParser = happyThen (happyParse 0#) (\x -> happyReturn (happyOut7 x)) + +external_declaration = happySomeParser where + happySomeParser = happyThen (happyParse 1#) (\x -> happyReturn (happyOut9 x)) + +statement = happySomeParser where + happySomeParser = happyThen (happyParse 2#) (\x -> happyReturn (happyOut12 x)) + +expression = happySomeParser where + happySomeParser = happyThen (happyParse 3#) (\x -> happyReturn (happyOut117 x)) + +happySeq = happyDontSeq + + +-- sometimes it is neccessary to reverse an unreversed list +reverseList :: [a] -> Reversed [a] +reverseList = Reversed . List.reverse + +-- We occasionally need things to have a location when they don't naturally +-- have one built in as tokens and most AST elements do. +-- +data Located a = L !a !Position + +unL :: Located a -> a +unL (L a pos) = a + +instance Pos (Located a) where + posOf (L _ pos) = pos + +-- FIXME: the next 3 inlines here increase the object file size by 70% +-- Check whether the speed win is worth it +{-# INLINE withNodeInfo #-} +withNodeInfo :: Pos node => node -> (NodeInfo -> a) -> P a +withNodeInfo node mkAttrNode = do + name <- getNewName + lastTok <- getSavedToken + let firstPos = posOf node + let attrs = mkNodeInfo' firstPos (posLenOfTok $! lastTok) name + attrs `seq` return (mkAttrNode attrs) + +{-# INLINE withLength #-} +withLength :: NodeInfo -> (NodeInfo -> a) -> P a +withLength nodeinfo mkAttrNode = do + lastTok <- getSavedToken + let firstPos = posOfNode nodeinfo + let attrs = mkNodeInfo' firstPos (posLenOfTok $! lastTok) + (maybe (error "nameOfNode") id (nameOfNode nodeinfo)) + attrs `seq` return (mkAttrNode attrs) + +data CDeclrR = CDeclrR (Maybe Ident) (Reversed [CDerivedDeclr]) (Maybe CStrLit) [CAttr] NodeInfo +reverseDeclr :: CDeclrR -> CDeclr +reverseDeclr (CDeclrR ide reversedDDs asmname cattrs at) + = CDeclr ide (reverse reversedDDs) asmname cattrs at +instance CNode (CDeclrR) where + nodeInfo (CDeclrR _ _ _ _ n) = n +instance Pos (CDeclrR) where + posOf (CDeclrR _ _ _ _ n) = posOf n + +{-# INLINE withAttribute #-} +withAttribute :: Pos node => node -> [CAttr] -> (NodeInfo -> CDeclrR) -> P CDeclrR +withAttribute node cattrs mkDeclrNode = do + name <- getNewName + let attrs = mkNodeInfo (posOf node) name + let newDeclr = appendDeclrAttrs cattrs $ mkDeclrNode attrs + attrs `seq` newDeclr `seq` return newDeclr + +-- postfixing variant +{-# INLINE withAttributePF #-} +withAttributePF :: Pos node => node -> [CAttr] -> (NodeInfo -> CDeclrR -> CDeclrR) -> P (CDeclrR -> CDeclrR) +withAttributePF node cattrs mkDeclrCtor = do + name <- getNewName + let attrs = mkNodeInfo (posOf node) name + let newDeclr = appendDeclrAttrs cattrs . mkDeclrCtor attrs + attrs `seq` newDeclr `seq` return newDeclr + +-- add top level attributes for a declarator. +-- +-- In the following example +-- +-- > int declr1, __attribute__((a1)) * __attribute__((a2)) y() __asm__("$" "y") __attribute__((a3)); +-- +-- the attributes `a1' and `a3' are top-level attributes for y. +-- The (pseudo)-AST for the second declarator is +-- +-- > CDeclr "y" +-- > [CFunDeclr ..., CPtrDeclr __attribute__((a2)) ... ] +-- > (asm "$y") +-- > [__attribute__((a1)), __attribute__((a3)) ] +-- +-- So assembler names and preceeding and trailing attributes are recorded in object declarator. +-- +appendObjAttrs :: [CAttr] -> CDeclr -> CDeclr +appendObjAttrs newAttrs (CDeclr ident indirections asmname cAttrs at) + = CDeclr ident indirections asmname (cAttrs ++ newAttrs) at +appendObjAttrsR :: [CAttr] -> CDeclrR -> CDeclrR +appendObjAttrsR newAttrs (CDeclrR ident indirections asmname cAttrs at) + = CDeclrR ident indirections asmname (cAttrs ++ newAttrs) at + +setAsmName :: Maybe CStrLit -> CDeclrR -> P CDeclrR +setAsmName mAsmName (CDeclrR ident indirections oldName cattrs at) = + case combineName mAsmName oldName of + Left (n1,n2) -> failP (posOf n2) ["Duplicate assembler name: ",showName n1,showName n2] + Right newName -> return $ CDeclrR ident indirections newName cattrs at + where + combineName Nothing Nothing = Right Nothing + combineName Nothing oldname@(Just _) = Right oldname + combineName newname@(Just _) Nothing = Right newname + combineName (Just n1) (Just n2) = Left (n1,n2) + showName (CStrLit cstr _) = show cstr + +withAsmNameAttrs :: (Maybe CStrLit, [CAttr]) -> CDeclrR -> P CDeclrR +withAsmNameAttrs (mAsmName, newAttrs) declr = setAsmName mAsmName (appendObjAttrsR newAttrs declr) + +appendDeclrAttrs :: [CAttr] -> CDeclrR -> CDeclrR +appendDeclrAttrs newAttrs (CDeclrR ident (Reversed []) asmname cattrs at) + = CDeclrR ident empty asmname (cattrs ++ newAttrs) at +appendDeclrAttrs newAttrs (CDeclrR ident (Reversed (x:xs)) asmname cattrs at) + = CDeclrR ident (Reversed (appendAttrs x : xs)) asmname cattrs at where + appendAttrs (CPtrDeclr typeQuals at) = CPtrDeclr (typeQuals ++ map CAttrQual newAttrs) at + appendAttrs (CArrDeclr typeQuals arraySize at) = CArrDeclr (typeQuals ++ map CAttrQual newAttrs) arraySize at + appendAttrs (CFunDeclr parameters cattrs at) = CFunDeclr parameters (cattrs ++ newAttrs) at + +ptrDeclr :: CDeclrR -> [CTypeQual] -> NodeInfo -> CDeclrR +ptrDeclr (CDeclrR ident derivedDeclrs asmname cattrs dat) tyquals at + = CDeclrR ident (derivedDeclrs `snoc` CPtrDeclr tyquals at) asmname cattrs dat +funDeclr :: CDeclrR -> (Either [Ident] ([CDecl],Bool)) -> [CAttr] -> NodeInfo -> CDeclrR +funDeclr (CDeclrR ident derivedDeclrs asmname dcattrs dat) params cattrs at + = CDeclrR ident (derivedDeclrs `snoc` CFunDeclr params cattrs at) asmname dcattrs dat +arrDeclr :: CDeclrR -> [CTypeQual] -> Bool -> Bool -> Maybe CExpr -> NodeInfo -> CDeclrR +arrDeclr (CDeclrR ident derivedDeclrs asmname cattrs dat) tyquals var_sized static_size size_expr_opt at + = arr_sz `seq` ( CDeclrR ident (derivedDeclrs `snoc` CArrDeclr tyquals arr_sz at) asmname cattrs dat ) + where + arr_sz = case size_expr_opt of + Just e -> CArrSize static_size e + Nothing -> CNoArrSize var_sized + +liftTypeQuals :: Reversed [CTypeQual] -> [CDeclSpec] +liftTypeQuals = map CTypeQual . reverse + +-- lift CAttrs to DeclSpecs +-- +liftCAttrs :: [CAttr] -> [CDeclSpec] +liftCAttrs = map (CTypeQual . CAttrQual) + +-- when we parsed (decl_spec_1,...,decl_spec_n,attrs), add the __attributes__s to the declspec list +-- needs special care when @decl_spec_n@ is a SUE definition +addTrailingAttrs :: Reversed [CDeclSpec] -> [CAttr] -> Reversed [CDeclSpec] +addTrailingAttrs declspecs new_attrs = + case viewr declspecs of + (specs_init, CTypeSpec (CSUType (CStruct tag name (Just def) def_attrs su_node) node)) + -> (specs_init `snoc` CTypeSpec (CSUType (CStruct tag name (Just def) (def_attrs ++ new_attrs) su_node) node)) + (specs_init, CTypeSpec (CEnumType (CEnum name (Just def) def_attrs e_node) node)) + -> (specs_init `snoc` CTypeSpec (CEnumType (CEnum name (Just def) (def_attrs ++ new_attrs) e_node) node)) + _ -> declspecs `rappend` (liftCAttrs new_attrs) + +-- convenient instance, the position of a list of things is the position of +-- the first thing in the list +-- +instance Pos a => Pos [a] where + posOf (x:_) = posOf x + +instance Pos a => Pos (Reversed a) where + posOf (Reversed x) = posOf x + +emptyDeclr :: CDeclrR +emptyDeclr = CDeclrR Nothing empty Nothing [] undefNode +mkVarDeclr :: Ident -> NodeInfo -> CDeclrR +mkVarDeclr ident = CDeclrR (Just ident) empty Nothing [] + +-- Take the identifiers and use them to update the typedef'ed identifier set +-- if the decl is defining a typedef then we add it to the set, +-- if it's a var decl then that shadows typedefed identifiers +-- +doDeclIdent :: [CDeclSpec] -> CDeclrR -> P () +doDeclIdent declspecs (CDeclrR mIdent _ _ _ _) = + case mIdent of + Nothing -> return () + Just ident | any iypedef declspecs -> addTypedef ident + | otherwise -> shadowTypedef ident + + where iypedef (CStorageSpec (CTypedef _)) = True + iypedef _ = False + +doFuncParamDeclIdent :: CDeclr -> P () +doFuncParamDeclIdent (CDeclr _ (CFunDeclr params _ _ : _) _ _ _) = + sequence_ + [ case getCDeclrIdent declr of + Nothing -> return () + Just ident -> shadowTypedef ident + | CDecl _ dle _ <- either (const []) fst params + , (Just declr, _, _) <- dle ] +doFuncParamDeclIdent _ = return () + +-- extract all identifiers +getCDeclrIdent :: CDeclr -> Maybe Ident +getCDeclrIdent (CDeclr mIdent _ _ _ _) = mIdent + +happyError :: P a +happyError = parseError + +-- * public interface + +-- | @parseC input initialPos@ parses the given preprocessed C-source input and returns the AST or a list of parse errors. +parseC :: InputStream -> Position -> Either ParseError CTranslUnit +parseC input initialPosition = + fmap fst $ execParser translUnitP input initialPosition builtinTypeNames (namesStartingFrom 0) + +-- | @translUnitP@ provides a parser for a complete C translation unit, i.e. a list of external declarations. +translUnitP :: P CTranslUnit +translUnitP = translation_unit +-- | @extDeclP@ provides a parser for an external (file-scope) declaration +extDeclP :: P CExtDecl +extDeclP = external_declaration +-- | @statementP@ provides a parser for C statements +statementP :: P CStat +statementP = statement +-- | @expressionP@ provides a parser for C expressions +expressionP :: P CExpr +expressionP = expression +{-# LINE 1 "GenericTemplate.hs" #-} +{-# LINE 1 "" #-} +{-# LINE 1 "" #-} +{-# LINE 1 "GenericTemplate.hs" #-} +-- Id: GenericTemplate.hs,v 1.26 2005/01/14 14:47:22 simonmar Exp + +{-# LINE 28 "GenericTemplate.hs" #-} + + +data Happy_IntList = HappyCons Int# Happy_IntList + + + + + +{-# LINE 49 "GenericTemplate.hs" #-} + +{-# LINE 59 "GenericTemplate.hs" #-} + +{-# LINE 68 "GenericTemplate.hs" #-} + +infixr 9 `HappyStk` +data HappyStk a = HappyStk a (HappyStk a) + +----------------------------------------------------------------------------- +-- starting the parse + +happyParse start_state = happyNewToken start_state notHappyAtAll notHappyAtAll + +----------------------------------------------------------------------------- +-- Accepting the parse + +-- If the current token is 0#, it means we've just accepted a partial +-- parse (a %partial parser). We must ignore the saved token on the top of +-- the stack in this case. +happyAccept 0# tk st sts (_ `HappyStk` ans `HappyStk` _) = + happyReturn1 ans +happyAccept j tk st sts (HappyStk ans _) = + (happyTcHack j (happyTcHack st)) (happyReturn1 ans) + +----------------------------------------------------------------------------- +-- Arrays only: do the next action + + + +happyDoAction i tk st + = {- nothing -} + + + case action of + 0# -> {- nothing -} + happyFail i tk st + -1# -> {- nothing -} + happyAccept i tk st + n | (n <# (0# :: Int#)) -> {- nothing -} + + (happyReduceArr ! rule) i tk st + where rule = (I# ((negateInt# ((n +# (1# :: Int#)))))) + n -> {- nothing -} + + + happyShift new_state i tk st + where new_state = (n -# (1# :: Int#)) + where off = indexShortOffAddr happyActOffsets st + off_i = (off +# i) + check = if (off_i >=# (0# :: Int#)) + then (indexShortOffAddr happyCheck off_i ==# i) + else False + action | check = indexShortOffAddr happyTable off_i + | otherwise = indexShortOffAddr happyDefActions st + +{-# LINE 127 "GenericTemplate.hs" #-} + + +indexShortOffAddr (HappyA# arr) off = +-- #if __GLASGOW_HASKELL__ > 500 + narrow16Int# i +-- #elif __GLASGOW_HASKELL__ == 500 + intToInt16# i +-- #else + (i `iShiftL#` 16#) `iShiftRA#` 16# +-- #endif + where +-- #if __GLASGOW_HASKELL__ >= 503 + i = word2Int# ((high `uncheckedShiftL#` 8#) `or#` low) +-- #else + i = word2Int# ((high `shiftL#` 8#) `or#` low) +-- #endif + high = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#))) + low = int2Word# (ord# (indexCharOffAddr# arr off')) + off' = off *# 2# + + + + + +data HappyAddr = HappyA# Addr# + + + + +----------------------------------------------------------------------------- +-- HappyState data type (not arrays) + +{-# LINE 170 "GenericTemplate.hs" #-} + +----------------------------------------------------------------------------- +-- Shifting a token + +happyShift new_state 0# tk st sts stk@(x `HappyStk` _) = + let i = (case unsafeCoerce# x of { (I# (i)) -> i }) in +-- trace "shifting the error token" $ + happyDoAction i tk new_state (HappyCons (st) (sts)) (stk) + +happyShift new_state i tk st sts stk = + happyNewToken new_state (HappyCons (st) (sts)) ((happyInTok (tk))`HappyStk`stk) + +-- happyReduce is specialised for the common cases. + +happySpecReduce_0 i fn 0# tk st sts stk + = happyFail 0# tk st sts stk +happySpecReduce_0 nt fn j tk st@((action)) sts stk + = happyGoto nt j tk st (HappyCons (st) (sts)) (fn `HappyStk` stk) + +happySpecReduce_1 i fn 0# tk st sts stk + = happyFail 0# tk st sts stk +happySpecReduce_1 nt fn j tk _ sts@((HappyCons (st@(action)) (_))) (v1`HappyStk`stk') + = let r = fn v1 in + happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk')) + +happySpecReduce_2 i fn 0# tk st sts stk + = happyFail 0# tk st sts stk +happySpecReduce_2 nt fn j tk _ (HappyCons (_) (sts@((HappyCons (st@(action)) (_))))) (v1`HappyStk`v2`HappyStk`stk') + = let r = fn v1 v2 in + happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk')) + +happySpecReduce_3 i fn 0# tk st sts stk + = happyFail 0# tk st sts stk +happySpecReduce_3 nt fn j tk _ (HappyCons (_) ((HappyCons (_) (sts@((HappyCons (st@(action)) (_))))))) (v1`HappyStk`v2`HappyStk`v3`HappyStk`stk') + = let r = fn v1 v2 v3 in + happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk')) + +happyReduce k i fn 0# tk st sts stk + = happyFail 0# tk st sts stk +happyReduce k nt fn j tk st sts stk + = case happyDrop (k -# (1# :: Int#)) sts of + sts1@((HappyCons (st1@(action)) (_))) -> + let r = fn stk in -- it doesn't hurt to always seq here... + happyDoSeq r (happyGoto nt j tk st1 sts1 r) + +happyMonadReduce k nt fn 0# tk st sts stk + = happyFail 0# tk st sts stk +happyMonadReduce k nt fn j tk st sts stk = + happyThen1 (fn stk tk) (\r -> happyGoto nt j tk st1 sts1 (r `HappyStk` drop_stk)) + where sts1@((HappyCons (st1@(action)) (_))) = happyDrop k (HappyCons (st) (sts)) + drop_stk = happyDropStk k stk + +happyMonad2Reduce k nt fn 0# tk st sts stk + = happyFail 0# tk st sts stk +happyMonad2Reduce k nt fn j tk st sts stk = + happyThen1 (fn stk tk) (\r -> happyNewToken new_state sts1 (r `HappyStk` drop_stk)) + where sts1@((HappyCons (st1@(action)) (_))) = happyDrop k (HappyCons (st) (sts)) + drop_stk = happyDropStk k stk + + off = indexShortOffAddr happyGotoOffsets st1 + off_i = (off +# nt) + new_state = indexShortOffAddr happyTable off_i + + + + +happyDrop 0# l = l +happyDrop n (HappyCons (_) (t)) = happyDrop (n -# (1# :: Int#)) t + +happyDropStk 0# l = l +happyDropStk n (x `HappyStk` xs) = happyDropStk (n -# (1#::Int#)) xs + +----------------------------------------------------------------------------- +-- Moving to a new state after a reduction + + +happyGoto nt j tk st = + {- nothing -} + happyDoAction j tk new_state + where off = indexShortOffAddr happyGotoOffsets st + off_i = (off +# nt) + new_state = indexShortOffAddr happyTable off_i + + + + +----------------------------------------------------------------------------- +-- Error recovery (0# is the error token) + +-- parse error if we are in recovery and we fail again +happyFail 0# tk old_st _ stk = +-- trace "failing" $ + happyError_ tk + +{- We don't need state discarding for our restricted implementation of + "error". In fact, it can cause some bogus parses, so I've disabled it + for now --SDM + +-- discard a state +happyFail 0# tk old_st (HappyCons ((action)) (sts)) + (saved_tok `HappyStk` _ `HappyStk` stk) = +-- trace ("discarding state, depth " ++ show (length stk)) $ + happyDoAction 0# tk action sts ((saved_tok`HappyStk`stk)) +-} + +-- Enter error recovery: generate an error token, +-- save the old token and carry on. +happyFail i tk (action) sts stk = +-- trace "entering error recovery" $ + happyDoAction 0# tk action sts ( (unsafeCoerce# (I# (i))) `HappyStk` stk) + +-- Internal happy errors: + +notHappyAtAll = error "Internal Happy error\n" + +----------------------------------------------------------------------------- +-- Hack to get the typechecker to accept our action functions + + +happyTcHack :: Int# -> a -> a +happyTcHack x y = y +{-# INLINE happyTcHack #-} + + +----------------------------------------------------------------------------- +-- Seq-ing. If the --strict flag is given, then Happy emits +-- happySeq = happyDoSeq +-- otherwise it emits +-- happySeq = happyDontSeq + +happyDoSeq, happyDontSeq :: a -> b -> b +happyDoSeq a b = a `seq` b +happyDontSeq a b = b + +----------------------------------------------------------------------------- +-- Don't inline any functions from the template. GHC has a nasty habit +-- of deciding to inline happyGoto everywhere, which increases the size of +-- the generated parser quite a bit. + + +{-# NOINLINE happyDoAction #-} +{-# NOINLINE happyTable #-} +{-# NOINLINE happyCheck #-} +{-# NOINLINE happyActOffsets #-} +{-# NOINLINE happyGotoOffsets #-} +{-# NOINLINE happyDefActions #-} + +{-# NOINLINE happyShift #-} +{-# NOINLINE happySpecReduce_0 #-} +{-# NOINLINE happySpecReduce_1 #-} +{-# NOINLINE happySpecReduce_2 #-} +{-# NOINLINE happySpecReduce_3 #-} +{-# NOINLINE happyReduce #-} +{-# NOINLINE happyMonadReduce #-} +{-# NOINLINE happyGoto #-} +{-# NOINLINE happyFail #-} + +-- end of Happy Template. diff -ruN haskell-src-exts-1.9.0/Test/examples/DataHeadParen.hs haskell-src-exts/Test/examples/DataHeadParen.hs --- haskell-src-exts-1.9.0/Test/examples/DataHeadParen.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/DataHeadParen.hs 2010-12-15 09:33:39.881712115 -0800 @@ -0,0 +1,4 @@ +{-# LANGUAGE TypeOperators #-} +module DataHeadParen where + +data (a1 :< a2) = Foo diff -ruN haskell-src-exts-1.9.0/Test/examples/Directory.hs haskell-src-exts/Test/examples/Directory.hs --- haskell-src-exts-1.9.0/Test/examples/Directory.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/Directory.hs 2010-12-15 09:33:41.337712573 -0800 @@ -0,0 +1,913 @@ +{-# LANGUAGE ForeignFunctionInterface #-} + +----------------------------------------------------------------------------- +-- | +-- Module : System.Directory +-- Copyright : (c) The University of Glasgow 2001 +-- License : BSD-style (see the file libraries/base/LICENSE) +-- +-- Maintainer : libraries@haskell.org +-- Stability : stable +-- Portability : portable +-- +-- System-independent interface to directory manipulation. +-- +----------------------------------------------------------------------------- + +module System.Directory + ( + -- $intro + + -- * Actions on directories + createDirectory -- :: FilePath -> IO () + , createDirectoryIfMissing -- :: Bool -> FilePath -> IO () + , removeDirectory -- :: FilePath -> IO () + , removeDirectoryRecursive -- :: FilePath -> IO () + , renameDirectory -- :: FilePath -> FilePath -> IO () + + , getDirectoryContents -- :: FilePath -> IO [FilePath] + , getCurrentDirectory -- :: IO FilePath + , setCurrentDirectory -- :: FilePath -> IO () + + -- * Pre-defined directories + , getHomeDirectory + , getAppUserDataDirectory + , getUserDocumentsDirectory + , getTemporaryDirectory + + -- * Actions on files + , removeFile -- :: FilePath -> IO () + , renameFile -- :: FilePath -> FilePath -> IO () + , copyFile -- :: FilePath -> FilePath -> IO () + + , canonicalizePath + , makeRelativeToCurrentDirectory + , findExecutable + + -- * Existence tests + , doesFileExist -- :: FilePath -> IO Bool + , doesDirectoryExist -- :: FilePath -> IO Bool + + -- * Permissions + + -- $permissions + + , Permissions( + Permissions, + readable, -- :: Permissions -> Bool + writable, -- :: Permissions -> Bool + executable, -- :: Permissions -> Bool + searchable -- :: Permissions -> Bool + ) + + , getPermissions -- :: FilePath -> IO Permissions + , setPermissions -- :: FilePath -> Permissions -> IO () + , copyPermissions + + -- * Timestamps + + , getModificationTime -- :: FilePath -> IO ClockTime + ) where + +import Prelude hiding ( catch ) +import qualified Prelude + +import Control.Monad (guard) +import System.Environment ( getEnv ) +import System.FilePath +import System.IO +import System.IO.Error hiding ( catch, try ) +import Control.Monad ( when, unless ) +import Control.Exception.Base + +import Foreign +import Foreign.C + +{-# CFILES cbits/directory.c #-} + +import System.Time ( ClockTime(..) ) + +import GHC.IO.Exception ( IOException(..), IOErrorType(..), ioException ) + +import System.Posix.Types +import System.Posix.Internals +import qualified System.Win32 as Win32 + +{- $intro +A directory contains a series of entries, each of which is a named +reference to a file system object (file, directory etc.). Some +entries may be hidden, inaccessible, or have some administrative +function (e.g. `.' or `..' under POSIX +), but in +this standard all such entries are considered to form part of the +directory contents. Entries in sub-directories are not, however, +considered to form part of the directory contents. + +Each file system object is referenced by a /path/. There is +normally at least one absolute path to each file system object. In +some operating systems, it may also be possible to have paths which +are relative to the current directory. +-} + +----------------------------------------------------------------------------- +-- Permissions + +{- $permissions + + The 'Permissions' type is used to record whether certain operations are + permissible on a file\/directory. 'getPermissions' and 'setPermissions' + get and set these permissions, respectively. Permissions apply both to + files and directories. For directories, the executable field will be + 'False', and for files the searchable field will be 'False'. Note that + directories may be searchable without being readable, if permission has + been given to use them as part of a path, but not to examine the + directory contents. + +Note that to change some, but not all permissions, a construct on the following lines must be used. + +> makeReadable f = do +> p <- getPermissions f +> setPermissions f (p {readable = True}) + +-} + +data Permissions + = Permissions { + readable, writable, + executable, searchable :: Bool + } deriving (Eq, Ord, Read, Show) + +{- |The 'getPermissions' operation returns the +permissions for the file or directory. + +The operation may fail with: + +* 'isPermissionError' if the user is not permitted to access + the permissions; or + +* 'isDoesNotExistError' if the file or directory does not exist. + +-} + +getPermissions :: FilePath -> IO Permissions +getPermissions name = do + withFilePath name $ \s -> do + -- stat() does a better job of guessing the permissions on Windows + -- than access() does. e.g. for execute permission, it looks at the + -- filename extension :-) + -- + -- I tried for a while to do this properly, using the Windows security API, + -- and eventually gave up. getPermissions is a flawed API anyway. -- SimonM + allocaBytes sizeof_stat $ \ p_stat -> do + throwErrnoIfMinus1_ "getPermissions" $ c_stat s p_stat + mode <- st_mode p_stat + let usr_read = mode .&. s_IRUSR + let usr_write = mode .&. s_IWUSR + let usr_exec = mode .&. s_IXUSR + let is_dir = mode .&. s_IFDIR + return ( + Permissions { + readable = usr_read /= 0, + writable = usr_write /= 0, + executable = is_dir == 0 && usr_exec /= 0, + searchable = is_dir /= 0 && usr_exec /= 0 + } + ) + +{- |The 'setPermissions' operation sets the +permissions for the file or directory. + +The operation may fail with: + +* 'isPermissionError' if the user is not permitted to set + the permissions; or + +* 'isDoesNotExistError' if the file or directory does not exist. + +-} + +setPermissions :: FilePath -> Permissions -> IO () +setPermissions name (Permissions r w e s) = do + allocaBytes sizeof_stat $ \ p_stat -> do + withFilePath name $ \p_name -> do + throwErrnoIfMinus1_ "setPermissions" $ do + c_stat p_name p_stat + mode <- st_mode p_stat + let mode1 = modifyBit r mode s_IRUSR + let mode2 = modifyBit w mode1 s_IWUSR + let mode3 = modifyBit (e || s) mode2 s_IXUSR + c_wchmod p_name mode3 + where + modifyBit :: Bool -> CMode -> CMode -> CMode + modifyBit False m b = m .&. (complement b) + modifyBit True m b = m .|. b + +foreign import ccall unsafe "_wchmod" + c_wchmod :: CWString -> CMode -> IO CInt + +copyPermissions :: FilePath -> FilePath -> IO () +copyPermissions source dest = do + allocaBytes sizeof_stat $ \ p_stat -> do + withFilePath source $ \p_source -> do + withFilePath dest $ \p_dest -> do + throwErrnoIfMinus1_ "copyPermissions" $ c_stat p_source p_stat + mode <- st_mode p_stat + throwErrnoIfMinus1_ "copyPermissions" $ c_wchmod p_dest mode + +----------------------------------------------------------------------------- +-- Implementation + +{- |@'createDirectory' dir@ creates a new directory @dir@ which is +initially empty, or as near to empty as the operating system +allows. + +The operation may fail with: + +* 'isPermissionError' \/ 'PermissionDenied' +The process has insufficient privileges to perform the operation. +@[EROFS, EACCES]@ + +* 'isAlreadyExistsError' \/ 'AlreadyExists' +The operand refers to a directory that already exists. +@ [EEXIST]@ + +* 'HardwareFault' +A physical I\/O error has occurred. +@[EIO]@ + +* 'InvalidArgument' +The operand is not a valid directory name. +@[ENAMETOOLONG, ELOOP]@ + +* 'NoSuchThing' +There is no path to the directory. +@[ENOENT, ENOTDIR]@ + +* 'ResourceExhausted' +Insufficient resources (virtual memory, process file descriptors, +physical disk space, etc.) are available to perform the operation. +@[EDQUOT, ENOSPC, ENOMEM, EMLINK]@ + +* 'InappropriateType' +The path refers to an existing non-directory object. +@[EEXIST]@ + +-} + +createDirectory :: FilePath -> IO () +createDirectory path = do + Win32.createDirectory path Nothing + +-- | @'createDirectoryIfMissing' parents dir@ creates a new directory +-- @dir@ if it doesn\'t exist. If the first argument is 'True' +-- the function will also create all parent directories if they are missing. +createDirectoryIfMissing :: Bool -- ^ Create its parents too? + -> FilePath -- ^ The path to the directory you want to make + -> IO () +createDirectoryIfMissing create_parents path0 + | create_parents = createDirs (parents path0) + | otherwise = createDirs (take 1 (parents path0)) + where + parents = reverse . scanl1 () . splitDirectories . normalise + + createDirs [] = return () + createDirs (dir:[]) = createDir dir throw + createDirs (dir:dirs) = + createDir dir $ \_ -> do + createDirs dirs + createDir dir throw + + createDir :: FilePath -> (IOException -> IO ()) -> IO () + createDir dir notExistHandler = do + r <- try $ createDirectory dir + case (r :: Either IOException ()) of + Right () -> return () + Left e + | isDoesNotExistError e -> notExistHandler e + -- createDirectory (and indeed POSIX mkdir) does not distinguish + -- between a dir already existing and a file already existing. So we + -- check for it here. Unfortunately there is a slight race condition + -- here, but we think it is benign. It could report an exeption in + -- the case that the dir did exist but another process deletes the + -- directory and creates a file in its place before we can check + -- that the directory did indeed exist. + | isAlreadyExistsError e -> (do + withFileStatus "createDirectoryIfMissing" dir $ \st -> do + isDir <- isDirectory st + if isDir then return () + else throw e + ) `catch` ((\_ -> return ()) :: IOException -> IO ()) + | otherwise -> throw e + +{- | @'removeDirectory' dir@ removes an existing directory /dir/. The +implementation may specify additional constraints which must be +satisfied before a directory can be removed (e.g. the directory has to +be empty, or may not be in use by other processes). It is not legal +for an implementation to partially remove a directory unless the +entire directory is removed. A conformant implementation need not +support directory removal in all situations (e.g. removal of the root +directory). + +The operation may fail with: + +* 'HardwareFault' +A physical I\/O error has occurred. +EIO + +* 'InvalidArgument' +The operand is not a valid directory name. +[ENAMETOOLONG, ELOOP] + +* 'isDoesNotExistError' \/ 'NoSuchThing' +The directory does not exist. +@[ENOENT, ENOTDIR]@ + +* 'isPermissionError' \/ 'PermissionDenied' +The process has insufficient privileges to perform the operation. +@[EROFS, EACCES, EPERM]@ + +* 'UnsatisfiedConstraints' +Implementation-dependent constraints are not satisfied. +@[EBUSY, ENOTEMPTY, EEXIST]@ + +* 'UnsupportedOperation' +The implementation does not support removal in this situation. +@[EINVAL]@ + +* 'InappropriateType' +The operand refers to an existing non-directory object. +@[ENOTDIR]@ + +-} + +removeDirectory :: FilePath -> IO () +removeDirectory path = + Win32.removeDirectory path + +-- | @'removeDirectoryRecursive' dir@ removes an existing directory /dir/ +-- together with its content and all subdirectories. Be careful, +-- if the directory contains symlinks, the function will follow them. +removeDirectoryRecursive :: FilePath -> IO () +removeDirectoryRecursive startLoc = do + cont <- getDirectoryContents startLoc + sequence_ [rm (startLoc x) | x <- cont, x /= "." && x /= ".."] + removeDirectory startLoc + where + rm :: FilePath -> IO () + rm f = do temp <- try (removeFile f) + case temp of + Left e -> do isDir <- doesDirectoryExist f + -- If f is not a directory, re-throw the error + unless isDir $ throw (e :: SomeException) + removeDirectoryRecursive f + Right _ -> return () + +{- |'removeFile' /file/ removes the directory entry for an existing file +/file/, where /file/ is not itself a directory. The +implementation may specify additional constraints which must be +satisfied before a file can be removed (e.g. the file may not be in +use by other processes). + +The operation may fail with: + +* 'HardwareFault' +A physical I\/O error has occurred. +@[EIO]@ + +* 'InvalidArgument' +The operand is not a valid file name. +@[ENAMETOOLONG, ELOOP]@ + +* 'isDoesNotExistError' \/ 'NoSuchThing' +The file does not exist. +@[ENOENT, ENOTDIR]@ + +* 'isPermissionError' \/ 'PermissionDenied' +The process has insufficient privileges to perform the operation. +@[EROFS, EACCES, EPERM]@ + +* 'UnsatisfiedConstraints' +Implementation-dependent constraints are not satisfied. +@[EBUSY]@ + +* 'InappropriateType' +The operand refers to an existing directory. +@[EPERM, EINVAL]@ + +-} + +removeFile :: FilePath -> IO () +removeFile path = + Win32.deleteFile path + +{- |@'renameDirectory' old new@ changes the name of an existing +directory from /old/ to /new/. If the /new/ directory +already exists, it is atomically replaced by the /old/ directory. +If the /new/ directory is neither the /old/ directory nor an +alias of the /old/ directory, it is removed as if by +'removeDirectory'. A conformant implementation need not support +renaming directories in all situations (e.g. renaming to an existing +directory, or across different physical devices), but the constraints +must be documented. + +On Win32 platforms, @renameDirectory@ fails if the /new/ directory already +exists. + +The operation may fail with: + +* 'HardwareFault' +A physical I\/O error has occurred. +@[EIO]@ + +* 'InvalidArgument' +Either operand is not a valid directory name. +@[ENAMETOOLONG, ELOOP]@ + +* 'isDoesNotExistError' \/ 'NoSuchThing' +The original directory does not exist, or there is no path to the target. +@[ENOENT, ENOTDIR]@ + +* 'isPermissionError' \/ 'PermissionDenied' +The process has insufficient privileges to perform the operation. +@[EROFS, EACCES, EPERM]@ + +* 'ResourceExhausted' +Insufficient resources are available to perform the operation. +@[EDQUOT, ENOSPC, ENOMEM, EMLINK]@ + +* 'UnsatisfiedConstraints' +Implementation-dependent constraints are not satisfied. +@[EBUSY, ENOTEMPTY, EEXIST]@ + +* 'UnsupportedOperation' +The implementation does not support renaming in this situation. +@[EINVAL, EXDEV]@ + +* 'InappropriateType' +Either path refers to an existing non-directory object. +@[ENOTDIR, EISDIR]@ + +-} + +renameDirectory :: FilePath -> FilePath -> IO () +renameDirectory opath npath = do + -- XXX this test isn't performed atomically with the following rename + -- ToDo: use Win32 API + withFileStatus "renameDirectory" opath $ \st -> do + is_dir <- isDirectory st + if (not is_dir) + then ioException (ioeSetErrorString + (mkIOError InappropriateType "renameDirectory" Nothing (Just opath)) + "not a directory") + else do + Win32.moveFileEx opath npath Win32.mOVEFILE_REPLACE_EXISTING + +{- |@'renameFile' old new@ changes the name of an existing file system +object from /old/ to /new/. If the /new/ object already +exists, it is atomically replaced by the /old/ object. Neither +path may refer to an existing directory. A conformant implementation +need not support renaming files in all situations (e.g. renaming +across different physical devices), but the constraints must be +documented. + +The operation may fail with: + +* 'HardwareFault' +A physical I\/O error has occurred. +@[EIO]@ + +* 'InvalidArgument' +Either operand is not a valid file name. +@[ENAMETOOLONG, ELOOP]@ + +* 'isDoesNotExistError' \/ 'NoSuchThing' +The original file does not exist, or there is no path to the target. +@[ENOENT, ENOTDIR]@ + +* 'isPermissionError' \/ 'PermissionDenied' +The process has insufficient privileges to perform the operation. +@[EROFS, EACCES, EPERM]@ + +* 'ResourceExhausted' +Insufficient resources are available to perform the operation. +@[EDQUOT, ENOSPC, ENOMEM, EMLINK]@ + +* 'UnsatisfiedConstraints' +Implementation-dependent constraints are not satisfied. +@[EBUSY]@ + +* 'UnsupportedOperation' +The implementation does not support renaming in this situation. +@[EXDEV]@ + +* 'InappropriateType' +Either path refers to an existing directory. +@[ENOTDIR, EISDIR, EINVAL, EEXIST, ENOTEMPTY]@ + +-} + +renameFile :: FilePath -> FilePath -> IO () +renameFile opath npath = do + -- XXX this test isn't performed atomically with the following rename + -- ToDo: use Win32 API + withFileOrSymlinkStatus "renameFile" opath $ \st -> do + is_dir <- isDirectory st + if is_dir + then ioException (ioeSetErrorString + (mkIOError InappropriateType "renameFile" Nothing (Just opath)) + "is a directory") + else do + Win32.moveFileEx opath npath Win32.mOVEFILE_REPLACE_EXISTING + +{- |@'copyFile' old new@ copies the existing file from /old/ to /new/. +If the /new/ file already exists, it is atomically replaced by the /old/ file. +Neither path may refer to an existing directory. The permissions of /old/ are +copied to /new/, if possible. +-} + +copyFile :: FilePath -> FilePath -> IO () +copyFile fromFPath toFPath = + copy `Prelude.catch` (\exc -> throw $ ioeSetLocation exc "copyFile") + where copy = bracket (openBinaryFile fromFPath ReadMode) hClose $ \hFrom -> + bracketOnError openTmp cleanTmp $ \(tmpFPath, hTmp) -> + do allocaBytes bufferSize $ copyContents hFrom hTmp + hClose hTmp + ignoreIOExceptions $ copyPermissions fromFPath tmpFPath + renameFile tmpFPath toFPath + openTmp = openBinaryTempFile (takeDirectory toFPath) ".copyFile.tmp" + cleanTmp (tmpFPath, hTmp) + = do ignoreIOExceptions $ hClose hTmp + ignoreIOExceptions $ removeFile tmpFPath + bufferSize = 1024 + + copyContents hFrom hTo buffer = do + count <- hGetBuf hFrom buffer bufferSize + when (count > 0) $ do + hPutBuf hTo buffer count + copyContents hFrom hTo buffer + + ignoreIOExceptions io = io `catch` ioExceptionIgnorer + ioExceptionIgnorer :: IOException -> IO () + ioExceptionIgnorer _ = return () + +-- | Given path referring to a file or directory, returns a +-- canonicalized path, with the intent that two paths referring +-- to the same file\/directory will map to the same canonicalized +-- path. Note that it is impossible to guarantee that the +-- implication (same file\/dir \<=\> same canonicalizedPath) holds +-- in either direction: this function can make only a best-effort +-- attempt. +canonicalizePath :: FilePath -> IO FilePath +canonicalizePath fpath = + do path <- Win32.getFullPathName fpath + return (normalise path) + -- normalise does more stuff, like upper-casing the drive letter + + +-- | 'makeRelative' the current directory. +makeRelativeToCurrentDirectory :: FilePath -> IO FilePath +makeRelativeToCurrentDirectory x = do + cur <- getCurrentDirectory + return $ makeRelative cur x + +-- | Given an executable file name, searches for such file in the +-- directories listed in system PATH. The returned value is the path +-- to the found executable or Nothing if an executable with the given +-- name was not found. For example (findExecutable \"ghc\") gives you +-- the path to GHC. +-- +-- The path returned by 'findExecutable' corresponds to the +-- program that would be executed by 'System.Process.createProcess' +-- when passed the same string (as a RawCommand, not a ShellCommand). +-- +-- On Windows, 'findExecutable' calls the Win32 function 'SearchPath', +-- which may search other places before checking the directories in +-- @PATH@. Where it actually searches depends on registry settings, +-- but notably includes the directory containing the current +-- executable. See +-- for more +-- details. +-- +findExecutable :: String -> IO (Maybe FilePath) +findExecutable binary = + Win32.searchPath Nothing binary ('.':exeExtension) + + +{- |@'getDirectoryContents' dir@ returns a list of /all/ entries +in /dir/. + +The operation may fail with: + +* 'HardwareFault' +A physical I\/O error has occurred. +@[EIO]@ + +* 'InvalidArgument' +The operand is not a valid directory name. +@[ENAMETOOLONG, ELOOP]@ + +* 'isDoesNotExistError' \/ 'NoSuchThing' +The directory does not exist. +@[ENOENT, ENOTDIR]@ + +* 'isPermissionError' \/ 'PermissionDenied' +The process has insufficient privileges to perform the operation. +@[EACCES]@ + +* 'ResourceExhausted' +Insufficient resources are available to perform the operation. +@[EMFILE, ENFILE]@ + +* 'InappropriateType' +The path refers to an existing non-directory object. +@[ENOTDIR]@ + +-} + +getDirectoryContents :: FilePath -> IO [FilePath] +getDirectoryContents path = + modifyIOError ((`ioeSetFileName` path) . + (`ioeSetLocation` "getDirectoryContents")) $ do + bracket + (Win32.findFirstFile (path "*")) + (\(h,_) -> Win32.findClose h) + (\(h,fdat) -> loop h fdat []) + where + -- we needn't worry about empty directories: adirectory always + -- has at least "." and ".." entries + loop :: Win32.HANDLE -> Win32.FindData -> [FilePath] -> IO [FilePath] + loop h fdat acc = do + filename <- Win32.getFindDataFileName fdat + more <- Win32.findNextFile h fdat + if more + then loop h fdat (filename:acc) + else return (filename:acc) + -- no need to reverse, ordering is undefined + +{- |If the operating system has a notion of current directories, +'getCurrentDirectory' returns an absolute path to the +current directory of the calling process. + +The operation may fail with: + +* 'HardwareFault' +A physical I\/O error has occurred. +@[EIO]@ + +* 'isDoesNotExistError' \/ 'NoSuchThing' +There is no path referring to the current directory. +@[EPERM, ENOENT, ESTALE...]@ + +* 'isPermissionError' \/ 'PermissionDenied' +The process has insufficient privileges to perform the operation. +@[EACCES]@ + +* 'ResourceExhausted' +Insufficient resources are available to perform the operation. + +* 'UnsupportedOperation' +The operating system has no notion of current directory. + +-} +getCurrentDirectory :: IO FilePath +getCurrentDirectory = do + Win32.getCurrentDirectory + +{- |If the operating system has a notion of current directories, +@'setCurrentDirectory' dir@ changes the current +directory of the calling process to /dir/. + +The operation may fail with: + +* 'HardwareFault' +A physical I\/O error has occurred. +@[EIO]@ + +* 'InvalidArgument' +The operand is not a valid directory name. +@[ENAMETOOLONG, ELOOP]@ + +* 'isDoesNotExistError' \/ 'NoSuchThing' +The directory does not exist. +@[ENOENT, ENOTDIR]@ + +* 'isPermissionError' \/ 'PermissionDenied' +The process has insufficient privileges to perform the operation. +@[EACCES]@ + +* 'UnsupportedOperation' +The operating system has no notion of current directory, or the +current directory cannot be dynamically changed. + +* 'InappropriateType' +The path refers to an existing non-directory object. +@[ENOTDIR]@ + +-} + +setCurrentDirectory :: FilePath -> IO () +setCurrentDirectory path = + Win32.setCurrentDirectory path + +{- |The operation 'doesDirectoryExist' returns 'True' if the argument file +exists and is a directory, and 'False' otherwise. +-} + +doesDirectoryExist :: FilePath -> IO Bool +doesDirectoryExist name = + (withFileStatus "doesDirectoryExist" name $ \st -> isDirectory st) + `catch` ((\ _ -> return False) :: IOException -> IO Bool) + +{- |The operation 'doesFileExist' returns 'True' +if the argument file exists and is not a directory, and 'False' otherwise. +-} + +doesFileExist :: FilePath -> IO Bool +doesFileExist name = + (withFileStatus "doesFileExist" name $ \st -> do b <- isDirectory st; return (not b)) + `catch` ((\ _ -> return False) :: IOException -> IO Bool) + +{- |The 'getModificationTime' operation returns the +clock time at which the file or directory was last modified. + +The operation may fail with: + +* 'isPermissionError' if the user is not permitted to access + the modification time; or + +* 'isDoesNotExistError' if the file or directory does not exist. + +-} + +getModificationTime :: FilePath -> IO ClockTime +getModificationTime name = do + -- ToDo: use Win32 API + withFileStatus "getModificationTime" name $ \ st -> do + modificationTime st + + +withFileStatus :: String -> FilePath -> (Ptr CStat -> IO a) -> IO a +withFileStatus loc name f = do + modifyIOError (`ioeSetFileName` name) $ + allocaBytes sizeof_stat $ \p -> + withFilePath (fileNameEndClean name) $ \s -> do + throwErrnoIfMinus1Retry_ loc (c_stat s p) + +withFileOrSymlinkStatus :: String -> FilePath -> (Ptr CStat -> IO a) -> IO a +withFileOrSymlinkStatus loc name f = do + modifyIOError (`ioeSetFileName` name) $ + allocaBytes sizeof_stat $ \p -> + withFilePath name $ \s -> do + throwErrnoIfMinus1Retry_ loc (lstat s p) + +modificationTime :: Ptr CStat -> IO ClockTime +modificationTime stat = do + mtime <- st_mtime stat + let realToInteger = round . realToFrac :: Real a => a -> Integer + return (TOD (realToInteger (mtime :: CTime)) 0) + +isDirectory :: Ptr CStat -> IO Bool +isDirectory stat = do + mode <- st_mode stat + return (s_isdir mode) + +fileNameEndClean :: String -> String +fileNameEndClean name = if isDrive name then addTrailingPathSeparator name + else dropTrailingPathSeparator name + +foreign import ccall unsafe "HsDirectory.h __hscore_S_IRUSR" s_IRUSR :: CMode +foreign import ccall unsafe "HsDirectory.h __hscore_S_IWUSR" s_IWUSR :: CMode +foreign import ccall unsafe "HsDirectory.h __hscore_S_IXUSR" s_IXUSR :: CMode +foreign import ccall unsafe "__hscore_S_IFDIR" s_IFDIR :: CMode + + +foreign import ccall unsafe "__hscore_long_path_size" + long_path_size :: Int + +{- | Returns the current user's home directory. + +The directory returned is expected to be writable by the current user, +but note that it isn't generally considered good practice to store +application-specific data here; use 'getAppUserDataDirectory' +instead. + +On Unix, 'getHomeDirectory' returns the value of the @HOME@ +environment variable. On Windows, the system is queried for a +suitable path; a typical path might be +@C:/Documents And Settings/user@. + +The operation may fail with: + +* 'UnsupportedOperation' +The operating system has no notion of home directory. + +* 'isDoesNotExistError' +The home directory for the current user does not exist, or +cannot be found. +-} +getHomeDirectory :: IO FilePath +getHomeDirectory = + modifyIOError ((`ioeSetLocation` "getHomeDirectory")) $ do + r <- try $ Win32.sHGetFolderPath nullPtr Win32.cSIDL_PROFILE nullPtr 0 + case (r :: Either IOException String) of + Right s -> return s + Left _ -> do + r1 <- try $ Win32.sHGetFolderPath nullPtr Win32.cSIDL_WINDOWS nullPtr 0 + case r1 of + Right s -> return s + Left e -> ioError (e :: IOException) + +{- | Returns the pathname of a directory in which application-specific +data for the current user can be stored. The result of +'getAppUserDataDirectory' for a given application is specific to +the current user. + +The argument should be the name of the application, which will be used +to construct the pathname (so avoid using unusual characters that +might result in an invalid pathname). + +Note: the directory may not actually exist, and may need to be created +first. It is expected that the parent directory exists and is +writable. + +On Unix, this function returns @$HOME\/.appName@. On Windows, a +typical path might be + +> C:/Documents And Settings/user/Application Data/appName + +The operation may fail with: + +* 'UnsupportedOperation' +The operating system has no notion of application-specific data directory. + +* 'isDoesNotExistError' +The home directory for the current user does not exist, or +cannot be found. +-} +getAppUserDataDirectory :: String -> IO FilePath +getAppUserDataDirectory appName = do + modifyIOError ((`ioeSetLocation` "getAppUserDataDirectory")) $ do + s <- Win32.sHGetFolderPath nullPtr Win32.cSIDL_APPDATA nullPtr 0 + return (s++'\\':appName) + +{- | Returns the current user's document directory. + +The directory returned is expected to be writable by the current user, +but note that it isn't generally considered good practice to store +application-specific data here; use 'getAppUserDataDirectory' +instead. + +On Unix, 'getUserDocumentsDirectory' returns the value of the @HOME@ +environment variable. On Windows, the system is queried for a +suitable path; a typical path might be +@C:\/Documents and Settings\/user\/My Documents@. + +The operation may fail with: + +* 'UnsupportedOperation' +The operating system has no notion of document directory. + +* 'isDoesNotExistError' +The document directory for the current user does not exist, or +cannot be found. +-} +getUserDocumentsDirectory :: IO FilePath +getUserDocumentsDirectory = do + modifyIOError ((`ioeSetLocation` "getUserDocumentsDirectory")) $ do + Win32.sHGetFolderPath nullPtr Win32.cSIDL_PERSONAL nullPtr 0 + +{- | Returns the current directory for temporary files. + +On Unix, 'getTemporaryDirectory' returns the value of the @TMPDIR@ +environment variable or \"\/tmp\" if the variable isn\'t defined. +On Windows, the function checks for the existence of environment variables in +the following order and uses the first path found: + +* +TMP environment variable. + +* +TEMP environment variable. + +* +USERPROFILE environment variable. + +* +The Windows directory + +The operation may fail with: + +* 'UnsupportedOperation' +The operating system has no notion of temporary directory. + +The function doesn\'t verify whether the path exists. +-} +getTemporaryDirectory :: IO FilePath +getTemporaryDirectory = do + Win32.getTemporaryDirectory + +-- ToDo: This should be determined via autoconf (AC_EXEEXT) +-- | Extension for executable files +-- (typically @\"\"@ on Unix and @\"exe\"@ on Windows or OS\/2) +exeExtension :: String +exeExtension = "exe" diff -ruN haskell-src-exts-1.9.0/Test/examples/EmptyContext.hs haskell-src-exts/Test/examples/EmptyContext.hs --- haskell-src-exts-1.9.0/Test/examples/EmptyContext.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/EmptyContext.hs 2010-12-15 09:33:41.506936110 -0800 @@ -0,0 +1 @@ +happyThen :: () => P a diff -ruN haskell-src-exts-1.9.0/Test/examples/EmptyInstance.hs haskell-src-exts/Test/examples/EmptyInstance.hs --- haskell-src-exts-1.9.0/Test/examples/EmptyInstance.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/EmptyInstance.hs 2010-12-15 09:33:41.677852714 -0800 @@ -0,0 +1,4 @@ +instance Traversable Tree where + +x :: Int +x = 1 diff -ruN haskell-src-exts-1.9.0/Test/examples/EmptyList.hs haskell-src-exts/Test/examples/EmptyList.hs --- haskell-src-exts-1.9.0/Test/examples/EmptyList.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/EmptyList.hs 2010-12-15 09:33:41.853712327 -0800 @@ -0,0 +1,3 @@ +module EmptyList where + +eAttrs = [] \ No newline at end of file diff -ruN haskell-src-exts-1.9.0/Test/examples/Ex1.hs haskell-src-exts/Test/examples/Ex1.hs --- haskell-src-exts-1.9.0/Test/examples/Ex1.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/Ex1.hs 2010-12-15 09:33:42.301961984 -0800 @@ -0,0 +1 @@ +yes = 1 where x = 1 diff -ruN haskell-src-exts-1.9.0/Test/examples/FamilyKindSig.hs haskell-src-exts/Test/examples/FamilyKindSig.hs --- haskell-src-exts-1.9.0/Test/examples/FamilyKindSig.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/FamilyKindSig.hs 2010-12-15 09:33:42.474711130 -0800 @@ -0,0 +1,4 @@ +{-# LANGUAGE TypeFamilies #-} +module FamilyKindSig where + +type family WithKindSig (a :: * -> *) \ No newline at end of file diff -ruN haskell-src-exts-1.9.0/Test/examples/FixityTests.hs haskell-src-exts/Test/examples/FixityTests.hs --- haskell-src-exts-1.9.0/Test/examples/FixityTests.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/FixityTests.hs 2010-12-15 09:33:42.649755417 -0800 @@ -0,0 +1,3 @@ +main = forM_ cmdReports $ \x -> do + putStrLn $ "Writing report to " ++ x ++ " ..." + writeReport x ideas \ No newline at end of file diff -ruN haskell-src-exts-1.9.0/Test/examples/ForeignImport.hs haskell-src-exts/Test/examples/ForeignImport.hs --- haskell-src-exts-1.9.0/Test/examples/ForeignImport.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/ForeignImport.hs 2010-12-15 09:33:42.822212265 -0800 @@ -0,0 +1,2 @@ +foreign import ccall unsafe "getProgArgv" + getProgArgv :: Ptr CInt -> Ptr (Ptr CString) -> IO () \ No newline at end of file diff -ruN haskell-src-exts-1.9.0/Test/examples/GadtDeriving.hs haskell-src-exts/Test/examples/GadtDeriving.hs --- haskell-src-exts-1.9.0/Test/examples/GadtDeriving.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/GadtDeriving.hs 2010-12-15 09:33:42.997798380 -0800 @@ -0,0 +1,5 @@ +{-# LANGUAGE GADTs #-} + +data Foo where + Foo :: Int -> Foo + deriving (Eq,Ord,Typeable) diff -ruN haskell-src-exts-1.9.0/Test/examples/GenericTree.hs haskell-src-exts/Test/examples/GenericTree.hs --- haskell-src-exts-1.9.0/Test/examples/GenericTree.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/GenericTree.hs 2010-12-15 09:33:43.169962849 -0800 @@ -0,0 +1,7 @@ +{-# LANGUAGE RankNTypes #-} +module GenericTree where + +import Data.Typeable + +dynRep :: (Typeable a) => a -> (TypeRep, forall b. (Typeable b) => b -> (Maybe b)) +dynRep a = (typeOf a, \_ -> cast a) \ No newline at end of file diff -ruN haskell-src-exts-1.9.0/Test/examples/GhcDeriving.hs haskell-src-exts/Test/examples/GhcDeriving.hs --- haskell-src-exts-1.9.0/Test/examples/GhcDeriving.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/GhcDeriving.hs 2010-12-15 09:33:43.343456625 -0800 @@ -0,0 +1,4 @@ + + +newtype CodeGenModule a = CGM (StateT CGMState IO a) + deriving (Monad, MonadState [s], MonadIO) \ No newline at end of file diff -ruN haskell-src-exts-1.9.0/Test/examples/GroupKeyword.hs haskell-src-exts/Test/examples/GroupKeyword.hs --- haskell-src-exts-1.9.0/Test/examples/GroupKeyword.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/GroupKeyword.hs 2010-12-15 09:33:43.517711976 -0800 @@ -0,0 +1,4 @@ +-- {-# LANGUAGE TransformListComp #-} +module GroupKeyword where + +a = map head $ group $ sort [1..100] \ No newline at end of file diff -ruN haskell-src-exts-1.9.0/Test/examples/HappyDoAction.hs haskell-src-exts/Test/examples/HappyDoAction.hs --- haskell-src-exts-1.9.0/Test/examples/HappyDoAction.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/HappyDoAction.hs 2010-12-15 09:33:43.689961782 -0800 @@ -0,0 +1,30 @@ +{-# LANGUAGE MagicHash #-} +module HappyDoAction where + +foo :: Int# + +happyDoAction i tk st + = {- nothing -} + + + case action of + 0# -> {- nothing -} + happyFail i tk st + -1# -> {- nothing -} + happyAccept i tk st + n | (n <# (0# :: Int#)) -> {- nothing -} + + (happyReduceArr ! rule) i tk st + where rule = (I# ((negateInt# ((n +# (1# :: Int#)))))) + n -> {- nothing -} + + + happyShift new_state i tk st + where new_state = (n -# (1# :: Int#)) + where off = indexShortOffAddr happyActOffsets st + off_i = (off +# i) + check = if (off_i >=# (0# :: Int#)) + then (indexShortOffAddr happyCheck off_i ==# i) + else False + action | check = indexShortOffAddr happyTable off_i + | otherwise = indexShortOffAddr happyDefActions st diff -ruN haskell-src-exts-1.9.0/Test/examples/HexPrec.hs haskell-src-exts/Test/examples/HexPrec.hs --- haskell-src-exts-1.9.0/Test/examples/HexPrec.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/HexPrec.hs 2010-12-15 09:33:43.865773555 -0800 @@ -0,0 +1,6 @@ +module HexPrec where + +(%%) :: Int -> Int -> Int +a %% b = 0 + +infixl 0x02 %% \ No newline at end of file diff -ruN haskell-src-exts-1.9.0/Test/examples/Hyphen.hs haskell-src-exts/Test/examples/Hyphen.hs --- haskell-src-exts-1.9.0/Test/examples/Hyphen.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/Hyphen.hs 2010-12-15 09:33:44.038212827 -0800 @@ -0,0 +1,2 @@ + +foo x y = fromIntegral $ x-y+1 diff -ruN haskell-src-exts-1.9.0/Test/examples/ImportSymbol.hs haskell-src-exts/Test/examples/ImportSymbol.hs --- haskell-src-exts-1.9.0/Test/examples/ImportSymbol.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/ImportSymbol.hs 2010-12-15 09:33:44.209718913 -0800 @@ -0,0 +1 @@ +import Data.Generics hiding ((:*:)) diff -ruN haskell-src-exts-1.9.0/Test/examples/IndentedWhere.hs haskell-src-exts/Test/examples/IndentedWhere.hs --- haskell-src-exts-1.9.0/Test/examples/IndentedWhere.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/IndentedWhere.hs 2010-12-15 09:33:44.381721969 -0800 @@ -0,0 +1,4 @@ + +f x = g + where g :: Int + g = 0 \ No newline at end of file diff -ruN haskell-src-exts-1.9.0/Test/examples/InfixParser.hs haskell-src-exts/Test/examples/InfixParser.hs --- haskell-src-exts-1.9.0/Test/examples/InfixParser.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/InfixParser.hs 2010-12-15 09:33:44.565722750 -0800 @@ -0,0 +1,6 @@ +module InfixParser where + +type Parse a b = [a] -> [(b, [a])] + +(<|>) :: Parse a b -> Parse a b -> Parse a b +(p1 <|> p2) i = p1 i ++ p2 i diff -ruN haskell-src-exts-1.9.0/Test/examples/LanguagePragma.hs haskell-src-exts/Test/examples/LanguagePragma.hs --- haskell-src-exts-1.9.0/Test/examples/LanguagePragma.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/LanguagePragma.hs 2010-12-15 09:33:44.738790106 -0800 @@ -0,0 +1 @@ +{-# LANGUAGE PatternGuards, ViewPatterns #-} diff -ruN haskell-src-exts-1.9.0/Test/examples/LineOptionsPragma.hs haskell-src-exts/Test/examples/LineOptionsPragma.hs --- haskell-src-exts-1.9.0/Test/examples/LineOptionsPragma.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/LineOptionsPragma.hs 2010-12-15 09:33:44.909713321 -0800 @@ -0,0 +1,3 @@ +{-# OPTIONS #-} +{-# LINE 49 "src/Language/C/Parser/Lexer.x" #-} +module Fail where \ No newline at end of file diff -ruN haskell-src-exts-1.9.0/Test/examples/LinePragma.hs haskell-src-exts/Test/examples/LinePragma.hs --- haskell-src-exts-1.9.0/Test/examples/LinePragma.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/LinePragma.hs 2010-12-15 09:33:45.082212057 -0800 @@ -0,0 +1,5 @@ +{-# LINE 1 "Algebra.lhs" #-} +module Algebra where + +{-# LINE 3 "Algebra.lhs" #-} +foo bar = bar \ No newline at end of file diff -ruN haskell-src-exts-1.9.0/Test/examples/ListComp1.hs haskell-src-exts/Test/examples/ListComp1.hs --- haskell-src-exts-1.9.0/Test/examples/ListComp1.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/ListComp1.hs 2010-12-15 09:33:45.253965018 -0800 @@ -0,0 +1 @@ +copyFiles = [a | f ('.':)] diff -ruN haskell-src-exts-1.9.0/Test/examples/MagicHash.hs haskell-src-exts/Test/examples/MagicHash.hs --- haskell-src-exts-1.9.0/Test/examples/MagicHash.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/MagicHash.hs 2010-12-15 09:33:45.833716514 -0800 @@ -0,0 +1,12 @@ +{-# LANGUAGE MagicHash #-} + +import GHC.Exts + +putByteArray :: Int# -> Int# +putByteArray s# = s# +# 1# + +floatFoo :: Float# -> Float +floatFoo f# = F# (f# `plusFloat#` 1.2e2#) + +charFun :: Char# -> Bool +charFun c# = c# `gtChar#` 'a'# \ No newline at end of file diff -ruN haskell-src-exts-1.9.0/Test/examples/MultiCtxt.hs haskell-src-exts/Test/examples/MultiCtxt.hs --- haskell-src-exts-1.9.0/Test/examples/MultiCtxt.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/MultiCtxt.hs 2010-12-15 09:33:46.005712375 -0800 @@ -0,0 +1,6 @@ +{-# LANGUAGE RankNTypes #-} + +module MultiCtxt where + +multipleCtx :: Eq a => (Show a => a) +multipleCtx = undefined diff -ruN haskell-src-exts-1.9.0/Test/examples/NestedAsPat.hs haskell-src-exts/Test/examples/NestedAsPat.hs --- haskell-src-exts-1.9.0/Test/examples/NestedAsPat.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/NestedAsPat.hs 2010-12-15 09:33:46.361986511 -0800 @@ -0,0 +1,3 @@ +module NestedAsPat where + +nestedAsPat [x@(Just _)] = undefined \ No newline at end of file diff -ruN haskell-src-exts-1.9.0/Test/examples/NPlusK.hs haskell-src-exts/Test/examples/NPlusK.hs --- haskell-src-exts-1.9.0/Test/examples/NPlusK.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/NPlusK.hs 2010-12-15 09:33:46.189962397 -0800 @@ -0,0 +1,2 @@ + +f (n+3) = n diff -ruN haskell-src-exts-1.9.0/Test/examples/PackageImport.hs haskell-src-exts/Test/examples/PackageImport.hs --- haskell-src-exts-1.9.0/Test/examples/PackageImport.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/PackageImport.hs 2010-12-15 09:33:46.533771333 -0800 @@ -0,0 +1,5 @@ +{-# LANGUAGE PackageImports #-} + +import "haskell-src-exts" Language.Haskell.Exts + +main = undefined \ No newline at end of file diff -ruN haskell-src-exts-1.9.0/Test/examples/ParenFunBind.hs haskell-src-exts/Test/examples/ParenFunBind.hs --- haskell-src-exts-1.9.0/Test/examples/ParenFunBind.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/ParenFunBind.hs 2010-12-15 09:33:46.729875792 -0800 @@ -0,0 +1,3 @@ +module ParenFunBind where + +(foo x) y = x + y \ No newline at end of file diff -ruN haskell-src-exts-1.9.0/Test/examples/Pragma.hs haskell-src-exts/Test/examples/Pragma.hs --- haskell-src-exts-1.9.0/Test/examples/Pragma.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/Pragma.hs 2010-12-15 09:33:46.906212605 -0800 @@ -0,0 +1,7 @@ + + +data Bar = Bar + +instance Eq Bar where + {-# INLINE (==) #-} + a == b = error "here" diff -ruN haskell-src-exts-1.9.0/Test/examples/QualifiedDot.hs haskell-src-exts/Test/examples/QualifiedDot.hs --- haskell-src-exts-1.9.0/Test/examples/QualifiedDot.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/QualifiedDot.hs 2010-12-15 09:33:47.082212695 -0800 @@ -0,0 +1,3 @@ +module QualifiedDot where + +twoDots = (Prelude..) \ No newline at end of file diff -ruN haskell-src-exts-1.9.0/Test/examples/QuasiQuoteLines.hs haskell-src-exts/Test/examples/QuasiQuoteLines.hs --- haskell-src-exts-1.9.0/Test/examples/QuasiQuoteLines.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/QuasiQuoteLines.hs 2010-12-15 09:33:47.250025430 -0800 @@ -0,0 +1,12 @@ +{-# LANGUAGE QuasiQuotes #-} + +import Here + +str :: String +str = [$here|test +test +test test |] + + +main :: IO() +main = do putStrLn str diff -ruN haskell-src-exts-1.9.0/Test/examples/Rank2Types.hs haskell-src-exts/Test/examples/Rank2Types.hs --- haskell-src-exts-1.9.0/Test/examples/Rank2Types.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/Rank2Types.hs 2010-12-15 09:33:47.710712170 -0800 @@ -0,0 +1,4 @@ +{-# LANGUAGE Rank2Types #-} + +test :: Int -> forall a. [a] -> Int +test _ _ = 1 diff -ruN haskell-src-exts-1.9.0/Test/examples/ReadP.hs haskell-src-exts/Test/examples/ReadP.hs --- haskell-src-exts-1.9.0/Test/examples/ReadP.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/ReadP.hs 2010-12-15 09:33:47.878008827 -0800 @@ -0,0 +1,2 @@ +{-# LANGUAGE TypeOperators #-} +newtype ReadP a = R (forall b . (a -> P b) -> P b) \ No newline at end of file diff -ruN haskell-src-exts-1.9.0/Test/examples/RealGHC.lhs haskell-src-exts/Test/examples/RealGHC.lhs --- haskell-src-exts-1.9.0/Test/examples/RealGHC.lhs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/RealGHC.lhs 2010-12-15 09:33:48.326212859 -0800 @@ -0,0 +1,913 @@ +% +% (c) The GRASP/AQUA Project, Glasgow University, 1992-1998 +% +\section[CoreRules]{Transformation rules} + +\begin{code} +{-# OPTIONS -w #-} +{-# LANGUAGE PatternGuards #-} +-- The above warning supression flag is a temporary kludge. +-- While working on this module you are encouraged to remove it and fix +-- any warnings in the module. See +-- http://hackage.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#Warnings +-- for details + +-- | Functions for collecting together and applying rewrite rules to a module. +-- The 'CoreRule' datatype itself is declared elsewhere. +module Rules ( + -- * RuleBase + RuleBase, + + -- ** Constructing + emptyRuleBase, mkRuleBase, extendRuleBaseList, + unionRuleBase, pprRuleBase, + + -- ** Checking rule applications + ruleCheckProgram, + + -- ** Manipulating 'SpecInfo' rules + mkSpecInfo, extendSpecInfo, addSpecInfo, + addIdSpecialisations, + + -- * Misc. CoreRule helpers + rulesOfBinds, getRules, pprRulesForUser, + + lookupRule, mkLocalRule, roughTopNames + ) where + +-- #include "HsVersions.h" + +import CoreSyn -- All of it +import OccurAnal ( occurAnalyseExpr ) +import CoreFVs ( exprFreeVars, exprsFreeVars, bindFreeVars, rulesFreeVars ) +import CoreUtils ( tcEqExprX, exprType ) +import PprCore ( pprRules ) +import Type ( Type, TvSubstEnv ) +import Coercion ( coercionKind ) +import TcType ( tcSplitTyConApp_maybe ) +import CoreTidy ( tidyRules ) +import Id +import IdInfo ( SpecInfo( SpecInfo ) ) +import Var ( Var ) +import VarEnv +import VarSet +import Name ( Name, NamedThing(..) ) +import NameEnv +import Unify ( ruleMatchTyX, MatchEnv(..) ) +import BasicTypes ( Activation ) +import StaticFlags ( opt_PprStyle_Debug ) +import Outputable +import FastString +import Maybes +import OrdList +import Bag +import Util +import Data.List +\end{code} + + +%************************************************************************ +%* * +\subsection[specialisation-IdInfo]{Specialisation info about an @Id@} +%* * +%************************************************************************ + +A @CoreRule@ holds details of one rule for an @Id@, which +includes its specialisations. + +For example, if a rule for @f@ contains the mapping: +\begin{verbatim} + forall a b d. [Type (List a), Type b, Var d] ===> f' a b +\end{verbatim} +then when we find an application of f to matching types, we simply replace +it by the matching RHS: +\begin{verbatim} + f (List Int) Bool dict ===> f' Int Bool +\end{verbatim} +All the stuff about how many dictionaries to discard, and what types +to apply the specialised function to, are handled by the fact that the +Rule contains a template for the result of the specialisation. + +There is one more exciting case, which is dealt with in exactly the same +way. If the specialised value is unboxed then it is lifted at its +definition site and unlifted at its uses. For example: + + pi :: forall a. Num a => a + +might have a specialisation + + [Int#] ===> (case pi' of Lift pi# -> pi#) + +where pi' :: Lift Int# is the specialised version of pi. + +\begin{code} +mkLocalRule :: RuleName -> Activation + -> Name -> [CoreBndr] -> [CoreExpr] -> CoreExpr -> CoreRule +-- ^ Used to make 'CoreRule' for an 'Id' defined in the module being +-- compiled. See also 'CoreSyn.CoreRule' +mkLocalRule name act fn bndrs args rhs + = Rule { ru_name = name, ru_fn = fn, ru_act = act, + ru_bndrs = bndrs, ru_args = args, + ru_rhs = rhs, ru_rough = roughTopNames args, + ru_local = True } + +-------------- +roughTopNames :: [CoreExpr] -> [Maybe Name] +-- ^ Find the \"top\" free names of several expressions. +-- Such names are either: +-- +-- 1. The function finally being applied to in an application chain +-- (if that name is a GlobalId: see "Var#globalvslocal"), or +-- +-- 2. The 'TyCon' if the expression is a 'Type' +-- +-- This is used for the fast-match-check for rules; +-- if the top names don't match, the rest can't +roughTopNames args = map roughTopName args + +roughTopName :: CoreExpr -> Maybe Name +roughTopName (Type ty) = case tcSplitTyConApp_maybe ty of + Just (tc,_) -> Just (getName tc) + Nothing -> Nothing +roughTopName (App f a) = roughTopName f +roughTopName (Var f) | isGlobalId f = Just (idName f) + | otherwise = Nothing +roughTopName other = Nothing + +ruleCantMatch :: [Maybe Name] -> [Maybe Name] -> Bool +-- ^ @ruleCantMatch tpl actual@ returns True only if @actual@ +-- definitely can't match @tpl@ by instantiating @tpl@. +-- It's only a one-way match; unlike instance matching we +-- don't consider unification. +-- +-- Notice that [_$_] +-- @ruleCantMatch [Nothing] [Just n2] = False@ +-- Reason: a template variable can be instantiated by a constant +-- Also: +-- @ruleCantMatch [Just n1] [Nothing] = False@ +-- Reason: a local variable @v@ in the actuals might [_$_] + +ruleCantMatch (Just n1 : ts) (Just n2 : as) = n1 /= n2 || ruleCantMatch ts as +ruleCantMatch (t : ts) (a : as) = ruleCantMatch ts as +ruleCantMatch ts as = False +\end{code} + +\begin{code} +pprRulesForUser :: [CoreRule] -> SDoc +-- (a) tidy the rules +-- (b) sort them into order based on the rule name +-- (c) suppress uniques (unless -dppr-debug is on) +-- This combination makes the output stable so we can use in testing +-- It's here rather than in PprCore because it calls tidyRules +pprRulesForUser rules + = withPprStyle defaultUserStyle $ + pprRules $ + sortLe le_rule $ + tidyRules emptyTidyEnv rules + where + le_rule r1 r2 = ru_name r1 <= ru_name r2 +\end{code} + + +%************************************************************************ +%* * + SpecInfo: the rules in an IdInfo +%* * +%************************************************************************ + +\begin{code} +-- | Make a 'SpecInfo' containing a number of 'CoreRule's, suitable +-- for putting into an 'IdInfo' +mkSpecInfo :: [CoreRule] -> SpecInfo +mkSpecInfo rules = SpecInfo rules (rulesFreeVars rules) + +extendSpecInfo :: SpecInfo -> [CoreRule] -> SpecInfo +extendSpecInfo (SpecInfo rs1 fvs1) rs2 + = SpecInfo (rs2 ++ rs1) (rulesFreeVars rs2 `unionVarSet` fvs1) + +addSpecInfo :: SpecInfo -> SpecInfo -> SpecInfo +addSpecInfo (SpecInfo rs1 fvs1) (SpecInfo rs2 fvs2) + = SpecInfo (rs1 ++ rs2) (fvs1 `unionVarSet` fvs2) + +addIdSpecialisations :: Id -> [CoreRule] -> Id +addIdSpecialisations id [] + = id +addIdSpecialisations id rules + = setIdSpecialisation id $ + extendSpecInfo (idSpecialisation id) rules + +-- | Gather all the rules for locally bound identifiers from the supplied bindings +rulesOfBinds :: [CoreBind] -> [CoreRule] +rulesOfBinds binds = concatMap (concatMap idCoreRules . bindersOf) binds + +getRules :: RuleBase -> Id -> [CoreRule] + -- The rules for an Id come from two places: + -- (a) the ones it is born with (idCoreRules fn) + -- (b) rules added in subsequent modules (extra_rules) + -- PrimOps, for example, are born with a bunch of rules under (a) +getRules rule_base fn + | isLocalId fn = idCoreRules fn + | otherwise = WARN( not (isPrimOpId fn) && notNull (idCoreRules fn), + ppr fn <+> ppr (idCoreRules fn) ) + idCoreRules fn ++ (lookupNameEnv rule_base (idName fn) `orElse` []) + -- Only PrimOpIds have rules inside themselves, and perhaps more besides +\end{code} + + +%************************************************************************ +%* * + RuleBase +%* * +%************************************************************************ + +\begin{code} +-- | Gathers a collection of 'CoreRule's. Maps (the name of) an 'Id' to its rules +type RuleBase = NameEnv [CoreRule] + -- The rules are are unordered; + -- we sort out any overlaps on lookup + +emptyRuleBase = emptyNameEnv + +mkRuleBase :: [CoreRule] -> RuleBase +mkRuleBase rules = extendRuleBaseList emptyRuleBase rules + +extendRuleBaseList :: RuleBase -> [CoreRule] -> RuleBase +extendRuleBaseList rule_base new_guys + = foldl extendRuleBase rule_base new_guys + +unionRuleBase :: RuleBase -> RuleBase -> RuleBase +unionRuleBase rb1 rb2 = plusNameEnv_C (++) rb1 rb2 + +extendRuleBase :: RuleBase -> CoreRule -> RuleBase +extendRuleBase rule_base rule + = extendNameEnv_Acc (:) singleton rule_base (ruleIdName rule) rule + +pprRuleBase :: RuleBase -> SDoc +pprRuleBase rules = vcat [ pprRules (tidyRules emptyTidyEnv rs) + | rs <- nameEnvElts rules ] +\end{code} + + +%************************************************************************ +%* * +\subsection{Matching} +%* * +%************************************************************************ + +Note [Extra args in rule matching] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +If we find a matching rule, we return (Just (rule, rhs)), +but the rule firing has only consumed as many of the input args +as the ruleArity says. It's up to the caller to keep track +of any left-over args. E.g. if you call + lookupRule ... f [e1, e2, e3] +and it returns Just (r, rhs), where r has ruleArity 2 +then the real rewrite is + f e1 e2 e3 ==> rhs e3 + +You might think it'd be cleaner for lookupRule to deal with the +leftover arguments, by applying 'rhs' to them, but the main call +in the Simplifier works better as it is. Reason: the 'args' passed +to lookupRule are the result of a lazy substitution + +\begin{code} +-- | The main rule matching function. Attempts to apply all (active) +-- supplied rules to this instance of an application in a given +-- context, returning the rule applied and the resulting expression if +-- successful. +lookupRule :: (Activation -> Bool) -> InScopeSet + -> Id -> [CoreExpr] + -> [CoreRule] -> Maybe (CoreRule, CoreExpr) + +-- See Note [Extra args in rule matching] +-- See comments on matchRule +lookupRule is_active in_scope fn args rules + = -- pprTrace "matchRules" (ppr fn <+> ppr rules) $ + case go [] rules of + [] -> Nothing + (m:ms) -> Just (findBest (fn,args) m ms) + where + rough_args = map roughTopName args + + go :: [(CoreRule,CoreExpr)] -> [CoreRule] -> [(CoreRule,CoreExpr)] + go ms [] = ms + go ms (r:rs) = case (matchRule is_active in_scope args rough_args r) of + Just e -> go ((r,e):ms) rs + Nothing -> -- pprTrace "match failed" (ppr r $$ ppr args $$ + -- ppr [(arg_id, unfoldingTemplate unf) | Var arg_id <- args, let unf = idUnfolding arg_id, isCheapUnfolding unf] ) + go ms rs + +findBest :: (Id, [CoreExpr]) + -> (CoreRule,CoreExpr) -> [(CoreRule,CoreExpr)] -> (CoreRule,CoreExpr) +-- All these pairs matched the expression +-- Return the pair the the most specific rule +-- The (fn,args) is just for overlap reporting + +findBest target (rule,ans) [] = (rule,ans) +findBest target (rule1,ans1) ((rule2,ans2):prs) + | rule1 `isMoreSpecific` rule2 = findBest target (rule1,ans1) prs + | rule2 `isMoreSpecific` rule1 = findBest target (rule2,ans2) prs + | debugIsOn = let pp_rule rule + | opt_PprStyle_Debug = ppr rule + | otherwise = doubleQuotes (ftext (ru_name rule)) + in pprTrace "Rules.findBest: rule overlap (Rule 1 wins)" + (vcat [if opt_PprStyle_Debug then + ptext (sLit "Expression to match:") <+> ppr fn <+> sep (map ppr args) + else empty, + ptext (sLit "Rule 1:") <+> pp_rule rule1, + ptext (sLit "Rule 2:") <+> pp_rule rule2]) $ + findBest target (rule1,ans1) prs + | otherwise = findBest target (rule1,ans1) prs + where + (fn,args) = target + +isMoreSpecific :: CoreRule -> CoreRule -> Bool +isMoreSpecific (BuiltinRule {}) r2 = True +isMoreSpecific r1 (BuiltinRule {}) = False +isMoreSpecific (Rule { ru_bndrs = bndrs1, ru_args = args1 }) + (Rule { ru_bndrs = bndrs2, ru_args = args2 }) + = isJust (matchN in_scope bndrs2 args2 args1) + where + in_scope = mkInScopeSet (mkVarSet bndrs1) + -- Actually we should probably include the free vars + -- of rule1's args, but I can't be bothered + +noBlackList :: Activation -> Bool +noBlackList act = False -- Nothing is black listed + +matchRule :: (Activation -> Bool) -> InScopeSet + -> [CoreExpr] -> [Maybe Name] + -> CoreRule -> Maybe CoreExpr + +-- If (matchRule rule args) returns Just (name,rhs) +-- then (f args) matches the rule, and the corresponding +-- rewritten RHS is rhs +-- +-- The bndrs and rhs is occurrence-analysed +-- +-- Example +-- +-- The rule +-- forall f g x. map f (map g x) ==> map (f . g) x +-- is stored +-- CoreRule "map/map" +-- [f,g,x] -- tpl_vars +-- [f,map g x] -- tpl_args +-- map (f.g) x) -- rhs +-- +-- Then the call: matchRule the_rule [e1,map e2 e3] +-- = Just ("map/map", (\f,g,x -> rhs) e1 e2 e3) +-- +-- Any 'surplus' arguments in the input are simply put on the end +-- of the output. + +matchRule is_active in_scope args rough_args + (BuiltinRule { ru_name = name, ru_try = match_fn }) + = case match_fn args of + Just expr -> Just expr + Nothing -> Nothing + +matchRule is_active in_scope args rough_args + (Rule { ru_name = rn, ru_act = act, ru_rough = tpl_tops, + ru_bndrs = tpl_vars, ru_args = tpl_args, + ru_rhs = rhs }) + | not (is_active act) = Nothing + | ruleCantMatch tpl_tops rough_args = Nothing + | otherwise + = case matchN in_scope tpl_vars tpl_args args of + Nothing -> Nothing + Just (binds, tpl_vals) -> Just (mkLets binds $ + rule_fn `mkApps` tpl_vals) + where + rule_fn = occurAnalyseExpr (mkLams tpl_vars rhs) + -- We could do this when putting things into the rulebase, I guess +\end{code} + +\begin{code} +-- For a given match template and context, find bindings to wrap around +-- the entire result and what should be substituted for each template variable. +-- Fail if there are two few actual arguments from the target to match the template +matchN :: InScopeSet -- ^ In-scope variables + -> [Var] -- ^ Match template type variables + -> [CoreExpr] -- ^ Match template + -> [CoreExpr] -- ^ Target; can have more elements than the template + -> Maybe ([CoreBind], + [CoreExpr]) + +matchN in_scope tmpl_vars tmpl_es target_es + = do { (tv_subst, id_subst, binds) + <- go init_menv emptySubstEnv tmpl_es target_es + ; return (fromOL binds, + map (lookup_tmpl tv_subst id_subst) tmpl_vars') } + where + (init_rn_env, tmpl_vars') = mapAccumL rnBndrL (mkRnEnv2 in_scope) tmpl_vars + -- See Note [Template binders] + + init_menv = ME { me_tmpls = mkVarSet tmpl_vars', me_env = init_rn_env } + + go menv subst [] es = Just subst + go menv subst ts [] = Nothing -- Fail if too few actual args + go menv subst (t:ts) (e:es) = do { subst1 <- match menv subst t e + ; go menv subst1 ts es } + + lookup_tmpl :: TvSubstEnv -> IdSubstEnv -> Var -> CoreExpr + lookup_tmpl tv_subst id_subst tmpl_var' + | isTyVar tmpl_var' = case lookupVarEnv tv_subst tmpl_var' of + Just ty -> Type ty + Nothing -> unbound tmpl_var' + | otherwise = case lookupVarEnv id_subst tmpl_var' of + Just e -> e + other -> unbound tmpl_var' + + unbound var = pprPanic "Template variable unbound in rewrite rule" + (ppr var $$ ppr tmpl_vars $$ ppr tmpl_vars' $$ ppr tmpl_es $$ ppr target_es) +\end{code} + +Note [Template binders] +~~~~~~~~~~~~~~~~~~~~~~~ +Consider the following match: + Template: forall x. f x + Target: f (x+1) +This should succeed, because the template variable 'x' has +nothing to do with the 'x' in the target. + +On reflection, this case probably does just work, but this might not + Template: forall x. f (\x.x) + Target: f (\y.y) +Here we want to clone when we find the \x, but to know that x must be in scope + +To achive this, we use rnBndrL to rename the template variables if +necessary; the renamed ones are the tmpl_vars' + + + --------------------------------------------- + The inner workings of matching + --------------------------------------------- + +\begin{code} +-- These two definitions are not the same as in Subst, +-- but they simple and direct, and purely local to this module +-- +-- * The domain of the TvSubstEnv and IdSubstEnv are the template +-- variables passed into the match. +-- +-- * The (OrdList CoreBind) in a SubstEnv are the bindings floated out +-- from nested matches; see the Let case of match, below +-- +type SubstEnv = (TvSubstEnv, IdSubstEnv, OrdList CoreBind) +type IdSubstEnv = IdEnv CoreExpr + +emptySubstEnv :: SubstEnv +emptySubstEnv = (emptyVarEnv, emptyVarEnv, nilOL) + + +-- At one stage I tried to match even if there are more +-- template args than real args. + +-- I now think this is probably a bad idea. +-- Should the template (map f xs) match (map g)? I think not. +-- For a start, in general eta expansion wastes work. +-- SLPJ July 99 + + +match :: MatchEnv + -> SubstEnv + -> CoreExpr -- Template + -> CoreExpr -- Target + -> Maybe SubstEnv + +-- See the notes with Unify.match, which matches types +-- Everything is very similar for terms + +-- Interesting examples: +-- Consider matching +-- \x->f against \f->f +-- When we meet the lambdas we must remember to rename f to f' in the +-- second expresion. The RnEnv2 does that. +-- +-- Consider matching +-- forall a. \b->b against \a->3 +-- We must rename the \a. Otherwise when we meet the lambdas we +-- might substitute [a/b] in the template, and then erroneously +-- succeed in matching what looks like the template variable 'a' against 3. + +-- The Var case follows closely what happens in Unify.match +match menv subst (Var v1) e2 + | Just subst <- match_var menv subst v1 e2 + = Just subst + +match menv subst e1 (Note n e2) + = match menv subst e1 e2 + -- Note [Notes in RULE matching] + -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + -- Look through Notes. In particular, we don't want to + -- be confused by InlineMe notes. Maybe we should be more + -- careful about profiling notes, but for now I'm just + -- riding roughshod over them. + --- See Note [Notes in call patterns] in SpecConstr + +-- Here is another important rule: if the term being matched is a +-- variable, we expand it so long as its unfolding is a WHNF +-- (Its occurrence information is not necessarily up to date, +-- so we don't use it.) +match menv subst e1 (Var v2) + | isCheapUnfolding unfolding + = match menv subst e1 (unfoldingTemplate unfolding) + where + rn_env = me_env menv + unfolding = idUnfolding (lookupRnInScope rn_env (rnOccR rn_env v2)) + -- Notice that we look up v2 in the in-scope set + -- See Note [Lookup in-scope] + -- Remember to apply any renaming first (hence rnOccR) + +-- Note [Matching lets] +-- ~~~~~~~~~~~~~~~~~~~~ +-- Matching a let-expression. Consider +-- RULE forall x. f (g x) = +-- and target expression +-- f (let { w=R } in g E)) +-- Then we'd like the rule to match, to generate +-- let { w=R } in (\x. ) E +-- In effect, we want to float the let-binding outward, to enable +-- the match to happen. This is the WHOLE REASON for accumulating +-- bindings in the SubstEnv +-- +-- We can only do this if +-- (a) Widening the scope of w does not capture any variables +-- We use a conservative test: w is not already in scope +-- If not, we clone the binders, and substitute +-- (b) The free variables of R are not bound by the part of the +-- target expression outside the let binding; e.g. +-- f (\v. let w = v+1 in g E) +-- Here we obviously cannot float the let-binding for w. +-- +-- You may think rule (a) would never apply, because rule matching is +-- mostly invoked from the simplifier, when we have just run substExpr +-- over the argument, so there will be no shadowing anyway. +-- The fly in the ointment is that the forall'd variables of the +-- RULE itself are considered in scope. +-- +-- I though of various cheapo ways to solve this tiresome problem, +-- but ended up doing the straightforward thing, which is to +-- clone the binders if they are in scope. It's tiresome, and +-- potentially inefficient, because of the calls to substExpr, +-- but I don't think it'll happen much in pracice. + +{- Cases to think about + (let x=y+1 in \x. (x,x)) + --> let x=y+1 in (\x1. (x1,x1)) + (\x. let x = y+1 in (x,x)) + --> let x1 = y+1 in (\x. (x1,x1) + (let x=y+1 in (x,x), let x=y-1 in (x,x)) + --> let x=y+1 in let x1=y-1 in ((x,x),(x1,x1)) + +Watch out! + (let x=y+1 in let z=x+1 in (z,z) + --> matches (p,p) but watch out that the use of + x on z's rhs is OK! +I'm removing the cloning because that makes the above case +fail, because the inner let looks as if it has locally-bound vars -} + +match menv subst@(tv_subst, id_subst, binds) e1 (Let bind e2) + | all freshly_bound bndrs, + not (any locally_bound bind_fvs) + = match (menv { me_env = rn_env' }) + (tv_subst, id_subst, binds `snocOL` bind') + e1 e2' + where + rn_env = me_env menv + bndrs = bindersOf bind + bind_fvs = varSetElems (bindFreeVars bind) + locally_bound x = inRnEnvR rn_env x + freshly_bound x = not (x `rnInScope` rn_env) + bind' = bind + e2' = e2 + rn_env' = extendRnInScopeList rn_env bndrs +{- + (rn_env', bndrs') = mapAccumL rnBndrR rn_env bndrs + s_prs = [(bndr, Var bndr') | (bndr,bndr') <- zip bndrs bndrs', bndr /= bndr'] + subst = mkSubst (rnInScopeSet rn_env) emptyVarEnv (mkVarEnv s_prs) + (bind', e2') | null s_prs = (bind, e2) + | otherwise = (s_bind, substExpr subst e2) + s_bind = case bind of + NonRec {} -> NonRec (head bndrs') (head rhss) + Rec {} -> Rec (bndrs' `zip` map (substExpr subst) rhss) +-} + +match menv subst (Lit lit1) (Lit lit2) + | lit1 == lit2 + = Just subst + +match menv subst (App f1 a1) (App f2 a2) + = do { subst' <- match menv subst f1 f2 + ; match menv subst' a1 a2 } + +match menv subst (Lam x1 e1) (Lam x2 e2) + = match menv' subst e1 e2 + where + menv' = menv { me_env = rnBndr2 (me_env menv) x1 x2 } + +-- This rule does eta expansion +-- (\x.M) ~ N iff M ~ N x +-- It's important that this is *after* the let rule, +-- so that (\x.M) ~ (let y = e in \y.N) +-- does the let thing, and then gets the lam/lam rule above +match menv subst (Lam x1 e1) e2 + = match menv' subst e1 (App e2 (varToCoreExpr new_x)) + where + (rn_env', new_x) = rnBndrL (me_env menv) x1 + menv' = menv { me_env = rn_env' } + +-- Eta expansion the other way +-- M ~ (\y.N) iff M y ~ N +match menv subst e1 (Lam x2 e2) + = match menv' subst (App e1 (varToCoreExpr new_x)) e2 + where + (rn_env', new_x) = rnBndrR (me_env menv) x2 + menv' = menv { me_env = rn_env' } + +match menv subst (Case e1 x1 ty1 alts1) (Case e2 x2 ty2 alts2) + = do { subst1 <- match_ty menv subst ty1 ty2 + ; subst2 <- match menv subst1 e1 e2 + ; let menv' = menv { me_env = rnBndr2 (me_env menv) x1 x2 } + ; match_alts menv' subst2 alts1 alts2 -- Alts are both sorted + } + +match menv subst (Type ty1) (Type ty2) + = match_ty menv subst ty1 ty2 + +match menv subst (Cast e1 co1) (Cast e2 co2) + = do { subst1 <- match_ty menv subst co1 co2 + ; match menv subst1 e1 e2 } + +{- REMOVING OLD CODE: I think that the above handling for let is + better than the stuff here, which looks + pretty suspicious to me. SLPJ Sept 06 +-- This is an interesting rule: we simply ignore lets in the +-- term being matched against! The unfolding inside it is (by assumption) +-- already inside any occurrences of the bound variables, so we'll expand +-- them when we encounter them. This gives a chance of matching +-- forall x,y. f (g (x,y)) +-- against +-- f (let v = (a,b) in g v) + +match menv subst e1 (Let bind e2) + = match (menv { me_env = rn_env' }) subst e1 e2 + where + (rn_env', _bndrs') = mapAccumL rnBndrR (me_env menv) (bindersOf bind) + -- It's important to do this renaming, so that the bndrs + -- are brought into the local scope. For example: + -- Matching + -- forall f,x,xs. f (x:xs) + -- against + -- f (let y = e in (y:[])) + -- We must not get success with x->y! So we record that y is + -- locally bound (with rnBndrR), and proceed. The Var case + -- will fail when trying to bind x->y +-} + +-- Everything else fails +match menv subst e1 e2 = -- pprTrace "Failing at" ((text "e1:" <+> ppr e1) $$ (text "e2:" <+> ppr e2)) $ + Nothing + +------------------------------------------ +match_var :: MatchEnv + -> SubstEnv + -> Var -- Template + -> CoreExpr -- Target + -> Maybe SubstEnv +match_var menv subst@(tv_subst, id_subst, binds) v1 e2 + | v1' `elemVarSet` me_tmpls menv + = case lookupVarEnv id_subst v1' of + Nothing | any (inRnEnvR rn_env) (varSetElems (exprFreeVars e2)) + -> Nothing -- Occurs check failure + -- e.g. match forall a. (\x-> a x) against (\y. y y) + + | otherwise -- No renaming to do on e2, because no free var + -- of e2 is in the rnEnvR of the envt + -- Note [Matching variable types] + -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + -- However, we must match the *types*; e.g. + -- forall (c::Char->Int) (x::Char). + -- f (c x) = "RULE FIRED" + -- We must only match on args that have the right type + -- It's actually quite difficult to come up with an example that shows + -- you need type matching, esp since matching is left-to-right, so type + -- args get matched first. But it's possible (e.g. simplrun008) and + -- this is the Right Thing to do + -> do { tv_subst' <- Unify.ruleMatchTyX menv tv_subst (idType v1') (exprType e2) + -- c.f. match_ty below + ; return (tv_subst', extendVarEnv id_subst v1' e2, binds) } + + Just e1' | tcEqExprX (nukeRnEnvL rn_env) e1' e2 + -> Just subst + + | otherwise + -> Nothing + + | otherwise -- v1 is not a template variable; check for an exact match with e2 + = case e2 of + Var v2 | v1' == rnOccR rn_env v2 -> Just subst + other -> Nothing + + where + rn_env = me_env menv + v1' = rnOccL rn_env v1 + -- If the template is + -- forall x. f x (\x -> x) = ... + -- Then the x inside the lambda isn't the + -- template x, so we must rename first! + + +------------------------------------------ +match_alts :: MatchEnv + -> SubstEnv + -> [CoreAlt] -- Template + -> [CoreAlt] -- Target + -> Maybe SubstEnv +match_alts menv subst [] [] + = return subst +match_alts menv subst ((c1,vs1,r1):alts1) ((c2,vs2,r2):alts2) + | c1 == c2 + = do { subst1 <- match menv' subst r1 r2 + ; match_alts menv subst1 alts1 alts2 } + where + menv' :: MatchEnv + menv' = menv { me_env = rnBndrs2 (me_env menv) vs1 vs2 } + +match_alts menv subst alts1 alts2 + = Nothing +\end{code} + +Matching Core types: use the matcher in TcType. +Notice that we treat newtypes as opaque. For example, suppose +we have a specialised version of a function at a newtype, say + newtype T = MkT Int +We only want to replace (f T) with f', not (f Int). + +\begin{code} +------------------------------------------ +match_ty :: MatchEnv + -> SubstEnv + -> Type -- Template + -> Type -- Target + -> Maybe SubstEnv +match_ty menv (tv_subst, id_subst, binds) ty1 ty2 + = do { tv_subst' <- Unify.ruleMatchTyX menv tv_subst ty1 ty2 + ; return (tv_subst', id_subst, binds) } +\end{code} + + +Note [Lookup in-scope] +~~~~~~~~~~~~~~~~~~~~~~ +Consider this example + foo :: Int -> Maybe Int -> Int + foo 0 (Just n) = n + foo m (Just n) = foo (m-n) (Just n) + +SpecConstr sees this fragment: + + case w_smT of wild_Xf [Just A] { + Data.Maybe.Nothing -> lvl_smf; + Data.Maybe.Just n_acT [Just S(L)] -> + case n_acT of wild1_ams [Just A] { GHC.Base.I# y_amr [Just L] -> + \$wfoo_smW (GHC.Prim.-# ds_Xmb y_amr) wild_Xf + }}; + +and correctly generates the rule + + RULES: "SC:$wfoo1" [0] __forall {y_amr [Just L] :: GHC.Prim.Int# + sc_snn :: GHC.Prim.Int#} + \$wfoo_smW sc_snn (Data.Maybe.Just @ GHC.Base.Int (GHC.Base.I# y_amr)) + = \$s\$wfoo_sno y_amr sc_snn ;] + +BUT we must ensure that this rule matches in the original function! +Note that the call to \$wfoo is + \$wfoo_smW (GHC.Prim.-# ds_Xmb y_amr) wild_Xf + +During matching we expand wild_Xf to (Just n_acT). But then we must also +expand n_acT to (I# y_amr). And we can only do that if we look up n_acT +in the in-scope set, because in wild_Xf's unfolding it won't have an unfolding +at all. + +That is why the 'lookupRnInScope' call in the (Var v2) case of 'match' +is so important. + + +%************************************************************************ +%* * +\subsection{Checking a program for failing rule applications} +%* * +%************************************************************************ + +----------------------------------------------------- + Game plan +----------------------------------------------------- + +We want to know what sites have rules that could have fired but didn't. +This pass runs over the tree (without changing it) and reports such. + +\begin{code} +-- | Report partial matches for rules beginning with the specified +-- string for the purposes of error reporting +ruleCheckProgram :: (Activation -> Bool) -- ^ Rule activation test + -> String -- ^ Rule pattern + -> RuleBase -- ^ Database of rules + -> [CoreBind] -- ^ Bindings to check in + -> SDoc -- ^ Resulting check message +ruleCheckProgram is_active rule_pat rule_base binds + | isEmptyBag results + = text "Rule check results: no rule application sites" + | otherwise + = vcat [text "Rule check results:", + line, + vcat [ p $$ line | p <- bagToList results ] + ] + where + results = unionManyBags (map (ruleCheckBind (RuleCheckEnv is_active rule_pat rule_base)) binds) + line = text (replicate 20 '-') + +data RuleCheckEnv = RuleCheckEnv { + rc_is_active :: Activation -> Bool, + rc_pattern :: String, + rc_rule_base :: RuleBase +} + +ruleCheckBind :: RuleCheckEnv -> CoreBind -> Bag SDoc + -- The Bag returned has one SDoc for each call site found +ruleCheckBind env (NonRec b r) = ruleCheck env r +ruleCheckBind env (Rec prs) = unionManyBags [ruleCheck env r | (b,r) <- prs] + +ruleCheck :: RuleCheckEnv -> CoreExpr -> Bag SDoc +ruleCheck env (Var v) = emptyBag +ruleCheck env (Lit l) = emptyBag +ruleCheck env (Type ty) = emptyBag +ruleCheck env (App f a) = ruleCheckApp env (App f a) [] +ruleCheck env (Note n e) = ruleCheck env e +ruleCheck env (Cast e co) = ruleCheck env e +ruleCheck env (Let bd e) = ruleCheckBind env bd `unionBags` ruleCheck env e +ruleCheck env (Lam b e) = ruleCheck env e +ruleCheck env (Case e _ _ as) = ruleCheck env e `unionBags` + unionManyBags [ruleCheck env r | (_,_,r) <- as] + +ruleCheckApp env (App f a) as = ruleCheck env a `unionBags` ruleCheckApp env f (a:as) +ruleCheckApp env (Var f) as = ruleCheckFun env f as +ruleCheckApp env other as = ruleCheck env other +\end{code} + +\begin{code} +ruleCheckFun :: RuleCheckEnv -> Id -> [CoreExpr] -> Bag SDoc +-- Produce a report for all rules matching the predicate +-- saying why it doesn't match the specified application + +ruleCheckFun env fn args + | null name_match_rules = emptyBag + | otherwise = unitBag (ruleAppCheck_help (rc_is_active env) fn args name_match_rules) + where + name_match_rules = filter match (getRules (rc_rule_base env) fn) + match rule = (rc_pattern env) `isPrefixOf` unpackFS (ruleName rule) + +ruleAppCheck_help :: (Activation -> Bool) -> Id -> [CoreExpr] -> [CoreRule] -> SDoc +ruleAppCheck_help is_active fn args rules + = -- The rules match the pattern, so we want to print something + vcat [text "Expression:" <+> ppr (mkApps (Var fn) args), + vcat (map check_rule rules)] + where + n_args = length args + i_args = args `zip` [1::Int ..] + rough_args = map roughTopName args + + check_rule rule = rule_herald rule <> colon <+> rule_info rule + + rule_herald (BuiltinRule { ru_name = name }) + = ptext (sLit "Builtin rule") <+> doubleQuotes (ftext name) + rule_herald (Rule { ru_name = name }) + = ptext (sLit "Rule") <+> doubleQuotes (ftext name) + + rule_info rule + | Just _ <- matchRule noBlackList emptyInScopeSet args rough_args rule + = text "matches (which is very peculiar!)" + + rule_info (BuiltinRule {}) = text "does not match" + + rule_info (Rule { ru_name = name, ru_act = act, + ru_bndrs = rule_bndrs, ru_args = rule_args}) + | not (is_active act) = text "active only in later phase" + | n_args < n_rule_args = text "too few arguments" + | n_mismatches == n_rule_args = text "no arguments match" + | n_mismatches == 0 = text "all arguments match (considered individually), but rule as a whole does not" + | otherwise = text "arguments" <+> ppr mismatches <+> text "do not match (1-indexing)" + where + n_rule_args = length rule_args + n_mismatches = length mismatches + mismatches = [i | (rule_arg, (arg,i)) <- rule_args `zip` i_args, + not (isJust (match_fn rule_arg arg))] + + lhs_fvs = exprsFreeVars rule_args -- Includes template tyvars + match_fn rule_arg arg = match menv emptySubstEnv rule_arg arg + where + in_scope = lhs_fvs `unionVarSet` exprFreeVars arg + menv = ME { me_env = mkRnEnv2 (mkInScopeSet in_scope) + , me_tmpls = mkVarSet rule_bndrs } +\end{code} + diff -ruN haskell-src-exts-1.9.0/Test/examples/RealHoogle.hs haskell-src-exts/Test/examples/RealHoogle.hs --- haskell-src-exts-1.9.0/Test/examples/RealHoogle.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/RealHoogle.hs 2010-12-15 09:33:48.861987828 -0800 @@ -0,0 +1,254 @@ +{-| + Parse a list of flags supported in any of the front ends. + + Returns the flags in a data structure, along with any invalid flags. + + Deal with any files/include files in this stage. +-} + +module CmdLine.Flag( + CmdFlag(..), flagsHelp, + flagsWebArgs, flagsWebQuery, flagsCmdLine + ) where + +import General.Code +import General.Glob + +--------------------------------------------------------------------- +-- The flags + +data CmdFlag = Version -- ^ Version information + | Web -- ^ Operate as a CGI process + | Help -- ^ Help text + | Test -- ^ Run the regression tests + | Color Bool -- ^ Colors on the console + | Start Int -- ^ First result to show + | Count Int -- ^ Number of results to show + | Convert FilePath -- ^ Convert a database + | Output FilePath -- ^ Output file + | Dump String -- ^ Dump a database to a file (optional section) + | DataFile FilePath -- ^ Database location + | Verbose -- ^ Display verbose information + | Info -- ^ Display as much information as you can + | Debug -- ^ Do debugging activities + | Include FilePath -- ^ Include directory + | TestFile FilePath -- ^ Run tests in a file + | Rank FilePath -- ^ Generate rankings + | Combine FilePath -- ^ Merge a set of databases + | Mode String -- ^ Web modes + deriving (Show,Eq {-! Enum !-} ) + + +-- | In which circumstances are you allowed to pass this command +data Permission = PWebArgs | PWebQuery | PCmdLine | PMultiple + deriving (Show,Eq) + +data Argument = ArgNone CmdFlag + | ArgBool (Bool -> CmdFlag) + | ArgInt (Int -> CmdFlag) + | ArgNat (Int -> CmdFlag) + | ArgPos (Int -> CmdFlag) + | ArgFileIn (FilePath -> CmdFlag) [String] + | ArgFileOut (FilePath -> CmdFlag) + | ArgDir (FilePath -> CmdFlag) + | ArgStr (String -> CmdFlag) + +instance Show Argument where + show (ArgNone _) = "" + show (ArgInt _) = "INT" + show (ArgNat _) = "NAT" + show (ArgPos _) = "POS" + show (ArgBool _) = "BOOL" + show (ArgFileIn _ _) = "FILE" + show (ArgFileOut _) = "FILE" + show (ArgDir _) = "DIR" + show (ArgStr _) = "STR" + + +data FlagInfo = FlagInfo { + argument :: Argument, + names :: [String], + permissions :: [Permission], + description :: String + } + +flagInfo = + [f (ArgNone Version) ["version","ver"] [PCmdLine] "Print out version information" + ,f (ArgNone Help) ["?","help","h"] [PCmdLine] "Show help message" + ,f (ArgNone Web) ["w","web"] [PCmdLine] "Run as though it was a CGI script" + ,f (ArgBool Color) ["c","color","col","colour"] [PCmdLine] "Show color output (default=false)" + ,f (ArgPos Start) ["s","start"] [PCmdLine,PWebArgs] "First result to show (default=1)" + ,f (ArgPos Count) ["n","count","length","len"] [PCmdLine,PWebArgs] "Number of results to show (default=all)" + ,f (ArgNone Test) ["test"] [PCmdLine] "Run the regression tests" + ,f (ArgFileIn Convert ["txt"]) ["convert"] [PCmdLine,PMultiple] "Convert a database" + ,f (ArgFileOut Output) ["output"] [PCmdLine] "Output file for convert" + ,f (ArgStr Dump) ["dump"] [PCmdLine] "Dump a database for debugging" + ,f (ArgFileIn DataFile ["hoo"]) ["d","data"] [PCmdLine,PMultiple] "Database file" + ,f (ArgNone Verbose) ["v","verbose"] [PCmdLine] "Display verbose information" + ,f (ArgNone Info) ["info"] [PCmdLine] "Display full information on an entry" + ,f (ArgNone Debug) ["debug"] [PCmdLine] "Debugging only" + ,f (ArgDir Include) ["i","include"] [PCmdLine,PMultiple] "Include directories" + ,f (ArgFileIn TestFile ["txt"]) ["testfile"] [PCmdLine,PMultiple] "Run tests from a file" + ,f (ArgFileIn Rank ["txt"]) ["rank"] [PCmdLine,PMultiple] "Generate ranking scores" + ,f (ArgFileIn Combine ["hoo"]) ["combine"] [PCmdLine,PMultiple] "Combine multiple databases" + ,f (ArgStr Mode) ["mode"] [PCmdLine,PWebArgs] "Web mode" + ] + where f = FlagInfo + + +cmdFlagBadArg flag typ "" = "Missing argument to flag " ++ flag ++ ", expected argument of type " ++ typ +cmdFlagBadArg flag "" x = "Unexpected argument to flag " ++ flag ++ ", got \"" ++ x ++ "\"" +cmdFlagBadArg flag typ x = "Bad argument to flag " ++ flag ++ ", expected argument of type " ++ typ ++ ", got \"" ++ x ++ "\"" + +cmdFlagPermission flag = "Flag not allowed when running in this mode, flag " ++ flag + +cmdFlagUnknown flag = "Unknown flag " ++ flag + +cmdFlagDuplicate flag = "The flag " ++ flag ++ " may only occur once, but occured multiple times" + + +--------------------------------------------------------------------- +-- Operations on Flags + +-- | flags that are passed in through web arguments, +-- i.e. ?foo=bar&... +flagsWebArgs :: [(String,String)] -> IO ([CmdFlag],[String]) +flagsWebArgs = parseFlags PWebArgs + + +-- | flags that are given in the web query string +flagsWebQuery :: [(String,String)] -> IO ([CmdFlag],[String]) +flagsWebQuery = parseFlags PWebQuery + + +-- | flags that are given in a query on the command line +flagsCmdLine :: [(String,String)] -> IO ([CmdFlag],[String]) +flagsCmdLine = parseFlags PCmdLine + + +flagsHelp :: String +flagsHelp = unlines $ map f res + where + f (a,b,c) = " " ++ (if null a then " " else "--" ++ a ++ ",") ++ + " --" ++ b ++ replicate (maxLong - length b) ' ' ++ + " " ++ c + + maxLong = maximum $ map (length . snd3) res + res = [ (shortOpt (names i), longOpt (names i) ++ typ (argument i), description i) + | i <- flagInfo, PCmdLine `elem` permissions i] + + shortOpt ([x]:_) = [x] + shortOpt _ = "" + + longOpt ([_]:x:_) = x + longOpt (x:_) = x + + typ x = ['='|s/=""] ++ s + where s = show x + + +--------------------------------------------------------------------- +-- Parsing Flags + +-- TODO: check no flag is specified twice +-- TODO: Fix a bug, try /merge=t1;t2 and you get [t1,t1,t2,t2] +parseFlags :: Permission -> [(String,String)] -> IO ([CmdFlag],[String]) +parseFlags perm xs = do + let args = concatMap (parseFlag perm) xs + inc = [x | Right (_,_,_,Include x) <- args] + incs <- mapM globDir $ ["."|null inc] ++ inc + (a,b) <- mapAndUnzipM (f incs) args + return ([Include "."|null inc] ++ concat a, concat b) + where + f inc (Right (_,val,FlagInfo{argument=ArgFileIn gen exts},_)) = do + let vals = parseFile val + files <- concatMapM (globFile inc exts) vals + return (map gen files, []) + f inc (Left v) = return ([],[v]) + f inc (Right (_,_,_,v)) = return ([v],[]) + + +-- does all validity checks apart from checking for duplicate flags +parseFlag :: Permission -> (String, String) -> [Either String (String,String,FlagInfo,CmdFlag)] +parseFlag perm (key,val) + | isNothing m = [Left $ cmdFlagUnknown key] + | perm `notElem` permissions flg = [Left $ cmdFlagPermission key] + | null arg = [Left $ cmdFlagBadArg key (show $ argument flg) val] + | otherwise = [Right (key,val,flg,a) | a <- arg] + where + key2 = lower key + m@ ~(Just flg) = listToMaybe [i | i <- flagInfo, key2 `elem` names i] + arg = parseArg (argument flg) val + + +parseArg :: Argument -> String -> [CmdFlag] +parseArg (ArgNone v) xs = [v | null xs] +parseArg (ArgStr v) xs = [v xs] +parseArg (ArgBool v) xs = map v $ parseBool xs +parseArg (ArgNat v) xs = map v $ parseNat xs +parseArg (ArgInt v) xs = map v $ parseInt xs +parseArg (ArgPos v) xs = map v $ parsePos xs +parseArg (ArgFileIn v _) xs = map v $ parseFile xs +parseArg (ArgFileOut v) xs = map v $ parseFile xs +parseArg (ArgDir v) xs = map v $ parseFile xs + + +parseNat, parsePos, parseInt :: String -> [Int] +parseNat = filter (>= 0) . parseInt +parsePos = filter (> 0) . parseInt +parseInt x = [a | (a,"") <- reads x] + +parseFile :: String -> [String] +parseFile = splitSearchPath + +parseBool :: String -> [Bool] +parseBool v | v2 `elem` ["","on","yes","1","true","meep"] = [True] + | v2 `elem` ["off","no","0","false","moop"] = [False] + | otherwise = [] + where v2 = lower v + + + +-------------------------------------------------------- +-- DERIVES GENERATED CODE +-- DO NOT MODIFY BELOW THIS LINE +-- CHECKSUM: 1401092643 + +instance Enum CmdFlag + where toEnum 0 = Version{} + toEnum 1 = Web{} + toEnum 2 = Help{} + toEnum 3 = Test{} + toEnum 4 = Color{} + toEnum 5 = Start{} + toEnum 6 = Count{} + toEnum 7 = Convert{} + toEnum 8 = Output{} + toEnum 9 = Dump{} + toEnum 10 = DataFile{} + toEnum 11 = Verbose{} + toEnum 12 = Info{} + toEnum 13 = Debug{} + toEnum 14 = Include{} + toEnum 15 = TestFile{} + toEnum 16 = Rank{} + toEnum 17 = Combine{} + toEnum n = error ((++) "toEnum " ((++) (show n) ", not defined for CmdFlag")) + fromEnum (Version {}) = 0 + fromEnum (Web {}) = 1 + fromEnum (Help {}) = 2 + fromEnum (Test {}) = 3 + fromEnum (Color {}) = 4 + fromEnum (Start {}) = 5 + fromEnum (Count {}) = 6 + fromEnum (Convert {}) = 7 + fromEnum (Output {}) = 8 + fromEnum (Dump {}) = 9 + fromEnum (DataFile {}) = 10 + fromEnum (Verbose {}) = 11 + fromEnum (Info {}) = 12 + fromEnum (Debug {}) = 13 + fromEnum (Include {}) = 14 + fromEnum (TestFile {}) = 15 + fromEnum (Rank {}) = 16 + fromEnum (Combine {}) = 17 diff -ruN haskell-src-exts-1.9.0/Test/examples/RealHSE.hs haskell-src-exts/Test/examples/RealHSE.hs --- haskell-src-exts-1.9.0/Test/examples/RealHSE.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/RealHSE.hs 2010-12-15 09:33:48.686211296 -0800 @@ -0,0 +1,898 @@ +-- #hide +----------------------------------------------------------------------------- +-- | +-- Module : Language.Haskell.Exts.Lexer +-- Copyright : (c) The GHC Team, 1997-2000 +-- (c) Niklas Broberg, 2004 +-- License : BSD-style (see the file LICENSE.txt) +-- +-- Maintainer : Niklas Broberg, d00nibro@dtek.chalmers.se +-- Stability : experimental +-- Portability : portable +-- +-- Lexer for Haskell, with some extensions. +-- +----------------------------------------------------------------------------- + +-- ToDo: Introduce different tokens for decimal, octal and hexadecimal (?) +-- ToDo: FloatTok should have three parts (integer part, fraction, exponent) (?) +-- ToDo: Use a lexical analyser generator (lx?) + +module Language.Haskell.Exts.Lexer (Token(..), lexer) where + +import Language.Haskell.Exts.ParseMonad + +import Data.Char +import Data.Ratio + +data Token + = VarId String + | QVarId (String,String) + | IDupVarId (String) -- duplicable implicit parameter + | ILinVarId (String) -- linear implicit parameter + | ConId String + | QConId (String,String) + | DVarId [String] -- to enable varid's with '-' in them + | VarSym String + | ConSym String + | QVarSym (String,String) + | QConSym (String,String) + | IntTok Integer + | FloatTok Rational + | Character Char + | StringTok String + +-- Symbols + + | LeftParen + | RightParen + | LeftHashParen + | RightHashParen + | SemiColon + | LeftCurly + | RightCurly + | VRightCurly -- a virtual close brace + | LeftSquare + | RightSquare + | Comma + | Underscore + | BackQuote + +-- Reserved operators + + | Dot -- reserved for use with 'forall x . x' + | DotDot + | Colon + | DoubleColon + | Equals + | Backslash + | Bar + | LeftArrow + | RightArrow + | At + | Tilde + | DoubleArrow + | Minus + | Exclamation + | Star + +-- Template Haskell + | THExpQuote -- [| or [e| + | THPatQuote -- [p| + | THDecQuote -- [d| + | THTypQuote -- [t| + | THCloseQuote -- |] + | THIdEscape (String) -- dollar x + | THParenEscape -- dollar ( + | THVarQuote -- 'x (but without the x) + | THTyQuote -- ''T (but without the T) + +-- HaRP + | RPGuardOpen -- (| + | RPGuardClose -- |) + | RPCAt -- @: + +-- Hsx + | XCodeTagOpen -- <% + | XCodeTagClose -- %> + | XStdTagOpen -- < + | XStdTagClose -- > + | XCloseTagOpen -- + | XPCDATA String + | XRPatOpen -- <[ + | XRPatClose -- ]> + +-- Pragmas + + | PragmaEnd -- #-} + | PragmaUnknown (String,String) -- Any pragma not recognized + | RULES + | INLINE Bool + | SPECIALISE + | SPECIALISE_INLINE Bool + | SOURCE + | DEPRECATED + | WARNING + | SCC + | GENERATED + | CORE + | UNPACK + | OPTIONS (Maybe String,String) + | CFILES String + | LANGUAGE + | INCLUDE String +-- These are not yet implemented +-- | LINE + +-- Reserved Ids + + | KW_As + | KW_Case + | KW_Class + | KW_Data + | KW_Default + | KW_Deriving + | KW_Do + | KW_MDo + | KW_Else + | KW_Family -- indexed type families + | KW_Forall -- universal/existential types + | KW_Hiding + | KW_If + | KW_Import + | KW_In + | KW_Infix + | KW_InfixL + | KW_InfixR + | KW_Instance + | KW_Let + | KW_Module + | KW_NewType + | KW_Of + | KW_Then + | KW_Type + | KW_Where + | KW_Qualified + + -- FFI + | KW_Foreign + | KW_Export + | KW_Safe + | KW_Unsafe + | KW_Threadsafe + | KW_StdCall + | KW_CCall + + | EOF + deriving (Eq,Show) + +reserved_ops :: [(String,Token)] +reserved_ops = [ + ( ".", Dot ), + ( "..", DotDot ), + ( ":", Colon ), + ( "::", DoubleColon ), + ( "=", Equals ), + ( "\\", Backslash ), + ( "|", Bar ), + ( "<-", LeftArrow ), + ( "->", RightArrow ), + ( "@", At ), + ( "~", Tilde ), + ( "=>", DoubleArrow ), + ( "*", Star ) + ] + +special_varops :: [(String,Token)] +special_varops = [ + ( "-", Minus ), --ToDo: shouldn't be here + ( "!", Exclamation ) --ditto + ] + +reserved_ids :: [(String,Token)] +reserved_ids = [ + ( "_", Underscore ), + ( "case", KW_Case ), + ( "class", KW_Class ), + ( "data", KW_Data ), + ( "default", KW_Default ), + ( "deriving", KW_Deriving ), + ( "do", KW_Do ), + ( "else", KW_Else ), + ( "family", KW_Family ), -- indexed type families + ( "forall", KW_Forall ), -- universal/existential quantification + ( "if", KW_If ), + ( "import", KW_Import ), + ( "in", KW_In ), + ( "infix", KW_Infix ), + ( "infixl", KW_InfixL ), + ( "infixr", KW_InfixR ), + ( "instance", KW_Instance ), + ( "let", KW_Let ), + ( "mdo", KW_MDo ), + ( "module", KW_Module ), + ( "newtype", KW_NewType ), + ( "of", KW_Of ), + ( "then", KW_Then ), + ( "type", KW_Type ), + ( "where", KW_Where ), + +-- FFI + ( "foreign", KW_Foreign ) + ] + + +special_varids :: [(String,Token)] +special_varids = [ + ( "as", KW_As ), + ( "qualified", KW_Qualified ), + ( "hiding", KW_Hiding ), + +-- FFI + ( "export", KW_Export), + ( "safe", KW_Safe), + ( "unsafe", KW_Unsafe), + ( "threadsafe", KW_Threadsafe), + ( "stdcall", KW_StdCall), + ( "ccall", KW_CCall) + ] + +pragmas :: [(String,Token)] +pragmas = [ + ( "rules", RULES ), + ( "inline", INLINE True ), + ( "noinline", INLINE False ), + ( "notinline", INLINE False ), + ( "specialise", SPECIALISE ), + ( "specialize", SPECIALISE ), + ( "source", SOURCE ), + ( "deprecated", DEPRECATED ), + ( "warning", WARNING ), + ( "scc", SCC ), + ( "generated", GENERATED ), + ( "core", CORE ), + ( "unpack", UNPACK ), + ( "language", LANGUAGE ), + ( "options", OPTIONS undefined ), -- we'll tweak it before use - promise! + ( "cfiles", CFILES undefined ), -- same here... + ( "include", INCLUDE undefined ) -- ...and here! + ] + +isIdent, isHSymbol :: Char -> Bool +isIdent c = isAlpha c || isDigit c || c == '\'' || c == '_' + +isHSymbol c = c `elem` ":!#%&*./?@\\-" || ((isSymbol c || isPunctuation c) && not (c `elem` "(),;[]`{}_\"'")) + +matchChar :: Char -> String -> Lex a () +matchChar c msg = do + s <- getInput + if null s || head s /= c then fail msg else discard 1 + +-- The top-level lexer. +-- We need to know whether we are at the beginning of the line to decide +-- whether to insert layout tokens. + +lexer :: (Token -> P a) -> P a +lexer = runL $ do + bol <- checkBOL + (bol, ws) <- lexWhiteSpace bol + -- take care of whitespace in PCDATA + ec <- getExtContext + case ec of + -- if there was no linebreak, and we are lexing PCDATA, + -- then we want to care about the whitespace + Just ChildCtxt | not bol && ws -> return $ XPCDATA " " + _ -> do startToken + if bol then lexBOL else lexToken + +lexWhiteSpace :: Bool -> Lex a (Bool, Bool) +lexWhiteSpace bol = do + s <- getInput + case s of + '{':'-':'#':_ -> do + return (bol, False) + '{':'-':_ -> do + discard 2 + bol <- lexNestedComment bol + (bol, _) <- lexWhiteSpace bol + return (bol, True) + '-':'-':s | all (== '-') (takeWhile isHSymbol s) -> do + lexWhile (== '-') + lexWhile (/= '\n') + s' <- getInput + case s' of + [] -> fail "Unterminated end-of-line comment" + _ -> do + lexNewline + lexWhiteSpace True + return (True, True) + '\n':_ -> do + lexNewline + lexWhiteSpace True + return (True, True) + '\t':_ -> do + lexTab + (bol, _) <- lexWhiteSpace bol + return (bol, True) + c:_ | isSpace c -> do + discard 1 + (bol, _) <- lexWhiteSpace bol + return (bol, True) + _ -> return (bol, False) + +lexNestedComment :: Bool -> Lex a Bool +lexNestedComment bol = do + s <- getInput + case s of + '-':'}':_ -> discard 2 >> return bol + '{':'-':_ -> do + discard 2 + bol <- lexNestedComment bol -- rest of the subcomment + lexNestedComment bol -- rest of this comment + '\t':_ -> lexTab >> lexNestedComment bol + '\n':_ -> lexNewline >> lexNestedComment True + _:_ -> discard 1 >> lexNestedComment bol + [] -> fail "Unterminated nested comment" + +-- When we are lexing the first token of a line, check whether we need to +-- insert virtual semicolons or close braces due to layout. + +lexBOL :: Lex a Token +lexBOL = do + pos <- getOffside + case pos of + LT -> do + -- trace "layout: inserting '}'\n" $ + -- Set col to 0, indicating that we're still at the + -- beginning of the line, in case we need a semi-colon too. + -- Also pop the context here, so that we don't insert + -- another close brace before the parser can pop it. + setBOL + popContextL "lexBOL" + return VRightCurly + EQ -> + -- trace "layout: inserting ';'\n" $ + return SemiColon + GT -> lexToken + +lexToken :: Lex a Token +lexToken = do + ec <- getExtContext + case ec of + Just HarpCtxt -> lexHarpToken + Just TagCtxt -> lexTagCtxt + Just CloseTagCtxt -> lexCloseTagCtxt + Just ChildCtxt -> lexChildCtxt + Just CodeTagCtxt -> lexCodeTagCtxt + _ -> lexStdToken + + +lexChildCtxt :: Lex a Token +lexChildCtxt = do + s <- getInput + case s of + '<':'%':_ -> do discard 2 + pushExtContextL CodeTagCtxt + return XCodeTagOpen + '<':'/':_ -> do discard 2 + popExtContextL "lexChildCtxt" + pushExtContextL CloseTagCtxt + return XCloseTagOpen + '<':'[':_ -> do discard 2 + pushExtContextL HarpCtxt + return XRPatOpen + '<':_ -> do discard 1 + pushExtContextL TagCtxt + return XStdTagOpen + _ -> lexPCDATA + + +lexPCDATA :: Lex a Token +lexPCDATA = do + s <- getInput + case s of + [] -> return EOF + _ -> case s of + '\n':_ -> do + x <- lexNewline >> lexPCDATA + case x of + XPCDATA p -> return $ XPCDATA $ '\n':p + EOF -> return EOF + '<':_ -> return $ XPCDATA "" + _ -> do let pcd = takeWhile (\c -> not $ elem c "<\n") s + l = length pcd + discard l + x <- lexPCDATA + case x of + XPCDATA pcd' -> return $ XPCDATA $ pcd ++ pcd' + EOF -> return EOF + + +lexCodeTagCtxt :: Lex a Token +lexCodeTagCtxt = do + s <- getInput + case s of + '%':'>':_ -> do discard 2 + popExtContextL "lexCodeTagContext" + return XCodeTagClose + _ -> lexStdToken + +lexCloseTagCtxt :: Lex a Token +lexCloseTagCtxt = do + s <- getInput + case s of + '>':_ -> do discard 1 + popExtContextL "lexCloseTagCtxt" + return XStdTagClose + _ -> lexStdToken + +lexTagCtxt :: Lex a Token +lexTagCtxt = do + s <- getInput + case s of + '/':'>':_ -> do discard 2 + popExtContextL "lexTagCtxt: Empty tag" + return XEmptyTagClose + '>':_ -> do discard 1 + popExtContextL "lexTagCtxt: Standard tag" + pushExtContextL ChildCtxt + return XStdTagClose + _ -> lexStdToken + +lexHarpToken :: Lex a Token +lexHarpToken = do + s <- getInput + case s of + ']':'>':_ -> do discard 2 + popExtContextL "lexHarpToken" + return XRPatClose + _ -> lexStdToken + +lexStdToken :: Lex a Token +lexStdToken = do + s <- getInput + case s of + [] -> return EOF + + '0':c:d:_ | toLower c == 'o' && isOctDigit d -> do + discard 2 + n <- lexOctal + return (IntTok n) + | toLower c == 'x' && isHexDigit d -> do + discard 2 + n <- lexHexadecimal + return (IntTok n) + + -- implicit parameters + '?':c:_ | isLower c -> do + discard 1 + id <- lexWhile isIdent + return $ IDupVarId id + + '%':c:_ | isLower c -> do + discard 1 + id <- lexWhile isIdent + return $ ILinVarId id + -- end implicit parameters + + -- harp + '(':'|':c:_ | isHSymbol c -> discard 1 >> return LeftParen + '(':'|':_ -> do discard 2 + return RPGuardOpen + '|':')':_ -> do discard 2 + return RPGuardClose + '@':':':_ -> do discard 2 + return RPCAt + + -- template haskell + '[':'|':_ -> do + discard 2 + return $ THExpQuote + + '[':c:'|':_ | c == 'e' -> do + discard 3 + return $ THExpQuote + | c == 'p' -> do + discard 3 + return THPatQuote + | c == 'd' -> do + discard 3 + return THDecQuote + | c == 't' -> do + discard 3 + return THTypQuote + + '|':']':_ -> do discard 2 + return THCloseQuote + + '$':c:_ | isLower c -> do + discard 1 + id <- lexWhile isIdent + return $ THIdEscape id + | c == '(' -> do + discard 2 + return THParenEscape + -- end template haskell + + -- hsx + '<':'%':_ -> do discard 2 + pushExtContextL CodeTagCtxt + return XCodeTagOpen + '<':c:_ | isAlpha c -> do discard 1 + pushExtContextL TagCtxt + return XStdTagOpen + -- end hsx + + '(':'#':_ -> do discard 2 >> return LeftHashParen + + '#':')':_ -> do discard 2 >> return RightHashParen + + -- pragmas + + '{':'-':'#':_ -> do discard 3 >> lexPragmaStart + + '#':'-':'}':_ -> do discard 3 >> return PragmaEnd + + c:_ | isDigit c -> lexDecimalOrFloat + + | isUpper c -> lexConIdOrQual "" + + | isLower c || c == '_' -> do + idents <- lexIdents + case idents of + [ident] -> return $ case lookup ident (reserved_ids ++ special_varids) of + Just keyword -> keyword + Nothing -> VarId ident + _ -> return $ DVarId idents + + | isHSymbol c -> do + sym <- lexWhile isHSymbol + return $ case lookup sym (reserved_ops ++ special_varops) of + Just t -> t + Nothing -> case c of + ':' -> ConSym sym + _ -> VarSym sym + + | otherwise -> do + discard 1 + case c of + + -- First the special symbols + '(' -> return LeftParen + ')' -> return RightParen + ',' -> return Comma + ';' -> return SemiColon + '[' -> return LeftSquare + ']' -> return RightSquare + '`' -> return BackQuote + '{' -> do + pushContextL NoLayout + return LeftCurly + '}' -> do + popContextL "lexStdToken" + return RightCurly + + '\'' -> lexCharacter + '"' -> lexString + + _ -> fail ("Illegal character \'" ++ show c ++ "\'\n") + + where lexIdents :: Lex a [String] + lexIdents = do + ident <- lexWhile isIdent + s <- getInput + case s of + '-':c:_ | isAlpha c -> do + discard 1 + idents <- lexIdents + return $ ident : idents + '#':_ -> do + discard 1 + return [ident ++ "#"] + _ -> return [ident] + + +lexPragmaStart :: Lex a Token +lexPragmaStart = do + lexWhile isSpace + pr <- lexWhile isAlphaNum + case lookup (map toLower pr) pragmas of + Just SPECIALISE -> do + s <- getInput + case dropWhile isSpace $ map toLower s of + 'i':'n':'l':'i':'n':'e':_ -> do + lexWhile isSpace + discard 6 + return $ SPECIALISE_INLINE True + 'n':'o':'i':'n':'l':'i':'n':'e':_ -> do + lexWhile isSpace + discard 8 + return $ SPECIALISE_INLINE False + 'n':'o':'t':'i':'n':'l':'i':'n':'e':_ -> do + lexWhile isSpace + discard 9 + return $ SPECIALISE_INLINE False + _ -> return SPECIALISE + + Just (OPTIONS _) -> do -- see, I promised we'd mask out the 'undefined' + s <- getInput + case s of + '_':_ -> do + discard 1 + com <- lexWhile isIdent + rest <- lexRawPragma + return $ OPTIONS (Just com, rest) + x:_ | isSpace x -> do + rest <- lexRawPragma + return $ OPTIONS (Nothing, rest) + _ -> fail "Malformed Options pragma" + Just (CFILES _) -> do + rest <- lexRawPragma + return $ CFILES rest + Just (INCLUDE _) -> do + rest <- lexRawPragma + return $ INCLUDE rest + Just p -> return p + + _ -> do rawStr <- lexRawPragma + return $ PragmaUnknown (pr, rawStr) + +lexRawPragma :: Lex a String +lexRawPragma = do + rpr <- lexRawPragmaAux + return $ dropWhile isSpace rpr + where lexRawPragmaAux = do + rpr <- lexWhile (/='#') + s <- getInput + case s of + '#':'-':'}':_ -> return rpr + _ -> do + discard 1 + rpr' <- lexRawPragma + return $ rpr ++ '#':rpr' + +lexDecimalOrFloat :: Lex a Token +lexDecimalOrFloat = do + ds <- lexWhile isDigit + rest <- getInput + case rest of + ('.':d:_) | isDigit d -> do + discard 1 + frac <- lexWhile isDigit + let num = parseInteger 10 (ds ++ frac) + decimals = toInteger (length frac) + exponent <- do + rest2 <- getInput + case rest2 of + 'e':_ -> lexExponent + 'E':_ -> lexExponent + _ -> return 0 + return (FloatTok ((num%1) * 10^^(exponent - decimals))) + e:_ | toLower e == 'e' -> do + exponent <- lexExponent + return (FloatTok ((parseInteger 10 ds%1) * 10^^exponent)) + _ -> return (IntTok (parseInteger 10 ds)) + + where + lexExponent :: Lex a Integer + lexExponent = do + discard 1 -- 'e' or 'E' + r <- getInput + case r of + '+':d:_ | isDigit d -> do + discard 1 + lexDecimal + '-':d:_ | isDigit d -> do + discard 1 + n <- lexDecimal + return (negate n) + d:_ | isDigit d -> lexDecimal + _ -> fail "Float with missing exponent" + +lexConIdOrQual :: String -> Lex a Token +lexConIdOrQual qual = do + con <- lexWhile isIdent + let conid | null qual = ConId con + | otherwise = QConId (qual,con) + qual' | null qual = con + | otherwise = qual ++ '.':con + just_a_conid <- alternative (return conid) + rest <- getInput + case rest of + '.':c:_ + | isLower c || c == '_' -> do -- qualified varid? + discard 1 + ident <- lexWhile isIdent + s <- getInput + ident' <- case s of + '#':_ -> discard 1 >> return (ident ++ "#") + _ -> return ident + case lookup ident' reserved_ids of + -- cannot qualify a reserved word + Just _ -> just_a_conid + Nothing -> return (QVarId (qual', ident')) + + | isUpper c -> do -- qualified conid? + discard 1 + lexConIdOrQual qual' + + | isHSymbol c -> do -- qualified symbol? + discard 1 + sym <- lexWhile isHSymbol + case lookup sym reserved_ops of + -- cannot qualify a reserved operator + Just _ -> just_a_conid + Nothing -> return $ case c of + ':' -> QConSym (qual', sym) + _ -> QVarSym (qual', sym) + + '#':c:_ + | isSpace c -> do + discard 1 + case conid of + ConId con -> return $ ConId $ con ++ "#" + QConId (q,con) -> return $ QConId (q,con ++ "#") + _ -> return conid -- not a qualified thing + +lexCharacter :: Lex a Token +lexCharacter = do -- We need to keep track of not only character constants but also TH 'x and ''T + -- We've seen ' so far + s <- getInput + case s of + '\'':_ -> discard 1 >> return THTyQuote + '\\':_ -> do + c <- lexEscape + matchQuote + return (Character c) + c:'\'':_ -> discard 2 >> return (Character c) + _ -> return THVarQuote + + where matchQuote = matchChar '\'' "Improperly terminated character constant" + + +lexString :: Lex a Token +lexString = loop "" + where + loop s = do + r <- getInput + case r of + '\\':'&':_ -> do + discard 2 + loop s + '\\':c:_ | isSpace c -> do + discard 1 + lexWhiteChars + matchChar '\\' "Illegal character in string gap" + loop s + | otherwise -> do + ce <- lexEscape + loop (ce:s) + '"':_ -> do + discard 1 + return (StringTok (reverse s)) + c:_ -> do + discard 1 + loop (c:s) + [] -> fail "Improperly terminated string" + + lexWhiteChars :: Lex a () + lexWhiteChars = do + s <- getInput + case s of + '\n':_ -> do + lexNewline + lexWhiteChars + '\t':_ -> do + lexTab + lexWhiteChars + c:_ | isSpace c -> do + discard 1 + lexWhiteChars + _ -> return () + +lexEscape :: Lex a Char +lexEscape = do + discard 1 + r <- getInput + case r of + +-- Production charesc from section B.2 (Note: \& is handled by caller) + + 'a':_ -> discard 1 >> return '\a' + 'b':_ -> discard 1 >> return '\b' + 'f':_ -> discard 1 >> return '\f' + 'n':_ -> discard 1 >> return '\n' + 'r':_ -> discard 1 >> return '\r' + 't':_ -> discard 1 >> return '\t' + 'v':_ -> discard 1 >> return '\v' + '\\':_ -> discard 1 >> return '\\' + '"':_ -> discard 1 >> return '\"' + '\'':_ -> discard 1 >> return '\'' + +-- Production ascii from section B.2 + + '^':c:_ -> discard 2 >> cntrl c + 'N':'U':'L':_ -> discard 3 >> return '\NUL' + 'S':'O':'H':_ -> discard 3 >> return '\SOH' + 'S':'T':'X':_ -> discard 3 >> return '\STX' + 'E':'T':'X':_ -> discard 3 >> return '\ETX' + 'E':'O':'T':_ -> discard 3 >> return '\EOT' + 'E':'N':'Q':_ -> discard 3 >> return '\ENQ' + 'A':'C':'K':_ -> discard 3 >> return '\ACK' + 'B':'E':'L':_ -> discard 3 >> return '\BEL' + 'B':'S':_ -> discard 2 >> return '\BS' + 'H':'T':_ -> discard 2 >> return '\HT' + 'L':'F':_ -> discard 2 >> return '\LF' + 'V':'T':_ -> discard 2 >> return '\VT' + 'F':'F':_ -> discard 2 >> return '\FF' + 'C':'R':_ -> discard 2 >> return '\CR' + 'S':'O':_ -> discard 2 >> return '\SO' + 'S':'I':_ -> discard 2 >> return '\SI' + 'D':'L':'E':_ -> discard 3 >> return '\DLE' + 'D':'C':'1':_ -> discard 3 >> return '\DC1' + 'D':'C':'2':_ -> discard 3 >> return '\DC2' + 'D':'C':'3':_ -> discard 3 >> return '\DC3' + 'D':'C':'4':_ -> discard 3 >> return '\DC4' + 'N':'A':'K':_ -> discard 3 >> return '\NAK' + 'S':'Y':'N':_ -> discard 3 >> return '\SYN' + 'E':'T':'B':_ -> discard 3 >> return '\ETB' + 'C':'A':'N':_ -> discard 3 >> return '\CAN' + 'E':'M':_ -> discard 2 >> return '\EM' + 'S':'U':'B':_ -> discard 3 >> return '\SUB' + 'E':'S':'C':_ -> discard 3 >> return '\ESC' + 'F':'S':_ -> discard 2 >> return '\FS' + 'G':'S':_ -> discard 2 >> return '\GS' + 'R':'S':_ -> discard 2 >> return '\RS' + 'U':'S':_ -> discard 2 >> return '\US' + 'S':'P':_ -> discard 2 >> return '\SP' + 'D':'E':'L':_ -> discard 3 >> return '\DEL' + +-- Escaped numbers + + 'o':c:_ | isOctDigit c -> do + discard 1 + n <- lexOctal + checkChar n + 'x':c:_ | isHexDigit c -> do + discard 1 + n <- lexHexadecimal + checkChar n + c:_ | isDigit c -> do + n <- lexDecimal + checkChar n + + _ -> fail "Illegal escape sequence" + + where + checkChar n | n <= 0x01FFFF = return (chr (fromInteger n)) + checkChar _ = fail "Character constant out of range" + +-- Production cntrl from section B.2 + + cntrl :: Char -> Lex a Char + cntrl c | c >= '@' && c <= '_' = return (chr (ord c - ord '@')) + cntrl _ = fail "Illegal control character" + +-- assumes at least one octal digit +lexOctal :: Lex a Integer +lexOctal = do + ds <- lexWhile isOctDigit + return (parseInteger 8 ds) + +-- assumes at least one hexadecimal digit +lexHexadecimal :: Lex a Integer +lexHexadecimal = do + ds <- lexWhile isHexDigit + return (parseInteger 16 ds) + +-- assumes at least one decimal digit +lexDecimal :: Lex a Integer +lexDecimal = do + ds <- lexWhile isDigit + return (parseInteger 10 ds) + +-- Stolen from Hugs's Prelude +parseInteger :: Integer -> String -> Integer +parseInteger radix ds = + foldl1 (\n d -> n * radix + d) (map (toInteger . digitToInt) ds) diff -ruN haskell-src-exts-1.9.0/Test/examples/RealTagSoup.hs haskell-src-exts/Test/examples/RealTagSoup.hs --- haskell-src-exts-1.9.0/Test/examples/RealTagSoup.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/RealTagSoup.hs 2010-12-15 09:33:49.037725415 -0800 @@ -0,0 +1,395 @@ +{-# OPTIONS_GHC -w #-} + +{- +The XML spec is done mainly from memory. The only special bits are: + +Attributes +---------- + +"foo" as an attribute comes out as an attribute with a value and no text +to allow DOCTYPE tags to get parsed as normal. + +References (aka Character and Entity References) +---------- + +A character reference is one of: + +entity = '&#' [0-9]+ ';' + | '&#x' [0-9a-fA-F]+ ';' + | '&' name ';' + +The maximum character reference is 0x10FFFF + +name = (letter | '_' | ':') (namechar)* +namechar = letter | digit | '.' | '-' | '_' | ':' | combiningchar | extender +combiningchar and extender are assumed to be empty +letter = isAlpha +digit = isDigit +-} + + +module Text.HTML.TagSoup.Parser( + parseTags, parseTagsOptions, + ParseOptions(..), parseOptions + ) where + +import Text.HTML.TagSoup.Type +import Text.HTML.TagSoup.Entity +import Control.Monad.State +import Data.Char +import Data.List +import Data.Maybe + + +infix 9 ?-> + +(?->) :: Bool -> [x] -> [x] +(?->) b true = if b then true else [] + +--------------------------------------------------------------------- +-- * ParseOptions + +data ParseOptions = ParseOptions + {optTagPosition :: Bool -- ^ Should 'TagPosition' values be given before every item + ,optTagWarning :: Bool -- ^ Should 'TagWarning' values be given + ,optLookupEntity :: String -> [Tag] -- ^ How to lookup an entity + ,optMaxEntityLength :: Maybe Int -- ^ The maximum length of an entities content + -- (Nothing for no maximum, default to 10) + } + + +-- Default 'ParseOptions' structure +parseOptions :: ParseOptions +parseOptions = ParseOptions False False f (Just 10) + where + f x = case lookupEntity x of + Nothing -> [TagText $ "&" ++ x ++ ";", TagWarning $ "Unknown entity: &" ++ x ++ ";"] + Just x -> [TagText [x]] + + +parseTags :: String -> [Tag] +parseTags = parseTagsOptions parseOptions + +tagWarn :: ParseOptions -> String -> [Tag] +tagWarn opts x = [TagWarning x | optTagWarning opts] + +--------------------------------------------------------------------- +-- * Positions + +-- All positions are stored as a row and a column, with (1,1) being the +-- top-left position + +data Position = Position !Row !Column + + +updateOnString :: Position -> String -> Position +updateOnString = foldl' updateOnChar + +updateOnChar :: Position -> Char -> Position +updateOnChar (Position r c) x = case x of + '\n' -> Position (r+1) c + '\t' -> Position r (c + 8 - mod (c-1) 8) + _ -> Position r (c+1) + + +tagPos :: ParseOptions -> Position -> [Tag] +tagPos opts (Position r c) = [TagPosition r c | optTagPosition opts] + +tagPosWarn :: ParseOptions -> Position -> String -> [Tag] +tagPosWarn opts p x = optTagWarning opts ?-> (tagPos opts p ++ [TagWarning x]) + +tagPosWarnFix :: ParseOptions -> Position -> [Tag] -> [Tag] +tagPosWarnFix opts p = addPositions . remWarnings + where + remWarnings = if optTagWarning opts then id else filter (not . isTagWarning) + addPositions = concatMap (\x -> tagPos opts p ++ [x]) + + +--------------------------------------------------------------------- +-- * Driver + +parseTagsOptions :: ParseOptions -> String -> [Tag] +parseTagsOptions opts x = mergeTexts $ evalState (parse opts) $ Value x (Position 0 0) + + +-- | Combine adjacent text nodes. +-- +-- If two text nodes are separated only a position node, delete the position. +-- If two text nodes are separated only by a warning, move the warning afterwards. +-- If a position immediately proceeds a warning, count that into the warning. +-- +-- Note: this function leaks stack on Hugs. +mergeTexts :: [Tag] -> [Tag] +mergeTexts (TagText x:xs) = (TagText $ concat $ x:texts) : warns ++ mergeTexts rest + where + (texts,warns,rest) = f xs + + f (TagText x:xs) = (x:a,b,c) + where (a,b,c) = f xs + f (TagPosition _ _:TagText x:xs) = (x:a,b,c) + where (a,b,c) = f xs + + f (p@TagPosition{}:TagWarning y:xs) = (a,p:TagWarning y:b,c) + where (a,b,c) = f xs + f (TagWarning x:xs) = (a,TagWarning x:b,c) + where (a,b,c) = f xs + + f xs = ([],[],xs) + +mergeTexts (x:xs) = x : mergeTexts xs +mergeTexts [] = [] + + +--------------------------------------------------------------------- +-- * Combinators + +data Value = Value String !Position + +type Parser a = State Value a + + +isNameCharFirst x = isAlphaNum x || x `elem` "_:" +isNameChar x = isAlphaNum x || x `elem` "-_:." + +-- Read and consume n characters from the stream, updating the position. +-- Highly likely to be a potential for space leaks from this, unless @n@ is bounded. +consume :: Int -> Parser () +consume n = do + Value s p <- get + let (a,b) = splitAt n s + put $ Value b (updateOnString p a) + + +-- Break once an end string is encountered. +-- Return the string before, and a boolean indicating if the end was matched. +breakOn :: String -> Parser (String,Bool) +breakOn end = do + Value s p <- get + if null s then + return ("",True) + else if end `isPrefixOf` s then + consume (length end) >> return ("",False) + else do + consume 1 + ~(a,b) <- breakOn end + return (head s:a,b) + +-- Break after an HTML name (entity, attribute or tag name) +-- Note: potential space leak with consume at the end +breakName :: Parser String +breakName = do + Value s p <- get + if not (null s) && isNameCharFirst (head s) then do + let (a,b) = span isNameChar s + consume (length a) + return a + else + return "" + +-- Break after a number has been read +-- Note: potential space leak with consume at the end +breakNumber :: Parser (Maybe Int) +breakNumber = do + Value s p <- get + if not (null s) && isDigit (head s) then do + let (a,b) = span isDigit s + consume (length a) + return $ Just $ read a + else + return Nothing + + +-- Drop a number of spaces +-- Note: potential space leak with consume at the end +dropSpaces :: Parser () +dropSpaces = do + Value s p <- get + let n = length $ takeWhile isSpace s + consume n + + +--------------------------------------------------------------------- +-- * Parser + +parse :: ParseOptions -> Parser [Tag] +parse opts = do + Value s p <- get + case s of + '<':'!':'-':'-':_ -> consume 4 >> comment opts p + '<':'/':_ -> consume 2 >> close opts p + '<':_ -> consume 1 >> open opts p + [] -> return [] + '&':_ -> do + consume 1 + s <- entity opts p + rest <- parse opts + return $ s ++ rest + s:ss -> do + consume 1 + rest <- parse opts + return $ tagPos opts p ++ [TagText [s]] ++ rest + +-- have read "" + rest <- parse opts + return $ tagPos opts p1 ++ [TagComment inner] ++ + (bad ?-> tagPosWarn opts p1 "Unexpected end when looking for \"-->\"") ++ + rest + + +close opts p1 = do + name <- breakName + dropSpaces + ~(Value s p) <- get + rest <- f s + return $ tagPos opts p1 ++ [TagClose name] ++ + (null name ?-> tagPosWarn opts p1 "Empty name in close tag") ++ + rest + where + f ('>':s) = do + consume 1 + rest <- parse opts + return rest + + f _ = do + ~(_,bad) <- breakOn ">" + rest <- parse opts + return $ tagPosWarn opts p1 "Junk in closing tag" ++ + bad ?-> tagPosWarn opts p1 "Unexpected end when looking for \">\"" ++ + rest + + +-- an open tag, perhaps > return [head s] else return "" + name <- liftM (prefix++) breakName + if null name then do + rest <- parse opts + return $ tagPos opts p1 ++ [TagText ('<':prefix)] ++ tagPosWarn opts p1 "Expected name of tag" ++ rest + else do + ~(atts,shut,warns) <- attribs opts p1 + rest <- parse opts + return $ tagPos opts p1 ++ [TagOpen name atts] ++ + shut ?-> (tagPos opts p1 ++ [TagClose name]) ++ + warns ++ rest + + +-- read a list of attributes +-- return (the attributes read, if the tag is self-shutting, any warnings) +attribs :: ParseOptions -> Position -> Parser ([Attribute],Bool,[Tag]) +attribs opts p1 = do + dropSpaces + Value s p <- get + case s of + '/':'>':_ -> consume 2 >> return ([],True ,[]) + '>':_ -> consume 1 >> return ([],False,[]) + x:xs | x `elem` "'\"" -> do + ~(val,warns1) <- value opts + ~(atts,shut,warns2) <- attribs opts p1 + return (("",val):atts,shut,warns1++warns2) + [] -> return ([],False,tagPosWarn opts p1 "Unexpected end when looking for \">\"") + _ -> attrib opts p1 + + +-- read a single attribute +-- return (the attributes read, if the tag is self-shutting, any warnings) +attrib :: ParseOptions -> Position -> Parser ([Attribute],Bool,[Tag]) +attrib opts p1 = do + name <- breakName + if null name then do + consume 1 + ~(atts,shut,warns) <- attribs opts p1 + return (atts,shut,tagPosWarn opts p1 "Junk character in tag" ++ warns) + else do + ~(Value sold p) <- get + dropSpaces + ~(Value s p) <- get + ~(val,warns1) <- f sold s + ~(atts,shut,warns2) <- attribs opts p1 + return ((name,val):atts,shut,warns1++warns2) + where + f sold ('=':s) = consume 1 >> dropSpaces >> value opts + f sold s | not $ junk sold = return ([], []) + | otherwise = do + ~(Value s p) <- get + dropJunk + return ([], tagPosWarn opts p "Junk character in tag") + + junk ('/':'>':_) = False + junk ('>':_) = False + junk (c:cs) | not $ isSpace c = True + junk _ = False + + dropJunk = do + ~(Value s p) <- get + when (junk s) $ consume 1 >> dropJunk + + +-- read a single value +-- return (value,warnings) +value :: ParseOptions -> Parser (String,[Tag]) +value opts = do + Value s p <- get + case s of + '\"':_ -> consume 1 >> f p True "\"" + '\'':_ -> consume 1 >> f p True "\'" + _ -> f p False ">" + where + f p1 quote end = do + Value s p <- get + case s of + '&':_ -> do + consume 1 + ~(cs1,warns1) <- entityString opts p + ~(cs2,warns2) <- f p1 quote end + return (cs1++cs2,warns1++warns2) + '/':'>':_ | not quote -> do + return ([],[]) + c:_ | c `elem` end || (not quote && isSpace c) -> do + if quote then consume 1 else return () + return ([],[]) + c:_ -> do + consume 1 + ~(cs,warns) <- f p1 quote end + return (c:cs,warns) + [] -> return ([],tagPosWarn opts p1 "Unexpected end in attibute value") + + + +-- have seen an &, and have consumed it +-- return a [Tag] to go in a tag stream +entity :: ParseOptions -> Position -> Parser [Tag] +entity opts p1 = do + Value s p <- get + case s of + '#':'x':_ -> f "#x" isHexDigit + '#':_ -> f "#" isDigit + _ -> f "" isNameChar + where + f prefix match = do + consume (length prefix) + g match (reverse prefix) (fromMaybe maxBound (optMaxEntityLength opts)) + + g match buf bound | bound < 0 = return $ + tagPos opts p1 ++ [TagText ('&':reverse buf)] ++ + tagPosWarn opts p1 "Unexpected '&' not in an entity" + + g match buf bound = do + Value s p <- get + case s of + ';':_ -> do + consume 1 + return $ tagPosWarnFix opts p1 $ optLookupEntity opts (reverse buf) + x:xs | match x -> consume 1 >> g match (x:buf) (bound-1) + _ -> g match buf (-1) + + + +-- return the tag and some position information +entityString :: ParseOptions -> Position -> Parser (String,[Tag]) +entityString opts p = do + tags <- entity opts p + let warnings = tagPosWarnFix opts p $ filter isTagWarning tags + return (innerText tags, warnings) diff -ruN haskell-src-exts-1.9.0/Test/examples/RecordInfixSelector.hs haskell-src-exts/Test/examples/RecordInfixSelector.hs --- haskell-src-exts-1.9.0/Test/examples/RecordInfixSelector.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/RecordInfixSelector.hs 2010-12-15 09:33:49.205962628 -0800 @@ -0,0 +1,3 @@ +data RecordWithInfixSelector = Cons { (<>) :: Int -> Int } + +idRecord = Cons { (<>) = id } \ No newline at end of file diff -ruN haskell-src-exts-1.9.0/Test/examples/RecordWildcards.hs haskell-src-exts/Test/examples/RecordWildcards.hs --- haskell-src-exts-1.9.0/Test/examples/RecordWildcards.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/RecordWildcards.hs 2010-12-15 09:33:49.369961386 -0800 @@ -0,0 +1,5 @@ +{-# LANGUAGE RecordWildCards, NamedFieldPuns #-} + +data Foo = Foo {a :: Int, b :: Int} + +foo Foo{b, ..} = a diff -ruN haskell-src-exts-1.9.0/Test/examples/RelaxedDo.hs haskell-src-exts/Test/examples/RelaxedDo.hs --- haskell-src-exts-1.9.0/Test/examples/RelaxedDo.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/RelaxedDo.hs 2010-12-15 09:33:49.814292053 -0800 @@ -0,0 +1,13 @@ +module Main where + +import Control.Monad + +main :: IO () +main = do + when ( 2 > 1) $ do + putStrLn "a" + putStrLn "b" + +nestedDoBlocks = getChar >>= (\c1 -> do + getChar >>= (\c2 -> do + getChar >>= (\c3 -> return [c1,c2,c3]))) \ No newline at end of file diff -ruN haskell-src-exts-1.9.0/Test/examples/SCCPragmas.hs haskell-src-exts/Test/examples/SCCPragmas.hs --- haskell-src-exts-1.9.0/Test/examples/SCCPragmas.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/SCCPragmas.hs 2010-12-15 09:33:49.981713671 -0800 @@ -0,0 +1,3 @@ +module SCCPragmas where + +x = {-# SCC "wibble" #-} 3 \ No newline at end of file diff -ruN haskell-src-exts-1.9.0/Test/examples/ScopedTypeVariables.hs haskell-src-exts/Test/examples/ScopedTypeVariables.hs --- haskell-src-exts-1.9.0/Test/examples/ScopedTypeVariables.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/ScopedTypeVariables.hs 2010-12-15 09:33:50.158083728 -0800 @@ -0,0 +1,12 @@ +{-# LANGUAGE ScopedTypeVariables #-} + +test :: IO Char +test = do + x :: Char <- getChar + return x + + +value :: String = "Hello" + +forallTest :: forall x . Eq x => x -> x +forallTest x = if x == x then (undefined :: x) else x \ No newline at end of file diff -ruN haskell-src-exts-1.9.0/Test/examples/SimpleDeriving.hs haskell-src-exts/Test/examples/SimpleDeriving.hs --- haskell-src-exts-1.9.0/Test/examples/SimpleDeriving.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/SimpleDeriving.hs 2010-12-15 09:33:50.330237011 -0800 @@ -0,0 +1 @@ +data T = T deriving Eq \ No newline at end of file diff -ruN haskell-src-exts-1.9.0/Test/examples/SingleClassAsst.hs haskell-src-exts/Test/examples/SingleClassAsst.hs --- haskell-src-exts-1.9.0/Test/examples/SingleClassAsst.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/SingleClassAsst.hs 2010-12-15 09:33:50.501712736 -0800 @@ -0,0 +1,4 @@ +module Test where + +foo :: (Eq a) => a -> a +foo x = x \ No newline at end of file diff -ruN haskell-src-exts-1.9.0/Test/examples/SpecializeInstance.hs haskell-src-exts/Test/examples/SpecializeInstance.hs --- haskell-src-exts-1.9.0/Test/examples/SpecializeInstance.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/SpecializeInstance.hs 2010-12-15 09:33:50.673752480 -0800 @@ -0,0 +1,4 @@ +instance Sized a => Sized (Digit a) where + {-# SPECIALIZE instance Sized (Digit (Elem a)) #-} + {-# SPECIALIZE instance Sized (Digit (Node a)) #-} + size xs = foldl (\ i x -> i + size x) 0 xs \ No newline at end of file diff -ruN haskell-src-exts-1.9.0/Test/examples/TupleSections.hs haskell-src-exts/Test/examples/TupleSections.hs --- haskell-src-exts-1.9.0/Test/examples/TupleSections.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/TupleSections.hs 2010-12-15 09:33:50.845962073 -0800 @@ -0,0 +1,3 @@ +{-# LANGUAGE TupleSections #-} + +foo x = (1,,) x 3 \ No newline at end of file diff -ruN haskell-src-exts-1.9.0/Test/examples/TypeFunctions.hs haskell-src-exts/Test/examples/TypeFunctions.hs --- haskell-src-exts-1.9.0/Test/examples/TypeFunctions.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/TypeFunctions.hs 2010-12-15 09:33:51.018502082 -0800 @@ -0,0 +1,7 @@ +{-# LANGUAGE TypeFamilies, KindSignatures #-} + +data Id = Id + +type family Rep (f :: * -> *) x :: * + +type instance Rep Id x = x diff -ruN haskell-src-exts-1.9.0/Test/examples/Unicode.hs haskell-src-exts/Test/examples/Unicode.hs --- haskell-src-exts-1.9.0/Test/examples/Unicode.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/Unicode.hs 2010-12-15 09:33:51.194212643 -0800 @@ -0,0 +1,118 @@ +{-# LANGUAGE UnicodeSyntax #-} +module Main where + +import System.Environment + +main :: IO () +main = do + as ← getArgs + print $ as + print $ test 0 + print $ test2 0 + print $ testRewrite 0 + print $ testRewriteReverse 0 + print $ testRewrite2 0 + print $ testRewriteReverse2 0 + +test :: a → Bool +test x = pi + where + f = replicate 2000 x + i = repeat x + pf = f |> 300 + pi = i |> 300 + +test2 :: a → (Bool,Bool) +test2 x = (pf,pi) + where + f = replicate 2000 x + i = repeat x + pf = f |> 300 + pi = i |> 300 + +testRewrite :: a → Bool +testRewrite x = pi + where + f = replicate 2000 x + i = repeat x + lf = length f + li = length i + pf = lf > 300 + pi = li > 300 + +testRewriteReverse :: a → Bool +testRewriteReverse x = pi + where + f = replicate 2000 x + i = repeat x + lf = length f + li = length i + pf = 300 ≤ lf + pi = 300 ≤ li + +testRewrite2 :: a → (Bool,Bool) +testRewrite2 x = (length i > 300,300 > length i) + where +-- f = replicate 2000 x + i = repeat x +-- lf = length f +-- li = length i +-- pf = lf > 300 +-- pi = li > 300 + +testRewriteReverse2 :: a → (Bool,Bool) +testRewriteReverse2 x = (2000 < length i,length i > 20) + where + f = replicate 2000 x + i = repeat x + lf = length f + li = length i + pf = 2000 == lf + pi = lf ≥ li + + +lengthOP :: (Num a, Ord a) ⇒ Bool → (a → a → Bool) → [b] → a → Bool +lengthOP v (⊜) [] n = 0 ⊜ n +lengthOP v (⊜) xxs n = co xxs 0 + where + co (_:xs) c | n > c = co xs (c+1) + | otherwise = v + co [] c = c ⊜ n + +(≣) = (==) +(≤) = (<=) +(≥) = (>=) + +(|≣) = lengthOP False (≣) +(|<) = lengthOP False (<) +(|≤) = lengthOP False (≤) +(|>) = lengthOP True (>) +(|≥) = lengthOP True (≥) + +(|=) = lengthOP False (==) +(|==) = lengthOP False (==) +(|<=) = lengthOP False (<=) +(|>=) = lengthOP False (>=) + + +-- ≣≤≥ +(≣|) = flip (|≣) +(<|) = flip (|≥) +(≤|) = flip (|>) +(>|) = flip (|≤) +(≥|) = flip (|<) + +{-# RULES +-- length +"xs |≣ n" forall xs n. (length xs) == n = xs |≣ n +"xs |< n" forall xs n. (length xs) < n = xs |< n +"xs |≤ n" forall xs n. (length xs) <= n = xs |≤ n +"xs |> n" forall xs n. (length xs) > n = xs |> n +"xs |≥ n" forall xs n. (length xs) >= n = xs |≥ n + +"n ≣| xs" forall xs n. n == (length xs) = xs |≣ n +"n <| xs" forall xs n. n < (length xs) = xs |≥ n +"n ≤| xs" forall xs n. n <= (length xs) = xs |> n +"n >| xs" forall xs n. n > (length xs) = xs |≤ n +"n ≥| xs" forall xs n. n >= (length xs) = xs |< n + #-} diff -ruN haskell-src-exts-1.9.0/Test/examples/UnicodeSyntax.hs haskell-src-exts/Test/examples/UnicodeSyntax.hs --- haskell-src-exts-1.9.0/Test/examples/UnicodeSyntax.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/UnicodeSyntax.hs 2010-12-15 09:33:51.646160151 -0800 @@ -0,0 +1,12 @@ +{-# LANGUAGE UnicodeSyntax #-} +module UnicodeSyntax where + +import System.Environment (getArgs) + +main :: IO () +main = do + as ← getArgs + print $ test 0 + +test :: Int → Bool +test x = x*5 == x+8 diff -ruN haskell-src-exts-1.9.0/Test/examples/UnindentedPragmaClose.hs haskell-src-exts/Test/examples/UnindentedPragmaClose.hs --- haskell-src-exts-1.9.0/Test/examples/UnindentedPragmaClose.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/UnindentedPragmaClose.hs 2010-12-15 09:33:51.818212062 -0800 @@ -0,0 +1,4 @@ +{-# LANGUAGE MultiParamTypeClasses +#-} +f :: Int +f = 4 \ No newline at end of file diff -ruN haskell-src-exts-1.9.0/Test/examples/WhereBlock.hs haskell-src-exts/Test/examples/WhereBlock.hs --- haskell-src-exts-1.9.0/Test/examples/WhereBlock.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/WhereBlock.hs 2010-12-15 09:33:51.990711919 -0800 @@ -0,0 +1,3 @@ +hash ptr len = f len + where f h = return h + f p = (p `advancePtr` 1) diff -ruN haskell-src-exts-1.9.0/Test/examples/WithKeyword.hs haskell-src-exts/Test/examples/WithKeyword.hs --- haskell-src-exts-1.9.0/Test/examples/WithKeyword.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/examples/WithKeyword.hs 2010-12-15 09:33:52.162401592 -0800 @@ -0,0 +1 @@ +with = 1 diff -ruN haskell-src-exts-1.9.0/Test/failing.txt haskell-src-exts/Test/failing.txt --- haskell-src-exts-1.9.0/Test/failing.txt 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/failing.txt 2010-12-15 09:33:52.338239265 -0800 @@ -0,0 +1,3 @@ +Unicode.hs Fails if readFile is not Unicode-aware, i.e. if GHC 6.12 is not used. +UnicodeSyntax.hs Same as above. +ForeignImport.hs Shouldn't succeed. Lacks ForeignFunctionInterface pragma, but complains about missing TemplateHaskell. \ No newline at end of file diff -ruN haskell-src-exts-1.9.0/Test/printFail.txt haskell-src-exts/Test/printFail.txt --- haskell-src-exts-1.9.0/Test/printFail.txt 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/printFail.txt 2010-12-15 09:33:52.509721028 -0800 @@ -0,0 +1,3 @@ +HexPrec.hs Uses hexadecimal notation to specify precedence of infix operator. We don't retain that info. +RealGHC.lhs Literate haskell. +SpecializeInstance.hs Prints SPECIALISE instead of SPECIALIZE. \ No newline at end of file diff -ruN haskell-src-exts-1.9.0/Test/Runner.hs haskell-src-exts/Test/Runner.hs --- haskell-src-exts-1.9.0/Test/Runner.hs 1969-12-31 16:00:00.000000000 -0800 +++ haskell-src-exts/Test/Runner.hs 2010-12-15 09:33:35.039211422 -0800 @@ -0,0 +1,74 @@ +-- | Use "runhaskell Setup.hs test" or "cabal test" to run these tests. +-- Particular files may be selected by supplying their names as arguments. +module Main where + +import Language.Haskell.Exts.Annotated +import System.IO +import Control.Monad +import Data.List +import Data.Char +import System.Directory +import System.Environment (getArgs) +import System.Exit (exitFailure) +import System.FilePath + + +main :: IO () +main = go =<< getArgs + + +-- | Run the selected tests - or all of them if the supplied list is empty +go :: [FilePath] -> IO () +go testsToRun = do + hSetBuffering stdout NoBuffering + files <- if null testsToRun then getDirectoryContents examplesDir else return testsToRun + putStrLn "Testing parser:" + src <- liftM (map (head . words) . lines) . readFile $ "Test" "failing.txt" + results <- sequence [check (x `elem` src) (examplesDir x) | x <- files, not $ "." `isPrefixOf` x] + putStrLn "\nAll parsing tests completed!\n" + putStrLn "Testing exact printer:" + pSrc <- liftM (map (head . words) . lines) . readFile $ "Test" "printFail.txt" + pResults <- sequence [roundTrip (x `elem` pSrc) (examplesDir x) + | x <- files, x `notElem` src, not $ "." `isPrefixOf` x] + putStrLn "\nAll printing tests completed!\n" + unless (all id $ results ++ pResults) exitFailure + + +-- | Where all the tests are to be found +examplesDir :: FilePath +examplesDir = "Test" "examples" + + +-- | Runs the test, and returns True unless there is an unexpected result +check :: Bool -> FilePath -> IO Bool +check expected file = do + res <- parseFile file + case res of + ParseOk x | expected -> putStrLn ("\n") >> return False + | otherwise -> putChar '.' >> return True + err | expected -> putChar '!' >> return True + | otherwise -> putStrLn ("\nFailure when parsing " ++ show file ++ "\n" ++ show err) >> return False + + +roundTrip :: Bool -> FilePath -> IO Bool +roundTrip expected file = do + fc <- readFile file + pr <- parseFileWithComments (defaultParseMode { parseFilename = file }) file + case pr of + ParseOk (ast,cs) -> do + let res = exactPrint ast cs + xs = dropWhile (uncurry (==)) + $ zip (map (reverse . dropWhile isSpace . reverse) $ lines fc) + (map (reverse . dropWhile isSpace . reverse) $ lines res) + case xs of + [] | expected -> putStrLn ("\n") >> return False + | otherwise -> putChar '.' >> return True + (lfc, lres):_ + | expected -> putChar '!' >> return True + | otherwise -> do + putStrLn $ "Result of print does not match input when printing " ++ show file + putStrLn $ "First unmatching lines are (line length):" + putStrLn $ " Input (" ++ show (length lfc) ++ "): " ++ lfc + putStrLn $ " Result (" ++ show (length lres) ++ "): " ++ lres + return False + err -> putStrLn ("\nFailure when parsing " ++ show file ++ "\n" ++ show err) >> return False