{-# OPTIONS_GHC -w #-}
{-# OPTIONS -fglasgow-exts -cpp #-}
module CSPM.Parser.Parser (
    parseFile_, parseInteractiveStmt_, parseExpression_
) 
where

-- To generate the corresponding .hs file run the following commands
-- cpp -P src/CSPM/Parser/Parser.ppy > src/CSPM/Parser/Parser.y
-- happy --ghc --coerce --array src/CSPM/Parser/Parser.y
-- rm src/CSPM/Parser/Parser.y

-- i.e.: cpp -P src/CSPM/Parser/Parser.ppy > src/CSPM/Parser/Parser.y && happy --ghc --coerce --array src/CSPM/Parser/Parser.y && rm src/CSPM/Parser/Parser.y

import Data.Char
import Data.List (groupBy, nub, sort, sortBy, (\\))
import qualified Data.Map as M

import CSPM.DataStructures.Literals
import CSPM.DataStructures.Names
import CSPM.DataStructures.Syntax
import CSPM.DataStructures.Types hiding (TDot, TChar)
import CSPM.Parser.Exceptions
import CSPM.Parser.Lexer
import CSPM.Parser.Monad
import CSPM.Parser.Tokens
import Prelude hiding (getChar)
import Util.Annotated
import Util.Exception (panic)
import qualified Data.Array as Happy_Data_Array
import qualified GHC.Exts as Happy_GHC_Exts

-- parser produced by Happy Version 1.18.10

newtype HappyAbsSyn t8 t9 t39 t40 = HappyAbsSyn HappyAny
#if __GLASGOW_HASKELL__ >= 607
type HappyAny = Happy_GHC_Exts.Any
#else
type HappyAny = forall a . a
#endif
happyIn6 :: (PCSPMFile) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn6 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn6 #-}
happyOut6 :: (HappyAbsSyn t8 t9 t39 t40) -> (PCSPMFile)
happyOut6 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut6 #-}
happyIn7 :: (PInteractiveStmt) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn7 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn7 #-}
happyOut7 :: (HappyAbsSyn t8 t9 t39 t40) -> (PInteractiveStmt)
happyOut7 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut7 #-}
happyIn8 :: t8 -> (HappyAbsSyn t8 t9 t39 t40)
happyIn8 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn8 #-}
happyOut8 :: (HappyAbsSyn t8 t9 t39 t40) -> t8
happyOut8 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut8 #-}
happyIn9 :: t9 -> (HappyAbsSyn t8 t9 t39 t40)
happyIn9 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn9 #-}
happyOut9 :: (HappyAbsSyn t8 t9 t39 t40) -> t9
happyOut9 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut9 #-}
happyIn10 :: ([PDecl]) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn10 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn10 #-}
happyOut10 :: (HappyAbsSyn t8 t9 t39 t40) -> ([PDecl])
happyOut10 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut10 #-}
happyIn11 :: ([PDecl]) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn11 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn11 #-}
happyOut11 :: (HappyAbsSyn t8 t9 t39 t40) -> ([PDecl])
happyOut11 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut11 #-}
happyIn12 :: ([PDecl]) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn12 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn12 #-}
happyOut12 :: (HappyAbsSyn t8 t9 t39 t40) -> ([PDecl])
happyOut12 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut12 #-}
happyIn13 :: (Maybe PDecl) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn13 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn13 #-}
happyOut13 :: (HappyAbsSyn t8 t9 t39 t40) -> (Maybe PDecl)
happyOut13 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut13 #-}
happyIn14 :: (PDecl) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn14 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn14 #-}
happyOut14 :: (HappyAbsSyn t8 t9 t39 t40) -> (PDecl)
happyOut14 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut14 #-}
happyIn15 :: (PDecl) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn15 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn15 #-}
happyOut15 :: (HappyAbsSyn t8 t9 t39 t40) -> (PDecl)
happyOut15 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut15 #-}
happyIn16 :: ([PPat]) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn16 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn16 #-}
happyOut16 :: (HappyAbsSyn t8 t9 t39 t40) -> ([PPat])
happyOut16 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut16 #-}
happyIn17 :: ([PPat]) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn17 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn17 #-}
happyOut17 :: (HappyAbsSyn t8 t9 t39 t40) -> ([PPat])
happyOut17 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut17 #-}
happyIn18 :: ([PExp]) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn18 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn18 #-}
happyOut18 :: (HappyAbsSyn t8 t9 t39 t40) -> ([PExp])
happyOut18 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut18 #-}
happyIn19 :: (PAssertion) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn19 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn19 #-}
happyOut19 :: (HappyAbsSyn t8 t9 t39 t40) -> (PAssertion)
happyOut19 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut19 #-}
happyIn20 :: (Located SemanticProperty) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn20 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn20 #-}
happyOut20 :: (HappyAbsSyn t8 t9 t39 t40) -> (Located SemanticProperty)
happyOut20 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut20 #-}
happyIn21 :: (Located (ModelOption UnRenamedName)) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn21 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn21 #-}
happyOut21 :: (HappyAbsSyn t8 t9 t39 t40) -> (Located (ModelOption UnRenamedName))
happyOut21 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut21 #-}
happyIn22 :: (PDataTypeClause) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn22 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn22 #-}
happyOut22 :: (HappyAbsSyn t8 t9 t39 t40) -> (PDataTypeClause)
happyOut22 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut22 #-}
happyIn23 :: ([PDataTypeClause]) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn23 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn23 #-}
happyOut23 :: (HappyAbsSyn t8 t9 t39 t40) -> ([PDataTypeClause])
happyOut23 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut23 #-}
happyIn24 :: ([PDataTypeClause]) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn24 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn24 #-}
happyOut24 :: (HappyAbsSyn t8 t9 t39 t40) -> ([PDataTypeClause])
happyOut24 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut24 #-}
happyIn25 :: (Located UnRenamedName) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn25 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn25 #-}
happyOut25 :: (HappyAbsSyn t8 t9 t39 t40) -> (Located UnRenamedName)
happyOut25 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut25 #-}
happyIn26 :: (Located UnRenamedName) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn26 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn26 #-}
happyOut26 :: (HappyAbsSyn t8 t9 t39 t40) -> (Located UnRenamedName)
happyOut26 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut26 #-}
happyIn27 :: ([Located UnRenamedName]) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn27 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn27 #-}
happyOut27 :: (HappyAbsSyn t8 t9 t39 t40) -> ([Located UnRenamedName])
happyOut27 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut27 #-}
happyIn28 :: ([Located UnRenamedName]) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn28 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn28 #-}
happyOut28 :: (HappyAbsSyn t8 t9 t39 t40) -> ([Located UnRenamedName])
happyOut28 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut28 #-}
happyIn29 :: (PSTypeScheme) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn29 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn29 #-}
happyOut29 :: (HappyAbsSyn t8 t9 t39 t40) -> (PSTypeScheme)
happyOut29 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut29 #-}
happyIn30 :: ([PSTypeConstraint]) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn30 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn30 #-}
happyOut30 :: (HappyAbsSyn t8 t9 t39 t40) -> ([PSTypeConstraint])
happyOut30 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut30 #-}
happyIn31 :: ([PSTypeConstraint]) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn31 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn31 #-}
happyOut31 :: (HappyAbsSyn t8 t9 t39 t40) -> ([PSTypeConstraint])
happyOut31 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut31 #-}
happyIn32 :: (PSType) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn32 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn32 #-}
happyOut32 :: (HappyAbsSyn t8 t9 t39 t40) -> (PSType)
happyOut32 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut32 #-}
happyIn33 :: (PSTypeConstraint) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn33 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn33 #-}
happyOut33 :: (HappyAbsSyn t8 t9 t39 t40) -> (PSTypeConstraint)
happyOut33 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut33 #-}
happyIn34 :: ([PSType]) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn34 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn34 #-}
happyOut34 :: (HappyAbsSyn t8 t9 t39 t40) -> ([PSType])
happyOut34 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut34 #-}
happyIn35 :: ([PSType]) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn35 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn35 #-}
happyOut35 :: (HappyAbsSyn t8 t9 t39 t40) -> ([PSType])
happyOut35 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut35 #-}
happyIn36 :: (Located Literal) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn36 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn36 #-}
happyOut36 :: (HappyAbsSyn t8 t9 t39 t40) -> (Located Literal)
happyOut36 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut36 #-}
happyIn37 :: (PPat) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn37 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn37 #-}
happyOut37 :: (HappyAbsSyn t8 t9 t39 t40) -> (PPat)
happyOut37 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut37 #-}
happyIn38 :: ([PPat]) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn38 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn38 #-}
happyOut38 :: (HappyAbsSyn t8 t9 t39 t40) -> ([PPat])
happyOut38 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut38 #-}
happyIn39 :: t39 -> (HappyAbsSyn t8 t9 t39 t40)
happyIn39 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn39 #-}
happyOut39 :: (HappyAbsSyn t8 t9 t39 t40) -> t39
happyOut39 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut39 #-}
happyIn40 :: t40 -> (HappyAbsSyn t8 t9 t39 t40)
happyIn40 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn40 #-}
happyOut40 :: (HappyAbsSyn t8 t9 t39 t40) -> t40
happyOut40 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut40 #-}
happyIn41 :: (PExp) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn41 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn41 #-}
happyOut41 :: (HappyAbsSyn t8 t9 t39 t40) -> (PExp)
happyOut41 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut41 #-}
happyIn42 :: ([PExp]) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn42 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn42 #-}
happyOut42 :: (HappyAbsSyn t8 t9 t39 t40) -> ([PExp])
happyOut42 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut42 #-}
happyIn43 :: ([PExp]) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn43 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn43 #-}
happyOut43 :: (HappyAbsSyn t8 t9 t39 t40) -> ([PExp])
happyOut43 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut43 #-}
happyIn44 :: (PExp) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn44 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn44 #-}
happyOut44 :: (HappyAbsSyn t8 t9 t39 t40) -> (PExp)
happyOut44 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut44 #-}
happyIn45 :: (PExp) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn45 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn45 #-}
happyOut45 :: (HappyAbsSyn t8 t9 t39 t40) -> (PExp)
happyOut45 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut45 #-}
happyIn46 :: (PField) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn46 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn46 #-}
happyOut46 :: (HappyAbsSyn t8 t9 t39 t40) -> (PField)
happyOut46 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut46 #-}
happyIn47 :: ((PExp, PExp)) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn47 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn47 #-}
happyOut47 :: (HappyAbsSyn t8 t9 t39 t40) -> ((PExp, PExp))
happyOut47 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut47 #-}
happyIn48 :: ([(PExp, PExp)]) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn48 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn48 #-}
happyOut48 :: (HappyAbsSyn t8 t9 t39 t40) -> ([(PExp, PExp)])
happyOut48 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut48 #-}
happyIn49 :: ([(PExp, PExp)]) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn49 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn49 #-}
happyOut49 :: (HappyAbsSyn t8 t9 t39 t40) -> ([(PExp, PExp)])
happyOut49 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut49 #-}
happyIn50 :: ((PExp, PExp)) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn50 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn50 #-}
happyOut50 :: (HappyAbsSyn t8 t9 t39 t40) -> ((PExp, PExp))
happyOut50 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut50 #-}
happyIn51 :: ([(PExp, PExp)]) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn51 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn51 #-}
happyOut51 :: (HappyAbsSyn t8 t9 t39 t40) -> ([(PExp, PExp)])
happyOut51 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut51 #-}
happyIn52 :: ([(PExp, PExp)]) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn52 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn52 #-}
happyOut52 :: (HappyAbsSyn t8 t9 t39 t40) -> ([(PExp, PExp)])
happyOut52 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut52 #-}
happyIn53 :: ([PField]) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn53 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn53 #-}
happyOut53 :: (HappyAbsSyn t8 t9 t39 t40) -> ([PField])
happyOut53 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut53 #-}
happyIn54 :: ([PField]) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn54 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn54 #-}
happyOut54 :: (HappyAbsSyn t8 t9 t39 t40) -> ([PField])
happyOut54 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut54 #-}
happyIn55 :: ([PExp]) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn55 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn55 #-}
happyOut55 :: (HappyAbsSyn t8 t9 t39 t40) -> ([PExp])
happyOut55 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut55 #-}
happyIn56 :: ([PExp]) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn56 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn56 #-}
happyOut56 :: (HappyAbsSyn t8 t9 t39 t40) -> ([PExp])
happyOut56 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut56 #-}
happyIn57 :: ([PExp]) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn57 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn57 #-}
happyOut57 :: (HappyAbsSyn t8 t9 t39 t40) -> ([PExp])
happyOut57 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut57 #-}
happyIn58 :: ([PExp]) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn58 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn58 #-}
happyOut58 :: (HappyAbsSyn t8 t9 t39 t40) -> ([PExp])
happyOut58 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut58 #-}
happyIn59 :: ([(PExp, PExp)]) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn59 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn59 #-}
happyOut59 :: (HappyAbsSyn t8 t9 t39 t40) -> ([(PExp, PExp)])
happyOut59 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut59 #-}
happyIn60 :: ([(PExp, PExp)]) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn60 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn60 #-}
happyOut60 :: (HappyAbsSyn t8 t9 t39 t40) -> ([(PExp, PExp)])
happyOut60 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut60 #-}
happyIn61 :: ([PStmt]) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn61 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn61 #-}
happyOut61 :: (HappyAbsSyn t8 t9 t39 t40) -> ([PStmt])
happyOut61 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut61 #-}
happyIn62 :: (PStmt) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn62 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn62 #-}
happyOut62 :: (HappyAbsSyn t8 t9 t39 t40) -> (PStmt)
happyOut62 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut62 #-}
happyIn63 :: ([PStmt]) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn63 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn63 #-}
happyOut63 :: (HappyAbsSyn t8 t9 t39 t40) -> ([PStmt])
happyOut63 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut63 #-}
happyIn64 :: ([PStmt]) -> (HappyAbsSyn t8 t9 t39 t40)
happyIn64 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn64 #-}
happyOut64 :: (HappyAbsSyn t8 t9 t39 t40) -> ([PStmt])
happyOut64 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut64 #-}
happyInTok :: (LToken) -> (HappyAbsSyn t8 t9 t39 t40)
happyInTok x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyInTok #-}
happyOutTok :: (HappyAbsSyn t8 t9 t39 t40) -> (LToken)
happyOutTok x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOutTok #-}


happyActOffsets :: HappyAddr
happyActOffsets = HappyA# "\x00\x00\xee\x00\x55\x02\x00\x00\x60\x00\x00\x00\x00\x00\x55\x02\xc0\x01\xb8\x08\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00\x55\x02\xbf\x00\x55\x02\x55\x02\x00\x00\x00\x00\x55\x02\x55\x02\x55\x02\x55\x02\x55\x02\x55\x02\x55\x02\x55\x02\x55\x02\x55\x02\x55\x02\x55\x02\x55\x02\x55\x02\xba\x01\x00\x00\xbf\x00\x12\x02\x12\x02\xf6\x01\xb6\x01\x00\x00\xf5\x02\x55\x02\x00\x00\x00\x00\x0b\x02\x00\x00\x00\x00\xf9\x01\x0f\x02\x00\x00\x00\x00\xe7\x01\xbf\x02\x0f\x00\x00\x00\x04\x02\x04\x02\x04\x02\x04\x02\x04\x02\x04\x02\x04\x02\x04\x02\xe7\xff\xd1\x01\xf8\x07\xbd\x00\x85\x04\x00\x00\xee\x01\xfd\x01\xed\x01\xe5\x01\xe4\x01\xe3\x01\xea\x01\x00\x00\xe8\x01\xec\x01\xb8\x07\xb8\x08\xf8\xff\xeb\x01\x78\x07\xa8\x01\xe9\x01\x38\x07\xf9\xff\xff\x02\xa5\x01\xf2\xff\x93\x05\xb2\x04\xd6\x01\x00\x00\xdb\x01\xb8\x08\x7f\x02\xe1\x06\xde\x01\x00\x00\x89\x01\x83\x01\x55\x02\x55\x02\x55\x02\x55\x02\x55\x02\x55\x02\x55\x02\x55\x02\x55\x02\x55\x02\x55\x02\x55\x02\x55\x02\x55\x02\x55\x02\x55\x02\x55\x02\x55\x02\x55\x02\x55\x02\x55\x02\x55\x02\x55\x02\x55\x02\x55\x02\x55\x02\x55\x02\x55\x02\x55\x02\x55\x02\x55\x02\x55\x02\x55\x02\x55\x02\x8a\x06\xfb\xff\x00\x00\x00\x00\x00\x00\x00\x00\x55\x02\x00\x00\x72\x01\x3f\x03\x33\x06\x60\x0b\x60\x0b\x23\x0b\xe6\x0a\x60\x0b\xef\x09\x6c\x0a\xa9\x0a\xf3\x05\xc3\x01\x2e\x04\xbc\x01\x00\x00\xb8\x01\xb4\x01\x7e\x01\xcc\xff\xf2\xff\xf2\xff\xf2\xff\x93\x05\x93\x05\x1b\x04\x1b\x04\x1b\x04\x1b\x04\x1b\x04\x1b\x04\xac\x02\x2c\x03\xf5\x08\x78\x08\x2f\x0a\xb2\x09\x72\x09\x3f\x02\x00\x00\x55\x02\x00\x00\x55\x02\x55\x02\x55\x02\x55\x02\x00\x00\x55\x02\x00\x00\x55\x02\x00\x00\x4d\x01\x55\x02\x00\x00\x55\x02\x55\x02\x55\x02\x00\x00\x55\x02\x55\x02\x76\x01\x55\x02\x55\x02\x55\x02\x55\x02\x55\x02\x62\x01\x55\x02\x55\x02\x55\x02\x55\x02\x55\x02\x00\x00\x55\x02\x55\x02\xbf\x00\xb3\x01\x73\x01\xae\x01\x00\x00\x00\x00\xad\x01\xab\x01\xa2\x01\x55\x02\x81\x00\x01\x00\x00\x00\x55\x02\xac\x01\x00\x00\x7a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x55\x02\x77\x01\x00\x00\x00\x00\x38\x08\x00\x00\x00\x00\x00\x00\x80\x01\x00\x00\x1f\x00\x7d\x01\x0b\x00\x4c\x00\x67\x00\x4c\x00\x4c\x00\x42\x01\x55\x02\x9d\x01\x9d\x01\x55\x02\x94\x01\x55\x02\x91\x01\x48\x01\x44\x01\x00\x00\x6a\x01\x38\x08\x38\x08\x38\x08\x00\x00\x55\x02\x38\x08\x38\x08\x38\x08\x00\x00\x00\x00\x55\x02\x00\x00\x5c\x01\x29\x01\x38\x08\x38\x08\xb3\x05\xee\x03\x55\x02\x00\x00\x21\x01\x60\x01\x38\x08\x00\x00\x00\x00\x73\x05\x60\x0b\x55\x02\x55\x02\x00\x00\x55\x02\x0a\x01\x55\x02\x55\x02\x55\x02\x0d\x01\x55\x02\x55\x02\x55\x02\x00\x00\x97\x03\x55\x02\x18\x01\x00\x00\x18\x01\x00\x00\x55\x02\xe6\x0a\xa9\x0a\x1c\x05\x55\x02\x32\x09\x32\x09\x00\x00\x00\x00\x00\x00\x2f\x0a\x2f\x0a\x55\x02\x00\x00\x08\x01\x55\x02\x00\x00\x55\x02\x00\x00\x55\x02\x30\x01\xc5\x04\x55\x02\xf7\x00\x00\x00\x02\x01\xf7\xff\x01\x00\x00\x00\x00\x00\x00\x00\x34\x01\x3b\x01\x00\x00\x00\x00\x1b\x00\x47\x00\x12\x00\xfa\x00\x33\x01\x07\x00\x00\x00\xf4\x00\xe2\x00\x02\x00\x00\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x00\x00\x55\x02\x00\x00\x09\x00\x1a\x00\x09\x00\x2d\x01\x1a\x00\x00\x00\x4c\x00\x00\x00\x4c\x00\x00\x00\x1f\x01\x04\x01\x00\x00\x4c\x00\x55\x02\x1c\x01\xf9\x00\x00\x00\x00\x00\x55\x02\xbf\x00\x38\x08\x55\x02\x55\x02\x38\x08\x38\x08\xcd\x00\x00\x00\x38\x08\x32\x09\x55\x02\xce\x00\x00\x00\x00\x00\x32\x09\x00\x00\x38\x08\x32\x09\xc9\x00\x00\x00\xba\x00\x01\x01\xf8\x00\x00\x00\x00\x00\x05\x00\x4c\x00\x00\x00\xf5\x00\x1a\x00\xea\x00\x1a\x00\x4c\x00\x1a\x00\x00\x00\x01\x00\x55\x02\x00\x00\x00\x00\x00\x00\xc4\x00\x1a\x00\x00\x00\x00\x00"#

happyGotoOffsets :: HappyAddr
happyGotoOffsets = HappyA# "\x15\x00\x35\x01\x76\x09\xe9\x00\x57\x0c\x00\x00\x00\x00\x89\x06\x00\x00\xa3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x0e\x6e\x0c\xa5\x03\x0e\x0e\x00\x00\x00\x00\x02\x0e\xfe\x0d\x41\x02\x1a\x05\xb9\x01\xec\x03\xf2\x0d\x3a\x07\xea\x0b\xd5\x0b\xcb\x0b\xb6\x0b\xac\x0b\xe8\x0d\x00\x00\x00\x00\x92\x04\x6e\x01\x67\x01\x74\x0a\x00\x00\x00\x00\xc3\x00\xf7\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe6\x00\x00\x00\x00\x00\x00\x00\xa3\x00\x00\x00\x00\x00\x49\x01\xd0\x00\xcf\x00\x1d\x01\xa4\x00\xc7\x00\xc5\x00\xbc\x00\x00\x00\xb7\x09\xa3\x00\x00\x00\xa3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8d\x00\x00\x00\xa3\x00\xa3\x00\x00\x00\x00\x00\xa3\x00\x00\x00\x00\x00\xa3\x00\x00\x00\xa3\x00\x00\x00\xa3\x00\xa3\x00\xa3\x00\x00\x00\x00\x00\x00\x00\xa3\x00\xa3\x00\xa3\x00\x95\x00\x00\x00\x00\x00\x7d\x00\xe6\x0d\xdc\x0d\xd0\x0d\xcc\x0d\xc0\x0d\xb6\x0d\xb4\x0d\xaa\x0d\x9e\x0d\x9a\x0d\x8e\x0d\x84\x0d\x82\x0d\x78\x0d\x6c\x0d\x68\x0d\x5c\x0d\x52\x0d\x50\x0d\x46\x0d\x95\x03\x08\x03\x3a\x0d\xe3\x06\x36\x0d\x2a\x0d\x20\x0d\x1e\x0d\x14\x0d\x08\x0d\x04\x0d\xf8\x0c\xee\x0c\xec\x0c\xa3\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\x0b\x00\x00\x2a\x05\xa3\x00\xa3\x00\xa3\x00\xa3\x00\xa3\x00\xa3\x00\xa3\x00\xa3\x00\xa3\x00\xa3\x00\xa3\x00\x69\x00\xa3\x00\x00\x00\x00\x00\x63\x00\x00\x00\x00\x00\xa3\x00\xa3\x00\xa3\x00\xa3\x00\xa3\x00\xa3\x00\xa3\x00\xa3\x00\xa3\x00\xa3\x00\xa3\x00\xa3\x00\xa3\x00\xa3\x00\xa3\x00\xa3\x00\xa3\x00\xa3\x00\xa3\x00\xa3\x00\x00\x00\xe2\x0c\x00\x00\xd6\x0c\x3d\x09\xbd\x01\xd2\x0c\x00\x00\x78\x00\x00\x00\x8c\x0b\x00\x00\xc6\x0c\xbc\x0c\x00\x00\xba\x0c\xb0\x0c\x56\x0b\x00\x00\x2a\x07\x3d\x02\x00\x00\xd3\x06\x00\x09\xa4\x0c\xa0\x0c\x94\x0c\x00\x00\x06\x01\x8a\x0c\x88\x0c\x7e\x0c\x7c\x06\x00\x00\x0e\x02\xc1\x08\x40\x0c\x00\x00\x83\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81\x08\xd3\x00\x72\x0c\x00\x00\x6c\x0b\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x08\x7b\x00\x00\x00\x00\x00\xa3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x00\x16\x01\x56\x01\x0e\x01\x0c\x01\x00\x00\x01\x08\xb0\x01\x8b\x01\xc1\x07\x6d\x00\xfc\x03\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\x00\xa3\x00\xa3\x00\x00\x00\x65\x0b\xa3\x00\xa3\x00\xa3\x00\x00\x00\x00\x00\x0d\x05\x00\x00\x00\x00\x00\x00\xa3\x00\xa3\x00\xa3\x00\xa3\x00\xdf\x03\x00\x00\x00\x00\x00\x00\xa3\x00\x00\x00\x00\x00\xa3\x00\xa3\x00\x28\x0b\x21\x0b\x00\x00\x8b\x04\x00\x00\x85\x07\xeb\x0a\xe7\x0a\x00\x00\xb4\x0a\xb0\x0a\x78\x0a\x00\x00\xa7\x00\x88\x03\x4a\x00\x00\x00\x31\x00\x00\x00\xca\x01\xa3\x00\xa3\x00\xa3\x00\x33\x0a\xa3\x00\xa3\x00\x00\x00\x00\x00\x00\x00\xa3\x00\xa3\x00\xfb\x09\x00\x00\x00\x00\x46\x01\x00\x00\xbb\x09\x00\x00\xc5\x08\x00\x00\xa3\x00\x85\x08\x00\x00\x00\x00\x4f\x00\x00\x00\x29\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x00\xe7\x00\xe5\x00\xe4\x00\xa1\x00\x00\x00\x40\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x00\x00\x00\x7e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x5a\x00\xfc\x05\x45\x00\x00\x00\x00\x00\x00\x00\xc0\x05\x12\x0c\xa3\x00\x05\x08\xc5\x07\xa3\x00\xa3\x00\x00\x00\x00\x00\xa3\x00\xa3\x00\x00\x06\x2b\x00\x00\x00\x00\x00\xa3\x00\x00\x00\xa3\x00\xa3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x56\x00\x00\x00\xf6\xff\x00\x00\x00\x00\x00\x00\x21\x00\x00\x00\x00\x00\x80\x05\x79\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#

happyDefActions :: HappyAddr
happyDefActions = HappyA# "\xf3\xff\x00\x00\x00\x00\x00\x00\xf1\xff\x9b\xff\x9c\xff\x45\xff\x00\x00\xa1\xff\x9d\xff\xab\xff\xaa\xff\xa9\xff\xc6\xff\xa7\xff\xa8\xff\x72\xff\x00\x00\x00\x00\x00\x00\x00\x00\x84\xff\xa3\xff\x00\x00\x00\x00\x00\x00\x45\xff\x41\xff\x45\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\xff\x00\x00\x00\x00\xc2\xff\xf7\xff\xc3\xff\xc4\xff\xf8\xff\x00\x00\xef\xff\xee\xff\xea\xff\x00\x00\x00\x00\xc6\xff\xd9\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\xff\x36\xff\x00\x00\x38\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\xff\x3d\xff\x4d\xff\x00\x00\x42\xff\x00\x00\x44\xff\x00\x00\x00\x00\x40\xff\x42\xff\x00\x00\x00\x00\x00\x00\x7c\xff\x8a\xff\x8d\xff\x00\x00\xa5\xff\xd6\xff\xa6\xff\x00\x00\x00\x00\x00\x00\x49\xff\x00\x00\x4a\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\xff\x00\x00\xfc\xff\xf0\xff\xf2\xff\x83\xff\x00\x00\xa2\xff\x00\x00\x00\x00\x00\x00\x64\xff\x65\xff\x66\xff\x68\xff\x6f\xff\x6b\xff\x6c\xff\x6e\xff\xa1\xff\x3d\xff\x00\x00\x00\x00\x50\xff\x3d\xff\x51\xff\x00\x00\x7d\xff\x87\xff\x86\xff\x85\xff\x88\xff\x89\xff\x90\xff\x91\xff\x8e\xff\x8f\xff\x92\xff\x93\xff\x8c\xff\x8b\xff\x6d\xff\x71\xff\x53\xff\x55\xff\x57\xff\x99\xff\x48\xff\x00\x00\xc5\xff\x00\x00\x00\x00\x00\x00\x00\x00\x9a\xff\x00\x00\x96\xff\x00\x00\x7b\xff\x00\x00\x00\x00\x7a\xff\x00\x00\x00\x00\x00\x00\x74\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe1\xff\x00\x00\x00\x00\xf1\xff\x00\x00\xd8\xff\x00\x00\xe3\xff\xe4\xff\x00\x00\x00\x00\xe8\xff\x00\x00\x00\x00\xec\xff\xf5\xff\x00\x00\x00\x00\xfa\xff\xd2\xff\xd0\xff\xcf\xff\xce\xff\xcd\xff\x00\x00\xd4\xff\xd1\xff\xc1\xff\x98\xff\xed\xff\xeb\xff\xf4\xff\xba\xff\xdc\xff\xc0\xff\x00\x00\xc6\xff\x00\x00\x00\x00\x00\x00\x00\x00\xe9\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe2\xff\x00\x00\x3b\xff\x3a\xff\x59\xff\x37\xff\x00\x00\x5f\xff\x5d\xff\x5e\xff\x4e\xff\x3c\xff\x00\x00\x4b\xff\x00\x00\x00\x00\x43\xff\x3e\xff\x00\x00\x00\x00\x00\x00\x78\xff\x00\x00\x47\xff\x94\xff\xa4\xff\xe9\xff\x00\x00\x70\xff\x00\x00\x00\x00\x95\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81\xff\x00\x00\x00\x00\x00\x00\x82\xff\x00\x00\x80\xff\x00\x00\x62\xff\x63\xff\x00\x00\x00\x00\x67\xff\x6a\xff\x52\xff\x61\xff\x4f\xff\x54\xff\x56\xff\x00\x00\x79\xff\x00\x00\x00\x00\x77\xff\x00\x00\x73\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xde\xff\xda\xff\x00\x00\xf1\xff\xe0\xff\xc8\xff\xe5\xff\xc9\xff\xca\xff\xe6\xff\xe7\xff\x00\x00\x00\x00\x00\x00\x00\x00\xbd\xff\x00\x00\xbb\xff\x00\x00\x00\x00\x00\x00\xaf\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd3\xff\x00\x00\xcc\xff\xb6\xff\xb0\xff\xb5\xff\xb3\xff\xbf\xff\xb8\xff\x00\x00\xb2\xff\x00\x00\xb7\xff\x00\x00\x00\x00\xb9\xff\x00\x00\x00\x00\x00\x00\x00\x00\xd7\xff\xdb\xff\x00\x00\xf1\xff\x58\xff\x00\x00\x00\x00\x5b\xff\x3f\xff\x00\x00\x76\xff\x97\xff\x60\xff\x00\x00\x00\x00\x7f\xff\x7e\xff\x69\xff\x75\xff\x5a\xff\x5c\xff\x00\x00\x9f\xff\x00\x00\xa0\xff\x00\x00\xc7\xff\xcb\xff\xb5\xff\x00\x00\xbc\xff\x00\x00\xac\xff\xae\xff\xb1\xff\x00\x00\xbe\xff\xb4\xff\xf1\xff\x00\x00\xd5\xff\xdd\xff\x9e\xff\x00\x00\xad\xff\xdf\xff"#

happyCheck :: HappyAddr
happyCheck = HappyA# "\xff\xff\x0a\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x14\x00\x13\x00\x13\x00\x0b\x00\x13\x00\x04\x00\x0b\x00\x0a\x00\x0b\x00\x47\x00\x0b\x00\x00\x00\x15\x00\x16\x00\x03\x00\x0a\x00\x19\x00\x4f\x00\x1b\x00\x0b\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0b\x00\x0b\x00\x26\x00\x02\x00\x28\x00\x0b\x00\x1b\x00\x2a\x00\x2c\x00\x47\x00\x2a\x00\x49\x00\x2a\x00\x27\x00\x2a\x00\x13\x00\x34\x00\x27\x00\x45\x00\x29\x00\x47\x00\x3f\x00\x1a\x00\x2a\x00\x3c\x00\x3d\x00\x48\x00\x3e\x00\x4f\x00\x41\x00\x4a\x00\x2a\x00\x2a\x00\x4e\x00\x46\x00\x47\x00\x2a\x00\x49\x00\x04\x00\x4b\x00\x22\x00\x4d\x00\x48\x00\x04\x00\x4c\x00\x51\x00\x22\x00\x53\x00\x10\x00\x55\x00\x56\x00\x57\x00\x14\x00\x58\x00\x0c\x00\x4a\x00\x5c\x00\x5d\x00\x58\x00\x5f\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x13\x00\x58\x00\x04\x00\x22\x00\x13\x00\x13\x00\x02\x00\x1a\x00\x13\x00\x58\x00\x58\x00\x1a\x00\x15\x00\x16\x00\x58\x00\x1a\x00\x19\x00\x1c\x00\x1b\x00\x14\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x3d\x00\x04\x00\x26\x00\x14\x00\x28\x00\x3d\x00\x0f\x00\x13\x00\x2c\x00\x0a\x00\x47\x00\x48\x00\x49\x00\x13\x00\x4b\x00\x47\x00\x34\x00\x49\x00\x1e\x00\x4b\x00\x1a\x00\x21\x00\x37\x00\x1d\x00\x3c\x00\x3d\x00\x26\x00\x27\x00\x37\x00\x41\x00\x22\x00\x13\x00\x3d\x00\x28\x00\x46\x00\x47\x00\x13\x00\x49\x00\x1a\x00\x4b\x00\x34\x00\x4d\x00\x47\x00\x48\x00\x49\x00\x51\x00\x4b\x00\x53\x00\x13\x00\x55\x00\x56\x00\x57\x00\x14\x00\x15\x00\x16\x00\x1a\x00\x5c\x00\x5d\x00\x3d\x00\x5f\x00\x01\x00\x02\x00\x03\x00\x04\x00\x37\x00\x06\x00\x07\x00\x08\x00\x47\x00\x22\x00\x49\x00\x28\x00\x4b\x00\x10\x00\x11\x00\x28\x00\x14\x00\x0e\x00\x2f\x00\x30\x00\x15\x00\x16\x00\x2f\x00\x30\x00\x19\x00\x14\x00\x1b\x00\x14\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x14\x00\x14\x00\x26\x00\x13\x00\x28\x00\x02\x00\x25\x00\x17\x00\x2c\x00\x03\x00\x1a\x00\x1b\x00\x01\x00\x02\x00\x03\x00\x04\x00\x34\x00\x0a\x00\x07\x00\x08\x00\x13\x00\x13\x00\x04\x00\x13\x00\x3c\x00\x3d\x00\x05\x00\x1a\x00\x1a\x00\x41\x00\x1a\x00\x48\x00\x15\x00\x16\x00\x46\x00\x47\x00\x19\x00\x49\x00\x1b\x00\x4b\x00\x0a\x00\x4d\x00\x3f\x00\x20\x00\x21\x00\x51\x00\x13\x00\x53\x00\x4a\x00\x55\x00\x56\x00\x57\x00\x4a\x00\x1a\x00\x13\x00\x2c\x00\x5c\x00\x5d\x00\x24\x00\x5f\x00\x13\x00\x04\x00\x13\x00\x34\x00\x04\x00\x1e\x00\x1f\x00\x1a\x00\x21\x00\x1a\x00\x13\x00\x3c\x00\x3d\x00\x26\x00\x27\x00\x2a\x00\x41\x00\x1a\x00\x14\x00\x15\x00\x16\x00\x46\x00\x47\x00\x01\x00\x49\x00\x0b\x00\x4b\x00\x58\x00\x4d\x00\x48\x00\x0a\x00\x38\x00\x51\x00\x49\x00\x53\x00\x48\x00\x55\x00\x56\x00\x57\x00\x0b\x00\x13\x00\x13\x00\x47\x00\x5c\x00\x5d\x00\x1c\x00\x5f\x00\x01\x00\x02\x00\x03\x00\x04\x00\x4a\x00\x1e\x00\x07\x00\x08\x00\x21\x00\x3f\x00\x23\x00\x13\x00\x50\x00\x26\x00\x27\x00\x14\x00\x15\x00\x16\x00\x13\x00\x54\x00\x15\x00\x16\x00\x1e\x00\x1f\x00\x19\x00\x21\x00\x1b\x00\x13\x00\x0a\x00\x4a\x00\x26\x00\x27\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x4e\x00\x1c\x00\x07\x00\x08\x00\x14\x00\x15\x00\x16\x00\x38\x00\x39\x00\x3a\x00\x34\x00\x14\x00\x15\x00\x16\x00\x13\x00\x1c\x00\x15\x00\x16\x00\x3c\x00\x3d\x00\x19\x00\x48\x00\x1b\x00\x41\x00\x0c\x00\x0d\x00\x0e\x00\x4a\x00\x46\x00\x47\x00\x04\x00\x49\x00\x4a\x00\x4b\x00\x05\x00\x4d\x00\x10\x00\x11\x00\x12\x00\x51\x00\x14\x00\x53\x00\x04\x00\x55\x00\x56\x00\x57\x00\x63\x00\x34\x00\x2a\x00\x31\x00\x5c\x00\x5d\x00\x2b\x00\x5f\x00\x33\x00\x3c\x00\x3d\x00\x04\x00\x3f\x00\x10\x00\x41\x00\x09\x00\x53\x00\x09\x00\x09\x00\x46\x00\x47\x00\x47\x00\x49\x00\x09\x00\x4b\x00\x0a\x00\x4d\x00\x10\x00\x11\x00\x12\x00\x51\x00\x14\x00\x53\x00\x48\x00\x55\x00\x56\x00\x57\x00\x54\x00\x13\x00\x13\x00\x11\x00\x5c\x00\x5d\x00\x13\x00\x5f\x00\x01\x00\x02\x00\x03\x00\x04\x00\x13\x00\x1e\x00\x07\x00\x08\x00\x21\x00\x1e\x00\x1f\x00\x13\x00\x21\x00\x26\x00\x27\x00\x58\x00\x04\x00\x26\x00\x27\x00\x0a\x00\x15\x00\x16\x00\x1e\x00\x1f\x00\x19\x00\x21\x00\x1b\x00\x48\x00\x35\x00\x36\x00\x26\x00\x27\x00\x1c\x00\x0a\x00\x4c\x00\x0a\x00\x0a\x00\x01\x00\x02\x00\x03\x00\x04\x00\x13\x00\x12\x00\x07\x00\x08\x00\x1c\x00\x1c\x00\x1c\x00\x38\x00\x39\x00\x3a\x00\x34\x00\x35\x00\x0a\x00\x04\x00\x1c\x00\x1c\x00\x15\x00\x16\x00\x3c\x00\x3d\x00\x19\x00\x29\x00\x1b\x00\x41\x00\x1a\x00\x05\x00\x0a\x00\x04\x00\x46\x00\x47\x00\x63\x00\x49\x00\x0d\x00\x4b\x00\x63\x00\x4d\x00\x27\x00\xff\xff\x13\x00\x51\x00\x63\x00\x53\x00\xff\xff\x55\x00\x56\x00\x57\x00\xff\xff\x34\x00\x35\x00\x1e\x00\x5c\x00\x5d\x00\x21\x00\x5f\x00\x23\x00\x3c\x00\x3d\x00\x26\x00\x27\x00\xff\xff\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\x4b\x00\xff\xff\x4d\x00\xff\xff\xff\xff\xff\xff\x51\x00\xff\xff\x53\x00\x0b\x00\x55\x00\x56\x00\x57\x00\xff\xff\xff\xff\x13\x00\xff\xff\x5c\x00\x5d\x00\x13\x00\x5f\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\x1e\x00\x07\x00\x08\x00\x21\x00\x1e\x00\x23\x00\xff\xff\x21\x00\x26\x00\x27\x00\xff\xff\xff\xff\x26\x00\x27\x00\x2c\x00\x15\x00\x16\x00\xff\xff\xff\xff\x19\x00\xff\xff\x1b\x00\xff\xff\x31\x00\xff\xff\xff\xff\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\xff\xff\x3d\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\x09\x00\x34\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x4f\x00\xff\xff\xff\xff\x3c\x00\x3d\x00\x14\x00\xff\xff\xff\xff\x41\x00\xff\xff\xff\xff\xff\xff\x1b\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\x4b\x00\xff\xff\x4d\x00\xff\xff\xff\xff\xff\xff\x51\x00\xff\xff\x53\x00\xff\xff\x55\x00\x56\x00\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\x5d\x00\xff\xff\x5f\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\xff\xff\x3d\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\x09\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x4f\x00\xff\xff\x51\x00\xff\xff\x53\x00\x14\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x1b\x00\xff\xff\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\xff\xff\x36\x00\xff\xff\x38\x00\x39\x00\x3a\x00\x3b\x00\xff\xff\x3d\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x4f\x00\x3d\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x4f\x00\xff\xff\x51\x00\xff\xff\x53\x00\x14\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x1b\x00\x13\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\xff\xff\x2d\x00\x2e\x00\x2f\x00\x30\x00\x1e\x00\x32\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\xff\xff\x26\x00\x27\x00\xff\xff\x29\x00\x2a\x00\x2b\x00\xff\xff\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\xff\xff\x3d\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\x48\x00\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x4f\x00\xff\xff\x51\x00\xff\xff\x53\x00\x14\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x1b\x00\xff\xff\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\x38\x00\x39\x00\x3a\x00\x3b\x00\xff\xff\x3d\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x4f\x00\x3d\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\xff\xff\x51\x00\xff\xff\x53\x00\xff\xff\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\x13\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\x62\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x1e\x00\x1f\x00\x13\x00\x21\x00\x13\x00\x14\x00\xff\xff\xff\xff\x26\x00\x27\x00\x0b\x00\xff\xff\x1b\x00\x1e\x00\xff\xff\xff\xff\x21\x00\xff\xff\x13\x00\xff\xff\xff\xff\x26\x00\x27\x00\xff\xff\xff\xff\xff\xff\x38\x00\x39\x00\x3a\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\x33\x00\x34\x00\xff\xff\x26\x00\x27\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\xff\xff\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\xff\xff\x51\x00\xff\xff\x53\x00\xff\xff\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x13\x00\xff\xff\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x1e\x00\x1f\x00\x13\x00\x21\x00\x13\x00\x14\x00\xff\xff\xff\xff\x26\x00\x27\x00\xff\xff\xff\xff\x1b\x00\x1e\x00\xff\xff\xff\xff\x21\x00\xff\xff\x13\x00\xff\xff\xff\xff\x26\x00\x27\x00\xff\xff\xff\xff\xff\xff\x38\x00\x39\x00\x3a\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\x33\x00\x34\x00\xff\xff\x26\x00\x27\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\xff\xff\x3d\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\x4a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x4f\x00\xff\xff\x51\x00\xff\xff\x53\x00\x14\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x1b\x00\xff\xff\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\x38\x00\x39\x00\x3a\x00\x3b\x00\xff\xff\x3d\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x4f\x00\x3d\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xff\xff\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\xff\xff\x10\x00\x11\x00\x05\x00\x06\x00\x14\x00\x08\x00\x09\x00\xff\xff\xff\xff\x13\x00\xff\xff\x1b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x13\x00\x14\x00\x15\x00\x16\x00\x1e\x00\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x1e\x00\x26\x00\x27\x00\x21\x00\x29\x00\xff\xff\xff\xff\xff\xff\x26\x00\x27\x00\xff\xff\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\xff\xff\x3d\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x4f\x00\xff\xff\x51\x00\xff\xff\x53\x00\x14\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x1b\x00\xff\xff\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\x38\x00\x39\x00\x3a\x00\x3b\x00\xff\xff\x3d\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x4f\x00\x3d\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\xff\xff\x51\x00\xff\xff\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x13\x00\xff\xff\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x1e\x00\x1f\x00\x13\x00\x21\x00\xff\xff\x14\x00\xff\xff\xff\xff\x26\x00\x27\x00\xff\xff\xff\xff\x1b\x00\x1e\x00\xff\xff\xff\xff\x21\x00\xff\xff\x13\x00\xff\xff\xff\xff\x26\x00\x27\x00\xff\xff\xff\xff\xff\xff\x38\x00\x39\x00\x3a\x00\x1e\x00\xff\xff\xff\xff\x21\x00\x22\x00\x33\x00\x34\x00\xff\xff\x26\x00\x27\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\xff\xff\x3d\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\xff\xff\x51\x00\xff\xff\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\xff\xff\xff\xff\x04\x00\x05\x00\x06\x00\x14\x00\x08\x00\x09\x00\xff\xff\x18\x00\x13\x00\xff\xff\x1b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x13\x00\x14\x00\x15\x00\x16\x00\x1e\x00\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x1e\x00\x26\x00\x27\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\x26\x00\x27\x00\xff\xff\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\xff\xff\x3d\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x4f\x00\xff\xff\x51\x00\xff\xff\x53\x00\x14\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x1b\x00\xff\xff\x5d\x00\x5e\x00\x5f\x00\x13\x00\x61\x00\x42\x00\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\x2a\x00\x1e\x00\xff\xff\xff\xff\x21\x00\x4f\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\xff\xff\x3d\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x4f\x00\xff\xff\x51\x00\xff\xff\x53\x00\x14\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x1b\x00\x13\x00\x5d\x00\x5e\x00\x5f\x00\x13\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1e\x00\xff\xff\xff\xff\x21\x00\x1e\x00\x23\x00\xff\xff\x21\x00\x26\x00\x27\x00\xff\xff\xff\xff\x26\x00\x27\x00\xff\xff\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\xff\xff\x3d\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x4f\x00\xff\xff\x51\x00\xff\xff\x53\x00\x14\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x1b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x13\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1e\x00\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\xff\xff\x26\x00\x27\x00\xff\xff\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\xff\xff\x3d\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\xff\xff\x51\x00\xff\xff\x53\x00\xff\xff\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\x13\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x1e\x00\x1f\x00\x13\x00\x21\x00\x14\x00\xff\xff\xff\xff\xff\xff\x26\x00\x27\x00\xff\xff\x1b\x00\xff\xff\x1e\x00\xff\xff\xff\xff\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\x26\x00\x27\x00\xff\xff\xff\xff\xff\xff\x38\x00\x39\x00\x3a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\x34\x00\xff\xff\xff\xff\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\xff\xff\x3d\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\xff\xff\x51\x00\xff\xff\x53\x00\xff\xff\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\x13\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\xff\xff\x1e\x00\x1f\x00\xff\xff\x21\x00\x14\x00\x13\x00\xff\xff\x17\x00\x26\x00\x27\x00\xff\xff\x1b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1e\x00\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\xff\xff\x26\x00\x27\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x2c\x00\x2d\x00\x2e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\xff\xff\x3d\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\xff\xff\x51\x00\xff\xff\x53\x00\xff\xff\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\x13\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x1e\x00\x1f\x00\xff\xff\x21\x00\x14\x00\x13\x00\xff\xff\xff\xff\x26\x00\x27\x00\xff\xff\x1b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1e\x00\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\xff\xff\x26\x00\x27\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x2c\x00\x2d\x00\x2e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\xff\xff\x3d\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x4f\x00\xff\xff\x51\x00\xff\xff\x53\x00\x14\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x1b\x00\xff\xff\x5d\x00\x5e\x00\x5f\x00\x13\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\x1e\x00\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\xff\xff\x26\x00\x27\x00\xff\xff\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\xff\xff\x3d\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x4f\x00\xff\xff\x51\x00\xff\xff\x53\x00\x14\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x1b\x00\x13\x00\x5d\x00\x5e\x00\x5f\x00\x13\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1e\x00\xff\xff\xff\xff\x21\x00\x1e\x00\x23\x00\xff\xff\x21\x00\x26\x00\x27\x00\xff\xff\xff\xff\x26\x00\x27\x00\xff\xff\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\xff\xff\x3d\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x4f\x00\xff\xff\x51\x00\x52\x00\x53\x00\x14\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x1b\x00\x13\x00\x5d\x00\x5e\x00\x5f\x00\x13\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1e\x00\xff\xff\xff\xff\x21\x00\x1e\x00\x23\x00\xff\xff\x21\x00\x26\x00\x27\x00\xff\xff\xff\xff\x26\x00\x27\x00\xff\xff\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\xff\xff\x3d\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x4f\x00\xff\xff\x51\x00\xff\xff\x53\x00\x14\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x1b\x00\x13\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1e\x00\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\xff\xff\x26\x00\x27\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\xff\xff\x3d\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x4f\x00\xff\xff\x51\x00\xff\xff\x53\x00\x14\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x1b\x00\x13\x00\x5d\x00\x5e\x00\x5f\x00\x13\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1e\x00\xff\xff\xff\xff\x21\x00\x1e\x00\x23\x00\xff\xff\x21\x00\x26\x00\x27\x00\xff\xff\xff\xff\x26\x00\x27\x00\xff\xff\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\xff\xff\x3d\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x4f\x00\xff\xff\x51\x00\xff\xff\x53\x00\x14\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x1b\x00\x13\x00\x5d\x00\x5e\x00\x5f\x00\x13\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1e\x00\xff\xff\xff\xff\x21\x00\x1e\x00\x23\x00\xff\xff\x21\x00\x26\x00\x27\x00\xff\xff\xff\xff\x26\x00\x27\x00\xff\xff\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\xff\xff\x3d\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\xff\xff\xff\xff\xff\xff\x4f\x00\xff\xff\x51\x00\xff\xff\x53\x00\xff\xff\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x13\x00\xff\xff\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1e\x00\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\xff\xff\x26\x00\x27\x00\xff\xff\xff\xff\xff\xff\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\xff\xff\x3d\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\xff\xff\xff\xff\xff\xff\x4f\x00\xff\xff\x51\x00\xff\xff\x53\x00\xff\xff\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x13\x00\xff\xff\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1e\x00\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\xff\xff\x26\x00\x27\x00\xff\xff\xff\xff\xff\xff\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\xff\xff\x3d\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\xff\xff\x0b\x00\xff\xff\xff\xff\xff\xff\x4f\x00\x10\x00\x51\x00\xff\xff\x53\x00\x14\x00\x55\x00\x56\x00\x13\x00\x58\x00\x59\x00\x5a\x00\x1b\x00\xff\xff\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\x1e\x00\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\xff\xff\x26\x00\x27\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\xff\xff\x3d\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\xff\xff\x0b\x00\xff\xff\xff\xff\xff\xff\x4f\x00\x10\x00\x51\x00\x0d\x00\x53\x00\x14\x00\x55\x00\x56\x00\x57\x00\x13\x00\x59\x00\x5a\x00\x1b\x00\x13\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\xff\xff\x1e\x00\xff\xff\xff\xff\x21\x00\x1e\x00\x23\x00\xff\xff\x21\x00\x26\x00\x27\x00\xff\xff\xff\xff\x26\x00\x27\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\xff\xff\x3d\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\xff\xff\xff\xff\xff\xff\x4f\x00\xff\xff\x51\x00\x0d\x00\x53\x00\xff\xff\x55\x00\x56\x00\x57\x00\x13\x00\x59\x00\x5a\x00\xff\xff\x13\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\xff\xff\x1e\x00\xff\xff\xff\xff\x21\x00\x1e\x00\x23\x00\xff\xff\x21\x00\x26\x00\x27\x00\xff\xff\xff\xff\x26\x00\x27\x00\xff\xff\xff\xff\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\xff\xff\x3d\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\xff\xff\x0b\x00\xff\xff\xff\xff\xff\xff\x4f\x00\xff\xff\x51\x00\xff\xff\x53\x00\x14\x00\x55\x00\x56\x00\x13\x00\x58\x00\x59\x00\x5a\x00\x1b\x00\xff\xff\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\x1e\x00\xff\xff\xff\xff\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\x26\x00\x27\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\xff\xff\x3d\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\xff\xff\xff\xff\xff\xff\x4f\x00\xff\xff\x51\x00\x0d\x00\x53\x00\xff\xff\x55\x00\x56\x00\x57\x00\x13\x00\x59\x00\x5a\x00\xff\xff\x13\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\xff\xff\x1e\x00\xff\xff\xff\xff\x21\x00\x1e\x00\x23\x00\xff\xff\x21\x00\x26\x00\x27\x00\xff\xff\xff\xff\x26\x00\x27\x00\xff\xff\xff\xff\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\xff\xff\x3d\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\xff\xff\xff\xff\xff\xff\x4f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\x13\x00\x58\x00\x59\x00\x5a\x00\x13\x00\xff\xff\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\x1e\x00\xff\xff\xff\xff\x21\x00\x1e\x00\xff\xff\xff\xff\x21\x00\x26\x00\x27\x00\xff\xff\xff\xff\x26\x00\x27\x00\xff\xff\xff\xff\xff\xff\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\xff\xff\x3d\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\xff\xff\xff\xff\xff\xff\x4f\x00\xff\xff\x13\x00\xff\xff\xff\xff\xff\xff\x13\x00\xff\xff\xff\xff\x58\x00\x59\x00\x5a\x00\xff\xff\x1e\x00\x5d\x00\x5e\x00\x21\x00\x1e\x00\x61\x00\xff\xff\x21\x00\x26\x00\x27\x00\xff\xff\xff\xff\x26\x00\x27\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\xff\xff\x3d\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\xff\xff\xff\xff\x13\x00\x4f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x13\x00\xff\xff\xff\xff\x58\x00\x1e\x00\x5a\x00\xff\xff\x21\x00\x5d\x00\x5e\x00\xff\xff\x1e\x00\x26\x00\x27\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\x26\x00\x27\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\xff\xff\x3d\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x13\x00\x47\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\xff\xff\xff\xff\xff\xff\x4f\x00\xff\xff\x1e\x00\x1f\x00\xff\xff\x21\x00\x13\x00\xff\xff\xff\xff\x58\x00\x26\x00\x27\x00\xff\xff\x13\x00\x5d\x00\x5e\x00\xff\xff\x1e\x00\xff\xff\xff\xff\x21\x00\xff\xff\xff\xff\xff\xff\x1e\x00\x26\x00\x27\x00\x21\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x26\x00\x27\x00\xff\xff\xff\xff\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\xff\xff\x3d\x00\x3e\x00\x13\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\x13\x00\x1e\x00\x1f\x00\xff\xff\x21\x00\xff\xff\x4f\x00\xff\xff\xff\xff\x26\x00\x27\x00\x1e\x00\x1f\x00\xff\xff\x21\x00\x58\x00\xff\xff\xff\xff\xff\xff\x26\x00\x27\x00\x5e\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x39\x00\x3a\x00\xff\xff\xff\xff\x13\x00\x1e\x00\x1f\x00\xff\xff\x21\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x26\x00\x27\x00\x1e\x00\x1f\x00\xff\xff\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\x26\x00\x27\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x39\x00\x3a\x00\xff\xff\x13\x00\x1e\x00\x1f\x00\xff\xff\x21\x00\xff\xff\x38\x00\x39\x00\x3a\x00\x26\x00\x27\x00\x1e\x00\x1f\x00\xff\xff\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\x26\x00\x27\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x39\x00\x3a\x00\xff\xff\xff\xff\x1e\x00\x1f\x00\xff\xff\x21\x00\xff\xff\x38\x00\x39\x00\x3a\x00\x26\x00\x27\x00\xff\xff\xff\xff\xff\xff\xff\xff\x04\x00\x05\x00\x06\x00\xff\xff\x08\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x39\x00\x3a\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\xff\xff\xff\xff\xff\xff\x04\x00\x05\x00\x06\x00\x1e\x00\x08\x00\x09\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\x26\x00\x27\x00\xff\xff\xff\xff\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\xff\xff\xff\xff\xff\xff\x04\x00\x05\x00\x06\x00\x1e\x00\x08\x00\x09\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\x26\x00\x27\x00\xff\xff\xff\xff\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\xff\xff\xff\xff\xff\xff\x04\x00\x05\x00\x06\x00\x1e\x00\x08\x00\x09\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\x26\x00\x27\x00\xff\xff\xff\xff\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x05\x00\x06\x00\x1e\x00\x08\x00\x09\x00\x21\x00\x07\x00\x08\x00\x09\x00\xff\xff\x26\x00\x27\x00\xff\xff\xff\xff\x13\x00\x14\x00\x15\x00\x16\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\xff\xff\xff\xff\x1e\x00\xff\xff\xff\xff\x21\x00\x1e\x00\x13\x00\xff\xff\x21\x00\x26\x00\x27\x00\xff\xff\xff\xff\x26\x00\x27\x00\xff\xff\x13\x00\x1e\x00\x13\x00\xff\xff\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\x26\x00\x27\x00\x1e\x00\x13\x00\x1e\x00\x21\x00\xff\xff\x21\x00\xff\xff\xff\xff\x26\x00\x27\x00\x26\x00\x27\x00\x1e\x00\x13\x00\xff\xff\x21\x00\xff\xff\x13\x00\xff\xff\xff\xff\x26\x00\x27\x00\xff\xff\xff\xff\x1e\x00\xff\xff\xff\xff\x21\x00\x1e\x00\x13\x00\xff\xff\x21\x00\x26\x00\x27\x00\xff\xff\xff\xff\x26\x00\x27\x00\xff\xff\x13\x00\x1e\x00\x13\x00\xff\xff\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\x26\x00\x27\x00\x1e\x00\x13\x00\x1e\x00\x21\x00\xff\xff\x21\x00\xff\xff\xff\xff\x26\x00\x27\x00\x26\x00\x27\x00\x1e\x00\x13\x00\xff\xff\x21\x00\xff\xff\x13\x00\xff\xff\xff\xff\x26\x00\x27\x00\xff\xff\xff\xff\x1e\x00\xff\xff\xff\xff\x21\x00\x1e\x00\x13\x00\xff\xff\x21\x00\x26\x00\x27\x00\xff\xff\xff\xff\x26\x00\x27\x00\xff\xff\x13\x00\x1e\x00\x13\x00\xff\xff\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\x26\x00\x27\x00\x1e\x00\x13\x00\x1e\x00\x21\x00\xff\xff\x21\x00\xff\xff\xff\xff\x26\x00\x27\x00\x26\x00\x27\x00\x1e\x00\x13\x00\xff\xff\x21\x00\xff\xff\x13\x00\xff\xff\xff\xff\x26\x00\x27\x00\xff\xff\xff\xff\x1e\x00\xff\xff\xff\xff\x21\x00\x1e\x00\x13\x00\xff\xff\x21\x00\x26\x00\x27\x00\xff\xff\xff\xff\x26\x00\x27\x00\xff\xff\x13\x00\x1e\x00\x13\x00\xff\xff\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\x26\x00\x27\x00\x1e\x00\x13\x00\x1e\x00\x21\x00\xff\xff\x21\x00\xff\xff\xff\xff\x26\x00\x27\x00\x26\x00\x27\x00\x1e\x00\x13\x00\xff\xff\x21\x00\xff\xff\x13\x00\xff\xff\xff\xff\x26\x00\x27\x00\xff\xff\xff\xff\x1e\x00\xff\xff\xff\xff\x21\x00\x1e\x00\x13\x00\xff\xff\x21\x00\x26\x00\x27\x00\xff\xff\xff\xff\x26\x00\x27\x00\xff\xff\x13\x00\x1e\x00\x13\x00\xff\xff\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\x26\x00\x27\x00\x1e\x00\x13\x00\x1e\x00\x21\x00\xff\xff\x21\x00\xff\xff\xff\xff\x26\x00\x27\x00\x26\x00\x27\x00\x1e\x00\x13\x00\xff\xff\x21\x00\xff\xff\x13\x00\xff\xff\xff\xff\x26\x00\x27\x00\xff\xff\xff\xff\x1e\x00\xff\xff\xff\xff\x21\x00\x1e\x00\x13\x00\xff\xff\x21\x00\x26\x00\x27\x00\xff\xff\xff\xff\x26\x00\x27\x00\xff\xff\x13\x00\x1e\x00\x13\x00\xff\xff\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\x26\x00\x27\x00\x1e\x00\x13\x00\x1e\x00\x21\x00\xff\xff\x21\x00\xff\xff\xff\xff\x26\x00\x27\x00\x26\x00\x27\x00\x1e\x00\x13\x00\xff\xff\x21\x00\xff\xff\x13\x00\xff\xff\xff\xff\x26\x00\x27\x00\xff\xff\xff\xff\x1e\x00\xff\xff\xff\xff\x21\x00\x1e\x00\x13\x00\xff\xff\x21\x00\x26\x00\x27\x00\xff\xff\xff\xff\x26\x00\x27\x00\xff\xff\x13\x00\x1e\x00\x13\x00\xff\xff\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\x26\x00\x27\x00\x1e\x00\x13\x00\x1e\x00\x21\x00\xff\xff\x21\x00\xff\xff\xff\xff\x26\x00\x27\x00\x26\x00\x27\x00\x1e\x00\x13\x00\xff\xff\x21\x00\xff\xff\x13\x00\xff\xff\xff\xff\x26\x00\x27\x00\xff\xff\xff\xff\x1e\x00\xff\xff\xff\xff\x21\x00\x1e\x00\x13\x00\xff\xff\x21\x00\x26\x00\x27\x00\xff\xff\xff\xff\x26\x00\x27\x00\xff\xff\x13\x00\x1e\x00\x13\x00\xff\xff\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\x26\x00\x27\x00\x1e\x00\x13\x00\x1e\x00\x21\x00\xff\xff\x21\x00\xff\xff\xff\xff\x26\x00\x27\x00\x26\x00\x27\x00\x1e\x00\x13\x00\xff\xff\x21\x00\xff\xff\x13\x00\xff\xff\xff\xff\x26\x00\x27\x00\xff\xff\xff\xff\x1e\x00\xff\xff\xff\xff\x21\x00\x1e\x00\x13\x00\xff\xff\x21\x00\x26\x00\x27\x00\xff\xff\xff\xff\x26\x00\x27\x00\xff\xff\x13\x00\x1e\x00\xff\xff\xff\xff\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\x26\x00\x27\x00\x1e\x00\xff\xff\xff\xff\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\x26\x00\x27\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\xc4\x00\x0c\x00\x0d\x00\x0e\x00\x3c\x00\xff\x00\x3d\x00\x10\x00\x11\x00\x6f\x01\xd0\x00\xc9\x00\x72\x01\x96\x00\x34\x00\x72\x01\x81\x01\x72\x01\x82\x00\x72\x01\x2c\x00\x12\x00\x13\x00\x04\x00\xc4\xff\x14\x00\x83\x00\x15\x00\x72\x01\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x72\x01\x72\x01\x45\x00\xaf\x01\x46\x00\x72\x01\xa7\x01\x73\x01\x47\x00\xe2\x00\x73\x01\xe3\x00\x73\x01\x6a\x00\x73\x01\xff\x00\x16\x00\x6a\x00\x81\x00\xc4\xff\x82\x00\x97\x00\xb5\x01\x73\x01\x17\x00\x18\x00\x8a\x01\x7e\x01\x83\x00\x19\x00\xca\x00\x73\x01\x86\x01\xd1\x00\x1a\x00\x1b\x00\x73\x01\x1c\x00\x0f\x00\x1d\x00\x99\x01\x1e\x00\x82\x01\x0f\x00\xaf\x01\x1f\x00\x98\x01\x20\x00\xa3\x01\x21\x00\x22\x00\x23\x00\x62\x01\x74\x01\x8a\x01\x85\x01\x24\x00\x25\x00\x74\x01\x26\x00\x0c\x00\x0d\x00\x0e\x00\x3c\x00\x94\x00\x3d\x00\x10\x00\x11\x00\xff\x00\x74\x01\x04\x01\x3f\x01\xff\x00\x5b\x01\x5d\x01\xad\x01\xff\x00\x74\x01\x74\x01\xa5\x01\x12\x00\x13\x00\x74\x01\x6a\x01\x14\x00\x6c\x01\x15\x00\x6f\x01\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x05\x01\x04\x01\x45\x00\xfa\x00\x46\x00\x05\x01\x75\x01\x05\x00\x47\x00\x0d\x01\x67\x01\x6e\x01\x07\x01\xff\x00\x08\x01\x67\x01\x16\x00\x07\x01\x06\x00\x08\x01\xa9\x01\x07\x00\x33\x01\xaa\x01\x17\x00\x18\x00\x56\x00\x0a\x00\x37\x01\x19\x00\x94\x00\xff\x00\x05\x01\xbe\x00\x1a\x00\x1b\x00\xc0\x00\x1c\x00\xab\x01\x1d\x00\x29\x01\x1e\x00\x67\x01\x6e\x01\x07\x01\x1f\x00\x08\x01\x20\x00\xff\x00\x21\x00\x22\x00\x23\x00\x30\x00\xe6\x00\x32\x00\x78\x01\x24\x00\x25\x00\x05\x01\x26\x00\x0c\x00\x0d\x00\x0e\x00\x3c\x00\xd3\x00\x3d\x00\x10\x00\x11\x00\x06\x01\x41\x01\x07\x01\x6a\x00\x08\x01\xdd\x00\xde\x00\x6a\x00\xe3\x00\xf2\x00\x6b\x00\x6c\x00\x12\x00\x13\x00\x6b\x00\x6c\x00\x14\x00\xe4\x00\x15\x00\xe5\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\xe8\x00\xe9\x00\x45\x00\xff\x00\x46\x00\xed\x00\xb7\x01\x00\x01\x47\x00\x04\x00\x01\x01\x02\x01\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x16\x00\xad\x01\x10\x00\x11\x00\xff\x00\xff\x00\x34\x00\xff\x00\x17\x00\x18\x00\xef\x00\x79\x01\x7a\x01\x19\x00\x7b\x01\xb2\x01\x12\x00\x13\x00\x1a\x00\x1b\x00\x29\x00\x1c\x00\x15\x00\x1d\x00\xb1\x01\x1e\x00\x97\x00\x2a\x00\x2b\x00\x1f\x00\xff\x00\x20\x00\xb3\x01\x21\x00\x22\x00\x23\x00\x9c\x01\x7c\x01\x05\x00\x2c\x00\x24\x00\x25\x00\xa3\x01\x26\x00\xff\x00\x34\x00\xff\x00\x16\x00\xa9\x01\x06\x00\x48\x00\x65\x01\x07\x00\x67\x01\xff\x00\x17\x00\x18\x00\x49\x00\x0a\x00\xa7\x01\x19\x00\x6e\x01\x30\x00\xe7\x00\x32\x00\x1a\x00\x1b\x00\x26\x00\x1c\x00\x72\x01\x1d\x00\x7f\x01\x1e\x00\x80\x01\x83\x01\x17\x01\x1f\x00\x8d\x01\x20\x00\x84\x01\x21\x00\x22\x00\x23\x00\x87\x01\x88\x01\x05\x00\x8c\x01\x24\x00\x25\x00\x90\x01\x26\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x94\x01\x06\x00\x10\x00\x11\x00\x07\x00\x97\x00\x27\x00\x05\x00\x4b\x01\x09\x00\x0a\x00\x30\x00\xea\x00\x32\x00\x27\x01\x47\x01\x12\x00\x13\x00\x06\x00\x48\x00\x14\x00\x07\x00\x15\x00\xff\x00\xcf\x00\x50\x01\x49\x00\x0a\x00\x68\x01\x69\x01\x6a\x01\x6b\x01\x6c\x01\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x55\x01\x56\x01\x10\x00\x11\x00\x30\x00\x31\x00\x32\x00\x4a\x00\x92\x01\x4c\x00\x16\x00\x30\x00\x34\x00\x32\x00\x3e\x01\x59\x01\x12\x00\x13\x00\x17\x00\x18\x00\x14\x00\x5a\x01\x15\x00\x19\x00\x6f\x00\x70\x00\x71\x00\x5b\x01\x1a\x00\x1b\x00\x0f\x00\x1c\x00\x28\x01\x1d\x00\xef\x00\x1e\x00\x5f\x01\x60\x01\x61\x01\x1f\x00\x62\x01\x20\x00\x34\x00\x21\x00\x22\x00\x23\x00\xfb\xff\x16\x00\x71\x01\x77\x01\x24\x00\x25\x00\x75\x01\x26\x00\xfa\x00\x17\x00\x18\x00\x34\x00\x97\x00\x0a\x01\x19\x00\x0b\x01\x19\x01\x0c\x01\x0d\x01\x1a\x00\x1b\x00\x0f\x01\x1c\x00\x10\x01\x1d\x00\x33\x01\x1e\x00\x5f\x01\x63\x01\x61\x01\x1f\x00\x62\x01\x20\x00\x32\x01\x21\x00\x22\x00\x23\x00\x1f\x01\xd5\x00\x05\x00\x35\x01\x24\x00\x25\x00\x05\x00\x26\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xd5\x00\x06\x00\x10\x00\x11\x00\x07\x00\x06\x00\x2b\x01\x05\x00\x07\x00\x59\x00\x0a\x00\xc0\x00\x0f\x00\x66\x00\x0a\x00\xc4\x00\x12\x00\x13\x00\x06\x00\x48\x00\x14\x00\x07\x00\x15\x00\xc6\x00\x5a\x00\x5b\x00\x49\x00\x0a\x00\xc5\x00\xcc\x00\xcd\x00\xcf\x00\xd3\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xd5\x00\xd6\x00\x10\x00\x11\x00\xd7\x00\xd8\x00\xd9\x00\x4a\x00\x97\x01\x4c\x00\x16\x00\xe1\x00\xdb\x00\x34\x00\xda\x00\xdc\x00\x12\x00\x13\x00\x17\x00\x18\x00\x14\x00\xed\x00\x15\x00\x19\x00\xf0\x00\xef\x00\xf1\x00\x34\x00\x1a\x00\x1b\x00\xff\xff\x1c\x00\x12\x01\x1d\x00\xff\xff\x1e\x00\x6a\x00\x00\x00\x05\x00\x1f\x00\xff\xff\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x00\x00\x16\x00\x30\x00\x06\x00\x24\x00\x25\x00\x07\x00\x26\x00\x2e\x00\x17\x00\x18\x00\x09\x00\x0a\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x6e\x00\x21\x00\x22\x00\x23\x00\x00\x00\x00\x00\x05\x00\x00\x00\x24\x00\x25\x00\x05\x00\x26\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x00\x00\x06\x00\x10\x00\x11\x00\x07\x00\x06\x00\x51\x00\x00\x00\x07\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x5e\x00\x0a\x00\x1f\x01\x12\x00\x13\x00\x00\x00\x00\x00\x14\x00\x00\x00\x15\x00\x00\x00\x5f\x00\x00\x00\x00\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x00\x00\x82\x00\x00\x00\xc3\x00\x16\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x83\x00\x00\x00\x00\x00\x17\x00\x18\x00\x72\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x73\x00\x1a\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x26\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x00\x00\x82\x00\x00\x00\xec\x00\x00\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x83\x00\x00\x00\x84\x00\x00\x00\x85\x00\x72\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x73\x00\x00\x00\x8c\x00\x8d\x00\x8e\x00\x00\x00\x8f\x00\x00\x00\x74\x00\x00\x00\x76\x00\x77\x00\x78\x00\x79\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x00\x00\x82\x00\x00\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x83\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x00\x00\x82\x00\x00\x00\x00\x00\xc7\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x83\x00\x00\x00\x84\x00\x00\x00\x85\x00\x72\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x73\x00\x05\x00\x8c\x00\x8d\x00\x8e\x00\x00\x00\x8f\x00\x00\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\x06\x00\xf8\x00\x00\x00\x07\x00\x00\x00\xa5\x00\x00\x00\x00\x00\x09\x00\x0a\x00\x00\x00\xa6\x00\xa7\x00\xa8\x00\x00\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x00\x00\x82\x00\xc8\x00\x00\x00\x00\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x83\x00\x00\x00\x84\x00\x00\x00\x85\x00\x72\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x73\x00\x00\x00\x8c\x00\x8d\x00\x8e\x00\x00\x00\x8f\x00\x00\x00\x00\x00\x00\x00\x76\x00\x77\x00\x78\x00\x79\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x00\x00\x82\x00\x00\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x83\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x00\x00\x82\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x83\x00\x00\x00\x84\x00\x00\x00\x85\x00\x00\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x00\x00\x05\x00\x8c\x00\x8d\x00\x8e\x00\x00\x00\x8f\x00\x3b\x01\x6e\x00\x6f\x00\x70\x00\x71\x00\x06\x00\x48\x00\x05\x00\x07\x00\x43\x01\x72\x00\x00\x00\x00\x00\x49\x00\x0a\x00\x63\x00\x00\x00\x73\x00\x06\x00\x00\x00\x00\x00\x07\x00\x00\x00\x05\x00\x00\x00\x00\x00\x56\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x4a\x00\x40\x01\x4c\x00\x06\x00\x64\x00\x65\x00\x07\x00\x00\x00\xa9\x00\x58\x00\x00\x00\x66\x00\x0a\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x00\x00\x7a\x00\x7b\x00\x97\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x00\x00\x82\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x83\x00\x00\x00\x84\x00\x00\x00\x85\x00\x00\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x05\x00\x00\x00\x8c\x00\x8d\x00\x8e\x00\x00\x00\x8f\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x06\x00\x48\x00\x05\x00\x07\x00\x52\x01\x72\x00\x00\x00\x00\x00\x49\x00\x0a\x00\x00\x00\x00\x00\x73\x00\x06\x00\x00\x00\x00\x00\x07\x00\x00\x00\x05\x00\x00\x00\x00\x00\x56\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x4a\x00\x50\x01\x4c\x00\x06\x00\x64\x00\x5c\x01\x07\x00\x00\x00\x57\x00\x58\x00\x00\x00\x66\x00\x0a\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x00\x00\x82\x00\x00\x00\x00\x00\x53\x01\x6e\x00\x6f\x00\x70\x00\x71\x00\x83\x00\x00\x00\x84\x00\x00\x00\x85\x00\x72\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x73\x00\x00\x00\x8c\x00\x8d\x00\x8e\x00\x00\x00\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x00\x00\x82\x00\x00\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x83\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x00\x00\x82\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x83\x00\x00\x00\x84\x00\x36\x01\x85\x00\x00\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x37\x01\x00\x00\x8c\x00\x8d\x00\x8e\x00\x00\x00\x8f\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x00\x00\xa6\xff\xa6\xff\x35\x00\x36\x00\x72\x00\x37\x00\x38\x00\x00\x00\x00\x00\x05\x00\x00\x00\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x30\x00\x39\x00\x32\x00\x06\x00\x00\x00\x00\x00\x07\x00\x00\x00\xa5\x00\x00\x00\x06\x00\x09\x00\x0a\x00\x07\x00\x4b\x01\x00\x00\x00\x00\x00\x00\x3a\x00\x0a\x00\x00\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x00\x00\x82\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x83\x00\x00\x00\x84\x00\x00\x00\x85\x00\x72\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x73\x00\x00\x00\x8c\x00\x8d\x00\x8e\x00\x00\x00\x8f\x00\x00\x00\x00\x00\x00\x00\x76\x00\x77\x00\x78\x00\x79\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x00\x00\x82\x00\x00\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x83\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x00\x00\x82\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x83\x00\x00\x00\x84\x00\x00\x00\x85\x00\x8f\x01\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x05\x00\x00\x00\x8c\x00\x8d\x00\x8e\x00\x00\x00\x8f\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x06\x00\x48\x00\x05\x00\x07\x00\x00\x00\x72\x00\x00\x00\x00\x00\x49\x00\x0a\x00\x00\x00\x00\x00\x73\x00\x06\x00\x00\x00\x00\x00\x07\x00\x00\x00\x05\x00\x00\x00\x00\x00\x5c\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x4a\x00\x56\x01\x4c\x00\x06\x00\x00\x00\x00\x00\x07\x00\x3b\x01\x5d\x00\x58\x00\x00\x00\x3c\x01\x0a\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x00\x00\x82\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x83\x00\x00\x00\x84\x00\x00\x00\x85\x00\x97\x01\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x00\x00\x00\x00\x8c\x00\x8d\x00\x8e\x00\x00\x00\x8f\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x00\x00\x00\x00\xb4\x01\x92\x00\x36\x00\x72\x00\x37\x00\x38\x00\x00\x00\x4f\x01\x05\x00\x00\x00\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x30\x00\x39\x00\x32\x00\x06\x00\x00\x00\x00\x00\x07\x00\x00\x00\xb3\x01\x00\x00\x06\x00\x09\x00\x0a\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x00\x0a\x00\x00\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x00\x00\x82\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x83\x00\x00\x00\x84\x00\x00\x00\x85\x00\x72\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x73\x00\x00\x00\x8c\x00\x8d\x00\x8e\x00\x05\x00\x8f\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x00\x00\x82\x00\x00\x00\x00\x00\x54\x01\x06\x00\x00\x00\x00\x00\x07\x00\x83\x00\x9f\x01\xa0\x01\xa1\x01\x09\x00\x0a\x00\x00\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x00\x00\x82\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x83\x00\x00\x00\x84\x00\x00\x00\x85\x00\x72\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x73\x00\x05\x00\x8c\x00\x8d\x00\x8e\x00\x05\x00\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x07\x00\x06\x00\xa4\x01\x00\x00\x07\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x9a\x01\x0a\x00\x00\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x00\x00\x82\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x83\x00\x00\x00\x84\x00\x00\x00\x85\x00\x72\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x73\x00\x39\x01\x8c\x00\x8d\x00\x8e\x00\x05\x00\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x07\x00\x00\x00\x77\x01\x00\x00\x00\x00\x09\x00\x0a\x00\x00\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x00\x00\x82\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x83\x00\x00\x00\x84\x00\x00\x00\x85\x00\x00\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x00\x00\x05\x00\x8c\x00\x8d\x00\x8e\x00\x3a\x01\x8f\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x98\x00\x06\x00\x48\x00\x05\x00\x07\x00\x72\x00\x00\x00\x00\x00\x00\x00\x49\x00\x0a\x00\x00\x00\x73\x00\x00\x00\x06\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8f\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x4a\x00\x13\x01\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x00\x58\x00\x00\x00\x00\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x00\x00\x82\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x83\x00\x00\x00\x84\x00\x00\x00\x85\x00\x00\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x00\x00\x05\x00\x8c\x00\x8d\x00\x8e\x00\x00\x00\x8f\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x00\x00\x06\x00\x48\x00\x00\x00\x07\x00\x72\x00\x05\x00\x00\x00\xc2\x00\x49\x00\x0a\x00\x00\x00\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x07\x00\x00\x00\x51\x00\x00\x00\x00\x00\xa2\x00\x0a\x00\x4a\x00\x1d\x01\x4c\x00\x00\x00\x52\x00\xa3\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x00\x00\x82\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x83\x00\x00\x00\x84\x00\x00\x00\x85\x00\x00\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x00\x00\x05\x00\x8c\x00\x8d\x00\x8e\x00\x00\x00\x8f\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\xcb\x00\x06\x00\x48\x00\x00\x00\x07\x00\x72\x00\x05\x00\x00\x00\x00\x00\x49\x00\x0a\x00\x00\x00\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x07\x00\x00\x00\x51\x00\x00\x00\x00\x00\x09\x00\x0a\x00\x4a\x00\x20\x01\x4c\x00\x00\x00\x52\x00\x53\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x00\x00\x82\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x83\x00\x00\x00\x84\x00\x00\x00\x85\x00\x72\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x73\x00\x00\x00\x8c\x00\x8d\x00\x8e\x00\x05\x00\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\x00\x06\x00\x00\x00\x00\x00\x07\x00\x00\x00\x49\x01\x00\x00\x00\x00\x09\x00\x0a\x00\x00\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x00\x00\x82\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x83\x00\x00\x00\x84\x00\x00\x00\x85\x00\x72\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x73\x00\x05\x00\x8c\x00\x8d\x00\x8e\x00\x05\x00\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x07\x00\x06\x00\x5e\x01\x00\x00\x07\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x9c\x01\x0a\x00\x00\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x00\x00\x82\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x83\x00\x00\x00\x84\x00\xd2\x00\x85\x00\x72\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x73\x00\x05\x00\x8c\x00\x8d\x00\x8e\x00\x05\x00\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x07\x00\x06\x00\x64\x01\x00\x00\x07\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x9d\x01\x0a\x00\x00\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x00\x00\x82\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x83\x00\x00\x00\x84\x00\x00\x00\x85\x00\x72\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x73\x00\x05\x00\x8c\x00\x8d\x00\x8e\x00\xdf\x00\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x07\x00\x00\x00\xf8\x00\x00\x00\x00\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x00\x00\x82\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x83\x00\x00\x00\x84\x00\x00\x00\x85\x00\x00\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x73\x00\x05\x00\x8c\x00\x8d\x00\x8e\x00\x05\x00\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x07\x00\x06\x00\x08\x01\x00\x00\x07\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x8d\x01\x0a\x00\x00\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x00\x00\x82\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x83\x00\x00\x00\x84\x00\x00\x00\x85\x00\x72\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x73\x00\x05\x00\x8c\x00\x8d\x00\x8e\x00\x05\x00\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x07\x00\x06\x00\x11\x01\x00\x00\x07\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x90\x01\x0a\x00\x00\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x00\x00\x82\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x00\x00\x00\x00\x00\x00\x83\x00\x00\x00\x84\x00\x00\x00\x85\x00\x00\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x05\x00\x00\x00\x8c\x00\x8d\x00\x8e\x00\x00\x00\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x07\x00\x00\x00\x1c\x01\x00\x00\x00\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x00\x00\x82\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x00\x00\x00\x00\x00\x00\x83\x00\x00\x00\x84\x00\x00\x00\x85\x00\x00\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x05\x00\x00\x00\x8c\x00\x8d\x00\x8e\x00\x00\x00\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x07\x00\x00\x00\x2c\x01\x00\x00\x00\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x00\x00\x82\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x83\x00\x30\x01\x00\x00\x00\x00\x00\x00\x72\x00\x86\x00\x87\x00\x05\x00\x89\x00\x8a\x00\x8b\x00\x73\x00\x00\x00\x8c\x00\x8d\x00\x8e\x00\x00\x00\x8f\x00\x06\x00\x00\x00\x00\x00\x07\x00\x00\x00\x08\x00\x00\x00\x00\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x00\x00\x82\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x83\x00\x31\x01\x84\x00\xdf\x00\x85\x00\x72\x00\x86\x00\x87\x00\x88\x00\x05\x00\x8a\x00\x8b\x00\x73\x00\x05\x00\x8c\x00\x8d\x00\x8e\x00\x00\x00\x8f\x00\x00\x00\x06\x00\x00\x00\x00\x00\x07\x00\x06\x00\x2e\x00\x00\x00\x07\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x91\x01\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x00\x00\x82\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x00\x00\x00\x00\x00\x00\x83\x00\x00\x00\x84\x00\xf1\x00\x85\x00\x00\x00\x86\x00\x87\x00\x88\x00\x05\x00\x8a\x00\x8b\x00\x00\x00\x05\x00\x8c\x00\x8d\x00\x8e\x00\x00\x00\x8f\x00\x00\x00\x06\x00\x00\x00\x00\x00\x07\x00\x06\x00\x2e\x00\x00\x00\x07\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x94\x01\x0a\x00\x00\x00\x00\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x00\x00\x82\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x83\x00\x00\x00\x84\x00\x00\x00\x85\x00\x72\x00\x86\x00\x87\x00\x05\x00\x89\x00\x8a\x00\x8b\x00\x73\x00\x00\x00\x8c\x00\x8d\x00\x8e\x00\x00\x00\x8f\x00\x06\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x95\x01\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x00\x00\x82\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x00\x00\x00\x00\x00\x00\x83\x00\x00\x00\x84\x00\x2d\x00\x85\x00\x00\x00\x86\x00\x87\x00\x88\x00\x05\x00\x8a\x00\x8b\x00\x00\x00\x05\x00\x8c\x00\x8d\x00\x8e\x00\x00\x00\x8f\x00\x00\x00\x06\x00\x00\x00\x00\x00\x07\x00\x06\x00\x2e\x00\x00\x00\x07\x00\x09\x00\x0a\x00\x00\x00\x00\x00\x43\x01\x0a\x00\x00\x00\x00\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x00\x00\x82\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x00\x00\x00\x00\x00\x00\x83\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86\x00\x00\x00\x05\x00\x89\x00\x8a\x00\x8b\x00\x05\x00\x00\x00\x8c\x00\x8d\x00\x8e\x00\x00\x00\x8f\x00\x06\x00\x00\x00\x00\x00\x07\x00\x06\x00\x00\x00\x00\x00\x07\x00\x44\x01\x0a\x00\x00\x00\x00\x00\x45\x01\x0a\x00\x00\x00\x00\x00\x00\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x00\x00\x82\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x00\x00\x00\x00\x00\x00\x83\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x89\x00\x8a\x00\x8b\x00\x00\x00\x06\x00\x8c\x00\x8d\x00\x07\x00\x06\x00\x8f\x00\x00\x00\x07\x00\x47\x01\x0a\x00\x00\x00\x00\x00\x48\x01\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x00\x00\x82\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x00\x00\x00\x00\x05\x00\x83\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x89\x00\x06\x00\x8b\x00\x00\x00\x07\x00\x8c\x00\x8d\x00\x00\x00\x06\x00\x4c\x01\x0a\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x01\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x05\x00\x82\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x00\x00\x00\x00\x00\x00\x83\x00\x00\x00\x06\x00\x48\x00\x00\x00\x07\x00\x05\x00\x00\x00\x00\x00\x89\x00\x49\x00\x0a\x00\x00\x00\x05\x00\x8c\x00\x8d\x00\x00\x00\x06\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x06\x00\x57\x01\x0a\x00\x07\x00\x4a\x00\x21\x01\x4c\x00\x00\x00\xfb\x00\x0a\x00\x00\x00\x00\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x00\x00\x7a\x00\x7b\x00\x05\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x00\x00\x82\x00\x00\x00\x05\x00\x06\x00\x48\x00\x00\x00\x07\x00\x00\x00\x83\x00\x00\x00\x00\x00\x49\x00\x0a\x00\x06\x00\x48\x00\x00\x00\x07\x00\x89\x00\x00\x00\x00\x00\x00\x00\x49\x00\x0a\x00\x8d\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x00\x28\x01\x4c\x00\x00\x00\x00\x00\x05\x00\x06\x00\x48\x00\x00\x00\x07\x00\x4a\x00\x3e\x01\x4c\x00\x00\x00\x49\x00\x0a\x00\x06\x00\x48\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x00\x0a\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x00\x4b\x00\x4c\x00\x00\x00\x05\x00\x06\x00\x48\x00\x00\x00\x07\x00\x00\x00\x4a\x00\x4d\x00\x4c\x00\x49\x00\x0a\x00\x06\x00\x48\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x00\x0a\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x00\x4e\x00\x4c\x00\x00\x00\x00\x00\x06\x00\x48\x00\x00\x00\x07\x00\x00\x00\x4a\x00\x4f\x00\x4c\x00\x49\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9e\x01\x92\x00\x36\x00\x00\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x00\x50\x00\x4c\x00\x05\x00\x30\x00\x39\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x88\x01\x92\x00\x36\x00\x06\x00\x37\x00\x38\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x00\x0a\x00\x00\x00\x00\x00\x05\x00\x30\x00\x39\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x01\x92\x00\x36\x00\x06\x00\x37\x00\x38\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x00\x0a\x00\x00\x00\x00\x00\x05\x00\x30\x00\x39\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x91\x00\x92\x00\x36\x00\x06\x00\x37\x00\x38\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x00\x0a\x00\x00\x00\x00\x00\x05\x00\x30\x00\x39\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x00\x36\x00\x06\x00\x37\x00\x38\x00\x07\x00\xfc\x00\xfd\x00\x38\x00\x00\x00\x67\x00\x0a\x00\x00\x00\x00\x00\x05\x00\x30\x00\x39\x00\x32\x00\x05\x00\x30\x00\x39\x00\x32\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x07\x00\x06\x00\x05\x00\x00\x00\x07\x00\x67\x00\x0a\x00\x00\x00\x00\x00\x67\x00\x0a\x00\x00\x00\x05\x00\x06\x00\x05\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x01\x0a\x00\x06\x00\x05\x00\x06\x00\x07\x00\x00\x00\x07\x00\x00\x00\x00\x00\x15\x01\x0a\x00\x16\x01\x0a\x00\x06\x00\x05\x00\x00\x00\x07\x00\x00\x00\x05\x00\x00\x00\x00\x00\x19\x01\x0a\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x07\x00\x06\x00\x05\x00\x00\x00\x07\x00\x1a\x01\x0a\x00\x00\x00\x00\x00\x1b\x01\x0a\x00\x00\x00\x05\x00\x06\x00\x05\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x01\x0a\x00\x06\x00\x05\x00\x06\x00\x07\x00\x00\x00\x07\x00\x00\x00\x00\x00\x23\x01\x0a\x00\x24\x01\x0a\x00\x06\x00\x05\x00\x00\x00\x07\x00\x00\x00\x05\x00\x00\x00\x00\x00\x25\x01\x0a\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x07\x00\x06\x00\x05\x00\x00\x00\x07\x00\x2a\x01\x0a\x00\x00\x00\x00\x00\x2d\x01\x0a\x00\x00\x00\x05\x00\x06\x00\x05\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x01\x0a\x00\x06\x00\x05\x00\x06\x00\x07\x00\x00\x00\x07\x00\x00\x00\x00\x00\x98\x00\x0a\x00\x99\x00\x0a\x00\x06\x00\x05\x00\x00\x00\x07\x00\x00\x00\x05\x00\x00\x00\x00\x00\x9a\x00\x0a\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x07\x00\x06\x00\x05\x00\x00\x00\x07\x00\x9b\x00\x0a\x00\x00\x00\x00\x00\x9c\x00\x0a\x00\x00\x00\x05\x00\x06\x00\x05\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9d\x00\x0a\x00\x06\x00\x05\x00\x06\x00\x07\x00\x00\x00\x07\x00\x00\x00\x00\x00\x9e\x00\x0a\x00\x9f\x00\x0a\x00\x06\x00\x05\x00\x00\x00\x07\x00\x00\x00\x05\x00\x00\x00\x00\x00\xa0\x00\x0a\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x07\x00\x06\x00\x05\x00\x00\x00\x07\x00\xa1\x00\x0a\x00\x00\x00\x00\x00\xa4\x00\x0a\x00\x00\x00\x05\x00\x06\x00\x05\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaa\x00\x0a\x00\x06\x00\x05\x00\x06\x00\x07\x00\x00\x00\x07\x00\x00\x00\x00\x00\xab\x00\x0a\x00\xac\x00\x0a\x00\x06\x00\x05\x00\x00\x00\x07\x00\x00\x00\x05\x00\x00\x00\x00\x00\xad\x00\x0a\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x07\x00\x06\x00\x05\x00\x00\x00\x07\x00\xae\x00\x0a\x00\x00\x00\x00\x00\xaf\x00\x0a\x00\x00\x00\x05\x00\x06\x00\x05\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb0\x00\x0a\x00\x06\x00\x05\x00\x06\x00\x07\x00\x00\x00\x07\x00\x00\x00\x00\x00\xb1\x00\x0a\x00\xb2\x00\x0a\x00\x06\x00\x05\x00\x00\x00\x07\x00\x00\x00\x05\x00\x00\x00\x00\x00\xb3\x00\x0a\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x07\x00\x06\x00\x05\x00\x00\x00\x07\x00\xb4\x00\x0a\x00\x00\x00\x00\x00\xb5\x00\x0a\x00\x00\x00\x05\x00\x06\x00\x05\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb6\x00\x0a\x00\x06\x00\x05\x00\x06\x00\x07\x00\x00\x00\x07\x00\x00\x00\x00\x00\xb7\x00\x0a\x00\xb8\x00\x0a\x00\x06\x00\x05\x00\x00\x00\x07\x00\x00\x00\x05\x00\x00\x00\x00\x00\xb9\x00\x0a\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x07\x00\x06\x00\x05\x00\x00\x00\x07\x00\xba\x00\x0a\x00\x00\x00\x00\x00\xbb\x00\x0a\x00\x00\x00\x05\x00\x06\x00\x05\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\x00\x0a\x00\x06\x00\x05\x00\x06\x00\x07\x00\x00\x00\x07\x00\x00\x00\x00\x00\xbd\x00\x0a\x00\x47\x00\x0a\x00\x06\x00\x05\x00\x00\x00\x07\x00\x00\x00\x05\x00\x00\x00\x00\x00\x55\x00\x0a\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x07\x00\x06\x00\x05\x00\x00\x00\x07\x00\x60\x00\x0a\x00\x00\x00\x00\x00\x61\x00\x0a\x00\x00\x00\x05\x00\x06\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x00\x0a\x00\x06\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#

happyReduceArr = Happy_Data_Array.array (3, 201) [
	(3 , happyReduce_3),
	(4 , happyReduce_4),
	(5 , happyReduce_5),
	(6 , happyReduce_6),
	(7 , happyReduce_7),
	(8 , happyReduce_8),
	(9 , happyReduce_9),
	(10 , happyReduce_10),
	(11 , happyReduce_11),
	(12 , happyReduce_12),
	(13 , happyReduce_13),
	(14 , happyReduce_14),
	(15 , happyReduce_15),
	(16 , happyReduce_16),
	(17 , happyReduce_17),
	(18 , happyReduce_18),
	(19 , happyReduce_19),
	(20 , happyReduce_20),
	(21 , happyReduce_21),
	(22 , happyReduce_22),
	(23 , happyReduce_23),
	(24 , happyReduce_24),
	(25 , happyReduce_25),
	(26 , happyReduce_26),
	(27 , happyReduce_27),
	(28 , happyReduce_28),
	(29 , happyReduce_29),
	(30 , happyReduce_30),
	(31 , happyReduce_31),
	(32 , happyReduce_32),
	(33 , happyReduce_33),
	(34 , happyReduce_34),
	(35 , happyReduce_35),
	(36 , happyReduce_36),
	(37 , happyReduce_37),
	(38 , happyReduce_38),
	(39 , happyReduce_39),
	(40 , happyReduce_40),
	(41 , happyReduce_41),
	(42 , happyReduce_42),
	(43 , happyReduce_43),
	(44 , happyReduce_44),
	(45 , happyReduce_45),
	(46 , happyReduce_46),
	(47 , happyReduce_47),
	(48 , happyReduce_48),
	(49 , happyReduce_49),
	(50 , happyReduce_50),
	(51 , happyReduce_51),
	(52 , happyReduce_52),
	(53 , happyReduce_53),
	(54 , happyReduce_54),
	(55 , happyReduce_55),
	(56 , happyReduce_56),
	(57 , happyReduce_57),
	(58 , happyReduce_58),
	(59 , happyReduce_59),
	(60 , happyReduce_60),
	(61 , happyReduce_61),
	(62 , happyReduce_62),
	(63 , happyReduce_63),
	(64 , happyReduce_64),
	(65 , happyReduce_65),
	(66 , happyReduce_66),
	(67 , happyReduce_67),
	(68 , happyReduce_68),
	(69 , happyReduce_69),
	(70 , happyReduce_70),
	(71 , happyReduce_71),
	(72 , happyReduce_72),
	(73 , happyReduce_73),
	(74 , happyReduce_74),
	(75 , happyReduce_75),
	(76 , happyReduce_76),
	(77 , happyReduce_77),
	(78 , happyReduce_78),
	(79 , happyReduce_79),
	(80 , happyReduce_80),
	(81 , happyReduce_81),
	(82 , happyReduce_82),
	(83 , happyReduce_83),
	(84 , happyReduce_84),
	(85 , happyReduce_85),
	(86 , happyReduce_86),
	(87 , happyReduce_87),
	(88 , happyReduce_88),
	(89 , happyReduce_89),
	(90 , happyReduce_90),
	(91 , happyReduce_91),
	(92 , happyReduce_92),
	(93 , happyReduce_93),
	(94 , happyReduce_94),
	(95 , happyReduce_95),
	(96 , happyReduce_96),
	(97 , happyReduce_97),
	(98 , happyReduce_98),
	(99 , happyReduce_99),
	(100 , happyReduce_100),
	(101 , happyReduce_101),
	(102 , happyReduce_102),
	(103 , happyReduce_103),
	(104 , happyReduce_104),
	(105 , happyReduce_105),
	(106 , happyReduce_106),
	(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)
	]

happy_n_terms = 100 :: Int
happy_n_nonterms = 59 :: Int

happyReduce_3 = happySpecReduce_2  0# happyReduction_3
happyReduction_3 happy_x_2
	happy_x_1
	 =  case happyOut10 happy_x_2 of { happy_var_2 -> 
	happyIn6
		 (mkLoc Unknown (CSPMFile happy_var_2)
	)}

happyReduce_4 = happyMonadReduce 4# 1# happyReduction_4
happyReduction_4 (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 happyOut44 happy_x_2 of { happy_var_2 -> 
	case happyOut41 happy_x_4 of { happy_var_4 -> 
	( do
                                                    d <- convDecl happy_var_2 happy_var_4 
                                                    d <- annotateWithSymbolTable d
                                                    return $ annotate2 happy_var_1 happy_var_4 (Bind [d]))}}}
	) (\r -> happyReturn (happyIn7 r))

happyReduce_5 = happySpecReduce_3  1# happyReduction_5
happyReduction_5 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
	case happyOut19 happy_x_3 of { happy_var_3 -> 
	happyIn7
		 (annotate2 happy_var_1 happy_var_3 (RunAssertion (annotate2 happy_var_1 happy_var_3 (ASNot happy_var_3)))
	)}}

happyReduce_6 = happySpecReduce_2  1# happyReduction_6
happyReduction_6 happy_x_2
	happy_x_1
	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
	case happyOut19 happy_x_2 of { happy_var_2 -> 
	happyIn7
		 (annotate2 happy_var_1 happy_var_2 (RunAssertion happy_var_2)
	)}}

happyReduce_7 = happyMonadReduce 2# 1# happyReduction_7
happyReduction_7 (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 -> 
	( do
                                                    d <- annotateWithSymbolTable $
                                                        annotate2List happy_var_1 happy_var_2 (External (map unLoc happy_var_2))
                                                    return $ annotate2List happy_var_1 happy_var_2 (Bind [d]))}}
	) (\r -> happyReturn (happyIn7 r))

happyReduce_8 = happyMonadReduce 2# 1# happyReduction_8
happyReduction_8 (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 -> 
	( do
                                                    d <- annotateWithSymbolTable $
                                                        annotate2List happy_var_1 happy_var_2 (Transparent (map unLoc happy_var_2))
                                                    return $ annotate2List happy_var_1 happy_var_2 (Bind [d]))}}
	) (\r -> happyReturn (happyIn7 r))

happyReduce_9 = happySpecReduce_1  1# happyReduction_9
happyReduction_9 happy_x_1
	 =  case happyOut41 happy_x_1 of { happy_var_1 -> 
	happyIn7
		 (annotate happy_var_1 (Evaluate happy_var_1)
	)}

happyReduce_10 = happySpecReduce_1  2# happyReduction_10
happyReduction_10 happy_x_1
	 =  happyIn8
		 (
	)

happyReduce_11 = happySpecReduce_2  2# happyReduction_11
happyReduction_11 happy_x_2
	happy_x_1
	 =  happyIn8
		 (
	)

happyReduce_12 = happySpecReduce_0  3# happyReduction_12
happyReduction_12  =  happyIn9
		 (
	)

happyReduce_13 = happySpecReduce_2  3# happyReduction_13
happyReduction_13 happy_x_2
	happy_x_1
	 =  happyIn9
		 (
	)

happyReduce_14 = happySpecReduce_0  4# happyReduction_14
happyReduction_14  =  happyIn10
		 ([]
	)

happyReduce_15 = happySpecReduce_1  4# happyReduction_15
happyReduction_15 happy_x_1
	 =  case happyOut11 happy_x_1 of { happy_var_1 -> 
	happyIn10
		 (happy_var_1
	)}

happyReduce_16 = happySpecReduce_1  5# happyReduction_16
happyReduction_16 happy_x_1
	 =  case happyOut12 happy_x_1 of { happy_var_1 -> 
	happyIn11
		 (attachTypeAnnotations $
                                                    combineDecls (reverse happy_var_1)
	)}

happyReduce_17 = happySpecReduce_1  6# happyReduction_17
happyReduction_17 happy_x_1
	 =  case happyOut14 happy_x_1 of { happy_var_1 -> 
	happyIn12
		 ([happy_var_1]
	)}

happyReduce_18 = happySpecReduce_3  6# happyReduction_18
happyReduction_18 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut12 happy_x_1 of { happy_var_1 -> 
	case happyOut13 happy_x_3 of { happy_var_3 -> 
	happyIn12
		 (case happy_var_3 of 
                                                    Just d -> d:happy_var_1
                                                    Nothing -> happy_var_1
	)}}

happyReduce_19 = happySpecReduce_0  7# happyReduction_19
happyReduction_19  =  happyIn13
		 (Nothing
	)

happyReduce_20 = happySpecReduce_1  7# happyReduction_20
happyReduction_20 happy_x_1
	 =  case happyOut14 happy_x_1 of { happy_var_1 -> 
	happyIn13
		 (Just happy_var_1
	)}

happyReduce_21 = happyMonadReduce 1# 8# happyReduction_21
happyReduction_21 (happy_x_1 `HappyStk`
	happyRest) tk
	 = happyThen (case happyOut15 happy_x_1 of { happy_var_1 -> 
	( annotateWithSymbolTable happy_var_1)}
	) (\r -> happyReturn (happyIn14 r))

happyReduce_22 = happyMonadReduce 3# 9# happyReduction_22
happyReduction_22 (happy_x_3 `HappyStk`
	happy_x_2 `HappyStk`
	happy_x_1 `HappyStk`
	happyRest) tk
	 = happyThen (case happyOut44 happy_x_1 of { happy_var_1 -> 
	case happyOut41 happy_x_3 of { happy_var_3 -> 
	( convDecl happy_var_1 happy_var_3)}}
	) (\r -> happyReturn (happyIn15 r))

happyReduce_23 = happySpecReduce_2  9# happyReduction_23
happyReduction_23 happy_x_2
	happy_x_1
	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
	case happyOut27 happy_x_2 of { happy_var_2 -> 
	happyIn15
		 (annotate2List happy_var_1 happy_var_2 (Channel (map unLoc happy_var_2) Nothing)
	)}}

happyReduce_24 = happyReduce 4# 9# happyReduction_24
happyReduction_24 (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 happyOut27 happy_x_2 of { happy_var_2 -> 
	case happyOut41 happy_x_4 of { happy_var_4 -> 
	happyIn15
		 (annotate2 happy_var_1 happy_var_4 (Channel (map unLoc happy_var_2) (Just happy_var_4))
	) `HappyStk` happyRest}}}

happyReduce_25 = happyReduce 4# 9# happyReduction_25
happyReduction_25 (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 happyOut26 happy_x_2 of { happy_var_2 -> 
	case happyOut23 happy_x_4 of { happy_var_4 -> 
	happyIn15
		 (annotate2List happy_var_1 happy_var_4 (DataType (unLoc happy_var_2) happy_var_4)
	) `HappyStk` happyRest}}}

happyReduce_26 = happyReduce 4# 9# happyReduction_26
happyReduction_26 (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 happyOut26 happy_x_2 of { happy_var_2 -> 
	case happyOut23 happy_x_4 of { happy_var_4 -> 
	happyIn15
		 (annotate2List happy_var_1 happy_var_4 (SubType (unLoc happy_var_2) happy_var_4)
	) `HappyStk` happyRest}}}

happyReduce_27 = happySpecReduce_2  9# happyReduction_27
happyReduction_27 happy_x_2
	happy_x_1
	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
	case happyOut27 happy_x_2 of { happy_var_2 -> 
	happyIn15
		 (annotate2List happy_var_1 happy_var_2 (External (map unLoc happy_var_2))
	)}}

happyReduce_28 = happySpecReduce_2  9# happyReduction_28
happyReduction_28 happy_x_2
	happy_x_1
	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
	case happyOut27 happy_x_2 of { happy_var_2 -> 
	happyIn15
		 (annotate2List happy_var_1 happy_var_2 (Transparent (map unLoc happy_var_2))
	)}}

happyReduce_29 = happySpecReduce_3  9# happyReduction_29
happyReduction_29 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
	case happyOut19 happy_x_3 of { happy_var_3 -> 
	happyIn15
		 (annotate2 happy_var_1 happy_var_3 (Assert (annotate2 happy_var_1 happy_var_3 (ASNot happy_var_3)))
	)}}

happyReduce_30 = happySpecReduce_2  9# happyReduction_30
happyReduction_30 happy_x_2
	happy_x_1
	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
	case happyOut19 happy_x_2 of { happy_var_2 -> 
	happyIn15
		 (annotate2 happy_var_1 happy_var_2 (Assert happy_var_2)
	)}}

happyReduce_31 = happyReduce 4# 9# happyReduction_31
happyReduction_31 (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 happyOut26 happy_x_2 of { happy_var_2 -> 
	case happyOut41 happy_x_4 of { happy_var_4 -> 
	happyIn15
		 (annotate2 happy_var_1 happy_var_4 (NameType (unLoc happy_var_2) happy_var_4)
	) `HappyStk` happyRest}}}

happyReduce_32 = happyReduce 9# 9# happyReduction_32
happyReduction_32 (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 { happy_var_1 -> 
	case happyOut26 happy_x_2 of { happy_var_2 -> 
	case happyOut16 happy_x_3 of { happy_var_3 -> 
	case happyOut10 happy_x_5 of { happy_var_5 -> 
	case happyOut10 happy_x_8 of { happy_var_8 -> 
	case happyOutTok happy_x_9 of { happy_var_9 -> 
	happyIn15
		 (annotate2 happy_var_1 happy_var_9 (Module (unLoc happy_var_2) happy_var_3 
                                                    (map checkModuleDecl happy_var_5)
                                                    (map checkModuleDecl happy_var_8))
	) `HappyStk` happyRest}}}}}}

happyReduce_33 = happyReduce 4# 9# happyReduction_33
happyReduction_33 (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 happyOut10 happy_x_3 of { happy_var_3 -> 
	case happyOutTok happy_x_4 of { happy_var_4 -> 
	happyIn15
		 (annotate2 happy_var_1 happy_var_4 (TimedSection Nothing
                                                    Nothing
                                                    (map checkTimedDecl happy_var_3))
	) `HappyStk` happyRest}}}

happyReduce_34 = happyReduce 7# 9# happyReduction_34
happyReduction_34 (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 { happy_var_1 -> 
	case happyOut41 happy_x_3 of { happy_var_3 -> 
	case happyOut10 happy_x_6 of { happy_var_6 -> 
	case happyOutTok happy_x_7 of { happy_var_7 -> 
	happyIn15
		 (annotate2 happy_var_1 happy_var_7 (TimedSection Nothing
                                                    (Just happy_var_3)
                                                    (map checkTimedDecl happy_var_6))
	) `HappyStk` happyRest}}}}

happyReduce_35 = happySpecReduce_3  9# happyReduction_35
happyReduction_35 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut27 happy_x_1 of { happy_var_1 -> 
	case happyOut29 happy_x_3 of { happy_var_3 -> 
	happyIn15
		 (annotate2List' happy_var_1 happy_var_3 (ParsedTypeAnnotation
                                                    (map unLoc happy_var_1) happy_var_3)
	)}}

happyReduce_36 = happyReduce 5# 9# happyReduction_36
happyReduction_36 (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 happyOut26 happy_x_2 of { happy_var_2 -> 
	case happyOut25 happy_x_4 of { happy_var_4 -> 
	case happyOut18 happy_x_5 of { happy_var_5 -> 
	happyIn15
		 (annotate2List happy_var_1 happy_var_5 (ModuleInstance (unLoc happy_var_2)
                                                    (unLoc happy_var_4) happy_var_5 [] Nothing)
	) `HappyStk` happyRest}}}}

happyReduce_37 = happyReduce 4# 9# happyReduction_37
happyReduction_37 (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 happyOut26 happy_x_2 of { happy_var_2 -> 
	case happyOut25 happy_x_4 of { happy_var_4 -> 
	happyIn15
		 (annotate2 happy_var_1 happy_var_4 (ModuleInstance (unLoc happy_var_2)
                                                    (unLoc happy_var_4) [] [] Nothing)
	) `HappyStk` happyRest}}}

happyReduce_38 = happySpecReduce_1  9# happyReduction_38
happyReduction_38 happy_x_1
	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
	happyIn15
		 (liftLoc happy_var_1 (PrintStatement
                                                    (getPrintString happy_var_1))
	)}

happyReduce_39 = happySpecReduce_0  10# happyReduction_39
happyReduction_39  =  happyIn16
		 ([]
	)

happyReduce_40 = happySpecReduce_3  10# happyReduction_40
happyReduction_40 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut38 happy_x_2 of { happy_var_2 -> 
	happyIn16
		 (reverse happy_var_2
	)}

happyReduce_41 = happySpecReduce_1  11# happyReduction_41
happyReduction_41 happy_x_1
	 =  case happyOut38 happy_x_1 of { happy_var_1 -> 
	happyIn17
		 (reverse happy_var_1
	)}

happyReduce_42 = happySpecReduce_3  12# happyReduction_42
happyReduction_42 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut42 happy_x_2 of { happy_var_2 -> 
	happyIn18
		 (reverse happy_var_2
	)}

happyReduce_43 = happySpecReduce_3  13# happyReduction_43
happyReduction_43 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut41 happy_x_1 of { happy_var_1 -> 
	case happyOutTok happy_x_2 of { happy_var_2 -> 
	case happyOut41 happy_x_3 of { happy_var_3 -> 
	happyIn19
		 (annotate2 happy_var_1 happy_var_3 (Refinement happy_var_1 (getRefinesModel happy_var_2) happy_var_3 [])
	)}}}

happyReduce_44 = happyReduce 4# 13# happyReduction_44
happyReduction_44 (happy_x_4 `HappyStk`
	happy_x_3 `HappyStk`
	happy_x_2 `HappyStk`
	happy_x_1 `HappyStk`
	happyRest)
	 = case happyOut41 happy_x_1 of { happy_var_1 -> 
	case happyOutTok happy_x_2 of { happy_var_2 -> 
	case happyOut41 happy_x_3 of { happy_var_3 -> 
	case happyOut21 happy_x_4 of { happy_var_4 -> 
	happyIn19
		 (annotate2 happy_var_1 happy_var_4 (Refinement happy_var_1 (getRefinesModel happy_var_2) happy_var_3 [unLoc happy_var_4])
	) `HappyStk` happyRest}}}}

happyReduce_45 = happySpecReduce_2  13# happyReduction_45
happyReduction_45 happy_x_2
	happy_x_1
	 =  case happyOut41 happy_x_1 of { happy_var_1 -> 
	case happyOut20 happy_x_2 of { happy_var_2 -> 
	happyIn19
		 (annotate2 happy_var_1 happy_var_2 (PropertyCheck happy_var_1 (unLoc happy_var_2) Nothing)
	)}}

happyReduce_46 = happySpecReduce_3  13# happyReduction_46
happyReduction_46 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut41 happy_x_1 of { happy_var_1 -> 
	case happyOut20 happy_x_2 of { happy_var_2 -> 
	case happyOutTok happy_x_3 of { happy_var_3 -> 
	happyIn19
		 (annotate2 happy_var_1 happy_var_3 (PropertyCheck happy_var_1 (unLoc happy_var_2) (Just (getPropModel happy_var_3)))
	)}}}

happyReduce_47 = happySpecReduce_1  14# happyReduction_47
happyReduction_47 happy_x_1
	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
	happyIn20
		 (liftLoc happy_var_1 DeadlockFreedom
	)}

happyReduce_48 = happySpecReduce_1  14# happyReduction_48
happyReduction_48 happy_x_1
	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
	happyIn20
		 (liftLoc happy_var_1 LivelockFreedom
	)}

happyReduce_49 = happySpecReduce_1  14# happyReduction_49
happyReduction_49 happy_x_1
	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
	happyIn20
		 (liftLoc happy_var_1 LivelockFreedom
	)}

happyReduce_50 = happySpecReduce_1  14# happyReduction_50
happyReduction_50 happy_x_1
	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
	happyIn20
		 (liftLoc happy_var_1 Deterministic
	)}

happyReduce_51 = happySpecReduce_2  15# happyReduction_51
happyReduction_51 happy_x_2
	happy_x_1
	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
	case happyOut41 happy_x_2 of { happy_var_2 -> 
	happyIn21
		 (annotate2 happy_var_1 happy_var_2 (TauPriority happy_var_2)
	)}}

happyReduce_52 = happySpecReduce_3  16# happyReduction_52
happyReduction_52 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut26 happy_x_1 of { happy_var_1 -> 
	case happyOut41 happy_x_3 of { happy_var_3 -> 
	happyIn22
		 (annotate2 happy_var_1 happy_var_3 (DataTypeClause (unLoc happy_var_1) (Just happy_var_3))
	)}}

happyReduce_53 = happySpecReduce_1  16# happyReduction_53
happyReduction_53 happy_x_1
	 =  case happyOut26 happy_x_1 of { happy_var_1 -> 
	happyIn22
		 (annotate happy_var_1 (DataTypeClause (unLoc happy_var_1) Nothing)
	)}

happyReduce_54 = happySpecReduce_1  17# happyReduction_54
happyReduction_54 happy_x_1
	 =  case happyOut24 happy_x_1 of { happy_var_1 -> 
	happyIn23
		 (reverse happy_var_1
	)}

happyReduce_55 = happySpecReduce_1  18# happyReduction_55
happyReduction_55 happy_x_1
	 =  case happyOut22 happy_x_1 of { happy_var_1 -> 
	happyIn24
		 ([happy_var_1]
	)}

happyReduce_56 = happySpecReduce_3  18# happyReduction_56
happyReduction_56 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut24 happy_x_1 of { happy_var_1 -> 
	case happyOut22 happy_x_3 of { happy_var_3 -> 
	happyIn24
		 (happy_var_3:happy_var_1
	)}}

happyReduce_57 = happySpecReduce_1  19# happyReduction_57
happyReduction_57 happy_x_1
	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
	happyIn25
		 (liftLoc happy_var_1 (UnQual (OccName (getName happy_var_1)))
	)}

happyReduce_58 = happySpecReduce_3  19# happyReduction_58
happyReduction_58 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
	case happyOut25 happy_x_3 of { happy_var_3 -> 
	happyIn25
		 (annotate happy_var_1 (Qual (OccName (getName happy_var_1)) (unLoc happy_var_3))
	)}}

happyReduce_59 = happySpecReduce_1  20# happyReduction_59
happyReduction_59 happy_x_1
	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
	happyIn26
		 (liftLoc happy_var_1 (UnQual (OccName (getName happy_var_1)))
	)}

happyReduce_60 = happySpecReduce_1  21# happyReduction_60
happyReduction_60 happy_x_1
	 =  case happyOut28 happy_x_1 of { happy_var_1 -> 
	happyIn27
		 (reverse happy_var_1
	)}

happyReduce_61 = happySpecReduce_1  22# happyReduction_61
happyReduction_61 happy_x_1
	 =  case happyOut26 happy_x_1 of { happy_var_1 -> 
	happyIn28
		 ([happy_var_1]
	)}

happyReduce_62 = happySpecReduce_3  22# happyReduction_62
happyReduction_62 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut28 happy_x_1 of { happy_var_1 -> 
	case happyOut26 happy_x_3 of { happy_var_3 -> 
	happyIn28
		 (happy_var_3:happy_var_1
	)}}

happyReduce_63 = happySpecReduce_1  23# happyReduction_63
happyReduction_63 happy_x_1
	 =  case happyOut32 happy_x_1 of { happy_var_1 -> 
	happyIn29
		 (liftLoc happy_var_1 (STypeScheme [] [] happy_var_1)
	)}

happyReduce_64 = happySpecReduce_3  23# happyReduction_64
happyReduction_64 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut33 happy_x_1 of { happy_var_1 -> 
	case happyOut32 happy_x_3 of { happy_var_3 -> 
	happyIn29
		 (liftLoc happy_var_1 (STypeScheme [] [happy_var_1] happy_var_3)
	)}}

happyReduce_65 = happyReduce 5# 23# happyReduction_65
happyReduction_65 (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 happyOut30 happy_x_2 of { happy_var_2 -> 
	case happyOut32 happy_x_5 of { happy_var_5 -> 
	happyIn29
		 (liftLoc happy_var_1 (STypeScheme [] happy_var_2 happy_var_5)
	) `HappyStk` happyRest}}}

happyReduce_66 = happySpecReduce_1  24# happyReduction_66
happyReduction_66 happy_x_1
	 =  case happyOut31 happy_x_1 of { happy_var_1 -> 
	happyIn30
		 (reverse happy_var_1
	)}

happyReduce_67 = happySpecReduce_3  25# happyReduction_67
happyReduction_67 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut31 happy_x_1 of { happy_var_1 -> 
	case happyOut33 happy_x_3 of { happy_var_3 -> 
	happyIn31
		 (happy_var_3:happy_var_1
	)}}

happyReduce_68 = happySpecReduce_1  25# happyReduction_68
happyReduction_68 happy_x_1
	 =  case happyOut33 happy_x_1 of { happy_var_1 -> 
	happyIn31
		 ([happy_var_1]
	)}

happyReduce_69 = happySpecReduce_1  26# happyReduction_69
happyReduction_69 happy_x_1
	 =  case happyOut25 happy_x_1 of { happy_var_1 -> 
	happyIn32
		 (liftLoc happy_var_1 (STVar (unLoc happy_var_1))
	)}

happyReduce_70 = happySpecReduce_3  26# happyReduction_70
happyReduction_70 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
	case happyOut32 happy_x_2 of { happy_var_2 -> 
	case happyOutTok happy_x_3 of { happy_var_3 -> 
	happyIn32
		 (annotate2 happy_var_1 happy_var_3 (STSet happy_var_2)
	)}}}

happyReduce_71 = happySpecReduce_3  26# happyReduction_71
happyReduction_71 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
	case happyOut32 happy_x_2 of { happy_var_2 -> 
	case happyOutTok happy_x_3 of { happy_var_3 -> 
	happyIn32
		 (annotate2 happy_var_1 happy_var_3 (STSeq happy_var_2)
	)}}}

happyReduce_72 = happySpecReduce_3  26# happyReduction_72
happyReduction_72 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
	case happyOut32 happy_x_2 of { happy_var_2 -> 
	case happyOutTok happy_x_3 of { happy_var_3 -> 
	happyIn32
		 (annotate2 happy_var_1 happy_var_3 (STParen happy_var_2)
	)}}}

happyReduce_73 = happySpecReduce_3  26# happyReduction_73
happyReduction_73 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut25 happy_x_1 of { happy_var_1 -> 
	case happyOut32 happy_x_3 of { happy_var_3 -> 
	happyIn32
		 (annotate2 happy_var_1 happy_var_3 (STExtendable happy_var_3 (unLoc happy_var_1))
	)}}

happyReduce_74 = happySpecReduce_3  26# happyReduction_74
happyReduction_74 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut32 happy_x_1 of { happy_var_1 -> 
	case happyOut32 happy_x_3 of { happy_var_3 -> 
	happyIn32
		 (annotate2 happy_var_1 happy_var_3 (STDotable happy_var_1 happy_var_3)
	)}}

happyReduce_75 = happyReduce 5# 26# happyReduction_75
happyReduction_75 (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 happyOut32 happy_x_2 of { happy_var_2 -> 
	case happyOut32 happy_x_4 of { happy_var_4 -> 
	case happyOutTok happy_x_5 of { happy_var_5 -> 
	happyIn32
		 (annotate2 happy_var_1 happy_var_5 (STMap happy_var_2 happy_var_4)
	) `HappyStk` happyRest}}}}

happyReduce_76 = happySpecReduce_3  26# happyReduction_76
happyReduction_76 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut32 happy_x_1 of { happy_var_1 -> 
	case happyOut32 happy_x_3 of { happy_var_3 -> 
	happyIn32
		 (annotate2 happy_var_1 happy_var_3 (STDot happy_var_1 happy_var_3)
	)}}

happyReduce_77 = happySpecReduce_3  26# happyReduction_77
happyReduction_77 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
	case happyOut34 happy_x_2 of { happy_var_2 -> 
	case happyOutTok happy_x_3 of { happy_var_3 -> 
	happyIn32
		 (annotate2 happy_var_1 happy_var_3 (STTuple happy_var_2)
	)}}}

happyReduce_78 = happyReduce 4# 26# happyReduction_78
happyReduction_78 (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 happyOut32 happy_x_4 of { happy_var_4 -> 
	happyIn32
		 (annotate2 happy_var_1 happy_var_4 (STFunction [] happy_var_4)
	) `HappyStk` happyRest}}

happyReduce_79 = happySpecReduce_3  26# happyReduction_79
happyReduction_79 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut32 happy_x_1 of { happy_var_1 -> 
	case happyOut32 happy_x_3 of { happy_var_3 -> 
	happyIn32
		 (annotate2 happy_var_1 happy_var_3 (STFunction
                                        (getFuncArgs happy_var_1) happy_var_3)
	)}}

happyReduce_80 = happySpecReduce_2  27# happyReduction_80
happyReduction_80 happy_x_2
	happy_x_1
	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
	case happyOut26 happy_x_2 of { happy_var_2 -> 
	happyIn33
		 (annotate2 happy_var_1 happy_var_2 (STypeConstraint
                                        (constraintForName (getLoc happy_var_1)
                                            (getName happy_var_1))
                                        (unLoc happy_var_2))
	)}}

happyReduce_81 = happySpecReduce_3  28# happyReduction_81
happyReduction_81 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut32 happy_x_1 of { happy_var_1 -> 
	case happyOut35 happy_x_3 of { happy_var_3 -> 
	happyIn34
		 (happy_var_1:(reverse happy_var_3)
	)}}

happyReduce_82 = happySpecReduce_3  29# happyReduction_82
happyReduction_82 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut35 happy_x_1 of { happy_var_1 -> 
	case happyOut32 happy_x_3 of { happy_var_3 -> 
	happyIn35
		 (happy_var_3:happy_var_1
	)}}

happyReduce_83 = happySpecReduce_1  29# happyReduction_83
happyReduction_83 happy_x_1
	 =  case happyOut32 happy_x_1 of { happy_var_1 -> 
	happyIn35
		 ([happy_var_1]
	)}

happyReduce_84 = happySpecReduce_1  30# happyReduction_84
happyReduction_84 happy_x_1
	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
	happyIn36
		 (liftLoc happy_var_1 (Int (getInt happy_var_1))
	)}

happyReduce_85 = happySpecReduce_1  30# happyReduction_85
happyReduction_85 happy_x_1
	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
	happyIn36
		 (liftLoc happy_var_1 (Char (getChar happy_var_1))
	)}

happyReduce_86 = happySpecReduce_1  30# happyReduction_86
happyReduction_86 happy_x_1
	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
	happyIn36
		 (liftLoc happy_var_1 (String (getString happy_var_1))
	)}

happyReduce_87 = happySpecReduce_1  30# happyReduction_87
happyReduction_87 happy_x_1
	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
	happyIn36
		 (liftLoc happy_var_1 (Bool True)
	)}

happyReduce_88 = happySpecReduce_1  30# happyReduction_88
happyReduction_88 happy_x_1
	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
	happyIn36
		 (liftLoc happy_var_1 (Bool False)
	)}

happyReduce_89 = happySpecReduce_1  31# happyReduction_89
happyReduction_89 happy_x_1
	 =  case happyOut44 happy_x_1 of { happy_var_1 -> 
	happyIn37
		 (convPat happy_var_1
	)}

happyReduce_90 = happySpecReduce_1  32# happyReduction_90
happyReduction_90 happy_x_1
	 =  case happyOut37 happy_x_1 of { happy_var_1 -> 
	happyIn38
		 ([happy_var_1]
	)}

happyReduce_91 = happySpecReduce_3  32# happyReduction_91
happyReduction_91 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut38 happy_x_1 of { happy_var_1 -> 
	case happyOut37 happy_x_3 of { happy_var_3 -> 
	happyIn38
		 (happy_var_3:happy_var_1
	)}}

happyReduce_92 = happyMonadReduce 1# 33# happyReduction_92
happyReduction_92 (happy_x_1 `HappyStk`
	happyRest) tk
	 = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> 
	( do
                                    modifyTopFileParserState (
                                        \ st @ (FileParserState { sequenceStack = (c:cs) }) -> 
                                            st { sequenceStack = (c+1):cs })
                                    return happy_var_1)}
	) (\r -> happyReturn (happyIn39 r))

happyReduce_93 = happySpecReduce_1  34# happyReduction_93
happyReduction_93 happy_x_1
	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
	happyIn40
		 (happy_var_1
	)}

happyReduce_94 = happySpecReduce_1  35# happyReduction_94
happyReduction_94 happy_x_1
	 =  case happyOut44 happy_x_1 of { happy_var_1 -> 
	happyIn41
		 (checkExp happy_var_1
	)}

happyReduce_95 = happySpecReduce_1  36# happyReduction_95
happyReduction_95 happy_x_1
	 =  case happyOut43 happy_x_1 of { happy_var_1 -> 
	happyIn42
		 (reverse happy_var_1
	)}

happyReduce_96 = happySpecReduce_1  37# happyReduction_96
happyReduction_96 happy_x_1
	 =  case happyOut41 happy_x_1 of { happy_var_1 -> 
	happyIn43
		 ([happy_var_1]
	)}

happyReduce_97 = happySpecReduce_3  37# happyReduction_97
happyReduction_97 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut43 happy_x_1 of { happy_var_1 -> 
	case happyOut41 happy_x_3 of { happy_var_3 -> 
	happyIn43
		 (happy_var_3:happy_var_1
	)}}

happyReduce_98 = happyMonadReduce 1# 38# happyReduction_98
happyReduction_98 (happy_x_1 `HappyStk`
	happyRest) tk
	 = happyThen (case happyOut45 happy_x_1 of { happy_var_1 -> 
	( do
                                        t <- freshPType
                                        let An l _ e = happy_var_1
                                        return $ An l (Nothing, t) e)}
	) (\r -> happyReturn (happyIn44 r))

happyReduce_99 = happySpecReduce_1  39# happyReduction_99
happyReduction_99 happy_x_1
	 =  case happyOut36 happy_x_1 of { happy_var_1 -> 
	happyIn45
		 (liftLoc happy_var_1 (Lit (unLoc happy_var_1))
	)}

happyReduce_100 = happySpecReduce_1  39# happyReduction_100
happyReduction_100 happy_x_1
	 =  case happyOut25 happy_x_1 of { happy_var_1 -> 
	happyIn45
		 (liftLoc happy_var_1 (Var (unLoc happy_var_1))
	)}

happyReduce_101 = happySpecReduce_3  39# happyReduction_101
happyReduction_101 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
	case happyOut55 happy_x_2 of { happy_var_2 -> 
	case happyOutTok happy_x_3 of { happy_var_3 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_3 (Tuple happy_var_2)
	)}}}

happyReduce_102 = happySpecReduce_3  39# happyReduction_102
happyReduction_102 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut44 happy_x_1 of { happy_var_1 -> 
	case happyOut44 happy_x_3 of { happy_var_3 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_3 (DotApp happy_var_1 happy_var_3)
	)}}

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 { happy_var_1 -> 
	case happyOut11 happy_x_2 of { happy_var_2 -> 
	case happyOut44 happy_x_4 of { happy_var_4 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_4 (Let (checkLetDecls happy_var_2) happy_var_4)
	) `HappyStk` happyRest}}}

happyReduce_104 = happyReduce 6# 39# happyReduction_104
happyReduction_104 (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 happyOut44 happy_x_2 of { happy_var_2 -> 
	case happyOut44 happy_x_4 of { happy_var_4 -> 
	case happyOut44 happy_x_6 of { happy_var_6 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_6 (If happy_var_2 happy_var_4 happy_var_6)
	) `HappyStk` happyRest}}}}

happyReduce_105 = happySpecReduce_3  39# happyReduction_105
happyReduction_105 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
	case happyOut44 happy_x_2 of { happy_var_2 -> 
	case happyOutTok happy_x_3 of { happy_var_3 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_3 (Paren happy_var_2)
	)}}}

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 happyOut44 happy_x_1 of { happy_var_1 -> 
	case happyOut57 happy_x_3 of { happy_var_3 -> 
	case happyOutTok happy_x_4 of { happy_var_4 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_4 (App happy_var_1 happy_var_3)
	) `HappyStk` happyRest}}}

happyReduce_107 = happyReduce 4# 39# happyReduction_107
happyReduction_107 (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 happyOut17 happy_x_2 of { happy_var_2 -> 
	case happyOut44 happy_x_4 of { happy_var_4 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_4 (Lambda happy_var_2 happy_var_4)
	) `HappyStk` happyRest}}}

happyReduce_108 = happySpecReduce_3  39# happyReduction_108
happyReduction_108 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut44 happy_x_1 of { happy_var_1 -> 
	case happyOut44 happy_x_3 of { happy_var_3 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_3 (BooleanBinaryOp Equals happy_var_1 happy_var_3)
	)}}

happyReduce_109 = happySpecReduce_3  39# happyReduction_109
happyReduction_109 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut44 happy_x_1 of { happy_var_1 -> 
	case happyOut44 happy_x_3 of { happy_var_3 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_3 (BooleanBinaryOp NotEquals happy_var_1 happy_var_3)
	)}}

happyReduce_110 = happySpecReduce_3  39# happyReduction_110
happyReduction_110 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut44 happy_x_1 of { happy_var_1 -> 
	case happyOut44 happy_x_3 of { happy_var_3 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_3 (BooleanBinaryOp LessThan happy_var_1 happy_var_3)
	)}}

happyReduce_111 = happySpecReduce_3  39# happyReduction_111
happyReduction_111 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut44 happy_x_1 of { happy_var_1 -> 
	case happyOut44 happy_x_3 of { happy_var_3 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_3 (BooleanBinaryOp GreaterThan happy_var_1 happy_var_3)
	)}}

happyReduce_112 = happySpecReduce_3  39# happyReduction_112
happyReduction_112 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut44 happy_x_1 of { happy_var_1 -> 
	case happyOut44 happy_x_3 of { happy_var_3 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_3 (BooleanBinaryOp LessThanEq happy_var_1 happy_var_3)
	)}}

happyReduce_113 = happySpecReduce_3  39# happyReduction_113
happyReduction_113 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut44 happy_x_1 of { happy_var_1 -> 
	case happyOut44 happy_x_3 of { happy_var_3 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_3 (BooleanBinaryOp GreaterThanEq happy_var_1 happy_var_3)
	)}}

happyReduce_114 = happySpecReduce_2  39# happyReduction_114
happyReduction_114 happy_x_2
	happy_x_1
	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
	case happyOut44 happy_x_2 of { happy_var_2 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_2 (BooleanUnaryOp Not happy_var_2)
	)}}

happyReduce_115 = happySpecReduce_3  39# happyReduction_115
happyReduction_115 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut44 happy_x_1 of { happy_var_1 -> 
	case happyOut44 happy_x_3 of { happy_var_3 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_3 (BooleanBinaryOp Or happy_var_1 happy_var_3)
	)}}

happyReduce_116 = happySpecReduce_3  39# happyReduction_116
happyReduction_116 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut44 happy_x_1 of { happy_var_1 -> 
	case happyOut44 happy_x_3 of { happy_var_3 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_3 (BooleanBinaryOp And happy_var_1 happy_var_3)
	)}}

happyReduce_117 = happySpecReduce_2  39# happyReduction_117
happyReduction_117 happy_x_2
	happy_x_1
	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
	case happyOut44 happy_x_2 of { happy_var_2 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_2 (MathsUnaryOp Negate happy_var_2)
	)}}

happyReduce_118 = happySpecReduce_3  39# happyReduction_118
happyReduction_118 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut44 happy_x_1 of { happy_var_1 -> 
	case happyOut44 happy_x_3 of { happy_var_3 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_3 (MathsBinaryOp Plus happy_var_1 happy_var_3)
	)}}

happyReduce_119 = happySpecReduce_3  39# happyReduction_119
happyReduction_119 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut44 happy_x_1 of { happy_var_1 -> 
	case happyOut44 happy_x_3 of { happy_var_3 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_3 (MathsBinaryOp Minus happy_var_1 happy_var_3)
	)}}

happyReduce_120 = happySpecReduce_3  39# happyReduction_120
happyReduction_120 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut44 happy_x_1 of { happy_var_1 -> 
	case happyOut44 happy_x_3 of { happy_var_3 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_3 (MathsBinaryOp Mod happy_var_1 happy_var_3)
	)}}

happyReduce_121 = happySpecReduce_3  39# happyReduction_121
happyReduction_121 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut44 happy_x_1 of { happy_var_1 -> 
	case happyOut44 happy_x_3 of { happy_var_3 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_3 (MathsBinaryOp Divide happy_var_1 happy_var_3)
	)}}

happyReduce_122 = happySpecReduce_3  39# happyReduction_122
happyReduction_122 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut44 happy_x_1 of { happy_var_1 -> 
	case happyOut44 happy_x_3 of { happy_var_3 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_3 (MathsBinaryOp Times happy_var_1 happy_var_3)
	)}}

happyReduce_123 = happySpecReduce_1  39# happyReduction_123
happyReduction_123 happy_x_1
	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
	happyIn45
		 (annotate happy_var_1 (List [])
	)}

happyReduce_124 = happySpecReduce_3  39# happyReduction_124
happyReduction_124 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut39 happy_x_1 of { happy_var_1 -> 
	case happyOut57 happy_x_2 of { happy_var_2 -> 
	case happyOut40 happy_x_3 of { happy_var_3 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_3 (List happy_var_2)
	)}}}

happyReduce_125 = happyReduce 5# 39# happyReduction_125
happyReduction_125 (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 happyOut57 happy_x_2 of { happy_var_2 -> 
	case happyOut63 happy_x_4 of { happy_var_4 -> 
	case happyOut40 happy_x_5 of { happy_var_5 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_5 (ListComp happy_var_2 happy_var_4)
	) `HappyStk` happyRest}}}}

happyReduce_126 = happyReduce 4# 39# happyReduction_126
happyReduction_126 (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 happyOut44 happy_x_2 of { happy_var_2 -> 
	case happyOut40 happy_x_4 of { happy_var_4 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_4 (ListEnumFrom happy_var_2)
	) `HappyStk` happyRest}}}

happyReduce_127 = happyReduce 5# 39# 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)
	 = case happyOut39 happy_x_1 of { happy_var_1 -> 
	case happyOut44 happy_x_2 of { happy_var_2 -> 
	case happyOut44 happy_x_4 of { happy_var_4 -> 
	case happyOut40 happy_x_5 of { happy_var_5 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_5 (ListEnumFromTo happy_var_2 happy_var_4)
	) `HappyStk` happyRest}}}}

happyReduce_128 = happyReduce 6# 39# happyReduction_128
happyReduction_128 (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 happyOut39 happy_x_1 of { happy_var_1 -> 
	case happyOut44 happy_x_2 of { happy_var_2 -> 
	case happyOut63 happy_x_5 of { happy_var_5 -> 
	case happyOut40 happy_x_6 of { happy_var_6 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_6 (ListEnumFromComp happy_var_2 happy_var_5)
	) `HappyStk` happyRest}}}}

happyReduce_129 = happyReduce 7# 39# happyReduction_129
happyReduction_129 (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 happyOut39 happy_x_1 of { happy_var_1 -> 
	case happyOut44 happy_x_2 of { happy_var_2 -> 
	case happyOut44 happy_x_4 of { happy_var_4 -> 
	case happyOut63 happy_x_6 of { happy_var_6 -> 
	case happyOut40 happy_x_7 of { happy_var_7 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_7 (ListEnumFromToComp happy_var_2 happy_var_4 happy_var_6)
	) `HappyStk` happyRest}}}}}

happyReduce_130 = happySpecReduce_3  39# happyReduction_130
happyReduction_130 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut44 happy_x_1 of { happy_var_1 -> 
	case happyOut44 happy_x_3 of { happy_var_3 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_3 (Concat happy_var_1 happy_var_3)
	)}}

happyReduce_131 = happySpecReduce_2  39# happyReduction_131
happyReduction_131 happy_x_2
	happy_x_1
	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
	case happyOut44 happy_x_2 of { happy_var_2 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_2 (ListLength happy_var_2)
	)}}

happyReduce_132 = happySpecReduce_3  39# happyReduction_132
happyReduction_132 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
	case happyOut57 happy_x_2 of { happy_var_2 -> 
	case happyOutTok happy_x_3 of { happy_var_3 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_3 (Set happy_var_2)
	)}}}

happyReduce_133 = happySpecReduce_3  39# happyReduction_133
happyReduction_133 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
	case happyOut59 happy_x_2 of { happy_var_2 -> 
	case happyOutTok happy_x_3 of { happy_var_3 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_3 (Map happy_var_2)
	)}}}

happyReduce_134 = happyReduce 5# 39# happyReduction_134
happyReduction_134 (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 happyOut57 happy_x_2 of { happy_var_2 -> 
	case happyOut63 happy_x_4 of { happy_var_4 -> 
	case happyOutTok happy_x_5 of { happy_var_5 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_5 (SetComp happy_var_2 happy_var_4)
	) `HappyStk` happyRest}}}}

happyReduce_135 = happyReduce 4# 39# happyReduction_135
happyReduction_135 (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 happyOut44 happy_x_2 of { happy_var_2 -> 
	case happyOutTok happy_x_4 of { happy_var_4 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_4 (SetEnumFrom happy_var_2)
	) `HappyStk` happyRest}}}

happyReduce_136 = happyReduce 5# 39# happyReduction_136
happyReduction_136 (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 happyOut44 happy_x_2 of { happy_var_2 -> 
	case happyOut44 happy_x_4 of { happy_var_4 -> 
	case happyOutTok happy_x_5 of { happy_var_5 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_5 (SetEnumFromTo happy_var_2 happy_var_4)
	) `HappyStk` happyRest}}}}

happyReduce_137 = happyReduce 6# 39# happyReduction_137
happyReduction_137 (happy_x_6 `HappyStk`
	happy_x_5 `HappyStk`
	happy_x_4 `HappyStk`
	happy_x_3 `HappyStk`
	happy_x_2 `HappyStk`
	happy_x_1 `HappyStk`
	happyRest)
	 = case happyOutTok happy_x_1 of { happy_var_1 -> 
	case happyOut44 happy_x_2 of { happy_var_2 -> 
	case happyOut63 happy_x_5 of { happy_var_5 -> 
	case happyOutTok happy_x_6 of { happy_var_6 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_6 (SetEnumFromComp happy_var_2 happy_var_5)
	) `HappyStk` happyRest}}}}

happyReduce_138 = happyReduce 7# 39# happyReduction_138
happyReduction_138 (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 { happy_var_1 -> 
	case happyOut44 happy_x_2 of { happy_var_2 -> 
	case happyOut44 happy_x_4 of { happy_var_4 -> 
	case happyOut63 happy_x_6 of { happy_var_6 -> 
	case happyOutTok happy_x_7 of { happy_var_7 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_7 (SetEnumFromToComp happy_var_2 happy_var_4 happy_var_6)
	) `HappyStk` happyRest}}}}}

happyReduce_139 = happySpecReduce_3  39# happyReduction_139
happyReduction_139 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
	case happyOut57 happy_x_2 of { happy_var_2 -> 
	case happyOutTok happy_x_3 of { happy_var_3 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_3 (SetEnum happy_var_2)
	)}}}

happyReduce_140 = happyReduce 5# 39# happyReduction_140
happyReduction_140 (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 happyOut57 happy_x_2 of { happy_var_2 -> 
	case happyOut63 happy_x_4 of { happy_var_4 -> 
	case happyOutTok happy_x_5 of { happy_var_5 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_5 (SetEnumComp happy_var_2 happy_var_4)
	) `HappyStk` happyRest}}}}

happyReduce_141 = happySpecReduce_1  39# happyReduction_141
happyReduction_141 happy_x_1
	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
	happyIn45
		 (liftLoc happy_var_1 (ExpPatWildCard)
	)}

happyReduce_142 = happySpecReduce_3  39# happyReduction_142
happyReduction_142 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut44 happy_x_1 of { happy_var_1 -> 
	case happyOut44 happy_x_3 of { happy_var_3 -> 
	happyIn45
		 (liftLoc happy_var_1 (ExpPatDoublePattern happy_var_1 happy_var_3)
	)}}

happyReduce_143 = happyReduce 4# 39# happyReduction_143
happyReduction_143 (happy_x_4 `HappyStk`
	happy_x_3 `HappyStk`
	happy_x_2 `HappyStk`
	happy_x_1 `HappyStk`
	happyRest)
	 = case happyOut44 happy_x_1 of { happy_var_1 -> 
	case happyOut53 happy_x_2 of { happy_var_2 -> 
	case happyOut44 happy_x_4 of { happy_var_4 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_4 (Prefix happy_var_1 happy_var_2 happy_var_4)
	) `HappyStk` happyRest}}}

happyReduce_144 = happySpecReduce_3  39# happyReduction_144
happyReduction_144 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut44 happy_x_1 of { happy_var_1 -> 
	case happyOut44 happy_x_3 of { happy_var_3 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_3 (Prefix happy_var_1 [] happy_var_3)
	)}}

happyReduce_145 = happySpecReduce_3  39# happyReduction_145
happyReduction_145 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut44 happy_x_1 of { happy_var_1 -> 
	case happyOut44 happy_x_3 of { happy_var_3 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_3 (ExternalChoice happy_var_1 happy_var_3)
	)}}

happyReduce_146 = happySpecReduce_3  39# happyReduction_146
happyReduction_146 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut44 happy_x_1 of { happy_var_1 -> 
	case happyOut44 happy_x_3 of { happy_var_3 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_3 (Hiding happy_var_1 happy_var_3)
	)}}

happyReduce_147 = happySpecReduce_3  39# happyReduction_147
happyReduction_147 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut44 happy_x_1 of { happy_var_1 -> 
	case happyOut44 happy_x_3 of { happy_var_3 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_3 (InternalChoice happy_var_1 happy_var_3)
	)}}

happyReduce_148 = happySpecReduce_3  39# happyReduction_148
happyReduction_148 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut44 happy_x_1 of { happy_var_1 -> 
	case happyOut44 happy_x_3 of { happy_var_3 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_3 (Interleave happy_var_1 happy_var_3)
	)}}

happyReduce_149 = happyReduce 5# 39# happyReduction_149
happyReduction_149 (happy_x_5 `HappyStk`
	happy_x_4 `HappyStk`
	happy_x_3 `HappyStk`
	happy_x_2 `HappyStk`
	happy_x_1 `HappyStk`
	happyRest)
	 = case happyOut44 happy_x_1 of { happy_var_1 -> 
	case happyOut44 happy_x_3 of { happy_var_3 -> 
	case happyOut44 happy_x_5 of { happy_var_5 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_5 (GenParallel happy_var_1 happy_var_3 happy_var_5)
	) `HappyStk` happyRest}}}

happyReduce_150 = happyReduce 7# 39# happyReduction_150
happyReduction_150 (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 happyOut44 happy_x_1 of { happy_var_1 -> 
	case happyOut44 happy_x_3 of { happy_var_3 -> 
	case happyOut44 happy_x_5 of { happy_var_5 -> 
	case happyOut44 happy_x_7 of { happy_var_7 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_7 (AlphaParallel happy_var_1 happy_var_3 happy_var_5 happy_var_7)
	) `HappyStk` happyRest}}}}

happyReduce_151 = happySpecReduce_3  39# happyReduction_151
happyReduction_151 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut44 happy_x_1 of { happy_var_1 -> 
	case happyOut44 happy_x_3 of { happy_var_3 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_3 (Interrupt happy_var_1 happy_var_3)
	)}}

happyReduce_152 = happyReduce 5# 39# happyReduction_152
happyReduction_152 (happy_x_5 `HappyStk`
	happy_x_4 `HappyStk`
	happy_x_3 `HappyStk`
	happy_x_2 `HappyStk`
	happy_x_1 `HappyStk`
	happyRest)
	 = case happyOut44 happy_x_1 of { happy_var_1 -> 
	case happyOut44 happy_x_3 of { happy_var_3 -> 
	case happyOut44 happy_x_5 of { happy_var_5 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_5 (Exception happy_var_1 happy_var_3 happy_var_5)
	) `HappyStk` happyRest}}}

happyReduce_153 = happySpecReduce_3  39# happyReduction_153
happyReduction_153 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut44 happy_x_1 of { happy_var_1 -> 
	case happyOut44 happy_x_3 of { happy_var_3 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_3 (SlidingChoice happy_var_1 happy_var_3)
	)}}

happyReduce_154 = happySpecReduce_3  39# happyReduction_154
happyReduction_154 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut44 happy_x_1 of { happy_var_1 -> 
	case happyOut44 happy_x_3 of { happy_var_3 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_3 (SequentialComp happy_var_1 happy_var_3)
	)}}

happyReduce_155 = happySpecReduce_3  39# happyReduction_155
happyReduction_155 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut44 happy_x_1 of { happy_var_1 -> 
	case happyOut44 happy_x_3 of { happy_var_3 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_3 (GuardedExp happy_var_1 happy_var_3)
	)}}

happyReduce_156 = happyReduce 5# 39# 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)
	 = case happyOut44 happy_x_1 of { happy_var_1 -> 
	case happyOut44 happy_x_3 of { happy_var_3 -> 
	case happyOut44 happy_x_5 of { happy_var_5 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_5 (SynchronisingExternalChoice happy_var_1 happy_var_3 happy_var_5)
	) `HappyStk` happyRest}}}

happyReduce_157 = happyReduce 5# 39# happyReduction_157
happyReduction_157 (happy_x_5 `HappyStk`
	happy_x_4 `HappyStk`
	happy_x_3 `HappyStk`
	happy_x_2 `HappyStk`
	happy_x_1 `HappyStk`
	happyRest)
	 = case happyOut44 happy_x_1 of { happy_var_1 -> 
	case happyOut44 happy_x_3 of { happy_var_3 -> 
	case happyOut44 happy_x_5 of { happy_var_5 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_5 (SynchronisingInterrupt happy_var_1 happy_var_3 happy_var_5)
	) `HappyStk` happyRest}}}

happyReduce_158 = happyReduce 5# 39# happyReduction_158
happyReduction_158 (happy_x_5 `HappyStk`
	happy_x_4 `HappyStk`
	happy_x_3 `HappyStk`
	happy_x_2 `HappyStk`
	happy_x_1 `HappyStk`
	happyRest)
	 = case happyOut44 happy_x_1 of { happy_var_1 -> 
	case happyOut48 happy_x_3 of { happy_var_3 -> 
	case happyOut61 happy_x_4 of { happy_var_4 -> 
	case happyOutTok happy_x_5 of { happy_var_5 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_5 (Rename happy_var_1 happy_var_3 happy_var_4)
	) `HappyStk` happyRest}}}}

happyReduce_159 = happyReduce 6# 39# happyReduction_159
happyReduction_159 (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 happyOut44 happy_x_1 of { happy_var_1 -> 
	case happyOut51 happy_x_3 of { happy_var_3 -> 
	case happyOut61 happy_x_4 of { happy_var_4 -> 
	case happyOut44 happy_x_6 of { happy_var_6 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_6 (LinkParallel happy_var_1 happy_var_3 happy_var_4 happy_var_6)
	) `HappyStk` happyRest}}}}

happyReduce_160 = happyReduce 4# 39# happyReduction_160
happyReduction_160 (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 happyOut63 happy_x_2 of { happy_var_2 -> 
	case happyOut44 happy_x_4 of { happy_var_4 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_4 (ReplicatedInterleave happy_var_2 happy_var_4)
	) `HappyStk` happyRest}}}

happyReduce_161 = happyReduce 4# 39# happyReduction_161
happyReduction_161 (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 happyOut63 happy_x_2 of { happy_var_2 -> 
	case happyOut44 happy_x_4 of { happy_var_4 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_4 (ReplicatedExternalChoice happy_var_2 happy_var_4)
	) `HappyStk` happyRest}}}

happyReduce_162 = happyReduce 4# 39# happyReduction_162
happyReduction_162 (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 happyOut63 happy_x_2 of { happy_var_2 -> 
	case happyOut44 happy_x_4 of { happy_var_4 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_4 (ReplicatedInternalChoice happy_var_2 happy_var_4)
	) `HappyStk` happyRest}}}

happyReduce_163 = happyReduce 7# 39# happyReduction_163
happyReduction_163 (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 { happy_var_1 -> 
	case happyOut63 happy_x_2 of { happy_var_2 -> 
	case happyOut44 happy_x_5 of { happy_var_5 -> 
	case happyOut44 happy_x_7 of { happy_var_7 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_7 (ReplicatedAlphaParallel happy_var_2 happy_var_5 happy_var_7)
	) `HappyStk` happyRest}}}}

happyReduce_164 = happyReduce 6# 39# happyReduction_164
happyReduction_164 (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 happyOut44 happy_x_2 of { happy_var_2 -> 
	case happyOut63 happy_x_4 of { happy_var_4 -> 
	case happyOut44 happy_x_6 of { happy_var_6 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_6 (ReplicatedParallel happy_var_2 happy_var_4 happy_var_6)
	) `HappyStk` happyRest}}}}

happyReduce_165 = happyReduce 7# 39# happyReduction_165
happyReduction_165 (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 { happy_var_1 -> 
	case happyOut51 happy_x_2 of { happy_var_2 -> 
	case happyOut61 happy_x_3 of { happy_var_3 -> 
	case happyOut63 happy_x_5 of { happy_var_5 -> 
	case happyOut44 happy_x_7 of { happy_var_7 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_7 (ReplicatedLinkParallel happy_var_2 happy_var_3 happy_var_5 happy_var_7)
	) `HappyStk` happyRest}}}}}

happyReduce_166 = happyReduce 4# 39# happyReduction_166
happyReduction_166 (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 happyOut63 happy_x_2 of { happy_var_2 -> 
	case happyOut44 happy_x_4 of { happy_var_4 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_4 (ReplicatedSequentialComp happy_var_2 happy_var_4)
	) `HappyStk` happyRest}}}

happyReduce_167 = happyReduce 6# 39# happyReduction_167
happyReduction_167 (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 happyOut44 happy_x_2 of { happy_var_2 -> 
	case happyOut63 happy_x_4 of { happy_var_4 -> 
	case happyOut44 happy_x_6 of { happy_var_6 -> 
	happyIn45
		 (annotate2 happy_var_1 happy_var_6 (ReplicatedSynchronisingExternalChoice
                                        happy_var_2 happy_var_4 happy_var_6)
	) `HappyStk` happyRest}}}}

happyReduce_168 = happySpecReduce_2  40# happyReduction_168
happyReduction_168 happy_x_2
	happy_x_1
	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
	case happyOut44 happy_x_2 of { happy_var_2 -> 
	happyIn46
		 (annotate2 happy_var_1 happy_var_2 (Input (convPat happy_var_2) Nothing)
	)}}

happyReduce_169 = happyReduce 4# 40# happyReduction_169
happyReduction_169 (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 happyOut44 happy_x_2 of { happy_var_2 -> 
	case happyOut44 happy_x_4 of { happy_var_4 -> 
	happyIn46
		 (annotate2 happy_var_1 happy_var_4 (Input (convPat happy_var_2) (Just (checkExp happy_var_4)))
	) `HappyStk` happyRest}}}

happyReduce_170 = happySpecReduce_2  40# happyReduction_170
happyReduction_170 happy_x_2
	happy_x_1
	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
	case happyOut44 happy_x_2 of { happy_var_2 -> 
	happyIn46
		 (annotate2 happy_var_1 happy_var_2 (NonDetInput (convPat happy_var_2) Nothing)
	)}}

happyReduce_171 = happyReduce 4# 40# happyReduction_171
happyReduction_171 (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 happyOut44 happy_x_2 of { happy_var_2 -> 
	case happyOut44 happy_x_4 of { happy_var_4 -> 
	happyIn46
		 (annotate2 happy_var_1 happy_var_4 (NonDetInput (convPat happy_var_2) (Just (checkExp happy_var_4)))
	) `HappyStk` happyRest}}}

happyReduce_172 = happySpecReduce_2  40# happyReduction_172
happyReduction_172 happy_x_2
	happy_x_1
	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
	case happyOut44 happy_x_2 of { happy_var_2 -> 
	happyIn46
		 (annotate2 happy_var_1 happy_var_2 (Output (checkExp happy_var_2))
	)}}

happyReduce_173 = happySpecReduce_3  41# happyReduction_173
happyReduction_173 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut41 happy_x_1 of { happy_var_1 -> 
	case happyOut41 happy_x_3 of { happy_var_3 -> 
	happyIn47
		 ((happy_var_1, happy_var_3)
	)}}

happyReduce_174 = happySpecReduce_1  42# happyReduction_174
happyReduction_174 happy_x_1
	 =  case happyOut49 happy_x_1 of { happy_var_1 -> 
	happyIn48
		 (reverse happy_var_1
	)}

happyReduce_175 = happySpecReduce_1  43# happyReduction_175
happyReduction_175 happy_x_1
	 =  case happyOut47 happy_x_1 of { happy_var_1 -> 
	happyIn49
		 ([happy_var_1]
	)}

happyReduce_176 = happySpecReduce_3  43# happyReduction_176
happyReduction_176 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut49 happy_x_1 of { happy_var_1 -> 
	case happyOut47 happy_x_3 of { happy_var_3 -> 
	happyIn49
		 (happy_var_3:happy_var_1
	)}}

happyReduce_177 = happySpecReduce_3  44# happyReduction_177
happyReduction_177 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut41 happy_x_1 of { happy_var_1 -> 
	case happyOut41 happy_x_3 of { happy_var_3 -> 
	happyIn50
		 ((happy_var_1, happy_var_3)
	)}}

happyReduce_178 = happySpecReduce_1  45# happyReduction_178
happyReduction_178 happy_x_1
	 =  case happyOut52 happy_x_1 of { happy_var_1 -> 
	happyIn51
		 (reverse happy_var_1
	)}

happyReduce_179 = happySpecReduce_1  46# happyReduction_179
happyReduction_179 happy_x_1
	 =  case happyOut50 happy_x_1 of { happy_var_1 -> 
	happyIn52
		 ([happy_var_1]
	)}

happyReduce_180 = happySpecReduce_3  46# happyReduction_180
happyReduction_180 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut52 happy_x_1 of { happy_var_1 -> 
	case happyOut50 happy_x_3 of { happy_var_3 -> 
	happyIn52
		 (happy_var_3:happy_var_1
	)}}

happyReduce_181 = happySpecReduce_1  47# happyReduction_181
happyReduction_181 happy_x_1
	 =  case happyOut54 happy_x_1 of { happy_var_1 -> 
	happyIn53
		 (reverse happy_var_1
	)}

happyReduce_182 = happySpecReduce_1  48# happyReduction_182
happyReduction_182 happy_x_1
	 =  case happyOut46 happy_x_1 of { happy_var_1 -> 
	happyIn54
		 ([happy_var_1]
	)}

happyReduce_183 = happySpecReduce_2  48# happyReduction_183
happyReduction_183 happy_x_2
	happy_x_1
	 =  case happyOut54 happy_x_1 of { happy_var_1 -> 
	case happyOut46 happy_x_2 of { happy_var_2 -> 
	happyIn54
		 (happy_var_2:happy_var_1
	)}}

happyReduce_184 = happySpecReduce_3  49# happyReduction_184
happyReduction_184 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut44 happy_x_1 of { happy_var_1 -> 
	case happyOut58 happy_x_3 of { happy_var_3 -> 
	happyIn55
		 (happy_var_1:(reverse happy_var_3)
	)}}

happyReduce_185 = happySpecReduce_1  50# happyReduction_185
happyReduction_185 happy_x_1
	 =  case happyOut58 happy_x_1 of { happy_var_1 -> 
	happyIn56
		 (reverse happy_var_1
	)}

happyReduce_186 = happySpecReduce_0  51# happyReduction_186
happyReduction_186  =  happyIn57
		 ([]
	)

happyReduce_187 = happySpecReduce_1  51# happyReduction_187
happyReduction_187 happy_x_1
	 =  case happyOut58 happy_x_1 of { happy_var_1 -> 
	happyIn57
		 (reverse happy_var_1
	)}

happyReduce_188 = happySpecReduce_3  52# happyReduction_188
happyReduction_188 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut58 happy_x_1 of { happy_var_1 -> 
	case happyOut44 happy_x_3 of { happy_var_3 -> 
	happyIn58
		 (happy_var_3:happy_var_1
	)}}

happyReduce_189 = happySpecReduce_1  52# happyReduction_189
happyReduction_189 happy_x_1
	 =  case happyOut44 happy_x_1 of { happy_var_1 -> 
	happyIn58
		 ([happy_var_1]
	)}

happyReduce_190 = happySpecReduce_0  53# happyReduction_190
happyReduction_190  =  happyIn59
		 ([]
	)

happyReduce_191 = happySpecReduce_1  53# happyReduction_191
happyReduction_191 happy_x_1
	 =  case happyOut60 happy_x_1 of { happy_var_1 -> 
	happyIn59
		 (reverse happy_var_1
	)}

happyReduce_192 = happyReduce 5# 54# happyReduction_192
happyReduction_192 (happy_x_5 `HappyStk`
	happy_x_4 `HappyStk`
	happy_x_3 `HappyStk`
	happy_x_2 `HappyStk`
	happy_x_1 `HappyStk`
	happyRest)
	 = case happyOut60 happy_x_1 of { happy_var_1 -> 
	case happyOut44 happy_x_3 of { happy_var_3 -> 
	case happyOut44 happy_x_5 of { happy_var_5 -> 
	happyIn60
		 ((happy_var_3, happy_var_5):happy_var_1
	) `HappyStk` happyRest}}}

happyReduce_193 = happySpecReduce_3  54# happyReduction_193
happyReduction_193 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut44 happy_x_1 of { happy_var_1 -> 
	case happyOut44 happy_x_3 of { happy_var_3 -> 
	happyIn60
		 ([(happy_var_1, happy_var_3)]
	)}}

happyReduce_194 = happySpecReduce_0  55# happyReduction_194
happyReduction_194  =  happyIn61
		 ([]
	)

happyReduce_195 = happySpecReduce_2  55# happyReduction_195
happyReduction_195 happy_x_2
	happy_x_1
	 =  case happyOut63 happy_x_2 of { happy_var_2 -> 
	happyIn61
		 (happy_var_2
	)}

happyReduce_196 = happySpecReduce_3  56# happyReduction_196
happyReduction_196 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut37 happy_x_1 of { happy_var_1 -> 
	case happyOut44 happy_x_3 of { happy_var_3 -> 
	happyIn62
		 (annotate2 happy_var_1 happy_var_3 (Generator happy_var_1 happy_var_3)
	)}}

happyReduce_197 = happySpecReduce_3  56# happyReduction_197
happyReduction_197 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut37 happy_x_1 of { happy_var_1 -> 
	case happyOut44 happy_x_3 of { happy_var_3 -> 
	happyIn62
		 (annotate2 happy_var_1 happy_var_3 (Generator happy_var_1 happy_var_3)
	)}}

happyReduce_198 = happySpecReduce_1  56# happyReduction_198
happyReduction_198 happy_x_1
	 =  case happyOut44 happy_x_1 of { happy_var_1 -> 
	happyIn62
		 (annotate happy_var_1 (Qualifier happy_var_1)
	)}

happyReduce_199 = happySpecReduce_1  57# happyReduction_199
happyReduction_199 happy_x_1
	 =  case happyOut64 happy_x_1 of { happy_var_1 -> 
	happyIn63
		 (reverse happy_var_1
	)}

happyReduce_200 = happySpecReduce_3  58# happyReduction_200
happyReduction_200 happy_x_3
	happy_x_2
	happy_x_1
	 =  case happyOut64 happy_x_1 of { happy_var_1 -> 
	case happyOut62 happy_x_3 of { happy_var_3 -> 
	happyIn64
		 (happy_var_3:happy_var_1
	)}}

happyReduce_201 = happySpecReduce_1  58# happyReduction_201
happyReduction_201 happy_x_1
	 =  case happyOut62 happy_x_1 of { happy_var_1 -> 
	happyIn64
		 ([happy_var_1]
	)}

happyNewToken action sts stk
	= getNextTokenWrapper(\tk -> 
	let cont i = happyDoAction i tk action sts stk in
	case tk of {
	L _ TEOF -> happyDoAction 99# tk action sts stk;
	L _ (TInteger _) -> cont 1#;
	L _ (TChar _) -> cont 2#;
	L _ (TString _) -> cont 3#;
	L _ (TIdent _) -> cont 4#;
	L _ TNewLine -> cont 5#;
	L _ (TPrint _) -> cont 6#;
	L _ TFalse -> cont 7#;
	L _ TTrue -> cont 8#;
	L _ TDefineEqual -> cont 9#;
	L _ TComma -> cont 10#;
	L _ TDot -> cont 11#;
	L _ TQuestionMark -> cont 12#;
	L _ TDollar -> cont 13#;
	L _ TExclamationMark -> cont 14#;
	L _ TDoubleDot -> cont 15#;
	L _ TColon -> cont 16#;
	L _ TDrawnFrom -> cont 17#;
	L _ TTie -> cont 18#;
	L _ TPipe -> cont 19#;
	L _ TDoubleAt -> cont 20#;
	L _ TWildCard -> cont 21#;
	L _ TIf -> cont 22#;
	L _ TThen -> cont 23#;
	L _ TElse -> cont 24#;
	L _ TLet -> cont 25#;
	L _ TWithin -> cont 26#;
	L _ TBackSlash -> cont 27#;
	L _ TLambdaDot -> cont 28#;
	L _ TChannel -> cont 29#;
	L _ TDataType -> cont 30#;
	L _ TSubType -> cont 31#;
	L _ TExternal -> cont 32#;
	L _ TTransparent -> cont 33#;
	L _ TNameType -> cont 34#;
	L _ TModule -> cont 35#;
	L _ TExports -> cont 36#;
	L _ TEndModule -> cont 37#;
	L _ TInstance -> cont 38#;
	L _ TScope -> cont 39#;
	L _ TTimed -> cont 40#;
	L _ TOfType -> cont 41#;
	L _ TYield -> cont 42#;
	L _ TYieldStar -> cont 43#;
	L _ TAssert -> cont 44#;
	L _ TDeadlockFree -> cont 45#;
	L _ TLivelockFree -> cont 46#;
	L _ TDivergenceFree -> cont 47#;
	L _ TDeterministic -> cont 48#;
	L _ TTauPriority -> cont 49#;
	L _ (TRefines _) -> cont 50#;
	L _ (TModel _) -> cont 51#;
	L _ TNot -> cont 52#;
	L _ TAssertNot -> cont 53#;
	L _ TAnd -> cont 54#;
	L _ TOr -> cont 55#;
	L _ TEq -> cont 56#;
	L _ TNotEq -> cont 57#;
	L _ TLtEq -> cont 58#;
	L _ TGtEq -> cont 59#;
	L _ TEmptySeq -> cont 60#;
	L _ TLt -> cont 61#;
	L _ TGt -> cont 62#;
	L _ TCloseSeq -> cont 63#;
	L _ TPlus -> cont 64#;
	L _ TMinus -> cont 65#;
	L _ TTimes -> cont 66#;
	L _ TDivide -> cont 67#;
	L _ TMod -> cont 68#;
	L _ TConcat -> cont 69#;
	L _ THash -> cont 70#;
	L _ TLParen -> cont 71#;
	L _ TRParen -> cont 72#;
	L _ TLBrace -> cont 73#;
	L _ TRBrace -> cont 74#;
	L _ TLMap -> cont 75#;
	L _ TRMap -> cont 76#;
	L _ TLPipeBrace -> cont 77#;
	L _ TRPipeBrace -> cont 78#;
	L _ TLDoubleSqBracket -> cont 79#;
	L _ TRDoubleSqBracket -> cont 80#;
	L _ TLPipeSqBracket -> cont 81#;
	L _ TRPipeSqBracket -> cont 82#;
	L _ TLSqBracket -> cont 83#;
	L _ TRSqBracket -> cont 84#;
	L _ TExtChoice -> cont 85#;
	L _ TIntChoice -> cont 86#;
	L _ TInterleave -> cont 87#;
	L _ TPrefix -> cont 88#;
	L _ TInterrupt -> cont 89#;
	L _ TSlidingChoice -> cont 90#;
	L _ TRException -> cont 91#;
	L _ TParallel -> cont 92#;
	L _ TSemiColon -> cont 93#;
	L _ TGuard -> cont 94#;
	L _ TLSyncExtChoice -> cont 95#;
	L _ TRSyncExtChoice -> cont 96#;
	L _ TLSyncInterrupt -> cont 97#;
	L _ TRSyncInterrupt -> cont 98#;
	_ -> happyError' tk
	})

happyError_ 99# tk = happyError' tk
happyError_ _ tk = happyError' tk

happyThen :: () => ParseMonad a -> (a -> ParseMonad b) -> ParseMonad b
happyThen = (>>=)
happyReturn :: () => a -> ParseMonad a
happyReturn = (return)
happyThen1 = happyThen
happyReturn1 :: () => a -> ParseMonad a
happyReturn1 = happyReturn
happyError' :: () => (LToken) -> ParseMonad a
happyError' tk = parseError tk

parseFile_ = happySomeParser where
  happySomeParser = happyThen (happyParse 0#) (\x -> happyReturn (happyOut6 x))

parseInteractiveStmt_ = happySomeParser where
  happySomeParser = happyThen (happyParse 1#) (\x -> happyReturn (happyOut7 x))

parseExpression_ = happySomeParser where
  happySomeParser = happyThen (happyParse 2#) (\x -> happyReturn (happyOut41 x))

happySeq = happyDontSeq


combineDecls :: [PDecl] -> [PDecl]
combineDecls [] = []
combineDecls ((An loc1 b (FunBind n ms Nothing)):
            (An loc2 c (FunBind n' ms' Nothing)):ds)
        | n == n' && srcSpanFile loc1 == srcSpanFile loc2 =
    combineDecls $
        (An (combineSpans loc1 loc2) b (FunBind n (ms++ms') Nothing)):ds
combineDecls (d:ds) = d:combineDecls ds

constraintForName :: SrcSpan -> String -> Constraint
constraintForName _ "Eq" = CEq
constraintForName _ "Ord" = COrd
constraintForName _ "Inputable" = CInputable
constraintForName _ "Set" = CSet
constraintForName _ "Yieldable" = CYieldable
constraintForName loc s = throwSourceError [unknownConstraintError s loc]

attachTypeAnnotations :: [PDecl] -> [PDecl]
attachTypeAnnotations ds =
    let
        extractTypeAnnotations :: Decl UnRenamedName ->
            [(UnRenamedName, PSTypeScheme)]
        extractTypeAnnotations (ParsedTypeAnnotation ns ta) =
            [(n, ta) | n <- ns]
        extractTypeAnnotations _ = []

        extractedAnnotations =
            concatMap (extractTypeAnnotations . unAnnotate) ds

        nameLocs :: [(UnRenamedName, SrcSpan)]
        nameLocs = [(n, loc x) | (n, x) <- extractedAnnotations]

        locsByName :: [(UnRenamedName, [SrcSpan])]
        locsByName =
            map (\ nss -> (fst (head nss), map snd nss)) $
            groupBy (\x y -> fst x == fst y) $
            sortBy (\ x y -> compare (fst x) (fst y)) nameLocs

        dupeErrors = concatMap (\ (n, locs) ->
            case locs of
                [_] -> []
                _ -> [ambiguousTypeAnnotationsError n locs]
            ) locsByName

        nameForDecl  (An _ _ (FunBind n _ _)) = [n]
        nameForDecl (An _ _ (PatBind (An _ _ (PVar n)) _ _)) = [n]
        nameForDecl _ = []

        allNames = nub $ sort $ map fst nameLocs
        usedNames = nub $ sort $ concatMap nameForDecl ds
        unusedNames = allNames \\ usedNames
        unusedErrors = map (\ n ->
                case lookup n nameLocs of
                    Just loc -> unusedTypeAnnotationsError n loc
                    _ -> panic "attachTypeAnnotations: logic error"
            ) unusedNames

        typeAnMap = M.fromList extractedAnnotations
            
        annotationForName n =
            M.findWithDefault (panic "attachedTypeAnnotations: invalid state")
                n typeAnMap

        annotateDecl :: PDecl -> [PDecl]
        annotateDecl (An x y (FunBind n ms Nothing)) | M.member n typeAnMap =
            [An x y (FunBind n ms (Just $ annotationForName n))]
        annotateDecl (An x y (PatBind (p@(An _ _ (PVar n))) e Nothing))
                | M.member n typeAnMap =
            [An x y (PatBind p e (Just $ annotationForName n))]
        annotateDecl (An _ _ (ParsedTypeAnnotation _ _)) = []
        annotateDecl d = [d]
    in if length dupeErrors > 0 then
            throwSourceError dupeErrors
        else if length unusedErrors > 0 then
            throwSourceError unusedErrors
        else concatMap annotateDecl ds

convDecl :: PExp -> PExp -> ParseMonad PDecl
convDecl lhs rhs | srcSpanFile (loc lhs) /= srcSpanFile (loc rhs) =
    throwSourceError [definitionSpanFileError lhs rhs (loc lhs)]
convDecl (lhs @ (An loc1 b lhsexp)) (rhs @ (An loc2 d _)) = 
    let
        span = combineSpans loc1 loc2

        -- REMEMBER: needs to reverse pts
        getPats :: Exp UnRenamedName -> ([[PPat]], UnRenamedName)
        getPats (App f args) = 
                ((map convPat args):ps, n)
            where
                (ps, n) = getPats (unAnnotate f)
        getPats (Var n) = ([], n)
        
        convFunBind exp = 
                FunBind n [An span (dummyAnnotation) (Match (reverse ps) rhs)]
                    Nothing
            where
                (ps, n) = getPats exp

        convPatBind exp = PatBind (convPat exp) rhs Nothing
    in do
        symbTable <- freshPSymbolTable
        case lhsexp of
            App f args  -> return $ An span (Nothing, symbTable) (convFunBind lhsexp)
            _           -> return $ An span (Nothing, symbTable) (convPatBind lhs)

-- | Throws an error if a declaration that is not allowed inside a let 
-- expression is found.
checkLetDecls :: [PDecl] -> [PDecl]
checkLetDecls decls =
    if and (map checkDecl decls) then
        decls
    else panic "checkLetDecls: Invalid state."
    where
        checkDecl :: PDecl -> Bool
        checkDecl (anDecl@(An _ _ decl)) =
            let
                check (FunBind _ _ _) = True
                check (PatBind _ _ _) = True
                check (External a) = True
                check (Transparent a) = True
                check (TimedSection _ _ ds) = and (map checkDecl ds)
                -- We can't allow module instances as this would cause channels
                -- to be declared in let statements, which would lead to Events
                -- being hard to define
                -- check (ModuleInstance _ _ _ _ _) = True
                check _ = throwSourceError [invalidLetDeclarationErrorMessage anDecl]
            in check decl
    
checkModuleDecl :: PDecl -> PDecl
checkModuleDecl (anDecl@(An _ _ (Assert _))) =
    throwSourceError [invalidModuleDeclarationErrorMessage anDecl]
checkModuleDecl (anDecl@(An _ _ (PrintStatement _))) =
    throwSourceError [invalidModuleDeclarationErrorMessage anDecl]
checkModuleDecl (anDecl@(An x y (TimedSection a b ds))) =
    An x y (TimedSection a b (map checkModuleDecl ds))
checkModuleDecl d = d

checkTimedDecl :: PDecl -> PDecl
checkTimedDecl (anDecl@(An _ _ (PrintStatement _))) =
    throwSourceError [invalidTimedSectionDeclarationErrorMessage anDecl]
checkTimedDecl d = d

checkExp :: PExp -> PExp
-- Transform X \ Y ||| Z (which will have been parsed as X \ (Y ||| Z)) into
-- (X \ Y) ||| Z (and ditto for other parallel operators). Note that we cannot
-- do this using precedences, since we do want X ||| Y \ Z to bracket \ Z around
-- the whole of X ||| Y. Thus, we really need a context dependent precedence,
-- which happy doesn't have.
checkExp (An l1 an1 (Hiding e1 (An l2 an2 (Interleave e2 e3)))) =
    let
        e1' = checkExp e1
        e2' = checkExp e2
        e3' = checkExp e3
        -- The parallel's location is simply the whole expression
        lpar = l1
        lhide = combineSpans (loc e1') (loc e2')
    in An lpar an1 (Interleave (An lhide an2 (Hiding e1' e2')) e3')
checkExp (An l1 an1 (Hiding e1 (An l2 an2 (GenParallel e2 e3 e4)))) =
    let
        e1' = checkExp e1
        e2' = checkExp e2
        e3' = checkExp e3
        e4' = checkExp e4
        -- The parallel's location is simply the whole expression
        lpar = l1
        lhide = combineSpans (loc e1') (loc e2')
    in An lpar an1 (GenParallel (An lhide an2 (Hiding e1' e2')) e3' e4')
checkExp (An l1 an1 (Hiding e1 (An l2 an2 (AlphaParallel e2 e3 e4 e5)))) =
    let
        e1' = checkExp e1
        e2' = checkExp e2
        e3' = checkExp e3
        e4' = checkExp e4
        e5' = checkExp e5
        -- The parallel's location is simply the whole expression
        lpar = l1
        lhide = combineSpans (loc e1') (loc e2')
    in An lpar an1 (AlphaParallel (An lhide an2 (Hiding e1' e2')) e3' e4' e5')
checkExp (An l1 an1 (Hiding e1 (An l2 an2 (Exception e2 e3 e4)))) =
    let
        e1' = checkExp e1
        e2' = checkExp e2
        e3' = checkExp e3
        e4' = checkExp e4
        -- The parallel's location is simply the whole expression
        lpar = l1
        lhide = combineSpans (loc e1') (loc e2')
    in An lpar an1 (Exception (An lhide an2 (Hiding e1' e2')) e3' e4')
checkExp (An l1 an1 (Hiding e1 (An l2 an2 (InternalChoice e2 e3)))) =
    let
        e1' = checkExp e1
        e2' = checkExp e2
        e3' = checkExp e3
        -- The parallel's location is simply the whole expression
        lpar = l1
        lhide = combineSpans (loc e1') (loc e2')
    in An lpar an1 (InternalChoice (An lhide an2 (Hiding e1' e2')) e3')
checkExp (An l1 an1 (Hiding e1 (An l2 an2 (ExternalChoice e2 e3)))) =
    let
        e1' = checkExp e1
        e2' = checkExp e2
        e3' = checkExp e3
        -- The parallel's location is simply the whole expression
        lpar = l1
        lhide = combineSpans (loc e1') (loc e2')
    in An lpar an1 (ExternalChoice (An lhide an2 (Hiding e1' e2')) e3')
checkExp (An l1 an1 (Hiding e1 (An l2 an2 (Interrupt e2 e3)))) =
    let
        e1' = checkExp e1
        e2' = checkExp e2
        e3' = checkExp e3
        -- The parallel's location is simply the whole expression
        lpar = l1
        lhide = combineSpans (loc e1') (loc e2')
    in An lpar an1 (Interrupt (An lhide an2 (Hiding e1' e2')) e3')
checkExp (An l1 an1 (Hiding e1 (An l2 an2 (SlidingChoice e2 e3)))) =
    let
        e1' = checkExp e1
        e2' = checkExp e2
        e3' = checkExp e3
        -- The parallel's location is simply the whole expression
        lpar = l1
        lhide = combineSpans (loc e1') (loc e2')
    in An lpar an1 (SlidingChoice (An lhide an2 (Hiding e1' e2')) e3')
checkExp (An l1 an1 (Hiding e1 (An l2 an2 (SequentialComp e2 e3)))) =
    let
        e1' = checkExp e1
        e2' = checkExp e2
        e3' = checkExp e3
        -- The parallel's location is simply the whole expression
        lpar = l1
        lhide = combineSpans (loc e1') (loc e2')
    in An lpar an1 (SequentialComp (An lhide an2 (Hiding e1' e2')) e3')
checkExp (An l1 an1 (Hiding e1 (An l2 an2 (SynchronisingExternalChoice e2 e3 e4)))) =
    let
        e1' = checkExp e1
        e2' = checkExp e2
        e3' = checkExp e3
        e4' = checkExp e4
        -- The parallel's location is simply the whole expression
        lpar = l1
        lhide = combineSpans (loc e1') (loc e2')
    in An lpar an1 (SynchronisingExternalChoice (An lhide an2 (Hiding e1' e2')) e3' e4')
checkExp (An l1 an1 (Hiding e1 (An l2 an2 (SynchronisingInterrupt e2 e3 e4)))) =
    let
        e1' = checkExp e1
        e2' = checkExp e2
        e3' = checkExp e3
        e4' = checkExp e4
        -- The parallel's location is simply the whole expression
        lpar = l1
        lhide = combineSpans (loc e1') (loc e2')
    in An lpar an1 (SynchronisingInterrupt (An lhide an2 (Hiding e1' e2')) e3' e4')
checkExp (anExp@(An a b exp)) =
    let 
        check :: Exp UnRenamedName -> Exp UnRenamedName
        check (App e es) = App (checkExp e) (map checkExp es)
        check (BooleanBinaryOp op e1 e2) = BooleanBinaryOp op (checkExp e1) (checkExp e2)
        check (BooleanUnaryOp op e) = BooleanUnaryOp op (checkExp e)
        check (Concat e1 e2) = Concat (checkExp e1) (checkExp e2)
        check (DotApp e1 e2) = DotApp (checkExp e1) (checkExp e2)
        check (If e1 e2 e3) = If (checkExp e1) (checkExp e2) (checkExp e3)
        check (Lambda p e) = Lambda p (checkExp e)
        check (Let decls e) = Let decls (checkExp e)
        check (Lit lit) = Lit lit
        check (List es) = List (map checkExp es)
        check (ListComp es stmts) = ListComp (map checkExp es) stmts
        check (ListEnumFrom e) = ListEnumFrom (checkExp e)
        check (ListEnumFromTo e1 e2) = ListEnumFromTo (checkExp e1) (checkExp e2)
        check (ListEnumFromComp e1 stmts) = ListEnumFromComp (checkExp e1) stmts
        check (ListEnumFromToComp e1 e2 stmts) =
            ListEnumFromToComp (checkExp e1) (checkExp e2) stmts
        check (ListLength e) = ListLength (checkExp e)
        check (Map kvs) = Map (map (\ (k, v) -> (checkExp k, checkExp v)) kvs)
        check (MathsBinaryOp op e1 e2) = MathsBinaryOp op (checkExp e1) (checkExp e2)
        check (MathsUnaryOp op e) = MathsUnaryOp op (checkExp e)
        check (Paren e) = Paren (checkExp e)
        check (Set es) = Set (map checkExp es)
        check (SetComp es stmts) = SetComp (map checkExp es) stmts
        check (SetEnumFrom e) = SetEnumFrom (checkExp e)
        check (SetEnumFromTo e1 e2) = SetEnumFromTo (checkExp e1) (checkExp e2)
        check (SetEnumFromComp e1 stmts) = SetEnumFromComp (checkExp e1) stmts
        check (SetEnumFromToComp e1 e2 stmts) =
            SetEnumFromToComp (checkExp e1) (checkExp e2) stmts
        check (SetEnum es) = SetEnum (map checkExp es)
        -- We don't need to check inside stmts as they will have been checked
        -- upon creation
        check (SetEnumComp es stmts) = SetEnumComp (map checkExp es) stmts
        check (Tuple es) = Tuple (map checkExp es)
        check (Var qname) = Var qname

        check (AlphaParallel e1 e2 e3 e4) = 
            AlphaParallel (checkExp e1) (checkExp e2) (checkExp e3) (checkExp e4)
        check (Exception e1 e2 e3) = Exception (checkExp e1) (checkExp e2) (checkExp e3)
        check (ExternalChoice e1 e2) = ExternalChoice (checkExp e1) (checkExp e2)
        check (GenParallel e1 e2 e3) = GenParallel (checkExp e1) (checkExp e2) (checkExp e3)
        check (GuardedExp e1 e2) = GuardedExp (checkExp e1) (checkExp e2)
        check (Hiding e1 e2) = Hiding (checkExp e1) (checkExp e2)
        check (InternalChoice e1 e2) = InternalChoice (checkExp e1) (checkExp e2)
        check (Interrupt e1 e2) = Interrupt (checkExp e1) (checkExp e2)
        check (Interleave e1 e2) = Interleave (checkExp e1) (checkExp e2)
        check (LinkParallel e1 ties stmts e2) = 
            LinkParallel (checkExp e1) ties stmts (checkExp e2)
        check (Prefix e1 fields e2) = Prefix (checkExp e1) fields (checkExp e2)
        check (Rename e ties stmts) = Rename (checkExp e) ties stmts
        check (SequentialComp e1 e2) = SequentialComp (checkExp e1) (checkExp e2)
        check (SlidingChoice e1 e2) = SlidingChoice (checkExp e1) (checkExp e2)
        check (SynchronisingExternalChoice e1 e2 e3) =
            SynchronisingExternalChoice (checkExp e1) (checkExp e2) (checkExp e3)
        check (SynchronisingInterrupt e1 e2 e3) =
            SynchronisingInterrupt (checkExp e1) (checkExp e2) (checkExp e3)

        check (ReplicatedAlphaParallel stmts e1 e2) = 
            ReplicatedAlphaParallel stmts (checkExp e1) (checkExp e2)
        check (ReplicatedInterleave stmts e1) = ReplicatedInterleave stmts (checkExp e1)
        check (ReplicatedExternalChoice stmts e1) = ReplicatedExternalChoice stmts (checkExp e1)
        check (ReplicatedInternalChoice stmts e1) = ReplicatedInternalChoice stmts (checkExp e1)
        check (ReplicatedParallel e1 stmts e2) = 
            ReplicatedParallel (checkExp e1) stmts (checkExp e2)
        check (ReplicatedLinkParallel ties tiesStmts stmts e) = 
            ReplicatedLinkParallel ties tiesStmts stmts (checkExp e)
        check (ReplicatedSequentialComp stmts e1) = 
            ReplicatedSequentialComp stmts (checkExp e1)
        check (ReplicatedSynchronisingExternalChoice e1 stmts e3) =
            ReplicatedSynchronisingExternalChoice (checkExp e1) stmts
                (checkExp e3)
        
        check x = throwSourceError [invalidExpressionErrorMessage anExp]
    in
        An a b (check exp)

getFuncArgs :: PSType -> [PSType]
getFuncArgs (An _ _ (STParen s)) = [s]
getFuncArgs (An _ _ (STTuple ts)) = ts
getFuncArgs s = throwSourceError [invalidFunctionArgsErrorMessage s]

dotAppToList :: PExp -> [PExp]
dotAppToList (An a b exp) = 
    let 
        list :: Exp UnRenamedName -> [PExp]
        list (DotApp e1 e2) = (dotAppToList e1) ++ (dotAppToList e2)
        list x = [An a b x]
    in
        list exp

convPat :: PExp -> PPat
convPat (anExp@ (An a b exp)) = 
    let
        trans :: Exp UnRenamedName -> Pat UnRenamedName
        trans (Concat e1 e2) = PConcat (convPat e1) (convPat e2)
        trans (DotApp e1 e2) = PDotApp (convPat e1) (convPat e2)
        trans (List xs) = PList (map convPat xs)
        trans (Lit x) = PLit x
        trans (MathsUnaryOp Negate e) =
            case trans (unAnnotate e) of
                PLit (Int x) -> PLit (Int (-x))
                _ -> throwSourceError [invalidPatternErrorMessage anExp]
        trans (Set xs) = PSet (map convPat xs)
        trans (Paren x) = PParen (convPat x)
        trans (Tuple xs) = PTuple (map convPat xs)
        trans (Var x) = PVar x
        trans (ExpPatWildCard) = PWildCard
        trans (ExpPatDoublePattern e1 e2) = 
            PDoublePattern (convPat e1) (convPat e2)
        trans x = throwSourceError [invalidPatternErrorMessage anExp]
    in
        An a () (trans exp)

-- Helper function to get the contents of tokens
getInt (L _ (TInteger x)) = x
getChar (L _ (TChar c)) = c
getString (L _ (TString s)) = s
getName (L _ (TIdent x)) = x
getRefinesModel (L _ (TRefines x)) = x
getPropModel (L _ (TModel x)) = x
getPrintString (L _ (TPrint x)) = x

class Locatable a where
    getLoc :: a b -> SrcSpan
    unLoc :: a b -> b
    mkLoc :: SrcSpan -> b -> a b

instance Locatable Located where
    getLoc (L loc _) = loc
    unLoc (L _ b) = b
    mkLoc loc b = L loc b

instance Locatable (Annotated a) where
    getLoc (An loc _ _) = loc
    unLoc (An _ _ b) = b
    mkLoc loc b = An loc dummyAnnotation b

annotate :: (Locatable t1, Locatable t2) => t1 a -> b -> t2 b
annotate t1 b = mkLoc (getLoc t1) b

annotate2 :: 
    (Locatable t1, Locatable t2, Locatable t3) => t1 a -> t2 b -> c -> t3 c
annotate2 t1 t2 b = mkLoc (combineSpans (getLoc t1) (getLoc t2)) b
annotate2List :: 
    (Locatable t1, Locatable t2, Locatable t3) => t1 a -> [t2 b] -> c -> t3 c
annotate2List t1 t2 b = annotate2 t1 (last t2) b
annotate2List' :: 
    (Locatable t1, Locatable t2, Locatable t3) => [t1 a] -> t2 b -> c -> t3 c
annotate2List' t1 t2 b = annotate2 (last t1) t2 b

annotateWithSymbolTable 
    :: Annotated (Maybe SymbolTable, PSymbolTable) a -> ParseMonad (Annotated (Maybe SymbolTable, PSymbolTable) a)
annotateWithSymbolTable (An l _ a) = do
    symbTable <- freshPSymbolTable
    return $ An l (Nothing, symbTable) a

liftLoc :: (Locatable t1, Locatable t2) => t1 a -> b -> t2 b
liftLoc t1 b = mkLoc (getLoc t1) b

parseError :: LToken -> ParseMonad a
parseError tok = throwSourceError [parseErrorMessage tok]
{-# LINE 1 "templates/GenericTemplate.hs" #-}
{-# LINE 1 "templates/GenericTemplate.hs" #-}
{-# LINE 1 "<built-in>" #-}
{-# LINE 1 "<command-line>" #-}
{-# LINE 1 "templates/GenericTemplate.hs" #-}
-- Id: GenericTemplate.hs,v 1.26 2005/01/14 14:47:22 simonmar Exp 

{-# LINE 30 "templates/GenericTemplate.hs" #-}


data Happy_IntList = HappyCons Happy_GHC_Exts.Int# Happy_IntList





{-# LINE 51 "templates/GenericTemplate.hs" #-}

{-# LINE 61 "templates/GenericTemplate.hs" #-}

{-# LINE 70 "templates/GenericTemplate.hs" #-}

infixr 9 `HappyStk`
data HappyStk a = HappyStk a (HappyStk a)

-----------------------------------------------------------------------------
-- starting the parse

happyParse start_state = happyNewToken start_state notHappyAtAll notHappyAtAll

-----------------------------------------------------------------------------
-- Accepting the parse

-- If the current token is 0#, it means we've just accepted a partial
-- parse (a %partial parser).  We must ignore the saved token on the top of
-- the stack in this case.
happyAccept 0# tk st sts (_ `HappyStk` ans `HappyStk` _) =
	happyReturn1 ans
happyAccept j tk st sts (HappyStk ans _) = 
	(happyTcHack j (happyTcHack st)) (happyReturn1 ans)

-----------------------------------------------------------------------------
-- Arrays only: do the next action



happyDoAction i tk st
	= {- nothing -}


	  case action of
		0#		  -> {- nothing -}
				     happyFail i tk st
		-1# 	  -> {- nothing -}
				     happyAccept i tk st
		n | (n Happy_GHC_Exts.<# (0# :: Happy_GHC_Exts.Int#)) -> {- nothing -}

				     (happyReduceArr Happy_Data_Array.! rule) i tk st
				     where rule = (Happy_GHC_Exts.I# ((Happy_GHC_Exts.negateInt# ((n Happy_GHC_Exts.+# (1# :: Happy_GHC_Exts.Int#))))))
		n		  -> {- nothing -}


				     happyShift new_state i tk st
				     where (new_state) = (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#))
   where (off)    = indexShortOffAddr happyActOffsets st
         (off_i)  = (off Happy_GHC_Exts.+# i)
	 check  = if (off_i Happy_GHC_Exts.>=# (0# :: Happy_GHC_Exts.Int#))
			then (indexShortOffAddr happyCheck off_i Happy_GHC_Exts.==#  i)
			else False
         (action)
          | check     = indexShortOffAddr happyTable off_i
          | otherwise = indexShortOffAddr happyDefActions st

{-# LINE 130 "templates/GenericTemplate.hs" #-}


indexShortOffAddr (HappyA# arr) off =
	Happy_GHC_Exts.narrow16Int# i
  where
        i = Happy_GHC_Exts.word2Int# (Happy_GHC_Exts.or# (Happy_GHC_Exts.uncheckedShiftL# high 8#) low)
        high = Happy_GHC_Exts.int2Word# (Happy_GHC_Exts.ord# (Happy_GHC_Exts.indexCharOffAddr# arr (off' Happy_GHC_Exts.+# 1#)))
        low  = Happy_GHC_Exts.int2Word# (Happy_GHC_Exts.ord# (Happy_GHC_Exts.indexCharOffAddr# arr off'))
        off' = off Happy_GHC_Exts.*# 2#





data HappyAddr = HappyA# Happy_GHC_Exts.Addr#




-----------------------------------------------------------------------------
-- HappyState data type (not arrays)

{-# LINE 163 "templates/GenericTemplate.hs" #-}

-----------------------------------------------------------------------------
-- Shifting a token

happyShift new_state 0# tk st sts stk@(x `HappyStk` _) =
     let (i) = (case Happy_GHC_Exts.unsafeCoerce# x of { (Happy_GHC_Exts.I# (i)) -> i }) in
--     trace "shifting the error token" $
     happyDoAction i tk new_state (HappyCons (st) (sts)) (stk)

happyShift new_state i tk st sts stk =
     happyNewToken new_state (HappyCons (st) (sts)) ((happyInTok (tk))`HappyStk`stk)

-- happyReduce is specialised for the common cases.

happySpecReduce_0 i fn 0# tk st sts stk
     = happyFail 0# tk st sts stk
happySpecReduce_0 nt fn j tk st@((action)) sts stk
     = happyGoto nt j tk st (HappyCons (st) (sts)) (fn `HappyStk` stk)

happySpecReduce_1 i fn 0# tk st sts stk
     = happyFail 0# tk st sts stk
happySpecReduce_1 nt fn j tk _ sts@((HappyCons (st@(action)) (_))) (v1`HappyStk`stk')
     = let r = fn v1 in
       happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))

happySpecReduce_2 i fn 0# tk st sts stk
     = happyFail 0# tk st sts stk
happySpecReduce_2 nt fn j tk _ (HappyCons (_) (sts@((HappyCons (st@(action)) (_))))) (v1`HappyStk`v2`HappyStk`stk')
     = let r = fn v1 v2 in
       happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))

happySpecReduce_3 i fn 0# tk st sts stk
     = happyFail 0# tk st sts stk
happySpecReduce_3 nt fn j tk _ (HappyCons (_) ((HappyCons (_) (sts@((HappyCons (st@(action)) (_))))))) (v1`HappyStk`v2`HappyStk`v3`HappyStk`stk')
     = let r = fn v1 v2 v3 in
       happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))

happyReduce k i fn 0# tk st sts stk
     = happyFail 0# tk st sts stk
happyReduce k nt fn j tk st sts stk
     = case happyDrop (k Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) sts of
	 sts1@((HappyCons (st1@(action)) (_))) ->
        	let r = fn stk in  -- it doesn't hurt to always seq here...
       		happyDoSeq r (happyGoto nt j tk st1 sts1 r)

happyMonadReduce k nt fn 0# tk st sts stk
     = happyFail 0# tk st sts stk
happyMonadReduce k nt fn j tk st sts stk =
        happyThen1 (fn stk tk) (\r -> happyGoto nt j tk st1 sts1 (r `HappyStk` drop_stk))
       where (sts1@((HappyCons (st1@(action)) (_)))) = happyDrop k (HappyCons (st) (sts))
             drop_stk = happyDropStk k stk

happyMonad2Reduce k nt fn 0# tk st sts stk
     = happyFail 0# tk st sts stk
happyMonad2Reduce k nt fn j tk st sts stk =
       happyThen1 (fn stk tk) (\r -> happyNewToken new_state sts1 (r `HappyStk` drop_stk))
       where (sts1@((HappyCons (st1@(action)) (_)))) = happyDrop k (HappyCons (st) (sts))
             drop_stk = happyDropStk k stk

             (off) = indexShortOffAddr happyGotoOffsets st1
             (off_i) = (off Happy_GHC_Exts.+# nt)
             (new_state) = indexShortOffAddr happyTable off_i




happyDrop 0# l = l
happyDrop n (HappyCons (_) (t)) = happyDrop (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) t

happyDropStk 0# l = l
happyDropStk n (x `HappyStk` xs) = happyDropStk (n Happy_GHC_Exts.-# (1#::Happy_GHC_Exts.Int#)) xs

-----------------------------------------------------------------------------
-- Moving to a new state after a reduction


happyGoto nt j tk st = 
   {- nothing -}
   happyDoAction j tk new_state
   where (off) = indexShortOffAddr happyGotoOffsets st
         (off_i) = (off Happy_GHC_Exts.+# nt)
         (new_state) = indexShortOffAddr happyTable off_i




-----------------------------------------------------------------------------
-- Error recovery (0# is the error token)

-- parse error if we are in recovery and we fail again
happyFail 0# tk old_st _ stk@(x `HappyStk` _) =
     let (i) = (case Happy_GHC_Exts.unsafeCoerce# x of { (Happy_GHC_Exts.I# (i)) -> i }) in
--	trace "failing" $ 
        happyError_ i tk

{-  We don't need state discarding for our restricted implementation of
    "error".  In fact, it can cause some bogus parses, so I've disabled it
    for now --SDM

-- discard a state
happyFail  0# tk old_st (HappyCons ((action)) (sts)) 
						(saved_tok `HappyStk` _ `HappyStk` stk) =
--	trace ("discarding state, depth " ++ show (length stk))  $
	happyDoAction 0# tk action sts ((saved_tok`HappyStk`stk))
-}

-- Enter error recovery: generate an error token,
--                       save the old token and carry on.
happyFail  i tk (action) sts stk =
--      trace "entering error recovery" $
	happyDoAction 0# tk action sts ( (Happy_GHC_Exts.unsafeCoerce# (Happy_GHC_Exts.I# (i))) `HappyStk` stk)

-- Internal happy errors:

notHappyAtAll :: a
notHappyAtAll = error "Internal Happy error\n"

-----------------------------------------------------------------------------
-- Hack to get the typechecker to accept our action functions


happyTcHack :: Happy_GHC_Exts.Int# -> a -> a
happyTcHack x y = y
{-# INLINE happyTcHack #-}


-----------------------------------------------------------------------------
-- Seq-ing.  If the --strict flag is given, then Happy emits 
--	happySeq = happyDoSeq
-- otherwise it emits
-- 	happySeq = happyDontSeq

happyDoSeq, happyDontSeq :: a -> b -> b
happyDoSeq   a b = a `seq` b
happyDontSeq a b = b

-----------------------------------------------------------------------------
-- Don't inline any functions from the template.  GHC has a nasty habit
-- of deciding to inline happyGoto everywhere, which increases the size of
-- the generated parser quite a bit.


{-# NOINLINE happyDoAction #-}
{-# NOINLINE happyTable #-}
{-# NOINLINE happyCheck #-}
{-# NOINLINE happyActOffsets #-}
{-# NOINLINE happyGotoOffsets #-}
{-# NOINLINE happyDefActions #-}

{-# NOINLINE happyShift #-}
{-# NOINLINE happySpecReduce_0 #-}
{-# NOINLINE happySpecReduce_1 #-}
{-# NOINLINE happySpecReduce_2 #-}
{-# NOINLINE happySpecReduce_3 #-}
{-# NOINLINE happyReduce #-}
{-# NOINLINE happyMonadReduce #-}
{-# NOINLINE happyGoto #-}
{-# NOINLINE happyFail #-}

-- end of Happy Template.